Page tree









Retrieves the metadata for an object, identifying the object by an index position


herr_t H5Oget_info_by_idx ( hid_t loc_id, const char *group_name, H5_index_t idx_type,
    H5_iter_order_t order, hsize_t n, H5O_info_t *oinfo, unsigned fields, hid_t lapl_id )
herr_t H5Oget_info_by_idx ( hid_t loc_id, const char *group_name, H5_index_t idx_type, 
     H5_iter_order_t order, hsize_t n, H5O_info_t *oinfo, hid_t lapl_id )

SUBROUTINE h5oget_info_by_idx_f(loc_id, group_name, index_field, order, n, &
       object_info, hdferr, lapl_id)

    INTEGER(HID_T)  , INTENT(IN)            :: loc_id
    CHARACTER(LEN=*), INTENT(IN)            :: group_name
    INTEGER         , INTENT(IN)            :: index_field
    INTEGER         , INTENT(IN)            :: order
    INTEGER(HSIZE_T), INTENT(IN)            :: n
    TYPE(h5o_info_t), INTENT(OUT), TARGET   :: object_info
    INTEGER         , INTENT(OUT)           :: hdferr
    INTEGER(HID_T)  , INTENT(IN) , OPTIONAL :: lapl_id

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


H5O_GET_INFO_BY_IDX is a macro that is mapped to either of:

Such macros are provided to facilitate application compatibility. Their use and mappings are fully described in API Compatibility Macros in HDF5; we urge you to read that document closely.

In HDF5 versions 1.12 and after, H5O_GET_INFO_BY_IDX is mapped to H5O_GET_INFO_BY_IDX3 and H5O_GET_INFO_BY_IDX1 is deprecated.  In version 1.10, H5O_GET_INFO_BY_IDX is identical to H5O_GET_INFO_BY_IDX1.

If using 1.10 (1.10.3+) and encountering performance issues, please use  H5O_GET_INFO_BY_IDX2 to limit the fields retrieved, which can help with performance.

Specific compile-time compatibility flags and the resulting mappings are as follows:

Compatibility settingsH5Oget_info_by_idx
No compatibility flag

H5O_GET_INFO_BY_IDX3 for 1.12

H5O_GET_INFO_BY_IDX1 for 1.8 / 1.10

Emulate Release 1.12H5O_GET_INFO_BY_IDX3
Emulate Release 1.10 / 1.8 interface H5O_GET_INFO_BY_IDX1

Release    Change
1.12.0The macro H5O_GET_INFO_BY_IDX and function H5O_GET_INFO_BY_IDX3 were added, and H5O_GET_INFO_BY_IDX1 was deprecated.

The macro H5Oget_info_by_idx was removed. The functions H5Oget_info_by_idx and H5Oget_info_by_idx1 are identical in this release. This change was added to restore the broken API compatibility introduced in HDF5-1.10.3.

1.10.3The function H5Oget_info_by_idx was renamed to H5Oget_info_by_idx1.The macro H5Oget_info_by_idx and the function H5Oget_info_by_idx2 were introduced in this release.
1.8.11Fortran subroutine introduced in this release.
1.8.0Function introduced in this release.

--- Last Modified: March 31, 2021 | 12:03 PM