+
    :i?                         ^ RI t ^ RIt^ RIHu Hu Ht ^ RIH	t	H
t
 ^ RIHt R tR tR tR tR;ssR tR	 tR
 tR tR tR tR tR tR tR tR tR# )    N)import_dynamictemp_directory)
complex128c                     ^ RI Hp  RpV ! 4       pVP                  V4       ^ RIHp W"P                  VP                  4      3# )zH
Create an inline module, return the corresponding ffi and dll objects.
FFIz
    double _numba_test_sin(double x);
    double _numba_test_cos(double x);
    double _numba_test_funcptr(double (*func)(double));
    bool _numba_test_boolean(void);
    )
_helperlib)cffir   cdefnumbar	   dlopen__file__)r   defsffir	   s       W/var/www/html/photoedit/myenv/lib/python3.14/site-packages/numba/tests/cffi_usecases.pyload_inline_moduler   
   s=     
D %CHHTN 

:..///    c                 d   ^ RI Hp  RpRpVR,           pW,           R,           pV ! 4       pVP                  RV4       VP                  VRR7       \	        R	4      pVP                  VR
7       \        P                  P                  V4        \        R4      p\        P                  ! V4       \        P                  ! VP                  P                  R4      \        4       VP                  V3\        P                  P!                  V4       #   \        P                  P!                  T4       i ; i)zQ
Compile an out-of-line module, return the corresponding ffi and
module objects.
r   zh
    typedef struct _numba_complex {
        double real;
        double imag;
    } numba_complex;
    z
    #ifdef _MSC_VER
        #define false 0
        #define true 1
        #define bool int
    #else
        #include <stdbool.h>
    #endif
    aE  
    bool boolean(void);
    double sin(double x);
    double cos(double x);
    int foo(int a, int b, int c);
    void vsSin(int n, float* x, float* y);
    void vdSin(int n, double* x, double* y);
    void vector_real(numba_complex *c, double *real, int n);
    void vector_imag(numba_complex *c, double *imag, int n);
    a  
    static bool boolean(void)
    {
        return true;
    }

    static int foo(int a, int b, int c)
    {
        return a + b * c;
    }

    void vsSin(int n, float* x, float* y) {
        int i;
        for (i=0; i<n; i++)
            y[i] = sin(x[i]);
    }

    void vdSin(int n, double* x, double* y) {
        int i;
        for (i=0; i<n; i++)
            y[i] = sin(x[i]);
    }

    static void vector_real(numba_complex *c, double *real, int n) {
        int i;
        for (i = 0; i < n; i++)
            real[i] = c[i].real;
    }

    static void vector_imag(numba_complex *c, double *imag, int n) {
        int i;
        for (i = 0; i < n; i++)
            imag[i] = c[i].imag;
    }
    cffi_usecases_oolT)override	test_cffi)tmpdirzstruct _numba_complex)r
   r   
set_sourcer   r   compilesyspathappendr   cffi_supportregister_moduleregister_typer   typeofr   remove)r   numba_complexbool_definer   sourcer   r   mods           r   load_ool_moduler'   !   s    
 MK  	 	D ( ", "FH %CNN&/HHTDH!K(FKKvKHHOOF 01$$S)""377>>2I#J#-	/ww|s   A"D !D/c                 ~    \         f5   \        4       w  s p V P                  sV P                  sV P                  s? R# R# )zw
Initialize module globals.  This can invoke external utilities, hence not
being executed implicitly at module import.
N)r   r   _numba_test_sincffi_sin_numba_test_coscffi_cos_numba_test_boolean	cffi_bool)dlls    r   initr0   x   s>     {%'S&&&&++	 r   c                    \         f   \        4       w  s p V P                  P                  sV P                  P
                  sV P                  P                  sV P                  P                  s
V P                  P                  sV P                  P                  sV P                  P                  sV P                  P                  s? R# R# )z
Same as init() for OOL mode.
N)ffi_oolr'   libsincffi_sin_oolcoscffi_cos_oolfoocffi_foobooleancffi_bool_oolvsSinvdSinvector_realvector_imag)r&   s    r   init_oolr@      s     &(ww{{ww{{77;;gg))gg)) r   c                 &    \        V 4      ^,          #    )r*   xs   &r   use_cffi_sinrF      s    A;?r   c                 8    \        V 4      \        V 4      ,
          # N)r*   r,   rD   s   &r   use_two_funcsrI      s    A;!$$r   c                 &    \        V 4      ^,          # rB   )r5   rD   s   &r   use_cffi_sin_oolrK      s    ?Qr   c                      \        4       # rH   )r;    r   r   use_cffi_boolean_truerN      s
    ?r   c                 8    \        V 4      \        V 4      ,
          # rH   )r5   r7   rD   s   &r   use_two_funcs_oolrP      s    ?\!_,,r   c                 0    V^ 8  d	   V ! V4      # V! V4      # )r   rM   )fafbrE   s   &&&r   use_func_pointerrT      s    1u!u!ur   c                      \        ^^^4      # )   )r9   rM   r   r   use_user_defined_symbolsrW      s    Aq!r   c                 ~    \        \        V 4      \        P                  V 4      \        P                  V4      4       R # rH   )r<   lenr   from_bufferr2   rE   ys   &&r   vector_sin_float32r]      &    	#a&#//!$g&9&9!&<=r   c                 ~    \        \        V 4      \        P                  V 4      \        P                  V4      4       R # rH   )r=   rY   r   rZ   r2   r[   s   &&r   vector_sin_float64r`      r^   r   c                 ~    \        \        P                  V 4      \        P                  V4      \        V 4      4       R # rH   )r>   r   rZ   rY   r[   s   &&r   vector_extract_realrb      $    "COOA$6A?r   c                 ~    \        \        P                  V 4      \        P                  V4      \        V 4      4       R # rH   )r?   r   rZ   rY   r[   s   &&r   vector_extract_imagre      rc   r   )r   numpynpnumba.core.typing.cffi_utilscoretyping
cffi_utilsr   numba.tests.supportr   r   numba.core.typesr   r   r'   r0   r@   r   r2   rF   rI   rK   rN   rP   rT   rW   r]   r`   rb   re   rM   r   r   <module>rn      sr    
  3 3 > '0.T n&  g%->>@@r   