OpenDDS  Snapshot(2023/04/07-19:43)
Public Member Functions | Public Attributes | List of all members
OpenDDS::DCPS::NestedComparator Struct Reference

Dynamic version of StructComparator in Comparator_T.h. More...

Inheritance diagram for OpenDDS::DCPS::NestedComparator:
Inheritance graph
[legend]
Collaboration diagram for OpenDDS::DCPS::NestedComparator:
Collaboration graph
[legend]

Public Member Functions

 NestedComparator (const std::string &field, Ptr inner, Ptr next)
 
XTypes::DynamicSample get_nested (void *outer) const
 
bool less (void *lhs, void *rhs) const
 
bool equal (void *lhs, void *rhs) const
 
- Public Member Functions inherited from OpenDDS::DCPS::ComparatorBase
 ComparatorBase ()
 
 ComparatorBase (Ptr next)
 
virtual ~ComparatorBase ()
 
bool compare (void *lhs, void *rhs) const
 
- Public Member Functions inherited from OpenDDS::DCPS::RcObject
virtual ~RcObject ()
 
virtual void _add_ref ()
 
virtual void _remove_ref ()
 
long ref_count () const
 
WeakObject_get_weak_object () const
 

Public Attributes

const std::string field_
 
const Ptr inner_
 

Additional Inherited Members

- Public Types inherited from OpenDDS::DCPS::ComparatorBase
typedef RcHandle< ComparatorBasePtr
 
- Protected Member Functions inherited from OpenDDS::DCPS::RcObject
 RcObject ()
 

Detailed Description

Dynamic version of StructComparator in Comparator_T.h.

Definition at line 166 of file DynamicTypeSupport.cpp.

Constructor & Destructor Documentation

◆ NestedComparator()

OpenDDS::DCPS::NestedComparator::NestedComparator ( const std::string &  field,
Ptr  inner,
Ptr  next 
)
inline

Definition at line 167 of file DynamicTypeSupport.cpp.

168  : ComparatorBase(next)
169  , field_(field)
170  , inner_(inner)
171  {}

Member Function Documentation

◆ equal()

bool OpenDDS::DCPS::NestedComparator::equal ( void *  lhs,
void *  rhs 
) const
inlinevirtual

Implements OpenDDS::DCPS::ComparatorBase.

Definition at line 191 of file DynamicTypeSupport.cpp.

192  {
193  XTypes::DynamicSample left(get_nested(lhs)), right(get_nested(rhs));
194  return inner_->equal(&left, &right);
195  }
XTypes::DynamicSample get_nested(void *outer) const
virtual bool equal(void *lhs, void *rhs) const =0

◆ get_nested()

XTypes::DynamicSample OpenDDS::DCPS::NestedComparator::get_nested ( void *  outer) const
inline

Definition at line 173 of file DynamicTypeSupport.cpp.

References OpenDDS::XTypes::DynamicSample::dynamic_data(), field_, and DDS::RETCODE_OK.

174  {
175  const XTypes::DynamicSample& outer_typed = *static_cast<XTypes::DynamicSample*>(outer);
176  const DDS::DynamicData_var outer_dd = outer_typed.dynamic_data();
177  DDS::DynamicData_var inner_dd;
178  const DDS::MemberId id = outer_dd->get_member_id_by_name(field_.c_str());
179  if (outer_dd->get_complex_value(inner_dd, id) != DDS::RETCODE_OK) {
180  return XTypes::DynamicSample();
181  }
182  return XTypes::DynamicSample(inner_dd);
183  }
ACE_CDR::ULong MemberId
Definition: TypeObject.h:910
const ReturnCode_t RETCODE_OK

◆ less()

bool OpenDDS::DCPS::NestedComparator::less ( void *  lhs,
void *  rhs 
) const
inlinevirtual

Implements OpenDDS::DCPS::ComparatorBase.

Definition at line 185 of file DynamicTypeSupport.cpp.

186  {
187  XTypes::DynamicSample left(get_nested(lhs)), right(get_nested(rhs));
188  return inner_->less(&left, &right);
189  }
XTypes::DynamicSample get_nested(void *outer) const
virtual bool less(void *lhs, void *rhs) const =0

Member Data Documentation

◆ field_

const std::string OpenDDS::DCPS::NestedComparator::field_

Definition at line 197 of file DynamicTypeSupport.cpp.

◆ inner_

const Ptr OpenDDS::DCPS::NestedComparator::inner_

Definition at line 198 of file DynamicTypeSupport.cpp.


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