1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 package org.apache.http.message;
29
30
31
32
33
34
35
36
37
38
39 public class ParserCursor {
40
41 private final int lowerBound;
42 private final int upperBound;
43 private int pos;
44
45 public ParserCursor(final int lowerBound, final int upperBound) {
46 super();
47 if (lowerBound < 0) {
48 throw new IndexOutOfBoundsException("Lower bound cannot be negative");
49 }
50 if (lowerBound > upperBound) {
51 throw new IndexOutOfBoundsException("Lower bound cannot be greater then upper bound");
52 }
53 this.lowerBound = lowerBound;
54 this.upperBound = upperBound;
55 this.pos = lowerBound;
56 }
57
58 public int getLowerBound() {
59 return this.lowerBound;
60 }
61
62 public int getUpperBound() {
63 return this.upperBound;
64 }
65
66 public int getPos() {
67 return this.pos;
68 }
69
70 public void updatePos(final int pos) {
71 if (pos < this.lowerBound) {
72 throw new IndexOutOfBoundsException("pos: "+pos+" < lowerBound: "+this.lowerBound);
73 }
74 if (pos > this.upperBound) {
75 throw new IndexOutOfBoundsException("pos: "+pos+" > upperBound: "+this.upperBound);
76 }
77 this.pos = pos;
78 }
79
80 public boolean atEnd() {
81 return this.pos >= this.upperBound;
82 }
83
84 @Override
85 public String toString() {
86 final StringBuilder buffer = new StringBuilder();
87 buffer.append('[');
88 buffer.append(Integer.toString(this.lowerBound));
89 buffer.append('>');
90 buffer.append(Integer.toString(this.pos));
91 buffer.append('>');
92 buffer.append(Integer.toString(this.upperBound));
93 buffer.append(']');
94 return buffer.toString();
95 }
96
97 }