Hard code the SimObject::Params struct
authorNathan Binkert <binkertn@umich.edu>
Tue, 15 Mar 2005 22:11:54 +0000 (17:11 -0500)
committerNathan Binkert <binkertn@umich.edu>
Tue, 15 Mar 2005 22:11:54 +0000 (17:11 -0500)
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

sim/sim_object.cc
sim/sim_object.hh

index 818648b98253a996864a43f1a425806c71799d10..5594151021a7b59531ade4f9cd3b5ca3df25aeca 100644 (file)
@@ -58,17 +58,32 @@ namespace Stats {
     extern ObjectMatch event_ignore;
 }
 
+//
+// SimObject constructor: used to maintain static simObjectList
+//
+SimObject::SimObject(Params *p)
+    : _params(p)
+{
+#ifdef DEBUG
+    doDebugBreak = false;
+#endif
+
+    doRecordEvent = !Stats::event_ignore.match(name());
+    simObjectList.push_back(this);
+}
+
 //
 // SimObject constructor: used to maintain static simObjectList
 //
 SimObject::SimObject(const string &_name)
-    : objName(_name)
+    : _params(new Params)
 {
+    _params->name = _name;
 #ifdef DEBUG
     doDebugBreak = false;
 #endif
 
-    doRecordEvent = !Stats::event_ignore.match(_name);
+    doRecordEvent = !Stats::event_ignore.match(name());
     simObjectList.push_back(this);
 }
 
index b8a3090ad95c29672980d1aad21a9fb2d6e9bf09..db8d4f4d3834eecaf0b692724ebef0796d2643ad 100644 (file)
  */
 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.