diff options
author | Matthias Benkard <code@mail.matthias.benkard.de> | 2007-09-15 15:33:46 +0200 |
---|---|---|
committer | Matthias Benkard <code@mail.matthias.benkard.de> | 2007-09-15 15:33:46 +0200 |
commit | 585f55e70e44cccb0807c2bc2d1f0904c8fbc5e1 (patch) | |
tree | a94bec4ba2b3a0e298c5619d656cdd013aa2f93d /Objective-C/libffi_support.h | |
parent | d0dd29fcf87b51280dd5c2685063ea42cf4fc115 (diff) |
Add libffi support code from PyObjC.
darcs-hash:0cb8e75aa1ea694562f5087aa400840349adcac8
Diffstat (limited to 'Objective-C/libffi_support.h')
-rw-r--r-- | Objective-C/libffi_support.h | 36 |
1 files changed, 36 insertions, 0 deletions
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 */ |