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

CollationElementIterator Class Reference

The CollationElementIterator class is used as an iterator to walk through each character of an international string. More...

#include <coleitr.h>

List of all members.

Public Methods

 ~CollationElementIterator ()
 Destructor. More...

UBool operator== (const CollationElementIterator& other) const
 Returns true if "other" is the same as "this". More...

UBool operator!= (const CollationElementIterator& other) const
 Returns true if "other" is not the same as "this". More...

void reset (void)
 Resets the cursor to the beginning of the string. More...

int32_t next (UErrorCode& status)
 Gets the ordering priority of the next character in the string. More...

int32_t previous (UErrorCode& status)
 Get the ordering priority of the previous collation element in the string. More...

int32_t getMaxExpansion (int32_t order) const
 Return the maximum length of any expansion sequences that end with the specified comparison order. More...

int32_t strengthOrder (int32_t order) const
 Gets the comparison order in the desired strength. More...

void setText (const UnicodeString& str, UErrorCode& status)
 Sets the source string. More...

void setText (CharacterIterator& str, UErrorCode& status)
 Sets the source string. More...

UTextOffset getOffset (void) const
 Gets the offset of the currently processed character in the source string. More...

void setOffset (UTextOffset newOffset, UErrorCode& status)
 Sets the offset of the currently processed character in the source string. More...

 CollationElementIterator (const CollationElementIterator& other)
 Copy constructor. More...


Static Public Methods

int32_t primaryOrder (int32_t order)
 Gets the primary order of a collation order. More...

int32_t secondaryOrder (int32_t order)
 Gets the secondary order of a collation order. More...

int32_t tertiaryOrder (int32_t order)
 Gets the tertiary order of a collation order. More...

UBool isIgnorable (int32_t order)
 Checks if a comparison order is ignorable. More...


Static Public Attributes

int32_t const NULLORDER
 NULLORDER indicates the iterator has consumed the last element. More...


Protected Methods

 CollationElementIterator ( const UnicodeString& sourceText, const RuleBasedCollator* order, UErrorCode& status)
 CollationElementIterator constructor. More...

 CollationElementIterator ( const CharacterIterator& sourceText, const RuleBasedCollator* order, UErrorCode& status)
 CollationElementIterator constructor. More...

const CollationElementIterator& operator= (const CollationElementIterator& other)
 Assignment operator. More...


Private Methods

 CollationElementIterator ()
 Default constructor.

 CollationElementIterator (const RuleBasedCollator* order)
 Copy constructor.

int32_t nextContractChar ( UChar32 ch, UErrorCode& status)
 Gets the ordering priority of the next contracting character in the string. More...

int32_t prevContractChar ( UChar32 ch, UErrorCode& status)
 Gets the ordering priority of the previous contracting character in the string. More...

VectorOfInt* makeReorderedBuffer (UChar colFirst, int32_t lastValue, VectorOfInt* lastExpansion, UBool forward, UErrorCode& status)

Private Attributes

Normalizertext
VectorOfInt* bufferAlias
VectorOfInt* ownBuffer
 ownBuffer wants to be a subobject, not a pointer, but that means exposing the internal class VectorOfInt by including the internal header "tables.h" -- not allowed! ownBuffer is a fixed-size 2-element vector that is used to handle Thai collation; bufferAlias points to ownBuffer in some situations. More...

VectorOfInt* reorderBuffer
 reorderBuffer is created on demand, so it doesn't want to be a subobject -- pointer is fine. More...

int32_t expIndex
UnicodeString key
const RuleBasedCollatororderAlias

Static Private Methods

UBool isThaiPreVowel (UChar32 ch)
 Determine if a character is a Thai vowel (which sorts after its base consonant). More...

UBool isThaiBaseConsonant (UChar32 ch)
 Determine if a character is a Thai base consonant. More...


Static Private Attributes

const int32_t UNMAPPEDCHARVALUE

Friends

class  RuleBasedCollator
int32_t ucol_getNextCE (const UCollator *coll, collIterate *source, UErrorCode *status)


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);
       int32_t primaryOrder = CollationElementIterator::primaryOrder( order );
       delete c;
       delete rbc;
   }

CollationElementIterator::next returns the collation order of the next 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 int32_t. The first 16 bits of a collation order is its primary order; the next 8 bits is the secondary order and the last 8 bits is the tertiary order.

See also:
Collator , RuleBasedCollator
Version:
1.9 1/30/97
Author(s):
Helena Shih

Definition at line 93 of file coleitr.h.


Constructor & Destructor Documentation

CollationElementIterator::~CollationElementIterator ( )
 

Destructor.

Stable:

CollationElementIterator::CollationElementIterator ( const UnicodeString & sourceText,
const RuleBasedCollator * order,
UErrorCode & status ) [protected]
 

CollationElementIterator constructor.

This takes the source string and the collation object. The cursor will walk thru the source string based on the predefined collation rules. If the source string is empty, NULLORDER will be returned on the calls to next().

Parameters:
sourceText   the source string.
startOffset   the beginning offset of the string where the cursor starts the iterating.
endOffset   the ending offset of the string where the cursor stops the iterating.
order   the collation object.
Stable:

CollationElementIterator::CollationElementIterator ( const CharacterIterator & sourceText,
const RuleBasedCollator * order,
UErrorCode & status ) [protected]
 

CollationElementIterator constructor.

This takes the source string and the collation object. The cursor will walk thru the source string based on the predefined collation rules. If the source string is empty, NULLORDER will be returned on the calls to next().

Parameters:
sourceText   the source string.
startOffset   the beginning offset of the string where the cursor starts the iterating.
endOffset   the ending offset of the string where the cursor stops the iterating.
order   the collation object.
Stable:

CollationElementIterator::CollationElementIterator ( const CollationElementIterator & other )
 

Copy constructor.

Stable:

CollationElementIterator::CollationElementIterator ( ) [private]
 

Default constructor.

CollationElementIterator::CollationElementIterator ( const RuleBasedCollator * order ) [private]
 

Copy constructor.


Member Function Documentation

int32_t CollationElementIterator::getMaxExpansion ( int32_t order ) const [inline]
 

Return the maximum length of any expansion sequences that end with the specified comparison order.

Parameters:
order   a collation order returned by previous or next.
Returns:
the maximum length of any expansion sequences ending with the specified order.
Stable:

Definition at line 377 of file coleitr.h.

UTextOffset CollationElementIterator::getOffset ( void ) const
 

Gets the offset of the currently processed character in the source string.

Returns:
the offset of the character.
Stable:

UBool CollationElementIterator::isIgnorable ( int32_t order ) [inline, static]
 

Checks if a comparison order is ignorable.

Parameters:
order   the collation order.
Returns:
TRUE if a character is ignorable, FALSE otherwise.
Stable:

Definition at line 383 of file coleitr.h.

UBool CollationElementIterator::isThaiBaseConsonant ( UChar32 ch ) [inline, static, private]
 

Determine if a character is a Thai base consonant.

Definition at line 399 of file coleitr.h.

UBool CollationElementIterator::isThaiPreVowel ( UChar32 ch ) [inline, static, private]
 

Determine if a character is a Thai vowel (which sorts after its base consonant).

Definition at line 392 of file coleitr.h.

VectorOfInt* CollationElementIterator::makeReorderedBuffer ( UChar colFirst,
int32_t lastValue,
VectorOfInt * lastExpansion,
UBool forward,
UErrorCode & status ) [private]
 

int32_t CollationElementIterator::next ( UErrorCode & status )
 

Gets the ordering priority of the next character in the string.

Parameters:
status   the error code status.
Returns:
the next character's ordering. Returns NULLORDER if the end of string is reached.
Stable:

int32_t CollationElementIterator::nextContractChar ( UChar32 ch,
UErrorCode & status ) [private]
 

Gets the ordering priority of the next contracting character in the string.

Parameters:
ch   the starting character of a contracting character token
status   the error code status.
Returns:
the next contracting character's ordering. Returns NULLORDER if the end of string is reached.

UBool CollationElementIterator::operator!= ( const CollationElementIterator & other ) const
 

Returns true if "other" is not the same as "this".

Stable:

const CollationElementIterator & CollationElementIterator::operator= ( const CollationElementIterator & other ) [protected]
 

Assignment operator.

Stable:

UBool CollationElementIterator::operator== ( const CollationElementIterator & other ) const
 

Returns true if "other" is the same as "this".

Stable:

int32_t CollationElementIterator::prevContractChar ( UChar32 ch,
UErrorCode & status ) [private]
 

Gets the ordering priority of the previous contracting character in the string.

Parameters:
ch   the starting character of a contracting character token
status   the error code status.
Returns:
the previous contracting character's ordering. Returns NULLORDER if the start of string is reached.

int32_t CollationElementIterator::previous ( UErrorCode & status )
 

Get the ordering priority of the previous collation element in the string.

Parameters:
status   the error code status.
Returns:
the previous element's ordering. Returns NULLORDER if the beginning of string is reached.
Stable:

int32_t CollationElementIterator::primaryOrder ( int32_t order ) [inline, static]
 

Gets the primary order of a collation order.

Parameters:
order   the collation order
Returns:
the primary order of a collation order.
Stable:

Definition at line 349 of file coleitr.h.

Referenced by isIgnorable().

void CollationElementIterator::reset ( void )
 

Resets the cursor to the beginning of the string.

Stable:

int32_t CollationElementIterator::secondaryOrder ( int32_t order ) [inline, static]
 

Gets the secondary order of a collation order.

Parameters:
order   the collation order
Returns:
the secondary order of a collation order.
Stable:

Definition at line 360 of file coleitr.h.

void CollationElementIterator::setOffset ( UTextOffset newOffset,
UErrorCode & status )
 

Sets the offset of the currently processed character in the source string.

Parameters:
newOffset   the new offset.
status   the error code status.
Returns:
the offset of the character.
Stable:

void CollationElementIterator::setText ( CharacterIterator & str,
UErrorCode & status )
 

Sets the source string.

Parameters:
str   the source character iterator.
status   the error code status.
Stable:

void CollationElementIterator::setText ( const UnicodeString & str,
UErrorCode & status )
 

Sets the source string.

Parameters:
str   the source string.
status   the error code status.
Stable:

int32_t CollationElementIterator::strengthOrder ( int32_t order ) const
 

Gets the comparison order in the desired strength.

Ignore the other differences.

Parameters:
order   The order value
Stable:

int32_t CollationElementIterator::tertiaryOrder ( int32_t order ) [inline, static]
 

Gets the tertiary order of a collation order.

Parameters:
order   the collation order
Returns:
the tertiary order of a collation order.
Stable:

Definition at line 371 of file coleitr.h.


Friends And Related Function Documentation

class RuleBasedCollator [friend]
 

Definition at line 307 of file coleitr.h.

int32_t ucol_getNextCE ( const UCollator * coll,
collIterate * source,
UErrorCode * status ) [friend]
 


Member Data Documentation

int32_t const CollationElementIterator::NULLORDER [static]
 

NULLORDER indicates the iterator has consumed the last element.

Definition at line 99 of file coleitr.h.

const int32_t CollationElementIterator::UNMAPPEDCHARVALUE [static, private]
 

Definition at line 312 of file coleitr.h.

VectorOfInt * CollationElementIterator::bufferAlias [private]
 

Definition at line 316 of file coleitr.h.

int32_t CollationElementIterator::expIndex [private]
 

Definition at line 337 of file coleitr.h.

UnicodeString CollationElementIterator::key [private]
 

Definition at line 338 of file coleitr.h.

const RuleBasedCollator * CollationElementIterator::orderAlias [private]
 

Definition at line 339 of file coleitr.h.

VectorOfInt * CollationElementIterator::ownBuffer [private]
 

ownBuffer wants to be a subobject, not a pointer, but that means exposing the internal class VectorOfInt by including the internal header "tables.h" -- not allowed! ownBuffer is a fixed-size 2-element vector that is used to handle Thai collation; bufferAlias points to ownBuffer in some situations.

[j159 - aliu]

Definition at line 326 of file coleitr.h.

VectorOfInt * CollationElementIterator::reorderBuffer [private]
 

reorderBuffer is created on demand, so it doesn't want to be a subobject -- pointer is fine.

It is created and bufferAlias is set to it under certain conditions. Once created, it is reused for the life of this object. Because of the implementation of VectorOfInt, it grows monotonically. [j159 - aliu]

Definition at line 335 of file coleitr.h.

Normalizer * CollationElementIterator::text [private]
 

Definition at line 314 of file coleitr.h.


The documentation for this class was generated from the following file:
Generated at Fri Dec 15 12:13:09 2000 for ICU 1.7 by doxygen1.2.3 written by Dimitri van Heesch, © 1997-2000