
    BWc                          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             dS )    N   c                 N    t          j                                        |           S N)gdbselected_frameread_var)symnames    share/glib-2.0/gdb/glib_gdb.pyread_global_varr   	   s    ((111    c                 t   | d S t          |           } | dk    rd S 	 t          d          }t          t          d                    }nO# t          $ rB 	 t          d          }t          t          d                    }n# t          $ r Y Y d S w xY wY nw xY w| |k     r||                                          S d S )Nr   quarksquark_seq_idg_quarksg_quark_seq_id)longr   	Exceptionstring)quarkvalmax_qs      r
   g_quark_to_stringr      s     tKKEz th''_^4455   	!*--C)9::;;EE 	 	 	444	 E u} #5z  """4s5   +A	 	
B+B ?B 
B
BBBBc                       e Zd ZdZd Zd ZdS )GListNodePrinterzPrints a GList nodec                     || _         d S r   r   selfr   s     r
   __init__zGListNodePrinter.__init__%       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_string(   sJ    0 !!&!""&!""4
 
 	
r   N__name__
__module____qualname____doc__r   r(    r   r
   r   r   "   s8          
 
 
 
 
r   r   c                       e Zd ZdZd Zd ZdS )GSListNodePrinterzPrints a GSList nodec                     || _         d S r   r   r   s     r
   r   zGSListNodePrinter.__init__3   r    r   c                 p    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_string6   s0    %TXf-=)>)>TXfEU@V@V(WWWr   Nr)   r.   r   r
   r0   r0   0   s=          X X X X Xr   r0   c                   D    e Zd ZdZ G d d          Zd Zd Zd Zd ZdS )	GListPrinterzPrints a GListc                   $    e Zd Zd Zd Zd ZeZdS )GListPrinter._iteratorc                 0    || _         || _        d| _        d S )Nr   )linklisttypecount)r   headr9   s      r
   r   zGListPrinter._iterator.__init__>   s    DI$DMDJJJr   c                     | S r   r.   r'   s    r
   __iter__zGListPrinter._iterator.__iter__C       Kr   c                     | j         dk    rt          | j         d         }| j         d         | _         | j        }| j        dz   | _        d|z  |fS )Nr   r"   r#      z[%d])r8   StopIterationr:   )r   r"   r:   s      r
   r#   zGListPrinter._iterator.nextF   sS    yA~ $##9V$D	&)DIJEaDJUND))r   N)r*   r+   r,   r   r=   r#   __next__r.   r   r
   	_iteratorr6   =   sB        	 	 	
	 	 		* 	* 	* r   rC   c                 "    || _         || _        d S r   )r   r9   )r   r   r9   s      r
   r   zGListPrinter.__init__Q   s     r   c                 B    |                      | j        | j                  S r   )rC   r   r9   r'   s    r
   childrenzGListPrinter.childrenU   s    ~~dh666r   c                 0    dt          | j                  z  S Nz0x%xr   r   r'   s    r
   r(   zGListPrinter.to_stringX       dh((r   c                     dS )Narrayr.   r'   s    r
   display_hintzGListPrinter.display_hint[   s    wr   N	r*   r+   r,   r-   rC   r   rF   r(   rM   r.   r   r
   r4   r4   :   s~               (! ! !7 7 7) ) )    r   r4   c                   D    e Zd ZdZ G d d          Zd Zd Zd Zd ZdS )	GHashPrinterzPrints a GHashTablec                   >    e Zd Z G d d          Zd Zd Zd ZeZdS )GHashPrinter._iteratorc                       e Zd Zd Zd ZdS )%GHashPrinter._iterator._pointer_arrayc                     || _         t          j        d          | _        | j         r| j        nt          j        d          }|                    |                                          | _        d S )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__d   sb    "+&)oj&A&A#+/?XD''PW@X@X  "hhy'8'8':':;;r   c                 b    | j         |         }| j        s|                    | j                  }|S r   )r]   rX   r[   rZ   )r   items     r
   __getitem__z1GHashPrinter._iterator._pointer_array.__getitem__m   s1    {4( :99T%899Dr   N)r*   r+   r,   r   rc   r.   r   r
   _pointer_arrayrT   c   s2        < < <    r   rd   c                    || _         |dk    rh|                     |d         |d                   | _        |                     |d         |d                   | _        |d         | _        |d         | _        d| _        || _        d | _        d S )Nr   keyshave_big_keysvalueshave_big_valueshashessize)	htrd   rf   rh   rj   rk   poskeys_are_stringsvalue)r   rl   rn   s      r
   r   zGHashPrinter._iterator.__init__u   s    DGQw ' //6
B<OPP	"11"X,CT@UVV lvJ	DH$4D!DJJJr   c                     | S r   r.   r'   s    r
   r=   zGHashPrinter._iterator.__iter__   r>   r   c                    | j         dk    rt          | j        | j        }d | _        |S t          | j                  t          | j                  k     rt          | j        | j                           dk    r| j        | j                 }| j        | j                 }| j	        r9|
                    t          j        d                                                    }d| j        z  |f| _        d| j        z  |f}| xj        dz  c_        |S | xj        dz  c_        t          | j                  t          | j                  k     t          )Nr      charz[%dv]z[%dk]r@   )rl   rA   ro   r   rm   rk   rj   rf   rh   rn   r[   r   rY   r\   )r   vkeyr   s       r
   r#   zGHashPrinter._iterator.next   s/   w!| $##z J!
