Ë
    ›2Úiá  ã                   óz   — d Z ddlmZ ej                  ZddlmZmZmZm	Z	m
Z
 ddlmZ ddlmZ ddlmZ d
d„Zd„ Zy	)aM  

Build common block mechanism for f2py2e.

Copyright 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: 2005/05/06 10:57:33 $
Pearu Peterson

é   )Ú__version__)ÚhasbodyÚ	hascommonÚhasnoteÚisintent_hideÚoutmess)Ú	capi_maps)Ú	func2subr)Ú	rmbadnamec                 óv  — g }t        | «      rF| d   j                  «       D ]/  \  }}|D �ci c]  }|| d   |   “Œ }}|j                  |||f«       Œ1 n$t        | «      r| d   D ]  }|t	        |d«      z   }Œ |r:g }g }	|D ]/  }
|
d   |	vsŒ|	j                  |
d   «       |j                  |
«       Œ1 |S |S c c}w )NÚcommonÚvarsÚbodyé    )r   ÚitemsÚappendr   Úfindcommonblocks)ÚblockÚtopÚretÚkeyÚvalueÚvÚvars_ÚbÚtretÚnamesÚts              úN/var/www/html/acx/venv/lib/python3.12/site-packages/numpy/f2py/common_rules.pyr   r      så   € Ø
€CÜ�ÔØ ™/×/Ñ/Ó1ò 	,‰JˆC�Ø27Ö8¨Q�Q˜˜f™ aÑ(Ñ(Ð8ˆEÐ8Ø�J‰J˜˜U EÐ*Õ+ñ	,ô 
�ŒØ�v‘ò 	/ˆAØÔ(¨¨AÓ.Ñ.‰Cð	/á
ØˆØˆØò 	ˆAØ�‰t˜5Ò Ø—‘˜Q˜q™TÔ"Ø—‘˜A•ð	ð ˆØ€Jùò 9s   «B6c                 ó¶  — g g dgdœ}dg}|fd„}dg}|fd„}dg}|fd„}dg}|fd„}	t        | «      D �]ð  \  }
}}|
j                  «       }g g }}|D ]3  }t        ||   «      r|j                  |«       Œ#|j                  |«       Œ5 |r4t	        d|
›d	d
j                  |«      ›dd
j                  |«      ›d�«       n!t	        d|
›d	d
j                  |«      ›d�«        |d|
z  «        |d«       |D ]  } |t        j                  ||«      «       Œ  |
dk(  r |dd
j                  |«      z  «       n |d|
›dd
j                  |«      ›�«        |dd
j                  |«      z  «        |d«        |d|
z  «       g }|D ]¾  }t        j                  ||   «      }t        j                  ||   «      }t        j                  |   }t        j                  |||   «      }|d   r|j                  d|d   z  «       n|j                  d«       |d   j                  «       }|sd} |d|›d|d   ›d|›d|›d|›d�«       ŒÀ  |d «       t        |«      }d
j                  |D �cg c]  }d!|z   ‘Œ	 c}«      } |d"|
›d#|›d$�«        |d%«       |D ]  } |d&|
›d'|›d(�«       Œ  |d)«       d*|v rd+}nd,} |d-|›d.|›d/|
j                  «       ›d0d
j                  d1gt!        |«      z  «      ›d2�	«        |d3|
z  «        |d4|›d.|›d/|
j                  «       ›d5|
›d6�	«        |d7«        |d8|
›d9|
›d6�«        |d:«        |d;|
z  «        |d<«       |
j#                  d*d=«      } |	d>|z  «        |	d?«       |D ]g  } |	d@t        j$                  |||   «      z  «       t'        ||   «      sŒ4||   dA   }t)        |t*        «      rdj                  |«      } |	dB|z  «       Œi  |	dC«       |dD   j                  dE|
›dd
j                  t-        dF„ ||«      «      ›dG�«       �Œó ||dH<   ||dI<   |dJ   |dK<   t!        |dD   «      dLk  rd|dD<   ||dJ   fS c c}w )MNz"COMMON blocks:\n")ÚcommonhooksÚinitcommonhooksÚdocsÚ c                 ó   — |d   ›d| ›�|d<   y )Nr   z
      © ©ÚlineÚss     r   Úfaddzbuildhooks.<locals>.fadd4   s   € Ø!" 1£¡tÐ,ˆˆ!Šó    c                 ó   — |d   ›d| ›�|d<   y ©Nr   ú
r&   r'   s     r   Úcaddzbuildhooks.<locals>.cadd8   ó   € Ø˜Q›4¡Ð&ˆˆ!Šr+   c                 ó   — |d   ›d| ›�|d<   y r-   r&   r'   s     r   Úiaddzbuildhooks.<locals>.iadd<   r0   r+   c                 ó   — |d   ›d| ›�|d<   y r-   r&   r'   s     r   Údaddzbuildhooks.<locals>.dadd@   r0   r+   z)		Constructing COMMON block support for "z	"...
		  ú,z
		  Hidden: r.   z subroutine f2pyinit%s(setupfunc)zexternal setupfuncÚ_BLNK_z	common %szcommon /z/ zcall setupfunc(%s)zend
