/src/org/ooc/frontend/model/tokens/ListReader.java

http://github.com/nddrylliog/ooc · Java · 65 lines · 49 code · 16 blank · 0 comment · 1 complexity · 180a6bacb8400ec627425605cd08884b MD5 · raw file

  1. package org.ooc.frontend.model.tokens;
  2. import java.util.List;
  3. public class ListReader<T> {
  4. List<T> list;
  5. int index;
  6. int length;
  7. int mark;
  8. public ListReader(List<T> list) {
  9. this.list = list;
  10. this.index = 0;
  11. this.length = list.size();
  12. this.mark = 0;
  13. }
  14. public boolean hasNext() {
  15. return index < length;
  16. }
  17. public T read() {
  18. return list.get(index++);
  19. }
  20. public T peek() {
  21. return list.get(index);
  22. }
  23. public T prev() {
  24. if(index < 1) return list.get(index);
  25. return list.get(index - 1);
  26. }
  27. public T prev(int offset) {
  28. return list.get(index - offset);
  29. }
  30. public int mark() {
  31. mark = index;
  32. return mark;
  33. }
  34. public void reset() {
  35. index = mark;
  36. }
  37. public void reset(int index) {
  38. this.index = index;
  39. }
  40. public void rewind() {
  41. index--;
  42. }
  43. public void skip() {
  44. index++;
  45. }
  46. public void skip(int offset) {
  47. index += offset;
  48. }
  49. }