Current File : //usr/share/glib-2.0/gdb/__pycache__/glib_gdb.cpython-39.opt-1.pyc
a

]xa� �@s�ddlZddlZejddkr"eZdd�Zdd�ZGdd�d�ZGd	d
�d
�ZGdd�d�Z	Gd
d�d�Z
dd�Zdd�ZGdd�dej
�Ze�dS)�N�cCst���|�S�N)�gdbZselected_frameZread_var)Zsymname�r�#/usr/share/glib-2.0/gdb/glib_gdb.py�read_global_var	srcCs�|durdSt|�}|dkr dSztd�}ttd��}WnBtyzztd�}ttd��}WntytYYdS0Yn0||kr�||��SdS)NrZquarksZquark_seq_idZg_quarksZg_quark_seq_id)�longr�	Exception�string)Zquark�valZmax_qrrr�g_quark_to_string
s"rc@s eZdZdZdd�Zdd�ZdS)�GListNodePrinterzPrints a GList nodecCs
||_dSr�r��selfrrrr�__init__%szGListNodePrinter.__init__cCs,dt|jd�t|jd�t|jd�fS)Nz{data=%s, next=0x%x, prev=0x%x}�data�next�prev��strrr�rrrr�	to_string(s
�zGListNodePrinter.to_stringN��__name__�
__module__�__qualname__�__doc__rrrrrrr
"sr
c@s eZdZdZdd�Zdd�ZdS)�GSListNodePrinterzPrints a GSList nodecCs
||_dSrrrrrrr3szGSListNodePrinter.__init__cCs dt|jd�t|jd�fS)Nz{data=%s, next=0x%x}rrrrrrrr6szGSListNodePrinter.to_stringNrrrrrr0src@s>eZdZdZGdd�d�Zdd�Zdd�Zdd	�Zd
d�ZdS)
�GListPrinterzPrints a GListc@s(eZdZdd�Zdd�Zdd�ZeZdS)zGListPrinter._iteratorcCs||_||_d|_dS)Nr)�link�listtype�count)r�headr!rrrr>szGListPrinter._iterator.__init__cCs|Srrrrrr�__iter__CszGListPrinter._iterator.__iter__cCsB|jdkrt�|jd}|jd|_|j}|jd|_d||fS)Nrrr�z[%d])r �
StopIterationr")rrr"rrrrFs

zGListPrinter._iterator.nextN)rrrrr$r�__next__rrrr�	_iterator=s	r(cCs||_||_dSr)rr!)rrr!rrrrQszGListPrinter.__init__cCs|�|j|j�Sr)r(rr!rrrr�childrenUszGListPrinter.childrencCsdt|j�S�Nz0x%x�rrrrrrrXszGListPrinter.to_stringcCsdS)NZarrayrrrrr�display_hint[szGListPrinter.display_hintN�	rrrrr(rr)rr,rrrrr:src@s>eZdZdZGdd�d�Zdd�Zdd�Zdd	�Zd
d�ZdS)
�GHashPrinterzPrints a GHashTablec@s6eZdZGdd�d�Zdd�Zdd�Zdd�ZeZd	S)
zGHashPrinter._iteratorc@seZdZdd�Zdd�ZdS)z%GHashPrinter._iterator._pointer_arraycCs<||_t�d�|_|jr|jnt�d�}|�|���|_dS)NZgpointerZguint)�
_big_itemsr�lookup_type�_gpointer_type�cast�pointer�_items)rZptrZ	big_itemsZ	item_typerrrrds
�z.GHashPrinter._iterator._pointer_array.__init__cCs |j|}|js|�|j�}|Sr)r4r/r2r1)r�itemrrr�__getitem__ms
z1GHashPrinter._iterator._pointer_array.__getitem__N)rrrrr6rrrr�_pointer_arraycs	r7cCsd||_|dkrN|�|d|d�|_|�|d|d�|_|d|_|d|_d|_||_d|_dS)Nr�keysZ
have_big_keys�valuesZhave_big_values�hashes�size)	�htr7r8r9r:r;�pos�keys_are_strings�value)rr<r>rrrrus

