Your IP : 216.73.216.213


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



.�W	h�@sZddlZddlZddlZddlmZmZGdd�de�ZdZdS)�N�)�model�ffiplatformc@sJeZdZdZdZdd�Zdd�Zdd�Zd	d
�Zddd
�Z	dd�Z
ddd�Zdd�Zdd�Z
dd�Zdd�Zdd�ZeZeZeZdd�ZeZdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Z d5d6�Z!d7d8�Z"d9d:�Z#d;d<d;d=d>�Z$d?d@�Z%eZ&d;dAdB�Z'dCdD�Z(dEdF�Z)dGdH�Z*dIdJ�Z+dKdLdM�Z,dKdNdO�Z-dPdQ�Z.dRdS�Z/eZ0dTdU�Z1dVdW�Z2eZ3dXdY�Z4d;S)Z�VGenericEngine�gFcCs+||_|j|_g|_i|_dS)N)�verifier�ffi�export_symbols�_struct_pending_verification)�selfr�r�C/opt/alt/python35/lib64/python3.5/site-packages/cffi/vengine_gen.py�__init__s		zVGenericEngine.__init__cCs|jd|j�dS)Nr	)�
setdefaultr	)r�kwdsrrr
�patch_extension_kwdssz#VGenericEngine.patch_extension_kwdscCspxi|D]a}||}|dkr,tj}x9|D]1}tjj||�}tjj|�r3|Sq3WqWdS)N)�sys�path�os�join�isfile)r�module_namerZso_suffixesZ	so_suffix�basename�dirname�filenamerrr
�find_modules

	
zVGenericEngine.find_modulecCsdS)Nr)rrrr
�
collect_types$szVGenericEngine.collect_types�cCs|jj|d�dS)N�
)Z_f�write)r�whatrrr
�_prnt'szVGenericEngine._prntcCs�|j}|t�||jj�|jd�tjdkr�tjdkrWd}nd}|jj�}|d||f�dS)N�decl�win32�ZPyInit_�initzvoid %s%s(void) { }
)r$)	r!�cffimod_headerr�preamble�	_generater�platform�version_infoZget_module_name)r�prnt�prefix�modnamerrr
�write_source_to_f*s	

	z VGenericEngine.write_source_to_frcs��jj}tjjtj�jj�}|j||���j	�d�G���fdd�dt
