9 #ifndef baseFomDesc1516_H_
10 #define baseFomDesc1516_H_
12 #if DtHLA & DtHLA_1516
35 const size_t DtGenFomDescSz =
sizeof( DtGenFomDesc );
48 const size_t DtGenObjDescSz =
sizeof( DtGenObjDesc );
60 const size_t DtGenAttrDescSz =
sizeof( DtGenAttrDesc );
63 struct DtSubscriptionMap
75 const size_t DtSubscriptionMapSz =
sizeof( DtSubscriptionMap );
78 class DtBaseObjClassDesc;
79 class DtBaseInterClassDesc;
98 virtual ~DtBaseFomDesc();
102 virtual DtBaseObjClassDesc* addObjectClass(const DtBaseObjClassDesc&);
103 virtual DtBaseInterClassDesc* addInteractionClass(const DtBaseInterClassDesc&);
107 virtual
int readFromFile( FILE* fp );
108 virtual
int readFromFile64(
int fd );
111 virtual
int writeToFile( FILE* fp ) const;
112 virtual
int writeToFile64(
int fd ) const;
115 virtual
int setFromSerialForm( const
void* p );
118 virtual
char* serialize(
int* pSize = 0 ) const;
120 typedef std::vector<DtBaseObjClassDesc*>::iterator objectIterator;
121 typedef std::vector<DtBaseObjClassDesc*>::const_iterator const_objectIterator;
123 typedef std::vector<DtBaseInterClassDesc*>::iterator interactionIterator;
124 typedef std::vector<DtBaseInterClassDesc*>::const_iterator const_interactionIterator;
128 objectIterator obj_begin();
129 const_objectIterator obj_begin() const;
134 objectIterator obj_end();
135 const_objectIterator obj_end() const;
140 interactionIterator inter_begin();
141 const_interactionIterator inter_begin() const;
146 interactionIterator inter_end();
147 const_interactionIterator inter_end() const;
152 virtual DtBaseObjClassDesc* objDesc(
unsigned int hand );
153 virtual const DtBaseObjClassDesc* objDesc(
unsigned int hand ) const;
158 virtual DtBaseObjClassDesc* objDesc( const DtString& _name );
159 virtual const DtBaseObjClassDesc* objDesc( const DtString& _name ) const;
164 virtual DtBaseInterClassDesc* interDesc(
unsigned int hand );
165 virtual const DtBaseInterClassDesc* interDesc(
unsigned int hand ) const;
170 virtual DtBaseInterClassDesc* interDesc( const DtString& _name );
171 virtual const DtBaseInterClassDesc* interDesc( const DtString& _name ) const;
175 inline
int objectClassCount() const;
178 inline
int interactionClassCount() const;
181 inline
int count() const;
184 virtual
bool equivalent( const DtBaseFomDesc& other ) const;
187 virtual
bool identical( const DtBaseFomDesc& other ) const;
190 virtual
void setFilterByClass( const DtSubscriptionMap* map );
193 virtual
void setFilterAllObjectClasses();
196 virtual
void setFilterNoObjectClasses();
199 virtual
void setFilterAllInteractionClasses();
202 virtual
void setFilterNoInteractionClasses();
205 virtual
void empty();
212 virtual
void initObjClasses();
213 virtual
void initIntClasses();
217 virtual
void setObjectClassHeartbeatTime(const DtString& className,
double time,
bool includeSubclasses = false);
221 virtual
bool getObjectClassHeartbeatTime(const DtString& className,
double& heartbeat) const;
224 virtual
bool objectClassHeartbeatInheritable(const DtString& className) const;
227 virtual
void setObjectClassTimeoutTime(const DtString& className,
double time,
bool includeSubclasses = false);
231 virtual
bool getObjectClassTimeoutTime(const DtString& className,
double& timeout) const;
234 virtual
bool objectClassTimeoutInheritable(const DtString& className) const;
239 bool processCommand(const
char*command,
char* tkn,const
char* sep);
242 virtual
void deleteObjClasses();
245 virtual
void deleteIntClasses();
251 void initFromSource( const DtBaseFomDesc& src );
254 int unserialize( const
char* bfr );
258 typedef DtMultiKeyMap<DtString,DtLgrHlaHandle,DtBaseObjClassDesc*> ObjectMap;
259 typedef DtMultiKeyMap<DtString,DtLgrHlaHandle,DtBaseInterClassDesc*> InteractionMap;
261 ObjectMap myObjectLookupMap;
262 InteractionMap myInteractionLookupMap;
264 std::vector<DtBaseObjClassDesc*> myObjectClasses;
265 std::vector<DtBaseInterClassDesc*> myInteractionClasses;
266 std::map<DtString, DtLgrSimDriver::HeartbeatTimeRecord> myHeartbeatTimes;
267 std::map<DtString, DtLgrSimDriver::HeartbeatTimeRecord> myTimeoutTimes;
270 static
int theHashSize;
274 inline
int DtBaseFomDesc::objectClassCount()
const
276 return (
int)myObjectClasses.size();
279 inline int DtBaseFomDesc::interactionClassCount()
const
281 return (
int)myInteractionClasses.size();
285 inline int DtBaseFomDesc::count()
const
287 return ( objectClassCount() + interactionClassCount() );