-Host *Host::byName(std::string name) {
- Host* host = Host::by_name_or_null(name.c_str());
- // TODO, raise an exception instead?
- if (host == nullptr)
- xbt_die("No such host: %s", name.c_str());
- return host;
+Host *Host::by_name(std::string name) {
+ Host* host = Host::by_name_or_null(name.c_str());
+ // TODO, raise an exception instead?
+ if (host == nullptr)
+ xbt_die("No such host: %s", name.c_str());
+ return host;
+}
+Host* Host::by_name_or_null(const char* name)
+{
+ return (Host*) xbt_dict_get_or_null(host_list, name);
+}
+Host* Host::by_name_or_create(const char* name)
+{
+ Host* host = by_name_or_null(name);
+ if (host == nullptr) {
+ host = new Host(name);
+ xbt_dict_set(host_list, name, host, NULL);
+ }
+ return host;