OpenDDS  Snapshot(2023/04/07-19:43)
Public Member Functions | Private Member Functions | Private Attributes | List of all members
OpenDDS::XTypes::AnnotationParameterValue Class Reference

#include <TypeObject.h>

Collaboration diagram for OpenDDS::XTypes::AnnotationParameterValue:
Collaboration graph
[legend]

Public Member Functions

 AnnotationParameterValue (ACE_CDR::Octet kind=TK_NONE)
 
 AnnotationParameterValue (const AnnotationParameterValue &other)
 
AnnotationParameterValueoperator= (const AnnotationParameterValue &other)
 
 ~AnnotationParameterValue ()
 
ACE_CDR::Octet kind () const
 
 OPENDDS_UNION_ACCESSORS (ACE_CDR::Boolean, boolean_value)
 
 OPENDDS_UNION_ACCESSORS (ACE_CDR::Octet, byte_value)
 
 OPENDDS_UNION_ACCESSORS (ACE_CDR::Char, int8_value)
 
 OPENDDS_UNION_ACCESSORS (ACE_CDR::Octet, uint8_value)
 
 OPENDDS_UNION_ACCESSORS (ACE_CDR::Short, int16_value)
 
 OPENDDS_UNION_ACCESSORS (ACE_CDR::UShort, uint16_value)
 
 OPENDDS_UNION_ACCESSORS (ACE_CDR::Long, int32_value)
 
 OPENDDS_UNION_ACCESSORS (ACE_CDR::ULong, uint32_value)
 
 OPENDDS_UNION_ACCESSORS (ACE_CDR::LongLong, int64_value)
 
 OPENDDS_UNION_ACCESSORS (ACE_CDR::ULongLong, uint64_value)
 
 OPENDDS_UNION_ACCESSORS (ACE_CDR::Float, float32_value)
 
 OPENDDS_UNION_ACCESSORS (ACE_CDR::Double, float64_value)
 
 OPENDDS_UNION_ACCESSORS (ACE_CDR::LongDouble, float128_value)
 
 OPENDDS_UNION_ACCESSORS (ACE_CDR::Char, char_value)
 
 OPENDDS_UNION_ACCESSORS (ACE_CDR::WChar, wchar_value)
 
 OPENDDS_UNION_ACCESSORS (ACE_CDR::Long, enumerated_value)
 
 OPENDDS_UNION_ACCESSORS (OPENDDS_STRING, string8_value)
 
 OPENDDS_UNION_ACCESSORS (OPENDDS_WSTRING, string16_value)
 
 OPENDDS_UNION_ACCESSORS (ExtendedAnnotationParameterValue, extended_value)
 
bool operator== (const AnnotationParameterValue &other) const
 
bool operator!= (const AnnotationParameterValue &other) const
 

Private Member Functions

void activate (const AnnotationParameterValue *other=0)
 
void reset ()
 

Private Attributes

ACE_CDR::Octet kind_
 
void * active_
 
union {
   ACE_CDR::LongDouble   max_alignment
 
}; 
 

Detailed Description

Definition at line 975 of file TypeObject.h.

Constructor & Destructor Documentation

◆ AnnotationParameterValue() [1/2]

OpenDDS::XTypes::AnnotationParameterValue::AnnotationParameterValue ( ACE_CDR::Octet  kind = TK_NONE)
explicit

Definition at line 275 of file TypeObject.cpp.

References activate().

276  : kind_(kind)
277  , active_(0)
278 {
279  activate();
280 }
void activate(const AnnotationParameterValue *other=0)
Definition: TypeObject.cpp:300

◆ AnnotationParameterValue() [2/2]

OpenDDS::XTypes::AnnotationParameterValue::AnnotationParameterValue ( const AnnotationParameterValue other)

Definition at line 282 of file TypeObject.cpp.

References activate().

283  : kind_(other.kind_)
284  , active_(0)
285 {
286  activate(&other);
287 }
void activate(const AnnotationParameterValue *other=0)
Definition: TypeObject.cpp:300

◆ ~AnnotationParameterValue()

OpenDDS::XTypes::AnnotationParameterValue::~AnnotationParameterValue ( )
inline

Definition at line 981 of file TypeObject.h.

Member Function Documentation

◆ activate()

void OpenDDS::XTypes::AnnotationParameterValue::activate ( const AnnotationParameterValue other = 0)
private

Definition at line 300 of file TypeObject.cpp.

