22 const char *
const *
const argv;
27 std::string_view option;
30 Argument(
const char *argv);
33 std::vector<Argument> args;
35 bool missing_arg =
false;
39 std::string_view name;
40 std::string_view parameter;
41 const std::vector<const char *> *labels =
nullptr;
42 const size_t default_index = 0;
44 Option(std::string_view parameter):
49 Option(std::string_view name, std::string_view parameter):
57 std::string_view name,
58 const std::vector<const char *> &labels,
63 default_index(default_index)
68 std::vector<Option> options;
71 std::string_view use_index();
74 Arguments(
int argc,
const char *
const *argv);
81 const char * description,
82 const char * default_string
88 const std::vector<const char *> &labels,
95 const char * description,
99 options.emplace_back(name, description);
101 for (
size_t i = 0; i < args.size() - 1; i++)
103 if (args[i].option == name)
106 args[i + 1].used =
true;
109 std::istringstream(args[i + 1].s.data()) >> result;
113 return default_value;
117 std::string_view
get_next(
const char * parameter);
118 bool peek(
const char *s);
120 std::ostream &
print_help(std::ostream &out)
const;
125 size_t size()
const {
return args.size();}
126 std::string_view
operator[](
size_t i)
const {
return args[i].s;}