Commit 31b77f11af2bbf634a53e2828c3987777d22c2ab
1 parent
fedf9d7b
Prepare notes for v3
Showing
2 changed files
with
43 additions
and
1 deletions
CHANGELOG.md
| @@ -3,7 +3,7 @@ | @@ -3,7 +3,7 @@ | ||
| 3 | This is the changelog for `cxxopts`, a C++11 library for parsing command line | 3 | This is the changelog for `cxxopts`, a C++11 library for parsing command line |
| 4 | options. The project adheres to semantic versioning. | 4 | options. The project adheres to semantic versioning. |
| 5 | 5 | ||
| 6 | -## Next version | 6 | +## 3.0 |
| 7 | 7 | ||
| 8 | ### Changed | 8 | ### Changed |
| 9 | 9 | ||
| @@ -13,6 +13,12 @@ options. The project adheres to semantic versioning. | @@ -13,6 +13,12 @@ options. The project adheres to semantic versioning. | ||
| 13 | * Add `CXXOPTS_NO_EXCEPTIONS` to disable exceptions. | 13 | * Add `CXXOPTS_NO_EXCEPTIONS` to disable exceptions. |
| 14 | * Fix char parsing for space and check for length. | 14 | * Fix char parsing for space and check for length. |
| 15 | * Change argument type in `Options::parse` from `char**` to `const char**`. | 15 | * Change argument type in `Options::parse` from `char**` to `const char**`. |
| 16 | +* Refactor parser to not change its arguments. | ||
| 17 | +* `ParseResult` doesn't depend on a reference to the parser. | ||
| 18 | + | ||
| 19 | +### Added | ||
| 20 | + | ||
| 21 | +* A list of unmatched arguments is available in `ParseResult`. | ||
| 16 | 22 | ||
| 17 | ## 2.2 | 23 | ## 2.2 |
| 18 | 24 |
README.md
| @@ -5,6 +5,25 @@ | @@ -5,6 +5,25 @@ | ||
| 5 | Note that `master` is generally a work in progress, and you probably want to use a | 5 | Note that `master` is generally a work in progress, and you probably want to use a |
| 6 | tagged release version. | 6 | tagged release version. |
| 7 | 7 | ||
| 8 | +## Version 3 breaking changes | ||
| 9 | + | ||
| 10 | +If you have used version 2, there are a couple of breaking changes in version 3 | ||
| 11 | +that you should be aware of. If you are new to `cxxopts` you can skip this | ||
| 12 | +section. | ||
| 13 | + | ||
| 14 | +The parser no longer modifies its arguments, so you can pass a const `argc` and | ||
| 15 | +`argv` and expect them not to be changed. | ||
| 16 | + | ||
| 17 | +The `ParseResult` object no longer depends on the parser. So it can be returned | ||
| 18 | +from a scope outside the parser and still work. Now that the inputs are not | ||
| 19 | +modified, `ParseResult` stores a list of the unmatched arguments. These are | ||
| 20 | +retrieved like follows: | ||
| 21 | + | ||
| 22 | +```cpp | ||
| 23 | +auto result = options.parse(argc, argv); | ||
| 24 | +result.unmatched(); // get the unmatched arguments | ||
| 25 | +``` | ||
| 26 | + | ||
| 8 | # Quick start | 27 | # Quick start |
| 9 | 28 | ||
| 10 | This is a lightweight C++ option parser library, supporting the standard GNU | 29 | This is a lightweight C++ option parser library, supporting the standard GNU |
| @@ -69,6 +88,23 @@ exception will be thrown. | @@ -69,6 +88,23 @@ exception will be thrown. | ||
| 69 | Note that the result of `options.parse` should only be used as long as the | 88 | Note that the result of `options.parse` should only be used as long as the |
| 70 | `options` object that created it is in scope. | 89 | `options` object that created it is in scope. |
| 71 | 90 | ||
| 91 | +## Unrecognised arguments | ||
| 92 | + | ||
| 93 | +You can allow unrecognised arguments to be skipped. This applies to both | ||
| 94 | +positional arguments that are not parsed into another option, and `--` | ||
| 95 | +arguments that do not match an argument that you specify. This is done by | ||
| 96 | +calling: | ||
| 97 | + | ||
| 98 | +```cpp | ||
| 99 | +options.allow_unrecognised_options(); | ||
| 100 | +``` | ||
| 101 | + | ||
| 102 | +and in the result object they are retrieved with: | ||
| 103 | + | ||
| 104 | +```cpp | ||
| 105 | +result.unmatched() | ||
| 106 | +``` | ||
| 107 | + | ||
| 72 | ## Exceptions | 108 | ## Exceptions |
| 73 | 109 | ||
| 74 | Exceptional situations throw C++ exceptions. There are two types of | 110 | Exceptional situations throw C++ exceptions. There are two types of |