Commit 3ce8cbd1aebaba44873bd9aa4a7a81661dd36715
1 parent
b2e7efe7
add support for --
Showing
1 changed file
with
20 additions
and
1 deletions
src/cxxopts.hpp
| 1 | 1 | /* |
| 2 | 2 | |
| 3 | -Copyright (c) 2014, 2015 Jarryd Beck | |
| 3 | +Copyright (c) 2014, 2015, 2016 Jarryd Beck | |
| 4 | 4 | |
| 5 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy |
| 6 | 6 | of this software and associated documentation files (the "Software"), to deal |
| ... | ... | @@ -1067,8 +1067,17 @@ Options::parse(int& argc, char**& argv) |
| 1067 | 1067 | |
| 1068 | 1068 | int nextKeep = 1; |
| 1069 | 1069 | |
| 1070 | + bool consume_remaining = false; | |
| 1071 | + | |
| 1070 | 1072 | while (current != argc) |
| 1071 | 1073 | { |
| 1074 | + if (strcmp(argv[current], "--") == 0) | |
| 1075 | + { | |
| 1076 | + consume_remaining = true; | |
| 1077 | + ++current; | |
| 1078 | + break; | |
| 1079 | + } | |
| 1080 | + | |
| 1072 | 1081 | std::match_results<const char*> result; |
| 1073 | 1082 | std::regex_match(argv[current], result, option_matcher); |
| 1074 | 1083 | |
| ... | ... | @@ -1187,7 +1196,17 @@ Options::parse(int& argc, char**& argv) |
| 1187 | 1196 | } |
| 1188 | 1197 | } |
| 1189 | 1198 | |
| 1199 | + if (consume_remaining) | |
| 1200 | + { | |
| 1201 | + while (current < argc) | |
| 1202 | + { | |
| 1203 | + consume_positional(argv[current]); | |
| 1204 | + ++current; | |
| 1205 | + } | |
| 1206 | + } | |
| 1207 | + | |
| 1190 | 1208 | argc = nextKeep; |
| 1209 | + | |
| 1191 | 1210 | } |
| 1192 | 1211 | |
| 1193 | 1212 | void | ... | ... |