1 /* 2 ****************************************************************************** 3 * Copyright (C) 1998-2007, 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 21 UOBJECT_DEFINE_RTTI_IMPLEMENTATION(StringCharacterIterator) 22 23 StringCharacterIterator::StringCharacterIterator() 24 : UCharCharacterIterator(), 25 text() 26 { 27 // NEVER DEFAULT CONSTRUCT! 28 } 29 30 StringCharacterIterator::StringCharacterIterator(const UnicodeString& textStr) 31 : UCharCharacterIterator(textStr.getBuffer(), 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.getBuffer(); 36 } 37 38 StringCharacterIterator::StringCharacterIterator(const UnicodeString& textStr, 39 int32_t textPos) 40 : UCharCharacterIterator(textStr.getBuffer(), 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.getBuffer(); 45 } 46 47 StringCharacterIterator::StringCharacterIterator(const UnicodeString& textStr, 48 int32_t textBegin, 49 int32_t textEnd, 50 int32_t textPos) 51 : UCharCharacterIterator(textStr.getBuffer(), 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.getBuffer(); 56 } 57 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.getBuffer(); 64 } 65 66 StringCharacterIterator::~StringCharacterIterator() { 67 } 68 69 StringCharacterIterator& 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.getBuffer(); 75 return *this; 76 } 77 78 UBool 79 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* 101 StringCharacterIterator::clone() const { 102 return new StringCharacterIterator(*this); 103 } 104 105 void 106 StringCharacterIterator::setText(const UnicodeString& newText) { 107 text = newText; 108 UCharCharacterIterator::setText(text.getBuffer(), text.length()); 109 } 110 111 void 112 StringCharacterIterator::getText(UnicodeString& result) { 113 result = text; 114 } 115 U_NAMESPACE_END 116