%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /usr/share/gcc-11/python/libstdcxx/v6/__pycache__/
Upload File :
Create Path :
Current File : //usr/share/gcc-11/python/libstdcxx/v6/__pycache__/xmethods.cpython-39.pyc

a

W�hq�@s�ddlZddlZddlZdZdd�Zdd�ZdZdd	�ZGd
d�dejj	�Z
Gdd
�d
ejj�ZGdd�de�Z
Gdd�de�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�dejj�ZGdd�dejj�ZGdd�de�ZGd d!�d!e�ZGd"d#�d#e�ZGd$d%�d%e�ZGd&d'�d'e�ZGd(d)�d)e�ZGd*d+�d+ejj�ZGd,d-�d-ejj�ZGd.d/�d/e�ZGd0d1�d1e�ZGd2d3�d3ejj�Z Gd4d5�d5ejj�Z!Gd6d7�d7e!�Z"Gd8d9�d9e!�Z#Gd:d;�d;e!�Z$Gd<d=�d=e!�Z%Gd>d?�d?ejj�Z&Gd@dA�dAejj�Z'GdBdC�dCe'�Z(GdDdE�dEe'�Z)GdFdG�dGe'�Z*GdHdI�dIe'�Z+GdJdK�dKe'�Z,GdLdM�dMe'�Z-GdNdO�dOejj�Z.GdPdQ�dQejj�Z/GdRdS�dSe/�Z0GdTdU�dUe/�Z1GdVdW�dWejj�Z2GdXdY�dYejj�Z3GdZd[�d[e3�Z4Gd\d]�d]e3�Z5Gd^d_�d_ejj�Z6Gd`da�daejj�Z7Gdbdc�dce7�Z8Gddde�dee7�Z9Gdfdg�dgejj�Z:Gdhdi�die:�Z;Gdjdk�dkejj�Z<dldm�Z=dS)n�Nzlibstdc++::cCs
t�d�S�N�bool��gdb�lookup_type�rr�1/usr/share/gcc-11/python/libstdcxx/v6/xmethods.py�
get_bool_typesr	cCs
t�d�S)Nzstd::size_trrrrr�get_std_size_typesr
z__8::cCs2t|tj�r|j}dt|f}t�d||�duS)z�
    Test whether a type is a specialization of the named class template.
    The type can be specified as a string or a gdb.Type object.
    The template should be the name of a class template as a string,
    without any 'std' qualification.
    z(%s)?%sz^std::(__\d::)?%s<.*>$N)�
