
    X-Ph#
                        d dl mZ d dlmZ d dlmZmZmZ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  ed          dd            Z ed          dd            ZddZ ed          dd            ZdS )    )annotations)PLATFORM_SIZE)GetElementPtrIncRefIntegerIntOpLoadMemSetMemValue)PyListObjectc_pyssize_t_rprimitiveobject_rprimitivepointer_rprimitive)LowLevelIRBuilder)lower_primitive_opbuf_init_itembuilderr   argslist[Value]lineintreturnr   c           
        |d         }|d         }|d         }t          |t                    sJ |                                }|dk    r|}nP|                     t	          t
          |t          |t          z  t                    t          j        |                    }|                     t          t          |||                    S )zInitialize an item in a buffer of "PyObject *" values at given index.

    This can be used to initialize the data buffer of a freshly allocated list
    object.
    r         )
isinstancer   numeric_valueaddr   r   r   r   ADDr
   r   )r   r   r   baseindex_valuevalueindexptrs           T/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mypyc/lower/list_ops.pyr   r      s     7Dq'KGEk7+++++%%''Ezzkk"-/EFF	 
 
 ;;v/eTBBCCC    
list_itemsc                    |                      t          |d         t          d|                    }|                      t          t          ||                    S )Nr   ob_item)r   r   r   r	   r   )r   r   r   ob_item_ptrs       r%   r'   r'   *   sD    ++mDG\9dSSTTK;;w1;EEFFFr&   objr#   c           
     &   t          | |g|          }|                     t          t          |t	          t
          t                    t          j                            }|                     t          t          ||t          j                            S )zGet a pointer to a list item (index must be valid and non-negative).

    Type of index must be c_pyssize_t_rprimitive, and obj must refer to a list object.
    )	r'   r   r   r   r   r   MULr   r   )r   r+   r#   r   itemsdeltas         r%   list_item_ptrr0   0   su     wt,,EKK"M#9::I		
 	
 E ;;u/uyIIJJJr&   list_get_item_unsafec                   |                      |d         t          |          }t          | |d         ||          }|                     t	          t
          ||                    }|                     t          |                     |S )Nr   r   )coercer   r0   r   r	   r   r   )r   r   r   r#   item_ptrr"   s         r%   r1   r1   C   sn    NN47$:DAAEWd1gud;;HKK 18TBBCCEKKuLr&   N)r   r   r   r   r   r   r   r   )
r   r   r+   r   r#   r   r   r   r   r   )
__future__r   mypyc.commonr   mypyc.ir.opsr   r   r   r   r	   r
   r   mypyc.ir.rtypesr   r   r   r   mypyc.irbuild.ll_builderr   mypyc.lower.registryr   r   r'   r0   r1    r&   r%   <module>r<      sp   " " " " " " & & & & & & V V V V V V V V V V V V V V V V V V            7 6 6 6 6 6 3 3 3 3 3 3 O$$D D D %$D4 L!!G G G "!G
K K K K& *++   ,+  r&   