%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__/printers.cpython-39.opt-1.pyc

a

W�h���@s�ddlZddlZddlZddlZddlZddlZejddkrXeZe	Z
eZe
ZejjZn6Gdd�d�Zddlm
Z
mZGdd�dej�Ze�ZdazddlZWney�d	aYn0d	azddlZeejd
�r�daWney�Yn0eed�r�ejZneZdd
�Zdadd�Zdd�Z dd�Z!dd�Z"dd�Z#dd�Z$dd�Z%dd�Z&Gdd �d e�Z'Gd!d"�d"e�Z(d#d$�Z)d%d&�Z*d'd(�Z+Gd)d*�d*e�Z,d+d,�Z-d-d.�Z.Gd/d0�d0e�Z/Gd1d2�d2e�Z0Gd3d4�d4e0�Z1Gd5d6�d6e0�Z2Gd7d8�d8e�Z3Gd9d:�d:e�Z4Gd;d<�d<e�Z5Gd=d>�d>e�Z6Gd?d@�d@e�Z7GdAdB�dBe�Z8GdCdD�dDe�Z9GdEdF�dFe�Z:GdGdH�dHe�Z;dIdJ�Z<GdKdL�dLe�Z=GdMdN�dNe�Z>dOdP�Z?GdQdR�dRe�Z@GdSdT�dTe�ZAGdUdV�dVe�ZBGdWdX�dXe�ZCGdYdZ�dZe�ZDGd[d\�d\e�ZEd]d^�ZFGd_d`�d`e�ZGGdadb�dbe�ZHGdcdd�dde�ZIGdedf�dfe�ZJGdgdh�dhe�ZKGdidj�dje�ZLGdkdl�dle�ZMGdmdn�dne�ZNdodp�ZOGdqdr�dreN�ZPGdsdt�dteN�ZQGdudv�dveN�ZRGdwdx�dxeN�ZSGdydz�dze�ZTGd{d|�d|e�ZUGd}d~�d~e�ZVGdd��d�e�ZWGd�d��d�e�ZXGd�d��d�e�ZYGd�d��d�e�ZZGd�d��d�e�Z[Gd�d��d�e�Z\Gd�d��d�e�Z]Gd�d��d�e�Z^Gd�d��d�e�Z_Gd�d��d�e�Z`Gd�d��d�e�Zagd��Zbgd��ZcGd�d��d�e�ZdGd�d��d�e�ZeGd�d��d�e�ZfGd�d��d�e�ZgGd�d��d�e�ZhGd�d��d�e�ZiGd�d��d�e�ZjGd�d��d�e�ZkGd�d��d�e�ZlGd�d��d�e�ZmdanGd�d��d�e�Zod�d��ZpGd�d��d�e�Zqd�d�d��Zrd�d��Zsd�d��Ztd�d��Zueu�dS)��N�c@seZdZdZdd�ZdS)�Iteratora: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:
        <http://pythonhosted.org/six/#six.Iterator>
        cCs|��S�N)�__next__��self�r�1/usr/share/gcc-11/python/libstdcxx/v6/printers.py�next?sz
Iterator.nextN)�__name__�
__module__�__qualname__�__doc__r
rrrr	r4s
r)�imap�izipc@s(eZdZdZdd�Zdd�Zdd�ZdS)	�UTCz5Concrete tzinfo class representing the UTC time zone.cCs
t�d�S�Nr��datetimeZ	timedelta�r�dtrrr	�	utcoffsetIsz
UTC.utcoffsetcCsdS)Nrrrrrr	�tznameLsz
UTC.tznamecCs
t�d�Srrrrrr	�dstOszUTC.dstN)rrr
rrrrrrrr	rFsrTFZTypePrinter�ValuePrintercCsv|��}d|j|f}zt�|�WSty4Yn0|��}t|�r\|djr\|dj}qt	dt
|�|f��qdS)Nz%s::%srzCannot find type %s::%s)�strip_typedefs�tag�gdb�lookup_type�RuntimeError�fields�len�
is_base_class�type�
ValueError�str)Zorig�name�typ�searchr rrr	�	find_typensr)z__8::cGs�d�|d�dd�|D���}zt�|�WStjy�}zXt|vr�|�ddtd�}zt�|�WWYd}~Stjy�Yn0|�WYd}~n
d}~00dS)z8
    Lookup template specialization templ<args...>.
    z{}<{}>�, cSsg|]}t|��qSr)r%)�.0�arrr	�
<listcomp>��z%lookup_templ_spec.<locals>.<listcomp>�::�N)�format�joinrr�error�_versioned_namespace�replace)Ztempl�args�t�errr	�lookup_templ_spec�sr9cCs�d|vrd|}zt|d�}Wn|�d�}Yn0|��}zt||�WStjy�t|d�r�t|ddd�r�|�dd	d
�}zt||�WYStjy�Yn0YdS0dS)a�
    Lookup specialization of template nodename corresponding to containertype.

    nodename - The name of a class template, as a String
    containertype - The container, as a gdb.Type

    Return a gdb.Type for the corresponding specialization of nodename,
    or None if the type cannot be found.

    e.g. lookup_node_type('_List_node', gdb.lookup_type('std::list<int>'))
    will return a gdb.Type for the type std::_List_node<int>.
    r/�std::�
value_typerZstdzstd::__cxx1998zstd::__debugZ__gnu_debugz
::__cxx1998::r0N)r)�template_argumentrr9rr3�is_member_of_namespacer5)�nodenameZ
containertype�valtyperrr	�lookup_node_type�s(
�r@cGs>t|tj�rt|�}t|�}|D]}|�|d�r dSq dS)z�
    Test whether a type is a member of one of the specified namespaces.
    The type can be specified as a string or a gdb.Type object.
    r/TF)�
isinstancer�Typer%�strip_versioned_namespace�
startswith)r'Z
namespaces�	namespacerrr	r=�sr=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::%s<.*>$N)rArrBrr4�re�match)�x�
template_namerrr	�is_specialization_of�srJcCs|�td�S)N�)r5r4)�typenamerrr	rC�srCcCs<d}d}tjddkr&t�|||d�Stj|||dd�SdS)zCRemove "fundamentals_vN" inline namespace from qualified type name.z&^std::experimental::fundamentals_v\d::�std::experimental::rrr0)�countN)�sys�version_inforF�sub)r'�pattern�replrrr	�strip_fundts_namespace�s
rTcCsRt|�}|�dd�}d}dD]}|�||d|�}q|d}|�|d|�}|S)zARemove known inline namespaces from the canonical name of a type.�std::__cxx11::r:rM)Zfundamentals_v1Zfundamentals_v2r/zfilesystem::zv1::)rCr5)�type_strZexpt_nsZlfts_nsZfs_nsrrr	�strip_inline_namespaces�srWcCs<d}g}z|�|�|��Wn|YS0|d7}qdS)z-Return a type's template arguments as a list.rr0N)�appendr<)�type_obj�n�
template_argsrrr	�get_template_arg_list�s
r\c@s(eZdZdZdd�Zdd�Zdd�ZdS)	�SmartPtrIteratorz@An iterator for smart pointer types with a single 'child' value.cCs
||_dSr��_val�r�valrrr	�__init__szSmartPtrIterator.__init__cCs|Srrrrrr	�__iter__szSmartPtrIterator.__iter__cCs$|jdurt�d|j|_}d|fS)Nzget()�r_�
StopIterationr`rrr	r
s
zSmartPtrIterator.__next__N�rrr
rrbrcrrrrr	r]sr]c@s0eZdZdZdd�Zdd�Zdd�Zdd	�Zd
S)�SharedPointerPrinterzP
    Print a shared_ptr, weak_ptr, atomic<shared_ptr>, or atomic<weak_ptr>.
    cCst|�|_||_|d|_dS�N�_M_ptr)rC�	_typenamer_�_pointer�rrLrarrr	rbs
zSharedPointerPrinter.__init__cCs
t|j�Sr)r]rkrrrr	�childrenszSharedPointerPrinter.childrencCsR|jdkrD|jddd}||d}t|jdjd�}|�|�S|jddS)Nzstd::atomicZ_M_refcountZ_M_val�_M_ir�pointerZ_M_pi)rjr_r)r#�cast)rZptr_valZptr_typerrr	�_get_refcountss

z#SharedPointerPrinter._get_refcountscCspd}|��}|jj�d�}tt|��}|dkr`|d}|d}|dkrPd|}nd||df}d|j||fS)	N�emptyrZ_M_use_countZ
_M_weak_countzexpired, weak count %dzuse count %d, weak count %dr0z%s<%s> (%s))rqr_r#r<rCr%rj)r�stateZ	refcounts�targZusecountZ	weakcountrrr	�	to_string(s
�zSharedPointerPrinter.to_stringN)rrr
rrbrmrqrurrrr	rgs
	rgcCs�|j��}|djs&tdt|j���|�|dj�}|j��}t|�dkr^tdt|j���|djdkrt|dS|djr�|�|dj�Stdt|j���dS)zBReturn the tuple element stored in a _Tuple_impl<N, T> base class.���z-Unsupported implementation for std::tuple: %sr�_M_head_implN)r#r r"r$r%rpr!r&)ra�basesZ	head_baser rrr	�_tuple_impl_get9s$

�
�
�rycCsdtt|j��}||krtd��|�|j��dj�}|dkr\|�|j��dj�}|d8}q4t|�S)z6Return the result of std::get<n>(val) on a std::tuple.z0Out of range index for std::get<N> on std::tuplerr0)r!r\r#r$rpr ry)rZraZ
tuple_size�noderrr	�	tuple_getQs
r{cCsd|j��dj��}t|d�s(t|d�r6|dd}n$t|d�rJ|d}ntdt|���td|�S)z4Return the result of val.get() on a std::unique_ptr.rZ__uniq_ptr_dataZ__uniq_ptr_impl�_M_t�tuplez-Unsupported implementation for unique_ptr: %s)r#r rrJr$r%r{)raZ	impl_typeZtuple_memberrrr	�unique_ptr_get_s
�


