From 47989a21244f0e5f704a2e81ed507ed798d2b254 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 5 May 2025 08:45:50 +0200 Subject: [PATCH] Simplify ConfigRegistrations --- src/libutil/config-global.cc | 16 ++++++---------- src/libutil/include/nix/util/config-global.hh | 7 ++++++- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/libutil/config-global.cc b/src/libutil/config-global.cc index 10d176c51..94d715443 100644 --- a/src/libutil/config-global.cc +++ b/src/libutil/config-global.cc @@ -6,7 +6,7 @@ namespace nix { bool GlobalConfig::set(const std::string & name, const std::string & value) { - for (auto & config : *configRegistrations) + for (auto & config : configRegistrations()) if (config->set(name, value)) return true; @@ -17,20 +17,20 @@ bool GlobalConfig::set(const std::string & name, const std::string & value) void GlobalConfig::getSettings(std::map & res, bool overriddenOnly) { - for (auto & config : *configRegistrations) + for (auto & config : configRegistrations()) config->getSettings(res, overriddenOnly); } void GlobalConfig::resetOverridden() { - for (auto & config : *configRegistrations) + for (auto & config : configRegistrations()) config->resetOverridden(); } nlohmann::json GlobalConfig::toJSON() { auto res = nlohmann::json::object(); - for (const auto & config : *configRegistrations) + for (const auto & config : configRegistrations()) res.update(config->toJSON()); return res; } @@ -47,19 +47,15 @@ std::string GlobalConfig::toKeyValue() void GlobalConfig::convertToArgs(Args & args, const std::string & category) { - for (auto & config : *configRegistrations) + for (auto & config : configRegistrations()) config->convertToArgs(args, category); } GlobalConfig globalConfig; -GlobalConfig::ConfigRegistrations * GlobalConfig::configRegistrations; - GlobalConfig::Register::Register(Config * config) { - if (!configRegistrations) - configRegistrations = new ConfigRegistrations; - configRegistrations->emplace_back(config); + configRegistrations().emplace_back(config); } ExperimentalFeatureSettings experimentalFeatureSettings; diff --git a/src/libutil/include/nix/util/config-global.hh b/src/libutil/include/nix/util/config-global.hh index b47ee0ad1..44f89e06d 100644 --- a/src/libutil/include/nix/util/config-global.hh +++ b/src/libutil/include/nix/util/config-global.hh @@ -8,7 +8,12 @@ namespace nix { struct GlobalConfig : public AbstractConfig { typedef std::vector ConfigRegistrations; - static ConfigRegistrations * configRegistrations; + + static ConfigRegistrations & configRegistrations() + { + static ConfigRegistrations configRegistrations; + return configRegistrations; + } bool set(const std::string & name, const std::string & value) override;