package alice.tuprolog; import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class SubGoalTree extends AbstractSubGoalTree implements Iterable<AbstractSubGoalTree> { private List<AbstractSubGoalTree> terms; public SubGoalTree() { terms = new ArrayList<AbstractSubGoalTree>(); } public void addChild(Term term) { SubGoalElement l = new SubGoalElement(term); terms.add(l); } public SubGoalTree addChild() { SubGoalTree r = new SubGoalTree(); terms.add(r); return r; } public AbstractSubGoalTree getChild(int i) { return terms.get(i); } @Override public Iterator<AbstractSubGoalTree> iterator() { return terms.iterator(); } public int size() { return terms.size(); } @Override public boolean isLeaf() { return false; } @Override public boolean isRoot() { return true; } @Override public String toString() { String result = " [ "; Iterator<AbstractSubGoalTree> i = terms.iterator(); if (i.hasNext()) result = result + i.next().toString(); while (i.hasNext()) { result = result + " , " + i.next().toString(); } return result + " ] "; } }