1/* 2****************************************************************************** 3* Copyright (C) 1998-2012, 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 "utypeinfo.h" // for 'typeid' to work 17 18#include "unicode/chariter.h" 19#include "unicode/schriter.h" 20 21U_NAMESPACE_BEGIN 22 23UOBJECT_DEFINE_RTTI_IMPLEMENTATION(StringCharacterIterator) 24 25StringCharacterIterator::StringCharacterIterator() 26 : UCharCharacterIterator(), 27 text() 28{ 29 // NEVER DEFAULT CONSTRUCT! 30} 31 32StringCharacterIterator::StringCharacterIterator(const UnicodeString& textStr) 33 : UCharCharacterIterator(textStr.getBuffer(), textStr.length()), 34 text(textStr) 35{ 36 // we had set the input parameter's array, now we need to set our copy's array 37 UCharCharacterIterator::text = this->text.getBuffer(); 38} 39 40StringCharacterIterator::StringCharacterIterator(const UnicodeString& textStr, 41 int32_t textPos) 42 : UCharCharacterIterator(textStr.getBuffer(), textStr.length(), textPos), 43 text(textStr) 44{ 45 // we had set the input parameter's array, now we need to set our copy's array 46 UCharCharacterIterator::text = this->text.getBuffer(); 47} 48 49StringCharacterIterator::StringCharacterIterator(const UnicodeString& textStr, 50 int32_t textBegin, 51 int32_t textEnd, 52 int32_t textPos) 53 : UCharCharacterIterator(textStr.getBuffer(), textStr.length(), textBegin, textEnd, textPos), 54 text(textStr) 55{ 56 // we had set the input parameter's array, now we need to set our copy's array 57 UCharCharacterIterator::text = this->text.getBuffer(); 58} 59 60StringCharacterIterator::StringCharacterIterator(const StringCharacterIterator& that) 61 : UCharCharacterIterator(that), 62 text(that.text) 63{ 64 // we had set the input parameter's array, now we need to set our copy's array 65 UCharCharacterIterator::text = this->text.getBuffer(); 66} 67 68StringCharacterIterator::~StringCharacterIterator() { 69} 70 71StringCharacterIterator& 72StringCharacterIterator::operator=(const StringCharacterIterator& that) { 73 UCharCharacterIterator::operator=(that); 74 text = that.text; 75 // we had set the input parameter's array, now we need to set our copy's array 76 UCharCharacterIterator::text = this->text.getBuffer(); 77 return *this; 78} 79 80UBool 81StringCharacterIterator::operator==(const ForwardCharacterIterator& that) const { 82 if (this == &that) { 83 return TRUE; 84 } 85 86 // do not call UCharCharacterIterator::operator==() 87 // because that checks for array pointer equality 88 // while we compare UnicodeString objects 89 90 if (typeid(*this) != typeid(that)) { 91 return FALSE; 92 } 93 94 StringCharacterIterator& realThat = (StringCharacterIterator&)that; 95 96 return text == realThat.text 97 && pos == realThat.pos 98 && begin == realThat.begin 99 && end == realThat.end; 100} 101 102CharacterIterator* 103StringCharacterIterator::clone() const { 104 return new StringCharacterIterator(*this); 105} 106 107void 108StringCharacterIterator::setText(const UnicodeString& newText) { 109 text = newText; 110 UCharCharacterIterator::setText(text.getBuffer(), text.length()); 111} 112 113void 114StringCharacterIterator::getText(UnicodeString& result) { 115 result = text; 116} 117U_NAMESPACE_END 118