Viewing File: /opt/imunify360/venv/lib/python3.11/site-packages/pycparser/__pycache__/c_generator.cpython-311.pyc



]jlE.ddlmZGddeZdS))c_astceZdZdZd_dZdZdZdZdZdZ	d	Z
d
ZdZdZ
d
Ziddddddddddddddddddddddd d!d"d!d#d$d%d$d&d'd(d'd)d'iZd*Zd+Zd,Zd-Zd_d.Zd/Zd0Zd1Zd2Zd3Zd4Zd5Zd6Zd7Zd8Zd9Zd:Z d;Z!d<Z"d=Z#d>Z$d?Z%d@Z&dAZ'dBZ(dCZ)dDZ*dEZ+dFZ,dGZ-dHZ.dIZ/dJZ0dKZ1dLZ2dMZ3dNZ4dOZ5dPZ6dQZ7dRZ8dSZ9dTZ:dUZ;dVZ<d_dWZ=dXZ>gdYfdZZ?d[Z@d\ZAd]ZBd^S)`
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.
    Fc"d|_||_dS)z Constructs C-code generator

            reduce_parentheses:
                if True, eliminates needless parentheses on binary operators
        N)indent_levelreduce_parentheses)selfr	s  u/builddir/build/BUILD/imunify360-venv-2.6.3/opt/imunify360/venv/lib/python3.11/site-packages/pycparser/c_generator.py__init__zCGenerator.__init__s"4cd|jzSN )r)r
s r_make_indentzCGenerator._make_indentsT&&&r
c^d|jjz}t|||j|S)Nvisit_)	__class____name__getattr
generic_visit)r
nodemethods   rvisitzCGenerator.visits0DN338wtVT%788>>>r
cr|dSdfd|DS)Nc3HK|]\}}|VdSNr).0c_namecr
s   r	<genexpr>z+CGenerator.generic_visit.<locals>.<genexpr>'s1JJYVQ4::a==JJJJJJr
)joinchildren)r
rs` rrzCGenerator.generic_visit#s<<277JJJJ$--//JJJJJJr
c|jSr)valuer
ns  rvisit_ConstantzCGenerator.visit_Constant)s	wr
c|jSrnamer(s  rvisit_IDzCGenerator.visit_ID,s	v
r
c2d}|jr
|d|jzz
}|S)Nz#pragmar)string)r
r)rets   rvisit_PragmazCGenerator.visit_Pragma/s&8	"3>!C
r
c|||j}|dz||jzdzS)N[])_parenthesize_unless_simpler-r	subscript)r
r)arrrefs   rvisit_ArrayRefzCGenerator.visit_ArrayRef5s911!&99|djj555;;r
c||j}||jz||jzSr)r6r-typerfield)r
r)srefs   rvisit_StructRefzCGenerator.visit_StructRef9s6//77af}tzz!'2222r
c|||j}|dz||jzdzS)N())r6r-rargs)r
r)frefs   rvisit_FuncCallzCGenerator.visit_FuncCall=s9//77czDJJqv...44r
c|jdkrd||jzS||j}|jdkrd|zS|jdkrd|zS|j|S)Nsizeofz
sizeof(%s)zp++z%s++zp--z%s--)oprexprr6)r
r)operands   r
visit_UnaryOpzCGenerator.visit_UnaryOpAs|48 $**QV"4"44466qv>>Gtu}}''''!"ww//r
z||rz&&r|^&z==z!=>z>=<z<=z>>z<<+-*	/%cjfd}jfd}|djd|S)Nc|pFjo?t|tjo%j|jjjkSr_is_simple_noder	
isinstancerBinaryOpprecedence_maprGdr)r
s r<lambda>z+CGenerator.visit_BinaryOp.<locals>.<lambda>ks]4//22M-M*Q2O2OM)!$/43Fqt3LLNr
c|pFjo?t|tjo%j|jjjkSrr_rds rrfz+CGenerator.visit_BinaryOp.<locals>.<lambda>ws]4//22L-L*Q2O2OL)!$/$2Ead2KKMr
r)_parenthesize_ifleftrightrG)r
r)lval_strrval_strs``  rvisit_BinaryOpzCGenerator.visit_BinaryOp_s((
F
N
N
N
N
NOO((
G
M
M
M
M
MNN
&XXqtttXX66r
c||jd}||jd|jd|S)Nc6t|tjSr)rar
Assignment)r)s rrfz-CGenerator.visit_Assignment.<locals>.<lambda>sjE4D&E&Er
r)rhrvaluerlvaluerG)r
r)rls   rvisit_AssignmentzCGenerator.visit_Assignment|sO((HEEGG"ZZ11111444BBr
c6d|jSr)r$namesr(s  rvisit_IdentifierTypezCGenerator.visit_IdentifierTypesxx   r
ct|tjrd||zdzSt|tjrd||zdzS||S)N{}r@rA)rarInitListrExprListr(s  r_visit_exprzCGenerator._visit_exprsna((	!A&,,
5>
*
*	!A&,,::a== r
c|r|jn||}|jr |d||jzz
}|jr |d||jzz
}|S)Nz :  = )r-_generate_declbitsizerinitr|)r
r)no_typess    r
visit_DeclzCGenerator.visit_Declst9AFF4#6#6q#9#998a54::ai#8#888a6	2
))!&1111Ar
c|jd}t|jdkr4|ddfd|jddDzz
}|S)Nrr, c3FK|]}|dVdS)T)rN)rr declr
s  rr#z,CGenerator.visit_DeclList.<locals>.<genexpr>sG"="=(,#'//$/"E"E"="="="="="=r
)rdeclslenr$r
r)rs`  rvisit_DeclListzCGenerator.visit_DeclListsJJqwqz""qw<<!
		"="="="=01"="="====
=Ar
cd}|jr |d|jdzz
}|||jz
}|S)Nrr)storager$_generate_typer;rs   r
visit_TypedefzCGenerator.visit_TypedefsJ94a388AI..44a	T
 
 
(
((r
cd||jdzdz}|dz||jzS)Nr@F
emit_declnamerAr)rto_typer6rHrs   r
visit_CastzCGenerator.visit_CastsE$%%aiu%EEEK3w99!&AAAAr
cg}|jD]*}|||+d|SNrexprsappendr|r$r
r)visited_subexprsrHs    rvisit_ExprListzCGenerator.visit_ExprListQG	<	<D##D$4$4T$:$:;;;;yy)***r
cg}|jD]*}|||+d|Srrrs    rvisit_InitListzCGenerator.visit_InitListrr
c0||dS)Nenumr,_generate_struct_union_enumr(s  r
visit_EnumzCGenerator.visit_Enums///???r
c\d||jS)Nz_Alignas({}))formatr	alignmentr(s  r
visit_AlignaszCGenerator.visit_Alignass$$$TZZ%<%<===r
c|js.d||jSd||j||jS)Nz{indent}{name},
)indentr-z{indent}{name} = {value},
)rr-r')r'rrr-rr(s  rvisit_EnumeratorzCGenerator.visit_Enumeratorsw
	&--((**V.

177((**Vjj))8
r
c|j}d_|j}|jr7dfd|jD}|dz|zdz|zdzS|dz|zdzS)Nr;
c3BK|]}|VdSrr)r pr
s  rr#z+CGenerator.visit_FuncDef.<locals>.<genexpr>s-!G!GA$**Q--!G!G!G!G!G!Gr

)rrrbodyparam_declsr$)r
r)rrknrdeclss`    r
visit_FuncDefzCGenerator.visit_FuncDefszz!&!!zz!&!!=	-zz!G!G!G!G!G!G!GGGH$;)E1D84??$;%,,r
c&d}|jD]}t|tjr|||z
}5t|tjr|||dzz
}k|||dzz
}|S)Nrrr)extrarFuncDefrPragma)r
r)rrs    r
visit_FileASTzCGenerator.visit_FileASTs5	-	-C#u}--
-TZZ__$C..
-TZZ__t++TZZ__u,,r
c
dz}xjdz
c_|jr)|dfd|jDz
}xjdzc_|dzz
}|S)N{
rLrc3BK|]}|VdSr_generate_stmt)r stmtr
s  rr#z,CGenerator.visit_Compound.<locals>.<genexpr>s1MMt,,T22MMMMMMr
z}
)rrblock_itemsr$rs`  rvisit_CompoundzCGenerator.visit_Compounds%'Q=	N
MMMMq}MMMMMMAQ	T


 
 5
((r
c~d||jzdz||jzdzS)Nr@z){ry)rr;rr(s  rvisit_CompoundLiteralz CGenerator.visit_CompoundLiterals8TZZ'''$.AF1C1CCcIIr
cdS)N;r(s  rvisit_EmptyStatementzCGenerator.visit_EmptyStatementssr
cPdfd|jDS)Nrc3BK|]}|VdSrr)r paramr
s  rr#z-CGenerator.visit_ParamList.<locals>.<genexpr>s/AAuE**AAAAAAr
)r$paramsr(s` rvisit_ParamListzCGenerator.visit_ParamLists,yyAAAAAAAAAAr
c^d}|jr |d||jzz
}|dzS)Nreturnrr)rHrrs   rvisit_ReturnzCGenerator.visit_Returns4601djj000013wr
cdS)Nzbreak;rr(s  rvisit_BreakzCGenerator.visit_Breaksxr
cdS)Nz	continue;rr(s  rvisit_ContinuezCGenerator.visit_Continues{r
cd||jzdz}|d||jzdzz
}|d||jzdzz
}|S)Nr@z) ? z) : rA)r|condiftrueiffalsers   rvisit_TernaryOpzCGenerator.visit_TernaryOpsn
4##AF++
+f
4	S4##AH--
-
66	S4##AI..
.
44r
cd}|jr|||jz
}|dz
}|||jdz
}|jr9||dzz
}|||jdz
}|S)Nzif ()
T
add_indentzelse
)rrrrrrrs   rvisit_IfzCGenerator.visit_Ifs6*1

16***1	U
	T
 
 d
 
;
;;9	A
""$$x//A
$$QY4$@@@Ar
cJd}|jr|||jz
}|dz
}|jr |d||jzz
}|dz
}|jr |d||jzz
}|dz
}|||jdz
}|S)Nzfor (rrrTr)rrrnextrrrs   r	visit_ForzCGenerator.visit_For
s6*1

16***1	S601djj00001	S601djj00001	U
	T
 
 D
 
9
99r
cd}|jr|||jz
}|dz
}|||jdz
}|S)Nwhile (rTr)rrrrrs   rvisit_WhilezCGenerator.visit_WhilesS6*1

16***1	U
	T
 
 D
 
9
99r
cd}|||jdz
}||dzz
}|jr|||jz
}|dz
}|S)Nzdo
Trrz);)rrrrrrs   r
visit_DoWhilezCGenerator.visit_DoWhilesn	T
 
 D
 
9
99	T


 
 9
,,6*1

16***1	T	r
cd}|||jz
}|jr"|dz
}|||jz
}|dz
}|S)Nz_Static_assert(,rA)rrmessagers   rvisit_StaticAssertzCGenerator.visit_StaticAssert$sX	TZZ

9	'
HA
AI&&&A	Sr
cd||jzdz}|||jdz
}|S)Nzswitch (rTr)rrrrrs   rvisit_SwitchzCGenerator.visit_Switch-sCAF+++e3	T
 
 D
 
9
99r
cd||jzdz}|jD]}|||dz
}|S)Nzcase :
Tr)rrHstmtsrr
r)rrs    r
visit_CasezCGenerator.visit_Case2sTdjj(((50G	<	<D
$$Td$;;;AAr
cRd}|jD]}|||dz
}|S)Nz	default:
Tr)rrrs    r
visit_DefaultzCGenerator.visit_Default8s<G	<	<D
$$Td$;;;AAr
cL|jdz||jzS)Nr)r-rrr(s  rvisit_LabelzCGenerator.visit_Label>s#v~ 3 3AF ; ;;;r
cd|jzdzS)Nzgoto rr,r(s  r
visit_GotozCGenerator.visit_GotoAs#%%r
cdS)Nz...rr(s  rvisit_EllipsisParamzCGenerator.visit_EllipsisParamDsur
c.||dS)Nstructrr(s  rvisit_StructzCGenerator.visit_StructGs//8<<<r
c6||jSr)rr;r(s  rvisit_TypenamezCGenerator.visit_TypenameJs""16***r
c.||dS)Nunionrr(s  rvisit_UnionzCGenerator.visit_UnionMs//7;;;r
cd}|jD]H}t|tjr|d|jzz
}*|d||zdzz
}I|d||jzz
}|S)Nr.r4r5r~)r-rarIDrr|rH)r
r)rr-s    rvisit_NamedInitializerz!CGenerator.visit_NamedInitializerPsF	2	2D$))
2S49_$S4::d+++c11	UT%%af--
--r
c,||Srrr(s  rvisit_FuncDeclzCGenerator.visit_FuncDeclZs""1%%%r
c0||dSNFrrr(s  rvisit_ArrayDeclzCGenerator.visit_ArrayDecl]""1E":::r
c0||dSrrr(s  rvisit_TypeDeclzCGenerator.visit_TypeDecl`r
r
c0||dSrrr(s  r
visit_PtrDeclzCGenerator.visit_PtrDeclcr
r
ch|dvr|j}|j}n$|dksJ|jdn|jj}|j}|dz|jpdz}|i|dz
}||z
}|xjdz
c_|dz
}|||z
}|xjdzc_||d	zz
}|S)
zq Generates code for structs, unions, and enums. name should be
            'struct', 'union', or 'enum'.
        )rrrNrrrrLrry)r_generate_struct_union_bodyvaluesenumerators_generate_enum_bodyr-rr)r
r)r-members
body_functionrs      rrz&CGenerator._generate_struct_union_enumfs&&&gG <MM6>>>>h.ddAH4HG 4M3J!&,B'
IA
""$$$A"
JA
w'''A"
""$$s**Ar
cFdfd|DS)Nrc3BK|]}|VdSrrrs  rr#z9CGenerator._generate_struct_union_body.<locals>.<genexpr>s1EETt**400EEEEEEr
r$r
rs` rrz&CGenerator._generate_struct_union_body~s*wwEEEEWEEEEEEr
c\dfd|DdddzS)Nrc3BK|]}|VdSrr)r r'r
s  rr#z1CGenerator._generate_enum_body.<locals>.<genexpr>s/>>Utzz%((>>>>>>r
rrrs` rrzCGenerator._generate_enum_bodys8ww>>>>g>>>>>ssCdJJr
ct|}|r|xjdz
c_|}|r|xjdzc_|tjtjtjtjtjtj	tj
tjtjtj
tjtjtjf
vr|||zdzS|tjfvr||S|tjfvr|||zS|||zdzS)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.
        rLrr)r;rrrDeclrpCastUnaryOprb	TernaryOpFuncCallArrayRef	StructRefConstantrTypedefr{rCompoundIf)r
r)rtyprs     rrzCGenerator._generate_stmts
1gg-t((A-((""$$-t((A-((
E,ej%-5=	   DJJqMM)E11
U^%
%
%
::a== 
UXK

DJJqMM))DJJqMM)D00r
c4d}|jrd|jdz}|jr |d|jdzz
}|jr&|||jddzz
}|||jz
}|S)z& Generation from a Decl node.
        rrr)funcspecr$ralignrrr;rs   rrzCGenerator._generate_decls
:5388AJ//#5q94a388AI..44a75AAGAJ//#55A	T
 
 
(
((r
Tct|}|tjkrd}|jr |d|jdzz
}|||jz
}|jr	|r|jnd}t|D]\\}}t|tj	r~|dkr+t||dz
tj
rd|zdz}|dz
}|jr |d|jdzz
}|||jdzz
}t|tj
rV|dkr+t||dz
tj
rd|zdz}|d||jzdzz
}t|tj
r4|jr(d	d|j|rd|znd}Wd
|z}^|r|d|zz
}|S|tjkr||jS|tjkr||j|S|tjkrd|jdzS|tj	tj
tj
fvr!||j||gz|S||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.
        rrrrr@rAr4r5z* rYr)r;rTypeDeclqualsr$rdeclname	enumeratera	ArrayDeclPtrDecl	dim_qualsdimFuncDeclrBr!rTypenamerIdentifierTyperu)	r
r)	modifiersrr,rnstrimodifiers	         rrzCGenerator._generate_types1gg%.  Aw4SXXag..44
AF###A!"E
E1::2D
 )33
*
*8h88*Q"9QU#3U]CC#&:#3DCKD)C); < <s BBDJJx|44s::DD%.99
*Q"9QU#3U]CC#&:#3DC$**X]";";;cAADD%-88*~**+.88HN+C+C+C9=+E3::2+E G #Tz$Q#*_QH
EJ

&&qv...
EN
"
"&&qv}&MMM
E(
(
(88AG$$s**
U_emU^D
D
D&&qvyA37D'FF
F::a== r
cV||}||rd|zdzS|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)	conditionrs    rrhzCGenerator._parenthesize_ifs:
Q9Q<<	7S= Hr
c6|fdS)z. Common use case for _parenthesize_if
        c0|Sr)r`)rer
s rrfz8CGenerator._parenthesize_unless_simple.<locals>.<lambda>sd6J6J16M6M2Mr
)rhr(s` rr6z&CGenerator._parenthesize_unless_simples%$$Q(M(M(M(MNNNr
ct|tjtjtjtjtjfS)z~ Returns True for nodes that are "simple" - i.e. nodes that always
            have higher precedence than operators.
        )rarr(rr&r'r%r(s  rr`zCGenerator._is_simple_nodes5!eneh#ou~?@@	@r
N)F)Cr
__module____qualname____doc__rrrrr*r.r2r9r>rDrJrcrmrsrvr|rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr	rrrrrrrrrrhr6r`rr
rrrs	5	5	5	5'''???KKK<<<333555000
	
a
	
a	

	Q
	Q

	Q
	
a
q
	Q
a
a
"&q
	
a
q
	Q
Q
	Q
Q
Q

N777:CCC!!!!!!BBB++++++@@@>>>---			JJJBBB
			
<<<&&&===+++<<<&&&;;;;;;;;;0FFFKKK1111<+-d3!3!3!3!jOOO
@@@@@r
rN)rrobjectrrr
r<module>rIsaj@j@j@j@j@j@j@j@j@j@r
Back to Directory File Manager