LCOV - code coverage report
Current view: top level - intl/icu/source/common/unicode - parsepos.h (source / functions) Hit Total Coverage
Test: output.info Lines: 0 27 0.0 %
Date: 2017-07-14 16:53:18 Functions: 0 8 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : // © 2016 and later: Unicode, Inc. and others.
       2             : // License & terms of use: http://www.unicode.org/copyright.html
       3             : /*
       4             : * Copyright (C) 1997-2005, International Business Machines Corporation and others. All Rights Reserved.
       5             : *******************************************************************************
       6             : *
       7             : * File PARSEPOS.H
       8             : *
       9             : * Modification History:
      10             : *
      11             : *   Date        Name        Description
      12             : *   07/09/97    helena      Converted from java.
      13             : *   07/17/98    stephen     Added errorIndex support.
      14             : *   05/11/99    stephen     Cleaned up.
      15             : *******************************************************************************
      16             : */
      17             : 
      18             : #ifndef PARSEPOS_H
      19             : #define PARSEPOS_H
      20             : 
      21             : #include "unicode/utypes.h"
      22             : #include "unicode/uobject.h"
      23             : 
      24             :  
      25             : U_NAMESPACE_BEGIN
      26             : 
      27             : /**
      28             :  * \file
      29             :  * \brief C++ API: Canonical Iterator
      30             :  */
      31             : /** 
      32             :  * <code>ParsePosition</code> is a simple class used by <code>Format</code>
      33             :  * and its subclasses to keep track of the current position during parsing.
      34             :  * The <code>parseObject</code> method in the various <code>Format</code>
      35             :  * classes requires a <code>ParsePosition</code> object as an argument.
      36             :  *
      37             :  * <p>
      38             :  * By design, as you parse through a string with different formats,
      39             :  * you can use the same <code>ParsePosition</code>, since the index parameter
      40             :  * records the current position.
      41             :  *
      42             :  * The ParsePosition class is not suitable for subclassing.
      43             :  *
      44             :  * @version     1.3 10/30/97
      45             :  * @author      Mark Davis, Helena Shih
      46             :  * @see         java.text.Format
      47             :  */
      48             : 
      49             : class U_COMMON_API ParsePosition : public UObject {
      50             : public:
      51             :     /**
      52             :      * Default constructor, the index starts with 0 as default.
      53             :      * @stable ICU 2.0
      54             :      */
      55           0 :     ParsePosition()
      56           0 :         : UObject(),
      57             :         index(0),
      58           0 :         errorIndex(-1)
      59           0 :       {}
      60             : 
      61             :     /**
      62             :      * Create a new ParsePosition with the given initial index.
      63             :      * @param newIndex the new text offset.
      64             :      * @stable ICU 2.0
      65             :      */
      66           0 :     ParsePosition(int32_t newIndex)
      67           0 :         : UObject(),
      68             :         index(newIndex),
      69           0 :         errorIndex(-1)
      70           0 :       {}
      71             : 
      72             :     /**
      73             :      * Copy constructor
      74             :      * @param copy the object to be copied from.
      75             :      * @stable ICU 2.0
      76             :      */
      77           0 :     ParsePosition(const ParsePosition& copy)
      78           0 :         : UObject(copy),
      79           0 :         index(copy.index),
      80           0 :         errorIndex(copy.errorIndex)
      81           0 :       {}
      82             : 
      83             :     /**
      84             :      * Destructor
      85             :      * @stable ICU 2.0
      86             :      */
      87             :     virtual ~ParsePosition();
      88             : 
      89             :     /**
      90             :      * Assignment operator
      91             :      * @stable ICU 2.0
      92             :      */
      93             :     ParsePosition&      operator=(const ParsePosition& copy);
      94             : 
      95             :     /**
      96             :      * Equality operator.
      97             :      * @return TRUE if the two parse positions are equal, FALSE otherwise.
      98             :      * @stable ICU 2.0
      99             :      */
     100             :     UBool              operator==(const ParsePosition& that) const;
     101             : 
     102             :     /**
     103             :      * Equality operator.
     104             :      * @return TRUE if the two parse positions are not equal, FALSE otherwise.
     105             :      * @stable ICU 2.0
     106             :      */
     107             :     UBool              operator!=(const ParsePosition& that) const;
     108             : 
     109             :     /**
     110             :      * Clone this object.
     111             :      * Clones can be used concurrently in multiple threads.
     112             :      * If an error occurs, then NULL is returned.
     113             :      * The caller must delete the clone.
     114             :      *
     115             :      * @return a clone of this object
     116             :      *
     117             :      * @see getDynamicClassID
     118             :      * @stable ICU 2.8
     119             :      */
     120             :     ParsePosition *clone() const;
     121             : 
     122             :     /**
     123             :      * Retrieve the current parse position.  On input to a parse method, this
     124             :      * is the index of the character at which parsing will begin; on output, it
     125             :      * is the index of the character following the last character parsed.
     126             :      * @return the current index.
     127             :      * @stable ICU 2.0
     128             :      */
     129             :     int32_t getIndex(void) const;
     130             : 
     131             :     /**
     132             :      * Set the current parse position.
     133             :      * @param index the new index.
     134             :      * @stable ICU 2.0
     135             :      */
     136             :     void setIndex(int32_t index);
     137             : 
     138             :     /**
     139             :      * Set the index at which a parse error occurred.  Formatters
     140             :      * should set this before returning an error code from their
     141             :      * parseObject method.  The default value is -1 if this is not
     142             :      * set.
     143             :      * @stable ICU 2.0
     144             :      */
     145             :     void setErrorIndex(int32_t ei);
     146             : 
     147             :     /**
     148             :      * Retrieve the index at which an error occurred, or -1 if the
     149             :      * error index has not been set.
     150             :      * @stable ICU 2.0
     151             :      */
     152             :     int32_t getErrorIndex(void) const;
     153             : 
     154             :     /**
     155             :      * ICU "poor man's RTTI", returns a UClassID for this class.
     156             :      *
     157             :      * @stable ICU 2.2
     158             :      */
     159             :     static UClassID U_EXPORT2 getStaticClassID();
     160             : 
     161             :     /**
     162             :      * ICU "poor man's RTTI", returns a UClassID for the actual class.
     163             :      *
     164             :      * @stable ICU 2.2
     165             :      */
     166             :     virtual UClassID getDynamicClassID() const;
     167             : 
     168             : private:
     169             :     /**
     170             :      * Input: the place you start parsing.
     171             :      * <br>Output: position where the parse stopped.
     172             :      * This is designed to be used serially,
     173             :      * with each call setting index up for the next one.
     174             :      */
     175             :     int32_t index;
     176             : 
     177             :     /**
     178             :      * The index at which a parse error occurred.
     179             :      */
     180             :     int32_t errorIndex;
     181             : 
     182             : };
     183             : 
     184             : inline ParsePosition&
     185           0 : ParsePosition::operator=(const ParsePosition& copy)
     186             : {
     187           0 :   index = copy.index;
     188           0 :   errorIndex = copy.errorIndex;
     189           0 :   return *this;
     190             : }
     191             : 
     192             : inline UBool
     193             : ParsePosition::operator==(const ParsePosition& copy) const
     194             : {
     195             :   if(index != copy.index || errorIndex != copy.errorIndex)
     196             :   return FALSE;
     197             :   else
     198             :   return TRUE;
     199             : }
     200             : 
     201             : inline UBool
     202             : ParsePosition::operator!=(const ParsePosition& copy) const
     203             : {
     204             :   return !operator==(copy);
     205             : }
     206             : 
     207             : inline int32_t
     208           0 : ParsePosition::getIndex() const
     209             : {
     210           0 :   return index;
     211             : }
     212             : 
     213             : inline void
     214           0 : ParsePosition::setIndex(int32_t offset)
     215             : {
     216           0 :   this->index = offset;
     217           0 : }
     218             : 
     219             : inline int32_t
     220           0 : ParsePosition::getErrorIndex() const
     221             : {
     222           0 :   return errorIndex;
     223             : }
     224             : 
     225             : inline void
     226           0 : ParsePosition::setErrorIndex(int32_t ei)
     227             : {
     228           0 :   this->errorIndex = ei;
     229           0 : }
     230             : U_NAMESPACE_END
     231             : 
     232             : #endif

Generated by: LCOV version 1.13