Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[simix] Use std::function in timer and add overloads
[simgrid.git] / include / simgrid / simix.hpp
index cf51596..bb75c8a 100644 (file)
@@ -296,11 +296,10 @@ XBT_PUBLIC(void) create_maestro(std::function<void()> code);
  */
 typedef smx_process_t (*smx_creation_func_t) (
                                       /* name */ const char*,
-                                      /* code */ xbt_main_func_t,
+                                      std::function<void()> code,
                                       /* userdata */ void*,
                                       /* hostname */ const char*,
                                       /* kill_time */ double,
-                                      simgrid::simix::args args,
                                       /* props */ xbt_dict_t,
                                       /* auto_restart */ int,
                                       /* parent_process */ smx_process_t);
@@ -309,12 +308,19 @@ extern "C"
 XBT_PUBLIC(void) SIMIX_function_register_process_create(smx_creation_func_t function);
 
 XBT_PUBLIC(smx_process_t) simcall_process_create(const char *name,
-                                          xbt_main_func_t code,
+                                          std::function<void()> code,
                                           void *data,
                                           const char *hostname,
                                           double kill_time,
-                                          simgrid::simix::args args,
                                           xbt_dict_t properties,
                                           int auto_restart);
 
+XBT_PUBLIC(smx_timer_t) SIMIX_timer_set(double date, std::function<void()> callback);
+
+template<class R, class T> inline
+XBT_PUBLIC(smx_timer_t) SIMIX_timer_set(double date, R(*callback)(T*), T* arg)
+{
+  return SIMIX_timer_set(date, [=](){ callback(arg); });
+}
+
 #endif