LCOV - code coverage report
Current view: top level - clang/tools/extra/clangd/index - Merge.h (source / functions) Hit Total Coverage
Test: llvm-toolchain.info Lines: 0 4 0.0 %
Date: 2018-10-20 13:21:21 Functions: 0 1 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : //===--- Merge.h -------------------------------------------------*- C++-*-===//
       2             : //
       3             : //                     The LLVM Compiler Infrastructure
       4             : //
       5             : // This file is distributed under the University of Illinois Open Source
       6             : // License. See LICENSE.TXT for details.
       7             : //
       8             : //===----------------------------------------------------------------------===//
       9             : 
      10             : #ifndef LLVM_CLANG_TOOLS_EXTRA_CLANGD_INDEX_MERGE_H
      11             : #define LLVM_CLANG_TOOLS_EXTRA_CLANGD_INDEX_MERGE_H
      12             : 
      13             : #include "Index.h"
      14             : 
      15             : namespace clang {
      16             : namespace clangd {
      17             : 
      18             : // Merge symbols L and R, preferring data from L in case of conflict.
      19             : // The two symbols must have the same ID.
      20             : // Returned symbol may contain data owned by either source.
      21             : Symbol mergeSymbol(const Symbol &L, const Symbol &R);
      22             : 
      23             : // MergedIndex is a composite index based on two provided Indexes:
      24             : //  - the Dynamic index covers few files, but is relatively up-to-date.
      25             : //  - the Static index covers a bigger set of files, but is relatively stale.
      26             : // The returned index attempts to combine results, and avoid duplicates.
      27             : //
      28             : // FIXME: We don't have a mechanism in Index to track deleted symbols and
      29             : // refs in dirty files, so the merged index may return stale symbols
      30             : // and refs from Static index.
      31           0 : class MergedIndex : public SymbolIndex {
      32             :   const SymbolIndex *Dynamic, *Static;
      33             : 
      34             : public:
      35             :   // The constructor does not access the symbols.
      36             :   // It's safe to inherit from this class and pass pointers to derived members.
      37             :   MergedIndex(const SymbolIndex *Dynamic, const SymbolIndex *Static)
      38           0 :       : Dynamic(Dynamic), Static(Static) {}
      39             : 
      40             :   bool fuzzyFind(const FuzzyFindRequest &,
      41             :                  llvm::function_ref<void(const Symbol &)>) const override;
      42             :   void lookup(const LookupRequest &,
      43             :               llvm::function_ref<void(const Symbol &)>) const override;
      44             :   void refs(const RefsRequest &,
      45             :             llvm::function_ref<void(const Ref &)>) const override;
      46           0 :   size_t estimateMemoryUsage() const override {
      47           0 :     return Dynamic->estimateMemoryUsage() + Static->estimateMemoryUsage();
      48             :   }
      49             : };
      50             : 
      51             : } // namespace clangd
      52             : } // namespace clang
      53             : 
      54             : #endif // LLVM_CLANG_TOOLS_EXTRA_CLANGD_INDEX_MERGE_H

Generated by: LCOV version 1.13