def visitIntPointer(self, pointer, lvalue, rvalue):
print ' %s = static_cast<%s>((%s).toPointer());' % (lvalue, pointer, rvalue)
+ def visitObjPointer(self, pointer, lvalue, rvalue):
+ print ' %s = static_cast<%s>((%s).toPointer());' % (lvalue, pointer, rvalue)
+
def visitLinearPointer(self, pointer, lvalue, rvalue):
print ' %s = static_cast<%s>(retrace::toPointer(%s));' % (lvalue, pointer, rvalue)
def visitIntPointer(self, pointer, lvalue, rvalue):
pass
+ def visitObjPointer(self, pointer, lvalue, rvalue):
+ print r' _obj_map[(%s).toUIntPtr()] = %s;' % (rvalue, lvalue)
+
def visitLinearPointer(self, pointer, lvalue, rvalue):
assert pointer.size is not None
if pointer.size is not None:
def deserializeThisPointer(self, interface):
print ' %s *_this;' % (interface.name,)
- # FIXME
+ print ' _this = static_cast<%s *>(_obj_map[call.arg(0).toUIntPtr()]);' % (interface.name,)
def deserializeArgs(self, function):
print ' retrace::ScopedAllocator _allocator;'
try:
self.regiterSwizzledValue(function.type, lvalue, rvalue)
except NotImplementedError:
+ raise
print ' // XXX: result'
def failFunction(self, function):
handle_names.add(handle.name)
print
+ print 'static std::map<unsigned long long, void *> _obj_map;'
+ print
+
functions = filter(self.filterFunction, api.functions)
for function in functions:
self.retraceFunction(function)