#include <alpaqa/params/params.hpp>
#include <alpaqa/config/config.hpp>
#include <alpaqa/util/demangled-typename.hpp>
#include <charconv>
#include <chrono>
#include <concepts>
#include <map>
#include <numeric>
#include <stdexcept>
#include <string_view>
#include <system_error>
#include <tuple>
#include <type_traits>
Go to the source code of this file.
Classes | |
struct | param_setter_fun_t< T > |
Function wrapper to set attributes of a struct, type-erasing the type of the attribute. More... | |
struct | dict_to_struct_table< T > |
Specialize this type to define the attribute name to attribute setters dictionaries for a struct type T . More... | |
Namespaces | |
namespace | alpaqa |
namespace | alpaqa::params |
Macros | |
#define | PARAMS_TABLE(type_, ...) |
Helper macro to easily specialize alpaqa::params::dict_to_struct_table. | |
#define | PARAMS_MEMBER(name) { #name, &type::name } |
Helper macro to easily initialize a alpaqa::params::dict_to_struct_table_t. | |
Typedefs | |
using | config_t = DefaultConfig |
template<class T > | |
using | dict_to_struct_table_t = std::map< std::string_view, param_setter_fun_t< T > > |
Dictionary that maps struct attribute names to type-erased functions that set those attributes. | |
Functions | |
template<class T > | |
void | assert_key_empty (ParamString s) |
Throw a meaningful error when s.key is not empty, to indicate that the given type T is not of struct type and cannot be indexed into. | |
template<class T > | |
void | unsupported_type (T &, ParamString s) |
Throw a meaningful error to indicate that parameters of type T are not supported or implemented. | |
template<> | |
void | set_param (bool &b, ParamString s) |
template<> | |
void | set_param (std::string_view &v, ParamString s) |
template<> | |
void | set_param (std::string &v, ParamString s) |
template<class T > requires ((std::floating_point<T> || std::integral<T>) && !std::is_enum_v<T>) | |
void | set_param (T &f, ParamString s) |
Update/overwrite the first argument based on the option in s . | |
template<> | |
void | set_param (vec< config_t > &v, ParamString s) |
template<> | |
void | set_param (vec_from_file< config_t > &v, ParamString s) |
template<class Rep , class Period > | |
void | set_param (std::chrono::duration< Rep, Period > &t, ParamString s) |
template<class T , class T_actual , class A > | |
auto | param_setter (A T_actual::*attr) |
Return a function that applies set_param to the given attribute of a value of type T . | |
template<class T > | |
auto | possible_keys () |
Return a string enumerating the possible attribute names for the struct type T . | |
template<class T > requires requires { dict_to_struct_table<T>::table; } | |
void | set_param (T &t, ParamString s) |
Use s to index into the struct type T and overwrite the attribute given by s.key . | |
struct alpaqa::params::dict_to_struct_table |
#define PARAMS_TABLE | ( | type_, | |
... | |||
) |
Helper macro to easily specialize alpaqa::params::dict_to_struct_table.
Definition at line 128 of file params.tpp.
#define PARAMS_MEMBER | ( | name | ) | { #name, &type::name } |
Helper macro to easily initialize a alpaqa::params::dict_to_struct_table_t.
Definition at line 137 of file params.tpp.