27 bpo::options_description& options,
28 const std::vector<ConfigParamSpec>& specs,
29 bpo::options_description vetos)
31 auto proxy = options.add_options();
32 for (
auto const& spec : specs) {
34 if (vetos.find_nothrow(spec.name,
false) !=
nullptr) {
42 addConfigSpecOption<VariantType::Int>(spec, options);
45 addConfigSpecOption<VariantType::Int8>(spec, options);
48 addConfigSpecOption<VariantType::Int16>(spec, options);
51 addConfigSpecOption<VariantType::Int64>(spec, options);
54 addConfigSpecOption<VariantType::UInt8>(spec, options);
57 addConfigSpecOption<VariantType::UInt16>(spec, options);
60 addConfigSpecOption<VariantType::UInt32>(spec, options);
63 addConfigSpecOption<VariantType::UInt64>(spec, options);
66 addConfigSpecOption<VariantType::Float>(spec, options);
69 addConfigSpecOption<VariantType::Double>(spec, options);
72 addConfigSpecOption<VariantType::String>(spec, options);
75 addConfigSpecOption<VariantType::Bool>(spec, options);
78 addConfigSpecOption<VariantType::ArrayInt>(spec, options);
81 addConfigSpecOption<VariantType::ArrayFloat>(spec, options);
84 addConfigSpecOption<VariantType::ArrayDouble>(spec, options);
87 addConfigSpecOption<VariantType::ArrayBool>(spec, options);
90 addConfigSpecOption<VariantType::ArrayString>(spec, options);
93 addConfigSpecOption<VariantType::Array2DInt>(spec, options);
96 addConfigSpecOption<VariantType::Array2DFloat>(spec, options);
99 addConfigSpecOption<VariantType::Array2DDouble>(spec, options);
138 boost::program_options::options_description& options,
139 boost::program_options::options_description vetos)
141 bool haveOption =
false;
142 for (
const auto& configSpec : spec) {
145 if (vetos.find_nothrow(configSpec.name,
false) !=
nullptr) {
148 }
catch (boost::program_options::ambiguous_option& e) {
149 for (
auto const& alternative : e.alternatives()) {
150 std::cerr << alternative << std::endl;
156 std::stringstream defaultValue;
157 defaultValue << configSpec.defaultValue;
160 options.add_options()(configSpec.name.c_str(),
161 bpo::value<std::string>()->default_value(defaultValue.str()),
162 configSpec.help.c_str());
164 options.add_options()(configSpec.name.c_str(),
165 bpo::value<std::string>(),
166 configSpec.help.c_str());
170 options.add_options()(configSpec.name.c_str(),
171 bpo::value<bool>()->zero_tokens()->default_value(configSpec.defaultValue.get<
bool>()),
172 configSpec.help.c_str());
174 options.add_options()(configSpec.name.c_str(),
175 bpo::value<bool>()->zero_tokens(),
176 configSpec.help.c_str());