From: John L. <jr...@us...> - 2009-10-01 04:21:30
|
Update of /cvsroot/wxlua/wxLua/samples In directory 23jxhf1.ch3.sourceforge.com:/tmp/cvs-serv4255/wxLua/samples Modified Files: bindings.wx.lua Log Message: Removed %encapsulate and %noclassinfo tags for %classes in the bindings. No longer encapsulating non wxObjects in a wxObject class for deletion. We now provide delete functions for each class in the wxLuaBindClass structs to be called on the void* we get from Lua. Index: bindings.wx.lua =================================================================== RCS file: /cvsroot/wxlua/wxLua/samples/bindings.wx.lua,v retrieving revision 1.25 retrieving revision 1.26 diff -C2 -d -r1.25 -r1.26 *** bindings.wx.lua 20 May 2009 04:43:41 -0000 1.25 --- bindings.wx.lua 1 Oct 2009 04:21:02 -0000 1.26 *************** *** 339,348 **** local t = { {"..", ["icon"] = list_images.folder}, ! ["col_labels"] = { "Class Name", "# Methods", "wxClassInfo", "Class Tag", "Base Class Names", "# Enums" }, ["object_type"] = "wxLuaBindClass" } -- items in table from binding.GetClassArray are these ! -- { "name", "wxluamethods", "wxluamethods_n", "classInfo", "wxluatype", "baseclassNames", "baseBindClasses", "enums", "enums_n" } local function GetClassInfoStr(classInfo) --- 339,348 ---- local t = { {"..", ["icon"] = list_images.folder}, ! ["col_labels"] = { "Class Name", "# Methods", "wxClassInfo", "Class Tag", "Base Class Names", "# Enums", "VTable Offsets" }, ["object_type"] = "wxLuaBindClass" } -- items in table from binding.GetClassArray are these ! -- { "name", "wxluamethods", "wxluamethods_n", "classInfo", "wxluatype", "baseclassNames", "baseBindClasses", "baseclass_wxluatypes", "baseclass_vtable_offsets", "enums", "enums_n" } local function GetClassInfoStr(classInfo) *************** *** 365,368 **** --- 365,384 ---- end + local function GetVTableOffsets(cbind_tbl) + local s = "" + + local baseclass_wxluatypes = cbind_tbl.baseclass_wxluatypes + local baseclass_vtable_offsets = cbind_tbl.baseclass_vtable_offsets + + if baseclass_wxluatypes then + for i = 1, #baseclass_wxluatypes do + s = s..string.format("%s(+%d),", wxlua.typename(baseclass_wxluatypes[i]), baseclass_vtable_offsets[i]) + end + s = string.sub(s, 1, -2) + end + + return s + end + t.col_numbers = {} t.col_numbers[2] = true *************** *** 379,382 **** --- 395,399 ---- table.concat(tbl[i].baseclassNames or {}, ","), tbl[i].enums_n, + GetVTableOffsets(tbl[i]), ["col_icons"] = {}, ["data"] = {} *************** *** 1101,1132 **** -- now do wxWidgets base class info if c.classInfo then local ci = c.classInfo ! local c_table2 = {a.."wx"} ! while ci do ! -- we don't bind some classes since we wouldn't need them ! if unwrappedBaseClasses[ci:GetClassName()] then ! c_table2[#c_table2] = c_table2[#c_table2].."("..ci:GetClassName()..")" ! elseif c_table[#c_table2+1] and (wxwidgetsNoClassInfo[c_table[#c_table2+1]] == ci:GetClassName()) then ! table.insert(c_table2, c_table[#c_table2+1].." - No wxClassInfo") ! table.insert(c_table2, ci:GetClassName()) ! elseif c_table[#c_table2+1] and classinfoNotes[c_table[#c_table2+1]] then ! c_table[#c_table2+1] = c_table[#c_table2+1]..classinfoNotes[c_table[#c_table2+1]] ! table.insert(c_table2, ci:GetClassName()) ! c_table2.color = list_colors.purple ! else ! table.insert(c_table2, ci:GetClassName()) ! if ((c_table[#c_table2] ~= c_table2[#c_table2])) and ! (c_table2.color == nil) then ! c_table2.color = wx.wxRED end end ! ! if ci:GetBaseClass2() then print(ci:GetClassName(), "Has two bases!") end ! ci = ci:GetBaseClass1() -- FIXME handle two base classes, maybe? end - if max_cols < #c_table2 then max_cols = #c_table2 end - table.insert(t, c_table2) end --- 1118,1154 ---- -- now do wxWidgets base class info if c.classInfo then + local ci = c.classInfo ! local ci_table = GetwxClassInfoBases(ci) ! for ci_i = 1, #ci_table do ! ! local ci_table_i = ci_table[ci_i]; ! ! local c_table2 = {a.."wx"..tostring(ci_i)} ! for ci_ij = 1, #ci_table_i do ! ! if unwrappedBaseClasses[ci_table_i[ci_ij]] then ! c_table2[#c_table2] = c_table2[#c_table2].."("..ci_table_i[ci_ij]..")" ! elseif c_table[#c_table2+1] and (wxwidgetsNoClassInfo[c_table[#c_table2+1]] == ci_table_i[ci_ij]) then ! table.insert(c_table2, c_table[#c_table2+1].." - No wxClassInfo") ! table.insert(c_table2, ci_table_i[ci_ij]) ! elseif c_table[#c_table2+1] and classinfoNotes[c_table[#c_table2+1]] then ! c_table[#c_table2+1] = c_table[#c_table2+1]..classinfoNotes[c_table[#c_table2+1]] ! table.insert(c_table2, ci_table_i[ci_ij]) ! c_table2.color = list_colors.purple ! else ! table.insert(c_table2, ci_table_i[ci_ij]) ! if ((c_table[1][#c_table2] ~= c_table2[#c_table2])) and ! (c_table2.color == nil) then ! c_table2.color = wx.wxRED ! end end end ! ! if max_cols < #c_table2 then max_cols = #c_table2 end ! table.insert(t, c_table2) end end *************** *** 1150,1153 **** --- 1172,1208 ---- -- ---------------------------------------------------------------------------- + -- Create a table of baseclasses from a class wxWidgets wxClassInfo + -- ---------------------------------------------------------------------------- + + -- create a table of tables of cols of the classname and baseclass names + -- if there is a baseclass2 then the returned table will have > 1 tables + function GetwxClassInfoBases(ci) + local c = ci + local t = {{}} + + while c do + table.insert(t[1], c:GetClassName()) + + if c:GetBaseClass2() then + --print(c:GetClassName(), "Has Base2", c:GetBaseClass2()) + + local baseTable2 = GetwxClassInfoBases(c:GetBaseClass2()) + for i = 1, #baseTable2 do + -- insert back in the original info + for j = 1, #t do + table.insert(baseTable2[i], j, t[1][j]) + end + baseTable2[i][1] = baseTable2[i][1].." (base class #"..tostring(i)..")" -- count # of base2s + table.insert(t, baseTable2[i]) + end + end + + c = c:GetBaseClass1() + end + + return t + end + + -- ---------------------------------------------------------------------------- -- Load all the wxWidgets wxClassInfo -- ---------------------------------------------------------------------------- *************** *** 1167,1202 **** end - -- create a table of tables of cols of the classname and baseclass names - -- if there is a baseclass2 then the returned table will have > 1 tables - local function GetBases(ci) - local c = ci - local t = {{}} - - while c do - table.insert(t[1], c:GetClassName()) - - if c:GetBaseClass2() then - --print(c:GetClassName(), "Has Base2", c:GetBaseClass2()) - - local baseTable2 = GetBases(c:GetBaseClass2()) - for i = 1, #baseTable2 do - -- insert back in the original info - for j = 1, #t do - table.insert(baseTable2[i], j, t[1][j]) - end - baseTable2[i][1] = baseTable2[i][1].." (Multiple base classes "..tostring(i)..")" -- count # of base2s - table.insert(t, baseTable2[i]) - end - end - - c = c:GetBaseClass1() - end - - return t - end - local t = { {"..", ["icon"] = list_images.folder}, ! ["col_labels"] = {"wxClassInfo::GetClassName() (wxLua wraps blue)"}, ["object_type"] = "All wxWidgets wxClassInfo" } --- 1222,1228 ---- end local t = { {"..", ["icon"] = list_images.folder}, ! ["col_labels"] = {"wxClassInfo::GetClassName() (wxLua wraps blue)"}, ["object_type"] = "All wxWidgets wxClassInfo" } *************** *** 1206,1210 **** while ci do ! local baseTable = GetBases(ci) for i = 1, #baseTable do if wxluaClasses[baseTable[i][1]] then --- 1232,1236 ---- while ci do ! local baseTable = GetwxClassInfoBases(ci) for i = 1, #baseTable do if wxluaClasses[baseTable[i][1]] then *************** *** 1385,1388 **** --- 1411,1416 ---- --bmp:delete() + toolbar:Realize() + -- ----------------------------------------------------------------------- |