clang  5.0.0
Classes | Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | List of all members
clang::Module Class Reference

Describes a module or submodule. More...

#include "clang/Basic/Module.h"

Collaboration diagram for clang::Module:
[legend]

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  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, ModuleInterfaceUnit }
 
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...
 
typedef std::pair< std::string,
bool
Requirement
 An individual requirement: a feature name and a flag indicating the required state of that feature. More...
 
typedef llvm::PointerIntPair
< Module *, 1, bool
ExportDecl
 Describes an exported module. More...
 
typedef std::vector< Module * >
::iterator 
submodule_iterator
 
typedef std::vector< Module * >
::const_iterator 
submodule_const_iterator
 

Public Member Functions

 Module (StringRef Name, SourceLocation DefinitionLoc, Module *Parent, bool IsFramework, bool IsExplicit, unsigned VisibilityID)
 Construct a new module or submodule. More...
 
 ~Module ()
 
bool isAvailable () const
 Determine whether this module is available for use within the current translation unit. More...
 
bool isAvailable (const LangOptions &LangOpts, const TargetInfo &Target, Requirement &Req, UnresolvedHeaderDirective &MissingHeader) const
 Determine whether this module is available for use within the current translation unit. More...
 
bool isSubModule () const
 Determine whether this module is a submodule. More...
 
bool isSubModuleOf (const Module *Other) const
 Determine whether this module is a submodule of the given other module. More...
 
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. More...
 
bool isSubFramework () const
 Determine whether this module is a subframework of another framework. More...
 
std::string getFullModuleName (bool AllowStringLiterals=false) const
 Retrieve the full name of this module, including the path from its top-level module. More...
 
bool fullModuleNameIs (ArrayRef< StringRef > nameParts) const
 Whether the full name of this module is equal to joining nameParts with "."s. More...
 
ModulegetTopLevelModule ()
 Retrieve the top-level module for this (sub)module, which may be this module. More...
 
const ModulegetTopLevelModule () const
 Retrieve the top-level module for this (sub)module, which may be this module. More...
 
StringRef getTopLevelModuleName () const
 Retrieve the name of the top-level module. More...
 
const FileEntrygetASTFile () const
 The serialized AST file for this module, if one was created. More...
 
void setASTFile (const FileEntry *File)
 Set the serialized AST file for the top-level module of this module. More...
 
DirectoryName getUmbrellaDir () const
 Retrieve the directory for which this module serves as the umbrella. More...
 
Header getUmbrellaHeader () const
 Retrieve the header that serves as the umbrella header for this module. More...
 
bool hasUmbrellaDir () const
 Determine whether this module has an umbrella directory that is not based on an umbrella header. More...
 
void addTopHeader (const FileEntry *File)
 Add a top-level header associated with this module. More...
 
void addTopHeaderFilename (StringRef Filename)
 Add a top-level header filename associated with this module. More...
 
ArrayRef< const FileEntry * > getTopHeaders (FileManager &FileMgr)
 The top-level headers associated with this module. More...
 
bool directlyUses (const Module *Requested) const
 Determine whether this module has declared its intention to directly use another module. More...
 
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. More...
 
void markUnavailable (bool MissingRequirement=false)
 Mark this module and all of its submodules as unavailable. More...
 
ModulefindSubmodule (StringRef Name) const
 Find the submodule with the given name. More...
 
bool isModuleVisible (const Module *M) const
 Determine whether the specified module would be visible to a lookup at the end of this module. More...
 
unsigned getVisibilityID () const
 
submodule_iterator submodule_begin ()
 
submodule_const_iterator submodule_begin () const
 
submodule_iterator submodule_end ()
 
submodule_const_iterator submodule_end () 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. More...
 
void print (raw_ostream &OS, unsigned Indent=0) const
 Print the module map for this module to the given stream. More...
 
void dump () const
 Dump the contents of this module to the given output stream. More...
 

Static Public Member Functions

static StringRef getModuleInputBufferName ()
 

Public Attributes

std::string Name
 The name of this module. More...
 
