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__/cb_rules.cpython-36.pyc
3

���h=Y�"@s�dZddlmZddlmZmZmZmZmZm	Z	m
Z
mZmZm
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!ddlm"Z"ej#Z$ddddgd	d
ddd
d�Z%dddddddddddddddddd�dddgddddgddgddddddddddddddddd e	d!ee	�did"�d#ed$id%ed&igd'edid(gd)eeee�ee
��d*�ed+id,d-d.ed/id0ed1igd'edid2d3gd4ed5�d6d7d8d9ed$id:ed;igd<d'edid2d(d=ge
d>�d?d@e	d!igdAedB�ed4dC�gZ&eee�dDieee�dDied?ieee�dEe	d!igieee�dEe	d!igied@ee	e�d!ee	e�dFigieee�dGieee�dGiddH�	eee�dIeeee��dJe
dKedIieee�dLeeee��dMe
dLedLieee�d=eeee��dNe
dNed=iedOiedPiedQidR�ee�dSieeee!dT��diedUiedVieeeee�e��dWieeeee�ee���dXieeeee��dYieeeeee���dZiged'd(giediged[�ed\ied]iged^ied_ied=igeee�dd`�edaidbedcigd=d3edid2geee�dd�edeiedfiedgigedhied_igeee�dd`�didje
ddk�edliedmee�dnidogee
eeee��ddp�edUidqedridsedtigdued=igee
e�dd�dGedv�g
Z'iZ(dwdx�Z)dydz�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

�)�__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)�cfuncszPtypedef #rctype#(*#name#_typedef)(#optargs_td##args_td##strarglens_td##noargs#);a�

#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;
	PyObject *capi_arglist_list = 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#
#ifdef PYPY_VERSION
#define CAPI_ARGLIST_SETITEM(idx, value) PyList_SetItem((PyObject *)capi_arglist_list, idx, value)
	capi_arglist_list = PySequence_List(capi_arglist);
	if (capi_arglist_list == NULL) goto capi_fail;
#else
#define CAPI_ARGLIST_SETITEM(idx, value) PyTuple_SetItem((PyObject *)capi_arglist, idx, value)
#endif
#pyobjfrom#
#undef CAPI_ARGLIST_SETITEM
#ifdef PYPY_VERSION
	CFUNCSMESSPY("cb:capi_arglist=",capi_arglist_list);
#else
	CFUNCSMESSPY("cb:capi_arglist=",capi_arglist);
#endif
	CFUNCSMESS("cb:Call-back calling Python function #argname#.\n");
