U Dx`$@sdZdddZdZddlZddlmZmZmZmZm Z m Z m Z m Z m Z mZmZmZmZdd d Zdd d Zdd dZddZdS)aW Rules for building C/API module with f2py2e. 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: 2004/11/26 11:13:06 $ Pearu Peterson z$Revision: 1.16 $ z See `f2py -v`N) getfortranname isexternal isfunctionisfunction_wrap isintent_in isintent_outislogicalfunctionismoduleroutineisscalar issubroutineissubroutine_wrapoutmessshowcCs|dkr |}||kr,t|td|dSd||krTt||td|dS||d}|dkrd||krd|||df}i}d}d||kr||d}d }nd ||kr||d }d }d |kr6|r|d d krd|}nd|||d f}n0|d dkr$d||d f}nd||d f}nZd |krvd||d f}d |krld||d f}nd|}nd |krd||d f}d||f}d||krd|d||df}|S)Nz1var2fixfortran: No definition for argument "%s". typespecz/var2fixfortran: No typespec for argument "%s". typetypenamez%s(%s)Z kindselectorkind charselectorlen*)r:(*)z %s(len=*)z %s(%s=%s))rrz%s*(%s)z%s*%sz %s(len=%sz %s,kind=%s)z%s)z %s(kind=%s)z%s %s dimension,)rrjoin)varsafaf90modeZvardefselectorZlkr$;/tmp/pip-target-zr53vnty/lib/python/numpy/f2py/func2subr.pyvar2fixfortransP                 r&cst|s tg|d}|dD]z}|d|}t|dgD]X\}}|dkr@d||f}tddgd}d ||f|d <||||<||d|<q@q |dt} d g} | fd d } |d} t|} t |}d| }||kr|| ||<|g|ddd}n|g|d}t || ||}|dddkr|rXd|dd}nd|dd}|| d}|dd dkrd|d<d |}|r| d|d| |f|s| d|d| fn.| d| |f| s| d| |d| }| r<|d d D](}| d!rd"|kr| |q|dd}g}|D]*}t||rP| d|||qP|D]>}||krqt||r| t |||d#||q|D]>}||kr֐qt||r| t |||d#||q|D]&}||krq| t |||d#q| || rf|rFn | d$| |d | d%d fd&d'|D}|st|r| d(|| |fn| d)|| |f|r| d*|d| fn| d+| d,S)-Nrargsrr f2py_%s_d%sintegerhiderintent shape(%s, %s)=rcSsd|d|f|d<dSNz %s %srr$lineretr$r$r%addbszcreatefuncwrapper..addnamez %sf2pywrapr z character*(*)zcharacter(len=10)z character*10rrr10, subroutine f2pywrap_%s_%s (%s) modulenameuse %s, only : %ssubroutine f2pywrap%s (%s) external %ssaved_interface use __user__r" interface end interfacecsg|]}|kr|qSr$r$.0r  extra_argsr$r% sz%createfuncwrapper..z%s = .not.(.not.%s(%s))z %s = %s(%s)end subroutine f2pywrap_%s_%sendr)rAssertionError enumerategetdictappendextendboolrr r&rsplitlstrip startswithrr r r )rout signaturerr viddndvneed_interfacer2r3r4 fortrannamer"Znewnamer'lZ charselectsargsr1 dumped_argsr$rFr%createfuncwrapperNs                    racst|s tg|d}|dD]z}|d|}t|dgD]X\}}|dkr@d||f}tddgd}d ||f|d <||||<||d|<q@q |dt} d g} | fd d } |d} t|} t |}|d}d |}|r&| d|d| |f|sH| d|d| fn"| d| |f| sH| d| | r|d dD](}| dr\d|kr\| |q\g}|D]*}t||r| d|||q|D]>}||krАqt||r| t|||d||q|D]&}||krq| t|||dq| r|r8nL| d|d dD],}| drpd|krpqN| |qN| dd fdd|D}|s| d| |f|r| d|d| fn| d | d!S)"Nrr'rrr(r)r*r+r-r.rcSsd|d|f|d<dSr/r$r0r$r$r%r3szcreatesubrwrapper..addr4r7r8r9r:r;r<r=r>r?r@rArBrCcsg|]}|kr|qSr$r$rDrFr$r%rHsz%createsubrwrapper..z call %s(%s)rIrJr)rrKrLrMrNrOrPrQrr rrRrSrTrr r&)rUrVrr rWrXrYrZr[r\r2r3r4r]r"r'r_r1r`r$rFr%createsubrwrappers              rbcCs8t|rt|}|d}td||ft|}|}|}d|kr^|d}|d||d|<|d|}t|sd|krg|d<|ddd}|dD]}|drd }qq|r|dd ||g|d |d dd<|t|fSt|r0t|}|d}td ||ft|}|t |fS|d fS)Nr4z6 Creating wrapper for Fortran function "%s"("%s")... resultrr,outrzout=rzout=%sr'z8 Creating wrapper for Fortran subroutine "%s"("%s")... r) rrrcopyr rOrTrarrb)rUr]r4fnamernameZfvarflagrXr$r$r%assubr sJ        ri)NN)r)r)__doc__ __version__Z f2py_versionreZauxfuncsrrrrr r r r r rrrrr&rarbrir$r$r$r%s < 1 j S