ó
    jñ:i~E  ã                   ó&   • S SK Jr   " S S\5      rg)é   )Úc_astc                   ó  • \ rS rSrSrS`S jrS rS rS rS r	S r
S	 rS
 rS rS rS r0 SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_S S!_S"S!_S#S$_S%S$_S&S'_S(S'_S)S'0ErS* rS+ rS, rS- rS`S. jrS/ rS0 rS1 rS2 rS3 rS4 rS5 rS6 rS7 rS8 rS9 r S: r!S; r"S< r#S= r$S> r%S? r&S@ r'SA r(SB r)SC r*SD r+SE r,SF r-SG r.SH r/SI r0SJ r1SK r2SL r3SM r4SN r5SO r6SP r7SQ r8SR r9SS r:ST r;SU r<SV r=S`SW jr>SX r?/ SY4SZ jr@S[ rAS\ rBS] rCS^rDg_)aÚ
CGeneratoré   z—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.
c                 ó   • SU l         Xl        g)zrConstructs C-code generator

reduce_parentheses:
    if True, eliminates needless parentheses on binary operators
é    N©Úindent_levelÚreduce_parentheses)Úselfr   s     ÚX/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/pycparser/c_generator.pyÚ__init__ÚCGenerator.__init__   s   € ð ˆÔØ"4Õó    c                 ó    • SU R                   -  $ ©NÚ )r
   )r   s    r   Ú_make_indentÚCGenerator._make_indent   s   € Ø�T×&Ñ&Ñ&Ð&r   c                 ól   • SUR                   R                  -   n[        XU R                  5      " U5      $ )NÚvisit_)Ú	__class__Ú__name__ÚgetattrÚgeneric_visit)r   ÚnodeÚmethods      r   ÚvisitÚCGenerator.visit   s.   € Ø˜DŸN™N×3Ñ3Ñ3ˆÜ�t T×%7Ñ%7Ô8¸Ó>Ð>r   c                 ó^   ^ • Uc  gSR                  U 4S jUR                  5        5       5      $ )NÚ c              3   óJ   >#   • U  H  u  pTR                  U5      v •  M     g 7f©N©r   )Ú.0Úc_nameÚcr   s      €r   Ú	<genexpr>Ú+CGenerator.generic_visit.<locals>.<genexpr>'   s   øé € ÐJº/©Y¨V˜4Ÿ:™: aŸ=˜=º/ùs   ƒ #)ÚjoinÚchildren)r   r   s   ` r   r   ÚCGenerator.generic_visit#   s&   ø€ Ø‰<Øà—7‘7ÔJ¸$¿-¹-¼/ÓJÓJÐJr   c                 ó   • UR                   $ r#   )Úvalue©r   Úns     r   Úvisit_ConstantÚCGenerator.visit_Constant)   s   € Ø�w‰wˆr   c                 ó   • UR                   $ r#   ©Únamer/   s     r   Úvisit_IDÚCGenerator.visit_ID,   s   € Ø�v‰vˆr   c                 óP   • SnUR                   (       a  USUR                   -   -  nU$ )Nz#pragmar   )Ústring)r   r0   Úrets      r   Úvisit_PragmaÚCGenerator.visit_Pragma/   s%   € ØˆØ�8�8Ø�3˜Ÿ™‘>Ñ!ˆCØˆ
r   c                 ó€   • U R                  UR                  5      nUS-   U R                  UR                  5      -   S-   $ )NÚ[Ú])Ú_parenthesize_unless_simpler5   r   Ú	subscript)r   r0   Úarrrefs      r   Úvisit_ArrayRefÚCGenerator.visit_ArrayRef5   s7   € Ø×1Ñ1°!·&±&Ó9ˆØ˜‰|˜dŸj™j¨¯©Ó5Ñ5¸Ñ;Ð;r   c                 óŒ   • U R                  UR                  5      nX!R                  -   U R                  UR                  5      -   $ r#   )r@   r5   Útyper   Úfield)r   r0   Úsrefs      r   Úvisit_StructRefÚCGenerator.visit_StructRef9   s4   € Ø×/Ñ/°·±Ó7ˆØ—f‘f‰}˜tŸz™z¨!¯'©'Ó2Ñ2Ð2r   c                 ó€   • U R                  UR                  5      nUS-   U R                  UR                  5      -   S-   $ )NÚ(Ú))r@   r5   r   Úargs)r   r0   Úfrefs      r   Úvisit_FuncCallÚCGenerator.visit_FuncCall=   s7   € Ø×/Ñ/°·±Ó7ˆØ�c‰z˜DŸJ™J q§v¡vÓ.Ñ.°Ñ4Ð4r   c                 ó  • UR                   S:X  a  SU R                  UR                  5      -  $ U R                  UR                  5      nUR                   S:X  a  SU-  $ UR                   S:X  a  SU-  $ UR                   < U< 3$ )NÚsizeofz
sizeof(%s)zp++z%s++zp--z%s--)Úopr   Úexprr@   )r   r0   Úoperands      r   Úvisit_UnaryOpÚCGenerator.visit_UnaryOpA   sw   € Ø�4‰4�8Óð   $§*¡*¨Q¯V©VÓ"4Ñ4Ð4à×6Ñ6°q·v±vÓ>ˆGØ�t‰t�u‹}Ø Ñ'Ð'Ø—‘˜“Ø Ñ'Ð'à!"§£¢wÐ/Ð/r   z||r   z&&r   Ú|é   Ú^é   Ú&é   z==é   z!=Ú>é   z>=Ú<z<=z>>é   z<<Ú+é   Ú-Ú*é	   Ú/Ú%c                 ó¸   ^ ^• T R                  TR                  UU 4S j5      nT R                  TR                  UU 4S j5      nU< STR                  < SU< 3$ )Nc                 ó  >• TR                  U 5      =(       dg    TR                  =(       aT    [        U [        R                  5      =(       a3    TR
                  U R                     TR
                  TR                     :¬  (       + $ r#   ©Ú_is_simple_noder   Ú
isinstancer   ÚBinaryOpÚprecedence_maprT   ©Údr0   r   s    €€r   Ú<lambda>Ú+CGenerator.visit_BinaryOp.<locals>.<lambda>k   sd   ø€ ˜4×/Ñ/°Ó2÷ MØ×-Ñ-÷ M´*¸QÄÇÁÓ2O÷ MØ×)Ñ)¨!¯$©$Ñ/°4×3FÑ3FÀqÇtÁtÑ3LÑLõNr   c                 ó  >• TR                  U 5      =(       dg    TR                  =(       aT    [        U [        R                  5      =(       a3    TR
                  U R                     TR
                  TR                     :„  (       + $ r#   rm   rr   s    €€r   rt   ru   w   sd   ø€ ˜4×/Ñ/°Ó2÷ LØ×-Ñ-÷ L´*¸QÄÇÁÓ2O÷ LØ×)Ñ)¨!¯$©$Ñ/°$×2EÑ2EÀaÇdÁdÑ2KÑKõMr   r   )Ú_parenthesize_ifÚleftÚrightrT   )r   r0   Úlval_strÚrval_strs   ``  r   Úvisit_BinaryOpÚCGenerator.visit_BinaryOp_   sV   ù€ ð ×(Ñ(Ø�F‰FõNóOˆð ×(Ñ(Ø�G‰GõMóNˆó
 & q§t¤tªXÐ6Ð6r   c                 óœ   • U R                  UR                  S 5      nU R                  UR                  5      < SUR                  < SU< 3$ )Nc                 ó6   • [        U [        R                  5      $ r#   )ro   r   Ú
Assignment)r0   s    r   rt   Ú-CGenerator.visit_Assignment.<locals>.<lambda>   s   € ¤j°´E×4DÑ4DÔ&Er   r   )rw   Úrvaluer   ÚlvaluerT   )r   r0   r{   s      r   Úvisit_AssignmentÚCGenerator.visit_Assignment|   s=   € Ø×(Ñ(ØŸH™HÙEóGˆð "ŸZ™Z¨¯©Ö1°1·4´4ºÐBÐBr   c                 ó8   • SR                  UR                  5      $ r   )r*   Únamesr/   s     r   Úvisit_IdentifierTypeÚCGenerator.visit_IdentifierType‚   s   € Ø�x‰x˜Ÿ™Ó Ð r   c                 ó  • [        U[        R                  5      (       a  SU R                  U5      -   S-   $ [        U[        R                  [        R
                  45      (       a  SU R                  U5      -   S-   $ U R                  U5      $ )NÚ{Ú}rL   rM   )ro   r   ÚInitListr   ÚExprListÚCompoundr/   s     r   Ú_visit_exprÚCGenerator._visit_expr…   sk   € Ü�aœŸ™×(Ñ(Ø˜Ÿ™ A›Ñ&¨Ñ,Ð,Ü˜œEŸN™N¬E¯N©NÐ;×<Ñ<Ø˜Ÿ™ A›Ñ&¨Ñ,Ð,à—:‘:˜a“=Ð r   c                 ó  • U(       a  UR                   OU R                  U5      nUR                  (       a!  USU R                  UR                  5      -   -  nUR                  (       a!  USU R                  UR                  5      -   -  nU$ )Nz : ú = )r5   Ú_generate_declÚbitsizer   Úinitr�   )r   r0   Úno_typeÚss       r   Ú
visit_DeclÚCGenerator.visit_Decl�   sh   € ö ˆA�FŠF 4×#6Ñ#6°qÓ#9ˆØ�9�9�a˜5 4§:¡:¨a¯i©iÓ#8Ñ8Ñ8�aØ�6�6Ø�˜×)Ñ)¨!¯&©&Ó1Ñ1Ñ1ˆAØˆr   c                 óÒ   ^ • T R                  UR                  S   5      n[        UR                  5      S:”  a.  USSR                  U 4S jUR                  SS   5       5      -   -  nU$ )Nr   r   ú, c              3   óD   >#   • U  H  nTR                  US S9v •  M     g7f)T)r—   N)r™   ©r%   Údeclr   s     €r   r(   Ú,CGenerator.visit_DeclList.<locals>.<genexpr>š   s%   øé € ð "=Ú0;¨ð #'§/¡/°$À /Õ"EÚ0;ùs   ƒ )r   ÚdeclsÚlenr*   ©r   r0   r˜   s   `  r   Úvisit_DeclListÚCGenerator.visit_DeclList—   sa   ø€ Ø�J‰J�q—w‘w˜q‘zÓ"ˆÜˆq�w‰w‹<˜!ÓØ�˜Ÿ	™	ô "=Ø01·±¸¸±ó"=ó =ñ =ñ =ˆAàˆr   c                 ó¨   • SnUR                   (       a!  USR                  UR                   5      S-   -  nX R                  UR                  5      -  nU$ )Nr!   r   )Ústorager*   Ú_generate_typerF   r£   s      r   Úvisit_TypedefÚCGenerator.visit_Typedefž   sE   € ØˆØ�9�9�a˜3Ÿ8™8 A§I¡IÓ.°Ñ4Ñ4�aØ	× Ñ  §¡Ó(Ñ(ˆØˆr   c                 ó„   • SU R                  UR                  SS9-   S-   nUS-   U R                  UR                  5      -   $ )NrL   F©Úemit_declnamerM   r   )r¨   Úto_typer@   rU   r£   s      r   Ú
visit_CastÚCGenerator.visit_Cast¤   sC   € Ø�$×%Ñ% a§i¡i¸uÐ%ÐEÑEÈÑKˆØ�3‰w˜×9Ñ9¸!¿&¹&ÓAÑAÐAr   c                 óŽ   • / nUR                    H#  nUR                  U R                  U5      5        M%     SR                  U5      $ ©Nrœ   ©ÚexprsÚappendr�   r*   ©r   r0   Úvisited_subexprsrU   s       r   Úvisit_ExprListÚCGenerator.visit_ExprList¨   ó?   € ØÐØ—G”GˆDØ×#Ñ# D×$4Ñ$4°TÓ$:Ö;ñ à�y‰yÐ)Ó*Ð*r   c                 óŽ   • / nUR                    H#  nUR                  U R                  U5      5        M%     SR                  U5      $ r²   r³   r¶   s       r   Úvisit_InitListÚCGenerator.visit_InitList®   rº   r   c                 ó"   • U R                  USS9$ )NÚenumr4   ©Ú_generate_struct_union_enumr/   s     r   Ú
visit_EnumÚCGenerator.visit_Enum´   s   € Ø×/Ñ/°¸Ð/Ð?Ð?r   c                 óV   • SR                  U R                  UR                  5      5      $ )Nz_Alignas({}))Úformatr   Ú	alignmentr/   s     r   Úvisit_AlignasÚCGenerator.visit_Alignas·   s    € Ø×$Ñ$ T§Z¡Z°·±Ó%<Ó=Ð=r   c                 óø   • UR                   (       d(  SR                  U R                  5       UR                  S9$ SR                  U R                  5       UR                  U R	                  UR                   5      S9$ )Nz{indent}{name},
)Úindentr5   z{indent}{name} = {value},
)rÊ   r5   r.   )r.   rÅ   r   r5   r   r/   s     r   Úvisit_EnumeratorÚCGenerator.visit_Enumeratorº   sq   € Ø�w�wØ&×-Ñ-Ø×(Ñ(Ó*Ø—V‘Vð .ð ð ð
 1×7Ñ7Ø×(Ñ(Ó*Ø—V‘VØ—j‘j §¡Ó)ð 8ð ð r   c                 ó"  ^ • T R                  UR                  5      nST l        T R                  UR                  5      nUR                  (       a6  SR                  U 4S jUR                   5       5      nUS-   U-   S-   U-   S-   $ US-   U-   S-   $ )Nr   ú;
c              3   óF   >#   • U  H  nTR                  U5      v •  M     g 7fr#   r$   )r%   Úpr   s     €r   r(   Ú+CGenerator.visit_FuncDef.<locals>.<genexpr>Ì   s   øé € Ð!Gº°A $§*¡*¨Q§- -ºùó   ƒ!Ú
)r   rŸ   r
   ÚbodyÚparam_declsr*   )r   r0   rŸ   rÔ   Úknrdeclss   `    r   Úvisit_FuncDefÚCGenerator.visit_FuncDefÇ   s€   ø€ Ø�z‰z˜!Ÿ&™&Ó!ˆØˆÔØ�z‰z˜!Ÿ&™&Ó!ˆØ�=�=Ø—z‘zÔ!G¸¿ºÓ!GÓGˆHØ˜$‘; Ñ)¨EÑ1°DÑ8¸4Ñ?Ð?à˜$‘; Ñ%¨Ñ,Ð,r   c                 ó2  • SnUR                    H„  n[        U[        R                  5      (       a  X R	                  U5      -  nM7  [        U[        R
                  5      (       a  X R	                  U5      S-   -  nMn  X R	                  U5      S-   -  nM†     U$ )Nr!   rÓ   rÎ   )Úextro   r   ÚFuncDefr   ÚPragma)r   r0   r˜   rÚ   s       r   Úvisit_FileASTÚCGenerator.visit_FileASTÑ   sx   € ØˆØ—5”5ˆCÜ˜#œuŸ}™}×-Ñ-Ø—Z‘Z “_Ñ$’Ü˜C¤§¡×.Ñ.Ø—Z‘Z “_ tÑ+Ñ+’à—Z‘Z “_ uÑ,Ñ,’ñ ð ˆr   c                 ó   ^ • T R                  5       S-   nT =R                  S-  sl        UR                  (       a(  USR                  U 4S jUR                   5       5      -  nT =R                  S-  sl        UT R                  5       S-   -  nU$ )Nú{
rZ   r!   c              3   óF   >#   • U  H  nTR                  U5      v •  M     g 7fr#   ©Ú_generate_stmt)r%   Ústmtr   s     €r   r(   Ú,CGenerator.visit_Compound.<locals>.<genexpr>à   s   øé € ÐMº}°t˜×,Ñ,¨T×2Ð2º}ùrÒ   z}
)r   r
   Úblock_itemsr*   r£   s   `  r   Úvisit_CompoundÚCGenerator.visit_CompoundÜ   sy   ø€ Ø×ÑÓ %Ñ'ˆØ×Ò˜QÑÕØ�=�=Ø�—‘ÔM¸q¿}º}ÓMÓMÑMˆAØ×Ò˜QÑÕØ	ˆT×ÑÓ  5Ñ(Ñ(ˆØˆr   c                 ó‚   • SU R                  UR                  5      -   S-   U R                  UR                  5      -   S-   $ )NrL   z){rŒ   )r   rF   r–   r/   s     r   Úvisit_CompoundLiteralÚ CGenerator.visit_CompoundLiteralå   s6   € Ø�T—Z‘Z §¡Ó'Ñ'¨$Ñ.°·±¸A¿F¹FÓ1CÑCÀcÑIÐIr   c                 ó   • g)NÚ;© r/   s     r   Úvisit_EmptyStatementÚCGenerator.visit_EmptyStatementé   s   € Ør   c                 óN   ^ • SR                  U 4S jUR                   5       5      $ )Nrœ   c              3   óF   >#   • U  H  nTR                  U5      v •  M     g 7fr#   r$   )r%   Úparamr   s     €r   r(   Ú-CGenerator.visit_ParamList.<locals>.<genexpr>í   s   øé € ÐAº¨u˜Ÿ™ E×*Ð*ºùrÒ   )r*   Úparamsr/   s   ` r   Úvisit_ParamListÚCGenerator.visit_ParamListì   s   ø€ Ø�y‰yÔA¸¿ºÓAÓAÐAr   c                 ót   • SnUR                   (       a!  USU R                  UR                   5      -   -  nUS-   $ )NÚreturnr   rí   )rU   r   r£   s      r   Úvisit_ReturnÚCGenerator.visit_Returnï   s2   € ØˆØ�6�6�1˜˜dŸj™j¨¯©Ó0Ñ0Ñ0�1Ø�3‰wˆr   c                 ó   • g)Nzbreak;rî   r/   s     r   Úvisit_BreakÚCGenerator.visit_Breakô   s   € Ør   c                 ó   • g)Nz	continue;rî   r/   s     r   Úvisit_ContinueÚCGenerator.visit_Continue÷   s   € Ør   c                 óØ   • SU R                  UR                  5      -   S-   nUSU R                  UR                  5      -   S-   -  nUSU R                  UR                  5      -   S-   -  nU$ )NrL   z) ? z) : rM   )r�   ÚcondÚiftrueÚiffalser£   s      r   Úvisit_TernaryOpÚCGenerator.visit_TernaryOpú   sk   € Ø�4×#Ñ# A§F¡FÓ+Ñ+¨fÑ4ˆØ	ˆS�4×#Ñ# A§H¡HÓ-Ñ-°Ñ6Ñ6ˆØ	ˆS�4×#Ñ# A§I¡IÓ.Ñ.°Ñ4Ñ4ˆØˆr   c                 ó,  • SnUR                   (       a  X R                  UR                   5      -  nUS-  nX R                  UR                  SS9-  nUR                  (       a1  X R                  5       S-   -  nX R                  UR                  SS9-  nU$ )Nzif (ú)
T©Ú
add_indentzelse
)r  r   rã   r  r  r   r£   s      r   Úvisit_IfÚCGenerator.visit_If   s…   € ØˆØ�6�6�1Ÿ
™
 1§6¡6Ó*Ñ*�1Ø	ˆU‰
ˆØ	× Ñ  §¡°dÐ Ð;Ñ;ˆØ�9�9Ø×"Ñ"Ó$ xÑ/Ñ/ˆAØ×$Ñ$ Q§Y¡Y¸4Ð$Ð@Ñ@ˆAØˆr   c                 ó„  • SnUR                   (       a  X R                  UR                   5      -  nUS-  nUR                  (       a!  USU R                  UR                  5      -   -  nUS-  nUR                  (       a!  USU R                  UR                  5      -   -  nUS-  nX R	                  UR
                  SS9-  nU$ )Nzfor (rí   r   r	  Tr
  )r–   r   r  Únextrã   rä   r£   s      r   Ú	visit_ForÚCGenerator.visit_For
  s¢   € ØˆØ�6�6�1Ÿ
™
 1§6¡6Ó*Ñ*�1Ø	ˆS‰ˆØ�6�6�1˜˜dŸj™j¨¯©Ó0Ñ0Ñ0�1Ø	ˆS‰ˆØ�6�6�1˜˜dŸj™j¨¯©Ó0Ñ0Ñ0�1Ø	ˆU‰
ˆØ	× Ñ  §¡°DÐ Ð9Ñ9ˆØˆr   c                 ó¨   • SnUR                   (       a  X R                  UR                   5      -  nUS-  nX R                  UR                  SS9-  nU$ )Núwhile (r	  Tr
  )r  r   rã   rä   r£   s      r   Úvisit_WhileÚCGenerator.visit_While  sL   € ØˆØ�6�6�1Ÿ
™
 1§6¡6Ó*Ñ*�1Ø	ˆU‰
ˆØ	× Ñ  §¡°DÐ Ð9Ñ9ˆØˆr   c                 óÒ   • SnX R                  UR                  SS9-  nX R                  5       S-   -  nUR                  (       a  X R	                  UR                  5      -  nUS-  nU$ )Nzdo
Tr
  r  z);)rã   rä   r   r  r   r£   s      r   Úvisit_DoWhileÚCGenerator.visit_DoWhile  sb   € ØˆØ	× Ñ  §¡°DÐ Ð9Ñ9ˆØ	×ÑÓ  9Ñ,Ñ,ˆØ�6�6�1Ÿ
™
 1§6¡6Ó*Ñ*�1Ø	ˆT‰	ˆØˆr   c                 ó´   • SnX R                  UR                  5      -  nUR                  (       a"  US-  nX R                  UR                  5      -  nUS-  nU$ )Nz_Static_assert(Ú,rM   )r   r  Úmessager£   s      r   Úvisit_StaticAssertÚCGenerator.visit_StaticAssert$  sO   € ØˆØ	�Z‰Z˜Ÿ™ÓÑˆØ�9�9Ø�‰HˆAØ—‘˜AŸI™IÓ&Ñ&ˆAØ	ˆS‰ˆØˆr   c                 ó€   • SU R                  UR                  5      -   S-   nX R                  UR                  SS9-  nU$ )Nzswitch (r	  Tr
  )r   r  rã   rä   r£   s      r   Úvisit_SwitchÚCGenerator.visit_Switch-  s?   € Ø˜Ÿ™ A§F¡FÓ+Ñ+¨eÑ3ˆØ	× Ñ  §¡°DÐ Ð9Ñ9ˆØˆr   c                 ó’   • SU R                  UR                  5      -   S-   nUR                   H  nX R                  USS9-  nM     U$ )Nzcase ú:
Tr
  )r   rU   Ústmtsrã   ©r   r0   r˜   rä   s       r   Ú
visit_CaseÚCGenerator.visit_Case2  sI   € Ø�d—j‘j §¡Ó(Ñ(¨5Ñ0ˆØ—G”GˆDØ×$Ñ$ T°dÐ$Ð;Ñ;ŠAñ àˆr   c                 óT   • SnUR                    H  nX R                  USS9-  nM     U$ )Nz	default:
Tr
  )r#  rã   r$  s       r   Úvisit_DefaultÚCGenerator.visit_Default8  s2   € ØˆØ—G”GˆDØ×$Ñ$ T°dÐ$Ð;Ñ;ŠAñ àˆr   c                 óX   • UR                   S-   U R                  UR                  5      -   $ )Nr"  )r5   rã   rä   r/   s     r   Úvisit_LabelÚCGenerator.visit_Label>  s$   € Ø�v‰v˜‰~ × 3Ñ 3°A·F±FÓ ;Ñ;Ð;r   c                 ó&   • SUR                   -   S-   $ )Nzgoto rí   r4   r/   s     r   Ú
visit_GotoÚCGenerator.visit_GotoA  s   € Ø˜Ÿ™Ñ #Ñ%Ð%r   c                 ó   • g)Nz...rî   r/   s     r   Úvisit_EllipsisParamÚCGenerator.visit_EllipsisParamD  s   € Ør   c                 ó&   • U R                  US5      $ )NÚstructrÀ   r/   s     r   Úvisit_StructÚCGenerator.visit_StructG  s   € Ø×/Ñ/°°8Ó<Ð<r   c                 ó8   • U R                  UR                  5      $ r#   )r¨   rF   r/   s     r   Úvisit_TypenameÚCGenerator.visit_TypenameJ  s   € Ø×"Ñ" 1§6¡6Ó*Ð*r   c                 ó&   • U R                  US5      $ )NÚunionrÀ   r/   s     r   Úvisit_UnionÚCGenerator.visit_UnionM  s   € Ø×/Ñ/°°7Ó;Ð;r   c                 ó  • SnUR                    HP  n[        U[        R                  5      (       a  USUR                   -   -  nM6  USU R	                  U5      -   S-   -  nMR     USU R                  UR                  5      -   -  nU$ )Nr!   Ú.r>   r?   r“   )r5   ro   r   ÚIDr   r�   rU   )r   r0   r˜   r5   s       r   Úvisit_NamedInitializerÚ!CGenerator.visit_NamedInitializerP  sz   € ØˆØ—F”FˆDÜ˜$¤§¡×)Ñ)Ø�S˜4Ÿ9™9‘_Ñ$’à�S˜4Ÿ:™: dÓ+Ñ+¨cÑ1Ñ1’ñ	 ð
 	
ˆU�T×%Ñ% a§f¡fÓ-Ñ-Ñ-ˆØˆr   c                 ó$   • U R                  U5      $ r#   ©r¨   r/   s     r   Úvisit_FuncDeclÚCGenerator.visit_FuncDeclZ  s   € Ø×"Ñ" 1Ó%Ð%r   c                 ó"   • U R                  USS9$ ©NFr¬   rD  r/   s     r   Úvisit_ArrayDeclÚCGenerator.visit_ArrayDecl]  ó   € Ø×"Ñ" 1°EÐ"Ð:Ð:r   c                 ó"   • U R                  USS9$ rH  rD  r/   s     r   Úvisit_TypeDeclÚCGenerator.visit_TypeDecl`  rK  r   c                 ó"   • U R                  USS9$ rH  rD  r/   s     r   Úvisit_PtrDeclÚCGenerator.visit_PtrDeclc  rK  r   c                 ó¼  • US;   a  UR                   nU R                  nO9US:X  d   eUR                  c  SOUR                  R                  nU R                  nUS-   UR
                  =(       d    S-   nUbe  US-  nXPR                  5       -  nU =R                  S-  sl        US-  nXT" U5      -  nU =R                  S-  sl        XPR                  5       S	-   -  nU$ )
z\Generates code for structs, unions, and enums. name should be
'struct', 'union', or 'enum'.
)r4  r;  r¿   Nr   r!   rÓ   rZ   rà   rŒ   )r¡   Ú_generate_struct_union_bodyÚvaluesÚenumeratorsÚ_generate_enum_bodyr5   r   r
   )r   r0   r5   ÚmembersÚbody_functionr˜   s         r   rÁ   Ú&CGenerator._generate_struct_union_enumf  sß   € ð Ð&Ó&Ø—g‘gˆGØ ×<Ñ<‰Mà˜6“>Ð!�>ØŸh™hÑ.‘d°A·H±H×4HÑ4HˆGØ ×4Ñ4ˆMØ�3‰J˜!Ÿ&™&Ÿ, BÑ'ˆØÑð �‰IˆAØ×"Ñ"Ó$Ñ$ˆAØ×Ò Ñ"ÕØ�‰JˆAØ�˜wÓ'Ñ'ˆAØ×Ò Ñ"ÕØ×"Ñ"Ó$ sÑ*Ñ*ˆAØˆr   c                 ó:   ^ • SR                  U 4S jU 5       5      $ )Nr!   c              3   óF   >#   • U  H  nTR                  U5      v •  M     g 7fr#   râ   rž   s     €r   r(   Ú9CGenerator._generate_struct_union_body.<locals>.<genexpr>  s   øé € ÐEºW°T�t×*Ñ*¨4×0Ð0ºWùrÒ   ©r*   ©r   rW  s   ` r   rS  Ú&CGenerator._generate_struct_union_body~  s   ø€ Ø�w‰wÔE¹WÓEÓEÐEr   c                 óF   ^ • SR                  U 4S jU 5       5      S S S-   $ )Nr!   c              3   óF   >#   • U  H  nTR                  U5      v •  M     g 7fr#   r$   )r%   r.   r   s     €r   r(   Ú1CGenerator._generate_enum_body.<locals>.<genexpr>ƒ  s   øé € Ð>²g¨U�t—z‘z %×(Ð(²gùrÒ   éþÿÿÿrÓ   r]  r^  s   ` r   rV  ÚCGenerator._generate_enum_body�  s$   ø€ à�w‰wÔ>±gÓ>Ó>¸sÀÐCÀdÑJÐJr   c                 ó.  • [        U5      nU(       a  U =R                  S-  sl        U R                  5       nU(       a  U =R                  S-  sl        U[        R                  [        R
                  [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  [        R                   4;   a  X@R#                  U5      -   S-   $ U[        R$                  4;   a  U R#                  U5      $ U[        R&                  4;   a  X@R#                  U5      -   $ X@R#                  U5      -   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.
rZ   rÎ   rÓ   )rF   r
   r   r   ÚDeclr€   ÚCastÚUnaryOprp   Ú	TernaryOpÚFuncCallÚArrayRefÚ	StructRefÚConstantr@  ÚTypedefrŽ   r   r�   ÚIf)r   r0   r  ÚtyprÊ   s        r   rã   ÚCGenerator._generate_stmt…  s  € ô
 �1‹gˆÞ�t×(Ò(¨AÑ-Õ(Ø×"Ñ"Ó$ˆÞ�t×(Ò(¨AÑ-Õ(àÜ—
‘
œE×,Ñ,¬e¯j©j¼%¿-¹-Ü—‘¤§¡´·±ÄÇÁÜ—‘¤§¡´·±¼5¿=¹=Ü—‘ð	 ó  ð ŸJ™J q›MÑ)¨EÑ1Ð1Ø”U—^‘^Ð%Ó%ð
 —:‘:˜a“=Ð Ø”U—X‘X�KÓØŸJ™J q›MÑ)Ð)àŸJ™J q›MÑ)¨DÑ0Ð0r   c                 ón  • SnUR                   (       a  SR                  UR                   5      S-   nUR                  (       a!  USR                  UR                  5      S-   -  nUR                  (       a#  X R	                  UR                  S   5      S-   -  nX R                  UR                  5      -  nU$ )z%Generation from a Decl node.
        r!   r   r   )Úfuncspecr*   r§   Úalignr   r¨   rF   r£   s      r   r”   ÚCGenerator._generate_decl£  sˆ   € ð ˆØ�:�:˜3Ÿ8™8 A§J¡JÓ/°#Ñ5�qØ�9�9�a˜3Ÿ8™8 A§I¡IÓ.°Ñ4Ñ4�aØ�7�7�AŸ™ A§G¡G¨A¡JÓ/°#Ñ5Ñ5�AØ	× Ñ  §¡Ó(Ñ(ˆØˆr   Tc                 óv  • [        U5      nU[        R                  :X  Ga)  SnUR                  (       a!  USR	                  UR                  5      S-   -  nXPR                  UR                   5      -  nUR                  (       a  U(       a  UR                  OSn[        U5       GH‘  u  px[        U[        R                  5      (       a‹  US:w  a,  [        X'S-
     [        R                  5      (       a  SU-   S-   nUS-  nUR                  (       a!  USR	                  UR                  5      S-   -  nX`R                  UR                  5      S-   -  nM°  [        U[        R                  5      (       aY  US:w  a,  [        X'S-
     [        R                  5      (       a  SU-   S-   nUSU R                  UR                  5      -   S-   -  nGM(  [        U[        R                  5      (       d  GMJ  UR                  (       a1  S	SR	                  UR                  5      < U(       a  SU-   OS< 3nGMŒ  S
U-   nGM”     U(       a  USU-   -  nU$ U[        R                  :X  a  U R!                  UR                   5      $ U[        R"                  :X  a  U R%                  UR                   US9$ U[        R&                  :X  a  SR	                  UR(                  5      S-   $ U[        R                  [        R                  [        R                  4;   a  U R%                  UR                   X!/-   US9$ U R                  U5      $ )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!   r   r   r   rL   rM   r>   r?   z* rg   r¬   )rF   r   ÚTypeDeclÚqualsr*   r   ÚdeclnameÚ	enumeratero   Ú	ArrayDeclÚPtrDeclÚ	dim_qualsÚdimÚFuncDeclrN   rf  r”   ÚTypenamer¨   ÚIdentifierTyper‡   )	r   r0   Ú	modifiersr­   rp  r˜   ÚnstrÚiÚmodifiers	            r   r¨   ÚCGenerator._generate_type­  s†  € ô �1‹gˆð ”%—.‘.Ô ØˆAØ�w�w˜˜SŸX™X a§g¡gÓ.°Ñ4Ñ4˜Ø—‘˜AŸF™FÓ#Ñ#ˆAà!"§§¶�1—:’:À2ˆDô
  )¨×3‘�Ü˜h¬¯©×8Ñ8Ø˜Q›Ü" 9°©UÑ#3´U·]±]×CÑCØ#&¨¡:°Ñ#3˜DØ˜C‘K�DØ×)×)Ø §¡¨×);Ñ);Ó <¸sÑ BÑB˜ØŸJ™J x§|¡|Ó4°sÑ:Ñ:’DÜ ¬%¯.©.×9Ñ9Ø˜Q›Ü" 9°©UÑ#3´U·]±]×CÑCØ#&¨¡:°Ñ#3˜DØ˜C $§*¡*¨X¯]©]Ó";Ñ;¸cÑAÑA“DÜ ¬%¯-©-×8Ô8Ø—~—~�~Ø+.¯8©8°H·N±NÕ+CÞ9=¨3°ª:À2Ñ+Eð G›ð  # T™z›ñ'  4ö( �Q˜# ™*‘_�QØˆHØ”E—J‘JÓØ×&Ñ& q§v¡vÓ.Ð.Ø”E—N‘NÓ"Ø×&Ñ& q§v¡v¸}Ð&ÐMÐMØ”E×(Ñ(Ó(Ø—8‘8˜AŸG™GÓ$ sÑ*Ð*Ø”U—_‘_¤e§m¡m´U·^±^ÐDÓDØ×&Ñ& q§v¡v¨y¸3©Ø7Dð 'ð Fð Fð —:‘:˜a“=Ð r   c                 óR   • U R                  U5      nU" U5      (       a  SU-   S-   $ U$ )z|Visits 'n' and returns its string representation, parenthesized
if the condition function applied to the node returns True.
rL   rM   )r�   )r   r0   Ú	conditionr˜   s       r   rw   ÚCGenerator._parenthesize_ifâ  s0   € ð ×Ñ˜QÓˆÙ�Q�<‰<Ø˜‘7˜S‘=Ð àˆHr   c                 ó0   ^ • T R                  UU 4S j5      $ )z-Common use case for _parenthesize_if
        c                 ó0   >• TR                  U 5      (       + $ r#   )rn   )rs   r   s    €r   rt   Ú8CGenerator._parenthesize_unless_simple.<locals>.<lambda>ï  s   ø€ °d×6JÑ6JÈ1Ó6MÕ2Mr   )rw   r/   s   ` r   r@   Ú&CGenerator._parenthesize_unless_simpleì  s   ø€ ð ×$Ñ$ QÔ(MÓNÐNr   c                 ó°   • [        U[        R                  [        R                  [        R                  [        R
                  [        R                  45      $ )ziReturns True for nodes that are "simple" - i.e. nodes that always
have higher precedence than operators.
)ro   r   rm  r@  rk  rl  rj  r/   s     r   rn   ÚCGenerator._is_simple_nodeñ  s9   € ô ˜!œeŸn™n¬e¯h©h¼¿¹Ü#Ÿo™o¬u¯~©~ð?ó @ð 	@r   r	   N)F)Er   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   r   r   r1   r6   r;   rC   rI   rP   rW   rq   r|   r„   rˆ   r�   r™   r¤   r©   r¯   r¸   r¼   rÂ   rÇ   rË   r×   rÝ   rç   rê   rï   rö   rú   rý   r   r  r  r  r  r  r  r  r%  r(  r+  r.  r1  r5  r8  r<  rA  rE  rI  rM  rP  rÁ   rS  rV  rã   r”   r¨   rw   r@   rn   Ú__static_attributes__rî   r   r   r   r      s.  † ñô	5ò'ò?òKòòòò<ò3ò5ò0ðð 	ˆaðð 	ˆað	ð
 	ˆQðð 	ˆQðð 	ˆQðð 	ˆaðð �qðð 	ˆQðð �aðð ˜aðð "& qðð 	ˆaðð �qðð 	ˆQðð �Qðð 	ˆQðð �Qðð ˜Qñ€Nò7ò:Cò!ò!ôòòòBò+ò+ò@ò>òò-ò	òòJòòBòò
òòòò	òòòòò
òò<ò&òò=ò+ò<òò&ò;ò;ò;òò0FòKô1ò<ð +-¸dô 3!òjòOõ
@r   r   N)r!   r   Úobjectr   rî   r   r   Ú<module>r–     s   ðõ ôj@�õ j@r   