Feathercoin  0.5.0
P2P Digital Currency
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros
comparator.h
Go to the documentation of this file.
1 // Copyright (c) 2011 The LevelDB Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. See the AUTHORS file for names of contributors.
4 
5 #ifndef STORAGE_LEVELDB_INCLUDE_COMPARATOR_H_
6 #define STORAGE_LEVELDB_INCLUDE_COMPARATOR_H_
7 
8 #include <string>
9 
10 namespace leveldb {
11 
12 class Slice;
13 
14 // A Comparator object provides a total order across slices that are
15 // used as keys in an sstable or a database. A Comparator implementation
16 // must be thread-safe since leveldb may invoke its methods concurrently
17 // from multiple threads.
18 class Comparator {
19  public:
20  virtual ~Comparator();
21 
22  // Three-way comparison. Returns value:
23  // < 0 iff "a" < "b",
24  // == 0 iff "a" == "b",
25  // > 0 iff "a" > "b"
26  virtual int Compare(const Slice& a, const Slice& b) const = 0;
27 
28  // The name of the comparator. Used to check for comparator
29  // mismatches (i.e., a DB created with one comparator is
30  // accessed using a different comparator.
31  //
32  // The client of this package should switch to a new name whenever
33  // the comparator implementation changes in a way that will cause
34  // the relative ordering of any two keys to change.
35  //
36  // Names starting with "leveldb." are reserved and should not be used
37  // by any clients of this package.
38  virtual const char* Name() const = 0;
39 
40  // Advanced functions: these are used to reduce the space requirements
41  // for internal data structures like index blocks.
42 
43  // If *start < limit, changes *start to a short string in [start,limit).
44  // Simple comparator implementations may return with *start unchanged,
45  // i.e., an implementation of this method that does nothing is correct.
46  virtual void FindShortestSeparator(
47  std::string* start,
48  const Slice& limit) const = 0;
49 
50  // Changes *key to a short string >= *key.
51  // Simple comparator implementations may return with *key unchanged,
52  // i.e., an implementation of this method that does nothing is correct.
53  virtual void FindShortSuccessor(std::string* key) const = 0;
54 };
55 
56 // Return a builtin comparator that uses lexicographic byte-wise
57 // ordering. The result remains the property of this module and
58 // must not be deleted.
59 extern const Comparator* BytewiseComparator();
60 
61 } // namespace leveldb
62 
63 #endif // STORAGE_LEVELDB_INCLUDE_COMPARATOR_H_
bool start
Definition: db_bench.cc:282
virtual void FindShortSuccessor(std::string *key) const =0
virtual ~Comparator()
Definition: comparator.cc:14
const Comparator * BytewiseComparator()
Definition: comparator.cc:76
virtual const char * Name() const =0
virtual void FindShortestSeparator(std::string *start, const Slice &limit) const =0
virtual int Compare(const Slice &a, const Slice &b) const =0