#include <coleitr.h>
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 | |
Normalizer* | text |
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 RuleBasedCollator* | orderAlias |
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) |
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:
And in German,
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.
Definition at line 93 of file coleitr.h.
|
Destructor.
|
|
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().
|
|
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().
|
|
Copy constructor.
|
|
Default constructor.
|
|
Copy constructor.
|
|
Return the maximum length of any expansion sequences that end with the specified comparison order.
|
|
Gets the offset of the currently processed character in the source string.
|
|
Checks if a comparison order is ignorable.
|
|
Determine if a character is a Thai base consonant.
|
|
Determine if a character is a Thai vowel (which sorts after its base consonant).
|
|
|
|
Gets the ordering priority of the next character in the string.
|
|
Gets the ordering priority of the next contracting character in the string.
|
|
Returns true if "other" is not the same as "this".
|
|
Assignment operator.
|
|
Returns true if "other" is the same as "this".
|
|
Gets the ordering priority of the previous contracting character in the string.
|
|
Get the ordering priority of the previous collation element in the string.
|
|
Gets the primary order of a collation order.
Definition at line 349 of file coleitr.h. Referenced by isIgnorable(). |
|
Resets the cursor to the beginning of the string.
|
|
Gets the secondary order of a collation order.
|
|
Sets the offset of the currently processed character in the source string.
|
|
Sets the source string.
|
|
Sets the source string.
|
|
Gets the comparison order in the desired strength. Ignore the other differences.
|
|
Gets the tertiary order of a collation order.
|
|
|
|
|
|
NULLORDER indicates the iterator has consumed the last element.
|
|
|
|
|
|
|
|
|
|
|
|
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] |
|
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] |
|
|