
     i                         d Z ddlZddlmZ ddlmZ g dZ G d de          Z G d d	e          Z	d
 Z
 G d d          Z G d d          ZdS )zRImplements (a subset of) Sun XDR -- eXternal Data Representation.

See: RFC 1014

    N)BytesIOwraps)ErrorPackerUnpackerConversionErrorc                   $    e Zd ZdZd Zd Zd ZdS )r   zException 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                     || _         d S N)msg)selfr   s     [/srv/www/vhosts/g4struct/public_html/venv/lib/python3.11/site-packages/mda_xdrlib/xdrlib.py__init__zError.__init__   s        c                 *    t          | j                  S r   )reprr   r   s    r   __repr__zError.__repr__   s    DH~~r   c                 *    t          | j                  S r   )strr   r   s    r   __str__zError.__str__   s    48}}r   N)__name__
__module____qualname____doc__r   r   r    r   r   r   r      sK                 r   r   c                       e Zd ZdS )r	   N)r   r   r   r   r   r   r	   r	       s        Dr   r	   c                 <     t                      fd            }|S )z5 Wrap any raised struct.errors in a ConversionError. c                     	  | |          S # t           j        $ r }t          |j        d                   d d }~ww xY wNr   )structerrorr	   args)r   valueefunctions      r   resultz&raise_conversion_error.<locals>.result&   sQ    	78D%(((| 	7 	7 	7!!&),,$6	7s    >9>r   )r'   r(   s   ` r   raise_conversion_errorr)   #   s5     8__7 7 7 7 _7
 Mr   c                       e Zd ZdZd Zd Zd ZeZed             Z	ed             Z
e
Zd Zd ZeZed	             Zed
             Zd ZeZd ZeZeZd Zd Zd ZdS )r   z0Pack various data representations into a buffer.c                 .    |                                   d S r   resetr   s    r   r   zPacker.__init__2   s    

r   c                 ,    t                      | _        d S r   )r   _Packer__bufr   s    r   r-   zPacker.reset5   s    YY


