/**
 * This class stores a database result.
 */
module.exports = new Class
({
	/**
	 * Initilizes the result object.
	 */
	initialize: function (result)
	{
		Object.assign (this, {
			data: result.data,
			tables: result.tables,
			columns: result.columns,
			row: -1
		});
	}

	/**
	 * Moves the pointer to the next row and returns it as an object.
	 *
	 * @return {Object} The row or %null if there are no more rows
	 */
	,fetchRow: function ()
	{
		if (!this.next ())
			return null;

		return this.data[this.row];
	}

	/**
	 * Returns the current row as an object.
	 *
	 * @param {number} rowIndex The row index
	 * @return {Object} The row or %null if there are no more rows
	 */
	,getRow: function (rowIndex)
	{
		return this.data[rowIndex];
	}
	
	/**
	 * Resets the result iterator.
	 */
	,reset: function ()
	{
		this.row = -1;
	}
	
	/**
	 * Moves the internal iterator to the next row.
	 */
	,next: function ()
	{
		this.row++;
		
		if (this.row >= this.data.length)
			return false;
			
		return true;
	}
});

