
    g                         d dl mZ d dlmZ d dlmZmZmZmZm	Z	m
Z
 d dlmZmZmZmZmZmZmZmZmZmZmZ  ed      \  ZZd Zd Zd Zd	 Zd
 Zd Zd Zd Z d Z!d Z"y)    )symbols)ccode)DeclarationVariablefloat64int64String	CodeBlock)alignofCommaOperatorgotoLabelPreDecrementPostDecrementPreIncrementPostIncrementsizeofunionstructzx yc                  ~    t        t              } t        |       dk(  sJ  | j                  | j                   | k(  sJ y )Nz
alignof(x))r   xr   funcargs)axs    T/var/www/openai/venv/lib/python3.12/site-packages/sympy/codegen/tests/test_cnodes.pytest_alignofr      s:    	B9$$$277BGG"""    c                      t        t        t              dt        z        } t        |       dk(  sJ  | j                  | j
                   | k(  sJ y )N   z(++(x), 2*x))r   r   r   r   r   r   )exprs    r   test_CommaOperatorr!      sE    a!A#.D;.(((499dii D(((r   c                     d} t        |       } |j                  |j                   |k(  sJ |t        d      k7  sJ t        |      dk(  sJ t	        |       }t        |      dk(  sJ |t	        d      k(  sJ |t	        d      k7  sJ t        t              g}t	        | |      }|j                  t        d      k(  sJ |j                  t        t        t                    k(  sJ t        |      dk(  sJ t        t              t        t              g}t	        | |      }|j                  t        d      k(  sJ |j                  t        t        t              t        t                    k(  sJ t        |      dk(  sJ y )N
early_exitfoobarzgoto early_exitzearly_exit:zearly_exit:
++(x);z#early_exit:
{
   ++(x);
   --(y);
})r   r   r   r   r   r   r   namer	   bodyr
   r   y)sgl1r&   l2s        r   test_goto_Labelr,      sg   AQA166166?aX8((((	qB9%%%|$$$$x   OD	q$B77f\****77iQ00009     O\!_-D	q$B77f\****77iQaAAAA9 % & & &r   c                  ~    t        t              }  | j                  | j                   | k(  sJ t	        |       dk(  sJ y )Nz--(x))r   r   r   r   r   ps    r   test_PreDecrementr0   3   9    QA166166?a8wr   c                  ~    t        t              }  | j                  | j                   | k(  sJ t	        |       dk(  sJ y )Nz(x)--)r   r   r   r   r   r.   s    r   test_PostDecrementr3   9   :    aA166166?a8wr   c                  ~    t        t              }  | j                  | j                   | k(  sJ t	        |       dk(  sJ y )Nz++(x))r   r   r   r   r   r.   s    r   test_PreIncrementr6   ?   r1   r   c                  ~    t        t              }  | j                  | j                   | k(  sJ t	        |       dk(  sJ y )Nz(x)++)r   r   r   r   r   r.   s    r   test_PostIncrementr8   E   r4   r   c                      d} t        |       }t        |      d| z  k(  sJ  |j                  |j                   |k(  sJ |j                  rJ |j                         t        d      t        d      hk(  sJ y )Nzunsigned intz
sizeof(%s)r   )r   r   r   r   is_Atomatomsr	   )typenameszs     r   test_sizeofr>   K   st    H		B9x////277BGG"""zz>88:&0&2BCCCCr   c                     t        t        t              t        t        t              }} t	        d| |g      } |j
                  |j                   |k(  sJ |t	        d| |f      k(  sJ |t	        d|| f      k7  sJ t        |j                        dk(  sJ t        |j                        dk(  sJ t        d |j                  D              sJ t        |      dk(  sJ y )Ntypevec2r   c              3   <   K   | ]  }t        |t                y wN
isinstancer   .0args     r   	<genexpr>ztest_struct.<locals>.<genexpr>\        F~z#{+~   z)struct vec2 {
   double x;
   double y;
})r   r   r   r'   r   r   r   strr%   lendeclarationsallr   )vxvyr(   s      r   test_structrS   T   s    ag&(ABvBx A166166?avBx((((vBx((((qvv;&   q~~!###Fq~~FFFF8	  r   c                     t        t        t              t        t        t              }} t        d| |g      } |j                  |j                   |k(  sJ |t        d| |f      k(  sJ t        |j                        dk(  sJ t        |j                        dk(  sJ t        d |j                  D              sJ t        |      dk(  sJ y )Nr@   dualuser   c              3   <   K   | ]  }t        |t                y wrD   rE   rG   s     r   rJ   ztest_union.<locals>.<genexpr>k   rK   rL   z,union dualuse {
   double x;
   int64_t y;
})r   r   r   r'   r   r   r   r   rM   r%   rN   rO   rP   r   )rQ   rR   us      r   
test_unionrX   d   s    ag&(?Bi"b"A166166?ai"b****qvv;)###q~~!###Fq~~FFFF8	  r   N)#sympy.core.symbolr   sympy.printing.codeprinterr   sympy.codegen.astr   r   r   r   r	   r
   sympy.codegen.cnodesr   r   r   r   r   r   r   r   r   r   r   r   r'   r   r!   r,   r0   r3   r6   r8   r>   rS   rX    r   r   <module>r^      sg    % , V V   
 u~1#)&6D r   