#include #include #include #define FILE "file_objs.h5" #define NGROUPS 128 #define NDSETS 8 /* For Jira issue 8528 */ int main(void) { hid_t fid, gid[NGROUPS], dset[NDSETS]; hid_t filespace; hsize_t file_dims[2] = {2, 2}; ssize_t oid_count, ret_count; hid_t *oid_list; herr_t ret; int m, n; char gname[64], dname[64]; /* Create a new file */ fid = H5Fcreate(FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); /* creates NGROUPS groups under the root group */ for(m = 0; m < NGROUPS; m++) { sprintf(gname, "group%d", m); gid[m] = H5Gcreate2(fid, gname, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); } filespace = H5Screate_simple(2, file_dims, NULL); /* create NDSETS datasets under the root group */ for(n = 0; n < NDSETS; n++) { sprintf(dname, "dataset%d", n); dset[n] = H5Dcreate2(fid, dname, H5T_NATIVE_INT, filespace, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); } /* The number of opened objects should be NGROUPS + NDSETS + 1. One is opened file. */ if((oid_count = H5Fget_obj_count(fid, H5F_OBJ_ALL)) < 0) goto error; /*printf("1. in test_obj_id. count=%ld\n", oid_count);*/ oid_list = (hid_t *)calloc((size_t)oid_count, sizeof(hid_t)); /* Call the public function H5F_get_obj_ids to use H5F_get_objects. User reported having problem here. */ if((ret_count = H5Fget_obj_ids(fid, H5F_OBJ_ALL, (size_t)oid_count, oid_list)) < 0) goto error; free(oid_list); /*printf("2. in test_obj_id\n");*/ for(m = 0; m < NGROUPS; m++) H5Gclose(gid[m]); for(n = 0; n < NDSETS; n++) H5Dclose(dset[n]); H5Sclose(filespace); return 0; error: ret = H5Fclose(fid); exit(1); }