VR-Link API Documentation for HLA Evolved
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
interactionEncoder.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 #pragma once
11 
12 #if DtHLA
13 
14 #include <vlutil/vlMachineTypes.h>
16 
17 #include "rtiNamespace.h"
18 #include "rtiCompatibility.h"
19 #include <map>
20 
24 
29 class DT_DLL_VL DtInteractionRep;
30 
31 
37 {
38 public:
39 
42  DtInterClassDesc* classDesc);
43 
45  virtual ~DtInteractionEncoder();
46 
49 
51  DtInteractionEncoder& operator=(const DtInteractionEncoder& orig);
52 
54  typedef void (*DtParameterEncoder)
55  (const DtInteractionRep& inter,
56  RTI::ParameterHandleValuePairSet* avlist,
57  RTI::ParameterHandle handle);
58 
62  virtual DtParameterEncoder addEncoder(RTI::ParameterHandle hand,
63  DtParameterEncoder func);
64 
68  virtual DtParameterEncoder addEncoder(char* name,
69  DtParameterEncoder proc);
70 
72  virtual DtParameterEncoder encoder(RTI::ParameterHandle hand) ;
73 
75  virtual void encode(const DtInteractionRep& inter,
76 #if DtHLA_1516
77  RTI::ParameterHandleValueMap &pvMap);
78 #else
79  RTI::ParameterHandleValuePairSet* pvList);
80 #endif
81 
83  virtual RTI::InteractionClassHandle interClassHandle();
84 
86  virtual DtInteractionEncoder* clone() const;
87 
92  virtual DtInteractionEncoder* clone(DtInterClassDesc* interDesc) const;
93 
94 public:
95  static void encodeGenericParameter(const DtInteractionWithEncDec& inter,
96  RTI::ParameterHandleValuePairSet* avlist,
97  RTI::ParameterHandle handle);
98 
99 protected:
100 
103 
104 #if DtHLA_1516
105  RTI::RTIambassador* myRtiAmb;
106 #else
108 #endif
109 
110  RTI::InteractionClassHandle myHandle;
111 
113  std::map<RTI::ParameterHandle, DtParameterEncoder> myList;
114 };
115 
116 inline RTI::InteractionClassHandle DtInteractionEncoder::interClassHandle()
117 {
118  return myHandle;
119 }
120 
122  DtInteractionEncoder::encoder(RTI::ParameterHandle hand)
123 {
124  return myList[hand];
125 };
126 
127 #define DtADD_PARAM_ENCODER(attrName) \
128  addEncoder((char *)#attrName, (DtParameterEncoder) encode##attrName)
129 
130 #define DtDECLARE_PARAM_ENCODER(interClass, paramName) \
131  static void encode##paramName(const interClass& inter, \
132  RTI::ParameterHandleValuePairSet* params, \
133  RTI::ParameterHandle paramHandle)
134 
135 #define DtDEFINE_SIMPLE_PARAM_ENCODER(encClass, interClass, \
136  paramName, netType, \
137  inspector) \
138 void encClass::encode##paramName(const interClass& inter, \
139  RTI::ParameterHandleValuePairSet* params, \
140  RTI::ParameterHandle paramHandle) \
141 { \
142  netType netVal; \
143  netVal = inter.inspector(); \
144  params->add(paramHandle, (char*) &netVal, sizeof(netType)); \
145 }
146 
147 #define DtDEFINE_SIMPLE_GLOBAL_OBJECT_DESIGNATOR_PARAM_ENCODER( \
148  encClass, interClass, paramName, inspector) \
149 void encClass::encode##paramName(const interClass& inter, \
150  RTI::ParameterHandleValuePairSet* params, \
151  RTI::ParameterHandle paramHandle) \
152 { \
153  DtGlobalObjectDesignator netVal = inter.inspector(); \
154  params->add(paramHandle, (char*) netVal.string(), netVal.length()+1); \
155 }
156 
157 
158 #endif

Document ID: Generated on Fri May 15 06:36:13 EDT 2015 from SVN revision 153263
Copyright © 2005-2014 VT MÄK. All Rights Reserved (www.mak.com)