• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2 ******************************************************************************
3 * Copyright (C) 1998-2004, International Business Machines Corporation and   *
4 * others. All Rights Reserved.                                               *
5 ******************************************************************************
6 *
7 * File schriter.cpp
8 *
9 * Modification History:
10 *
11 *   Date        Name        Description
12 *  05/05/99     stephen     Cleaned up.
13 ******************************************************************************
14 */
15 
16 #include "unicode/chariter.h"
17 #include "unicode/schriter.h"
18 
19 U_NAMESPACE_BEGIN
20 
UOBJECT_DEFINE_RTTI_IMPLEMENTATION(StringCharacterIterator)21 UOBJECT_DEFINE_RTTI_IMPLEMENTATION(StringCharacterIterator)
22 
23 StringCharacterIterator::StringCharacterIterator()
24   : UCharCharacterIterator(),
25     text()
26 {
27   // NEVER DEFAULT CONSTRUCT!
28 }
29 
StringCharacterIterator(const UnicodeString & textStr)30 StringCharacterIterator::StringCharacterIterator(const UnicodeString& textStr)
31   : UCharCharacterIterator(textStr.fArray, textStr.length()),
32     text(textStr)
33 {
34     // we had set the input parameter's array, now we need to set our copy's array
35     UCharCharacterIterator::text = this->text.fArray;
36 }
37 
StringCharacterIterator(const UnicodeString & textStr,int32_t textPos)38 StringCharacterIterator::StringCharacterIterator(const UnicodeString& textStr,
39                                                  int32_t textPos)
40   : UCharCharacterIterator(textStr.fArray, textStr.length(), textPos),
41     text(textStr)
42 {
43     // we had set the input parameter's array, now we need to set our copy's array
44     UCharCharacterIterator::text = this->text.fArray;
45 }
46 
StringCharacterIterator(const UnicodeString & textStr,int32_t textBegin,int32_t textEnd,int32_t textPos)47 StringCharacterIterator::StringCharacterIterator(const UnicodeString& textStr,
48                                                  int32_t textBegin,
49                                                  int32_t textEnd,
50                                                  int32_t textPos)
51   : UCharCharacterIterator(textStr.fArray, textStr.length(), textBegin, textEnd, textPos),
52     text(textStr)
53 {
54     // we had set the input parameter's array, now we need to set our copy's array
55     UCharCharacterIterator::text = this->text.fArray;
56 }
57 
StringCharacterIterator(const StringCharacterIterator & that)58 StringCharacterIterator::StringCharacterIterator(const StringCharacterIterator& that)
59   : UCharCharacterIterator(that),
60     text(that.text)
61 {
62     // we had set the input parameter's array, now we need to set our copy's array
63     UCharCharacterIterator::text = this->text.fArray;
64 }
65 
~StringCharacterIterator()66 StringCharacterIterator::~StringCharacterIterator() {
67 }
68 
69 StringCharacterIterator&
operator =(const StringCharacterIterator & that)70 StringCharacterIterator::operator=(const StringCharacterIterator& that) {
71     UCharCharacterIterator::operator=(that);
72     text = that.text;
73     // we had set the input parameter's array, now we need to set our copy's array
74     UCharCharacterIterator::text = this->text.fArray;
75     return *this;
76 }
77 
78 UBool
operator ==(const ForwardCharacterIterator & that) const79 StringCharacterIterator::operator==(const ForwardCharacterIterator& that) const {
80     if (this == &that) {
81         return TRUE;
82     }
83 
84     // do not call UCharCharacterIterator::operator==()
85     // because that checks for array pointer equality
86     // while we compare UnicodeString objects
87 
88     if (getDynamicClassID() != that.getDynamicClassID()) {
89         return FALSE;
90     }
91 
92     StringCharacterIterator&    realThat = (StringCharacterIterator&)that;
93 
94     return text == realThat.text
95         && pos == realThat.pos
96         && begin == realThat.begin
97         && end == realThat.end;
98 }
99 
100 CharacterIterator*
clone() const101 StringCharacterIterator::clone() const {
102     return new StringCharacterIterator(*this);
103 }
104 
105 void
setText(const UnicodeString & newText)106 StringCharacterIterator::setText(const UnicodeString& newText) {
107     text = newText;
108     UCharCharacterIterator::setText(text.fArray, text.length());
109 }
110 
111 void
getText(UnicodeString & result)112 StringCharacterIterator::getText(UnicodeString& result) {
113     result = text;
114 }
115 U_NAMESPACE_END
116