// © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html /* ****************************************************************************** * Copyright (C) 1998-2012, International Business Machines Corporation and * others. All Rights Reserved. ****************************************************************************** * * File schriter.cpp * * Modification History: * * Date Name Description * 05/05/99 stephen Cleaned up. ****************************************************************************** */ #include "utypeinfo.h" // for 'typeid' to work #include "unicode/chariter.h" #include "unicode/schriter.h" U_NAMESPACE_BEGIN UOBJECT_DEFINE_RTTI_IMPLEMENTATION(StringCharacterIterator) StringCharacterIterator::StringCharacterIterator() : UCharCharacterIterator(), text() { // NEVER DEFAULT CONSTRUCT! } StringCharacterIterator::StringCharacterIterator(const UnicodeString& textStr) : UCharCharacterIterator(textStr.getBuffer(), textStr.length()), text(textStr) { // we had set the input parameter's array, now we need to set our copy's array UCharCharacterIterator::text = this->text.getBuffer(); } StringCharacterIterator::StringCharacterIterator(const UnicodeString& textStr, int32_t textPos) : UCharCharacterIterator(textStr.getBuffer(), textStr.length(), textPos), text(textStr) { // we had set the input parameter's array, now we need to set our copy's array UCharCharacterIterator::text = this->text.getBuffer(); } StringCharacterIterator::StringCharacterIterator(const UnicodeString& textStr, int32_t textBegin, int32_t textEnd, int32_t textPos) : UCharCharacterIterator(textStr.getBuffer(), textStr.length(), textBegin, textEnd, textPos), text(textStr) { // we had set the input parameter's array, now we need to set our copy's array UCharCharacterIterator::text = this->text.getBuffer(); } StringCharacterIterator::StringCharacterIterator(const StringCharacterIterator& that) : UCharCharacterIterator(that), text(that.text) { // we had set the input parameter's array, now we need to set our copy's array UCharCharacterIterator::text = this->text.getBuffer(); } StringCharacterIterator::~StringCharacterIterator() { } StringCharacterIterator& StringCharacterIterator::operator=(const StringCharacterIterator& that) { UCharCharacterIterator::operator=(that); text = that.text; // we had set the input parameter's array, now we need to set our copy's array UCharCharacterIterator::text = this->text.getBuffer(); return *this; } UBool StringCharacterIterator::operator==(const ForwardCharacterIterator& that) const { if (this == &that) { return TRUE; } // do not call UCharCharacterIterator::operator==() // because that checks for array pointer equality // while we compare UnicodeString objects if (typeid(*this) != typeid(that)) { return FALSE; } StringCharacterIterator& realThat = (StringCharacterIterator&)that; return text == realThat.text && pos == realThat.pos && begin == realThat.begin && end == realThat.end; } StringCharacterIterator* StringCharacterIterator::clone() const { return new StringCharacterIterator(*this); } void StringCharacterIterator::setText(const UnicodeString& newText) { text = newText; UCharCharacterIterator::setText(text.getBuffer(), text.length()); } void StringCharacterIterator::getText(UnicodeString& result) { result = text; } U_NAMESPACE_END