clang: clang::Module Class Reference (original) (raw)

Describes a module or submodule. More...

#include "[clang/Basic/Module.h](Module%5F8h%5Fsource.html)"

Classes
struct Conflict
A conflict between two modules. More...
struct DirectoryName
Information about a directory name as found in the module map file. More...
struct Header
Information about a header directive as found in the module map file. More...
struct LinkLibrary
A library or framework to link against when an entity from this module is used. More...
struct Requirement
struct UnresolvedConflict
An unresolved conflict with another module. More...
struct UnresolvedExportDecl
Describes an exported module that has not yet been resolved (perhaps because the module it refers to has not yet been loaded). More...
struct UnresolvedHeaderDirective
Stored information about a header directive that was found in the module map file but has not been resolved to a file. More...
Public Types
enum ModuleKind { ModuleMapModule, ModuleHeaderUnit, ModuleInterfaceUnit, ModuleImplementationUnit, ModulePartitionInterface, ModulePartitionImplementation, ExplicitGlobalModuleFragment, PrivateModuleFragment, ImplicitGlobalModuleFragment }
enum HeaderKind { HK_Normal, HK_Textual, HK_Private, HK_PrivateTextual, HK_Excluded }
enum NameVisibilityKind { Hidden, AllVisible }
Describes the visibility of the various names within a particular module. More...
using ExportDecl = llvm::PointerIntPair< Module *, 1, bool >
Describes an exported module.
using submodule_iterator = std::vector< Module * >::iterator
using submodule_const_iterator = std::vector< Module * >::const_iterator
Public Member Functions
bool isNamedModule () const
Does this Module is a named module of a standard named module?
bool isGlobalModule () const
Does this Module scope describe a fragment of the global module within some C++ module.
bool isExplicitGlobalModule () const
bool isImplicitGlobalModule () const
bool isPrivateModule () const
bool isModuleMapModule () const
ArrayRef< Header > getAllHeaders () const
ArrayRef< Header > getHeaders (HeaderKind HK) const
void addHeader (HeaderKind HK, Header H)
Module (ModuleConstructorTag, StringRef Name, SourceLocation DefinitionLoc, Module *Parent, bool IsFramework, bool IsExplicit, unsigned VisibilityID)
Construct a new module or submodule.
~Module ()
bool isUnimportable () const
Determine whether this module has been declared unimportable.
bool isUnimportable (const LangOptions &LangOpts, const TargetInfo &Target, Requirement &Req, Module *&ShadowingModule) const
Determine whether this module has been declared unimportable.
bool isForBuilding (const LangOptions &LangOpts) const
Determine whether this module can be built in this compilation.
bool isAvailable () const
Determine whether this module is available for use within the current translation unit.
bool isAvailable (const LangOptions &LangOpts, const TargetInfo &Target, Requirement &Req, UnresolvedHeaderDirective &MissingHeader, Module *&ShadowingModule) const
Determine whether this module is available for use within the current translation unit.
bool isSubModule () const
Determine whether this module is a submodule.
bool isSubModuleOf (const Module *Other) const
Check if this module is a (possibly transitive) submodule of Other.
bool isPartOfFramework () const
Determine whether this module is a part of a framework, either because it is a framework module or because it is a submodule of a framework module.
bool isSubFramework () const
Determine whether this module is a subframework of another framework.
void setParent (Module *M)
Set the parent of this module.
bool isHeaderLikeModule () const
Is this module have similar semantics as headers.
bool isModulePartition () const
Is this a module partition.
bool isModulePartitionImplementation () const
Is this a module partition implementation unit.
bool isModuleImplementation () const
Is this a module implementation.
bool isHeaderUnit () const
Is this module a header unit.
bool isInterfaceOrPartition () const
bool isNamedModuleUnit () const
Is this a C++20 named module unit.
bool isModuleInterfaceUnit () const
bool isNamedModuleInterfaceHasInit () const
StringRef getPrimaryModuleInterfaceName () const
Get the primary module interface name from a partition.
std::string getFullModuleName (bool AllowStringLiterals=false) const
Retrieve the full name of this module, including the path from its top-level module.
bool fullModuleNameIs (ArrayRef< StringRef > nameParts) const
Whether the full name of this module is equal to joining nameParts with "."s.
Module * getTopLevelModule ()
Retrieve the top-level module for this (sub)module, which may be this module.
const Module * getTopLevelModule () const
Retrieve the top-level module for this (sub)module, which may be this module.
StringRef getTopLevelModuleName () const
Retrieve the name of the top-level module.
OptionalFileEntryRef getASTFile () const
The serialized AST file for this module, if one was created.
void setASTFile (OptionalFileEntryRef File)
Set the serialized AST file for the top-level module of this module.
std::optional< DirectoryName > getUmbrellaDirAsWritten () const
Retrieve the umbrella directory as written.
std::optional< Header > getUmbrellaHeaderAsWritten () const
Retrieve the umbrella header as written.
OptionalDirectoryEntryRef getEffectiveUmbrellaDir () const
Get the effective umbrella directory for this module: either the one explicitly written in the module map file, or the parent of the umbrella header.
void addTopHeader (FileEntryRef File)
Add a top-level header associated with this module.
void addTopHeaderFilename (StringRef Filename)
Add a top-level header filename associated with this module.
ArrayRef< FileEntryRef > getTopHeaders (FileManager &FileMgr)
The top-level headers associated with this module.
bool directlyUses (const Module *Requested)
Determine whether this module has declared its intention to directly use another module.
void addRequirement (StringRef Feature, bool RequiredState, const LangOptions &LangOpts, const TargetInfo &Target)
Add the given feature requirement to the list of features required by this module.
void markUnavailable (bool Unimportable)
Mark this module and all of its submodules as unavailable.
Module * findSubmodule (StringRef Name) const
Find the submodule with the given name.
Module * getGlobalModuleFragment () const
Get the Global Module Fragment (sub-module) for this module, it there is one.
Module * getPrivateModuleFragment () const
Get the Private Module Fragment (sub-module) for this module, it there is one.
bool isModuleVisible (const Module *M) const
Determine whether the specified module would be visible to a lookup at the end of this module.
unsigned getVisibilityID () const
llvm::iterator_range< submodule_iterator > submodules ()
llvm::iterator_range< submodule_const_iterator > submodules () const
void getExportedModules (SmallVectorImpl< Module * > &Exported) const
Appends this module's list of exported modules to Exported.
void print (raw_ostream &OS, unsigned Indent=0, bool Dump=false) const
Print the module map for this module to the given stream.
void dump () const
Dump the contents of this module to the given output stream.
Public Attributes
std::string Name
The name of this module.
SourceLocation DefinitionLoc
The location of the module definition.
ModuleKind Kind = ModuleMapModule
The kind of this module.
Module * Parent
The parent of this module.
OptionalDirectoryEntryRef Directory
The build directory of this module.
std::string PresumedModuleMapFile
The presumed file name for the module map defining this module.
std::variant< std::monostate, FileEntryRef, DirectoryEntryRef > Umbrella
The umbrella header or directory.
ASTFileSignature Signature
The module signature.
std::string UmbrellaAsWritten
The name of the umbrella entry, as written in the module map.
std::string UmbrellaRelativeToRootModuleDirectory
std::string ExportAsModule
The module through which entities defined in this module will eventually be exposed, for use in "private" modules.
std::string APINotesFile
For the debug info, the path to this module's .apinotes file, if any.
SmallVector< UnresolvedHeaderDirective, 1 > UnresolvedHeaders
Headers that are mentioned in the module map file but that we have not yet attempted to resolve to a file on the file system.
SmallVector< UnresolvedHeaderDirective, 1 > MissingHeaders
Headers that are mentioned in the module map file but could not be found on the file system.
SmallVector< Requirement, 2 > Requirements
The set of language features required to use this module.
Module * ShadowingModule = nullptr
A module with the same name that shadows this module.
unsigned IsUnimportable: 1
Whether this module has declared itself unimportable, either because it's missing a requirement from Requirements or because it's been shadowed by another module.
unsigned HasIncompatibleModuleFile: 1
Whether we tried and failed to load a module file for this module.
unsigned IsAvailable: 1
Whether this module is available in the current translation unit.
unsigned IsFromModuleFile: 1
Whether this module was loaded from a module file.
unsigned IsFramework: 1
Whether this is a framework module.
unsigned IsExplicit: 1
Whether this is an explicit submodule.
unsigned IsSystem: 1
Whether this is a "system" module (which assumes that all headers in it are system headers).
unsigned IsExternC: 1
Whether this is an 'extern "C"' module (which implicitly puts all headers in it within an 'extern "C"' block, and allows the module to be imported within such a block).
unsigned IsInferred: 1
Whether this is an inferred submodule (module * { ... }).
unsigned InferSubmodules: 1
Whether we should infer submodules for this module based on the headers.
unsigned InferExplicitSubmodules: 1
Whether, when inferring submodules, the inferred submodules should be explicit.
unsigned InferExportWildcard: 1
Whether, when inferring submodules, the inferr submodules should export all modules they import (e.g., the equivalent of "export *").
unsigned ConfigMacrosExhaustive: 1
Whether the set of configuration macros is exhaustive.
unsigned NoUndeclaredIncludes: 1
Whether files in this module can only include non-modular headers and headers from used modules.
unsigned ModuleMapIsPrivate: 1
Whether this module came from a "private" module map, found next to a regular (public) module map.
unsigned NamedModuleHasInit: 1
Whether this C++20 named modules doesn't need an initializer.
NameVisibilityKind NameVisibility
The visibility of names within this particular module.
SourceLocation InferredSubmoduleLoc
The location of the inferred submodule.
llvm::SmallSetVector< Module *, 2 > Imports
The set of modules imported by this module, and on which this module depends.
llvm::SmallSetVector< Module *, 2 > AffectingClangModules
The set of top-level modules that affected the compilation of this module, but were not imported.
SmallVector< ExportDecl, 2 > Exports
The set of export declarations.
SmallVector< UnresolvedExportDecl, 2 > UnresolvedExports
The set of export declarations that have yet to be resolved.
SmallVector< Module *, 2 > DirectUses
The directly used modules.
SmallVector< ModuleId, 2 > UnresolvedDirectUses
The set of use declarations that have yet to be resolved.
llvm::SmallSetVector< const Module *, 2 > UndeclaredUses
When NoUndeclaredIncludes is true, the set of modules this module tried to import but didn't because they are not direct uses.
llvm::SmallVector< LinkLibrary, 2 > LinkLibraries
The set of libraries or frameworks to link against when an entity from this module is used.
bool UseExportAsModuleLinkName = false
Autolinking uses the framework name for linking purposes when this is false and the export_as name otherwise.
std::vector< std::string > ConfigMacros
The set of "configuration macros", which are macros that (intentionally) change how this module is built.
std::vector< UnresolvedConflict > UnresolvedConflicts
The list of conflicts for which the module-id has not yet been resolved.
std::vector< Conflict > Conflicts
The list of conflicts.

