Main Page | Class Hierarchy | Alphabetical List | Data Structures | File List | Data Fields | Globals | Related Pages

sortkey.h

00001 /* 00002 * Copyright (C) {1996-2003}, International Business Machines Corporation and others. All Rights Reserved. 00003 ***************************************************************************************** 00004 */ 00005 //=============================================================================== 00006 // 00007 // File sortkey.h 00008 // 00009 // 00010 // 00011 // Created by: Helena Shih 00012 // 00013 // Modification History: 00014 // 00015 // Date Name Description 00016 // 00017 // 6/20/97 helena Java class name change. 00018 // 8/18/97 helena Added internal API documentation. 00019 // 6/26/98 erm Changed to use byte arrays and memcmp. 00020 //=============================================================================== 00021 00022 #ifndef SORTKEY_H 00023 #define SORTKEY_H 00024 00025 #include "unicode/utypes.h" 00026 00027 #if !UCONFIG_NO_COLLATION 00028 00029 #include "unicode/uobject.h" 00030 #include "unicode/unistr.h" 00031 #include "unicode/coll.h" 00032 00033 U_NAMESPACE_BEGIN 00034 00035 /* forward declaration */ 00036 class RuleBasedCollator; 00037 00091 class U_I18N_API CollationKey : public UObject { 00092 public: 00100 CollationKey(); 00101 00102 00110 CollationKey(const uint8_t* values, 00111 int32_t count); 00112 00118 CollationKey(const CollationKey& other); 00119 00124 ~CollationKey(); 00125 00131 const CollationKey& operator=(const CollationKey& other); 00132 00139 UBool operator==(const CollationKey& source) const; 00140 00147 UBool operator!=(const CollationKey& source) const; 00148 00149 00156 UBool isBogus(void) const; 00157 00167 const uint8_t* getByteArray(int32_t& count) const; 00168 00169 #ifdef U_USE_COLLATION_KEY_DEPRECATES 00170 00177 uint8_t* toByteArray(int32_t& count) const; 00178 #endif 00179 00189 Collator::EComparisonResult compareTo(const CollationKey& target) const; 00190 00201 UCollationResult compareTo(const CollationKey& target, UErrorCode &status) const; 00202 00223 int32_t hashCode(void) const; 00224 00229 virtual UClassID getDynamicClassID() const; 00230 00235 static UClassID getStaticClassID(); 00236 00237 private: 00245 void adopt(uint8_t *values, int32_t count); 00246 00247 /* 00248 * Creates a collation key with a string. 00249 */ 00250 00257 CollationKey& ensureCapacity(int32_t newSize); 00262 CollationKey& setToBogus(void); 00267 CollationKey& reset(void); 00268 00272 friend class RuleBasedCollator; 00276 UBool fBogus; 00281 int32_t fCount; 00285 int32_t fCapacity; 00289 int32_t fHashCode; 00293 uint8_t* fBytes; 00294 00295 }; 00296 00297 inline UBool 00298 CollationKey::operator!=(const CollationKey& other) const 00299 { 00300 return !(*this == other); 00301 } 00302 00303 inline UBool 00304 CollationKey::isBogus() const 00305 { 00306 return fBogus; 00307 } 00308 00309 inline const uint8_t* 00310 CollationKey::getByteArray(int32_t &count) const 00311 { 00312 count = fCount; 00313 return fBytes; 00314 } 00315 00316 U_NAMESPACE_END 00317 00318 #endif /* #if !UCONFIG_NO_COLLATION */ 00319 00320 #endif

Generated on Wed Sep 15 17:18:09 2004 for ICU 2.8 by doxygen 1.3.8