Annotation of win32/pcre/pcre_tables.c, revision 1.7
1.1 misha 1: /*************************************************
2: * Perl-Compatible Regular Expressions *
3: *************************************************/
4:
5: /* PCRE is a library of functions to support regular expressions whose syntax
6: and semantics are as close as possible to those of the Perl 5 language.
7:
8: Written by Philip Hazel
1.5 misha 9: Copyright (c) 1997-2012 University of Cambridge
1.1 misha 10:
11: -----------------------------------------------------------------------------
12: Redistribution and use in source and binary forms, with or without
13: modification, are permitted provided that the following conditions are met:
14:
15: * Redistributions of source code must retain the above copyright notice,
16: this list of conditions and the following disclaimer.
17:
18: * Redistributions in binary form must reproduce the above copyright
19: notice, this list of conditions and the following disclaimer in the
20: documentation and/or other materials provided with the distribution.
21:
22: * Neither the name of the University of Cambridge nor the names of its
23: contributors may be used to endorse or promote products derived from
24: this software without specific prior written permission.
25:
26: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
27: AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
28: IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
29: ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
30: LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
31: CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
32: SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
33: INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
34: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
35: ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
36: POSSIBILITY OF SUCH DAMAGE.
37: -----------------------------------------------------------------------------
38: */
39:
1.5 misha 40: #ifndef PCRE_INCLUDED
1.1 misha 41:
42: /* This module contains some fixed tables that are used by more than one of the
43: PCRE code modules. The tables are also #included by the pcretest program, which
44: uses macros to change their names from _pcre_xxx to xxxx, thereby avoiding name
45: clashes with the library. */
46:
47:
48: #ifdef HAVE_CONFIG_H
49: #include "config.h"
50: #endif
51:
52: #include "pcre_internal.h"
53:
1.5 misha 54: #endif /* PCRE_INCLUDED */
1.1 misha 55:
56: /* Table of sizes for the fixed-length opcodes. It's defined in a macro so that
57: the definition is next to the definition of the opcodes in pcre_internal.h. */
58:
1.5 misha 59: const pcre_uint8 PRIV(OP_lengths)[] = { OP_LENGTHS };
1.1 misha 60:
1.6 misha 61: /* Tables of horizontal and vertical whitespace characters, suitable for
62: adding to classes. */
63:
64: const pcre_uint32 PRIV(hspace_list)[] = { HSPACE_LIST };
65: const pcre_uint32 PRIV(vspace_list)[] = { VSPACE_LIST };
66:
1.1 misha 67:
68:
69: /*************************************************
70: * Tables for UTF-8 support *
71: *************************************************/
72:
73: /* These are the breakpoints for different numbers of bytes in a UTF-8
74: character. */
75:
1.5 misha 76: #if (defined SUPPORT_UTF && defined COMPILE_PCRE8) \
1.6 misha 77: || (defined PCRE_INCLUDED && (defined SUPPORT_PCRE16 || defined SUPPORT_PCRE32))
1.1 misha 78:
1.6 misha 79: /* These tables are also required by pcretest in 16- or 32-bit mode. */
1.5 misha 80:
81: const int PRIV(utf8_table1)[] =
1.1 misha 82: { 0x7f, 0x7ff, 0xffff, 0x1fffff, 0x3ffffff, 0x7fffffff};
83:
1.5 misha 84: const int PRIV(utf8_table1_size) = sizeof(PRIV(utf8_table1)) / sizeof(int);
1.1 misha 85:
86: /* These are the indicator bits and the mask for the data bits to set in the
87: first byte of a character, indexed by the number of additional bytes. */
88:
1.5 misha 89: const int PRIV(utf8_table2)[] = { 0, 0xc0, 0xe0, 0xf0, 0xf8, 0xfc};
90: const int PRIV(utf8_table3)[] = { 0xff, 0x1f, 0x0f, 0x07, 0x03, 0x01};
1.1 misha 91:
92: /* Table of the number of extra bytes, indexed by the first byte masked with
93: 0x3f. The highest number for a valid UTF-8 first byte is in fact 0x3d. */
94:
1.5 misha 95: const pcre_uint8 PRIV(utf8_table4)[] = {
1.1 misha 96: 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
97: 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
98: 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
99: 3,3,3,3,3,3,3,3,4,4,4,4,5,5,5,5 };
100:
1.6 misha 101: #endif /* (SUPPORT_UTF && COMPILE_PCRE8) || (PCRE_INCLUDED && SUPPORT_PCRE[16|32])*/
1.5 misha 102:
103: #ifdef SUPPORT_UTF
104:
1.2 misha 105: /* Table to translate from particular type value to the general value. */
106:
1.6 misha 107: const pcre_uint32 PRIV(ucp_gentype)[] = {
1.2 misha 108: ucp_C, ucp_C, ucp_C, ucp_C, ucp_C, /* Cc, Cf, Cn, Co, Cs */
109: ucp_L, ucp_L, ucp_L, ucp_L, ucp_L, /* Ll, Lu, Lm, Lo, Lt */
110: ucp_M, ucp_M, ucp_M, /* Mc, Me, Mn */
111: ucp_N, ucp_N, ucp_N, /* Nd, Nl, No */
112: ucp_P, ucp_P, ucp_P, ucp_P, ucp_P, /* Pc, Pd, Pe, Pf, Pi */
113: ucp_P, ucp_P, /* Ps, Po */
114: ucp_S, ucp_S, ucp_S, ucp_S, /* Sc, Sk, Sm, So */
115: ucp_Z, ucp_Z, ucp_Z /* Zl, Zp, Zs */
116: };
117:
1.6 misha 118: /* This table encodes the rules for finding the end of an extended grapheme
119: cluster. Every code point has a grapheme break property which is one of the
120: ucp_gbXX values defined in ucp.h. The 2-dimensional table is indexed by the
121: properties of two adjacent code points. The left property selects a word from
122: the table, and the right property selects a bit from that word like this:
123:
124: ucp_gbtable[left-property] & (1 << right-property)
125:
126: The value is non-zero if a grapheme break is NOT permitted between the relevant
127: two code points. The breaking rules are as follows:
128:
129: 1. Break at the start and end of text (pretty obviously).
130:
131: 2. Do not break between a CR and LF; otherwise, break before and after
132: controls.
133:
134: 3. Do not break Hangul syllable sequences, the rules for which are:
135:
136: L may be followed by L, V, LV or LVT
137: LV or V may be followed by V or T
138: LVT or T may be followed by T
139:
140: 4. Do not break before extending characters.
141:
142: The next two rules are only for extended grapheme clusters (but that's what we
143: are implementing).
144:
145: 5. Do not break before SpacingMarks.
146:
147: 6. Do not break after Prepend characters.
148:
149: 7. Otherwise, break everywhere.
150: */
151:
152: const pcre_uint32 PRIV(ucp_gbtable[]) = {
153: (1<<ucp_gbLF), /* 0 CR */
154: 0, /* 1 LF */
155: 0, /* 2 Control */
156: (1<<ucp_gbExtend)|(1<<ucp_gbSpacingMark), /* 3 Extend */
157: (1<<ucp_gbExtend)|(1<<ucp_gbPrepend)| /* 4 Prepend */
158: (1<<ucp_gbSpacingMark)|(1<<ucp_gbL)|
159: (1<<ucp_gbV)|(1<<ucp_gbT)|(1<<ucp_gbLV)|
160: (1<<ucp_gbLVT)|(1<<ucp_gbOther),
161:
162: (1<<ucp_gbExtend)|(1<<ucp_gbSpacingMark), /* 5 SpacingMark */
163: (1<<ucp_gbExtend)|(1<<ucp_gbSpacingMark)|(1<<ucp_gbL)| /* 6 L */
164: (1<<ucp_gbL)|(1<<ucp_gbV)|(1<<ucp_gbLV)|(1<<ucp_gbLVT),
165:
166: (1<<ucp_gbExtend)|(1<<ucp_gbSpacingMark)|(1<<ucp_gbV)| /* 7 V */
167: (1<<ucp_gbT),
168:
169: (1<<ucp_gbExtend)|(1<<ucp_gbSpacingMark)|(1<<ucp_gbT), /* 8 T */
170: (1<<ucp_gbExtend)|(1<<ucp_gbSpacingMark)|(1<<ucp_gbV)| /* 9 LV */
171: (1<<ucp_gbT),
172:
173: (1<<ucp_gbExtend)|(1<<ucp_gbSpacingMark)|(1<<ucp_gbT), /* 10 LVT */
174: (1<<ucp_gbRegionalIndicator), /* 11 RegionalIndicator */
175: (1<<ucp_gbExtend)|(1<<ucp_gbSpacingMark) /* 12 Other */
176: };
177:
1.5 misha 178: #ifdef SUPPORT_JIT
179: /* This table reverses PRIV(ucp_gentype). We can save the cost
180: of a memory load. */
181:
182: const int PRIV(ucp_typerange)[] = {
183: ucp_Cc, ucp_Cs,
184: ucp_Ll, ucp_Lu,
185: ucp_Mc, ucp_Mn,
186: ucp_Nd, ucp_No,
187: ucp_Pc, ucp_Ps,
188: ucp_Sc, ucp_So,
189: ucp_Zl, ucp_Zs,
190: };
191: #endif /* SUPPORT_JIT */
192:
1.1 misha 193: /* The pcre_utt[] table below translates Unicode property names into type and
194: code values. It is searched by binary chop, so must be in collating sequence of
195: name. Originally, the table contained pointers to the name strings in the first
196: field of each entry. However, that leads to a large number of relocations when
197: a shared library is dynamically loaded. A significant reduction is made by
198: putting all the names into a single, large string and then using offsets in the
199: table itself. Maintenance is more error-prone, but frequent changes to this
1.2 misha 200: data are unlikely.
201:
1.3 misha 202: July 2008: There is now a script called maint/GenerateUtt.py that can be used
1.5 misha 203: to generate this data automatically instead of maintaining it by hand.
1.3 misha 204:
205: The script was updated in March 2009 to generate a new EBCDIC-compliant
206: version. Like all other character and string literals that are compared against
207: the regular expression pattern, we must use STR_ macros instead of literal
208: strings to make sure that UTF-8 support works on EBCDIC platforms. */
209:
210: #define STRING_Any0 STR_A STR_n STR_y "\0"
211: #define STRING_Arabic0 STR_A STR_r STR_a STR_b STR_i STR_c "\0"
212: #define STRING_Armenian0 STR_A STR_r STR_m STR_e STR_n STR_i STR_a STR_n "\0"
1.4 misha 213: #define STRING_Avestan0 STR_A STR_v STR_e STR_s STR_t STR_a STR_n "\0"
1.3 misha 214: #define STRING_Balinese0 STR_B STR_a STR_l STR_i STR_n STR_e STR_s STR_e "\0"
1.4 misha 215: #define STRING_Bamum0 STR_B STR_a STR_m STR_u STR_m "\0"
1.7 ! moko 216: #define STRING_Bassa_Vah0 STR_B STR_a STR_s STR_s STR_a STR_UNDERSCORE STR_V STR_a STR_h "\0"
1.5 misha 217: #define STRING_Batak0 STR_B STR_a STR_t STR_a STR_k "\0"
1.3 misha 218: #define STRING_Bengali0 STR_B STR_e STR_n STR_g STR_a STR_l STR_i "\0"
219: #define STRING_Bopomofo0 STR_B STR_o STR_p STR_o STR_m STR_o STR_f STR_o "\0"
1.5 misha 220: #define STRING_Brahmi0 STR_B STR_r STR_a STR_h STR_m STR_i "\0"
1.3 misha 221: #define STRING_Braille0 STR_B STR_r STR_a STR_i STR_l STR_l STR_e "\0"
222: #define STRING_Buginese0 STR_B STR_u STR_g STR_i STR_n STR_e STR_s STR_e "\0"
223: #define STRING_Buhid0 STR_B STR_u STR_h STR_i STR_d "\0"
224: #define STRING_C0 STR_C "\0"
225: #define STRING_Canadian_Aboriginal0 STR_C STR_a STR_n STR_a STR_d STR_i STR_a STR_n STR_UNDERSCORE STR_A STR_b STR_o STR_r STR_i STR_g STR_i STR_n STR_a STR_l "\0"
226: #define STRING_Carian0 STR_C STR_a STR_r STR_i STR_a STR_n "\0"
1.7 ! moko 227: #define STRING_Caucasian_Albanian0 STR_C STR_a STR_u STR_c STR_a STR_s STR_i STR_a STR_n STR_UNDERSCORE STR_A STR_l STR_b STR_a STR_n STR_i STR_a STR_n "\0"
1.3 misha 228: #define STRING_Cc0 STR_C STR_c "\0"
229: #define STRING_Cf0 STR_C STR_f "\0"
1.6 misha 230: #define STRING_Chakma0 STR_C STR_h STR_a STR_k STR_m STR_a "\0"
1.3 misha 231: #define STRING_Cham0 STR_C STR_h STR_a STR_m "\0"
232: #define STRING_Cherokee0 STR_C STR_h STR_e STR_r STR_o STR_k STR_e STR_e "\0"
233: #define STRING_Cn0 STR_C STR_n "\0"
234: #define STRING_Co0 STR_C STR_o "\0"
235: #define STRING_Common0 STR_C STR_o STR_m STR_m STR_o STR_n "\0"
236: #define STRING_Coptic0 STR_C STR_o STR_p STR_t STR_i STR_c "\0"
237: #define STRING_Cs0 STR_C STR_s "\0"
238: #define STRING_Cuneiform0 STR_C STR_u STR_n STR_e STR_i STR_f STR_o STR_r STR_m "\0"
239: #define STRING_Cypriot0 STR_C STR_y STR_p STR_r STR_i STR_o STR_t "\0"
240: #define STRING_Cyrillic0 STR_C STR_y STR_r STR_i STR_l STR_l STR_i STR_c "\0"
241: #define STRING_Deseret0 STR_D STR_e STR_s STR_e STR_r STR_e STR_t "\0"
242: #define STRING_Devanagari0 STR_D STR_e STR_v STR_a STR_n STR_a STR_g STR_a STR_r STR_i "\0"
1.7 ! moko 243: #define STRING_Duployan0 STR_D STR_u STR_p STR_l STR_o STR_y STR_a STR_n "\0"
1.4 misha 244: #define STRING_Egyptian_Hieroglyphs0 STR_E STR_g STR_y STR_p STR_t STR_i STR_a STR_n STR_UNDERSCORE STR_H STR_i STR_e STR_r STR_o STR_g STR_l STR_y STR_p STR_h STR_s "\0"
1.7 ! moko 245: #define STRING_Elbasan0 STR_E STR_l STR_b STR_a STR_s STR_a STR_n "\0"
1.3 misha 246: #define STRING_Ethiopic0 STR_E STR_t STR_h STR_i STR_o STR_p STR_i STR_c "\0"
247: #define STRING_Georgian0 STR_G STR_e STR_o STR_r STR_g STR_i STR_a STR_n "\0"
248: #define STRING_Glagolitic0 STR_G STR_l STR_a STR_g STR_o STR_l STR_i STR_t STR_i STR_c "\0"
249: #define STRING_Gothic0 STR_G STR_o STR_t STR_h STR_i STR_c "\0"
1.7 ! moko 250: #define STRING_Grantha0 STR_G STR_r STR_a STR_n STR_t STR_h STR_a "\0"
1.3 misha 251: #define STRING_Greek0 STR_G STR_r STR_e STR_e STR_k "\0"
252: #define STRING_Gujarati0 STR_G STR_u STR_j STR_a STR_r STR_a STR_t STR_i "\0"
253: #define STRING_Gurmukhi0 STR_G STR_u STR_r STR_m STR_u STR_k STR_h STR_i "\0"
254: #define STRING_Han0 STR_H STR_a STR_n "\0"
255: #define STRING_Hangul0 STR_H STR_a STR_n STR_g STR_u STR_l "\0"
256: #define STRING_Hanunoo0 STR_H STR_a STR_n STR_u STR_n STR_o STR_o "\0"
257: #define STRING_Hebrew0 STR_H STR_e STR_b STR_r STR_e STR_w "\0"
258: #define STRING_Hiragana0 STR_H STR_i STR_r STR_a STR_g STR_a STR_n STR_a "\0"
1.4 misha 259: #define STRING_Imperial_Aramaic0 STR_I STR_m STR_p STR_e STR_r STR_i STR_a STR_l STR_UNDERSCORE STR_A STR_r STR_a STR_m STR_a STR_i STR_c "\0"
1.3 misha 260: #define STRING_Inherited0 STR_I STR_n STR_h STR_e STR_r STR_i STR_t STR_e STR_d "\0"
1.4 misha 261: #define STRING_Inscriptional_Pahlavi0 STR_I STR_n STR_s STR_c STR_r STR_i STR_p STR_t STR_i STR_o STR_n STR_a STR_l STR_UNDERSCORE STR_P STR_a STR_h STR_l STR_a STR_v STR_i "\0"
262: #define STRING_Inscriptional_Parthian0 STR_I STR_n STR_s STR_c STR_r STR_i STR_p STR_t STR_i STR_o STR_n STR_a STR_l STR_UNDERSCORE STR_P STR_a STR_r STR_t STR_h STR_i STR_a STR_n "\0"
263: #define STRING_Javanese0 STR_J STR_a STR_v STR_a STR_n STR_e STR_s STR_e "\0"
264: #define STRING_Kaithi0 STR_K STR_a STR_i STR_t STR_h STR_i "\0"
1.3 misha 265: #define STRING_Kannada0 STR_K STR_a STR_n STR_n STR_a STR_d STR_a "\0"
266: #define STRING_Katakana0 STR_K STR_a STR_t STR_a STR_k STR_a STR_n STR_a "\0"
267: #define STRING_Kayah_Li0 STR_K STR_a STR_y STR_a STR_h STR_UNDERSCORE STR_L STR_i "\0"
268: #define STRING_Kharoshthi0 STR_K STR_h STR_a STR_r STR_o STR_s STR_h STR_t STR_h STR_i "\0"
269: #define STRING_Khmer0 STR_K STR_h STR_m STR_e STR_r "\0"
1.7 ! moko 270: #define STRING_Khojki0 STR_K STR_h STR_o STR_j STR_k STR_i "\0"
! 271: #define STRING_Khudawadi0 STR_K STR_h STR_u STR_d STR_a STR_w STR_a STR_d STR_i "\0"
1.3 misha 272: #define STRING_L0 STR_L "\0"
273: #define STRING_L_AMPERSAND0 STR_L STR_AMPERSAND "\0"
274: #define STRING_Lao0 STR_L STR_a STR_o "\0"
275: #define STRING_Latin0 STR_L STR_a STR_t STR_i STR_n "\0"
276: #define STRING_Lepcha0 STR_L STR_e STR_p STR_c STR_h STR_a "\0"
277: #define STRING_Limbu0 STR_L STR_i STR_m STR_b STR_u "\0"
1.7 ! moko 278: #define STRING_Linear_A0 STR_L STR_i STR_n STR_e STR_a STR_r STR_UNDERSCORE STR_A "\0"
1.3 misha 279: #define STRING_Linear_B0 STR_L STR_i STR_n STR_e STR_a STR_r STR_UNDERSCORE STR_B "\0"
1.4 misha 280: #define STRING_Lisu0 STR_L STR_i STR_s STR_u "\0"
1.3 misha 281: #define STRING_Ll0 STR_L STR_l "\0"
282: #define STRING_Lm0 STR_L STR_m "\0"
283: #define STRING_Lo0 STR_L STR_o "\0"
284: #define STRING_Lt0 STR_L STR_t "\0"
285: #define STRING_Lu0 STR_L STR_u "\0"
286: #define STRING_Lycian0 STR_L STR_y STR_c STR_i STR_a STR_n "\0"
287: #define STRING_Lydian0 STR_L STR_y STR_d STR_i STR_a STR_n "\0"
288: #define STRING_M0 STR_M "\0"
1.7 ! moko 289: #define STRING_Mahajani0 STR_M STR_a STR_h STR_a STR_j STR_a STR_n STR_i "\0"
1.3 misha 290: #define STRING_Malayalam0 STR_M STR_a STR_l STR_a STR_y STR_a STR_l STR_a STR_m "\0"
1.5 misha 291: #define STRING_Mandaic0 STR_M STR_a STR_n STR_d STR_a STR_i STR_c "\0"
1.7 ! moko 292: #define STRING_Manichaean0 STR_M STR_a STR_n STR_i STR_c STR_h STR_a STR_e STR_a STR_n "\0"
1.3 misha 293: #define STRING_Mc0 STR_M STR_c "\0"
294: #define STRING_Me0 STR_M STR_e "\0"
1.4 misha 295: #define STRING_Meetei_Mayek0 STR_M STR_e STR_e STR_t STR_e STR_i STR_UNDERSCORE STR_M STR_a STR_y STR_e STR_k "\0"
1.7 ! moko 296: #define STRING_Mende_Kikakui0 STR_M STR_e STR_n STR_d STR_e STR_UNDERSCORE STR_K STR_i STR_k STR_a STR_k STR_u STR_i "\0"
1.6 misha 297: #define STRING_Meroitic_Cursive0 STR_M STR_e STR_r STR_o STR_i STR_t STR_i STR_c STR_UNDERSCORE STR_C STR_u STR_r STR_s STR_i STR_v STR_e "\0"
298: #define STRING_Meroitic_Hieroglyphs0 STR_M STR_e STR_r STR_o STR_i STR_t STR_i STR_c STR_UNDERSCORE STR_H STR_i STR_e STR_r STR_o STR_g STR_l STR_y STR_p STR_h STR_s "\0"
299: #define STRING_Miao0 STR_M STR_i STR_a STR_o "\0"
1.3 misha 300: #define STRING_Mn0 STR_M STR_n "\0"
1.7 ! moko 301: #define STRING_Modi0 STR_M STR_o STR_d STR_i "\0"
1.3 misha 302: #define STRING_Mongolian0 STR_M STR_o STR_n STR_g STR_o STR_l STR_i STR_a STR_n "\0"
1.7 ! moko 303: #define STRING_Mro0 STR_M STR_r STR_o "\0"
1.3 misha 304: #define STRING_Myanmar0 STR_M STR_y STR_a STR_n STR_m STR_a STR_r "\0"
305: #define STRING_N0 STR_N "\0"
1.7 ! moko 306: #define STRING_Nabataean0 STR_N STR_a STR_b STR_a STR_t STR_a STR_e STR_a STR_n "\0"
1.3 misha 307: #define STRING_Nd0 STR_N STR_d "\0"
308: #define STRING_New_Tai_Lue0 STR_N STR_e STR_w STR_UNDERSCORE STR_T STR_a STR_i STR_UNDERSCORE STR_L STR_u STR_e "\0"
309: #define STRING_Nko0 STR_N STR_k STR_o "\0"
310: #define STRING_Nl0 STR_N STR_l "\0"
311: #define STRING_No0 STR_N STR_o "\0"
312: #define STRING_Ogham0 STR_O STR_g STR_h STR_a STR_m "\0"
313: #define STRING_Ol_Chiki0 STR_O STR_l STR_UNDERSCORE STR_C STR_h STR_i STR_k STR_i "\0"
314: #define STRING_Old_Italic0 STR_O STR_l STR_d STR_UNDERSCORE STR_I STR_t STR_a STR_l STR_i STR_c "\0"
1.7 ! moko 315: #define STRING_Old_North_Arabian0 STR_O STR_l STR_d STR_UNDERSCORE STR_N STR_o STR_r STR_t STR_h STR_UNDERSCORE STR_A STR_r STR_a STR_b STR_i STR_a STR_n "\0"
! 316: #define STRING_Old_Permic0 STR_O STR_l STR_d STR_UNDERSCORE STR_P STR_e STR_r STR_m STR_i STR_c "\0"
1.3 misha 317: #define STRING_Old_Persian0 STR_O STR_l STR_d STR_UNDERSCORE STR_P STR_e STR_r STR_s STR_i STR_a STR_n "\0"
1.4 misha 318: #define STRING_Old_South_Arabian0 STR_O STR_l STR_d STR_UNDERSCORE STR_S STR_o STR_u STR_t STR_h STR_UNDERSCORE STR_A STR_r STR_a STR_b STR_i STR_a STR_n "\0"
319: #define STRING_Old_Turkic0 STR_O STR_l STR_d STR_UNDERSCORE STR_T STR_u STR_r STR_k STR_i STR_c "\0"
1.3 misha 320: #define STRING_Oriya0 STR_O STR_r STR_i STR_y STR_a "\0"
321: #define STRING_Osmanya0 STR_O STR_s STR_m STR_a STR_n STR_y STR_a "\0"
322: #define STRING_P0 STR_P "\0"
1.7 ! moko 323: #define STRING_Pahawh_Hmong0 STR_P STR_a STR_h STR_a STR_w STR_h STR_UNDERSCORE STR_H STR_m STR_o STR_n STR_g "\0"
! 324: #define STRING_Palmyrene0 STR_P STR_a STR_l STR_m STR_y STR_r STR_e STR_n STR_e "\0"
! 325: #define STRING_Pau_Cin_Hau0 STR_P STR_a STR_u STR_UNDERSCORE STR_C STR_i STR_n STR_UNDERSCORE STR_H STR_a STR_u "\0"
1.3 misha 326: #define STRING_Pc0 STR_P STR_c "\0"
327: #define STRING_Pd0 STR_P STR_d "\0"
328: #define STRING_Pe0 STR_P STR_e "\0"
329: #define STRING_Pf0 STR_P STR_f "\0"
330: #define STRING_Phags_Pa0 STR_P STR_h STR_a STR_g STR_s STR_UNDERSCORE STR_P STR_a "\0"
331: #define STRING_Phoenician0 STR_P STR_h STR_o STR_e STR_n STR_i STR_c STR_i STR_a STR_n "\0"
332: #define STRING_Pi0 STR_P STR_i "\0"
333: #define STRING_Po0 STR_P STR_o "\0"
334: #define STRING_Ps0 STR_P STR_s "\0"
1.7 ! moko 335: #define STRING_Psalter_Pahlavi0 STR_P STR_s STR_a STR_l STR_t STR_e STR_r STR_UNDERSCORE STR_P STR_a STR_h STR_l STR_a STR_v STR_i "\0"
1.3 misha 336: #define STRING_Rejang0 STR_R STR_e STR_j STR_a STR_n STR_g "\0"
337: #define STRING_Runic0 STR_R STR_u STR_n STR_i STR_c "\0"
338: #define STRING_S0 STR_S "\0"
1.4 misha 339: #define STRING_Samaritan0 STR_S STR_a STR_m STR_a STR_r STR_i STR_t STR_a STR_n "\0"
1.3 misha 340: #define STRING_Saurashtra0 STR_S STR_a STR_u STR_r STR_a STR_s STR_h STR_t STR_r STR_a "\0"
341: #define STRING_Sc0 STR_S STR_c "\0"
1.6 misha 342: #define STRING_Sharada0 STR_S STR_h STR_a STR_r STR_a STR_d STR_a "\0"
1.3 misha 343: #define STRING_Shavian0 STR_S STR_h STR_a STR_v STR_i STR_a STR_n "\0"
1.7 ! moko 344: #define STRING_Siddham0 STR_S STR_i STR_d STR_d STR_h STR_a STR_m "\0"
1.3 misha 345: #define STRING_Sinhala0 STR_S STR_i STR_n STR_h STR_a STR_l STR_a "\0"
346: #define STRING_Sk0 STR_S STR_k "\0"
347: #define STRING_Sm0 STR_S STR_m "\0"
348: #define STRING_So0 STR_S STR_o "\0"
1.6 misha 349: #define STRING_Sora_Sompeng0 STR_S STR_o STR_r STR_a STR_UNDERSCORE STR_S STR_o STR_m STR_p STR_e STR_n STR_g "\0"
1.3 misha 350: #define STRING_Sundanese0 STR_S STR_u STR_n STR_d STR_a STR_n STR_e STR_s STR_e "\0"
351: #define STRING_Syloti_Nagri0 STR_S STR_y STR_l STR_o STR_t STR_i STR_UNDERSCORE STR_N STR_a STR_g STR_r STR_i "\0"
352: #define STRING_Syriac0 STR_S STR_y STR_r STR_i STR_a STR_c "\0"
353: #define STRING_Tagalog0 STR_T STR_a STR_g STR_a STR_l STR_o STR_g "\0"
354: #define STRING_Tagbanwa0 STR_T STR_a STR_g STR_b STR_a STR_n STR_w STR_a "\0"
355: #define STRING_Tai_Le0 STR_T STR_a STR_i STR_UNDERSCORE STR_L STR_e "\0"
1.4 misha 356: #define STRING_Tai_Tham0 STR_T STR_a STR_i STR_UNDERSCORE STR_T STR_h STR_a STR_m "\0"
357: #define STRING_Tai_Viet0 STR_T STR_a STR_i STR_UNDERSCORE STR_V STR_i STR_e STR_t "\0"
1.6 misha 358: #define STRING_Takri0 STR_T STR_a STR_k STR_r STR_i "\0"
1.3 misha 359: #define STRING_Tamil0 STR_T STR_a STR_m STR_i STR_l "\0"
360: #define STRING_Telugu0 STR_T STR_e STR_l STR_u STR_g STR_u "\0"
361: #define STRING_Thaana0 STR_T STR_h STR_a STR_a STR_n STR_a "\0"
362: #define STRING_Thai0 STR_T STR_h STR_a STR_i "\0"
363: #define STRING_Tibetan0 STR_T STR_i STR_b STR_e STR_t STR_a STR_n "\0"
364: #define STRING_Tifinagh0 STR_T STR_i STR_f STR_i STR_n STR_a STR_g STR_h "\0"
1.7 ! moko 365: #define STRING_Tirhuta0 STR_T STR_i STR_r STR_h STR_u STR_t STR_a "\0"
1.3 misha 366: #define STRING_Ugaritic0 STR_U STR_g STR_a STR_r STR_i STR_t STR_i STR_c "\0"
367: #define STRING_Vai0 STR_V STR_a STR_i "\0"
1.7 ! moko 368: #define STRING_Warang_Citi0 STR_W STR_a STR_r STR_a STR_n STR_g STR_UNDERSCORE STR_C STR_i STR_t STR_i "\0"
1.4 misha 369: #define STRING_Xan0 STR_X STR_a STR_n "\0"
370: #define STRING_Xps0 STR_X STR_p STR_s "\0"
371: #define STRING_Xsp0 STR_X STR_s STR_p "\0"
1.6 misha 372: #define STRING_Xuc0 STR_X STR_u STR_c "\0"
1.4 misha 373: #define STRING_Xwd0 STR_X STR_w STR_d "\0"
1.3 misha 374: #define STRING_Yi0 STR_Y STR_i "\0"
375: #define STRING_Z0 STR_Z "\0"
376: #define STRING_Zl0 STR_Z STR_l "\0"
377: #define STRING_Zp0 STR_Z STR_p "\0"
378: #define STRING_Zs0 STR_Z STR_s "\0"
1.1 misha 379:
1.5 misha 380: const char PRIV(utt_names)[] =
1.3 misha 381: STRING_Any0
382: STRING_Arabic0
383: STRING_Armenian0
1.4 misha 384: STRING_Avestan0
1.3 misha 385: STRING_Balinese0
1.4 misha 386: STRING_Bamum0
1.7 ! moko 387: STRING_Bassa_Vah0
1.5 misha 388: STRING_Batak0
1.3 misha 389: STRING_Bengali0
390: STRING_Bopomofo0
1.5 misha 391: STRING_Brahmi0
1.3 misha 392: STRING_Braille0
393: STRING_Buginese0
394: STRING_Buhid0
395: STRING_C0
396: STRING_Canadian_Aboriginal0
397: STRING_Carian0
1.7 ! moko 398: STRING_Caucasian_Albanian0
1.3 misha 399: STRING_Cc0
400: STRING_Cf0
1.6 misha 401: STRING_Chakma0
1.3 misha 402: STRING_Cham0
403: STRING_Cherokee0
404: STRING_Cn0
405: STRING_Co0
406: STRING_Common0
407: STRING_Coptic0
408: STRING_Cs0
409: STRING_Cuneiform0
410: STRING_Cypriot0
411: STRING_Cyrillic0
412: STRING_Deseret0
413: STRING_Devanagari0
1.7 ! moko 414: STRING_Duployan0
1.4 misha 415: STRING_Egyptian_Hieroglyphs0
1.7 ! moko 416: STRING_Elbasan0
1.3 misha 417: STRING_Ethiopic0
418: STRING_Georgian0
419: STRING_Glagolitic0
420: STRING_Gothic0
1.7 ! moko 421: STRING_Grantha0
1.3 misha 422: STRING_Greek0
423: STRING_Gujarati0
424: STRING_Gurmukhi0
425: STRING_Han0
426: STRING_Hangul0
427: STRING_Hanunoo0
428: STRING_Hebrew0
429: STRING_Hiragana0
1.4 misha 430: STRING_Imperial_Aramaic0
1.3 misha 431: STRING_Inherited0
1.4 misha 432: STRING_Inscriptional_Pahlavi0
433: STRING_Inscriptional_Parthian0
434: STRING_Javanese0
435: STRING_Kaithi0
1.3 misha 436: STRING_Kannada0
437: STRING_Katakana0
438: STRING_Kayah_Li0
439: STRING_Kharoshthi0
440: STRING_Khmer0
1.7 ! moko 441: STRING_Khojki0
! 442: STRING_Khudawadi0
1.3 misha 443: STRING_L0
444: STRING_L_AMPERSAND0
445: STRING_Lao0
446: STRING_Latin0
447: STRING_Lepcha0
448: STRING_Limbu0
1.7 ! moko 449: STRING_Linear_A0
1.3 misha 450: STRING_Linear_B0
1.4 misha 451: STRING_Lisu0
1.3 misha 452: STRING_Ll0
453: STRING_Lm0
454: STRING_Lo0
455: STRING_Lt0
456: STRING_Lu0
457: STRING_Lycian0
458: STRING_Lydian0
459: STRING_M0
1.7 ! moko 460: STRING_Mahajani0
1.3 misha 461: STRING_Malayalam0
1.5 misha 462: STRING_Mandaic0
1.7 ! moko 463: STRING_Manichaean0
1.3 misha 464: STRING_Mc0
465: STRING_Me0
1.4 misha 466: STRING_Meetei_Mayek0
1.7 ! moko 467: STRING_Mende_Kikakui0
1.6 misha 468: STRING_Meroitic_Cursive0
469: STRING_Meroitic_Hieroglyphs0
470: STRING_Miao0
1.3 misha 471: STRING_Mn0
1.7 ! moko 472: STRING_Modi0
1.3 misha 473: STRING_Mongolian0
1.7 ! moko 474: STRING_Mro0
1.3 misha 475: STRING_Myanmar0
476: STRING_N0
1.7 ! moko 477: STRING_Nabataean0
1.3 misha 478: STRING_Nd0
479: STRING_New_Tai_Lue0
480: STRING_Nko0
481: STRING_Nl0
482: STRING_No0
483: STRING_Ogham0
484: STRING_Ol_Chiki0
485: STRING_Old_Italic0
1.7 ! moko 486: STRING_Old_North_Arabian0
! 487: STRING_Old_Permic0
1.3 misha 488: STRING_Old_Persian0
1.4 misha 489: STRING_Old_South_Arabian0
490: STRING_Old_Turkic0
1.3 misha 491: STRING_Oriya0
492: STRING_Osmanya0
493: STRING_P0
1.7 ! moko 494: STRING_Pahawh_Hmong0
! 495: STRING_Palmyrene0
! 496: STRING_Pau_Cin_Hau0
1.3 misha 497: STRING_Pc0
498: STRING_Pd0
499: STRING_Pe0
500: STRING_Pf0
501: STRING_Phags_Pa0
502: STRING_Phoenician0
503: STRING_Pi0
504: STRING_Po0
505: STRING_Ps0
1.7 ! moko 506: STRING_Psalter_Pahlavi0
1.3 misha 507: STRING_Rejang0
508: STRING_Runic0
509: STRING_S0
1.4 misha 510: STRING_Samaritan0
1.3 misha 511: STRING_Saurashtra0
512: STRING_Sc0
1.6 misha 513: STRING_Sharada0
1.3 misha 514: STRING_Shavian0
1.7 ! moko 515: STRING_Siddham0
1.3 misha 516: STRING_Sinhala0
517: STRING_Sk0
518: STRING_Sm0
519: STRING_So0
1.6 misha 520: STRING_Sora_Sompeng0
1.3 misha 521: STRING_Sundanese0
522: STRING_Syloti_Nagri0
523: STRING_Syriac0
524: STRING_Tagalog0
525: STRING_Tagbanwa0
526: STRING_Tai_Le0
1.4 misha 527: STRING_Tai_Tham0
528: STRING_Tai_Viet0
1.6 misha 529: STRING_Takri0
1.3 misha 530: STRING_Tamil0
531: STRING_Telugu0
532: STRING_Thaana0
533: STRING_Thai0
534: STRING_Tibetan0
535: STRING_Tifinagh0
1.7 ! moko 536: STRING_Tirhuta0
1.3 misha 537: STRING_Ugaritic0
538: STRING_Vai0
1.7 ! moko 539: STRING_Warang_Citi0
1.4 misha 540: STRING_Xan0
541: STRING_Xps0
542: STRING_Xsp0
1.6 misha 543: STRING_Xuc0
1.4 misha 544: STRING_Xwd0
1.3 misha 545: STRING_Yi0
546: STRING_Z0
547: STRING_Zl0
548: STRING_Zp0
549: STRING_Zs0;
1.1 misha 550:
1.5 misha 551: const ucp_type_table PRIV(utt)[] = {
1.2 misha 552: { 0, PT_ANY, 0 },
553: { 4, PT_SC, ucp_Arabic },
554: { 11, PT_SC, ucp_Armenian },
1.4 misha 555: { 20, PT_SC, ucp_Avestan },
556: { 28, PT_SC, ucp_Balinese },
557: { 37, PT_SC, ucp_Bamum },
1.7 ! moko 558: { 43, PT_SC, ucp_Bassa_Vah },
! 559: { 53, PT_SC, ucp_Batak },
! 560: { 59, PT_SC, ucp_Bengali },
! 561: { 67, PT_SC, ucp_Bopomofo },
! 562: { 76, PT_SC, ucp_Brahmi },
! 563: { 83, PT_SC, ucp_Braille },
! 564: { 91, PT_SC, ucp_Buginese },
! 565: { 100, PT_SC, ucp_Buhid },
! 566: { 106, PT_GC, ucp_C },
! 567: { 108, PT_SC, ucp_Canadian_Aboriginal },
! 568: { 128, PT_SC, ucp_Carian },
! 569: { 135, PT_SC, ucp_Caucasian_Albanian },
! 570: { 154, PT_PC, ucp_Cc },
! 571: { 157, PT_PC, ucp_Cf },
! 572: { 160, PT_SC, ucp_Chakma },
! 573: { 167, PT_SC, ucp_Cham },
! 574: { 172, PT_SC, ucp_Cherokee },
! 575: { 181, PT_PC, ucp_Cn },
! 576: { 184, PT_PC, ucp_Co },
! 577: { 187, PT_SC, ucp_Common },
! 578: { 194, PT_SC, ucp_Coptic },
! 579: { 201, PT_PC, ucp_Cs },
! 580: { 204, PT_SC, ucp_Cuneiform },
! 581: { 214, PT_SC, ucp_Cypriot },
! 582: { 222, PT_SC, ucp_Cyrillic },
! 583: { 231, PT_SC, ucp_Deseret },
! 584: { 239, PT_SC, ucp_Devanagari },
! 585: { 250, PT_SC, ucp_Duployan },
! 586: { 259, PT_SC, ucp_Egyptian_Hieroglyphs },
! 587: { 280, PT_SC, ucp_Elbasan },
! 588: { 288, PT_SC, ucp_Ethiopic },
! 589: { 297, PT_SC, ucp_Georgian },
! 590: { 306, PT_SC, ucp_Glagolitic },
! 591: { 317, PT_SC, ucp_Gothic },
! 592: { 324, PT_SC, ucp_Grantha },
! 593: { 332, PT_SC, ucp_Greek },
! 594: { 338, PT_SC, ucp_Gujarati },
! 595: { 347, PT_SC, ucp_Gurmukhi },
! 596: { 356, PT_SC, ucp_Han },
! 597: { 360, PT_SC, ucp_Hangul },
! 598: { 367, PT_SC, ucp_Hanunoo },
! 599: { 375, PT_SC, ucp_Hebrew },
! 600: { 382, PT_SC, ucp_Hiragana },
! 601: { 391, PT_SC, ucp_Imperial_Aramaic },
! 602: { 408, PT_SC, ucp_Inherited },
! 603: { 418, PT_SC, ucp_Inscriptional_Pahlavi },
! 604: { 440, PT_SC, ucp_Inscriptional_Parthian },
! 605: { 463, PT_SC, ucp_Javanese },
! 606: { 472, PT_SC, ucp_Kaithi },
! 607: { 479, PT_SC, ucp_Kannada },
! 608: { 487, PT_SC, ucp_Katakana },
! 609: { 496, PT_SC, ucp_Kayah_Li },
! 610: { 505, PT_SC, ucp_Kharoshthi },
! 611: { 516, PT_SC, ucp_Khmer },
! 612: { 522, PT_SC, ucp_Khojki },
! 613: { 529, PT_SC, ucp_Khudawadi },
! 614: { 539, PT_GC, ucp_L },
! 615: { 541, PT_LAMP, 0 },
! 616: { 544, PT_SC, ucp_Lao },
! 617: { 548, PT_SC, ucp_Latin },
! 618: { 554, PT_SC, ucp_Lepcha },
! 619: { 561, PT_SC, ucp_Limbu },
! 620: { 567, PT_SC, ucp_Linear_A },
! 621: { 576, PT_SC, ucp_Linear_B },
! 622: { 585, PT_SC, ucp_Lisu },
! 623: { 590, PT_PC, ucp_Ll },
! 624: { 593, PT_PC, ucp_Lm },
! 625: { 596, PT_PC, ucp_Lo },
! 626: { 599, PT_PC, ucp_Lt },
! 627: { 602, PT_PC, ucp_Lu },
! 628: { 605, PT_SC, ucp_Lycian },
! 629: { 612, PT_SC, ucp_Lydian },
! 630: { 619, PT_GC, ucp_M },
! 631: { 621, PT_SC, ucp_Mahajani },
! 632: { 630, PT_SC, ucp_Malayalam },
! 633: { 640, PT_SC, ucp_Mandaic },
! 634: { 648, PT_SC, ucp_Manichaean },
! 635: { 659, PT_PC, ucp_Mc },
! 636: { 662, PT_PC, ucp_Me },
! 637: { 665, PT_SC, ucp_Meetei_Mayek },
! 638: { 678, PT_SC, ucp_Mende_Kikakui },
! 639: { 692, PT_SC, ucp_Meroitic_Cursive },
! 640: { 709, PT_SC, ucp_Meroitic_Hieroglyphs },
! 641: { 730, PT_SC, ucp_Miao },
! 642: { 735, PT_PC, ucp_Mn },
! 643: { 738, PT_SC, ucp_Modi },
! 644: { 743, PT_SC, ucp_Mongolian },
! 645: { 753, PT_SC, ucp_Mro },
! 646: { 757, PT_SC, ucp_Myanmar },
! 647: { 765, PT_GC, ucp_N },
! 648: { 767, PT_SC, ucp_Nabataean },
! 649: { 777, PT_PC, ucp_Nd },
! 650: { 780, PT_SC, ucp_New_Tai_Lue },
! 651: { 792, PT_SC, ucp_Nko },
! 652: { 796, PT_PC, ucp_Nl },
! 653: { 799, PT_PC, ucp_No },
! 654: { 802, PT_SC, ucp_Ogham },
! 655: { 808, PT_SC, ucp_Ol_Chiki },
! 656: { 817, PT_SC, ucp_Old_Italic },
! 657: { 828, PT_SC, ucp_Old_North_Arabian },
! 658: { 846, PT_SC, ucp_Old_Permic },
! 659: { 857, PT_SC, ucp_Old_Persian },
! 660: { 869, PT_SC, ucp_Old_South_Arabian },
! 661: { 887, PT_SC, ucp_Old_Turkic },
! 662: { 898, PT_SC, ucp_Oriya },
! 663: { 904, PT_SC, ucp_Osmanya },
! 664: { 912, PT_GC, ucp_P },
! 665: { 914, PT_SC, ucp_Pahawh_Hmong },
! 666: { 927, PT_SC, ucp_Palmyrene },
! 667: { 937, PT_SC, ucp_Pau_Cin_Hau },
! 668: { 949, PT_PC, ucp_Pc },
! 669: { 952, PT_PC, ucp_Pd },
! 670: { 955, PT_PC, ucp_Pe },
! 671: { 958, PT_PC, ucp_Pf },
! 672: { 961, PT_SC, ucp_Phags_Pa },
! 673: { 970, PT_SC, ucp_Phoenician },
! 674: { 981, PT_PC, ucp_Pi },
! 675: { 984, PT_PC, ucp_Po },
! 676: { 987, PT_PC, ucp_Ps },
! 677: { 990, PT_SC, ucp_Psalter_Pahlavi },
! 678: { 1006, PT_SC, ucp_Rejang },
! 679: { 1013, PT_SC, ucp_Runic },
! 680: { 1019, PT_GC, ucp_S },
! 681: { 1021, PT_SC, ucp_Samaritan },
! 682: { 1031, PT_SC, ucp_Saurashtra },
! 683: { 1042, PT_PC, ucp_Sc },
! 684: { 1045, PT_SC, ucp_Sharada },
! 685: { 1053, PT_SC, ucp_Shavian },
! 686: { 1061, PT_SC, ucp_Siddham },
! 687: { 1069, PT_SC, ucp_Sinhala },
! 688: { 1077, PT_PC, ucp_Sk },
! 689: { 1080, PT_PC, ucp_Sm },
! 690: { 1083, PT_PC, ucp_So },
! 691: { 1086, PT_SC, ucp_Sora_Sompeng },
! 692: { 1099, PT_SC, ucp_Sundanese },
! 693: { 1109, PT_SC, ucp_Syloti_Nagri },
! 694: { 1122, PT_SC, ucp_Syriac },
! 695: { 1129, PT_SC, ucp_Tagalog },
! 696: { 1137, PT_SC, ucp_Tagbanwa },
! 697: { 1146, PT_SC, ucp_Tai_Le },
! 698: { 1153, PT_SC, ucp_Tai_Tham },
! 699: { 1162, PT_SC, ucp_Tai_Viet },
! 700: { 1171, PT_SC, ucp_Takri },
! 701: { 1177, PT_SC, ucp_Tamil },
! 702: { 1183, PT_SC, ucp_Telugu },
! 703: { 1190, PT_SC, ucp_Thaana },
! 704: { 1197, PT_SC, ucp_Thai },
! 705: { 1202, PT_SC, ucp_Tibetan },
! 706: { 1210, PT_SC, ucp_Tifinagh },
! 707: { 1219, PT_SC, ucp_Tirhuta },
! 708: { 1227, PT_SC, ucp_Ugaritic },
! 709: { 1236, PT_SC, ucp_Vai },
! 710: { 1240, PT_SC, ucp_Warang_Citi },
! 711: { 1252, PT_ALNUM, 0 },
! 712: { 1256, PT_PXSPACE, 0 },
! 713: { 1260, PT_SPACE, 0 },
! 714: { 1264, PT_UCNC, 0 },
! 715: { 1268, PT_WORD, 0 },
! 716: { 1272, PT_SC, ucp_Yi },
! 717: { 1275, PT_GC, ucp_Z },
! 718: { 1277, PT_PC, ucp_Zl },
! 719: { 1280, PT_PC, ucp_Zp },
! 720: { 1283, PT_PC, ucp_Zs }
1.1 misha 721: };
722:
1.5 misha 723: const int PRIV(utt_size) = sizeof(PRIV(utt)) / sizeof(ucp_type_table);
1.1 misha 724:
1.5 misha 725: #endif /* SUPPORT_UTF */
1.1 misha 726:
727: /* End of pcre_tables.c */
E-mail: