;i(~dZddlZddlmZddlmZmZmZmZm Z m Z m Z m Z m Z mZmZmZmZd dZdZd dZd d Zd ZdS) a; Rules for building C/API module with f2py2e. Copyright 1999 -- 2011 Pearu Peterson all rights reserved. Copyright 2011 -- present NumPy Developers. 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. N) isoc_kindmap) getfortranname isexternal isfunctionisfunction_wrap isintent_in isintent_outislogicalfunctionismoduleroutineisscalar issubroutineissubroutine_wrapoutmessshowc"||}||vr$t|td|ddSd||vr*t||td|ddS||d}|dkrd||vr|d||dd }i}d}d ||vr||d }d }nd ||vr||d }d }d|vrK|r"|ddvr|d}nu|d|d|dd }nc|ddvr|d|dd }nJ|d|d}n*  47 " "7>*  h  1} 111"+++"::R::(3-::: c]j ( (22(3-222FF00#00FF (  22%22 X  99hv&6999FF\\\FF 8  55(6"2555    Fd1g>>SXXd1gk&:;;>>> Mcd}|dD]:\}}|did}|tvrdS;|S)NFr%rrT)itemsgetr)routuseisockeyvalue kind_values r,useiso_c_bindingr7NsgG6l((** UYY~r2266v>>  % %44 & Nr.c  t|sJg|d}|dD]~}|d|}t|dgD]J\}}|dkr?d|d|}ddgd }d |d |d |d <||||<||d|<K|dt } dg} | fd} |dt |} t|} d}||vr |||<|g|dddz}n |g|dz}t|d| }|dddkrJ| rd|ddz}n d|ddz}|d}|dddkrd|d<| d|}d}t|}d |}| rn| d d}fd|D}||d<| d|ddd |d |s| d!|dd"| |r | d#nK| d$d |d |r | d#| s*| d%| | ddd&z| z}| rT|d' d(D]8}| d!rd)|vr | |9|dd}g}|D]:}t||r#| d%|||;|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/|d0n| |d1| d/|d | r| d2|ddn | d3| d4S)5Nr%argsr"rf2py__dintegerhiderintentshape(, rr rc&|dd||d<dSNrz linerets r,addzcreatefuncwrapper..addj!F**D**Ar.namef2pywraprz @@@NAME@@@ z character*(*)zcharacter(len=10)z character*10rrr10c g|] }|k| SrDrD).0argrJs r, z%createfuncwrapper..s333sd{{{{{r.subroutine f2pywrap_ modulename_ (use , only : use iso_c_bindingsubroutine f2pywrap external r!saved_interface __user__r( interface end interfacecg|]}|v| SrDrDrOr& extra_argss r,rQz%createfuncwrapper..#>>>Q!:*=*=q*=*=*=r.z = .not.(.not.rz))z = end subroutine f2pywrap_endr)r enumerater1appendextendboolrr r-replacer7r$splitlstrip startswithrr r r )r2 signaturer%r&viddndvneed_interfacerGrH fortrannamer(newnamer9l_tmpl charselectl1rlr3sargsrF dumped_argsrcrJs @@r,createfuncwrapperr~Vs d   J  >F crc{o%%  2(6"##;6FF#fRSSk1F$Z/ >>#r " "e + +"JsO  g . .B Bt$$G IIdOOEF kkk2..3333t333V   H4 #5 H H H H H H HIII C CAtL)AAKAA B B B  % C# $ $ $  2$ 2 2% 2 2 2333  % C# $ $ $ F C)K)) * * * b11C7+EB*+11$77  D{{}}''// Jd4J4JD 8DK "" d1g   " CA   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 7 T " " 7 C7AA+AAAAA B B B B C755{55U555 6 6 6  BtL'9 B BD B BCCCC E q6Mr.c t|sJg|d}|dD]~}|d|}t|dgD]J\}}|dkr?d|d|}ddgd }d |d |d |d <||||<||d|<K|dt } dg} | fd} |d} t |} t|}|d}t|}d |}|rB| d|dd| d|d |r | d|s| d|dd| n/| d| d|d |r | d| s| d| | rT|d dD]8}| drd|vr | |9g}|D]:}t||r#| d|||;|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%r9r"rr:r;r<r=r>r@rArr rc&|dd||d<dSrCrDrEs r,rHzcreatesubrwrapper..addrIr.rJrRrSrTrUrXrVrWrYrZr[r\r]r^r_r`cg|]}|v| SrDrDrbs r,rQz%createsubrwrapper..rdr.zcall rrerfr)rrgr1rhrirjrr r7r$rlrmrnrr r-)r2ror%r&rprqrrrsrtrurGrHrJrvr(r9r3r|rFr}rcs @r,createsubrwrapperrs    J >>>$>>> ? ?E ,  *K * *% * * *+++  BtL'9 B BD B BCCCC 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 ||g|d z|d dd<|t|fSt|rRt|}|d}td |d|dtj|}|t|fS|dfS)NrJz) Creating wrapper for Fortran function "z"("z")... resultr%r?outrzout=rr9z+ Creating wrapper for Fortran subroutine "r) rrrcopyr rhrnr~rr)r2rvrJfnamernamefvarflagrqs r,assubrr(st-$T** F| DD+++   y t  NE"&v,u"5DL F|E"D!! 6t##!#X N ! !% ( ( (D(^  <<''DE 6X%%nUnn555 'DL0V QQQ&t,,,,-$T** F|44& ' ' 'y&t,,,, 8Or.)NN)r)__doc__r _isocbindrauxfuncsrrrrr r r r r rrrrr-r7r~rrrDr.r,rs1   ######",,,,\xxxxvTTTTn!!!!!r.