diff options
author | José Fonseca <jfonseca@vmware.com> | 2010-11-26 15:26:14 +0000 |
---|---|---|
committer | José Fonseca <jfonseca@vmware.com> | 2010-11-26 15:26:14 +0000 |
commit | f84c70e16aaf953f8984981456f5baf8eada7153 (patch) | |
tree | 1b1584e39e4df5dea4a0b3cd750f53060e57b70d /trace.py | |
parent | 2250a0e42a0fcad757f38121859ce7de10384df3 (diff) |
More efficient enum representation.
Diffstat (limited to 'trace.py')
-rw-r--r-- | trace.py | 13 |
1 files changed, 10 insertions, 3 deletions
@@ -68,15 +68,22 @@ class DumpDeclarator(stdapi.OnceVisitor): def visit_enum(self, enum): print 'static void __traceEnum%s(const %s value) {' % (enum.id, enum.expr) + n = len(enum.values) + for i in range(n): + value = enum.values[i] + print ' static const Trace::EnumSig sig%u = {%u, "%s", %s};' % (i, enum.vid + i, value, value) + print ' const Trace::EnumSig *sig;' print ' switch(value) {' - for value in enum.values: + for i in range(n): + value = enum.values[i] print ' case %s:' % value - print ' Trace::LiteralNamedConstant("%s", %s);' % (value, value) + print ' sig = &sig%u;' % i print ' break;' print ' default:' print ' Trace::LiteralSInt(value);' - print ' break;' + print ' return;' print ' }' + print ' Trace::LiteralEnum(sig);' print '}' print |