Ë
    Ç[;já1  ã                   óJ  — d dl mZ d dl mZ d dlmZ d dlmZ d dlmZmZ  G d„ d«      Z G d„ d	e«      Z	 G d
„ de«      Z
 G d„ de«      Z G d„ d«      Z G d„ dej                  e«      ZeZ G d„ dej                   e«      Z G d„ dej                  «      Z G d„ de«      Zy)é   )ÚNodes)Ú	ExprNodes)ÚNode)ÚAtomicExprNode)Ú
c_ptr_typeÚ
c_int_typec                   ó"   — e Zd ZdZdZdd„Zd„ Zy)Ú
TempHandleNFc                 óH   — || _         |€|j                  | _        y || _        y ©N)ÚtypeÚis_pyobjectÚneeds_cleanup)Úselfr   r   s      úbG:\00. PROJECTS\API\Inventory\templateJSON\kerjaOCR\Lib\site-packages\Cython/Compiler/UtilNodes.pyÚ__init__zTempHandle.__init__   s%   € ØˆŒ	ØÐ Ø!%×!1Ñ!1ˆDÕà!.ˆDÕó    c                 ó2   — t        || | j                  ¬«      S )N)Úhandler   )ÚTempRefNoder   )r   Úposs     r   ÚrefzTempHandle.ref   s   € Ü˜3 t°$·)±)Ô<Ð<r   r   )Ú__name__Ú
__module__Ú__qualname__ÚtempÚneeds_xdecrefr   r   © r   r   r
   r
      s   „ à€DØ€Mó/ó=r   r
   c                   ó2   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zdd„Zy)	r   c                 óP   — | j                   | j                  j                   k(  sJ ‚| S r   ©r   r   ©r   Úenvs     r   Úanalyse_typeszTempRefNode.analyse_types"   ó#   € Ø�y‰y˜DŸK™K×,Ñ,Ò,Ð,Ð,Øˆr   c                 óP   — | j                   | j                  j                   k(  sJ ‚| S r   r!   r"   s     r   Úanalyse_target_typesz TempRefNode.analyse_target_types&   r%   r   c                  ó   — y r   r   r"   s     r   Úanalyse_target_declarationz&TempRefNode.analyse_target_declaration*   ó   € Ør   c                 ó:   — | j                   j                  }|€d}|S )Nz<error>)r   r   )r   Úresults     r   Úcalculate_result_codez!TempRefNode.calculate_result_code-   s   € Ø—‘×!Ñ!ˆØˆ> I˜6Øˆr   c                  ó   — y r   r   ©r   Úcodes     r   Úgenerate_result_codez TempRefNode.generate_result_code2   r*   r   c                 óš  — | j                   j                  r?|j                  |«       |j                  | j	                  «       | j                  «       «       |j                  | j	                  «       ›d|r|j	                  «       n|j                  | j                  «       «      ›d�«       |j                  |«       |j                  |«       y ©Nú = Ú;)
r   r   Úmake_owned_referenceÚput_xdecrefr,   ÚctypeÚputlnÚ	result_asÚgenerate_post_assignment_codeÚ
free_temps©r   Úrhsr0   Úoverloaded_assignments       r   Úgenerate_assignment_codez$TempRefNode.generate_assignment_code5   sŽ   € Ø�9‰9× Ò Ø×$Ñ$ TÔ*à×Ñ˜TŸ[™[›]¨D¯J©J«LÔ9Ø�
‰
Ø�K‰K�MÙ1ˆC�J‰JŒL°s·}±}ÀTÇZÁZÃ\Ó7RÑRð
ô 	ð 	×)Ñ)¨$Ô/Ø�‰�tÕr   N©F)	r   r   r   r$   r'   r)   r-   r1   r@   r   r   r   r   r      s    „ òòòòò
ô
r   r   c                   ó4   — e Zd ZdZdgZd„ Zd„ Zd„ Zd„ Zd„ Z	y)	ÚTempsBlockNodea_  
    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                 óþ  — | j                   D ]8  }|j                  j                  |j                  |j                  ¬«      |_        Œ: | j                  j                  |«       | j                   D ]Œ  }|j                  rY|j                  r'|j                  |j
                  |j                  «       n&|j                  |j
                  |j                  «       |j                  j                  |j
                  «       ŒŽ y )N©Ú
