49 use,
INTRINSIC :: iso_c_binding, only: c_ptr, c_null_ptr, c_int, &
56 TYPE,
BIND(C),
PUBLIC :: xt_config
60 TYPE(c_ptr) :: cptr = c_null_ptr
69 TYPE(xt_config),
INTENT(in) :: config
78 INTEGER,
PUBLIC,
PARAMETER :: &
90 FUNCTION xt_config_new_c()
RESULT(config) &
91 bind(c, name=
'xt_config_new')
95 END FUNCTION xt_config_new_c
97 config%cptr = xt_config_new_c()
103 SUBROUTINE xt_config_delete_c(config) bind(c, name='xt_config_delete')
106 TYPE(c_ptr),
VALUE,
INTENT(in) :: config
107 END SUBROUTINE xt_config_delete_c
109 CALL xt_config_delete_c(config%cptr)
114 INTEGER,
INTENT(in) :: method
115 INTEGER(c_int) :: method_c
117 SUBROUTINE xt_config_set_exchange_method_c(config, method) &
118 bind(c, name=
'xt_config_set_exchange_method')
119 IMPORT :: c_int, c_ptr
120 TYPE(c_ptr),
VALUE :: config
121 INTEGER(c_int),
VALUE :: method
122 END SUBROUTINE xt_config_set_exchange_method_c
124 method_c = int(method, c_int)
125 CALL xt_config_set_exchange_method_c(config%cptr, method_c)
132 FUNCTION xt_config_get_exchange_method_c(config)
RESULT(method) &
133 bind(c, name=
'xt_config_get_exchange_method')
134 IMPORT :: c_int, c_ptr
135 TYPE(c_ptr),
VALUE :: config
136 INTEGER(c_int) :: method
137 END FUNCTION xt_config_get_exchange_method_c
139 method = int(xt_config_get_exchange_method_c(config%cptr))
143 CHARACTER(len=*),
INTENT(in) :: name
144 INTEGER :: exchanger_id
146 FUNCTION xt_exchanger_id_by_name_c(name)
RESULT(exchanger_id) &
147 bind(c, name=
'xt_exchanger_id_by_name')
148 IMPORT :: c_char, c_int
149 CHARACTER(len=1, kind=c_char),
INTENT(in) :: name(*)
150 INTEGER(c_int) :: exchanger_id
151 END FUNCTION xt_exchanger_id_by_name_c
153 INTEGER(c_int) :: c_id
154 CHARACTER(len=1) :: name_c(len(name)+1)
158 name_c(i) = name(i:i)
160 name_c(nlen+1) = c_null_char
161 c_id = xt_exchanger_id_by_name_c(name_c)
162 exchanger_id = int(c_id)
int xt_exchanger_id_by_name(const char *name)
void xt_config_delete(Xt_config config)
void xt_config_set_exchange_method(Xt_config config, int method)
@ xt_exchanger_irecv_isend
@ xt_exchanger_irecv_send
@ xt_exchanger_irecv_isend_packed
@ xt_exchanger_neigh_alltoall
@ xt_exchanger_mix_isend_irecv
Xt_config xt_config_new(void)
int xt_config_get_exchange_method(Xt_config config)