From 585f55e70e44cccb0807c2bc2d1f0904c8fbc5e1 Mon Sep 17 00:00:00 2001 From: Matthias Benkard Date: Sat, 15 Sep 2007 15:33:46 +0200 Subject: Add libffi support code from PyObjC. darcs-hash:0cb8e75aa1ea694562f5087aa400840349adcac8 --- Objective-C/libffi_support.h | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 Objective-C/libffi_support.h (limited to 'Objective-C/libffi_support.h') diff --git a/Objective-C/libffi_support.h b/Objective-C/libffi_support.h new file mode 100644 index 0000000..d9a7f40 --- /dev/null +++ b/Objective-C/libffi_support.h @@ -0,0 +1,36 @@ +#ifndef PyObjC_FFI_SUPPORT_H +#define PyObjC_FFI_SUPPORT_H + +#include "ffi.h" + +typedef void (*PyObjCFFI_ClosureFunc)(ffi_cif*, void*, void**, void*); + +void PyObjCFFI_FreeCIF(ffi_cif* cif); +ffi_cif* PyObjCFFI_CIFForSignature(PyObjCMethodSignature* signature); +IMP PyObjCFFI_MakeClosure(PyObjCMethodSignature* signature, + PyObjCFFI_ClosureFunc func, void* userdata); +void* PyObjCFFI_FreeClosure(IMP closure); + +IMP PyObjCFFI_MakeIMPForSignature(char* signature, PyObject* callable); +IMP PyObjCFFI_MakeIMPForPyObjCSelector(PyObjCSelector *aSelector); +PyObject *PyObjCFFI_Caller(PyObject *aMeth, PyObject* self, PyObject *args); + +int PyObjCFFI_CountArguments( + PyObjCMethodSignature* methinfo, Py_ssize_t argOffset, + Py_ssize_t* byref_in_count, + Py_ssize_t* byref_out_count, + Py_ssize_t* plain_count, + Py_ssize_t* argbuf_len); + +int PyObjCFFI_ParseArguments( + PyObjCMethodSignature* methinfo, Py_ssize_t argOffset, + PyObject* args, Py_ssize_t argbuf_cur, unsigned char* argbuf, + void** byref, + ffi_type** arglist, void** values); + +PyObject* PyObjCFFI_BuildResult( + PyObjCMethodSignature* methinfo, Py_ssize_t argOffset, + void* pRetval, void** byref, Py_ssize_t byref_out_count, + PyObject* self, int flags); + +#endif /* PyObjC_FFI_SUPPORT_H */ -- cgit v1.2.3