- // Currently, smx_host_t = xbt_dictelm_t.
- // TODO, add an static_assert on this if switching to C++
- // The host name is host->key and the host->key_len==strlen(host->key).
- s_xbt_dictelm_t host_copy;
+ /* Horrible hack to find the offset of the id in the simgrid::Host.
+
+ Offsetof is not supported for non-POD types but this should
+ work in pratice for the targets currently supported by the MC
+ as long as we do not add funny features to the Host class
+ (such as virtual base).
+
+ We are using a (C++11) unrestricted union in order to avoid
+ any construction/destruction of the simgrid::Host.
+ */
+ union fake_host {
+ simgrid::Host host;
+ fake_host() {}
+ ~fake_host() {}
+ };
+ fake_host foo;
+ const size_t offset = (char*) &foo.host.getName() - (char*) &foo.host;
+
+ // Read the simgrid::xbt::string in the MCed process: