11 Parameter(
const char *name,
const std::function<
void(
const Parameter&)> &commit);
12 const std::string& name()
const {
return mName; }
16 void set(
const std::string&);
17 void set(
const char *s) { set(std::string(s)); }
20 void setLimits(
double def,
double min,
double max);
21 void setLimits(int64_t def, int64_t min, int64_t max);
22 void addEnum(
const std::string &s) { mEnum.insert(s); }
23 void setVisible(
bool b) { mVisible = b; }
24 bool visible()
const {
return mVisible; }
25 void init(
bool b) { mValue = b; }
26 void init(
const std::string &s) { mValue = s; }
27 void init(
const char *s) { init(std::string(s)); }
28 void setNotifier(
const std::function<
void()> ¬ify) { mNotify = notify; }
29 double min()
const {
return mLimitMin; }
30 double max()
const {
return mLimitMax; }
33 const std::string& s()
const;
34 const std::set<std::string>& getEnum()
const {
return mEnum; }
38 std::string as_s()
const;
40 template<
typename T>
bool is_a()
const {
return std::holds_alternative<T>(mValue); }
42 const std::string mName;
43 std::variant<double, int64_t, std::string, bool> mValue;
44 std::set<std::string> mEnum;
45 double mLimitMin{-std::numeric_limits<double>::infinity()};
46 double mLimitMax{+std::numeric_limits<double>::infinity()};
47 const std::function<void(
const Parameter&)> mCommit;
49 std::function<void()> mNotify;