libdap++
Updated for version 3.13.1
|
Evaluate a constraint expression. More...
#include <ConstraintEvaluator.h>
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 |
Public Member Functions | |
void | append_clause (int op, rvalue *arg1, rvalue_list *arg2) |
Add a clause to a constraint expression. More... | |
void | append_clause (bool_func func, rvalue_list *args) |
Add a clause to a constraint expression. More... | |
void | append_clause (btp_func func, rvalue_list *args) |
Add a clause to a constraint expression. More... | |
void | append_constant (BaseType *btp) |
bool | boolean_expression () |
Does the current constraint expression return a boolean value? More... | |
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. More... | |
DDS * | eval_function_clauses (DDS &dds) |
Evaluate a function-valued constraint expression that contains several function calls. More... | |
DataDDS * | eval_function_clauses (DataDDS &dds) |
Evaluate a function-valued constraint expression that contains several function calls. Takes and returns a DataDDS. More... | |
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. More... | |
bool | find_function (const string &name, bool_func *f) const |
Find a Boolean function with a given name in the function list. More... | |
bool | find_function (const string &name, btp_func *f) const |
Find a BaseType function with a given name in the function list. More... | |
bool | find_function (const string &name, proj_func *f) const |
Find a projection function with a given name in the function list. More... | |
bool | function_clauses () |
Does the current constraint expression contain function clauses. More... | |
bool | functional_expression () |
Does the current constraint expression return a BaseType pointer? This method does not evaluate the clause, it provides information to the evaluator regarding how to evaluate the clause. More... | |
void | parse_constraint (const string &constraint, DDS &dds) |
Parse the constraint expression given the current DDS. More... | |
virtual | ~ConstraintEvaluator () |
Friends | |
class | func_name_is |
Definition at line 42 of file ConstraintEvaluator.h.
typedef std::vector<Clause *>::const_iterator libdap::ConstraintEvaluator::Clause_citer |
Definition at line 65 of file ConstraintEvaluator.h.
typedef std::vector<Clause *>::iterator libdap::ConstraintEvaluator::Clause_iter |
Definition at line 66 of file ConstraintEvaluator.h.
typedef std::vector<BaseType *>::const_iterator libdap::ConstraintEvaluator::Constants_citer |
Definition at line 68 of file ConstraintEvaluator.h.
typedef std::vector<BaseType *>::iterator libdap::ConstraintEvaluator::Constants_iter |
Definition at line 69 of file ConstraintEvaluator.h.
libdap::ConstraintEvaluator::ConstraintEvaluator | ( | ) |
Definition at line 52 of file ConstraintEvaluator.cc.
References libdap::ServerFunctionsList::TheList().
|
virtual |
Definition at line 64 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 115 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 131 of file ConstraintEvaluator.cc.
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 147 of file ConstraintEvaluator.cc.
void libdap::ConstraintEvaluator::append_constant | ( | BaseType * | btp | ) |
The Constraint Evaluator maintains a list of BaseType pointers for all the constants that the constraint expression parser generates. These objects are deleted by the Constraint Evaluator 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 161 of file ConstraintEvaluator.cc.
bool libdap::ConstraintEvaluator::boolean_expression | ( | ) |
Definition at line 311 of file ConstraintEvaluator.cc.
ConstraintEvaluator::Clause_iter libdap::ConstraintEvaluator::clause_begin | ( | ) |
Returns the first clause in a parsed constraint expression.
Definition at line 81 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 88 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 95 of file ConstraintEvaluator.cc.
Definition at line 206 of file ConstraintEvaluator.cc.
References libdap::Clause::value().
Referenced by libdap::DODSFilter::send_data(), and libdap::DODSFilter::send_data_ddx().
This method can be called for any function-valued constraint expression. Unlike eval_function(), it will package the return value in a new DDS object. The server should free this object once it has been serialized and sent.
Definition at line 258 of file ConstraintEvaluator.cc.
References libdap::DDS::add_var_nocopy(), libdap::DDS::get_dataset_name(), libdap::DDS::get_factory(), and libdap::Clause::value().
Referenced by libdap::DODSFilter::send_data(), and libdap::DODSFilter::send_data_ddx().
Definition at line 287 of file ConstraintEvaluator.cc.
References libdap::DDS::add_var_nocopy(), libdap::DDS::get_dataset_name(), libdap::DDS::get_factory(), libdap::DataDDS::get_protocol(), libdap::DataDDS::get_version(), and libdap::Clause::value().
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 331 of file ConstraintEvaluator.cc.
References DBG.
Referenced by libdap::Sequence::read_row(), libdap::Int8::serialize(), libdap::Int64::serialize(), libdap::UInt64::serialize(), libdap::Int16::serialize(), libdap::UInt16::serialize(), libdap::UInt32::serialize(), libdap::Float64::serialize(), libdap::Float32::serialize(), libdap::Byte::serialize(), libdap::Int32::serialize(), libdap::Str::serialize(), libdap::Constructor::serialize(), libdap::Vector::serialize(), and libdap::Grid::serialize().
bool libdap::ConstraintEvaluator::find_function | ( | const string & | name, |
bool_func * | f | ||
) | const |
Definition at line 167 of file ConstraintEvaluator.cc.
References libdap::ServerFunctionsList::find_function().
bool libdap::ConstraintEvaluator::find_function | ( | const string & | name, |
btp_func * | f | ||
) | const |
Definition at line 173 of file ConstraintEvaluator.cc.
References libdap::ServerFunctionsList::find_function().
bool libdap::ConstraintEvaluator::find_function | ( | const string & | name, |
proj_func * | f | ||
) | const |
Definition at line 179 of file ConstraintEvaluator.cc.
References libdap::ServerFunctionsList::find_function().
bool libdap::ConstraintEvaluator::function_clauses | ( | ) |
This method does not evaluate the clauses, it provides information to the evaluator regarding how to evaluate the clause.
Definition at line 228 of file ConstraintEvaluator.cc.
References libdap::Clause::value_clause().
Referenced by libdap::DODSFilter::send_data(), and libdap::DODSFilter::send_data_ddx().
bool libdap::ConstraintEvaluator::functional_expression | ( | ) |
Definition at line 193 of file ConstraintEvaluator.cc.
References libdap::Clause::value_clause().
Referenced by libdap::DODSFilter::send_data(), libdap::DODSFilter::send_data_ddx(), 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 365 of file ConstraintEvaluator.cc.
References ce_expr_delete_buffer(), ce_expr_string(), ce_expr_switch_to_buffer(), ce_exprdebug, and ce_exprparse().
Referenced by libdap::DODSFilter::send_data(), libdap::DODSFilter::send_data_ddx(), libdap::DODSFilter::send_dds(), and libdap::DODSFilter::send_ddx().
|
friend |
Definition at line 62 of file ConstraintEvaluator.h.