j���d�}�j	�dd|�|S)NZloadingcs7eZdZ�Z�jZgZ�fdd�ZdS)z/VGenericEngine.load_library.<locals>.FFILibrarycs�jS)N)�	_cffi_dir)r)�
FFILibraryrr
�__dir__Ssz7VGenericEngine.load_library.<locals>.FFILibrary.__dir__N)�__name__�
__module__�__qualname__Z_cffi_generic_modulerZ	_cffi_ffir/r1r)r0�modulerrr
r0Os	r0rZloaded�library)r�_backendrrr�curdirrZmodulefilename�load_library�_load�types�
ModuleType)r�flags�backendrr6r)r0r5rr
r9@s%zVGenericEngine.load_librarycCs0dd�|jjjj�D�}|j�|S)NcSs(g|]\}\}}||f�qSrr)�.0�key�tpZqualrrr
�
<listcomp>]s	z4VGenericEngine._get_declarations.<locals>.<listcomp>)r�_parserZ
_declarations�items�sort)r�lstrrr
�_get_declarations\s	
z VGenericEngine._get_declarationscCs�x�|j�D]�\}}|jdd�\}}yt|d||f�}Wn%tk
rutjd|��YnXy|||�Wq
tk
r�}ztj||��WYdd}~Xq
Xq
WdS)N� rz_generate_gen_%s_%sznot implemented in verify(): %r)	rG�split�getattr�AttributeErrorr�VerificationError�	Exceptionr�attach_exception_info)r�	step_name�namerA�kind�realname�method�errr
r(bs
zVGenericEngine._generatec
Ks�x�|j�D]�\}}|jdd�\}}t|d||f�}y|||||�Wq
tk
r�}	ztj|	|��WYdd}	~	Xq
Xq
WdS)NrHrz
_%s_gen_%s)rGrIrJrMrrN)
rr5rOrrPrArQrRrSrTrrr
r:qszVGenericEngine._loadcCsdS)Nr)rrArPrrr
�_generate_nothing{sz VGenericEngine._generate_nothingcKsdS)Nr)rrArPr5rrrr
�_loaded_noop~szVGenericEngine._loaded_noopcst|tj�st�|jr8|jd||�dS|j}t|j�}g}xRt	|j�D]A\}}d}t|tj
�r�d}|jd||f�qfWd|��fdd�t|j|�D�}	|j
}
t|
tj
�r|	jd|
jd	���tj}
d
j|	�p,d}	d|}|jj|�|jrb|jd
}nd}d|||	f}
d|�||
j|
���|d�t|j
tj
�r�d}n$t|j
tj�s�d}nd}|d||d
j|�f�|d�|�dS)NFr�*z%sx%dzargument of %scs,g|]"\}}|jd|���qS)z %s)�
get_c_name)r?�type�arg)�contextrr
rB�s	z>VGenericEngine._generate_gen_function_decl.<locals>.<listcomp>rz *rz, �voidz
_cffi_f_%srHz	 %s%s(%s)zresult of %s�{z*r = zreturn z  %s%s(%s);�})�
isinstancer�FunctionPtrType�AssertionError�ellipsis�_generate_gen_constr!�len�args�	enumerate�
StructOrUnion�append�zip�result�insertrX�	void_typerr	�abiZVoidType)rrArPr+Znumargs�argnames�irYZindirectionZarglistZtpresult�wrappernamermZfuncdeclZresult_coder)r[r
�_generate_gen_function_decl�sJ		
		
	

		 
z*VGenericEngine._generate_gen_function_declcCst|tj�st�|jr<|jd|||�}n�g}|}tdd�|jD��syt|jtj	�rg}x^t
|j�D]M\}	}
t|
tj	�r�tj|
�}
|j|	|
f�|j|
�q�W|j}t|tj	�ra|j
dkr#td|j�f��tj|�}|jd|�|jdd|f�tj}tjt|�||j�}|jj|�}d|}
|j||
�}x,|D]$\}	}
|j||	|
|�}q�Wt|||�t|�jj|�dS)NFcss!|]}t|tj�VqdS)N)r_rrg)r?�typrrr
�	<genexpr>�sz6VGenericEngine._loaded_gen_function.<locals>.<genexpr>z*'%s' is used as result type, but is opaquerrjz
_cffi_f_%s)r_rr`rarb�_load_constant�anyrerjrgrf�PointerTyperhZfldtypes�	TypeError�_get_c_namerkrl�tupler�_get_cached_btype�
load_function�_make_struct_wrapper�setattrrYr/)rrArPr5r6ZnewfunctionZindirections�base_tpZ
indirect_argsrorrZindirect_result�BFuncrprrr
�_loaded_gen_function�s@			

z#VGenericEngine._loaded_gen_functioncsv|jj�|jj|���dkrN|j����fdd�}n����fdd�}||_|S)Nrjcs$�j��}�||�|dS)Nr)�new)re�res)�BTyper�oldfuncrr
�newfunc�s
z4VGenericEngine._make_struct_wrapper.<locals>.newfunccsC|d���j�|��f|�dd�}�|�S)Nr)Znewp)re)r�r>ror�rr
r��s9)rr7rzZ_cffi_base_type)rr�rorAr~r�r)r�r>rror�r
r|�s		z#VGenericEngine._make_struct_wrappercCs,||jkst�|j|d|�dS)N�struct)rPra�_generate_struct_or_union_decl)rrArPrrr
�_generate_gen_struct_decl�sz(VGenericEngine._generate_gen_struct_declcCs|j|d||�dS)Nr�)�_loading_struct_or_union)rrArPr5rrr
�_loading_gen_struct�sz"VGenericEngine._loading_gen_structcKs|j|�dS)N)�_loaded_struct_or_union)rrArPr5rrrr
�_loaded_gen_struct�sz!VGenericEngine._loaded_gen_structcCs,||jkst�|j|d|�dS)N�union)rPrar�)rrArPrrr
�_generate_gen_union_decl�sz'VGenericEngine._generate_gen_union_declcCs|j|d||�dS)Nr�)r�)rrArPr5rrr
�_loading_gen_union�sz!VGenericEngine._loading_gen_unioncKs|j|�dS)N)r�)rrArPr5rrrr
�_loaded_gen_unionsz VGenericEngine._loaded_gen_unionc
Cs�|jdkrdSd||f}d||f}d||fj�}|j}|d||f�|d�|d�|d�x�|j�D]�\}}	}
}t|	tj�r�|	j�s�|
dkr�|d	|�q�y.|d
|	jdd|d
|�|f�Wq�t	j
k
rJ}z|dt|��WYdd}~Xq�Xq�W|d�|jj
|�|d|f�|d�|d|�|d�|d|�|d�x�|j�D]�\}}	}
}|
dkr�q�|d||f�t|	tj�r.|	jdkr.|d|	j��q�|d||f�q�W|d�|d�|d�|d�|d|f�|d�|�dS)Nz_cffi_check_%s_%sz_cffi_layout_%s_%sz%s %szstatic void %s(%s *p)r]z8  /* only to generate compile-time warnings or errors */z
  (void)p;rz  (void)((p->%s) << 1);z  { %s = &p->%s; (void)tmp; }z*tmpzfield %rZqualsz
  /* %s */r^zintptr_t %s(intptr_t i)z,  struct _cffi_aligncheck { char x; %s y; };z  static intptr_t nums[] = {z    sizeof(%s),z)    offsetof(struct _cffi_aligncheck, y),z    offsetof(%s, %s),z    0,  /* %s */z    sizeof(((%s *)0)->%s),z    -1z  };z  return nums[i];z3  /* the next line is not executed, but compiled */z  %s(0);)�fldnames�stripr!�
enumfieldsr_r�
PrimitiveType�is_integer_typerXrrL�strr	rh�	ArrayType�lengthrx)
rrAr,rPZ
checkfuncname�layoutfuncname�cnamer+�fname�ftype�fbitsize�fqualrTrrr
r�sT	


+



!




z-VGenericEngine._generate_struct_or_union_declcCsi|jdkrdSd||f}|jjd�d}|j||�}g}d}	x4||	�}
|
dkrsP|j|
�|	d7}	qZWt|tj�r<|jr<|d}|d}|ddd�}
|ddd�}|j	�t
|
�t
|�kot
|j�kns$t�|
|||f|_n)d||fj
�}||f|j|<dS)Nz_cffi_layout_%s_%szintptr_t(*)(intptr_t)rr�r$z%s %s)r�r�_typeof_lockedr{rhr_rrg�partialZ
force_flattenrdraZfixedlayoutr�r
)rrAr,rPr5r�r�function�layout�num�xZ	totalsizeZtotalalignmentZfieldofsZ	fieldsizer�rrr
r�6s.



7z'VGenericEngine._loading_struct_or_unionc
Csx|jdkrdS|jj|�||jkrtdd�}|j}|j|�}|jj|�\}}||d|j|�d�||d|j|�d�d}x�|j�D]�\}}	}
}|
dkr�q�||||j||�d|f�||ddkrN|j|	�}|||d|j|�d	|f�|d7}q�W|t	|�kstt
�dS)
NcSs,||kr(tjd|||f��dS)Nz'%s (we have %d, but C compiler says %d))rrL)Z	realvalueZ
expectedvalue�msgrrr
�checkYsz5VGenericEngine._loaded_struct_or_union.<locals>.checkrzwrong total sizerzwrong total alignmentr�zwrong offset for field %rzwrong size for field %r)r�rrzr
�pop�sizeofZalignofr�Zoffsetofrdra)
rrAr�rZBStructr�r�ror�r�r�r�ZBFieldrrr
r�Rs,	z&VGenericEngine._loaded_struct_or_unioncCs?t|tj�r(|j||d�n|j|d|�dS)Nr)r_r�EnumType�_generate_gen_enum_declr�)rrArPrrr
�_generate_gen_anonymous_decltsz+VGenericEngine._generate_gen_anonymous_declcCsEt|tj�r+|j|||d�n|j|d||�dS)Nr)r_rr��_loading_gen_enumr�)rrArPr5rrr
�_loading_gen_anonymouszsz%VGenericEngine._loading_gen_anonymouscKs<t|tj�r+|j||||�n
|j|�dS)N)r_rr��_loaded_gen_enumr�)rrArPr5rrrr
�_loaded_gen_anonymous�sz$VGenericEngine._loaded_gen_anonymousN�constc
Cs�|j}d||f}|jj|�|dk	r�|sAt�|dksSt�|d|�|d�|j||�|d�|d�n|r�|dks�t�|d|�|d�|d|f�|d	|f�|d�n�|dk	st�|dkst�|d
kr*d}nd}d}	|dkr`t|tj�r`d
}	d}||jd|	|f|��|d�|d||f�|d�|�dS)Nz_cffi_%s_%sr�zint %s(char *out_error)r]z  return 0;r^zint %s(long long *out_value)z  *out_value = (long long)(%s);z  return (%s) <= 0;�var�&rzconst *z %s%s(void)z  return (%s%s);)	r!r	rhra�_check_int_constant_valuer_rrgrX)
r�is_intrPrA�category�check_valuer+�funcnameZ	ampersand�extrarrr
rc�s@	




	 

z"VGenericEngine._generate_gen_constcCs5t|tj�o|j�}|j|||�dS)N)r_rr�r�rc)rrArPr�rrr
�_generate_gen_constant_decl�sz*VGenericEngine._generate_gen_constant_declcCs�d|}|dk	r;|s"t�|j||�|}nI|r�|jjd�d}|jjd�d}	|j|	|�}
|jj|�}|
|�}t|d�}|dkr�|r�|jjd�d}
|dd|jj|
�>7}n�|dks	t�d}t|t	j
�r+d	|}|jj|j||��d}	|j|	|�}
|
�}t|t	j
�r�|d}|S)
Nz_cffi_const_%sz
long long*rzint(*)(long long*)z	long longr�z	(*)(void)rW)ra�_load_known_int_constantrr�r{r��intr�r_rrgrX)rr�rArPr5r�r��valuer�rr��pZnegativeZ	BLongLongZfntypeextrarrr
rt�s2
	!
"	
zVGenericEngine._load_constantcCs`t|tj�o|j�}|j||||�}t|||�t|�jj|�dS)N)	r_rr�r�rtr}rYr/rh)rrArPr5r6r�r�rrr
�_loaded_gen_constant�sz#VGenericEngine._loaded_gen_constantcCs�|j}|dkr/|d|||f�n|d|||f�|d�|d|�|d|�|d�|d|�|d	�|d
|dd�|f�|d�|d
�dS)Nrz&  if ((%s) > 0 || (long)(%s) != %dL) {z1  if ((%s) <= 0 || (unsigned long)(%s) != %dUL) {z    char buf[64];z    if ((%s) <= 0)z)        sprintf(buf, "%%ld", (long)(%s));z    elsez2        sprintf(buf, "%%lu", (unsigned long)(%s));z:    sprintf(out_error, "%s has the real value %s, not %s",z            "%s", buf, "%d");�dz    return -1;z  })r!)rrPr�r+rrr
r��s 	



