
    xKg!                     V   d Z ddlZddlmZ ddlmZmZmZ ddlm	Z	m
Z
mZmZ ddlmZ ddlmZmZmZmZ ddlmZ d	 Zd
 Zej0                  ej2                  ej4                  fej6                  ej8                  ej:                  fej<                  ej>                  ej@                  fiZ!e!jE                         D ]  \  Z#Z$ ee#ge$    e
ejJ                  ejJ                        d        Z&d Z'ed        Z( eejR                        d        Z* e+d      D ]  \  Z,Z- e'e,e-        y)z=
Implementation of the range object for fixed-size integers.
    N)prange)typescgutilserrors)lower_builtin
lower_castiterator_implimpl_ret_untracked)	signature)	intrinsicoverloadoverload_attributeregister_jitable)internal_prangec                 ,    t        j                  |       S )zn
    Return the Structure representation of the given *typ* (an
    instance of types.RangeIteratorType).
    )r   create_struct_proxy)typs    Z/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/numba/cpython/rangeobj.pymake_range_iteratorr      s    
 &&s++    c                 r   	 t        j                        	t        t               t        t               t        t
               	 fd                     }t        t                t        t                t        t
                	 fd                     }t        t                 t        t                 t        t
                 	fd                     }t        t              	 fd       }t        d      	fd       }t               G  fddt                           y )	Nc                     |\  } | |      }| j                  d      |_        ||_        | j                  d      |_        t	        | ||j                               S )z2
        range(stop: int) -> range object
        r      )get_constantstartstopstepr
   	_getvalue)	contextbuildersigargsr   state
RangeStateint_typerange_state_types	         r   range1_implz$make_range_impl.<locals>.range1_impl   sf     7G,**8Q7
))(A6
!'")"2"'//"35 	5r   c                     |\  }} | |      }||_         ||_        | j                  d      |_        t	        | |	|j                               S )z>
        range(start: int, stop: int) -> range object
        r   )r   r   r   r   r
   r   )
r   r    r!   r"   r   r   r#   r$   r%   r&   s
          r   range2_implz$make_range_impl.<locals>.range2_impl+   s[     t7G,
))(A6
!'")"2"'//"35 	5r   c                     |\  }}} | |      }||_         ||_        ||_        t        | |	|j	                               S )zI
        range(start: int, stop: int, step: int) -> range object
        )r   r   r   r
   r   )
r   r    r!   r"   r   r   r   r#   r$   r&   s
           r   range3_implz$make_range_impl.<locals>.range3_impl<   sQ     #d7G,

!'")"2"'//"35 	5r   c                     |\  } | ||      }j                  | ||      }t        | |	|j                  |j                              S )z
        len(range)
        )from_range_stater
   loadcount)
r   r    r!   r"   valuer#   res	RangeIterr$   r%   s
          r   	range_lenz"make_range_impl.<locals>.range_lenM   sL    
 7GU3(('5A!'7Hgll399>UVVr   getiterc                 ~    |\  } | ||      }j                  | ||      j                         }t        | |	|      S )z 
        range.__iter__
        )r-   r   r
   )
r   r    r!   r"   r0   r#   r1   r2   r$   range_iter_types
          r   getiter_range32_implz-make_range_impl.<locals>.getiter_range32_implW   sH    
 7GU3(('5AKKM!'7OSIIr   c                   ,    e Zd Ze fd       Z fdZy)"make_range_impl.<locals>.RangeIterc           
          | ||      }|j                   }|j                  }|j                  }t        j                  ||j
                        }|j                  ||       t        j                  ||j
                        }	||_        ||_        ||_        |	|_        |j                  ||      }
|j                  d      }|j                  d      }|j                  d|
|      }|j                  d||      }|j                  ||      }|j                  d||      }t        j                  ||      5  |j                  j!                  |t"        d       ddd       |j%                  |      5 \  }}|5  |j                  ||j                         ddd       |5  |j'                  |
|      }|j)                  |||j+                  |            }|j                  d||      }|j-                  |j/                  |
|      |j)                  |||            }|j                  ||j                         ddd       ddd       |S # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   +xY w# 1 sw Y   |S xY w)z[
            Create a RangeIter initialized from the given RangeState *state*.
            r   r   >z==)zrange() arg 3 must not be zeroN)r   r   r   r   alloca_oncetypestoreiterr/   subr   icmp_signedxoricmp_unsignedif_unlikely	call_convreturn_user_exc
