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