Main Page   Class Hierarchy   Compound List   File List   Header Files   Sources   Compound Members   File Members  

coll.h

This is the verbatim text of the coll.h include file.
/*
*******************************************************************************
*   Copyright (C) 1996-1999, International Business Machines
*   Corporation and others.  All Rights Reserved.
*******************************************************************************
*/
//=============================================================================
//
// File coll.h
//
// 
//
// Created by: Helena Shih
//
// Modification History:
//
//  Date        Name        Description
// 02/5/97      aliu        Modified createDefault to load collation data from
//                          binary files when possible.  Added related methods
//                          createCollationFromFile, chopLocale, createPathName.
// 02/11/97     aliu        Added members addToCache, findInCache, and fgCache.
// 02/12/97     aliu        Modified to create objects from RuleBasedCollator cache.
//                          Moved cache out of Collation class.
// 02/13/97     aliu        Moved several methods out of this class and into
//                          RuleBasedCollator, with modifications.  Modified
//                          createDefault() to call new RuleBasedCollator(Locale&)
//                          constructor.  General clean up and documentation.
// 02/20/97     helena      Added clone, operator==, operator!=, operator=, copy
//                          constructor and getDynamicClassID.
// 03/25/97     helena      Updated with platform independent data types.
// 05/06/97     helena      Added memory allocation error detection.
//  6/20/97     helena      Java class name change.
// 09/03/97     helena      Added createCollationKeyValues().
// 02/10/98     damiba      Added compare() with length as parameter.
// 04/23/99     stephen     Removed EDecompositionMode, merged with
//                          Normalizer::EMode.
// 11/02/99     helena      Collator performance enhancements.  Eliminates the 
//                          UnicodeString construction and special case for NO_OP.
// 11/23/99     srl         More performance enhancements. Inlining of
//                          critical accessors.
// 05/15/00     helena      Added version information API. 
//=============================================================================

#ifndef COLL_H
#define COLL_H


#include "unicode/locid.h"
#include "unicode/utypes.h"
#include "unicode/unistr.h"
#include "unicode/normlzr.h"

class CollationKey;

class U_I18N_API Collator {
public:
  enum ECollationStrength {
    PRIMARY = 0,
    SECONDARY = 1, 
    TERTIARY = 2,
    IDENTICAL = 3
  };

  enum EComparisonResult {
    LESS = -1,
    EQUAL = 0,
    GREATER = 1
  };
  
  virtual                         ~Collator();

  virtual     UBool              operator==(const Collator& other) const;

  virtual     UBool              operator!=(const Collator& other) const;

  virtual     Collator*           clone(void) const = 0;
  static  Collator*           createInstance( UErrorCode&  err);

  static  Collator*           createInstance( const Locale&   loc,
                          UErrorCode&      err);

  // comparison
  virtual EComparisonResult   compare(    const   UnicodeString&  source, 
                      const   UnicodeString&  target) const = 0;

  virtual EComparisonResult   compare(    const   UnicodeString&  source,
                      const   UnicodeString&  target,
                      int32_t length) const = 0;
    
    
  virtual EComparisonResult   compare(    const   UChar* source, 
                      int32_t sourceLength,
                      const   UChar*  target,
                      int32_t targetLength) const = 0;

  virtual CollationKey&       getCollationKey(const   UnicodeString&  source,
                          CollationKey&       key,
                          UErrorCode&      status) const = 0;

  virtual CollationKey&       getCollationKey(const UChar *source,
                                              int32_t sourceLength,
                                              CollationKey&       key,
                                              UErrorCode&      status) const = 0;
  virtual int32_t             hashCode(void) const = 0;

  UBool              greater(    const   UnicodeString& source, 
                  const   UnicodeString& target) const;
  UBool              greaterOrEqual( const   UnicodeString& source, 
                      const   UnicodeString& target) const;
  UBool              equals( const   UnicodeString& source, 
                  const   UnicodeString& target) const;
        
  // getter/setter
  Normalizer::EMode  getDecomposition(void) const;
  void                setDecomposition(Normalizer::EMode  mode);
  ECollationStrength  getStrength(void) const;
  void                setStrength(    ECollationStrength  newStrength);
  static  UnicodeString&      getDisplayName( const   Locale&     objectLocale,
                          const   Locale&     displayLocale,
                          UnicodeString& name) ;
  static  UnicodeString&      getDisplayName( const   Locale&         objectLocale,
                          UnicodeString&  name) ;

  static  const   Locale*     getAvailableLocales(int32_t& count);

  void getVersion(UVersionInfo info) const;

  virtual UClassID getDynamicClassID(void) const = 0;

protected:
  Collator();
  Collator(ECollationStrength collationStrength,
       Normalizer::EMode decompositionMode);
  Collator(const  Collator&   other);

  const       Collator&       operator=(const Collator&   other);

  //--------------------------------------------------------------------------
private:
            
  ECollationStrength  strength;
  Normalizer::EMode  decmp;
  static const UVersionInfo fVersion;
};

inline UBool
Collator::operator==(const Collator& other) const
{
  UBool result;
  if (this == &other) result = TRUE;
  else result = ((strength == other.strength) && (decmp == other.decmp));
  return result;
}

inline UBool
Collator::operator!=(const Collator& other) const
{
  UBool result;
  result = !(*this == other);
  return result;
}

inline Collator::ECollationStrength 
Collator::getStrength() const
{
  return strength;
}

inline Normalizer::EMode
Collator::getDecomposition() const
{
  return decmp;
}


#endif

Generated at Wed Aug 16 16:05:42 2000 for ICU1.6 by doxygen 1.0.0 written by Dimitri van Heesch, © 1997-1999