[OCaml] PR22014: OCaml bindings didn't link to libLLVM-*.so with -Wl,--as-needed
[oota-llvm.git] / tools / llvm-cov / CoverageSummary.h
1 //===- CoverageSummary.h - Code coverage summary --------------------------===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 //
10 // This class implements data management and rendering for the code coverage
11 // summaries of all files and functions.
12 //
13 //===----------------------------------------------------------------------===//
14
15 #ifndef LLVM_COV_COVERAGESUMMARY_H
16 #define LLVM_COV_COVERAGESUMMARY_H
17
18 #include "CoverageSummaryInfo.h"
19 #include <vector>
20
21 namespace llvm {
22
23 /// \brief Manager for the function and file code coverage summaries.
24 class CoverageSummary {
25   std::vector<StringRef> Filenames;
26   std::vector<FunctionCoverageSummary> FunctionSummaries;
27   std::vector<std::pair<unsigned, unsigned>> FunctionSummariesFileIDs;
28   std::vector<FileCoverageSummary> FileSummaries;
29
30   unsigned getFileID(StringRef Filename);
31
32 public:
33   void createSummaries(const coverage::CoverageMapping &Coverage);
34
35   ArrayRef<FileCoverageSummary> getFileSummaries() { return FileSummaries; }
36
37   FileCoverageSummary getCombinedFileSummaries();
38
39   void render(const FunctionCoverageSummary &Summary, raw_ostream &OS);
40
41   void render(raw_ostream &OS);
42 };
43 }
44
45 #endif // LLVM_COV_COVERAGESUMMARY_H