clang-tools  10.0.0svn
Public Member Functions | List of all members
clang::clangd::CanonicalIncludes Class Reference

Maps a definition location onto an #include file, based on a set of filename rules. More...

#include <CanonicalIncludes.h>

Public Member Functions

void addMapping (llvm::StringRef Path, llvm::StringRef CanonicalPath)
 Adds a string-to-string mapping from Path to CanonicalPath. More...
 
llvm::StringRef mapHeader (llvm::StringRef Header, llvm::StringRef QualifiedName) const
 Returns the canonical include for symbol with QualifiedName. More...
 
void addSystemHeadersMapping (const LangOptions &Language)
 Adds mapping for system headers and some special symbols (e.g. More...
 

Detailed Description

Maps a definition location onto an #include file, based on a set of filename rules.

Only const methods (i.e. mapHeader) in this class are thread safe.

Definition at line 36 of file CanonicalIncludes.h.

Member Function Documentation

◆ addMapping()

void clang::clangd::CanonicalIncludes::addMapping ( llvm::StringRef  Path,
llvm::StringRef  CanonicalPath 
)

Adds a string-to-string mapping from Path to CanonicalPath.

Definition at line 22 of file CanonicalIncludes.cpp.

◆ addSystemHeadersMapping()

void clang::clangd::CanonicalIncludes::addSystemHeadersMapping ( const LangOptions &  Language)

Adds mapping for system headers and some special symbols (e.g.

STL symbols in <iosfwd> need to be mapped individually). Approximately, the following system headers are handled:

  • C++ standard library e.g. bits/basic_string.h$ -> <string>
  • Posix library e.g. bits/pthreadtypes.h$ -> <pthread.h>
  • Compiler extensions, e.g. include/avx512bwintrin.h$ -> <immintrin.h> The mapping is hardcoded and hand-maintained, so it might not cover all headers.

Definition at line 88 of file CanonicalIncludes.cpp.

References clang::clangd::MaxSuffixComponents, and Symbols.

◆ mapHeader()

llvm::StringRef clang::clangd::CanonicalIncludes::mapHeader ( llvm::StringRef  Header,
llvm::StringRef  QualifiedName 
) const

Returns the canonical include for symbol with QualifiedName.

Header is the file the declaration was reachable from. Header itself will be returned if there is no relevant mapping.

Definition at line 32 of file CanonicalIncludes.cpp.


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