15 #ifndef LLVM_CLANG_LEX_MODULELOADER_H 16 #define LLVM_CLANG_LEX_MODULELOADER_H 21 #include "llvm/ADT/ArrayRef.h" 22 #include "llvm/ADT/PointerIntPair.h" 23 #include "llvm/ADT/StringRef.h" 28 class GlobalModuleIndex;
50 llvm::PointerIntPair<Module *, 2, LoadResultKind>
Storage;
56 operator Module *()
const {
return Storage.getPointer(); }
80 : BuildingModule(BuildingModule) {}
86 return BuildingModule;
91 BuildingModule = BuildingModuleFlag;
116 bool IsInclusionDirective) = 0;
125 virtual void loadModuleFromSource(
SourceLocation Loc, StringRef ModuleName,
126 StringRef Source) = 0;
129 virtual void makeModuleVisible(
Module *Mod,
150 virtual bool lookupMissingImports(StringRef Name,
153 bool HadFatalFailure =
false;
161 bool IsInclusionDirective)
override {
166 StringRef Source)
override {}
183 #endif // LLVM_CLANG_LEX_MODULELOADER_H bool buildingModule() const
Returns true if this instance is building a module.
Defines the clang::Module class, which describes a module in the source code.
A module loader that doesn't know how to load modules.
Describes a module or submodule.
Forward-declares and imports various common LLVM datatypes that clang wants to use unqualified...
Visibility
Describes the different kinds of visibility that a declaration may have.
ModuleLoadResult(LoadResultKind Kind)
ModuleLoader(bool BuildingModule=false)
Describes the result of attempting to load a module.
ModuleLoadResult loadModule(SourceLocation ImportLoc, ModuleIdPath Path, Module::NameVisibilityKind Visibility, bool IsInclusionDirective) override
Attempt to load the given module.
GlobalModuleIndex * loadGlobalModuleIndex(SourceLocation TriggerLoc) override
Load, create, or return global module.
ModuleLoadResult()=default
void loadModuleFromSource(SourceLocation ImportLoc, StringRef ModuleName, StringRef Source) override
Attempt to load the given module from the specified source buffer.
Encodes a location in the source.
bool isConfigMismatch() const
Determines whether the module failed to load due to a configuration mismatch with an explicitly-named...
A global index for a set of module files, providing information about the identifiers within those mo...
Dataflow Directional Tag Classes.
bool isMissingExpected() const
Determines whether the module, which failed to load, was actually a submodule that we expected to see...
llvm::PointerIntPair< Module *, 2, LoadResultKind > Storage
Abstract interface for a module loader.
Defines the clang::SourceLocation class and associated facilities.
NameVisibilityKind
Describes the visibility of the various names within a particular module.
void setBuildingModule(bool BuildingModuleFlag)
Flag indicating whether this instance is building a module.
bool lookupMissingImports(StringRef Name, SourceLocation TriggerLoc) override
Check global module index for missing imports.
ModuleLoadResult(Module *M)
void makeModuleVisible(Module *Mod, Module::NameVisibilityKind Visibility, SourceLocation ImportLoc) override
Make the given module visible.