o
    8Î®cy	  ã                   @   sd  d dl T d dlZd dlZej d¡Zd dlmZ e	ej
ƒZ[ejZege_ee_dd„ ZejZege_ee_dd„ ZejZeeege_ejZeeeƒeeƒge_d	d
„ Zdd„ ZejZdd„ Ze eeƒeƒZ!dd„ Z"e#j$Z%g e%_ee%_e#j&Z'ege'_de'_erŽe(j)j*Z+e,ge+_de+_dd„ Z-dd„ Z.dd„ Z/ddiZ0dd„ Z1e ee2ƒe1ƒZ3dd„ Z4e eeƒe4ƒZ5dS )é    )Ú*NÚwin32)Ú
_helperlibc                 C   ó   t | ƒS ©N)Úc_sin©Úx© r
   úB/tmp/pip-target-vg8gfxp4/lib/python/numba/tests/ctypes_usecases.pyÚ	use_c_sin   ó   r   c                 C   s   t | ƒt| ƒ S r   )r   Úc_cosr   r
   r
   r   Úuse_two_funcs   s   r   c                 C   ó    t  | ¡}t| j| j|jƒ |S r   )ÚnpÚ
empty_likeÚ	c_vsquareÚsizeÚctypes©r	   Úoutr
   r
   r   Úuse_c_vsquare)   ó   
r   c                 C   r   r   )r   r   Úc_vcuber   r   r   r
   r
   r   Úuse_c_vcube.   r   r   c                 C   r   r   )Ú	c_untypedr   r
   r
   r   Úuse_c_untyped7   r   r   c                 C   r   r   )Úctype_wrappingr   r
   r
   r   Úuse_ctype_wrapping>   r   r   c                 C   s   t | ƒ d S r   )Úc_sleepr   r
   r
   r   Úuse_c_sleepQ   s   r!   c                 C   s   t ƒ }| d7 } t|ƒ | S )z2
    Running in Python will cause a segfault.
    é   )Ú
savethreadÚrestorethread)r	   Úthreadstater
   r
   r   Úuse_c_pointerU   s   r&   c                 C   s   |dkr| |ƒS ||ƒS )Nr   r
   )ÚfaÚfbr	   r
   r
   r   Úuse_func_pointer_   s   r)   ÚwhatiùÌ c                 C   s   t | d  d¡ S )Nr   Úascii)ÚmydctÚdecode)Úarrr
   r
   r   Úcall_me_maybeh   s   r/   c                 C   s   | S r   r
   )Úptrr
   r
   r   Útake_array_ptro   s   r1   )6r   ÚsysÚnumpyr   ÚplatformÚ
startswithÚ
is_windowsÚnumbar   ÚCDLLÚ__file__ÚlibnumbaÚ_numba_test_sinr   Úc_doubleÚargtypesÚrestyper   Ú_numba_test_cosr   r   Ú_numba_test_vsquarer   Úc_intÚc_void_pr   ÚPOINTERr   r   Ú_numba_test_expr   r   Ú	CFUNCTYPEr   r   Ú	pythonapiÚPyEval_SaveThreadr#   ÚPyEval_RestoreThreadr$   ÚwindllÚkernel32ÚSleepr    Úc_uintr!   r&   r)   r,   r/   Ú	py_objectÚpy_call_backr1   Úc_take_array_ptrr
   r
   r
   r   Ú<module>   sV    

