VR-Link API Documentation for HLA 1516
interEncoder.h
Go to the documentation of this file.
00001 /*********************************************************************
00002 ** Copyright (c) 1992-2010 VT MAK
00003 ** All rights reserved.
00004 *********************************************************************/
00005 
00006 
00009 
00010 #ifndef DtInteractionEncoder_H_
00011 #define DtInteractionEncoder_H_
00012 
00013 #if   DtHLA 
00014 
00015 
00016 #include <vlutil/vlMachineTypes.h>
00017 
00018 #include "rtiNamespace.h"
00019 #include "rtiCompatibility.h"
00020 #include <map>
00021 
00022 class DT_DLL_VL DtExerciseConn;
00023 class DT_DLL_VL DtInterClassDesc;
00024 class DT_DLL_VL DtVrlRtiAmbassador;
00025 
00030 class DT_DLL_VL DtInteractionRep;
00031 
00032 
00037 class DT_DLL_VL DtInteractionEncoder
00038 {
00039 public:
00040 
00042    DtInteractionEncoder(DtExerciseConn* exConn,
00043       DtInterClassDesc* classDesc);
00044 
00046    virtual ~DtInteractionEncoder();
00047 
00049    DtInteractionEncoder(const DtInteractionEncoder& orig);
00050 
00052    DtInteractionEncoder& operator=(const DtInteractionEncoder& orig);
00053 
00055    typedef void (*DtParameterEncoder)
00056       (const DtInteractionRep& inter,
00057        RTI::ParameterHandleValuePairSet* avlist,
00058        RTI::ParameterHandle handle);
00059 
00063    virtual DtParameterEncoder addEncoder(RTI::ParameterHandle hand,
00064       DtParameterEncoder func);
00065 
00069    virtual DtParameterEncoder addEncoder(char* name,
00070       DtParameterEncoder proc);
00071 
00073    virtual DtParameterEncoder encoder(RTI::ParameterHandle hand) ;
00074 
00076    virtual void encode(const DtInteractionRep& inter,
00077 #if DtHLA_1516
00078       RTI::ParameterHandleValueMap &pvMap);
00079 #else
00080       RTI::ParameterHandleValuePairSet* pvList);
00081 #endif
00082 
00084    virtual RTI::InteractionClassHandle interClassHandle();
00085 
00087    virtual DtInteractionEncoder* clone() const;
00088 
00093    virtual DtInteractionEncoder* clone(DtInterClassDesc* interDesc) const;
00094 
00095 protected:
00096 
00097    DtExerciseConn* myExConn;
00098    DtInterClassDesc* myClassDesc;
00099 
00100 #if DtHLA_1516
00101    RTI::RTIambassador* myRtiAmb;
00102 #else
00103    DtVrlRtiAmbassador* myRtiAmb;
00104 #endif
00105 
00106    RTI::InteractionClassHandle myHandle;
00107 
00109    std::map<RTI::ParameterHandle, DtParameterEncoder> myList;
00110 };
00111 
00112 inline RTI::InteractionClassHandle DtInteractionEncoder::interClassHandle()
00113 {
00114    return myHandle;
00115 }
00116 
00117 inline DtInteractionEncoder::DtParameterEncoder
00118    DtInteractionEncoder::encoder(RTI::ParameterHandle hand) 
00119 {
00120    return myList[hand];
00121 };
00122 
00123 #define DtADD_PARAM_ENCODER(attrName) \
00124    addEncoder((char *)#attrName, (DtParameterEncoder) encode##attrName)
00125 
00126 #define DtDECLARE_PARAM_ENCODER(interClass, paramName) \
00127    static void encode##paramName(const interClass& inter, \
00128       RTI::ParameterHandleValuePairSet* params, \
00129       RTI::ParameterHandle paramHandle) 
00130 
00131 #define DtDEFINE_SIMPLE_PARAM_ENCODER(encClass, interClass, \
00132                                       paramName, netType, \
00133                                       inspector) \
00134 void encClass::encode##paramName(const interClass& inter, \
00135    RTI::ParameterHandleValuePairSet* params, \
00136    RTI::ParameterHandle paramHandle) \
00137 { \
00138    netType netVal; \
00139    netVal = inter.inspector(); \
00140    params->add(paramHandle, (char*) &netVal, sizeof(netType)); \
00141 }
00142 
00143 #define DtDEFINE_SIMPLE_GLOBAL_OBJECT_DESIGNATOR_PARAM_ENCODER( \
00144    encClass, interClass, paramName, inspector) \
00145 void encClass::encode##paramName(const interClass& inter, \
00146    RTI::ParameterHandleValuePairSet* params, \
00147    RTI::ParameterHandle paramHandle) \
00148 { \
00149    DtGlobalObjectDesignator netVal = inter.inspector(); \
00150    params->add(paramHandle, (char*) netVal.string(), netVal.length()+1); \
00151 }
00152 
00153 
00154 #endif
00155 #endif
00156 

Document ID: Generated on Mon May 14 08:06:18 EDT 2012 from SVN revision 114750
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)