VR-Link API Documentation for DIS
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
natoIffDecoder.h
Go to the documentation of this file.
1 #if DtHLA
2 
3 #ifndef DtNatoIffDecoder_H_
4 #define DtNatoIffDecoder_H_
5 
6 #include "iffDecoder.h"
7 
11 
15 
18 
22 #define DtDECLARE_NATO_IFF_ATTR_DECODER(attrName) \
23  DtDECLARE_ATTR_DECODER(DtIffStateRepository, attrName)
24 
32 #define DtDEFINE_SIMPLE_NATO_IFF_ATTR_DECODER( \
33  attrName, netType, inspector) \
34  DtDEFINE_SIMPLE_NATO_IFF_ATTR_DECODER_WITH_CAST( \
35  attrName, netType, inspector, (netType))
36 
42 #define DtDEFINE_SIMPLE_NATO_IFF_ATTR_DECODER_WITH_CAST( \
43  attrName, netType, mutator, castExpr) \
44  DtDEFINE_SIMPLE_ATTR_DECODER_WITH_CAST( \
45  DtNatoIffDecoder, DtIffStateRepository, \
46  attrName, netType, mutator, castExpr)
47 
48 #define DtDEFINE_SIMPLE_NATO_IFF_ATTR_DECODER_WITH_CAST_AND_PARAM( \
49  attrName, netType, mutator, param, castExpr) \
50  DtDEFINE_SIMPLE_IFF_ATTR_DECODER_WITH_CAST_AND_PARAM( \
51  DtNatoIffDecoder, attrName, netType, mutator, param, castExpr)
52 
53 
58 
59 #define DtDEFINE_SIMPLE_MODE4_ATTR_DECODER_WITH_CAST( \
60  decClass, stateRepClass, attrName, netType, mutator, castExpr) \
61 void decClass::decode##attrName( \
62  stateRepClass* stateRep, \
63  const RTI::AttributeHandleValuePairSet& attrs, \
64  int index) \
65 { \
66  if (stateRep->mode4()) { \
67  RTI::ULong length = 0; \
68  netType* netValPtr = (netType*)attributeData(attrs, index, length, sizeof(netType), #attrName); \
69  if (netValPtr) \
70  { \
71  stateRep->mode4()->mutator(castExpr *netValPtr); \
72  } \
73  } \
74 }
75 
79 #define DtDECLARE_NATO_IFF_MODE4_ATTR_DECODER(attrName) \
80  DtDECLARE_ATTR_DECODER(DtIffStateRepository, attrName)
81 
89 #define DtDEFINE_SIMPLE_NATO_IFF_MODE4_ATTR_DECODER( \
90  attrName, netType, inspector) \
91  DtDEFINE_SIMPLE_NATO_IFF_MODE4_ATTR_DECODER_WITH_CAST( \
92  attrName, netType, inspector, (netType))
93 
99 #define DtDEFINE_SIMPLE_NATO_IFF_MODE4_ATTR_DECODER_WITH_CAST( \
100  attrName, netType, mutator, castExpr) \
101  DtDEFINE_SIMPLE_MODE4_ATTR_DECODER_WITH_CAST( \
102  DtNatoIffDecoder, DtIffStateRepository, \
103  attrName, netType, mutator, castExpr)
104 
105 #define DtDEFINE_SIMPLE_NATO_IFF_MODE4_ATTR_DECODER_WITH_CAST_AND_PARAM( \
106  attrName, netType, mutator, param, castExpr) \
107  DtDEFINE_SIMPLE_IFF_ATTR_DECODER_WITH_CAST_AND_PARAM( \
108  DtNatoIffDecoder, attrName, netType, mutator, param, castExpr)
109 
111 /*************************************************/
112 
120 #define DtDECLARE_NATO_IFF_TCAS_ATTR_DECODER(attrName) \
121  DtDECLARE_ATTR_DECODER(DtIffStateRepository, attrName)
122 
130 #define DtDEFINE_SIMPLE_NATO_IFF_TCAS_ATTR_DECODER( \
131  attrName, netType, inspector) \
132  DtDEFINE_SIMPLE_NATO_IFF_TCAS_ATTR_DECODER_WITH_CAST( \
133  attrName, netType, inspector, (netType))
134 
142 #define DtDEFINE_SIMPLE_TCAS_ATTR_DECODER_WITH_CAST( \
143  decClass, stateRepClass, attrName, netType, mutator, castExpr) \
144 void decClass::decode##attrName( \
145  stateRepClass* stateRep, \
146  const RTI::AttributeHandleValuePairSet& attrs, \
147  int index) \
148 { \
149  if (stateRep->tcasData()) { \
150  RTI::ULong length = 0; \
151  netType* netValPtr = (netType*)attributeData(attrs, index, length, sizeof(netType), #attrName); \
152  if (netValPtr) \
153  { \
154  stateRep->tcasData()->mutator(castExpr *netValPtr); \
155  } \
156  } \
157 }
158 
164 #define DtDEFINE_SIMPLE_NATO_IFF_TCAS_ATTR_DECODER_WITH_CAST( \
165  attrName, netType, mutator, castExpr) \
166  DtDEFINE_SIMPLE_TCAS_ATTR_DECODER_WITH_CAST( \
167  DtNatoIffDecoder, DtIffStateRepository, \
168  attrName, netType, mutator, castExpr)
169 
170 #define DtDEFINE_SIMPLE_NATO_IFF_TCAS_ATTR_DECODER_WITH_CAST_AND_PARAM( \
171  attrName, netType, mutator, param, castExpr) \
172  DtDEFINE_SIMPLE_IFF_ATTR_DECODER_WITH_CAST_AND_PARAM( \
173  DtNatoIffDecoder, attrName, netType, mutator, param, castExpr)
174 
177 class DT_DLL_VL DtNatoIffDecoder : public DtIffDecoder
178 {
179 public:
180 
182  DtNatoIffDecoder(
183  DtExerciseConn* exConn,
184  DtObjClassDesc* classDesc);
185 
187  virtual ~DtNatoIffDecoder();
188 
190  DtNatoIffDecoder(const DtNatoIffDecoder& orig);
191 
193  DtNatoIffDecoder& operator=(const DtNatoIffDecoder& orig);
194 
195 public:
196 
197  static DtHlaStateDecoder* create(
198  DtExerciseConn* exConn,
199  DtObjClassDesc* classDesc);
200 
201 protected:
202 
203  DtDECLARE_NATO_IFF_MODE4_ATTR_DECODER(AlternateMode4);
204 
205  DtDECLARE_NATO_IFF_ATTR_DECODER(Mode1Enabled);
206  DtDECLARE_NATO_IFF_ATTR_DECODER(Mode1IsDamaged);
207  DtDECLARE_NATO_IFF_ATTR_DECODER(Mode1IsMalfunctioning);
208  DtDECLARE_NATO_IFF_ATTR_DECODER(Mode1IsOn);
209 
210  DtDECLARE_NATO_IFF_ATTR_DECODER(Mode2Enabled);
211  DtDECLARE_NATO_IFF_ATTR_DECODER(Mode2IsDamaged);
212  DtDECLARE_NATO_IFF_ATTR_DECODER(Mode2IsMalfunctioning);
213  DtDECLARE_NATO_IFF_ATTR_DECODER(Mode2IsOn);
214 
215  DtDECLARE_NATO_IFF_ATTR_DECODER(Mode3Enabled);
216  DtDECLARE_NATO_IFF_ATTR_DECODER(Mode3IsDamaged);
217  DtDECLARE_NATO_IFF_ATTR_DECODER(Mode3IsMalfunctioning);
218  DtDECLARE_NATO_IFF_ATTR_DECODER(Mode3IsOn);
219 
221  DtDECLARE_NATO_IFF_ATTR_DECODER(Mode3AEnabled);
222  DtDECLARE_NATO_IFF_ATTR_DECODER(Mode3AIsDamaged);
223  DtDECLARE_NATO_IFF_ATTR_DECODER(Mode3AIsMalfunctioning);
224  DtDECLARE_NATO_IFF_ATTR_DECODER(Mode3AIsOn);
225 
226  DtDECLARE_NATO_IFF_ATTR_DECODER(Mode4Enabled);
227  DtDECLARE_NATO_IFF_ATTR_DECODER(Mode4IsDamaged);
228  DtDECLARE_NATO_IFF_ATTR_DECODER(Mode4IsMalfunctioning);
229  DtDECLARE_NATO_IFF_ATTR_DECODER(Mode4IsOn);
230  DtDECLARE_NATO_IFF_MODE4_ATTR_DECODER(Mode4PseudoCrypto);
231  DtDECLARE_NATO_IFF_MODE4_ATTR_DECODER(Mode4PseudoCryptoAvailable);
232 
234  DtDECLARE_NATO_IFF_ATTR_DECODER(ModeCEnabled);
235  DtDECLARE_NATO_IFF_ATTR_DECODER(ModeCIsDamaged);
236  DtDECLARE_NATO_IFF_ATTR_DECODER(ModeCIsMalfunctioning);
237  DtDECLARE_NATO_IFF_ATTR_DECODER(ModeCIsOn);
238 
244  DtDECLARE_NATO_IFF_ATTR_DECODER(Mode5CEnabled);
245  DtDECLARE_NATO_IFF_ATTR_DECODER(Mode5CIsDamaged);
246  DtDECLARE_NATO_IFF_ATTR_DECODER(Mode5CIsMalfunctioning);
247  DtDECLARE_NATO_IFF_ATTR_DECODER(Mode5CIsOn);
248 
249  DtDECLARE_NATO_IFF_ATTR_DECODER(ModeSEnabled);
250  DtDECLARE_NATO_IFF_ATTR_DECODER(ModeSIsDamaged);
251  DtDECLARE_NATO_IFF_ATTR_DECODER(ModeSIsMalfunctioning);
252  DtDECLARE_NATO_IFF_ATTR_DECODER(ModeSIsOn);
253 
254  DtDECLARE_NATO_IFF_TCAS_ATTR_DECODER(ModeSIsTcasI);
255 
257  DtDECLARE_NATO_IFF_ATTR_DECODER(Mode5Enabled);
258  DtDECLARE_NATO_IFF_ATTR_DECODER(Mode5IsDamaged);
259  DtDECLARE_NATO_IFF_ATTR_DECODER(Mode5IsMalfunctioning);
260  DtDECLARE_NATO_IFF_ATTR_DECODER(Mode5IsOn);
261 };
262 
263 #endif
264 #endif
265 
Instances of DtTCASDataStateRepository are used to store state data for IFFData.TCASData objects...
Definition: iffTCASDataStateRepository.h:29
Instances of DtExerciseConn are used to provide an application's interface or connection to the netwo...
Definition: exerciseConnDIS.h:62
#define DT_DLL_VL
Definition: vlMachineTypes.h:108
Defines a protocol independent repository of attributes for IFF objects.
Definition: iffStateRepository.h:39
Instances of DtMode4StateRepository are used to store state data for IFFData.Mode4 objects...
Definition: iffMode4StateRepository.h:29

Document ID: Generated on Wed Mar 27 02:04:30 EDT 2024 from SVN revision 264570
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)