o
    ߐi                     @   s`   d dl mZ G dd deZG dd deZG dd deZG dd	 d	eZG d
d deZdS )    )defaultdictc                   @   s   e Zd ZdS )DuplicatedNameErrorN)__name__
__module____qualname__ r   r   a/var/www/html/eduruby.in/lip-sync/lip-sync-env/lib/python3.10/site-packages/llvmlite/ir/_utils.pyr      s    r   c                   @   s6   e Zd Zdd Zdd ZdddZdd	 Zd
d ZdS )	NameScopec                 C   s   t dg| _tt| _d S )N )set_usesetr   int_basenamemapselfr   r   r   __init__	   s   zNameScope.__init__c                 C   s
   || j v S N)r   )r   namer   r   r   is_used   s   
zNameScope.is_usedFc                 C   s2   |r|  |}n	| |rt|| j| |S r   )deduplicater   r   r   add)r   r   r   r   r   r   register   s   
zNameScope.registerc                 C   s@   |}|  |r| j| d }|| j|< d||}|  |s|S )N   z{0}.{1})r   r   format)r   r   basenameidentr   r   r   r      s   


zNameScope.deduplicatec                 C   s   t | | dS )N)parent)typer   r   r   r   	get_child    s   zNameScope.get_childNF)r   r   r   r   r   r   r   r   r   r   r   r   r	      s    
r	   c                   @   s   e Zd Zdd Zdd ZdS )_StrCachingc                 C   s    z| ` W d S  ty   Y d S w r   )_StrCaching__cached_strAttributeErrorr   r   r   r   _clear_string_cache&   s
   
z_StrCaching._clear_string_cachec                 C   .   z| j W S  ty   |   }| _ | Y S w r   )r!   r"   Z
_to_stringr   sr   r   r   __str__,      z_StrCaching.__str__N)r   r   r   r#   r'   r   r   r   r   r    $   s    r    c                   @   s   e Zd Zdd ZdS )_StringReferenceCachingc                 C   r$   r   )Z&_StringReferenceCaching__cached_refstrr"   Z_get_referencer%   r   r   r   get_reference6   r(   z%_StringReferenceCaching.get_referenceN)r   r   r   r*   r   r   r   r   r)   4   s    r)   c                   @   s   e Zd Zdd ZdddZdS )_HasMetadatac                 C   s   || j |< dS )zc
        Attach unnamed metadata *node* to the metadata slot *name* of this
        value.
        N)metadata)r   r   noder   r   r   set_metadata@   s   z_HasMetadata.set_metadataFc                 C   s>   | j rg }|r|d |dd | j  D 7 }d|S dS )Nr
   c                 S   s    g | ]\}}d  || qS )z!{0} {1})r   r*   ).0kvr   r   r   
<listcomp>L   s    z4_HasMetadata._stringify_metadata.<locals>.<listcomp>z, )r,   appenditemsjoin)r   Zleading_commabufr   r   r   _stringify_metadataG   s   

z _HasMetadata._stringify_metadataNr   )r   r   r   r.   r7   r   r   r   r   r+   >   s    r+   N)	collectionsr   	NameErrorr   objectr	   r    r)   r+   r   r   r   r   <module>   s    
