bg.&ldZddlZddlmZmZmZmZmZmZm Z m Z m Z m Z m Z mZmZd dZd dZd dZdZdS) 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 N) getfortranname isexternal isfunctionisfunction_wrap isintent_in isintent_outislogicalfunctionismoduleroutineisscalar issubroutineissubroutine_wrapoutmessshowc||}||vr#t|td|zdSd||vr)t||td|zdS||d}|dkrd||vr|d||dd}i}d}d ||vr||d }d }nd ||vr||d }d }d |vrK|r"|d dvrd|z}nu|d|d|d d}nc|d dvr|d|d d}nJ|d |d }n*  47 " "7>*  h  ;} 111$/(.HSMMMB} **&,ffhsmmm<$*FFHSMM: H  $*FFHUOO.>.>?F #Fd1g#VVSXXd1gk.B%C%C%C%CD Mc l t|sJg|d}|dD]}|d|}t|dgD]V\}}|dkrKd|d|}tddg }d |d |d |d <||||<||d|<W|dt } dg} | fd} |dt|} t|} dz}||vr |||<|g|dddz}n |g|dz}t|d| }|dddkrJ| rd|ddz}n d|ddz}|d}|dddkrd|d<| d|}d}d |}| ra| d d}fd|D}||d<| d|ddd |d |s| d!|dd"| n>| d#d |d | s*| d$| z| ddd%z| z}| rT|d& d'D]8}| d!rd(|vr | |9|dd}g}|D]:}t||r#| d$|z||;|D]L}||vrt!||r0| t||| )||M|D]L}||vrt#||r0| t||| )||M|D]"}||vr| t||| )#| || | || r<| rn9| d*| |d& | d+d fd,|D}|s8t%|r| |d-| d.|d/n| |d0| d.|d | r| d1|ddn | d2| d3S)4Nr$argsr!rf2py__dintegerhiderintentshape(, rrrc&|dd||d<dSNrz linerets r+addzcreatefuncwrapper..add^#&q666440Ar-namez %sf2pywraprz @@@NAME@@@ z character*(*)zcharacter(len=10)z character*10rrr10c g|] }|k| Sr:r:).0argr@s r+ z%createfuncwrapper..~s333sd{{{{{r-subroutine f2pywrap_ modulename_ (use , only : subroutine f2pywrap external %sr saved_interface __user__r' interface end interfacecg|]}|v| Sr:r:rDr% extra_argss r+rFz%createfuncwrapper..#>>>Q!:*=*=q*=*=*=r-z = .not.(.not.rz))z = end subroutine f2pywrap_endr)r enumerategetdictappendextendboolrr r,replacer#splitlstrip startswithrr rr )rout signaturer$r%viddndvneed_interfacer=r> fortrannamer'newnamer/l_tmpl charselectl1rlsargsr< dumped_argsrWr@s @@r+createfuncwrapperruJsS d   J >>-.QQ23!!"%%%R$&+q! ' L ###*%%N $C1111  >F crc{o%%  2(6"##;6FF#fRSSk1F$Z/ >>#r " "e + +"JsO  g . .B B IIdOOEF kkk2..3333t333V   ,   uuu . / / / I CCtL'9'9'9;;G H H H DDD%%% 8999 F C - . . . b11C7+EB*+11$77  D{{}}''// Jd4J4JD 8DK "" d1g   " C # $ $ $   q ! ! ! ""    DG   " CtQ888 9 9 9   q ! ! ! ""    tAw   " CtQ888 9 9 9   q ! ! ! 66    N4G 4 4 45555CGGG ~ B!  !  C    C&'..00 1 1 1 C II>>>>$>>> ? ?E ? T " " ? CWWWkkk555I J J J J C+++uuu= > > > tL/A/A/A44 HIIII E q6Mr-c t|sJg|d}|dD]}|d|}t|dgD]V\}}|dkrKd|d|}tddg }d |d |d |d <||||<||d|<W|dt } dg} | fd} |d} t|} t|}|d}d |}|r5| d|dd| d|d |s| d|dd| n"| d| d|d | s| d| z| rT|d dD]8}| drd|vr | |9g}|D]:}t||r#| d|z||;|D]L}||vrt||r0| t|||||M|D]"}||vr| t|||#| rn|rnk| d|d dD]9}| drd|vr.| |:| dd fd|D}|s| d | d!|d |r| d"|dd| n | d#| d$S)%Nr$r/r!rr0r1r2r3r4r6r7rrrc&|dd||d<dSr9r:r;s r+r>zcreatesubrwrapper..addr?r-r@rGrHrIrJrKrLrMrNrOrPrQrRrSrTcg|]}|v| Sr:r:rVs r+rFz%createsubrwrapper.. rXr-zcall rrYrZr)r r[r\r]r^r_r`rr r#rbrcrdrr r,)rerfr$r%rgrhrirjrkrlr=r>r@rmr'r/rsr<rtrWs @r+createsubrwrapperrys    J >>-.QQ23!!"%%%R$&+q! ' L ###*%%N $C1111 >>>$>>> ? ?E 2 [[[%%% 0111 tL/A/A/A44 HIIII E q6Mr-ct|rt|}|d}td|d|dtj|}|}|}d|vr|d}|d||d|<|d|}t |sjd|vrg|d<|ddd }|dD]}|d rd }n|r|dd |z|g|d z|d dd<|t|fSt|rRt|}|d}td|d|dtj|}|t|fS|dfS)Nr@z) Creating wrapper for Fortran function "z"("z")... resultr$r5outrzout=rzout=%sr/z+ Creating wrapper for Fortran subroutine "r) rrrcopyr r^rdrurry)rermr@fnamernamefvarflagrhs r+assubrrst-$T** F| DD+++   y t  NE"&v,u"5DL F|E"D!! :t##!#X N ! !% ( ( (D(^  <<''DE :X%%h%&8999 'DL0V QQQ&t,,,,-$T** F|44& ' ' 'y&t,,,, 8Or-)NN)r)__doc__r}auxfuncsrrrrrr r r r r rrrr,ruryrr:r-r+rs   ....bttttnPPPPf!!!!!r-