tx..4	??2 DH-..!3 )DH-C+dh/C, J!hhsv'>'>'F'F'H'HII #*TX"6!<DJ #dh/5CHHMHHJA! tx..4	??2 "  r   N)r*   r+   r,   rd   r   r=   r#   rB   r.   r   r
   rC   rR   b   sj        	 	 	 	 	 	 	 	$		 		 			 	 		  	  	 4 r   rC   c                     || _         d| _        	 t          d          }n# t          $ r d }Y nw xY w| j         dk    r|| j         d         |k    rd| _        d S d S d S d S )NF
g_str_hashr   	hash_funcT)r   rn   r   r   )r   r   string_hashs      r
   r   zGHashPrinter.__init__   s     %	),77KK 	 	 	KKK	 HM	)	) %4	)
 %)D!!!	) 	) 	) 	) 	) 	)s     //c                 B    |                      | j        | j                  S r   )rC   r   rn   r'   s    r
   rF   zGHashPrinter.children   s    ~~dh(=>>>r   c                 0    dt          | j                  z  S rH   rI   r'   s    r
   r(   zGHashPrinter.to_string   rJ   r   c                     dS )Nmapr.   r'   s    r
   rM   zGHashPrinter.display_hint   s    ur   NrN   r.   r   r
   rP   rP   _   s        ; ; ; ; ; ; ; ;z) ) )? ? ?) ) )    r   rP   c                    | j                                         }|j        t          j        k    r|                                }|j        t          j        k    rw|                                                                }t          |          }|dk    rt          | d          S |dk    rt          | d          S |dk    rt          |           S n:t          |          }|dk    rt          |           S |dk    rt          | d          S d S )NGListGSList
GHashTablezGSList *)typeunqualifiedcoder   TYPE_CODE_REFtargetTYPE_CODE_PTRr&   r4   rP   r   )r   r   ts      r
   pretty_printer_lookupr      s    8!!D yC%% {{}}yC%% /{{}}((**II< 	.W---= 	/X... 	%$$$	% II< 	)#C(((
? 	/X...4r   c                 V    | t           } | j                            t                     d S r   )r   pretty_printersappendr   )objs    r
   registerr      s-    
 45555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                     t          t          |                               dt          j        t          j                   d S )Ngforeach)superr   r   r   COMMAND_DATACOMPLETE_SYMBOL)r   	__class__s    r
   r   zForeachCommand.__init__   s<    nd##,,(#*=	
 	
 	
 	
 	
r   c                 >    |d                                          sdS dS )Nr   FT)isalpha)r   names     r
   
valid_namezForeachCommand.valid_name   s"    Aw   	5tr   c                    |                     d          }|dk    rt          d          |d |         }|                     |          st          d          |t          |          k     rL||                                         r2|dz   }|t          |          k     r||                                         2|||dz            dk    rt          d          |dz   }|t          |          k     rL||                                         r2|dz   }|t          |          k     r||                                         2|                     d	|          }|d
k    rt          d          |||         }|dz   }|t          |          k     rL||                                         r2|dz   }|t          |          k     r||                                         2||d          }|||fS )N r   zNo var specifiedzInvalid variable namer@   rr   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   s   HHSMM6 	0.///"1"gs## 	53444#c((l 	s1v~~// 	AA #c((l 	s1v~~// 	 q1q5y>T! 	:8999E#c((l 	s1v~~// 	AA #c((l 	s1v~~// 	 a  B; 	=;<<<!E'l	c#hh 	3u:#5#5#7#7 	AIE c#hh 	3u:#5#5#7#7 	 eff+S'""r   c                     |                     t          j        d                                                    }t	          |          }d||fz  }t          j        |           t          j        |           d S )Nvoidzset $%s = (void *)0x%x
)r[   r   rY   r\   r   execute)r   r   rb   r   to_evals        r
   do_iterzForeachCommand.do_iter  sh    yy0088::;;Dzz,T{:GGr   c                    |                     t          j        d                                                    }t	          |          dk    r:|                     ||d         |           |d         }t	          |          dk    8d S d S )Nr   r   r"   r#   r[   r   rY   r\   r   r   r   r   	containerr   list_elements        r
   slist_iteratorzForeachCommand.slist_iterator  s     ~~coh&?&?&G&G&I&IJJ<  A% 	0LLl62G<<<'/L <  A% 	0 	0 	0 	0 	0r   c                    |                     t          j        d                                                    }t	          |          dk    r:|                     ||d         |           |d         }t	          |          dk    8d S d S )Nr   r   r"   r#   r   r   s        r
   list_iteratorzForeachCommand.list_iterator  s     ~~cog&>&>&F&F&H&HII<  A% 	0LLl62G<<<'/L <  A% 	0 	0 	0 	0 	0r   c                 D   |j                                         }|j        t          j        k    rO|                                                                }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    N&&((6S&& 	*

&&((AAAH} +**G| *))3s9>7J7JKLLLr   c                     |                      |          \  }}}t          j        |          }|                     |          } ||||           d S r   )r   r   parse_and_evalr   )r   r   from_ttyr   r   r   funcs          r
   invokezForeachCommand.invoke%  sW    $(OOC$8$8!i&y11	!!),,S)W%%%%%r   )r*   r+   r,   r-   r   r   r   r   r   r   r   r   __classcell__)r   s   @r
   r   r      s        
 
 
 
 

  
# # #B  0 0 00 0 0	M 	M 	M& & & & & & &r   r   )r   sysversion_infointr   r   r   r   r0   r4   rP   r   r   Commandr   r.   r   r
   <module>r      sj   



 



A! D2 2 2  *
 
 
 
 
 
 
 
X X X X X X X X" " " " " " " "JU U U U U U U Up  66 6 6P& P& P& P& P&S[ P& P& P&f      r   