�r~c@s(eZdZdZdd�Zdd�Zdd�ZdS)	�UniquePointerPrinterzPrint a unique_ptr.cCs
||_dSrr^rlrrr	rbtszUniquePointerPrinter.__init__cCstt|j��Sr)r]r~r_rrrr	rmwszUniquePointerPrinter.childrencCs|jj�d�}d�t|��S)Nrzstd::unique_ptr<{}>)r_r#r<r1r%�rr7rrr	ruzszUniquePointerPrinter.to_stringN)rrr
rrbrmrurrrr	rqsrcCs|dj�|�����S)z7Return the value held in a __gnu_cxx::__aligned_membuf.�
_M_storage)�addressrpro�dereference)Zbufr?rrr	�get_value_from_aligned_membufsr�cCsnzJ|j��dj}|dkr$|dWS|dkrH|j�d�}t|d|�WSWnYn0tdt|j���dS)z-Return the value held in an _List_node<_Val>.r0�_M_datar�r�!Unsupported implementation for %sN�r#r r&r<r�r$r%�rz�memberr?rrr	�get_value_from_list_node�s
r�c@s8eZdZdZGdd�de�Zdd�Zdd�Zdd	�Zd
S)�StdListPrinterzPrint a std::list.c@s$eZdZdd�Zdd�Zdd�ZdS)zStdListPrinter._iteratorcCs"||_|d|_|j|_d|_dS�N�_M_nextr)�	_nodetype�_baser��_head�_count�r�nodetype�headrrr	rb�s
z!StdListPrinter._iterator.__init__cCs|Srrrrrr	rc�sz!StdListPrinter._iterator.__iter__cCsR|j|jkrt�|j�|j���}|d|_|j}|jd|_t|�}d||fS)Nr�r0�[%d])r�r�rerpr�r�r�r�)r�eltrNrarrr	r�s
z!StdListPrinter._iterator.__next__N�rrr
rbrcrrrrr	�	_iterator�sr�cCst|�|_||_dSr�rCrjr_rlrrr	rb�s
zStdListPrinter.__init__cCs(td|jj���}|�||jdd�S)N�
_List_node�_M_impl�_M_node�r@r_r#ror��rr�rrr	rm�szStdListPrinter.childrencCs0|jdd}|d|jkr&d|jSd|jS)Nr�r�r��empty %s�%s)r_r�rj)rZheadnoderrr	ru�s
zStdListPrinter.to_stringN�	rrr
rrr�rbrmrurrrr	r��s
r�c@seZdZdd�Zdd�ZdS)�NodeIteratorPrintercCs$||_||_||_t||j�|_dSr)r_rj�	_contnamer@r#r�)rrLraZcontnamer>rrr	rb�szNodeIteratorPrinter.__init__cCs:|jdsd|jS|jd�|j�����}tt|��S)Nr�z(non-dereferenceable iterator for std::%s)r_r�rpr�ror�r%r��rrzrrr	ru�s


�zNodeIteratorPrinter.to_stringN)rrr
rbrurrrr	r��sr�c@seZdZdZdd�ZdS)�StdListIteratorPrinterzPrint std::list::iterator.cCst�|||dd�dS)N�listr��r�rbrlrrr	rb�szStdListIteratorPrinter.__init__N�rrr
rrbrrrr	r��sr�c@seZdZdZdd�ZdS)�StdFwdListIteratorPrinterz"Print std::forward_list::iterator.cCst�|||dd�dS)N�forward_list�_Fwd_list_noder�rlrrr	rb�s�z"StdFwdListIteratorPrinter.__init__Nr�rrrr	r��sr�c@s8eZdZdZGdd�de�Zdd�Zdd�Zdd	�Zd
S)�StdSlistPrinterzPrint a __gnu_cxx::slist.c@s$eZdZdd�Zdd�Zdd�ZdS)zStdSlistPrinter._iteratorcCs||_|dd|_d|_dS)N�_M_headr�r�r�r�r�r�rrr	rb�sz"StdSlistPrinter._iterator.__init__cCs|Srrrrrr	rc�sz"StdSlistPrinter._iterator.__iter__cCsL|jdkrt�|j�|j���}|d|_|j}|jd|_d||dfS)Nrr�r0r�r�)r�rerpr�r�r�)rr�rNrrr	r�s

z"StdSlistPrinter._iterator.__next__Nr�rrrr	r��sr�cCs
||_dSrr^rlrrr	rb�szStdSlistPrinter.__init__cCs td|jj�}|�|��|j�S)N�__gnu_cxx::_Slist_node)r@r_r#r�ror�rrr	rm�szStdSlistPrinter.childrencCs|jdddkrdSdS)Nr�r�rzempty __gnu_cxx::slistz__gnu_cxx::slistr^rrrr	ru�szStdSlistPrinter.to_stringNr�rrrr	r��s
r�c@s eZdZdZdd�Zdd�ZdS)�StdSlistIteratorPrinterz!Print __gnu_cxx::slist::iterator.cCs
||_dSrr^rlrrr	rb�sz StdSlistIteratorPrinter.__init__cCs<|jdsdStd|jj���}t|jd�|���d�S)Nr�z1non-dereferenceable iterator for __gnu_cxx::slistr�r�)r_r@r#ror%rpr�r�rrr	rus
�z!StdSlistIteratorPrinter.to_stringN�rrr
rrbrurrrr	r��sr�c@s@eZdZdZGdd�de�Zdd�Zdd�Zdd	�Zd
d�Z	dS)
�StdVectorPrinterzPrint a std::vector.c@s$eZdZdd�Zdd�Zdd�ZdS)zStdVectorPrinter._iteratorcCs^||_|rH|d|_d|_|d|_|d|_|j��j}d|j|_n||_||_d|_	dS)N�_M_pr�	_M_offset�)
�_bitvec�_item�_so�_finish�_for�r#�sizeof�_isizer�)r�start�finishZbitvec�ityperrr	rbs


z#StdVectorPrinter._iterator.__init__cCs|Srrrrrr	rcsz#StdVectorPrinter._iterator.__iter__cCs�|j}|jd|_|jr�|j|jkr4|j|jkr4t�t|j��d|j>@�}|jd|_|j|j	krv|jd|_d|_d||fS|j|jkr�t�|j��}|jd|_d||fSdS)Nr0rr�)
r�r�r�r�r�r�re�boolr�r�)rrNr�rrr	rs 
z#StdVectorPrinter._iterator.__next__Nr�rrrr	r�sr�cCs*t|�|_||_|j�d�jtjk|_dSr)	rCrjr_r#r<�coder�TYPE_CODE_BOOL�_is_boolrlrrr	rb0s
��zStdVectorPrinter.__init__cCs$|�|jdd|jdd|j�S)Nr��_M_start�	_M_finish)r�r_r�rrrr	rm6s�zStdVectorPrinter.childrenc	Cs�|jdd}|jdd}|jdd}|jr�|jddd}|jddd}|jddd}|��j}d|j}||||}|||}d|jt|�t|�fSd	|jt||�t||�fSdS)
Nr�r�r�Z_M_end_of_storager�r�r�z"%s<bool> of length %d, capacity %dz%s of length %d, capacity %d)r_r�r�r#r�rj�int)	rr�r��endZfor�Zbl�lengthZcapacityrrr	ru;s"

��zStdVectorPrinter.to_stringcCsdS�N�arrayrrrrr	�display_hintMszStdVectorPrinter.display_hintN)
rrr
rrr�rbrmrur�rrrr	r�s%r�c@s eZdZdZdd�Zdd�ZdS)�StdVectorIteratorPrinterzPrint std::vector::iterator.cCs
||_dSrr^rlrrr	rbTsz!StdVectorIteratorPrinter.__init__cCs |jdsdSt|jd���S)NZ
_M_currentz,non-dereferenceable iterator for std::vector�r_r%r�rrrr	ruWs
z"StdVectorIteratorPrinter.to_stringNr�rrrr	r�Qsr�c@s eZdZdZdd�Zdd�ZdS)�StdBitIteratorPrinterz@Print std::vector<bool>'s _Bit_iterator and _Bit_const_iterator.cCs
||_dSrr^rlrrr	rb`szStdBitIteratorPrinter.__init__cCs.|jdsdSt|jd��d|jd>@�S)Nr�z2non-dereferenceable iterator for std::vector<bool>r0r��r_r�r�rrrr	rucs

�zStdBitIteratorPrinter.to_stringNr�rrrr	r�]sr�c@s eZdZdZdd�Zdd�ZdS)�StdBitReferencePrinterz#Print std::vector<bool>::reference.cCs
||_dSrr^rlrrr	rbmszStdBitReferencePrinter.__init__cCs*|jdsdSt|jd��|jd@�S)Nr�z$invalid std::vector<bool>::referenceZ_M_maskr�rrrr	rups
z StdBitReferencePrinter.to_stringNr�rrrr	r�jsr�c@s8eZdZdZGdd�de�Zdd�Zdd�Zdd	�Zd
S)�StdTuplePrinterzPrint a std::tuple.c@s0eZdZedd��Zdd�Zdd�Zdd�Zd	S)
zStdTuplePrinter._iteratorcCsNt|�dkr"t|djd�rBdSn t|�dkr2dSt|�dkrBdStd��dS)Nrr0Z__tuple_baseTrFz4Top of tuple tree does not consist of a single node.)r!rJr#r$)�nodesrrr	�_is_nonempty_tuple}s�z,StdTuplePrinter._iterator._is_nonempty_tuplecCs:||_|jj��}|�|�r0|j�|dj�|_d|_dSr)r�r#r r�rpr�)rr�r�rrr	rb�s

z"StdTuplePrinter._iterator.__init__cCs|Srrrrrr	rc�sz"StdTuplePrinter._iterator.__iter__cCs�|js
t�|jj��}t|�dkr&t�t|�dkr:td��t|�dkr`|j�|dj�}d|_n&|j�|dj�}|j�|dj�|_|jd|_|j��}t|�dks�|djdkr�d|jd|fSd|jd|dfSdS)Nrrz/Cannot parse more than 2 nodes in a tuple tree.r0rwr�)	r�rer#r r!r$rpr�r&)rr��implr rrr	r�s&�	
z"StdTuplePrinter._iterator.__next__N)rrr
�staticmethodr�rbrcrrrrr	r�|s

r�cCst|�|_||_dSrr�rlrrr	rb�s
zStdTuplePrinter.__init__cCs|�|j�Sr)r�r_rrrr	rm�szStdTuplePrinter.childrencCs(t|jj���dkrd|jSd|jS)Nrr�z
%s containing)r!r_r#r rjrrrr	ru�s
zStdTuplePrinter.to_stringNr�rrrr	r�ys
Er�c@s0eZdZdZdd�Zdd�Zdd�Zdd	�Zd
S)�StdStackOrQueuePrinterz!Print a std::stack or std::queue.cCst|�|_t�|d�|_dS)N�c)rCrjr�default_visualizer�_visualizerrlrrr	rb�s
zStdStackOrQueuePrinter.__init__cCs
|j��Sr)r�rmrrrr	rm�szStdStackOrQueuePrinter.childrencCsd|j|j��fS)Nz%s wrapping: %s)rjr�rurrrr	ru�s�z StdStackOrQueuePrinter.to_stringcCst|jd�r|j��SdS)Nr�)�hasattrr�r�rrrr	r��s
z#StdStackOrQueuePrinter.display_hintN)rrr
rrbrmrur�rrrr	r��s
r�c@s0eZdZdZdd�Zdd�Zdd�Zdd	�Zd
S)�RbtreeIteratorzf
    Turn an RB-tree-based container (std::map, std::set etc.) into
    a Python iterable object.
    cCs2|ddd|_|dddd|_d|_dS)Nr|r�Z
