print ' __traceStruct%s(%s);' % (struct.id, instance)
def visit_array(self, array, instance):
- print ' if (%s) {' % instance
+ length = '__c' + array.type.id
index = '__i' + array.type.id
- print ' __writer.beginArray(%s);' % (array.length,)
- print ' for (int %s = 0; %s < %s; ++%s) {' % (index, index, array.length, index)
+ print ' if (%s) {' % instance
+ print ' size_t %s = %s;' % (length, array.length)
+ print ' __writer.beginArray(%s);' % length
+ print ' for (size_t %s = 0; %s < %s; ++%s) {' % (index, index, length, index)
print ' __writer.beginElement();'
self.visit(array.type, '(%s)[%s]' % (instance, index))
print ' __writer.endElement();'
print ' }'
print ' __writer.endArray();'
- print ' }'
- print ' else'
+ print ' } else {'
print ' __writer.writeNull();'
+ print ' }'
def visit_blob(self, blob, instance):
print ' __writer.writeBlob(%s, %s);' % (instance, blob.size)
print ' __traceEnum%s(%s);' % (enum.id, instance)
def visit_bitmask(self, bitmask, instance):
- print ' __writer.writeBitmask(__bitmask%s_sig, %s);' % (bitmask.id, instance)
+ print ' __writer.writeBitmask(&__bitmask%s_sig, %s);' % (bitmask.id, instance)
def visit_pointer(self, pointer, instance):
print ' if (%s) {' % instance
dump_instance(pointer.type, "*" + instance)
print ' __writer.endElement();'
print ' __writer.endArray();'
- print ' }'
- print ' else'
+ print ' } else {'
print ' __writer.writeNull();'
+ print ' }'
def visit_handle(self, handle, instance):
self.visit(handle.type, instance)
print
def trace_function_impl_body(self, function):
- print ' unsigned __call = __writer.beginEnter(__%s_sig);' % (function.name,)
+ print ' unsigned __call = __writer.beginEnter(&__%s_sig);' % (function.name,)
for arg in function.args:
if not arg.output:
self.unwrap_arg(function, arg)
print method.prototype(interface_wrap_name(interface) + '::' + method.name) + ' {'
print ' static const char * __args[%u] = {%s};' % (len(method.args) + 1, ', '.join(['"this"'] + ['"%s"' % arg.name for arg in method.args]))
print ' static const Trace::FunctionSig __sig = {%u, "%s", %u, __args};' % (int(method.id), interface.name + '::' + method.name, len(method.args) + 1)
- print ' unsigned __call = __writer.beginEnter(__sig);'
+ print ' unsigned __call = __writer.beginEnter(&__sig);'
print ' __writer.beginArg(0);'
print ' __writer.writeOpaque((const void *)m_pInstance);'
print ' __writer.endArg();'