o 6a$@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|dur|}||vrt|td|dSd||vr*t||td|dS||d}|dkrDd||vrDd|||df}i}d}d||vrW||d}d }nd ||vre||d }d }d |vr|r|d d vrvd|}nLd|||d f}nB|d dvrd||d f}n3d||d f}n*d |vrd||d f}d |vrd||d f}nd|}n d |vrd||d f}d||f}d||vrd|d||df}|S)Nz1var2fixfortran: No definition for argument "%s". typespecz/var2fixfortran: No typespec for argument "%s". typetypenamez%s(%s) 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)varsafaf90modevardefselectorlkr'6/usr/lib/python3/dist-packages/numpy/f2py/func2subr.pyvar2fixfortransP               r)cst|sJg|d}|dD]=}|d|}t|dgD],\}}|dkrLd||f}tddgd}d ||f|d <||||<||d|<q q|dt} d g} | fd d } |d} t|} t|}d| }||vr|| ||<|g|ddd}n|g|d}t || ||}|dddkr|rd|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"|vr| |q|dd}g}|D]}t||r5| d|||q!|D]}||vrBq9t||rW| t |||d#||q9|D]}||vrdq[t||ry| t |||d#||q[|D]}||vrq}| t |||d#q}| || r|rn| d$| |d | d%d fd&d'|D}|st|r| d(|| |fn | d)|| |f|r| d*|d| f| d,S| d+| d,S)-Nr argsrr f2py_%s_d%sintegerhiderintent shape(%s, %s)=rcSd|d|f|d<dSNz %s %srr'lineretr'r'r(addbzcreatefuncwrapper..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 interfacecg|]}|vr|qSr'r'.0r! extra_argsr'r( z%createfuncwrapper..z%s = .not.(.not.%s(%s))z %s = %s(%s)end subroutine f2pywrap_%s_%sendr)r enumerategetdictappendextendboolrr r)rsplitlstrip startswithrr r r )rout signaturer r!viddndvneed_interfacer6r7r9 fortrannamer#newnamer*l charselectsargsr5 dumped_argsr'rLr(createfuncwrapperNs                      ricst|sJg|d}|dD]=}|d|}t|dgD],\}}|dkrLd||f}tddgd}d ||f|d <||||<||d|<q q|dt} d g} | fd d } |d} t|} t|}|d}d |}|r| d|d| |f|s| d|d| fn| d| |f| s| d| | r|d dD]}| drd|vr| |qg}|D]}t ||r| d|||q|D]}||vrqt||r| t|||d||q|D]}||vrq| t|||dq| r2|r n&| d|d dD]}| dr(d|vr(q| |q| dd fdd|D}|sI| d| |f|rZ| d|d| f| d!S| d | d!S)"Nr r*rrr+r,r-r.r0r1rcSr2r3r'r4r'r'r(r7r8zcreatesubrwrapper..addr9r<r=r>r?r@rArBrCrDrErFrGrHcrIr'r'rJrLr'r(rNrOz%createsubrwrapper..z call %s(%s)rPrQr)rrRrSrTrUrVrWrr rrXrYrZrr r))r[r\r r!r]r^r_r`rarbr6r7r9rcr#r*rgr5rhr'rLr(createsubrwrappers                rjcCs6t|rxt|}|d}td||ft|}|}|}d|vr/|d}|d||d|<|d|}t|sed|vrAg|d<|ddd}|dD] }|drYd }nqN|re|dd ||g|d |d dd<|t|fSt|rt|}|d}td ||ft|}|t |fS|d fS)Nr9z6 Creating wrapper for Fortran function "%s"("%s")... resultr r/outrzout=rzout=%sr*z8 Creating wrapper for Fortran subroutine "%s"("%s")... r) rrrcopyr rUrZrirrj)r[rcr9fnamernamefvarflagr^r'r'r(assubr sH       rr)NN)r)__doc__ __version__ f2py_versionrmauxfuncsrrrrr r r r r rrrrr)rirjrrr'r'r'r(s <  1 j S