shell bypass 403

Cubjrnet7 Shell


name : xmethods.cpython-39.pyc
a

�fo�@s�ddlZddlZddlZdZdd�Zdd�ZGdd�dejj�ZGd	d
�d
ejj	�Z
Gdd�de
�ZGd
d�de
�ZGdd�de
�Z
Gdd�de
�ZGdd�de
�ZGdd�de
�ZGdd�dejj�ZGdd�dejj	�ZGdd�de�ZGdd�de�ZGdd �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�ZGd-d.�d.e�ZGd/d0�d0ejj�ZGd1d2�d2ejj	�ZGd3d4�d4e�Z Gd5d6�d6e�Z!Gd7d8�d8e�Z"Gd9d:�d:e�Z#Gd;d<�d<ejj�Z$Gd=d>�d>ejj	�Z%Gd?d@�d@e%�Z&GdAdB�dBe%�Z'GdCdD�dDe%�Z(GdEdF�dFe%�Z)GdGdH�dHe%�Z*GdIdJ�dJe%�Z+GdKdL�dLejj�Z,GdMdN�dNejj	�Z-GdOdP�dPe-�Z.GdQdR�dRe-�Z/GdSdT�dTejj�Z0GdUdV�dVejj	�Z1GdWdX�dXe1�Z2GdYdZ�dZe1�Z3Gd[d\�d\ejj�Z4Gd]d^�d^ejj	�Z5Gd_d`�d`e5�Z6Gdadb�dbe5�Z7Gdcdd�ddejj	�Z8Gdedf�dfe8�Z9Gdgdh�dhejj�Z:didj�Z;dS)k�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
c@seZdZdd�ZdS)�LibStdCxxXMethodcCstjj�||�||_dS�N)r�xmethod�XMethod�__init__�worker_class)�self�namerrrrrszLibStdCxxXMethod.__init__N)�__name__�
__module__�__qualname__rrrrrrsrc@seZdZdd�Zdd�ZdS)�ArrayWorkerBasecCs||_||_dSr)�	_val_type�_size�r�val_type�sizerrrr&szArrayWorkerBase.__init__cCst�d�}|�|j�����S)Nz
(void *) 0)rZparse_and_eval�castr�pointer�dereference)rZnullptrrrr�
null_value*s
zArrayWorkerBase.null_valueN)rrrrrrrrrr%src@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�ArraySizeWorkercCst�|||�dSr�rrrrrrr/szArraySizeWorker.__init__cCsdSrr�rrrr�
get_arg_types2szArraySizeWorker.get_arg_typescCst�Sr�r
�r�objrrr�get_result_type5szArraySizeWorker.get_result_typecCs|jSr)rr%rrr�__call__8szArraySizeWorker.__call__N�rrrrr#r'r(rrrrr .sr c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�ArrayEmptyWorkercCst�|||�dSrr!rrrrr<szArrayEmptyWorker.__init__cCsdSrrr"rrrr#?szArrayEmptyWorker.get_arg_typescCst�Sr�r	r%rrrr'Bsz ArrayEmptyWorker.get_result_typecCst|j�dkS�Nr)�intrr%rrrr(EszArrayEmptyWorker.__call__Nr)rrrrr*;sr*c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�ArrayFrontWorkercCst�|||�dSrr!rrrrrIszArrayFrontWorker.__init__cCsdSrrr"rrrr#LszArrayFrontWorker.get_arg_typescCs|jSr�rr%rrrr'Osz ArrayFrontWorker.get_result_typecCs&t|j�dkr|ddS|��SdS�Nr�_M_elems�r-rrr%rrrr(RszArrayFrontWorker.__call__Nr)rrrrr.Hsr.c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�ArrayBackWorkercCst�|||�dSrr!rrrrrYszArrayBackWorker.__init__cCsdSrrr"rrrr#\szArrayBackWorker.get_arg_typescCs|jSrr/r%rrrr'_szArrayBackWorker.get_result_typecCs,t|j�dkr |d|jdS|��SdS)Nrr1�r2r%rrrr(bszArrayBackWorker.__call__Nr)rrrrr3Xsr3c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�
ArrayAtWorkercCst�|||�dSrr!rrrrriszArrayAtWorker.__init__cCst�Srr$r"rrrr#lszArrayAtWorker.get_arg_typescCs|jSrr/�rr&�indexrrrr'oszArrayAtWorker.get_result_typecCs4t|�t|j�kr(tdt|�|jf��|d|S)Nz%Array index "%d" should not be >= %d.r1)r-r�
IndexErrorr6rrrr(rs
�zArrayAtWorker.__call__Nr)rrrrr5hsr5c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�ArraySubscriptWorkercCst�|||�dSrr!rrrrryszArraySubscriptWorker.__init__cCst�Srr$r"rrrr#|sz"ArraySubscriptWorker.get_arg_typescCs|jSrr/r6rrrr'sz$ArraySubscriptWorker.get_result_typecCs&t|j�dkr|d|S|��SdSr0r2r6rrrr(�szArraySubscriptWorker.__call__Nr)rrrrr9xsr9c@seZdZdd�Zdd�ZdS)�ArrayMethodsMatchercsftjj��td�tdt�tdt�tdt�tdt	�tdt
�tdt�d��_�fd	d
��jD��_
dS)NZarrayr�empty�front�back�at�
operator[]�rr;r<r=r>r?csg|]}�j|�qSr��_method_dict��.0�mr"rr�
<listcomp>��z0ArrayMethodsMatcher.__init__.<locals>.<listcomp>)rr
�XMethodMatcherr�matcher_name_prefixrr r*r.r3r5r9rB�methodsr"rr"rr�s
��zArrayMethodsMatcher.__init__cCsdt�d|j�sdS|j�|�}|dus,|js0dSz|�d�}|�d�}WnYdS0|�||�S)Nz^std::(__\d+::)?array<.*>$rr4)�re�match�tagrB�get�enabled�template_argumentr)r�
class_type�method_name�methodZ
value_typerrrrrL�s
zArrayMethodsMatcher.matchN�rrrrrLrrrrr:�s
r:c@s$eZdZdd�Zdd�Zdd�ZdS)�DequeWorkerBasecCs||_d|jpd|_dS)Nir4)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_noder4�_M_first�_M_last�rW)rr&�start�finishrrrr�s���zDequeWorkerBase.sizecCs`|dd}|d|d}||kr0|d|S||}|ddt|�|j}|||jS)NrYrZr_r\r]r4)r-rW)rr&�idxraZfirst_node_sizeZ
index_noderrrr7�szDequeWorkerBase.indexN)rrrrrr7rrrrrU�s
rUc@s$eZdZdd�Zdd�Zdd�ZdS)�DequeEmptyWorkercCsdSrrr"rrrr#�szDequeEmptyWorker.get_arg_typescCst�Srr+r%rrrr'�sz DequeEmptyWorker.get_result_typecCs |ddd|dddkS)NrYrZr\r[rr%rrrr(�s�zDequeEmptyWorker.__call__N�rrrr#r'r(rrrrrd�srdc@s$eZdZdd�Zdd�Zdd�ZdS)�DequeSizeWorkercCsdSrrr"rrrr#�szDequeSizeWorker.get_arg_typescCst�Srr$r%rrrr'�szDequeSizeWorker.get_result_typecCs
|�|�Sr�rr%rrrr(�szDequeSizeWorker.__call__Nrerrrrrf�srfc@s$eZdZdd�Zdd�Zdd�ZdS)�DequeFrontWorkercCsdSrrr"rrrr#�szDequeFrontWorker.get_arg_typescCs|jSrr/r%rrrr'�sz DequeFrontWorker.get_result_typecCs|ddddS)NrYrZr\rrr%rrrr(�szDequeFrontWorker.__call__Nrerrrrrh�srhc@s$eZdZdd�Zdd�Zdd�ZdS)�DequeBackWorkercCsdSrrr"rrrr#�szDequeBackWorker.get_arg_typescCs|jSrr/r%rrrr'�szDequeBackWorker.get_result_typecCs^|ddd|dddkrF|dddd}|d|jdS|ddddSdS)	NrYr[r\r^r]r4r���r`�rr&Z	prev_noderrrr(�s�zDequeBackWorker.__call__Nrerrrrri�sric@s$eZdZdd�Zdd�Zdd�ZdS)�DequeSubscriptWorkercCst�Srr$r"rrrr#�sz"DequeSubscriptWorker.get_arg_typescCs|jSrr/�rr&Z	subscriptrrrr'�sz$DequeSubscriptWorker.get_result_typecCs|�||�Sr)r7rmrrrr(�szDequeSubscriptWorker.__call__Nrerrrrrl�srlc@s$eZdZdd�Zdd�Zdd�ZdS)�
DequeAtWorkercCst�Srr$r"rrrr#�szDequeAtWorker.get_arg_typescCs|jSrr/r6rrrr'�szDequeAtWorker.get_result_typecCs@t|�|��}t|�|kr0tdt|�|f��n|�||�SdS)Nz%Deque index "%d" should not be >= %d.)r-rr8r7)rr&r7Z
deque_sizerrrr(�s
�zDequeAtWorker.__call__Nrerrrrrn�srnc@seZdZdd�Zdd�ZdS)�DequeMethodsMatchercsftjj��td�tdt�tdt�tdt�tdt	�tdt
�tdt�d��_�fd	d
��jD��_
dS)N�dequer;rr<r=r?r>)r;rr<r=r?r>csg|]}�j|�qSrrArCr"rrrFrGz0DequeMethodsMatcher.__init__.<locals>.<listcomp>)rr
rHrrIrrdrfrhrirlrnrBrJr"rr"rrs
��zDequeMethodsMatcher.__init__cCs@t�d|j�sdS|j�|�}|dus,|js0dS|�|�d��S)Nz^std::(__\d+::)?deque<.*>$r�rKrLrMrBrNrOrrP�rrQrRrSrrrrLszDequeMethodsMatcher.matchNrTrrrrros
roc@seZdZdd�Zdd�ZdS)�ForwardListWorkerBasecCs||_||_dSr�r�
_node_type�rr�	node_typerrrrszForwardListWorkerBase.__init__cCsdSrrr"rrrr#!sz#ForwardListWorkerBase.get_arg_typesN)rrrrr#rrrrrssrsc@seZdZdd�Zdd�ZdS)�ForwardListEmptyWorkercCst�Srr+r%rrrr'%sz&ForwardListEmptyWorker.get_result_typecCs|ddddkS)NrY�_M_head�_M_nextrrr%rrrr((szForwardListEmptyWorker.__call__N�rrrr'r(rrrrrx$srxc@seZdZdd�Zdd�ZdS)�ForwardListFrontWorkercCs|jSrr/r%rrrr',sz&ForwardListFrontWorker.get_result_typecCs:|ddd�|j�}|ddj}|�|j�����S)NrYryrz�
_M_storage)rru�addressrrr)rr&�nodeZval_addressrrrr(/szForwardListFrontWorker.__call__Nr{rrrrr|+sr|c@seZdZdd�Zdd�ZdS)�ForwardListMethodsMatchercsJtd}tjj��|�tdt�tdt�d��_�fdd��jD��_	dS)NZforward_listr;r<)r;r<csg|]}�j|�qSrrArCr"rrrF<rGz6ForwardListMethodsMatcher.__init__.<locals>.<listcomp>)
rIrr
rHrrrxr|rBrJ)rZmatcher_namerr"rr5s�z"ForwardListMethodsMatcher.__init__cCs\t�d|j�sdS|j�|�}|dus,|js0dS|�d�}t�t	|�d��
�}|�||�S)Nz!^std::(__\d+::)?forward_list<.*>$r�::_Node�rKrLrMrBrNrOrPrr�strrr�rrQrRrSrrwrrrrL>s
zForwardListMethodsMatcher.matchNrTrrrrr�4s	r�c@s$eZdZdd�Zdd�Zdd�ZdS)�ListWorkerBasecCs||_||_dSrrtrvrrrrKszListWorkerBase.__init__cCsdSrrr"rrrr#OszListWorkerBase.get_arg_typescCsB|��}|j��djdkr$|dS|dj}|�|j�����S)Nr4Z_M_datar})r�type�fieldsrr~rrr)rrZaddrrrr�get_value_from_nodeRs

