diff options
author | ahutter@chromium.org <ahutter@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-12-20 02:46:28 +0000 |
---|---|---|
committer | ahutter@chromium.org <ahutter@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-12-20 02:46:28 +0000 |
commit | ce63d6b29059447b36aa2fc52ea608b1e785692e (patch) | |
tree | db5a93bac2703504c6c8564c6ef58ec02abd8353 /base/string_number_conversions.cc | |
parent | 276c8b6cc32fe5e03ad779ff2c506a090b87cd4f (diff) | |
download | chromium_src-ce63d6b29059447b36aa2fc52ea608b1e785692e.zip chromium_src-ce63d6b29059447b36aa2fc52ea608b1e785692e.tar.gz chromium_src-ce63d6b29059447b36aa2fc52ea608b1e785692e.tar.bz2 |
Integrating Online Wallet into Chrome. This CL is modeled after the Gaia OAuth client.
BUG=163609
Review URL: https://chromiumcodereview.appspot.com/11293078
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@174078 0039d316-1c4b-4281-b951-d872f2087c98
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); } |