
    ~Od$                     l    d Z ddlZddlmZmZmZmZmZmZm	Z	m
Z
mZmZmZmZmZ d	dZd
dZd
dZd ZdS )aW  

Rules for building C/API module with f2py2e.

Copyright 1999,2000 Pearu Peterson all rights reserved,
Pearu Peterson <pearu@ioc.ee>
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
isfunctionisfunction_wrapisintent_inisintent_outislogicalfunctionismoduleroutineisscalarissubroutineissubroutine_wrapoutmessshowc                    ||}|| vr#t          |            t          d|z             dS d| |         vr)t          | |                    t          d|z             dS | |         d         }|dk    rd| |         v r|d| |         d         d}i }d}d	| |         v r| |         d	         }d
}nd| |         v r| |         d         }d}d|v rK|r"|d         dv rd|z  }nu|d|d|d         d}nc|d         dv r|d|d         d}nJ|d|d         }n<d|v r&|d|d         }d
|v r|d|d
         d}nd|z  }nd
|v r|d|d
         d}|d|}d| |         v r'|dd                    | |         d                   d}|S )Nz1var2fixfortran: No definition for argument "%s".
 typespecz/var2fixfortran: No typespec for argument "%s".
typetypename()kindselectorkindcharselectorlen*)r   :(*)z	%s(len=*)=)r   r   z*(z(len=z,kind=z%s)z(kind= 	dimension,)r   r   join)varsafaf90modevardefselectorlks          4lib/python3.11/site-packages/numpy/f2py/func2subr.pyvar2fixfortranr,      sN   	z}}T


DqHIIIra  T!WBQFGGGr!WZ FJ$q'11#VVT!WZ%8%8%89H	Ba  7>*	47	"	"7>*
h 		;} 111$/(.HSMMMB}
**&,ffhsmmm<$*FFHSMM:H$*FFHUOO<F!!*0&&(62B2B2BC&)x&,ffhv.>.>.>?F#Fd1g#VVSXXd1gk.B%C%C%C%CDM    c           	      	   t          |           sJ g | d         }| d         D ]}| d         |         }t          |                    dg                     D ]V\  }}|dk    rKd|d|}t          ddg	          }d
|d|d|d<                       |           |||<   ||d         |<   W| d                                        t                    }	dg}
|
fd}| d         }t          |           }t          |           }d|z  }||vr ||         ||<   |g| d         dd          z   }n|g| d         z   }t          ||d|          }|d d         dk    rJ|rd|dd          z   }nd|dd          z   }||         d         }|                    dd          dk    rd|d<   |
                    d|          }d }d                    |          }|r5 |d| d         d|d|d           |s |d | d         d!|           n> |d"|d|d           |	s* |d#|z             |
                    dd          d$z   |z   }|	rT| d%                             d&          D ]8}|                                                    d           rd'|vr ||           9|dd          }g }|D ]:}t          ||                   r# |d#|z             |                    |           ;|D ]L}||v rt!          ||                   r0 |t          |||(                     |                    |           M|D ]L}||v rt#          ||                   r0 |t          |||(                     |                    |           M|D ]"}||v r |t          |||(                     # ||           | ||           |	r<|rn9 |d)            || d%                                                     |d*           d                    fd+|D                       }|s8t%          |           r ||d,|d-|d.           n ||d/|d-|d           |r |d0| d         d|           n |d1           |
