H5G_GET_OBJINFO returns information about the specified object through the statbuf
argument.
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 H5G_GET_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 is returned. The statbuf
fields 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];
unsigned long objno[2];
unsigned nlink;
H5G_obj_t type;
time_t mtime;
size_t linklen;
H5O_stat_t ohdr;
} H5G_stat_t
where H5O_stat_t (defined in H5Opublic.h) is:
typedef struct H5O_stat_t {
hsize_t size;
hsize_t free;
unsigned nmesgs;
unsigned nchunks;
} H5O_stat_t
The fileno
and objno
fields 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 that 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 nlink
field 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 type
field contains the type of the object, one of H5G_GROUP
, H5G_DATASET
, H5G_LINK
, or H5G_TYPE
.
The mtime
field 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.