PK!2python/libstdcxx/__init__.pynu[ PK!Oʈpython/libstdcxx/__init__.pycnu[ WPc@sdS(N((((s1/usr/share/gcc-4.8.2/python/libstdcxx/__init__.pytsPK!Oʈpython/libstdcxx/__init__.pyonu[ WPc@sdS(N((((s1/usr/share/gcc-4.8.2/python/libstdcxx/__init__.pytsPK!~ python/libstdcxx/v6/printers.pycnu[ ]c@s7ddlZddlZddlZddlZejddkr^eZeZe Z e Z n)ddAdYZddlmZm Z e ayddlZWnek reanXeay+ddlZeejdre anWnek rnXdZd dBd YZd dCd YZd dDdYZddEdYZddFdYZddGdYZddHdYZddIdYZddJdYZddKdYZ defdYZ!ddLd YZ"d!dMd"YZ#d#dNd$YZ$d%dOd&YZ%d'dPd(YZ&d)dQd*YZ'd+dRd,YZ(d-dSd.YZ)d/efd0YZ*d1dTd2YZ+d3dUd4YZ,d5dVd6YZ-d7efd8YZ.d9efd:YZ/da1d;efd<YZ2d=Z3d>Z4d?Z5d@Z6e6dS(WiNiitIteratorcBseZdZdZRS(s:Compatibility mixin for iterators Instead of writing next() methods for iterators, write __next__() methods and use this mixin to make them work in Python 2 as well as Python 3. Idea stolen from the "six" documentation: cCs |jS(N(t__next__(tself((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pytnext<s(t__name__t __module__t__doc__R(((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR1s (timaptizipt TypePrintercCs|j}xtrt|d|}ytj|SWntk rMnX|jd}|jstdt||fn|j }qWdS(Ns::isCannot find type %s::%s( tstrip_typedefstTruetstrtgdbt lookup_typet RuntimeErrortfieldst is_base_classt ValueErrorttype(torigtnamettyptsearchtfield((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyt find_typeUs    tSharedPointerPrintercBs eZdZdZdZRS(sPrint a shared_ptr or weak_ptrcCs||_||_dS(N(ttypenametval(RRR((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyt__init__hs cCsd}|jdd}|dkrg|d}|d}|dkrPd|}qgd||d f}nd |j||jd fS( Ntemptyt _M_refcountt_M_piit _M_use_countt _M_weak_countsexpired, weak %dscount %d, weak %dis %s (%s) %st_M_ptr(RR(Rtstatet refcountstusecountt weakcount((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyt to_stringls     (RRRRR((((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRes tUniquePointerPrintercBs eZdZdZdZRS(sPrint a unique_ptrcCs ||_dS(N(R(RRR((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR{scCs4|jdd}dt|jjt|fS(Nt_M_tt _M_head_impls!std::unique_ptr<%s> containing %s(RR Rttarget(Rtv((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR(~s(RRRRR((((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR)xs tStdListPrintercBs?eZdZdefdYZdZdZdZRS(sPrint a std::listt _iteratorcBs#eZdZdZdZRS(cCs/||_|d|_|j|_d|_dS(Nt_M_nexti(tnodetypetbasetaddresstheadtcount(RR1R4((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRs   cCs|S(N((R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyt__iter__scCsn|j|jkrtn|jj|jj}|d|_|j}|jd|_d||dfS(NR0is[%d]t_M_data(R2R4t StopIterationtcastR1t dereferenceR5(RteltR5((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRs   (RRRR6R(((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR/s  cCs||_||_dS(N(RR(RRR((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRs cCsBt|jjd}|jj}|j||jddS(Nt_Nodet_M_implt_M_node(RRRR tpointerR/(RR1((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pytchildrenscCs?|jddj|jdddkr4d|jSd|jS(NR=R>R0sempty %ss%s(RR3R(R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR(s) (RRRRR/RR@R((((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR.s   tStdListIteratorPrintercBs eZdZdZdZRS(sPrint std::list::iteratorcCs||_||_dS(N(RR(RRR((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRs cCsEt|jjd}|jj}|jdj|jdS(NR<R>R7(RRRR R?R9R:(RR1((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR(s(RRRRR((((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRAs tStdSlistPrintercBs?eZdZdefdYZdZdZdZRS(sPrint a __gnu_cxx::slistR/cBs#eZdZdZdZRS(cCs'||_|dd|_d|_dS(Nt_M_headR0i(R1R2R5(RR1R4((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRs cCs|S(N((R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR6scCsk|jdkrtn|jj|jj}|d|_|j}|jd|_d||dfS(NiR0is[%d]R7(R2R8R9R1R:R5(RR;R5((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRs   (RRRR6R(((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR/s  cCs ||_dS(N(R(RRR((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRscCs:t|jjd}|jj}|j||jS(NR<(RRRR R?R/(RR1((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR@scCs|jdddkrdSdS(NRCR0isempty __gnu_cxx::slists__gnu_cxx::slist(R(R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR(s(RRRRR/RR@R((((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRBs   tStdSlistIteratorPrintercBs eZdZdZdZRS(s Print __gnu_cxx::slist::iteratorcCs ||_dS(N(R(RRR((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRscCsEt|jjd}|jj}|jdj|jdS(NR<R>R7(RRRR R?R9R:(RR1((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR(s(RRRRR((((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRDs tStdVectorPrintercBsHeZdZdefdYZdZdZdZdZRS(sPrint a std::vectorR/cBs#eZdZdZdZRS(cCs||_|rh|d|_|d|_|d|_|d|_|jjj}d|j|_n||_||_d|_ dS(Nt_M_pt _M_offsetii( tbitvectitemtsotfinishtfoR:RtsizeoftisizeR5(RtstartRKRHtitype((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRs       cCs|S(N((R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR6scCs|j}|jd|_|jr|j|jkrO|j|jkrOtn|jj}|d|j>@rxd}nd}|jd|_|j|jkr|jd|_d|_nd||fS|j|jkrtn|jj}|jd|_d||fSdS(Niis[%d]( R5RHRIRKRJRLR8R:RN(RR5R;tobit((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRs&  $    (RRRR6R(((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR/s  cCs7||_||_|jjdjtjk|_dS(Ni(RRRttemplate_argumenttcodeR tTYPE_CODE_BOOLtis_bool(RRR((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR s  cCs,|j|jdd|jdd|jS(NR=t_M_startt _M_finish(R/RRU(R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR@sc Cs$|jdd}|jdd}|jdd}|jr|jddd}|jddd}|jddd}|jddd}|jj}d|j}|||||d|}|||} d |jt|t| fSd |jt||t||fSdS( NR=RVRWt_M_end_of_storageRFRGiis"%s of length %d, capacity %ds%s of length %d, capacity %d(RRUR:RRMRtint( RRORKtendRJRLRPtbltlengthtcapacity((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR(s   cCsdS(Ntarray((R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyt display_hint)s( RRRRR/RR@R(R_(((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyREs )   tStdVectorIteratorPrintercBs eZdZdZdZRS(sPrint std::vector::iteratorcCs ||_dS(N(R(RRR((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR/scCs|jdjS(Nt _M_current(RR:(R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR(2s(RRRRR((((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR`,s tStdTuplePrintercBs?eZdZdefdYZdZdZdZRS(sPrint a std::tupleR/cBs#eZdZdZdZRS(cCsz||_|jjj}t|dkrL|jj|dj|_n!t|dkrmtdnd|_dS(Niis4Top of tuple tree does not consist of a single node.(R4RRtlenR9RR5(RR4tnodes((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR9s cCs|S(N((R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR6FscCs|jjj}t|dkr-tnt|dkrNtdn|jj|dj}|jj|dj|_|jd|_|jj}t|dks|djdkrd|j|fSd|j|dfSdS(Niis/Cannot parse more than 2 nodes in a tuple tree.iR+s[%d]( R4RRRcR8RR9R5R(RRdtimplR((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRIs %(RRRR6R(((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR/8s cCs||_||_dS(N(RR(RRR((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRes cCs|j|jS(N(R/R(R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR@iscCs4t|jjjdkr)d|jSd|jS(Nisempty %ss %s containing(RcRRRR(R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR(ls (RRRRR/RR@R((((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRb5s -  tStdStackOrQueuePrintercBs2eZdZdZdZdZdZRS(s Print a std::stack or std::queuecCs#||_tj|d|_dS(Ntc(RR tdefault_visualizert visualizer(RRR((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRts cCs |jjS(N(RiR@(R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR@xscCsd|j|jjfS(Ns%s wrapping: %s(RRiR((R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR({s cCs#t|jdr|jjSdS(NR_(thasattrRiR_tNone(R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR_s (RRRRR@R(R_(((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRfqs    tRbtreeIteratorcBs,eZdZdZdZdZRS(cCs;|ddd|_|dddd|_d|_dS(NR*R=t _M_node_countt _M_headert_M_lefti(tsizetnodeR5(Rtrbtree((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRscCs|S(N((R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR6scCs t|jS(N(RYRp(R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyt__len__scCs |j|jkrtn|j}|jd|_|j|jkr|j}|jdr|jd}x|jdr|jd}qrWnb|jd}x0||jdkr|}|jd}qW|jd|kr|}n||_n|S(Nit_M_rightRot _M_parent(R5RpR8RqR:(RtresultRqtparent((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRs$     (RRRR6RsR(((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRls   tStdRbtreeIteratorPrintercBs eZdZdZdZRS(sPrint std::map::iteratorcCs ||_dS(N(R(RRR((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRscCsKt|jjjd}tj|j}|jj|jdS(Ns ::_Link_typet_M_value_field(R RRR R RR9R:(RRR1((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR(s(RRRRR((((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRxs tStdDebugIteratorPrintercBs eZdZdZdZRS(s,Print a debug enabled version of an iteratorcCs ||_dS(N(R(RRR((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRscCs)|jjjd}|jdj|S(NiRa(RRRRR9(RRP((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR(s(RRRRR((((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRzs t StdMapPrintercBsHeZdZdefdYZdZdZdZdZRS(s!Print a std::map or std::multimapt_itercBs#eZdZdZdZRS(cCs||_d|_||_dS(Ni(trbiterR5R(RR}R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRs  cCs|S(N((R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR6scCs|jddkrTt|j}|j|jjd}||_|d}n |jd}d|j|f}|jd|_|S(NiiRytfirsttseconds[%d]i(R5RR}R9RR:tpair(RtnRIRv((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRs   (RRRR6R(((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR|s  cCs||_||_dS(N(RR(RRR((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRs cCs d|jtt|jfS(Ns%s with %d elements(RRcRlR(R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR(s cCsIt|jjd}t|d}|j}|jt|j|S(Nt _Rep_typet _Link_type(RRRR R|Rl(Rtrep_typeRq((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR@s cCsdS(Ntmap((R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR_s( RRRRR|RR(R@R_(((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR{s    t StdSetPrintercBs?eZdZdefdYZdZdZdZRS(s!Print a std::set or std::multisetR|cBs#eZdZdZdZRS(cCs||_d|_||_dS(Ni(R}R5R(RR}R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRs  cCs|S(N((R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR6scCsRt|j}|j|jjd}d|j|f}|jd|_|S(NRys[%d]i(RR}R9RR:R5(RRIRv((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRs (RRRR6R(((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR|s  cCs||_||_dS(N(RR(RRR((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRs cCs d|jtt|jfS(Ns%s with %d elements(RRcRlR(R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR(s cCsIt|jjd}t|d}|j}|jt|j|S(NRR(RRRR R|Rl(RRRq((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR@s (RRRRR|RR(R@(((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRs   tStdBitsetPrintercBs)eZdZdZdZdZRS(sPrint a std::bitsetcCs||_||_dS(N(RR(RRR((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRs cCs d|jS(Ns%s(R(R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR(sc Cs|jd}|j}|jtjkr:|jj}n|g}|j}|j|}g}d}x||kr||}d}xZ|dkr|d@dkr|jd||d|dfn|d}|d?}qW|d}qhW|S(Nt_M_wiis[%d]i(RRRSR tTYPE_CODE_ARRAYR,RMtappend( RtwordstwtypettsizetnwordsRvtbytetwtbit((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR@s&      & (RRRRR(R@(((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRs  tStdDequePrintercBsHeZdZdefdYZdZdZdZdZRS(sPrint a std::dequeR|cBs#eZdZdZdZRS(cCs:||_||_||_||_||_d|_dS(Ni(RqtpRZtlastt buffer_sizeR5(RRqRORZRR((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR:s      cCs|S(N((R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR6BscCs|j|jkrtnd|j|jjf}|jd|_|jd|_|j|jkr|jd|_|jd|_|j|j|_n|S(Ns[%d]ii(RRR8R5R:RZRqR(RRv((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyREs (RRRR6R(((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR|9s  cCsb||_||_|jjd|_|jj}|dkrUtd||_n d|_dS(Niii(RRRRRtelttypeRMRYR(RRRRp((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRWs    cCs|jdd}|jdd}|d|dd}|d|d}|d|d}|j|||}d |jt|fS( NR=RVRWR>it_M_lastt_M_curt_M_firsts%s with %d elements(RRRtlong(RRORZtdelta_ntdelta_stdelta_eRp((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR(ascCsN|jdd}|jdd}|j|d|d|d|d|jS(NR=RVRWR>RR(RR|R(RRORZ((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR@mscCsdS(NR^((R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR_ss( RRRRR|RR(R@R_(((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR6s  tStdDequeIteratorPrintercBs eZdZdZdZRS(sPrint std::deque::iteratorcCs ||_dS(N(R(RRR((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRyscCs|jdjS(NR(RR:(R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR(|s(RRRRR((((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRvs tStdStringPrintercBs)eZdZdZdZdZRS(s&Print a std::basic_string of some kindcCs ||_dS(N(R(RRR((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRscCs|jj}|jtjkr-|j}n|jdd}|jj}tjt |dj }|j |d}|j d}t |dr|jd|S|jd|S(Nt _M_dataplusRFs::_Repit _M_lengtht lazy_stringR\(RRRSR t TYPE_CODE_REFR,t unqualifiedR RR R?R9R:RjRtstring(RRtptrtrealtypetreptypetheaderRc((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR(s cCsdS(NR((R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR_s(RRRRR(R_(((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRs  tTr1HashtableIteratorcBs#eZdZdZdZRS(cCs4|ddd|_t|jdj|_dS(Nt _M_bbeginR>t_M_nxtt __node_type(RqRRR?t node_type(Rthash((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRscCs|S(N((R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR6scCsT|jdkrtn|jj|j}|jd}|jd|_|S(Nit_M_vR(RqR8R9RR:(RRqRv((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRs  (RRRR6R(((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRs  tTr1UnorderedSetPrintercBsAeZdZdZdZdZedZdZRS(sPrint a tr1::unordered_setcCs||_||_dS(N(RR(RRR((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRs cCs$|jjdr|jS|jdS(Nsstd::tr1t_M_h(Rt startswithR(R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyt hashtablescCsd|j|jdfS(Ns%s with %d elementst_M_element_count(RR(R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR(scCsd|S(Ns[%d]((ti((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyt format_countscCs1t|jtj}t|t|jS(N(RRt itertoolsR5RRR(Rtcounter((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR@s( RRRRRR(t staticmethodRR@(((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRs    tTr1UnorderedMapPrintercBsheZdZdZdZdZedZedZedZ dZ dZ RS( sPrint a tr1::unordered_mapcCs||_||_dS(N(RR(RRR((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRs cCs$|jjdr|jS|jdS(Nsstd::tr1R(RRR(R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRscCsd|j|jdfS(Ns%s with %d elementsR(RR(R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR(sccs+x$|D]}x|D] }|VqWqWdS(N((tlistR;R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pytflattens  cCs|d|dfS(NR~R((R;((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyt format_onescCsd|S(Ns[%d]((R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRscCsLt|jtj}|jt|jt|j}t||S(N( RRRR5RRRRR(RRtdata((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR@s'cCsdS(NR((R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR_s( RRRRRR(RRRRR@R_(((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRs    tStdForwardListPrintercBs?eZdZdefdYZdZdZdZRS(sPrint a std::forward_listR/cBs#eZdZdZdZRS(cCs#||_|d|_d|_dS(NR0i(R1R2R5(RR1R4((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRs  cCs|S(N((R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR6scCs|jdkrtn|jj|jj}|d|_|j}|jd|_|dj}|j|jjdj }d||jfS(NiR0it _M_storages[%d]( R2R8R9R1R:R5R3RRRR?(RR;R5tvalptr((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRs    !(RRRR6R(((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR/s  cCs||_||_dS(N(RR(RRR((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRs cCsBt|jjd}|jj}|j||jddS(NR<R=RC(RRRR R?R/(RR1((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR@scCs1|jddddkr&d|jSd|jS(NR=RCR0isempty %ss%s(RR(R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR(s (RRRRR/RR@R((((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRs   t RxPrintercBseZdZdZRS(cCs2tt|j||_||_t|_dS(N(tsuperRRRtfunctionR tenabled(RRR((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRs  cCsY|js dS|jjtjkrFttjdrF|j}qFn|j |j |S(Ntreferenced_value( RRkRRSR RRjtValueRRR(Rtvalue((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pytinvokes  (RRRR(((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRs tPrintercBsDeZdZdZdZdZedZdZRS(cCsMtt|j||_g|_i|_t|_tj d|_ dS(Ns^([a-zA-Z0-9_:]+)<.*>$( RRRRt subprinterstlookupR Rtretcompilet compiled_rx(RR((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR$s     cCsY|jj|ds)td|nt||}|jj|||j|s0libstdc++ programming error: "%s" does not match(RtmatchRRRRR(RRRtprinter((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pytadd,s cCs0|j||||j|d||dS(Ns__7::(R(RR2RR((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyt add_version6scCs.|j||||j|d||dS(Ns __cxx1998::(R(RR2RR((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyt add_container;scCs:|jtjkr!|j}n|jj}|jS(N(RSR RR,RR ttag(R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pytget_basic_type?scCs|j|j}|sdS|jj|}|s8dS|jd}|jjtjkrt tj dr|j }qn||j kr|j |j |SdS(NiR(RRRkRRtgroupRSR RRjRRRR(RRRRtbasename((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyt__call__Js( RRRRRRRRR(((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR#s     tFilteringTypePrintercBs0eZdZdefdYZdZRS(cCs||_||_t|_dS(N(RRR R(RRR((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRds  t _recognizercBseZdZdZRS(cCs||_||_d|_dS(N(RRRkttype_obj(RRR((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRjs  cCs~|jdkrdS|jdkrd|j|jkr8dSytj|jj|_WqdqdXn|j|krz|jSdS(N(RRkRRR RRR (RR((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyt recognizeos(RRRR(((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRis cCs|j|j|jS(N(RRR(R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyt instantiates(RRRtobjectRR(((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRcs cCs*t|d|}tjj||dS(Nsstd::(RR ttypestregister_type_printer(tobjRRR((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pytadd_one_type_printerscCsts dSxdFD]}t|d|dt|d|dt|d|dt|d |d t|d |d t|d |dt|d|dt|d|dt|d|dt|d|dt|d|dt|d|dt|d|dt|d|dt|d|d t|d!|d"t|d!|d#t|d$|d%t|d$|d&t|d'|d(t|d'|d)t|d*|d+t|d*|d,qWt|d-d.t|dd/t|dd0xdGD]}t|d7|qWt|d8d9t|d8d:t|d;d<t|d;d=t|d>d?t|d>d@t|dAdBt|dAdCt|dDdEdS(HNtRt basic_stringRt basic_iostiostbasic_streambuft streambuft basic_istreamtistreamt basic_ostreamtostreamtbasic_iostreamtiostreamtbasic_stringbuft stringbuftbasic_istringstreamt istringstreamtbasic_ostringstreamt ostringstreamtbasic_stringstreamt stringstreamt basic_filebuftfilebuftbasic_ifstreamtifstreamtbasic_ofstreamtofstreamt basic_fstreamtfstreamt basic_regextregext sub_matcht csub_matcht ssub_matcht match_resultstcmatchtsmatchtregex_iteratortcregex_iteratortsregex_iteratortregex_token_iteratortcregex_token_iteratortsregex_token_iteratortfpost streampost u16stringt u32stringt nanosecondst microsecondst millisecondstsecondstminutesthourstdurationtlinear_congruential_enginet minstd_rand0t minstd_randtmersenne_twister_enginetmt19937t mt19937_64tsubtract_with_carry_enginet ranlux24_baset ranlux48_basetdiscard_block_enginetranlux24tranlux48tshuffle_order_enginetknuth_b(RR(RRRRRR(t_use_type_printingR(Rtpfxtdur((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pytregister_type_printerss\           cCsOtrtjj|tn%|dkr1t}n|jjtt|dS(s4Register libstdc++ pretty-printers with objfile Obj.N( t _use_gdb_ppR tprintingtregister_pretty_printertlibstdcxx_printerRktpretty_printersRR+(R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pytregister_libstdcxx_printerss   cCs9tdad}d|d}tjddttjddttjddttjdd ttjdd ttjdd ttjdd t tjdd t tjddt tjddt tjddt tjddt tjddt tjddt tjdttjdttjdttjdttjdttjdt tjdt tjdt tjdt tjdt tjdt tjdt tjdd ttjdd!ttjdd"ttjdd#ttjdd$ttjdd%ttjdd&ttjd'd ttjd'd!ttjd'd"ttjd'd#ttjd'd$ttjd'd%ttjd(ttjd)ttjd*ttjd+ttjd,ttjd-d.ttr5tjdd/ttjdd0ttjdd1ttjdd2ttjdd3ttjdd4ttjd-d5ttjd-d6ttjd7ttjd8ttjd9ttjd:ttjd;tndS(<Ns libstdc++-v6s(__7::)?s (__cxx1998::s)?sstd::RtbitsettdequeRRtmultimaptmultisettpriority_queuetqueuettupletsettstackt unique_ptrtvectorsstd::__debug::bitsetsstd::__debug::dequesstd::__debug::listsstd::__debug::mapsstd::__debug::multimapsstd::__debug::multisetsstd::__debug::priority_queuesstd::__debug::queuesstd::__debug::setsstd::__debug::stacksstd::__debug::unique_ptrsstd::__debug::vectort shared_ptrtweak_ptrt unordered_mapt unordered_settunordered_multimaptunordered_multisett forward_lists std::tr1::sstd::__debug::unordered_mapsstd::__debug::unordered_sets std::__debug::unordered_multimaps std::__debug::unordered_multisetsstd::__debug::forward_lists __gnu_cxx::tslistt_List_iteratort_List_const_iteratort_Rb_tree_iteratort_Rb_tree_const_iteratort_Deque_iteratort_Deque_const_iteratort__normal_iteratort_Slist_iterators__gnu_debug::_Safe_iteratorsstd::__norm::_List_iterators!std::__norm::_List_const_iterators"std::__norm::_Deque_const_iteratorsstd::__norm::_Deque_iterator(RR/RRRRRR.R{RRfRbR)RERRRRRRBR RARxRR`RDRz(tverst container((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pytbuild_libstdcxx_dictionarys                              (((((((((((((((((((((((7R RRtsyst version_infoRRRRtzipRRYRR R,t gdb.printingt ImportErrortFalseR(t gdb.typesRjRRRR)R.RARBRDRER`RbRfRlRxRzR{RRRRRRRRRRRRkR/RRR+R1RO(((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pytsn            $ " L <%  *$(@ '(>  8  }PK!2python/libstdcxx/v6/__init__.pynu[ PK! python/libstdcxx/v6/__init__.pycnu[ WPc@sdS(N((((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/__init__.pytsPK! python/libstdcxx/v6/__init__.pyonu[ WPc@sdS(N((((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/__init__.pytsPK!Qؐpython/libstdcxx/v6/printers.pynu[# Pretty-printers for libstdc++. # Copyright (C) 2008-2013 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . import gdb import itertools import re import sys ### Python 2 + Python 3 compatibility code # Resources about compatibility: # # * : Documentation of the "six" module # FIXME: The handling of e.g. std::basic_string (at least on char) # probably needs updating to work with Python 3's new string rules. # # In particular, Python 3 has a separate type (called byte) for # bytestrings, and a special b"" syntax for the byte literals; the old # str() type has been redefined to always store Unicode text. # # We probably can't do much about this until this GDB PR is addressed: # if sys.version_info[0] > 2: ### Python 3 stuff Iterator = object # Python 3 folds these into the normal functions. imap = map izip = zip # Also, int subsumes long long = int else: ### Python 2 stuff class Iterator: """Compatibility mixin for iterators Instead of writing next() methods for iterators, write __next__() methods and use this mixin to make them work in Python 2 as well as Python 3. Idea stolen from the "six" documentation: """ def next(self): return self.__next__() # In Python 2, we still need these from itertools from itertools import imap, izip # Try to use the new-style pretty-printing if available. _use_gdb_pp = True try: import gdb.printing except ImportError: _use_gdb_pp = False # Try to install type-printers. _use_type_printing = False try: import gdb.types if hasattr(gdb.types, 'TypePrinter'): _use_type_printing = True except ImportError: pass # Starting with the type ORIG, search for the member type NAME. This # handles searching upward through superclasses. This is needed to # work around http://sourceware.org/bugzilla/show_bug.cgi?id=13615. def find_type(orig, name): typ = orig.strip_typedefs() while True: search = str(typ) + '::' + name try: return gdb.lookup_type(search) except RuntimeError: pass # The type was not found, so try the superclass. We only need # to check the first superclass, so we don't bother with # anything fancier here. field = typ.fields()[0] if not field.is_base_class: raise ValueError("Cannot find type %s::%s" % (str(orig), name)) typ = field.type class SharedPointerPrinter: "Print a shared_ptr or weak_ptr" def __init__ (self, typename, val): self.typename = typename self.val = val def to_string (self): state = 'empty' refcounts = self.val['_M_refcount']['_M_pi'] if refcounts != 0: usecount = refcounts['_M_use_count'] weakcount = refcounts['_M_weak_count'] if usecount == 0: state = 'expired, weak %d' % weakcount else: state = 'count %d, weak %d' % (usecount, weakcount - 1) return '%s (%s) %s' % (self.typename, state, self.val['_M_ptr']) class UniquePointerPrinter: "Print a unique_ptr" def __init__ (self, typename, val): self.val = val def to_string (self): v = self.val['_M_t']['_M_head_impl'] return ('std::unique_ptr<%s> containing %s' % (str(v.type.target()), str(v))) class StdListPrinter: "Print a std::list" class _iterator(Iterator): def __init__(self, nodetype, head): self.nodetype = nodetype self.base = head['_M_next'] self.head = head.address self.count = 0 def __iter__(self): return self def __next__(self): if self.base == self.head: raise StopIteration elt = self.base.cast(self.nodetype).dereference() self.base = elt['_M_next'] count = self.count self.count = self.count + 1 return ('[%d]' % count, elt['_M_data']) def __init__(self, typename, val): self.typename = typename self.val = val def children(self): nodetype = find_type(self.val.type, '_Node') nodetype = nodetype.strip_typedefs().pointer() return self._iterator(nodetype, self.val['_M_impl']['_M_node']) def to_string(self): if self.val['_M_impl']['_M_node'].address == self.val['_M_impl']['_M_node']['_M_next']: return 'empty %s' % (self.typename) return '%s' % (self.typename) class StdListIteratorPrinter: "Print std::list::iterator" def __init__(self, typename, val): self.val = val self.typename = typename def to_string(self): nodetype = find_type(self.val.type, '_Node') nodetype = nodetype.strip_typedefs().pointer() return self.val['_M_node'].cast(nodetype).dereference()['_M_data'] class StdSlistPrinter: "Print a __gnu_cxx::slist" class _iterator(Iterator): def __init__(self, nodetype, head): self.nodetype = nodetype self.base = head['_M_head']['_M_next'] self.count = 0 def __iter__(self): return self def __next__(self): if self.base == 0: raise StopIteration elt = self.base.cast(self.nodetype).dereference() self.base = elt['_M_next'] count = self.count self.count = self.count + 1 return ('[%d]' % count, elt['_M_data']) def __init__(self, typename, val): self.val = val def children(self): nodetype = find_type(self.val.type, '_Node') nodetype = nodetype.strip_typedefs().pointer() return self._iterator(nodetype, self.val) def to_string(self): if self.val['_M_head']['_M_next'] == 0: return 'empty __gnu_cxx::slist' return '__gnu_cxx::slist' class StdSlistIteratorPrinter: "Print __gnu_cxx::slist::iterator" def __init__(self, typename, val): self.val = val def to_string(self): nodetype = find_type(self.val.type, '_Node') nodetype = nodetype.strip_typedefs().pointer() return self.val['_M_node'].cast(nodetype).dereference()['_M_data'] class StdVectorPrinter: "Print a std::vector" class _iterator(Iterator): def __init__ (self, start, finish, bitvec): self.bitvec = bitvec if bitvec: self.item = start['_M_p'] self.so = start['_M_offset'] self.finish = finish['_M_p'] self.fo = finish['_M_offset'] itype = self.item.dereference().type self.isize = 8 * itype.sizeof else: self.item = start self.finish = finish self.count = 0 def __iter__(self): return self def __next__(self): count = self.count self.count = self.count + 1 if self.bitvec: if self.item == self.finish and self.so >= self.fo: raise StopIteration elt = self.item.dereference() if elt & (1 << self.so): obit = 1 else: obit = 0 self.so = self.so + 1 if self.so >= self.isize: self.item = self.item + 1 self.so = 0 return ('[%d]' % count, obit) else: if self.item == self.finish: raise StopIteration elt = self.item.dereference() self.item = self.item + 1 return ('[%d]' % count, elt) def __init__(self, typename, val): self.typename = typename self.val = val self.is_bool = val.type.template_argument(0).code == gdb.TYPE_CODE_BOOL def children(self): return self._iterator(self.val['_M_impl']['_M_start'], self.val['_M_impl']['_M_finish'], self.is_bool) def to_string(self): start = self.val['_M_impl']['_M_start'] finish = self.val['_M_impl']['_M_finish'] end = self.val['_M_impl']['_M_end_of_storage'] if self.is_bool: start = self.val['_M_impl']['_M_start']['_M_p'] so = self.val['_M_impl']['_M_start']['_M_offset'] finish = self.val['_M_impl']['_M_finish']['_M_p'] fo = self.val['_M_impl']['_M_finish']['_M_offset'] itype = start.dereference().type bl = 8 * itype.sizeof length = (bl - so) + bl * ((finish - start) - 1) + fo capacity = bl * (end - start) return ('%s of length %d, capacity %d' % (self.typename, int (length), int (capacity))) else: return ('%s of length %d, capacity %d' % (self.typename, int (finish - start), int (end - start))) def display_hint(self): return 'array' class StdVectorIteratorPrinter: "Print std::vector::iterator" def __init__(self, typename, val): self.val = val def to_string(self): return self.val['_M_current'].dereference() class StdTuplePrinter: "Print a std::tuple" class _iterator(Iterator): def __init__ (self, head): self.head = head # Set the base class as the initial head of the # tuple. nodes = self.head.type.fields () if len (nodes) == 1: # Set the actual head to the first pair. self.head = self.head.cast (nodes[0].type) elif len (nodes) != 0: raise ValueError("Top of tuple tree does not consist of a single node.") self.count = 0 def __iter__ (self): return self def __next__ (self): nodes = self.head.type.fields () # Check for further recursions in the inheritance tree. if len (nodes) == 0: raise StopIteration # Check that this iteration has an expected structure. if len (nodes) != 2: raise ValueError("Cannot parse more than 2 nodes in a tuple tree.") # - Left node is the next recursion parent. # - Right node is the actual class contained in the tuple. # Process right node. impl = self.head.cast (nodes[1].type) # Process left node and set it as head. self.head = self.head.cast (nodes[0].type) self.count = self.count + 1 # Finally, check the implementation. If it is # wrapped in _M_head_impl return that, otherwise return # the value "as is". fields = impl.type.fields () if len (fields) < 1 or fields[0].name != "_M_head_impl": return ('[%d]' % self.count, impl) else: return ('[%d]' % self.count, impl['_M_head_impl']) def __init__ (self, typename, val): self.typename = typename self.val = val; def children (self): return self._iterator (self.val) def to_string (self): if len (self.val.type.fields ()) == 0: return 'empty %s' % (self.typename) return '%s containing' % (self.typename) class StdStackOrQueuePrinter: "Print a std::stack or std::queue" def __init__ (self, typename, val): self.typename = typename self.visualizer = gdb.default_visualizer(val['c']) def children (self): return self.visualizer.children() def to_string (self): return '%s wrapping: %s' % (self.typename, self.visualizer.to_string()) def display_hint (self): if hasattr (self.visualizer, 'display_hint'): return self.visualizer.display_hint () return None class RbtreeIterator(Iterator): def __init__(self, rbtree): self.size = rbtree['_M_t']['_M_impl']['_M_node_count'] self.node = rbtree['_M_t']['_M_impl']['_M_header']['_M_left'] self.count = 0 def __iter__(self): return self def __len__(self): return int (self.size) def __next__(self): if self.count == self.size: raise StopIteration result = self.node self.count = self.count + 1 if self.count < self.size: # Compute the next node. node = self.node if node.dereference()['_M_right']: node = node.dereference()['_M_right'] while node.dereference()['_M_left']: node = node.dereference()['_M_left'] else: parent = node.dereference()['_M_parent'] while node == parent.dereference()['_M_right']: node = parent parent = parent.dereference()['_M_parent'] if node.dereference()['_M_right'] != parent: node = parent self.node = node return result # This is a pretty printer for std::_Rb_tree_iterator (which is # std::map::iterator), and has nothing to do with the RbtreeIterator # class above. class StdRbtreeIteratorPrinter: "Print std::map::iterator" def __init__ (self, typename, val): self.val = val def to_string (self): typename = str(self.val.type.strip_typedefs()) + '::_Link_type' nodetype = gdb.lookup_type(typename).strip_typedefs() return self.val.cast(nodetype).dereference()['_M_value_field'] class StdDebugIteratorPrinter: "Print a debug enabled version of an iterator" def __init__ (self, typename, val): self.val = val # Just strip away the encapsulating __gnu_debug::_Safe_iterator # and return the wrapped iterator value. def to_string (self): itype = self.val.type.template_argument(0) return self.val['_M_current'].cast(itype) class StdMapPrinter: "Print a std::map or std::multimap" # Turn an RbtreeIterator into a pretty-print iterator. class _iter(Iterator): def __init__(self, rbiter, type): self.rbiter = rbiter self.count = 0 self.type = type def __iter__(self): return self def __next__(self): if self.count % 2 == 0: n = next(self.rbiter) n = n.cast(self.type).dereference()['_M_value_field'] self.pair = n item = n['first'] else: item = self.pair['second'] result = ('[%d]' % self.count, item) self.count = self.count + 1 return result def __init__ (self, typename, val): self.typename = typename self.val = val def to_string (self): return '%s with %d elements' % (self.typename, len (RbtreeIterator (self.val))) def children (self): rep_type = find_type(self.val.type, '_Rep_type') node = find_type(rep_type, '_Link_type') node = node.strip_typedefs() return self._iter (RbtreeIterator (self.val), node) def display_hint (self): return 'map' class StdSetPrinter: "Print a std::set or std::multiset" # Turn an RbtreeIterator into a pretty-print iterator. class _iter(Iterator): def __init__(self, rbiter, type): self.rbiter = rbiter self.count = 0 self.type = type def __iter__(self): return self def __next__(self): item = next(self.rbiter) item = item.cast(self.type).dereference()['_M_value_field'] # FIXME: this is weird ... what to do? # Maybe a 'set' display hint? result = ('[%d]' % self.count, item) self.count = self.count + 1 return result def __init__ (self, typename, val): self.typename = typename self.val = val def to_string (self): return '%s with %d elements' % (self.typename, len (RbtreeIterator (self.val))) def children (self): rep_type = find_type(self.val.type, '_Rep_type') node = find_type(rep_type, '_Link_type') node = node.strip_typedefs() return self._iter (RbtreeIterator (self.val), node) class StdBitsetPrinter: "Print a std::bitset" def __init__(self, typename, val): self.typename = typename self.val = val def to_string (self): # If template_argument handled values, we could print the # size. Or we could use a regexp on the type. return '%s' % (self.typename) def children (self): words = self.val['_M_w'] wtype = words.type # The _M_w member can be either an unsigned long, or an # array. This depends on the template specialization used. # If it is a single long, convert to a single element list. if wtype.code == gdb.TYPE_CODE_ARRAY: tsize = wtype.target ().sizeof else: words = [words] tsize = wtype.sizeof nwords = wtype.sizeof / tsize result = [] byte = 0 while byte < nwords: w = words[byte] bit = 0 while w != 0: if (w & 1) != 0: # Another spot where we could use 'set'? result.append(('[%d]' % (byte * tsize * 8 + bit), 1)) bit = bit + 1 w = w >> 1 byte = byte + 1 return result class StdDequePrinter: "Print a std::deque" class _iter(Iterator): def __init__(self, node, start, end, last, buffer_size): self.node = node self.p = start self.end = end self.last = last self.buffer_size = buffer_size self.count = 0 def __iter__(self): return self def __next__(self): if self.p == self.last: raise StopIteration result = ('[%d]' % self.count, self.p.dereference()) self.count = self.count + 1 # Advance the 'cur' pointer. self.p = self.p + 1 if self.p == self.end: # If we got to the end of this bucket, move to the # next bucket. self.node = self.node + 1 self.p = self.node[0] self.end = self.p + self.buffer_size return result def __init__(self, typename, val): self.typename = typename self.val = val self.elttype = val.type.template_argument(0) size = self.elttype.sizeof if size < 512: self.buffer_size = int (512 / size) else: self.buffer_size = 1 def to_string(self): start = self.val['_M_impl']['_M_start'] end = self.val['_M_impl']['_M_finish'] delta_n = end['_M_node'] - start['_M_node'] - 1 delta_s = start['_M_last'] - start['_M_cur'] delta_e = end['_M_cur'] - end['_M_first'] size = self.buffer_size * delta_n + delta_s + delta_e return '%s with %d elements' % (self.typename, long (size)) def children(self): start = self.val['_M_impl']['_M_start'] end = self.val['_M_impl']['_M_finish'] return self._iter(start['_M_node'], start['_M_cur'], start['_M_last'], end['_M_cur'], self.buffer_size) def display_hint (self): return 'array' class StdDequeIteratorPrinter: "Print std::deque::iterator" def __init__(self, typename, val): self.val = val def to_string(self): return self.val['_M_cur'].dereference() class StdStringPrinter: "Print a std::basic_string of some kind" def __init__(self, typename, val): self.val = val def to_string(self): # Make sure &string works, too. type = self.val.type if type.code == gdb.TYPE_CODE_REF: type = type.target () # Calculate the length of the string so that to_string returns # the string according to length, not according to first null # encountered. ptr = self.val ['_M_dataplus']['_M_p'] realtype = type.unqualified ().strip_typedefs () reptype = gdb.lookup_type (str (realtype) + '::_Rep').pointer () header = ptr.cast(reptype) - 1 len = header.dereference ()['_M_length'] if hasattr(ptr, "lazy_string"): return ptr.lazy_string (length = len) return ptr.string (length = len) def display_hint (self): return 'string' class Tr1HashtableIterator(Iterator): def __init__ (self, hash): self.node = hash['_M_bbegin']['_M_node']['_M_nxt'] self.node_type = find_type(hash.type, '__node_type').pointer() def __iter__ (self): return self def __next__ (self): if self.node == 0: raise StopIteration node = self.node.cast(self.node_type) result = node.dereference()['_M_v'] self.node = node.dereference()['_M_nxt'] return result class Tr1UnorderedSetPrinter: "Print a tr1::unordered_set" def __init__ (self, typename, val): self.typename = typename self.val = val def hashtable (self): if self.typename.startswith('std::tr1'): return self.val return self.val['_M_h'] def to_string (self): return '%s with %d elements' % (self.typename, self.hashtable()['_M_element_count']) @staticmethod def format_count (i): return '[%d]' % i def children (self): counter = imap (self.format_count, itertools.count()) return izip (counter, Tr1HashtableIterator (self.hashtable())) class Tr1UnorderedMapPrinter: "Print a tr1::unordered_map" def __init__ (self, typename, val): self.typename = typename self.val = val def hashtable (self): if self.typename.startswith('std::tr1'): return self.val return self.val['_M_h'] def to_string (self): return '%s with %d elements' % (self.typename, self.hashtable()['_M_element_count']) @staticmethod def flatten (list): for elt in list: for i in elt: yield i @staticmethod def format_one (elt): return (elt['first'], elt['second']) @staticmethod def format_count (i): return '[%d]' % i def children (self): counter = imap (self.format_count, itertools.count()) # Map over the hash table and flatten the result. data = self.flatten (imap (self.format_one, Tr1HashtableIterator (self.hashtable()))) # Zip the two iterators together. return izip (counter, data) def display_hint (self): return 'map' class StdForwardListPrinter: "Print a std::forward_list" class _iterator(Iterator): def __init__(self, nodetype, head): self.nodetype = nodetype self.base = head['_M_next'] self.count = 0 def __iter__(self): return self def __next__(self): if self.base == 0: raise StopIteration elt = self.base.cast(self.nodetype).dereference() self.base = elt['_M_next'] count = self.count self.count = self.count + 1 valptr = elt['_M_storage'].address valptr = valptr.cast(elt.type.template_argument(0).pointer()) return ('[%d]' % count, valptr.dereference()) def __init__(self, typename, val): self.val = val self.typename = typename def children(self): nodetype = find_type(self.val.type, '_Node') nodetype = nodetype.strip_typedefs().pointer() return self._iterator(nodetype, self.val['_M_impl']['_M_head']) def to_string(self): if self.val['_M_impl']['_M_head']['_M_next'] == 0: return 'empty %s' % (self.typename) return '%s' % (self.typename) # A "regular expression" printer which conforms to the # "SubPrettyPrinter" protocol from gdb.printing. class RxPrinter(object): def __init__(self, name, function): super(RxPrinter, self).__init__() self.name = name self.function = function self.enabled = True def invoke(self, value): if not self.enabled: return None if value.type.code == gdb.TYPE_CODE_REF: if hasattr(gdb.Value,"referenced_value"): value = value.referenced_value() return self.function(self.name, value) # A pretty-printer that conforms to the "PrettyPrinter" protocol from # gdb.printing. It can also be used directly as an old-style printer. class Printer(object): def __init__(self, name): super(Printer, self).__init__() self.name = name self.subprinters = [] self.lookup = {} self.enabled = True self.compiled_rx = re.compile('^([a-zA-Z0-9_:]+)<.*>$') def add(self, name, function): # A small sanity check. # FIXME if not self.compiled_rx.match(name + '<>'): raise ValueError('libstdc++ programming error: "%s" does not match' % name) printer = RxPrinter(name, function) self.subprinters.append(printer) self.lookup[name] = printer # Add a name using _GLIBCXX_BEGIN_NAMESPACE_VERSION. def add_version(self, base, name, function): self.add(base + name, function) self.add(base + '__7::' + name, function) # Add a name using _GLIBCXX_BEGIN_NAMESPACE_CONTAINER. def add_container(self, base, name, function): self.add_version(base, name, function) self.add_version(base + '__cxx1998::', name, function) @staticmethod def get_basic_type(type): # If it points to a reference, get the reference. if type.code == gdb.TYPE_CODE_REF: type = type.target () # Get the unqualified type, stripped of typedefs. type = type.unqualified ().strip_typedefs () return type.tag def __call__(self, val): typename = self.get_basic_type(val.type) if not typename: return None # All the types we match are template types, so we can use a # dictionary. match = self.compiled_rx.match(typename) if not match: return None basename = match.group(1) if val.type.code == gdb.TYPE_CODE_REF: if hasattr(gdb.Value,"referenced_value"): val = val.referenced_value() if basename in self.lookup: return self.lookup[basename].invoke(val) # Cannot find a pretty printer. Return None. return None libstdcxx_printer = None class FilteringTypePrinter(object): def __init__(self, match, name): self.match = match self.name = name self.enabled = True class _recognizer(object): def __init__(self, match, name): self.match = match self.name = name self.type_obj = None def recognize(self, type_obj): if type_obj.tag is None: return None if self.type_obj is None: if not self.match in type_obj.tag: # Filter didn't match. return None try: self.type_obj = gdb.lookup_type(self.name).strip_typedefs() except: pass if self.type_obj == type_obj: return self.name return None def instantiate(self): return self._recognizer(self.match, self.name) def add_one_type_printer(obj, match, name): printer = FilteringTypePrinter(match, 'std::' + name) gdb.types.register_type_printer(obj, printer) def register_type_printers(obj): global _use_type_printing if not _use_type_printing: return for pfx in ('', 'w'): add_one_type_printer(obj, 'basic_string', pfx + 'string') add_one_type_printer(obj, 'basic_ios', pfx + 'ios') add_one_type_printer(obj, 'basic_streambuf', pfx + 'streambuf') add_one_type_printer(obj, 'basic_istream', pfx + 'istream') add_one_type_printer(obj, 'basic_ostream', pfx + 'ostream') add_one_type_printer(obj, 'basic_iostream', pfx + 'iostream') add_one_type_printer(obj, 'basic_stringbuf', pfx + 'stringbuf') add_one_type_printer(obj, 'basic_istringstream', pfx + 'istringstream') add_one_type_printer(obj, 'basic_ostringstream', pfx + 'ostringstream') add_one_type_printer(obj, 'basic_stringstream', pfx + 'stringstream') add_one_type_printer(obj, 'basic_filebuf', pfx + 'filebuf') add_one_type_printer(obj, 'basic_ifstream', pfx + 'ifstream') add_one_type_printer(obj, 'basic_ofstream', pfx + 'ofstream') add_one_type_printer(obj, 'basic_fstream', pfx + 'fstream') add_one_type_printer(obj, 'basic_regex', pfx + 'regex') add_one_type_printer(obj, 'sub_match', pfx + 'csub_match') add_one_type_printer(obj, 'sub_match', pfx + 'ssub_match') add_one_type_printer(obj, 'match_results', pfx + 'cmatch') add_one_type_printer(obj, 'match_results', pfx + 'smatch') add_one_type_printer(obj, 'regex_iterator', pfx + 'cregex_iterator') add_one_type_printer(obj, 'regex_iterator', pfx + 'sregex_iterator') add_one_type_printer(obj, 'regex_token_iterator', pfx + 'cregex_token_iterator') add_one_type_printer(obj, 'regex_token_iterator', pfx + 'sregex_token_iterator') # Note that we can't have a printer for std::wstreampos, because # it shares the same underlying type as std::streampos. add_one_type_printer(obj, 'fpos', 'streampos') add_one_type_printer(obj, 'basic_string', 'u16string') add_one_type_printer(obj, 'basic_string', 'u32string') for dur in ('nanoseconds', 'microseconds', 'milliseconds', 'seconds', 'minutes', 'hours'): add_one_type_printer(obj, 'duration', dur) add_one_type_printer(obj, 'linear_congruential_engine', 'minstd_rand0') add_one_type_printer(obj, 'linear_congruential_engine', 'minstd_rand') add_one_type_printer(obj, 'mersenne_twister_engine', 'mt19937') add_one_type_printer(obj, 'mersenne_twister_engine', 'mt19937_64') add_one_type_printer(obj, 'subtract_with_carry_engine', 'ranlux24_base') add_one_type_printer(obj, 'subtract_with_carry_engine', 'ranlux48_base') add_one_type_printer(obj, 'discard_block_engine', 'ranlux24') add_one_type_printer(obj, 'discard_block_engine', 'ranlux48') add_one_type_printer(obj, 'shuffle_order_engine', 'knuth_b') def register_libstdcxx_printers (obj): "Register libstdc++ pretty-printers with objfile Obj." global _use_gdb_pp global libstdcxx_printer if _use_gdb_pp: gdb.printing.register_pretty_printer(obj, libstdcxx_printer) else: if obj is None: obj = gdb obj.pretty_printers.append(libstdcxx_printer) register_type_printers(obj) def build_libstdcxx_dictionary (): global libstdcxx_printer libstdcxx_printer = Printer("libstdc++-v6") # For _GLIBCXX_BEGIN_NAMESPACE_VERSION. vers = '(__7::)?' # For _GLIBCXX_BEGIN_NAMESPACE_CONTAINER. container = '(__cxx1998::' + vers + ')?' # libstdc++ objects requiring pretty-printing. # In order from: # http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/a01847.html libstdcxx_printer.add_version('std::', 'basic_string', StdStringPrinter) libstdcxx_printer.add_container('std::', 'bitset', StdBitsetPrinter) libstdcxx_printer.add_container('std::', 'deque', StdDequePrinter) libstdcxx_printer.add_container('std::', 'list', StdListPrinter) libstdcxx_printer.add_container('std::', 'map', StdMapPrinter) libstdcxx_printer.add_container('std::', 'multimap', StdMapPrinter) libstdcxx_printer.add_container('std::', 'multiset', StdSetPrinter) libstdcxx_printer.add_version('std::', 'priority_queue', StdStackOrQueuePrinter) libstdcxx_printer.add_version('std::', 'queue', StdStackOrQueuePrinter) libstdcxx_printer.add_version('std::', 'tuple', StdTuplePrinter) libstdcxx_printer.add_container('std::', 'set', StdSetPrinter) libstdcxx_printer.add_version('std::', 'stack', StdStackOrQueuePrinter) libstdcxx_printer.add_version('std::', 'unique_ptr', UniquePointerPrinter) libstdcxx_printer.add_container('std::', 'vector', StdVectorPrinter) # vector # Printer registrations for classes compiled with -D_GLIBCXX_DEBUG. libstdcxx_printer.add('std::__debug::bitset', StdBitsetPrinter) libstdcxx_printer.add('std::__debug::deque', StdDequePrinter) libstdcxx_printer.add('std::__debug::list', StdListPrinter) libstdcxx_printer.add('std::__debug::map', StdMapPrinter) libstdcxx_printer.add('std::__debug::multimap', StdMapPrinter) libstdcxx_printer.add('std::__debug::multiset', StdSetPrinter) libstdcxx_printer.add('std::__debug::priority_queue', StdStackOrQueuePrinter) libstdcxx_printer.add('std::__debug::queue', StdStackOrQueuePrinter) libstdcxx_printer.add('std::__debug::set', StdSetPrinter) libstdcxx_printer.add('std::__debug::stack', StdStackOrQueuePrinter) libstdcxx_printer.add('std::__debug::unique_ptr', UniquePointerPrinter) libstdcxx_printer.add('std::__debug::vector', StdVectorPrinter) # These are the TR1 and C++0x printers. # For array - the default GDB pretty-printer seems reasonable. libstdcxx_printer.add_version('std::', 'shared_ptr', SharedPointerPrinter) libstdcxx_printer.add_version('std::', 'weak_ptr', SharedPointerPrinter) libstdcxx_printer.add_container('std::', 'unordered_map', Tr1UnorderedMapPrinter) libstdcxx_printer.add_container('std::', 'unordered_set', Tr1UnorderedSetPrinter) libstdcxx_printer.add_container('std::', 'unordered_multimap', Tr1UnorderedMapPrinter) libstdcxx_printer.add_container('std::', 'unordered_multiset', Tr1UnorderedSetPrinter) libstdcxx_printer.add_container('std::', 'forward_list', StdForwardListPrinter) libstdcxx_printer.add_version('std::tr1::', 'shared_ptr', SharedPointerPrinter) libstdcxx_printer.add_version('std::tr1::', 'weak_ptr', SharedPointerPrinter) libstdcxx_printer.add_version('std::tr1::', 'unordered_map', Tr1UnorderedMapPrinter) libstdcxx_printer.add_version('std::tr1::', 'unordered_set', Tr1UnorderedSetPrinter) libstdcxx_printer.add_version('std::tr1::', 'unordered_multimap', Tr1UnorderedMapPrinter) libstdcxx_printer.add_version('std::tr1::', 'unordered_multiset', Tr1UnorderedSetPrinter) # These are the C++0x printer registrations for -D_GLIBCXX_DEBUG cases. # The tr1 namespace printers do not seem to have any debug # equivalents, so do no register them. libstdcxx_printer.add('std::__debug::unordered_map', Tr1UnorderedMapPrinter) libstdcxx_printer.add('std::__debug::unordered_set', Tr1UnorderedSetPrinter) libstdcxx_printer.add('std::__debug::unordered_multimap', Tr1UnorderedMapPrinter) libstdcxx_printer.add('std::__debug::unordered_multiset', Tr1UnorderedSetPrinter) libstdcxx_printer.add('std::__debug::forward_list', StdForwardListPrinter) # Extensions. libstdcxx_printer.add_version('__gnu_cxx::', 'slist', StdSlistPrinter) if True: # These shouldn't be necessary, if GDB "print *i" worked. # But it often doesn't, so here they are. libstdcxx_printer.add_container('std::', '_List_iterator', StdListIteratorPrinter) libstdcxx_printer.add_container('std::', '_List_const_iterator', StdListIteratorPrinter) libstdcxx_printer.add_version('std::', '_Rb_tree_iterator', StdRbtreeIteratorPrinter) libstdcxx_printer.add_version('std::', '_Rb_tree_const_iterator', StdRbtreeIteratorPrinter) libstdcxx_printer.add_container('std::', '_Deque_iterator', StdDequeIteratorPrinter) libstdcxx_printer.add_container('std::', '_Deque_const_iterator', StdDequeIteratorPrinter) libstdcxx_printer.add_version('__gnu_cxx::', '__normal_iterator', StdVectorIteratorPrinter) libstdcxx_printer.add_version('__gnu_cxx::', '_Slist_iterator', StdSlistIteratorPrinter) # Debug (compiled with -D_GLIBCXX_DEBUG) printer # registrations. The Rb_tree debug iterator when unwrapped # from the encapsulating __gnu_debug::_Safe_iterator does not # have the __norm namespace. Just use the existing printer # registration for that. libstdcxx_printer.add('__gnu_debug::_Safe_iterator', StdDebugIteratorPrinter) libstdcxx_printer.add('std::__norm::_List_iterator', StdListIteratorPrinter) libstdcxx_printer.add('std::__norm::_List_const_iterator', StdListIteratorPrinter) libstdcxx_printer.add('std::__norm::_Deque_const_iterator', StdDequeIteratorPrinter) libstdcxx_printer.add('std::__norm::_Deque_iterator', StdDequeIteratorPrinter) build_libstdcxx_dictionary () PK!~ python/libstdcxx/v6/printers.pyonu[ ]c@s7ddlZddlZddlZddlZejddkr^eZeZe Z e Z n)ddAdYZddlmZm Z e ayddlZWnek reanXeay+ddlZeejdre anWnek rnXdZd dBd YZd dCd YZd dDdYZddEdYZddFdYZddGdYZddHdYZddIdYZddJdYZddKdYZ defdYZ!ddLd YZ"d!dMd"YZ#d#dNd$YZ$d%dOd&YZ%d'dPd(YZ&d)dQd*YZ'd+dRd,YZ(d-dSd.YZ)d/efd0YZ*d1dTd2YZ+d3dUd4YZ,d5dVd6YZ-d7efd8YZ.d9efd:YZ/da1d;efd<YZ2d=Z3d>Z4d?Z5d@Z6e6dS(WiNiitIteratorcBseZdZdZRS(s:Compatibility mixin for iterators Instead of writing next() methods for iterators, write __next__() methods and use this mixin to make them work in Python 2 as well as Python 3. Idea stolen from the "six" documentation: cCs |jS(N(t__next__(tself((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pytnext<s(t__name__t __module__t__doc__R(((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR1s (timaptizipt TypePrintercCs|j}xtrt|d|}ytj|SWntk rMnX|jd}|jstdt||fn|j }qWdS(Ns::isCannot find type %s::%s( tstrip_typedefstTruetstrtgdbt lookup_typet RuntimeErrortfieldst is_base_classt ValueErrorttype(torigtnamettyptsearchtfield((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyt find_typeUs    tSharedPointerPrintercBs eZdZdZdZRS(sPrint a shared_ptr or weak_ptrcCs||_||_dS(N(ttypenametval(RRR((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyt__init__hs cCsd}|jdd}|dkrg|d}|d}|dkrPd|}qgd||d f}nd |j||jd fS( Ntemptyt _M_refcountt_M_piit _M_use_countt _M_weak_countsexpired, weak %dscount %d, weak %dis %s (%s) %st_M_ptr(RR(Rtstatet refcountstusecountt weakcount((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyt to_stringls     (RRRRR((((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRes tUniquePointerPrintercBs eZdZdZdZRS(sPrint a unique_ptrcCs ||_dS(N(R(RRR((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR{scCs4|jdd}dt|jjt|fS(Nt_M_tt _M_head_impls!std::unique_ptr<%s> containing %s(RR Rttarget(Rtv((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR(~s(RRRRR((((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR)xs tStdListPrintercBs?eZdZdefdYZdZdZdZRS(sPrint a std::listt _iteratorcBs#eZdZdZdZRS(cCs/||_|d|_|j|_d|_dS(Nt_M_nexti(tnodetypetbasetaddresstheadtcount(RR1R4((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRs   cCs|S(N((R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyt__iter__scCsn|j|jkrtn|jj|jj}|d|_|j}|jd|_d||dfS(NR0is[%d]t_M_data(R2R4t StopIterationtcastR1t dereferenceR5(RteltR5((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRs   (RRRR6R(((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR/s  cCs||_||_dS(N(RR(RRR((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRs cCsBt|jjd}|jj}|j||jddS(Nt_Nodet_M_implt_M_node(RRRR tpointerR/(RR1((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pytchildrenscCs?|jddj|jdddkr4d|jSd|jS(NR=R>R0sempty %ss%s(RR3R(R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR(s) (RRRRR/RR@R((((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR.s   tStdListIteratorPrintercBs eZdZdZdZRS(sPrint std::list::iteratorcCs||_||_dS(N(RR(RRR((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRs cCsEt|jjd}|jj}|jdj|jdS(NR<R>R7(RRRR R?R9R:(RR1((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR(s(RRRRR((((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRAs tStdSlistPrintercBs?eZdZdefdYZdZdZdZRS(sPrint a __gnu_cxx::slistR/cBs#eZdZdZdZRS(cCs'||_|dd|_d|_dS(Nt_M_headR0i(R1R2R5(RR1R4((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRs cCs|S(N((R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR6scCsk|jdkrtn|jj|jj}|d|_|j}|jd|_d||dfS(NiR0is[%d]R7(R2R8R9R1R:R5(RR;R5((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRs   (RRRR6R(((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR/s  cCs ||_dS(N(R(RRR((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRscCs:t|jjd}|jj}|j||jS(NR<(RRRR R?R/(RR1((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR@scCs|jdddkrdSdS(NRCR0isempty __gnu_cxx::slists__gnu_cxx::slist(R(R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR(s(RRRRR/RR@R((((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRBs   tStdSlistIteratorPrintercBs eZdZdZdZRS(s Print __gnu_cxx::slist::iteratorcCs ||_dS(N(R(RRR((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRscCsEt|jjd}|jj}|jdj|jdS(NR<R>R7(RRRR R?R9R:(RR1((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR(s(RRRRR((((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRDs tStdVectorPrintercBsHeZdZdefdYZdZdZdZdZRS(sPrint a std::vectorR/cBs#eZdZdZdZRS(cCs||_|rh|d|_|d|_|d|_|d|_|jjj}d|j|_n||_||_d|_ dS(Nt_M_pt _M_offsetii( tbitvectitemtsotfinishtfoR:RtsizeoftisizeR5(RtstartRKRHtitype((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRs       cCs|S(N((R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR6scCs|j}|jd|_|jr|j|jkrO|j|jkrOtn|jj}|d|j>@rxd}nd}|jd|_|j|jkr|jd|_d|_nd||fS|j|jkrtn|jj}|jd|_d||fSdS(Niis[%d]( R5RHRIRKRJRLR8R:RN(RR5R;tobit((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRs&  $    (RRRR6R(((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR/s  cCs7||_||_|jjdjtjk|_dS(Ni(RRRttemplate_argumenttcodeR tTYPE_CODE_BOOLtis_bool(RRR((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR s  cCs,|j|jdd|jdd|jS(NR=t_M_startt _M_finish(R/RRU(R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR@sc Cs$|jdd}|jdd}|jdd}|jr|jddd}|jddd}|jddd}|jddd}|jj}d|j}|||||d|}|||} d |jt|t| fSd |jt||t||fSdS( NR=RVRWt_M_end_of_storageRFRGiis"%s of length %d, capacity %ds%s of length %d, capacity %d(RRUR:RRMRtint( RRORKtendRJRLRPtbltlengthtcapacity((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR(s   cCsdS(Ntarray((R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyt display_hint)s( RRRRR/RR@R(R_(((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyREs )   tStdVectorIteratorPrintercBs eZdZdZdZRS(sPrint std::vector::iteratorcCs ||_dS(N(R(RRR((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR/scCs|jdjS(Nt _M_current(RR:(R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR(2s(RRRRR((((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR`,s tStdTuplePrintercBs?eZdZdefdYZdZdZdZRS(sPrint a std::tupleR/cBs#eZdZdZdZRS(cCsz||_|jjj}t|dkrL|jj|dj|_n!t|dkrmtdnd|_dS(Niis4Top of tuple tree does not consist of a single node.(R4RRtlenR9RR5(RR4tnodes((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR9s cCs|S(N((R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR6FscCs|jjj}t|dkr-tnt|dkrNtdn|jj|dj}|jj|dj|_|jd|_|jj}t|dks|djdkrd|j|fSd|j|dfSdS(Niis/Cannot parse more than 2 nodes in a tuple tree.iR+s[%d]( R4RRRcR8RR9R5R(RRdtimplR((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRIs %(RRRR6R(((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR/8s cCs||_||_dS(N(RR(RRR((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRes cCs|j|jS(N(R/R(R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR@iscCs4t|jjjdkr)d|jSd|jS(Nisempty %ss %s containing(RcRRRR(R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR(ls (RRRRR/RR@R((((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRb5s -  tStdStackOrQueuePrintercBs2eZdZdZdZdZdZRS(s Print a std::stack or std::queuecCs#||_tj|d|_dS(Ntc(RR tdefault_visualizert visualizer(RRR((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRts cCs |jjS(N(RiR@(R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR@xscCsd|j|jjfS(Ns%s wrapping: %s(RRiR((R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR({s cCs#t|jdr|jjSdS(NR_(thasattrRiR_tNone(R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR_s (RRRRR@R(R_(((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRfqs    tRbtreeIteratorcBs,eZdZdZdZdZRS(cCs;|ddd|_|dddd|_d|_dS(NR*R=t _M_node_countt _M_headert_M_lefti(tsizetnodeR5(Rtrbtree((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRscCs|S(N((R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR6scCs t|jS(N(RYRp(R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyt__len__scCs |j|jkrtn|j}|jd|_|j|jkr|j}|jdr|jd}x|jdr|jd}qrWnb|jd}x0||jdkr|}|jd}qW|jd|kr|}n||_n|S(Nit_M_rightRot _M_parent(R5RpR8RqR:(RtresultRqtparent((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRs$     (RRRR6RsR(((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRls   tStdRbtreeIteratorPrintercBs eZdZdZdZRS(sPrint std::map::iteratorcCs ||_dS(N(R(RRR((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRscCsKt|jjjd}tj|j}|jj|jdS(Ns ::_Link_typet_M_value_field(R RRR R RR9R:(RRR1((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR(s(RRRRR((((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRxs tStdDebugIteratorPrintercBs eZdZdZdZRS(s,Print a debug enabled version of an iteratorcCs ||_dS(N(R(RRR((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRscCs)|jjjd}|jdj|S(NiRa(RRRRR9(RRP((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR(s(RRRRR((((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRzs t StdMapPrintercBsHeZdZdefdYZdZdZdZdZRS(s!Print a std::map or std::multimapt_itercBs#eZdZdZdZRS(cCs||_d|_||_dS(Ni(trbiterR5R(RR}R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRs  cCs|S(N((R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR6scCs|jddkrTt|j}|j|jjd}||_|d}n |jd}d|j|f}|jd|_|S(NiiRytfirsttseconds[%d]i(R5RR}R9RR:tpair(RtnRIRv((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRs   (RRRR6R(((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR|s  cCs||_||_dS(N(RR(RRR((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRs cCs d|jtt|jfS(Ns%s with %d elements(RRcRlR(R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR(s cCsIt|jjd}t|d}|j}|jt|j|S(Nt _Rep_typet _Link_type(RRRR R|Rl(Rtrep_typeRq((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR@s cCsdS(Ntmap((R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR_s( RRRRR|RR(R@R_(((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR{s    t StdSetPrintercBs?eZdZdefdYZdZdZdZRS(s!Print a std::set or std::multisetR|cBs#eZdZdZdZRS(cCs||_d|_||_dS(Ni(R}R5R(RR}R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRs  cCs|S(N((R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR6scCsRt|j}|j|jjd}d|j|f}|jd|_|S(NRys[%d]i(RR}R9RR:R5(RRIRv((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRs (RRRR6R(((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR|s  cCs||_||_dS(N(RR(RRR((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRs cCs d|jtt|jfS(Ns%s with %d elements(RRcRlR(R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR(s cCsIt|jjd}t|d}|j}|jt|j|S(NRR(RRRR R|Rl(RRRq((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR@s (RRRRR|RR(R@(((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRs   tStdBitsetPrintercBs)eZdZdZdZdZRS(sPrint a std::bitsetcCs||_||_dS(N(RR(RRR((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRs cCs d|jS(Ns%s(R(R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR(sc Cs|jd}|j}|jtjkr:|jj}n|g}|j}|j|}g}d}x||kr||}d}xZ|dkr|d@dkr|jd||d|dfn|d}|d?}qW|d}qhW|S(Nt_M_wiis[%d]i(RRRSR tTYPE_CODE_ARRAYR,RMtappend( RtwordstwtypettsizetnwordsRvtbytetwtbit((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR@s&      & (RRRRR(R@(((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRs  tStdDequePrintercBsHeZdZdefdYZdZdZdZdZRS(sPrint a std::dequeR|cBs#eZdZdZdZRS(cCs:||_||_||_||_||_d|_dS(Ni(RqtpRZtlastt buffer_sizeR5(RRqRORZRR((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR:s      cCs|S(N((R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR6BscCs|j|jkrtnd|j|jjf}|jd|_|jd|_|j|jkr|jd|_|jd|_|j|j|_n|S(Ns[%d]ii(RRR8R5R:RZRqR(RRv((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyREs (RRRR6R(((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR|9s  cCsb||_||_|jjd|_|jj}|dkrUtd||_n d|_dS(Niii(RRRRRtelttypeRMRYR(RRRRp((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRWs    cCs|jdd}|jdd}|d|dd}|d|d}|d|d}|j|||}d |jt|fS( NR=RVRWR>it_M_lastt_M_curt_M_firsts%s with %d elements(RRRtlong(RRORZtdelta_ntdelta_stdelta_eRp((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR(ascCsN|jdd}|jdd}|j|d|d|d|d|jS(NR=RVRWR>RR(RR|R(RRORZ((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR@mscCsdS(NR^((R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR_ss( RRRRR|RR(R@R_(((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR6s  tStdDequeIteratorPrintercBs eZdZdZdZRS(sPrint std::deque::iteratorcCs ||_dS(N(R(RRR((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRyscCs|jdjS(NR(RR:(R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR(|s(RRRRR((((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRvs tStdStringPrintercBs)eZdZdZdZdZRS(s&Print a std::basic_string of some kindcCs ||_dS(N(R(RRR((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRscCs|jj}|jtjkr-|j}n|jdd}|jj}tjt |dj }|j |d}|j d}t |dr|jd|S|jd|S(Nt _M_dataplusRFs::_Repit _M_lengtht lazy_stringR\(RRRSR t TYPE_CODE_REFR,t unqualifiedR RR R?R9R:RjRtstring(RRtptrtrealtypetreptypetheaderRc((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR(s cCsdS(NR((R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR_s(RRRRR(R_(((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRs  tTr1HashtableIteratorcBs#eZdZdZdZRS(cCs4|ddd|_t|jdj|_dS(Nt _M_bbeginR>t_M_nxtt __node_type(RqRRR?t node_type(Rthash((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRscCs|S(N((R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR6scCsT|jdkrtn|jj|j}|jd}|jd|_|S(Nit_M_vR(RqR8R9RR:(RRqRv((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRs  (RRRR6R(((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRs  tTr1UnorderedSetPrintercBsAeZdZdZdZdZedZdZRS(sPrint a tr1::unordered_setcCs||_||_dS(N(RR(RRR((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRs cCs$|jjdr|jS|jdS(Nsstd::tr1t_M_h(Rt startswithR(R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyt hashtablescCsd|j|jdfS(Ns%s with %d elementst_M_element_count(RR(R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR(scCsd|S(Ns[%d]((ti((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyt format_countscCs1t|jtj}t|t|jS(N(RRt itertoolsR5RRR(Rtcounter((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR@s( RRRRRR(t staticmethodRR@(((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRs    tTr1UnorderedMapPrintercBsheZdZdZdZdZedZedZedZ dZ dZ RS( sPrint a tr1::unordered_mapcCs||_||_dS(N(RR(RRR((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRs cCs$|jjdr|jS|jdS(Nsstd::tr1R(RRR(R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRscCsd|j|jdfS(Ns%s with %d elementsR(RR(R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR(sccs+x$|D]}x|D] }|VqWqWdS(N((tlistR;R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pytflattens  cCs|d|dfS(NR~R((R;((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyt format_onescCsd|S(Ns[%d]((R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRscCsLt|jtj}|jt|jt|j}t||S(N( RRRR5RRRRR(RRtdata((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR@s'cCsdS(NR((R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR_s( RRRRRR(RRRRR@R_(((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRs    tStdForwardListPrintercBs?eZdZdefdYZdZdZdZRS(sPrint a std::forward_listR/cBs#eZdZdZdZRS(cCs#||_|d|_d|_dS(NR0i(R1R2R5(RR1R4((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRs  cCs|S(N((R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR6scCs|jdkrtn|jj|jj}|d|_|j}|jd|_|dj}|j|jjdj }d||jfS(NiR0it _M_storages[%d]( R2R8R9R1R:R5R3RRRR?(RR;R5tvalptr((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRs    !(RRRR6R(((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR/s  cCs||_||_dS(N(RR(RRR((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRs cCsBt|jjd}|jj}|j||jddS(NR<R=RC(RRRR R?R/(RR1((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR@scCs1|jddddkr&d|jSd|jS(NR=RCR0isempty %ss%s(RR(R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR(s (RRRRR/RR@R((((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRs   t RxPrintercBseZdZdZRS(cCs2tt|j||_||_t|_dS(N(tsuperRRRtfunctionR tenabled(RRR((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRs  cCsY|js dS|jjtjkrFttjdrF|j}qFn|j |j |S(Ntreferenced_value( RRkRRSR RRjtValueRRR(Rtvalue((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pytinvokes  (RRRR(((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRs tPrintercBsDeZdZdZdZdZedZdZRS(cCsMtt|j||_g|_i|_t|_tj d|_ dS(Ns^([a-zA-Z0-9_:]+)<.*>$( RRRRt subprinterstlookupR Rtretcompilet compiled_rx(RR((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR$s     cCsY|jj|ds)td|nt||}|jj|||j|s0libstdc++ programming error: "%s" does not match(RtmatchRRRRR(RRRtprinter((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pytadd,s cCs0|j||||j|d||dS(Ns__7::(R(RR2RR((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyt add_version6scCs.|j||||j|d||dS(Ns __cxx1998::(R(RR2RR((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyt add_container;scCs:|jtjkr!|j}n|jj}|jS(N(RSR RR,RR ttag(R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pytget_basic_type?scCs|j|j}|sdS|jj|}|s8dS|jd}|jjtjkrt tj dr|j }qn||j kr|j |j |SdS(NiR(RRRkRRtgroupRSR RRjRRRR(RRRRtbasename((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyt__call__Js( RRRRRRRRR(((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyR#s     tFilteringTypePrintercBs0eZdZdefdYZdZRS(cCs||_||_t|_dS(N(RRR R(RRR((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRds  t _recognizercBseZdZdZRS(cCs||_||_d|_dS(N(RRRkttype_obj(RRR((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRjs  cCs~|jdkrdS|jdkrd|j|jkr8dSytj|jj|_WqdqdXn|j|krz|jSdS(N(RRkRRR RRR (RR((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyt recognizeos(RRRR(((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRis cCs|j|j|jS(N(RRR(R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyt instantiates(RRRtobjectRR(((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyRcs cCs*t|d|}tjj||dS(Nsstd::(RR ttypestregister_type_printer(tobjRRR((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pytadd_one_type_printerscCsts dSxdFD]}t|d|dt|d|dt|d|dt|d |d t|d |d t|d |dt|d|dt|d|dt|d|dt|d|dt|d|dt|d|dt|d|dt|d|dt|d|d t|d!|d"t|d!|d#t|d$|d%t|d$|d&t|d'|d(t|d'|d)t|d*|d+t|d*|d,qWt|d-d.t|dd/t|dd0xdGD]}t|d7|qWt|d8d9t|d8d:t|d;d<t|d;d=t|d>d?t|d>d@t|dAdBt|dAdCt|dDdEdS(HNtRt basic_stringRt basic_iostiostbasic_streambuft streambuft basic_istreamtistreamt basic_ostreamtostreamtbasic_iostreamtiostreamtbasic_stringbuft stringbuftbasic_istringstreamt istringstreamtbasic_ostringstreamt ostringstreamtbasic_stringstreamt stringstreamt basic_filebuftfilebuftbasic_ifstreamtifstreamtbasic_ofstreamtofstreamt basic_fstreamtfstreamt basic_regextregext sub_matcht csub_matcht ssub_matcht match_resultstcmatchtsmatchtregex_iteratortcregex_iteratortsregex_iteratortregex_token_iteratortcregex_token_iteratortsregex_token_iteratortfpost streampost u16stringt u32stringt nanosecondst microsecondst millisecondstsecondstminutesthourstdurationtlinear_congruential_enginet minstd_rand0t minstd_randtmersenne_twister_enginetmt19937t mt19937_64tsubtract_with_carry_enginet ranlux24_baset ranlux48_basetdiscard_block_enginetranlux24tranlux48tshuffle_order_enginetknuth_b(RR(RRRRRR(t_use_type_printingR(Rtpfxtdur((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pytregister_type_printerss\           cCsOtrtjj|tn%|dkr1t}n|jjtt|dS(s4Register libstdc++ pretty-printers with objfile Obj.N( t _use_gdb_ppR tprintingtregister_pretty_printertlibstdcxx_printerRktpretty_printersRR+(R((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pytregister_libstdcxx_printerss   cCs9tdad}d|d}tjddttjddttjddttjdd ttjdd ttjdd ttjdd t tjdd t tjddt tjddt tjddt tjddt tjddt tjddt tjdttjdttjdttjdttjdttjdt tjdt tjdt tjdt tjdt tjdt tjdt tjdd ttjdd!ttjdd"ttjdd#ttjdd$ttjdd%ttjdd&ttjd'd ttjd'd!ttjd'd"ttjd'd#ttjd'd$ttjd'd%ttjd(ttjd)ttjd*ttjd+ttjd,ttjd-d.ttr5tjdd/ttjdd0ttjdd1ttjdd2ttjdd3ttjdd4ttjd-d5ttjd-d6ttjd7ttjd8ttjd9ttjd:ttjd;tndS(<Ns libstdc++-v6s(__7::)?s (__cxx1998::s)?sstd::RtbitsettdequeRRtmultimaptmultisettpriority_queuetqueuettupletsettstackt unique_ptrtvectorsstd::__debug::bitsetsstd::__debug::dequesstd::__debug::listsstd::__debug::mapsstd::__debug::multimapsstd::__debug::multisetsstd::__debug::priority_queuesstd::__debug::queuesstd::__debug::setsstd::__debug::stacksstd::__debug::unique_ptrsstd::__debug::vectort shared_ptrtweak_ptrt unordered_mapt unordered_settunordered_multimaptunordered_multisett forward_lists std::tr1::sstd::__debug::unordered_mapsstd::__debug::unordered_sets std::__debug::unordered_multimaps std::__debug::unordered_multisetsstd::__debug::forward_lists __gnu_cxx::tslistt_List_iteratort_List_const_iteratort_Rb_tree_iteratort_Rb_tree_const_iteratort_Deque_iteratort_Deque_const_iteratort__normal_iteratort_Slist_iterators__gnu_debug::_Safe_iteratorsstd::__norm::_List_iterators!std::__norm::_List_const_iterators"std::__norm::_Deque_const_iteratorsstd::__norm::_Deque_iterator(RR/RRRRRR.R{RRfRbR)RERRRRRRBR RARxRR`RDRz(tverst container((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pytbuild_libstdcxx_dictionarys                              (((((((((((((((((((((((7R RRtsyst version_infoRRRRtzipRRYRR R,t gdb.printingt ImportErrortFalseR(t gdb.typesRjRRRR)R.RARBRDRER`RbRfRlRxRzR{RRRRRRRRRRRRkR/RRR+R1RO(((s4/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pytsn            $ " L <%  *$(@ '(>  8  }PK!2python/libstdcxx/__init__.pynu[PK!OʈMpython/libstdcxx/__init__.pycnu[PK!Oʈ"python/libstdcxx/__init__.pyonu[PK!~ python/libstdcxx/v6/printers.pycnu[PK!2Dpython/libstdcxx/v6/__init__.pynu[PK! python/libstdcxx/v6/__init__.pycnu[PK! opython/libstdcxx/v6/__init__.pyonu[PK!QؐJpython/libstdcxx/v6/printers.pynu[PK!~ Fpython/libstdcxx/v6/printers.pyonu[PK Th