Author: Armin Rigo <ar...@tunes.org> Branch: cffi-1.0 Changeset: r77365:42d47a500c5b Date: 2015-05-17 21:17 +0200 http://bitbucket.org/pypy/pypy/changeset/42d47a500c5b/
Log: test_*_struct diff --git a/pypy/module/_cffi_backend/cdlopen.py b/pypy/module/_cffi_backend/cdlopen.py --- a/pypy/module/_cffi_backend/cdlopen.py +++ b/pypy/module/_cffi_backend/cdlopen.py @@ -6,8 +6,8 @@ from pypy.module._rawffi.interp_rawffi import wrap_dlopenerror from pypy.module._cffi_backend.parse_c_type import ( - _CFFI_OPCODE_T, GLOBAL_S, CDL_INTCONST_S, STRUCT_UNION_S, FIELD_S, ENUM_S, - ll_set_cdl_realize_global_int) + _CFFI_OPCODE_T, GLOBAL_S, CDL_INTCONST_S, STRUCT_UNION_S, FIELD_S, + ENUM_S, TYPENAME_S, ll_set_cdl_realize_global_int) from pypy.module._cffi_backend.realize_c_type import getop from pypy.module._cffi_backend.lib_obj import W_LibObject from pypy.module._cffi_backend import cffi_opcode @@ -217,4 +217,17 @@ ffi.ctxobj.ctx.c_enums = nenums rffi.setintfield(ffi.ctxobj.ctx, 'c_num_enums', n) + if w_typenames: + # unpack a tuple of strings, each of which describes one typename_s + # entry + typenames_w = space.fixedview(w_typenames) + n = len(typenames_w) + ntypenames = allocate_array(ffi, TYPENAME_S, n) + for i in range(n): + decoder = StringDecoder(ffi, space.str_w(typenames_w[i])) + rffi.setintfield(ntypenames[i],'c_type_index',decoder.next_4bytes()) + ntypenames[i].c_name = decoder.next_name() + ffi.ctxobj.ctx.c_typenames = ntypenames + rffi.setintfield(ffi.ctxobj.ctx, 'c_num_typenames', n) + # ... XXXX _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit