ó
\K]c           @   sÁ   d  Z  d d l Z d d l m Z d d l m Z m Z e e j ƒ d d d „  ƒ  Yƒ Z d e f d „  ƒ  YZ	 d	 e f d
 „  ƒ  YZ
 d e f d „  ƒ  YZ e d „ Z d d	 d d d g Z d S(   sw   
Hints to wrap Kernel arguments to indicate how to manage host-device
memory transfers before & after the kernel call.
iÿÿÿÿN(   t   add_metaclass(   t   typeoft   Purposet   ArgHintc           B   s5   e  Z d  „  Z e j d d „ ƒ Z e d „  ƒ Z RS(   c         C   s   | |  _  d  S(   N(   t   value(   t   selfR   (    (    s.   lib/python2.7/site-packages/numba/cuda/args.pyt   __init__   s    i    c         C   s   d S(   s#  
        :param stream: a stream to use when copying data
        :param retr:
            a list of clean-up work to do after the kernel's been run.
            Append 0-arg lambdas to it!
        :return: a value (usually an `DeviceNDArray`) to be passed to
            the kernel
        N(    (   R   t   retrt   stream(    (    s.   lib/python2.7/site-packages/numba/cuda/args.pyt	   to_device   s    
c         C   s   t  |  j t j ƒ S(   N(   R   R   R   t   argument(   R   (    (    s.   lib/python2.7/site-packages/numba/cuda/args.pyt   _numba_type_   s    (   t   __name__t
   __module__R   t   abct   abstractmethodR	   t   propertyR   (    (    (    s.   lib/python2.7/site-packages/numba/cuda/args.pyR      s   	t   Inc           B   s   e  Z d  d „ Z RS(   i    c            sE   d d l  m } | |  j d | ƒ\ ‰  } | j ‡  f d †  ƒ ˆ  S(   Ni   (   t   auto_deviceR   c              s   ˆ  S(   N(    (    (   t   devary(    s.   lib/python2.7/site-packages/numba/cuda/args.pyt   <lambda>*   t    (   t   cudadrv.devicearrayR   R   t   append(   R   R   R   R   t   _(    (   R   s.   lib/python2.7/site-packages/numba/cuda/args.pyR	   #   s    	(   R   R   R	   (    (    (    s.   lib/python2.7/site-packages/numba/cuda/args.pyR   "   s   t   Outc           B   s   e  Z d  d „ Z RS(   i    c            sZ   d d l  m } | ˆ j d t d ˆ ƒ\ ‰  } | rV | j ‡  ‡ ‡ f d †  ƒ n  ˆ  S(   Ni   (   R   t   copyR   c              s   ˆ  j  ˆ j d ˆ ƒS(   NR   (   t   copy_to_hostR   (    (   R   R   R   (    s.   lib/python2.7/site-packages/numba/cuda/args.pyR   6   R   (   R   R   R   t   FalseR   (   R   R   R   R   t   conv(    (   R   R   R   s.   lib/python2.7/site-packages/numba/cuda/args.pyR	   /   s    	(   R   R   R	   (    (    (    s.   lib/python2.7/site-packages/numba/cuda/args.pyR   .   s   t   InOutc           B   s   e  Z d  d „ Z RS(   i    c            sT   d d l  m } | ˆ j d ˆ ƒ\ ‰  } | rP | j ‡  ‡ ‡ f d †  ƒ n  ˆ  S(   Ni   (   R   R   c              s   ˆ  j  ˆ j d ˆ ƒS(   NR   (   R   R   (    (   R   R   R   (    s.   lib/python2.7/site-packages/numba/cuda/args.pyR   A   R   (   R   R   R   R   (   R   R   R   R   R   (    (   R   R   R   s.   lib/python2.7/site-packages/numba/cuda/args.pyR	   ;   s    	(   R   R   R	   (    (    (    s.   lib/python2.7/site-packages/numba/cuda/args.pyR   :   s   c         C   s   t  |  t ƒ r |  S| |  ƒ S(   N(   t
   isinstanceR   (   R   t   default(    (    s.   lib/python2.7/site-packages/numba/cuda/args.pyt   wrap_argE   s    R!   (    (   t   __doc__R   t	   numba.sixR    t   numba.typing.typeofR   R   t   ABCMetaR   R   R   R   R!   t   __all__(    (    (    s.   lib/python2.7/site-packages/numba/cuda/args.pyt   <module>   s   "