diff options
Diffstat (limited to 'base/string_number_conversions.cc')
-rw-r--r-- | base/string_number_conversions.cc | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/base/string_number_conversions.cc b/base/string_number_conversions.cc index e80b649..ca1574f 100644 --- a/base/string_number_conversions.cc +++ b/base/string_number_conversions.cc @@ -295,16 +295,19 @@ class BaseIteratorRangeToNumberTraits { template<typename ITERATOR> class BaseHexIteratorRangeToIntTraits : public BaseIteratorRangeToNumberTraits<ITERATOR, int, 16> { - public: - // Allow parsing of 0xFFFFFFFF, which is technically an overflow - static unsigned int max() { - return std::numeric_limits<unsigned int>::max(); - } +}; + +template<typename ITERATOR> +class BaseHexIteratorRangeToInt64Traits + : public BaseIteratorRangeToNumberTraits<ITERATOR, int64, 16> { }; typedef BaseHexIteratorRangeToIntTraits<StringPiece::const_iterator> HexIteratorRangeToIntTraits; +typedef BaseHexIteratorRangeToInt64Traits<StringPiece::const_iterator> + HexIteratorRangeToInt64Traits; + template<typename STR> bool HexStringToBytesT(const STR& input, std::vector<uint8>* output) { DCHECK_EQ(output->size(), 0u); @@ -326,7 +329,8 @@ template <typename VALUE, int BASE> class StringPieceToNumberTraits : public BaseIteratorRangeToNumberTraits<StringPiece::const_iterator, VALUE, - BASE> {}; + BASE> { +}; template <typename VALUE> bool StringToIntImpl(const StringPiece& input, VALUE* output) { @@ -338,7 +342,8 @@ template <typename VALUE, int BASE> class StringPiece16ToNumberTraits : public BaseIteratorRangeToNumberTraits<StringPiece16::const_iterator, VALUE, - BASE> {}; + BASE> { +}; template <typename VALUE> bool String16ToIntImpl(const StringPiece16& input, VALUE* output) { @@ -481,6 +486,11 @@ bool HexStringToInt(const StringPiece& input, int* output) { input.begin(), input.end(), output); } +bool HexStringToInt64(const StringPiece& input, int64* output) { + return IteratorRangeToNumber<HexIteratorRangeToInt64Traits>::Invoke( + input.begin(), input.end(), output); +} + bool HexStringToBytes(const std::string& input, std::vector<uint8>* output) { return HexStringToBytesT(input, output); } |