/*
* This file is part of the Jikes RVM project (http://jikesrvm.org).
*
* This file is licensed to You under the Eclipse Public License (EPL);
* You may not use this file except in compliance with the License. You
* may obtain a copy of the License at
*
* http://www.opensource.org/licenses/eclipse-1.0.php
*
* See the COPYRIGHT.txt file distributed with this work for information
* regarding copyright ownership.
*/
package org.jikesrvm.compilers.opt.util;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.NoSuchElementException;
/**
* An enumerator that provides access to the reverse order of elements for
* a given {@link Enumeration}.
*/
public final class ReverseEnumerator<T> implements Enumeration<T> {
private final ArrayList<T> vec;
private int index;
public ReverseEnumerator(Enumeration<T> e) {
vec = new ArrayList<T>();
while (e.hasMoreElements()) {
vec.add(e.nextElement());
}
index = vec.size();
}
@Override
public boolean hasMoreElements() {
return index > 0;
}
@Override
public T nextElement() {
index--;
if (index >= 0) {
return vec.get(index);
} else {
throw new NoSuchElementException();
}
}
}