cnamedobject.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef __CNAMEDOBJECT_H
00019 #define __CNAMEDOBJECT_H
00020
00021 #include <typeinfo>
00022 #include <iostream>
00023 #include "simkerneldefs.h"
00024 #include "simutil.h"
00025 #include "cobject.h"
00026 #include "cexception.h"
00027 #include "cstringpool.h"
00028
00029 NAMESPACE_BEGIN
00030
00031
00038 class SIM_API cNamedObject : public cObject
00039 {
00040 private:
00041 const char *namep;
00042
00043 protected:
00044 unsigned short flags;
00045 unsigned short unused;
00046 enum {FL_NAMEPOOLING = 1};
00047
00048 private:
00049 void copy(const cNamedObject& other);
00050
00051 protected:
00052
00053 void setFlag(int flag, bool value) {if (value) flags|=flag; else flags&=~flag;}
00054
00055 private:
00056
00057 static cStringPool stringPool;
00058
00059 public:
00065 cNamedObject();
00066
00070 explicit cNamedObject(const char *name, bool namepooling=true);
00071
00075 cNamedObject(const cNamedObject& obj);
00076
00080 virtual ~cNamedObject();
00081
00090 cNamedObject& operator=(const cNamedObject& o);
00091
00092
00093
00094
00098 virtual void parsimPack(cCommBuffer *buffer);
00099
00103 virtual void parsimUnpack(cCommBuffer *buffer);
00105
00113 virtual void setName(const char *s);
00114
00119 virtual const char *getName() const {return namep ? namep : "";}
00120
00125 virtual void setNamePooling(bool b);
00126
00130 virtual bool getNamePooling() {return flags&FL_NAMEPOOLING;}
00132 };
00133
00134 NAMESPACE_END
00135
00136
00137 #endif
00138