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) {}
78 if (
this == &rhs)
return *
this;
83 string name()
const {
return d_name; }
84 void set_name(
const string &n) { d_name = n; }
86 Type type()
const {
return d_type; }
87 void set_type(
Type t) { d_type = t; }
89 D4EnumDefs *parent()
const {
return d_parent; }
90 void set_parent(
D4EnumDefs *e) { d_parent = e; }
92 bool empty()
const {
return d_tuples.empty(); }
94 void add_value(
const string &label,
long long value) {
95 d_tuples.push_back(tuple(label, value));
98 D4EnumValueIter value_begin() {
return d_tuples.begin(); }
99 D4EnumValueIter value_end() {
return d_tuples.end(); }
100 string &label(D4EnumValueIter i) {
return (*i).label; }
101 long long value(D4EnumValueIter i) {
return (*i).value; }
109 vector<D4EnumDef*> d_enums;
116 D4EnumDefCIter i = rhs.d_enums.begin();
117 while (i != rhs.d_enums.end()) {
121 d_parent = rhs.d_parent;
125 typedef vector<D4EnumDef*>::iterator D4EnumDefIter;
126 typedef vector<D4EnumDef*>::const_iterator D4EnumDefCIter;
134 D4EnumDefIter i = d_enums.begin();
135 while(i != d_enums.end()) {
141 if (
this == &rhs)
return *
this;
146 bool empty()
const {
return d_enums.empty(); }
148 D4Group *parent()
const {
return d_parent; }
149 void set_parent(
D4Group *p) { d_parent = p; }
156 add_enum_nocopy(
new D4EnumDef(*enum_def));
158 void add_enum_nocopy(
D4EnumDef *enum_def) {
159 enum_def->set_parent(
this);
160 d_enums.push_back(enum_def);
169 D4EnumDef *find_enum_def(
const string &name);
181 enum_def_copy->set_parent(
this);
182 d_enums.insert(i, enum_def_copy);
185 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.