summaryrefslogtreecommitdiffstats
path: root/thirdparty/icu4c/common/unicode
diff options
context:
space:
mode:
authorbruvzg <7645683+bruvzg@users.noreply.github.com>2023-11-01 08:56:12 +0200
committerbruvzg <7645683+bruvzg@users.noreply.github.com>2023-11-01 08:56:12 +0200
commit5e55c6c611977e2d948b5b0776e8df710e7da9c5 (patch)
tree1181ecaaf97560e8148254f1e664d6518cc3185d /thirdparty/icu4c/common/unicode
parent6afd320984cf14198368cc6c53752813a02169e3 (diff)
downloadredot-engine-5e55c6c611977e2d948b5b0776e8df710e7da9c5.tar.gz
ICU4C: Update to version 74.1
Diffstat (limited to 'thirdparty/icu4c/common/unicode')
-rw-r--r--thirdparty/icu4c/common/unicode/brkiter.h1
-rw-r--r--thirdparty/icu4c/common/unicode/docmain.h2
-rw-r--r--thirdparty/icu4c/common/unicode/locid.h14
-rw-r--r--thirdparty/icu4c/common/unicode/normalizer2.h26
-rw-r--r--thirdparty/icu4c/common/unicode/rbbi.h82
-rw-r--r--thirdparty/icu4c/common/unicode/uchar.h44
-rw-r--r--thirdparty/icu4c/common/unicode/ulocale.h229
-rw-r--r--thirdparty/icu4c/common/unicode/ulocbuilder.h441
-rw-r--r--thirdparty/icu4c/common/unicode/unorm2.h26
-rw-r--r--thirdparty/icu4c/common/unicode/urename.h61
-rw-r--r--thirdparty/icu4c/common/unicode/uvernum.h12
11 files changed, 917 insertions, 21 deletions
diff --git a/thirdparty/icu4c/common/unicode/brkiter.h b/thirdparty/icu4c/common/unicode/brkiter.h
index 108652799e..1b10e6ef11 100644
--- a/thirdparty/icu4c/common/unicode/brkiter.h
+++ b/thirdparty/icu4c/common/unicode/brkiter.h
@@ -649,6 +649,7 @@ private:
/** @internal (private) */
char actualLocale[ULOC_FULLNAME_CAPACITY];
char validLocale[ULOC_FULLNAME_CAPACITY];
+ char requestLocale[ULOC_FULLNAME_CAPACITY];
};
#ifndef U_HIDE_DEPRECATED_API
diff --git a/thirdparty/icu4c/common/unicode/docmain.h b/thirdparty/icu4c/common/unicode/docmain.h
index 1349f49703..581b2e186d 100644
--- a/thirdparty/icu4c/common/unicode/docmain.h
+++ b/thirdparty/icu4c/common/unicode/docmain.h
@@ -114,7 +114,7 @@
* </tr>
* <tr>
* <td>Locales </td>
- * <td>uloc.h</a></td>
+ * <td>uloc.h, ulocale.h, ulocbuilder.h</a></td>
* <td>icu::Locale, icu::LocaleBuilder, icu::LocaleMatcher</td>
* </tr>
* <tr>
diff --git a/thirdparty/icu4c/common/unicode/locid.h b/thirdparty/icu4c/common/unicode/locid.h
index a6fbbb7041..f0bdc7ca51 100644
--- a/thirdparty/icu4c/common/unicode/locid.h
+++ b/thirdparty/icu4c/common/unicode/locid.h
@@ -984,7 +984,10 @@ public:
static const char* const* U_EXPORT2 getISOCountries();
/**
- * Gets a list of all available language codes defined in ISO 639. This is a pointer
+ * Returns a list of all unique language codes defined in ISO 639.
+ * They can be 2 or 3 letter codes, as defined by
+ * <a href="https://www.ietf.org/rfc/bcp/bcp47.html#section-2.2.1">
+ * BCP 47, section 2.2.1</a>. This is a pointer
* to an array of pointers to arrays of char. All of these pointers are owned
* by ICU-- do not delete them, and do not write through them. The array is
* terminated with a null pointer.
@@ -1110,6 +1113,15 @@ protected: /* only protected for testing purposes. DO NOT USE. */
* @internal
*/
void setFromPOSIXID(const char *posixID);
+ /**
+ * Minimize the subtags for this Locale, per the algorithm described
+ * @param favorScript favor to keep script if true, to keep region if false.
+ * @param status error information if maximizing this Locale failed.
+ * If this Locale is not well-formed, the error code is
+ * U_ILLEGAL_ARGUMENT_ERROR.
+ * @internal
+ */
+ void minimizeSubtags(bool favorScript, UErrorCode& status);
#endif /* U_HIDE_INTERNAL_API */
private:
diff --git a/thirdparty/icu4c/common/unicode/normalizer2.h b/thirdparty/icu4c/common/unicode/normalizer2.h
index 972894ec42..6856ff8720 100644
--- a/thirdparty/icu4c/common/unicode/normalizer2.h
+++ b/thirdparty/icu4c/common/unicode/normalizer2.h
@@ -147,7 +147,10 @@ public:
getNFKDInstance(UErrorCode &errorCode);
/**
- * Returns a Normalizer2 instance for Unicode NFKC_Casefold normalization.
+ * Returns a Normalizer2 instance for Unicode toNFKC_Casefold() normalization
+ * which is equivalent to applying the NFKC_Casefold mappings and then NFC.
+ * See https://www.unicode.org/reports/tr44/#NFKC_Casefold
+ *
* Same as getInstance(nullptr, "nfkc_cf", UNORM2_COMPOSE, errorCode).
* Returns an unmodifiable singleton instance. Do not delete it.
* @param errorCode Standard ICU error code. Its input value must
@@ -160,6 +163,25 @@ public:
static const Normalizer2 *
getNFKCCasefoldInstance(UErrorCode &errorCode);
+#ifndef U_HIDE_DRAFT_API
+ /**
+ * Returns a Normalizer2 instance for a variant of Unicode toNFKC_Casefold() normalization
+ * which is equivalent to applying the NFKC_Simple_Casefold mappings and then NFC.
+ * See https://www.unicode.org/reports/tr44/#NFKC_Simple_Casefold
+ *
+ * Same as getInstance(nullptr, "nfkc_scf", UNORM2_COMPOSE, errorCode).
+ * Returns an unmodifiable singleton instance. Do not delete it.
+ * @param errorCode Standard ICU error code. Its input value must
+ * pass the U_SUCCESS() test, or else the function returns
+ * immediately. Check for U_FAILURE() on output or use with
+ * function chaining. (See User Guide for details.)
+ * @return the requested Normalizer2, if successful
+ * @draft ICU 74
+ */
+ static const Normalizer2 *
+ getNFKCSimpleCasefoldInstance(UErrorCode &errorCode);
+#endif // U_HIDE_DRAFT_API
+
/**
* Returns a Normalizer2 instance which uses the specified data file
* (packageName/name similar to ucnv_openPackage() and ures_open()/ResourceBundle)
@@ -172,7 +194,7 @@ public:
* Use name="nfkc_cf" and UNORM2_COMPOSE for Unicode standard NFKC_CF=NFKC_Casefold.
*
* @param packageName nullptr for ICU built-in data, otherwise application data package name
- * @param name "nfc" or "nfkc" or "nfkc_cf" or name of custom data file
+ * @param name "nfc" or "nfkc" or "nfkc_cf" or "nfkc_scf" or name of custom data file
* @param mode normalization mode (compose or decompose etc.)
* @param errorCode Standard ICU error code. Its input value must
* pass the U_SUCCESS() test, or else the function returns
diff --git a/thirdparty/icu4c/common/unicode/rbbi.h b/thirdparty/icu4c/common/unicode/rbbi.h
index 418b52e41f..045238ac5d 100644
--- a/thirdparty/icu4c/common/unicode/rbbi.h
+++ b/thirdparty/icu4c/common/unicode/rbbi.h
@@ -43,6 +43,69 @@ class RBBIDataWrapper;
class UnhandledEngine;
class UStack;
+
+#ifndef U_HIDE_DRAFT_API
+/**
+ * The ExternalBreakEngine class define an abstract interface for the host environment
+ * to provide a low level facility to break text for unicode text in script that the text boundary
+ * cannot be handled by upper level rule based logic, for example, for Chinese and Japanese
+ * word breaking, Thai, Khmer, Burmese, Lao and other Southeast Asian scripts.
+ * The host environment implement one or more subclass of ExternalBreakEngine and
+ * register them in the initialization time by calling
+ * RuleBasedBreakIterator::registerExternalBreakEngine(). ICU adopt and own the engine and will
+ * delete the registered external engine in proper time during the clean up
+ * event.
+ * @internal ICU 74 technology preview
+ */
+class ExternalBreakEngine : public UObject {
+ public:
+ /**
+ * destructor
+ * @internal ICU 74 technology preview
+ */
+ virtual ~ExternalBreakEngine() {}
+
+ /**
+ * <p>Indicate whether this engine handles a particular character when
+ * the RuleBasedBreakIterator is used for a particular locale. This method is used
+ * by the RuleBasedBreakIterator to find a break engine.</p>
+ * @param c A character which begins a run that the engine might handle.
+ * @param locale The locale.
+ * @return true if this engine handles the particular character for that locale.
+ * @internal ICU 74 technology preview
+ */
+ virtual bool isFor(UChar32 c, const char* locale) const = 0;
+
+ /**
+ * <p>Indicate whether this engine handles a particular character.This method is
+ * used by the RuleBasedBreakIterator after it already find a break engine to see which
+ * characters after the first one can be handled by this break engine.</p>
+ * @param c A character that the engine might handle.
+ * @return true if this engine handles the particular character.
+ * @internal ICU 74 technology preview
+ */
+ virtual bool handles(UChar32 c) const = 0;
+
+ /**
+ * <p>Divide up a range of text handled by this break engine.</p>
+ *
+ * @param text A UText representing the text
+ * @param start The start of the range of known characters
+ * @param end The end of the range of known characters
+ * @param foundBreaks Output of C array of int32_t break positions, or
+ * nullptr
+ * @param foundBreaksCapacity The capacity of foundBreaks
+ * @param status Information on any errors encountered.
+ * @return The number of breaks found
+ * @internal ICU 74 technology preview
+ */
+ virtual int32_t fillBreaks(UText* text, int32_t start, int32_t end,
+ int32_t* foundBreaks, int32_t foundBreaksCapacity,
+ UErrorCode& status) const = 0;
+};
+#endif /* U_HIDE_DRAFT_API */
+
+
/**
*
* A subclass of BreakIterator whose behavior is specified using a list of rules.
@@ -716,9 +779,10 @@ private:
* This function returns the appropriate LanguageBreakEngine for a
* given character c.
* @param c A character in the dictionary set
+ * @param locale The locale.
* @internal (private)
*/
- const LanguageBreakEngine *getLanguageBreakEngine(UChar32 c);
+ const LanguageBreakEngine *getLanguageBreakEngine(UChar32 c, const char* locale);
public:
#ifndef U_HIDE_INTERNAL_API
@@ -734,8 +798,24 @@ private:
*/
void dumpTables();
#endif /* U_HIDE_INTERNAL_API */
+
+#ifndef U_HIDE_DRAFT_API
+ /**
+ * Register a new external break engine. The external break engine will be adopted.
+ * Because ICU may choose to cache break engine internally, this must
+ * be called at application startup, prior to any calls to
+ * object methods of RuleBasedBreakIterator to avoid undefined behavior.
+ * @param toAdopt the ExternalBreakEngine instance to be adopted
+ * @param status the in/out status code, no special meanings are assigned
+ * @internal ICU 74 technology preview
+ */
+ static void U_EXPORT2 registerExternalBreakEngine(
+ ExternalBreakEngine* toAdopt, UErrorCode& status);
+#endif /* U_HIDE_DRAFT_API */
+
};
+
U_NAMESPACE_END
#endif /* #if !UCONFIG_NO_BREAK_ITERATION */
diff --git a/thirdparty/icu4c/common/unicode/uchar.h b/thirdparty/icu4c/common/unicode/uchar.h
index 4f82a9fb58..7470891338 100644
--- a/thirdparty/icu4c/common/unicode/uchar.h
+++ b/thirdparty/icu4c/common/unicode/uchar.h
@@ -60,7 +60,7 @@ U_CDECL_BEGIN
* @see u_getUnicodeVersion
* @stable ICU 2.0
*/
-#define U_UNICODE_VERSION "15.0"
+#define U_UNICODE_VERSION "15.1"
/**
* \file
@@ -532,12 +532,33 @@ typedef enum UProperty {
* @stable ICU 70
*/
UCHAR_RGI_EMOJI=71,
+#ifndef U_HIDE_DRAFT_API
+ /**
+ * Binary property IDS_Unary_Operator.
+ * For programmatic determination of Ideographic Description Sequences.
+ *
+ * @draft ICU 74
+ */
+ UCHAR_IDS_UNARY_OPERATOR=72,
+ /**
+ * Binary property ID_Compat_Math_Start.
+ * Used in mathematical identifier profile in UAX #31.
+ * @draft ICU 74
+ */
+ UCHAR_ID_COMPAT_MATH_START=73,
+ /**
+ * Binary property ID_Compat_Math_Continue.
+ * Used in mathematical identifier profile in UAX #31.
+ * @draft ICU 74
+ */
+ UCHAR_ID_COMPAT_MATH_CONTINUE=74,
+#endif // U_HIDE_DRAFT_API
#ifndef U_HIDE_DEPRECATED_API
/**
* One more than the last constant for binary Unicode properties.
* @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
*/
- UCHAR_BINARY_LIMIT=72,
+ UCHAR_BINARY_LIMIT=75,
#endif // U_HIDE_DEPRECATED_API
/** Enumerated property Bidi_Class.
@@ -1900,6 +1921,11 @@ enum UBlockCode {
/** @stable ICU 72 */
UBLOCK_NAG_MUNDARI = 327, /*[1E4D0]*/
+ // New block in Unicode 15.1
+
+ /** @stable ICU 74 */
+ UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_I = 328, /*[2EBF0]*/
+
#ifndef U_HIDE_DEPRECATED_API
/**
* One more than the highest normal UBlockCode value.
@@ -1907,7 +1933,7 @@ enum UBlockCode {
*
* @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
*/
- UBLOCK_COUNT = 328,
+ UBLOCK_COUNT = 329,
#endif // U_HIDE_DEPRECATED_API
/** @stable ICU 2.0 */
@@ -2439,6 +2465,16 @@ typedef enum ULineBreak {
U_LB_E_MODIFIER = 41, /*[EM]*/
/** @stable ICU 58 */
U_LB_ZWJ = 42, /*[ZWJ]*/
+ /** @stable ICU 74 */
+ U_LB_AKSARA = 43, /*[AK]*/
+ /** @stable ICU 74 */
+ U_LB_AKSARA_PREBASE = 44, /*[AP]*/
+ /** @stable ICU 74 */
+ U_LB_AKSARA_START = 45, /*[AS]*/
+ /** @stable ICU 74 */
+ U_LB_VIRAMA_FINAL = 46, /*[VF]*/
+ /** @stable ICU 74 */
+ U_LB_VIRAMA = 47, /*[VI]*/
#ifndef U_HIDE_DEPRECATED_API
/**
* One more than the highest normal ULineBreak value.
@@ -2446,7 +2482,7 @@ typedef enum ULineBreak {
*
* @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
*/
- U_LB_COUNT = 43
+ U_LB_COUNT = 48
#endif // U_HIDE_DEPRECATED_API
} ULineBreak;
diff --git a/thirdparty/icu4c/common/unicode/ulocale.h b/thirdparty/icu4c/common/unicode/ulocale.h
new file mode 100644
index 0000000000..33e92844bc
--- /dev/null
+++ b/thirdparty/icu4c/common/unicode/ulocale.h
@@ -0,0 +1,229 @@
+// © 2023 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#ifndef ULOCALE_H
+#define ULOCALE_H
+
+#include "unicode/localpointer.h"
+#include "unicode/uenum.h"
+#include "unicode/utypes.h"
+
+/**
+ * \file
+ * \brief C API: Locale ID functionality similar to C++ class Locale
+ */
+
+#ifndef U_HIDE_DRAFT_API
+/**
+ * Opaque C service object type for the locale API
+ * @draft ICU 74
+ */
+struct ULocale;
+
+/**
+ * C typedef for struct ULocale.
+ * @draft ICU 74
+ */
+typedef struct ULocale ULocale;
+
+/**
+ * Constructs an ULocale from the locale ID.
+ * The created ULocale should be destroyed by calling
+ * ulocale_close();
+ * @param localeID the locale, a const char * pointer (need not be terminated when
+ * the length is non-negative)
+ * @param length the length of the locale; if negative, then the locale need to be
+ * null terminated.
+ * @param err the error code
+ * @return the locale.
+ *
+ * @draft ICU 74
+ */
+U_CAPI ULocale* U_EXPORT2
+ulocale_openForLocaleID(const char* localeID, int32_t length, UErrorCode* err);
+
+/**
+ * Constructs an ULocale from the provided IETF BCP 47 language tag.
+ * The created ULocale should be destroyed by calling
+ * ulocale_close();
+ * @param tag the language tag, defined as IETF BCP 47 language tag, const
+ * char* pointer (need not be terminated when the length is non-negative)
+ * @param length the length of the tag; if negative, then the tag need to be
+ * null terminated.
+ * @param err the error code
+ * @return the locale.
+ *
+ * @draft ICU 74
+ */
+U_CAPI ULocale* U_EXPORT2
+ulocale_openForLanguageTag(const char* tag, int32_t length, UErrorCode* err);
+
+/**
+ * Close the locale and destroy it's internal states.
+ *
+ * @param locale the locale
+ * @draft ICU 74
+ */
+U_CAPI void U_EXPORT2
+ulocale_close(ULocale* locale);
+
+/**
+ * Returns the locale's ISO-639 language code.
+ *
+ * @param locale the locale
+ * @return the language code of the locale.
+ * @draft ICU 74
+ */
+U_CAPI const char* U_EXPORT2
+ulocale_getLanguage(const ULocale* locale);
+
+/**
+ * Returns the locale's ISO-15924 abbreviation script code.
+ *
+ * @param locale the locale
+ * @return A pointer to the script.
+ * @draft ICU 74
+ */
+U_CAPI const char* U_EXPORT2
+ulocale_getScript(const ULocale* locale);
+
+/**
+ * Returns the locale's ISO-3166 region code.
+ *
+ * @param locale the locale
+ * @return A pointer to the region.
+ * @draft ICU 74
+ */
+U_CAPI const char* U_EXPORT2
+ulocale_getRegion(const ULocale* locale);
+
+/**
+ * Returns the locale's variant code.
+ *
+ * @param locale the locale
+ * @return A pointer to the variant.
+ * @draft ICU 74
+ */
+U_CAPI const char* U_EXPORT2
+ulocale_getVariant(const ULocale* locale);
+
+/**
+ * Returns the programmatic name of the entire locale, with the language,
+ * country and variant separated by underbars. If a field is missing, up
+ * to two leading underbars will occur. Example: "en", "de_DE", "en_US_WIN",
+ * "de__POSIX", "fr__MAC", "__MAC", "_MT", "_FR_EURO"
+ *
+ * @param locale the locale
+ * @return A pointer to "name".
+ * @draft ICU 74
+ */
+U_CAPI const char* U_EXPORT2
+ulocale_getLocaleID(const ULocale* locale);
+
+/**
+ * Returns the programmatic name of the entire locale as ulocale_getLocaleID()
+ * would return, but without keywords.
+ *
+ * @param locale the locale
+ * @return A pointer to "base name".
+ * @draft ICU 74
+ */
+U_CAPI const char* U_EXPORT2
+ulocale_getBaseName(const ULocale* locale);
+
+/**
+ * Gets the bogus state. Locale object can be bogus if it doesn't exist
+ *
+ * @param locale the locale
+ * @return false if it is a real locale, true if it is a bogus locale
+ * @draft ICU 74
+ */
+U_CAPI bool U_EXPORT2
+ulocale_isBogus(const ULocale* locale);
+
+/**
+ * Gets the list of keywords for the specified locale.
+ *
+ * @param locale the locale
+ * @param err the error code
+ * @return pointer to UEnumeration, or nullptr if there are no keywords.
+ * Client must call uenum_close() to dispose the returned value.
+ * @draft ICU 74
+ */
+U_CAPI UEnumeration* U_EXPORT2
+ulocale_getKeywords(const ULocale* locale, UErrorCode *err);
+
+/**
+ * Gets the list of unicode keywords for the specified locale.
+ *
+ * @param locale the locale
+ * @param err the error code
+ * @return pointer to UEnumeration, or nullptr if there are no keywords.
+ * Client must call uenum_close() to dispose the returned value.
+ * @draft ICU 74
+ */
+U_CAPI UEnumeration* U_EXPORT2
+ulocale_getUnicodeKeywords(const ULocale* locale, UErrorCode *err);
+
+/**
+ * Gets the value for a keyword.
+ *
+ * This uses legacy keyword=value pairs, like "collation=phonebook".
+ *
+ * @param locale the locale
+ * @param keyword the keyword, a const char * pointer (need not be
+ * terminated when the length is non-negative)
+ * @param keywordLength the length of the keyword; if negative, then the
+ * keyword need to be null terminated.
+ * @param valueBuffer The buffer to receive the value.
+ * @param valueBufferCapacity The capacity of receiving valueBuffer.
+ * @param err the error code
+ * @draft ICU 74
+ */
+U_CAPI int32_t U_EXPORT2
+ulocale_getKeywordValue(
+ const ULocale* locale, const char* keyword, int32_t keywordLength,
+ char* valueBuffer, int32_t valueBufferCapacity, UErrorCode *err);
+
+/**
+ * Gets the Unicode value for a Unicode keyword.
+ *
+ * This uses Unicode key-value pairs, like "co-phonebk".
+ *
+ * @param locale the locale
+ * @param keyword the Unicode keyword, a const char * pointer (need not be
+ * terminated when the length is non-negative)
+ * @param keywordLength the length of the Unicode keyword; if negative,
+ * then the keyword need to be null terminated.
+ * @param valueBuffer The buffer to receive the Unicode value.
+ * @param valueBufferCapacity The capacity of receiving valueBuffer.
+ * @param err the error code
+ * @draft ICU 74
+ */
+U_CAPI int32_t U_EXPORT2
+ulocale_getUnicodeKeywordValue(
+ const ULocale* locale, const char* keyword, int32_t keywordLength,
+ char* valueBuffer, int32_t valueBufferCapacity, UErrorCode *err);
+
+#if U_SHOW_CPLUSPLUS_API
+
+U_NAMESPACE_BEGIN
+
+/**
+ * \class LocalULocalePointer
+ * "Smart pointer" class, closes a ULocale via ulocale_close().
+ * For most methods see the LocalPointerBase base class.
+ *
+ * @see LocalPointerBase
+ * @see LocalPointer
+ * @draft ICU 74
+ */
+U_DEFINE_LOCAL_OPEN_POINTER(LocalULocalePointer, ULocale, ulocale_close);
+
+U_NAMESPACE_END
+
+#endif /* U_SHOW_CPLUSPLUS_API */
+
+#endif /* U_HIDE_DRAFT_API */
+
+#endif /*_ULOCALE */
diff --git a/thirdparty/icu4c/common/unicode/ulocbuilder.h b/thirdparty/icu4c/common/unicode/ulocbuilder.h
new file mode 100644
index 0000000000..f2e98612f0
--- /dev/null
+++ b/thirdparty/icu4c/common/unicode/ulocbuilder.h
@@ -0,0 +1,441 @@
+// © 2023 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+#ifndef __ULOCBUILDER_H__
+#define __ULOCBUILDER_H__
+
+#include "unicode/localpointer.h"
+#include "unicode/ulocale.h"
+#include "unicode/utypes.h"
+
+/**
+ * \file
+ * \brief C API: Builder API for Locale
+ */
+
+#ifndef U_HIDE_DRAFT_API
+
+/**
+ * Opaque C service object type for the locale builder API
+ * @draft ICU 74
+ */
+struct ULocaleBuilder;
+
+/**
+ * C typedef for struct ULocaleBuilder.
+ * @draft ICU 74
+ */
+typedef struct ULocaleBuilder ULocaleBuilder;
+
+/**
+ * <code>ULocaleBuilder</code> is used to build valid <code>locale</code> id
+ * string or IETF BCP 47 language tag from values configured by the setters.
+ * The <code>ULocaleBuilder</code> checks if a value configured by a
+ * setter satisfies the syntax requirements defined by the <code>Locale</code>
+ * class. A string of Locale created by a <code>ULocaleBuilder</code> is
+ * well-formed and can be transformed to a well-formed IETF BCP 47 language tag
+ * without losing information.
+ *
+ * <p>The following example shows how to create a <code>locale</code> string
+ * with the <code>ULocaleBuilder</code>.
+ * <blockquote>
+ * <pre>
+ * UErrorCode err = U_ZERO_ERROR;
+ * char buffer[ULOC_FULLNAME_CAPACITY];
+ * ULocaleBuilder* builder = ulocbld_open();
+ * ulocbld_setLanguage(builder, "sr", -1);
+ * ulocbld_setScript(builder, "Latn", -1);
+ * ulocbld_setRegion(builder, "RS", -1);
+ * int32_t length = ulocbld_buildLocaleID(
+ * builder, buffer, ULOC_FULLNAME_CAPACITY, &error);
+ * ulocbld_close(builder);
+ * </pre>
+ * </blockquote>
+ *
+ * <p>ULocaleBuilders can be reused; <code>ulocbld_clear()</code> resets all
+ * fields to their default values.
+ *
+ * <p>ULocaleBuilder tracks errors in an internal UErrorCode. For all setters,
+ * except ulocbld_setLanguageTag and ulocbld_setLocale, ULocaleBuilder will return immediately
+ * if the internal UErrorCode is in error state.
+ * To reset internal state and error code, call clear method.
+ * The ulocbld_setLanguageTag and setLocale method will first clear the internal
+ * UErrorCode, then track the error of the validation of the input parameter
+ * into the internal UErrorCode.
+ *
+ * @draft ICU 74
+ */
+
+/**
+ * Constructs an empty ULocaleBuilder. The default value of all
+ * fields, extensions, and private use information is the
+ * empty string. The created builder should be destroyed by calling
+ * ulocbld_close();
+ *
+ * @draft ICU 74
+ */
+U_CAPI ULocaleBuilder* U_EXPORT2
+ulocbld_open();
+
+/**
+ * Close the builder and destroy it's internal states.
+ * @param builder the builder
+ * @draft ICU 74
+ */
+U_CAPI void U_EXPORT2
+ulocbld_close(ULocaleBuilder* builder);
+
+/**
+ * Resets the <code>ULocaleBuilder</code> to match the provided
+ * <code>locale</code>. Existing state is discarded.
+ *
+ * <p>All fields of the locale must be well-formed.
+ * <p>This method clears the internal UErrorCode.
+ *
+ * @param builder the builder
+ * @param locale the locale, a const char * pointer (need not be terminated when
+ * the length is non-negative)
+ * @param length the length of the locale; if negative, then the locale need to be
+ * null terminated,
+ *
+ * @draft ICU 74
+ */
+U_CAPI void U_EXPORT2
+ulocbld_setLocale(ULocaleBuilder* builder, const char* locale, int32_t length);
+
+/**
+ * Resets the <code>ULocaleBuilder</code> to match the provided
+ * <code>ULocale</code>. Existing state is discarded.
+ *
+ * <p>The locale must be not bogus.
+ * <p>This method clears the internal UErrorCode.
+ *
+ * @param builder the builder.
+ * @param locale the locale, a ULocale* pointer. The builder adopts the locale
+ * after the call and the client must not delete it.
+ *
+ * @draft ICU 74
+ */
+U_CAPI void U_EXPORT2
+ulocbld_adoptULocale(ULocaleBuilder* builder, ULocale* locale);
+
+/**
+ * Resets the ULocaleBuilder to match the provided IETF BCP 47 language tag.
+ * Discards the existing state.
+ * The empty string causes the builder to be reset, like {@link #ulocbld_clear}.
+ * Legacy language tags (marked as “Type: grandfathered” in BCP 47)
+ * are converted to their canonical form before being processed.
+ * Otherwise, the <code>language tag</code> must be well-formed,
+ * or else the ulocbld_buildLocaleID() and ulocbld_buildLanguageTag() methods
+ * will later report an U_ILLEGAL_ARGUMENT_ERROR.
+ *
+ * <p>This method clears the internal UErrorCode.
+ *
+ * @param builder the builder
+ * @param tag the language tag, defined as IETF BCP 47 language tag, a
+ * const char * pointer (need not be terminated when
+ * the length is non-negative)
+ * @param length the length of the tag; if negative, then the tag need to be
+ * null terminated,
+ * @draft ICU 74
+ */
+U_CAPI void U_EXPORT2
+ulocbld_setLanguageTag(ULocaleBuilder* builder, const char* tag, int32_t length);
+
+/**
+ * Sets the language. If <code>language</code> is the empty string, the
+ * language in this <code>ULocaleBuilder</code> is removed. Otherwise, the
+ * <code>language</code> must be well-formed, or else the ulocbld_buildLocaleID()
+ * and ulocbld_buildLanguageTag() methods will
+ * later report an U_ILLEGAL_ARGUMENT_ERROR.
+ *
+ * <p>The syntax of language value is defined as
+ * [unicode_language_subtag](http://www.unicode.org/reports/tr35/tr35.html#unicode_language_subtag).
+ *
+ * @param builder the builder
+ * @param language the language, a const char * pointer (need not be terminated when
+ * the length is non-negative)
+ * @param length the length of the language; if negative, then the language need to be
+ * null terminated,
+ * @draft ICU 74
+ */
+U_CAPI void U_EXPORT2
+ulocbld_setLanguage(ULocaleBuilder* builder, const char* language, int32_t length);
+
+/**
+ * Sets the script. If <code>script</code> is the empty string, the script in
+ * this <code>ULocaleBuilder</code> is removed.
+ * Otherwise, the <code>script</code> must be well-formed, or else the
+ * ulocbld_buildLocaleID() and ulocbld_buildLanguageTag() methods will later
+ * report an U_ILLEGAL_ARGUMENT_ERROR.
+ *
+ * <p>The script value is a four-letter script code as
+ * [unicode_script_subtag](http://www.unicode.org/reports/tr35/tr35.html#unicode_script_subtag)
+ * defined by ISO 15924
+ *
+ * @param builder the builder
+ * @param script the script, a const char * pointer (need not be terminated when
+ * the length is non-negative)
+ * @param length the length of the script; if negative, then the script need to be
+ * null terminated,
+ * @draft ICU 74
+ */
+U_CAPI void U_EXPORT2
+ulocbld_setScript(ULocaleBuilder* builder, const char* script, int32_t length);
+
+/**
+ * Sets the region. If region is the empty string, the region in this
+ * <code>ULocaleBuilder</code> is removed. Otherwise, the <code>region</code>
+ * must be well-formed, or else the ulocbld_buildLocaleID() and
+ * ulocbld_buildLanguageTag() methods will later report an
+ * U_ILLEGAL_ARGUMENT_ERROR.
+ *
+ * <p>The region value is defined by
+ * [unicode_region_subtag](http://www.unicode.org/reports/tr35/tr35.html#unicode_region_subtag)
+ * as a two-letter ISO 3166 code or a three-digit UN M.49 area code.
+ *
+ * <p>The region value in the <code>Locale</code> created by the
+ * <code>ULocaleBuilder</code> is always normalized to upper case.
+ *
+ * @param builder the builder
+ * @param region the region, a const char * pointer (need not be terminated when
+ * the length is non-negative)
+ * @param length the length of the region; if negative, then the region need to be
+ * null terminated,
+ * @draft ICU 74
+ */
+U_CAPI void U_EXPORT2
+ulocbld_setRegion(ULocaleBuilder* builder, const char* region, int32_t length);
+
+/**
+ * Sets the variant. If variant is the empty string, the variant in this
+ * <code>ULocaleBuilder</code> is removed. Otherwise, the <code>variant</code>
+ * must be well-formed, or else the ulocbld_buildLocaleID() and
+ * ulocbld_buildLanguageTag() methods will later report an
+ * U_ILLEGAL_ARGUMENT_ERROR.
+ *
+ * <p><b>Note:</b> This method checks if <code>variant</code>
+ * satisfies the
+ * [unicode_variant_subtag](http://www.unicode.org/reports/tr35/tr35.html#unicode_variant_subtag)
+ * syntax requirements, and normalizes the value to lowercase letters. However,
+ * the <code>Locale</code> class does not impose any syntactic
+ * restriction on variant. To set an ill-formed variant, use a Locale constructor.
+ * If there are multiple unicode_variant_subtag, the caller must concatenate
+ * them with '-' as separator (ex: "foobar-fibar").
+ *
+ * @param builder the builder
+ * @param variant the variant, a const char * pointer (need not be terminated when
+ * the length is non-negative)
+ * @param length the length of the variant; if negative, then the variant need to be
+ * null terminated,
+ * @draft ICU 74
+ */
+U_CAPI void U_EXPORT2
+ulocbld_setVariant(ULocaleBuilder* builder, const char* variant, int32_t length);
+
+/**
+ * Sets the extension for the given key. If the value is the empty string,
+ * the extension is removed. Otherwise, the <code>key</code> and
+ * <code>value</code> must be well-formed, or else the ulocbld_buildLocaleID()
+ * and ulocbld_buildLanguageTag() methods will
+ * later report an U_ILLEGAL_ARGUMENT_ERROR.
+ *
+ * <p><b>Note:</b> The key ('u') is used for the Unicode locale extension.
+ * Setting a value for this key replaces any existing Unicode locale key/type
+ * pairs with those defined in the extension.
+ *
+ * <p><b>Note:</b> The key ('x') is used for the private use code. To be
+ * well-formed, the value for this key needs only to have subtags of one to
+ * eight alphanumeric characters, not two to eight as in the general case.
+ *
+ * @param builder the builder
+ * @param key the extension key
+ * @param value the value, a const char * pointer (need not be terminated when
+ * the length is non-negative)
+ * @param length the length of the value; if negative, then the value need to be
+ * null terminated,
+ * @draft ICU 74
+ */
+U_CAPI void U_EXPORT2
+ulocbld_setExtension(ULocaleBuilder* builder, char key, const char* value, int32_t length);
+
+/**
+ * Sets the Unicode locale keyword type for the given key. If the type
+ * StringPiece is constructed with a nullptr, the keyword is removed.
+ * If the type is the empty string, the keyword is set without type subtags.
+ * Otherwise, the key and type must be well-formed, or else the
+ * ulocbld_buildLocaleID() and ulocbld_buildLanguageTag() methods will later
+ * report an U_ILLEGAL_ARGUMENT_ERROR.
+ *
+ * <p>Keys and types are converted to lower case.
+ *
+ * <p><b>Note</b>:Setting the 'u' extension via {@link #ulocbld_setExtension}
+ * replaces all Unicode locale keywords with those defined in the
+ * extension.
+ *
+ * @param builder the builder
+ * @param key the Unicode locale key, a const char * pointer (need not be
+ * terminated when the length is non-negative)
+ * @param keyLength the length of the key; if negative, then the key need to be
+ * null terminated,
+ * @param type the Unicode locale type, a const char * pointer (need not be
+ * terminated when the length is non-negative)
+ * @param typeLength the length of the type; if negative, then the type need to
+ * be null terminated,
+ * @return This builder.
+ * @draft ICU 74
+ */
+U_CAPI void U_EXPORT2
+ulocbld_setUnicodeLocaleKeyword(ULocaleBuilder* builder,
+ const char* key, int32_t keyLength, const char* type, int32_t typeLength);
+
+/**
+ * Adds a unicode locale attribute, if not already present, otherwise
+ * has no effect. The attribute must not be empty string and must be
+ * well-formed or U_ILLEGAL_ARGUMENT_ERROR will be set to status
+ * during the ulocbld_buildLocaleID() and ulocbld_buildLanguageTag() calls.
+ *
+ * @param builder the builder
+ * @param attribute the attribute, a const char * pointer (need not be
+ * terminated when the length is non-negative)
+ * @param length the length of the attribute; if negative, then the attribute
+ * need to be null terminated,
+ * @draft ICU 74
+ */
+U_CAPI void U_EXPORT2
+ulocbld_addUnicodeLocaleAttribute(
+ ULocaleBuilder* builder, const char* attribute, int32_t length);
+
+/**
+ * Removes a unicode locale attribute, if present, otherwise has no
+ * effect. The attribute must not be empty string and must be well-formed
+ * or U_ILLEGAL_ARGUMENT_ERROR will be set to status during the ulocbld_buildLocaleID()
+ * and ulocbld_buildLanguageTag() calls.
+ *
+ * <p>Attribute comparison for removal is case-insensitive.
+ *
+ * @param builder the builder
+ * @param attribute the attribute, a const char * pointer (need not be
+ * terminated when the length is non-negative)
+ * @param length the length of the attribute; if negative, then the attribute
+ * need to be null terminated,
+ * @draft ICU 74
+ */
+U_CAPI void U_EXPORT2
+ulocbld_removeUnicodeLocaleAttribute(
+ ULocaleBuilder* builder, const char* attribute, int32_t length);
+
+/**
+ * Resets the builder to its initial, empty state.
+ * <p>This method clears the internal UErrorCode.
+ *
+ * @param builder the builder
+ * @draft ICU 74
+ */
+U_CAPI void U_EXPORT2
+ulocbld_clear(ULocaleBuilder* builder);
+
+/**
+ * Resets the extensions to their initial, empty state.
+ * Language, script, region and variant are unchanged.
+ *
+ * @param builder the builder
+ * @draft ICU 74
+ */
+U_CAPI void U_EXPORT2
+ulocbld_clearExtensions(ULocaleBuilder* builder);
+
+/**
+ * Build the LocaleID string from the fields set on this builder.
+ * If any set methods or during the ulocbld_buildLocaleID() call require memory
+ * allocation but fail U_MEMORY_ALLOCATION_ERROR will be set to status.
+ * If any of the fields set by the setters are not well-formed, the status
+ * will be set to U_ILLEGAL_ARGUMENT_ERROR. The state of the builder will
+ * not change after the ulocbld_buildLocaleID() call and the caller is
+ * free to keep using the same builder to build more locales.
+ *
+ * @param builder the builder
+ * @param locale the locale id
+ * @param localeCapacity the size of the locale buffer to store the locale id
+ * @param err the error code
+ * @return the length of the locale id in buffer
+ * @draft ICU 74
+ */
+U_CAPI int32_t U_EXPORT2
+ulocbld_buildLocaleID(ULocaleBuilder* builder, char* locale,
+ int32_t localeCapacity, UErrorCode* err);
+
+/**
+ * Build the ULocale object from the fields set on this builder.
+ * If any set methods or during the ulocbld_buildULocale() call require memory
+ * allocation but fail U_MEMORY_ALLOCATION_ERROR will be set to status.
+ * If any of the fields set by the setters are not well-formed, the status
+ * will be set to U_ILLEGAL_ARGUMENT_ERROR. The state of the builder will
+ * not change after the ulocbld_buildULocale() call and the caller is
+ * free to keep using the same builder to build more locales.
+ *
+ * @param builder the builder.
+ * @param err the error code.
+ * @return the locale, a ULocale* pointer. The created ULocale must be
+ * destroyed by calling {@link ulocale_close}.
+ * @draft ICU 74
+ */
+U_CAPI ULocale* U_EXPORT2
+ulocbld_buildULocale(ULocaleBuilder* builder, UErrorCode* err);
+
+/**
+ * Build the IETF BCP 47 language tag string from the fields set on this builder.
+ * If any set methods or during the ulocbld_buildLanguageTag() call require memory
+ * allocation but fail U_MEMORY_ALLOCATION_ERROR will be set to status.
+ * If any of the fields set by the setters are not well-formed, the status
+ * will be set to U_ILLEGAL_ARGUMENT_ERROR. The state of the builder will
+ * not change after the ulocbld_buildLanguageTag() call and the caller is free
+ * to keep using the same builder to build more locales.
+ *
+ * @param builder the builder
+ * @param language the language tag
+ * @param languageCapacity the size of the language buffer to store the language
+ * tag
+ * @param err the error code
+ * @return the length of the language tag in buffer
+ * @draft ICU 74
+ */
+U_CAPI int32_t U_EXPORT2
+ulocbld_buildLanguageTag(ULocaleBuilder* builder, char* language,
+ int32_t languageCapacity, UErrorCode* err);
+
+/**
+ * Sets the UErrorCode if an error occurred while recording sets.
+ * Preserves older error codes in the outErrorCode.
+ *
+ * @param builder the builder
+ * @param outErrorCode Set to an error code that occurred while setting subtags.
+ * Unchanged if there is no such error or if outErrorCode
+ * already contained an error.
+ * @return true if U_FAILURE(*outErrorCode)
+ * @draft ICU 74
+ */
+U_CAPI UBool U_EXPORT2
+ulocbld_copyErrorTo(const ULocaleBuilder* builder, UErrorCode *outErrorCode);
+
+#if U_SHOW_CPLUSPLUS_API
+
+U_NAMESPACE_BEGIN
+
+/**
+ * \class LocalULocaleBuilderPointer
+ * "Smart pointer" class, closes a ULocaleBuilder via ulocbld_close().
+ * For most methods see the LocalPointerBase base class.
+ *
+ * @see LocalPointerBase
+ * @see LocalPointer
+ * @draft ICU 74
+ */
+U_DEFINE_LOCAL_OPEN_POINTER(LocalULocaleBuilderPointer, ULocaleBuilder, ulocbld_close);
+
+U_NAMESPACE_END
+
+#endif /* U_SHOW_CPLUSPLUS_API */
+
+#endif /* U_HIDE_DRAFT_API */
+
+#endif // __ULOCBUILDER_H__
diff --git a/thirdparty/icu4c/common/unicode/unorm2.h b/thirdparty/icu4c/common/unicode/unorm2.h
index 24417b7103..3844041f17 100644
--- a/thirdparty/icu4c/common/unicode/unorm2.h
+++ b/thirdparty/icu4c/common/unicode/unorm2.h
@@ -181,7 +181,10 @@ U_CAPI const UNormalizer2 * U_EXPORT2
unorm2_getNFKDInstance(UErrorCode *pErrorCode);
/**
- * Returns a UNormalizer2 instance for Unicode NFKC_Casefold normalization.
+ * Returns a UNormalizer2 instance for Unicode toNFKC_Casefold() normalization
+ * which is equivalent to applying the NFKC_Casefold mappings and then NFC.
+ * See https://www.unicode.org/reports/tr44/#NFKC_Casefold
+ *
* Same as unorm2_getInstance(NULL, "nfkc_cf", UNORM2_COMPOSE, pErrorCode).
* Returns an unmodifiable singleton instance. Do not delete it.
* @param pErrorCode Standard ICU error code. Its input value must
@@ -194,6 +197,25 @@ unorm2_getNFKDInstance(UErrorCode *pErrorCode);
U_CAPI const UNormalizer2 * U_EXPORT2
unorm2_getNFKCCasefoldInstance(UErrorCode *pErrorCode);
+#ifndef U_HIDE_DRAFT_API
+/**
+ * Returns a UNormalizer2 instance for a variant of Unicode toNFKC_Casefold() normalization
+ * which is equivalent to applying the NFKC_Simple_Casefold mappings and then NFC.
+ * See https://www.unicode.org/reports/tr44/#NFKC_Simple_Casefold
+ *
+ * Same as unorm2_getInstance(NULL, "nfkc_scf", UNORM2_COMPOSE, pErrorCode).
+ * Returns an unmodifiable singleton instance. Do not delete it.
+ * @param pErrorCode Standard ICU error code. Its input value must
+ * pass the U_SUCCESS() test, or else the function returns
+ * immediately. Check for U_FAILURE() on output or use with
+ * function chaining. (See User Guide for details.)
+ * @return the requested Normalizer2, if successful
+ * @draft ICU 74
+ */
+U_CAPI const UNormalizer2 * U_EXPORT2
+unorm2_getNFKCSimpleCasefoldInstance(UErrorCode *pErrorCode);
+#endif // U_HIDE_DRAFT_API
+
/**
* Returns a UNormalizer2 instance which uses the specified data file
* (packageName/name similar to ucnv_openPackage() and ures_open()/ResourceBundle)
@@ -206,7 +228,7 @@ unorm2_getNFKCCasefoldInstance(UErrorCode *pErrorCode);
* Use name="nfkc_cf" and UNORM2_COMPOSE for Unicode standard NFKC_CF=NFKC_Casefold.
*
* @param packageName NULL for ICU built-in data, otherwise application data package name
- * @param name "nfc" or "nfkc" or "nfkc_cf" or name of custom data file
+ * @param name "nfc" or "nfkc" or "nfkc_cf" or "nfkc_scf" or name of custom data file
* @param mode normalization mode (compose or decompose etc.)
* @param pErrorCode Standard ICU error code. Its input value must
* pass the U_SUCCESS() test, or else the function returns
diff --git a/thirdparty/icu4c/common/unicode/urename.h b/thirdparty/icu4c/common/unicode/urename.h
index b35df45380..74f2cae510 100644
--- a/thirdparty/icu4c/common/unicode/urename.h
+++ b/thirdparty/icu4c/common/unicode/urename.h
@@ -138,8 +138,8 @@
#define locale_getKeywordsStart U_ICU_ENTRY_POINT_RENAME(locale_getKeywordsStart)
#define locale_get_default U_ICU_ENTRY_POINT_RENAME(locale_get_default)
#define locale_set_default U_ICU_ENTRY_POINT_RENAME(locale_set_default)
+#define mixedMeasuresToMicros U_ICU_ENTRY_POINT_RENAME(mixedMeasuresToMicros)
#define numSysCleanup U_ICU_ENTRY_POINT_RENAME(numSysCleanup)
-#define rbbi_cleanup U_ICU_ENTRY_POINT_RENAME(rbbi_cleanup)
#define pl_addFontRun U_ICU_ENTRY_POINT_RENAME(pl_addFontRun)
#define pl_addLocaleRun U_ICU_ENTRY_POINT_RENAME(pl_addLocaleRun)
#define pl_addValueRun U_ICU_ENTRY_POINT_RENAME(pl_addValueRun)
@@ -193,6 +193,7 @@
#define pl_resetFontRuns U_ICU_ENTRY_POINT_RENAME(pl_resetFontRuns)
#define pl_resetLocaleRuns U_ICU_ENTRY_POINT_RENAME(pl_resetLocaleRuns)
#define pl_resetValueRuns U_ICU_ENTRY_POINT_RENAME(pl_resetValueRuns)
+#define rbbi_cleanup U_ICU_ENTRY_POINT_RENAME(rbbi_cleanup)
#define res_countArrayItems U_ICU_ENTRY_POINT_RENAME(res_countArrayItems)
#define res_findResource U_ICU_ENTRY_POINT_RENAME(res_findResource)
#define res_getAlias U_ICU_ENTRY_POINT_RENAME(res_getAlias)
@@ -512,9 +513,6 @@
#define ubrk_setText U_ICU_ENTRY_POINT_RENAME(ubrk_setText)
#define ubrk_setUText U_ICU_ENTRY_POINT_RENAME(ubrk_setUText)
#define ubrk_swap U_ICU_ENTRY_POINT_RENAME(ubrk_swap)
-#define ucache_compareKeys U_ICU_ENTRY_POINT_RENAME(ucache_compareKeys)
-#define ucache_deleteKey U_ICU_ENTRY_POINT_RENAME(ucache_deleteKey)
-#define ucache_hashKeys U_ICU_ENTRY_POINT_RENAME(ucache_hashKeys)
#define ucal_add U_ICU_ENTRY_POINT_RENAME(ucal_add)
#define ucal_clear U_ICU_ENTRY_POINT_RENAME(ucal_clear)
#define ucal_clearField U_ICU_ENTRY_POINT_RENAME(ucal_clearField)
@@ -532,6 +530,7 @@
#define ucal_getFieldDifference U_ICU_ENTRY_POINT_RENAME(ucal_getFieldDifference)
#define ucal_getGregorianChange U_ICU_ENTRY_POINT_RENAME(ucal_getGregorianChange)
#define ucal_getHostTimeZone U_ICU_ENTRY_POINT_RENAME(ucal_getHostTimeZone)
+#define ucal_getIanaTimeZoneID U_ICU_ENTRY_POINT_RENAME(ucal_getIanaTimeZoneID)
#define ucal_getKeywordValuesForLocale U_ICU_ENTRY_POINT_RENAME(ucal_getKeywordValuesForLocale)
#define ucal_getLimit U_ICU_ENTRY_POINT_RENAME(ucal_getLimit)
#define ucal_getLocaleByType U_ICU_ENTRY_POINT_RENAME(ucal_getLocaleByType)
@@ -587,6 +586,7 @@
#define ucasemap_getLocale U_ICU_ENTRY_POINT_RENAME(ucasemap_getLocale)
#define ucasemap_getOptions U_ICU_ENTRY_POINT_RENAME(ucasemap_getOptions)
#define ucasemap_internalUTF8ToTitle U_ICU_ENTRY_POINT_RENAME(ucasemap_internalUTF8ToTitle)
+#define ucasemap_mapUTF8 U_ICU_ENTRY_POINT_RENAME(ucasemap_mapUTF8)
#define ucasemap_open U_ICU_ENTRY_POINT_RENAME(ucasemap_open)
#define ucasemap_setBreakIterator U_ICU_ENTRY_POINT_RENAME(ucasemap_setBreakIterator)
#define ucasemap_setLocale U_ICU_ENTRY_POINT_RENAME(ucasemap_setLocale)
@@ -955,9 +955,16 @@
#define ufieldpositer_close U_ICU_ENTRY_POINT_RENAME(ufieldpositer_close)
#define ufieldpositer_next U_ICU_ENTRY_POINT_RENAME(ufieldpositer_next)
#define ufieldpositer_open U_ICU_ENTRY_POINT_RENAME(ufieldpositer_open)
+#define ufile_close_translit U_ICU_ENTRY_POINT_RENAME(ufile_close_translit)
+#define ufile_fill_uchar_buffer U_ICU_ENTRY_POINT_RENAME(ufile_fill_uchar_buffer)
+#define ufile_flush_io U_ICU_ENTRY_POINT_RENAME(ufile_flush_io)
+#define ufile_flush_translit U_ICU_ENTRY_POINT_RENAME(ufile_flush_translit)
#define ufile_getch U_ICU_ENTRY_POINT_RENAME(ufile_getch)
#define ufile_getch32 U_ICU_ENTRY_POINT_RENAME(ufile_getch32)
+#define ufmt_64tou U_ICU_ENTRY_POINT_RENAME(ufmt_64tou)
#define ufmt_close U_ICU_ENTRY_POINT_RENAME(ufmt_close)
+#define ufmt_defaultCPToUnicode U_ICU_ENTRY_POINT_RENAME(ufmt_defaultCPToUnicode)
+#define ufmt_digitvalue U_ICU_ENTRY_POINT_RENAME(ufmt_digitvalue)
#define ufmt_getArrayItemByIndex U_ICU_ENTRY_POINT_RENAME(ufmt_getArrayItemByIndex)
#define ufmt_getArrayLength U_ICU_ENTRY_POINT_RENAME(ufmt_getArrayLength)
#define ufmt_getDate U_ICU_ENTRY_POINT_RENAME(ufmt_getDate)
@@ -969,7 +976,11 @@
#define ufmt_getType U_ICU_ENTRY_POINT_RENAME(ufmt_getType)
#define ufmt_getUChars U_ICU_ENTRY_POINT_RENAME(ufmt_getUChars)
#define ufmt_isNumeric U_ICU_ENTRY_POINT_RENAME(ufmt_isNumeric)
+#define ufmt_isdigit U_ICU_ENTRY_POINT_RENAME(ufmt_isdigit)
#define ufmt_open U_ICU_ENTRY_POINT_RENAME(ufmt_open)
+#define ufmt_ptou U_ICU_ENTRY_POINT_RENAME(ufmt_ptou)
+#define ufmt_uto64 U_ICU_ENTRY_POINT_RENAME(ufmt_uto64)
+#define ufmt_utop U_ICU_ENTRY_POINT_RENAME(ufmt_utop)
#define ufmtval_getString U_ICU_ENTRY_POINT_RENAME(ufmtval_getString)
#define ufmtval_nextPosition U_ICU_ENTRY_POINT_RENAME(ufmtval_nextPosition)
#define ugender_getInstance U_ICU_ENTRY_POINT_RENAME(ugender_getInstance)
@@ -1133,6 +1144,39 @@
#define uloc_toLegacyType U_ICU_ENTRY_POINT_RENAME(uloc_toLegacyType)
#define uloc_toUnicodeLocaleKey U_ICU_ENTRY_POINT_RENAME(uloc_toUnicodeLocaleKey)
#define uloc_toUnicodeLocaleType U_ICU_ENTRY_POINT_RENAME(uloc_toUnicodeLocaleType)
+#define ulocale_close U_ICU_ENTRY_POINT_RENAME(ulocale_close)
+#define ulocale_getBaseName U_ICU_ENTRY_POINT_RENAME(ulocale_getBaseName)
+#define ulocale_getKeywordValue U_ICU_ENTRY_POINT_RENAME(ulocale_getKeywordValue)
+#define ulocale_getKeywords U_ICU_ENTRY_POINT_RENAME(ulocale_getKeywords)
+#define ulocale_getLanguage U_ICU_ENTRY_POINT_RENAME(ulocale_getLanguage)
+#define ulocale_getLocaleID U_ICU_ENTRY_POINT_RENAME(ulocale_getLocaleID)
+#define ulocale_getRegion U_ICU_ENTRY_POINT_RENAME(ulocale_getRegion)
+#define ulocale_getScript U_ICU_ENTRY_POINT_RENAME(ulocale_getScript)
+#define ulocale_getUnicodeKeywordValue U_ICU_ENTRY_POINT_RENAME(ulocale_getUnicodeKeywordValue)
+#define ulocale_getUnicodeKeywords U_ICU_ENTRY_POINT_RENAME(ulocale_getUnicodeKeywords)
+#define ulocale_getVariant U_ICU_ENTRY_POINT_RENAME(ulocale_getVariant)
+#define ulocale_isBogus U_ICU_ENTRY_POINT_RENAME(ulocale_isBogus)
+#define ulocale_openForLanguageTag U_ICU_ENTRY_POINT_RENAME(ulocale_openForLanguageTag)
+#define ulocale_openForLocaleID U_ICU_ENTRY_POINT_RENAME(ulocale_openForLocaleID)
+#define ulocbld_addUnicodeLocaleAttribute U_ICU_ENTRY_POINT_RENAME(ulocbld_addUnicodeLocaleAttribute)
+#define ulocbld_adoptULocale U_ICU_ENTRY_POINT_RENAME(ulocbld_adoptULocale)
+#define ulocbld_buildLanguageTag U_ICU_ENTRY_POINT_RENAME(ulocbld_buildLanguageTag)
+#define ulocbld_buildLocaleID U_ICU_ENTRY_POINT_RENAME(ulocbld_buildLocaleID)
+#define ulocbld_buildULocale U_ICU_ENTRY_POINT_RENAME(ulocbld_buildULocale)
+#define ulocbld_clear U_ICU_ENTRY_POINT_RENAME(ulocbld_clear)
+#define ulocbld_clearExtensions U_ICU_ENTRY_POINT_RENAME(ulocbld_clearExtensions)
+#define ulocbld_close U_ICU_ENTRY_POINT_RENAME(ulocbld_close)
+#define ulocbld_copyErrorTo U_ICU_ENTRY_POINT_RENAME(ulocbld_copyErrorTo)
+#define ulocbld_open U_ICU_ENTRY_POINT_RENAME(ulocbld_open)
+#define ulocbld_removeUnicodeLocaleAttribute U_ICU_ENTRY_POINT_RENAME(ulocbld_removeUnicodeLocaleAttribute)
+#define ulocbld_setExtension U_ICU_ENTRY_POINT_RENAME(ulocbld_setExtension)
+#define ulocbld_setLanguage U_ICU_ENTRY_POINT_RENAME(ulocbld_setLanguage)
+#define ulocbld_setLanguageTag U_ICU_ENTRY_POINT_RENAME(ulocbld_setLanguageTag)
+#define ulocbld_setLocale U_ICU_ENTRY_POINT_RENAME(ulocbld_setLocale)
+#define ulocbld_setRegion U_ICU_ENTRY_POINT_RENAME(ulocbld_setRegion)
+#define ulocbld_setScript U_ICU_ENTRY_POINT_RENAME(ulocbld_setScript)
+#define ulocbld_setUnicodeLocaleKeyword U_ICU_ENTRY_POINT_RENAME(ulocbld_setUnicodeLocaleKeyword)
+#define ulocbld_setVariant U_ICU_ENTRY_POINT_RENAME(ulocbld_setVariant)
#define ulocdata_close U_ICU_ENTRY_POINT_RENAME(ulocdata_close)
#define ulocdata_getCLDRVersion U_ICU_ENTRY_POINT_RENAME(ulocdata_getCLDRVersion)
#define ulocdata_getDelimiter U_ICU_ENTRY_POINT_RENAME(ulocdata_getDelimiter)
@@ -1213,6 +1257,7 @@
#define unorm2_getNFDInstance U_ICU_ENTRY_POINT_RENAME(unorm2_getNFDInstance)
#define unorm2_getNFKCCasefoldInstance U_ICU_ENTRY_POINT_RENAME(unorm2_getNFKCCasefoldInstance)
#define unorm2_getNFKCInstance U_ICU_ENTRY_POINT_RENAME(unorm2_getNFKCInstance)
+#define unorm2_getNFKCSimpleCasefoldInstance U_ICU_ENTRY_POINT_RENAME(unorm2_getNFKCSimpleCasefoldInstance)
#define unorm2_getNFKDInstance U_ICU_ENTRY_POINT_RENAME(unorm2_getNFKDInstance)
#define unorm2_getRawDecomposition U_ICU_ENTRY_POINT_RENAME(unorm2_getRawDecomposition)
#define unorm2_hasBoundaryAfter U_ICU_ENTRY_POINT_RENAME(unorm2_hasBoundaryAfter)
@@ -1349,6 +1394,7 @@
#define uprv_convertToPosix U_ICU_ENTRY_POINT_RENAME(uprv_convertToPosix)
#define uprv_copyAscii U_ICU_ENTRY_POINT_RENAME(uprv_copyAscii)
#define uprv_copyEbcdic U_ICU_ENTRY_POINT_RENAME(uprv_copyEbcdic)
+#define uprv_currencyLeads U_ICU_ENTRY_POINT_RENAME(uprv_currencyLeads)
#define uprv_decContextClearStatus U_ICU_ENTRY_POINT_RENAME(uprv_decContextClearStatus)
#define uprv_decContextDefault U_ICU_ENTRY_POINT_RENAME(uprv_decContextDefault)
#define uprv_decContextGetRounding U_ICU_ENTRY_POINT_RENAME(uprv_decContextGetRounding)
@@ -1367,6 +1413,7 @@
#define uprv_decNumberAbs U_ICU_ENTRY_POINT_RENAME(uprv_decNumberAbs)
#define uprv_decNumberAdd U_ICU_ENTRY_POINT_RENAME(uprv_decNumberAdd)
#define uprv_decNumberAnd U_ICU_ENTRY_POINT_RENAME(uprv_decNumberAnd)
+#define uprv_decNumberClass U_ICU_ENTRY_POINT_RENAME(uprv_decNumberClass)
#define uprv_decNumberClassToString U_ICU_ENTRY_POINT_RENAME(uprv_decNumberClassToString)
#define uprv_decNumberCompare U_ICU_ENTRY_POINT_RENAME(uprv_decNumberCompare)
#define uprv_decNumberCompareSignal U_ICU_ENTRY_POINT_RENAME(uprv_decNumberCompareSignal)
@@ -1763,6 +1810,9 @@
#define usnumf_formatInt64 U_ICU_ENTRY_POINT_RENAME(usnumf_formatInt64)
#define usnumf_openForLocale U_ICU_ENTRY_POINT_RENAME(usnumf_openForLocale)
#define usnumf_openForLocaleAndGroupingStrategy U_ICU_ENTRY_POINT_RENAME(usnumf_openForLocaleAndGroupingStrategy)
+#define uspoof_areBidiConfusable U_ICU_ENTRY_POINT_RENAME(uspoof_areBidiConfusable)
+#define uspoof_areBidiConfusableUTF8 U_ICU_ENTRY_POINT_RENAME(uspoof_areBidiConfusableUTF8)
+#define uspoof_areBidiConfusableUnicodeString U_ICU_ENTRY_POINT_RENAME(uspoof_areBidiConfusableUnicodeString)
#define uspoof_areConfusable U_ICU_ENTRY_POINT_RENAME(uspoof_areConfusable)
#define uspoof_areConfusableUTF8 U_ICU_ENTRY_POINT_RENAME(uspoof_areConfusableUTF8)
#define uspoof_areConfusableUnicodeString U_ICU_ENTRY_POINT_RENAME(uspoof_areConfusableUnicodeString)
@@ -1778,6 +1828,9 @@
#define uspoof_getAllowedChars U_ICU_ENTRY_POINT_RENAME(uspoof_getAllowedChars)
#define uspoof_getAllowedLocales U_ICU_ENTRY_POINT_RENAME(uspoof_getAllowedLocales)
#define uspoof_getAllowedUnicodeSet U_ICU_ENTRY_POINT_RENAME(uspoof_getAllowedUnicodeSet)
+#define uspoof_getBidiSkeleton U_ICU_ENTRY_POINT_RENAME(uspoof_getBidiSkeleton)
+#define uspoof_getBidiSkeletonUTF8 U_ICU_ENTRY_POINT_RENAME(uspoof_getBidiSkeletonUTF8)
+#define uspoof_getBidiSkeletonUnicodeString U_ICU_ENTRY_POINT_RENAME(uspoof_getBidiSkeletonUnicodeString)
#define uspoof_getCheckResultChecks U_ICU_ENTRY_POINT_RENAME(uspoof_getCheckResultChecks)
#define uspoof_getCheckResultNumerics U_ICU_ENTRY_POINT_RENAME(uspoof_getCheckResultNumerics)
#define uspoof_getCheckResultRestrictionLevel U_ICU_ENTRY_POINT_RENAME(uspoof_getCheckResultRestrictionLevel)
diff --git a/thirdparty/icu4c/common/unicode/uvernum.h b/thirdparty/icu4c/common/unicode/uvernum.h
index fc784b2492..9fc98e7380 100644
--- a/thirdparty/icu4c/common/unicode/uvernum.h
+++ b/thirdparty/icu4c/common/unicode/uvernum.h
@@ -53,13 +53,13 @@
* This value will change in the subsequent releases of ICU
* @stable ICU 2.4
*/
-#define U_ICU_VERSION_MAJOR_NUM 73
+#define U_ICU_VERSION_MAJOR_NUM 74
/** The current ICU minor version as an integer.
* This value will change in the subsequent releases of ICU
* @stable ICU 2.6
*/
-#define U_ICU_VERSION_MINOR_NUM 2
+#define U_ICU_VERSION_MINOR_NUM 1
/** The current ICU patchlevel version as an integer.
* This value will change in the subsequent releases of ICU
@@ -79,7 +79,7 @@
* This value will change in the subsequent releases of ICU
* @stable ICU 2.6
*/
-#define U_ICU_VERSION_SUFFIX _73
+#define U_ICU_VERSION_SUFFIX _74
/**
* \def U_DEF2_ICU_ENTRY_POINT_RENAME
@@ -132,7 +132,7 @@
* This value will change in the subsequent releases of ICU
* @stable ICU 2.4
*/
-#define U_ICU_VERSION "73.2"
+#define U_ICU_VERSION "74.1"
/**
* The current ICU library major version number as a string, for library name suffixes.
@@ -145,13 +145,13 @@
*
* @stable ICU 2.6
*/
-#define U_ICU_VERSION_SHORT "73"
+#define U_ICU_VERSION_SHORT "74"
#ifndef U_HIDE_INTERNAL_API
/** Data version in ICU4C.
* @internal ICU 4.4 Internal Use Only
**/
-#define U_ICU_DATA_VERSION "73.2"
+#define U_ICU_DATA_VERSION "74.1"
#endif /* U_HIDE_INTERNAL_API */
/*===========================================================================