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

UnicodeSet Class Reference

A mutable set of Unicode characters. More...

#include <uniset.h>

Class diagram for UnicodeSet:

UnicodeFilter

List of all members.


Public Members

 UnicodeSet ()
Constructs an empty set. More...

 UnicodeSet (UChar32 start, UChar32 end)
Constructs a set containing the given range. More...

 UnicodeSet (const UnicodeString& pattern, UErrorCode& status)
Constructs a set from the given pattern. More...

 UnicodeSet (int8_t category, UErrorCode& status)
Constructs a set from the given Unicode character category. More...

 UnicodeSet (const UnicodeSet& o)
Constructs a set that is identical to the given UnicodeSet. More...

virtual ~UnicodeSet ()
Destructs the set. More...

UnicodeSet& operator= (const UnicodeSet& o)
Assigns this object to be a copy of another. More...

virtual UBool operator== (const UnicodeSet& o) const
Compares the specified object with this set for equality. More...

UBool operator!= (const UnicodeSet& o) const
Compares the specified object with this set for equality. More...

virtual UnicodeFilterclone () const
Returns a copy of this object. More...

virtual int32_t hashCode (void) const
Returns the hash code value for this set. More...

void set (UChar32 start, UChar32 end)
Make this object represent the range start - end. More...

virtual void applyPattern (const UnicodeString& pattern, UErrorCode& status)
Modifies this set to represent the set specified by the given pattern, optionally ignoring white space. More...

virtual UnicodeStringtoPattern (UnicodeString& result) const
Returns a string representation of this set. More...

virtual int32_t size (void) const
Returns the number of elements in this set (its cardinality), n, where 0 <= n <= 65536. More...

virtual UBool isEmpty (void) const
Returns true if this set contains no elements. More...

virtual UBool contains (UChar32 start, UChar32 end) const
Returns true if this set contains the specified range of chars. More...

virtual UBool contains (UChar32 c) const
Implement UnicodeFilter: Returns true if this set contains the specified char. More...

virtual UBool contains (UChar c) const
Implement UnicodeFilter: Returns true if this set contains the specified char. More...

virtual void add (UChar32 start, UChar32 end)
Adds the specified range to this set if it is not already present. More...

void add (UChar32 c)
Adds the specified character to this set if it is not already present. More...

virtual void retain (UChar32 start, UChar32 end)
Retain only the elements in this set that are contained in the specified range. More...

void retain (UChar32 c)
Retain the specified character from this set if it is present.

virtual void remove (UChar32 start, UChar32 end)
Removes the specified range from this set if it is present. More...

void remove (UChar32 c)
Removes the specified character from this set if it is present. More...

virtual void complement (void)
Inverts this set. More...

virtual void complement (UChar32 start, UChar32 end)
Complements the specified range in this set. More...

void complement (UChar32 c)
Complements the specified character in this set. More...

virtual UBool containsAll (const UnicodeSet& c) const
Returns true if the specified set is a subset of this set. More...

virtual void addAll (const UnicodeSet& c)
Adds all of the elements in the specified set to this set if they're not already present. More...

virtual void retainAll (const UnicodeSet& c)
Retains only the elements in this set that are contained in the specified set. More...

virtual void removeAll (const UnicodeSet& c)
Removes from this set all of its elements that are contained in the specified set. More...

virtual void complementAll (const UnicodeSet& c)
Complements in this set all elements contained in the specified set. More...

virtual void clear (void)
Removes all of the elements from this set. More...

virtual int32_t getRangeCount (void) const
Iteration method that returns the number of ranges contained in this set. More...

virtual UChar32 getRangeStart (int32_t index) const
Iteration method that returns the first character in the specified range of this set. More...

virtual UChar32 getRangeEnd (int32_t index) const
Iteration method that returns the last character in the specified range of this set. More...

virtual void compact ()
Reallocate this objects internal structures to take up the least possible space, without changing this object's value.


Static Public Members

