o
    éT•j	  ã                   @   sx   d Z ddlZddlZejZddd„ZG dd„ dejƒZG dd	„ d	ejƒZG d
d„ dej	ƒZ	G dd„ dej
ƒZ
dd„ ZdS )z
Python 'utf-32' Codec
é    NÚstrictc                 C   s   t  | |d¡S )NT)ÚcodecsÚutf_32_decode)ÚinputÚerrors© r   ú'/usr/lib/python3.10/encodings/utf_32.pyÚdecode
   s   r	   c                   @   s8   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   ó   t j | |¡ d | _d S ©N)r   r
   Ú__init__Úencoder©Úselfr   r   r   r   r      ó   
zIncrementalEncoder.__init__Fc                 C   sP   | j d u rt || j¡d }tjdkrtj| _ |S tj| _ |S |   || 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   ó   t j | ¡ d | _d S r   )r   r
   Úresetr   ©r   r   r   r   r      ó   
zIncrementalEncoder.resetc                 C   s   | j d u rdS dS )Né   r   )r   r   r   r   r   Úgetstate    s   zIncrementalEncoder.getstatec                 C   s0   |rd | _ d S tjdkrtj| _ d S tj| _ d S ©Nr   )r   r   r   r   r   r   ©r   Ústater   r   r   Úsetstate'   s
   

zIncrementalEncoder.setstateN©r   )F)Ú__name__Ú
__module__Ú__qualname__r   r   r   r    r$   r   r   r   r   r
      s    


r
   c                   @   s6   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   r   r   )r   ÚBufferedIncrementalDecoderr   Údecoderr   r   r   r   r   1   r   zIncrementalDecoder.__init__c                 C   sx   | j d u r4t ||d|¡\}}}|dkrtj| _ ||fS |dkr(tj| _ ||fS |dkr0tdƒ‚||fS |   || j|¡S )Nr   éÿÿÿÿé   é   ú%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   r   r   )r   r*   r   r+   r   r   r   r   r   B   r   zIncrementalDecoder.resetc                 C   sD   t j | ¡d }| jd u r|dfS ttjdk| jt ju kƒ}||fS )Nr   r   Úbig)r   r*   r    r+   Úintr   r   r2   )r   r#   Úaddstater   r   r   r    F   s   


ÿzIncrementalDecoder.getstatec                 C   st   t j | |¡ |d }|dkr tjdkrt j| _d S t j| _d S |dkr5tjdkr/t j| _d S t j| _d S d | _d S )Nr-   r   r7   )r   r*   r$   r   r   r2   r1   r+   r"   r   r   r   r$   T   s   
ÿþ
ÿþ
zIncrementalDecoder.setstateNr%   )r&   r'   r(   r   r6   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 | ||¡ d S r   )r   r   r:   r   )r   Ústreamr   r   r   r   r   d   s   zStreamWriter.__init__c                 C   r   r   )r   r:   r   r   r   r   r   r   r   h   r   zStreamWriter.resetc                 C   sD   | j d u rt ||¡}tjdkrtj| _ |S tj| _ |S |   ||¡S r!   )r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   l   s   

ÿzStreamWriter.encodeNr%   )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   s,   t j | ¡ z| `W d S  ty   Y d S w r   )r   r<   r   r	   ÚAttributeErrorr   r   r   r   r   y   s   
ÿzStreamReader.resetr   c                 C   s^   t  ||dd¡\}}}|dkrt j| _||fS |dkr#t j| _||fS |dkr+tdƒ‚||fS )Nr   Fr,   r-   r.   r/   )r   r0   r1   r	   r2   r3   )r   r   r   Úobjectr5   r   r   r   r   r	   €   s   ÿüþzStreamReader.decodeNr%   )r&   r'   r(   r   r	   r   r   r   r   r<   w   s    r<   c                	   C   s   t jdttttttd�S )Nzutf-32)Únamer   r	   ÚincrementalencoderÚincrementaldecoderÚstreamreaderÚstreamwriter)r   Ú	CodecInfor   r	   r
   r)   r<   r:   r   r   r   r   Úgetregentry�   s   ùrE   r%   )Ú__doc__r   r   r   r   r	   r
   r*   r)   r:   r<   rE   r   r   r   r   Ú<module>   s    
#3