1*89c4ff92SAndroid Build Coastguard Worker# Changelog 2*89c4ff92SAndroid Build Coastguard Worker 3*89c4ff92SAndroid Build Coastguard WorkerThis is the changelog for `cxxopts`, a C++11 library for parsing command line 4*89c4ff92SAndroid Build Coastguard Workeroptions. The project adheres to semantic versioning. 5*89c4ff92SAndroid Build Coastguard Worker 6*89c4ff92SAndroid Build Coastguard Worker## 3.0 7*89c4ff92SAndroid Build Coastguard Worker 8*89c4ff92SAndroid Build Coastguard Worker### Changed 9*89c4ff92SAndroid Build Coastguard Worker 10*89c4ff92SAndroid Build Coastguard Worker* Only search for a C++ compiler in CMakeLists.txt. 11*89c4ff92SAndroid Build Coastguard Worker* Allow for exceptions to be disabled. 12*89c4ff92SAndroid Build Coastguard Worker* Fix duplicate default options when there is a short and long option. 13*89c4ff92SAndroid Build Coastguard Worker* Add `CXXOPTS_NO_EXCEPTIONS` to disable exceptions. 14*89c4ff92SAndroid Build Coastguard Worker* Fix char parsing for space and check for length. 15*89c4ff92SAndroid Build Coastguard Worker* Change argument type in `Options::parse` from `char**` to `const char**`. 16*89c4ff92SAndroid Build Coastguard Worker* Refactor parser to not change its arguments. 17*89c4ff92SAndroid Build Coastguard Worker* `ParseResult` doesn't depend on a reference to the parser. 18*89c4ff92SAndroid Build Coastguard Worker 19*89c4ff92SAndroid Build Coastguard Worker### Added 20*89c4ff92SAndroid Build Coastguard Worker 21*89c4ff92SAndroid Build Coastguard Worker* A list of unmatched arguments is available in `ParseResult`. 22*89c4ff92SAndroid Build Coastguard Worker 23*89c4ff92SAndroid Build Coastguard Worker## 2.2 24*89c4ff92SAndroid Build Coastguard Worker 25*89c4ff92SAndroid Build Coastguard Worker### Changed 26*89c4ff92SAndroid Build Coastguard Worker 27*89c4ff92SAndroid Build Coastguard Worker* Allow integers to have leading zeroes. 28*89c4ff92SAndroid Build Coastguard Worker* Build the tests by default. 29*89c4ff92SAndroid Build Coastguard Worker* Don't check for container when showing positional help. 30*89c4ff92SAndroid Build Coastguard Worker 31*89c4ff92SAndroid Build Coastguard Worker### Added 32*89c4ff92SAndroid Build Coastguard Worker 33*89c4ff92SAndroid Build Coastguard Worker* Iterator inputs to `parse_positional`. 34*89c4ff92SAndroid Build Coastguard Worker* Throw an exception if the option in `parse_positional` doesn't exist. 35*89c4ff92SAndroid Build Coastguard Worker* Parse a delimited list in a single argument for vector options. 36*89c4ff92SAndroid Build Coastguard Worker* Add an option to disable implicit value on booleans. 37*89c4ff92SAndroid Build Coastguard Worker 38*89c4ff92SAndroid Build Coastguard Worker### Bug Fixes 39*89c4ff92SAndroid Build Coastguard Worker 40*89c4ff92SAndroid Build Coastguard Worker* Fix a warning about possible loss of data. 41*89c4ff92SAndroid Build Coastguard Worker* Fix version numbering in CMakeLists.txt 42*89c4ff92SAndroid Build Coastguard Worker* Remove unused declaration of the undefined `ParseResult::get_option`. 43*89c4ff92SAndroid Build Coastguard Worker* Throw on invalid option syntax when beginning with a `-`. 44*89c4ff92SAndroid Build Coastguard Worker* Throw in `as` when option wasn't present. 45*89c4ff92SAndroid Build Coastguard Worker* Fix catching exceptions by reference. 46*89c4ff92SAndroid Build Coastguard Worker* Fix out of bounds errors parsing integers. 47*89c4ff92SAndroid Build Coastguard Worker 48*89c4ff92SAndroid Build Coastguard Worker## 2.1.1 49*89c4ff92SAndroid Build Coastguard Worker 50*89c4ff92SAndroid Build Coastguard Worker### Bug Fixes 51*89c4ff92SAndroid Build Coastguard Worker 52*89c4ff92SAndroid Build Coastguard Worker* Revert the change adding `const` type for `argv`, because most users expect 53*89c4ff92SAndroid Build Coastguard Worker to pass a non-const `argv` from `main`. 54*89c4ff92SAndroid Build Coastguard Worker 55*89c4ff92SAndroid Build Coastguard Worker## 2.1 56*89c4ff92SAndroid Build Coastguard Worker 57*89c4ff92SAndroid Build Coastguard Worker### Changed 58*89c4ff92SAndroid Build Coastguard Worker 59*89c4ff92SAndroid Build Coastguard Worker* Options with implicit arguments now require the `--option=value` form if 60*89c4ff92SAndroid Build Coastguard Worker they are to be specified with an option. This is to remove the ambiguity 61*89c4ff92SAndroid Build Coastguard Worker when a positional argument could follow an option with an implicit value. 62*89c4ff92SAndroid Build Coastguard Worker For example, `--foo value`, where `foo` has an implicit value, will be 63*89c4ff92SAndroid Build Coastguard Worker parsed as `--foo=implicit` and a positional argument `value`. 64*89c4ff92SAndroid Build Coastguard Worker* Boolean values are no longer special, but are just an option with a default 65*89c4ff92SAndroid Build Coastguard Worker and implicit value. 66*89c4ff92SAndroid Build Coastguard Worker 67*89c4ff92SAndroid Build Coastguard Worker### Added 68*89c4ff92SAndroid Build Coastguard Worker 69*89c4ff92SAndroid Build Coastguard Worker* Added support for `std::optional` as a storage type. 70*89c4ff92SAndroid Build Coastguard Worker* Allow the help string to be customised. 71*89c4ff92SAndroid Build Coastguard Worker* Use `const` for the type in the `argv` parameter, since the contents of the 72*89c4ff92SAndroid Build Coastguard Worker arguments is never modified. 73*89c4ff92SAndroid Build Coastguard Worker 74*89c4ff92SAndroid Build Coastguard Worker### Bug Fixes 75*89c4ff92SAndroid Build Coastguard Worker 76*89c4ff92SAndroid Build Coastguard Worker* Building against GCC 4.9 was broken due to overly strict shadow warnings. 77*89c4ff92SAndroid Build Coastguard Worker* Fixed an ambiguous overload in the `parse_positional` function when an 78*89c4ff92SAndroid Build Coastguard Worker `initializer_list` was directly passed. 79*89c4ff92SAndroid Build Coastguard Worker* Fixed precedence in the Boolean value regex. 80*89c4ff92SAndroid Build Coastguard Worker 81*89c4ff92SAndroid Build Coastguard Worker## 2.0 82*89c4ff92SAndroid Build Coastguard Worker 83*89c4ff92SAndroid Build Coastguard Worker### Changed 84*89c4ff92SAndroid Build Coastguard Worker 85*89c4ff92SAndroid Build Coastguard Worker* `Options::parse` returns a ParseResult rather than storing the parse 86*89c4ff92SAndroid Build Coastguard Worker result internally. 87*89c4ff92SAndroid Build Coastguard Worker* Options with default values now get counted as appearing once if they 88*89c4ff92SAndroid Build Coastguard Worker were not specified by the user. 89*89c4ff92SAndroid Build Coastguard Worker 90*89c4ff92SAndroid Build Coastguard Worker### Added 91*89c4ff92SAndroid Build Coastguard Worker 92*89c4ff92SAndroid Build Coastguard Worker* A new `ParseResult` object that is the immutable result of parsing. It 93*89c4ff92SAndroid Build Coastguard Worker responds to the same `count` and `operator[]` as `Options` of 1.x did. 94*89c4ff92SAndroid Build Coastguard Worker* The function `ParseResult::arguments` returns a vector of the parsed 95*89c4ff92SAndroid Build Coastguard Worker arguments to iterate through in the order they were provided. 96*89c4ff92SAndroid Build Coastguard Worker* The symbol `cxxopts::version` for the version of the library. 97*89c4ff92SAndroid Build Coastguard Worker* Booleans can be specified with various strings and explicitly set false. 98*89c4ff92SAndroid Build Coastguard Worker 99*89c4ff92SAndroid Build Coastguard Worker## 1.x 100*89c4ff92SAndroid Build Coastguard Worker 101*89c4ff92SAndroid Build Coastguard WorkerThe 1.x series was the first major version of the library, with release numbers 102*89c4ff92SAndroid Build Coastguard Workerstarting to follow semantic versioning, after 0.x being unstable. It never had 103*89c4ff92SAndroid Build Coastguard Workera changelog maintained for it. Releases mostly contained bug fixes, with the 104*89c4ff92SAndroid Build Coastguard Workeroccasional feature added. 105