o
    0 in"                     @   sP  d Z ddlZddlmZ ddlmZ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	d
 Zdd Zejr_ejejejfejejejfej ej!ej"fiZ#n	ej$ej%ej&fiZ#e#' D ]\Z(Z)ee(ge)R   qleej*ej*dd Z+dd Z,edd Z-eej.dd Z/e0dD ]
\Z1Z2e,e1e2d qdS )z=
Implementation of the range object for fixed-size integers.
    N)prange)typescgutilserrorsconfig)lower_builtin
lower_castiterator_implimpl_ret_untracked)	signature)	intrinsicoverloadoverload_attributeregister_jitable)internal_prangec                 C   s
   t | S )zn
    Return the Structure representation of the given *typ* (an
    instance of types.RangeIteratorType).
    )r   create_struct_proxy)typ r   b/home/app/PaddleOCR-VL-test/.venv_paddleocr/lib/python3.10/site-packages/numba/cpython/rangeobj.pymake_range_iterator   s   
r   c                    s   t ttttttfdd}ttttttfdd}ttttttfdd}tt fdd}td	 fd
d}tG fdddt d S )Nc                    sD   |\} | |}|  d|_||_|  d|_t| || S )z2
        range(stop: int) -> range object
        r      )get_constantstartstopstepr
   	_getvalue)contextbuildersigargsr   state
RangeStateint_typerange_state_typer   r   range1_impl   s   
z$make_range_impl.<locals>.range1_implc                    s>   |\}} | |}||_ ||_| d|_t| || 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   range2_impl+   s   
z$make_range_impl.<locals>.range2_implc                    s8   |\}}} | |}||_ ||_||_t| || 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$   r   r   range3_impl<   s   

z$make_range_impl.<locals>.range3_implc                    s6   |\}| ||}  | ||}t| |||jS )z
        len(range)
        )from_range_stater
   loadcountr   r   r   r   valuer    res)	RangeIterr"   r#   r   r   	range_lenM   s   z"make_range_impl.<locals>.range_lenZgetiterc                    s2   |\}| ||}  | || }t| ||S )z 
        range.__iter__
        )r(   r   r
   r+   )r.   r"   range_iter_typer   r   getiter_range32_implW   s   z-make_range_impl.<locals>.getiter_range32_implc                       s(   e Zd Ze fddZ fddZdS )z"make_range_impl.<locals>.RangeIterc              
      s  | ||}|j }|j}|j}t||j}||| t||j}	||_||_||_|	|_|	||}
|
 d}|
 d}|d|
|}|d||}|||}|d||}t|| |j|td W d   n1 stw   Y  ||k\}}| |||j W d   n1 sw   Y  |5 ||
|}|||||}|d||}|||
|||||}|||j W d   n1 sw   Y  W d   |S W d   |S 1 sw   Y  |S )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   Zalloca_oncetypestoreiterr*   subr   icmp_signedxorZicmp_unsignedZif_unlikelyZ	call_convZreturn_user_exc
ValueErrorZif_elseZsremselectnegaddZsdiv)clsr   r   r    selfr   r   r   ZstartptrcountptrdiffzerooneZpos_diffZpos_stepZsign_differsZ	zero_stepZthenorelseremZunevennewcountr#   r   r   r(   d   sV   



z3make_range_impl.<locals>.RangeIter.from_range_statec           
         s   |  d}| j}||}|d||}|| ||3 || j}|| |  d}	||j	||	dgd| ||
|| j| j W d    d S 1 sUw   Y  d S )Nr   r2   r   Znsw)flags)r   r*   r)   r7   Z	set_validZif_thenr5   Zyield_r4   r6   r<   r   )
r>   r   r   resultrA   r?   r*   Zis_validr,   rB   rF   r   r   iternext   s   


"z+make_range_impl.<locals>.RangeIter.iternextN)__name__
__module____qualname__classmethodr(   rI   r   rF   r   r   r.   a   s    .r.   )	r   r   r   ranger   r   lenr	   r   )r#   r$   r0   r%   r&   r'   r/   r1   r   )r.   r"   r#   r0   r$   r   make_range_impl   s&   



		rP   c                    s2   t  |d} fdd|D }t  |S )N   c                    s    g | ]}  |jjqS r   )castdtype).0vr   r   fromtytotyr   r   
<listcomp>   s    z"range_to_range.<locals>.<listcomp>)r   unpack_tupleZmake_anonymous_struct)r   r   rW   rX   valZolditemsitemsr   rV   r   range_to_range   s
   r]   c                    s,   t  fddttj|fdd}d S )Nc                    s,   t |tjr fdd}t|j||fS d S )Nc                    s(   |\}t ||d}t| ||j|  S )NrQ   )r   rZ   r
   return_type)r   r   r   r   r[   r\   indexr   r   codegen   s
   
z?make_range_attr.<locals>.rangetype_attr_getter.<locals>.codegen)
isinstancer   	RangeTyper   rS   )Z	typingctxara   r_   r   r   rangetype_attr_getter   s   z.make_range_attr.<locals>.rangetype_attr_getterc                    s    fdd}|S )Nc                    s    | S )Nr   )rngere   r   r   get   s   z0make_range_attr.<locals>.range_attr.<locals>.getr   )rf   rh   rg   r   r   
range_attr   s   z#make_range_attr.<locals>.range_attr)r   r   r   rc   )r`   	attributeri   r   )r`   re   r   make_range_attr   s   
	rk   c                 C   sX   | j dkr|| jk s|| jkrdS | j dk r"|| jks || jkr"dS || j | j  dkS )Nr   F)r   r   r   robjr[   r   r   r   impl_contains_helper   s
   rn   c                 C   sr   dd }t | tjsd S t |tjtjfrtS t |tjr#dd }|S t |tjr/dd }|S t |tjs7|S d S )Nc                 S   s   dS )NFr   rl   r   r   r   
impl_false   s   z!impl_contains.<locals>.impl_falsec                 S   s   |d dkrdS t | t|S )Nr   r   F)rn   intrl   r   r   r   impl   s   zimpl_contains.<locals>.implc                 S   s0   |j dkrdS |jd dkrdS t| t|jS )Nr   Fr   )imagrealrn   rp   rl   r   r   r   rq      s
   
)	rb   r   rc   IntegerBooleanrn   FloatComplexNumber)rm   r[   ro   rq   r   r   r   impl_contains   s   ry   )r   r   r   )r`   rj   )3__doc__operatorZnumbar   Z
numba.corer   r   r   r   Znumba.core.imputilsr   r   r	   r
   Znumba.core.typingr   Znumba.core.extendingr   r   r   r   Znumba.parfors.parforr   r   rP   ZUSE_LEGACY_TYPE_SYSTEMZint32Zrange_state32_typeZrange_iter32_typeZint64Zrange_state64_typeZrange_iter64_typeZuint64Zunsigned_range_state64_typeZunsigned_range_iter64_typeZrange_impl_mapZpy_intr$   r0   r\   r#   Zstate_typesrc   r]   rk   rn   containsry   	enumerateZixattrr   r   r   r   <module>   s<     

	
 