21 virtual const char*
Name()
const {
22 return "leveldb.BytewiseComparator";
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) {
43 uint8_t diff_byte =
static_cast<uint8_t
>((*start)[diff_index]);
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);
55 size_t n = key->size();
56 for (
size_t i = 0; i < n; i++) {
57 const uint8_t byte = (*key)[i];
58 if (byte != static_cast<uint8_t>(0xff)) {
69 static port::OnceType
once = LEVELDB_ONCE_INIT;
73 bytewise =
new BytewiseComparatorImpl;
virtual int Compare(const Slice &a, const Slice &b) const
virtual void FindShortSuccessor(std::string *key) const
static port::OnceType once
int compare(const Slice &b) const
virtual const char * Name() const
static const Comparator * bytewise
const Comparator * BytewiseComparator()
virtual int Compare(const Slice &a, const Slice &b) const =0
virtual void FindShortestSeparator(std::string *start, const Slice &limit) const