Fossil SCM

Update internal Unicode character tables, used in regular expression handling, from version 8.0 to 9.0.

jan.nijtmans 2016-06-14 12:27 trunk
Commit efe6ebb4b111a6f2a0a4ae6456217523c0d47e96
2 files changed +155 -141 +6 -1
+155 -141
--- src/unicode.c
+++ src/unicode.c
@@ -13,11 +13,11 @@
1313
** [email protected]
1414
** http://www.hwaci.com/drh/
1515
**
1616
*******************************************************************************
1717
**
18
-** This file is copied from ext/fts3/fts3_unicode2.c of SQLite3 with
18
+** This file is copied from ext/fts5/fts5_unicode2.c of SQLite3 with
1919
** minor changes.
2020
*/
2121
#include "config.h"
2222
#include "unicode.h"
2323
@@ -49,11 +49,11 @@
4949
0x00164437, 0x0017CC02, 0x0018001D, 0x00187802, 0x00192C15,
5050
0x0019A804, 0x0019C001, 0x001B5001, 0x001B580F, 0x001B9C07,
5151
0x001BF402, 0x001C000E, 0x001C3C01, 0x001C4401, 0x001CC01B,
5252
0x001E980B, 0x001FAC09, 0x001FD804, 0x00205804, 0x00206C09,
5353
0x00209403, 0x0020A405, 0x0020C00F, 0x00216403, 0x00217801,
54
- 0x00238C21, 0x0024E803, 0x0024F812, 0x00254407, 0x00258804,
54
+ 0x00235030, 0x0024E803, 0x0024F812, 0x00254407, 0x00258804,
5555
0x0025C001, 0x00260403, 0x0026F001, 0x0026F807, 0x00271C02,
5656
0x00272C03, 0x00275C01, 0x00278802, 0x0027C802, 0x0027E802,
5757
0x00280403, 0x0028F001, 0x0028F805, 0x00291C02, 0x00292C03,
5858
0x00294401, 0x0029C002, 0x0029D401, 0x002A0403, 0x002AF001,
5959
0x002AF808, 0x002B1C03, 0x002B2C03, 0x002B8802, 0x002BC002,
@@ -61,86 +61,91 @@
6161
0x002D5802, 0x002D8802, 0x002DC001, 0x002E0801, 0x002EF805,
6262
0x002F1803, 0x002F2804, 0x002F5C01, 0x002FCC08, 0x00300004,
6363
0x0030F807, 0x00311803, 0x00312804, 0x00315402, 0x00318802,
6464
0x0031FC01, 0x00320403, 0x0032F001, 0x0032F807, 0x00331803,
6565
0x00332804, 0x00335402, 0x00338802, 0x00340403, 0x0034F807,
66
- 0x00351803, 0x00352804, 0x00355C01, 0x00358802, 0x0035E401,
67
- 0x00360802, 0x00372801, 0x00373C06, 0x00375801, 0x00376008,
68
- 0x0037C803, 0x0038C401, 0x0038D007, 0x0038FC01, 0x00391C09,
69
- 0x00396802, 0x003AC401, 0x003AD006, 0x003AEC02, 0x003B2006,
70
- 0x003C041F, 0x003CD00C, 0x003DC417, 0x003E340B, 0x003E6424,
71
- 0x003EF80F, 0x003F380D, 0x0040AC14, 0x00412806, 0x00415804,
72
- 0x00417803, 0x00418803, 0x00419C07, 0x0041C404, 0x0042080C,
73
- 0x00423C01, 0x00426806, 0x0043EC01, 0x004D740C, 0x004E400A,
74
- 0x00500001, 0x0059B402, 0x005A0001, 0x005A6C02, 0x005BAC03,
75
- 0x005C4803, 0x005CC805, 0x005D4802, 0x005DC802, 0x005ED023,
76
- 0x005F6004, 0x005F7401, 0x0060000F, 0x0062A401, 0x0064800C,
77
- 0x0064C00C, 0x00650001, 0x00651002, 0x00677822, 0x00685C05,
78
- 0x00687802, 0x0069540A, 0x0069801D, 0x0069FC01, 0x006A8007,
79
- 0x006AA006, 0x006AC00F, 0x006C0005, 0x006CD011, 0x006D6823,
80
- 0x006E0003, 0x006E840D, 0x006F980E, 0x006FF004, 0x00709014,
81
- 0x0070EC05, 0x0071F802, 0x00730008, 0x00734019, 0x0073B401,
82
- 0x0073C803, 0x0073E002, 0x00770036, 0x0077F004, 0x007EF401,
83
- 0x007EFC03, 0x007F3403, 0x007F7403, 0x007FB403, 0x007FF402,
84
- 0x00800065, 0x0081980A, 0x0081E805, 0x00822805, 0x0082801F,
85
- 0x00834021, 0x00840002, 0x00840C04, 0x00842002, 0x00845001,
86
- 0x00845803, 0x00847806, 0x00849401, 0x00849C01, 0x0084A401,
87
- 0x0084B801, 0x0084E802, 0x00850005, 0x00852804, 0x00853C01,
88
- 0x00862802, 0x0086426B, 0x00900027, 0x0091000B, 0x0092704E,
89
- 0x00940276, 0x009E53E0, 0x00ADD820, 0x00AE6022, 0x00AEF40C,
90
- 0x00AF2808, 0x00AFB004, 0x00B39406, 0x00B3BC03, 0x00B3E404,
91
- 0x00B3F802, 0x00B5C001, 0x00B5FC01, 0x00B7804F, 0x00B8C013,
92
- 0x00BA001A, 0x00BA6C59, 0x00BC00D6, 0x00BFC00C, 0x00C00005,
93
- 0x00C02019, 0x00C0A807, 0x00C0D802, 0x00C0F403, 0x00C26404,
94
- 0x00C28001, 0x00C3EC01, 0x00C64002, 0x00C6580A, 0x00C70024,
95
- 0x00C8001F, 0x00C8A81E, 0x00C94001, 0x00C98020, 0x00CA2827,
96
- 0x00CB003F, 0x00CC0100, 0x01370040, 0x02924037, 0x0293F802,
97
- 0x02983403, 0x0299BC10, 0x029A7802, 0x029BC008, 0x029C0017,
98
- 0x029C8002, 0x029E2402, 0x02A00801, 0x02A01801, 0x02A02C01,
99
- 0x02A08C09, 0x02A0D804, 0x02A1D004, 0x02A20002, 0x02A2D011,
100
- 0x02A33802, 0x02A38012, 0x02A3E003, 0x02A3F001, 0x02A4980A,
101
- 0x02A51C0D, 0x02A57C01, 0x02A60004, 0x02A6CC1B, 0x02A77802,
102
- 0x02A79401, 0x02A8A40E, 0x02A90C01, 0x02A93002, 0x02A97004,
103
- 0x02A9DC03, 0x02A9EC03, 0x02AAC001, 0x02AAC803, 0x02AADC02,
104
- 0x02AAF802, 0x02AB0401, 0x02AB7802, 0x02ABAC07, 0x02ABD402,
105
- 0x02AD6C01, 0x02AF8C0B, 0x03600001, 0x036DFC02, 0x036FFC02,
106
- 0x037FFC01, 0x03EC7801, 0x03ECA401, 0x03EEC810, 0x03F4F802,
107
- 0x03F7F002, 0x03F8001A, 0x03F88033, 0x03F95013, 0x03F9A004,
108
- 0x03FBFC01, 0x03FC040F, 0x03FC6807, 0x03FCEC06, 0x03FD6C0B,
109
- 0x03FF8007, 0x03FFA007, 0x03FFE405, 0x04040003, 0x0404DC09,
110
- 0x0405E411, 0x04063001, 0x0406400C, 0x04068001, 0x0407402E,
111
- 0x040B8001, 0x040DD805, 0x040E7C01, 0x040F4001, 0x0415BC01,
112
- 0x04215C01, 0x0421DC02, 0x04247C01, 0x0424FC01, 0x04280403,
113
- 0x04281402, 0x04283004, 0x0428E003, 0x0428FC01, 0x04294009,
114
- 0x0429FC01, 0x042B2001, 0x042B9402, 0x042BC007, 0x042CE407,
115
- 0x042E6404, 0x04400003, 0x0440E016, 0x0441FC04, 0x0442C012,
116
- 0x04440003, 0x04449C0E, 0x04450004, 0x0445CC03, 0x04460003,
117
- 0x0446CC0E, 0x04471409, 0x04476C01, 0x04477403, 0x0448B012,
118
- 0x044AA401, 0x044B7C0C, 0x044C0004, 0x044CF001, 0x044CF807,
119
- 0x044D1C02, 0x044D2C03, 0x044D5C01, 0x044D8802, 0x044D9807,
120
- 0x044DC005, 0x0452C014, 0x04531801, 0x0456BC07, 0x0456E020,
121
- 0x04577002, 0x0458C014, 0x045AAC0D, 0x045C740F, 0x045CF004,
122
- 0x0491C005, 0x05A9B802, 0x05ABC006, 0x05ACC010, 0x05AD1002,
123
- 0x05BD442E, 0x05BE3C04, 0x06F27008, 0x074000F6, 0x07440027,
124
- 0x0744A4C0, 0x07480046, 0x074C0057, 0x075B0401, 0x075B6C01,
125
- 0x075BEC01, 0x075C5401, 0x075CD401, 0x075D3C01, 0x075DBC01,
126
- 0x075E2401, 0x075EA401, 0x075F0C01, 0x0760028C, 0x076A6C05,
127
- 0x076A840F, 0x07A34007, 0x07BBC002, 0x07C0002C, 0x07C0C064,
66
+ 0x00351803, 0x00352804, 0x00353C01, 0x00355C01, 0x00358802,
67
+ 0x0035E401, 0x00360802, 0x00372801, 0x00373C06, 0x00375801,
68
+ 0x00376008, 0x0037C803, 0x0038C401, 0x0038D007, 0x0038FC01,
69
+ 0x00391C09, 0x00396802, 0x003AC401, 0x003AD006, 0x003AEC02,
70
+ 0x003B2006, 0x003C041F, 0x003CD00C, 0x003DC417, 0x003E340B,
71
+ 0x003E6424, 0x003EF80F, 0x003F380D, 0x0040AC14, 0x00412806,
72
+ 0x00415804, 0x00417803, 0x00418803, 0x00419C07, 0x0041C404,
73
+ 0x0042080C, 0x00423C01, 0x00426806, 0x0043EC01, 0x004D740C,
74
+ 0x004E400A, 0x00500001, 0x0059B402, 0x005A0001, 0x005A6C02,
75
+ 0x005BAC03, 0x005C4803, 0x005CC805, 0x005D4802, 0x005DC802,
76
+ 0x005ED023, 0x005F6004, 0x005F7401, 0x0060000F, 0x00621402,
77
+ 0x0062A401, 0x0064800C, 0x0064C00C, 0x00650001, 0x00651002,
78
+ 0x00677822, 0x00685C05, 0x00687802, 0x0069540A, 0x0069801D,
79
+ 0x0069FC01, 0x006A8007, 0x006AA006, 0x006AC00F, 0x006C0005,
80
+ 0x006CD011, 0x006D6823, 0x006E0003, 0x006E840D, 0x006F980E,
81
+ 0x006FF004, 0x00709014, 0x0070EC05, 0x0071F802, 0x00730008,
82
+ 0x00734019, 0x0073B401, 0x0073C803, 0x0073E002, 0x00770036,
83
+ 0x0077EC05, 0x007EF401, 0x007EFC03, 0x007F3403, 0x007F7403,
84
+ 0x007FB403, 0x007FF402, 0x00800065, 0x0081980A, 0x0081E805,
85
+ 0x00822805, 0x0082801F, 0x00834021, 0x00840002, 0x00840C04,
86
+ 0x00842002, 0x00845001, 0x00845803, 0x00847806, 0x00849401,
87
+ 0x00849C01, 0x0084A401, 0x0084B801, 0x0084E802, 0x00850005,
88
+ 0x00852804, 0x00853C01, 0x00862802, 0x0086426F, 0x00900027,
89
+ 0x0091000B, 0x0092704E, 0x00940276, 0x009E53E0, 0x00ADD820,
90
+ 0x00AE6022, 0x00AEF40C, 0x00AF2808, 0x00AFB004, 0x00B39406,
91
+ 0x00B3BC03, 0x00B3E404, 0x00B3F802, 0x00B5C001, 0x00B5FC01,
92
+ 0x00B7804F, 0x00B8C015, 0x00BA001A, 0x00BA6C59, 0x00BC00D6,
93
+ 0x00BFC00C, 0x00C00005, 0x00C02019, 0x00C0A807, 0x00C0D802,
94
+ 0x00C0F403, 0x00C26404, 0x00C28001, 0x00C3EC01, 0x00C64002,
95
+ 0x00C6580A, 0x00C70024, 0x00C8001F, 0x00C8A81E, 0x00C94001,
96
+ 0x00C98020, 0x00CA2827, 0x00CB003F, 0x00CC0100, 0x01370040,
97
+ 0x02924037, 0x0293F802, 0x02983403, 0x0299BC10, 0x029A7802,
98
+ 0x029BC008, 0x029C0017, 0x029C8002, 0x029E2402, 0x02A00801,
99
+ 0x02A01801, 0x02A02C01, 0x02A08C09, 0x02A0D804, 0x02A1D004,
100
+ 0x02A20002, 0x02A2D012, 0x02A33802, 0x02A38012, 0x02A3E003,
101
+ 0x02A3F001, 0x02A4980A, 0x02A51C0D, 0x02A57C01, 0x02A60004,
102
+ 0x02A6CC1B, 0x02A77802, 0x02A79401, 0x02A8A40E, 0x02A90C01,
103
+ 0x02A93002, 0x02A97004, 0x02A9DC03, 0x02A9EC03, 0x02AAC001,
104
+ 0x02AAC803, 0x02AADC02, 0x02AAF802, 0x02AB0401, 0x02AB7802,
105
+ 0x02ABAC07, 0x02ABD402, 0x02AD6C01, 0x02AF8C0B, 0x03600001,
106
+ 0x036DFC02, 0x036FFC02, 0x037FFC01, 0x03EC7801, 0x03ECA401,
107
+ 0x03EEC810, 0x03F4F802, 0x03F7F002, 0x03F8001A, 0x03F88033,
108
+ 0x03F95013, 0x03F9A004, 0x03FBFC01, 0x03FC040F, 0x03FC6807,
109
+ 0x03FCEC06, 0x03FD6C0B, 0x03FF8007, 0x03FFA007, 0x03FFE405,
110
+ 0x04040003, 0x0404DC09, 0x0405E411, 0x04063003, 0x0406400C,
111
+ 0x04068001, 0x0407402E, 0x040B8001, 0x040DD805, 0x040E7C01,
112
+ 0x040F4001, 0x0415BC01, 0x04215C01, 0x0421DC02, 0x04247C01,
113
+ 0x0424FC01, 0x04280403, 0x04281402, 0x04283004, 0x0428E003,
114
+ 0x0428FC01, 0x04294009, 0x0429FC01, 0x042B2001, 0x042B9402,
115
+ 0x042BC007, 0x042CE407, 0x042E6404, 0x04400003, 0x0440E016,
116
+ 0x0441FC04, 0x0442C012, 0x04440003, 0x04449C0E, 0x04450004,
117
+ 0x0445CC03, 0x04460003, 0x0446CC0E, 0x04471409, 0x04476C01,
118
+ 0x04477403, 0x0448B013, 0x044AA401, 0x044B7C0C, 0x044C0004,
119
+ 0x044CF001, 0x044CF807, 0x044D1C02, 0x044D2C03, 0x044D5C01,
120
+ 0x044D8802, 0x044D9807, 0x044DC005, 0x0450D412, 0x04512C05,
121
+ 0x04516C01, 0x04517401, 0x0452C014, 0x04531801, 0x0456BC07,
122
+ 0x0456E020, 0x04577002, 0x0458C014, 0x0459800D, 0x045AAC0D,
123
+ 0x045C740F, 0x045CF004, 0x0470BC08, 0x0470E008, 0x04710405,
124
+ 0x0471C002, 0x04724816, 0x0472A40E, 0x0491C005, 0x05A9B802,
125
+ 0x05ABC006, 0x05ACC010, 0x05AD1002, 0x05BD442E, 0x05BE3C04,
126
+ 0x06F27008, 0x074000F6, 0x07440027, 0x0744A4C0, 0x07480046,
127
+ 0x074C0057, 0x075B0401, 0x075B6C01, 0x075BEC01, 0x075C5401,
128
+ 0x075CD401, 0x075D3C01, 0x075DBC01, 0x075E2401, 0x075EA401,
129
+ 0x075F0C01, 0x0760028C, 0x076A6C05, 0x076A840F, 0x07800007,
130
+ 0x07802011, 0x07806C07, 0x07808C02, 0x07809805, 0x07A34007,
131
+ 0x07A51007, 0x07A57802, 0x07BBC002, 0x07C0002C, 0x07C0C064,
128132
0x07C2800F, 0x07C2C40F, 0x07C3040F, 0x07C34425, 0x07C4401F,
129
- 0x07C4C03C, 0x07C5C02B, 0x07C7981D, 0x07C8402B, 0x07C90009,
130
- 0x07C94002, 0x07CC027A, 0x07D5EC29, 0x07D6952C, 0x07DB800D,
131
- 0x07DBC004, 0x07DC0074, 0x07DE0055, 0x07E0000C, 0x07E04038,
132
- 0x07E1400A, 0x07E18028, 0x07E2401E, 0x07E44009, 0x07E60005,
133
- 0x07E70001, 0x38000401, 0x38008060, 0x380400F0,
133
+ 0x07C4C03C, 0x07C5C03D, 0x07C7981D, 0x07C8402C, 0x07C90009,
134
+ 0x07C94002, 0x07CC03D3, 0x07DB800D, 0x07DBC007, 0x07DC0074,
135
+ 0x07DE0055, 0x07E0000C, 0x07E04038, 0x07E1400A, 0x07E18028,
136
+ 0x07E2401E, 0x07E4400F, 0x07E48008, 0x07E4C001, 0x07E4CC0C,
137
+ 0x07E5000C, 0x07E5400F, 0x07E60012, 0x07E70001, 0x38000401,
138
+ 0x38008060, 0x380400F0,
134139
};
135140
static const unsigned int aAscii[4] = {
136141
0xFFFFFFFF, 0xFC00FFFF, 0xF8000001, 0xF8000001,
137142
};
138143
139
- if( c<128 ){
144
+ if( (unsigned int)c<128 ){
140145
return ( (aAscii[c >> 5] & (1 << (c & 0x001F)))==0 );
141
- }else if( c<(1<<22) ){
146
+ }else if( (unsigned int)c<(1<<22) ){
142147
unsigned int key = (((unsigned int)c)<<10) | 0x000003FF;
143148
int iRes = 0;
144149
int iHi = sizeof(aEntry)/sizeof(aEntry[0]) - 1;
145150
int iLo = 0;
146151
while( iHi>=iLo ){
@@ -258,95 +263,100 @@
258263
static const struct TableEntry {
259264
unsigned short iCode;
260265
unsigned char flags;
261266
unsigned char nRange;
262267
} aEntry[] = {
263
- {65, 14, 26}, {181, 64, 1}, {192, 14, 23},
268
+ {65, 14, 26}, {181, 66, 1}, {192, 14, 23},
264269
{216, 14, 7}, {256, 1, 48}, {306, 1, 6},
265
- {313, 1, 16}, {330, 1, 46}, {376, 132, 1},
266
- {377, 1, 6}, {383, 120, 1}, {385, 50, 1},
267
- {386, 1, 4}, {390, 44, 1}, {391, 0, 1},
268
- {393, 42, 2}, {395, 0, 1}, {398, 32, 1},
269
- {399, 38, 1}, {400, 40, 1}, {401, 0, 1},
270
- {403, 42, 1}, {404, 46, 1}, {406, 52, 1},
271
- {407, 48, 1}, {408, 0, 1}, {412, 52, 1},
272
- {413, 54, 1}, {415, 56, 1}, {416, 1, 6},
273
- {422, 60, 1}, {423, 0, 1}, {425, 60, 1},
274
- {428, 0, 1}, {430, 60, 1}, {431, 0, 1},
275
- {433, 58, 2}, {435, 1, 4}, {439, 62, 1},
270
+ {313, 1, 16}, {330, 1, 46}, {376, 150, 1},
271
+ {377, 1, 6}, {383, 138, 1}, {385, 52, 1},
272
+ {386, 1, 4}, {390, 46, 1}, {391, 0, 1},
273
+ {393, 44, 2}, {395, 0, 1}, {398, 34, 1},
274
+ {399, 40, 1}, {400, 42, 1}, {401, 0, 1},
275
+ {403, 44, 1}, {404, 48, 1}, {406, 54, 1},
276
+ {407, 50, 1}, {408, 0, 1}, {412, 54, 1},
277
+ {413, 56, 1}, {415, 58, 1}, {416, 1, 6},
278
+ {422, 62, 1}, {423, 0, 1}, {425, 62, 1},
279
+ {428, 0, 1}, {430, 62, 1}, {431, 0, 1},
280
+ {433, 60, 2}, {435, 1, 4}, {439, 64, 1},
276281
{440, 0, 1}, {444, 0, 1}, {452, 2, 1},
277282
{453, 0, 1}, {455, 2, 1}, {456, 0, 1},
278283
{458, 2, 1}, {459, 1, 18}, {478, 1, 18},
279
- {497, 2, 1}, {498, 1, 4}, {502, 138, 1},
280
- {503, 150, 1}, {504, 1, 40}, {544, 126, 1},
281
- {546, 1, 18}, {570, 72, 1}, {571, 0, 1},
282
- {573, 124, 1}, {574, 70, 1}, {577, 0, 1},
283
- {579, 122, 1}, {580, 28, 1}, {581, 30, 1},
284
- {582, 1, 10}, {837, 36, 1}, {880, 1, 4},
285
- {886, 0, 1}, {895, 36, 1}, {902, 18, 1},
286
- {904, 16, 3}, {908, 26, 1}, {910, 24, 2},
284
+ {497, 2, 1}, {498, 1, 4}, {502, 156, 1},
285
+ {503, 168, 1}, {504, 1, 40}, {544, 144, 1},
286
+ {546, 1, 18}, {570, 74, 1}, {571, 0, 1},
287
+ {573, 142, 1}, {574, 72, 1}, {577, 0, 1},
288
+ {579, 140, 1}, {580, 30, 1}, {581, 32, 1},
289
+ {582, 1, 10}, {837, 38, 1}, {880, 1, 4},
290
+ {886, 0, 1}, {895, 38, 1}, {902, 20, 1},
291
+ {904, 18, 3}, {908, 28, 1}, {910, 26, 2},
287292
{913, 14, 17}, {931, 14, 9}, {962, 0, 1},
288
- {975, 4, 1}, {976, 156, 1}, {977, 158, 1},
289
- {981, 162, 1}, {982, 160, 1}, {984, 1, 24},
290
- {1008, 152, 1}, {1009, 154, 1}, {1012, 146, 1},
291
- {1013, 144, 1}, {1015, 0, 1}, {1017, 168, 1},
292
- {1018, 0, 1}, {1021, 126, 3}, {1024, 34, 16},
293
+ {975, 4, 1}, {976, 174, 1}, {977, 176, 1},
294
+ {981, 180, 1}, {982, 178, 1}, {984, 1, 24},
295
+ {1008, 170, 1}, {1009, 172, 1}, {1012, 164, 1},
296
+ {1013, 162, 1}, {1015, 0, 1}, {1017, 186, 1},
297
+ {1018, 0, 1}, {1021, 144, 3}, {1024, 36, 16},
293298
{1040, 14, 32}, {1120, 1, 34}, {1162, 1, 54},
294299
{1216, 6, 1}, {1217, 1, 14}, {1232, 1, 96},
295
- {1329, 22, 38}, {4256, 68, 38}, {4295, 68, 1},
296
- {4301, 68, 1}, {5112, 166, 6}, {7680, 1, 150},
297
- {7835, 148, 1}, {7838, 112, 1}, {7840, 1, 96},
298
- {7944, 166, 8}, {7960, 166, 6}, {7976, 166, 8},
299
- {7992, 166, 8}, {8008, 166, 6}, {8025, 167, 8},
300
- {8040, 166, 8}, {8072, 166, 8}, {8088, 166, 8},
301
- {8104, 166, 8}, {8120, 166, 2}, {8122, 142, 2},
302
- {8124, 164, 1}, {8126, 116, 1}, {8136, 140, 4},
303
- {8140, 164, 1}, {8152, 166, 2}, {8154, 136, 2},
304
- {8168, 166, 2}, {8170, 134, 2}, {8172, 168, 1},
305
- {8184, 128, 2}, {8186, 130, 2}, {8188, 164, 1},
306
- {8486, 114, 1}, {8490, 108, 1}, {8491, 110, 1},
307
- {8498, 12, 1}, {8544, 8, 16}, {8579, 0, 1},
308
- {9398, 10, 26}, {11264, 22, 47}, {11360, 0, 1},
309
- {11362, 104, 1}, {11363, 118, 1}, {11364, 106, 1},
310
- {11367, 1, 6}, {11373, 100, 1}, {11374, 102, 1},
311
- {11375, 96, 1}, {11376, 98, 1}, {11378, 0, 1},
312
- {11381, 0, 1}, {11390, 94, 2}, {11392, 1, 100},
313
- {11499, 1, 4}, {11506, 0, 1}, {42560, 1, 46},
314
- {42624, 1, 28}, {42786, 1, 14}, {42802, 1, 62},
315
- {42873, 1, 4}, {42877, 92, 1}, {42878, 1, 10},
316
- {42891, 0, 1}, {42893, 84, 1}, {42896, 1, 4},
317
- {42902, 1, 20}, {42922, 78, 1}, {42923, 74, 1},
318
- {42924, 76, 1}, {42925, 80, 1}, {42928, 88, 1},
319
- {42929, 82, 1}, {42930, 86, 1}, {42931, 66, 1},
320
- {42932, 1, 4}, {43888, 90, 80}, {65313, 14, 26},
300
+ {1329, 24, 38}, {4256, 70, 38}, {4295, 70, 1},
301
+ {4301, 70, 1}, {5112, 184, 6}, {7296, 122, 1},
302
+ {7297, 124, 1}, {7298, 126, 1}, {7299, 130, 2},
303
+ {7301, 128, 1}, {7302, 132, 1}, {7303, 134, 1},
304
+ {7304, 96, 1}, {7680, 1, 150}, {7835, 166, 1},
305
+ {7838, 116, 1}, {7840, 1, 96}, {7944, 184, 8},
306
+ {7960, 184, 6}, {7976, 184, 8}, {7992, 184, 8},
307
+ {8008, 184, 6}, {8025, 185, 8}, {8040, 184, 8},
308
+ {8072, 184, 8}, {8088, 184, 8}, {8104, 184, 8},
309
+ {8120, 184, 2}, {8122, 160, 2}, {8124, 182, 1},
310
+ {8126, 120, 1}, {8136, 158, 4}, {8140, 182, 1},
311
+ {8152, 184, 2}, {8154, 154, 2}, {8168, 184, 2},
312
+ {8170, 152, 2}, {8172, 186, 1}, {8184, 146, 2},
313
+ {8186, 148, 2}, {8188, 182, 1}, {8486, 118, 1},
314
+ {8490, 112, 1}, {8491, 114, 1}, {8498, 12, 1},
315
+ {8544, 8, 16}, {8579, 0, 1}, {9398, 10, 26},
316
+ {11264, 24, 47}, {11360, 0, 1}, {11362, 108, 1},
317
+ {11363, 136, 1}, {11364, 110, 1}, {11367, 1, 6},
318
+ {11373, 104, 1}, {11374, 106, 1}, {11375, 100, 1},
319
+ {11376, 102, 1}, {11378, 0, 1}, {11381, 0, 1},
320
+ {11390, 98, 2}, {11392, 1, 100}, {11499, 1, 4},
321
+ {11506, 0, 1}, {42560, 1, 46}, {42624, 1, 28},
322
+ {42786, 1, 14}, {42802, 1, 62}, {42873, 1, 4},
323
+ {42877, 94, 1}, {42878, 1, 10}, {42891, 0, 1},
324
+ {42893, 86, 1}, {42896, 1, 4}, {42902, 1, 20},
325
+ {42922, 80, 1}, {42923, 76, 1}, {42924, 78, 1},
326
+ {42925, 82, 1}, {42926, 80, 1}, {42928, 90, 1},
327
+ {42929, 84, 1}, {42930, 88, 1}, {42931, 68, 1},
328
+ {42932, 1, 4}, {43888, 92, 80}, {65313, 14, 26},
321329
};
322330
static const unsigned short aiOff[] = {
323331
1, 2, 8, 15, 16, 26, 28, 32,
324
- 37, 38, 40, 48, 63, 64, 69, 71,
325
- 79, 80, 116, 202, 203, 205, 206, 207,
326
- 209, 210, 211, 213, 214, 217, 218, 219,
327
- 775, 928, 7264, 10792, 10795, 23217, 23221, 23228,
328
- 23231, 23254, 23256, 23275, 23278, 26672, 30204, 54721,
329
- 54753, 54754, 54756, 54787, 54793, 54809, 57153, 57274,
330
- 57921, 58019, 58363, 61722, 65268, 65341, 65373, 65406,
331
- 65408, 65410, 65415, 65424, 65436, 65439, 65450, 65462,
332
- 65472, 65476, 65478, 65480, 65482, 65488, 65506, 65511,
333
- 65514, 65521, 65527, 65528, 65529,
332
+ 34, 37, 38, 40, 48, 63, 64, 69,
333
+ 71, 79, 80, 116, 202, 203, 205, 206,
334
+ 207, 209, 210, 211, 213, 214, 217, 218,
335
+ 219, 775, 928, 7264, 10792, 10795, 23217, 23221,
336
+ 23228, 23231, 23254, 23256, 23275, 23278, 26672, 30204,
337
+ 35267, 54721, 54753, 54754, 54756, 54787, 54793, 54809,
338
+ 57153, 57274, 57921, 58019, 58363, 59314, 59315, 59324,
339
+ 59325, 59326, 59332, 59356, 61722, 65268, 65341, 65373,
340
+ 65406, 65408, 65410, 65415, 65424, 65436, 65439, 65450,
341
+ 65462, 65472, 65476, 65478, 65480, 65482, 65488, 65506,
342
+ 65511, 65514, 65521, 65527, 65528, 65529,
334343
};
335344
336345
int ret = c;
337346
338
- assert( c>=0 );
339347
assert( sizeof(unsigned short)==2 && sizeof(unsigned char)==1 );
340348
341349
if( c<128 ){
342350
if( c>='A' && c<='Z' ) ret = c + ('a' - 'A');
343351
}else if( c<65536 ){
352
+ const struct TableEntry *p;
344353
int iHi = sizeof(aEntry)/sizeof(aEntry[0]) - 1;
345354
int iLo = 0;
346355
int iRes = -1;
347356
357
+ assert( c>aEntry[0].iCode );
348358
while( iHi>=iLo ){
349359
int iTest = (iHi + iLo) / 2;
350360
int cmp = (c - aEntry[iTest].iCode);
351361
if( cmp>=0 ){
352362
iRes = iTest;
@@ -353,30 +363,34 @@
353363
iLo = iTest+1;
354364
}else{
355365
iHi = iTest-1;
356366
}
357367
}
358
- assert( iRes<0 || c>=aEntry[iRes].iCode );
359
-
360
- if( iRes>=0 ){
361
- const struct TableEntry *p = &aEntry[iRes];
362
- if( c<(p->iCode + p->nRange) && 0==(0x01 & p->flags & (p->iCode ^ c)) ){
363
- ret = (c + (aiOff[p->flags>>1])) & 0x0000FFFF;
364
- assert( ret>0 );
365
- }
368
+
369
+ assert( iRes>=0 && c>=aEntry[iRes].iCode );
370
+ p = &aEntry[iRes];
371
+ if( c<(p->iCode + p->nRange) && 0==(0x01 & p->flags & (p->iCode ^ c)) ){
372
+ ret = (c + (aiOff[p->flags>>1])) & 0x0000FFFF;
373
+ assert( ret>0 );
366374
}
367375
368376
if( bRemoveDiacritic ) ret = unicode_remove_diacritic(ret);
369377
}
370378
371379
else if( c>=66560 && c<66600 ){
372380
ret = c + 40;
381
+ }
382
+ else if( c>=66736 && c<66772 ){
383
+ ret = c + 40;
373384
}
374385
else if( c>=68736 && c<68787 ){
375386
ret = c + 64;
376387
}
377388
else if( c>=71840 && c<71872 ){
378389
ret = c + 32;
390
+ }
391
+ else if( c>=125184 && c<125218 ){
392
+ ret = c + 34;
379393
}
380394
381395
return ret;
382396
}
383397
--- src/unicode.c
+++ src/unicode.c
@@ -13,11 +13,11 @@
13 ** [email protected]
14 ** http://www.hwaci.com/drh/
15 **
16 *******************************************************************************
17 **
18 ** This file is copied from ext/fts3/fts3_unicode2.c of SQLite3 with
19 ** minor changes.
20 */
21 #include "config.h"
22 #include "unicode.h"
23
@@ -49,11 +49,11 @@
49 0x00164437, 0x0017CC02, 0x0018001D, 0x00187802, 0x00192C15,
50 0x0019A804, 0x0019C001, 0x001B5001, 0x001B580F, 0x001B9C07,
51 0x001BF402, 0x001C000E, 0x001C3C01, 0x001C4401, 0x001CC01B,
52 0x001E980B, 0x001FAC09, 0x001FD804, 0x00205804, 0x00206C09,
53 0x00209403, 0x0020A405, 0x0020C00F, 0x00216403, 0x00217801,
54 0x00238C21, 0x0024E803, 0x0024F812, 0x00254407, 0x00258804,
55 0x0025C001, 0x00260403, 0x0026F001, 0x0026F807, 0x00271C02,
56 0x00272C03, 0x00275C01, 0x00278802, 0x0027C802, 0x0027E802,
57 0x00280403, 0x0028F001, 0x0028F805, 0x00291C02, 0x00292C03,
58 0x00294401, 0x0029C002, 0x0029D401, 0x002A0403, 0x002AF001,
59 0x002AF808, 0x002B1C03, 0x002B2C03, 0x002B8802, 0x002BC002,
@@ -61,86 +61,91 @@
61 0x002D5802, 0x002D8802, 0x002DC001, 0x002E0801, 0x002EF805,
62 0x002F1803, 0x002F2804, 0x002F5C01, 0x002FCC08, 0x00300004,
63 0x0030F807, 0x00311803, 0x00312804, 0x00315402, 0x00318802,
64 0x0031FC01, 0x00320403, 0x0032F001, 0x0032F807, 0x00331803,
65 0x00332804, 0x00335402, 0x00338802, 0x00340403, 0x0034F807,
66 0x00351803, 0x00352804, 0x00355C01, 0x00358802, 0x0035E401,
67 0x00360802, 0x00372801, 0x00373C06, 0x00375801, 0x00376008,
68 0x0037C803, 0x0038C401, 0x0038D007, 0x0038FC01, 0x00391C09,
69 0x00396802, 0x003AC401, 0x003AD006, 0x003AEC02, 0x003B2006,
70 0x003C041F, 0x003CD00C, 0x003DC417, 0x003E340B, 0x003E6424,
71 0x003EF80F, 0x003F380D, 0x0040AC14, 0x00412806, 0x00415804,
72 0x00417803, 0x00418803, 0x00419C07, 0x0041C404, 0x0042080C,
73 0x00423C01, 0x00426806, 0x0043EC01, 0x004D740C, 0x004E400A,
74 0x00500001, 0x0059B402, 0x005A0001, 0x005A6C02, 0x005BAC03,
75 0x005C4803, 0x005CC805, 0x005D4802, 0x005DC802, 0x005ED023,
76 0x005F6004, 0x005F7401, 0x0060000F, 0x0062A401, 0x0064800C,
77 0x0064C00C, 0x00650001, 0x00651002, 0x00677822, 0x00685C05,
78 0x00687802, 0x0069540A, 0x0069801D, 0x0069FC01, 0x006A8007,
79 0x006AA006, 0x006AC00F, 0x006C0005, 0x006CD011, 0x006D6823,
80 0x006E0003, 0x006E840D, 0x006F980E, 0x006FF004, 0x00709014,
81 0x0070EC05, 0x0071F802, 0x00730008, 0x00734019, 0x0073B401,
82 0x0073C803, 0x0073E002, 0x00770036, 0x0077F004, 0x007EF401,
83 0x007EFC03, 0x007F3403, 0x007F7403, 0x007FB403, 0x007FF402,
84 0x00800065, 0x0081980A, 0x0081E805, 0x00822805, 0x0082801F,
85 0x00834021, 0x00840002, 0x00840C04, 0x00842002, 0x00845001,
86 0x00845803, 0x00847806, 0x00849401, 0x00849C01, 0x0084A401,
87 0x0084B801, 0x0084E802, 0x00850005, 0x00852804, 0x00853C01,
88 0x00862802, 0x0086426B, 0x00900027, 0x0091000B, 0x0092704E,
89 0x00940276, 0x009E53E0, 0x00ADD820, 0x00AE6022, 0x00AEF40C,
90 0x00AF2808, 0x00AFB004, 0x00B39406, 0x00B3BC03, 0x00B3E404,
91 0x00B3F802, 0x00B5C001, 0x00B5FC01, 0x00B7804F, 0x00B8C013,
92 0x00BA001A, 0x00BA6C59, 0x00BC00D6, 0x00BFC00C, 0x00C00005,
93 0x00C02019, 0x00C0A807, 0x00C0D802, 0x00C0F403, 0x00C26404,
94 0x00C28001, 0x00C3EC01, 0x00C64002, 0x00C6580A, 0x00C70024,
95 0x00C8001F, 0x00C8A81E, 0x00C94001, 0x00C98020, 0x00CA2827,
96 0x00CB003F, 0x00CC0100, 0x01370040, 0x02924037, 0x0293F802,
97 0x02983403, 0x0299BC10, 0x029A7802, 0x029BC008, 0x029C0017,
98 0x029C8002, 0x029E2402, 0x02A00801, 0x02A01801, 0x02A02C01,
99 0x02A08C09, 0x02A0D804, 0x02A1D004, 0x02A20002, 0x02A2D011,
100 0x02A33802, 0x02A38012, 0x02A3E003, 0x02A3F001, 0x02A4980A,
101 0x02A51C0D, 0x02A57C01, 0x02A60004, 0x02A6CC1B, 0x02A77802,
102 0x02A79401, 0x02A8A40E, 0x02A90C01, 0x02A93002, 0x02A97004,
103 0x02A9DC03, 0x02A9EC03, 0x02AAC001, 0x02AAC803, 0x02AADC02,
104 0x02AAF802, 0x02AB0401, 0x02AB7802, 0x02ABAC07, 0x02ABD402,
105 0x02AD6C01, 0x02AF8C0B, 0x03600001, 0x036DFC02, 0x036FFC02,
106 0x037FFC01, 0x03EC7801, 0x03ECA401, 0x03EEC810, 0x03F4F802,
107 0x03F7F002, 0x03F8001A, 0x03F88033, 0x03F95013, 0x03F9A004,
108 0x03FBFC01, 0x03FC040F, 0x03FC6807, 0x03FCEC06, 0x03FD6C0B,
109 0x03FF8007, 0x03FFA007, 0x03FFE405, 0x04040003, 0x0404DC09,
110 0x0405E411, 0x04063001, 0x0406400C, 0x04068001, 0x0407402E,
111 0x040B8001, 0x040DD805, 0x040E7C01, 0x040F4001, 0x0415BC01,
112 0x04215C01, 0x0421DC02, 0x04247C01, 0x0424FC01, 0x04280403,
113 0x04281402, 0x04283004, 0x0428E003, 0x0428FC01, 0x04294009,
114 0x0429FC01, 0x042B2001, 0x042B9402, 0x042BC007, 0x042CE407,
115 0x042E6404, 0x04400003, 0x0440E016, 0x0441FC04, 0x0442C012,
116 0x04440003, 0x04449C0E, 0x04450004, 0x0445CC03, 0x04460003,
117 0x0446CC0E, 0x04471409, 0x04476C01, 0x04477403, 0x0448B012,
118 0x044AA401, 0x044B7C0C, 0x044C0004, 0x044CF001, 0x044CF807,
119 0x044D1C02, 0x044D2C03, 0x044D5C01, 0x044D8802, 0x044D9807,
120 0x044DC005, 0x0452C014, 0x04531801, 0x0456BC07, 0x0456E020,
121 0x04577002, 0x0458C014, 0x045AAC0D, 0x045C740F, 0x045CF004,
122 0x0491C005, 0x05A9B802, 0x05ABC006, 0x05ACC010, 0x05AD1002,
123 0x05BD442E, 0x05BE3C04, 0x06F27008, 0x074000F6, 0x07440027,
124 0x0744A4C0, 0x07480046, 0x074C0057, 0x075B0401, 0x075B6C01,
125 0x075BEC01, 0x075C5401, 0x075CD401, 0x075D3C01, 0x075DBC01,
126 0x075E2401, 0x075EA401, 0x075F0C01, 0x0760028C, 0x076A6C05,
127 0x076A840F, 0x07A34007, 0x07BBC002, 0x07C0002C, 0x07C0C064,
 
 
 
 
128 0x07C2800F, 0x07C2C40F, 0x07C3040F, 0x07C34425, 0x07C4401F,
129 0x07C4C03C, 0x07C5C02B, 0x07C7981D, 0x07C8402B, 0x07C90009,
130 0x07C94002, 0x07CC027A, 0x07D5EC29, 0x07D6952C, 0x07DB800D,
131 0x07DBC004, 0x07DC0074, 0x07DE0055, 0x07E0000C, 0x07E04038,
132 0x07E1400A, 0x07E18028, 0x07E2401E, 0x07E44009, 0x07E60005,
133 0x07E70001, 0x38000401, 0x38008060, 0x380400F0,
 
134 };
135 static const unsigned int aAscii[4] = {
136 0xFFFFFFFF, 0xFC00FFFF, 0xF8000001, 0xF8000001,
137 };
138
139 if( c<128 ){
140 return ( (aAscii[c >> 5] & (1 << (c & 0x001F)))==0 );
141 }else if( c<(1<<22) ){
142 unsigned int key = (((unsigned int)c)<<10) | 0x000003FF;
143 int iRes = 0;
144 int iHi = sizeof(aEntry)/sizeof(aEntry[0]) - 1;
145 int iLo = 0;
146 while( iHi>=iLo ){
@@ -258,95 +263,100 @@
258 static const struct TableEntry {
259 unsigned short iCode;
260 unsigned char flags;
261 unsigned char nRange;
262 } aEntry[] = {
263 {65, 14, 26}, {181, 64, 1}, {192, 14, 23},
264 {216, 14, 7}, {256, 1, 48}, {306, 1, 6},
265 {313, 1, 16}, {330, 1, 46}, {376, 132, 1},
266 {377, 1, 6}, {383, 120, 1}, {385, 50, 1},
267 {386, 1, 4}, {390, 44, 1}, {391, 0, 1},
268 {393, 42, 2}, {395, 0, 1}, {398, 32, 1},
269 {399, 38, 1}, {400, 40, 1}, {401, 0, 1},
270 {403, 42, 1}, {404, 46, 1}, {406, 52, 1},
271 {407, 48, 1}, {408, 0, 1}, {412, 52, 1},
272 {413, 54, 1}, {415, 56, 1}, {416, 1, 6},
273 {422, 60, 1}, {423, 0, 1}, {425, 60, 1},
274 {428, 0, 1}, {430, 60, 1}, {431, 0, 1},
275 {433, 58, 2}, {435, 1, 4}, {439, 62, 1},
276 {440, 0, 1}, {444, 0, 1}, {452, 2, 1},
277 {453, 0, 1}, {455, 2, 1}, {456, 0, 1},
278 {458, 2, 1}, {459, 1, 18}, {478, 1, 18},
279 {497, 2, 1}, {498, 1, 4}, {502, 138, 1},
280 {503, 150, 1}, {504, 1, 40}, {544, 126, 1},
281 {546, 1, 18}, {570, 72, 1}, {571, 0, 1},
282 {573, 124, 1}, {574, 70, 1}, {577, 0, 1},
283 {579, 122, 1}, {580, 28, 1}, {581, 30, 1},
284 {582, 1, 10}, {837, 36, 1}, {880, 1, 4},
285 {886, 0, 1}, {895, 36, 1}, {902, 18, 1},
286 {904, 16, 3}, {908, 26, 1}, {910, 24, 2},
287 {913, 14, 17}, {931, 14, 9}, {962, 0, 1},
288 {975, 4, 1}, {976, 156, 1}, {977, 158, 1},
289 {981, 162, 1}, {982, 160, 1}, {984, 1, 24},
290 {1008, 152, 1}, {1009, 154, 1}, {1012, 146, 1},
291 {1013, 144, 1}, {1015, 0, 1}, {1017, 168, 1},
292 {1018, 0, 1}, {1021, 126, 3}, {1024, 34, 16},
293 {1040, 14, 32}, {1120, 1, 34}, {1162, 1, 54},
294 {1216, 6, 1}, {1217, 1, 14}, {1232, 1, 96},
295 {1329, 22, 38}, {4256, 68, 38}, {4295, 68, 1},
296 {4301, 68, 1}, {5112, 166, 6}, {7680, 1, 150},
297 {7835, 148, 1}, {7838, 112, 1}, {7840, 1, 96},
298 {7944, 166, 8}, {7960, 166, 6}, {7976, 166, 8},
299 {7992, 166, 8}, {8008, 166, 6}, {8025, 167, 8},
300 {8040, 166, 8}, {8072, 166, 8}, {8088, 166, 8},
301 {8104, 166, 8}, {8120, 166, 2}, {8122, 142, 2},
302 {8124, 164, 1}, {8126, 116, 1}, {8136, 140, 4},
303 {8140, 164, 1}, {8152, 166, 2}, {8154, 136, 2},
304 {8168, 166, 2}, {8170, 134, 2}, {8172, 168, 1},
305 {8184, 128, 2}, {8186, 130, 2}, {8188, 164, 1},
306 {8486, 114, 1}, {8490, 108, 1}, {8491, 110, 1},
307 {8498, 12, 1}, {8544, 8, 16}, {8579, 0, 1},
308 {9398, 10, 26}, {11264, 22, 47}, {11360, 0, 1},
309 {11362, 104, 1}, {11363, 118, 1}, {11364, 106, 1},
310 {11367, 1, 6}, {11373, 100, 1}, {11374, 102, 1},
311 {11375, 96, 1}, {11376, 98, 1}, {11378, 0, 1},
312 {11381, 0, 1}, {11390, 94, 2}, {11392, 1, 100},
313 {11499, 1, 4}, {11506, 0, 1}, {42560, 1, 46},
314 {42624, 1, 28}, {42786, 1, 14}, {42802, 1, 62},
315 {42873, 1, 4}, {42877, 92, 1}, {42878, 1, 10},
316 {42891, 0, 1}, {42893, 84, 1}, {42896, 1, 4},
317 {42902, 1, 20}, {42922, 78, 1}, {42923, 74, 1},
318 {42924, 76, 1}, {42925, 80, 1}, {42928, 88, 1},
319 {42929, 82, 1}, {42930, 86, 1}, {42931, 66, 1},
320 {42932, 1, 4}, {43888, 90, 80}, {65313, 14, 26},
 
 
 
321 };
322 static const unsigned short aiOff[] = {
323 1, 2, 8, 15, 16, 26, 28, 32,
324 37, 38, 40, 48, 63, 64, 69, 71,
325 79, 80, 116, 202, 203, 205, 206, 207,
326 209, 210, 211, 213, 214, 217, 218, 219,
327 775, 928, 7264, 10792, 10795, 23217, 23221, 23228,
328 23231, 23254, 23256, 23275, 23278, 26672, 30204, 54721,
329 54753, 54754, 54756, 54787, 54793, 54809, 57153, 57274,
330 57921, 58019, 58363, 61722, 65268, 65341, 65373, 65406,
331 65408, 65410, 65415, 65424, 65436, 65439, 65450, 65462,
332 65472, 65476, 65478, 65480, 65482, 65488, 65506, 65511,
333 65514, 65521, 65527, 65528, 65529,
 
334 };
335
336 int ret = c;
337
338 assert( c>=0 );
339 assert( sizeof(unsigned short)==2 && sizeof(unsigned char)==1 );
340
341 if( c<128 ){
342 if( c>='A' && c<='Z' ) ret = c + ('a' - 'A');
343 }else if( c<65536 ){
 
344 int iHi = sizeof(aEntry)/sizeof(aEntry[0]) - 1;
345 int iLo = 0;
346 int iRes = -1;
347
 
348 while( iHi>=iLo ){
349 int iTest = (iHi + iLo) / 2;
350 int cmp = (c - aEntry[iTest].iCode);
351 if( cmp>=0 ){
352 iRes = iTest;
@@ -353,30 +363,34 @@
353 iLo = iTest+1;
354 }else{
355 iHi = iTest-1;
356 }
357 }
358 assert( iRes<0 || c>=aEntry[iRes].iCode );
359
360 if( iRes>=0 ){
361 const struct TableEntry *p = &aEntry[iRes];
362 if( c<(p->iCode + p->nRange) && 0==(0x01 & p->flags & (p->iCode ^ c)) ){
363 ret = (c + (aiOff[p->flags>>1])) & 0x0000FFFF;
364 assert( ret>0 );
365 }
366 }
367
368 if( bRemoveDiacritic ) ret = unicode_remove_diacritic(ret);
369 }
370
371 else if( c>=66560 && c<66600 ){
372 ret = c + 40;
 
 
 
373 }
374 else if( c>=68736 && c<68787 ){
375 ret = c + 64;
376 }
377 else if( c>=71840 && c<71872 ){
378 ret = c + 32;
 
 
 
379 }
380
381 return ret;
382 }
383
--- src/unicode.c
+++ src/unicode.c
@@ -13,11 +13,11 @@
13 ** [email protected]
14 ** http://www.hwaci.com/drh/
15 **
16 *******************************************************************************
17 **
18 ** This file is copied from ext/fts5/fts5_unicode2.c of SQLite3 with
19 ** minor changes.
20 */
21 #include "config.h"
22 #include "unicode.h"
23
@@ -49,11 +49,11 @@
49 0x00164437, 0x0017CC02, 0x0018001D, 0x00187802, 0x00192C15,
50 0x0019A804, 0x0019C001, 0x001B5001, 0x001B580F, 0x001B9C07,
51 0x001BF402, 0x001C000E, 0x001C3C01, 0x001C4401, 0x001CC01B,
52 0x001E980B, 0x001FAC09, 0x001FD804, 0x00205804, 0x00206C09,
53 0x00209403, 0x0020A405, 0x0020C00F, 0x00216403, 0x00217801,
54 0x00235030, 0x0024E803, 0x0024F812, 0x00254407, 0x00258804,
55 0x0025C001, 0x00260403, 0x0026F001, 0x0026F807, 0x00271C02,
56 0x00272C03, 0x00275C01, 0x00278802, 0x0027C802, 0x0027E802,
57 0x00280403, 0x0028F001, 0x0028F805, 0x00291C02, 0x00292C03,
58 0x00294401, 0x0029C002, 0x0029D401, 0x002A0403, 0x002AF001,
59 0x002AF808, 0x002B1C03, 0x002B2C03, 0x002B8802, 0x002BC002,
@@ -61,86 +61,91 @@
61 0x002D5802, 0x002D8802, 0x002DC001, 0x002E0801, 0x002EF805,
62 0x002F1803, 0x002F2804, 0x002F5C01, 0x002FCC08, 0x00300004,
63 0x0030F807, 0x00311803, 0x00312804, 0x00315402, 0x00318802,
64 0x0031FC01, 0x00320403, 0x0032F001, 0x0032F807, 0x00331803,
65 0x00332804, 0x00335402, 0x00338802, 0x00340403, 0x0034F807,
66 0x00351803, 0x00352804, 0x00353C01, 0x00355C01, 0x00358802,
67 0x0035E401, 0x00360802, 0x00372801, 0x00373C06, 0x00375801,
68 0x00376008, 0x0037C803, 0x0038C401, 0x0038D007, 0x0038FC01,
69 0x00391C09, 0x00396802, 0x003AC401, 0x003AD006, 0x003AEC02,
70 0x003B2006, 0x003C041F, 0x003CD00C, 0x003DC417, 0x003E340B,
71 0x003E6424, 0x003EF80F, 0x003F380D, 0x0040AC14, 0x00412806,
72 0x00415804, 0x00417803, 0x00418803, 0x00419C07, 0x0041C404,
73 0x0042080C, 0x00423C01, 0x00426806, 0x0043EC01, 0x004D740C,
74 0x004E400A, 0x00500001, 0x0059B402, 0x005A0001, 0x005A6C02,
75 0x005BAC03, 0x005C4803, 0x005CC805, 0x005D4802, 0x005DC802,
76 0x005ED023, 0x005F6004, 0x005F7401, 0x0060000F, 0x00621402,
77 0x0062A401, 0x0064800C, 0x0064C00C, 0x00650001, 0x00651002,
78 0x00677822, 0x00685C05, 0x00687802, 0x0069540A, 0x0069801D,
79 0x0069FC01, 0x006A8007, 0x006AA006, 0x006AC00F, 0x006C0005,
80 0x006CD011, 0x006D6823, 0x006E0003, 0x006E840D, 0x006F980E,
81 0x006FF004, 0x00709014, 0x0070EC05, 0x0071F802, 0x00730008,
82 0x00734019, 0x0073B401, 0x0073C803, 0x0073E002, 0x00770036,
83 0x0077EC05, 0x007EF401, 0x007EFC03, 0x007F3403, 0x007F7403,
84 0x007FB403, 0x007FF402, 0x00800065, 0x0081980A, 0x0081E805,
85 0x00822805, 0x0082801F, 0x00834021, 0x00840002, 0x00840C04,
86 0x00842002, 0x00845001, 0x00845803, 0x00847806, 0x00849401,
87 0x00849C01, 0x0084A401, 0x0084B801, 0x0084E802, 0x00850005,
88 0x00852804, 0x00853C01, 0x00862802, 0x0086426F, 0x00900027,
89 0x0091000B, 0x0092704E, 0x00940276, 0x009E53E0, 0x00ADD820,
90 0x00AE6022, 0x00AEF40C, 0x00AF2808, 0x00AFB004, 0x00B39406,
91 0x00B3BC03, 0x00B3E404, 0x00B3F802, 0x00B5C001, 0x00B5FC01,
92 0x00B7804F, 0x00B8C015, 0x00BA001A, 0x00BA6C59, 0x00BC00D6,
93 0x00BFC00C, 0x00C00005, 0x00C02019, 0x00C0A807, 0x00C0D802,
94 0x00C0F403, 0x00C26404, 0x00C28001, 0x00C3EC01, 0x00C64002,
95 0x00C6580A, 0x00C70024, 0x00C8001F, 0x00C8A81E, 0x00C94001,
96 0x00C98020, 0x00CA2827, 0x00CB003F, 0x00CC0100, 0x01370040,
97 0x02924037, 0x0293F802, 0x02983403, 0x0299BC10, 0x029A7802,
98 0x029BC008, 0x029C0017, 0x029C8002, 0x029E2402, 0x02A00801,
99 0x02A01801, 0x02A02C01, 0x02A08C09, 0x02A0D804, 0x02A1D004,
100 0x02A20002, 0x02A2D012, 0x02A33802, 0x02A38012, 0x02A3E003,
101 0x02A3F001, 0x02A4980A, 0x02A51C0D, 0x02A57C01, 0x02A60004,
102 0x02A6CC1B, 0x02A77802, 0x02A79401, 0x02A8A40E, 0x02A90C01,
103 0x02A93002, 0x02A97004, 0x02A9DC03, 0x02A9EC03, 0x02AAC001,
104 0x02AAC803, 0x02AADC02, 0x02AAF802, 0x02AB0401, 0x02AB7802,
105 0x02ABAC07, 0x02ABD402, 0x02AD6C01, 0x02AF8C0B, 0x03600001,
106 0x036DFC02, 0x036FFC02, 0x037FFC01, 0x03EC7801, 0x03ECA401,
107 0x03EEC810, 0x03F4F802, 0x03F7F002, 0x03F8001A, 0x03F88033,
108 0x03F95013, 0x03F9A004, 0x03FBFC01, 0x03FC040F, 0x03FC6807,
109 0x03FCEC06, 0x03FD6C0B, 0x03FF8007, 0x03FFA007, 0x03FFE405,
110 0x04040003, 0x0404DC09, 0x0405E411, 0x04063003, 0x0406400C,
111 0x04068001, 0x0407402E, 0x040B8001, 0x040DD805, 0x040E7C01,
112 0x040F4001, 0x0415BC01, 0x04215C01, 0x0421DC02, 0x04247C01,
113 0x0424FC01, 0x04280403, 0x04281402, 0x04283004, 0x0428E003,
114 0x0428FC01, 0x04294009, 0x0429FC01, 0x042B2001, 0x042B9402,
115 0x042BC007, 0x042CE407, 0x042E6404, 0x04400003, 0x0440E016,
116 0x0441FC04, 0x0442C012, 0x04440003, 0x04449C0E, 0x04450004,
117 0x0445CC03, 0x04460003, 0x0446CC0E, 0x04471409, 0x04476C01,
118 0x04477403, 0x0448B013, 0x044AA401, 0x044B7C0C, 0x044C0004,
119 0x044CF001, 0x044CF807, 0x044D1C02, 0x044D2C03, 0x044D5C01,
120 0x044D8802, 0x044D9807, 0x044DC005, 0x0450D412, 0x04512C05,
121 0x04516C01, 0x04517401, 0x0452C014, 0x04531801, 0x0456BC07,
122 0x0456E020, 0x04577002, 0x0458C014, 0x0459800D, 0x045AAC0D,
123 0x045C740F, 0x045CF004, 0x0470BC08, 0x0470E008, 0x04710405,
124 0x0471C002, 0x04724816, 0x0472A40E, 0x0491C005, 0x05A9B802,
125 0x05ABC006, 0x05ACC010, 0x05AD1002, 0x05BD442E, 0x05BE3C04,
126 0x06F27008, 0x074000F6, 0x07440027, 0x0744A4C0, 0x07480046,
127 0x074C0057, 0x075B0401, 0x075B6C01, 0x075BEC01, 0x075C5401,
128 0x075CD401, 0x075D3C01, 0x075DBC01, 0x075E2401, 0x075EA401,
129 0x075F0C01, 0x0760028C, 0x076A6C05, 0x076A840F, 0x07800007,
130 0x07802011, 0x07806C07, 0x07808C02, 0x07809805, 0x07A34007,
131 0x07A51007, 0x07A57802, 0x07BBC002, 0x07C0002C, 0x07C0C064,
132 0x07C2800F, 0x07C2C40F, 0x07C3040F, 0x07C34425, 0x07C4401F,
133 0x07C4C03C, 0x07C5C03D, 0x07C7981D, 0x07C8402C, 0x07C90009,
134 0x07C94002, 0x07CC03D3, 0x07DB800D, 0x07DBC007, 0x07DC0074,
135 0x07DE0055, 0x07E0000C, 0x07E04038, 0x07E1400A, 0x07E18028,
136 0x07E2401E, 0x07E4400F, 0x07E48008, 0x07E4C001, 0x07E4CC0C,
137 0x07E5000C, 0x07E5400F, 0x07E60012, 0x07E70001, 0x38000401,
138 0x38008060, 0x380400F0,
139 };
140 static const unsigned int aAscii[4] = {
141 0xFFFFFFFF, 0xFC00FFFF, 0xF8000001, 0xF8000001,
142 };
143
144 if( (unsigned int)c<128 ){
145 return ( (aAscii[c >> 5] & (1 << (c & 0x001F)))==0 );
146 }else if( (unsigned int)c<(1<<22) ){
147 unsigned int key = (((unsigned int)c)<<10) | 0x000003FF;
148 int iRes = 0;
149 int iHi = sizeof(aEntry)/sizeof(aEntry[0]) - 1;
150 int iLo = 0;
151 while( iHi>=iLo ){
@@ -258,95 +263,100 @@
263 static const struct TableEntry {
264 unsigned short iCode;
265 unsigned char flags;
266 unsigned char nRange;
267 } aEntry[] = {
268 {65, 14, 26}, {181, 66, 1}, {192, 14, 23},
269 {216, 14, 7}, {256, 1, 48}, {306, 1, 6},
270 {313, 1, 16}, {330, 1, 46}, {376, 150, 1},
271 {377, 1, 6}, {383, 138, 1}, {385, 52, 1},
272 {386, 1, 4}, {390, 46, 1}, {391, 0, 1},
273 {393, 44, 2}, {395, 0, 1}, {398, 34, 1},
274 {399, 40, 1}, {400, 42, 1}, {401, 0, 1},
275 {403, 44, 1}, {404, 48, 1}, {406, 54, 1},
276 {407, 50, 1}, {408, 0, 1}, {412, 54, 1},
277 {413, 56, 1}, {415, 58, 1}, {416, 1, 6},
278 {422, 62, 1}, {423, 0, 1}, {425, 62, 1},
279 {428, 0, 1}, {430, 62, 1}, {431, 0, 1},
280 {433, 60, 2}, {435, 1, 4}, {439, 64, 1},
281 {440, 0, 1}, {444, 0, 1}, {452, 2, 1},
282 {453, 0, 1}, {455, 2, 1}, {456, 0, 1},
283 {458, 2, 1}, {459, 1, 18}, {478, 1, 18},
284 {497, 2, 1}, {498, 1, 4}, {502, 156, 1},
285 {503, 168, 1}, {504, 1, 40}, {544, 144, 1},
286 {546, 1, 18}, {570, 74, 1}, {571, 0, 1},
287 {573, 142, 1}, {574, 72, 1}, {577, 0, 1},
288 {579, 140, 1}, {580, 30, 1}, {581, 32, 1},
289 {582, 1, 10}, {837, 38, 1}, {880, 1, 4},
290 {886, 0, 1}, {895, 38, 1}, {902, 20, 1},
291 {904, 18, 3}, {908, 28, 1}, {910, 26, 2},
292 {913, 14, 17}, {931, 14, 9}, {962, 0, 1},
293 {975, 4, 1}, {976, 174, 1}, {977, 176, 1},
294 {981, 180, 1}, {982, 178, 1}, {984, 1, 24},
295 {1008, 170, 1}, {1009, 172, 1}, {1012, 164, 1},
296 {1013, 162, 1}, {1015, 0, 1}, {1017, 186, 1},
297 {1018, 0, 1}, {1021, 144, 3}, {1024, 36, 16},
298 {1040, 14, 32}, {1120, 1, 34}, {1162, 1, 54},
299 {1216, 6, 1}, {1217, 1, 14}, {1232, 1, 96},
300 {1329, 24, 38}, {4256, 70, 38}, {4295, 70, 1},
301 {4301, 70, 1}, {5112, 184, 6}, {7296, 122, 1},
302 {7297, 124, 1}, {7298, 126, 1}, {7299, 130, 2},
303 {7301, 128, 1}, {7302, 132, 1}, {7303, 134, 1},
304 {7304, 96, 1}, {7680, 1, 150}, {7835, 166, 1},
305 {7838, 116, 1}, {7840, 1, 96}, {7944, 184, 8},
306 {7960, 184, 6}, {7976, 184, 8}, {7992, 184, 8},
307 {8008, 184, 6}, {8025, 185, 8}, {8040, 184, 8},
308 {8072, 184, 8}, {8088, 184, 8}, {8104, 184, 8},
309 {8120, 184, 2}, {8122, 160, 2}, {8124, 182, 1},
310 {8126, 120, 1}, {8136, 158, 4}, {8140, 182, 1},
311 {8152, 184, 2}, {8154, 154, 2}, {8168, 184, 2},
312 {8170, 152, 2}, {8172, 186, 1}, {8184, 146, 2},
313 {8186, 148, 2}, {8188, 182, 1}, {8486, 118, 1},
314 {8490, 112, 1}, {8491, 114, 1}, {8498, 12, 1},
315 {8544, 8, 16}, {8579, 0, 1}, {9398, 10, 26},
316 {11264, 24, 47}, {11360, 0, 1}, {11362, 108, 1},
317 {11363, 136, 1}, {11364, 110, 1}, {11367, 1, 6},
318 {11373, 104, 1}, {11374, 106, 1}, {11375, 100, 1},
319 {11376, 102, 1}, {11378, 0, 1}, {11381, 0, 1},
320 {11390, 98, 2}, {11392, 1, 100}, {11499, 1, 4},
321 {11506, 0, 1}, {42560, 1, 46}, {42624, 1, 28},
322 {42786, 1, 14}, {42802, 1, 62}, {42873, 1, 4},
323 {42877, 94, 1}, {42878, 1, 10}, {42891, 0, 1},
324 {42893, 86, 1}, {42896, 1, 4}, {42902, 1, 20},
325 {42922, 80, 1}, {42923, 76, 1}, {42924, 78, 1},
326 {42925, 82, 1}, {42926, 80, 1}, {42928, 90, 1},
327 {42929, 84, 1}, {42930, 88, 1}, {42931, 68, 1},
328 {42932, 1, 4}, {43888, 92, 80}, {65313, 14, 26},
329 };
330 static const unsigned short aiOff[] = {
331 1, 2, 8, 15, 16, 26, 28, 32,
332 34, 37, 38, 40, 48, 63, 64, 69,
333 71, 79, 80, 116, 202, 203, 205, 206,
334 207, 209, 210, 211, 213, 214, 217, 218,
335 219, 775, 928, 7264, 10792, 10795, 23217, 23221,
336 23228, 23231, 23254, 23256, 23275, 23278, 26672, 30204,
337 35267, 54721, 54753, 54754, 54756, 54787, 54793, 54809,
338 57153, 57274, 57921, 58019, 58363, 59314, 59315, 59324,
339 59325, 59326, 59332, 59356, 61722, 65268, 65341, 65373,
340 65406, 65408, 65410, 65415, 65424, 65436, 65439, 65450,
341 65462, 65472, 65476, 65478, 65480, 65482, 65488, 65506,
342 65511, 65514, 65521, 65527, 65528, 65529,
343 };
344
345 int ret = c;
346
 
347 assert( sizeof(unsigned short)==2 && sizeof(unsigned char)==1 );
348
349 if( c<128 ){
350 if( c>='A' && c<='Z' ) ret = c + ('a' - 'A');
351 }else if( c<65536 ){
352 const struct TableEntry *p;
353 int iHi = sizeof(aEntry)/sizeof(aEntry[0]) - 1;
354 int iLo = 0;
355 int iRes = -1;
356
357 assert( c>aEntry[0].iCode );
358 while( iHi>=iLo ){
359 int iTest = (iHi + iLo) / 2;
360 int cmp = (c - aEntry[iTest].iCode);
361 if( cmp>=0 ){
362 iRes = iTest;
@@ -353,30 +363,34 @@
363 iLo = iTest+1;
364 }else{
365 iHi = iTest-1;
366 }
367 }
368
369 assert( iRes>=0 && c>=aEntry[iRes].iCode );
370 p = &aEntry[iRes];
371 if( c<(p->iCode + p->nRange) && 0==(0x01 & p->flags & (p->iCode ^ c)) ){
372 ret = (c + (aiOff[p->flags>>1])) & 0x0000FFFF;
373 assert( ret>0 );
 
 
374 }
375
376 if( bRemoveDiacritic ) ret = unicode_remove_diacritic(ret);
377 }
378
379 else if( c>=66560 && c<66600 ){
380 ret = c + 40;
381 }
382 else if( c>=66736 && c<66772 ){
383 ret = c + 40;
384 }
385 else if( c>=68736 && c<68787 ){
386 ret = c + 64;
387 }
388 else if( c>=71840 && c<71872 ){
389 ret = c + 32;
390 }
391 else if( c>=125184 && c<125218 ){
392 ret = c + 34;
393 }
394
395 return ret;
396 }
397
--- www/changes.wiki
+++ www/changes.wiki
@@ -1,8 +1,13 @@
11
<title>Change Log</title>
22
3
-<h2>Changes for Version 1.35 (2016-00-00)</h2>
3
+<h2>Changes for Version 1.36 (2016-00-00)</h2>
4
+
5
+ * Update internal Unicode character tables, used in regular expression
6
+ handling, from version 8.0 to 9.0.
7
+
8
+<h2>Changes for Version 1.35 (2016-06-14)</h2>
49
510
* Enable symlinks by default on all non-Windows platforms.
611
* Enhance the [/md_rules|Markdown formatting] so that hyperlinks that begin
712
with "/" are relative to the root of the Fossil repository.
813
* Rework the [/help?cmd=/setup_ulist|/setup_list page] (the User List page)
914
--- www/changes.wiki
+++ www/changes.wiki
@@ -1,8 +1,13 @@
1 <title>Change Log</title>
2
3 <h2>Changes for Version 1.35 (2016-00-00)</h2>
 
 
 
 
 
4
5 * Enable symlinks by default on all non-Windows platforms.
6 * Enhance the [/md_rules|Markdown formatting] so that hyperlinks that begin
7 with "/" are relative to the root of the Fossil repository.
8 * Rework the [/help?cmd=/setup_ulist|/setup_list page] (the User List page)
9
--- www/changes.wiki
+++ www/changes.wiki
@@ -1,8 +1,13 @@
1 <title>Change Log</title>
2
3 <h2>Changes for Version 1.36 (2016-00-00)</h2>
4
5 * Update internal Unicode character tables, used in regular expression
6 handling, from version 8.0 to 9.0.
7
8 <h2>Changes for Version 1.35 (2016-06-14)</h2>
9
10 * Enable symlinks by default on all non-Windows platforms.
11 * Enhance the [/md_rules|Markdown formatting] so that hyperlinks that begin
12 with "/" are relative to the root of the Fossil repository.
13 * Rework the [/help?cmd=/setup_ulist|/setup_list page] (the User List page)
14

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button