z(VGenericEngine._check_int_constant_valuecCs�|jjd�d}|jjd�d}|j||�}|jj|d�}||�dkr�|jj|�}tjdkr�t|d�}tj	|��dS)Nzchar[]rz
int(*)(char*)�r$zutf-8)r$)
rr�r{r��stringrr*r�rrL)rr5r�r�rr�r��errorrrr
r��sz'VGenericEngine._load_known_int_constantcCs |jdd�}d||fS)N�$Z___D_z
_cffi_e_%s_%s)�replace)rr,rPrrr
�_enum_funcname�szVGenericEngine._enum_funcname�enumcCs�|jr1x!|jD]}|jd|�qWdS|j||�}|jj|�|j}|d|�|d�x3t|j|j�D]\}}|j	||�q�W|d�|d�|�dS)NTzint %s(char *out_error)r]z  return 0;r^)
r��enumeratorsrcr�r	rhr!ri�
enumvaluesr�)rrArPr,�
enumeratorr�r+�	enumvaluerrr
r��s		
"

z&VGenericEngine._generate_gen_enum_declcsl�jrF���fdd��jD�}t|��_d�_n"�j||�}�j�|�dS)Ncs(g|]}�jd�|���qS)T)rt)r?r�)r5rrArr
rBs	z4VGenericEngine._loading_gen_enum.<locals>.<listcomp>T)r�r�ryr�Zpartial_resolvedr�r�)rrArPr5r,r�r�r)r5rrAr
r�
s	
z VGenericEngine._loading_gen_enumcCsPxIt|j|j�D]2\}}t|||�t|�jj|�qWdS)N)rir�r�r}rYr/rh)rrArPr5r6r�r�rrr
r�s"zVGenericEngine._loaded_gen_enumcCs5|dkrd}n|}|jd|d|�dS)Nz...Tr�)rc)rrArPr�rrr
�_generate_gen_macro_decls	z'VGenericEngine._generate_gen_macro_declcCsc|dkrd}n|}|jd|||d|�}t|||�t|�jj|�dS)Nz...Tr�)rtr}rYr/rh)rrArPr5r6r�r�rrr
�_loaded_gen_macro(s		z VGenericEngine._loaded_gen_macrocCs�t|tj�r�|jdkrz|j}d|f}|jj|�|d|�|d�|d|f�|d�tj|j�}|j	d||�n(tj|�}|j	d||dd	�dS)
Nz...z_cffi_sizeof_%szsize_t %s(void)r]z  return sizeof(%s);r^Fr�r�)
r_rr�r�r!r	rhrv�itemrc)rrArPr+r��tp_ptrrrr
�_generate_gen_variable_decl5s	


