#382 improvements to generator to support simple string constants

This commit is contained in:
rusefi 2017-04-03 21:09:04 -04:00
parent 77db5c9723
commit c490a1e70c
3 changed files with 18 additions and 2 deletions

Binary file not shown.

View File

@ -29,6 +29,7 @@ public class ConfigField {
public static final int LENGTH = 24; public static final int LENGTH = 24;
private static final char TS_COMMENT_TAG = '+'; private static final char TS_COMMENT_TAG = '+';
public static final String ENUM_SUFFIX = "_enum";
/** /**
* field name without structure name * field name without structure name
@ -224,7 +225,7 @@ public class ConfigField {
writeJavaFieldName(javaFieldsWriter, nameWithPrefix, tsPosition); writeJavaFieldName(javaFieldsWriter, nameWithPrefix, tsPosition);
javaFieldsWriter.write("FieldType.FLOAT);" + EOL); javaFieldsWriter.write("FieldType.FLOAT);" + EOL);
} else { } else {
String enumOptions = VariableRegistry.INSTANCE.get(type + "_enum"); String enumOptions = VariableRegistry.INSTANCE.get(type + ENUM_SUFFIX);
if (enumOptions != null && !javaEnums.contains(type)) { if (enumOptions != null && !javaEnums.contains(type)) {
javaEnums.add(type); javaEnums.add(type);

View File

@ -24,6 +24,7 @@ public class VariableRegistry extends TreeMap<String, String> {
private final StringBuilder cAllDefinitions = new StringBuilder("//\n// generated by ConfigDefinition.jar tool based on rusefi_config.txt\n//\n\n"); private final StringBuilder cAllDefinitions = new StringBuilder("//\n// generated by ConfigDefinition.jar tool based on rusefi_config.txt\n//\n\n");
private final StringBuilder javaNumbericDefinitions = new StringBuilder(); private final StringBuilder javaNumbericDefinitions = new StringBuilder();
private final StringBuilder javaStringDefinitions = new StringBuilder();
private VariableRegistry() { private VariableRegistry() {
super(String.CASE_INSENSITIVE_ORDER); super(String.CASE_INSENSITIVE_ORDER);
@ -64,9 +65,23 @@ public class VariableRegistry extends TreeMap<String, String> {
javaNumbericDefinitions.append("\tpublic static final int " + var + " = " + intValue + ";" + EOL); javaNumbericDefinitions.append("\tpublic static final int " + var + " = " + intValue + ";" + EOL);
} catch (NumberFormatException e) { } catch (NumberFormatException e) {
System.out.println("Not an integer: " + value); System.out.println("Not an integer: " + value);
if (isQuoted(value) && !var.trim().endsWith(ConfigField.ENUM_SUFFIX)) {
// quoted and not with enum suffix means plain string define statement
javaStringDefinitions.append("\tpublic static final String " + var + " = " + value + ";" + EOL);
}
} }
} }
private boolean isQuoted(String value) {
if (value == null)
return false;
value = value.trim();
if (value.isEmpty())
return false;
return value.charAt(0) == '"' && value.charAt(value.length() - 1) == '"';
}
public void register(String var, int i) { public void register(String var, int i) {
register(var, Integer.toString(i)); register(var, Integer.toString(i));
register(var + "_hex", Integer.toString(i, 16)); register(var + "_hex", Integer.toString(i, 16));
@ -82,6 +97,6 @@ public class VariableRegistry extends TreeMap<String, String> {
} }
public String getJavaConstants() { public String getJavaConstants() {
return javaNumbericDefinitions.toString(); return javaNumbericDefinitions.toString() + javaStringDefinitions.toString();
} }
} }