clang-tools 22.0.0git
clang::clangd::GlobalCompilationDatabase Class Referenceabstract

Provides compilation arguments used for parsing C and C++ files. More...

#include <GlobalCompilationDatabase.h>

Inheritance diagram for clang::clangd::GlobalCompilationDatabase:
[legend]

Public Types

using CommandChanged = Event<std::vector<std::string>>

Public Member Functions

virtual ~GlobalCompilationDatabase ()=default
virtual std::optional< tooling::CompileCommand > getCompileCommand (PathRef File) const =0
 If there are any known-good commands for building this file, returns one.
virtual std::optional< ProjectInfogetProjectInfo (PathRef File) const
 Finds the closest project to File.
virtual std::unique_ptr< ProjectModulesgetProjectModules (PathRef File) const
 Get the modules in the closest project to File.
virtual tooling::CompileCommand getFallbackCommand (PathRef File) const
 Makes a guess at how to build a file.
virtual bool blockUntilIdle (Deadline D) const
 If the CDB does any asynchronous work, wait for it to complete.
CommandChanged::Subscription watch (CommandChanged::Listener L) const
 The callback is notified when files may have new compile commands.

Protected Attributes

CommandChanged OnCommandChanged

Detailed Description

Provides compilation arguments used for parsing C and C++ files.

Definition at line 36 of file GlobalCompilationDatabase.h.

Member Typedef Documentation

◆ CommandChanged

Definition at line 64 of file GlobalCompilationDatabase.h.

Constructor & Destructor Documentation

◆ ~GlobalCompilationDatabase()

virtual clang::clangd::GlobalCompilationDatabase::~GlobalCompilationDatabase ( )
virtualdefault

Member Function Documentation

◆ blockUntilIdle()

virtual bool clang::clangd::GlobalCompilationDatabase::blockUntilIdle ( Deadline D) const
inlinevirtual

If the CDB does any asynchronous work, wait for it to complete.

For use in tests.

Reimplemented in clang::clangd::DelegatingCDB, and clang::clangd::DirectoryBasedGlobalCompilationDatabase.

Definition at line 62 of file GlobalCompilationDatabase.h.

◆ getCompileCommand()

virtual std::optional< tooling::CompileCommand > clang::clangd::GlobalCompilationDatabase::getCompileCommand ( PathRef File) const
pure virtual

If there are any known-good commands for building this file, returns one.

Implemented in clang::clangd::DelegatingCDB, clang::clangd::DirectoryBasedGlobalCompilationDatabase, clang::clangd::MockCompilationDatabase, and clang::clangd::OverlayCDB.

References clang::clangd::File.

◆ getFallbackCommand()

tooling::CompileCommand clang::clangd::GlobalCompilationDatabase::getFallbackCommand ( PathRef File) const
virtual

Makes a guess at how to build a file.

The default implementation just runs clang on the file. Clangd should treat the results as unreliable.

Reimplemented in clang::clangd::DelegatingCDB, and clang::clangd::OverlayCDB.

Definition at line 58 of file GlobalCompilationDatabase.cpp.

References clang::clangd::File.

Referenced by clang::clangd::DelegatingCDB::getFallbackCommand().

◆ getProjectInfo()

virtual std::optional< ProjectInfo > clang::clangd::GlobalCompilationDatabase::getProjectInfo ( PathRef File) const
inlinevirtual

◆ getProjectModules()

virtual std::unique_ptr< ProjectModules > clang::clangd::GlobalCompilationDatabase::getProjectModules ( PathRef File) const
inlinevirtual

Get the modules in the closest project to File.

Reimplemented in clang::clangd::DelegatingCDB, clang::clangd::DirectoryBasedGlobalCompilationDatabase, and clang::clangd::OverlayCDB.

Definition at line 51 of file GlobalCompilationDatabase.h.

References clang::clangd::File.

◆ watch()

CommandChanged::Subscription clang::clangd::GlobalCompilationDatabase::watch ( CommandChanged::Listener L) const
inline

The callback is notified when files may have new compile commands.

The argument is a list of full file paths.

Definition at line 67 of file GlobalCompilationDatabase.h.

References OnCommandChanged.

Member Data Documentation

◆ OnCommandChanged

CommandChanged clang::clangd::GlobalCompilationDatabase::OnCommandChanged
mutableprotected

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