manage_ref)ÚtempsÚ	funcstateÚallocate_tempr   r   r   rD   Úgenerate_execution_coder   Úput_xdecref_clearÚput_decref_clearÚrelease_temp)r   r0   r   s      r   rK   z&TempsBlockNode.generate_execution_codeT   s´   € Ø—j”jˆFØŸ.™.×6Ñ6Ø—‘¨×(<Ñ(<ð 7ó >ˆF�Kð !ð 	�	‰	×)Ñ)¨$Ô/Ø—j”jˆFØ×#Ò#Ø×'Ò'Ø×*Ñ*¨6¯;©;¸¿¹ÕDà×)Ñ)¨&¯+©+°v·{±{ÔCØ�N‰N×'Ñ'¨¯©Õ4ñ !r   c                 ó:   — | j                   j                  |«       y r   ©rD   Úanalyse_declarationsr"   s     r   rQ   z#TempsBlockNode.analyse_declarationsa   ó   € Ø�	‰	×&Ñ& sÕ+r   c                 óF   — | j                   j                  |«      | _         | S r   ©rD   Úanalyse_expressionsr"   s     r   rU   z"TempsBlockNode.analyse_expressionsd   ó   € Ø—I‘I×1Ñ1°#Ó6ˆŒ	Øˆr   c                 ó<   — | j                   j                  ||«       y r   ©rD   Úgenerate_function_definitions©r   r#   r0   s      r   rY   z,TempsBlockNode.generate_function_definitionsh   ó   € Ø�	‰	×/Ñ/°°TÕ:r   c                 ó:   — | j                   j                  |«       y r   )rD   Úannotater/   s     r   r]   zTempsBlockNode.annotatek   s   € Ø�	‰	×Ñ˜4Õ r   N)
r   r   r   Ú__doc__Úchild_attrsrK   rQ   rU   rY   r]   r   r   r   rC   rC   B   s)   „ ñð �(€Kò5ò,òò;ó!r   rC   c                   ó„   — e Zd Zg ZdZdd„Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zdd„Zd„ Zd„ Zd„ Zy)ÚResultRefNodeFNc                 óÊ   — || _         d | _        || _        |�#|j                  | _        t        |dd «      | _        |�|| _        |�|| _        |rd| _        | j                  €J ‚y )Nr   T)Ú
expressionr   Úmay_hold_noneÚgetattrr   Úis_temp)r   rc   r   r   rd   rf   s         r   r   zResultRefNode.__init__v   sl   € Ø$ˆŒØˆŒØ*ˆÔØÐ!Ø!—~‘~ˆDŒHÜ 
¨F°DÓ9ˆDŒIØˆ?ØˆDŒHØÐØˆDŒIÙØˆDŒLØ�x‰xÐ#Ð#Ñ#r   c                 ó   — | S r   r   ©r   s    r   Ú
clone_nodezResultRefNode.clone_node…   s   € àˆr   c                 óR   — | j                   r| j                   j                  |«      S y)Nr   )rc   Útype_dependenciesr"   s     r   rk   zResultRefNode.type_dependencies‰   s!   € Ø�?Š?Ø—?‘?×4Ñ4°SÓ9Ð9àr   c                 ó@   — || _         t        |dd «      }|r|| _        y y )Nr   )rc   re   r   )r   rc   r   s      r   Úupdate_expressionzResultRefNode.update_expression�   s&   € Ø$ˆŒÜ�z 6¨4Ó0ˆÙØˆD�Ið r   c                  ó   — y r   r   r"   s     r   r)   z(ResultRefNode.analyse_target_declaration•   r*   r   c                 óÀ   — | j                   �Q| j                   j                  s | j                   j                  |«      | _         | j                   j                  | _        | S r   )rc   r   r$   r"   s     r   r$   zResultRefNode.analyse_types˜   sE   € Ø�?‰?Ð&Ø—?‘?×'Ò'Ø"&§/¡/×"?Ñ"?ÀÓ"D�”ØŸ™×,Ñ,ˆDŒIØˆr   c                 óæ   — | j                   �| j                   S | j                  �G| j                  j                   �| j                  j                   S | j                  j                  |«      S J d«       ‚)Nz"cannot infer type of ResultRefNode)r   rc   Ú
infer_typer"   s     r   rq   zResultRefNode.infer_typeŸ   s`   € Ø�9‰9Ð Ø—9‘9ÐØ�?‰?Ð&Ø�‰×#Ñ#Ð/Ø—‘×+Ñ+Ð+Ø—?‘?×-Ñ-¨cÓ2Ð2Ø:Ð:Ó:ˆur   c                 óH   — | j                   j                  sy| j                  S )NF)r   r   rd   rh   s    r   Úmay_be_nonezResultRefNode.may_be_none¨   s   € Ø�y‰y×$Ò$ØØ×!Ñ!Ð!r   c                 ó”   — | j                   �| j                   j                  «       S | j                  �| j                  j                  S y©NT)rc   rs   r   r   rh   s    r   Ú_DISABLED_may_be_nonez#ResultRefNode._DISABLED_may_be_none­   s>   € ð �?‰?Ð&Ø—?‘?×.Ñ.Ó0Ð0Ø�9‰9Ð Ø—9‘9×(Ñ(Ð(Ør   c                  ó   — yru   r   rh   s    r   Ú	is_simplezResultRefNode.is_simple¶   s   € Ør   c                 ó¦   — 	 | j                   S # t        $ r9 | j                  �| j                  j                  «       | _         Y | j                   S w xY wr   )Úresult_codeÚAttributeErrorrc   r,   rh   s    r   r,   zResultRefNode.result¹   sN   € ð	<Ø×#Ñ#Ð#øÜò 	<Ø�‰Ð*Ø#'§?¡?×#9Ñ#9Ó#;�Ô øØ×ÑÐð	<ús   ‚ Ž4AÁAc                  ó   — y r   r   r/   s     r   Úgenerate_evaluation_codez&ResultRefNode.generate_evaluation_codeÁ   r*   r   c                  ó   — y r   r   r/   s     r   r1   z"ResultRefNode.generate_result_codeÄ   r*   r   c                  ó   — y r   r   r/   s     r   Úgenerate_disposal_codez$ResultRefNode.generate_disposal_codeÇ   r*   r   c                 ó²  — | j                   j                  rK|j                  |«       | j                  s.|j	                  | j                  «       | j                  «       «       |j                  | j                  «       ›d|r|j                  «       n|j                  | j                  «       «      ›d�«       |j                  |«       |j                  |«       y r3   )r   r   r6   Úlhs_of_first_assignmentÚ
put_decrefr,   r8   r9   r:   r;   r<   r=   s       r   r@   z&ResultRefNode.generate_assignment_codeÊ   s•   € Ø�9‰9× Ò Ø×$Ñ$ TÔ*Ø×/Ò/Ø—‘ §¡£¨t¯z©z«|Ô<Ø�
‰
Ø�K‰K�MÙ1ˆC�J‰JŒL°s·}±}ÀTÇZÁZÃ\Ó7RÑRð
ô 	ð 	×)Ñ)¨$Ô/Ø�‰�tÕr   c                  ó   — y r   r   r"   s     r   Úallocate_tempszResultRefNode.allocate_tempsÖ   r*   r   c                  ó   — y r   r   r"   s     r   rN   zResultRefNode.release_tempÙ   r*   r   c                  ó   — y r   r   r/   s     r   r<   zResultRefNode.free_tempsÜ   r*   r   )NNNTFrA   )r   r   r   Úsubexprsr‚   r   ri   rk   rm   r)   r$   rq   rs   rv   rx   r,   r}   r1   r€   r@   r…   rN   r<   r   r   r   ra   ra   o   si   „ ð €HØ#Ðó$òòòòòò;ò"ò
òò òòòó
òòór   ra   c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚLetNodeMixinc                 ó4   — || _         |j                  | _        y r   )Ú	lazy_temprc   Útemp_expression)r   rŒ   s     r   Úset_temp_exprzLetNodeMixin.set_temp_exprá   s   € Ø"ˆŒØ(×3Ñ3ˆÕr   c                 ó€  — | j                   j                  |«       | j                   j                  | _        | j                  j                  r$t        | j                  j                  «      | _        | j                   j                  «       | _        | j                  r | j                   j                  «       | _
        nè| j                  j                  r| j                   j                  |«       n| j                   j                  |«       |j                  j                  | j                  d¬«      | _
        |j!                  | j                  ›d| j                   j                  «       ›d�«       | j                   j#                  |«       | j                   j%                  |«       | j                  | j&                  _        y )NTrF   r4   r5   )r�   r}   r   Ú	temp_typeÚis_arrayr   Ú	base_typeÚresult_in_tempÚ_result_in_tempr,   r   Úis_memoryviewsliceÚmake_owned_memoryviewslicer6   rI   rJ   r9   r€   r<   rŒ   rz   r/   s     r   Úsetup_temp_exprzLetNodeMixin.setup_temp_exprå   s7  € Ø×Ñ×5Ñ5°dÔ;Ø×-Ñ-×2Ñ2ˆŒØ�>‰>×"Ò"Ü'¨¯©×(@Ñ(@ÓAˆDŒNØ#×3Ñ3×BÑBÓDˆÔØ×ÒØ×,Ñ,×3Ñ3Ó5ˆD�Ià�~‰~×0Ò0Ø×$Ñ$×?Ñ?ÀÕEà×$Ñ$×9Ñ9¸$Ô?ØŸ™×4Ñ4Ø—‘¨4ð 5ó 1ˆDŒIà�J‰J T§Y£Y°×0DÑ0D×0KÑ0KÕ0MÐNÔOØ× Ñ ×7Ñ7¸Ô=Ø× Ñ ×+Ñ+¨DÔ1Ø%)§Y¡Yˆ�‰Õ"r   c                 óL  — | j                   r7| j                  j                  |«       | j                  j                  |«       y | j                  j
                  r&|j                  | j                  | j                  «       |j                  j                  | j                  «       y r   )
