clang  3.7.0
Public Member Functions | Public Attributes | List of all members
clang::ModuleLoader Class Referenceabstract

Abstract interface for a module loader. More...

#include <ModuleLoader.h>

Inheritance diagram for clang::ModuleLoader:
[legend]
Collaboration diagram for clang::ModuleLoader:
[legend]

Public Member Functions

 ModuleLoader (bool BuildingModule=false)
 
virtual ~ModuleLoader ()
 
bool buildingModule () const
 Returns true if this instance is building a module. More...
 
void setBuildingModule (bool BuildingModuleFlag)
 Flag indicating whether this instance is building a module. More...
 
virtual ModuleLoadResult loadModule (SourceLocation ImportLoc, ModuleIdPath Path, Module::NameVisibilityKind Visibility, bool IsInclusionDirective)=0
 Attempt to load the given module. More...
 
virtual void makeModuleVisible (Module *Mod, Module::NameVisibilityKind Visibility, SourceLocation ImportLoc)=0
 Make the given module visible. More...
 
virtual GlobalModuleIndexloadGlobalModuleIndex (SourceLocation TriggerLoc)=0
 Load, create, or return global module. This function returns an existing global module index, if one had already been loaded or created, or loads one if it exists, or creates one if it doesn't exist. Also, importantly, if the index doesn't cover all the modules in the module map, it will be update to do so here, because of its use in searching for needed module imports and associated fixit messages. More...
 
virtual bool lookupMissingImports (StringRef Name, SourceLocation TriggerLoc)=0
 

Public Attributes

bool HadFatalFailure
 

Detailed Description

Abstract interface for a module loader.

This abstract interface describes a module loader, which is responsible for resolving a module name (e.g., "std") to an actual module file, and then loading that module.

Definition at line 56 of file ModuleLoader.h.

Constructor & Destructor Documentation

clang::ModuleLoader::ModuleLoader ( bool  BuildingModule = false)
inlineexplicit

Definition at line 60 of file ModuleLoader.h.

ModuleLoader::~ModuleLoader ( )
virtual

Definition at line 896 of file Preprocessor.cpp.

Member Function Documentation

bool clang::ModuleLoader::buildingModule ( ) const
inline

Returns true if this instance is building a module.

Definition at line 67 of file ModuleLoader.h.

Referenced by clang::CompilerInstance::loadGlobalModuleIndex(), and clang::CompilerInstance::lookupMissingImports().

virtual GlobalModuleIndex* clang::ModuleLoader::loadGlobalModuleIndex ( SourceLocation  TriggerLoc)
pure virtual

Load, create, or return global module. This function returns an existing global module index, if one had already been loaded or created, or loads one if it exists, or creates one if it doesn't exist. Also, importantly, if the index doesn't cover all the modules in the module map, it will be update to do so here, because of its use in searching for needed module imports and associated fixit messages.

Parameters
TriggerLocThe location for what triggered the load.
Returns
Returns null if load failed.

Implemented in clang::ASTUnit, and clang::CompilerInstance.

virtual ModuleLoadResult clang::ModuleLoader::loadModule ( SourceLocation  ImportLoc,
ModuleIdPath  Path,
Module::NameVisibilityKind  Visibility,
bool  IsInclusionDirective 
)
pure virtual

Attempt to load the given module.

This routine attempts to load the module described by the given parameters.

Parameters
ImportLocThe location of the 'import' keyword.
PathThe identifiers (and their locations) of the module "path", e.g., "std.vector" would be split into "std" and "vector".
VisibilityThe visibility provided for the names in the loaded module.
IsInclusionDirectiveIndicates that this module is being loaded implicitly, due to the presence of an inclusion directive. Otherwise, it is being loaded due to an import declaration.
Returns
If successful, returns the loaded module. Otherwise, returns NULL to indicate that the module could not be loaded.

Implemented in clang::ASTUnit, and clang::CompilerInstance.

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

virtual bool clang::ModuleLoader::lookupMissingImports ( StringRef  Name,
SourceLocation  TriggerLoc 
)
pure virtual

Check global module index for missing imports.

Parameters
NameThe symbol name to look for.
TriggerLocThe location for what triggered the load.
Returns
Returns true if any modules with that symbol found.

Implemented in clang::ASTUnit, and clang::CompilerInstance.

virtual void clang::ModuleLoader::makeModuleVisible ( Module Mod,
Module::NameVisibilityKind  Visibility,
SourceLocation  ImportLoc 
)
pure virtual
void clang::ModuleLoader::setBuildingModule ( bool  BuildingModuleFlag)
inline

Flag indicating whether this instance is building a module.

Definition at line 71 of file ModuleLoader.h.

Member Data Documentation

bool clang::ModuleLoader::HadFatalFailure

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