48 unsigned long long start, stride, stop;
58 index(): start(0), stride(0), stop(0), rest(
false), empty(
false) {}
59 index(
unsigned long long i,
unsigned long long s,
unsigned long long e,
bool r,
bool em)
60 : start(i), stride(s), stop(e), rest(r), empty(em) {}
63 index make_index() {
return index(0, 1, 0,
true ,
true ); }
65 index make_index(
const std::string &is);
67 index make_index(
const std::string &i,
const std::string &s,
const std::string &e);
68 index make_index(
const std::string &i,
unsigned long long s,
const std::string &e);
70 index make_index(
const std::string &i,
const std::string &s);
71 index make_index(
const std::string &i,
unsigned long long s);
73 bool d_trace_scanning;
80 std::vector<index> d_indexes;
82 std::stack<BaseType*> d_basetype_stack;
86 std::string *expression() {
return &d_expr; }
88 void set_array_slices(
const std::string &
id,
Array *a);
90 void search_for_and_mark_arrays(
BaseType *btp);
94 D4Dimension *slice_dimension(
const std::string &
id,
const index &i);
96 void push_index(
const index &i) { d_indexes.push_back(i); }
98 void push_basetype(
BaseType *btp) { d_basetype_stack.push(btp); }
99 BaseType *top_basetype()
const {
return d_basetype_stack.empty() ? 0 : d_basetype_stack.top(); }
101 void pop_basetype() { d_basetype_stack.pop(); }
103 void throw_not_found(
const std::string &
id,
const std::string &ident);
104 void throw_not_array(
const std::string &
id,
const std::string &ident);
106 friend class D4CEParser;
109 D4ConstraintEvaluator() : d_trace_scanning(
false), d_trace_parsing(
false), d_result(
false), d_expr(
""), d_dmr(0) { }
110 D4ConstraintEvaluator(
DMR *dmr) : d_trace_scanning(
false), d_trace_parsing(
false), d_result(
false), d_expr(
""), d_dmr(dmr) { }
114 bool parse(
const std::string &expr);
116 bool trace_scanning()
const {
return d_trace_scanning; }
117 void set_trace_scanning(
bool ts) { d_trace_scanning = ts; }
119 bool trace_parsing()
const {
return d_trace_parsing; }
120 void set_trace_parsing(
bool tp) { d_trace_parsing = tp; }
122 bool result()
const {
return d_result; }
123 void set_result(
bool r) { d_result = r; }
125 DMR *dmr()
const {
return d_dmr; }
126 void set_dmr(
DMR *dmr) { d_dmr = dmr; }
128 void error(
const libdap::location &l,
const std::string &m);
The basic data type for the DODS DAP types.
A multidimensional array of identical data types.