U
    .‰d\  ã                4   @   s8  d dl mZ G dd„ deƒZdd„ Zd ZdZdZdZd	Z	d
Z
dZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZd ZdZdZdZdZdZ dZ!dZ"d	Z#dZ$d
Z%d Z&dZ'd!Z(dZ)d"Z*dZ+d#Z,dZ-d$Z.dZ/d%Z0dZ1d&Z2dZ3d'Z4dZ5d(Z6dZ7d)Z8dZ9d*Z:dZ;d+Z<dZ=d,Z>dZ?d-Z@dZAd.ZBdZCd/ZDd0ZEd1ZFd2ZGd3ZHd4ZId5ZJd6ZKd7ZLd8ZMd9ZNd:ZOd;ZPd<ZQd:ZReee!e#e%eee e"e$e&e'e(e)eJeKee*eLeMe+e,e-e.e/e0e1e2e3e4e5e6e7e8e9e:e;e<e=e>e?e@eAeBeCeDeEeFeGeHeId=œ3ZSd ZTdZUdZVdZWd"ZXeYd>d?„ d@D ƒƒZZi Z[e\e]ƒ  ^¡ ƒD ]2\Z_Z`e_ adA¡r ebe`ecƒr e_ddB… e[e`< q dBS )Cé   )ÚVerificationErrorc                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚCffiOpc                 C   s   || _ || _d S )N)ÚopÚarg)Úselfr   r   © r   ú4/tmp/pip-unpacked-wheel-ydtb9bbb/cffi/cffi_opcode.pyÚ__init__   s    zCffiOp.__init__c                 C   s>   | j d kr&t| jtƒst‚d| jf S t| j  }d|| jf S )Nz(_cffi_opcode_t)(%s)z_CFFI_OP(_CFFI_OP_%s, %s))r   Ú
isinstancer   ÚstrÚAssertionErrorÚ
CLASS_NAME©r   Ú	classnamer   r   r   Ú	as_c_expr   s
    

zCffiOp.as_c_exprc                 C   sn   | j d kr>| j ¡ r>t| jƒ}|dkr6td| jf ƒ‚t|ƒS t| jtƒrZtd| jf ƒ‚t| jd> | j B ƒS )Nl        z"cannot emit %r: limited to 2**31-1zcannot emit to Python: %ré   )	r   r   ÚisdigitÚintÚOverflowErrorÚformat_four_bytesr
   r   r   )r   Úvaluer   r   r   Úas_python_bytes   s    
ÿzCffiOp.as_python_bytesc                 C   s   t  | j| j¡}d|| jf S )Nz(%s %s))r   Úgetr   r   r   r   r   r   Ú__str__   s    zCffiOp.__str__N)Ú__name__Ú
__module__Ú__qualname__r	   r   r   r   r   r   r   r   r      s   r   c                 C   s,   d| d? d@ | d? d@ | d? d@ | d@ f S )Nz\x%02X\x%02X\x%02X\x%02Xé   éÿ   é   r   r   )Únumr   r   r   r      s    


ür   é   é   é   é	   é   é   é   é   é   é   é   é   é   é   é   é!   é#   é%   é'   é)   é    é   é   é   r   é
   é   é   r   é   é   é   r   é   é   é   é    é"   é$   é&   é(   é*   é+   é,   é-   é.   é/   é0   é1   é2   é3   é4   éÿÿÿÿéþÿÿÿéýÿÿÿ)3ÚcharÚshortr   Úlongz	long longzsigned charzunsigned charzunsigned shortzunsigned intzunsigned longzunsigned long longÚfloatÚdoublezlong doublezfloat _Complexzdouble _ComplexZ_BoolZwchar_tZchar16_tZchar32_tZint8_tZuint8_tZint16_tZuint16_tZint32_tZuint32_tZint64_tZuint64_tZintptr_tZ	uintptr_tZ	ptrdiff_tZsize_tZssize_tZint_least8_tZuint_least8_tZint_least16_tZuint_least16_tZint_least32_tZuint_least32_tZint_least64_tZuint_least64_tZint_fast8_tZuint_fast8_tZint_fast16_tZuint_fast16_tZint_fast32_tZuint_fast32_tZint_fast64_tZuint_fast64_tZintmax_tZ	uintmax_tc                 C   s   g | ]}d | t ƒ | f‘qS )Z_CFFI_)Úglobals)Ú.0Ú_keyr   r   r   Ú
<listcomp>´   s   ÿr]   )ÚF_UNIONÚF_CHECK_FIELDSÚF_PACKEDÚ
F_EXTERNALÚF_OPAQUEZOP_N)dÚerrorr   Úobjectr   r   ZOP_PRIMITIVEZ
OP_POINTERZOP_ARRAYZOP_OPEN_ARRAYZOP_STRUCT_UNIONZOP_ENUMZOP_FUNCTIONZOP_FUNCTION_ENDZOP_NOOPZOP_BITFIELDZOP_TYPENAMEZOP_CPYTHON_BLTN_VZOP_CPYTHON_BLTN_NZOP_CPYTHON_BLTN_OZOP_CONSTANTZOP_CONSTANT_INTZOP_GLOBAL_VARZOP_DLOPEN_FUNCZOP_DLOPEN_CONSTZOP_GLOBAL_VAR_FZOP_EXTERN_PYTHONZ	PRIM_VOIDZ	PRIM_BOOLZ	PRIM_CHARZ
PRIM_SCHARZ
PRIM_UCHARZ
PRIM_SHORTZPRIM_USHORTZPRIM_INTZ	PRIM_UINTZ	PRIM_LONGZ
PRIM_ULONGZPRIM_LONGLONGZPRIM_ULONGLONGZ
PRIM_FLOATZPRIM_DOUBLEZPRIM_LONGDOUBLEZ
PRIM_WCHARZ	PRIM_INT8Z
PRIM_UINT8Z
PRIM_INT16ZPRIM_UINT16Z
PRIM_INT32ZPRIM_UINT32Z
PRIM_INT64ZPRIM_UINT64ZPRIM_INTPTRZPRIM_UINTPTRZPRIM_PTRDIFFZ	PRIM_SIZEZ
PRIM_SSIZEZPRIM_INT_LEAST8ZPRIM_UINT_LEAST8ZPRIM_INT_LEAST16ZPRIM_UINT_LEAST16ZPRIM_INT_LEAST32ZPRIM_UINT_LEAST32ZPRIM_INT_LEAST64ZPRIM_UINT_LEAST64ZPRIM_INT_FAST8ZPRIM_UINT_FAST8ZPRIM_INT_FAST16ZPRIM_UINT_FAST16ZPRIM_INT_FAST32ZPRIM_UINT_FAST32ZPRIM_INT_FAST64ZPRIM_UINT_FAST64ZPRIM_INTMAXZPRIM_UINTMAXZPRIM_FLOATCOMPLEXZPRIM_DOUBLECOMPLEXZPRIM_CHAR16ZPRIM_CHAR32Z	_NUM_PRIMZ_UNKNOWN_PRIMZ_UNKNOWN_FLOAT_PRIMZ_UNKNOWN_LONG_DOUBLEZ_IO_FILE_STRUCTZPRIMITIVE_TO_INDEXr^   r_   r`   ra   rb   ÚdictZG_FLAGSr   ÚlistrZ   ÚitemsÚ_nameÚ_valueÚ
startswithr
   r   r   r   r   r   Ú<module>   s   Í6ÿ