???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................î
j f  ã               @   s¦   d  Z  d d l Z d d l m Z d d l m Z d d d d g Z Gd	 d „  d e ƒ Z Gd
 d „  d e ƒ Z	 d d „  Z
 Gd d „  d ƒ Z Gd d „  d ƒ Z d S)zRImplements (a subset of) Sun XDR -- eXternal Data Representation.

See: RFC 1014

é    N)ÚBytesIO)ÚwrapsÚErrorÚPackerÚUnpackerÚConversionErrorc               @   s:   e  Z d  Z d Z d d „  Z d d „  Z d d „  Z d S)	r   zº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

    c             C   s   | |  _  d  S)N)Úmsg)Úselfr   © r
   ú+/opt/alt/python34/lib64/python3.4/xdrlib.pyÚ__init__   s    zError.__init__c             C   s   t  |  j ƒ S)N)Úreprr   )r	   r
   r
   r   Ú__repr__   s    zError.__repr__c             C   s   t  |  j ƒ S)N)Ústrr   )r	   r
   r
   r   Ú__str__   s    zError.__str__N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r
   r
   r
   r   r      s   	c               @   s   e  Z d  Z d S)r   N)r   r   r   r
   r
   r
   r   r       s   c                s"   t  ˆ  ƒ ‡  f d d †  ƒ } | S)z5 Wrap any raised struct.errors in a ConversionError. c                sV   y ˆ  |  | ƒ SWn> t  j k
 rQ } z t | j d ƒ d  ‚ WYd  d  } ~ Xn Xd  S)Nr   )ÚstructÚerrorr   Úargs)r	   ÚvalueÚe)Úfunctionr
   r   Úresult&   s    z&raise_conversion_error.<locals>.result)r   )r   r   r
   )r   r   Úraise_conversion_error#   s    r   c               @   sú   e  Z d  Z d Z d d „  Z d d „  Z d d „  Z e Z e d d	 „  ƒ Z	 e d
 d „  ƒ Z
 e
 Z d d „  Z d d „  Z e Z e d d „  ƒ Z e d d „  ƒ Z d d „  Z e Z d d „  Z e Z e Z d d „  Z d d „  Z d d „  Z d S)r   z0Pack various data representations into a buffer.c             C   s   |  j  ƒ  d  S)N)Úreset)r	   r
   r
   r   r   2   s    zPacker.__init__c             C   s   t  ƒ  |  _ d  S)N)r   Ú_Packer__buf)r	   r
   r
   r   r   5   s    zPacker.resetc             C   s   |  j  j ƒ  S)N)r   Úgetvalue)r	   r
   r
   r   Ú
get_buffer8   s    zPacker.get_bufferc             C   s    |  j  j t j d | ƒ ƒ d  S)Nz>L)r   Úwriter   Úpack)r	   Úxr
   r
   r   Ú	pack_uint=   s    zPacker.pack_uintc             C   s    |  j  j t j d | ƒ ƒ d  S)Nz>l)r   r!   r   r"   )r	   r#   r
   r
   r   Úpack_intA   s    zPacker.pack_intc             C   s-   | r |  j  j d ƒ n |  j  j d ƒ d  S)Ns      s       )r   r!   )r	   r#   r
   r
   r   Ú	pack_boolG   s     zPacker.pack_boolc             C   sÀ   y |  j  | d ?d @ƒ WnD t t j f k
 r_ } z t | j d ƒ d  ‚ WYd  d  } ~ Xn Xy |  j  | d @ƒ WnD t t j f k
 r» } z t | j d ƒ d  ‚ WYd  d  } ~ Xn Xd  S)Né    l   ÿÿ r   )r$   Ú	TypeErrorr   r   r   r   )r	   r#   r   r
   r
   r   Úpack_uhyperK   s    )zPacker.pack_uhyperc             C   s    |  j  j t j d | ƒ ƒ d  S)Nz>f)r   r!   r   r"   )r	   r#   r
   r
   r   Ú
pack_floatW   s    zPacker.pack_floatc             C   s    |  j  j t j d | ƒ ƒ d  S)Nz>d)r   r!   r   r"   )r	   r#   r
   r
   r   Úpack_double[   s    zPacker.pack_doublec             C   si   | d k  r t  d ƒ ‚ n  | d  | … } | d d d } | | t | ƒ d } |  j j | ƒ d  S)Nr   z fstring size must be nonnegativeé   é   s    )Ú
ValueErrorÚlenr   r!   )r	   ÚnÚsÚdatar
   r
   r   Úpack_fstring_   s    zPacker.pack_fstringc             C   s-   t  | ƒ } |  j | ƒ |  j | | ƒ d  S)N)r/   r$   r3   )r	   r1   r0   r
   r
   r   Úpack_stringi   s    zPacker.pack_stringc             C   s9   x% | D] } |  j  d ƒ | | ƒ q W|  j  d ƒ d  S)Né   r   )r$   )r	   ÚlistÚ	pack_itemÚitemr
   r
   r   Ú	pack_listq   s    zPacker.pack_listc             C   s@   t  | ƒ | k r! t d ƒ ‚ n  x | D] } | | ƒ q( Wd  S)Nzwrong array size)r/   r.   )r	   r0   r6   r7   r8   r
   r
   r   Úpack_farrayw   s    zPacker.pack_farrayc             C   s0   t  | ƒ } |  j | ƒ |  j | | | ƒ d  S)N)r/   r$   r:   )r	   r6   r7   r0   r
   r
   r   Ú
