
    F\h                         S r SSKrSSKr\R                  rSS jr " S S\R                  5      r " S S\R                  5      r " S S	\R                  5      r	 " S
 S\R                  5      r
S rg)zPython 'utf-16' Codec


Written by Marc-Andre Lemburg (mal@lemburg.com).

(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.

    Nc                 0    [         R                  " XS5      $ )NT)codecsutf_16_decode)inputerrorss     '/usr/lib/python3.13/encodings/utf_16.pydecoder	      s    t44    c                   :    \ rS rSrS	S jrS
S jrS rS rS rSr	g)IncrementalEncoder   c                 P    [         R                  R                  X5        S U l        g N)r   r   __init__encoderselfr   s     r   r   IncrementalEncoder.__init__   s    !!**48r
   c                 "   U R                   ce  [        R                  " XR                  5      S   n[        R
                  S:X  a  [        R                  U l         U$ [        R                  U l         U$ U R                  XR                  5      S   $ )Nr   little)r   r   utf_16_encoder   sys	byteorderutf_16_le_encodeutf_16_be_encode)r   r   finalresults       r   encodeIncrementalEncoder.encode   sq    <<))%=a@F}}(%66 M  &66M||E;;/22r
   c                 P    [         R                  R                  U 5        S U l        g r   )r   r   resetr   r   s    r   r!   IncrementalEncoder.reset!   s    !!''-r
   c                 $    U R                   c  S$ S$ )N   r   r   r"   s    r   getstateIncrementalEncoder.getstate%   s    
 \\)1q1r
   c                     U(       a  S U l         g [        R                  S:X  a  [        R                  U l         g [        R
                  U l         g Nr   )r   r   r   r   r   r   r   states     r   setstateIncrementalEncoder.setstate,   s2    DL}}(%66%66r
   r&   Nstrict)F)
__name__
__module____qualname____firstlineno__r   r   r!   r'   r-   __static_attributes__ r
   r   r   r      s    327r
   r   c                   6    \ rS rSrS	S jrS rS rS rS rSr	g)
IncrementalDecoder5   c                 P    [         R                  R                  X5        S U l        g r   )r   BufferedIncrementalDecoderr   decoderr   s     r   r   IncrementalDecoder.__init__6   s    ))224@r
   c                 2   U R                   co  [        R                  " XSU5      u  pEnUS:X  a  [        R                  U l         XE4$ US:X  a  [        R                  U l         XE4$ US:  a  [        SUSSS5      eXE4$ U R                  XR                  U5      $ )Nr      r%   utf-16Stream does not start with BOM)r<   r   utf_16_ex_decodeutf_16_le_decodeutf_16_be_decodeUnicodeDecodeErrorr   )r   r   r   r   outputconsumedr   s          r   _buffer_decode!IncrementalDecoder._buffer_decode:   s    <<''q%@ *VyB%66
 %%	 a%66 %% Q(5!Q@`aa%%||E;;66r
   c                 P    [         R                  R                  U 5        S U l        g r   )r   r;   r!   r<   r"   s    r   r!   IncrementalDecoder.resetG   s    ))//5r
   c                     [         R                  R                  U 5      S   nU R                  c  US4$ [	        [
        R                  S:H  U R                  [         R                  L :g  5      nX4$ )Nr   r%   big)r   r;   r'   r<   intr   r   rE   )r   r,   addstates      r   r'   IncrementalDecoder.getstateK   sl     11::4@C
 <<1:.(?(??A B  r
   c                 Z   [         R                  R                  X5        US   nUS:X  a:  [        R                  S:X  a  [         R
                  O[         R                  U l        g US:X  a:  [        R                  S:X  a  [         R                  O[         R
                  U l        g S U l        g )Nr@   r   rN   )r   r;   r-   r   r   rE   rD   r<   r+   s     r   r-   IncrementalDecoder.setstateY   s    ))224?aA:"}}5 #33!'!8!8 L aZ"}}5 #33!'!8!8 L  DLr
   )r<   Nr/   )
r1   r2   r3   r4   r   rI   r!   r'   r-   r5   r6   r
   r   r8   r8   5   s    7! r
   r8   c                   .    \ rS rSrSS jrS rSS jrSrg)StreamWriterh   c                 R    [         R                  R                  XU5        S U l        g r   )r   rU   r   r   )r   streamr   s      r   r   StreamWriter.__init__i   s    $$T6:r
   c                 P    [         R                  R                  U 5        S U l        g r   )r   rU   r!   r   r"   s    r   r!   StreamWriter.resetm   s    !!$'r
   c                     U R                   cX  [        R                  " X5      n[        R                  S:X  a  [        R
                  U l         U$ [        R                  U l         U$ U R                  X5      $ r*   )r   r   r   r   r   r   r   )r   r   r   r   s       r   r   StreamWriter.encodeq   s_    <<))%8F}}(%66 M  &66M<<..r
   r&   Nr/   )r1   r2   r3   r4   r   r!   r   r5   r6   r
   r   rU   rU   h   s    	/r
   rU   c                   $    \ rS rSrS rSS jrSrg)StreamReader|   c                 h    [         R                  R                  U 5         U ?g ! [         a     g f = fr   )r   r_   r!   r	   AttributeErrorr"   s    r   r!   StreamReader.reset~   s2    !!$'	 		s   $ 
11c                     [         R                  " XSS5      u  p4nUS:X  a  [         R                  U l        X44$ US:X  a  [         R                  U l        X44$ US:  a  [        SUSSS5      eX44$ )Nr   Fr?   r@   r%   rA   rB   )r   rC   rD   r	   rE   rF   )r   r   r   objectrH   r   s         r   r	   StreamReader.decode   s    ##E1e< 	&9? 11DK
 !!	 !^ 11DK !! q[$Xua<\]]!!r
   )r	   Nr/   )r1   r2   r3   r4   r!   r	   r5   r6   r
   r   r_   r_   |   s    	"r
   r_   c            
      f    [         R                  " S[        [        [        [
        [        [        S9$ )NrA   )namer   r	   incrementalencoderincrementaldecoderstreamreaderstreamwriter)r   	CodecInfor   r	   r   r8   r_   rU   r6   r
   r   getregentryrn      s*    --!! r
   r/   )__doc__r   r   r   r   r	   r   r;   r8   rU   r_   rn   r6   r
   r   <module>rp      sp     
		5!722 !7F1 :: 1 f/6&& /("6&& ",	r
   