r   c                 4    | j                                         S r   )r/   getvaluer   s    r   
get_bufferzPacker.get_buffer8   s    z""$$$r   c                 `    | j                             t          j        d|                     d S )N>Lr/   writer"   packr   xs     r   	pack_uintzPacker.pack_uint=   *    
T1--.....r   c                 `    | j                             t          j        d|                     d S )N>lr5   r8   s     r   pack_intzPacker.pack_intA   r;   r   c                 v    |r| j                             d           d S | j                             d           d S )Ns      s       )r/   r6   r8   s     r   	pack_boolzPacker.pack_boolG   sA     	,dj{+++++j{+++++r   c                 V   	 |                      |dz	  dz             n9# t          t          j        f$ r }t	          |j        d                   d d }~ww xY w	 |                      |dz             d S # t          t          j        f$ r }t	          |j        d                   d d }~ww xY w)N    l    r   )r:   	TypeErrorr"   r#   r	   r$   )r   r9   r&   s      r   pack_uhyperzPacker.pack_uhyperK   s    	7NN1b5:-....6<( 	7 	7 	7!!&),,$6	7	7NN1z>*****6<( 	7 	7 	7!!&),,$6	7s,    AAAA2 2B(B##B(c                 `    | j                             t          j        d|                     d S )N>fr5   r8   s     r   
pack_floatzPacker.pack_floatW   r;   r   c                 `    | j                             t          j        d|                     d S )N>dr5   r8   s     r   pack_doublezPacker.pack_double[   r;   r   c                     |dk     rt          d          |d |         }|dz   dz  dz  }||t          |          z
  dz  z   }| j                            |           d S )Nr    fstring size must be nonnegative          )
ValueErrorlenr/   r6   )r   nsdatas       r   pack_fstringzPacker.pack_fstring_   sm    q55?@@@!ucAXqLq3t99}--
r   c                 z    t          |          }|                     |           |                     ||           d S r   )rQ   r:   rU   )r   rS   rR   s      r   pack_stringzPacker.pack_stringi   s;    FFq!Qr   c                 z    |D ]"}|                      d            ||           #|                      d           d S )N   r   )r:   )r   list	pack_itemitems       r   	pack_listzPacker.pack_listq   sJ     	 	DNN1IdOOOOqr   c                 j    t          |          |k    rt          d          |D ]} ||           d S )Nzwrong array size)rQ   rP   )r   rR   rZ   r[   r\   s        r   pack_farrayzPacker.pack_farrayw   sH    t99>>/000 	 	DIdOOOO	 	r   c                 |    t          |          }|                     |           |                     |||           d S r   )rQ   r:   r_   )r   rZ   r[   rR   s       r   
pack_arrayzPacker.pack_array}   s=    IIqD),,,,,r   N)r   r   r   r   r   r-   r2   get_bufr)   r:   r>   	pack_enumr@   rD   
pack_hyperrG   rJ   rU   pack_fopaquerW   pack_opaque
pack_bytesr]   r_   ra   r   r   r   r   r   /   sD       ::    % % % G/ / / / / / I, , ,7 7 7 J/ / / / / /    L     
 KJ    - - - - -r   r   c                       e Zd 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dS )r   z;Unpacks various data representations from the given buffer.c                 0    |                      |           d S r   r,   r   rT   s     r   r   zUnpacker.__init__   s    

4r   c                 "    || _         d| _        d S r!   )_Unpacker__buf_Unpacker__posrj   s     r   r-   zUnpacker.reset   s    



r   c                     | j         S r   rm   r   s    r   get_positionzUnpacker.get_position   
    zr   c                     || _         d S r   ro   )r   positions     r   set_positionzUnpacker.set_position   s    


r   c                     | j         S r   )rl   r   s    r   r2   zUnpacker.get_buffer   rq   r   c                 ^    | j         t          | j                  k     rt          d          d S )Nzunextracted data remains)rm   rQ   rl   r   r   s    r   donezUnpacker.done   s.    :DJ''2333 ('r   c                     | j         }|dz   x| _         }| j        ||         }t          |          dk     rt          t	          j        d|          d         S )NrN   r4   r   rm   rl   rQ   EOFErrorr"   unpackr   ijrT   s       r   unpack_uintzUnpacker.unpack_uint   S    J1
Qz!A#t99q==N}T4((++r   c                     | j         }|dz   x| _         }| j        ||         }t          |          dk     rt          t	          j        d|          d         S )NrN   r=   r   ry   r|   s       r   
unpack_intzUnpacker.unpack_int   r   r   c                 D    t          |                                           S r   )boolr   r   s    r   unpack_boolzUnpacker.unpack_bool   s    DOO%%&&&r   c                 |    |                                  }|                                  }t          |          dz  |z  S )NrB   )r   int)r   hilos      r   unpack_uhyperzUnpacker.unpack_uhyper   s9    2ww{Rr   c                 D    |                                  }|dk    r|dz
  }|S )Nl            l            )r   r8   s     r   unpack_hyperzUnpacker.unpack_hyper   s/      """''Ar   c                     | j         }|dz   x| _         }| j        ||         }t          |          dk     rt          t	          j        d|          d         S )NrN   rF   r   ry   r|   s       r   unpack_floatzUnpacker.unpack_float   r   r   c                     | j         }|dz   x| _         }| j        ||         }t          |          dk     rt          t	          j        d|          d         S )N   rI   r   ry   r|   s       r   unpack_doublezUnpacker.unpack_double   r   r   c                     |dk     rt          d          | j        }||dz   dz  dz  z   }|t          | j                  k    rt          || _        | j        |||z            S )Nr   rL   rM   rN   )rP   rm   rQ   rl   rz   )r   rR   r}   r~   s       r   unpack_fstringzUnpacker.unpack_fstring   sj    q55?@@@J1q
Ns4:N
z!AaC%  r   c                 T    |                                  }|                     |          S r   )r   r   )r   rR   s     r   unpack_stringzUnpacker.unpack_string   s'    ""1%%%r   c                     g }	 |                                  }|dk    rn8|dk    rt          d|           |            }|                    |           S|S )NrY   r   z0 or 1 expected, got )r   r	   append)r   unpack_itemrZ   r9   r\   s        r   unpack_listzUnpacker.unpack_list   so    	  ""AAvvuAvv%o11&FGGG;==DKK	 r   c                 h    g }t          |          D ]}|                     |                        |S r   )ranger   )r   rR   r   rZ   r}   s        r   unpack_farrayzUnpacker.unpack_farray   s<    q 	' 	'AKK&&&&r   c                 V    |                                  }|                     ||          S r   )r   r   )r   r   rR   s      r   unpack_arrayzUnpacker.unpack_array   s)    !!![111r   N)r   r   r   r   r   r-   rp   rt   r2   rw   r   r   unpack_enumr   r   r   r   r   r   unpack_fopaquer   unpack_opaqueunpack_bytesr   r   r   r   r   r   r   r      sB       EE          4 4 4, , ,, , , K' ' '     
  , , ,, , ,! ! ! $N& & & "M L	 	 	  2 2 2 2 2r   r   )r   r"   ior   	functoolsr   __all__	Exceptionr   r	   r)   r   r   r   r   r   <module>r      s                
<
<
<    I   $	 	 	 	 	e 	 	 		 	 	Q- Q- Q- Q- Q- Q- Q- Q-jm2 m2 m2 m2 m2 m2 m2 m2 m2 m2r   