- value->copy_fn=copy_fn;
- value->delete_fn=delete_fn;
-
- *keyval = comm_keyval_id;
- xbt_dict_set_ext(smpi_comm_keyvals, reinterpret_cast<const char*>(keyval), sizeof(int),static_cast<void*>(value), nullptr);
- comm_keyval_id++;
- return MPI_SUCCESS;
-}
-
-int smpi_comm_keyval_free(int* keyval){
- smpi_comm_key_elem elem =
- static_cast<smpi_comm_key_elem>(xbt_dict_get_or_null_ext(smpi_comm_keyvals, reinterpret_cast<const char*>(keyval), sizeof(int)));
- if(elem==nullptr)
- return MPI_ERR_ARG;
- xbt_dict_remove_ext(smpi_comm_keyvals, reinterpret_cast<const char*>(keyval), sizeof(int));
- xbt_free(elem);
- return MPI_SUCCESS;
-}