Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
use a map for F2C lookup.
[simgrid.git] / src / smpi / mpi / smpi_request.cpp
index 0d846a1..7007143 100644 (file)
@@ -897,28 +897,27 @@ MPI_Request Request::f2c(int id) {
   char key[KEY_SIZE];
   if(id==MPI_FORTRAN_REQUEST_NULL)
     return static_cast<MPI_Request>(MPI_REQUEST_NULL);
-  return static_cast<MPI_Request>(xbt_dict_get(F2C::f2c_lookup(), get_key_id(key, id)));
+  return static_cast<MPI_Request>(F2C::f2c_lookup()->at(get_key_id(key, id)));
 }
 
-int Request::add_f() {
-  if(F2C::f2c_lookup()==nullptr){
-    F2C::set_f2c_lookup(xbt_dict_new_homogeneous(nullptr));
+int Request::add_f()
+{
+  if (F2C::f2c_lookup() == nullptr) {
+    F2C::set_f2c_lookup(new std::unordered_map<std::string, F2C*>);
   }
   char key[KEY_SIZE];
-  xbt_dict_set(F2C::f2c_lookup(), get_key_id(key, F2C::f2c_id()), this, nullptr);
+  (*(F2C::f2c_lookup()))[get_key_id(key, F2C::f2c_id())] = this;
   F2C::f2c_id_increment();
   return F2C::f2c_id()-1;
 }
 
-void Request::free_f(int id) {
+void Request::free_f(int id)
+{
   if (id != MPI_FORTRAN_REQUEST_NULL) {
     char key[KEY_SIZE];
-    xbt_dict_remove(F2C::f2c_lookup(), get_key_id(key, id));
+    F2C::f2c_lookup()->erase(get_key_id(key, id));
   }
 }
 
 }
 }
-
-
-