clang-tools 22.0.0git
clang::clangd::DirectoryBasedGlobalCompilationDatabase Class Reference

Gets compile args from tooling::CompilationDatabases built for parent directories. More...

#include <GlobalCompilationDatabase.h>

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

Classes

class  BroadcastThread
class  DirectoryCache
struct  Options

Public Member Functions

 DirectoryBasedGlobalCompilationDatabase (const Options &Opts)
 ~DirectoryBasedGlobalCompilationDatabase () override
std::optional< tooling::CompileCommand > getCompileCommand (PathRef File) const override
 Scans File's parents looking for compilation databases.
std::optional< ProjectInfogetProjectInfo (PathRef File) const override
 Returns the path to first directory containing a compilation database in File's parents.
std::unique_ptr< ProjectModulesgetProjectModules (PathRef File) const override
 Get the modules in the closest project to File.
bool blockUntilIdle (Deadline Timeout) const override
 If the CDB does any asynchronous work, wait for it to complete.
Public Member Functions inherited from clang::clangd::GlobalCompilationDatabase
virtual ~GlobalCompilationDatabase ()=default
virtual tooling::CompileCommand getFallbackCommand (PathRef File) const
 Makes a guess at how to build a file.
CommandChanged::Subscription watch (CommandChanged::Listener L) const
 The callback is notified when files may have new compile commands.

Friends

class DirectoryBasedGlobalCompilationDatabaseCacheTest

Additional Inherited Members

Public Types inherited from clang::clangd::GlobalCompilationDatabase
using CommandChanged = Event<std::vector<std::string>>
Protected Attributes inherited from clang::clangd::GlobalCompilationDatabase
CommandChanged OnCommandChanged

Detailed Description

Gets compile args from tooling::CompilationDatabases built for parent directories.

Definition at line 101 of file GlobalCompilationDatabase.h.

Constructor & Destructor Documentation

◆ DirectoryBasedGlobalCompilationDatabase()

◆ ~DirectoryBasedGlobalCompilationDatabase()

clang::clangd::DirectoryBasedGlobalCompilationDatabase::~DirectoryBasedGlobalCompilationDatabase ( )
overridedefault

References clang::clangd::File.

Member Function Documentation

◆ blockUntilIdle()

bool clang::clangd::DirectoryBasedGlobalCompilationDatabase::blockUntilIdle ( Deadline D) const
overridevirtual

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

For use in tests.

Reimplemented from clang::clangd::GlobalCompilationDatabase.

Definition at line 728 of file GlobalCompilationDatabase.cpp.

◆ getCompileCommand()

std::optional< tooling::CompileCommand > clang::clangd::DirectoryBasedGlobalCompilationDatabase::getCompileCommand ( PathRef File) const
overridevirtual

Scans File's parents looking for compilation databases.

Any extra flags will be added. Might trigger OnCommandChanged, if CDB wasn't broadcasted yet.

Implements clang::clangd::GlobalCompilationDatabase.

Definition at line 363 of file GlobalCompilationDatabase.cpp.

References clang::clangd::File, and clang::clangd::log().

◆ getProjectInfo()

std::optional< ProjectInfo > clang::clangd::DirectoryBasedGlobalCompilationDatabase::getProjectInfo ( PathRef File) const
overridevirtual

Returns the path to first directory containing a compilation database in File's parents.

Reimplemented from clang::clangd::GlobalCompilationDatabase.

Definition at line 734 of file GlobalCompilationDatabase.cpp.

References clang::clangd::File.

◆ getProjectModules()

std::unique_ptr< ProjectModules > clang::clangd::DirectoryBasedGlobalCompilationDatabase::getProjectModules ( PathRef File) const
overridevirtual

Get the modules in the closest project to File.

Reimplemented from clang::clangd::GlobalCompilationDatabase.

Definition at line 747 of file GlobalCompilationDatabase.cpp.

References clang::clangd::File, and clang::clangd::scanningProjectModules().

◆ DirectoryBasedGlobalCompilationDatabaseCacheTest


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