isinstancer�Type�tag�_versioned_namespace�re�match)�xZ
template_namerrr�is_specialization_of!src@seZdZdd�ZdS)�LibStdCxxXMethodcCstjj�||�||_dS�N)r�xmethod�XMethod�__init__�worker_class)�self�namerrrrr.szLibStdCxxXMethod.__init__N)�__name__�
__module__�__qualname__rrrrrr-src@seZdZdd�Zdd�ZdS)�ArrayWorkerBasecCs||_||_dSr)�	_val_type�_size�r�val_type�sizerrrr6szArrayWorkerBase.__init__cCst�d�}|�|j�����S)Nz
(void *) 0)rZparse_and_eval�castr�pointer�dereference)rZnullptrrrr�
null_value:s
zArrayWorkerBase.null_valueN)rrrrr'rrrrr5src@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�ArraySizeWorkercCst�|||�dSr�rrr!rrrr@szArraySizeWorker.__init__cCsdSrr�rrrr�
get_arg_typesCszArraySizeWorker.get_arg_typescCst�Sr�r
�r�objrrr�get_result_typeFszArraySizeWorker.get_result_typecCs|jSr)r r-rrr�__call__IszArraySizeWorker.__call__N�rrrrr+r/r0rrrrr(?sr(c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�ArrayEmptyWorkercCst�|||�dSrr)r!rrrrNszArrayEmptyWorker.__init__cCsdSrrr*rrrr+QszArrayEmptyWorker.get_arg_typescCst�Sr�r	r-rrrr/Tsz ArrayEmptyWorker.get_result_typecCst|j�dkS�Nr)�intr r-rrrr0WszArrayEmptyWorker.__call__Nr1rrrrr2Msr2c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�ArrayFrontWorkercCst�|||�dSrr)r!rrrr\szArrayFrontWorker.__init__cCsdSrrr*rrrr+_szArrayFrontWorker.get_arg_typescCs|jSr�rr-rrrr/bsz ArrayFrontWorker.get_result_typecCs&t|j�dkr|ddS|��SdS�Nr�_M_elems�r5r r'r-rrrr0eszArrayFrontWorker.__call__Nr1rrrrr6[sr6c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�ArrayBackWorkercCst�|||�dSrr)r!rrrrmszArrayBackWorker.__init__cCsdSrrr*rrrr+pszArrayBackWorker.get_arg_typescCs|jSrr7r-rrrr/sszArrayBackWorker.get_result_typecCs,t|j�dkr |d|jdS|��SdS)Nrr9�r:r-rrrr0vszArrayBackWorker.__call__Nr1rrrrr;lsr;c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�
ArrayAtWorkercCst�|||�dSrr)r!rrrr~szArrayAtWorker.__init__cCst�Srr,r*rrrr+�szArrayAtWorker.get_arg_typescCs|jSrr7�rr.�indexrrrr/�szArrayAtWorker.get_result_typecCs4t|�t|j�kr(tdt|�|jf��|d|S)Nz%Array index "%d" should not be >= %d.r9)r5r �
IndexErrorr>rrrr0�s
�zArrayAtWorker.__call__Nr1rrrrr=}sr=c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�ArraySubscriptWorkercCst�|||�dSrr)r!rrrr�szArraySubscriptWorker.__init__cCst�Srr,r*rrrr+�sz"ArraySubscriptWorker.get_arg_typescCs|jSrr7r>rrrr/�sz$ArraySubscriptWorker.get_result_typecCs&t|j�dkr|d|S|��SdSr8r:r>rrrr0�szArraySubscriptWorker.__call__Nr1rrrrrA�srAc@seZdZdd�Zdd�ZdS)�ArrayMethodsMatchercsftjj��td�tdt�tdt�tdt�tdt	�tdt
�tdt�d��_�fd	d
��jD��_
dS)N�arrayr#�empty�front�back�at�
operator[]�r#rDrErFrGrHcsg|]}�j|�qSr��_method_dict��.0�mr*rr�
<listcomp>��z0ArrayMethodsMatcher.__init__.<locals>.<listcomp>)rr�XMethodMatcherr�matcher_name_prefixrr(r2r6r;r=rArK�methodsr*rr*rr�s
��zArrayMethodsMatcher.__init__cCs`t|d�sdS|j�|�}|dus(|js,dSz|�d�}|�d�}WnYdS0|�||�S)NrCrr<)rrK�get�enabled�template_argumentr)r�
class_type�method_name�methodZ
value_typer#rrrr�s

zArrayMethodsMatcher.matchN�rrrrrrrrrrB�s
rBc@s$eZdZdd�Zdd�Zdd�ZdS)�DequeWorkerBasecCs||_d|jpd|_dS)Nir<)r�sizeof�_bufsize�rr"rrrr�szDequeWorkerBase.__init__cCsf|dd}|dd}|d|dkr,dS|j|d|dd|d|d|d	|dS)
N�_M_impl�_M_start�	_M_finish�_M_curr�_M_noder<�_M_first�_M_last�r])rr.�start�finishrrrr#�s���zDequeWorkerBase.sizecCs`|dd}|d|d}||kr0|d|S||}|ddt|�|j}|||jS)Nr_r`rerbrcr<)r5r])rr.�idxrgZfirst_node_sizeZ
index_noderrrr?�szDequeWorkerBase.indexN)rrrrr#r?rrrrr[�s
r[c@s$eZdZdd�Zdd�Zdd�ZdS)�DequeEmptyWorkercCsdSrrr*rrrr+�szDequeEmptyWorker.get_arg_typescCst�Srr3r-rrrr/�sz DequeEmptyWorker.get_result_typecCs |ddd|dddkS)Nr_r`rbrarr-rrrr0�s�zDequeEmptyWorker.__call__N�rrrr+r/r0rrrrrj�srjc@s$eZdZdd�Zdd�Zdd�ZdS)�DequeSizeWorkercCsdSrrr*rrrr+�szDequeSizeWorker.get_arg_typescCst�Srr,r-rrrr/�szDequeSizeWorker.get_result_typecCs
|�|�Sr�r#r-rrrr0�szDequeSizeWorker.__call__Nrkrrrrrl�srlc@s$eZdZdd�Zdd�Zdd�ZdS)�DequeFrontWorkercCsdSrrr*rrrr+�szDequeFrontWorker.get_arg_typescCs|jSrr7r-rrrr/�sz DequeFrontWorker.get_result_typecCs|ddddS)Nr_r`rbrrr-rrrr0�szDequeFrontWorker.__call__Nrkrrrrrn�srnc@s$eZdZdd�Zdd�Zdd�ZdS)�DequeBackWorkercCsdSrrr*rrrr+�szDequeBackWorker.get_arg_typescCs|jSrr7r-rrrr/�szDequeBackWorker.get_result_typecCs^|ddd|dddkrF|dddd}|d|jdS|ddddSdS)	Nr_rarbrdrcr<r���rf�rr.Z	prev_noderrrr0s�zDequeBackWorker.__call__Nrkrrrrro�sroc@s$eZdZdd�Zdd�Zdd�ZdS)�DequeSubscriptWorkercCst�Srr,r*rrrr+
sz"DequeSubscriptWorker.get_arg_typescCs|jSrr7�rr.Z	subscriptrrrr/
sz$DequeSubscriptWorker.get_result_typecCs|�||�Sr)r?rsrrrr0szDequeSubscriptWorker.__call__Nrkrrrrrr	srrc@s$eZdZdd�Zdd�Zdd�ZdS)�
DequeAtWorkercCst�Srr,r*rrrr+szDequeAtWorker.get_arg_typescCs|jSrr7r>rrrr/szDequeAtWorker.get_result_typecCs@t|�|��}t|�|kr0tdt|�|f��n|�||�SdS)Nz%Deque index "%d" should not be >= %d.)r5r#r@r?)rr.r?Z
deque_sizerrrr0s
�zDequeAtWorker.__call__Nrkrrrrrtsrtc@seZdZdd�Zdd�ZdS)�DequeMethodsMatchercsftjj��td�tdt�tdt�tdt�tdt	�tdt
�tdt�d��_�fd	d
��jD��_
dS)N�dequerDr#rErFrHrG)rDr#rErFrHrGcsg|]}�j|�qSrrJrLr*rrrO0rPz0DequeMethodsMatcher.__init__.<locals>.<listcomp>)rrrQrrRrrjrlrnrorrrtrKrSr*rr*rr%s
��zDequeMethodsMatcher.__init__cCs<t|d�sdS|j�|�}|dus(|js,dS|�|�d��S)Nrvr�rrKrTrUrrV�rrWrXrYrrrr2s
zDequeMethodsMatcher.matchNrZrrrrru$s
ruc@seZdZdd�Zdd�ZdS)�ForwardListWorkerBasecCs||_||_dSr�r�
_node_type�rr"�	node_typerrrr>szForwardListWorkerBase.__init__cCsdSrrr*rrrr+Bsz#ForwardListWorkerBase.get_arg_typesN)rrrrr+rrrrry=sryc@seZdZdd�Zdd�ZdS)�ForwardListEmptyWorkercCst�Srr3r-rrrr/Gsz&ForwardListEmptyWorker.get_result_typecCs|ddddkS)Nr_�_M_head�_M_nextrrr-rrrr0JszForwardListEmptyWorker.__call__N�rrrr/r0rrrrr~Fsr~c@seZdZdd�Zdd�ZdS)�ForwardListFrontWorkercCs|jSrr7r-rrrr/Osz&ForwardListFrontWorker.get_result_typecCs:|ddd�|j�}|ddj}|�|j�����S)Nr_rr��
_M_storage)r$r{�addressrr%r&)rr.�nodeZval_addressrrrr0RszForwardListFrontWorker.__call__Nr�rrrrr�Nsr�c@seZdZdd�Zdd�ZdS)�ForwardListMethodsMatchercsJtd}tjj��|�tdt�tdt�d��_�fdd��jD��_	dS)N�forward_listrDrE)rDrEcsg|]}�j|�qSrrJrLr*rrrO`rPz6ForwardListMethodsMatcher.__init__.<locals>.<listcomp>)
rRrrrQrrr~r�rKrS)rZmatcher_namerr*rrYs�z"ForwardListMethodsMatcher.__init__cCsXt|d�sdS|j�|�}|dus(|js,dS|�d�}t�t|�d���}|�	||�S)Nr�r�::_Node�
rrKrTrUrVrr�strr%r�rrWrXrYr"r}rrrrbs

zForwardListMethodsMatcher.matchNrZrrrrr�Xs	r�c@s$eZdZdd�Zdd�Zdd�ZdS)�ListWorkerBasecCs||_||_dSrrzr|rrrrpszListWorkerBase.__init__cCsdSrrr*rrrr+tszListWorkerBase.get_arg_typescCsB|��}|j��djdkr$|dS|dj}|�|j�����S)Nr<Z_M_datar�)r&�type�fieldsrr�r$rr%)rr�Zaddrrrr�get_value_from_nodews

z"ListWorkerBase.get_value_from_nodeN)rrrrr+r�rrrrr�osr�c@seZdZdd�Zdd�ZdS)�ListEmptyWorkercCst�Srr3r-rrrr/�szListEmptyWorker.get_result_typecCs&|dd}|d|jkrdSdSdS)Nr_rcr�TF�r�)rr.Z	base_noderrrr0�szListEmptyWorker.__call__Nr�rrrrr��sr�c@seZdZdd�Zdd�ZdS)�ListSizeWorkercCst�Srr,r-rrrr/�szListSizeWorker.get_result_typecCs@|ddd}|ddj}d}||kr<|d}|d7}q"|S)Nr_rcr�rr<r�)rr.Z
begin_nodeZend_noder#rrrr0�s
zListSizeWorker.__call__Nr�rrrrr��sr�c@seZdZdd�Zdd�ZdS)�ListFrontWorkercCs|jSrr7r-rrrr/�szListFrontWorker.get_result_typecCs"|ddd�|j�}|�|�S)Nr_rcr��r$r{r�)rr.r�rrrr0�szListFrontWorker.__call__Nr�rrrrr��sr�c@seZdZdd�Zdd�ZdS)�ListBackWorkercCs|jSrr7r-rrrr/�szListBackWorker.get_result_typecCs"|ddd�|j�}|�|�S)Nr_rcZ_M_prevr�rqrrrr0�szListBackWorker.__call__Nr�rrrrr��sr�c@seZdZdd�Zdd�ZdS)�ListMethodsMatchercsVtjj��td�tdt�tdt�tdt�tdt	�d��_
�fdd��j
D��_dS)	N�listrDr#rErF)rDr#rErFcsg|]}�j|�qSrrJrLr*rrrO�rPz/ListMethodsMatcher.__init__.<locals>.<listcomp>)rrrQrrRrr�r�r�r�rKrSr*rr*rr�s
��zListMethodsMatcher.__init__cCsXt|d�sdS|j�|�}|dus(|js,dS|�d�}t�t|�d���}|�	||�S)Nz(__cxx11::)?listrr�r�r�rrrr�s

zListMethodsMatcher.matchNrZrrrrr��sr�c@s$eZdZdd�Zdd�Zdd�ZdS)�VectorWorkerBasecCs
||_dSrr7r^rrrr�szVectorWorkerBase.__init__cCsz|jjtjkr^|ddd}|ddd}|ddd}|��jjd}||||S|dd|ddSdS)Nr_r`�_M_praZ	_M_offset��r�coderZTYPE_CODE_BOOLr&r�r\)rr.rgrhZ
finish_offset�bit_sizerrrr#�szVectorWorkerBase.sizecCsj|jjtjkrV|ddd}|��jjd}|||}||}|��d|>@dkS|dd|SdS)Nr_r`r�r�r<rr�)rr.r?rgr�Zvalp�offsetrrrrT�szVectorWorkerBase.getN)rrrrr#rTrrrrr��s
r�c@s$eZdZdd�Zdd�Zdd�ZdS)�VectorEmptyWorkercCsdSrrr*rrrr+�szVectorEmptyWorker.get_arg_typescCst�Srr3r-rrrr/�sz!VectorEmptyWorker.get_result_typecCst|�|��dkSr4)r5r#r-rrrr0�szVectorEmptyWorker.__call__Nrkrrrrr��sr�c@s$eZdZdd�Zdd�Zdd�ZdS)�VectorSizeWorkercCsdSrrr*rrrr+�szVectorSizeWorker.get_arg_typescCst�Srr,r-rrrr/�sz VectorSizeWorker.get_result_typecCs
|�|�Srrmr-rrrr0�szVectorSizeWorker.__call__Nrkrrrrr��sr�c@s$eZdZdd�Zdd�Zdd�ZdS)�VectorFrontWorkercCsdSrrr*rrrr+�szVectorFrontWorker.get_arg_typescCs|jSrr7r-rrrr/�sz!VectorFrontWorker.get_result_typecCs|�|d�Sr4)rTr-rrrr0�szVectorFrontWorker.__call__Nrkrrrrr��sr�c@s$eZdZdd�Zdd�Zdd�ZdS)�VectorBackWorkercCsdSrrr*rrrr+szVectorBackWorker.get_arg_typescCs|jSrr7r-rrrr/sz VectorBackWorker.get_result_typecCs|�|t|�|��d�S�Nr<)rTr5r#r-rrrr0szVectorBackWorker.__call__Nrkrrrrr�sr�c@s$eZdZdd�Zdd�Zdd�ZdS)�VectorAtWorkercCst�Srr,r*rrrr+szVectorAtWorker.get_arg_typescCs|jSrr7r>rrrr/szVectorAtWorker.get_result_typecCs>t|�|��}t|�|kr.tdt|�|f��|�|t|��S)Nz&Vector index "%d" should not be >= %d.)r5r#r@rT)rr.r?r#rrrr0s
�zVectorAtWorker.__call__Nrkrrrrr�sr�c@s$eZdZdd�Zdd�Zdd�ZdS)�VectorSubscriptWorkercCst�Srr,r*rrrr+sz#VectorSubscriptWorker.get_arg_typescCs|jSrr7rsrrrr/sz%VectorSubscriptWorker.get_result_typecCs|�|t|��Sr)rTr5rsrrrr0!szVectorSubscriptWorker.__call__Nrkrrrrr�sr�c@seZdZdd�Zdd�ZdS)�VectorMethodsMatchercsftjj��td�tdt�tdt�tdt�tdt	�tdt
�tdt�d��_�fd	d
��jD��_
dS)N�vectorr#rDrErFrGrHrIcsg|]}�j|�qSrrJrLr*rrrO2rPz1VectorMethodsMatcher.__init__.<locals>.<listcomp>)rrrQrrRrr�r�r�r�r�r�rKrSr*rr*rr&s
���	zVectorMethodsMatcher.__init__cCs<t|d�sdS|j�|�}|dus(|js,dS|�|�d��S)Nr�rrwrxrrrr4s
zVectorMethodsMatcher.matchNrZrrrrr�%sr�c@s$eZdZdd�Zdd�Zdd�ZdS)�AssociativeContainerWorkerBasecCs
||_dSr�Z
_unordered)r�	unorderedrrrr@sz'AssociativeContainerWorkerBase.__init__cCs&|jr|ddS|dddSdS)NZ_M_hZ_M_element_count�_M_tr_Z
_M_node_countr�r-rrr�
node_countCsz)AssociativeContainerWorkerBase.node_countcCsdSrrr*rrrr+Isz,AssociativeContainerWorkerBase.get_arg_typesN)rrrrr�r+rrrrr�?sr�c@seZdZdd�Zdd�ZdS)�AssociativeContainerEmptyWorkercCst�Srr3r-rrrr/Nsz/AssociativeContainerEmptyWorker.get_result_typecCst|�|��dkSr4)r5r�r-rrrr0Qsz(AssociativeContainerEmptyWorker.__call__Nr�rrrrr�Msr�c@seZdZdd�Zdd�ZdS)�AssociativeContainerSizeWorkercCst�Srr,r-rrrr/Vsz.AssociativeContainerSizeWorker.get_result_typecCs
|�|�Sr)r�r-rrrr0Ysz'AssociativeContainerSizeWorker.__call__Nr�rrrrr�Usr�c@seZdZdd�Zdd�ZdS)�"AssociativeContainerMethodsMatchercsLtjj��t|�|�_tdt�tdt�d��_	�fdd��j	D��_
dS)Nr#rD)r#rDcsg|]}�j|�qSrrJrLr*rrrOgrPz?AssociativeContainerMethodsMatcher.__init__.<locals>.<listcomp>)rrrQrrR�_namerr�r�rKrS)rrrr*rr^s
���z+AssociativeContainerMethodsMatcher.__init__cCsBt||j�sdS|j�|�}|dus*|js.dSd|jv}|�|�S)Nr�)rr�rKrTrUr)rrWrXrYr�rrrris
z(AssociativeContainerMethodsMatcher.matchNrZrrrrr�]sr�c@s8eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�ZdS)
�UniquePtrGetWorkerzS
    Implement std::unique_ptr<T>::get() and std::unique_ptr<T>::operator->().
    cCs*|jtjk|_|jr |��|_n||_dSr�r�rZTYPE_CODE_ARRAY�	_is_array�target�
_elem_type�rZ	elem_typerrrrzszUniquePtrGetWorker.__init__cCsdSrrr*rrrr+�sz UniquePtrGetWorker.get_arg_typescCs
|j��Sr�r�r%r-rrrr/�sz"UniquePtrGetWorker.get_result_typecCs|dkp|jS�NrT�r��rrXrrr�	_supports�szUniquePtrGetWorker._supportscCs�|��j��djj}t|d�r.|dd}nt|d�rB|d}ndS|j��dj}|��dj}|��d}|jdkr�|�|�dS|jr�|�|j�SdSdS)Nrz__uniq_ptr_(data|impl)r��tupler<Z_M_head_impl)r&r�r�r
rrr$Z
is_base_class)rr.Z	impl_typeZtuple_memberZtuple_impl_typeZtuple_head_typeZ
head_fieldrrrr0�s



zUniquePtrGetWorker.__call__N�	rrr�__doc__rr+r/r�r0rrrrr�usr�c@s0eZdZdZdd�Zdd�Zdd�Zdd	�Zd
S)�UniquePtrDerefWorkerz*Implement std::unique_ptr<T>::operator*().cCst�||�dSr�r�rr�rrrr�szUniquePtrDerefWorker.__init__cCs|jSr�r�r-rrrr/�sz$UniquePtrDerefWorker.get_result_typecCs|jSrr�r�rrrr��szUniquePtrDerefWorker._supportscCst�||���Sr)r�r0r&r-rrrr0�szUniquePtrDerefWorker.__call__N�rrrr�rr/r�r0rrrrr��s
r�c@s8eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�ZdS)
�UniquePtrSubscriptWorkerz1Implement std::unique_ptr<T>::operator[](size_t).cCst�||�dSrr�r�rrrr�sz!UniquePtrSubscriptWorker.__init__cCst�Srr,r*rrrr+�sz&UniquePtrSubscriptWorker.get_arg_typescCs|jSrr�r>rrrr/�sz(UniquePtrSubscriptWorker.get_result_typecCs|jSrr�r�rrrr��sz"UniquePtrSubscriptWorker._supportscCst�||�|Sr)r�r0r>rrrr0�sz!UniquePtrSubscriptWorker.__call__Nr�rrrrr��sr�c@seZdZdd�Zdd�ZdS)�UniquePtrMethodsMatchercsVtjj��td�tdt�tdt�tdt�tdt�d��_	�fdd��j	D��_
dS)	N�
unique_ptrrT�
operator->�	operator*rH)rTr�r�rHcsg|]}�j|�qSrrJrLr*rrrO�rPz4UniquePtrMethodsMatcher.__init__.<locals>.<listcomp>)rrrQrrRrr�r�r�rKrSr*rr*rr�s
��z UniquePtrMethodsMatcher.__init__cCsNt|d�sdS|j�|�}|dus(|js,dS|�|�d��}|�|�rJ|SdS)Nr�r�rrKrTrUrrVr��rrWrXrYZworkerrrrr�s

