45#include "dods-limits.h"
53rvalue_list *make_rvalue_list(
rvalue *rv) {
56 rvalue_list *rvals =
new rvalue_list;
58 return append_rvalue_list(rvals, rv);
66rvalue_list *append_rvalue_list(rvalue_list *rvals,
rvalue *rv) {
90 throw Error(malformed_expr,
string(
"Malformed argument list (") + long_to_string(argc) +
string(
")."));
98 for (
auto btp : *args) {
99 argv[i++] = btp->bvalue(dds);
111 for (rvalue::Args_iter i = args->begin(); i != args->end() && index < argc + 1; ++i)
112 argv[index++] = (*i)->bvalue(dds);
119 throw InternalErr(__FILE__, __LINE__,
"index out of range.");
125rvalue::rvalue(
BaseType *bt) : d_value(bt), d_func(0), d_args(0) {}
127rvalue::rvalue(btp_func f, vector<rvalue *> *a) : d_value(0), d_func(f), d_args(a) {}
129rvalue::rvalue() : d_value(0), d_func(0), d_args(0) {}
139 for (std::vector<rvalue *>::iterator iter = d_args->begin(); iter != d_args->end(); ++iter) {
146string rvalue::value_name() {
149 return d_value->name();
167 (*d_func)(d_args->size(), argv, dds, &ret_val);
The basic data type for the DODS DAP types.
A class for error processing.
A class for software fault reporting.
BaseType * bvalue(DDS &dds)
top level DAP object to house generic methods
bool size_ok(unsigned int sz, unsigned int nelem)
sanitize the size of an array. Test for integer overflow when dynamically allocating an array.
BaseType ** build_btp_args(const rvalue_list *args, DDS &dds)