z'static FortranDataDef f2py_%s_def[] = {Údimsz(%s)z-1z	{"z",Úrankz,{{z}},z, z},z
	{NULL}
};zchar *zstatic void f2py_setup_ú(z) {z	int i_f2py=0;z	f2py_z_def[i_f2py++].data = ú;ú}Ú_Ú	F_FUNC_USÚF_FUNCzextern void z	(f2pyinitz	,F2PYINITz
)(void(*)(zchar*z));z static void f2py_init_%s(void) {ú	z)(f2py_setup_z);z}
z 	tmp = PyFortranObject_New(f2py_z_def,f2py_init_z	if (tmp == NULL) return NULL;z=	if (F2PyDict_SetItemString(d, "%s", tmp) == -1) return NULL;z	Py_DECREF(tmp);z\_z&\subsection{Common block \texttt{%s}}
z\begin{description}z\item[]{{}\verb@%s@{}}Únotez--- %sz\end{description}r#   z"	/c                 ó   — | |z   S )Nr&   )r   Úds     r   ú<lambda>zbuildhooks.<locals>.<lambda>�   s
   € ÀÀAÁ€ r+   z\n"r!   r"   r   Úlatexdocr   )r   Úlowerr   r   r   Újoinr
   Úvar2fixfortranr	   ÚgetctypeÚ
get_elsizeÚ
c2capi_mapÚ
getarrdimsÚstripr   ÚupperÚlenÚreplaceÚgetarrdocsignr   Ú
isinstanceÚlistÚmap)Úmr   Úfwrapr*   Úchooksr/   Úihooksr2   Údocr4   ÚnameÚvnamesr   Ú
lower_nameÚhnamesÚinamesÚnÚidimsÚctÚelsizeÚatÚdmÚdmsÚinames1r)   Úinames1_tpsr>   Útnamer@   s                                r   Ú
buildhooksrh   /   s‘  € Ø°Ø)Ð*ñ,€CàˆD€Eàó -àˆT€Fàó 'àˆT€Fàó 'àˆ$€Càó 'ä 0°Ó 3ó MYÑˆˆv�tØ—Z‘Z“\ˆ
Ø˜R�ˆØò 	!ˆAÜ˜T !™WÔ%Ø—‘˜aÕ à—‘˜aÕ ð		!ñ
 ÝÚ�c—h‘h˜vÕ&¨¯©°Õ(8ð:õ ;õ Ú�c—h‘h˜vÕ&ð(ô )áÐ/°$Ñ6Ô7ÙÐ!Ô"Øò 	4ˆAÙ”×)Ñ)¨$°Ó2Õ3ð	4à�8ÒÙ� §¡¨Ó 0Ñ1Õ2â¢T¨3¯8©8°FÔ+;Ð<Ô=ÙÐ! S§X¡X¨fÓ%5Ñ6Ô7ÙˆWŒÙÐ6¸$Ñ?Ô@ØˆØò 	5ˆAÜ×#Ñ# D¨¡GÓ,ˆBÜ×)Ñ)¨$¨q©'Ó2ˆFÜ×%Ñ% bÑ)ˆBÜ×%Ñ% a¨¨a©Ó1ˆBØ�&ŠzØ—‘˜V r¨&¡zÑ2Õ3à—‘˜RÔ Ø�V‘*×"Ñ"Ó$ˆCÙØ�ÚÚ�r˜&“z¢3ªªFð4õ 5ð	5ñ 	ˆ^ÔÜ˜FÓ#ˆØ—h‘h°gÖ>° ¨1£Ò>Ó?ˆÚ²$ºÐDÔEÙÐÔØò 	CˆAÚººqÐAÕBð	CáˆSŒ	Ø�*ÑØ ‰FàˆFÚÚš
 D§J¡J¥LØ—‘˜'˜¤S¨£\Ñ1Õ2ð4ô 	5ñ 	Ð/°$Ñ6Ô7ÚÚš
 D§J¡J¥L²$ð8ô 	9áˆUŒÚÊÊtÐTÔUÙÐ.Ô/ÙÐOØñô 	áÐ Ô!Ø—‘˜S %Ó(ˆÙÐ8¸EÑBÔCÙÐ#Ô$Øò 	(ˆAÙÐ+Ü×)Ñ)¨!¨T°!©WÓ5ñ7ô 8ä�t˜A‘wÕØ˜A‘w˜v‘�Ü˜d¤DÔ)ØŸ9™9 T›?�DÙ�X Ñ&Õ'ð	(ñ 	Ð!Ô"ØˆF‰×ÒÚ $ c§h¡h¬sÑ3EÀvÈuÓ/UÕ&VÐWö	YðYMYð\  €CˆÑØ#€CÐÑØ˜!‘f€Cˆ
�OÜ
ˆ3ˆv‰;Ó˜1ÒØˆˆF‰Ø��a‘ˆ=ÐùòS  ?s   É%Q
N)r   )Ú__doc__r$   r   ÚversionÚf2py_versionÚauxfuncsr   r   r   r   r   r	   r
   Úcrackfortranr   r   rh   r&   r+   r   ú<module>rn      s:   ðñõ Ø×"Ñ"€÷õ õ Ý Ý #óó(fr+   