//===--- 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 "Path.h"
#include "index/Background.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 <memory>
#include <vector>

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<IndexFileIn> Shard;
};

/// Loads all shards for the TU \p MainFile from \p Storage.
std::vector<LoadedShard>
loadIndexShards(llvm::ArrayRef<Path> MainFiles,
                BackgroundIndexStorage::Factory &IndexStorageFactory,
                const GlobalCompilationDatabase &CDB);

} // namespace clangd
} // namespace clang

#endif
