3 \�@sxdZddlZddlmZddlmZddddgZGd d�de�ZGd d�de�Z d d �Z Gd d�d�Z Gdd�d�Z dS)zRImplements (a subset of) Sun XDR -- eXternal Data Representation. See: RFC 1014 �N)�BytesIO)�wraps�Error�Packer�Unpacker�ConversionErrorc@s(eZdZdZdd�Zdd�Zdd�ZdS) rz�Exception class for this module. Use: except xdrlib.Error as var: # var has the Error instance for the exception Public ivars: msg -- contains the message cCs ||_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__�__doc__r rrr r r r rs c@s eZdZdS)rN)rrrr r r r r scst���fdd��}|S)z5 Wrap any raised struct.errors in a ConversionError. csDy �||�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�eZdZdZdd�Zdd�Zdd�ZeZedd ��Z ed d ��Z e Z d d �Z dd�Z e Zedd��Zedd��Zdd�ZeZdd�ZeZeZdd�Zdd�Zdd�ZdS)rz0Pack various data representations into a buffer.cCs |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)r0r$r4)r r2r1r 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)r0r/)r r1r7r8r9r r r � pack_farrayws  zPacker.pack_farraycCs$t|�}|j|�|j|||�dS)N)r0r$r;)r r7r8r1r r r � pack_array}s zPacker.pack_arrayN)rrrrr rr Zget_bufrr$r%Z pack_enumr&r)Z pack_hyperr*r+r4Z pack_fopaquer5Z pack_opaqueZ pack_bytesr:r;r<r r r r r/s*     c@s�eZdZdZdd�Zdd�Zdd�Zdd �Zd d �Zd d �Z dd�Z dd�Z e Z dd�Z dd�Zdd�Zdd�Zdd�Zdd�ZeZdd�ZeZeZd d!�Zd"d#�Zd$d%�Zd&S)'rz;Unpacks various data representations from the given buffer.cCs|j|�dS)N)r)r r3r r r r �szUnpacker.__init__cCs||_d|_dS)Nr)�_Unpacker__buf�_Unpacker__pos)r r3r 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>r0r=r)r r r r �done�sz Unpacker.donecCsB|j}|d|_}|j||�}t|�dkr2t�tjd|�dS)Nr-z>Lr)r>r=r0�EOFErrorr�unpack)r �i�jr3r r r � unpack_uint�s  zUnpacker.unpack_uintcCsB|j}|d|_}|j||�}t|�dkr2t�tjd|�dS)Nr-z>lr)r>r=r0rBrrC)r rDrEr3r r r � unpack_int�s  zUnpacker.unpack_intcCs t|j��S)N)�boolrG)r r r r � unpack_bool�szUnpacker.unpack_boolcCs |j�}|j�}t|�d>|BS)Nr')rF�int)r �hi�lor r r � unpack_uhyper�szUnpacker.unpack_uhypercCs|j�}|dkr|d}|S)Nll)rM)r r#r r r � unpack_hyper�szUnpacker.unpack_hypercCsB|j}|d|_}|j||�}t|�dkr2t�tjd|�dS)Nr-z>fr)r>r=r0rBrrC)r rDrEr3r r r � unpack_float�s  zUnpacker.unpack_floatcCsB|j}|d|_}|j||�}t|�dkr2t�tjd|�dS)N�z>dr)r>r=r0rBrrC)r rDrEr3r r r � unpack_double�s  zUnpacker.unpack_doublecCsT|dkrtd��|j}||ddd}|t|j�krr0r=rB)r r1rDrEr r r �unpack_fstring�szUnpacker.unpack_fstringcCs|j�}|j|�S)N)rFrR)r r1r r r � unpack_string�szUnpacker.unpack_stringcCsFg}x<|j�}|dkrP|dkr.td|f��|�}|j|�qW|S)Nrr6z0 or 1 expected, got %r)rFr�append)r � unpack_itemr7r#r9r r r � unpack_list�szUnpacker.unpack_listcCs&g}xt|�D]}|j|��qW|S)N)�rangerT)r r1rUr7rDr r r � unpack_farray�szUnpacker.unpack_farraycCs|j�}|j||�S)N)rFrX)r rUr1r r r � unpack_array�szUnpacker.unpack_arrayN)rrrrr rr?r@r rArFrGZ unpack_enumrIrMrNrOrQrRZunpack_fopaquerSZ unpack_opaqueZ unpack_bytesrVrXrYr r r r r�s.  ) rr�ior� functoolsr�__all__� Exceptionrrrrrr r r r �s    U