Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
use unordered_maps to store properties
[simgrid.git] / src / s4u / s4u_Actor.cpp
index 18339ed..105cd93 100644 (file)
@@ -74,7 +74,12 @@ void Actor::set_auto_restart(bool autorestart)
   simgrid::simix::simcall([this, autorestart]() { pimpl_->auto_restart = autorestart; });
 }
 
-void Actor::on_exit(int_f_pvoid_pvoid_t fun, void* data)
+void Actor::on_exit(int_f_pvoid_pvoid_t fun, void* data) /* deprecated */
+{
+  simgrid::simix::simcall([this, fun, data] { SIMIX_process_on_exit(pimpl_, fun, data); });
+}
+
+void Actor::on_exit(std::function<void(int, void*)> fun, void* data)
 {
   simgrid::simix::simcall([this, fun, data] { SIMIX_process_on_exit(pimpl_, fun, data); });
 }
@@ -212,20 +217,20 @@ void Actor::kill_all()
   simgrid::simix::simcall([&self] { SIMIX_process_killall(self); });
 }
 
-std::map<std::string, std::string>* Actor::get_properties()
+std::unordered_map<std::string, std::string>* Actor::get_properties()
 {
-  return simgrid::simix::simcall([this] { return this->pimpl_->getProperties(); });
+  return simgrid::simix::simcall([this] { return this->pimpl_->get_properties(); });
 }
 
 /** Retrieve the property value (or nullptr if not set) */
 const char* Actor::get_property(const char* key)
 {
-  return simgrid::simix::simcall([this, key] { return pimpl_->getProperty(key); });
+  return simgrid::simix::simcall([this, key] { return pimpl_->get_property(key); });
 }
 
 void Actor::set_property(const char* key, const char* value)
 {
-  simgrid::simix::simcall([this, key, value] { pimpl_->setProperty(key, value); });
+  simgrid::simix::simcall([this, key, value] { pimpl_->set_property(key, value); });
 }
 
 Actor* Actor::restart()
@@ -366,7 +371,7 @@ void kill()
   simgrid::simix::simcall([process] { SIMIX_process_kill(process, process); });
 }
 
-void on_exit(int_f_pvoid_pvoid_t fun, void* data)
+void on_exit(std::function<void(int, void*)> fun, void* data)
 {
   SIMIX_process_self()->iface()->on_exit(fun, data);
 }
@@ -408,9 +413,13 @@ bool isSuspended() /* deprecated */
 {
   return is_suspended();
 }
-void onExit /* deprecated */ (int_f_pvoid_pvoid_t fun, void* data)
+void on_exit(int_f_pvoid_pvoid_t fun, void* data) /* deprecated */
+{
+  SIMIX_process_self()->iface()->on_exit([fun](int a, void* b) { fun((void*)(intptr_t)a, b); }, data);
+}
+void onExit(int_f_pvoid_pvoid_t fun, void* data) /* deprecated */
 {
-  on_exit(fun, data);
+  on_exit([fun](int a, void* b) { fun((void*)(intptr_t)a, b); }, data);
 }
 
 } // namespace this_actor
@@ -491,11 +500,11 @@ xbt_dict_t sg_actor_get_properties(sg_actor_t actor)
 {
   xbt_assert(actor != nullptr, "Invalid parameter: First argument must not be nullptr");
   xbt_dict_t as_dict                        = xbt_dict_new_homogeneous(xbt_free_f);
-  std::map<std::string, std::string>* props = actor->get_properties();
+  std::unordered_map<std::string, std::string>* props = actor->get_properties();
   if (props == nullptr)
     return nullptr;
-  for (auto const& elm : *props) {
-    xbt_dict_set(as_dict, elm.first.c_str(), xbt_strdup(elm.second.c_str()), nullptr);
+  for (auto const& kv : *props) {
+    xbt_dict_set(as_dict, kv.first.c_str(), xbt_strdup(kv.second.c_str()), nullptr);
   }
   return as_dict;
 }