
    Phv                     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              bC:\Users\daisl\Desktop\realtime-object-detection\venv\Lib\site-packages\numpy/f2py/common_rules.pyr   r      s    
C///1JC278%QQfa((%E8JJUE*+ 2 
vA(A..C 
At5 QqT"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       Q4&!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   /   sq   )*,CDE -TF 'TF '$C ' 0 3vtZZ\
RAT!W%a a 	 
 chhv&(8: ; chhv&( )/$67!"A))$23 8 012T388F+;<=!SXXf%567W6$?@A##DG,B))$q'2F%%b)B%%aa1B&zVr&z23R V*""$Cr&z3F4 5  	^F#hhg>g1g>?$DEAqAB S	* FF
DJJL'S\124 	5 	/$67
DJJL$8 	9UtTU./O 	 !S%(8EBC#$A+))!T!W57 8tAwAwvdD)99T?DX&'  	!"F $chhs3Evu/U&VW	YY !4\  C#C!fC
O
3v;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+   