§
    Ëãßcá  ã                   ór   — 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d	S )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                 ó   ‡ — g }t          ‰ ¦  «        rG‰ d                              ¦   «         D ]+\  }}ˆ fd„|D ¦   «         }|                     |||f¦  «         Œ,n-t          ‰ ¦  «        r‰ d         D ]}|t	          |d¦  «        z   }Œ|rEg }g }|D ]<}	|	d         |vr0|                     |	d         ¦  «         |                     |	¦  «         Œ=|S |S )NÚcommonc                 ó.   •— i | ]}|‰d          |         “ŒS )Úvars© )Ú.0ÚvÚblocks     €ú9/usr/lib/python3/dist-packages/numpy/f2py/common_rules.pyú
<dictcomp>z$findcommonblocks.<locals>.<dictcomp>   s$   ø€ Ð8Ð8Ð8¨Q�Q˜˜fœ aÔ(Ð8Ð8Ð8ó    Úbodyé    )r   ÚitemsÚappendr   Úfindcommonblocks)
r   ÚtopÚretÚkeyÚvalueÚvars_ÚbÚtretÚnamesÚts
   `         r   r   r      s  ø€ Ø
€CÝ�ÑÔð /Ø œ/×/Ò/Ñ1Ô1ð 	,ð 	,‰JˆC�Ø8Ð8Ð8Ð8°%Ð8Ñ8Ô8ˆEØ�JŠJ˜˜U EÐ*Ñ+Ô+Ð+Ð+ð	,õ 
�‰Œð /Ø�v”ð 	/ð 	/ˆAØÕ(¨¨AÑ.Ô.Ñ.ˆCˆCØ
ð ØˆØˆØð 	ð 	ˆAØ�Œt˜5Ð Ð Ø—’˜Q˜qœTÑ"Ô"Ð"Ø—’˜A‘”�øØˆØ€Jr   c                 óp
  — g g dgdœ}dg}|fd„}dg}|fd„}dg}|fd„}dg}|fd„}	t          | ¦  «        D �]Â\  }
}}|
                     ¦   «         }g g }}|D ]B}t          ||         ¦  «        r|                     |¦  «         Œ-|                     |¦  «         ŒC|r@t	          d|
›d	d
                     |¦  «        ›dd
                     |¦  «        ›d�¦  «         n)t	          d|
›d	d
                     |¦  «        ›d�¦  «          |d|
z  ¦  «          |d¦  «         |D ] } |t          j        ||¦  «        ¦  «         Œ!|
dk    r" |dd
                     |¦  «        z  ¦  «         n$ |d|
›dd
                     |¦  «        ›�¦  «          |dd
                     |¦  «        z  ¦  «          |d¦  «          |d|
z  ¦  «         g }|D ]Þ}t          j	        ||         ¦  «        }t          j
        ||         ¦  «        }t          j        |         }t          j        |||         ¦  «        }|d         r|                     d|d         z  ¦  «         n|                     d¦  «         |d                              ¦   «         }|sd} |d|›d|d         ›d|›d|›d|›d�¦  «         Œß |d ¦  «         t          |¦  «        }d
                     d!„ |D ¦   «         ¦  «        } |d"|
›d#|›d$�¦  «          |d%¦  «         |D ]} |d&|
›d'|›d(�¦  «         Œ |d)¦  «         d*|v rd+}nd,} |d-|›d.|›d/|
                     ¦   «         ›d0d
                     d1gt!          |¦  «        z  ¦  «        ›d2�	¦  «          |d3|
z  ¦  «          |d4|›d.|›d/|
                     ¦   «         ›d5|
›d6�	¦  «          |d7¦  «          |d8|
›d9|
›d6�¦  «          |d:¦  «          |d;|
z  ¦  «          |d<¦  «         |
                     d*d=¦  «        } |	d>|z  ¦  «          |	d?¦  «         |D ]„} |	d@t          j        |||         ¦  «        z  ¦  «         t'          ||         ¦  «        rF||         dA         }t)          |t*          ¦  «        rd                     |¦  «        } |	dB|z  ¦  «         Œ… |	dC¦  «         |dD                              dE|
›dd
                     t-          dF„ ||¦  «        ¦  «        ›dG�¦  «         �ŒÄ||dH<   ||dI<   |dJ         |dK<   t!          |dD         ¦  «        dLk    rd|dD<   ||dJ         fS )MNz"COMMON blocks:\n")ÚcommonhooksÚinitcommonhooksÚdocsÚ c                 ó&   — |d         ›d| ›�|d<   d S )Nr   z
      r   ©ÚlineÚss     r   Úfaddzbuildhooks.<locals>.fadd4   s   € Ø!" 1¤   t tÐ,ˆˆ!‰ˆˆr   c                 ó&   — |d         ›d| ›�|d<   d S ©Nr   ú
r   r+   s     r   Úcaddzbuildhooks.<locals>.cadd8   ó   € Ø˜Qœ4˜4˜4  Ð&ˆˆ!‰ˆˆr   c                 ó&   — |d         ›d| ›�|d<   d S r0   r   r+   s     r   Úiaddzbuildhooks.<locals>.iadd<   r3   r   c                 ó&   — |d         ›d| ›�|d<   d S r0   r   r+   s     r   Údaddzbuildhooks.<locals>.dadd@   r3   r   z)		Constructing COMMON block support for "z	"...
		  ú,z
		  Hidden: r1   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}
};c                 ó   — g | ]}d |z   ‘ŒS )zchar *r   )r   r-   s     r   ú
<listcomp>zbuildhooks.<locals>.<listcomp>l   s   € Ð>Ð>Ð>° ¨1¡Ð>Ð>Ð>r   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.   Úchooksr2   Úihooksr5   Údocr7   ÚnameÚvnamesr   Ú
lower_nameÚhnamesÚinamesÚnÚidimsÚctÚelsizeÚatÚdmÚdmsÚinames1Úinames1_tpsrC   ÚtnamerE   s                               r   Ú
buildhooksrm   /   sú  € Ø°Ø)Ð*ð,ð ,€CàˆD€Eàð -ð -ð -ð -àˆT€Fàð 'ð 'ð 'ð 'àˆT€Fàð 'ð 'ð 'ð 'àˆ$€Càð 'ð 'ð 'ð 'å 0°Ñ 3Ô 3ð MYñ MYÑˆˆv�tØ—Z’Z‘\”\ˆ
Ø˜R�ˆØð 	!ð 	!ˆAÝ˜T !œWÑ%Ô%ð !Ø—’˜aÑ Ô Ð Ð à—’˜aÑ Ô Ð Ð Øð 	)ÝˆGØ���c—h’h˜vÑ&Ô&Ð&Ð&¨¯ª°Ñ(8Ô(8Ð(8Ð(8ð:ñ ;ô ;ð ;ð ;õ ˆGØ���c—h’h˜vÑ&Ô&Ð&Ð&ð(ñ )ô )ð )àˆÐ/°$Ñ6Ñ7Ô7Ð7ØˆÐ!Ñ"Ô"Ð"Øð 	4ð 	4ˆAØˆD•Ô)¨$°Ñ2Ô2Ñ3Ô3Ð3Ð3Ø�8ÒÐØˆD� §¢¨Ñ 0Ô 0Ñ1Ñ2Ô2Ð2Ð2àˆDˆD T T T¨3¯8ª8°FÑ+;Ô+;Ð+;Ð<Ñ=Ô=Ð=ØˆÐ! S§X¢X¨fÑ%5Ô%5Ñ6Ñ7Ô7Ð7ØˆˆW‰ŒˆØˆÐ6¸$Ñ?Ñ@Ô@Ð@ØˆØð 	5ð 	5ˆAÝÔ# D¨¤GÑ,Ô,ˆBÝÔ)¨$¨q¬'Ñ2Ô2ˆFÝÔ% bÔ)ˆBÝÔ% a¨¨a¬Ñ1Ô1ˆBØ�&Œzð !Ø—’˜V r¨&¤zÑ2Ñ3Ô3Ð3Ð3à—’˜RÑ Ô Ð Ø�V”*×"Ò"Ñ$Ô$ˆCØð Ø�ØˆDˆDØ�A�A�r˜&”z�z�z 3 3 3¨¨¨¨F¨F¨Fð4ñ 5ô 5ð 5ð 5àˆˆ^ÑÔÐÝ˜FÑ#Ô#ˆØ—h’hÐ>Ð>°gÐ>Ñ>Ô>Ñ?Ô?ˆØˆˆ°$°$°$¸¸¸ÐDÑEÔEÐEØˆÐÑÔÐØð 	Cð 	CˆAØˆDˆD¸¸¸¸q¸q¸qÐAÑBÔBÐBÐBØˆˆS‰	Œ	ˆ	Ø�*ÐÐØ ˆFˆFàˆFØˆˆØ��˜
˜
˜
 D§J¢J¡L¤L L LØ—’˜'˜¥S¨¡\¤\Ñ1Ñ2Ô2Ð2Ð2ð4ñ 	5ô 	5ð 	5ð 	ˆÐ/°$Ñ6Ñ7Ô7Ð7ØˆˆØ��˜
˜
˜
 D§J¢J¡L¤L L L°$°$°$ð8ñ 	9ô 	9ð 	9àˆˆU‰ŒˆØˆˆÈÈÈÈtÈtÈtÐTÑUÔUÐUØˆÐ.Ñ/Ô/Ð/ØˆÐOØññ 	ô 	ð 	àˆÐ Ñ!Ô!Ð!Ø—’˜S %Ñ(Ô(ˆØˆÐ8¸EÑBÑCÔCÐCØˆÐ#Ñ$Ô$Ð$Øð 	(ð 	(ˆAØˆDÐ+ÝÔ)¨!¨T°!¬WÑ5Ô5ñ7ñ 8ô 8ð 8å�t˜A”wÑÔð (Ø˜A”w˜v”�Ý˜d¥DÑ)Ô)ð +ØŸ9š9 T™?œ?�DØ��X Ñ&Ñ'Ô'Ð'øØˆÐ!Ñ"Ô"Ð"ØˆFŒ×ÒÐØ $   c§h¢h­sÐ3EÐ3EÀvÈuÑ/UÔ/UÑ&VÔ&VÐ&VÐ&VÐWñ	Yô 	Yð 	Yñ 	Yà€CˆÑØ#€CÐÑØ˜!”f€Cˆ
�OÝ
ˆ3ˆvŒ;ÑÔ˜1ÒÐØˆˆF‰Ø��a”ˆ=Ðr   N)r   )Ú__doc__r)   r   ÚversionÚf2py_versionÚauxfuncsr   r   r   r   r   r	   r
   Úcrackfortranr   r   rm   r   r   r   ú<module>rs      sÛ   ððð ð Ð Ð Ð Ð Ð ØÔ"€ðð ð ð ð ð ð ð ð ð ð ð ð ð ð Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø #Ð #Ð #Ð #Ð #Ð #ðð ð ð ð(fð fð fð fð fr   