mirror of
https://github.com/cimgui/cimgui.git
synced 2026-06-16 19:41:17 +01:00
cpp2ffi: test header if gcc, changes for opaque_structs, std:function with &
This commit is contained in:
@@ -913,6 +913,15 @@ local function parseFunction(self,stname,itt,namespace,locat)
|
|||||||
name = name:gsub("(%[%d*%])","")
|
name = name:gsub("(%[%d*%])","")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if typ:match"::" then
|
||||||
|
local const,typsimp,ptr = typ:match("(const )([^%*&]+)([%*&]*)")
|
||||||
|
print("= = = = 0 = =typ",typ,const,typsimp,ptr)
|
||||||
|
if self.opaque_structs_inv and self.opaque_structs_inv[typsimp] then
|
||||||
|
print("(((())))))=======self.opaque",const,typsimp,ptr);
|
||||||
|
typ = (const or "")..self.opaque_structs_inv[typsimp]..(ptr or "")
|
||||||
|
end
|
||||||
|
end
|
||||||
argsTa2[i] = {type=typ,name=name,default=defa,reftoptr=reftoptr,ret=retf,signature=sigf,has_cdecl=has_cdecl,template_orig=template_orig}
|
argsTa2[i] = {type=typ,name=name,default=defa,reftoptr=reftoptr,ret=retf,signature=sigf,has_cdecl=has_cdecl,template_orig=template_orig}
|
||||||
if ar:match("&") and not ar:match("const") then
|
if ar:match("&") and not ar:match("const") then
|
||||||
--only post error if not manual
|
--only post error if not manual
|
||||||
@@ -1436,6 +1445,10 @@ local function get_std_function(ar,def)
|
|||||||
skip = true
|
skip = true
|
||||||
else
|
else
|
||||||
print(" get_std_function found type",v.type)
|
print(" get_std_function found type",v.type)
|
||||||
|
if v.type:match"&$" then
|
||||||
|
typ = v.type:gsub("&","*")
|
||||||
|
conv = "&"..v.name
|
||||||
|
end
|
||||||
-- require"anima.utils"
|
-- require"anima.utils"
|
||||||
-- prtable(ar)
|
-- prtable(ar)
|
||||||
end
|
end
|
||||||
@@ -2280,7 +2293,13 @@ function M.Parser()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
if next(self.opaque_structs) then M.prtable("opaque_structs:",self.opaque_structs) end
|
if next(self.opaque_structs) then
|
||||||
|
M.prtable("opaque_structs:",self.opaque_structs)
|
||||||
|
self.opaque_structs_inv = {}
|
||||||
|
for k,v in pairs(self.opaque_structs) do
|
||||||
|
self.opaque_structs_inv[v]=k
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function par:printItems()
|
function par:printItems()
|
||||||
@@ -3301,7 +3320,16 @@ function M.Parser()
|
|||||||
|
|
||||||
hstrfile = hstrfile:gsub([[#include "auto_funcs%.cpp"]],cimplem)
|
hstrfile = hstrfile:gsub([[#include "auto_funcs%.cpp"]],cimplem)
|
||||||
save_data("./output/"..name..".cpp",cimgui_header,hstrfile)
|
save_data("./output/"..name..".cpp",cimgui_header,hstrfile)
|
||||||
|
------------------------test header----------
|
||||||
|
local COMPILER, CPRE = self.COMPILER
|
||||||
|
COMPILER = COMPILER=="g++" and "gcc" or COMPILER
|
||||||
|
if COMPILER=="gcc" then
|
||||||
|
local include_cmd = COMPILER=="cl" and [[ /I ]] or [[ -I ]]
|
||||||
|
local extra_includes = include_cmd.." ../../cimgui "
|
||||||
|
local CPRE = COMPILER..[[ -std=c99 -DCIMGUI_DEFINE_ENUMS_AND_STRUCTS -DIMGUI_ENABLE_FREETYPE ]] ..extra_includes.. "./output/"..name..".h"
|
||||||
|
print(CPRE)
|
||||||
|
get_cdefs(CPRE,"name")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
return par
|
return par
|
||||||
end
|
end
|
||||||
@@ -3685,8 +3713,7 @@ local function func_implementation(FP)
|
|||||||
custom = FP.custom_implementation(outtab, def, FP)
|
custom = FP.custom_implementation(outtab, def, FP)
|
||||||
end
|
end
|
||||||
local manual = FP.get_manuals(def)
|
local manual = FP.get_manuals(def)
|
||||||
if not custom and not manual and not def.templated and not FP.get_skipped(def)
|
if not custom and not manual and not def.templated and not FP.get_skipped(def) --and not (FP.opaque_structs[def.stname] and not def.is_static_function)
|
||||||
and not (FP.opaque_structs[def.stname] and not def.is_static_function)
|
|
||||||
then
|
then
|
||||||
if def.constructor then
|
if def.constructor then
|
||||||
local tab = {}
|
local tab = {}
|
||||||
@@ -3744,7 +3771,7 @@ M.table_do_sorted = table_do_sorted
|
|||||||
local function func_header_generate_structs(FP)
|
local function func_header_generate_structs(FP)
|
||||||
|
|
||||||
local outtab = {}--"\n/////func_header_generate_structs\n"}
|
local outtab = {}--"\n/////func_header_generate_structs\n"}
|
||||||
|
M.prtable("embeded_structs",FP.embeded_structs)
|
||||||
table_do_sorted(FP.embeded_structs,function(k,v)
|
table_do_sorted(FP.embeded_structs,function(k,v)
|
||||||
if not FP.typenames[k] then
|
if not FP.typenames[k] then
|
||||||
print("embeded",k,v)
|
print("embeded",k,v)
|
||||||
@@ -3763,7 +3790,7 @@ local function func_header_generate_structs(FP)
|
|||||||
end)
|
end)
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
--M.prtable(FP.typenames)
|
--M.prtable("typenames",FP.typenames)
|
||||||
table_do_sorted(FP.opaque_structs,function(k,v)
|
table_do_sorted(FP.opaque_structs,function(k,v)
|
||||||
if not FP.typenames[k] then
|
if not FP.typenames[k] then
|
||||||
table.insert(outtab,"typedef "..v.." "..k..";\n")
|
table.insert(outtab,"typedef "..v.." "..k..";\n")
|
||||||
@@ -3792,8 +3819,8 @@ local function func_header_generate_funcs(FP)
|
|||||||
custom = FP.custom_header(outtab, def)
|
custom = FP.custom_header(outtab, def)
|
||||||
end
|
end
|
||||||
local manual = FP.get_manuals(def)
|
local manual = FP.get_manuals(def)
|
||||||
if not custom and not manual and not def.templated and not FP.get_skipped(def) and
|
if not custom and not manual and not def.templated and not FP.get_skipped(def) --and not (FP.opaque_structs[def.stname] and not def.is_static_function)
|
||||||
not (FP.opaque_structs[def.stname] and not def.is_static_function) then
|
then
|
||||||
|
|
||||||
local addcoment = "" --def.comment or ""
|
local addcoment = "" --def.comment or ""
|
||||||
local empty = def.args:match("^%(%)") --no args
|
local empty = def.args:match("^%(%)") --no args
|
||||||
|
|||||||
Reference in New Issue
Block a user