OLD | NEW |
| (Empty) |
1 /******************************************************************** | |
2 * COPYRIGHT: | |
3 * Copyright (c) 1997-2003, International Business Machines Corporation and | |
4 * others. All Rights Reserved. | |
5 ********************************************************************/ | |
6 /* file name: sfwdchit.cpp | |
7 * encoding: US-ASCII | |
8 * tab size: 8 (not used) | |
9 * indentation:4 | |
10 */ | |
11 | |
12 #include "sfwdchit.h" | |
13 #include "unicode/ustring.h" | |
14 #include "unicode/unistr.h" | |
15 #include "uhash.h" | |
16 #include "cmemory.h" | |
17 | |
18 // A hash code of kInvalidHashCode indicates that the has code needs | |
19 // to be computed. A hash code of kEmptyHashCode is used for empty keys | |
20 // and for any key whose computed hash code is kInvalidHashCode. | |
21 const int32_t SimpleFwdCharIterator::kInvalidHashCode = 0; | |
22 const int32_t SimpleFwdCharIterator::kEmptyHashCode = 1; | |
23 | |
24 #if 0 // not used | |
25 SimpleFwdCharIterator::SimpleFwdCharIterator(const UnicodeString& s) { | |
26 | |
27 fHashCode = kInvalidHashCode; | |
28 fLen = s.length(); | |
29 fStart = new UChar[fLen]; | |
30 if(fStart == NULL) { | |
31 fBogus = TRUE; | |
32 } else { | |
33 fEnd = fStart+fLen; | |
34 fCurrent = fStart; | |
35 fBogus = FALSE; | |
36 s.extract(0, fLen, fStart); | |
37 } | |
38 | |
39 } | |
40 #endif | |
41 | |
42 SimpleFwdCharIterator::SimpleFwdCharIterator(UChar *s, int32_t len, UBool adopt)
{ | |
43 | |
44 fHashCode = kInvalidHashCode; | |
45 | |
46 fLen = len==-1 ? u_strlen(s) : len; | |
47 | |
48 if(adopt == FALSE) { | |
49 fStart = new UChar[fLen]; | |
50 if(fStart == NULL) { | |
51 fBogus = TRUE; | |
52 } else { | |
53 uprv_memcpy(fStart, s, fLen); | |
54 fEnd = fStart+fLen; | |
55 fCurrent = fStart; | |
56 fBogus = FALSE; | |
57 } | |
58 } else { // adopt = TRUE | |
59 fCurrent = fStart = s; | |
60 fEnd = fStart + fLen; | |
61 fBogus = FALSE; | |
62 } | |
63 | |
64 } | |
65 | |
66 SimpleFwdCharIterator::~SimpleFwdCharIterator() { | |
67 delete[] fStart; | |
68 } | |
69 | |
70 #if 0 // not used | |
71 UBool SimpleFwdCharIterator::operator==(const ForwardCharacterIterator& that) co
nst { | |
72 if(this == &that) { | |
73 return TRUE; | |
74 } | |
75 /* | |
76 if(that->fHashCode != kInvalidHashCode && this->fHashCode = that->fHashCode)
{ | |
77 return TRUE; | |
78 } | |
79 | |
80 if(this->fStart == that->fStart) { | |
81 return TRUE; | |
82 } | |
83 | |
84 if(this->fLen == that->fLen && uprv_memcmp(this->fStart, that->fStart, this-
>fLen) { | |
85 return TRUE; | |
86 } | |
87 */ | |
88 return FALSE; | |
89 } | |
90 #endif | |
91 | |
92 int32_t SimpleFwdCharIterator::hashCode(void) const { | |
93 if (fHashCode == kInvalidHashCode) | |
94 { | |
95 UHashTok key; | |
96 key.pointer = fStart; | |
97 ((SimpleFwdCharIterator *)this)->fHashCode = uhash_hashUChars(key); | |
98 } | |
99 return fHashCode; | |
100 } | |
101 | |
102 UClassID SimpleFwdCharIterator::getDynamicClassID(void) const { | |
103 return NULL; | |
104 } | |
105 | |
106 UChar SimpleFwdCharIterator::nextPostInc(void) { | |
107 if(fCurrent == fEnd) { | |
108 return ForwardCharacterIterator::DONE; | |
109 } else { | |
110 return *(fCurrent)++; | |
111 } | |
112 } | |
113 | |
114 UChar32 SimpleFwdCharIterator::next32PostInc(void) { | |
115 return ForwardCharacterIterator::DONE; | |
116 } | |
117 | |
118 UBool SimpleFwdCharIterator::hasNext() { | |
119 return fCurrent < fEnd; | |
120 } | |
OLD | NEW |