8 #ifndef OPENDDS_DCPS_FILTER_EVALUATOR_H 9 #define OPENDDS_DCPS_FILTER_EVALUATOR_H 13 #ifndef OPENDDS_NO_CONTENT_SUBSCRIPTION_PROFILE 15 #include "dds/DdsDcpsInfrastructureC.h" 20 #include <dds/DdsDynamicDataC.h> 30 class TypeSupportImpl;
39 Value(
bool b,
bool conversion_preferred =
false);
40 Value(
int i,
bool conversion_preferred =
false);
41 Value(
unsigned int u,
bool conversion_preferred =
false);
42 Value(
ACE_INT64 l,
bool conversion_preferred =
false);
43 Value(
ACE_UINT64 m,
bool conversion_preferred =
false);
44 Value(
char c,
bool conversion_preferred =
false);
45 Value(
double f,
bool conversion_preferred =
false);
47 #ifdef NONNATIVE_LONGDOUBLE 48 Value(
long double ld,
bool conversion_preferred =
false);
50 Value(
const char* s,
bool conversion_preferred =
false);
51 Value(
const std::string& s,
bool conversion_preferred =
false);
53 Value(
const std::wstring& s,
bool conversion_preferred =
false);
59 Value(
const Value& v);
60 Value& operator=(
const Value& v);
61 void swap(Value& other);
65 bool like(
const Value& v)
const;
66 Value operator%(
const Value& v)
const;
68 enum Type {VAL_BOOL, VAL_INT,
VAL_UINT, VAL_I64, VAL_UI64, VAL_FLOAT,
70 VAL_CHAR, VAL_STRING};
72 static void conversion(Value& lhs, Value& rhs);
73 template<
typename T> T&
get();
74 template<
typename T>
const T&
get()
const;
104 bool hasFilter()
const;
138 : meta_(meta), params_(params) {}
140 virtual Value lookup(
const char* field)
const = 0;
158 :
DataForEval(meta, params), deserialized_(data) {}
160 Value lookup(
const char* field)
const;
167 Value lookup(
const char* field)
const;
190 virtual Value getValue(
const void* stru,
const char* fieldSpec)
const = 0;
199 #ifndef OPENDDS_NO_MULTI_TOPIC 200 virtual size_t numDcpsKeys()
const = 0;
202 virtual bool compare(
const void* lhs,
const void* rhs,
203 const char* fieldSpec)
const = 0;
205 virtual const char** getFieldNames()
const = 0;
207 virtual void assign(
void* lhs,
const char* lhsFieldSpec,
208 const void* rhs,
const char* rhsFieldSpec,
211 virtual const void* getRawField(
const void* stru,
212 const char* fieldSpec)
const = 0;
214 virtual void* allocate()
const = 0;
215 virtual void deallocate(
void* stru)
const = 0;
228 #endif // OPENDDS_NO_CONTENT_SUBSCRIPTION_PROFILE
keeps the details of yard out of the FilterEvaluator header file
void swap(MessageBlock &lhs, MessageBlock &rhs)
ComparatorBase::Ptr create_qc_comparator(const char *fieldSpec) const
ACE_Message_Block * serialized_
size_t number_parameters_
#define OpenDDS_Dcps_Export
const TypeSupportImpl & type_support_
bool operator==(const DisjointSequence::OrderedRanges< T > &a, const DisjointSequence::OrderedRanges< T > &b)
bool conversion_preferred_
Class to serialize and deserialize data for DDS.
size_t number_parameters() const
String_Manager_T< CORBA::Char > String_Manager
bool eval(ACE_Message_Block *serializedSample, Encoding encoding, const TypeSupportImpl &typeSupport, const DDS::StringSeq ¶ms) const
unsigned long long ACE_UINT64
const MetaStruct & getMetaStruct()
bool eval(const T &sample, const DDS::StringSeq ¶ms) const
#define OPENDDS_END_VERSIONED_NAMESPACE_DECL
String_Manager_T< CORBA::WChar > WString_Manager
const DDS::StringSeq & params_
void assign(EntityId_t &dest, const EntityId_t &src)
bool usesExtendedGrammar() const
typedef OPENDDS_VECTOR(ActionConnectionRecord) ConnectionRecords
DataForEval(const MetaStruct &meta, const DDS::StringSeq ¶ms)
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)
const void *const deserialized_
The Internal API and Implementation of OpenDDS.
typedef OPENDDS_MAP(OPENDDS_STRING, OPENDDS_STRING) ValueMap
Helper types and functions for config file parsing.
DeserializedForEval(const void *data, const MetaStruct &meta, const DDS::StringSeq ¶ms)
bool operator<(const GUID_t &lhs, const GUID_t &rhs)
sequence< string > StringSeq