1 #ifndef UTIL__QUERY_EXEC_HPP__
2 #define UTIL__QUERY_EXEC_HPP__
167 {
return m_ImplicitSearchFunc.get(); }
172 {
return m_FuncReg[(size_t)func_type]; }
193 bool& ) {
return false; }
195 Int8& ) {
return false; }
197 double& ) {
return false; }
202 bool& ) {
return false; }
204 Int8& ) {
return false; }
206 double& ) {
return false; }
292 if (parent && parent->
GetValue().IsLogic()) {
307 "Query execution failed. Unknown function:" + qnode.
GetOrig());
Expression evaluation visitor functor.
Query execution environment holds the function registry and the execution context.
Base class for evaluation functions.
Query tree and associated utility methods.
definition of a Culling tree
#define NCBI_THROW(exception_class, err_code, message)
Generic macro to throw an exception, given the exception class, error code and message string.
int64_t Int8
8-byte (64-bit) signed integer
CQueryParseTree * m_QTree
void SetExec(CQueryExec &qexec)
Set reference on parent query execution class.
void SetElapsed(double e)
Set node timing.
const string & GetOrig() const
int GetQueriedCount() const
CQueryFunctionBase * GetFunc(CQueryParseNode::EType func_type)
Return query function pointer (if registered).
virtual bool ResolveIdentifier(const TFieldID &, double &)
virtual bool EvalComplete()
virtual bool ResolveIdentifier(const TFieldID &, Int8 &)
vector< CQueryParseTree::TNode * > TArgVector
Vector for easy argument access.
ETreeTraverseCode operator()(CTreeNode< CQueryParseNode > &tr, int delta)
CQueryExecEvalFunc(CQueryExec &exec)
virtual TFieldID GetIdentifier(const std::string &)
bool IsValue() const
Returns TRUE if node is value (INT, String, etc.)
unique_ptr< CQueryFunctionBase > m_ImplicitSearchFunc
virtual bool ResolveIdentifier(const std::string &, bool &)
If query has an identifier, this will resolve it in an application-specific way.
CQueryFunctionBase * GetImplicitSearchFunc()
CQueryExec & GetExec()
Get reference on parent execution environment.
virtual void CallFunction(const string &name, CQueryParseTree::TNode &node)
Extend this function to look up and invoke functions that appear in the query.
virtual CQueryParseNode::EType IdentifierType(const std::string &)
Some applications may know the type of an identifier.
CQueryParseTree * GetQTree()
int GetExceptionCount() const
virtual bool ResolveIdentifier(const std::string &, Int8 &)
virtual void Evaluate(CQueryParseTree::TNode &qnode)=0
Query node evaluation function (performs actual programmed by the node action)
virtual bool ResolveIdentifier(const TFieldID &, std::string &)
virtual bool EvalNext(CQueryParseTree &)
Move to (iterate) to next entry.
vector< CQueryFunctionBase * > TFuncReg
virtual bool ResolveIdentifier(const std::string &, double &)
virtual bool HasIdentifier(const std::string &)
virtual bool EvaluateChildrenFirst() const
Do we evaluate before visiting the nodes children or after.
virtual bool ResolveIdentifier(const std::string &, std::string &)
CQueryExec(const CQueryExec &)
virtual bool ResolveIdentifier(const TFieldID &, bool &)
CQueryExec & operator=(const CQueryExec &)
@ eNotSet
Produced by the (private) default constructor.
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
double Elapsed(void) const
Return time elapsed since first Start() or last Restart() call (in seconds).
@ eStart
Start timer immediately after creating.
ETreeTraverseCode
Tree traverse code returned by the traverse predicate function.
bool IsLeaf() const
Report whether this is a leaf node.
const TValue & GetValue(void) const
Return node's value.
const TTreeType * GetParent(void) const
Get node's parent.
@ eTreeTraverse
Keep traversal.
@ eTreeTraverseStepOver
Do not traverse current node (pick the next one)
Defines: CTimeFormat - storage class for time format.
Int4 delta(size_t dimension_, const Int4 *score_)
Query string parsing components.
NCBI_XUTIL_EXPORT
Parameter to control printing diagnostic message about conversion of static array data from a differe...