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_;
Three dimensional vector class, using Real precision.
Holds state used during query evaluation.
query statement implementation
mol::QueryState CreateQueryState(const EntityHandle &h) const
std::vector< SelStack > sel_stacks_
const String & GetQueryString() const
Retrieve query String.
const QueryErrorDesc & GetErrorDescription() const
QueryImpl(const String &query_string="")
Construct new QueryImpl object.
std::vector< bool > inversion_stack_
std::vector< SelStmt > sel_values_
bool IsEmpty() const
Check if query was empty, ie matching all.
std::vector< std::set< size_t > > indices_
bool IsValid() const
Find out if the query String is valid.
std::vector< QueryImplP > bracketed_expr_
mol::QueryState CreateQueryState(const EntityView &v) const
QueryToken CurrentToken() const
QueryLexer(const String &query_string)
tok::Type GetType() const
const Range & GetRange() const
Get character range of this token.
bool IsEOF() const
Returns true if token is end of file (or end of line) token.
QueryToken(const Range &range, tok::Type type, const Range &value_range=Range())
const Range & GetValueRange() const
std::vector< SelItem > SelStack
std::vector< SelStmt > SelStmts
boost::variant< int, Real, WithinParam, StringOrRegexParam > ParamType
Struct to store info about GenericProperties parsed from the.
EntityPropertyMapper mapper
GenProp(EntityPropertyMapper epm)
bool operator==(const SelStmt &rhs)
SelStmt(Prop::ID id, CompOP op, const ParamType &parm)