summaryrefslogtreecommitdiff
path: root/Objective-C/libffi_support.h
diff options
context:
space:
mode:
authorMatthias Benkard <code@mail.matthias.benkard.de>2007-09-15 15:33:46 +0200
committerMatthias Benkard <code@mail.matthias.benkard.de>2007-09-15 15:33:46 +0200
commit585f55e70e44cccb0807c2bc2d1f0904c8fbc5e1 (patch)
treea94bec4ba2b3a0e298c5619d656cdd013aa2f93d /Objective-C/libffi_support.h
parentd0dd29fcf87b51280dd5c2685063ea42cf4fc115 (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.h36
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 */