_M_node_countZ	_M_header�_M_leftr)�_size�_noder�)rZrbtreerrr	rb�szRbtreeIterator.__init__cCs|Srrrrrr	rc�szRbtreeIterator.__iter__cCs
t|j�Sr)r�r�rrrr	�__len__�szRbtreeIterator.__len__cCs�|j|jkrt�|j}|jd|_|j|jkr�|j}|��drh|��d}|��dr�|��d}qLnB|��d}||��dkr�|}|��d}qt|��d|kr�|}||_|S)Nr0Z_M_rightr�Z	_M_parent)r�r�rer�r�)r�resultrz�parentrrr	r�s$zRbtreeIterator.__next__N)rrr
rrbrcr�rrrrr	r��s
r�cCsnzJ|j��dj}|dkr$|dWS|dkrH|j�d�}t|d|�WSWnYn0tdt|j���dS)z0Return the value held in an _Rb_tree_node<_Val>.r0Z_M_value_fieldr�rr�Nr�r�rrr	�get_value_from_Rb_tree_node
s
r�c@s eZdZdZdd�Zdd�ZdS)�StdRbtreeIteratorPrinterz2Print std::map::iterator, std::set::iterator, etc.cCs"||_td|jj�}|��|_dS�N�
_Rb_tree_node)r_r@r#ro�
_link_type)rrLrar�rrr	rb!sz!StdRbtreeIteratorPrinter.__init__cCs0|jdsdS|jd�|j���}tt|��S)Nr�z6non-dereferenceable iterator for associative container)r_rpr�r�r%r�r�rrr	ru&s
z"StdRbtreeIteratorPrinter.to_stringNr�rrrr	r�sr�c@s eZdZdZdd�Zdd�ZdS)�StdDebugIteratorPrinterz-Print a debug enabled version of an iterator.cCs
||_dSrr^rlrrr	rb0sz StdDebugIteratorPrinter.__init__cCsbt�d�}|jj�d�}|j�|�d}|s<t|j�|��S|jd|dkrRdSt|j�|��S)Nz __gnu_debug::_Safe_iterator_baserZ_M_sequenceZ
_M_versionzinvalid iterator)rrr_r#r<rpr%)rZ	base_typer�Zsafe_seqrrr	ru5s
z!StdDebugIteratorPrinter.to_stringNr�rrrr	r�-sr�cCs|dkrdSd|S)zDReturn either "1 element" or "N elements" depending on the argument.r0z	1 elementz%d elementsr)�numrrr	�num_elements@sr�c@s@eZdZdZGdd�de�Zdd�Zdd�Zdd	�Zd
d�Z	dS)
�
StdMapPrinterz"Print a std::map or std::multimap.c@s$eZdZdd�Zdd�Zdd�ZdS)zStdMapPrinter._itercCs||_d|_||_dSr��_rbiterr��_type�rZrbiterr#rrr	rbJszStdMapPrinter._iter.__init__cCs|Srrrrrr	rcOszStdMapPrinter._iter.__iter__cCsh|jddkr@t|j�}|�|j���}t|�}||_|d}n
|jd}d|j|f}|jd|_|S)Nrr�first�secondr�r0)r�r
r�rpr�r�r�Z_pair)rrZ�itemr�rrr	rRs


zStdMapPrinter._iter.__next__Nr�rrrr	�_iterIsr�cCst|�|_||_dSrr�rlrrr	rb_s
zStdMapPrinter.__init__cCsd|jttt|j���fS�N�
%s with %s�rjr�r!r�r_rrrr	rucs�zStdMapPrinter.to_stringcCs$td|jj���}|�t|j�|�Sr��r@r_r#ror�r�r�rrr	rmgszStdMapPrinter.childrencCsdS�N�maprrrrr	r�kszStdMapPrinter.display_hintN�
rrr
rrr�rbrurmr�rrrr	r�Esr�c@s8eZdZdZGdd�de�Zdd�Zdd�Zdd	�Zd
S)�
StdSetPrinterz"Print a std::set or std::multiset.c@s$eZdZdd�Zdd�Zdd�ZdS)zStdSetPrinter._itercCs||_d|_||_dSrr�r�rrr	rbtszStdSetPrinter._iter.__init__cCs|Srrrrrr	rcyszStdSetPrinter._iter.__iter__cCs@t|j�}|�|j���}t|�}d|j|f}|jd|_|S)Nr�r0)r
r�rpr�r�r�r�)rr�r�rrr	r|s
zStdSetPrinter._iter.__next__Nr�rrrr	r�ssr�cCst|�|_||_dSrr�rlrrr	rb�s
zStdSetPrinter.__init__cCsd|jttt|j���fSr�r�rrrr	ru�s�zStdSetPrinter.to_stringcCs$td|jj���}|�t|j�|�Sr�r�r�rrr	rm�szStdSetPrinter.childrenN)	rrr
rrr�rbrurmrrrr	r�os
r�c@s(eZdZdZdd�Zdd�Zdd�ZdS)	�StdBitsetPrinterzPrint a std::bitset.cCst|�|_||_dSrr�rlrrr	rb�s
zStdBitsetPrinter.__init__cCs
d|jS)Nr�)rjrrrr	ru�szStdBitsetPrinter.to_stringc	Cs�z|jd}WngYS0|j}|jtjkr>|��j}n|g}|j}|j|}g}d}||kr�||}d}|dkr�|d@dkr�|�d||d|df�|d}|d?}qp|d}q\|S)NZ_M_wrr0r�r�)r_r#r�r�TYPE_CODE_ARRAY�targetr�rX)	rZwordsZwtypeZtsizeZnwordsr�Zbyte�w�bitrrr	rm�s,



zStdBitsetPrinter.childrenN)rrr
rrbrurmrrrr	r��sr�c@s@eZdZdZGdd�de�Zdd�Zdd�Zdd	�Zd
d�Z	dS)
�StdDequePrinterzPrint a std::deque.c@s$eZdZdd�Zdd�Zdd�ZdS)zStdDequePrinter._itercCs(||_||_||_||_||_d|_dSr)r��_p�_end�_last�_buffer_sizer�)rrzr�r��lastZbuffer_sizerrr	rb�szStdDequePrinter._iter.__init__cCs|Srrrrrr	rc�szStdDequePrinter._iter.__iter__cCsr|j|jkrt�d|j|j��f}|jd|_|jd|_|j|jkrn|jd|_|jd|_|j|j|_|S)Nr�r0r)rrrer�r�rr�r)rr�rrr	r�szStdDequePrinter._iter.__next__Nr�rrrr	r��sr�cCsHt|�|_||_|j�d�|_|jj}|dkr>td|�|_nd|_dS)Nrir0)	rCrjr_r#r<Z_elttyper�r�r)rrLra�sizerrr	rb�s
zStdDequePrinter.__init__cCsx|jdd}|jdd}|d|dd}|d|d}|d|d}|j|||}d	|jtt|��fS)
Nr�r�r�r�r0�_M_last�_M_cur�_M_firstr�)r_rrjr��long)rr�r�Zdelta_nZdelta_sZdelta_errrr	ru�szStdDequePrinter.to_stringcCs@|jdd}|jdd}|�|d|d|d|d|j�S)Nr�r�r�r�rr)r_r�r)rr�r�rrr	rm�s

�zStdDequePrinter.childrencCsdSr�rrrrr	r��szStdDequePrinter.display_hintNr�rrrr	r�s
rc@s eZdZdZdd�Zdd�ZdS)�StdDequeIteratorPrinterzPrint std::deque::iterator.cCs
||_dSrr^rlrrr	rbsz StdDequeIteratorPrinter.__init__cCs |jdsdSt|jd���S)Nrz+non-dereferenceable iterator for std::dequer�rrrr	ru	s
z!StdDequeIteratorPrinter.to_stringNr�rrrr	rsrc@s(eZdZdZdd�Zdd�Zdd�ZdS)	�StdStringPrinterz'Print a std::basic_string of some kind.cCs||_|�d�dk|_dS)Nz::__cxx11::basic_stringrv)r_�find�_new_stringrlrrr	rbszStdStringPrinter.__init__cCs�|jj}|jtjkr|��}|jdd}|jrL|jd}|�|j���}n<|�	���}t�
t|�d���}|�|�d}|�
�d}t|d�r�|j|d�S|j|d�S)	NZ_M_dataplusr�Z_M_string_lengthz::_Repr0Z	_M_length�lazy_string�r�)r_r#r�r�
TYPE_CODE_REFr�rrpr�unqualifiedrr%ror�r�r�string)rr#�ptrr�ZrealtypeZreptype�headerrrr	rus

zStdStringPrinter.to_stringcCsdS�Nrrrrrr	r�-szStdStringPrinter.display_hintN�rrr
rrbrur�rrrr	rsrcCs"|d}|d}|d}|||fS)z'Access the streambuf put area pointers.Z
_M_out_begZ
_M_out_curZ	_M_in_endr)�	streambuf�pbase�pptr�egptrrrr	�access_streambuf_ptrs1src@s(eZdZdZdd�Zdd�Zdd�ZdS)	�StdStringBufPrinterzPrint a std::basic_stringbuf.cCs
||_dSrr^)r�_rarrr	rb<szStdStringBufPrinter.__init__cCsJt|j�\}}}|r@|r ||kr0|j||d�S|j||d�S|jdS)NrZ	_M_string)rr_r)rrrrrrr	ru?szStdStringBufPrinter.to_stringcCsdSrrrrrr	r�Isz StdStringBufPrinter.display_hintNrrrrr	r9s
rc@s(eZdZdZdd�Zdd�Zdd�ZdS)	�StdStringStreamPrinterz Print a std::basic_stringstream.cCsZ||_||_dd�|j��D�d}t�d|�|�j�t�d�|_	|j	|djk|_
dS)NcSsg|]}|jr|j�qSr)r"r#)r+�frrr	r-Xr.z3StdStringStreamPrinter.__init__.<locals>.<listcomp>rZ__streamz$__stream->rdbuf()�_M_stringbuf)r_rjr#r rZset_convenience_variablerpr��parse_and_eval�
_streambuf�_was_redirected)rrLraZbasetyperrr	rbPszStdStringStreamPrinter.__init__cCs$|jrd|j|j��fS|jdS)Nz%s redirected to %sr!)r$rjr#r�r_rrrr	ru]s
�z StdStringStreamPrinter.to_stringcCs|jr
dSdSr)r$rrrr	r�csz#StdStringStreamPrinter.display_hintNrrrrr	rMs
rc@s$eZdZdd�Zdd�Zdd�ZdS)�Tr1HashtableIteratorcCsf|d|_d|_|d|_t|jd���|_d|_|j|jkrb|j|j|_|jrTqb|jd|_q2dS)NZ
_M_bucketsrZ_M_bucket_countZ_Noder0)�_buckets�_bucket�
_bucket_countr)r#ro�
_node_typer�)r�	hashtablerrr	rbjs

