diff --git a/java_tools/configuration_definition/src/main/java/com/rusefi/ConfigField.java b/java_tools/configuration_definition/src/main/java/com/rusefi/ConfigField.java index 7726b19cf8..39467093e4 100644 --- a/java_tools/configuration_definition/src/main/java/com/rusefi/ConfigField.java +++ b/java_tools/configuration_definition/src/main/java/com/rusefi/ConfigField.java @@ -1,4 +1,56 @@ package com.rusefi; +import com.rusefi.core.Pair; +import com.rusefi.output.ConfigStructure; + public interface ConfigField { + ConfigStructure getStructureType(); + + boolean isArray(); + + String getTrueName(); + + String getFalseName(); + + boolean isBit(); + + boolean isDirective(); + + int getSize(ConfigField next); + + int[] getArraySizes(); + + String getComment(); + + String getName(); + + String getType(); + + int getElementSize(); + + boolean isIterate(); + + boolean isHasAutoscale(); + + ReaderState getState(); + + String getTsInfo(); + + boolean isFsioVisible(); + + String autoscaleSpec(); + + double autoscaleSpecNumber(); + + Pair autoscaleSpecPair(); + + String[] getTokens(); + + String getUnits(); + + double getMin(); + + double getMax(); + + int getDigits(); } diff --git a/java_tools/configuration_definition/src/main/java/com/rusefi/ConfigFieldImpl.java b/java_tools/configuration_definition/src/main/java/com/rusefi/ConfigFieldImpl.java index f6a35de7c9..d503b7453a 100644 --- a/java_tools/configuration_definition/src/main/java/com/rusefi/ConfigFieldImpl.java +++ b/java_tools/configuration_definition/src/main/java/com/rusefi/ConfigFieldImpl.java @@ -115,26 +115,32 @@ public class ConfigFieldImpl implements ConfigField { return Integer.parseInt(s); } + @Override public ConfigStructure getStructureType() { return getState().getStructures().get(getType()); } + @Override public boolean isArray() { return arraySizeVariableName != null || arraySizes.length != 0; } + @Override public String getTrueName() { return trueName; } + @Override public String getFalseName() { return falseName; } + @Override public boolean isBit() { return BOOLEAN_T.equalsIgnoreCase(type); } + @Override public boolean isDirective() { return DIRECTIVE_T.equalsIgnoreCase(type); } @@ -220,7 +226,8 @@ public class ConfigFieldImpl implements ConfigField { return matcher.matches(); } - public int getSize(ConfigFieldImpl next) { + @Override + public int getSize(ConfigField next) { if (isBit() && next.isBit()) { // we have a protection from 33+ bits in a row in BitState, see BitState.TooManyBitsInARow return 0; @@ -243,10 +250,12 @@ public class ConfigFieldImpl implements ConfigField { '}'; } + @Override public int[] getArraySizes() { return arraySizes; } + @Override public String getComment() { if (comment == null) return null; @@ -258,6 +267,7 @@ public class ConfigFieldImpl implements ConfigField { * * @see JavaFieldsConsumer#writeJavaFields prefix parameter for structure name */ + @Override public String getName() { return name; } @@ -265,10 +275,12 @@ public class ConfigFieldImpl implements ConfigField { /** * @see com.rusefi.newparse.parsing.Type */ + @Override public String getType() { return type; } + @Override public int getElementSize() { return isVoid() ? 0 : TypesHelper.getElementSize(state, type); } @@ -276,26 +288,32 @@ public class ConfigFieldImpl implements ConfigField { /** * this property of array expands field into a bunch of variables like field1 field2 field3 etc */ + @Override public boolean isIterate() { return isIterate; } + @Override public boolean isHasAutoscale() { return hasAutoscale; } - public ReaderStateImpl getState() { + @Override + public ReaderState getState() { return state; } + @Override public String getTsInfo() { return tsInfo; } + @Override public boolean isFsioVisible() { return fsioVisible; } + @Override public String autoscaleSpec() { Pair pair = autoscaleSpecPair(); if (pair == null) @@ -303,6 +321,7 @@ public class ConfigFieldImpl implements ConfigField { return pair.first + ", " + pair.second; } + @Override public double autoscaleSpecNumber() { Pair pair = autoscaleSpecPair(); if (pair == null) @@ -310,6 +329,7 @@ public class ConfigFieldImpl implements ConfigField { return 1.0 * pair.second / pair.first; } + @Override public Pair autoscaleSpecPair() { if (!hasAutoscale) { return null; @@ -351,12 +371,14 @@ public class ConfigFieldImpl implements ConfigField { return new Pair<>(mul, div); } - private String[] getTokens() { + @Override + public String[] getTokens() { if (tsInfo == null) return new String[0]; return tsInfo.split(","); } + @Override public String getUnits() { String[] tokens = getTokens(); if (tokens.length == 0) @@ -364,6 +386,7 @@ public class ConfigFieldImpl implements ConfigField { return unquote(tokens[0].trim()); } + @Override public double getMin() { String[] tokens = getTokens(); if (tokens.length < 4) @@ -371,6 +394,7 @@ public class ConfigFieldImpl implements ConfigField { return Double.parseDouble(tokens[3]); } + @Override public double getMax() { String[] tokens = getTokens(); if (tokens.length < 5) @@ -378,6 +402,7 @@ public class ConfigFieldImpl implements ConfigField { return Double.parseDouble(tokens[4]); } + @Override public int getDigits() { String[] tokens = getTokens(); if (tokens.length < 6) diff --git a/java_tools/configuration_definition/src/main/java/com/rusefi/ReaderState.java b/java_tools/configuration_definition/src/main/java/com/rusefi/ReaderState.java index a72118c403..67d664093e 100644 --- a/java_tools/configuration_definition/src/main/java/com/rusefi/ReaderState.java +++ b/java_tools/configuration_definition/src/main/java/com/rusefi/ReaderState.java @@ -1,5 +1,6 @@ package com.rusefi; +import com.rusefi.output.ConfigStructure; import com.rusefi.output.ConfigurationConsumer; import java.io.IOException; @@ -23,6 +24,10 @@ public interface ReaderState { VariableRegistry getVariableRegistry(); + Map getTsCustomSize(); + + Map getStructures(); + Map getTsCustomLine(); void setHeaderMessage(String headerMessage); diff --git a/java_tools/configuration_definition/src/main/java/com/rusefi/ReaderStateImpl.java b/java_tools/configuration_definition/src/main/java/com/rusefi/ReaderStateImpl.java index 8cb617576d..ca842a8e36 100644 --- a/java_tools/configuration_definition/src/main/java/com/rusefi/ReaderStateImpl.java +++ b/java_tools/configuration_definition/src/main/java/com/rusefi/ReaderStateImpl.java @@ -386,10 +386,12 @@ public class ReaderStateImpl implements ReaderState { return variableRegistry; } + @Override public Map getTsCustomSize() { return tsCustomSize; } + @Override public Map getStructures() { return structures; } diff --git a/java_tools/configuration_definition/src/main/java/com/rusefi/output/ConfigStructureImpl.java b/java_tools/configuration_definition/src/main/java/com/rusefi/output/ConfigStructureImpl.java index dc7929d56f..fdaf1b9c4b 100644 --- a/java_tools/configuration_definition/src/main/java/com/rusefi/output/ConfigStructureImpl.java +++ b/java_tools/configuration_definition/src/main/java/com/rusefi/output/ConfigStructureImpl.java @@ -1,9 +1,6 @@ package com.rusefi.output; -import com.rusefi.BitState; -import com.rusefi.ConfigFieldImpl; -import com.rusefi.ReaderStateImpl; -import com.rusefi.TypesHelper; +import com.rusefi.*; import java.util.ArrayList; import java.util.HashSet; @@ -33,7 +30,7 @@ public class ConfigStructureImpl implements ConfigStructure { private final BitState readingBitState = new BitState(); - private ConfigFieldImpl cPrevField = ConfigFieldImpl.VOID; + private ConfigField cPrevField = ConfigFieldImpl.VOID; private final Set names = new HashSet<>(); public ConfigStructureImpl(String name, String comment, boolean withPrefix) { diff --git a/java_tools/configuration_definition/src/main/java/com/rusefi/output/FieldIterator.java b/java_tools/configuration_definition/src/main/java/com/rusefi/output/FieldIterator.java index c8aa2dab6e..31f807cc08 100644 --- a/java_tools/configuration_definition/src/main/java/com/rusefi/output/FieldIterator.java +++ b/java_tools/configuration_definition/src/main/java/com/rusefi/output/FieldIterator.java @@ -1,6 +1,7 @@ package com.rusefi.output; import com.rusefi.BitState; +import com.rusefi.ConfigField; import com.rusefi.ConfigFieldImpl; import java.util.List; @@ -12,7 +13,7 @@ import java.util.List; public class FieldIterator { private final List fields; BitState bitState = new BitState(); - private ConfigFieldImpl prev = ConfigFieldImpl.VOID; + private ConfigField prev = ConfigFieldImpl.VOID; ConfigFieldImpl next; ConfigFieldImpl cf; @@ -23,7 +24,7 @@ public class FieldIterator { /** * return previous field which is not a directive */ - public ConfigFieldImpl getPrev() { + public ConfigField getPrev() { return prev; } diff --git a/java_tools/configuration_definition/src/main/java/com/rusefi/output/JavaFieldsConsumer.java b/java_tools/configuration_definition/src/main/java/com/rusefi/output/JavaFieldsConsumer.java index 6e5deb41b2..1342e4ac23 100644 --- a/java_tools/configuration_definition/src/main/java/com/rusefi/output/JavaFieldsConsumer.java +++ b/java_tools/configuration_definition/src/main/java/com/rusefi/output/JavaFieldsConsumer.java @@ -45,7 +45,7 @@ public abstract class JavaFieldsConsumer implements ConfigurationConsumer { } } - private boolean isStringField(ConfigFieldImpl configField) { + private boolean isStringField(ConfigField configField) { String custom = state.getTsCustomLine().get(configField.getType()); return custom != null && custom.toLowerCase().startsWith(IniFileModel.FIELD_TYPE_STRING); } @@ -54,9 +54,9 @@ public abstract class JavaFieldsConsumer implements ConfigurationConsumer { public void handleEndStruct(ReaderState readerState, ConfigStructure structure) throws IOException { FieldsStrategy fieldsStrategy = new FieldsStrategy() { protected int writeOneField(FieldIterator iterator, String prefix, int tsPosition) { - ConfigFieldImpl prev = iterator.getPrev(); - ConfigFieldImpl configField = iterator.cf; - ConfigFieldImpl next = iterator.next; + ConfigField prev = iterator.getPrev(); + ConfigField configField = iterator.cf; + ConfigField next = iterator.next; int bitIndex = iterator.bitState.get(); if (configField.isDirective())