
    BWc|'                     f   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n# e$ r dZ
Y nw xY w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dS )    N   TFc                 N    t          j                                        |           S N)gdbselected_frameread_var)symnames    !share/glib-2.0/gdb/gobject_gdb.pyread_global_varr      s    ((111    c                     d }t          |           } | | dz  z
  }|dk    rLt          j        |                              t          j        d                                                    }n ||          }|S )Nc                 X    | dk    rd S t          d          }|d S || dz	           j        S )Nr   static_fundamental_type_nodes   )r   address)typenodevals     r
   lookup_fundamental_typez3g_type_to_typenode.<locals>.lookup_fundamental_type   s@    q= 	4=>> 	48q=!))r      i  TypeNode)longr   Valuecastlookup_typepointer)gtyper   r   s      r
   g_type_to_typenoder      s    * * * KKEuqy H8 59X&&++COJ,G,G,O,O,Q,QRR**844Or   c                 \    t          |           }|t          j        |d                   S d S )Nqname)r   glib_gdbg_quark_to_string)r   r   s     r
   g_type_to_namer"   -   s2    !%((H =)(7*;<<<4r   c                     fd| j         }|j        t          j        k    rdS |                                } |          S )Nc                 Z   t          |           dk    rdS | j        t          j        k    r)|                                 } | j        t          j        k    )| j        t          j        k    rdS |                                 }t          |          dk     rdS |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    t99' 	4i300 	!;;==D i300 	! 9,, 	5v;;? 	5Qi(()9:::r   F)r.   r(   r   TYPE_CODE_PTRr*   )r   r.   r0   s     @r
   is_g_type_instancer2   4   sZ    ; ; ; ; ;" 8DyC%% u;;==D$$T***r   c                    t          |           dk    rk	 |                     t          j        d                                                    }|d         }|d         }t          |          }|S # t          $ r Y nw xY wd S )Nr   r%   g_classg_type)r   r   r   r   r   r"   RuntimeError)instanceinstklassr   names        r
   g_type_name_from_instancer;   M   s    H~~ 	==!A!A!I!I!K!KLLDOE(OE!%((DK 	 	 	D	4s   AA/ /
A<;A<c                       e Zd ZdZd Zd ZdS )GTypePrettyPrinterzPrints a GType instance pointerc                     || _         d S 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`   sD    (22 	:DNND#9994>>**r   N__name__
__module____qualname____doc__rA   rD    r   r
   r=   r=   Z   s8        %%  + + + + +r   r=   c                     | j         }|j        t          j        k    rdS t	          |                                          dk    S )NF
GTypeClass)r.   r(   r   r1   r'   r*   )r   r.   s     r
   is_g_type_class_instancerM   g   s;    8DyC%% ut{{}}--r   c                        e Zd ZdZddZd ZdS )GTypeHandlePrettyPrinterzPrints a GType instance c                 "    || _         || _        d S r   )r   hint)r@   r   rR   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 ]D}t          |d         |                   }|rt          j        |d                   }nd}|d|z   z  }E|dz   S d	t	          | j                  z  S )
Nr   z
0x%x [%s%sr&   n_superssupers???/]rC   )r   r   r    r!   r   rR   rangeint)r@   r   r:   sinodes         r
   rD   z"GTypeHandlePrettyPrinter.to_stringu   s    %dh// 	/-hw.?@@D$tx..$)T!BBA1c(:"67788    )(8*<Q*?@@ !#5d7mDDDD DS4Zs7NtDH~~..r   N)rP   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 d S )NGTyper5   zg_type: )r2   r=   r'   r.   rO   rM   r?   s    r
   pretty_printer_lookupr`      sm    # '!#&&&
38}} -',,,$$ C'HzBBB4r   c                     | d S t          |           } | dk    rd S t          d          }t          d          }t          |          }| |k     r ||          d                                         S d S )Nr   g_signal_nodesg_n_signal_nodesr:   )r   r   string)idr   max_ss      r
   get_signal_namerg      s}    	 t	bB	Qw t
*
+
+C.//EKKE	Ez (2wv%%'''4r   c                 D    t          |                                           S r   )r'   function)frames    r
   
frame_namerk      s    u~~   r   c                 P    |                                                      |          S r   )inferior_framer   )rj   vars     r
   	frame_varro      s"    !!**3///r   c                   N    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dS )SignalFramec                 p    t                               | |d                    |d         | _        || _        d S )N)FrameDecoratorrA   rj   frames)r@   ru   s     r
   rA   zSignalFrame.__init__   s2    fRj111BZ
r   c                     dS )Nzsignal-emissionrJ   r@   s    r
   r:   zSignalFrame.name   s      r   Nc                     	 t          ||          }||j        rd S ||                    |           |S # t          $ r Y d S w xY wr   )ro   is_optimized_outappend
ValueErrorr@   rj   r:   arrayvs        r
   r   zSignalFrame.read_var   sk    	%&&A A. t  QH 	 	 	44	s   6 6 
