From: José Fonseca Date: Wed, 2 May 2012 12:10:07 +0000 (+0100) Subject: Ensure all interface wrapper variables are initialized. X-Git-Url: https://git.cworth.org/git?a=commitdiff_plain;h=acc9062e7df12764ba1a01bebacbff524e9a3f8a;p=apitrace Ensure all interface wrapper variables are initialized. --- diff --git a/wrappers/d3d9trace.py b/wrappers/d3d9trace.py index ef5a14c..9185f03 100644 --- a/wrappers/d3d9trace.py +++ b/wrappers/d3d9trace.py @@ -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'): diff --git a/wrappers/trace.py b/wrappers/trace.py index eea2fdc..fd921ec 100644 --- a/wrappers/trace.py +++ b/wrappers/trace.py @@ -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))