73 std::string d_array_path;
74 Array *d_array =
nullptr;
84 D4Map(std::string name, std::string array) : d_name(std::move(name)), d_array_path(std::move(array)) {}
86 virtual ~D4Map() =
default;
88 const string &name()
const {
return d_name; }
89 void set_name(
const string &name) { d_name = name; }
91 const std::string &get_array_path()
const {
return d_array_path; }
104 void set_array(
Array *array) {
106 d_array_path = array->FQN();
109 virtual void print_dap4(XMLWriter &xml);
122 vector<D4Map *> d_maps;
123 const Array *d_parent;
125 void m_duplicate(
const D4Maps &maps,
const Array *parent) {
127 d_maps.reserve(maps.size());
128 for (
auto const map : maps.d_maps) {
129 d_maps.emplace_back(
new D4Map(map->name(), map->get_array_path()));
137 D4Maps(
const D4Maps &maps) =
delete;
139 explicit D4Maps(
const Array *parent) : d_parent(parent) {}
140 D4Maps(
const D4Maps &maps,
const Array *parent) { m_duplicate(maps, parent); }
143 for (D4MapsIter i = d_maps.begin(), e = d_maps.end(); i != e; ++i)
150 D4Maps &operator=(
const D4Maps &rhs) =
delete;
158 void remove_map(
D4Map *map) {
161 for (D4MapsIter i = d_maps.begin(), e = d_maps.end(); i != e; ++i) {
167 if ((*i)->name() == map->name()) {
174 D4Map *get_map(
int i) {
return d_maps.at(i); }
176 D4MapsIter map_begin() {
return d_maps.begin(); }
177 D4MapsIter map_end() {
return d_maps.end(); }
179 int size()
const {
return d_maps.size(); }
180 bool empty()
const {
return d_maps.empty(); }
182 virtual void print_dap4(XMLWriter &xml) {
183 for (D4MapsIter i = d_maps.begin(), e = d_maps.end(); i != e; ++i)
184 (*i)->print_dap4(xml);