Author: Antonio Cuni <anto.c...@gmail.com> Branch: ffistruct Changeset: r47112:ced67009fa52 Date: 2011-09-06 16:39 +0200 http://bitbucket.org/pypy/pypy/changeset/ced67009fa52/
Log: don't store the name on the struct descr, but make it accessible from the ffi type diff --git a/pypy/module/_ffi/interp_ffitype.py b/pypy/module/_ffi/interp_ffitype.py --- a/pypy/module/_ffi/interp_ffitype.py +++ b/pypy/module/_ffi/interp_ffitype.py @@ -1,7 +1,7 @@ from pypy.rlib import libffi from pypy.rlib.rarithmetic import intmask from pypy.interpreter.baseobjspace import Wrappable -from pypy.interpreter.typedef import TypeDef +from pypy.interpreter.typedef import TypeDef, interp_attrproperty from pypy.interpreter.gateway import interp2app class W_FFIType(Wrappable): @@ -81,6 +81,7 @@ W_FFIType.typedef = TypeDef( 'FFIType', + name = interp_attrproperty('name', W_FFIType), __repr__ = interp2app(W_FFIType.repr), deref_pointer = interp2app(W_FFIType.descr_deref_pointer), sizeof = interp2app(W_FFIType.descr_sizeof), diff --git a/pypy/module/_ffi/test/test_ffitype.py b/pypy/module/_ffi/test/test_ffitype.py --- a/pypy/module/_ffi/test/test_ffitype.py +++ b/pypy/module/_ffi/test/test_ffitype.py @@ -6,7 +6,9 @@ from _ffi import types assert str(types.sint) == "<ffi type sint>" assert str(types.uint) == "<ffi type uint>" - + assert types.sint.name == 'sint' + assert types.uint.name == 'uint' + def test_sizeof(self): from _ffi import types assert types.sbyte.sizeof() == 1 diff --git a/pypy/module/_ffi/test/test_struct.py b/pypy/module/_ffi/test/test_struct.py --- a/pypy/module/_ffi/test/test_struct.py +++ b/pypy/module/_ffi/test/test_struct.py @@ -6,9 +6,8 @@ from _ffi import _StructDescr, types longsize = types.slong.sizeof() descr = _StructDescr('foo', longsize*2, 0, [types.slong, types.slong]) - assert descr.name == 'foo' assert descr.ffitype.sizeof() == longsize*2 - assert repr(descr.ffitype) == '<ffi type struct foo>' + assert descr.ffitype.name == 'struct foo' def test_compute_shape(self): from _ffi import Structure, Field, types @@ -23,5 +22,6 @@ assert isinstance(Point.y, Field) assert Point.x.offset == 0 assert Point.y.offset == longsize - assert Point._struct_.name == 'Point' assert Point._struct_.ffitype.sizeof() == longsize*2 + assert Point._struct_.ffitype.name == 'struct Point' + _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit