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

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

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

Public Member Functions

 DynamicComparator (const std::string &field, Ptr next)
 
int cmp (void *lhs, void *rhs) 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_
 

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 FieldComparator in Comparator_T.h.

Definition at line 128 of file DynamicTypeSupport.cpp.

Constructor & Destructor Documentation

◆ DynamicComparator()

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

Definition at line 129 of file DynamicTypeSupport.cpp.

130  : ComparatorBase(next)
131  , field_(field)
132  {}

Member Function Documentation

◆ cmp()

int OpenDDS::DCPS::DynamicComparator::cmp ( void *  lhs,
void *  rhs 
) const
inline

Definition at line 134 of file DynamicTypeSupport.cpp.

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

135  {
136  const XTypes::DynamicSample& left = *static_cast<XTypes::DynamicSample*>(lhs);
137  const XTypes::DynamicSample& right = *static_cast<XTypes::DynamicSample*>(rhs);
138  const DDS::DynamicData_var l(left.dynamic_data()), r(right.dynamic_data());
139  const DDS::MemberId id = l->get_member_id_by_name(field_.c_str());
140  int result;
141  if (XTypes::compare_members(result, l, r, id) != DDS::RETCODE_OK) {
142  return 1; // warning already logged
143  }
144  return result;
145  }
ACE_CDR::ULong MemberId
Definition: TypeObject.h:910
const ReturnCode_t RETCODE_OK
DDS::ReturnCode_t compare_members(int &result, DDS::DynamicData_ptr a, DDS::DynamicData_ptr b, DDS::MemberId id)

◆ equal()

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

Implements OpenDDS::DCPS::ComparatorBase.

Definition at line 152 of file DynamicTypeSupport.cpp.

153  {
154  return cmp(lhs, rhs) == 0;
155  }
int cmp(void *lhs, void *rhs) const

◆ less()

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

Implements OpenDDS::DCPS::ComparatorBase.

Definition at line 147 of file DynamicTypeSupport.cpp.

148  {
149  return cmp(lhs, rhs) < 0;
150  }
int cmp(void *lhs, void *rhs) const

Member Data Documentation

◆ field_

const std::string OpenDDS::DCPS::DynamicComparator::field_

Definition at line 157 of file DynamicTypeSupport.cpp.


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