+
    iP                     :    ^ RI HtHtHt ^RIHt  ! R R4      tR# )    )CallableListOptional)c_astc                     a  ] tR t^t o RtRV 3R lR lltV 3R lR ltV 3R lR ltV 3R lR	 ltV 3R
 lR lt	V 3R lR lt
V 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR lt/ R^ bR^bR^bR^bR^bR^bR^bR^bR ^bR!^bR"^bR#^bR$^bR%^bR&^bR'^	bR(^	bR)^	/CtV 3R* lR+ ltV 3R, lR- ltV 3R. lR/ ltV 3R0 lR1 ltRV 3R2 lR3 lltV 3R4 lR5 ltV 3R6 lR7 ltV 3R8 lR9 ltV 3R: lR; ltV 3R< lR= ltV 3R> lR? ltV 3R@ lRA ltV 3RB lRC ltV 3RD lRE ltV 3RF lRG ltV 3RH lRI lt V 3RJ lRK lt!V 3RL lRM lt"V 3RN lRO lt#V 3RP lRQ lt$V 3RR lRS lt%V 3RT lRU lt&V 3RV lRW lt'V 3RX lRY lt(V 3RZ lR[ lt)V 3R\ lR] lt*V 3R^ lR_ lt+V 3R` lRa lt,V 3Rb lRc lt-V 3Rd lRe lt.V 3Rf lRg lt/V 3Rh lRi lt0V 3Rj lRk lt1V 3Rl lRm lt2V 3Rn lRo lt3V 3Rp lRq lt4V 3Rr lRs lt5V 3Rt lRu lt6V 3Rv lRw lt7V 3Rx lRy lt8V 3Rz lR{ lt9V 3R| lR} lt:V 3R~ lR lt;V 3R lR lt<V 3R lR lt=RV 3R lR llt>V 3R lR lt?. R3V 3R lR llt@V 3R lR ltAV 3R lR ltBV 3R lR ltCV 3R ltDRtEV tFR# )
CGeneratorzUses 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                $   < V ^8  d   QhRS[ RR/# )   reduce_parenthesesreturnN)bool)format__classdict__s   "\/home/wkmabra/.openclaw/workspace/venv/lib/python3.14/site-packages/pycparser/c_generator.py__annotate__CGenerator.__annotate__   s     	5 	54 	5D 	5    c                     ^ V n         Wn        R# )zrConstructs C-code generator

reduce_parentheses:
    if True, eliminates needless parentheses on binary operators
Nindent_levelr   )selfr   s   &&r   __init__CGenerator.__init__   s     "4r   c                    < V ^8  d   QhRS[ /# )r
   r   )str)r   r   s   "r   r   r   "   s     ' 'c 'r   c                (    R V P                   ,          #  )r   )r   s   &r   _make_indentCGenerator._make_indent"   s    T&&&&r   c                :   < V ^8  d   QhRS[ P                  RS[/# r
   noder   r   Noder   )r   r   s   "r   r   r   %   s     ? ?%** ? ?r   c                t    R VP                   P                  ,           p\        WV P                  4      ! V4      # )visit_)	__class____name__getattrgeneric_visit)r   r#   methods   && r   visitCGenerator.visit%   s.    DNN333tT%7%78>>r   c                J   < V ^8  d   QhRS[ S[P                  ,          RS[/# r"   )r   r   r%   r   )r   r   s   "r   r   r   )   s(     K K(5::"6 K3 Kr   c                b   a  Vf   R# RP                  V 3R lVP                  4        4       4      # )N c              3   J   <"   T F  w  rSP                  V4      x  K  	  R # 5iNr-   ).0c_namecr   s   &  r   	<genexpr>+CGenerator.generic_visit.<locals>.<genexpr>-   s     J/YV4::a==/    #)joinchildren)r   r#   s   f&r   r+   CGenerator.generic_visit)   s&    <77J$--/JJJr   c                :   < V ^8  d   QhRS[ P                  RS[/# r
   nr   )r   Constantr   )r   r   s   "r   r   r   /   s       3 r   c                    VP                   # r3   )valuer   r@   s   &&r   visit_ConstantCGenerator.visit_Constant/   s    wwr   c                :   < V ^8  d   QhRS[ P                  RS[/# r?   )r   IDr   )r   r   s   "r   r   r   2   s      %(( s r   c                    VP                   # r3   namerD   s   &&r   visit_IDCGenerator.visit_ID2   s    vvr   c                :   < V ^8  d   QhRS[ P                  RS[/# r?   )r   Pragmar   )r   r   s   "r   r   r   5   s      ell s r   c                b    R pVP                   '       d   VRVP                   ,           ,          pV# )z#pragmar   )string)r   r@   rets   && r   visit_PragmaCGenerator.visit_Pragma5   s'    8883>!C
r   c                :   < V ^8  d   QhRS[ P                  RS[/# r?   )r   ArrayRefr   )r   r   s   "r   r   r   ;   s     < < <3 <r   c                    V P                  VP                  4      pVR ,           V P                  VP                  4      ,           R,           # )[])_parenthesize_unless_simplerK   r-   	subscript)r   r@   arrrefs   && r   visit_ArrayRefCGenerator.visit_ArrayRef;   s7    11!&&9|djj55;;r   c                :   < V ^8  d   QhRS[ P                  RS[/# r?   )r   	StructRefr   )r   r   s   "r   r   r   ?   s     3 3 3S 3r   c                    V P                  VP                  4      pW!P                  ,           V P                  VP                  4      ,           # r3   )rZ   rK   typer-   field)r   r@   srefs   && r   visit_StructRefCGenerator.visit_StructRef?   s4    //7ff}tzz!''222r   c                :   < V ^8  d   QhRS[ P                  RS[/# r?   )r   FuncCallr   )r   r   s   "r   r   r   C   s     ' ' '3 'r   c                    V P                  VP                  4      pVP                  e   V P                  VP                  4      MRpVR,           V,           R,           # )Nr1   ())rZ   rK   argsr-   )r   r@   frefrl   s   &&  r   visit_FuncCallCGenerator.visit_FuncCallC   sG    //7%&VV%7tzz!&&!RczD 3&&r   c                :   < V ^8  d   QhRS[ P                  RS[/# r?   )r   UnaryOpr   )r   r   s   "r   r   r   H   s     * *u}} * *r   c                Z   VP                   ;R 8X  d!    RV P                  VP                  4       R2# ;R8X  d"    V P                  VP                  4      pV R2# R8X  d!   V P                  VP                  4      pV R2#  V P                  VP                  4      pVP                    V 2# )sizeofzsizeof(rk   zp++z++zp--z--)opr-   exprrZ   )r   r@   operands   && r   visit_UnaryOpCGenerator.visit_UnaryOpH   s    dd !AFF!3 4A66::166B!"~%::166B!"~%::166B$$y))r   z||z&&|^&z==z!=>z>=<z<=z>>z<<+-*/%c                :   < V ^8  d   QhRS[ P                  RS[/# r?   )r   BinaryOpr   )r   r   s   "r   r   r   p   s     #/ #/ #/3 #/r   c                   a a S P                  SP                  VV 3R  l4      pS P                  SP                  VV 3R l4      pV RSP                   RV 2# )c                 "  < SP                  V 4      ;'       gr    SP                  ;'       d^    \        V \        P                  4      ;'       d<    SP
                  V P                  ,          SP
                  SP                  ,          8  '       * # r3   _is_simple_noder   
isinstancer   r   precedence_maprt   dr@   r   s   &r   <lambda>+CGenerator.visit_BinaryOp.<locals>.<lambda>|   sw    $$Q' K K** K Kq%..1K K''-1D1DQTT1JJ	r   c                 "  < SP                  V 4      ;'       gr    SP                  ;'       d^    \        V \        P                  4      ;'       d<    SP
                  V P                  ,          SP
                  SP                  ,          8  '       * # r3   r   r   s   &r   r   r      sw    $$Q' J J** J Jq%..1J J''-0C0CADD0II	r   r   )_parenthesize_ifleftrightrt   )r   r@   lval_strrval_strs   ff  r   visit_BinaryOpCGenerator.visit_BinaryOpp   s\     ((FF
  ((GG
 1QTTF!H:..r   c                :   < V ^8  d   QhRS[ P                  RS[/# r?   )r   
Assignmentr   )r   r   s   "r   r   r      s!     ; ;%"2"2 ;s ;r   c                    V P                  VP                  R  4      pV P                  VP                  4       RVP                   RV 2# )c                 6    \        V \        P                  4      # r3   )r   r   r   )r@   s   &r   r   -CGenerator.visit_Assignment.<locals>.<lambda>   s    
1e.>.> ?r   r   )r   rvaluer-   lvaluert   )r   r@   r   s   && r   visit_AssignmentCGenerator.visit_Assignment   sG    ((HH?
 **QXX&'qaz::r   c                :   < V ^8  d   QhRS[ P                  RS[/# r?   )r   IdentifierTyper   )r   r   s   "r   r   r      s!     ! !e&:&: !s !r   c                8    R P                  VP                  4      # r   )r;   namesrD   s   &&r   visit_IdentifierTypeCGenerator.visit_IdentifierType   s    xx  r   c                :   < V ^8  d   QhRS[ P                  RS[/# r?   r$   )r   r   s   "r   r   r      s     % %UZZ %C %r   c                F   T;\         P                  R c ;e#   w    RV P                  V4      ,           R,           #  ;\         P                  R c ;e   w   M ;\         P                  R c ;e   w   M  M  RV P                  V4      ,           R,           #  V P                  V4      # ) {}rj   rk   )r   InitListr-   ExprListCompoundrD   s   &&r   _visit_exprCGenerator._visit_expr   sx    !!TZZ]*S00 "!!!$4ENN$4$44TZZ]*S00zz!}$r   c                @   < V ^8  d   QhRS[ P                  RS[RS[/# )r
   r@   no_typer   )r   Declr   r   )r   r   s   "r   r   r      s&     	 	EJJ 	 	# 	r   c                <   V'       d   VP                   MV P                  V4      pVP                  '       d*   VR V P                  VP                  4      ,           ,          pVP                  '       d*   VRV P                  VP                  4      ,           ,          pV# )z :  = )rK   _generate_declbitsizer-   initr   )r   r@   r   ss   &&& r   
visit_DeclCGenerator.visit_Decl   sm     AFF4#6#6q#9999AII...A666))!&&111Ar   c                :   < V ^8  d   QhRS[ P                  RS[/# r?   )r   DeclListr   )r   r   s   "r   r   r      s       3 r   c                   a  S P                  VP                  ^ ,          4      p\        VP                  4      ^8  d;   VRRP                  V 3R lVP                  R,           4       4      ,           ,          pV# )r   , c              3   J   <"   T F  pSP                  VR R7      x  K  	  R# 5i)T)r   N)r   r5   declr   s   & r   r8   ,CGenerator.visit_DeclList.<locals>.<genexpr>   s$      "@Kd33r:   :   NN)r-   declslenr;   r   r@   r   s   f& r   visit_DeclListCGenerator.visit_DeclList   sa    JJqwwqz"qww<!		 "@A"   A r   c                :   < V ^8  d   QhRS[ P                  RS[/# r?   )r   Typedefr   )r   r   s   "r   r   r      s      u}}  r   c                    R pVP                   '       d*   VRP                  VP                   4      R,           ,          pW P                  VP                  4      ,          pV# )r1   r   )storager;   _generate_typerb   r   s   && r   visit_TypedefCGenerator.visit_Typedef   sH    999!))$s**A	  ((r   c                :   < V ^8  d   QhRS[ P                  RS[/# r?   )r   Castr   )r   r   s   "r   r   r      s#     B BEJJ B3 Br   c                    R V P                  VP                  RR7      ,           R,           pVR,           V P                  VP                  4      ,           # )rj   Femit_declnamerk   r   )r   to_typerZ   ru   r   s   && r   
visit_CastCGenerator.visit_Cast   sC    $%%aiiu%EEK3w99!&&AAAr   c                :   < V ^8  d   QhRS[ P                  RS[/# r?   )r   r   r   )r   r   s   "r   r   r           + + +3 +r   c                    . pVP                    F#  pVP                  V P                  V4      4       K%  	  R P                  V4      # r   exprsappendr   r;   r   r@   visited_subexprsru   s   &&  r   visit_ExprListCGenerator.visit_ExprList   ?    GGD##D$4$4T$:; yy)**r   c                :   < V ^8  d   QhRS[ P                  RS[/# r?   )r   r   r   )r   r   s   "r   r   r      r   r   c                    . pVP                    F#  pVP                  V P                  V4      4       K%  	  R P                  V4      # r   r   r   s   &&  r   visit_InitListCGenerator.visit_InitList   r   r   c                :   < V ^8  d   QhRS[ P                  RS[/# r?   )r   Enumr   )r   r   s   "r   r   r      s#     @ @EJJ @3 @r   c                (    V P                  VR R7      # )enumrJ   _generate_struct_union_enumrD   s   &&r   
visit_EnumCGenerator.visit_Enum   s    ///??r   c                :   < V ^8  d   QhRS[ P                  RS[/# r?   )r   Alignasr   )r   r   s   "r   r   r      s     > >u}} > >r   c                V    R P                  V P                  VP                  4      4      # )z_Alignas({}))r   r-   	alignmentrD   s   &&r   visit_AlignasCGenerator.visit_Alignas   s     $$TZZ%<==r   c                :   < V ^8  d   QhRS[ P                  RS[/# r?   )r   
Enumeratorr   )r   r   s   "r   r   r      s!      %"2"2 s r   c                   VP                   '       g,   R P                  V P                  4       VP                  R7      # RP                  V P                  4       VP                  V P	                  VP                   4      R7      # )z{indent}{name},
)indentrK   z{indent}{name} = {value},
)r   rK   rC   )rC   r   r   rK   r-   rD   s   &&r   visit_EnumeratorCGenerator.visit_Enumerator   ss    www&--((*VV .  
 177((*VVjj) 8  r   c                :   < V ^8  d   QhRS[ P                  RS[/# r?   )r   FuncDefr   )r   r   s   "r   r   r      s     - -u}} - -r   c                d  a  S P                  VP                  4      p^ S n        S P                  VP                  4      pVP                  '       dK   RP                  V 3R lVP                   4       4      pVR,           V,           R,           V,           R,           # VR,           V,           R,           # )r   ;
c              3   F   <"   T F  pSP                  V4      x  K  	  R # 5ir3   r4   )r5   pr   s   & r   r8   +CGenerator.visit_FuncDef.<locals>.<genexpr>   s     !GA$**Q--   !
)r-   r   r   bodyparam_declsr;   )r   r@   r   r  knrdeclss   f&   r   visit_FuncDefCGenerator.visit_FuncDef   s    zz!&&!zz!&&!===zz!G!GGH$;)E1D84??$;%,,r   c                :   < V ^8  d   QhRS[ P                  RS[/# r?   )r   FileASTr   )r   r   s   "r   r   r      s     
 
u}} 
 
r   c                F   R pVP                    F  pT;\        P                  Rc ;e   w    W P                  V4      ,          pK6   \        P                  Rc ;e#   w   W P                  V4      R,           ,          pKn    W P                  V4      R,           ,          pK  	  V# )r1   r   r  r   )extr   r   r-   rO   )r   r@   r   r  s   &&  r   visit_FileASTCGenerator.visit_FileAST   sz    55C$U]]_C(A %\\^C4//A $C500A  r   c                :   < V ^8  d   QhRS[ P                  RS[/# r?   )r   r   r   )r   r   s   "r   r   r      s       3 r   c                R  a  S P                  4       R ,           pS ;P                  ^,          un        VP                  '       d-   VRP                  V 3R lVP                   4       4      ,          pS ;P                  ^,          un        VS P                  4       R,           ,          pV# ){
r1   c              3   F   <"   T F  pSP                  V4      x  K  	  R # 5ir3   _generate_stmt)r5   stmtr   s   & r   r8   ,CGenerator.visit_Compound.<locals>.<genexpr>   s     M}t,,T22}r  z}
)r   r   block_itemsr;   r   s   f& r   visit_CompoundCGenerator.visit_Compound   s{    %'Q===Mq}}MMMAQ	T 5((r   c                :   < V ^8  d   QhRS[ P                  RS[/# r?   )r   CompoundLiteralr   )r   r   s   "r   r   r     s%     J Ju'<'< J Jr   c                    R V P                  VP                  4      ,           R,           V P                  VP                  4      ,           R,           # )rj   z){r   )r-   rb   r   rD   s   &&r   visit_CompoundLiteral CGenerator.visit_CompoundLiteral  s6    TZZ''$.AFF1CCcIIr   c                :   < V ^8  d   QhRS[ P                  RS[/# r?   )r   EmptyStatementr   )r   r   s   "r   r   r     s!      e&:&: s r   c                    R # );r   rD   s   &&r   visit_EmptyStatementCGenerator.visit_EmptyStatement  s    r   c                :   < V ^8  d   QhRS[ P                  RS[/# r?   )r   	ParamListr   )r   r   s   "r   r   r   	  s#     B B BS Br   c                N   a  R P                  V 3R lVP                   4       4      # )r   c              3   F   <"   T F  pSP                  V4      x  K  	  R # 5ir3   r4   )r5   paramr   s   & r   r8   -CGenerator.visit_ParamList.<locals>.<genexpr>
  s     AuE**r  )r;   paramsrD   s   f&r   visit_ParamListCGenerator.visit_ParamList	  s    yyAAAAr   c                :   < V ^8  d   QhRS[ P                  RS[/# r?   )r   Returnr   )r   r   s   "r   r   r     s      ell s r   c                    R pVP                   '       d*   VRV P                  VP                   4      ,           ,          pVR,           # )r   r   r#  )ru   r-   r   s   && r   visit_ReturnCGenerator.visit_Return  s5    666tzz!&&)))A3wr   c                :   < V ^8  d   QhRS[ P                  RS[/# r?   )r   Breakr   )r   r   s   "r   r   r     s      U[[ S r   c                    R # )zbreak;r   rD   s   &&r   visit_BreakCGenerator.visit_Break  s    r   c                :   < V ^8  d   QhRS[ P                  RS[/# r?   )r   Continuer   )r   r   s   "r   r   r     s       3 r   c                    R # )z	continue;r   rD   s   &&r   visit_ContinueCGenerator.visit_Continue  s    r   c                :   < V ^8  d   QhRS[ P                  RS[/# r?   )r   	TernaryOpr   )r   r   s   "r   r   r     s       S r   c                   R V P                  VP                  4      ,           R,           pVR V P                  VP                  4      ,           R,           ,          pVR V P                  VP                  4      ,           R,           ,          pV# )rj   z) ? z) : rk   )r   condiftrueiffalser   s   && r   visit_TernaryOpCGenerator.visit_TernaryOp  sk    $""166**V3	S4##AHH--66	S4##AII..44r   c                :   < V ^8  d   QhRS[ P                  RS[/# r?   )r   Ifr   )r   r   s   "r   r   r     s     	 	%(( 	s 	r   c                l   R pVP                   '       d"   W P                  VP                   4      ,          pVR,          pW P                  VP                  RR7      ,          pVP                  '       dA   W P                  4       R,           ,          pW P                  VP                  RR7      ,          pV# )zif ()
T
add_indentzelse
)rA  r-   r  rB  rC  r   r   s   && r   visit_IfCGenerator.visit_If  s    666AFF##A	U
	  d ;;999""$x//A$$QYY4$@@Ar   c                :   < V ^8  d   QhRS[ P                  RS[/# r?   )r   Forr   )r   r   s   "r   r   r   )  s      599  r   c                   R pVP                   '       d"   W P                  VP                   4      ,          pVR,          pVP                  '       d*   VRV P                  VP                  4      ,           ,          pVR,          pVP                  '       d*   VRV P                  VP                  4      ,           ,          pVR,          pW P	                  VP
                  RR7      ,          pV# )zfor (r#  r   rI  TrJ  )r   r-   rA  nextr  r  r   s   && r   	visit_ForCGenerator.visit_For)  s    666AFF##A	S666tzz!&&)))A	S666tzz!&&)))A	U
	  D 99r   c                :   < V ^8  d   QhRS[ P                  RS[/# r?   )r   Whiler   )r   r   s   "r   r   r   7  s      U[[ S r   c                    R pVP                   '       d"   W P                  VP                   4      ,          pVR,          pW P                  VP                  RR7      ,          pV# )while (rI  TrJ  )rA  r-   r  r  r   s   && r   visit_WhileCGenerator.visit_While7  sO    666AFF##A	U
	  D 99r   c                :   < V ^8  d   QhRS[ P                  RS[/# r?   )r   DoWhiler   )r   r   s   "r   r   r   ?  s      u}}  r   c                   R pW P                  VP                  RR7      ,          pW P                  4       R,           ,          pVP                  '       d"   W P	                  VP                  4      ,          pVR,          pV# )zdo
TrJ  rW  z);)r  r  r   rA  r-   r   s   && r   visit_DoWhileCGenerator.visit_DoWhile?  se    	  D 99	 9,,666AFF##A	T	r   c                :   < V ^8  d   QhRS[ P                  RS[/# r?   )r   StaticAssertr   )r   r   s   "r   r   r   H  s!      E$6$6 3 r   c                    R pW P                  VP                  4      ,          pVP                  '       d+   VR,          pW P                  VP                  4      ,          pVR,          pV# )z_Static_assert(,rk   )r-   rA  messager   s   && r   visit_StaticAssertCGenerator.visit_StaticAssertH  sQ    	ZZ999HAAII&&A	Sr   c                :   < V ^8  d   QhRS[ P                  RS[/# r?   )r   Switchr   )r   r   s   "r   r   r   Q  s      ell s r   c                    R V P                  VP                  4      ,           R,           pW P                  VP                  RR7      ,          pV# )zswitch (rI  TrJ  )r-   rA  r  r  r   s   && r   visit_SwitchCGenerator.visit_SwitchQ  s?    AFF++e3	  D 99r   c                :   < V ^8  d   QhRS[ P                  RS[/# r?   )r   Caser   )r   r   s   "r   r   r   V  s      EJJ 3 r   c                    R V P                  VP                  4      ,           R,           pVP                   F  pW P                  VRR7      ,          pK  	  V# )zcase :
TrJ  )r-   ru   stmtsr  r   r@   r   r  s   &&  r   
visit_CaseCGenerator.visit_CaseV  sI    djj((50GGD$$Td$;;A r   c                :   < V ^8  d   QhRS[ P                  RS[/# r?   )r   Defaultr   )r   r   s   "r   r   r   \  s      u}}  r   c                b    R pVP                    F  pW P                  VRR7      ,          pK  	  V# )z	default:
TrJ  )ro  r  rp  s   &&  r   visit_DefaultCGenerator.visit_Default\  s2    GGD$$Td$;;A r   c                :   < V ^8  d   QhRS[ P                  RS[/# r?   )r   Labelr   )r   r   s   "r   r   r   b       < <U[[ <S <r   c                h    VP                   R ,           V P                  VP                  4      ,           # )rn  )rK   r  r  rD   s   &&r   visit_LabelCGenerator.visit_Labelb  s$    vv~ 3 3AFF ;;;r   c                :   < V ^8  d   QhRS[ P                  RS[/# r?   )r   Gotor   )r   r   s   "r   r   r   e  s     & &EJJ &3 &r   c                6    R VP                   ,           R,           # )zgoto r#  rJ   rD   s   &&r   
visit_GotoCGenerator.visit_Gotoe  s    #%%r   c                :   < V ^8  d   QhRS[ P                  RS[/# r?   )r   EllipsisParamr   )r   r   s   "r   r   r   h  s!      U%8%8 S r   c                    R # )z...r   rD   s   &&r   visit_EllipsisParamCGenerator.visit_EllipsisParamh  s    r   c                :   < V ^8  d   QhRS[ P                  RS[/# r?   )r   Structr   )r   r   s   "r   r   r   k  s     = =ell =s =r   c                &    V P                  VR 4      # )structr   rD   s   &&r   visit_StructCGenerator.visit_Structk  s    //8<<r   c                :   < V ^8  d   QhRS[ P                  RS[/# r?   )r   Typenamer   )r   r   s   "r   r   r   n  s     + + +3 +r   c                8    V P                  VP                  4      # r3   )r   rb   rD   s   &&r   visit_TypenameCGenerator.visit_Typenamen  s    ""166**r   c                :   < V ^8  d   QhRS[ P                  RS[/# r?   )r   Unionr   )r   r   s   "r   r   r   q  rz  r   c                &    V P                  VR 4      # )unionr   rD   s   &&r   visit_UnionCGenerator.visit_Unionq  s    //7;;r   c                :   < V ^8  d   QhRS[ P                  RS[/# r?   )r   NamedInitializerr   )r   r   s   "r   r   r   t  s!      (>(> 3 r   c                F   R pVP                    Fe  p\        V\        P                  4      '       d   VRVP                   ,           ,          pK?  VRV P	                  V4      ,           R,           ,          pKg  	  VRV P                  VP                  4      ,           ,          pV# )r1   .rX   rY   r   )rK   r   r   rH   r-   r   ru   )r   r@   r   rK   s   &&  r   visit_NamedInitializer!CGenerator.visit_NamedInitializert  sz    FFD$))S499_$S4::d++c11	 
 	
UT%%aff---r   c                :   < V ^8  d   QhRS[ P                  RS[/# r?   )r   FuncDeclr   )r   r   s   "r   r   r   ~  s     & & &3 &r   c                $    V P                  V4      # r3   r   rD   s   &&r   visit_FuncDeclCGenerator.visit_FuncDecl~  s    ""1%%r   c                :   < V ^8  d   QhRS[ P                  RS[/# r?   )r   	ArrayDeclr   )r   r   s   "r   r   r     s     ; ; ;S ;r   c                (    V P                  VR R7      # Fr   r  rD   s   &&r   visit_ArrayDeclCGenerator.visit_ArrayDecl      ""1E"::r   c                :   < V ^8  d   QhRS[ P                  RS[/# r?   )r   TypeDeclr   )r   r   s   "r   r   r     s     ; ; ;3 ;r   c                (    V P                  VR R7      # r  r  rD   s   &&r   visit_TypeDeclCGenerator.visit_TypeDecl  r  r   c                :   < V ^8  d   QhRS[ P                  RS[/# r?   )r   PtrDeclr   )r   r   s   "r   r   r     s     ; ;u}} ; ;r   c                (    V P                  VR R7      # r  r  rD   s   &&r   visit_PtrDeclCGenerator.visit_PtrDecl  r  r   c                   < V ^8  d   QhRS[ P                  S[ P                  ,          S[ P                  ,          RS[RS[/# )r
   r@   rK   r   )r   r  r  r   r   )r   r   s   "r   r   r     s;      +ejj8@C	r   c                   VR9   dL   \        V\        P                  \        P                  34      '       g   Q hVP                  pV P
                  pM]VR8X  g   Q h\        V\        P                  4      '       g   Q hVP                  f   RMVP                  P                  pV P                  pVR,           VP                  ;'       g    R,           pVe   VR,          pWPP                  4       ,          pV ;P                  ^,          un        VR,          pWT! V4      ,          pV ;P                  ^,          un        WPP                  4       R,           ,          pV# )	z\Generates code for structs, unions, and enums. name should be
'struct', 'union', or 'enum'.
r   Nr   r1   r  r  r   )r  r  )r   r   r  r  r   _generate_struct_union_bodyr   valuesenumerators_generate_enum_bodyrK   r   r   )r   r@   rK   membersbody_functionr   s   &&&   r   r   &CGenerator._generate_struct_union_enum  s    &&a%,,!<====ggG <<M6>!>a,,,,hh.dAHH4H4HG 44M3J!&&,,B' IA""$$A"JAw''A"""$s**Ar   c                J   < V ^8  d   QhRS[ S[P                  ,          RS[/# r
   r  r   )r   r   r%   r   )r   r   s   "r   r   r     s(     F F4

3C F Fr   c                :   a  R P                  V 3R lV 4       4      # )r1   c              3   F   <"   T F  pSP                  V4      x  K  	  R # 5ir3   r  r   s   & r   r8   9CGenerator._generate_struct_union_body.<locals>.<genexpr>  s     EWTt**400Wr  r;   r   r  s   f&r   r  &CGenerator._generate_struct_union_body  s    wwEWEEEr   c                J   < V ^8  d   QhRS[ S[P                  ,          RS[/# r  )r   r   r   r   )r   r   s   "r   r   r     s*     K K40@0@+A Kc Kr   c                N   a  R P                  V 3R lV 4       4      RR R,           # )r1   c              3   F   <"   T F  pSP                  V4      x  K  	  R # 5ir3   r4   )r5   rC   r   s   & r   r8   1CGenerator._generate_enum_body.<locals>.<genexpr>  s     >gUtzz%((gr  Nr  r  r  s   f&r   r  CGenerator._generate_enum_body  s$    ww>g>>sCdJJr   c                @   < V ^8  d   QhRS[ P                  RS[RS[/# )r
   r@   rK  r   )r   r%   r   r   )r   r   s   "r   r   r     s&     (5 (5

 (5 (5 (5r   c                   V'       d   V ;P                   ^,          un         V P                  4       pV'       d   V ;P                   ^,          un         T;;\        P                  Rc ;e   w   EM= ;\        P                  Rc ;e   w   EM" ;\        P
                  Rc ;e   w   EM ;\        P                  Rc ;e   w   M ;\        P                  Rc ;e   w   M ;\        P                  Rc ;e   w   M ;\        P                  Rc ;e   w   M ;\        P                  Rc ;e   w   M ;\        P                  Rc ;e   w   Mk ;\        P                  Rc ;e   w   MQ ;\        P                  Rc ;e   w   M7 ;\        P                  Rc ;e   w   M ;\        P                  Rc ;e   w   M  M   W0P!                  V4      ,           R,           # ;\        P"                  Rc ;e   w    V P!                  V4      #  \        P$                  Rc ;e   w   W0P!                  V4      ,           #   W0P!                  V4      ,           R,           # )zGeneration from a statement node. This method exists as a wrapper
for individual visit_* methods to handle different treatment of
some statements in this context.
r   r   r  )r   r   r   r   r   r   rq   r   r?  rh   rV   r`   rA   rH   r   r   r-   r   rG  )r   r@   rK  r   s   &&& r   r  CGenerator._generate_stmt  st   
 """$"#

$%""$$%**,,!%--//"%..""#%//##"%.."""%..""#%//##"%..""%((**!%--//"%..""#" 

1-55!!
 zz!}$ " 

1-- 

1-44r   c                :   < V ^8  d   QhRS[ P                  RS[/# r?   )r   r   r   )r   r   s   "r   r   r     s     
 


 
s 
r   c                   RpVP                   '       d#   RP                  VP                   4      R,           pVP                  '       d*   VRP                  VP                  4      R,           ,          pVP                  '       d0   W P	                  VP                  ^ ,          4      R,           ,          pW P                  VP                  4      ,          pV# )zGeneration from a Decl node.r1   r   )funcspecr;   r   alignr-   r   rb   r   s   && r   r   CGenerator._generate_decl  s    :::$s*A999!))$s**A777AGGAJ'#--A	  ((r   Tc                j   < V ^8  d   QhRS[ P                  RS[S[ P                  ,          RS[RS[/# )r
   r@   	modifiersr   r   )r   r%   r   r   r   )r   r   s   "r   r   r     sF     A% A%::A% 

#A% 	A%
 
A%r   c                   T;\         P                  Rc ;Ee   w    RpVP                  '       d*   VRP                  VP                  4      R,           ,          pW@P	                  VP
                  4      ,          pVP                  '       d   V'       d   VP                  MRp\        V4       EF  w  rgT;\         P                  Rc ;e   w    V^ 8w  d>   \        W&^,
          ,          \         P                  4      '       d   RV,           R,           pVR,          pVP                  '       d*   VRP                  VP                  4      R,           ,          pVP                  e"   WPP	                  VP                  4      ,          pVR,          pK   ;\         P                  Rc ;e   w    V^ 8w  d>   \        W&^,
          ,          \         P                  4      '       d   RV,           R,           pVP                  e   V P	                  VP                  4      MRpVRV,           R,           ,          pEK   \         P                  Rc ;eU   w   VP                  '       d5   RP                  VP                  4      p	V'       d   RV 2MRp
RV	 V
 2pEK  R	V,           pEK   EK  	  V'       d   VRV,           ,          pV#  ;\         P                  Rc ;e   w    V P!                  VP
                  4      #  ;\         P"                  Rc ;e!   w    V P%                  VP
                  VR
7      #  ;\         P&                  Rc ;e&   w    RP                  VP(                  4      R,           #  ;\         P                  Rc ;e   w   M7 ;\         P                  Rc ;e   w   M ;\         P                  Rc ;e   w   M  M& V P%                  VP
                  W!.,           VR
7      #  V P	                  V4      # )zRecursive 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   r1   r   rj   rk   rX   rY   z* r   r   )r   r  qualsr;   r-   rb   declname	enumerater  r   r  	dim_qualsdimr  rl   r   r   r  r   r   r   )r   r@   r  r   r   nstrimodifierrl   r  suffixs   &&&&       r   r   CGenerator._generate_type  s    !!!777!''*S00AZZ''%&ZZZMqzzr
 $-Y#7KA".U__. Av*Y1u5Eu}}*U*U'*TzC'7 CKD'111 $1C1C(Ds(J J'||7 $

8<<(@ @ CKD / .U^^- Av*Y1u5Eu}}*U*U'*TzC'7 $,==#< !%

8== 9%' !
 !C$J$44D . #]]_'~~~(+(@7;1TF)+E76(';'*Tz -) $86 tOAQ "R **16622 !!**166*OO "'%%'xx(3.. ("""_U]]__7Gu~~7G7GG**FFIO= +   zz!}$r   c                l   < V ^8  d   QhRS[ P                  RS[S[ P                  .S[3,          RS[/# )r
   r@   	conditionr   )r   r%   r   r   r   )r   r   s   "r   r   r   &  s9     
 

(0%**t1C(D
	
r   c                d    V P                  V4      pV! V4      '       d   RV,           R,           # V# )z|Visits 'n' and returns its string representation, parenthesized
if the condition function applied to the node returns True.
rj   rk   )r   )r   r@   r  r   s   &&& r   r   CGenerator._parenthesize_if&  s0     QQ<<7S= Hr   c                :   < V ^8  d   QhRS[ P                  RS[/# r?   r$   )r   r   s   "r   r   r   2  s#     O OUZZ OC Or   c                0   a  S P                  VV 3R l4      # )z$Common use case for _parenthesize_ifc                 0   < SP                  V 4      '       * # r3   )r   )r   r   s   &r   r   8CGenerator._parenthesize_unless_simple.<locals>.<lambda>4  s    d6J6J16M2Mr   )r   rD   s   f&r   rZ   &CGenerator._parenthesize_unless_simple2  s    $$Q(MNNr   c                :   < V ^8  d   QhRS[ P                  RS[/# r?   )r   r%   r   )r   r   s   "r   r   r   6  s     
 
 
 
r   c                    \        V\        P                  \        P                  \        P                  \        P
                  \        P                  34      # )ziReturns True for nodes that are "simple" - i.e. nodes that always
have higher precedence than operators.
)r   r   rA   rH   rV   r`   rh   rD   s   &&r   r   CGenerator._is_simple_node6  s6     ^^UXXu~~uW
 	
r   c                2   < V ^8  d   Qh/ S[ ;R&   S[;R&   # )r
   r   r   )intr   )r   r   s   "r   r   r      s         r   r   N)F)Gr)   
__module____qualname____firstlineno____doc__r   r   r-   r+   rE   rL   rS   r]   re   rn   rw   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r$  r-  r2  r7  r<  rD  rL  rR  rX  r]  rd  ri  rq  rv  r|  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r   r   r   rZ   r   __annotate_func____static_attributes____classdictcell__)r   s   @r   r   r      sz    	5 	5' '? ?K K   < <3 3' '
* *" 	a 	a	
 	Q 	Q 	Q 	a 	a 	Q 	a 	Q 	a 	a 	a  	Q!" 	Q#$ 	Q%& 	Q'( 	Q)N.#/ #/J; ;! !% %	 	  B B+ ++ +@ @> > - -
 
 J J B B    	 	     
  < <& & = =+ +< < & &; ;; ;; ; 8F FK K(5 (5T
 
 ')"	A% A%F
 
O O
 
Q  r   r   N)typingr   r   r   r1   r   r   r   r   r   <module>r     s    , + o
 o
r   