ValueErrorif_elsesremselectnegaddsdiv)clsr   r    r#   selfr   r   r   startptrcountptrdiffzeroonepos_diffpos_stepsign_differs	zero_stepthenorelseremunevennewcountr%   s                         r   r-   z3make_range_impl.<locals>.RangeIter.from_range_stated   s   
 w(DKKE::D::D**7EJJ?HMM%***7EJJ?H DIDIDI!DJ;;tU+D''!4D&&x3C**3d;H**3d;H";;x:L--dD$?I$$Wi8!!11':2UW 9
 ..4MM$

3  !,,tT2C!..3C8HIC$00c4@F&{{7<<d+C+2>>&#t+L NHMM(DJJ7 	 / K# 98 T V	 / KsI   4"I/I)5I
I)BI3I)II	I)I&	"I))I3c                 *   |j                  
d      }| j                  }|j                  |      }|j                  d||      }|j	                  |       |j                  |      5  |j                  | j                        }|j                  |       |j                  
d      }	|j                  |j                  ||	dg      |       |j                  |j                  || j                        | j                         d d d        y # 1 sw Y   y xY w)Nr   r;   r   nsw)flags)r   r/   r.   rA   	set_validif_thenr?   yield_r>   r@   rL   r   )rO   r   r    resultrS   rQ   r/   is_validr0   rT   r%   s             r   iternextz+make_range_impl.<locals>.RangeIter.iternext   s    ''!4DzzHLL*E**3t<HX&*TYY/e$**8Q7gkk%UGkDhOgkk%;TYYG +**s   &BD		DN)__name__
__module____qualname__classmethodr-   rf   )r%   s   r   r2   r9   a   s     
,	 
,	\	Hr   r2   )	r   r   r   ranger   r   lenr	   r   )
r%   r&   r6   r'   r)   r+   r3   r7   r2   r$   s
   ```     @@r   make_range_implrm      s8   ,,-=>J5(#68$?H-5 . % $5 5(H-68X.?Hh75 8 / .5 5(Hh768Xx8?HhA5 B 9 85 3()W *W 9./J 0J #_5>H'8 >H 6>Hr   c           	          t        j                  ||d      }|D cg c]*  }| j                  |||j                  |j                        , }}t        j                  ||      S c c}w N   )r   unpack_tuplecastdtypemake_anonymous_struct)r   r    fromtytotyvalolditemsvitemss           r   range_to_ranger{      se    ##GS!4H  \\'1fllDJJ? 
  ((%88 s   /A#c                 h     t          fd       t        t        j                  |      fd       }y )Nc                 t    t        |t        j                        rfd}t        |j                  |      |fS y )Nc                 p    |\  }t        j                  ||d      }t        | ||j                  |         S ro   )r   rq   r
   return_type)r   r    r!   r"   rw   rz   indexs         r   codegenz?make_range_attr.<locals>.rangetype_attr_getter.<locals>.codegen   s<    ,,Wc1=)'7COO*/,8 8r   )
isinstancer   	RangeTyper   rs   )	typingctxar   r   s      r   rangetype_attr_getterz.make_range_attr.<locals>.rangetype_attr_getter   s3    a)8
 QWWa('11 *r   c                     fd}|S )Nc                      |       S )N )rnger   s    r   getz0make_range_attr.<locals>.range_attr.<locals>.get   s    (..r   r   )r   r   r   s     r   
range_attrz#make_range_attr.<locals>.range_attr   s    	/
r   )r   r   r   r   )r   	attributer   r   s   `  @r   make_range_attrr      s4    2 2 3 4r   c                     | j                   dkD  r|| j                  k  s|| j                  k\  ry| j                   dk  r|| j                  k  s|| j                  kD  ry|| j                  z
  | j                   z  dk(  S )Nr   F)r   r   r   robjrw   s     r   impl_contains_helperr      sg    yy1}#

*cTYY.>	QC499,djj0@4::*q00r   c                 T   d }t        | t        j                        sy t        |t        j                  t        j                  f      rt
        S t        |t        j                        rd }|S t        |t        j                        rd }|S t        |t        j                        s|S y )Nc                      y)NFr   r   s     r   
impl_falsez!impl_contains.<locals>.impl_false   s    r   c                 >    |dz  dk7  ryt        | t        |            S )Nr   r   F)r   intr   s     r   implzimpl_contains.<locals>.impl   s!    Qw!|+D#c(;;r   c                     |j                   dk7  ry|j                  dz  dk7  ryt        | t        |j                              S )Nr   Fr   )imagrealr   r   r   s     r   r   zimpl_contains.<locals>.impl   s8    xx1}A"+D#chh-@@r   )	r   r   r   IntegerBooleanr   FloatComplexNumber)r   rw   r   r   s       r   impl_containsr      s     dEOO,	C%--7	8##	C	%	<
 	C	'	A U\\* +r   )r   r   r   )r   r   ).__doc__operatornumbar   
numba.corer   r   r   numba.core.imputilsr   r   r	   r
   numba.core.typingr   numba.core.extendingr   r   r   r   numba.parfors.parforr   r   rm   int32range_state32_typerange_iter32_typeint64range_state64_typerange_iter64_typeuint64unsigned_range_state64_typeunsigned_range_iter64_typerange_impl_maprz   r%   state_typesr   r{   r   r   containsr   	enumerateixattrr   r   r   <module>r      s7     - -G G ' Z Z 0,IHZ 
KK5++U-D-DE	KK5++U-D-DE	LLE55u7W7WX ,113HkH+{+ 4 EOOU__-9 .9$ 1 1 
(

 @ 34HB"- 5r   