OpenDDS  Snapshot(2023/04/07-19:43)
Public Member Functions | Static Public Member Functions | List of all members
OpenDDS::DCPS::MetaStructImpl< XTypes::DynamicSample > Struct Template Reference
Inheritance diagram for OpenDDS::DCPS::MetaStructImpl< XTypes::DynamicSample >:
Inheritance graph
[legend]
Collaboration diagram for OpenDDS::DCPS::MetaStructImpl< XTypes::DynamicSample >:
Collaboration graph
[legend]

Public Member Functions

Value getValue (const void *stru, DDS::MemberId memberId) const
 
Value getValue (const void *stru, const char *field) const
 
Value getValue (Serializer &strm, const char *field, const TypeSupportImpl *ts) const
 
ComparatorBase::Ptr create_qc_comparator (const char *field, ComparatorBase::Ptr next) const
 
void * allocate () const
 
void deallocate (void *) const
 
size_t numDcpsKeys () const
 
const char ** getFieldNames () const
 
const void * getRawField (const void *, const char *) const
 
void assign (void *, const char *, const void *, const char *, const MetaStruct &) const
 
bool compare (const void *, const void *, const char *) const
 
- Public Member Functions inherited from OpenDDS::DCPS::MetaStruct
virtual ~MetaStruct ()
 
ComparatorBase::Ptr create_qc_comparator (const char *fieldSpec) const
 

Static Public Member Functions

static Value getValueImpl (const DDS::DynamicData_var &dd, const char *field)
 

Detailed Description

template<>
struct OpenDDS::DCPS::MetaStructImpl< XTypes::DynamicSample >

Definition at line 46 of file DynamicTypeSupport.cpp.

Member Function Documentation

◆ allocate()

void* OpenDDS::DCPS::MetaStructImpl< XTypes::DynamicSample >::allocate ( void  ) const
inlinevirtual

Implements OpenDDS::DCPS::MetaStruct.

Definition at line 103 of file DynamicTypeSupport.cpp.

103 { return 0; }

◆ assign()

void OpenDDS::DCPS::MetaStructImpl< XTypes::DynamicSample >::assign ( void *  ,
const char *  ,
const void *  ,
const char *  ,
const MetaStruct  
) const
inlinevirtual

Implements OpenDDS::DCPS::MetaStruct.

Definition at line 113 of file DynamicTypeSupport.cpp.

113 {}

◆ compare()

bool OpenDDS::DCPS::MetaStructImpl< XTypes::DynamicSample >::compare ( const void *  ,
const void *  ,
const char *   
) const
inlinevirtual

Implements OpenDDS::DCPS::MetaStruct.

Definition at line 115 of file DynamicTypeSupport.cpp.

References OpenDDS_Dcps_Export.

115 { return false; }

◆ create_qc_comparator()

ComparatorBase::Ptr OpenDDS::DCPS::MetaStructImpl< XTypes::DynamicSample >::create_qc_comparator ( const char *  field,
ComparatorBase::Ptr  next 
) const
inlinevirtual

Implements OpenDDS::DCPS::MetaStruct.

Definition at line 95 of file DynamicTypeSupport.cpp.

References OpenDDS::DCPS::make_dynamic_cmp(), and OpenDDS::DCPS::make_nested_cmp().

96  {
97  const char* const dot = std::strchr(field, '.');
98  return dot ? make_nested_cmp(String(field, dot - field), make_dynamic_cmp(dot + 1), next)
99  : make_dynamic_cmp(field, next);
100  }
static ComparatorBase::Ptr make_nested_cmp(const std::string &field, ComparatorBase::Ptr inner, ComparatorBase::Ptr next)
std::string String
static ComparatorBase::Ptr make_dynamic_cmp(const std::string &field, ComparatorBase::Ptr next=ComparatorBase::Ptr())

◆ deallocate()

void OpenDDS::DCPS::MetaStructImpl< XTypes::DynamicSample >::deallocate ( void *  ) const
inlinevirtual

Implements OpenDDS::DCPS::MetaStruct.

Definition at line 105 of file DynamicTypeSupport.cpp.

105 {}

◆ getFieldNames()

const char** OpenDDS::DCPS::MetaStructImpl< XTypes::DynamicSample >::getFieldNames ( ) const
inlinevirtual

Implements OpenDDS::DCPS::MetaStruct.

Definition at line 109 of file DynamicTypeSupport.cpp.

109 { return 0; }

◆ getRawField()

