41 boost::property_tree::ptree& store,
42 boost::property_tree::ptree& provenance)
44 auto options = mDescription->add_options();
45 for (
const auto& spec : specs) {
46 const char*
name = spec.name.c_str();
47 const char* help = spec.help.c_str();
51 options = options(
name, bpo::value<int>()->default_value(spec.defaultValue.get<
int>()), help);
54 options = options(
name, bpo::value<int8_t>()->default_value(spec.defaultValue.get<int8_t>()), help);
57 options = options(
name, bpo::value<int16_t>()->default_value(spec.defaultValue.get<int16_t>()), help);
60 options = options(
name, bpo::value<uint8_t>()->default_value(spec.defaultValue.get<uint8_t>()), help);
63 options = options(
name, bpo::value<uint16_t>()->default_value(spec.defaultValue.get<uint16_t>()), help);
66 options = options(
name, bpo::value<uint32_t>()->default_value(spec.defaultValue.get<uint32_t>()), help);
69 options = options(
name, bpo::value<uint64_t>()->default_value(spec.defaultValue.get<uint64_t>()), help);
72 options = options(
name, bpo::value<int64_t>()->default_value(spec.defaultValue.get<int64_t>()), help);
75 options = options(
name, bpo::value<float>()->default_value(spec.defaultValue.get<
float>()), help);
78 options = options(
name, bpo::value<double>()->default_value(spec.defaultValue.get<
double>()), help);
81 options = options(
name, bpo::value<std::string>()->default_value(spec.defaultValue.get<
const char*>()), help);
84 options = options(
name, bpo::value<bool>()->zero_tokens()->default_value(spec.defaultValue.get<
bool>()), help);
94 options = options(
name, bpo::value<std::string>()->default_value(spec.defaultValue.asString()), help);
107 using namespace bpo::command_line_style;
108 auto style = (allow_short | short_allow_adjacent | short_allow_next | allow_long | long_allow_adjacent | long_allow_next | allow_sticky | allow_dash_for_short);
110 auto parsed = mIgnoreUnknown ? bpo::command_line_parser(mArgc, mArgv).options(*mDescription).style(style).allow_unregistered().run()
111 : bpo::parse_command_line(mArgc, mArgv, *mDescription, style);
112 bpo::variables_map vmap;
113 bpo::store(parsed, vmap);