§
    OŠtjQ  ã                   óº  — 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dS )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                 ól   — t          dt          | t          ¦  «        rt          | ¦  «        n| g¦  «        S )z9 Generate of FunctionCall instance for calling 'alignof' Úalignof©r
   Ú
isinstanceÚstrr   ©Úargs    úR/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/codegen/cnodes.pyr   r      s.   € å˜	µ:¸cÅ3Ñ3GÔ3GÐ$P¥F¨3¡K¤K KÈSÐ#QÑRÔRÐRó    c                 ól   — t          dt          | t          ¦  «        rt          | ¦  «        n| 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      s0   € õ ˜µ*¸SÅ#Ñ2FÔ2FÐ#O¥6¨#¡;¤; ;ÈCÐ"PÑQÔQÐQr   c                   ó   — e Zd ZdZd„ ZdS )ÚCommaOperatorz$ Represents the comma operator in C c                 ó:   — t          j        | gd„ |D ¦   «         ¢R Ž S )Nc                 ó,   — g | ]}t          |¦  «        ‘ŒS © r   ©Ú.0r   s     r   ú
<listcomp>z)CommaOperator.__new__.<locals>.<listcomp>+   s   € Ð#AÐ#AÐ#A°S¥G¨C¡L¤LÐ#AÐ#AÐ#Ar   )r   Ú__new__©ÚclsÚargss     r   r(   zCommaOperator.__new__*   s)   € ÝŒ}˜SÐBÐ#AÐ#A¸DÐ#AÑ#AÔ#AÐBÐBÐBÐBr   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r(   r$   r   r   r!   r!   (   s.   € € € € € Ø.Ð.ðCð Cð Cð Cð Cr   r!   c                   ó<   — e Zd ZdZdxZZdeiZeZ	e
d„ ¦   «         ZdS )Ú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Úbodyr3   c                 óB   — t          |t          ¦  «        r|S t          |Ž S )N)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Úclassmethodr6   r$   r   r   r1   r1   .   sQ   € € € € € ðð ð +Ð*€I�Ø˜ˆ~€HØ€Oàð#ð #ñ „[ð#ð #ð #r   r1   c                   ó   — e Zd ZdZdxZZeZdS )Úgotoz Represents goto in C )ÚlabelN)r,   r-   r.   r/   r7   r8   r1   Ú_construct_labelr$   r   r   r=   r=   I   s&   € € € € € Ø Ð Ø$Ð$€I�ØÐÐÐr   r=   c                   ó   — e Zd ZdZdZdS )Ú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   rA   rA   O   ó   € € € € € ðð ð €E€E€Er   rA   c                   ó   — e Zd ZdZdZdS )Ú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)--'

    rB   NrC   r$   r   r   rG   rG   _   rE   r   rG   c                   ó   — e Zd ZdZdZdS )Ú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)'

    rB   NrC   r$   r   r   rI   rI   o   rE   r   rI   c                   ó   — e Zd ZdZdZdS )Ú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)++'

    rB   NrC   r$   r   r   rK   rK      rE   r   rK   c                   ó<   — e Zd ZdZdxZZdeiZeZ	e
d„ ¦   «         ZdS )Ústructz Represents a struct in C )r2   Údeclarationsr2   c                 ó(   — t          d„ |D ¦   «         Ž S )Nc                 ó,   — g | ]}t          |¦  «        ‘ŒS r$   )r   r%   s     r   r'   z2struct._construct_declarations.<locals>.<listcomp>—   s    € Ð8Ð8Ð8¨C•{ 3Ñ'Ô'Ð8Ð8Ð8r   r   r)   s     r   Ú_construct_declarationszstruct._construct_declarations•   s   € åÐ8Ð8°4Ð8Ñ8Ô8Ð9Ð9r   N)r,   r-   r.   r/   r7   r8   r	   r9   r   r:   r;   rQ   r$   r   r   rM   rM   �   sK   € € € € € Ø$Ð$Ø2Ð2€I�Ø˜ˆ~€HØ€Oàð:ð :ñ „[ð:ð :ð :r   rM   c                   ó   — e Zd ZdZdZdS )Úunionz Represents a union in C r$   N)r,   r-   r.   r/   r7   r$   r   r   rS   rS   š   s   € € € € € Ø#Ð#Ø€I€I€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=   rA   rG   rI   rK   rM   rS   r$   r   r   ú<module>rX      sŸ  ððð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð #Ð "Ð "Ð "Ð "Ð "Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø &Ð &Ð &Ð &Ð &Ð &à€tˆF�|„|€àˆ9�ZÑ Ô €Øˆ9�ZÑ Ô €Ø	ˆ�8Ñ	Ô	€ðSð Sð Sð
Rð Rð RðCð Cð Cð Cð C�Eñ Cô Cð Cð#ð #ð #ð #ð #ˆDñ #ô #ð #ð6ð ð ð ð ˆ5ñ ô ð ðð ð ð ð �5ñ ô ð ð ð ð ð ð �Eñ ô ð ð ð ð ð ð �5ñ ô ð ð ð ð ð ð �Eñ ô ð ð :ð :ð :ð :ð :ˆTñ :ô :ð :ðð ð ð ð ˆFñ ô ð ð ð r   