zTr1HashtableIterator.__init__cCs|Srrrrrr	rcvszTr1HashtableIterator.__iter__cCs�|jdkrt�|j�|j�}|��d}|��d|_|jdkr||jd|_|j|jkr||j|j|_|jrnq||jd|_qL|S)NrZ_M_vr�r0)r�rerpr)r�r'r(r&)rrzr�rrr	rys

zTr1HashtableIterator.__next__Nr�rrrr	r%isr%c@s$eZdZdd�Zdd�Zdd�ZdS)�StdHashtableIteratorcCsR|dd|_|j�d�}|j�d��d�}tdt|�|r>dnd�}|��|_dS)	NZ_M_before_begin�_M_nxtr0�	rzstd::__detail::_Hash_node�trueZfalse)r�r#r<r9r%ror))rr*r?�cachedZ	node_typerrr	rb�s

�zStdHashtableIterator.__init__cCs|Srrrrrr	rc�szStdHashtableIterator.__iter__cCsR|jdkrt�|j�|j���}|d|_|dj}|�|j�d����}|��S)Nrr,r�)	r�rerpr)r�r�r#r<ro)rr��valptrrrr	r�s


zStdHashtableIterator.__next__Nr�rrrr	r+�sr+c@s<eZdZdZdd�Zdd�Zdd�Zedd	��Zd
d�Z	dS)
�Tr1UnorderedSetPrinterz1Print a std::unordered_set or tr1::unordered_set.cCst|�|_||_dSrr�rlrrr	rb�s
zTr1UnorderedSetPrinter.__init__cCs|j�d�r|jS|jdS�N�std::tr1�_M_h�rjrDr_rrrr	�
_hashtable�sz!Tr1UnorderedSetPrinter._hashtablecCs|��d}d|jt|�fS�NZ_M_element_countr��r6rjr��rrNrrr	ru�sz Tr1UnorderedSetPrinter.to_stringcCsd|S�Nr�r��irrr	�
_format_count�sz$Tr1UnorderedSetPrinter._format_countcCs@t|jt���}|j�d�r.t|t|����St|t	|����S�Nr3)
rr=�	itertoolsrNrjrDrr%r6r+)r�counterrrr	rm�szTr1UnorderedSetPrinter.childrenN)
rrr
rrbr6rur�r=rmrrrr	r1�s
r1c@s\eZdZdZdd�Zdd�Zdd�Zedd	��Zed
d��Z	edd
��Z
dd�Zdd�ZdS)�Tr1UnorderedMapPrinterz1Print a std::unordered_map or tr1::unordered_map.cCst|�|_||_dSrr�rlrrr	rb�s
zTr1UnorderedMapPrinter.__init__cCs|j�d�r|jS|jdSr2r5rrrr	r6�sz!Tr1UnorderedMapPrinter._hashtablecCs|��d}d|jt|�fSr7r8r9rrr	ru�sz Tr1UnorderedMapPrinter.to_stringccs|D]}|D]
}|VqqdSrr)r�r�r<rrr	�_flatten�szTr1UnorderedMapPrinter._flattencCs|d|dfS�Nr�r�r)r�rrr	�_format_one�sz"Tr1UnorderedMapPrinter._format_onecCsd|Sr:rr;rrr	r=�sz$Tr1UnorderedMapPrinter._format_countcCsdt|jt���}|j�d�r@|�t|jt|�	����}t
||�S|�t|jt|�	����}t
||�Sr>)rr=r?rNrjrDrBrDr%r6rr+)rr@�datarrr	rm�s�
�zTr1UnorderedMapPrinter.childrencCsdSr�rrrrr	r��sz#Tr1UnorderedMapPrinter.display_hintN)
rrr
rrbr6rur�rBrDr=rmr�rrrr	rA�s



rAc@s8eZdZdZGdd�de�Zdd�Zdd�Zdd	�Zd
S)�StdForwardListPrinterzPrint a std::forward_list.c@s$eZdZdd�Zdd�Zdd�ZdS)zStdForwardListPrinter._iteratorcCs||_|d|_d|_dSr�r�r�rrr	rb�s
z(StdForwardListPrinter._iterator.__init__cCs|Srrrrrr	rc�sz(StdForwardListPrinter._iterator.__iter__cCsl|jdkrt�|j�|j���}|d|_|j}|jd|_|dj}|�|j�d��	��}d||��fS)Nrr�r0r�r�)
r�rerpr�r�r�r�r#r<ro)rr�rNr0rrr	r�s


