§
    ¢”jµP  ã                   ó@   — d dl mZmZmZ ddlmZ  G d„ d¦  «        ZdS )é    )ÚCallableÚListÚOptionalé   )Úc_astc            	       óh  — e Zd ZU dZeed<   eed<   dkdeddfd„Zdefd„Z	d	e
j        defd
„Zd	ee
j                 defd„Zde
j        defd„Zde
j        defd„Zde
j        defd„Zde
j        defd„Zde
j        defd„Zde
j        defd„Zde
j        defd„Zi dd“dd“dd“dd“dd“dd“d d“d!d"“d#d"“d$d"“d%d"“d&d'“d(d'“d)d*“d+d*“d,d-“d.d-“d/d-i¥Zde
j        defd0„Zde
j         defd1„Z!de
j"        defd2„Z#de
j        defd3„Z$dkde
j%        d4edefd5„Z&de
j'        defd6„Z(de
j)        defd7„Z*de
j+        defd8„Z,de
j-        defd9„Z.de
j/        defd:„Z0de
j1        defd;„Z2de
j3        defd<„Z4de
j5        defd=„Z6de
j7        defd>„Z8de
j9        defd?„Z:de
j;        defd@„Z<de
j=        defdA„Z>de
j?        defdB„Z@de
jA        defdC„ZBde
jC        defdD„ZDde
jE        defdE„ZFde
jG        defdF„ZHde
jI        defdG„ZJde
jK        defdH„ZLde
jM        defdI„ZNde
jO        defdJ„ZPde
jQ        defdK„ZRde
jS        defdL„ZTde
jU        defdM„ZVde
jW        defdN„ZXde
jY        defdO„ZZde
j[        defdP„Z\de
j]        defdQ„Z^de
j_        defdR„Z`de
ja        defdS„Zbde
jc        defdT„Zdde
je        defdU„Zfde
jg        defdV„Zhde
ji        defdW„Zjde
jk        defdX„Zlde
jm        defdY„Znde
jo        defdZ„Zpde
ja        e
je        z  e
j1        z  d[edefd\„Zqd]ere
j                 defd^„Zsd]ere
j5                 defd_„Ztdkde
j        d`edefda„Zude
j%        defdb„Zvg dcfde
j        ddere
j                 deedefdf„Zwde
j        dgexe
j        gef         defdh„Zyde
j        defdi„Zzde
j        defdj„Z{dS )lÚ
CGeneratorz£Uses the same visitor pattern as c_ast.NodeVisitor, but modified to
    return a value from each visit method, using string accumulation in
    generic_visit.
    Úindent_levelÚreduce_parenthesesFÚreturnNc                 ó"   — d| _         || _        dS )zŠConstructs C-code generator

        reduce_parentheses:
            if True, eliminates needless parentheses on binary operators
        r   N)r
   r   )Úselfr   s     úd/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/pycparser/c_generator.pyÚ__init__zCGenerator.__init__   s   € ð ˆÔØ"4ˆÔÐÐó    c                 ó   — d| j         z  S ©Nú )r
   )r   s    r   Ú_make_indentzCGenerator._make_indent"   s   € Ø�TÔ&Ñ&Ð&r   Únodec                 ó^   — d|j         j        z   } t          | || j        ¦  «        |¦  «        S )NÚvisit_)Ú	__class__Ú__name__ÚgetattrÚgeneric_visit)r   r   Úmethods      r   ÚvisitzCGenerator.visit%   s0   € Ø˜DœNÔ3Ñ3ˆØ8�w�t˜V TÔ%7Ñ8Ô8¸Ñ>Ô>Ð>r   c                 ór   ‡ — |€dS d                      ˆ fd„|                     ¦   «         D ¦   «         ¦  «        S )NÚ c              3   óH   •K  — | ]\  }}‰                      |¦  «        V — Œd S ©N©r   )Ú.0Úc_nameÚcr   s      €r   ú	<genexpr>z+CGenerator.generic_visit.<locals>.<genexpr>-   s1   øè è € ÐJÐJ©Y¨V°Q˜4Ÿ:š: a™=œ=ÐJÐJÐJÐJÐJÐJr   )ÚjoinÚchildren)r   r   s   ` r   r   zCGenerator.generic_visit)   s<   ø€ Øˆ<Ø�2à—7’7ÐJÐJÐJÐJ¸$¿-º-¹/¼/ÐJÑJÔJÑJÔJÐJr   Únc                 ó   — |j         S r"   )Úvalue©r   r*   s     r   Úvisit_ConstantzCGenerator.visit_Constant/   s	   € ØŒwˆr   c                 ó   — |j         S r"   ©Únamer-   s     r   Úvisit_IDzCGenerator.visit_ID2   s	   € ØŒvˆr   c                 ó2   — d}|j         r|d|j         z   z  }|S )Nz#pragmar   )Ústring)r   r*   Úrets      r   Úvisit_PragmazCGenerator.visit_Pragma5   s&   € ØˆØŒ8ð 	"Ø�3˜œ‘>Ñ!ˆCØˆ
