summaryrefslogtreecommitdiffstats
path: root/fortran/src/H5Rff.f90
diff options
context:
space:
mode:
Diffstat (limited to 'fortran/src/H5Rff.f90')
-rw-r--r--fortran/src/H5Rff.f90138
1 files changed, 138 insertions, 0 deletions
diff --git a/fortran/src/H5Rff.f90 b/fortran/src/H5Rff.f90
new file mode 100644
index 0000000..3fd9142
--- /dev/null
+++ b/fortran/src/H5Rff.f90
@@ -0,0 +1,138 @@
+!
+! This file contains Fortran90 interfaces for H5R functions.
+!
+ MODULE H5R
+ USE H5FORTRAN_TYPES
+ USE H5FORTRAN_FLAGS
+
+ TYPE hobj_ref_t_f
+ !INTEGER(KIND=4) ref(2) could cause trouble on Crays
+ CHARACTER ref(8)
+ END TYPE
+
+ TYPE hdset_reg_ref_t_f
+ !INTEGER(KIND=4) reg_ref(3) could cause troubles on Crays
+ CHARACTER ref(12)
+ END TYPE
+
+ INTERFACE h5rcreate_f
+
+ MODULE PROCEDURE h5rcreate_object_f
+ MODULE PROCEDURE h5rcreate_region_f
+
+ END INTERFACE
+
+ INTERFACE h5rdereference_f
+
+ MODULE PROCEDURE h5rdereference_object_f
+ MODULE PROCEDURE h5rdereference_region_f
+
+ END INTERFACE
+
+ INTERFACE h5rget_region_f
+
+ MODULE PROCEDURE h5rget_region_region_f
+
+ END INTERFACE
+
+ INTERFACE h5rget_object_type_f
+
+ MODULE PROCEDURE h5rget_object_type_obj_f
+
+ END INTERFACE
+
+
+ CONTAINS
+
+
+ SUBROUTINE h5rcreate_object_f(loc_id, name, ref, hdferr)
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: loc_id ! Location identifier
+ CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the object at location specified
+ ! by loc_id identifier
+ TYPE(hobj_ref_t_f), INTENT(OUT) :: ref ! Object reference
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+
+ INTEGER :: namelen ! Name length
+ INTEGER, EXTERNAL :: h5rcreate_object_c
+ namelen = LEN(name)
+ hdferr = h5rcreate_object_c(ref, loc_id, name, namelen )
+
+ END SUBROUTINE h5rcreate_object_f
+
+ SUBROUTINE h5rcreate_region_f(loc_id, name, space_id, ref, hdferr)
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: loc_id ! Location identifier
+ CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the dataset at location specified
+ ! by loc_id identifier
+ INTEGER(HID_T), INTENT(IN) :: space_id ! Dataset's dataspace identifier
+ TYPE(hdset_reg_ref_t_f), INTENT(OUT) :: ref ! Dataset region reference
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+
+ INTEGER :: namelen ! Name length
+ INTEGER, EXTERNAL :: h5rcreate_region_c
+ namelen = LEN(name)
+ hdferr = h5rcreate_region_c(ref, loc_id, name, namelen, space_id )
+
+ END SUBROUTINE h5rcreate_region_f
+
+ SUBROUTINE h5rdereference_object_f(dset_id, ref, obj_id, hdferr)
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier
+ TYPE(hobj_ref_t_f), INTENT(IN) :: ref ! Object reference
+ INTEGER(HID_T), INTENT(OUT) :: obj_id ! Object identifier
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+
+ INTEGER :: ref_type ! Reference type
+ INTEGER, EXTERNAL :: h5rdereference_object_c
+ ref_type = H5R_OBJECT_F
+ hdferr = h5rdereference_object_c(dset_id, ref, obj_id )
+
+ END SUBROUTINE h5rdereference_object_f
+
+ SUBROUTINE h5rdereference_region_f(dset_id, ref, obj_id, hdferr)
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier
+ TYPE(hdset_reg_ref_t_f), INTENT(IN) :: ref ! Object reference
+ INTEGER(HID_T), INTENT(OUT) :: obj_id ! Object identifier
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+
+ INTEGER :: ref_type ! Reference type
+ INTEGER, EXTERNAL :: h5rdereference_region_c
+ ref_type = H5R_DATASET_REGION_F
+ hdferr = h5rdereference_region_c(dset_id, ref, obj_id )
+
+ END SUBROUTINE h5rdereference_region_f
+
+
+ SUBROUTINE h5rget_region_region_f(dset_id, ref, space_id, hdferr)
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier
+ TYPE(hdset_reg_ref_t_f), INTENT(IN) :: ref ! Dataset region reference
+ INTEGER(HID_T), INTENT(OUT) :: space_id ! Space identifier
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+
+ INTEGER, EXTERNAL :: h5rget_region_region_c
+ hdferr = h5rget_region_region_c(dset_id, ref, space_id )
+
+ END SUBROUTINE h5rget_region_region_f
+
+ SUBROUTINE h5rget_object_type_obj_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
+
+ INTEGER, EXTERNAL :: h5rget_object_type_obj_c
+ hdferr = h5rget_object_type_obj_c(dset_id, ref, obj_type )
+
+ END SUBROUTINE h5rget_object_type_obj_f
+
+ END MODULE H5R