r”   r�   r€   r<   r�   Úneeds_refcountingrM   r   rI   rN   r/   s     r   Úteardown_temp_exprzLetNodeMixin.teardown_temp_exprù   sn   € Ø×ÒØ× Ñ ×7Ñ7¸Ô=Ø× Ñ ×+Ñ+¨DÕ1à�~‰~×/Ò/Ø×%Ñ% d§i¡i°·±Ô@Ø�N‰N×'Ñ'¨¯	©	Õ2r   N)r   r   r   rŽ   r—   rš   r   r   r   rŠ   rŠ   à   s   „ ò4ò/ó(3r   rŠ   c                   óD   — e Zd ZddgZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
d
„ Zy)ÚEvalWithTempExprNoder�   Úsubexpressionc                 óŒ   — | j                  |«       |j                  | _        || _        | j                  j                  | _        y r   )rŽ   r   r�   r   )r   rŒ   r�   s      r   r   zEvalWithTempExprNode.__init__	  s8   € Ø×Ñ˜9Ô%Ø ×$Ñ$ˆŒØ*ˆÔà×&Ñ&×+Ñ+ˆ�	r   c                 ó8   — | j                   j                  |«      S r   )r�   rq   r"   s     r   rq   zEvalWithTempExprNode.infer_type  s   € Ø×!Ñ!×,Ñ,¨SÓ1Ð1r   c                 ó6   — | j                   j                  «       S r   )r�   rs   rh   s    r   rs   z EvalWithTempExprNode.may_be_none  s   € Ø×!Ñ!×-Ñ-Ó/Ð/r   c                 ó6   — | j                   j                  «       S r   )r�   r,   rh   s    r   r,   zEvalWithTempExprNode.result  s   € Ø×!Ñ!×(Ñ(Ó*Ð*r   c                 ó  — | j                   j                  |«      | _         | j                  j                  | j                   «       | j                  j                  |«      | _        | j                  j
                  | _        | S r   )r�   r$   rŒ   rm   r�   r   r"   s     r   r$   z"EvalWithTempExprNode.analyse_types  sd   € Ø#×3Ñ3×AÑAÀ#ÓFˆÔØ�‰×(Ñ(¨×)=Ñ)=Ô>Ø!×/Ñ/×=Ñ=¸cÓBˆÔØ×&Ñ&×+Ñ+ˆŒ	Øˆr   c                 ó:   — | j                   j                  |«       y r   )r�   r<   r/   s     r   Úfree_subexpr_tempsz'EvalWithTempExprNode.free_subexpr_temps   s   € Ø×Ñ×%Ñ% dÕ+r   c                 ó:   — | j                   j                  |«       y r   )r�   r€   r/   s     r   Úgenerate_subexpr_disposal_codez3EvalWithTempExprNode.generate_subexpr_disposal_code#  s   € Ø×Ñ×1Ñ1°$Õ7r   c                 ó~   — | j                  |«       | j                  j                  |«       | j                  |«       y r   )r—   r�   r}   rš   r/   s     r   r}   z-EvalWithTempExprNode.generate_evaluation_code&  s2   € Ø×Ñ˜TÔ"Ø×Ñ×3Ñ3°DÔ9Ø×Ñ Õ%r   N)r   r   r   rˆ   r   rq   rs   r,   r$   r¤   r¦   r}   r   r   r   rœ   rœ     s6   „ ð " ?Ð3€Hò,ò2ò0ò+òò,ò8ó&r   rœ   c                   ó2   — e Zd ZddgZd„ Zd„ Zd„ Zd„ Zd„ Zy)	ÚLetNoder�   rD   c                 óV   — | j                  |«       |j                  | _        || _        y r   )rŽ   r   rD   )r   rŒ   rD   s      r   r   zLetNode.__init__;  s"   € Ø×Ñ˜9Ô%Ø—8‘8ˆŒØˆ�	r   c                 óp   — | j                   j                  |«       | j                  j                  |«       y r   )r�   rQ   rD   r"   s     r   rQ   zLetNode.analyse_declarations@  s(   € Ø×Ñ×1Ñ1°#Ô6Ø�	‰	×&Ñ& sÕ+r   c                 ó†   — | j                   j                  |«      | _         | j                  j                  |«      | _        | S r   )r�   rU   rD   r"   s     r   rU   zLetNode.analyse_expressionsD  s6   € Ø#×3Ñ3×GÑGÈÓLˆÔØ—I‘I×1Ñ1°#Ó6ˆŒ	Øˆr   c                 ó~   — | j                  |«       | j                  j                  |«       | j                  |«       y r   )r—   rD   rK   rš   r/   s     r   rK   zLetNode.generate_execution_codeI  s0   € Ø×Ñ˜TÔ"Ø�	‰	×)Ñ)¨$Ô/Ø×Ñ Õ%r   c                 ót   — | j                   j                  ||«       | j                  j                  ||«       y r   )r�   rY   rD   rZ   s      r   rY   z%LetNode.generate_function_definitionsN  s,   € Ø×Ñ×:Ñ:¸3ÀÔEØ�	‰	×/Ñ/°°TÕ:r   N)	r   r   r   r_   r   rQ   rU   rK   rY   r   r   r   r©   r©   /  s'   „ ð % fÐ-€Kòò
