
    Ǆg                     ~    d dl mZ  G d de      Z G d de      Z G d de      Z G d d	e      Z G d
 de      Zy)    )defaultdictc                       e Zd Zy)DuplicatedNameErrorN)__name__
__module____qualname__     Z/home/mcse/projects/flask_80/flask-venv/lib/python3.12/site-packages/llvmlite/ir/_utils.pyr   r      s    r
   r   c                   ,    e Zd Zd Zd ZddZd Zd Zy)	NameScopec                 N    t        dg      | _        t        t              | _        y )N )set_usesetr   int_basenamemapselfs    r   __init__zNameScope.__init__	   s    B4y',r
   c                     || j                   v S N)r   )r   names     r   is_usedzNameScope.is_used   s    t||##r
   c                     |r| j                  |      }n| j                  |      rt        |      | j                  j	                  |       |S r   )deduplicater   r   r   add)r   r   r   s      r   registerzNameScope.register   sC    ##D)D\\$%d++r
   c                     |}| j                  |      rE| j                  |   dz   }|| j                  |<   dj                  ||      }| j                  |      rE|S )N   z{0}.{1})r   r   format)r   r   basenameidents       r   r   zNameScope.deduplicate   s_    ll4 %%h/!3E*/Dh'##He4D ll4  r
   c                 &     t        |       |       S )N)parent)typer   s    r   	get_childzNameScope.get_child    s    tDz&&r
   NF)r   r   r   r   r   r   r   r'   r	   r
   r   r   r      s    -$'r
   r   c                       e Zd Zd Zd Zy)_StrCachingc                 (    	 | ` y # t        $ r Y y w xY wr   )_StrCaching__cached_strAttributeErrorr   s    r   _clear_string_cachez_StrCaching._clear_string_cache&   s    	! 		s    	c                 l    	 | j                   S # t        $ r | j                         x}| _         |cY S w xY wr   )r,   r-   
_to_stringr   ss     r   __str__z_StrCaching.__str__,   s;    	$$$ 	$(OO$55A!H	    "33N)r   r   r   r.   r3   r	   r
   r   r*   r*   $   s    r
   r*   c                       e Zd Zd Zy)_StringReferenceCachingc                 l    	 | j                   S # t        $ r | j                         x}| _         |cY S w xY wr   )&_StringReferenceCaching__cached_refstrr-   _get_referencer1   s     r   get_referencez%_StringReferenceCaching.get_reference6   s=    	''' 	'+':':'<<A$H	r4   N)r   r   r   r:   r	   r
   r   r6   r6   4   s    r
   r6   c                       e Zd Zd ZddZy)_HasMetadatac                 "    || j                   |<   y)zc
        Attach unnamed metadata *node* to the metadata slot *name* of this
        value.
        N)metadata)r   r   nodes      r   set_metadataz_HasMetadata.set_metadata@   s    
 #dr
   c           
         | j                   rtg }|r|j                  d       || j                   j                         D cg c]%  \  }}dj                  ||j	                               ' c}}z  }dj                  |      S yc c}}w )Nr   z!{0} {1}z, )r>   appenditemsr!   r:   join)r   leading_commabufkvs        r   _stringify_metadataz _HasMetadata._stringify_metadataG   sw    ==C

2 $ 3 3 571 %%a):; 7 7C99S>!	7s    *BNr(   )r   r   r   r@   rI   r	   r
   r   r<   r<   >   s    #	r
   r<   N)	collectionsr   	NameErrorr   objectr   r*   r6   r<   r	   r
   r   <module>rM      sD    #	) 	' '8&  f 6 r
   