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__/model.cpython-35.pyc



.�W#R�@soddlZddlZddlZddlmZdZdZdZdd�ZGdd	�d	e	�Z
Gd
d�de
�ZGdd
�d
e�Ze�Z
Gdd�de�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�Zee
�Zdd�Zee
�ZGd d!�d!e�ZGd"d#�d#e�Zeed$�d�ZGd%d&�d&e
�ZGd'd(�d(e�ZGd)d*�d*e�ZGd+d,�d,e�ZGd-d.�d.e�Z dd/d0�Z!dd1d2�Z"e�Z#d3d4�Z$d5d6�Z%d7d8�Z&dS)9�N�)�
allocate_lock��cCsR|t@rd|j�}|t@r4d|j�}|t@rNd|j�}|S)Nz const z
 volatile z __restrict )�Q_CONST�lstrip�
Q_VOLATILE�
Q_RESTRICT)�quals�replace_with�r�=/opt/alt/python35/lib64/python3.5/site-packages/cffi/model.py�qualifys


rc@s|eZdZdZdZddddd�Zdd�Zd	d
�Zdd�Zdd
d�Z	dd�Z
dd�ZdS)�BaseTypeByIdentityF�za C filercCs�|j}|jd�dks$t�|j�}|rx|jd�r^d|kr^d|}n|ddkrxd|}t||�}|jd|�}d	|kr�dd
lm}|d|j	�|f��|S)N�&r�*z&[z(%s)rz[(� �$)�VerificationErrorz-cannot generate '%s' in %s: unknown type name)
�c_name_with_marker�count�AssertionError�strip�
startswithr�replace�ffiplatformr�_get_c_name)�selfr�contextr
�resultrrrr
�
get_c_names 	

