VR-Link API Documentation for HLA 1.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
interClassDesc.h
Go to the documentation of this file.
1 /*********************************************************************
2 ** Copyright (c) 1992-2010 MAK Technologies, Inc
3 ** All rights reserved.
4 *********************************************************************/
7 
8 #pragma once
9 
10 #if DtHLA
11 
12 #include <vlutil/vlMachineTypes.h>
13 #include "rtiNamespace.h"
14 #include "rtiCompatibility.h"
15 #include "region.h"
16 #include <vlutil/vlString.h>
17 #include "userTagModifiers.h"
18 #include <set>
19 
20 class DtExerciseConn;
21 class DtVrlRtiAmbassador;
22 
27 class DT_DLL_VL DtInteractionRep;
29 
34 {
35 public:
36 
38  DtInterClassDesc(const char* className,
39  DtInterClassDesc* base, RTI::InteractionClassHandle handle,
40  DtExerciseConn* exConn);
41 
43  virtual ~DtInterClassDesc();
44 
46  virtual void addParam(const char* paramName);
47 
49  virtual RTI::InteractionClassHandle handle() const;
50 
52  virtual const char* name() const;
53 
55  virtual const DtInterClassDesc* baseClass() const;
56 
58  virtual DtInterClassDesc* baseClass();
59 
62  virtual int isOfClass(RTI::InteractionClassHandle hand) const;
63 
65  virtual int numParameters() const;
66 
68  virtual RTI::ParameterHandle parameterHandleByName(const char *paramName);
69 
71  virtual DtString parameterNameByHandle(const RTI::ParameterHandle& hand);
72 
73 #if !DtHLA_1516
74  virtual int minParamHandle() const;
76  virtual int maxParamHandle() const;
77 #endif
78 
81 #if DtHLA_1516
82  virtual const RTI::ParameterHandleSet& paramHandleSet() const;
83 #else
84  virtual const RTI::AttributeHandleSet& paramHandleSet() const;
85 #endif
86 
88 #if DtHLA_1516
89  virtual const RTI::ParameterHandleSet& ownParamHandles() const;
90 #else
91  virtual const RTI::AttributeHandleSet& ownParamHandles() const;
92 #endif
93 
95  virtual void publish();
96 
98  virtual void unpublish();
99 
101  virtual void subscribe();
102 
104  virtual void subscribe(DtDDMRegionSP region);
105 
107  virtual void passiveSubscribe();
108 
110  virtual void unsubscribe();
111 
113  virtual void unsubscribe(DtDDMRegionSP region);
114 
116  virtual bool published() const;
117 
119  virtual bool subscribed() const;
120 
123  virtual DtInterClassDesc* firstSubscribed();
124 
126  virtual DtVrlRtiAmbassador* rtiAmb();
127 
130  virtual bool neededByFederation() const;
131 
134  virtual bool everPublished() const;
135 
138  virtual bool everSubscribed() const;
139 
140  virtual void setUserTagModifier(DtInteractionTagModifierSP modifier);
141  virtual DtInteractionTagModifierSP userTagModifier();
142 
143 public:
144 
146  static void setMaxParameters(int num);
147  static int maxParameters();
148 
154  static void setSubscriptionTimeDelay(double delay);
155 
156 
162  virtual void enableUnknownParameters();
163 
165  typedef void (*DtParameterEncoder)
166  (const DtInteractionWithEncDec& inter,
167  RTI::ParameterHandleValuePairSet* avlist,
168  RTI::ParameterHandle handle);
169 
170  typedef void (*DtParameterDecoder)(DtInteractionWithEncDec* inter,
171  const RTI::ParameterHandleValuePairSet& pvlist, int i);
172 
175  virtual void setUnknownParameterDecoder(
176  DtParameterDecoder decoder);
177 
180  virtual void setUnknownParameterEncoder(
181  DtParameterEncoder encoder);
182 
184  virtual DtParameterEncoder unknownParameterEncoder();
185 
187  virtual DtParameterDecoder unknownParameterDecoder();
188 
189 protected:
190 
192  static void startIntersCb(RTI::InteractionClassHandle hand,
193  void* usr);
194 
196  static void stopIntersCb(RTI::InteractionClassHandle hand,
197  void* usr);
198 
200  virtual void processStartInters(RTI::InteractionClassHandle hand);
201 
203  virtual void processStopInters(RTI::InteractionClassHandle hand);
204 
205 protected:
206 
208  DtInterClassDesc(const DtInterClassDesc& orig);
209 
211  DtInterClassDesc& operator=(const DtInterClassDesc& orig);
212 
213 protected:
214 
216  RTI::InteractionClassHandle myHandle;
217 #if DtHLA_1516
218  RTI::ParameterHandleSet* myParams;
219  RTI::ParameterHandleSet* myOwnParams;
220 #else
221  RTI::AttributeHandleSet* myParams;
222  RTI::AttributeHandleSet* myOwnParams;
223 #endif
231  RTI::ParameterHandle myMinParamHand;
232  RTI::ParameterHandle myMaxParamHand;
235  std::set<DtDDMRegionSP> mySubscribedRegions;
236  DtParameterEncoder myUnknownParameterEncoder;
237  DtParameterDecoder myUnknownParameterDecoder;
238 
239 protected:
240 
241  static int theMaxParams;
243 };
244 
245 inline RTI::InteractionClassHandle DtInterClassDesc::handle() const
246 {
247  return myHandle;
248 }
249 
251 {
252  return (int)myParams->size();
253 }
254 #if DtHLA_1516
255 inline const RTI::ParameterHandleSet& DtInterClassDesc::paramHandleSet() const
256 #else
257 inline const RTI::AttributeHandleSet& DtInterClassDesc::paramHandleSet() const
258 #endif
259 {
260  return *myParams;
261 }
262 
263 #if DtHLA_1516
264 inline const RTI::ParameterHandleSet& DtInterClassDesc::ownParamHandles() const
265 #else
266 inline const RTI::AttributeHandleSet& DtInterClassDesc::ownParamHandles() const
267 #endif
268 {
269  return *myOwnParams;
270 }
271 
273 {
274  return theMaxParams;
275 }
276 
278 {
279  theMaxParams = num;
280 }
281 
282 inline const char* DtInterClassDesc::name() const
283 {
284  return myName.c_str();
285 }
286 
288 {
289  return myBase;
290 }
291 
293 {
294  return myBase;
295 }
296 
298 {
299  theSubscriptionTimeDelay = delay;
300 }
301 
302 
303 #endif
304 
virtual const DtInterClassDesc * baseClass() const
Return a pointer to the base class&#39;s descriptor, NULL if none.
Definition: interClassDesc.h:287
DtInteractionTagModifierSP myTagModifier
Definition: interClassDesc.h:234
Instances of DtExerciseConn are used to provide an application&#39;s interface or connection to the netwo...
Definition: exerciseConnHLA.h:61
DtParameterEncoder myUnknownParameterEncoder
Definition: interClassDesc.h:236
DtExerciseConn * myExConn
Definition: interClassDesc.h:225
#define DT_DLL_VL
Definition: vlMachineTypes.h:108
Contains the DtString class declaration.
static double theSubscriptionTimeDelay
Definition: interClassDesc.h:242
Instances of DtInterClassDesc are used to represent HLA Object and Interaction classes.
Definition: interClassDesc.h:33
virtual int numParameters() const
Get the number of parameters associated with this object.
Definition: interClassDesc.h:250
static void setSubscriptionTimeDelay(double delay)
Set a time delay to occur after calling RTI::RTIambassador::subscribe() The purpose of this function ...
Definition: interClassDesc.h:297
std::set< DtDDMRegionSP > mySubscribedRegions
Definition: interClassDesc.h:235
bool myNeededFlag
Definition: interClassDesc.h:226
DtInterClassDesc * myBase
Definition: interClassDesc.h:224
RTI::ParameterHandle myMinParamHand
Definition: interClassDesc.h:231
RTI::ParameterHandle myMaxParamHand
Definition: interClassDesc.h:232
bool myEverSubscribed
Definition: interClassDesc.h:230
DtParameterDecoder myUnknownParameterDecoder
Definition: interClassDesc.h:237
static void setMaxParameters(int num)
Set/Get maximum number of allowable parameters for an interaction.
Definition: interClassDesc.h:277
DtBoost::shared_ptr< DtDDMRegion > DtDDMRegionSP
Definition: region13.h:31
bool myPublished
Definition: interClassDesc.h:227
DtString myName
Definition: interClassDesc.h:215
RTI::InteractionClassHandle myHandle
Definition: interClassDesc.h:216
bool mySubscribed
Definition: interClassDesc.h:228
virtual const char * c_str() const
Returns a char* representation of the DtString;.
virtual const RTI::AttributeHandleSet & ownParamHandles() const
Get the set of non-inherited parameter handles for this class.
Definition: interClassDesc.h:266
virtual const RTI::AttributeHandleSet & paramHandleSet() const
Get the set of valid parameter handles for this class.
Definition: interClassDesc.h:257
int myNumSubscribeRequests
Definition: interClassDesc.h:233
DtBoost::shared_ptr< DtInteractionTagModifier > DtInteractionTagModifierSP
Shared pointer typedefs for ease of use.
Definition: userTagModifiers.h:34
class DtInteractionWithEncDec:
Definition: interactionWithEncDec.h:44
DtVrlRtiAmbassador is a pure virtual class, designed to provide a foundation for different ways to se...
Definition: vrlRtiAmbassador13.h:25
RTI::AttributeHandleSet * myParams
Definition: interClassDesc.h:221
Instances of DtString are used to represent strings.
Definition: vlString.h:29
virtual RTI::InteractionClassHandle handle() const
Get the object&#39;s class handle.
Definition: interClassDesc.h:245
This file contains declarations of the classes DtObjectTagModifier and DtInteractionTagModifier.
bool myEverPublished
Definition: interClassDesc.h:229
static int theMaxParams
Definition: interClassDesc.h:241
static int maxParameters()
Definition: interClassDesc.h:272
This file contains typedefs for machine dependant types.
RTI::AttributeHandleSet * myOwnParams
Definition: interClassDesc.h:222
virtual const char * name() const
Get the object&#39;s class name.
Definition: interClassDesc.h:282

Document ID: Generated on Thu Sep 19 02:12:35 EDT 2024 from SVN revision 269601
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)