
    \hQ                     j   S r SSKJrJrJrJrJrJrJrJ	r	J
r
  SSKJr  SSKJr  SSKJr  \" S5      r\" S5      r\" S5      r\" S	5      rS
 rS r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      rg)z1
AST nodes specific to the C family of languages
    )		AttributeDeclarationNodeStringTokenTypenoneFunctionCall	CodeBlock)Basic)Tuple)sympifyvoidrestrictvolatilestaticc                 f    [        S[        U [        5      (       a  [        U 5      /5      $ U /5      $ )z8Generate of FunctionCall instance for calling 'alignof' alignofr
   
isinstancestrr   args    L/var/www/auris/envauris/lib/python3.13/site-packages/sympy/codegen/cnodes.pyr   r      s-    	:c33G3GF3K#QRRS#QRR    c                 f    [        S[        U [        5      (       a  [        U 5      /5      $ U /5      $ )zGenerate of FunctionCall instance for calling 'sizeof'

Examples
========

>>> from sympy.codegen.ast import real
>>> from sympy.codegen.cnodes import sizeof
>>> from sympy import ccode
>>> ccode(sizeof(real))
'sizeof(double)'
sizeofr   r   s    r   r   r      s/     *S#2F2F6#;"PQQC"PQQr   c                       \ rS rSrSrS rSrg)CommaOperator(   z#Represents the comma operator in C c           	      n    [         R                  " U /U Vs/ s H  n[        U5      PM     snQ76 $ s  snf N)r   __new__r   clsargsr   s      r   r#   CommaOperator.__new__*   s,    }}SBD#ADSGCLD#ABB#As   2
 N)__name__
__module____qualname____firstlineno____doc__r#   __static_attributes__r(   r   r   r   r   (   s    .Cr   r   c                   <    \ rS rSrSrS=rrS\0r\	r
\S 5       rSrg)Label.   a  Label for use with e.g. goto statement.

Examples
========

>>> from sympy import ccode, Symbol
>>> from sympy.codegen.cnodes import Label, PreIncrement
>>> print(ccode(Label('foo')))
foo:
>>> print(ccode(Label('bar', [PreIncrement(Symbol('a'))])))
bar:
++(a);

)namebodyr3   c                 @    [        U[        5      (       a  U$ [        U6 $ r"   )r   r   )r%   itrs     r   _construct_bodyLabel._construct_bodyA   s    c9%%Jc?"r   r(   N)r)   r*   r+   r,   r-   	__slots___fieldsr	   defaultsr   _construct_nameclassmethodr6   r.   r(   r   r   r0   r0   .   s3     +*I~HO# #r   r0   c                   $    \ rS rSrSrS=rr\rSr	g)gotoI   zRepresents goto in C )labelr(   N)
r)   r*   r+   r,   r-   r8   r9   r0   _construct_labelr.   r(   r   r   r>   r>   I   s     $$Ir   r>   c                       \ rS rSrSrSrSrg)PreDecrementO   zRepresents the pre-decrement operator

Examples
========

>>> from sympy.abc import x
>>> from sympy.codegen.cnodes import PreDecrement
>>> from sympy import ccode
>>> ccode(PreDecrement(x))
'--(x)'

   r(   Nr)   r*   r+   r,   r-   nargsr.   r(   r   r   rC   rC   O        Er   rC   c                       \ rS rSrSrSrSrg)PostDecrement_   zRepresents the post-decrement operator

Examples
========

>>> from sympy.abc import x
>>> from sympy.codegen.cnodes import PostDecrement
>>> from sympy import ccode
>>> ccode(PostDecrement(x))
'(x)--'

rE   r(   NrF   r(   r   r   rJ   rJ   _   rH   r   rJ   c                       \ rS rSrSrSrSrg)PreIncremento   zRepresents the pre-increment operator

Examples
========

>>> from sympy.abc import x
>>> from sympy.codegen.cnodes import PreIncrement
>>> from sympy import ccode
>>> ccode(PreIncrement(x))
'++(x)'

rE   r(   NrF   r(   r   r   rM   rM   o   rH   r   rM   c                       \ rS rSrSrSrSrg)PostIncrement   zRepresents the post-increment operator

Examples
========

>>> from sympy.abc import x
>>> from sympy.codegen.cnodes import PostIncrement
>>> from sympy import ccode
>>> ccode(PostIncrement(x))
'(x)++'

rE   r(   NrF   r(   r   r   rP   rP      rH   r   rP   c                   <    \ rS rSrSrS=rrS\0r\	r
\S 5       rSrg)struct   zRepresents a struct in C )r2   declarationsr2   c                 P    [        U Vs/ s H  n[        U5      PM     sn6 $ s  snf r"   )r   r   r$   s      r   _construct_declarationsstruct._construct_declarations   s$    484C{3'48998s   #r(   N)r)   r*   r+   r,   r-   r8   r9   r	   r:   r   r;   r<   rW   r.   r(   r   r   rS   rS      s/    $22I~HO: :r   rS   c                       \ rS rSrSrSrSrg)union   zRepresents a union in C r(   N)r)   r*   r+   r,   r-   r8   r.   r(   r   r   rZ   rZ      s
    #Ir   rZ   N) r-   sympy.codegen.astr   r   r   r   r   r   r	   r
   r   sympy.core.basicr   sympy.core.containersr   sympy.core.sympifyr   r   r   r   r   r   r   r   r0   r>   rC   rJ   rM   rP   rS   rZ   r(   r   r   <module>r`      s      # ' &F|Z Z 	8	S
RCE C#D #65 5  E  5  E  :T :F r   