15#if !UCONFIG_NO_COLLATION
23#if U_SHOW_CPLUSPLUS_API
104 UCOL_CE_STRENGTH_LIMIT,
131#ifndef U_HIDE_DEPRECATED_API
204#ifndef U_HIDE_DEPRECATED_API
324#ifndef U_HIDE_DEPRECATED_API
360#ifndef U_FORCE_HIDE_DEPRECATED_API
450#ifndef U_HIDE_DEPRECATED_API
491#ifndef U_HIDE_DEPRECATED_API
524 USet *contractions,
USet *expansions,
540#if U_SHOW_CPLUSPLUS_API
577 int32_t sourceLength,
579 int32_t targetLength);
603 int32_t sourceLength,
605 int32_t targetLength,
624 const UChar *source, int32_t sourceLength,
625 const UChar *target, int32_t targetLength);
643 const UChar *source, int32_t sourceLength,
644 const UChar *target, int32_t targetLength);
662 const UChar *source, int32_t sourceLength,
663 const UChar *target, int32_t targetLength);
727 int32_t destCapacity,
771 const int32_t* reorderCodes,
772 int32_t reorderCodesLength,
797 int32_t destCapacity,
816 int32_t resultLength,
828U_CAPI const char* U_EXPORT2
842#if !UCONFIG_NO_SERVICE
936 const char* keyword,
const char* locale,
951#ifndef U_HIDE_DEPRECATED_API
1031 const UChar *source,
1032 int32_t sourceLength,
1034 int32_t resultLength);
1061 uint8_t *dest, int32_t count,
1078#ifndef U_HIDE_DEPRECATED_API
1126 int32_t sourceLength,
1128 uint32_t noOfLevels,
1130 int32_t resultLength,
1203 const uint8_t *src2, int32_t src2Length,
1204 uint8_t *dest, int32_t destCapacity);
1263#ifndef U_HIDE_DEPRECATED_API
1286 const UChar *varTop, int32_t len,
1303#ifndef U_HIDE_DEPRECATED_API
1334#ifndef U_HIDE_DEPRECATED_API
1362 int32_t *pBufferSize,
1369#define U_COL_SAFECLONE_BUFFERSIZE 1
1391#ifndef U_HIDE_DEPRECATED_API
1424U_CAPI const char * U_EXPORT2
1440#ifndef U_HIDE_INTERNAL_API
1479 UBool forceDefaults,
1497 uint8_t *buffer, int32_t capacity,
1522#if U_SHOW_CPLUSPLUS_API || U_SHOW_CPLUSPLUS_HEADER_API
1524#include <functional>
1525#include <string_view>
1526#include <type_traits>
1532namespace U_HEADER_ONLY_NAMESPACE {
1534#ifndef U_HIDE_DRAFT_API
1552 typename T,
typename U,
1553 typename = std::enable_if_t<ConvertibleToU16StringView<T> && ConvertibleToU16StringView<U>>>
1555 return match(UnicodeString::readOnlyAlias(lhs), UnicodeString::readOnlyAlias(rhs));
1559 bool operator()(std::string_view lhs, std::string_view rhs)
const {
1560 return match(lhs, rhs);
1563#if defined(__cpp_char8_t)
1565 bool operator()(std::u8string_view lhs, std::u8string_view rhs)
const {
1566 return match(lhs, rhs);
1571 bool match(UnicodeString lhs, UnicodeString rhs)
const {
1575 toUCharPtr(lhs.getBuffer()), lhs.length(),
1576 toUCharPtr(rhs.getBuffer()), rhs.length()),
1580 bool match(StringPiece lhs, StringPiece rhs)
const {
1585 lhs.data(), lhs.length(),
1586 rhs.data(), rhs.length(),
1592 static constexpr Compare<UCollationResult> compare{};
C++ API: char16_t pointer wrappers with implicit conversion from bit-compatible raw pointer types.
"Smart pointer" class, closes a UCollator via ucol_close().
C++ API: "Smart pointers" for use with and in ICU4C C++ code.
#define U_DEFINE_LOCAL_OPEN_POINTER(LocalPointerClassName, Type, closeFunction)
"Smart pointer" definition macro, deletes objects via the closeFunction.
C API: Parse Error Information.
C++ API: StringPiece: Read-only byte string wrapper class.
C API for code unit iteration.
A UParseError struct is used to returned detailed information about parsing errors.
U_CAPI void ucol_setMaxVariable(UCollator *coll, UColReorderCode group, UErrorCode *pErrorCode)
Sets the variable top to the top of the specified reordering group.
uint32_t ucol_setVariableTop(UCollator *coll, const UChar *varTop, int32_t len, UErrorCode *status)
Sets the variable top to the primary weight of the specified string.
U_CAPI int32_t ucol_getRulesEx(const UCollator *coll, UColRuleOption delta, UChar *buffer, int32_t bufferLen)
Returns current rules.
U_CAPI void ucol_getVersion(const UCollator *coll, UVersionInfo info)
Gets the version information for a Collator.
U_CAPI void ucol_getContractionsAndExpansions(const UCollator *coll, USet *contractions, USet *expansions, UBool addPrefixes, UErrorCode *status)
Get a set containing the expansions defined by the collator.
U_CAPI uint32_t ucol_getVariableTop(const UCollator *coll, UErrorCode *status)
Gets the variable top value of a Collator.
U_CAPI UColAttributeValue ucol_getAttribute(const UCollator *coll, UColAttribute attr, UErrorCode *status)
Universal attribute getter.
U_CAPI const char * ucol_getLocaleByType(const UCollator *coll, ULocDataLocaleType type, UErrorCode *status)
gets the locale name of the collator.
U_CAPI void ucol_setStrength(UCollator *coll, UCollationStrength strength)
Set the collation strength used in a UCollator.
U_CAPI int32_t ucol_getUnsafeSet(const UCollator *coll, USet *unsafe, UErrorCode *status)
Calculates the set of unsafe code points, given a collator.
U_CAPI UCollator * ucol_openBinary(const uint8_t *bin, int32_t length, const UCollator *base, UErrorCode *status)
Opens a collator from a collator binary image created using ucol_cloneBinary.
U_CAPI UCollator * ucol_open(const char *loc, UErrorCode *status)
Open a UCollator for comparing strings.
struct UCollator UCollator
structure representing a collator object instance
U_CAPI void ucol_setAttribute(UCollator *coll, UColAttribute attr, UColAttributeValue value, UErrorCode *status)
Universal attribute setter.
U_CAPI UEnumeration * ucol_openAvailableLocales(UErrorCode *status)
Create a string enumerator of all locales for which a valid collator may be opened.
U_CAPI UColReorderCode ucol_getMaxVariable(const UCollator *coll)
Returns the maximum reordering group whose characters are affected by UCOL_ALTERNATE_HANDLING.
int32_t ucol_normalizeShortDefinitionString(const char *source, char *destination, int32_t capacity, UParseError *parseError, UErrorCode *status)
Verifies and normalizes short definition string.
UColRuleOption
Options for retrieving the rule string.
@ UCOL_FULL_RULES
Retrieves the "UCA rules" concatenated with the tailoring rules.
@ UCOL_TAILORING_ONLY
Retrieves the tailoring rules only.
UColAttribute
Attributes that collation service understands.
@ UCOL_CASE_FIRST
Controls the ordering of upper and lower case letters.
@ UCOL_NUMERIC_COLLATION
When turned on, this attribute makes substrings of digits sort according to their numeric values.
@ UCOL_STRENGTH
The strength attribute.
@ UCOL_CASE_LEVEL
Controls whether an extra case level (positioned before the third level) is generated or not.
@ UCOL_FRENCH_COLLATION
Attribute for direction of secondary weights - used in Canadian French.
@ UCOL_HIRAGANA_QUATERNARY_MODE
When turned on, this attribute positions Hiragana before all non-ignorables on quaternary level Thi...
@ UCOL_DECOMPOSITION_MODE
An alias for UCOL_NORMALIZATION_MODE attribute.
@ UCOL_ATTRIBUTE_COUNT
One more than the highest normal UColAttribute value.
@ UCOL_ALTERNATE_HANDLING
Attribute for handling variable elements.
@ UCOL_NORMALIZATION_MODE
Controls whether the normalization check and necessary normalizations are performed.
U_CAPI int32_t ucol_getSortKey(const UCollator *coll, const UChar *source, int32_t sourceLength, uint8_t *result, int32_t resultLength)
Get a sort key for a string from a UCollator.
int32_t ucol_getContractions(const UCollator *coll, USet *conts, UErrorCode *status)
Get a set containing the contractions defined by the collator.
U_CAPI USet * ucol_getTailoredSet(const UCollator *coll, UErrorCode *status)
Get a Unicode set that contains all the characters and sequences tailored in this collator.
U_CAPI UCollationResult ucol_strcoll(const UCollator *coll, const UChar *source, int32_t sourceLength, const UChar *target, int32_t targetLength)
Compare two strings.
UColAttributeValue UCollationStrength
Base letter represents a primary difference.
U_CAPI int32_t ucol_getBound(const uint8_t *source, int32_t sourceLength, UColBoundMode boundType, uint32_t noOfLevels, uint8_t *result, int32_t resultLength, UErrorCode *status)
Produce a bound for a given sortkey and a number of levels.
U_CAPI UCollationResult ucol_strcollIter(const UCollator *coll, UCharIterator *sIter, UCharIterator *tIter, UErrorCode *status)
Compare two UTF-8 encoded strings.
U_CAPI const UChar * ucol_getRules(const UCollator *coll, int32_t *length)
Get the collation tailoring rules from a UCollator.
int32_t ucol_getShortDefinitionString(const UCollator *coll, const char *locale, char *buffer, int32_t capacity, UErrorCode *status)
Get the short definition string for a collator.
U_CAPI UBool ucol_equal(const UCollator *coll, const UChar *source, int32_t sourceLength, const UChar *target, int32_t targetLength)
Compare two strings for equality.
U_CAPI const char * ucol_getAvailable(int32_t localeIndex)
Get a locale for which collation rules are available.
U_CAPI UEnumeration * ucol_getKeywords(UErrorCode *status)
Create a string enumerator of all possible keywords that are relevant to collation.
UCollator * ucol_openFromShortString(const char *definition, UBool forceDefaults, UParseError *parseError, UErrorCode *status)
Open a collator defined by a short form string.
const char * ucol_getLocale(const UCollator *coll, ULocDataLocaleType type, UErrorCode *status)
gets the locale name of the collator.
U_CAPI int32_t ucol_cloneBinary(const UCollator *coll, uint8_t *buffer, int32_t capacity, UErrorCode *status)
Creates a binary image of a collator.
U_CAPI UCollationResult ucol_strcollUTF8(const UCollator *coll, const char *source, int32_t sourceLength, const char *target, int32_t targetLength, UErrorCode *status)
Compare two strings in UTF-8.
U_CAPI void ucol_prepareShortStringOpen(const char *definition, UBool forceDefaults, UParseError *parseError, UErrorCode *status)
Touches all resources needed for instantiating a collator from a short string definition,...
U_CAPI UBool ucol_greater(const UCollator *coll, const UChar *source, int32_t sourceLength, const UChar *target, int32_t targetLength)
Determine if one string is greater than another.
UCollationResult
UCOL_LESS is returned if source string is compared to be less than target string in the ucol_strcoll(...
@ UCOL_LESS
string a < string b
@ UCOL_GREATER
string a > string b
@ UCOL_EQUAL
string a == string b
UCollator * ucol_safeClone(const UCollator *coll, void *stackBuffer, int32_t *pBufferSize, UErrorCode *status)
Thread safe cloning operation.
U_CAPI int32_t ucol_nextSortKeyPart(const UCollator *coll, UCharIterator *iter, uint32_t state[2], uint8_t *dest, int32_t count, UErrorCode *status)
Gets the next count bytes of a sort key.
UColBoundMode
enum that is taken by ucol_getBound API See below for explanation do not change the values assigned...
@ UCOL_BOUND_LOWER
lower bound
@ UCOL_BOUND_UPPER
upper bound that will match strings of exact size
@ UCOL_BOUND_VALUE_COUNT
One more than the highest normal UColBoundMode value.
@ UCOL_BOUND_UPPER_LONG
upper bound that will match all the strings that have the same initial substring as the given string
U_CAPI int32_t ucol_countAvailable(void)
Determine how many locales have collation rules available.
U_CAPI UCollator * ucol_clone(const UCollator *coll, UErrorCode *status)
Thread safe cloning operation.
U_CAPI UBool ucol_greaterOrEqual(const UCollator *coll, const UChar *source, int32_t sourceLength, const UChar *target, int32_t targetLength)
Determine if one string is greater than or equal to another.
U_CAPI int32_t ucol_getEquivalentReorderCodes(int32_t reorderCode, int32_t *dest, int32_t destCapacity, UErrorCode *pErrorCode)
Retrieves the reorder codes that are grouped with the given reorder code.
U_CAPI void ucol_close(UCollator *coll)
Close a UCollator.
U_CAPI int32_t ucol_getFunctionalEquivalent(char *result, int32_t resultCapacity, const char *keyword, const char *locale, UBool *isAvailable, UErrorCode *status)
Return the functionally equivalent locale for the specified input locale, with respect to given keywo...
U_CAPI UCollator * ucol_openRules(const UChar *rules, int32_t rulesLength, UColAttributeValue normalizationMode, UCollationStrength strength, UParseError *parseError, UErrorCode *status)
Produce a UCollator instance according to the rules supplied.
U_CAPI void ucol_getUCAVersion(const UCollator *coll, UVersionInfo info)
Gets the UCA version information for a Collator.
U_CAPI int32_t ucol_getDisplayName(const char *objLoc, const char *dispLoc, UChar *result, int32_t resultLength, UErrorCode *status)
Get the display name for a UCollator.
UColAttributeValue
Enum containing attribute values for controlling collation behavior.
@ UCOL_UPPER_FIRST
upper case sorts before lower case
@ UCOL_TERTIARY
Tertiary collation strength.
@ UCOL_DEFAULT
accepted by most attributes
@ UCOL_IDENTICAL
Identical collation strength.
@ UCOL_OFF
Turn the feature off - works for UCOL_FRENCH_COLLATION, UCOL_CASE_LEVEL, UCOL_HIRAGANA_QUATERNARY_MOD...
@ UCOL_QUATERNARY
Quaternary collation strength.
@ UCOL_SHIFTED
Valid for UCOL_ALTERNATE_HANDLING.
@ UCOL_PRIMARY
Primary collation strength.
@ UCOL_LOWER_FIRST
Valid for UCOL_CASE_FIRST - lower case sorts before upper case.
@ UCOL_ATTRIBUTE_VALUE_COUNT
One more than the highest normal UColAttributeValue value.
@ UCOL_SECONDARY
Secondary collation strength.
@ UCOL_NON_IGNORABLE
Valid for UCOL_ALTERNATE_HANDLING.
@ UCOL_ON
Turn the feature on - works for UCOL_FRENCH_COLLATION, UCOL_CASE_LEVEL, UCOL_HIRAGANA_QUATERNARY_MODE...
@ UCOL_DEFAULT_STRENGTH
Default collation strength.
void ucol_restoreVariableTop(UCollator *coll, const uint32_t varTop, UErrorCode *status)
Sets the variable top to the specified primary weight.
U_CAPI UCollationStrength ucol_getStrength(const UCollator *coll)
Get the collation strength used in a UCollator.
U_CAPI int32_t ucol_getReorderCodes(const UCollator *coll, int32_t *dest, int32_t destCapacity, UErrorCode *pErrorCode)
Retrieves the reordering codes for this collator.
U_CAPI void ucol_setReorderCodes(UCollator *coll, const int32_t *reorderCodes, int32_t reorderCodesLength, UErrorCode *pErrorCode)
Sets the reordering codes for this collator.
UColReorderCode
Enum containing the codes for reordering segments of the collation table that are not script codes.
@ UCOL_REORDER_CODE_OTHERS
A special reordering code that is used to specify all other codes used for reordering except for the ...
@ UCOL_REORDER_CODE_NONE
A special reordering code that is used to specify no reordering codes.
@ UCOL_REORDER_CODE_DEFAULT
A special reordering code that is used to specify the default reordering codes for a locale.
@ UCOL_REORDER_CODE_LIMIT
One more than the highest normal UColReorderCode value.
@ UCOL_REORDER_CODE_SYMBOL
Characters with the symbol property.
@ UCOL_REORDER_CODE_DIGIT
Characters with the digit property.
@ UCOL_REORDER_CODE_PUNCTUATION
Characters with the punctuation property.
@ UCOL_REORDER_CODE_SPACE
Characters with the space property.
@ UCOL_REORDER_CODE_FIRST
The first entry in the enumeration of reordering groups.
@ UCOL_REORDER_CODE_CURRENCY
Characters with the currency property.
U_CAPI UEnumeration * ucol_getKeywordValues(const char *keyword, UErrorCode *status)
Given a keyword, create a string enumeration of all values for that keyword that are currently in use...
U_CAPI UEnumeration * ucol_getKeywordValuesForLocale(const char *key, const char *locale, UBool commonlyUsed, UErrorCode *status)
Given a key and a locale, returns an array of string values in a preferred order that would make a di...
U_CAPI int32_t ucol_mergeSortkeys(const uint8_t *src1, int32_t src1Length, const uint8_t *src2, int32_t src2Length, uint8_t *dest, int32_t destCapacity)
Merges two sort keys.
struct UEnumeration UEnumeration
structure representing an enumeration object instance
C API: Locale ID functionality similar to C++ class Locale.
ULocDataLocaleType
Constants for *_getLocale() Allow user to select whether she wants information on requested,...
#define U_DEPRECATED
This is used to declare a function as a deprecated public ICU C API
int8_t UBool
The ICU boolean type, a signed-byte integer.
#define U_CAPI
This is used to declare a function as a public ICU C API.
char16_t UChar
The base type for UTF-16 code units and pointers.
C API: Unicode Normalization.
C API: Unicode Script Information.
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.
@ U_ZERO_ERROR
No error, no warning.
uint8_t UVersionInfo[U_MAX_VERSION_LENGTH]
The binary form of a version on ICU APIs is an array of 4 uint8_t.