
    hi	                        d dl mZ d dlmZ d dl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IntegerIntOp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           d/var/www/html/Pagina-Ingenieria-Requisitos/venv/lib/python3.11/site-packages/mypyc/lower/list_ops.pyr   r      s     7Dq'KGEk7++88[888%%''Ezzkk"-/EFF	 
 
 ;;v/eTBBCCC    
list_itemsc                    |                      t          |d         t          d|                    }|                     |t                    S )Nr   ob_item)r   r   r
   load_memr   )r   r   r   ob_item_ptrs       r#   r%   r%   *   s<    ++mDG\9dSSTTKK);<<<r$   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_ptrr/   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                    S )Nr   r   )coercer   r/   r(   r   )r   r   r   r!   item_ptrs        r#   r0   r0   C   sJ    NN47$:DAAEWd1gud;;HH&7888r$   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	   mypyc.ir.rtypesr
   r   r   r   mypyc.irbuild.ll_builderr   mypyc.lower.registryr   r   r%   r/   r0    r$   r#   <module>r;      s`   " " " " " " & & & & & & E E E E E E E E E E E E E E            7 6 6 6 6 6 3 3 3 3 3 3 O$$D D D %$D4 L!!= = = "!=
K K K K& *++9 9 9 ,+9 9 9r$   