52 lines · c
1//===- CoverageExporter.h - Code coverage exporter ------------------------===//2//3// 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-exception6//7//===----------------------------------------------------------------------===//8//9// This class defines a code coverage exporter interface.10//11//===----------------------------------------------------------------------===//12 13#ifndef LLVM_COV_COVERAGEEXPORTER_H14#define LLVM_COV_COVERAGEEXPORTER_H15 16#include "CoverageFilters.h"17#include "CoverageSummaryInfo.h"18#include "CoverageViewOptions.h"19#include "llvm/ProfileData/Coverage/CoverageMapping.h"20 21namespace llvm {22 23/// Exports the code coverage information.24class CoverageExporter {25protected:26 /// The full CoverageMapping object to export.27 const coverage::CoverageMapping &Coverage;28 29 /// The options passed to the tool.30 const CoverageViewOptions &Options;31 32 /// Output stream to print to.33 raw_ostream &OS;34 35 CoverageExporter(const coverage::CoverageMapping &CoverageMapping,36 const CoverageViewOptions &Options, raw_ostream &OS)37 : Coverage(CoverageMapping), Options(Options), OS(OS) {}38 39public:40 virtual ~CoverageExporter() = default;41 42 /// Render the CoverageMapping object.43 virtual void renderRoot(const CoverageFilters &IgnoreFilters) = 0;44 45 /// Render the CoverageMapping object for specified source files.46 virtual void renderRoot(ArrayRef<std::string> SourceFiles) = 0;47};48 49} // end namespace llvm50 51#endif // LLVM_COV_COVERAGEEXPORTER_H52