Your IP : 216.73.216.213


Current Path : /opt/alt/python35/lib64/python3.5/site-packages/numpy/f2py/__pycache__/
Upload File :
Current File : //opt/alt/python35/lib64/python3.5/site-packages/numpy/f2py/__pycache__/cb_rules.cpython-35.pyc



(��^�V�A@s6dZddlmZmZmZddlmZddlmZm	Z	m
Z
mZmZm
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%ddlm&Z&ej'Z(ddd	d
ddd
gddddddddddiZ)dddddddddd dd!dd"dd#dd$dd%dd&dd'd(d)dd*dd+dd,dd-didd.dd/d%d0dgddd1dd2dd d3d!gd"dd4dd#gd$dd5dd6dd&d7d'dd)dd8d9d:d;d<d=d>d?d@ddAddBdd*dCd+dDd,dEd-dFdGe
dHe e
�diiddId%e	dJidKe	dLigddMe	d
idNgd1dOdPeee e�e e��ide	dQiddRd#dSd!dTd%e	dUidVe	dWigddMe	d
idXdYgd1dZdPeidd[d$d\d"d]dd^d%e	dJid_e	d`igd1daddMe	d
idXdNdbgdPeid<dcd,dde
dHigd@dedPeidPed1dZigZ*d:eee�dfid8eee�dfid<edcid+eee�dge
dHigid*eee�dge
dHigid,eddee
e�dHee
e�dhigidAeee�diidBeee�diidjdi	deee�dkeee e��dledmedkid#eee�dneee e��doednednid!eee�dbeee e��dpedpedbid2edqid4edrid5edsiide e�dtidueeee%dv��did%e	dwiedxiee	ee e�e��dyiee	ee e�e e���dziee	eee��d{iee	eee e���d|igdedMdNgie	d
igdPeided}ied~igdedied�iedbigdPeee�d�did%e	d�id�e	d�igddbdYe	d
idXgdPeee�ide	d�ied�ied�igded�ied�igdPeee�d�didd�d&d�dPed�dide	d�ied�e e�d�id�gdPeeee!ee��d�did%e	dwid�ed�id�e	d�igdd�edbigdPeee�id@didPeig
Z+ia,d�d��Z-d�d��Z.d�S)�aK

Build call-back 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/07/20 11:27:58 $
Pearu Peterson

�)�division�absolute_import�print_function�)�__version__)�
applyrules�	debugcapi�
dictappend�errmess�getargs�hasnote�isarray�	iscomplex�iscomplexarray�iscomplexfunction�
isfunction�
isintent_c�
isintent_hide�isintent_in�isintent_inout�isintent_nothide�isintent_out�
isoptional�
isrequired�isscalar�isstring�isstringfunction�issubroutine�l_and�l_not�l_or�outmess�replace�
stripcomma�throw_error)�cfuncs�
cbtypedefszPtypedef #rctype#(*#name#_typedef)(#optargs_td##args_td##strarglens_td##noargs#);�bodya�

#begintitle#
PyObject *#name#_capi = NULL;/*was Py_None*/
PyTupleObject *#name#_args_capi = NULL;
int #name#_nofargs = 0;
jmp_buf #name#_jmpbuf;
/*typedef #rctype#(*#name#_typedef)(#optargs_td##args_td##strarglens_td##noargs#);*/
#static# #rctype# #callbackname# (#optargs##args##strarglens##noargs#) {
	PyTupleObject *capi_arglist = #name#_args_capi;
	PyObject *capi_return = NULL;
	PyObject *capi_tmp = NULL;
	int capi_j,capi_i = 0;
	int capi_longjmp_ok = 1;
#decl#
#ifdef F2PY_REPORT_ATEXIT
f2py_cb_start_clock();
#endif
	CFUNCSMESS("cb:Call-back function #name# (maxnofargs=#maxnofargs#(-#nofoptargs#))\n");
	CFUNCSMESSPY("cb:#name#_capi=",#name#_capi);
	if (#name#_capi==NULL) {
		capi_longjmp_ok = 0;
		#name#_capi = PyObject_GetAttrString(#modulename#_module,"#argname#");
	}
	if (#name#_capi==NULL) {
		PyErr_SetString(#modulename#_error,"cb: Callback #argname# not defined (as an argument or module #modulename# attribute).\n");
		goto capi_fail;
	}
	if (F2PyCapsule_Check(#name#_capi)) {
	#name#_typedef #name#_cptr;
	#name#_cptr = F2PyCapsule_AsVoidPtr(#name#_capi);
	#returncptr#(*#name#_cptr)(#optargs_nm##args_nm##strarglens_nm#);
	#return#
	}
	if (capi_arglist==NULL) {
		capi_longjmp_ok = 0;
		capi_tmp = PyObject_GetAttrString(#modulename#_module,"#argname#_extra_args");
		if (capi_tmp) {
			capi_arglist = (PyTupleObject *)PySequence_Tuple(capi_tmp);
			if (capi_arglist==NULL) {
				PyErr_SetString(#modulename#_error,"Failed to convert #modulename#.#argname#_extra_args to tuple.\n");
				goto capi_fail;
			}
		} else {
			PyErr_Clear();
			capi_arglist = (PyTupleObject *)Py_BuildValue("()");
		}
	}
	if (capi_arglist == NULL) {
		PyErr_SetString(#modulename#_error,"Callback #argname# argument list is not set.\n");
		goto capi_fail;
	}
#setdims#
#pyobjfrom#
	CFUNCSMESSPY("cb:capi_arglist=",capi_arglist);
	CFUNCSMESS("cb:Call-back calling Python function #argname#.\n");
#ifdef F2PY_REPORT_ATEXIT
f2py_cb_start_call_clock();
#endif
	capi_return = PyObject_CallObject(#name#_capi,(PyObject *)capi_arglist);
#ifdef F2PY_REPORT_ATEXIT
f2py_cb_stop_call_clock();
#endif
	CFUNCSMESSPY("cb:capi_return=",capi_return);
	if (capi_return == NULL) {
		fprintf(stderr,"capi_return is NULL\n");
		goto capi_fail;
	}
	if (capi_return == Py_None) {
		Py_DECREF(capi_return);
		capi_return = Py_BuildValue("()");
	}
	else if (!PyTuple_Check(capi_return)) {
		capi_return = Py_BuildValue("(N)",capi_return);
	}
	capi_j = PyTuple_Size(capi_return);
	capi_i = 0;
#frompyobj#
	CFUNCSMESS("cb:#name#:successful\n");
	Py_DECREF(capi_return);
#ifdef F2PY_REPORT_ATEXIT
f2py_cb_stop_clock();
#endif
	goto capi_return_pt;
capi_fail:
	fprintf(stderr,"Call-back #name# failed.\n");
	Py_XDECREF(capi_return);
	if (capi_longjmp_ok)
		longjmp(#name#_jmpbuf,-1);
capi_return_pt:
	;
#return#
}
#endtitle#
�needzsetjmp.hZ
CFUNCSMESS�
maxnofargsz#maxnofargs#�
nofoptargsz#nofoptargs#�docstrzC	def #argname#(#docsignature#): return #docreturn#\n\
#docstrsigns#�latexdocstrzc
{{}\verb@def #argname#(#latexdocsignature#): return #docreturn#@{}}
#routnote#

#latexdocstrsigns#�docstrshortz1def #argname#(#docsignature#): return #docreturn#Z
separatorsfor�decl�
�args�,�optargs�Z	pyobjfromZfreemem�args_td�
optargs_td�args_nm�
optargs_nmZ	frompyobjZsetdims�docstrsignsz\n"
"�latexdocstrsignsZlatexdocstrreqZlatexdocstroptZlatexdocstroutZlatexdocstrcbsz/*decl*/z
/*pyobjfrom*/z
/*frompyobj*/�return�
strarglensz/*freemem*/Z
strarglens_tdZ
strarglens_nm�noargsz/*setdims*/�	docstrreqz	Required arguments:�	docstroptz	Optional arguments:�	docstroutz	Return objects:�	docstrcbsz	Call-back functions:�	docreturn�docsign�
docsignoptz\noindent Required arguments:z\noindent Optional arguments:z\noindent Return objects:z\noindent Call-back functions:Zroutnotez
--- #note#z	#ctype# return_value;z)	CFUNCSMESS("cb:Getting return_value->");z�	if (capi_j>capi_i)
		GETSCALARFROMPYTUPLE(capi_return,capi_i++,&return_value,#ctype#,"#ctype#_from_pyobj failed in converting return_value of call-back function #name# to C #ctype#\n");z5	fprintf(stderr,"#showvalueformat#.\n",return_value);z#ctype#_from_pyobjZGETSCALARFROMPYTUPLEz	return return_value;�_checkz?	fprintf(stderr,"debug-capi:cb:#name#:%d:\n",return_value_len);z)#ctype# return_value,int return_value_lenzreturn_value,&return_value_lenz#ctype# ,intz+	CFUNCSMESS("cb:Getting return_value->\"");z\	if (capi_j>capi_i)
		GETSTRFROMPYTUPLE(capi_return,capi_i++,return_value,return_value_len);z7	fprintf(stderr,"#showvalueformat#\".\n",return_value);zstring.hZGETSTRFROMPYTUPLEzreturn;z<
#ifndef F2PY_CB_RETURNCOMPLEX
#ctype# *return_value
#endif
z3
#ifndef F2PY_CB_RETURNCOMPLEX
return_value
#endif
z0
#ifndef F2PY_CB_RETURNCOMPLEX
#ctype# *
#endif
z<
#ifdef F2PY_CB_RETURNCOMPLEX
	#ctype# return_value;
#endif
a�	if (capi_j>capi_i)
#ifdef F2PY_CB_RETURNCOMPLEX
		GETSCALARFROMPYTUPLE(capi_return,capi_i++,&return_value,#ctype#,"#ctype#_from_pyobj failed in converting return_value of call-back function #name# to C #ctype#\n");
#else
		GETSCALARFROMPYTUPLE(capi_return,capi_i++,return_value,#ctype#,"#ctype#_from_pyobj failed in converting return_value of call-back function #name# to C #ctype#\n");
#endif
z�
#ifdef F2PY_CB_RETURNCOMPLEX
	fprintf(stderr,"#showvalueformat#.\n",(return_value).r,(return_value).i);
#else
	fprintf(stderr,"#showvalueformat#.\n",(*return_value).r,(*return_value).i);
#endif

zJ
#ifdef F2PY_CB_RETURNCOMPLEX
	return return_value;
#else
	return;
#endif
z#ctype#z		#pydocsignout#z"\item[]{{}\verb@#pydocsignout#@{}}z#rname#,z
		#pydocsign#z\item[]{{}\verb@#pydocsign#@{}}z--- See above.z
#varname#,Zdependz#ctype# #varname_i#z#ctype# *#varname_i#_cb_capiz#ctype# *#varname_i#z#varname_i#z#varname_i#_cb_capiz	#ctype# *z,int #varname_i#_cb_lenz,intz,#varname_i#_cb_lenz,	#ctype# #varname_i#=(*#varname_i#_cb_capi);�errorz8intent(c,out) is forbidden for callback scalar argumentsz&	CFUNCSMESS("cb:Getting #varname#->");z�	if (capi_j>capi_i)
		GETSCALARFROMPYTUPLE(capi_return,capi_i++,#varname_i#_cb_capi,#ctype#,"#ctype#_from_pyobj failed in converting argument #varname# of call-back function #name# to C #ctype#\n");z4	fprintf(stderr,"#showvalueformat#.\n",#varname_i#);z=	fprintf(stderr,"#showvalueformat#.\n",*#varname_i#_cb_capi);zH	fprintf(stderr,"#showvalueformat#.\n",(#varname_i#).r,(#varname_i#).i);zZ	fprintf(stderr,"#showvalueformat#.\n",(*#varname_i#_cb_capi).r,(*#varname_i#_cb_capi).i);z�	if (#name#_nofargs>capi_i)
		if (PyTuple_SetItem((PyObject *)capi_arglist,capi_i++,pyobj_from_#ctype#1(#varname_i#)))
			goto capi_fail;z�	if (#name#_nofargs>capi_i)
		if (PyTuple_SetItem((PyObject *)capi_arglist,capi_i++,pyarr_from_p_#ctype#1(#varname_i#_cb_capi)))
			goto capi_fail;zpyobj_from_#ctype#1zpyarr_from_p_#ctype#1�	_optionalz(	CFUNCSMESS("cb:Getting #varname#->\"");z]	if (capi_j>capi_i)
		GETSTRFROMPYTUPLE(capi_return,capi_i++,#varname_i#,#varname_i#_cb_len);zM	fprintf(stderr,"#showvalueformat#\":%d:.\n",#varname_i#,#varname_i#_cb_len);zf	fprintf(stderr,"debug-capi:cb:#varname#=\"#showvalueformat#\":%d:\n",#varname_i#,#varname_i#_cb_len);z�	if (#name#_nofargs>capi_i)
		if (PyTuple_SetItem((PyObject *)capi_arglist,capi_i++,pyobj_from_#ctype#1size(#varname_i#,#varname_i#_cb_len)))
			goto capi_fail;z�	if (#name#_nofargs>capi_i) {
		int #varname_i#_cb_dims[] = {#varname_i#_cb_len};
		if (PyTuple_SetItem((PyObject *)capi_arglist,capi_i++,pyarr_from_p_#ctype#1(#varname_i#,#varname_i#_cb_dims)))
			goto capi_fail;
	}zpyobj_from_#ctype#1sizez3	npy_intp #varname_i#_Dims[#rank#] = {#rank*[-1]#};z
	#cbsetdims#;�_dependz-	fprintf(stderr,"debug-capi:cb:#varname#\n");z�	if (#name#_nofargs>capi_i) {
		PyArrayObject *tmp_arr = (PyArrayObject *)PyArray_New(&PyArray_Type,#rank#,#varname_i#_Dims,#atype#,NULL,(char*)#varname_i#,0,NPY_ARRAY_CARRAY,NULL); /*XXX: Hmm, what will destroy this array??? */
z�	if (#name#_nofargs>capi_i) {
		PyArrayObject *tmp_arr = (PyArrayObject *)PyArray_New(&PyArray_Type,#rank#,#varname_i#_Dims,#atype#,NULL,(char*)#varname_i#,0,NPY_ARRAY_FARRAY,NULL); /*XXX: Hmm, what will destroy this array??? */
z�
		if (tmp_arr==NULL)
			goto capi_fail;
		if (PyTuple_SetItem((PyObject *)capi_arglist,capi_i++,(PyObject *)tmp_arr))
			goto capi_fail;
}z�	if (capi_j>capi_i) {
		PyArrayObject *rv_cb_arr = NULL;
		if ((capi_tmp = PyTuple_GetItem(capi_return,capi_i++))==NULL) goto capi_fail;
		rv_cb_arr =  array_from_pyobj(#atype#,#varname_i#_Dims,#rank#,F2PY_INTENT_INz|F2PY_INTENT_Cz�,capi_tmp);
		if (rv_cb_arr == NULL) {
			fprintf(stderr,"rv_cb_arr is NULL\n");
			goto capi_fail;
		}
		MEMCOPY(#varname_i#,PyArray_DATA(rv_cb_arr),PyArray_NBYTES(rv_cb_arr));
		if (capi_tmp != (PyObject *)rv_cb_arr) {
			Py_DECREF(rv_cb_arr);
		}
	}z	fprintf(stderr,"<-.\n");ZMEMCOPYcCsxgt|d<xc|dD]W}|ddkrx>|dD]2}|rZt||d�q:td|d�q:WqWdS)N�namer'�blockZ	interfacezwarning: empty body for %s
)�cb_map�
buildcallbackr
)�mZbi�b�rN�F/opt/alt/python35/lib64/python3.5/site-packages/numpy/f2py/cb_rules.py�buildcallbacks�srPcCs�ddlm}td|d|f�t|�\}}||_|d}|j||�}ti|�}t|j|d|dg�xWt	D]O}d|kr�|d|�s�d|kr�t
|||�}	t||	�}q�Wi}
x�t|�D]�\}}|j|||d|�}||
|<x�t
D]�}d|krHq3d	|krgt||�rgq3d|kr�|d||�s�d|kr3t
||||�}	t||	�}d
|kr3Pq3Wq�Wx�|D]�}|
|}x�t
D]�}d|krq�d	|ks�d	|kr+t||�r+q�d|krK|d||�sWd|kr�t
||||�}	t||	�}d
|kr�Pq�Wq�Wx�|D]�}|
|}x�t
D]�}d|kr�q�d	|kr�q�d|kr�|d||�s�d|kr�t
||||�}	t||	�}d
|kr�Pq�Wq�Wd|kr�d|kr�t|dt�r�|dd
g|d<|dd
g|d<|dd
g|d<t|dt�r�ttdd|di��|d<ttdd|di��}
|
dkr*ttdd|di��|d<n#tdd|dd|
i�|d<|djdd�|d<|djdd�|d<g|d<g|d<x�d d!d"d#gD]�}||kr�t||t�r�|d|||d<d$|}||kr�t||t�r�|d||d%d�d&g||dd�d'g|d<q�Wd|krzd|d<d|d(<d|d)<|jd�p�|jd�p�|jd*�s�d+|d,<t
t|�}	|	d-tj|d<t|	d.t�r�|	d.g|	d.<d.|kr@x8tjj�D]'}||d.kr|	d.j|�qW|	d/tj|dd0<|	d.j|dd0�|	d.tj|d<d1|	d1d2|	d2d3|	d3d4|	d4d5|d5i|j|d<td6|	d7�dS)8Nr)�	capi_mapsz/	Constructing call-back function "cb_%s_in_%s"
rH�varsrD�indexrGrF�_breakr0r2z(
#ifndef F2PY_CB_RETURNCOMPLEX
,
#endif
r7r5rAz#docreturn#z#docsignopt#rCr3z	#docsign#rBZdocsignaturez#docsign#[#docsignopt#]�_z\_Zlatexdocsignaturer1z, r8r9r=r>r?r@Zlatexrz\begin{description}z\end{description}r4r6r;�voidr<r'r(r&Z_typedefr)r*r+r,�argnamez	  %s
r-)r3rQr!r�depargsZcb_routsign2mapr	rJ�append�
cb_rout_rulesr�	enumerateZcb_sign2map�cb_arg_rulesrr�
isinstance�listr#r"�get�cb_routine_rulesr%�	callbacks�strZtypedefs�keysZtypedefs_generatedZneedsZlcb2_map)ZroutZumrQr0rX�varZvrdZrd�r�arZsavevrd�i�ar2�k�trNrNrOrK�s�	

(

,	


(,	


,	 	#



2


-




rKN)/�__doc__�
__future__rrrr3rZauxfuncsrrr	r
rrr
rrrrrrrrrrrrrrrrrrr r!r"r#r$r%�versionZf2py_versionr`rZr\rJrPrKrNrNrNrO�<module>sn�	]		!											!