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/CoverageMapping.h" 21#include "llvm/Support/raw_ostream.h" 22 23namespace llvm { 24namespace coverage { 25 26/// \brief Writer of the filenames section for the instrumentation 27/// based code coverage. 28class CoverageFilenamesSectionWriter { 29 ArrayRef<StringRef> Filenames; 30 31public: 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. 40class CoverageMappingWriter { 41 ArrayRef<unsigned> VirtualFileMapping; 42 ArrayRef<CounterExpression> Expressions; 43 MutableArrayRef<CounterMappingRegion> MappingRegions; 44 45public: 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