summaryrefslogtreecommitdiff
path: root/demo
diff options
context:
space:
mode:
authorArmin Rigo <arigo@tunes.org>2015-11-18 08:07:19 +0100
committerArmin Rigo <arigo@tunes.org>2015-11-18 08:07:19 +0100
commit68911d52ddf66bde11b4fcd2474ef1f7f55918f4 (patch)
tree34e9de2bf6cbe058603508844a2f5a2895ce3c45 /demo
parent4b095962bdb6bd497fdbd6c80fdce0d14c1f4b78 (diff)
downloadcffi-68911d52ddf66bde11b4fcd2474ef1f7f55918f4.tar.gz
Change the docs to use extern "Python" as discussed yesterday on irc
(thanks antocuni)
Diffstat (limited to 'demo')
-rw-r--r--demo/cdef_call_python.py29
-rw-r--r--demo/extern_python.py26
2 files changed, 26 insertions, 29 deletions
diff --git a/demo/cdef_call_python.py b/demo/cdef_call_python.py
deleted file mode 100644
index 24f420f..0000000
--- a/demo/cdef_call_python.py
+++ /dev/null
@@ -1,29 +0,0 @@
-import cffi
-
-ffi = cffi.FFI()
-
-ffi.cdef("""
- int add(int x, int y);
- CFFI_CALL_PYTHON long mangle(int);
-""")
-
-ffi.set_source("_cdef_call_python_cffi", """
-
- static long mangle(int);
-
- static int add(int x, int y)
- {
- return mangle(x) + mangle(y);
- }
-""")
-
-ffi.compile()
-
-
-from _cdef_call_python_cffi import ffi, lib
-
-@ffi.call_python("mangle") # optional argument, default to func.__name__
-def mangle(x):
- return x * x
-
-assert lib.add(40, 2) == 1604
diff --git a/demo/extern_python.py b/demo/extern_python.py
new file mode 100644
index 0000000..e0ee20d
--- /dev/null
+++ b/demo/extern_python.py
@@ -0,0 +1,26 @@
+import cffi
+
+ffi = cffi.FFI()
+
+ffi.cdef("""int my_algo(int); extern "Python" int f(int);""")
+
+ffi.set_source("_extern_python_cffi", """
+ static int f(int);
+ static int my_algo(int n) {
+ int i, sum = 0;
+ for (i = 0; i < n; i++)
+ sum += f(n);
+ return sum;
+ }
+""")
+
+ffi.compile()
+
+
+from _extern_python_cffi import ffi, lib
+
+@ffi.def_extern()
+def f(n):
+ return n * n
+
+assert lib.my_algo(10) == 0+1+4+9+16+25+36+49+64+81