z(StdForwardListPrinter._iterator.__next__Nr�rrrr	r��sr�cCs||_t|�|_dSr)r_rCrjrlrrr	rbszStdForwardListPrinter.__init__cCs(td|jj���}|�||jdd�S)Nr�r�r�r�r�rrr	rmszStdForwardListPrinter.childrencCs*|jddddkr d|jSd|jS)Nr�r�r�rr�r��r_rjrrrr	rus
zStdForwardListPrinter.to_stringNr�rrrr	rF�s
rFc@sBeZdZdZd
dd�Zdd�ZGdd�de�Zd	d
�Zdd�Z	dS)�SingleObjContainerPrinterz8Base class for printers of containers of single objects.NcCs||_||_||_dSr)�_contained_valuer��_hint)rraZviz�hintrrr	rbsz"SingleObjContainerPrinter.__init__cCs(tst|�Stj�tj��|�p&t|�S)z5Return type as a string after applying type printers.)�_use_type_printingr%r�types�apply_type_recognizers�get_type_recognizers)rr#rrr	�
_recognizes��z$SingleObjContainerPrinter._recognizec@s$eZdZdd�Zdd�Zdd�ZdS)z$SingleObjContainerPrinter._containedcCs
||_dSrr^r`rrr	rbsz-SingleObjContainerPrinter._contained.__init__cCs|Srrrrrr	rc"sz-SingleObjContainerPrinter._contained.__iter__cCs"|jdurt�|j}d|_d|fS)Nz[contained value]rd)rZretvalrrr	r%s

z-SingleObjContainerPrinter._contained.__next__Nr�rrrr	�
_containedsrQcCs6|jdur|�d�St|jd�r*|j��S|�|j�S)Nrm)rIrQr�r�rmrrrr	rm,s



z"SingleObjContainerPrinter.childrencCs(t|jd�r"t|jd�r"|j��S|jS)Nrmr�)r�r�r�rJrrrr	r�3s

�
z&SingleObjContainerPrinter.display_hint)N)
rrr
rrbrPrrQrmr�rrrr	rHs
rHcCsN|��j}tjddkr"t|�}nt|�}zt�|�jj	WSYdS0dS)z{Find the name of the function referred to by the gdb.Value f,
    which should contain a function pointer from the program.rrN)
r�r�rOrPr
r�rZblock_for_pc�functionr&)r rrr	�function_pointer_to_name;s

rScs4eZdZdZ�fdd�Zdd�Zedd��Z�ZS)�StdExpAnyPrinterz+Print a std::any or std::experimental::any.c	s�t|�|_t|j�|_||_d|_d}d}|jd}|dk�r~t|�}|sXtd|j��d�|�}t�	||�}|s�td|j��|�
d�}	d|	v�rg}
t��D]B}z(t�
d||�
d��}|
�t�|��Wq�tjy�Yq�0q�t|
�dkr�td	��|
d}
n
t�|	�}
|
�d�|_d}d
|	v�r8|jddj}n(d
|	v�rR|jdd}ntd|j��|�|j�����}t�|�}tt|��||�dS)NZ
_M_managerrzInvalid function pointer in %szi({0}::_Manager_\w+<.*>)::_S_manage\((enum )?{0}::_Op, (const {0}|{0} const) ?\*, (union )?{0}::_Arg ?\*\)zUnknown manager function in %sr0�std::stringzstd::string(?!\w)z;Cannot uniquely determine std::string type used in std::anyz::_Manager_internalr�Z	_M_bufferz::_Manager_externalri)rCrjrTr_�_contained_typerSr$r1rFrG�grouprT�
_string_typesrQrXrrr3r!r<r�rpror�r��superrb)rrLra�contained_value�
visualizerZmgr�funcZrx�mZmgrnameZmgrtypes�srHZmgrtyper0��	__class__rr	rbVsf


����

�



��
zStdExpAnyPrinter.__init__cCsT|jdurd|jSd|j}t|jd�r8||j��S|�|j�}|tt|��S)N�%s [no contained value]z%s containing rm)rVrjr�r�rurPrCr%)r�descr?rrr	ru�s


zStdExpAnyPrinter.to_stringcs@tt�d����h}d�dddtg}|�fdd�|D�O}|S)NrUzAbasic_string<char, std::char_traits<char>, std::allocator<char> >r:rUcsh|]}|��qSrr)r+�q�r^rr	�	<setcomp>�r.z1StdExpAnyPrinter._string_types.<locals>.<setcomp>)r%rrrr4)ZstringsZqualsrrdr	rX�s�zStdExpAnyPrinter._string_types)	rrr
rrbrur�rX�
__classcell__rrr_r	rTSs
D	rTcs(eZdZdZ�fdd�Zdd�Z�ZS)�StdExpOptionalPrinterz5Print a std::optional or std::experimental::optional.cs�t|�|_t|j�|_|d}|j�d�r8|d}|}n*|d}|d}z|d}WnYn0t�|�}|std}tt|��||�dS)N�
_M_payloadzstd::experimental�
_M_engaged�_M_value)	rCrjrTrDrr�rYrgrb)rrLraZpayloadZengagedrZr[r_rr	rb�s$


�zStdExpOptionalPrinter.__init__cCs:|jdurd|jSt|jd�r4d|j|j��fS|jS)Nrarmz%s containing %s)rIrjr�r�rurrrr	ru�s

�zStdExpOptionalPrinter.to_string�rrr
rrbrurfrrr_r	rg�srgcs(eZdZdZ�fdd�Zdd�Z�ZS)�StdVariantPrinterzPrint a std::variant.cs�t|j�}t|�|_|d|_|jt|�kr<d|_d}d}n@|t|j�|_|dddj}|�	|j�
����}t�
|�}tt|��||d�dS)N�_M_indexZ_M_ur	r�r�)r\r#rCrj�_indexr!rVr�r�rpror�rr�rYrlrb)rrLraZalternativesrZr[Zaddrr_rr	rb�s 


�

�zStdVariantPrinter.__init__cCsH|jdurd|jSt|jd�r8d|j|j|j��fSd|j|jfS)Nrarmz%s [index %d] containing %sz
%s [index %d])rIrjr�r�rnrurrrr	ru�s


�zStdVariantPrinter.to_stringrkrrr_r	rl�srlcs(eZdZdZ�fdd�Zdd�Z�ZS)�StdNodeHandlePrinterzPrint a container node handle.cs�|j�d�|_|j�d��d�}t|jd�|_|j�d�|jk|_|d}|r~|jrbt|���}nt	|d|j�}t
�|�}nd}d}|d}|dr�|d	nd|_t
t|��||d
�dS)Nr0rrr�rir�Z_M_allocrirhr�)r#r<�_value_typerJr&�_is_rb_tree_node�_is_map_noder�r�r�rr�Z_allocrYrorb)rrLrar�ZnodeptrrZr[Zoptallocr_rr	rb�s.����zStdNodeHandlePrinter.__init__cCsfd}|js|d7}|jr"|d7}n|d7}|jrZ|d7}t|jd�rVd||j��fS|Sd|SdS)	Nznode handle for z
unordered r��setz
 with elementrm�%s = %sr�)rqrrrIr�r�ru)rrbrrr	ru	s
zStdNodeHandlePrinter.to_stringrkrrr_r	ro�sroc@s(eZdZdZdd�Zdd�Zdd�ZdS)	�StdExpStringViewPrinterzP
    Print a std::basic_string_view or std::experimental::basic_string_view
    cCs
||_dSrr^rlrrr	rb sz StdExpStringViewPrinter.__init__cCs6|jd}|jd}t|d�r*|j|d�S|j|d�S)NZ_M_str�_M_lenrr)r_r�rr)rrr!rrr	ru#s



z!StdExpStringViewPrinter.to_stringcCsdSrrrrrr	r�*sz$StdExpStringViewPrinter.display_hintNrrrrr	rusruc@s@eZdZdZdd�Zdd�Zdd�ZGdd	�d	e�Zd
d�Z	dS)
�StdExpPathPrinterz,Print a std::experimental::filesystem::path.cCsB||_||_|jddd}|jddd}t||�|_dS)N�_M_cmptsr�r�r�)r_rjr��
_num_cmpts)rrLrar�r�rrr	rb1s
zStdExpPathPrinter.__init__cCs:t|jd�}|dd�dkr"dS|dd�dkr6dSdS)NZ_M_type����	_Root_dir�root-directory����
_Root_name�	root-name)r%r_r�rrr	�
_path_type8szStdExpPathPrinter._path_typecCs8d|jd}|jdkr0|��}|r0d||f}d|S)Nr��_M_pathnamer�%s [%s]z!experimental::filesystem::path %s)r_ryr��r�pathr7rrr	ru@s
zStdExpPathPrinter.to_stringc@s$eZdZdd�Zdd�Zdd�ZdS)zStdExpPathPrinter._iteratorcCs,||_|dd|_|dd|_d|_dS)Nr�r�r�r)�	_pathtyper�r�r�)rZcmpts�pathtyperrr	rbIsz$StdExpPathPrinter._iterator.__init__cCs|Srrrrrr	rcOsz$StdExpPathPrinter._iterator.__iter__cCsd|j|jkrt�|j��}|j}|jd|_|jd|_|d}t|j|���}|sX|}d||fS�Nr0r�z[%s])r�r�rer�r�rwr�r��rr�rNr�r7rrr	rRs
z$StdExpPathPrinter._iterator.__next__Nr�rrrr	r�Hsr�cCs|�|jd|j�S)Nrx)r�r_rjrrrr	rm_szStdExpPathPrinter.childrenN�
rrr
rrbr�rurr�rmrrrr	rw.srwc@s@eZdZdZdd�Zdd�Zdd�ZGdd	�d	e�Zd
d�Z	dS)
�StdPathPrinterzPrint a std::filesystem::path.cCsP||_||_t|jdd�}|�t�d��d@|_|jdkrF||_nd|_dS)Nrxr�Z	uintptr_t�r)r_rjr~rprrr��_impl)rrLrar�rrr	rbfs
zStdPathPrinter.__init__cCsHt|j�t�|jd���}|dd�dkr0dS|dd�dkrDdSdS)Nz::_Typerzr{r|r}r~r)r%r�rprrrjr�rrr	r�pszStdPathPrinter._path_typecCs8d|jd}|jdkr0|��}|r0d||f}d|S)Nr�r�rr�zfilesystem::path %s)r_r�r�r�rrr	ruxs
zStdPathPrinter.to_stringc@s$eZdZdd�Zdd�Zdd�ZdS)zStdPathPrinter._iteratorc	Cs�||_|r�t�d�}t�|d�}t�d�}|�|���}|��}ttjd�rbtd|j	|j
�}n
d|j	}|�|���|}|�|���|_|j||_d|_
nd|_d|_dS)Nr�z::_Cmpt�char�alignofrr)r�rrrpror�r�rB�maxr�r�r�r�r�)	rr�r�Zint_typeZ	cmpt_type�	char_typerZsizeof_Impl�beginrrr	rb�s 


z!StdPathPrinter._iterator.__init__cCs|Srrrrrr	rc�sz!StdPathPrinter._iterator.__iter__cCsd|j|jkrt�|j��}|j}|jd|_|jd|_|d}t|j|���}|sX|}d||fSr�)r�r�rer�r�r�r�r�r�rrr	r�s
z!StdPathPrinter._iterator.__next__Nr�rrrr	r��sr�cCs|�|j|j�Sr)r�r�rjrrrr	rm�szStdPathPrinter.childrenNr�rrrr	r�cs
(r�c@s8eZdZdZdd�ZGdd�de�Zdd�Zdd	�Zd
S)�StdPairPrinterz@Print a std::pair object, with 'first' and 'second' as children.cCs
||_dSrr^rlrrr	rb�szStdPairPrinter.__init__c@s(eZdZdZdd�Zdd�Zdd�ZdS)	zStdPairPrinter._iterz?An iterator for std::pair types. Returns 'first' then 'second'.cCs||_d|_dS)Nr�)r_�_whichr`rrr	rb�szStdPairPrinter._iter.__init__cCs|Srrrrrr	rc�szStdPairPrinter._iter.__iter__cCs8|jdurt�|j}|dkr$d|_nd|_||j|fSrC)r�rer_)rZwhichrrr	r�s
zStdPairPrinter._iter.__next__Nrfrrrr	r��sr�cCs|�|j�Sr)r�r_rrrr	rm�szStdPairPrinter.childrencCsdSrrrrrr	ru�szStdPairPrinter.to_stringN)	rrr
rrbrr�rmrurrrr	r��s
r�c@s eZdZdZdd�Zdd�ZdS)�StdCmpCatPrinterz#Print a comparison category object.cCs&||�d�dd�|_|d|_dS)N�:r0rj)�rfindrjr_rlrrr	rb�szStdCmpCatPrinter.__init__cCsD|jdkr|jdkrd}nddddd�}|t|j�}d	�|j|�S)
N�strong_orderingrZequalZ	unorderedZlessZ
equivalentZgreater)rrvrr0zstd::{}::{})rjr_r�r1)rr&�namesrrr	ru�s
zStdCmpCatPrinter.to_stringNr�rrrr	r��sr�c@s`eZdZdZdZdd�Zedd��Zedd��Z	ed	d
��Z
edd��Zed
d��Zdd�Z
dS)�StdErrorCodePrinterz0Print a std::error_code or std::error_condition.NcCsJ||_t|�|_tjdurFzddl}dt_WntyDdt_Yn0dS)NrTF)r_rCrjr��_system_is_posix�posix�ImportError)rrLrar�rrr	rb�s


zStdErrorCodePrinter.__init__cCs&t�|�}|dur"|jtjkr"|SdSr)rrr�ZTYPE_CODE_ENUM)r&r'rrr	�_find_errc_enum�s
z#StdErrorCodePrinter._find_errc_enumc	CsBdtfD]4}zd�||�}|�|�WSty:Yq0qdS)NrKz	std::{}{})r4r1r�r)�clsr&�nsZqnamerrr	�_find_standard_errc_enum�sz,StdErrorCodePrinter._find_standard_errc_enumc	Cs�gd�}|D]z}|d}dtfD]d}d�|�}t�d�||��d}|dur ||��jkr d|}|�d�||��}||fSq qd	S)
N)�streamZsocketzip::resolverz_category()rKzstd::{}experimental::net::v1z{}::{}::__crznet::z{}::{}_errc)NN)r4r1rZ
lookup_symbol�valuer�r�)	r��catZnet_catsr�r\r�Zsymr&�enumrrr	�_match_net_ts_category�s
z*StdErrorCodePrinter._match_net_ts_categorycCs�d}d}d}|�|�\}}|dur.d|||fS|j��}|j�d�rLd}d}|j�d�rbd}|j}|j�d�r|d	}|�d
�}|j�d�r�d}|�d
�}|dur�zWnYn0||j||fS)z(Return details of a std::error_category.NFz::generic_error_category�genericTz::system_error_category�systemz::future_error_categoryZfutureZfuture_errcz::io_error_category�ioZio_errc)r��dynamic_typer�r�endswithr�r�)r�r�r&r��is_errnor\r'rrr	�_category_infos2


z"StdErrorCodePrinter._category_infocCs|�d�dS)zX
        Strip any nested-name-specifier from name to give an unqualified name.
        r/rv)�split)r&rrr	�_unqualified_name7sz%StdErrorCodePrinter._unqualified_namec	Cs�|jd}|jd}|�|�\}}}}|dkrVddd�}|||�|j�krV|jdSt|�}|r�|dkr�ztjt|�}Wq�Yq�0n|dur�|�t|�|���}|dur�d|}n|}d	|j||fS)
NrjZ_M_catrr�r�)�
error_code�error_conditionz = { }z"%s"z
%s = {%s: %s})	r_r�r�rjr%�errnoZ	errorcoder�rp)	rr�r�r&Zalt_namer�r�Zdefault_catsZstrvalrrr	ru>s*

�

zStdErrorCodePrinter.to_string)rrr
rr�rbr�r��classmethodr�r�r�r�rurrrr	r��s



*
r�c@s eZdZdZdd�Zdd�ZdS)�StdRegexStatePrinterz/Print a state node in the NFA for a std::regex.cCs||_||_dSrrGrlrrr	rb[szStdRegexStatePrinter.__init__cCs�t|jd�}|r|dd�}|jd}dddddddddddddd�
}||}d	�||�}|dur�|jd
|dur�d�|||jd
|�}d|S)
NZ	_M_opcode�r�ZaltZsubexpr�negZ
backref_index)
�repeat�alternativeZ
subexpr_beginZsubexpr_endZline_begin_assertionZline_end_assertionZ
word_boundaryZsubexpr_lookaheadZbackrefrGZacceptZdummy�unknownzopcode={}, next={}Z_M_z	{}, {}={}z{%s})r%r_r1)rZopcodeZnext_idZvariants�vr^rrr	ru_s"
�zStdRegexStatePrinter.to_stringNr�rrrr	r�Xsr�c@s@eZdZdZGdd�de�Zdd�Zdd�Zdd	�Zd
d�Z	dS)
�StdSpanPrinterzPrint a std::span.c@s$eZdZdd�Zdd�Zdd�ZdS)zStdSpanPrinter._iteratorcCsd|_||_||_dSr)r��_beginr�)rr�rrrr	rbysz!StdSpanPrinter._iterator.__init__cCs|Srrrrrr	rc~sz!StdSpanPrinter._iterator.__iter__cCs8|j|jkrt�|j}|jd|_d||j|��fS)Nr0r�)r�r�rer�r�r9rrr	r�s
z!StdSpanPrinter._iterator.__next__Nr�rrrr	r�xsr�cCsLt|�|_||_t�d�}|j�d�|kr:|dd|_n|j�d�|_dS)Nzstatic_cast<std::size_t>(-1)r0Z	_M_extentZ_M_extent_value)rCrjr_rr"r#r<r�)rrLraZsize_maxrrr	rb�s

zStdSpanPrinter.__init__cCsd|j|jfS�Nz%s of length %d�rjr�rrrr	ru�szStdSpanPrinter.to_stringcCs|�|jd|j�Srh)r�r_r�rrrr	rm�szStdSpanPrinter.childrencCsdSr�rrrrr	r��szStdSpanPrinter.display_hintN)
rrr
rrr�rbrurmr�rrrr	r�us	r�c@s0eZdZdZdd�Zdd�Zdd�Zdd	�Zd
S)�StdInitializerListPrinterzPrint a std::initializer_list.cCs||_||_|d|_dS)Nrv)rjr_r�rlrrr	rb�sz"StdInitializerListPrinter.__init__cCsd|j|jfSr�r�rrrr	ru�sz#StdInitializerListPrinter.to_stringcCst�|jd|j�S)NZ_M_array)r�r�r_r�rrrr	rm�sz"StdInitializerListPrinter.childrencCsdSr�rrrrr	r��sz&StdInitializerListPrinter.display_hintN)rrr
rrbrurmr�rrrr	r��s
r�c@s(eZdZdZdd�Zdd�Zdd�ZdS)	�StdAtomicPrinterzPrint a std:atomic.cCsrt|�|_||_d|_|jj�d�|_|jjdurnt|jj�}|�d�sR|�d�rn|d}t	||�|_|j
|_dS)Nrzstd::shared_ptr<zstd::weak_ptr<r�)rCrjr_�_shptr_printerr#r<rprrDrg�_shptr_childrenrm)rrLrar'r�rrr	rb�s

�zStdAtomicPrinter.__init__cCst|jj�Sr)r]r�rkrrrr	r��sz StdAtomicPrinter._shptr_childrencCs�|jdur|j��S|jjtjkr.|jd}n`|jjtjkrH|jd}nF|jjtjkrf|jdd}n(|jjtj	kr�|jdd}n
|jd}d|j
t|j�|fS)NrnZ_M_fpZ_M_br�Z_M_basez%s<%s> = { %s })r�rurpr�rZ
TYPE_CODE_INTr_�
TYPE_CODE_FLT�
TYPE_CODE_PTRr�rjr%r`rrr	ru�s


zStdAtomicPrinter.to_stringN)rrr
rrbr�rurrrr	r��s
r�c@s eZdZdZdd�Zdd�ZdS)�StdFormatArgsPrinterzPrint a std::basic_format_args.cCst|�|_||_dSrr�rlrrr	rb�s
zStdFormatArgsPrinter.__init__cCs�t|jj�}t|d�d}|t�d�kr0d}n|t�d�krDd}nd}|jd}|dkrbd	|S|dkrt|jd
}d||fS)Nrr0r�zstd::format_args�wchar_tzstd::wformat_argszstd::basic_format_argsZ_M_packed_sizez%s with 1 argumentZ_M_unpacked_sizez%s with %d arguments)r\r_r#rr)rZtargsr�r'rrrr	ru�s

zStdFormatArgsPrinter.to_stringNr�rrrr	r��sr�c@s0eZdZdZdd�Zdd�Zdd�Zdd	�Zd
S)�StdChronoDurationPrinterzPrint a std::chrono::duration.cCst|�|_||_dSrr�rlrrr	rb�s
z!StdChronoDurationPrinter.__init__cCs*|jj�d�}|�d�}|�d�}||fS)Nr0r)r_r#r<)rZperiodr��denrrr	�_ratio�s

zStdChronoDurationPrinter._ratiocCs�|��\}}|dkrF|dkr dS|dkr,dS|dkr8dS|dkr|dSn6|dkr||d	krZd
S|dkrfdS|d
krrdSd�|�Sd�||�S)Nr0r^i�Zmsi@B�usiʚ;r��<�mini�hi�Q�dz[{}]sz[{}/{}]s)r�r1)rr�r�rrr	�_suffix�s&
z StdChronoDurationPrinter._suffixcCs4|jd}|j��jtjkr$d|}d�||���S)N�__rz%gz"std::chrono::duration = {{ {}{} }})r_r#rr�rr�r1r�)r�rrrr	rus
z"StdChronoDurationPrinter.to_stringN)rrr
rrbr�r�rurrrr	r��s
r�c@s*eZdZdZdd�Zdd�Zd
dd�Zd	S)�StdChronoTimePointPrinterz Print a std::chrono::time_point.cCst|�|_||_dSrr�rlrrr	rbs
z"StdChronoTimePointPrinter.__init__cCsv|jj�d�}t|j�}|dks(|dkr,dS|dkr8dS|dkrDdS|d	krPd
S|dkr\dS|d
krhdSd�|�dfS)Nrzstd::chrono::_V2::system_clockzstd::chrono::system_clock)zstd::chrono::sys_timerzstd::chrono::utc_clock)zstd::chrono::utc_timeNzstd::chrono::gps_clock)zstd::chrono::gps_timeNzstd::chrono::tai_clock)zstd::chrono::tai_timeNzstd::filesystem::__file_clock)zstd::chrono::file_timelumzstd::chrono::local_t)zstd::chrono::local_timerz
{} time_point)r_r#r<rCr&r1)r�clockr&rrr	�_clocks"
�z StdChronoTimePointPrinter._clockFcCs�|��\}}|jd}|d}t|jj|�}|��}d}|dur�|��\}	}
||	|
|}ztj�|t	�}d�
|�}WnYn0d|||f}
|r�|
Sd||
fS)NZ__dr�rKz [{:%Y-%m-%d %H:%M:%S}]z%d%s%sz%s = { %s })r�r_r�r#r&r�r�rZ
fromtimestamp�
_utc_timezoner1)rZabbrevr��offsetr�r��printer�suffix�timer�r�Zsecsrr^rrr	ru1s$
z#StdChronoTimePointPrinter.to_stringN)F)rrr
rrbr�rurrrr	r�sr�c@s eZdZdZdd�Zdd�ZdS)�StdChronoZonedTimePrinterz Print a std::chrono::zoned_time.cCst|�|_||_dSrr�rlrrr	rbIs
z"StdChronoZonedTimePrinter.__init__cCs@|jd��d}|jd}t|jj|�}|�d�}d�||�S)NZ_M_zone�_M_nameZ_M_tpTz%std::chrono::zoned_time = {{ {} {} }})r_r�r�r#r&rur1)rZzoner�r�rrr	ruMs


z#StdChronoZonedTimePrinter.to_stringNr�rrrr	r�Fsr�)
NZJanuaryZFebruaryZMarchZAprilZMayZJuneZJulyZAugustZ	SeptemberZOctoberZNovemberZDecember)�SundayZMondayZTuesdayZ	WednesdayZThursdayZFridayZSaturdayr�c@s eZdZdZdd�Zdd�ZdS)�StdChronoCalendarPrinterzDPrint a std::chrono::day, std::chrono::month, std::chrono::year etc.cCst|�|_||_dSrr�rlrrr	rb_s
z!StdChronoCalendarPrinter.__init__c	Csv|j}|j}d|vr$|dkr$|d}|�d�r6|d}|dkrPd�t|d��S|d	kr||d
ksl|tt�krtd|St|S|dkr�d�|�S|d
kr�|d}|dks�|tt�kr�d|Sd�t|�S|dkr�d�|dt|d��S|dkr�d�|d�S|dk�rd�||d�S|dk�r,d�|�S|dk�rFd�||d�S|dk�r`d�||d�S|dk�rvd�||�S|dk�r�d �|||d�S|dk�r�d�||d!�S|d"k�r�d �|||d�S|d#k�r�d �|||d�S|�d$��rrd%}|d&dk�r"d'�t|d(d)�t|d&��}t|d*d+�}t|dd+�}t|d,d+�}|d-�rb|}d.�||||�SdS)/N�monthz std::chrono::year_month_day_lastZ_M_mzstd::chrono::yearZ_M_yzstd::chrono::dayz{}Z_M_dzstd::chrono::monthr0z%d is not a valid monthz{}yzstd::chrono::weekdayZ_M_wdrz%d is not a valid weekdayzstd::chrono::weekday_indexedz{}[{}]rmzstd::chrono::weekday_lastz{}[last]zstd::chrono::month_dayz{}/{}zstd::chrono::month_day_lastz{}/lastzstd::chrono::month_weekdayZ_M_wdizstd::chrono::month_weekday_lastZ_M_wdlzstd::chrono::year_monthzstd::chrono::year_month_dayz{}/{}/{}Z_M_mdlzstd::chrono::year_month_weekdayz$std::chrono::year_month_weekday_lastzstd::chrono::hh_mm_ssrKZfractional_widthz.{:0{}d}Z_M_ssZ_M_rr4r��_M_sZ	_M_is_negz{:02}:{:02}:{:02}{})r_rjrDr1r�r!�months�weekdays)	rrar'r]�yZwdZfractr�r^rrr	rucsj












