2023-08-20 16:10:22 +08:00
|
|
|
import java.io.OutputStreamWriter;
|
|
|
|
|
|
|
|
import org.antlr.v4.runtime.*;
|
|
|
|
import org.antlr.v4.runtime.tree.*;
|
|
|
|
|
|
|
|
public class MainRunner {
|
|
|
|
|
|
|
|
private static EnumsHelper.EnumCollection_t getEnumsCollection(String infile) throws Exception {
|
|
|
|
CommonHelper.InputFilePair pair = CommonHelper.openInputFile(infile);
|
|
|
|
CKGeneralLexer lexer = new CKGeneralLexer(pair.mAntlrStream);
|
|
|
|
CommonTokenStream tokens = new CommonTokenStream(lexer);
|
|
|
|
CKEnumsParser parser = new CKEnumsParser(tokens);
|
|
|
|
|
|
|
|
ParseTree tree = parser.prog();
|
|
|
|
ParseTreeWalker walker = new ParseTreeWalker();
|
|
|
|
EnumsWalker worker = new EnumsWalker(tokens);
|
|
|
|
walker.walk(worker, tree);
|
|
|
|
|
|
|
|
pair.mUnderlyingStream.close();
|
|
|
|
return worker.getEnums();
|
|
|
|
}
|
|
|
|
|
|
|
|
private static EnumsHelper.Enum_t organiseDefines(String infile, String assignedEnumName) throws Exception {
|
|
|
|
CommonHelper.InputFilePair pair = CommonHelper.openInputFile(infile);
|
|
|
|
CKGeneralLexer lexer = new CKGeneralLexer(pair.mAntlrStream);
|
|
|
|
CommonTokenStream tokens = new CommonTokenStream(lexer);
|
|
|
|
CKDefinesParser parser = new CKDefinesParser(tokens);
|
|
|
|
|
|
|
|
ParseTree tree = parser.prog();
|
|
|
|
ParseTreeWalker walker = new ParseTreeWalker();
|
|
|
|
DefinesWalker worker = new DefinesWalker(tokens);
|
|
|
|
walker.walk(worker, tree);
|
|
|
|
|
|
|
|
pair.mUnderlyingStream.close();
|
|
|
|
|
|
|
|
EnumsHelper.Enum_t result = worker.getEnum();
|
|
|
|
result.mEnumName = assignedEnumName;
|
|
|
|
return result;
|
|
|
|
}
|
|
|
|
|
2023-08-26 20:34:51 +08:00
|
|
|
private static EnumsHelper.Enum_t organiseClassid(String infile) throws Exception {
|
2023-08-20 16:10:22 +08:00
|
|
|
CommonHelper.InputFilePair pair = CommonHelper.openInputFile(infile);
|
|
|
|
CKGeneralLexer lexer = new CKGeneralLexer(pair.mAntlrStream);
|
|
|
|
CommonTokenStream tokens = new CommonTokenStream(lexer);
|
|
|
|
CKDefinesParser parser = new CKDefinesParser(tokens);
|
|
|
|
|
|
|
|
ParseTree tree = parser.prog();
|
|
|
|
ParseTreeWalker walker = new ParseTreeWalker();
|
|
|
|
ClassidWalker worker = new ClassidWalker(tokens);
|
|
|
|
walker.walk(worker, tree);
|
|
|
|
|
|
|
|
pair.mUnderlyingStream.close();
|
|
|
|
|
|
|
|
EnumsHelper.Enum_t result = worker.getEnum();
|
2023-08-26 20:34:51 +08:00
|
|
|
result.mEnumName = "CK_CLASSID";
|
2023-08-20 16:10:22 +08:00
|
|
|
return result;
|
|
|
|
}
|
|
|
|
|
|
|
|
public static void main(String[] args) throws Exception {
|
2023-10-10 10:39:27 +08:00
|
|
|
|
2023-08-26 20:34:51 +08:00
|
|
|
// =========== CKERROR ===========
|
2023-08-20 21:38:16 +08:00
|
|
|
EnumsHelper.Enum_t ckerror = organiseDefines("src/CKError.txt", "CKERROR");
|
2023-10-10 10:39:27 +08:00
|
|
|
GeneralWriter.writeEnum("dest/CKError.hpp", ckerror);
|
|
|
|
GeneralWriter.writePyEnum("dest/CKError.py", ckerror);
|
|
|
|
ErrorsWriter.writeAccVal("dest/CKError.AccVal.hpp", ckerror);
|
|
|
|
GeneralWriter.writePyAccVal("dest/CKError.AccVal.py", ckerror);
|
|
|
|
|
2023-08-26 20:34:51 +08:00
|
|
|
// =========== CK_CLASSID ===========
|
|
|
|
EnumsHelper.Enum_t classid = organiseClassid("src/CK_CLASSID.txt");
|
2023-10-10 10:39:27 +08:00
|
|
|
GeneralWriter.writeEnum("dest/CK_CLASSID.hpp", classid);
|
|
|
|
GeneralWriter.writePyEnum("dest/CK_CLASSID.py", classid);
|
|
|
|
ClassidWriter.writeAccVal("dest/CK_CLASSID.AccVal.hpp", classid);
|
|
|
|
GeneralWriter.writePyAccVal("dest/CK_CLASSID.AccVal.py", classid);
|
|
|
|
|
2023-08-26 20:34:51 +08:00
|
|
|
// =========== Define2 ===========
|
|
|
|
// Define2 do not need values.
|
|
|
|
EnumsHelper.EnumCollection_t def2 = getEnumsCollection("src/Defines2.txt");
|
2023-10-10 10:39:27 +08:00
|
|
|
GeneralWriter.writeEnums("dest/CK_CLASSID.hpp", def2);
|
|
|
|
GeneralWriter.writePyEnums("dest/CK_CLASSID.py", def2);
|
|
|
|
|
2023-08-26 20:34:51 +08:00
|
|
|
// =========== Combined enums ===========
|
|
|
|
EnumsHelper.EnumCollection_t ck2Enums = getEnumsCollection("src/CKEnums.txt"),
|
|
|
|
vxEnums = getEnumsCollection("src/VxEnums.txt");
|
2023-10-10 10:39:27 +08:00
|
|
|
GeneralWriter.writeEnums("dest/CKEnums.hpp", ck2Enums);
|
|
|
|
GeneralWriter.writePyEnums("dest/CKEnums.py", ck2Enums);
|
|
|
|
GeneralWriter.writeAccVals("dest/CKEnums.AccVal.hpp", ck2Enums, CommonHelper.CKParts.CK2);
|
|
|
|
GeneralWriter.writePyAccVals("dest/CKEnums.AccVal.py", ck2Enums);
|
|
|
|
GeneralWriter.writeEnums("dest/VxEnums.hpp", vxEnums);
|
|
|
|
GeneralWriter.writePyEnums("dest/VxEnums.py", vxEnums);
|
|
|
|
GeneralWriter.writeAccVals("dest/VxEnums.AccVal.hpp", vxEnums, CommonHelper.CKParts.VxMath);
|
|
|
|
GeneralWriter.writePyAccVals("dest/VxEnums.AccVal.py", vxEnums);
|
|
|
|
|
2023-08-26 20:34:51 +08:00
|
|
|
// =========== Single enums ===========
|
|
|
|
EnumsHelper.Enum_t single;
|
2023-10-10 10:39:27 +08:00
|
|
|
|
2023-08-26 20:34:51 +08:00
|
|
|
single = organiseDefines("src/CK_STATECHUNK_CHUNKVERSION.txt", "CK_STATECHUNK_CHUNKVERSION");
|
2023-10-10 10:39:27 +08:00
|
|
|
GeneralWriter.writeEnum("dest/CK_STATECHUNK_CHUNKVERSION.hpp", single);
|
|
|
|
GeneralWriter.writePyEnum("dest/CK_STATECHUNK_CHUNKVERSION.py", single);
|
|
|
|
GeneralWriter.writeAccVal("dest/CK_STATECHUNK_CHUNKVERSION.AccVal.hpp", single, CommonHelper.CKParts.CK2);
|
|
|
|
GeneralWriter.writePyAccVal("dest/CK_STATECHUNK_CHUNKVERSION.AccVal.py", single);
|
2023-08-26 20:34:51 +08:00
|
|
|
|
|
|
|
single = organiseDefines("src/CK_STATECHUNK_DATAVERSION.txt", "CK_STATECHUNK_DATAVERSION");
|
2023-10-10 10:39:27 +08:00
|
|
|
GeneralWriter.writeEnum("dest/CK_STATECHUNK_DATAVERSION.hpp", single);
|
|
|
|
GeneralWriter.writePyEnum("dest/CK_STATECHUNK_DATAVERSION.py", single);
|
|
|
|
GeneralWriter.writeAccVal("dest/CK_STATECHUNK_DATAVERSION.AccVal.hpp", single, CommonHelper.CKParts.CK2);
|
|
|
|
GeneralWriter.writePyAccVal("dest/CK_STATECHUNK_DATAVERSION.AccVal.py", single);
|
|
|
|
|
2023-09-10 13:23:04 +08:00
|
|
|
single = organiseDefines("src/CK_BITMAPDATA_FLAGS.txt", "CK_BITMAPDATA_FLAGS");
|
2023-10-10 10:39:27 +08:00
|
|
|
GeneralWriter.writeEnum("dest/CK_BITMAPDATA_FLAGS.hpp", single);
|
|
|
|
GeneralWriter.writePyEnum("dest/CK_BITMAPDATA_FLAGS.py", single);
|
|
|
|
GeneralWriter.writeAccVal("dest/CK_BITMAPDATA_FLAGS.AccVal.hpp", single, CommonHelper.CKParts.CK2);
|
|
|
|
GeneralWriter.writePyAccVal("dest/CK_BITMAPDATA_FLAGS.AccVal.py", single);
|
|
|
|
|
2023-08-20 16:10:22 +08:00
|
|
|
// print message.
|
|
|
|
System.out.println("DONE!");
|
|
|
|
}
|
|
|
|
}
|