10#ifndef IPPL_PARAMETER_LIST_H
11#define IPPL_PARAMETER_LIST_H
33 std::variant<double, float, bool, std::string, unsigned int, int, ParameterList>;
44 void add(
const std::string& key,
const T& value) {
47 "Parameter '" + key +
"' already exists.");
59 T get(
const std::string& key)
const {
62 "Parameter '" + key +
"' not contained.");
75 T get(
const std::string& key,
const T& defval)
const {
87 for (
const auto& [key, value] : p.params_m) {
98 for (
const auto& [key, value] : p.params_m) {
110 template <
typename T>
111 void update(
const std::string& key,
const T& value) {
114 "Parameter '" + key +
"' does not exist.");
119 template <
class Stream>
121 std::cout <<
"HI" << std::endl;
122 for (
const auto& [key, value] : sp.
params_m) {
123 const auto& keyLocal = key;
126 stream << std::make_pair(keyLocal, arg);
138 static int indent = -4;
144 for (
const auto& [key, value] : sp.
params_m) {
145 const auto& keyLocal = key;
150 os << std::string(indent,
' ') << std::left << std::setw(20) << keyLocal
156 if (key != std::prev(sp.
params_m.end())->first) {
165 if (
this != &other) {
KOKKOS_INLINE_FUNCTION auto & get(::ippl::Tuple< Ts... > &t)
void update(const std::string &key, const T &value)
std::variant< double, float, bool, std::string, unsigned int, int, ParameterList > variant_t
friend Stream & operator<<(Stream &stream, const ParameterList &sp)
T get(const std::string &key) const
ParameterList(const ParameterList &)=default
T get(const std::string &key, const T &defval) const
void merge(const ParameterList &p) noexcept
std::map< std::string, variant_t > params_m
void add(const std::string &key, const T &value)
ParameterList & operator=(const ParameterList &other)
friend std::ostream & operator<<(std::ostream &os, const ParameterList &sp)
void update(const ParameterList &p) noexcept