Commit Graph

23 Commits

Author SHA1 Message Date
DevCodeOne
d7b930846c Fix some strange issues in integer_parser (#80)
* Prevent malformed numbers from being parsed as correct numbers.

Fixes #78. If you passed a string for example "test" it would get parsed to 1400.
The problem was that the parser did not throw an exception when an incorrect char was encountered.
Also a number without 0x in front with hexadecimal digits in it got parsed.
The number was treated as a hexadecimal number but it was still calculated with base 10.
So now before the current char is used, it is checked if it is valid in the current base.
Furthermore the number 0x0 was not a valid number, it now is a special case in the `integer_pattern`.

* Fixed `integer_pattern` so it works correctly under clang. Added testcase for invalid integers and for 0x0 being a valid number.
2017-11-02 08:14:21 +11:00
Hannah Rittich
2aed1ce41b Added parsing of general types. (#63)
Adds generic parsing of types using `operator>>`, in particular allows
parsing of floats and doubles.
2017-08-16 17:55:06 +10:00
Jarryd Beck
5e9f822598 Improve integer parsing
Fixes #39. Closes #40. This is an overhaul of the way that integer
arguments are parsed. Instead of using std::istream, which allows,
for example, negative integers for unsigned types, we use our own
parser.

This allows us to do proper range checking depending on the type,
and to correctly check for negative values passed to unsigned types.

This also allows the handling of base 16 numbers.
2017-07-25 08:12:29 +10:00
Shivakar Vulli
f931fd4279 Allow spaces in option specification. (#58)
Fixes #57.

Allows spaces after the comma between the short and long option
specification.
2017-07-16 15:11:03 +10:00
Mario Werner
11faadeba7 Cmake overhaul (#53)
* remove biicode support

The company/startup died in 2015 and the open source project seems
to be dead as well.

* define compiler warning flags globally instead of locally for every binary

* add support for cmake's find_package() (refs #52)

This rewrite of the main CMakeLists.txt cleans up the way ICU flags
are attached to the library target and adds the cmake helper files
(cxxopts-config.cmake, cxxopts-config-version.cmake,
cxxopts-targets.cmake) which are needed for exporting the cxxopts
target. Cmake's find_package command uses these files when the
library is consumed by another project.

Additionally, two new tests have been added which build the example
application via add_subdirectory and find_package.

* removed target_sources from interface library

Adding target_sources to interface libraries and exporting them is
not supported in CMake 3.1 and 3.2. Furthermore, since it is a header,
it is not needed at all.

* use the *_LDFLAGS instead of *_LIBARIES when linking ICU

The LIBRARIES variable seems to contain only the name and not the
full path.
2017-06-23 18:38:42 +10:00
Jarryd Beck
34aec8e87c Enable warnings and fix them
Fixes #50. This enables -Wall -Wextra -Wshadow and sets -Werror so that
the build fails if there are any warnings. All warnings that came up are
also fixed
2017-06-01 17:12:17 +10:00
Jarryd Beck
464a8eb65d Add required options helper
Fixes #44. Adds a helper function for checking required options.
2017-05-31 18:10:46 +10:00
Jarryd Beck
f3582c4864 missing file 2017-05-31 17:57:27 +10:00
Jarryd Beck
9d16b98edd Support only short option
Fixes #47. Adds support for options that only have a short option.
2017-05-31 17:40:14 +10:00
Jarryd Beck
cca5472def failing test 2017-05-17 07:38:30 +10:00
Jarryd Beck
848880d931 Fix arguments after -- without declared positional
Fixes #36. This fixes handling arguments passed after `--` when no
positional arguments have been declared, or when the positional
arguments have all been used up. The bug was that the extra arguments
were lost. Now they are retained in the modified argv.
2017-05-06 14:16:00 +10:00
Mario Badr
e005d07656 Use cmake interface library
Fixes #33.

This PR uses cmake's interface library feature:

  An INTERFACE library target does not directly create build output,
  though it may have properties set on it and it may be installed,
  exported and imported.

This makes it easier to include the header only library in a cmake
project. After using add_subdirectory on the cxxopts directory, one
simply needs to include cxxopts in their target_link_libraries, which
will allow the user's target to inherit the properties of the cxxopts
header library (see changes to example and test).
2016-12-03 07:50:14 +11:00
Jarryd Beck
a04284fc2c fix Unicode build 2016-11-30 18:05:34 +11:00
Jarryd Beck
d92988c6a2 Allow for numbers in options
Closes #32. This adds numbers as allowed values in all parts
of short and long option specifiers.
2016-11-16 18:03:35 +11:00
Jarryd Beck
db674a467f test for hiding options 2016-10-27 07:54:42 +11:00
Jarryd Beck
9e3f3115d2 Don't overwrite positional arguments.
Fixes #30. The positional arguments are not overwritten when they
have already been given on the command line.
2016-08-29 18:11:18 +10:00
Jarryd Beck
7b26c50e59 add test with no options 2016-08-26 19:20:55 +10:00
Jarryd Beck
728da0e65a add some more tests 2016-08-26 19:09:40 +10:00
Jarryd Beck
2f86fb1de0 fix test 2016-08-26 18:58:28 +10:00
Jarryd Beck
c6554ddc49 ignore built files 2016-08-26 08:26:42 +10:00
Jarryd Beck
55bfe49aa0 options test 2016-08-26 08:22:04 +10:00
Jarryd Beck
435bc38eff add gitignore 2016-08-25 18:29:00 +10:00
Jarryd Beck
2d480c0228 add testing 2016-08-25 08:49:56 +10:00