MODULE Array_Descriptors USE Precision USE ISO_C_BINDING IMPLICIT NONE PRIVATE PUBLIC :: MakeArrayDescriptor INTERFACE MakeArrayDescriptor SUBROUTINE MakeArrayDescriptor_C_long1 (array_descriptor, base_address, lower_bounds, upper_bounds, strides) USE Precision USE ISO_C_BINDING INTEGER (KIND=C_LONG), DIMENSION (:), POINTER :: array_descriptor INTEGER (KIND=C_ADDRESS), INTENT (IN), VALUE :: base_address INTEGER (KIND=C_INT), DIMENSION (1), INTENT (IN) :: lower_bounds, upper_bounds, strides END SUBROUTINE SUBROUTINE MakeArrayDescriptor_C_long_long1 (array_descriptor, base_address, lower_bounds, upper_bounds, strides) USE Precision USE ISO_C_BINDING INTEGER (KIND=C_LONG_LONG), DIMENSION (:), POINTER :: array_descriptor INTEGER (KIND=C_ADDRESS), INTENT (IN), VALUE :: base_address INTEGER (KIND=C_INT), DIMENSION (1), INTENT (IN) :: lower_bounds, upper_bounds, strides END SUBROUTINE SUBROUTINE MakeArrayDescriptor_C_float1 (array_descriptor, base_address, lower_bounds, upper_bounds, strides) USE Precision USE ISO_C_BINDING REAL (KIND=C_FLOAT), DIMENSION (:), POINTER :: array_descriptor INTEGER (KIND=C_ADDRESS), INTENT (IN), VALUE :: base_address INTEGER (KIND=C_INT), DIMENSION (1), INTENT (IN) :: lower_bounds, upper_bounds, strides END SUBROUTINE SUBROUTINE MakeArrayDescriptor_C_double1 (array_descriptor, base_address, lower_bounds, upper_bounds, strides) USE Precision USE ISO_C_BINDING REAL (KIND=C_DOUBLE), DIMENSION (:), POINTER :: array_descriptor INTEGER (KIND=C_ADDRESS), INTENT (IN), VALUE :: base_address INTEGER (KIND=C_INT), DIMENSION (1), INTENT (IN) :: lower_bounds, upper_bounds, strides END SUBROUTINE SUBROUTINE MakeArrayDescriptor_C_bool1 (array_descriptor, base_address, lower_bounds, upper_bounds, strides) USE Precision USE ISO_C_BINDING LOGICAL (KIND=C_BOOL), DIMENSION (:), POINTER :: array_descriptor INTEGER (KIND=C_ADDRESS), INTENT (IN), VALUE :: base_address INTEGER (KIND=C_INT), DIMENSION (1), INTENT (IN) :: lower_bounds, upper_bounds, strides END SUBROUTINE SUBROUTINE MakeArrayDescriptor_C_signed_char1 (array_descriptor, base_address, lower_bounds, upper_bounds, strides) USE Precision USE ISO_C_BINDING INTEGER (KIND=C_SIGNED_CHAR), DIMENSION (:), POINTER :: array_descriptor INTEGER (KIND=C_ADDRESS), INTENT (IN), VALUE :: base_address INTEGER (KIND=C_INT), DIMENSION (1), INTENT (IN) :: lower_bounds, upper_bounds, strides END SUBROUTINE SUBROUTINE MakeArrayDescriptor_C_short1 (array_descriptor, base_address, lower_bounds, upper_bounds, strides) USE Precision USE ISO_C_BINDING INTEGER (KIND=C_SHORT), DIMENSION (:), POINTER :: array_descriptor INTEGER (KIND=C_ADDRESS), INTENT (IN), VALUE :: base_address INTEGER (KIND=C_INT), DIMENSION (1), INTENT (IN) :: lower_bounds, upper_bounds, strides END SUBROUTINE SUBROUTINE MakeArrayDescriptor_C_char1 (array_descriptor, base_address, lower_bounds, upper_bounds, strides) USE Precision USE ISO_C_BINDING CHARACTER (KIND=C_CHAR), DIMENSION (:), POINTER :: array_descriptor INTEGER (KIND=C_ADDRESS), INTENT (IN), VALUE :: base_address INTEGER (KIND=C_INT), DIMENSION (1), INTENT (IN) :: lower_bounds, upper_bounds, strides END SUBROUTINE SUBROUTINE MakeArrayDescriptor_C_long2 (array_descriptor, base_address, lower_bounds, upper_bounds, strides) USE Precision USE ISO_C_BINDING INTEGER (KIND=C_LONG), DIMENSION (:, :), POINTER :: array_descriptor INTEGER (KIND=C_ADDRESS), INTENT (IN), VALUE :: base_address INTEGER (KIND=C_INT), DIMENSION (2), INTENT (IN) :: lower_bounds, upper_bounds, strides END SUBROUTINE SUBROUTINE MakeArrayDescriptor_C_long_long2 (array_descriptor, base_address, lower_bounds, upper_bounds, strides) USE Precision USE ISO_C_BINDING INTEGER (KIND=C_LONG_LONG), DIMENSION (:, :), POINTER :: array_descriptor INTEGER (KIND=C_ADDRESS), INTENT (IN), VALUE :: base_address INTEGER (KIND=C_INT), DIMENSION (2), INTENT (IN) :: lower_bounds, upper_bounds, strides END SUBROUTINE SUBROUTINE MakeArrayDescriptor_C_float2 (array_descriptor, base_address, lower_bounds, upper_bounds, strides) USE Precision USE ISO_C_BINDING REAL (KIND=C_FLOAT), DIMENSION (:, :), POINTER :: array_descriptor INTEGER (KIND=C_ADDRESS), INTENT (IN), VALUE :: base_address INTEGER (KIND=C_INT), DIMENSION (2), INTENT (IN) :: lower_bounds, upper_bounds, strides END SUBROUTINE SUBROUTINE MakeArrayDescriptor_C_double2 (array_descriptor, base_address, lower_bounds, upper_bounds, strides) USE Precision USE ISO_C_BINDING REAL (KIND=C_DOUBLE), DIMENSION (:, :), POINTER :: array_descriptor INTEGER (KIND=C_ADDRESS), INTENT (IN), VALUE :: base_address INTEGER (KIND=C_INT), DIMENSION (2), INTENT (IN) :: lower_bounds, upper_bounds, strides END SUBROUTINE SUBROUTINE MakeArrayDescriptor_C_bool2 (array_descriptor, base_address, lower_bounds, upper_bounds, strides) USE Precision USE ISO_C_BINDING LOGICAL (KIND=C_BOOL), DIMENSION (:, :), POINTER :: array_descriptor INTEGER (KIND=C_ADDRESS), INTENT (IN), VALUE :: base_address INTEGER (KIND=C_INT), DIMENSION (2), INTENT (IN) :: lower_bounds, upper_bounds, strides END SUBROUTINE SUBROUTINE MakeArrayDescriptor_C_signed_char2 (array_descriptor, base_address, lower_bounds, upper_bounds, strides) USE Precision USE ISO_C_BINDING INTEGER (KIND=C_SIGNED_CHAR), DIMENSION (:, :), POINTER :: array_descriptor INTEGER (KIND=C_ADDRESS), INTENT (IN), VALUE :: base_address INTEGER (KIND=C_INT), DIMENSION (2), INTENT (IN) :: lower_bounds, upper_bounds, strides END SUBROUTINE SUBROUTINE MakeArrayDescriptor_C_short2 (array_descriptor, base_address, lower_bounds, upper_bounds, strides) USE Precision USE ISO_C_BINDING INTEGER (KIND=C_SHORT), DIMENSION (:, :), POINTER :: array_descriptor INTEGER (KIND=C_ADDRESS), INTENT (IN), VALUE :: base_address INTEGER (KIND=C_INT), DIMENSION (2), INTENT (IN) :: lower_bounds, upper_bounds, strides END SUBROUTINE SUBROUTINE MakeArrayDescriptor_C_char2 (array_descriptor, base_address, lower_bounds, upper_bounds, strides) USE Precision USE ISO_C_BINDING CHARACTER (KIND=C_CHAR), DIMENSION (:, :), POINTER :: array_descriptor INTEGER (KIND=C_ADDRESS), INTENT (IN), VALUE :: base_address INTEGER (KIND=C_INT), DIMENSION (2), INTENT (IN) :: lower_bounds, upper_bounds, strides END SUBROUTINE SUBROUTINE MakeArrayDescriptor_C_long3 (array_descriptor, base_address, lower_bounds, upper_bounds, strides) USE Precision USE ISO_C_BINDING INTEGER (KIND=C_LONG), DIMENSION (:, :, :), POINTER :: array_descriptor INTEGER (KIND=C_ADDRESS), INTENT (IN), VALUE :: base_address INTEGER (KIND=C_INT), DIMENSION (3), INTENT (IN) :: lower_bounds, upper_bounds, strides END SUBROUTINE SUBROUTINE MakeArrayDescriptor_C_long_long3 (array_descriptor, base_address, lower_bounds, upper_bounds, strides) USE Precision USE ISO_C_BINDING INTEGER (KIND=C_LONG_LONG), DIMENSION (:, :, :), POINTER :: array_descriptor INTEGER (KIND=C_ADDRESS), INTENT (IN), VALUE :: base_address INTEGER (KIND=C_INT), DIMENSION (3), INTENT (IN) :: lower_bounds, upper_bounds, strides END SUBROUTINE SUBROUTINE MakeArrayDescriptor_C_float3 (array_descriptor, base_address, lower_bounds, upper_bounds, strides) USE Precision USE ISO_C_BINDING REAL (KIND=C_FLOAT), DIMENSION (:, :, :), POINTER :: array_descriptor INTEGER (KIND=C_ADDRESS), INTENT (IN), VALUE :: base_address INTEGER (KIND=C_INT), DIMENSION (3), INTENT (IN) :: lower_bounds, upper_bounds, strides END SUBROUTINE SUBROUTINE MakeArrayDescriptor_C_double3 (array_descriptor, base_address, lower_bounds, upper_bounds, strides) USE Precision USE ISO_C_BINDING REAL (KIND=C_DOUBLE), DIMENSION (:, :, :), POINTER :: array_descriptor INTEGER (KIND=C_ADDRESS), INTENT (IN), VALUE :: base_address INTEGER (KIND=C_INT), DIMENSION (3), INTENT (IN) :: lower_bounds, upper_bounds, strides END SUBROUTINE SUBROUTINE MakeArrayDescriptor_C_bool3 (array_descriptor, base_address, lower_bounds, upper_bounds, strides) USE Precision USE ISO_C_BINDING LOGICAL (KIND=C_BOOL), DIMENSION (:, :, :), POINTER :: array_descriptor INTEGER (KIND=C_ADDRESS), INTENT (IN), VALUE :: base_address INTEGER (KIND=C_INT), DIMENSION (3), INTENT (IN) :: lower_bounds, upper_bounds, strides END SUBROUTINE SUBROUTINE MakeArrayDescriptor_C_signed_char3 (array_descriptor, base_address, lower_bounds, upper_bounds, strides) USE Precision USE ISO_C_BINDING INTEGER (KIND=C_SIGNED_CHAR), DIMENSION (:, :, :), POINTER :: array_descriptor INTEGER (KIND=C_ADDRESS), INTENT (IN), VALUE :: base_address INTEGER (KIND=C_INT), DIMENSION (3), INTENT (IN) :: lower_bounds, upper_bounds, strides END SUBROUTINE SUBROUTINE MakeArrayDescriptor_C_short3 (array_descriptor, base_address, lower_bounds, upper_bounds, strides) USE Precision USE ISO_C_BINDING INTEGER (KIND=C_SHORT), DIMENSION (:, :, :), POINTER :: array_descriptor INTEGER (KIND=C_ADDRESS), INTENT (IN), VALUE :: base_address INTEGER (KIND=C_INT), DIMENSION (3), INTENT (IN) :: lower_bounds, upper_bounds, strides END SUBROUTINE SUBROUTINE MakeArrayDescriptor_C_char3 (array_descriptor, base_address, lower_bounds, upper_bounds, strides) USE Precision USE ISO_C_BINDING CHARACTER (KIND=C_CHAR), DIMENSION (:, :, :), POINTER :: array_descriptor INTEGER (KIND=C_ADDRESS), INTENT (IN), VALUE :: base_address INTEGER (KIND=C_INT), DIMENSION (3), INTENT (IN) :: lower_bounds, upper_bounds, strides END SUBROUTINE SUBROUTINE MakeArrayDescriptor_C_long4 (array_descriptor, base_address, lower_bounds, upper_bounds, strides) USE Precision USE ISO_C_BINDING INTEGER (KIND=C_LONG), DIMENSION (:, :, :, :), POINTER :: array_descriptor INTEGER (KIND=C_ADDRESS), INTENT (IN), VALUE :: base_address INTEGER (KIND=C_INT), DIMENSION (4), INTENT (IN) :: lower_bounds, upper_bounds, strides END SUBROUTINE SUBROUTINE MakeArrayDescriptor_C_long_long4 (array_descriptor, base_address, lower_bounds, upper_bounds, strides) USE Precision USE ISO_C_BINDING INTEGER (KIND=C_LONG_LONG), DIMENSION (:, :, :, :), POINTER :: array_descriptor INTEGER (KIND=C_ADDRESS), INTENT (IN), VALUE :: base_address INTEGER (KIND=C_INT), DIMENSION (4), INTENT (IN) :: lower_bounds, upper_bounds, strides END SUBROUTINE SUBROUTINE MakeArrayDescriptor_C_float4 (array_descriptor, base_address, lower_bounds, upper_bounds, strides) USE Precision USE ISO_C_BINDING REAL (KIND=C_FLOAT), DIMENSION (:, :, :, :), POINTER :: array_descriptor INTEGER (KIND=C_ADDRESS), INTENT (IN), VALUE :: base_address INTEGER (KIND=C_INT), DIMENSION (4), INTENT (IN) :: lower_bounds, upper_bounds, strides END SUBROUTINE SUBROUTINE MakeArrayDescriptor_C_double4 (array_descriptor, base_address, lower_bounds, upper_bounds, strides) USE Precision USE ISO_C_BINDING REAL (KIND=C_DOUBLE), DIMENSION (:, :, :, :), POINTER :: array_descriptor INTEGER (KIND=C_ADDRESS), INTENT (IN), VALUE :: base_address INTEGER (KIND=C_INT), DIMENSION (4), INTENT (IN) :: lower_bounds, upper_bounds, strides END SUBROUTINE SUBROUTINE MakeArrayDescriptor_C_bool4 (array_descriptor, base_address, lower_bounds, upper_bounds, strides) USE Precision USE ISO_C_BINDING LOGICAL (KIND=C_BOOL), DIMENSION (:, :, :, :), POINTER :: array_descriptor INTEGER (KIND=C_ADDRESS), INTENT (IN), VALUE :: base_address INTEGER (KIND=C_INT), DIMENSION (4), INTENT (IN) :: lower_bounds, upper_bounds, strides END SUBROUTINE SUBROUTINE MakeArrayDescriptor_C_signed_char4 (array_descriptor, base_address, lower_bounds, upper_bounds, strides) USE Precision USE ISO_C_BINDING INTEGER (KIND=C_SIGNED_CHAR), DIMENSION (:, :, :, :), POINTER :: array_descriptor INTEGER (KIND=C_ADDRESS), INTENT (IN), VALUE :: base_address INTEGER (KIND=C_INT), DIMENSION (4), INTENT (IN) :: lower_bounds, upper_bounds, strides END SUBROUTINE SUBROUTINE MakeArrayDescriptor_C_short4 (array_descriptor, base_address, lower_bounds, upper_bounds, strides) USE Precision USE ISO_C_BINDING INTEGER (KIND=C_SHORT), DIMENSION (:, :, :, :), POINTER :: array_descriptor INTEGER (KIND=C_ADDRESS), INTENT (IN), VALUE :: base_address INTEGER (KIND=C_INT), DIMENSION (4), INTENT (IN) :: lower_bounds, upper_bounds, strides END SUBROUTINE SUBROUTINE MakeArrayDescriptor_C_char4 (array_descriptor, base_address, lower_bounds, upper_bounds, strides) USE Precision USE ISO_C_BINDING CHARACTER (KIND=C_CHAR), DIMENSION (:, :, :, :), POINTER :: array_descriptor INTEGER (KIND=C_ADDRESS), INTENT (IN), VALUE :: base_address INTEGER (KIND=C_INT), DIMENSION (4), INTENT (IN) :: lower_bounds, upper_bounds, strides END SUBROUTINE SUBROUTINE MakeArrayDescriptor_C_long5 (array_descriptor, base_address, lower_bounds, upper_bounds, strides) USE Precision USE ISO_C_BINDING INTEGER (KIND=C_LONG), DIMENSION (:, :, :, :, :), POINTER :: array_descriptor INTEGER (KIND=C_ADDRESS), INTENT (IN), VALUE :: base_address INTEGER (KIND=C_INT), DIMENSION (5), INTENT (IN) :: lower_bounds, upper_bounds, strides END SUBROUTINE SUBROUTINE MakeArrayDescriptor_C_long_long5 (array_descriptor, base_address, lower_bounds, upper_bounds, strides) USE Precision USE ISO_C_BINDING INTEGER (KIND=C_LONG_LONG), DIMENSION (:, :, :, :, :), POINTER :: array_descriptor INTEGER (KIND=C_ADDRESS), INTENT (IN), VALUE :: base_address INTEGER (KIND=C_INT), DIMENSION (5), INTENT (IN) :: lower_bounds, upper_bounds, strides END SUBROUTINE SUBROUTINE MakeArrayDescriptor_C_float5 (array_descriptor, base_address, lower_bounds, upper_bounds, strides) USE Precision USE ISO_C_BINDING REAL (KIND=C_FLOAT), DIMENSION (:, :, :, :, :), POINTER :: array_descriptor INTEGER (KIND=C_ADDRESS), INTENT (IN), VALUE :: base_address INTEGER (KIND=C_INT), DIMENSION (5), INTENT (IN) :: lower_bounds, upper_bounds, strides END SUBROUTINE SUBROUTINE MakeArrayDescriptor_C_double5 (array_descriptor, base_address, lower_bounds, upper_bounds, strides) USE Precision USE ISO_C_BINDING REAL (KIND=C_DOUBLE), DIMENSION (:, :, :, :, :), POINTER :: array_descriptor INTEGER (KIND=C_ADDRESS), INTENT (IN), VALUE :: base_address INTEGER (KIND=C_INT), DIMENSION (5), INTENT (IN) :: lower_bounds, upper_bounds, strides END SUBROUTINE SUBROUTINE MakeArrayDescriptor_C_bool5 (array_descriptor, base_address, lower_bounds, upper_bounds, strides) USE Precision USE ISO_C_BINDING LOGICAL (KIND=C_BOOL), DIMENSION (:, :, :, :, :), POINTER :: array_descriptor INTEGER (KIND=C_ADDRESS), INTENT (IN), VALUE :: base_address INTEGER (KIND=C_INT), DIMENSION (5), INTENT (IN) :: lower_bounds, upper_bounds, strides END SUBROUTINE SUBROUTINE MakeArrayDescriptor_C_signed_char5 (array_descriptor, base_address, lower_bounds, upper_bounds, strides) USE Precision USE ISO_C_BINDING INTEGER (KIND=C_SIGNED_CHAR), DIMENSION (:, :, :, :, :), POINTER :: array_descriptor INTEGER (KIND=C_ADDRESS), INTENT (IN), VALUE :: base_address INTEGER (KIND=C_INT), DIMENSION (5), INTENT (IN) :: lower_bounds, upper_bounds, strides END SUBROUTINE SUBROUTINE MakeArrayDescriptor_C_short5 (array_descriptor, base_address, lower_bounds, upper_bounds, strides) USE Precision USE ISO_C_BINDING INTEGER (KIND=C_SHORT), DIMENSION (:, :, :, :, :), POINTER :: array_descriptor INTEGER (KIND=C_ADDRESS), INTENT (IN), VALUE :: base_address INTEGER (KIND=C_INT), DIMENSION (5), INTENT (IN) :: lower_bounds, upper_bounds, strides END SUBROUTINE SUBROUTINE MakeArrayDescriptor_C_char5 (array_descriptor, base_address, lower_bounds, upper_bounds, strides) USE Precision USE ISO_C_BINDING CHARACTER (KIND=C_CHAR), DIMENSION (:, :, :, :, :), POINTER :: array_descriptor INTEGER (KIND=C_ADDRESS), INTENT (IN), VALUE :: base_address INTEGER (KIND=C_INT), DIMENSION (5), INTENT (IN) :: lower_bounds, upper_bounds, strides END SUBROUTINE END INTERFACE END MODULE Array_Descriptors