Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge branch 'master' of git+ssh://scm.gforge.inria.fr//gitroot/simgrid/simgrid
[simgrid.git] / src / smpi / smpi_keyvals.cpp
1 /* Copyright (c) 2007-2017. The SimGrid Team.
2  * All rights reserved.                                                     */
3
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. */
6
7 //#include "private.h"
8 #include "src/smpi/smpi_keyvals.hpp"
9
10 namespace simgrid{
11 namespace smpi{
12
13 std::unordered_map<int, void*>* Keyval::attributes(){
14   return &attributes_;
15 };
16
17
18 template <> int Keyval::call_deleter<Comm>(Comm* obj, smpi_key_elem elem, int keyval, void * value, int* flag){
19   if(elem->delete_fn.comm_delete_fn!=MPI_NULL_DELETE_FN){
20     int ret = elem->delete_fn.comm_delete_fn(obj, keyval, value, flag);
21     if(ret!=MPI_SUCCESS)
22       return ret;
23   }
24   return MPI_SUCCESS;
25 }
26
27 template <> int Keyval::call_deleter<Win>(Win* obj, smpi_key_elem elem, int keyval, void * value, int* flag){
28   if(elem->delete_fn.win_delete_fn!=MPI_NULL_DELETE_FN){
29     int ret = elem->delete_fn.win_delete_fn(obj, keyval, value, flag);
30     if(ret!=MPI_SUCCESS)
31       return ret;
32   }
33   return MPI_SUCCESS;
34 }
35
36 template <> int Keyval::call_deleter<Datatype>(Datatype* obj, smpi_key_elem elem, int keyval, void * value, int* flag){
37   if(elem->delete_fn.type_delete_fn!=MPI_NULL_DELETE_FN){
38     int ret = elem->delete_fn.type_delete_fn(obj, keyval, value, flag);
39     if(ret!=MPI_SUCCESS)
40       return ret;
41   }
42   return MPI_SUCCESS;
43 }
44
45 }
46 }