aboutsummaryrefslogtreecommitdiffstats
path: root/tools/llvm-cov/CoverageSummary.h
blob: 9dbebde949e5ce5a09da7f808250165f17f1a6b8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
//===- CoverageSummary.h - Code coverage summary --------------------------===//
//
//                     The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//
// This class implements data management and rendering for the code coverage
// summaries of all files and functions.
//
//===----------------------------------------------------------------------===//

#ifndef LLVM_COV_COVERAGESUMMARY_H
#define LLVM_COV_COVERAGESUMMARY_H

#include "CoverageSummaryInfo.h"
#include <vector>

namespace llvm {

/// \brief Manager for the function and file code coverage summaries.
class CoverageSummary {
  std::vector<StringRef> Filenames;
  std::vector<FunctionCoverageSummary> FunctionSummaries;
  std::vector<std::pair<unsigned, unsigned>> FunctionSummariesFileIDs;
  std::vector<FileCoverageSummary> FileSummaries;

  unsigned getFileID(StringRef Filename);

public:
  void createSummaries(const coverage::CoverageMapping &Coverage);

  ArrayRef<FileCoverageSummary> getFileSummaries() { return FileSummaries; }

  FileCoverageSummary getCombinedFileSummaries();

  void render(const FunctionCoverageSummary &Summary, raw_ostream &OS);

  void render(raw_ostream &OS);
};
}

#endif // LLVM_COV_COVERAGESUMMARY_H