From: John L. <jr...@us...> - 2007-03-15 00:01:46
|
Update of /cvsroot/wxlua/wxLua/bindings In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv15657/wxLua/bindings Modified Files: genwxbind.lua Log Message: Remove wxLua_AddTrackedObject functions and just use wxLuaState::AddTrackedObject directly Remove all gc (destructor, LuaDelete) functions from the methods of a class since we can delete the objects in the single gc function in wxlbind.cpp anyway. Index: genwxbind.lua =================================================================== RCS file: /cvsroot/wxlua/wxLua/bindings/genwxbind.lua,v retrieving revision 1.105 retrieving revision 1.106 diff -C2 -d -r1.105 -r1.106 *** genwxbind.lua 13 Mar 2007 23:01:53 -0000 1.105 --- genwxbind.lua 15 Mar 2007 00:01:09 -0000 1.106 *************** *** 18,22 **** -- --------------------------------------------------------------------------- ! WXLUA_BINDING_VERSION = 5 -- Used to verify that the bindings are updated -- This must match modules/wxlua/include/wxldefs.h --- 18,22 ---- -- --------------------------------------------------------------------------- ! WXLUA_BINDING_VERSION = 6 -- Used to verify that the bindings are updated -- This must match modules/wxlua/include/wxldefs.h *************** *** 186,189 **** --- 186,190 ---- Abstract = abstract, Condition = nil, -- conditions for this data type, eg. wxLUA_USE_xxx + Encapsulate = nil, -- Non wxObject derived class } end *************** *** 2509,2512 **** --- 2510,2518 ---- end + -- Set if this data type should be Encapsulated + if dataTypeTable[parseState.ObjectStack[1].Name] and parseState.ObjectStack[1].Encapsulate then + dataTypeTable[parseState.ObjectStack[1].Name].Encapsulate = parseState.ObjectStack[1].Encapsulate + end + -- pop inline condition onto condition stack if not lineState.IsBlockCondition and lineState.Condition then *************** *** 3486,3490 **** end ! table.insert(codeList, " wxLua_AddTrackedObject(wxlState, ("..returnCast..")returns);\n") elseif parseObject.HasClassInfo then CommentBindingTable(codeList, " // add to tracked window list\n") --- 3492,3500 ---- end ! if parseObject.Encapsulate then ! table.insert(codeList, " wxlState.AddTrackedObject((long)returns, new wxObject_"..MakeVar(parseObject.Name).."(("..returnCast..")returns));\n") ! else ! table.insert(codeList, " wxlState.AddTrackedObject(("..returnCast..")returns);\n") ! end elseif parseObject.HasClassInfo then CommentBindingTable(codeList, " // add to tracked window list\n") *************** *** 3559,3563 **** end ! table.insert(codeList, " wxLua_AddTrackedObject(wxlState, ("..returnCast..")returns);\n") elseif (not member.IsOperator) and (memberPtr == "&") and (memberType ~= "wxString") then table.insert(codeList, " returns = &"..functor..";\n") --- 3569,3578 ---- end ! if dataTypeTable[memberType].Encapsulate then ! table.insert(codeList, " wxlState.AddTrackedObject((long)returns, new wxObject_"..MakeVar(memberType).."(("..returnCast..")returns));\n") ! else ! table.insert(codeList, " wxlState.AddTrackedObject(("..returnCast..")returns);\n") ! end ! elseif (not member.IsOperator) and (memberPtr == "&") and (memberType ~= "wxString") then table.insert(codeList, " returns = &"..functor..";\n") *************** *** 3697,3737 **** end ! local classcondition = parseObject.Condition or "1" ! local classBinding = ! { ! Map = " { \""..MakeVar(parseObject.Name).."\", "..MakeVar(parseObject.Name).."_methods, "..MakeVar(parseObject.Name).."_methodCount, "..classinfo..", &s_wxluatag_"..MakeClassVar(parseObject.Name)..", "..MakeVar(baseclass)..", NULL }, \n", ! Condition = classcondition ! } ! ! if not classBindingTable[classcondition] then classBindingTable[classcondition] = {} end ! classBindingTable[classcondition][parseObject.Name] = classBinding -- Class Functions if parseObject.DeleteRequired then - -- garbage collector routine - codeList = {} - local funcName = "wxLua_"..MakeVar(parseObject.Name).."_destructor" - table.insert(codeList, "static int LUACALL "..funcName.."(lua_State *L)\n{\n") - table.insert(codeList, " wxLuaState wxlState(L);\n") - table.insert(codeList, " "..parseObject.Name.." * self = ("..parseObject.Name.." *)wxlState.GetUserDataType(1, s_wxluatag_"..MakeClassVar(parseObject.Name)..");\n") - - CommentBindingTable(codeList, "\n // remove from tracked memory list\n") - - table.insert(codeList, " if (self != 0)\n") - table.insert(codeList, " wxlState.RemoveTrackedObject(self);\n") - table.insert(codeList, " return 0;\n") - table.insert(codeList, "}\n\n") - - local condition = parseObject.Condition or "1" - local gcMethodBinding = - { - Method = codeList, - Map = " { LuaDelete, \""..MakeVar(parseObject.Name).."\", "..funcName..", 0, 0, s_wxluaargArray_None },\n", - Condition = condition - } - - if not interface.objectData[o].BindTable[condition] then interface.objectData[o].BindTable[condition] = {} end - table.insert(interface.objectData[o].BindTable[condition], gcMethodBinding) - -- delete routine codeList = {} --- 3712,3719 ---- end ! local gcFunctionName = "NULL" -- Class Functions if parseObject.DeleteRequired then -- delete routine codeList = {} *************** *** 3740,3755 **** table.insert(codeList, " wxLuaState wxlState(L);\n") table.insert(codeList, " "..parseObject.Name.." * self = ("..parseObject.Name.." *)wxlState.GetUserDataType(1, s_wxluatag_"..MakeClassVar(parseObject.Name)..");\n") ! ! CommentBindingTable(codeList, " // remove from tracked memory list\n") ! ! table.insert(codeList, " if (self != 0)\n") ! table.insert(codeList, " if (wxlState.RemoveTrackedObject(self))\n") ! table.insert(codeList, " { // if removed, reset the tag so that gc() is not called on this object.\n") ! table.insert(codeList, " lua_pushnil(L);\n") ! table.insert(codeList, " lua_setmetatable(L, -2);\n") ! table.insert(codeList, " }\n") table.insert(codeList, " return 0;\n") table.insert(codeList, "}\n\n") local delMethodBinding = { --- 3722,3735 ---- table.insert(codeList, " wxLuaState wxlState(L);\n") table.insert(codeList, " "..parseObject.Name.." * self = ("..parseObject.Name.." *)wxlState.GetUserDataType(1, s_wxluatag_"..MakeClassVar(parseObject.Name)..");\n") ! CommentBindingTable(codeList, " // if removed from tracked mem list, reset the tag so that gc() is not called on this object.\n") ! table.insert(codeList, " if ((self != NULL) && wxlState.RemoveTrackedObject(self))\n") ! table.insert(codeList, " {\n") ! table.insert(codeList, " lua_pushnil(L);\n") ! table.insert(codeList, " lua_setmetatable(L, -2);\n") ! table.insert(codeList, " }\n") table.insert(codeList, " return 0;\n") table.insert(codeList, "}\n\n") + local condition = parseObject.Condition or "1" local delMethodBinding = { *************** *** 3761,3783 **** if not interface.objectData[o].BindTable[condition] then interface.objectData[o].BindTable[condition] = {} end table.insert(interface.objectData[o].BindTable[condition], delMethodBinding) ! else ! -- garbage collector routine ! codeList = {} ! local funcName = "wxLua_"..MakeVar(parseObject.Name).."_destructor" ! table.insert(codeList, "static int LUACALL "..funcName.."(lua_State *)\n{\n") ! table.insert(codeList, " return 0;\n") ! table.insert(codeList, "}\n\n") ! local condition = parseObject.Condition or "1" ! local gcMethodBinding = ! { ! Method = codeList, ! Map = " { LuaDelete, \""..MakeVar(parseObject.Name).."\", "..funcName..", 0, 0, s_wxluaargArray_None },\n", ! Condition = condition ! } - if not interface.objectData[o].BindTable[condition] then interface.objectData[o].BindTable[condition] = {} end - table.insert(interface.objectData[o].BindTable[condition], gcMethodBinding) - end end end --- 3741,3757 ---- if not interface.objectData[o].BindTable[condition] then interface.objectData[o].BindTable[condition] = {} end table.insert(interface.objectData[o].BindTable[condition], delMethodBinding) ! end ! local classcondition = parseObject.Condition or "1" ! local classBinding = ! { ! Name = MakeVar(parseObject.Name), ! Map = " { \""..MakeVar(parseObject.Name).."\", "..MakeVar(parseObject.Name).."_methods, "..MakeVar(parseObject.Name).."_methodCount, "..classinfo..", &s_wxluatag_"..MakeClassVar(parseObject.Name)..", "..MakeVar(baseclass)..", NULL }, \n", ! Condition = classcondition ! } ! ! if not classBindingTable[classcondition] then classBindingTable[classcondition] = {} end ! classBindingTable[classcondition][parseObject.Name] = classBinding end end |