bastools/api/src/main/java/io/github/applecommander/bastools/api/Optimization.java
Rob Greene 9078361a18 Adding an optimization to shorten variable names to 1 or 2 characters.
This allows more useful variable names in the program.
2018-07-16 22:16:59 -05:00

35 lines
1.2 KiB
Java

package io.github.applecommander.bastools.api;
import java.util.function.Function;
import io.github.applecommander.bastools.api.optimizations.ExtractConstantValues;
import io.github.applecommander.bastools.api.optimizations.ShortenVariableNames;
import io.github.applecommander.bastools.api.optimizations.MergeLines;
import io.github.applecommander.bastools.api.optimizations.RemoveEmptyStatements;
import io.github.applecommander.bastools.api.optimizations.RemoveRemStatements;
import io.github.applecommander.bastools.api.optimizations.Renumber;
/**
* All optimization capabilities are definined here in the "best" manner of execution.
* Essentially, the goal is to prioritize the optimizations to manage dependencies.
*/
public enum Optimization {
REMOVE_EMPTY_STATEMENTS(RemoveEmptyStatements::new),
REMOVE_REM_STATEMENTS(RemoveRemStatements::new),
SHORTEN_VARIABLE_NAMES(ShortenVariableNames::new),
EXTRACT_CONSTANT_VALUES(ExtractConstantValues::new),
MERGE_LINES(MergeLines::new),
RENUMBER(Renumber::new);
private Function<Configuration,Visitor> factory;
private Optimization(Function<Configuration,Visitor> factory) {
this.factory = factory;
}
public Visitor create(Configuration config) {
return factory.apply(config);
}
}