
    -Ph                        d dl mZ d dlZddlmZmZmZmZm	Z	m
Z
mZmZmZmZmZ ddlmZ ej        rddlmZ ddlmZ  G d d	eej        e                  e          ZdS )
    )annotationsN   )ObjectHolderIterableObjectMesonOperatortyped_operatornoKwargs	noPosargsnoArgsFlatteningtyped_pos_args
FeatureNewTYPE_varInvalidArguments)PlusAssignmentNode)Interpreter)TYPE_kwargsc                  r    e Zd Zd fdZd d	Zd!d
Zd"dZd#dZee	 e
de          d$d                                    Ze	ed%d                        Zee	 e
deeg          d&d                                    Z eej        e          d'd            Z eej        e          d(d            Z xZS ))ArrayHolderobjT.List[TYPE_var]interpreter'Interpreter'returnNonec                    t                                          ||            j                             j         j         j        d            j                            t          j	        t           fdft          j        t           fdft          j        t           fdft          j        t           fdfi            j                            t          j         j        t          j         j        i           d S )N)containslengthgetc                    j         | k    S Nheld_objectxselfs    g/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mesonbuild/interpreter/primitives/array.py<lambda>z&ArrayHolder.__init__.<locals>.<lambda>'   s    43Cq3H     c                    j         | k    S r    r!   r#   s    r&   r'   z&ArrayHolder.__init__.<locals>.<lambda>(   s    t7G17L r(   c                    | j         v S r    r!   r#   s    r&   r'   z&ArrayHolder.__init__.<locals>.<lambda>)   s    d6F1F r(   c                    | j         vS r    r!   r#   s    r&   r'   z&ArrayHolder.__init__.<locals>.<lambda>*   s    Qd>N5N r(   )super__init__methodsupdatecontains_methodlength_method
get_methodtrivial_operatorsr   EQUALSlist
NOT_EQUALSINobjectNOT_IN	operatorsPLUSop_plusINDEXop_index)r%   r   r   	__class__s   `  r&   r-   zArrayHolder.__init__   s   k***,(?
 
 	 	 	 	%% 4)H)H)H)H"I$t-L-L-L-L&Mv'F'F'F'FG 6+N+N+N+N"O	'
 	 	 	 	
 	 	 	 	 	r(   strc                    dS )Narray r%   s    r&   display_namezArrayHolder.display_name3   s    wr(   c                    d S r    rC   rD   s    r&   iter_tuple_sizezArrayHolder.iter_tuple_size6   s    tr(   T.Iterator[TYPE_var]c                *    t          | j                  S r    )iterr"   rD   s    r&   	iter_selfzArrayHolder.iter_self9   s    D$%%%r(   intc                *    t          | j                  S r    lenr"   rD   s    r&   sizezArrayHolder.size<   s    4#$$$r(   zarray.containsargsT.Tuple[object]kwargsr   boolc                4    dfd | j                   S )Nelr   r   rT   c                z    | D ]6}t          |t                    r |          }|r dS |d         k    r dS 7dS )NTr   F)
isinstancer5   )rV   elementfoundrQ   check_containss      r&   r[   z3ArrayHolder.contains_method.<locals>.check_containsC   sb        gt,, $*N733E $#ttd1g%%44 &5r(   )rV   r   r   rT   r!   )r%   rQ   rS   r[   s    ` @r&   r0   zArrayHolder.contains_method?   s<    	 	 	 	 	 	 	 ~d.///r(   c                *    t          | j                  S r    rN   )r%   rQ   rS   s      r&   r1   zArrayHolder.length_methodN   s     4#$$$r(   z	array.get)optargs"T.Tuple[int, T.Optional[TYPE_var]]r   c                    |d         }|t          | j                   k     s|t          | j                  k    r8|d         (t          d| dt          | j                   d          |d         S | j        |         S )Nr      zArray index z$ is out of bounds for array of size .)rO   r"   r   )r%   rQ   rS   indexs       r&   r2   zArrayHolder.get_methodS   s     QC()))))Uc$:J6K6K-K-KAw&'ye'y'yadeieuavav'y'y'yzzz7N&&r(   otherc                    t          |t                    s@t          | j        t                    s#t	          j        dd| j        d| j                   |g}| j        |z   S )Nzlist.<plus>z0.60.0z&The right hand operand was not a list.)location)rX   r5   current_noder   r   
single_use
subprojectr"   r%   rc   s     r&   r<   zArrayHolder.op_plus^   so    %&& 	d/1CDD B%mXtPx/3/@B B B BGE%''r(   c           	         	 | j         |         S # t          $ r) t          d| dt          | j                    d          w xY w)NzIndex z  out of bounds of array of size ra   )r"   
IndexErrorr   rO   ri   s     r&   r>   zArrayHolder.op_indexg   sd    	m#E** 	m 	m 	m"#kE#k#kSVW[WgShSh#k#k#klll	ms	    3A)r   r   r   r   r   r   )r   r@   )r   r   )r   rH   )r   rL   )rQ   rR   rS   r   r   rT   )rQ   r   rS   r   r   rL   )rQ   r^   rS   r   r   r   )rc   r   r   r   )rc   rL   r   r   )__name__
__module____qualname__r-   rE   rG   rK   rP   r   r	   r   r8   r0   r
   r1   rL   r2   r   r   r;   r<   r=   r>   __classcell__)r?   s   @r&   r   r      s            *      & & & &% % % % ^$f--
0 
0 
0 .- X 
0 % % % Y X% ^Kvh777' ' ' 87 X ' ^M&//( ( ( 0/( ^M'--m m m .-m m m m mr(   r   )
__future__r   typingTinterpreterbaser   r   r   r   r	   r
   r   r   r   r   r   mparserr   TYPE_CHECKINGr   r   r   Listr   rC   r(   r&   <module>rw      s?   # " " " " "                              * ) ) ) ) )? /******......Om Om Om Om Om,qvh/0. Om Om Om Om Omr(   