net.sf.saxon.tree.jiter.TopDownStackIterable Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of Saxon-HE Show documentation
Show all versions of Saxon-HE Show documentation
The XSLT and XQuery Processor
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2018-2023 Saxonica Limited
// This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
// If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
// This Source Code Form is "Incompatible With Secondary Licenses", as defined by the Mozilla Public License, v. 2.0.
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
package net.sf.saxon.tree.jiter;
import java.util.Iterator;
import java.util.Stack;
/**
* Provides an iterable over a stack that iterates in order from top to bottom.
* Note: Java stacks natively iterate from bottom to top; C# stacks from top to bottom.
* @param the type of the items on the stack
*/
public class TopDownStackIterable implements Iterable {
private final Stack stack;
/**
* Construct a top-down iterable view of a stack
* @param stack the stack over which the top-down iterator will iterate
*/
public TopDownStackIterable(Stack stack) {
this.stack = stack;
}
/**
* Returns an iterator over elements in the stack, starting at the top of stack and proceeding to the bottom
* @return a descending Iterator.
*/
@Override
public Iterator iterator() {
return new Iterator() {
int i = stack.size()-1;
public boolean hasNext() {
return i >= 0;
}
public T next() {
return stack.get(i--);
}
};
}
}