123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- // © 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;
- }
- bool
- 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;
- }
- const StringCharacterIterator& realThat = static_cast<const 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
|