51 tuple(
const string &l,
long long v) : label(l), value(v) {}
54 vector<tuple> d_tuples;
60 d_parent = rhs.d_parent;
61 d_tuples = rhs.d_tuples;
64 void print_value(
XMLWriter &xml,
const D4EnumDef::tuple &tuple)
const;
67 typedef vector<tuple>::iterator D4EnumValueIter;
69 D4EnumDef() : d_name(
""), d_type(dods_null_c), d_parent(0) {}
75 string name()
const {
return d_name; }
76 void set_name(
const string &n) { d_name = n; }
78 Type type()
const {
return d_type; }
79 void set_type(
Type t) { d_type = t; }
81 D4EnumDefs *parent()
const {
return d_parent; }
82 void set_parent(
D4EnumDefs *e) { d_parent = e; }
84 bool empty()
const {
return d_tuples.empty(); }
86 void add_value(
const string &label,
long long value) {
87 d_tuples.push_back(tuple(label, value));
90 D4EnumValueIter value_begin() {
return d_tuples.begin(); }
91 D4EnumValueIter value_end() {
return d_tuples.end(); }
92 string &label(D4EnumValueIter i) {
return (*i).label; }
93 long long value(D4EnumValueIter i) {
return (*i).value; }
101 vector<D4EnumDef*> d_enums;
108 D4EnumDefCIter i = rhs.d_enums.begin();
109 while (i != rhs.d_enums.end()) {
113 d_parent = rhs.d_parent;
117 typedef vector<D4EnumDef*>::iterator D4EnumDefIter;
118 typedef vector<D4EnumDef*>::const_iterator D4EnumDefCIter;
126 D4EnumDefIter i = d_enums.begin();
127 while(i != d_enums.end()) {
133 if (
this == &rhs)
return *
this;
138 bool empty()
const {
return d_enums.empty(); }
140 D4Group *parent()
const {
return d_parent; }
141 void set_parent(
D4Group *p) { d_parent = p; }
148 add_enum_nocopy(
new D4EnumDef(*enum_def));
150 void add_enum_nocopy(
D4EnumDef *enum_def) {
151 enum_def->set_parent(
this);
152 d_enums.push_back(enum_def);
161 D4EnumDef *find_enum_def(
const string &name);
173 enum_def_copy->set_parent(
this);
174 d_enums.insert(i, enum_def_copy);
177 void print_dap4(
XMLWriter &xml,
bool constrained =
false)
const;
bool is_valid_enum_value(long long value)
void insert_enum(D4EnumDef *enum_def, D4EnumDefIter i)
Insert a D4EnumDef. Insert a D4EnumDef before the position specified by the iterator.
D4EnumDefIter enum_end()
Get an iterator to the end of the enumerations.
void add_enum(D4EnumDef *enum_def)
D4EnumDefIter enum_begin()
Get an iterator to the start of the enumerations.
top level DAP object to house generic methods
Type
Identifies the data type.