From 3f99110467a2829a110dd81b53e3145b73748749 Mon Sep 17 00:00:00 2001 From: Matthew Kennedy Date: Thu, 24 Jun 2021 16:43:56 -0700 Subject: [PATCH] new parse: write C structs (#2852) * fix offsets inside struct arrays * style * fix index writing for arrays of structs * write TS context comments * cleanup * ts writer copies all lines input -> output * Add _hex and _char definitions * definition tostring * replace variables * wire up firing order replacement * c struct writer Co-authored-by: Matthew Kennedy --- .../src/com/rusefi/ConfigDefinition.java | 9 ++---- .../newparse/outputs/CStructWriter.java | 30 +++++++++++++++++++ 2 files changed, 33 insertions(+), 6 deletions(-) create mode 100644 java_tools/configuration_definition/src/com/rusefi/newparse/outputs/CStructWriter.java diff --git a/java_tools/configuration_definition/src/com/rusefi/ConfigDefinition.java b/java_tools/configuration_definition/src/com/rusefi/ConfigDefinition.java index 9691e2bce5..7e54506505 100644 --- a/java_tools/configuration_definition/src/com/rusefi/ConfigDefinition.java +++ b/java_tools/configuration_definition/src/com/rusefi/ConfigDefinition.java @@ -2,6 +2,7 @@ package com.rusefi; import com.rusefi.generated.*; import com.rusefi.newparse.ParseState; +import com.rusefi.newparse.outputs.CStructWriter; import com.rusefi.newparse.outputs.TsWriter; import com.rusefi.newparse.parsing.Definition; import com.rusefi.output.*; @@ -278,12 +279,8 @@ public class ConfigDefinition { } // Write C structs - // PrintStream cPrintStream = new PrintStream(new FileOutputStream(destCHeaderFileName)); - // for (Struct s : listener.getStructs()) { - // StructLayout sl = new StructLayout(0, "root", s); - // sl.writeCLayoutRoot(cPrintStream); - // } - // cPrintStream.close(); + // CStructWriter cStructs = new CStructWriter(); + // cStructs.writeCStructs(listener, destCHeaderFileName + ".test"); // Write tunerstudio layout // TsWriter writer = new TsWriter(); diff --git a/java_tools/configuration_definition/src/com/rusefi/newparse/outputs/CStructWriter.java b/java_tools/configuration_definition/src/com/rusefi/newparse/outputs/CStructWriter.java new file mode 100644 index 0000000000..70701a1302 --- /dev/null +++ b/java_tools/configuration_definition/src/com/rusefi/newparse/outputs/CStructWriter.java @@ -0,0 +1,30 @@ +package com.rusefi.newparse.outputs; + +import com.rusefi.newparse.ParseState; +import com.rusefi.newparse.layout.StructLayout; +import com.rusefi.newparse.parsing.Struct; + +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.PrintStream; + +public class CStructWriter { + public void writeCStructs(ParseState parser, String outputFile) throws FileNotFoundException { + PrintStream ps = new PrintStream(new FileOutputStream(outputFile)); + + ps.println( + "// begin\n" + + "#pragma once\n" + + "#include \"rusefi_types.h\"" + ); + + for (Struct s : parser.getStructs()) { + StructLayout sl = new StructLayout(0, "root", s); + sl.writeCLayoutRoot(ps); + } + + ps.println("// end"); + + ps.close(); + } +}