2[c-@`sdZddlmZmZmZddd!ZddlmZejaddl Z ddl Z ddl Z dd l m Z mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZIdd lmJZJdd lmKZKdd lmLZLdd lmMZMddlmNZNddlmOZOiaPiZQxcddddddddddddddddd d!d"d#d$d%d&d'd(gD]ZRd)eQeRed?d@edAdBedCdDedEdFedGdHedIdJdKdL6idFd 6dFd!6dM6dNdOdPgd 6dQdRdSdTgd!6ZYi dUdV6dWd6dXd#6dYd"6dZd(6d[d$6d\d&6d]d 6d]d!6id^e6d]eEe6d_6gZZi eQdM6d`dV6dad"6dbd$6dcd#6ddde6dfdg6dhdi6djdkdlgdm6idne6d6dodpgd 6dqdrdSgd!6Z[i/id)ds6d)dt6d)d6d)du6d)dv6dwdx6d)dy6d)dz6d)d{6d)d|6d}d~6d)d6d)d6d)d6d)d6d)d6dM6d]d6d]d6d]d6d]d6d]d6d]d6dd6dd6d]d6d]d6d]d~6d]d6ddy6ddz6dd{6dd|6dd6dd6dd6dd6d]d6d]d6d]d6dd6dgd6dd6dgd6dd6ddu6ddt6ddv6dds6d]d6d]d6d]d6d]d6d]d6d]d6d]d6d]d6d]d6d]d6d]d6d]d6d]d6ide6d]eEe6d6idd6dd6d]d6eEe2d6idd6dd6d]d6e2d6idd6ideDeEeFe2e$eEe6deDeEe2e$eEe6d]e26d]e6d6ideEeFe2e$e6deDeEe2e$eEe6deDeEe2e6d6ideDeEeFe2e$eEe6dm6idge6ide6ide<6ide6ideEeFee6ide<6ide6gds6eDe:eEe;d6idd6ideEeFe2e6d]e6d6ideEeFe2e6de6d6ideEeFe2e6d6iddgeEeFe2e6dm6idge6ide6ide<6ideEeFee6ide6ide<6ide6gds6e!d6idd6ideEeFe2e6d]e6d6ideEeFe2e6de6d6ideEeFe2e6d6iddgeEeFe2e6dm6idge6ide6ide<6ideEeFee6ide6ide<6ide6gds6e;d6idd6ideEe'6d6dd{6dide6gd6ideDee96ideDeeEe96gds6eDe eEe!d6i ideDeEeFe2e$eEe6deDeEe2e$eEe6d]e6d6ideDeEeFe2e$eEe6deDeEe2e$eEe6de6d6ide6deEe6ide6gd6ide6ide<6ide6ideEeFee6ide<6ide6ideDee6ideDeeEe6gds6ide6d6ideEe6ide6ide16ide/6gdm6ideEe'6d6ide6deEeFee'6d6eDe eEe9eEe!d6i dd6ideEeFe2e$6deDeEe2e$6d6ddgd6dd6ddddddddide6ide<6dide<6ide6ide6dgds6dd6dd6dd6dddgdm6eDe9eEe!d6iddt6ddu6ddv6ed6g Z\i de06de.6de-6de>6deB6de=6de@6de?6deC6deA6de66Z]ieQdM6idide6gd6dd6e]dm6idd6ide6dm6id e6d6eDe5eEed6id d6dd{6d d6d d6eDe5eEee*d6id d6ide6d6ed6iddgd6dgdm6e7d6idddgd6dide6idke6gdm6ed6ieDeeEed6ieDeeEee)d6iddm6e"d6d]d6iddm6e?d6d]d6iddm6eCd6d]d6iddm6eAd6d]d6iddm6ed6d]d6iide6d6ddm6e8d6gZ^ieQdM6idide6gd6dd6d]d6e]dm6iideDe3e)6dz6ideDe4e)6dy6ide*6d{6idide6geDe3e)6d6idide6geDe4e)6d6idideDee'6deDee)6ge*6d6d]d6idd6dd6eDe)eEe3d6idd6d d6dd6eDe)e3d6id d6d d6e*d6iid!e)6d6id"e)6d6id#e)6dz6d$d|6d%d6id&e)6d6d'd(d)d*id+eEe%6gd6id,e)6d6id-e46d6id-e36d6id.e)6d6id/e46d6id/e36d6d0d6d1dx6id2eEe%6d6d3d4gdm6ed6iid5eEe%6id6e%6d7id8id9eEe%6ge6d:gd6d;d6d<d=gdm6ed6d]d6idd6id>e6d6ide$6d?eEe$6d6id e*6d6eDe5eEed6iide6dm6eDe5eEed6i d'd6id-e46d6id-e36d6id/e46d6id/e36d6id@e(6d6idAe(6d6idBe(6dm6eDe5eEee)d6iidCe6d]d6idDeDe3eEe6d]d6idEeEe,6idFe,6gd6dGd6idHeEe,6dm6eDe5eEee)d6d]d6iid e6d6e]dm6eDe5eEee'd6d]d6iid>e6d6eDe5eEed6d]d6id d6ide$6d?eEe$6d6idIe6d6idJe*6d6ed6i d'd6id-e46d6id-e36d6id/e46d6id/e36d6idBe(6dm6idKe(6d6idLe(6d6eDee)d6iidMe6idDeDe3eEe6dEgd6dNd6dHgdm6eDee)d6d]d6iid'e*6d6eDee'd6iide6d6eDee'd6d]d6iidOe*6d6dgdm6ed6iidIe6d6ed6d]d6iddd'gd6dd6dPd6idQe6d6id e*6d6dgdm6e7d6idRd6dSd6dHddgdm6e7d6d]d6iid-e46d6id-e36d6id/e46d6id/e36d6idTe(6d6idAe(6d6idBe(6dm6eDe7e)d6ieDe7e'd6iidQe6d6e7d6d]d6iddddUdVgd6dd6idWe*6d6ddm6ed6idXd6dYd6dZd6d[d6d\d6d]d6d^dz6eDee+d6id_d6eDee+d6d]d6id`d6dYd6dZd6d[d6dad6d]d6dbdz6eDee&d6id_d6eDee&d6d]d6iide6idke6gdm6ed6d]d6id'd6id-e46d6id-e36d6id/e46d6id/e36d6eDee)d6idcddidee'6idfe)6dgiidhe)6idie'6idje6dkge6gd6dlidmeEeFe*e'6idneDe'eEe*6idoe6gd6ed6d]d6ieDeeEed6ieDeeEee)d6iddm6e"d6d]d6iddm6e?d6d]d6iddm6eCd6d]d6iddm6eAd6d]d6iddm6ed6d]d6iide6d6ddm6e8d6g*Z_iidpe6d6ddm6idqd6drd6dsdm6eDe5eEed6d]dt6idud6dvd6dwdm6e7d6d]dt6idxdm6dyd6dzd6ed6d]dt6id{dm6d|d6d}d6gZ`d~Zai dd6dd6dd6dd6dd6dd6dd6dd6dd6dd6ZbdZcdS(sG Rules for building C/API module with f2py2e. Here is a skeleton of a new wrapper function (13Dec2001): wrapper_function(args) declarations get_python_arguments, say, `a' and `b' get_a_from_python if (successful) { get_b_from_python if (successful) { callfortran if (successful) { put_a_to_python if (successful) { put_b_to_python if (successful) { buildvalue = ... } } } } cleanup_b } cleanup_a return buildvalue Copyright 1999,2000 Pearu Peterson all rights reserved, Pearu Peterson Permission to use, modify, and distribute this software is given under the terms of the NumPy License. NO WARRANTY IS EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK. $Date: 2005/08/30 08:58:42 $ Pearu Peterson i(tdivisiontabsolute_importtprint_functions$Revision: 1.129 $i ii(t __version__N(=t applyrulest debugcapit dictappendterrmesstgentitletgetargs2thascallstatementt hasexternalst hasinitvaluethasnotet hasresultnotetisarraytisarrayofstringst iscomplextiscomplexarraytiscomplexfunctiontiscomplexfunction_warntisdummyroutinet isexternalt isfunctiontisfunction_wrapt isint1arrayt isintent_auxt isintent_ctisintent_callbackt isintent_copyt isintent_hidetisintent_inouttisintent_nothidet isintent_outtisintent_overwritet islogicaltislong_complext islong_doubletislong_doublefunctiont islong_longtislong_longfunctiontismoduleroutinet isoptionalt isrequiredtisscalartissigned_long_longarraytisstringt isstringarraytisstringfunctiont issubroutinetissubroutine_wrapt isthreadsafet isunsignedtisunsigned_chartisunsigned_chararraytisunsigned_long_longtisunsigned_long_longarraytisunsigned_shorttisunsigned_shortarraytl_andtl_nottl_ortoutmesstreplacet stripcomma(t capi_maps(tcfuncs(t common_rules(t use_rules(t f90mod_rules(t func2subrtdeclt frompyobjtcleanupfrompyobjttopyarrtmethodt pyobjfromtclosepyobjfromtfreememt userincludest includes0tincludesttypedefsttypedefs_generatedt cppmacrosRBt callbackstlatexdoctrestdoct routine_defstexternroutinestinitf2pywraphookst commonhookstinitcommonhookst f90modhookstinitf90modhookss tSOURCE_DATE_EPOCHs/* File: #modulename#module.c * This file is auto-generated with f2py (version:#f2py_version#). * f2py is a Fortran to Python Interface Generator (FPIG), Second Edition, * written by Pearu Peterson . * Generation date: sv * Do not edit this file directly unless you know what you are doing!!! */ #ifdef __cplusplus extern "C" { #endif sSee f2py2e/cfuncs.py: includess #includes# #includes0# s,See f2py2e/rules.py: mod_rules['modulebody']sM static PyObject *#modulename#_error; static PyObject *#modulename#_module; sSee f2py2e/cfuncs.py: typedefss #typedefs# s(See f2py2e/cfuncs.py: typedefs_generateds #typedefs_generated# sSee f2py2e/cfuncs.py: cppmacross #cppmacros# sSee f2py2e/cfuncs.py: cfuncss #cfuncs# s"See f2py2e/cfuncs.py: userincludess #userincludes# s"See f2py2e/capi_rules.py: usercodes9 #usercode# /* See f2py2e/rules.py */ #externroutines# s#See f2py2e/capi_rules.py: usercode1s #usercode1# s%See f2py2e/cb_rules.py: buildcallbacks #callbacks# sSee f2py2e/rules.py: buildapis #body# s&See f2py2e/f90mod_rules.py: buildhookss #f90modhooks# s/See f2py2e/rules.py: module_rules['modulebody']s s&See f2py2e/common_rules.py: buildhookss #commonhooks# sSee f2py2e/rules.pys static FortranDataDef f2py_routine_defs[] = { #routine_defs# {NULL} }; static PyMethodDef f2py_module_methods[] = { #pymethoddef# {NULL,NULL} }; #if PY_VERSION_HEX >= 0x03000000 static struct PyModuleDef moduledef = { PyModuleDef_HEAD_INIT, "#modulename#", NULL, -1, f2py_module_methods, NULL, NULL, NULL, NULL }; #endif #if PY_VERSION_HEX >= 0x03000000 #define RETVAL m PyMODINIT_FUNC PyInit_#modulename#(void) { #else #define RETVAL PyMODINIT_FUNC init#modulename#(void) { #endif int i; PyObject *m,*d, *s; #if PY_VERSION_HEX >= 0x03000000 m = #modulename#_module = PyModule_Create(&moduledef); #else m = #modulename#_module = Py_InitModule("#modulename#", f2py_module_methods); #endif Py_TYPE(&PyFortran_Type) = &PyType_Type; import_array(); if (PyErr_Occurred()) {PyErr_SetString(PyExc_ImportError, "can't initialize module #modulename# (failed to import numpy)"); return RETVAL;} d = PyModule_GetDict(m); s = PyString_FromString("$Rsevision: $"); PyDict_SetItemString(d, "__version__", s); #if PY_VERSION_HEX >= 0x03000000 s = PyUnicode_FromString( #else s = PyString_FromString( #endif "This module '#modulename#' is auto-generated with f2py (version:#f2py_version#).\nFunctions:\n" #docs#"."); PyDict_SetItemString(d, "__doc__", s); #modulename#_error = PyErr_NewException ("#modulename#.error", NULL, NULL); Py_DECREF(s); for(i=0;f2py_routine_defs[i].name!=NULL;i++) PyDict_SetItemString(d, f2py_routine_defs[i].name,PyFortranObject_NewAsAttr(&f2py_routine_defs[i])); #initf2pywraphooks# #initf90modhooks# #initcommonhooks# #interface_usercode# #ifdef F2PY_REPORT_ATEXIT if (! PyErr_Occurred()) on_exit(f2py_report_on_exit,(void*)"#modulename#"); #endif return RETVAL; } #ifdef __cplusplus } #endif t modulebodyt separatorsfors*\section{Module \texttt{#texmodulename#}} s #modnote# s #latexdoc#sModule #modulename# t=iPs #restdoc#s /*eof body*/tbodys/*eof method*/s/*eof externroutines*/s/*eof routine_defs*/s/*eof initf90modhooks*/s/*eof initf2pywraphooks*/s/*eof initcommonhooks*/ts#note#tmodnotes #begintitle# static char doc_#apiname#[] = "\ #docreturn##name#(#docsignatureshort#)\n\nWrapper for ``#name#``.\ \n#docstrsigns#"; /* #declfortranroutine# */ static PyObject *#apiname#(const PyObject *capi_self, PyObject *capi_args, PyObject *capi_keywds, #functype# (*f2py_func)(#callprotoargument#)) { PyObject * volatile capi_buildvalue = NULL; volatile int f2py_success = 1; #decl# static char *capi_kwlist[] = {#kwlist##kwlistopt##kwlistxa#NULL}; #usercode# #routdebugenter# #ifdef F2PY_REPORT_ATEXIT f2py_start_clock(); #endif if (!PyArg_ParseTupleAndKeywords(capi_args,capi_keywds,\ "#argformat##keyformat##xaformat#:#pyname#",\ capi_kwlist#args_capi##keys_capi##keys_xa#)) return NULL; #frompyobj# /*end of frompyobj*/ #ifdef F2PY_REPORT_ATEXIT f2py_start_call_clock(); #endif #callfortranroutine# if (PyErr_Occurred()) f2py_success = 0; #ifdef F2PY_REPORT_ATEXIT f2py_stop_call_clock(); #endif /*end of callfortranroutine*/ if (f2py_success) { #pyobjfrom# /*end of pyobjfrom*/ CFUNCSMESS("Building return value.\n"); capi_buildvalue = Py_BuildValue("#returnformat#"#return#); /*closepyobjfrom*/ #closepyobjfrom# } /*if (f2py_success) after callfortranroutine*/ /*cleanupfrompyobj*/ #cleanupfrompyobj# if (capi_buildvalue == NULL) { #routdebugfailure# } else { #routdebugleave# } CFUNCSMESS("Freeing memory.\n"); #freemem# #ifdef F2PY_REPORT_ATEXIT f2py_stop_clock(); #endif return capi_buildvalue; } #endtitle# s #routine_def#s#initf2pywraphook#s#declfortranroutine#s!#docreturn##name#(#docsignature#)tdocs&#docreturn##name#(#docsignatureshort#)tdocshorts'" #docreturn##name#(#docsignature#)\n" tdocss arrayobject.ht CFUNCSMESStMINMAXtneeds#define DEBUGCFUNCSs1\subsection{Wrapper function \texttt{#texname#}} sk \noindent{{}\verb@#docreturn##name#@{}}\texttt{(#latexdocsignatureshort#)} #routnote# #latexdocstrsigns# sWrapped function ``#name#`` t-tcallfortranroutinetroutdebugentertroutdebugleavetroutdebugfailures || t setjmpbuft docstrreqt docstroptt docstroutt docstrcbss\n" "t docstrsignstlatexdocstrsignstlatexdocstrreqtlatexdocstropttlatexdocstrouttlatexdocstrcbstkwlistt kwlistoptt callfortrantcallfortranappendtdocsignt docsignopts/*decl*/s /*freemem*/t docsignshorttdocsignoptshorts\nParameters\n----------s$\nOther Parameters\n----------------s\nReturns\n-------s'\nNotes\n-----\nCall-back functions::\ns\noindent Required arguments:s\noindent Optional arguments:s\noindent Return objects:s\noindent Call-back functions:t args_capit keys_capitfunctypes /*frompyobj*/s/*end of cleanupfrompyobj*/s /*pyobjfrom*/s/*end of closepyobjfrom*/s /*topyarr*/s/*routdebugleave*/s/*routdebugenter*/s/*routdebugfailure*/s/*callfortranroutine*/t argformatt keyformatt need_cfuncst docreturntreturnt returnformattrformattkwlistxatkeys_xatxaformatt docsignxatdocsignxashorttinitf2pywraphooks --- #note#troutnotesf2py_rout_#modulename#_#name#tapinames#modulename#.#name#tpynamet_checks-f2py_rout_#modulename#_#f90modulename#_#name#s##modulename#.#f90modulename#.#name#tvoidsGextern void #F_FUNC#(#fortranname#,#FORTRANNAME#)(#callprotoargument#);s/extern void #fortranname#(#callprotoargument#);tdeclfortranroutinesn {"#name#",-1,{{-1}},0,(char *)#F_FUNC#(#fortranname#,#FORTRANNAME#),(f2py_init_func)#apiname#,doc_#apiname#},sV {"#name#",-1,{{-1}},0,(char *)#fortranname#,(f2py_init_func)#apiname#,doc_#apiname#},sE {"#name#",-1,{{-1}},0,NULL,(f2py_init_func)#apiname#,doc_#apiname#},t routine_deftF_FUNCsR fprintf(stderr,"debug-capi:Fortran subroutine `#fortranname#(#callfortran#)'\n");s4 if (#setjmpbuf#) { f2py_success = 0; } else {s Py_BEGIN_ALLOW_THREADSs9 #callstatement#; /*(*f2py_func)(#callfortran#);*/s (*f2py_func)(#callfortran#);s Py_END_ALLOW_THREADSs }sFextern void #F_WRAPPEDFUNC#(#name_lower#,#NAME#)(#callprotoargument#);sm {"#name#",-1,{{-1}},0,(char *)#F_WRAPPEDFUNC#(#name_lower#,#NAME#),(f2py_init_func)#apiname#,doc_#apiname#},s { extern #ctype# #F_FUNC#(#name_lower#,#NAME#)(void); PyObject* o = PyDict_GetItemString(d,"#name#"); PyObject_SetAttrString(o,"_cpointer", F2PyCapsule_FromVoidPtr((void*)#F_FUNC#(#name_lower#,#NAME#),NULL)); #if PY_VERSION_HEX >= 0x03000000 PyObject_SetAttrString(o,"__name__", PyUnicode_FromString("#name#")); #else PyObject_SetAttrString(o,"__name__", PyString_FromString("#name#")); #endif } t F_WRAPPEDFUNCsY fprintf(stderr,"debug-capi:Fortran subroutine `f2pywrap#name_lower#(#callfortran#)'\n");s1 if (#setjmpbuf#) { f2py_success = 0; } else {s Py_BEGIN_ALLOW_THREADSs (*f2py_func)(#callfortran#);s3 #callstatement#; /*(*f2py_func)(#callfortran#);*/s Py_END_ALLOW_THREADSs }s { extern void #F_FUNC#(#name_lower#,#NAME#)(void); PyObject* o = PyDict_GetItemString(d,"#name#"); PyObject_SetAttrString(o,"_cpointer", F2PyCapsule_FromVoidPtr((void*)#F_FUNC#(#name_lower#,#NAME#),NULL)); #if PY_VERSION_HEX >= 0x03000000 PyObject_SetAttrString(o,"__name__", PyUnicode_FromString("#name#")); #else PyObject_SetAttrString(o,"__name__", PyString_FromString("#name#")); #endif } s#ctype#s#rname#,s#pydocsignout#s"\item[]{{}\verb@#pydocsignout#@{}}s--- #resultnote#s#ifdef USESCOMPAQFORTRAN fprintf(stderr,"debug-capi:Fortran function #ctype# #fortranname#(#callcompaqfortran#)\n"); #else fprintf(stderr,"debug-capi:Fortran function #ctype# #fortranname#(#callfortran#)\n"); #endif sW fprintf(stderr,"debug-capi:Fortran function #ctype# #fortranname#(#callfortran#)\n"); sJextern #ctype# #F_FUNC#(#fortranname#,#FORTRANNAME#)(#callprotoargument#);s2extern #ctype# #fortranname#(#callprotoargument#);s# #ctype# #name#_return_value={0,0};s #ctype# #name#_return_value=0;s. PyObject *#name#_return_value_capi = Py_None;sJ #callstatement#; /* #name#_return_value = (*f2py_func)(#callfortran#);*/ s3 #name#_return_value = (*f2py_func)(#callfortran#);sV fprintf(stderr,"#routdebugshowvalue#\n",#name#_return_value.r,#name#_return_value.i);s> fprintf(stderr,"#routdebugshowvalue#\n",#name#_return_value);sE #name#_return_value_capi = pyobj_from_#ctype#1(#name#_return_value);spyobj_from_#ctype#1t long_longt long_doubles #rformat#s,#name#_return_value_capis,#name#_return_values$ #ctype# #name#_return_value = NULL;s! int #name#_return_value_len = 0;s,#name#_return_value,#name#_return_value_len,s% #name#_return_value_len = #rlength#;s` if ((#name#_return_value = (string)malloc(sizeof(char)*(#name#_return_value_len+1))) == NULL) {s6 PyErr_SetString(PyExc_MemoryError, "out of memory");s f2py_success = 0;s } else {s8 (#name#_return_value)[#name#_return_value_len] = '\0';s if (f2py_success) {s Py_BEGIN_ALLOW_THREADSsj#ifdef USESCOMPAQFORTRAN (*f2py_func)(#callcompaqfortran#); #else (*f2py_func)(#callfortran#); #endif s Py_END_ALLOW_THREADSsW fprintf(stderr,"#routdebugshowvalue#\n",#name#_return_value_len,#name#_return_value);s/ } /* if (f2py_success) after (string)malloc */s! STRINGFREE(#name#_return_value);t STRINGFREEsZ fprintf(stderr,"debug-capi:Python C/API function #modulename#.#name#(#docsignature#)\n");sW fprintf(stderr,"debug-capi:Python C/API function #modulename#.#name#: successful.\n");sT fprintf(stderr,"debug-capi:Python C/API function #modulename#.#name#: failure.\n");tcomplex_long_doublet unsigned_chartunsigned_shorttunsignedtunsigned_long_longs. /* Processing auxiliary variable #varname# */s$ fprintf(stderr,"#vardebuginfo#\n");s) /* End of cleaning variable #varname# */s #ctype# #varname# = 0;smath.hs #varname# = #init#;s ,#varname#s #outvarname#,s #varrformat#s #ctype# #varname#;s0 #varname#.r = #init.r#, #varname#.i = #init.i#;s #ctype# #varname# = NULL;s int slen(#varname#);slen..s #ctype# *#varname# = NULL;s1 npy_intp #varname#_Dims[#rank#] = {#rank*[-1]#};s# const int #varname#_Rank = #rank#;tforcombt_dependsflen(#varname#),tstrings$ /* Processing variable #varname# */s #pydocsign#s\item[]{{}\verb@#pydocsign#@{}}s--- See above.tdepends "#varname#",s #varname#,s#varname#=#showinit#,s#varname#_extra_args=(),s#varname#_extra_args,s=#varname#_extra_args : input tuple, optional\n Default: ()s #cbdocstr#s\item[] #cblatexdocstr#s}\item[]{{}\verb@#varname#_extra_args := () input tuple@{}} --- Extra arguments for call-back function {{}\verb@#varname#@{}}.s$ PyObject *#varname#_capi = Py_None;s) PyTupleObject *#varname#_xa_capi = NULL;s+ PyTupleObject *#varname#_args_capi = NULL;s int #varname#_nofargs_capi = 0;s! #cbname#_typedef #varname#_cptr;s"#varname#_extra_args",tOsO!s,&#varname#_capis!,&PyTuple_Type,&#varname#_xa_capis(setjmp(#cbname#_jmpbuf))s#varname#_cptr,s#cbname#ssetjmp.hsif(F2PyCapsule_Check(#varname#_capi)) { #varname#_cptr = F2PyCapsule_AsVoidPtr(#varname#_capi); } else { #varname#_cptr = #cbname#; } sif (#varname#_capi==Py_None) { #varname#_capi = PyObject_GetAttrString(#modulename#_module,"#varname#"); if (#varname#_capi) { if (#varname#_xa_capi==NULL) { if (PyObject_HasAttrString(#modulename#_module,"#varname#_extra_args")) { PyObject* capi_tmp = PyObject_GetAttrString(#modulename#_module,"#varname#_extra_args"); if (capi_tmp) #varname#_xa_capi = (PyTupleObject *)PySequence_Tuple(capi_tmp); else #varname#_xa_capi = (PyTupleObject *)Py_BuildValue("()"); if (#varname#_xa_capi==NULL) { PyErr_SetString(#modulename#_error,"Failed to convert #modulename#.#varname#_extra_args to tuple.\n"); return NULL; } } } } if (#varname#_capi==NULL) { PyErr_SetString(#modulename#_error,"Callback #varname# not defined (as an argument or module #modulename# attribute).\n"); return NULL; } } s #varname#_nofargs_capi = #cbname#_nofargs; if (create_cb_arglist(#varname#_capi,#varname#_xa_capi,#maxnofargs#,#nofoptargs#,&#cbname#_nofargs,&#varname#_args_capi,"failed in processing argument list for call-back #varname#.")) { jmp_buf #varname#_jmpbuf;s fprintf(stderr,"debug-capi:Assuming %d arguments; at most #maxnofargs#(-#nofoptargs#) is expected.\n",#cbname#_nofargs); CFUNCSMESSPY("for #varname#=",#cbname#_capi);sE fprintf(stderr,"#vardebugshowvalue# (call-back in C).\n",#cbname#);s CFUNCSMESS("Saving jmpbuf for `#varname#`.\n"); SWAP(#varname#_capi,#cbname#_capi,PyObject); SWAP(#varname#_args_capi,#cbname#_args_capi,PyTupleObject); memcpy(&#varname#_jmpbuf,&#cbname#_jmpbuf,sizeof(jmp_buf));s CFUNCSMESS("Restoring jmpbuf for `#varname#`.\n"); #cbname#_capi = #varname#_capi; Py_DECREF(#cbname#_args_capi); #cbname#_args_capi = #varname#_args_capi; #cbname#_nofargs = #varname#_nofargs_capi; memcpy(&#cbname#_jmpbuf,&#varname#_jmpbuf,sizeof(jmp_buf)); }tSWAPtcreate_cb_arglists3 fprintf(stderr,"#vardebugshowvalue#\n",#varname#);s &#varname#,sW f2py_success = try_pyarr_from_#ctype#(#varname#_capi,&#varname#); if (f2py_success) {s/ } /*if (f2py_success) of #varname# pyobjfrom*/stry_pyarr_from_#ctype#s8 if (#varname#_capi == Py_None) #varname# = #init#; elses if (#varname#_capi != Py_None)s f2py_success = #ctype#_from_pyobj(&#varname#,#varname#_capi,"#pyname#() #nth# (#varname#) can't be converted to #ctype#"); if (f2py_success) {s` #varname# = (#ctype#)PyObject_IsTrue(#varname#_capi); f2py_success = 1; if (f2py_success) {s% } /*if (f2py_success) of #varname#*/s#ctype#_from_pyobjsA fprintf(stderr,"#vardebugshowvalue#\n",#varname#.r,#varname#.i);s,#varname#_capisY f2py_success = try_pyarr_from_#ctype#(#varname#_capi,&#varname#); if (f2py_success) {s0 } /*if (f2py_success) of #varname# pyobjfrom*/sT if (#varname#_capi==Py_None) {#varname#.r = #init.r#, #varname#.i = #init.i#;} elses0 } /*if (f2py_success) of #varname# frompyobj*/s1 #varname#_capi = pyobj_from_#ctype#1(#varname#);sslen(#varname#),sC fprintf(stderr,"#vardebugshowvalue#\n",slen(#varname#),#varname#);s slen(#varname#) = #length#; f2py_success = #ctype#_from_pyobj(&#varname#,&slen(#varname#),#init#,#varname#_capi,"#ctype#_from_pyobj failed in converting #nth# `#varname#' of #pyname# to C #ctype#"); if (f2py_success) {s? STRINGFREE(#varname#); } /*if (f2py_success) of #varname#*/sV f2py_success = try_pyarr_from_#ctype#(#varname#_capi,#varname#); if (f2py_success) {s* PyArrayObject *capi_#varname#_tmp = NULL;s int capi_#varname#_intent = 0;s,capi_#varname#_tmps" int capi_overwrite_#varname# = 1;s"overwrite_#varname#",tis,&capi_overwrite_#varname#soverwrite_#varname#=1,soverwrite_#varname#,s9overwrite_#varname# : input int, optional\n Default: 1sH capi_#varname#_intent |= (capi_overwrite_#varname#?0:F2PY_INTENT_COPY);s" int capi_overwrite_#varname# = 0;soverwrite_#varname#=0,s9overwrite_#varname# : input int, optional\n Default: 0s #setdims#;s# capi_#varname#_intent |= #intent#;sl capi_#varname#_tmp = array_from_pyobj(#atype#,#varname#_Dims,#varname#_Rank,capi_#varname#_intent,Py_None);ss capi_#varname#_tmp = array_from_pyobj(#atype#,#varname#_Dims,#varname#_Rank,capi_#varname#_intent,#varname#_capi);s if (capi_#varname#_tmp == NULL) { if (!PyErr_Occurred()) PyErr_SetString(#modulename#_error,"failed in converting #nth# `#varname#' of #pyname# to C/Fortran array" ); } else { #varname# = (#ctype# *)(PyArray_DATA(capi_#varname#_tmp)); s! if (#varname#_capi == Py_None) {s {s #ctype# capi_c;s int *_i,capi_i=0; CFUNCSMESS("#name#: Initializing #varname#=#init#\n"); if (initforcomb(PyArray_DIMS(capi_#varname#_tmp),PyArray_NDIM(capi_#varname#_tmp),1)) { while ((_i = nextforcomb())) #varname#[capi_i++] = #init#; /* fortran way */ } else { if (!PyErr_Occurred()) PyErr_SetString(#modulename#_error,"Initialization of #nth# #varname# failed (initforcomb)."); f2py_success = 0; } } if (f2py_success) {s= } /*if (capi_#varname#_tmp == NULL) ... else of #varname#*/sY if((PyObject *)capi_#varname#_tmp!=#varname#_capi) { Py_XDECREF(capi_#varname#_tmp); }s! Py_XDECREF(capi_#varname#_tmp);s+ } /*if (f2py_success) of #varname# init*/s3 fprintf(stderr,"debug-capi:Checking `#check#'\n");sN CHECKSCALAR(#check#,"#check#","#nth# #varname#","#varshowvalue#",#varname#) {s } /*CHECKSCALAR(#check#)*/t CHECKSCALARt_breaksN CHECKSTRING(#check#,"#check#","#nth# #varname#","#varshowvalue#",#varname#) {s } /*CHECKSTRING(#check#)*/t CHECKSTRINGt CHECKARRAYs2 CHECKARRAY(#check#,"#check#","#nth# #varname#") {s } /*CHECKARRAY(#check#)*/t CHECKGENERICs4 CHECKGENERIC(#check#,"#check#","#nth# #varname#") {s } /*CHECKGENERIC(#check#)*/cC`sW td|di}t}tj|}titd6|}g}g}xy|dD]m}d;} xa|dD]U} | ddkstdqrnx,| dD] } | d|kr| } PqqWqrW| std |q[n| g} d | krUxX| d jD]C\} }t j | }|d =| |d<||d <| j |q Wnxp| D]h} t | \}}|rt | r|j |q|j |nt||}t||}q\Wq[Wtj|\}}|r|j |nt||}t||}tj|\}}|r@|j |nt||}t||}x;|D]3}tj||d |d}t||}qeWtj}i}x|jD]}g||t defmod_rulesRAt modsign2mapRRtNoneRtitemstcopytdeepcopytappendtbuildapiR)RRCt buildhooksRERDt buildusevarsRBt get_needstkeysRPRQRORRRSRTRUR]R[treprt module_rulestostpathtjointoptionstopentwriteR?tclosetsplittlen(tmtumtrett mod_rulestvrdtrdt funcwrapperst funcwrappers2tntnbtbitbtnb_listtktatnb1tapitwraptartcrtmrtutneedstcodetctrtfntftwntlinestl((s//tmp/pip-build-fiC0ax/numpy/numpy/f2py/rules.pyt buildmodulesD              (                 #      #"   tsttndiRitthiiiiii cC`stj|\}}t|\}}|t_|d}t|retd|d|dfntd|dtj|}ti|}xZt D]R}d|kr|d|sd|krt |||}t||}qqWd<\} } i} xX|D]P} tj | || }t || r@t } nt} t|| st|| s| d} t| t| d d |d t routsign2mapRt rout_rulesRtsign2mapRt aux_rulest arg_rulesRR*Rtstndt check_rulest isinstancetlisttreverseR@R?RRtstrtAssertionErrorttypet routine_rules(troutRRR tvarRRRRRtnthktsavevrdRt_rulesRtoptargstcfsRR((s//tmp/pip-build-fiC0ax/numpy/numpy/f2py/rules.pyRAs    (    # #    ,      ,       $  &  (   )  (dt__doc__t __future__RRRRRdtversionRRttimeRtauxfuncsRRRRRR R R R R RRRRRRRRRRRRRRRRRRR R!R"R#R$R%R&R'R(R)R*R+R,R-R.R/R0R1R2R3R4R5R6R7R8R9R:R;R<R=R>R?R@RARBRCRDRERFRtsepdictRtinttenvirontgettgenerationtimetasctimetgmtimeRRRRttypedef_need_dictRRRRRR(((s//tmp/pip-build-fiC0ax/numpy/numpy/f2py/rules.pyt4s     y  !i      !8   # ( ,      #      #   ( (                                                   &&