1#ifndef JSONPARAMMAPPINGADAPTER_H
2#define JSONPARAMMAPPINGADAPTER_H
47 : parser_(
std::move(parser)) {}
58 std::unordered_map<std::string, InterpretedParam>
59 loadFromFile(
const std::string& filePath)
const override;
77 if (
auto s = std::get_if<BlockName>(&v))
return *s;
78 if (
auto i = std::get_if<int>(&v))
return std::to_string(*i);
79 if (
auto d = std::get_if<double>(&v))
return std::to_string(*d);
80 if (
auto b = std::get_if<bool>(&v))
return *b ?
"true" :
"false";
81 throw std::runtime_error(
"JSON mapping: non-scalar value cannot be converted to a string");
86 std::shared_ptr<IParser> parser_;
Hierarchical key–value tree with JSON/YAML serialization.
Interface for loading parameter mappings from an external source.
std::variant< BlockName, int, double, bool, std::shared_ptr< DBNode >, std::vector< std::shared_ptr< DBNode > > > Value
Variant type used to store values in the tree.
Abstract source of InterpretedParam mappings.
IParamMappingSource implementation backed by a JSON-like file.
std::unordered_map< std::string, InterpretedParam > loadFromFile(const std::string &filePath) const override
Loads parameter mappings from a file.
JsonParamMappingAdapter(std::shared_ptr< IParser > parser)
Constructs the adapter with a given parser instance.
Hash specialization for SymbolId<Tag>.