+/** @brief use destroy() instead of this destructor */
+Host::~Host()
+{
+ xbt_assert(currentlyDestroying_, "Don't delete Hosts directly. Call destroy() instead.");
+ delete p_cpu;
+ // FIXME: VM plays strange games, leading to segfaults if I do the expected thing of next line
+ // delete p_netElm;
+ delete p_storage;
+}
+/** @brief Fire the require callbacks and destroy the object
+ *
+ * Don't delete directly an Host, call h->destroy() instead.
+ */
+void Host::destroy()
+{
+ if (!currentlyDestroying_) {
+ currentlyDestroying_ = true;
+ onDestruction(this);
+ delete this;
+ }
+}
+
+void Host::attach(simgrid::Host* host)
+{
+ if (p_host != nullptr)
+ xbt_die("Already attached to host %s", host->getName().c_str());
+ host->extension_set(this);
+ p_host = host;
+ onCreation(this);