17 class BytewiseComparatorImpl :
public Comparator {
19 BytewiseComparatorImpl() { }
21 virtual const char* Name()
const {
22 return "leveldb.BytewiseComparator";
25 virtual int Compare(
const Slice& a,
const Slice& b)
const {
29 virtual void FindShortestSeparator(
31 const Slice& limit)
const {
33 size_t min_length = std::min(start->size(), limit.size());
34 size_t diff_index = 0;
35 while ((diff_index < min_length) &&
36 ((*start)[diff_index] == limit[diff_index])) {
40 if (diff_index >= min_length) {
44 if (diff_byte < static_cast<uint8_t>(0xff) &&
45 diff_byte + 1 <
static_cast<uint8_t>(limit[diff_index])) {
46 (*start)[diff_index]++;
47 start->resize(diff_index + 1);
48 assert(Compare(*start, limit) < 0);
53 virtual void FindShortSuccessor(std::string* key)
const {
55 size_t n = key->size();
56 for (
size_t i = 0; i < n; i++) {
58 if (byte != static_cast<uint8_t>(0xff)) {
70 static const Comparator* bytewise;
72 static void InitModule() {
73 bytewise =
new BytewiseComparatorImpl;
void InitOnce(port::OnceType *, void(*initializer)())
const Comparator * BytewiseComparator()
#define LEVELDB_ONCE_INIT