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   ú=C:\wamp64\www\opt\env\Lib\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    
