File: //opt/alt/python37/lib64/python3.7/site-packages/guppy/etc/__pycache__/RE_Rect.cpython-37.pyc
B
�]�) � @ s� d Z ddlmZmZmZ G dd� de�ZG dd� de�ZG dd� dee�Zd d
� Z dd� Z
G d
d� d�ZG dd� dee�ZG dd� dee�Z
dd� Zg dgfdd�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: e Zd ZdZdd� Zdd� Zdd� Zdd d
�Zdd� Zd
S )�Rect)�width�lines�gainmemo�lnos� all_lines�common_partc C s* || _ || _|r t|�dkr t�i | _d S )N� )r r �len�AssertionErrorr )�selfr r � r �D/opt/alt/python37/lib64/python3.7/site-packages/guppy/etc/RE_Rect.py�__init__ s z
Rect.__init__c s. || _ t� fdd�| jD ��| _| �� | _d S )Nc s g | ]}� t |� �qS r )�id)�.0�line)�lnobyidr r �
<listcomp> s zRect.init2.<locals>.<listcomp>)r
r r r �get_common_partr )r r r
r )r r �init2 s z
Rect.init2c sR � j }|| @ }||kr2|� _ � fdd�|D �� _t|�dkrNt� jd �� _d S )Nc s g | ]}� j | �qS r )r
)r �lno)r r r r + s z$Rect.reducelines.<locals>.<listcomp>r r )r r r
r )r r �olnosr )r r �reducelines# s
zRect.reducelinesr c C s. g }x$| j | @ D ]}|�| j| � qW |S )N)r �appendr
)r � pickednosr �ir r r � get_lines/ s zRect.get_linesc C s d| j | jt| j�| jf S )Nz0<
dir = %d
width = %d
lnos = %s
lines = %s
>)�dirr �listr r )r r r r �__repr__5 s z
Rect.__repr__N)r ) �__name__�
__module__�__qualname__� __slots__r r r r r# r r r r r s
r c @ s&