o
    gHd$                     @   sr   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dZdddZdd	d
Zd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                 C   s  |d u r|}|| vrt |  td|  dS d| | vr*t | |  td|  dS | | d }|dkrDd| | v rDd|| | d f }i }d}d| | v rW| | d }d	}nd
| | v re| | d
 }d}d|v r|r|d dv rvd| }nLd|||d f }nB|d dv rd||d f }n3d||d f }n*d|v rd||d f }d	|v rd||d	 f }nd| }nd	|v rd||d	 f }d||f }d| | v rd|d| | d f }|S )Nz1var2fixfortran: No definition for argument "%s".
 typespecz/var2fixfortran: No typespec for argument "%s".
typetypenamez%s(%s)kindselectorkindcharselectorlen*)r   :(*)z	%s(len=*)z	%s(%s=%s))r   r   z%s*(%s)z%s*%sz	%s(len=%sz%s,kind=%s)z%s)z%s(kind=%s)z%s %s	dimension,)r   r   join)varsafaf90modevardefselectorlk r%   [/var/www/html/facialservice/flask-venv/lib/python3.10/site-packages/numpy/f2py/func2subr.pyvar2fixfortran   sP   

r'   c                    s  t | sJ g  | d }| d D ]=}| d | }t|dg D ],\}}|dkrLd||f }tddgd}d	||f |d
<  | |||< ||d |< q q| d   t }	dg}
|
fdd}| d }t| }t| }d| }||vr|| ||< |g| d dd   }n|g| d  }t	||d|}|d d dkr|rd|dd   }nd|dd   }|| d }|dddkrd|d< |
d|}d }d|}|r|d| d ||f  |s|d| d |f  n|d||f  |	s|d|  |
ddd  | }|	r$| d! d"D ]}| d#r"d$|vr"|| q|dd  }g }|D ]}t|| rB|d|  || q.|D ]}||v rOqFt|| rd|t	|||d% || qF|D ]}||v rqqht|| r|t	|||d% || qh|D ]}||v rq|t	|||d% q|| |d ur|| |	r|rn|d& || d!   |d' d fd(d)|D }|st| r|d*|||f  n	|d+|||f  |r|d,| d |f  |
d. S |d- |
d. S )/Nr   argsr   r   f2py_%s_d%sintegerhider   intentshape(%s, %s)=r   c                 S      d|d | f |d< d S Nz%s
      %sr   r%   lineretr%   r%   r&   add^      zcreatefuncwrapper.<locals>.addnamez
%sf2pywrapr   z
@@@NAME@@@   zcharacter*(*)zcharacter(len=10)zcharacter*10r   r   r   10, subroutine f2pywrap_%s_%s (%s)
modulenameuse %s, only : %ssubroutine f2pywrap%s (%s)external %s saved_interface
use __user__r!   	interfaceend interfacec                       g | ]}| vr|qS r%   r%   .0r   
extra_argsr%   r&   
<listcomp>       z%createfuncwrapper.<locals>.<listcomp>z%s = .not.(.not.%s(%s))z%s = %s(%s)end subroutine f2pywrap_%s_%s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_interfacer4   r5   r7   fortrannamer!   newnamer(   l_tmpl
charselectl1rlsargsr3   dumped_argsr%   rK   r&   createfuncwrapperJ   s   









rk   c                    s  t | sJ g  | d }| d D ]=}| d | }t|dg D ],\}}|dkrLd||f }tddgd}d	||f |d
<  | |||< ||d |< q q| d   t }	dg}
|
fdd}| d }t| }t| }| d }d	|}|r|d| d ||f  |s|d| d |f  n|d||f  |	s|d|  |	r| d 
dD ]}| drd|vr|| qg }|D ]}t|| r|d|  || q|D ]}||v rqt|| r|t|||d || q|D ]}||v rq|t|||d q|	r2|rn&|d | d 
dD ]}| dr(d|v r(q|| q|d d	 fdd|D }|sI|d||f  |rZ|d| d |f  |
d! S |d  |
d! S )"Nr   r(   r   r   r)   r*   r+   r,   r.   r/   r   c                 S   r0   r1   r%   r2   r%   r%   r&   r5      r6   zcreatesubrwrapper.<locals>.addr7   r:   r;   r<   r=   r>   r?   rA   rB   rC   rD   rE   rF   rG   c                    rH   r%   r%   rI   rK   r%   r&   rM     rN   z%createsubrwrapper.<locals>.<listcomp>zcall %s(%s)rO   rP   r   )r   rQ   rR   rS   rT   rU   rV   r   r
   r   rX   rY   rZ   r   r   r'   )r[   r\   r   r   r]   r^   r_   r`   ra   rb   r4   r5   r7   rc   r!   r(   ri   r3   rj   r%   rK   r&   createsubrwrapper   s   



rl   c                 C   s6  t | rxt| }| d }td||f  t| } |}|}d| v r/| d }| d | | d |< | d | }t|sed|vrAg |d< |d d d}|d D ]}|drYd	} nqN|re|d d
|  |g| d  | d d d < | t| fS t| rt| }| d }td||f  t| } | t	| fS | dfS )Nr7   z6		Creating wrapper for Fortran function "%s"("%s")...
resultr   r-   outr   zout=r   zout=%sr(   z8		Creating wrapper for Fortran subroutine "%s"("%s")...
r   )
r   r   r   copyr   rT   rZ   rk   r   rl   )r[   rc   r7   fnamernamefvarflagr^   r%   r%   r&   assubr  sH   


rt   )NN)r   )__doc__ro   auxfuncsr   r   r   r   r   r   r	   r
   r   r   r   r   r   r'   rk   rl   rt   r%   r%   r%   r&   <module>   s   <

1
qS