a
    dM                     @   s0   d dl mZ d dlmZ dZG dd deZdS )    )StringIO)TokenNc                   @   s   e Zd ZdZdd Zdd Zdd Zedd	d
Ze	dddZ
edddZedddZdd Zdd Zdd Zdd Zdd ZeedddZeeed d!d"Zd#S )$IntervalSet	intervalsreadonlyc                 C   s   d | _ d| _d S )NFr   self r
   [/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/antlr4/IntervalSet.py__init__   s    zIntervalSet.__init__c                 c   s*   | j d ur&| j D ]}|D ]
}|V  qqd S N)r   )r	   icr
   r
   r   __iter__   s    

zIntervalSet.__iter__c                 C   s,   d}| D ]}||kr|  S |d7 }qt jS Nr      )r   ZINVALID_TYPE)r	   itemr   kr
   r
   r   __getitem__   s    
zIntervalSet.__getitem__)vc                 C   s   |  t||d  d S Nr   )addRangerange)r	   r   r
   r
   r   addOne#   s    zIntervalSet.addOnec                 C   s   | j d u r t | _ | j | nd}| j D ]}|j|jk rN| j ||  d S |j|jkrtt|j|j| j |<  d S |j|jkrtt|j|jt|j|j| j |< | 	|  d S |d7 }q*| j | d S r   )
r   listappendstopstartinsertr   minmaxreduce)r	   r   r   r   r
   r
   r   r   &   s"    

$

zIntervalSet.addRange)otherc                 C   s$   |j d ur |j D ]}| | q| S r   )r   r   )r	   r#   r   r
   r
   r   addSet?   s    

zIntervalSet.addSet)r   c                 C   s   |t | jd k r| j| }| j|d  }|j|jkrR| j|d  | | n0|j|jkrt|j|j| j|< | j|d  d S r   )lenr   r   popr"   r   r   )r	   r   lrr
   r
   r   r"   E   s    
zIntervalSet.reducec                 C   s4   t  }|t||d  | jD ]}|| q |S r   )r   r   r   r   removeRange)r	   r   r   resultr   r
   r
   r   
complementR   s
    
zIntervalSet.complementc                    s*   | j d u rdS t fdd| j D S d S )NFc                 3   s   | ]} |v V  qd S r   r
   .0r   r   r
   r   	<genexpr>]       z+IntervalSet.__contains__.<locals>.<genexpr>)r   any)r	   r   r
   r.   r   __contains__Y   s    
zIntervalSet.__contains__c                 C   s   t dd | jD S )Nc                 s   s   | ]}t |V  qd S r   )r%   r,   r
   r
   r   r/   `   r0   z&IntervalSet.__len__.<locals>.<genexpr>)sumr   r   r
   r
   r   __len___   s    zIntervalSet.__len__c                 C   s  |j |jd kr| |j  n| jd urd}| jD ]}|j|j krJ d S |j |j kr|j|jk rt|j |j | j|< t|j|j}| j||  d S |j |j kr|j|jkr| j| |d8 }nD|j |jk rt|j |j | j|< n"|j|jk r
t|j|j| j|< |d7 }q4d S )Nr   r   )r   r   	removeOner   r   r   r&   r	   r   r   r   xr
   r
   r   r)   b   s(    

zIntervalSet.removeRangec                 C   s   | j d urd}| j D ]}||jk r( d S ||jkrR||jd krR| j |  d S ||jkrzt|jd |j| j |<  d S ||jd krt|j|jd | j |<  d S ||jd k rt|j|}t|d |j| j |< | j ||  d S |d7 }qd S r   )r   r   r   r&   r   r   r6   r
   r
   r   r5   }   s(    



zIntervalSet.removeOne)literalNamessymbolicNamesc              
   C   s   | j d u rdS t }t| dkr,|d d}| j D ]4}|D ]*}|sP|d || ||| d}q>q6t| dkr|d | W  d    S 1 s0    Y  d S )Nz{}r   {Tz, F})r   r   r%   writeelementNamegetvalue)r	   r8   r9   buffirstr   jr
   r
   r   toString   s    




zIntervalSet.toString)r8   r9   ac                 C   sX   |t jkrdS |t jkrdS |t|k r<|| dkr<|| S |t|k rP|| S dS d S )Nz<EOF>z	<EPSILON>z	<INVALID>z	<UNKNOWN>)r   EOFZEPSILONr%   )r	   r8   r9   rC   r
   r
   r   r=      s    

zIntervalSet.elementNameN)__name__
__module____qualname__	__slots__r   r   r   intr   r   r   r   r$   r"   r+   r2   r4   r)   r5   r   rB   r=   r
   r
   r
   r   r      s   	r   )ior   Zantlr4.Tokenr   r   objectr
   r
   r
   r   <module>   s   