HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //home/arjun/projects/env/lib/python3.10/site-packages/cffi/__pycache__/model.cpython-310.pyc
o

%weU�@s�ddlZddlZddlmZddlmZmZmZdZdZ	dZ
dd�ZGd	d
�d
e�Z
Gdd�de
�ZGd
d�de�Ze�ZGdd�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�Z Gd*d+�d+e �Z!Gd,d-�d-e �Z"Gd.d/�d/e�Z#d<d0d1�Z$d<d2d3�Z%e�Z&e�'�Z(d4d5�Z)d6d7�Z*d8d9�Z+d:d;�Z,dS)=�N�)�
allocate_lock)�	CDefError�VerificationError�VerificationMissing��cCs@|t@r
d|��}|t@rd|��}|t@rd|��}|S)Nz const z
 volatile z __restrict )�Q_CONST�lstrip�
Q_VOLATILE�
Q_RESTRICT)�quals�replace_with�r�C/home/arjun/projects/env/lib/python3.10/site-packages/cffi/model.py�qualifysrc@sPeZdZdZdZddd�Zdd�Zd	d
�Zdd�Zdd
d�Z	dd�Z
dd�ZdS)�BaseTypeByIdentityF��a C filercCs�|j}|�d�dksJ�|��}|r*|�d�r d|vr d|}n
|ddvr*d|}t||�}|�d|�}d	|vrCtd
|��|f��|S)N�&r�*z&[�(%s)rz[(� �$z-cannot generate '%s' in %s: unknown type name)�c_name_with_marker�count�strip�
startswithr�replacer�_get_c_name)�selfr�contextr
�resultrrr�
get_c_names"


��zBaseTypeByIdentity.get_c_namecCs|j�dd�S)Nrr)rr�r rrrr/�zBaseTypeByIdentity._get_c_namecCsd|��vS)Nr�rr$rrr�
has_c_name2�zBaseTypeByIdentity.has_c_namecC�dS�NFrr$rrr�is_integer_type5�z"BaseTypeByIdentity.is_integer_typecCsLz|j|}W|Sty%|�||�}|j�||�}||us"J�Y|Sw�N)�_cached_btypes�KeyError�build_backend_type�
setdefault)r �ffi�
finishlist�	can_delay�BType�BType2rrr�get_cached_btype8s��z#BaseTypeByIdentity.get_cached_btypecCsd|��fS)Nz<%s>r&r$rrr�__repr__Ar%zBaseTypeByIdentity.__repr__cs�fdd��jD�S)Ncsg|]	}|t�|�f�qSr)�getattr)�.0�namer$rr�
<listcomp>Esz1BaseTypeByIdentity._get_items.<locals>.<listcomp>)�_attrs_r$rr$r�
_get_itemsDszBaseTypeByIdentity._get_itemsN)rrr�F)�__name__�
__module__�__qualname__�
is_array_type�is_raw_functionr#rr'r+r7r8r>rrrrrs

	rc@s$eZdZdd�Zdd�Zdd�ZdS)�BaseTypecCs|j|jko
