HDF5  1.13.0
H5G

Group Interface. More...

Functions

herr_t H5Gclose (hid_t group_id)
 Closes the specified group. More...
 
hid_t H5Gcreate2 (hid_t loc_id, const char *name, hid_t lcpl_id, hid_t gcpl_id, hid_t gapl_id)
 Creates a new group and links it into the file. More...
 
hid_t H5Gcreate_anon (hid_t loc_id, hid_t gcpl_id, hid_t gapl_id)
 Creates a new empty group without linking it into the file structure. More...
 
herr_t H5Gflush (hid_t group_id)
 Flushes all buffers associated with a group to disk. More...
 
hid_t H5Gget_create_plist (hid_t group_id)
 Gets a group creation property list identifier. More...
 
herr_t H5Gget_info (hid_t loc_id, H5G_info_t *ginfo)
 Retrieves information about a group. More...
 
herr_t H5Gget_info_by_idx (hid_t loc_id, const char *group_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t n, H5G_info_t *ginfo, hid_t lapl_id)
 Retrieves information about a group, according to the group’s position within an index. More...
 
herr_t H5Gget_info_by_name (hid_t loc_id, const char *name, H5G_info_t *ginfo, hid_t lapl_id)
 Retrieves information about a group by its name. More...
 
hid_t H5Gopen2 (hid_t loc_id, const char *name, hid_t gapl_id)
 Opens an existing group in a file. More...
 
herr_t H5Grefresh (hid_t group_id)
 Refreshes all buffers associated with a group. More...
 
hid_t H5Gcreate1 (hid_t loc_id, const char *name, size_t size_hint)
 Creates a new empty group and links it to a location in the file. More...
 
int H5Gget_comment (hid_t loc_id, const char *name, size_t bufsize, char *buf)
 Retrieves comment from an object. More...
 
herr_t H5Gget_linkval (hid_t loc_id, const char *name, size_t size, char *buf)
 Retrieves the name of the object that the symbolic link points to. More...
 
herr_t H5Gget_num_objs (hid_t loc_id, hsize_t *num_objs)
 Returns number of objects in the group. More...
 
herr_t H5Gget_objinfo (hid_t loc_id, const char *name, hbool_t follow_link, H5G_stat_t *statbuf)
 Returns information about an object. More...
 
ssize_t H5Gget_objname_by_idx (hid_t loc_id, hsize_t idx, char *name, size_t size)
 Returns a name of an object specified by an index (deprecated) More...
 
H5G_obj_t H5Gget_objtype_by_idx (hid_t loc_id, hsize_t idx)
 Returns the type of an object specified by an index. More...
 
herr_t H5Giterate (hid_t loc_id, const char *name, int *idx, H5G_iterate_t op, void *op_data)
 Iterates an operation over the entries of a group. More...
 
herr_t H5Glink (hid_t cur_loc_id, H5L_type_t type, const char *cur_name, const char *new_name)
 Creates a link between two existing objects. More...
 
herr_t H5Glink2 (hid_t cur_loc_id, const char *cur_name, H5L_type_t type, hid_t new_loc_id, const char *new_name)
 Creates a link between two existing objects. More...
 
herr_t H5Gmove (hid_t src_loc_id, const char *src_name, const char *dst_name)
 Renames an object within an HDF5 file. More...
 
herr_t H5Gmove2 (hid_t src_loc_id, const char *src_name, hid_t dst_loc_id, const char *dst_name)
 Renames an object within an HDF5 file. More...
 
hid_t H5Gopen1 (hid_t loc_id, const char *name)
 Opens an existing group for modification. More...
 
herr_t H5Gset_comment (hid_t loc_id, const char *name, const char *comment)
 Sets comment for specified object. More...
 
herr_t H5Gunlink (hid_t loc_id, const char *name)
 Removes the link to an object from a group. More...
 

Detailed Description

Group Interface.

Todo:
Describe concisely what the functions in this module are about.
Todo:
Describe concisely what the functions in this module are about.

Function Documentation

◆ H5Gclose()

herr_t H5Gclose ( hid_t  group_id)

Closes the specified group.


Parameters
[in]group_idGroup identifier
Returns
Returns a non-negative value if successful; otherwise returns a negative value.

H5Gclose() releases resources used by a group which was opened by H5Gcreate() or H5Gopen(). After closing a group, group_id cannot be used again until another H5Gcreate() or H5Gopen() is called on it.

Failure to release a group with this call will result in resource leaks.

Since
1.0.0
Version
1.4.0 Fortran function introduced in this release

◆ H5Gcreate1()

hid_t H5Gcreate1 ( hid_t  loc_id,
const char *  name,
size_t  size_hint 
)

Creates a new empty group and links it to a location in the file.


Parameters
[in]loc_idLocation identifier. The identifier may be that of a file, group, dataset, named datatype, or attribute.
[in]nameAbsolute or relative name of the group to create
[in]size_hintOptional parameter indicating the number of bytes to reserve for the name of the new group
Returns
Returns a group identifier if successful; otherwise returns H5I_INVALID_HID.
Deprecated:
As of HDF5-1.8.0, this function has been deprecated in favor of the function H5Gcreate2() and the macro H5Gcreate().

H5Gcreate1() creates a new group with the specified name at the specified location, loc_id.

loc_id may be a file, group, dataset, named datatype or attribute. If an attribute, dataset, or named datatype is specified for loc_id then the group will be created at the location where the attribute, dataset, or named datatype is attached. The name, name, must not already be taken by some other object and all parent groups must already exist.

name can be a relative path based at loc_id or an absolute path from the root of the file. Use of this function requires that any intermediate groups specified in the path already exist.

The length of a group name, or of the name of any object within a group, is not limited.

