9 #ifndef baseFomDesc13_H_
10 #define baseFomDesc13_H_
12 #if DtHLA & !DtHLA_1516
62 struct 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 );
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();
285 return (
int)myInteractionClasses.size();
291 return ( objectClassCount() + interactionClassCount() );