75 DmrppArray::dimension get_dimension(
unsigned int dim_num);
77 void insert_constrained_contiguous(Dim_iter dim_iter,
unsigned long *target_index,
78 std::vector<unsigned long long> &subset_addr,
79 const std::vector<unsigned long long> &array_shape,
char *data);
81 void read_contiguous();
82 void read_contiguous_string();
85 virtual void insert_chunk_serial(
unsigned int dim, std::vector<unsigned int> *target_element_address,
86 std::vector<unsigned int> *chunk_source_address,
Chunk *chunk);
87 virtual void read_chunks_serial();
90 friend class DmrppArrayTest;
93 process_one_chunk_unconstrained(std::shared_ptr<Chunk> chunk,
const vector<unsigned long long> &chunk_shape,
94 DmrppArray *array,
const vector<unsigned long long> &array_shape);
98 process_one_chunk(std::shared_ptr<Chunk> chunk,
DmrppArray *array,
const vector<unsigned long long> &constrained_array_shape);
102 virtual void insert_chunk_unconstrained(std::shared_ptr<Chunk> chunk,
unsigned int dim,
103 unsigned long long array_offset,
const std::vector<unsigned long long> &array_shape,
104 unsigned long long chunk_offset,
const std::vector<unsigned long long> &chunk_shape,
105 const std::vector<unsigned long long> &chunk_origin);
108 void read_chunks_unconstrained();
110 unsigned long long get_chunk_start(
const dimension &thisDim,
unsigned int chunk_origin_for_dim);
112 std::shared_ptr<Chunk> find_needed_chunks(
unsigned int dim, std::vector<unsigned long long> *target_element_address, std::shared_ptr<Chunk> chunk);
114 virtual void insert_chunk(
116 std::vector<unsigned long long> *target_element_address,
117 std::vector<unsigned long long> *chunk_element_address,
118 std::shared_ptr<Chunk> chunk,
119 const vector<unsigned long long> &constrained_array_shape);
122 DmrppArray(
const std::string &n, libdap::BaseType *v) : libdap::Array(n, v,
true ),
DmrppCommon() { }
124 DmrppArray(
const std::string &n,
const std::string &d, libdap::BaseType *v) :
127 DmrppArray(
const string &n, BaseType *v, shared_ptr<DMZ> dmz) :
130 DmrppArray(
const string &n,
const string &d, BaseType *v, shared_ptr<DMZ> dmz) :
139 virtual libdap::BaseType *ptr_duplicate() {
return new DmrppArray(*
this); }
141 bool read()
override;
142 void set_send_p(
bool state)
override;
144 virtual unsigned long long get_size(
bool constrained =
false);
146 virtual std::vector<unsigned long long>
get_shape(
bool constrained);
148 virtual void print_dap4(libdap::XMLWriter &writer,
bool constrained =
false);
150 virtual void dump(ostream &strm)
const;