From: Christian Heinrich Date: Mon, 26 Mar 2018 16:47:43 +0000 (+0200) Subject: [SMPI] Replay: Use std::function for i/send, i/recv actions X-Git-Tag: v3.20~600^2~26 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/0271cc5c273aa50a4a77d21356c661ad59c4a43d [SMPI] Replay: Use std::function for i/send, i/recv actions --- diff --git a/src/smpi/internals/smpi_replay.cpp b/src/smpi/internals/smpi_replay.cpp index e8630b994a..d92a178f63 100644 --- a/src/smpi/internals/smpi_replay.cpp +++ b/src/smpi/internals/smpi_replay.cpp @@ -266,26 +266,6 @@ static void action_compute(simgrid::xbt::ReplayAction& action) log_timed_action (action, clock); } -static void action_send(simgrid::xbt::ReplayAction& action) -{ - Replay::SendAction("send").execute(action); -} - -static void action_Isend(simgrid::xbt::ReplayAction& action) -{ - Replay::SendAction("Isend").execute(action); -} - -static void action_recv(simgrid::xbt::ReplayAction& action) -{ - Replay::RecvAction("recv").execute(action); -} - -static void action_Irecv(simgrid::xbt::ReplayAction& action) -{ - Replay::RecvAction("Irecv").execute(action); -} - static void action_test(simgrid::xbt::ReplayAction& action) { CHECK_ACTION_PARAMS(action, 0, 0) @@ -822,12 +802,22 @@ void smpi_replay_init(int* argc, char*** argv) xbt_replay_action_register("comm_size", simgrid::smpi::action_comm_size); xbt_replay_action_register("comm_split", simgrid::smpi::action_comm_split); xbt_replay_action_register("comm_dup", simgrid::smpi::action_comm_dup); - xbt_replay_action_register("send", simgrid::smpi::action_send); - xbt_replay_action_register("Isend", simgrid::smpi::action_Isend); - xbt_replay_action_register("recv", simgrid::smpi::action_recv); - xbt_replay_action_register("Irecv", simgrid::smpi::action_Irecv); - xbt_replay_action_register("test", simgrid::smpi::action_test); + + std::shared_ptr isend(new simgrid::smpi::Replay::SendAction("Isend")); + std::shared_ptr send(new simgrid::smpi::Replay::SendAction("send")); + std::shared_ptr irecv(new simgrid::smpi::Replay::RecvAction("Irecv")); + std::shared_ptr recv(new simgrid::smpi::Replay::RecvAction("recv")); std::shared_ptr wait(new simgrid::smpi::Replay::WaitAction()); + + xbt_replay_action_register("send", + std::bind(&simgrid::smpi::Replay::SendAction::execute, send, std::placeholders::_1)); + xbt_replay_action_register("Isend", + std::bind(&simgrid::smpi::Replay::SendAction::execute, isend, std::placeholders::_1)); + xbt_replay_action_register("recv", + std::bind(&simgrid::smpi::Replay::RecvAction::execute, recv, std::placeholders::_1)); + xbt_replay_action_register("Irecv", + std::bind(&simgrid::smpi::Replay::RecvAction::execute, irecv, std::placeholders::_1)); + xbt_replay_action_register("test", simgrid::smpi::action_test); xbt_replay_action_register("wait", std::bind(&simgrid::smpi::Replay::WaitAction::execute, wait, std::placeholders::_1)); xbt_replay_action_register("waitAll", simgrid::smpi::action_waitall);