,òò
&ó
;r   r©   c                   ó:   — e Zd Zg ZdgZd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
y)	ÚTempResultFromStatNoderD   c                 ór   — || _         |j                  | _        || _        |j                  | _        d| _        y )Nr   )Ú
result_refr   rD   r   rf   )r   r²   rD   s      r   r   zTempResultFromStatNode.__init__\  s-   € Ø$ˆŒØ—8‘8ˆŒØˆŒ	Ø—O‘OˆŒ	Øˆ�r   c                 ó:   — | j                   j                  |«       y r   rP   r"   s     r   rQ   z+TempResultFromStatNode.analyse_declarationsc  rR   r   c                 óF   — | j                   j                  |«      | _         | S r   rT   r"   s     r   r$   z$TempResultFromStatNode.analyse_typesf  rV   r   c                 ó6   — | j                   j                  «       S r   )r²   rs   rh   s    r   rs   z"TempResultFromStatNode.may_be_nonej  s   € Ø�‰×*Ñ*Ó,Ð,r   c                 óx   — | j                  «       | j                  _        | j                  j	                  |«       y r   )r,   r²   rz   rD   rK   r/   s     r   r1   z+TempResultFromStatNode.generate_result_codem  s&   € Ø&*§k¡k£mˆ�‰Ô#Ø�	‰	×)Ñ)¨$Õ/r   c                 ó<   — | j                   j                  ||«       y r   rX   rZ   s      r   rY   z4TempResultFromStatNode.generate_function_definitionsq  r[   r   N)r   r   r   rˆ   r_   r   rQ   r$   rs   r1   rY   r   r   r   r°   r°   S  s.   „ ð €HØ�(€Kòò,òò-ò0ó;r   r°   c                   ó&   — e Zd ZdZeZd„ Zd„ Zd„ Zy)ÚHasNoGilNodez\
    Simple node that evaluates to
    * 0 if gil
    * 1 if nogil
    * 2 if maybe gil
    c                 ó   — | S r   r   r"   s     r   r$   zHasNoGilNode.analyse_types~  s   € Øˆr   c                  ó   — y r   r   r/   s     r   r1   z!HasNoGilNode.generate_result_code�  r*   r   c                 ó>   — t        t        | j                  «      «      S r   )ÚstrÚintÚin_nogil_contextrh   s    r   r-   z"HasNoGilNode.calculate_result_code„  s   € Ü”3�t×,Ñ,Ó-Ó.Ð.r   N)	r   r   r   r^   r   r   r$   r1   r-   r   r   r   r¹   r¹   u  s   „ ñð €Dòòó/r   r¹   N)Ú r   r   r   r   Ú
PyrexTypesr   r   r
   r   rC   ra   rŠ   ÚExprNoderœ   Ú
LetRefNodeÚStatNoder©   r°   r¹   r   r   r   Ú<module>rÅ      s¢   ðõ Ý Ý Ý %ß .÷=ñ =ô!�.ô !ôH*!�Tô *!ôZn�Nô n÷b 3ñ  3ôF&&˜9×-Ñ-¨|ô &&ðR €
ô!;ˆe�n‰n˜lô !;ôH;˜Y×/Ñ/ô ;ôD/�>õ /r   