zBaseTypeByIdentity.get_c_namecCs|jjdd�S)Nrr)rr)rrrr
r0szBaseTypeByIdentity._get_c_namecCsd|j�kS)Nr)r)rrrr
�
has_c_name3szBaseTypeByIdentity.has_c_namecCsdS)NFr)rrrr
�is_integer_type6sz"BaseTypeByIdentity.is_integer_typecCscy|j|}WnKtk
r^|j||�}|jj||�}||ksZt�YnX|S)N)�_cached_btypes�KeyError�build_backend_type�
setdefaultr)r�ffi�
finishlist�	can_delay�BTypeZBType2rrr
�get_cached_btype9s
z#BaseTypeByIdentity.get_cached_btypecCsd|j�fS)Nz<%s>)r)rrrr
�__repr__BszBaseTypeByIdentity.__repr__cs�fdd��jD�S)Ncs%g|]}|t�|�f�qSr)�getattr)�.0�name)rrr
�
<listcomp>Fs	z1BaseTypeByIdentity._get_items.<locals>.<listcomp>)�_attrs_)rr)rr
�
_get_itemsEszBaseTypeByIdentity._get_itemsN)�__name__�
__module__�__qualname__�
is_array_type�is_raw_functionr!rr"r#r,r-r3rrrr
rs	rc@s4eZdZdd�Zdd�Zdd�ZdS)�BaseTypecCs(|j|jko'|j�|j�kS)N)�	__class__r3)r�otherrrr
�__eq__KszBaseType.__eq__cCs||kS)Nr)rr;rrr
�__ne__OszBaseType.__ne__cCst|jt|j��f�S)N)�hashr:�tupler3)rrrr
�__hash__RszBaseType.__hash__N)r4r5r6r<r=r@rrrr
r9Isr9c@s.eZdZfZdd�Zdd�ZdS)�VoidTypecCs
d|_dS)Nzvoid&)r)rrrr
�__init__YszVoidType.__init__cCst||d�S)NZ
new_void_type)�global_cache)rr(r)rrr
r&\szVoidType.build_backend_typeN)r4r5r6r2rBr&rrrr
rAVsrAc@seZdZdS)�BasePrimitiveTypeN)r4r5r6rrrr
rDbsrDc^@sreZdZd?Zddddddddddd	dd
dddddd
dddddddddddddddddddddddddddddddddddd dd!dd"dd#dd$dd%dd&dd'dd(dd)dd*dd+dd,dd-dd.dd/dd0dd1dd2dd3di/Zd4d5�Zd6d7�Zd8d9�Zd:d;�Zd<d=�Z	d>S)@�
PrimitiveTyper0�char�c�short�i�int�longz	long longzsigned charz
unsigned charzunsigned shortzunsigned intz
unsigned longzunsigned long long�float�fZdoublezlong doubleZ_BoolZwchar_tZint8_tZuint8_tZint16_tZuint16_tZint32_tZuint32_tZint64_tZuint64_tZint_least8_tZ
uint_least8_tZ
int_least16_tZuint_least16_tZ
int_least32_tZuint_least32_tZ
int_least64_tZuint_least64_tZint_fast8_tZuint_fast8_tZint_fast16_tZ
uint_fast16_tZint_fast32_tZ
uint_fast32_tZint_fast64_tZ
uint_fast64_tZintptr_tZ	uintptr_tZintmax_tZ	uintmax_tZ	ptrdiff_tZsize_tZssize_tcCs/||jkst�||_|d|_dS)Nr)�ALL_PRIMITIVE_TYPESrr0r)rr0rrr
rB�s	zPrimitiveType.__init__cCs|j|jdkS)NrG)rNr0)rrrr
�is_char_type�szPrimitiveType.is_char_typecCs|j|jdkS)NrI)rNr0)rrrr
r#�szPrimitiveType.is_integer_typecCs|j|jdkS)NrM)rNr0)rrrr
�
is_float_type�szPrimitiveType.is_float_typecCst||d|j�S)NZnew_primitive_type)rCr0)rr(r)rrr
r&�sz PrimitiveType.build_backend_typeN)r0)
r4r5r6r2rNrBrOr#rPr&rrrr
rEfsjrEc@s:eZdZd	Zdd�Zdd�Zdd�ZdS)
�UnknownIntegerTyper0cCs||_|d|_dS)Nr)r0r)rr0rrr
rB�s	zUnknownIntegerType.__init__cCsdS)NTr)rrrr
r#�sz"UnknownIntegerType.is_integer_typecCstd|j��dS)Nz4integer type '%s' can only be used after compilation)�NotImplementedErrorr0)rr(r)rrr
r&�sz%UnknownIntegerType.build_backend_typeN)r0)r4r5r6r2rBr#r&rrrr
rQ�srQc@s.eZdZdZdd�Zdd�ZdS)�UnknownFloatTyper0cCs||_|d|_dS)Nr)r0r)rr0rrr
rB�s	zUnknownFloatType.__init__cCstd|j��dS)Nz2float type '%s' can only be used after compilation)rRr0)rr(r)rrr
r&�sz#UnknownFloatType.build_backend_typeN)r0)r4r5r6r2rBr&rrrr
rS�srSc@s%eZdZdZddd�ZdS)	�BaseFunctionType�argsr �ellipsis�abiNcCs�||_||_||_||_dd�|jD�}|jrP|jd�|p\dg}|jdj|�f}|dk	r�|dd�|d|dd�}|jjjd|�|_dS)	NcSsg|]}|j��qSr)r)r/�argrrr
r1�s	z-BaseFunctionType.__init__.<locals>.<listcomp>z...�voidz, rrr)	rUr rVrW�append�
_base_pattern�joinrr)rrUr rVrWZreprargsrrrr
rB�s					
&zBaseFunctionType.__init__)rUr rVrW)r4r5r6r2rBrrrr
rT�srTc@s4eZdZdZdZdd�Zdd�ZdS)�RawFunctionTypez(&)(%s)TcCs*ddlm}|jd|f��dS)Nr)�apizPcannot render the type %r: it is a function type, not a pointer-to-function type)rr^�	CDefError)rr(r)r^rrr
r&�s	z"RawFunctionType.build_backend_typecCst|j|j|j|j�S)N)�FunctionPtrTyperUr rVrW)rrrr
�as_function_pointer�sz#RawFunctionType.as_function_pointerN)r4r5r6r[r8r&rarrrr
r]�sr]c@s.eZdZdZdd�Zdd�ZdS)r`z(*&)(%s)cCs�|jj||�}g}x*|jD]}|j|j||��q%Wf}|jdkr�|js�y|jjf}Wntk
r�YnXt	||dt
|�||j|�S)NZ	__stdcallZnew_function_type)r r,rUrZrWrV�_backendZFFI_STDCALL�AttributeErrorrCr?)rr(r)r rU�tpZabi_argsrrr
r&�s	
z"FunctionPtrType.build_backend_typecCst|j|j|j|j�S)N)r]rUr rVrW)rrrr
�as_raw_function�szFunctionPtrType.as_raw_functionN)r4r5r6r[r&rerrrr
r`�sr`c@s1eZdZd	Zddd�Zdd�ZdS)
�PointerType�totyper
rcCsY||_||_t|d�}|jr=d|j�f}|jjd|�|_dS)Nz *&z(%s)r)rgr
rr7rrr)rrgr
�extrarrr
rBs			zPointerType.__init__cCs.|jj||dd�}t||d|�S)Nr*T�new_pointer_type)rgr,rC)rr(r)ZBItemrrr
r&szPointerType.build_backend_typeN)rgr
)r4r5r6r2rBr&rrrr
rfsrfcCs
t|t�S)N)rfr)rgrrr
�ConstPointerTypesrjc@s%eZdZdZddd�ZdS)�NamedPointerTypergr0rcCs-tj|||�||_|d|_dS)Nr)rfrBr0r)rrgr0r
rrr
rBs	zNamedPointerType.__init__N)rgr0)r4r5r6r2rBrrrr
rksrkc@s@eZdZdZdZdd�Zdd�Zdd	�Zd
S)�	ArrayType�item�lengthTcCse||_||_|dkr'd}n|dkr<d}n
d|}|jjjd|�|_dS)Nz&[]z...z
&[/*...*/]z&[%s]r)rmrnrr)rrmrnZbracketsrrr
rB$s				
zArrayType.__init__cCst|j|�S)N)rlrm)rZ	newlengthrrr
�resolve_length1szArrayType.resolve_lengthcCs||jdkr5ddlm}|jd|f��|jj||�t|j�j||�}t||d||j�S)Nz...r)r^z)cannot render the type %r: unknown lengthZnew_array_type)rnrr^r_rmr,rfrC)rr(r)r^ZBPtrItemrrr
r&4s	
zArrayType.build_backend_typeN)rmrn)r4r5r6r2r7rBror&rrrr
rl s

rlrFc@s@eZdZd	ZdZdd�Zdd�Zdd�ZdS)
�StructOrUnionOrEnumr0NcCs0|jpd|j|jf}|d|_dS)Nz%s %sr)�	forcename�kindr0r)rr0rrr
�build_c_name_with_markerDsz,StructOrUnionOrEnum.build_c_name_with_markercCs||_|j�dS)N)rqrs)rrqrrr
�force_the_nameHs	z"StructOrUnionOrEnum.force_the_namecCs)|jjd�st�|jdd�S)Nrr���)r�endswithr)rrrr
�get_official_nameLsz%StructOrUnionOrEnum.get_official_name)r0)r4r5r6r2rqrsrtrwrrrr
rp@s
rpc@s�eZdZdZdZdZdZddd�Zdd�Zdd	�Z	d
d�Z
ddd
�Zdd�Zdd�Z
dd�Zdd�ZdS)�
StructOrUnionNrFcCs;||_||_||_||_||_|j�dS)N)r0�fldnames�fldtypes�
fldbitsize�fldqualsrs)rr0ryrzr{r|rrr
rBWs					zStructOrUnion.__init__cCs\|jdkrdSxBt|j|j�D]+\}}|dkr)t|t�r)dSq)WdS)NFrT)rz�zipry�
isinstancerx)rr0�typerrr
�has_anonymous_struct_fields_s"z)StructOrUnion.has_anonymous_struct_fieldsccs�|j}|dkr(dt|j�}x}t|j|j|j|�D]]\}}}}|dkr�t|t�r�x-|j�D]}|Vq�WqG||||fVqGWdS)Nrr)r)	r|�lenryr}rzr{r~rx�
enumfields)rr|r0r�bitsizer
r rrr
r�gs	zStructOrUnion.enumfieldsc	Cs�g}g}g}g}xT|j�D]F\}}}}|j|�|j|�|j|�|j|�q%Wt|�|_t|�|_t|�|_t|�|_dS)N)r�rZr?ryrzr{r|)	r�names�typesZbitsizesr|r0rr�r
rrr
�
force_flattents


zStructOrUnion.force_flattencCs2tj||||�}|s.|j||�|S)N)rpr,�finish_backend_type)rr(r)r*r+rrr
r,�s
	zStructOrUnion.get_cached_btypecs�|jr2|jdkr.td|jf��dS�j|}d|_|jdkrZnq|jdkr���fdd�|jD�}tt|j||j	��}d}|j
r�d}�jj|||dd
|�n�g}|j\}}}	}
x�t
t|j��D]|}||}|j|}
t|
t�r�|
jdkr�|
jj���}t|�j|��\}}|dkr�|jd	|j|j|p�d
f�|
j|�}
|jd|�|
f|j|dd�|_|
j���}t|
t�r5|
jdkr5|dks}t�nH�j|�}||kr}|jd|j|j|pod
||f�|j|�qWtt|j||j	|��}�jj||||	|
�d|_dS)Nrz(recursive structure declaration for '%s'rcs"g|]}|j����qSr)r,)r/rd)r(r)rr
r1�s	z5StructOrUnion.finish_backend_type.<locals>.<listcomp>r�z...zfield '%s.%s' has a bogus size?z{}z=field '%s.%s' is declared as %d bytes, but is really %d bytesruru)�	completedrRr0r$rz�fixedlayout�listr}ryr{�packedrbZcomplete_struct_or_union�ranger�r~rlrnrmr,�divmod�sizeof�_verification_errorrorrZ)rr(r)r+rz�lstZsflagsZfieldofsZ	fieldsizeZ	totalsizeZtotalalignmentrI�fsizeZftypeZ	BItemTypeZnlenZnrestZ
BFieldTypeZ	bitemsizer)r(r)r
r��s`	
	
	

