Sindbad~EG File Manager

Current Path : /proc/1603417/root/usr/share/gcc-8/python/libstdcxx/v6/__pycache__/
Upload File :
Current File : //proc/1603417/root/usr/share/gcc-8/python/libstdcxx/v6/__pycache__/xmethods.cpython-36.opt-1.pyc

3

���gq�@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
tjd�S)N�bool)�gdb�lookup_type�rr�0/usr/share/gcc-8/python/libstdcxx/v6/xmethods.py�
get_bool_typesrcCs
tjd�S)Nzstd::size_t)rrrrrr�get_std_size_typesrz__8::cCs2t|tj�r|j}dt|f}tjd||�dk	S)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)�
isinstancerZType�tag�_versioned_namespace�re�match)�xZ
template_namerrr�is_specialization_of!src@seZdZdd�ZdS)�LibStdCxxXMethodcCstjjj||�||_dS)N)r�xmethod�XMethod�__init__�worker_class)�self�namerrrrr.szLibStdCxxXMethod.__init__N)�__name__�
__module__�__qualname__rrrrrr-src@seZdZdd�Zdd�ZdS)�ArrayWorkerBasecCs||_||_dS)N)�	_val_type�_size)r�val_type�sizerrrr6szArrayWorkerBase.__init__cCstjd�}|j|jj��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)
�ArraySizeWorkercCstj|||�dS)N)rr)rrrrrrr@szArraySizeWorker.__init__cCsdS)Nr)rrrr�
get_arg_typesCszArraySizeWorker.get_arg_typescCst�S)N)r)r�objrrr�get_result_typeFszArraySizeWorker.get_result_typecCs|jS)N)r)rr%rrr�__call__IszArraySizeWorker.__call__N)rrrrr$r&r'rrrrr#?sr#c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�ArrayEmptyWorkercCstj|||�dS)N)rr)rrrrrrrNszArrayEmptyWorker.__init__cCsdS)Nr)rrrrr$QszArrayEmptyWorker.get_arg_typescCst�S)N)r)rr%rrrr&Tsz ArrayEmptyWorker.get_result_typecCst|j�dkS)Nr)�intr)rr%rrrr'WszArrayEmptyWorker.__call__N)rrrrr$r&r'rrrrr(Msr(c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�ArrayFrontWorkercCstj|||�dS)N)rr)rrrrrrr\szArrayFrontWorker.__init__cCsdS)Nr)rrrrr$_szArrayFrontWorker.get_arg_typescCs|jS)N)r)rr%rrrr&bsz ArrayFrontWorker.get_result_typecCs&t|j�dkr|ddS|j�SdS)Nr�_M_elems)r)rr")rr%rrrr'eszArrayFrontWorker.__call__N)rrrrr$r&r'rrrrr*[sr*c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�ArrayBackWorkercCstj|||�dS)N)rr)rrrrrrrmszArrayBackWorker.__init__cCsdS)Nr)rrrrr$pszArrayBackWorker.get_arg_typescCs|jS)N)r)rr%rrrr&sszArrayBackWorker.get_result_typecCs,t|j�dkr |d|jdS|j�SdS)Nrr+�)r)rr")rr%rrrr'vszArrayBackWorker.__call__N)rrrrr$r&r'rrrrr,lsr,c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�
ArrayAtWorkercCstj|||�dS)N)rr)rrrrrrr~szArrayAtWorker.__init__cCst�S)N)r)rrrrr$�szArrayAtWorker.get_arg_typescCs|jS)N)r)rr%�indexrrrr&�szArrayAtWorker.get_result_typecCs4t|�t|j�kr(tdt|�|jf��|d|S)Nz%Array index "%d" should not be >= %d.r+)r)r�
IndexError)rr%r/rrrr'�szArrayAtWorker.__call__N)rrrrr$r&r'rrrrr.}sr.c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�ArraySubscriptWorkercCstj|||�dS)N)rr)rrrrrrr�szArraySubscriptWorker.__init__cCst�S)N)r)rrrrr$�sz"ArraySubscriptWorker.get_arg_typescCs|jS)N)r)rr%r/rrrr&�sz$ArraySubscriptWorker.get_result_typecCs&t|j�dkr|d|S|j�SdS)Nrr+)r)rr")rr%r/rrrr'�szArraySubscriptWorker.__call__N)rrrrr$r&r'rrrrr1�sr1c@seZdZdd�Zdd�ZdS)�ArrayMethodsMatchercsftjjj�td�tdt�tdt�tdt�tdt	�tdt
�tdt�d��_�fd	d
��jD��_
dS)N�arrayr�empty�front�back�atz
operator[])rr4r5r6r7z
operator[]csg|]}�j|�qSr)�_method_dict)�.0�m)rrr�
<listcomp>�sz0ArrayMethodsMatcher.__init__.<locals>.<listcomp>)rr�XMethodMatcherr�matcher_name_prefixrr#r(r*r,r.r1r8�methods)rr)rrr�s

