coll.h

Go to the documentation of this file.
00001 /* 00002 ****************************************************************************** 00003 * Copyright (C) 1996-2004, 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 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 00497 virtual const Locale getLocale(ULocDataLocaleType type, UErrorCode& status) const = 0; 00498 00508 UBool greater(const UnicodeString& source, const UnicodeString& target) 00509 const; 00510 00520 UBool greaterOrEqual(const UnicodeString& source, 00521 const UnicodeString& target) const; 00522 00532 UBool equals(const UnicodeString& source, const UnicodeString& target) const; 00533 00544 virtual ECollationStrength getStrength(void) const = 0; 00545 00566 virtual void setStrength(ECollationStrength newStrength) = 0; 00567 00577 static UnicodeString& getDisplayName(const Locale& objectLocale, 00578 const Locale& displayLocale, 00579 UnicodeString& name); 00580 00589 static UnicodeString& getDisplayName(const Locale& objectLocale, 00590 UnicodeString& name); 00591 00603 static const Locale* getAvailableLocales(int32_t& count); 00604 00613 static StringEnumeration* getAvailableLocales(void); 00614 00624 static StringEnumeration* getKeywords(UErrorCode& status); 00625 00637 static StringEnumeration* getKeywordValues(const char *keyword, UErrorCode& status); 00638 00666 static Locale getFunctionalEquivalent(const char* keyword, const Locale& locale, 00667 UBool& isAvailable, UErrorCode& status); 00668 00677 static URegistryKey registerInstance(Collator* toAdopt, const Locale& locale, UErrorCode& status); 00678 00686 static URegistryKey registerFactory(CollatorFactory* toAdopt, UErrorCode& status); 00687 00698 static UBool unregister(URegistryKey key, UErrorCode& status); 00699 00705 virtual void getVersion(UVersionInfo info) const = 0; 00706 00717 virtual UClassID getDynamicClassID(void) const = 0; 00718 00727 virtual void setAttribute(UColAttribute attr, UColAttributeValue value, 00728 UErrorCode &status) = 0; 00729 00738 virtual UColAttributeValue getAttribute(UColAttribute attr, 00739 UErrorCode &status) = 0; 00740 00751 virtual uint32_t setVariableTop(const UChar *varTop, int32_t len, UErrorCode &status) = 0; 00752 00762 virtual uint32_t setVariableTop(const UnicodeString varTop, UErrorCode &status) = 0; 00763 00771 virtual void setVariableTop(const uint32_t varTop, UErrorCode &status) = 0; 00772 00779 virtual uint32_t getVariableTop(UErrorCode &status) const = 0; 00780 00790 virtual UnicodeSet *getTailoredSet(UErrorCode &status) const; 00791 00792 00798 virtual Collator* safeClone(void) = 0; 00799 00812 virtual int32_t getSortKey(const UnicodeString& source, 00813 uint8_t* result, 00814 int32_t resultLength) const = 0; 00815 00831 virtual int32_t getSortKey(const UChar*source, int32_t sourceLength, 00832 uint8_t*result, int32_t resultLength) const = 0; 00833 00871 static int32_t getBound(const uint8_t *source, 00872 int32_t sourceLength, 00873 UColBoundMode boundType, 00874 uint32_t noOfLevels, 00875 uint8_t *result, 00876 int32_t resultLength, 00877 UErrorCode &status); 00878 00879 00880 protected: 00881 00882 // Collator protected constructors ------------------------------------- 00883 00891 Collator(); 00892 00904 Collator(UCollationStrength collationStrength, 00905 UNormalizationMode decompositionMode); 00906 00912 Collator(const Collator& other); 00913 00914 // Collator protected methods ----------------------------------------- 00915 00916 00923 virtual void setLocales(const Locale& requestedLocale, const Locale& validLocale); 00924 00925 public: 00930 static UCollator* createUCollator(const char* loc, UErrorCode* status); 00931 00932 private: 00937 Collator& operator=(const Collator& other); 00938 00939 friend class CFactory; 00940 friend class SimpleCFactory; 00941 friend class ICUCollatorFactory; 00942 friend class ICUCollatorService; 00943 static Collator* makeInstance(const Locale& desiredLocale, 00944 UErrorCode& status); 00945 00946 // Collator private data members --------------------------------------- 00947 00948 /* 00949 synwee : removed as attributes to be handled by child class 00950 UCollationStrength strength; 00951 Normalizer::EMode decmp; 00952 */ 00953 /* This is useless information */ 00954 /* static const UVersionInfo fVersion;*/ 00955 }; 00956 00973 class U_I18N_API CollatorFactory : public UObject { 00974 public: 00975 00980 virtual ~CollatorFactory(); 00981 00989 virtual UBool visible(void) const; 00990 00998 virtual Collator* createCollator(const Locale& loc) = 0; 00999 01010 virtual UnicodeString& getDisplayName(const Locale& objectLocale, 01011 const Locale& displayLocale, 01012 UnicodeString& result); 01013 01023 virtual const UnicodeString * getSupportedIDs(int32_t &count, UErrorCode& status) = 0; 01024 }; 01025 01026 // Collator inline methods ----------------------------------------------- 01027 01028 /* 01029 synwee : removed since there's no attribute to be retrieved here 01030 inline UCollationStrength Collator::getStrength() const 01031 { 01032 return strength; 01033 } 01034 01035 inline Normalizer::EMode Collator::getDecomposition() const 01036 { 01037 return decmp; 01038 } 01039 */ 01040 U_NAMESPACE_END 01041 01042 #endif /* #if !UCONFIG_NO_COLLATION */ 01043 01044 #endif

Generated on Fri Jun 18 12:35:57 2004 for ICU by doxygen 1.3.7