§
    ¹³Ùg–  ã            
      ó  — d Z ddlmZ ddlZddlmZ ddlmZ ddlm	Z	m
Z
 ddlmZ dd„Zdd„Zdd„Zdd„Zdd„Ze
j        j        ee
j        j        ee
j        j        ee
j        j        ee
j        j        eiZ G d„ de¦  «        ZdS )zThe 'Store' operation.é    )ÚannotationsN)Údeprecate_funcé   )ÚCircuitError)ÚexprÚtypes)ÚInstructionÚlvalueú	expr.ExprÚrvalueÚreturnútuple[expr.Expr, expr.Expr]c               ó
   — | |fS )N© ©r
   r   s     úJ/granary/edev/quantum/lib/python3.11/site-packages/qiskit/circuit/store.pyÚ_handle_equal_typesr      s   € Ø�6ˆ>Ðó    c               ó>   — | t          j        || j        d¬¦  «        fS )NT)Úimplicit)r   ÚCastÚtyper   s     r   Ú_handle_implicit_castr      s    € Ø•4”9˜V V¤[¸4Ð@Ñ@Ô@Ð@Ð@r   útyping.NoReturnc               óB   — t          d|j        › d| j        › d�¦  «        ‚)Nú#an explicit cast is required from 'ú' to 'ú'©r   r   r   s     r   Ú_requires_lossless_castr    !   s*   € Ý
Ð^¸V¼[Ð^Ð^ÐPVÔP[Ð^Ð^Ð^Ñ
_Ô
_Ð_r   c               óB   — t          d|j        › d| j        › d�¦  «        ‚)Nr   r   z', which may be lossyr   r   s     r   Ú_requires_dangerous_castr"   %   s.   € Ý
Øc¨f¬kÐcÐcÀÄÐcÐcÐcñô ð r   c                óB   — t          d|j        › d| j        › d�¦  «        ‚)Nzno cast is possible from 'r   r   r   r   s     r   Ú_no_cast_possibler$   +   s(   € Ý
ÐU°F´KÐUÐUÀvÄ{ÐUÐUÐUÑ
VÔ
VÐVr   c                  ó€   ‡ — e Zd ZdZdZdˆ fd„Zed„ ¦   «         Zed„ ¦   «         Z e	d	d
¬¦  «        d„ ¦   «         Z
ˆ xZS )ÚStorea  A manual storage of some classical value to a classical memory location.

    This is a low-level primitive of the classical-expression handling (similar to how
    :class:`~.circuit.Measure` is a primitive for quantum measurement), and is not safe for
    subclassing.Tr
   r   r   c                óZ  •— t          j        |¦  «        st          d|› d�¦  «        ‚t          j        |j        |j        ¦  «        }t                               |¦  «        x}€t          d|› �¦  «        ‚ |||¦  «        \  }}t          ¦   «          
                    ddd||g¦  «         dS )zŠ
        Args:
            lvalue: the memory location being stored into.
            rvalue: the expression result being stored.
        r   z' is not an l-valueNzunhandled cast kind required: Ústorer   )r   Ú	is_lvaluer   r   Ú	cast_kindr   Ú_HANDLE_CASTÚgetÚRuntimeErrorÚsuperÚ__init__)Úselfr
   r   r*   ÚhandlerÚ	__class__s        €r   r/   zStore.__init__B   sµ   ø€ õ Œ~˜fÑ%Ô%ð 	@ÝÐ> 6Ð>Ð>Ð>Ñ?Ô?Ð?å”O F¤K°´Ñ=Ô=ˆ	Ý#×'Ò'¨	Ñ2Ô2Ð2ˆGÐ;ÝÐKÀ	ÐKÐKÑLÔLÐLØ ˜ ¨Ñ0Ô0‰ˆ�å‰Œ×Ò˜ ! Q¨°Ð(8Ñ9Ô9Ð9Ð9Ð9r   c                ó   — | j         d         S )zBGet the l-value :class:`~.expr.Expr` node that is being stored to.r   ©Úparams©r0   s    r   r
   zStore.lvalueR   ó   € ð Œ{˜1Œ~Ðr   c                ó   — | j         d         S )zQGet the r-value :class:`~.expr.Expr` node that is being written into the l-value.r   r4   r6   s    r   r   zStore.rvalueW   r7   r   z1.3.0zin 2.0.0)ÚsinceÚremoval_timelinec                ó    — t          d¦  «        ‚)z:meta hidden:zNstores cannot be conditioned with `c_if`; use a full `if_test` context instead)ÚNotImplementedError)r0   Ú	classicalÚvals      r   Úc_ifz
Store.c_if\   s   € õ "Ø\ñ
ô 
ð 	
r   )r
   r   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú
_directiver/   Úpropertyr
   r   r   r?   Ú__classcell__)r2   s   @r   r&   r&   8   s°   ø€ € € € € ðð ð €Jð:ð :ð :ð :ð :ð :ð  ðð ñ „Xðð ðð ñ „Xðð €^˜'°JÐ?Ñ?Ô?ð
ð 
ñ @Ô?ð
ð 
ð 
ð 
ð 
r   r&   )r
   r   r   r   r   r   )r
   r   r   r   r   r   )rC   Ú
__future__r   ÚtypingÚqiskit.utilsr   Ú
exceptionsr   r=   r   r   Úinstructionr	   r   r   r    r"   r$   ÚCastKindÚEQUALÚIMPLICITÚLOSSLESSÚ	DANGEROUSÚNONEr+   r&   r   r   r   ú<module>rR      sZ  ðð Ð à "Ð "Ð "Ð "Ð "Ð "à €€€à 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø $Ð $Ð $Ð $Ð $Ð $Ø "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ø $Ð $Ð $Ð $Ð $Ð $ðð ð ð ðAð Að Að Að`ð `ð `ð `ðð ð ð ðWð Wð Wð Wð
 
„NÔÐ-Ø	„NÔÐ2Ø	„NÔÐ4Ø	„NÔÐ6Ø	„NÔÐ*ð€ð)
ð )
ð )
ð )
ð )
ˆKñ )
ô )
ð )
ð )
ð )
r   