From 0b57cec536236d46e3dba9bd041533462f33dbb7 Mon Sep 17 00:00:00 2001 From: Dimitry Andric Date: Fri, 20 Dec 2019 19:53:05 +0000 Subject: Move all sources from the llvm project into contrib/llvm-project. This uses the new layout of the upstream repository, which was recently migrated to GitHub, and converted into a "monorepo". That is, most of the earlier separate sub-projects with their own branches and tags were consolidated into one top-level directory, and are now branched and tagged together. Updating the vendor area to match this layout is next. --- .../llvm/tools/llvm-cov/SourceCoverageViewHTML.h | 97 ++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 contrib/llvm-project/llvm/tools/llvm-cov/SourceCoverageViewHTML.h (limited to 'contrib/llvm-project/llvm/tools/llvm-cov/SourceCoverageViewHTML.h') diff --git a/contrib/llvm-project/llvm/tools/llvm-cov/SourceCoverageViewHTML.h b/contrib/llvm-project/llvm/tools/llvm-cov/SourceCoverageViewHTML.h new file mode 100644 index 000000000000..9834040008a6 --- /dev/null +++ b/contrib/llvm-project/llvm/tools/llvm-cov/SourceCoverageViewHTML.h @@ -0,0 +1,97 @@ +//===- SourceCoverageViewHTML.h - A html code coverage view ---------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +/// +/// \file This file defines the interface to the html coverage renderer. +/// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_COV_SOURCECOVERAGEVIEWHTML_H +#define LLVM_COV_SOURCECOVERAGEVIEWHTML_H + +#include "SourceCoverageView.h" + +namespace llvm { + +using namespace coverage; + +struct FileCoverageSummary; + +/// A coverage printer for html output. +class CoveragePrinterHTML : public CoveragePrinter { +public: + Expected createViewFile(StringRef Path, + bool InToplevel) override; + + void closeViewFile(OwnedStream OS) override; + + Error createIndexFile(ArrayRef SourceFiles, + const coverage::CoverageMapping &Coverage, + const CoverageFiltersMatchAll &Filters) override; + + CoveragePrinterHTML(const CoverageViewOptions &Opts) + : CoveragePrinter(Opts) {} + +private: + void emitFileSummary(raw_ostream &OS, StringRef SF, + const FileCoverageSummary &FCS, + bool IsTotals = false) const; + std::string buildLinkToFile(StringRef SF, + const FileCoverageSummary &FCS) const; +}; + +/// A code coverage view which supports html-based rendering. +class SourceCoverageViewHTML : public SourceCoverageView { + void renderViewHeader(raw_ostream &OS) override; + + void renderViewFooter(raw_ostream &OS) override; + + void renderSourceName(raw_ostream &OS, bool WholeFile) override; + + void renderLinePrefix(raw_ostream &OS, unsigned ViewDepth) override; + + void renderLineSuffix(raw_ostream &OS, unsigned ViewDepth) override; + + void renderViewDivider(raw_ostream &OS, unsigned ViewDepth) override; + + void renderLine(raw_ostream &OS, LineRef L, const LineCoverageStats &LCS, + unsigned ExpansionCol, unsigned ViewDepth) override; + + void renderExpansionSite(raw_ostream &OS, LineRef L, + const LineCoverageStats &LCS, unsigned ExpansionCol, + unsigned ViewDepth) override; + + void renderExpansionView(raw_ostream &OS, ExpansionView &ESV, + unsigned ViewDepth) override; + + void renderInstantiationView(raw_ostream &OS, InstantiationView &ISV, + unsigned ViewDepth) override; + + void renderLineCoverageColumn(raw_ostream &OS, + const LineCoverageStats &Line) override; + + void renderLineNumberColumn(raw_ostream &OS, unsigned LineNo) override; + + void renderRegionMarkers(raw_ostream &OS, const LineCoverageStats &Line, + unsigned ViewDepth) override; + + void renderTitle(raw_ostream &OS, StringRef Title) override; + + void renderTableHeader(raw_ostream &OS, unsigned FirstUncoveredLineNo, + unsigned IndentLevel) override; + +public: + SourceCoverageViewHTML(StringRef SourceName, const MemoryBuffer &File, + const CoverageViewOptions &Options, + coverage::CoverageData &&CoverageInfo) + : SourceCoverageView(SourceName, File, Options, std::move(CoverageInfo)) { + } +}; + +} // namespace llvm + +#endif // LLVM_COV_SOURCECOVERAGEVIEWHTML_H -- cgit v1.2.3