Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Remove xbt::args: use vector<string> instead
[simgrid.git] / include / simgrid / simix.hpp
index 99d2410..d08f865 100644 (file)
 #include <utility>
 #include <memory>
 #include <functional>
-#include <future>
 
 #include <xbt/function_types.h>
 #include <xbt/future.hpp>
+#include <xbt/functional.hpp>
 
 #include <simgrid/simix.h>
 
@@ -171,6 +171,14 @@ public:
 XBT_PUBLIC(void) set_maestro(std::function<void()> code);
 XBT_PUBLIC(void) create_maestro(std::function<void()> code);
 
+// What's executed as SIMIX actor code:
+typedef std::function<void()> ActorCode;
+
+// Create ActorCode based on argv:
+typedef std::function<ActorCode(std::vector<std::string> args)> ActorCodeFactory;
+
+XBT_PUBLIC(void) registerFunction(const char* name, ActorCodeFactory factory);
+
 }
 }
 
@@ -206,12 +214,12 @@ XBT_PUBLIC(smx_process_t) simcall_process_create(const char *name,
                                           xbt_dict_t properties,
                                           int auto_restart);
 
-XBT_PUBLIC(smx_timer_t) SIMIX_timer_set(double date, std::packaged_task<void()> callback);
+XBT_PUBLIC(smx_timer_t) SIMIX_timer_set(double date, simgrid::xbt::Task<void()> callback);
 
 template<class F> inline
 XBT_PUBLIC(smx_timer_t) SIMIX_timer_set(double date, F callback)
 {
-  return SIMIX_timer_set(date, std::packaged_task<void()>(std::move(callback)));
+  return SIMIX_timer_set(date, simgrid::xbt::Task<void()>(std::move(callback)));
 }
 
 template<class R, class T> inline