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

Reply via email to