package de.gaalop.gapp.instructionSet;
import de.gaalop.gapp.PosSelectorset;
import de.gaalop.gapp.Valueset;
import de.gaalop.gapp.Variableset;
import de.gaalop.gapp.variables.GAPPMultivector;
import de.gaalop.gapp.visitor.GAPPVisitor;
/**
* Represents the assignMv command in the GAPP IR.
*/
public class GAPPAssignMv extends GAPPBaseInstruction {
private GAPPMultivector destinationMv;
private PosSelectorset selectors;
private Valueset values;
public GAPPAssignMv(GAPPMultivector destinationMv, PosSelectorset selectors, Valueset values) {
this.destinationMv = destinationMv;
this.selectors = selectors;
this.values = values;
assert (selectors.size() == values.size());
}
public GAPPAssignMv(GAPPMultivector destinationMv) {
this.destinationMv = destinationMv;
this.selectors = new PosSelectorset();
this.values = new Valueset();
}
@Override
public Object accept(GAPPVisitor visitor, Object arg) {
return visitor.visitAssignMv(this, arg);
}
public GAPPMultivector getDestination() {
return destinationMv;
}
public PosSelectorset getSelectors() {
return selectors;
}
public Valueset getValues() {
return values;
}
public void setDestinationMv(GAPPMultivector destinationMv) {
this.destinationMv = destinationMv;
}
public void setSelectors(PosSelectorset selectors) {
this.selectors = selectors;
}
public void setValues(Valueset values) {
this.values = values;
}
}