\x89\x50\x4E\x47\x0D\x0A\x1A\x0A PNG  \x89\x50\x4E\x47\x0D\x0A\x1A\x0A 3 `d>ejj Z%Gd?d@d@e%Z&GdAdBdBe%Z'GdCdDdDe%Z(GdEdFdFe%Z)GdGdHdHe%Z*GdIdJdJe%Z+GdKdLdLejjZ,GdMdNdNejj Z-GdOdPdPe-Z.GdQdRdRe-Z/GdSdTdTejjZ0GdUdVdVejj Z1GdWdXdXe1Z2GdYdZdZe1Z3Gd[d\d\ejjZ4Gd]d^d^ejj Z5Gd_d`d`e5Z6Gdadbdbe5Z7Gdcddddejj Z8Gdedfdfe8Z9GdgdhdhejjZ:didjZ;dS)kNz libstdc++::cCs tjdS)Nbool)gdb lookup_typerr0/usr/share/gcc-8/python/libstdcxx/v6/xmethods.py get_bool_typesrcCs tjdS)Nz std::size_t)rrrrrrget_std_size_typesrc@seZdZddZdS)LibStdCxxXMethodcCstjjj||||_dS)N)rxmethodXMethod__init__ worker_class)selfnamer rrrr szLibStdCxxXMethod.__init__N)__name__ __module__ __qualname__r rrrrr sr c@seZdZddZddZdS)ArrayWorkerBasecCs||_||_dS)N) _val_type_size)rval_typesizerrrr &szArrayWorkerBase.__init__cCstjd}|j|jjjS)Nz (void *) 0)rZparse_and_evalcastrpointer dereference)rZnullptrrrr null_value*s zArrayWorkerBase.null_valueN)rrrr rrrrrr%src@s,eZdZddZddZddZddZd S) ArraySizeWorkercCstj|||dS)N)rr )rrrrrrr /szArraySizeWorker.__init__cCsdS)Nr)rrrr get_arg_types2szArraySizeWorker.get_arg_typescCstS)N)r)robjrrrget_result_type5szArraySizeWorker.get_result_typecCs|jS)N)r)rrrrr__call__8szArraySizeWorker.__call__N)rrrr rrr rrrrr.src@s,eZdZddZddZddZddZd S) ArrayEmptyWorkercCstj|||dS)N)rr )rrrrrrr <szArrayEmptyWorker.__init__cCsdS)Nr)rrrrr?szArrayEmptyWorker.get_arg_typescCstS)N)r)rrrrrrBsz ArrayEmptyWorker.get_result_typecCst|jdkS)Nr)intr)rrrrrr EszArrayEmptyWorker.__call__N)rrrr rrr rrrrr!;sr!c@s,eZdZddZddZddZddZd S) ArrayFrontWorkercCstj|||dS)N)rr )rrrrrrr IszArrayFrontWorker.__init__cCsdS)Nr)rrrrrLszArrayFrontWorker.get_arg_typescCs|jS)N)r)rrrrrrOsz ArrayFrontWorker.get_result_typecCs&t|jdkr|ddS|jSdS)Nr_M_elems)r"rr)rrrrrr Rs zArrayFrontWorker.__call__N)rrrr rrr rrrrr#Hsr#c@s,eZdZddZddZddZddZd S) ArrayBackWorkercCstj|||dS)N)rr )rrrrrrr YszArrayBackWorker.__init__cCsdS)Nr)rrrrr\szArrayBackWorker.get_arg_typescCs|jS)N)r)rrrrrr_szArrayBackWorker.get_result_typecCs,t|jdkr |d|jdS|jSdS)Nrr$)r"rr)rrrrrr bszArrayBackWorker.__call__N)rrrr rrr rrrrr%Xsr%c@s,eZdZddZddZddZddZd S) ArrayAtWorkercCstj|||dS)N)rr )rrrrrrr iszArrayAtWorker.__init__cCstS)N)r)rrrrrlszArrayAtWorker.get_arg_typescCs|jS)N)r)rrindexrrrroszArrayAtWorker.get_result_typecCs4t|t|jkr(tdt||jf|d|S)Nz%Array index "%d" should not be >= %d.r$)r"r IndexError)rrr(rrrr rszArrayAtWorker.__call__N)rrrr rrr rrrrr'hsr'c@s,eZdZddZddZddZddZd S) ArraySubscriptWorkercCstj|||dS)N)rr )rrrrrrr yszArraySubscriptWorker.__init__cCstS)N)r)rrrrr|sz"ArraySubscriptWorker.get_arg_typescCs|jS)N)r)rrr(rrrrsz$ArraySubscriptWorker.get_result_typecCs&t|jdkr|d|S|jSdS)Nrr$)r"rr)rrr(rrrr s zArraySubscriptWorker.__call__N)rrrr rrr rrrrr*xsr*c@seZdZddZddZdS)ArrayMethodsMatchercsftjjjtdtdttdttdttdt tdt tdt d_ fd d j D_ dS) NZarrayremptyfrontbackatz operator[])rr,r-r.r/z operator[]csg|]}j|qSr) _method_dict).0m)rrr sz0ArrayMethodsMatcher.__init__..)rr XMethodMatcherr matcher_name_prefixr rr!r#r%r'r*r0methods)rr)rrr s  zArrayMethodsMatcher.__init__c Csbtjd|jsdS|jj|}|dks.|j r2dSy|jd}|jd}Wn dS|j||S)Nz^std::(__\d+::)?array<.*>$rr&)rematchtagr0getenabledtemplate_argumentr )r class_type method_namemethodZ value_typerrrrr8s  zArrayMethodsMatcher.matchN)rrrr r8rrrrr+s r+c@s$eZdZddZddZddZdS)DequeWorkerBasecCs||_d|jpd|_dS)Nir&)rsizeof_bufsize)rrrrrr szDequeWorkerBase.__init__cCsV|ddd}|ddd}|ddd}|ddd}|||j||S)N_M_impl_M_start_M_node _M_finish_M_cur_M_first)rB)rr first_nodeZ last_nodeZcurfirstrrrrs zDequeWorkerBase.sizecCs4|ddd}|t||j}|d||jS)NrCrDrEr)r"rB)rridxrIZ index_noderrrr(szDequeWorkerBase.indexN)rrrr rr(rrrrr@sr@c@s$eZdZddZddZddZdS)DequeEmptyWorkercCsdS)Nr)rrrrrszDequeEmptyWorker.get_arg_typescCstS)N)r)rrrrrrsz DequeEmptyWorker.get_result_typecCs |ddd|dddkS)NrCrDrGrFr)rrrrrr szDequeEmptyWorker.__call__N)rrrrrr rrrrrLsrLc@s$eZdZddZddZddZdS)DequeSizeWorkercCsdS)Nr)rrrrrszDequeSizeWorker.get_arg_typescCstS)N)r)rrrrrrszDequeSizeWorker.get_result_typecCs |j|S)N)r)rrrrrr szDequeSizeWorker.__call__N)rrrrrr rrrrrMsrMc@s$eZdZddZddZddZdS)DequeFrontWorkercCsdS)Nr)rrrrrszDequeFrontWorker.get_arg_typescCs|jS)N)r)rrrrrrsz DequeFrontWorker.get_result_typecCs|ddddS)NrCrDrGrr)rrrrrr szDequeFrontWorker.__call__N)rrrrrr rrrrrNsrNc@s$eZdZddZddZddZdS)DequeBackWorkercCsdS)Nr)rrrrrszDequeBackWorker.get_arg_typescCs|jS)N)r)rrrrrrszDequeBackWorker.get_result_typecCs^|ddd|dddkrF|dddd}|d|jdS|ddddSdS) NrCrFrGrHrEr&r)rB)rr prev_noderrrr s zDequeBackWorker.__call__N)rrrrrr rrrrrOsrOc@s$eZdZddZddZddZdS)DequeSubscriptWorkercCstS)N)r)rrrrrsz"DequeSubscriptWorker.get_arg_typescCs|jS)N)r)rr subscriptrrrrsz$DequeSubscriptWorker.get_result_typecCs |j||S)N)r()rrrSrrrr szDequeSubscriptWorker.__call__N)rrrrrr rrrrrRsrRc@s$eZdZddZddZddZdS) DequeAtWorkercCstS)N)r)rrrrrszDequeAtWorker.get_arg_typescCs|jS)N)r)rrr(rrrrszDequeAtWorker.get_result_typecCs@t|j|}t||kr0tdt||fn |j||SdS)Nz%Deque index "%d" should not be >= %d.)r"rr)r()rrr(Z deque_sizerrrr s  zDequeAtWorker.__call__N)rrrrrr rrrrrTsrTc@seZdZddZddZdS)DequeMethodsMatchercsftjjjtdtdttdttdttdt tdt tdt d_ fd d j D_ dS) Ndequer,rr-r.z operator[]r/)r,rr-r.z operator[]r/csg|]}j|qSr)r0)r1r2)rrrr3 sz0DequeMethodsMatcher.__init__..)rr r4r r5r rLrMrNrOrRrTr0r6)rr)rrr s  zDequeMethodsMatcher.__init__cCsBtjd|jsdS|jj|}|dks.|j r2dS|j|jdS)Nz^std::(__\d+::)?deque<.*>$r)r7r8r9r0r:r;r r<)rr=r>r?rrrr8 s  zDequeMethodsMatcher.matchN)rrrr r8rrrrrUs rUc@seZdZddZddZdS)ForwardListWorkerBasecCs||_||_dS)N)r _node_type)rr node_typerrrr szForwardListWorkerBase.__init__cCsdS)Nr)rrrrrsz#ForwardListWorkerBase.get_arg_typesN)rrrr rrrrrrWsrWc@seZdZddZddZdS)ForwardListEmptyWorkercCstS)N)r)rrrrrrsz&ForwardListEmptyWorker.get_result_typecCs|ddddkS)NrC_M_head_M_nextrr)rrrrrr !szForwardListEmptyWorker.__call__N)rrrrr rrrrrZsrZc@seZdZddZddZdS)ForwardListFrontWorkercCs|jS)N)r)rrrrrr%sz&ForwardListFrontWorker.get_result_typecCs:|dddj|j}|ddj}|j|jjjS)NrCr[r\ _M_storage)rrXaddressrrr)rrnodeZ val_addressrrrr (szForwardListFrontWorker.__call__N)rrrrr rrrrr]$sr]c@seZdZddZddZdS)ForwardListMethodsMatchercsJtd}tjjj|tdttdtd_fddjD_ dS)NZ forward_listr,r-)r,r-csg|]}j|qSr)r0)r1r2)rrrr35sz6ForwardListMethodsMatcher.__init__..) r5rr r4r r rZr]r0r6)rZ matcher_namer)rrr .s z"ForwardListMethodsMatcher.__init__cCs^tjd|jsdS|jj|}|dks.|j r2dS|jd}tjt |dj }|j ||S)Nz!^std::(__\d+::)?forward_list<.*>$rz::_Node) r7r8r9r0r:r;r<rrstrrr )rr=r>r?rrYrrrr87s  zForwardListMethodsMatcher.matchN)rrrr r8rrrrra-s rac@s$eZdZddZddZddZdS)ListWorkerBasecCs||_||_dS)N)rrX)rrrYrrrr DszListWorkerBase.__init__cCsdS)Nr)rrrrrHszListWorkerBase.get_arg_typescCsB|j}|jjdjdkr$|dS|dj}|j|jjjS)Nr&Z_M_datar^)rtypefieldsrr_rrr)rr`Zaddrrrrget_value_from_nodeKs  z"ListWorkerBase.get_value_from_nodeN)rrrr rrfrrrrrcCsrcc@seZdZddZddZdS)ListEmptyWorkercCstS)N)r)rrrrrrUszListEmptyWorker.get_result_typecCs&|dd}|d|jkrdSdSdS)NrCrEr\TF)r_)rrZ base_noderrrr Xs zListEmptyWorker.__call__N)rrrrr rrrrrgTsrgc@seZdZddZddZdS)ListSizeWorkercCstS)N)r)rrrrrr`szListSizeWorker.get_result_typecCsD|ddd}|ddj}d}x||kr>|d}|d7}q$W|S)NrCrEr\rr&)r_)rrZ begin_nodeZend_noderrrrr cs  zListSizeWorker.__call__N)rrrrr rrrrrh_srhc@seZdZddZddZdS)ListFrontWorkercCs|jS)N)r)rrrrrrmszListFrontWorker.get_result_typecCs"|dddj|j}|j|S)NrCrEr\)rrXrf)rrr`rrrr pszListFrontWorker.__call__N)rrrrr rrrrrilsric@seZdZddZddZdS)ListBackWorkercCs|jS)N)r)rrrrrruszListBackWorker.get_result_typecCs"|dddj|j}|j|S)NrCrEZ_M_prev)rrXrf)rrrQrrrr xszListBackWorker.__call__N)rrrrr rrrrrjtsrjc@seZdZddZddZdS)ListMethodsMatchercsVtjjjtdtdttdttdttdt d_ fddj D_ dS) Nlistr,rr-r.)r,rr-r.csg|]}j|qSr)r0)r1r2)rrrr3sz/ListMethodsMatcher.__init__..) rr r4r r5r rgrhrirjr0r6)rr)rrr }s  zListMethodsMatcher.__init__cCs^tjd|jsdS|jj|}|dks.|j r2dS|jd}tjt |dj }|j ||S)Nz%^std::(__\d+::)?(__cxx11::)?list<.*>$rz::_Node) r7r8r9r0r:r;r<rrrbrr )rr=r>r?rrYrrrr8s  zListMethodsMatcher.matchN)rrrr r8rrrrrk|s rkc@s$eZdZddZddZddZdS)VectorWorkerBasecCs ||_dS)N)r)rrrrrr szVectorWorkerBase.__init__cCsz|jjtjkr^|ddd}|ddd}|ddd}|jjjd}||||S|dd|ddSdS)NrCrD_M_prFZ _M_offset)rcoderTYPE_CODE_BOOLrrdrA)rrstartZfinishZ finish_offsetbit_sizerrrrszVectorWorkerBase.sizecCsj|jjtjkrV|ddd}|jjjd}|||}||}|jd|>@dkS|dd|SdS)NrCrDrnror&r)rrprrqrrdrA)rrr(rrrsZvalpoffsetrrrr:s zVectorWorkerBase.getN)rrrr rr:rrrrrms rmc@s$eZdZddZddZddZdS)VectorEmptyWorkercCsdS)Nr)rrrrrszVectorEmptyWorker.get_arg_typescCstS)N)r)rrrrrrsz!VectorEmptyWorker.get_result_typecCst|j|dkS)Nr)r"r)rrrrrr szVectorEmptyWorker.__call__N)rrrrrr rrrrrusruc@s$eZdZddZddZddZdS)VectorSizeWorkercCsdS)Nr)rrrrrszVectorSizeWorker.get_arg_typescCstS)N)r)rrrrrrsz VectorSizeWorker.get_result_typecCs |j|S)N)r)rrrrrr szVectorSizeWorker.__call__N)rrrrrr rrrrrvsrvc@s$eZdZddZddZddZdS)VectorFrontWorkercCsdS)Nr)rrrrrszVectorFrontWorker.get_arg_typescCs|jS)N)r)rrrrrrsz!VectorFrontWorker.get_result_typecCs |j|dS)Nr)r:)rrrrrr szVectorFrontWorker.__call__N)rrrrrr rrrrrwsrwc@s$eZdZddZddZddZdS)VectorBackWorkercCsdS)Nr)rrrrrszVectorBackWorker.get_arg_typescCs|jS)N)r)rrrrrrsz VectorBackWorker.get_result_typecCs|j|t|j|dS)Nr&)r:r"r)rrrrrr szVectorBackWorker.__call__N)rrrrrr rrrrrxsrxc@s$eZdZddZddZddZdS)VectorAtWorkercCstS)N)r)rrrrrszVectorAtWorker.get_arg_typescCs|jS)N)r)rrr(rrrrszVectorAtWorker.get_result_typecCs>t|j|}t||kr.tdt||f|j|t|S)Nz&Vector index "%d" should not be >= %d.)r"rr)r:)rrr(rrrrr s  zVectorAtWorker.__call__N)rrrrrr rrrrrysryc@s$eZdZddZddZddZdS)VectorSubscriptWorkercCstS)N)r)rrrrrsz#VectorSubscriptWorker.get_arg_typescCs|jS)N)r)rrrSrrrrsz%VectorSubscriptWorker.get_result_typecCs|j|t|S)N)r:r")rrrSrrrr szVectorSubscriptWorker.__call__N)rrrrrr rrrrrzsrzc@seZdZddZddZdS)VectorMethodsMatchercsftjjjtdtdttdttdttdt tdt tdt d_ fd d j D_ dS) NZvectorrr,r-r.r/z operator[])rr,r-r.r/z operator[]csg|]}j|qSr)r0)r1r2)rrrr3sz1VectorMethodsMatcher.__init__..)rr r4r r5r rvrurwrxryrzr0r6)rr)rrr s   zVectorMethodsMatcher.__init__cCsBtjd|jsdS|jj|}|dks.|j r2dS|j|jdS)Nz^std::(__\d+::)?vector<.*>$r)r7r8r9r0r:r;r r<)rr=r>r?rrrr8s  zVectorMethodsMatcher.matchN)rrrr r8rrrrr{sr{c@s$eZdZddZddZddZdS)AssociativeContainerWorkerBasecCs ||_dS)N) _unordered)r unorderedrrrr sz'AssociativeContainerWorkerBase.__init__cCs&|jr|ddS|dddSdS)NZ_M_hZ_M_element_count_M_trCZ _M_node_count)r})rrrrr node_count s z)AssociativeContainerWorkerBase.node_countcCsdS)Nr)rrrrrsz,AssociativeContainerWorkerBase.get_arg_typesN)rrrr rrrrrrr|sr|c@seZdZddZddZdS)AssociativeContainerEmptyWorkercCstS)N)r)rrrrrrsz/AssociativeContainerEmptyWorker.get_result_typecCst|j|dkS)Nr)r"r)rrrrrr sz(AssociativeContainerEmptyWorker.__call__N)rrrrr rrrrrsrc@seZdZddZddZdS)AssociativeContainerSizeWorkercCstS)N)r)rrrrrrsz.AssociativeContainerSizeWorker.get_result_typecCs |j|S)N)r)rrrrrr sz'AssociativeContainerSizeWorker.__call__N)rrrrr rrrrrsrc@seZdZddZddZdS)"AssociativeContainerMethodsMatchercsLtjjjt||_tdttdtd_ fddj D_ dS)Nrr,)rr,csg|]}j|qSr)r0)r1r2)rrrr3*sz?AssociativeContainerMethodsMatcher.__init__..) rr r4r r5_namer rrr0r6)rrr)rrr !s   z+AssociativeContainerMethodsMatcher.__init__cCsLtjd|j|jsdS|jj|}|dks4|j r8dSd|jk}|j|S)Nz^std::(__\d+::)?%s<.*>$r~)r7r8rr9r0r:r;r )rr=r>r?r~rrrr8,s  z(AssociativeContainerMethodsMatcher.matchN)rrrr r8rrrrr s rc@s8eZdZdZddZddZddZdd Zd d Zd S) UniquePtrGetWorkerzIImplements std::unique_ptr::get() and std::unique_ptr::operator->()cCs*|jtjk|_|jr |j|_n||_dS)N)rprTYPE_CODE_ARRAY _is_arraytarget _elem_type)r elem_typerrrr :s zUniquePtrGetWorker.__init__cCsdS)Nr)rrrrrAsz UniquePtrGetWorker.get_arg_typescCs |jjS)N)rr)rrrrrrDsz"UniquePtrGetWorker.get_result_typecCs|dkp|j S)z/operator-> is not supported for unique_ptrr:)r)rr>rrr _supportsGszUniquePtrGetWorker._supportscCsN|jjjdjj}tjd|r2|dddStjd|rJ|ddSdS)Nrz$^std::(__\d+::)?__uniq_ptr_impl<.*>$rZ _M_head_implz^std::(__\d+::)?tuple<.*>$)rrdrer9r7r8)rrZ impl_typerrrr Ks    zUniquePtrGetWorker.__call__N) rrr__doc__r rrrr rrrrr7s rc@s0eZdZdZddZddZddZdd Zd S) UniquePtrDerefWorkerz*Implements std::unique_ptr::operator*()cCstj||dS)N)rr )rrrrrr VszUniquePtrDerefWorker.__init__cCs|jS)N)r)rrrrrrYsz$UniquePtrDerefWorker.get_result_typecCs|j S)z.operator* is not supported for unique_ptr)r)rr>rrrr\szUniquePtrDerefWorker._supportscCstj||jS)N)rr r)rrrrrr `szUniquePtrDerefWorker.__call__N)rrrrr rrr rrrrrSs rc@s8eZdZdZddZddZddZdd Zd d Zd S) UniquePtrSubscriptWorkerz1Implements std::unique_ptr::operator[](size_t)cCstj||dS)N)rr )rrrrrr fsz!UniquePtrSubscriptWorker.__init__cCstS)N)r)rrrrrisz&UniquePtrSubscriptWorker.get_arg_typescCs|jS)N)r)rrr(rrrrlsz(UniquePtrSubscriptWorker.get_result_typecCs|jS)z0operator[] is only supported for unique_ptr)r)rr>rrrrosz"UniquePtrSubscriptWorker._supportscCstj|||S)N)rr )rrr(rrrr ssz!UniquePtrSubscriptWorker.__call__N) rrrrr rrrr rrrrrcs rc@seZdZddZddZdS)UniquePtrMethodsMatchercsVtjjjtdtdttdttdttdtd_ fddj D_ dS) NZ unique_ptrr:z operator->z operator*z operator[])r:z operator->z operator*z operator[]csg|]}j|qSr)r0)r1r2)rrrr3sz4UniquePtrMethodsMatcher.__init__..) rr r4r r5r rrrr0r6)rr)rrr ws  z UniquePtrMethodsMatcher.__init__cCsTtjd|jsdS|jj|}|dks.|j r2dS|j|jd}|j|rP|SdS)Nz^std::(__\d+::)?unique_ptr<.*>$r) r7r8r9r0r:r;r r<r)rr=r>r?workerrrrr8s  zUniquePtrMethodsMatcher.matchN)rrrr r8rrrrrvs rc@s8eZdZdZddZddZddZdd Zd d Zd S) SharedPtrGetWorkerzIImplements std::shared_ptr::get() and std::shared_ptr::operator->()cCs*|jtjk|_|jr |j|_n||_dS)N)rprrrrr)rrrrrr s zSharedPtrGetWorker.__init__cCsdS)Nr)rrrrrsz SharedPtrGetWorker.get_arg_typescCs |jjS)N)rr)rrrrrrsz"SharedPtrGetWorker.get_result_typecCs|dkp|j S)z/operator-> is not supported for shared_ptrr:)r)rr>rrrrszSharedPtrGetWorker._supportscCs|dS)NZ_M_ptrr)rrrrrr szSharedPtrGetWorker.__call__N) rrrrr rrrr rrrrrs rc@s0eZdZdZddZddZddZdd Zd S) SharedPtrDerefWorkerz*Implements std::shared_ptr::operator*()cCstj||dS)N)rr )rrrrrr szSharedPtrDerefWorker.__init__cCs|jS)N)r)rrrrrrsz$SharedPtrDerefWorker.get_result_typecCs|j S)z.operator* is not supported for shared_ptr)r)rr>rrrrszSharedPtrDerefWorker._supportscCstj||jS)N)rr r)rrrrrr szSharedPtrDerefWorker.__call__N)rrrrr rrr rrrrrs rc@s8eZdZdZddZddZddZdd Zd d Zd S) SharedPtrSubscriptWorkerz1Implements std::shared_ptr::operator[](size_t)cCstj||dS)N)rr )rrrrrr sz!SharedPtrSubscriptWorker.__init__cCstS)N)r)rrrrrsz&SharedPtrSubscriptWorker.get_arg_typescCs|jS)N)r)rrr(rrrrsz(SharedPtrSubscriptWorker.get_result_typecCs|jS)z0operator[] is only supported for shared_ptr)r)rr>rrrrsz"SharedPtrSubscriptWorker._supportscCsZtjdt|j}|rJ|t|jdkrJtd|jt|t|jdftj|||S)Nz .*\[(\d+)]$r&z.shared_ptr<%s> index "%d" should not be >= %d.) r7r8rbrr"groupr)rr )rrr(r2rrrr s z!SharedPtrSubscriptWorker.__call__N) rrrrr rrrr rrrrrs rc@s0eZdZdZddZddZddZdd Zd S) SharedPtrUseCountWorkerz*Implements std::shared_ptr::use_count()cCstj||dS)N)rr )rrrrrr sz SharedPtrUseCountWorker.__init__cCsdS)Nr)rrrrrsz%SharedPtrUseCountWorker.get_arg_typescCs tjdS)NZlong)rr)rrrrrrsz'SharedPtrUseCountWorker.get_result_typecCs|dd}|r|dSdS)NZ _M_refcountZ_M_piZ _M_use_countrr)rrZ refcountsrrrr s z SharedPtrUseCountWorker.__call__N)rrrrr rrr rrrrrs rc@s(eZdZdZddZddZddZdS) SharedPtrUniqueWorkerz'Implements std::shared_ptr::unique()cCstj||dS)N)rr )rrrrrr szSharedPtrUniqueWorker.__init__cCs tjdS)Nr)rr)rrrrrrsz%SharedPtrUniqueWorker.get_result_typecCstj||dkS)Nr&)rr )rrrrrr szSharedPtrUniqueWorker.__call__N)rrrrr rr rrrrrsrc@seZdZddZddZdS)SharedPtrMethodsMatchercsftjjjtdtdttdttdttdttdt tdt d_ fd d j D_ dS) NZ shared_ptrr:z operator->z operator*z operator[] use_countunique)r:z operator->z operator*z operator[]rrcsg|]}j|qSr)r0)r1r2)rrrr3sz4SharedPtrMethodsMatcher.__init__..) rr r4r r5r rrrrrr0r6)rr)rrr s  z SharedPtrMethodsMatcher.__init__cCsTtjd|jsdS|jj|}|dks.|j r2dS|j|jd}|j|rP|SdS)Nz^std::(__\d+::)?shared_ptr<.*>$r) r7r8r9r0r:r;r r<r)rr=r>r?rrrrr8s  zSharedPtrMethodsMatcher.matchN)rrrr r8rrrrrs rcCstjj|ttjj|ttjj|ttjj|ttjj|ttjj|tdtjj|tdtjj|tdtjj|tdtjj|tdtjj|tdtjj|tdtjj|tdtjj|t tjj|t dS) NsetmapZmultisetZmultimapZ unordered_setZ unordered_mapZunordered_multisetZunordered_multimap) rr Zregister_xmethod_matcherr+rarUrkr{rrr)Zlocusrrrregister_libstdcxx_xmethodss.        r)sn