size_hint is a hint for the number of bytes to reserve to store the names which will be eventually added to the new group. Passing a value of zero for size_hint is usually adequate since the library is able to dynamically resize the name heap, but a correct hint may result in better performance. A conservative estimate could result in multiple system-level I/O requests to read the group name heap; a liberal estimate could result in a single large I/O request even when the group has just a few names. HDF5 stores each name with a null terminator. If a non-positive value is supplied for size_hint, then a default size is chosen.

The return value is a group identifier for the open group. This group identifier should be closed by calling H5Gclose() when it is no longer needed.

See H5Gcreate_anon() for a discussion of the differences between H5Gcreate1 and H5Gcreate_anon().

Version
1.8.0 Function was renamed to H5Gcreate1() and deprecated.
1.4.0 Fortran function introduced in this release
Since
1.0.0

Parameters
[in]loc_idLocation identifier. The identifier may be that of a file, group, dataset, named datatype, or attribute.
[in]nameAbsolute or relative name of the group to create
[in]size_hintOptional parameter indicating the number of bytes to reserve for the name of the new group
Returns
Returns a group identifier if successful; otherwise returns H5I_INVALID_HID.
Deprecated:
As of HDF5-1.8.0, this function has been deprecated in favor of the function H5Gcreate2() and the macro H5Gcreate().

H5Gcreate1() creates a new group with the specified name at the specified location, loc_id.

loc_id may be a file, group, dataset, named datatype or attribute. If an attribute, dataset, or named datatype is specified for loc_id then the group will be created at the location where the attribute, dataset, or named datatype is attached. The name, name, must not already be taken by some other object and all parent groups must already exist.

name can be a relative path based at loc_id or an absolute path from the root of the file. Use of this function requires that any intermediate groups specified in the path already exist.

The length of a group name, or of the name of any object within a group, is not limited.

size_hint is a hint for the number of bytes to reserve to store the names which will be eventually added to the new group. Passing a value of zero for size_hint is usually adequate since the library is able to dynamically resize the name heap, but a correct hint may result in better performance. A conservative estimate could result in multiple system-level I/O requests to read the group name heap; a liberal estimate could result in a single large I/O request even when the group has just a few names. HDF5 stores each name with a null terminator. If a non-positive value is supplied for size_hint, then a default size is chosen.

The return value is a group identifier for the open group. This group identifier should be closed by calling H5Gclose() when it is no longer needed.

See H5Gcreate_anon() for a discussion of the differences between H5Gcreate1 and H5Gcreate_anon().

Version
1.8.0 Function was renamed to H5Gcreate1() and deprecated.
1.4.0 Fortran function introduced in this release
Since
1.0.0

◆ H5Gcreate2()

hid_t H5Gcreate2 ( hid_t  loc_id,
const char *  name,
hid_t  lcpl_id,
hid_t  gcpl_id,
hid_t  gapl_id 
)

Creates a new group and links it into the file.


Parameters
[in]loc_idLocation identifier. The identifier may be that of a file, group, dataset, named datatype, or attribute.
[in]nameName of the group to create
[in]lcpl_idLink creation property list identifier
[in]gcpl_idGroup creation property list identifier
[in]gapl_idGroup access property list identifier
Returns
Returns a group identifier if successful; otherwise returns H5I_INVALID_HID.

H5Gcreate2() creates a new group in a file. After a group has been created, links to datasets and to other groups can be added.

The loc_id and name parameters specify where the group is located. loc_id may be a file, group, dataset, named datatype or attribute in the file. If an attribute, dataset, or named datatype is specified for loc_id then the group will be created at the location where the attribute, dataset, or named datatype is attached. name is the link to the group; name may be either an absolute path in the file (the links from the root group to the new group) or a relative path from loc_id (the link(s) from the group specified by loc_id to the new group).

lcpl_id, gcpl_id, and gapl_id are property list identifiers. These property lists govern how the link to the group is created, how the group is created, and how the group can be accessed in the future, respectively. H5P_DEFAULT can be passed in if the default properties are appropriate for these property lists. Currently, there are no APIs for the group access property list; use H5P_DEFAULT.

The group identifier should be closed by H5Gclose() when access is no longer required to prevent resource leaks.

Since
1.8.0
See also
H5Gopen2(), H5Gclose()

◆ H5Gcreate_anon()

hid_t H5Gcreate_anon ( hid_t  loc_id,
hid_t  gcpl_id,
hid_t  gapl_id 
)

Creates a new empty group without linking it into the file structure.


Parameters
[in]loc_idLocation identifier. The identifier may be that of a file, group, dataset, named datatype, or attribute.
[in]gcpl_idGroup creation property list identifier
[in]gapl_idGroup access property list identifier
Returns
Returns a group identifier if successful; otherwise returns H5I_INVALID_HID.

H5Gcreate_anon() creates a new empty group in the file specified by loc_id. With default settings, H5Gcreate_anon() provides similar functionality to that provided by H5Gcreate1(), with the differences described in the list below.

The new group’s creation and access properties are specified in gcpl_id and gapl_id, respectively.

H5Gcreate_anon() returns a new group identifier. This identifier must be linked into the HDF5 file structure with H5Olink() or it will be deleted from the file when the file is closed.

The differences between this function and H5Gcreate1() are as follows:

  • H5Gcreate1() does not provide for the use of custom property lists; H5Gcreate1() always uses default properties.
  • H5Gcreate_anon() neither provides the new group’s name nor links it into the HDF5 file structure; those actions must be performed separately through a call to H5Olink(), which offers greater control over linking.
  • H5Gcreate_anon() does not directly provide a hint mechanism for the group’s heap size. Comparable information can be included in the group creation property list gcpl_id through a H5Pset_local_heap_size_hint() call.

A group created with this function should be closed with H5Gclose() when the group is no longer needed so that resource leaks will not develop.