z"ListWorkerBase.get_value_from_nodeN)rrrrr#r�rrrrr�Jsr�c@seZdZdd�Zdd�ZdS)�ListEmptyWorkercCst�Srr+r%rrrr'\szListEmptyWorker.get_result_typecCs&|dd}|d|jkrdSdSdS)NrYr]rzTF�r~)rr&Z	base_noderrrr(_szListEmptyWorker.__call__Nr{rrrrr�[sr�c@seZdZdd�Zdd�ZdS)�ListSizeWorkercCst�Srr$r%rrrr'gszListSizeWorker.get_result_typecCs@|ddd}|ddj}d}||kr<|d}|d7}q"|S)NrYr]rzrr4r�)rr&Z
begin_nodeZend_noderrrrr(js
zListSizeWorker.__call__Nr{rrrrr�fsr�c@seZdZdd�Zdd�ZdS)�ListFrontWorkercCs|jSrr/r%rrrr'tszListFrontWorker.get_result_typecCs"|ddd�|j�}|�|�S)NrYr]rz�rrur�)rr&rrrrr(wszListFrontWorker.__call__Nr{rrrrr�ssr�c@seZdZdd�Zdd�ZdS)�ListBackWorkercCs|jSrr/r%rrrr'|szListBackWorker.get_result_typecCs"|ddd�|j�}|�|�S)NrYr]Z_M_prevr�rkrrrr(szListBackWorker.__call__Nr{rrrrr�{sr�c@seZdZdd�Zdd�ZdS)�ListMethodsMatchercsVtjj��td�tdt�tdt�tdt�tdt	�d��_
�fdd��j
D��_dS)	N�listr;rr<r=)r;rr<r=csg|]}�j|�qSrrArCr"rrrF�rGz/ListMethodsMatcher.__init__.<locals>.<listcomp>)rr
rHrrIrr�r�r�r�rBrJr"rr"rr�s
��zListMethodsMatcher.__init__cCs\t�d|j�sdS|j�|�}|dus,|js0dS|�d�}t�t	|�d��
�}|�||�S)Nz%^std::(__\d+::)?(__cxx11::)?list<.*>$rr�r�r�rrrrL�s
zListMethodsMatcher.matchNrTrrrrr��sr�c@s$eZdZdd�Zdd�Zdd�ZdS)�VectorWorkerBasecCs
||_dSrr/rXrrrr�szVectorWorkerBase.__init__cCsz|jjtjkr^|ddd}|ddd}|ddd}|��jjd}||||S|dd|ddSdS)NrYrZ�_M_pr[Z	_M_offset��r�coderZTYPE_CODE_BOOLrr�rV)rr&rarbZ
finish_offset�bit_sizerrrr�szVectorWorkerBase.sizecCsj|jjtjkrV|ddd}|��jjd}|||}||}|��d|>@dkS|dd|SdS)NrYrZr�r�r4rr�)rr&r7rar�Zvalp�offsetrrrrN�szVectorWorkerBase.getN)rrrrrrNrrrrr��s
r�c@s$eZdZdd�Zdd�Zdd�ZdS)�VectorEmptyWorkercCsdSrrr"rrrr#�szVectorEmptyWorker.get_arg_typescCst�Srr+r%rrrr'�sz!VectorEmptyWorker.get_result_typecCst|�|��dkSr,)r-rr%rrrr(�szVectorEmptyWorker.__call__Nrerrrrr��sr�c@s$eZdZdd�Zdd�Zdd�ZdS)�VectorSizeWorkercCsdSrrr"rrrr#�szVectorSizeWorker.get_arg_typescCst�Srr$r%rrrr'�sz VectorSizeWorker.get_result_typecCs
|�|�Srrgr%rrrr(�szVectorSizeWorker.__call__Nrerrrrr��sr�c@s$eZdZdd�Zdd�Zdd�ZdS)�VectorFrontWorkercCsdSrrr"rrrr#�szVectorFrontWorker.get_arg_typescCs|jSrr/r%rrrr'�sz!VectorFrontWorker.get_result_typecCs|�|d�Sr,)rNr%rrrr(�szVectorFrontWorker.__call__Nrerrrrr��sr�c@s$eZdZdd�Zdd�Zdd�ZdS)�VectorBackWorkercCsdSrrr"rrrr#�szVectorBackWorker.get_arg_typescCs|jSrr/r%rrrr'�sz VectorBackWorker.get_result_typecCs|�|t|�|��d�S�Nr4)rNr-rr%rrrr(�szVectorBackWorker.__call__Nrerrrrr��sr�c@s$eZdZdd�Zdd�Zdd�ZdS)�VectorAtWorkercCst�Srr$r"rrrr#�szVectorAtWorker.get_arg_typescCs|jSrr/r6rrrr'�szVectorAtWorker.get_result_typecCs>t|�|��}t|�|kr.tdt|�|f��|�|t|��S)Nz&Vector index "%d" should not be >= %d.)r-rr8rN)rr&r7rrrrr(�s
�zVectorAtWorker.__call__Nrerrrrr��sr�c@s$eZdZdd�Zdd�Zdd�ZdS)�VectorSubscriptWorkercCst�Srr$r"rrrr#�sz#VectorSubscriptWorker.get_arg_typescCs|jSrr/rmrrrr'�sz%VectorSubscriptWorker.get_result_typecCs|�|t|��Sr)rNr-rmrrrr(�szVectorSubscriptWorker.__call__Nrerrrrr��sr�c@seZdZdd�Zdd�ZdS)�VectorMethodsMatchercsftjj��td�tdt�tdt�tdt�tdt	�tdt
�tdt�d��_�fd	d
��jD��_
dS)NZvectorrr;r<r=r>r?r@csg|]}�j|�qSrrArCr"rrrFrGz1VectorMethodsMatcher.__init__.<locals>.<listcomp>)rr
rHrrIrr�r�r�r�r�r�rBrJr"rr"rr�s
���	zVectorMethodsMatcher.__init__cCs@t�d|j�sdS|j�|�}|dus,|js0dS|�|�d��S)Nz^std::(__\d+::)?vector<.*>$rrqrrrrrrLszVectorMethodsMatcher.matchNrTrrrrr��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_trYZ
_M_node_countr�r%rrr�
node_countsz)AssociativeContainerWorkerBase.node_countcCsdSrrr"rrrr#sz,AssociativeContainerWorkerBase.get_arg_typesN)rrrrr�r#rrrrr�sr�c@seZdZdd�Zdd�ZdS)�AssociativeContainerEmptyWorkercCst�Srr+r%rrrr'sz/AssociativeContainerEmptyWorker.get_result_typecCst|�|��dkSr,)r-r�r%rrrr(sz(AssociativeContainerEmptyWorker.__call__Nr{rrrrr�sr�c@seZdZdd�Zdd�ZdS)�AssociativeContainerSizeWorkercCst�Srr$r%rrrr'!sz.AssociativeContainerSizeWorker.get_result_typecCs
|�|�Sr)r�r%rrrr($sz'AssociativeContainerSizeWorker.__call__Nr{rrrrr� sr�c@seZdZdd�Zdd�ZdS)�"AssociativeContainerMethodsMatchercsLtjj��t|�|�_tdt�tdt�d��_	�fdd��j	D��_
dS)Nrr;)rr;csg|]}�j|�qSrrArCr"rrrF1rGz?AssociativeContainerMethodsMatcher.__init__.<locals>.<listcomp>)rr
rHrrI�_namerr�r�rBrJ)rrrr"rr(s
���z+AssociativeContainerMethodsMatcher.__init__cCsJt�d|j|j�sdS|j�|�}|dus2|js6dSd|jv}|�|�S)Nz^std::(__\d+::)?%s<.*>$r�)rKrLr�rMrBrNrOr)rrQrRrSr�rrrrL3s
z(AssociativeContainerMethodsMatcher.matchNrTrrrrr�'sr�c@s8eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�ZdS)
�UniquePtrGetWorkerzIImplements 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_typerrrrAszUniquePtrGetWorker.__init__cCsdSrrr"rrrr#Hsz UniquePtrGetWorker.get_arg_typescCs
|j��Sr�r�rr%rrrr'Ksz"UniquePtrGetWorker.get_result_typecCs|dkp|jS)z/operator-> is not supported for unique_ptr<T[]>rN�r��rrRrrr�	_supportsNszUniquePtrGetWorker._supportscCs�|��j��djj}t�d|�r0|dd}nt�d|�rF|d}ndS|j��dj}|��dj}|��d}|jdkr�|�|�dS|jr�|�|j�SdSdS)Nrz+^std::(__\d+::)?__uniq_ptr_(data|impl)<.*>$r�z^std::(__\d+::)?tuple<.*>$r4Z_M_head_impl)	rr�r�rMrKrLrrZ
is_base_class)rr&Z	impl_typeZtuple_memberZtuple_impl_typeZtuple_head_typeZ
head_fieldrrrr(Rs

zUniquePtrGetWorker.__call__N�	rrr�__doc__rr#r'r�r(rrrrr�>sr�c@s0eZdZdZdd�Zdd�Zdd�Zdd	�Zd
S)�UniquePtrDerefWorkerz*Implements std::unique_ptr<T>::operator*()cCst�||�dSr�r�rr�rrrrhszUniquePtrDerefWorker.__init__cCs|jSr�r�r%rrrr'ksz$UniquePtrDerefWorker.get_result_typecCs|jS)z.operator* is not supported for unique_ptr<T[]>r�r�rrrr�nszUniquePtrDerefWorker._supportscCst�||���Sr)r�r(rr%rrrr(rszUniquePtrDerefWorker.__call__N�rrrr�rr'r�r(rrrrr�es
r�c@s8eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�ZdS)
�UniquePtrSubscriptWorkerz1Implements std::unique_ptr<T>::operator[](size_t)cCst�||�dSrr�r�rrrrxsz!UniquePtrSubscriptWorker.__init__cCst�Srr$r"rrrr#{sz&UniquePtrSubscriptWorker.get_arg_typescCs|jSrr�r6rrrr'~sz(UniquePtrSubscriptWorker.get_result_typecCs|jS)z0operator[] is only supported for unique_ptr<T[]>r�r�rrrr��sz"UniquePtrSubscriptWorker._supportscCst�||�|Sr)r�r(r6rrrr(�sz!UniquePtrSubscriptWorker.__call__Nr�rrrrr�usr�c@seZdZdd�Zdd�ZdS)�UniquePtrMethodsMatchercsVtjj��td�tdt�tdt�tdt�tdt�d��_	�fdd��j	D��_
dS)	NZ
unique_ptrrN�
operator->�	operator*r?)rNr�r�r?csg|]}�j|�qSrrArCr"rrrF�rGz4UniquePtrMethodsMatcher.__init__.<locals>.<listcomp>)rr
rHrrIrr�r�r�rBrJr"rr"rr�s
��z UniquePtrMethodsMatcher.__init__cCsRt�d|j�sdS|j�|�}|dus,|js0dS|�|�d��}|�|�rN|SdS)Nz^std::(__\d+::)?unique_ptr<.*>$r�	rKrLrMrBrNrOrrPr��rrQrRrSZworkerrrrrL�s
zUniquePtrMethodsMatcher.matchNrTrrrrr��sr�c@s8eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�ZdS)
�SharedPtrGetWorkerzIImplements std::shared_ptr<T>::get() and std::shared_ptr<T>::operator->()cCs*|jtjk|_|jr |��|_n||_dSrr�r�rrrr�szSharedPtrGetWorker.__init__cCsdSrrr"rrrr#�sz SharedPtrGetWorker.get_arg_typescCs
|j��Srr�r%rrrr'�sz"SharedPtrGetWorker.get_result_typecCs|dkp|jS)z/operator-> is not supported for shared_ptr<T[]>rNr�r�rrrr��szSharedPtrGetWorker._supportscCs|dS)NZ_M_ptrrr%rrrr(�szSharedPtrGetWorker.__call__Nr�rrrrr��sr�c@s0eZdZdZdd�Zdd�Zdd�Zdd	�Zd
S)�SharedPtrDerefWorkerz*Implements std::shared_ptr<T>::operator*()cCst�||�dSr�r�rr�rrrr�szSharedPtrDerefWorker.__init__cCs|jSrr�r%rrrr'�sz$SharedPtrDerefWorker.get_result_typecCs|jS)z.operator* is not supported for shared_ptr<T[]>r�r�rrrr��szSharedPtrDerefWorker._supportscCst�||���Sr)r�r(rr%rrrr(�szSharedPtrDerefWorker.__call__Nr�rrrrr��s
r�c@s8eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�ZdS)
�SharedPtrSubscriptWorkerz1Implements std::shared_ptr<T>::operator[](size_t)cCst�||�dSrr�r�rrrr�sz!SharedPtrSubscriptWorker.__init__cCst�Srr$r"rrrr#�sz&SharedPtrSubscriptWorker.get_arg_typescCs|jSrr�r6rrrr'�sz(SharedPtrSubscriptWorker.get_result_typecCs|jS)z0operator[] is only supported for shared_ptr<T[]>r�r�rrrr��sz"SharedPtrSubscriptWorker._supportscCsZt�dt|j��}|rJ|t|�d��krJtd|jt|�t|�d��f��t�||�|S)Nz.*\[(\d+)]$r4z.shared_ptr<%s> index "%d" should not be >= %d.)	rKrLr�r�r-�groupr8r�r()rr&r7rErrrr(�s�z!SharedPtrSubscriptWorker.__call__Nr�rrrrr��sr�c@s8eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�ZdS)
�SharedPtrUseCountWorkerz*Implements std::shared_ptr<T>::use_count()cCsdSrrr�rrrr�sz SharedPtrUseCountWorker.__init__cCsdSrrr"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	refcountsrrrr(�sz SharedPtrUseCountWorker.__call__Nr�rrrrr��sr�c@s(eZdZdZdd�Zdd�Zdd�ZdS)	�SharedPtrUniqueWorkerz'Implements std::shared_ptr<T>::unique()cCst�||�dSr)r�rr�rrrr�szSharedPtrUniqueWorker.__init__cCs
t�d�Srrr%rrrr'�sz%SharedPtrUniqueWorker.get_result_typecCst�||�dkSr�)r�r(r%rrrr(�szSharedPtrUniqueWorker.__call__N)rrrr�rr'r(rrrrr��sr�c@seZdZdd�Zdd�ZdS)�SharedPtrMethodsMatchercsftjj��td�tdt�tdt�tdt�tdt�tdt	�tdt
�d��_�fd	d
��jD��_dS)NZ
shared_ptrrNr�r�r?�	use_count�unique)rNr�r�r?r�r�csg|]}�j|�qSrrArCr"rrrFrGz4SharedPtrMethodsMatcher.__init__.<locals>.<listcomp>)
rr
rHrrIrr�r�r�r�r�rBrJr"rr"rrs
��z SharedPtrMethodsMatcher.__init__cCsRt�d|j�sdS|j�|�}|dus,|js0dS|�|�d��}|�|�rN|SdS)Nz^std::(__\d+::)?shared_ptr<.*>$rr�r�rrrrL
s
zSharedPtrMethodsMatcher.matchNrTrrrrr��s
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)rr
Zregister_xmethod_matcherr:r�ror�r�r�r�r�)Zlocusrrr�register_libstdcxx_xmethodss>��������r�)<rZgdb.xmethodrKrIr	r
r
rrZ
XMethodWorkerrr r*r.r3r5r9rHr:rUrdrfrhrirlrnrorsrxr|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>sn	




	






'

© 2025 Cubjrnet7