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 |