Describes a module or submodule.

Aligned to 8 bytes to allow for llvm::PointerIntPair<Module *, 3>.

Definition at line 115 of file Module.h.

ExportDecl

Describes an exported module.

The pointer is the module being re-exported, while the bit will be true to indicate that this is a wildcard export.

Definition at line 439 of file Module.h.

submodule_const_iterator

submodule_iterator

HeaderKind

Enumerator
HK_Normal
HK_Textual
HK_Private
HK_PrivateTextual
HK_Excluded

Definition at line 249 of file Module.h.

ModuleKind

Enumerator
ModuleMapModule This is a module that was defined by a module map and built out of header files.
ModuleHeaderUnit This is a C++20 header unit.
ModuleInterfaceUnit This is a C++20 module interface unit.
ModuleImplementationUnit This is a C++20 module implementation unit.
ModulePartitionInterface This is a C++20 module partition interface.
ModulePartitionImplementation This is a C++20 module partition implementation.
ExplicitGlobalModuleFragment This is the explicit Global Module Fragment of a modular TU. As per C++ [module.global.frag].
PrivateModuleFragment This is the private module fragment within some C++ module.
ImplicitGlobalModuleFragment This is an implicit fragment of the global module which contains only language linkage declarations (made in the purview of the named module).

Definition at line 126 of file Module.h.

