WarpPI/core/src/main/java/it/cavallium/warppi/math/parser/steps/AddImplicitMultiplications.java

48 lines
1.4 KiB
Java
Raw Normal View History

package it.cavallium.warppi.math.parser.steps;
2017-06-12 12:35:10 +02:00
import it.cavallium.warppi.math.Function;
import it.cavallium.warppi.math.MathContext;
import it.cavallium.warppi.math.functions.Multiplication;
import it.cavallium.warppi.math.parser.MathParserStep;
import it.cavallium.warppi.util.IntWrapper;
2017-06-12 12:35:10 +02:00
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
public class AddImplicitMultiplications implements MathParserStep {
2018-05-12 21:18:29 +02:00
private final MathContext context;
2018-09-22 11:17:30 +02:00
public AddImplicitMultiplications(final MathContext context) {
2017-06-12 12:35:10 +02:00
this.context = context;
}
2017-06-12 12:35:10 +02:00
@Override
2018-09-22 11:17:30 +02:00
public boolean eval(final IntWrapper curIndex, final Function lastFunction, final Function currentFunction,
final ObjectArrayList<Function> functionsList) {
if (currentFunction instanceof Function) {
2017-06-12 12:35:10 +02:00
if (lastFunction instanceof Function) {
functionsList.set(curIndex.i, new Multiplication(context, currentFunction, lastFunction));
functionsList.remove(curIndex.i + 1);
return true;
}
2018-09-28 11:39:28 +02:00
} else if (currentFunction instanceof Function) {
if (lastFunction instanceof Function) {
2017-06-12 12:35:10 +02:00
functionsList.set(curIndex.i, new Multiplication(context, currentFunction, lastFunction));
functionsList.remove(curIndex.i + 1);
return true;
}
2018-09-28 11:39:28 +02:00
}
2017-06-12 12:35:10 +02:00
return false;
}
2017-06-12 12:35:10 +02:00
@Override
public boolean requiresReversedIteration() {
return true;
}
@Override
public String getStepName() {
return "Add implicit multiplications before and after Functions";
2017-06-12 12:35:10 +02:00
}
}