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:
- include/clang/Basic/Module.h
- lib/APINotes/APINotesYAMLCompiler.cpp
- lib/Basic/Module.cpp