Ë
    òU.jµP  ã                   ó8   — d dl mZmZmZ ddlmZ  G d„ d«      Zy)é    )ÚCallableÚListÚOptionalé   )Úc_astc            	       óÈ	  — e Zd ZU dZeed<   eed<   djd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
j2                  defd„Zde
j6                  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d/„Zde
j@                  defd0„Z!de
jD                  defd1„Z#de
j                  defd2„Z$djde
jJ                  d3edefd4„Z&de
jN                  defd5„Z(de
jR                  defd6„Z*de
jV                  defd7„Z,de
jZ                  defd8„Z.de
j^                  defd9„Z0de
jb                  defd:„Z2de
jf                  defd;„Z4de
jj                  defd<„Z6de
jn                  defd=„Z8de
jr                  defd>„Z:de
jv                  defd?„Z<de
jz                  defd@„Z>de
j~                  defdA„Z@de
j‚                  defdB„ZBde
j†                  defdC„ZDde
jŠ                  defdD„ZFde
jŽ                  defdE„ZHde
j’                  defdF„ZJde
j–                  defdG„ZLde
jš                  defdH„ZNde
jž                  defdI„ZPde
j¢                  defdJ„ZRde
j¦                  defdK„ZTde
jª                  defdL„ZVde
j®                  defdM„ZXde
j²                  defdN„ZZde
j¶                  defdO„Z\de
jº                  defdP„Z^de
j¾                  defdQ„Z`de
jÂ                  defdR„Zbde
jÆ                  defdS„Zdde
jÊ                  defdT„Zfde
jÎ                  defdU„Zhde
jÒ                  defdV„Zjde
jÖ                  defdW„Zlde
jÚ                  defdX„Znde
jÞ                  defdY„Zpde
jÂ                  e
jÊ                  z  e
jb                  z  dZedefd[„Zqd\ere
j                     defd]„Zsd\ere
jj                     defd^„Ztdjde
j                  d_edefd`„Zude
jJ                  defda„Zvg dbfde
j                  dcere
j                     ddedefde„Zwde
j                  dfexe
j                  gef   defdg„Zyde
j                  defdh„Zzde
j                  defdi„Z{y)kÚ
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_parenthesesÚreturnNc                 ó    — d| _         || _        y)zŠConstructs C-code generator

        reduce_parentheses:
            if True, eliminates needless parentheses on binary operators
        r   N)r
   r   )Úselfr   s     úWC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\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                 ón   — d|j                   j                  z   } t        | || j                  «      |«      S )NÚvisit_)Ú	__class__Ú__name__ÚgetattrÚgeneric_visit)r   r   Ú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Ÿ=¹/ùs   ƒ!)ÚjoinÚchildren)r   r   s   ` r   r   zCGenerator.generic_visit)   s&   ø€ Øˆ<Øà—7‘7ÓJ¸$¿-¹-¼/ÓJÓJÐJr   Únc                 ó   — |j                   S r"   )Úvalue©r   r*   s     r   Úvisit_ConstantzCGenerator.visit_Constant/   s   € Ø�w‰wˆr   c                 ó   — |j                   S r"   ©Únamer-   s     r   Úvisit_IDzCGenerator.visit_ID2   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_Pragma5   s%   € ØˆØ�8Š8Ø�3˜Ÿ™‘>Ñ!ˆCØˆ
r   c                 ó€   — | j                  |j                  «      }|dz   | j                  |j                  «      z   dz   S )NÚ[Ú])Ú_parenthesize_unless_simpler1   r   Ú	subscript)r   r*   Úarrrefs      r   Úvisit_ArrayRefzCGenerator.visit_ArrayRef;   s7   € Ø×1Ñ1°!·&±&Ó9ˆØ˜‰|˜dŸj™j¨¯©Ó5Ñ5¸Ñ;Ð;r   c                 óŽ   — | j                  |j                  «      }||j                  z   | j                  |j                  «      z   S r"   )r:   r1   Útyper   Úfield)r   r*   Úsrefs      r   Úvisit_StructRefzCGenerator.visit_StructRef?   s6   € Ø×/Ñ/°·±Ó7ˆØ�a—f‘f‰}˜tŸz™z¨!¯'©'Ó2Ñ2Ð2r   c                 ó    — | j                  |j                  «      }|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   sG   € Ø×/Ñ/°·±Ó7ˆØ%&§V¡VÐ%7ˆt�z‰z˜!Ÿ&™&Ô!¸RˆØ�c‰z˜DÑ  3Ñ&Ð&r   c                 óN  — |j                   xdk(  r  d| j                  |j                  «      › d�S xdk(  r! | j                  |j                  «      }|› d�S dk(  r | j                  |j                  «      }|› d�S 	 | j                  |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‰dÝð ! §¡¨A¯F©FÓ!3Ð 4°AÐ6Ð6ÝØ×:Ñ:¸1¿6¹6ÓB�Ø!˜ "�~Ð%ÛØ×:Ñ:¸1¿6¹6ÓB�Ø!˜ "�~Ð%ØØ×:Ñ:¸1¿6¹6ÓB�ØŸ$™$˜ ˜yÐ)Ð)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_maprK   ©Údr*   r   s    €€r   Ú<lambda>z+CGenerator.visit_BinaryOp.<locals>.<lambda>|   se   ø€ Ø×$Ñ$ QÓ'ò KØ×*Ñ*ò KÜ˜q¤%§.¡.Ó1òKà×'Ñ'¨¯©Ñ-°×1DÑ1DÀQÇTÁTÑ1JÑJñ	r   c                 óæ   •— ‰j                  | «      xs] ‰j                  xrO t        | t        j                  «      xr3 ‰j
                  | j                     ‰j
                  ‰j                     kD   S r"   rc   rh   s    €€r   rj   z+CGenerator.visit_BinaryOp.<locals>.<lambda>Œ   se   ø€ Ø×$Ñ$ QÓ'ò JØ×*Ñ*ò JÜ˜q¤%§.¡.Ó1òJà×'Ñ'¨¯©Ñ-°×0CÑ0CÀAÇDÁDÑ0IÑIñ	r   r   )Ú_parenthesize_ifÚleftÚrightrK   )r   r*   Úlval_strÚrval_strs   ``  r   Úvisit_BinaryOpzCGenerator.visit_BinaryOpp   s\   ù€ ð ×(Ñ(Ø�F‰Fôó
ˆð  ×(Ñ(Ø�G‰Gôó
ˆð �˜1˜QŸT™T˜F ! H :Ð.Ð.r   c                 ó–   — | j                  |j                  d„ «      }| j                  |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•   sG   € Ø×(Ñ(Ø�H‰HÑ?ó
ˆð —*‘*˜QŸX™XÓ&Ð' q¨¯©¨¨a°¨zÐ:Ð:r   c                 ó8   — dj                  |j                  «      S r   )r(   Únamesr-   s     r   Úvisit_IdentifierTypezCGenerator.visit_IdentifierType›   s   € Ø�x‰x˜Ÿ™Ó Ð r   c                 ó  — |xt         j                  d˜ x�\    d| j                  |«      z   dz   S  xt         j                  d˜ x�\   n xt         j                  d˜ x�\   n  n d| j                  |«      z   dz   S 	 | j                  |«      S )N© Ú{Ú}rD   rE   )r   ÚInitListr   ÚExprListÚCompoundr-   s     r   Ú_visit_exprzCGenerator._visit_exprž   sr   € ØØ!”—‘Ö!Ø˜TŸZ™Z¨›]Ñ*¨SÑ0Ð0ð "à!”—‘×!Ð$4¤E§N¡N×$4Ò4Ø˜TŸZ™Z¨›]Ñ*¨SÑ0Ð0ØØ—z‘z !“}Ð$r   Úno_typec                 óø   — |r|j                   n| j                  |«      }|j                  r!|d| j                  |j                  «      z   z  }|j                  r!|d| j                  |j                  «      z   z  }|S )Nz : ú = )r1   Ú_generate_declÚbitsizer   Úinitr‚   )r   r*   rƒ   Úss       r   Ú
visit_DeclzCGenerator.visit_Decl§   si   € ñ ˆA�FŠF 4×#6Ñ#6°qÓ#9ˆØ�9Š9Ø�˜Ÿ™ A§I¡IÓ.Ñ.Ñ.ˆ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"   øè ø€ ð "Ù@K¸�—‘ ¨d�×3Áùs   ƒ )r   ÚdeclsÚlenr(   ©r   r*   r‰   s   `  r   Úvisit_DeclListzCGenerator.visit_DeclList²   sc   ø€ Ø�J‰J�q—w‘w˜q‘zÓ"ˆÜˆq�w‰w‹<˜!ÒØ�˜Ÿ	™	ó "Ø@AÇÁÈÈÁó"ó ñ ñ ˆ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º   sH   € ØˆØ�9Š9Ø�—‘˜!Ÿ)™)Ó$ sÑ*Ñ*ˆAØ	ˆT× Ñ  §¡Ó(Ñ(ˆØˆr   c                 óŠ   — d| j                  |j                  d¬«      z   dz   }|dz   | j                  |j                  «      z   S )NrD   F©Úemit_declnamerE   r   )r–   Úto_typer:   rL   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_subexprsrL   s       r   Úvisit_ExprListzCGenerator.visit_ExprListÅ   ó?   € ØÐØ—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Úenumr0   ©Ú_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},
)Úindentr1   z{indent}{name} = {value},
)r²   r1   r,   )r,   r®   r   r1   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§-¹ùó   ƒÚ
)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 ]v  }|xt        j                  d˜ x�\    || j                  |«      z  }Œ0 t        j                  d˜ x�\   || j                  |«      dz   z  }Œ^ 	 || j                  |«      dz   z  }Œx |S )Nr    r|   r¹   rµ   )Úextr   ÚFuncDefr   ÚPragma)r   r*   r‰   r¿   s       r   Úvisit_FileASTzCGenerator.visit_FileASTî   s€   € ØˆØ—5”5ˆCØØ$”U—]‘]–_Ø˜Ÿ™ C›Ñ(‘Að %ä—\‘\•^Ø˜Ÿ™ C›¨4Ñ/Ñ/‘Að $àØ˜Ÿ™ C›¨5Ñ0Ñ0‘Að ð ˆ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ú{
rP   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¹}ù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 )NrD   z){r~   )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|   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×*¹ù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 )Nr   r   rÎ   )rL   r   r’   s      r   Úvisit_ReturnzCGenerator.visit_Return  s3   € ØˆØ�6Š6Ø��t—z‘z !§&¡&Ó)Ñ)Ñ)ˆAØ�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 )NrD   z) ? z) : rE   )r‚   ÚcondÚiftrueÚiffalser’   s      r   Úvisit_TernaryOpzCGenerator.visit_TernaryOp  sk   € Ø�$×"Ñ" 1§6¡6Ó*Ñ*¨VÑ3ˆØ	ˆ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Ø�—‘˜AŸF™FÓ#Ñ#ˆAØ	ˆ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Ø�—‘˜AŸF™FÓ#Ñ#ˆAØ	ˆS‰ˆØ�6Š6Ø��t—z‘z !§&¡&Ó)Ñ)Ñ)ˆAØ	ˆS‰ˆØ�6Š6Ø��t—z‘z !§&¡&Ó)Ñ)Ñ)ˆAØ	ˆ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_While7  sQ   € ØˆØ�6Š6Ø�—‘˜AŸF™FÓ#Ñ#ˆAØ	ˆ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?  si   € ØˆØ	ˆT× Ñ  §¡°DÐ Ó9Ñ9ˆØ	ˆT×ÑÓ  9Ñ,Ñ,ˆØ�6Š6Ø�—‘˜AŸF™FÓ#Ñ#ˆAØ	ˆT‰	ˆØˆr   c                 ó®   — d}|| j                  |j                  «      z  }|j                  r#|dz  }|| j                  |j                  «      z  }|dz  }|S )Nz_Static_assert(Ú,rE   )r   rÜ   Úmessager’   s      r   Úvisit_StaticAssertzCGenerator.visit_StaticAssertH  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_SwitchQ  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   rL   ÚstmtsrÇ   ©r   r*   r‰   rÈ   s       r   Ú
visit_CasezCGenerator.visit_CaseV  sK   € Ø�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_Default\  s4   € ØˆØ—G”GˆDØ�×$Ñ$ T°dÐ$Ó;Ñ;‰Að àˆr   c                 óX   — |j                   dz   | j                  |j                  «      z   S )Nrô   )r1   rÇ   rÈ   r-   s     r   Úvisit_LabelzCGenerator.visit_Labelb  s$   € Ø�v‰v˜‰~ × 3Ñ 3°A·F±FÓ ;Ñ;Ð;r   c                 ó&   — d|j                   z   dz   S )Nzgoto rÎ   r0   r-   s     r   Ú
visit_GotozCGenerator.visit_Gotoe  s   € Ø˜Ÿ™Ñ #Ñ%Ð%r   c                  ó   — y)Nz...r|   r-   s     r   Úvisit_EllipsisParamzCGenerator.visit_EllipsisParamh  s   € Ør   c                 ó&   — | j                  |d«      S )NÚstructrª   r-   s     r   Úvisit_StructzCGenerator.visit_Structk  s   € Ø×/Ñ/°°8Ó<Ð<r   c                 ó8   — | j                  |j                  «      S r"   )r–   r?   r-   s     r   Úvisit_TypenamezCGenerator.visit_Typenamen  s   € Ø×"Ñ" 1§6¡6Ó*Ð*r   c                 ó&   — | j                  |d«      S )NÚunionrª   r-   s     r   Úvisit_UnionzCGenerator.visit_Unionq  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    Ú.r8   r9   r…   )r1   re   r   ÚIDr   r‚   rL   )r   r*   r‰   r1   s       r   Úvisit_NamedInitializerz!CGenerator.visit_NamedInitializert  sw   € ØˆØ—F”FˆDÜ˜$¤§¡Ô)Ø�S˜4Ÿ9™9‘_Ñ$‘à�S˜4Ÿ:™: dÓ+Ñ+¨cÑ1Ñ1‘ð	 ð
 	
ˆU�T×%Ñ% a§f¡fÓ-Ñ-Ñ-ˆØˆr   c                 ó$   — | j                  |«      S r"   ©r–   r-   s     r   Úvisit_FuncDeclzCGenerator.visit_FuncDecl~  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_PtrDecl‡  r  r   r1   c                 ó>  — |dv rEt        |t        j                  t        j                  f«      sJ ‚|j                  }| j
                  }nS|dk(  sJ ‚t        |t        j                  «      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 )
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ˆGØ ×<Ñ<‰Mà˜6’>Ð!�>Ü˜a¤§¡Ô,Ð,Ð,ØŸ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   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¹W°T�t×*Ñ*¨4×0¹Wù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   øè ø€ Ð>±g¨U�t—z‘z %×(±gùr¸   éþÿÿÿr¹   r#  r$  s   ` r   r  zCGenerator._generate_enum_body©  s$   ø€ à�w‰wÓ>±gÓ>Ó>¸sÀÐCÀdÑJÐJr   rã   c                 ó  — |r| xj                   dz  c_         | j                  «       }|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�\   n{ xt        j                  d˜ x�\   nc xt        j                  d˜ x�\   nK xt        j                  d˜ x�\   n3 xt        j                  d˜ x�\   n xt        j                  d˜ x�\   n  n  || j!                  |«      z   dz   S xt        j"                  d˜ x�\    | j!                  |«      S  t        j$                  d˜ x�\   || 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.
        rP   r|   rµ   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                 ó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�   € àˆØ�:Š:Ø—‘˜Ÿ™Ó$ sÑ*ˆAØ�9Š9Ø�—‘˜!Ÿ)™)Ó$ sÑ*Ñ*ˆAØ�7Š7Ø�—‘˜AŸG™G A™JÓ'¨#Ñ-Ñ-ˆAØ	ˆT× Ñ  §¡Ó(Ñ(ˆØˆr   TÚ	modifiersrš   c                 óv  — |xt         j                  d˜ x��\    d}|j                  r!|dj                  |j                  «      dz   z  }|| j	                  |j
                  «      z  }|j                  r|r|j                  nd}t        |«      D �]  \  }}|xt         j                  d˜ x�’\    |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	                  |j                  «      z  }|d	z  }Œ® xt         j                  d˜ x�f\    |dk7  r(t        ||dz
     t         j                  «      rd|z   dz   }|j                  �| j	                  |j                  «      nd}|d|z   dz   z  }�Œ) t         j                  d˜ x�B\   |j                  r-dj                  |j                  «      }	|rd|› �nd}
d
|	› |
› �}�Œxd|z   }�Œ �Œ‚ |r|d|z   z  }|S  xt         j                  d˜ x�\    | j!                  |j
                  «      S  xt         j"                  d˜ x� \    | j%                  |j
                  |¬«      S  xt         j&                  d˜ x�!\    dj                  |j(                  «      dz   S  xt         j                  d˜ x�\   n3 xt         j                  d˜ x�\   n xt         j                  d˜ x�\   n  n# | 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   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*   r6  rš   r‰   ÚnstrÚiÚmodifierrF   r9  Úsuffixs              r   r–   zCGenerator._generate_typeã  sÙ  € ð Ø!”—‘×!Ø�Ø—7’7Ø˜Ÿ™ !§'¡'Ó*¨SÑ0Ñ0�AØ�T—Z‘Z §¡Ó'Ñ'�à%&§Z¢Z±M�q—z’zÀr�ô
 $-¨Y×#7‘K�A�xØ"Ø.œUŸ_™_Ö.Ø  Ašv¬*°Y¸qÀ1¹uÑ5EÄuÇ}Á}Ô*UØ'*¨T¡z°CÑ'7 Ø  C™K˜DØ'×1Ò1Ø $¨¯©°×1CÑ1CÓ(DÀsÑ(JÑ J Ø'Ÿ|™|Ð7Ø $¨¯
©
°8·<±<Ó(@Ñ @ Ø  C™K™Dð /ð .œUŸ^™^Ö-Ø  Ašv¬*°Y¸qÀ1¹uÑ5EÄuÇ}Á}Ô*UØ'*¨T¡z°CÑ'7 ð $,§=¡=Ð#<ð !%§
¡
¨8¯=©=Ô 9à%'ð !ð
 ! C¨$¡J°Ñ$4Ñ4šDð .ô #Ÿ]™]�_Ø'Ÿ~š~Ø(+¯©°·±Ó(@ Ù7;¨1¨T¨F©À Ø)+¨E¨7°6°(Ð';¢à'*¨T¡z¢ò -ð) $8ñ6 Ø˜˜t™‘O�AØ�ðQ "ðR ”—‘–Ø×*Ñ*¨1¯6©6Ó2Ð2ð à!”—‘Ö!Ø×*Ñ*¨1¯6©6ÀÐ*ÓOÐOð "à'”×%Ñ%Ö'Ø—x‘x §¡Ó(¨3Ñ.Ð.ð (à"”—‘×" _¤U§]¡]§_Ð7G´u·~±~×7GÒGØ×*Ñ*Ø—F‘F˜I¨¨™O¸=ð +ó ð ð Ø—z‘z !“}Ð$r   Ú	conditionc                 ó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.
        rD   rE   )r‚   )r   r*   rG  r‰   s       r   rl   zCGenerator._parenthesize_if&  s.   € ð ×Ñ˜QÓˆÙ�QŒ<Ø˜‘7˜S‘=Ð àˆHr   c                 ó.   ‡ — ‰ j                  |ˆ fd„«      S )z$Common use case for _parenthesize_ifc                 ó(   •— ‰j                  | «       S r"   )rd   )ri   r   s    €r   rj   z8CGenerator._parenthesize_unless_simple.<locals>.<lambda>4  s   ø€ °d×6JÑ6JÈ1Ó6MÑ2Mr   )rl   r-   s   ` r   r:   z&CGenerator._parenthesize_unless_simple2  s   ø€ à×$Ñ$ QÓ(MÓ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   r0  r
  r.  r/  r-  r-   s     r   rd   zCGenerator._is_simple_node6  s6   € ô ØÜ�^‰^œUŸX™X¤u§~¡~´u·±ÌÏÉÐWó
ð 	
r   )F)|r   Ú
__module__Ú__qualname__Ú__doc__ÚintÚ__annotations__Úboolr   Ústrr   r   ÚNoder   r   r   r0  r.   r
  r2   rÁ   r6   r.  r=   r/  rB   r-  rH   r+  rN   rg   rf   rq   rt   rw   rB  rz   r‚   r)  rŠ   ÚDeclListr“   r1  r—   r*  rœ   r€   r¤   r   r§   r  r¬   ÚAlignasr°   Ú
Enumeratorr³   rÀ   r½   ÚFileASTrÂ   r�   rÊ   ÚCompoundLiteralrÌ   ÚEmptyStatementrÏ   Ú	ParamListrÔ   ÚReturnrÖ   ÚBreakrØ   ÚContinuerÚ   r,  rß   r2  rä   ÚForrç   ÚWhilerê   ÚDoWhilerì   ÚStaticAssertrð   ÚSwitchrò   ÚCaser÷   ÚDefaultrù   ÚLabelrû   ÚGotorý   ÚEllipsisParamrÿ   r  r  rA  r  r  r  ÚNamedInitializerr  r@  r  r<  r  r8  r  r=  r  r«   r   r  r  rÇ   r†   r–   r   rl   r:   rd   r|   r   r   r	   r	      s%  … ñð
 ÓØÓñ	5¨4ð 	5¸Dó 	5ð'˜có 'ð?˜%Ÿ*™*ð ?¨ó ?ðK (¨5¯:©:Ñ"6ð K¸3ó Kð §¡ð °3ó ð˜%Ÿ(™(ð  só ð˜eŸl™lð ¨só ð< §¡ð <°3ó <ð3 §¡ð 3°Só 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Ñ"2ð ;°só ;ð! e×&:Ñ&:ð !¸só !ð%˜UŸZ™Zð %¨Có %ñ	˜EŸJ™Jð 	°ð 	À#ó 	ð §¡ð °3ó ð˜uŸ}™}ð °ó ðB˜EŸJ™Jð B¨3ó Bð+ §¡ð +°3ó +ð+ §¡ð +°3ó +ð@˜EŸJ™Jð @¨3ó @ð>˜uŸ}™}ð >°ó >ð %×"2Ñ"2ð °só ð-˜uŸ}™}ð -°ó -ð
˜uŸ}™}ð 
°ó 
ð §¡ð °3ó ðJ u×'<Ñ'<ð JÀó Jð e×&:Ñ&:ð ¸só ðB §¡ð B°Só Bð˜eŸl™lð ¨só ð˜UŸ[™[ð ¨Só ð §¡ð °3ó ð §¡ð °Só ð	˜%Ÿ(™(ð 	 só 	ð˜5Ÿ9™9ð ¨ó ð˜UŸ[™[ð ¨Só ð˜uŸ}™}ð °ó ð E×$6Ñ$6ð ¸3ó ð˜eŸl™lð ¨só ð
˜EŸJ™Jð ¨3ó ð˜uŸ}™}ð °ó ð<˜UŸ[™[ð <¨Só <ð&˜EŸJ™Jð &¨3ó &ð U×%8Ñ%8ð ¸Só ð=˜eŸl™lð =¨só =ð+ §¡ð +°3ó +ð<˜UŸ[™[ð <¨Só <ð¨×(>Ñ(>ð À3ó ð& §¡ð &°3ó &ð; §¡ð ;°Só ;ð; §¡ð ;°3ó ;ð;˜uŸ}™}ð ;°ó ;ðØ—‘ §¡Ñ+¨e¯j©jÑ8ðØ@Cðà	óð8F°4¸¿
¹
Ñ3Cð FÈó FðK¨4°×0@Ñ0@Ñ+Að KÀcó Kñ(5 §
¡
ð (5¸ð (5Èó (5ðT
 §
¡
ð 
¨só 
ð ')Ø"ñ	A%à�:‰:ðA%ð ˜Ÿ
™
Ñ#ðA%ð ð	A%ð
 
óA%ðF
Ø—‘ð
Ø(0°%·*±*°¸tÐ1CÑ(Dð
à	ó
ðO¨U¯Z©Zð O¸Có Oð
 §¡ð 
°ô 
r   r	   N)Útypingr   r   r   r    r   r	   r|   r   r   Ú<module>rj     s   ð÷ ,Ñ +å ÷o
ò o
r   