cpp2ffi: add locations to struct_and_enums

This commit is contained in:
Victor Bombi
2020-07-07 09:55:09 +02:00
parent 38a744674e
commit b875a545b2

View File

@@ -1106,7 +1106,7 @@ function M.Parser()
end end
end end
function par:gen_structs_and_enums_table() function par:gen_structs_and_enums_table()
local outtab = {enums={},structs={}} local outtab = {enums={},structs={},locations={}}
self.typedefs_table = {} self.typedefs_table = {}
self.vardefs = {} self.vardefs = {}
@@ -1153,6 +1153,7 @@ function M.Parser()
local name,value = line:match("%s*([%w_]+)%s*=%s*([^,]+)") local name,value = line:match("%s*([%w_]+)%s*=%s*([^,]+)")
if value then if value then
table.insert(outtab.enums[enumname],{name=name,value=value}) table.insert(outtab.enums[enumname],{name=name,value=value})
outtab.locations[enumname] = it.locat
else --increment by one else --increment by one
local name = line:match("%s*([^,]+)") local name = line:match("%s*([^,]+)")
local enum_table = outtab.enums[enumname] local enum_table = outtab.enums[enumname]
@@ -1167,6 +1168,7 @@ function M.Parser()
end end
if name then --avoid last , if present if name then --avoid last , if present
table.insert(outtab.enums[enumname],{name=name,value=value}) table.insert(outtab.enums[enumname],{name=name,value=value})
outtab.locations[enumname] = it.locat
end end
end end
end end
@@ -1176,6 +1178,7 @@ function M.Parser()
--M.prtable(cleanst,structname,strtab) --M.prtable(cleanst,structname,strtab)
if structname and not self.typenames[structname] then if structname and not self.typenames[structname] then
outtab.structs[structname] = {} outtab.structs[structname] = {}
outtab.locations[structname] = it.locat
self.order[structname]=i self.order[structname]=i
for j=3,#strtab-1 do for j=3,#strtab-1 do
self:parse_struct_line(strtab[j],outtab.structs[structname]) self:parse_struct_line(strtab[j],outtab.structs[structname])
@@ -1189,6 +1192,7 @@ function M.Parser()
local cleanst,structname,strtab = self:clean_struct(it.item, it.locat) local cleanst,structname,strtab = self:clean_struct(it.item, it.locat)
if structname then --not empty struc if structname then --not empty struc
outtab.structs[structname] = {} outtab.structs[structname] = {}
outtab.locations[structname] = it.locat
for j=3,#strtab-1 do for j=3,#strtab-1 do
self:parse_struct_line(strtab[j],outtab.structs[structname]) self:parse_struct_line(strtab[j],outtab.structs[structname])
end end