1 // Copyright 2006-2007 all rights reserved; see LICENSE file for BSD-style license
3 package edu.berkeley.sbp;
4 import edu.berkeley.sbp.util.*;
5 import edu.berkeley.sbp.Sequence.Pos;
6 import edu.berkeley.sbp.Sequence.Pos;
10 extends Node<StateNode> {
12 private Forest.Many f = new Forest.Many();
13 private Pos reduction;
15 public void merge(Forest newf) { this.f.merge(newf); }
16 public Pos reduction() { return reduction; }
17 public boolean isDoomedState() { /* this is irrelevant */ return false; }
18 public Forest getForest() { return f; }
19 public String toString() { return super.toString()+"->"+phase(); }
22 if (destroyed) return;
23 if (successors.size()==0) destroy();
24 else if (predecessors.size()==0) destroy();
26 protected void destroy() {
27 if (destroyed) return;
28 if (predecessorPhase()==null) return; // never destroy the "primordeal" result
32 public void addPred(StateNode pred) {
34 // results have only one predecessor
35 if (predecessors.size() > 1) throw new Error();
38 public ResultNode() { this(null, null, null); }
39 public ResultNode(Forest f, Pos reduction, StateNode pred) {
40 super(pred==null ? null : pred.phase(),
41 pred==null ? null : pred.phase());
43 this.reduction = reduction;
44 if (pred != null) addPred(pred);