From: John L. <jr...@us...> - 2007-12-13 00:48:22
|
Update of /cvsroot/wxlua/wxLua/bindings/wxwidgets In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv15370/wxLua/bindings/wxwidgets Modified Files: wxbase_override.hpp wxcore_override.hpp wxxml_override.hpp Log Message: * Allowed using wxObject:DynamicCast() on an object and be able to use the object as both types. The problem was that wxEvent:GetEventObject() returned a wxObject which overwrote the wxWindow (perhaps) that you had as a userdata in Lua already. Additionally, if you delete an object all of the userdata that wrap it have their metatables cleared for safety. Functions renamed since they didn't do the same thing or behave the same. wxluaO_istrackedobject -> wxluaO_isgcobject wxluaO_addtrackedobject -> wxluaO_addgcobject wxluaO_removetrackedobject -> wxluaO_deletegcobject - Created a central luauserdata:delete() function for the bindings to reduce code. wxLua_wxluabind_delete(L) wxLuaStackDialog: You can expand both key and values of a table and more information is provided about items wxLua knows about. Index: wxbase_override.hpp =================================================================== RCS file: /cvsroot/wxlua/wxLua/bindings/wxwidgets/wxbase_override.hpp,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** wxbase_override.hpp 10 Dec 2007 05:39:05 -0000 1.9 --- wxbase_override.hpp 13 Dec 2007 00:47:48 -0000 1.10 *************** *** 166,170 **** // we may not be tracked, but delete us anyway ! if (!wxluaO_removetrackedobject(L, self, wxLUA_DELETE_CLEAR_OBJECT)) delete self; --- 166,170 ---- // we may not be tracked, but delete us anyway ! if (!wxluaO_deletegcobject(L, self, wxLUA_DELETE_REMOVE_OBJECT)) delete self; *************** *** 355,359 **** wxString* returns = new wxString(str); // add to tracked memory list ! wxluaO_addtrackedobject(L, (void*)returns, new wxLua_wxObject_wxString(returns)); // push the constructed class pointer wxluaT_pushuserdatatype(L, s_wxluatag_wxString, returns); --- 355,359 ---- wxString* returns = new wxString(str); // add to tracked memory list ! wxluaO_addgcobject(L, (void*)returns, new wxLua_wxObject_wxString(returns)); // push the constructed class pointer wxluaT_pushuserdatatype(L, s_wxluatag_wxString, returns); *************** *** 401,405 **** if (pObject->IsKindOf(pClass->classInfo)) { ! wxluaT_settag(L, *pClass->class_tag); iResult = 1; } --- 401,409 ---- if (pObject->IsKindOf(pClass->classInfo)) { ! if (*pClass->class_tag != wxluaT_gettag(L, 1)) ! wxluaT_pushuserdatatype(L, *pClass->class_tag, pObject); ! else ! lua_pushvalue(L, 1); // return same userdata ! iResult = 1; } *************** *** 572,578 **** bool returns = self->GetTimes(dtAccess, dtMod, dtCreate); // add to tracked memory list ! wxluaO_addtrackedobject(L, (void*)dtAccess, new wxLua_wxObject_wxDateTime(dtAccess)); ! wxluaO_addtrackedobject(L, (void*)dtMod, new wxLua_wxObject_wxDateTime(dtMod)); ! wxluaO_addtrackedobject(L, (void*)dtCreate, new wxLua_wxObject_wxDateTime(dtCreate)); // push the constructed class pointers wxluaT_pushuserdatatype(L, s_wxluatag_wxDateTime, dtAccess); --- 576,582 ---- bool returns = self->GetTimes(dtAccess, dtMod, dtCreate); // add to tracked memory list ! wxluaO_addgcobject(L, (void*)dtAccess, new wxLua_wxObject_wxDateTime(dtAccess)); ! wxluaO_addgcobject(L, (void*)dtMod, new wxLua_wxObject_wxDateTime(dtMod)); ! wxluaO_addgcobject(L, (void*)dtCreate, new wxLua_wxObject_wxDateTime(dtCreate)); // push the constructed class pointers wxluaT_pushuserdatatype(L, s_wxluatag_wxDateTime, dtAccess); Index: wxcore_override.hpp =================================================================== RCS file: /cvsroot/wxlua/wxLua/bindings/wxwidgets/wxcore_override.hpp,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** wxcore_override.hpp 10 Dec 2007 05:39:05 -0000 1.9 --- wxcore_override.hpp 13 Dec 2007 00:47:48 -0000 1.10 *************** *** 127,131 **** if (returns != NULL) { ! wxluaO_addtrackedobject(L, returns); // push the constructed class pointer wxluaT_pushuserdatatype(L, s_wxluatag_wxAcceleratorTable, returns); --- 127,131 ---- if (returns != NULL) { ! wxluaO_addgcobject(L, returns); // push the constructed class pointer wxluaT_pushuserdatatype(L, s_wxluatag_wxAcceleratorTable, returns); *************** *** 525,529 **** wxTreeItemId *returns = new wxTreeItemId(self->GetFirstChild(*item, cookie)); // add the new object to the tracked memory list ! wxluaO_addtrackedobject(L, (void*)returns, new wxLua_wxObject_wxTreeItemId(returns)); // push the result datatype wxluaT_pushuserdatatype(L, s_wxluatag_wxTreeItemId, returns); --- 525,529 ---- wxTreeItemId *returns = new wxTreeItemId(self->GetFirstChild(*item, cookie)); // add the new object to the tracked memory list ! wxluaO_addgcobject(L, (void*)returns, new wxLua_wxObject_wxTreeItemId(returns)); // push the result datatype wxluaT_pushuserdatatype(L, s_wxluatag_wxTreeItemId, returns); *************** *** 557,561 **** wxTreeItemId *returns = new wxTreeItemId(self->GetNextChild(*item, cookie)); // add the new object to the tracked memory list ! wxluaO_addtrackedobject(L, (void*)returns, new wxLua_wxObject_wxTreeItemId(returns)); // push the result datatype wxluaT_pushuserdatatype(L, s_wxluatag_wxTreeItemId, returns); --- 557,561 ---- wxTreeItemId *returns = new wxTreeItemId(self->GetNextChild(*item, cookie)); // add the new object to the tracked memory list ! wxluaO_addgcobject(L, (void*)returns, new wxLua_wxObject_wxTreeItemId(returns)); // push the result datatype wxluaT_pushuserdatatype(L, s_wxluatag_wxTreeItemId, returns); *************** *** 587,591 **** { wxTreeItemId* treeId = new wxTreeItemId(selection[idx]); ! wxluaO_addtrackedobject(L, (void*)treeId, new wxLua_wxObject_wxTreeItemId(treeId)); wxluaT_pushuserdatatype(L, s_wxluatag_wxTreeItemId, treeId); lua_rawseti(L, -2, idx + 1); --- 587,591 ---- { wxTreeItemId* treeId = new wxTreeItemId(selection[idx]); ! wxluaO_addgcobject(L, (void*)treeId, new wxLua_wxObject_wxTreeItemId(treeId)); wxluaT_pushuserdatatype(L, s_wxluatag_wxTreeItemId, treeId); lua_rawseti(L, -2, idx + 1); *************** *** 610,614 **** wxTreeItemId *returns = new wxTreeItemId(self->HitTest(*point, flags)); // add the new object to the tracked memory list ! wxluaO_addtrackedobject(L, (void*)returns, new wxLua_wxObject_wxTreeItemId(returns)); // push the result datatype --- 610,614 ---- wxTreeItemId *returns = new wxTreeItemId(self->HitTest(*point, flags)); // add the new object to the tracked memory list ! wxluaO_addgcobject(L, (void*)returns, new wxLua_wxObject_wxTreeItemId(returns)); // push the result datatype *************** *** 660,664 **** wxGenericValidator *returns = new wxGenericValidator(boolPtr->GetBoolPtr()); // add to tracked memory list ! wxluaO_addtrackedobject(L, returns); // push the constructed class pointer wxluaT_pushuserdatatype(L, s_wxluatag_wxGenericValidator, returns); --- 660,664 ---- wxGenericValidator *returns = new wxGenericValidator(boolPtr->GetBoolPtr()); // add to tracked memory list ! wxluaO_addgcobject(L, returns); // push the constructed class pointer wxluaT_pushuserdatatype(L, s_wxluatag_wxGenericValidator, returns); *************** *** 679,683 **** wxGenericValidator *returns = new wxGenericValidator(valPtr->GetStringPtr()); // add to tracked memory list ! wxluaO_addtrackedobject(L, returns); // push the constructed class pointer wxluaT_pushuserdatatype(L, s_wxluatag_wxGenericValidator, returns); --- 679,683 ---- wxGenericValidator *returns = new wxGenericValidator(valPtr->GetStringPtr()); // add to tracked memory list ! wxluaO_addgcobject(L, returns); // push the constructed class pointer wxluaT_pushuserdatatype(L, s_wxluatag_wxGenericValidator, returns); *************** *** 698,702 **** wxGenericValidator *returns = new wxGenericValidator(valPtr->GetIntPtr()); // add to tracked memory list ! wxluaO_addtrackedobject(L, returns); // push the constructed class pointer wxluaT_pushuserdatatype(L, s_wxluatag_wxGenericValidator, returns); --- 698,702 ---- wxGenericValidator *returns = new wxGenericValidator(valPtr->GetIntPtr()); // add to tracked memory list ! wxluaO_addgcobject(L, returns); // push the constructed class pointer wxluaT_pushuserdatatype(L, s_wxluatag_wxGenericValidator, returns); *************** *** 717,721 **** wxGenericValidator *returns = new wxGenericValidator(valPtr->GetArrayPtr()); // add to tracked memory list ! wxluaO_addtrackedobject(L, returns); // push the constructed class pointer wxluaT_pushuserdatatype(L, s_wxluatag_wxGenericValidator, returns); --- 717,721 ---- wxGenericValidator *returns = new wxGenericValidator(valPtr->GetArrayPtr()); // add to tracked memory list ! wxluaO_addgcobject(L, returns); // push the constructed class pointer wxluaT_pushuserdatatype(L, s_wxluatag_wxGenericValidator, returns); *************** *** 880,884 **** wxBusyCursor *returns = new wxBusyCursor(cursor); // add to tracked memory list ! wxluaO_addtrackedobject(L, (void*)returns, new wxLua_wxObject_wxBusyCursor((wxBusyCursor *)returns)); // push the constructed class pointer wxluaT_pushuserdatatype(L, s_wxluatag_wxBusyCursor, returns); --- 880,884 ---- wxBusyCursor *returns = new wxBusyCursor(cursor); // add to tracked memory list ! wxluaO_addgcobject(L, (void*)returns, new wxLua_wxObject_wxBusyCursor((wxBusyCursor *)returns)); // push the constructed class pointer wxluaT_pushuserdatatype(L, s_wxluatag_wxBusyCursor, returns); *************** *** 1475,1479 **** wxBitmap *returns = new wxBitmap(data, type, width, height, depth); // add to tracked memory list ! wxluaO_addtrackedobject(L, returns); // push the constructed class pointer wxluaT_pushuserdatatype(L, s_wxluatag_wxBitmap, returns); --- 1475,1479 ---- wxBitmap *returns = new wxBitmap(data, type, width, height, depth); // add to tracked memory list ! wxluaO_addgcobject(L, returns); // push the constructed class pointer wxluaT_pushuserdatatype(L, s_wxluatag_wxBitmap, returns); *************** *** 1499,1503 **** delete [] sizeArray; // add to tracked memory list ! wxluaO_addtrackedobject(L, returns); // push the constructed class pointer wxluaT_pushuserdatatype(L, s_wxluatag_wxBitmap, returns); --- 1499,1503 ---- delete [] sizeArray; // add to tracked memory list ! wxluaO_addgcobject(L, returns); // push the constructed class pointer wxluaT_pushuserdatatype(L, s_wxluatag_wxBitmap, returns); *************** *** 1693,1697 **** wxImage *returns = new wxImage(width, height, data, static_data); // add to tracked memory list ! wxluaO_addtrackedobject(L, returns); // push the constructed class pointer wxluaT_pushuserdatatype(L, s_wxluatag_wxImage, returns); --- 1693,1697 ---- wxImage *returns = new wxImage(width, height, data, static_data); // add to tracked memory list ! wxluaO_addgcobject(L, returns); // push the constructed class pointer wxluaT_pushuserdatatype(L, s_wxluatag_wxImage, returns); *************** *** 1712,1716 **** wxImage *returns = new wxImage(bitmap->ConvertToImage()); // add to tracked memory list ! wxluaO_addtrackedobject(L, returns); // push the constructed class pointer wxluaT_pushuserdatatype(L, s_wxluatag_wxImage, returns); --- 1712,1716 ---- wxImage *returns = new wxImage(bitmap->ConvertToImage()); // add to tracked memory list ! wxluaO_addgcobject(L, returns); // push the constructed class pointer wxluaT_pushuserdatatype(L, s_wxluatag_wxImage, returns); *************** *** 1940,1944 **** wxLuaArtProvider *returns = new wxLuaArtProvider(wxlState); // add to tracked memory list ! wxluaO_addtrackedobject(L, (wxLuaArtProvider *)returns); // push the constructed class pointer wxluaT_pushuserdatatype(L, s_wxluatag_wxLuaArtProvider, returns); --- 1940,1944 ---- wxLuaArtProvider *returns = new wxLuaArtProvider(wxlState); // add to tracked memory list ! wxluaO_addgcobject(L, (wxLuaArtProvider *)returns); // push the constructed class pointer wxluaT_pushuserdatatype(L, s_wxluatag_wxLuaArtProvider, returns); *************** *** 2310,2314 **** *returns = *self; // add to tracked memory list ! wxluaO_addtrackedobject(L, returns); // push the constructed class pointer wxluaT_pushuserdatatype(L, s_wxluatag_wxPrintData, returns); --- 2310,2314 ---- *returns = *self; // add to tracked memory list ! wxluaO_addgcobject(L, returns); // push the constructed class pointer wxluaT_pushuserdatatype(L, s_wxluatag_wxPrintData, returns); *************** *** 2327,2331 **** *returns = *self; // add to tracked memory list ! wxluaO_addtrackedobject(L, returns); // push the constructed class pointer wxluaT_pushuserdatatype(L, s_wxluatag_wxPageSetupDialogData, returns); --- 2327,2331 ---- *returns = *self; // add to tracked memory list ! wxluaO_addgcobject(L, returns); // push the constructed class pointer wxluaT_pushuserdatatype(L, s_wxluatag_wxPageSetupDialogData, returns); *************** *** 2354,2359 **** // we must disconnect them from our tracking list if (printoutForPrinting != NULL) ! wxluaO_removetrackedobject(L, printoutForPrinting, wxLUA_UNDELETE_OBJECT); ! wxluaO_removetrackedobject(L, printout, wxLUA_UNDELETE_OBJECT); // call constructor --- 2354,2359 ---- // we must disconnect them from our tracking list if (printoutForPrinting != NULL) ! wxluaO_deletegcobject(L, printoutForPrinting, wxLUA_UNDELETE_OBJECT); ! wxluaO_deletegcobject(L, printout, wxLUA_UNDELETE_OBJECT); // call constructor *************** *** 2728,2732 **** wxLuaPrintout *returns = new wxLuaPrintout(wxlState, title, pObject); // add to tracked memory list ! wxluaO_addtrackedobject(L, (wxLuaPrintout *)returns); // push the constructed class pointer wxluaT_pushuserdatatype(L, s_wxluatag_wxLuaPrintout, returns); --- 2728,2732 ---- wxLuaPrintout *returns = new wxLuaPrintout(wxlState, title, pObject); // add to tracked memory list ! wxluaO_addgcobject(L, (wxLuaPrintout *)returns); // push the constructed class pointer wxluaT_pushuserdatatype(L, s_wxluatag_wxLuaPrintout, returns); Index: wxxml_override.hpp =================================================================== RCS file: /cvsroot/wxlua/wxLua/bindings/wxwidgets/wxxml_override.hpp,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** wxxml_override.hpp 10 Dec 2007 05:39:05 -0000 1.5 --- wxxml_override.hpp 13 Dec 2007 00:47:48 -0000 1.6 *************** *** 32,36 **** // add to tracked memory list if (parent == NULL) ! wxluaO_addtrackedobject(L, (void*)returns, new wxLua_wxObject_wxXmlNode((wxXmlNode *)returns)); // push the constructed class pointer wxluaT_pushuserdatatype(L, s_wxluatag_wxXmlNode, returns); --- 32,36 ---- // add to tracked memory list if (parent == NULL) ! wxluaO_addgcobject(L, (void*)returns, new wxLua_wxObject_wxXmlNode((wxXmlNode *)returns)); // push the constructed class pointer wxluaT_pushuserdatatype(L, s_wxluatag_wxXmlNode, returns); *************** *** 51,56 **** bool returns = (self->RemoveChild(child)); ! if (returns && !wxluaO_istrackedobject(L, child)) ! wxluaO_addtrackedobject(L, (void*)child, new wxLua_wxObject_wxXmlNode(child)); // push the result flag --- 51,56 ---- bool returns = (self->RemoveChild(child)); ! if (returns && !wxluaO_isgcobject(L, child)) ! wxluaO_addgcobject(L, (void*)child, new wxLua_wxObject_wxXmlNode(child)); // push the result flag |