73 std::string d_array_path;
74 Array *d_array =
nullptr;
81 : d_name(std::move(name)), d_array(
array) { }
85 : d_name(std::move(name)), d_array(
array) { }
86 D4Map(std::string name, std::string array)
87 : d_name(std::move(name)), d_array_path(std::move(array)) { }
89 virtual ~D4Map() =
default;
91 const string& name()
const {
return d_name; }
92 void set_name(
const string& name) { d_name = name; }
94 const std::string &get_array_path()
const {
return d_array_path; }
107 void set_array(
Array *array) {
109 d_array_path = array->FQN();
112 virtual void print_dap4(XMLWriter &xml);
125 vector<D4Map*> d_maps;
126 const Array *d_parent;
128 void m_duplicate(
const D4Maps &maps,
const Array *parent) {
130 d_maps.reserve(maps.size());
131 for (
auto const map: maps.d_maps) {
132 d_maps.emplace_back(
new D4Map(map->name(), map->get_array_path()));
140 D4Maps(
const D4Maps &maps) =
delete;
142 explicit D4Maps(
const Array* parent) : d_parent(parent) { }
143 D4Maps(
const D4Maps &maps,
const Array *parent) { m_duplicate(maps, parent); }
146 for (D4MapsIter i = d_maps.begin(), e = d_maps.end(); i != e; ++i)
153 D4Maps &operator=(
const D4Maps &rhs) =
delete;
160 d_maps.push_back(map);
163 void remove_map(
D4Map *map) {
166 for (D4MapsIter i = d_maps.begin(), e = d_maps.end(); i != e; ++i) {
172 if ((*i)->name() == map->name()) {
179 D4Map* get_map(
int i) {
return d_maps.at(i); }
181 D4MapsIter map_begin() {
return d_maps.begin(); }
182 D4MapsIter map_end() {
return d_maps.end(); }
184 int size()
const {
return d_maps.size(); }
185 bool empty()
const {
return d_maps.empty(); }
187 virtual void print_dap4(XMLWriter &xml) {
188 for (D4MapsIter i = d_maps.begin(), e = d_maps.end(); i != e; ++i)
189 (*i)->print_dap4(xml);