SourceLocation DefinitionLoc
 The location of the module definition. More...
 
ModuleKind Kind = ModuleMapModule
 The kind of this module. More...
 
ModuleParent
 The parent of this module. More...
 
const DirectoryEntryDirectory
 The build directory of this module. More...
 
std::string PresumedModuleMapFile
 The presumed file name for the module map defining this module. More...
 
llvm::PointerUnion< const
DirectoryEntry *, const
FileEntry * > 
Umbrella
 The umbrella header or directory. More...
 
ASTFileSignature Signature
 The module signature. More...
 
std::string UmbrellaAsWritten
 The name of the umbrella entry, as written in the module map. More...
 
SmallVector< Header, 2 > Headers [5]
 The headers that are part of this module. More...
 
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. More...
 
SmallVector
< UnresolvedHeaderDirective, 1 > 
MissingHeaders
 Headers that are mentioned in the module map file but could not be found on the file system. More...
 
SmallVector< Requirement, 2 > Requirements
 The set of language features required to use this module. More...
 
unsigned IsMissingRequirement: 1
 Whether this module is missing a feature from Requirements. More...
 
unsigned HasIncompatibleModuleFile: 1
 Whether we tried and failed to load a module file for this module. More...
 
unsigned IsAvailable: 1
 Whether this module is available in the current translation unit. More...
 
unsigned IsFromModuleFile: 1
 Whether this module was loaded from a module file. More...
 
unsigned IsFramework: 1
 Whether this is a framework module. More...
 
unsigned IsExplicit: 1
 Whether this is an explicit submodule. More...
 
unsigned IsSystem: 1
 Whether this is a "system" module (which assumes that all headers in it are system headers). More...
 
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). More...
 
unsigned IsInferred: 1
 Whether this is an inferred submodule (module * { ... }). More...
 
unsigned InferSubmodules: 1
 Whether we should infer submodules for this module based on the headers. More...
 
unsigned InferExplicitSubmodules: 1
 Whether, when inferring submodules, the inferred submodules should be explicit. More...
 
unsigned InferExportWildcard: 1
 Whether, when inferring submodules, the inferr submodules should export all modules they import (e.g., the equivalent of "export *"). More...
 
unsigned ConfigMacrosExhaustive: 1
 Whether the set of configuration macros is exhaustive. More...
 
unsigned NoUndeclaredIncludes: 1
 Whether files in this module can only include non-modular headers and headers from used modules. More...
 
NameVisibilityKind NameVisibility
 The visibility of names within this particular module. More...
 
SourceLocation InferredSubmoduleLoc
 The location of the inferred submodule. More...
 
llvm::SmallSetVector< Module *, 2 > Imports
 The set of modules imported by this module, and on which this module depends. More...
 
SmallVector< ExportDecl, 2 > Exports
 The set of export declarations. More...
 
SmallVector
< UnresolvedExportDecl, 2 > 
UnresolvedExports
 The set of export declarations that have yet to be resolved. More...
 
SmallVector< Module *, 2 > DirectUses
 The directly used modules. More...
 
SmallVector< ModuleId, 2 > UnresolvedDirectUses
 The set of use declarations that have yet to be resolved. More...
 
llvm::SmallVector< LinkLibrary, 2 > LinkLibraries
 The set of libraries or frameworks to link against when an entity from this module is used. More...
 
std::vector< std::string > ConfigMacros
 The set of "configuration macros", which are macros that (intentionally) change how this module is built. More...
 
std::vector< UnresolvedConflictUnresolvedConflicts
 The list of conflicts for which the module-id has not yet been resolved. More...
 
std::vector< ConflictConflicts
 The list of conflicts. More...
 

Static Public Attributes

static const int NumHeaderKinds = HK_Excluded + 1
 

Detailed Description

Describes a module or submodule.

Definition at line 57 of file Module.h.

Member Typedef Documentation

typedef llvm::PointerIntPair<Module *, 1, bool> clang::Module::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 265 of file Module.h.

typedef std::pair<std::string, bool> clang::Module::Requirement

