+
    VBi\0                     L   ^RI Ht ^RI Ht ^RIHt ^RIHt ^RIHtHt  ! R R4      t ! R R	]4      t	 ! R
 R]4      t
 ! R R]4      t ! R R4      t ! R R]P                  ]4      t]t ! R R]P                   ]4      t ! R R]P                  4      t ! R R]4      tR# )   )Nodes)	ExprNodes)Node)AtomicExprNode)
c_ptr_type
c_int_typec                   8   a  ] tR t^t o RtRtRR ltR tRtV t	R# )
TempHandleNFc                L    Wn         Vf   VP                  V n        R # W n        R # N)typeis_pyobjectneeds_cleanup)selfr   r   s   &&&>/usr/lib/python3.14/site-packages/Cython/Compiler/UtilNodes.py__init__TempHandle.__init__   s!    	 !%!1!1D!.    c                0    \        WV P                  R 7      # ))handler   )TempRefNoder   )r   poss   &&r   refTempHandle.ref   s    3$))<<r   )r   r   r   )
__name__
__module____qualname____firstlineno__tempneeds_xdecrefr   r   __static_attributes____classdictcell____classdict__s   @r   r
   r
      s     DM/= =r   r
   c                   H   a  ] tR t^t o R tR tR tR tR tR	R lt	Rt
V tR# )
r   c                T    V P                   V P                  P                   8X  g   Q hV # r   r   r   r   envs   &&r   analyse_typesTempRefNode.analyse_types"   #    yyDKK,,,,,r   c                T    V P                   V P                  P                   8X  g   Q hV # r   r'   r(   s   &&r   analyse_target_types TempRefNode.analyse_target_types&   r,   r   c                    R # r    r(   s   &&r   analyse_target_declaration&TempRefNode.analyse_target_declaration*       r   c                >    V P                   P                  pVf   RpV# )Nz<error>)r   r   )r   results   & r   calculate_result_code!TempRefNode.calculate_result_code-   s    !!>I6r   c                    R # r   r1   r   codes   &&r   generate_result_code TempRefNode.generate_result_code2   r4   r   c                   V P                   P                  '       d@   VP                  V4       VP                  V P	                  4       V P                  4       4       TP                  V P	                  4       : R V'       d   VP	                  4       MVP                  V P                  4       4      : R24       VP                  V4       VP                  V4       R#  = ;N)
r   r   make_owned_referenceput_xdecrefr6   ctypeputln	result_asgenerate_post_assignment_code
free_tempsr   rhsr;   overloaded_assignments   &&&&r   generate_assignment_code$TempRefNode.generate_assignment_code5   s    99   $$T*T[[]DJJL9

KKM1CJJLs}}TZZ\7RR
 	 	))$/tr   r1   NF)r   r   r   r   r*   r.   r2   r7   r<   rL   r!   r"   r#   s   @r   r   r      s(     

 
r   r   c                   H   a  ] tR t^Bt o RtR.tR tR tR tR t	R t
RtV tR	# )
TempsBlockNodeaC  
Creates a block which allocates temporary variables.
This is used by transforms to output constructs that need
to make use of a temporary variable. Simply pass the types
of the needed temporaries to the constructor.

