HEX
Server: LiteSpeed
System: Linux standart9.isimtescil.net 3.10.0-962.3.2.lve1.5.26.7.el7.x86_64 #1 SMP Wed Oct 2 07:53:12 EDT 2019 x86_64
User: karalev (5310)
PHP: 8.2.29
Disabled: NONE
Upload Files
File: //opt/alt/python37/lib64/python3.7/site-packages/guppy/etc/__pycache__/RE_Rect.cpython-37.opt-1.pyc
B

�]�)�@s�dZddlmZmZmZGdd�de�ZGdd�de�ZGdd�dee�Zd	d
�Z	dd�Z
Gd
d�d�ZGdd�dee�ZGdd�dee�Z
dd�Zgdgfdd�Zdgfdd�Zdd�Zdd�ZdS)a� Support functions for RE simplification.
This module is intended for use by the RE module.
It is in a separate module to keep RE itself cleaner
since the algorithm, 'rectangle selection', is a quite
separate part that depends on some tricky heuristics.

The primary entry function is

chooserects(lines, gauges)

It chooses 'the best' rectangles from lines to base simplification on.
A weight on atoms is given by gauges.

pr() gives some example usages of chooserects.

�)�	immbitset�	mutbitset�immbitrangec@s:eZdZdZdd�Zdd�Zdd�Zdd	d
�Zdd�Zd
S)�Rect)�width�lines�gainmemo�lnos�	all_lines�common_partcCs||_||_i|_dS)N)rrr)�selfrr�r
�D/opt/alt/python37/lib64/python3.7/site-packages/guppy/etc/RE_Rect.py�__init__sz
Rect.__init__cs.||_t�fdd�|jD��|_|��|_dS)Ncsg|]}�t|��qSr
)�id)�.0�line)�lnobyidr
r�
<listcomp> szRect.init2.<locals>.<listcomp>)r
rrr	�get_common_partr)rrr
r
)rr�init2sz
Rect.init2csR�j}||@}||kr2|�_�fdd�|D��_t|�dkrNt�jd��_dS)Ncsg|]}�j|�qSr
)r
)r�lno)rr
rr+sz$Rect.reducelines.<locals>.<listcomp>�r)r	r�lenr)rr	�olnosr
)rr�reducelines#s
zRect.reducelinesrcCs.g}x$|j|@D]}|�|j|�qW|S)N)r	�appendr
)r�	pickednosr�ir
r
r�	get_lines/szRect.get_linescCsd|j|jt|j�|jfS)Nz0<
 dir = %d
 width = %d
 lnos = %s
 lines = %s
>)�dirr�listr	r)rr
r
r�__repr__5sz
Rect.__repr__N)r)	�__name__�
__module__�__qualname__�	__slots__rrrrr"r
r
r
rrs
rc@s&eZdZdZdZdd�Zddd�ZdS)	�LeftRectr
rcCs|jdd|j�S)Nr)rr)rr
r
rr>szLeftRect.get_common_partcCs0g}x&|�|�D]}|�||jd��qW|S)N)rrr)rr�ucrr
r
r�
get_uncommonsAszLeftRect.get_uncommonsN)r)r#r$r%r&r rr)r
r
r
rr':sr'c@s&eZdZdZdZdd�Zd	dd�ZdS)
�	RightRectr
���cCs&|j}|dkrgS|jd|d�S)Nr)rr)r�lor
r
rrLszRightRect.get_common_partrcCsBg}|j}|dkrd}x$|�|�D]}|�|d|��q$W|S)Nr)rrr)rrr(�hirr
r
rr)RszRightRect.get_uncommonsN)r)r#r$r%r&r rr)r
r
r
rr*Hsr*cCs2|dkrt|�Sd}x|D]}|||�7}qW|S)Nr)r)�gaugeZlstZgain�xr
r
r�	sum_gauge\s
r0cCs8x2|D]*}t||�}t||�}t||�}|r|SqWdS)Nr)r0Zcmp)ZxsZys�gaugesr.ZgxZgy�cr
r
r�
cmp_gaugedgs



