48#include "fc_feature_defs.inc"
49MODULE xt_xmap_dist_dir_bucket_gen2
50 USE iso_c_binding,
ONLY: c_int, c_ptr, c_size_t
51 USE xt_core,
ONLY: xt_mpi_fint_kind
59 INTEGER(c_int),
PUBLIC,
PARAMETER :: &
60 xt_dist_dir_bucket_gen_type_send = 1, &
61 xt_dist_dir_bucket_gen_type_recv = 2, &
62 xt_dist_dir_bucket_gen_type_sendrecv = 3
64 TYPE,
BIND(c),
PUBLIC :: xt_xmdd_bucket_gen_comms
65 INTEGER(xt_mpi_fint_kind) :: intra_comm, inter_comm, &
66 tag_offset_intra, tag_offset_inter
78 SUBROUTINE xt_xmdd_bucket_gen_define_interface_f(gen, init, destroy, &
79 get_intersect_max_num, next, gen_state_size, init_params)
86 FUNCTION init(gen_state, src_idxlist, &
87 dst_idxlist, config, comms, init_params)
BIND(c) RESULT(stripify)
90 INTEGER(c_int) :: stripify
91 TYPE(c_ptr),
VALUE :: gen_state
92 TYPE(
xt_idxlist),
VALUE,
INTENT(in) :: src_idxlist,dst_idxlist
93 TYPE(
xt_config),
VALUE,
INTENT(in) :: config
95 TYPE(c_ptr),
VALUE,
INTENT(in) :: init_params
100 SUBROUTINE destroy(gen_state)
BIND(c)
102 TYPE(c_ptr),
VALUE,
INTENT(in) :: gen_state
103 END SUBROUTINE destroy
105 FUNCTION get_intersect_max_num(gen_state, &
106 bucket_type)
BIND(C) RESULT(max_num)
107 IMPORT :: c_ptr, c_int
108 TYPE(c_ptr),
VALUE :: gen_state
109 INTEGER(c_int),
VALUE :: bucket_type
110 INTEGER(c_int) :: max_num
111 END FUNCTION get_intersect_max_num
117 FUNCTION next(gen_state, bucket_type) &
118 BIND(C) result(bucket)
120 TYPE(c_ptr),
VALUE :: gen_state
121 INTEGER(c_int),
VALUE :: bucket_type
141 INTEGER(c_size_t) :: gen_state_size
142 TYPE(c_ptr),
VALUE :: init_params
143 END SUBROUTINE xt_xmdd_bucket_gen_define_interface_f
145END MODULE xt_xmap_dist_dir_bucket_gen2
void xt_xmdd_bucket_gen_define_interface(Xt_xmdd_bucket_gen gen, Xt_xmdd_bucket_gen_init_state init, Xt_xmdd_bucket_gen_destroy_state destroy, Xt_xmdd_bucket_gen_get_intersect_max_num get_intersect_max_num, Xt_xmdd_bucket_gen_next next, size_t gen_state_size, void *init_params)