From: adam Date: Sun, 9 Sep 2007 19:14:44 +0000 (-0400) Subject: mostly inert shuffling around in Sequence X-Git-Url: http://git.megacz.com/?p=sbp.git;a=commitdiff_plain;h=a61c67f0e574923f63bc939a79b5e9714a87a123;ds=sidebyside mostly inert shuffling around in Sequence darcs-hash:20070909191444-5007d-460b4a4af400bbd63740b24144821508d85edd04.gz --- diff --git a/src/edu/berkeley/sbp/Sequence.java b/src/edu/berkeley/sbp/Sequence.java index f63c30a..b0a2de4 100644 --- a/src/edu/berkeley/sbp/Sequence.java +++ b/src/edu/berkeley/sbp/Sequence.java @@ -137,11 +137,16 @@ public abstract class Sequence implements Iterable, SequenceOrElement { static abstract class Pos implements IntegerMappable, Comparable, Serializable { public int ord = -1; + private transient Sequence owner; + public int ord() { return ord; } final Forest[] holder; - Pos(int len) { this.holder = new Forest[len]; } + Pos(int len, Sequence owner) { + this.owner = owner; + this.holder = new Forest[len]; + } public abstract int provides(); public abstract int[] needs(); @@ -154,7 +159,9 @@ public abstract class Sequence implements Iterable, SequenceOrElement { public abstract Pos prev(); public abstract Pos next(); - abstract Sequence owner(); + /** the element which produces the sequence to which this Position belongs */ + public Sequence owner() { return owner; } + abstract Element element(); public abstract int numPops(); @@ -180,7 +187,6 @@ public abstract class Sequence implements Iterable, SequenceOrElement { final int pos; private final Position next; private final Position prev; - private transient Sequence owner; public int provides() { return owner().sernum; } public int[] needs() { return owner().needs_int(); } @@ -188,8 +194,7 @@ public abstract class Sequence implements Iterable, SequenceOrElement { public boolean owner_needed_or_hated() { return owner().needed_or_hated; } private Position(Sequence owner, int pos, Position prev) { - super(owner.elements.length); - this.owner = owner; + super(owner.elements.length,owner); this.pos = pos; this.next = pos==owner.elements.length ? null : new Position(owner, pos+1, this); this.prev = prev; @@ -205,9 +210,6 @@ public abstract class Sequence implements Iterable, SequenceOrElement { /** the element immediately after this Position, or null if this is the last Position */ public Element element() { return pos>=owner().elements.length ? null : owner().elements[pos]; } - /** the element which produces the sequence to which this Position belongs */ - public Sequence owner() { return owner; } - /** the next Position (the Position after this.element()) */ public Position next() { return next; }