12 #if DtHLA && !DtHLA_1516
26 class DtVrlFederateAmbassador;
27 class DtVrlRtiAmbassador;
47 DtObjClassDesc(
const char* className,
49 RTI::ObjectClassHandle handle,
53 virtual ~DtObjClassDesc();
56 virtual void addAttr(
const char*
attrName,
bool withSpace =
false);
59 virtual RTI::ObjectClassHandle handle()
const;
62 virtual RTI::AttributeHandle attributeHandleByName(
const char *
attrName)
const;
65 virtual DtString attributeNameByHandle(
const RTI::AttributeHandle& hand)
const;
68 virtual const char* name()
const;
71 virtual const DtObjClassDesc* baseClass()
const;
74 virtual DtObjClassDesc* baseClass();
77 virtual void addChildClass(DtObjClassDesc* child);
81 virtual int isOfClass(RTI::ObjectClassHandle hand)
const;
85 virtual int numAttributes()
const;
88 virtual bool hasAttribute(
const char*
attrName)
const;
91 virtual int minAttrHandle()
const;
92 virtual int maxAttrHandle()
const;
96 virtual const RTI::AttributeHandleSet& attrHandleSet()
const;
99 virtual const RTI::AttributeHandleSet& ownAttrHandles()
const;
107 virtual bool classNeededByFederation();
113 virtual void publish();
114 virtual void publish(
const RTI::AttributeHandleSet& hSet);
117 virtual void unpublish();
122 virtual void subscribe(
const RTI::AttributeHandleSet& hSet,
bool active =
true);
127 virtual void subscribe(
const RTI::AttributeHandleSet& hSet, DtDDMRegionSP region,
130 virtual void subscribe();
131 virtual void subscribe(
const DtDDMRegionSet& regionSet);
133 virtual void passiveSubscribe();
136 virtual void unsubscribe();
137 virtual void unsubscribe(
const DtDDMRegionSet& regionSet);
141 virtual void requestUpdates();
142 virtual void requestUpdates(
const DtDDMRegionSet& region);
143 virtual void requestUpdates(
const RTI::AttributeHandleSet& hSet);
144 virtual void requestUpdates(
const RTI::AttributeHandleSet& hSet,
145 DtDDMRegionSP region);
150 virtual const RTI::AttributeHandleSet& publishedAttrs()
const;
154 virtual bool everPublished()
const;
159 virtual const RTI::AttributeHandleSet& subscribedAttrs()
const;
161 virtual const RTI::AttributeHandleSet& attributesWithSpace()
const;
162 virtual const RTI::AttributeHandleSet& attributesWithoutSpace()
const;
164 virtual const RTI::AttributeHandleSet& subscribedAttrsWithSpace()
const;
165 virtual const RTI::AttributeHandleSet& subscribedAttrsWithoutSpace()
const;
169 virtual DtObjClassDesc* firstSubscribed();
173 virtual bool everSubscribed()
const;
176 virtual DtVrlRtiAmbassador* rtiAmb();
179 virtual DtVrlFederateAmbassador* fedAmb();
182 virtual RTI::AttributeHandle privilegeHandle()
const;
184 virtual void setUserTagModifier(DtObjectTagModifierSP modifier);
185 virtual DtObjectTagModifierSP userTagModifier();
194 virtual void setSubscribeToUnspecifiedAttributesFlag(
bool subscribe);
195 virtual bool subscribeToUnspecifiedAttributesFlag();
203 virtual void enableUnknownAttributes();
207 virtual void setUnknownAttributeEncoder(
208 DtHlaStateEncoder::DtAttributeEncoder encoder);
212 virtual void setUnknownAttributeChecker(
213 DtHlaStateEncoder::DtAttributeCheckerWithHandle checker);
218 virtual void setUnknownAttributeDecoder(
219 DtHlaStateDecoder::DtAttributeDecoder decoder);
222 virtual DtHlaStateEncoder::DtAttributeEncoder unknownAttributeEncoder();
225 virtual DtHlaStateEncoder::DtAttributeCheckerWithHandle unknownAttributeChecker();
228 virtual DtHlaStateDecoder::DtAttributeDecoder unknownAttributeDecoder();
233 static void setMaxAttributes(
int num);
234 static int maxAttributes();
241 static void setSubscriptionTimeDelay(
double delay);
246 static void startRegCb(RTI::ObjectClassHandle h,
250 static void stopRegCb(RTI::ObjectClassHandle h,
256 virtual void processStartReg(RTI::ObjectClassHandle h);
259 virtual void processStopReg(RTI::ObjectClassHandle h);
262 virtual DtObjClassDesc*
self()
const;
266 virtual void synchSubscribedAttributes();
269 virtual void addAttr(
const char*
attrName, RTI::AttributeHandle attrHandle,
270 bool isPrivilegeToDelete,
bool withSpace =
false);
274 RTI::ObjectClassHandle myHandle;
275 RTI::AttributeHandleSet* myAttrs;
276 RTI::AttributeHandleSet* myOwnAttrs;
277 RTI::AttributeHandleSet* mySubAttrs;
278 RTI::AttributeHandleSet* myPubAttrs;
281 RTI::AttributeHandleSet* myAttrsWithSpace;
284 RTI::AttributeHandleSet* myAttrsWithoutSpace;
286 RTI::AttributeHandleSet* mySubAttrsWithSpace;
287 RTI::AttributeHandleSet* mySubAttrsWithoutSpace;
290 DtObjClassDesc* myBase;
291 std::list<DtObjClassDesc*> myChildren;
294 bool myEverPublished;
295 bool myEverSubscribed;
296 int myNumSubscribeRequests;
297 bool mySubscribeToUnspecifiedAttributesFlag;
300 RTI::AttributeHandle myPrivHandle;
301 RTI::AttributeHandle myMinAttrHand;
302 RTI::AttributeHandle myMaxAttrHand;
304 typedef std::map<RTI::AttributeHandle, DtString> StringToAttributeHandleMap;
305 StringToAttributeHandleMap myStringToHandleMap;
307 DtObjectTagModifierSP myTagModifier;
308 std::vector<DtDDMRegionSP> mySubscribedRegions;
309 DtHlaStateEncoder::DtAttributeEncoder myUnknownAttributeEncoder;
310 DtHlaStateEncoder::DtAttributeCheckerWithHandle myUnknownAttributeChecker;
311 DtHlaStateDecoder::DtAttributeDecoder myUnknownAttributeDecoder;
313 static int theMaxAttrs;
314 static double theSubscriptionTimeDelay;
318 inline RTI::ObjectClassHandle DtObjClassDesc::handle()
const
323 inline const RTI::AttributeHandleSet& DtObjClassDesc::attrHandleSet()
const
328 inline const RTI::AttributeHandleSet& DtObjClassDesc::ownAttrHandles()
const
333 inline int DtObjClassDesc::maxAttributes()
338 inline void DtObjClassDesc::setMaxAttributes(
int num)
343 inline const char* DtObjClassDesc::name()
const
345 return myName.c_str();
348 inline int DtObjClassDesc::numAttributes()
const
350 return myAttrs->size();
353 inline const DtObjClassDesc* DtObjClassDesc::baseClass()
const
358 inline DtObjClassDesc* DtObjClassDesc::baseClass()
363 inline void DtObjClassDesc::addChildClass(DtObjClassDesc* child)
365 myChildren.push_back(child);
368 inline DtObjClassDesc* DtObjClassDesc::self()
const
370 return (DtObjClassDesc*)
this;
373 inline RTI::AttributeHandle DtObjClassDesc::privilegeHandle()
const
378 inline void DtObjClassDesc::setSubscriptionTimeDelay(
double delay)
380 theSubscriptionTimeDelay = delay;