ó
Nä²Wc           @@  s&  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 d d l m Z d e	 f d	 „  ƒ  YZ
 d
 e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d d d „  ƒ  YZ d e j e f d „  ƒ  YZ e Z d e j e f d „  ƒ  YZ d e j f d „  ƒ  YZ d S(   i    (   t   absolute_importi   (   t   Nodes(   t	   ExprNodes(   t   Node(   t   AtomicExprNode(   t
   c_ptr_typet
   TempHandlec           B@  s)   e  Z d Z e Z d d  „ Z d „  Z RS(   c         C@  s1   | |  _  | d  k r$ | j |  _ n	 | |  _ d  S(   N(   t   typet   Nonet   is_pyobjectt   needs_cleanup(   t   selfR   R
   (    (    s<   /bar/jli/Chip-seq/script/cython/Cython/Compiler/UtilNodes.pyt   __init__   s    	c         C@  s   t  | d |  d |  j ƒS(   Nt   handleR   (   t   TempRefNodeR   (   R   t   pos(    (    s<   /bar/jli/Chip-seq/script/cython/Cython/Compiler/UtilNodes.pyt   ref   s    N(   t   __name__t
   __module__R   t   tempt   Falset   needs_xdecrefR   R   (    (    (    s<   /bar/jli/Chip-seq/script/cython/Cython/Compiler/UtilNodes.pyR      s   R   c           B@  sA   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z e d „ Z RS(   c         C@  s   |  j  |  j j  k s t ‚ |  S(   N(   R   R   t   AssertionError(   R   t   env(    (    s<   /bar/jli/Chip-seq/script/cython/Cython/Compiler/UtilNodes.pyt   analyse_types#   s    c         C@  s   |  j  |  j j  k s t ‚ |  S(   N(   R   R   R   (   R   R   (    (    s<   /bar/jli/Chip-seq/script/cython/Cython/Compiler/UtilNodes.pyt   analyse_target_types'   s    c         C@  s   d  S(   N(    (   R   R   (    (    s<   /bar/jli/Chip-seq/script/cython/Cython/Compiler/UtilNodes.pyt   analyse_target_declaration+   s    c         C@  s%   |  j  j } | d  k r! d } n  | S(   Ns   <error>(   R   R   R   (   R   t   result(    (    s<   /bar/jli/Chip-seq/script/cython/Cython/Compiler/UtilNodes.pyt   calculate_result_code.   s     	c         C@  s   d  S(   N(    (   R   t   code(    (    s<   /bar/jli/Chip-seq/script/cython/Cython/Compiler/UtilNodes.pyt   generate_result_code3   s    c         C@  s”   |  j  j r8 | j | ƒ | j |  j ƒ  |  j ƒ  ƒ n  | j d |  j ƒ  | r\ | j ƒ  n | j |  j ƒ  ƒ f ƒ | j | ƒ | j	 | ƒ d  S(   Ns   %s = %s;(
   R   R	   t   make_owned_referencet   put_xdecrefR   t   ctypet   putlnt	   result_ast   generate_post_assignment_codet
   free_temps(   R   t   rhsR   t   overloaded_assignment(    (    s<   /bar/jli/Chip-seq/script/cython/Cython/Compiler/UtilNodes.pyt   generate_assignment_code6   s    		,(	   R   R   R   R   R   R   R   R   R(   (    (    (    s<   /bar/jli/Chip-seq/script/cython/Cython/Compiler/UtilNodes.pyR      s   					t   TempsBlockNodec           B@  sD   e  Z d  Z d g Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   s_  
    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).
    t   bodyc         C@  s´   x2 |  j  D]' } | j j | j d | j ƒ| _ q
 W|  j j | ƒ xh |  j  D]] } | j r™ | j r€ | j	 | j | j ƒ q™ | j
 | j | j ƒ n  | j j | j ƒ qO Wd  S(   Nt
   manage_ref(   t   tempst	   funcstatet   allocate_tempR   R
   R   R*   t   generate_execution_codeR   t   put_xdecref_cleart   put_decref_cleart   release_temp(   R   R   R   (    (    s<   /bar/jli/Chip-seq/script/cython/Cython/Compiler/UtilNodes.pyR/   U   s    			c         C@  s   |  j  j | ƒ d  S(   N(   R*   t   analyse_declarations(   R   R   (    (    s<   /bar/jli/Chip-seq/script/cython/Cython/Compiler/UtilNodes.pyR3   b   s    c         C@  s   |  j  j | ƒ |  _  |  S(   N(   R*   t   analyse_expressions(   R   R   (    (    s<   /bar/jli/Chip-seq/script/cython/Cython/Compiler/UtilNodes.pyR4   e   s    c         C@  s   |  j  j | | ƒ d  S(   N(   R*   t   generate_function_definitions(   R   R   R   (    (    s<   /bar/jli/Chip-seq/script/cython/Cython/Compiler/UtilNodes.pyR5   i   s    c         C@  s   |  j  j | ƒ d  S(   N(   R*   t   annotate(   R   R   (    (    s<   /bar/jli/Chip-seq/script/cython/Cython/Compiler/UtilNodes.pyR6   l   s    (	   R   R   t   __doc__t   child_attrsR/   R3   R4   R5   R6   (    (    (    s<   /bar/jli/Chip-seq/script/cython/Cython/Compiler/UtilNodes.pyR)   C   s   					t   ResultRefNodec           B@  s¿   e  Z g  Z e Z d d d e e 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 e d „ Z d „  Z d „  Z d „  Z RS(   c         C@  s¯   | |  _  d  |  _ | |  _ | d  k	 rT | j |  _ t | d ƒ rT | j |  _ qT n  | d  k	 rl | |  _ n  | d  k	 r„ | |  _ n  | r– t |  _ n  |  j d  k	 s« t ‚ d  S(   NR   (	   t
   expressionR   R   t   may_hold_nonet   hasattrR   t   Truet   is_tempR   (   R   R:   R   R   R;   R>   (    (    s<   /bar/jli/Chip-seq/script/cython/Cython/Compiler/UtilNodes.pyR   w   s    			c         C@  s   |  S(   N(    (   R   (    (    s<   /bar/jli/Chip-seq/script/cython/Cython/Compiler/UtilNodes.pyt
   clone_node‡   s    c         C@  s!   |  j  r |  j  j | ƒ Sd Sd  S(   N(    (   R:   t   type_dependencies(   R   R   (    (    s<   /bar/jli/Chip-seq/script/cython/Cython/Compiler/UtilNodes.pyR@   ‹   s    	c         C@  s+   | |  _  t | d ƒ r' | j |  _ n  d  S(   NR   (   R:   R<   R   (   R   R:   (    (    s<   /bar/jli/Chip-seq/script/cython/Cython/Compiler/UtilNodes.pyt   update_expression‘   s    	c         C@  s%   |  j  d  k	 r! |  j  j |  _ n  |  S(   N(   R:   R   R   (   R   R   (    (    s<   /bar/jli/Chip-seq/script/cython/Cython/Compiler/UtilNodes.pyR   –   s    c         C@  sg   |  j  d  k	 r |  j  S|  j d  k	 rQ |  j j  d  k	 rA |  j j  S|  j j | ƒ St sc t d ƒ ‚ d  S(   Ns"   cannot infer type of ResultRefNode(   R   R   R:   t
   infer_typeR   R   (   R   R   (    (    s<   /bar/jli/Chip-seq/script/cython/Cython/Compiler/UtilNodes.pyRB   ›   s    
c         C@  s   |  j  j s t S|  j S(   N(   R   R	   R   R;   (   R   (    (    s<   /bar/jli/Chip-seq/script/cython/Cython/Compiler/UtilNodes.pyt   may_be_none¤   s    c         C@  s9   |  j  d  k	 r |  j  j ƒ  S|  j d  k	 r5 |  j j St S(   N(   R:   R   RC   R   R	   R=   (   R   (    (    s<   /bar/jli/Chip-seq/script/cython/Cython/Compiler/UtilNodes.pyt   _DISABLED_may_be_none©   s
    
c         C@  s   t  S(   N(   R=   (   R   (    (    s<   /bar/jli/Chip-seq/script/cython/Cython/Compiler/UtilNodes.pyt	   is_simple²   s    c         C@  sJ   y |  j  SWn5 t k
 rB |  j d  k	 rC |  j j ƒ  |  _  qC n X|  j  S(   N(   t   result_codet   AttributeErrorR:   R   R   (   R   (    (    s<   /bar/jli/Chip-seq/script/cython/Cython/Compiler/UtilNodes.pyR   µ   s    c         C@  s   d  S(   N(    (   R   R   (    (    s<   /bar/jli/Chip-seq/script/cython/Cython/Compiler/UtilNodes.pyt   generate_evaluation_code½   s    c         C@  s   d  S(   N(    (   R   R   (    (    s<   /bar/jli/Chip-seq/script/cython/Cython/Compiler/UtilNodes.pyR   À   s    c         C@  s   d  S(   N(    (   R   R   (    (    s<   /bar/jli/Chip-seq/script/cython/Cython/Compiler/UtilNodes.pyt   generate_disposal_codeÃ   s    c         C@  s    |  j  j rD | j | ƒ |  j sD | j |  j ƒ  |  j ƒ  ƒ qD n  | j d |  j ƒ  | rh | j ƒ  n | j |  j ƒ  ƒ f ƒ | j	 | ƒ | j
 | ƒ d  S(   Ns   %s = %s;(   R   R	   R   t   lhs_of_first_assignmentt
   put_decrefR   R!   R"   R#   R$   R%   (   R   R&   R   R'   (    (    s<   /bar/jli/Chip-seq/script/cython/Cython/Compiler/UtilNodes.pyR(   Æ   s    	"		,c         C@  s   d  S(   N(    (   R   R   (    (    s<   /bar/jli/Chip-seq/script/cython/Cython/Compiler/UtilNodes.pyt   allocate_tempsÒ   s    c         C@  s   d  S(   N(    (   R   R   (    (    s<   /bar/jli/Chip-seq/script/cython/Cython/Compiler/UtilNodes.pyR2   Õ   s    c         C@  s   d  S(   N(    (   R   R   (    (    s<   /bar/jli/Chip-seq/script/cython/Cython/Compiler/UtilNodes.pyR%   Ø   s    N(   R   R   t   subexprsR   RJ   R   R=   R   R?   R@   RA   R   RB   RC   RD   RE   R   RH   R   RI   R(   RL   R2   R%   (    (    (    s<   /bar/jli/Chip-seq/script/cython/Cython/Compiler/UtilNodes.pyR9   p   s&   																t   LetNodeMixinc           B@  s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C@  s   | |  _  | j |  _ d  S(   N(   t	   lazy_tempR:   t   temp_expression(   R   RO   (    (    s<   /bar/jli/Chip-seq/script/cython/Cython/Compiler/UtilNodes.pyt   set_temp_exprÝ   s    	c         C@  s÷   |  j  j | ƒ |  j  j |  _ |  j j rC t |  j j ƒ |  _ n  |  j  j ƒ  |  _ |  j rs |  j  j	 ƒ  |  _
 nq |  j  j | ƒ | j j |  j d t ƒ|  _
 | j d |  j
 |  j  j	 ƒ  f ƒ |  j  j | ƒ |  j  j | ƒ |  j
 |  j _ d  S(   NR+   s   %s = %s;(   RP   RH   R   t	   temp_typet   is_arrayR   t	   base_typet   result_in_tempt   _result_in_tempR   R   R   R-   R.   R=   R"   RI   R%   RO   RF   (   R   R   (    (    s<   /bar/jli/Chip-seq/script/cython/Cython/Compiler/UtilNodes.pyt   setup_temp_exprá   s    		#c         C@  sh   |  j  r, |  j j | ƒ |  j j | ƒ n8 |  j j rQ | j |  j |  j ƒ n  | j j	 |  j ƒ d  S(   N(
   RV   RP   RI   R%   RR   R	   R1   R   R-   R2   (   R   R   (    (    s<   /bar/jli/Chip-seq/script/cython/Cython/Compiler/UtilNodes.pyt   teardown_temp_exprò   s    	(   R   R   RQ   RW   RX   (    (    (    s<   /bar/jli/Chip-seq/script/cython/Cython/Compiler/UtilNodes.pyRN   Ü   s   		t   EvalWithTempExprNodec           B@  sS   e  Z d  d g Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 RS(	   RP   t   subexpressionc         C@  s5   |  j  | ƒ | j |  _ | |  _ |  j j |  _ d  S(   N(   RQ   R   RZ   R   (   R   RO   RZ   (    (    s<   /bar/jli/Chip-seq/script/cython/Cython/Compiler/UtilNodes.pyR     s    	c         C@  s   |  j  j | ƒ S(   N(   RZ   RB   (   R   R   (    (    s<   /bar/jli/Chip-seq/script/cython/Cython/Compiler/UtilNodes.pyRB   	  s    c         C@  s   |  j  j ƒ  S(   N(   RZ   R   (   R   (    (    s<   /bar/jli/Chip-seq/script/cython/Cython/Compiler/UtilNodes.pyR     s    c         C@  sP   |  j  j | ƒ |  _  |  j j |  j  ƒ |  j j | ƒ |  _ |  j j |  _ |  S(   N(   RP   R   RO   RA   RZ   R   (   R   R   (    (    s<   /bar/jli/Chip-seq/script/cython/Cython/Compiler/UtilNodes.pyR     s
    c         C@  s   |  j  j | ƒ d  S(   N(   RZ   R%   (   R   R   (    (    s<   /bar/jli/Chip-seq/script/cython/Cython/Compiler/UtilNodes.pyt   free_subexpr_temps  s    c         C@  s   |  j  j | ƒ d  S(   N(   RZ   RI   (   R   R   (    (    s<   /bar/jli/Chip-seq/script/cython/Cython/Compiler/UtilNodes.pyt   generate_subexpr_disposal_code  s    c         C@  s.   |  j  | ƒ |  j j | ƒ |  j | ƒ d  S(   N(   RW   RZ   RH   RX   (   R   R   (    (    s<   /bar/jli/Chip-seq/script/cython/Cython/Compiler/UtilNodes.pyRH     s    (
   R   R   RM   R   RB   R   R   R[   R\   RH   (    (    (    s<   /bar/jli/Chip-seq/script/cython/Cython/Compiler/UtilNodes.pyRY   ü   s   						t   LetNodec           B@  sA   e  Z d  d g Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   RP   R*   c         C@  s&   |  j  | ƒ | j |  _ | |  _ d  S(   N(   RQ   R   R*   (   R   RO   R*   (    (    s<   /bar/jli/Chip-seq/script/cython/Cython/Compiler/UtilNodes.pyR   1  s    c         C@  s$   |  j  j | ƒ |  j j | ƒ d  S(   N(   RP   R3   R*   (   R   R   (    (    s<   /bar/jli/Chip-seq/script/cython/Cython/Compiler/UtilNodes.pyR3   6  s    c         C@  s.   |  j  j | ƒ |  _  |  j j | ƒ |  _ |  S(   N(   RP   R4   R*   (   R   R   (    (    s<   /bar/jli/Chip-seq/script/cython/Cython/Compiler/UtilNodes.pyR4   :  s    c         C@  s.   |  j  | ƒ |  j j | ƒ |  j | ƒ d  S(   N(   RW   R*   R/   RX   (   R   R   (    (    s<   /bar/jli/Chip-seq/script/cython/Cython/Compiler/UtilNodes.pyR/   ?  s    c         C@  s*   |  j  j | | ƒ |  j j | | ƒ d  S(   N(   RP   R5   R*   (   R   R   R   (    (    s<   /bar/jli/Chip-seq/script/cython/Cython/Compiler/UtilNodes.pyR5   D  s    (   R   R   R8   R   R3   R4   R/   R5   (    (    (    s<   /bar/jli/Chip-seq/script/cython/Cython/Compiler/UtilNodes.pyR]   %  s   
				t   TempResultFromStatNodec           B@  s;   e  Z g  Z d  g Z d „  Z d „  Z d „  Z d „  Z RS(   R*   c         C@  s7   | |  _  | j |  _ | |  _ | j |  _ d |  _ d  S(   Ni   (   t
   result_refR   R*   R   R>   (   R   R_   R*   (    (    s<   /bar/jli/Chip-seq/script/cython/Cython/Compiler/UtilNodes.pyR   R  s
    		c         C@  s   |  j  j | ƒ d  S(   N(   R*   R3   (   R   R   (    (    s<   /bar/jli/Chip-seq/script/cython/Cython/Compiler/UtilNodes.pyR3   Y  s    c         C@  s   |  j  j | ƒ |  _  |  S(   N(   R*   R4   (   R   R   (    (    s<   /bar/jli/Chip-seq/script/cython/Cython/Compiler/UtilNodes.pyR   \  s    c         C@  s&   |  j  ƒ  |  j _ |  j j | ƒ d  S(   N(   R   R_   RF   R*   R/   (   R   R   (    (    s<   /bar/jli/Chip-seq/script/cython/Cython/Compiler/UtilNodes.pyR   `  s    (   R   R   RM   R8   R   R3   R   R   (    (    (    s<   /bar/jli/Chip-seq/script/cython/Cython/Compiler/UtilNodes.pyR^   I  s   				N(    (   t
   __future__R    t    R   R   R   R   t
   PyrexTypesR   t   objectR   R   R)   R9   RN   t   ExprNodeRY   t
   LetRefNodet   StatNodeR]   R^   (    (    (    s<   /bar/jli/Chip-seq/script/cython/Cython/Compiler/UtilNodes.pyt   <module>   s   $-l &$