43 unsigned long long d_size;
48 unsigned long long d_c_start, d_c_stride, d_c_stop;
50 bool d_used_by_projected_var;
53 D4Dimension() : d_name(
""), d_size(0), d_parent(0), d_constrained(
false), d_c_start(0), d_c_stride(0),
54 d_c_stop(0), d_used_by_projected_var(
false) {}
55 D4Dimension(
const string &name,
unsigned long long size,
D4Dimensions *d = 0) : d_name(name), d_size(size), d_parent(d),
56 d_constrained(
false), d_c_start(0), d_c_stride(0), d_c_stop(0), d_used_by_projected_var(
false) {}
58 string name()
const {
return d_name;}
59 void set_name(
const string &name) { d_name = name; }
62 unsigned long long size()
const {
return d_size; }
63 void set_size(
unsigned long long size) { d_size = size; }
65 void set_size(
const string &size);
70 bool constrained()
const {
return d_constrained; }
71 unsigned long long c_start()
const {
return d_c_start; }
72 unsigned long long c_stride()
const {
return d_c_stride; }
73 unsigned long long c_stop()
const {
return d_c_stop; }
75 bool used_by_projected_var()
const {
return d_used_by_projected_var; }
76 void set_used_by_projected_var(
bool state) { d_used_by_projected_var = state; }
86 void set_constraint(
unsigned long long start,
unsigned long long stride,
unsigned long long stop) {
102 vector<D4Dimension*> d_dims;
111 D4DimensionsCIter i = rhs.d_dims.begin();
112 while (i != rhs.d_dims.end()) {
114 d_dims.back()->set_parent(
this);
117 d_parent = rhs.d_parent;
123 typedef vector<D4Dimension*>::const_iterator D4DimensionsCIter;
127 D4Dimensions(
const D4Dimensions &rhs) : d_parent(0) { m_duplicate(rhs); }
129 virtual ~D4Dimensions() {
131 while (i != d_dims.end())
135 D4Dimensions &operator=(
const D4Dimensions &rhs) {
136 if (
this == &rhs)
return *
this;
142 bool empty()
const {
return d_dims.empty(); }
144 D4Group *parent()
const {
return d_parent;}
145 void set_parent(D4Group *g) { d_parent = g; }
186 dim->set_parent(
this);
187 d_dims.insert(i, dim);
190 void print_dap4(
XMLWriter &xml,
bool constrained =
false)
const;