NameVisibilityKind

Describes the visibility of the various names within a particular module.

Enumerator
Hidden All of the names in this module are hidden.
AllVisible All of the names in this module are visible.

Definition at line 414 of file Module.h.

~Module()

Module::~Module ( ) default

addHeader()

addRequirement()

void Module::addRequirement ( StringRef Feature,
bool RequiredState,
const LangOptions & LangOpts,
const TargetInfo & Target
)

Add the given feature requirement to the list of features required by this module.

Parameters

Feature The feature that is required by this module (and its submodules).
RequiredState The required state of this feature: true if it must be present, false if it must be absent.
LangOpts The set of language options that will be used to evaluate the availability of this feature.
Target The target options that will be used to evaluate the availability of this feature.

Definition at line 314 of file Module.cpp.

References hasFeature(), markUnavailable(), and Requirements.

addTopHeader()

addTopHeaderFilename()

void clang::Module::addTopHeaderFilename ( StringRef Filename) inline

Add a top-level header filename associated with this module.

Definition at line 743 of file Module.h.

References Filename.

directlyUses()

bool Module::directlyUses ( const Module * Requested )

dump()

LLVM_DUMP_METHOD void Module::dump ( ) const

findSubmodule()

Module * Module::findSubmodule ( StringRef Name ) const

