| #include "_cffi_include.h" | |
| #define AA (42) | |
| #define BB (&bb) | |
| static int bb = 16261; | |
| int foo42(int a, int *b) | |
| { | |
| return a - *b; | |
| } | |
| int foo64(int a) | |
| { | |
| return ~a; | |
| } | |
| struct foo_s { | |
| int a; | |
| }; | |
| /************************************************************/ | |
| static void *_cffi_types[] = { | |
| _CFFI_OP(_CFFI_OP_FUNCTION, 1), | |
| _CFFI_OP(_CFFI_OP_PRIMITIVE, _CFFI_PRIM_INT), | |
| _CFFI_OP(_CFFI_OP_POINTER, 1), | |
| _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), | |
| _CFFI_OP(_CFFI_OP_FUNCTION, 1), | |
| _CFFI_OP(_CFFI_OP_PRIMITIVE, _CFFI_PRIM_INT), | |
| _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), | |
| _CFFI_OP(_CFFI_OP_STRUCT_UNION, 0), | |
| }; | |
| #ifndef PYPY_VERSION | |
| static PyObject * | |
| _cffi_f_foo42(PyObject *self, PyObject *args) | |
| { | |
| int x0; | |
| int * x1; | |
| Py_ssize_t datasize; | |
| int result; | |
| PyObject *arg0; | |
| PyObject *arg1; | |
| if (!PyArg_ParseTuple(args, "OO:foo42", &arg0, &arg1)) | |
| return NULL; | |
| x0 = _cffi_to_c_int(arg0, int); | |
| if (x0 == (int)-1 && PyErr_Occurred()) | |
| return NULL; | |
| datasize = _cffi_prepare_pointer_call_argument( | |
| _cffi_types[1], arg1, (char **)&x1); | |
| if (datasize != 0) { | |
| if (datasize < 0) | |
| return NULL; | |
| x1 = alloca(datasize); | |
| memset((void *)x1, 0, datasize); | |
| if (_cffi_convert_array_from_object((char *)x1, _cffi_types[1], arg1) < 0) | |
| return NULL; | |
| } | |
| Py_BEGIN_ALLOW_THREADS | |
| _cffi_restore_errno(); | |
| { result = foo42(x0, x1); } | |
| _cffi_save_errno(); | |
| Py_END_ALLOW_THREADS | |
| return _cffi_from_c_int(result, int); | |
| } | |
| #else | |
| static int _cffi_f_foo42(int x0, int *x1) | |
| { | |
| return foo42(x0, x1); | |
| } | |
| #endif | |
| #ifndef PYPY_VERSION | |
| static PyObject * | |
| _cffi_f_foo64(PyObject *self, PyObject *arg0) | |
| { | |
| int x0; | |
| int result; | |
| x0 = _cffi_to_c_int(arg0, int); | |
| if (x0 == (int)-1 && PyErr_Occurred()) | |
| return NULL; | |
| Py_BEGIN_ALLOW_THREADS | |
| _cffi_restore_errno(); | |
| { result = foo64(x0); } | |
| _cffi_save_errno(); | |
| Py_END_ALLOW_THREADS | |
| return _cffi_from_c_int(result, int); | |
| } | |
| #else | |
| static int _cffi_f_foo64(int x0) | |
| { | |
| return foo64(x0); | |
| } | |
| #endif | |
| static int _cffi_const_AA(unsigned long long *output) | |
| { | |
| *output = (unsigned long long)((AA) << 0); // integer | |
| return (AA) <= 0; | |
| } | |
| static void _cffi_const_BB(char *output) | |
| { | |
| *(int **)output = BB; | |
| } | |
| static const struct _cffi_global_s _cffi_globals[] = { | |
| { "AA", &_cffi_const_AA, _CFFI_OP(_CFFI_OP_CONSTANT_INT, 0) }, | |
| { "BB", &_cffi_const_BB, _CFFI_OP(_CFFI_OP_CONSTANT, 2) }, | |
| { "bb", &bb, _CFFI_OP(_CFFI_OP_GLOBAL_VAR, 1) }, | |
| { "foo42", &_cffi_f_foo42, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 0) }, | |
| { "foo64", &_cffi_f_foo64, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 4) }, | |
| }; | |
| struct _cffi_align_foo_s { char x; struct foo_s y; }; | |
| static const struct _cffi_struct_union_s _cffi_struct_unions[] = { | |
| { "foo_s", 7, 0, | |
| sizeof(struct foo_s), | |
| offsetof(struct _cffi_align_foo_s, y), | |
| 1, 0 }, | |
| }; | |
| static const struct _cffi_field_s _cffi_fields[] = { | |
| { "a", offsetof(struct foo_s, a), sizeof(((struct foo_s *)0)->a), | |
| _CFFI_OP(_CFFI_OP_NOOP, 1) }, | |
| }; | |
| static const struct _cffi_type_context_s _cffi_type_context = { | |
| _cffi_types, | |
| _cffi_globals, | |
| _cffi_fields, | |
| _cffi_struct_unions, | |
| NULL, | |
| NULL, | |
| 5, /* num_globals */ | |
| 1, /* num_struct_unions */ | |
| 0, | |
| 0, | |
| NULL, | |
| 8, /* num_types */ | |
| }; | |
| #ifndef PYPY_VERSION | |
| PyMODINIT_FUNC | |
| initmanual(void) | |
| { | |
| _cffi_init("manual", 0x2601, &_cffi_type_context); | |
| } | |
| #else | |
| PyMODINIT_FUNC | |
| _cffi_pypyinit_manual(const void *p[]) | |
| { | |
| p[0] = (const void *)0x2601; | |
| p[1] = &_cffi_type_context; | |
| } | |
| #endif |