Ë
    7^(hQ  ã                   ój  — d Z ddlmZmZmZmZmZmZmZm	Z	m
Z
 ddlmZ ddlmZ ddlmZ  ed«      Z ed«      Z ed«      Z ed	«      Zd
„ Zd„ Z G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Zy)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                 ó\   — t        dt        | t        «      rt        | «      g«      S | g«      S )z9 Generate of FunctionCall instance for calling 'alignof' Úalignof©r
   Ú
isinstanceÚstrr   ©Úargs    úR/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sympy/codegen/cnodes.pyr   r      s*   € ä˜	´:¸cÄ3Ô3G¤F¨3£KÐ#QÓRÐRÈSÐ#QÓRÐRó    c                 ó\   — t        dt        | t        «      rt        | «      g«      S | g«      S )a   Generate 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Ä#Ô2F¤6¨#£;Ð"PÓQÐQÈCÐ"PÓQÐQr   c                   ó   — e Zd ZdZd„ Zy)ÚCommaOperatorz$ Represents the comma operator in C c           	      óf   — t        j                  | g|D �cg c]  }t        |«      ‘Œ c}¢­Ž S c c}w ©N)r   Ú__new__r   ©ÚclsÚargsr   s      r   r"   zCommaOperator.__new__*   s(   € Ü�}‰}˜SÐB¸DÖ#A°S¤G¨C¥LÒ#AÒBÐBùÒ#As   –.
N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r"   © r   r   r   r   (   s   „ Ù.óCr   r   c                   ó4   — e Zd ZdZdxZZdeiZeZ	e
d„ «       Zy)Ú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);

    )ÚnameÚbodyr.   c                 ó6   — t        |t        «      r|S t        |Ž S r!   )r   r   )r$   Úitrs     r   Ú_construct_bodyzLabel._construct_bodyA   s   € ä�cœ9Ô%ØˆJä˜c�?Ð"r   N)r&   r'   r(   r)   Ú	__slots__Ú_fieldsr	   Údefaultsr   Ú_construct_nameÚclassmethodr1   r*   r   r   r,   r,   .   s3   „ ñð +Ð*€I�Ø˜ˆ~€HØ€Oàñ#ó ñ#r   r,   c                   ó   — e Zd ZdZdxZZeZy)Úgotoz Represents goto in C )ÚlabelN)r&   r'   r(   r)   r2   r3   r,   Ú_construct_labelr*   r   r   r8   r8   I   s   „ Ù Ø$Ð$€I�ØÑr   r8   c                   ó   — e Zd ZdZdZy)ÚPreDecrementzé Represents the pre-decrement operator

    Examples
    ========

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

    é   N©r&   r'   r(   r)   Únargsr*   r   r   r<   r<   O   ó   „ ñð �Er   r<   c                   ó   — e Zd ZdZdZy)ÚPostDecrementzì Represents 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=   Nr>   r*   r   r   rB   rB   _   r@   r   rB   c                   ó   — e Zd ZdZdZy)ÚPreIncrementzé Represents 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=   Nr>   r*   r   r   rD   rD   o   r@   r   rD   c                   ó   — e Zd ZdZdZy)ÚPostIncrementzì Represents 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=   Nr>   r*   r   r   rF   rF      r@   r   rF   c                   ó4   — e Zd ZdZdxZZdeiZeZ	e
d„ «       Zy)Ústructz Represents a struct in C )r-   Údeclarationsr-   c                 óJ   — t        |D �cg c]  }t        |«      ‘Œ c}Ž S c c}w r!   )r   r   r#   s      r   Ú_construct_declarationszstruct._construct_declarations•   s    € ä°4Ö8¨C”{ 3Õ'Ò8Ð9Ð9ùÒ8s   Š N)r&   r'   r(   r)   r2   r3   r	   r4   r   r5   r6   rK   r*   r   r   rH   rH   �   s/   „ Ù$Ø2Ð2€I�Ø˜ˆ~€HØ€Oàñ:ó ñ:r   rH   c                   ó   — e Zd ZdZdZy)Úunionz Represents a union in C r*   N)r&   r'   r(   r)   r2   r*   r   r   rM   rM   š   s
   „ Ù#Ø�Ir   rM   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   r,   r8   r<   rB   rD   rF   rH   rM   r*   r   r   ú<module>rR      sÅ   ðñ÷÷ õ õ #Ý 'Ý &áˆFƒ|€á�ZÓ €Ù�ZÓ €Ù	�8Ó	€òSò
RôC�Eô Cô#ˆDô #ô6ˆ5ô ô�5ô ô �Eô ô �5ô ô �Eô ô :ˆTô :ôˆFõ r   