NCBI C++ ToolKit
|
Classes | |
class | CQueryFunctionBase |
Base class for evaluation functions. More... | |
class | CQueryExec |
Query execution environment holds the function registry and the execution context. More... | |
class | CQueryExecEvalFunc |
Expression evaluation visitor functor. More... | |
class | CQueryEval_BV_Value< BV > |
Query tree user object for storing bit-vectors. More... | |
class | CQueryFunction_BV_Base< BV > |
Base class for all bit-vector oriented function implementations. More... | |
class | CQueryFunction_BV_Logic< BV > |
Implementation of logical functions. More... | |
class | CQueryFunction_BV_Not< BV > |
Implementation of logical NOT. More... | |
class | CQueryFunction_BV_In_Or< BV > |
Implementation of IN as OR-ed EQ search. More... | |
class | IQueryParseUserObject |
Base class for query node user defined object. More... | |
class | CQueryParseNode |
Query node class. More... | |
struct | CQueryParseNode::SSrcLoc |
Source location (points to the position in the original src) All positions are 0 based. More... | |
class | CQueryParseTree |
Query tree and associated utility methods. More... | |
class | CQueryParseException |
Query parser exceptions. More... | |
Typedefs | |
typedef vector< CQueryParseTree::TNode * > | CQueryFunctionBase::TArgVector |
Vector for easy argument access. More... | |
typedef unsigned int | CQueryExec::TFieldID |
typedef vector< CQueryFunctionBase * > | CQueryExec::TFuncReg |
typedef CSimpleBuffer | CQueryEval_BV_Value< BV >::TBuffer |
typedef BV | CQueryEval_BV_Value< BV >::TBitVector |
typedef CQueryEval_BV_Value< BV > | CQueryFunction_BV_Base< BV >::TBVContainer |
typedef CQueryFunction_BV_Base< BV > | CQueryFunction_BV_Logic< BV >::TParent |
typedef CQueryFunction_BV_Base< BV > | CQueryFunction_BV_Not< BV >::TParent |
typedef CQueryFunction_BV_Base< BV > | CQueryFunction_BV_In_Or< BV >::TParent |
typedef CTreeNode< CQueryParseNode > | CQueryParseTree::TNode |
typedef vector< string > | CQueryParseTree::TFunctionNames |
List of keywords recognised as functions. More... | |
Friends | |
class | CQueryFunctionBase::CQueryExec |
class | CQueryExec::CQueryFunctionBase |
class | CQueryParseNode::CTreeNode< CQueryParseNode > |
Utility functions | |
void | CQueryFunctionBase::MakeArgVector (CQueryParseTree::TNode &qnode, TArgVector &args) |
Created vector of arguments (translate sub-nodes to vector) More... | |
CQueryParseTree::TNode * | CQueryFunctionBase::GetArg0 (CQueryParseTree::TNode &qnode) |
Get first sub-node. More... | |
Source reference accessors | |
void | CQueryParseNode::SetLoc (const SSrcLoc &loc) |
Set node location in the query text (for error diagnostics) More... | |
void | CQueryParseNode::SetLoc (unsigned line, unsigned pos) |
const SSrcLoc & | CQueryParseNode::GetLoc () const |
Value accessors | |
EType | CQueryParseNode::GetType () const |
const string & | CQueryParseNode::GetStrValue () const |
const string & | CQueryParseNode::GetIdent () const |
const string & | CQueryParseNode::GetOriginalText () const |
Int8 | CQueryParseNode::GetInt () const |
bool | CQueryParseNode::GetBool () const |
double | CQueryParseNode::GetDouble () const |
int | CQueryParseNode::GetIdentIdx () const |
const string & | CQueryParseNode::GetOrig () const |
User object operations | |
Methods to associate application specific data with parsing tree node. Data should be encapsulated into a user object derived from CQueryParseBaseUserObject. | |
const IQueryParseUserObject * | CQueryParseNode::GetUserObject () const |
Get user object. More... | |
IQueryParseUserObject * | CQueryParseNode::GetUserObject () |
void | CQueryParseNode::AttachUserObject (IQueryParseUserObject *obj) |
Set user object. Query node takes ownership. More... | |
void | CQueryParseNode::SetUserObject (IQueryParseUserObject *obj) |
void | CQueryParseNode::ResetUserObject () |
Reset the associated user object (see IQueryParseUserObject::Reset()) More... | |
Static node creation functions - | |
virtual TNode * | CQueryParseTree::CreateNode (const string &value, const string &orig_text, bool isIdent) |
Create Identifier node or string node. More... | |
virtual TNode * | CQueryParseTree::CreateNode (Int8 value, const string &orig_text) |
virtual TNode * | CQueryParseTree::CreateNode (bool value, const string &orig_text) |
virtual TNode * | CQueryParseTree::CreateNode (double value, const string &orig_text) |
virtual TNode * | CQueryParseTree::CreateNode (CQueryParseNode::EType op, TNode *arg1, TNode *arg2, const string &orig_text="") |
virtual TNode * | CQueryParseTree::CreateFuncNode (const string &func_name) |
Create function node. More... | |
typedef vector<CQueryParseTree::TNode*> CQueryFunctionBase::TArgVector |
Vector for easy argument access.
Definition at line 72 of file query_exec.hpp.
typedef BV CQueryEval_BV_Value< BV >::TBitVector |
Definition at line 58 of file query_exec_bv.hpp.
typedef CSimpleBuffer CQueryEval_BV_Value< BV >::TBuffer |
Definition at line 57 of file query_exec_bv.hpp.
typedef CQueryEval_BV_Value<BV> CQueryFunction_BV_Base< BV >::TBVContainer |
Definition at line 91 of file query_exec_bv.hpp.
typedef unsigned int CQueryExec::TFieldID |
Definition at line 148 of file query_exec.hpp.
|
protected |
Definition at line 236 of file query_exec.hpp.
typedef vector<string> CQueryParseTree::TFunctionNames |
List of keywords recognised as functions.
Definition at line 293 of file query_parse.hpp.
Definition at line 271 of file query_parse.hpp.
typedef CQueryFunction_BV_Base<BV> CQueryFunction_BV_Logic< BV >::TParent |
Definition at line 197 of file query_exec_bv.hpp.
typedef CQueryFunction_BV_Base<BV> CQueryFunction_BV_Not< BV >::TParent |
Definition at line 234 of file query_exec_bv.hpp.
typedef CQueryFunction_BV_Base<BV> CQueryFunction_BV_In_Or< BV >::TParent |
Definition at line 277 of file query_exec_bv.hpp.
Case sensitive parsing.
Enumerator | |
---|---|
eCaseSensitiveUpper | Operators must come in upper case (AND) |
eCaseInsensitive | Case insensitive parsing (AnD) |
Definition at line 280 of file query_parse.hpp.
Enumerator | |
---|---|
eIncorrectNodeType | |
eParserError | |
eCompileError | |
eUnknownFunction |
Definition at line 366 of file query_parse.hpp.
Level of tolerance to syntax errors and problems.
Enumerator | |
---|---|
eSyntaxCheck | Best possible check for errors. |
eSyntaxRelax | Relaxed parsing rules. |
Definition at line 287 of file query_parse.hpp.
enum CQueryParseNode::EType | ( | void | ) |
Query node type.
Definition at line 84 of file query_parse.hpp.
void CQueryExec::AddFunc | ( | CQueryParseNode::EType | func_type, |
CQueryFunctionBase * | func | ||
) |
Register function implementation.
(with ownership transfer)
Definition at line 96 of file query_exec.cpp.
References i, CQueryExec::m_FuncReg, and CQueryFunctionBase::SetExec().
Referenced by CPhyloTreeDataSource::GetQueryExec(), CTDQueryDataSource::GetQueryExec(), CFeatureFilter::Init(), and CMacroExec::x_Init().
void CQueryExec::AddImplicitSearchFunc | ( | CQueryFunctionBase * | func | ) |
This is a callback for implicit search nodes Our syntax allows queries like (a=1) AND "search_term" Execution recognises "search_term" connected with logical operation represents a special case.
This method defines a reactor (function implementation).
Definition at line 105 of file query_exec.cpp.
References CQueryExec::m_ImplicitSearchFunc.
|
inlineprotected |
Unpack argument to result bitvector (use assignment for deserialization)
Definition at line 117 of file query_exec_bv.hpp.
References bm::operation_deserializer< BV >::deserialize(), CQueryEval_BV_Value< BV >::GetBuffer(), CQueryEval_BV_Value< BV >::GetBV(), CQueryFunction_BV_Base< BV >::GetContainer(), CQueryFunction_BV_Base< BV >::MakeContainer(), bm::set_ASSIGN, and CQueryEval_BV_Value< BV >::SetBV().
Referenced by CQueryFunction_BV_Logic< BV >::Evaluate(), and CQueryFunction_BV_Not< BV >::Evaluate().
void CQueryParseNode::AttachUserObject | ( | IQueryParseUserObject * | obj | ) |
Set user object. Query node takes ownership.
Definition at line 150 of file query_parse.cpp.
References CQueryParseNode::m_UsrObj, and CRef< C, Locker >::Reset().
Referenced by CQueryParseNode::SetUserObject().
|
inlinevirtual |
Extend this function to look up and invoke functions that appear in the query.
Reimplemented in CTreeQueryExec.
Definition at line 177 of file query_exec.hpp.
Referenced by CQueryFuncFunction::Evaluate().
|
inline |
Definition at line 60 of file query_exec_bv.hpp.
|
private |
CQueryExec::CQueryExec | ( | ) |
Definition at line 78 of file query_exec.cpp.
References i, and CQueryExec::m_FuncReg.
|
private |
|
inline |
Definition at line 251 of file query_exec.hpp.
|
inline |
Definition at line 279 of file query_exec_bv.hpp.
|
inline |
Definition at line 199 of file query_exec_bv.hpp.
|
inline |
Definition at line 236 of file query_exec_bv.hpp.
|
private |
Definition at line 43 of file query_parse.cpp.
Definition at line 73 of file query_parse.cpp.
References val.
Construct the query node.
value | Node value |
orig_text | Value as it appears in the original program |
isIdent | true whe the string is identifier (no quoting) |
Definition at line 51 of file query_parse.cpp.
Definition at line 83 of file query_parse.cpp.
References val.
Definition at line 92 of file query_parse.cpp.
Definition at line 63 of file query_parse.cpp.
References val.
|
private |
|
explicit |
Contruct the query. Takes the ownership of the clause.
Definition at line 212 of file query_parse.cpp.
|
virtual |
Create function node.
Definition at line 278 of file query_parse.cpp.
References CQueryParseNode::eFunction.
|
virtual |
Definition at line 248 of file query_parse.cpp.
References rapidjson::value.
|
virtual |
Create Identifier node or string node.
Definition at line 228 of file query_parse.cpp.
References rapidjson::value.
Referenced by CMacroParser::x_ParseDo().
|
virtual |
Definition at line 261 of file query_parse.cpp.
|
virtual |
Definition at line 255 of file query_parse.cpp.
References rapidjson::value.
|
virtual |
Definition at line 239 of file query_parse.cpp.
References rapidjson::value.
|
inline |
Elapsed time in seconds.
Definition at line 204 of file query_parse.hpp.
References CQueryParseNode::m_Elapsed.
Referenced by CQueryParseNode::GetElapsed().
|
inlinevirtual |
Reimplemented in CTreeQueryExec, and CTableQueryExec.
Definition at line 222 of file query_exec.hpp.
Referenced by CQueryParsePanel::CQueryJob::Execute().
|
inlinevirtual |
Move to (iterate) to next entry.
Reimplemented in CTreeQueryExec, CTableQueryExec, and CMacroQueryExec.
Definition at line 221 of file query_exec.hpp.
|
inlinevirtual |
Reimplemented in CTreeQueryExec, and CTableQueryExec.
Definition at line 219 of file query_exec.hpp.
Referenced by CQueryParsePanel::CQueryJob::Execute().
|
virtual |
Run query tree evaluation.
Definition at line 110 of file query_exec.cpp.
References CQueryParseTree::GetQueryTree(), CQueryExec::m_QTree, and TreeDepthFirstTraverse().
Referenced by CTableQueryExec::EvalNext(), CTreeQueryExec::EvalNext(), and CFeatureFilter::Pass().
|
virtual |
Definition at line 119 of file query_exec.cpp.
References CQueryExec::m_QTree, and TreeDepthFirstTraverse().
|
inlinevirtual |
Query node evaluation function (performs actual programmed by the node action)
Implements CQueryFunctionBase.
Definition at line 203 of file query_exec_bv.hpp.
References _ASSERT, CQueryFunction_BV_Base< BV >::ArgToRes(), CQueryFunction_BV_Logic< BV >::m_OpCode, CQueryFunctionBase::MakeArgVector(), and CQueryFunction_BV_Base< BV >::ProcessArgVector().
|
inlinevirtual |
Query node evaluation function (performs actual programmed by the node action)
Implements CQueryFunctionBase.
Definition at line 239 of file query_exec_bv.hpp.
References CQueryFunction_BV_Base< BV >::ArgToRes(), CQueryFunctionBase::MakeArgVector(), CQueryFunction_BV_Base< BV >::MakeContainer(), CQueryFunction_BV_Base< BV >::ProcessArgVector(), bm::set_SUB, and CQueryEval_BV_Value< BV >::SetBV().
|
inlinevirtual |
Query node evaluation function (performs actual programmed by the node action)
Implements CQueryFunctionBase.
Definition at line 282 of file query_exec_bv.hpp.
References _ASSERT, bm::operation_deserializer< BV >::deserialize(), CQueryParseNode::eEQ, CTreeNode< TValue, TKeyGetterP >::eNoDelete, CQueryFunctionBase::Evaluate(), CQueryEval_BV_Value< BV >::GetBuffer(), CQueryEval_BV_Value< BV >::GetBV(), CQueryFunction_BV_Base< BV >::GetContainer(), CQueryExec::GetFunc(), CQueryFunctionBase::GetQueryTree(), CTreeNode< TValue, TKeyGetterP >::GetValue(), i, CQueryFunctionBase::m_QExec, CQueryFunctionBase::MakeArgVector(), CQueryFunction_BV_Base< BV >::MakeContainer(), NCBI_THROW, bm::set_OR, and CQueryEval_BV_Value< BV >::SetBV().
|
pure virtual |
Query node evaluation function (performs actual programmed by the node action)
Implemented in CQueryFunction_BV_In_Or< BV >, CQueryFunction_BV_Not< BV >, CQueryFunction_BV_Logic< BV >, CQueryFuncPromoteBetween, CQueryFuncPromoteGtLt, CQueryFuncLike, CQueryFuncPromoteIn, CQueryFuncPromoteEq, CQueryFuncPromoteLogic, CQueryFuncPromoteAndOr, CQueryFuncPromoteIdentifier, CQueryFuncPromoteValue, CQueryFuncFunction, CQueryFuncRTVar, CMQueryFunctionOps, CMQueryFunctionOps_Between, CMQueryFunctionOps_In, CMQueryFunctionOps_Like, CMQueryFunctionOps_Comparison, CMQueryFunctionOps_BooleanNot, CMQueryFunctionOps_BooleanBinary, CSGQueryFunctionCompare, CSGQueryFunctionLogic, CSGQueryFunctionValue, CQueryFuncAssignment, CMQueryFunctionDummy, CMQueryFunctionFunction, CMQueryFunctionAssignment, CMQueryFunctionRTVar, and CMQueryFunctionValue.
Referenced by CQueryFunction_BV_In_Or< BV >::Evaluate(), and CQueryExecEvalFunc::operator()().
|
inlinevirtual |
Do we evaluate before visiting the nodes children or after.
Visiting after can allow us to avoid evaluating some sub-expressions
Reimplemented in CQueryFuncPromoteAndOr.
Definition at line 81 of file query_exec.hpp.
Referenced by CQueryExecEvalFunc::operator()().
void Flatten_ParseTree | ( | CQueryParseTree::TNode & | node | ) |
Flatten the AND and the OR subtrees transforming them from binary subtrees to n-ary subtrees.
node | - the root node of the parsed tree |
Definition at line 38 of file parse_utils.cpp.
References CTreeNode< TValue, TKeyGetterP >::AddNode(), CTreeNode< TValue, TKeyGetterP >::DetachNode(), CQueryParseNode::eAnd, CQueryParseNode::eOr, CTreeNode< TValue, TKeyGetterP >::RemoveNode(), CTreeNode< TValue, TKeyGetterP >::SubNodeBegin(), and CTreeNode< TValue, TKeyGetterP >::SubNodeEnd().
Referenced by CQueryParsePanel::x_ExecuteQuery(), and CMacroParser::x_QParseWhere().
|
protected |
Get first sub-node.
Definition at line 58 of file query_exec.cpp.
References CTreeNode< TValue, TKeyGetterP >::SubNodeBegin(), and CTreeNode< TValue, TKeyGetterP >::SubNodeEnd().
bool CQueryParseNode::GetBool | ( | void | ) | const |
Definition at line 122 of file query_parse.cpp.
References CQueryParseNode::eBoolConst, CQueryParseNode::m_BoolConst, CQueryParseNode::m_Type, and NCBI_THROW.
Referenced by CQueryTreePrintFunc::operator()(), and CQueryFuncPromoteBase::PreProcess().
|
inline |
Definition at line 65 of file query_exec_bv.hpp.
References CQueryEval_BV_Value< BV >::m_BV_Buffer.
Referenced by CQueryFunction_BV_Base< BV >::ArgToRes(), CQueryFunction_BV_In_Or< BV >::Evaluate(), and CQueryFunction_BV_Base< BV >::ProcessArgVector().
|
inline |
Definition at line 66 of file query_exec_bv.hpp.
References CQueryEval_BV_Value< BV >::m_BV.
Referenced by CQueryFunction_BV_Base< BV >::ArgToRes(), CQueryFunction_BV_In_Or< BV >::Evaluate(), and CQueryFunction_BV_Base< BV >::ProcessArgVector().
|
inlineprotected |
Extract user object out of the current node.
Definition at line 97 of file query_exec_bv.hpp.
References CTreeNode< TValue, TKeyGetterP >::GetValue().
Referenced by CQueryFunction_BV_Base< BV >::ArgToRes(), CQueryFunction_BV_In_Or< BV >::Evaluate(), CQueryFunction_BV_Base< BV >::MakeContainer(), and CQueryFunction_BV_Base< BV >::ProcessArgVector().
double CQueryParseNode::GetDouble | ( | void | ) | const |
Definition at line 131 of file query_parse.cpp.
References CQueryParseNode::eFloatConst, CQueryParseNode::m_DoubleConst, CQueryParseNode::m_Type, and NCBI_THROW.
Referenced by CQueryTreePrintFunc::operator()(), and CQueryFuncPromoteBase::PreProcess().
|
inline |
Elapsed time in seconds.
Definition at line 206 of file query_parse.hpp.
References CQueryParseNode::Elapsed().
|
inlineoverridevirtual |
Get error code interpreted as text.
Reimplemented from CException.
Definition at line 373 of file query_parse.hpp.
References CQueryParseException::eCompileError, CQueryParseException::eIncorrectNodeType, CQueryParseException::eParserError, CQueryParseException::eUnknownFunction, CException::GetErrCode(), and CException::GetErrCodeString().
|
inline |
Definition at line 225 of file query_exec.hpp.
References CQueryExec::m_ExceptionCount.
|
inlineprotected |
Get reference on parent execution environment.
Definition at line 108 of file query_exec.hpp.
References CQueryFunctionBase::m_QExec.
Referenced by CQueryFunctionBase::GetQueryTree().
|
inline |
Return query function pointer (if registered).
Definition at line 171 of file query_exec.hpp.
References CQueryExec::m_FuncReg.
Referenced by CQueryFunction_BV_In_Or< BV >::Evaluate(), CQueryExecPreProcessFunc::operator()(), and CQueryExecEvalFunc::operator()().
Definition at line 140 of file query_parse.cpp.
References CQueryParseNode::eFunction, CQueryParseNode::eIdentifier, CQueryParseNode::m_Type, CQueryParseNode::m_Value, and NCBI_THROW.
int CQueryParseNode::GetIdentIdx | ( | ) | const |
|
inlinevirtual |
Reimplemented in CTreeQueryExec, and CTableQueryExec.
Definition at line 211 of file query_exec.hpp.
Referenced by CQueryFuncPromoteBase::PreProcess().
|
inline |
Definition at line 166 of file query_exec.hpp.
References CQueryExec::m_ImplicitSearchFunc.
Referenced by CQueryExecEvalFunc::operator()().
Int8 CQueryParseNode::GetInt | ( | void | ) | const |
Definition at line 113 of file query_parse.cpp.
References CQueryParseNode::eIntConst, CQueryParseNode::m_IntConst, CQueryParseNode::m_Type, and NCBI_THROW.
Referenced by CQueryTreePrintFunc::operator()(), and CQueryFuncPromoteBase::PreProcess().
Definition at line 157 of file query_parse.hpp.
References CQueryParseNode::m_Location.
Referenced by CQueryHighlightFunction::operator()(), and CQueryTreePrintFunc::PrintElement().
std::string CQueryParseNode::GetNodeTypeAsString | ( | ) | const |
Return query node type as a string (for debugging output)
Definition at line 204 of file query_parse.cpp.
References CQueryParseNode::m_Type.
Referenced by BinOpsFunc(), and CQueryFuncPromoteBase::PreProcess().
Definition at line 163 of file query_parse.cpp.
References CQueryParseNode::eAnd, CQueryParseNode::eBetween, CQueryParseNode::eBoolConst, CQueryParseNode::eEQ, CQueryParseNode::eFieldSearch, CQueryParseNode::eFloatConst, CQueryParseNode::eFrom, CQueryParseNode::eFunction, CQueryParseNode::eGE, CQueryParseNode::eGT, CQueryParseNode::eIdentifier, CQueryParseNode::eIn, CQueryParseNode::eIntConst, CQueryParseNode::eLE, CQueryParseNode::eLike, CQueryParseNode::eList, CQueryParseNode::eLT, CQueryParseNode::eNot, CQueryParseNode::eNotSet, CQueryParseNode::eOr, CQueryParseNode::eRange, CQueryParseNode::eSelect, CQueryParseNode::eString, CQueryParseNode::eSub, CQueryParseNode::eWhere, and CQueryParseNode::eXor.
Definition at line 174 of file query_parse.hpp.
References CQueryParseNode::m_OrigText.
Referenced by CQueryExecPreProcessFunc::operator()(), CQueryExecEvalFunc::operator()(), CQueryFuncPromoteBase::PreProcess(), and CQueryTreePrintFunc::PrintElement().
Definition at line 168 of file query_parse.hpp.
References CQueryParseNode::m_OrigText.
|
inlineprotected |
Definition at line 229 of file query_exec.hpp.
References CQueryExec::m_QTree.
Referenced by CQueryFunctionBase::GetQueryTree().
|
inline |
Definition at line 224 of file query_exec.hpp.
References CQueryExec::m_QueriedCount.
Referenced by CQueryParsePanel::CQueryJob::Execute().
|
protected |
Get query tree (execution context)
Definition at line 68 of file query_exec.cpp.
References CQueryFunctionBase::GetExec(), and CQueryExec::GetQTree().
Referenced by CQueryFunction_BV_In_Or< BV >::Evaluate().
|
inline |
Definition at line 322 of file query_parse.hpp.
References CQueryParseTree::m_Tree.
Definition at line 321 of file query_parse.hpp.
References CQueryParseTree::m_Tree.
Referenced by CTableQueryExec::EvalNext(), CTreeQueryExec::EvalNext(), CQueryExec::Evaluate(), CMacroExec::EvaluateTree(), CFeatureFilter::Init(), CDoQueryTreeGetArgs::operator()(), CFeatureFilter::Pass(), CQueryParseTree::Print(), CQueryParseTree::ResetUserObjects(), CQueryParsePanel::x_ExecuteQuery(), CMacroExec::x_GetTopUserNodeValue(), CMacroExec::x_Init(), CQueryParsePanel::x_IsValidQuery(), CMacroParser::x_ParseDo(), and CQueryParsePanel::x_StartQueryJob().
Definition at line 102 of file query_parse.cpp.
References CQueryParseNode::eFloatConst, CQueryParseNode::eFunction, CQueryParseNode::eIdentifier, CQueryParseNode::eIntConst, CQueryParseNode::eList, CQueryParseNode::eString, CQueryParseNode::m_OrigText, CQueryParseNode::m_Type, CQueryParseNode::m_Value, and NCBI_THROW.
Referenced by CQueryTreeListFunctions::operator()(), CDoQueryTreeGetArgs::operator()(), CQueryHighlightFunction::operator()(), CQueryTreePrintFunc::operator()(), and CQueryFuncPromoteBase::PreProcess().
|
inline |
Definition at line 165 of file query_parse.hpp.
References CQueryParseNode::m_Type.
Referenced by CQueryTreeListFunctions::operator()(), CAssignQueryTreeGetArgs::operator()(), CDoQueryTreeGetArgs::operator()(), CWhereQueryTreeGetArgs::operator()(), CQueryTreePrintFunc::operator()(), CQueryExecPreProcessFunc::operator()(), CQueryExecEvalFunc::operator()(), and CQueryFuncPromoteBase::PreProcess().
|
inline |
Definition at line 224 of file query_parse.hpp.
References CRef< C, Locker >::GetPointer(), and CQueryParseNode::m_UsrObj.
|
inline |
Get user object.
Definition at line 222 of file query_parse.hpp.
References CRef< C, Locker >::GetPointer(), and CQueryParseNode::m_UsrObj.
Referenced by CQueryHighlightFunction::operator()(), CSGQueryNodePreprocessor::operator()(), CQueryFuncPromoteBase::PreProcess(), and CQueryTreePrintFunc::PrintElement().
|
inlinevirtual |
String value for debuging.
Reimplemented in CQueryNodeValue.
Definition at line 67 of file query_parse.hpp.
Referenced by CQueryTreePrintFunc::PrintElement().
|
inlinevirtual |
Reimplemented in CTreeQueryExec, CTableQueryExec, and CFeatureFilter.
Definition at line 210 of file query_exec.hpp.
Referenced by CMacroRep::HasIdentifier(), and CQueryFuncPromoteBase::PreProcess().
|
inlinevirtual |
Some applications may know the type of an identifier.
This hook should be overriden to return an identifier's type, when available. Return one of eIntConst, eBoolConst, eFloatConst, eString, or eNotSet.
Reimplemented in CTableQueryExec, and CTreeQueryExec.
Definition at line 216 of file query_exec.hpp.
References CQueryParseNode::eNotSet.
Referenced by CQueryFuncPromoteBase::PreProcess().
|
inline |
TRUE if node was created as explicitly FALSE - node was created as a result of a default and the interpreter has a degree of freedom in execution.
Definition at line 181 of file query_parse.hpp.
References CQueryParseNode::m_Explicit.
Referenced by CQueryTreePrintFunc::PrintElement().
|
inline |
Returns TRUE if node describes logical operation (AND, OR, etc.)
Definition at line 189 of file query_parse.hpp.
References CQueryParseNode::eAnd, CQueryParseNode::eNot, CQueryParseNode::eOr, CQueryParseNode::eSub, CQueryParseNode::eXor, and CQueryParseNode::m_Type.
Referenced by CQueryFuncPromoteBase::PreProcess().
|
inline |
Check if node is marked with NOT flag (like != )
Definition at line 185 of file query_parse.hpp.
References CQueryParseNode::m_Not.
Referenced by CQueryTreePrintFunc::operator()(), and CQueryTreePrintFunc::PrintElement().
|
inline |
Returns TRUE if node is value (INT, String, etc.)
Definition at line 196 of file query_parse.hpp.
References CQueryParseNode::eBoolConst, CQueryParseNode::eFloatConst, CQueryParseNode::eIdentifier, CQueryParseNode::eIntConst, CQueryParseNode::eString, and CQueryParseNode::m_Type.
Referenced by CQueryExecEvalFunc::operator()(), and CQueryFuncPromoteBase::PreProcess().
|
protected |
Created vector of arguments (translate sub-nodes to vector)
qnode | Query node (all sub-nodes are treated as parameters |
args | Output vector |
Definition at line 44 of file query_exec.cpp.
References i, CTreeNode< TValue, TKeyGetterP >::SubNodeBegin(), and CTreeNode< TValue, TKeyGetterP >::SubNodeEnd().
Referenced by CQueryFuncAssignment::Evaluate(), CSGQueryFunctionLogic::Evaluate(), CSGQueryFunctionCompare::Evaluate(), CQueryFuncFunction::Evaluate(), CQueryFuncPromoteAndOr::Evaluate(), CQueryFuncPromoteLogic::Evaluate(), CQueryFuncPromoteEq::Evaluate(), CQueryFuncPromoteIn::Evaluate(), CQueryFuncLike::Evaluate(), CQueryFuncPromoteGtLt::Evaluate(), CQueryFuncPromoteBetween::Evaluate(), CQueryFunction_BV_Logic< BV >::Evaluate(), CQueryFunction_BV_Not< BV >::Evaluate(), CQueryFunction_BV_In_Or< BV >::Evaluate(), CQueryFuncPromoteBase::PreProcess(), and CMQueryFunctionOps::x_InitReferences().
|
inlineprotected |
Create container if it does not exist.
Definition at line 105 of file query_exec_bv.hpp.
References CQueryFunction_BV_Base< BV >::GetContainer(), and CTreeNode< TValue, TKeyGetterP >::GetValue().
Referenced by CQueryFunction_BV_Base< BV >::ArgToRes(), CQueryFunction_BV_Not< BV >::Evaluate(), CQueryFunction_BV_In_Or< BV >::Evaluate(), and CQueryFunction_BV_Base< BV >::ProcessArgVector().
CQueryParseException::NCBI_EXCEPTION_DEFAULT | ( | CQueryParseException | , |
CException | |||
) |
|
inline |
Definition at line 256 of file query_exec.hpp.
References delta(), CStopWatch::Elapsed(), CStopWatch::eStart, eTreeTraverse, eTreeTraverseStepOver, CQueryFunctionBase::Evaluate(), CQueryFunctionBase::EvaluateChildrenFirst(), CQueryExec::GetFunc(), CQueryExec::GetImplicitSearchFunc(), CQueryParseNode::GetOrig(), CTreeNode< TValue, TKeyGetterP >::GetParent(), CQueryParseNode::GetType(), CTreeNode< TValue, TKeyGetterP >::GetValue(), CTreeNode< TValue, TKeyGetterP >::IsLeaf(), CQueryParseNode::IsValue(), CQueryExecEvalFunc::m_Exec, NCBI_THROW, NULL, CQueryParseNode::SetElapsed(), and sw.
|
private |
|
private |
|
private |
void CQueryParseTree::Parse | ( | const char * | query_str, |
ECase | case_sense = eCaseInsensitive , |
||
ESyntaxCheck | syntax_check = eSyntaxCheck , |
||
bool | verbose = false , |
||
const TFunctionNames & | functions = TFunctionNames(0) , |
||
unsigned | line = 0 , |
||
unsigned | linePos = 0 |
||
) |
Query parser front-end function.
query_str | Query string subject of parsing |
case_sense | Case sensitivity (AND, AnD, etc.) |
syntax_check | Sensitivity to syntax errors |
verbose | Debug print switch |
functions | List of names recognised as functions |
Definition at line 368 of file parser.cpp.
References env, CResourcePool_Base< Value, Lock, CF >::ForgetAll(), CNcbiEnvironment::Get(), CNcbiApplicationAPI::GetEnvironment(), CResourcePool_Base< Value, Lock, CF >::GetFreeList(), CNcbiApplicationAPI::InstanceGuard(), ncbi_q_parse(), NCBI_THROW, CQueryParseTree::SetQueryTree(), and yydebug.
Referenced by CFeatureFilter::Init(), CQueryParsePanel::x_ExecuteQuery(), and CQueryParsePanel::x_IsValidQuery().
void CQueryParseTree::Print | ( | CNcbiOstream & | os | ) | const |
Print the query tree (debugging)
Definition at line 201 of file query_tree_print.cpp.
References CQueryParseTree::GetQueryTree(), and TreeDepthFirstTraverse().
Referenced by CQueryParsePanel::x_ExecuteQuery().
|
inlineprotected |
Definition at line 141 of file query_exec_bv.hpp.
References bm::operation_deserializer< BV >::deserialize(), CQueryEval_BV_Value< BV >::GetBuffer(), CQueryEval_BV_Value< BV >::GetBV(), CQueryFunction_BV_Base< BV >::GetContainer(), i, CQueryFunction_BV_Base< BV >::MakeContainer(), bm::set_AND, and CQueryEval_BV_Value< BV >::SetBV().
Referenced by CQueryFunction_BV_Logic< BV >::Evaluate(), and CQueryFunction_BV_Not< BV >::Evaluate().
|
inline |
Definition at line 68 of file query_exec_bv.hpp.
References CQueryEval_BV_Value< BV >::m_BV_Buffer.
|
inline |
Definition at line 69 of file query_exec_bv.hpp.
References CQueryEval_BV_Value< BV >::m_BV.
|
inlinevirtual |
Reset user object (for reuse without reallocation)
Implements IQueryParseUserObject.
Definition at line 61 of file query_exec_bv.hpp.
References CQueryEval_BV_Value< BV >::m_BV, and CQueryEval_BV_Value< BV >::m_BV_Buffer.
|
pure virtual |
Reset user object (for reuse without reallocation)
Implemented in CQueryEval_BV_Value< BV >, CSGQueryNodeValue, CQueryNodeValue, and CMQueryNodeValue.
Referenced by CQueryParseNode::ResetUserObject().
void CQueryParseNode::ResetUserObject | ( | ) |
Reset the associated user object (see IQueryParseUserObject::Reset())
Definition at line 155 of file query_parse.cpp.
References CRef< C, Locker >::GetPointer(), CQueryParseNode::m_UsrObj, and IQueryParseUserObject::Reset().
Referenced by CQueryTreeResetFunc::operator()().
void CQueryParseTree::ResetUserObjects | ( | ) |
Reset all user objects attached to the parsing tree.
Definition at line 307 of file query_parse.cpp.
References CQueryParseTree::GetQueryTree(), and TreeDepthFirstTraverse().
|
inlinevirtual |
If query has an identifier, this will resolve it in an application-specific way.
Returns true if resolved, with the data item's value in 'value'. Using field identifiers, if available, such as column numbers or biotree feature IDs will be faster.
Reimplemented in CFeatureFilter, CTreeQueryExec, and CTableQueryExec.
Definition at line 192 of file query_exec.hpp.
Referenced by CSGQueryFunctionValue::Evaluate(), CQueryFuncPromoteAndOr::Evaluate(), CQueryFuncPromoteLogic::Evaluate(), and CQueryFuncPromoteBase::ResolveFieldValue().
|
inlinevirtual |
Reimplemented in CTreeQueryExec, CTableQueryExec, and CFeatureFilter.
Definition at line 196 of file query_exec.hpp.
|
inlinevirtual |
Reimplemented in CTreeQueryExec, CTableQueryExec, and CFeatureFilter.
Definition at line 194 of file query_exec.hpp.
|
inlinevirtual |
Reimplemented in CTreeQueryExec, CTableQueryExec, and CFeatureFilter.
Definition at line 198 of file query_exec.hpp.
Reimplemented in CTreeQueryExec, and CTableQueryExec.
Definition at line 201 of file query_exec.hpp.
Reimplemented in CTreeQueryExec, and CTableQueryExec.
Definition at line 205 of file query_exec.hpp.
Reimplemented in CTreeQueryExec, and CTableQueryExec.
Definition at line 203 of file query_exec.hpp.
|
inlinevirtual |
Reimplemented in CTreeQueryExec, and CTableQueryExec.
Definition at line 207 of file query_exec.hpp.
|
inline |
Attach buffer (with ownership transfer)
Definition at line 72 of file query_exec_bv.hpp.
References buf, CQueryEval_BV_Value< BV >::m_BV, and CQueryEval_BV_Value< BV >::m_BV_Buffer.
|
inline |
Attach bitvector (with ownership transfer)
Definition at line 74 of file query_exec_bv.hpp.
References CQueryEval_BV_Value< BV >::m_BV, and CQueryEval_BV_Value< BV >::m_BV_Buffer.
Referenced by CQueryFunction_BV_Base< BV >::ArgToRes(), CQueryFunction_BV_Not< BV >::Evaluate(), CQueryFunction_BV_In_Or< BV >::Evaluate(), and CQueryFunction_BV_Base< BV >::ProcessArgVector().
|
inline |
Set node timing.
Definition at line 209 of file query_parse.hpp.
References CQueryParseNode::m_Elapsed.
Referenced by CQueryExecEvalFunc::operator()().
|
inlineprivate |
Set reference on parent query execution class.
Definition at line 116 of file query_exec.hpp.
References CQueryFunctionBase::m_QExec.
Referenced by CQueryExec::AddFunc().
Definition at line 182 of file query_parse.hpp.
References CQueryParseNode::m_Explicit.
Set node location in the query text (for error diagnostics)
Definition at line 151 of file query_parse.hpp.
References CQueryParseNode::m_Location.
|
inline |
Definition at line 152 of file query_parse.hpp.
References CQueryParseNode::SSrcLoc::line, CQueryParseNode::m_Location, and CQueryParseNode::SSrcLoc::pos.
Definition at line 186 of file query_parse.hpp.
References CQueryParseNode::m_Not, and n.
void CQueryParseTree::SetQueryTree | ( | TNode * | qtree | ) |
Replace current query tree with the new one.
CQueryParseTree takes ownership on the passed argument.
Definition at line 221 of file query_parse.cpp.
References CQueryParseTree::m_Tree.
Referenced by CQueryParseTree::Parse().
|
inline |
Definition at line 229 of file query_parse.hpp.
References CQueryParseNode::AttachUserObject().
Referenced by CQueryFuncPromoteBase::PreProcess().
|
inline |
Definition at line 129 of file query_parse.hpp.
|
virtual |
Definition at line 89 of file query_exec.cpp.
References i, and CQueryExec::m_FuncReg.
|
virtual |
Definition at line 40 of file query_exec.cpp.
|
virtual |
Definition at line 217 of file query_parse.cpp.
union { ... } |
unsigned CQueryParseNode::SSrcLoc::length |
Token length (optional)
Definition at line 127 of file query_parse.hpp.
unsigned CQueryParseNode::SSrcLoc::line |
Src line number.
Definition at line 125 of file query_parse.hpp.
Referenced by CTreeQueryExec::CallFunction(), CMacroEngine::CallFunction(), CMacroResolver::CallFunction(), CQueryTreePrintFunc::PrintElement(), CQueryParseNode::SetLoc(), and ThrowCMacroExecException().
bool { ... } ::m_BoolConst |
Definition at line 252 of file query_parse.hpp.
bool CQueryParseNode::m_BoolConst |
Definition at line 252 of file query_parse.hpp.
Referenced by CQueryParseNode::GetBool().
|
private |
bitvector
Definition at line 81 of file query_exec_bv.hpp.
Referenced by CQueryEval_BV_Value< BV >::GetBV(), CQueryEval_BV_Value< BV >::ReleaseBV(), CQueryEval_BV_Value< BV >::Reset(), CQueryEval_BV_Value< BV >::SetBuffer(), and CQueryEval_BV_Value< BV >::SetBV().
|
private |
serialized bitvector
Definition at line 80 of file query_exec_bv.hpp.
Referenced by CQueryEval_BV_Value< BV >::GetBuffer(), CQueryEval_BV_Value< BV >::ReleaseBuffer(), CQueryEval_BV_Value< BV >::Reset(), CQueryEval_BV_Value< BV >::SetBuffer(), and CQueryEval_BV_Value< BV >::SetBV().
double CQueryParseNode::m_DoubleConst |
Definition at line 253 of file query_parse.hpp.
Referenced by CQueryParseNode::GetDouble().
double { ... } ::m_DoubleConst |
Definition at line 253 of file query_parse.hpp.
|
private |
Execution timing.
Definition at line 260 of file query_parse.hpp.
Referenced by CQueryParseNode::Elapsed(), and CQueryParseNode::SetElapsed().
|
protected |
Definition at line 242 of file query_exec.hpp.
Referenced by CTableQueryExec::EvalNext(), CTreeQueryExec::EvalNext(), CTableQueryExec::EvalStart(), CTreeQueryExec::EvalStart(), and CQueryExec::GetExceptionCount().
|
private |
Definition at line 319 of file query_exec.hpp.
Referenced by CQueryExecEvalFunc::operator()().
|
private |
Definition at line 257 of file query_parse.hpp.
Referenced by CQueryParseNode::IsExplicit(), and CQueryParseNode::SetExplicit().
|
protected |
Definition at line 238 of file query_exec.hpp.
Referenced by CQueryExec::AddFunc(), CQueryExec::CQueryExec(), CQueryExec::GetFunc(), and CQueryExec::~CQueryExec().
|
protected |
Definition at line 239 of file query_exec.hpp.
Referenced by CQueryExec::AddImplicitSearchFunc(), and CQueryExec::GetImplicitSearchFunc().
Int8 { ... } ::m_IntConst |
Definition at line 251 of file query_parse.hpp.
Int8 CQueryParseNode::m_IntConst |
Definition at line 251 of file query_parse.hpp.
Referenced by CQueryParseNode::GetInt().
|
private |
Reference to original location in query.
Definition at line 259 of file query_parse.hpp.
Referenced by CQueryParseNode::GetLoc(), and CQueryParseNode::SetLoc().
|
private |
Definition at line 258 of file query_parse.hpp.
Referenced by CQueryParseNode::IsNot(), and CQueryParseNode::SetNot().
|
protected |
Definition at line 224 of file query_exec_bv.hpp.
Referenced by CQueryFunction_BV_Logic< BV >::Evaluate().
|
private |
Definition at line 256 of file query_parse.hpp.
Referenced by CQueryParseNode::GetOrig(), CQueryParseNode::GetOriginalText(), and CQueryParseNode::GetStrValue().
|
protected |
Definition at line 119 of file query_exec.hpp.
Referenced by CSGQueryFunctionValue::Evaluate(), CQueryFuncRTVar::Evaluate(), CQueryFuncFunction::Evaluate(), CQueryFuncPromoteIdentifier::Evaluate(), CQueryFuncPromoteAndOr::Evaluate(), CQueryFuncPromoteLogic::Evaluate(), CQueryFunction_BV_In_Or< BV >::Evaluate(), CMQueryFunctionBase::GetContext(), CQueryFunctionBase::GetExec(), CQueryFuncPromoteBase::PreProcess(), CQueryFuncPromoteBase::ResolveFieldValue(), and CQueryFunctionBase::SetExec().
|
protected |
Definition at line 240 of file query_exec.hpp.
Referenced by CQueryExec::Evaluate(), CMacroExec::EvaluateTree(), CQueryExec::GetQTree(), CMacroExec::x_EvaluateQueryTree(), CMacroExec::x_GetTopUserNodeValue(), and CMacroExec::x_Init().
|
protected |
Definition at line 243 of file query_exec.hpp.
Referenced by CTableQueryExec::EvalNext(), CTreeQueryExec::EvalNext(), CTableQueryExec::EvalStart(), CTreeQueryExec::EvalStart(), and CQueryExec::GetQueriedCount().
|
private |
Definition at line 358 of file query_parse.hpp.
Referenced by CQueryParseTree::GetQueryTree(), and CQueryParseTree::SetQueryTree().
|
private |
Definition at line 249 of file query_parse.hpp.
Referenced by CQueryParseNode::GetBool(), CQueryParseNode::GetDouble(), CQueryParseNode::GetIdent(), CQueryParseNode::GetInt(), CQueryParseNode::GetNodeTypeAsString(), CQueryParseNode::GetStrValue(), CQueryParseNode::GetType(), CQueryParseNode::IsLogic(), and CQueryParseNode::IsValue().
|
private |
Definition at line 262 of file query_parse.hpp.
Referenced by CQueryParseNode::AttachUserObject(), CQueryParseNode::GetUserObject(), and CQueryParseNode::ResetUserObject().
|
private |
Definition at line 255 of file query_parse.hpp.
Referenced by CQueryParseNode::GetIdent(), and CQueryParseNode::GetStrValue().
unsigned CQueryParseNode::SSrcLoc::pos |
Position in the src line.
Definition at line 126 of file query_parse.hpp.
Referenced by CTreeQueryExec::CallFunction(), CMacroEngine::CallFunction(), CMacroResolver::CallFunction(), CQueryHighlightFunction::operator()(), CQueryTreePrintFunc::PrintElement(), CQueryParseNode::SetLoc(), and ThrowCMacroExecException().
|
friend |
Definition at line 114 of file query_exec.hpp.
|
friend |
Definition at line 228 of file query_exec.hpp.
|
friend |
Definition at line 245 of file query_parse.hpp.