Current File : //proc/self/root/kunden/usr/share/gdb/python/gdb/dap/__pycache__/frames.cpython-39.pyc
a

ɱZho�@s�ddlZddlZddlmZddlmZgaiaedd��Zej	j
�e�edd��Zed	d
��Z
Gdd�d�Zed
d��Zedd��Zedd��ZdS)�N)�frame_iterator�)�
in_gdb_threadcCsgaiadS�N)�_all_frames�	_iter_map)Zevt�r�'/usr/share/gdb/python/gdb/dap/frames.py�_clear_frame_ids#sr
cCst|S)z<Given a frame identifier ID, return the corresponding frame.)r)�idrrr	�frame_for_id/srcCst|�}|����dS)z<Given a frame identifier ID, select the corresponding frame.N)rZinferior_frameZselect)r�framerrr	�select_frame6src@seZdZdd�Zdd�ZdS)�_MemoizingIteratorcCs||_g|_dSr)�iterator�seen)�selfrrrr	�__init__Bsz_MemoizingIterator.__init__ccs4|jD]
}|Vq|jD]}|j�|�|VqdSr)rr�append)r�itemrrr	�__iter__Fs


z_MemoizingIterator.__iter__N)�__name__�
__module__�__qualname__rrrrrr	rAsrc#sXztt��dd�}Wntjy,d}Yn0dd����fdd���|d�EdHdS)	Nr���rcSstt�}t�|�|Sr)�lenrr)r
Znumrrr	�get_id^s
z#_frame_id_generator.<locals>.get_idc3sB|D]8}�|�||fV|��}|dur�|��d�EdHqdS)NT)�elided)rZ
for_elidedr
r�r�yield_framesrr	rds
z)_frame_id_generator.<locals>.yield_framesF)r�gdbZnewest_frame�error)�
base_iteratorrrr	�_frame_id_generatorVs
r#cCs(t��j}|tvr tt��t|<t|Sr)r Zselected_threadZ
global_numrrr#)Z	thread_idrrr	�_get_frame_iteratorss
r$ccs\t�}|st�dd�|�}|dkr(d}n||}t�|||�}|D]\}}}||fVqBdS)z�A generator that yields identifiers and frames.

    Each element is a pair of the form (ID, FRAME).
    ID is the internally-assigned frame ID.
    FRAME is a FrameDecorator of some kind.

    Arguments are as to the stackTrace request.cSs|dS)Nrr)rrrr	�<lambda>��z%dap_frame_generator.<locals>.<lambda>rN)r$�	itertools�filterfalse�islice)Z	frame_lowZlevelsZinclude_allr"Z
frame_high�ident�_r
rrr	�dap_frame_generators
r,)r r'Z
gdb.framesrZstartuprrrr
ZeventsZcontZconnectrrrr#r$r,rrrr	�<module>s&