VR-Link API Documentation for HLA 4
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
objClassDesc13.h
Go to the documentation of this file.
1 /*********************************************************************
2 ** Copyright (c) 1992-2025 MAK Technologies, Inc
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 "hlaStateEncoder.h"
18 #include "hlaStateDecoder.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);
123 
127  virtual void subscribe(const RTI::AttributeHandleSet& hSet, DtDDMRegionSP region, bool active);
128 
131  virtual void subscribe();
132  virtual void subscribe(const DtDDMRegionSet& regionSet);
133  virtual void subscribe(const RTI::AttributeHandleSet& hSet);
134  virtual void subscribe(const RTI::AttributeHandleSet& hSet, DtDDMRegionSP region);
135 
136  virtual void passiveSubscribe();
137 
139  virtual void unsubscribe();
140  virtual void unsubscribe(const DtDDMRegionSet& regionSet);
141 
144  virtual void requestUpdates();
145  virtual void requestUpdates(const DtDDMRegionSet& region);
146  virtual void requestUpdates(const RTI::AttributeHandleSet& hSet);
147  virtual void requestUpdates(const RTI::AttributeHandleSet& hSet,
148  DtDDMRegionSP region);
149 
153  virtual const RTI::AttributeHandleSet& publishedAttrs() const;
154 
157  virtual bool everPublished() const;
158 
162  virtual const RTI::AttributeHandleSet& subscribedAttrs() const;
163 
164  virtual const RTI::AttributeHandleSet& attributesWithSpace() const;
165  virtual const RTI::AttributeHandleSet& attributesWithoutSpace() const;
166 
167  virtual const RTI::AttributeHandleSet& subscribedAttrsWithSpace() const;
168  virtual const RTI::AttributeHandleSet& subscribedAttrsWithoutSpace() const;
169 
172  virtual DtObjClassDesc* firstSubscribed();
173 
176  virtual bool everSubscribed() const;
177 
179  virtual DtVrlRtiAmbassador* rtiAmb();
180 
182  virtual DtVrlFederateAmbassador* fedAmb();
183 
185  virtual RTI::AttributeHandle privilegeHandle() const;
186 
187  virtual void setUserTagModifier(DtObjectTagModifierSP modifier);
188  virtual DtObjectTagModifierSP userTagModifier();
189 
190 
197  virtual void setSubscribeToUnspecifiedAttributesFlag(bool subscribe);
198  virtual bool subscribeToUnspecifiedAttributesFlag();
199 
206  virtual void enableUnknownAttributes();
207 
210  virtual void setUnknownAttributeEncoder(
212 
215  virtual void setUnknownAttributeChecker(
217 
218 
221  virtual void setUnknownAttributeDecoder(
223 
225  virtual DtHlaStateEncoder::DtAttributeEncoder unknownAttributeEncoder();
226 
228  virtual DtHlaStateEncoder::DtAttributeCheckerWithHandle unknownAttributeChecker();
229 
231  virtual DtHlaStateDecoder::DtAttributeDecoder unknownAttributeDecoder();
232 
233 public:
236  static void setMaxAttributes(int num);
237  static int maxAttributes();
238 
244  static void setSubscriptionTimeDelay(double delay);
245 
246 protected:
247 
249  static void startRegCb(RTI::ObjectClassHandle h,
250  void* usr);
251 
253  static void stopRegCb(RTI::ObjectClassHandle h,
254  void* usr);
255 
256 protected:
257 
259  virtual void processStartReg(RTI::ObjectClassHandle h);
260 
262  virtual void processStopReg(RTI::ObjectClassHandle h);
263 
265  virtual DtObjClassDesc* self() const;
266 
269  virtual void synchSubscribedAttributes();
270 
272  virtual void addAttr(const char* attrName, RTI::AttributeHandle attrHandle,
273  bool isPrivilegeToDelete, bool withSpace = false);
274 
275 protected:
277  RTI::ObjectClassHandle myHandle;
278  RTI::AttributeHandleSet* myAttrs;
279  RTI::AttributeHandleSet* myOwnAttrs;
280  RTI::AttributeHandleSet* mySubAttrs;
281  RTI::AttributeHandleSet* myPubAttrs;
282 
284  RTI::AttributeHandleSet* myAttrsWithSpace;
285 
287  RTI::AttributeHandleSet* myAttrsWithoutSpace;
288 
289  RTI::AttributeHandleSet* mySubAttrsWithSpace;
290  RTI::AttributeHandleSet* mySubAttrsWithoutSpace;
291 
294  std::list<DtObjClassDesc*> myChildren;
301 
303  RTI::AttributeHandle myPrivHandle;
304  RTI::AttributeHandle myMinAttrHand;
305  RTI::AttributeHandle myMaxAttrHand;
306 
307  typedef std::map<RTI::AttributeHandle, DtString> StringToAttributeHandleMap;
309 
311  std::vector<DtDDMRegionSP> mySubscribedRegions;
315 protected:
316  static int theMaxAttrs;
318 
319 };
320 
321 inline RTI::ObjectClassHandle DtObjClassDesc::handle() const
322 {
323  return myHandle;
324 }
325 
326 inline const RTI::AttributeHandleSet& DtObjClassDesc::attrHandleSet() const
327 {
328  return *myAttrs;
329 }
330 
331 inline const RTI::AttributeHandleSet& DtObjClassDesc::ownAttrHandles() const
332 {
333  return *myOwnAttrs;
334 }
335 
337 {
338  return theMaxAttrs;
339 }
340 
342 {
343  theMaxAttrs = num;
344 }
345 
346 inline const char* DtObjClassDesc::name() const
347 {
348  return myName.c_str();
349 }
350 
352 {
353  return myAttrs->size();
354 }
355 
357 {
358  return myBase;
359 }
360 
362 {
363  return myBase;
364 }
365 
367 {
368  myChildren.push_back(child);
369 }
370 
372 {
373  return (DtObjClassDesc*) this;
374 }
375 
376 inline RTI::AttributeHandle DtObjClassDesc::privilegeHandle() const
377 {
378  return myPrivHandle;
379 }
380 
382 {
383  theSubscriptionTimeDelay = delay;
384 }
385 
386 #endif
387 
388 
RTI::AttributeHandleSet * myAttrs
Definition: objClassDesc13.h:278
static void setSubscriptionTimeDelay(double delay)
Set a time delay to occur after calling RTI::RTIambassador::subscribe() The purpose of this function ...
Definition: objClassDesc13.h:381
virtual RTI::AttributeHandle privilegeHandle() const
Returns the attribute handle of the privilegeToDelete attribute.
Definition: objClassDesc13.h:376
std::shared_ptr< DtObjectTagModifier > DtObjectTagModifierSP
Shared pointer typedefs for ease of use.
Definition: userTagModifiers.h:33
RTI::AttributeHandleSet * mySubAttrs
Definition: objClassDesc13.h:280
Instances of DtExerciseConn are used to provide an application&#39;s interface or connection to the netwo...
Definition: exerciseConnHLA.h:61
#define DT_DLL_VL
Definition: vlMachineTypes.h:108
virtual const RTI::AttributeHandleSet & ownAttrHandles() const
Get the set of non-inherited attribute handles for this class.
Definition: objClassDesc13.h:331
Contains the DtString class declaration.
void(* DtAttributeDecoder)(DtStateRepository *stateRep, const RTI::AttributeHandleValuePairSet &avlist, unsigned long pairSetIndex)
Attribute decoding function declaration.
Definition: hlaStateDecoder.h:53
bool myClassNeeded
Definition: objClassDesc13.h:292
Instances of DtVrlFederateAmbassador are used to manage the interface between the RTI and the VR-Link...
Definition: vrlFederateAmbassador13.h:45
RTI::AttributeHandle myMinAttrHand
Definition: objClassDesc13.h:304
This file contains the declaration of DtHlaStateEncoder.
void(* DtAttributeEncoder)(const DtStateRepository &stateRep, RTI::AttributeHandleValuePairSet *avList, RTI::AttributeHandle handle)
Attribute encoding function declaration.
Definition: hlaStateEncoder.h:50
DtString myName
Definition: objClassDesc13.h:276
DtExerciseConn * myExConn
Definition: objClassDesc13.h:295
std::set< DtDDMRegionSP > DtDDMRegionSet
Definition: region13.h:34
virtual const RTI::AttributeHandleSet & attrHandleSet() const
Get the set of valid attribute handles for this class.
Definition: objClassDesc13.h:326
DtHlaStateDecoder::DtAttributeDecoder myUnknownAttributeDecoder
Definition: objClassDesc13.h:314
virtual const DtObjClassDesc * baseClass() const
Return a pointer to the base class&#39;s descriptor, NULL if none.
Definition: objClassDesc13.h:356
int myNumSubscribeRequests
Definition: objClassDesc13.h:299
bool myEverPublished
Definition: objClassDesc13.h:297
An instance of DtObjClassDesc is a &quot;class descriptor&quot; for an HLA Object class.
Definition: objClassDesc13.h:41
RTI::AttributeHandleSet * myAttrsWithSpace
Attributes with a space (or dimensions in 1516) defined in the FOM.
Definition: objClassDesc13.h:284
bool myPublished
Definition: objClassDesc13.h:296
std::list< DtObjClassDesc * > myChildren
Definition: objClassDesc13.h:294
RTI::AttributeHandleSet * mySubAttrsWithSpace
Definition: objClassDesc13.h:289
DtObjClassDesc * myBase
Definition: objClassDesc13.h:293
std::shared_ptr< DtDDMRegion > DtDDMRegionSP
Definition: region13.h:31
DtHlaStateEncoder::DtAttributeEncoder myUnknownAttributeEncoder
Definition: objClassDesc13.h:312
RTI::ObjectClassHandle myHandle
Definition: objClassDesc13.h:277
virtual void addChildClass(DtObjClassDesc *child)
Informs base class that it has a new child class.
Definition: objClassDesc13.h:366
bool mySubscribeToUnspecifiedAttributesFlag
Definition: objClassDesc13.h:300
virtual RTI::ObjectClassHandle handle() const
Get the object&#39;s class handle.
Definition: objClassDesc13.h:321
static int maxAttributes()
Definition: objClassDesc13.h:336
std::map< RTI::AttributeHandle, DtString > StringToAttributeHandleMap
Definition: objClassDesc13.h:307
virtual int numAttributes() const
Get the number of attributes associated with this object, including privilege to delete.
Definition: objClassDesc13.h:351
DtHlaStateEncoder::DtAttributeCheckerWithHandle myUnknownAttributeChecker
Definition: objClassDesc13.h:313
virtual const char * name() const
Get the object&#39;s class handle.
Definition: objClassDesc13.h:346
RTI::AttributeHandle myPrivHandle
Handle of the privilegeToDelete attribute.
Definition: objClassDesc13.h:303
virtual const char * c_str() const
Returns a char* representation of the DtString;.
bool myEverSubscribed
Definition: objClassDesc13.h:298
RTI::AttributeHandleSet * myOwnAttrs
Definition: objClassDesc13.h:279
DtObjectTagModifierSP myTagModifier
Definition: objClassDesc13.h:310
static const xmlChar * attrName
Definition: xmlFedTags.h:116
virtual DtObjClassDesc * self() const
Casts away const-ness. Use with caution.
Definition: objClassDesc13.h:371
RTI::AttributeHandleSet * myAttrsWithoutSpace
Attributes without a space (or dimensions in 1516) defined in the FOM.
Definition: objClassDesc13.h:287
static void setMaxAttributes(int num)
Set/Get the maximum number of attributes that any class can have this exercise.
Definition: objClassDesc13.h:341
static double theSubscriptionTimeDelay
Definition: objClassDesc13.h:317
static int theMaxAttrs
Definition: objClassDesc13.h:316
DtVrlRtiAmbassador is a pure virtual class, designed to provide a foundation for different ways to se...
Definition: vrlRtiAmbassador13.h:23
RTI::AttributeHandle myMaxAttrHand
Definition: objClassDesc13.h:305
RTI::AttributeHandleSet * myPubAttrs
Definition: objClassDesc13.h:281
Instances of DtString are used to represent strings.
Definition: vlString.h:36
bool(* DtAttributeCheckerWithHandle)(const DtStateRepository &stateRep, const DtStateRepository &asSeenByRemote, RTI::AttributeHandle handle)
Attribute checking function declaration that takes a handle and checks the specific attribute pointed...
Definition: hlaStateEncoder.h:62
StringToAttributeHandleMap myStringToHandleMap
Definition: objClassDesc13.h:308
This file contains declarations of the classes DtObjectTagModifier and DtInteractionTagModifier.
std::vector< DtDDMRegionSP > mySubscribedRegions
Definition: objClassDesc13.h:311
This file contains typedefs for machine dependant types.
This file contains the declaration of DtHlaStateDecoder.
RTI::AttributeHandleSet * mySubAttrsWithoutSpace
Definition: objClassDesc13.h:290

Document ID: Generated on Thu Oct 16 00:12:25 EDT 2025 from SVN revision 280738
Copyright © 1992-2025 MAK Technologies. All Rights Reserved (www.mak.com)