Coverage Report

Created: 2025-06-24 06:43

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