19 const char *
const *
const argv;
23 beman::cstring_view s;
24 beman::cstring_view option;
27 Argument(
const char *argv);
30 std::vector<Argument> args;
32 bool missing_arg =
false;
36 beman::cstring_view name;
37 beman::cstring_view parameter;
38 const std::vector<const char *> *labels =
nullptr;
39 const size_t default_index = 0;
41 Option(beman::cstring_view parameter):
46 Option(beman::cstring_view name, beman::cstring_view parameter):
54 beman::cstring_view name,
55 const std::vector<const char *> &labels,
60 default_index(default_index)
65 std::vector<Option> options;
68 beman::cstring_view use_index();
71 Arguments(
int argc,
const char *
const *argv);
78 const char * description,
79 const char * default_string
85 const std::vector<const char *> &labels,
92 const char * description,
96 options.emplace_back(name, description);
98 for (
size_t i = 0; i < args.size() - 1; i++)
100 if (args[i].option == name)
103 args[i + 1].used =
true;
106 std::istringstream(args[i + 1].s.c_str()) >> result;
110 return default_value;
116 const char * description,
120 if (index < argc && args[index].option == name)
126 std::istringstream(args[index].s.c_str()) >> result;
132 return default_value;
136 beman::cstring_view
get_next(
const char * parameter);
137 bool peek(beman::cstring_view s);
139 std::ostream &
print_help(std::ostream &out)
const;
145 size_t size()
const {
return args.size();}
146 beman::cstring_view
operator[](
size_t i)
const {
return args[i].s;}