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