clang-tools 8.0.0

Public Member Functions | List of all members
clang::clangd::FileSymbols Class Reference

A container of Symbols from several source files. More...

`#include <FileIndex.h>`

## Public Member Functions
void | update (PathRef Path, std::unique_ptr< SymbolSlab > Slab, std::unique_ptr< RefSlab > Refs)
| Updates all symbols and refs in a file. More...
std::unique_ptr< SymbolIndex > | buildIndex (IndexType, DuplicateHandling DuplicateHandle=DuplicateHandling::PickOne)

## Detailed Description

A container of Symbols from several source files.

It can be updated at source-file granularity, replacing all symbols from one file with a new set.

This implements a snapshot semantics for symbols in a file. Each update to a file will create a new snapshot for all symbols in the file. Snapshots are managed with shared pointers that are shared between this class and the users. For each file, this class only stores a pointer pointing to the newest snapshot, and an outdated snapshot is deleted by the last owner of the snapshot, either this class or the symbol index.

The snapshot semantics keeps critical sections minimal since we only need locking when we swap or obtain references to snapshots.

Definition at line 58 of file FileIndex.h.

## Member Function Documentation

## ◆ buildIndex()

std::unique_ptr< SymbolIndex > clang::clangd::FileSymbols::buildIndex | ( | IndexType | Type,
|  | DuplicateHandling | DuplicateHandle = `DuplicateHandling::PickOne`
| ) |  |

Definition at line 104 of file FileIndex.cpp.

References clang::clangd::RefSlab::bytes(), clang::clangd::Heavy, clang::clangd::Light, clang::clangd::Merge, clang::clangd::mergeSymbol(), and clang::clangd::PickOne.

Referenced by clang::clangd::FileIndex::updateMain().

## ◆ update()

void clang::clangd::FileSymbols::update | ( | PathRef | Path,
|  | std::unique_ptr< SymbolSlab > | Slab,
|  | std::unique_ptr< RefSlab > | Refs
| ) |  |

Updates all symbols and refs in a file.

If either is nullptr, corresponding data for `Path` will be removed.

Definition at line 90 of file FileIndex.cpp.

Referenced by clang::clangd::FileIndex::updateMain().

The documentation for this class was generated from the following files:

- FileIndex.h
- FileIndex.cpp