mò
­fIc           @   sÌ   d  Z  d k Z y d k l Z Wn  e j
 o d k l Z n Xd d d d g Z d e f d „  ƒ  YZ d e f d „  ƒ  YZ	 d f  d	 „  ƒ  YZ
 d f  d
 „  ƒ  YZ d „  Z e d j o e ƒ  n d S(   sR   Implements (a subset of) Sun XDR -- eXternal Data Representation.

See: RFC 1014

N(   s   StringIOt   Errort   Packert   Unpackert   ConversionErrorc           B   s)   t  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   msgt   self(   R   R   (    (    t#   /mit/python/lib/python2.4/xdrlib.pyt   __init__   s    c         C   s   t  |  i ƒ S(   N(   t   reprR   R   (   R   (    (    R   t   __repr__   s    c         C   s   t  |  i ƒ S(   N(   t   strR   R   (   R   (    (    R   t   __str__   s    (   t   __name__t
   __module__t   __doc__R   R	   R   (    (    (    R   R       s   	 		c           B   s   t  Z RS(   N(   R   R   (    (    (    R   R   "   s   c           B   s­   t  Z d  Z d „  Z d „  Z d „  Z e Z d „  Z e 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   |  i ƒ  d  S(   N(   R   t   reset(   R   (    (    R   R   *   s    c         C   s   t  ƒ  |  _ d  S(   N(   t	   _StringIOR   t   _Packer__buf(   R   (    (    R   R   -   s    c         C   s   |  i i ƒ  S(   N(   R   R   t   getvalue(   R   (    (    R   t
   get_buffer0   s    c         C   s    |  i i t i d | ƒ ƒ d  S(   Ns   >L(   R   R   t   writet   structt   packt   x(   R   R   (    (    R   t	   pack_uint5   s    c         C   s/   | o |  i i d ƒ n |  i i d ƒ d  S(   Nt      t       (   R   R   R   R   (   R   R   (    (    R   t	   pack_bool;   s     c         C   s*   |  i | d ?d @ƒ |  i | d @ƒ d  S(   Ni    l   ÿÿ (   R   R   R   (   R   R   (    (    R   t   pack_uhyper?   s    c         C   sH   y  |  i i t i d | ƒ ƒ Wn! t i j
 o } t | ‚ n Xd  S(   Ns   >f(	   R   R   R   R   R   R   t   errorR   R   (   R   R   R   (    (    R   t
   pack_floatE   s      c         C   sH   y  |  i i t i d | ƒ ƒ Wn! t i j
 o } t | ‚ n Xd  S(   Ns   >d(	   R   R   R   R   R   R   R   R   R   (   R   R   R   (    (    R   t   pack_doubleJ   s      c         C   sb   | d j  o t d ‚ n | |  } | d d d } | | t | ƒ d } |  i i | ƒ d  S(   Ni    s    fstring size must be nonnegativei   i   t    (   t   nt
   ValueErrort   st   datat   lenR   R   R   (   R   R!   R#   R$   (    (    R   t   pack_fstringO   s    
c         C   s-   t  | ƒ } |  i | ƒ |  i | | ƒ d  S(   N(   R%   R#   R!   R   R   R&   (   R   R#   R!   (    (    R   t   pack_stringY   s    c         C   s9   x% | D] } |  i d ƒ | | ƒ q W|  i d ƒ d  S(   Ni   i    (   t   listt   itemR   R   t	   pack_item(   R   R(   R*   R)   (    (    R   t	   pack_lista   s
     c         C   s?   t  | ƒ | j o t d ‚ n x | D] } | | ƒ q' Wd  S(   Ns   wrong array size(   R%   R(   R!   R"   R)   R*   (   R   R!   R(   R*   R)   (    (    R   t   pack_farrayg   s
     c         C   s0   t  | ƒ } |  i | ƒ |  i | | | ƒ d  S(   N(   R%   R(   R!   R   R   R,   R*   (   R   R(   R*   R!   (    (    R   t
   pack_arraym   s    (   R   R   R   R   R   R   t   get_bufR   t   pack_intt	   pack_enumR   R   t
   pack_hyperR   R   R&   t   pack_fopaqueR'   t   pack_opaquet
   pack_bytesR+   R,   R-   (    (    (    R   R   '   s*    												c           B   sÅ   t  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 e
 Z e
 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   |  i | ƒ d  S(   N(   R   R   R$   (   R   R$   (    (    R   R   w   s    c         C   s   | |  _ d |  _ d  S(   Ni    (   R$   R   t   _Unpacker__buft   _Unpacker__pos(   R   R$   (    (    R   R   z   s    	c         C   s   |  i S(   N(   R   R6   (   R   (    (    R   t   get_position~   s    c         C   s   | |  _ d  S(   N(   t   positionR   R6   (   R   R8   (    (    R   t   set_position   s    c         C   s   |  i S(   N(   R   R5   (   R   (    (    R   R   „   s    c         C   s-   |  i t |  i ƒ j  o t d ƒ ‚ n d  S(   Ns   unextracted data remains(   R   R6   R%   R5   R    (   R   (    (    R   t   done‡   s    c         C   s‰   |  i } | d |  _ } |  i | | !} t | ƒ d j  o
 t ‚ n t i	 d | ƒ d } y t | ƒ SWn t j
 o | Sn Xd  S(   Ni   s   >Li    (   R   R6   t   it   jR5   R$   R%   t   EOFErrorR   t   unpackR   t   intt   OverflowError(   R   R;   R<   R   R$   (    (    R   t   unpack_uint‹   s    	
c         C   s[   |  i } | d |  _ } |  i | | !} t | ƒ d j  o
 t ‚ n t i	 d | ƒ d S(   Ni   s   >li    (
   R   R6   R;   R<   R5   R$   R%   R=   R   R>   (   R   R;   R<   R$   (    (    R   t
   unpack_int—   s    	
c         C   s*   |  i ƒ  } |  i ƒ  } t | ƒ d >| BS(   Ni    (   R   RA   t   hit   lot   long(   R   RD   RC   (    (    R   t   unpack_uhyper¢   s    c         C   s+   |  i ƒ  } | d j o | d } n | S(   Nl            l            (   R   RF   R   (   R   R   (    (    R   t   unpack_hyper§   s    c         C   s[   |  i } | d |  _ } |  i | | !} t | ƒ d j  o
 t ‚ n t i	 d | ƒ d S(   Ni   s   >fi    (
   R   R6   R;   R<   R5   R$   R%   R=   R   R>   (   R   R;   R<   R$   (    (    R   t   unpack_float­   s    	
c         C   s[   |  i } | d |  _ } |  i | | !} t | ƒ d j  o
 t ‚ n t i	 d | ƒ d S(   Ni   s   >di    (
   R   R6   R;   R<   R5   R$   R%   R=   R   R>   (   R   R;   R<   R$   (    (    R   t   unpack_doubleµ   s    	
c         C   st   | d j  o t d ‚ n |  i } | | d d d } | t |  i ƒ j o
 t ‚ n | |  _ |  i | | | !S(   Ni    s    fstring size must be nonnegativei   i   (	   R!   R"   R   R6   R;   R<   R%   R5   R=   (   R   R!   R;   R<   (    (    R   t   unpack_fstring½   s    	
	c         C   s   |  i ƒ  } |  i | ƒ S(   N(   R   RA   R!   RJ   (   R   R!   (    (    R   t   unpack_stringÉ   s    c         C   sg   g  } xZ |  i ƒ  } | d j o Pn | d j o t d | f ‚ n | ƒ  } | i | ƒ q	 W| S(   Ni   i    s   0 or 1 expected, got %r(   R(   R   RA   R   R   t   unpack_itemR)   t   append(   R   RL   R(   R)   R   (    (    R   t   unpack_listÐ   s       	c         C   s1   g  } x$ t | ƒ D] } | i | ƒ  ƒ q W| S(   N(   R(   t   rangeR!   R;   RM   RL   (   R   R!   RL   R;   R(   (    (    R   t   unpack_farrayÛ   s
     c         C   s   |  i ƒ  } |  i | | ƒ S(   N(   R   RA   R!   RP   RL   (   R   RL   R!   (    (    R   t   unpack_arrayá   s    (   R   R   R   R   R   R7   R9   R   R:   RA   RB   t   unpack_enumt   unpack_boolRF   RG   RH   RI   RJ   t   unpack_fopaqueRK   t   unpack_opaquet   unpack_bytesRN   RP   RQ   (    (    (    R   R   t   s.    													
			c          C   s  t  ƒ  } | i d f | i d f | i d f | i d  f | i d! f | i d" f | i d# f | i	 t
 d ƒ | i f f | i d d d	 d
 g | i f f g	 }	 d g t |	 ƒ } d }  xg |	 D]_ \ } } d G|  Gy | | Œ  d GHWn+ t j
 o } d G| i GHd | |  <n X|  d }  q¿ W| i ƒ  }
 t |
 ƒ } | i f  d „  f | i f  d „  f | i f  d „  f | i f  d „  f | i f  d „  f | i f  d „  f | i f  d „  f | i | i f d „  f | i  | i f d „  f g	 } d }  x’ | D]Š \ } } } d G|  GyE | |  o1 | | Œ  } | | ƒ o d p d Gd G| GHn d GHWn! t j
 o } d G| i GHn X|  d }  qûWd  S($   Ni	   t   hellol   - f1.8999999999999999s   hello worldi   t   whatt   ist   hapnint   doctori   i    s	   pack testt	   succeededs   ConversionError:c         C   s
   |  d j S(   Ni	   (   R   (   R   (    (    R   t   <lambda>  s    c         C   s   |  S(   N(   R   (   R   (    (    R   R]     s    c         C   s   |  S(   N(   R   (   R   (    (    R   R]     s    c         C   s
   |  d j S(   Nl   - (   R   (   R   (    (    R   R]     s    c         C   s   d |  j  o
 d j  n S(   Nf1.8899999999999999f1.9099999999999999(   R   (   R   (    (    R   R]     s    c         C   s   d |  j  o
 d j  n S(   Nf1.8899999999999999f1.9099999999999999(   R   (   R   (    (    R   R]     s    c         C   s
   |  d j S(   Ns   hello world(   R   (   R   (    (    R   R]   	  s    c         C   s   |  t d ƒ j S(   Ni   (   R   RO   (   R   (    (    R   R]   
  s    c         C   s   |  d d d d g j S(   NRX   RY   RZ   R[   (   R   (   R   (    (    R   R]     s    s   unpack testt   failedt   :t   skipping(   i	   (   N(   RW   (   l   - (   f1.8999999999999999(   f1.8999999999999999(   s   hello world($   R   t   pR   R   t   NoneR   R   R   R'   R+   RO   R-   t   packtestR%   t   succeedlistt   countt   methodt   argsR   t   varR   R   R$   R   t   upRA   RS   RF   RH   RI   RK   RN   RQ   t
   unpacktestt   predR   (   Re   Rk   Rg   Rj   Ri   Ra   Rd   Rh   R   Rc   R$   Rf   (    (    R   t   _testç   s:    	– 
	´ %	t   __main__(   R   R   t	   cStringIOt   StringIOR   t   ImportErrort   __all__t	   ExceptionR    R   R   R   Rl   R   (   R   Rq   Rl   R   R   R   R    R   (    (    R   t   ?   s   	Ms	5