1// Copyright (C) 2020 The Qt Company Ltd.
2// SPDX-License-Identifier: Unicode-3.0
3
4/* This file is autogenerated from the Unicode 16.0 database. Do not edit */
5
6//
7// W A R N I N G
8// -------------
9//
10// This file is not part of the Qt API. It exists for the convenience
11// of internal files. This header file may change from version to version
12// without notice, or even be removed.
13//
14// We mean it.
15//
16
17#ifndef QUNICODETABLES_P_H
18#define QUNICODETABLES_P_H
19
20#include <QtCore/private/qglobal_p.h>
21
22#include <QtCore/qchar.h>
23
24QT_BEGIN_NAMESPACE
25
26#define UNICODE_DATA_VERSION QChar::Unicode_16_0
27
28namespace QUnicodeTables {
29
30enum Case {
31 LowerCase,
32 UpperCase,
33 TitleCase,
34 CaseFold,
35
36 NumCases
37};
38
39struct Properties {
40 ushort category : 5;
41 ushort direction : 5;
42 ushort emojiFlags : 6; /* 5 used */
43 ushort combiningClass : 8;
44 ushort joining : 3;
45 signed short digitValue : 5;
46 signed short mirrorDiff : 16;
47 ushort unicodeVersion : 5; /* 5 used */
48 ushort eastAsianWidth : 3; /* 3 used */
49 ushort nfQuickCheck : 8;
50#ifdef Q_OS_WASM
51 unsigned char : 0; //wasm 64 packing trick
52#endif
53 struct {
54 ushort special : 1;
55 signed short diff : 15;
56 } cases[NumCases];
57#ifdef Q_OS_WASM
58 unsigned char : 0; //wasm 64 packing trick
59#endif
60 ushort graphemeBreakClass : 5; /* 5 used */
61 ushort wordBreakClass : 5; /* 5 used */
62 ushort lineBreakClass : 6; /* 6 used */
63 ushort sentenceBreakClass : 4; /* 4 used */
64 ushort idnaStatus : 4; /* 3 used */
65 ushort script : 8;
66};
67
68Q_DECL_CONST_FUNCTION
69Q_CORE_EXPORT const Properties * QT_FASTCALL properties(char32_t ucs4) noexcept;
70
71static_assert(sizeof(Properties) == 20);
72
73enum class EastAsianWidth : unsigned int {
74 A,
75 F,
76 H,
77 N,
78 Na,
79 W,
80};
81
82enum GraphemeBreakClass {
83 GraphemeBreak_Any,
84 GraphemeBreak_CR,
85 GraphemeBreak_LF,
86 GraphemeBreak_Control,
87 GraphemeBreak_Extend,
88 GraphemeBreak_ZWJ,
89 GraphemeBreak_RegionalIndicator,
90 GraphemeBreak_Prepend,
91 GraphemeBreak_SpacingMark,
92 GraphemeBreak_L,
93 GraphemeBreak_V,
94 GraphemeBreak_T,
95 GraphemeBreak_LV,
96 GraphemeBreak_LVT,
97 GraphemeBreak_Extended_Pictographic,
98
99 NumGraphemeBreakClasses
100};
101
102enum WordBreakClass {
103 WordBreak_Any,
104 WordBreak_CR,
105 WordBreak_LF,
106 WordBreak_Newline,
107 WordBreak_Extend,
108 WordBreak_ZWJ,
109 WordBreak_Format,
110 WordBreak_RegionalIndicator,
111 WordBreak_Katakana,
112 WordBreak_HebrewLetter,
113 WordBreak_ALetter,
114 WordBreak_SingleQuote,
115 WordBreak_DoubleQuote,
116 WordBreak_MidNumLet,
117 WordBreak_MidLetter,
118 WordBreak_MidNum,
119 WordBreak_Numeric,
120 WordBreak_ExtendNumLet,
121 WordBreak_WSegSpace,
122
123 NumWordBreakClasses
124};
125
126enum SentenceBreakClass {
127 SentenceBreak_Any,
128 SentenceBreak_CR,
129 SentenceBreak_LF,
130 SentenceBreak_Sep,
131 SentenceBreak_Extend,
132 SentenceBreak_Sp,
133 SentenceBreak_Lower,
134 SentenceBreak_Upper,
135 SentenceBreak_OLetter,
136 SentenceBreak_Numeric,
137 SentenceBreak_ATerm,
138 SentenceBreak_SContinue,
139 SentenceBreak_STerm,
140 SentenceBreak_Close,
141
142 NumSentenceBreakClasses
143};
144
145// see http://www.unicode.org/reports/tr14/tr14-30.html
146// we don't use the XX and AI classes but map them to AL instead.
147// VI and VF classes are mapped to CM.
148enum LineBreakClass {
149 LineBreak_OP, LineBreak_CL, LineBreak_CP,
150 LineBreak_QU, LineBreak_QU_Pi, LineBreak_QU_Pf, LineBreak_QU_19,
151 LineBreak_GL, LineBreak_NS, LineBreak_EX, LineBreak_SY,
152 LineBreak_IS, LineBreak_PR,
153 LineBreak_PO, LineBreak_NU, LineBreak_AL, LineBreak_HL, LineBreak_ID,
154 LineBreak_IN, LineBreak_HY, LineBreak_WS_HY,
155 LineBreak_BA, LineBreak_WS_BA,
156 LineBreak_HYBA,
157 LineBreak_BB, LineBreak_B2,
158 LineBreak_ZW, LineBreak_CM, LineBreak_WJ, LineBreak_H2, LineBreak_H3,
159 LineBreak_JL, LineBreak_JV, LineBreak_JT, LineBreak_RI, LineBreak_CB,
160 LineBreak_EB, LineBreak_EM,
161
162 LineBreak_AK, LineBreak_AP, LineBreak_AS,
163 LineBreak_VI, LineBreak_VF,
164
165 LineBreak_ZWJ,
166 LineBreak_SA, LineBreak_SG, LineBreak_SP,
167 LineBreak_CR, LineBreak_LF, LineBreak_BK,
168
169 NumLineBreakClasses
170};
171
172enum class IdnaStatus : unsigned int {
173 Disallowed,
174 Valid,
175 Ignored,
176 Mapped,
177 Deviation
178};
179
180enum class EmojiFlags : uchar {
181 NoEmoji = 0,
182 Emoji = 1,
183 Emoji_Presentation = 2,
184 Emoji_Modifier = 4,
185 Emoji_Modifier_Base = 8,
186 Emoji_Component = 16
187};
188
189Q_CORE_EXPORT GraphemeBreakClass QT_FASTCALL graphemeBreakClass(char32_t ucs4) noexcept;
190inline GraphemeBreakClass graphemeBreakClass(QChar ch) noexcept
191{ return graphemeBreakClass(ucs4: ch.unicode()); }
192
193Q_CORE_EXPORT WordBreakClass QT_FASTCALL wordBreakClass(char32_t ucs4) noexcept;
194inline WordBreakClass wordBreakClass(QChar ch) noexcept
195{ return wordBreakClass(ucs4: ch.unicode()); }
196
197Q_CORE_EXPORT SentenceBreakClass QT_FASTCALL sentenceBreakClass(char32_t ucs4) noexcept;
198inline SentenceBreakClass sentenceBreakClass(QChar ch) noexcept
199{ return sentenceBreakClass(ucs4: ch.unicode()); }
200
201Q_CORE_EXPORT LineBreakClass QT_FASTCALL lineBreakClass(char32_t ucs4) noexcept;
202inline LineBreakClass lineBreakClass(QChar ch) noexcept
203{ return lineBreakClass(ucs4: ch.unicode()); }
204
205Q_CORE_EXPORT IdnaStatus QT_FASTCALL idnaStatus(char32_t ucs4) noexcept;
206inline IdnaStatus idnaStatus(QChar ch) noexcept
207{ return idnaStatus(ucs4: ch.unicode()); }
208
209Q_CORE_EXPORT QStringView QT_FASTCALL idnaMapping(char32_t usc4) noexcept;
210inline QStringView idnaMapping(QChar ch) noexcept
211{ return idnaMapping(usc4: ch.unicode()); }
212
213Q_CORE_EXPORT EastAsianWidth QT_FASTCALL eastAsianWidth(char32_t ucs4) noexcept;
214inline EastAsianWidth eastAsianWidth(QChar ch) noexcept
215{ return eastAsianWidth(ucs4: ch.unicode()); }
216
217} // namespace QUnicodeTables
218
219QT_END_NAMESPACE
220
221#endif // QUNICODETABLES_P_H
222

source code of qtbase/src/corelib/text/qunicodetables_p.h