d2         S )3Nr$   argsr!   r   f2py__dintegerhider   intentshape(, r   r   r   c                 &    |d         d| |d<   d S Nr   z
       linerets     r+   addzcreatefuncwrapper.<locals>.add^       #&q666440Ar-   namez
%sf2pywrapr   z
@@@NAME@@@   zcharacter*(*)zcharacter(len=10)zcharacter*10r   r   r   10subroutine f2pywrap_
modulename_ (use 	, only : subroutine f2pywrapexternal %sr    saved_interface
__user__r'   	interfaceend interfacec                     g | ]}|v|	S r:   r:   .0r%   
extra_argss     r+   
<listcomp>z%createfuncwrapper.<locals>.<listcomp>   #    >>>Q!:*=*=q*=*=*=r-   z = .not.(.not.r   z))z = end subroutine f2pywrap_endr   )r   	enumerategetdictappendextendboolr   r   r,   replacer#   splitlstrip
startswithr   r   r   r
   )rout	signaturer$   r%   viddndvneed_interfacer=   r>   r@   fortrannamer'   newnamer/   l_tmpl
charselectl1rlsargsr<   dumped_argsrT   s                           @r+   createfuncwrapperrs   J   s   dJ<D&\ 	' 	'LOaeeK4455 	' 	'DAqCxxx&'aa+9fX>>>-.QQ23!!"%%%R$&+q!	' 	L
###*%%N$C 1 1 1 1<D &&Kd##Gd#GdT
Wy4<++y4<'D$g>>Fcrc{o%% 	2(6"##;6FF#fRSSk1F$Z/
>>#r""e++"JsO	g	.	.B	BIIdOOE 	F,uuu. 	/ 	/ 	/ 	ICCtL'9'9'9;;GHHHDDD%%%8999 	FC-...b11C7+EB *+11$77 	 	D{{}}''// Jd4J4JD			8DK " "d1g 	"C#$$$q!!! " "DG 	"CtQ888999q!!! " "tAw 	"CtQ888999q!!! 6 6N4G4445555CGGG	~B ! 	!CC&'..00111C   II>>>>$>>>??E ?T"" 	?CWWWkkk555IJJJJC+++uuu=>>> tL/A/A/A44HIIIIE


q6Mr-   c           	         t          |           sJ g | d         }| d         D ]}| d         |         }t          |                    dg                     D ]V\  }}|dk    rKd|d|}t          ddg	          }d
|d|d|d<                       |           |||<   ||d         |<   W| d                                        t                    }	dg}
|
fd}| d         }t          |           }t          |           }| d         }d	                    |          }|r5 |d| d         d|d|d           |s |d| d         d|           n" |d|d|d           |	s |d|z             |	rT| d         
                    d          D ]8}|                                                    d          rd|vr ||           9g }|D ]:}t          ||                   r# |d|z             |                    |           ;|D ]L}||v rt          ||                   r0 |t          |||                     |                    |           M|D ]"}||v r |t          |||                     #|	rn|rnk |d           | d         
                    d          D ]9}|                                                    d          rd|v r. ||           : |d           d	                    fd|D                       }|s |d |d!|d           |r |d"| d         d|           n |d#           |
d$         S )%Nr$   r/   r!   r   r0   r1   r2   r3   r4   r6   r7   r   r   r   c                 &    |d         d| |d<   d S r9   r:   r;   s     r+   r>   zcreatesubrwrapper.<locals>.add   r?   r-   r@   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   c                     g | ]}|v|	S r:   r:   rR   s     r+   rU   z%createsubrwrapper.<locals>.<listcomp>  rV   r-   zcall r   rW   rX   r   )r   rY   rZ   r[   r\   r]   r^   r   r   r#   r`   ra   rb   r   r   r,   )rc   rd   r$   r%   re   rf   rg   rh   ri   rj   r=   r>   r@   rk   r'   r/   rq   r<   rr   rT   s                      @r+   createsubrwrapperrw      s   J<D&\ 	' 	'LOaeeK4455 	' 	'DAqCxxx&'aa+9fX>>>-.QQ23!!"%%%R$&+q!	' 	L
###*%%N$C 1 1 1 1<D &&Kd##G<DIIdOOE /,uuu. 	/ 	/ 	/ 	ICCtL'9'9'9;;GHHHDDD%%%8999 	/C-... *+11$77 	 	D{{}}''// Jd4J4JD			K " "d1g 	"C#$$$q!!! " "DG 	"CtQ888999q!!! 6 6N4G4445555 
! 		!C./55d;;  ;;==++F33 
d8J8JD				C   II>>>>$>>>??E 2[[[%%%0111 tL/A/A/A44HIIIIE


q6Mr-   c                    t          |           rt          |           }| d         }t          d|d|d           t          j        |           } |}|}d| v r| d         }| d         |         | d         |<   | d         |         }t	          |          sjd|vrg |d<   |d                             d           d	}|d         D ]}|                    d
          rd} n|r|d                             d|z             |g| d         z   | d         d d <   | t          |           fS t          |           rRt          |           }| d         }t          d|d|d           t          j        |           } | t          |           fS | dfS )Nr@   z)		Creating wrapper for Fortran function "z"("z")...
resultr$   r5   outr   zout=r   zout=%sr/   z+		Creating wrapper for Fortran subroutine "r   )
r   r   r   copyr	   r\   rb   rs   r   rw   )rc   rk   r@   fnamernamefvarflagrf   s           r+   assubrr     s   t -$T**F|DD+++ 	  	  	 ytNE"&v,u"5DLF|E"D!! 
	:t##!#XN!!%(((D(^  <<'' DE  :X%%h%&8999 'DL0VQQQ&t,,,, -$T**F|44& 	' 	' 	'y&t,,,,8Or-   )NN)r   )__doc__r{   auxfuncsr   r   r   r   r   r	   r
   r   r   r   r   r   r   r,   rs   rw   r   r:   r-   r+   <module>r      s                                 . . . .bn n n nbP P P Pf! ! ! ! !r-   