The variables can be referred to using a TempRefNode
(which can be constructed by calling get_ref_node).
bodyc                    V P                    F9  pVP                  P                  VP                  VP                  R 7      Vn        K;  	  V P                  P                  V4       V P                    F  pVP                  '       d`   VP                  '       d(   VP                  VP
                  VP                  4       M&VP                  VP
                  VP                  4       VP                  P                  VP
                  4       K  	  R# )
manage_refN)temps	funcstateallocate_tempr   r   r   rQ   generate_execution_coder    put_xdecref_clearput_decref_clearrelease_temp)r   r;   r   s   && r   rX   &TempsBlockNode.generate_execution_codeT   s    jjF..66(<(< 7 >FK ! 			))$/jjF###'''**6;;D))&++v{{CNN''4 !r   c                <    V P                   P                  V4       R # r   rQ   analyse_declarationsr(   s   &&r   r_   #TempsBlockNode.analyse_declarationsa       		&&s+r   c                F    V P                   P                  V4      V n         V # r   rQ   analyse_expressionsr(   s   &&r   rd   "TempsBlockNode.analyse_expressionsd       II11#6	r   c                <    V P                   P                  W4       R # r   rQ   generate_function_definitionsr   r)   r;   s   &&&r   ri   ,TempsBlockNode.generate_function_definitionsh       		//:r   c                <    V P                   P                  V4       R # r   )rQ   annotater:   s   &&r   rn   TempsBlockNode.annotatek   s    		4 r   )rQ   N)r   r   r   r   __doc__child_attrsrX   r_   rd   ri   rn   r!   r"   r#   s   @r   rP   rP   B   s1      (K5,;! !r   rP   c                      a  ] tR t^ot o . tRtRR ltR tR tR t	R t
R tR	 tR
 tR tR tR tR tR tR tRR ltR tR tR tRtV tR# )ResultRefNodeFNc                    Wn         R V n        W@n        Ve$   VP                  V n        \        VRR 4      V n        Ve   W n        Ve   W0n        V'       d   RV n        V P                  f   Q hR # )Nr   T)
expressionr   may_hold_nonegetattrr   is_temp)r   ru   r   r   rv   rx   s   &&&&&&r   r   ResultRefNode.__init__v   sd    $*!!~~DH
FD9DI?HIDLxx###r   c                    V # r   r1   r   s   &r   
clone_nodeResultRefNode.clone_node   s    r   c                `    V P                   '       d   V P                   P                  V4      # R# )Nr1   )ru   type_dependenciesr(   s   &&r   r   ResultRefNode.type_dependencies   s%    ?????44S99Ir   c                L    Wn         \        VR R4      pV'       d	   W n        R# R# )r   N)ru   rw   r   )r   ru   r   s   && r   update_expressionResultRefNode.update_expression   s"    $z640I r   c                    R # r   r1   r(   s   &&r   r2   (ResultRefNode.analyse_target_declaration   r4   r   c                    V P                   eX   V P                   P                  '       g!   V P                   P                  V4      V n         V P                   P                  V n        V # r   )ru   r   r*   r(   s   &&r   r*   ResultRefNode.analyse_types   sH    ??&??'''"&//"?"?"D,,DIr   c                    V P                   e   V P                   # V P                  eJ   V P                  P                   e   V P                  P                   # V P                  P                  V4      # Q R4       h)Nz"cannot infer type of ResultRefNode)r   ru   
infer_typer(   s   &&r   r   ResultRefNode.infer_type   s`    99 99??&##/+++??--c22:::ur   c                V    V P                   P                  '       g   R # V P                  # rN   )r   r   rv   r{   s   &r   may_be_noneResultRefNode.may_be_none   s!    yy$$$!!!r   c                    V P                   e   V P                   P                  4       # V P                  e   V P                  P                  # R# )NT)ru   r   r   r   r{   s   &r   _DISABLED_may_be_none#ResultRefNode._DISABLED_may_be_none   s>     ??&??..0099 99(((r   c                    R # )Tr1   r{   s   &r   	is_simpleResultRefNode.is_simple   s    r   c                     V P                   #   \         d<    T P                  e    T P                  P                  4       T n          T P                   # i ; ir   )result_codeAttributeErrorru   r6   r{   s   &r   r6   ResultRefNode.result   sN    	<### 	<*#'??#9#9#; 	<s    8AAc                    R # r   r1   r:   s   &&r   generate_evaluation_code&ResultRefNode.generate_evaluation_code   r4   r   c                    R # r   r1   r:   s   &&r   r<   "ResultRefNode.generate_result_code   r4   r   c                    R # r   r1   r:   s   &&r   generate_disposal_code$ResultRefNode.generate_disposal_code   r4   r   c                   V P                   P                  '       dR   VP                  V4       V P                  '       g/   VP	                  V P                  4       V P                  4       4       TP                  V P                  4       : R V'       d   VP                  4       MVP                  V P                  4       4      : R24       VP                  V4       VP                  V4       R# r?   )r   r   rB   lhs_of_first_assignment
put_decrefr6   rD   rE   rF   rG   rH   rI   s   &&&&r   rL   &ResultRefNode.generate_assignment_code   s    99   $$T*///tzz|<

