11#ifndef O2_FRAMEWORK_CONFIGURABLE_H_
12#define O2_FRAMEWORK_CONFIGURABLE_H_
24template <
typename T, ConfigParamKind K>
37template <
typename T, ConfigParamKind K>
53template <
typename T, ConfigParamKind K>
71template <
typename T, ConfigParamKind K = ConfigParamKind::kGeneric,
typename IP = ConfigurablePolicyConst<T, K>>
83template <
typename T, ConfigParamKind K = ConfigParamKind::kGeneric>
89 requires std::same_as<std::string,
decltype(t.name)>;
90 &T::operator
typename T::type;
102template <
typename R,
typename T,
typename... As>
116#define PROCESS_SWITCH(_Class_, _Name_, _Help_, _Default_) \
117 decltype(ProcessConfigurable{&_Class_ ::_Name_, #_Name_, _Default_, _Help_}) do##_Name_ = ProcessConfigurable{&_Class_ ::_Name_, #_Name_, _Default_, _Help_};
118#define PROCESS_SWITCH_FULL(_Class_, _Method_, _Name_, _Help_, _Default_) \
119 decltype(ProcessConfigurable{&_Class_ ::_Method_, #_Name_, _Default_, _Help_}) do##_Name_ = ProcessConfigurable{&_Class_ ::_Method_, #_Name_, _Default_, _Help_};
121template <
typename T, ConfigParamKind K,
typename IP>
GLsizei const GLchar *const * string
GLuint const GLchar * name
GLsizei const GLfloat * value
Defining PrimaryVertex explicitly as messageable.
std::ostream & operator<<(std::ostream &s, ChannelType const &type)
Stream operators so that we can use ChannelType with Boost.Test.
Defining DataPointCompositeObject explicitly as copiable.
ConfigurableBase(std::string const &name, T &&defaultValue, std::string const &help)
static constexpr ConfigParamKind kind
T const * operator->() const
ConfigurablePolicyConst(std::string const &name, T &&defaultValue, std::string const &help)
ConfigurablePolicyMutable(std::string const &name, T &&defaultValue, std::string const &help)
Configurable(std::string const &name, T &&defaultValue, std::string const &help)
ProcessConfigurable(R(T::*process_)(As...), std::string const &name_, bool &&value_, std::string const &help_)
A placeholder node for simple type configurable.