From 9ae5a207f6c219c95e9712bf1224c9ceeddc7d2d Mon Sep 17 00:00:00 2001 From: sonoro1234 Date: Thu, 4 Oct 2018 16:27:49 +0200 Subject: [PATCH 1/4] show arg detection failures --- generator/generator.lua | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/generator/generator.lua b/generator/generator.lua index e762934..6aa4ecf 100644 --- a/generator/generator.lua +++ b/generator/generator.lua @@ -469,8 +469,8 @@ local function func_parser() argscsinpars = argscsinpars:gsub("<([%w_]+)>","_%1") --ImVector local argsArr = {} - local functype_re = "^%s*[%w%s%*]+%(%*[%w_]+%)%([^%(%)]*%)" - local functype_reex = "^(%s*[%w%s%*]+)%(%*([%w_]+)%)(%([^%(%)]*%))" + local functype_re = "^%s*[%w%s%*]+%(%*[%w_]+%)%([^%(%)]*%)" + local functype_reex = "^(%s*[%w%s%*]+)%(%*([%w_]+)%)(%([^%(%)]*%))" local functype_arg_rest = "^(%s*[%w%s%*]+%(%*[%w_]+%)%([^%(%)]*%)),*(.*)" local rest = argscsinpars:sub(2,-2) --strip () @@ -498,13 +498,16 @@ local function func_parser() else type,name = arg:match("(.+)%s([^%s]+)") end - --if not type or not name then print(funcname,type,name,argscsinpars,arg) end - --float name[2] to float[2] name - local siz = name:match("(%[%d*%])") - if siz then - type = type..siz - name = name:gsub("(%[%d*%])","") - end + if not type or not name then + print("failure arg detection",funcname,type,name,argscsinpars,arg) + --float name[2] to float[2] name + local siz = name:match("(%[%d*%])") + else + if siz then + type = type..siz + name = name:gsub("(%[%d*%])","") + end + end end table.insert(argsArr,{type=type,name=name,ret=retf,signature=sigf}) if arg:match("&") and not arg:match("const") then From d7e8b142d0b723fbb3dd3e7a61e9ee9041ae80b9 Mon Sep 17 00:00:00 2001 From: sonoro1234 Date: Thu, 4 Oct 2018 16:32:44 +0200 Subject: [PATCH 2/4] show arg detection failure2 --- generator/generator.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generator/generator.lua b/generator/generator.lua index 6aa4ecf..98c89a6 100644 --- a/generator/generator.lua +++ b/generator/generator.lua @@ -500,9 +500,9 @@ local function func_parser() end if not type or not name then print("failure arg detection",funcname,type,name,argscsinpars,arg) + else --float name[2] to float[2] name local siz = name:match("(%[%d*%])") - else if siz then type = type..siz name = name:gsub("(%[%d*%])","") From f1b55d57e5b8f24cd4f56036665f593c39d8a1af Mon Sep 17 00:00:00 2001 From: sonoro1234 Date: Thu, 4 Oct 2018 17:27:20 +0200 Subject: [PATCH 3/4] check arg detection failures --- generator/generator.lua | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/generator/generator.lua b/generator/generator.lua index 98c89a6..5794e0b 100644 --- a/generator/generator.lua +++ b/generator/generator.lua @@ -1125,7 +1125,31 @@ local function func_implementation(FP) --cppfile:close() return table.concat(outtab) end - +--only basic ending +local c_types = { + ["char"]=true, + ["int"]=true, + ["float"]=true, + ["double"]=true, + ["short"]=true, + ["long"]=true, + ["signed"]=true, + ["unsigned"]=true, + ["size_t"]=true, + ["ptrdiff_t"]=true, +} +local function check_arg_detection(fdefs,typedefs) + for k,defT in pairs(fdefs) do + for i,def in ipairs(defT) do + for j,arg in ipairs(def.argsT) do + --check name is not type, which happens in declaration without name + if c_types[arg.name] or typedefs[arg.name] then + print("bad argument name",arg.name, "in",def.funcname,def.args) + end + end + end + end +end --generate cimgui.cpp cimgui.h and auto versions depending on postfix local function cimgui_generation(postfix,STP,FP) --merge it in cimgui_template.h to cimgui.h @@ -1197,7 +1221,8 @@ local ovstr = pFP:compute_overloads() ADDnonUDT(pFP) save_data("./generated/overloads.txt",ovstr) typedefs_dict2 = cimgui_generation("_auto",pSTP,pFP) - +--check arg detection failure if no name in function declaration +check_arg_detection(pFP.defsT,typedefs_dict2) end ----------save fundefs in definitions.lua for using in bindings From 552a5f5cf2aebadb015014dd34078ab2320a8282 Mon Sep 17 00:00:00 2001 From: sonoro1234 Date: Thu, 4 Oct 2018 17:40:31 +0200 Subject: [PATCH 4/4] check arg detection failures2 --- generator/generator.lua | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/generator/generator.lua b/generator/generator.lua index 5794e0b..edf5d4b 100644 --- a/generator/generator.lua +++ b/generator/generator.lua @@ -511,7 +511,7 @@ local function func_parser() end table.insert(argsArr,{type=type,name=name,ret=retf,signature=sigf}) if arg:match("&") and not arg:match("const") then - print(funcname,argscsinpars) + print("reference to no const arg in",funcname,argscsinpars) end end argscsinpars = argscsinpars:gsub("&","") @@ -1139,16 +1139,18 @@ local c_types = { ["ptrdiff_t"]=true, } local function check_arg_detection(fdefs,typedefs) + print"-----------------check arg detection---------------------------" for k,defT in pairs(fdefs) do for i,def in ipairs(defT) do for j,arg in ipairs(def.argsT) do --check name is not type, which happens in declaration without name - if c_types[arg.name] or typedefs[arg.name] then + if not arg.type or not arg.name or c_types[arg.name] or typedefs[arg.name] then print("bad argument name",arg.name, "in",def.funcname,def.args) end end end end + print"-----------------end check arg detection-----------------------" end --generate cimgui.cpp cimgui.h and auto versions depending on postfix local function cimgui_generation(postfix,STP,FP)