VR-Link API Documentation for HLA 1.3
 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 
178 {
179 public:
180 
183  DtExerciseConn* exConn,
184  DtObjClassDesc* classDesc);
185 
187  virtual ~DtNatoIffDecoder();
188 
190  DtNatoIffDecoder(const DtNatoIffDecoder& orig);
191 
194 
195 public:
196 
197  static DtHlaStateDecoder* create(
198  DtExerciseConn* exConn,
199  DtObjClassDesc* classDesc);
200 
201 protected:
202 
204 
205  DtDECLARE_NATO_IFF_ATTR_DECODER(Mode1Enabled);
206  DtDECLARE_NATO_IFF_ATTR_DECODER(Mode1IsDamaged);
207  DtDECLARE_NATO_IFF_ATTR_DECODER(Mode1IsMalfunctioning);
209 
210  DtDECLARE_NATO_IFF_ATTR_DECODER(Mode2Enabled);
211  DtDECLARE_NATO_IFF_ATTR_DECODER(Mode2IsDamaged);
212  DtDECLARE_NATO_IFF_ATTR_DECODER(Mode2IsMalfunctioning);
214 
215  DtDECLARE_NATO_IFF_ATTR_DECODER(Mode3Enabled);
216  DtDECLARE_NATO_IFF_ATTR_DECODER(Mode3IsDamaged);
217  DtDECLARE_NATO_IFF_ATTR_DECODER(Mode3IsMalfunctioning);
219 
221  DtDECLARE_NATO_IFF_ATTR_DECODER(Mode3AEnabled);
222  DtDECLARE_NATO_IFF_ATTR_DECODER(Mode3AIsDamaged);
223  DtDECLARE_NATO_IFF_ATTR_DECODER(Mode3AIsMalfunctioning);
225 
226  DtDECLARE_NATO_IFF_ATTR_DECODER(Mode4Enabled);
227  DtDECLARE_NATO_IFF_ATTR_DECODER(Mode4IsDamaged);
228  DtDECLARE_NATO_IFF_ATTR_DECODER(Mode4IsMalfunctioning);
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);
238 
244  DtDECLARE_NATO_IFF_ATTR_DECODER(Mode5CEnabled);
245  DtDECLARE_NATO_IFF_ATTR_DECODER(Mode5CIsDamaged);
246  DtDECLARE_NATO_IFF_ATTR_DECODER(Mode5CIsMalfunctioning);
248 
249  DtDECLARE_NATO_IFF_ATTR_DECODER(ModeSEnabled);
250  DtDECLARE_NATO_IFF_ATTR_DECODER(ModeSIsDamaged);
251  DtDECLARE_NATO_IFF_ATTR_DECODER(ModeSIsMalfunctioning);
253 
255 
257  DtDECLARE_NATO_IFF_ATTR_DECODER(Mode5Enabled);
258  DtDECLARE_NATO_IFF_ATTR_DECODER(Mode5IsDamaged);
259  DtDECLARE_NATO_IFF_ATTR_DECODER(Mode5IsMalfunctioning);
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: exerciseConnHLA.h:61
#define DtDECLARE_NATO_IFF_MODE4_ATTR_DECODER(attrName)
This one can be used to declare the attribute decoding functions, which are static members of DtIffDe...
Definition: natoIffDecoder.h:79
This file provides a declaration of the class DtIffDecoder.
#define DT_DLL_VL
Definition: vlMachineTypes.h:108
Defines a protocol independent repository of attributes for IFF objects.
Definition: iffStateRepository.h:39
static DtHlaStateDecoder * create(DtExerciseConn *exConn, DtObjClassDesc *classDesc)
#define DtDECLARE_NATO_IFF_TCAS_ATTR_DECODER(attrName)
This one can be used to declare the attribute decoding functions, which are static members of DtIffDe...
Definition: natoIffDecoder.h:120
An instance of DtObjClassDesc is a "class descriptor" for an HLA Object class.
Definition: objClassDesc13.h:41
DtIffDecoder & operator=(const DtIffDecoder &orig)
assignment operator
DtHlaStateDecoder is used to provide decoding of a state message into a state repository in an HLA (a...
Definition: hlaStateDecoder.h:34
Instances of DtMode4StateRepository are used to store state data for IFFData.Mode4 objects...
Definition: iffMode4StateRepository.h:29
The DtIffDecoder class:
Definition: iffDecoder.h:63
Mode TCAS Specific Attribute Decoder Macros.
Definition: natoIffDecoder.h:177
#define DtDECLARE_NATO_IFF_ATTR_DECODER(attrName)
We define several macros that can be helpful in defining the class, and the individual decoding funct...
Definition: natoIffDecoder.h:22

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)