/** * Copies a list of vectors (deep copy) * @param vectors The list of vectors to be copied * @return The copied list */ private LinkedList<GAPPVector> copyVectors(LinkedList<GAPPVector> vectors) { LinkedList<GAPPVector> result = new LinkedList<GAPPVector>(); for (GAPPVector part : vectors) { result.add((GAPPVector) GAPPValueHolderCopier.copyValueHolder(part)); } return result; }
@Override public Object visitCalculateMv(GAPPCalculateMv gappCalculateMv, Object arg) { return new GAPPCalculateMv(gappCalculateMv.getType(), (GAPPMultivector) GAPPValueHolderCopier.copyValueHolder(gappCalculateMv.getDestination()), (GAPPMultivector) GAPPValueHolderCopier.copyValueHolder(gappCalculateMv.getOperand1()), (GAPPMultivector) GAPPValueHolderCopier.copyValueHolder(gappCalculateMv.getOperand2())); }
@Override public Object visitCalculateMvCoeff(GAPPCalculateMvCoeff gappCalculateMvCoeff, Object arg) { return new GAPPCalculateMv(gappCalculateMvCoeff.getType(), (GAPPMultivector) GAPPValueHolderCopier.copyValueHolder(gappCalculateMvCoeff.getDestination()), (GAPPMultivector) GAPPValueHolderCopier.copyValueHolder(gappCalculateMvCoeff.getOperand1()), (GAPPMultivector) GAPPValueHolderCopier.copyValueHolder(gappCalculateMvCoeff.getOperand2())); }
/** * Copies a variableset * @param var The variableset to be copied * @return The copy */ private Valueset copyValueset(Valueset var) { Valueset copy = new Valueset(); for (GAPPConstant cur : var) { copy.add((GAPPConstant) GAPPValueHolderCopier.copyValueHolder(cur)); } return copy; }
/** * Copies a variableset * @param var The variableset to be copied * @return The copy */ private Variableset copyVariableset(Variableset var) { Variableset copy = new Variableset(); for (GAPPValueHolder cur : var) { copy.add(GAPPValueHolderCopier.copyValueHolder(cur)); } return copy; }
@Override public Object visitResetMv(GAPPResetMv gappResetMv, Object arg) { return new GAPPResetMv( (GAPPMultivector) GAPPValueHolderCopier.copyValueHolder( gappResetMv.getDestination()), gappResetMv.getSize()); }
@Override public Object visitSetMv(GAPPSetMv gappSetMv, Object arg) { return new GAPPSetMv( (GAPPMultivector) GAPPValueHolderCopier.copyValueHolder(gappSetMv.getDestination()), (GAPPSetOfVariables) GAPPValueHolderCopier.copyValueHolder(gappSetMv.getSource()), copyPosSelectorset(gappSetMv.getSelectorsDest()), copySelectorset(gappSetMv.getSelectorsSrc())); }
@Override public Object visitSetVector(GAPPSetVector gappSetVector, Object arg) { return new GAPPSetVector( (GAPPVector) GAPPValueHolderCopier.copyValueHolder(gappSetVector.getDestination()), copyListOfArgs(gappSetVector.getEntries()) ); }
@Override public Object visitAssignMv(GAPPAssignMv gappAssignMv, Object arg) { return new GAPPAssignMv( (GAPPMultivector) GAPPValueHolderCopier.copyValueHolder(gappAssignMv.getDestination()), copyPosSelectorset(gappAssignMv.getSelectors()), copyValueset(gappAssignMv.getValues())); }
@Override public Object visitDotVectors(GAPPDotVectors gappDotVectors, Object arg) { return new GAPPDotVectors( (GAPPMultivector) GAPPValueHolderCopier.copyValueHolder(gappDotVectors.getDestination()), copySelector(gappDotVectors.getDestSelector()), copyVectors(gappDotVectors.getParts())); }
/** * Copies a SetVectorArgument instance * @param arg The argument * @return The copied argument */ private SetVectorArgument copyArgument(SetVectorArgument arg) { if (arg.isConstant()) { ConstantSetVectorArgument c = (ConstantSetVectorArgument) arg; return new ConstantSetVectorArgument(c.getValue()); } else { PairSetOfVariablesAndIndices pair = (PairSetOfVariablesAndIndices) arg; return new PairSetOfVariablesAndIndices((GAPPSetOfVariables) GAPPValueHolderCopier.copyValueHolder(pair.getSetOfVariable()), copySelectorset(pair.getSelectors())); } }