33#include <libdap/Array.h>
56 hsize_t d_memneed = 0;
61 int format_constraint(
int *cor,
int *step,
int *edg);
64 hid_t mkstr(
int size, H5T_str_t pad);
67 bool m_array_of_structure(hid_t dsetid, std::vector<char>&values,
bool has_values,
int values_offset,
int nelms,
const int* offset,
const int*count,
const int*step);
68 bool m_array_in_structure();
69 bool m_array_of_reference(hid_t dset_id,hid_t dtype_id);
70 bool m_array_of_reference_new_h5_apis(hid_t dset_id,hid_t dtype_id);
71 void m_intern_plain_array_data(
char *convbuf,hid_t memtype);
72 void m_array_of_atomic(hid_t, hid_t,
int,
int*,
int*,
int*);
74 void do_array_read(hid_t dset_id,hid_t dtype_id,std::vector<char>&values,
bool has_values,
int values_offset,
int nelms,
int* offset,
int* count,
int* step);
76 bool do_h5_array_type_read(hid_t dsetid, hid_t memb_id,std::vector<char>&values,
bool has_values,
int values_offset,
int at_nelms,
int* at_offset,
int*at_count,
int* at_step);
78 inline int INDEX_nD_TO_1D (
const std::vector < int > &dims,
79 const std::vector < int > &pos);
80 bool obtain_next_pos(std::vector<int>& pos, std::vector<int>&start,std::vector<int>&end,std::vector<int>&step,
int rank_change);
82 template<
typename T>
int subset(
85 std::vector<int> & dim,
89 std::vector<T> *poutput,
90 std::vector<int>& pos,
96 HDF5Array(
const std::string & n,
const std::string &d, libdap::BaseType * v);
97 ~ HDF5Array()
override =
default;
107 bool read()
override;
118 void set_varpath(
const std::string& vpath) { var_path = vpath;}
119 libdap::BaseType *h5dims_transform_to_dap4(libdap::D4Group *root,
const std::vector<std::string> &dimpath);
libdap::BaseType * ptr_duplicate() override
bool read() override
Reads HDF5 array data into local buffer.
void set_numdim(int ndims)
remembers number of dimensions of this array.
void set_numelm(int nelms)
remembers number of elements in this array.
void set_memneed(size_t need)
remembers memory size needed.