43 #include "InternalErr.h"
74 DBG(cerr <<
">HDF5Int32::read() dataset=" << dataset() << endl);
75 DBG(cerr <<
">HDF5Int32::read() ty_id=" << ty_id << endl);
76 DBG(cerr <<
">HDF5Int32::read() dset_id=" << dset_id << endl);
81 DBG(cerr <<
"=HFInt32::read() ty_id=" << ty_id << endl);
89 if (H5Tclose(ty_id) < 0) {
90 throw InternalErr(__FILE__, __LINE__,
"Unable to close the datatype.");
92 if (H5Dclose(dset_id) < 0) {
93 throw InternalErr(__FILE__, __LINE__,
"Unable to close the dset.");
100 BaseType *q = get_parent();
102 throw InternalErr(__FILE__, __LINE__,
"null pointer");
106 int i = H5Tget_nmembers(ty_id);
108 throw InternalErr(__FILE__, __LINE__,
"H5Tget_nmembers() failed.");
114 hid_t s1_tid = H5Tcreate(H5T_COMPOUND,
sizeof(
s2_int32_t));
118 throw InternalErr(__FILE__, __LINE__,
"cannot create a new datatype");
122 string myname = name();
125 DBG(cerr <<
"=read() ty_id=" << ty_id <<
" name=" << myname <<
126 " size=" << i << endl);
129 if (q->is_constructor_type()) {
132 DBG(cerr <<
"my_name " << myname.c_str() << endl);
133 if (H5Tinsert(s1_tid, myname.c_str(), HOFFSET(
s2_int32_t, a),
134 H5T_NATIVE_INT32) < 0){
135 throw InternalErr(__FILE__, __LINE__,
"Unable to add datatype.");
138 DBG(cerr << k <<
" parent_name=" << parent_name <<
141 stemp_tid = H5Tcreate(H5T_COMPOUND,
sizeof(
s2_int32_t));
143 throw InternalErr(__FILE__, __LINE__,
"cannot create a new datatype");
145 if (H5Tinsert(stemp_tid, parent_name.c_str(), 0, s1_tid) < 0){
146 throw InternalErr(__FILE__, __LINE__,
"Unable to add datatype.");
152 parent_name = q->name();
165 if (H5Dread(dset_id, s1_tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, &buf[0]) < 0) {
166 throw InternalErr(__FILE__, __LINE__,
"hdf5_dods server failed when getting int32 data for structure");
170 DBG(cerr <<
"index " << j << endl);
void set_tid(hid_t type)
remembers HDF5 datatype id.
This class converts HDF5 compound type into DAP structure for the default option. ...
This class provides a way to map HDF5 32 bit integer to DAP Int32 for the default option...
string get_dap_type(hid_t type)
returns the string representation of HDF5 type.
int get_array_index()
returns the array index of this Structure if it's a part of array of structures.
virtual BaseType * ptr_duplicate()
Clone this instance.
virtual bool read()
Reads HDF5 32-bit integer data into local buffer.
Data structure and retrieval processing header for the default option.
void get_data(hid_t dset, void *buf)
will get all data of a dset dataset and put it into buf.
hid_t get_tid()
returns HDF5 datatype id.
struct s2_int32_t s2_int32_t
void set_did(hid_t dset)
remembers HDF5 dataset id.
hid_t get_did()
returns HDF5 dataset id.
HDF5Int32(const string &n, const string &d)
Constructor.
int get_entire_array_size()
returns the entire array size of this Structure if it's a part of array of structures.