zUniquePtrMethodsMatcher.matchNrZrrrrr��sr�c@s8eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�ZdS)
�SharedPtrGetWorkerzT
    Implements std::shared_ptr<T>::get() and std::shared_ptr<T>::operator->().
    cCs*|jtjk|_|jr |��|_n||_dSrr�r�rrrr�szSharedPtrGetWorker.__init__cCsdSrrr*rrrr+�sz SharedPtrGetWorker.get_arg_typescCs
|j��Srr�r-rrrr/�sz"SharedPtrGetWorker.get_result_typecCs|dkp|jSr�r�r�rrrr��szSharedPtrGetWorker._supportscCs|dS)NZ_M_ptrrr-rrrr0�szSharedPtrGetWorker.__call__Nr�rrrrr��sr�c@s0eZdZdZdd�Zdd�Zdd�Zdd	�Zd
S)�SharedPtrDerefWorkerz*Implement std::shared_ptr<T>::operator*().cCst�||�dSr�r�rr�rrrr�szSharedPtrDerefWorker.__init__cCs|jSrr�r-rrrr/�sz$SharedPtrDerefWorker.get_result_typecCs|jSrr�r�rrrr�szSharedPtrDerefWorker._supportscCst�||���Sr)r�r0r&r-rrrr0szSharedPtrDerefWorker.__call__Nr�rrrrr��s
r�c@s8eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�ZdS)
�SharedPtrSubscriptWorkerz1Implement std::shared_ptr<T>::operator[](size_t).cCst�||�dSrr�r�rrrrsz!SharedPtrSubscriptWorker.__init__cCst�Srr,r*rrrr+sz&SharedPtrSubscriptWorker.get_arg_typescCs|jSrr�r>rrrr/sz(SharedPtrSubscriptWorker.get_result_typecCs|jSrr�r�rrrr�sz"SharedPtrSubscriptWorker._supportscCsZt�dt|j��}|rJ|t|�d��krJtd|jt|�t|�d��f��t�||�|S)Nz.*\[(\d+)]$r<z.shared_ptr<%s> index "%d" should not be >= %d.)	rrr�r�r5�groupr@r�r0)rr.r?rNrrrr0s�z!SharedPtrSubscriptWorker.__call__Nr�rrrrr�	sr�c@s8eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�ZdS)
�SharedPtrUseCountWorkerz*Implement std::shared_ptr<T>::use_count().cCsdSrrr�rrrr%sz SharedPtrUseCountWorker.__init__cCsdSrrr*rrrr+(sz%SharedPtrUseCountWorker.get_arg_typescCs
t�d�S)NZlongrr-rrrr/+sz'SharedPtrUseCountWorker.get_result_typecCsdS)NTrr�rrrr�.sz!SharedPtrUseCountWorker._supportscCs|dd}|r|dSdS)NZ_M_refcountZ_M_piZ_M_use_countrr)rr.Z	refcountsrrrr01sz SharedPtrUseCountWorker.__call__Nr�rrrrr�"sr�c@s(eZdZdZdd�Zdd�Zdd�ZdS)	�SharedPtrUniqueWorkerz'Implement std::shared_ptr<T>::unique().cCst�||�dSr)r�rr�rrrr9szSharedPtrUniqueWorker.__init__cCs
t�d�Srrr-rrrr/<sz%SharedPtrUniqueWorker.get_result_typecCst�||�dkSr�)r�r0r-rrrr0?szSharedPtrUniqueWorker.__call__N)rrrr�rr/r0rrrrr�6sr�c@seZdZdd�Zdd�ZdS)�SharedPtrMethodsMatchercsftjj��td�tdt�tdt�tdt�tdt�tdt	�tdt
�d��_�fd	d
��jD��_dS)N�
shared_ptrrTr�r�rH�	use_count�unique)rTr�r�rHr�r�csg|]}�j|�qSrrJrLr*rrrOOrPz4SharedPtrMethodsMatcher.__init__.<locals>.<listcomp>)
rrrQrrRrr�r�r�r�r�rKrSr*rr*rrDs
��z SharedPtrMethodsMatcher.__init__cCsNt|d�sdS|j�|�}|dus(|js,dS|�|�d��}|�|�rJ|SdS)Nr�rr�r�rrrrQs

zSharedPtrMethodsMatcher.matchNrZrrrrr�Cs
r�cCstj�|t��tj�|t��tj�|t��tj�|t��tj�|t��tj�|td��tj�|td��tj�|td��tj�|td��tj�|td��tj�|td��tj�|td��tj�|td��tj�|t	��tj�|t
��dS)	N�set�mapZmultisetZmultimapZ
unordered_setZ
unordered_mapZunordered_multisetZunordered_multimap)rrZregister_xmethod_matcherrBr�rur�r�r�r�r�)Zlocusrrr�register_libstdcxx_xmethods]s>��������r�)>rZgdb.xmethodrrRr	r
rrrrrZ
XMethodWorkerrr(r2r6r;r=rArQrBr[rjrlrnrorrrtruryr~r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrr�<module>sr
	
		*


Zerion Mini Shell 1.0