pack_array}   s    zPacker.pack_arrayN)r   r   r   r   r   r   r    Zget_bufr   r$   r%   Z	pack_enumr&   r)   Z
pack_hyperr*   r+   r3   Zpack_fopaquer4   Zpack_opaqueZ
pack_bytesr9   r:   r;   r
   r
   r
   r   r   /   s*   
c               @   s  e  Z d  Z d Z d d „  Z d d „  Z d d „  Z d d	 „  Z d
 d „  Z d d „  Z	 d d „  Z
 d d „  Z e Z d d „  Z d d „  Z d d „  Z d d „  Z d d „  Z d d „  Z e Z d d „  Z e Z e Z d  d! „  Z d" d# „  Z d$ d% „  Z d& S)'r   z;Unpacks various data representations from the given buffer.c             C   s   |  j  | ƒ d  S)N)r   )r	   r2   r
   r
   r   r   ‡   s    zUnpacker.__init__c             C   s   | |  _  d |  _ d  S)Nr   )Ú_Unpacker__bufÚ_Unpacker__pos)r	   r2   r
   r
   r   r   Š   s    	zUnpacker.resetc             C   s   |  j  S)N)r=   )r	   r
   r
   r   Úget_positionŽ   s    zUnpacker.get_positionc             C   s   | |  _  d  S)N)r=   )r	   Zpositionr
   r
   r   Úset_position‘   s    zUnpacker.set_positionc             C   s   |  j  S)N)r<   )r	   r
   r
   r   r    ”   s    zUnpacker.get_bufferc             C   s+   |  j  t |  j ƒ k  r' t d ƒ ‚ n  d  S)Nzunextracted data remains)r=   r/   r<   r   )r	   r
   r
   r   Údone—   s    zUnpacker.donec             C   s\   |  j  } | d |  _  } |  j | | … } t | ƒ d k  rH t ‚ n  t j d | ƒ d S)Nr-   z>Lr   )r=   r<   r/   ÚEOFErrorr   Úunpack)r	   ÚiÚjr2   r
   r
   r   Úunpack_uint›   s    		zUnpacker.unpack_uintc             C   s\   |  j  } | d |  _  } |  j | | … } t | ƒ d k  rH t ‚ n  t j d | ƒ d S)Nr-   z>lr   )r=   r<   r/   rA   r   rB   )r	   rC   rD   r2   r
   r
   r   Ú
unpack_int£   s    		zUnpacker.unpack_intc             C   s   t  |  j ƒ  ƒ S)N)ÚboolrF   )r	   r
   r
   r   Úunpack_bool­   s    zUnpacker.unpack_boolc             C   s*   |  j  ƒ  } |  j  ƒ  } t | ƒ d >| BS)Nr'   )rE   Úint)r	   ÚhiÚlor
   r
   r   Úunpack_uhyper°   s    zUnpacker.unpack_uhyperc             C   s)   |  j  ƒ  } | d k r% | d } n  | S)Nl            l            )rL   )r	   r#   r
   r
   r   Úunpack_hyperµ   s    zUnpacker.unpack_hyperc             C   s\   |  j  } | d |  _  } |  j | | … } t | ƒ d k  rH t ‚ n  t j d | ƒ d S)Nr-   z>fr   )r=   r<   r/   rA   r   rB   )r	   rC   rD   r2   r
   r
   r   Úunpack_float»   s    		zUnpacker.unpack_floatc             C   s\   |  j  } | d |  _  } |  j | | … } t | ƒ d k  rH t ‚ n  t j d | ƒ d S)Né   z>dr   )r=   r<   r/   rA   r   rB   )r	   rC   rD   r2   r
   r
   r   Úunpack_doubleÃ   s    		zUnpacker.unpack_doublec             C   sv   | d k  r t  d ƒ ‚ n  |  j } | | d d d } | t |  j ƒ k rX t ‚ n  | |  _ |  j | | | … S)Nr   z fstring size must be nonnegativer,   r-   )r.   r=   r/   r<   rA   )r	   r0   rC   rD   r
   r
   r   Úunpack_fstringË   s    			zUnpacker.unpack_fstringc             C   s   |  j  ƒ  } |  j | ƒ S)N)rE   rQ   )r	   r0   r
   r
   r   Úunpack_string×   s    zUnpacker.unpack_stringc             C   se   g  } xX |  j  ƒ  } | d k r% Pn  | d k rG t d | f ƒ ‚ n  | ƒ  } | j | ƒ q	 W| S)Nr   r5   z0 or 1 expected, got %r)rE   r   Úappend)r	   Úunpack_itemr6   r#   r8   r
   r
   r   Úunpack_listÞ   s     	zUnpacker.unpack_listc             C   s1   g  } x$ t  | ƒ D] } | j | ƒ  ƒ q W| S)N)ÚrangerS   )r	   r0   rT   r6   rC   r
   r
   r   Úunpack_farrayé   s    zUnpacker.unpack_farrayc             C   s   |  j  ƒ  } |  j | | ƒ S)N)rE   rW   )r	   rT   r0   r
   r
   r   Úunpack_arrayï   s    zUnpacker.unpack_arrayN)r   r   r   r   r   r   r>   r?   r    r@   rE   rF   Zunpack_enumrH   rL   rM   rN   rP   rQ   Zunpack_fopaquerR   Zunpack_opaqueZunpack_bytesrU   rW   rX   r
   r
   r
   r   r   „   s.   
)r   r   Úior   Ú	functoolsr   Ú__all__Ú	Exceptionr   r   r   r   r   r
   r
   r
   r   Ú<module>   s   U