001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: */
017:
018: package java.text;
019:
020: /**
021: * ParsePosition is used to track the current position in a String being parsed.
022: */
023: public class ParsePosition {
024:
025: private int currentPosition, errorIndex = -1;
026:
027: /**
028: * Constructs a new ParsePosition at the specified index.
029: *
030: * @param index
031: * the index to begin parsing
032: */
033: public ParsePosition(int index) {
034: currentPosition = index;
035: }
036:
037: /**
038: * Compares the specified object to this ParsePosition and answer if they
039: * are equal. The object must be an instance of ParsePosition and have the
040: * same index and error index.
041: *
042: * @param object
043: * the object to compare with this object
044: * @return true if the specified object is equal to this ParsePosition,
045: * false otherwise
046: *
047: * @see #hashCode
048: */
049: @Override
050: public boolean equals(Object object) {
051: if (!(object instanceof ParsePosition)) {
052: return false;
053: }
054: ParsePosition pos = (ParsePosition) object;
055: return currentPosition == pos.currentPosition
056: && errorIndex == pos.errorIndex;
057: }
058:
059: /**
060: * Answers the index at which the parse could not continue.
061: *
062: * @return the index of the parse error, or -1 if there is no error
063: */
064: public int getErrorIndex() {
065: return errorIndex;
066: }
067:
068: /**
069: * Answers the current parse position.
070: *
071: * @return the current position
072: */
073: public int getIndex() {
074: return currentPosition;
075: }
076:
077: /**
078: * Answers an integer hash code for the receiver. Objects which are equal
079: * answer the same value for this method.
080: *
081: * @return the receiver's hash
082: *
083: * @see #equals
084: */
085: @Override
086: public int hashCode() {
087: return currentPosition + errorIndex;
088: }
089:
090: /**
091: * Sets the index at which the parse could not continue.
092: *
093: * @param index
094: * the index of the parse error
095: */
096: public void setErrorIndex(int index) {
097: errorIndex = index;
098: }
099:
100: /**
101: * Sets the current parse position.
102: *
103: * @param index
104: * the current parse position
105: */
106: public void setIndex(int index) {
107: currentPosition = index;
108: }
109:
110: /**
111: * Answers the string representation of this FieldPosition.
112: *
113: * @return the string representation of this FieldPosition
114: */
115: @Override
116: public String toString() {
117: return getClass().getName() + "[index=" + currentPosition //$NON-NLS-1$
118: + ", errorIndex=" + errorIndex + "]"; //$NON-NLS-1$ //$NON-NLS-2$
119: }
120: }
|