X-Git-Url: http://git.megacz.com/?p=sbp.git;a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fsbp%2FSequence.java;fp=src%2Fedu%2Fberkeley%2Fsbp%2FSequence.java;h=b0a2de49cd4063abd6b64ca265204c6a974c6639;hp=f63c30a918bd696c5f88e1a746cec23c9c5d7808;hb=a61c67f0e574923f63bc939a79b5e9714a87a123;hpb=76f27476f16ddd19a42199b341fab81e87817b52 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; }