
    sh                         S r SSKrSSKJrJr   " S S\R
                  S9r " S S\5      r " S	 S
\5      r " S S\5      r	\	4S jr
/ SQrg)zw
Hints to wrap Kernel arguments to indicate how to manage host-device
memory transfers before & after the kernel call.
    N)typeofPurposec                   R    \ rS rSrS r\R                  SS j5       r\S 5       r	Sr
g)ArgHint
   c                     Xl         g Nvalue)selfr   s     c/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/cuda/args.py__init__ArgHint.__init__   s    
    c                     g)z
: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   retrstreams      r   	to_deviceArgHint.to_device   s     	r   c                 J    [        U R                  [        R                  5      $ r	   )r   r   r   argument)r   s    r   _numba_type_ArgHint._numba_type_   s    djj'"2"233r   r
   Nr   )__name__
__module____qualname____firstlineno__r   abcabstractmethodr   propertyr   __static_attributes__r   r   r   r   r   
   s5     		 	 4 4r   r   )	metaclassc                       \ rS rSrSS jrSrg)In   c                 f   ^ SSK Jn  U" U R                  US9u  mnUR                  U4S j5        T$ )N   auto_devicer   c                     > T $ r	   r   )devarys   r   <lambda>In.to_device.<locals>.<lambda>'   s    Fr   cudadrv.devicearrayr+   r   append)r   r   r   r+   _r.   s        @r   r   In.to_device    s1    4JJ	
 	N#r   r   Nr   r   r   r   r   r   r#   r   r   r   r&   r&          r   r&   c                       \ rS rSrSS jrSrg)Out+   c                 ~   ^ ^^ SSK Jn  U" T R                  STS9u  mnU(       a  UR                  UU U4S j5        T$ )Nr)   r*   F)copyr   c                  8   > T R                  TR                  TS9$ Nr,   copy_to_hostr   r.   r   r   s   r   r/   Out.to_device.<locals>.<lambda>3        3 3DJJv 3 Nr   r1   r   r   r   r+   convr.   s   ` `  @r   r   Out.to_device,   s8    4"JJ KKNOr   r   Nr   r6   r   r   r   r9   r9   +   r7   r   r9   c                       \ rS rSrSS jrSrg)InOut7   c                 |   ^ ^^ SSK Jn  U" T R                  TS9u  mnU(       a  UR                  UU U4S j5        T$ )Nr)   r*   r,   c                  8   > T R                  TR                  TS9$ r>   r?   rA   s   r   r/   !InOut.to_device.<locals>.<lambda>>   rC   r   r1   rD   s   ` `  @r   r   InOut.to_device8   s5    4"JJ KKNOr   r   Nr   r6   r   r   r   rH   rH   7   s    r   rH   c                 @    [        U [        5      (       a  U $ U" U 5      $ r	   )
isinstancer   )r   defaults     r   wrap_argrQ   B   s    ug..5BGENBr   )r&   r9   rH   r   rQ   )__doc__r    numba.core.typing.typeofr   r   ABCMetar   r&   r9   rH   rQ   __all__r   r   r   <module>rV      sX     44 4*	 		' 	G  " Cr   