Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
do standard C++
[simgrid.git] / src / simgrid / host.cpp
index f3954fc..fdceaac 100644 (file)
 
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(sg_host, sd, "Logging specific to sg_hosts");
 
+extern xbt_dict_t host_list; // FIXME:killme don't dupplicate the content of s4u::Host this way
+
+void sg_host_exit()
+{
+  xbt_dict_cursor_t cursor = nullptr;
+  const char* name         = nullptr;
+  simgrid::s4u::Host* host = nullptr;
+  xbt_dict_foreach(host_list, cursor, name, host) host->destroy();
+  xbt_dict_free(&host_list);
+}
+
 size_t sg_host_count()
 {
   return xbt_dict_length(host_list);
@@ -28,7 +39,7 @@ size_t sg_host_count()
  * internally).
  * \see sg_host_count()
  */
-sg_host_t *sg_host_list(void) {
+sg_host_t *sg_host_list() {
   xbt_assert(sg_host_count() > 0, "There is no host!");
   return (sg_host_t*)xbt_dynar_to_array(sg_hosts_as_dynar());
 }
@@ -53,12 +64,7 @@ sg_host_t sg_host_by_name(const char *name)
   return simgrid::s4u::Host::by_name_or_null(name);
 }
 
-sg_host_t sg_host_by_name_or_create(const char *name)
-{
-  return simgrid::s4u::Host::by_name_or_create(name);
-}
-
-xbt_dynar_t sg_hosts_as_dynar(void)
+xbt_dynar_t sg_hosts_as_dynar()
 {
   xbt_dynar_t res = xbt_dynar_new(sizeof(sg_host_t),nullptr);
 
@@ -96,14 +102,9 @@ void sg_host_msg_set(sg_host_t host, msg_host_priv_t smx_host) {
 }
 
 // ========== Simix layer =============
+#include "src/simix/smx_host_private.h"
 smx_host_priv_t sg_host_simix(sg_host_t host){
-  return (smx_host_priv_t) host->extension(SIMIX_HOST_LEVEL);
-}
-void sg_host_simix_set(sg_host_t host, smx_host_priv_t smx_host) {
-  host->extension_set(SIMIX_HOST_LEVEL, smx_host);
-}
-void sg_host_simix_destroy(sg_host_t host) {
-  host->extension_set(SIMIX_HOST_LEVEL, nullptr);
+  return host->extension<simgrid::simix::Host>();
 }
 
 // ========= storage related functions ============