#include <FilterEvaluator.h>
Definition at line 90 of file FilterEvaluator.h.
 
◆ FilterEvaluator() [1/3]
      
        
          | OpenDDS::DCPS::FilterEvaluator::FilterEvaluator  | 
          ( | 
          const char *  | 
          filter,  | 
        
        
           | 
           | 
          bool  | 
          allowOrderBy  | 
        
        
           | 
          ) | 
           |  | 
        
      
 
Definition at line 42 of file FilterEvaluator.cpp.
References filter_root_, OpenDDS::DCPS::reportErrors(), OpenDDS::DCPS::toString(), and walkAst().
   47   const char* out = filter + std::strlen(filter);
    48   yard::SimpleTextParser parser(filter, out);
    54   bool found_order_by = 
false;
    55   for (
AstNode* iter = parser.GetAstRoot()->GetFirstChild(); iter;
    56       iter = iter->GetSibling()) {
    57     if (iter->TypeMatches<
ORDERBY>()) {
    58       found_order_by = 
true;
    59     } 
else if (found_order_by && iter->TypeMatches<
FieldName>()) {
    60       order_bys_.push_back(
toString(iter));
 
yard::TreeBuildingParser< char >::Node AstNode
 
OPENDDS_STRING toString(yard::TreeBuildingParser< char >::Node *iter)
 
EvalNode * walkAst(const AstNodeWrapper &node)
 
size_t number_parameters_
 
void reportErrors(yard::SimpleTextParser &parser, const char *input)
called after parsing has failed, throws std::exception with details 
 
 
 
 
◆ FilterEvaluator() [2/3]
  
  
      
        
          | OpenDDS::DCPS::FilterEvaluator::FilterEvaluator  | 
          ( | 
          const AstNodeWrapper &  | 
          yardNode | ) | 
           | 
         
       
   | 
  
explicit   | 
  
 
Definition at line 67 of file FilterEvaluator.cpp.
EvalNode * walkAst(const AstNodeWrapper &node)
 
size_t number_parameters_
 
 
 
 
◆ ~FilterEvaluator()
      
        
          | OpenDDS::DCPS::FilterEvaluator::~FilterEvaluator  | 
          ( | 
           | ) | 
           | 
        
      
 
 
◆ FilterEvaluator() [3/3]
  
  
      
        
          | OpenDDS::DCPS::FilterEvaluator::FilterEvaluator  | 
          ( | 
          const FilterEvaluator &  | 
           | ) | 
           | 
         
       
   | 
  
private   | 
  
 
 
◆ eval() [1/2]
template<typename T > 
  
  
      
        
          | bool OpenDDS::DCPS::FilterEvaluator::eval  | 
          ( | 
          const T &  | 
          sample,  | 
         
        
           | 
           | 
          const DDS::StringSeq &  | 
          params  | 
         
        
           | 
          ) | 
           |  const | 
         
       
   | 
  
inline   | 
  
 
 
◆ eval() [2/2]
Returns true if the serialized sample matches the filter. 
Definition at line 124 of file FilterEvaluator.h.
  128     SerializedForEval data(serializedSample, meta, params,
   129                            swap_bytes, cdr_encap, exten);
 bool eval_i(DataForEval &data) const
 
 
 
 
◆ eval_i()
  
  
      
        
          | bool OpenDDS::DCPS::FilterEvaluator::eval_i  | 
          ( | 
          DataForEval &  | 
          data | ) | 
           const | 
         
       
   | 
  
private   | 
  
 
 
◆ has_non_key_fields()
      
        
          | bool OpenDDS::DCPS::FilterEvaluator::has_non_key_fields  | 
          ( | 
          const MetaStruct &  | 
          meta | ) | 
           const | 
        
      
 
 
◆ hasFilter()
      
        
          | bool OpenDDS::DCPS::FilterEvaluator::hasFilter  | 
          ( | 
           | ) | 
           const | 
        
      
 
 
◆ number_parameters()
  
  
      
        
          | size_t OpenDDS::DCPS::FilterEvaluator::number_parameters  | 
          ( | 
           | ) | 
           const | 
         
       
   | 
  
inline   | 
  
 
 
◆ OPENDDS_VECTOR() [1/2]
      
        
          | OpenDDS::DCPS::FilterEvaluator::OPENDDS_VECTOR  | 
          ( | 
          OPENDDS_STRING  | 
           | ) | 
           const | 
        
      
 
 
◆ OPENDDS_VECTOR() [2/2]
◆ operator=()
◆ usesExtendedGrammar()
  
  
      
        
          | bool OpenDDS::DCPS::FilterEvaluator::usesExtendedGrammar  | 
          ( | 
           | ) | 
           const | 
         
       
   | 
  
inline   | 
  
 
 
◆ walkAst()
Definition at line 480 of file FilterEvaluator.cpp.
References OpenDDS::DCPS::arity(), OpenDDS::DCPS::child(), extended_grammar_, OpenDDS::DCPS::FilterEvaluator::Operand::isParameter(), OPENDDS_ASSERT, and walkOperand().
Referenced by FilterEvaluator().
  484     const FilterEvaluator::AstNodeWrapper& op = 
child(node, 1);
   486     if (left->isParameter() && right->isParameter()) {
   489     return new Comparison(op, left, right);
   492     const FilterEvaluator::AstNodeWrapper& op = 
child(node, 1);
   495     return new Between(field, op, low, high);
   496   } 
else if (node->TypeMatches<
CondDef>() || node->TypeMatches<
Cond>()) {
   497     size_t a = 
arity(node);
   505       const FilterEvaluator::AstNodeWrapper& op = 
child(node, 1);
   507       return new Logical(op, left, right);
 
#define OPENDDS_ASSERT(C)
 
EvalNode * walkAst(const AstNodeWrapper &node)
 
static FilterEvaluator::AstNodeWrapper child(const FilterEvaluator::AstNodeWrapper &node, size_t idx)
 
static size_t arity(const FilterEvaluator::AstNodeWrapper &node)
 
Operand * walkOperand(const AstNodeWrapper &node)
 
 
 
 
◆ walkOperand()
Definition at line 516 of file FilterEvaluator.cpp.
References OpenDDS::DCPS::arity(), OpenDDS::DCPS::child(), extended_grammar_, number_parameters_, OPENDDS_ASSERT, and OpenDDS::DCPS::toString().
Referenced by walkAst().
  519     return new FieldLookup(node);
   520   } 
else if (node->TypeMatches<
IntVal>()) {
   521     return new LiteralInt(node);
   522   } 
else if (node->TypeMatches<
CharVal>()) {
   523     return new LiteralChar(node);
   524   } 
else if (node->TypeMatches<
FloatVal>()) {
   525     return new LiteralFloat(node);
   526   } 
else if (node->TypeMatches<
StrVal>()) {
   527     return new LiteralString(node);
   528   } 
else if (node->TypeMatches<
ParamVal>()) {
   529     Parameter* retval = 
new Parameter(node);
   535   } 
else if (node->TypeMatches<
CallDef>()) {
   536     if (
arity(node) == 1) {
   541       for (
AstNode* iter = 
child(node, 1); iter != 0; iter = iter->GetSibling()) {
 
yard::TreeBuildingParser< char >::Node AstNode
 
#define OPENDDS_ASSERT(C)
 
OPENDDS_STRING toString(yard::TreeBuildingParser< char >::Node *iter)
 
size_t number_parameters_
 
static FilterEvaluator::AstNodeWrapper child(const FilterEvaluator::AstNodeWrapper &node, size_t idx)
 
static size_t arity(const FilterEvaluator::AstNodeWrapper &node)
 
Operand * walkOperand(const AstNodeWrapper &node)
 
 
 
 
◆ extended_grammar_
  
  
      
        
          | bool OpenDDS::DCPS::FilterEvaluator::extended_grammar_ | 
         
       
   | 
  
private   | 
  
 
 
◆ filter_root_
  
  
      
        
          | EvalNode* OpenDDS::DCPS::FilterEvaluator::filter_root_ | 
         
       
   | 
  
private   | 
  
 
 
◆ number_parameters_
  
  
      
        
          | size_t OpenDDS::DCPS::FilterEvaluator::number_parameters_ | 
         
       
   | 
  
private   | 
  
 
Number of parameter used in the filter, this should match the number of values passed when evaluating the filter 
Definition at line 182 of file FilterEvaluator.h.
Referenced by walkOperand().
 
 
The documentation for this class was generated from the following files: