//generated by abstract-syntax-gen package de.peeeq.wurstscript.luaAst; import java.util.*; @SuppressWarnings({"cast", "unused", "rawtypes"}) class LuaExprFunctionCallEImpl implements LuaExprFunctionCallE{ LuaExprFunctionCallEImpl(LuaExpr funcExpr, LuaExprlist arguments) { if (funcExpr == null) throw new IllegalArgumentException("Element funcExpr must not be null."); if (arguments == null) throw new IllegalArgumentException("Element arguments must not be null."); this.funcExpr = funcExpr; this.arguments = arguments; funcExpr.setParent(this); arguments.setParent(this); } private Element parent; public Element getParent() { return parent; } public void setParent(Element parent) { if (parent != null && this.parent != null) { throw new Error("Cannot change parent of element " + this.getClass().getSimpleName() + ", as it is already used in another tree." + "Use the copy method to create a new tree or remove the tree from its old parent or set the parent to null before moving the tree. "); } this.parent = parent; } public void replaceBy(Element other) { if (parent == null) throw new RuntimeException("Node not attached to tree."); for (int i=0; i action) { action.accept(this.funcExpr); action.accept(this.arguments); } public int size() { return 2; } @Override public LuaExprFunctionCallE copy() { LuaExprFunctionCallE result = new LuaExprFunctionCallEImpl((LuaExpr) this.funcExpr.copy(), (LuaExprlist) this.arguments.copy()); return result; } @Override public LuaExprFunctionCallE copyWithRefs() { LuaExprFunctionCallE res = copy(); Element self = this; res.accept(new Element.DefaultVisitor() { @Override public void visit(LuaExprMethodCall e) { super.visit(e); // check reference method { Element elem = e.getMethod(); while (elem != self && elem != null) { elem = elem.getParent(); } if (elem == self) { e.setMethod((LuaMethod) res.followPath(self.pathTo(e.getMethod()))); } } } @Override public void visit(LuaExprFunctionCall e) { super.visit(e); // check reference func { Element elem = e.getFunc(); while (elem != self && elem != null) { elem = elem.getParent(); } if (elem == self) { e.setFunc((LuaFunction) res.followPath(self.pathTo(e.getFunc()))); } } } @Override public void visit(LuaExprVarAccess e) { super.visit(e); // check reference var { Element elem = e.getVar(); while (elem != self && elem != null) { elem = elem.getParent(); } if (elem == self) { e.setVar((LuaVariable) res.followPath(self.pathTo(e.getVar()))); } } } @Override public void visit(LuaExprFuncRef e) { super.visit(e); // check reference func { Element elem = e.getFunc(); while (elem != self && elem != null) { elem = elem.getParent(); } if (elem == self) { e.setFunc((LuaFunction) res.followPath(self.pathTo(e.getFunc()))); } } } }); return res; } @Override public void clearAttributes() { funcExpr.clearAttributes(); arguments.clearAttributes(); clearAttributesLocal(); } @Override public void clearAttributesLocal() { } @Override public void accept(Visitor v) { v.visit(this); } @Override public T match(LuaStatement.Matcher matcher) { return matcher.case_LuaExprFunctionCallE(this); } @Override public void match(LuaStatement.MatcherVoid matcher) { matcher.case_LuaExprFunctionCallE(this); } @Override public T match(LuaExpr.Matcher matcher) { return matcher.case_LuaExprFunctionCallE(this); } @Override public void match(LuaExpr.MatcherVoid matcher) { matcher.case_LuaExprFunctionCallE(this); } @Override public T match(LuaCallExpr.Matcher matcher) { return matcher.case_LuaExprFunctionCallE(this); } @Override public void match(LuaCallExpr.MatcherVoid matcher) { matcher.case_LuaExprFunctionCallE(this); } @Override public T match(LuaExprOpt.Matcher matcher) { return matcher.case_LuaExprFunctionCallE(this); } @Override public void match(LuaExprOpt.MatcherVoid matcher) { matcher.case_LuaExprFunctionCallE(this); } @Override public T match(Element.Matcher matcher) { return matcher.case_LuaExprFunctionCallE(this); } @Override public void match(Element.MatcherVoid matcher) { matcher.case_LuaExprFunctionCallE(this); } @Override public String toString() { return "LuaExprFunctionCallE(" + funcExpr + ", " +arguments+")"; } public boolean structuralEquals(Element e) { if (e instanceof LuaExprFunctionCallE) { LuaExprFunctionCallE o = (LuaExprFunctionCallE) e; return this.funcExpr.structuralEquals(o.getFuncExpr()) && this.arguments.structuralEquals(o.getArguments()); } else { return false; } } /** */ public void print(StringBuilder sb, int indent) { de.peeeq.wurstscript.translation.lua.printing.LuaPrinter.print((LuaExprFunctionCallE)this, sb, indent); } }