Author: Antonio Cuni <anto.c...@gmail.com>
Branch: ffistruct
Changeset: r51274:5cd049bf9f55
Date: 2012-01-12 12:34 +0100
http://bitbucket.org/pypy/pypy/changeset/5cd049bf9f55/

Log:    fully migrate the whole W__StructInstance.getfield to use
        GetFieldConverter

diff --git a/pypy/module/_ffi/interp_struct.py 
b/pypy/module/_ffi/interp_struct.py
--- a/pypy/module/_ffi/interp_struct.py
+++ b/pypy/module/_ffi/interp_struct.py
@@ -136,25 +136,7 @@
     def getfield(self, space, name):
         w_ffitype, offset = 
self.structdescr.get_type_and_offset_for_field(name)
         converter = GetFieldConverter(space, self.rawmem, offset)
-        if w_ffitype.is_longlong():
-            return converter.do_and_wrap(w_ffitype)
-        #
-        if w_ffitype.is_signed() or w_ffitype.is_unsigned() or 
w_ffitype.is_pointer():
-            return converter.do_and_wrap(w_ffitype)
-        #
-        if w_ffitype.is_char():
-            return converter.do_and_wrap(w_ffitype)
-        #
-        if w_ffitype.is_unichar():
-            return converter.do_and_wrap(w_ffitype)
-        #
-        if w_ffitype.is_double():
-            return converter.do_and_wrap(w_ffitype)
-        #
-        if w_ffitype.is_singlefloat():
-            return converter.do_and_wrap(w_ffitype)
-        #
-        raise operationerrfmt(space.w_TypeError, 'Unknown type: %s', 
w_ffitype.name)
+        return converter.do_and_wrap(w_ffitype)
 
     @unwrap_spec(name=str)
     def setfield(self, space, name, w_value):
diff --git a/pypy/module/_ffi/type_converter.py 
b/pypy/module/_ffi/type_converter.py
--- a/pypy/module/_ffi/type_converter.py
+++ b/pypy/module/_ffi/type_converter.py
@@ -232,7 +232,7 @@
             assert voidval is None
             return space.w_None
         else:
-            assert False, "Return value shape '%s' not supported" % w_ffitype
+            self.error(w_ffitype)
 
     def _longlong(self, w_ffitype):
         # a separate function, which can be seen by the jit or not,
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to