r   c                 ó|   — |                       |j        ¦  «        }|dz   |                      |j        ¦  «        z   dz   S )Nú[ú])Ú_parenthesize_unless_simpler1   r   Ú	subscript)r   r*   Úarrrefs      r   Úvisit_ArrayRefzCGenerator.visit_ArrayRef;   s9   € Ø×1Ò1°!´&Ñ9Ô9ˆØ˜‰|˜dŸjšj¨¬Ñ5Ô5Ñ5¸Ñ;Ð;r   c                 ó€   — |                       |j        ¦  «        }||j        z   |                      |j        ¦  «        z   S r"   )r:   r1   Útyper   Úfield)r   r*   Úsrefs      r   Úvisit_StructRefzCGenerator.visit_StructRef?   s6   € Ø×/Ò/°´Ñ7Ô7ˆØ�a”f‰}˜tŸzšz¨!¬'Ñ2Ô2Ñ2Ð2r   c                 ó’   — |                       |j        ¦  «        }|j        �|                      |j        ¦  «        nd}|dz   |z   dz   S )Nr    ú(ú))r:   r1   Úargsr   )r   r*   ÚfrefrF   s       r   Úvisit_FuncCallzCGenerator.visit_FuncCallC   sJ   € Ø×/Ò/°´Ñ7Ô7ˆØ%&¤VÐ%7ˆt�zŠz˜!œ&Ñ!Ô!Ð!¸RˆØ�c‰z˜DÑ  3Ñ&Ð&r   c                 ó8  — |j         xdk    r d|                      |j        ¦  «        › d�S xdk    r  |                      |j        ¦  «        }|› d�S dk    r|                      |j        ¦  «        }|› d�S 	 |                      |j        ¦  «        }|j         › |› �S )NÚsizeofzsizeof(rE   zp++z++zp--z--)Úopr   Úexprr:   )r   r*   Úoperands      r   Úvisit_UnaryOpzCGenerator.visit_UnaryOpH   s²   € ØŒdØ�’��ð 7 §¢¨A¬FÑ!3Ô!3Ð6Ð6Ð6Ð6Ø�’��Ø×:Ò:¸1¼6ÑBÔB�Ø!�~�~�~Ð%Ø’�Ø×:Ò:¸1¼6ÑBÔB�Ø!�~�~�~Ð%ØØ×:Ò:¸1¼6ÑBÔB�Øœ$Ð) Ð)Ð)Ð)r   z||r   z&&r   ú|é   ú^é   ú&é   z==é   z!=ú>é   z>=ú<z<=z>>é   z<<ú+é   ú-Ú*é	   ú/ú%c                 ó    ‡ ‡— ‰                       ‰j        ˆˆ fd„¦  «        }‰                       ‰j        ˆˆ fd„¦  «        }|› d‰j        › d|› �S )Nc                 ó¾   •— ‰                      | ¦  «        pF‰j        o?t          | t          j        ¦  «        o%‰j        | j                 ‰j        ‰j                 k     S r"   ©Ú_is_simple_noder   Ú
isinstancer   ÚBinaryOpÚprecedence_maprK   ©Údr*   r   s    €€r   ú<lambda>z+CGenerator.visit_BinaryOp.<locals>.<lambda>|   s^   ø€ Ø×$Ò$ QÑ'Ô'ð KØÔ*ð KÝ˜q¥%¤.Ñ1Ô1ðKàÔ'¨¬Ô-°Ô1DÀQÄTÔ1JÒJð	€ r   c                 ó¾   •— ‰                      | ¦  «        pF‰j        o?t          | t          j        ¦  «        o%‰j        | j                 ‰j        ‰j                 k     S r"   rc   rh   s    €€r   rj   z+CGenerator.visit_BinaryOp.<locals>.<lambda>Œ   s^   ø€ Ø×$Ò$ QÑ'Ô'ð JØÔ*ð JÝ˜q¥%¤.Ñ1Ô1ðJàÔ'¨¬Ô-°Ô0CÀAÄDÔ0IÒIð	€ r   r   )Ú_parenthesize_ifÚleftÚrightrK   )r   r*   Úlval_strÚrval_strs   ``  r   Úvisit_BinaryOpzCGenerator.visit_BinaryOpp   sŽ   øø€ ð ×(Ò(ØŒFðð ð ð ð ñ
ô 
ˆð  ×(Ò(ØŒGðð ð ð ð ñ
ô 
ˆð Ð.Ð.˜QœTÐ.Ð. HÐ.Ð.Ð.r   c                 óˆ   — |                       |j        d„ ¦  «        }|                      |j        ¦  «        › d|j        › d|› �S )Nc                 ó6   — t          | t          j        ¦  «        S r"   )re   r   Ú
Assignment)r*   s    r   rj   z-CGenerator.visit_Assignment.<locals>.<lambda>—   s   € ¥
¨1­eÔ.>Ñ ?Ô ?€ r   r   )rl   Úrvaluer   ÚlvaluerK   )r   r*   rp   s      r   Úvisit_AssignmentzCGenerator.visit_Assignment•   sP   € Ø×(Ò(ØŒHÐ?Ð?ñ
ô 
ˆð —*’*˜QœXÑ&Ô&Ð:Ð:¨¬Ð:Ð:°Ð:Ð:Ð:r   c                 ó6   — d                      |j        ¦  «        S r   )r(   Únamesr-   s     r   Úvisit_IdentifierTypezCGenerator.visit_IdentifierType›   s   € Ø�xŠx˜œÑ Ô Ð r   c                 ó  — |xt           j        d˜ x�\    d|                      |¦  «        z   dz   S  xt           j        d˜ x�\   n xt           j        d˜ x�\   n  n d|                      |¦  «        z   dz   S 	 |                      |¦  «        S )N© Ú{Ú}rD   rE   )r   ÚInitListr   ÚExprListÚCompoundr-   s     r   Ú_visit_exprzCGenerator._visit_exprž   s«   € ØØ!•”Ð!Ð!Ð!Ð!Ñ!Ð!Ø˜TŸZšZ¨™]œ]Ñ*¨SÑ0Ð0ð "à!•”Ð!Ð!Ð!Ð!Ñ!Ð!Ð!Ð$4¥E¤NÐ$4Ð$4Ð$4Ð$4Ñ$4Ð$4Ð$4Ð$4Ð$4Ð$4Ø˜TŸZšZ¨™]œ]Ñ*¨SÑ0Ð0ØØ—z’z !‘}”}Ð$r   Úno_typec                 óÞ   — |r|j         n|                      |¦  «        }|j        r |d|                      |j        ¦  «        z   z  }|j        r |d|                      |j        ¦  «        z   z  }|S )Nz : ú = )r1   Ú_generate_declÚbitsizer   Úinitr‚   )r   r*   rƒ   Úss       r   Ú
visit_DeclzCGenerator.visit_Decl§   sw   € ð Ð9ˆAŒFˆF 4×#6Ò#6°qÑ#9Ô#9ˆØŒ9ð 	/Ø�˜Ÿš A¤IÑ.Ô.Ñ.Ñ.ˆAØŒ6ð 	2Ø�˜×)Ò)¨!¬&Ñ1Ô1Ñ1Ñ1ˆAØˆr   c                 óà   ‡ — ‰                       |j        d         ¦  «        }t          |j        ¦  «        dk    r4|dd                     ˆ fd„|j        dd …         D ¦   «         ¦  «        z   z  }|S )Nr   r   ú, c              3   óF   •K  — | ]}‰                      |d ¬¦  «        V — ŒdS )T)rƒ   N)rŠ   ©r$   Údeclr   s     €r   r'   z,CGenerator.visit_DeclList.<locals>.<genexpr>µ   sD   øè è € ð "ð "Ø8<�—’ ¨d�Ñ3Ô3ð"ð "ð "ð "ð "ð "r   )r   ÚdeclsÚlenr(   ©r   r*   r‰   s   `  r   Úvisit_DeclListzCGenerator.visit_DeclList²   s…   ø€ Ø�JŠJ�q”w˜q”zÑ"Ô"ˆÝˆqŒw‰<Œ<˜!ÒÐØ�˜Ÿ	š	ð "ð "ð "ð "Ø@AÄÈÈÈÄð"ñ "ô "ñ ô ñ ñ ˆAð ˆr   c                 ó’   — d}|j         r |d                     |j         ¦  «        dz   z  }||                      |j        ¦  «        z  }|S )Nr    r   )Ústorager(   Ú_generate_typer?   r’   s      r   Úvisit_TypedefzCGenerator.visit_Typedefº   sM   € ØˆØŒ9ð 	+Ø�—’˜!œ)Ñ$Ô$ sÑ*Ñ*ˆAØ	ˆT× Ò  ¤Ñ(Ô(Ñ(ˆØˆr   c                 ó†   — d|                       |j        d¬¦  «        z   dz   }|dz   |                      |j        ¦  «        z   S )NrD   F©Úemit_declnamerE   r   )r–   Úto_typer:   rL   r’   s      r   Ú
visit_CastzCGenerator.visit_CastÁ   sE   € Ø�$×%Ò% a¤i¸uÐ%ÑEÔEÑEÈÑKˆØ�3‰w˜×9Ò9¸!¼&ÑAÔAÑAÐAr   c                 ó”   — g }|j         D ]*}|                     |                      |¦  «        ¦  «         Œ+d                     |¦  «        S ©NrŒ   ©ÚexprsÚappendr‚   r(   ©r   r*   Úvisited_subexprsrL   s       r   Úvisit_ExprListzCGenerator.visit_ExprListÅ   óQ   € ØÐØ”Gð 	<ð 	<ˆDØ×#Ò# D×$4Ò$4°TÑ$:Ô$:Ñ;Ô;Ð;Ð;Ø�yŠyÐ)Ñ*Ô*Ð*r   c                 ó”   — g }|j         D ]*}|                     |                      |¦  «        ¦  «         Œ+d                     |¦  «        S rž   rŸ   r¢   s       r   Úvisit_InitListzCGenerator.visit_InitListË   r¥   r   c                 ó0   — |                       |d¬¦  «        S )NÚenumr0   ©Ú_generate_struct_union_enumr-   s     r   Ú
visit_EnumzCGenerator.visit_EnumÑ   s   € Ø×/Ò/°¸Ð/Ñ?Ô?Ð?r   c                 ó\   — d                      |                      |j        ¦  «        ¦  «        S )Nz_Alignas({}))Úformatr   Ú	alignmentr-   s     r   Úvisit_AlignaszCGenerator.visit_AlignasÔ   s$   € Ø×$Ò$ T§Z¢Z°´Ñ%<Ô%<Ñ=Ô=Ð=r   c                 óú   — |j         s.d                     |                      ¦   «         |j        ¬¦  «        S d                     |                      ¦   «         |j        |                      |j         ¦  «        ¬¦  «        S )Nz{indent}{name},
)Úindentr1   z{indent}{name} = {value},
)r²   r1   r,   )r,   r®   r   r1   r   r-   s     r   Úvisit_EnumeratorzCGenerator.visit_Enumerator×   s�   € ØŒwð 
	Ø&×-Ò-Ø×(Ò(Ñ*Ô*Ø”Vð .ñ ô ð ð
 1×7Ò7Ø×(Ò(Ñ*Ô*Ø”VØ—j’j ¤Ñ)Ô)ð 8ñ ô ð r   c                 ó  ‡ — ‰                       |j        ¦  «        }d‰ _        ‰                       |j        ¦  «        }|j        r7d                     ˆ fd„|j        D ¦   «         ¦  «        }|dz   |z   dz   |z   dz   S |dz   |z   dz   S )Nr   ú;
