/*
* 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.Enumeration;
import java.util.NoSuchElementException;
/**
* This class provides enumeration of all children of a TreeNode
*/
final class TreeNodeChildrenEnumerator implements Enumeration<TreeNode> {
/**
* the current child we are working on
*/
private TreeNode currentChild;
/**
* Provides iteration over a list of children tree nodes
* @param node Root of the tree to iterate over.
*/
TreeNodeChildrenEnumerator(TreeNode node) {
// start at the first child
currentChild = node.getLeftChild();
}
/**
* any elements left?
* @return whether there are any elements left
*/
@Override
public boolean hasMoreElements() {
return currentChild != null;
}
/**
* returns the next element in the list iterator
* @return the next element in the list iterator or null
*/
@Override
public TreeNode nextElement() {
// save the return value
TreeNode returnValue = currentChild;
// update the currentChild pointer, if possible
if (currentChild != null) {
currentChild = currentChild.getRightSibling();
} else {
throw new NoSuchElementException("TreeNodeChildrenEnumerator");
}
// return the value
return returnValue;
}
}