clang-tools 20.0.0git
Public Types | Public Member Functions | List of all members
clang::clangd::ProjectModules Class Referenceabstract

An interface to query the modules information in the project. More...

#include <ProjectModules.h>

Inheritance diagram for clang::clangd::ProjectModules:
Inheritance graph
[legend]

Public Types

using CommandMangler = llvm::unique_function< void(tooling::CompileCommand &, PathRef) const >
 

Public Member Functions

virtual std::vector< std::string > getRequiredModules (PathRef File)=0
 
virtual PathRef getSourceForModuleName (llvm::StringRef ModuleName, PathRef RequiredSrcFile=PathRef())=0
 
virtual void setCommandMangler (CommandMangler Mangler)
 
virtual ~ProjectModules ()=default
 

Detailed Description

An interface to query the modules information in the project.

Users should get instances of ProjectModules from GlobalCompilationDatabase::getProjectModules(PathRef).

Currently, the modules information includes:

Note that there can be multiple source files declaring the same module in a valid project. Although the language specification requires that every module unit's name must be unique in valid program, there can be multiple program in a project. And it is technically valid if these program doesn't interfere with each other.

A module name should be in the format: <primary-module-name>[:partition-name]. So module names covers partitions.

Definition at line 39 of file ProjectModules.h.

Member Typedef Documentation

◆ CommandMangler

using clang::clangd::ProjectModules::CommandMangler = llvm::unique_function<void(tooling::CompileCommand &, PathRef) const>

Definition at line 41 of file ProjectModules.h.

Constructor & Destructor Documentation

◆ ~ProjectModules()

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

Member Function Documentation

◆ getRequiredModules()

virtual std::vector< std::string > clang::clangd::ProjectModules::getRequiredModules ( PathRef  File)
pure virtual

◆ getSourceForModuleName()

virtual PathRef clang::clangd::ProjectModules::getSourceForModuleName ( llvm::StringRef  ModuleName,
PathRef  RequiredSrcFile = PathRef() 
)
pure virtual

◆ setCommandMangler()

virtual void clang::clangd::ProjectModules::setCommandMangler ( CommandMangler  Mangler)
inlinevirtual

Reimplemented in clang::clangd::ScanningAllProjectModules.

Definition at line 49 of file ProjectModules.h.


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