c              3   óB   •K  — | ]}‰                      |¦  «        V — Œd S r"   r#   )r$   Úpr   s     €r   r'   z+CGenerator.visit_FuncDef.<locals>.<genexpr>é   s-   øè è € Ð!GÐ!G°A $§*¢*¨Q¡-¤-Ð!GÐ!GÐ!GÐ!GÐ!GÐ!Gr   ú
)r   r�   r
   ÚbodyÚparam_declsr(   )r   r*   r�   r¹   Úknrdeclss   `    r   Úvisit_FuncDefzCGenerator.visit_FuncDefä   s•   ø€ Ø�zŠz˜!œ&Ñ!Ô!ˆØˆÔØ�zŠz˜!œ&Ñ!Ô!ˆØŒ=ð 	-Ø—z’zÐ!GÐ!GÐ!GÐ!G¸¼Ð!GÑ!GÔ!GÑGÔGˆHØ˜$‘; Ñ)¨EÑ1°DÑ8¸4Ñ?Ð?à˜$‘; Ñ%¨Ñ,Ð,r   c                 ó  — d}|j         D ]z}|xt          j        d˜ x�\    ||                      |¦  «        z  }nK t          j        d˜ x�\   ||                      |¦  «        dz   z  }n 	 ||                      |¦  «        dz   z  }Œ{|S )Nr    r|   r¸   rµ   )Úextr   ÚFuncDefr   ÚPragma)r   r*   r‰   r¾   s       r   Úvisit_FileASTzCGenerator.visit_FileASTî   sš   € ØˆØ”5ð 	1ð 	1ˆCØØ$•U”]�_�_�_�_‘_�_Ø˜Ÿš C™œÑ(�A�Að %å”\�^�^�^�^‘^Ø˜Ÿš C™œ¨4Ñ/Ñ/�A�Að $àØ˜Ÿš C™œ¨5Ñ0Ñ0�AøØˆr   c                 ó
  ‡ — ‰                       ¦   «         dz   }‰ xj        dz  c_        |j        r)|d                     ˆ fd„|j        D ¦   «         ¦  «        z  }‰ xj        dz  c_        |‰                       ¦   «         dz   z  }|S )Nú{
rP   r    c              3   óB   •K  — | ]}‰                      |¦  «        V — Œd S r"   ©Ú_generate_stmt)r$   Ústmtr   s     €r   r'   z,CGenerator.visit_Compound.<locals>.<genexpr>þ   s1   øè è € ÐMÐM°t˜×,Ò,¨TÑ2Ô2ÐMÐMÐMÐMÐMÐMr   z}
)r   r
   Úblock_itemsr(   r’   s   `  r   Úvisit_CompoundzCGenerator.visit_Compoundú   s™   ø€ Ø×ÒÑÔ %Ñ'ˆØÐÔ˜QÑÐÔØŒ=ð 	NØ�—’ÐMÐMÐMÐM¸q¼}ÐMÑMÔMÑMÔMÑMˆAØÐÔ˜QÑÐÔØ	ˆT×ÒÑ Ô  5Ñ(Ñ(ˆØˆr   c                 ó~   — d|                       |j        ¦  «        z   dz   |                       |j        ¦  «        z   dz   S )NrD   z){r~   )r   r?   rˆ   r-   s     r   Úvisit_CompoundLiteralz CGenerator.visit_CompoundLiteral  s8   € Ø�T—Z’Z ¤Ñ'Ô'Ñ'¨$Ñ.°·²¸A¼FÑ1CÔ1CÑCÀcÑIÐIr   c                 ó   — dS )Nú;r|   r-   s     r   Úvisit_EmptyStatementzCGenerator.visit_EmptyStatement  s   € Øˆsr   c                 óP   ‡ — d                      ˆ fd„|j        D ¦   «         ¦  «        S )NrŒ   c              3   óB   •K  — | ]}‰                      |¦  «        V — Œd S r"   r#   )r$   Úparamr   s     €r   r'   z-CGenerator.visit_ParamList.<locals>.<genexpr>
  s/   øè è € ÐAÐA¨u˜Ÿš EÑ*Ô*ÐAÐAÐAÐAÐAÐAr   )r(   Úparamsr-   s   ` r   Úvisit_ParamListzCGenerator.visit_ParamList	  s,   ø€ Ø�yŠyÐAÐAÐAÐA¸¼ÐAÑAÔAÑAÔAÐAr   c                 ó^   — d}|j         r |d|                      |j         ¦  «        z   z  }|dz   S )Nr   r   rÍ   )rL   r   r’   s      r   Úvisit_ReturnzCGenerator.visit_Return  s7   € ØˆØŒ6ð 	*Ø��t—z’z !¤&Ñ)Ô)Ñ)Ñ)ˆAØ�3‰wˆr   c                 ó   — dS )Nzbreak;r|   r-   s     r   Úvisit_BreakzCGenerator.visit_Break  s   € Øˆxr   c                 ó   — dS )Nz	continue;r|   r-   s     r   Úvisit_ContinuezCGenerator.visit_Continue  s   € Øˆ{r   c                 óÒ   — d|                       |j        ¦  «        z   dz   }|d|                       |j        ¦  «        z   dz   z  }|d|                       |j        ¦  «        z   dz   z  }|S )NrD   z) ? z) : rE   )r‚   ÚcondÚiftrueÚiffalser’   s      r   Úvisit_TernaryOpzCGenerator.visit_TernaryOp  sn   € Ø�$×"Ò" 1¤6Ñ*Ô*Ñ*¨VÑ3ˆØ	ˆS�4×#Ò# A¤HÑ-Ô-Ñ-°Ñ6Ñ6ˆØ	ˆS�4×#Ò# A¤IÑ.Ô.Ñ.°Ñ4Ñ4ˆØˆr   c                 ó  — d}|j         r||                      |j         ¦  «        z  }|dz  }||                      |j        d¬¦  «        z  }|j        r9||                      ¦   «         dz   z  }||                      |j        d¬¦  «        z  }|S )Nzif (ú)
T©Ú
add_indentzelse
)rÛ   r   rÆ   rÜ   rÝ   r   r’   s      r   Úvisit_IfzCGenerator.visit_If  s›   € ØˆØŒ6ð 	$Ø�—’˜AœFÑ#Ô#Ñ#ˆAØ	ˆU‰
ˆØ	ˆT× Ò  ¤°dÐ Ñ;Ô;Ñ;ˆØŒ9ð 	AØ�×"Ò"Ñ$Ô$ xÑ/Ñ/ˆAØ�×$Ò$ Q¤Y¸4Ð$Ñ@Ô@Ñ@ˆAØˆr   c                 óJ  — d}|j         r||                      |j         ¦  «        z  }|dz  }|j        r |d|                      |j        ¦  «        z   z  }|dz  }|j        r |d|                      |j        ¦  «        z   z  }|dz  }||                      |j        d¬¦  «        z  }|S )Nzfor (rÍ   r   rà   Trá   )rˆ   r   rÛ   ÚnextrÆ   rÇ   r’   s      r   Ú	visit_ForzCGenerator.visit_For)  s¶   € ØˆØŒ6ð 	$Ø�—’˜AœFÑ#Ô#Ñ#ˆAØ	ˆS‰ˆØŒ6ð 	*Ø��t—z’z !¤&Ñ)Ô)Ñ)Ñ)ˆAØ	ˆS‰ˆØŒ6ð 	*Ø��t—z’z !¤&Ñ)Ô)Ñ)Ñ)ˆAØ	ˆU‰
ˆØ	ˆT× Ò  ¤°DÐ Ñ9Ô9Ñ9ˆØˆr   c                 óš   — d}|j         r||                      |j         ¦  «        z  }|dz  }||                      |j        d¬¦  «        z  }|S )Núwhile (rà   Trá   )rÛ   r   rÆ   rÇ   r’   s      r   Úvisit_WhilezCGenerator.visit_While7  sV   € ØˆØŒ6ð 	$Ø�—’˜AœFÑ#Ô#Ñ#ˆAØ	ˆU‰
ˆØ	ˆT× Ò  ¤°DÐ Ñ9Ô9Ñ9ˆØˆr   c                 óÎ   — d}||                       |j        d¬¦  «        z  }||                      ¦   «         dz   z  }|j        r||                      |j        ¦  «        z  }|dz  }|S )Nzdo
Trá   rè   z);)rÆ   rÇ   r   rÛ   r   r’   s      r   Úvisit_DoWhilezCGenerator.visit_DoWhile?  sq   € ØˆØ	ˆT× Ò  ¤°DÐ Ñ9Ô9Ñ9ˆØ	ˆT×ÒÑ Ô  9Ñ,Ñ,ˆØŒ6ð 	$Ø�—’˜AœFÑ#Ô#Ñ#ˆAØ	ˆT‰	ˆØˆr   c                 ó    — d}||                       |j        ¦  «        z  }|j        r"|dz  }||                       |j        ¦  «        z  }|dz  }|S )Nz_Static_assert(ú,rE   )r   rÛ   Úmessager’   s      r   Úvisit_StaticAssertzCGenerator.visit_StaticAssertH  sX   € ØˆØ	ˆT�ZŠZ˜œÑÔÑˆØŒ9ð 	'Ø�‰HˆAØ�—’˜AœIÑ&Ô&Ñ&ˆAØ	ˆS‰ˆØˆr   c                 ó„   — d|                       |j        ¦  «        z   dz   }||                      |j        d¬¦  «        z  }|S )Nzswitch (rà   Trá   )r   rÛ   rÆ   rÇ   r’   s      r   Úvisit_SwitchzCGenerator.visit_SwitchQ  sC   € Ø˜Ÿš A¤FÑ+Ô+Ñ+¨eÑ3ˆØ	ˆT× Ò  ¤°DÐ Ñ9Ô9Ñ9ˆØˆr   c                 óŽ   — d|                       |j        ¦  «        z   dz   }|j        D ]}||                      |d¬¦  «        z  }Œ|S )Nzcase ú:
Trá   )r   rL   ÚstmtsrÆ   ©r   r*   r‰   rÇ   s       r   Ú
visit_CasezCGenerator.visit_CaseV  sT   € Ø�d—j’j ¤Ñ(Ô(Ñ(¨5Ñ0ˆØ”Gð 	<ð 	<ˆDØ�×$Ò$ T°dÐ$Ñ;Ô;Ñ;ˆAˆAØˆr   c                 óR   — d}|j         D ]}||                      |d¬¦  «        z  }Œ|S )Nz	default:
Trá   )rô   rÆ   rõ   s       r   Úvisit_DefaultzCGenerator.visit_Default\  s<   € ØˆØ”Gð 	<ð 	<ˆDØ�×$Ò$ T°dÐ$Ñ;Ô;Ñ;ˆAˆAØˆr   c                 óL   — |j         dz   |                      |j        ¦  «        z   S )Nró   )r1   rÆ   rÇ   r-   s     r   Úvisit_LabelzCGenerator.visit_Labelb  s#   € ØŒv˜‰~ × 3Ò 3°A´FÑ ;Ô ;Ñ;Ð;r   c                 ó   — d|j         z   dz   S )Nzgoto rÍ   r0   r-   s     r   Ú
visit_GotozCGenerator.visit_Gotoe  s   € Ø˜œÑ #Ñ%Ð%r   c                 ó   — dS )Nz...r|   r-   s     r   Úvisit_EllipsisParamzCGenerator.visit_EllipsisParamh  s   € Øˆur   c                 ó.   — |                       |d¦  «        S )NÚstructrª   r-   s     r   Úvisit_StructzCGenerator.visit_Structk  s   € Ø×/Ò/°°8Ñ<Ô<Ð<r   c                 ó6   — |                       |j        ¦  «        S r"   )r–   r?   r-   s     r   Úvisit_TypenamezCGenerator.visit_Typenamen  s   € Ø×"Ò" 1¤6Ñ*Ô*Ð*r   c                 ó.   — |                       |d¦  «        S )NÚunionrª   r-   s     r   Úvisit_UnionzCGenerator.visit_Unionq  s   € Ø×/Ò/°°7Ñ;Ô;Ð;r   c                 óê   — d}|j         D ]H}t          |t          j        ¦  «        r|d|j         z   z  }Œ*|d|                      |¦  «        z   dz   z  }ŒI|d|                      |j        ¦  «        z   z  }|S )Nr    ú.r8   r9   r…   )r1   re   r   ÚIDr   r‚   rL   )r   r*   r‰   r1   s       r   Úvisit_NamedInitializerz!CGenerator.visit_NamedInitializert  s„   € ØˆØ”Fð 	2ð 	2ˆDÝ˜$¥¤Ñ)Ô)ð 2Ø�S˜4œ9‘_Ñ$��à�S˜4Ÿ:š: dÑ+Ô+Ñ+¨cÑ1Ñ1��Ø	ˆU�T×%Ò% a¤fÑ-Ô-Ñ-Ñ-ˆØˆr   c                 ó,   — |                       |¦  «        S r"   ©r–   r-   s     r   Úvisit_FuncDeclzCGenerator.visit_FuncDecl~  s   € Ø×"Ò" 1Ñ%Ô%Ð%r   c                 ó0   — |                       |d¬¦  «        S ©NFr™   r  r-   s     r   Úvisit_ArrayDeclzCGenerator.visit_ArrayDecl�  ó   € Ø×"Ò" 1°EÐ"Ñ:Ô:Ð:r   c                 ó0   — |                       |d¬¦  «        S r  r  r-   s     r   Úvisit_TypeDeclzCGenerator.visit_TypeDecl„  r  r   c                 ó0   — |                       |d¬¦  «        S r  r  r-   s     r   Úvisit_PtrDeclzCGenerator.visit_PtrDecl‡  r  r   r1   c                 óð  — |dv r7t          |t          j        t          j        f¦  «        sJ ‚|j        }| j        }n@|dk    sJ ‚t          |t          j        ¦  «        sJ ‚|j        €dn|j        j        }| j	        }|dz   |j
        pdz   }|�i|dz  }||                      ¦   «         z  }| xj        dz  c_        |dz  }| ||¦  «        z  }| xj        dz  c_        ||                      ¦   «         d	z   z  }|S )
zlGenerates code for structs, unions, and enums. name should be
        'struct', 'union', or 'enum'.
        )r   r  r©   Nr   r    r¸   rP   rÃ   r~   )re   r   ÚStructÚUnionr�   Ú_generate_struct_union_bodyÚEnumÚvaluesÚenumeratorsÚ_generate_enum_bodyr1   r   r
   )r   r*   r1   ÚmembersÚbody_functionr‰   s         r   r«   z&CGenerator._generate_struct_union_enumŠ  s"  € ð Ð&Ð&Ð&Ý˜a¥%¤,µ´Ð!<Ñ=Ô=Ð=Ð=Ð=Ø”gˆGØ Ô<ˆMˆMà˜6’>�>�>�>Ý˜a¥¤Ñ,Ô,Ð,Ð,Ð,ØœhÐ.�d�d°A´HÔ4HˆGØ Ô4ˆMØ�3‰J˜!œ&˜, BÑ'ˆØÐð �‰IˆAØ�×"Ò"Ñ$Ô$Ñ$ˆAØÐÔ Ñ"ÐÔØ�‰JˆAØ��˜wÑ'Ô'Ñ'ˆAØÐÔ Ñ"ÐÔØ�×"Ò"Ñ$Ô$ sÑ*Ñ*ˆAØˆr   r  c                 óF   ‡ — d                      ˆ fd„|D ¦   «         ¦  «        S )Nr    c              3   óB   •K  — | ]}‰                      |¦  «        V — Œd S r"   rÅ   rŽ   s     €r   r'   z9CGenerator._generate_struct_union_body.<locals>.<genexpr>§  s1   øè è € ÐEÐE°T�t×*Ò*¨4Ñ0Ô0ÐEÐEÐEÐEÐEÐEr   ©r(   ©r   r  s   ` r   r  z&CGenerator._generate_struct_union_body¦  s*   ø€ Ø�wŠwÐEÐEÐEÐE¸WÐEÑEÔEÑEÔEÐEr   c                 ó\   ‡ — d                      ˆ fd„|D ¦   «         ¦  «        d d…         dz   S )Nr    c              3   óB   •K  — | ]}‰                      |¦  «        V — Œd S r"   r#   )r$   r,   r   s     €r   r'   z1CGenerator._generate_enum_body.<locals>.<genexpr>«  s/   øè è € Ð>Ð>¨U�t—z’z %Ñ(Ô(Ð>Ð>Ð>Ð>Ð>Ð>r   éþÿÿÿr¸   r"  r#  s   ` r   r  zCGenerator._generate_enum_body©  s8   ø€ à�wŠwÐ>Ð>Ð>Ð>°gÐ>Ñ>Ô>Ñ>Ô>¸sÀ¸sÔCÀdÑJÐJr   râ   c                 óš  — |r| xj         dz  c_         |                      ¦   «         }|r| xj         dz  c_         |xxt          j        d˜ x�\   nó xt          j        d˜ x�\   nß xt          j        d˜ x�\   nË xt          j        d˜ x�\   n· xt          j        d˜ x�\   n£ xt          j        d˜ x�\   n� xt          j	        d˜ x�\   n{ xt          j
        d˜ x�\   ng xt          j        d˜ x�\   nS xt          j        d˜ x�\   n? xt          j        d˜ x�\   n+ xt          j        d˜ x�\   n xt          j        d˜ x�\   n  n  ||                      |¦  «        z   dz   S xt          j        d˜ x�\    |                      |¦  «        S  t          j        d˜ x�\   ||                      |¦  «        z   S  	 ||                      |¦  «        z   dz   S )z»Generation from a statement node. This method exists as a wrapper
        for individual visit_* methods to handle different treatment of
        some statements in this context.
        rP   r|   Nrµ   r¸   )r
   r   r   ÚDeclrt   ÚCastÚUnaryOprf   Ú	TernaryOpÚFuncCallÚArrayRefÚ	StructRefÚConstantr	  ÚTypedefr€   r   r�   ÚIf)r   r*   râ   r²   s       r   rÆ   zCGenerator._generate_stmt­  s>  € ð
 ð 	#ØÐÔ Ñ"ÐÔØ×"Ò"Ñ$Ô$ˆØð 	#ØÐÔ Ñ"ÐÔàð#�•”
