Main Page | Class Hierarchy | Alphabetical List | Data Structures | File List | Data Fields | Globals | Related Pages

coleitr.h

00001 /*
00002 ******************************************************************************
00003 *   Copyright (C) 1997-2003, International Business Machines
00004 *   Corporation and others.  All Rights Reserved.
00005 ******************************************************************************
00006 */
00007 
00027 #ifndef COLEITR_H
00028 #define COLEITR_H
00029 
00030 #include "unicode/utypes.h"
00031 
00032 #if !UCONFIG_NO_COLLATION
00033 
00034 #include "unicode/uobject.h"
00035 #include "unicode/tblcoll.h"
00036 #include "unicode/ucoleitr.h"
00037 
00043 typedef struct UCollationElements UCollationElements;
00044 
00045 U_NAMESPACE_BEGIN
00046 
00121 class U_I18N_API CollationElementIterator : public UObject {
00122 public: 
00123 
00124   // CollationElementIterator public data member ------------------------------
00125 
00130   static int32_t const NULLORDER;
00131 
00132   // CollationElementIterator public constructor/destructor -------------------
00133 
00140   CollationElementIterator(const CollationElementIterator& other);
00141 
00146   ~CollationElementIterator();
00147   
00148   // CollationElementIterator public methods ----------------------------------
00149 
00157   UBool operator==(const CollationElementIterator& other) const;
00158 
00166   UBool operator!=(const CollationElementIterator& other) const;
00167 
00172   void reset(void);
00173     
00181   int32_t next(UErrorCode& status);
00182 
00190   int32_t previous(UErrorCode& status);
00191 
00198   static int32_t primaryOrder(int32_t order);
00199 
00206   static int32_t secondaryOrder(int32_t order);
00207 
00214   static int32_t tertiaryOrder(int32_t order);
00215 
00225   int32_t getMaxExpansion(int32_t order) const;
00226 
00233   int32_t strengthOrder(int32_t order) const;
00234 
00241   void setText(const UnicodeString& str, UErrorCode& status);
00242 
00249   void setText(CharacterIterator& str, UErrorCode& status);
00250 
00257   static UBool isIgnorable(int32_t order);
00258 
00264   int32_t getOffset(void) const;
00265 
00273   void setOffset(int32_t newOffset, UErrorCode& status);
00274 
00280   virtual inline UClassID getDynamicClassID() const;
00281 
00287   static inline UClassID getStaticClassID();
00288 
00289 protected:
00290   
00291   // CollationElementIterator protected constructors --------------------------
00295   friend class RuleBasedCollator;
00296 
00307   CollationElementIterator(const UnicodeString& sourceText,
00308                            const RuleBasedCollator* order, UErrorCode& status);
00309 
00320   CollationElementIterator(const CharacterIterator& sourceText,
00321                            const RuleBasedCollator* order, UErrorCode& status);
00322   
00323   // CollationElementIterator protected methods -------------------------------
00324 
00331   const CollationElementIterator&
00332                               operator=(const CollationElementIterator& other);
00333 
00334 private:
00335   CollationElementIterator(); // default constructor not implemented
00336 
00337   // CollationElementIterator private data members ----------------------------
00338 
00342   UCollationElements *m_data_;
00343 
00347   UBool isDataOwned_;
00348 
00353   static const char fgClassID;
00354 };
00355 
00356 // CollationElementIterator inline method defination --------------------------
00357 
00358 inline UClassID
00359 CollationElementIterator::getStaticClassID()
00360 { return (UClassID)&fgClassID; }
00361 
00362 inline UClassID
00363 CollationElementIterator::getDynamicClassID() const
00364 { return CollationElementIterator::getStaticClassID(); }
00365 
00371 inline int32_t CollationElementIterator::primaryOrder(int32_t order)
00372 {
00373   order &= RuleBasedCollator::PRIMARYORDERMASK;
00374   return (order >> RuleBasedCollator::PRIMARYORDERSHIFT);
00375 }
00376 
00382 inline int32_t CollationElementIterator::secondaryOrder(int32_t order)
00383 {
00384   order = order & RuleBasedCollator::SECONDARYORDERMASK;
00385   return (order >> RuleBasedCollator::SECONDARYORDERSHIFT);
00386 }
00387 
00393 inline int32_t CollationElementIterator::tertiaryOrder(int32_t order)
00394 {
00395   return (order &= RuleBasedCollator::TERTIARYORDERMASK);
00396 }
00397 
00398 inline int32_t CollationElementIterator::getMaxExpansion(int32_t order) const
00399 {
00400   return ucol_getMaxExpansion(m_data_, (uint32_t)order);
00401 }
00402 
00403 inline UBool CollationElementIterator::isIgnorable(int32_t order)
00404 {
00405   return (primaryOrder(order) == RuleBasedCollator::PRIMIGNORABLE);
00406 }
00407 
00408 U_NAMESPACE_END
00409 
00410 #endif /* #if !UCONFIG_NO_COLLATION */
00411 
00412 #endif

Generated on Wed Sep 3 17:47:08 2003 for ICU 2.6 by doxygen 1.3.2