From de9fb2ab697fb4559eea9f6d0fd0cc1df50f6ddb Mon Sep 17 00:00:00 2001 From: rusefillc Date: Sun, 26 Nov 2023 00:50:58 -0500 Subject: [PATCH] only:EPIC: Improve toolset for default tune canned tune generation #4871 --- .../src/main/java/com/rusefi/ConfigField.java | 7 +++++++ .../src/main/java/com/rusefi/ConfigFieldImpl.java | 7 +++++++ .../src/main/java/com/rusefi/ReaderState.java | 2 ++ .../src/main/java/com/rusefi/ReaderStateImpl.java | 8 +++++++- .../src/main/java/com/rusefi/output/ConfigStructure.java | 2 ++ .../main/java/com/rusefi/output/ConfigStructureImpl.java | 9 ++++++++- 6 files changed, 33 insertions(+), 2 deletions(-) diff --git a/java_tools/configuration_definition_base/src/main/java/com/rusefi/ConfigField.java b/java_tools/configuration_definition_base/src/main/java/com/rusefi/ConfigField.java index 2a94c44b91..0ca52df208 100644 --- a/java_tools/configuration_definition_base/src/main/java/com/rusefi/ConfigField.java +++ b/java_tools/configuration_definition_base/src/main/java/com/rusefi/ConfigField.java @@ -10,6 +10,11 @@ public interface ConfigField { return null; } + @Override + public ConfigStructure getParent() { + return null; + } + @Override public boolean isArray() { return false; @@ -158,6 +163,8 @@ public interface ConfigField { } } + ConfigStructure getParent(); + ConfigStructure getStructureType(); boolean isArray(); diff --git a/java_tools/configuration_definition_base/src/main/java/com/rusefi/ConfigFieldImpl.java b/java_tools/configuration_definition_base/src/main/java/com/rusefi/ConfigFieldImpl.java index 8c220fd4cc..578c0ee9dc 100644 --- a/java_tools/configuration_definition_base/src/main/java/com/rusefi/ConfigFieldImpl.java +++ b/java_tools/configuration_definition_base/src/main/java/com/rusefi/ConfigFieldImpl.java @@ -50,6 +50,7 @@ public class ConfigFieldImpl implements ConfigField { private final boolean hasAutoscale; private final String trueName; private final String falseName; + private final ConfigStructure parent; private boolean isFromIterate; private String iterateOriginalName; private int iterateIndex; @@ -78,6 +79,7 @@ public class ConfigFieldImpl implements ConfigField { if (!isVoid()) Objects.requireNonNull(state); this.state = state; + this.parent = state == null ? null : (state.isStackEmpty() ? null : state.peek()); this.comment = comment; if (!isVoid()) @@ -104,6 +106,11 @@ public class ConfigFieldImpl implements ConfigField { } } + @Override + public ConfigStructure getParent() { + return parent; + } + private static int getSize(VariableRegistry variableRegistry, String s) { if (variableRegistry.intValues.containsKey(s)) { return variableRegistry.intValues.get(s); diff --git a/java_tools/configuration_definition_base/src/main/java/com/rusefi/ReaderState.java b/java_tools/configuration_definition_base/src/main/java/com/rusefi/ReaderState.java index 9b36ee48c2..b61dff67eb 100644 --- a/java_tools/configuration_definition_base/src/main/java/com/rusefi/ReaderState.java +++ b/java_tools/configuration_definition_base/src/main/java/com/rusefi/ReaderState.java @@ -39,4 +39,6 @@ public interface ReaderState { List getPrependFiles(); boolean isStackEmpty(); + + ConfigStructure peek(); } diff --git a/java_tools/configuration_definition_base/src/main/java/com/rusefi/ReaderStateImpl.java b/java_tools/configuration_definition_base/src/main/java/com/rusefi/ReaderStateImpl.java index f3e139386e..4bb42bd76d 100644 --- a/java_tools/configuration_definition_base/src/main/java/com/rusefi/ReaderStateImpl.java +++ b/java_tools/configuration_definition_base/src/main/java/com/rusefi/ReaderStateImpl.java @@ -297,7 +297,8 @@ public class ReaderStateImpl implements ReaderState { name = line; comment = null; } - ConfigStructureImpl structure = new ConfigStructureImpl(name, comment, withPrefix); + ConfigStructure parent = state.stack.isEmpty() ? null : state.stack.peek(); + ConfigStructureImpl structure = new ConfigStructureImpl(name, comment, withPrefix, parent); state.stack.push(structure); if (log.debugEnabled()) log.debug("Starting structure " + structure.getName()); @@ -443,4 +444,9 @@ public class ReaderStateImpl implements ReaderState { public boolean isStackEmpty() { return stack.isEmpty(); } + + @Override + public ConfigStructure peek() { + return stack.peek(); + } } diff --git a/java_tools/configuration_definition_base/src/main/java/com/rusefi/output/ConfigStructure.java b/java_tools/configuration_definition_base/src/main/java/com/rusefi/output/ConfigStructure.java index 1094553e16..00df7483a3 100644 --- a/java_tools/configuration_definition_base/src/main/java/com/rusefi/output/ConfigStructure.java +++ b/java_tools/configuration_definition_base/src/main/java/com/rusefi/output/ConfigStructure.java @@ -7,6 +7,8 @@ import java.util.List; public interface ConfigStructure { String UNUSED_ANYTHING_PREFIX = "unused"; + ConfigStructure getParent(); + String getName(); ConfigField getTsFieldByName(String name); diff --git a/java_tools/configuration_definition_base/src/main/java/com/rusefi/output/ConfigStructureImpl.java b/java_tools/configuration_definition_base/src/main/java/com/rusefi/output/ConfigStructureImpl.java index 3747f59b9f..27b241955a 100644 --- a/java_tools/configuration_definition_base/src/main/java/com/rusefi/output/ConfigStructureImpl.java +++ b/java_tools/configuration_definition_base/src/main/java/com/rusefi/output/ConfigStructureImpl.java @@ -20,6 +20,7 @@ public class ConfigStructureImpl implements ConfigStructure { private final String name; private final String comment; private final boolean withPrefix; + private final ConfigStructure parent; private final List cFields = new ArrayList<>(); private final List tsFields = new ArrayList<>(); @@ -32,10 +33,11 @@ public class ConfigStructureImpl implements ConfigStructure { private ConfigField cPrevField = ConfigFieldImpl.VOID; private final Set names = new HashSet<>(); - public ConfigStructureImpl(String name, String comment, boolean withPrefix) { + public ConfigStructureImpl(String name, String comment, boolean withPrefix, ConfigStructure parent) { this.name = name; this.comment = comment; this.withPrefix = withPrefix; + this.parent = parent; } public void addBitField(ConfigFieldImpl bitField) { @@ -43,6 +45,11 @@ public class ConfigStructureImpl implements ConfigStructure { this.readingBitState.incrementBitIndex(bitField); } + @Override + public ConfigStructure getParent() { + return parent; + } + @Override public String getName() { return name;