diff options
author | José Fonseca <jose.r.fonseca@gmail.com> | 2011-05-25 23:21:18 +0100 |
---|---|---|
committer | José Fonseca <jose.r.fonseca@gmail.com> | 2011-05-25 23:21:18 +0100 |
commit | bb8760bc379ec3c37db0d18c9972b3c4c3df1179 (patch) | |
tree | e4f3e2d0942d1f3f0105a3e7bb48b5280d999812 /trace.py | |
parent | fabe0011d61fa27bc0062f62ecf51aabb3f97260 (diff) |
Several DX7 corrections.
Diffstat (limited to 'trace.py')
-rw-r--r-- | trace.py | 16 |
1 files changed, 14 insertions, 2 deletions
@@ -271,7 +271,12 @@ unwrap_instance = Unwrapper().visit class Tracer: + def __init__(self): + self.api = None + def trace_api(self, api): + self.api = api + self.header(api) # Includes @@ -427,8 +432,15 @@ class Tracer: wrap_instance(method.type, '__result') print ' Trace::EndLeave();' if method.name == 'QueryInterface': - print ' if (*ppvObj == m_pInstance)' - print ' *ppvObj = this;' + print ' if (ppvObj && *ppvObj) {' + print ' if (*ppvObj == m_pInstance) {' + print ' *ppvObj = this;' + print ' }' + for iface in self.api.interfaces: + print ' else if (riid == IID_%s) {' % iface.name + print ' *ppvObj = new Wrap%s((%s *) *ppvObj);' % (iface.name, iface.name) + print ' }' + print ' }' if method.name == 'Release': assert method.type is not stdapi.Void print ' if (!__result)' |