�
z"StdChronoCalendarPrinter.to_stringNr�rrrr	r�\sr�c@s eZdZdZdd�Zdd�ZdS)�StdChronoTimeZonePrinterz4Print a chrono::time_zone or chrono::time_zone_link.cCst|�|_||_dSrr�rlrrr	rb�s
z!StdChronoTimeZonePrinter.__init__cCs6d|j|jdf}|j�d�r2|d|jd7}|S)Nrtr�Z_linkz -> %sZ	_M_target)rjr_r�)rr%rrr	ru�sz"StdChronoTimeZonePrinter.to_stringNr�rrrr	r��sr�c@s eZdZdZdd�Zdd�ZdS)�StdChronoLeapSecondPrinterzPrint a chrono::leap_second.cCst|�|_||_dSrr�rlrrr	rb�s
z#StdChronoLeapSecondPrinter.__init__cCs.|jdd}d|dk}d|jt|�|fS)Nr�r�z+-rz
%s %d (%c))r_rj�abs)r�dater�rrr	ru�sz$StdChronoLeapSecondPrinter.to_stringNr�rrrr	r��sr�c@s eZdZdZdd�Zdd�ZdS)�StdChronoTzdbPrinterzPrint a chrono::tzdb.cCst|�|_||_dSrr�rlrrr	rb�s
zStdChronoTzdbPrinter.__init__cCsd|j|jdfS)Nz%s %s�version)rjr_rrrr	ru�szStdChronoTzdbPrinter.to_stringNr�rrrr	r��sr�c@s eZdZdZdd�Zdd�ZdS)�StdChronoTimeZoneRulePrinterzPrint a chrono::time_zone rule.cCst|�|_||_dSrr�rlrrr	rb�s
z%StdChronoTimeZoneRulePrinter.__init__c
Cs�|jd}|d}t|d}dddddddd�}|d}d	�||�|d
��}|dkrdd�||�}nVt|d
}|dkr�d�||�}n4|dkr�d}	nd}	|d}d�|	d||	d||�}d�|jd|jd|jd|�S)N�on�kindr��stZndZrd)r0rr�����Zday_of_monthz{}{}Zthrz{} {}Zday_of_weekr0z
last {} in {}r)rz<=)r�z>=z{} {} {} {} {}z.time_zone rule {} from {} to {} starting on {}r&�from�to)r_r�r1�getr�)
rr�r�r��suffixes�dayZordinal_dayr��weekday�	directionrrr	ru�s0
���z&StdChronoTimeZoneRulePrinter.to_stringNr�rrrr	r��sr�c@s eZdZdZdd�Zdd�ZdS)�StdLocalePrinterzPrint a std::locale.cCs||_||_dSrrGrlrrr	rb�szStdLocalePrinter.__init__cst|jdd}d}|ddkr&d}�nBt�|jd�}t�|jd�}|d��}|d��}d�||�}||i}d	}	|	|kr�||	dkr�||	��}||	��}d
�|||�}|||<|	d	}	qvt|���}
t|
�d	kr�|}n�t|
�dk�rh|
\}}t	|���}
d�|
�
|�d	k�r |}|�n|
�
|�d	k�r8|}|��du�rht�fdd
�|��D��}d�|��}d�||�S)Nr�Z_M_namesrKr�*z::_S_categoriesz::_S_categories_sizez{}={}r0z{};{}={}rc3s|]\}}|�kr|VqdSrr)r+r�rZ��otherrr	�	<genexpr>	r.z-StdLocalePrinter.to_string.<locals>.<genexpr>z
 with "{}={}"zstd::locale = "{}"{})
r_rr"rjrr1rs�valuesr!r�rNr
�items)rr��modr&ZcatsZncatrZr�Z	cat_namesr<Z
uniq_namesZn1Zn2Z	name_listrr�r	ru�sD

zStdLocalePrinter.to_stringNr�rrrr	r��sr�c@s eZdZdZdd�Zdd�ZdS)�StdIntegralConstantPrinterz*Print a std::true_type or std::false_type.cCs||_||_dSrrGrlrrr	rb	sz#StdIntegralConstantPrinter.__init__cCsL|jj�d�}|jj�d�}|jtjkr4|r0dSdSt|j�}d�|||�S)Nrr0zstd::true_typezstd::false_typez
{}<{}, {}>)	r_r#r<r�rr�rCrjr1)rr;r�rLrrr	ru	s
z$StdIntegralConstantPrinter.to_stringNr�rrrr	r�	sr�c@s eZdZdZdd�Zdd�ZdS)�StdTextEncodingPrinterzPrint a std::text_encoding.cCs||_||_dSrrGrlrrr	rb$	szStdTextEncodingPrinter.__init__cCs<|jd��}|ddkr$|jdS|ddkr4dS|dS)NZ_M_repZ_M_idr0r�rr�)r_r�)rZreprrr	ru(	s
z StdTextEncodingPrinter.to_stringNr�rrrr	r!	srcs$eZdZ�fdd�Zdd�Z�ZS)�	RxPrintercs$tt|���||_||_d|_dS�NT)rYrrbr&�	_function�enabled)rr&rRr_rr	rb3	szRxPrinter.__init__cCs:|js
dS|jjtjkr,ttjd�r,|��}|�|j	|�S)N�referenced_value)
rr#r�rrr��Valuerrr&)rr�rrr	�invoke9	szRxPrinter.invoke)rrr
rbrrfrrr_r	r2	srcsHeZdZ�fdd�Zdd�Zdd�Zdd�Zed	d
��Zdd�Z	�Z
S)
�Printercs6tt|���||_g|_i|_d|_t�d�|_	dS)NTz^([a-zA-Z0-9_:]+)(<.*>)?$)
rYrrbr&�_subprinters�_lookuprrF�compile�_compiled_rx)rr&r_rr	rbH	szPrinter.__init__cCs<|j�|�std|��t||�}|j�|�||j|<dS)Nz0libstdc++ programming error: "%s" does not match)rrGr$rr	rXr
)rr&rRr�rrr	�addP	s�
zPrinter.addcCs>|�|||�d|vr:t�ddt|�}|�|||�dS)N�__cxx11z^(std|__gnu_cxx)::z\g<0>%s)r
rFrQr4)r�baser&rRZvbaserrr	�add_version[	s��zPrinter.add_versioncCs$|�|||�|�|d||�dS)Nz__cxx1998::)r)rrr&rRrrr	�
add_containerc	szPrinter.add_containercCs&|jtjkr|��}|����}|jSr)r�rrr�rrr)r#rrr	�get_basic_typeg	szPrinter.get_basic_typecCsr|�|j�}|sdS|j�|�}|s(dS|�d�}|jjtjkrTttj	d�rT|�
�}||jvrn|j|�|�SdS)Nr0r)
rr#rrGrWr�rrr�rrr
r)rrarLrG�basenamerrr	�__call__r	s

zPrinter.__call__)rrr
rbr
rrr�rrrfrrr_r	rG	s

rc@s0eZdZdZdd�ZGdd�de�Zdd�ZdS)	�TemplateTypePrinteral
    A type printer for class templates with default template arguments.

    Recognizes specializations of class templates and prints them without
    any template arguments that use a default template argument.
    Type printers are recursively applied to the template arguments.

    e.g. replace 'std::vector<T, std::allocator<T> >' with 'std::vector<T>'.
    cCs||_||_d|_dSr)r&�_defargsr�rr&�defargsrrr	rb�	szTemplateTypePrinter.__init__c@s(eZdZdZdd�Zdd�Zdd�ZdS)	zTemplateTypePrinter._recognizerz-The recognizer class for TemplateTypePrinter.cCs||_||_dSr)r&rrrrr	rb�	sz(TemplateTypePrinter._recognizer.__init__c		Cs�|jdurdS|j�|j�s dSt|�}g}d}tt|��D]�}||}|j�|�}|dur�|j|�}z|t	�
|�kr~WdSWn&t	jy�|j|kr�YdSYn0d}q<|r�dS|�|�
|��q<|jd|j�d��}t|�}|dd�|�dS)a
            If type_obj is a specialization of self.name that uses all the
            default template arguments for the class template, then return
            a string representation of the type without default arguments.
            Otherwise, return None.
            NFTr�<r*�>)rrDr&r\�ranger!rr�r1rrr3rX�_recognize_subtyper
rWr2)	rrYr[Zdisplayed_argsZrequire_defaultedrZrtZdefargrIrrr	�	recognize�	s2


z)TemplateTypePrinter._recognizer.recognizecCs�|jtjkr|�|���dS|jtjkrj|�|���}t|����d�rR|dSd||�	�ddfS|jtj
kr�|�|���dSttd�r�|jtjkr�|�|���dStj
�tj
��|�}|r�|St|�S)zxConvert a gdb.Type to a string by applying recognizers,
            or if that fails then simply converting to a string.r�z[]z%s[%d]r0�&�TYPE_CODE_RVALUE_REFz&&)r�rr�rr�r�r%rr�rrr�rrMrNrO)rrYrVrrr	r�	s$

�z2TemplateTypePrinter._recognizer._recognize_subtypeN)rrr
rrbrrrrrr	�_recognizer�	s1r cCs|�|j|j�S�z1Return a recognizer object for this type printer.)r r&rrrrr	�instantiate�	szTemplateTypePrinter.instantiateN�rrr
rrb�objectr r"rrrr	r�	s
Prcs�td||�}tj�||�td||�}tj�||�d|vr�dt�t�fdd�|��D��}t�||�}tj�||�td||�}tj�||�dS)a�
    Add a type printer for a class template with default template arguments.

    Args:
        name (str): The template-name of the class template.
        defargs (dict int:string) The default template arguments.

    Types in defargs can refer to the Nth template-argument using {N}
    (with zero-based indices).

    e.g. 'unordered_map' has these defargs:
    { 2: 'std::hash<{0}>',
      3: 'std::equal_to<{0}>',
      4: 'std::allocator<std::pair<const {0}, {1}> >' }
    r:zstd::__debug::rc3s"|]\}}||�d��fVqdS)r:N)r5)r+rZr��r�rr	r�
