package aalg.algebra;

/**
 * Iterator that iterates through sequence of elements.
 * @author Ing. Petr Ležák
 *
 * @param <F> type of element
 */
public interface IElementIterator<F extends IElement> {
	/**
	 * Checks if iterator points to some element.
	 * @return true if iterator is valid, false if not 
	 */
	public boolean isValid();
	
	/**
	 * Moves to next element.
	 */
	public void next();
	
	/**
	 * Returns index of actual element.
	 * @return index of actual element
	 */
	public int getIndex();
	
	/**
	 * Returns value of actual element.
	 * @return value of actual element
	 */
	public F getValue();
}
