public override void CaseAFieldDecl(AFieldDecl node) { if (node.GetStatic() != null) return; writer.WriteLine(TypeToString(node.GetType()) + " " + node.GetName().Text + ";"); if (Fields.Any(decl => decl.GetName().Text == node.GetName().Text)) { return; } Fields.Add(node); //node.SetInit(null); node.Parent().RemoveChild(node); }
public override void CaseAFieldDecl(AFieldDecl node) { if (node.GetType() is ANamedType) { ANamedType type = (ANamedType)node.GetType(); if (finalTrans.data.StructTypeLinks.ContainsKey(type)) { AStructDecl strDecl = finalTrans.data.StructTypeLinks[type]; if (strDecl.GetLocals().Cast<PLocalDecl>().Select(decl => decl is AALocalDecl).Count() == 0) { node.Parent().RemoveChild(node); return; } } } base.CaseAFieldDecl(node); }
public override void CaseAFieldDecl(AFieldDecl node) { if (node.GetConst() == null) return; initialFieldDecl = node; if (IsConstant(node.GetInit())) { List<AFieldLvalue> lvalues = new List<AFieldLvalue>(); lvalues.AddRange(data.FieldLinks.Where(link => link.Value == node).Select(link => link.Key)); foreach (AFieldLvalue lvalue in lvalues) { PExp parent = (PExp)lvalue.Parent(); parent.ReplaceBy(Util.MakeClone(node.GetInit(), data)); } node.Parent().RemoveChild(node); } initialFieldDecl = null; }