67 #if U_SHOW_CPLUSPLUS_API
69 #if !UCONFIG_NO_COLLATION
78 struct CollationCacheEntry;
80 struct CollationSettings;
81 struct CollationTailoring;
89 class CollationElementIterator;
91 class SortKeyByteSink;
168 #ifndef U_HIDE_INTERNAL_API
315 const char16_t* target, int32_t targetLength,
384 int32_t sourceLength,
395 #ifndef U_FORCE_HIDE_DEPRECATED_API
423 #ifndef U_HIDE_DEPRECATED_API
468 #ifndef U_HIDE_DEPRECATED_API
554 #ifndef U_FORCE_HIDE_DEPRECATED_API
642 int32_t resultLength)
const override;
661 int32_t sourceLength,
663 int32_t resultLength)
const override;
679 int32_t destCapacity,
694 int32_t reorderCodesLength,
702 const char* right, int32_t rightLength,
750 #ifndef U_HIDE_INTERNAL_API
838 void adoptTailoring(CollationTailoring *t,
UErrorCode &errorCode);
842 const char16_t *right, int32_t rightLength,
845 const uint8_t *right, int32_t rightLength,
848 void writeSortKey(
const char16_t *s, int32_t length,
849 SortKeyByteSink &sink,
UErrorCode &errorCode)
const;
851 void writeIdenticalLevel(
const char16_t *s,
const char16_t *limit,
852 SortKeyByteSink &sink,
UErrorCode &errorCode)
const;
854 const CollationSettings &getDefaultSettings()
const;
856 void setAttributeDefault(int32_t attribute) {
857 explicitlySetAttributes &= ~(
static_cast<uint32_t
>(1) << attribute);
859 void setAttributeExplicitly(int32_t attribute) {
860 explicitlySetAttributes |=
static_cast<uint32_t
>(1) << attribute;
862 UBool attributeHasBeenSetExplicitly(int32_t attribute)
const {
864 return (explicitlySetAttributes & (
static_cast<uint32_t
>(1) << attribute)) != 0;
876 static void U_CALLCONV computeMaxExpansions(
const CollationTailoring *t,
UErrorCode &errorCode);
879 void setFastLatinOptions(CollationSettings &ownedSettings)
const;
881 const CollationData *data;
882 const CollationSettings *settings;
883 const CollationTailoring *tailoring;
884 const CollationCacheEntry *cacheEntry;
886 uint32_t explicitlySetAttributes;
888 UBool actualLocaleIsSameAsValid;
Abstract class that defines an API for iteration on text objects.
The CollationElementIterator class is used as an iterator to walk through each character of an inte...
Collation keys are generated by the Collator class.
The Collator class performs locale-sensitive string comparison.
virtual EComparisonResult compare(const UnicodeString &source, const UnicodeString &target) const
The comparison function compares the character data stored in two different strings.
static Collator * fromUCollator(UCollator *uc)
ECollationStrength
Base letter represents a primary difference.
A Locale object represents a specific geographical, political, or cultural region.
The RuleBasedCollator class provides the implementation of Collator, using data-driven tables.
U_I18N_API RuleBasedCollator(const UnicodeString &rules, ECollationStrength collationStrength, UColAttributeValue decompositionMode, UErrorCode &status)
RuleBasedCollator constructor.
virtual U_I18N_API uint32_t getVariableTop(UErrorCode &status) const override
Gets the variable top value of a Collator.
virtual U_I18N_API UCollationResult compare(const UnicodeString &source, const UnicodeString &target, int32_t length, UErrorCode &status) const override
Does the same thing as compare but limits the comparison to a specified length.
virtual U_I18N_API UColAttributeValue getAttribute(UColAttribute attr, UErrorCode &status) const override
Universal attribute getter.
virtual U_I18N_API UCollationResult compare(UCharIterator &sIter, UCharIterator &tIter, UErrorCode &status) const override
Compares two strings using the Collator.
virtual U_I18N_API CollationKey & getCollationKey(const char16_t *source, int32_t sourceLength, CollationKey &key, UErrorCode &status) const override
Transforms a specified region of the string into a series of characters that can be compared with Col...
virtual U_I18N_API int32_t hashCode() const override
Generates the hash code for the rule-based collation object.
static RuleBasedCollator * rbcFromUCollator(UCollator *uc)
static const RuleBasedCollator * rbcFromUCollator(const UCollator *uc)
virtual U_I18N_API void setAttribute(UColAttribute attr, UColAttributeValue value, UErrorCode &status) override
Universal attribute setter.
virtual U_I18N_API UClassID getDynamicClassID() const override
Returns a unique class ID POLYMORPHICALLY.
virtual void setLocales(const Locale &requestedLocale, const Locale &validLocale, const Locale &actualLocale) override
Used internally by registration to define the requested and valid locales.
virtual U_I18N_API uint32_t setVariableTop(const char16_t *varTop, int32_t len, UErrorCode &status) override
Sets the variable top to the primary weight of the specified string.
virtual U_I18N_API int32_t internalNextSortKeyPart(UCharIterator *iter, uint32_t state[2], uint8_t *dest, int32_t count, UErrorCode &errorCode) const override
Implements ucol_nextSortKeyPart().
U_I18N_API void internalGetCEs(const UnicodeString &str, UVector64 &ces, UErrorCode &errorCode) const
Appends the CEs for the string to the vector.
U_I18N_API RuleBasedCollator & operator=(const RuleBasedCollator &other)
Assignment operator.
virtual U_I18N_API int32_t getSortKey(const UnicodeString &source, uint8_t *result, int32_t resultLength) const override
Get the sort key as an array of bytes from a UnicodeString.
U_I18N_API RuleBasedCollator(const UnicodeString &rules, UColAttributeValue decompositionMode, UErrorCode &status)
RuleBasedCollator constructor.
virtual U_I18N_API Collator & setMaxVariable(UColReorderCode group, UErrorCode &errorCode) override
Sets the variable top to the top of the specified reordering group.
U_I18N_API RuleBasedCollator(const RuleBasedCollator &other)
Copy constructor.
U_I18N_API CollationElementIterator * createCollationElementIterator(const CharacterIterator &source) const
Creates a collation element iterator for the source.
virtual U_I18N_API CollationKey & getCollationKey(const UnicodeString &source, CollationKey &key, UErrorCode &status) const override
Transforms the string into a series of characters that can be compared with CollationKey....
U_I18N_API void internalBuildTailoring(const UnicodeString &rules, int32_t strength, UColAttributeValue decompositionMode, UParseError *outParseError, UnicodeString *outReason, UErrorCode &errorCode)
Implements from-rule constructors, and ucol_openRules().
U_I18N_API uint8_t * cloneRuleData(int32_t &length, UErrorCode &status) const
Do not use this method: The caller and the ICU library might use different heaps.
virtual U_I18N_API UCollationResult internalCompareUTF8(const char *left, int32_t leftLength, const char *right, int32_t rightLength, UErrorCode &errorCode) const override
Implements ucol_strcollUTF8().
virtual U_I18N_API UCollationResult compare(const char16_t *source, int32_t sourceLength, const char16_t *target, int32_t targetLength, UErrorCode &status) const override
The comparison function compares the character data stored in two different string arrays.
virtual U_I18N_API int32_t getReorderCodes(int32_t *dest, int32_t destCapacity, UErrorCode &status) const override
Retrieves the reordering codes for this collator.
virtual U_I18N_API Locale getLocale(ULocDataLocaleType type, UErrorCode &status) const override
Gets the locale of the Collator.
virtual U_I18N_API int32_t getSortKey(const char16_t *source, int32_t sourceLength, uint8_t *result, int32_t resultLength) const override
Get the sort key as an array of bytes from a char16_t buffer.
virtual U_I18N_API UColReorderCode getMaxVariable() const override
Returns the maximum reordering group whose characters are affected by UCOL_ALTERNATE_HANDLING.
virtual U_I18N_API void setVariableTop(uint32_t varTop, UErrorCode &status) override
Sets the variable top to the specified primary weight.
virtual U_I18N_API int32_t internalGetShortDefinitionString(const char *locale, char *buffer, int32_t capacity, UErrorCode &status) const override
Get the short definition string for a collator.
U_I18N_API int32_t getMaxExpansion(int32_t order) const
Returns the maximum length of any expansion sequences that end with the specified comparison order.
U_I18N_API RuleBasedCollator(const UnicodeString &rules, UErrorCode &status)
RuleBasedCollator constructor.
U_I18N_API void internalGetContractionsAndExpansions(UnicodeSet *contractions, UnicodeSet *expansions, UBool addPrefixes, UErrorCode &errorCode) const
Implements ucol_getContractionsAndExpansions().
virtual U_I18N_API RuleBasedCollator * clone() const override
Makes a copy of this object.
U_I18N_API RuleBasedCollator(const uint8_t *bin, int32_t length, const RuleBasedCollator *base, UErrorCode &status)
Opens a collator from a collator binary image created using cloneBinary.
virtual U_I18N_API UCollationResult compareUTF8(const StringPiece &source, const StringPiece &target, UErrorCode &status) const override
Compares two UTF-8 strings using the Collator.
virtual U_I18N_API UCollationResult compare(const UnicodeString &source, const UnicodeString &target, UErrorCode &status) const override
The comparison function compares the character data stored in two different strings.
virtual U_I18N_API void getVersion(UVersionInfo info) const override
Gets the version information for a Collator.
U_I18N_API RuleBasedCollator()
Only for use in ucol_openRules().
virtual U_I18N_API uint32_t setVariableTop(const UnicodeString &varTop, UErrorCode &status) override
Sets the variable top to the primary weight of the specified string.
U_I18N_API CollationElementIterator * createCollationElementIterator(const UnicodeString &source) const
Creates a collation element iterator for the source string.
U_I18N_API const UnicodeString & getRules() const
Gets the tailoring rules for this collator.
virtual U_I18N_API UnicodeSet * getTailoredSet(UErrorCode &status) const override
Get a UnicodeSet that contains all the characters and sequences tailored in this collator.
virtual U_I18N_API ~RuleBasedCollator()
Destructor.
static U_I18N_API UClassID getStaticClassID()
Returns the class ID for this class.
U_I18N_API int32_t cloneBinary(uint8_t *buffer, int32_t capacity, UErrorCode &status) const
Creates a binary image of a collator.
U_I18N_API void getRules(UColRuleOption delta, UnicodeString &buffer) const
Returns current rules.
U_I18N_API const char * internalGetLocaleID(ULocDataLocaleType type, UErrorCode &errorCode) const
Implements ucol_getLocaleByType().
U_I18N_API void internalAddContractions(UChar32 c, UnicodeSet &set, UErrorCode &errorCode) const
Adds the contractions that start with character c to the set.
virtual U_I18N_API void setReorderCodes(const int32_t *reorderCodes, int32_t reorderCodesLength, UErrorCode &status) override
Sets the ordering of scripts for this collator.
virtual U_I18N_API bool operator==(const Collator &other) const override
Returns true if argument is the same as this object.
U_I18N_API RuleBasedCollator(const UnicodeString &rules, ECollationStrength collationStrength, UErrorCode &status)
RuleBasedCollator constructor.
U_I18N_API RuleBasedCollator(const UnicodeString &rules, UParseError &parseError, UnicodeString &reason, UErrorCode &errorCode)
TODO: document & propose as public API.
A string-like object that points to a sized piece of memory.
A mutable set of Unicode characters and multicharacter strings.
UnicodeString is a string class that stores Unicode characters directly and provides similar function...
C++ API: Collation Service.
C++ API: Locale ID object.
C API for code unit iteration.
A UParseError struct is used to returned detailed information about parsing errors.
struct UCollator UCollator
structure representing a collator object instance
UColRuleOption
Options for retrieving the rule string.
UColAttribute
Attributes that collation service understands.
@ UCOL_ATTRIBUTE_COUNT
One more than the highest normal UColAttribute value.
UCollationResult
UCOL_LESS is returned if source string is compared to be less than target string in the ucol_strcoll(...
UColAttributeValue
Enum containing attribute values for controlling collation behavior.
UColReorderCode
Enum containing the codes for reordering segments of the collation table that are not script codes.
C API: Unicode Character Iteration.
ULocDataLocaleType
Constants for *_getLocale() Allow user to select whether she wants information on requested,...
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.
Basic definitions for ICU, for both C and C++ APIs.
UErrorCode
Standard ICU4C error code type, a substitute for exceptions.
#define U_I18N_API_CLASS
Set to export library symbols from inside the i18n library, and to import them from outside,...
#define U_I18N_API
Set to export library symbols from inside the i18n library, and to import them from outside.
uint8_t UVersionInfo[U_MAX_VERSION_LENGTH]
The binary form of a version on ICU APIs is an array of 4 uint8_t.