49 use,
INTRINSIC :: iso_c_binding, only: c_int, c_size_t
56 IMPORT :: c_int, c_size_t
57 INTEGER(c_size_t),
VALUE,
INTENT(in) :: n
58 INTEGER(c_int),
INTENT(inout) :: a(n)
60 MODULE PROCEDURE xt_sort_int_a
61 END INTERFACE xt_sort_int
64 INTERFACE xt_sort_index
66 bind(c, name=
'xt_sort_index_f2c')
68 INTEGER(c_int),
VALUE,
INTENT(in) :: n, reset_positions
69 INTEGER(c_int),
INTENT(inout) :: a(n), positions(n)
71 MODULE PROCEDURE xt_sort_index_a_a_l
72 END INTERFACE xt_sort_index
73 PUBLIC :: xt_sort_index
75 INTERFACE xt_sort_permutation
77 bind(c, name=
'xt_sort_int_permutation_f2c')
78 IMPORT :: c_int, c_size_t
79 INTEGER(c_size_t),
VALUE,
INTENT(in) :: n
80 INTEGER(c_int),
INTENT(inout) :: a(n), permutation(n)
82 MODULE PROCEDURE xt_sort_int_permutation
83 END INTERFACE xt_sort_permutation
84 PUBLIC :: xt_sort_permutation
86 TYPE,
BIND(c),
PUBLIC :: xt_idxpos
87 INTEGER(xt_int_kind) :: idx
94 INTEGER(c_size_t),
VALUE,
INTENT(in) :: n
95 TYPE(xt_idxpos),
INTENT(inout) :: a(n)
97 MODULE PROCEDURE xt_sort_idxpos_a
101 CHARACTER(len=*),
PARAMETER :: filename =
'xt_sort_f.f90'
103 SUBROUTINE xt_sort_int_a(a)
104 INTEGER(c_int),
INTENT(inout) :: a(:)
108 END SUBROUTINE xt_sort_int_a
110 SUBROUTINE xt_sort_index_a_a_l(a, positions, reset_positions)
111 INTEGER(c_int),
INTENT(inout) :: a(:), positions(:)
112 LOGICAL,
INTENT(in) :: reset_positions
115 IF (a_size >
SIZE(positions)) &
116 CALL xt_abort(
"positions array too small", filename, __line__)
118 merge(1_c_int, 0_c_int, reset_positions))
119 END SUBROUTINE xt_sort_index_a_a_l
121 SUBROUTINE xt_sort_idxpos_a(a)
122 TYPE(xt_idxpos),
INTENT(inout) :: a(:)
126 END SUBROUTINE xt_sort_idxpos_a
128 SUBROUTINE xt_sort_int_permutation(a, permutation)
129 INTEGER(c_int),
INTENT(inout) :: a(:), permutation(:)
134 END SUBROUTINE xt_sort_int_permutation
integer, parameter, public xt_int_kind
void xt_sort_int_f2c(int *a, size_t n)
void xt_sort_index_f2c(Xt_int *a, int n, int *idx, int reset_index)
void xt_sort_int_permutation_f2c(int *a, size_t n, int *permutation)
void xt_sort_idxpos_f2c(idxpos_type *a, size_t n)