
    ue!                         d dl Z d dlZej                  d    dk\  reZd Zd Z G d d      Z G d d      Z G d	 d
      Z	 G d d      Z
d Zd Z G d de j                        Z e        y)    N   c                 H    t        j                         j                  |       S N)gdbselected_frameread_var)symnames    share/glib-2.0/gdb/glib_gdb.pyread_global_varr   	   s    ((11    c                    | y t        |       } | dk(  ry d }	 t        d      }	 t        t        d            }|| |k  r	 ||    j                         S y # t        j                  $ r Y 1w xY w# t        $ rO 	 t        d      }	 t        t        d            }n# t        j                  $ r Y nw xY wn# t        $ r Y Y y w xY wY w xY w# t        j                  $ r t        d|         Y y w xY w)Nr   quarksquark_seq_idg_quarksg_quark_seq_idzInvalid quark )longr   r   error	ExceptionstringMemoryErrorprint)quarkmax_qvals      r
   g_quark_to_stringr      s   }KEzEh'	89E }	,u:$$&& ! yy 		 	!*-C_-=>?99  		  	,N5'*+	,s   A- A  C A*'A- )A**A- -	C7B2BB2B.+B2-B..B21C2	B?;C>B??CC!C,+C,c                       e Zd ZdZd Zd Zy)GListNodePrinterzPrints a GList nodec                     || _         y r   r   selfr   s     r
   __init__zGListNodePrinter.__init__0   	    r   c                     dt        | j                  d         t        | j                  d         t        | j                  d         fz  S )Nz{data=%s, next=0x%x, prev=0x%x}datanextprevstrr   r   r!   s    r
   	to_stringzGListNodePrinter.to_string3   sG    0 !&!"&!"4
 
 	
r   N__name__
__module____qualname____doc__r"   r+    r   r
   r   r   -   s    
r   r   c                       e Zd ZdZd Zd Zy)GSListNodePrinterzPrints a GSList nodec                     || _         y r   r   r    s     r
   r"   zGSListNodePrinter.__init__>   r#   r   c                 h    dt        | j                  d         t        | j                  d         fz  S )Nz{data=%s, next=0x%x}r%   r&   r(   r*   s    r
   r+   zGSListNodePrinter.to_stringA   s.    %TXXf-=)>TXXfEU@V(WWWr   Nr,   r1   r   r
   r3   r3   ;   s    Xr   r3   c                   <    e Zd ZdZ G d d      Zd Zd Zd Zd Zy)	GListPrinterzPrints a GListc                   "    e Zd Zd Zd Zd ZeZy)GListPrinter._iteratorc                 .    || _         || _        d| _        y )Nr   )linklisttypecount)r!   headr<   s      r
   r"   zGListPrinter._iterator.__init__I   s    DI$DMDJr   c                     | S r   r1   r*   s    r
   __iter__zGListPrinter._iterator.__iter__N       Kr   c                     | j                   dk(  rt        | j                   d   }| j                   d   | _         | j                  }| j                  dz   | _        d|z  |fS )Nr   r%   r&      z[%d])r;   StopIterationr=   )r!   r%   r=   s      r
   r&   zGListPrinter._iterator.nextQ   sX    yyA~##99V$D		&)DIJJEaDJUND))r   N)r-   r.   r/   r"   r@   r&   __next__r1   r   r
   	_iteratorr9   H   s    	
		* r   rF   c                      || _         || _        y r   )r   r<   )r!   r   r<   s      r
   r"   zGListPrinter.__init__\   s     r   c                 N    | j                  | j                  | j                        S r   )rF   r   r<   r*   s    r
   childrenzGListPrinter.children`   s    ~~dhh66r   c                 2    dt        | j                        z  S Nz0x%xr   r   r*   s    r
   r+   zGListPrinter.to_stringc       dhh((r   c                      y)Narrayr1   r*   s    r
   display_hintzGListPrinter.display_hintf   s    r   N	r-   r.   r/   r0   rF   r"   rI   r+   rP   r1   r   r
   r7   r7   E   s#     (!7)r   r7   c                   <    e Zd ZdZ G d d      Zd Zd Zd Zd Zy)	GHashPrinterzPrints a GHashTablec                   6    e Zd Z G d d      Zd Zd Zd ZeZy)GHashPrinter._iteratorc                       e Zd Zd Zd Zy)%GHashPrinter._iterator._pointer_arrayc                     || _         t        j                  d      | _        | j                   r| j                  nt        j                  d      }|j	                  |j                               | _        y )Ngpointerguint)
_big_itemsr   lookup_type_gpointer_typecastpointer_items)r!   ptr	big_items	item_types       r
   r"   z.GHashPrinter._iterator._pointer_array.__init__o   sU    "+&)ooj&A#+/??D''PW@X  "hhy'8'8':;r   c                 r    | j                   |   }| j                  s|j                  | j                        }|S r   )r`   r[   r^   r]   )r!   items     r
   __getitem__z1GHashPrinter._iterator._pointer_array.__getitem__x   s0    {{4(99T%8%89Dr   N)r-   r.   r/   r"   rf   r1   r   r
   _pointer_arrayrW   n   s    <r   rg   c                     || _         |dk7  rN| j                  |d   |d         | _        | j                  |d   |d         | _        |d   | _        |d   | _        d| _        || _        d | _        y )Nr   keyshave_big_keysvalueshave_big_valueshashessize)	htrg   ri   rk   rm   rn   poskeys_are_stringsvalue)r!   ro   rq   s      r
   r"   zGHashPrinter._iterator.__init__   sw    DGQw //6
