
    ue4(                     d   d dl Z d dlZd dlZej                  d    dk\  reZnd dlZej                  Z	 d dl	Z dZ
e j                  j                  Zd Zd Zd Zd Zd	 Z G d
 d      Zd Z G d d      Zd Zd Zd Zd Z G d de      Z G d d      Z G d de      Zd Zy# e$ r dZ
Y _w xY w)    N   TFc                 H    t        j                         j                  |       S N)gdbselected_frameread_var)symnames    !share/glib-2.0/gdb/gobject_gdb.pyread_global_varr      s    ((11    c                     d }t        |       } | | dz  z
  }|dkD  rGt        j                  |      j                  t        j                  d      j                               }|S  ||      }|S )Nc                 N    | dk(  ry t        d      }|y || dz	     j                  S )Nr   static_fundamental_type_nodes   )r   address)typenodevals     r
   lookup_fundamental_typez3g_type_to_typenode.<locals>.lookup_fundamental_type   s4    q==>;8q=!)))r      i  TypeNode)longr   Valuecastlookup_typepointer)gtyper   r   s      r
   g_type_to_typenoder      sk    * KEuqy H899X&++COOJ,G,O,O,QR O +84Or   c                 N    t        |       }|t        j                  |d         S y )Nqname)r   glib_gdbg_quark_to_string)r   r   s     r
   g_type_to_namer"   -   s+    !%(H))(7*;<<r   c                     fd| j                   }|j                  t        j                  k7  ry|j	                         } |      S )Nc                 `   t        |       dk(  ry| j                  t        j                  k(  r.| j	                         } | j                  t        j                  k(  r.| j                  t        j
                  k7  ry| j                         }t        |      dk  ry|d   } |j                        S )NGTypeInstanceTF   r   )	strcoder   TYPE_CODE_TYPEDEFtargetTYPE_CODE_STRUCTfieldslentype)r.   r,   first_fieldis_g_type_instance_helpers      r
   r0   z5is_g_type_instance.<locals>.is_g_type_instance_helper5   s    t9'ii3000;;=D ii3000 99,,,v;?Qi()9)9::r   F)r.   r(   r   TYPE_CODE_PTRr*   )r   r.   r0   s     @r
   is_g_type_instancer2   4   s>    ;" 88DyyC%%%;;=D$T**r   c                     t        |       dk7  rJ	 | j                  t        j                  d      j	                               }|d   }|d   }t        |      }|S y # t        $ r Y y w xY w)Nr   r%   g_classg_type)r   r   r   r   r   r"   RuntimeError)instanceinstklassr   names        r
   g_type_name_from_instancer;   M   sp    H~	==!A!I!I!KLDOE(OE!%(DK   		s   AA 	A&%A&c                       e Zd ZdZd Zd Zy)GTypePrettyPrinterzPrints a GType instance pointerc                     || _         y r   r   )selfr   s     r
   __init__zGTypePrettyPrinter.__init__]   s	    r   c                     t        | j                        }|rdt        | j                        |fz  S dt        | j                        z  S )Nz	0x%x [%s]0x%x)r;   r   r   )r@   r:   s     r
   	to_stringzGTypePrettyPrinter.to_string`   s>    (2DND#9994>**r   N__name__
__module____qualname____doc__rA   rD    r   r
   r=   r=   Z   s    %+r   r=   c                     | j                   }|j                  t        j                  k7  ryt	        |j                               dk(  S )NF
GTypeClass)r.   r(   r   r1   r'   r*   )r   r.   s     r
   is_g_type_class_instancerM   g   s6    88DyyC%%%t{{}--r   c                       e Zd ZdZddZd Zy)GTypeHandlePrettyPrinterzPrints a GType instancec                      || _         || _        y r   )r   hint)r@   r   rQ   s      r
   rA   z!GTypeHandlePrettyPrinter.__init__q   s    	r   c                    t        | j                        }|t        j                  |d         }dt	        | j                        | j
                  |fz  }t        dt        |d               D ]8  }t        |d   |         }|rt        j                  |d         }nd}|d|z   z  }: |dz   S d	t	        | j                        z  S )
Nr   z
0x%x [%s%sr&   n_superssupers???/]rC   )r   r   r    r!   r   rQ   rangeint)r@   r   r:   sinodes         r
   rD   z"GTypeHandlePrettyPrinter.to_stringu   s    %dhh/--hw.?@D$txx.$))T!BBA1c(:"678  )(8*<Q*?@#55d7mDD DS4Z  s7NtDHH~..r   N) rE   rJ   r   r
   rO   rO   n   s    /r   rO   c                     t        |       rt        |       S t        | j                        dk(  rt	        |       S t        |       rt	        | d   d      S y )NGTyper5   zg_type: )r2   r=   r'   r.   rO   rM   r?   s    r
   pretty_printer_lookupr`      sL    #!#&&
388}',,$'HzBBr   c                     | y t        |       } | dk(  ry 	 t        d      }t        d      }t        |      }| |k  r||    d   j                         S 	 y # t        j                  $ r Y y w xY w)Nr   g_signal_nodesg_n_signal_nodesr:   )r   r   stringr   error)idr   max_ss      r
   get_signal_namerh      s    	z	bB	Qw./ 23U:r76?))++ 
  99 s   ;A A*)A*c                 4    t        | j                               S r   )r'   function)frames    r
   
frame_namerl      s    u~~  r   c                 @    | j                         j                  |      S r   )inferior_framer   )rk   vars     r
   	frame_varrp      s    !**3//r   c                   L    e Zd Zd Zd ZddZddZd Zd Zd Z	d	 Z
d
 Zd Zy)SignalFramec                 X    t         j                  | |d          |d   | _        || _        y )N)FrameDecoratorrA   rk   frames)r@   rv   s     r
   rA   zSignalFrame.__init__   s(    fRj1BZ
r   c                      y)Nzsignal-emissionrJ   r@   s    r
   r:   zSignalFrame.name   s     r   Nc                     	 t        ||      }||j                  ry ||j                  |       |S # t        $ r Y y w xY wr   )rp   is_optimized_outappend
ValueErrorr@   rk   r:   arrayvs        r
   r   zSignalFrame.read_var   sK    	%&AyA.. QH 		s   2 2 	>>c                    	 t        ||      }||j                  ry |j                  t        j                  d      j                               }| t        |      r||j                  |       |S y # t        $ r Y y w xY w)NGObject)	rp   rz   r   r   r   r   r;   r{   r|   r}   s        r
   read_objectzSignalFrame.read_object   s{    	%&AyA..sy199;<A}!:1!=$LLO 		s   A2 AA2 2	A>=A>c                 ,    ||j                  |       y y r   )r{   )r@   r~   objs      r
   r{   zSignalFrame.append   s    ?LL r   c                 p    t        |      dk(  rydj                  t        t        t        |                  S )Nr   rU   z or )r-   joinsetmapr'   )r@   r~   s     r
   or_join_arrayzSignalFrame.or_join_array   s*    u:?;;s3sE?344r   c                 h    | j                  |d      }t        j                  |      }||dz   |z   S |S )Ndetail:)r   r    r!   )r@   rk   signalr   s       r
   get_detailed_signal_from_framez*SignalFrame.get_detailed_signal_from_frame   s<    uh/++F3C<&((Mr   c                    g }g }| j                   D ]  }t        |      }|dk(  r^| j                  |d|       | j                  |d      }|r7|d   j	                         }| j                  ||      }| j                  ||       |dk(  r| j                  |d      }|rJ|d   d   j                  t        j                  d	      j                               }| j                  ||       | j                  |d
      }	t        |	      }|r$| j                  ||      }| j                  ||       |dk(  s|dk(  rV| j                  |d|       | j                  |d
      }	t        |	      }|r$| j                  ||      }| j                  ||       |dk(  s| j                  |d|       | j                  |d|        n | j                  |      }| j                  |      }d|d|dS )Nsignal_emit_unlocked_Rr7   r\   r:   g_signal_emitvinstance_and_paramsr   	v_pointerr   	signal_idg_signal_emit_valistg_signal_emitg_signal_emit_by_namedetailed_signalz<emit signal 'z' on instance >)rv   rl   r   r   rd   r   r{   r   r   Typer   rh   r   )
