48#include "fc_feature_defs.inc"
49MODULE xt_idxlist_collection
50 USE xt_core,
ONLY: xt_abort, xt_get_default_comm
51 USE xt_idxlist_abstract,
ONLY:
xt_idxlist, xt_idxlist_c2f
52 USE iso_c_binding,
ONLY: c_int, c_ptr
56 FUNCTION xt_idxlist_collection_new_c(idxlists, num_lists) &
57 bind(c, name=
'xt_idxlist_collection_new') result(res_ptr)
61 INTEGER(c_int),
VALUE,
INTENT(in) :: num_lists
62 TYPE(c_ptr) :: res_ptr
63 END FUNCTION xt_idxlist_collection_new_c
67 MODULE PROCEDURE xt_idxlist_collection_new_a1d
68 MODULE PROCEDURE xt_idxlist_collection_new_a2d
72 CHARACTER(len=*),
PARAMETER :: filename =
'xt_idxlist_collection_f.f90'
75 FUNCTION xt_idxlist_collection_new_a1d(idxlists)
RESULT(res)
78 INTEGER(c_int) :: num_idxlists_c
80 IF (
SIZE(idxlists) > huge(1_c_int)) &
81 CALL xt_abort(xt_get_default_comm(),
"idxlists array too large", &
83 num_idxlists_c = int(
SIZE(idxlists), c_int)
84 res = xt_idxlist_c2f(xt_idxlist_collection_new_c(idxlists, num_idxlists_c))
85 END FUNCTION xt_idxlist_collection_new_a1d
87 FUNCTION xt_idxlist_collection_new_a2d(idxlists)
RESULT(res)
90 INTEGER(c_int) :: num_idxlists_c
92 IF (
SIZE(idxlists) > huge(1_c_int)) &
93 CALL xt_abort(xt_get_default_comm(),
"idxlists array too large", &
95 num_idxlists_c = int(
SIZE(idxlists), c_int)
96 res = xt_idxlist_c2f(xt_idxlist_collection_new_c(idxlists, num_idxlists_c))
97 END FUNCTION xt_idxlist_collection_new_a2d
99END MODULE xt_idxlist_collection
Xt_idxlist xt_idxlist_collection_new(Xt_idxlist *idxlists, int num_idxlists)