Logo Search packages:      
Sourcecode: icu version File versions

CollationElementIterator Class Reference

#include <coleitr.h>

List of all members.


Detailed Description

The CollationElementIterator class is used as an iterator to walk through each character of an international string. Use the iterator to return the ordering priority of the positioned character. The ordering priority of a character, which we refer to as a key, defines how a character is collated in the given collation object. For example, consider the following in Spanish:
 
        "ca" -> the first key is key('c') and second key is key('a').
        "cha" -> the first key is key('ch') and second key is key('a').
And in German,
 
        "ęb"-> the first key is key('a'), the second key is key('e'), and
        the third key is key('b').
The key of a character, is an integer composed of primary order(short), secondary order(char), and tertiary order(char). Java strictly defines the size and signedness of its primitive data types. Therefore, the static functions primaryOrder(), secondaryOrder(), and tertiaryOrder() return int32_t to ensure the correctness of the key value.

Example of the iterator usage: (without error checking)

 
   void CollationElementIterator_Example()
   {
       UnicodeString str = "This is a test";
       UErrorCode success = U_ZERO_ERROR;
       RuleBasedCollator* rbc =
           (RuleBasedCollator*) RuleBasedCollator::createInstance(success);
       CollationElementIterator* c =
           rbc->createCollationElementIterator( str );
       int32_t order = c->next(success);
       c->reset();
       order = c->previous(success);
       delete c;
       delete rbc;
   }

CollationElementIterator::next returns the collation order of the next character based on the comparison level of the collator. CollationElementIterator::previous returns the collation order of the previous character based on the comparison level of the collator. The Collation Element Iterator moves only in one direction between calls to CollationElementIterator::reset. That is, CollationElementIterator::next() and CollationElementIterator::previous can not be inter-used. Whenever CollationElementIterator::previous is to be called after CollationElementIterator::next() or vice versa, CollationElementIterator::reset has to be called first to reset the status, shifting pointers to either the end or the start of the string. Hence at the next call of CollationElementIterator::previous or CollationElementIterator::next(), the first or last collation order will be returned. If a change of direction is done without a CollationElementIterator::reset(), the result is undefined. The result of a forward iterate (CollationElementIterator::next) and reversed result of the backward iterate (CollationElementIterator::previous) on the same string are equivalent, if collation orders with the value UCOL_IGNORABLE are ignored. Character based on the comparison level of the collator. A collation order consists of primary order, secondary order and tertiary order. The data type of the collation order is t_int32.

Note, CollationElementIterator should not be subclassed.

See also:
Collator

RuleBasedCollator

Version:
1.8 Jan 16 2001

Definition at line 111 of file coleitr.h.


Public Member Functions

 CollationElementIterator (const CollationElementIterator &other)
int32_t getMaxExpansion (int32_t order) const
int32_t getOffset (void) const
int32_t next (UErrorCode &status)
UBool operator!= (const CollationElementIterator &other) const
UBool operator== (const CollationElementIterator &other) const
int32_t previous (UErrorCode &status)
void reset (void)
void setOffset (int32_t newOffset, UErrorCode &status)
void setText (CharacterIterator &str, UErrorCode &status)
void setText (const UnicodeString &str, UErrorCode &status)
int32_t strengthOrder (int32_t order) const
 ~CollationElementIterator ()

Static Public Member Functions

static UBool isIgnorable (int32_t order)
static int32_t primaryOrder (int32_t order)
static int32_t secondaryOrder (int32_t order)
static int32_t tertiaryOrder (int32_t order)

Static Public Attributes

static int32_t const NULLORDER = 0xffffffff

Protected Member Functions

 CollationElementIterator (const CharacterIterator &sourceText, const RuleBasedCollator *order, UErrorCode &status)
 CollationElementIterator (const UnicodeString &sourceText, const RuleBasedCollator *order, UErrorCode &status)
const CollationElementIteratoroperator= (const CollationElementIterator &other)

Private Attributes

UBool isDataOwned_
UCollationElementsm_data_

Friends

class RuleBasedCollator

The documentation for this class was generated from the following files:

Generated by  Doxygen 1.6.0   Back to index