r@   	instancessignalsrk   r:   r\   r   r   r7   rf   s
             r
   rj   zSignalFrame.function   s   	[[ "	Ee$D//  
I>}}UF3!&\002F!@@OFKK0''&*mmE;P&Q#&215kBGG+335 H KK	84]]5+6(,!@@OFKK0--1H  
I>]]5+6(,!@@OFKK0..  
I>e%6@E"	H %%i0##G,6<hGGr   c                      | j                   dd S )Nr   rt   )rv   rx   s    r
   elidedzSignalFrame.elided  s    {{1R  r   c                 N    |j                  d| j                         z   dz          y )N 
)writerj   )r@   streamfulls      r
   describezSignalFrame.describe  s    S4==?*T12r   r   )rF   rG   rH   rA   r:   r   r   r{   r   r   rj   r   r   rJ   r   r
   rr   rr      s6    
!	5+HZ!3r   rr   c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)GFrameDecoratorc                      g | _         || _        y r   )queueiter)r@   r   s     r
   rA   zGFrameDecorator.__init__  s    
	r   c                     | S r   rJ   rx   s    r
   __iter__zGFrameDecorator.__iter__  s    r   c                     t        | j                        dk  rK	 t        | j                        }| j                  j	                  |       t        | j                        dk  rJy y # t
        $ r Y y w xY w)N   )r-   r   nextr   r{   StopIteration)r@   fs     r
   fillzGFrameDecorator.fill  s\    $**o"O

!!!$ $**o" ! s   0A% %	A10A1c                     t        t        t        | j                        d            D ](  }t	        | j                  |         }|dk(  s|dk(  s&|c S  y)Nr   r   _g_closure_invoke_vart   )rX   minr-   r   rl   )r@   r[   r:   s      r
   find_signal_emissionz$GFrameDecorator.find_signal_emission%  sR    s3tzz?A./ 	Adjjm,D//4;Q3Q	 r   c                 J   | j                          t        | j                        dk(  rt        | j	                         }|dkD  r|}	 |dk(  rn<t        | j                  |dz
           }|j                  d      dk\  s|dk(  r|dz
  }nnB|dz   }|t        | j                        k  r:t        | j                  |         dv r|dz   }nn|t        | j                        k  r:| j                  || }t        |      g}|| j                  || | j                  j                  d      S )Nr   r&   _marshalg_closure_invoke)r   r   r   r   signal_emitv_unlockedsignal_emit_valist_unlocked)	r   r-   r   r   r   rl   findrr   pop)r@   emissionstart	prev_nameendsignal_frames
new_framess          r
   r   zGFrameDecorator.next,  s"   		 tzz?a,,.a<EA:&tzz%!)'<=	>>*-2iCU6U!AIE  Q,CDJJ'djjo. 3  'C DJJ' !JJuS1M%m45J$.DJJuS!zz~~a  r   c                 "    | j                         S r   )r   rx   s    r
   __next__zGFrameDecorator.__next__S  s    yy{r   N)	rF   rG   rH   rA   r   r   r   r   r   rJ   r   r
   r   r     s!    %!Nr   r   c                       e Zd ZdZdZdZd Zy)GFrameFilterglibTd   c                     t        |      S r   )r   )r@   iterators     r
   filterzGFrameFilter.filter\  s    x((r   N)rF   rG   rH   r:   enabledpriorityr   rJ   r   r
   r   r   W  s    DGH)r   r   c                     | t         } t        r#t               }|| j                  |j                  <   | j
                  j                  t               y r   )r   HAVE_GDB_FRAMEDECORATORr   frame_filtersr:   pretty_printersr{   r`   )r   r   s     r
   registerr   `  s?    
{)/&++&45r   )r   r    sysversion_inforY   r   	itertoolsimapr   gdb.FrameDecoratorr   ru   ImportErrorr   r   r"   r2   r;   r=   rM   rO   r`   rh   rl   rp   rr   r   objectr   r   rJ   r   r
   <module>r      s    
  
A!D
..C$"''66N2$+2

+ 
+./ /0&!0f3. f3R? ?D)6 )6]
  $#$s   B% %B/.B/