net.intelie.pipes.FullMerger Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of pipes-api Show documentation
Show all versions of pipes-api Show documentation
Intelie Pipes' API classes and interfaces
package net.intelie.pipes;
import net.intelie.pipes.util.TreeQueue;
public interface FullMerger {
void pop();
void push(Tree tree);
void clear();
Tree get();
static void popMany(FullMerger[] mergers) {
for (int i = 0; i < mergers.length; i++)
mergers[i].pop();
}
abstract class Base implements FullMerger {
@Override
@SuppressWarnings("unchecked")
public void push(Tree tree) {
pushQ((Q) tree);
}
public abstract void pushQ(Q tree);
public abstract Q get();
}
abstract class Queued implements FullMerger {
private final TreeQueue queue = new TreeQueue(16);
@Override
@SuppressWarnings("unchecked")
public void push(Tree tree) {
queue.enqueue(tree);
pushQ((Q) tree);
}
@Override
@SuppressWarnings("unchecked")
public void pop() {
if (!queue.isEmpty())
popQ((Q)queue.dequeue());
}
@Override
public void clear() {
queue.clear();
clearQ();
}
public abstract void pushQ(Q tree);
public abstract void popQ(Q tree);
public abstract void clearQ();
public abstract Q get();
}
}