U
    ڲgc                  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-lbi5ej3i/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_cffi_float_complex_tZ_cffi_double_complex_tZ_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