Fix integer parsing to be more general
Fixes #277. Makes integer parsing to be more general and allow whatever types the user actually uses instead of hard coding a set of integers.
This commit is contained in:
parent
a20bda6179
commit
df229cff0d
@ -925,60 +925,12 @@ namespace cxxopts
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
inline
|
template <typename T,
|
||||||
void
|
typename std::enable_if<std::is_integral<T>::value>::type* = nullptr
|
||||||
parse_value(const std::string& text, uint8_t& value)
|
>
|
||||||
|
void parse_value(const std::string& text, T& value)
|
||||||
{
|
{
|
||||||
integer_parser(text, value);
|
integer_parser(text, value);
|
||||||
}
|
|
||||||
|
|
||||||
inline
|
|
||||||
void
|
|
||||||
parse_value(const std::string& text, int8_t& value)
|
|
||||||
{
|
|
||||||
integer_parser(text, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline
|
|
||||||
void
|
|
||||||
parse_value(const std::string& text, uint16_t& value)
|
|
||||||
{
|
|
||||||
integer_parser(text, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline
|
|
||||||
void
|
|
||||||
parse_value(const std::string& text, int16_t& value)
|
|
||||||
{
|
|
||||||
integer_parser(text, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline
|
|
||||||
void
|
|
||||||
parse_value(const std::string& text, uint32_t& value)
|
|
||||||
{
|
|
||||||
integer_parser(text, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline
|
|
||||||
void
|
|
||||||
parse_value(const std::string& text, int32_t& value)
|
|
||||||
{
|
|
||||||
integer_parser(text, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline
|
|
||||||
void
|
|
||||||
parse_value(const std::string& text, uint64_t& value)
|
|
||||||
{
|
|
||||||
integer_parser(text, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline
|
|
||||||
void
|
|
||||||
parse_value(const std::string& text, int64_t& value)
|
|
||||||
{
|
|
||||||
integer_parser(text, value);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
inline
|
inline
|
||||||
@ -1010,7 +962,9 @@ namespace cxxopts
|
|||||||
// The fallback parser. It uses the stringstream parser to parse all types
|
// The fallback parser. It uses the stringstream parser to parse all types
|
||||||
// that have not been overloaded explicitly. It has to be placed in the
|
// that have not been overloaded explicitly. It has to be placed in the
|
||||||
// source code before all other more specialized templates.
|
// source code before all other more specialized templates.
|
||||||
template <typename T>
|
template <typename T,
|
||||||
|
typename std::enable_if<!std::is_integral<T>::value>::type* = nullptr
|
||||||
|
>
|
||||||
void
|
void
|
||||||
parse_value(const std::string& text, T& value) {
|
parse_value(const std::string& text, T& value) {
|
||||||
stringstream_parser(text, value);
|
stringstream_parser(text, value);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user