9 #ifndef baseFomDesc13_H_
10 #define baseFomDesc13_H_
12 #if DtHLA & !DtHLA_1516
37 const size_t DtGenFomDescSz =
sizeof( DtGenFomDesc );
49 const size_t DtGenObjDescSz =
sizeof( DtGenObjDesc );
59 const size_t DtGenAttrDescSz =
sizeof( DtGenAttrDesc ) - 4;
62 struct DtSubscriptionMap
74 const size_t DtSubscriptionMapSz =
sizeof( DtSubscriptionMap );
77 class DtBaseObjClassDesc;
78 class DtBaseInterClassDesc;
97 virtual ~DtBaseFomDesc();
101 virtual DtBaseObjClassDesc* addObjectClass(const DtBaseObjClassDesc&);
102 virtual DtBaseInterClassDesc* addInteractionClass(const DtBaseInterClassDesc&);
106 virtual
int readFromFile( FILE* fp );
107 virtual
int readFromFile64(
int fd );
110 virtual
int writeToFile( FILE* fp ) const;
111 virtual
int writeToFile64(
int fd ) const;
114 virtual
int setFromSerialForm( const
void* p );
117 virtual
char* serialize(
int* pSize = 0 ) const;
119 typedef std::vector<DtBaseObjClassDesc*>::iterator objectIterator;
120 typedef std::vector<DtBaseObjClassDesc*>::const_iterator const_objectIterator;
122 typedef std::vector<DtBaseInterClassDesc*>::iterator interactionIterator;
123 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;
185 virtual
bool equivalent( const DtBaseFomDesc& other) const;
189 virtual
bool identical( const DtBaseFomDesc& other) const;
192 virtual
void setFilterByClass( const DtSubscriptionMap* map );
195 virtual
void setFilterAllObjectClasses();
198 virtual
void setFilterNoObjectClasses();
201 virtual
void setFilterAllInteractionClasses();
204 virtual
void setFilterNoInteractionClasses();
207 virtual
void empty();
210 virtual
void setObjectClassHeartbeatTime(const DtString& className,
double time,
bool includeSubclasses = false);
214 virtual
bool getObjectClassHeartbeatTime(const DtString& className,
double& heartbeat) const;
217 virtual
bool objectClassHeartbeatInheritable(const DtString& className) const;
220 virtual
void setObjectClassTimeoutTime(const DtString& className,
double time,
bool includeSubclasses = false);
224 virtual
bool getObjectClassTimeoutTime(const DtString& className,
double& timeout) const;
227 virtual
bool objectClassTimeoutInheritable(const DtString& className) const;
234 virtual
void initObjClasses();
235 virtual
void initIntClasses();
241 bool processCommand(const
char*command,
char* tkn,const
char* sep);
244 virtual
void deleteObjClasses();
247 virtual
void deleteIntClasses();
253 void initFromSource( const DtBaseFomDesc& src );
256 int unserialize( const
char* bfr );
262 typedef DtMultiKeyMap<DtString,DtLgrHlaHandle,DtBaseObjClassDesc*> ObjectMap;
263 typedef DtMultiKeyMap<DtString,DtLgrHlaHandle,DtBaseInterClassDesc*> InteractionMap;
265 ObjectMap myObjectLookupMap;
266 InteractionMap myInteractionLookupMap;
268 std::vector<DtBaseObjClassDesc*> myObjectClasses;
269 std::vector<DtBaseInterClassDesc*> myInteractionClasses;
270 std::map<DtString, DtLgrSimDriver::HeartbeatTimeRecord> myHeartbeatTimes;
271 std::map<DtString, DtLgrSimDriver::HeartbeatTimeRecord> myTimeoutTimes;
274 static
int theHashSize;
278 inline
int DtBaseFomDesc::objectClassCount()
const
280 return (
int)myObjectClasses.size();
283 inline int DtBaseFomDesc::interactionClassCount()
const
285 return (
int)myInteractionClasses.size();
289 inline int DtBaseFomDesc::count()
const
291 return ( objectClassCount() + interactionClassCount() );