VR-Link API Documentation for HLA 1.3
 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 MAK Technologies, Inc
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
DtInterClassDesc * myClassDesc
Definition: interactionEncoder.h:102
DtExerciseConn * myExConn
Definition: interactionEncoder.h:101
std::map< RTI::ParameterHandle, DtParameterEncoder > myList
myList is an array of classDesc-&gt;maxParamHandle() items.
Definition: interactionEncoder.h:113
Instances of DtExerciseConn are used to provide an application&#39;s interface or connection to the netwo...
Definition: exerciseConnHLA.h:61
#define DT_DLL_VL
Definition: vlMachineTypes.h:108
Instances of DtInterClassDesc are used to represent HLA Object and Interaction classes.
Definition: interClassDesc.h:33
DtInteractionEncoder is used to provide encoding of an interaction into an RTI::ParameterHandleValueP...
Definition: interactionEncoder.h:36
virtual DtParameterEncoder encoder(RTI::ParameterHandle hand)
Get the parameter encoder for the specified handle.
Definition: interactionEncoder.h:122
void(* DtParameterEncoder)(const DtInteractionRep &inter, RTI::ParameterHandleValuePairSet *avlist, RTI::ParameterHandle handle)
Attribute encoding function declaration.
Definition: interactionEncoder.h:55
virtual RTI::InteractionClassHandle interClassHandle()
Get the object&#39;s class handle.
Definition: interactionEncoder.h:116
This file provides a declaration of the class DtInteractionWithEncDec.
DtVrlRtiAmbassador * myRtiAmb
Definition: interactionEncoder.h:107
class DtInteractionWithEncDec:
Definition: interactionWithEncDec.h:44
DtVrlRtiAmbassador is a pure virtual class, designed to provide a foundation for different ways to se...
Definition: vrlRtiAmbassador13.h:25
RTI::InteractionClassHandle myHandle
Definition: interactionEncoder.h:110
This file contains typedefs for machine dependant types.

Document ID: Generated on Thu Sep 19 02:12:35 EDT 2024 from SVN revision 269601
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)