11 std::vector<std::string> leftover;
12 leftover.reserve(tokens->size());
14 for (
size_t i = 0; i < tokens->size(); i++) {
15 const std::string& token = (*tokens)[i];
16 if (token.rfind(
"--", 0) == 0) {
18 std::string flag_name;
19 std::string value_string;
22 if ((i + 1) < tokens->size()) {
23 const std::string& next_token = (*tokens)[i + 1];
25 if (next_token.rfind(
"--", 0) != 0) {
26 value_string = next_token;
30 value_string =
"true";
33 value_string =
"true";
41 throw std::runtime_error(
"Unrecognized flag: " + flag_name);
46 }
else if (token.rfind(
"-", 0) == 0) {
47 if (token ==
"-v" || token ==
"-version") {
48 std::cout <<
"Version: " << YAZE_VERSION_MAJOR <<
"."
49 << YAZE_VERSION_MINOR <<
"." << YAZE_VERSION_PATCH <<
"\n";
54 if (token ==
"-h" || token ==
"-help") {
55 std::cout <<
"Available flags:\n";
56 for (
const auto& flag :
58 std::cout << flag->name() <<
": " << flag->help() <<
"\n";
63 std::string flag_name;
65 throw std::runtime_error(
"Unrecognized flag: " + token);
69 leftover.push_back(token);