1 //=-- CoverageMappingWriter.h - Code coverage mapping writer ------*- C++ -*-=// 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 file contains support for writing coverage mapping data for 11 // instrumentation based coverage. 12 // 13 //===----------------------------------------------------------------------===// 14 15 #ifndef LLVM_PROFILEDATA_COVERAGEMAPPINGWRITER_H 16 #define LLVM_PROFILEDATA_COVERAGEMAPPINGWRITER_H 17 18 #include "llvm/ADT/ArrayRef.h" 19 #include "llvm/ADT/StringMap.h" 20 #include "llvm/ProfileData/Coverage/CoverageMapping.h" 21 #include "llvm/Support/raw_ostream.h" 22 23 namespace llvm { 24 namespace coverage { 25 26 /// \brief Writer of the filenames section for the instrumentation 27 /// based code coverage. 28 class CoverageFilenamesSectionWriter { 29 ArrayRef<StringRef> Filenames; 30 31 public: 32 CoverageFilenamesSectionWriter(ArrayRef<StringRef> Filenames) 33 : Filenames(Filenames) {} 34 35 /// \brief Write encoded filenames to the given output stream. 36 void write(raw_ostream &OS); 37 }; 38 39 /// \brief Writer for instrumentation based coverage mapping data. 40 class CoverageMappingWriter { 41 ArrayRef<unsigned> VirtualFileMapping; 42 ArrayRef<CounterExpression> Expressions; 43 MutableArrayRef<CounterMappingRegion> MappingRegions; 44 45 public: 46 CoverageMappingWriter(ArrayRef<unsigned> VirtualFileMapping, 47 ArrayRef<CounterExpression> Expressions, 48 MutableArrayRef<CounterMappingRegion> MappingRegions) 49 : VirtualFileMapping(VirtualFileMapping), Expressions(Expressions), 50 MappingRegions(MappingRegions) {} 51 52 CoverageMappingWriter(ArrayRef<CounterExpression> Expressions, 53 MutableArrayRef<CounterMappingRegion> MappingRegions) 54 : Expressions(Expressions), MappingRegions(MappingRegions) {} 55 56 /// \brief Write encoded coverage mapping data to the given output stream. 57 void write(raw_ostream &OS); 58 }; 59 60 } // end namespace coverage 61 } // end namespace llvm 62 63 #endif 64