Commits

Armin Rigo committed b73bf7e

Add another example showing the API level with verify().

Comments (0)

Files changed (1)

-cffi
+CFFI
 ====
 
 Foreign Function Interface for Python calling C code. The aim of this project
   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";
     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
 ------------------