#ifdef F2PY_REPORT_ATEXIT
f2py_cb_start_call_clock();
#endif
#ifdef PYPY_VERSION
	capi_return = PyObject_CallObject(#name#_capi,(PyObject *)capi_arglist_list);
	Py_DECREF(capi_arglist_list);
	capi_arglist_list = NULL;
#else
	capi_return = PyObject_CallObject(#name#_capi,(PyObject *)capi_arglist);
#endif
#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);
	Py_XDECREF(capi_arglist_list);
	if (capi_longjmp_ok)
		longjmp(#name#_jmpbuf,-1);
capi_return_pt:
	;
#return#
}
#endtitle#
zsetjmp.hZ
CFUNCSMESSz#maxnofargs#z#nofoptargs#zC	def #argname#(#docsignature#): return #docreturn#\n\
#docstrsigns#zc
{{}\verb@def #argname#(#latexdocsignature#): return #docreturn#@{}}
#routnote#

#latexdocstrsigns#z1def #argname#(#docsignature#): return #docreturn#)�
cbtypedefs�body�need�
maxnofargs�
nofoptargs�docstr�latexdocstr�docstrshort�
�,�z\n"
")�decl�args�optargs�	pyobjfrom�freemem�args_td�
optargs_td�args_nm�
optargs_nm�	frompyobj�setdims�docstrsigns�latexdocstrsigns�latexdocstrreq�latexdocstropt�latexdocstrout�latexdocstrcbsz/*decl*/z
/*pyobjfrom*/z
/*frompyobj*/z/*freemem*/z/*setdims*/z	Required arguments:z	Optional arguments:z	Return objects:z	Call-back functions:z\noindent Required arguments:z\noindent Optional arguments:z\noindent Return objects:z\noindent Call-back functions:z
--- #note#)Z
separatorsforr-r0r6r.r/�return�
strarglensr1r2r3�
strarglens_tdr4r5�
strarglens_nm�noargsr7r8r9�	docstrreq�	docstropt�	docstrout�	docstrcbs�	docreturn�docsign�
docsignoptr:r;r<r=Zroutnotez	#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;)r-r6r$r>�_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;)r0r.r4r2r6r$r>rJz<
#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#)r/r5r3r-r6r>r$rJz		#pydocsignout#z"\item[]{{}\verb@#pydocsignout#@{}}z#rname#,)rEr<rGrJ)rJr>z
		#pydocsign#z\item[]{{}\verb@#pydocsign#@{}}z--- See above.z
#varname#,)	rDrCrEr;r:r<rHrIZdependz#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_len)r.r4r2r?r@rAz,	#ctype# #varname_i#=(*#varname_i#_cb_capi);z8intent(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);)r-�errorr6r$rJzu	if (#name#_nofargs>capi_i)
		if (CAPI_ARGLIST_SETITEM(capi_i++,pyobj_from_#ctype#1(#varname_i#)))
			goto capi_fail;z	if (#name#_nofargs>capi_i)
		if (CAPI_ARGLIST_SETITEM(capi_i++,pyarr_from_p_#ctype#1(#varname_i#_cb_capi)))
			goto capi_fail;zpyobj_from_#ctype#1zpyarr_from_p_#ctype#1)r0r$rJ�	_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);)r6r$rJzf	fprintf(stderr,"debug-capi:cb:#varname#=\"#showvalueformat#\":%d:\n",#varname_i#,#varname_i#_cb_len);z�	if (#name#_nofargs>capi_i)
		if (CAPI_ARGLIST_SETITEM(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 (CAPI_ARGLIST_SETITEM(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#;)r-r7rJ�_dependz-	fprintf(stderr,"debug-capi:cb:#varname#\n");a 	if (#name#_nofargs>capi_i) {
		int itemsize_ = #atype# == NPY_STRING ? 1 : 0;
		/*XXX: Hmm, what will destroy this array??? */
		PyArrayObject *tmp_arr = (PyArrayObject *)PyArray_New(&PyArray_Type,#rank#,#varname_i#_Dims,#atype#,NULL,(char*)#varname_i#,itemsize_,NPY_ARRAY_CARRAY,NULL);
a 	if (#name#_nofargs>capi_i) {
		int itemsize_ = #atype# == NPY_STRING ? 1 : 0;
		/*XXX: Hmm, what will destroy this array??? */
		PyArrayObject *tmp_arr = (PyArrayObject *)PyArray_New(&PyArray_Type,#rank#,#varname_i#_Dims,#atype#,NULL,(char*)#varname_i#,itemsize_,NPY_ARRAY_FARRAY,NULL);
zw
		if (tmp_arr==NULL)
			goto capi_fail;
		if (CAPI_ARGLIST_SETITEM(capi_i++,(PyObject *)tmp_arr))
			goto capi_fail;
})r0rJrLz�	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");ZMEMCOPY)rGrJcCsdgt|d<xR|dD]F}|ddkrx4|dD](}|rHt||d�q0td|d�q0WqWdS)N�namer#�blockZ	interfacezwarning: empty body for %s
)�cb_map�
buildcallbackr)�mZbi�b�rT�4/tmp/pip-build-5_djhm0z/numpy/numpy/f2py/cb_rules.py�buildcallbacks�srVcCs~ddlm}td|d|f�t|�\}}||_|d}|j||�}ti|�}t|j|d|dg�x>t	D]6}d|kr�|d|�s�d|krpt
|||�}	t||	�}qpWi}
x�t|�D]�\}}|j||||d�}||
|<xxt
D]p}d|kr�q�d	|k�r
t||��r
q�d|k�r&|d||��s.d|kr�t
||||�}	t||	�}d
|kr�Pq�Wq�Wx�|D]�}|
|}x�t
D]�}d|k�r��qrd	|k�srd	|k�r�t||��r��qrd|k�r�|d||��s�d|k�rrt
||||�}	t||	�}d
|k�rrP�qrW�q`Wx�|D]�}|
|}xvt
D]n}d|k�r,�qd	|k�r:�qd|k�rV|d||��s`d|k�rt
||||�}	t||	�}d
|k�rP�qW�qWd|k�r�d|k�r�t|dt��r�|dd
g|d<|dd
g|d<|dd
g|d<t|dt��rttdd|di��|d<ttdd|di��}
|
dk�rRttdd|di��|d<ntd|d|
d��|d<|djdd�|d<|djdd�|d<g|d<g|d <x�d:D]�}||k�r�t||t��r�|d|||d<d%|}||k�r�t||t��r�|d ||d&d�d'g||dd�d(g|d <�q�Wd|k�r\d|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/|k�r�x0tjj�D]"}||d/k�r�|	d/j|��q�W|	d0tj|dd1<|	d/j|dd1�|	d/tj|d<|	d2|	d3|	d4|	d5|d6d7�|j|d<td8|	d9�dS);Nr)�	capi_mapsz/	Constructing call-back function "cb_%s_in_%s"
rN�varsrJ)�indexrMrL�_breakr.r/z(
#ifndef F2PY_CB_RETURNCOMPLEX
,
#endif
r5r3rGz#docreturn#z#docsignopt#rIr,z	#docsign#rHZdocsignaturez#docsign#[#docsignopt#])rHrI�_z\_Zlatexdocsignaturer+z, r8r9rCrDrErFZlatex�z\begin{description}z\end{description}r2r4r?�voidrBr#r$r"Z_typedefr%r&r'r(�argname)r%r&r'r(r^z	  %s
r))rCrDrErF)r,rWrr�depargsZcb_routsign2maprrP�append�
cb_rout_rulesr�	enumerateZcb_sign2map�cb_arg_rulesrr�
isinstance�listrr�get�cb_routine_rulesr!�	callbacks�strZtypedefs�keysZtypedefs_generatedZneedsZlcb2_map)ZroutZumrWr.r_�varZvrd�rd�r�arZsavevrd�i�ar/�k�trTrTrUrQ�s�


$




"&





&



,
$

rQN)+�__doc__r,rZauxfuncsrrrrrrr	r
rrr
rrrrrrrrrrrrrrrrrrr r!�versionZf2py_versionrgrarcrPrVrQrTrTrTrU�<module>sV�r