Go to the documentation of this file.
14 #ifndef LLVM_CLANG_LEX_MODULELOADER_H
15 #define LLVM_CLANG_LEX_MODULELOADER_H
20 #include "llvm/ADT/ArrayRef.h"
21 #include "llvm/ADT/PointerIntPair.h"
22 #include "llvm/ADT/StringRef.h"
27 class GlobalModuleIndex;
52 llvm::PointerIntPair<Module *, 2, LoadResultKind>
Storage;
86 : BuildingModule(BuildingModule) {}
92 return BuildingModule;
97 BuildingModule = BuildingModuleFlag;
123 bool IsInclusionDirective) = 0;
133 StringRef Source) = 0;
168 bool IsInclusionDirective)
override {
173 StringRef Source)
override {}
190 #endif // LLVM_CLANG_LEX_MODULELOADER_H
virtual void createModuleFromSource(SourceLocation Loc, StringRef ModuleName, StringRef Source)=0
Attempt to create the given module from the specified source buffer.
virtual void makeModuleVisible(Module *Mod, Module::NameVisibilityKind Visibility, SourceLocation ImportLoc)=0
Make the given module visible.
A global index for a set of module files, providing information about the identifiers within those mo...
bool isNormal() const
Determines whether this is a normal return, whether or not loading the module was successful.
Describes the result of attempting to load a module.
Encodes a location in the source.
virtual bool lookupMissingImports(StringRef Name, SourceLocation TriggerLoc)=0
Check global module index for missing imports.
NameVisibilityKind
Describes the visibility of the various names within a particular module.
ModuleLoadResult(LoadResultKind Kind)
ModuleLoader(bool BuildingModule=false)
llvm::PointerIntPair< Module *, 2, LoadResultKind > Storage
virtual GlobalModuleIndex * loadGlobalModuleIndex(SourceLocation TriggerLoc)=0
Load, create, or return global module.
virtual ModuleLoadResult loadModule(SourceLocation ImportLoc, ModuleIdPath Path, Module::NameVisibilityKind Visibility, bool IsInclusionDirective)=0
Attempt to load the given module.
ModuleLoadResult loadModule(SourceLocation ImportLoc, ModuleIdPath Path, Module::NameVisibilityKind Visibility, bool IsInclusionDirective) override
Attempt to load the given module.
Describes a module or submodule.
bool isConfigMismatch() const
Determines whether the module failed to load due to a configuration mismatch with an explicitly-named...
bool buildingModule() const
Returns true if this instance is building a module.
bool isMissingExpected() const
Determines whether the module, which failed to load, was actually a submodule that we expected to see...
Visibility
Describes the different kinds of visibility that a declaration may have.
bool lookupMissingImports(StringRef Name, SourceLocation TriggerLoc) override
Check global module index for missing imports.
void createModuleFromSource(SourceLocation ImportLoc, StringRef ModuleName, StringRef Source) override
Attempt to create the given module from the specified source buffer.
Abstract interface for a module loader.
A module loader that doesn't know how to create or load modules.
void makeModuleVisible(Module *Mod, Module::NameVisibilityKind Visibility, SourceLocation ImportLoc) override
Make the given module visible.
void setBuildingModule(bool BuildingModuleFlag)
Flag indicating whether this instance is building a module.
Dataflow Directional Tag Classes.
GlobalModuleIndex * loadGlobalModuleIndex(SourceLocation TriggerLoc) override
Load, create, or return global module.
ModuleLoadResult()=default
ModuleLoadResult(Module *M)