PNG  IHDR;IDATxܻn0K )(pA 7LeG{ §㻢|ذaÆ 6lذaÆ 6lذaÆ 6lom$^yذag5bÆ 6lذaÆ 6lذa{ 6lذaÆ `}HFkm,mӪôô! x|'ܢ˟;E:9&ᶒ}{v]n&6 h_tڠ͵-ҫZ;Z$.Pkž)!o>}leQfJTu іچ\X=8Rن4`Vwl>nG^is"ms$ui?wbs[m6K4O.4%/bC%t Mז -lG6mrz2s%9s@-k9=)kB5\+͂Zsٲ Rn~GRC wIcIn7jJhۛNCS|j08yiHKֶۛkɈ+;SzL/F*\Ԕ#"5m2[S=gnaPeғL lذaÆ 6l^ḵaÆ 6lذaÆ 6lذa; _ذaÆ 6lذaÆ 6lذaÆ RIENDB`  gwUc@s&ddlmZdZdZdS(i(tc_astcCst|tjstt|jtjs1|Stjg|jj}d}x|jjD]}t|tj tj fr|jj |t ||j|jd}q\|dkr|jj |q\|j j |q\W||_|S(s The 'case' statements in a 'switch' come out of parsing with one child node, so subsequent statements are just tucked to the parent Compound. Additionally, consecutive (fall-through) case statements come out messy. This is a peculiarity of the C grammar. The following: switch (myvar) { case 10: k = 10; p = k + 1; return 10; case 20: case 30: return 20; default: break; } Creates this tree (pseudo-dump): Switch ID: myvar Compound: Case 10: k = 10 p = k + 1 return 10 Case 20: Case 30: return 20 Default: break The goal of this transform it to fix this mess, turning it into the following: Switch ID: myvar Compound: Case 10: k = 10 p = k + 1 return 10 Case 20: Case 30: return 20 Default: break A fixed AST node is returned. The argument may be modified. iN(t isinstanceRtSwitchtAssertionErrortstmttCompoundtcoordtNonet block_itemstCasetDefaulttappendt_extract_nested_casetstmts(t switch_nodet new_compoundt last_casetchild((s</usr/lib/python2.7/site-packages/pycparser/ast_transforms.pytfix_switch_cases s3  cCsPt|jdtjtjfrL|j|jjt|d|ndS(s Recursively extract consecutive Case statements that are made nested by the parser and add them to the stmts_list. iiN(RR RR R R tpopR (t case_nodet stmts_list((s</usr/lib/python2.7/site-packages/pycparser/ast_transforms.pyR bs"N(tRRR (((s</usr/lib/python2.7/site-packages/pycparser/ast_transforms.pyt s U