1 //  Copyright (c) 2011-present, Facebook, Inc.  All rights reserved.
2 //  This source code is licensed under both the GPLv2 (found in the
3 //  COPYING file in the root directory) and Apache 2.0 License
4 //  (found in the LICENSE.Apache file in the root directory).
5 #pragma once
6 
7 #include <map>
8 #include <string>
9 
10 #include "rocksdb/comparator.h"
11 #include "rocksdb/slice.h"
12 #include "util/coding.h"
13 
14 namespace ROCKSDB_NAMESPACE {
15 namespace stl_wrappers {
16 
17 struct LessOfComparator {
18   explicit LessOfComparator(const Comparator* c = BytewiseComparator())
cmpLessOfComparator19       : cmp(c) {}
20 
operatorLessOfComparator21   bool operator()(const std::string& a, const std::string& b) const {
22     return cmp->Compare(Slice(a), Slice(b)) < 0;
23   }
operatorLessOfComparator24   bool operator()(const Slice& a, const Slice& b) const {
25     return cmp->Compare(a, b) < 0;
26   }
27 
28   const Comparator* cmp;
29 };
30 
31 typedef std::map<std::string, std::string, LessOfComparator> KVMap;
32 }
33 }  // namespace ROCKSDB_NAMESPACE
34