xref: /freebsd-src/contrib/llvm-project/llvm/tools/llvm-cov/SourceCoverageViewText.h (revision e8d8bef961a50d4dc22501cde4fb9fb0be1b2532)
10b57cec5SDimitry Andric //===- SourceCoverageViewText.h - A text-based code coverage view ---------===//
20b57cec5SDimitry Andric //
30b57cec5SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
40b57cec5SDimitry Andric // See https://llvm.org/LICENSE.txt for license information.
50b57cec5SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
60b57cec5SDimitry Andric //
70b57cec5SDimitry Andric //===----------------------------------------------------------------------===//
80b57cec5SDimitry Andric ///
90b57cec5SDimitry Andric /// \file This file defines the interface to the text-based coverage renderer.
100b57cec5SDimitry Andric ///
110b57cec5SDimitry Andric //===----------------------------------------------------------------------===//
120b57cec5SDimitry Andric 
130b57cec5SDimitry Andric #ifndef LLVM_COV_SOURCECOVERAGEVIEWTEXT_H
140b57cec5SDimitry Andric #define LLVM_COV_SOURCECOVERAGEVIEWTEXT_H
150b57cec5SDimitry Andric 
160b57cec5SDimitry Andric #include "SourceCoverageView.h"
170b57cec5SDimitry Andric 
180b57cec5SDimitry Andric namespace llvm {
190b57cec5SDimitry Andric 
200b57cec5SDimitry Andric using namespace coverage;
210b57cec5SDimitry Andric 
220b57cec5SDimitry Andric /// A coverage printer for text output.
230b57cec5SDimitry Andric class CoveragePrinterText : public CoveragePrinter {
240b57cec5SDimitry Andric public:
250b57cec5SDimitry Andric   Expected<OwnedStream> createViewFile(StringRef Path,
260b57cec5SDimitry Andric                                        bool InToplevel) override;
270b57cec5SDimitry Andric 
280b57cec5SDimitry Andric   void closeViewFile(OwnedStream OS) override;
290b57cec5SDimitry Andric 
300b57cec5SDimitry Andric   Error createIndexFile(ArrayRef<std::string> SourceFiles,
310b57cec5SDimitry Andric                         const CoverageMapping &Coverage,
320b57cec5SDimitry Andric                         const CoverageFiltersMatchAll &Filters) override;
330b57cec5SDimitry Andric 
340b57cec5SDimitry Andric   CoveragePrinterText(const CoverageViewOptions &Opts)
350b57cec5SDimitry Andric       : CoveragePrinter(Opts) {}
360b57cec5SDimitry Andric };
370b57cec5SDimitry Andric 
380b57cec5SDimitry Andric /// A code coverage view which supports text-based rendering.
390b57cec5SDimitry Andric class SourceCoverageViewText : public SourceCoverageView {
400b57cec5SDimitry Andric   void renderViewHeader(raw_ostream &OS) override;
410b57cec5SDimitry Andric 
420b57cec5SDimitry Andric   void renderViewFooter(raw_ostream &OS) override;
430b57cec5SDimitry Andric 
440b57cec5SDimitry Andric   void renderSourceName(raw_ostream &OS, bool WholeFile) override;
450b57cec5SDimitry Andric 
460b57cec5SDimitry Andric   void renderLinePrefix(raw_ostream &OS, unsigned ViewDepth) override;
470b57cec5SDimitry Andric 
480b57cec5SDimitry Andric   void renderLineSuffix(raw_ostream &OS, unsigned ViewDepth) override;
490b57cec5SDimitry Andric 
500b57cec5SDimitry Andric   void renderViewDivider(raw_ostream &OS, unsigned ViewDepth) override;
510b57cec5SDimitry Andric 
520b57cec5SDimitry Andric   void renderLine(raw_ostream &OS, LineRef L, const LineCoverageStats &LCS,
530b57cec5SDimitry Andric                   unsigned ExpansionCol, unsigned ViewDepth) override;
540b57cec5SDimitry Andric 
550b57cec5SDimitry Andric   void renderExpansionSite(raw_ostream &OS, LineRef L,
560b57cec5SDimitry Andric                            const LineCoverageStats &LCS, unsigned ExpansionCol,
570b57cec5SDimitry Andric                            unsigned ViewDepth) override;
580b57cec5SDimitry Andric 
590b57cec5SDimitry Andric   void renderExpansionView(raw_ostream &OS, ExpansionView &ESV,
600b57cec5SDimitry Andric                            unsigned ViewDepth) override;
610b57cec5SDimitry Andric 
62*e8d8bef9SDimitry Andric   void renderBranchView(raw_ostream &OS, BranchView &BRV,
63*e8d8bef9SDimitry Andric                         unsigned ViewDepth) override;
64*e8d8bef9SDimitry Andric 
650b57cec5SDimitry Andric   void renderInstantiationView(raw_ostream &OS, InstantiationView &ISV,
660b57cec5SDimitry Andric                                unsigned ViewDepth) override;
670b57cec5SDimitry Andric 
680b57cec5SDimitry Andric   void renderLineCoverageColumn(raw_ostream &OS,
690b57cec5SDimitry Andric                                 const LineCoverageStats &Line) override;
700b57cec5SDimitry Andric 
710b57cec5SDimitry Andric   void renderLineNumberColumn(raw_ostream &OS, unsigned LineNo) override;
720b57cec5SDimitry Andric 
730b57cec5SDimitry Andric   void renderRegionMarkers(raw_ostream &OS, const LineCoverageStats &Line,
740b57cec5SDimitry Andric                            unsigned ViewDepth) override;
750b57cec5SDimitry Andric 
760b57cec5SDimitry Andric   void renderTitle(raw_ostream &OS, StringRef Title) override;
770b57cec5SDimitry Andric 
780b57cec5SDimitry Andric   void renderTableHeader(raw_ostream &OS, unsigned FirstUncoveredLineNo,
790b57cec5SDimitry Andric                          unsigned IndentLevel) override;
800b57cec5SDimitry Andric 
810b57cec5SDimitry Andric public:
820b57cec5SDimitry Andric   SourceCoverageViewText(StringRef SourceName, const MemoryBuffer &File,
830b57cec5SDimitry Andric                          const CoverageViewOptions &Options,
840b57cec5SDimitry Andric                          CoverageData &&CoverageInfo)
850b57cec5SDimitry Andric       : SourceCoverageView(SourceName, File, Options, std::move(CoverageInfo)) {
860b57cec5SDimitry Andric   }
870b57cec5SDimitry Andric };
880b57cec5SDimitry Andric 
890b57cec5SDimitry Andric } // namespace llvm
900b57cec5SDimitry Andric 
910b57cec5SDimitry Andric #endif // LLVM_COV_SOURCECOVERAGEVIEWTEXT_H
92