6 #ifndef OPENDDS_DCPS_COMPARATOR_T_H 7 #define OPENDDS_DCPS_COMPARATOR_T_H 9 #include <ace/config-macros.h> 10 #ifndef ACE_LACKS_PRAGMA_ONCE 34 virtual bool less(
void* lhs,
void* rhs)
const = 0;
35 virtual bool equal(
void* lhs,
void* rhs)
const = 0;
37 bool compare(
void* lhs,
void* rhs)
const {
40 return less(lhs, rhs);
47 template <
class Sample,
class Field>
55 bool less(
void* lhs_void,
void* rhs_void)
const {
59 return lhs->*mp_ < rhs->*mp_;
62 bool equal(
void* lhs_void,
void* rhs_void)
const {
65 const Field& field_l = lhs->*mp_;
66 const Field& field_r = rhs->*mp_;
68 return !(field_l < field_r) && !(field_r < field_l);
75 template <
class Sample,
class Field>
79 return make_rch<FieldComparator<Sample, Field> >(mp, next);
90 template <
class Sample,
class Field>
98 , delegate_(delegate) {}
100 bool less(
void* lhs_void,
void* rhs_void)
const {
103 return delegate_->less(&(lhs->*mp_), &(rhs->*mp_));
106 bool equal(
void* lhs_void,
void* rhs_void)
const {
109 return delegate_->equal(&(lhs->*mp_), &(rhs->*mp_));
117 template <
class Sample,
class Field>
122 return make_rch<StructComparator<Sample, Field> >(mp, delegate, next);
Field Sample::* MemberPtr
FieldComparator(MemberPtr mp, ComparatorBase::Ptr next)
ComparatorBase::Ptr make_struct_cmp(Field Sample::*mp, ComparatorBase::Ptr delegate, ComparatorBase::Ptr next)
StructComparator(MemberPtr mp, ComparatorBase::Ptr delegate, ComparatorBase::Ptr next)
ComparatorBase::Ptr delegate_
virtual ~ComparatorBase()
bool equal(void *lhs_void, void *rhs_void) const
bool less(void *lhs_void, void *rhs_void) const
virtual bool equal(void *lhs, void *rhs) const =0
ComparatorBase::Ptr make_field_cmp(Field Sample::*mp, ComparatorBase::Ptr next)
bool compare(void *lhs, void *rhs) const
bool less(void *lhs_void, void *rhs_void) const
Field Sample::* MemberPtr
bool equal(void *lhs_void, void *rhs_void) const
#define OPENDDS_END_VERSIONED_NAMESPACE_DECL
RcHandle< ComparatorBase > Ptr
virtual bool less(void *lhs, void *rhs) const =0
The Internal API and Implementation of OpenDDS.