52 lines
1.4 KiB
C
52 lines
1.4 KiB
C
|
// Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
|
||
|
// This source code is licensed under both the GPLv2 (found in the
|
||
|
// COPYING file in the root directory) and Apache 2.0 License
|
||
|
// (found in the LICENSE.Apache file in the root directory).
|
||
|
|
||
|
// This header establishes compile-time pluggable implementations of hashed
|
||
|
// container structures, so that deployments have the option of minimal
|
||
|
// dependencies with ok performance (e.g. std::unordered_map) or more
|
||
|
// dependencies with optimized performance (e.g. folly::F14FastMap).
|
||
|
|
||
|
#pragma once
|
||
|
|
||
|
#include "rocksdb/rocksdb_namespace.h"
|
||
|
|
||
|
#ifdef USE_FOLLY
|
||
|
|
||
|
#include <folly/container/F14Map.h>
|
||
|
#include <folly/container/F14Set.h>
|
||
|
|
||
|
namespace ROCKSDB_NAMESPACE {
|
||
|
|
||
|
template <typename K, typename V>
|
||
|
using UnorderedMap = folly::F14FastMap<K, V>;
|
||
|
|
||
|
template <typename K, typename V, typename H>
|
||
|
using UnorderedMapH = folly::F14FastMap<K, V, H>;
|
||
|
|
||
|
template <typename K>
|
||
|
using UnorderedSet = folly::F14FastSet<K>;
|
||
|
|
||
|
} // namespace ROCKSDB_NAMESPACE
|
||
|
|
||
|
#else
|
||
|
|
||
|
#include <unordered_map>
|
||
|
#include <unordered_set>
|
||
|
|
||
|
namespace ROCKSDB_NAMESPACE {
|
||
|
|
||
|
template <typename K, typename V>
|
||
|
using UnorderedMap = std::unordered_map<K, V>;
|
||
|
|
||
|
template <typename K, typename V, typename H>
|
||
|
using UnorderedMapH = std::unordered_map<K, V, H>;
|
||
|
|
||
|
template <typename K>
|
||
|
using UnorderedSet = std::unordered_set<K>;
|
||
|
|
||
|
} // namespace ROCKSDB_NAMESPACE
|
||
|
|
||
|
#endif
|