take care of return in vararg functions

This commit is contained in:
sonoro1234
2018-08-19 10:31:07 +02:00
parent 031bfe5dcc
commit 960c4daa70
4 changed files with 162 additions and 136 deletions

View File

@@ -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)
{ {

View File

@@ -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)
{ {

View File

@@ -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)
{ {

View File

@@ -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")
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") 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")
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") 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