summaryrefslogtreecommitdiffstats
path: root/c++/src/H5Group.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'c++/src/H5Group.cpp')
-rw-r--r--c++/src/H5Group.cpp53
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 )
//{