summaryrefslogtreecommitdiffstats
path: root/base/string_number_conversions.cc
diff options
context:
space:
mode:
authorahutter@chromium.org <ahutter@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-12-20 02:46:28 +0000
committerahutter@chromium.org <ahutter@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-12-20 02:46:28 +0000
commitce63d6b29059447b36aa2fc52ea608b1e785692e (patch)
treedb5a93bac2703504c6c8564c6ef58ec02abd8353 /base/string_number_conversions.cc
parent276c8b6cc32fe5e03ad779ff2c506a090b87cd4f (diff)
downloadchromium_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.cc24
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);
}