From 715802490eabca2fc86cf25b41b83aa7c5d6060d Mon Sep 17 00:00:00 2001 From: sonoro1234 Date: Wed, 25 Feb 2026 12:13:47 +0100 Subject: [PATCH] save_output --- generator/cpp2ffi.lua | 31 +++++++++++++++++++++++++++++++ generator/generator.lua | 16 +--------------- 2 files changed, 32 insertions(+), 15 deletions(-) diff --git a/generator/cpp2ffi.lua b/generator/cpp2ffi.lua index 01d23d3..b8f83f0 100644 --- a/generator/cpp2ffi.lua +++ b/generator/cpp2ffi.lua @@ -1553,6 +1553,36 @@ local function printItems(items) printItemsKind(items,v) end end + +-------------------------------json saving +--avoid mixed tables (with string and integer keys) +local function json_prepare(defs) + --delete signatures in function + for k,def in pairs(defs) do + for k2,v in pairs(def) do + if type(k2)=="string" then + def[k2] = nil + end + end + end + return defs +end + + +local function save_output(self) + save_data("./output/overloads.txt",self.overloadstxt) + save_data("./output/definitions.lua",M.serializeTableF(self.defsT)) + save_data("./output/structs_and_enums.lua",M.serializeTableF(self.structs_and_enums_table)) + save_data("./output/typedefs_dict.lua",M.serializeTableF(self.typedefs_dict)) + save_data("./output/constants.lua",M.serializeTableF(self.constants)) + + local json = require"json" + local json_opts = {dict_on_empty={defaults=true}} + save_data("./output/definitions.json",json.encode(json_prepare(self.defsT),json_opts)) + save_data("./output/structs_and_enums.json",json.encode(self.structs_and_enums_table)) + save_data("./output/typedefs_dict.json",json.encode(self.typedefs_dict)) + save_data("./output/constants.json",json.encode(self.constants)) +end ------------- local numerr = 0 --for popen error file function M.Parser() @@ -1573,6 +1603,7 @@ function M.Parser() par.skipped = {} par.UDTs = {} + par.save_output = save_output par.genConversors = genConversions par.gen_structs_c = gen_structs_c function par:insert(line,loca) diff --git a/generator/generator.lua b/generator/generator.lua index 0927e19..b786dfa 100644 --- a/generator/generator.lua +++ b/generator/generator.lua @@ -438,14 +438,8 @@ structs_and_enums_table.templated_structs = parser1.templated_structs structs_and_enums_table.typenames = parser1.typenames structs_and_enums_table.templates_done = parser1.templates_done --structs_and_enums_table.nonPOD_used = parser1.nP_used - -save_data("./output/structs_and_enums.lua",serializeTableF(structs_and_enums_table)) -save_data("./output/typedefs_dict.lua",serializeTableF(parser1.typedefs_dict)) -save_data("./output/constants.lua",serializeTableF(parser1.constants)) -----------save fundefs in definitions.lua for using in bindings ---DefsByStruct(pFP) set_defines(parser1.defsT) -save_data("./output/definitions.lua",serializeTableF(parser1.defsT)) +parser1:save_output() --check every function has ov_cimguiname -- for k,v in pairs(parser1.defsT) do @@ -549,14 +543,6 @@ local function json_prepare(defs) end ---[[ local json = require"json" -save_data("./output/definitions.json",json.encode(json_prepare(parser1.defsT),{dict_on_empty={defaults=true}})) ---delete extra info for json ---structs_and_enums_table.templated_structs = nil ---structs_and_enums_table.typenames = nil ---structs_and_enums_table.templates_done = nil -save_data("./output/structs_and_enums.json",json.encode(structs_and_enums_table)) -save_data("./output/typedefs_dict.json",json.encode(parser1.typedefs_dict)) -save_data("./output/constants.json",json.encode(parser1.constants)) if parser2 then save_data("./output/impl_definitions.json",json.encode(json_prepare(parser2.defsT),{dict_on_empty={defaults=true}})) end