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.hc.core5.http.message;
29
30 import org.apache.hc.core5.util.Args;
31
32
33
34
35
36
37
38
39
40
41 public class ParserCursor {
42
43 private final int lowerBound;
44 private final int upperBound;
45 private int pos;
46
47 public ParserCursor(final int lowerBound, final int upperBound) {
48 super();
49 Args.notNegative(lowerBound, "lowerBound");
50 Args.check(lowerBound <= upperBound, "lowerBound cannot be greater than upperBound");
51 this.lowerBound = lowerBound;
52 this.upperBound = upperBound;
53 this.pos = lowerBound;
54 }
55
56 public int getLowerBound() {
57 return this.lowerBound;
58 }
59
60 public int getUpperBound() {
61 return this.upperBound;
62 }
63
64 public int getPos() {
65 return this.pos;
66 }
67
68 public void updatePos(final int pos) {
69 if (pos < this.lowerBound) {
70 throw new IndexOutOfBoundsException("pos: "+pos+" < lowerBound: "+this.lowerBound);
71 }
72 if (pos > this.upperBound) {
73 throw new IndexOutOfBoundsException("pos: "+pos+" > upperBound: "+this.upperBound);
74 }
75 this.pos = pos;
76 }
77
78 public boolean atEnd() {
79 return this.pos >= this.upperBound;
80 }
81
82 @Override
83 public String toString() {
84 final StringBuilder buffer = new StringBuilder();
85 buffer.append('[');
86 buffer.append(Integer.toString(this.lowerBound));
87 buffer.append('>');
88 buffer.append(Integer.toString(this.pos));
89 buffer.append('>');
90 buffer.append(Integer.toString(this.upperBound));
91 buffer.append(']');
92 return buffer.toString();
93 }
94
95 }