summaryrefslogtreecommitdiffstats
path: root/llvm/tools/llvm-cov/CoverageExporter.h
diff options
context:
space:
mode:
authorMax Moroz <mmoroz@chromium.org>2018-01-04 19:33:29 +0000
committerMax Moroz <mmoroz@chromium.org>2018-01-04 19:33:29 +0000
commit1ef3a778ac47564aa5a7f04bbf572d22d1c616fb (patch)
treeb228056baa1272298a67b3db879ee593e3f72cb6 /llvm/tools/llvm-cov/CoverageExporter.h
parenta47289a2ee77963de3e0dfafed0490ac3db449d2 (diff)
downloadbcm5719-llvm-1ef3a778ac47564aa5a7f04bbf572d22d1c616fb.tar.gz
bcm5719-llvm-1ef3a778ac47564aa5a7f04bbf572d22d1c616fb.zip
[llvm-cov] Refactor "export" command implementation and add support for SOURCES.
Summary: Define an interface for Exporter + split JSON exporter into .h and .cpp. Reviewers: vsk, morehouse Reviewed By: vsk Subscribers: llvm-commits, Dor1s, kcc Differential Revision: https://reviews.llvm.org/D41600 llvm-svn: 321815
Diffstat (limited to 'llvm/tools/llvm-cov/CoverageExporter.h')
-rw-r--r--llvm/tools/llvm-cov/CoverageExporter.h51
1 files changed, 51 insertions, 0 deletions
diff --git a/llvm/tools/llvm-cov/CoverageExporter.h b/llvm/tools/llvm-cov/CoverageExporter.h
new file mode 100644
index 00000000000..af9c8f062e4
--- /dev/null
+++ b/llvm/tools/llvm-cov/CoverageExporter.h
@@ -0,0 +1,51 @@
+//===- CoverageExporter.h - Code coverage exporter ------------------------===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// This class defines a code coverage exporter interface.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_COV_COVERAGEEXPORTER_H
+#define LLVM_COV_COVERAGEEXPORTER_H
+
+#include "CoverageSummaryInfo.h"
+#include "CoverageViewOptions.h"
+#include "llvm/ProfileData/Coverage/CoverageMapping.h"
+
+namespace llvm {
+
+/// \brief Exports the code coverage information.
+class CoverageExporter {
+protected:
+ /// \brief The full CoverageMapping object to export.
+ const coverage::CoverageMapping &Coverage;
+
+ /// \brief The options passed to the tool.
+ const CoverageViewOptions &Options;
+
+ /// \brief Output stream to print JSON to.
+ raw_ostream &OS;
+
+ CoverageExporter(const coverage::CoverageMapping &CoverageMapping,
+ const CoverageViewOptions &Options, raw_ostream &OS)
+ : Coverage(CoverageMapping), Options(Options), OS(OS) {}
+
+public:
+ virtual ~CoverageExporter(){};
+
+ /// \brief Render the CoverageMapping object.
+ virtual void renderRoot() = 0;
+
+ /// \brief Render the CoverageMapping object for specified source files.
+ virtual void renderRoot(const std::vector<std::string> &SourceFiles) = 0;
+};
+
+} // end namespace llvm
+
+#endif // LLVM_COV_COVERAGEEXPORTER_H
OpenPOWER on IntegriCloud