Index: sync/internal_api/public/base/unique_position.cc |
diff --git a/sync/internal_api/public/base/unique_position.cc b/sync/internal_api/public/base/unique_position.cc |
index 2d41614999c332fc81d371d2a2f6d0d4ae5fa9bf..30d40e3665bbb8d17241c88e93e7bffb7b4f4b2b 100644 |
--- a/sync/internal_api/public/base/unique_position.cc |
+++ b/sync/internal_api/public/base/unique_position.cc |
@@ -4,7 +4,8 @@ |
#include "sync/internal_api/public/base/unique_position.h" |
-#include "base/basictypes.h" |
+#include <limits> |
+ |
#include "base/logging.h" |
#include "base/rand_util.h" |
#include "base/stl_util.h" |
@@ -84,13 +85,12 @@ UniquePosition UniquePosition::FromProto(const sync_pb::UniquePosition& proto) { |
} |
// static. |
-UniquePosition UniquePosition::FromInt64( |
- int64 x, const std::string& suffix) { |
- uint64 y = static_cast<uint64>(x); |
+UniquePosition UniquePosition::FromInt64(int64_t x, const std::string& suffix) { |
+ uint64_t y = static_cast<uint64_t>(x); |
y ^= 0x8000000000000000ULL; // Make it non-negative. |
std::string bytes(8, 0); |
for (int i = 7; i >= 0; --i) { |
- bytes[i] = static_cast<uint8>(y); |
+ bytes[i] = static_cast<uint8_t>(y); |
y >>= 8; |
} |
return UniquePosition(bytes + suffix, suffix); |
@@ -176,22 +176,22 @@ void UniquePosition::SerializeToString(std::string* blob) const { |
proto.SerializeToString(blob); |
} |
-int64 UniquePosition::ToInt64() const { |
- uint64 y = 0; |
+int64_t UniquePosition::ToInt64() const { |
+ uint64_t y = 0; |
const std::string& s = Uncompress(compressed_); |
- size_t l = sizeof(int64); |
+ size_t l = sizeof(int64_t); |
if (s.length() < l) { |
NOTREACHED(); |
l = s.length(); |
} |
for (size_t i = 0; i < l; ++i) { |
- const uint8 byte = s[l - i - 1]; |
- y |= static_cast<uint64>(byte) << (i * 8); |
+ const uint8_t byte = s[l - i - 1]; |
+ y |= static_cast<uint64_t>(byte) << (i * 8); |
} |
y ^= 0x8000000000000000ULL; |
// This is technically implementation-defined if y > INT64_MAX, so |
// we're assuming that we're on a twos-complement machine. |
- return static_cast<int64>(y); |
+ return static_cast<int64_t>(y); |
} |
bool UniquePosition::IsValid() const { |
@@ -247,7 +247,7 @@ std::string UniquePosition::FindSmallerWithSuffix( |
} else { |
// Prepend zeroes to match those in the |reference|, then something smaller |
// than the first non-zero digit in |reference|. |
- char lt_digit = static_cast<uint8>(reference[ref_zeroes])/2; |
+ char lt_digit = static_cast<uint8_t>(reference[ref_zeroes]) / 2; |
return std::string(ref_zeroes, '\0') + lt_digit; |
} |
} |
@@ -256,8 +256,10 @@ std::string UniquePosition::FindSmallerWithSuffix( |
std::string UniquePosition::FindGreaterWithSuffix( |
const std::string& reference, |
const std::string& suffix) { |
- size_t ref_FFs = reference.find_first_not_of(kuint8max); |
- size_t suffix_FFs = suffix.find_first_not_of(kuint8max); |
+ size_t ref_FFs = |
+ reference.find_first_not_of(std::numeric_limits<uint8_t>::max()); |
+ size_t suffix_FFs = |
+ suffix.find_first_not_of(std::numeric_limits<uint8_t>::max()); |
if (ref_FFs == std::string::npos) { |
ref_FFs = reference.length(); |
@@ -273,18 +275,22 @@ std::string UniquePosition::FindGreaterWithSuffix( |
if (suffix.substr(suffix_FFs) > reference.substr(ref_FFs)) { |
// Prepend FF digits to match those in |reference|. |
- return std::string(ref_FFs - suffix_FFs, kuint8max); |
+ return std::string(ref_FFs - suffix_FFs, |
+ std::numeric_limits<uint8_t>::max()); |
} else if (suffix_FFs > 1) { |
// Prepend enough leading FF digits so result has one more of them than |
// |reference| does. We could also take the "else" branch below, but this |
// gives us a smaller result. |
- return std::string(ref_FFs - suffix_FFs + 1, kuint8max); |
+ return std::string(ref_FFs - suffix_FFs + 1, |
+ std::numeric_limits<uint8_t>::max()); |
} else { |
// Prepend FF digits to match those in |reference|, then something larger |
// than the first non-FF digit in |reference|. |
- char gt_digit = static_cast<uint8>(reference[ref_FFs]) + |
- (kuint8max - static_cast<uint8>(reference[ref_FFs]) + 1) / 2; |
- return std::string(ref_FFs, kuint8max) + gt_digit; |
+ char gt_digit = static_cast<uint8_t>(reference[ref_FFs]) + |
+ (std::numeric_limits<uint8_t>::max() - |
+ static_cast<uint8_t>(reference[ref_FFs]) + 1) / |
+ 2; |
+ return std::string(ref_FFs, std::numeric_limits<uint8_t>::max()) + gt_digit; |
} |
} |
@@ -306,8 +312,8 @@ std::string UniquePosition::FindBetweenWithSuffix( |
size_t i = 0; |
for ( ; i < std::min(before.length(), after.length()); ++i) { |
- uint8 a_digit = before[i]; |
- uint8 b_digit = after[i]; |
+ uint8_t a_digit = before[i]; |
+ uint8_t b_digit = after[i]; |
if (b_digit - a_digit >= 2) { |
mid.push_back(a_digit + (b_digit - a_digit)/2); |
@@ -464,14 +470,14 @@ UniquePosition::UniquePosition( |
namespace { |
// Appends an encoded run length to |output_str|. |
-static void WriteEncodedRunLength(uint32 length, |
+static void WriteEncodedRunLength(uint32_t length, |
bool high_encoding, |
std::string* output_str) { |
CHECK_GE(length, 4U); |
CHECK_LT(length, 0x80000000); |
// Step 1: Invert the count, if necessary, to account for the following digit. |
- uint32 encoded_length; |
+ uint32_t encoded_length; |
if (high_encoding) { |
encoded_length = 0xffffffff - length; |
} else { |
@@ -486,18 +492,16 @@ static void WriteEncodedRunLength(uint32 length, |
} |
// Reads an encoded run length for |str| at position |i|. |
-static uint32 ReadEncodedRunLength(const std::string& str, size_t i) { |
+static uint32_t ReadEncodedRunLength(const std::string& str, size_t i) { |
DCHECK_LE(i + 4, str.length()); |
// Step 1: Extract the big-endian count. |
- uint32 encoded_length = |
- ((uint8)(str[i+3]) << 0) | |
- ((uint8)(str[i+2]) << 8) | |
- ((uint8)(str[i+1]) << 16) | |
- ((uint8)(str[i+0]) << 24); |
+ uint32_t encoded_length = |
+ ((uint8_t)(str[i + 3]) << 0) | ((uint8_t)(str[i + 2]) << 8) | |
+ ((uint8_t)(str[i + 1]) << 16) | ((uint8_t)(str[i + 0]) << 24); |
// Step 2: If this was an inverted count, un-invert it. |
- uint32 length; |
+ uint32_t length; |
if (encoded_length & 0x80000000) { |
length = 0xffffffff - encoded_length; |
} else { |
@@ -559,10 +563,11 @@ std::string UniquePosition::CompressImpl(const std::string& str) { |
encode_high = false; |
} else { |
run_length = runs_until - i; |
- encode_high = static_cast<uint8>(str[runs_until]) > |
- static_cast<uint8>(rep_digit); |
+ encode_high = static_cast<uint8_t>(str[runs_until]) > |
+ static_cast<uint8_t>(rep_digit); |
} |
- DCHECK_LT(run_length, static_cast<size_t>(kint32max)) |
+ DCHECK_LT(run_length, |
+ static_cast<size_t>(std::numeric_limits<int32_t>::max())) |
<< "This implementation can't encode run-lengths greater than 2^31."; |
WriteEncodedRunLength(run_length, encode_high, &output); |
@@ -588,7 +593,7 @@ std::string UniquePosition::Uncompress(const std::string& str) { |
if (IsRepeatedCharPrefix(str, i)) { |
// Found a repeated character block. Expand it. |
const char rep_digit = str[i]; |
- uint32 length = ReadEncodedRunLength(str, i+4); |
+ uint32_t length = ReadEncodedRunLength(str, i + 4); |
output.append(length, rep_digit); |
} else { |
// Found a regular block. Copy it. |
@@ -603,7 +608,7 @@ std::string UniquePosition::Uncompress(const std::string& str) { |
bool UniquePosition::IsValidCompressed(const std::string& str) { |
for (size_t i = 0; i + 8 <= str.length(); i += 8) { |
if (IsRepeatedCharPrefix(str, i)) { |
- uint32 count = ReadEncodedRunLength(str, i+4); |
+ uint32_t count = ReadEncodedRunLength(str, i + 4); |
if (count < 4) { |
// A repeated character block should at least represent the four |
// characters that started it. |