s�z0add_one_template_type_printer.<locals>.<genexpr>N)rrrM�register_type_printerr4�dictr�)�objr&rr�rr%r	�add_one_template_type_printer�	s�r)c@s2eZdZdZd	dd�ZGdd�de�Zdd�ZdS)
�FilteringTypePrintera�
    A type printer that uses typedef names for common template specializations.

    Args:
        template (str): The class template to recognize.
        name (str): The typedef-name that will be used instead.
        targ1 (str, optional): The first template argument. Defaults to None.

    Checks if a specialization of the class template 'template' is the same type
    as the typedef 'name', and prints it as 'name' instead.

    e.g. if an instantiation of std::basic_istream<C, T> is the same type as
    std::istream then print it as std::istream.

    If targ1 is provided (not None), match only template specializations with
    this type as the first template argument, e.g. if template='basic_string'
    and targ1='char' then only match 'basic_string<char,...>' and not
    'basic_string<wchar_t,...>'. This rejects non-matching specializations
    more quickly, without needing to do GDB type lookups.
    NcCs||_||_||_d|_dSr)�	_templater&�_targ1r�r�templater&�targ1rrr	rb-
szFilteringTypePrinter.__init__c@s eZdZdZdd�Zdd�ZdS)z FilteringTypePrinter._recognizerz.The recognizer class for FilteringTypePrinter.cCs||_||_||_d|_dSr)r+r&r,�	_type_objr-rrr	rb6
sz)FilteringTypePrinter._recognizer.__init__cCs�|jdurdS|jdurz|jdurDd�|j|j�}|j�|�sVdSn|j�|j�sVdSzt�|j��	�|_WnYn0|jdur�dStj
�|j�}tj
�|�}||kr�t|j�S|j�
d�ddkr�|jj�dd�}|j�dd�}||kr�t|j�SdS)z�
            If type_obj starts with self._template and is the same type as
            self.name then return self.name, otherwise None.
            Nz{}<{}r/rv�basic_string�	__cxx11::rK)rr0r,r1r+rDrrr&rrMrrWr�r5)rrYr^�t1�t2�s1�s2rrr	r<
s6


�


z*FilteringTypePrinter._recognizer.recognizeN)rrr
rrbrrrrr	r 3
sr cCs|�|j|j|j�Sr!)r r+r&r,rrrr	r"f
sz FilteringTypePrinter.instantiate)Nr#rrrr	r*
s
3r*cCsXtd|d||�}tj�||�d|vrTdt}t|||||�}tj�||�dS)Nr:r)r*rrMr&r4)r(r.r&r/r�r�rrr	�add_one_type_printerk
sr7cCs8tsdSdD]p}t|d|dd|d�t|d|dd|d�t|dd|dd|d�t|d|dd	|d�qd
D]r}dD]"}t|d||d||d�q�d
D]@}t|d||d||d�t|d||d||d�q�q�dD]z}d
D](}t||d||dd|d��qdD]B}t||d||d�dD]}t||||||��qP�q0q�t|dd�dD]}t|dd|��q�t|dd�t|dd�t|dd�t|dd �t|d!d"�t|d!d#�t|d$d%�t|d$d&�t|d'd(�d)}dD](}t||d||dd	|d��qt|d*dd+i�t|d,dd-i�t|d.dd-i�t|d/dd-i�t|d0dd-i�t|d1dd-i�t|d2d3d4d5��t|d6d3d4d5��t|d7d3d-d8��t|d9d3d-d8��t|d:d;d<d4d=��t|d>d;d<d4d=��t|d?d;d<d-d@��t|dAd;d<d-d@��dS)BN)�rKr��r�r�)�u8Zchar8_t)�u16Zchar16_t)�u32Zchar32_tr1rrr0z__cxx11::basic_stringr2�basic_string_viewZstring_view)r8r9)	ZiosrZistreamZostreamZiostreamZfilebufZifstreamZofstreamZfstream�basic_)Z	stringbuf�
istringstream�
ostringstream�stringstreamz__cxx11::basic_)rKr2Zbasic_regexZregex)r�r^ZwcZwsZ
match_resultsrG)Z	sub_matchZregex_iteratorZregex_token_iteratorZfposZ	streampos)
ZnanosecondsZmicrosecondsZmillisecondsZsecondsZminutesZhoursZdaysZweeksZyearsr�zchrono::durationzchrono::Zlinear_congruential_engineZminstd_rand0Zminstd_randZmersenne_twister_engineZmt19937Z
mt19937_64Zsubtract_with_carry_engineZ
ranlux24_baseZ
ranlux48_baseZdiscard_block_engineZranlux24Zranlux48Zshuffle_order_engineZknuth_bzexperimental::fundamentals_v1::�
unique_ptrzstd::default_delete<{0}>�dequezstd::allocator<{0}>r�r�z
__cxx11::list�vectorr�zstd::less<{0}>z)std::allocator<std::pair<{0} const, {1}>>)rr��multimaprs)r0r�multiset�
unordered_mapzstd::hash<{0}>zstd::equal_to<{0}>)rr���unordered_multimap�
unordered_set)r0rr��unordered_multiset)rLr7r))r(ZchrHZabiZdurr�rrr	�register_type_printerst
s���� "
��"
��
�
���������������rLcCs8trtj�|t�n|dur t}|j�t�t|�dS)z4Register libstdc++ pretty-printers with objfile Obj.N)�_use_gdb_pprZprintingZregister_pretty_printer�libstdcxx_printerZpretty_printersrXrL)r(rrr	�register_libstdcxx_printers�
srOcCsPtd�at�ddt�t�ddt�t�ddt�t�ddt�t�ddt�t�ddt�t�ddt�t�dd	t�t�dd
t	�t�ddt
�t�ddt�t�dd
t�t�ddt�t�ddt	�t�ddt�t�ddt
�t�ddt�t�ddt�ttjd��r.t�ddt�t�ddt�t�dt�t�dt�t�dt�t�dt�t�dt�t�dt	�t�dt	�t�dt�t�ddt�t�dd t�t�dd!t�t�dd"t�t�dd#t�t�dd$t�t�dd%t�t�d&dt�t�d&d t�t�d&d!t�t�d&d"t�t�d&d#t�t�d&d$t�t�dd't�t�dd(t�t�dd)t�t�dd)t�d*D]*}t�dd+|t�t�dd+|t��q�t�d,d-t�t�d,d.t�t�dd/t�t�d0d1t �t�d2t�t�d3t�t�d4t�t�d5t�t�d6t�t�d7d8t!�t�d7d9t"�t�d7d:t#�t�d;d<t$�t�d=d<t$�t�d>d<t%�t�d?d<t%�t�dd8t!�t�dd9t"�t�dd:t#�t�dd@t&�t�ddAt'�t�ddBt(�t�ddCt(�t�ddDt(�t�ddEt)�t�ddFt*�dGD]}t�d,|t+��qt�d,dHt,�t�d,dIt,�t�d,dJt-�t�d,dKt.�t�d,dLt/�t�ddMt0�t�dNdOt1�t�ddPt2�t�ddQt2�t�ddRt3�t�ddSt3�t�ddTt4�t�ddUt4�t�dNdVt5�t�ddWt6�t�ddXt6�t�ddYt7�t�dNdZt8�t�dd[t9�t�dd\t9�t�d]t:�dS)^Nzlibstdc++-v6r:r1rUZbitsetrCr�r�rErFZpairZpriority_queueZqueuer}rs�stackrBrDZlocaler�r�r�zstd::__debug::bitsetzstd::__debug::dequezstd::__debug::listzstd::__debug::mapzstd::__debug::multimapzstd::__debug::multisetzstd::__debug::setzstd::__debug::vectorZ
shared_ptrZweak_ptrrGrJrIrKr�z
std::tr1::Zinitializer_listZatomicZbasic_stringbuf)r?r@rAr>z
std::chrono::ZdurationZ
time_pointZintegral_constantzstd::__detail::Z_Statezstd::__debug::unordered_mapzstd::__debug::unordered_setz std::__debug::unordered_multimapz std::__debug::unordered_multisetzstd::__debug::forward_listz$std::experimental::fundamentals_v1::�anyZoptionalr=z#std::experimental::filesystem::v1::r�z,std::experimental::filesystem::v1::__cxx11::zstd::filesystem::zstd::filesystem::__cxx11::ZvariantZ_Node_handleZpartial_orderingZ
weak_orderingr��spanZbasic_format_args)r�r�Zyearr�Zweekday_indexedZweekday_lastZ	month_dayZmonth_day_lastZ
month_weekdayZmonth_weekday_lastZ
year_monthZyear_month_dayZyear_month_day_lastZyear_month_weekdayZyear_month_weekday_lastZhh_mm_ssZ	time_zoneZtime_zone_linkZ
zoned_timeZleap_secondZtzdbZ
text_encodingz__gnu_cxx::ZslistZ_List_iteratorZ_List_const_iteratorZ_Rb_tree_iteratorZ_Rb_tree_const_iteratorZ_Deque_iteratorZ_Deque_const_iteratorZ__normal_iteratorZ
_Bit_iteratorZ_Bit_const_iteratorZ_Bit_referenceZ_Slist_iteratorZ_Fwd_list_iteratorZ_Fwd_list_const_iteratorz__gnu_debug::_Safe_iterator);rrNrrrr�rr�r�r�r�r�r�rr�r�r�rrr�r
rgrAr1rFr�r�rrr�r�r�r�rTrgrurwr�rlror�r�r�r�r�r�r�r�rr�r�r�rr�r�r�r�r�r�)Zsstreamr�rrr	�build_libstdcxx_dictionary�
s�������������������
�
���������������������������������������������rS)N)vrr?rFrOr�rrPr$rr�r�ziprr�r
�timezoneZutcr�ZtzinforrMZgdb.printingr�rLZ	gdb.typesr�rMrZprinter_baser)r4r9r@r=rJrCrTrWr\r]rgryr{r~rr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrrr%r+r1rArFrHrSrTrgrlrorurwr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrNrr)r*r7rLrOrSrrrr	�<module>s�


%
(&"I
U(*$/A" /%-^!,5I!{'$*/?
",Ce%T
	oT

Zerion Mini Shell 1.0