î
ëT  ã               @   sª   d  Z  d d l Z d d l Z e j Z d d d „ Z Gd d „  d e j ƒ Z Gd d	 „  d	 e j ƒ Z Gd
 d „  d e j	 ƒ Z	 Gd d „  d e j
 ƒ Z
 d d „  Z d S)z
Python 'utf-32' Codec
é    NÚstrictc             C   s   t  j |  | d ƒ S)NT)ÚcodecsÚutf_32_decode)ÚinputÚerrors© r   úS/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/encodings/utf_32.pyÚdecode
   s    r	   c               @   sR   e  Z d  Z d d d „ Z d d d „ Z d d „  Z d	 d
 „  Z d d „  Z d S)ÚIncrementalEncoderr   c             C   s    t  j j |  | ƒ d  |  _ d  S)N)r   r
   Ú__init__Úencoder)Úselfr   r   r   r   r      s    zIncrementalEncoder.__init__Fc             C   sm   |  j  d  k rV t j | |  j ƒ d } t j d k rF t j |  _  n t j |  _  | S|  j  | |  j ƒ d S)Nr   Úlittle)r   r   Úutf_32_encoder   ÚsysÚ	byteorderÚutf_32_le_encodeÚutf_32_be_encode)r   r   ÚfinalÚresultr   r   r   Úencode   s    zIncrementalEncoder.encodec             C   s   t  j j |  ƒ d  |  _ d  S)N)r   r
   Úresetr   )r   r   r   r   r      s    zIncrementalEncoder.resetc             C   s   |  j  d  k r d Sd S)Né   r   )r   )r   r   r   r   Úgetstate    s    zIncrementalEncoder.getstatec             C   s@   | r d  |  _  n* t j d k r0 t j |  _  n t j |  _  d  S)Nr   )r   r   r   r   r   r   )r   Ústater   r   r   Úsetstate'   s
    zIncrementalEncoder.setstateN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r   r   r   r
      s
   
r
   c               @   sO   e  Z d  Z d d d „ Z d d „  Z d d „  Z d d	 „  Z d
 d „  Z d S)ÚIncrementalDecoderr   c             C   s    t  j j |  | ƒ d  |  _ d  S)N)r   ÚBufferedIncrementalDecoderr   Údecoder)r   r   r   r   r   r   1   s    zIncrementalDecoder.__init__c             C   s¡   |  j  d  k r‹ t j | | d | ƒ \ } } } | d k rK t j |  _  n6 | d k rf t j |  _  n | d k r� t d ƒ ‚ n  | | f S|  j  | |  j | ƒ S)Nr   é   é   z%UTF-32 stream does not start with BOMéÿÿÿÿ)r!   r   Úutf_32_ex_decodeÚutf_32_le_decodeÚutf_32_be_decodeÚUnicodeErrorr   )r   r   r   r   ÚoutputÚconsumedr   r   r   r   Ú_buffer_decode5   s    !
z!IncrementalDecoder._buffer_decodec             C   s   t  j j |  ƒ d  |  _ d  S)N)r   r    r   r!   )r   r   r   r   r   B   s    zIncrementalDecoder.resetc             C   s`   t  j j |  ƒ d } |  j d  k r/ | d f St t j d k |  j t  j k k ƒ } | | f S)Nr   r   Úbig)r   r    r   r!   Úintr   r   r'   )r   r   Zaddstater   r   r   r   F   s    
zIncrementalDecoder.getstatec             C   s�   t  j j |  | ƒ | d } | d k rP t j d k rA t  j n t  j |  _ n< | d k rƒ t j d k rt t  j n t  j |  _ n	 d  |  _ d  S)Nr"   r   r,   )r   r    r   r   r   r'   r&   r!   )r   r   r   r   r   r   T   s    
zIncrementalDecoder.setstateN)r   r   r   r   r+   r   r   r   r   r   r   r   r   0   s
   r   c               @   s:   e  Z d  Z d d d „ Z d d „  Z d d d „ Z d S)	ÚStreamWriterr   c             C   s#   d  |  _  t j j |  | | ƒ d  S)N)r   r   r.   r   )r   Ústreamr   r   r   r   r   d   s    	zStreamWriter.__init__c             C   s   t  j j |  ƒ d  |  _ d  S)N)r   r.   r   r   )r   r   r   r   r   h   s    zStreamWriter.resetc             C   sc   |  j  d  k rO t j | | ƒ } t j d k r? t j |  _  n t j |  _  | S|  j  | | ƒ Sd  S)Nr   )r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   l   s    zStreamWriter.encodeN)r   r   r   r   r   r   r   r   r   r   r.   c   s   r.   c               @   s+   e  Z d  Z d d „  Z d d d „ Z d S)ÚStreamReaderc             C   s3   t  j j |  ƒ y
 |  ` Wn t k
 r. Yn Xd  S)N)r   r0   r   r	   ÚAttributeError)r   r   r   r   r   y   s
    
zStreamReader.resetr   c             C   s|   t  j | | d d ƒ \ } } } | d k r< t  j |  _ n6 | d k rW t  j |  _ n | d k rr t d ƒ ‚ n  | | f S)Nr   Fr"   r#   z%UTF-32 stream does not start with BOMr$   )r   r%   r&   r	   r'   r(   )r   r   r   Úobjectr*   r   r   r   r   r	   €   s    !zStreamReader.decodeN)r   r   r   r   r	   r   r   r   r   r0   w   s   r0   c               C   s4   t  j d d d t d t d t d t d t d t ƒ S)	NÚnamezutf-32r   r	   ÚincrementalencoderÚincrementaldecoderÚstreamreaderÚstreamwriter)r   Ú	CodecInfor   r	   r
   r   r0   r.   r   r   r   r   Úgetregentry�   s    	r9   )Ú__doc__r   r   r   r   r	   r
   r    r   r.   r0   r9   r   r   r   r   Ú<module>   s   	#3