-MPI_Request smpi_request_f2c(int req) {
- smpi_init_fortran_types();
- char key[KEY_SIZE];
- if(req==MPI_FORTRAN_REQUEST_NULL)
- return MPI_REQUEST_NULL;
- return static_cast<MPI_Request>(xbt_dict_get(request_lookup, get_key_id(key, req)));
-}
-
-static void free_request(int request) {
- char key[KEY_SIZE];
- if(request!=MPI_FORTRAN_REQUEST_NULL)
- xbt_dict_remove(request_lookup, get_key_id(key, request));
-}
-
-int smpi_type_c2f(MPI_Datatype datatype) {
- static int datatype_id = 0;
- char key[KEY_SIZE];
- xbt_dict_set(datatype_lookup, get_key(key, datatype_id), datatype, nullptr);
- datatype_id++;
- return datatype_id-1;
-}
-
-MPI_Datatype smpi_type_f2c(int datatype) {
- smpi_init_fortran_types();
- char key[KEY_SIZE];
- return datatype >= 0 ? static_cast<MPI_Datatype>(xbt_dict_get_or_null(datatype_lookup, get_key(key, datatype))): MPI_DATATYPE_NULL;
-}
-
-static void free_datatype(int datatype) {
- char key[KEY_SIZE];
- xbt_dict_remove(datatype_lookup, get_key(key, datatype));
-}
-
-int smpi_op_c2f(MPI_Op op) {
- static int op_id = 0;
- char key[KEY_SIZE];
- xbt_dict_set(op_lookup, get_key(key, op_id), op, nullptr);
- op_id++;
- return op_id-1;
-}
-
-MPI_Op smpi_op_f2c(int op) {
- smpi_init_fortran_types();
- char key[KEY_SIZE];
- return op >= 0 ? static_cast<MPI_Op>(xbt_dict_get_or_null(op_lookup, get_key(key, op))): MPI_OP_NULL;
-}
-
-static void free_op(int op) {
- char key[KEY_SIZE];
- xbt_dict_remove(op_lookup, get_key(key, op));
-}
-
-int smpi_win_c2f(MPI_Win win) {
- static int win_id = 0;
- char key[KEY_SIZE];
- xbt_dict_set(win_lookup, get_key(key, win_id), win, nullptr);
- win_id++;
- return win_id-1;
-}
-
-MPI_Win smpi_win_f2c(int win) {
- smpi_init_fortran_types();
- char key[KEY_SIZE];
- return win >= 0 ? static_cast<MPI_Win>(xbt_dict_get_or_null(win_lookup, get_key(key, win))) : MPI_WIN_NULL;
-}
-
-static void free_win(int win) {
- char key[KEY_SIZE];
- xbt_dict_remove(win_lookup, get_key(key, win));
-}
-
-int smpi_info_c2f(MPI_Info info) {
- static int info_id = 0;
- char key[KEY_SIZE];
- xbt_dict_set(info_lookup, get_key(key, info_id), info, nullptr);
- info_id++;
- return info_id-1;
-}
-
-MPI_Info smpi_info_f2c(int info) {
- smpi_init_fortran_types();
- char key[KEY_SIZE];
- return info >= 0 ? static_cast<MPI_Info>(xbt_dict_get_or_null(info_lookup, get_key(key, info))) : MPI_INFO_NULL;
-}
-
-static void free_info(int info) {
- char key[KEY_SIZE];
- xbt_dict_remove(info_lookup, get_key(key, info));
-}