B<OP	"11"X,CT@UV lvJ	DH$4D!DJr   c                     | S r   r1   r*   s    r
   r@   zGHashPrinter._iterator.__iter__   rA   r   c                    | j                   dk(  rt        | j                  | j                  }d | _        |S t        | j                        t        | j
                        k  rt        | j                  | j                           dk\  r| j                  | j                     }| j                  | j                     }| j                  r2|j                  t        j                  d      j                               }d| j                  z  |f| _        d| j                  z  |f}| xj                  dz  c_        |S | xj                  dz  c_        t        | j                        t        | j
                        k  rt        )Nr      charz[%dv]z[%dk]rC   )ro   rD   rr   r   rp   rn   rm   ri   rk   rq   r^   r   r\   r_   )r!   vkeyr   s       r
   r&   zGHashPrinter._iterator.next   s   ww!|##zz%JJ!
txx.4		?2DHH-.!3))DHH-C++dhh/C,,!hhsv'>'F'F'HI #*TXX"6!<DJ #dhh/5CHHMHJA! txx.4		?2"  r   N)r-   r.   r/   rg   r"   r@   r&   rE   r1   r   r
   rF   rU   m   s"    	 	$				 4 r   rF   c                     || _         d| _        	 t        d      }| j                   dk7  r|| j                   d   |k(  rd| _        y y y y # t        $ r d }Y ;w xY w)NF
g_str_hashr   	hash_funcT)r   rq   r   r   )r!   r   string_hashs      r
   r"   zGHashPrinter.__init__   sq     %	),7K HHM'%4$(D! 5 (   	K	s   A	 	AAc                 N    | j                  | j                  | j                        S r   )rF   r   rq   r*   s    r
   rI   zGHashPrinter.children   s    ~~dhh(=(=>>r   c                 2    dt        | j                        z  S rK   rL   r*   s    r
   r+   zGHashPrinter.to_string   rM   r   c                      y)Nmapr1   r*   s    r
   rP   zGHashPrinter.display_hint   s    r   NrQ   r1   r   r
   rS   rS   j   s$    ; ;z)?)r   rS   c                    | j                   j                         }|j                  t        j                  k(  r|j                         }|j                  t        j                  k(  r\|j                         j                         }t        |      }|dk(  rt        | d      S |dk(  rt        | d      S |dk(  rt        |       S y t        |      }|dk(  rt        |       S |dk(  rt        | d      S y )NGListGSList
GHashTablezGSList *)typeunqualifiedcoder   TYPE_CODE_REFtargetTYPE_CODE_PTRr)   r7   rS   r   )r   r   ts      r
   pretty_printer_lookupr      s     88!D yyC%%%{{}yyC%%%{{}((*I<W--=X..$$  I<#C((
?X..r   c                 R    | t         } | j                  j                  t               y r   )r   pretty_printersappendr   )objs    r
   registerr      s!    
{45r   c                   L     e Zd ZdZ fdZd Zd Zd Zd Zd Z	d Z
d	 Z xZS )
ForeachCommandzForeach on listc                 h    t         t        |   dt        j                  t        j
                         y )Ngforeach)superr   r"   r   COMMAND_DATACOMPLETE_SYMBOL)r!   	__class__s    r
   r"   zForeachCommand.__init__   s%    nd,((#*=*=	
