9fae34f10fa8b0956ef079ae81bfea23ebf16777
[sbp.git] / src / edu / berkeley / sbp / util / TreeBuilder.java
1 package edu.berkeley.sbp.util;
2 import edu.berkeley.sbp.*;
3 import java.util.*;
4
5 public abstract class TreeBuilder<T> implements Invokable<Forest.Body<T>,Boolean,Integer> {
6     public ArrayList<Tree<T>> toks = new ArrayList<Tree<T>>();
7     public boolean toss;
8     protected T head;
9     public TreeBuilder(boolean toss) { this.toss = toss; }
10     public abstract void start(T head, Input.Region loc);
11     public abstract void finish(T head, Input.Region loc);
12     public abstract void addTree(Tree<T> t);
13     public void invoke(Forest.Body<T> bod, Boolean o, Integer i) {
14         if (i==null) {
15             ArrayList<Tree<T>> toks = this.toks;
16             this.toks = new ArrayList<Tree<T>>();
17             bod.expand(0, this);
18             this.toks = toks;
19         } else {
20             bod.expand(i, this);
21         }
22     }
23 }