mirror of
https://github.com/unicode-org/icu.git
synced 2025-04-04 13:05:31 +00:00
Some checks failed
GHA ICU4J / icu4j-mvn-build-and-test (17) (push) Blocked by required conditions
GHA ICU4J / icu4j-mvn-build-and-test (21) (push) Blocked by required conditions
GHA ICU4J / icu4j-mvn-build-and-test (8) (push) Blocked by required conditions
GHA ICU4J / adaboost-icu4j-build-and-test (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-dateformatperf (en_US, "HH:mm zzzz" "13:13 Pacific Standard Time" 3, TestICUConstruction) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-dateformatperf (en_US, "HH:mm zzzz" "13:13 Pacific Standard Time" 3, TestICUFormat) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-dateformatperf (en_US, "HH:mm zzzz" "13:13 Pacific Standard Time" 3, TestICUParse) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-dateformatperf (en_US, "HH:mm" "13:13" 2, TestICUConstruction) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-dateformatperf (en_US, "HH:mm" "13:13" 2, TestICUFormat) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-dateformatperf (sw_KE, "dddd MMM yyyy" "15 Jan 2007" 1, TestICUConstruction) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-dateformatperf (sw_KE, "dddd MMM yyyy" "15 Jan 2007" 1, TestICUFormat) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-little-endian-data-test (push) Blocked by required conditions
GHA ICU Merge CI / icu4c-performance-tests (charperf, TestIsAlpha TestIsUpper TestIsLower TestIsDigit TestIsSpace TestIsAlphaNumeric TestIsPrint TestIsControl TestToLower TestToUpper TestIsWhiteSpace) (push) Blocked by required conditions
GHA ICU Merge CI / icu4c-performance-tests-with-files (TestNames_Chinese, -l -u, ustrperf, TestCtor TestCtor1 TestCtor2 TestCtor3 TestAssign TestAssign1 TestAssign2 TestGetch TestCatenate TestScan TestScan1 TestScan2) (push) Blocked by required conditions
GHA ICU Merge CI / icu4c-performance-tests-with-files (TestNames_Chinese, collperf, TestIcu_KeyGen_null TestIcu_qsort_strcoll_null TestIcu_qsort_usekey TestIcu_BinarySearch_strcoll_null TestIcu_BinarySearch_usekey) (push) Blocked by required conditions
GHA ICU Merge CI / icu4c-performance-tests-with-files (TestNames_Chinese, normperf, TestICU_NFC_NFD_Text TestICU_NFC_NFC_Text TestICU_NFC_Orig_Text TestICU_NFD_NFD_Text TestICU_NFD_NFC_Text TestICU_NFD_Orig_Text) (push) Blocked by required conditions
GHA ICU Merge CI / icu4c-performance-tests-with-files (TestNames_Japanese, collperf, TestIcu_KeyGen_null TestIcu_qsort_strcoll_null TestIcu_qsort_usekey TestIcu_BinarySearch_strcoll_null TestIcu_BinarySearch_usekey) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-decimalformatperf (de_DE, TestICUConstruction) (push) Blocked by required conditions
GHA ICU4J / lstm-icu4j-build-and-test (push) Blocked by required conditions
GHA ICU4J / icu4j-mvn-init-cache (push) Waiting to run
GHA ICU4J / icu4j-mvn-build-and-test (11) (push) Blocked by required conditions
ICU Common / copyright-scan (push) Waiting to run
ICU Common / valid-UTF-8-and-no-BOM-check (push) Waiting to run
ICU Common / icu4j-mvn-init-cache (push) Waiting to run
ICU Common / icu4c-release-tools (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-dateformatperf (en_US, "HH:mm z" "13:13 PST" 4, TestICUConstruction) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-dateformatperf (en_US, "HH:mm z" "13:13 PST" 4, TestICUFormat) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-dateformatperf (en_US, "HH:mm z" "13:13 PST" 4, TestICUParse) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-dateformatperf (en_US, "HH:mm" "13:13" 2, TestICUParse) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-dateformatperf (en_US, "dddd MMM yyyy" "15 Jan 2007" 1, TestICUConstruction) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-dateformatperf (en_US, "dddd MMM yyyy" "15 Jan 2007" 1, TestICUFormat) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-dateformatperf (en_US, "dddd MMM yyyy" "15 Jan 2007" 1, TestICUParse) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-mvn-init-cache (push) Waiting to run
GHA ICU Merge CI / icu4c-store-perf-libs (push) Waiting to run
GHA ICU Merge CI / icu4c-performance-tests (-f ../../icu4j/perf-tests/data/conversion/xuzhimo.txt, -e gb18030, utfperf, Roundtrip FromUnicode FromUTF8) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-dateformatperf (sw_KE, "dddd MMM yyyy" "15 Jan 2007" 1, TestICUParse) (push) Blocked by required conditions
GHA ICU Merge CI / icu4c-performance-tests (usetperf, titlecase_letter_add titlecase_letter_contains titlecase_letter_iterator unassigned_add unassigned_contains unassigned_iterator pattern1 pattern2 pattern3) (push) Blocked by required conditions
GHA ICU Merge CI / icu4c-performance-tests-with-files (TestNames_Asian, -l -u, ustrperf, TestCtor TestCtor1 TestCtor2 TestCtor3 TestAssign TestAssign1 TestAssign2 TestGetch TestCatenate TestScan TestScan1 TestScan2) (push) Blocked by required conditions
GHA ICU Merge CI / icu4c-performance-tests-with-files (TestNames_Asian, collperf, TestIcu_KeyGen_null TestIcu_qsort_strcoll_null TestIcu_qsort_usekey TestIcu_BinarySearch_strcoll_null TestIcu_BinarySearch_usekey) (push) Blocked by required conditions
GHA ICU Merge CI / icu4c-performance-tests-with-files (TestNames_Asian, normperf, TestICU_NFC_NFD_Text TestICU_NFC_NFC_Text TestICU_NFC_Orig_Text TestICU_NFD_NFD_Text TestICU_NFD_NFC_Text TestICU_NFD_Orig_Text) (push) Blocked by required conditions
GHA ICU Merge CI / icu4c-performance-tests-with-files (TestNames_Japanese_k, collperf, TestIcu_KeyGen_null TestIcu_qsort_strcoll_null TestIcu_qsort_usekey TestIcu_BinarySearch_strcoll_null TestIcu_BinarySearch_usekey) (push) Blocked by required conditions
GHA ICU Merge CI / icu4c-strsrchperf (udhr_cmn_hans, zh) (push) Blocked by required conditions
GHA ICU Merge CI / icu4c-strsrchperf (udhr_deu_1996, de) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-unicodesetperf (UnicodeSetContains) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-unicodesetperf (UnicodeSetIterate) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-normperf (-l, TestICU_NFC_NFC_Text, TestNames_SerbianSH) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-normperf (-l, TestICU_NFC_Orig_Text, TestNames_Asian) (push) Blocked by required conditions
GHA ICU Merge CI / Copy perf data to remote repo for visualization (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-normperf (-l, TestICU_NFC_Orig_Text, TestNames_Chinese) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-normperf (-l, TestICU_NFC_Orig_Text, TestNames_SerbianSH) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-normperf (-l, TestICU_NFD_NFC_Text, TestNames_Asian) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-normperf (-l, TestICU_NFD_NFC_Text, TestNames_Chinese) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-converterperf (TestCharsetDecoderICU, arabic, UTF-8) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-converterperf (TestCharsetDecoderICU, english, US-ASCII) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-converterperf (TestCharsetDecoderICU, english, UTF-8) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-converterperf (TestCharsetDecoderICU, french, UTF-16BE) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-converterperf (TestCharsetDecoderICU, french, UTF-16LE) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-converterperf (TestCharsetDecoderICU, french, UTF-8) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-converterperf (TestCharsetDecoderICU, french, csisolatin1) (push) Blocked by required conditions
GHA ICU Merge CI / icu4c-performance-tests-with-files (TestNames_Japanese, normperf, TestICU_NFC_NFD_Text TestICU_NFC_NFC_Text TestICU_NFC_Orig_Text TestICU_NFD_NFD_Text TestICU_NFD_NFC_Text TestICU_NFD_Orig_Text) (push) Blocked by required conditions
GHA ICU Merge CI / icu4c-performance-tests-with-files (TestNames_Japanese_h, -l -u, ustrperf, TestCtor TestCtor1 TestCtor2 TestCtor3 TestAssign TestAssign1 TestAssign2 TestGetch TestCatenate TestScan TestScan1 TestScan2) (push) Blocked by required conditions
GHA ICU Merge CI / icu4c-performance-tests-with-files (TestNames_Japanese_h, collperf, TestIcu_KeyGen_null TestIcu_qsort_strcoll_null TestIcu_qsort_usekey TestIcu_BinarySearch_strcoll_null TestIcu_BinarySearch_usekey) (push) Blocked by required conditions
GHA ICU Merge CI / icu4c-performance-tests-with-files (TestNames_Japanese_h, normperf, TestICU_NFC_NFD_Text TestICU_NFC_NFC_Text TestICU_NFC_Orig_Text TestICU_NFD_NFD_Text TestICU_NFD_NFC_Text TestICU_NFD_Orig_Text) (push) Blocked by required conditions
GHA ICU Merge CI / icu4c-performance-tests-with-files (TestNames_Japanese_k, -l -u, ustrperf, TestCtor TestCtor1 TestCtor2 TestCtor3 TestAssign TestAssign1 TestAssign2 TestGetch TestCatenate TestScan TestScan1 TestScan2) (push) Blocked by required conditions
GHA ICU Merge CI / icu4c-performance-tests-with-files (TestNames_Japanese_k, normperf, TestICU_NFC_NFD_Text TestICU_NFC_NFC_Text TestICU_NFC_Orig_Text TestICU_NFD_NFD_Text TestICU_NFD_NFC_Text TestICU_NFD_Orig_Text) (push) Blocked by required conditions
GHA ICU Merge CI / icu4c-performance-tests-with-files (TestNames_Korean, -l -u, ustrperf, TestCtor TestCtor1 TestCtor2 TestCtor3 TestAssign TestAssign1 TestAssign2 TestGetch TestCatenate TestScan TestScan1 TestScan2) (push) Blocked by required conditions
GHA ICU Merge CI / icu4c-performance-tests-with-files (TestNames_Korean, collperf, TestIcu_KeyGen_null TestIcu_qsort_strcoll_null TestIcu_qsort_usekey TestIcu_BinarySearch_strcoll_null TestIcu_BinarySearch_usekey) (push) Blocked by required conditions
GHA ICU Merge CI / icu4c-performance-tests-with-files (TestNames_Korean, normperf, TestICU_NFC_NFD_Text TestICU_NFC_NFC_Text TestICU_NFC_Orig_Text TestICU_NFD_NFD_Text TestICU_NFD_NFC_Text TestICU_NFD_Orig_Text) (push) Blocked by required conditions
GHA ICU Merge CI / icu4c-performance-tests-with-files (TestNames_Latin, -l -u, ustrperf, TestCtor TestCtor1 TestCtor2 TestCtor3 TestAssign TestAssign1 TestAssign2 TestGetch TestCatenate TestScan TestScan1 TestScan2) (push) Blocked by required conditions
GHA ICU Merge CI / icu4c-performance-tests-with-files (TestNames_Latin, collperf, TestIcu_KeyGen_null TestIcu_qsort_strcoll_null TestIcu_qsort_usekey TestIcu_BinarySearch_strcoll_null TestIcu_BinarySearch_usekey) (push) Blocked by required conditions
GHA ICU Merge CI / icu4c-performance-tests-with-files (TestNames_Latin, normperf, TestICU_NFC_NFD_Text TestICU_NFC_NFC_Text TestICU_NFC_Orig_Text TestICU_NFD_NFD_Text TestICU_NFD_NFC_Text TestICU_NFD_Orig_Text) (push) Blocked by required conditions
GHA ICU Merge CI / icu4c-performance-tests-with-files (TestNames_Russian, -l -u, ustrperf, TestCtor TestCtor1 TestCtor2 TestCtor3 TestAssign TestAssign1 TestAssign2 TestGetch TestCatenate TestScan TestScan1 TestScan2) (push) Blocked by required conditions
GHA ICU Merge CI / icu4c-performance-tests-with-files (TestNames_Russian, collperf, TestIcu_KeyGen_null TestIcu_qsort_strcoll_null TestIcu_qsort_usekey TestIcu_BinarySearch_strcoll_null TestIcu_BinarySearch_usekey) (push) Blocked by required conditions
GHA ICU Merge CI / icu4c-performance-tests-with-files (TestNames_Russian, normperf, TestICU_NFC_NFD_Text TestICU_NFC_NFC_Text TestICU_NFC_Orig_Text TestICU_NFD_NFD_Text TestICU_NFD_NFC_Text TestICU_NFD_Orig_Text) (push) Blocked by required conditions
GHA ICU Merge CI / icu4c-performance-tests-with-files (TestNames_SerbianSH, -l -u, ustrperf, TestCtor TestCtor1 TestCtor2 TestCtor3 TestAssign TestAssign1 TestAssign2 TestGetch TestCatenate TestScan TestScan1 TestScan2) (push) Blocked by required conditions
GHA ICU Merge CI / icu4c-performance-tests-with-files (TestNames_SerbianSH, collperf, TestIcu_KeyGen_null TestIcu_qsort_strcoll_null TestIcu_qsort_usekey TestIcu_BinarySearch_strcoll_null TestIcu_BinarySearch_usekey) (push) Blocked by required conditions
GHA ICU Merge CI / icu4c-performance-tests-with-files (TestNames_SerbianSH, normperf, TestICU_NFC_NFD_Text TestICU_NFC_NFC_Text TestICU_NFC_Orig_Text TestICU_NFD_NFD_Text TestICU_NFD_NFC_Text TestICU_NFD_Orig_Text) (push) Blocked by required conditions
GHA ICU Merge CI / icu4c-performance-tests-with-files (TestNames_SerbianSR, -l -u, ustrperf, TestCtor TestCtor1 TestCtor2 TestCtor3 TestAssign TestAssign1 TestAssign2 TestGetch TestCatenate TestScan TestScan1 TestScan2) (push) Blocked by required conditions
GHA ICU Merge CI / icu4c-performance-tests-with-files (TestNames_SerbianSR, collperf, TestIcu_KeyGen_null TestIcu_qsort_strcoll_null TestIcu_qsort_usekey TestIcu_BinarySearch_strcoll_null TestIcu_BinarySearch_usekey) (push) Blocked by required conditions
GHA ICU Merge CI / icu4c-performance-tests-with-files (TestNames_SerbianSR, normperf, TestICU_NFC_NFD_Text TestICU_NFC_NFC_Text TestICU_NFC_Orig_Text TestICU_NFD_NFD_Text TestICU_NFD_NFC_Text TestICU_NFD_Orig_Text) (push) Blocked by required conditions
GHA ICU Merge CI / icu4c-performance-tests-with-files (TestNames_Simplified_Chinese, -l -u, ustrperf, TestCtor TestCtor1 TestCtor2 TestCtor3 TestAssign TestAssign1 TestAssign2 TestGetch TestCatenate TestScan TestScan1 TestScan2) (push) Blocked by required conditions
GHA ICU Merge CI / icu4c-performance-tests-with-files (TestNames_Simplified_Chinese, collperf, TestIcu_KeyGen_null TestIcu_qsort_strcoll_null TestIcu_qsort_usekey TestIcu_BinarySearch_strcoll_null TestIcu_BinarySearch_usekey) (push) Blocked by required conditions
GHA ICU Merge CI / icu4c-performance-tests-with-files (TestNames_Thai, -l -u, ustrperf, TestCtor TestCtor1 TestCtor2 TestCtor3 TestAssign TestAssign1 TestAssign2 TestGetch TestCatenate TestScan TestScan1 TestScan2) (push) Blocked by required conditions
GHA ICU Merge CI / icu4c-performance-tests-with-files (TestNames_Thai, collperf, TestIcu_KeyGen_null TestIcu_qsort_strcoll_null TestIcu_qsort_usekey TestIcu_BinarySearch_strcoll_null TestIcu_BinarySearch_usekey) (push) Blocked by required conditions
GHA ICU Merge CI / icu4c-performance-tests-with-files (TestNames_Thai, normperf, TestICU_NFC_NFD_Text TestICU_NFC_NFC_Text TestICU_NFC_Orig_Text TestICU_NFD_NFD_Text TestICU_NFD_NFC_Text TestICU_NFD_Orig_Text) (push) Blocked by required conditions
GHA ICU Merge CI / icu4c-performance-tests-with-files (th18057, -l -u, ustrperf, TestCtor TestCtor1 TestCtor2 TestCtor3 TestAssign TestAssign1 TestAssign2 TestGetch TestCatenate TestScan TestScan1 TestScan2) (push) Blocked by required conditions
GHA ICU Merge CI / icu4c-performance-tests-with-files (th18057, normperf, TestICU_NFC_NFD_Text TestICU_NFC_NFC_Text TestICU_NFC_Orig_Text TestICU_NFD_NFD_Text TestICU_NFD_NFC_Text TestICU_NFD_Orig_Text) (push) Blocked by required conditions
GHA ICU Merge CI / icu4c-performance-tests-with-files (thesis, normperf, TestICU_NFC_NFD_Text TestICU_NFC_NFC_Text TestICU_NFC_Orig_Text TestICU_NFD_NFD_Text TestICU_NFD_NFC_Text TestICU_NFD_Orig_Text) (push) Blocked by required conditions
GHA ICU Merge CI / icu4c-performance-tests-with-files (vfear11a, normperf, TestICU_NFC_NFD_Text TestICU_NFC_NFC_Text TestICU_NFC_Orig_Text TestICU_NFD_NFD_Text TestICU_NFD_NFC_Text TestICU_NFD_Orig_Text) (push) Blocked by required conditions
GHA ICU Merge CI / icu4c-strsrchperf (udhr_eng, en) (push) Blocked by required conditions
GHA ICU Merge CI / icu4c-strsrchperf (udhr_fra, fr) (push) Blocked by required conditions
GHA ICU Merge CI / icu4c-strsrchperf (udhr_jpn, ja) (push) Blocked by required conditions
GHA ICU Merge CI / icu4c-strsrchperf (udhr_rus, ru) (push) Blocked by required conditions
GHA ICU Merge CI / icu4c-strsrchperf (udhr_tha, th) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-unicodesetperf (UnicodeSetAdd) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-ucharacterperf (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-decimalformatperf (de_DE, TestICUFormat) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-decimalformatperf (de_DE, TestICUParse) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-decimalformatperf (en_US, TestICUConstruction) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-decimalformatperf (en_US, TestICUFormat) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-decimalformatperf (en_US, TestICUParse) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-normperf (-l, TestICU_NFC_NFC_Text, TestNames_Asian) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-normperf (-l, TestICU_NFC_NFC_Text, TestNames_Chinese) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-normperf (-l, TestICU_NFD_NFC_Text, TestNames_SerbianSH) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-normperf (-l, TestICU_NFD_NFD_Text, TestNames_Asian) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-normperf (-l, TestICU_NFD_NFD_Text, TestNames_Chinese) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-normperf (-l, TestICU_NFD_NFD_Text, TestNames_SerbianSH) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-normperf (-l, TestICU_NFD_Orig_Text, TestNames_Asian) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-normperf (-l, TestICU_NFD_Orig_Text, TestNames_Chinese) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-normperf (-l, TestICU_NFD_Orig_Text, TestNames_SerbianSH) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-converterperf (TestCharsetDecoderICU, arabic, csisolatinarabic) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-converterperf (TestCharsetDecoderICU, korean, csiso2022kr) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-converterperf (TestCharsetDecoderICU, s-chinese, EUC-CN) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-converterperf (TestCharsetDecoderICU, s-chinese, UTF-8) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-converterperf (TestCharsetEncoderICU, hebrew, csisolatinhebrew) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-converterperf (TestCharsetEncoderICU, hindi, UTF-8) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-converterperf (TestCharsetEncoderICU, japanese, EUC-JP) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-converterperf (TestCharsetEncoderICU, korean, csiso2022kr) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-converterperf (TestCharsetEncoderICU, s-chinese, EUC-CN) (push) Blocked by required conditions
GHA ICU Merge CI / icu4c-windows-msvc-postmerge (x64, Debug, x64) (push) Waiting to run
GHA ICU Merge CI / icu4c-windows-msvc-postmerge (x64, Release, x64) (push) Waiting to run
GHA ICU Merge CI / icu4j-converterperf (TestCharsetDecoderICU, greek, UTF-8) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-converterperf (TestCharsetDecoderICU, greek, csisolatingreek) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-converterperf (TestCharsetDecoderICU, hebrew, UTF-8) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-converterperf (TestCharsetDecoderICU, hebrew, csisolatinhebrew) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-converterperf (TestCharsetDecoderICU, hindi, UTF-8) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-converterperf (TestCharsetDecoderICU, japanese, EUC-JP) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-converterperf (TestCharsetDecoderICU, japanese, UTF-8) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-converterperf (TestCharsetDecoderICU, japanese, csiso2022jp) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-converterperf (TestCharsetDecoderICU, korean, UTF-8) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-converterperf (TestCharsetEncoderICU, arabic, UTF-8) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-converterperf (TestCharsetEncoderICU, arabic, csisolatinarabic) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-converterperf (TestCharsetEncoderICU, english, US-ASCII) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-converterperf (TestCharsetEncoderICU, english, UTF-8) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-converterperf (TestCharsetEncoderICU, french, UTF-16BE) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-converterperf (TestCharsetEncoderICU, french, UTF-16LE) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-converterperf (TestCharsetEncoderICU, french, UTF-8) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-converterperf (TestCharsetEncoderICU, french, csisolatin1) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-converterperf (TestCharsetEncoderICU, greek, UTF-8) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-converterperf (TestCharsetEncoderICU, greek, csisolatingreek) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-converterperf (TestCharsetEncoderICU, hebrew, UTF-8) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-converterperf (TestCharsetEncoderICU, japanese, UTF-8) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-converterperf (TestCharsetEncoderICU, japanese, csiso2022jp) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-converterperf (TestCharsetEncoderICU, korean, UTF-8) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-converterperf (TestCharsetEncoderICU, s-chinese, UTF-8) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-dateformatperf (en_US, "HH:mm Z" "13:13 -0800" 5, TestICUConstruction) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-dateformatperf (en_US, "HH:mm Z" "13:13 -0800" 5, TestICUFormat) (push) Blocked by required conditions
GHA ICU Merge CI / icu4j-dateformatperf (en_US, "HH:mm Z" "13:13 -0800" 5, TestICUParse) (push) Blocked by required conditions
GHA ICU Merge CI / icu4c-windows-msvc-postmerge (x86, Debug, Win32) (push) Waiting to run
GHA ICU Merge CI / icu4c-windows-msvc-postmerge (x86, Release, Win32) (push) Waiting to run
GHA ICU Merge CI / icu4c-windows-cygwin-gcc (push) Waiting to run
Scorecard supply-chain security / Scorecard analysis (push) Waiting to run
GHA CI Valgrind / clang-valgrind-intltest (spoof) (push) Has been cancelled
GHA ICU4C / windows-msvc (/p:Configuration=Debug /p:Platform=Win32, x86 Debug) (push) Has been cancelled
GHA ICU4C / windows-msvc (/p:Configuration=Debug /p:Platform=x64, x64 Debug) (push) Has been cancelled
GHA ICU4C / windows-msvc (/p:Configuration=Release /p:Platform=ARM, arm Release) (push) Has been cancelled
GHA ICU4C / windows-msvc (/p:LanguageStandard=stdcpplatest /p:Configuration=Release /p:Platform=x64, x64 Release) (push) Has been cancelled
GHA ICU4C / windows-msvc (/p:_HAS_EXCEPTIONS=0 /p:Configuration=Release /p:Platform=x64, x64 Release) (push) Has been cancelled
CIFuzz / Fuzzing (address) (push) Has been cancelled
CIFuzz / Fuzzing (undefined) (push) Has been cancelled
GHA CI Valgrind / clang-valgrind-intltest (translit) (push) Has been cancelled
GHA ICU4C / icu4c-docs-build (push) Has been cancelled
GHA ICU4C / clang18-cpp20-warning-as-errors (-std=c++20) (push) Has been cancelled
GHA ICU4C / windows-msys2-gcc-x86_64 (push) Has been cancelled
GHA ICU4C / run-with-stubdata (push) Has been cancelled
GHA ICU4C / u-charset-is-utf8-test (push) Has been cancelled
GHA ICU4C / u-override-cxx-allocation-is-0-test (push) Has been cancelled
GHA ICU4C / lstm-test (push) Has been cancelled
GHA ICU4C / uconfig-unit-tests (-DUCONFIG_NO_BREAK_ITERATION=1) (push) Has been cancelled
GHA ICU4C / uconfig-header-tests (-DUCONFIG_NO_IDNA=1) (push) Has been cancelled
GHA ICU4C / uconfig-header-tests (-DUCONFIG_NO_LEGACY_CONVERSION=1 -DUCONFIG_NO_NORMALIZATION=1 -DUCONFIG_NO_BREAK_ITERATION=1 -DUCONFIG_NO_IDNA=1 -DUCONFIG_NO_COLLATION=1 -DUCONFIG_NO_FORMATTING=1 -DUCONFIG_NO_MF2=1 -DUCONFIG_NO_TRANSLITERATION=1 -DUCONFIG_NO_REG… (push) Has been cancelled
GHA ICU4C / uconfig-header-tests (-DUCONFIG_NO_LEGACY_CONVERSION=1) (push) Has been cancelled
GHA ICU4C / icu4c-without-collation-rule-strings (push) Has been cancelled
GHA ICU4C / icu4c-icuexportdata (push) Has been cancelled
GHA CI Valgrind / clang-valgrind-intltest (rbbi) (push) Has been cancelled
GHA CI Valgrind / clang-valgrind-test (push) Has been cancelled
GHA CI Valgrind / clang-valgrind-intltest (bidi) (push) Has been cancelled
GHA CI Valgrind / clang-valgrind-intltest (collator) (push) Has been cancelled
GHA CI Valgrind / clang-valgrind-intltest (convert) (push) Has been cancelled
GHA CI Valgrind / clang-valgrind-intltest (csdet) (push) Has been cancelled
GHA CI Valgrind / clang-valgrind-intltest (format) (push) Has been cancelled
GHA CI Valgrind / clang-valgrind-intltest (rbnfrt) (push) Has been cancelled
GHA CI Valgrind / clang-valgrind-intltest (regex) (push) Has been cancelled
GHA ICU4C / gcc-debug-build-and-test (push) Has been cancelled
GHA ICU4C / clang-asan (push) Has been cancelled
GHA ICU4C / gcc11-cpp20 (push) Has been cancelled
GHA ICU4C / clang-release-build-and-test (push) Has been cancelled
GHA ICU4C / clang-options-build-and-test (--enable-static --disable-shared) (push) Has been cancelled
GHA ICU4C / clang-options-build-and-test (--enable-static) (push) Has been cancelled
GHA ICU4C / gcc-10-stdlib17 (push) Has been cancelled
GHA ICU4C / clang-lsan (push) Has been cancelled
GHA ICU4C / clang-ubsan (push) Has been cancelled
GHA ICU4C / clang-cfi (push) Has been cancelled
GHA ICU4C / clang-tsan (push) Has been cancelled
GHA ICU4C / clang-datafilter (push) Has been cancelled
GHA ICU4C / clang-cpp17 (push) Has been cancelled
GHA ICU4C / clang-lang-with-extn-tags (push) Has been cancelled
GHA ICU4C / clang18-cpp20-warning-as-errors (-std=c++20 -stdlib=libc++) (push) Has been cancelled
GHA ICU4C / macos-clang (push) Has been cancelled
GHA ICU4C / windows-msvc-datafilter (push) Has been cancelled
GHA ICU4C / windows-msvc-dist-release (arm64, ARM64, WinARM64) (push) Has been cancelled
GHA ICU4C / windows-msvc-dist-release (x64, x64, Win64) (push) Has been cancelled
GHA ICU4C / windows-msvc-dist-release (x86, Win32, Win32) (push) Has been cancelled
GHA ICU4C / adaboost-test (push) Has been cancelled
GHA ICU4C / testmap (push) Has been cancelled
GHA ICU4C / copyright-scan (push) Has been cancelled
GHA ICU4C / internal-header-compilation (push) Has been cancelled
GHA ICU4C / valid-UTF-8-and-no-BOM-check (push) Has been cancelled
GHA ICU4C / uconfig-unit-tests (-DUCONFIG_NO_COLLATION=1) (push) Has been cancelled
GHA ICU4C / uconfig-unit-tests (-DUCONFIG_NO_FILTERED_BREAK_ITERATION=1) (push) Has been cancelled
GHA ICU4C / uconfig-unit-tests (-DUCONFIG_NO_FORMATTING=1) (push) Has been cancelled
GHA ICU4C / uconfig-unit-tests (-DUCONFIG_NO_IDNA=1) (push) Has been cancelled
GHA ICU4C / uconfig-unit-tests (-DUCONFIG_NO_LEGACY_CONVERSION=1 -DUCONFIG_NO_NORMALIZATION=1 -DUCONFIG_NO_BREAK_ITERATION=1 -DUCONFIG_NO_IDNA=1 -DUCONFIG_NO_COLLATION=1 -DUCONFIG_NO_FORMATTING=1 -DUCONFIG_NO_MF2=1 -DUCONFIG_NO_TRANSLITERATION=1 -DUCONFIG_NO_REGUL… (push) Has been cancelled
GHA ICU4C / uconfig-unit-tests (-DUCONFIG_NO_LEGACY_CONVERSION=1) (push) Has been cancelled
GHA ICU4C / uconfig-unit-tests (-DUCONFIG_NO_MF2=1) (push) Has been cancelled
GHA ICU4C / uconfig-unit-tests (-DUCONFIG_NO_NORMALIZATION=1) (push) Has been cancelled
GHA ICU4C / uconfig-unit-tests (-DUCONFIG_NO_REGULAR_EXPRESSIONS=1) (push) Has been cancelled
GHA ICU4C / uconfig-unit-tests (-DUCONFIG_NO_SERVICE=1) (push) Has been cancelled
GHA ICU4C / uconfig-unit-tests (-DUCONFIG_NO_TRANSLITERATION=1) (push) Has been cancelled
GHA ICU4C / uconfig-header-tests (-DUCONFIG_NO_BREAK_ITERATION=1) (push) Has been cancelled
GHA ICU4C / uconfig-header-tests (-DUCONFIG_NO_COLLATION=1) (push) Has been cancelled
GHA ICU4C / uconfig-header-tests (-DUCONFIG_NO_FILTERED_BREAK_ITERATION=1) (push) Has been cancelled
GHA ICU4C / uconfig-header-tests (-DUCONFIG_NO_FORMATTING=1) (push) Has been cancelled
GHA ICU4C / uconfig-header-tests (-DUCONFIG_NO_MF2=1) (push) Has been cancelled
GHA ICU4C / uconfig-header-tests (-DUCONFIG_NO_NORMALIZATION=1) (push) Has been cancelled
GHA ICU4C / uconfig-header-tests (-DUCONFIG_NO_REGULAR_EXPRESSIONS=1) (push) Has been cancelled
GHA ICU4C / uconfig-header-tests (-DUCONFIG_NO_SERVICE=1) (push) Has been cancelled
GHA ICU4C / uconfig-header-tests (-DUCONFIG_NO_TRANSLITERATION=1) (push) Has been cancelled
GHA ICU4C / unicode-update-tools (push) Has been cancelled
GHA ICU4C / icu4c-test-samples (push) Has been cancelled
GHA ICU4C / icu4c-uconfig-no-conversion (push) Has been cancelled
GHA CI Valgrind / clang-valgrind-intltest (icuserv) (push) Has been cancelled
GHA CI Valgrind / clang-valgrind-intltest (idna) (push) Has been cancelled
GHA CI Valgrind / clang-valgrind-intltest (normalize) (push) Has been cancelled
GHA CI Valgrind / clang-valgrind-intltest (rbnf) (push) Has been cancelled
GHA CI Valgrind / clang-valgrind-intltest (rbnfp) (push) Has been cancelled
GHA CI Valgrind / clang-valgrind-intltest (utility) (push) Has been cancelled
Update spec tests to current version from message-format-wg - Update parser for changed name-start grammar rule - Validate number literals in :number implementation (since parser no longer does this) - Disallow `:number`/`:integer` select option set from variable See https://github.com/unicode-org/message-format-wg/pull/1016 As part of this, un-skip tests where the `bad-option` error is expected, and implement validating digit size options (pending PR https://github.com/unicode-org/icu/pull/2973 is intended to do this more fully)
1031 lines
39 KiB
C++
1031 lines
39 KiB
C++
// © 2024 and later: Unicode, Inc. and others.
|
|
// License & terms of use: http://www.unicode.org/copyright.html
|
|
|
|
#include "unicode/utypes.h"
|
|
|
|
#ifndef MESSAGEFORMAT2_FORMATTABLE_H
|
|
#define MESSAGEFORMAT2_FORMATTABLE_H
|
|
|
|
#if U_SHOW_CPLUSPLUS_API
|
|
|
|
#if !UCONFIG_NO_NORMALIZATION
|
|
|
|
#if !UCONFIG_NO_FORMATTING
|
|
|
|
#if !UCONFIG_NO_MF2
|
|
|
|
#include "unicode/chariter.h"
|
|
#include "unicode/numberformatter.h"
|
|
#include "unicode/messageformat2_data_model_names.h"
|
|
|
|
#ifndef U_HIDE_DEPRECATED_API
|
|
|
|
#include <map>
|
|
#include <variant>
|
|
|
|
U_NAMESPACE_BEGIN
|
|
|
|
class Hashtable;
|
|
class UVector;
|
|
|
|
namespace message2 {
|
|
|
|
class Formatter;
|
|
class MessageContext;
|
|
class Selector;
|
|
|
|
// Formattable
|
|
// ----------
|
|
|
|
/**
|
|
* `FormattableObject` is an abstract class that can be implemented in order to define
|
|
* an arbitrary class that can be passed to a custom formatter or selector function.
|
|
* To be passed in such a way, it must be wrapped in a `Formattable` object.
|
|
*
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for technology preview only.
|
|
*/
|
|
class U_I18N_API FormattableObject : public UObject {
|
|
public:
|
|
/**
|
|
* Returns an arbitrary string representing the type of this object.
|
|
* It's up to the implementor of this class, as well as the implementors
|
|
* of any custom functions that rely on particular values of this tag
|
|
* corresponding to particular classes that the object contents can be
|
|
* downcast to, to ensure that the type tags are used soundly.
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for technology preview only.
|
|
*/
|
|
virtual const UnicodeString& tag() const = 0;
|
|
/**
|
|
* Destructor.
|
|
*
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for technology preview only.
|
|
*/
|
|
virtual ~FormattableObject();
|
|
}; // class FormattableObject
|
|
|
|
class Formattable;
|
|
} // namespace message2
|
|
|
|
U_NAMESPACE_END
|
|
|
|
/// @cond DOXYGEN_IGNORE
|
|
// Export an explicit template instantiation of the std::variant that is used
|
|
// to represent the message2::Formattable class.
|
|
// (When building DLLs for Windows this is required.)
|
|
// (See measunit_impl.h, datefmt.h, collationiterator.h, erarules.h and others
|
|
// for similar examples.)
|
|
#if U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN
|
|
#if defined(U_REAL_MSVC) && defined(_MSVC_STL_VERSION)
|
|
template class U_I18N_API std::_Variant_storage_<false,
|
|
double,
|
|
int64_t,
|
|
icu::UnicodeString,
|
|
icu::Formattable,
|
|
const icu::message2::FormattableObject *,
|
|
std::pair<const icu::message2::Formattable *,int32_t>>;
|
|
#endif
|
|
typedef std::pair<const icu::message2::Formattable*, int32_t> P;
|
|
template class U_I18N_API std::variant<double,
|
|
int64_t,
|
|
icu::UnicodeString,
|
|
icu::Formattable,
|
|
const icu::message2::FormattableObject*,
|
|
P>;
|
|
#endif
|
|
/// @endcond
|
|
|
|
U_NAMESPACE_BEGIN
|
|
|
|
namespace message2 {
|
|
/**
|
|
* The `Formattable` class represents a typed value that can be formatted,
|
|
* originating either from a message argument or a literal in the code.
|
|
* ICU's Formattable class is not used in MessageFormat 2 because it's unsafe to copy an
|
|
* icu::Formattable value that contains an object. (See ICU-20275).
|
|
*
|
|
* `Formattable` is immutable (not deeply immutable) and
|
|
* is movable and copyable.
|
|
* (Copying does not do a deep copy when the wrapped value is an array or
|
|
* object. Likewise, while a pointer to a wrapped array or object is `const`,
|
|
* the referents of the pointers may be mutated by other code.)
|
|
*
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for technology preview only.
|
|
*/
|
|
class U_I18N_API Formattable : public UObject {
|
|
public:
|
|
|
|
/**
|
|
* Gets the data type of this Formattable object.
|
|
* @return the data type of this Formattable object.
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for technology preview only.
|
|
*/
|
|
UFormattableType getType() const;
|
|
|
|
/**
|
|
* Gets the double value of this object. If this object is not of type
|
|
* UFMT_DOUBLE, then the result is undefined and the error code is set.
|
|
*
|
|
* @param status Input/output error code.
|
|
* @return the double value of this object.
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for technology preview only.
|
|
*/
|
|
double getDouble(UErrorCode& status) const {
|
|
if (U_SUCCESS(status)) {
|
|
if (isDecimal() && getType() == UFMT_DOUBLE) {
|
|
return (std::get_if<icu::Formattable>(&contents))->getDouble();
|
|
}
|
|
if (std::holds_alternative<double>(contents)) {
|
|
return *(std::get_if<double>(&contents));
|
|
}
|
|
status = U_ILLEGAL_ARGUMENT_ERROR;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
/**
|
|
* Gets the long value of this object. If this object is not of type
|
|
* UFMT_LONG then the result is undefined and the error code is set.
|
|
*
|
|
* @param status Input/output error code.
|
|
* @return the long value of this object.
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for technology preview only.
|
|
*/
|
|
int32_t getLong(UErrorCode& status) const {
|
|
if (U_SUCCESS(status)) {
|
|
if (isDecimal() && getType() == UFMT_LONG) {
|
|
return std::get_if<icu::Formattable>(&contents)->getLong();
|
|
}
|
|
if (std::holds_alternative<int64_t>(contents)) {
|
|
return static_cast<int32_t>(*(std::get_if<int64_t>(&contents)));
|
|
}
|
|
status = U_ILLEGAL_ARGUMENT_ERROR;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
/**
|
|
* Gets the int64 value of this object. If this object is not of type
|
|
* kInt64 then the result is undefined and the error code is set.
|
|
* If conversion to int64 is desired, call getInt64()
|
|
*
|
|
* @param status Input/output error code.
|
|
* @return the int64 value of this object.
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for technology preview only.
|
|
*/
|
|
int64_t getInt64Value(UErrorCode& status) const {
|
|
if (U_SUCCESS(status)) {
|
|
if (isDecimal() && getType() == UFMT_INT64) {
|
|
return std::get_if<icu::Formattable>(&contents)->getInt64();
|
|
}
|
|
if (std::holds_alternative<int64_t>(contents)) {
|
|
return *(std::get_if<int64_t>(&contents));
|
|
}
|
|
status = U_ILLEGAL_ARGUMENT_ERROR;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
/**
|
|
* Gets the int64 value of this object. If this object is of a numeric
|
|
* type and the magnitude is too large to fit in an int64, then
|
|
* the maximum or minimum int64 value, as appropriate, is returned
|
|
* and the status is set to U_INVALID_FORMAT_ERROR. If the
|
|
* magnitude fits in an int64, then a casting conversion is
|
|
* performed, with truncation of any fractional part. If this object is
|
|
* not a numeric type, then 0 is returned and
|
|
* the status is set to U_INVALID_FORMAT_ERROR.
|
|
* @param status the error code
|
|
* @return the int64 value of this object.
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for technology preview only.
|
|
*/
|
|
int64_t getInt64(UErrorCode& status) const;
|
|
/**
|
|
* Gets the string value of this object. If this object is not of type
|
|
* kString then the result is undefined and the error code is set.
|
|
*
|
|
* @param status Input/output error code.
|
|
* @return A reference to the string value of this object.
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for technology preview only.
|
|
*/
|
|
const UnicodeString& getString(UErrorCode& status) const {
|
|
if (U_SUCCESS(status)) {
|
|
if (std::holds_alternative<UnicodeString>(contents)) {
|
|
return *std::get_if<UnicodeString>(&contents);
|
|
}
|
|
status = U_ILLEGAL_ARGUMENT_ERROR;
|
|
}
|
|
return bogusString;
|
|
}
|
|
|
|
/**
|
|
* Gets the Date value of this object. If this object is not of type
|
|
* kDate then the result is undefined and the error code is set.
|
|
*
|
|
* @param status Input/output error code.
|
|
* @return the Date value of this object.
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for technology preview only.
|
|
*/
|
|
UDate getDate(UErrorCode& status) const {
|
|
if (U_SUCCESS(status)) {
|
|
if (isDate()) {
|
|
return *std::get_if<double>(&contents);
|
|
}
|
|
status = U_ILLEGAL_ARGUMENT_ERROR;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
/**
|
|
* Returns true if the data type of this Formattable object
|
|
* is kDouble
|
|
* @return true if this is a pure numeric object
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for technology preview only.
|
|
*/
|
|
UBool isNumeric() const { return (getType() == UFMT_DOUBLE || getType() == UFMT_LONG || getType() == UFMT_INT64); }
|
|
|
|
/**
|
|
* Gets the array value and count of this object. If this object
|
|
* is not of type kArray then the result is undefined and the error code is set.
|
|
*
|
|
* @param count fill-in with the count of this object.
|
|
* @param status Input/output error code.
|
|
* @return the array value of this object.
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for technology preview only.
|
|
*/
|
|
const Formattable* getArray(int32_t& count, UErrorCode& status) const;
|
|
|
|
/**
|
|
* Returns a pointer to the FormattableObject contained within this
|
|
* formattable, or if this object does not contain a FormattableObject,
|
|
* returns nullptr and sets the error code.
|
|
*
|
|
* @param status Input/output error code.
|
|
* @return a FormattableObject pointer, or nullptr
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for technology preview only.
|
|
*/
|
|
const FormattableObject* getObject(UErrorCode& status) const {
|
|
if (U_SUCCESS(status)) {
|
|
// Can't return a reference since FormattableObject
|
|
// is an abstract class
|
|
if (getType() == UFMT_OBJECT) {
|
|
return *std::get_if<const FormattableObject*>(&contents);
|
|
// TODO: should assert that if type is object, object is non-null
|
|
}
|
|
status = U_ILLEGAL_ARGUMENT_ERROR;
|
|
}
|
|
return nullptr;
|
|
}
|
|
/**
|
|
* Non-member swap function.
|
|
* @param f1 will get f2's contents
|
|
* @param f2 will get f1's contents
|
|
*
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for technology preview only.
|
|
*/
|
|
friend inline void swap(Formattable& f1, Formattable& f2) noexcept {
|
|
using std::swap;
|
|
|
|
swap(f1.contents, f2.contents);
|
|
swap(f1.holdsDate, f2.holdsDate);
|
|
}
|
|
/**
|
|
* Copy constructor.
|
|
*
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for technology preview only.
|
|
*/
|
|
Formattable(const Formattable&);
|
|
/**
|
|
* Assignment operator
|
|
*
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for technology preview only.
|
|
*/
|
|
Formattable& operator=(Formattable) noexcept;
|
|
/**
|
|
* Default constructor. Leaves the Formattable in a
|
|
* valid but undefined state.
|
|
*
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for technology preview only.
|
|
*/
|
|
Formattable() : contents(0.0) {}
|
|
/**
|
|
* String constructor.
|
|
*
|
|
* @param s A string to wrap as a Formattable.
|
|
*
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for technology preview only.
|
|
*/
|
|
Formattable(const UnicodeString& s) : contents(s) {}
|
|
/**
|
|
* Double constructor.
|
|
*
|
|
* @param d A double value to wrap as a Formattable.
|
|
*
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for technology preview only.
|
|
*/
|
|
Formattable(double d) : contents(d) {}
|
|
/**
|
|
* Int64 constructor.
|
|
*
|
|
* @param i An int64 value to wrap as a Formattable.
|
|
*
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for technology preview only.
|
|
*/
|
|
Formattable(int64_t i) : contents(i) {}
|
|
/**
|
|
* Date factory method.
|
|
*
|
|
* @param d A UDate value to wrap as a Formattable.
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for technology preview only.
|
|
*/
|
|
static Formattable forDate(UDate d) {
|
|
Formattable f;
|
|
f.contents = d;
|
|
f.holdsDate = true;
|
|
return f;
|
|
}
|
|
/**
|
|
* Creates a Formattable object of an appropriate numeric type from a
|
|
* a decimal number in string form. The Formattable will retain the
|
|
* full precision of the input in decimal format, even when it exceeds
|
|
* what can be represented by a double or int64_t.
|
|
*
|
|
* @param number the unformatted (not localized) string representation
|
|
* of the Decimal number.
|
|
* @param status the error code. Possible errors include U_INVALID_FORMAT_ERROR
|
|
* if the format of the string does not conform to that of a
|
|
* decimal number.
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for technology preview only.
|
|
*/
|
|
static Formattable forDecimal(std::string_view number, UErrorCode& status);
|
|
/**
|
|
* Array constructor.
|
|
*
|
|
* @param arr An array of Formattables, which is adopted.
|
|
* @param len The length of the array.
|
|
*
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for technology preview only.
|
|
*/
|
|
Formattable(const Formattable* arr, int32_t len) : contents(std::pair(arr, len)) {}
|
|
/**
|
|
* Object constructor.
|
|
*
|
|
* @param obj A FormattableObject (not adopted).
|
|
*
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for technology preview only.
|
|
*/
|
|
Formattable(const FormattableObject* obj) : contents(obj) {}
|
|
/**
|
|
* Destructor.
|
|
*
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for technology preview only.
|
|
*/
|
|
virtual ~Formattable();
|
|
/**
|
|
* Converts the Formattable object to an ICU Formattable object.
|
|
* If this has type UFMT_OBJECT or kArray, then `status` is set to
|
|
* U_ILLEGAL_ARGUMENT_ERROR.
|
|
*
|
|
* @param status Input/output error code.
|
|
* @return An icu::Formattable value with the same value as this.
|
|
*
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for technology preview only.
|
|
*/
|
|
icu::Formattable asICUFormattable(UErrorCode& status) const;
|
|
private:
|
|
|
|
std::variant<double,
|
|
int64_t,
|
|
UnicodeString,
|
|
icu::Formattable, // represents a Decimal
|
|
const FormattableObject*,
|
|
std::pair<const Formattable*, int32_t>> contents;
|
|
bool holdsDate = false; // otherwise, we get type errors about UDate being a duplicate type
|
|
UnicodeString bogusString; // :((((
|
|
|
|
UBool isDecimal() const {
|
|
return std::holds_alternative<icu::Formattable>(contents);
|
|
}
|
|
UBool isDate() const {
|
|
return std::holds_alternative<double>(contents) && holdsDate;
|
|
}
|
|
}; // class Formattable
|
|
|
|
/**
|
|
* Internal use only, but has to be included here as part of the implementation
|
|
* of the header-only `FunctionOptions::getOptions()` method
|
|
*
|
|
* A `ResolvedFunctionOption` represents the result of evaluating
|
|
* a single named function option. It pairs the given name with the `Formattable`
|
|
* value resulting from evaluating the option's value.
|
|
*
|
|
* `ResolvedFunctionOption` is immutable and is not copyable or movable.
|
|
*
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for technology preview only.
|
|
*/
|
|
#ifndef U_IN_DOXYGEN
|
|
class U_I18N_API ResolvedFunctionOption : public UObject {
|
|
private:
|
|
|
|
/* const */ UnicodeString name;
|
|
/* const */ Formattable value;
|
|
// True iff this option was represented in the syntax by a literal value.
|
|
// This is necessary in order to implement the spec for the `select` option
|
|
// of `:number` and `:integer`.
|
|
/* const */ bool sourceIsLiteral;
|
|
|
|
public:
|
|
const UnicodeString& getName() const { return name; }
|
|
const Formattable& getValue() const { return value; }
|
|
bool isLiteral() const { return sourceIsLiteral; }
|
|
ResolvedFunctionOption(const UnicodeString& n, const Formattable& f, bool s)
|
|
: name(n), value(f), sourceIsLiteral(s) {}
|
|
ResolvedFunctionOption() {}
|
|
ResolvedFunctionOption(ResolvedFunctionOption&&);
|
|
ResolvedFunctionOption& operator=(ResolvedFunctionOption&& other) noexcept {
|
|
name = std::move(other.name);
|
|
value = std::move(other.value);
|
|
sourceIsLiteral = other.sourceIsLiteral;
|
|
return *this;
|
|
}
|
|
virtual ~ResolvedFunctionOption();
|
|
}; // class ResolvedFunctionOption
|
|
#endif
|
|
|
|
/**
|
|
* Mapping from option names to `message2::Formattable` objects, obtained
|
|
* by calling `getOptions()` on a `FunctionOptions` object.
|
|
*
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for technology preview only.
|
|
*/
|
|
using FunctionOptionsMap = std::map<UnicodeString, message2::Formattable>;
|
|
|
|
/**
|
|
* Structure encapsulating named options passed to a custom selector or formatter.
|
|
*
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for technology preview only.
|
|
*/
|
|
class U_I18N_API FunctionOptions : public UObject {
|
|
public:
|
|
/**
|
|
* Returns a map of all name-value pairs provided as options to this function.
|
|
* The syntactic order of options is not guaranteed to
|
|
* be preserved.
|
|
*
|
|
* This class is immutable and movable but not copyable.
|
|
*
|
|
* @return A map from strings to `message2::Formattable` objects representing
|
|
* the results of resolving each option value.
|
|
*
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for technology preview only.
|
|
*/
|
|
FunctionOptionsMap getOptions() const {
|
|
int32_t len;
|
|
const ResolvedFunctionOption* resolvedOptions = getResolvedFunctionOptions(len);
|
|
FunctionOptionsMap result;
|
|
for (int32_t i = 0; i < len; i++) {
|
|
const ResolvedFunctionOption& opt = resolvedOptions[i];
|
|
result[opt.getName()] = opt.getValue();
|
|
}
|
|
return result;
|
|
}
|
|
/**
|
|
* Default constructor.
|
|
* Returns an empty mapping.
|
|
*
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for technology preview only.
|
|
*/
|
|
FunctionOptions() { options = nullptr; }
|
|
/**
|
|
* Destructor.
|
|
*
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for technology preview only.
|
|
*/
|
|
virtual ~FunctionOptions();
|
|
/**
|
|
* Move assignment operator:
|
|
* The source FunctionOptions will be left in a valid but undefined state.
|
|
*
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for technology preview only.
|
|
*/
|
|
FunctionOptions& operator=(FunctionOptions&&) noexcept;
|
|
/**
|
|
* Move constructor:
|
|
* The source FunctionOptions will be left in a valid but undefined state.
|
|
*
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for technology preview only.
|
|
*/
|
|
FunctionOptions(FunctionOptions&&);
|
|
/**
|
|
* Copy constructor.
|
|
*
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for technology preview only.
|
|
*/
|
|
FunctionOptions& operator=(const FunctionOptions&) = delete;
|
|
private:
|
|
friend class InternalValue;
|
|
friend class MessageFormatter;
|
|
friend class StandardFunctions;
|
|
|
|
explicit FunctionOptions(UVector&&, UErrorCode&);
|
|
|
|
const ResolvedFunctionOption* getResolvedFunctionOptions(int32_t& len) const;
|
|
UBool getFunctionOption(std::u16string_view, Formattable&) const;
|
|
UBool wasSetFromLiteral(const UnicodeString&) const;
|
|
// Returns empty string if option doesn't exist
|
|
UnicodeString getStringFunctionOption(std::u16string_view) const;
|
|
int32_t optionsCount() const { return functionOptionsLen; }
|
|
|
|
// Named options passed to functions
|
|
// This is not a Hashtable in order to make it possible for code in a public header file
|
|
// to construct a std::map from it, on-the-fly. Otherwise, it would be impossible to put
|
|
// that code in the header because it would have to call internal Hashtable methods.
|
|
ResolvedFunctionOption* options;
|
|
int32_t functionOptionsLen = 0;
|
|
|
|
/**
|
|
* The original FunctionOptions isn't usable after this call.
|
|
* @returns A new, merged FunctionOptions.
|
|
*/
|
|
FunctionOptions mergeOptions(FunctionOptions&& other, UErrorCode&);
|
|
}; // class FunctionOptions
|
|
|
|
/**
|
|
* A `FormattedValue` represents the result of formatting a `message2::Formattable`.
|
|
* It contains either a string or a formatted number. (More types could be added
|
|
* in the future.)
|
|
*
|
|
* `FormattedValue` is immutable and movable. It is not copyable.
|
|
*
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for technology preview only.
|
|
*/
|
|
class U_I18N_API FormattedValue : public UObject {
|
|
public:
|
|
/**
|
|
* Formatted string constructor.
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for technology preview only.
|
|
*/
|
|
explicit FormattedValue(const UnicodeString&);
|
|
/**
|
|
* Formatted number constructor.
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for technology preview only.
|
|
*/
|
|
explicit FormattedValue(number::FormattedNumber&&);
|
|
/**
|
|
* Default constructor. Leaves the FormattedValue in
|
|
* a valid but undefined state.
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for technology preview only.
|
|
*/
|
|
FormattedValue() : type(kString) {}
|
|
/**
|
|
* Returns true iff this is a formatted string.
|
|
*
|
|
* @return True if and only if this value is a formatted string.
|
|
*
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for technology preview only.
|
|
*/
|
|
bool isString() const { return type == kString; }
|
|
/**
|
|
* Returns true iff this is a formatted number.
|
|
*
|
|
* @return True if and only if this value is a formatted number.
|
|
*
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for technology preview only.
|
|
*/
|
|
bool isNumber() const { return type == kNumber; }
|
|
/**
|
|
* Gets the string contents of this value. If !isString(), then
|
|
* the result is undefined.
|
|
* @return A reference to a formatted string.
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for technology preview only.
|
|
*/
|
|
const UnicodeString& getString() const { return stringOutput; }
|
|
/**
|
|
* Gets the number contents of this value. If !isNumber(), then
|
|
* the result is undefined.
|
|
* @return A reference to a formatted number.
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for technology preview only.
|
|
*/
|
|
const number::FormattedNumber& getNumber() const { return numberOutput; }
|
|
/**
|
|
* Move assignment operator:
|
|
* The source FormattedValue will be left in a valid but undefined state.
|
|
*
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for technology preview only.
|
|
*/
|
|
FormattedValue& operator=(FormattedValue&&) noexcept;
|
|
/**
|
|
* Move constructor:
|
|
* The source FormattedValue will be left in a valid but undefined state.
|
|
*
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for technology preview only.
|
|
*/
|
|
FormattedValue(FormattedValue&& other) { *this = std::move(other); }
|
|
/**
|
|
* Destructor.
|
|
*
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for technology preview only.
|
|
*/
|
|
virtual ~FormattedValue();
|
|
private:
|
|
enum Type {
|
|
kString,
|
|
kNumber
|
|
};
|
|
Type type;
|
|
UnicodeString stringOutput;
|
|
number::FormattedNumber numberOutput;
|
|
}; // class FormattedValue
|
|
|
|
/**
|
|
* A `FormattablePlaceholder` encapsulates an input value (a `message2::Formattable`)
|
|
* together with an optional output value (a `message2::FormattedValue`).
|
|
* More information, such as source line/column numbers, could be added to the class
|
|
* in the future.
|
|
*
|
|
* `FormattablePlaceholder` is immutable (not deeply immutable) and movable.
|
|
* It is not copyable.
|
|
*
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for technology preview only.
|
|
*/
|
|
class U_I18N_API FormattedPlaceholder : public UObject {
|
|
public:
|
|
/**
|
|
* Fallback constructor. Constructs a value that represents a formatting error,
|
|
* without recording an input `Formattable` as the source.
|
|
*
|
|
* @param s An error string. (See the MessageFormat specification for details
|
|
* on fallback strings.)
|
|
*
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for technology preview only.
|
|
*/
|
|
explicit FormattedPlaceholder(const UnicodeString& s) : fallback(s), type(kFallback) {}
|
|
/**
|
|
* Constructor for fully formatted placeholders.
|
|
*
|
|
* @param input A `FormattedPlaceholder` containing the fallback string and source
|
|
* `Formattable` used to construct the formatted value.
|
|
* @param output A `FormattedValue` representing the formatted output of `input`.
|
|
* Passed by move.
|
|
*
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for technology preview only.
|
|
*/
|
|
FormattedPlaceholder(const FormattedPlaceholder& input, FormattedValue&& output)
|
|
: fallback(input.fallback), source(input.source),
|
|
formatted(std::move(output)), previousOptions(FunctionOptions()), type(kEvaluated) {}
|
|
/**
|
|
* Constructor for fully formatted placeholders with options.
|
|
*
|
|
* @param input A `FormattedPlaceholder` containing the fallback string and source
|
|
* `Formattable` used to construct the formatted value.
|
|
* @param opts Function options that were used to construct `output`. May be the empty map.
|
|
* @param output A `FormattedValue` representing the formatted output of `input`.
|
|
* Passed by move.
|
|
*
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for technology preview only.
|
|
*/
|
|
FormattedPlaceholder(const FormattedPlaceholder& input, FunctionOptions&& opts, FormattedValue&& output)
|
|
: fallback(input.fallback), source(input.source),
|
|
formatted(std::move(output)), previousOptions(std::move(opts)), type(kEvaluated) {}
|
|
/**
|
|
* Constructor for unformatted placeholders.
|
|
*
|
|
* @param input A `Formattable` object.
|
|
* @param fb Fallback string to use if an error occurs while formatting the input.
|
|
*
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for technology preview only.
|
|
*/
|
|
FormattedPlaceholder(const Formattable& input, const UnicodeString& fb)
|
|
: fallback(fb), source(input), type(kUnevaluated) {}
|
|
/**
|
|
* Default constructor. Leaves the FormattedPlaceholder in a
|
|
* valid but undefined state.
|
|
*
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for technology preview only.
|
|
*/
|
|
FormattedPlaceholder() : type(kNull) {}
|
|
/**
|
|
* Returns the source `Formattable` value for this placeholder.
|
|
* The result is undefined if this is a null operand.
|
|
*
|
|
* @return A message2::Formattable value.
|
|
*
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for technology preview only.
|
|
*/
|
|
const message2::Formattable& asFormattable() const;
|
|
/**
|
|
* Returns true iff this is a fallback placeholder.
|
|
*
|
|
* @return True if and only if this placeholder was constructed from a fallback string,
|
|
* with no `Formattable` source or formatting output.
|
|
*
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for technology preview only.
|
|
*/
|
|
bool isFallback() const { return type == kFallback; }
|
|
/**
|
|
* Returns true iff this is a null placeholder.
|
|
*
|
|
* @return True if and only if this placeholder represents the absent argument to a formatter
|
|
* that was invoked without an argument.
|
|
*
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for technology preview only.
|
|
*/
|
|
bool isNullOperand() const { return type == kNull; }
|
|
/**
|
|
* Returns true iff this has formatting output.
|
|
*
|
|
* @return True if and only if this was constructed from both an input `Formattable` and
|
|
* output `FormattedValue`.
|
|
*
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for technology preview only.
|
|
*/
|
|
bool isEvaluated() const { return (type == kEvaluated); }
|
|
/**
|
|
* Returns true iff this represents a valid argument to the formatter.
|
|
*
|
|
* @return True if and only if this is neither the null argument nor a fallback placeholder.
|
|
*
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for technology preview only.
|
|
*/
|
|
bool canFormat() const { return !(isFallback() || isNullOperand()); }
|
|
/**
|
|
* Gets the fallback value of this placeholder, to be used in its place if an error occurs while
|
|
* formatting it.
|
|
* @return A reference to this placeholder's fallback string.
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for technology preview only.
|
|
*/
|
|
const UnicodeString& getFallback() const { return fallback; }
|
|
/**
|
|
* Returns the options of this placeholder. The result is the empty map if !isEvaluated().
|
|
* @return A reference to an option map, capturing the options that were used
|
|
* in producing the output of this `FormattedPlaceholder`
|
|
* (or empty if there is no output)
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for technology preview only.
|
|
*/
|
|
const FunctionOptions& options() const { return previousOptions; }
|
|
|
|
/**
|
|
* Returns the formatted output of this placeholder. The result is undefined if !isEvaluated().
|
|
* @return A fully formatted `FormattedPlaceholder`.
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for technology preview only.
|
|
*/
|
|
const FormattedValue& output() const { return formatted; }
|
|
/**
|
|
* Move assignment operator:
|
|
* The source FormattedPlaceholder will be left in a valid but undefined state.
|
|
*
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for technology preview only.
|
|
*/
|
|
FormattedPlaceholder& operator=(FormattedPlaceholder&&) noexcept;
|
|
/**
|
|
* Move constructor:
|
|
* The source FormattedPlaceholder will be left in a valid but undefined state.
|
|
*
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for technology preview only.
|
|
*/
|
|
FormattedPlaceholder(FormattedPlaceholder&& other) { *this = std::move(other); }
|
|
/**
|
|
* Formats this as a string, using defaults. If this is
|
|
* either the null operand or is a fallback value, the return value is the result of formatting the
|
|
* fallback value (which is the default fallback string if this is the null operand).
|
|
* If there is no formatted output and the input is object- or array-typed,
|
|
* then the argument is treated as a fallback value, since there is no default formatter
|
|
* for objects or arrays.
|
|
*
|
|
* @param locale The locale to use for formatting numbers or dates
|
|
* @param status Input/output error code
|
|
* @return The result of formatting this placeholder.
|
|
*
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for technology preview only.
|
|
*/
|
|
UnicodeString formatToString(const Locale& locale,
|
|
UErrorCode& status) const;
|
|
|
|
private:
|
|
friend class MessageFormatter;
|
|
|
|
enum Type {
|
|
kFallback, // Represents the result of formatting that encountered an error
|
|
kNull, // Represents the absence of both an output and an input (not necessarily an error)
|
|
kUnevaluated, // `source` should be valid, but there's no result yet
|
|
kEvaluated, // `formatted` exists
|
|
};
|
|
UnicodeString fallback;
|
|
Formattable source;
|
|
FormattedValue formatted;
|
|
FunctionOptions previousOptions; // Ignored unless type is kEvaluated
|
|
Type type;
|
|
}; // class FormattedPlaceholder
|
|
|
|
/**
|
|
* Not yet implemented: The result of a message formatting operation. Based on
|
|
* ICU4J's FormattedMessage.java.
|
|
*
|
|
* The class will contain information allowing the result to be viewed as a string,
|
|
* iterator, etc. (TBD)
|
|
*
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for technology preview only.
|
|
*/
|
|
class U_I18N_API FormattedMessage : public icu::FormattedValue {
|
|
public:
|
|
/**
|
|
* Not yet implemented.
|
|
*
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for ICU internal use only.
|
|
*/
|
|
FormattedMessage(UErrorCode& status) {
|
|
if (U_SUCCESS(status)) {
|
|
status = U_UNSUPPORTED_ERROR;
|
|
}
|
|
}
|
|
/**
|
|
* Not yet implemented.
|
|
*
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for ICU internal use only.
|
|
*/
|
|
int32_t length(UErrorCode& status) const {
|
|
if (U_SUCCESS(status)) {
|
|
status = U_UNSUPPORTED_ERROR;
|
|
}
|
|
return -1;
|
|
}
|
|
/**
|
|
* Not yet implemented.
|
|
*
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for ICU internal use only.
|
|
*/
|
|
char16_t charAt(int32_t index, UErrorCode& status) const {
|
|
(void) index;
|
|
if (U_SUCCESS(status)) {
|
|
status = U_UNSUPPORTED_ERROR;
|
|
}
|
|
return 0;
|
|
}
|
|
/**
|
|
* Not yet implemented.
|
|
*
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for ICU internal use only.
|
|
*/
|
|
StringPiece subSequence(int32_t start, int32_t end, UErrorCode& status) const {
|
|
(void) start;
|
|
(void) end;
|
|
if (U_SUCCESS(status)) {
|
|
status = U_UNSUPPORTED_ERROR;
|
|
}
|
|
return "";
|
|
}
|
|
/**
|
|
* Not yet implemented.
|
|
*
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for ICU internal use only.
|
|
*/
|
|
UnicodeString toString(UErrorCode& status) const override {
|
|
if (U_SUCCESS(status)) {
|
|
status = U_UNSUPPORTED_ERROR;
|
|
}
|
|
return {};
|
|
}
|
|
/**
|
|
* Not yet implemented.
|
|
*
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for ICU internal use only.
|
|
*/
|
|
UnicodeString toTempString(UErrorCode& status) const override {
|
|
if (U_SUCCESS(status)) {
|
|
status = U_UNSUPPORTED_ERROR;
|
|
}
|
|
return {};
|
|
}
|
|
/**
|
|
* Not yet implemented.
|
|
*
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for ICU internal use only.
|
|
*/
|
|
Appendable& appendTo(Appendable& appendable, UErrorCode& status) const override {
|
|
if (U_SUCCESS(status)) {
|
|
status = U_UNSUPPORTED_ERROR;
|
|
}
|
|
return appendable;
|
|
}
|
|
/**
|
|
* Not yet implemented.
|
|
*
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for ICU internal use only.
|
|
*/
|
|
UBool nextPosition(ConstrainedFieldPosition& cfpos, UErrorCode& status) const override {
|
|
(void) cfpos;
|
|
if (U_SUCCESS(status)) {
|
|
status = U_UNSUPPORTED_ERROR;
|
|
}
|
|
return false;
|
|
}
|
|
/**
|
|
* Not yet implemented.
|
|
*
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for ICU internal use only.
|
|
*/
|
|
CharacterIterator* toCharacterIterator(UErrorCode& status) {
|
|
if (U_SUCCESS(status)) {
|
|
status = U_UNSUPPORTED_ERROR;
|
|
}
|
|
return nullptr;
|
|
}
|
|
/**
|
|
* Destructor.
|
|
*
|
|
* @internal ICU 75 technology preview
|
|
* @deprecated This API is for ICU internal use only.
|
|
*/
|
|
virtual ~FormattedMessage();
|
|
}; // class FormattedMessage
|
|
|
|
} // namespace message2
|
|
|
|
U_NAMESPACE_END
|
|
|
|
#endif // U_HIDE_DEPRECATED_API
|
|
|
|
#endif /* #if !UCONFIG_NO_MF2 */
|
|
|
|
#endif /* #if !UCONFIG_NO_FORMATTING */
|
|
|
|
#endif /* #if !UCONFIG_NO_NORMALIZATION */
|
|
|
|
#endif /* U_SHOW_CPLUSPLUS_API */
|
|
|
|
#endif // MESSAGEFORMAT2_FORMATTABLE_H
|
|
|
|
// eof
|