diff options
Diffstat (limited to 'c++/src/H5Group.cpp')
-rw-r--r-- | c++/src/H5Group.cpp | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/c++/src/H5Group.cpp b/c++/src/H5Group.cpp index a7d72f8..b8cc4a4 100644 --- a/c++/src/H5Group.cpp +++ b/c++/src/H5Group.cpp @@ -53,6 +53,59 @@ hid_t Group::getLocId() const // Creates a copy of an existing Group using its id Group::Group( const hid_t group_id ) : H5Object( group_id ) {} +// Returns the number of objects in the group. +hsize_t Group::getNumObjs() const +{ + hsize_t num_objs; + herr_t ret_value = H5Gget_num_objs(id, &num_objs); + if(ret_value < 0) + { + throwException("getNumObjs", "H5Gget_num_objs failed"); + } + return (num_objs); +} + +// Retrieves the name of an object in a given group by giving index +ssize_t Group::getObjnameByIdx(hsize_t idx, string& name, size_t size) const +{ + char* name_C = new char[size]; + ssize_t name_len = H5Gget_objname_by_idx(id, idx, name_C, size); + if(name_len < 0) + { + throwException("getObjnameByIdx", "H5Gget_objname_by_idx failed"); + } + name = string( name_C ); + delete [] name_C; + return (name_len); +} + +// Returns the type of an object in a given group by giving index +int Group::getObjTypeByIdx(hsize_t idx) const +{ + int obj_type = H5Gget_objtype_by_idx(id, idx); + if (obj_type == H5G_UNKNOWN) + { + throwException("getObjTypeByIdx", "H5Gget_objtype_by_idx failed"); + } + return (obj_type); +} +int Group::getObjTypeByIdx(hsize_t idx, string& type_name) const +{ + int obj_type = H5Gget_objtype_by_idx(id, idx); + switch (obj_type) + { + case H5G_GROUP: type_name = string("group"); break; + case H5G_DATASET: type_name = string("dataset"); break; + case H5G_TYPE: type_name = string("datatype"); break; + case H5G_UNKNOWN: + default: + { + throwException("getObjTypeByIdx", "H5Gget_objtype_by_idx failed"); + } + } + return (obj_type); +} + // Iterates a user's function over the entries of a group. //int Group::iterateElems( const string& name, int *idx, H5G_iterate_t op , void *op_data ) //{ |