An individual requirement: a feature name and a flag indicating the required state of that feature.

Definition at line 176 of file Module.h.

typedef std::vector<Module *>::const_iterator clang::Module::submodule_const_iterator

Definition at line 512 of file Module.h.

typedef std::vector<Module *>::iterator clang::Module::submodule_iterator

Definition at line 511 of file Module.h.

Member Enumeration Documentation

Enumerator
HK_Normal 
HK_Textual 
HK_Private 
HK_PrivateTextual 
HK_Excluded 

Definition at line 124 of file Module.h.

Enumerator
ModuleMapModule 

This is a module that was defined by a module map and built out of header files.

ModuleInterfaceUnit 

This is a C++ Modules TS module interface unit.

Definition at line 65 of file Module.h.

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 244 of file Module.h.

Constructor & Destructor Documentation

Module::Module ( StringRef  Name,
SourceLocation  DefinitionLoc,
Module Parent,
bool  IsFramework,
bool  IsExplicit,
unsigned  VisibilityID 
)

Construct a new module or submodule.

Definition at line 28 of file Module.cpp.

References IsAvailable, isAvailable(), IsExternC, IsMissingRequirement, IsSystem, Name, and NoUndeclaredIncludes.

Module::~Module ( )

Definition at line 54 of file Module.cpp.

References I, submodule_begin(), and submodule_end().

Member Function Documentation

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
FeatureThe feature that is required by this module (and its submodules).
RequiredStateThe required state of this feature: true if it must be present, false if it must be absent.
LangOptsThe set of language options that will be used to evaluate the availability of this feature.
TargetThe target options that will be used to evaluate the availability of this feature.

Definition at line 221 of file Module.cpp.

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

void clang::Module::addTopHeader ( const FileEntry File)
inline

Add a top-level header associated with this module.

Definition at line 454 of file Module.h.

Referenced by collectModuleHeaderIncludes().

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

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

Definition at line 460 of file Module.h.

bool Module::directlyUses ( const Module Requested) const

Determine whether this module has declared its intention to directly use another module.

Definition at line 203 of file Module.cpp.

References getTopLevelModule(), isSubModuleOf(), Name, and Parent.

Referenced by clang::ModuleMap::diagnoseHeaderInclusion(), and suggestModule().

LLVM_DUMP_METHOD void Module::dump ( ) const

Dump the contents of this module to the given output stream.

Definition at line 533 of file Module.cpp.

References print().

Module * Module::findSubmodule ( StringRef  Name) const

Find the submodule with the given name.

Returns
The submodule if found, or NULL otherwise.

Definition at line 261 of file Module.cpp.

Referenced by clang::CompilerInstance::loadModule(), and clang::ModuleMap::lookupModuleQualified().

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

Whether the full name of this module is equal to joining nameParts with "."s.

This is more efficient than getFullModuleName().

Definition at line 174 of file Module.cpp.

References Parent.

Referenced by shouldAddRequirement().

const FileEntry* clang::Module::getASTFile ( ) const
inline

The serialized AST file for this module, if one was created.

Definition at line 424 of file Module.h.

References getTopLevelModule().

Referenced by clang::ExternalASTSource::ASTSourceDescriptor::ASTSourceDescriptor(), clang::CompilerInstance::loadGlobalModuleIndex(), clang::CompilerInstance::loadModule(), and setASTFile().

void Module::getExportedModules ( SmallVectorImpl< Module * > &  Exported) const

Appends this module's list of exported modules to Exported.

This provides a subset of immediately imported modules (the ones that are directly exported), not the complete set of exported modules.

Definition at line 269 of file Module.cpp.

References E, Exports, I, Imports, IsExplicit, and isSubModuleOf().

Referenced by clang::ASTReader::makeModuleVisible().

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

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

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

Definition at line 158 of file Module.cpp.

References clang::ast_matchers::internal::Names(), Parent, printModuleId(), and clang::Result.

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

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

Definition at line 532 of file Module.h.

Referenced by getInputBufferForModule().

