15 #ifndef LLVM_PROFILEDATA_COVERAGEMAPPINGREADER_H
16 #define LLVM_PROFILEDATA_COVERAGEMAPPINGREADER_H
31 class CoverageMappingReader;
44 :
public std::iterator<std::input_iterator_tag, CoverageMappingRecord> {
61 return Reader == RHS.Reader;
64 return Reader != RHS.Reader;
86 std::error_code
readIntMax(uint64_t &Result, uint64_t MaxPlus1);
87 std::error_code
readSize(uint64_t &Result);
93 std::vector<StringRef> &Filenames;
103 std::error_code
read();
109 std::vector<StringRef> &Filenames;
110 std::vector<CounterExpression> &Expressions;
111 std::vector<CounterMappingRegion> &MappingRegions;
120 std::vector<StringRef> &Filenames,
121 std::vector<CounterExpression> &Expressions,
122 std::vector<CounterMappingRegion> &MappingRegions)
124 TranslationUnitFilenames(TranslationUnitFilenames),
125 Filenames(Filenames), Expressions(Expressions),
126 MappingRegions(MappingRegions) {}
128 std::error_code
read();
131 std::error_code decodeCounter(
unsigned Value,
Counter &C);
132 std::error_code readCounter(
Counter &C);
134 readMappingRegionsSubArray(std::vector<CounterMappingRegion> &MappingRegions,
135 unsigned InferredFileID,
size_t NumFileIDs);
153 : Version(Version), FunctionName(FunctionName),
154 FunctionHash(FunctionHash), CoverageMapping(CoverageMapping),
155 FilenamesBegin(FilenamesBegin), FilenamesSize(FilenamesSize) {}
159 std::vector<StringRef> Filenames;
160 std::vector<ProfileMappingRecord> MappingRecords;
161 size_t CurrentRecord;
162 std::vector<StringRef> FunctionsFilenames;
163 std::vector<CounterExpression> Expressions;
164 std::vector<CounterMappingRegion> MappingRegions;
173 create(std::unique_ptr<MemoryBuffer> &ObjectBuffer,
CoverageMappingIterator begin()
Represents either an error or a value T.
std::error_code readNextRecord(CoverageMappingRecord &Record) override
Reader for the raw coverage mapping data.
RawCoverageFilenamesReader(StringRef Data, std::vector< StringRef > &Filenames)
Base class for the raw coverage mapping and filenames data readers.
CoverageMappingIterator(CoverageMappingReader *Reader)
CoverageMappingRecord * operator->()
ArrayRef< CounterMappingRegion > MappingRegions
CoverageMappingRecord & operator*()
std::error_code readULEB128(uint64_t &Result)
Reader for the coverage mapping data that is emitted by the frontend and stored in an object file...
RawCoverageMappingReader(StringRef MappingData, ArrayRef< StringRef > TranslationUnitFilenames, std::vector< StringRef > &Filenames, std::vector< CounterExpression > &Expressions, std::vector< CounterMappingRegion > &MappingRegions)
ArrayRef< CounterExpression > Expressions
ProfileMappingRecord(CoverageMappingVersion Version, StringRef FunctionName, uint64_t FunctionHash, StringRef CoverageMapping, size_t FilenamesBegin, size_t FilenamesSize)
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory)...
RawCoverageReader(StringRef Data)
StringRef CoverageMapping
ArrayRef< StringRef > Filenames
virtual ~CoverageMappingReader()
Coverage mapping information for a single function.
Reader for the raw coverage filenames.
static ErrorOr< std::unique_ptr< BinaryCoverageReader > > create(std::unique_ptr< MemoryBuffer > &ObjectBuffer, StringRef Arch)
std::error_code readString(StringRef &Result)
bool operator==(const CoverageMappingIterator &RHS)
A file format agnostic iterator over coverage mapping data.
CoverageMappingIterator()
CoverageMappingVersion Version
CoverageMappingIterator end()
The mapping of profile information to coverage data.
LLVM Value Representation.
CoverageMappingIterator & operator++()
std::error_code readIntMax(uint64_t &Result, uint64_t MaxPlus1)
std::error_code readSize(uint64_t &Result)
StringRef - Represent a constant reference to a string, i.e.
virtual std::error_code readNextRecord(CoverageMappingRecord &Record)=0
bool operator!=(const CoverageMappingIterator &RHS)
A Counter is an abstract value that describes how to compute the execution count for a region of code...