-/** @brief Change the value of a given key in the property set */
-void PropertyHolder::setProperty(const char*key, const char*value) {
- if (!p_properties)
- p_properties = xbt_dict_new();
- xbt_dict_set(p_properties, key, xbt_strdup(value), &xbt_free_f);
+/** @brief Change the value of the given keys in the property set */
+template <class Assoc> void PropertyHolder::set_properties(const Assoc& properties)
+{
+ if (not properties_)
+ properties_.reset(new std::unordered_map<std::string, std::string>);
+ std::unordered_map<std::string, std::string> props(properties.cbegin(), properties.cend());
+#if __cplusplus >= 201703L
+ props.merge(properties_);
+#else
+ props.insert(properties_->cbegin(), properties_->cend());
+#endif
+ properties_->swap(props);