ArrayRef< const FileEntry * > Module::getTopHeaders ( FileManager FileMgr)

The top-level headers associated with this module.

Definition at line 190 of file Module.cpp.

References E, clang::FileManager::getFile(), and I.

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

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

Definition at line 121 of file Module.cpp.

References Parent, and clang::Result.

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

Retrieve the name of the top-level module.

Definition at line 419 of file Module.h.

References getTopLevelModule(), and Name.

Referenced by clang::Sema::ActOnModuleImport(), compileModuleImpl(), and clang::Preprocessor::LeaveSubmodule().

Module::DirectoryName Module::getUmbrellaDir ( ) const

Retrieve the directory for which this module serves as the umbrella.

Definition at line 183 of file Module.cpp.

References clang::Module::DirectoryName::Entry, getUmbrellaHeader(), Umbrella, and UmbrellaAsWritten.

Referenced by collectModuleHeaderIncludes(), clang::ModuleMap::isHeaderUnavailableInModule(), and print().

Header clang::Module::getUmbrellaHeader ( ) const
inline

Retrieve the header that serves as the umbrella header for this module.

Definition at line 441 of file Module.h.

References E, Umbrella, and UmbrellaAsWritten.

Referenced by collectAllSubModulesWithUmbrellaHeader(), collectModuleHeaderIncludes(), getInputBufferForModule(), getUmbrellaDir(), and print().

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

Definition at line 509 of file Module.h.

Referenced by clang::VisibleModuleSet::getImportLoc().

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

Determine whether this module has an umbrella directory that is not based on an umbrella header.

Definition at line 449 of file Module.h.

References Umbrella.

bool clang::Module::isAvailable ( ) const
inline
bool Module::isAvailable ( const LangOptions LangOpts,
const TargetInfo Target,
Requirement Req,
UnresolvedHeaderDirective MissingHeader 
) const

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

Parameters
LangOptsThe language options used for the current translation unit.
TargetThe target options used for the current translation unit.
ReqIf this module is unavailable, this parameter will be set to one of the requirements that is not met for use of this module.

Definition at line 86 of file Module.cpp.

References Current, hasFeature(), I, and IsAvailable.

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 503 of file Module.h.

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

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.

Definition at line 380 of file Module.h.

References Parent.

Referenced by isSubFramework().

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

Determine whether this module is a subframework of another framework.

Definition at line 390 of file Module.h.

References IsFramework, isPartOfFramework(), and Parent.

Referenced by inferFrameworkLink().

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

Determine whether this module is a submodule.

Definition at line 371 of file Module.h.

References Parent.

bool Module::isSubModuleOf ( const Module Other) const

Determine whether this module is a submodule of the given other module.

Definition at line 109 of file Module.cpp.

References Parent.

Referenced by directlyUses(), getExportedModules(), and clang::ModuleMap::isHeaderUnavailableInModule().

void Module::markUnavailable ( bool  MissingRequirement = false)

Mark this module and all of its submodules as unavailable.

Definition at line 233 of file Module.cpp.

References Current, IsAvailable, IsMissingRequirement, Stack, submodule_begin(), and submodule_end().

Referenced by addRequirement().

void Module::print ( raw_ostream &  OS,
unsigned  Indent = 0 
) const
void clang::Module::setASTFile ( const FileEntry File)
inline

Set the serialized AST file for the top-level module of this module.

Definition at line 429 of file Module.h.

References getASTFile(), and getTopLevelModule().

submodule_iterator clang::Module::submodule_begin ( )
inline
submodule_const_iterator clang::Module::submodule_begin ( ) const
inline

Definition at line 515 of file Module.h.

submodule_iterator clang::Module::submodule_end ( )
inline
submodule_const_iterator clang::Module::submodule_end ( ) const
inline

Definition at line 517 of file Module.h.

llvm::iterator_range<submodule_iterator> clang::Module::submodules ( )
inline

Definition at line 519 of file Module.h.

References submodule_begin(), and submodule_end().

Referenced by collectAllSubModulesWithUmbrellaHeader().

