UNPKG

@qooxdoo/framework

Version:

The JS Framework for Coders

161 lines (134 loc) 3.96 kB
/* ************************************************************************ qooxdoo - the new era of web development http://qooxdoo.org Copyright: 2004-2008 1&1 Internet AG, Germany, http://www.1und1.de License: MIT: https://opensource.org/licenses/MIT See the LICENSE file in the project's top-level directory for details. Authors: * Sebastian Werner (wpbasti) * Fabian Jakobs (fjakobs) * Hugh Gibson * Jonathan Weiß (jonathan_rass) ************************************************************************ */ /** * Statics around created qooxdoo instances. * @deprecated {6.0} automatic memory management means that most objects are no * longer stored in the object registry; this class is no longer useful */ qx.Class.define("qx.dev.ObjectSummary", { statics: { /** * Summary of allocated objects * * @return {String} summary of allocated objects. */ getInfo : function() { var vData = {}; var vCounter = 0; var vObject; var vDb = qx.core.ObjectRegistry.getRegistry(); for (var key in vDb) { vObject = vDb[key]; if (vObject && vObject.isDisposed() === false) { if (vData[vObject.classname] == null) { vData[vObject.classname] = 1; } else { vData[vObject.classname]++; } vCounter++; } } var vArrData = []; for (var vClassName in vData) { vArrData.push( { classname : vClassName, number : vData[vClassName] }); } vArrData.sort(function(a, b) { return b.number - a.number; }); var vMsg = "Summary: (" + vCounter + " Objects)\n\n"; for (var i=0; i<vArrData.length; i++) { vMsg += vArrData[i].number + ": " + vArrData[i].classname + "\n"; } return vMsg; }, /** * Allocated objects and lists all objects, which have been newly created * since the last call of this function. * * @return {String} summary of allocated objects. */ getNewObjects : function() { var vData = {}; var vCounter = 0; var vObject; var vDb = qx.core.ObjectRegistry.getRegistry(); var mHashCode = {}; var ar; for (var key in vDb) { vObject = vDb[key]; if (vObject && vObject.isDisposed() === false) { var sClassName = vObject.classname; if (vData[sClassName] == null) { vData[sClassName] = 1; } else { vData[sClassName]++; } ar = mHashCode[sClassName]; if (ar == null) { ar = mHashCode[sClassName] = []; } ar[ar.length] = vObject.toHashCode(); vCounter++; } } if (! this._m_dObjectList) { this._m_dObjectList = {}; } var dMore = {}; for (var sClassName in vData) { if (!(sClassName in this._m_dObjectList)) { this._m_dObjectList[sClassName] = 0; } if (this._m_dObjectList[sClassName] >= 0 && this._m_dObjectList[sClassName] < vData[sClassName]) { dMore[sClassName] = vData[sClassName] - this._m_dObjectList[sClassName]; } } this._m_dObjectList = vData; var vArrData = []; for (var vClassName in dMore) { vArrData.push({ classname : vClassName, number : dMore[vClassName], aHashCode : mHashCode[vClassName] }); } vArrData.sort(function(a, b) { return b.number - a.number; }); var vMsg = "Summary: (" + vCounter + " Objects)\r\n\r\n"; for (var i=0; i<vArrData.length; i++) { vMsg += vArrData[i].number + ": " + vArrData[i].classname + " (" + vArrData[i].aHashCode.join(", ") + ")\r\n"; } return vMsg; } } });