From: Arnaud Giersch Date: Fri, 1 Jun 2018 12:23:16 +0000 (+0200) Subject: Use std::function for s_smx_process_exit_fun_t. X-Git-Tag: v3.20~178 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/f30321807060fb9aad329f66fe89d5d3425bc995 Use std::function for s_smx_process_exit_fun_t. --- diff --git a/src/simix/ActorImpl.cpp b/src/simix/ActorImpl.cpp index 96aac00178..736e4264bd 100644 --- a/src/simix/ActorImpl.cpp +++ b/src/simix/ActorImpl.cpp @@ -758,14 +758,14 @@ void SIMIX_process_on_exit_runall(smx_actor_t process) { while (not process->on_exit.empty()) { s_smx_process_exit_fun_t exit_fun = process->on_exit.back(); process->on_exit.pop_back(); - (exit_fun.fun)((void*)exit_status, exit_fun.arg); + (exit_fun.fun)(exit_status, exit_fun.arg); } } void SIMIX_process_on_exit(smx_actor_t process, int_f_pvoid_pvoid_t fun, void *data) { xbt_assert(process, "current process not found: are you in maestro context ?"); - s_smx_process_exit_fun_t exit_fun = {fun, data}; + s_smx_process_exit_fun_t exit_fun = {[fun](int a, void* b) { fun((void*)(intptr_t)a, b); }, data}; process->on_exit.push_back(exit_fun); } diff --git a/src/simix/ActorImpl.hpp b/src/simix/ActorImpl.hpp index 15bfeb04cb..af2a7f3868 100644 --- a/src/simix/ActorImpl.hpp +++ b/src/simix/ActorImpl.hpp @@ -10,11 +10,12 @@ #include "src/simix/popping_private.hpp" #include "src/surf/PropertyHolder.hpp" #include +#include #include #include struct s_smx_process_exit_fun_t { - int_f_pvoid_pvoid_t fun; + std::function fun; void *arg; };