Edit File: 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&