NCBI C++ ToolKit
Public Member Functions | List of all members
CQueryFuncPromoteAndOr Class Reference

Search Toolkit Book for CQueryFuncPromoteAndOr

class CQueryFuncPromoteAndOr More...

#include <gui/objutils/query_func_promote.hpp>

+ Inheritance diagram for CQueryFuncPromoteAndOr:
+ Collaboration diagram for CQueryFuncPromoteAndOr:

Public Member Functions

 CQueryFuncPromoteAndOr ()
 
virtual bool EvaluateChildrenFirst () const
 Do we evaluate before visiting the nodes children or after. More...
 
virtual void Evaluate (CQueryParseTree::TNode &qnode)
 Try to convert the arguments into boolean values and, if successful, apply the specified boolean operator to those values. More...
 
virtual size_t GetArgCountMin (CQueryParseNode::EType t)
 
virtual size_t GetArgCountMax (CQueryParseNode::EType t)
 Can string togeather multiple ands/ors into one combined and/or, e.g. More...
 
- Public Member Functions inherited from CQueryFuncPromoteBase
 CQueryFuncPromoteBase ()
 
void SetCaseSensitive (NStr::ECase e)
 Get/set case sensitivity for all string compares for this function. More...
 
NStr::ECase GetCaseSensitive () const
 
void SetStringMatching (CStringMatching::EStringMatching m)
 Get/set string matching algorithm. More...
 
CStringMatching::EStringMatching GetStringMatching () const
 
TEvalResultGetQueryNodeValue (CQueryParseTree::TNode &qnode)
 Get the user object for node 'qnode' or NULL if not created. More...
 
TEvalResultMakeQueryNodeValue (CQueryParseTree::TNode &qnode)
 Get user object for 'qnode' or create a new object if it doesn't exist. More...
 
void PreProcess (CQueryParseTree::TNode &tr, objects::CScope *scope)
 Resolve, if possible, the data type for the query node tr and, for operator nodes (e.g. More...
 
QueryValueType::EBaseType ResolveAndPromote (size_t comparison_idx, CQueryParseTree::TNode &qnode, CQueryParseTree::TNode *arg1, CQueryParseTree::TNode *arg2)
 For the operator in 'qnode', retrive from data source (if ncessary) the data values arg1 and arg2 and promote the values, if needed, to the required type needed for comparison. More...
 
QueryValueType::EBaseType GetPromotedType (const CPromoteRule &pr)
 Given data from two nodes and a comparison operator (e.g. More...
 
bool ResolveFieldValue (TEvalResult &tree_val)
 Get the value of a field from the data source and store the result in the CQueryNodeValue object. More...
 
bool SetCompareType (TEvalResult &tree_value)
 Given data for a node, determine its underlying data type (e.g. More...
 
- Public Member Functions inherited from CQueryFunctionBase
virtual ~CQueryFunctionBase ()
 

Additional Inherited Members

- Public Types inherited from CQueryFuncPromoteBase
typedef CQueryNodeValue TEvalResult
 
- Public Types inherited from CQueryFunctionBase
typedef vector< CQueryParseTree::TNode * > TArgVector
 Vector for easy argument access. More...
 
- Protected Member Functions inherited from CQueryFuncPromoteBase
void AddPromoteTypes (CQueryParseNode::EType op, QueryValueType::EBaseType type1, QueryValueType::EBaseType type2, QueryValueType::EBaseType ptype)
 Add the promtion rules for both 'type1 op type2' and 'type2 op type1'. More...
 
- Protected Member Functions inherited from CQueryFunctionBase
CQueryExecGetExec ()
 Get reference on parent execution environment. More...
 
CQueryParseTreeGetQueryTree ()
 Get query tree (execution context) More...
 
void MakeArgVector (CQueryParseTree::TNode &qnode, TArgVector &args)
 Created vector of arguments (translate sub-nodes to vector) More...
 
CQueryParseTree::TNodeGetArg0 (CQueryParseTree::TNode &qnode)
 Get first sub-node. More...
 
- Protected Attributes inherited from CQueryFuncPromoteBase
std::vector< CPromoteRulem_PromoteRules
 Vector of sorted promotion rules. More...
 
NStr::ECase m_CaseSensitive
 If true, all string comparisons by subclasses will use case-sensitive comparisons, otherwise not. More...
 
CStringMatching::EStringMatching m_StringMatchAlgo
 Determines how string equality comaparisons will be handled (wildcards, regex, exact..) More...
 
- Protected Attributes inherited from CQueryFunctionBase
CQueryExecm_QExec
 

Detailed Description

class CQueryFuncPromoteAndOr

Query execution function for logical operators like AND, OR, etc.

Definition at line 208 of file query_func_promote.hpp.

Constructor & Destructor Documentation

◆ CQueryFuncPromoteAndOr()

CQueryFuncPromoteAndOr::CQueryFuncPromoteAndOr ( )
inline

Definition at line 211 of file query_func_promote.hpp.

Member Function Documentation

◆ Evaluate()

void CQueryFuncPromoteAndOr::Evaluate ( CQueryParseTree::TNode qnode)
virtual

◆ EvaluateChildrenFirst()

virtual bool CQueryFuncPromoteAndOr::EvaluateChildrenFirst ( ) const
inlinevirtual

Do we evaluate before visiting the nodes children or after.

Visiting after can allow us to avoid evaluating some sub-expressions

Returns
true if children should all be evaluated before parent for this type of node, otherwise false

Reimplemented from CQueryFunctionBase.

Definition at line 213 of file query_func_promote.hpp.

◆ GetArgCountMax()

virtual size_t CQueryFuncPromoteAndOr::GetArgCountMax ( CQueryParseNode::EType  t)
inlinevirtual

Can string togeather multiple ands/ors into one combined and/or, e.g.

a or b or c or d==or:a,b,c,d. So we allow essentially unlimited operands

Reimplemented from CQueryFuncPromoteBase.

Definition at line 223 of file query_func_promote.hpp.

◆ GetArgCountMin()

virtual size_t CQueryFuncPromoteAndOr::GetArgCountMin ( CQueryParseNode::EType  t)
inlinevirtual

Reimplemented from CQueryFuncPromoteBase.

Definition at line 219 of file query_func_promote.hpp.


The documentation for this class was generated from the following files:
Modified on Sun Mar 03 03:14:43 2024 by modify_doxy.py rev. 669887