VR-Link API Documentation for HLA 1516
 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 VT MAK
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 
75  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,
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 

Document ID: Generated on Thu Feb 22 04:26:36 EST 2018 from SVN revision 186468
Copyright © 2005-2016 VT MÄK. All Rights Reserved (www.mak.com)