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(
256 void ModuleMap::resolveHeader(Module *Mod,
293 bool ModuleMap::resolveAsBuiltinHeader(
317 ModuleMap::ModuleMap(SourceManager &SourceMgr, DiagnosticsEngine &Diags,
325 ModuleMap::~ModuleMap() {
332 void ModuleMap::setTarget(const TargetInfo &Target) {
378 bool ModuleMap::isBuiltinHeader(StringRef FileName) {
394 bool ModuleMap::isBuiltinHeader(const FileEntry *File) {
396 ModuleMap::isBuiltinHeader(llvm::sys::path::filename(File->getName()));
399 ModuleMap::HeadersMap::iterator
400 ModuleMap::findKnownHeader(const FileEntry *File) {
404 Known == Headers.end() && ModuleMap::isBuiltinHeader(File)) {
411 ModuleMap::KnownHeader
412 ModuleMap::findHeaderInUmbrellaDirs(const FileEntry *File,
451 ModuleMap::KnownHeader Header) {
453 if (Header.getRole() & ModuleMap::PrivateHeader) {
474 void ModuleMap::diagnoseHeaderInclusion(Module *RequestingModule,
496 if (Header.getRole() == ModuleMap::ExcludedHeader) {
555 static bool isBetterKnownHeader(const ModuleMap::KnownHeader &New,
556 const ModuleMap::KnownHeader &Old) {
565 if ((New.getRole() & ModuleMap::PrivateHeader) !=
566 (Old.getRole() & ModuleMap::PrivateHeader))
567 return !(New.getRole() & ModuleMap::PrivateHeader);
570 if ((New.getRole() & ModuleMap::TextualHeader) !=
571 (Old.getRole() & ModuleMap::TextualHeader))
572 return !(New.getRole() & ModuleMap::TextualHeader);
575 if ((New.getRole() == ModuleMap::ExcludedHeader) !=
576 (Old.getRole() == ModuleMap::ExcludedHeader))
577 return New.getRole() != ModuleMap::ExcludedHeader;
583 ModuleMap::KnownHeader ModuleMap::findModuleForHeader(const FileEntry *File,
586 auto MakeResult = [&](ModuleMap::KnownHeader R) -> ModuleMap::KnownHeader {
587 if (!AllowTextual && R.getRole() & ModuleMap::TextualHeader)
594 ModuleMap::KnownHeader Result;
598 if (!AllowExcluded && H.getRole() == ModuleMap::ExcludedHeader)
612 ModuleMap::KnownHeader
613 ModuleMap::findOrCreateModuleForHeaderInUmbrellaDir(const FileEntry *File) {
684 ArrayRef<ModuleMap::KnownHeader>
685 ModuleMap::findAllModulesForHeader(const FileEntry *File) {
696 ArrayRef<ModuleMap::KnownHeader>
697 ModuleMap::findResolvedModulesForHeader(const FileEntry *File) const {
706 bool ModuleMap::isHeaderInUnavailableModule(const FileEntry *Header) const {
711 ModuleMap::isHeaderUnavailableInModule(const FileEntry *Header,
721 if (I->getRole() == ModuleMap::ExcludedHeader)
732 if (!RequestingModule && I->getRole() == ModuleMap::TextualHeader)
808 Module *ModuleMap::findModule(StringRef Name) const {
816 Module *ModuleMap::lookupModuleUnqualified(StringRef Name,
826 Module *ModuleMap::lookupModuleQualified(StringRef Name, Module *Context) const{
833 std::pair<Module *, bool> ModuleMap::findOrCreateModule(StringRef Name,
853 Module *ModuleMap::createGlobalModuleFragmentForModuleUnit(SourceLocation Loc,
866 ModuleMap::createPrivateModuleFragmentForInterfaceUnit(Module *Parent,
875 Module *ModuleMap::createModuleForInterfaceUnit(SourceLocation Loc,
902 Module *ModuleMap::createHeaderUnit(SourceLocation Loc, StringRef Name,
940 Module *ModuleMap::inferFrameworkModule(const DirectoryEntry *FrameworkDir,
947 Module *ModuleMap::inferFrameworkModule(const DirectoryEntry *FrameworkDir,
1123 Module *ModuleMap::createShadowedModule(StringRef Name, bool IsFramework,
1138 void ModuleMap::setUmbrellaHeader(
1153 void ModuleMap::setUmbrellaDir(Module *Mod, const DirectoryEntry *UmbrellaDir,
1163 void ModuleMap::addUnresolvedHeader(Module *Mod,
1173 Header.Kind = headerRoleToKind(ModuleMap::ModuleHeaderRole(
1174 headerKindToRole(Header.Kind) | ModuleMap::TextualHeader));
1199 void ModuleMap::resolveHeaderDirectives(const FileEntry *File) const {
1215 void ModuleMap::resolveHeaderDirectives(
1229 const_cast<ModuleMap *>(this)->resolveHeader(Mod, Header, NeedsFramework);
1234 void ModuleMap::addHeader(Module *Mod, Module::Header Header,
1263 ModuleMap::getContainingModuleMapFile(const Module *Module) const {
1272 ModuleMap::getModuleMapFileForUniquing(const Module *M) const {
1281 void ModuleMap::setInferredModuleAllowedBy(Module *M, const FileEntry *ModMap) {
1287 ModuleMap::canonicalizeModuleMapPath(SmallVectorImpl<char> &Path) {
1329 void ModuleMap::addAdditionalModuleMapFile(const Module *M,
1330 const FileEntry *ModuleMap) {
1331 AdditionalModMaps[M].insert(ModuleMap);
1334 LLVM_DUMP_METHOD void ModuleMap::dump() {
1356 bool ModuleMap::resolveExports(Module *Mod, bool Complain) {
1369 bool ModuleMap::resolveUses(Module *Mod, bool Complain) {
1382 bool ModuleMap::resolveConflicts(Module *Mod, bool Complain) {
1478 ModuleMap &Map;
1546 using Attributes = ModuleMap::Attributes;
1553 ModuleMap &Map, const FileEntry *ModuleMapFile,
2335 ModuleMap::ModuleHeaderRole Role = ModuleMap::NormalHeader;
2338 Role = ModuleMap::PrivateHeader;
2345 Role = ModuleMap::ExcludedHeader;
2349 Role = ModuleMap::ModuleHeaderRole(Role | ModuleMap::TextualHeader);
2354 Role = ModuleMap::ModuleHeaderRole(Role | ModuleMap::TextualHeader);
2523 Map.addHeader(ActiveModule, std::move(Header), ModuleMap::TextualHeader);
3052 bool ModuleMap::parseModuleMapFile(const FileEntry *File, bool IsSystem,