const UChar32 MIN_VALUE
Minimum value that can be stored in a UnicodeSet.

const UChar32 MAX_VALUE
Maximum value that can be stored in a UnicodeSet.


Friends

class  TransliterationRuleParser
class  TransliterationRule

Detailed Description

A mutable set of Unicode characters.

Objects of this class represent character classes used in regular expressions. Such classes specify a subset of the set of all Unicode characters, which in this implementation is the characters from U+0000 to U+FFFF, ignoring surrogates.

This class supports two APIs. The first is modeled after Java 2's java.util.Set interface, although this class does not implement that interface. All methods of Set are supported, with the modification that they take a character range or single character instead of an Object, and they take a UnicodeSet instead of a Collection.

The second API is the applyPattern()/toPattern() API from the Format-derived classes. Unlike the methods that add characters, add categories, and control the logic of the set, the method applyPattern() sets all attributes of a UnicodeSet at once, based on a string pattern.

In addition, the set complement operation is supported through the complement() method.

Pattern syntax

Patterns are accepted by the constructors and the applyPattern() methods and returned by the toPattern() method. These patterns follow a syntax similar to that employed by version 8 regular expression character classes:

pattern := ('[' '^'? item* ']') | ('[:' '^'? category ':]')
item := char | (char '-' char) | pattern-expr
pattern-expr := pattern | pattern-expr pattern | pattern-expr op pattern
op := '&amp;' | '-'
special := '[' | ']' | '-'
char := any character that is not special
| ('\u005C'
any character)
| ('\u005Cu' hex hex hex hex)
hex := any character for which Character.digit(c, 16) returns a non-negative result
category := 'M' | 'N' | 'Z' | 'C' | 'L' | 'P' | 'S' | 'Mn' | 'Mc' | 'Me' | 'Nd' | 'Nl' | 'No' | 'Zs' | 'Zl' | 'Zp' | 'Cc' | 'Cf' | 'Cs' | 'Co' | 'Cn' | 'Lu' | 'Ll' | 'Lt' | 'Lm' | 'Lo' | 'Pc' | 'Pd' | 'Ps' | 'Pe' | 'Po' | 'Sm' | 'Sc' | 'Sk' | 'So'

Legend:
a := b a may be replaced by b
a? zero or one instance of a
a* one or more instances of a
a | b either a or b
'a' the literal string between the quotes

Any character may be preceded by a backslash in order to remove any special meaning. White space characters, as defined by Character.isWhitespace(), are ignored, unless they are escaped.

Patterns specify individual characters, ranges of characters, and Unicode character categories. When elements are concatenated, they specify their union. To complement a set, place a '^' immediately after the opening '[' or '[:'. In any other location, '^' has no special meaning.

Ranges are indicated by placing two a '-' between two characters, as in "a-z". This specifies the range of all characters from the left to the right, in Unicode order. If the left and right characters are the same, then the range consists of just that character. If the left character is greater than the right character it is a syntax error. If a '-' occurs as the first character after the opening '[' or '[^', or if it occurs as the last character before the closing ']', then it is taken as a literal. Thus "[a\-b]", "[-ab]", and "[ab-]" all indicate the same set of three characters, 'a', 'b', and '-'.

Sets may be intersected using the '&' operator or the asymmetric set difference may be taken using the '-' operator, for example, "[[:L:]&[\u0000-\u0FFF]]" indicates the set of all Unicode letters with values less than 4096. Operators ('&' and '|') have equal precedence and bind left-to-right. Thus "[[:L:]-[a-z]-[\u0100-\u01FF]]" is equivalent to "[[[:L:]-[a-z]]-[\u0100-\u01FF]]". This only really matters for difference; intersection is commutative.

