clang 23.0.0git
clang::ModuleFileName Class Reference

Identifies a module file to be loaded. More...

#include "clang/Basic/Module.h"

Public Member Functions

 ModuleFileName ()=default
 Creates an empty module file name.
unsigned getImplicitModuleSuffixLength () const
 Returns the suffix length for an implicit module name, zero otherwise.
StringRef str () const
 Returns the plain module file name.
 operator StringRef () const
 Converts to StringRef representing the plain module file name.
bool empty () const
 Checks whether the module file name is empty.
std::optional< ModuleFileKeymakeKey (FileManager &FileMgr) const
 Creates the deduplication key for use in ModuleManager.

Static Public Member Functions

static ModuleFileName makeExplicit (std::string Name)
 Creates a file name for an explicit module.
static ModuleFileName makeExplicit (StringRef Name)
 Creates a file name for an explicit module.
static ModuleFileName makeImplicit (std::string Name, unsigned SuffixLength)
 Creates a file name for an implicit module.
static ModuleFileName makeImplicit (StringRef Name, unsigned SuffixLength)
 Creates a file name for an implicit module.

Detailed Description

Identifies a module file to be loaded.

For implicitly-built module files, the path is split into the module cache path and the module file name with the (optional) context hash. For all other types of module files, this is just the file system path.

Definition at line 107 of file Module.h.

Constructor & Destructor Documentation

◆ ModuleFileName()

clang::ModuleFileName::ModuleFileName ( )
default

Creates an empty module file name.

Referenced by makeExplicit(), makeExplicit(), makeImplicit(), and makeImplicit().

Member Function Documentation

◆ empty()

bool clang::ModuleFileName::empty ( ) const
inline

Checks whether the module file name is empty.

Definition at line 155 of file Module.h.

Referenced by selectModuleSource().

◆ getImplicitModuleSuffixLength()

unsigned clang::ModuleFileName::getImplicitModuleSuffixLength ( ) const
inline

Returns the suffix length for an implicit module name, zero otherwise.

Definition at line 144 of file Module.h.

◆ makeExplicit() [1/2]

◆ makeExplicit() [2/2]

ModuleFileName clang::ModuleFileName::makeExplicit ( StringRef Name)
inlinestatic

Creates a file name for an explicit module.

Definition at line 123 of file Module.h.

References makeExplicit(), and ModuleFileName().

◆ makeImplicit() [1/2]

ModuleFileName clang::ModuleFileName::makeImplicit ( std::string Name,
unsigned SuffixLength )
inlinestatic

Creates a file name for an implicit module.

Definition at line 128 of file Module.h.

References clang::File, and ModuleFileName().

Referenced by makeImplicit().

◆ makeImplicit() [2/2]

ModuleFileName clang::ModuleFileName::makeImplicit ( StringRef Name,
unsigned SuffixLength )
inlinestatic

Creates a file name for an implicit module.

Definition at line 139 of file Module.h.

References makeImplicit(), and ModuleFileName().

◆ makeKey()

std::optional< ModuleFileKey > ModuleFileName::makeKey ( FileManager & FileMgr) const

Creates the deduplication key for use in ModuleManager.

Returns an empty optional if:

  • the module cache does not exist for an implicit module name,
  • the module file does not exist for an explicit module name.

Definition at line 37 of file Module.cpp.

Referenced by clang::serialization::ModuleManager::lookupByFileName().

◆ operator StringRef()

clang::ModuleFileName::operator StringRef ( ) const
inline

Converts to StringRef representing the plain module file name.

Definition at line 152 of file Module.h.

◆ str()

StringRef clang::ModuleFileName::str ( ) const
inline

Returns the plain module file name.

Definition at line 149 of file Module.h.


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