var Object = require ('./object'); /** * List of Sql.Object */ module.exports = new Class ({ Extends: Object ,objects: [] ,add: function (object) { this.objects.push (object.ref ()); object.on ('changed', this._onObjectChange, this); this._onObjectChange (); } ,get: function (i) { return objects[i]; } ,getArray: function () { return this.objects; } ,remove: function (i) { this._unrefObject (this.objects.splice (i, 1)); this._onObjectChange (); } ,_onObjectChange: function () { this.emit ('changed'); } ,isReady: function () { var o = this.objects; if (o.length == 0) return false; for (var i = 0; i < o.length; i++) if (!o[i].isReady ()) return false; return true; } ,_unrefObject: function (object) { object.disconnect ('changed', this._onObjectChange, this); object.unref (); } ,_destroy: function () { for (var i = 0; i < this.objects.length; i++) this._unrefObject (this.objects[i]); this.parent (); } });