#include "unicode/utypes.h"
#include "unicode/uchar.h"
#include "unicode/ucptrie.h"
#include "unicode/udata.h"
#include "unicode/unorm2.h"
#include "unicode/uscript.h"
#include "unicode/ustring.h"
#include "unicode/utf16.h"
#include "cstring.h"
#include "emojiprops.h"
#include "mutex.h"
#include "normalizer2impl.h"
#include "umutex.h"
#include "ubidi_props.h"
#include "uprops.h"
#include "ucase.h"
#include "ucln_cmn.h"
#include "ulayout_props.h"
#include "ustr_imp.h"
U_NAMESPACE_USE
namespace {
icu::UInitOnce gLayoutInitOnce { … };
UDataMemory *gLayoutMemory = …;
UCPTrie *gInpcTrie = …;
UCPTrie *gInscTrie = …;
UCPTrie *gVoTrie = …;
int32_t gMaxInpcValue = …;
int32_t gMaxInscValue = …;
int32_t gMaxVoValue = …;
UBool U_CALLCONV uprops_cleanup() { … }
UBool U_CALLCONV
ulayout_isAcceptable(void * ,
const char * , const char * ,
const UDataInfo *pInfo) { … }
void U_CALLCONV ulayout_load(UErrorCode &errorCode) { … }
UBool ulayout_ensureData(UErrorCode &errorCode) { … }
UBool ulayout_ensureData() { … }
}
struct BinaryProperty;
BinaryPropertyContains;
struct BinaryProperty { … };
static UBool defaultContains(const BinaryProperty &prop, UChar32 c, UProperty ) { … }
static UBool caseBinaryPropertyContains(const BinaryProperty &, UChar32 c, UProperty which) { … }
static UBool isBidiControl(const BinaryProperty &, UChar32 c, UProperty ) { … }
static UBool isMirrored(const BinaryProperty &, UChar32 c, UProperty ) { … }
static UBool isJoinControl(const BinaryProperty &, UChar32 c, UProperty ) { … }
#if UCONFIG_NO_NORMALIZATION
static UBool hasFullCompositionExclusion(const BinaryProperty &, UChar32, UProperty) {
return false;
}
#else
static UBool hasFullCompositionExclusion(const BinaryProperty &, UChar32 c, UProperty ) { … }
#endif
#if UCONFIG_NO_NORMALIZATION
static UBool isNormInert(const BinaryProperty &, UChar32, UProperty) {
return false;
}
#else
static UBool isNormInert(const BinaryProperty &, UChar32 c, UProperty which) { … }
#endif
#if UCONFIG_NO_NORMALIZATION
static UBool changesWhenCasefolded(const BinaryProperty &, UChar32, UProperty) {
return false;
}
#else
static UBool changesWhenCasefolded(const BinaryProperty &, UChar32 c, UProperty ) { … }
#endif
#if UCONFIG_NO_NORMALIZATION
static UBool changesWhenNFKC_Casefolded(const BinaryProperty &, UChar32, UProperty) {
return false;
}
#else
static UBool changesWhenNFKC_Casefolded(const BinaryProperty &, UChar32 c, UProperty ) { … }
#endif
#if UCONFIG_NO_NORMALIZATION
static UBool isCanonSegmentStarter(const BinaryProperty &, UChar32, UProperty) {
return false;
}
#else
static UBool isCanonSegmentStarter(const BinaryProperty &, UChar32 c, UProperty ) { … }
#endif
static UBool isPOSIX_alnum(const BinaryProperty &, UChar32 c, UProperty ) { … }
static UBool isPOSIX_blank(const BinaryProperty &, UChar32 c, UProperty ) { … }
static UBool isPOSIX_graph(const BinaryProperty &, UChar32 c, UProperty ) { … }
static UBool isPOSIX_print(const BinaryProperty &, UChar32 c, UProperty ) { … }
static UBool isPOSIX_xdigit(const BinaryProperty &, UChar32 c, UProperty ) { … }
static UBool isRegionalIndicator(const BinaryProperty &, UChar32 c, UProperty ) { … }
static UBool hasEmojiProperty(const BinaryProperty &, UChar32 c, UProperty which) { … }
static UBool isIDSUnaryOperator(const BinaryProperty &, UChar32 c, UProperty ) { … }
static constexpr UChar32 ID_COMPAT_MATH_CONTINUE[] = …;
static constexpr UChar32 ID_COMPAT_MATH_START[] = …;
static UBool isIDCompatMathStart(const BinaryProperty &, UChar32 c, UProperty ) { … }
static UBool isIDCompatMathContinue(const BinaryProperty &prop, UChar32 c, UProperty ) { … }
static const BinaryProperty binProps[UCHAR_BINARY_LIMIT]= …;
U_CAPI UBool U_EXPORT2
u_hasBinaryProperty(UChar32 c, UProperty which) { … }
U_CAPI UBool U_EXPORT2
u_isIDStart(UChar32 c) { … }
U_CAPI UBool U_EXPORT2
u_isIDPart(UChar32 c) { … }
U_CAPI UBool U_EXPORT2
u_stringHasBinaryProperty(const char16_t *s, int32_t length, UProperty which) { … }
struct IntProperty;
IntPropertyGetValue;
IntPropertyGetMaxValue;
struct IntProperty { … };
static int32_t defaultGetValue(const IntProperty &prop, UChar32 c, UProperty ) { … }
static int32_t defaultGetMaxValue(const IntProperty &prop, UProperty ) { … }
static int32_t getMaxValueFromShift(const IntProperty &prop, UProperty ) { … }
static int32_t getBiDiClass(const IntProperty &, UChar32 c, UProperty ) { … }
static int32_t getBiDiPairedBracketType(const IntProperty &, UChar32 c, UProperty ) { … }
static int32_t biDiGetMaxValue(const IntProperty &, UProperty which) { … }
#if UCONFIG_NO_NORMALIZATION
static int32_t getCombiningClass(const IntProperty &, UChar32, UProperty) {
return 0;
}
#else
static int32_t getCombiningClass(const IntProperty &, UChar32 c, UProperty ) { … }
#endif
static int32_t getGeneralCategory(const IntProperty &, UChar32 c, UProperty ) { … }
static int32_t getJoiningGroup(const IntProperty &, UChar32 c, UProperty ) { … }
static int32_t getJoiningType(const IntProperty &, UChar32 c, UProperty ) { … }
static int32_t getNumericType(const IntProperty &, UChar32 c, UProperty ) { … }
static int32_t getScript(const IntProperty &, UChar32 c, UProperty ) { … }
static int32_t scriptGetMaxValue(const IntProperty &, UProperty ) { … }
static const UHangulSyllableType gcbToHst[]= …;
static int32_t getHangulSyllableType(const IntProperty &, UChar32 c, UProperty ) { … }
#if UCONFIG_NO_NORMALIZATION
static int32_t getNormQuickCheck(const IntProperty &, UChar32, UProperty) {
return 0;
}
#else
static int32_t getNormQuickCheck(const IntProperty &, UChar32 c, UProperty which) { … }
#endif
#if UCONFIG_NO_NORMALIZATION
static int32_t getLeadCombiningClass(const IntProperty &, UChar32, UProperty) {
return 0;
}
#else
static int32_t getLeadCombiningClass(const IntProperty &, UChar32 c, UProperty ) { … }
#endif
#if UCONFIG_NO_NORMALIZATION
static int32_t getTrailCombiningClass(const IntProperty &, UChar32, UProperty) {
return 0;
}
#else
static int32_t getTrailCombiningClass(const IntProperty &, UChar32 c, UProperty ) { … }
#endif
static int32_t getInPC(const IntProperty &, UChar32 c, UProperty) { … }
static int32_t getInSC(const IntProperty &, UChar32 c, UProperty) { … }
static int32_t getVo(const IntProperty &, UChar32 c, UProperty) { … }
static int32_t layoutGetMaxValue(const IntProperty &, UProperty which) { … }
static int32_t getIDStatusValue(const IntProperty & , UChar32 c, UProperty ) { … }
static const IntProperty intProps[UCHAR_INT_LIMIT-UCHAR_INT_START]= …;
U_CAPI int32_t U_EXPORT2
u_getIntPropertyValue(UChar32 c, UProperty which) { … }
U_CAPI int32_t U_EXPORT2
u_getIntPropertyMinValue(UProperty ) { … }
U_CAPI int32_t U_EXPORT2
u_getIntPropertyMaxValue(UProperty which) { … }
U_CFUNC UPropertySource U_EXPORT2
uprops_getSource(UProperty which) { … }
U_CFUNC void U_EXPORT2
uprops_addPropertyStarts(UPropertySource src, const USetAdder *sa, UErrorCode *pErrorCode) { … }
U_CAPI bool U_EXPORT2
u_hasIDType(UChar32 c, UIdentifierType type) { … }
namespace {
void maybeAppendType(uint32_t value, uint32_t bit, UIdentifierType t,
UIdentifierType *types, int32_t &length, int32_t capacity) { … }
}
U_CAPI int32_t U_EXPORT2
u_getIDTypes(UChar32 c, UIdentifierType *types, int32_t capacity, UErrorCode *pErrorCode) { … }
#if !UCONFIG_NO_NORMALIZATION
U_CAPI int32_t U_EXPORT2
u_getFC_NFKC_Closure(UChar32 c, char16_t *dest, int32_t destCapacity, UErrorCode *pErrorCode) { … }
#endif