[pypy-commit] cffi demo-cleanup: fix one demo for verify -> set_source, compile

mattip noreply at buildbot.pypy.org
Tue Nov 24 12:31:41 EST 2015


Author: mattip <matti.picus at gmail.com>
Branch: demo-cleanup
Changeset: r2435:a8a0693b9953
Date: 2015-11-24 19:29 +0200
http://bitbucket.org/cffi/cffi/changeset/a8a0693b9953/

Log:	fix one demo for verify -> set_source, compile

diff --git a/demo/xclient.py b/demo/xclient.py
--- a/demo/xclient.py
+++ b/demo/xclient.py
@@ -1,40 +1,48 @@
-from cffi import FFI
+import sys
+sys.path.append('.')
+try:
+    import _xclient
+except ImportError:
+    from cffi import FFI
+    _ffi = FFI()
+    _ffi.cdef("""
 
-ffi = FFI()
-ffi.cdef("""
+    typedef ... Display;
+    typedef struct { ...; } Window;
 
-typedef ... Display;
-typedef struct { ...; } Window;
+    typedef struct { int type; ...; } XEvent;
 
-typedef struct { int type; ...; } XEvent;
+    Display *XOpenDisplay(char *display_name);
+    Window DefaultRootWindow(Display *display);
+    int XMapRaised(Display *display, Window w);
+    Window XCreateSimpleWindow(Display *display, Window parent, int x, int y,
+                               unsigned int width, unsigned int height,
+                               unsigned int border_width, unsigned long border,
+                               unsigned long background);
+    int XNextEvent(Display *display, XEvent *event_return);
+    """)
 
-Display *XOpenDisplay(char *display_name);
-Window DefaultRootWindow(Display *display);
-int XMapRaised(Display *display, Window w);
-Window XCreateSimpleWindow(Display *display, Window parent, int x, int y,
-                           unsigned int width, unsigned int height,
-                           unsigned int border_width, unsigned long border,
-                           unsigned long background);
-int XNextEvent(Display *display, XEvent *event_return);
-""")
-lib = ffi.verify("""
-#include <X11/Xlib.h>
-""", libraries=['X11'])
+    _ffi.set_source('_xclient', """
+                #include <X11/Xlib.h>
+    """, libraries=['X11'])
+    _ffi.compile()
+    import _xclient
 
-globals().update(lib.__dict__)
+ffi = _xclient.ffi
+lib = _xclient.lib
 
 class XError(Exception):
     pass
 
 def main():
-    display = XOpenDisplay(ffi.NULL)
+    display = lib.XOpenDisplay(ffi.NULL)
     if display == ffi.NULL:
         raise XError("cannot open display")
-    w = XCreateSimpleWindow(display, DefaultRootWindow(display),
+    w = lib.XCreateSimpleWindow(display, lib.DefaultRootWindow(display),
                             10, 10, 500, 350, 0, 0, 0)
-    XMapRaised(display, w)
+    lib.XMapRaised(display, w)
     event = ffi.new("XEvent *")
-    XNextEvent(display, event)
+    lib.XNextEvent(display, event)
 
 if __name__ == '__main__':
     main()


More information about the pypy-commit mailing list