ó
\K]c           @` sÔ   d  Z  d d l m Z m Z m Z d d l m Z d d l m Z m	 Z	 m
 Z
 d d l m Z m Z e ƒ  Z e j Z e d e j ƒ d „  ƒ Z e d e j ƒ d „  ƒ Z e e e j e j ƒ ƒ d	 „  ƒ Z d
 S(   s7   
This file implements print functionality for the CPU.
i    (   t   print_functiont   absolute_importt   division(   t   Type(   t   typest   typingt   cgutils(   t   Registryt   impl_ret_untrackedt
   print_itemc   	      C` sx   | j  \ } | j } |  j | ƒ } | j | j | ƒ ƒ } | j | ƒ | j | ƒ |  j ƒ  } t |  | | j	 | ƒ S(   s(   
    Print a single constant value.
    (
   t   argst   literal_valuet   get_python_apit   unserializet   serialize_objectt   print_objectt   decreft   get_dummy_valueR   t   return_type(	   t   contextt   buildert   sigR
   t   tyt   valt   pyapit   strobjt   res(    (    s6   lib/python2.7/site-packages/numba/targets/printimpl.pyt   print_item_impl   s    	c         C` s.  | j  \ } | \ } |  j | ƒ } |  j | ƒ } |  j rU |  j j | | | ƒ n  | j | | | ƒ } | j t j	 | | ƒ d t
 ƒ \ }	 }
 |	  | j | ƒ | j | ƒ Wd QX|
 C |  j | j d ƒ } | j | ƒ } | j | ƒ | j | ƒ Wd QXWd QX|  j ƒ  } t |  | | j | ƒ S(   s~   
    Print a single native value by boxing it in a Python object and
    invoking the Python interpreter's print routine.
    t   likelyNs   the print() function(   R
   R   t   get_env_managert
   enable_nrtt   nrtt   increft   from_native_valuet   if_elseR   t   is_not_nullt   TrueR   R   t   insert_const_stringt   modulet   string_from_stringt   err_write_unraisableR   R   R   (   R   R   R   R
   R   R   R   t   env_managert   objt   if_okt   if_errort   cstrR   R   (    (    s6   lib/python2.7/site-packages/numba/targets/printimpl.pyR   #   s&    		*	c         C` sã   |  j  | ƒ } | j ƒ  } x‰ t t | j | ƒ ƒ D]o \ } \ } } t j t j | ƒ }	 |  j	 d |	 ƒ }
 |
 | | g ƒ | t
 | ƒ d k  r4 | j d ƒ q4 q4 W| j d ƒ | j | ƒ |  j ƒ  } t |  | | j | ƒ S(   s    
    A entire print() call.
    R	   i   t    s   
(   R   t
   gil_ensuret	   enumeratet   zipR
   R   t	   signatureR   t   nonet   get_functiont   lent   print_stringt   gil_releaseR   R   R   (   R   R   R   R
   R   t   gilt   it   argtypet   argvalR2   t   impR   (    (    s6   lib/python2.7/site-packages/numba/targets/printimpl.pyt   print_varargs_implB   s    +N(   t   __doc__t
   __future__R    R   R   t   llvmlite.llvmpy.coreR   t   numbaR   R   R   t   numba.targets.imputilsR   R   t   registryt   lowert   LiteralR   t   Anyt   printt   VarArgR=   (    (    (    s6   lib/python2.7/site-packages/numba/targets/printimpl.pyt   <module>   s   		