o
    ØÝ2g!  ã                   @  s‚   d dl mZ d dlmZmZ d dlmZmZmZ G dd„ dƒZ	G dd„ de	ƒZ
G dd	„ d	e	ƒZG d
d„ de	ƒZG dd„ de	ƒZdS )é    )Úannotations)ÚRegisterÚValue)Ú	RInstanceÚRTypeÚobject_rprimitivec                   @  s   e Zd ZU dZeZded< dS )ÚAssignmentTargetz>Abstract base class for assignment targets during IR building.r   ÚtypeN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r	   Ú__annotations__© r   r   úM/home/garg/my-data/venv/lib/python3.10/site-packages/mypyc/irbuild/targets.pyr      s   
 r   c                   @  s   e Zd ZdZd	dd„ZdS )
ÚAssignmentTargetRegisterzbRegister as an assignment target.

    This is used for local variables and some temporaries.
    Úregisterr   ÚreturnÚNonec                 C  s   || _ |j| _d S ©N)r   r	   )Úselfr   r   r   r   Ú__init__   s   z!AssignmentTargetRegister.__init__N)r   r   r   r   ©r
   r   r   r   r   r   r   r   r   r      s    r   c                   @  s   e Zd ZdZd
dd„Zd	S )ÚAssignmentTargetIndexz base[index] as assignment targetÚbaser   Úindexr   r   c                 C  s   || _ || _t| _d S r   )r   r   r   r	   )r   r   r   r   r   r   r      s   
zAssignmentTargetIndex.__init__N)r   r   r   r   r   r   r   r   r   r   r   r      s    r   c                   @  s   e Zd ZdZdddd„ZdS )ÚAssignmentTargetAttrzobj.attr as assignment targetFÚobjr   ÚattrÚstrÚ
can_borrowÚboolr   r   c                 C  sV   || _ || _|| _t|jtƒr#|jj |¡r#|j| _|j 	|¡| _d S t
| _t
| _d S r   )r   r   r    Ú
isinstancer	   r   Úclass_irÚhas_attrÚobj_typeÚ	attr_typer   )r   r   r   r    r   r   r   r   &   s   
zAssignmentTargetAttr.__init__N)F)r   r   r   r   r    r!   r   r   r   r   r   r   r   r   #   ó    r   c                   @  s   e Zd ZdZddd	d
„ZdS )ÚAssignmentTargetTuplezx, ..., y as assignment targetNÚitemsúlist[AssignmentTarget]Ústar_idxú
int | Noner   r   c                 C  s   || _ || _d S r   )r)   r+   )r   r)   r+   r   r   r   r   7   s   
zAssignmentTargetTuple.__init__r   )r)   r*   r+   r,   r   r   r   r   r   r   r   r(   4   r'   r(   N)Ú
__future__r   Úmypyc.ir.opsr   r   Úmypyc.ir.rtypesr   r   r   r   r   r   r   r(   r   r   r   r   Ú<module>   s    