File indexing completed on 2026-05-10 08:44:45
0001
0002
0003
0004
0005
0006
0007
0008 #ifndef LLVM_XRAY_FDRRECORDPRODUCER_H
0009 #define LLVM_XRAY_FDRRECORDPRODUCER_H
0010
0011 #include "llvm/Support/Error.h"
0012 #include "llvm/XRay/FDRRecords.h"
0013 #include "llvm/XRay/XRayRecord.h"
0014 #include <memory>
0015
0016 namespace llvm {
0017 namespace xray {
0018
0019 class RecordProducer {
0020 public:
0021
0022
0023 virtual Expected<std::unique_ptr<Record>> produce() = 0;
0024 virtual ~RecordProducer() = default;
0025 };
0026
0027 class FileBasedRecordProducer : public RecordProducer {
0028 const XRayFileHeader &Header;
0029 DataExtractor &E;
0030 uint64_t &OffsetPtr;
0031 uint32_t CurrentBufferBytes = 0;
0032
0033
0034
0035 Expected<std::unique_ptr<Record>> findNextBufferExtent();
0036
0037 public:
0038 FileBasedRecordProducer(const XRayFileHeader &FH, DataExtractor &DE,
0039 uint64_t &OP)
0040 : Header(FH), E(DE), OffsetPtr(OP) {}
0041
0042
0043
0044 Expected<std::unique_ptr<Record>> produce() override;
0045 };
0046
0047 }
0048 }
0049
0050 #endif