X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=trace.py;h=c497a048c86ef02a8353a7ba07dc68559288683d;hb=2afc56d2b510a473d824ef31f30804ae29a59636;hp=47360a88f2940eea7996381cd783ac7c1146f381;hpb=f84c70e16aaf953f8984981456f5baf8eada7153;p=apitrace diff --git a/trace.py b/trace.py index 47360a8..c497a04 100644 --- a/trace.py +++ b/trace.py @@ -51,11 +51,16 @@ class DumpDeclarator(stdapi.OnceVisitor): for type, name in struct.members: self.visit(type) print 'static void __traceStruct%s(const %s &value) {' % (struct.id, struct.expr) - print ' Trace::BeginStruct(%u);' % len(struct.members) + print ' static const char * members[%u] = {' % (len(struct.members),) + for type, name, in struct.members: + print ' "%s",' % (name,) + print ' };' + print ' static const Trace::StructSig sig = {' + print ' %u, "%s", %u, members' % (int(struct.id), struct.name, len(struct.members)) + print ' };' + print ' Trace::BeginStruct(&sig);' for type, name in struct.members: - print ' Trace::BeginMember("%s");' % (name,) dump_instance(type, 'value.%s' % (name,)) - print ' Trace::EndMember();' print ' Trace::EndStruct();' print '}' print