X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/13667460824c1a4d55d44f96adaee6eeda2394f4..08027d3c5a9bf1d0bef122b2a9a1f0b037fde9b6:/src/smpi/mpi/smpi_f2c.cpp diff --git a/src/smpi/mpi/smpi_f2c.cpp b/src/smpi/mpi/smpi_f2c.cpp index ffd795fdbb..868644c414 100644 --- a/src/smpi/mpi/smpi_f2c.cpp +++ b/src/smpi/mpi/smpi_f2c.cpp @@ -1,14 +1,19 @@ -/* Copyright (c) 2007-2017. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2007-2019. The SimGrid Team. All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ -#include "private.h" #include "smpi_f2c.hpp" -#include "smpi_process.hpp" +#include "private.hpp" +#include "src/smpi/include/smpi_actor.hpp" #include +int mpi_in_place_; +int mpi_bottom_; +int mpi_status_ignore_; +int mpi_statuses_ignore_; + namespace simgrid{ namespace smpi{ @@ -34,12 +39,12 @@ int F2C::f2c_id(){ }; char* F2C::get_key(char* key, int id) { - std::snprintf(key, KEY_SIZE, "%x", static_cast(id)); + std::snprintf(key, KEY_SIZE, "%u", static_cast(id)); return key; } char* F2C::get_key_id(char* key, int id) { - std::snprintf(key, KEY_SIZE, "%x_%d", static_cast(id), smpi_process()->index()); + std::snprintf(key, KEY_SIZE, "%u_%ld", static_cast(id), simgrid::s4u::this_actor::get_pid()); return key; } @@ -75,7 +80,7 @@ int F2C::c2f() f2c_lookup_ = new std::unordered_map; } - for (auto elm : *f2c_lookup_) + for (auto const& elm : *f2c_lookup_) if (elm.second == this) return std::stoi(elm.first); @@ -90,11 +95,8 @@ F2C* F2C::f2c(int id) if(id >= 0){ char key[KEY_SIZE]; - try { - return f2c_lookup_->at(get_key(key, id)); - } catch (std::out_of_range& unfound) { - return nullptr; - } + auto comm = f2c_lookup_->find(get_key(key, id)); + return comm == f2c_lookup_->end() ? nullptr : comm->second; }else return nullptr; }