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) gml_extract_enums(gml, info.name, &enums)
} }
f := os.open(output_gml_path, {.Write, .Trunc}) or_return gml := strings.builder_make()
writer := io.Writer(os.to_stream(f)) gml_write_enums(&gml, enums)
gml_write_enums(writer, enums) os.write_entire_file(output_gml_path, strings.to_string(gml)) or_return
os.close(f)
return nil 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) { gml_write_enums :: proc(gml: &strings.Builder, enums: [dynamic]GmlEnum) {
io.write_string(writer, "/*\n" + TAB + "This file was generated using enum_reflection tool\n*/\n") fmt.sbprint(&gml, "/*\n" + TAB + "This file was generated using enum_reflection tool\n*/\n", sep = "")
io.write_string(writer, "enum " + ENUM_ENUM + " {\n") fmt.sbprint(&gml, "enum " + ENUM_ENUM + " {\n", sep = "")
for e in enums { for e in enums {
io.write_string(writer, TAB) fmt.sbprint(&gml, TAB, e.name, ",\n", sep = "")
io.write_string(writer, e.name)
io.write_string(writer, ",\n")
} }
io.write_string(writer, TAB + "_Count\n}\n\n") fmt.sbprint(&gml, TAB + "_Count\n}\n\n", sep = "")
fmt.sbprint(&gml, ENUM_NAMES_GLOBAL, " = [\n", sep = "")
io.write_string(writer, ENUM_NAMES_GLOBAL + " = [\n")
for e in enums { for e in enums {
io.write_string(writer, TAB + "\"") fmt.sbprint(&gml, TAB, "\"", e.name, "\",\n", sep = "")
io.write_string(writer, e.name)
io.write_string(writer, "\",\n")
} }
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 { for e in enums {
io.write_string(writer, TAB + "[") fmt.sbprint(&gml, TAB, "[", sep = "")
for entry in e.members { for entry in e.members {
io.write_string(writer, "\"") fmt.sbprint(&gml, "\"", entry, "\", ", sep = "")
io.write_string(writer, entry)
io.write_string(writer, "\", ")
} }
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") fmt.sbprint(&gml, "function ", ENUM_GET_NAME_FUNCTION, "(index) {return ", ENUM_NAMES_GLOBAL, "[index];}\n", sep = "")
io.write_string(writer, TAB + "return " + ENUM_NAMES_GLOBAL + "[index];\n")
io.write_string(writer, "}\n\n")
io.write_string(writer, "function " + ENUM_GET_MEMBER_NAME_FUNCTION + "(index, member) {\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, TAB + "return " + ENUM_MEMBER_NAMES_GLOBAL + "[index][member];\n")
io.write_string(writer, "}\n\n")
io.write_string(writer, "function " + ENUM_GET_MEMBER_NAMES_FUNCTION + "(index) {\n") fmt.sbprint(&gml, "function ", ENUM_GET_MEMBER_NAMES_FUNCTION, "(index) {return ", ENUM_MEMBER_NAMES_GLOBAL, "[index];}", sep = "")
io.write_string(writer, TAB + "return " + ENUM_MEMBER_NAMES_GLOBAL + "[index];\n")
io.write_string(writer, "}\n\n")
io.write_string(writer, "function " + ENUM_GET_MEMBER_NAME_FULL_FUNCTION + "(index, member) {\n") fmt.sbprint(&gml, "function ", ENUM_GET_MEMBER_NAME_FULL_FUNCTION, "(index, member) {\n", sep = "")
io.write_string(writer, TAB + "return $\"{" + ENUM_NAMES_GLOBAL + "[index]}.{" + ENUM_MEMBER_NAMES_GLOBAL + "[index][member]}\";\n") fmt.sbprint(&gml, TAB, "return $\"{", ENUM_NAMES_GLOBAL, "[index]}.{" + ENUM_MEMBER_NAMES_GLOBAL, "[index][member]}\";\n", sep = "")
io.write_string(writer, "}\n\n") fmt.sbprint(&gml, "}\n\n", sep = "")
} }