]>
Commit | Line | Data |
---|---|---|
1 | /* | |
2 | ********************************************************************** | |
3 | * Copyright (C) 1999-2004, International Business Machines | |
4 | * Corporation and others. All Rights Reserved. | |
5 | ********************************************************************** | |
6 | */ | |
7 | ||
8 | #include "unicode/chariter.h" | |
9 | ||
10 | U_NAMESPACE_BEGIN | |
11 | ||
12 | ForwardCharacterIterator::~ForwardCharacterIterator() {} | |
13 | ForwardCharacterIterator::ForwardCharacterIterator() | |
14 | : UObject() | |
15 | {} | |
16 | ForwardCharacterIterator::ForwardCharacterIterator(const ForwardCharacterIterator &other) | |
17 | : UObject(other) | |
18 | {} | |
19 | ||
20 | ||
21 | CharacterIterator::CharacterIterator() | |
22 | : textLength(0), pos(0), begin(0), end(0) { | |
23 | } | |
24 | ||
25 | CharacterIterator::CharacterIterator(int32_t length) | |
26 | : textLength(length), pos(0), begin(0), end(length) { | |
27 | if(textLength < 0) { | |
28 | textLength = end = 0; | |
29 | } | |
30 | } | |
31 | ||
32 | CharacterIterator::CharacterIterator(int32_t length, int32_t position) | |
33 | : textLength(length), pos(position), begin(0), end(length) { | |
34 | if(textLength < 0) { | |
35 | textLength = end = 0; | |
36 | } | |
37 | if(pos < 0) { | |
38 | pos = 0; | |
39 | } else if(pos > end) { | |
40 | pos = end; | |
41 | } | |
42 | } | |
43 | ||
44 | CharacterIterator::CharacterIterator(int32_t length, int32_t textBegin, int32_t textEnd, int32_t position) | |
45 | : textLength(length), pos(position), begin(textBegin), end(textEnd) { | |
46 | if(textLength < 0) { | |
47 | textLength = 0; | |
48 | } | |
49 | if(begin < 0) { | |
50 | begin = 0; | |
51 | } else if(begin > textLength) { | |
52 | begin = textLength; | |
53 | } | |
54 | if(end < begin) { | |
55 | end = begin; | |
56 | } else if(end > textLength) { | |
57 | end = textLength; | |
58 | } | |
59 | if(pos < begin) { | |
60 | pos = begin; | |
61 | } else if(pos > end) { | |
62 | pos = end; | |
63 | } | |
64 | } | |
65 | ||
66 | CharacterIterator::CharacterIterator(const CharacterIterator &that) : | |
67 | ForwardCharacterIterator(that), | |
68 | textLength(that.textLength), pos(that.pos), begin(that.begin), end(that.end) | |
69 | { | |
70 | } | |
71 | ||
72 | CharacterIterator & | |
73 | CharacterIterator::operator=(const CharacterIterator &that) { | |
74 | ForwardCharacterIterator::operator=(that); | |
75 | textLength = that.textLength; | |
76 | pos = that.pos; | |
77 | begin = that.begin; | |
78 | end = that.end; | |
79 | return *this; | |
80 | } | |
81 | ||
82 | // implementing first[32]PostInc() directly in a subclass should be faster | |
83 | // but these implementations make subclassing a little easier | |
84 | UChar | |
85 | CharacterIterator::firstPostInc(void) { | |
86 | setToStart(); | |
87 | return nextPostInc(); | |
88 | } | |
89 | ||
90 | UChar32 | |
91 | CharacterIterator::first32PostInc(void) { | |
92 | setToStart(); | |
93 | return next32PostInc(); | |
94 | } | |
95 | ||
96 | U_NAMESPACE_END |