51 tuple(
const string &l,
long long v) : label(l), value(v) {}
54 vector<tuple> d_tuples;
56 void m_duplicate(
const D4EnumDef &rhs) {
59 d_parent = rhs.d_parent;
60 d_tuples = rhs.d_tuples;
63 void print_value(
XMLWriter &xml,
const D4EnumDef::tuple &tuple)
const;
68 D4EnumDef() : d_name(
""), d_type(dods_null_c), d_parent(0) {}
69 D4EnumDef(
const string &n,
const Type &t,
D4EnumDefs *e = 0) : d_name(n), d_type(t), d_parent(e) {}
70 D4EnumDef(
const D4EnumDef &rhs) { m_duplicate(rhs); }
72 virtual ~D4EnumDef() {}
74 D4EnumDef &operator=(
const D4EnumDef &rhs) {
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;
111 void m_duplicate(
const D4EnumDefs &rhs) {
112 D4EnumDefCIter i = rhs.d_enums.begin();
113 while (i != rhs.d_enums.end()) {
117 d_parent = rhs.d_parent;
124 D4EnumDefs() : d_parent(0) {}
125 D4EnumDefs(
const D4EnumDefs &rhs) { m_duplicate(rhs); }
127 virtual ~D4EnumDefs() {
128 D4EnumDefIter i = d_enums.begin();
129 while (i != d_enums.end()) {
134 D4EnumDefs &operator=(
const D4EnumDefs &rhs) {
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;