11#ifndef O2_FRAMEWORK_CONFIGPARAMREGISTRY_H_
12#define O2_FRAMEWORK_CONFIGPARAMREGISTRY_H_
15#include <boost/property_tree/ptree.hpp>
24 std::same_as<T, int8_t> ||
25 std::same_as<T, int16_t> ||
26 std::same_as<T, uint8_t> ||
27 std::same_as<T, uint16_t> ||
28 std::same_as<T, unsigned int> ||
29 std::same_as<T, unsigned long> ||
30 std::same_as<T, unsigned long long> ||
31 std::same_as<T, long> ||
32 std::same_as<T, long long> ||
33 std::same_as<T, float> ||
34 std::same_as<T, double> ||
35 std::same_as<T, bool>;
39 std::same_as<T, std::vector<float>> ||
40 std::same_as<T, std::vector<double>> ||
41 std::same_as<T, std::vector<std::string>> ||
42 std::same_as<T, std::vector<bool>>;
48concept PtreeConfigValueType = std::same_as<T, boost::property_tree::ptree> || std::constructible_from<T, boost::property_tree::ptree>;
61class ConfigParamStore;
80 [[nodiscard]] std::vector<ConfigParamSpec>
const&
specs()
const;
82 template <ConfigValueType T>
83 T
get(
const char*
key)
const;
91 void loadExtra(std::vector<ConfigParamSpec>& extras);
94 std::unique_ptr<ConfigParamStore> mStore;
101 return T{mStore->store().get_child(
key)};
102 }
catch (std::exception& e) {
103 throw std::invalid_argument(std::string(
"missing option: ") +
key +
" (" + e.what() +
")");
105 throw std::invalid_argument(std::string(
"error parsing option: ") +
key);
void loadExtra(std::vector< ConfigParamSpec > &extras)
T get(const char *key) const
bool isDefault(const char *key) const
bool hasOption(const char *key) const
bool isSet(const char *key) const
std::vector< ConfigParamSpec > const & specs() const
T get(const char *key) const
Defining PrimaryVertex explicitly as messageable.