diff options
| author | Benjamin J. Culkin <bjculkin@mix.wvu.edu> | 2018-07-17 18:22:09 -0300 |
|---|---|---|
| committer | Benjamin J. Culkin <bjculkin@mix.wvu.edu> | 2018-07-17 18:22:09 -0300 |
| commit | 27955d04989bf819c60632999ceaef4e985da6f7 (patch) | |
| tree | 4884b257da360b65d5c409799e40ce062c2dc7bd /base/src/main/java | |
| parent | cb9ce4c0c6fd68b2aa7664eb7c143e186f3033f6 (diff) | |
Update tape interface
This adds a seekTo method, among other things
Diffstat (limited to 'base/src/main/java')
| -rw-r--r-- | base/src/main/java/bjc/utils/esodata/DoubleTape.java | 4 | ||||
| -rw-r--r-- | base/src/main/java/bjc/utils/esodata/SingleTape.java | 16 | ||||
| -rw-r--r-- | base/src/main/java/bjc/utils/esodata/Tape.java | 2 |
3 files changed, 22 insertions, 0 deletions
diff --git a/base/src/main/java/bjc/utils/esodata/DoubleTape.java b/base/src/main/java/bjc/utils/esodata/DoubleTape.java index 520ab5e..e32045e 100644 --- a/base/src/main/java/bjc/utils/esodata/DoubleTape.java +++ b/base/src/main/java/bjc/utils/esodata/DoubleTape.java @@ -134,6 +134,10 @@ public class DoubleTape<T> implements Tape<T>, DoubleSided { return succ; } + public boolean seekTo(int tgtPos) { + return front.seekTo(tgtPos); + } + @Override public void flip() { final Tape<T> tmp = front; diff --git a/base/src/main/java/bjc/utils/esodata/SingleTape.java b/base/src/main/java/bjc/utils/esodata/SingleTape.java index 636c04c..d57bc7f 100644 --- a/base/src/main/java/bjc/utils/esodata/SingleTape.java +++ b/base/src/main/java/bjc/utils/esodata/SingleTape.java @@ -163,6 +163,22 @@ public class SingleTape<T> implements Tape<T> { return true; } + public boolean seekTo(int tgtPos) { + if(tgtPos < 0) + return false; + + if(tgtPos >= backing.size() - 1) + if(autoExtend) + while(tgtPos >= backing.size() - 1) + backing.add(null); + else + return false; + + pos = tgtPos; + + return true; + } + @Override public int hashCode() { final int prime = 31; diff --git a/base/src/main/java/bjc/utils/esodata/Tape.java b/base/src/main/java/bjc/utils/esodata/Tape.java index ae218ac..2c7f517 100644 --- a/base/src/main/java/bjc/utils/esodata/Tape.java +++ b/base/src/main/java/bjc/utils/esodata/Tape.java @@ -112,4 +112,6 @@ public interface Tape<T> { * @return Whether the cursor was moved right. */ boolean right(int amt); + + boolean seekTo(int pos); } |
