ó
C]c           @@ s˜   d  d l  m Z m Z d  d l m Z d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ	 d	 e f d
 „  ƒ  YZ
 d e f d „  ƒ  YZ d S(   i    (   t   print_functiont   absolute_import(   t   defaultdictt   DuplicatedNameErrorc           B@ s   e  Z RS(    (   t   __name__t
   __module__(    (    (    s1   lib/python2.7/site-packages/llvmlite/ir/_utils.pyR      s   t	   NameScopec           B@ s8   e  Z d  „  Z d „  Z e d „ Z d „  Z d „  Z RS(   c         C@ s%   t  d g ƒ |  _ t t ƒ |  _ d  S(   Nt    (   t   sett   _usesetR   t   intt   _basenamemap(   t   self(    (    s1   lib/python2.7/site-packages/llvmlite/ir/_utils.pyt   __init__   s    c         C@ s   | |  j  k S(   N(   R	   (   R   t   name(    (    s1   lib/python2.7/site-packages/llvmlite/ir/_utils.pyt   is_used   s    c         C@ sJ   | r |  j  | ƒ } n |  j | ƒ r6 t | ƒ ‚ n  |  j j | ƒ | S(   N(   t   deduplicateR   R   R	   t   add(   R   R   R   (    (    s1   lib/python2.7/site-packages/llvmlite/ir/_utils.pyt   register   s    c         C@ sP   | } xC |  j  | ƒ rK |  j | d } | |  j | <d j | | ƒ } q	 W| S(   Ni   s   {0}.{1}(   R   R   t   format(   R   R   t   basenamet   ident(    (    s1   lib/python2.7/site-packages/llvmlite/ir/_utils.pyR      s    c         C@ s   t  |  ƒ d |  ƒ S(   Nt   parent(   t   type(   R   (    (    s1   lib/python2.7/site-packages/llvmlite/ir/_utils.pyt	   get_child"   s    (   R   R   R   R   t   FalseR   R   R   (    (    (    s1   lib/python2.7/site-packages/llvmlite/ir/_utils.pyR   
   s
   			t   _StrCachingc           B@ s   e  Z d  „  Z d „  Z RS(   c         C@ s"   y
 |  `  Wn t k
 r n Xd  S(   N(   t   _StrCaching__cached_strt   AttributeError(   R   (    (    s1   lib/python2.7/site-packages/llvmlite/ir/_utils.pyt   _clear_string_cache(   s    
c         C@ s7   y |  j  SWn% t k
 r2 |  j ƒ  } |  _  | SXd  S(   N(   R   R   t
   _to_string(   R   t   s(    (    s1   lib/python2.7/site-packages/llvmlite/ir/_utils.pyt   __str__.   s
    (   R   R   R   R    (    (    (    s1   lib/python2.7/site-packages/llvmlite/ir/_utils.pyR   &   s   	t   _StringReferenceCachingc           B@ s   e  Z d  „  Z RS(   c         C@ s7   y |  j  SWn% t k
 r2 |  j ƒ  } |  _  | SXd  S(   N(   t&   _StringReferenceCaching__cached_refstrR   t   _get_reference(   R   R   (    (    s1   lib/python2.7/site-packages/llvmlite/ir/_utils.pyt   get_reference8   s
    (   R   R   R$   (    (    (    s1   lib/python2.7/site-packages/llvmlite/ir/_utils.pyR!   6   s   t   _HasMetadatac           B@ s   e  Z d  „  Z e d „ Z RS(   c         C@ s   | |  j  | <d S(   s[   
        Attach unnamed metadata *node* to the metadata slot *name* of this value.
        N(   t   metadata(   R   R   t   node(    (    s1   lib/python2.7/site-packages/llvmlite/ir/_utils.pyt   set_metadataB   s    c         C@ sx   |  j  rp g  } | r% | j d ƒ n  | g  |  j  j ƒ  D]$ \ } } d j | | j ƒ  ƒ ^ q8 7} d j | ƒ Sd Sd  S(   NR   s   !{0} {1}s   , (   R&   t   appendt   itemsR   R$   t   join(   R   t   leading_commat   buft   kt   v(    (    s1   lib/python2.7/site-packages/llvmlite/ir/_utils.pyt   _stringify_metadataH   s    	8(   R   R   R(   R   R0   (    (    (    s1   lib/python2.7/site-packages/llvmlite/ir/_utils.pyR%   @   s   	N(   t
   __future__R    R   t   collectionsR   t	   NameErrorR   t   objectR   R   R!   R%   (    (    (    s1   lib/python2.7/site-packages/llvmlite/ir/_utils.pyt   <module>   s   
