sim: Move SimObject resolver to sim_object.hh

The object resolver isn't serialization specific and shouldn't live in
serialize.hh. Move it to sim_object.hh since it queries to the
SimObject hierarchy.
This commit is contained in:
Andreas Sandberg 2015-09-01 13:40:05 +01:00
parent 66941163e5
commit db465fd788
2 changed files with 16 additions and 11 deletions

View file

@ -64,6 +64,7 @@ class IniFile;
class Serializable; class Serializable;
class CheckpointIn; class CheckpointIn;
class SimObject; class SimObject;
class SimObjectResolver;
class EventQueue; class EventQueue;
typedef std::ostream CheckpointOut; typedef std::ostream CheckpointOut;
@ -449,17 +450,6 @@ class SerializableClass
SerializableClass the##OBJ_CLASS##Class(CLASS_NAME, \ SerializableClass the##OBJ_CLASS##Class(CLASS_NAME, \
OBJ_CLASS::createForUnserialize); OBJ_CLASS::createForUnserialize);
// Base class to wrap object resolving functionality. This can be
// provided to Checkpoint to allow it to map object names onto
// object C++ objects in which to unserialize
class SimObjectResolver
{
public:
virtual ~SimObjectResolver() { }
// Find a SimObject given a full path name
virtual SimObject *resolveSimObject(const std::string &name) = 0;
};
class CheckpointIn class CheckpointIn
{ {

View file

@ -231,6 +231,21 @@ class SimObject : public EventManager, public Serializable, public Drainable
static SimObject *find(const char *name); static SimObject *find(const char *name);
}; };
/**
* Base class to wrap object resolving functionality.
*
* This can be provided to the serialization framework to allow it to
* map object names onto C++ objects.
*/
class SimObjectResolver
{
public:
virtual ~SimObjectResolver() { }
// Find a SimObject given a full path name
virtual SimObject *resolveSimObject(const std::string &name) = 0;
};
#ifdef DEBUG #ifdef DEBUG
void debugObjectBreak(const char *objs); void debugObjectBreak(const char *objs);
#endif #endif