X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=common%2Ftrace_writer_model.cpp;h=2e858a233971e3434410b8daba6fb5601c66e3a9;hb=bb23f3a0bad625e3c427b9de991d4a42fa22e5f0;hp=dcfcf86dcfe9184a29987b38bf8c00d13cbe44b4;hpb=91392daed9dc6b4c94859dc38c729d91bd9efb40;p=apitrace diff --git a/common/trace_writer_model.cpp b/common/trace_writer_model.cpp index dcfcf86..2e858a2 100644 --- a/common/trace_writer_model.cpp +++ b/common/trace_writer_model.cpp @@ -27,7 +27,7 @@ #include "trace_writer.hpp" -namespace Trace { +namespace trace { class ModelWriter : public Visitor @@ -60,12 +60,16 @@ public: writer.writeFloat(node->value); } + void visit(Double *node) { + writer.writeDouble(node->value); + } + void visit(String *node) { writer.writeString(node->value); } void visit(Enum *node) { - writer.writeEnum(node->sig); + writer.writeEnum(node->sig, node->value); } void visit(Bitmask *node) { @@ -93,15 +97,22 @@ public: } void visit(Pointer *node) { - writer.writeOpaque((const void *) (size_t) node->value); + writer.writePointer(node->value); + } + + void visit(Repr *node) { + writer.beginRepr(); + _visit(node->humanValue); + _visit(node->machineValue); + writer.endRepr(); } void visit(Call *call) { - unsigned call_no = writer.beginEnter(call->sig); + unsigned call_no = writer.beginEnter(call->sig, call->thread_id); for (unsigned i = 0; i < call->args.size(); ++i) { - if (call->args[i]) { + if (call->args[i].value) { writer.beginArg(i); - _visit(call->args[i]); + _visit(call->args[i].value); writer.endArg(); } } @@ -123,5 +134,5 @@ void Writer::writeCall(Call *call) { } -} /* namespace Trace */ +} /* namespace trace */