| extern "Python" int f(int, va_list *); |
| int fetch_int(va_list *); |
| double fetch_double(va_list *); |
| void *fetch_ptr(va_list *); |
| ffi.set_source("_extern_python_cffi", """ |
| static int f(int, va_list *); |
| static int f1(int n, ...) |
| static int fetch_int(va_list *va) { return va_arg((*va), int); } |
| static double fetch_double(va_list *va) { return va_arg((*va), double); } |
| static void * fetch_ptr(va_list *va) { return va_arg((*va), void *); } |
| static int my_algo(int n) { |
| return f1(3, n, n+1, n+2) + f1(1, &n) + f1(2, 12.3, 45.6); |
| from _extern_python_cffi import ffi, lib |
| print 'ptr to:', ffi.cast("int *", ptr)[0] |