+/** @brief Fire the required callbacks and destroy the object
+ *
+ * Don't delete directly an Host, call h->destroy() instead.
+ *
+ * This is cumbersome but there is the simplest solution to ensure that the
+ * onDestruction() callback receives a valid object (because of the destructor
+ * order in a class hierarchy).
+ */
+void Host::destroy()
+{
+ if (!currentlyDestroying_) {
+ currentlyDestroying_ = true;
+ xbt_dict_remove(host_list, name().c_str());
+ onDestruction(*this);
+ delete this;
+ }
+}
+
+Host* Host::by_name(std::string name)
+{