Page tree

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

 

JAVA

FORTRAN

C++

C

 

Link

H5O_GET_INFO_BY_IDX3

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

Procedure:

H5O_GET_INFO_BY_IDX3 ( loc_id, group_name, idx_type, order, n, oinfo, fields, lapl_id )

Signature:

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

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

    USE, INTRINSIC :: ISO_C_BINDING
    IMPLICIT NONE
    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
    INTEGER         , INTENT(IN) , OPTIONAL :: fields

Related Fortran2003 Derived Type: h5o_info_t

 
   TYPE, BIND(C) :: h5o_info_t
     INTEGER(C_LONG)     :: fileno     ! File number that object is located in
     TYPE(H5O_TOKEN_T_F) :: token      ! Token for object 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 array
     INTEGER, DIMENSION(8) :: ctime ! Change time         ! as specified in the Fortran
     INTEGER, DIMENSION(8) :: btime ! Birth time          ! intrinsic DATE_AND_TIME(VALUES)

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

Parameters:
hid_t loc_idIN: Location identifier of object; may be a file, group, dataset, named datatype or attribute identifier
const char *group_name    IN: Name of group in which object is located
H5_index_t idx_typeIN: Index or field that determines the order
H5_iter_order_t orderIN: Order within field or index
hsize_t nIN: Object for which information is to be returned
H5O_info2_t *oinfoOUT: Buffer in which to return object information
unsigned int fieldsIN: Flags specifying the fields to include in object_info
hid_t lapl_idIN: Link access property list
(Not currently used; pass as NULL.)

Description:

H5O_GET_INFO_BY_IDX3 retrieves the metadata describing an object in the struct oinfo, as specified by the location, loc_id, group name, group_name, the index by which objects in that group are tracked, idx_type, the order by which the index is to be traversed, order, and an object’s position n within that index .

If loc_id fully specifies the group in which the object resides, group_name can be a dot (.).

idx_type is of type H5_index_t, defined in H5public.h as:

src / H5public.h [311:321]  hdf5_1_12  HDFFV/hdf5
/*
 * The types of indices on links in groups/attributes on objects.
 * Primarily used for "<do> <foo> by index" routines and for iterating over
 * links in groups/attributes on objects.
 */
typedef enum H5_index_t {
    H5_INDEX_UNKNOWN = -1,	/* Unknown index type			*/
    H5_INDEX_NAME,		/* Index on names 			*/
    H5_INDEX_CRT_ORDER,		/* Index on creation order 		*/
    H5_INDEX_N			/* Number of indices defined 		*/
} H5_index_t;

order is of type H5_iter_order_t defined in H5public.h as:

src / H5public.h [294:301]  hdf5_1_12  HDFFV/hdf5
/* Common iteration orders */
typedef enum {
    H5_ITER_UNKNOWN = -1,       /* Unknown order */
    H5_ITER_INC,                /* Increasing order */
    H5_ITER_DEC,                /* Decreasing order */
    H5_ITER_NATIVE,             /* No particular order, whatever is fastest */
    H5_ITER_N		        /* Number of iteration orders */
} H5_iter_order_t;

oinfo, in which the object information is returned, is a struct of type H5O_info2_t, which is defined in H5Opublic.h in the HDF5 source code:   

src / H5Opublic.h [129:141]  hdf5_1_12  HDFFV/hdf5
/* Data model information struct for objects */
/* (For H5Oget_info / H5Oget_info_by_name / H5Oget_info_by_idx version 3) */
typedef struct H5O_info2_t {
    unsigned long   fileno;     /* File number that object is located in */
    H5O_token_t     token;      /* Token representing the object        */
    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_info2_t;

Note the following about  H50_info2_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.

H5O_token_t is defined in H5public.h as follows:

src / H5public.h [337:341]  hdf5_1_12  HDFFV/hdf5
/* Type for object tokens */
/* (Hoisted here, since it's used by both the H5Lpublic.h and H5Opublic.h headers) */
typedef struct H5O_token_t {
    uint8_t __data[H5O_MAX_TOKEN_SIZE];
} H5O_token_t;

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

src / H5Opublic.h [101:109]  hdf5_1_12  HDFFV/hdf5
/* Types of objects in file */
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 named data type */
    H5O_TYPE_MAP,               /* Object is a map */
    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.

The fields parameter contains flags to determine which fields will be filled in in the H5O_info2_t struct returned in oinfo. These flags are defined in the H5Opublic.h file:

FlagPurpose
H5O_INFO_BASICFill in the fileno, addr, type, and rc fields
H5O_INFO_TIMEFill in the atime, mtime, ctime, and btime fields
H5O_INFO_NUM_ATTRSFill in the num_attrs field
H5O_INFO_HDRFill in the hdr field
H5O_INFO_META_SIZEFill in the meta_size field
H5O_INFO_ALLH5O_INFO_BASIC | H5O_INFO_TIME | H5O_INFO_NUM_ATTRS | H5O_INFO_HDR | H5O_INFO_META_SIZE

The link access property list, lapl_id, is not currently used; it should be passed in as NULL.

Returns:

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

Example:

test / titerate.c [228:229]  1.12/master  HDFFV/hdf5
        ret = H5Oget_info_by_idx3(root_group, ".", H5_INDEX_NAME, H5_ITER_INC, (hsize_t)i, &oinfo, H5O_INFO_BASIC, H5P_DEFAULT);
        CHECK(ret, FAIL, "H5Oget_info_by_idx");

History:
Release    Change
1.12.0Function was introduced in this release.

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