+size_t sg_host_count()
+{
+ return xbt_dict_length(host_list);
+}
+
+void* sg_host_get_facet(sg_host_t host, size_t facet)
+{
+ return host->facet(facet);
+}
+
+const char *sg_host_get_name(sg_host_t host)
+{
+ return host->id().c_str();
+}
+
+size_t sg_host_add_level(void(*deleter)(void*))
+{
+ return simgrid::Host::add_level(deleter);
+}
+
+sg_host_t sg_host_by_name(const char *name)
+{
+ return simgrid::Host::find_host(name);
+}
+
+sg_host_t sg_host_by_name_or_create(const char *name)
+{
+ return simgrid::Host::get_host(name);
+}
+
+xbt_dynar_t sg_hosts_as_dynar(void)
+{
+ xbt_dynar_t res = xbt_dynar_new(sizeof(sg_host_t),NULL);
+
+ xbt_dict_cursor_t cursor = nullptr;
+ const char* name = nullptr;
+ simgrid::Host* host = nullptr;
+ xbt_dict_foreach(host_list, cursor, name, host)
+ if(routing_get_network_element_type(name) == SURF_NETWORK_ELEMENT_HOST)
+ xbt_dynar_push(res, &host);
+ return res;