!
z!StructOrUnion.finish_backend_typecCs ddlm}||��dS)Nr)r)rr)r�msgrrrr
r��sz!StructOrUnion._verification_errorcCsA|jr=|jdkr=ddlm}|j|j���dS)Nr)r)�partialr�rr�VerificationMissingr)rrrrr
�check_not_partial�szStructOrUnion.check_not_partialcCs=|j�|j|�t||d|j|j�d|�S)Nznew_%s_type�key)r�rZrCrrrw)rr(r)rrr
r&�s

z StructOrUnion.build_backend_type)r4r5r6r�r�r�r�rBr�r�r�r,r�r�r�r&rrrr
rxQs
<rxc@seZdZdZdS)�
StructType�structN)r4r5r6rrrrrr
r��sr�c@seZdZdZdS)�	UnionType�unionN)r4r5r6rrrrrr
r��sr�c@saeZdZdZdZdZddd�Zdd�Zdd	�Zd
d�Z	dd
�Z
dS)�EnumType�enumFNcCs2||_||_||_||_|j�dS)N)r0�enumerators�
enumvalues�baseinttypers)rr0r�r�r�rrr
rB�s
				zEnumType.__init__cCsHtj||�|jdkrD|j�}d|jdd�|_dS)Nrr�_)rprtrqrwr)rrqr0rrr