llvm::iterator_range<submodule_const_iterator> clang::Module::submodules ( ) const
inline

Definition at line 522 of file Module.h.

References submodule_begin(), and submodule_end().

Member Data Documentation

std::vector<std::string> clang::Module::ConfigMacros

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

Definition at line 317 of file Module.h.

Referenced by clang::CompilerInstance::loadModule(), and print().

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 236 of file Module.h.

Referenced by print().

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

The list of conflicts.

Definition at line 342 of file Module.h.

Referenced by print(), and clang::ModuleMap::resolveConflicts().

SourceLocation clang::Module::DefinitionLoc
const DirectoryEntry* clang::Module::Directory

The build directory of this module.

This is the directory in which the module is notionally built, and relative to which its headers are found.

Definition at line 84 of file Module.h.

Referenced by clang::ExternalASTSource::ASTSourceDescriptor::ASTSourceDescriptor(), compileModuleImpl(), and prepareToBuildModule().

SmallVector<Module *, 2> clang::Module::DirectUses

The directly used modules.

Definition at line 289 of file Module.h.

Referenced by print(), and clang::ModuleMap::resolveUses().

SmallVector<ExportDecl, 2> clang::Module::Exports

The set of export declarations.

Definition at line 268 of file Module.h.

Referenced by getExportedModules(), print(), clang::ModuleMap::resolveExports(), and clang::VisibleModuleSet::setVisible().

unsigned clang::Module::HasIncompatibleModuleFile

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

Definition at line 188 of file Module.h.

Referenced by clang::CompilerInstance::loadModule(), and clang::CompilerInstance::loadModuleFile().

SmallVector<Header, 2> clang::Module::Headers[5]

The headers that are part of this module.

Definition at line 152 of file Module.h.

Referenced by clang::ModuleMap::addHeader(), collectModuleHeaderIncludes(), clang::ModuleMap::excludeHeader(), print(), and violatesPrivateInclude().

llvm::SmallSetVector<Module *, 2> clang::Module::Imports

The set of modules imported by this module, and on which this module depends.

Definition at line 259 of file Module.h.

Referenced by addLinkOptionsPostorder(), and getExportedModules().

unsigned clang::Module::InferExplicitSubmodules

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

Definition at line 225 of file Module.h.

Referenced by print().

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 229 of file Module.h.

Referenced by print().

SourceLocation clang::Module::InferredSubmoduleLoc

The location of the inferred submodule.

Definition at line 255 of file Module.h.

unsigned clang::Module::InferSubmodules

Whether we should infer submodules for this module based on the headers.

Submodules can only be inferred for modules with an umbrella header.

Definition at line 221 of file Module.h.

Referenced by clang::ModuleMap::isHeaderUnavailableInModule(), and print().

unsigned clang::Module::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 194 of file Module.h.

Referenced by isAvailable(), clang::CompilerInstance::loadModuleFile(), markUnavailable(), and Module().

unsigned clang::Module::IsExplicit

Whether this is an explicit submodule.

Definition at line 203 of file Module.h.

Referenced by getExportedModules(), and print().

unsigned clang::Module::IsExternC

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).

Definition at line 212 of file Module.h.

Referenced by checkModuleImportContext(), collectModuleHeaderIncludes(), getInputBufferForModule(), Module(), and print().

unsigned clang::Module::IsFramework

Whether this is a framework module.

Definition at line 200 of file Module.h.

Referenced by appendSubframeworkPaths(), clang::ModuleMap::diagnoseHeaderInclusion(), inferFrameworkLink(), isSubFramework(), and print().

unsigned clang::Module::IsFromModuleFile

Whether this module was loaded from a module file.

Definition at line 197 of file Module.h.

Referenced by clang::CompilerInstance::loadModule().

unsigned clang::Module::IsInferred

Whether this is an inferred submodule (module * { ... }).

Definition at line 215 of file Module.h.

Referenced by clang::ModuleMap::getModuleMapFileForUniquing(), prepareToBuildModule(), and clang::ModuleMap::setInferredModuleAllowedBy().

