3 \�@stddlZddlmZddlmZddddgZGdd�de�ZGd d�de�Zd d �Z Gd d�d�Z Gd d�d�Z dS)�N)�BytesIO)�wraps�Error�Packer�Unpacker�ConversionErrorc@s$eZdZdd�Zdd�Zdd�ZdS)rcCs ||_dS)N)�msg)�selfr�r �/usr/lib64/python3.6/xdrlib.py�__init__szError.__init__cCs t|j�S)N)�reprr)r r r r �__repr__szError.__repr__cCs t|j�S)N)�strr)r r r r �__str__sz Error.__str__N)�__name__� __module__� __qualname__r rrr r r r rs c@s eZdZdS)rN)rrrr r r r r scst���fdd��}|S)NcsDy �||�Stjk r>}zt|jd�d�WYdd}~XnXdS)Nr)�struct�errorr�args)r �value�e)�functionr r �result&s z&raise_conversion_error..result)r)rrr )rr �raise_conversion_error#src@s�eZdZdd�Zdd�Zdd�ZeZedd��Zed d ��Z e Z d d �Z d d�Z e Z edd��Zedd��Zdd�ZeZdd�ZeZeZdd�Zdd�Zdd�ZdS)rcCs |j�dS)N)�reset)r r r r r 2szPacker.__init__cCs t�|_dS)N)r� _Packer__buf)r r r r r5sz Packer.resetcCs |jj�S)N)r�getvalue)r r r r � get_buffer8szPacker.get_buffercCs|jjtjd|��dS)Nz>L)r�writer�pack)r �xr r r � pack_uint=szPacker.pack_uintcCs|jjtjd|��dS)Nz>l)rr rr!)r r"r r r �pack_intAszPacker.pack_intcCs"|r|jjd�n |jjd�dS)Nss)rr )r r"r r r � pack_boolGszPacker.pack_boolcCs�y|j|d?d@�Wn8ttjfk rN}zt|jd�d�WYdd}~XnXy|j|d@�Wn8ttjfk r�}zt|jd�d�WYdd}~XnXdS)N� l��r)r#� TypeErrorrrrr)r r"rr r r � pack_uhyperKs"zPacker.pack_uhypercCs|jjtjd|��dS)Nz>f)rr rr!)r r"r r r � pack_floatWszPacker.pack_floatcCs|jjtjd|��dS)Nz>d)rr rr!)r r"r r r � pack_double[szPacker.pack_doublecCsP|dkrtd��|d|�}|ddd}||t|�d}|jj|�dS)Nrz fstring size must be nonnegative���)� ValueError�lenrr )r �n�s�datar r r � pack_fstring_s  zPacker.pack_fstringcCs"t|�}|j|�|j||�dS)N)r/r#r3)r r1r0r r r � pack_stringis zPacker.pack_stringcCs.x|D]}|jd�||�qW|jd�dS)N�r)r#)r �list� pack_item�itemr r r � pack_listqs   zPacker.pack_listcCs.t|�|krtd��x|D] }||�qWdS)Nzwrong array size)r/r.)r r0r6r7r8r r r � pack_farrayws  zPacker.pack_farraycCs$t|�}|j|�|j|||�dS)N)r/r#r:)r r6r7r0r r r � pack_array}s zPacker.pack_arrayN)rrrr rrZget_bufrr#r$Z pack_enumr%r(Z pack_hyperr)r*r3Z pack_fopaquer4Z pack_opaqueZ pack_bytesr9r:r;r r r r r/s(     c@s�eZdZdd�Zdd�Zdd�Zdd�Zd d �Zd d �Zd d�Z dd�Z e Z dd�Z dd�Z dd�Zdd�Zdd�Zdd�ZeZdd�ZeZeZdd �Zd!d"�Zd#d$�Zd%S)&rcCs|j|�dS)N)r)r r2r r r r �szUnpacker.__init__cCs||_d|_dS)Nr)�_Unpacker__buf�_Unpacker__pos)r r2r r r r�szUnpacker.resetcCs|jS)N)r=)r r r r � get_position�szUnpacker.get_positioncCs ||_dS)N)r=)r Zpositionr r r � set_position�szUnpacker.set_positioncCs|jS)N)r<)r r r r r�szUnpacker.get_buffercCs|jt|j�krtd��dS)Nzunextracted data remains)r=r/r<r)r r r r �done�sz Unpacker.donecCsB|j}|d|_}|j||�}t|�dkr2t�tjd|�dS)Nr,z>Lr)r=r<r/�EOFErrorr�unpack)r �i�jr2r r r � unpack_uint�s  zUnpacker.unpack_uintcCsB|j}|d|_}|j||�}t|�dkr2t�tjd|�dS)Nr,z>lr)r=r<r/rArrB)r rCrDr2r r r � unpack_int�s  zUnpacker.unpack_intcCs t|j��S)N)�boolrF)r r r r � unpack_bool�szUnpacker.unpack_boolcCs |j�}|j�}t|�d>|BS)Nr&)rE�int)r �hi�lor r r � unpack_uhyper�szUnpacker.unpack_uhypercCs|j�}|dkr|d}|S)Nll)rL)r r"r r r � unpack_hyper�szUnpacker.unpack_hypercCsB|j}|d|_}|j||�}t|�dkr2t�tjd|�dS)Nr,z>fr)r=r<r/rArrB)r rCrDr2r r r � unpack_float�s  zUnpacker.unpack_floatcCsB|j}|d|_}|j||�}t|�dkr2t�tjd|�dS)N�z>dr)r=r<r/rArrB)r rCrDr2r r r � unpack_double�s  zUnpacker.unpack_doublecCsT|dkrtd��|j}||ddd}|t|j�krr?rr@rErFZ unpack_enumrHrLrMrNrPrQZunpack_fopaquerRZ unpack_opaqueZ unpack_bytesrUrWrXr r r r r�s,  ) r�ior� functoolsr�__all__� Exceptionrrrrrr r r r �s    U