34#include "grid_utils.h"
35#include "gse_parser.h"
39#include "GridGeoConstraint.h"
45void gse_restart(FILE * in);
48void gse_delete_buffer(
void *buffer);
49void *gse_string(
const char *yy_str);
59void get_grids(
BaseType *bt, vector<Grid *> *grids)
65 grids->push_back(
static_cast<Grid*
>(bt));
68 case dods_structure_c: {
90void get_grids(
DDS &dds, vector<Grid *> *grids)
112bool is_geo_grid(
Grid *grid)
115 GridGeoConstraint gc(grid);
125void parse_gse_expression(gse_arg *arg,
BaseType *expr)
130 bool status = gse_parse(arg) == 0;
131 gse_delete_buffer(cls);
133 throw Error(malformed_expr,
"Error parsing grid selection.");
136static void apply_grid_selection_expr(
Grid *grid, GSEClause *clause)
140 Grid::Map_iter map_i = grid->
map_begin();
141 while (map_i != grid->
map_end() && (*map_i)->name() != clause->get_map_name())
145 throw Error(malformed_expr,
"The map vector '" + clause->get_map_name()
146 +
"' is not in the grid '" + grid->
name() +
"'.");
151 Array *map =
dynamic_cast < Array *
>((*map_i));
153 throw InternalErr(__FILE__, __LINE__,
"Expected an Array");
160 <<
"The expressions passed to grid() do not result in an inclusive \n"
161 <<
"subset of '" << clause->get_map_name()
162 <<
"'. The map's values range " <<
"from "
163 << clause->get_map_min_value() <<
" to "
164 << clause->get_map_max_value() <<
".";
165 throw Error(malformed_expr,msg.str());
168 DBG(cerr <<
"Setting constraint on " << map->
name() <<
"[" << start <<
":" << stop <<
"]" << endl);
175void apply_grid_selection_expressions(
Grid * grid, vector < GSEClause * >clauses)
177 vector < GSEClause * >::iterator clause_i = clauses.begin();
178 while (clause_i != clauses.end())
179 apply_grid_selection_expr(grid, *clause_i++);
A multidimensional array of identical data types.
virtual int dimension_start(Dim_iter i, bool constrained=false)
Return the start index of a dimension.
virtual int dimension_stop(Dim_iter i, bool constrained=false)
Return the stop index of the constraint.
virtual void add_constraint(Dim_iter i, int start, int stride, int stop)
Adds a constraint to an Array dimension.
std::vector< dimension >::iterator Dim_iter
The basic data type for the DODS DAP types.
virtual string name() const
Returns the name of the class instance.
virtual Type type() const
Returns the type of the class instance.
void set_read_p(bool state) override
Set the 'read_p' property for the Constructor and its members.
Vars_iter var_end()
Return an iterator.
A class for error processing.
Holds the Grid data type.
Map_iter map_begin()
Returns an iterator referencing the first Map vector.
Array * get_array()
Returns the Grid Array. This method returns the array using an Array*, so no cast is required.
A class for software fault reporting.
Holds a structure (aggregate) type.
top level DAP object to house generic methods
string extract_string_argument(BaseType *arg)