HOME


sh-3ll 1.0
DIR:/usr/local/lib64/python3.6/site-packages/numpy/f2py/__pycache__/
Upload File :
Current File : //usr/local/lib64/python3.6/site-packages/numpy/f2py/__pycache__/common_rules.cpython-36.pyc
3

���hg�@sxdZddd�ZddlmZejZddlmZmZmZm	Z	m
Z
ddlmZddlmZddl
mZdd	d
�Zdd�Zd
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

z$Revision: 1.19 $�
�)�__version__)�hasbody�	hascommon�hasnote�
isintent_hide�outmess)�	capi_maps)�	func2subr)�	rmbadnamec
s�g}t��rJxd�dj�D]*\}}�fdd�|D�}|j|||f�qWn(t��rrx�dD]}|t|d�}q\W|r�g}g}x0|D](}	|	d|kr�|j|	d�|j|	�q�W|S|S)N�commoncsi|]}�d||�qS)�vars�)�.0�v)�blockr�8/tmp/pip-build-5_djhm0z/numpy/numpy/f2py/common_rules.py�
<dictcomp>!sz$findcommonblocks.<locals>.<dictcomp>�body�)r�items�appendr�findcommonblocks)
r�top�ret�key�valueZvars_�bZtret�names�tr)rrrs"
rc
Cs�ggdgd�}dg}|fdd�}dg}|fdd�}dg}|fdd	�}dg}|fd
d�}	�xXt|�D�]J\}
}}|
j�}
gg}}x.|D]&}t||�r�|j|�q�|j|�q�W|r�td|
d
j|�d
j|�f�ntd|
d
j|�f�|d|
�|d�x|D]}|tj||���qW|
dk�r<|dd
j|��n|d|
d
j|�f�|dd
j|��|d�|d|
�g}x�|D]�}tj	||�}tj
|}tj|||�}|d�r�|jd|d�n
|jd�|dj�}|�s�d}|d||d||f��q�W|d�t
|�}d
jdd�|D��}|d|
|f�|d �x|D]}|d!|
|f��qLW|d"�d#|
k�r~d$}nd%}|d&||
|
j�d
jd'gt|��f�|d(|
�|d)||
|
j�|
f�|d*�|d+|
|
f�|d,|
�|d-�|
jd#d.�}|	d/|�|	d0�xb|D]Z}|	d1tj|||��t||��r ||d2}t|t��rld3j|�}|	d4|��q W|	d5�|d6jd7|
d
jtd8d9�||��f�qbW||d:<||d;<|d<|d=<t|d6�d>k�r�d|d6<||d<fS)?Nz"COMMON blocks:\n")�commonhooks�initcommonhooks�docs�cSsd|d|f|d<dS)Nz%s
      %srr)�line�srrr�fadd6szbuildhooks.<locals>.faddcSsd|d|f|d<dS)Nz%s
%srr)r$r%rrr�cadd:szbuildhooks.<locals>.caddcSsd|d|f|d<dS)Nz%s
%srr)r$r%rrr�iadd>szbuildhooks.<locals>.iaddcSsd|d|f|d<dS)Nz%s
%srr)r$r%rrr�daddBszbuildhooks.<locals>.daddzF		Constructing COMMON block support for "%s"...
		  %s
		  Hidden: %s
�,z7		Constructing COMMON block support for "%s"...
		  %s
z subroutine f2pyinit%s(setupfunc)zexternal setupfuncZ_BLNK_z	common %szcommon /%s/ %szcall setupfunc(%s)zend
z'static FortranDataDef f2py_%s_def[] = {Zdimsz(%s)z-1z	{"%s",%s,{{%s}},%s},Zrankz
	{NULL}
};cSsg|]}d|�qS)zchar *r)rr%rrr�
<listcomp>lszbuildhooks.<locals>.<listcomp>zstatic void f2py_setup_%s(%s) {z	int i_f2py=0;z!	f2py_%s_def[i_f2py++].data = %s;�}�_Z	F_FUNC_US�F_FUNCz3extern void %s(f2pyinit%s,F2PYINIT%s)(void(*)(%s));zchar*z static void f2py_init_%s(void) {z*	%s(f2pyinit%s,F2PYINIT%s)(f2py_setup_%s);z}
z5	tmp = PyFortranObject_New(f2py_%s_def,f2py_init_%s);z&	F2PyDict_SetItemString(d, "%s", tmp);z	Py_DECREF(tmp);z\_z&\subsection{Common block \texttt{%s}}
z\begin{description}z\item[]{{}\verb@%s@{}}�note�
z--- %sz\end{description}r"z"	/%s/ %s\n"cSs||S)Nr)r�drrr�<lambda>�szbuildhooks.<locals>.<lambda>r r!rZlatexdocr)r�lowerrrr�joinr
Zvar2fixfortranr	ZgetctypeZ
c2capi_mapZ
getarrdims�stripr�upper�len�replaceZ
getarrdocsignr�
isinstance�list�map)�mrZfwrapr&Zchooksr'Zihooksr(�docr)�nameZvnamesr
Z
lower_nameZhnamesZinames�nZidims�ctZat�dmZdmsZinames1Zinames1_tpsr.�tnamer/rrr�
buildhooks1s�













$rCN���)r)�__doc__rr#�versionZf2py_versionZauxfuncsrrrrrr	r
ZcrackfortranrrrCrrrr�<module>s