VR-Link API Documentation for DIS
interEncoder.h
Go to the documentation of this file.
1 /*********************************************************************
2 ** Copyright (c) 1992-2010 VT MAK
3 ** All rights reserved.
4 *********************************************************************/
5 
6 
9 
10 #ifndef DtInteractionEncoder_H_
11 #define DtInteractionEncoder_H_
12 
13 #if DtHLA
14 
15 
16 #include <vlutil/vlMachineTypes.h>
17 
18 #include "rtiNamespace.h"
19 #include "rtiCompatibility.h"
20 #include <map>
21 
23 class DT_DLL_VL DtInterClassDesc;
24 class DT_DLL_VL DtVrlRtiAmbassador;
25 
30 class DT_DLL_VL DtInteractionRep;
31 
32 
37 class DT_DLL_VL DtInteractionEncoder
38 {
39 public:
40 
42  DtInteractionEncoder(DtExerciseConn* exConn,
43  DtInterClassDesc* classDesc);
44 
46  virtual ~DtInteractionEncoder();
47 
49  DtInteractionEncoder(const DtInteractionEncoder& orig);
50 
52  DtInteractionEncoder& operator=(const DtInteractionEncoder& orig);
53 
55  typedef void (*DtParameterEncoder)
56  (const DtInteractionRep& inter,
57  RTI::ParameterHandleValuePairSet* avlist,
58  RTI::ParameterHandle handle);
59 
63  virtual DtParameterEncoder addEncoder(RTI::ParameterHandle hand,
64  DtParameterEncoder func);
65 
69  virtual DtParameterEncoder addEncoder(char* name,
70  DtParameterEncoder proc);
71 
73  virtual DtParameterEncoder encoder(RTI::ParameterHandle hand) ;
74 
76  virtual void encode(const DtInteractionRep& inter,
77 #if DtHLA_1516
78  RTI::ParameterHandleValueMap &pvMap);
79 #else
80  RTI::ParameterHandleValuePairSet* pvList);
81 #endif
82 
84  virtual RTI::InteractionClassHandle interClassHandle();
85 
87  virtual DtInteractionEncoder* clone() const;
88 
93  virtual DtInteractionEncoder* clone(DtInterClassDesc* interDesc) const;
94 
95 protected:
96 
97  DtExerciseConn* myExConn;
98  DtInterClassDesc* myClassDesc;
99 
100 #if DtHLA_1516
101  RTI::RTIambassador* myRtiAmb;
102 #else
103  DtVrlRtiAmbassador* myRtiAmb;
104 #endif
105 
106  RTI::InteractionClassHandle myHandle;
107 
109  std::map<RTI::ParameterHandle, DtParameterEncoder> myList;
110 };
111 
112 inline RTI::InteractionClassHandle DtInteractionEncoder::interClassHandle()
113 {
114  return myHandle;
115 }
116 
117 inline DtInteractionEncoder::DtParameterEncoder
118  DtInteractionEncoder::encoder(RTI::ParameterHandle hand)
119 {
120  return myList[hand];
121 };
122 
123 #define DtADD_PARAM_ENCODER(attrName) \
124  addEncoder((char *)#attrName, (DtParameterEncoder) encode##attrName)
125 
126 #define DtDECLARE_PARAM_ENCODER(interClass, paramName) \
127  static void encode##paramName(const interClass& inter, \
128  RTI::ParameterHandleValuePairSet* params, \
129  RTI::ParameterHandle paramHandle)
130 
131 #define DtDEFINE_SIMPLE_PARAM_ENCODER(encClass, interClass, \
132  paramName, netType, \
133  inspector) \
134 void encClass::encode##paramName(const interClass& inter, \
135  RTI::ParameterHandleValuePairSet* params, \
136  RTI::ParameterHandle paramHandle) \
137 { \
138  netType netVal; \
139  netVal = inter.inspector(); \
140  params->add(paramHandle, (char*) &netVal, sizeof(netType)); \
141 }
142 
143 #define DtDEFINE_SIMPLE_GLOBAL_OBJECT_DESIGNATOR_PARAM_ENCODER( \
144  encClass, interClass, paramName, inspector) \
145 void encClass::encode##paramName(const interClass& inter, \
146  RTI::ParameterHandleValuePairSet* params, \
147  RTI::ParameterHandle paramHandle) \
148 { \
149  DtGlobalObjectDesignator netVal = inter.inspector(); \
150  params->add(paramHandle, (char*) netVal.string(), netVal.length()+1); \
151 }
152 
153 
154 #endif
155 #endif
156 

Document ID: Generated on Wed Aug 14 15:35:11 EDT 2013 from SVN revision 130445
Copyright © 2005-2013 VT MÄK. All Rights Reserved (www.mak.com)