From: adam Date: Sun, 16 Jul 2006 07:04:41 +0000 (-0400) Subject: checkpoint X-Git-Tag: tag_for_25-Mar~129 X-Git-Url: http://git.megacz.com/?p=sbp.git;a=commitdiff_plain;h=815430f1fa820e28981bf4cff3fe15a4b9f5d97d checkpoint darcs-hash:20060716070441-5007d-c0f6d2afb9fec6558813fdfb6ad433755f17e19e.gz --- 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();