����‘��Ø$•%Ô"Ð$Ð$Ð$Ð$Ñ$Ð$Ð$Ø•%”*�,�,�,�,‘,�,�,Ø!•%”-�/�/�/�/‘/�/�/Ø"•%”.Ð"Ð"Ð"Ð"Ñ"Ð"Ð"Ø#•%”/Ð#Ð#Ð#Ð#Ñ#Ð#Ð#Ø"•%”.Ð"Ð"Ð"Ð"Ñ"Ð"Ð"Ø"•%”.Ð"Ð"Ð"Ð"Ñ"Ð"Ð"Ø#•%”/Ð#Ð#Ð#Ð#Ñ#Ð#Ð#Ø"•%”.Ð"Ð"Ð"Ð"Ñ"Ð"Ð"Ø•%”(�*�*�*�*‘*�*�*Ø!•%”-�/�/�/�/‘/�/�/Ø"•%”.Ð"Ð"Ð"Ð"Ñ"Ð"Ð"Ð"Ð"Ð"Ð"ð
  §
¢
¨1¡¤Ñ-°Ñ5Ð5Ø!•”Ð!Ð!Ð!Ð!Ñ!Ð!ð
 —z’z !‘}”}Ð$ð "õ ”����‘Ø §
¢
¨1¡¤Ñ-Ð-ð àØ §
¢
¨1¡¤Ñ-°Ñ4Ð4r   c                 ó4  — d}|j         rd                     |j         ¦  «        dz   }|j        r |d                     |j        ¦  «        dz   z  }|j        r&||                      |j        d         ¦  «        dz   z  }||                      |j        ¦  «        z  }|S )zGeneration from a Decl node.r    r   r   )Úfuncspecr(   r•   Úalignr   r–   r?   r’   s      r   r†   zCGenerator._generate_decl×  sš   € àˆØŒ:ð 	+Ø—’˜œÑ$Ô$ sÑ*ˆAØŒ9ð 	+Ø�—’˜!œ)Ñ$Ô$ sÑ*Ñ*ˆAØŒ7ð 	.Ø�—’˜AœG AœJÑ'Ô'¨#Ñ-Ñ-ˆAØ	ˆT× Ò  ¤Ñ(Ô(Ñ(ˆØˆr   TÚ	modifiersrš   c                 óâ  — |xt           j        d˜ x��Ø\    d}|j        r |d                     |j        ¦  «        dz   z  }||                      |j        ¦  «        z  }|j        r	|r|j        nd}t          |¦  «        D �]`\  }}|xt           j        d˜ x�Š\    |dk    r+t          ||dz
           t           j
        ¦  «        rd|z   dz   }|d	z  }|j        r |d                     |j        ¦  «        dz   z  }|j        �||                      |j        ¦  «        z  }|d
z  }n¿ xt           j        d˜ x�c\    |dk    r+t          ||dz
           t           j
        ¦  «        rd|z   dz   }|j        �|                      |j        ¦  «        nd}|d|z   dz   z  }nK t           j
        d˜ x�:\   |j        r+d                     |j        ¦  «        }	|rd|› �nd}
d|	› |
› �}nd|z   }n �Œb|r|d|z   z  }|S  xt           j        d˜ x�\    |                      |j        ¦  «        S  xt           j        d˜ x�\    |                      |j        |¬¦  «        S  xt           j        d˜ x� \    d                     |j        ¦  «        dz   S  xt           j        d˜ x�\   n+ xt           j
        d˜ x�\   n xt           j        d˜ x�\   n  n" |                      |j        ||gz   |¬¦  «        S 	 |                      |¦  «        S )zëRecursive generation from a type node. n is the type node.
        modifiers collects the PtrDecl, ArrayDecl and FuncDecl modifiers
        encountered on the way down to a TypeDecl, to allow proper
        generation from it.
        r|   Nr    r   r   r   rD   rE   r8   r9   z* r]   r™   )r   ÚTypeDeclÚqualsr(   r   r?   ÚdeclnameÚ	enumerateÚ	ArrayDeclre   ÚPtrDeclÚ	dim_qualsÚdimÚFuncDeclrF   r(  r†   ÚTypenamer–   ÚIdentifierTypery   )r   r*   r5  rš   r‰   ÚnstrÚiÚmodifierrF   r8  Úsuffixs              r   r–   zCGenerator._generate_typeã  s˜  € ð Ø!•”Ð!Ð!Ð!Ñ!Ñ!Ð!Ø�Ø”7ð 1Ø˜Ÿš !¤'Ñ*Ô*¨SÑ0Ñ0�AØ�T—Z’Z ¤Ñ'Ô'Ñ'�à%&¤ZÐI°MÐI�q”z�zÀr�õ
 $-¨YÑ#7Ô#7ð 2ñ 2‘K�A�xØ"Ø.�Uœ_Ð.Ð.Ð.Ð.Ñ.Ð.Ø  Ašv˜v­*°Y¸qÀ1¹uÔ5EÅuÄ}Ñ*UÔ*U˜vØ'*¨T¡z°CÑ'7 Ø  C™K˜DØ'Ô1ð KØ $¨¯ª°Ô1CÑ(DÔ(DÀsÑ(JÑ J Ø'œ|Ð7Ø $¨¯
ª
°8´<Ñ(@Ô(@Ñ @ Ø  C™K˜D˜Dð /ð .�Uœ^Ð-Ð-Ð-Ð-Ñ-Ð-Ø  Ašv˜v­*°Y¸qÀ1¹uÔ5EÅuÄ}Ñ*UÔ*U˜vØ'*¨T¡z°CÑ'7 ð $,¤=Ð#<ð !%§
¢
¨8¬=Ñ 9Ô 9Ð 9à%'ð !ð
 ! C¨$¡J°Ñ$4Ñ4˜D˜Dð .õ #œ]˜_˜_˜_˜_™_Ø'œ~ð 2Ø(+¯ª°´Ñ(@Ô(@ Ø7;Ð)C¨¨T¨¨¨À Ø';¨EÐ';°6Ð';Ð';  à'*¨T¡z Ð 1ð -ùð ð $Ø˜˜t™‘O�AØ�ðQ "ðR •”����‘�Ø×*Ò*¨1¬6Ñ2Ô2Ð2ð à!•”Ð!Ð!Ð!Ð!Ñ!Ð!Ø×*Ò*¨1¬6ÀÐ*ÑOÔOÐOð "à'•Ô%Ð'Ð'Ð'Ð'Ñ'Ð'Ø—x’x ¤Ñ(Ô(¨3Ñ.Ð.ð (à"•”Ð"Ð"Ð"Ð"Ñ"Ð"Ð" _¥U¤] _ _ _ _¡_ _ _Ð7Gµu´~Ð7GÐ7GÐ7GÐ7GÑ7GÐ7GÐ7GÐ7GÐ7GÐ7GØ×*Ò*Ø”F˜I¨¨™O¸=ð +ñ ô ð ð Ø—z’z !‘}”}Ð$r   Ú	conditionc                 óV   — |                       |¦  «        } ||¦  «        rd|z   dz   S |S )zŒVisits 'n' and returns its string representation, parenthesized
        if the condition function applied to the node returns True.
        rD   rE   )r‚   )r   r*   rF  r‰   s       r   rl   zCGenerator._parenthesize_if&  s:   € ð ×Ò˜QÑÔˆØˆ9�Q‰<Œ<ð 	Ø˜‘7˜S‘=Ð àˆHr   c                 ó6   ‡ — ‰                       |ˆ fd„¦  «        S )z$Common use case for _parenthesize_ifc                 ó0   •— ‰                      | ¦  «         S r"   )rd   )ri   r   s    €r   rj   z8CGenerator._parenthesize_unless_simple.<locals>.<lambda>4  s   ø€ °d×6JÒ6JÈ1Ñ6MÔ6MÐ2M€ r   )rl   r-   s   ` r   r:   z&CGenerator._parenthesize_unless_simple2  s#   ø€ à×$Ò$ QÐ(MÐ(MÐ(MÐ(MÑNÔNÐNr   c                 ó�   — t          |t          j        t          j        t          j        t          j        t          j        f¦  «        S )zyReturns True for nodes that are "simple" - i.e. nodes that always
        have higher precedence than operators.
        )re   r   r/  r	  r-  r.  r,  r-   s     r   rd   zCGenerator._is_simple_node6  s1   € õ ØÝŒ^�UœX¥u¤~µu´ÍÌÐWñ
ô 
ð 	
r   )F)|r   Ú
__module__Ú__qualname__Ú__doc__ÚintÚ__annotations__Úboolr   Ústrr   r   ÚNoder   r   r   r/  r.   r	  r2   rÀ   r6   r-  r=   r.  rB   r,  rH   r*  rN   rg   rf   rq   rt   rw   rA  rz   r‚   r(  rŠ   ÚDeclListr“   r0  r—   r)  rœ   r€   r¤   r   r§   r  r¬   ÚAlignasr°   Ú
Enumeratorr³   r¿   r¼   ÚFileASTrÁ   r�   rÉ   ÚCompoundLiteralrË   ÚEmptyStatementrÎ   Ú	ParamListrÓ   ÚReturnrÕ   ÚBreakr×   ÚContinuerÙ   r+  rÞ   r1  rã   ÚForræ   ÚWhileré   ÚDoWhilerë   ÚStaticAssertrï   ÚSwitchrñ   ÚCaserö   ÚDefaultrø   ÚLabelrú   ÚGotorü   ÚEllipsisParamrþ   r  r  r@  r  r  r  ÚNamedInitializerr
  r?  r  r;  r  r7  r  r<  r  r«   r   r  r  rÆ   r†   r–   r   rl   r:   rd   r|   r   r   r	   r	      s˜
  € € € € € € ðð ð
 ÐÐÑØÐÐÑð	5ð 	5¨4ð 	5¸Dð 	5ð 	5ð 	5ð 	5ð'˜cð 'ð 'ð 'ð 'ð?˜%œ*ð ?¨ð ?ð ?ð ?ð ?ðK (¨5¬:Ô"6ð K¸3ð Kð Kð Kð Kð ¤ð °3ð ð ð ð ð˜%œ(ð  sð ð ð ð ð˜eœlð ¨sð ð ð ð ð< ¤ð <°3ð <ð <ð <ð <ð3 ¤ð 3°Sð 3ð 3ð 3ð 3ð' ¤ð '°3ð 'ð 'ð 'ð 'ð
*˜uœ}ð *°ð *ð *ð *ð *ð"ð 	ˆaðð 	ˆað	ð
 	ˆQðð 	ˆQðð 	ˆQðð 	ˆaðð 	ˆaðð 	ˆQðð 	ˆaðð 	ˆQðð 	ˆaðð 	ˆaðð 	ˆaðð  	ˆQð!ð" 	ˆQð#ð$ 	ˆQð%ð& 	ˆQð'ð( 	ˆQð)ð €Nð.#/ ¤ð #/°3ð #/ð #/ð #/ð #/ðJ; %Ô"2ð ;°sð ;ð ;ð ;ð ;ð! eÔ&:ð !¸sð !ð !ð !ð !ð%˜UœZð %¨Cð %ð %ð %ð %ð	ð 	˜EœJð 	°ð 	À#ð 	ð 	ð 	ð 	ð ¤ð °3ð ð ð ð ð˜uœ}ð °ð ð ð ð ðB˜EœJð B¨3ð Bð Bð Bð Bð+ ¤ð +°3ð +ð +ð +ð +ð+ ¤ð +°3ð +ð +ð +ð +ð@˜EœJð @¨3ð @ð @ð @ð @ð>˜uœ}ð >°ð >ð >ð >ð >ð %Ô"2ð °sð ð ð ð ð-˜uœ}ð -°ð -ð -ð -ð -ð
