%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /proc/227033/root/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/
Upload File :
Create Path :
Current File : //proc/227033/root/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/RE_Rect.pyo

�
;�Pc@sdZddlmZmZmZdefd��YZdefd��YZdeefd��YZd	�Z	d
�Z
ddd��YZd
eefd��YZdeefd��YZ
d�Zgdgdd�Zdgdd�Zd�Zd�ZdS(s 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, trace)

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

pr() gives some example usages of chooserects.

i����(t	immbitsett	mutbitsettimmbitrangetRectcBsDeZdZd�Zd�Zd�Zd	d
�Zd�ZeZRS(
twidthtlinestgainmemotlnost	all_linestcommon_partcCs||_||_i|_dS(N(RRR(tselfRR((sD/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/RE_Rect.pyt__init__s		cCsK||_tg|jD]}|t|�^q�|_|j�|_dS(N(RRRtidRtget_common_partR	(R
tlnobyidRtline((sD/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/RE_Rect.pytinit2s	/cCs~|j}||@}||krO||_g|D]}|j|^q0|_nt|�dkrzt|jd�|_ndS(Nii(RRRtlenR(R
Rtolnostlno((sD/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/RE_Rect.pytreducelines#s		&icCs7g}x*|j|@D]}|j|j|�qW|S(N(RtappendR(R
t	pickednosRti((sD/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/RE_Rect.pyt	get_lines/scCs&d|j|jt|j�|jfS(Ns0<
 dir = %d
 width = %d
 lnos = %s
 lines = %s
>(tdirRtlistRR(R
((sD/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/RE_Rect.pyt__str__5s(RRRRRR	(	t__name__t
__module__t	__slots__RRRRRt__repr__(((sD/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/RE_Rect.pyRs				tLeftRectcBs)eZdZdZd�Zdd�ZRS(icCs|jd|j S(Ni(RR(R
((sD/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/RE_Rect.pyR
?scCs8g}x+|j|�D]}|j||j�qW|S(N(RRR(R
RtucR((sD/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/RE_Rect.pyt
get_uncommonsBs((RRRRR
R"(((sD/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/RE_Rect.pyR <s	t	RightRectcBs)eZdZdZd�Zdd�ZRS(i����cCs)|j}|dkrgS|jd|S(Ni(RR(R
tlo((sD/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/RE_Rect.pyR
Ks
icCsTg}|j}|dkr%d}nx(|j|�D]}|j|| �q5W|S(Ni(RtNoneRR(R
RR!thiR((sD/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/RE_Rect.pyR"Qs
	((RRRRR
R"(((sD/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/RE_Rect.pyR#Hs	cCsA|dkrt|�Sd}x|D]}|||�7}q#W|S(Ni(R%R(tgaugetlsttgaintx((sD/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/RE_Rect.pyt	sum_gaugeZs

cCsLxE|D]=}t||�}t||�}t||�}|r|SqWdS(Ni(R+tcmp(txstystgaugesR'tgxtgytc((sD/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/RE_Rect.pyt
cmp_gaugedds
tInducedRectcBseZd�ZRS(cCs7||_|j|_|j|_||_||_dS(N(tsRRRR(R
R5RR((sD/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/RE_Rect.pyRns
		(RRR(((sD/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/RE_Rect.pyR4mstInducedRightRectcBseZRS((RR(((sD/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/RE_Rect.pyR6wstInducedLeftRectcBseZRS((RR(((sD/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/RE_Rect.pyR7zsc
Cs~t|�dkr"td|�gStd|�td|�g}g}x1|ry|}g}x|D]}|j}x�d}i}||jA}xI|jD]>}	|t|	�kr�|j|	|g�j|	�q�d}q�W|s�t|�dkr�Pn|d|_}qtW|j|�|d7}xN|j�D]@\}
}t|�dkr.|j	||�}|j|�q.q.WqbWqIW|S(Nii(
RR R#RRRt
setdefaultRtitemst	__class__(
Rtnewrectst	donerectstoldrectstrRtis_donetdtposRtktvtnew_r((sD/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/RE_Rect.pytbrects6	
	
 


tcs������fd�}�����fd�}�����fd�}d�}�ddkrw�d�ntgt��D]\}}	t|	�|f^q��}
�}t|��x�D]}|j|
��q�W�j|�tt���}
t	��g}g�x`�|
krw|�}�|j
O�|j|�||��dkrjtj
�n||�qW�dkr�tj
�n�d	kr�tj
�n|S(
Ncs}�dkrtj�n|j�}t|�dkr;dSg}x�D]}|j|jkrfqHng}|j��}|j�@}x9t||�D](\}}||kr�|j|�q�q�Wt|�t|�krHt|�}	g|D]}�|^q�}|jdkrt	}
nt
}
|
|||	�}�dkrOtj�n|j|�qHqHW|ry�j|�ndS(Ntinduceii����tindap(tpdbt	set_traceR"RRRtzipRRR6R7textend(R>t	uncommonstirsR5tpsstuncsRtuncRtpslnosR2tir(RtnewsRtrectsttrace(sD/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/RE_Rect.pyRG�s6

	
cs�d�krtj�n|j}g}xh�D]`}||krGq/n|j|jkr_q/n|j}||@sxq/n|�M}|s�q/n|j}|s�q/nx��D]�}||kr�q�n|j|jkr�q�n|j�@}||@r�q�n||@}|sq�n||kr!q�n|j}	|	s6q�nt||	��}
|
dkrZq�n�dkrptjnPq�W|j|��j|�q/Wt|�dkr�tj�n�j	|�dS(Ntoverlapitobreaki(
RIRJRRR	R3RtremoveRRL(R>trlnosttonewsR5tslnostscomttttlnosRttcomR2(R/RTRRURV(sD/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/RE_Rect.pyRW�sZ
	
	
	


	


csx�r6�dkr"tj�n�d}�d=n�d}x�t��D]~}|j�}|su�j|�qInt|�d}|j}|dk	r�|s�Pn|s�qIn|r�|j}|j}d}x��D]�}	y||	}
Wn-t	k
rt
|	|j�}
|
||	<nX|
|9}
y||	}Wn-t	k
r`t
|	|j�}|||	<nX||9}|
|}|r�Pq�q�W|dkr�qIq�q�n|}|}
|s�Pn|}|}||}qIW|dk	r��j|�n|dk	r|j��|jr|SqqWdS(NRTii(
RIRJR%RRRYRRRtKeyErrorR+R	R(R>R5R\tsntswtrwntrmemotsmemoR2R'tgrtrntgsRZtrw(R/RTRRURV(sD/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/RE_Rect.pytpicknext�sl




			






	cSsa|j}|j}||}|r&|S|j|j}|r@|St|jd|jd�}|S(Ni(RRR,R(R*tytwxtwyR2((sD/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/RE_Rect.pytcmpinit/s		
iitinducedt	chosortedtchoosen(R%tdictt	enumerateRRRtsortRRRRRRIRJ(RURR/RVRGRWRkRoRRRtorectsR>tallnostpickedrects((R/RRTRRURVsD/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/RE_Rect.pytchoose�s:"59	
7

		





cCs%t|�}t||||�}|S(N(RERy(RR/RVRURr((sD/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/RE_Rect.pytchooserectsascCsFtddg�}tddddg�}|GHtdddd	g�}|GHtd
ddd
g�}|GHtddddg�}dG|GHdddg}t|�GHtddg�GHtddg�GHtddddg�GHtddddg�GHtddddg�GHtdddd d!g�GHtd"d#ddgd$d%�GHdS(&Ntabctadetabetacetxbytab1tab2tac3tac4t1bft2bft3cft4cftabdtbcxtbdytTWtetaxctaRFtabcdtabcetfR@tauvwtbuvwtbtaxuvwtbxuvwtaxytbxytcytdcbatecbaRVRr(Rz(R*((sD/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/RE_Rect.pytprgsD		cCs3x,td�D]}tddddg�}q
WdS(NidR{R}R~R(trangeRz(RR*((sD/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/RE_Rect.pyttmany�s
N((t__doc__t
guppy.setsRRRtobjectRR R#R+R3R4R6R7RER%RyRzR�R�(((sD/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/RE_Rect.pyt<module>s&	
		
	�	K

Zerion Mini Shell 1.0