diff options
Diffstat (limited to 'sim/param.hh')
-rw-r--r-- | sim/param.hh | 32 |
1 files changed, 26 insertions, 6 deletions
diff --git a/sim/param.hh b/sim/param.hh index fe13edc48..ac57afa31 100644 --- a/sim/param.hh +++ b/sim/param.hh @@ -34,6 +34,7 @@ #include <vector> #include "sim/configfile.hh" +#include "sim/startup.hh" // forward decls class BaseParam; @@ -44,7 +45,7 @@ class SimObject; // SimObjectBuilder (which derives from ParamContext), but abstracted // here to support more global simulator control parameters as well. // -class ParamContext +class ParamContext : protected StartupCallback { private: @@ -74,11 +75,30 @@ class ParamContext public: - // Second arg, if set to true, says don't put on paramContextList - // (i.e. don't automatically parse params). Used by derived - // SimObjectBuilder class, where parsing is done in - // SimObject::create() - ParamContext(const std::string &_iniSection, bool noAutoParse = false); + /// Initialization phases for ParamContext objects. + enum InitPhase { + NoAutoInit = -1, ///< Don't initialize at all... params + /// will be parsed later (used by + /// SimObjectBuilder, which parses + /// params in SimObject::create(). + OutputInitPhase = 0, ///< Output stream initialization + TraceInitPhase = 1, ///< Trace context initialization: + /// depends on output streams, but + /// needs to come before others so we + /// can use tracing in other + /// ParamContext init code + StatsInitPhase = 2, ///< Stats output initialization + DefaultInitPhase = 3 ///< Everything else + }; + + /// Records the initialization phase for this ParamContext. + InitPhase initPhase; + + /// Constructor. + /// @param _iniSection Name of .ini section corresponding to this context. + /// @param _initPhase Initialization phase (see InitPhase). + ParamContext(const std::string &_iniSection, + InitPhase _initPhase = DefaultInitPhase); virtual ~ParamContext() {} |