Commit Graph

100 Commits

Author SHA1 Message Date
jarro2783 3ef9fddc7b
Fix passing a const array to parse (#258)
Fixes #257. The input array is not modified, so we can declare this as
`char const* const*`.
2020-10-03 20:54:06 +10:00
Jarryd Beck 748ac35277 small cleanup 2020-10-01 17:26:32 +10:00
Jarryd Beck 703eeef906 Update version for 3 2020-10-01 17:14:39 +10:00
Jarryd Beck fedf9d7b57 Refactor parser
Major refactor of the parsing code organisation to improve encapsulation
and not modify the input arguments. The returned result no longer has
pointers into the original option specification.
2020-10-01 17:12:03 +10:00
Daniel Gomez Antonio fd5cdfd547
Fix compiler warning C4702 for MSVC-14 (#225)
* Fix compiler warning C4702  for MSVC-14
2020-09-15 10:07:53 +10:00
Kjetil Andresen 15e8a74e95
Support 'const char**' arguments in Options::parse (#250)
`cxxopts` doesn't modify the contents of the argv strings. This changes
the parse function to take a reference to a `const char**`.
2020-08-11 08:01:29 +10:00
Rosen Penev 07f5cb24f1
[clang-tidy] use nodiscard (#234)
Found with modernize-use-nodiscard

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2020-07-28 15:40:16 +10:00
Eyal Rozenberg 5f43f4cbfe
Fixes #245: Mention the option name when throwing on "no value" (#246)
* Fixes #245:

* Added a new exception type: `option_has_no_value_exception`; throwing it when an option has no value we can cast with `as()`, instead of an `std::domain_error`.
* The `OptionValue` type now holds a pointer to the long option name (in its corresponding key within ParseResults's `m_results` field.
2020-07-23 17:27:04 +10:00
Akos Kiss 9a454c8e4e
Improve help of short-only options (remove dangling comma) (#235) 2020-06-04 13:21:51 +10:00
Daniel Lemire 794c975287
Exit instead of abort (#233)
Uses std::exit instead of abort to terminate when exceptions are disabled.
2020-05-29 08:30:35 +10:00
Rosen Penev 12bc8d78e7
clang-tidy fixes (#231) 2020-05-12 14:59:47 +10:00
Felix Esch 943cdcfbba Fix assertion failure (issue #217) (#218) 2020-01-08 17:14:46 +11:00
Florin Iucha 9457b3de3a Fix -Wconversion warnings with GCC9 (#214) 2019-11-28 08:30:23 +11:00
Abhay Raj Singh 073dd3e645 Fixed empty default showing nothing in help (#205) 2019-10-14 18:08:11 +11:00
Jarryd Beck 4a0af0e950 Fix parsing char type
Fixes #201. Parse char type correctly and check for length.
2019-08-23 08:26:16 +10:00
charlydelta 34784b01f7 Fix: Make CXXOPTS_NO_EXCEPTIONS compilable and print messages (#196)
Fix CXXOPTS_NO_EXCEPTIONS so that it doesn't warn about unused parameters, and print out error messages.
2019-08-08 08:25:34 +10:00
Jarryd Beck fce82fb035 Fix duplicate default option
Fixes #197. Don't parse default options twice when there is a short and
long option.
2019-08-08 08:21:52 +10:00
charlydelta 37e7220fb4 Allow disabling exceptions and use std::abort instead (#190) 2019-08-01 08:19:59 +10:00
Bartek 3c73d91c0b add_options variant with initializer list (#189)
Allow adding options with a single initializer list.
2019-06-28 08:39:37 +10:00
linus-sherrill 9910095719 Remove check for container when generating help message. (#170)
Some positional parameters would be listed in the help text and others
would not, when what is desired is that no positional parameters are
listed with the other command options. This change suppresses the help
listing for all positional parameters.
2019-06-18 18:16:31 +10:00
Jean-Baptiste Bayle 6b6af4f561 Add a method to remove the implicit value of an option (#178) 2019-06-18 17:49:15 +10:00
Christian Lang 7b14d5f60b Fix parsing of std::vector and add test, example and documentation (#182)
Improve parsing into std::vector so that a single argument can take a list.
2019-06-18 08:14:18 +10:00
Jarryd Beck 1eca210edc Remove unused variable 2019-06-14 18:28:04 +10:00
Jarryd Beck e17c6b0827 Fix integer parsing again 2019-06-14 18:20:22 +10:00
Jarryd Beck 3e5ecf1d2a Fix a couple of out of range errors
These were detected using -fsanitize=undefined parsing values equal to
INT_MAX and INT_MIN.
2019-06-14 08:12:29 +10:00
Jean-Baptiste Bayle bd20573829 Parse 0 and 1 into booleans (#177)
* Parse 1 as "true" and 0 as "false" for boolean options.
2019-05-28 17:25:54 +10:00
Jarryd Beck d58271c5fd Allow invalid short option syntax
Fixes #171. Allows invalid syntax for short options to be ignored.
2019-05-28 08:21:36 +10:00
Jarryd Beck cef280fad3 Remove some unreachable code.
Fixes #175. This was broken when throwing an exception on missing
positional parameters in #169.
2019-05-28 08:21:36 +10:00
Jack Clarke e34676f73e fix sign conversion warnings (#174) 2019-05-13 08:33:15 +10:00
Jarryd Beck 5da5d67111 Throw exception on invalid positional argument
Fixes #169. It seems reasonable to throw an exception when an attempt is
made to parse into positional parameters that don't exist.
2019-05-01 18:34:29 +10:00
le-migou 48e265dc4b Remove `u8` prefix in string literals. (#172)
String literals with the prefix `u8` now have the type `const char8_t[N]` in
C++20. As a consequence the library does not compile in c++2a mode with GCC
(you can't concatenate `std::basic_string<char>` and `const char8_t[]` as
`char` and `char8_t` are different types).
2019-04-15 18:26:43 +10:00
Jarryd Beck 3876c09072 Use reference instead of value
Fixes #166.
2019-02-19 18:14:36 +11:00
linus-sherrill 9990f73845 Remove empty string initializer. (#159)
The empty string caused the vector to have one element which caused
the test at line 2041 to always fail.
2019-01-14 08:46:41 +11:00
Michael Tesch 0edf37b6cc accept single '-' as argument, such as in `cat -` (#153) 2018-12-20 07:58:37 +11:00
舒俊杰 5950d78558 fix min/max defined macros (#152)
Windows is broken and defines `min` and `max` as a macro, adding parentheses stops them from being expanded.
2018-12-20 07:57:22 +11:00
Jarryd Beck 84feb4bd87 Throw in ParseResult::as when option isn't present
Fixes #124.
2018-11-19 17:45:51 +11:00
Jarryd Beck c713b44d92 Use a shared pointer for the options map
Fixes #132. Since the map of options is shared between Options and
ParseResult, they should use a shared pointer instead of a reference so
that ParseResult can be returned without referencing destroyed memory.
2018-11-08 18:22:42 +11:00
Jarryd Beck b528324107 Fix option matching 2018-11-08 08:18:54 +11:00
parkertomatoes f75feab968 Handle newlines in description (#138) 2018-10-08 11:57:33 +11:00
Jan Koßmann 1f7ac82495 Fix std::forward return in toLocalString (#134) 2018-09-27 11:28:07 +10:00
Jarryd Beck 7c468aaf68 Allow iterator inputs to parse_positional 2018-08-07 08:00:41 +10:00
Jarryd Beck 95a48de820 Remove unused get_option
Fixes #121. Removes the unused `ParseResult::get_option`.
2018-08-03 08:46:48 +10:00
Jarryd Beck cde83be99b Fix version numbering in CMakeLists.txt
Fixes #115. Read the version number out of `cxxopts.hpp` instead of
having to duplicate it in CMakeLists.txt.
2018-07-05 17:55:51 +10:00
Jarryd Beck e725ea3084 Use unsigned type for integer digit
Fixes #109. Although we always used numbers in the ASCII range, it was
in a `size_t`, leading to a warning about possible loss of data on some
compilers.
2018-05-08 07:59:17 +10:00
Jarryd Beck d47101a101 Allow leading zeroes in integers
Fixes #101. Allows leading zeroes in the integer parser.
2018-05-07 18:46:26 +10:00
Frank Schoenmann ca6e9f70eb Allow unrecognised options. (#105)
Allows unrecognised options to be left alone by the parser without throwing an exception.
2018-04-12 08:15:07 +10:00
Jarryd Beck cc4914f065 Revert "Added const to argv type for better interoperability. (#99)"
This reverts commit 0f819a5cab.
2018-04-10 08:48:08 +10:00
Jesús González 0f819a5cab Added const to argv type for better interoperability. (#99)
* Added const to argv type for better interoperability.
2018-03-09 08:07:29 +11:00
Jarryd Beck e40645e084 Don't show default when boolean false
Fixes #102. Don't show the default value when it is a boolean and the
value is false. Note that this is a bit of a hack and the
implementation should probably be reevaluated in the future.
2018-03-08 08:53:26 +11:00
Jarryd Beck 76bd60dc17 Add support for std::optional
Fixes #93. This adds C++17 only support for `std::optional` values for
command line parameters.
2018-01-31 18:25:52 +11:00