
    G/Ph                     v    d Z ddlmZ ej        ZddlmZ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 )a5  
Build common block mechanism for 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.
   )__version__)hasbody	hascommonhasnoteisintent_hideoutmessgetuseblocks)	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     W/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numpy/f2py/common_rules.py
<dictcomp>z$findcommonblocks.<locals>.<dictcomp>   s$    888QQ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 	, 	,JC8888%888EJJUE*++++	, 
 /v 	/ 	/A(A...CC
  	 	At5  QqT"""AJr   c                 
   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             t          |           D ]} |d|             |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/|d0|
                                d1d
                    d2gt#          |          z            d3	            |d4|
z              |d5|d/|d0|
                                d6|
d7	            |d8            |d9|
d:|
d7            |d;            |d<|
z              |d=           |
                    d+d>          } |	d?|z              |	d@           |D ]} |	dAt          j        |||                   z             t)          ||                   rF||         dB         }t+          |t,                    rd                    |          } |	dC|z              |	dD           |dE                             dF|
dd
                    t/          dG ||                    dH           ||dI<   ||dJ<   |dK         |dL<   t#          |dE                   dMk    rd|dE<   ||dK         fS )NNz"COMMON blocks:\n")commonhooksinitcommonhooksdocs c                 &    |d         d| |d<   d S )Nr   z
      r   liness     r   faddzbuildhooks.<locals>.fadd/   s    !"1tt,!r   c                 &    |d         d| |d<   d S Nr   
r   r,   s     r   caddzbuildhooks.<locals>.cadd3       Q444&!r   c                 &    |d         d| |d<   d S r1   r   r,   s     r   iaddzbuildhooks.<locals>.iadd7   r4   r   c                 &    |d         d| |d<   d S r1   r   r,   s     r   daddzbuildhooks.<locals>.dadd;   r4   r   z)		Constructing COMMON block support for "z	"...
		  ,z
		  Hidden: r2   z subroutine f2pyinit%s(setupfunc)zuse 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>i   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	   r   var2fixfortranr
   getctype
get_elsize
c2capi_map
getarrdimsstripr   upperlenreplacegetarrdocsignr   
isinstancelistmap)mr   fwrapr/   chooksr3   ihooksr6   docr8   namevnamesr   
lower_namehnamesinamesnusenameidimsctelsizeatdmdmsinames1inames1_tpsrD   tnamerF   s                                r   
buildhooksro   *   s+   )*, ,CDE - - - -TF ' ' ' 'TF ' ' ' '$C ' ' ' ' 0 3 3 OY OYvtZZ\\
R 	! 	!AT!W%% !a    a     	)Gchhv&&&&(8(8(8(8: ; ; ; ; Gchhv&&&&( ) ) )/$6777#A 	# 	#GD!!!""""!""" 	4 	4AD)$2233338D 0 012222DDTTT388F+;+;+;<===!SXXf%5%56777W6$?@@@ 	5 	5A#DG,,B)$q'22F%b)B%aa11B&z !Vr&z23333R   V*""$$C DDAAr&zzz333FFF4 5 5 5 5^F##hh>>g>>>??$$$DEEE 	C 	CADDqqqABBBBS			* FFF


DJJLLLL'S\\122224 	5 	5 	5 	/$6777


DJJLLLL$$$8 	9 	9 	9UtttTUUU.///O 	 	 	 !!!S%((8EBCCC#$$$ 	( 	(AD+)!T!W557 8 8 8tAw (AwvdD)) +99T??DX&'''!"""F $chhs3E3Evu/U/U&V&V&V&VW	Y 	Y 	Y 	YC#C!fC
O
3v;1Fa=r   N)r   )__doc__r*   r   versionf2py_versionauxfuncsr   r   r   r   r   r	   r
   r   crackfortranr   r   ro   r   r   r   <module>ru      s   	 	      "                            # # # # # #   (h h h h hr   