[pypy-commit] pypy cffi-1.0: test_*_struct
arigo
noreply at buildbot.pypy.org
Sun May 17 21:17:24 CEST 2015
Author: Armin Rigo <arigo at 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
More information about the pypy-commit
mailing list