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.signalEmit ('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 ();
	}
});