18#if U_SHOW_CPLUSPLUS_API
37class UnicodeSetStringSpan;
39class RuleCharacterIterator;
183 static constexpr uint8_t kIsBogus = 1;
190 BMPSet *bmpSet =
nullptr;
192 int32_t bufferCapacity = 0;
203 char16_t *pat =
nullptr;
206 UVector* strings_ =
nullptr;
207 UnicodeSetStringSpan *stringSpan =
nullptr;
226 inline UBool isBogus()
const;
284#ifndef U_HIDE_INTERNAL_API
317#ifndef U_HIDE_INTERNAL_API
435 inline static const UnicodeSet* fromUSet(
const USet* uset U_LIFETIME_BOUND);
444 inline USet* toUSet() U_LIFETIME_BOUND;
453 inline const
USet* toUSet() const U_LIFETIME_BOUND;
468 inline
UBool isFrozen() const;
532#ifndef U_HIDE_INTERNAL_API
610 UBool escapeUnprintable =
false)
const override;
915 UBool incremental)
override;
941 int32_t start, int32_t limit,
953 int32_t findCodePoint(
UChar32 c)
const;
1010 inline U_HEADER_NESTED_NAMESPACE::USetCodePoints
codePoints() const U_LIFETIME_BOUND {
1011 return U_HEADER_NESTED_NAMESPACE::USetCodePoints(toUSet());
1036 inline U_HEADER_NESTED_NAMESPACE::USetRanges
ranges() const U_LIFETIME_BOUND {
1037 return U_HEADER_NESTED_NAMESPACE::USetRanges(toUSet());
1060 inline U_HEADER_NESTED_NAMESPACE::USetStrings
strings() const U_LIFETIME_BOUND {
1061 return U_HEADER_NESTED_NAMESPACE::USetStrings(toUSet());
1088 inline U_HEADER_NESTED_NAMESPACE::USetElementIterator
begin() const U_LIFETIME_BOUND {
1089 return U_HEADER_NESTED_NAMESPACE::USetElements(toUSet()).begin();
1100 inline U_HEADER_NESTED_NAMESPACE::USetElementIterator
end() const U_LIFETIME_BOUND {
1101 return U_HEADER_NESTED_NAMESPACE::USetElements(toUSet()).end();
1442 int32_t getRangeCount() const;
1510 int32_t serialize(uint16_t *dest, int32_t destCapacity,
UErrorCode& ec) const;
1547 friend class USetAccess;
1549 const
UnicodeString* getString(int32_t index) const U_LIFETIME_BOUND;
1562 virtual
UBool matchesIndexValue(uint8_t v) const override;
1565 friend class RBBIRuleScanner;
1585 RuleCharacterIterator &chars,
1601 static
UnicodeSet parseUnicodeSet(Lexer &lexer,
1613 bool &containsSetOperation,
1616 void parseMutation(Lexer &lexer,
1621 bool &containsSetOperation,
1624 void parseSetOperations(Lexer &lexer,
1631 static
UnicodeSet parseElements(Lexer &lexer,
1636 void closeOverCaseInsensitive(
bool simple);
1637 void closeOverAddCaseMappings();
1643 static int32_t nextCapacity(int32_t minCapacity);
1645 bool ensureCapacity(int32_t newLen);
1647 bool ensureBufferCapacity(int32_t newLen);
1652 int32_t stringsSize() const;
1656 UBool escapeUnprintable) const;
1659 UBool escapeUnprintable) const;
1666 UBool escapeUnprintable);
1672 void exclusiveOr(const
UChar32* other, int32_t otherLen, int8_t polarity);
1674 void add(const
UChar32* other, int32_t otherLen, int8_t polarity);
1676 void retain(const
UChar32* other, int32_t otherLen, int8_t polarity);
1733 typedef
UBool (*Filter)(
UChar32 codePoint,
void* context);
1744 void applyFilter(Filter filter,
1753 setPattern(newPat.getBuffer(), newPat.length());
1755 void setPattern(
const char16_t *newPat, int32_t newPatLen);
1759 void releasePattern();
1770inline UBool UnicodeSet::isFrozen()
const {
1771 return bmpSet !=
nullptr || stringSpan !=
nullptr;
1775 return !containsNone(start, end);
1779 return !containsNone(s);
1783 return !containsNone(s);
1786inline UBool UnicodeSet::isBogus()
const {
1787 return fFlags & kIsBogus;
1795 return reinterpret_cast<const UnicodeSet *
>(uset);
1798inline USet* UnicodeSet::toUSet() U_LIFETIME_BOUND {
1799 return reinterpret_cast<USet*
>(
this);
1802inline const USet* UnicodeSet::toUSet() const U_LIFETIME_BOUND {
1803 return reinterpret_cast<const USet *
>(
this);
1807 int32_t sLength=s.
length();
1810 }
else if(start>sLength) {
1813 return start+span(s.
getBuffer()+start, sLength-start, spanCondition);
1817 int32_t sLength=s.
length();
1820 }
else if(limit>sLength) {
1823 return spanBack(s.
getBuffer(), limit, spanCondition);
#define INITIAL_CAPACITY
The initial size of an array if it is unspecified.
ParsePosition is a simple class used by Format and its subclasses to keep track of the current positi...
Replaceable is an abstract base class representing a string of characters that supports the replaceme...
An interface that defines both lookup protocol and parsing of symbolic names.
UnicodeFilter defines a protocol for selecting a subset of the full range (U+0000 to U+10FFFF) of Uni...
UnicodeSetIterator iterates over the contents of a UnicodeSet.
A mutable set of Unicode characters and multicharacter strings.
U_HEADER_NESTED_NAMESPACE::USetStrings strings() const
Returns a C++ "range" for iterating over the empty and multi-character strings of this set.
UnicodeSet & operator=(const UnicodeSet &o)
Assigns this object to be a copy of another.
UnicodeSet & addAll(const UnicodeString &s)
Adds each of the characters in this string to the set.
UnicodeSet()
Constructs an empty set.
int32_t spanBackUTF8(const char *s, int32_t length, USetSpanCondition spanCondition) const
Returns the start of the trailing substring of the input string which consists only of characters and...
int32_t size() const
Returns the number of elements in this set (its cardinality).
UnicodeSet(UChar32 start, UChar32 end)
Constructs a set containing the given range.
static UnicodeSet * createFromAll(const UnicodeString &s)
Makes a set from each of the characters in the string.
int32_t spanUTF8(const char *s, int32_t length, USetSpanCondition spanCondition) const
Returns the length of the initial substring of the input string which consists only of characters and...
UnicodeSet & complementAll(const UnicodeString &s)
Complement EACH of the characters in this string.
void setToBogus()
Make this UnicodeSet object invalid.
virtual UnicodeSet * clone() const override
Returns a copy of this object.
UnicodeSet & applyPropertyAlias(const UnicodeString &prop, const UnicodeString &value, UErrorCode &ec)
Modifies this set to contain those code points which have the given value for the given property.
int32_t hashCode() const
Returns the hash code value for this set.
virtual void addMatchSetTo(UnicodeSet &toUnionTo) const override
Implementation of UnicodeMatcher API.
UnicodeSet & add(const UnicodeString &s)
Adds the specified multicharacter to this set if it is not already present.
UnicodeSet & applyPattern(const UnicodeString &pattern, uint32_t options, const SymbolTable *symbols, UErrorCode &status)
Modifies this set to represent the set specified by the given pattern, optionally ignoring Unicode Pa...
int32_t indexOf(UChar32 c) const
Returns the index of the given character within this set, where the set is ordered by ascending code ...
U_HEADER_NESTED_NAMESPACE::USetCodePoints codePoints() const
Returns a C++ "range" for iterating over the code points of this set.
U_HEADER_NESTED_NAMESPACE::USetElementIterator end() const
UnicodeSet(const UnicodeString &pattern, ParsePosition &pos, uint32_t options, const SymbolTable *symbols, UErrorCode &status)
Constructs a set from the given pattern.
U_HEADER_NESTED_NAMESPACE::USetElementIterator begin() const
Returns a C++ iterator for iterating over all of the elements of this set.
U_HEADER_NESTED_NAMESPACE::USetRanges ranges() const
Returns a C++ "range" for iterating over the code point ranges of this set.
UBool containsNone(const UnicodeString &s) const
Returns true if this set contains none of the characters of the given string.
UnicodeSet(const UnicodeSet &o)
Constructs a set that is identical to the given UnicodeSet.
virtual ~UnicodeSet()
Destructs the set.
UnicodeSet & retain(UChar32 c)
Retain the specified character from this set if it is present.
UnicodeSet & add(UChar32 start, UChar32 end)
Adds the specified range to this set if it is not already present.
int32_t span(const char16_t *s, int32_t length, USetSpanCondition spanCondition) const
Returns the length of the initial substring of the input string which consists only of characters and...
UnicodeSet & retainAll(const UnicodeString &s)
Retains EACH of the characters in this string.
UChar32 charAt(int32_t index) const
Returns the character at the given index within this set, where the set is ordered by ascending code ...
UBool containsNone(UChar32 start, UChar32 end) const
Returns true if this set contains none of the characters of the given range.
UBool containsAll(const UnicodeString &s) const
Returns true if this set contains all the characters of the given string.
UnicodeSet & removeAll(const UnicodeString &s)
Remove EACH of the characters in this string.
UBool contains(const UnicodeString &s) const
Returns true if this set contains the given multicharacter string.
UMatchDegree matches(const Replaceable &text, int32_t &offset, int32_t limit, UBool incremental) override
Implement UnicodeMatcher::matches()
static UnicodeSet * createFrom(const UnicodeString &s)
Makes a set from a multicharacter string.
bool operator==(const UnicodeSet &o) const
Compares the specified object with this set for equality.
UnicodeSet(const UnicodeString &pattern, UErrorCode &status)
Constructs a set from the given pattern.
UnicodeSet & remove(UChar32 c)
Removes the specified character from this set if it is present.
virtual UnicodeString & toPattern(UnicodeString &result, UBool escapeUnprintable=false) const override
Returns a string representation of this set.
UnicodeSet & add(UChar32 c)
Adds the specified character to this set if it is not already present.
UnicodeSet & applyIntPropertyValue(UProperty prop, int32_t value, UErrorCode &ec)
Modifies this set to contain those code points which have the given value for the given binary or enu...
int32_t spanBack(const char16_t *s, int32_t length, USetSpanCondition spanCondition) const
Returns the start of the trailing substring of the input string which consists only of characters and...
UBool isEmpty() const
Returns true if this set contains no elements.
UnicodeSet & remove(const UnicodeString &s)
Removes the specified string from this set if it is present.
UBool containsAll(const UnicodeSet &c) const
Returns true if this set contains all the characters and strings of the given set.
UnicodeSet & complement()
This is equivalent to complement(MIN_VALUE, MAX_VALUE).
UnicodeSet & applyPattern(const UnicodeString &pattern, ParsePosition &pos, uint32_t options, const SymbolTable *symbols, UErrorCode &status)
Parses the given pattern, starting at the given position.
virtual UBool contains(UChar32 c) const override
Returns true if this set contains the given character.
UnicodeSet & retain(const UnicodeString &s)
Retains only the specified string from this set if it is present.
UnicodeSet(const uint16_t buffer[], int32_t bufferLen, ESerialization serialization, UErrorCode &status)
Constructs a set from the output of serialize().
UnicodeSet(const UnicodeString &pattern, uint32_t options, const SymbolTable *symbols, UErrorCode &status)
Constructs a set from the given pattern.
UnicodeSet & retain(UChar32 start, UChar32 end)
Retain only the elements in this set that are contained in the specified range.
UBool contains(UChar32 start, UChar32 end) const
Returns true if this set contains every character of the given range.
UnicodeSet & remove(UChar32 start, UChar32 end)
Removes the specified range from this set if it is present.
UBool containsNone(const UnicodeSet &c) const
Returns true if this set contains none of the characters and strings of the given set.
UnicodeString is a string class that stores Unicode characters directly and provides similar function...
int32_t length() const
Return the length of the UnicodeString object.
char16_t * getBuffer(int32_t minCapacity)
Get a read/write pointer to the internal buffer.
U_COMMON_API UBool operator==(const StringPiece &x, const StringPiece &y)
Global operator == for StringPiece.
UMatchDegree
Constants returned by UnicodeMatcher::matches() indicating the degree of match.
bool operator!=(const StringPiece &x, const StringPiece &y)
Global operator != for StringPiece.
UProperty
Selection constants for Unicode properties.
C API: This file defines an abstract map from Unicode code points to integer values.
int32_t UChar32
Define UChar32 as a type for single Unicode code points.
int8_t UBool
The ICU boolean type, a signed-byte integer.
void * UClassID
UClassID is used to identify classes without using the compiler's RTTI.
USetSpanCondition
Argument values for whether span() and similar functions continue while the current character is cont...
struct USet USet
USet is the C API type corresponding to C++ class UnicodeSet.
Basic definitions for ICU, for both C and C++ APIs.
UErrorCode
Standard ICU4C error code type, a substitute for exceptions.
#define U_COMMON_API
Set to export library symbols from inside the common library, and to import them from outside.