clang-tools 24.0.0git
clang::clangd::ModulesBuilder::ModulesBuilderImpl Class Reference

Public Member Functions

 ModulesBuilderImpl (const GlobalCompilationDatabase &CDB)
ModuleNameToSourceCache & getProjectModulesCache ()
const ObservedModuleFiles & getObservedFiles () const
const GlobalCompilationDatabasegetCDB () const
bool observeSourcePath (PathRef File)
bool onFileEvent (const FileEvent &Event)
llvm::Error getOrBuildModuleFile (PathRef RequiredSource, StringRef ModuleName, const ThreadsafeFS &TFS, CachingProjectModules &MDB, ReusablePrerequisiteModules &BuiltModuleFiles)

Detailed Description

Definition at line 1098 of file ModulesBuilder.cpp.

Constructor & Destructor Documentation

◆ ModulesBuilderImpl()

clang::clangd::ModulesBuilder::ModulesBuilderImpl::ModulesBuilderImpl ( const GlobalCompilationDatabase & CDB)
inline

Definition at line 1100 of file ModulesBuilder.cpp.

Member Function Documentation

◆ getCDB()

const GlobalCompilationDatabase & clang::clangd::ModulesBuilder::ModulesBuilderImpl::getCDB ( ) const
inline

Definition at line 1107 of file ModulesBuilder.cpp.

Referenced by getOrBuildModuleFile().

◆ getObservedFiles()

const ObservedModuleFiles & clang::clangd::ModulesBuilder::ModulesBuilderImpl::getObservedFiles ( ) const
inline

Definition at line 1106 of file ModulesBuilder.cpp.

◆ getOrBuildModuleFile()

llvm::Error clang::clangd::ModulesBuilder::ModulesBuilderImpl::getOrBuildModuleFile ( PathRef RequiredSource,
StringRef ModuleName,
const ThreadsafeFS & TFS,
CachingProjectModules & MDB,
ReusablePrerequisiteModules & BuiltModuleFiles )

It is possible that we're meeting third party modules (modules whose source are not in the project. e.g, the std module may be a third-party module for most project) or something wrong with the implementation of ProjectModules. FIXME: How should we treat third party modules here? If we want to ignore third party modules, we should return true instead of false here. Currently we simply bail out.

Try to get prebuilt module files from the compilation database first. This helps to avoid building the module files that are already built by the compiler.

Definition at line 1218 of file ModulesBuilder.cpp.

References getCDB(), clang::clangd::log(), and clang::clangd::ThreadsafeFS::view().

◆ getProjectModulesCache()

ModuleNameToSourceCache & clang::clangd::ModulesBuilder::ModulesBuilderImpl::getProjectModulesCache ( )
inline

Definition at line 1103 of file ModulesBuilder.cpp.

◆ observeSourcePath()

bool clang::clangd::ModulesBuilder::ModulesBuilderImpl::observeSourcePath ( PathRef File)
inline

Definition at line 1109 of file ModulesBuilder.cpp.

References clang::clangd::File.

◆ onFileEvent()

bool clang::clangd::ModulesBuilder::ModulesBuilderImpl::onFileEvent ( const FileEvent & Event)
inline

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