AAc                 &   	 t          ||          }||j        rd S |                    t          j        d                                                    }|(t          |          r||                    |           |S d S # t          $ r Y d S w xY w)NGObject)	ro   ry   r   r   r   r   r;   rz   r{   r|   s        r
   read_objectzSignalFrame.read_object   s    	%&&A A. tsy1199;;<<A !:1!=!=  $LLOOO4 	 	 	44	s   B A"B 
BBc                 8    ||                     |           d S d S r   )rz   )r@   r}   objs      r
   rz   zSignalFrame.append   s,     	LL	 	r   c                     t          |          dk    rdS d                    t          t          t          |                              S )Nr   rV   z or )r-   joinsetmapr'   )r@   r}   s     r
   or_join_arrayzSignalFrame.or_join_array   s;    u::? 	55;;s3sE??33444r   c                 n    |                      |d          }t          j        |          }||dz   |z   S |S )Ndetail:)r   r    r!   )r@   rj   signalr   s       r
   get_detailed_signal_from_framez*SignalFrame.get_detailed_signal_from_frame   sA    uh//+F33 	C<&((Mr   c                    g }g }| j         D ]}t          |          }|dk    ru|                     |d|           |                     |d          }|rF|d                                         }|                     ||          }|                     ||           |dk    r|                     |d          }|r[|d         d                             t          j	        d	          
                                          }|                     ||           |                     |d
          }	t          |	          }|r,|                     ||          }|                     ||           |dk    s|dk    rj|                     |d|           |                     |d
          }	t          |	          }|r,|                     ||          }|                     ||           |dk    r0|                     |d|           |                     |d|            n|                     |          }|                     |          }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 >)ru   rk   r   r   rd   r   rz   r   r   Typer   rg   r   )
r@   	instancessignalsrj   r:   r]   r   r   r7   re   s
             r
   ri   zSignalFrame.function   sz   	[ "	 "	Ee$$D// 1  
I>>>}}UF33 1!&\0022F!@@OOFKK000'' 1&*mmE;P&Q&Q#& 5215kBGG++3355   H KK	8444]]5+66(,, 1!@@OOFKK000-- 11H 1  
I>>>]]5+66(,, 1!@@OOFKK000..   
I>>>e%6@@@
 %%i00##G,,4:FFHHHEEr   c                      | j         dd         S )Nr   rs   )ru   rw   s    r
   elidedzSignalFrame.elided	  s    {1R4  r   c                 `    |                     d|                                 z   dz              d S )N 
)writeri   )r@   streamfulls      r
   describezSignalFrame.describe  s,    S4==??*T122222r   r   )rF   rG   rH   rA   r:   r   r   rz   r   r   ri   r   r   rJ   r   r
   rq   rq      s          
! ! !	 	 	 	     5 5 5  +F +F +FZ! ! !3 3 3 3 3r   rq   c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )GFrameDecoratorc                 "    g | _         || _        d S r   )queueiter)r@   r   s     r
   rA   zGFrameDecorator.__init__  s    
			r   c                     | S r   rJ   rw   s    r
   __iter__zGFrameDecorator.__iter__  s    r   c                     t          | j                  dk    r[	 t          | j                  }| j                            |           n# t
          $ r Y d S w xY wt          | j                  dk    Yd S d S )N   )r-   r   nextr   rz   StopIteration)r@   fs     r
   fillzGFrameDecorator.fill  s    $*oo" 	OO
!!!$$$$    	 $*oo" 	 	 	 	 	s   .A	 	
AAc                     t          t          t          | j                  d                    D ]$}t	          | j        |                   dk    r|c S %dS )Nr   r   rs   )rY   minr-   r   rk   )r@   r\   s     r
   find_signal_emissionz$GFrameDecorator.find_signal_emission   sZ    s3tz??A..// 	 	A$*Q-((,DD rr   c                 r   |                                   t          | j                  dk    rt          |                                 }|dk    r|}	 |dk    rnDt          | j        |dz
                     }|                    d          dk    s|dk    r|dz
  }nnK|dz   }|t          | j                  k     r;t          | j        |                   dv r|dz   }nn|t          | j                  k     ;| j        ||         }t          |          g}|| j        ||<   | j                            d          S )Nr   Tr&   	_marshal_g_closure_invoke)r   r   r   r   _g_closure_invoke_va)	r   r-   r   r   r   rk   findrq   pop)r@   emissionstart	prev_nameendsignal_frames
new_framess          r
   r   zGFrameDecorator.next&  s`   		 tz??a 	 ,,..a< 	/EA: &tz%!)'<==	>>+..!3 yDV7V !AIEE Q,CDJ' 
djo.. 3  	 'CC DJ' 
 !JuSy1M%m445J$.DJuSy!z~~a   r   c                 *    |                                  S r   )r   rw   s    r
   __next__zGFrameDecorator.__next__L  s    yy{{r   N)	rF   rG   rH   rA   r   r   r   r   r   rJ   r   r
   r   r     so                $! $! $!L    r   r   c                        e Zd ZdZdZdZd ZdS )GFrameFilterglibTd   c                      t          |          S r   )r   )r@   iterators     r
   filterzGFrameFilter.filterU  s    x(((r   N)rF   rG   rH   r:   enabledpriorityr   rJ   r   r
   r   r   P  s2        DGH) ) ) ) )r   r   c                     | t           } t          rt                      }|| j        |j        <   | j                            t                     d S r   )r   HAVE_GDB_FRAMEDECORATORr   frame_filtersr:   pretty_printersrz   r`   )r   r   s     r
   registerr   Y  sM    
  0)/&+&455555r   )r   r    sysversion_inforZ   r   	itertoolsimapr   gdb.FrameDecoratorr   rt   ImportErrorr   r   r"   r2   r;   r=   rM   rO   r`   rg   rk   ro   rq   r   objectr   r   rJ   r   r
   <module>r      s   



  



A! DD
.C$"'6NN $ $ $#$
2 2 2  $  + + +2
 
 

+ 
+ 
+ 
+ 
+ 
+ 
+ 
+. . ./ / / / / / / /0    ! ! !0 0 0f3 f3 f3 f3 f3. f3 f3 f3R= = = = = = = =@) ) ) ) )6 ) ) )6 6 6 6 6s   A   A
	A
