Ë
    ±éäglE  ã                   ó&   — d dl mZ  G d„ de«      Zy)é   )Úc_astc                   ó  — e Zd ZdZd^d„Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Z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)„ Zd*„ Zd+„ Zd,„ Zd^d-„Zd.„ Zd/„ Zd0„ Zd1„ Zd2„ Zd3„ Zd4„ Zd5„ Zd6„ Zd7„ Zd8„ Zd9„ Z d:„ Z!d;„ Z"d<„ Z#d=„ Z$d>„ Z%d?„ Z&d@„ Z'dA„ Z(dB„ Z)dC„ Z*dD„ Z+dE„ Z,dF„ Z-dG„ Z.dH„ Z/dI„ Z0dJ„ Z1dK„ Z2dL„ Z3dM„ Z4dN„ Z5dO„ Z6dP„ Z7dQ„ Z8dR„ Z9dS„ Z:dT„ Z;dU„ Z<d^dV„Z=dW„ Z>g dXfdY„Z?dZ„ Z@d[„ ZAd\„ ZBy])_Ú
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.
    c                 ó    — d| _         || _        y)z“ Constructs C-code generator

            reduce_parentheses:
                if True, eliminates needless parentheses on binary operators
        é    N)Úindent_levelÚreduce_parentheses)Úselfr	   s     úS/var/www/skyplay_api_hub/venv/lib/python3.12/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   c                 ón   — d|j                   j                  z   } t        | || j                  «      |«      S )NÚvisit_)Ú	__class__Ú__name__ÚgetattrÚgeneric_visit)r
   ÚnodeÚmethods      r   ÚvisitzCGenerator.visit   s2   € Ø˜DŸN™N×3Ñ3Ñ3ˆØ8Œw�t˜V T×%7Ñ%7Ó8¸Ó>Ð>r   c                 óZ   ‡ — |€ydj                  ˆ fd„|j                  «       D «       «      S )NÚ c              3   óF   •K  — | ]  \  }}‰j                  |«      –— Œ y ­w©N©r   )Ú.0Úc_nameÚcr
   s      €r   ú	<genexpr>z+CGenerator.generic_visit.<locals>.<genexpr>'   s   øè ø€ ÒJ©Y¨V°Q˜4Ÿ:™: aŸ=ÑJùs   ƒ!)ÚjoinÚchildren)r
   r   s   ` r   r   zCGenerator.generic_visit#   s&   ø€ Øˆ<Øà—7‘7ÓJ¸$¿-¹-»/ÔJÓJÐJr   c                 ó   — |j                   S r   )Úvalue©r
   Úns     r   Úvisit_ConstantzCGenerator.visit_Constant)   s   € Ø�w‰wˆr   c                 ó   — |j                   S r   ©Únamer(   s     r   Úvisit_IDzCGenerator.visit_ID,   s   € Ø�v‰vˆr   c                 óF   — d}|j                   r|d|j                   z   z  }|S )Nz#pragmar   )Ústring)r
   r)   Úrets      r   Úvisit_PragmazCGenerator.visit_Pragma/   s%   € ØˆØ�8Š8Ø�3˜Ÿ™‘>Ñ!ˆCØˆ
r   c                 ó€   — | j                  |j                  «      }|dz   | j                  |j                  «      z   dz   S )Nú[ú])Ú_parenthesize_unless_simpler-   r   Ú	subscript)r
   r)   Úarrrefs      r   Úvisit_ArrayRefzCGenerator.visit_ArrayRef5   s7   € Ø×1Ñ1°!·&±&Ó9ˆØ˜‰|˜dŸj™j¨¯©Ó5Ñ5¸Ñ;Ð;r   c                 óŽ   — | j                  |j                  «      }||j                  z   | j                  |j                  «      z   S r   )r6   r-   Útyper   Úfield)r
   r)   Úsrefs      r   Úvisit_StructRefzCGenerator.visit_StructRef9   s6   € Ø×/Ñ/°·±Ó7ˆØ�a—f‘f‰}˜tŸz™z¨!¯'©'Ó2Ñ2Ð2r   c                 ó€   — | j                  |j                  «      }|dz   | j                  |j                  «      z   dz   S )Nú(ú))r6   r-   r   Úargs)r
   r)   Úfrefs      r   Úvisit_FuncCallzCGenerator.visit_FuncCall=   s7   € Ø×/Ñ/°·±Ó7ˆØ�c‰z˜DŸJ™J q§v¡vÓ.Ñ.°Ñ4Ð4r   c                 ó  — |j                   dk(  rd| j                  |j                  «      z  S | j                  |j                  «      }|j                   dk(  rd|z  S |j                   dk(  rd|z  S |j                   ›|›�S )NÚsizeofz
sizeof(%s)zp++z%s++zp--z%s--)Úopr   Úexprr6   )r
   r)   Úoperands      r   Úvisit_UnaryOpz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                 ó®   ‡ ‡— ‰ j                  ‰j                  ˆˆ fd„«      }‰ j                  ‰j                  ˆˆ fd„«      }|›d‰j                  ›d|›�S )Nc                 óæ   •— ‰j                  | «      xs] ‰j                  xrO t        | t        j                  «      xr3 ‰j
                  | j                     ‰j
                  ‰j                     k\   S r   ©Ú_is_simple_noder	   Ú
isinstancer   ÚBinaryOpÚprecedence_maprG   ©Údr)   r
   s    €€r   ú<lambda>z+CGenerator.visit_BinaryOp.<locals>.<lambda>k   sf   ø€ ˜4×/Ñ/°Ó2ò MØ×-Ñ-ò M´*¸QÄÇÁÓ2Oò MØ×)Ñ)¨!¯$©$Ñ/°4×3FÑ3FÀqÇtÁtÑ3LÑLðN€ r   c                 óæ   •— ‰j                  | «      xs] ‰j                  xrO t        | t        j                  «      xr3 ‰j
                  | j                     ‰j
                  ‰j                     kD   S r   r_   rd   s    €€r   rf   z+CGenerator.visit_BinaryOp.<locals>.<lambda>w   sf   ø€ ˜4×/Ñ/°Ó2ò LØ×-Ñ-ò L´*¸QÄÇÁÓ2Oò LØ×)Ñ)¨!¯$©$Ñ/°$×2EÑ2EÀaÇdÁdÑ2KÑKðM€ r   r   )Ú_parenthesize_ifÚleftÚrightrG   )r
   r)   Úlval_strÚrval_strs   ``  r   Úvisit_BinaryOpzCGenerator.visit_BinaryOp_   sV   ù€ ð ×(Ñ(Ø�F‰FôNóOˆð ×(Ñ(Ø�G‰GôMóNˆò
 & q§t£t©XÐ6Ð6r   c                 ó–   — | j                  |j                  d„ «      }| j                  |j                  «      ›d|j                  ›d|›�S )Nc                 ó6   — t        | t        j                  «      S r   )ra   r   Ú
Assignment)r)   s    r   rf   z-CGenerator.visit_Assignment.<locals>.<lambda>   s   € ¤j°´E×4DÑ4DÓ&E€ r   r   )rh   Úrvaluer   ÚlvaluerG   )r
   r)   rl   s      r   Úvisit_AssignmentzCGenerator.visit_Assignment|   s=   € Ø×(Ñ(ØŸH™HÙEóGˆð "ŸZ™Z¨¯©Õ1°1·4³4¹ÐBÐBr   c                 ó8   — dj                  |j                  «      S r   )r$   Únamesr(   s     r   Úvisit_IdentifierTypezCGenerator.visit_IdentifierType‚   s   € Ø�x‰x˜Ÿ™Ó Ð r   c                 óè   — t        |t        j                  «      rd| j                  |«      z   dz   S t        |t        j                  «      rd| j                  |«      z   dz   S | j                  |«      S )Nú{ú}r@   rA   )ra   r   ÚInitListr   ÚExprListr(   s     r   Ú_visit_exprzCGenerator._visit_expr…   s\   € Ü�aœŸ™Ô(Ø˜Ÿ™ A›Ñ&¨Ñ,Ð,Ü˜œ5Ÿ>™>Ô*Ø˜Ÿ™ A›Ñ&¨Ñ,Ð,à—:‘:˜a“=Ð r   c                 óø   — |r|j                   n| j                  |«      }|j                  r!|d| j                  |j                  «      z   z  }|j                  r!|d| j                  |j                  «      z   z  }|S )Nz : ú = )r-   Ú_generate_declÚbitsizer   Úinitr|   )r
   r)   Úno_typeÚss       r   Ú
visit_Declz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                 óÎ   ‡ — ‰ j                  |j                  d   «      }t        |j                  «      dkD  r-|ddj                  ˆ fd„|j                  dd  D «       «      z   z  }|S )Nr   r   ú, c              3   óD   •K  — | ]  }‰j                  |d ¬«      –— Œ y­w)T)r‚   N)r„   ©r    Údeclr
   s     €r   r#   z,CGenerator.visit_DeclList.<locals>.<genexpr>š   s&   øè ø€ ò "=Ø(,ð #'§/¡/°$À /×"Eñ "=ùs   ƒ )r   ÚdeclsÚlenr$   ©r
   r)   rƒ   s   `  r   Úvisit_DeclListzCGenerator.visit_DeclList—   sa   ø€ Ø�J‰J�q—w‘w˜q‘zÓ"ˆÜˆq�w‰w‹<˜!ÒØ�˜Ÿ	™	ó "=Ø01·±¸¸°ô"=ó =ñ =ñ =ˆAàˆr   c                 ó    — d}|j                   r!|dj                  |j                   «      dz   z  }|| j                  |j                  «      z  }|S )Nr   r   )Ústorager$   Ú_generate_typer;   rŒ   s      r   Úvisit_TypedefzCGenerator.visit_Typedefž   sG   € ØˆØ�9Š9�a˜3Ÿ8™8 A§I¡IÓ.°Ñ4Ñ4�aØ	ˆT× Ñ  §¡Ó(Ñ(ˆØˆr   c                 óŠ   — d| j                  |j                  d¬«      z   dz   }|dz   | j                  |j                  «      z   S )Nr@   F©Úemit_declnamerA   r   )r�   Úto_typer6   rH   rŒ   s      r   Ú
visit_CastzCGenerator.visit_Cast¤   sC   € Ø�$×%Ñ% a§i¡i¸uÐ%ÓEÑEÈÑKˆØ�3‰w˜×9Ñ9¸!¿&¹&ÓAÑAÐAr   c                 óŠ   — g }|j                   D ]"  }|j                  | j                  |«      «       Œ$ dj                  |«      S ©Nr†   ©ÚexprsÚappendr|   r$   ©r
   r)   Úvisited_subexprsrH   s       r   Úvisit_ExprListzCGenerator.visit_ExprList¨   óD   € ØÐØ—G‘Gò 	<ˆDØ×#Ñ# D×$4Ñ$4°TÓ$:Õ;ð	<à�y‰yÐ)Ó*Ð*r   c                 óŠ   — g }|j                   D ]"  }|j                  | j                  |«      «       Œ$ dj                  |«      S r˜   r™   rœ   s       r   Úvisit_InitListzCGenerator.visit_InitList®   rŸ   r   c                 ó(   — | j                  |d¬«      S )NÚenumr,   ©Ú_generate_struct_union_enumr(   s     r   Ú
visit_EnumzCGenerator.visit_Enum´   s   € Ø×/Ñ/°¸Ð/Ó?Ð?r   c                 óV   — dj                  | j                  |j                  «      «      S )Nz_Alignas({}))Úformatr   Ú	alignmentr(   s     r   Úvisit_AlignaszCGenerator.visit_Alignas·   s    € Ø×$Ñ$ T§Z¡Z°·±Ó%<Ó=Ð=r   c                 óú   — |j                   s+dj                  | j                  «       |j                  ¬«      S dj                  | j                  «       |j                  | j	                  |j                   «      ¬«      S )Nz{indent}{name},
)Úindentr-   z{indent}{name} = {value},
)r¬   r-   r'   )r'   r¨   r   r-   r   r(   s     r   Úvisit_EnumeratorzCGenerator.visit_Enumeratorº   sq   € Ø�wŠwØ&×-Ñ-Ø×(Ñ(Ó*Ø—V‘Vð .ó ð ð
 1×7Ñ7Ø×(Ñ(Ó*Ø—V‘VØ—j‘j §¡Ó)ð 8ó ð r   c                 ó  ‡ — ‰ j                  |j                  «      }d‰ _        ‰ j                  |j                  «      }|j                  r5dj                  ˆ fd„|j                  D «       «      }|dz   |z   dz   |z   dz   S |dz   |z   dz   S )Nr   ú;
c              3   ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wr   r   )r    Úpr
   s     €r   r#   z+CGenerator.visit_FuncDef.<locals>.<genexpr>Ì   s   øè ø€ Ò!G°A $§*¡*¨Q§-Ñ!Gùó   ƒú
)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ˆHØ˜$‘; Ñ)¨EÑ1°DÑ8¸4Ñ?Ð?à˜$‘; Ñ%¨Ñ,Ð,r   c                 ó  — d}|j                   D ]z  }t        |t        j                  «      r|| j	                  |«      z  }Œ2t        |t        j
                  «      r|| j	                  |«      dz   z  }Œd|| j	                  |«      dz   z  }Œ| |S )Nr   r³   r¯   )Úextra   r   ÚFuncDefr   ÚPragma)r
   r)   rƒ   r¹   s       r   Úvisit_FileASTzCGenerator.visit_FileASTÑ   s}   € ØˆØ—5‘5ò 	-ˆCÜ˜#œuŸ}™}Ô-Ø�T—Z‘Z “_Ñ$‘Ü˜C¤§¡Ô.Ø�T—Z‘Z “_ tÑ+Ñ+‘à�T—Z‘Z “_ uÑ,Ñ,‘ð	-ð ˆr   c                 ó  ‡ — ‰ j                  «       dz   }‰ xj                  dz  c_        |j                  r'|dj                  ˆ fd„|j                  D «       «      z  }‰ xj                  dz  c_        |‰ j                  «       dz   z  }|S )Nú{
rL   r   c              3   ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wr   ©Ú_generate_stmt)r    Ústmtr
   s     €r   r#   z,CGenerator.visit_Compound.<locals>.<genexpr>à   s   øè ø€ ÒM°t˜×,Ñ,¨T×2ÑMùr²   z}
)r   r   Úblock_itemsr$   rŒ   s   `  r   Úvisit_CompoundzCGenerator.visit_CompoundÜ   sy   ø€ Ø×ÑÓ %Ñ'ˆØ×Ò˜QÑÕØ�=Š=Ø�—‘ÓM¸q¿}¹}ÔMÓMÑMˆAØ×Ò˜QÑÕØ	ˆT×ÑÓ  5Ñ(Ñ(ˆØˆr   c                 ó‚   — d| j                  |j                  «      z   dz   | j                  |j                  «      z   dz   S )Nr@   z){ry   )r   r;   r�   r(   s     r   Úvisit_CompoundLiteralz CGenerator.visit_CompoundLiteralå   s6   € Ø�T—Z‘Z §¡Ó'Ñ'¨$Ñ.°·±¸A¿F¹FÓ1CÑCÀcÑIÐIr   c                  ó   — y)Nú;© r(   s     r   Úvisit_EmptyStatementzCGenerator.visit_EmptyStatementé   s   € Ør   c                 óL   ‡ — dj                  ˆ fd„|j                  D «       «      S )Nr†   c              3   ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wr   r   )r    Úparamr
   s     €r   r#   z-CGenerator.visit_ParamList.<locals>.<genexpr>í   s   øè ø€ ÒA¨u˜Ÿ™ E×*ÑAùr²   )r$   Úparamsr(   s   ` r   Úvisit_ParamListzCGenerator.visit_ParamListì   s   ø€ Ø�y‰yÓA¸¿¹ÔAÓAÐAr   c                 ój   — d}|j                   r!|d| j                  |j                   «      z   z  }|dz   S )NÚreturnr   rÈ   )rH   r   rŒ   s      r   Úvisit_ReturnzCGenerator.visit_Returnï   s2   € ØˆØ�6Š6�1˜˜dŸj™j¨¯©Ó0Ñ0Ñ0�1Ø�3‰wˆr   c                  ó   — y)Nzbreak;rÉ   r(   s     r   Úvisit_BreakzCGenerator.visit_Breakô   s   € Ør   c                  ó   — y)Nz	continue;rÉ   r(   s     r   Úvisit_ContinuezCGenerator.visit_Continue÷   s   € Ør   c                 óØ   — d| j                  |j                  «      z   dz   }|d| j                  |j                  «      z   dz   z  }|d| j                  |j                  «      z   dz   z  }|S )Nr@   z) ? z) : rA   )r|   ÚcondÚiftrueÚiffalserŒ   s      r   Úvisit_TernaryOpz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                 ó,  — d}|j                   r|| j                  |j                   «      z  }|dz  }|| j                  |j                  d¬«      z  }|j                  r6|| j                  «       dz   z  }|| j                  |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Š6�1˜Ÿ
™
 1§6¡6Ó*Ñ*�1Ø	ˆU‰
ˆØ	ˆT× Ñ  §¡°dÐ Ó;Ñ;ˆØ�9Š9Ø�×"Ñ"Ó$ xÑ/Ñ/ˆAØ�×$Ñ$ Q§Y¡Y¸4Ð$Ó@Ñ@ˆAØˆr   c                 óp  — d}|j                   r|| j                  |j                   «      z  }|dz  }|j                  r!|d| j                  |j                  «      z   z  }|dz  }|j                  r!|d| j                  |j                  «      z   z  }|dz  }|| j	                  |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Š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‰
ˆØ	ˆT× Ñ  §¡°DÐ Ó9Ñ9ˆØˆr   c                 ó¨   — d}|j                   r|| j                  |j                   «      z  }|dz  }|| j                  |j                  d¬«      z  }|S )Núwhile (rÝ   TrÞ   )rØ   r   rÁ   rÂ   rŒ   s      r   Úvisit_WhilezCGenerator.visit_While  sP   € ØˆØ�6Š6�1˜Ÿ
™
 1§6¡6Ó*Ñ*�1Ø	ˆU‰
ˆØ	ˆT× Ñ  §¡°DÐ Ó9Ñ9ˆØˆr   c                 óÔ   — d}|| j                  |j                  d¬«      z  }|| j                  «       dz   z  }|j                  r|| j	                  |j                  «      z  }|dz  }|S )Nzdo
TrÞ   rå   z);)rÁ   rÂ   r   rØ   r   rŒ   s      r   Úvisit_DoWhilezCGenerator.visit_DoWhile  sh   € ØˆØ	ˆT× Ñ  §¡°DÐ Ó9Ñ9ˆØ	ˆT×ÑÓ  9Ñ,Ñ,ˆØ�6Š6�1˜Ÿ
™
 1§6¡6Ó*Ñ*�1Ø	ˆT‰	ˆØˆr   c                 ó®   — d}|| j                  |j                  «      z  }|j                  r#|dz  }|| j                  |j                  «      z  }|dz  }|S )Nz_Static_assert(ú,rA   )r   rØ   ÚmessagerŒ   s      r   Úvisit_StaticAssertzCGenerator.visit_StaticAssert$  sS   € ØˆØ	ˆT�Z‰Z˜Ÿ™ÓÑˆØ�9Š9Ø�‰HˆAØ�—‘˜AŸI™IÓ&Ñ&ˆAØ	ˆS‰ˆØˆr   c                 óˆ   — d| j                  |j                  «      z   dz   }|| j                  |j                  d¬«      z  }|S )Nzswitch (rÝ   TrÞ   )r   rØ   rÁ   rÂ   rŒ   s      r   Úvisit_SwitchzCGenerator.visit_Switch-  sA   € Ø˜Ÿ™ A§F¡FÓ+Ñ+¨eÑ3ˆØ	ˆT× Ñ  §¡°DÐ Ó9Ñ9ˆØˆr   c                 ó–   — d| j                  |j                  «      z   dz   }|j                  D ]  }|| j                  |d¬«      z  }Œ |S )Nzcase ú:
TrÞ   )r   rH   ÚstmtsrÁ   ©r
   r)   rƒ   rÂ   s       r   Ú
visit_CasezCGenerator.visit_Case2  sP   € Ø�d—j‘j §¡Ó(Ñ(¨5Ñ0ˆØ—G‘Gò 	<ˆDØ�×$Ñ$ T°dÐ$Ó;Ñ;‰Að	<àˆr   c                 óX   — d}|j                   D ]  }|| j                  |d¬«      z  }Œ |S )Nz	default:
TrÞ   )rñ   rÁ   rò   s       r   Úvisit_DefaultzCGenerator.visit_Default8  s9   € ØˆØ—G‘Gò 	<ˆDØ�×$Ñ$ T°dÐ$Ó;Ñ;‰Að	<àˆr   c                 óX   — |j                   dz   | j                  |j                  «      z   S )Nrð   )r-   rÁ   rÂ   r(   s     r   Úvisit_LabelzCGenerator.visit_Label>  s$   € Ø�v‰v˜‰~ × 3Ñ 3°A·F±FÓ ;Ñ;Ð;r   c                 ó&   — d|j                   z   dz   S )Nzgoto rÈ   r,   r(   s     r   Ú
visit_GotozCGenerator.visit_GotoA  s   € Ø˜Ÿ™Ñ #Ñ%Ð%r   c                  ó   — y)Nz...rÉ   r(   s     r   Úvisit_EllipsisParamzCGenerator.visit_EllipsisParamD  s   € Ør   c                 ó&   — | j                  |d«      S )NÚstructr¤   r(   s     r   Úvisit_StructzCGenerator.visit_StructG  s   € Ø×/Ñ/°°8Ó<Ð<r   c                 ó8   — | j                  |j                  «      S r   )r�   r;   r(   s     r   Úvisit_TypenamezCGenerator.visit_TypenameJ  s   € Ø×"Ñ" 1§6¡6Ó*Ð*r   c                 ó&   — | j                  |d«      S )NÚunionr¤   r(   s     r   Úvisit_UnionzCGenerator.visit_UnionM  s   € Ø×/Ñ/°°7Ó;Ð;r   c                 óü   — d}|j                   D ]I  }t        |t        j                  «      r|d|j                   z   z  }Œ0|d| j	                  |«      z   dz   z  }ŒK |d| j                  |j                  «      z   z  }|S )Nr   ú.r4   r5   r~   )r-   ra   r   ÚIDr   r|   rH   )r
   r)   rƒ   r-   s       r   Úvisit_NamedInitializerz!CGenerator.visit_NamedInitializerP  s|   € ØˆØ—F‘Fò 	2ˆDÜ˜$¤§¡Ô)Ø�S˜4Ÿ9™9‘_Ñ$‘à�S˜4Ÿ:™: dÓ+Ñ+¨cÑ1Ñ1‘ð		2ð
 	
ˆU�T×%Ñ% a§f¡fÓ-Ñ-Ñ-ˆØˆr   c                 ó$   — | j                  |«      S r   ©r�   r(   s     r   Úvisit_FuncDeclzCGenerator.visit_FuncDeclZ  s   € Ø×"Ñ" 1Ó%Ð%r   c                 ó(   — | j                  |d¬«      S ©NFr“   r	  r(   s     r   Úvisit_ArrayDeclzCGenerator.visit_ArrayDecl]  ó   € Ø×"Ñ" 1°EÐ"Ó:Ð:r   c                 ó(   — | j                  |d¬«      S r  r	  r(   s     r   Úvisit_TypeDeclzCGenerator.visit_TypeDecl`  r  r   c                 ó(   — | j                  |d¬«      S r  r	  r(   s     r   Úvisit_PtrDeclzCGenerator.visit_PtrDeclc  r  r   c                 ó®  — |dv r|j                   }| j                  }n7|dk(  sJ ‚|j                  €dn|j                  j                  }| j                  }|dz   |j
                  xs dz   }|�h|dz  }|| j                  «       z  }| xj                  dz  c_        |dz  }| ||«      z  }| xj                  dz  c_        || j                  «       d	z   z  }|S )
zq Generates code for structs, unions, and enums. name should be
            'struct', 'union', or 'enum'.
        )rý   r  r£   Nr   r   r³   rL   r¾   ry   )rŠ   Ú_generate_struct_union_bodyÚvaluesÚenumeratorsÚ_generate_enum_bodyr-   r   r   )r
   r)   r-   ÚmembersÚbody_functionrƒ   s         r   r¥   z&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                 ó8   ‡ — dj                  ˆ fd„|D «       «      S )Nr   c              3   ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wr   rÀ   rˆ   s     €r   r#   z9CGenerator._generate_struct_union_body.<locals>.<genexpr>  s   øè ø€ ÒE°T�t×*Ñ*¨4×0ÑEùr²   ©r$   ©r
   r  s   ` r   r  z&CGenerator._generate_struct_union_body~  s   ø€ Ø�w‰wÓE¸WÔEÓEÐEr   c                 óD   ‡ — dj                  ˆ fd„|D «       «      d d dz   S )Nr   c              3   ó@   •K  — | ]  }‰j                  |«      –— Œ y ­w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�  s$   ø€ à�w‰wÓ>°gÔ>Ó>¸sÀÐCÀdÑJÐJr   c                 ó  — t        |«      }|r| xj                  dz  c_        | j                  «       }|r| xj                  dz  c_        |t        j                  t        j
                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                   fv r|| j#                  |«      z   dz   S |t        j$                  fv r| j#                  |«      S |t        j&                  fv r|| j#                  |«      z   S || j#                  |«      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.
        rL   r¯   r³   )r;   r   r   r   ÚDeclrp   ÚCastÚUnaryOprb   Ú	TernaryOpÚFuncCallÚArrayRefÚ	StructRefÚConstantr  ÚTypedefr{   r   ÚCompoundÚIf)r
   r)   rß   Útypr¬   s        r   rÁ   zCGenerator._generate_stmt…  s  € ô
 �1‹gˆÙ�t×(Ò(¨AÑ-Õ(Ø×"Ñ"Ó$ˆÙ�t×(Ò(¨AÑ-Õ(àÜ—
‘
œE×,Ñ,¬e¯j©j¼%¿-¹-Ü—‘¤§¡´·±ÄÇÁÜ—‘¤§¡´·±¼5¿=¹=Ü—‘ð	 ñ  ð ˜DŸJ™J q›MÑ)¨EÑ1Ð1Ø”U—^‘^Ð%Ñ%ð
 —:‘:˜a“=Ð Ø”U—X‘X�KÑØ˜DŸJ™J q›MÑ)Ð)à˜DŸJ™J q›MÑ)¨DÑ0Ð0r   c                 óT  — d}|j                   rdj                  |j                   «      dz   }|j                  r!|dj                  |j                  «      dz   z  }|j                  r$|| j	                  |j                  d   «      dz   z  }|| j                  |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Œ   € ð ˆØ�:Š:˜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Ø	ˆT× Ñ  §¡Ó(Ñ(ˆØˆr   Tc                 óö  — t        |«      }|t        j                  k(  �rèd}|j                  r!|dj	                  |j                  «      dz   z  }|| j                  |j                   «      z  }|j                  r|r|j                  nd}t        |«      D �]d  \  }}t        |t        j                  «      r�|dk7  r(t        ||dz
     t        j                  «      rd|z   dz   }|dz  }|j                  r!|dj	                  |j                  «      dz   z  }|| j                  |j                  «      dz   z  }Œ¢t        |t        j                  «      rS|dk7  r(t        ||dz
     t        j                  «      rd|z   dz   }|d| j                  |j                  «      z   dz   z  }�Œt        |t        j                  «      s�Œ+|j                  r)d	dj	                  |j                  «      ›|rd|z   nd›�}�Œ`d
|z   }�Œg |r|d|z   z  }|S |t        j                  k(  r| j!                  |j                   «      S |t        j"                  k(  r| j%                  |j                   |¬«      S |t        j&                  k(  rdj	                  |j(                  «      dz   S |t        j                  t        j                  t        j                  fv r"| j%                  |j                   ||gz   |¬«      S | j                  |«      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   r   r   r   r@   rA   r4   r5   z* rY   r“   )r;   r   ÚTypeDeclÚqualsr$   r   ÚdeclnameÚ	enumeratera   Ú	ArrayDeclÚPtrDeclÚ	dim_qualsÚdimÚFuncDeclrB   r"  r   ÚTypenamer�   ÚIdentifierTyperu   )	r
   r)   Ú	modifiersr”   r-  rƒ   ÚnstrÚiÚmodifiers	            r   r�   z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ó *‘��8Ü˜h¬¯©Ô8Ø˜QšÜ" 9¨Q°©UÑ#3´U·]±]ÔCØ#&¨¡:°Ñ#3˜DØ˜C‘K�DØ×)Ò)Ø §¡¨×);Ñ);Ó <¸sÑ BÑB˜Ø˜DŸJ™J x§|¡|Ó4°sÑ:Ñ:‘DÜ ¬%¯.©.Ô9Ø˜QšÜ" 9¨Q°©UÑ#3´U·]±]ÔCØ#&¨¡:°Ñ#3˜DØ˜C $§*¡*¨X¯]©]Ó";Ñ;¸cÑAÑA’DÜ ¬%¯-©-Ö8Ø—~“~Ø+.¯8©8°H·N±NÔ+CÙ9=¨3°ª:À2Ð+Eð Gšð  # T™zšð'*ñ( �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¸A¸3©Ø7Dð 'ó Fð Fð —:‘:˜a“=Ð r   c                 óH   — | j                  |«      } ||«      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.
        r@   rA   )r|   )r
   r)   Ú	conditionrƒ   s       r   rh   zCGenerator._parenthesize_ifâ  s.   € ð ×Ñ˜QÓˆÙ�QŒ<Ø˜‘7˜S‘=Ð àˆHr   c                 ó.   ‡ — ‰ j                  |ˆ fd„«      S )z. Common use case for _parenthesize_if
        c                 ó(   •— ‰j                  | «       S r   )r`   )re   r
   s    €r   rf   z8CGenerator._parenthesize_unless_simple.<locals>.<lambda>ï  s   ø€ °d×6JÑ6JÈ1Ó6MÐ2M€ r   )rh   r(   s   ` r   r6   z&CGenerator._parenthesize_unless_simpleì  s   ø€ ð ×$Ñ$ QÓ(MÓNÐNr   c                 ó°   — t        |t        j                  t        j                  t        j                  t        j
                  t        j                  f«      S )z~ Returns True for nodes that are "simple" - i.e. nodes that always
            have higher precedence than operators.
        )ra   r   r)  r  r'  r(  r&  r(   s     r   r`   zCGenerator._is_simple_nodeñ  s9   € ô ˜!œeŸn™n¬e¯h©h¼¿¹Ü#Ÿo™o¬u¯~©~ð?ó @ð 	@r   N)F)Cr   Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r*   r.   r2   r9   r>   rD   rJ   rc   rm   rs   rv   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   r  r  r
  r  r  r  r¥   r  r  rÁ   r   r�   rh   r6   r`   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>rJ     s   ðõ ôj@�õ j@r   