codekingpro/portable-devtools
114k
1/*
2 * This file was auto-generated with f2py (version:2_1330) and hand edited by
3 * Pearu for testing purposes. Do not edit this file unless you know what you
4 * are doing!!!
5 */
6
7#ifdef __cplusplus
8extern "C" {
9#endif
10
11/*********************** See f2py2e/cfuncs.py: includes ***********************/
12
13#define PY_SSIZE_T_CLEAN
14#include <Python.h>
15#include "fortranobject.h"
16#include <math.h>
17
18static PyObject *wrap_error;
19static PyObject *wrap_module;
20
21/************************************ call ************************************/
22static char doc_f2py_rout_wrap_call[] = "\
23Function signature:\n\
24 arr = call(type_num,dims,intent,obj)\n\
25Required arguments:\n"
26" type_num : input int\n"
27" dims : input int-sequence\n"
28" intent : input int\n"
29" obj : input python object\n"
30"Return objects:\n"
31" arr : array";
32static PyObject *f2py_rout_wrap_call(PyObject *capi_self,
33 PyObject *capi_args) {
34 PyObject * volatile capi_buildvalue = NULL;
35 int type_num = 0;
36 int elsize = 0;
37 npy_intp *dims = NULL;
38 PyObject *dims_capi = Py_None;
39 int rank = 0;
40 int intent = 0;
41 PyArrayObject *capi_arr_tmp = NULL;
42 PyObject *arr_capi = Py_None;
43 int i;
44
45 if (!PyArg_ParseTuple(capi_args,"iiOiO|:wrap.call",\
46 &type_num,&elsize,&dims_capi,&intent,&arr_capi))
47 return NULL;
48 rank = PySequence_Length(dims_capi);
49 dims = malloc(rank*sizeof(npy_intp));
50 for (i=0;i<rank;++i) {
51 PyObject *tmp;
52 tmp = PySequence_GetItem(dims_capi, i);
53 if (tmp == NULL) {
54 goto fail;
55 }
56 dims[i] = (npy_intp)PyLong_AsLong(tmp);
57 Py_DECREF(tmp);
58 if (dims[i] == -1 && PyErr_Occurred()) {
59 goto fail;
60 }
61 }
62 capi_arr_tmp = ndarray_from_pyobj(type_num,elsize,dims,rank,intent|F2PY_INTENT_OUT,arr_capi,"wrap.call failed");
63 if (capi_arr_tmp == NULL) {
64 free(dims);
65 return NULL;
66 }
67 capi_buildvalue = Py_BuildValue("N",capi_arr_tmp);
68 free(dims);
69 return capi_buildvalue;
70
71fail:
72 free(dims);
73 return NULL;
74}
75
76static char doc_f2py_rout_wrap_attrs[] = "\
77Function signature:\n\
78 arr = array_attrs(arr)\n\
79Required arguments:\n"
80" arr : input array object\n"
81"Return objects:\n"
82" data : data address in hex\n"
83" nd : int\n"
84" dimensions : tuple\n"
85" strides : tuple\n"
86" base : python object\n"
87" (kind,type,type_num,elsize,alignment) : 4-tuple\n"
88" flags : int\n"
89" itemsize : int\n"
90;
91static PyObject *f2py_rout_wrap_attrs(PyObject *capi_self,
92 PyObject *capi_args) {
93 PyObject *arr_capi = Py_None;
94 PyArrayObject *arr = NULL;
95 PyObject *dimensions = NULL;
96 PyObject *strides = NULL;
97 char s[100];
98 int i;
99 memset(s,0,100);
100 if (!PyArg_ParseTuple(capi_args,"O!|:wrap.attrs",
101 &PyArray_Type,&arr_capi))
102 return NULL;
103 arr = (PyArrayObject *)arr_capi;
104 sprintf(s,"%p",PyArray_DATA(arr));
105 dimensions = PyTuple_New(PyArray_NDIM(arr));
106 strides = PyTuple_New(PyArray_NDIM(arr));
107 for (i=0;i<PyArray_NDIM(arr);++i) {
108 PyTuple_SetItem(dimensions,i,PyLong_FromLong(PyArray_DIM(arr,i)));
109 PyTuple_SetItem(strides,i,PyLong_FromLong(PyArray_STRIDE(arr,i)));
110 }
111 return Py_BuildValue("siNNO(cciii)ii",s,PyArray_NDIM(arr),
112 dimensions,strides,
113 (PyArray_BASE(arr)==NULL?Py_None:PyArray_BASE(arr)),
114 PyArray_DESCR(arr)->kind,
115 PyArray_DESCR(arr)->type,
116 PyArray_TYPE(arr),
117 PyArray_ITEMSIZE(arr),
118 PyDataType_ALIGNMENT(PyArray_DESCR(arr)),
119 PyArray_FLAGS(arr),
120 PyArray_ITEMSIZE(arr));
121}
122
123static PyMethodDef f2py_module_methods[] = {
124
125 {"call",f2py_rout_wrap_call,METH_VARARGS,doc_f2py_rout_wrap_call},
126 {"array_attrs",f2py_rout_wrap_attrs,METH_VARARGS,doc_f2py_rout_wrap_attrs},
127 {NULL,NULL}
128};
129
130static struct PyModuleDef moduledef = {
131 PyModuleDef_HEAD_INIT,
132 "test_array_from_pyobj_ext",
133 NULL,
134 -1,
135 f2py_module_methods,
136 NULL,
137 NULL,
138 NULL,
139 NULL
140};
141
142PyMODINIT_FUNC PyInit_test_array_from_pyobj_ext(void) {
143 PyObject *m,*d, *s;
144 m = wrap_module = PyModule_Create(&moduledef);
145 Py_SET_TYPE(&PyFortran_Type, &PyType_Type);
146 import_array();
147 if (PyErr_Occurred())
148 Py_FatalError("can't initialize module wrap (failed to import numpy)");
149 d = PyModule_GetDict(m);
150 s = PyUnicode_FromString("This module 'wrap' is auto-generated with f2py (version:2_1330).\nFunctions:\n"
151 " arr = call(type_num,dims,intent,obj)\n"
152 ".");
153 PyDict_SetItemString(d, "__doc__", s);
154 wrap_error = PyErr_NewException ("wrap.error", NULL, NULL);
155 Py_DECREF(s);
156
157#define ADDCONST(NAME, CONST) \
158 s = PyLong_FromLong(CONST); \
159 PyDict_SetItemString(d, NAME, s); \
160 Py_DECREF(s)
161
162 ADDCONST("F2PY_INTENT_IN", F2PY_INTENT_IN);
163 ADDCONST("F2PY_INTENT_INOUT", F2PY_INTENT_INOUT);
164 ADDCONST("F2PY_INTENT_OUT", F2PY_INTENT_OUT);
165 ADDCONST("F2PY_INTENT_HIDE", F2PY_INTENT_HIDE);
166 ADDCONST("F2PY_INTENT_CACHE", F2PY_INTENT_CACHE);
167 ADDCONST("F2PY_INTENT_COPY", F2PY_INTENT_COPY);
168 ADDCONST("F2PY_INTENT_C", F2PY_INTENT_C);
169 ADDCONST("F2PY_OPTIONAL", F2PY_OPTIONAL);
170 ADDCONST("F2PY_INTENT_INPLACE", F2PY_INTENT_INPLACE);
171 ADDCONST("NPY_BOOL", NPY_BOOL);
172 ADDCONST("NPY_BYTE", NPY_BYTE);
173 ADDCONST("NPY_UBYTE", NPY_UBYTE);
174 ADDCONST("NPY_SHORT", NPY_SHORT);
175 ADDCONST("NPY_USHORT", NPY_USHORT);
176 ADDCONST("NPY_INT", NPY_INT);
177 ADDCONST("NPY_UINT", NPY_UINT);
178 ADDCONST("NPY_INTP", NPY_INTP);
179 ADDCONST("NPY_UINTP", NPY_UINTP);
180 ADDCONST("NPY_LONG", NPY_LONG);
181 ADDCONST("NPY_ULONG", NPY_ULONG);
182 ADDCONST("NPY_LONGLONG", NPY_LONGLONG);
183 ADDCONST("NPY_ULONGLONG", NPY_ULONGLONG);
184 ADDCONST("NPY_FLOAT", NPY_FLOAT);
185 ADDCONST("NPY_DOUBLE", NPY_DOUBLE);
186 ADDCONST("NPY_LONGDOUBLE", NPY_LONGDOUBLE);
187 ADDCONST("NPY_CFLOAT", NPY_CFLOAT);
188 ADDCONST("NPY_CDOUBLE", NPY_CDOUBLE);
189 ADDCONST("NPY_CLONGDOUBLE", NPY_CLONGDOUBLE);
190 ADDCONST("NPY_OBJECT", NPY_OBJECT);
191 ADDCONST("NPY_STRING", NPY_STRING);
192 ADDCONST("NPY_UNICODE", NPY_UNICODE);
193 ADDCONST("NPY_VOID", NPY_VOID);
194 ADDCONST("NPY_NTYPES_LEGACY", NPY_NTYPES_LEGACY);
195 ADDCONST("NPY_NOTYPE", NPY_NOTYPE);
196 ADDCONST("NPY_USERDEF", NPY_USERDEF);
197
198 ADDCONST("CONTIGUOUS", NPY_ARRAY_C_CONTIGUOUS);
199 ADDCONST("FORTRAN", NPY_ARRAY_F_CONTIGUOUS);
200 ADDCONST("OWNDATA", NPY_ARRAY_OWNDATA);
201 ADDCONST("FORCECAST", NPY_ARRAY_FORCECAST);
202 ADDCONST("ENSURECOPY", NPY_ARRAY_ENSURECOPY);
203 ADDCONST("ENSUREARRAY", NPY_ARRAY_ENSUREARRAY);
204 ADDCONST("ALIGNED", NPY_ARRAY_ALIGNED);
205 ADDCONST("WRITEABLE", NPY_ARRAY_WRITEABLE);
206 ADDCONST("WRITEBACKIFCOPY", NPY_ARRAY_WRITEBACKIFCOPY);
207
208 ADDCONST("BEHAVED", NPY_ARRAY_BEHAVED);
209 ADDCONST("BEHAVED_NS", NPY_ARRAY_BEHAVED_NS);
210 ADDCONST("CARRAY", NPY_ARRAY_CARRAY);
211 ADDCONST("FARRAY", NPY_ARRAY_FARRAY);
212 ADDCONST("CARRAY_RO", NPY_ARRAY_CARRAY_RO);
213 ADDCONST("FARRAY_RO", NPY_ARRAY_FARRAY_RO);
214 ADDCONST("DEFAULT", NPY_ARRAY_DEFAULT);
215 ADDCONST("UPDATE_ALL", NPY_ARRAY_UPDATE_ALL);
216
217#undef ADDCONST
218
219 if (PyErr_Occurred())
220 Py_FatalError("can't initialize module wrap");
221
222#ifdef F2PY_REPORT_ATEXIT
223 on_exit(f2py_report_on_exit,(void*)"array_from_pyobj.wrap.call");
224#endif
225
226#ifdef Py_GIL_DISABLED
227 // signal whether this module supports running with the GIL disabled
228 PyUnstable_Module_SetGIL(m, Py_MOD_GIL_NOT_USED);
229#endif
230
231 return m;
232}
233#ifdef __cplusplus
234}
235#endif
236 