172 Commits

Author SHA1 Message Date
Nitin Kumar
89985f820e feat: Switch to stable_partition to ensure that only first long options is printed in help (#481)
* feat: Add test for Ordering of multiple long options

* fix: Use stable_partition for deterministic ordering
2026-01-14 06:57:04 +11:00
HanaKami
8df9a4d271 Fixes potential segmentation fault in edge cases. (#465)
The options are parsed starting from 1, so check `current < argc`
instead of `!=` in the case that `argc` is zero.
2025-09-19 07:28:21 +10:00
fiesh
80cb4520f7 Fix some warnings (#452)
* Move `result` up and return it

This allows `gcc` to elide the copy in the return and keeps it from
warning with `-Wnvro` enabled.

* Remove harmful dtor definition

The definition of the dtor is not necessary and actually harmful since
the definition of a class's implicit copy constructor is deprecated if
that class has a user-declared constructor as of C++11.  Compilers can
warn about this with `-Wdeprecated`.

---------

Co-authored-by: Christoph Weiss <weiss@wsoptics.de>
2025-08-07 07:59:52 +10:00
Victor Proon
5e6d1e29f7 fix the issue with default empty vectors behaviour. update unit test (#460) 2025-07-18 07:09:03 +10:00
Jarryd Beck
44380e5a44 Fix and bump to next version 2025-05-26 18:09:26 +10:00
Nigel Stewart
7795b6a47b C++17 std::filesystem::path support added (#447) 2025-01-14 17:56:41 +11:00
levonwaveye
10a7a64779 Add ParseResult::contains method (#440) 2024-10-24 07:14:32 +11:00
pastalian
63d1b65a69 Add missing header for gcc-15 (#438) 2024-08-28 21:31:42 +10:00
nyako
c39022e047 fix conflict with minwindef.h on windows (#426) 2024-04-07 15:14:01 +10:00
Nigel Stewart
3d9a4c06d9 cxxopts as_optional fixup (#422)
Co-authored-by: Nigel Stewart <nigel.stewart@emesent.io>
2024-03-08 15:30:06 +11:00
Nigel Stewart
70fb4e4814 Extend cxxopts API to support as_optional in addition to as query of values (#421)
Co-authored-by: Nigel Stewart <nigel.stewart@emesent.io>
2024-02-29 20:27:19 +11:00
Jarryd Beck
4bf61f0869 Add changes for 3.2.1 2024-02-20 19:39:52 +11:00
jarro2783
1e175bc1db Fix ordering of parse_value functions (#420)
Fixes #419. Put the definitions of parse_value functions before they
are called so that the right ones are chosen.
2024-02-20 19:38:44 +11:00
jarro2783
3bf268481d Make cxxopts.hpp ready for 3.2
Update version number in header, ready for 3.2
2024-02-15 16:24:38 +11:00
ololuki
e84ab5f67c Fix overflow error in integer_parser. (#417)
Fixes #290.
Checking for overflow should be done before integer overflows.
There are two checks:
(result > limit / base) is used for limits greater than rounded up to base,
e.g. for 65535 it will activate for 65540 and higher.
(result * base > limit - digit) is used for limit+1 to limit+n below
next base rounded number, e.g. 65536 up to 65539.
2024-02-01 16:51:32 +11:00
Nigel Stewart
cd61c685eb Ordered vector of group names to preserve order of groups (#416)
Co-authored-by: Nigel Stewart <nigel.stewart@emesent.io>
2024-01-15 20:52:54 +11:00
Alexander Galanin
ddc695ebac Don't split by list delimiter in positional lists (#398) 2023-06-15 07:34:26 +10:00
Jarryd Beck
90b318105f Fix unannoted fallthrough
Fixes #402.
2023-06-15 07:18:30 +10:00
Maximilian Knespel
a526762eb8 [fix] Avoid std::regex initialization during dlopen (#406) 2023-05-31 07:26:34 +10:00
Nigel Stewart
16cc254919 Output same exception messages for both Linux and Windows (#395)
Co-authored-by: Nigel Stewart <nigel.stewart@emesent.io>
2023-04-03 17:15:01 +10:00
Jarryd Beck
120205ac5a Fix cast warning in Unicode function
Fixes #339. Fixes a sign conversion warning in a function compiled by
-DCXXOPTS_USE_UNICODE_HELP=1.
2023-03-15 07:09:09 +11:00
Demian Hespe
134f60f973 Fix noexcept warning (#391) 2023-02-20 07:25:13 +11:00
Jarryd Beck
eb787304d6 Fix version number 2023-02-16 07:02:16 +11:00
Martijn Courteaux
799ee0e3e8 Add <locale> to be spec-compliant for std::isalnum (didn't work on MSVC). (#385) 2023-02-11 15:47:48 +11:00
Jarryd Beck
e1f8c16702 Fix diagnostics pop error 2023-02-02 07:25:12 +11:00
Jarryd Beck
4a3d4dbfe0 Fixes #362.
Fix comparing iterators from a different container.
2023-02-01 06:56:03 +11:00
Jarryd Beck
32afbc6526 Fix default bool values
Fixes #382. Keep boolean values when parsing into a reference.
2022-12-15 07:08:03 +11:00
jarro2783
e9d20c2c07 Remove deprecated iterator type (#381)
Fixes #379. `iterator` is deprecated in C++17.
2022-12-05 07:40:46 +11:00
Sourabh Mehta
1dcb44e79a Fix an additional space in help generated (#377) 2022-11-10 07:24:19 +11:00
chrisps
f087dc8fcd Code size reduction on msvc via selectany (#373) 2022-11-01 18:52:46 +11:00
Ryan Leary
2e3c6991d3 add . as valid char in option names (#358) 2022-09-29 07:11:32 +10:00
Stefan Hillmich
d046fe0ad6 Extend CI and small fixes (#370)
* Extend CI to support Windows and MacOS.
* Minor fixes to types.
2022-09-26 06:57:05 +10:00
Stefan Hillmich
82ac083886 Added missing #include (#368) 2022-09-12 07:02:26 +10:00
66maer
f7cf84bd56 Fix std::isblank assertion error in Visual Studio Chinese Debug (#365) 2022-09-08 07:33:31 +10:00
Jarryd Beck
ab1dc0f684 Update copyright notice
Fixes #361
2022-08-22 07:35:58 +10:00
jarro2783
a10bd5233b Fix values attached to short options (#360)
Fixes #357.
2022-08-13 07:51:41 +10:00
Jarryd Beck
17b2c91049 Fix iostream for no exceptions
Fixes #356.
2022-08-08 07:07:59 +10:00
Jarryd Beck
96e72f7d15 Fix crash with short only option 2022-08-03 07:00:34 +10:00
Yassir Najmaoui
2abdd4af4d Add option to display usage (#355)
Make the usage displaying optional
2022-07-28 06:50:13 +10:00
Jarryd Beck
01798ee7a0 GCC 4.8 fixes 2022-07-25 07:21:22 +10:00
Jarryd Beck
a6bfe2d457 Further ifdef fixes.
Related to #339.
2022-07-20 20:57:27 +10:00
Jarryd Beck
83aecd628e Fix pragmas 2022-07-20 17:37:37 +10:00
Jarryd Beck
6c8a41a229 Remove unused header 2022-07-20 07:51:04 +10:00
Jarryd Beck
292750d27a Replace pragmas with macros
Fixes ##339
2022-07-20 07:49:59 +10:00
Jarryd Beck
8849551398 Fix #353.
Move nodiscard before inline.
2022-07-18 21:16:04 +10:00
Eyal Rozenberg
e976f964c3 Fix issue #240: Multiple long option names / aliases (#349)
* Fixes #240: Multiple long option names / aliases

* We now use a vector of long option names instead of a single name
* When specifying an option, you can provide multiple names separated by commas, at most one of which may have a length of 1 (not necessarily the first specified name). The length-1 name is the single-hyphen switch (the "short name").
* Hashing uses the first long name
* Option help currently only uses the first long name.
2022-07-14 16:42:18 +10:00
Eyal Rozenberg
9cd015ac37 Regards #340, #345: Removed unnecessary indentation of exceptions namespace + added end-of-namespace comment (#351) 2022-07-13 06:49:04 +10:00
Eyal Rozenberg
628dc9202b Fixes #345, fixes #346: Exception code tweaks (#347)
* Fixes #345, fixes #346, regards #340: Put exceptions in a sub-namespace and renamed them accordingly.

* Also fixed some "loose ends" regarding namespace indentation which were missing in PR #350.

* Dropped `required_option_missing` as it is unused.
2022-07-12 19:45:58 +10:00
Jarryd Beck
6bb1e82b61 Add Vim modeline 2022-07-11 07:17:53 +10:00
Eyal Rozenberg
513afbc6dc Fixes #340: namespace indentation unification (#350)
* Namespace no longer induce indentation
* Namespace opening brace now on same line as namespace name
* Namespace closing brace now has an empty line before it unless the namespace contents were short and with no empty lines
* Namespace closing brace now always followed by a comment with the closed namespace' name
2022-07-11 07:00:50 +10:00