U C^$@sdZddlmZmZmZdddZdZddlZdd lm Z m Z m Z m Z m Z mZmZmZmZmZmZmZmZdd d Zdd d ZdddZddZdS)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 )divisionabsolute_importprint_functionz$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'7/tmp/pip-install-6_kvzl1k/numpy/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| }| r2|d d D]}| d!r| |q|dd}g}|D]*}t||rF| d|||qF|D]>}||krqvt||rv| t |||d"||qv|D]>}||kr̐qt||r| t |||d"||q|D]&}||krq| t |||d"q| || r\|r.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 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)r AssertionError enumerategetdictappendextendboolrrr)r!splitlstrip startswithr rr r)rout signaturer"r#viddndvneed_interfacer5r6r7 fortrannamer%Znewnamer*lZ charselectsargsr4 dumped_argsr'rHr(createfuncwrapperPs                    rccst|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\| |q\g}|D]*}t||r| d|||q|D]>}||krƐqt||r| t|||d||q|D]&}||kr q| t|||dq| rN|r.n | d| |d | dd fdd|D}|s|| d| |f|r| d|d| fn| d| d S)!Nr"r*rrr+r,r-r.r0r1rcSsd|d|f|d<dSr2r'r3r'r'r(r6szcreatesubrwrapper..addr7r:r;r<r=r>r?r@rArBrCrDrEcsg|]}|kr|qSr'r'rFrHr'r(rJsz%createsubrwrapper..z call %s(%s)rKrLr)rrMrNrOrPrQrRrSrrr!rTrUrVr rr))rWrXr"r#rYrZr[r\r]r^r5r6r7r_r%r*rar4rbr'rHr(createsubrwrappers~             rdcCs8t|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)Nr7z6 Creating wrapper for Fortran function "%s"("%s")... resultr"r/outrzout=rzout=%sr*z8 Creating wrapper for Fortran subroutine "%s"("%s")... r) r rrcopyr rQrVrcrrd)rWr_r7fnamernameZfvarflagrZr'r'r(assubr sJ        rk)NN)r)r)__doc__ __future__rrr __version__Z f2py_versionrgZauxfuncsrr r r r r rrrrrrrr)rcrdrkr'r'r'r(s < 1 j P