diff options
Diffstat (limited to 'Build/source/libs/icu/icu-4.8.1/test/intltest/sfwdchit.cpp')
-rw-r--r-- | Build/source/libs/icu/icu-4.8.1/test/intltest/sfwdchit.cpp | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/Build/source/libs/icu/icu-4.8.1/test/intltest/sfwdchit.cpp b/Build/source/libs/icu/icu-4.8.1/test/intltest/sfwdchit.cpp new file mode 100644 index 00000000000..703a4858e60 --- /dev/null +++ b/Build/source/libs/icu/icu-4.8.1/test/intltest/sfwdchit.cpp @@ -0,0 +1,120 @@ +/******************************************************************** + * COPYRIGHT: + * Copyright (c) 1997-2003, International Business Machines Corporation and + * others. All Rights Reserved. + ********************************************************************/ +/* file name: sfwdchit.cpp +* encoding: US-ASCII +* tab size: 8 (not used) +* indentation:4 +*/ + +#include "sfwdchit.h" +#include "unicode/ustring.h" +#include "unicode/unistr.h" +#include "uhash.h" +#include "cmemory.h" + +// A hash code of kInvalidHashCode indicates that the has code needs +// to be computed. A hash code of kEmptyHashCode is used for empty keys +// and for any key whose computed hash code is kInvalidHashCode. +const int32_t SimpleFwdCharIterator::kInvalidHashCode = 0; +const int32_t SimpleFwdCharIterator::kEmptyHashCode = 1; + +#if 0 // not used +SimpleFwdCharIterator::SimpleFwdCharIterator(const UnicodeString& s) { + + fHashCode = kInvalidHashCode; + fLen = s.length(); + fStart = new UChar[fLen]; + if(fStart == NULL) { + fBogus = TRUE; + } else { + fEnd = fStart+fLen; + fCurrent = fStart; + fBogus = FALSE; + s.extract(0, fLen, fStart); + } + +} +#endif + +SimpleFwdCharIterator::SimpleFwdCharIterator(UChar *s, int32_t len, UBool adopt) { + + fHashCode = kInvalidHashCode; + + fLen = len==-1 ? u_strlen(s) : len; + + if(adopt == FALSE) { + fStart = new UChar[fLen]; + if(fStart == NULL) { + fBogus = TRUE; + } else { + uprv_memcpy(fStart, s, fLen); + fEnd = fStart+fLen; + fCurrent = fStart; + fBogus = FALSE; + } + } else { // adopt = TRUE + fCurrent = fStart = s; + fEnd = fStart + fLen; + fBogus = FALSE; + } + +} + +SimpleFwdCharIterator::~SimpleFwdCharIterator() { + delete[] fStart; +} + +#if 0 // not used +UBool SimpleFwdCharIterator::operator==(const ForwardCharacterIterator& that) const { + if(this == &that) { + return TRUE; + } +/* + if(that->fHashCode != kInvalidHashCode && this->fHashCode = that->fHashCode) { + return TRUE; + } + + if(this->fStart == that->fStart) { + return TRUE; + } + + if(this->fLen == that->fLen && uprv_memcmp(this->fStart, that->fStart, this->fLen) { + return TRUE; + } +*/ + return FALSE; +} +#endif + +int32_t SimpleFwdCharIterator::hashCode(void) const { + if (fHashCode == kInvalidHashCode) + { + UHashTok key; + key.pointer = fStart; + ((SimpleFwdCharIterator *)this)->fHashCode = uhash_hashUChars(key); + } + return fHashCode; +} + +UClassID SimpleFwdCharIterator::getDynamicClassID(void) const { + return NULL; +} + +UChar SimpleFwdCharIterator::nextPostInc(void) { + if(fCurrent == fEnd) { + return ForwardCharacterIterator::DONE; + } else { + return *(fCurrent)++; + } +} + +UChar32 SimpleFwdCharIterator::next32PostInc(void) { + return ForwardCharacterIterator::DONE; +} + +UBool SimpleFwdCharIterator::hasNext() { + return fCurrent < fEnd; +} |