
    xh<                     N    S SK Jr  S SKJr  S r " S S\5      r " S S\5      rg)	    )absolute_import)string_typesc                     X:  X:  -
  $ N )abs     /code/bitfield/types.pycmpr      s    Eae    c                       \ rS rSrSrSS jrS rS rS r\r	S r
S rS	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rSrg)Bit
   z
Represents a single Bit.
c                     Xl         [        U5      U l        S[        U5      -  U l        / U l        U R                  (       d  U R                  ) U l        g g )N   )numberboolis_setintmaskchildren)selfr   r   s      r
   __init__Bit.__init__   sB    6lV$	{{
DI r   c                 b    SU R                   R                  U R                  U R                  4-  $ )Nz<%s: number=%d, is_set=%s>)	__class____name__r   r   r   s    r
   __repr__Bit.__repr__   s/    +NN##KKKK/
 
 	
r   c                     U R                   $ r   r   r   s    r
   __int__Bit.__int__#   s    yyr   c                     U R                   $ r   )r   r   s    r
   __bool__Bit.__bool__&       {{r   c                 F   [        U[        5      (       a9  UR                  U R                  :H  =(       a    UR                  U R                  :H  $ [        U[        5      (       a  XR                  :H  $ [        U[
        5      (       a  XR                  :H  $ XR                  :H  $ r   )
isinstancer   r   r   r   r   r   r   values     r
   __eq__
Bit.__eq__+   su    eS!!<<4;;.N5<<4;;3NNt$$KK''s##II%%##r   c                     X:X  + $ r   r   r+   s     r
   __ne__
Bit.__ne__4   s      r   c                 0    U R                   [        U5      4$ r   )r   r   r+   s     r
   
__coerce__Bit.__coerce__7   s    T%[))r   c                 X    U R                  U R                  U R                  (       + 5      $ r   )r   r   r   r   s    r
   
__invert__Bit.__invert__:   s    ~~dkkt{{?;;r   c                 `    [        U[        5      (       a  UR                  nXR                  -  $ r   r*   r   r   r+   s     r
   __and__Bit.__and__=   %    eS!!JJEyy  r   c                 b    [        U[        5      (       a  UR                  nU R                  U-  $ r   r9   r+   s     r
   __rand__Bit.__rand__B   '    eS!!JJEyy5  r   c                 `    [        U[        5      (       a  UR                  nXR                  -  $ r   r9   r+   s     r
   __or__
Bit.__or__G   r<   r   c                 b    [        U[        5      (       a  UR                  nU R                  U-  $ r   r9   r+   s     r
   __ror__Bit.__ror__L   r@   r   c                 `    [        U[        5      (       a  UR                  nXR                  -  $ r   r9   r+   s     r
   
__lshift__Bit.__lshift__Q   %    eS!!JJE		!!r   c                 b    [        U[        5      (       a  UR                  nU R                  U-  $ r   r9   r+   s     r
   __rlshift__Bit.__rlshift__V   '    eS!!JJEyyE!!r   c                 `    [        U[        5      (       a  UR                  nXR                  -	  $ r   r9   r+   s     r
   
__rshift__Bit.__rshift__[   rJ   r   c                 b    [        U[        5      (       a  UR                  nU R                  U-	  $ r   r9   r+   s     r
   __rrshift__Bit.__rrshift__`   rN   r   c                 `    [        U[        5      (       a  UR                  nXR                  -  $ r   r9   r+   s     r
   __xor__Bit.__xor__e   r<   r   c                 b    [        U[        5      (       a  UR                  nU R                  U-  $ r   r9   r+   s     r
   __rxor__Bit.__rxor__j   r@   r   c                     [        U 5      $ r   reprr   s    r
   
__sentry__Bit.__sentry__o       Dzr   c                     U R                   / 4$ r   r"   r   	evaluatorqn
connections       r
   evaluateBit.evaluater       yy"}r   c                 &    UR                  XU5      $ r   )prepare_node)r   rc   queryallow_joinss       r
   prepareBit.prepareu   s    %%d;??r   )r   r   r   r   N)T)r   
__module____qualname____firstlineno____doc__r   r   r#   r&   __nonzero__r-   r0   r3   r6   r:   r>   rB   rE   rH   rL   rP   rS   rV   rY   r^   rf   rm   __static_attributes__r   r   r
   r   r   
   sx    #
 K$!*<!
!
!
!
"
"
"
"
!
!
@r   r   c                       \ rS rSrSrS%S jrS rS rS rS r	S	 r
S
 rS rS rS rS r\rS rS rS rS rS rS rS rS rS rS rS rS rS r\" \5      rS r S r!S r"S r#S  r$S! r%S" r&S# r'S$r(g)&
BitHandlery   z8
Represents an array of bits, each as a ``Bit`` object.
Nc                     U(       a  [        U5      U l        OSU l        X l        US L=(       a    U=(       d    UU l        g )Nr   )r   _value_keys_labels)r   r,   keyslabelss       r
   r   BitHandler.__init__~   s2    e*DKDK
T)4f<r   c                 `    [        U[        5      (       d  gU R                  UR                  :H  $ )NF)r*   rv   ry   r   others     r
   r-   BitHandler.__eq__   s%    %,,{{ell**r   c                 2    [        U R                  5      U:  $ r   r   ry   r   s     r
   __lt__BitHandler.__lt__       4;;%''r   c                 2    [        U R                  5      U:*  $ r   r   r   s     r
   __le__BitHandler.__le__       4;;5((r   c                 2    [        U R                  5      U:  $ r   r   r   s     r
   __gt__BitHandler.__gt__   r   r   c                 2    [        U R                  5      U:  $ r   r   r   s     r
   __ge__BitHandler.__ge__   r   r   c                 .    [        U R                  U5      $ r   )r   ry   r   s     r
   __cmp__BitHandler.__cmp__   s    4;;&&r   c           	         ^  ST R                   R                  < SSR                  U 4S j[        T R                  5       5       5      < S3$ )N<z: z, c              3   l   >#    U  H)  u  pU< S TR                  U5      R                  < 3v   M+     g7f)=N)get_bitr   ).0nkr   s      r
   	<genexpr>&BitHandler.__repr__.<locals>.<genexpr>   s*      BW$!1dll1o445BWs   14>)r   r   join	enumeraterz   r   s   `r
   r   BitHandler.__repr__   s<    NN##II BKDJJBW 
 	
r   c                 ,    [        U R                  5      $ r   )strry   r   s    r
   __str__BitHandler.__str__   s    4;;r   c                     U R                   $ r   ry   r   s    r
   r#   BitHandler.__int__   r(   r   c                 ,    [        U R                  5      $ r   )r   ry   r   s    r
   r&   BitHandler.__bool__   s    DKK  r   c                 Z    [        U R                  [        U5      -  U R                  5      $ r   rv   ry   r   rz   r+   s     r
   r:   BitHandler.__and__        $++E
2DJJ??r   c                 Z    [        U R                  [        U5      -  U R                  5      $ r   r   r+   s     r
   rB   BitHandler.__or__   r   r   c                 Z    [        U R                  [        U5      -   U R                  5      $ r   r   r+   s     r
   __add__BitHandler.__add__   r   r   c                 Z    [        U R                  [        U5      -
  U R                  5      $ r   r   r+   s     r
   __sub__BitHandler.__sub__   r   r   c                 Z    [        U R                  [        U5      -  U R                  5      $ r   r   r+   s     r
   rH   BitHandler.__lshift__        $++U3TZZ@@r   c                 Z    [        U R                  [        U5      -	  U R                  5      $ r   r   r+   s     r
   rP   BitHandler.__rshift__   r   r   c                 Z    [        U R                  [        U5      -  U R                  5      $ r   r   r+   s     r
   rV   BitHandler.__xor__   r   r   c                 l    U R                   R                  U5      n[        U R                  U5      5      $ r   )rz   indexr   r   )r   key
bit_numbers      r
   __contains__BitHandler.__contains__   s*    ZZ%%c*
DLL,--r   c                     UR                  S5      (       a  [        R                  X5      $ XR                  ;  a  [	        SU-  5      eU R                  U R                  R                  U5      5      $ N_z%s is not a valid flag)
startswithobject__getattribute__rz   AttributeErrorr   r   )r   r   s     r
   __getattr__BitHandler.__getattr__   s[    >>#**455jj  !9C!?@@||DJJ,,S122r   c                     UR                  S5      (       a  [        R                  XU5      $ XR                  ;  a  [	        SU-  5      eU R                  U R                  R                  U5      U5        g r   )r   r   __setattr__rz   r   set_bitr   )r   r   r,   s      r
   r   BitHandler.__setattr__   s\    >>#%%d77jj  !9C!?@@TZZ%%c*E2r   c                 "    U R                  5       $ r   )	iteritemsr   s    r
   __iter__BitHandler.__iter__   s    ~~r   c                     [        U 5      $ r   r\   r   s    r
   r^   BitHandler.__sentry__   r`   r   c                     U R                   $ r   r   r   s    r
   	_get_maskBitHandler._get_mask   r(   r   c                     U R                   / 4$ r   r"   rb   s       r
   rf   BitHandler.evaluate   rh   r   c                 T    S[        U5      -  n[        XR                  U-  S:g  5      $ Nr   r   )r   r   ry   )r   r   r   s      r
   r   BitHandler.get_bit   s)    C
O#:{{T1Q677r   c                     S[        U5      -  nU(       a  U =R                  U-  sl        OU =R                  U) -  sl        [        XR                  U-  S:g  5      $ r   )r   ry   r   )r   r   true_or_falser   s       r
   r   BitHandler.set_bit   sJ    C
O#KK4KKKD5 K:{{T1Q677r   c                     U R                   $ r   )rz   r   s    r
   r|   BitHandler.keys   s    zzr   c                 ,    [        U R                  5      $ r   )iterrz   r   s    r
   iterkeysBitHandler.iterkeys   s    DJJr   c                 4    [        U R                  5       5      $ r   )listr   r   s    r
   itemsBitHandler.items   s    DNN$%%r   c              #   d   #    U R                    H  nU[        X5      R                  4v   M     g 7fr   )rz   getattrr   )r   r   s     r
   r   BitHandler.iteritems   s)     Agd&--.. s   .0c                     [        U[        5      (       a  U R                  R                  U5      n[        U[        5      (       a  UR
                  nU R                  U   $ r   )r*   r   rz   r   r   r   r{   )r   flags     r
   	get_labelBitHandler.get_label   sH    dL))::##D)DdC  ;;D||D!!r   )rz   r{   ry   r   ))r   ro   rp   rq   rr   r   r-   r   r   r   r   r   r   r   r#   r&   rs   r:   rB   r   r   rH   rP   rV   r   r   r   r   r^   r   propertyr   rf   r   r   r|   r   r   r   r   rt   r   r   r
   rv   rv   y   s    =+
()()'
 ! K@@@@AA@.33  ID88 &/"r   rv   N)
__future__r   sixr   r   r   r   rv   r   r   r
   <module>r      s/    & l@& l@^H" H"r   