fullModuleNameIs()

bool Module::fullModuleNameIs ( ArrayRef< StringRef > nameParts ) const

getAllHeaders()

getASTFile()

getEffectiveUmbrellaDir()

getExportedModules()

getFullModuleName()

std::string Module::getFullModuleName ( bool AllowStringLiterals = false ) const

Retrieve the full name of this module, including the path from its top-level module.

Parameters

AllowStringLiterals If true, components that might not be lexically valid as identifiers will be emitted as string literals.

Definition at line 240 of file Module.cpp.

References Parent, printModuleId(), and clang::Result.

Referenced by clang::Sema::ActOnModuleImport(), checkConfigMacro(), checkModuleImportContext(), clang::Preprocessor::checkModuleIsAvailable(), clang::Sema::CheckRedeclarationModuleOwnership(), clang::Sema::CheckTemplateParameterList(), clang::Sema::diagnoseEquivalentInternalLinkageDeclarations(), clang::ModuleMap::diagnoseHeaderInclusion(), clang::Sema::diagnoseMissingImport(), getInputBufferForModule(), clang::CompilerInstance::loadModule(), clang::Sema::notePreviousDefinition(), and PrintPreprocessedTokens().

getGlobalModuleFragment()

Module * Module::getGlobalModuleFragment ( ) const

Get the Global Module Fragment (sub-module) for this module, it there is one.

Returns

The GMF sub-module if found, or NULL otherwise.

Definition at line 363 of file Module.cpp.

References isNamedModuleUnit().

getHeaders()

getModuleInputBufferName()

static StringRef clang::Module::getModuleInputBufferName ( ) inlinestatic

getPrimaryModuleInterfaceName()

StringRef clang::Module::getPrimaryModuleInterfaceName ( ) const inline

getPrivateModuleFragment()

Module * Module::getPrivateModuleFragment ( ) const

Get the Private Module Fragment (sub-module) for this module, it there is one.

Returns

The PMF sub-module if found, or NULL otherwise.

Definition at line 374 of file Module.cpp.

References isNamedModuleUnit().

getTopHeaders()

getTopLevelModule() [1/2]

Module * clang::Module::getTopLevelModule ( ) inline

Retrieve the top-level module for this (sub)module, which may be this module.

Definition at line 693 of file Module.h.

References getTopLevelModule().

Referenced by checkConfigMacros(), clang::ASTDeclReader::checkMultipleDefinitionInNamedModules(), clang::ModuleMap::diagnoseHeaderInclusion(), clang::Sema::diagnoseMissingImport(), directlyUses(), clang::ModuleMap::findModuleForHeader(), getASTFile(), clang::api_notes::APINotesManager::getCurrentModuleAPINotes(), clang::ASTWriter::GetDeclRef(), clang::ASTWriter::getLocalOrImportedSubmoduleID(), getTopLevelModule(), getTopLevelModuleName(), getTopLevelOrNull(), clang::Decl::getTopLevelOwningNamedModule(), clang::ModuleMap::KnownHeader::isAccessibleFrom(), isForBuilding(), clang::Sema::isModuleVisible(), clang::Sema::IsRedefinitionInModule(), clang::CompilerInstance::loadModule(), clang::ModuleMap::resolveUses(), and setASTFile().

getTopLevelModule() [2/2]

const Module * Module::getTopLevelModule ( ) const

Retrieve the top-level module for this (sub)module, which may be this module.

Definition at line 202 of file Module.cpp.

References clang::Result.

getTopLevelModuleName()

StringRef clang::Module::getTopLevelModuleName ( ) const inline

getUmbrellaDirAsWritten()

std::optional< DirectoryName > clang::Module::getUmbrellaDirAsWritten ( ) const inline

getUmbrellaHeaderAsWritten()

