[llvm-cov] Separate presentation logic from formatting logic, NFC
This makes it easier to add renderers for new kinds of output formats.
- Define and document a pure-virtual coverage rendering interface.
- Move the text-based rendering logic into its a new file.
- Re-work the API to better reflect the presentation/formatting split.
llvm-svn: 273767
diff --git a/llvm/tools/llvm-cov/CodeCoverage.cpp b/llvm/tools/llvm-cov/CodeCoverage.cpp
index a59860b..6ca2141 100644
--- a/llvm/tools/llvm-cov/CodeCoverage.cpp
+++ b/llvm/tools/llvm-cov/CodeCoverage.cpp
@@ -132,9 +132,9 @@
continue;
auto SubViewExpansions = ExpansionCoverage.getExpansions();
- auto SubView = llvm::make_unique<SourceCoverageView>(
- Expansion.Function.Name, SourceBuffer.get(), ViewOpts,
- std::move(ExpansionCoverage));
+ auto SubView =
+ SourceCoverageView::create(Expansion.Function.Name, SourceBuffer.get(),
+ ViewOpts, std::move(ExpansionCoverage));
attachExpansionSubViews(*SubView, SubViewExpansions, Coverage);
View.addExpansion(Expansion.Region, std::move(SubView));
}
@@ -151,8 +151,8 @@
return nullptr;
auto Expansions = FunctionCoverage.getExpansions();
- auto View = llvm::make_unique<SourceCoverageView>(
- Function.Name, SourceBuffer.get(), ViewOpts, std::move(FunctionCoverage));
+ auto View = SourceCoverageView::create(Function.Name, SourceBuffer.get(),
+ ViewOpts, std::move(FunctionCoverage));
attachExpansionSubViews(*View, Expansions, Coverage);
return View;
@@ -169,16 +169,16 @@
return nullptr;
auto Expansions = FileCoverage.getExpansions();
- auto View = llvm::make_unique<SourceCoverageView>(
- SourceFile, SourceBuffer.get(), ViewOpts, std::move(FileCoverage));
+ auto View = SourceCoverageView::create(SourceFile, SourceBuffer.get(),
+ ViewOpts, std::move(FileCoverage));
attachExpansionSubViews(*View, Expansions, Coverage);
for (auto Function : Coverage.getInstantiations(SourceFile)) {
auto SubViewCoverage = Coverage.getCoverageForFunction(*Function);
auto SubViewExpansions = SubViewCoverage.getExpansions();
- auto SubView = llvm::make_unique<SourceCoverageView>(
- Function->Name, SourceBuffer.get(), ViewOpts,
- std::move(SubViewCoverage));
+ auto SubView =
+ SourceCoverageView::create(Function->Name, SourceBuffer.get(), ViewOpts,
+ std::move(SubViewCoverage));
attachExpansionSubViews(*SubView, SubViewExpansions, Coverage);
if (SubView) {
@@ -428,8 +428,7 @@
<< "\n";
continue;
}
- mainView->renderSourceName(outs());
- mainView->render(outs(), /*WholeFile=*/false);
+ mainView->print(outs(), /*WholeFile=*/false, /*ShowSourceName=*/true);
outs() << "\n";
}
return 0;
@@ -452,10 +451,7 @@
continue;
}
- if (ShowFilenames)
- mainView->renderSourceName(outs());
-
- mainView->render(outs(), /*Wholefile=*/true);
+ mainView->print(outs(), /*Wholefile=*/true, /*ShowSourceName=*/ShowFilenames);
if (SourceFiles.size() > 1)
outs() << "\n";
}