o
    Ô­j:(  ã                   @   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 r�d||d f }n3d||d f }n*d|v r¶d||d f }d	|v r±d||d	 f }nd| }nd	|v rÂd||d	 f }d||f }d| | v rÛd|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&   úQ/var/www/html/CropPilot/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Ã|r©d|dd …  }nd|dd …  }|ˆ d }| dd¡dkrÃd|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›�q’t|| ƒ�r°|t	|||d(�ƒ | |¡ �q’|D ]}||v �r½�q´|t	|||d(�ƒ �q´||ƒ |d u�rÕ||ƒ |	�rì|�rÜn|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¡rËd|vrË||ƒ qºg }|D ]}t|| ƒrã|d| ƒ | |¡ qÐ|D ]}||v ríqæt|| ƒ�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| ƒr—t| ƒ}| 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