std::optional< Header > clang::Module::getUmbrellaHeaderAsWritten ( ) const inline

getVisibilityID()

unsigned clang::Module::getVisibilityID ( ) const inline

isAvailable() [1/2]

bool clang::Module::isAvailable ( ) const inline

isAvailable() [2/2]

Determine whether this module is available for use within the current translation unit.

Parameters

LangOpts The language options used for the current translation unit.
Target The target options used for the current translation unit.
Req If this module is unavailable because of a missing requirement, this parameter will be set to one of the requirements that is not met for use of this module.
MissingHeader If this module is unavailable because of a missing header, this parameter will be set to one of the missing headers.
ShadowingModule If this module is unavailable because it is shadowed, this parameter will be set to the shadowing module.

Definition at line 172 of file Module.cpp.

References IsAvailable, isUnimportable(), and ShadowingModule.

isExplicitGlobalModule()

bool clang::Module::isExplicitGlobalModule ( ) const inline

isForBuilding()

isGlobalModule()

bool clang::Module::isGlobalModule ( ) const inline

isHeaderLikeModule()

bool clang::Module::isHeaderLikeModule ( ) const inline

isHeaderUnit()

bool clang::Module::isHeaderUnit ( ) const inline

isImplicitGlobalModule()

bool clang::Module::isImplicitGlobalModule ( ) const inline

isInterfaceOrPartition()

bool clang::Module::isInterfaceOrPartition ( ) const inline

isModuleImplementation()

bool clang::Module::isModuleImplementation ( ) const inline

isModuleInterfaceUnit()

bool clang::Module::isModuleInterfaceUnit ( ) const inline

isModuleMapModule()

bool clang::Module::isModuleMapModule ( ) const inline

isModulePartition()

bool clang::Module::isModulePartition ( ) const inline

isModulePartitionImplementation()

bool clang::Module::isModulePartitionImplementation ( ) const inline

isModuleVisible()

bool clang::Module::isModuleVisible ( const Module * M) const inline

Determine whether the specified module would be visible to a lookup at the end of this module.

FIXME: This may return incorrect results for (submodules of) the module currently being built, if it's queried before we see all of its imports.

Definition at line 798 of file Module.h.

Referenced by clang::Sema::isModuleVisible().

isNamedModule()

bool clang::Module::isNamedModule ( ) const inline

Does this Module is a named module of a standard named module?

Definition at line 195 of file Module.h.

References Kind, ModuleImplementationUnit, ModuleInterfaceUnit, ModulePartitionImplementation, ModulePartitionInterface, and PrivateModuleFragment.

Referenced by clang::Sema::ActOnModuleImport(), clang::Sema::ArgumentDependentLookup(), clang::ASTDeclReader::checkMultipleDefinitionInNamedModules(), clang::Sema::CheckRedeclarationModuleOwnership(), isImportingModuleUnitFromSameModule(), clang::Decl::isInNamedModule(), clang::Sema::IsRedefinitionInModule(), isRequiredDecl(), clang::ASTWriter::isWritingStdCXXNamedModules(), clang::ASTUnit::LoadFromASTFile(), makeTransitiveImportsVisible(), and clang::ASTContext::setCurrentNamedModule().

isNamedModuleInterfaceHasInit()

bool clang::Module::isNamedModuleInterfaceHasInit ( ) const inline

isNamedModuleUnit()

bool clang::Module::isNamedModuleUnit ( ) const inline

isPartOfFramework()

bool clang::Module::isPartOfFramework ( ) const inline

isPrivateModule()

bool clang::Module::isPrivateModule ( ) const inline

isSubFramework()

bool clang::Module::isSubFramework ( ) const inline

isSubModule()

bool clang::Module::isSubModule ( ) const inline

Determine whether this module is a submodule.

Definition at line 583 of file Module.h.

References Parent.

isSubModuleOf()

bool Module::isSubModuleOf ( const Module * Other ) const

isUnimportable() [1/2]

bool clang::Module::isUnimportable ( ) const inline

isUnimportable() [2/2]

Determine whether this module has been declared unimportable.

Parameters

LangOpts The language options used for the current translation unit.
Target The target options used for the current translation unit.
Req If this module is unimportable because of a missing requirement, this parameter will be set to one of the requirements that is not met for use of this module.
ShadowingModule If this module is unimportable because it is shadowed, this parameter will be set to the shadowing module.

Definition at line 127 of file Module.cpp.

