[pypy-commit] pypy cffi-1.0: use ClassAttr
arigo
noreply at buildbot.pypy.org
Fri May 8 11:09:07 CEST 2015
Author: Armin Rigo <arigo at tunes.org>
Branch: cffi-1.0
Changeset: r77201:567a6f1771b2
Date: 2015-05-08 11:08 +0200
http://bitbucket.org/pypy/pypy/changeset/567a6f1771b2/
Log: use ClassAttr
diff --git a/pypy/module/_cffi_backend/__init__.py b/pypy/module/_cffi_backend/__init__.py
--- a/pypy/module/_cffi_backend/__init__.py
+++ b/pypy/module/_cffi_backend/__init__.py
@@ -53,10 +53,6 @@
if sys.platform == 'win32':
interpleveldefs['getwinerror'] = 'cerrno.getwinerror'
- def startup(self, space):
- from pypy.module._cffi_backend import ffi_obj
- ffi_obj._startup(space)
-
for _name in ["RTLD_LAZY", "RTLD_NOW", "RTLD_GLOBAL", "RTLD_LOCAL",
"RTLD_NODELETE", "RTLD_NOLOAD", "RTLD_DEEPBIND"]:
if getattr(rdynload.cConfig, _name) is not None:
diff --git a/pypy/module/_cffi_backend/ffi_obj.py b/pypy/module/_cffi_backend/ffi_obj.py
--- a/pypy/module/_cffi_backend/ffi_obj.py
+++ b/pypy/module/_cffi_backend/ffi_obj.py
@@ -1,6 +1,6 @@
from pypy.interpreter.error import oefmt
from pypy.interpreter.baseobjspace import W_Root
-from pypy.interpreter.typedef import TypeDef, GetSetProperty
+from pypy.interpreter.typedef import TypeDef, GetSetProperty, ClassAttr
from pypy.interpreter.gateway import interp2app, unwrap_spec, WrappedDefault
from rpython.rlib import jit, rgc
from rpython.rtyper.lltypesystem import rffi
@@ -295,10 +295,21 @@
r.__init__(space)
return space.wrap(r)
+def make_NULL(space):
+ ctvoidp = newtype.new_voidp_type(space)
+ w_NULL = ctvoidp.cast(space.wrap(0))
+ return w_NULL
+
+def make_error(space):
+ return space.appexec([], """():
+ return type('error', (Exception,), {'__module__': 'ffi'})""")
+
W_FFIObject.typedef = TypeDef(
'CompiledFFI',
__new__ = interp2app(W_FFIObject___new__),
__init__ = interp2app(W_FFIObject.descr_init),
+ NULL = ClassAttr(make_NULL),
+ error = ClassAttr(make_error),
errno = GetSetProperty(W_FFIObject.get_errno,
W_FFIObject.set_errno,
doc=W_FFIObject.doc_errno,
@@ -315,11 +326,3 @@
string = interp2app(W_FFIObject.descr_string),
typeof = interp2app(W_FFIObject.descr_typeof),
)
-
-def _startup(space):
- ctvoidp = newtype.new_voidp_type(space)
- w_NULL = ctvoidp.cast(space.wrap(0))
- w_ffitype = space.gettypefor(W_FFIObject)
- w_ffitype.dict_w['NULL'] = w_NULL
- w_ffitype.dict_w['error'] = space.appexec([], """():
- return type('error', (Exception,), {'__module__': 'ffi'})""")
More information about the pypy-commit
mailing list