From 815430f1fa820e28981bf4cff3fe15a4b9f5d97d Mon Sep 17 00:00:00 2001 From: adam Date: Sun, 16 Jul 2006 03:04:41 -0400 Subject: [PATCH] checkpoint darcs-hash:20060716070441-5007d-c0f6d2afb9fec6558813fdfb6ad433755f17e19e.gz --- src/edu/berkeley/sbp/Forest.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/edu/berkeley/sbp/Forest.java b/src/edu/berkeley/sbp/Forest.java index 65a8095..3795c9a 100644 --- a/src/edu/berkeley/sbp/Forest.java +++ b/src/edu/berkeley/sbp/Forest.java @@ -127,6 +127,11 @@ public abstract class Forest implements GraphViz.ToGraphViz { public Many() { } + public Iterator> iterator() { + touched(); + return (Iterator>)hp.iterator(); // FIXME: fastset's iterator is not safe! + } + public Tree expand1() throws Ambiguous { touched(); if (hp.size() > 1) { @@ -153,7 +158,14 @@ public abstract class Forest implements GraphViz.ToGraphViz { } private void touched() { + if (touched) return; touched = true; + FastSet> f2 = new FastSet>(); + for(Forest f : hp) + if (f instanceof Forest.One) f2.add(f); + else for(Forest ff : ((Forest.Many)f)) + f2.add(ff); + hp = f2; } public boolean contains(Forest f) { touched(); -- 1.7.10.4