a ]xa|'ã@sddlZddlZddlZejddkr,eZnddlZejZzddl ZdZ ej j Z Wne yhdZ Yn0dd„Z dd„Zd d „Zd d „Zd d„ZGdd„dƒZdd„ZGdd„dƒZdd„Zdd„Zdd„Zdd„ZGdd„de ƒZGdd „d ƒZGd!d"„d"eƒZd#d$„ZdS)%éNéTFcCst ¡ |¡S©N)ÚgdbZselected_frameÚread_var)Zsymname©rú&/usr/share/glib-2.0/gdb/gobject_gdb.pyÚread_global_varsrcCsLdd„}t|ƒ}||d}|dkr@t |¡ t d¡ ¡¡}n||ƒ}|S)NcSs.|dkr dStdƒ}|dur dS||d?jS)NrZstatic_fundamental_type_nodesé)rÚaddress)ÚtypenodeÚvalrrrÚlookup_fundamental_types z3g_type_to_typenode..lookup_fundamental_typeéiüZTypeNode)ÚlongrZValueÚcastÚ lookup_typeÚpointer)Úgtyper r rrrÚg_type_to_typenodes rcCs"t|ƒ}|durt |d¡SdS)NÚqname)rÚglib_gdbÚg_quark_to_string)rr rrrÚg_type_to_name-srcs2‡fdd„‰|j}|jtjkr"dS| ¡}ˆ|ƒS)Ncs`t|ƒdkrdS|jtjkr&| ¡}q|jtjkr6dS| ¡}t|ƒdkrNdS|d}ˆ|jƒS)NÚ GTypeInstanceTFér) ÚstrÚcoderZTYPE_CODE_TYPEDEFÚtargetZTYPE_CODE_STRUCTÚfieldsÚlenÚtype)r rZ first_field©Úis_g_type_instance_helperrrr"5s     z5is_g_type_instance..is_g_type_instance_helperF)r rrÚ TYPE_CODE_PTRr©r r rr!rÚis_g_type_instance4s   r%cCsVt|ƒdkrRz2| t d¡ ¡¡}|d}|d}t|ƒ}|WStyPYn0dS)NrrZg_classÚg_type)rrrrrrÚ RuntimeError)ÚinstanceÚinstÚklassrÚnamerrrÚg_type_name_from_instanceMs  r,c@s eZdZdZdd„Zdd„ZdS)ÚGTypePrettyPrinterzPrints a GType instance pointercCs ||_dSr©r )Úselfr rrrÚ__init__]szGTypePrettyPrinter.__init__cCs.t|jƒ}|r dt|jƒ|fSdt|jƒS)Nz 0x%x [%s]ú0x%x)r,r r)r/r+rrrÚ to_string`s zGTypePrettyPrinter.to_stringN©Ú__name__Ú __module__Ú __qualname__Ú__doc__r0r2rrrrr-Zsr-cCs&|j}|jtjkrdSt| ¡ƒdkS)NFZ GTypeClass)r rrr#rrr$rrrÚis_g_type_class_instancegs r8c@s"eZdZdZddd„Zdd„ZdS) ÚGTypeHandlePrettyPrinterzPrints a GType instanceÚcCs||_||_dSr)r Úhint)r/r r;rrrr0qsz!GTypeHandlePrettyPrinter.__init__cCsœt|jƒ}|durŠt |d¡}dt|jƒ|j|f}tdt|dƒƒD]8}t|d|ƒ}|rpt |d¡}nd}|d|7}qH|dSd t|jƒSdS) Nrz 0x%x [%s%srZn_supersZsupersú???ú/ú]r1)rr rrrr;ÚrangeÚint)r/r r+ÚsÚiÚnoderrrr2us z"GTypeHandlePrettyPrinter.to_stringN)r:r3rrrrr9ns r9cCs@t|ƒrt|ƒSt|jƒdkr&t|ƒSt|ƒr) rPrJrYrrErbrSrrÚTyperrGr^) r/Z instancesZsignalsrIr+rCrarer(rFrrrrHÜsJ        ÿ         zSignalFrame.functioncCs|jdd…S)NrrN)rPrQrrrÚelided szSignalFrame.elidedcCs| d| ¡d¡dS)Nú Ú )ÚwriterH)r/ÚstreamZfullrrrÚdescribe szSignalFrame.describe)N)N) r4r5r6r0r+rrYrSr^rbrHrjrorrrrrM§s -rMc@s<eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd S)ÚGFrameDecoratorcCsg|_||_dSr)ÚqueueÚiter)r/rrrrrr0szGFrameDecorator.__init__cCs|SrrrQrrrÚ__iter__szGFrameDecorator.__iter__cCsDt|jƒdkr@zt|jƒ}|j |¡Wqty<YdS0qdS)Né)rrqÚnextrrrSÚ StopIteration)r/ÚfrrrÚfills   zGFrameDecorator.fillcCs8ttt|jƒdƒƒD]}t|j|ƒdkr|SqdS)NrrcrN)r?ÚminrrqrJ)r/rBrrrÚfind_signal_emission s z$GFrameDecorator.find_signal_emissioncCsÖ| ¡t|jƒdkrt‚| ¡}|dkrÊ|}|dkr8qnt|j|dƒ}| d¡dks`|dkrn|d}q.qnq.|d}|t|jƒkr¤t|j|ƒdvr¤|d}qvq¤qv|j||…}t|ƒg}||j||…<|j d¡S)NrrZ _marshal_Zg_closure_invoke)rdrfrgrhZ_g_closure_invoke_va) rxrrqrvrzrJÚfindrMÚpop)r/ZemissionÚstartZ prev_nameÚendZ signal_framesZ new_framesrrrru&s*   zGFrameDecorator.nextcCs| ¡Sr)rurQrrrÚ__next__LszGFrameDecorator.__next__N) r4r5r6r0rsrxrzrurrrrrrps &rpc@s eZdZdZdZdZdd„ZdS)Ú GFrameFilterZglibTédcCst|ƒSr)rp)r/ÚiteratorrrrÚfilterUszGFrameFilter.filterN)r4r5r6r+ZenabledÚpriorityrƒrrrrr€Psr€cCs2|dur t}tr"tƒ}||j|j<|j t¡dSr)rÚHAVE_GDB_FRAMEDECORATORr€Z frame_filtersr+Zpretty_printersrSrD)rZrƒrrrÚregisterYs  r†)rrÚsysÚ version_infor@rÚ itertoolsÚimapr]Zgdb.FrameDecoratorr…rOÚ ImportErrorrrrr%r,r-r8r9rDrGrJrLrMrpÚobjectr€r†rrrrÚs8      i@