[a]The set containing 'a'
[a-z]The set containing 'a' through 'z' and all letters in between, in Unicode order
[^a-z]The set containing all characters but 'a' through 'z', that is, U+0000 through 'a'-1 and 'z'+1 through U+FFFF
[[pat1][pat2]] The union of sets specified by pat1 and pat2
[[pat1]&[pat2]] The intersection of sets specified by pat1 and pat2
[[pat1]-[pat2]] The asymmetric difference of sets specified by pat1 and pat2
[:Lu:] The set of characters belonging to the given Unicode category, as defined by Character.getType(); in this case, Unicode uppercase letters
[:L:] The set of characters belonging to all Unicode categories starting wih 'L', that is, [[:Lu:][:Ll:][:Lt:][:Lm:][:Lo:]].

Character categories.

Character categories are specified using the POSIX-like syntax '[:Lu:]'. The complement of a category is specified by inserting '^' after the opening '[:'. The following category names are recognized. Actual determination of category data uses Unicode::getType(), so it reflects the underlying data used by Unicode.

 Normative
     Mn = Mark, Non-Spacing
     Mc = Mark, Spacing Combining
     Me = Mark, Enclosing
 
     Nd = Number, Decimal Digit
     Nl = Number, Letter
     No = Number, Other
 
     Zs = Separator, Space
     Zl = Separator, Line
     Zp = Separator, Paragraph
 
     Cc = Other, Control
     Cf = Other, Format
     Cs = Other, Surrogate
     Co = Other, Private Use
     Cn = Other, Not Assigned
 
 Informative
     Lu = Letter, Uppercase
     Ll = Letter, Lowercase
     Lt = Letter, Titlecase
     Lm = Letter, Modifier
     Lo = Letter, Other
 
     Pc = Punctuation, Connector
     Pd = Punctuation, Dash
     Ps = Punctuation, Open
     Pe = Punctuation, Close
     Pi = Punctuation, Initial quote
     Pf = Punctuation, Final quote
     Po = Punctuation, Other
 
     Sm = Symbol, Math
     Sc = Symbol, Currency
     Sk = Symbol, Modifier
     So = Symbol, Other
 

Author(s):
Alan Liu
Draft:

Definition at line 249 of file uniset.h.


Member Function Documentation

UnicodeSet::UnicodeSet ()

Constructs an empty set.

Draft:

UnicodeSet::UnicodeSet (UChar32 start, UChar32 end)

Constructs a set containing the given range.

If end > start then an empty set is created.

Parameters:
start   first character, inclusive, of range
end   last character, inclusive, of range

UnicodeSet::UnicodeSet (const UnicodeString & pattern, UErrorCode & status)

Constructs a set from the given pattern.

See the class description for the syntax of the pattern language.

Parameters:
pattern   a string specifying what characters are in the set
Exceptions:
code   >IllegalArgumentException if the pattern contains a syntax error.
Draft:

UnicodeSet::UnicodeSet (int8_t category, UErrorCode & status)

Constructs a set from the given Unicode character category.

Parameters:
category   an integer indicating the character category as returned by Character.getType().
Exceptions:
code   >IllegalArgumentException if the given category is invalid.
Draft:

UnicodeSet::UnicodeSet (const UnicodeSet & o)

Constructs a set that is identical to the given UnicodeSet.

Draft:

virtual UnicodeSet::~UnicodeSet () [virtual]

Destructs the set.

Draft:

UnicodeSet & UnicodeSet::operator= (const UnicodeSet & o)

Assigns this object to be a copy of another.

Draft:

virtual UBool UnicodeSet::operator== (const UnicodeSet & o) const [virtual]

Compares the specified object with this set for equality.

Returns true if the two sets have the same size, and every member of the specified set is contained in this set (or equivalently, every member of this set is contained in the specified set).

Parameters:
o   set to be compared for equality with this set.
Returns:
true if the specified set is equal to this set.
Draft:

UBool UnicodeSet::operator!= (const UnicodeSet & o) const [inline]

Compares the specified object with this set for equality.

Returns true if the specified set is not equal to this set.

Draft:

Definition at line 798 of file uniset.h.

