Viewing File: /usr/lib/python2.7/site-packages/pycparser/c_generator.pyc

ó
g¨wUc@s*ddlmZdefd„ƒYZdS(i(tc_astt
CGeneratorcBsëeZdZd„Zd„Zd„Zd„Zd„Zd„Zd„Z	d„Z
d	„Zd
„Zd„Z
d„Zd
„Zd„Zed„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z!d„Z"d „Z#d!„Z$d"„Z%d#„Z&d$„Z'd%„Z(d&„Z)d'„Z*d(„Z+d)„Z,d*„Z-d+„Z.d,„Z/d-„Z0d.„Z1ed/„Z2d0„Z3gd1„Z4d2„Z5d3„Z6d4„Z7RS(5s¬ 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.
    cCs
d|_dS(Ni(tindent_level(tself((s9/usr/lib/python2.7/site-packages/pycparser/c_generator.pyt__init__scCsd|jS(Nt (R(R((s9/usr/lib/python2.7/site-packages/pycparser/c_generator.pyt_make_indentscCs)d|jj}t|||jƒ|ƒS(Ntvisit_(t	__class__t__name__tgetattrt
generic_visit(Rtnodetmethod((s9/usr/lib/python2.7/site-packages/pycparser/c_generator.pytvisitscs7|dkrdSdj‡fd†|jƒDƒƒSdS(Ntc3s$|]\}}ˆj|ƒVqdS(N(R(t.0tc_nametc(R(s9/usr/lib/python2.7/site-packages/pycparser/c_generator.pys	<genexpr>#s(tNonetjointchildren(RR((Rs9/usr/lib/python2.7/site-packages/pycparser/c_generator.pyRscCs|jS(N(tvalue(Rtn((s9/usr/lib/python2.7/site-packages/pycparser/c_generator.pytvisit_Constant%scCs|jS(N(tname(RR((s9/usr/lib/python2.7/site-packages/pycparser/c_generator.pytvisit_ID(scCs.|j|jƒ}|d|j|jƒdS(Nt[t](t_parenthesize_unless_simpleRRt	subscript(RRtarrref((s9/usr/lib/python2.7/site-packages/pycparser/c_generator.pytvisit_ArrayRef+scCs-|j|jƒ}||j|j|jƒS(N(RRttypeRtfield(RRtsref((s9/usr/lib/python2.7/site-packages/pycparser/c_generator.pytvisit_StructRef/scCs.|j|jƒ}|d|j|jƒdS(Nt(t)(RRRtargs(RRtfref((s9/usr/lib/python2.7/site-packages/pycparser/c_generator.pytvisit_FuncCall3scCsx|j|jƒ}|jdkr)d|S|jdkr@d|S|jdkrcd|j|jƒSd|j|fSdS(Nsp++s%s++sp--s%s--tsizeofs
sizeof(%s)s%s%s(RtexprtopR(RRtoperand((s9/usr/lib/python2.7/site-packages/pycparser/c_generator.pyt
visit_UnaryOp7scsPˆj|j‡fd†ƒ}ˆj|j‡fd†ƒ}d||j|fS(Ncsˆj|ƒS(N(t_is_simple_node(td(R(s9/usr/lib/python2.7/site-packages/pycparser/c_generator.pyt<lambda>Fscsˆj|ƒS(N(R/(R0(R(s9/usr/lib/python2.7/site-packages/pycparser/c_generator.pyR1Hss%s %s %s(t_parenthesize_iftlefttrightR,(RRtlval_strtrval_str((Rs9/usr/lib/python2.7/site-packages/pycparser/c_generator.pytvisit_BinaryOpDs
cCs8|j|jd„ƒ}d|j|jƒ|j|fS(NcSst|tjƒS(N(t
isinstanceRt
Assignment(R((s9/usr/lib/python2.7/site-packages/pycparser/c_generator.pyR1Nss%s %s %s(R2trvalueRtlvalueR,(RRR6((s9/usr/lib/python2.7/site-packages/pycparser/c_generator.pytvisit_AssignmentKscCsdj|jƒS(NR(Rtnames(RR((s9/usr/lib/python2.7/site-packages/pycparser/c_generator.pytvisit_IdentifierTypeQscCs_t|tjƒr'd|j|ƒdSt|tjƒrNd|j|ƒdS|j|ƒSdS(Nt{t}R%R&(R8RtInitListRtExprList(RR((s9/usr/lib/python2.7/site-packages/pycparser/c_generator.pyt_visit_exprTs
cCsn|r|jn|j|ƒ}|jrD|d|j|jƒ7}n|jrj|d|j|jƒ7}n|S(Ns : s = (Rt_generate_decltbitsizeRtinitRC(RRtno_typets((s9/usr/lib/python2.7/site-packages/pycparser/c_generator.pyt
visit_Decl\s		cs`ˆj|jdƒ}t|jƒdkr\|ddj‡fd†|jdDƒƒ7}n|S(Niis, c3s$|]}ˆj|dtƒVqdS(RGN(RItTrue(Rtdecl(R(s9/usr/lib/python2.7/site-packages/pycparser/c_generator.pys	<genexpr>is(RtdeclstlenR(RRRH((Rs9/usr/lib/python2.7/site-packages/pycparser/c_generator.pytvisit_DeclListfs
cCsFd}|jr,|dj|jƒd7}n||j|jƒ7}|S(NRR(tstorageRt_generate_typeR!(RRRH((s9/usr/lib/python2.7/site-packages/pycparser/c_generator.pyt
visit_Typedefms
	cCs2d|j|jƒd}|d|j|jƒS(NR%R&R(RPtto_typeRR+(RRRH((s9/usr/lib/python2.7/site-packages/pycparser/c_generator.pyt
visit_CastsscCs=g}x'|jD]}|j|j|ƒƒqWdj|ƒS(Ns, (texprstappendRCR(RRtvisited_subexprsR+((s9/usr/lib/python2.7/site-packages/pycparser/c_generator.pytvisit_ExprListwscCs=g}x'|jD]}|j|j|ƒƒqWdj|ƒS(Ns, (RTRURCR(RRRVR+((s9/usr/lib/python2.7/site-packages/pycparser/c_generator.pytvisit_InitList}scCsÆd}|jr#|d|j7}n|jrÂ|d7}x|t|jjƒD]h\}}||j7}|jrˆ|d|j|jƒ7}n|t|jjƒdkrI|d7}qIqIW|d7}n|S(NtenumRs {s = is, R@(Rtvaluest	enumeratetenumeratorsRRRM(RRRHtit
enumerator((s9/usr/lib/python2.7/site-packages/pycparser/c_generator.pyt
visit_Enumƒs		

	
cs„ˆj|jƒ}dˆ_ˆj|jƒ}|jrpdj‡fd†|jDƒƒ}|d|d|dS|d|dSdS(Nis;
c3s|]}ˆj|ƒVqdS(N(R(Rtp(R(s9/usr/lib/python2.7/site-packages/pycparser/c_generator.pys	<genexpr>–ss
(RRKRtbodytparam_declsR(RRRKRatknrdecls((Rs9/usr/lib/python2.7/site-packages/pycparser/c_generator.pyt
visit_FuncDef‘s		"cCs]d}xP|jD]E}t|tjƒr>||j|ƒ7}q||j|ƒd7}qW|S(NRs;
(textR8RtFuncDefR(RRRHRe((s9/usr/lib/python2.7/site-packages/pycparser/c_generator.pyt
visit_FileAST›scsxˆjƒd}ˆjd7_|jrQ|dj‡fd†|jDƒƒ7}nˆjd8_|ˆjƒd7}|S(Ns{
iRc3s|]}ˆj|ƒVqdS(N(t_generate_stmt(Rtstmt(R(s9/usr/lib/python2.7/site-packages/pycparser/c_generator.pys	<genexpr>¨ss}
(RRtblock_itemsR(RRRH((Rs9/usr/lib/python2.7/site-packages/pycparser/c_generator.pytvisit_Compound¤s	)cCsdS(Nt;((RR((s9/usr/lib/python2.7/site-packages/pycparser/c_generator.pytvisit_EmptyStatement­scs dj‡fd†|jDƒƒS(Ns, c3s|]}ˆj|ƒVqdS(N(R(Rtparam(R(s9/usr/lib/python2.7/site-packages/pycparser/c_generator.pys	<genexpr>±s(Rtparams(RR((Rs9/usr/lib/python2.7/site-packages/pycparser/c_generator.pytvisit_ParamList°scCs4d}|jr,|d|j|jƒ7}n|dS(NtreturnRRl(R+R(RRRH((s9/usr/lib/python2.7/site-packages/pycparser/c_generator.pytvisit_Return³s	cCsdS(Nsbreak;((RR((s9/usr/lib/python2.7/site-packages/pycparser/c_generator.pytvisit_Break¸scCsdS(Ns	continue;((RR((s9/usr/lib/python2.7/site-packages/pycparser/c_generator.pytvisit_Continue»scCsJ|j|jƒd}||j|jƒd7}||j|jƒ7}|S(Ns ? s : (RCtcondtiftruetiffalse(RRRH((s9/usr/lib/python2.7/site-packages/pycparser/c_generator.pytvisit_TernaryOp¾scCsŽd}|jr(||j|jƒ7}n|d7}||j|jdtƒ7}|jrŠ||jƒd7}||j|jdtƒ7}n|S(Nsif (s)
t
add_indentselse
(RuRRhRvRJRwR(RRRH((s9/usr/lib/python2.7/site-packages/pycparser/c_generator.pytvisit_IfÄs	
	cCs²d}|jr(||j|jƒ7}n|d7}|jrX|d|j|jƒ7}n|d7}|jrˆ|d|j|jƒ7}n|d7}||j|jdtƒ7}|S(Nsfor (RlRs)
Ry(RFRRutnextRhRiRJ(RRRH((s9/usr/lib/python2.7/site-packages/pycparser/c_generator.pyt	visit_ForÎs	
	
	
cCsRd}|jr(||j|jƒ7}n|d7}||j|jdtƒ7}|S(Nswhile (s)
Ry(RuRRhRiRJ(RRRH((s9/usr/lib/python2.7/site-packages/pycparser/c_generator.pytvisit_WhileÙs	
cCsfd}||j|jdtƒ7}||jƒd7}|jrX||j|jƒ7}n|d7}|S(Nsdo
Ryswhile (s);(RhRiRJRRuR(RRRH((s9/usr/lib/python2.7/site-packages/pycparser/c_generator.pyt
visit_DoWhileàs	
cCs:d|j|jƒd}||j|jdtƒ7}|S(Nsswitch (s)
Ry(RRuRhRiRJ(RRRH((s9/usr/lib/python2.7/site-packages/pycparser/c_generator.pytvisit_SwitchèscCsKd|j|jƒd}x*|jD]}||j|dtƒ7}q$W|S(Nscase s:
Ry(RR+tstmtsRhRJ(RRRHRi((s9/usr/lib/python2.7/site-packages/pycparser/c_generator.pyt
visit_CaseíscCs7d}x*|jD]}||j|dtƒ7}qW|S(Ns	default:
Ry(R€RhRJ(RRRHRi((s9/usr/lib/python2.7/site-packages/pycparser/c_generator.pyt
visit_DefaultóscCs|jd|j|jƒS(Ns:
(RRhRi(RR((s9/usr/lib/python2.7/site-packages/pycparser/c_generator.pytvisit_LabelùscCsd|jdS(Nsgoto Rl(R(RR((s9/usr/lib/python2.7/site-packages/pycparser/c_generator.pyt
visit_GotoüscCsdS(Ns...((RR((s9/usr/lib/python2.7/site-packages/pycparser/c_generator.pytvisit_EllipsisParamÿscCs|j|dƒS(Ntstruct(t_generate_struct_union(RR((s9/usr/lib/python2.7/site-packages/pycparser/c_generator.pytvisit_StructscCs|j|jƒS(N(RPR!(RR((s9/usr/lib/python2.7/site-packages/pycparser/c_generator.pytvisit_TypenamescCs|j|dƒS(Ntunion(R‡(RR((s9/usr/lib/python2.7/site-packages/pycparser/c_generator.pytvisit_UnionscCsˆd}xa|jD]V}t|tjƒr<|d|j7}qt|tjƒr|d|jd7}qqW|d|j|jƒ7}|S(NRt.RRs = (RR8RtIDtConstantRRR+(RRRHR((s9/usr/lib/python2.7/site-packages/pycparser/c_generator.pytvisit_NamedInitializerscCs
|j|ƒS(N(RP(RR((s9/usr/lib/python2.7/site-packages/pycparser/c_generator.pytvisit_FuncDeclscCs¤|d|jpd}|jr |d7}||jƒ7}|jd7_|d7}x$|jD]}||j|ƒ7}q]W|jd8_||jƒd7}n|S(se Generates code for structs and unions. name should be either
            'struct' or union.
        RRs
is{
R@(RRLRRRh(RRRRHRK((s9/usr/lib/python2.7/site-packages/pycparser/c_generator.pyR‡s	

cCsït|ƒ}|r$|jd7_n|jƒ}|rH|jd8_n|tjtjtjtjtjtj	tj
tjtjtj
tjtjtjf
kr·||j|ƒdS|tjfkrÖ|j|ƒS||j|ƒdSdS(sÄ 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.
        is;
s
N(R!RRRtDeclR9tCasttUnaryOptBinaryOpt	TernaryOptFuncCalltArrayReft	StructRefRŽRtTypedefRBRtCompound(RRRyttyptindent((s9/usr/lib/python2.7/site-packages/pycparser/c_generator.pyRh(s
cCshd}|jr(dj|jƒd}n|jrN|dj|jƒd7}n||j|jƒ7}|S(s& Generation from a Decl node.
        RR(tfuncspecRRORPR!(RRRH((s9/usr/lib/python2.7/site-packages/pycparser/c_generator.pyRDDs		cCsrt|ƒ}|tjkrÈd}|jrG|dj|jƒd7}n||j|jƒ7}|jro|jnd}x5t|ƒD]'\}}t|tj	ƒrø|dkr×t||dtj
ƒr×d|d}n|d|j|jƒd7}q‚t|tjƒrb|dkrAt||dtj
ƒrAd|d}n|d|j|j
ƒd7}q‚t|tj
ƒr‚|jrœd	dj|jƒ|f}q©d
|}q‚q‚W|rÄ|d|7}n|S|tjkrç|j|jƒS|tjkr|j|jƒS|tjkr)dj|jƒdS|tj	tj
tjfkra|j|j||gƒS|j|ƒSdS(sø 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.
        RRiiR%R&RRs* %s %st*N(R!RtTypeDecltqualsRRtdeclnameR[R8t	ArrayDecltPtrDecltdimtFuncDeclR'R‘RDtTypenameRPtIdentifierTypeR=(RRt	modifiersR›RHtnstrR]tmodifier((s9/usr/lib/python2.7/site-packages/pycparser/c_generator.pyRPMs@	&!&!	cCs/|j|ƒ}||ƒr'd|dS|SdS(s‘ Visits 'n' and returns its string representation, parenthesized
            if the condition function applied to the node returns True.
        R%R&N(RC(RRt	conditionRH((s9/usr/lib/python2.7/site-packages/pycparser/c_generator.pyR2{scsˆj|‡fd†ƒS(s. Common use case for _parenthesize_if
        csˆj|ƒS(N(R/(R0(R(s9/usr/lib/python2.7/site-packages/pycparser/c_generator.pyR1ˆs(R2(RR((Rs9/usr/lib/python2.7/site-packages/pycparser/c_generator.pyR…scCs+t|tjtjtjtjtjfƒS(s~ Returns True for nodes that are "simple" - i.e. nodes that always
            have higher precedence than operators.
        (R8RRŽRR—R˜R–(RR((s9/usr/lib/python2.7/site-packages/pycparser/c_generator.pyR/Šs(8R	t
__module__t__doc__RRRRRRR R$R)R.R7R<R>RCtFalseRIRNRQRSRWRXR_RdRgRkRmRpRrRsRtRxRzR|R}R~RRR‚RƒR„R…RˆR‰R‹RRR‡RhRDRPR2RR/(((s9/usr/lib/python2.7/site-packages/pycparser/c_generator.pyRsj										
				
							
											
													
				.	
	N(RRtobjectR(((s9/usr/lib/python2.7/site-packages/pycparser/c_generator.pyt<module>	s
Back to Directory File Manager