VR-Link API Documentation for HLA 1516
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
baseEntityDecoder.h
Go to the documentation of this file.
1 /*********************************************************************
2 ** Copyright (c) 1992-2025 MAK Technologies, Inc
3 ** All rights reserved.
4 *********************************************************************/
5 
6 
7 #ifndef DtBaseEntityDecoder_H_
8 #define DtBaseEntityDecoder_H_
9 
10 #if DtHLA
11 
12 #include "hlaStateDecoder.h"
13 
17 
20 
23 #define DtDECLARE_ENTITY_ATTR_DECODER(attrName) \
24  DtDECLARE_ATTR_DECODER(DtEntityStateRepository, attrName)
25 
28 #define DtDECLARE_AGGREGATE_ATTR_DECODER(attrName) \
29  DtDECLARE_ATTR_DECODER(DtAggregateStateRepository, attrName)
30 
33 #define DtDECLARE_BASE_ENTITY_ATTR_DECODER(attrName) \
34  DtDECLARE_ATTR_DECODER(DtBaseEntityStateRepository, attrName)
35 
36 
42 {
43 public:
44 
47  DtExerciseConn* exConn,
48  DtObjClassDesc* classDesc);
49 
51  virtual ~DtBaseEntityDecoder();
52 
55 
58 
60  virtual DtHlaStateDecoder* clone() const;
61 
66  virtual DtHlaStateDecoder* clone(DtObjClassDesc* classDesc) const;
67 
68 public:
69 
71  static DtHlaStateDecoder* create(
72  DtExerciseConn* exConn,
73  DtObjClassDesc* classDesc);
74 
75 protected:
76 
80  void addMyDecoders();
81 
84  virtual void decode(const DtStateMsg& msg,
85  DtStateRepository* stateRep) const;
86 
88 
91  DtDECLARE_BASE_ENTITY_ATTR_DECODER(RelativeSpatial);
93 
95  DtDECLARE_BASE_ENTITY_ATTR_DECODER(IsPartOf_RPR_20014);
96 
98  DtDECLARE_BASE_ENTITY_ATTR_DECODER(AccelerationVector);
99  DtDECLARE_BASE_ENTITY_ATTR_DECODER(AngularVelocityVector);
103  DtDECLARE_BASE_ENTITY_ATTR_DECODER(VelocityVector);
104 
109 
111  DtDECLARE_BASE_ENTITY_ATTR_DECODER(DeadReckoningAlgorithm);
112  DtDECLARE_BASE_ENTITY_ATTR_DECODER(WorldLocation);
113  DtDECLARE_BASE_ENTITY_ATTR_DECODER(EntityIdentifier);
114 };
115 
121 #define DtDEFINE_SIMPLE_BASE_ENTITY_ATTR_DECODER_WITH_CAST( \
122  attrName, netType, mutator, castExpr) \
123  DtDEFINE_SIMPLE_ATTR_DECODER_WITH_CAST( \
124  DtBaseEntityDecoder, DtBaseEntityStateRepository, \
125  attrName, netType, mutator, castExpr)
126 
127 #define DtDEFINE_SIMPLE_BASE_ENTITY_ATTR_DECODER( \
128  attrName, netType, inspector) \
129  DtDEFINE_SIMPLE_BASE_ENTITY_ATTR_DECODER_WITH_CAST( \
130  attrName, netType, inspector, (netType))
131 
138 #define DtDEFINE_SIMPLE_BASE_ENTITY_ATTR_DECODER_MUTATOR_WITH_TIME( \
139  attrName, netType, mutator) \
140 void DtBaseEntityDecoder::decode##attrName( \
141  DtBaseEntityStateRepository* stateRep, \
142  const RTI::AttributeHandleValuePairSet& attrs, \
143  int index) \
144 { \
145  RTI::ULong length = attrs.getValueLength(index); \
146  if (length < sizeof(netType)) \
147  { \
148  DtWarn("Cannot decode attribute %s.\n" \
149  "Size of data (%d) is smaller than size of %s (%d).\n", \
150  #attrName, length, #netType, sizeof(netType)); \
151  return; \
152  } \
153  else if (length > sizeof(netType) && DtNotifyLevel >= DtNlVerbose) \
154  { \
155  DtVerbose("When decoding attribute %s,\n" \
156  "found size of data (%d) is larger than size of %s (%d).\n", \
157  #attrName, length, #netType, sizeof(netType)); \
158  return; \
159  } \
160  netType netVal; \
161  attrs.getValue(index, (char*) &netVal, length); \
162  stateRep->mutator(netVal, stateRep->timeForSets()); \
163 }
164 
165 #endif
166 #endif
167 
168 
169 
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
Instances of DtBaseEntityDecoder are used to decode a base entity state message into a state reposito...
Definition: baseEntityDecoder.h:41
Instances of DtBaseEntityStateRepository are used to maintain basic state information needed by all k...
Definition: baseEntityStateRepository.h:36
#define DtDECLARE_BASE_ENTITY_ATTR_DECODER(attrName)
This is used to declare attribute decoding functions which are members of the class.
Definition: baseEntityDecoder.h:33
An instance of DtObjClassDesc is a &quot;class descriptor&quot; for an HLA Object class.
Definition: objClassDesc1516.h:41
Instances of DtEntityStateRepository are used to maintain attributes and state of entity objects in a...
Definition: entityStateRepository.h:42
DtHlaStateDecoder is used to provide decoding of a state message into a state repository in an HLA (a...
Definition: hlaStateDecoder.h:34
DtStateRepository is an abstract base class for maintaining state for an object.
Definition: stateRepository.h:50
DtHlaStateDecoder & operator=(const DtHlaStateDecoder &orig)
assignment operator
virtual DtHlaStateDecoder * clone() const
Returns a new-ed clone of this object.
virtual void decode(const DtStateMsg &msg, DtStateRepository *stateRep) const
Decode the state message into the state repository.
class DtStateMsg:
Definition: stateMsgHLA.h:32
This file contains the declaration of DtHlaStateDecoder.

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)