
    *)h4(                     h   S SK r S SKrS SKr\R                  S    S:  a  \rOS SKr\R                  r S SK	r Sr
\ R                  R                  rS rS rS rS rS	 r " S
 S5      rS r " S S5      rS rS rS rS r " S S\5      r " S S5      r " S S\5      rS rg! \ a    Sr
 N`f = f)    N   TFc                 J    [         R                  " 5       R                  U 5      $ N)gdbselected_frameread_var)symnames    &/usr/share/glib-2.0/gdb/gobject_gdb.pyread_global_varr      s    ((11    c                     S n[        U 5      n X S-  -
  nUS:  aI  [        R                  " U5      R                  [        R                  " S5      R                  5       5      nU$ U" U5      nU$ )Nc                 P    U S:X  a  g [        S5      nUc  g XS-	     R                  $ )Nr   static_fundamental_type_nodes   )r   address)typenodevals     r
   lookup_fundamental_type3g_type_to_typenode.<locals>.lookup_fundamental_type   s2    q==>;q=!)))r      i  TypeNode)longr   Valuecastlookup_typepointer)gtyper   r   s      r
   g_type_to_typenoder      si    * KEqy H899X&++COOJ,G,O,O,QR O +84Or   c                 R    [        U 5      nUb  [        R                  " US   5      $ g )Nqname)r   glib_gdbg_quark_to_string)r   r   s     r
   g_type_to_namer#   -   s+    !%(H))(7*;<<r   c                    ^ U4S jmU R                   nUR                  [        R                  :w  a  gUR	                  5       nT" U5      $ )Nc                 l  > [        U 5      S:X  a  gU R                  [        R                  :X  a0  U R	                  5       n U R                  [        R                  :X  a  M0  U R                  [        R
                  :w  a  gU R                  5       n[        U5      S:  a  gUS   nT" UR                  5      $ )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
   r1   5is_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/   r1   s     @r
   is_g_type_instancer4   4   s>    ;" 88DyyC%%%;;=D$T**r   c                     [        U 5      S:w  aK   U R                  [        R                  " S5      R	                  5       5      nUS   nUS   n[        U5      nU$ g ! [         a     g f = f)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                   $    \ rS rSrSrS rS rSrg)GTypePrettyPrinterZ   zPrints a GType instance pointerc                     Xl         g r   r   )selfr   s     r
   __init__GTypePrettyPrinter.__init__]   s    r   c                     [        U R                  5      nU(       a  S[        U R                  5      U4-  $ S[        U R                  5      -  $ )Nz	0x%x [%s]0x%x)r=   r   r   )rC   r<   s     r
   	to_stringGTypePrettyPrinter.to_string`   s>    (2DND#9994>**r   rB   N__name__
__module____qualname____firstlineno____doc__rD   rH   __static_attributes__ r   r
   r?   r?   Z   s    %+r   r?   c                     U R                   nUR                  [        R                  :w  a  g[	        UR                  5       5      S:H  $ )NF
GTypeClass)r/   r)   r   r3   r(   r+   )r   r/   s     r
   is_g_type_class_instancerT   g   s6    88DyyC%%%t{{}--r   c                   (    \ rS rSrSrSS jrS rSrg)GTypeHandlePrettyPrintern   zPrints a GType instancec                     Xl         X l        g r   )r   hint)rC   r   rY   s      r
   rD   !GTypeHandlePrettyPrinter.__init__q   s    	r   c                    [        U R                  5      nUb  [        R                  " US   5      nS[	        U R                  5      U R
                  U4-  n[        S[        US   5      5       H?  n[        US   U   5      nU(       a  [        R                  " US   5      nOSnUSU-   -  nMA     US-   $ S	[	        U R                  5      -  $ )
Nr    z
0x%x [%s%sr'   n_superssupers???/]rG   )r   r   r!   r"   r   rY   rangeint)rC   r   r<   sinodes         r
   rH   "GTypeHandlePrettyPrinter.to_stringu   s    %dhh/--hw.?@D$txx.$))T!BBA1c(:"678)(8*<Q*?@#55d7mDD DS4Z 9 s7NtDHH~..r   )rY   r   N) rJ   rQ   r   r
   rV   rV   n   s    /r   rV   c                     [        U 5      (       a  [        U 5      $ [        U R                  5      S:X  a  [	        U 5      $ [        U 5      (       a  [	        U S   S5      $ g )NGTyper7   zg_type: )r4   r?   r(   r/   rV   rT   rB   s    r
   pretty_printer_lookuprj      sR    #!#&&
388}',,$$'HzBBr   c                     U c  g [        U 5      n U S:X  a  g  [        S5      n[        S5      n[        U5      nX:  a  X   S   R                  5       $  g ! [        R                   a     g f = f)Nr   g_signal_nodesg_n_signal_nodesr<   )r   r   stringr   error)idr   max_ss      r
   get_signal_namerr      s}    	z	bB	Qw./ 23U:76?))++ 
  99 s   :A A,+A,c                 4    [        U R                  5       5      $ r   )r(   function)frames    r
   
frame_namerv      s    u~~  r   c                 @    U R                  5       R                  U5      $ r   )inferior_framer   )ru   vars     r
   	frame_varrz      s    !**3//r   c                   X    \ rS rSrS rS rSS jrSS jrS rS r	S	 r
S
 rS rS rSrg)SignalFrame   c                 T    [         R                  XS   5        US   U l        Xl        g )N)FrameDecoratorrD   ru   frames)rC   r   s     r
   rD   SignalFrame.__init__   s$    Rj1BZ
r   c                     g)Nzsignal-emissionrQ   rC   s    r
   r<   SignalFrame.name   s     r   Nc                      [        X5      nUb  UR                  (       a  g Ub  UR                  U5        U$ ! [         a     g f = fr   )rz   is_optimized_outappend
ValueErrorrC   ru   r<   arrayvs        r
   r   SignalFrame.read_var   sI    	%&AyA.. QH 		s   8 8 
AAc                     [        X5      nUb  UR                  (       a  g UR                  [        R                  " S5      R                  5       5      nUb&  [        U5      (       a  Ub  UR                  U5        U$ g ! [         a     g f = f)NGObject)	rz   r   r   r   r   r   r=   r   r   r   s        r
   read_objectSignalFrame.read_object   s|    	%&AyA..sy199;<A}!:1!=!=$LLO 		s   A? AA? ?
BBc                 .    Ub  UR                  U5        g g r   )r   )rC   r   objs      r
   r   SignalFrame.append   s    ?LL r   c                 r    [        U5      S:X  a  gSR                  [        [        [        U5      5      5      $ )Nr   r^   z or )r.   joinsetmapr(   )rC   r   s     r
   or_join_arraySignalFrame.or_join_array   s*    u:?;;s3sE?344r   c                 l    U R                  US5      n[        R                  " U5      nUb  US-   U-   $ U$ )Ndetail:)r   r!   r"   )rC   ru   signalr   s       r
   get_detailed_signal_from_frame*SignalFrame.get_detailed_signal_from_frame   s<    uh/++F3C<&((Mr   c                    / n/ nU R                    GH  n[        U5      nUS:X  aa  U R                  USU5        U R                  US5      nU(       a5  US   R	                  5       nU R                  X65      nU R                  X&5        US:X  a  U R                  US5      nU(       aJ  US   S   R                  [        R                  " S	5      R                  5       5      nU R                  X5        U R                  US
5      n	[        U	5      nU(       a"  U R                  X65      nU R                  X&5        US:X  d  US:X  aY  U R                  USU5        U R                  US
5      n	[        U	5      nU(       a"  U R                  X65      nU R                  X&5        US:X  d  GM  U R                  USU5        U R                  USU5          O   U R                  U5      nU R                  U5      nSU< SU< S3$ )Nsignal_emit_unlocked_Rr9   re   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 >)r   rv   r   r   rn   r   r   r   r   Typer   rr   r   )
rC   	instancessignalsru   r<   re   r   r   r9   rp   s
             r
   rt   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	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                      U R                   SS $ )Nr   r   )r   r   s    r
   elidedSignalFrame.elided  s    {{1R  r   c                 N    UR                  SU R                  5       -   S-   5        g )N 
)writert   )rC   streamfulls      r
   describeSignalFrame.describe  s    S4==?*T12r   )ru   r   r   )rK   rL   rM   rN   rD   r<   r   r   r   r   r   rt   r   r   rP   rQ   r   r
   r|   r|      s6    
!	5+HZ!3r   r|   c                   8    \ rS rSrS rS rS rS rS rS r	Sr
g	)
GFrameDecoratori  c                     / U l         Xl        g r   )queueiter)rC   r   s     r
   rD   GFrameDecorator.__init__  s    
	r   c                     U $ r   rQ   r   s    r
   __iter__GFrameDecorator.__iter__  s    r   c                     [        U R                  5      S::  aM   [        U R                  5      nU R                  R	                  U5        [        U R                  5      S::  a  ML  g g ! [
         a     g f = f)N   )r.   r   nextr   r   StopIteration)rC   fs     r
   fillGFrameDecorator.fill  s\    $**o"O

!!!$ $**o" ! s   0A( (
A54A5c                     [        [        [        U R                  5      S5      5       H+  n[	        U R                  U   5      nUS:X  d  US:X  d  M)  Us  $    g)Nr   r   _g_closure_invoke_var   )ra   minr.   r   rv   )rC   rd   r<   s      r
   find_signal_emission$GFrameDecorator.find_signal_emission%  sM    s3tzz?A./Adjjm,D//4;Q3Q 0 r   c                 Z   U R                  5         [        U R                  5      S:X  a  [        eU R	                  5       nUS:  a  Un US:X  a  O?[        U R                  US-
     5      nUR                  S5      S:  d  US:X  a  US-
  nOOMF  US-   nU[        U R                  5      :  a>  [        U R                  U   5      S;   a  US-   nOOU[        U R                  5      :  a  M>  U R                  X$ n[        U5      /nX`R                  X$& U R                  R                  S5      $ )Nr   r'   _marshalg_closure_invoke)r   r   r   r   signal_emitv_unlockedsignal_emit_valist_unlocked)	r   r.   r   r   r   rv   findr|   pop)rC   emissionstart	prev_nameendsignal_frames
new_framess          r
   r   GFrameDecorator.next,  s   		 tzz?a,,.a<EA:&tzz%!)'<=	>>*-2iCU6U!AIE  Q,CDJJ'djjo. 3  'C DJJ' !JJu1M%m45J$.JJu!zz~~a  r   c                 "    U R                  5       $ r   )r   r   s    r
   __next__GFrameDecorator.__next__S  s    yy{r   )r   r   N)rK   rL   rM   rN   rD   r   r   r   r   r   rP   rQ   r   r
   r   r     s!    %!Nr   r   c                   &    \ rS rSrSrSrSrS rSrg)GFrameFilteriW  glibTd   c                     [        U5      $ r   )r   )rC   iterators     r
   filterGFrameFilter.filter\  s    x((r   rQ   N)	rK   rL   rM   rN   r<   enabledpriorityr   rP   rQ   r   r
   r   r   W  s    DGH)r   r   c                     U c  [         n [        (       a"  [        5       nXR                  UR                  '   U R
                  R                  [        5        g r   )r   HAVE_GDB_FRAMEDECORATORr   frame_filtersr<   pretty_printersr   rj   )r   r   s     r
   registerr   `  s@    
{)/&++&45r   )r   r!   sysversion_inforb   r   	itertoolsimapr   gdb.FrameDecoratorr   r   ImportErrorr   r   r#   r4   r=   r?   rT   rV   rj   rr   rv   rz   r|   r   objectr   r   rQ   r   r
   <module>r      s    
  
A!D
..C$"''66N2$+2

+ 
+./ /0&!0f3. f3R? ?D)6 )6]
  $#$s   B& &B10B1