sortkey.h

Go to the documentation of this file.
00001 /*
00002  *****************************************************************************
00003  * Copyright (C) 1996-2006, International Business Machines Corporation and others.
00004  * All Rights Reserved.
00005  *****************************************************************************
00006  *
00007  * File sortkey.h
00008  *
00009  * Created by: Helena Shih
00010  *
00011  * Modification History:
00012  *
00013  *  Date         Name          Description
00014  *
00015  *  6/20/97     helena      Java class name change.
00016  *  8/18/97     helena      Added internal API documentation.
00017  *  6/26/98     erm         Changed to use byte arrays and memcmp.
00018  *****************************************************************************
00019  */
00020 
00021 #ifndef SORTKEY_H
00022 #define SORTKEY_H
00023 
00024 #include "unicode/utypes.h"
00025 
00031 #if !UCONFIG_NO_COLLATION
00032 
00033 #include "unicode/uobject.h"
00034 #include "unicode/unistr.h"
00035 #include "unicode/coll.h"
00036 
00037 U_NAMESPACE_BEGIN
00038 
00039 /* forward declaration */
00040 class RuleBasedCollator;
00041 
00096 class U_I18N_API CollationKey : public UObject {
00097 public:
00105     CollationKey();
00106 
00107 
00114     CollationKey(const  uint8_t*    values,
00115                 int32_t     count);
00116 
00122     CollationKey(const CollationKey& other);
00123 
00128     virtual ~CollationKey();
00129 
00135     const   CollationKey&   operator=(const CollationKey& other);
00136 
00143     UBool                   operator==(const CollationKey& source) const;
00144 
00151     UBool                   operator!=(const CollationKey& source) const;
00152 
00153 
00160     UBool                   isBogus(void) const;
00161 
00171     const    uint8_t*       getByteArray(int32_t& count) const;
00172 
00173 #ifdef U_USE_COLLATION_KEY_DEPRECATES
00174 
00181     uint8_t*                toByteArray(int32_t& count) const;
00182 #endif
00183 
00193     Collator::EComparisonResult compareTo(const CollationKey& target) const;
00194 
00205     UCollationResult compareTo(const CollationKey& target, UErrorCode &status) const;
00206 
00227     int32_t                 hashCode(void) const;
00228 
00233     virtual UClassID getDynamicClassID() const;
00234 
00239     static UClassID U_EXPORT2 getStaticClassID();
00240 
00241 private:
00249     void adopt(uint8_t *values, int32_t count);
00250 
00251     /*
00252     * Creates a collation key with a string.
00253     */
00254 
00261     CollationKey&           ensureCapacity(int32_t newSize);
00266     CollationKey&           setToBogus(void);
00271     CollationKey&           reset(void);
00272     
00276     friend  class           RuleBasedCollator;
00280     UBool                   fBogus;
00285     int32_t                 fCount;
00289     int32_t                 fCapacity;
00293     int32_t                 fHashCode;
00297     uint8_t*                fBytes;
00298 
00299 };
00300 
00301 inline UBool
00302 CollationKey::operator!=(const CollationKey& other) const
00303 {
00304     return !(*this == other);
00305 }
00306 
00307 inline UBool
00308 CollationKey::isBogus() const
00309 {
00310     return fBogus;
00311 }
00312 
00313 inline const uint8_t*
00314 CollationKey::getByteArray(int32_t &count) const
00315 {
00316     count = fCount;
00317     return fBytes;
00318 }
00319 
00320 U_NAMESPACE_END
00321 
00322 #endif /* #if !UCONFIG_NO_COLLATION */
00323 
00324 #endif

Generated on Mon Aug 13 07:17:24 2007 for ICU 3.6 by  doxygen 1.5.2