tikhomirov@596: /* tikhomirov@596: * Copyright (c) 2013 TMate Software Ltd tikhomirov@596: * tikhomirov@596: * This program is free software; you can redistribute it and/or modify tikhomirov@596: * it under the terms of the GNU General Public License as published by tikhomirov@596: * the Free Software Foundation; version 2 of the License. tikhomirov@596: * tikhomirov@596: * This program is distributed in the hope that it will be useful, tikhomirov@596: * but WITHOUT ANY WARRANTY; without even the implied warranty of tikhomirov@596: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the tikhomirov@596: * GNU General Public License for more details. tikhomirov@596: * tikhomirov@596: * For information on how to redistribute this software under tikhomirov@596: * the terms of a license other than GNU General Public License tikhomirov@596: * contact TMate Software at support@hg4j.com tikhomirov@596: */ tikhomirov@596: package org.tmatesoft.hg.internal; tikhomirov@596: tikhomirov@596: import java.util.Iterator; tikhomirov@596: import java.util.List; tikhomirov@596: import java.util.ListIterator; tikhomirov@596: tikhomirov@596: /** tikhomirov@596: * @author Artem Tikhomirov tikhomirov@596: * @author TMate Software Ltd. tikhomirov@596: */ tikhomirov@596: public class ReverseIterator implements Iterator { tikhomirov@596: private final ListIterator listIterator; tikhomirov@596: tikhomirov@596: public ReverseIterator(List list) { tikhomirov@596: listIterator = list.listIterator(list.size()); tikhomirov@596: } tikhomirov@596: tikhomirov@596: public boolean hasNext() { tikhomirov@596: return listIterator.hasPrevious(); tikhomirov@596: } tikhomirov@596: public E next() { tikhomirov@596: return listIterator.previous(); tikhomirov@596: } tikhomirov@596: public void remove() { tikhomirov@596: listIterator.remove(); tikhomirov@596: } tikhomirov@596: tikhomirov@596: public static Iterable reversed(final List list) { tikhomirov@596: return new Iterable() { tikhomirov@596: tikhomirov@596: public Iterator iterator() { tikhomirov@596: return new ReverseIterator(list); tikhomirov@596: } tikhomirov@596: }; tikhomirov@596: } tikhomirov@596: }