Don't include nlohmann/json.hpp in config.hh

Instead make a separate header with the template implementation of
`BaseSetting<T>::toJSONObj` that can be included where needed
This commit is contained in:
regnat 2020-09-16 09:06:35 +02:00
parent 93c0e14a30
commit e0817cbcdc
4 changed files with 19 additions and 8 deletions

View file

@ -2,6 +2,7 @@
#include "types.hh"
#include "config.hh"
#include "abstractsettingtojson.hh"
#include "util.hh"
#include <map>

View file

@ -0,0 +1,15 @@
#pragma once
#include <nlohmann/json.hpp>
#include "config.hh"
namespace nix {
template<typename T>
std::map<std::string, nlohmann::json> BaseSetting<T>::toJSONObject()
{
auto obj = AbstractSetting::toJSONObject();
obj.emplace("value", value);
obj.emplace("defaultValue", defaultValue);
return obj;
}
}

View file

@ -1,5 +1,6 @@
#include "config.hh"
#include "args.hh"
#include "abstractsettingtojson.hh"
#include <nlohmann/json.hpp>

View file

@ -4,7 +4,7 @@
#include "types.hh"
#include <nlohmann/json.hpp>
#include <nlohmann/json_fwd.hpp>
#pragma once
@ -255,13 +255,7 @@ public:
void convertToArg(Args & args, const std::string & category) override;
std::map<std::string, nlohmann::json> toJSONObject() override
{
auto obj = AbstractSetting::toJSONObject();
obj.emplace("value", value);
obj.emplace("defaultValue", defaultValue);
return obj;
}
std::map<std::string, nlohmann::json> toJSONObject() override;
};
template<typename T>