Page tree

The license could not be verified: License Certificate has expired!

 

JAVA

FORTRAN

C++

C

 

Link

H5O_GET_INFO1

Retrieves the metadata for an object specified by an identifier

As of HDF5-1.12 this function has been deprecated in favor of the function H5O_GET_INFO3 or the macro H5O_GET_INFO.

Procedure:

H5O_GET_INFO1 ( loc_id, oinfo )

Signature:

herr_t H5Oget_info1 ( hid_t loc_id, H5O_info1_t *oinfo )

SUBROUTINE h5oget_info_f(object_id, object_info, hdferr)

    USE, INTRINSIC :: ISO_C_BINDING
    IMPLICIT NONE
    INTEGER(HID_T)  , INTENT(IN)            :: object_id
    TYPE(h5o_info_t), INTENT(OUT), TARGET   :: object_info
    INTEGER         , INTENT(OUT)           :: hdferr

Related Fortran2003 Derived Type: h5o_info_t

  TYPE, BIND(C) :: space_t
     INTEGER(hsize_t) :: total ! Total space for storing object header in file
     INTEGER(hsize_t) :: meta  ! Space within header for object header metadata 
                               ! information
     INTEGER(hsize_t) :: mesg  ! Space within header for actual message 
                               ! information
     INTEGER(hsize_t) :: free  ! Free space within object header
  END TYPE space_t

  TYPE, BIND(C) :: mesg_t
     INTEGER(c_int64_t) :: present ! Flags to indicate presence of message type 
                                   ! in header 
     INTEGER(c_int64_t) :: shared  ! Flags to indicate message type is shared 
                                   ! in header
  END TYPE mesg_t
  
  TYPE, BIND(C) :: hdr_t
     INTEGER :: version ! Version number of header format in file
     INTEGER :: nmesgs  ! Number of object header messages
     INTEGER :: nchunks ! Number of object header chunks
     INTEGER :: flags   ! Object header status flags
     TYPE(space_t)  :: space   
     TYPE(mesg_t)   :: mesg
  END TYPE hdr_t

  ! Extra metadata storage for obj & attributes
  TYPE, BIND(C) :: H5_ih_info_t
     INTEGER(hsize_t) :: index_size ! btree and/or list
     INTEGER(hsize_t) :: heap_size
  END TYPE H5_ih_info_t

  TYPE, BIND(C) :: meta_size_t
     TYPE(H5_ih_info_t) :: obj  ! v1/v2 B-tree & local/fractal heap for 
                                ! groups, B-tree for chunked datasets
     TYPE(H5_ih_info_t) :: attr ! v2 B-tree & heap for attributes
  ENDTYPE meta_size_t
  
  TYPE, BIND(C) :: h5o_info_t
     INTEGER(C_LONG)  :: fileno     ! File number that object is located in
     INTEGER(haddr_t) :: addr       ! Object address in file  
     INTEGER(C_INT)   :: type       ! Basic object type (group, dataset, etc.) 
     INTEGER          :: rc         ! Reference count of object

     INTEGER, DIMENSION(8) :: atime ! Access time        !    -- NOTE --
     INTEGER, DIMENSION(8) :: mtime ! Modification time  ! Returns an integer 
     INTEGER, DIMENSION(8) :: ctime ! Change time        ! array as specified 
     INTEGER, DIMENSION(8) :: btime ! Birth time         ! in Fortran intrinsic 
                                                         ! DATE_AND_TIME(VALUES)

     INTEGER(hsize_t) :: num_attrs  ! # of attributes attached to object

     TYPE(hdr_t) :: hdr

     TYPE(meta_size_t) :: meta_size
  END TYPE h5o_info_t

Parameters:
hid_t loc_idIN: Identifier for object of type specified by H5O_type_t; may be a file, group, dataset, named datatype or attribute identifier
H5O_info1_t *oinfo    OUT: Buffer in which to return object information

Description:

H5O_GET_INFO1 specifies an object by its identifier, loc_id, and retrieves the metadata describing that object in oinfo, defined as   a struct of type H5O_info1_t:

