diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3ca2fe7 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +# Compiled class files +*.class diff --git a/apsd/classes/containers/sequences/abstractbases/VectorBase.java b/apsd/classes/containers/sequences/abstractbases/VectorBase.java index 21700a9..0a36c67 100644 --- a/apsd/classes/containers/sequences/abstractbases/VectorBase.java +++ b/apsd/classes/containers/sequences/abstractbases/VectorBase.java @@ -92,12 +92,50 @@ public Data DataNNext() { @Override public MutableForwardIterator FIterator() { return new VectorFIterator();} - @Override - public MutableBackwardIterator BIterator() { - // TODO Auto-generated method stub - return null; + protected class VectorBIterator implements MutableBackwardIterator{ + protected long idxCur = Size().ToLong() - 1; + + //TODO: IsValid vuole Size or Capacity? + @Override + public boolean IsValid() {return (0 <= idxCur && idxCur < Size().ToLong());} + + @Override + public Data GetCurrent() { + if (!IsValid()) throw new IllegalStateException(" Iterator is not valid!"); + return arr[(int) idxCur]; + } + + @Override + public void SetCurrent(Data dat) { + if (!IsValid()) throw new IllegalStateException(" Iterator is not valid!"); + arr[(int) idxCur] = dat; + } + + @Override + public Data DataNPrev() { + if (!IsValid()) throw new IllegalStateException(" Iterator is not valid!"); + Data dat = GetCurrent(); + idxCur--; + return dat; + } + + @Override + public void Prev() { DataNPrev();} + + @Override + public void Prev(long steps) { for(; steps > 0; steps--){DataNPrev();}} + + @Override + public void Prev(Natural steps) {Prev(steps.ToLong());} + + @Override + public void Reset() { idxCur = Size().ToLong() - 1;} + } + @Override + public MutableBackwardIterator BIterator() { return new VectorBIterator();} + /* ************************************************************************ */ /* Override specific member functions from Sequence */ /* ************************************************************************ */