Author: Ronan Lamy <[email protected]>
Branch: rffi-parser-2
Changeset: r89229:609e4f904c01
Date: 2016-12-26 11:04 +0100
http://bitbucket.org/pypy/pypy/changeset/609e4f904c01/
Log: Export the type itself in ParsedSource().definitions
diff --git a/pypy/module/cpyext/api.py b/pypy/module/cpyext/api.py
--- a/pypy/module/cpyext/api.py
+++ b/pypy/module/cpyext/api.py
@@ -627,7 +627,7 @@
""")
h.configure_types()
-Py_ssize_t = h.definitions['Py_ssize_t']
+Py_ssize_t = lltype.Typedef(h.definitions['Py_ssize_t'], 'Py_ssize_t')
Py_ssize_tP = rffi.CArrayPtr(Py_ssize_t)
size_t = rffi.ULONG
ADDR = lltype.Signed
@@ -635,15 +635,15 @@
# Note: as a special case, "PyObject" is the pointer type in RPython,
# corresponding to "PyObject *" in C. We do that only for PyObject.
# For example, "PyTypeObject" is the struct type even in RPython.
-PyTypeObject = h.definitions['PyTypeObject'].OF
+PyTypeObject = h.definitions['PyTypeObject']
PyTypeObjectPtr = lltype.Ptr(PyTypeObject)
-PyObjectStruct = h.definitions['PyObject'].OF
+PyObjectStruct = h.definitions['PyObject']
PyObject = lltype.Ptr(PyObjectStruct)
PyObjectFields = (("ob_refcnt", lltype.Signed),
("ob_pypy_link", lltype.Signed),
("ob_type", PyTypeObjectPtr))
PyVarObjectFields = PyObjectFields + (("ob_size", Py_ssize_t), )
-PyVarObjectStruct = h.definitions['PyVarObject'].OF
+PyVarObjectStruct = h.definitions['PyVarObject']
PyVarObject = lltype.Ptr(PyVarObjectStruct)
Py_buffer = cpython_struct(
diff --git a/pypy/module/cpyext/cparser.py b/pypy/module/cpyext/cparser.py
--- a/pypy/module/cpyext/cparser.py
+++ b/pypy/module/cpyext/cparser.py
@@ -705,7 +705,7 @@
if isinstance(tp, DelayedStruct):
tp = self.realize_struct(tp, name)
self.structs[obj] = tp
- self.definitions[name] = lltype.Typedef(tp, name)
+ self.definitions[name] = tp
def add_macro(self, name, value):
assert name not in self.macros
diff --git a/pypy/module/cpyext/test/test_cparser.py
b/pypy/module/cpyext/test/test_cparser.py
--- a/pypy/module/cpyext/test/test_cparser.py
+++ b/pypy/module/cpyext/test/test_cparser.py
@@ -18,7 +18,7 @@
include_dirs=[str(tmpdir)], includes=['sys/types.h', 'header.h'])
res = parse_source(decl, eci=eci)
res.configure_types()
- TestFloatObject = res.definitions['TestFloatObject'].OF
+ TestFloatObject = res.definitions['TestFloatObject']
assert isinstance(TestFloatObject, lltype.Struct)
assert TestFloatObject.c_ob_refcnt == rffi.SSIZE_T
assert TestFloatObject.c_ob_pypy_link == rffi.SSIZE_T
@@ -73,12 +73,12 @@
includes=['sys/types.h', 'base.h', 'object.h'])
hdr1 = parse_source(cdef1, eci=eci)
hdr1.configure_types()
- Type = hdr1.definitions['Type'].OF
+ Type = hdr1.definitions['Type']
assert isinstance(Type, lltype.Struct)
hdr2 = parse_source(cdef2, includes=[hdr1], eci=eci)
hdr2.configure_types()
assert 'Type' not in hdr2.definitions
- Object = hdr2.definitions['Object'].OF
+ Object = hdr2.definitions['Object']
assert Object.c_type.TO is Type
def test_incomplete(tmpdir):
@@ -103,7 +103,7 @@
includes=['sys/types.h', 'foo.h'])
foo_h = parse_source(cdef, eci=eci)
foo_h.configure_types()
- Object = foo_h.definitions['Object'].OF
+ Object = foo_h.definitions['Object']
assert isinstance(Object, lltype.ForwardReference) or hash(Object)
def test_recursive(tmpdir):
@@ -131,6 +131,6 @@
includes=['sys/types.h', 'foo.h'])
foo_h = parse_source(cdef, eci=eci)
foo_h.configure_types()
- Object = foo_h.definitions['Object'].OF
+ Object = foo_h.definitions['Object']
assert isinstance(Object, lltype.Struct)
hash(Object)
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit