U
    hâËdD  ã                   @   sô   d dl mZ d dlmZ G dd„ dƒZG dd„ dejƒZeƒ Zejsðd dl m	Z	 d dl
mZmZmZmZmZ d d	lmZ d d
lmZ e e¡dd„ ƒZeeƒG dd„ dejƒƒZeeddƒ eeddƒ eeƒdd„ ƒZeeejejƒdd„ ƒZdS )é    )Útypes)Úconfigc                   @   s   e Zd Zdd„ ZdS )Ú
TestStructc                 C   s   || _ || _d S ©N©ÚxÚy)Úselfr   r   © r
   úd/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/numba/cuda/tests/cudapy/extensions_usecases.pyÚ__init__   s    zTestStruct.__init__N)Ú__name__Ú
__module__Ú__qualname__r   r
   r
   r
   r   r      s   r   c                       s   e Zd Z‡ fdd„Z‡  ZS )ÚTestStructModelTypec                    s   t ƒ jdd� d S )Nr   )Úname)Úsuperr   )r	   ©Ú	__class__r
   r   r      s    zTestStructModelType.__init__©r   r   r   r   Ú__classcell__r
   r
   r   r   r      s   r   )Úint32)ÚmodelsÚregister_modelÚmake_attribute_wrapperÚtypeof_implÚtype_callable)Úlower)Úcgutilsc                 C   s   t S r   )Útest_struct_model_type)ÚvalÚcr
   r
   r   Útypeof_teststruct   s    r"   c                       s   e Zd Z‡ fdd„Z‡  ZS )ÚTestStructModelc                    s$   dt fdt fg}tƒ  |||¡ d S )Nr   r   )r   r   r   )r	   ZdmmZfe_typeÚmembersr   r
   r   r   %   s    zTestStructModel.__init__r   r
   r
   r   r   r#   #   s   r#   r   r   c                 C   s   dd„ }|S )Nc                 S   s    t | tjƒrt |tjƒrtS d S r   )Ú
isinstancer   ÚIntegerr   r   r
   r
   r   Útyper.   s    ztype_test_struct.<locals>.typerr
   )Úcontextr'   r
   r
   r   Útype_test_struct,   s    r)   c                 C   s,   t  t¡| |ƒ}|d |_|d |_| ¡ S )Nr   é   )r   Zcreate_struct_proxyr   r   r   Z	_getvalue)r(   ZbuilderÚsigÚargsÚobjr
   r
   r   Úlower_test_type_ctor3   s    ÿ þ

r.   N)Znumbar   Z
numba.corer   r   ÚTyper   r   ZENABLE_CUDASIMr   Znumba.core.extendingr   r   r   r   r   Znumba.cuda.cudaimplr   r   Úregisterr"   ZStructModelr#   r)   r&   r.   r
   r
   r
   r   Ú<module>   s&   