virtual UnicodeFilter * UnicodeSet::clone () const [virtual]

Returns a copy of this object.

All UnicodeFilter objects have to support cloning in order to allow classes using UnicodeFilters, such as Transliterator, to implement cloning.

Draft:

Reimplemented from UnicodeFilter.

virtual int32_t UnicodeSet::hashCode (void) const [virtual]

Returns the hash code value for this set.

Returns:
the hash code value for this set.
See also:
Object::hashCode()
Draft:

void UnicodeSet::set (UChar32 start, UChar32 end)

Make this object represent the range start - end.

If end > start then this object is set to an an empty range.

Parameters:
start   first character in the set, inclusive @rparam end last character in the set, inclusive

virtual void UnicodeSet::applyPattern (const UnicodeString & pattern, UErrorCode & status) [virtual]

Modifies this set to represent the set specified by the given pattern, optionally ignoring white space.

See the class description for the syntax of the pattern language.

Parameters:
pattern   a string specifying what characters are in the set
Exceptions:
code   >IllegalArgumentException if the pattern contains a syntax error.
Draft:

virtual UnicodeString & UnicodeSet::toPattern (UnicodeString & result) const [virtual]

Returns a string representation of this set.

If the result of calling this function is passed to a UnicodeSet constructor, it will produce another set that is equal to this one.

Draft:

virtual int32_t UnicodeSet::size (void) const [virtual]

Returns the number of elements in this set (its cardinality), n, where 0 <= n <= 65536.

Returns:
the number of elements in this set (its cardinality).
Draft:

virtual UBool UnicodeSet::isEmpty (void) const [virtual]

Returns true if this set contains no elements.

Returns:
true if this set contains no elements.
Draft:

virtual UBool UnicodeSet::contains (UChar32 start, UChar32 end) const [virtual]

Returns true if this set contains the specified range of chars.

Returns:
true if this set contains the specified range of chars.
Draft:

virtual UBool UnicodeSet::contains (UChar32 c) const [virtual]

Implement UnicodeFilter: Returns true if this set contains the specified char.

Returns:
true if this set contains the specified char.
Draft:

Reimplemented from UnicodeFilter.

virtual UBool UnicodeSet::contains (UChar c) const [virtual]

Implement UnicodeFilter: Returns true if this set contains the specified char.

Returns:
true if this set contains the specified char.
Draft:

Reimplemented from UnicodeFilter.

virtual void UnicodeSet::add (UChar32 start, UChar32 end) [virtual]

Adds the specified range to this set if it is not already present.

If this set already contains the specified range, the call leaves this set unchanged. If end > start then an empty range is added, leaving the set unchanged. This is equivalent to a boolean logic OR, or a set UNION.

Parameters:
start   first character, inclusive, of range to be added to this set.
end   last character, inclusive, of range to be added to this set.
Draft:

void UnicodeSet::add (UChar32 c)

Adds the specified character to this set if it is not already present.

If this set already contains the specified character, the call leaves this set unchanged.

Draft:

virtual void UnicodeSet::retain (UChar32 start, UChar32 end) [virtual]

Retain only the elements in this set that are contained in the specified range.

If end > start then an empty range is retained, leaving the set empty. This is equivalent to a boolean logic AND, or a set INTERSECTION.

Parameters:
start   first character, inclusive, of range to be retained to this set.
end   last character, inclusive, of range to be retained to this set.

void UnicodeSet::retain (UChar32 c)

Retain the specified character from this set if it is present.

virtual void UnicodeSet::remove (UChar32 start, UChar32 end) [virtual]

Removes the specified range from this set if it is present.

The set will not contain the specified range once the call returns. If end > start then an empty range is removed, leaving the set unchanged.

Parameters:
start   first character, inclusive, of range to be removed from this set.
end   last character, inclusive, of range to be removed from this set.
Draft:

void UnicodeSet::remove (UChar32 c)

Removes the specified character from this set if it is present.

The set will not contain the specified range once the call returns.

