//===--- BackgroundIndexLoader.h - Load shards from index storage-*- 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 // //===----------------------------------------------------------------------===// #ifndef LLVM_CLANG_TOOLS_EXTRA_CLANGD_INDEX_BACKGROUND_INDEX_LOADER_H #define LLVM_CLANG_TOOLS_EXTRA_CLANGD_INDEX_BACKGROUND_INDEX_LOADER_H #include "index/Background.h" #include "support/Path.h" #include "llvm/ADT/ArrayRef.h" #include "llvm/ADT/DenseMap.h" #include "llvm/ADT/Optional.h" #include "llvm/ADT/StringMap.h" #include "llvm/ADT/StringRef.h" #include "llvm/Support/VirtualFileSystem.h" #include #include namespace clang { namespace clangd { /// Represents a shard loaded from storage, stores contents in \p Shard and /// metadata about the source file that generated this shard. struct LoadedShard { /// Path of the source file that produced this shard. Path AbsolutePath; /// Digest of the source file contents that produced this shard. FileDigest Digest = {}; /// Whether the RefSlab in Shard should be used for updating symbol reference /// counts when building an index. bool CountReferences = false; /// Whether the indexing action producing that shard had errors. bool HadErrors = false; /// Path to a TU that is depending on this shard. Path DependentTU; /// Will be nullptr when index storage couldn't provide a valid shard for /// AbsolutePath. std::unique_ptr Shard; }; /// Loads all shards for the TU \p MainFile from \p Storage. std::vector loadIndexShards(llvm::ArrayRef MainFiles, BackgroundIndexStorage::Factory &IndexStorageFactory, const GlobalCompilationDatabase &CDB); } // namespace clangd } // namespace clang #endif