References hasFeature(), IsUnimportable, and ShadowingModule.

markUnavailable()

void Module::markUnavailable ( bool Unimportable )

print()

void Module::print ( raw_ostream & OS,
unsigned Indent = 0,
bool Dump = false
) const

Print the module map for this module to the given stream.

Definition at line 465 of file Module.cpp.

References ConfigMacros, ConfigMacrosExhaustive, Conflicts, D, DirectUses, ExportAsModule, Exports, getHeaders(), getUmbrellaDirAsWritten(), getUmbrellaHeaderAsWritten(), HK_Excluded, HK_Normal, HK_Private, HK_PrivateTextual, HK_Textual, Id, Imports, InferExplicitSubmodules, InferExportWildcard, InferSubmodules, IsExplicit, IsExternC, IsFramework, IsSystem, Kind, clang::Library, LinkLibraries, MissingHeaders, Name, printModuleId(), Requirements, submodules(), clang::Unresolved, UnresolvedConflicts, UnresolvedDirectUses, UnresolvedExports, and UnresolvedHeaders.

Referenced by clang::RewriteIncludesAction::BeginSourceFileAction(), compileModule(), clang::ModuleMap::dump(), and clang::PrintPreprocessedAction::ExecuteAction().

setASTFile()

setParent()

void clang::Module::setParent ( Module * M) inline

Set the parent of this module.

This should only be used if the parent could not be set during module creation.

Definition at line 612 of file Module.h.

References Parent.

submodules() [1/2]

Definition at line 809 of file Module.h.

Referenced by clang::Sema::ActOnEndOfTranslationUnit(), clang::SemaCodeCompletion::CodeCompleteModuleImport(), collectAllSubModulesWithUmbrellaHeader(), collectModuleHeaderIncludes(), clang::CodeGen::CodeGenModule::EmitTopLevelDecl(), clang::DumpModuleInfoAction::ExecuteAction(), forEachSubmoduleSorted(), getNumberOfModules(), hasPrivateSubmodules(), clang::CompilerInstance::loadModule(), and print().

submodules() [2/2]

AffectingClangModules

The set of top-level modules that affected the compilation of this module, but were not imported.

Definition at line 433 of file Module.h.

APINotesFile

std::string clang::Module::APINotesFile

ConfigMacros

std::vectorstd::string clang::Module::ConfigMacros

The set of "configuration macros", which are macros that (intentionally) change how this module is built.

Definition at line 499 of file Module.h.

Referenced by checkConfigMacros(), and print().

ConfigMacrosExhaustive

unsigned clang::Module::ConfigMacrosExhaustive

Whether the set of configuration macros is exhaustive.

When the set of configuration macros is exhaustive, meaning that no identifier not in this list should affect how the module is built.

Definition at line 395 of file Module.h.

Referenced by print().

Conflicts

std::vector<Conflict> clang::Module::Conflicts

DefinitionLoc

Directory

DirectUses

The directly used modules.

Definition at line 463 of file Module.h.

Referenced by print().

ExportAsModule

std::string clang::Module::ExportAsModule

Exports

HasIncompatibleModuleFile

unsigned clang::Module::HasIncompatibleModuleFile

Whether we tried and failed to load a module file for this module.

Definition at line 336 of file Module.h.

Imports

InferExplicitSubmodules

unsigned clang::Module::InferExplicitSubmodules

Whether, when inferring submodules, the inferred submodules should be explicit.

Definition at line 382 of file Module.h.

Referenced by print().

InferExportWildcard

unsigned clang::Module::InferExportWildcard

Whether, when inferring submodules, the inferr submodules should export all modules they import (e.g., the equivalent of "export *").

Definition at line 387 of file Module.h.

Referenced by print().

InferredSubmoduleLoc

The location of the inferred submodule.

Definition at line 425 of file Module.h.

InferSubmodules

IsAvailable

Whether this module is available in the current translation unit.

If the module is missing headers or does not meet all requirements then this bit will be 0.

Definition at line 343 of file Module.h.

Referenced by isAvailable(), and Module().

IsExplicit

IsExternC

IsFramework

IsFromModuleFile

unsigned clang::Module::IsFromModuleFile

IsInferred

IsSystem

IsUnimportable

Whether this module has declared itself unimportable, either because it's missing a requirement from Requirements or because it's been shadowed by another module.

Definition at line 332 of file Module.h.