|��|��kSr-)�	__class__r>�r �otherrrr�__eq__Js�zBaseType.__eq__cCs
||kSr-rrGrrr�__ne__N�
zBaseType.__ne__cCst|jt|���f�Sr-)�hashrF�tupler>r$rrr�__hash__Q�zBaseType.__hash__N)r@rArBrIrJrNrrrrrEHsrEc@� eZdZdZdd�Zdd�ZdS)�VoidTypercCs
d|_dS)Nzvoid&)rr$rrr�__init__XrKzVoidType.__init__cCst||d�S)N�
new_void_type��global_cache�r r2r3rrrr0[r(zVoidType.build_backend_typeN�r@rArBr=rRr0rrrrrQUsrQc@seZdZdd�ZdS)�BasePrimitiveTypecCr)r*rr$rrr�is_complex_typebr,z!BasePrimitiveType.is_complex_typeN)r@rArBrYrrrrrXasrXc@s~eZdZdZidd�dd�dd�dd�dd�d	d�d
d�dd�dd�d
d�dd�dd�dd�dd�dd�dd�dd�idd�dd�dd�dd�dd�dd�dd�dd�dd�d d�d!d�d"d�d#d�d$d�d%d�d&d�d'd��id(d�d)d�d*d�d+d�d,d�d-d�d.d�d/d�d0d�d1d�d2d�d3d�d4d�d5d�d6d�d7d�d8d��Zd9d:�Zd;d<�Zd=d>�Zd?d@�ZdAdB�Z	dCdD�Z
dES)F�
PrimitiveType�r;�char�c�short�i�int�longz	long longzsigned charz
unsigned charzunsigned short�unsigned int�
unsigned longzunsigned long long�float�f�doublezlong doublezfloat _Complex�jzdouble _Complex�_Bool�wchar_t�char16_t�char32_t�int8_t�uint8_t�int16_t�uint16_t�int32_t�uint32_t�int64_t�uint64_t�int_least8_t�
uint_least8_t�
int_least16_t�uint_least16_t�
int_least32_t�uint_least32_t�
int_least64_t�uint_least64_t�int_fast8_t�uint_fast8_t�int_fast16_t�
uint_fast16_t�int_fast32_t�
uint_fast32_t�int_fast64_t�
uint_fast64_t�intptr_t�	uintptr_t�intmax_t�	uintmax_t�	ptrdiff_t�size_t�ssize_tcCs"||jvsJ�||_|d|_dS�Nr)�ALL_PRIMITIVE_TYPESr;r�r r;rrrrR��zPrimitiveType.__init__cC�|j|jdkS)Nr]�r�r;r$rrr�is_char_type��zPrimitiveType.is_char_typecCr�)Nr_r�r$rrrr+�r�zPrimitiveType.is_integer_typecCr�)Nrer�r$rrr�
is_float_type�r�zPrimitiveType.is_float_typecCr�)Nrgr�r$rrrrY�r�zPrimitiveType.is_complex_typecCst||d|j�S)N�new_primitive_type)rUr;rVrrrr0�r�z PrimitiveType.build_backend_typeN)r@rArBr=r�rRr�r+r�rYr0rrrrrZfs���������	�
���
������������������ �!�"�#�$�%�&�'�(�)�*�+�,�-�.�/�0�1�2�3�4�7rZc@s(eZdZdZdd�Zdd�Zdd�ZdS)	�UnknownIntegerTyper[cC�||_|d|_dSr��r;rr�rrrrR��zUnknownIntegerType.__init__cCr))NTrr$rrrr+�r,z"UnknownIntegerType.is_integer_typecC�td|j��)Nz4integer type '%s' can only be used after compilation��NotImplementedErrorr;rVrrrr0���z%UnknownIntegerType.build_backend_typeN)r@rArBr=rRr+r0rrrrr��s
r�c@rP)�UnknownFloatTyper[cCr�r�r�r�rrrrR�r�zUnknownFloatType.__init__cCr�)Nz2float type '%s' can only be used after compilationr�rVrrrr0�r�z#UnknownFloatType.build_backend_typeNrWrrrrr��sr�c@seZdZdZddd�ZdS)�BaseFunctionType)�argsr"�ellipsis�abiNcCs�||_||_||_||_dd�|jD�}|jr|�d�|p dg}|jd�|�f}|dur>|dd�|d|dd�}|jj�d|�|_dS)	NcSsg|]}|���qSrr&)r:�argrrrr<�sz-BaseFunctionType.__init__.<locals>.<listcomp>�...�voidz, rrr)	r�r"r�r��append�
_base_pattern�joinrr)r r�r"r�r��reprargsrrrrrR�s

 �zBaseFunctionType.__init__r-�r@rArBr=rRrrrrr���r�c@s$eZdZdZdZdd�Zdd�ZdS)�RawFunctionTypez(&)(%s)TcCstd|f��)NzPcannot render the type %r: it is a function type, not a pointer-to-function type)rrVrrrr0�r�z"RawFunctionType.build_backend_typecC�t|j|j|j|j�Sr-)�FunctionPtrTyper�r"r�r�r$rrr�as_function_pointer�rOz#RawFunctionType.as_function_pointerN)r@rArBr�rDr0r�rrrrr��s
r�c@rP)r�z(*&)(%s)cCs�|j�||�}g}|jD]}|�|�||��qd}|jdkr3|js3z|jjf}Wn	ty2Ynwt	||dt
|�||jg|�R�S)Nr�	__stdcall�new_function_type)r"r7r�r�r�r��_backend�FFI_STDCALL�AttributeErrorrUrM)r r2r3r"r��tp�abi_argsrrrr0�s"

���z"FunctionPtrType.build_backend_typecCr�r-)r�r�r"r�r�r$rrr�as_raw_functionrOzFunctionPtrType.as_raw_functionN)r@rArBr�r0r�rrrrr��sr�c@s"eZdZdZddd�Zdd�ZdS)	�PointerType)�totyper
rcCsB||_||_d}|jrd|��f}t||�}|j�d|�|_dS)Nz *&rr)r�r
rCr
rrr)r r�r
�extrarrrrRs
zPointerType.__init__cCs |jj||dd�}t||d|�S)NT)r4�new_pointer_type)r�r7rU)r r2r3�BItemrrrr0szPointerType.build_backend_typeN�rrWrrrrr�s
	r�cCs