KKM1CJJLs}}TZZ\7RR
 	 	))$/tr   c                    R # r   r1   r(   s   &&r   allocate_tempsResultRefNode.allocate_temps   r4   r   c                    R # r   r1   r(   s   &&r   r[   ResultRefNode.release_temp   r4   r   c                    R # r   r1   r:   s   &&r   rH   ResultRefNode.free_temps   r4   r   )ru   rx   rv   r   r   r   )NNNTFrN   )r   r   r   r   subexprsr   r   r|   r   r   r2   r*   r   r   r   r   r6   r   r<   r   rL   r   r[   rH   r!   r"   r#   s   @r   rs   rs   o   sq      H#$;"
 
 r   rs   c                   2   a  ] tR t^t o R tR tR tRtV tR# )LetNodeMixinc                4    Wn         VP                  V n        R # r   )	lazy_tempru   temp_expression)r   r   s   &&r   set_temp_exprLetNodeMixin.set_temp_expr   s    "(33r   c                   V P                   P                  V4       V P                   P                  V n        V P                  P                  '       d%   \        V P                  P                  4      V n        V P                   P                  4       V n        V P                  '       d!   V P                   P                  4       V n
        MV P                  P                  '       d   V P                   P                  V4       MV P                   P                  V4       VP                  P                  V P                  R R7      V n
        VP!                  V P                  : RV P                   P                  4       : R24       V P                   P#                  V4       V P                   P%                  V4       V P                  V P&                  n        R# )TrS   r@   rA   N)r   r   r   	temp_typeis_arrayr   	base_typeresult_in_temp_result_in_tempr6   r   is_memoryviewslicemake_owned_memoryviewslicerB   rV   rW   rE   r   rH   r   r   r:   s   &&r   setup_temp_exprLetNodeMixin.setup_temp_expr   s@   55d;--22>>"""'(@(@ADN#33BBD,,335DI~~000$$??E$$99$?444 5 1DIJJTYY0D0D0K0K0MNO  77=  ++D1%)YY"r   c                h   V P                   '       d9   V P                  P                  V4       V P                  P                  V4       R # V P                  P
                  '       d'   VP                  V P                  V P                  4       VP                  P                  V P                  4       R # r   )
