[pypy-svn] r73381 - pypy/branch/cpython-extension/pypy/module/cpyext

xoraxax at codespeak.net xoraxax at codespeak.net
Sun Apr 4 20:34:01 CEST 2010


Author: xoraxax
Date: Sun Apr  4 20:34:00 2010
New Revision: 73381

Modified:
   pypy/branch/cpython-extension/pypy/module/cpyext/api.py
Log:
Add PyVarObject and render all exception classes (!) as globals.

Modified: pypy/branch/cpython-extension/pypy/module/cpyext/api.py
==============================================================================
--- pypy/branch/cpython-extension/pypy/module/cpyext/api.py	(original)
+++ pypy/branch/cpython-extension/pypy/module/cpyext/api.py	Sun Apr  4 20:34:00 2010
@@ -21,12 +21,16 @@
 from pypy.rlib.unroll import unrolling_iterable
 from pypy.rlib.objectmodel import specialize
 from pypy.rlib.exports import export_struct
+from pypy.module import exceptions
+from pypy.module.exceptions import interp_exceptions
 # CPython 2.4 compatibility
 from py.builtin import BaseException
 
 DEBUG_WRAPPER = False
 
+# update these for other platforms
 Py_ssize_t = lltype.Signed
+size_t = rffi.ULONG
 ADDR = lltype.Signed
 
 include_dir = py.path.local(autopath.pypydir) / 'module' / 'cpyext' / 'include'
@@ -229,9 +233,8 @@
     'Py_False': ('PyObject*', 'space.w_False'),
     }
 
-for exc_name in ['TypeError', 'ValueError', 'KeyError', 'Exception',
-                 'BaseException', 'SystemError', 'OSError']:
-    GLOBALS['PyExc_' + exc_name] = ('PyObject*', 'space.w_' + exc_name)
+for exc_name in exceptions.Module.interpleveldefs.keys():
+    GLOBALS['PyExc_' + exc_name] = ('PyObject*', 'space.gettypeobject(interp_exceptions.W_%s.typedef)'% (exc_name, ))
 
 for cpyname, pypyexpr in {"Type": "space.w_type",
         "BaseObject": "space.w_object",
@@ -254,6 +257,8 @@
 PyObjectFields = (("ob_refcnt", lltype.Signed), ("ob_type", PyObject))
 PyVarObjectFields = PyObjectFields + (("ob_size", Py_ssize_t), )
 cpython_struct('struct _object', PyObjectFields, PyObjectStruct)
+PyVarObjectStruct = cpython_struct("PyVarObject", PyVarObjectFields)
+PyVarObject = lltype.Ptr(PyVarObjectStruct)
 
 # a pointer to PyObject
 PyObjectP = rffi.CArrayPtr(PyObject)



More information about the Pypy-commit mailing list