Recall that to create an HDF5 object, we have to specify the location where the object is to be created. This location is determined by the identifier of an HDF5 object and the name of the object to be created. The name of the created object can be either an absolute name or a name relative to the specified identifier. In Example 5, we used the file identifier and the absolute name "/MyGroup" to create a group. The file identifier and the name "/" specifies the location where the group "MyGroup" was created.
In this section, we discuss HDF5 names and show how to use absolute/relative names by giving an example of creating groups in a file.
Functions which operate on names generally take a location identifier which is either a file ID or a group ID and perform the lookup with respect to that location. Some possibilities are:
Location Type | Object Name | Description |
File ID |
/foo/bar
|
The object bar in group foo in the root group. |
Group ID |
/foo/bar
|
The object bar in group foo in the root group of the file containing the specified group. In other words, the group ID's only purpose is to supply a file. |
File ID |
/
|
The root group of the specified file. |
Group ID |
/
|
The root group of the file containing the specified group. |
Group ID |
foo/bar
|
The object bar in group foo in the specified group. |
File ID |
.
|
The root group of the file. |
Group ID |
.
|
The specified group. |
Other ID |
.
|
The specified object. |
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ #include <hdf5.h> #define FILE "groups.h5" main() { hid_t file_id, group1_id, group2_id, group3_id; /* identifiers */ herr_t status; /* Create a new file using default properties. */ file_id = H5Fcreate(FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); /* Create group "MyGroup" in the root group using absolute name. */ group1_id = H5Gcreate(file_id, "/MyGroup", 0); /* Create group "Group_A" in group "MyGroup" using absolute name. */ group2_id = H5Gcreate(file_id, "/MyGroup/Group_A", 0); /* Create group "Group_B" in group "MyGroup" using relative name. */ group3_id = H5Gcreate(group1_id, "Group_B", 0); /* Close groups. */ status = H5Gclose(group1_id); status = H5Gclose(group2_id); status = H5Gclose(group3_id); /* Close the file. */ status = H5Fclose(file_id); } +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Fig. 9.1 The Contents of 'groups.h5'
Fig. 9.2 'groups.h5' in DDL
HDF5 "groups.h5" { GROUP "/" { GROUP "MyGroup" { GROUP "Group_A" { } GROUP "Group_B" { } } } }