~ubuntu-branches/debian/jessie/armory/jessie

« back to all changes in this revision

Viewing changes to cppForSwig/leveldb/include/leveldb/comparator.h

  • Committer: Package Import Robot
  • Author(s): Joseph Bisch
  • Date: 2014-10-07 10:22:45 UTC
  • Revision ID: package-import@ubuntu.com-20141007102245-2s3x3rhjxg689hek
Tags: upstream-0.92.3
ImportĀ upstreamĀ versionĀ 0.92.3

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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_