//===- MultiOnDiskHashTable.h - Merged set of hash tables -------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // // This file provides a hash table data structure suitable for incremental and // distributed storage across a set of files. // // Multiple hash tables from different files are implicitly merged to improve // performance, and on reload the merged table will override those from other // files. // //===----------------------------------------------------------------------===// #ifndef LLVM_CLANG_LIB_SERIALIZATION_MULTIONDISKHASHTABLE_H #define LLVM_CLANG_LIB_SERIALIZATION_MULTIONDISKHASHTABLE_H #include "llvm/ADT/DenseMap.h" #include "llvm/ADT/DenseSet.h" #include "llvm/ADT/PointerUnion.h" #include "llvm/ADT/STLExtras.h" #include "llvm/ADT/SmallVector.h" #include "llvm/ADT/TinyPtrVector.h" #include "llvm/ADT/iterator_range.h" #include "llvm/Support/Endian.h" #include "llvm/Support/EndianStream.h" #include "llvm/Support/OnDiskHashTable.h" #include "llvm/Support/raw_ostream.h" #include <algorithm> #include <cstdint> #include <vector> namespace clang { namespace serialization { /// A collection of on-disk hash tables, merged when relevant for performance. template<typename Info> class MultiOnDiskHashTable { … }; /// Writer for the on-disk hash table. template<typename ReaderInfo, typename WriterInfo> class MultiOnDiskHashTableGenerator { … }; } // namespace serialization } // namespace clang #endif // LLVM_CLANG_LIB_SERIALIZATION_MULTIONDISKHASHTABLE_H