a ]xa @sddlZddlZejddkr"eZddZddZGdddZGd d d ZGd d d Z Gd ddZ ddZ ddZ Gdddej ZedS)NcCst|SN)gdbZselected_frameZread_var)Zsymnamer#/usr/share/glib-2.0/gdb/glib_gdb.pyread_global_var src Cs|dur dSt|}|dkr dSztd}ttd}WnBtyzztd}ttd}WntytYYdS0Yn0||kr||SdS)NrZquarksZ quark_seq_idZg_quarksZg_quark_seq_id)longr Exceptionstring)ZquarkvalZmax_qrrrg_quark_to_string s"   r c@s eZdZdZddZddZdS)GListNodePrinterzPrints a GList nodecCs ||_dSrr selfr rrr__init__%szGListNodePrinter.__init__cCs,dt|jdt|jdt|jdfS)Nz{data=%s, next=0x%x, prev=0x%x}datanextprevstrr rrrrr to_string(s    zGListNodePrinter.to_stringN__name__ __module__ __qualname____doc__rrrrrrr "sr c@s eZdZdZddZddZdS)GSListNodePrinterzPrints a GSList nodecCs ||_dSrrrrrrr3szGSListNodePrinter.__init__cCs dt|jdt|jdfS)Nz{data=%s, next=0x%x}rrrrrrrr6szGSListNodePrinter.to_stringNrrrrrr0src@s>eZdZdZGdddZddZddZdd Zd d Zd S) GListPrinterzPrints a GListc@s(eZdZddZddZddZeZdS)zGListPrinter._iteratorcCs||_||_d|_dS)Nr)linklisttypecount)rheadr!rrrr>szGListPrinter._iterator.__init__cCs|Srrrrrr__iter__CszGListPrinter._iterator.__iter__cCsB|jdkrt|jd}|jd|_|j}|jd|_d||fS)Nrrrz[%d])r StopIterationr")rrr"rrrrFs    zGListPrinter._iterator.nextN)rrrrr$r__next__rrrr _iterator=s r(cCs||_||_dSr)r r!)rr r!rrrrQszGListPrinter.__init__cCs||j|jSr)r(r r!rrrrchildrenUszGListPrinter.childrencCsdt|jSNz0x%xrr rrrrrXszGListPrinter.to_stringcCsdS)NZarrayrrrrr display_hint[szGListPrinter.display_hintN rrrrr(rr)rr,rrrrr:s rc@s>eZdZdZGdddZddZddZdd Zd d Zd S) GHashPrinterzPrints a GHashTablec@s6eZdZGdddZddZddZddZeZd S) zGHashPrinter._iteratorc@seZdZddZddZdS)z%GHashPrinter._iterator._pointer_arraycCs<||_td|_|jr|jntd}|||_dS)NZgpointerZguint) _big_itemsr lookup_type_gpointer_typecastpointer_items)rZptrZ big_itemsZ item_typerrrrds  z.GHashPrinter._iterator._pointer_array.__init__cCs |j|}|js||j}|Sr)r4r/r2r1)ritemrrr __getitem__ms  z1GHashPrinter._iterator._pointer_array.__getitem__N)rrrrr6rrrr_pointer_arraycs r7cCsd||_|dkrN||d|d|_||d|d|_|d|_|d|_d|_||_d|_dS)NrkeysZ have_big_keysvaluesZhave_big_valueshashessize) htr7r8r9r:r;poskeys_are_stringsvalue)rr<r>rrrrus  zGHashPrinter._iterator.__init__cCs|Srrrrrrr$szGHashPrinter._iterator.__iter__cCs|jdkrt|jdur(|j}d|_|St|jt|jkrt|j|jdkr|j|j}|j|j}|j r| t d }d|j|f|_d|j|f}|jd7_|S|jd7_q(tdS)Nrcharz[%dv]z[%dk]r%)r<r&r?rr=r;r:r8r9r>r2rr0r3)rvkeyr rrrrs$    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)r r>rr )rr Z string_hashrrrrs    zGHashPrinter.__init__cCs||j|jSr)r(r r>rrrrr)szGHashPrinter.childrencCsdt|jSr*r+rrrrrszGHashPrinter.to_stringcCsdS)Nmaprrrrrr,szGHashPrinter.display_hintNr-rrrrr._s =r.cCs|j}|jtjkr|}|jtjkrt|}t|}|dkrPt|dS|dkrbt|dS|dkrt |Sn*t|}|dkrt |S|dkrt|dSdS)NGListGSListZ GHashTablezGSList *) type unqualifiedcoderZ TYPE_CODE_REFtarget TYPE_CODE_PTRrrr.r )r rGtrrrpretty_printer_lookups$        rMcCs|dur t}|jtdSr)rZpretty_printersappendrM)objrrrregistersrPcsXeZdZdZfddZddZddZdd Zd d Zd d Z ddZ ddZ Z S)ForeachCommandzForeach on listcstt|dtjtjdS)NZgforeach)superrQrrZ COMMAND_DATAZCOMPLETE_SYMBOLr __class__rrrs  zForeachCommand.__init__cCs|dsdSdS)NrFT)isalpha)rnamerrr valid_names zForeachCommand.valid_namecCs|d}|dkrtd|d|}||s8td|t|krZ||rZ|d}q8|||ddkrvtd|d}|t|kr||r|d}q~|d |}|d krtd |||}|d}|t|kr||r|d}q||d}|||fS) N rzNo var specifiedzInvalid variable namer%r@inzInvalid syntax, missing in:zInvalid syntax, missing colon)findr rWlenisspace)rargivarcolonr commandrrr parse_argss,         zForeachCommand.parse_argscCs@|td}t|}d||f}t|t|dS)NZvoidzset $%s = (void *)0x%x )r2rr0r3rZexecute)rr_r5rcZto_evalrrrdo_iters   zForeachCommand.do_itercCs@|td}t|dkr<|||d||d}qdS)NrFrrrr2rr0r3rrerr_ containerrcZ list_elementrrrslist_iterators zForeachCommand.slist_iteratorcCs@|td}t|dkr<|||d||d}qdS)NrErrrrfrgrrr list_iterators zForeachCommand.list_iteratorcCs\|j}|jtjkrF|}t|}|dkr8|jS|dkrF|jSt dt|jdS)NrFrEzInvalid container type %s) rGrHrIrrKrJrrirjr )rrhrLrrr pick_iterators   zForeachCommand.pick_iteratorcCs4||\}}}t|}||}||||dSr)rdrZparse_and_evalrk)rr_Zfrom_ttyrarhrcfuncrrrinvoke%s  zForeachCommand.invoke) rrrrrrWrdrerirjrkrm __classcell__rrrSrrQs ! rQ)rsys version_infointrrr r rrr.rMrPZCommandrQrrrrs %XS