+
    iQ                     l   R t ^ RIHtHtHtHtHtHtHtH	t	H
t
 ^ RIHt ^ RIHt ^ RIHt ]! R4      t]! R4      t]! R4      t]! R4      tR	 tR
 t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      tR# )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                h    \        R\        V \        4      '       d   \        V 4      .4      # T .4      # )z8Generate of FunctionCall instance for calling 'alignof' alignofr	   
isinstancestrr   args   &t/Users/tonyclaw/.openclaw/workspace/skills/math-calculator/venv/lib/python3.14/site-packages/sympy/codegen/cnodes.pyr   r      s-    	:c33G3GF3K#QRRS#QRR    c                h    \        R\        V \        4      '       d   \        V 4      .4      # T .4      # )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                   *   a  ] tR t^(t o RtR tRtV tR# )CommaOperatorz#Represents the comma operator in C c           	     n    \         P                  ! V .V Uu. uF  p\        V4      NK  	  upO5!  # u upi 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____classdictcell____classdict__s   @r   r   r   (   s     .C Cr   r   c                   H   a  ] tR t^.t o RtR;ttR]/t]	t
]R 4       tRtV tR# )Labela  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);

bodyc                D    \        V\        4      '       d   V# \        V!  # r    )r   r
   )r#   itrs   &&r   _construct_bodyLabel._construct_bodyA   s    c9%%Jc?"r   r&   N)namer2   )r'   r(   r)   r*   r+   	__slots___fieldsr   defaultsr   _construct_nameclassmethodr5   r,   r-   r.   s   @r   r1   r1   .   s6      +*I~HO# #r   r1   c                   &    ] tR t^ItRtR;tt]tRt	R# )gotozRepresents goto in C r&   N)label)
r'   r(   r)   r*   r+   r8   r9   r1   _construct_labelr,   r&   r   r   r>   r>   I   s     $$Ir   r>   c                       ] tR t^OtRt^tRtR# )PreDecrementzRepresents 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   rB   rB   O        Er   rB   c                       ] tR t^_tRt^tRtR# )PostDecrementzRepresents the post-decrement operator

Examples
========

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

r&   NrC   r&   r   r   rG   rG   _   rE   r   rG   c                       ] tR t^otRt^tRtR# )PreIncrementzRepresents the pre-increment operator

Examples
========

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

r&   NrC   r&   r   r   rI   rI   o   rE   r   rI   c                       ] tR t^tRt^tRtR# )PostIncrementzRepresents the post-increment operator

Examples
========

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

r&   NrC   r&   r   r   rK   rK      rE   r   rK   c                   H   a  ] tR t^t o RtR;ttR]/t]	t
]R 4       tRtV tR# )structzRepresents a struct in C r7   c                P    \        V Uu. uF  p\        V4      NK  	  up!  # u upi r    )r   r   r"   s   && r   _construct_declarationsstruct._construct_declarations   s$    484C{3'48998s   #r&   N)r7   declarations)r'   r(   r)   r*   r+   r8   r9   r   r:   r   r;   r<   rO   r,   r-   r.   s   @r   rM   rM      s2     $22I~HO: :r   rM   c                       ] tR t^tRtRtRtR# )unionzRepresents a union in C r&   N)r'   r(   r)   r*   r+   r8   r,   r&   r   r   rS   rS      s
    #Ir   rS   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   r1   r>   rB   rG   rI   rK   rM   rS   r&   r   r   <module>rX      s      # ' &F|Z Z 	8	S
RCE C#D #65 5  E  5  E  :T :F r   