41 class D4FilterClauseList;
50 unsigned long long start, stride, stop;
67 index(): start(0), stride(0), stop(0), rest(
false), empty(
false), dim_name(
"") {}
68 index(
unsigned long long i,
unsigned long long s,
unsigned long long e,
bool r,
bool em,
const std::string &n)
69 : start(i), stride(s), stop(e), rest(r), empty(em), dim_name(n) {}
72 index make_index() {
return index(0, 1, 0,
true ,
true ,
""); }
74 index make_index(
const std::string &is);
76 index make_index(
const std::string &i,
const std::string &s,
const std::string &e);
77 index make_index(
const std::string &i,
unsigned long long s,
const std::string &e);
79 index make_index(
const std::string &i,
const std::string &s);
80 index make_index(
const std::string &i,
unsigned long long s);
82 bool d_trace_scanning;
89 std::vector<index> d_indexes;
91 std::stack<BaseType*> d_basetype_stack;
95 std::string *expression() {
return &d_expr; }
97 void search_for_and_mark_arrays(
BaseType *btp);
101 D4Dimension *slice_dimension(
const std::string &
id,
const index &i);
103 void push_index(
const index &i) { d_indexes.push_back(i); }
105 void push_basetype(
BaseType *btp) { d_basetype_stack.push(btp); }
106 BaseType *top_basetype()
const {
return d_basetype_stack.empty() ? 0 : d_basetype_stack.top(); }
108 void pop_basetype() { d_basetype_stack.pop(); }
110 void throw_not_found(
const std::string &
id,
const std::string &ident);
111 void throw_not_array(
const std::string &
id,
const std::string &ident);
114 void add_filter_clause(
const std::string &op,
const std::string &arg1,
const std::string &arg2);
118 friend class D4CEParser;
121 D4ConstraintEvaluator() : d_trace_scanning(
false), d_trace_parsing(
false), d_result(
false), d_expr(
""), d_dmr(0) { }
122 D4ConstraintEvaluator(
DMR *dmr) : d_trace_scanning(
false), d_trace_parsing(
false), d_result(
false), d_expr(
""), d_dmr(dmr) { }
126 bool parse(
const std::string &expr);
128 bool trace_scanning()
const {
return d_trace_scanning; }
129 void set_trace_scanning(
bool ts) { d_trace_scanning = ts; }
131 bool trace_parsing()
const {
return d_trace_parsing; }
132 void set_trace_parsing(
bool tp) { d_trace_parsing = tp; }
134 bool result()
const {
return d_result; }
135 void set_result(
bool r) { d_result = r; }
137 DMR *dmr()
const {
return d_dmr; }
138 void set_dmr(
DMR *dmr) { d_dmr = dmr; }
140 void error(
const libdap::location &l,
const std::string &m);
top level DAP object to house generic methods
string remove_quotes(const string &s)
The basic data type for the DODS DAP types.