clang-tools  12.0.0git
Public Member Functions | Static Public Member Functions | List of all members
clang::clangd::MemIndex Class Reference

MemIndex is a naive in-memory index suitable for a small set of symbols. More...

#include <MemIndex.h>

Inheritance diagram for clang::clangd::MemIndex:
Inheritance graph
[legend]
Collaboration diagram for clang::clangd::MemIndex:
Collaboration graph
[legend]

Public Member Functions

 MemIndex ()=default
 
template<typename SymbolRange , typename RefRange , typename RelationRange >
 MemIndex (SymbolRange &&Symbols, RefRange &&Refs, RelationRange &&Relations)
 
template<typename SymbolRange , typename RefRange , typename RelationRange , typename Payload >
 MemIndex (SymbolRange &&Symbols, RefRange &&Refs, RelationRange &&Relations, Payload &&BackingData, size_t BackingDataSize)
 
bool fuzzyFind (const FuzzyFindRequest &Req, llvm::function_ref< void(const Symbol &)> Callback) const override
 Matches symbols in the index fuzzily and applies Callback on each matched symbol before returning. More...
 
void lookup (const LookupRequest &Req, llvm::function_ref< void(const Symbol &)> Callback) const override
 Looks up symbols with any of the given symbol IDs and applies Callback on each matched symbol. More...
 
bool refs (const RefsRequest &Req, llvm::function_ref< void(const Ref &)> Callback) const override
 Finds all occurrences (e.g. More...
 
void relations (const RelationsRequest &Req, llvm::function_ref< void(const SymbolID &, const Symbol &)> Callback) const override
 
size_t estimateMemoryUsage () const override
 Returns estimated size of index (in bytes). More...
 
- Public Member Functions inherited from clang::clangd::SymbolIndex
virtual ~SymbolIndex ()=default
 
virtual void relations (const RelationsRequest &Req, llvm::function_ref< void(const SymbolID &Subject, const Symbol &Object)> Callback) const =0
 Finds all relations (S, P, O) stored in the index such that S is among Req.Subjects and P is Req.Predicate, and invokes Callback for (S, O) in each. More...
 

Static Public Member Functions

static std::unique_ptr< SymbolIndexbuild (SymbolSlab Symbols, RefSlab Refs, RelationSlab Relations)
 Builds an index from slabs. The index takes ownership of the data. More...
 

Detailed Description

MemIndex is a naive in-memory index suitable for a small set of symbols.

Definition at line 19 of file MemIndex.h.

Constructor & Destructor Documentation

◆ MemIndex() [1/3]

clang::clangd::MemIndex::MemIndex ( )
default

◆ MemIndex() [2/3]

template<typename SymbolRange , typename RefRange , typename RelationRange >
clang::clangd::MemIndex::MemIndex ( SymbolRange &&  Symbols,
RefRange &&  Refs,
RelationRange &&  Relations 
)
inline

Definition at line 24 of file MemIndex.h.

References Payload, and Symbols.

◆ MemIndex() [3/3]

template<typename SymbolRange , typename RefRange , typename RelationRange , typename Payload >
clang::clangd::MemIndex::MemIndex ( SymbolRange &&  Symbols,
RefRange &&  Refs,
RelationRange &&  Relations,
Payload &&  BackingData,
size_t  BackingDataSize 
)
inline

Definition at line 37 of file MemIndex.h.

References build(), estimateMemoryUsage(), fuzzyFind(), lookup(), refs(), relations(), and Symbols.

Member Function Documentation

◆ build()

std::unique_ptr< SymbolIndex > clang::clangd::MemIndex::build ( SymbolSlab  Symbols,
RefSlab  Refs,
RelationSlab  Relations 
)
static

Builds an index from slabs. The index takes ownership of the data.

Definition at line 19 of file MemIndex.cpp.

Referenced by clang::clangd::createIndex(), and MemIndex().

◆ estimateMemoryUsage()

size_t clang::clangd::MemIndex::estimateMemoryUsage ( ) const
overridevirtual

Returns estimated size of index (in bytes).

Implements clang::clangd::SymbolIndex.

Definition at line 112 of file MemIndex.cpp.

Referenced by MemIndex().

◆ fuzzyFind()

bool clang::clangd::MemIndex::fuzzyFind ( const FuzzyFindRequest Req,
llvm::function_ref< void(const Symbol &)>  Callback 
) const
overridevirtual

Matches symbols in the index fuzzily and applies Callback on each matched symbol before returning.

If returned Symbols are used outside Callback, they must be deep-copied!

Returns true if there may be more results (limited by Req.Limit).

Implements clang::clangd::SymbolIndex.

Definition at line 28 of file MemIndex.cpp.

References clang::clangd::FuzzyFindRequest::Limit, clang::clangd::FuzzyFindRequest::Query, and Tracer.

Referenced by MemIndex().

◆ lookup()

void clang::clangd::MemIndex::lookup ( const LookupRequest Req,
llvm::function_ref< void(const Symbol &)>  Callback 
) const
overridevirtual

Looks up symbols with any of the given symbol IDs and applies Callback on each matched symbol.

The returned symbol must be deep-copied if it's used outside Callback.

Implements clang::clangd::SymbolIndex.

Definition at line 60 of file MemIndex.cpp.

References ID, clang::clangd::LookupRequest::IDs, and Tracer.

Referenced by MemIndex(), and relations().

◆ refs()

bool clang::clangd::MemIndex::refs ( const RefsRequest Req,
llvm::function_ref< void(const Ref &)>  Callback 
) const
overridevirtual

Finds all occurrences (e.g.

references, declarations, definitions) of a symbol and applies Callback on each result.

Results should be returned in arbitrary order. The returned result must be deep-copied if it's used outside Callback.

Returns true if there will be more results (limited by Req.Limit);

Implements clang::clangd::SymbolIndex.

Definition at line 70 of file MemIndex.cpp.

References clang::clangd::RefsRequest::Filter, clang::clangd::RefsRequest::IDs, clang::clangd::RefsRequest::Limit, and Tracer.

Referenced by MemIndex().

◆ relations()

void clang::clangd::MemIndex::relations ( const RelationsRequest Req,
llvm::function_ref< void(const SymbolID &, const Symbol &)>  Callback 
) const
override

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