19 #ifndef OST_QUERY_IMPL_HH
20 #define OST_QUERY_IMPL_HH
26 #include <boost/logic/tribool.hpp>
40 namespace ost {
namespace mol {
namespace impl {
105 void EatWhitespaces();
199 void ExtractSelStmts(
const Node* ast);
241 bool ExpectLogicalOperator(
const QueryToken& token);
245 bool ExpectComparisonOperator(
const QueryToken& token);
269 bool empty_optimize_;
271 std::vector<GenProp> gen_prop_list_;
std::vector< std::set< size_t > > indices_
bool IsValid() const
Find out if the query String is valid.
std::vector< bool > inversion_stack_
bool IsEmpty() const
Check if query was empty, ie matching all.
bool IsEOF() const
Returns true if token is end of file (or end of line) token.
Struct to store info about GenericProperties parsed from the.
const Range & GetRange() const
Get character range of this token.
std::vector< SelStmt > sel_values_
const QueryErrorDesc & GetErrorDescription() const
bool operator==(const SelStmt &rhs)
GenProp(EntityPropertyMapper epm)
QueryToken CurrentToken() const
QueryLexer(const String &query_string)
const String & GetQueryString() const
Retrieve query String.
std::vector< SelStmt > SelStmts
boost::variant< int, Real, WithinParam, StringOrRegexParam > ParamType
Three dimensional vector class, using Real precision.
Holds state used during query evaluation.
QueryImpl(const String &query_string="")
Construct new QueryImpl object.
tok::Type GetType() const
const Range & GetValueRange() const
query statement implementation
EntityPropertyMapper mapper
std::vector< SelItem > SelStack
std::vector< SelStack > sel_stacks_
mol::QueryState CreateQueryState(const EntityHandle &h) const
std::vector< QueryImplP > bracketed_expr_
SelStmt(Prop::ID id, CompOP op, const ParamType &parm)