Hard code the SimObject::Params struct

sim/sim_object.cc:
    Add a new constructor that can take the params struct and
    tweak the old one to create a params struct if we use the
    old constructor.
sim/sim_object.hh:
    Hard code a Params struct for SimObject that all other params
    structs can derive from.  Move the name string into the struct
    and update the code accordingly.  New constructor that takes
    the params struct.

--HG--
extra : convert_revision : 30761dab31d7257f9e8c864dcd6cae37309163f2
This commit is contained in:
Nathan Binkert
2005-03-15 17:11:54 -05:00
parent 7d49146ea7
commit 0f8067fbf6
2 changed files with 29 additions and 9 deletions

View File

@@ -61,14 +61,29 @@ namespace Stats {
//
// SimObject constructor: used to maintain static simObjectList
//
SimObject::SimObject(const string &_name)
: objName(_name)
SimObject::SimObject(Params *p)
: _params(p)
{
#ifdef DEBUG
doDebugBreak = false;
#endif
doRecordEvent = !Stats::event_ignore.match(_name);
doRecordEvent = !Stats::event_ignore.match(name());
simObjectList.push_back(this);
}
//
// SimObject constructor: used to maintain static simObjectList
//
SimObject::SimObject(const string &_name)
: _params(new Params)
{
_params->name = _name;
#ifdef DEBUG
doDebugBreak = false;
#endif
doRecordEvent = !Stats::event_ignore.match(name());
simObjectList.push_back(this);
}

View File

@@ -48,8 +48,16 @@
*/
class SimObject : public Serializable, protected StartupCallback
{
public:
struct Params {
std::string name;
};
protected:
std::string objName;
Params *_params;
public:
const Params *params() const { return _params; }
private:
friend class Serializer;
@@ -60,15 +68,12 @@ class SimObject : public Serializable, protected StartupCallback
static SimObjectList simObjectList;
public:
// for Params struct
#include "simobj/param/SimObject.hh"
SimObject(Params *_params);
SimObject(const std::string &_name);
virtual ~SimObject() {}
virtual const std::string name() const { return objName; }
virtual const std::string name() const { return params()->name; }
// initialization pass of all objects.
// Gets invoked after construction, before unserialize.