54 typedef void (*DtParameterEncoder)
55 (
const DtInteractionRep& inter,
57 RTI::ParameterHandle handle);
62 virtual DtParameterEncoder addEncoder(RTI::ParameterHandle hand,
63 DtParameterEncoder func);
68 virtual DtParameterEncoder addEncoder(
char* name,
69 DtParameterEncoder proc);
72 virtual DtParameterEncoder encoder(RTI::ParameterHandle hand) ;
75 virtual void encode(
const DtInteractionRep& inter,
77 RTI::ParameterHandleValueMap &pvMap);
83 virtual RTI::InteractionClassHandle interClassHandle();
97 RTI::ParameterHandle handle);
113 std::map<RTI::ParameterHandle, DtParameterEncoder>
myList;
127 #define DtADD_PARAM_ENCODER(attrName) \
128 addEncoder((char *)#attrName, (DtParameterEncoder) encode##attrName)
130 #define DtDECLARE_PARAM_ENCODER(interClass, paramName) \
131 static void encode##paramName(const interClass& inter, \
132 RTI::ParameterHandleValuePairSet* params, \
133 RTI::ParameterHandle paramHandle)
135 #define DtDEFINE_SIMPLE_PARAM_ENCODER(encClass, interClass, \
136 paramName, netType, \
138 void encClass::encode##paramName(const interClass& inter, \
139 RTI::ParameterHandleValuePairSet* params, \
140 RTI::ParameterHandle paramHandle) \
143 netVal = inter.inspector(); \
144 params->add(paramHandle, (char*) &netVal, sizeof(netType)); \
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) \
153 DtGlobalObjectDesignator netVal = inter.inspector(); \
154 params->add(paramHandle, (char*) netVal.string(), netVal.length()+1); \