From d28d1b8dc02578f48e8363db4fa0632a4fd79666 Mon Sep 17 00:00:00 2001 From: Douglas Gregor Date: Tue, 29 Nov 2011 18:17:59 +0000 Subject: Expose the printing of module maps as part of the ModuleMap::Module interface. No functionality change. llvm-svn: 145411 --- clang/lib/Lex/ModuleMap.cpp | 70 +++++++++++++++++++++++---------------------- 1 file changed, 36 insertions(+), 34 deletions(-) (limited to 'clang/lib/Lex/ModuleMap.cpp') diff --git a/clang/lib/Lex/ModuleMap.cpp b/clang/lib/Lex/ModuleMap.cpp index b8068cc..a25c93b 100644 --- a/clang/lib/Lex/ModuleMap.cpp +++ b/clang/lib/Lex/ModuleMap.cpp @@ -68,6 +68,41 @@ StringRef ModuleMap::Module::getTopLevelModuleName() const { return Top->Name; } +static void indent(llvm::raw_ostream &OS, unsigned Spaces) { + OS << std::string(' ', Spaces); +} + +void ModuleMap::Module::print(llvm::raw_ostream &OS, unsigned Indent) const { + indent(OS, Indent); + if (IsFramework) + OS << "framework "; + if (IsExplicit) + OS << "explicit "; + OS << Name << " {\n"; + + if (UmbrellaHeader) { + indent(OS, Indent + 2); + OS << "umbrella \"" << UmbrellaHeader->getName() << "\"\n"; + } + + for (unsigned I = 0, N = Headers.size(); I != N; ++I) { + indent(OS, Indent + 2); + OS << "header \"" << Headers[I]->getName() << "\"\n"; + } + + for (llvm::StringMap::const_iterator MI = SubModules.begin(), + MIEnd = SubModules.end(); + MI != MIEnd; ++MI) + MI->getValue()->print(OS, Indent + 2); + + indent(OS, Indent); + OS << "}\n"; +} + +void ModuleMap::Module::dump() const { + print(llvm::errs()); +} + //----------------------------------------------------------------------------// // Module map //----------------------------------------------------------------------------// @@ -171,45 +206,12 @@ ModuleMap::inferFrameworkModule(StringRef ModuleName, return Result; } -static void indent(llvm::raw_ostream &OS, unsigned Spaces) { - OS << std::string(' ', Spaces); -} - -static void dumpModule(llvm::raw_ostream &OS, ModuleMap::Module *M, - unsigned Indent) { - indent(OS, Indent); - if (M->IsFramework) - OS << "framework "; - if (M->IsExplicit) - OS << "explicit "; - OS << M->Name << " {\n"; - - if (M->UmbrellaHeader) { - indent(OS, Indent + 2); - OS << "umbrella \"" << M->UmbrellaHeader->getName() << "\"\n"; - } - - for (unsigned I = 0, N = M->Headers.size(); I != N; ++I) { - indent(OS, Indent + 2); - OS << "header \"" << M->Headers[I]->getName() << "\"\n"; - } - - for (llvm::StringMap::iterator - MI = M->SubModules.begin(), - MIEnd = M->SubModules.end(); - MI != MIEnd; ++MI) - dumpModule(llvm::errs(), MI->getValue(), Indent + 2); - - indent(OS, Indent); - OS << "}\n"; -} - void ModuleMap::dump() { llvm::errs() << "Modules:"; for (llvm::StringMap::iterator M = Modules.begin(), MEnd = Modules.end(); M != MEnd; ++M) - dumpModule(llvm::errs(), M->getValue(), 2); + M->getValue()->print(llvm::errs(), 2); llvm::errs() << "Headers:"; for (llvm::DenseMap::iterator -- cgit v1.1