/*
	
	IRC-Bot "Kvasir"
    Copyright (C) 2016	Fenris Wolf (fenris@folksprak.org)
	
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.
	
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
	
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
       
*/


/**
 * @author fenris
 */
class klaso_vico<tipo_elemento>
{
	
	/**
	 * @author fenris
	 */
	protected elementoj : Array<tipo_elemento>;
	
	
	/**
	 * @author fenris
	 */
	public constructor(elementoj : Array<tipo_elemento> = [])
	{
		this.elementoj = new Array<tipo_elemento>();
		this.elementoj = this.elementoj.concat(elementoj);
	}
	
	
	/**
	 * @author fenris
	 */
	public doni(elemento : tipo_elemento) : void
	{
		this.elementoj.push(elemento);
	}
	
	
	/**
	 * @author fenris
	 */
	public grando() : int
	{
		return this.elementoj.length;
	}
	
	
	/**
	 * @author fenris
	 */
	public malplena() : boolean
	{
		return (this.grando() == 0);
	}
	
	
	/**
	 * @author fenris
	 */
	public legi() : tipo_elemento
	{
		return (this.malplena() ? null : this.elementoj[0]);
	}
	
	
	/**
	 * @author fenris
	 */
	public preni() : tipo_elemento
	{
		if (this.malplena())
		{
			return null;
		}
		else
		{
			let areo : Array<tipo_elemento> = this.elementoj.splice(0, 1);
			return areo[0];
		}
	}
	
}