]> git.cworth.org Git - apitrace/blobdiff - trace.py
Describe C++ references accurately.
[apitrace] / trace.py
index 831af98640fb6970f143060fd430adf0939eee6d..4f39129add7c782a754f226f81dd5a6d1db82d39 100644 (file)
--- a/trace.py
+++ b/trace.py
@@ -114,6 +114,9 @@ class ComplexValueSerializer(stdapi.OnceVisitor):
     def visitHandle(self, handle):
         self.visit(handle.type)
 
+    def visitReference(self, reference):
+        self.visit(reference.type)
+
     def visitAlias(self, alias):
         self.visit(alias.type)
 
@@ -211,6 +214,9 @@ class ValueSerializer(stdapi.Visitor):
     def visitLinearPointer(self, pointer, instance):
         print '    trace::localWriter.writeOpaque((const void *)%s);' % instance
 
+    def visitReference(self, reference, instance):
+        self.visit(reference.type, instance)
+
     def visitHandle(self, handle, instance):
         self.visit(handle.type, instance)
 
@@ -274,6 +280,9 @@ class ValueWrapper(stdapi.Visitor):
     def visitLinearPointer(self, pointer, instance):
         pass
 
+    def visitReference(self, reference, instance):
+        self.visit(reference.type, instance)
+    
     def visitHandle(self, handle, instance):
         self.visit(handle.type, instance)
 
@@ -544,7 +553,7 @@ class Tracer:
             print '        if (*%s == m_pInstance) {' % (out.name,)
             print '            *%s = this;' % (out.name,)
             print '        }'
-            for iface in self.api.interfaces:
+            for iface in self.api.getAllInterfaces():
                 print r'        else if (%s == IID_%s) {' % (riid.name, iface.name)
                 print r'            *%s = new Wrap%s((%s *) *%s);' % (out.name, iface.name, iface.name, out.name)
                 print r'        }'