Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Search  

coll.h

Go to the documentation of this file.
00001 /*
00002 ******************************************************************************
00003 *   Copyright (C) 1996-2003, International Business Machines                 *
00004 *   Corporation and others.  All Rights Reserved.                            *
00005 ******************************************************************************
00006 */
00007 
00044 #ifndef COLL_H
00045 #define COLL_H
00046 
00047 #include "unicode/utypes.h"
00048 
00049 #if !UCONFIG_NO_COLLATION
00050 
00051 #include "unicode/uobject.h"
00052 #include "unicode/ucol.h"
00053 #include "unicode/normlzr.h"
00054 #include "unicode/locid.h"
00055 #include "unicode/uniset.h"
00056 
00057 U_NAMESPACE_BEGIN
00058 
00059 class StringEnumeration;
00060 
00064 typedef const void* URegistryKey;
00065 
00069 class CollatorFactory;
00070 
00074 class CollationKey;
00075 
00175 class U_I18N_API Collator : public UObject {
00176 public:
00177 
00178     // Collator public enums -----------------------------------------------
00179   
00205     enum ECollationStrength 
00206     {
00207         PRIMARY    = 0,
00208         SECONDARY  = 1, 
00209         TERTIARY   = 2,
00210         QUATERNARY = 3,
00211         IDENTICAL  = 15
00212     };
00213 
00224     enum EComparisonResult 
00225     {
00226         LESS = -1,
00227         EQUAL = 0,
00228         GREATER = 1
00229     };
00230   
00231     // Collator public destructor -----------------------------------------
00232   
00237     virtual ~Collator();
00238 
00239     // Collator public methods --------------------------------------------
00240 
00247     virtual UBool operator==(const Collator& other) const;
00248 
00255     virtual UBool operator!=(const Collator& other) const;
00256 
00262     virtual Collator* clone(void) const = 0;
00263 
00283     static Collator* createInstance(UErrorCode&  err);
00284 
00308     static Collator* createInstance(const Locale& loc, UErrorCode& err);
00309 
00310 #ifdef U_USE_COLLATION_OBSOLETE_2_6
00311 
00334     static Collator *createInstance(const Locale &loc, UVersionInfo version, UErrorCode &err);
00335 #endif
00336 
00348     virtual EComparisonResult compare(const UnicodeString& source, 
00349                                       const UnicodeString& target) const;
00350 
00363     virtual UCollationResult compare(const UnicodeString& source, 
00364                                       const UnicodeString& target,
00365                                       UErrorCode &status) const = 0;
00366 
00379     virtual EComparisonResult compare(const UnicodeString& source,
00380                                       const UnicodeString& target,
00381                                       int32_t length) const;
00382     
00396     virtual UCollationResult compare(const UnicodeString& source,
00397                                       const UnicodeString& target,
00398                                       int32_t length,
00399                                       UErrorCode &status) const = 0;
00400 
00416     virtual EComparisonResult compare(const UChar* source, int32_t sourceLength,
00417                                       const UChar* target, int32_t targetLength) 
00418                                       const;
00419 
00436     virtual UCollationResult compare(const UChar* source, int32_t sourceLength,
00437                                       const UChar* target, int32_t targetLength,
00438                                       UErrorCode &status) const = 0;
00439 
00455     virtual CollationKey& getCollationKey(const UnicodeString&  source,
00456                                           CollationKey& key,
00457                                           UErrorCode& status) const = 0;
00458 
00475     virtual CollationKey& getCollationKey(const UChar*source, 
00476                                           int32_t sourceLength,
00477                                           CollationKey& key,
00478                                           UErrorCode& status) const = 0;
00483     virtual int32_t hashCode(void) const = 0;
00484 
00496     virtual const Locale getLocale(ULocDataLocaleType type, UErrorCode& status) const = 0;
00497 
00507     UBool greater(const UnicodeString& source, const UnicodeString& target) 
00508                   const;
00509 
00519     UBool greaterOrEqual(const UnicodeString& source, 
00520                          const UnicodeString& target) const;
00521 
00531     UBool equals(const UnicodeString& source, const UnicodeString& target) const;
00532 
00543     virtual ECollationStrength getStrength(void) const = 0;
00544 
00565     virtual void setStrength(ECollationStrength newStrength) = 0;
00566 
00576     static UnicodeString& getDisplayName(const Locale& objectLocale,
00577                                          const Locale& displayLocale,
00578                                          UnicodeString& name);
00579 
00588     static UnicodeString& getDisplayName(const Locale& objectLocale,
00589                                          UnicodeString& name);
00590 
00602     static const Locale* getAvailableLocales(int32_t& count);
00603 
00612     static StringEnumeration* getAvailableLocales(void);
00613 
00622     static URegistryKey registerInstance(Collator* toAdopt, const Locale& locale, UErrorCode& status);
00623 
00631     static URegistryKey registerFactory(CollatorFactory* toAdopt, UErrorCode& status);
00632 
00643     static UBool unregister(URegistryKey key, UErrorCode& status);
00644 
00650     virtual void getVersion(UVersionInfo info) const = 0;
00651 
00662     virtual UClassID getDynamicClassID(void) const = 0;
00663 
00672     virtual void setAttribute(UColAttribute attr, UColAttributeValue value, 
00673                               UErrorCode &status) = 0;
00674 
00683     virtual UColAttributeValue getAttribute(UColAttribute attr, 
00684                                             UErrorCode &status) = 0;
00685 
00696     virtual uint32_t setVariableTop(const UChar *varTop, int32_t len, UErrorCode &status) = 0;
00697 
00707     virtual uint32_t setVariableTop(const UnicodeString varTop, UErrorCode &status) = 0;
00708 
00716     virtual void setVariableTop(const uint32_t varTop, UErrorCode &status) = 0;
00717 
00724     virtual uint32_t getVariableTop(UErrorCode &status) const = 0;
00725 
00735     virtual UnicodeSet *getTailoredSet(UErrorCode &status) const;
00736 
00737 
00743     virtual Collator* safeClone(void) = 0;
00744 
00757     virtual int32_t getSortKey(const UnicodeString& source,
00758                               uint8_t* result,
00759                               int32_t resultLength) const = 0;
00760 
00776     virtual int32_t getSortKey(const UChar*source, int32_t sourceLength,
00777                                uint8_t*result, int32_t resultLength) const = 0;
00778 
00816     static int32_t getBound(const uint8_t       *source,
00817             int32_t             sourceLength,
00818             UColBoundMode       boundType,
00819             uint32_t            noOfLevels,
00820             uint8_t             *result,
00821             int32_t             resultLength,
00822             UErrorCode          &status);
00823 
00824 
00825 protected:
00826 
00827     // Collator protected constructors -------------------------------------
00828 
00836     Collator();
00837 
00849     Collator(UCollationStrength collationStrength, 
00850              UNormalizationMode decompositionMode);
00851   
00857     Collator(const Collator& other);
00858   
00859     // Collator protected methods -----------------------------------------
00860 
00861 
00868     virtual void setLocales(const Locale& requestedLocale, const Locale& validLocale);
00869 
00870 public:
00875     static UCollator* createUCollator(const char* loc, UErrorCode* status);
00876 
00877 private:
00882     Collator& operator=(const Collator& other);
00883 
00884     friend class CFactory;
00885     friend class SimpleCFactory;
00886     friend class ICUCollatorFactory;
00887     friend class ICUCollatorService;
00888     static Collator* makeInstance(const Locale& desiredLocale, 
00889                                   UErrorCode& status);
00890 
00891     // Collator private data members ---------------------------------------
00892 
00893     /*
00894     synwee : removed as attributes to be handled by child class
00895     UCollationStrength  strength;
00896     Normalizer::EMode  decmp;
00897     */
00898     /* This is useless information */
00899 /*  static const UVersionInfo fVersion;*/
00900 };
00901 
00918 class U_I18N_API CollatorFactory : public UObject {
00919 public:
00920 
00928     virtual UBool visible(void) const;
00929 
00937     virtual Collator* createCollator(const Locale& loc) = 0;
00938 
00949     virtual  UnicodeString& getDisplayName(const Locale& objectLocale, 
00950                                            const Locale& displayLocale,
00951                                            UnicodeString& result);
00952     
00962     virtual const UnicodeString * getSupportedIDs(int32_t &count, UErrorCode& status) = 0;
00963 };
00964 
00965 // Collator inline methods -----------------------------------------------
00966 
00967 /*
00968 synwee : removed since there's no attribute to be retrieved here
00969 inline UCollationStrength Collator::getStrength() const
00970 {
00971   return strength;
00972 }
00973 
00974 inline Normalizer::EMode Collator::getDecomposition() const
00975 {
00976   return decmp;
00977 }
00978 */
00979 U_NAMESPACE_END
00980 
00981 #endif /* #if !UCONFIG_NO_COLLATION */
00982 
00983 #endif

Generated on Mon Nov 24 14:35:29 2003 for ICU 2.8 by doxygen1.2.11.1 written by Dimitri van Heesch, © 1997-2001