天天看點

leveldb學習筆記之八——include/leveldb/comparator.h

comparator是一個抽象類,它提供slice的比較,它必須是線程安全的,因為leveldb會從多個線程調用其中的方法。

代碼如下:

class LEVELDB_EXPORT Comparator {
 public:
  virtual ~Comparator();

  //比較的傳回值:
  // "a" < "b",傳回值小于0
  // "a"=="b",傳回值等于0
  // "a" > "b",傳回值大于0
  virtual int Compare(const Slice& a, const Slice& b) const = 0;

  // 比較器的名字,可以用來判斷比較器是否比對
  virtual const char* Name() const = 0;

  //查找start和limit之間的短的串,并指派給*start,用來節省空間
  virtual void FindShortestSeparator(
      std::string* start,
      const Slice& limit) const = 0;

  // 找一個大于等于*key的短字元串
  virtual void FindShortSuccessor(std::string* key) const = 0;
};      
LEVELDB_EXPORT const Comparator* BytewiseComparator();