
    thh                     n    d Z ddlmZ ej        ZddlmZmZ ddlmZm	Z	m
Z
mZmZ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__)	capi_maps	func2subr)getuseblockshasbody	hascommonhasnoteisintent_hideoutmess)	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     N/var/www/histauto/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|
 d           t          |           D ]} |d|             |d           |D ] } |t          j        ||                     !|
dk    r" |dd
                    |                      n$ |d|
 dd
                    |                       |dd
                    |           d            |d            |d|
z             g }|D ]}t          j
        ||                   }t          j        ||                   }t          j        |         }t          j        |||                   }|d         r |                    d|d          d           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/|d0|d1|
                                d2d
                    d3gt#          |          z            d4	            |d5|
z              |d6|d0|d1|
                                d7|
d8	            |d9            |d:|
 d;|
 d8            |d<            |d=|
 d>            |d?           |
                    d,d@          } |	dA|z              |	dB           |D ]} |	dCt          j        |||                   z             t)          ||                   rF||         dD         }t+          |t,                    rd                    |          } |	dE|             |	dF           |dG                             dH|
 dd
                    t/          dI ||                     dJ           ||dK<   ||dL<   |dM         |dN<   t#          |dG                   dOk    rd|dG<   ||dM         fS )PNz"COMMON blocks:\n")commonhooksinitcommonhooksdocs c                 &    |d          d|  |d<   d S )Nr   z
      r   liness     r   faddzbuildhooks.<locals>.fadd-   s!    A$&&&&!r   c                 &    |d          d|  |d<   d S Nr   
r   r,   s     r   caddzbuildhooks.<locals>.cadd1   !    A$  $  !r   c                 &    |d          d|  |d<   d S r1   r   r,   s     r   iaddzbuildhooks.<locals>.iadd5   r4   r   c                 &    |d          d|  |d<   d S r1   r   r,   s     r   daddzbuildhooks.<locals>.dadd9   r4   r   z)		Constructing COMMON block support for "z	"...
		  ,z
		  Hidden: r2   zsubroutine f2pyinitz(setupfunc)zuse zexternal setupfunc_BLNK_zcommon zcommon /z/ zcall setupfunc()zend
z'static FortranDataDef f2py_%s_def[] = {dims(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>g   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, "z", tmp) == -1) return NULL;z	Py_DECREF(tmp);z\_z&\subsection{Common block \texttt{%s}}
z\begin{description}z\item[]{{}\verb@%s@{}}notez--- z\end{description}r)   z"	/c                     | |z   S )Nr   )r   ds     r   <lambda>zbuildhooks.<locals>.<lambda>   s
    a!e 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_tpsrE   tnamerG   s                                r   
buildhooksrp   (   sL   )*, ,CDE ' ' ' 'TF ! ! ! !TF ! ! ! !$C ! ! ! ! 0 3 3 NU NUvtZZ\\
R 	! 	!AT!W%% !a    a     	)Gchhv&&&&(8(8(8(8: ; ; ; ; Gchhv&&&&( ) ) )44444555#A 	# 	#GD!!!""""!""" 	4 	4AD)$2233338D-388F++--....D6D66CHHV$4$4667772sxx//222333W6$?@@@ 	5 	5A#DG,,B)$q'22F%b)B%aa11B&z !.F...////R   V*""$$C DDAAr&zzz333FFF4 5 5 5 5^F##hh>>g>>>??$$$DEEE 	= 	=AD;4;;q;;;<<<<S			* FFF


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


DJJLLLL$$$8 	9 	9 	9UNNNdNNNOOO.///RRRRSSS !!!S%((8EBCCC#$$$ 	$ 	$AD+)!T!W557 8 8 8tAw $AwvdD)) +99T??D]D]]###!"""FSDSSCHHS););VU%K%KLLSSS	U 	U 	U 	UC#C!fC
O
3v;1Fa=r   N)r   )__doc__r*   r   versionf2py_versionr   r   auxfuncsr   r   r   r	   r
   r   crackfortranr   r   rp   r   r   r   <module>rv      s   	 	      " " " " " " " " " W W W W W W W W W W W W W W W W # # # # # #   (g g g g gr   