See also
H5Olink(), H5Dcreate(), Using Identifiers
Since
1.8.0

◆ H5Gflush()

herr_t H5Gflush ( hid_t  group_id)

Flushes all buffers associated with a group to disk.


Parameters
[in]group_idGroup identifier
Returns
Returns a non-negative value if successful; otherwise returns a negative value.

H5Gflush() causes all buffers associated with a group to be immediately flushed to disk without removing the data from the cache.

Attention
HDF5 does not possess full control over buffering. H5G_FLUSH flushes the internal HDF5 buffers and then asks the operating system (the OS) to flush the system buffers for the open files. After that, the OS is responsible for ensuring that the data is actually flushed to disk.
Since
1.8.0
See also
H5Gcreate2(), H5Gclose()

◆ H5Gget_comment()

int H5Gget_comment ( hid_t  loc_id,
const char *  name,
size_t  bufsize,
char *  buf 
)

Retrieves comment from an object.


Parameters
[in]loc_idLocation identifier. The identifier may be that of a file, group, dataset, or named datatype.
[in]nameName of the object whose comment is to be retrieved
[in]bufsizeSize of buf
[out]bufBuffer for the comment
Returns
Returns the number of characters in the comment, if successful; otherwise, returns a negative value.

H5Gget_comment() retrieves the comment for the the object specified by loc_id and name. The comment is returned in the buffer comment.

loc_id can specify any object in the file. name can be one of the following:

  • The name of the object relative to loc_id
  • An absolute name of the object, starting from /, the file’s root group
  • A dot (.), if loc_id fully specifies the object

H5Gget_comment() returns the number of characters in the comment, counting the null terminator, if successful. The value returned may be larger than bufsize.

At most bufsize characters, including a null terminator, are returned in comment. The returned value is not null terminated if the comment is longer than the supplied buffer. If the size of the comment is unknown, a preliminary H5Gget_comment() call will return the size of the comment, including space for the null terminator.

If an object does not have a comment, an empty string is returned in comment.

Version
1.8.0 The function H5Gget_comment() was deprecated in this release, in favor of H5Oget_comment().
Since
1.8.0

◆ H5Gget_create_plist()

hid_t H5Gget_create_plist ( hid_t  group_id)

Gets a group creation property list identifier.


Parameters
[in]group_idGroup identifier
Returns
Returns a creation property list identifier if successful; otherwise returns H5I_INVALID_HID.

H5Gget_create_plist() returns an identifier for the group creation property list associated with the group specified by group_id.

The creation property list identifier should be released with H5Gclose() to prevent resource leaks.

Since
1.8.0
See also
H5Gcreate2(), H5Gclose()

◆ H5Gget_info()

herr_t H5Gget_info ( hid_t  loc_id,
H5G_info_t ginfo 
)

Retrieves information about a group.


Parameters
[in]loc_idLocation identifier. The identifier may be that of a file, group, dataset, named datatype, or attribute.
[out]ginfoStruct in which group information is returned
Returns
Returns a group identifier if successful; otherwise returns H5I_INVALID_HID.

H5Gget_info() retrieves information about the group at location specified by loc_id. The information is returned in the ginfo.

ginfo is an H5G_info_t struct and is defined (in H5Gpublic.h) as follows:

typedef struct H5G_info_t {
H5G_storage_type_t storage_type; /* Type of storage for links in group */
hsize_t nlinks; /* Number of links in group */
int64_t max_corder; /* Current max. creation order value for group */
hbool_t mounted; /* Whether group has a file mounted on it */

Possible values of storage_type are:

H5G_STORAGE_TYPE_COMPACTCompact storage
H5G_STORAGE_TYPE_DENSEIndexed storage
H5G_STORAGE_TYPE_SYMBOL_TABLESymbol tables, the original HDF5 structure
Since
1.8.0
See also
H5Gcreate2(), H5Gclose()

◆ H5Gget_info_by_idx()

herr_t H5Gget_info_by_idx ( hid_t  loc_id,
const char *  group_name,
H5_index_t  idx_type,
H5_iter_order_t  order,
hsize_t  n,
H5G_info_t ginfo,
hid_t  lapl_id 
)

Retrieves information about a group, according to the group’s position within an index.


Parameters
[in]loc_idLocation identifier. The identifier may be that of a file, group, dataset, named datatype, or attribute.
[in]group_nameName of the group to query
[in]idx_typeTransient index identifying object
[in]orderTransient index identifying object
[in]nPosition in the index of the group to query
[out]ginfoStruct in which group information is returned
[in]lapl_idLink access property list identifier
Returns
Returns
  • The size of the object name if successful, or
  • 0 if no name is associated with the group identifier, or
  • negative value, if failure occurred
H5Gget_info_by_idx() retrieves the same information about a group as retrieved by the function H5Gget_info(), but the means of identifying the group differs; the group is identified by position in an index rather than by name.

loc_id and group_name specify the group containing the group for which information is sought. The groups in group_name are indexed by idx_type; the group for which information is retrieved is identified in that index by index order, order, and index position, n.

If loc_id specifies the group containing the group for which information is queried, group_name can be a dot (.).

Valid values for index_type are as follows:

H5_INDEX_NAMELexicographic order on name
H5_INDEX_CRT_ORDERIndex on creation order

The order in which the index is to be examined, as specified by order, can be one of the following:

H5_ITER_INCIncreasing order
H5_ITER_DECDecreasing order
H5_ITER_NATIVEFastest available order
Since
1.8.0
See also
H5Gcreate2(), H5Gclose()

◆ H5Gget_info_by_name()

herr_t H5Gget_info_by_name ( hid_t  loc_id,
const char *  name,
H5G_info_t ginfo,
hid_t  lapl_id 
)

Retrieves information about a group by its name.


Parameters
[in]loc_idLocation identifier. The identifier may be that of a file, group, dataset, named datatype, or attribute.
[in]nameName of the group to query
[out]ginfoStruct in which group information is returned
[in]lapl_idLink access property list identifier
Returns
Returns a non-negative value if successful; otherwise returns a negative value.

H5Gget_info_by_name() retrieves information about the group name at location specified by loc_id. The information is returned in the ginfo struct.

If loc_id specifies the group for which information is queried, then the group's name can be a dot (.).

ginfo is an H5G_info_t struct and is defined (in H5Gpublic.h) as follows:

typedef struct H5G_info_t {
H5G_storage_type_t storage_type; /* Type of storage for links in group */
hsize_t nlinks; /* Number of links in group */
int64_t max_corder; /* Current max. creation order value for group */
hbool_t mounted; /* Whether group has a file mounted on it */

Possible values of storage_type are:

H5G_STORAGE_TYPE_COMPACTCompact storage
H5G_STORAGE_TYPE_DENSEIndexed storage
H5G_STORAGE_TYPE_SYMBOL_TABLESymbol tables, the original HDF5 structure
Since
1.8.0
See also
H5Gcreate2(), H5Gclose()

◆ H5Gget_linkval()

herr_t H5Gget_linkval ( hid_t  loc_id,
const char *  name,
size_t  size,
char *  buf 
)

Retrieves the name of the object that the symbolic link points to.


Parameters
[in]loc_idLocation identifier
[in]nameSymbolic link to the object whose name is to be returned
[in]sizeSize of buf
[out]bufBuffer to hold the name of the object being sought
Returns
Returns a non-negative value if successful. Otherwise, returns a negative value.

H5Gget_linkval() returns size characters of the name of the object that the symbolic link name points to.

The parameter loc_id is a file or group identifier.

The parameter name must be a symbolic link pointing to the desired object and must be defined relative to loc_id.

If size is smaller than the size of the returned object name, then the name stored in the buffer value will not be null terminated.

This function fails if name is not a symbolic link. The presence of a symbolic link can be tested by passing zero for size and NULL for value.

This function should be used only after H5Lget_info1() (or the deprecated function H5Gget_objinfo()) has been called to verify that name is a symbolic link.

Version
1.8.0 The function H5Gget_linkval() was deprecated in this release, in favor of H5Lget_val().
Since
?

◆ H5Gget_num_objs()

herr_t H5Gget_num_objs ( hid_t  loc_id,
hsize_t *  num_objs 
)

Returns number of objects in the group.


Parameters
[in]loc_idLocation identifier
[out]num_objsNumber of objects in the group
Returns
Returns a non-negative value if successful; otherwise returns a negative value.

H5Gget_num_objs() returns number of objects in a group specified by its identifier loc_id. If a file identifier is passed in, then the number of objects in the root group is returned.

Version
1.8.0 The function H5Gget_num_objs() was deprecated in this release, in favor of H5Gget_info().
Since
1.6.0

◆ H5Gget_objinfo()

herr_t H5Gget_objinfo ( hid_t  loc_id,
const char *  name,
hbool_t  follow_link,
H5G_stat_t statbuf 
)

Returns information about an object.


Parameters
[in]loc_idLocation identifier
[in]nameName of the object for which status is being sought
[in]follow_linkLink flag
[out]statbufBuffer in which to return information about the object
Returns
Returns a non-negative value if successful, with the fields in statbuf (if non-null) assigned with values. Otherwise, returns a negative value.
Deprecated:
As of HDF5-1.8.0, this function has been deprecated in favor of the function H5Oget_info() and H5Lget_info1().

H5Gget_objinfo() returns information about the specified object through statbuf.

A file or group identifier, loc_id, and an object name, name, relative to loc_id, are commonly used to specify the object. However, if the object identifier is already known to the application, an alternative approach is to use that identifier, obj_id, in place of loc_id, and a dot (.) in place of name. Thus, the alternative versions of the first portion of an H5Gget_objinfo() call would be as follows:

H5Gget_objinfo(loc_id, name, ...) H5Gget_objinfo(obj_id, ".", ...)

If the object is a symbolic link and follow_link is zero (0), then the information returned describes the link itself; otherwise the link is followed and the information returned describes the object to which the link points. If follow_link is non-zero but the final symbolic link is dangling (does not point to anything), then an error will be returned. The fields in statbuf are undefined for an error. The existence of an object can be tested by calling this function with a null statbuf.

H5Gget_objinfo() fills in the following data structure (defined in H5Gpublic.h):

typedef struct H5G_stat_t {
unsigned long fileno[2]; /*file number */
unsigned long objno[2]; /*object number */
unsigned nlink; /*number of hard links to object*/
H5G_obj_t type; /*basic object type */
time_t mtime; /*modification time */
size_t linklen; /*symbolic link value length */
H5O_stat_t ohdr; /* Object header information */

where H5O_stat_t (defined in H5Opublic.h) is:

typedef struct H5O_stat_t {
hsize_t size; /* Total size of object header in file */
hsize_t free; /* Free space within object header */
unsigned nmesgs; /* Number of object header messages */
unsigned nchunks; /* Number of object header chunks */

The fields fileno and objno contain four values which uniquely identify an object among those HDF5 files which are open: if all four values are the same between two objects, then the two objects are the same (provided both files are still open).

Note
  • If a file is closed and re-opened, the value in fileno will change.
  • If a VFL driver either does not or cannot detect that two H5Fopen() calls referencing the same file actually open the same file, each will get a different fileno.
The field nlink is the number of hard links to the object or zero when information is being returned about a symbolic link (symbolic links do not have hard links but all other objects always have at least one).

The field type contains the type of the object, either of the following: H5G_GROUP, H5G_DATASET, H5G_LINK, or H5G_TYPE.

The field mtime contains the modification time.

If information is being returned about a symbolic link then linklen will be the length of the link value (the name of the pointed-to object with the null terminator); otherwise linklen will be zero.

The fields in the H5O_stat_t struct contain information about the object header for the object queried:

size The total size of all the object header information in the file (for all chunks). free The size of unused space in the object header. nmesgs The number of object header messages. nchunks The number of chunks the object header is broken up into.

Other fields may be added to this structure in the future.

Some systems will be able to record the time accurately but unable to retrieve the correct time; such systems (e.g., Irix64) will report an mtime value of 0 (zero).

Version
1.8.0 The function H5Gget_objinfo was deprecated in this release.
1.6.1 Two new fields were added to the H5G_stat_t struct in this release.

Parameters
[in]loc_idLocation identifier
[in]nameName of the object for which status is being sought
[in]follow_linkLink flag
[out]statbufBuffer in which to return information about the object
Returns
Returns a non-negative value if successful, with the fields in statbuf (if non-null) assigned with values. Otherwise, returns a negative value.
Deprecated:
As of HDF5-1.8.0, this function has been deprecated in favor of the function H5Oget_info() and H5Lget_info1().

H5Gget_objinfo() returns information about the specified object through statbuf.

A file or group identifier, loc_id, and an object name, name, relative to loc_id, are commonly used to specify the object. However, if the object identifier is already known to the application, an alternative approach is to use that identifier, obj_id, in place of loc_id, and a dot (.) in place of name. Thus, the alternative versions of the first portion of an H5Gget_objinfo() call would be as follows:

H5Gget_objinfo(loc_id, name, ...) H5Gget_objinfo(obj_id, ".", ...)

If the object is a symbolic link and follow_link is zero (0), then the information returned describes the link itself; otherwise the link is followed and the information returned describes the object to which the link points. If follow_link is non-zero but the final symbolic link is dangling (does not point to anything), then an error will be returned. The fields in statbuf are undefined for an error. The existence of an object can be tested by calling this function with a null statbuf.

H5Gget_objinfo() fills in the following data structure (defined in H5Gpublic.h):

typedef struct H5G_stat_t {
unsigned long fileno[2]; /*file number */
unsigned long objno[2]; /*object number */
unsigned nlink; /*number of hard links to object*/
H5G_obj_t type; /*basic object type */
time_t mtime; /*modification time */
size_t linklen; /*symbolic link value length */
H5O_stat_t ohdr; /* Object header information */

where H5O_stat_t (defined in H5Opublic.h) is:

typedef struct H5O_stat_t {
hsize_t size; /* Total size of object header in file */
hsize_t free; /* Free space within object header */
unsigned nmesgs; /* Number of object header messages */
unsigned nchunks; /* Number of object header chunks */

The fields fileno and objno contain four values which uniquely identify an object among those HDF5 files which are open: if all four values are the same between two objects, then the two objects are the same (provided both files are still open).

Note
  • If a file is closed and re-opened, the value in fileno will change.
  • If a VFL driver either does not or cannot detect that two H5Fopen() calls referencing the same file actually open the same file, each will get a different fileno.
The field nlink is the number of hard links to the object or zero when information is being returned about a symbolic link (symbolic links do not have hard links but all other objects always have at least one).

The field type contains the type of the object, either of the following: H5G_GROUP, H5G_DATASET, H5G_LINK, or H5G_TYPE.

The field mtime contains the modification time.

If information is being returned about a symbolic link then linklen will be the length of the link value (the name of the pointed-to object with the null terminator); otherwise linklen will be zero.

The fields in the H5O_stat_t struct contain information about the object header for the object queried:

size The total size of all the object header information in the file (for all chunks). free The size of unused space in the object header. nmesgs The number of object header messages. nchunks The number of chunks the object header is broken up into.

Other fields may be added to this structure in the future.

Some systems will be able to record the time accurately but unable to retrieve the correct time; such systems (e.g., Irix64) will report an mtime value of 0 (zero).

Version
1.8.0 The function H5Gget_objinfo was deprecated in this release.
1.6.1 Two new fields were added to the H5G_stat_t struct in this release.

◆ H5Gget_objname_by_idx()

ssize_t H5Gget_objname_by_idx ( hid_t  loc_id,
hsize_t  idx,
char *  name,
size_t  size 
)

Returns a name of an object specified by an index (deprecated)


Parameters
[in]loc_idLocation identifier. The identifier may be that of a file, group, dataset, named datatype, or attribute.
[in]idxTransient index identifying object
[in,out]nameBuffer for name
[in]sizeName length
Returns
Returns
  • The size of the object name if successful, or
  • 0 if no name is associated with the group identifier, or
  • negative value, if failure occurred
H5Gget_objname_by_idx() returns the name of the object specified by the index idx at the location specified by loc_id.

loc_id may be a group or a file, which is the file's root group.

idx is the transient index used to iterate through the objects in the group. The value of idx is any nonnegative number less than the total number of objects in the group, which is returned by the function H5Gget_num_objs(). Note that this is a transient index; an object may have a different index each time a group is opened.

The object name is returned in the user-specified buffer name.

If the size of the provided buffer name is less or equal the actual object name length, the object name is truncated to size - 1 characters.

Note that if the size of the object's name is unkown, a preliminary call to H5Gget_objname_by_idx() with name set to NULL will return the length of the object's name. A second call to H5Gget_objname_by_idx() can then be used to retrieve the actual name.

Since
1.8.0
Version
1.8.0 The function deprecated in this release.

◆ H5Gget_objtype_by_idx()

H5G_obj_t H5Gget_objtype_by_idx ( hid_t  loc_id,
hsize_t  idx 
)

Returns the type of an object specified by an index.


Parameters
[in]loc_idLocation identifier. The identifier may be that of a file, group, dataset, named datatype, or attribute.
[in]idxTransient index identifying object
Returns
Returns the type of the object if successful. Otherwise returns a negative value.

H5Gget_objtype_by_idx() returns the type of the object specified by the index idx in the group loc_id. A file identifier may also be passed in for loc_id; which indicates the file's root group.

idx is the transient index used to iterate through the objects in the group. This parameter is described in more detail in the discussion of H5Gget_objname_by_idx.

The object type is returned as one of the following values:

H5G_GROUP 0 Object is a group
H5G_DATASET 1 Object is a dataset
H5G_TYPE 2 Object is a named datatype
H5G_LINK 3 Object is a symbolic link
H5G_UDLINK 4 Object is a user-defined link
Since
1.8.0
Version
1.8.0 The function was deprecated in this release.

◆ H5Giterate()

herr_t H5Giterate ( hid_t  loc_id,
const char *  name,
int *  idx,
H5G_iterate_t  op,
void *  op_data 
)

Iterates an operation over the entries of a group.


Parameters
[in]loc_idLocation identifier. The identifier may be that of a file, group, dataset, or named datatype.
[in]nameGroup over which the iteration is performed
[in,out]idxLocation at which to begin the iteration
[in]opOperation to be performed on an object at each iteration
[in,out]op_dataData associated with the operation
Returns
Returns the return value of the last operator or zero if all group members were processed. Otherwise returns a negative value when failure occurs.

H5Giterate() iterates over the members of the group name in the file or group specified with loc_id.

For each object in the group, the op_data and some additional information, specified below, are passed to the op function. The iteration begins with the idx'th object in the group and the next element to be processed by the operator is returned in idx. If idx is NULL, then the iterator starts at the first group member; since no stopping point is returned in this case, the iterator cannot be restarted if one of the calls to its operator returns non-zero. H5Giterate() does not recursively follow links into subgroups of the specified group.

The prototype for H5G_iterate_t is:

typedef herr_t (*H5G_iterate_t)(hid_t group, const char *name, void *op_data);

The operator function receives the group identifier for the group being iterated over, loc_id, the name of the current object within the group, name, and the pointer to the operator data passed in to H5Giterate(), op_data.

The return values from an operator are:

  • Zero causes the iterator to continue, returning zero when all group members have been processed.
  • Positive causes the iterator to immediately return that positive value, indicating short-circuit success. The iterator can be restarted at the next group member.
  • Negative causes the iterator to immediately return that value, indicating failure. The iterator can be restarted at the next group member.

H5Giterate() assumes that the membership of the group identified by name remains unchanged throughout the iteration. If the membership changes during the iteration, the function's behavior is undefined.

H5Giterate() is not recursive. For example, if a member of name is found to be a group, call it subgroup_a, H5Giterate() does not examine the members of subgroup_a. When recursive iteration is required, the application must handle the recursion, explicitly calling H5Giterate() on discovered subgroups.

Version
1.8.0 The function H5Giterate() was deprecated in this release, in favor of H5Literate1().
Since
?

◆ H5Glink()

herr_t H5Glink ( hid_t  cur_loc_id,
H5L_type_t  type,
const char *  cur_name,
const char *  new_name 
)

Creates a link between two existing objects.


Parameters
[in]cur_loc_idFile or group identifier
[in]typeLink type
[in]cur_nameCurrent name
[in]new_nameNew name to link to
Returns
Returns a non-negative value if successful; otherwise returns a negative value.
Deprecated:
As of HDF5-1.8.0, this function has been deprecated in favor of the functions H5Lcreate_hard() and H5Lcreate_soft().

H5Glink() creates a new name for an object that has some current name, possibly one of many names it currently has.

If link_type is H5G_LINK_HARD, then current_name must specify the name of an existing object and both names are interpreted relative to cur_loc_id, which is either a file identifier or a group identifier.

If link_type is H5G_LINK_SOFT, then current_name can be anything and is interpreted at lookup time relative to the group which contains the final component of new_name. For instance, if current_name is ./foo, new_name is ./x/y/bar, and a request is made for ./x/y/bar, then the actual object looked up is ./x/y/./foo.

Version
1.8.0 The function H5Glink() was deprecated in this release
Since
?

Parameters
[in]cur_loc_idFile or group identifier
[in]typeLink type
[in]cur_nameCurrent name
[in]new_nameNew name to link to
Returns
Returns a non-negative value if successful; otherwise returns a negative value.
Deprecated:
As of HDF5-1.8.0, this function has been deprecated in favor of the functions H5Lcreate_hard() and H5Lcreate_soft().

H5Glink() creates a new name for an object that has some current name, possibly one of many names it currently has.

If link_type is H5G_LINK_HARD, then current_name must specify the name of an existing object and both names are interpreted relative to cur_loc_id, which is either a file identifier or a group identifier.

If link_type is H5G_LINK_SOFT, then current_name can be anything and is interpreted at lookup time relative to the group which contains the final component of new_name. For instance, if current_name is ./foo, new_name is ./x/y/bar, and a request is made for ./x/y/bar, then the actual object looked up is ./x/y/./foo.

Version
1.8.0 The function H5Glink() was deprecated in this release
Since
?

◆ H5Glink2()

herr_t H5Glink2 ( hid_t  cur_loc_id,
const char *  cur_name,
H5L_type_t  type,
hid_t  new_loc_id,
const char *  new_name 
)

Creates a link between two existing objects.


Parameters
[in]cur_loc_idThe file or group identifier for the original object
[in]cur_nameCurrent name
[in]typeLink type
[in]new_loc_idThe file or group identifier for the new link
[in]new_nameNew name
Returns
Returns a non-negative value if successful; otherwise returns a negative value.
Deprecated:
As of HDF5-1.8.0, this function has been deprecated in favor of the functions H5Lcreate_hard() and H5Lcreate_soft().

H5Glink2() creates a new name for an object that has some current name, possibly one of many names it currently has.

If link_type is H5G_LINK_HARD, then current_name must specify the name of an existing object. In this case, current_name and new_name are interpreted relative to curr_loc_id and new_loc_id, respectively, which are either file or group identifiers.

If link_type is H5G_LINK_SOFT, then current_name can be anything and is interpreted at lookup time relative to the group which contains the final component of new_name. For instance, if current_name is ./foo, new_name is ./x/y/bar, and a request is made for ./x/y/bar, then the actual object looked up is ./x/y/./foo.

Version
1.8.0 The function H5Glink() was deprecated in this release
Since
?

Parameters
[in]cur_loc_idThe file or group identifier for the original object
[in]cur_nameCurrent name
[in]typeLink type
[in]new_loc_idThe file or group identifier for the new link
[in]new_nameNew name
Returns
Returns a non-negative value if successful; otherwise returns a negative value.
Deprecated:
As of HDF5-1.8.0, this function has been deprecated in favor of the functions H5Lcreate_hard() and H5Lcreate_soft().

H5Glink2() creates a new name for an object that has some current name, possibly one of many names it currently has.

If link_type is H5G_LINK_HARD, then current_name must specify the name of an existing object. In this case, current_name and new_name are interpreted relative to curr_loc_id and new_loc_id, respectively, which are either file or group identifiers.

If link_type is H5G_LINK_SOFT, then current_name can be anything and is interpreted at lookup time relative to the group which contains the final component of new_name. For instance, if current_name is ./foo, new_name is ./x/y/bar, and a request is made for ./x/y/bar, then the actual object looked up is ./x/y/./foo.

Version
1.8.0 The function H5Glink() was deprecated in this release
Since
?

◆ H5Gmove()

herr_t H5Gmove ( hid_t  src_loc_id,
const char *  src_name,
const char *  dst_name 
)

Renames an object within an HDF5 file.


Parameters
[in]src_loc_idThe file or group identifier for the original object
[in]src_nameObject's original name
[in]dst_nameObject's new name
Returns
Returns a non-negative value if successful; otherwise returns a negative value.

H5Gmove() renames an object within an HDF5 file. The original name, src_name, is unlinked from the group graph and the new name, dst_name, is inserted as an atomic operation. Both names are interpreted relative to loc_id, which is either a file or a group identifier.

Attention
Exercise care in moving groups as it is possible to render data in a file inaccessible with H5Gmove(). See The Group Interface in the HDF5 User's Guide.
Version
1.8.0 The function H5Gmove() was deprecated in this release, in favor of H5Lmove().
Since
?

◆ H5Gmove2()

herr_t H5Gmove2 ( hid_t  src_loc_id,
const char *  src_name,
hid_t  dst_loc_id,
const char *  dst_name 
)

Renames an object within an HDF5 file.


Parameters
[in]src_loc_idOriginal file or group identifier
[in]src_nameObject's original name
[in]dst_loc_idDestination file or group identifier
[in]dst_nameObject's new name
Returns
Returns a non-negative value if successful; otherwise returns a negative value.

H5Gmove2() renames an object within an HDF5 file. The original name, src_name, is unlinked from the group graph and the new name, dst_name, is inserted as an atomic operation.

src_name and dst_name are interpreted relative to src_loc_id and dst_loc_id, respectively, which are either file or group identifiers.

Attention
Exercise care in moving groups as it is possible to render data in a file inaccessible with H5G_MOVE2. See The Group Interface in the HDF5 User's Guide.
Version
1.8.0 The function H5Gmove2() was deprecated in this release, in favor of H5Lmove().
Since
?

◆ H5Gopen1()

hid_t H5Gopen1 ( hid_t  loc_id,
const char *  name 
)

Opens an existing group for modification.


Parameters
[in]loc_idLocation identifier
[in]nameName of the group to open
Returns
Returns a non-negative value if successful; otherwise returns a negative value.
Deprecated:
As of HDF5-1.8.0, this function has been deprecated in favor of the function H5Gopen2() and the macro H5Gopen().

H5Gopen1() opens an existing group with the specified name at the specified location, loc_id.

H5Gopen1() returns a group identifier for the group that was opened. This group identifier should be released by calling H5Gclose() when it is no longer needed.

Version
1.8.0 Function was renamed to H5Gopen1() and deprecated.
1.4.0 Fortran function introduced in this release
Since
1.0.0

Parameters
[in]loc_idLocation identifier
[in]nameName of the group to open
Returns
Returns a non-negative value if successful; otherwise returns a negative value.
Deprecated:
As of HDF5-1.8.0, this function has been deprecated in favor of the function H5Gopen2() and the macro H5Gopen().

H5Gopen1() opens an existing group with the specified name at the specified location, loc_id.

H5Gopen1() returns a group identifier for the group that was opened. This group identifier should be released by calling H5Gclose() when it is no longer needed.

Version
1.8.0 Function was renamed to H5Gopen1() and deprecated.
1.4.0 Fortran function introduced in this release
Since
1.0.0

◆ H5Gopen2()

hid_t H5Gopen2 ( hid_t  loc_id,
const char *  name,
hid_t  gapl_id 
)

Opens an existing group in a file.


Parameters
[in]loc_idLocation identifier. The identifier may be that of a file, group, dataset, named datatype, or attribute.
[in]nameName of the group to open
[in]gapl_idGroup access property list identifier
Returns
Returns a group identifier if successful; otherwise returns H5I_INVALID_HID.

H5Gopen2() opens an existing group, name, at the location specified by loc_id.

With default settings, H5Gopen2() provides similar functionality to that provided by H5Gopen(). The only difference is that H5Gopen2() can provide a group access property list, gapl_id.

H5Gopen2() returns a group identifier for the group that was opened. This group identifier should be released by H5Gclose() when it is no longer needed to prevent resource leaks.

Since
1.8.0
See also
H5Gcreate2(), H5Gclose()

◆ H5Grefresh()

herr_t H5Grefresh ( hid_t  group_id)

Refreshes all buffers associated with a group.


Parameters
[in]group_idGroup identifier
Returns
Returns a non-negative value if successful; otherwise returns a negative value.

H5Grefresh() causes all buffers associated with a group to be cleared and immediately re-loaded with updated contents from disk.

This function essentially closes the group, evicts all metadata associated with it from the cache, and then re-opens the group. The reopened group is automatically re-registered with the same identifier.

Since
1.8.0
See also
H5Gcreate2(), H5Gclose()

◆ H5Gset_comment()

herr_t H5Gset_comment ( hid_t  loc_id,
const char *  name,
const char *  comment 
)

Sets comment for specified object.


Parameters
[in]loc_idLocation identifier. The identifier may be that of a file, group, dataset, or named datatype.
[in]nameName of the object whose comment is to be set or reset
[in]commentThe new comment
Returns
Returns a non-negative value if successful; otherwise returns a negative value.

H5Gset_comment() sets the comment for the object specified by loc_id and name to comment. Any previously existing comment will be overwritten.

loc_id can specify any object in the file. name can be one of the following:

  • The name of the object relative to loc_id
  • An absolute name of the object, starting from /, the file’s root group
  • A dot (.), if loc_id fully specifies the object

If comment is the empty string or a null pointer, the comment message will be removed from the object. Comments should be relatively short, null-terminated, ASCII strings.

Comments can be attached to any object that has an object header, e.g., datasets, groups, and named datatypes, but not symbolic links.

Version
1.8.0 The function H5Gset_comment() was deprecated in this release, in favor of H5Oset_comment().
Since
?

◆ H5Gunlink()

herr_t H5Gunlink ( hid_t  loc_id,
const char *  name 
)

Removes the link to an object from a group.


Parameters
[in]loc_idLocation identifier
[in]nameName of the object to unlink
Returns
Returns a non-negative value if successful; otherwise returns a negative value.
Version
1.8.0 The function H5Gunlink() was deprecated in this release, in favor of H5Ldelete().

H5Gunlink() removes the object specified by name from the group graph and decrements the link count for the object to which name points. This action eliminates any association between name and the object to which name pointed.

Object headers keep track of how many hard links refer to an object; when the link count reaches zero, the object can be removed from the file. Objects which are open are not removed until all identifiers to the object are closed.

If the link count reaches zero, all file space associated with the object will be released, i.e., identified in memory as freespace. If any object identifier is open for the object, the space will not be released until after the object identifier is closed.

Note that space identified as freespace is available for re-use only as long as the file remains open; once a file has been closed, the HDF5 library loses track of freespace. See “Freespace Management” in the HDF5 User's Guide for further details.

Attention
Exercise care in unlinking groups as it is possible to render data in a file inaccessible with H5Gunlink(). See The Group Interface in the HDF5 User's Guide.
Version
1.8.0 The function H5Gunlink() was deprecated in this release, in favor of H5Ldelete().
Since
?
See also
H5Gcreate2(), H5Gopen2()
H5G_storage_type_t
H5G_storage_type_t
Definition: H5Gpublic.h:45
H5O_stat_t::size
hsize_t size
Definition: H5Opublic.h:1892
H5G_stat_t
[H5G_stat_t_snip]
Definition: H5Gpublic.h:466
H5G_info_t::max_corder
int64_t max_corder
Definition: H5Gpublic.h:58
hid_t
int64_t hid_t
Definition: H5Ipublic.h:59
H5G_stat_t::fileno
unsigned long fileno[2]
Definition: H5Gpublic.h:467
H5G_info_t::mounted
hbool_t mounted
Definition: H5Gpublic.h:59
H5O_stat_t::free
hsize_t free
Definition: H5Opublic.h:1893
H5G_stat_t::nlink
unsigned nlink
Definition: H5Gpublic.h:469
H5G_info_t::storage_type
H5G_storage_type_t storage_type
Definition: H5Gpublic.h:56
H5O_stat_t::nmesgs
unsigned nmesgs
Definition: H5Opublic.h:1894
herr_t
int herr_t
Definition: H5public.h:128
H5G_stat_t::mtime
time_t mtime
Definition: H5Gpublic.h:471
H5G_stat_t::type
H5G_obj_t type
Definition: H5Gpublic.h:470
hbool_t
unsigned int hbool_t
Definition: H5public.h:159
H5G_stat_t::linklen
size_t linklen
Definition: H5Gpublic.h:472
H5G_stat_t::ohdr
H5O_stat_t ohdr
Definition: H5Gpublic.h:473
H5O_stat_t::nchunks
unsigned nchunks
Definition: H5Opublic.h:1895
H5G_iterate_t
herr_t(* H5G_iterate_t)(hid_t group, const char *name, void *op_data)
[H5G_iterate_t_snip]
Definition: H5Gpublic.h:461
H5G_stat_t::objno
unsigned long objno[2]
Definition: H5Gpublic.h:468
H5G_obj_t
H5G_obj_t
Definition: H5Gpublic.h:447
H5G_info_t
[H5G_info_t_snip]
Definition: H5Gpublic.h:55
H5G_info_t::nlinks
hsize_t nlinks
Definition: H5Gpublic.h:57
H5O_stat_t
[H5O_stat_t_snip]
Definition: H5Opublic.h:1891