z*VGenericEngine._generate_gen_variable_declcs�t|tj�rV|jdkr�d|f}|jjd�d}|j||�}|�}|jj|j�}	t	||jj
|	��\}
}|dkr�tjd||jf��|j
|
�}tj|j�}|jd|||�}
|jdk	r,|jj|�}|jj||
�}
t|||
�t|�jj|�dSd|}|jj|jd|��d}|j||�}|���fd	d
�}�fdd�}tt|�|t||��t|�jj|�dS)
Nz...z_cffi_sizeof_%szsize_t(*)(void)rz/bad size: %r does not seem to be an array of %sFz_cffi_var_%sz
*(*)(void)cs�dS)Nrr)r6)�ptrrr
�getterfsz3VGenericEngine._loaded_gen_variable.<locals>.gettercs|�d<dS)Nrr)r6r�)r�rr
�setterhsz3VGenericEngine._loaded_gen_variable.<locals>.setter)r_rr�r�rr�r{rzr��divmodr�rrLZresolve_lengthrvrt�castr}rYr/rhrX�property)rrArPr5r6r�rr��sizeZ	BItemTyper��restr�r�ZBArrayr�r�r)r�r
�_loaded_gen_variableGs:
	!
"	z#VGenericEngine._loaded_gen_variable)5r2r3r4Z
_class_keyZ_gen_python_modulerrrrr!r.r9rGr(r:rUrVZ_generate_gen_typedef_declZ_loading_gen_typedefZ_loaded_gen_typedefrqZ_loading_gen_functionr�r|r�r�r�r�r�r�r�r�r�r�r�r�rcr�Z_loading_gen_constantrtr�r�r�r�r�r�r�r�Z_loading_gen_macror�r�Z_loading_gen_variabler�rrrr
r
sf

-$1"	$	

ra
#include <stdio.h>
#include <stddef.h>
#include <stdarg.h>
#include <errno.h>
#include <sys/types.h>   /* XXX for ssize_t on some platforms */

/* this block of #ifs should be kept exactly identical between
   c/_cffi_backend.c, cffi/vengine_cpy.py, cffi/vengine_gen.py */
#if defined(_MSC_VER)
# include <malloc.h>   /* for alloca() */
# if _MSC_VER < 1600   /* MSVC < 2010 */
   typedef __int8 int8_t;
   typedef __int16 int16_t;
   typedef __int32 int32_t;
   typedef __int64 int64_t;
   typedef unsigned __int8 uint8_t;
   typedef unsigned __int16 uint16_t;
   typedef unsigned __int32 uint32_t;
   typedef unsigned __int64 uint64_t;
   typedef __int8 int_least8_t;
   typedef __int16 int_least16_t;
   typedef __int32 int_least32_t;
   typedef __int64 int_least64_t;
   typedef unsigned __int8 uint_least8_t;
   typedef unsigned __int16 uint_least16_t;
   typedef unsigned __int32 uint_least32_t;
   typedef unsigned __int64 uint_least64_t;
   typedef __int8 int_fast8_t;
   typedef __int16 int_fast16_t;
   typedef __int32 int_fast32_t;
   typedef __int64 int_fast64_t;
   typedef unsigned __int8 uint_fast8_t;
   typedef unsigned __int16 uint_fast16_t;
   typedef unsigned __int32 uint_fast32_t;
   typedef unsigned __int64 uint_fast64_t;
   typedef __int64 intmax_t;
   typedef unsigned __int64 uintmax_t;
# else
#  include <stdint.h>
# endif
# if _MSC_VER < 1800   /* MSVC < 2013 */
   typedef unsigned char _Bool;
# endif
#else
# include <stdint.h>
# if (defined (__SVR4) && defined (__sun)) || defined(_AIX)
#  include <alloca.h>
# endif
#endif
)	rrr;rrr�objectrr&rrrr
�<module>s���