7 #include <google/protobuf/text_format.h> 11 #include "strings/stringpiece.h" 12 #include "util/plang/plang.h" 13 #include "util/sp_task_pool.h" 14 #include "util/status.h" 15 #include "util/pb2json.h" 29 using FieldDescriptor = ::google::protobuf::FieldDescriptor;
30 using Descriptor = ::google::protobuf::Descriptor;
32 using FieldPrinterFactory = std::function<::google::protobuf::TextFormat::FieldValuePrinter*(
33 const FieldDescriptor& fd)>;
38 void Init(
const std::string& fname);
41 uint64_t count()
const {
49 void RegisterFieldPrinter(FieldPrinterFactory pred) {
50 field_printer_cb_ = pred;
54 const Descriptor* GetDescriptor()
const;
57 virtual void LoadFile(
const std::string& fname) = 0;
62 virtual void PostRun() {
65 std::unique_ptr<const ::google::protobuf::Message> descr_msg_;
72 struct PrintSharedData {
75 const Printer* printer =
nullptr;
81 std::unique_ptr<TaskPool> pool_;
82 std::unique_ptr<Printer> printer_;
83 std::unique_ptr<SizeSummarizer> size_summarizer_;
84 std::unique_ptr<plang::Expr> test_expr_;
86 PrintSharedData shared_data_;
89 typedef std::pair<FieldPrinterFactory,
90 std::unique_ptr<::google::protobuf::TextFormat::FieldValuePrinter>>
93 FieldPrinterFactory field_printer_cb_;
99 void LoadFile(
const std::string& fname)
override;
101 void PostRun()
override;
104 std::unique_ptr<file::ListReader> reader_;
105 std::string record_buf_;