Index: base/string_number_conversions.cc |
diff --git a/base/string_number_conversions.cc b/base/string_number_conversions.cc |
index e80b6499f2e04c0787a48d08f87b306e9fc3e468..ca1574f1686c31e559b7a6ead01d13581dc297e6 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); |
} |