2 * Copyright (C) {1997-2003}, International Business Machines Corporation and others. All Rights Reserved. 
   3 ******************************************************************************* 
   7 * Modification History: 
   9 *   Date        Name        Description 
  10 *   07/09/97    helena      Converted from java. 
  11 *   07/17/98    stephen     Added errorIndex support. 
  12 *   05/11/99    stephen     Cleaned up. 
  13 ******************************************************************************* 
  19 #include "unicode/utypes.h" 
  20 #include "unicode/uobject.h" 
  25  * <code>ParsePosition</code> is a simple class used by <code>Format</code> 
  26  * and its subclasses to keep track of the current position during parsing. 
  27  * The <code>parseObject</code> method in the various <code>Format</code> 
  28  * classes requires a <code>ParsePosition</code> object as an argument. 
  31  * By design, as you parse through a string with different formats, 
  32  * you can use the same <code>ParsePosition</code>, since the index parameter 
  33  * records the current position. 
  35  * The ParsePosition class is not suitable for subclassing. 
  37  * @version     1.3 10/30/97 
  38  * @author      Mark Davis, Helena Shih 
  39  * @see         java.text.Format 
  42 class U_COMMON_API ParsePosition 
: public UObject 
{ 
  45      * Default constructor, the index starts with 0 as default. 
  50       { this->index 
= 0; this->errorIndex 
= -1; } 
  53      * Create a new ParsePosition with the given initial index. 
  54      * @param newIndex the new text offset. 
  57     ParsePosition(int32_t newIndex
) 
  59       {    this->index 
= newIndex
; this->errorIndex 
= -1; } 
  63      * @param copy the object to be copied from. 
  66     ParsePosition(const ParsePosition
& copy
) 
  68       {    this->index 
= copy
.index
; this->errorIndex 
= copy
.errorIndex
; } 
  80     ParsePosition
&      operator=(const ParsePosition
& copy
); 
  84      * @return TRUE if the two parse positions are equal, FALSE otherwise. 
  87     UBool              
operator==(const ParsePosition
& that
) const; 
  91      * @return TRUE if the two parse positions are not equal, FALSE otherwise. 
  94     UBool              
operator!=(const ParsePosition
& that
) const; 
  97      * Retrieve the current parse position.  On input to a parse method, this 
  98      * is the index of the character at which parsing will begin; on output, it 
  99      * is the index of the character following the last character parsed. 
 100      * @return the current index. 
 103     int32_t getIndex(void) const; 
 106      * Set the current parse position. 
 107      * @param index the new index. 
 110     void setIndex(int32_t index
); 
 113      * Set the index at which a parse error occurred.  Formatters 
 114      * should set this before returning an error code from their 
 115      * parseObject method.  The default value is -1 if this is not 
 119     void setErrorIndex(int32_t ei
); 
 122      * Retrieve the index at which an error occurred, or -1 if the 
 123      * error index has not been set. 
 126     int32_t getErrorIndex(void) const; 
 129      * ICU "poor man's RTTI", returns a UClassID for the actual class. 
 133     virtual inline UClassID 
getDynamicClassID() const; 
 136      * ICU "poor man's RTTI", returns a UClassID for this class. 
 140     static inline UClassID 
getStaticClassID(); 
 144      * Input: the place you start parsing. 
 145      * <br>Output: position where the parse stopped. 
 146      * This is designed to be used serially, 
 147      * with each call setting index up for the next one. 
 152      * The index at which a parse error occurred. 
 157      * The address of this static class variable serves as this class's ID 
 158      * for ICU "poor man's RTTI". 
 160     static const char fgClassID
; 
 164 ParsePosition::getStaticClassID() 
 165 { return (UClassID
)&fgClassID
; } 
 168 ParsePosition::getDynamicClassID() const 
 169 { return ParsePosition::getStaticClassID(); } 
 171 inline ParsePosition
& 
 172 ParsePosition::operator=(const ParsePosition
& copy
) 
 175   errorIndex 
= copy
.errorIndex
; 
 180 ParsePosition::operator==(const ParsePosition
& copy
) const 
 182   if(index 
!= copy
.index 
|| errorIndex 
!= copy
.errorIndex
) 
 189 ParsePosition::operator!=(const ParsePosition
& copy
) const 
 191   return !operator==(copy
); 
 195 ParsePosition::getIndex() const 
 201 ParsePosition::setIndex(int32_t offset
) 
 203   this->index 
= offset
; 
 207 ParsePosition::getErrorIndex() const 
 213 ParsePosition::setErrorIndex(int32_t ei
) 
 215   this->errorIndex 
= ei
;