unsigned clang::Module::IsMissingRequirement

Whether this module is missing a feature from Requirements.

Definition at line 185 of file Module.h.

Referenced by clang::CompilerInstance::loadModuleFile(), markUnavailable(), and Module().

unsigned clang::Module::IsSystem

Whether this is a "system" module (which assumes that all headers in it are system headers).

Definition at line 207 of file Module.h.

Referenced by compileModuleImpl(), clang::ModuleMap::inferFrameworkModule(), clang::Preprocessor::LookupFile(), Module(), and print().

ModuleKind clang::Module::Kind = ModuleMapModule

The kind of this module.

Definition at line 75 of file Module.h.

Referenced by clang::ModuleMap::createModuleForInterfaceUnit(), and print().

llvm::SmallVector<LinkLibrary, 2> clang::Module::LinkLibraries

The set of libraries or frameworks to link against when an entity from this module is used.

Definition at line 313 of file Module.h.

Referenced by addLinkOptionsPostorder(), inferFrameworkLink(), and print().

SmallVector<UnresolvedHeaderDirective, 1> clang::Module::MissingHeaders

Headers that are mentioned in the module map file but could not be found on the file system.

Definition at line 172 of file Module.h.

Referenced by collectModuleHeaderIncludes(), and print().

std::string clang::Module::Name
NameVisibilityKind clang::Module::NameVisibility

The visibility of names within this particular module.

Definition at line 252 of file Module.h.

Referenced by clang::ASTReader::makeModuleVisible(), clang::ASTReader::makeNamesVisible(), and clang::ASTDeclReader::UpdateDecl().

unsigned clang::Module::NoUndeclaredIncludes

Whether files in this module can only include non-modular headers and headers from used modules.

Definition at line 240 of file Module.h.

Referenced by Module(), needModuleLookup(), and suggestModule().

const int clang::Module::NumHeaderKinds = HK_Excluded + 1
static

Definition at line 131 of file Module.h.

Module* clang::Module::Parent
std::string clang::Module::PresumedModuleMapFile

The presumed file name for the module map defining this module.

Only non-empty when building from preprocessed source.

Definition at line 88 of file Module.h.

Referenced by clang::FrontendAction::BeginSourceFile().

SmallVector<Requirement, 2> clang::Module::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 182 of file Module.h.

Referenced by addRequirement(), and print().

ASTFileSignature clang::Module::Signature

The module signature.

Definition at line 94 of file Module.h.

llvm::PointerUnion<const DirectoryEntry *, const FileEntry *> clang::Module::Umbrella

The umbrella header or directory.

Definition at line 91 of file Module.h.

Referenced by getUmbrellaDir(), getUmbrellaHeader(), hasUmbrellaDir(), clang::ModuleMap::setUmbrellaDir(), and clang::ModuleMap::setUmbrellaHeader().

std::string clang::Module::UmbrellaAsWritten

The name of the umbrella entry, as written in the module map.

Definition at line 97 of file Module.h.

Referenced by getUmbrellaDir(), getUmbrellaHeader(), clang::ModuleMap::setUmbrellaDir(), and clang::ModuleMap::setUmbrellaHeader().

std::vector<UnresolvedConflict> clang::Module::UnresolvedConflicts

The list of conflicts for which the module-id has not yet been resolved.

Definition at line 330 of file Module.h.

Referenced by print(), and clang::ModuleMap::resolveConflicts().

SmallVector<ModuleId, 2> clang::Module::UnresolvedDirectUses

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

Definition at line 292 of file Module.h.

Referenced by print(), and clang::ModuleMap::resolveUses().

SmallVector<UnresolvedExportDecl, 2> clang::Module::UnresolvedExports

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

Definition at line 286 of file Module.h.

Referenced by print(), and clang::ModuleMap::resolveExports().

SmallVector<UnresolvedHeaderDirective, 1> clang::Module::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.

Definition at line 168 of file Module.h.

Referenced by print(), and clang::ModuleMap::resolveHeaderDirectives().


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