Lines Matching defs:ModuleMap
1 //===- ModuleMap.cpp - Describe the layout of modules ---------------------===//
9 // This file defines the ModuleMap implementation, which describes the layout
14 #include "clang/Lex/ModuleMap.h"
58 void ModuleMap::resolveLinkAsDependencies(Module *Mod) {
69 void ModuleMap::addLinkAsDependency(Module *Mod) {
76 Module::HeaderKind ModuleMap::headerRoleToKind(ModuleHeaderRole Role) {
92 ModuleMap::ModuleHeaderRole
93 ModuleMap::headerKindToRole(Module::HeaderKind Kind) {
109 bool ModuleMap::isModular(ModuleHeaderRole Role) {
110 return !(Role & (ModuleMap::TextualHeader | ModuleMap::ExcludedHeader));
114 ModuleMap::resolveExport(Module *Mod,
131 Module *ModuleMap::resolveModuleId(const ModuleId &Id, Module *Mod,
180 OptionalFileEntryRef ModuleMap::findHeader(
295 void ModuleMap::resolveHeader(Module *Mod,
333 bool ModuleMap::resolveAsBuiltinHeader(
357 ModuleMap::ModuleMap(SourceManager &SourceMgr, DiagnosticsEngine &Diags,
365 ModuleMap::~ModuleMap() {
372 void ModuleMap::setTarget(const TargetInfo &Target) {
415 bool ModuleMap::isBuiltinHeader(FileEntryRef File) {
420 bool ModuleMap::shouldImportRelativeToBuiltinIncludeDir(StringRef FileName,
427 ModuleMap::HeadersMap::iterator ModuleMap::findKnownHeader(FileEntryRef File) {
431 Known == Headers.end() && ModuleMap::isBuiltinHeader(File)) {
438 ModuleMap::KnownHeader ModuleMap::findHeaderInUmbrellaDirs(
473 ModuleMap::KnownHeader Header) {
475 if (Header.getRole() & ModuleMap::PrivateHeader) {
496 void ModuleMap::diagnoseHeaderInclusion(Module *RequestingModule,
518 if (Header.getRole() == ModuleMap::ExcludedHeader) {
578 static bool isBetterKnownHeader(const ModuleMap::KnownHeader &New,
579 const ModuleMap::KnownHeader &Old) {
588 if ((New.getRole() & ModuleMap::PrivateHeader) !=
589 (Old.getRole() & ModuleMap::PrivateHeader))
590 return !(New.getRole() & ModuleMap::PrivateHeader);
593 if ((New.getRole() & ModuleMap::TextualHeader) !=
594 (Old.getRole() & ModuleMap::TextualHeader))
595 return !(New.getRole() & ModuleMap::TextualHeader);
598 if ((New.getRole() == ModuleMap::ExcludedHeader) !=
599 (Old.getRole() == ModuleMap::ExcludedHeader))
600 return New.getRole() != ModuleMap::ExcludedHeader;
606 ModuleMap::KnownHeader ModuleMap::findModuleForHeader(FileEntryRef File,
609 auto MakeResult = [&](ModuleMap::KnownHeader R) -> ModuleMap::KnownHeader {
610 if (!AllowTextual && R.getRole() & ModuleMap::TextualHeader)
617 ModuleMap::KnownHeader Result;
621 if (!AllowExcluded && H.getRole() == ModuleMap::ExcludedHeader)
635 ModuleMap::KnownHeader
636 ModuleMap::findOrCreateModuleForHeaderInUmbrellaDir(FileEntryRef File) {
706 ArrayRef<ModuleMap::KnownHeader>
707 ModuleMap::findAllModulesForHeader(FileEntryRef File) {
718 ArrayRef<ModuleMap::KnownHeader>
719 ModuleMap::findResolvedModulesForHeader(FileEntryRef File) const {
728 bool ModuleMap::isHeaderInUnavailableModule(FileEntryRef Header) const {
732 bool ModuleMap::isHeaderUnavailableInModule(
742 if (I->getRole() == ModuleMap::ExcludedHeader)
753 if (!RequestingModule && I->getRole() == ModuleMap::TextualHeader)
826 Module *ModuleMap::findModule(StringRef Name) const {
834 Module *ModuleMap::lookupModuleUnqualified(StringRef Name,
844 Module *ModuleMap::lookupModuleQualified(StringRef Name, Module *Context) const{
851 std::pair<Module *, bool> ModuleMap::findOrCreateModule(StringRef Name,
871 Module *ModuleMap::createGlobalModuleFragmentForModuleUnit(SourceLocation Loc,
884 ModuleMap::createImplicitGlobalModuleFragmentForModuleUnit(SourceLocation Loc,
899 ModuleMap::createPrivateModuleFragmentForInterfaceUnit(Module *Parent,
908 Module *ModuleMap::createModuleUnitWithKind(SourceLocation Loc, StringRef Name,
924 Module *ModuleMap::createModuleForInterfaceUnit(SourceLocation Loc,
942 Module *ModuleMap::createModuleForImplementationUnit(SourceLocation Loc,
966 Module *ModuleMap::createHeaderUnit(SourceLocation Loc, StringRef Name,
992 Module *ModuleMap::inferFrameworkModule(DirectoryEntryRef FrameworkDir,
999 Module *ModuleMap::inferFrameworkModule(DirectoryEntryRef FrameworkDir,
1171 Module *ModuleMap::createShadowedModule(StringRef Name, bool IsFramework,
1186 void ModuleMap::setUmbrellaHeaderAsWritten(
1201 void ModuleMap::setUmbrellaDirAsWritten(
1211 void ModuleMap::addUnresolvedHeader(Module *Mod,
1221 Header.Kind = headerRoleToKind(ModuleMap::ModuleHeaderRole(
1222 headerKindToRole(Header.Kind) | ModuleMap::TextualHeader));
1247 void ModuleMap::resolveHeaderDirectives(const FileEntry *File) const {
1263 void ModuleMap::resolveHeaderDirectives(
1277 const_cast<ModuleMap *>(this)->resolveHeader(Mod, Header, NeedsFramework);
1282 void ModuleMap::addHeader(Module *Mod, Module::Header Header,
1309 FileID ModuleMap::getContainingModuleMapFileID(const Module *Module) const {
1317 ModuleMap::getContainingModuleMapFile(const Module *Module) const {
1321 FileID ModuleMap::getModuleMapFileIDForUniquing(const Module *M) const {
1330 ModuleMap::getModuleMapFileForUniquing(const Module *M) const {
1334 void ModuleMap::setInferredModuleAllowedBy(Module *M, FileID ModMapFID) {
1340 ModuleMap::canonicalizeModuleMapPath(SmallVectorImpl<char> &Path) {
1372 void ModuleMap::addAdditionalModuleMapFile(const Module *M,
1373 FileEntryRef ModuleMap) {
1374 AdditionalModMaps[M].insert(ModuleMap);
1377 LLVM_DUMP_METHOD void ModuleMap::dump() {
1399 bool ModuleMap::resolveExports(Module *Mod, bool Complain) {
1412 bool ModuleMap::resolveUses(Module *Mod, bool Complain) {
1426 bool ModuleMap::resolveConflicts(Module *Mod, bool Complain) {
1522 ModuleMap ⤅
1588 using Attributes = ModuleMap::Attributes;
1595 ModuleMap &Map, FileID ModuleMapFID,
2397 ModuleMap::ModuleHeaderRole Role = ModuleMap::NormalHeader;
2400 Role = ModuleMap::PrivateHeader;
2407 Role = ModuleMap::ExcludedHeader;
2411 Role = ModuleMap::ModuleHeaderRole(Role | ModuleMap::TextualHeader);
2416 Role = ModuleMap::ModuleHeaderRole(Role | ModuleMap::TextualHeader);
2590 Map.addHeader(ActiveModule, std::move(Header), ModuleMap::TextualHeader);
3119 bool ModuleMap::parseModuleMapFile(FileEntryRef File, bool IsSystem,