import specs.glapi as glapi
+class UnsupportedType(Exception):
+ pass
+
+
class MutableRebuilder(stdapi.Rebuilder):
'''Type visitor which derives a mutable type.'''
# Strip out references
return reference.type
- def visitOpaque(self, opaque):
- # Don't recursule
- return opaque
-
def lookupHandle(handle, value):
if handle.key is None:
def visitPolymorphic(self, polymorphic, lvalue, rvalue):
self.visit(polymorphic.defaultType, lvalue, rvalue)
+ def visitOpaque(self, opaque, lvalue, rvalue):
+ pass
+
class ValueDeserializer(stdapi.Visitor):
def visitPolymorphic(self, polymorphic, lvalue, rvalue):
self.visit(polymorphic.defaultType, lvalue, rvalue)
+
+ def visitOpaque(self, opaque, lvalue, rvalue):
+ raise UnsupportedType
class OpaqueValueDeserializer(ValueDeserializer):
def visitPolymorphic(self, polymorphic, lvalue, rvalue):
self.visit(polymorphic.defaultType, lvalue, rvalue)
+
+ def visitOpaque(self, opaque, lvalue, rvalue):
+ pass
class Retracer:
lvalue = arg.name
try:
self.extractArg(function, arg, arg_type, lvalue, rvalue)
- except NotImplementedError:
+ except UnsupportedType:
success = False
print ' memset(&%s, 0, sizeof %s); // FIXME' % (arg.name, arg.name)
print
lvalue = arg.name
try:
self.regiterSwizzledValue(arg_type, lvalue, rvalue)
- except NotImplementedError:
+ except UnsupportedType:
print ' // XXX: %s' % arg.name
if function.type is not stdapi.Void:
rvalue = '*call.ret'
lvalue = '__result'
try:
self.regiterSwizzledValue(function.type, lvalue, rvalue)
- except NotImplementedError:
+ except UnsupportedType:
raise
print ' // XXX: result'
def extractOpaqueArg(self, function, arg, arg_type, lvalue, rvalue):
try:
ValueAllocator().visit(arg_type, lvalue, rvalue)
- except NotImplementedError:
+ except UnsupportedType:
pass
OpaqueValueDeserializer().visit(arg_type, lvalue, rvalue)