rt�szEnumType.force_the_namecCs<|jr8|jr8ddlm}|j|j���dS)Nr)r)r��partial_resolvedrrr�r)rrrrr
r��szEnumType.check_not_partialc
CsJ|j�|j||�}t||d|j�|j|j|d|�S)NZ
new_enum_typer�)r��build_baseinttyperCrwr�r�)rr(r)Z
base_btyperrr
r&�s
	zEnumType.build_backend_typec
Cs�|jdk	r"|jj||�Sddlm}|jr\t|j�}t|j�}n|jd|j���|dkr�d}t	d�}t	d�}nd}t	d�}t	d�}|j||�}	|j||�}
|j
|	�}|j
|
�}|dd	|d>kr6|dd	||>kr6|	S|dd	|d>krj|dd	||>krj|
S|jd
|j���dS)
Nr)r^zw%r has no values explicitly defined: refusing to guess which integer type it is meant to be (unsigned/signed, int/long)rrJrKzunsigned intz
unsigned longr�z=%s values don't all fit into either 'long' or 'unsigned long'ruru)r�r,rr^r��min�maxr_rrEr�)
rr(r)r^Zsmallest_valueZ
largest_value�signZ
candidate1Z
candidate2Zbtype1Zbtype2Zsize1Zsize2rrr
r�s6			zEnumType.build_baseinttype)r4r5r6rrr�r�rBrtr�r&r�rrrr
r��sr�cCsE|dkrd|}t|ddd�}|j|�d|_|S)Nz$%s�unknown_type)r�rt�origin)r0�
structnamerdrrr
r�#s

	r�cCs8|dkrd|}t|ddd�}t||�S)Nz$$%s)r�rk)r0r�rdrrr
�unknown_ptr_type+s
r�c
 OsG|jd||f�}|s%t�y|jj|SWnetk
rKYnTtk
r�t|jtj�r�t	j
�|j_nt	j
�t|j�_YnXyt|j|�|�}Wn>t
k
r�}zt
d|||f��WYdd}~XnX|jj}t�2|j|�}	|	dkr8|||<|S|	SWdQRXdS)Nr�z
%s: %r: %s)�poprrbZ__typecacher%rcr~r��
ModuleType�weakref�WeakValueDictionaryrr.rR�global_lock�get)
Zsrctyper(�funcnamerU�kwdsr��res�e�cacheZres1rrr
rC4s*


,
rCcCstd|d|�S)N�?ri)rC)r(r+rrr
�
pointer_cacheSsr�cCsT|jrPt|jd�tkrPd||jdff|jdd�|_dS)Nrz%s: %sr)rUr�str)r�r0rrr
�attach_exception_infoVs"r�)'r��sysr��lockrrr	rr�objectrr9rAZ	void_typerDrErQrSrTr]r`rfZ
voidp_typerjZconst_voidp_typerkrlZchar_array_typerprxr�r�r�r�r�r�rCr�r�rrrr
�<module>sF
0
		F	�A