VfitddZddlmZmZddlmZmZmZmZm Z m Z m Z m Z m Z mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"ej#Z$ddgdddd d d d Z%id iddddddddddddddddddddddddddddd dd!dd"ddd#dd$dd%dgddd&dd'ddd(dgddd)ddgddd*dd+ddd,ddd-d.d/d0dddd1d2d3d4e d5ee did6d7ed8id9ed:igd;edeeeeeed?ed@idAdBdCedDidEedFigd;edargs_capi; CFUNCSMESS("cb:Call-back function #name# (maxnofargs=#maxnofargs#(-#nofoptargs#))\n"); CFUNCSMESSPY("cb:#name#_capi=",cb->capi); if (cb->capi==NULL) { capi_longjmp_ok = 0; cb->capi = PyObject_GetAttrString(#modulename#_module,"#argname#"); CFUNCSMESSPY("cb:#name#_capi=",cb->capi); } if (cb->capi==NULL) { PyErr_SetString(#modulename#_error,"cb: Callback #argname# not defined (as an argument or module #modulename# attribute).\n"); goto capi_fail; } if (F2PyCapsule_Check(cb->capi)) { #name#_typedef #name#_cptr; #name#_cptr = F2PyCapsule_AsVoidPtr(cb->capi); #returncptr#(*#name#_cptr)(#optargs_nm##args_nm##strarglens_nm#); #return# } if (capi_arglist==NULL) { capi_longjmp_ok = 0; capi_tmp = PyObject_GetAttrString(#modulename#_module,"#argname#_extra_args"); if (capi_tmp) { capi_arglist = (PyTupleObject *)PySequence_Tuple(capi_tmp); Py_DECREF(capi_tmp); if (capi_arglist==NULL) { PyErr_SetString(#modulename#_error,"Failed to convert #modulename#.#argname#_extra_args to tuple.\n"); goto capi_fail; } } else { PyErr_Clear(); capi_arglist = (PyTupleObject *)Py_BuildValue("()"); } } if (capi_arglist == NULL) { PyErr_SetString(#modulename#_error,"Callback #argname# argument list is not set.\n"); goto capi_fail; } #setdims# #ifdef PYPY_VERSION #define CAPI_ARGLIST_SETITEM(idx, value) PyList_SetItem((PyObject *)capi_arglist_list, idx, value) capi_arglist_list = PySequence_List((PyObject *)capi_arglist); if (capi_arglist_list == NULL) goto capi_fail; #else #define CAPI_ARGLIST_SETITEM(idx, value) PyTuple_SetItem((PyObject *)capi_arglist, idx, value) #endif #pyobjfrom# #undef CAPI_ARGLIST_SETITEM #ifdef PYPY_VERSION CFUNCSMESSPY("cb:capi_arglist=",capi_arglist_list); #else CFUNCSMESSPY("cb:capi_arglist=",capi_arglist); #endif CFUNCSMESS("cb:Call-back calling Python function #argname#.\n"); #ifdef F2PY_REPORT_ATEXIT f2py_cb_start_call_clock(); #endif #ifdef PYPY_VERSION capi_return = PyObject_CallObject(cb->capi,(PyObject *)capi_arglist_list); Py_DECREF(capi_arglist_list); capi_arglist_list = NULL; #else capi_return = PyObject_CallObject(cb->capi,(PyObject *)capi_arglist); #endif #ifdef F2PY_REPORT_ATEXIT f2py_cb_stop_call_clock(); #endif CFUNCSMESSPY("cb:capi_return=",capi_return); if (capi_return == NULL) { fprintf(stderr,"capi_return is NULL\n"); goto capi_fail; } if (capi_return == Py_None) { Py_DECREF(capi_return); capi_return = Py_BuildValue("()"); } else if (!PyTuple_Check(capi_return)) { capi_return = Py_BuildValue("(N)",capi_return); } capi_j = PyTuple_Size(capi_return); capi_i = 0; #frompyobj# CFUNCSMESS("cb:#name#:successful\n"); Py_DECREF(capi_return); #ifdef F2PY_REPORT_ATEXIT f2py_cb_stop_clock(); #endif goto capi_return_pt; capi_fail: fprintf(stderr,"Call-back #name# failed.\n"); Py_XDECREF(capi_return); Py_XDECREF(capi_arglist_list); if (capi_longjmp_ok) { longjmp(cb->jmpbuf,-1); } capi_return_pt: ; #return# } #endtitle# )zsetjmp.h CFUNCSMESSF2PY_THREAD_LOCAL_DECLz #maxnofargs#z #nofoptargs#zF def #argname#(#docsignature#): return #docreturn#\n\ #docstrsigns#zc {{}\verb@def #argname#(#latexdocsignature#): return #docreturn#@{}} #routnote# #latexdocstrsigns#z1def #argname#(#docsignature#): return #docreturn#) cbtypedefsbodyneed maxnofargs nofoptargsdocstr latexdocstr docstrshort separatorsfordecl args,optargs pyobjfromfreememargs_td optargs_tdargs_nm optargs_nm frompyobjsetdims docstrsignsz\n" "latexdocstrsignslatexdocstrreqlatexdocstroptlatexdocstroutlatexdocstrcbsz/*decl*/z /*pyobjfrom*/z /*frompyobj*/return strarglensz /*freemem*/ strarglens_td strarglens_nmnoargsz /*setdims*/z Required arguments:z Optional arguments:z Return objects:z Call-back functions:z\noindent Required arguments:z\noindent Optional arguments:z\noindent Return objects:z\noindent Call-back functions:z --- #note#)r<r= docstrreq docstropt docstrout docstrcbs docreturndocsign docsignoptr>r?r@rAroutnotez #ctype# return_value = 0;z, CFUNCSMESS("cb:Getting return_value->");a if (capi_j>capi_i) { GETSCALARFROMPYTUPLE(capi_return,capi_i++,&return_value,#ctype#, "#ctype#_from_pyobj failed in converting return_value of" " call-back function #name# to C #ctype#\n"); } else { fprintf(stderr,"Warning: call-back function #name# did not provide" " return value (index=%d, type=#ctype#)\n",capi_i); }z8 fprintf(stderr,"#showvalueformat#.\n",return_value);z#ctype#_from_pyobjr#GETSCALARFROMPYTUPLEz return return_value;)r.r:r'rB_checkzB fprintf(stderr,"debug-capi:cb:#name#:%d:\n",return_value_len);z)#ctype# return_value,int return_value_lenzreturn_value,&return_value_lenz #ctype# ,intz. CFUNCSMESS("cb:Getting return_value->\"");a if (capi_j>capi_i) { GETSTRFROMPYTUPLE(capi_return,capi_i++,return_value,return_value_len); } else { fprintf(stderr,"Warning: call-back function #name# did not provide" " return value (index=%d, type=#ctype#)\n",capi_i); }z: fprintf(stderr,"#showvalueformat#\".\n",return_value);zstring.hGETSTRFROMPYTUPLEzreturn;)r4r0r8r6r:r'rBrPz< #ifndef F2PY_CB_RETURNCOMPLEX #ctype# *return_value #endif z3 #ifndef F2PY_CB_RETURNCOMPLEX return_value #endif z0 #ifndef F2PY_CB_RETURNCOMPLEX #ctype# * #endif zH #ifdef F2PY_CB_RETURNCOMPLEX #ctype# return_value = {0, 0}; #endif a if (capi_j>capi_i) { #ifdef F2PY_CB_RETURNCOMPLEX GETSCALARFROMPYTUPLE(capi_return,capi_i++,&return_value,#ctype#, "#ctype#_from_pyobj failed in converting return_value of call-back" " function #name# to C #ctype#\n"); #else GETSCALARFROMPYTUPLE(capi_return,capi_i++,return_value,#ctype#, "#ctype#_from_pyobj failed in converting return_value of call-back" " function #name# to C #ctype#\n"); #endif } else { fprintf(stderr, "Warning: call-back function #name# did not provide" " return value (index=%d, type=#ctype#)\n",capi_i); }z#ifdef F2PY_CB_RETURNCOMPLEX fprintf(stderr,"#showvalueformat#.\n",(return_value).r,(return_value).i); #else fprintf(stderr,"#showvalueformat#.\n",(*return_value).r,(*return_value).i); #endif zP #ifdef F2PY_CB_RETURNCOMPLEX return return_value; #else return; #endif z#ctype#)r2r9r7r.r:rBr'rPz #pydocsignout#z"\item[]{{}\verb@#pydocsignout#@{}}z#rname#,)rIr@rKrP)rPrBz #pydocsign#z\item[]{{}\verb@#pydocsign#@{}}z--- See above.z #varname#,) rHrGrIr?r>r@rLrMdependz#ctype# #varname_i#z#ctype# *#varname_i#_cb_capiz#ctype# *#varname_i#z #varname_i#z#varname_i#_cb_capiz #ctype# *z,int #varname_i#_cb_lenz,intz,#varname_i#_cb_len)r0r8r6r'rCrDrEz/ #ctype# #varname_i#=(*#varname_i#_cb_capi);z8intent(c,out) is forbidden for callback scalar argumentsz) CFUNCSMESS("cb:Getting #varname#->");z if (capi_j>capi_i) GETSCALARFROMPYTUPLE(capi_return,capi_i++,#varname_i#_cb_capi,#ctype#,"#ctype#_from_pyobj failed in converting argument #varname# of call-back function #name# to C #ctype#\n");z7 fprintf(stderr,"#showvalueformat#.\n",#varname_i#);z@ fprintf(stderr,"#showvalueformat#.\n",*#varname_i#_cb_capi);zK fprintf(stderr,"#showvalueformat#.\n",(#varname_i#).r,(#varname_i#).i);z] fprintf(stderr,"#showvalueformat#.\n",(*#varname_i#_cb_capi).r,(*#varname_i#_cb_capi).i);)r.errorr:r'rPz if (cb->nofargs>capi_i) if (CAPI_ARGLIST_SETITEM(capi_i++,pyobj_from_#ctype#1(#varname_i#))) goto capi_fail;z if (cb->nofargs>capi_i) if (CAPI_ARGLIST_SETITEM(capi_i++,pyarr_from_p_#ctype#1(#varname_i#_cb_capi))) goto capi_fail;zpyobj_from_#ctype#1zpyarr_from_p_#ctype#1)r4r'rP _optionalz+ CFUNCSMESS("cb:Getting #varname#->\"");zf if (capi_j>capi_i) GETSTRFROMPYTUPLE(capi_return,capi_i++,#varname_i#,#varname_i#_cb_len);zP fprintf(stderr,"#showvalueformat#\":%d:.\n",#varname_i#,#varname_i#_cb_len);)r:r'rPze fprintf(stderr,"debug-capi:cb:#varname#=#showvalueformat#:%d:\n",#varname_i#,#varname_i#_cb_len);z if (cb->nofargs>capi_i) if (CAPI_ARGLIST_SETITEM(capi_i++,pyobj_from_#ctype#1size(#varname_i#,#varname_i#_cb_len))) goto capi_fail;z if (cb->nofargs>capi_i) { int #varname_i#_cb_dims[] = {#varname_i#_cb_len}; if (CAPI_ARGLIST_SETITEM(capi_i++,pyarr_from_p_#ctype#1(#varname_i#,#varname_i#_cb_dims))) goto capi_fail; }zpyobj_from_#ctype#1sizez6 npy_intp #varname_i#_Dims[#rank#] = {#rank*[-1]#};z #cbsetdims#;)r.r;rP_dependz0 fprintf(stderr,"debug-capi:cb:#varname#\n");a if (cb->nofargs>capi_i) { /* tmp_arr will be inserted to capi_arglist_list that will be destroyed when leaving callback function wrapper together with tmp_arr. */ PyArrayObject *tmp_arr = (PyArrayObject *)PyArray_New(&PyArray_Type, #rank#,#varname_i#_Dims,#atype#,NULL,(char*)#varname_i#,#elsize#, NPY_ARRAY_CARRAY,NULL); a if (cb->nofargs>capi_i) { /* tmp_arr will be inserted to capi_arglist_list that will be destroyed when leaving callback function wrapper together with tmp_arr. */ PyArrayObject *tmp_arr = (PyArrayObject *)PyArray_New(&PyArray_Type, #rank#,#varname_i#_Dims,#atype#,NULL,(char*)#varname_i#,#elsize#, NPY_ARRAY_FARRAY,NULL); z if (tmp_arr==NULL) goto capi_fail; if (CAPI_ARGLIST_SETITEM(capi_i++,(PyObject *)tmp_arr)) goto capi_fail; })r4rPrTz if (capi_j>capi_i) { PyArrayObject *rv_cb_arr = NULL; if ((capi_tmp = PyTuple_GetItem(capi_return,capi_i++))==NULL) goto capi_fail; rv_cb_arr = array_from_pyobj(#atype#,#varname_i#_Dims,#rank#,F2PY_INTENT_INz|F2PY_INTENT_Ca8,capi_tmp); if (rv_cb_arr == NULL) { fprintf(stderr,"rv_cb_arr is NULL\n"); goto capi_fail; } MEMCOPY(#varname_i#,PyArray_DATA(rv_cb_arr),PyArray_NBYTES(rv_cb_arr)); if (capi_tmp != (PyObject *)rv_cb_arr) { Py_DECREF(rv_cb_arr); } }z fprintf(stderr,"<-.\n");MEMCOPY)rKrPcgt|d<|dD]K}|ddkr=|dD]4}|rt||dtd|dd5LdS)Nnamer&block interfacezwarning: empty body for r/)cb_map buildcallbackr)mbibs Bc:\PYTHON\DbComparer\venv\Lib\site-packages\numpy/f2py/cb_rules.pybuildcallbacksrasF1V9iFF g;+ % %Z F FF!!QvY////DqyDDDEEEE FFc ddlm}td|dd|dt|\}}||_|d}|||}t i|}t||d|dgtD]<}d|vr|d|sd|vr!t|||} t || }=i} t|D]\} } | | || | }|| | <tD]m}d |vrd |vrt|| r!d|vr|d|| sd|vr-t|||| } t || }d |vrnn|D]} | | }tD]q}d |vrd |vsd |vrt|| r%d|vr|d|| sd|vr-t|||| } t || }d |vrnr|D]j} | | }tD]X}d |vrd |vr d|vr|d|| sd|vr-t|||| } t || }d |vrnYkd |vrLd|vrHt!|dt"r-|ddgz|d<|ddgz|d<|ddgz|d<t!|dt"r(t%t'dd|di|d<t%t'dd|di} | dkr)t%t'dd|di|d<nt'd|d| d|d<|ddd|d<|ddd |d<g|d!<g|d"<d#D]}||vr/t!||t"r|d!||z|d!<d$|z}||vrPt!||t"r5|d"||d%dzd&gz||ddzd'gz|d"<d |vrd|d <d|d(<d|d)<|d s/|ds|d*sd+|d,<tt*|} | d-t,j|d<t!| d.t0r | d.g| d.<d.|vrFt,jD]'}||d.vr| d.|(| d/t,j|dd0z<| d.|dd0z| d.t,j|d<| d1| d2| d3| d4|d5d6|j|d<td7| d8d9dS):Nr) capi_mapsz( Constructing call-back function "cb_rX_in_z" varsrP)indexrUrT_breakr0r2z( #ifndef F2PY_CB_RETURNCOMPLEX , #endif r9r7rKz #docreturn#z #docsignopt#rMr3z #docsign#rL docsignaturez#docsign#[#docsignopt#])rLrM_z\_latexdocsignaturer1z, r<r=)rGrHrIrJlatexz\begin{description}z\end{description}r6r8rCvoidrFr&r'r%_typedefr(r)r*r+argname)r(r)r*r+rpz r,r/)r3rdrr depargscb_routsign2maprr[append cb_rout_rulesr enumerate cb_sign2map cb_arg_rulesrr isinstancelistr!r getcb_routine_rulesr callbacksstrtypedefskeystypedefs_generatedneedslcb2_map)routumrdr0rqvarvrdrdrarsavevrdiar2kts r`r\r\sB RV R R" R R RSSSDMMMD'I v,C  # #D" - -C B  B 2JtF|RZ0111 $$ MMkak$//MXQ5F5FAsD))BB##BG$  1##As1vQ#77   AA~~aJs1v$6$6A +!H+c!f"5"5 81;L;L3A//B''q==E   aj  AA~~1$$+*:*:z#a&?Q?Q*:A +!H+c!f"5"5 81;L;L3A//B''q==E   aj  A!!aA +!H+c!f"5"5 81;L;L3A//B''q==E || R bmT * * yM.-ByM ",/43 B|  ",/43 B|  "[/4((D$ MKK#A B BDD;".<0@!A##$$G"}}' K)R ]!; < <>>>%%>13I4;&(&())>!088eDDB !45==c4HHBB}B A'' 77z"Q%..7 "= 1BqE 9B}  aK 77z"Q%..7%'(:%;beAaCj%H'(&)+-a59&5%&&'B! "R6 9 9 FF6NNbffY//266,3G3G8 $b ) )B#%f:FRZ "V*c"""j\6  ||%%'' % %ABvJ6 !!!$$$9;L9IFbj:56vJbj:-...!&zFLF46|4D46|4D028 57 5F13I &(&(Ir&z"  *R & * * *+++++rbN)+__doc__r3rrauxfuncsrrrrr r r r r rrrrrrrrrrrrrrrrrrr r!r"version f2py_versionr{rtrwr[rar\rbr`rsw   "!!!!!!!B" e[ x A @ @   GSjjX &$  # '0" 6A4 IRTX #S *6 $S +7 &t .7  (  -d +D 3CD +D 3CD   (;F r$,R2>rDMm 2$R*9" 2$R*9" " =!"r..*/Bb::6;lEE'NNB?7:0 F G  H J  & <'@BXY,% EE*:$;$;UUCT=U=UVV%* !fg;3! I J  K M  & <'@02").    F G  % 4& <'@3Y@#q99t+> ,/1  y11MG VeJ(899;PQeJ(899;PQ"$<= 5-=>>AdBI>AdBI E(EE*-- . .0N + +   E(J ' ' E(EE*-- . .0E ] m   E(J ' ' E(EE*-- . . [ i  h22I>!:;"F+"$9:16z""$UV% L# $^__aa!"MN#kluYeeI.>.> (K(KLLTVuYeeI.>.>j@Q@Q(R(RSS]_uYi(D(DEEhjuYiz9J9J(K(KLLz| !57M NO\*,'*#% &( !45 "9:Y')%"233!"PQS km /\*J8%,//  9 ; &(    89 "9:<%"233%,I% !"UV!$uZ((+&)4%!144 ^3T3TUU9<!"MNX"#34  !"AB!$^Y78%..),"Gg T FFFz,z,z,z,z,rb