zArrayMethodsMatcher.__init__c	Cs^t|d�sdS|jj|�}|dks*|jr.dSy|jd�}|jd�}Wn
dS|j||�S)Nr3rr-)rr8�get�enabled�template_argumentr)r�
class_type�method_name�methodZ
value_typerrrrr
�s

zArrayMethodsMatcher.matchN)rrrrr
rrrrr2�s
r2c@s$eZdZdd�Zdd�Zdd�ZdS)�DequeWorkerBasecCs||_d|jpd|_dS)Nir-)r�sizeof�_bufsize)rrrrrr�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)rG)rr%�start�finishrrrr�s
zDequeWorkerBase.sizecCs`|dd}|d|d}||kr0|d|S||}|ddt|�|j}|||jS)NrHrIrNrKrLr-)r)rG)rr%�idxrOZfirst_node_sizeZ
index_noderrrr/�szDequeWorkerBase.indexN)rrrrrr/rrrrrE�s
rEc@s$eZdZdd�Zdd�Zdd�ZdS)�DequeEmptyWorkercCsdS)Nr)rrrrr$�szDequeEmptyWorker.get_arg_typescCst�S)N)r)rr%rrrr&�sz DequeEmptyWorker.get_result_typecCs |ddd|dddkS)NrHrIrKrJr)rr%rrrr'�szDequeEmptyWorker.__call__N)rrrr$r&r'rrrrrR�srRc@s$eZdZdd�Zdd�Zdd�ZdS)�DequeSizeWorkercCsdS)Nr)rrrrr$�szDequeSizeWorker.get_arg_typescCst�S)N)r)rr%rrrr&�szDequeSizeWorker.get_result_typecCs
|j|�S)N)r)rr%rrrr'�szDequeSizeWorker.__call__N)rrrr$r&r'rrrrrS�srSc@s$eZdZdd�Zdd�Zdd�ZdS)�DequeFrontWorkercCsdS)Nr)rrrrr$�szDequeFrontWorker.get_arg_typescCs|jS)N)r)rr%rrrr&�sz DequeFrontWorker.get_result_typecCs|ddddS)NrHrIrKrr)rr%rrrr'�szDequeFrontWorker.__call__N)rrrr$r&r'rrrrrT�srTc@s$eZdZdd�Zdd�Zdd�ZdS)�DequeBackWorkercCsdS)Nr)rrrrr$�szDequeBackWorker.get_arg_typescCs|jS)N)r)rr%rrrr&�szDequeBackWorker.get_result_typecCs^|ddd|dddkrF|dddd}|d|jdS|ddddSdS)	NrHrJrKrMrLr-r���)rG)rr%�	prev_noderrrr's
zDequeBackWorker.__call__N)rrrr$r&r'rrrrrU�srUc@s$eZdZdd�Zdd�Zdd�ZdS)�DequeSubscriptWorkercCst�S)N)r)rrrrr$
sz"DequeSubscriptWorker.get_arg_typescCs|jS)N)r)rr%�	subscriptrrrr&
sz$DequeSubscriptWorker.get_result_typecCs|j||�S)N)r/)rr%rYrrrr'szDequeSubscriptWorker.__call__N)rrrr$r&r'rrrrrX	srXc@s$eZdZdd�Zdd�Zdd�ZdS)�
DequeAtWorkercCst�S)N)r)rrrrr$szDequeAtWorker.get_arg_typescCs|jS)N)r)rr%r/rrrr&szDequeAtWorker.get_result_typecCs@t|j|��}t|�|kr0tdt|�|f��n|j||�SdS)Nz%Deque index "%d" should not be >= %d.)r)rr0r/)rr%r/Z
deque_sizerrrr's
zDequeAtWorker.__call__N)rrrr$r&r'rrrrrZsrZc@seZdZdd�Zdd�ZdS)�DequeMethodsMatchercsftjjj�td�tdt�tdt�tdt�tdt	�tdt
�tdt�d��_�fd	d
��jD��_
dS)N�dequer4rr5r6z
operator[]r7)r4rr5r6z
operator[]r7csg|]}�j|�qSr)r8)r9r:)rrrr;0sz0DequeMethodsMatcher.__init__.<locals>.<listcomp>)rrr<rr=rrRrSrTrUrXrZr8r>)rr)rrr%s

zDequeMethodsMatcher.__init__cCs>t|d�sdS|jj|�}|dks*|jr.dS|j|jd��S)Nr\r)rr8r?r@rrA)rrBrCrDrrrr
2s
zDequeMethodsMatcher.matchN)rrrrr
rrrrr[$s
r[c@seZdZdd�Zdd�ZdS)�ForwardListWorkerBasecCs||_||_dS)N)r�
_node_type)rr�	node_typerrrr>szForwardListWorkerBase.__init__cCsdS)Nr)rrrrr$Bsz#ForwardListWorkerBase.get_arg_typesN)rrrrr$rrrrr]=sr]c@seZdZdd�Zdd�ZdS)�ForwardListEmptyWorkercCst�S)N)r)rr%rrrr&Gsz&ForwardListEmptyWorker.get_result_typecCs|ddddkS)NrH�_M_head�_M_nextrr)rr%rrrr'JszForwardListEmptyWorker.__call__N)rrrr&r'rrrrr`Fsr`c@seZdZdd�Zdd�ZdS)�ForwardListFrontWorkercCs|jS)N)r)rr%rrrr&Osz&ForwardListFrontWorker.get_result_typecCs:|dddj|j�}|ddj}|j|jj��j�S)NrHrarb�
_M_storage)rr^�addressrr r!)rr%�nodeZval_addressrrrr'RszForwardListFrontWorker.__call__N)rrrr&r'rrrrrcNsrcc@seZdZdd�Zdd�ZdS)�ForwardListMethodsMatchercsJtd}tjjj�|�tdt�tdt�d��_�fdd��jD��_	dS)N�forward_listr4r5)r4r5csg|]}�j|�qSr)r8)r9r:)rrrr;`sz6ForwardListMethodsMatcher.__init__.<locals>.<listcomp>)
r=rrr<rrr`rcr8r>)rZmatcher_namer)rrrYs
z"ForwardListMethodsMatcher.__init__cCsZt|d�sdS|jj|�}|dks*|jr.dS|jd�}tjt|�d�j�}|j	||�S)Nrhrz::_Node)
rr8r?r@rArr�strr r)rrBrCrDrr_rrrr
bs

zForwardListMethodsMatcher.matchN)rrrrr
rrrrrgXs	rgc@s$eZdZdd�Zdd�Zdd�ZdS)�ListWorkerBasecCs||_||_dS)N)rr^)rrr_rrrrpszListWorkerBase.__init__cCsdS)Nr)rrrrr$tszListWorkerBase.get_arg_typescCsB|j�}|jj�djdkr$|dS|dj}|j|jj��j�S)Nr-Z_M_datard)r!�type�fieldsrrerrr )rrfZaddrrrr�get_value_from_nodews

z"ListWorkerBase.get_value_from_nodeN)rrrrr$rmrrrrrjosrjc@seZdZdd�Zdd�ZdS)�ListEmptyWorkercCst�S)N)r)rr%rrrr&�szListEmptyWorker.get_result_typecCs&|dd}|d|jkrdSdSdS)NrHrLrbTF)re)rr%Z	base_noderrrr'�szListEmptyWorker.__call__N)rrrr&r'rrrrrn�srnc@seZdZdd�Zdd�ZdS)�ListSizeWorkercCst�S)N)r)rr%rrrr&�szListSizeWorker.get_result_typecCsD|ddd}|ddj}d}x||kr>|d}|d7}q$W|S)NrHrLrbrr-)re)rr%Z
begin_nodeZend_noderrrrr'�s
zListSizeWorker.__call__N)rrrr&r'rrrrro�sroc@seZdZdd�Zdd�ZdS)�ListFrontWorkercCs|jS)N)r)rr%rrrr&�szListFrontWorker.get_result_typecCs"|dddj|j�}|j|�S)NrHrLrb)rr^rm)rr%rfrrrr'�szListFrontWorker.__call__N)rrrr&r'rrrrrp�srpc@seZdZdd�Zdd�ZdS)�ListBackWorkercCs|jS)N)r)rr%rrrr&�szListBackWorker.get_result_typecCs"|dddj|j�}|j|�S)NrHrLZ_M_prev)rr^rm)rr%rWrrrr'�szListBackWorker.__call__N)rrrr&r'rrrrrq�srqc@seZdZdd�Zdd�ZdS)�ListMethodsMatchercsVtjjj�td�tdt�tdt�tdt�tdt	�d��_
�fdd��j
D��_dS)	N�listr4rr5r6)r4rr5r6csg|]}�j|�qSr)r8)r9r:)rrrr;�sz/ListMethodsMatcher.__init__.<locals>.<listcomp>)rrr<rr=rrnrorprqr8r>)rr)rrr�s

zListMethodsMatcher.__init__cCsZt|d�sdS|jj|�}|dks*|jr.dS|jd�}tjt|�d�j�}|j	||�S)Nz(__cxx11::)?listrz::_Node)
rr8r?r@rArrrir r)rrBrCrDrr_rrrr
�s

zListMethodsMatcher.matchN)rrrrr
rrrrrr�srrc@s$eZdZdd�Zdd�Zdd�ZdS)�VectorWorkerBasecCs
||_dS)N)r)rrrrrr�szVectorWorkerBase.__init__cCsz|jjtjkr^|ddd}|ddd}|ddd}|j�jjd}||||S|dd|ddSdS)NrHrI�_M_prJZ	_M_offset�)r�coder�TYPE_CODE_BOOLr!rkrF)rr%rOrPZ
finish_offset�bit_sizerrrr�szVectorWorkerBase.sizecCsj|jjtjkrV|ddd}|j�jjd}|||}||}|j�d|>@dkS|dd|SdS)NrHrIrurvr-r)rrwrrxr!rkrF)rr%r/rOryZvalp�offsetrrrr?�szVectorWorkerBase.getN)rrrrrr?rrrrrt�s
rtc@s$eZdZdd�Zdd�Zdd�ZdS)�VectorEmptyWorkercCsdS)Nr)rrrrr$�szVectorEmptyWorker.get_arg_typescCst�S)N)r)rr%rrrr&�sz!VectorEmptyWorker.get_result_typecCst|j|��dkS)Nr)r)r)rr%rrrr'�szVectorEmptyWorker.__call__N)rrrr$r&r'rrrrr{�sr{c@s$eZdZdd�Zdd�Zdd�ZdS)�VectorSizeWorkercCsdS)Nr)rrrrr$�szVectorSizeWorker.get_arg_typescCst�S)N)r)rr%rrrr&�sz VectorSizeWorker.get_result_typecCs
|j|�S)N)r)rr%rrrr'�szVectorSizeWorker.__call__N)rrrr$r&r'rrrrr|�sr|c@s$eZdZdd�Zdd�Zdd�ZdS)�VectorFrontWorkercCsdS)Nr)rrrrr$�szVectorFrontWorker.get_arg_typescCs|jS)N)r)rr%rrrr&�sz!VectorFrontWorker.get_result_typecCs|j|d�S)Nr)r?)rr%rrrr'�szVectorFrontWorker.__call__N)rrrr$r&r'rrrrr}�sr}c@s$eZdZdd�Zdd�Zdd�ZdS)�VectorBackWorkercCsdS)Nr)rrrrr$szVectorBackWorker.get_arg_typescCs|jS)N)r)rr%rrrr&sz VectorBackWorker.get_result_typecCs|j|t|j|��d�S)Nr-)r?r)r)rr%rrrr'szVectorBackWorker.__call__N)rrrr$r&r'rrrrr~sr~c@s$eZdZdd�Zdd�Zdd�ZdS)�VectorAtWorkercCst�S)N)r)rrrrr$szVectorAtWorker.get_arg_typescCs|jS)N)r)rr%r/rrrr&szVectorAtWorker.get_result_typecCs>t|j|��}t|�|kr.tdt|�|f��|j|t|��S)Nz&Vector index "%d" should not be >= %d.)r)rr0r?)rr%r/rrrrr's
zVectorAtWorker.__call__N)rrrr$r&r'rrrrrsrc@s$eZdZdd�Zdd�Zdd�ZdS)�VectorSubscriptWorkercCst�S)N)r)rrrrr$sz#VectorSubscriptWorker.get_arg_typescCs|jS)N)r)rr%rYrrrr&sz%VectorSubscriptWorker.get_result_typecCs|j|t|��S)N)r?r))rr%rYrrrr'!szVectorSubscriptWorker.__call__N)rrrr$r&r'rrrrr�sr�c@seZdZdd�Zdd�ZdS)�VectorMethodsMatchercsftjjj�td�tdt�tdt�tdt�tdt	�tdt
�tdt�d��_�fd	d
��jD��_
dS)N�vectorrr4r5r6r7z
operator[])rr4r5r6r7z
operator[]csg|]}�j|�qSr)r8)r9r:)rrrr;2sz1VectorMethodsMatcher.__init__.<locals>.<listcomp>)rrr<rr=rr|r{r}r~rr�r8r>)rr)rrr&s

zVectorMethodsMatcher.__init__cCs>t|d�sdS|jj|�}|dks*|jr.dS|j|jd��S)Nr�r)rr8r?r@rrA)rrBrCrDrrrr
4s
zVectorMethodsMatcher.matchN)rrrrr
rrrrr�%sr�c@s$eZdZdd�Zdd�Zdd�ZdS)�AssociativeContainerWorkerBasecCs
||_dS)N)�
_unordered)r�	unorderedrrrr@sz'AssociativeContainerWorkerBase.__init__cCs&|jr|ddS|dddSdS)NZ_M_hZ_M_element_count�_M_trHZ
_M_node_count)r�)rr%rrr�
node_countCsz)AssociativeContainerWorkerBase.node_countcCsdS)Nr)rrrrr$Isz,AssociativeContainerWorkerBase.get_arg_typesN)rrrrr�r$rrrrr�?sr�c@seZdZdd�Zdd�ZdS)�AssociativeContainerEmptyWorkercCst�S)N)r)rr%rrrr&Nsz/AssociativeContainerEmptyWorker.get_result_typecCst|j|��dkS)Nr)r)r�)rr%rrrr'Qsz(AssociativeContainerEmptyWorker.__call__N)rrrr&r'rrrrr�Msr�c@seZdZdd�Zdd�ZdS)�AssociativeContainerSizeWorkercCst�S)N)r)rr%rrrr&Vsz.AssociativeContainerSizeWorker.get_result_typecCs
|j|�S)N)r�)rr%rrrr'Ysz'AssociativeContainerSizeWorker.__call__N)rrrr&r'rrrrr�Usr�c@seZdZdd�Zdd�ZdS)�"AssociativeContainerMethodsMatchercsLtjjj�t|�|�_tdt�tdt�d��_	�fdd��j	D��_
dS)Nrr4)rr4csg|]}�j|�qSr)r8)r9r:)rrrr;gsz?AssociativeContainerMethodsMatcher.__init__.<locals>.<listcomp>)rrr<rr=�_namerr�r�r8r>)rrr)rrr^s

z+AssociativeContainerMethodsMatcher.__init__cCsDt||j�sdS|jj|�}|dks,|jr0dSd|jk}|j|�S)Nr�)rr�r8r?r@r)rrBrCrDr�rrrr
is
z(AssociativeContainerMethodsMatcher.matchN)rrrrr
rrrrr�]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 |j�|_n||_dS)N)rwr�TYPE_CODE_ARRAY�	_is_array�target�
_elem_type)r�	elem_typerrrrzszUniquePtrGetWorker.__init__cCsdS)Nr)rrrrr$�sz UniquePtrGetWorker.get_arg_typescCs
|jj�S)N)r�r )rr%rrrr&�sz"UniquePtrGetWorker.get_result_typecCs|dkp|jS)Nr?)r�)rrCrrr�	_supports�szUniquePtrGetWorker._supportscCs�|j�jj�djj}t|d�r.|dd}nt|d�rB|d}ndS|jj�dj}|j�dj}|j�d}|jdkr�|j|�dS|jr�|j|j�SdSdS)Nrz__uniq_ptr_(data|impl)r��tupler-Z_M_head_impl)r!rkrlr
rrrZ
is_base_class)rr%Z	impl_typeZtuple_memberZtuple_impl_typeZtuple_head_typeZ
head_fieldrrrr'�s



zUniquePtrGetWorker.__call__N)	rrr�__doc__rr$r&r�r'rrrrr�usr�c@s0eZdZdZdd�Zdd�Zdd�Zdd	�Zd
S)�UniquePtrDerefWorkerz*Implement std::unique_ptr<T>::operator*().cCstj||�dS)N)r�r)rr�rrrr�szUniquePtrDerefWorker.__init__cCs|jS)N)r�)rr%rrrr&�sz$UniquePtrDerefWorker.get_result_typecCs|jS)N)r�)rrCrrrr��szUniquePtrDerefWorker._supportscCstj||�j�S)N)r�r'r!)rr%rrrr'�szUniquePtrDerefWorker.__call__N)rrrr�rr&r�r'rrrrr��s
r�c@s8eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�ZdS)
�UniquePtrSubscriptWorkerz1Implement std::unique_ptr<T>::operator[](size_t).cCstj||�dS)N)r�r)rr�rrrr�sz!UniquePtrSubscriptWorker.__init__cCst�S)N)r)rrrrr$�sz&UniquePtrSubscriptWorker.get_arg_typescCs|jS)N)r�)rr%r/rrrr&�sz(UniquePtrSubscriptWorker.get_result_typecCs|jS)N)r�)rrCrrrr��sz"UniquePtrSubscriptWorker._supportscCstj||�|S)N)r�r')rr%r/rrrr'�sz!UniquePtrSubscriptWorker.__call__N)	rrrr�rr$r&r�r'rrrrr��sr�c@seZdZdd�Zdd�ZdS)�UniquePtrMethodsMatchercsVtjjj�td�tdt�tdt�tdt�tdt�d��_	�fdd��j	D��_
dS)	N�
unique_ptrr?z
operator->z	operator*z
operator[])r?z
operator->z	operator*z
operator[]csg|]}�j|�qSr)r8)r9r:)rrrr;�sz4UniquePtrMethodsMatcher.__init__.<locals>.<listcomp>)rrr<rr=rr�r�r�r8r>)rr)rrr�s

z UniquePtrMethodsMatcher.__init__cCsPt|d�sdS|jj|�}|dks*|jr.dS|j|jd��}|j|�rL|SdS)Nr�r)rr8r?r@rrAr�)rrBrCrD�workerrrrr
�s

zUniquePtrMethodsMatcher.matchN)rrrrr
rrrrr��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 |j�|_n||_dS)N)rwrr�r�r�r�)rr�rrrr�szSharedPtrGetWorker.__init__cCsdS)Nr)rrrrr$�sz SharedPtrGetWorker.get_arg_typescCs
|jj�S)N)r�r )rr%rrrr&�sz"SharedPtrGetWorker.get_result_typecCs|dkp|jS)Nr?)r�)rrCrrrr��szSharedPtrGetWorker._supportscCs|dS)NZ_M_ptrr)rr%rrrr'�szSharedPtrGetWorker.__call__N)	rrrr�rr$r&r�r'rrrrr��sr�c@s0eZdZdZdd�Zdd�Zdd�Zdd	�Zd
S)�SharedPtrDerefWorkerz*Implement std::shared_ptr<T>::operator*().cCstj||�dS)N)r�r)rr�rrrr�szSharedPtrDerefWorker.__init__cCs|jS)N)r�)rr%rrrr&�sz$SharedPtrDerefWorker.get_result_typecCs|jS)N)r�)rrCrrrr�szSharedPtrDerefWorker._supportscCstj||�j�S)N)r�r'r!)rr%rrrr'szSharedPtrDerefWorker.__call__N)rrrr�rr&r�r'rrrrr��s
r�c@s8eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�ZdS)
�SharedPtrSubscriptWorkerz1Implement std::shared_ptr<T>::operator[](size_t).cCstj||�dS)N)r�r)rr�rrrrsz!SharedPtrSubscriptWorker.__init__cCst�S)N)r)rrrrr$sz&SharedPtrSubscriptWorker.get_arg_typescCs|jS)N)r�)rr%r/rrrr&sz(SharedPtrSubscriptWorker.get_result_typecCs|jS)N)r�)rrCrrrr�sz"SharedPtrSubscriptWorker._supportscCsZtjdt|j��}|rJ|t|jd��krJtd|jt|�t|jd��f��tj||�|S)Nz.*\[(\d+)]$r-z.shared_ptr<%s> index "%d" should not be >= %d.)	rr
rir�r)�groupr0r�r')rr%r/r:rrrr's
z!SharedPtrSubscriptWorker.__call__N)	rrrr�rr$r&r�r'rrrrr�	sr�c@s8eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�ZdS)
�SharedPtrUseCountWorkerz*Implement std::shared_ptr<T>::use_count().cCsdS)Nr)rr�rrrr%sz SharedPtrUseCountWorker.__init__cCsdS)Nr)rrrrr$(sz%SharedPtrUseCountWorker.get_arg_typescCs
tjd�S)NZlong)rr)rr%rrrr&+sz'SharedPtrUseCountWorker.get_result_typecCsdS)NTr)rrCrrrr�.sz!SharedPtrUseCountWorker._supportscCs|dd}|r|dSdS)NZ_M_refcountZ_M_piZ_M_use_countrr)rr%Z	refcountsrrrr'1sz SharedPtrUseCountWorker.__call__N)	rrrr�rr$r&r�r'rrrrr�"sr�c@s(eZdZdZdd�Zdd�Zdd�ZdS)	�SharedPtrUniqueWorkerz'Implement std::shared_ptr<T>::unique().cCstj||�dS)N)r�r)rr�rrrr9szSharedPtrUniqueWorker.__init__cCs
tjd�S)Nr)rr)rr%rrrr&<sz%SharedPtrUniqueWorker.get_result_typecCstj||�dkS)Nr-)r�r')rr%rrrr'?szSharedPtrUniqueWorker.__call__N)rrrr�rr&r'rrrrr�6sr�c@seZdZdd�Zdd�ZdS)�SharedPtrMethodsMatchercsftjjj�td�tdt�tdt�tdt�tdt�tdt	�tdt
�d��_�fd	d
��jD��_dS)N�
shared_ptrr?z
operator->z	operator*z
operator[]�	use_count�unique)r?z
operator->z	operator*z
operator[]r�r�csg|]}�j|�qSr)r8)r9r:)rrrr;Osz4SharedPtrMethodsMatcher.__init__.<locals>.<listcomp>)
rrr<rr=rr�r�r�r�r�r8r>)rr)rrrDs

z SharedPtrMethodsMatcher.__init__cCsPt|d�sdS|jj|�}|dks*|jr.dS|j|jd��}|j|�rL|SdS)Nr�r)rr8r?r@rrAr�)rrBrCrDr�rrrr
Qs

zSharedPtrMethodsMatcher.matchN)rrrrr
rrrrr�Cs
r�cCstjj|t��tjj|t��tjj|t��tjj|t��tjj|t��tjj|td��tjj|td��tjj|td��tjj|td��tjj|td��tjj|td��tjj|td��tjj|td��tjj|t	��tjj|t
��dS)	N�set�mapZmultisetZmultimapZ
unordered_setZ
unordered_mapZunordered_multisetZunordered_multimap)rrZregister_xmethod_matcherr2rgr[rrr�r�r�r�)Zlocusrrr�register_libstdcxx_xmethods]s.r�)>rZgdb.xmethodrr=rrrrrrrZ
XMethodWorkerrr#r(r*r,r.r1r<r2rErRrSrTrUrXrZr[r]r`rcrgrjrnrorprqrrrtr{r|r}r~rr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrr�<module>sr
	
		*


Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists