- Main Page
- Related Pages
- Modules
- Data Structures
- Files

- Search for |

- File List
- Globals

# 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