관리-도구
편집 파일: wrapmodule.c
/* * This file was auto-generated with f2py (version:2_1330) and hand edited by * Pearu for testing purposes. Do not edit this file unless you know what you * are doing!!! */ #ifdef __cplusplus extern "C" { #endif /*********************** See f2py2e/cfuncs.py: includes ***********************/ #define PY_SSIZE_T_CLEAN #include <Python.h> #include "fortranobject.h" #include <math.h> static PyObject *wrap_error; static PyObject *wrap_module; /************************************ call ************************************/ static char doc_f2py_rout_wrap_call[] = "\ Function signature:\n\ arr = call(type_num,dims,intent,obj)\n\ Required arguments:\n" " type_num : input int\n" " dims : input int-sequence\n" " intent : input int\n" " obj : input python object\n" "Return objects:\n" " arr : array"; static PyObject *f2py_rout_wrap_call(PyObject *capi_self, PyObject *capi_args) { PyObject * volatile capi_buildvalue = NULL; int type_num = 0; int elsize = 0; npy_intp *dims = NULL; PyObject *dims_capi = Py_None; int rank = 0; int intent = 0; PyArrayObject *capi_arr_tmp = NULL; PyObject *arr_capi = Py_None; int i; if (!PyArg_ParseTuple(capi_args,"iiOiO|:wrap.call",\ &type_num,&elsize,&dims_capi,&intent,&arr_capi)) return NULL; rank = PySequence_Length(dims_capi); dims = malloc(rank*sizeof(npy_intp)); for (i=0;i<rank;++i) { PyObject *tmp; tmp = PySequence_GetItem(dims_capi, i); if (tmp == NULL) { goto fail; } dims[i] = (npy_intp)PyLong_AsLong(tmp); Py_DECREF(tmp); if (dims[i] == -1 && PyErr_Occurred()) { goto fail; } } capi_arr_tmp = ndarray_from_pyobj(type_num,elsize,dims,rank,intent|F2PY_INTENT_OUT,arr_capi,"wrap.call failed"); if (capi_arr_tmp == NULL) { free(dims); return NULL; } capi_buildvalue = Py_BuildValue("N",capi_arr_tmp); free(dims); return capi_buildvalue; fail: free(dims); return NULL; } static char doc_f2py_rout_wrap_attrs[] = "\ Function signature:\n\ arr = array_attrs(arr)\n\ Required arguments:\n" " arr : input array object\n" "Return objects:\n" " data : data address in hex\n" " nd : int\n" " dimensions : tuple\n" " strides : tuple\n" " base : python object\n" " (kind,type,type_num,elsize,alignment) : 4-tuple\n" " flags : int\n" " itemsize : int\n" ; static PyObject *f2py_rout_wrap_attrs(PyObject *capi_self, PyObject *capi_args) { PyObject *arr_capi = Py_None; PyArrayObject *arr = NULL; PyObject *dimensions = NULL; PyObject *strides = NULL; char s[100]; int i; memset(s,0,100); if (!PyArg_ParseTuple(capi_args,"O!|:wrap.attrs", &PyArray_Type,&arr_capi)) return NULL; arr = (PyArrayObject *)arr_capi; sprintf(s,"%p",PyArray_DATA(arr)); dimensions = PyTuple_New(PyArray_NDIM(arr)); strides = PyTuple_New(PyArray_NDIM(arr)); for (i=0;i<PyArray_NDIM(arr);++i) { PyTuple_SetItem(dimensions,i,PyLong_FromLong(PyArray_DIM(arr,i))); PyTuple_SetItem(strides,i,PyLong_FromLong(PyArray_STRIDE(arr,i))); } return Py_BuildValue("siNNO(cciii)ii",s,PyArray_NDIM(arr), dimensions,strides, (PyArray_BASE(arr)==NULL?Py_None:PyArray_BASE(arr)), PyArray_DESCR(arr)->kind, PyArray_DESCR(arr)->type, PyArray_TYPE(arr), PyArray_ITEMSIZE(arr), PyArray_DESCR(arr)->alignment, PyArray_FLAGS(arr), PyArray_ITEMSIZE(arr)); } static PyMethodDef f2py_module_methods[] = { {"call",f2py_rout_wrap_call,METH_VARARGS,doc_f2py_rout_wrap_call}, {"array_attrs",f2py_rout_wrap_attrs,METH_VARARGS,doc_f2py_rout_wrap_attrs}, {NULL,NULL} }; static struct PyModuleDef moduledef = { PyModuleDef_HEAD_INIT, "test_array_from_pyobj_ext", NULL, -1, f2py_module_methods, NULL, NULL, NULL, NULL }; PyMODINIT_FUNC PyInit_test_array_from_pyobj_ext(void) { PyObject *m,*d, *s; m = wrap_module = PyModule_Create(&moduledef); Py_SET_TYPE(&PyFortran_Type, &PyType_Type); import_array(); if (PyErr_Occurred()) Py_FatalError("can't initialize module wrap (failed to import numpy)"); d = PyModule_GetDict(m); s = PyUnicode_FromString("This module 'wrap' is auto-generated with f2py (version:2_1330).\nFunctions:\n" " arr = call(type_num,dims,intent,obj)\n" "."); PyDict_SetItemString(d, "__doc__", s); wrap_error = PyErr_NewException ("wrap.error", NULL, NULL); Py_DECREF(s); #define ADDCONST(NAME, CONST) \ s = PyLong_FromLong(CONST); \ PyDict_SetItemString(d, NAME, s); \ Py_DECREF(s) ADDCONST("F2PY_INTENT_IN", F2PY_INTENT_IN); ADDCONST("F2PY_INTENT_INOUT", F2PY_INTENT_INOUT); ADDCONST("F2PY_INTENT_OUT", F2PY_INTENT_OUT); ADDCONST("F2PY_INTENT_HIDE", F2PY_INTENT_HIDE); ADDCONST("F2PY_INTENT_CACHE", F2PY_INTENT_CACHE); ADDCONST("F2PY_INTENT_COPY", F2PY_INTENT_COPY); ADDCONST("F2PY_INTENT_C", F2PY_INTENT_C); ADDCONST("F2PY_OPTIONAL", F2PY_OPTIONAL); ADDCONST("F2PY_INTENT_INPLACE", F2PY_INTENT_INPLACE); ADDCONST("NPY_BOOL", NPY_BOOL); ADDCONST("NPY_BYTE", NPY_BYTE); ADDCONST("NPY_UBYTE", NPY_UBYTE); ADDCONST("NPY_SHORT", NPY_SHORT); ADDCONST("NPY_USHORT", NPY_USHORT); ADDCONST("NPY_INT", NPY_INT); ADDCONST("NPY_UINT", NPY_UINT); ADDCONST("NPY_INTP", NPY_INTP); ADDCONST("NPY_UINTP", NPY_UINTP); ADDCONST("NPY_LONG", NPY_LONG); ADDCONST("NPY_ULONG", NPY_ULONG); ADDCONST("NPY_LONGLONG", NPY_LONGLONG); ADDCONST("NPY_ULONGLONG", NPY_ULONGLONG); ADDCONST("NPY_FLOAT", NPY_FLOAT); ADDCONST("NPY_DOUBLE", NPY_DOUBLE); ADDCONST("NPY_LONGDOUBLE", NPY_LONGDOUBLE); ADDCONST("NPY_CFLOAT", NPY_CFLOAT); ADDCONST("NPY_CDOUBLE", NPY_CDOUBLE); ADDCONST("NPY_CLONGDOUBLE", NPY_CLONGDOUBLE); ADDCONST("NPY_OBJECT", NPY_OBJECT); ADDCONST("NPY_STRING", NPY_STRING); ADDCONST("NPY_UNICODE", NPY_UNICODE); ADDCONST("NPY_VOID", NPY_VOID); ADDCONST("NPY_NTYPES", NPY_NTYPES); ADDCONST("NPY_NOTYPE", NPY_NOTYPE); ADDCONST("NPY_USERDEF", NPY_USERDEF); ADDCONST("CONTIGUOUS", NPY_ARRAY_C_CONTIGUOUS); ADDCONST("FORTRAN", NPY_ARRAY_F_CONTIGUOUS); ADDCONST("OWNDATA", NPY_ARRAY_OWNDATA); ADDCONST("FORCECAST", NPY_ARRAY_FORCECAST); ADDCONST("ENSURECOPY", NPY_ARRAY_ENSURECOPY); ADDCONST("ENSUREARRAY", NPY_ARRAY_ENSUREARRAY); ADDCONST("ALIGNED", NPY_ARRAY_ALIGNED); ADDCONST("WRITEABLE", NPY_ARRAY_WRITEABLE); ADDCONST("WRITEBACKIFCOPY", NPY_ARRAY_WRITEBACKIFCOPY); ADDCONST("BEHAVED", NPY_ARRAY_BEHAVED); ADDCONST("BEHAVED_NS", NPY_ARRAY_BEHAVED_NS); ADDCONST("CARRAY", NPY_ARRAY_CARRAY); ADDCONST("FARRAY", NPY_ARRAY_FARRAY); ADDCONST("CARRAY_RO", NPY_ARRAY_CARRAY_RO); ADDCONST("FARRAY_RO", NPY_ARRAY_FARRAY_RO); ADDCONST("DEFAULT", NPY_ARRAY_DEFAULT); ADDCONST("UPDATE_ALL", NPY_ARRAY_UPDATE_ALL); #undef ADDCONST( if (PyErr_Occurred()) Py_FatalError("can't initialize module wrap"); #ifdef F2PY_REPORT_ATEXIT on_exit(f2py_report_on_exit,(void*)"array_from_pyobj.wrap.call"); #endif return m; } #ifdef __cplusplus } #endif