Draft:

virtual void UnicodeSet::complement (void) [virtual]

Inverts this set.

This operation modifies this set so that its value is its complement. This is equivalent to complement(MIN_VALUE, MAX_VALUE).

Draft:

virtual void UnicodeSet::complement (UChar32 start, UChar32 end) [virtual]

Complements the specified range in this set.

Any character in the range will be removed if it is in this set, or will be added if it is not in this set. If end > start then an empty range is complemented, leaving the set unchanged. This is equivalent to a boolean logic XOR.

Parameters:
start   first character, inclusive, of range to be removed from this set.
end   last character, inclusive, of range to be removed from this set.

void UnicodeSet::complement (UChar32 c)

Complements the specified character in this set.

The character will be removed if it is in this set, or will be added if it is not in this set.

virtual UBool UnicodeSet::containsAll (const UnicodeSet & c) const [virtual]

Returns true if the specified set is a subset of this set.

Parameters:
c   set to be checked for containment in this set.
Returns:
true if this set contains all of the elements of the specified set.
Draft:

virtual void UnicodeSet::addAll (const UnicodeSet & c) [virtual]

Adds all of the elements in the specified set to this set if they're not already present.

This operation effectively modifies this set so that its value is the union of the two sets. The behavior of this operation is unspecified if the specified collection is modified while the operation is in progress.

Parameters:
c   set whose elements are to be added to this set.
See also:
add(char, char)
Draft:

virtual void UnicodeSet::retainAll (const UnicodeSet & c) [virtual]

Retains only the elements in this set that are contained in the specified set.

In other words, removes from this set all of its elements that are not contained in the specified set. This operation effectively modifies this set so that its value is the intersection of the two sets.

Parameters:
c   set that defines which elements this set will retain.
Draft:

virtual void UnicodeSet::removeAll (const UnicodeSet & c) [virtual]

Removes from this set all of its elements that are contained in the specified set.

This operation effectively modifies this set so that its value is the asymmetric set difference of the two sets.

Parameters:
c   set that defines which elements will be removed from this set.
Draft:

virtual void UnicodeSet::complementAll (const UnicodeSet & c) [virtual]

Complements in this set all elements contained in the specified set.

Any character in the other set will be removed if it is in this set, or will be added if it is not in this set.

Parameters:
c   set that defines which elements will be xor'ed from this set.

virtual void UnicodeSet::clear (void) [virtual]

Removes all of the elements from this set.

This set will be empty after this call returns.

Draft:

virtual int32_t UnicodeSet::getRangeCount (void) const [virtual]

Iteration method that returns the number of ranges contained in this set.

See also:
getRangeStart() , getRangeEnd()

virtual UChar32 UnicodeSet::getRangeStart (int32_t index) const [virtual]

Iteration method that returns the first character in the specified range of this set.

See also:
getRangeCount() , getRangeEnd()

virtual UChar32 UnicodeSet::getRangeEnd (int32_t index) const [virtual]

Iteration method that returns the last character in the specified range of this set.

See also:
getRangeStart() , getRangeEnd()

virtual void UnicodeSet::compact () [virtual]

Reallocate this objects internal structures to take up the least possible space, without changing this object's value.


Friends And Related Function Documentation

friend class TransliterationRuleParser [friend]

Definition at line 672 of file uniset.h.

friend class TransliterationRule [friend]

Definition at line 673 of file uniset.h.


Member Data Documentation

const UChar32 UnicodeSet::MIN_VALUE [static]

Minimum value that can be stored in a UnicodeSet.

Definition at line 295 of file uniset.h.

const UChar32 UnicodeSet::MAX_VALUE [static]

Maximum value that can be stored in a UnicodeSet.

Definition at line 300 of file uniset.h.


The documentation for this class was generated from the following file:
Generated at Wed Aug 16 16:05:54 2000 for ICU1.6 by doxygen 1.0.0 written by Dimitri van Heesch, © 1997-1999