| #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 |