Name: H5Rget_obj_type
Signature:
  H5G_obj_t `H5Rget_obj_type`( hid_t `loc_id`, H5R_type_t `ref_type`, void *`ref` )

Purpose:
  Retrieves the type of object that an object reference points to.

Description:
  Given an object reference, `ref`, `H5Rget_obj_type` returns the type of the referenced object.

  A reference type is the type of reference, either an object reference or a dataset region reference. An object reference points to an HDF5 object while a dataset region reference points to a defined region within a dataset.

  The referenced object is the object the reference points to. The referenced object type, or the type of the referenced object, is the type of the object that the reference points to.

  The location identifier, `loc_id`, is the identifier for either the dataset containing the object reference or the group containing that dataset.

  Valid reference types, to pass in as `ref_type`, include the following:

  | `H5R_OBJECT` | Object reference
  | `H5R_DATASET_REGION` | Dataset region reference

  If the application does not already know the object reference type, that can be determined with three preliminary calls:

  - Call `H5Dget_type` on the dataset containing the reference to get a datatype identifier for the dataset’s datatype.
  - Using that datatype identifier, `H5Tget_class` returns a datatype class.
  - If the datatype class is `H5T_REFERENCE`, `H5Tequal` can then be used to determine whether the reference’s datatype is `H5T_STD_REF_OBJ` or `H5T_STD_REF_DSETREG`:
    - If the datatype is `H5T_STD_REF_OBJ`, the reference object type is `H5R_OBJECT`.
    - If the datatype is `H5T_STD_REF_DSETREG`, the reference object type is `H5R_DATASET_REGION`.

  When the function completes successfully, it returns one of the following valid object type values (defined in `H5Gpublic.h`):

  | `H5G_LINK` | Object is a symbolic link.
  | `H5G_GROUP` | Object is a group.
  | `H5G_DATASET` | Object is a dataset.
  | `H5G_TYPE` | Object is a named datatype.

Parameters:

hid_t `loc_id` | IN: The dataset containing the reference object or the group containing that dataset.
H5R_type_t `ref_type` | IN: Type of reference to query.
void *`ref` | IN: Reference to query.

Returns:
  Returns a valid object type if successful; otherwise returns `H5G_UNKNOWN`.

Fortran90 Interface: h5rget_object_type_f

      SUBROUTINE h5rget_object_type_f(dset_id, ref, obj_type, hdferr)
        IMPLICIT NONE
        INTEGER(HID_T), INTENT(IN) :: dset_id   ! Dataset identifier
        TYPE(hobj_ref_t_f), INTENT(IN) :: ref   ! Object reference
        INTEGER, INTENT(OUT) :: obj_type        ! Object type
                                                !     H5G_UNKNOWN_F (-1)
                                                !     H5G_LINK_F      0
                                                !     H5G_GROUP_F     1
                                                !     H5G_DATASET_F   2
                                                !     H5G_TYPE_F      3
        INTEGER, INTENT(OUT) :: hdferr          ! Error code
                                                ! 0 on success and -1 on failure

      END SUBROUTINE h5rget_object_type_f

History:

  Release | C
  1.6.0 | Function introduced in this release.