o
    "g:(                     @   s   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lmZ dddZdd	 Zdd
dZdddZdd ZdS )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   )getfortranname
isexternal
isfunctionisfunction_wrapisintent_inisintent_outislogicalfunctionismoduleroutineisscalarissubroutineissubroutine_wrapoutmessshow)isoc_kindmapc                 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&   V/var/www/html/ecg_monitoring/venv/lib/python3.10/site-packages/numpy/f2py/func2subr.pyvar2fixfortran   sP   

r(   c                 C   s>   d}| d   D ]\}}|di d}|tv r dS q|S )NFr   r   r   T)itemsgetr   )routuseisockeyvalue
kind_valuer&   r&   r'   useiso_c_bindingF   s   r0   c                    sX  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 }t| }d|}|r|
 dd}fdd|D }|| d< |d| d |f  |s|d| d |f  |r|d  n"|d!|f  |r|d  |	s/|d"|  |
ddd# | }|	rN| d$ d%D ]}| d&rLd'|vrL|| q9|dd  }g }|D ]}t|| rl|d"|  || qX|D ]}||v ryqpt|| r|t	|||d( || qp|D ]}||v rqt|| r|t	|||d( || q|D ]}||v rq|t	|||d( q|| |d ur|| |	r|rn|d) || d$   |d* d fd+d|D }|st| r
|d,|||f  n	|d-|||f  |r$|d.| d f  |
d0 S |d/ |
d0 S )1Nr   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'   addb      zcreatefuncwrapper.<locals>.addnamez
%sf2pywrapr   z
@@@NAME@@@   zcharacter*(*)zcharacter(len=10)zcharacter*10r   r   r   10, c                    s   g | ]}| kr|qS r&   r&   ).0arg)r@   r&   r'   
<listcomp>       z%createfuncwrapper.<locals>.<listcomp>subroutine f2pywrap_%s_%s (%s)
modulenameuse %s, only : %suse iso_c_bindingsubroutine f2pywrap%s (%s)external %s saved_interface
use __user__r"   	interfaceend interfacec                       g | ]}| vr|qS r&   r&   rD   r    
extra_argsr&   r'   rF      rG   z%s = .not.(.not.%s(%s))z%s = %s(%s)end subroutine f2pywrap_%s_%sendr   )r   	enumerater*   dictappendextendboolr   r
   r(   replacer0   r   splitlstrip
startswithr   r   r   r	   )r+   	signaturer   r    viddndvneed_interfacer=   r>   fortrannamer"   newnamer1   l_tmpl
charselectl1rlr,   sargsr<   dumped_argsr&   )rY   r@   r'   createfuncwrapperN   s   









rt   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 }t	| }d
|}|r|d| d ||f  |r|d |s|d| d |f  n|d||f  |r|d |	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 rq|t|||d q|	rF|r n&|d | d dD ]}| dr<d|v r<q+|| q+|d d
 fdd|D }|s]|d||f  |rn|d | d |f  |
d" S |d! |
d" S )#Nr   r1   r   r   r2   r3   r4   r5   r7   r8   r   c                 S   r9   r:   r&   r;   r&   r&   r'   r>      r?   zcreatesubrwrapper.<locals>.addr@   rC   rH   rI   rK   rJ   rL   rM   rO   rP   rQ   rR   rS   rT   rU   c                    rV   r&   r&   rW   rX   r&   r'   rF     rG   z%createsubrwrapper.<locals>.<listcomp>zcall %s(%s)rZ   r[   r   )r   r\   r*   r]   r^   r_   r`   r   r
   r0   r   rb   rc   rd   r   r   r(   )r+   re   r   r    rf   rg   rh   ri   rj   rk   r=   r>   r@   rl   r"   r1   r,   rr   r<   rs   r&   rX   r'   createsubrwrapper   s   




ru   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 )Nr@   z6		Creating wrapper for Fortran function "%s"("%s")...
resultr   r6   outr   zout=r   zout=%sr1   z8		Creating wrapper for Fortran subroutine "%s"("%s")...
r   )
r   r   r   copyr   r^   rd   rt   r   ru   )r+   rl   r@   fnamernamefvarflagrg   r&   r&   r'   assubr"  sH   


r}   )NN)r   )__doc__rx   auxfuncsr   r   r   r   r   r   r	   r
   r   r   r   r   r   	_isocbindr   r(   r0   rt   ru   r}   r&   r&   r&   r'   <module>   s    <
0

|X