˜uœ}ð 
°ð 
ð 
ð 
ð 
ð ¤ð °3ð ð ð ð ðJ uÔ'<ð JÀð Jð Jð Jð Jð eÔ&:ð ¸sð ð ð ð ðB ¤ð B°Sð Bð Bð Bð Bð˜eœlð ¨sð ð ð ð ð˜Uœ[ð ¨Sð ð ð ð ð ¤ð °3ð ð ð ð ð ¤ð °Sð ð ð ð ð	˜%œ(ð 	 sð 	ð 	ð 	ð 	ð˜5œ9ð ¨ð ð ð ð ð˜Uœ[ð ¨Sð ð ð ð ð˜uœ}ð °ð ð ð ð ð EÔ$6ð ¸3ð ð ð ð ð˜eœlð ¨sð ð ð ð ð
˜EœJð ¨3ð ð ð ð ð˜uœ}ð °ð ð ð ð ð<˜Uœ[ð <¨Sð <ð <ð <ð <ð&˜EœJð &¨3ð &ð &ð &ð &ð UÔ%8ð ¸Sð ð ð ð ð=˜eœlð =¨sð =ð =ð =ð =ð+ ¤ð +°3ð +ð +ð +ð +ð<˜Uœ[ð <¨Sð <ð <ð <ð <ð¨Ô(>ð À3ð ð ð ð ð& ¤ð &°3ð &ð &ð &ð &ð; ¤ð ;°Sð ;ð ;ð ;ð ;ð; ¤ð ;°3ð ;ð ;ð ;ð ;ð;˜uœ}ð ;°ð ;ð ;ð ;ð ;ðØ” ¤Ñ+¨e¬jÑ8ðØ@Cðà	ðð ð ð ð8F°4¸¼
Ô3Cð FÈð Fð Fð Fð FðK¨4°Ô0@Ô+Að KÀcð Kð Kð Kð Kð(5ð (5 ¤
ð (5¸ð (5Èð (5ð (5ð (5ð (5ðT
 ¤
ð 
¨sð 
ð 
ð 
ð 
ð ')Ø"ð	A%ð A%àŒ:ðA%ð ˜œ
Ô#ðA%ð ð	A%ð
 
ðA%ð A%ð A%ð A%ðF
Ø”ð
Ø(0°%´*°¸tÐ1CÔ(Dð
à	ð
ð 
ð 
ð 
ðO¨U¬Zð O¸Cð Oð Oð Oð Oð
 ¤ð 
°ð 
ð 
ð 
ð 
ð 
ð 
r   r	   N)Útypingr   r   r   r    r   r	   r|   r   r   ú<module>ri     ss   ðð ,Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ð +à Ð Ð Ð Ð Ð ðo
ð o
ð o
ð o
ð o
ñ o
ô o
ð o
ð o
ð o
r   