zGHashPrinter._iterator.__init__cCs|Srrrrrrr$�szGHashPrinter._iterator.__iter__cCs�|jdkrt�|jdur(|j}d|_|St|j�t|j�kr�t|j|j�dkr�|j|j}|j|j}|j	r�|�
t�d��
��}d|j|f|_d|j|f}|jd7_|S|jd7_q(t�dS)Nr��charz[%dv]z[%dk]r%)r<r&r?rr=r;r:r8r9r>r2rr0r3)r�v�keyrrrrr�s$

zGHashPrinter._iterator.nextN)rrrr7rr$rr'rrrrr(bs
r(cCsZ||_d|_ztd�}Wnty.d}Yn0|jdkrV|durV|jd|krVd|_dS)NFZ
g_str_hashrZ	hash_funcT)rr>rr	)rrZstring_hashrrrr�s
���zGHashPrinter.__init__cCs|�|j|j�Sr)r(rr>rrrrr)�szGHashPrinter.childrencCsdt|j�Sr*r+rrrrr�szGHashPrinter.to_stringcCsdS)N�maprrrrrr,�szGHashPrinter.display_hintNr-rrrrr._s=r.cCs�|j��}|jtjkr|��}|jtjkrt|����}t|�}|dkrPt|d�S|dkrbt|d�S|dkr�t	|�Sn*t|�}|dkr�t
|�S|dkr�t|d�SdS)N�GList�GSListZ
GHashTablezGSList *)�type�unqualified�coderZ
TYPE_CODE_REF�target�
TYPE_CODE_PTRrrr.r
)rrG�trrr�pretty_printer_lookup�s$




rMcCs|durt}|j�t�dSr)rZpretty_printers�appendrM)�objrrr�register�srPcsXeZdZdZ�fdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Z�ZS)�ForeachCommandzForeach on listcstt|��dtjtj�dS)NZgforeach)�superrQrrZCOMMAND_DATAZCOMPLETE_SYMBOLr��	__class__rrr�s

�zForeachCommand.__init__cCs|d��sdSdS)NrFT)�isalpha)r�namerrr�
valid_name�szForeachCommand.valid_namecCs|�d�}|dkrtd��|d|�}|�|�s8td��|t|�krZ||��rZ|d}q8|||d�dkrvtd��|d}|t|�kr�||��r�|d}q~|�d	|�}|d
kr�td��|||�}|d}|t|�kr�||��r�|d}q�||d�}|||fS)N� rzNo var specifiedzInvalid variable namer%r@�inzInvalid syntax, missing in�:���zInvalid syntax, missing colon)�findr	rW�len�isspace)r�arg�i�var�colonr�commandrrr�
parse_args�s,




zForeachCommand.parse_argscCs@|�t�d����}t|�}d||f}t�|�t�|�dS)NZvoidzset $%s = (void *)0x%x
)r2rr0r3rZexecute)rr_r5rcZto_evalrrr�do_iters

zForeachCommand.do_itercCs@|�t�d����}t|�dkr<|�||d|�|d}qdS)NrFrrr�r2rr0r3rre�rr_�	containerrcZlist_elementrrr�slist_iteratorszForeachCommand.slist_iteratorcCs@|�t�d����}t|�dkr<|�||d|�|d}qdS)NrErrrrfrgrrr�
list_iteratorszForeachCommand.list_iteratorcCs\|j��}|jtjkrF|����}t|�}|dkr8|jS|dkrF|jSt	dt|j���dS)NrFrEzInvalid container type %s)
rGrHrIrrKrJrrirjr	)rrhrLrrr�
pick_iterators
zForeachCommand.pick_iteratorcCs4|�|�\}}}t�|�}|�|�}||||�dSr)rdrZparse_and_evalrk)rr_Zfrom_ttyrarhrc�funcrrr�invoke%s

zForeachCommand.invoke)
rrrrrrWrdrerirjrkrm�
__classcell__rrrSrrQ�s!rQ)r�sys�version_info�intrrrr
rrr.rMrPZCommandrQrrrr�<module>s
%XS