53 Clause::Clause(
const int oper, rvalue *a1, rvalue_list *rv)
54 : _op(oper), _b_func(0), _bt_func(0), _argc(0), _arg1(a1), _args(rv)
59 Clause::Clause(bool_func func, rvalue_list *rv)
60 : _op(0), _b_func(func), _bt_func(0), _argc(0), _arg1(0), _args(rv)
65 _argc = _args->size();
70 Clause::Clause(btp_func func, rvalue_list *rv)
71 : _op(0), _b_func(0), _bt_func(func), _argc(0), _arg1(0), _args(rv)
76 _argc = _args->size();
81 Clause::Clause() : _op(0), _b_func(0), _bt_func(0), _argc(0), _arg1(0), _args(0)
85 delete_rvalue(rvalue *rv)
93 delete _arg1; _arg1 = 0;
99 for_each(_args->begin(), _args->end(), delete_rvalue);
100 delete _args; _args = 0;
113 bool relational = (_op && !_b_func && !_bt_func);
115 bool boolean = (!_op && _b_func && !_bt_func);
117 bool basetype = (!_op && !_b_func && _bt_func);
120 return _arg1 && _args;
121 else if (
boolean || basetype)
133 return _op || _b_func;
142 return (_bt_func != 0);
159 assert(_op || _b_func);
168 for (rvalue_list_iter i = _args->begin();
169 i != _args->end() && !result;
171 result = result || btp->
ops((*i)->bvalue(dds), _op);
180 (*_b_func)(_argc, argv, dds, &result);
188 "A selection expression must contain only boolean clauses.");
216 (*_bt_func)(_argc, argv, dds, value);
234 (*value)->set_send_p(
true);
235 (*value)->set_read_p(
true);
244 "Clause::value() was called in a context expecting a BaseType pointer return, but the Clause was boolean-valued instead.");
top level DAP object to house generic methods
A class for software fault reporting.
bool value(DDS &dds)
Evaluate a clause which returns a boolean value This method must only be evaluated for clauses with r...
BaseType ** build_btp_args(rvalue_list *args, DDS &dds)
The basic data type for the DODS DAP types.
virtual bool ops(BaseType *b, int op)
Evaluate relational operators.
bool OK()
Checks the "representation invariant" of a clause.
bool value_clause()
Return true if the clause returns a value in a BaseType pointer.
bool boolean_clause()
Return true if the clause returns a boolean value.