summaryrefslogtreecommitdiff
path: root/Objective-C/libffi_support.h
diff options
context:
space:
mode:
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 */