src / H5Opublic.h [255:273]  hdf5_1_12  HDFFV/hdf5
/* Information struct for object */
/* (For H5Oget_info/H5Oget_info_by_name/H5Oget_info_by_idx versions 1 & 2) */
typedef struct H5O_info1_t {
    unsigned long  fileno;    /* File number that object is located in */
    haddr_t        addr;      /* Object address in file	*/
    H5O_type_t     type;      /* Basic object type (group, dataset, etc.) */
    unsigned       rc;        /* Reference count of object    */
    time_t         atime;     /* Access time			*/
    time_t         mtime;     /* Modification time		*/
    time_t         ctime;     /* Change time			*/
    time_t         btime;     /* Birth time			*/
    hsize_t        num_attrs; /* # of attributes attached to object */
    H5O_hdr_info_t hdr;       /* Object header information */
    /* Extra metadata storage for obj & attributes */
    struct {
        H5_ih_info_t obj;  /* v1/v2 B-tree & local/fractal heap for groups, B-tree for chunked datasets */
        H5_ih_info_t attr; /* v2 B-tree & heap for attributes */
    } meta_size;

Note the following about H50_info1_t:

  • Of the four time fields (atime, mtime, ctime, and btime) only ctime has been implemented.
  • The atime value is the last time the object was read or written.
  • The mtime value is the last time the raw data in the object was changed.
  • The ctime value is the last time the metadata for the object was changed.
  • The btime value is the time the object was created.
  • The fields nested in the meta_size field are for internal library use only.

An H5O_type_t enum indicates the object type and is defined (in H5Opublic.h) as follows:

typedef enum H5O_type_t {
    H5O_TYPE_UNKNOWN = -1,      /* Unknown object type                      */
    H5O_TYPE_GROUP,             /* Object is a group                        */
    H5O_TYPE_DATASET,           /* Object is a dataset                      */
    H5O_TYPE_NAMED_DATATYPE,    /* Object is a committed (named) datatype   */
    H5O_TYPE_NTYPES             /* Number of different object types (must   */
                                /* be last!)                                */
} H5O_type_t;   

Note that object_id refers only to the types specified by H5O_type_t.

An H5O_hdr_info_t struct holds object header metadata and is defined (in H5Opublic.h) as follows:

typedef struct H5O_hdr_info_t {
    unsigned version;           /* Version number of header format in file  */
    unsigned nmesgs;            /* Number of object header messages         */
    unsigned nchunks;           /* Number of object header chunks           */
    unsigned flags;             /* Object header status flags               */
    struct {
        hsize_t total;          /* Total space for storing object header in */ 
                                /*   file                                   */
        hsize_t meta;           /* Space within header for object header    */
                                /*   metadata information                   */
        hsize_t mesg;           /* Space within header for actual message   */
                                /*   information                            */
        hsize_t free;           /* Free space within object header          */
    } space;
    struct {
        uint64_t present;       /* Flags to indicate presence of message    */
                                /*   type in header                         */
        uint64_t shared;        /* Flags to indicate message type is        */
                                /*   shared in header                       */
    } mesg;
} H5O_hdr_info_t;
    

Valid values for the version field are H5O_VERSION_1 and H5O_VERSION_2. Version 2 of the object header is smaller and more efficient than version 1.

Please be aware that the information held by H5O_hdr_info_t may only be useful to developers with extensive HDF5 experience.

Note:

If you are iterating through a lot of different objects to retrieve information via the H5O_GET_INFO family of routines, you may see memory building up. This can be due to memory allocation for metadata such as  object headers and messages when the iterated objects are put into the metadata cache.

If the memory buildup is not desirable, you can configure a smaller cache via H5F_SET_MDC_CONFIG or set the file access property list via H5P_SET_MDC_CONFIG. A smaller sized cache will force metadata entries to be evicted from the cache, thus freeing the memory associated with the entries.

Returns:

Returns a non-negative value if successful; otherwise returns a negative value.

Example:

History:
Release    Change
1.10.5The macro H5O_GET_INFO was removed and the function H5O_GET_INFO1 was copied to H5O_GET_INFO.
1.10.3Function H5O_GET_INFO was copied to H5O_GET_INFO1, and the macro H5O_GET_INFO was created.
1.8.15Added a note about the valid values for the version field in the H5O_hdr_info_t structure.
1.8.11Fortran subroutine introduced in this release.
1.8.10Added H5O_type_t structure to the Description section.
Separated H5O_hdr_info_t structure from H5O_info_t in the Description section.
Clarified the definition and implementation of the time fields.
1.8.0Function introduced in this release.

--- Last Modified: March 13, 2020 | 11:11 AM