blob: c8c4632c3b9d80ba5f1fa5279c18e9ee41da5b30 [file] [log] [blame]
Vedant Kumarf9151b92016-06-25 02:58:30 +00001//===- SourceCoverageViewText.h - A text-based code coverage view ---------===//
2//
Chandler Carruth2946cd72019-01-19 08:50:56 +00003// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
Vedant Kumarf9151b92016-06-25 02:58:30 +00006//
7//===----------------------------------------------------------------------===//
Vedant Kumaree5a5e92016-06-25 05:48:54 +00008///
9/// \file This file defines the interface to the text-based coverage renderer.
10///
Vedant Kumarf9151b92016-06-25 02:58:30 +000011//===----------------------------------------------------------------------===//
12
13#ifndef LLVM_COV_SOURCECOVERAGEVIEWTEXT_H
14#define LLVM_COV_SOURCECOVERAGEVIEWTEXT_H
15
16#include "SourceCoverageView.h"
17
18namespace llvm {
19
Vedant Kumare955f612017-10-18 23:58:27 +000020using namespace coverage;
21
Adrian Prantl5f8f34e42018-05-01 15:54:18 +000022/// A coverage printer for text output.
Vedant Kumar9cbad2c2016-06-28 16:12:24 +000023class CoveragePrinterText : public CoveragePrinter {
24public:
25 Expected<OwnedStream> createViewFile(StringRef Path,
26 bool InToplevel) override;
27
28 void closeViewFile(OwnedStream OS) override;
29
Vedant Kumarbc647982016-09-23 18:57:32 +000030 Error createIndexFile(ArrayRef<std::string> SourceFiles,
Vedant Kumare955f612017-10-18 23:58:27 +000031 const CoverageMapping &Coverage,
Sean Evesond932b2d2017-10-03 11:05:28 +000032 const CoverageFiltersMatchAll &Filters) override;
Vedant Kumar9cbad2c2016-06-28 16:12:24 +000033
34 CoveragePrinterText(const CoverageViewOptions &Opts)
35 : CoveragePrinter(Opts) {}
36};
37
Adrian Prantl5f8f34e42018-05-01 15:54:18 +000038/// A code coverage view which supports text-based rendering.
Vedant Kumarf9151b92016-06-25 02:58:30 +000039class SourceCoverageViewText : public SourceCoverageView {
Vedant Kumar8d74cb22016-06-29 00:38:21 +000040 void renderViewHeader(raw_ostream &OS) override;
41
42 void renderViewFooter(raw_ostream &OS) override;
43
Vedant Kumarb1c174a2016-09-10 19:37:26 +000044 void renderSourceName(raw_ostream &OS, bool WholeFile) override;
Vedant Kumarf9151b92016-06-25 02:58:30 +000045
46 void renderLinePrefix(raw_ostream &OS, unsigned ViewDepth) override;
47
Vedant Kumar8d74cb22016-06-29 00:38:21 +000048 void renderLineSuffix(raw_ostream &OS, unsigned ViewDepth) override;
49
Vedant Kumarf9151b92016-06-25 02:58:30 +000050 void renderViewDivider(raw_ostream &OS, unsigned ViewDepth) override;
51
Vedant Kumar08a0a312017-10-18 18:52:28 +000052 void renderLine(raw_ostream &OS, LineRef L, const LineCoverageStats &LCS,
53 unsigned ExpansionCol, unsigned ViewDepth) override;
Vedant Kumarf9151b92016-06-25 02:58:30 +000054
Vedant Kumar8d74cb22016-06-29 00:38:21 +000055 void renderExpansionSite(raw_ostream &OS, LineRef L,
Vedant Kumar08a0a312017-10-18 18:52:28 +000056 const LineCoverageStats &LCS, unsigned ExpansionCol,
Vedant Kumar861a19c2016-06-26 02:45:13 +000057 unsigned ViewDepth) override;
58
59 void renderExpansionView(raw_ostream &OS, ExpansionView &ESV,
60 unsigned ViewDepth) override;
Vedant Kumarf9151b92016-06-25 02:58:30 +000061
62 void renderInstantiationView(raw_ostream &OS, InstantiationView &ISV,
63 unsigned ViewDepth) override;
64
65 void renderLineCoverageColumn(raw_ostream &OS,
66 const LineCoverageStats &Line) override;
67
68 void renderLineNumberColumn(raw_ostream &OS, unsigned LineNo) override;
69
Vedant Kumar08a0a312017-10-18 18:52:28 +000070 void renderRegionMarkers(raw_ostream &OS, const LineCoverageStats &Line,
Vedant Kumarf9151b92016-06-25 02:58:30 +000071 unsigned ViewDepth) override;
72
Vedant Kumarb2edd112016-09-15 04:45:59 +000073 void renderTitle(raw_ostream &OS, StringRef Title) override;
Ying Yi84dc9712016-08-24 14:27:23 +000074
Vedant Kumarb1c174a2016-09-10 19:37:26 +000075 void renderTableHeader(raw_ostream &OS, unsigned FirstUncoveredLineNo,
76 unsigned IndentLevel) override;
Ying Yi84dc9712016-08-24 14:27:23 +000077
Vedant Kumarf9151b92016-06-25 02:58:30 +000078public:
79 SourceCoverageViewText(StringRef SourceName, const MemoryBuffer &File,
80 const CoverageViewOptions &Options,
Vedant Kumare955f612017-10-18 23:58:27 +000081 CoverageData &&CoverageInfo)
Vedant Kumar0053c0b2016-09-08 00:56:48 +000082 : SourceCoverageView(SourceName, File, Options, std::move(CoverageInfo)) {
83 }
Vedant Kumarf9151b92016-06-25 02:58:30 +000084};
85
86} // namespace llvm
87
88#endif // LLVM_COV_SOURCECOVERAGEVIEWTEXT_H