23 #ifndef DtRtiTemplateMsgParams_H_
24 #define DtRtiTemplateMsgParams_H_
27 #include <vlutil/vlNetTypes.h>
28 #include <vlutil/vlPrint.h>
43 virtual void*
endPtr() = 0;
44 virtual const void*
endPtr()
const = 0;
60 virtual void print()
const = 0;
94 template<
typename ParamType,
typename NetParamType>
118 return static_cast<ParamType
>(*
paramPtr());
124 val =
static_cast<ParamType
>(*
paramPtr());
130 return (reinterpret_cast<char*>(
paramPtr()) +
sizeof(NetParamType));
135 return (reinterpret_cast<const char*>(
paramPtr()) +
sizeof(NetParamType));
139 unsigned minSize() {
return sizeof(NetParamType); }
148 MAKRti::DtVerbose <<
name() <<
": " <<
param() << std::endl;
159 assert(prevBoundary == 0 || (prevBoundary %
minSize()) == 0);
167 const NetParamType*
paramPtr()
const {
return reinterpret_cast<const NetParamType*
>(
beginPtr()); }
184 #define DtDECLARE_PARAMETER_METHODS(ParamName, ParamType) \
186 static const char* ParamName##Name; \
187 void set##ParamName(ParamType val); \
188 ParamType get##ParamName() const;
195 #define DtDECLARE_BY_REF_PARAMETER_METHODS(ParamName, ParamType) \
197 static const char* ParamName##Name; \
198 void set##ParamName(const ParamType& val); \
199 ParamType get##ParamName() const; \
200 void get##ParamName(ParamType& val) const;
206 #define DtDECLARE_UNSIGNED_PARAMETER_METHODS(ParamName, BitSize) \
207 DtDECLARE_PARAMETER_METHODS(ParamName, MAKRti::DtU##BitSize) \
209 typedef DtRtiMsgParam<MAKRti::DtU##BitSize, MAKRti::DtNetU##BitSize> ParamName##Type; \
210 ParamName##Type* my##ParamName;
216 #define DtDECLARE_BOOL_PARAMETER_METHODS(ParamName) \
217 DtDECLARE_PARAMETER_METHODS(ParamName, bool) \
219 typedef DtRtiMsgParam<MAKRti::DtU8, MAKRti::DtNetU8> ParamName##Type; \
220 ParamName##Type* my##ParamName;
226 #define DtDECLARE_INT_PARAMETER_METHODS(ParamName, BitSize) \
227 DtDECLARE_PARAMETER_METHODS(ParamName, MAKRti::DtInt##BitSize) \
229 typedef DtRtiMsgParam<MAKRti::DtInt##BitSize, MAKRti::DtNetInt##BitSize> ParamName##Type; \
230 ParamName##Type* my##ParamName;
237 #define DtDECLARE_ENUMERATION_PARAMETER_METHODS(ParamName, EnumType, BitSize) \
238 DtDECLARE_PARAMETER_METHODS(ParamName, EnumType) \
240 typedef DtRtiMsgParam<MAKRti::DtU##BitSize, MAKRti::DtNetU##BitSize> ParamName##Type; \
241 ParamName##Type* my##ParamName;
247 #define DtDECLARE_FLOAT_PARAMETER_METHODS(ParamName, BitSize) \
248 DtDECLARE_PARAMETER_METHODS(ParamName, MAKRti::DtFloat##BitSize) \
250 typedef DtRtiMsgParam<MAKRti::DtFloat##BitSize, MAKRti::DtNetFloat##BitSize> ParamName##Type; \
251 ParamName##Type* my##ParamName;
268 #define DtDEFINE_PARAMETER_METHODS(ClassName, ParamName, ParamType) \
269 const char* ClassName::ParamName##Name = #ParamName; \
270 void ClassName::set##ParamName(ParamType val) \
272 my##ParamName->setParam(val); \
274 ParamType ClassName::get##ParamName() const \
276 return static_cast<ParamType>(my##ParamName->param()); \
285 #define DtDEFINE_BY_REF_PARAMETER_METHODS(ClassName, ParamName, ParamType) \
286 const char* ClassName::ParamName##Name = #ParamName; \
287 void ClassName::set##ParamName(const ParamType& val) \
289 my##ParamName->setParamRef(val); \
291 ParamType ClassName::get##ParamName() const \
293 return my##ParamName->param(); \
295 void ClassName::get##ParamName(ParamType& val) const \
297 my##ParamName->getParam(val); \
305 #define DtDEFINE_UNSIGNED_PARAMETER_METHODS(ClassName, ParamName, BitSize) \
306 DtDEFINE_PARAMETER_METHODS(ClassName, ParamName, DtU##BitSize)
312 #define DtDEFINE_BOOL_PARAMETER_METHODS(ClassName, ParamName) \
313 DtDEFINE_PARAMETER_METHODS(ClassName, ParamName, bool)
320 #define DtDEFINE_INT_PARAMETER_METHODS(ClassName, ParamName, BitSize) \
321 DtDEFINE_PARAMETER_METHODS(ClassName, ParamName, DtInt##BitSize)
328 #define DtDEFINE_ENUMERATION_PARAMETER_METHODS(ClassName, ParamName, EnumType)\
329 DtDEFINE_PARAMETER_METHODS(ClassName, ParamName, EnumType)
336 #define DtDEFINE_FLOAT_PARAMETER_METHODS(ClassName, ParamName, BitSize) \
337 DtDEFINE_PARAMETER_METHODS(ClassName, ParamName, DtFloat##BitSize)
348 #define DtADD_PARAMETER(ParamName) \
349 addParameter(my##ParamName = new ParamName##Type(ParamName##Name));