Tags: rauhul/cxxopts
Tags
Fix some strange issues in integer_parser (jarro2783#80) * Prevent malformed numbers from being parsed as correct numbers. Fixes jarro2783#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.
Fix compiler warnings for MSVC Fixes jarro2783#62. This fixes compiler warnings that are raised by MSVC. In one case the code that was warned about was never executed, but this compiles it out in that case to silence the warning.
Improve integer parsing Fixes jarro2783#39. Closes jarro2783#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.
PreviousNext