References OpenDDS::DCPS::char_value(), kind_, OPENDDS_BRANCH_ACTIVATE, OPENDDS_STRING, OPENDDS_WSTRING, OpenDDS::XTypes::TK_BOOLEAN, OpenDDS::XTypes::TK_BYTE, OpenDDS::XTypes::TK_CHAR16, OpenDDS::XTypes::TK_CHAR8, OpenDDS::XTypes::TK_ENUM, OpenDDS::XTypes::TK_FLOAT128, OpenDDS::XTypes::TK_FLOAT32, OpenDDS::XTypes::TK_FLOAT64, OpenDDS::XTypes::TK_INT16, OpenDDS::XTypes::TK_INT32, OpenDDS::XTypes::TK_INT64, OpenDDS::XTypes::TK_INT8, OpenDDS::XTypes::TK_NONE, OpenDDS::XTypes::TK_STRING16, OpenDDS::XTypes::TK_STRING8, OpenDDS::XTypes::TK_UINT16, OpenDDS::XTypes::TK_UINT32, OpenDDS::XTypes::TK_UINT64, and OpenDDS::XTypes::TK_UINT8.

Referenced by AnnotationParameterValue(), and operator=().

301 {
302 #define OPENDDS_BRANCH_ACTIVATE(T, N) \
303  active_ = new(N ## _) T(); \
304  if (other) N() = other->N(); \
305  break
306 
307  switch (kind_) {
308  case TK_NONE:
309  break; // no-op, no member selected
310  case TK_BOOLEAN:
312  case TK_BYTE:
314  case TK_INT8:
316  case TK_UINT8:
318  case TK_INT16:
320  case TK_UINT16:
322  case TK_INT32:
324  case TK_UINT32:
326  case TK_INT64:
328  case TK_UINT64:
330  case TK_FLOAT32:
331  OPENDDS_BRANCH_ACTIVATE(ACE_CDR::Float, float32_value);
332  case TK_FLOAT64:
334  case TK_FLOAT128:
336  case TK_CHAR8:
338  case TK_CHAR16:
340  case TK_ENUM:
341  OPENDDS_BRANCH_ACTIVATE(ACE_CDR::Long, enumerated_value);
342  case TK_STRING8:
343  OPENDDS_BRANCH_ACTIVATE(OPENDDS_STRING, string8_value);
344  case TK_STRING16:
345  OPENDDS_BRANCH_ACTIVATE(OPENDDS_WSTRING, string16_value);
346  default:
347  OPENDDS_BRANCH_ACTIVATE(ExtendedAnnotationParameterValue, extended_value);
348  }
349 }
ACE_Byte Octet
const TypeKind TK_INT8
Definition: TypeObject.h:225
ACE_INT64 LongLong
const TypeKind TK_FLOAT128
Definition: TypeObject.h:224
const TypeKind TK_CHAR16
Definition: TypeObject.h:228
unsigned char_value(CharType value)
Definition: ValueHelper.h:58
ACE_UINT64 ULongLong
const TypeKind TK_INT32
Definition: TypeObject.h:217
const TypeKind TK_CHAR8
Definition: TypeObject.h:227
const TypeKind TK_STRING16
Definition: TypeObject.h:232
const TypeKind TK_NONE
Definition: TypeObject.h:213
const TypeKind TK_UINT16
Definition: TypeObject.h:219
#define OPENDDS_STRING
ACE_INT16 Short
const TypeKind TK_INT64
Definition: TypeObject.h:218
char Char
const TypeKind TK_UINT8
Definition: TypeObject.h:226
const TypeKind TK_FLOAT32
Definition: TypeObject.h:222
ACE_UINT16 UShort
const TypeKind TK_BOOLEAN
Definition: TypeObject.h:214
const TypeKind TK_INT16
Definition: TypeObject.h:216
const TypeKind TK_FLOAT64
Definition: TypeObject.h:223
const TypeKind TK_STRING8
Definition: TypeObject.h:231
ACE_UINT32 ULong
#define OPENDDS_BRANCH_ACTIVATE(T, N)
const TypeKind TK_ENUM
Definition: TypeObject.h:238
ACE_INT32 Long
const TypeKind TK_UINT32
Definition: TypeObject.h:220
const TypeKind TK_BYTE
Definition: TypeObject.h:215
const TypeKind TK_UINT64
Definition: TypeObject.h:221
#define OPENDDS_WSTRING
ACE_WCHAR_T WChar
bool Boolean

◆ kind()

ACE_CDR::Octet OpenDDS::XTypes::AnnotationParameterValue::kind ( void  ) const
inline

◆ OPENDDS_UNION_ACCESSORS() [1/19]

OpenDDS::XTypes::AnnotationParameterValue::OPENDDS_UNION_ACCESSORS ( ACE_CDR::Boolean  ,
boolean_value   
)

◆ OPENDDS_UNION_ACCESSORS() [2/19]

OpenDDS::XTypes::AnnotationParameterValue::OPENDDS_UNION_ACCESSORS ( ACE_CDR::Octet  ,
byte_value   
)

◆ OPENDDS_UNION_ACCESSORS() [3/19]

OpenDDS::XTypes::AnnotationParameterValue::OPENDDS_UNION_ACCESSORS ( ACE_CDR::Char  ,
int8_value   
)

◆ OPENDDS_UNION_ACCESSORS() [4/19]

OpenDDS::XTypes::AnnotationParameterValue::OPENDDS_UNION_ACCESSORS ( ACE_CDR::Octet  ,
uint8_value   
)

◆ OPENDDS_UNION_ACCESSORS() [5/19]

OpenDDS::XTypes::AnnotationParameterValue::OPENDDS_UNION_ACCESSORS ( ACE_CDR::Short  ,
int16_value   
)

◆ OPENDDS_UNION_ACCESSORS() [6/19]

OpenDDS::XTypes::AnnotationParameterValue::OPENDDS_UNION_ACCESSORS ( ACE_CDR::UShort  ,
uint16_value   
)

◆ OPENDDS_UNION_ACCESSORS() [7/19]

OpenDDS::XTypes::AnnotationParameterValue::OPENDDS_UNION_ACCESSORS ( ACE_CDR::Long  ,
int32_value   
)

◆ OPENDDS_UNION_ACCESSORS() [8/19]

OpenDDS::XTypes::AnnotationParameterValue::OPENDDS_UNION_ACCESSORS ( ACE_CDR::ULong  ,
uint32_value   
)

◆ OPENDDS_UNION_ACCESSORS() [9/19]

OpenDDS::XTypes::AnnotationParameterValue::OPENDDS_UNION_ACCESSORS ( ACE_CDR::LongLong  ,
int64_value   
)

◆ OPENDDS_UNION_ACCESSORS() [10/19]

OpenDDS::XTypes::AnnotationParameterValue::OPENDDS_UNION_ACCESSORS ( ACE_CDR::ULongLong  ,
uint64_value   
)

◆ OPENDDS_UNION_ACCESSORS() [11/19]

OpenDDS::XTypes::AnnotationParameterValue::OPENDDS_UNION_ACCESSORS ( ACE_CDR::Float  ,
float32_value   
)

◆ OPENDDS_UNION_ACCESSORS() [12/19]

OpenDDS::XTypes::AnnotationParameterValue::OPENDDS_UNION_ACCESSORS ( ACE_CDR::Double  ,
float64_value   
)

◆ OPENDDS_UNION_ACCESSORS() [13/19]

OpenDDS::XTypes::AnnotationParameterValue::OPENDDS_UNION_ACCESSORS ( ACE_CDR::LongDouble  ,
float128_value   
)

◆ OPENDDS_UNION_ACCESSORS() [14/19]

OpenDDS::XTypes::AnnotationParameterValue::OPENDDS_UNION_ACCESSORS ( ACE_CDR::Char  ,
char_value   
)

◆ OPENDDS_UNION_ACCESSORS() [15/19]

OpenDDS::XTypes::AnnotationParameterValue::OPENDDS_UNION_ACCESSORS ( ACE_CDR::WChar  ,
wchar_value   
)

◆ OPENDDS_UNION_ACCESSORS() [16/19]

OpenDDS::XTypes::AnnotationParameterValue::OPENDDS_UNION_ACCESSORS ( ACE_CDR::Long  ,
enumerated_value   
)

◆ OPENDDS_UNION_ACCESSORS() [17/19]

OpenDDS::XTypes::AnnotationParameterValue::OPENDDS_UNION_ACCESSORS ( OPENDDS_STRING  ,
string8_value   
)

◆ OPENDDS_UNION_ACCESSORS() [18/19]

OpenDDS::XTypes::AnnotationParameterValue::OPENDDS_UNION_ACCESSORS ( OPENDDS_WSTRING  ,
string16_value   
)

◆ OPENDDS_UNION_ACCESSORS() [19/19]

OpenDDS::XTypes::AnnotationParameterValue::OPENDDS_UNION_ACCESSORS ( ExtendedAnnotationParameterValue  ,
extended_value   
)

◆ operator!=()

bool OpenDDS::XTypes::AnnotationParameterValue::operator!= ( const AnnotationParameterValue other) const
inline

Definition at line 1057 of file TypeObject.h.

1058  {
1059  return !(*this == other);
1060  }

◆ operator=()

AnnotationParameterValue & OpenDDS::XTypes::AnnotationParameterValue::operator= ( const AnnotationParameterValue other)

Definition at line 289 of file TypeObject.cpp.

References activate(), kind_, and reset().

290 {
291  if (&other == this) {
292  return *this;
293  }
294  reset();
295  kind_ = other.kind_;
296  activate(&other);
297  return *this;
298 }
void activate(const AnnotationParameterValue *other=0)
Definition: TypeObject.cpp:300

◆ operator==()

bool OpenDDS::XTypes::AnnotationParameterValue::operator== ( const AnnotationParameterValue other) const
inline

Definition at line 1009 of file TypeObject.h.

References OpenDDS::DCPS::char_value(), kind_, OpenDDS::XTypes::TK_BOOLEAN, OpenDDS::XTypes::TK_BYTE, OpenDDS::XTypes::TK_CHAR16, OpenDDS::XTypes::TK_CHAR8, OpenDDS::XTypes::TK_ENUM, OpenDDS::XTypes::TK_FLOAT128, OpenDDS::XTypes::TK_FLOAT32, OpenDDS::XTypes::TK_FLOAT64, OpenDDS::XTypes::TK_INT16, OpenDDS::XTypes::TK_INT32, OpenDDS::XTypes::TK_INT64, OpenDDS::XTypes::TK_INT8, OpenDDS::XTypes::TK_NONE, OpenDDS::XTypes::TK_STRING16, OpenDDS::XTypes::TK_STRING8, OpenDDS::XTypes::TK_UINT16, OpenDDS::XTypes::TK_UINT32, OpenDDS::XTypes::TK_UINT64, and OpenDDS::XTypes::TK_UINT8.

1010  {
1011  if (kind_ != other.kind_) return false;
1012 
1013  switch (kind_) {
1014  case TK_NONE:
1015  return true;
1016  case TK_BOOLEAN:
1017  return boolean_value() == other.boolean_value();
1018  case TK_BYTE:
1019  return byte_value() == other.byte_value();
1020  case TK_INT8:
1021  return int8_value() == other.int8_value();
1022  case TK_UINT8:
1023  return uint8_value() == other.uint8_value();
1024  case TK_INT16:
1025  return int16_value() == other.int16_value();
1026  case TK_UINT16:
1027  return uint16_value() == other.uint16_value();
1028  case TK_INT32:
1029  return int32_value() == other.int32_value();
1030  case TK_UINT32:
1031  return uint32_value() == other.uint32_value();
1032  case TK_INT64:
1033  return int64_value() == other.int64_value();
1034  case TK_UINT64:
1035  return uint64_value() == other.uint64_value();
1036  case TK_FLOAT32:
1037  return float32_value() == other.float32_value();
1038  case TK_FLOAT64:
1039  return float64_value() == other.float64_value();
1040  case TK_FLOAT128:
1041  return float128_value() == other.float128_value();
1042  case TK_CHAR8:
1043  return char_value() == other.char_value();
1044  case TK_CHAR16:
1045  return wchar_value() == other.wchar_value();
1046  case TK_ENUM:
1047  return enumerated_value() == other.enumerated_value();
1048  case TK_STRING8:
1049  return string8_value() == other.string8_value();
1050  case TK_STRING16:
1051  return string16_value() == other.string16_value();
1052  default:
1053  return extended_value() == other.extended_value();
1054  }
1055  }
const TypeKind TK_INT8
Definition: TypeObject.h:225
const TypeKind TK_FLOAT128
Definition: TypeObject.h:224
const TypeKind TK_CHAR16
Definition: TypeObject.h:228
unsigned char_value(CharType value)
Definition: ValueHelper.h:58
const TypeKind TK_INT32
Definition: TypeObject.h:217
const TypeKind TK_CHAR8
Definition: TypeObject.h:227
const TypeKind TK_STRING16
Definition: TypeObject.h:232
const TypeKind TK_NONE
Definition: TypeObject.h:213
const TypeKind TK_UINT16
Definition: TypeObject.h:219
const TypeKind TK_INT64
Definition: TypeObject.h:218
const TypeKind TK_UINT8
Definition: TypeObject.h:226
const TypeKind TK_FLOAT32
Definition: TypeObject.h:222
const TypeKind TK_BOOLEAN
Definition: TypeObject.h:214
const TypeKind TK_INT16
Definition: TypeObject.h:216
const TypeKind TK_FLOAT64
Definition: TypeObject.h:223
const TypeKind TK_STRING8
Definition: TypeObject.h:231
const TypeKind TK_ENUM
Definition: TypeObject.h:238
const TypeKind TK_UINT32
Definition: TypeObject.h:220
const TypeKind TK_BYTE
Definition: TypeObject.h:215
const TypeKind TK_UINT64
Definition: TypeObject.h:221

◆ reset()

void OpenDDS::XTypes::AnnotationParameterValue::reset ( void  )
private

Definition at line 351 of file TypeObject.cpp.

References active_, kind_, OPENDDS_BRANCH_RESET, OpenDDS::XTypes::TK_BOOLEAN, OpenDDS::XTypes::TK_BYTE, OpenDDS::XTypes::TK_CHAR16, OpenDDS::XTypes::TK_CHAR8, OpenDDS::XTypes::TK_ENUM, OpenDDS::XTypes::TK_FLOAT128, OpenDDS::XTypes::TK_FLOAT32, OpenDDS::XTypes::TK_FLOAT64, OpenDDS::XTypes::TK_INT16, OpenDDS::XTypes::TK_INT32, OpenDDS::XTypes::TK_INT64, OpenDDS::XTypes::TK_INT8, OpenDDS::XTypes::TK_NONE, OpenDDS::XTypes::TK_STRING16, OpenDDS::XTypes::TK_STRING8, OpenDDS::XTypes::TK_UINT16, OpenDDS::XTypes::TK_UINT32, OpenDDS::XTypes::TK_UINT64, and OpenDDS::XTypes::TK_UINT8.

Referenced by operator=().

352 {
353  using DCPS::String;
354  using DCPS::WString;
355 
356  if (!active_) {
357  return;
358  }
359  #define OPENDDS_BRANCH_RESET(T) static_cast<T*>(active_)->~T(); break
360  switch (kind_) {
361  case TK_NONE:
362  break; // no-op, no member selected
363  case TK_BOOLEAN:
364  case TK_BYTE:
365  case TK_INT8:
366  case TK_UINT8:
367  case TK_INT16:
368  case TK_UINT16:
369  case TK_INT32:
370  case TK_UINT32:
371  case TK_INT64:
372  case TK_UINT64:
373  case TK_FLOAT32:
374  case TK_FLOAT64:
375  case TK_FLOAT128:
376  case TK_CHAR8:
377  case TK_CHAR16:
378  case TK_ENUM:
379  break; // primitive type, no destructor.
380  case TK_STRING8:
382  case TK_STRING16:
384  default:
385  OPENDDS_BRANCH_RESET(ExtendedAnnotationParameterValue);
386  }
387 }
const TypeKind TK_INT8
Definition: TypeObject.h:225
const TypeKind TK_FLOAT128
Definition: TypeObject.h:224
const TypeKind TK_CHAR16
Definition: TypeObject.h:228
const TypeKind TK_INT32
Definition: TypeObject.h:217
const TypeKind TK_CHAR8
Definition: TypeObject.h:227
const TypeKind TK_STRING16
Definition: TypeObject.h:232
std::wstring WString
const TypeKind TK_NONE
Definition: TypeObject.h:213
#define OPENDDS_BRANCH_RESET(T)
const TypeKind TK_UINT16
Definition: TypeObject.h:219
const TypeKind TK_INT64
Definition: TypeObject.h:218
const TypeKind TK_UINT8
Definition: TypeObject.h:226
const TypeKind TK_FLOAT32
Definition: TypeObject.h:222
const TypeKind TK_BOOLEAN
Definition: TypeObject.h:214
const TypeKind TK_INT16
Definition: TypeObject.h:216
const TypeKind TK_FLOAT64
Definition: TypeObject.h:223
const TypeKind TK_STRING8
Definition: TypeObject.h:231
const TypeKind TK_ENUM
Definition: TypeObject.h:238
const TypeKind TK_UINT32
Definition: TypeObject.h:220
const TypeKind TK_BYTE
Definition: TypeObject.h:215
const TypeKind TK_UINT64
Definition: TypeObject.h:221
std::string String

Member Data Documentation

◆ @27

union { ... }

◆ active_

void* OpenDDS::XTypes::AnnotationParameterValue::active_
private

Definition at line 1064 of file TypeObject.h.

Referenced by reset().

◆ kind_

ACE_CDR::Octet OpenDDS::XTypes::AnnotationParameterValue::kind_
private

Definition at line 1063 of file TypeObject.h.

Referenced by activate(), operator=(), operator==(), and reset().

◆ max_alignment

ACE_CDR::LongDouble OpenDDS::XTypes::AnnotationParameterValue::max_alignment

Definition at line 1066 of file TypeObject.h.


The documentation for this class was generated from the following files: