xref: /aosp_15_r20/external/llvm/tools/llvm-cov/SourceCoverageViewHTML.h (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker //===- SourceCoverageViewHTML.h - A html code coverage view ---------------===//
2*9880d681SAndroid Build Coastguard Worker //
3*9880d681SAndroid Build Coastguard Worker //                     The LLVM Compiler Infrastructure
4*9880d681SAndroid Build Coastguard Worker //
5*9880d681SAndroid Build Coastguard Worker // This file is distributed under the University of Illinois Open Source
6*9880d681SAndroid Build Coastguard Worker // License. See LICENSE.TXT for details.
7*9880d681SAndroid Build Coastguard Worker //
8*9880d681SAndroid Build Coastguard Worker //===----------------------------------------------------------------------===//
9*9880d681SAndroid Build Coastguard Worker ///
10*9880d681SAndroid Build Coastguard Worker /// \file This file defines the interface to the html coverage renderer.
11*9880d681SAndroid Build Coastguard Worker ///
12*9880d681SAndroid Build Coastguard Worker //===----------------------------------------------------------------------===//
13*9880d681SAndroid Build Coastguard Worker 
14*9880d681SAndroid Build Coastguard Worker #ifndef LLVM_COV_SOURCECOVERAGEVIEWHTML_H
15*9880d681SAndroid Build Coastguard Worker #define LLVM_COV_SOURCECOVERAGEVIEWHTML_H
16*9880d681SAndroid Build Coastguard Worker 
17*9880d681SAndroid Build Coastguard Worker #include "SourceCoverageView.h"
18*9880d681SAndroid Build Coastguard Worker 
19*9880d681SAndroid Build Coastguard Worker namespace llvm {
20*9880d681SAndroid Build Coastguard Worker 
21*9880d681SAndroid Build Coastguard Worker /// \brief A coverage printer for html output.
22*9880d681SAndroid Build Coastguard Worker class CoveragePrinterHTML : public CoveragePrinter {
23*9880d681SAndroid Build Coastguard Worker public:
24*9880d681SAndroid Build Coastguard Worker   Expected<OwnedStream> createViewFile(StringRef Path,
25*9880d681SAndroid Build Coastguard Worker                                        bool InToplevel) override;
26*9880d681SAndroid Build Coastguard Worker 
27*9880d681SAndroid Build Coastguard Worker   void closeViewFile(OwnedStream OS) override;
28*9880d681SAndroid Build Coastguard Worker 
29*9880d681SAndroid Build Coastguard Worker   Error createIndexFile(ArrayRef<StringRef> SourceFiles) override;
30*9880d681SAndroid Build Coastguard Worker 
CoveragePrinterHTML(const CoverageViewOptions & Opts)31*9880d681SAndroid Build Coastguard Worker   CoveragePrinterHTML(const CoverageViewOptions &Opts)
32*9880d681SAndroid Build Coastguard Worker       : CoveragePrinter(Opts) {}
33*9880d681SAndroid Build Coastguard Worker };
34*9880d681SAndroid Build Coastguard Worker 
35*9880d681SAndroid Build Coastguard Worker /// \brief A code coverage view which supports html-based rendering.
36*9880d681SAndroid Build Coastguard Worker class SourceCoverageViewHTML : public SourceCoverageView {
37*9880d681SAndroid Build Coastguard Worker   void renderViewHeader(raw_ostream &OS) override;
38*9880d681SAndroid Build Coastguard Worker 
39*9880d681SAndroid Build Coastguard Worker   void renderViewFooter(raw_ostream &OS) override;
40*9880d681SAndroid Build Coastguard Worker 
41*9880d681SAndroid Build Coastguard Worker   void renderSourceName(raw_ostream &OS) override;
42*9880d681SAndroid Build Coastguard Worker 
43*9880d681SAndroid Build Coastguard Worker   void renderLinePrefix(raw_ostream &OS, unsigned ViewDepth) override;
44*9880d681SAndroid Build Coastguard Worker 
45*9880d681SAndroid Build Coastguard Worker   void renderLineSuffix(raw_ostream &OS, unsigned ViewDepth) override;
46*9880d681SAndroid Build Coastguard Worker 
47*9880d681SAndroid Build Coastguard Worker   void renderViewDivider(raw_ostream &OS, unsigned ViewDepth) override;
48*9880d681SAndroid Build Coastguard Worker 
49*9880d681SAndroid Build Coastguard Worker   void renderLine(raw_ostream &OS, LineRef L,
50*9880d681SAndroid Build Coastguard Worker                   const coverage::CoverageSegment *WrappedSegment,
51*9880d681SAndroid Build Coastguard Worker                   CoverageSegmentArray Segments, unsigned ExpansionCol,
52*9880d681SAndroid Build Coastguard Worker                   unsigned ViewDepth) override;
53*9880d681SAndroid Build Coastguard Worker 
54*9880d681SAndroid Build Coastguard Worker   void renderExpansionSite(raw_ostream &OS, LineRef L,
55*9880d681SAndroid Build Coastguard Worker                            const coverage::CoverageSegment *WrappedSegment,
56*9880d681SAndroid Build Coastguard Worker                            CoverageSegmentArray Segments, unsigned ExpansionCol,
57*9880d681SAndroid Build Coastguard Worker                            unsigned ViewDepth) override;
58*9880d681SAndroid Build Coastguard Worker 
59*9880d681SAndroid Build Coastguard Worker   void renderExpansionView(raw_ostream &OS, ExpansionView &ESV,
60*9880d681SAndroid Build Coastguard Worker                            unsigned ViewDepth) override;
61*9880d681SAndroid Build Coastguard Worker 
62*9880d681SAndroid Build Coastguard Worker   void renderInstantiationView(raw_ostream &OS, InstantiationView &ISV,
63*9880d681SAndroid Build Coastguard Worker                                unsigned ViewDepth) override;
64*9880d681SAndroid Build Coastguard Worker 
65*9880d681SAndroid Build Coastguard Worker   void renderLineCoverageColumn(raw_ostream &OS,
66*9880d681SAndroid Build Coastguard Worker                                 const LineCoverageStats &Line) override;
67*9880d681SAndroid Build Coastguard Worker 
68*9880d681SAndroid Build Coastguard Worker   void renderLineNumberColumn(raw_ostream &OS, unsigned LineNo) override;
69*9880d681SAndroid Build Coastguard Worker 
70*9880d681SAndroid Build Coastguard Worker   void renderRegionMarkers(raw_ostream &OS, CoverageSegmentArray Segments,
71*9880d681SAndroid Build Coastguard Worker                            unsigned ViewDepth) override;
72*9880d681SAndroid Build Coastguard Worker 
73*9880d681SAndroid Build Coastguard Worker public:
SourceCoverageViewHTML(StringRef SourceName,const MemoryBuffer & File,const CoverageViewOptions & Options,coverage::CoverageData && CoverageInfo)74*9880d681SAndroid Build Coastguard Worker   SourceCoverageViewHTML(StringRef SourceName, const MemoryBuffer &File,
75*9880d681SAndroid Build Coastguard Worker                          const CoverageViewOptions &Options,
76*9880d681SAndroid Build Coastguard Worker                          coverage::CoverageData &&CoverageInfo)
77*9880d681SAndroid Build Coastguard Worker       : SourceCoverageView(SourceName, File, Options, std::move(CoverageInfo)) {
78*9880d681SAndroid Build Coastguard Worker   }
79*9880d681SAndroid Build Coastguard Worker };
80*9880d681SAndroid Build Coastguard Worker 
81*9880d681SAndroid Build Coastguard Worker } // namespace llvm
82*9880d681SAndroid Build Coastguard Worker 
83*9880d681SAndroid Build Coastguard Worker #endif // LLVM_COV_SOURCECOVERAGEVIEWHTML_H
84