r   c                 ,    |d   j                         syy)Nr   FT)isalpha)r!   names     r
   
valid_namezForeachCommand.valid_name   s    Aw r   c                    |j                  d      }|dk  rt        d      |d | }| j                  |      st        d      |t        |      k  r:||   j	                         r'|dz   }|t        |      k  r||   j	                         r'|||dz    dk7  rt        d      |dz   }|t        |      k  r:||   j	                         r'|dz   }|t        |      k  r||   j	                         r'|j                  d	|      }|d
k(  rt        d      ||| }|dz   }|t        |      k  r:||   j	                         r'|dz   }|t        |      k  r||   j	                         r'||d  }|||fS )N r   zNo var specifiedzInvalid variable namerC   ru   inzInvalid syntax, missing in:zInvalid syntax, missing colon)findr   r   lenisspace)r!   argivarcolonr   commands          r
   
parse_argszForeachCommand.parse_args   sx   HHSM6.//"1gs#344#c(ls1v~~/AA #c(ls1v~~/ q1q5>T!899E#c(ls1v~~/AA #c(ls1v~~/ a B;;<<!El	c#h3u:#5#5#7AIE c#h3u:#5#5#7 ef+S'""r   c                     |j                  t        j                  d      j                               }t	        |      }d||fz  }t        j
                  |       t        j
                  |       y )Nvoidzset $%s = (void *)0x%x
)r^   r   r\   r_   r   execute)r!   r   re   r   to_evals        r
   do_iterzForeachCommand.do_iter  sQ    yy088:;Dz,T{:GGr   c                     |j                  t        j                  d      j                               }t	        |      dk7  r+| j                  ||d   |       |d   }t	        |      dk7  r*y y )Nr   r   r%   r&   r^   r   r\   r_   r   r   r!   r   	containerr   list_elements        r
   slist_iteratorzForeachCommand.slist_iterator  s]     ~~cooh&?&G&G&IJ< A%LLl62G<'/L < A%r   c                     |j                  t        j                  d      j                               }t	        |      dk7  r+| j                  ||d   |       |d   }t	        |      dk7  r*y y )Nr   r   r%   r&   r   r   s        r
   list_iteratorzForeachCommand.list_iterator  s]     ~~coog&>&F&F&HI< A%LLl62G<'/L < A%r   c                 H   |j                   j                         }|j                  t        j                  k(  rK|j                         j                         }t        |      }|dk(  r| j                  S |dk(  r| j                  S t        dt        |j                         z        )Nr   r   zInvalid container type %s)
r   r   r   r   r   r   r)   r   r   r   )r!   r   r   s      r
   pick_iteratorzForeachCommand.pick_iterator%  s    NN&&(66S&&&
&&(AAAH}***G|)))3s9>>7JKLLr   c                     | j                  |      \  }}}t        j                  |      }| j                  |      } ||||       y r   )r   r   parse_and_evalr   )r!   r   from_ttyr   r   r   funcs          r
   invokezForeachCommand.invoke0  sC    $(OOC$8!i&&y1	!!),S)W%r   )r-   r.   r/   r0   r"   r   r   r   r   r   r   r   __classcell__)r   s   @r
   r   r      s0    


#B00	M&r   r   )r   sysversion_infointr   r   r   r   r3   r7   rS   r   r   Commandr   r1   r   r
   <module>r      s    
 
A!D2@
 
X X" "JU Up66P&S[[ P&f  r   