r3c@seZdZdd�ZdS)�InducedRectcCs&||_|j|_|j|_||_||_dS)N)�srr
rr	)rr5rr	r
r
rrrs
zInducedRect.__init__N)r#r$r%rr
r
r
rr4qsr4c@seZdZdS)�InducedRightRectN)r#r$r%r
r
r
rr6zsr6c@seZdZdS)�InducedLeftRectN)r#r$r%r
r
r
rr7~sr7c
Cst|�dkrtd|�gStd|�td|�g}g}x�|�r|}g}x�|D]�}|j}xnd}i}||jA}x6|jD],}	|t|	�kr�|�|	|g��|	�qld}qlW|s�t|�dkr�P|d|_}qRW|�|�|d7}x:t|�	��D]*\}
}t|�dkr�|�
||�}|�|�q�WqFWq2W|S)Nrr)rr'r*rr r�
setdefaultrr!�items�	__class__)
rZnewrectsZ	donerectsZoldrects�rrZis_done�d�posr�k�vZnew_rr
r
r�brect�s6


r@Ncs�����fdd�}����fdd�}����fdd�}dd�}�d	dkrV�d
d��tdd�t��D��}�}t|��x�D]}	|	�|��q~W�j|d
d�tt���}
t��g}g�x6�|
kr�|�}	�|	jO�|�	|	�||	�||	�q�W|S)Ncs�|��}t|�dkrdSg}x��D]�}|j|jkr4q"g}|���}|j�@}x(t||�D]\}}||krZ|�|�qZWt|�t|�kr"t|�}	�fdd�|D�}|jdkr�t}
nt}
|
|||	�}|�|�q"W|rވ�	|�dS)N�csg|]}�|�qSr
r
)rr)rr
rr�sz*choose.<locals>.induce.<locals>.<listcomp>r+)
r)rr r	�ziprrr6r7�extend)r;Z	uncommonsZirsr5ZpssZuncsr	ZuncrZpslnosr2Zir)r�newsr�rectsr
r�induce�s.


zchoose.<locals>.inducecs�|j}g}x܈D]�}||krq|j|jkr,q|j}||@s<q|�M}|sLq|j}|sXqx��D]n}||krlq^|j|jkrzq^|j�@}||@r�q^||@}|s�q^||kr�q^|j}	|	s�q^t||	��}
|
dkr�q^Pq^W|�|���|�qW��|�dS)Nr)r	r rr3r�removerC)r;�rlnosZtonewsr5�slnosZscom�tZtlnosrZtcomr2)r1rDrrEr
r�overlap�sN



zchoose.<locals>.overlapc
s��x��r�d}�d=�nLd}�x0t��D�]"}|j�}|sJ��|�q*t|�d}|j}|dk	�r.|slP|srq*|�r.|j}|j}d}x��D]�}	y||	}
Wn(tk
r�t|	|j�}
|
||	<YnX|
|9}
y||	}Wn*tk
�rt|	|j�}|||	<YnX||9}|
|}|r�Pq�W|dk�r.q*|}|}
|�s>P|}|}||}q*W|dk	�rf��|�|dk	r|�	��|jr|SqWdS)Nrr)
r!r	rGrrr�KeyErrorr0rr)r;r5rIZsn�swZrwnZrmemoZsmemor2r.ZgrZrnZgsrHZrw)r1rDrrEr
r�picknext�sh








zchoose.<locals>.picknextcSs|j|j|jdfS)Nr)rr r	)r/r
r
r�cmpinit$szchoose.<locals>.cmpinitrrcSsg|]\}}t|�|f�qSr
)r)rrrr
r
rr*szchoose.<locals>.<listcomp>T)�key�reverse)
�dict�	enumerater!r�sortrrrr	r)rErr1rFrKrNrOrZorectsr;ZallnosZpickedrectsr
)r1rrDrrEr�choose�s..7



rUcCst|�}t|||�}|S)N)r@rU)rr1rEZchoosenr
r
r�chooserectsDsrVcCs�tddg�}tddddg�}t|�tdddd	g�}t|�td
ddd
g�}t|�tddddg�}td|�dddg}tt|��ttddg��ttddg��ttddddg��ttddddg��ttddddg��ttdddd d!g��dS)"N�abcZade�abe�ace�xbyZab1Zab2Zac3Zac4Z1bfZ2bfZ3cfZ4cfZabdZbcxZbdyZTW�eZaxc�a�ZabcdZabce�fr<ZauvwZbuvw�bZaxuvwZbxuvwZaxyZbxyZcy)rV�print)r/r
r
r�prJsB
racCs&x td�D]}tddddg�}q
WdS)N�drWrXrYrZ)�rangerV)rr/r
r
r�tmany�s
rd)�__doc__Z
guppy.setsrrr�objectrr'r*r0r3r4r6r7r@rUrVrardr
r
r
r�<module>s%
	 #F