46#include "dods-limits.h"
54make_rvalue_list(rvalue *rv)
58 rvalue_list *rvals =
new rvalue_list;
60 return append_rvalue_list(rvals, rv);
69append_rvalue_list(rvalue_list *rvals, rvalue *rv)
97 throw Error(malformed_expr,
string(
"Malformed argument list (")
98 + long_to_string(argc) +
string(
")."));
102 argv[argc] =
nullptr;
106 for (
auto btp: *args) {
107 argv[i++] = btp->bvalue(dds);
119 for (rvalue::Args_iter i = args->begin(); i != args->end() && index < argc + 1; ++i)
120 argv[index++] = (*i)->bvalue(dds);
127 throw InternalErr(__FILE__, __LINE__,
"index out of range.");
133rvalue::rvalue(BaseType *bt): d_value(bt), d_func(0), d_args(0)
136rvalue::rvalue(btp_func f, vector<rvalue *> *a) : d_value(0), d_func(f), d_args(a)
139rvalue::rvalue(): d_value(0), d_func(0), d_args(0)
151 for (std::vector<rvalue *>::iterator iter = d_args->begin(); iter != d_args->end(); ++iter) {
163 return d_value->name();
184 (*d_func)(d_args->size(), argv, dds, &ret_val);
The basic data type for the DODS DAP types.
A class for error processing.
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)