1*c8dee2aaSAndroid Build Coastguard Worker /* 2*c8dee2aaSAndroid Build Coastguard Worker * Copyright 2021 Google Inc. 3*c8dee2aaSAndroid Build Coastguard Worker * 4*c8dee2aaSAndroid Build Coastguard Worker * Use of this source code is governed by a BSD-style license that can be 5*c8dee2aaSAndroid Build Coastguard Worker * found in the LICENSE file. 6*c8dee2aaSAndroid Build Coastguard Worker */ 7*c8dee2aaSAndroid Build Coastguard Worker #ifndef SkUnicode_icupriv_DEFINED 8*c8dee2aaSAndroid Build Coastguard Worker #define SkUnicode_icupriv_DEFINED 9*c8dee2aaSAndroid Build Coastguard Worker 10*c8dee2aaSAndroid Build Coastguard Worker #include <unicode/ubidi.h> 11*c8dee2aaSAndroid Build Coastguard Worker #include <unicode/ubrk.h> 12*c8dee2aaSAndroid Build Coastguard Worker #include <unicode/uchar.h> 13*c8dee2aaSAndroid Build Coastguard Worker #include <unicode/uloc.h> 14*c8dee2aaSAndroid Build Coastguard Worker #include <unicode/uscript.h> 15*c8dee2aaSAndroid Build Coastguard Worker #include <unicode/ustring.h> 16*c8dee2aaSAndroid Build Coastguard Worker #include <unicode/utext.h> 17*c8dee2aaSAndroid Build Coastguard Worker #include <unicode/utypes.h> 18*c8dee2aaSAndroid Build Coastguard Worker #include <cstdint> 19*c8dee2aaSAndroid Build Coastguard Worker #include <memory> 20*c8dee2aaSAndroid Build Coastguard Worker 21*c8dee2aaSAndroid Build Coastguard Worker #define SKICU_EMIT_FUNCS \ 22*c8dee2aaSAndroid Build Coastguard Worker SKICU_FUNC(u_errorName) \ 23*c8dee2aaSAndroid Build Coastguard Worker SKICU_FUNC(u_hasBinaryProperty) \ 24*c8dee2aaSAndroid Build Coastguard Worker SKICU_FUNC(u_getIntPropertyValue) \ 25*c8dee2aaSAndroid Build Coastguard Worker SKICU_FUNC(u_iscntrl) \ 26*c8dee2aaSAndroid Build Coastguard Worker SKICU_FUNC(u_isspace) \ 27*c8dee2aaSAndroid Build Coastguard Worker SKICU_FUNC(u_isWhitespace) \ 28*c8dee2aaSAndroid Build Coastguard Worker SKICU_FUNC(u_strToUpper) \ 29*c8dee2aaSAndroid Build Coastguard Worker SKICU_FUNC(ubidi_close) \ 30*c8dee2aaSAndroid Build Coastguard Worker SKICU_FUNC(ubidi_getDirection) \ 31*c8dee2aaSAndroid Build Coastguard Worker SKICU_FUNC(ubidi_getLength) \ 32*c8dee2aaSAndroid Build Coastguard Worker SKICU_FUNC(ubidi_getLevelAt) \ 33*c8dee2aaSAndroid Build Coastguard Worker SKICU_FUNC(ubidi_openSized) \ 34*c8dee2aaSAndroid Build Coastguard Worker SKICU_FUNC(ubidi_reorderVisual) \ 35*c8dee2aaSAndroid Build Coastguard Worker SKICU_FUNC(ubidi_setPara) \ 36*c8dee2aaSAndroid Build Coastguard Worker SKICU_FUNC(ubrk_close) \ 37*c8dee2aaSAndroid Build Coastguard Worker SKICU_FUNC(ubrk_current) \ 38*c8dee2aaSAndroid Build Coastguard Worker SKICU_FUNC(ubrk_first) \ 39*c8dee2aaSAndroid Build Coastguard Worker SKICU_FUNC(ubrk_following) \ 40*c8dee2aaSAndroid Build Coastguard Worker SKICU_FUNC(ubrk_getRuleStatus) \ 41*c8dee2aaSAndroid Build Coastguard Worker SKICU_FUNC(ubrk_next) \ 42*c8dee2aaSAndroid Build Coastguard Worker SKICU_FUNC(ubrk_open) \ 43*c8dee2aaSAndroid Build Coastguard Worker SKICU_FUNC(ubrk_preceding) \ 44*c8dee2aaSAndroid Build Coastguard Worker SKICU_FUNC(ubrk_setText) \ 45*c8dee2aaSAndroid Build Coastguard Worker SKICU_FUNC(ubrk_setUText) \ 46*c8dee2aaSAndroid Build Coastguard Worker SKICU_FUNC(uloc_forLanguageTag) \ 47*c8dee2aaSAndroid Build Coastguard Worker SKICU_FUNC(uloc_getDefault) \ 48*c8dee2aaSAndroid Build Coastguard Worker SKICU_FUNC(uscript_getScript) \ 49*c8dee2aaSAndroid Build Coastguard Worker SKICU_FUNC(utext_close) \ 50*c8dee2aaSAndroid Build Coastguard Worker SKICU_FUNC(utext_openUChars) \ 51*c8dee2aaSAndroid Build Coastguard Worker SKICU_FUNC(utext_openUTF8) \ 52*c8dee2aaSAndroid Build Coastguard Worker 53*c8dee2aaSAndroid Build Coastguard Worker #define SKICU_FUNC(funcname) decltype(funcname)* f_##funcname; 54*c8dee2aaSAndroid Build Coastguard Worker struct SkICULib { 55*c8dee2aaSAndroid Build Coastguard Worker SKICU_EMIT_FUNCS 56*c8dee2aaSAndroid Build Coastguard Worker 57*c8dee2aaSAndroid Build Coastguard Worker // ubrk_clone added as draft in ICU69 and Android API 31 (first ICU NDK). 58*c8dee2aaSAndroid Build Coastguard Worker // ubrk_safeClone deprecated in ICU69 and not exposed by Android. 59*c8dee2aaSAndroid Build Coastguard Worker UBreakIterator* (*f_ubrk_clone_)(const UBreakIterator*, UErrorCode*); 60*c8dee2aaSAndroid Build Coastguard Worker UBreakIterator* (*f_ubrk_safeClone_)(const UBreakIterator*, void*, int32_t*, UErrorCode*); 61*c8dee2aaSAndroid Build Coastguard Worker 62*c8dee2aaSAndroid Build Coastguard Worker // ubrk_getLocaleByType not exposed by Android. 63*c8dee2aaSAndroid Build Coastguard Worker const char* (*f_ubrk_getLocaleByType)(const UBreakIterator*, ULocDataLocaleType, UErrorCode*); 64*c8dee2aaSAndroid Build Coastguard Worker }; 65*c8dee2aaSAndroid Build Coastguard Worker #undef SKICU_FUNC 66*c8dee2aaSAndroid Build Coastguard Worker 67*c8dee2aaSAndroid Build Coastguard Worker // Platform/config specific ICU factory. 68*c8dee2aaSAndroid Build Coastguard Worker std::unique_ptr<SkICULib> SkLoadICULib(); 69*c8dee2aaSAndroid Build Coastguard Worker 70*c8dee2aaSAndroid Build Coastguard Worker // Get cached already loaded ICU library. 71*c8dee2aaSAndroid Build Coastguard Worker const SkICULib* SkGetICULib(); 72*c8dee2aaSAndroid Build Coastguard Worker 73*c8dee2aaSAndroid Build Coastguard Worker #endif // SkUnicode_icupriv_DEFINED 74