t|t�Sr-)r�r	)r�rrr�ConstPointerTyperKr�c@seZdZdZddd�ZdS)�NamedPointerType)r�r;rcCs"t�|||�||_|d|_dSr�)r�rRr;r)r r�r;r
rrrrR r�zNamedPointerType.__init__Nr�r�rrrrr�r�r�c@s4eZdZdZdZdd�Zdd�Zdd�Zd	d
�ZdS)�	ArrayType)�item�lengthTcCsF||_||_|dur
d}n|dkrd}nd|}|jj�d|�|_dS)Nz&[]r�z
&[/*...*/]z&[%s]r)r�r�rr)r r�r��bracketsrrrrR*s�zArrayType.__init__cCst|jt�Sr-)�
isinstancer��strr$rrr�length_is_unknown7r(zArrayType.length_is_unknowncCst|j|�Sr-)r�r�)r �	newlengthrrr�resolve_length:r(zArrayType.resolve_lengthcCsH|��rtd|f��|j�||�t|j��||�}t||d||j�S)Nz)cannot render the type %r: unknown length�new_array_type)r�rr�r7r�rUr�)r r2r3�BPtrItemrrrr0=s�zArrayType.build_backend_typeN)	r@rArBr=rCrRr�r�r0rrrrr�&s
r�r\c@s,eZdZdZdZdd�Zdd�Zdd�ZdS)	�StructOrUnionOrEnumr[NcCs$|jp
d|j|jf}|d|_dS)Nz%s %sr)�	forcename�kindr;rr�rrr�build_c_name_with_markerLsz,StructOrUnionOrEnum.build_c_name_with_markercCs||_|��dSr-)r�r�)r r�rrr�force_the_namePsz"StructOrUnionOrEnum.force_the_namecCs|j�d�sJ�|jdd�S)Nr���)r�endswithr$rrr�get_official_nameTsz%StructOrUnionOrEnum.get_official_name)r@rArBr=r�r�r�r�rrrrr�Hsr�c@sjeZdZdZdZdZdZddd�Zdd�Zdd	d
�Z	dd�Z
dd
d�Zdd�Zdd�Z
dd�Zdd�ZdS)�
StructOrUnionNrFcCs*||_||_||_||_||_|��dSr-)r;�fldnames�fldtypes�
fldbitsize�fldqualsr�)r r;r�r�r�r�rrrrR_szStructOrUnion.__init__ccsD�|jdurt|j|j�D]\}}|dkrt|t�r|Vq
dSdS)Nr)r��zipr�r�r�)r r;�typerrr�anonymous_struct_fieldsgs�
��z%StructOrUnion.anonymous_struct_fieldsTccs~�|j}|durdt|j�}t|j|j|j|�D]#\}}}}|dkr5t|t�r5|r5|��D]}|Vq.q||||fVqdS)Nr�r)	r��lenr�r�r�r�r�r��
enumfields)r �expand_anonymous_struct_unionr�r;r��bitsizer
r"rrrr�ms�
����zStructOrUnion.enumfieldsc	Cszg}g}g}g}|��D]\}}}}|�|�|�|�|�|�|�|�qt|�|_t|�|_t|�|_t|�|_dSr-)r�r�rMr�r�r�r�)	r �names�types�bitsizesr�r;r�r�r
rrr�
force_flatten{s





zStructOrUnion.force_flattencCs$t�||||�}|s|�||�|Sr-)r�r7�finish_backend_type)r r2r3r4r5rrrr7�s
�zStructOrUnion.get_cached_btypecs|jr|jdkrtd|jf��dS�j|}d|_|jdur n�|jdur[��fdd�|jD�}tt|j||j	��}d}|j
rL|j
dkrGd}nd|j
f}�jj|||d	d	g|�R�n�g}|j\}}}	}
t
t|j��D]�}||}|j|}
t|
t�r�|
��r�|
j����}t|��|��\}}|dkr�|�d
|j|j|p�df�|
�|�}
|jd|�|
f|j|dd�|_|
����}t|
t�r�|
jdur�|dks�J�n��|�}||kr�|�d|j|j|p�d||f�|�|�qktt|j||j	|��}�j�||||	|
�d|_dS)
Nrz(recursive structure declaration for '%s'rcsg|]}|�����qSr)r7)r:r��r2r3rrr<�s�z5StructOrUnion.finish_backend_type.<locals>.<listcomp>r)�rr�zfield '%s.%s' has a bogus size?z{}z=field '%s.%s' is declared as %d bytes, but is really %d bytes)�	completedr�r;r.r��fixedlayout�listr�r�r��packedr��complete_struct_or_union�ranger�r�r�r�r�r7�divmod�sizeof�_verification_errorr�r�r�)r r2r3r5r��lst�extra_flags�fieldofs�	fieldsize�	totalsize�totalalignmentr_�fsize�ftype�	BItemType�nlen�nrest�
BFieldType�	bitemsizerr�rr��s|
�


