mirror of
https://github.com/cimgui/cimgui.git
synced 2025-10-09 03:11:40 +01:00
take care of return in vararg functions
This commit is contained in:
@@ -826,15 +826,17 @@ CIMGUI_API bool igTreeNodeStrStr(const char* str_id,const char* fmt,...)
|
|||||||
{
|
{
|
||||||
va_list args;
|
va_list args;
|
||||||
va_start(args, fmt);
|
va_start(args, fmt);
|
||||||
ImGui::TreeNodeV(str_id,fmt,args);
|
bool ret = ImGui::TreeNodeV(str_id,fmt,args);
|
||||||
va_end(args);
|
va_end(args);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
CIMGUI_API bool igTreeNodePtr(const void* ptr_id,const char* fmt,...)
|
CIMGUI_API bool igTreeNodePtr(const void* ptr_id,const char* fmt,...)
|
||||||
{
|
{
|
||||||
va_list args;
|
va_list args;
|
||||||
va_start(args, fmt);
|
va_start(args, fmt);
|
||||||
ImGui::TreeNodeV(ptr_id,fmt,args);
|
bool ret = ImGui::TreeNodeV(ptr_id,fmt,args);
|
||||||
va_end(args);
|
va_end(args);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
CIMGUI_API bool igTreeNodeVStr(const char* str_id,const char* fmt,va_list args)
|
CIMGUI_API bool igTreeNodeVStr(const char* str_id,const char* fmt,va_list args)
|
||||||
{
|
{
|
||||||
@@ -852,15 +854,17 @@ CIMGUI_API bool igTreeNodeExStrStr(const char* str_id,ImGuiTreeNodeFlags flags,c
|
|||||||
{
|
{
|
||||||
va_list args;
|
va_list args;
|
||||||
va_start(args, fmt);
|
va_start(args, fmt);
|
||||||
ImGui::TreeNodeExV(str_id,flags,fmt,args);
|
bool ret = ImGui::TreeNodeExV(str_id,flags,fmt,args);
|
||||||
va_end(args);
|
va_end(args);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
CIMGUI_API bool igTreeNodeExPtr(const void* ptr_id,ImGuiTreeNodeFlags flags,const char* fmt,...)
|
CIMGUI_API bool igTreeNodeExPtr(const void* ptr_id,ImGuiTreeNodeFlags flags,const char* fmt,...)
|
||||||
{
|
{
|
||||||
va_list args;
|
va_list args;
|
||||||
va_start(args, fmt);
|
va_start(args, fmt);
|
||||||
ImGui::TreeNodeExV(ptr_id,flags,fmt,args);
|
bool ret = ImGui::TreeNodeExV(ptr_id,flags,fmt,args);
|
||||||
va_end(args);
|
va_end(args);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
CIMGUI_API bool igTreeNodeExVStr(const char* str_id,ImGuiTreeNodeFlags flags,const char* fmt,va_list args)
|
CIMGUI_API bool igTreeNodeExVStr(const char* str_id,ImGuiTreeNodeFlags flags,const char* fmt,va_list args)
|
||||||
{
|
{
|
||||||
|
@@ -826,15 +826,17 @@ CIMGUI_API bool igTreeNodeStrStr(const char* str_id,const char* fmt,...)
|
|||||||
{
|
{
|
||||||
va_list args;
|
va_list args;
|
||||||
va_start(args, fmt);
|
va_start(args, fmt);
|
||||||
ImGui::TreeNodeV(str_id,fmt,args);
|
bool ret = ImGui::TreeNodeV(str_id,fmt,args);
|
||||||
va_end(args);
|
va_end(args);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
CIMGUI_API bool igTreeNodePtr(const void* ptr_id,const char* fmt,...)
|
CIMGUI_API bool igTreeNodePtr(const void* ptr_id,const char* fmt,...)
|
||||||
{
|
{
|
||||||
va_list args;
|
va_list args;
|
||||||
va_start(args, fmt);
|
va_start(args, fmt);
|
||||||
ImGui::TreeNodeV(ptr_id,fmt,args);
|
bool ret = ImGui::TreeNodeV(ptr_id,fmt,args);
|
||||||
va_end(args);
|
va_end(args);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
CIMGUI_API bool igTreeNodeVStr(const char* str_id,const char* fmt,va_list args)
|
CIMGUI_API bool igTreeNodeVStr(const char* str_id,const char* fmt,va_list args)
|
||||||
{
|
{
|
||||||
@@ -852,15 +854,17 @@ CIMGUI_API bool igTreeNodeExStrStr(const char* str_id,ImGuiTreeNodeFlags flags,c
|
|||||||
{
|
{
|
||||||
va_list args;
|
va_list args;
|
||||||
va_start(args, fmt);
|
va_start(args, fmt);
|
||||||
ImGui::TreeNodeExV(str_id,flags,fmt,args);
|
bool ret = ImGui::TreeNodeExV(str_id,flags,fmt,args);
|
||||||
va_end(args);
|
va_end(args);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
CIMGUI_API bool igTreeNodeExPtr(const void* ptr_id,ImGuiTreeNodeFlags flags,const char* fmt,...)
|
CIMGUI_API bool igTreeNodeExPtr(const void* ptr_id,ImGuiTreeNodeFlags flags,const char* fmt,...)
|
||||||
{
|
{
|
||||||
va_list args;
|
va_list args;
|
||||||
va_start(args, fmt);
|
va_start(args, fmt);
|
||||||
ImGui::TreeNodeExV(ptr_id,flags,fmt,args);
|
bool ret = ImGui::TreeNodeExV(ptr_id,flags,fmt,args);
|
||||||
va_end(args);
|
va_end(args);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
CIMGUI_API bool igTreeNodeExVStr(const char* str_id,ImGuiTreeNodeFlags flags,const char* fmt,va_list args)
|
CIMGUI_API bool igTreeNodeExVStr(const char* str_id,ImGuiTreeNodeFlags flags,const char* fmt,va_list args)
|
||||||
{
|
{
|
||||||
|
@@ -826,15 +826,17 @@ CIMGUI_API bool igTreeNodeStrStr(const char* str_id,const char* fmt,...)
|
|||||||
{
|
{
|
||||||
va_list args;
|
va_list args;
|
||||||
va_start(args, fmt);
|
va_start(args, fmt);
|
||||||
ImGui::TreeNodeV(str_id,fmt,args);
|
bool ret = ImGui::TreeNodeV(str_id,fmt,args);
|
||||||
va_end(args);
|
va_end(args);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
CIMGUI_API bool igTreeNodePtr(const void* ptr_id,const char* fmt,...)
|
CIMGUI_API bool igTreeNodePtr(const void* ptr_id,const char* fmt,...)
|
||||||
{
|
{
|
||||||
va_list args;
|
va_list args;
|
||||||
va_start(args, fmt);
|
va_start(args, fmt);
|
||||||
ImGui::TreeNodeV(ptr_id,fmt,args);
|
bool ret = ImGui::TreeNodeV(ptr_id,fmt,args);
|
||||||
va_end(args);
|
va_end(args);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
CIMGUI_API bool igTreeNodeVStr(const char* str_id,const char* fmt,va_list args)
|
CIMGUI_API bool igTreeNodeVStr(const char* str_id,const char* fmt,va_list args)
|
||||||
{
|
{
|
||||||
@@ -852,15 +854,17 @@ CIMGUI_API bool igTreeNodeExStrStr(const char* str_id,ImGuiTreeNodeFlags flags,c
|
|||||||
{
|
{
|
||||||
va_list args;
|
va_list args;
|
||||||
va_start(args, fmt);
|
va_start(args, fmt);
|
||||||
ImGui::TreeNodeExV(str_id,flags,fmt,args);
|
bool ret = ImGui::TreeNodeExV(str_id,flags,fmt,args);
|
||||||
va_end(args);
|
va_end(args);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
CIMGUI_API bool igTreeNodeExPtr(const void* ptr_id,ImGuiTreeNodeFlags flags,const char* fmt,...)
|
CIMGUI_API bool igTreeNodeExPtr(const void* ptr_id,ImGuiTreeNodeFlags flags,const char* fmt,...)
|
||||||
{
|
{
|
||||||
va_list args;
|
va_list args;
|
||||||
va_start(args, fmt);
|
va_start(args, fmt);
|
||||||
ImGui::TreeNodeExV(ptr_id,flags,fmt,args);
|
bool ret = ImGui::TreeNodeExV(ptr_id,flags,fmt,args);
|
||||||
va_end(args);
|
va_end(args);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
CIMGUI_API bool igTreeNodeExVStr(const char* str_id,ImGuiTreeNodeFlags flags,const char* fmt,va_list args)
|
CIMGUI_API bool igTreeNodeExVStr(const char* str_id,ImGuiTreeNodeFlags flags,const char* fmt,va_list args)
|
||||||
{
|
{
|
||||||
|
@@ -174,28 +174,28 @@ local function serializeTable(name, value, saved)
|
|||||||
end
|
end
|
||||||
--merge tables
|
--merge tables
|
||||||
function mergeT(t1,t2)
|
function mergeT(t1,t2)
|
||||||
for k,v in pairs(t2) do
|
for k,v in pairs(t2) do
|
||||||
t1[k] = v
|
t1[k] = v
|
||||||
end
|
end
|
||||||
return t1
|
return t1
|
||||||
end
|
end
|
||||||
function strsplit(str, pat)
|
function strsplit(str, pat)
|
||||||
local t = {}
|
local t = {}
|
||||||
local fpat = "(.-)" .. pat
|
local fpat = "(.-)" .. pat
|
||||||
local last_end = 1
|
local last_end = 1
|
||||||
local s, e, cap = str:find(fpat, 1)
|
local s, e, cap = str:find(fpat, 1)
|
||||||
while s do
|
while s do
|
||||||
table.insert(t,cap)
|
table.insert(t,cap)
|
||||||
last_end = e+1
|
last_end = e+1
|
||||||
s, e, cap = str:find(fpat, last_end)
|
s, e, cap = str:find(fpat, last_end)
|
||||||
end
|
end
|
||||||
if last_end <= #str then
|
if last_end <= #str then
|
||||||
cap = str:sub(last_end)
|
cap = str:sub(last_end)
|
||||||
table.insert(t, cap)
|
table.insert(t, cap)
|
||||||
elseif str:sub(-1)==pat then
|
elseif str:sub(-1)==pat then
|
||||||
table.insert(t, "")
|
table.insert(t, "")
|
||||||
end
|
end
|
||||||
return t
|
return t
|
||||||
end
|
end
|
||||||
local function save_data(filename,...)
|
local function save_data(filename,...)
|
||||||
local file = io.open(filename,"w")
|
local file = io.open(filename,"w")
|
||||||
@@ -449,13 +449,13 @@ local function func_parser()
|
|||||||
|
|
||||||
local argscsinpars = args:gsub("(=[^,%(%)]*)(%b())","%1")
|
local argscsinpars = args:gsub("(=[^,%(%)]*)(%b())","%1")
|
||||||
argscsinpars = argscsinpars:gsub("(=[^,%(%)]*)([,%)])","%2")
|
argscsinpars = argscsinpars:gsub("(=[^,%(%)]*)([,%)])","%2")
|
||||||
-- if argscsinpars:match("&") then
|
-- if argscsinpars:match("&") then
|
||||||
-- for arg in argscsinpars:gmatch("[%(,]*([^,%(%)]+)[%),]") do
|
-- for arg in argscsinpars:gmatch("[%(,]*([^,%(%)]+)[%),]") do
|
||||||
-- if arg:match("&") and not arg:match("const") then
|
-- if arg:match("&") and not arg:match("const") then
|
||||||
-- print(funcname,argscsinpars)
|
-- print(funcname,argscsinpars)
|
||||||
-- end
|
-- end
|
||||||
-- end
|
-- end
|
||||||
-- end
|
-- end
|
||||||
--argscsinpars = argscsinpars:gsub("&","")
|
--argscsinpars = argscsinpars:gsub("&","")
|
||||||
|
|
||||||
local template = argscsinpars:match("ImVector<([%w_]+)>")
|
local template = argscsinpars:match("ImVector<([%w_]+)>")
|
||||||
@@ -464,51 +464,51 @@ local function func_parser()
|
|||||||
end
|
end
|
||||||
|
|
||||||
argscsinpars = argscsinpars:gsub("<([%w_]+)>","_%1") --ImVector
|
argscsinpars = argscsinpars:gsub("<([%w_]+)>","_%1") --ImVector
|
||||||
|
|
||||||
local argsArr = {}
|
local argsArr = {}
|
||||||
local functype_re = "^%s*[%w%s%*]+%(%*[%w_]+%)%([^%(%)]*%)"
|
local functype_re = "^%s*[%w%s%*]+%(%*[%w_]+%)%([^%(%)]*%)"
|
||||||
local functype_reex = "^(%s*[%w%s%*]+)%(%*([%w_]+)%)(%([^%(%)]*%))"
|
local functype_reex = "^(%s*[%w%s%*]+)%(%*([%w_]+)%)(%([^%(%)]*%))"
|
||||||
local functype_arg_rest = "^(%s*[%w%s%*]+%(%*[%w_]+%)%([^%(%)]*%)),*(.*)"
|
local functype_arg_rest = "^(%s*[%w%s%*]+%(%*[%w_]+%)%([^%(%)]*%)),*(.*)"
|
||||||
local rest = argscsinpars:sub(2,-2) --strip ()
|
local rest = argscsinpars:sub(2,-2) --strip ()
|
||||||
|
|
||||||
while true do
|
while true do
|
||||||
--local tt = strsplit(rest,",")
|
--local tt = strsplit(rest,",")
|
||||||
--for ii,arg in ipairs(tt) do
|
--for ii,arg in ipairs(tt) do
|
||||||
--for arg in argscsinpars:gmatch("[%(,]*([^,%(%)]+)[%),]") do
|
--for arg in argscsinpars:gmatch("[%(,]*([^,%(%)]+)[%),]") do
|
||||||
local type,name,retf,sigf
|
local type,name,retf,sigf
|
||||||
local arg,restt = rest:match(functype_arg_rest)
|
local arg,restt = rest:match(functype_arg_rest)
|
||||||
if arg then
|
if arg then
|
||||||
local t1,namef,t2 = arg:match(functype_reex)
|
local t1,namef,t2 = arg:match(functype_reex)
|
||||||
type=t1.."(*)"..t2;name=namef
|
type=t1.."(*)"..t2;name=namef
|
||||||
retf = t1
|
retf = t1
|
||||||
sigf = t2
|
sigf = t2
|
||||||
rest = restt
|
rest = restt
|
||||||
else
|
else
|
||||||
arg,restt = rest:match(",*([^,%(%)]+),*(.*)")
|
arg,restt = rest:match(",*([^,%(%)]+),*(.*)")
|
||||||
if not arg then break end
|
if not arg then break end
|
||||||
rest = restt
|
rest = restt
|
||||||
if arg:match("&") and arg:match("const") then
|
if arg:match("&") and arg:match("const") then
|
||||||
arg = arg:gsub("&","")
|
arg = arg:gsub("&","")
|
||||||
end
|
end
|
||||||
if arg:match("%.%.%.") then
|
if arg:match("%.%.%.") then
|
||||||
type="...";name="..."
|
type="...";name="..."
|
||||||
else
|
else
|
||||||
type,name = arg:match("(.+)%s([^%s]+)")
|
type,name = arg:match("(.+)%s([^%s]+)")
|
||||||
end
|
end
|
||||||
--if not type or not name then print(funcname,type,name,argscsinpars,arg) end
|
--if not type or not name then print(funcname,type,name,argscsinpars,arg) end
|
||||||
--float name[2] to float[2] name
|
--float name[2] to float[2] name
|
||||||
local siz = name:match("(%[%d*%])")
|
local siz = name:match("(%[%d*%])")
|
||||||
if siz then
|
if siz then
|
||||||
type = type..siz
|
type = type..siz
|
||||||
name = name:gsub("(%[%d*%])","")
|
name = name:gsub("(%[%d*%])","")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
table.insert(argsArr,{type=type,name=name,ret=retf,signature=sigf})
|
table.insert(argsArr,{type=type,name=name,ret=retf,signature=sigf})
|
||||||
if arg:match("&") and not arg:match("const") then
|
if arg:match("&") and not arg:match("const") then
|
||||||
print(funcname,argscsinpars)
|
print(funcname,argscsinpars)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
argscsinpars = argscsinpars:gsub("&","")
|
argscsinpars = argscsinpars:gsub("&","")
|
||||||
|
|
||||||
local signature = argscsinpars:gsub("([%w%s%*_]+)%s[%w_]+%s*([,%)])","%1%2")
|
local signature = argscsinpars:gsub("([%w%s%*_]+)%s[%w_]+%s*([,%)])","%1%2")
|
||||||
signature = signature:gsub("%s*([,%)])","%1") --space before , and )
|
signature = signature:gsub("%s*([,%)])","%1") --space before , and )
|
||||||
@@ -550,7 +550,7 @@ local function func_parser()
|
|||||||
defT.isvararg = signature:match("%.%.%.%)$")
|
defT.isvararg = signature:match("%.%.%.%)$")
|
||||||
defT.location = locat
|
defT.location = locat
|
||||||
defT.comment = comment
|
defT.comment = comment
|
||||||
defT.argsT = argsArr
|
defT.argsT = argsArr
|
||||||
if ret then
|
if ret then
|
||||||
defT.ret = clean_spaces(ret:gsub("&","*"))
|
defT.ret = clean_spaces(ret:gsub("&","*"))
|
||||||
defT.retref = ret:match("&")
|
defT.retref = ret:match("&")
|
||||||
@@ -711,50 +711,50 @@ local function gen_structs_and_enums_table(cdefs)
|
|||||||
end
|
end
|
||||||
until true
|
until true
|
||||||
end
|
end
|
||||||
--calcule size of name[16+1] [xxx_COUNT]
|
--calcule size of name[16+1] [xxx_COUNT]
|
||||||
local allenums = {}
|
local allenums = {}
|
||||||
--first calc_value in enums
|
--first calc_value in enums
|
||||||
for enumname,enum in pairs(outtab.enums) do
|
for enumname,enum in pairs(outtab.enums) do
|
||||||
for i,t in ipairs(enum) do
|
for i,t in ipairs(enum) do
|
||||||
local val = tonumber(t.value)
|
local val = tonumber(t.value)
|
||||||
if val then
|
if val then
|
||||||
t.calc_value = val
|
t.calc_value = val
|
||||||
elseif t.value:match"<<" then
|
elseif t.value:match"<<" then
|
||||||
local v1,v2 = t.value:match("(%d+)%s*<<%s*(%d+)")
|
local v1,v2 = t.value:match("(%d+)%s*<<%s*(%d+)")
|
||||||
t.calc_value = bit.lshift(v1,v2)
|
t.calc_value = bit.lshift(v1,v2)
|
||||||
elseif t.value:match"|" then --or several enums
|
elseif t.value:match"|" then --or several enums
|
||||||
local ens = t.value
|
local ens = t.value
|
||||||
ens = strsplit(ens,"|")
|
ens = strsplit(ens,"|")
|
||||||
for i,v in ipairs(ens) do ens[i] = allenums[clean_spaces(v)] end
|
for i,v in ipairs(ens) do ens[i] = allenums[clean_spaces(v)] end
|
||||||
t.calc_value = bit.bor(unpack(ens))
|
t.calc_value = bit.bor(unpack(ens))
|
||||||
elseif allenums[t.value] then
|
elseif allenums[t.value] then
|
||||||
t.calc_value = allenums[t.value]
|
t.calc_value = allenums[t.value]
|
||||||
else
|
else
|
||||||
print("Error unknown value in enums",t.value)
|
print("Error unknown value in enums",t.value)
|
||||||
end
|
end
|
||||||
assert(t.calc_value)
|
assert(t.calc_value)
|
||||||
allenums[t.name] = t.calc_value
|
allenums[t.name] = t.calc_value
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
--then calcsize in struct members
|
--then calcsize in struct members
|
||||||
for stname,struct in pairs(outtab.structs) do
|
for stname,struct in pairs(outtab.structs) do
|
||||||
for i,t in ipairs(struct) do
|
for i,t in ipairs(struct) do
|
||||||
local val = t.name:match"%[([^%[%]]+)%]"
|
local val = t.name:match"%[([^%[%]]+)%]"
|
||||||
if val then
|
if val then
|
||||||
if tonumber(val) then
|
if tonumber(val) then
|
||||||
t.size = tonumber(val)
|
t.size = tonumber(val)
|
||||||
elseif allenums[val] then
|
elseif allenums[val] then
|
||||||
t.size = allenums[val]
|
t.size = allenums[val]
|
||||||
elseif val:match"%+" then
|
elseif val:match"%+" then
|
||||||
local s1,s2 = val:match("(%d+)%s*%+%s*(%d+)")
|
local s1,s2 = val:match("(%d+)%s*%+%s*(%d+)")
|
||||||
t.size = s1+s2
|
t.size = s1+s2
|
||||||
else
|
else
|
||||||
print("Error size is",val)
|
print("Error size is",val)
|
||||||
end
|
end
|
||||||
assert(t.size)
|
assert(t.size)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
return outtab, typedefs_dict
|
return outtab, typedefs_dict
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -770,7 +770,7 @@ local function gen_structs_and_enums(cdefs)
|
|||||||
local structnames = {}
|
local structnames = {}
|
||||||
local innerstructs = {}
|
local innerstructs = {}
|
||||||
local typedefs_table = {}
|
local typedefs_table = {}
|
||||||
local typedefs_dict = {}
|
local typedefs_dict = {}
|
||||||
|
|
||||||
local outtab = {}
|
local outtab = {}
|
||||||
-- Output the file
|
-- Output the file
|
||||||
@@ -831,7 +831,7 @@ typedef struct ImVector ImVector;]])
|
|||||||
local struct_closed_name = line:match(struct_closed_re)
|
local struct_closed_name = line:match(struct_closed_re)
|
||||||
if struct_closed_name then
|
if struct_closed_name then
|
||||||
table.insert(typedefs_table,"typedef struct "..struct_closed_name.." "..struct_closed_name..";\n")
|
table.insert(typedefs_table,"typedef struct "..struct_closed_name.." "..struct_closed_name..";\n")
|
||||||
typedefs_dict[struct_closed_name] = "struct "..struct_closed_name
|
typedefs_dict[struct_closed_name] = "struct "..struct_closed_name
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -847,14 +847,14 @@ typedef struct ImVector ImVector;]])
|
|||||||
local structname = structnames[#structnames]
|
local structname = structnames[#structnames]
|
||||||
--st[#st + 1] = string.format("typedef struct %s %s;\n",structname,structname)
|
--st[#st + 1] = string.format("typedef struct %s %s;\n",structname,structname)
|
||||||
table.insert(typedefs_table,string.format("typedef struct %s %s;\n",structname,structname))
|
table.insert(typedefs_table,string.format("typedef struct %s %s;\n",structname,structname))
|
||||||
typedefs_dict[structname] = "struct "..structname
|
typedefs_dict[structname] = "struct "..structname
|
||||||
structnames[#structnames] = nil
|
structnames[#structnames] = nil
|
||||||
end
|
end
|
||||||
elseif line:match(struct_closing_re) and not line:match(struct_op_close_re) then
|
elseif line:match(struct_closing_re) and not line:match(struct_op_close_re) then
|
||||||
local structname = structnames[#structnames]
|
local structname = structnames[#structnames]
|
||||||
--table.insert(outtab,"typedef struct "..structname.." "..structname..";\n")
|
--table.insert(outtab,"typedef struct "..structname.." "..structname..";\n")
|
||||||
table.insert(typedefs_table,"typedef struct "..structname.." "..structname..";\n")
|
table.insert(typedefs_table,"typedef struct "..structname.." "..structname..";\n")
|
||||||
typedefs_dict[structname] = "struct "..structname
|
typedefs_dict[structname] = "struct "..structname
|
||||||
structnames[#structnames] = nil
|
structnames[#structnames] = nil
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -971,8 +971,15 @@ local function func_implementation(FP)
|
|||||||
table.insert(outtab,"{\n")
|
table.insert(outtab,"{\n")
|
||||||
table.insert(outtab," va_list args;\n")
|
table.insert(outtab," va_list args;\n")
|
||||||
table.insert(outtab," va_start(args, fmt);\n")
|
table.insert(outtab," va_start(args, fmt);\n")
|
||||||
table.insert(outtab," ImGui::"..def.funcname.."V"..call_args..";\n")
|
if def.ret~="void" then
|
||||||
|
table.insert(outtab," "..def.ret.." ret = ImGui::"..def.funcname.."V"..call_args..";\n")
|
||||||
|
else
|
||||||
|
table.insert(outtab," ImGui::"..def.funcname.."V"..call_args..";\n")
|
||||||
|
end
|
||||||
table.insert(outtab," va_end(args);\n")
|
table.insert(outtab," va_end(args);\n")
|
||||||
|
if def.ret~="void" then
|
||||||
|
table.insert(outtab," return ret;\n")
|
||||||
|
end
|
||||||
--cppfile:write(" return ImGui::",def.funcname,def.call_args,";\n")
|
--cppfile:write(" return ImGui::",def.funcname,def.call_args,";\n")
|
||||||
table.insert(outtab,"}\n")
|
table.insert(outtab,"}\n")
|
||||||
else
|
else
|
||||||
@@ -992,8 +999,15 @@ local function func_implementation(FP)
|
|||||||
table.insert(outtab,"{\n")
|
table.insert(outtab,"{\n")
|
||||||
table.insert(outtab," va_list args;\n")
|
table.insert(outtab," va_list args;\n")
|
||||||
table.insert(outtab," va_start(args, fmt);\n")
|
table.insert(outtab," va_start(args, fmt);\n")
|
||||||
table.insert(outtab," self->"..def.funcname.."V"..call_args..";\n")
|
if def.ret~="void" then
|
||||||
|
table.insert(outtab," "..def.ret.." ret = self->"..def.funcname.."V"..call_args..";\n")
|
||||||
|
else
|
||||||
|
table.insert(outtab," self->"..def.funcname.."V"..call_args..";\n")
|
||||||
|
end
|
||||||
table.insert(outtab," va_end(args);\n")
|
table.insert(outtab," va_end(args);\n")
|
||||||
|
if def.ret~="void" then
|
||||||
|
table.insert(outtab," return ret;\n")
|
||||||
|
end
|
||||||
--cppfile:write(" return self->",def.funcname,def.call_args,";\n")
|
--cppfile:write(" return self->",def.funcname,def.call_args,";\n")
|
||||||
table.insert(outtab,"}\n")
|
table.insert(outtab,"}\n")
|
||||||
else
|
else
|
||||||
@@ -1035,7 +1049,7 @@ local function cimgui_generation(postfix,STP,FP)
|
|||||||
hstrfile = hstrfile:gsub([[#include "auto_funcs%.cpp"]],cimplem)
|
hstrfile = hstrfile:gsub([[#include "auto_funcs%.cpp"]],cimplem)
|
||||||
hstrfile = hstrfile:gsub([[#include "cimgui%.h"]],[[#include "cimgui]]..postfix..[[.h"]])
|
hstrfile = hstrfile:gsub([[#include "cimgui%.h"]],[[#include "cimgui]]..postfix..[[.h"]])
|
||||||
save_data("./generated/cimgui"..postfix..".cpp",hstrfile)
|
save_data("./generated/cimgui"..postfix..".cpp",hstrfile)
|
||||||
return typedefs_dict
|
return typedefs_dict
|
||||||
end
|
end
|
||||||
--------------------------------------------------------
|
--------------------------------------------------------
|
||||||
-----------------------------do it----------------------
|
-----------------------------do it----------------------
|
||||||
|
Reference in New Issue
Block a user