namespace simgrid {
namespace surf {
-simgrid::xbt::Extension<simgrid::Host, Host> Host::EXTENSION_ID =
- simgrid::Host::extension_create<simgrid::surf::Host>([](void *h) {
- static_cast<simgrid::surf::Host*>(h)->destroy();
- });
+simgrid::xbt::Extension<simgrid::Host, Host> Host::EXTENSION_ID;
/*********
* Model *
simgrid::surf::signal<void(simgrid::surf::Host*)> Host::onDestruction;
simgrid::surf::signal<void(simgrid::surf::Host*)> Host::onStateChange;
+void Host::classInit()
+{
+ if (!EXTENSION_ID.valid()) {
+ EXTENSION_ID = simgrid::Host::extension_create<simgrid::surf::Host>([](void *h) {
+ static_cast<simgrid::surf::Host*>(h)->destroy();
+ });
+ }
+}
+
Host::Host(simgrid::surf::Model *model, const char *name, xbt_dict_t props,
xbt_dynar_t storage, Cpu *cpu)
: Resource(model, name)
static simgrid::surf::signal<void(Host*)> onStateChange; /** Called when the machine is turned on or off */
public:
+ static void classInit(); // must be called before the first use of that class
/**
* @brief Host constructor
*
ROUTING_PROP_ASR_LEVEL = xbt_lib_add_level(as_router_lib,routing_asr_prop_free);
XBT_DEBUG("Add SURF levels");
+ simgrid::surf::Host::classInit();
SURF_STORAGE_LEVEL = xbt_lib_add_level(storage_lib,surf_storage_free);
xbt_init(argc, argv);