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

coll.h

Go to the documentation of this file.
00001 /*
00002 ******************************************************************************
00003 *   Copyright (C) 1996-2001, 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/ucol.h"
00048 #include "unicode/normlzr.h"
00049 #include "unicode/locid.h"
00050 
00051 class CollationKey;
00052 
00153 class U_I18N_API Collator
00154 {
00155 public:
00156 
00157   // Collator public enums -----------------------------------------------
00158 
00183   enum ECollationStrength 
00184   {
00185     PRIMARY    = 0,
00186     SECONDARY  = 1, 
00187     TERTIARY   = 2,
00188     QUATERNARY = 3,
00189     IDENTICAL  = 15
00190   };
00191   
00201   enum EComparisonResult 
00202   {
00203     LESS = -1,
00204     EQUAL = 0,
00205     GREATER = 1
00206   };
00207   
00208   // Collator public destructor -----------------------------------------
00209   
00213   virtual ~Collator();
00214 
00215   // Collator public methods --------------------------------------------
00216 
00222   virtual UBool operator==(const Collator& other) const;
00223 
00229   virtual UBool operator!=(const Collator& other) const;
00230 
00235   virtual Collator* clone(void) const = 0;
00236 
00253   static Collator* createInstance(UErrorCode&  err);
00254 
00277   static Collator* createInstance(const Locale& loc, UErrorCode& err);
00278 
00299   static Collator *createInstance(const Locale &loc, UVersionInfo version, UErrorCode &err);
00300 
00329   virtual EComparisonResult compare(const UnicodeString& source, 
00330                                     const UnicodeString& target) const = 0;
00331 
00363   virtual EComparisonResult compare(const UnicodeString& source,
00364                                     const UnicodeString& target,
00365                                     int32_t length) const = 0;
00366     
00398   virtual EComparisonResult compare(const UChar* source, int32_t sourceLength,
00399                                     const UChar* target, int32_t targetLength) 
00400                                     const = 0;
00401 
00455   virtual CollationKey& getCollationKey(const UnicodeString&  source,
00456                                         CollationKey& key,
00457                                         UErrorCode& status) const = 0;
00458 
00473   virtual CollationKey& getCollationKey(const UChar*source, 
00474                                         int32_t sourceLength,
00475                                                                       CollationKey& key,
00476                                                                       UErrorCode& status) const = 0;
00480   virtual int32_t hashCode(void) const = 0;
00481 
00490   UBool greater(const UnicodeString& source, const UnicodeString& target) 
00491                 const;
00492 
00501   UBool greaterOrEqual(const UnicodeString& source, 
00502                        const UnicodeString& target) const;
00511   UBool equals(const UnicodeString& source, const UnicodeString& target) const;
00512         
00518   virtual Normalizer::EMode getDecomposition(void) const = 0;
00519 
00526   virtual void setDecomposition(Normalizer::EMode  mode) = 0;
00527 
00537   virtual ECollationStrength getStrength(void) const = 0;
00538   
00559   virtual void setStrength(ECollationStrength newStrength) = 0;
00560 
00569   static UnicodeString& getDisplayName(const Locale& objectLocale,
00570                                        const Locale& displayLocale,
00571                                        UnicodeString& name);
00579   static UnicodeString& getDisplayName(const Locale& objectLocale,
00580                                        UnicodeString& name);
00581 
00587   static const Locale* getAvailableLocales(int32_t& count);
00588 
00593   void getVersion(UVersionInfo info) const;
00594 
00611   virtual UClassID getDynamicClassID(void) const = 0;
00612 
00620   virtual void setAttribute(UColAttribute attr, UColAttributeValue value, 
00621                             UErrorCode &status) = 0;
00622 
00630   virtual UColAttributeValue getAttribute(UColAttribute attr, 
00631                                           UErrorCode &status) = 0;
00632 
00637   virtual Collator* safeClone(void) = 0;
00638 
00639 
00651   virtual EComparisonResult compare(ForwardCharacterIterator &source,
00652                                                                                    ForwardCharacterIterator &target) = 0;
00653 
00665   virtual int32_t getSortKey(const UnicodeString& source, uint8_t* result,
00666                                                                  int32_t resultLength) const = 0;
00667 
00682   virtual int32_t getSortKey(const UChar*source, int32_t sourceLength,
00683                                                                  uint8_t*result, int32_t resultLength) const = 0;
00684 
00685 protected:
00686 
00687   // Collator protected constructors -------------------------------------
00688 
00695   Collator();
00696 
00706   Collator(UCollationStrength collationStrength, 
00707               UNormalizationMode decompositionMode);
00708   
00713   Collator(const Collator& other);
00714   
00715   // Collator protected methods -----------------------------------------
00716 
00717 private:
00718  
00719   // Collator private data members ---------------------------------------
00720 
00721   /*
00722   synwee : removed as attributes to be handled by child class
00723   UCollationStrength  strength;
00724   Normalizer::EMode  decmp;
00725   */
00726   static const UVersionInfo fVersion;
00727 };
00728 
00729 // Collator inline methods -----------------------------------------------
00730 
00731 inline UBool Collator::operator==(const Collator& other) const
00732 {
00733   return (UBool)(this == &other);
00734 }
00735 
00736 inline UBool Collator::operator!=(const Collator& other) const
00737 {
00738   return (UBool)!(*this == other);
00739 }
00740 
00741 /*
00742 synwee : removed since there's no attribute to be retrieved here
00743 inline UCollationStrength Collator::getStrength() const
00744 {
00745   return strength;
00746 }
00747 
00748 inline Normalizer::EMode Collator::getDecomposition() const
00749 {
00750   return decmp;
00751 }
00752 */
00753 #endif

Generated at Tue Jun 12 14:03:55 2001 for ICU 1.8.1 by doxygen1.2.3 written by Dimitri van Heesch, © 1997-2000