Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,10 @@ public void updateEnumsFromReader() {
}
}

public Map<String, EnumsReader.EnumState> getEnums() {
return enumsReader != null ? enumsReader.getEnums() : null;
}

public Map<String, Definition> getDefinitions() {
return definitions;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,6 @@ public void visit(StructLayout struct, PrintStream ps, StructNamePrefixer prefix
visit(struct, ps, prefixer, offsetAdd, struct.name);
}

private static void writeEnumVal(PrintStream ps, String enumVal) {
ps.print('"');
ps.print(enumVal);
ps.print('"');
}

@Override
public void visit(EnumLayout e, PrintStream ps, StructNamePrefixer prefixer, int offsetAdd, int[] arrayDims) {
String name = prefixer.get(e.name);
Expand All @@ -38,16 +32,9 @@ public void visit(EnumLayout e, PrintStream ps, StructNamePrefixer prefixer, int

ps.print("[0:");
ps.print(e.endBit);
ps.print("], ");

writeEnumVal(ps, e.values[0]);
ps.print("], $ENUM_");

for (int i = 1; i < e.values.length; i++) {
ps.print(", ");
writeEnumVal(ps, e.values[i]);
}

ps.println();
ps.println(e.enumType);

meta.addComment(name, e.options.comment);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,32 @@ public void writeLayoutAndComments(ParseState parser, PrintStream ps) {
StructLayout root = new StructLayout(0, "root", parser.getLastStruct());
TsMetadata meta = new TsMetadata();

final var enums = parser.getEnums();
if (enums != null) {
// Write all enums in their "compacted" name form
enums.forEach((k, v) -> {
ps.print("#define ENUM_" + k + " = ");

boolean comma = false;

for (var e : v.values.entrySet()) {
if (comma) {
ps.print(", ");
comma = true;
}

ps.print(e.getValue().getIntValue());
ps.print("=\"");
ps.print(e.getKey());
ps.print('"');
}

ps.println();
});

ps.println();
}

// Print configuration layout
int size = root.getSize();
ps.println("pageSize = " + size);
Expand Down
Loading