1 /* Copyright (c) 2007-2020. The SimGrid Team.
2 * All rights reserved. */
4 /* This program is free software; you can redistribute it and/or modify it
5 * under the terms of the license (GNU LGPL) which comes with this package. */
7 //#include "private.hpp"
8 #include "smpi_keyvals.hpp"
13 std::unordered_map<int, void*>* Keyval::attributes(){
18 int Keyval::call_deleter<Comm>(Comm* obj, const s_smpi_key_elem_t* elem, int keyval, void* value, int* /*flag*/)
20 int ret = MPI_SUCCESS;
21 if(elem->delete_fn.comm_delete_fn!=MPI_NULL_DELETE_FN)
22 ret = elem->delete_fn.comm_delete_fn(obj, keyval, value, elem->extra_state);
23 else if(elem->delete_fn.comm_delete_fn_fort!=MPI_NULL_DELETE_FN)
24 elem->delete_fn.comm_delete_fn_fort(obj, keyval, value, elem->extra_state, &ret);
29 int Keyval::call_deleter<Win>(Win* obj, const s_smpi_key_elem_t* elem, int keyval, void* value, int* /*flag*/)
31 int ret = MPI_SUCCESS;
32 if(elem->delete_fn.win_delete_fn!=MPI_NULL_DELETE_FN)
33 ret = elem->delete_fn.win_delete_fn(obj, keyval, value, elem->extra_state);
34 else if(elem->delete_fn.win_delete_fn_fort!=MPI_NULL_DELETE_FN)
35 elem->delete_fn.win_delete_fn_fort(obj, keyval, value, elem->extra_state, &ret);
40 int Keyval::call_deleter<Datatype>(Datatype* obj, const s_smpi_key_elem_t* elem, int keyval, void* value, int* /*flag*/)
42 int ret = MPI_SUCCESS;
43 if(elem->delete_fn.type_delete_fn!=MPI_NULL_DELETE_FN)
44 ret = elem->delete_fn.type_delete_fn(obj, keyval, value, elem->extra_state);
45 else if(elem->delete_fn.type_delete_fn_fort!=MPI_NULL_DELETE_FN)
46 elem->delete_fn.type_delete_fn_fort(obj, keyval, value, elem->extra_state, &ret);