r   r   r   rH   r   needs_refcountingrZ   r   rV   r[   r:   s   &&r   teardown_temp_exprLetNodeMixin.teardown_temp_expr   st      77=  ++D1~~///%%dii@NN''		2r   )r   r   r   r   r   N)	r   r   r   r   r   r   r   r!   r"   r#   s   @r   r   r      s     4/(3 3r   r   c                   X   a  ] tR tRt o RR.tR tR tR tR tR t	R	 t
R
 tR tRtV tR# )EvalWithTempExprNodei  r   subexpressionc                    V P                  V4       VP                  V n        W n        V P                  P                  V n        R # r   )r   r   r   r   )r   r   r   s   &&&r   r   EvalWithTempExprNode.__init__	  s6    9% $$*&&++	r   c                8    V P                   P                  V4      # r   )r   r   r(   s   &&r   r   EvalWithTempExprNode.infer_type  s    !!,,S11r   c                6    V P                   P                  4       # r   )r   r   r{   s   &r   r    EvalWithTempExprNode.may_be_none  s    !!--//r   c                6    V P                   P                  4       # r   )r   r6   r{   s   &r   r6   EvalWithTempExprNode.result  s    !!((**r   c                   V P                   P                  V4      V n         V P                  P                  V P                   4       V P                  P                  V4      V n        V P                  P
                  V n        V # r   )r   r*   r   r   r   r   r(   s   &&r   r*   "EvalWithTempExprNode.analyse_types  sd    #33AA#F(()=)=>!//==cB&&++	r   c                <    V P                   P                  V4       R # r   )r   rH   r:   s   &&r   free_subexpr_temps'EvalWithTempExprNode.free_subexpr_temps   s    %%d+r   c                <    V P                   P                  V4       R # r   )r   r   r:   s   &&r   generate_subexpr_disposal_code3EvalWithTempExprNode.generate_subexpr_disposal_code#  s    11$7r   c                    V P                  V4       V P                  P                  V4       V P                  V4       R # r   )r   r   r   r   r:   s   &&r   r   -EvalWithTempExprNode.generate_evaluation_code&  s2    T"33D9%r   )r   r   r   r   N)r   r   r   r   r   r   r   r   r6   r*   r   r   r   r!   r"   r#   s   @r   r   r     s>      "?3H,20+,8& &r   r   c                   F   a  ] tR tRt o RR.tR tR tR tR tR t	R	t
V tR
# )LetNodei/  r   rQ   c                V    V P                  V4       VP                  V n        W n        R # r   )r   r   rQ   )r   r   rQ   s   &&&r   r   LetNode.__init__;  s     9%88	r   c                r    V P                   P                  V4       V P                  P                  V4       R # r   )r   r_   rQ   r(   s   &&r   r_   LetNode.analyse_declarations@  s(    11#6		&&s+r   c                    V P                   P                  V4      V n         V P                  P                  V4      V n        V # r   )r   rd   rQ   r(   s   &&r   rd   LetNode.analyse_expressionsD  s6    #33GGLII11#6	r   c                    V P                  V4       V P                  P                  V4       V P                  V4       R # r   )r   rQ   rX   r   r:   s   &&r   rX   LetNode.generate_execution_codeI  s0    T"		))$/%r   c                r    V P                   P                  W4       V P                  P                  W4       R # r   )r   ri   rQ   rj   s   &&&r   ri   %LetNode.generate_function_definitionsN  s(    ::3E		//:r   )rQ   r   r   N)r   r   r   r   rq   r   r_   rd   rX   ri   r!   r"   r#   s   @r   r   r   /  s/      %f-K
,
&
; ;r   r   c                   N   a  ] tR tRt o . tR.tR tR tR tR t	R t
R tR	tV tR
# )TempResultFromStatNodeiS  rQ   c                p    Wn         VP                  V n        W n        VP                  V n        ^V n        R# )r   N)
result_refr   rQ   r   rx   )r   r   rQ   s   &&&r   r   TempResultFromStatNode.__init__\  s)    $88	OO	r   c                <    V P                   P                  V4       R # r   r^   r(   s   &&r   r_   +TempResultFromStatNode.analyse_declarationsc  ra   r   c                F    V P                   P                  V4      V n         V # r   rc   r(   s   &&r   r*   $TempResultFromStatNode.analyse_typesf  rf   r   c                6    V P                   P                  4       # r   )r   r   r{   s   &r   r   "TempResultFromStatNode.may_be_nonej  s    **,,r   c                z    V P                  4       V P                  n        V P                  P	                  V4       R # r   )r6   r   r   rQ   rX   r:   s   &&r   r<   +TempResultFromStatNode.generate_result_codem  s&    &*kkm#		))$/r   c                <    V P                   P                  W4       R # r   rh   rj   s   &&&r   ri   4TempResultFromStatNode.generate_function_definitionsq  rl   r   )rQ   rx   r   r   r   N)r   r   r   r   r   rq   r   r_   r*   r   r<   ri   r!   r"   r#   s   @r   r   r   S  s6      H(K,-0; ;r   r   c                   :   a  ] tR tRt o Rt]tR tR tR t	Rt
V tR# )HasNoGilNodeiu  zH
Simple node that evaluates to
* 0 if gil
* 1 if nogil
* 2 if maybe gil
c                    V # r   r1   r(   s   &&r   r*   HasNoGilNode.analyse_types~  s    r   c                    R # r   r1   r:   s   &&r   r<   !HasNoGilNode.generate_result_code  r4   r   c                >    \        \        V P                  4      4      # r   )strintin_nogil_contextr{   s   &r   r7   "HasNoGilNode.calculate_result_code  s    3t,,-..r   r1   N)r   r   r   r   rp   r   r   r*   r<   r7   r!   r"   r#   s   @r   r   r   u  s%      D/ /r   r   N) r   r   r   r   
PyrexTypesr   r   r
   r   rP   rs   r   ExprNoder   
LetRefNodeStatNoder   r   r   r1   r   r   <module>r     s       % .= =!. !H*!T *!ZnN nb 3  3F&&9--| &&R 
!;ennl !;H;Y// ;D/> /r   