xref: /llvm-project/llvm/tools/llvm-cov/SourceCoverageViewText.h (revision 7937ef37969f7d46d8626e2b61a6ae8361afbea6)
1 //===- SourceCoverageViewText.h - A text-based code coverage view ---------===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 ///
10 /// \file This file defines the interface to the text-based coverage renderer.
11 ///
12 //===----------------------------------------------------------------------===//
13 
14 #ifndef LLVM_COV_SOURCECOVERAGEVIEWTEXT_H
15 #define LLVM_COV_SOURCECOVERAGEVIEWTEXT_H
16 
17 #include "SourceCoverageView.h"
18 
19 namespace llvm {
20 
21 /// \brief A code coverage view which supports text-based rendering.
22 class SourceCoverageViewText : public SourceCoverageView {
23 public:
24   Expected<OwnedStream> createOutputFile(StringRef Path,
25                                          bool InToplevel) override;
26 
27   void closeOutputFile(OwnedStream OS) override;
28 
29 private:
30   void renderSourceName(raw_ostream &OS) override;
31 
32   void renderLinePrefix(raw_ostream &OS, unsigned ViewDepth) override;
33 
34   void renderViewDivider(raw_ostream &OS, unsigned ViewDepth) override;
35 
36   void renderLine(raw_ostream &OS, LineRef L,
37                   const coverage::CoverageSegment *WrappedSegment,
38                   CoverageSegmentArray Segments, unsigned ExpansionCol,
39                   unsigned ViewDepth) override;
40 
41   void renderExpansionSite(raw_ostream &OS, ExpansionView &ESV, LineRef L,
42                            const coverage::CoverageSegment *WrappedSegment,
43                            CoverageSegmentArray Segments, unsigned ExpansionCol,
44                            unsigned ViewDepth) override;
45 
46   void renderExpansionView(raw_ostream &OS, ExpansionView &ESV,
47                            unsigned ViewDepth) override;
48 
49   void renderInstantiationView(raw_ostream &OS, InstantiationView &ISV,
50                                unsigned ViewDepth) override;
51 
52   void renderLineCoverageColumn(raw_ostream &OS,
53                                 const LineCoverageStats &Line) override;
54 
55   void renderLineNumberColumn(raw_ostream &OS, unsigned LineNo) override;
56 
57   void renderRegionMarkers(raw_ostream &OS, CoverageSegmentArray Segments,
58                            unsigned ViewDepth) override;
59 
60 public:
61   SourceCoverageViewText(StringRef SourceName, const MemoryBuffer &File,
62                          const CoverageViewOptions &Options,
63                          coverage::CoverageData &&CoverageInfo)
64       : SourceCoverageView(SourceName, File, Options, std::move(CoverageInfo)) {
65   }
66 };
67 
68 } // namespace llvm
69 
70 #endif // LLVM_COV_SOURCECOVERAGEVIEWTEXT_H
71