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) { }
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; }
112 virtual void print_dap4(XMLWriter &xml);
121 typedef vector<D4Map*>::iterator D4MapsIter;
122 typedef vector<D4Map*>::const_iterator D4MapsCIter;
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()));
142 explicit D4Maps(
const Array* parent) : d_parent(parent) { }
146 for (D4MapsIter i = d_maps.begin(), e = d_maps.end(); i != e; ++i)
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);