• Fixes #83.
    
    Adds an overload for positional arguments taking a
    `std::initializer_list`. When using an `initializer_list` with one
    argument, the function call is ambiguous matching both `std::string`
    and `std::vector<std::string>`.
    Jarryd Beck authored
     
    Browse Dir »
  • Fixes #84. Implicit values are not handled very well. For example:
    
        --foo false true
        --foo --bar
    
    In the first, `false` is an argument to `--foo`, and then `true` is a
    positional argument. In the second, because of the hyphen in `--bar`, `--foo`
    is parsed with its implicit value. This seems inconsistent and unintuitive.
    
    Better is that implicit values *never* consume the next parameter to be
    completely consistent. This means that values with an implicit parameter
    *must* be specified using the `--option=value` form.
    Jarryd Beck authored
     
    Browse Dir »

  • The parsing for boolean options was broken by 6c9bae4a07 which added implicit
    and default values, and the ability to parse boolean strings. Having an option
    after the boolean tried to parse that into the boolean instead of as a
    positional parameter.
    
    See #84 for the bug report.
    Jarryd Beck authored
     
    Browse Dir »



  • * 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.
    DevCodeOne authored
     
    Browse Dir »




  • 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.
    Jarryd Beck authored
     
    Browse Dir »


  • * 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.
    Mario Werner authored
     
    Browse Dir »