Skip to content

Commit d33cbba

Browse files
committed
Simplify ConfigRegistrations
1 parent f59ccb4 commit d33cbba

File tree

2 files changed

+11
-11
lines changed

2 files changed

+11
-11
lines changed

src/libutil/config-global.cc

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ namespace nix {
66

77
bool GlobalConfig::set(const std::string & name, const std::string & value)
88
{
9-
for (auto & config : *configRegistrations)
9+
for (auto & config : configRegistrations())
1010
if (config->set(name, value))
1111
return true;
1212

@@ -17,20 +17,20 @@ bool GlobalConfig::set(const std::string & name, const std::string & value)
1717

1818
void GlobalConfig::getSettings(std::map<std::string, SettingInfo> & res, bool overriddenOnly)
1919
{
20-
for (auto & config : *configRegistrations)
20+
for (auto & config : configRegistrations())
2121
config->getSettings(res, overriddenOnly);
2222
}
2323

2424
void GlobalConfig::resetOverridden()
2525
{
26-
for (auto & config : *configRegistrations)
26+
for (auto & config : configRegistrations())
2727
config->resetOverridden();
2828
}
2929

3030
nlohmann::json GlobalConfig::toJSON()
3131
{
3232
auto res = nlohmann::json::object();
33-
for (const auto & config : *configRegistrations)
33+
for (const auto & config : configRegistrations())
3434
res.update(config->toJSON());
3535
return res;
3636
}
@@ -47,19 +47,15 @@ std::string GlobalConfig::toKeyValue()
4747

4848
void GlobalConfig::convertToArgs(Args & args, const std::string & category)
4949
{
50-
for (auto & config : *configRegistrations)
50+
for (auto & config : configRegistrations())
5151
config->convertToArgs(args, category);
5252
}
5353

5454
GlobalConfig globalConfig;
5555

56-
GlobalConfig::ConfigRegistrations * GlobalConfig::configRegistrations;
57-
5856
GlobalConfig::Register::Register(Config * config)
5957
{
60-
if (!configRegistrations)
61-
configRegistrations = new ConfigRegistrations;
62-
configRegistrations->emplace_back(config);
58+
configRegistrations().emplace_back(config);
6359
}
6460

6561
ExperimentalFeatureSettings experimentalFeatureSettings;

src/libutil/include/nix/util/config-global.hh

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,11 @@ namespace nix {
88
struct GlobalConfig : public AbstractConfig
99
{
1010
typedef std::vector<Config *> ConfigRegistrations;
11-
static ConfigRegistrations * configRegistrations;
11+
12+
static ConfigRegistrations & configRegistrations() {
13+
static ConfigRegistrations configRegistrations;
14+
return configRegistrations;
15+
}
1216

1317
bool set(const std::string & name, const std::string & value) override;
1418

0 commit comments

Comments
 (0)