From 220f59f1e978271859ffb1fa498014876eb262b9 Mon Sep 17 00:00:00 2001 From: AndrewBC Date: Sun, 12 Jun 2011 02:31:41 -0500 Subject: [PATCH] Updated PyCObject calls to use PyCapsule calls --- llvm/_core.c | 70 +++++++++++++++++++++++- llvm/wrap.c | 15 +++++- llvm/wrap.h | 148 +++++++++++++++++++++++++++++++++++++++++++++++++-- 3 files changed, 226 insertions(+), 7 deletions(-) diff --git a/llvm/_core.c b/llvm/_core.c index 829b855..f48975c 100644 --- a/llvm/_core.c +++ b/llvm/_core.c @@ -178,8 +178,13 @@ _wLLVMLinkModules(PyObject *self, PyObject *args) if (!PyArg_ParseTuple(args, "OO", &dest_obj, &src_obj)) return NULL; +#ifdef LLVM_PY_USE_PYCAPSULE + dest = (LLVMModuleRef) PyCapsule_GetPointer(dest_obj, NULL); + src = (LLVMModuleRef) PyCapsule_GetPointer(src_obj, NULL); +#else dest = (LLVMModuleRef) PyCObject_AsVoidPtr(dest_obj); src = (LLVMModuleRef) PyCObject_AsVoidPtr(src_obj); +#endif if (!LLVMLinkModules(dest, src, &errmsg)) { if (errmsg) { @@ -377,8 +382,13 @@ _wLLVMConstInt(PyObject *self, PyObject *args) if (!PyArg_ParseTuple(args, "OKi", &obj, &n, &sign_extend)) return NULL; - + +#ifdef LLVM_PY_USE_PYCAPSULE + ty = (LLVMTypeRef) PyCapsule_GetPointer(obj, NULL); +#else ty = (LLVMTypeRef)(PyCObject_AsVoidPtr(obj)); +#endif + val = LLVMConstInt(ty, n, sign_extend); return ctor_LLVMValueRef(val); } @@ -394,7 +404,12 @@ _wLLVMConstReal(PyObject *self, PyObject *args) if (!PyArg_ParseTuple(args, "Od", &obj, &d)) return NULL; +#ifdef LLVM_PY_USE_PYCAPSULE + ty = (LLVMTypeRef) PyCapsule_GetPointer(obj, NULL); +#else ty = (LLVMTypeRef)(PyCObject_AsVoidPtr(obj)); +#endif + val = LLVMConstReal(ty, d); return ctor_LLVMValueRef(val); } @@ -630,14 +645,26 @@ _wLLVMBuildInvoke(PyObject *self, PyObject *args) if (!PyArg_ParseTuple(args, "OOOOOs", &obj1, &obj2, &obj3, &obj4, &obj5, &name)) return NULL; +#ifdef LLVM_PY_USE_PYCAPSULE + builder = (LLVMBuilderRef) PyCapsule_GetPointer(obj1, NULL); + func = (LLVMValueRef) PyCapsule_GetPointer(obj2, NULL); +#else builder = (LLVMBuilderRef)(PyCObject_AsVoidPtr(obj1)); func = (LLVMValueRef)(PyCObject_AsVoidPtr(obj2)); +#endif + fnarg_count = (unsigned) PyList_Size(obj3); fnargs = (LLVMValueRef *)make_array_from_list(obj3, fnarg_count); if (!fnargs) return PyErr_NoMemory(); + +#ifdef LLVM_PY_USE_PYCAPSULE + then_blk = (LLVMBasicBlockRef) PyCapsule_GetPointer(obj4, NULL); + catch_blk = (LLVMBasicBlockRef) PyCapsule_GetPointer(obj5, NULL); +#else then_blk = (LLVMBasicBlockRef)(PyCObject_AsVoidPtr(obj4)); catch_blk = (LLVMBasicBlockRef)(PyCObject_AsVoidPtr(obj5)); +#endif inst = LLVMBuildInvoke(builder, func, fnargs, fnarg_count, then_blk, catch_blk, name); @@ -935,7 +962,11 @@ _wLLVMCreateExecutionEngine(PyObject *self, PyObject *args) if (!PyArg_ParseTuple(args, "Oi", &obj, &force_interpreter)) return NULL; +#ifdef LLVM_PY_USE_PYCAPSULE + mod = (LLVMModuleRef) PyCapsule_GetPointer(obj, NULL); +#else mod = (LLVMModuleRef) PyCObject_AsVoidPtr(obj); +#endif if (force_interpreter) error = LLVMCreateInterpreterForModule(&ee, mod, &outmsg); @@ -963,8 +994,13 @@ _wLLVMGetPointerToFunction(PyObject *self, PyObject *args) if (!PyArg_ParseTuple(args, "OO", &obj_ee, &obj_fn)) return NULL; +#ifdef LLVM_PY_USE_PYCAPSULE + ee = (LLVMExecutionEngineRef) PyCapsule_GetPointer(obj_ee, NULL); + fn = (LLVMValueRef) PyCapsule_GetPointer(obj_fn, NULL); +#else ee = (LLVMExecutionEngineRef) PyCObject_AsVoidPtr(obj_ee); fn = (LLVMValueRef) PyCObject_AsVoidPtr(obj_fn); +#endif return PyLong_FromVoidPtr(LLVMGetPointerToFunction(ee,fn)); } @@ -989,8 +1025,15 @@ _wLLVMRemoveModule2(PyObject *self, PyObject *args) if (!PyArg_ParseTuple(args, "OO", &obj_ee, &obj_mod)) return NULL; +#ifdef LLVM_PY_USE_PYCAPSULE + ee = (LLVMExecutionEngineRef) PyCapsule_GetPointer(obj_ee, NULL); + fn = (LLVMValueRef) PyCapsule_GetPointer(obj_fn, NULL); +#error "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Using capsule" +#else ee = (LLVMExecutionEngineRef) PyCObject_AsVoidPtr(obj_ee); mod = (LLVMModuleRef) PyCObject_AsVoidPtr(obj_mod); +#error "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Using pycobject" +#endif LLVMRemoveModule(ee, mod, &mod_new, &outmsg); if (mod_new) { @@ -1036,7 +1079,11 @@ _wLLVMCreateGenericValueOfInt(PyObject *self, PyObject *args) if (!PyArg_ParseTuple(args, "OLi", &obj1, &n, &is_signed)) return NULL; +#ifdef LLVM_PY_USE_PYCAPSULE + ty = (LLVMTypeRef) PyCapsule_GetPointer(obj1, NULL); +#else ty = (LLVMTypeRef) PyCObject_AsVoidPtr(obj1); +#endif gv = LLVMCreateGenericValueOfInt(ty, n, is_signed); return ctor_LLVMGenericValueRef(gv); @@ -1053,7 +1100,11 @@ _wLLVMCreateGenericValueOfFloat(PyObject *self, PyObject *args) if (!PyArg_ParseTuple(args, "Od", &obj1, &d)) return NULL; +#ifdef LLVM_PY_USE_PYCAPSULE + ty = (LLVMTypeRef) PyCapsule_GetPointer(obj1, NULL); +#else ty = (LLVMTypeRef) PyCObject_AsVoidPtr(obj1); +#endif gv = LLVMCreateGenericValueOfFloat(ty, d); return ctor_LLVMGenericValueRef(gv); @@ -1073,7 +1124,11 @@ _wLLVMCreateGenericValueOfPointer(PyObject *self, PyObject *args) n=n_; +#ifdef LLVM_PY_USE_PYCAPSULE + ty = (LLVMTypeRef) PyCapsule_GetPointer(obj1, NULL); +#else ty = (LLVMTypeRef) PyCObject_AsVoidPtr(obj1); +#endif gv = LLVMCreateGenericValueOfPointer((void*)n); return ctor_LLVMGenericValueRef(gv); @@ -1090,7 +1145,11 @@ _wLLVMGenericValueToInt(PyObject *self, PyObject *args) if (!PyArg_ParseTuple(args, "Oi", &obj1, &is_signed)) return NULL; +#ifdef LLVM_PY_USE_PYCAPSULE + gv = (LLVMGenericValueRef) PyCapsule_GetPointer(obj1, NULL); +#else gv = (LLVMGenericValueRef) PyCObject_AsVoidPtr(obj1); +#endif val = LLVMGenericValueToInt(gv, is_signed); return is_signed ? @@ -1109,8 +1168,13 @@ _wLLVMGenericValueToFloat(PyObject *self, PyObject *args) if (!PyArg_ParseTuple(args, "OO", &obj1, &obj2)) return NULL; +#ifdef LLVM_PY_USE_PYCAPSULE + ty = (LLVMTypeRef) PyCapsule_GetPointer(obj1, NULL); + gv = (LLVMGenericValueRef) PyCapsule_GetPointer(obj2, NULL); +#else ty = (LLVMTypeRef) PyCObject_AsVoidPtr(obj1); gv = (LLVMGenericValueRef) PyCObject_AsVoidPtr(obj2); +#endif val = LLVMGenericValueToFloat(ty, gv); return PyFloat_FromDouble(val); @@ -1126,7 +1190,11 @@ _wLLVMGenericValueToPointer(PyObject *self, PyObject *args) if (!PyArg_ParseTuple(args, "O", &obj1)) return NULL; +#ifdef LLVM_PY_USE_PYCAPSULE + gv = (LLVMGenericValueRef) PyCapsule_GetPointer(obj1, NULL); +#else gv = (LLVMGenericValueRef) PyCObject_AsVoidPtr(obj1); +#endif val = LLVMGenericValueToPointer(gv); return PyLong_FromVoidPtr(val); diff --git a/llvm/wrap.c b/llvm/wrap.c index a0a54a6..09a2ad8 100644 --- a/llvm/wrap.c +++ b/llvm/wrap.c @@ -30,7 +30,6 @@ #include "wrap.h" - /*===----------------------------------------------------------------------===*/ /* Helper functions/macros */ /*===----------------------------------------------------------------------===*/ @@ -39,7 +38,11 @@ PyObject * ctor_ ## typ ( typ p) \ { \ if (p) \ +#ifdef LLVM_PY_USE_PYCAPSULE \ + return PyCapsule_New(p, NULL, NULL); \ +#else \ return PyCObject_FromVoidPtr(p, NULL); \ +#endif \ Py_RETURN_NONE; \ } @@ -81,8 +84,11 @@ void *get_object_arg(PyObject *args) if (!PyArg_ParseTuple(args, "O", &o)) return NULL; - +#ifdef LLVM_PY_USE_PYCAPSULE + return PyCapsule_GetPointer(o, NULL); +#else return PyCObject_AsVoidPtr(o); +#endif } void **make_array_from_list(PyObject *list, int n) @@ -96,7 +102,11 @@ void **make_array_from_list(PyObject *list, int n) for (i=0; i= 3) +#define LLVM_PY_USE_PYCAPSULE +#endif /** * Functions and macros to aid in wrapping. @@ -46,7 +51,6 @@ #include "llvm-c/ExecutionEngine.h" #include "llvm-c/Target.h" - /*===----------------------------------------------------------------------===*/ /* Typedefs */ /*===----------------------------------------------------------------------===*/ @@ -170,9 +174,13 @@ _w ## func (PyObject *self, PyObject *args) \ \ if (!PyArg_ParseTuple(args, "OO", &obj1, &obj2)) \ return NULL; \ - \ +#ifdef LLVM_PY_USE_PYCAPSULE \ + arg1 = ( intype1 ) PyCapsule_GetPointer(obj1, NULL); \ + arg2 = ( intype2 ) PyCapsule_GetPointer(obj2, NULL); \ +#else \ arg1 = ( intype1 ) PyCObject_AsVoidPtr(obj1); \ arg2 = ( intype2 ) PyCObject_AsVoidPtr(obj2); \ +#endif \ \ return ctor_ ## outtype ( func (arg1, arg2)); \ } @@ -191,9 +199,13 @@ _w ## func (PyObject *self, PyObject *args) \ \ if (!PyArg_ParseTuple(args, "OO", &obj1, &obj2)) \ return NULL; \ - \ +#ifdef LLVM_PY_USE_PYCAPSULE \ + arg1 = ( intype1 ) PyCapsule_GetPointer(obj1, NULL); \ + arg2 = ( intype2 ) PyCapsule_GetPointer(obj2, NULL); \ +#else \ arg1 = ( intype1 ) PyCObject_AsVoidPtr(obj1); \ arg2 = ( intype2 ) PyCObject_AsVoidPtr(obj2); \ +#endif \ \ func (arg1, arg2); \ Py_RETURN_NONE; \ @@ -213,8 +225,11 @@ _w ## func (PyObject *self, PyObject *args) \ \ if (!PyArg_ParseTuple(args, "OI", &obj1, &arg2)) \ return NULL; \ - \ +#ifdef LLVM_PY_USE_PYCAPSULE \ + arg1 = ( intype1 ) PyCapsule_GetPointer(obj1, NULL); \ +#else \ arg1 = ( intype1 ) PyCObject_AsVoidPtr(obj1); \ +#endif \ \ return ctor_ ## outtype ( func (arg1, arg2)); \ } @@ -235,9 +250,15 @@ _w ## func (PyObject *self, PyObject *args) \ if (!PyArg_ParseTuple(args, "OOO", &obj1, &obj2, &obj3)) \ return NULL; \ \ +#ifdef LLVM_PY_USE_PYCAPSULE \ + arg1 = ( intype1 ) PyCapsule_GetPointer(obj1, NULL); \ + arg2 = ( intype2 ) PyCapsule_GetPointer(obj2, NULL); \ + arg3 = ( intype3 ) PyCapsule_GetPointer(obj3, NULL); \ +#else \ arg1 = ( intype1 ) PyCObject_AsVoidPtr(obj1); \ arg2 = ( intype2 ) PyCObject_AsVoidPtr(obj2); \ arg3 = ( intype3 ) PyCObject_AsVoidPtr(obj3); \ +#endif \ \ return ctor_ ## outtype ( func (arg1, arg2, arg3)); \ } @@ -258,9 +279,15 @@ _w ## func (PyObject *self, PyObject *args) \ if (!PyArg_ParseTuple(args, "OOO", &obj1, &obj2, &obj3)) \ return NULL; \ \ +#ifdef LLVM_PY_USE_PYCAPSULE \ + arg1 = ( intype1 ) PyCapsule_GetPointer(obj1, NULL); \ + arg2 = ( intype2 ) PyCapsule_GetPointer(obj2, NULL); \ + arg3 = ( intype3 ) PyCapsule_GetPointer(obj3, NULL); \ +#else \ arg1 = ( intype1 ) PyCObject_AsVoidPtr(obj1); \ arg2 = ( intype2 ) PyCObject_AsVoidPtr(obj2); \ arg3 = ( intype3 ) PyCObject_AsVoidPtr(obj3); \ +#endif \ \ func (arg1, arg2, arg3); \ Py_RETURN_NONE; \ @@ -282,8 +309,13 @@ _w ## func (PyObject *self, PyObject *args) \ if (!PyArg_ParseTuple(args, "IOO", &arg1, &obj2, &obj3)) \ return NULL; \ \ +#ifdef LLVM_PY_USE_PYCAPSULE \ + arg2 = ( intype2 ) PyCapsule_GetPointer(obj2, NULL); \ + arg3 = ( intype3 ) PyCapsule_GetPointer(obj3, NULL); \ +#else \ arg2 = ( intype2 ) PyCObject_AsVoidPtr(obj2); \ arg3 = ( intype3 ) PyCObject_AsVoidPtr(obj3); \ +#endif \ \ return ctor_ ## outtype ( func (arg1, arg2, arg3)); \ } @@ -304,8 +336,13 @@ _w ## func (PyObject *self, PyObject *args) \ if (!PyArg_ParseTuple(args, "IOO", &arg1, &obj2, &obj3)) \ return NULL; \ \ +#ifdef LLVM_PY_USE_PYCAPSULE \ + arg2 = ( intype2 ) PyCapsule_GetPointer(obj2, NULL); \ + arg3 = ( intype3 ) PyCapsule_GetPointer(obj3, NULL); \ +#else \ arg2 = ( intype2 ) PyCObject_AsVoidPtr(obj2); \ arg3 = ( intype3 ) PyCObject_AsVoidPtr(obj3); \ +#endif \ \ return ctor_ ## outtype ( func (arg1, arg2, arg3)); \ } @@ -388,7 +425,11 @@ _w ## func (PyObject *self, PyObject *args) \ if (!PyArg_ParseTuple(args, "Os", &obj1, &arg2)) \ return NULL; \ \ +#ifdef LLVM_PY_USE_PYCAPSULE \ + arg1 = ( intype1 ) PyCapsule_GetPointer(obj1, NULL); \ +#else \ arg1 = ( intype1 ) PyCObject_AsVoidPtr(obj1); \ +#endif \ \ func (arg1, arg2); \ Py_RETURN_NONE; \ @@ -409,7 +450,11 @@ _w ## func (PyObject *self, PyObject *args) \ if (!PyArg_ParseTuple(args, "Os", &obj1, &arg2)) \ return NULL; \ \ +#ifdef LLVM_PY_USE_PYCAPSULE \ + arg1 = ( intype1 ) PyCapsule_GetPointer(obj1, NULL); \ +#else \ arg1 = ( intype1 ) PyCObject_AsVoidPtr(obj1); \ +#endif \ \ return ctor_ ## outtype ( func (arg1, arg2)); \ } @@ -429,7 +474,11 @@ _w ## func (PyObject *self, PyObject *args) \ if (!PyArg_ParseTuple(args, "Oi", &obj1, &arg2)) \ return NULL; \ \ +#ifdef LLVM_PY_USE_PYCAPSULE \ + arg1 = ( intype1 ) PyCapsule_GetPointer(obj1, NULL); \ +#else \ arg1 = ( intype1 ) PyCObject_AsVoidPtr(obj1); \ +#endif \ \ func (arg1, arg2); \ Py_RETURN_NONE; \ @@ -450,7 +499,11 @@ _w ## func (PyObject *self, PyObject *args) \ if (!PyArg_ParseTuple(args, "Oi", &obj1, &arg2)) \ return NULL; \ \ +#ifdef LLVM_PY_USE_PYCAPSULE \ + arg1 = ( intype1 ) PyCapsule_GetPointer(obj1, NULL); \ +#else \ arg1 = ( intype1 ) PyCObject_AsVoidPtr(obj1); \ +#endif \ \ func (arg1, arg2); \ Py_RETURN_NONE; \ @@ -472,8 +525,13 @@ _w ## func (PyObject *self, PyObject *args) \ if (!PyArg_ParseTuple(args, "OOs", &obj1, &obj2, &arg3)) \ return NULL; \ \ +#ifdef LLVM_PY_USE_PYCAPSULE \ + arg1 = ( intype1 ) PyCapsule_GetPointer(obj1, NULL); \ + arg2 = ( intype2 ) PyCapsule_GetPointer(obj2, NULL); \ +#else \ arg1 = ( intype1 ) PyCObject_AsVoidPtr(obj1); \ arg2 = ( intype2 ) PyCObject_AsVoidPtr(obj2); \ +#endif \ \ return ctor_ ## outtype ( func (arg1, arg2, arg3)) ;\ } @@ -494,8 +552,13 @@ _w ## func (PyObject *self, PyObject *args) \ if (!PyArg_ParseTuple(args, "OOi", &obj1, &obj2, &arg3)) \ return NULL; \ \ +#ifdef LLVM_PY_USE_PYCAPSULE \ + arg1 = ( intype1 ) PyCapsule_GetPointer(obj1, NULL); \ + arg2 = ( intype2 ) PyCapsule_GetPointer(obj2, NULL); \ +#else \ arg1 = ( intype1 ) PyCObject_AsVoidPtr(obj1); \ arg2 = ( intype2 ) PyCObject_AsVoidPtr(obj2); \ +#endif \ \ return ctor_ ## outtype ( func (arg1, arg2, arg3)) ;\ } @@ -516,8 +579,13 @@ _w ## func (PyObject *self, PyObject *args) \ if (!PyArg_ParseTuple(args, "OOK", &obj1, &obj2, &arg3)) \ return NULL; \ \ +#ifdef LLVM_PY_USE_PYCAPSULE \ + arg1 = ( intype1 ) PyCapsule_GetPointer(obj1, NULL); \ + arg2 = ( intype2 ) PyCapsule_GetPointer(obj2, NULL); \ +#else \ arg1 = ( intype1 ) PyCObject_AsVoidPtr(obj1); \ arg2 = ( intype2 ) PyCObject_AsVoidPtr(obj2); \ +#endif \ \ return ctor_ ## outtype ( func (arg1, arg2, arg3)) ;\ } @@ -537,7 +605,11 @@ _w ## func (PyObject *self, PyObject *args) \ if (!PyArg_ParseTuple(args, "Oii", &obj1, &arg2, &arg3)) \ return NULL; \ \ +#ifdef LLVM_PY_USE_PYCAPSULE \ + arg1 = ( intype1 ) PyCapsule_GetPointer(obj1, NULL); \ +#else \ arg1 = ( intype1 ) PyCObject_AsVoidPtr(obj1); \ +#endif \ \ func (arg1, arg2, arg3); \ Py_RETURN_NONE; \ @@ -559,7 +631,11 @@ _w ## func (PyObject *self, PyObject *args) \ if (!PyArg_ParseTuple(args, "Oii", &obj1, &arg2, &arg3)) \ return NULL; \ \ +#ifdef LLVM_PY_USE_PYCAPSULE \ + arg1 = ( intype1 ) PyCapsule_GetPointer(obj1, NULL); \ +#else \ arg1 = ( intype1 ) PyCObject_AsVoidPtr(obj1); \ +#endif \ \ func (arg1, arg2, arg3); \ Py_RETURN_NONE; \ @@ -581,8 +657,13 @@ _w ## func (PyObject *self, PyObject *args) \ if (!PyArg_ParseTuple(args, "OsO", &obj1, &arg2, &obj3)) \ return NULL; \ \ +#ifdef LLVM_PY_USE_PYCAPSULE \ + arg1 = ( intype1 ) PyCapsule_GetPointer(obj1, NULL); \ + arg3 = ( intype3 ) PyCapsule_GetPointer(obj3, NULL); \ +#else \ arg1 = ( intype1 ) PyCObject_AsVoidPtr(obj1); \ arg3 = ( intype3 ) PyCObject_AsVoidPtr(obj3); \ +#endif \ \ return ctor_ ## outtype ( func (arg1, arg2, arg3)); \ } @@ -605,8 +686,13 @@ _w ## func (PyObject *self, PyObject *args) \ if (!PyArg_ParseTuple(args, "OOis", &obj1, &obj2, &arg3, &arg4)) \ return NULL; \ \ +#ifdef LLVM_PY_USE_PYCAPSULE \ + arg1 = ( intype1 ) PyCapsule_GetPointer(obj1, NULL); \ + arg2 = ( intype2 ) PyCapsule_GetPointer(obj2, NULL); \ +#else \ arg1 = ( intype1 ) PyCObject_AsVoidPtr(obj1); \ arg2 = ( intype2 ) PyCObject_AsVoidPtr(obj2); \ +#endif \ \ return ctor_ ## outtype ( func (arg1, arg2, arg3, arg4)) ;\ } @@ -628,9 +714,15 @@ _w ## func (PyObject *self, PyObject *args) \ if (!PyArg_ParseTuple(args, "OOOs", &obj1, &obj2, &obj3, &arg4)) \ return NULL; \ \ +#ifdef LLVM_PY_USE_PYCAPSULE \ + arg1 = ( intype1 ) PyCapsule_GetPointer(obj1, NULL); \ + arg2 = ( intype2 ) PyCapsule_GetPointer(obj2, NULL); \ + arg3 = ( intype3 ) PyCapsule_GetPointer(obj3, NULL); \ +#else \ arg1 = ( intype1 ) PyCObject_AsVoidPtr(obj1); \ arg2 = ( intype2 ) PyCObject_AsVoidPtr(obj2); \ arg3 = ( intype3 ) PyCObject_AsVoidPtr(obj3); \ +#endif \ \ return ctor_ ## outtype ( func (arg1, arg2, arg3, arg4)); \ } @@ -652,9 +744,15 @@ _w ## func (PyObject *self, PyObject *args) \ if (!PyArg_ParseTuple(args, "OOOi", &obj1, &obj2, &obj3, &arg4)) \ return NULL; \ \ +#ifdef LLVM_PY_USE_PYCAPSULE \ + arg1 = ( intype1 ) PyCapsule_GetPointer(obj1, NULL); \ + arg2 = ( intype2 ) PyCapsule_GetPointer(obj2, NULL); \ + arg3 = ( intype3 ) PyCapsule_GetPointer(obj3, NULL); \ +#else \ arg1 = ( intype1 ) PyCObject_AsVoidPtr(obj1); \ arg2 = ( intype2 ) PyCObject_AsVoidPtr(obj2); \ arg3 = ( intype3 ) PyCObject_AsVoidPtr(obj3); \ +#endif \ \ return ctor_ ## outtype ( func (arg1, arg2, arg3, arg4)); \ } @@ -676,10 +774,17 @@ _w ## func (PyObject *self, PyObject *args) \ if (!PyArg_ParseTuple(args, "OOOO", &obj1, &obj2, &obj3, &obj4)) \ return NULL; \ \ +#ifdef LLVM_PY_USE_PYCAPSULE \ + arg1 = ( intype1 ) PyCapsule_GetPointer(obj1, NULL); \ + arg2 = ( intype2 ) PyCapsule_GetPointer(obj2, NULL); \ + arg3 = ( intype3 ) PyCapsule_GetPointer(obj3, NULL); \ + arg4 = ( intype4 ) PyCapsule_GetPointer(obj4, NULL); \ +#else \ arg1 = ( intype1 ) PyCObject_AsVoidPtr(obj1); \ arg2 = ( intype2 ) PyCObject_AsVoidPtr(obj2); \ arg3 = ( intype3 ) PyCObject_AsVoidPtr(obj3); \ arg4 = ( intype4 ) PyCObject_AsVoidPtr(obj4); \ +#endif \ \ return ctor_ ## outtype ( func (arg1, arg2, arg3, arg4)); \ } @@ -702,10 +807,17 @@ _w ## func (PyObject *self, PyObject *args) \ if (!PyArg_ParseTuple(args, "OOOOs", &obj1, &obj2, &obj3, &obj4, &arg5)) \ return NULL; \ \ +#ifdef LLVM_PY_USE_PYCAPSULE \ + arg1 = ( intype1 ) PyCapsule_GetPointer(obj1, NULL); \ + arg2 = ( intype2 ) PyCapsule_GetPointer(obj2, NULL); \ + arg3 = ( intype3 ) PyCapsule_GetPointer(obj3, NULL); \ + arg4 = ( intype4 ) PyCapsule_GetPointer(obj4, NULL); \ +#else \ arg1 = ( intype1 ) PyCObject_AsVoidPtr(obj1); \ arg2 = ( intype2 ) PyCObject_AsVoidPtr(obj2); \ arg3 = ( intype3 ) PyCObject_AsVoidPtr(obj3); \ arg4 = ( intype4 ) PyCObject_AsVoidPtr(obj4); \ +#endif \ \ return ctor_ ## outtype ( func (arg1, arg2, arg3, arg4, arg5)); \ } @@ -728,9 +840,15 @@ _w ## func (PyObject *self, PyObject *args) \ if (!PyArg_ParseTuple(args, "OiOOs", &obj1, &arg2, &obj3, &obj4, &arg5)) \ return NULL; \ \ +#ifdef LLVM_PY_USE_PYCAPSULE \ + arg1 = ( intype1 ) PyCapsule_GetPointer(obj1, NULL); \ + arg3 = ( intype3 ) PyCapsule_GetPointer(obj3, NULL); \ + arg4 = ( intype4 ) PyCapsule_GetPointer(obj4, NULL); \ +#else \ arg1 = ( intype1 ) PyCObject_AsVoidPtr(obj1); \ arg3 = ( intype3 ) PyCObject_AsVoidPtr(obj3); \ arg4 = ( intype4 ) PyCObject_AsVoidPtr(obj4); \ +#endif \ \ return ctor_ ## outtype ( func (arg1, arg2, arg3, arg4, arg5)); \ } @@ -753,7 +871,11 @@ _w ## func (PyObject *self, PyObject *args) \ if (!PyArg_ParseTuple(args, "OO", &obj1, &obj2)) \ return NULL; \ \ +#ifdef LLVM_PY_USE_PYCAPSULE \ + arg1 = ( intype1 ) PyCapsule_GetPointer(obj1, NULL); \ +#else \ arg1 = ( intype1 ) PyCObject_AsVoidPtr(obj1); \ +#endif \ arg2n = (unsigned) PyList_Size(obj2); \ if (!(arg2v = ( intype2 *)make_array_from_list(obj2, arg2n))) \ return PyErr_NoMemory(); \ @@ -835,7 +957,11 @@ _w ## func (PyObject *self, PyObject *args) \ if (!PyArg_ParseTuple(args, "OOi", &obj1, &obj2, &arg3)) \ return NULL; \ \ +#ifdef LLVM_PY_USE_PYCAPSULE \ + arg1 = ( intype1 ) PyCapsule_GetPointer(obj1, NULL); \ +#else \ arg1 = ( intype1 ) PyCObject_AsVoidPtr(obj1); \ +#endif \ arg2n = (unsigned) PyList_Size(obj2); \ if (!(arg2v = ( intype2 *)make_array_from_list(obj2, arg2n))) \ return PyErr_NoMemory(); \ @@ -864,7 +990,11 @@ _w ## func (PyObject *self, PyObject *args) \ if (!PyArg_ParseTuple(args, "OiO", &obj1, &arg2, &obj3)) \ return NULL; \ \ +#ifdef LLVM_PY_USE_PYCAPSULE \ + arg1 = ( intype1 ) PyCapsule_GetPointer(obj1, NULL); \ +#else \ arg1 = ( intype1 ) PyCObject_AsVoidPtr(obj1); \ +#endif \ arg3n = (unsigned) PyList_Size(obj3); \ if (!(arg3v = ( intype3 *)make_array_from_list(obj3, arg3n))) \ return PyErr_NoMemory(); \ @@ -893,8 +1023,13 @@ _w ## func (PyObject *self, PyObject *args) \ if (!PyArg_ParseTuple(args, "OOO", &obj1, &obj2, &obj3)) \ return NULL; \ \ +#ifdef LLVM_PY_USE_PYCAPSULE \ + arg1 = ( intype1 ) PyCapsule_GetPointer(obj1, NULL); \ + arg2 = ( intype2 ) PyCapsule_GetPointer(obj2, NULL); \ +#else \ arg1 = ( intype1 ) PyCObject_AsVoidPtr(obj1); \ arg2 = ( intype2 ) PyCObject_AsVoidPtr(obj2); \ +#endif \ arg3n = (unsigned) PyList_Size(obj3); \ if (!(arg3v = ( intype3 *)make_array_from_list(obj3, arg3n))) \ return PyErr_NoMemory(); \ @@ -924,8 +1059,13 @@ _w ## func (PyObject *self, PyObject *args) \ if (!PyArg_ParseTuple(args, "OOOs", &obj1, &obj2, &obj3, &arg4))\ return NULL; \ \ +#ifdef LLVM_PY_USE_PYCAPSULE \ + arg1 = ( intype1 ) PyCapsule_GetPointer(obj1, NULL); \ + arg2 = ( intype2 ) PyCapsule_GetPointer(obj2, NULL); \ +#else \ arg1 = ( intype1 ) PyCObject_AsVoidPtr(obj1); \ arg2 = ( intype2 ) PyCObject_AsVoidPtr(obj2); \ +#endif \ arg3n = ( unsigned ) PyList_Size(obj3); \ if (!(arg3v = ( intype3 *)make_array_from_list(obj3, arg3n))) \ return PyErr_NoMemory(); \