42 DtInterClassDesc* classDesc);
45 virtual ~DtInteractionEncoder();
48 DtInteractionEncoder(
const DtInteractionEncoder& orig);
51 DtInteractionEncoder& operator=(
const DtInteractionEncoder& orig);
54 typedef void (*DtParameterEncoder)
55 (
const DtInteractionRep& inter,
56 RTI::ParameterHandleValuePairSet* avlist,
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);
79 RTI::ParameterHandleValuePairSet* pvList);
83 virtual RTI::InteractionClassHandle interClassHandle();
86 virtual DtInteractionEncoder* clone()
const;
92 virtual DtInteractionEncoder* clone(DtInterClassDesc* interDesc)
const;
95 static void encodeGenericParameter(
const DtInteractionWithEncDec& inter,
96 RTI::ParameterHandleValuePairSet* avlist,
97 RTI::ParameterHandle handle);
102 DtInterClassDesc* myClassDesc;
105 RTI::RTIambassador* myRtiAmb;
107 DtVrlRtiAmbassador* myRtiAmb;
110 RTI::InteractionClassHandle myHandle;
113 std::map<RTI::ParameterHandle, DtParameterEncoder> myList;
116 inline RTI::InteractionClassHandle DtInteractionEncoder::interClassHandle()
121 inline DtInteractionEncoder::DtParameterEncoder
122 DtInteractionEncoder::encoder(RTI::ParameterHandle hand)
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); \