VR-Link API Documentation for HLA 1.3
objClassDesc13.h
Go to the documentation of this file.
1 /*********************************************************************
2 ** Copyright (c) 1992-2010 VT MAK
3 ** All rights reserved.
4 *********************************************************************/
5 
6 
9 
10 #pragma once
11 
12 #if DtHLA && !DtHLA_1516
13 
14 
15 #include <vlutil/vlMachineTypes.h>
16 #include <vlutil/vlString.h>
17 #include "hStateEncoder.h"
18 #include "hStateDecoder.h"
19 #include "rtiNamespace.h"
20 #include "region.h"
21 #include "userTagModifiers.h"
22 #include <map>
23 #include <list>
24 
25 class DtExerciseConn;
27 class DtVrlRtiAmbassador;
28 
42 {
43 public:
44 
47  DtObjClassDesc(const char* className,
48  DtObjClassDesc* base,
49  RTI::ObjectClassHandle handle,
50  DtExerciseConn* exConn);
51 
53  virtual ~DtObjClassDesc();
54 
56  virtual void addAttr(const char* attrName, bool withSpace = false);
57 
59  virtual RTI::ObjectClassHandle handle() const;
60 
62  virtual RTI::AttributeHandle attributeHandleByName(const char *attrName) const;
63 
65  virtual DtString attributeNameByHandle(const RTI::AttributeHandle& hand) const;
66 
68  virtual const char* name() const;
69 
71  virtual const DtObjClassDesc* baseClass() const;
72 
74  virtual DtObjClassDesc* baseClass();
75 
77  virtual void addChildClass(DtObjClassDesc* child);
78 
81  virtual int isOfClass(RTI::ObjectClassHandle hand) const;
82 
85  virtual int numAttributes() const;
86 
88  virtual bool hasAttribute(const char* attrName) const;
89 
91  virtual int minAttrHandle() const;
92  virtual int maxAttrHandle() const;
93 
96  virtual const RTI::AttributeHandleSet& attrHandleSet() const;
97 
99  virtual const RTI::AttributeHandleSet& ownAttrHandles() const;
100 
107  virtual bool classNeededByFederation();
108 
113  virtual void publish();
114  virtual void publish(const RTI::AttributeHandleSet& hSet);
115 
117  virtual void unpublish();
118 
122  virtual void subscribe(const RTI::AttributeHandleSet& hSet, bool active = true);
123 
127  virtual void subscribe(const RTI::AttributeHandleSet& hSet, DtDDMRegionSP region,
128  bool active = true);
129 
130  virtual void subscribe();
131  virtual void subscribe(const DtDDMRegionSet& regionSet);
132 
133  virtual void passiveSubscribe();
134 
136  virtual void unsubscribe();
137  virtual void unsubscribe(const DtDDMRegionSet& regionSet);
138 
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);
146 
150  virtual const RTI::AttributeHandleSet& publishedAttrs() const;
151 
154  virtual bool everPublished() const;
155 
159  virtual const RTI::AttributeHandleSet& subscribedAttrs() const;
160 
161  virtual const RTI::AttributeHandleSet& attributesWithSpace() const;
162  virtual const RTI::AttributeHandleSet& attributesWithoutSpace() const;
163 
164  virtual const RTI::AttributeHandleSet& subscribedAttrsWithSpace() const;
165  virtual const RTI::AttributeHandleSet& subscribedAttrsWithoutSpace() const;
166 
167 
170  virtual bool everSubscribed() const;
171 
173  virtual DtVrlRtiAmbassador* rtiAmb();
174 
176  virtual DtVrlFederateAmbassador* fedAmb();
177 
179  virtual RTI::AttributeHandle privilegeHandle() const;
180 
181  virtual void setUserTagModifier(DtObjectTagModifierSP modifier);
182  virtual DtObjectTagModifierSP userTagModifier();
183 
184 
191  virtual void setSubscribeToUnspecifiedAttributesFlag(bool subscribe);
192  virtual bool subscribeToUnspecifiedAttributesFlag();
193 
199  virtual void setUnknownAttributeEncoder(
201 
204  virtual void setUnknownAttributeDecoder(
206 
208  virtual DtHlaStateEncoder::DtAttributeEncoder unknownAttributeEncoder();
209 
211  virtual DtHlaStateDecoder::DtAttributeDecoder unknownAttributeDecoder();
212 
213 public:
216  static void setMaxAttributes(int num);
217  static int maxAttributes();
218 
224  static void setSubscriptionTimeDelay(double delay);
225 
226 protected:
227 
229  static void startRegCb(RTI::ObjectClassHandle h,
230  void* usr);
231 
233  static void stopRegCb(RTI::ObjectClassHandle h,
234  void* usr);
235 
236 protected:
237 
239  virtual void processStartReg(RTI::ObjectClassHandle h);
240 
242  virtual void processStopReg(RTI::ObjectClassHandle h);
243 
245  virtual DtObjClassDesc* self() const;
246 
249  virtual void synchSubscribedAttributes();
250 
251 protected:
253  RTI::ObjectClassHandle myHandle;
254  RTI::AttributeHandleSet* myAttrs;
255  RTI::AttributeHandleSet* myOwnAttrs;
256  RTI::AttributeHandleSet* mySubAttrs;
257  RTI::AttributeHandleSet* myPubAttrs;
258 
260  RTI::AttributeHandleSet* myAttrsWithSpace;
261 
263  RTI::AttributeHandleSet* myAttrsWithoutSpace;
264 
265  RTI::AttributeHandleSet* mySubAttrsWithSpace;
266  RTI::AttributeHandleSet* mySubAttrsWithoutSpace;
267 
270  std::list<DtObjClassDesc*> myChildren;
277 
279  RTI::AttributeHandle myPrivHandle;
280  RTI::AttributeHandle myMinAttrHand;
281  RTI::AttributeHandle myMaxAttrHand;
282 
283  typedef std::map<RTI::AttributeHandle, DtString> StringToAttributeHandleMap;
285 
287  std::vector<DtDDMRegionSP> mySubscribedRegions;
290 protected:
291  static int theMaxAttrs;
293 
294 };
295 
296 inline RTI::ObjectClassHandle DtObjClassDesc::handle() const
297 {
298  return myHandle;
299 }
300 
301 inline const RTI::AttributeHandleSet& DtObjClassDesc::attrHandleSet() const
302 {
303  return *myAttrs;
304 }
305 
306 inline const RTI::AttributeHandleSet& DtObjClassDesc::ownAttrHandles() const
307 {
308  return *myOwnAttrs;
309 }
310 
312 {
313  return theMaxAttrs;
314 }
315 
317 {
318  theMaxAttrs = num;
319 }
320 
321 inline const char* DtObjClassDesc::name() const
322 {
323  return myName.c_str();
324 }
325 
327 {
328  return myAttrs->size();
329 }
330 
332 {
333  return myBase;
334 }
335 
337 {
338  return myBase;
339 }
340 
342 {
343  myChildren.push_back(child);
344 }
345 
347 {
348  return (DtObjClassDesc*) this;
349 }
350 
351 inline RTI::AttributeHandle DtObjClassDesc::privilegeHandle() const
352 {
353  return myPrivHandle;
354 }
355 
357 {
358  theSubscriptionTimeDelay = delay;
359 }
360 
361 #endif
362 
363 

Document ID: Generated on Wed Aug 14 15:35:11 EDT 2013 from SVN revision 130445
Copyright © 2005-2013 VT MÄK. All Rights Reserved (www.mak.com)