]> git.cworth.org Git - apitrace/commitdiff
Ensure all interface wrapper variables are initialized.
authorJosé Fonseca <jose.r.fonseca@gmail.com>
Wed, 2 May 2012 12:10:07 +0000 (13:10 +0100)
committerJosé Fonseca <jose.r.fonseca@gmail.com>
Wed, 2 May 2012 12:10:07 +0000 (13:10 +0100)
wrappers/d3d9trace.py
wrappers/trace.py

index ef5a14c6f436aacdab461f6622af0bbfc85eacbd..9185f038e6a63e5d8a6cd96f7881ffd7c4878805 100644 (file)
@@ -38,15 +38,18 @@ class D3D9Tracer(DllTracer):
 
         DllTracer.serializeArgValue(self, function, arg)
 
-    def declareWrapperInterfaceVariables(self, interface):
-        DllTracer.declareWrapperInterfaceVariables(self, interface)
+    def enumWrapperInterfaceVariables(self, interface):
+        variables = DllTracer.enumWrapperInterfaceVariables(self, interface)
         
         if interface.getMethodByName('Lock') is not None or \
            interface.getMethodByName('LockRect') is not None or \
            interface.getMethodByName('LockBox') is not None:
-            print '    size_t _LockedSize;'
-            print '    VOID *m_pbData;'
+            variables += [
+                ('size_t', '_LockedSize', '0'),
+                ('VOID *', 'm_pbData', '0'),
+            ]
 
+        return variables
 
     def implementWrapperInterfaceMethodBody(self, interface, base, method):
         if method.name in ('Unlock', 'UnlockRect', 'UnlockBox'):
index eea2fdc22d6f21a57cb928407ead4cebfcf310e6..fd921ec722b4b5ccd5b39e25f25c9c4468a6b715 100644 (file)
@@ -522,21 +522,24 @@ class Tracer:
         for method in interface.iterMethods():
             print "    " + method.prototype() + ";"
         print
-        self.declareWrapperInterfaceVariables(interface)
+        #print "private:"
+        for type, name, value in self.enumWrapperInterfaceVariables(interface):
+            print '    %s %s;' % (type, name)
         print "};"
         print
 
-    def declareWrapperInterfaceVariables(self, interface):
-        #print "private:"
-        print "    DWORD m_dwMagic;"
-        print "    %s * m_pInstance;" % (interface.name,)
+    def enumWrapperInterfaceVariables(self, interface):
+        return [
+            ("DWORD", "m_dwMagic", "0xd8365d6c"),
+            ("%s *" % interface.name, "m_pInstance", "pInstance"),
+        ] 
 
     def implementWrapperInterface(self, interface):
         self.interface = interface
 
         print '%s::%s(%s * pInstance) {' % (getWrapperInterfaceName(interface), getWrapperInterfaceName(interface), interface.name)
-        print '    m_dwMagic = 0xd8365d6c;'
-        print '    m_pInstance = pInstance;'
+        for type, name, value in self.enumWrapperInterfaceVariables(interface):
+            print '    %s = %s;' % (name, value)
         print '}'
         print
         print '%s::~%s() {' % (getWrapperInterfaceName(interface), getWrapperInterfaceName(interface))