Uc-@sdZddd!ZddlZejaddlZddlZddlZddlZddlZej j Z ej j Z ejZddlTddlZddlTddlZddlZddlZddlZddlZiaiZxcdddd d d d d dddddddddddddddddgD]Zdeed?ed@dAdBdC6id=d6d=d6dD6dEdFdGgd6dHdIdJdKgd6Zi dLdM6dNd 6dOd6dPd6dQd6dRd6dSd6dTd6dTd6idUe6dTee6dV6gZi edD6dWdM6dXd6dYd6dZd6d[d\6d]d^6d_d`6dadbdcgdd6idee 6d6dfdggd6dhdidJgd6Z!i/iddj6ddk6dd6ddl6ddm6dndo6ddp6ddq6ddr6dds6dtdu6ddv6ddw6ddx6ddy6ddz6dD6dTd{6dTd|6dTd}6dTd~6dTd6dTd6dd6dd 6dTd6dTd6dTdu6dTdv6ddp6ddq6ddr6dds6ddw6ddx6ddy6ddz6dTd6dTd6dTd6dd6dgd6dd 6dgd 6dd 6ddl6ddk6ddm6ddj6dTd6dTd6dTd6dTd6dTd6dTd6dTd6dTd6dTd6dTd6dTd6dTd6dTd6ide6dTee6d6idd6dd6dTd6ee"d6idd6dd6dTd6e"d6idd6ide#ee$e"e%ee&6de#ee"e%ee&6dTe"6dTe&6d6idee$e"e%e&6de#ee"e%ee&6de#ee"e&6d6ide#ee$e"e%ee&6dd6idge 6ide'6ide(6ide)6idee$e)e&6ide(6ide'6gdj6e*d6idd6idee$e"e&6dTe&6d6idee$e"e&6de&6d6idee$e"e&6d6iddgee$e"e&6dd6idge 6ide'6ide(6idee$e)e&6ide)6ide(6ide'6gdj6e+d6idd6idee,6d6ddr6dide-6gdy6ide#e e.6ide#e ee.6gdj6e#e/ee+d6i ide#ee$e"e%ee&6de#ee"e%ee&6dTe&6d6ide#ee$e"e%ee&6de#ee"e%ee&6de&6d6ide06dee16ide16gd6ide'6ide(6ide)6idee$e)e&6ide(6ide'6ide#e e16ide#e ee16gdj6ide16d 6idee&6ide16ide26ide36gdd6idee,6d6ide16dee$e1e,6d6e#e/ee.ee+d6i dd6idee$e"e%6de#ee"e%6d6ddgd6dd}6ddddddddide'6ide(6dide(6ide'6ide 6dgdj6dd6dd6dd 6dddgdd6e#e.ee+d6iddk6ddl6ddm6e d6g Z4i de56de66de76de86de96de:6de;6de<6de=6de>6de?6Z@iedD6idide 6gd6dd6e@dd6idd6ideA6dd6ideA6d6e#eBeeCd6idd6ddr6dd6dd6e#eBeeCeDd6idd6ideA6d6eCd6iddgd6dgdd6eEd6idd d gd6did eA6idbeA6gdd6eFd6ie#eFeeGd6ie#eFeeGeHd6iddd6eId6dTd 6iddd6e<d6dTd 6iddd6e=d6dTd 6iddd6e>d6dTd 6iddd6eGd6dTd 6iid eJ6d~6ddd6eKd6gZLiedD6idide 6gd6dd6dTd 6e@dd6iide#eMeH6dq6ide#eNeH6dp6ideD6dr6idide6ge#eMeH6dx6idide6ge#eNeH6dw6idide#ee,6de#eeH6geD6dy6dTd6idd{6dd6e#eHeeMd6idd|6dd6dd6e#eHeMd6idd6dd6eDd6iideH6d6ideH6d6ideH6dq6dds6ddz6ideH6dx6dddd id!eeO6gd6id"eH6d6id#eN6d6id#eM6d6id$eH6d6id%eN6d6id%eM6d6d&d6d'do6id(eeO6d}6d)d*gdd6ePd6iid+eeO6id,eO6d-id.id/eeO6ge 6d0gd6d1d6d2d3gdd6ePd6dTd 6idd6id4e 6d 6ide%6d5ee%6d}6ideD6d6e#eBeeCd6iideA6dd6e#eBeeCd6i dd6id#eN6d6id#eM6d6id%eN6d6id%eM6d6id6eQ6d 6id7eQ6d 6id8eQ6dd6e#eBeeCeHd6iid9eA6dTd 6id:e#eMeeA6dTd 6id;eeR6id<eR6gd6d=d6id>eeR6dd6e#eBeeCeHd6dTd 6iideA6d6e@dd6e#eBeeCe,d6dTd 6iid4e 6d6e#eBeeCd6dTd 6idd6ide%6d5ee%6d}6id?e 6d 6id@eD6d6eCd6i dd6id#eN6d6id#eM6d6id%eN6d6id%eM6d6id8eQ6dd6idAeQ6d 6idBeQ6d 6e#eCeHd6iidCeA6id:e#eMeeA6d;gd6dDd6d>gdd6e#eCeHd6dTd 6iideD6d6e#eCe,d6iideA6d6e#eCe,d6dTd 6iidEeD6d 6dgdd6eCd6iid?e 6d6eCd6dTd 6idddgd6dd}6dFd~6idGe 6d 6ideD6d6dgdd6eEd6idHd6dId6d>ddgdd6eEd6dTd 6iid#eN6d6id#eM6d6id%eN6d6id%eM6d6idJeQ6d 6id7eQ6d 6id8eQ6dd6e#eEeHd6ie#eEe,d6iidGe 6d6eEd6dTd 6idd d dKdLgd6dd}6idMeD6d6ddd6eFd6idNd6dOd6dPd6dQd6dRd6dSd6dTdq6e#eFeSd6idUd6e#eFeSd6dTd 6idVd6dOd6dPd6dQd6dWd6dSd6dXdq6e#eFeTd6idUd6e#eFeTd6dTd 6iid eA6idbeA6gdd6eFd6dTd 6idd6id#eN6d6id#eM6d6id%eN6d6id%eM6d6e#eFeHd6idYdZid[e,6id\eH6d]iid^eH6id_e,6id`eG6dageA6gd6dbidcee$eDe,6idde#e,eeD6ideeA6gd6eFd6dTd 6ie#eFeeGd6ie#eFeeGeHd6iddd6eId6dTd 6iddd6e<d6dTd 6iddd6e=d6dTd 6iddd6e>d6dTd 6iddd6eGd6dTd 6iid eJ6d~6ddd6eKd6g*ZUiidfe 6d6ddd6idgd6dhd6didd6e#eBeeCd6dTdj6idkd6dld6dmdd6eEd6dTdj6idndd6dod6dpd6eFd6dTdj6idqdd6drd6dsd6gZVdtZWi dudv6dwdx6dydz6d{d|6d{d}6d{d~6d{d6d{d6d{d6d{d6ZXdZYdS(s 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 (succesful) { put_a_to_python if (succesful) { put_b_to_python if (succesful) { buildvalue = ... } } } } cleanup_b } cleanup_a return buildvalue s$Revision: 1.129 $i iN(t*tdeclt frompyobjtcleanupfrompyobjttopyarrtmethodt pyobjfromtclosepyobjfromtfreememt userincludest includes0tincludesttypedefsttypedefs_generatedt cppmacrostcfuncst callbackstlatexdoctrestdoct routine_defstexternroutinestinitf2pywraphookst commonhookstinitcommonhookst f90modhookstinitf90modhookss s/* 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 . * See http://cens.ioc.ee/projects/f2py2e/ * Generation date: s * $Rsevision:$ * $Dszate:$ * 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} }; PyMODINIT_FUNC init#modulename#(void) { int i; PyObject *m,*d, *s; m = #modulename#_module = Py_InitModule("#modulename#", f2py_module_methods); PyFortran_Type.ob_type = &PyType_Type; import_array(); if (PyErr_Occurred()) {PyErr_SetString(PyExc_ImportError, "can't initialize module #modulename# (failed to import numpy)"); return;} d = PyModule_GetDict(m); s = PyString_FromString("$Rsevision: $"); PyDict_SetItemString(d, "__version__", s); s = PyString_FromString("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 } #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#[] = "\ Function signature:\n\ #docreturn##name#(#docsignatureshort#)\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 docsignshorttdocsignoptshortsRequired arguments:sOptional arguments:sReturn objects:sCall-back functions:s\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", PyCObject_FromVoidPtr((void*)#F_FUNC#(#name_lower#,#NAME#),NULL)); } 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#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 tuples #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(PyCObject_Check(#varname#_capi)) { #varname#_cptr = PyCObject_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#,s# overwrite_#varname# := 1 input intsH capi_#varname#_intent |= (capi_overwrite_#varname#?0:F2PY_INTENT_COPY);s" int capi_overwrite_#varname# = 0;soverwrite_#varname#=0,s# overwrite_#varname# := 0 input ints #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# *)(capi_#varname#_tmp->data); 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(capi_#varname#_tmp->dimensions,capi_#varname#_tmp->nd,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#)*/cCsb td|di}t}t|}titd6|}g}g}xy|dD]m}d;} xa|dD]U} | ddkstdqonx,| dD] } | d|kr| } PqqWqoW| std |qXn| g} d | krRxX| d jD]C\} }tj | }|d =| |d<||d <| j |qWnxp| D]h} t | \}}|rt | r|j |q|j |nt ||}t||}qYWqXWtj|\}}|r|j |nt ||}t||}tj|\}}|r=|j |nt ||}t||}x;|D]3}tj||d |d}t||}qbWtj}i}x|jD]}g||d| krt | |||} t || }d| krvPqvqqWq7Wx|D]}t||rt}nt}| |}x|D]|} d| krqnd| kr| d||sd| krt | |||} t || }d| kr7Pq7qqWd||krxH||dD]5}||d*s                     S      !8   # ( ,     #    ( (                                                         L