ó
6Þ	Pc           @   s²   d  Z  d d l Z y d d l m Z Wn! e k
 rI d d l m Z n Xd d d d g Z d e f d „  ƒ  YZ d e f d	 „  ƒ  YZ	 d d d
 „  ƒ  YZ
 d d d „  ƒ  YZ d S(   sR   Implements (a subset of) Sun XDR -- eXternal Data Representation.

See: RFC 1014

iÿÿÿÿN(   t   StringIOt   Errort   Packert   Unpackert   ConversionErrorc           B   s)   e  Z d  Z d „  Z d „  Z d „  Z RS(   s¸   Exception class for this module. Use:

    except xdrlib.Error, var:
        # var has the Error instance for the exception

    Public ivars:
        msg -- contains the message

    c         C   s   | |  _  d  S(   N(   t   msg(   t   selfR   (    (    s   /usr/lib/python2.7/xdrlib.pyt   __init__   s    c         C   s   t  |  j ƒ S(   N(   t   reprR   (   R   (    (    s   /usr/lib/python2.7/xdrlib.pyt   __repr__   s    c         C   s   t  |  j ƒ S(   N(   t   strR   (   R   (    (    s   /usr/lib/python2.7/xdrlib.pyt   __str__   s    (   t   __name__t
   __module__t   __doc__R   R	   R   (    (    (    s   /usr/lib/python2.7/xdrlib.pyR      s   			c           B   s   e  Z RS(    (   R   R   (    (    (    s   /usr/lib/python2.7/xdrlib.pyR   "   s   c           B   s°   e  Z d  Z d „  Z d „  Z d „  Z e Z d „  Z d „  Z e Z	 d „  Z
 d „  Z e Z d „  Z d	 „  Z d
 „  Z e Z d „  Z e Z e Z d „  Z d „  Z d „  Z RS(   s0   Pack various data representations into a buffer.c         C   s   |  j  ƒ  d  S(   N(   t   reset(   R   (    (    s   /usr/lib/python2.7/xdrlib.pyR   *   s    c         C   s   t  ƒ  |  _ d  S(   N(   t	   _StringIOt   _Packer__buf(   R   (    (    s   /usr/lib/python2.7/xdrlib.pyR   -   s    c         C   s   |  j  j ƒ  S(   N(   R   t   getvalue(   R   (    (    s   /usr/lib/python2.7/xdrlib.pyt
   get_buffer0   s    c         C   s    |  j  j t j d | ƒ ƒ d  S(   Ns   >L(   R   t   writet   structt   pack(   R   t   x(    (    s   /usr/lib/python2.7/xdrlib.pyt	   pack_uint5   s    c         C   s    |  j  j t j d | ƒ ƒ d  S(   Ns   >l(   R   R   R   R   (   R   R   (    (    s   /usr/lib/python2.7/xdrlib.pyt   pack_int8   s    c         C   s-   | r |  j  j d ƒ n |  j  j d ƒ d  S(   Nt      t       (   R   R   (   R   R   (    (    s   /usr/lib/python2.7/xdrlib.pyt	   pack_bool=   s     c         C   s*   |  j  | d ?d @ƒ |  j  | d @ƒ d  S(   Ni    l   ÿÿ (   R   (   R   R   (    (    s   /usr/lib/python2.7/xdrlib.pyt   pack_uhyperA   s    c         C   sF   y  |  j  j t j d | ƒ ƒ Wn t j k
 rA } t | ‚ n Xd  S(   Ns   >f(   R   R   R   R   t   errorR   (   R   R   R   (    (    s   /usr/lib/python2.7/xdrlib.pyt
   pack_floatG   s      c         C   sF   y  |  j  j t j d | ƒ ƒ Wn t j k
 rA } t | ‚ n Xd  S(   Ns   >d(   R   R   R   R   R   R   (   R   R   R   (    (    s   /usr/lib/python2.7/xdrlib.pyt   pack_doubleL   s      c         C   s`   | d k  r t  d ‚ n  | |  } | d d d } | | t | ƒ d } |  j j | ƒ d  S(   Ni    s    fstring size must be nonnegativei   i   t    (   t
   ValueErrort   lenR   R   (   R   t   nt   st   data(    (    s   /usr/lib/python2.7/xdrlib.pyt   pack_fstringQ   s    
c         C   s-   t  | ƒ } |  j | ƒ |  j | | ƒ d  S(   N(   R#   R   R'   (   R   R%   R$   (    (    s   /usr/lib/python2.7/xdrlib.pyt   pack_string[   s    c         C   s9   x% | D] } |  j  d ƒ | | ƒ q W|  j  d ƒ d  S(   Ni   i    (   R   (   R   t   listt	   pack_itemt   item(    (    s   /usr/lib/python2.7/xdrlib.pyt	   pack_listc   s    c         C   s=   t  | ƒ | k r t d ‚ n  x | D] } | | ƒ q% Wd  S(   Ns   wrong array size(   R#   R"   (   R   R$   R)   R*   R+   (    (    s   /usr/lib/python2.7/xdrlib.pyt   pack_farrayi   s    c         C   s0   t  | ƒ } |  j | ƒ |  j | | | ƒ d  S(   N(   R#   R   R-   (   R   R)   R*   R$   (    (    s   /usr/lib/python2.7/xdrlib.pyt
   pack_arrayo   s    (   R   R   R   R   R   R   t   get_bufR   R   t	   pack_enumR   R   t
   pack_hyperR   R    R'   t   pack_fopaqueR(   t   pack_opaquet
   pack_bytesR,   R-   R.   (    (    (    s   /usr/lib/python2.7/xdrlib.pyR   '   s*   													c           B   sÈ   e  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 e
 Z d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d „  Z e Z d „  Z e Z e Z d „  Z d „  Z d „  Z RS(   s;   Unpacks various data representations from the given buffer.c         C   s   |  j  | ƒ d  S(   N(   R   (   R   R&   (    (    s   /usr/lib/python2.7/xdrlib.pyR   y   s    c         C   s   | |  _  d |  _ d  S(   Ni    (   t   _Unpacker__buft   _Unpacker__pos(   R   R&   (    (    s   /usr/lib/python2.7/xdrlib.pyR   |   s    	c         C   s   |  j  S(   N(   R6   (   R   (    (    s   /usr/lib/python2.7/xdrlib.pyt   get_position€   s    c         C   s   | |  _  d  S(   N(   R6   (   R   t   position(    (    s   /usr/lib/python2.7/xdrlib.pyt   set_positionƒ   s    c         C   s   |  j  S(   N(   R5   (   R   (    (    s   /usr/lib/python2.7/xdrlib.pyR   †   s    c         C   s+   |  j  t |  j ƒ k  r' t d ƒ ‚ n  d  S(   Ns   unextracted data remains(   R6   R#   R5   R   (   R   (    (    s   /usr/lib/python2.7/xdrlib.pyt   done‰   s    c         C   s‚   |  j  } | d |  _  } |  j | | !} t | ƒ d k  rE t ‚ n  t j d | ƒ d } y t | ƒ SWn t k
 r} | SXd  S(   Ni   s   >Li    (   R6   R5   R#   t   EOFErrorR   t   unpackt   intt   OverflowError(   R   t   it   jR&   R   (    (    s   /usr/lib/python2.7/xdrlib.pyt   unpack_uint   s    		c         C   sY   |  j  } | d |  _  } |  j | | !} t | ƒ d k  rE t ‚ n  t j d | ƒ d S(   Ni   s   >li    (   R6   R5   R#   R;   R   R<   (   R   R?   R@   R&   (    (    s   /usr/lib/python2.7/xdrlib.pyt
   unpack_int™   s    		c         C   s   t  |  j ƒ  ƒ S(   N(   t   boolRB   (   R   (    (    s   /usr/lib/python2.7/xdrlib.pyt   unpack_bool£   s    c         C   s*   |  j  ƒ  } |  j  ƒ  } t | ƒ d >| BS(   Ni    (   RA   t   long(   R   t   hit   lo(    (    s   /usr/lib/python2.7/xdrlib.pyt   unpack_uhyper¦   s    c         C   s)   |  j  ƒ  } | d k r% | d } n  | S(   Nl            l            (   RH   (   R   R   (    (    s   /usr/lib/python2.7/xdrlib.pyt   unpack_hyper«   s    c         C   sY   |  j  } | d |  _  } |  j | | !} t | ƒ d k  rE t ‚ n  t j d | ƒ d S(   Ni   s   >fi    (   R6   R5   R#   R;   R   R<   (   R   R?   R@   R&   (    (    s   /usr/lib/python2.7/xdrlib.pyt   unpack_float±   s    		c         C   sY   |  j  } | d |  _  } |  j | | !} t | ƒ d k  rE t ‚ n  t j d | ƒ d S(   Ni   s   >di    (   R6   R5   R#   R;   R   R<   (   R   R?   R@   R&   (    (    s   /usr/lib/python2.7/xdrlib.pyt   unpack_double¹   s    		c         C   sp   | d k  r t  d ‚ n  |  j } | | d d d } | t |  j ƒ k rU t ‚ n  | |  _ |  j | | | !S(   Ni    s    fstring size must be nonnegativei   i   (   R"   R6   R#   R5   R;   (   R   R$   R?   R@   (    (    s   /usr/lib/python2.7/xdrlib.pyt   unpack_fstringÁ   s    			c         C   s   |  j  ƒ  } |  j | ƒ S(   N(   RA   RL   (   R   R$   (    (    s   /usr/lib/python2.7/xdrlib.pyt   unpack_stringÍ   s    c         C   sa   g  } xT |  j  ƒ  } | d k r% Pn  | d k rD t d | f ‚ n  | ƒ  } | j | ƒ q	 | S(   Ni    i   s   0 or 1 expected, got %r(   RA   R   t   append(   R   t   unpack_itemR)   R   R+   (    (    s   /usr/lib/python2.7/xdrlib.pyt   unpack_listÔ   s     	c         C   s1   g  } x$ t  | ƒ D] } | j | ƒ  ƒ q W| S(   N(   t   rangeRN   (   R   R$   RO   R)   R?   (    (    s   /usr/lib/python2.7/xdrlib.pyt   unpack_farrayß   s    c         C   s   |  j  ƒ  } |  j | | ƒ S(   N(   RA   RR   (   R   RO   R$   (    (    s   /usr/lib/python2.7/xdrlib.pyt   unpack_arrayå   s    (   R   R   R   R   R   R7   R9   R   R:   RA   RB   t   unpack_enumRD   RH   RI   RJ   RK   RL   t   unpack_fopaqueRM   t   unpack_opaquet   unpack_bytesRP   RR   RS   (    (    (    s   /usr/lib/python2.7/xdrlib.pyR   v   s.   														
			(    (    (   R   R   t	   cStringIOR    R   t   ImportErrort   __all__t	   ExceptionR   R   R   R   (    (    (    s   /usr/lib/python2.7/xdrlib.pyt   <module>   s   O