51 tuple(
const string &l,
long long v) : label(l), value(v) {}
54 vector<tuple> d_tuples;
59 d_parent = rhs.d_parent;
60 d_tuples = rhs.d_tuples;
63 void print_value(
XMLWriter &xml,
const D4EnumDef::tuple &tuple)
const;
66 typedef vector<tuple>::iterator D4EnumValueIter;
68 D4EnumDef() : d_name(
""), d_type(dods_null_c), d_parent(0) {}
81 string name()
const {
return d_name; }
82 void set_name(
const string &n) { d_name = n; }
84 Type type()
const {
return d_type; }
85 void set_type(
Type t) { d_type = t; }
87 D4EnumDefs *parent()
const {
return d_parent; }
88 void set_parent(
D4EnumDefs *e) { d_parent = e; }
90 bool empty()
const {
return d_tuples.empty(); }
92 void add_value(
const string &label,
long long value) { d_tuples.push_back(tuple(label, value)); }
94 D4EnumValueIter value_begin() {
return d_tuples.begin(); }
95 D4EnumValueIter value_end() {
return d_tuples.end(); }
96 string &label(D4EnumValueIter i) {
return (*i).label; }
97 long long value(D4EnumValueIter i) {
return (*i).value; }
105 vector<D4EnumDef *> d_enums;
112 D4EnumDefCIter i = rhs.d_enums.begin();
113 while (i != rhs.d_enums.end()) {
117 d_parent = rhs.d_parent;
121 typedef vector<D4EnumDef *>::iterator D4EnumDefIter;
122 typedef vector<D4EnumDef *>::const_iterator D4EnumDefCIter;
128 D4EnumDefIter i = d_enums.begin();
129 while (i != d_enums.end()) {
141 bool empty()
const {
return d_enums.empty(); }
143 D4Group *parent()
const {
return d_parent; }
144 void set_parent(
D4Group *p) { d_parent = p; }
151 void add_enum_nocopy(
D4EnumDef *enum_def) {
152 enum_def->set_parent(
this);
153 d_enums.push_back(enum_def);
162 D4EnumDef *find_enum_def(
const string &name);
174 enum_def_copy->set_parent(
this);
175 d_enums.insert(i, enum_def_copy);
178 void print_dap4(
XMLWriter &xml,
bool constrained =
false)
const;