Using sbprint since its nicer

This commit is contained in:
Synthasmagoria 2026-05-26 16:04:33 +02:00
commit 2cd03d7f35

View file

@ -96,11 +96,9 @@ program :: proc(project_dir, output_gml_path: string) -> Error {
gml_extract_enums(gml, info.name, &enums)
}
f := os.open(output_gml_path, {.Write, .Trunc}) or_return
writer := io.Writer(os.to_stream(f))
gml_write_enums(writer, enums)
os.close(f)
gml := strings.builder_make()
gml_write_enums(&gml, enums)
os.write_entire_file(output_gml_path, strings.to_string(gml)) or_return
return nil
}
@ -161,50 +159,36 @@ gml_extract_enums :: proc(gml, filename: string, enums_out: ^[dynamic]GmlEnum) {
}
}
gml_write_enums :: proc(writer: io.Writer, enums: [dynamic]GmlEnum) {
io.write_string(writer, "/*\n" + TAB + "This file was generated using enum_reflection tool\n*/\n")
io.write_string(writer, "enum " + ENUM_ENUM + " {\n")
gml_write_enums :: proc(gml: &strings.Builder, enums: [dynamic]GmlEnum) {
fmt.sbprint(&gml, "/*\n" + TAB + "This file was generated using enum_reflection tool\n*/\n", sep = "")
fmt.sbprint(&gml, "enum " + ENUM_ENUM + " {\n", sep = "")
for e in enums {
io.write_string(writer, TAB)
io.write_string(writer, e.name)
io.write_string(writer, ",\n")
fmt.sbprint(&gml, TAB, e.name, ",\n", sep = "")
}
io.write_string(writer, TAB + "_Count\n}\n\n")
io.write_string(writer, ENUM_NAMES_GLOBAL + " = [\n")
fmt.sbprint(&gml, TAB + "_Count\n}\n\n", sep = "")
fmt.sbprint(&gml, ENUM_NAMES_GLOBAL, " = [\n", sep = "")
for e in enums {
io.write_string(writer, TAB + "\"")
io.write_string(writer, e.name)
io.write_string(writer, "\",\n")
fmt.sbprint(&gml, TAB, "\"", e.name, "\",\n", sep = "")
}
io.write_string(writer, "];\n\n")
fmt.sbprint(&gml, "];\n\n", sep = "")
io.write_string(writer, ENUM_MEMBER_NAMES_GLOBAL + " = [\n")
fmt.sbprint(&gml, ENUM_MEMBER_NAMES_GLOBAL, " = [\n", sep = "")
for e in enums {
io.write_string(writer, TAB + "[")
fmt.sbprint(&gml, TAB, "[", sep = "")
for entry in e.members {
io.write_string(writer, "\"")
io.write_string(writer, entry)
io.write_string(writer, "\", ")
fmt.sbprint(&gml, "\"", entry, "\", ", sep = "")
}
io.write_string(writer, "],\n")
fmt.sbprint(&gml, "],\n", sep = "")
}
io.write_string(writer, "];\n\n")
fmt.sbprint(&gml, "];\n\n", sep = "")
io.write_string(writer, "function " + ENUM_GET_NAME_FUNCTION + "(index) {\n")
io.write_string(writer, TAB + "return " + ENUM_NAMES_GLOBAL + "[index];\n")
io.write_string(writer, "}\n\n")
fmt.sbprint(&gml, "function ", ENUM_GET_NAME_FUNCTION, "(index) {return ", ENUM_NAMES_GLOBAL, "[index];}\n", sep = "")
io.write_string(writer, "function " + ENUM_GET_MEMBER_NAME_FUNCTION + "(index, member) {\n")
io.write_string(writer, TAB + "return " + ENUM_MEMBER_NAMES_GLOBAL + "[index][member];\n")
io.write_string(writer, "}\n\n")
fmt.sbprint(&gml, "function ", ENUM_GET_MEMBER_NAME_FUNCTION, "(index, member) {return ", ENUM_MEMBER_NAMES_GLOBAL, "[index][member];}\n", sep = "")
io.write_string(writer, "function " + ENUM_GET_MEMBER_NAMES_FUNCTION + "(index) {\n")
io.write_string(writer, TAB + "return " + ENUM_MEMBER_NAMES_GLOBAL + "[index];\n")
io.write_string(writer, "}\n\n")
fmt.sbprint(&gml, "function ", ENUM_GET_MEMBER_NAMES_FUNCTION, "(index) {return ", ENUM_MEMBER_NAMES_GLOBAL, "[index];}", sep = "")
io.write_string(writer, "function " + ENUM_GET_MEMBER_NAME_FULL_FUNCTION + "(index, member) {\n")
io.write_string(writer, TAB + "return $\"{" + ENUM_NAMES_GLOBAL + "[index]}.{" + ENUM_MEMBER_NAMES_GLOBAL + "[index][member]}\";\n")
io.write_string(writer, "}\n\n")
fmt.sbprint(&gml, "function ", ENUM_GET_MEMBER_NAME_FULL_FUNCTION, "(index, member) {\n", sep = "")
fmt.sbprint(&gml, TAB, "return $\"{", ENUM_NAMES_GLOBAL, "[index]}.{" + ENUM_MEMBER_NAMES_GLOBAL, "[index][member]}\";\n", sep = "")
fmt.sbprint(&gml, "}\n\n", sep = "")
}