B { `#@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(*)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#8/tmp/pip-unpacked-wheel-4iou4664/numpy/f2py/func2subr.pyvar2fixfortransP                 r%cst|s tg|d}x|dD]~}|d|}xlt|dgD]X\}}|dkrDd||f}tddgd}d ||f|d <||||<||d|<qDWq"W|dt} d g} | fd d } |d} t|} t |}d| }||kr|| ||<|g|ddd}n|g|d}t || ||}|dddkr|r`d|dd}nd|dd}|| d}|dd dkrd|d<d |}|r| d|d| |f|s| d|d| fn.| d| |f| s| d| |d| }| r>x0|d d D]}| d!r| |qW|dd}g}x2|D]*}t||rT| d|||qTWxF|D]>}||krqt||r| t |||d"||qWxF|D]>}||krqt||r| t |||d"||qWx.|D]&}||kr*q| t |||d"qW| || rx|rXn | d#| |d | d$d fd%d&|D}|st|r| d'|| |fn| d(|| |f|r| d)|d| fn| d*| d+S),Nrargsrrz f2py_%s_d%sintegerhide)rintentz shape(%s, %s)=rcSsd|d|f|d<dS)Nz %s %srr#)lineretr#r#r$addbszcreatefuncwrapper..addnamez %sf2pywrapr z character*(*)zcharacter(len=10)z character*10rrz(*)10z, zsubroutine f2pywrap_%s_%s (%s) modulenamezuse %s, only : %szsubroutine f2pywrap%s (%s)z external %ssaved_interface zuse )r! interfacez end interfacecsg|]}|kr|qSr#r#).0r) extra_argsr#r$ sz%createfuncwrapper..z%s = .not.(.not.%s(%s))z %s = %s(%s)zend subroutine f2pywrap_%s_%sendr)rAssertionError enumerategetdictappendextendboolrr r%rsplitlstrip startswithrr r r )rout signaturerrviddndvneed_interfacer,r-r. fortrannamer!Znewnamer&lZ charselectsargsr+ dumped_argsr#)r6r$createfuncwrapperNs                     rOcst|s tg|d}x|dD]~}|d|}xlt|dgD]X\}}|dkrDd||f}tddgd}d ||f|d <||||<||d|<qDWq"W|dt} d g} | fd d } |d} t|} t |}|d}d |}|r.| d|d| |f|sP| d|d| fn"| d| |f| sP| d| | rx0|d dD]}| drf| |qfWg}x2|D]*}t||r| d|||qWxF|D]>}||krؐqt||r| t|||d||qWx.|D]&}||kr q| t|||dqW| rf|rFn | d| |d | dd fdd|D}|s| d| |f|r| d|d| fn| d| d S)!Nrr&rrz f2py_%s_d%sr'r()rr)z shape(%s, %s)r*rcSsd|d|f|d<dS)Nz %s %srr#)r+r,r#r#r$r-szcreatesubrwrapper..addr.z, zsubroutine f2pywrap_%s_%s (%s)r1zuse %s, only : %szsubroutine f2pywrap%s (%s)z external %sr2r3zuse )r!r4z end interfacecsg|]}|kr|qSr#r#)r5r)r6r#r$r7sz%createsubrwrapper..z call %s(%s)zend subroutine f2pywrap_%s_%sr8r)rr9r:r;r<r=r>r?rr rr@rArBrr r%)rCrDrrrErFrGrHrIrJr,r-r.rKr!r&rMr+rNr#)r6r$createsubrwrappers|             rPcCs:t|rt|}|d}td||ft|}|}|}d|kr^|d}|d||d|<|d|}t|sd|krg|d<|ddd}x |dD]}|drd }PqW|r|dd ||g|d |d dd<|t|fSt|r2t|}|d}td ||ft|}|t |fS|d fS)Nr.z6 Creating wrapper for Fortran function "%s"("%s")... resultrr)outrzout=rzout=%sr&z8 Creating wrapper for Fortran subroutine "%s"("%s")... r) rrrcopyr r=rBrOrrP)rCrKr.fnamernameZfvarflagrFr#r#r$assubrsB         rW)NN)r)r)__doc__ __version__Z f2py_versionrSZauxfuncsrrrrr r r r r rrrrr%rOrPrWr#r#r#r$s < 1 j P