�

�
�
��
�
����
z!StructOrUnion.finish_backend_typecCst|��r-)r)r �msgrrrr��sz!StructOrUnion._verification_errorcCs$|jr|jdurt|����dSdSr-)�partialr�rrr$rrr�check_not_partial�s�zStructOrUnion.check_not_partialcCs.|��|�|�t||d|j|��|d�S)Nznew_%s_type��key)r�r�rUr�r�rVrrrr0�s

�z StructOrUnion.build_backend_typer-)Tr?)r@rArBr�r�r�r�rRr�r�r�r7r�r�r�r0rrrrr�Ys


?r�c@�eZdZdZdS)�
StructType�structN�r@rArBr�rrrrr��rc@r)�	UnionType�unionNrrrrrr�rrc@sBeZdZdZdZdZddd�Zdd�Zdd	�Zd
d�Z	dd
�Z
dS)�EnumType�enumFNcCs$||_||_||_||_|��dSr-)r;�enumerators�
enumvalues�baseinttyper�)r r;r	r
rrrrrR�s
zEnumType.__init__cCs8t�||�|jdur|��}d|�dd�|_dSdS)Nrr�_)r�r�r�r�r)r r�r;rrrr��s

�zEnumType.force_the_namecCs |jr|jst|����dSdSr-)r��partial_resolvedrrr$rrrr��s�zEnumType.check_not_partialc
Cs4|��|�||�}t||d|��|j|j||d�S)N�
new_enum_typer�)r��build_baseinttyperUr�r	r
)r r2r3�
base_btyperrrr0s�zEnumType.build_backend_typec
Cs<|jdur|j�||�S|jrt|j�}t|j�}n!ddl}zt��Wn	ty-Ynw|�	d|�
��d}}|dkrJd}td�}td�}n
d}td�}td�}|�||�}	|�||�}
|�|	�}|�|
�}|dd	|d>kr�|dd	||>kr�|	S|dd	|d>kr�|dd	||>kr�|
St
d
|�
���)NrzU%r has no values explicitly defined; guessing that it is equivalent to 'unsigned int'rr`rarbrcr�r�z=%s values don't all fit into either 'long' or 'unsigned long')rr7r
�min�max�warnings�__warningregistry__�clear�	NameError�warnrrZr�r)
r r2r3�smallest_value�
largest_valuer�sign�
candidate1�
candidate2�btype1�btype2�size1�size2rrrrsF

��


�zEnumType.build_baseinttyper-)r@rArBr�r�r
rRr�r�r0rrrrrr�s
rcCs2|durd|}t|ddd�}|�|�d|_|S)Nz$%s�unknown_type)rr��origin�r;�
structnamer�rrrr!1s
r!cCs(|durd|}t|ddd�}t||�S)Nz$$%s)rr�r#rrr�unknown_ptr_type9s
r%cCs^t|tj�rtSt�tt|�d�st��t|�_	t|�j	Wd�S1s(wYdS)N�__typecache)
r�r��
ModuleType�_typecache_cffi_backend�global_lock�hasattrr��weakref�WeakValueDictionaryr&)�backendrrr�
get_typecacheCs$�r.c

Os�|�d||f�}|rJ�z|j|WStyYnwz
t|j|�|�}Wnty;}z	td|||f��d}~ww|j}t� |�|�}	|	durX|||<|Wd�S|	Wd�S1sdwYdS)Nr�z
%s: %r: %s)�pop�
_typecacher/r9r�r�r)�get)
�srctyper2�funcnamer��kwdsr��res�e�cache�res1rrrrUNs,���
�$�rUcCstd|d|�S)N�?r�rT)r2r5rrr�
pointer_cacheer%r:cCsH|jr t|jd�tur"d||jdff|jdd�|_dSdSdS)Nrz%s: %sr)r�r�r�)r6r;rrr�attach_exception_infohs(�r;r-)-r�r+�lockr�errorrrrr	rrr�objectrrErQ�	void_typerXrZr�r�r�r�r�r��
voidp_typer��const_voidp_typer�r��char_array_typer�r�rrrr!r%r)r,r(r.rUr:r;rrrr�<module>sP
/
	L	

G