Referenced by isUnimportable(), and Module().

Kind

The kind of this module.

Definition at line 160 of file Module.h.

Referenced by clang::Sema::ActOnModuleDecl(), clang::Sema::ActOnModuleImport(), AddOrdinaryNameResults(), clang::DumpModuleInfoAction::ExecuteAction(), clang::Decl::getOwningModuleForLinkage(), isExplicitGlobalModule(), isHeaderUnit(), isImplicitGlobalModule(), isInterfaceOrPartition(), isModuleImplementation(), isModuleInterfaceUnit(), isModuleMapModule(), isModulePartition(), isModulePartitionImplementation(), isNamedModule(), isPrivateModule(), and print().

LinkLibraries

MissingHeaders

ModuleMapIsPrivate

unsigned clang::Module::ModuleMapIsPrivate

Name

std::string clang::Module::Name

The name of this module.

Definition at line 118 of file Module.h.

Referenced by clang::Sema::ActOnModuleImport(), clang::ModuleMap::addLinkAsDependency(), appendSubframeworkPaths(), clang::Preprocessor::checkModuleIsAvailable(), clang::ASTDeclReader::checkMultipleDefinitionInNamedModules(), checkPrivateAPINotesName(), compileModuleAndReadASTBehindLock(), compileModuleAndReadASTImpl(), clang::ModuleMap::diagnoseHeaderInclusion(), directlyUses(), clang::DumpModuleInfoAction::ExecuteAction(), findSubmodule(), forEachSubmoduleSorted(), clang::index::generateFullUSRForModule(), clang::index::generateUSRFragmentForModule(), clang::HeaderSearch::getCachedModuleFileName(), clang::ASTSourceDescriptor::getModuleName(), clang::HeaderSearch::getPrebuiltImplicitModuleFileName(), getPrimaryModuleInterfaceName(), getTopLevelModuleName(), inferFrameworkLink(), clang::CompilerInstance::loadGlobalModuleIndex(), clang::CompilerInstance::loadModule(), llvm::yaml::MappingTraits< Module >::mapping(), print(), readASTAfterCompileModule(), clang::PCHValidator::ReadDiagnosticOptions(), and clang::ModuleMap::resolveLinkAsDependencies().

NamedModuleHasInit

unsigned clang::Module::NamedModuleHasInit

NameVisibility

NoUndeclaredIncludes

unsigned clang::Module::NoUndeclaredIncludes

Parent

The parent of this module.

This will be NULL for the top-level module.

Definition at line 164 of file Module.h.

Referenced by clang::Sema::ActOnModuleImport(), addLinkOptionsPostorder(), appendSubframeworkPaths(), clang::Sema::CheckRedeclarationModuleOwnership(), collectModuleHeaderIncludes(), directlyUses(), fullModuleNameIs(), clang::index::generateFullUSRForModule(), getFullModuleName(), getNumModuleIdentifiers(), clang::Decl::getOwningModuleForLinkage(), clang::index::IndexingContext::importedModule(), clang::ModuleMap::isHeaderUnavailableInModule(), isPartOfFramework(), isSubFramework(), isSubModule(), isSubModuleOf(), clang::ModuleMap::mayShadowNewModule(), Module(), reportModuleReferences(), and setParent().

PresumedModuleMapFile

std::string clang::Module::PresumedModuleMapFile

Requirements

The set of language features required to use this module.

If any of these requirements are not available, the IsAvailable bit will be false to indicate that this (sub)module is not available.

Definition at line 323 of file Module.h.

Referenced by addRequirement(), and print().

ShadowingModule

Module* clang::Module::ShadowingModule = nullptr

Signature

The module signature.

Definition at line 179 of file Module.h.

Umbrella

UmbrellaAsWritten

std::string clang::Module::UmbrellaAsWritten

UmbrellaRelativeToRootModuleDirectory

std::string clang::Module::UmbrellaRelativeToRootModuleDirectory

UndeclaredUses

When NoUndeclaredIncludes is true, the set of modules this module tried to import but didn't because they are not direct uses.

Definition at line 470 of file Module.h.

Referenced by directlyUses().

UnresolvedConflicts

UnresolvedDirectUses

The set of use declarations that have yet to be resolved.

Definition at line 466 of file Module.h.

Referenced by print().

UnresolvedExports

UnresolvedHeaders

UseExportAsModuleLinkName

bool clang::Module::UseExportAsModuleLinkName = false


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