const void* OpenDDS::DCPS::MetaStructImpl< XTypes::DynamicSample >::getRawField ( const void *  ,
const char *   
) const
inlinevirtual

Implements OpenDDS::DCPS::MetaStruct.

Definition at line 111 of file DynamicTypeSupport.cpp.

111 { return 0; }

◆ getValue() [1/3]

Value OpenDDS::DCPS::MetaStructImpl< XTypes::DynamicSample >::getValue ( const void *  stru,
DDS::MemberId  memberId 
) const
inlinevirtual

Implements OpenDDS::DCPS::MetaStruct.

Definition at line 48 of file DynamicTypeSupport.cpp.

References OpenDDS::XTypes::DynamicSample::dynamic_data(), and OpenDDS::XTypes::DynamicDataBase::get_simple_value().

49  {
50  const XTypes::DynamicSample& typed = *static_cast<const XTypes::DynamicSample*>(stru);
51  const DDS::DynamicData_var dd = typed.dynamic_data();
52  XTypes::DynamicDataBase* const ddb = dynamic_cast<XTypes::DynamicDataBase*>(dd.in());
53  Value v(0);
54  if (ddb) {
55  ddb->get_simple_value(v, memberId);
56  }
57  return v;
58  }

◆ getValue() [2/3]

Value OpenDDS::DCPS::MetaStructImpl< XTypes::DynamicSample >::getValue ( const void *  stru,
const char *  field 
) const
inlinevirtual

Implements OpenDDS::DCPS::MetaStruct.

Definition at line 60 of file DynamicTypeSupport.cpp.

References OpenDDS::XTypes::DynamicSample::dynamic_data().

61  {
62  const XTypes::DynamicSample& typed = *static_cast<const XTypes::DynamicSample*>(stru);
63  const DDS::DynamicData_var dd = typed.dynamic_data();
64  return getValueImpl(dd, field);
65  }
static Value getValueImpl(const DDS::DynamicData_var &dd, const char *field)

◆ getValue() [3/3]

Value OpenDDS::DCPS::MetaStructImpl< XTypes::DynamicSample >::getValue ( Serializer strm,
const char *  field,
const TypeSupportImpl ts 
) const
inlinevirtual

Implements OpenDDS::DCPS::MetaStruct.

Definition at line 67 of file DynamicTypeSupport.cpp.

References OpenDDS::DCPS::TypeSupportImpl::get_type().

68  {
69  DDS::DynamicType_var type = ts->get_type();
70  const DDS::DynamicData_var dd = new XTypes::DynamicDataXcdrReadImpl(strm, type);
71  return getValueImpl(dd, field);
72  }
virtual DDS::DynamicType_ptr get_type() const
static Value getValueImpl(const DDS::DynamicData_var &dd, const char *field)

◆ getValueImpl()

static Value OpenDDS::DCPS::MetaStructImpl< XTypes::DynamicSample >::getValueImpl ( const DDS::DynamicData_var &  dd,
const char *  field 
)
inlinestatic

Definition at line 74 of file DynamicTypeSupport.cpp.

References OpenDDS::XTypes::DynamicDataBase::get_simple_value(), and DDS::RETCODE_OK.

75  {
76  const char* const dot = std::strchr(field, '.');
77  if (dot) {
78  const String local(field, dot - field);
79  const DDS::MemberId id = dd->get_member_id_by_name(local.c_str());
80  DDS::DynamicData_var nested;
81  if (dd->get_complex_value(nested, id) != DDS::RETCODE_OK) {
82  return Value(0);
83  }
84  return getValueImpl(nested, dot + 1);
85  }
86  const DDS::MemberId id = dd->get_member_id_by_name(field);
87  XTypes::DynamicDataBase* const ddb = dynamic_cast<XTypes::DynamicDataBase*>(dd.in());
88  Value v(0);
89  if (ddb) {
90  ddb->get_simple_value(v, id);
91  }
92  return v;
93  }
ACE_CDR::ULong MemberId
Definition: TypeObject.h:910
const ReturnCode_t RETCODE_OK
std::string String
static Value getValueImpl(const DDS::DynamicData_var &dd, const char *field)

◆ numDcpsKeys()

size_t OpenDDS::DCPS::MetaStructImpl< XTypes::DynamicSample >::numDcpsKeys ( ) const
inlinevirtual

Implements OpenDDS::DCPS::MetaStruct.

Definition at line 107 of file DynamicTypeSupport.cpp.

107 { return 0; }

The documentation for this struct was generated from the following file: