Author: Armin Rigo <[email protected]>
Branch: cffi-1.0
Changeset: r77249:027e05646c62
Date: 2015-05-09 13:22 +0200
http://bitbucket.org/pypy/pypy/changeset/027e05646c62/

Log:    ffi.getwinerror() (untested yet)

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,3 +1,4 @@
+import sys
 from pypy.interpreter.error import oefmt
 from pypy.interpreter.baseobjspace import W_Root
 from pypy.interpreter.typedef import TypeDef, GetSetProperty, ClassAttr
@@ -288,6 +289,15 @@
         return self.space.wrap(result)
 
 
+    @unwrap_spec(code=int)
+    def descr_getwinerror(self, code=-1):
+        """\
+Return either the GetLastError() or the error number given by the
+optional 'code' argument, as a tuple '(code, message)'."""
+        #
+        return cerrno.getwinerror(self.space, code)
+
+
     @unwrap_spec(w_init=WrappedDefault(None))
     def descr_new(self, w_arg, w_init):
         """\
@@ -418,6 +428,11 @@
     return space.appexec([], """():
         return type('error', (Exception,), {'__module__': 'ffi'})""")
 
+_extras = {}
+if sys.platform == 'win32':
+    _extras['getwinerror'] = interp2app(W_FFIObject.descr_getwinerror)
+
+
 W_FFIObject.typedef = TypeDef(
         'CompiledFFI',
         __new__     = interp2app(W_FFIObject___new__),
@@ -440,11 +455,10 @@
         from_handle = interp2app(W_FFIObject.descr_from_handle),
         gc          = interp2app(W_FFIObject.descr_gc),
         getctype    = interp2app(W_FFIObject.descr_getctype),
-        #getwinerror = interp2app(W_FFIObject.descr_getwinerror),
         new         = interp2app(W_FFIObject.descr_new),
         new_handle  = interp2app(W_FFIObject.descr_new_handle),
         offsetof    = interp2app(W_FFIObject.descr_offsetof),
         sizeof      = interp2app(W_FFIObject.descr_sizeof),
         string      = interp2app(W_FFIObject.descr_string),
         typeof      = interp2app(W_FFIObject.descr_typeof),
-        )
+        **_extras)
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to