d2ce2e89b1
Rather than doing `allowEmpty` as boolean, have separate types and use `std::optional`. This makes it harder to forget the possibility of an empty path. The `build-hook` setting was categorized as a `PathSetting`, but actually it was split into arguments. No good! Now, it is `Setting<Strings>` which actually reflects what it means and how it is used. Because of the subtyping, we now also have support for `Setting<std::optional<String>>` in general. I imagine this can be used to clean up many more settings also.
18 lines
408 B
C++
18 lines
408 B
C++
#pragma once
|
|
///@file
|
|
|
|
#include <nlohmann/json.hpp>
|
|
#include "config.hh"
|
|
#include "json-utils.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);
|
|
obj.emplace("documentDefault", documentDefault);
|
|
return obj;
|
|
}
|
|
}
|