17 #ifndef AWALI_DYN_OPTIONS_OPTION_HH
18 #define AWALI_DYN_OPTIONS_OPTION_HH
20 #include <unordered_map>
60 return (
"any string");
76 std::string option_name;
79 bool default_set_by_user =
false;
83 option_name(other.option_name),
84 acceptor(other.acceptor),
85 default_value(other.default_set_by_user?other.def:def),
86 default_set_by_user(other.was_user_set)
89 template<
typename X,
typename P>
91 throw std::runtime_error(
"Wrong value type for option "+option_name
97 template<
typename X=T,
typename P>
102 template<
typename X=T,
typename P>
105 awali::internal::make_enum<X>(
value),
106 internal::option_value_pair_t(
id, default_value)
108 if (
value ==
"default")
109 return {
id, default_value};
110 return {
id, awali::internal::make_enum<X>(
value)};
114 internal::option_value_pair_t make(
const T&
value, priority::FOUR<P>) {
124 :
id(internal::
next_id++), option_name(name), acceptor(acc),
129 return acceptor(
value);
135 throw std::runtime_error(
"Using option without argument is only possible if they expect boolean values.");
157 return option_t(*
this, new_default_value);
164 default_value = new_default_value;
165 default_set_by_user =
true;
169 return default_value;
const size_t id
Definition: option.hh:73
option_t(std::string name, T def, acceptor_t< T > acc=acceptor_t< T >())
Definition: option.hh:123
value_t get_default_value()
Definition: option.hh:168
T value_t
Definition: option.hh:72
internal::option_value_pair_t operator=(const X &value)
Definition: option.hh:175
value_t of_string(std::string str)
Create of value of the type expected by this option_t, from string str.
Definition: option.hh:183
void set_default_value(value_t new_default_value)
Definition: option.hh:163
bool acceptable(T value)
Definition: option.hh:128
option_t< value_t > with_default_value(value_t new_default_value)
Creates a phony option_t that overrides system default value (but not user defined default,...
Definition: option.hh:156
size_t next_id
Global variable that assign a unique identifier to each instance of option<T> independentely of type ...
static std::string demangle(const char *name)
Definition: demangle.hxx:48
static constexpr TOP< void > value
Definition: priority.hh:93
static constexpr ONE< void > one
Definition: priority.hh:76
Definition: priority.hh:52
pair_automaton< Aut > pair(const Aut &aut, bool keep_initials=false)
Definition: synchronizing_word.hh:266
Main namespace of Awali.
Definition: ato.hh:22
std::string acceptable_values()
Definition: option.hh:49
virtual bool is_valid(bool const &value)
Definition: option.hh:46
virtual std::string acceptable_values()
Definition: option.hh:59
virtual bool is_valid(std::string const &value)
Definition: option.hh:56
virtual std::string acceptable_values()
Definition: option.hh:39
virtual bool is_valid(T const &value)
Definition: option.hh:36