1 //===- RecordPrinter.h - FDR Record Printer -------------------------------===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 // 9 // An implementation of the RecordVisitor which prints an individual record's 10 // data in an adhoc format, suitable for human inspection. 11 // 12 //===----------------------------------------------------------------------===// 13 #ifndef LLVM_XRAY_RECORDPRINTER_H 14 #define LLVM_XRAY_RECORDPRINTER_H 15 16 #include "llvm/Support/raw_ostream.h" 17 #include "llvm/XRay/FDRRecords.h" 18 19 namespace llvm { 20 namespace xray { 21 22 class RecordPrinter : public RecordVisitor { 23 raw_ostream &OS; 24 std::string Delim; 25 26 public: 27 explicit RecordPrinter(raw_ostream &O, std::string D) 28 : OS(O), Delim(std::move(D)) {} 29 30 explicit RecordPrinter(raw_ostream &O) : RecordPrinter(O, ""){}; 31 32 Error visit(BufferExtents &) override; 33 Error visit(WallclockRecord &) override; 34 Error visit(NewCPUIDRecord &) override; 35 Error visit(TSCWrapRecord &) override; 36 Error visit(CustomEventRecord &) override; 37 Error visit(CallArgRecord &) override; 38 Error visit(PIDRecord &) override; 39 Error visit(NewBufferRecord &) override; 40 Error visit(EndBufferRecord &) override; 41 Error visit(FunctionRecord &) override; 42 Error visit(CustomEventRecordV5 &) override; 43 Error visit(TypedEventRecord &) override; 44 }; 45 46 } // namespace xray 47 } // namespace llvm 48 49 #endif // LLVM_XRAY_RECORDPRINTER_H 50