Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
snake_case xbt/functional.hpp
[simgrid.git] / include / simgrid / s4u / Actor.hpp
index 5ed3195..e1bcbac 100644 (file)
@@ -7,7 +7,9 @@
 #define SIMGRID_S4U_ACTOR_HPP
 
 #include <functional>
+#include <map> // deprecated wrappers
 #include <simgrid/chrono.hpp>
+#include <unordered_map>
 #include <xbt/Extendable.hpp>
 #include <xbt/functional.hpp>
 #include <xbt/signal.hpp>
@@ -130,8 +132,7 @@ class XBT_PUBLIC Actor : public simgrid::xbt::Extendable<Actor> {
   static std::function<void()> wrap_task(F f, Args... args)
   {
     typedef decltype(f(std::move(args)...)) R;
-    auto task = std::make_shared<simgrid::xbt::Task<R()>>(
-      simgrid::xbt::makeTask(std::move(f), std::move(args)...));
+    auto task = std::make_shared<simgrid::xbt::Task<R()>>(simgrid::xbt::make_task(std::move(f), std::move(args)...));
     return [task] { (*task)(); };
   }
 
@@ -237,7 +238,6 @@ public:
   /** Add a function to the list of "on_exit" functions for the current actor. The on_exit functions are the functions
    * executed when your actor is killed. You should use them to free the data used by your actor.
    */
-  void on_exit(int_f_pvoid_pvoid_t fun, void* data);
   void on_exit(std::function<void(int, void*)> fun, void* data);
 
   /** Sets the time at which that actor should be killed */
@@ -277,7 +277,8 @@ public:
   kernel::actor::ActorImpl* get_impl();
 
   /** Retrieve the property value (or nullptr if not set) */
-  std::map<std::string, std::string>* get_properties(); // FIXME: do not export the map, but only the keys or something
+  std::unordered_map<std::string, std::string>*
+  get_properties(); // FIXME: do not export the map, but only the keys or something
   const char* get_property(const char* key);
   void set_property(const char* key, const char* value);
 
@@ -317,9 +318,11 @@ public:
   {
     set_auto_restart(a);
   }
+  XBT_ATTRIB_DEPRECATED_v323("Please use a std::function<void(int, void*)> for first parameter.") void on_exit(
+      int_f_pvoid_pvoid_t fun, void* data);
   XBT_ATTRIB_DEPRECATED_v323("Please use Actor::on_exit()") void onExit(int_f_pvoid_pvoid_t fun, void* data)
   {
-    on_exit(fun, data);
+    on_exit([fun](int a, void* b) { fun((void*)(intptr_t)a, b); }, data);
   }
   XBT_ATTRIB_DEPRECATED_v323("Please use Actor::set_kill_time()") void setKillTime(double time) { set_kill_time(time); }
   XBT_ATTRIB_DEPRECATED_v323("Please use Actor::get_kill_time()") double getKillTime() { return get_kill_time(); }
@@ -336,7 +339,11 @@ public:
   }
   XBT_ATTRIB_DEPRECATED_v323("Please use Actor::get_properties()") std::map<std::string, std::string>* getProperties()
   {
-    return get_properties();
+    std::map<std::string, std::string>* res             = new std::map<std::string, std::string>();
+    std::unordered_map<std::string, std::string>* props = get_properties();
+    for (auto const& kv : *props)
+      res->insert(kv);
+    return res;
   }
   XBT_ATTRIB_DEPRECATED_v323("Please use Actor::get_properties()") void setProperty(const char* key, const char* value)
   {
@@ -409,7 +416,8 @@ XBT_PUBLIC bool is_suspended();
 XBT_PUBLIC void kill();
 
 /** @brief Add a function to the list of "on_exit" functions. */
-XBT_PUBLIC void on_exit(int_f_pvoid_pvoid_t fun, void* data);
+XBT_ATTRIB_DEPRECATED_v323("Please use std::function<void(int, void*)> for first parameter.") XBT_PUBLIC
+    void on_exit(int_f_pvoid_pvoid_t fun, void* data);
 XBT_PUBLIC void on_exit(std::function<void(int, void*)> fun, void* data);
 
 /** @brief Migrate the actor to a new host. */