Author: Armin Rigo <[email protected]>
Branch:
Changeset: r344:b73bf7ed92d5
Date: 2012-06-14 18:33 +0200
http://bitbucket.org/cffi/cffi/changeset/b73bf7ed92d5/
Log: Add another example showing the API level with verify().
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-cffi
+CFFI
====
Foreign Function Interface for Python calling C code. The aim of this project
@@ -31,13 +31,13 @@
but all C89 should be, including macros (apart from the most advanced
(ab)uses of these macros).
-Simple example
---------------
+Simple example (ABI level)
+--------------------------
>>> from cffi import FFI
>>> ffi = FFI()
>>> ffi.cdef("""
- ... int printf(const char *format, ...); // copy-pasted from the man
page
+ ... int printf(const char *format, ...); // copy-pasted from the
man page
... """)
>>> C = ffi.dlopen(None) # loads the entire C namespace
>>> arg = ffi.new("char[]", "world") # equivalent to C code: char
arg[] = "world";
@@ -45,6 +45,29 @@
hi there, world!
>>>
+Simple example (API level)
+--------------------------
+
+ from cffi import FFI
+ ffi = FFI()
+ ffi.cdef(""" // some declarations from the man page
+ struct passwd {
+ char *pw_name;
+ ...;
+ };
+ struct passwd *getpwuid(int uid);
+ """)
+ C = ffi.verify(""" // passed to the real C compiler
+ #include <sys/types.h>
+ #include <pwd.h>
+ """)
+ assert str(C.getpwuid(0).pw_name) == 'root'
+
+Note that the above example works independently of the exact layout of
+"struct passwd", but so far require a C compiler at runtime. (This will
+be improved with caching and distribution of the compiled code.)
+
+
More documentation
------------------
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit