package zinara.ast.instructions; import java.io.IOException; import java.util.ArrayList; import zinara.code_generator.*; import zinara.ast.expression.Expression; import zinara.ast.expression.Identifier; import zinara.exceptions.InvalidAssignationException; import zinara.exceptions.InvalidCodeException; import zinara.exceptions.TypeClashException; public class MultipleAssignation extends Assignation { public ArrayList assignations; // Array of SingleAssignation public boolean isSingle(){ return false; } public MultipleAssignation(ArrayList as) { this.assignations = as; } public MultipleAssignation(ArrayList ids, ArrayList expressions) throws InvalidAssignationException { if (ids.size() != expressions.size()) throw new InvalidAssignationException(); // FIX THIS: it's missing some argument to InvalidAssignationException to tell whats the reason of its invalidness ArrayList asigs = new ArrayList(); for (int i = 0 ; i < ids.size() ; ++i){ asigs.add(new SingleAssignation(new Identifier((String)ids.get(i), null), (Expression)expressions.get(i))); } this.assignations = asigs; } public boolean add(SingleAssignation a) { return this.assignations.add(a); } public SingleAssignation get(int i) { return (SingleAssignation)this.assignations.get(i); } public int size(){ return this.assignations.size(); } public String toString() { String ret = ""; SingleAssignation currentAssignation; for (int i = 0; i < assignations.size(); i++) ret += " " + assignations.get(i); return "<MultipleAssignation:" + ret + ">"; } public void tox86(Genx86 generate) throws IOException,InvalidCodeException{ for (int i = 0; i < assignations.size(); i++) ((SingleAssignation)assignations.get(i)).tox86(generate); } }