TARAXA
Loading...
Searching...
No Matches
uint_comparator.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <rocksdb/comparator.h>
4
6
7namespace taraxa {
8template <class T>
9class UintComparator : public rocksdb::Comparator {
10 public:
11 static const char *kClassName() { return "taraxa.UintComparator"; }
12 virtual const char *Name() const override { return kClassName(); }
13
14 // Three-way comparison function:
15 // if a < b: negative result
16 // if a > b: positive result
17 // else: zero result
18 virtual int Compare(const rocksdb::Slice &a, const rocksdb::Slice &b) const override {
19 const auto x = FromSlice<T>(a.data());
20 const auto y = FromSlice<T>(b.data());
21 if (x == y) return 0;
22 if (x < y) return -1;
23 return 1;
24 }
25
26 virtual void FindShortestSeparator(std::string *, const rocksdb::Slice &) const override {}
27
28 virtual void FindShortSuccessor(std::string *) const override {}
29};
30
31template <class T>
32inline const rocksdb::Comparator *getIntComparator() {
33 const static taraxa::UintComparator<T> kComparator;
34 return &kComparator;
35}
36} // end namespace taraxa
Definition uint_comparator.hpp:9
virtual void FindShortestSeparator(std::string *, const rocksdb::Slice &) const override
Definition uint_comparator.hpp:26
virtual int Compare(const rocksdb::Slice &a, const rocksdb::Slice &b) const override
Definition uint_comparator.hpp:18
virtual void FindShortSuccessor(std::string *) const override
Definition uint_comparator.hpp:28
static const char * kClassName()
Definition uint_comparator.hpp:11
virtual const char * Name() const override
Definition uint_comparator.hpp:12
Definition app.hpp:16
const rocksdb::Comparator * getIntComparator()
Definition uint_comparator.hpp:32