summaryrefslogtreecommitdiff
path: root/demo
diff options
context:
space:
mode:
authormattip <matti.picus@gmail.com>2015-11-24 20:04:41 +0200
committermattip <matti.picus@gmail.com>2015-11-24 20:04:41 +0200
commitee2e12f801b23389ef98cb17a2b630ae08f23537 (patch)
tree87a2fa684f283b8da957eb1f2069f54b9b24fce4 /demo
parent9b242870670f270fc10bcb6d139efab8d1f17c83 (diff)
downloadcffi-ee2e12f801b23389ef98cb17a2b630ae08f23537.tar.gz
split the demo into two files
Diffstat (limited to 'demo')
-rw-r--r--demo/xclient.py37
-rw-r--r--demo/xclient_build.py24
2 files changed, 32 insertions, 29 deletions
diff --git a/demo/xclient.py b/demo/xclient.py
index 0d66d8e..b8c7232 100644
--- a/demo/xclient.py
+++ b/demo/xclient.py
@@ -1,35 +1,14 @@
-import sys
+import sys, os
+
+# If the build script was run immediately before this script, the cffi module
+# ends up in the current directory. Make sure we can import it.
sys.path.append('.')
+
try:
- import _xclient
+ from _xclient import ffi, lib
except ImportError:
- from cffi import FFI
- _ffi = FFI()
- _ffi.cdef("""
-
- typedef ... Display;
- typedef struct { ...; } Window;
-
- 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);
- """)
-
- _ffi.set_source('_xclient', """
- #include <X11/Xlib.h>
- """, libraries=['X11'])
- _ffi.compile()
- import _xclient
-
-ffi = _xclient.ffi
-lib = _xclient.lib
+ print 'run %s_build first, then make sure the shared object is on sys.path' % os.path.splitext(__file__)[0]
+ sys.exit(-1)
class XError(Exception):
pass
diff --git a/demo/xclient_build.py b/demo/xclient_build.py
new file mode 100644
index 0000000..b55f69f
--- /dev/null
+++ b/demo/xclient_build.py
@@ -0,0 +1,24 @@
+from cffi import FFI
+_ffi = FFI()
+_ffi.cdef("""
+
+typedef ... Display;
+typedef struct { ...; } Window;
+
+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);
+""")
+
+_ffi.set_source('_xclient', """
+ #include <X11/Xlib.h>
+""", libraries=['X11'])
+_ffi.compile()
+