#include <ConstraintEvaluator.h>
Classes | |
struct | function |
Public Types | |
typedef std::vector< Clause * > ::const_iterator | Clause_citer |
typedef std::vector< Clause * > ::iterator | Clause_iter |
typedef std::vector< BaseType * > ::const_iterator | Constants_citer |
typedef std::vector< BaseType * > ::iterator | Constants_iter |
typedef std::list< function > ::const_iterator | Functions_citer |
typedef std::list< function > ::iterator | Functions_iter |
Public Member Functions | |
void | append_clause (btp_func func, rvalue_list *args) |
Add a clause to a constraint expression. | |
void | append_clause (bool_func func, rvalue_list *args) |
Add a clause to a constraint expression. | |
void | append_clause (int op, rvalue *arg1, rvalue_list *arg2) |
Add a clause to a constraint expression. | |
void | append_constant (BaseType *btp) |
bool | boolean_expression () |
Does the current constraint expression return a boolean value? | |
Clause_iter | clause_begin () |
Clause_iter | clause_end () |
bool | clause_value (Clause_iter &i, DDS &dds) |
ConstraintEvaluator () | |
BaseType * | eval_function (DDS &dds, const string &dataset) |
Evaluate a function-valued constraint expression. | |
bool | eval_selection (DDS &dds, const string &dataset) |
Evaluate a boolean-valued constraint expression. This is main method for the evaluator ans is called by the BaseType::serialize() methods. | |
bool | functional_expression () |
Does the current constraint expression return a BaseType pointer? | |
void | parse_constraint (const string &constraint, DDS &dds) |
Parse the constraint expression given the current DDS. | |
virtual | ~ConstraintEvaluator () |
External Function Accessors | |
The Constraint Evaluator carries with it a list of external functions it can use while evaluate a constraint expression. If a constraint contains any of these functions, the entries in the list allow the parser to evaluate it. The functions are of three types: those that return boolean values, those that return real (also called BaseType) values, and those that are applied during evaluation of the project for side effect
| |
void | add_function (const string &name, proj_func f) |
Add a projection function to the list. | |
void | add_function (const string &name, btp_func f) |
Add a BaseType function to the list. | |
void | add_function (const string &name, bool_func f) |
Add a boolean function to the list. | |
bool | find_function (const string &name, proj_func *f) const |
Find a projection function with a given name in the function list. | |
bool | find_function (const string &name, btp_func *f) const |
Find a BaseType function with a given name in the function list. | |
bool | find_function (const string &name, bool_func *f) const |
Find a Boolean function with a given name in the function list. | |
Friends | |
class | func_name_is |
Definition at line 38 of file ConstraintEvaluator.h.
typedef std::vector<Clause *>::const_iterator libdap::ConstraintEvaluator::Clause_citer |
Definition at line 82 of file ConstraintEvaluator.h.
typedef std::vector<Clause *>::iterator libdap::ConstraintEvaluator::Clause_iter |
Definition at line 83 of file ConstraintEvaluator.h.
typedef std::vector<BaseType *>::const_iterator libdap::ConstraintEvaluator::Constants_citer |
Definition at line 85 of file ConstraintEvaluator.h.
typedef std::vector<BaseType *>::iterator libdap::ConstraintEvaluator::Constants_iter |
Definition at line 86 of file ConstraintEvaluator.h.
typedef std::list<function>::const_iterator libdap::ConstraintEvaluator::Functions_citer |
Definition at line 88 of file ConstraintEvaluator.h.
typedef std::list<function>::iterator libdap::ConstraintEvaluator::Functions_iter |
Definition at line 89 of file ConstraintEvaluator.h.
libdap::ConstraintEvaluator::ConstraintEvaluator | ( | ) |
Definition at line 49 of file ConstraintEvaluator.cc.
References libdap::register_functions().
libdap::ConstraintEvaluator::~ConstraintEvaluator | ( | ) | [virtual] |
Definition at line 54 of file ConstraintEvaluator.cc.
void libdap::ConstraintEvaluator::add_function | ( | const string & | name, | |
proj_func | f | |||
) |
void libdap::ConstraintEvaluator::add_function | ( | const string & | name, | |
btp_func | f | |||
) |
void libdap::ConstraintEvaluator::add_function | ( | const string & | name, | |
bool_func | f | |||
) |
Definition at line 198 of file ConstraintEvaluator.cc.
References func_name_is.
Referenced by libdap::register_functions().
void libdap::ConstraintEvaluator::append_clause | ( | btp_func | func, | |
rvalue_list * | args | |||
) |
This function adds a real-valued (BaseType) function clause to the constraint expression.
func | A pointer to a BaseType function from the list of supported functions. | |
args | A list of arguments to that function. |
Definition at line 142 of file ConstraintEvaluator.cc.
void libdap::ConstraintEvaluator::append_clause | ( | bool_func | func, | |
rvalue_list * | args | |||
) |
This function adds a boolean function clause to the constraint expression.
func | A pointer to a boolean function from the list of supported functions. | |
args | A list of arguments to that function. |
Definition at line 125 of file ConstraintEvaluator.cc.
void libdap::ConstraintEvaluator::append_clause | ( | int | op, | |
rvalue * | arg1, | |||
rvalue_list * | arg2 | |||
) |
This function adds an operator clause to the constraint expression.
op | An integer indicating the operator in use. These values are generated by bison . | |
arg1 | A pointer to the argument on the left side of the operator. | |
arg2 | A pointer to a list of the arguments on the right side of the operator. |
Definition at line 108 of file ConstraintEvaluator.cc.
void libdap::ConstraintEvaluator::append_constant | ( | BaseType * | btp | ) |
The DDS maintains a list of BaseType pointers for all the constants that the constraint expression parser generates. These objects are deleted by the DDS destructor. Note that there are no list accessors; these constants are never accessed from the list. The list is simply a convenient way to make sure the constants are disposed of properly.
Definition at line 157 of file ConstraintEvaluator.cc.
bool libdap::ConstraintEvaluator::boolean_expression | ( | ) |
Definition at line 301 of file ConstraintEvaluator.cc.
ConstraintEvaluator::Clause_iter libdap::ConstraintEvaluator::clause_begin | ( | ) |
Returns the first clause in a parsed constraint expression.
Definition at line 70 of file ConstraintEvaluator.cc.
ConstraintEvaluator::Clause_iter libdap::ConstraintEvaluator::clause_end | ( | ) |
Returns a reference to the end of the list of clauses in a parsed constraint expression. It does not reference the last clause
Definition at line 78 of file ConstraintEvaluator.cc.
bool libdap::ConstraintEvaluator::clause_value | ( | Clause_iter & | iter, | |
DDS & | dds | |||
) |
Returns the value of the indicated clause of a constraint expression.
Definition at line 86 of file ConstraintEvaluator.cc.
Definition at line 285 of file ConstraintEvaluator.cc.
References libdap::Clause::value().
Referenced by libdap::DODSFilter::send_data().
bool libdap::ConstraintEvaluator::eval_selection | ( | DDS & | dds, | |
const string & | dataset | |||
) |
dds | Use these variables when evaluating the expressions. | |
dataset | This string is passed to the read() methods. |
Definition at line 323 of file ConstraintEvaluator.cc.
References DBG.
Referenced by libdap::Sequence::read_row(), libdap::Vector::serialize(), libdap::UInt32::serialize(), libdap::UInt16::serialize(), libdap::Structure::serialize(), libdap::Str::serialize(), libdap::Int32::serialize(), libdap::Int16::serialize(), libdap::Grid::serialize(), libdap::Float64::serialize(), libdap::Float32::serialize(), and libdap::Byte::serialize().
bool libdap::ConstraintEvaluator::find_function | ( | const string & | name, | |
proj_func * | f | |||
) | const |
Definition at line 257 of file ConstraintEvaluator.cc.
bool libdap::ConstraintEvaluator::find_function | ( | const string & | name, | |
btp_func * | f | |||
) | const |
Definition at line 241 of file ConstraintEvaluator.cc.
bool libdap::ConstraintEvaluator::find_function | ( | const string & | name, | |
bool_func * | f | |||
) | const |
Definition at line 225 of file ConstraintEvaluator.cc.
bool libdap::ConstraintEvaluator::functional_expression | ( | ) |
Definition at line 274 of file ConstraintEvaluator.cc.
References libdap::Clause::value_clause().
Referenced by libdap::DODSFilter::send_data(), libdap::DODSFilter::send_dds(), and libdap::DODSFilter::send_ddx().
void libdap::ConstraintEvaluator::parse_constraint | ( | const string & | constraint, | |
DDS & | dds | |||
) |
Evaluate the constraint expression; return the value of the expression. As a side effect, mark the DDS so that BaseType's mfuncs can be used to correctly read the variable's value and send it to the client.
constraint | A string containing the constraint expression. | |
dds | The DDS that provides the environment within which the constraint is evaluated. |
Throws | Error if the constraint does not parse. |
Definition at line 359 of file ConstraintEvaluator.cc.
References ce_expr_delete_buffer(), ce_expr_string(), ce_expr_switch_to_buffer(), and ce_exprparse().
Referenced by libdap::DODSFilter::send_data(), libdap::DODSFilter::send_dds(), and libdap::DODSFilter::send_ddx().
friend class func_name_is [friend] |