10 #ifndef DtInteractionEncoder_H_
11 #define DtInteractionEncoder_H_
43 DtInterClassDesc* classDesc);
46 virtual ~DtInteractionEncoder();
49 DtInteractionEncoder(
const DtInteractionEncoder& orig);
52 DtInteractionEncoder& operator=(
const DtInteractionEncoder& orig);
55 typedef void (*DtParameterEncoder)
56 (
const DtInteractionRep& inter,
57 RTI::ParameterHandleValuePairSet* avlist,
58 RTI::ParameterHandle handle);
63 virtual DtParameterEncoder addEncoder(RTI::ParameterHandle hand,
64 DtParameterEncoder func);
69 virtual DtParameterEncoder addEncoder(
char* name,
70 DtParameterEncoder proc);
73 virtual DtParameterEncoder encoder(RTI::ParameterHandle hand) ;
76 virtual void encode(
const DtInteractionRep& inter,
78 RTI::ParameterHandleValueMap &pvMap);
80 RTI::ParameterHandleValuePairSet* pvList);
84 virtual RTI::InteractionClassHandle interClassHandle();
87 virtual DtInteractionEncoder* clone()
const;
93 virtual DtInteractionEncoder* clone(DtInterClassDesc* interDesc)
const;
98 DtInterClassDesc* myClassDesc;
101 RTI::RTIambassador* myRtiAmb;
103 DtVrlRtiAmbassador* myRtiAmb;
106 RTI::InteractionClassHandle myHandle;
109 std::map<RTI::ParameterHandle, DtParameterEncoder> myList;
112 inline RTI::InteractionClassHandle DtInteractionEncoder::interClassHandle()
117 inline DtInteractionEncoder::DtParameterEncoder
118 DtInteractionEncoder::encoder(RTI::ParameterHandle hand)
123 #define DtADD_PARAM_ENCODER(attrName) \
124 addEncoder((char *)#attrName, (DtParameterEncoder) encode##attrName)
126 #define DtDECLARE_PARAM_ENCODER(interClass, paramName) \
127 static void encode##paramName(const interClass& inter, \
128 RTI::ParameterHandleValuePairSet* params, \
129 RTI::ParameterHandle paramHandle)
131 #define DtDEFINE_SIMPLE_PARAM_ENCODER(encClass, interClass, \
132 paramName, netType, \
134 void encClass::encode##paramName(const interClass& inter, \
135 RTI::ParameterHandleValuePairSet* params, \
136 RTI::ParameterHandle paramHandle) \
139 netVal = inter.inspector(); \
140 params->add(paramHandle, (char*) &netVal, sizeof(netType)); \
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) \
149 DtGlobalObjectDesignator netVal = inter.inspector(); \
150 params->add(paramHandle, (char*) netVal.string(), netVal.length()+1); \