47 lines
1.3 KiB
Java
47 lines
1.3 KiB
Java
package it.cavallium.warppi.math.parser.steps;
|
|
|
|
import it.cavallium.warppi.math.Function;
|
|
import it.cavallium.warppi.math.FunctionSingle;
|
|
import it.cavallium.warppi.math.parser.MathParserStep;
|
|
import it.cavallium.warppi.util.Error;
|
|
import it.cavallium.warppi.util.Errors;
|
|
import it.cavallium.warppi.util.IntWrapper;
|
|
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
|
|
|
|
/**
|
|
* Puts the argument of Single Functions inside them
|
|
*
|
|
* @author Andrea Cavalli
|
|
*
|
|
*/
|
|
public class FixSingleFunctionArgs implements MathParserStep {
|
|
|
|
@Override
|
|
public boolean eval(final IntWrapper curIndex, final Function lastFunction, final Function currentFunction,
|
|
final ObjectArrayList<Function> functionsList) throws Error {
|
|
if (currentFunction instanceof FunctionSingle) {
|
|
if (((FunctionSingle) currentFunction).getParameter() == null) {
|
|
if (lastFunction == null) {
|
|
throw new Error(Errors.MISSING_ARGUMENTS, "There is a function at the end without any argument specified.");
|
|
} else {
|
|
((FunctionSingle) currentFunction).setParameter(lastFunction);
|
|
functionsList.remove(curIndex.i + 1);
|
|
}
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public boolean requiresReversedIteration() {
|
|
return true;
|
|
}
|
|
|
|
@Override
|
|
public String getStepName() {
|
|
return "Fix Single Function Arguments";
|
|
}
|
|
|
|
}
|