49 OnigEncDefaultCharEncoding = enc;
81 if (prev) *prev = (
const UChar* )p;
118 return (q <= end ? q :
NULL);
146 if (len == 1)
return n;
149 if (*q !=
'\0')
break;
153 if (len == 1)
return n;
173 if (len == 1)
return (
int )(p - start);
176 if (*q !=
'\0')
break;
180 if (len == 1)
return (
int )(p - start);
188 '\000',
'\001',
'\002',
'\003',
'\004',
'\005',
'\006',
'\007',
189 '\010',
'\011',
'\012',
'\013',
'\014',
'\015',
'\016',
'\017',
190 '\020',
'\021',
'\022',
'\023',
'\024',
'\025',
'\026',
'\027',
191 '\030',
'\031',
'\032',
'\033',
'\034',
'\035',
'\036',
'\037',
192 '\040',
'\041',
'\042',
'\043',
'\044',
'\045',
'\046',
'\047',
193 '\050',
'\051',
'\052',
'\053',
'\054',
'\055',
'\056',
'\057',
194 '\060',
'\061',
'\062',
'\063',
'\064',
'\065',
'\066',
'\067',
195 '\070',
'\071',
'\072',
'\073',
'\074',
'\075',
'\076',
'\077',
196 '\100',
'\141',
'\142',
'\143',
'\144',
'\145',
'\146',
'\147',
197 '\150',
'\151',
'\152',
'\153',
'\154',
'\155',
'\156',
'\157',
198 '\160',
'\161',
'\162',
'\163',
'\164',
'\165',
'\166',
'\167',
199 '\170',
'\171',
'\172',
'\133',
'\134',
'\135',
'\136',
'\137',
200 '\140',
'\141',
'\142',
'\143',
'\144',
'\145',
'\146',
'\147',
201 '\150',
'\151',
'\152',
'\153',
'\154',
'\155',
'\156',
'\157',
202 '\160',
'\161',
'\162',
'\163',
'\164',
'\165',
'\166',
'\167',
203 '\170',
'\171',
'\172',
'\173',
'\174',
'\175',
'\176',
'\177',
204 '\200',
'\201',
'\202',
'\203',
'\204',
'\205',
'\206',
'\207',
205 '\210',
'\211',
'\212',
'\213',
'\214',
'\215',
'\216',
'\217',
206 '\220',
'\221',
'\222',
'\223',
'\224',
'\225',
'\226',
'\227',
207 '\230',
'\231',
'\232',
'\233',
'\234',
'\235',
'\236',
'\237',
208 '\240',
'\241',
'\242',
'\243',
'\244',
'\245',
'\246',
'\247',
209 '\250',
'\251',
'\252',
'\253',
'\254',
'\255',
'\256',
'\257',
210 '\260',
'\261',
'\262',
'\263',
'\264',
'\265',
'\266',
'\267',
211 '\270',
'\271',
'\272',
'\273',
'\274',
'\275',
'\276',
'\277',
212 '\300',
'\301',
'\302',
'\303',
'\304',
'\305',
'\306',
'\307',
213 '\310',
'\311',
'\312',
'\313',
'\314',
'\315',
'\316',
'\317',
214 '\320',
'\321',
'\322',
'\323',
'\324',
'\325',
'\326',
'\327',
215 '\330',
'\331',
'\332',
'\333',
'\334',
'\335',
'\336',
'\337',
216 '\340',
'\341',
'\342',
'\343',
'\344',
'\345',
'\346',
'\347',
217 '\350',
'\351',
'\352',
'\353',
'\354',
'\355',
'\356',
'\357',
218 '\360',
'\361',
'\362',
'\363',
'\364',
'\365',
'\366',
'\367',
219 '\370',
'\371',
'\372',
'\373',
'\374',
'\375',
'\376',
'\377',
222 #ifdef USE_UPPER_CASE_TABLE
224 '\000',
'\001',
'\002',
'\003',
'\004',
'\005',
'\006',
'\007',
225 '\010',
'\011',
'\012',
'\013',
'\014',
'\015',
'\016',
'\017',
226 '\020',
'\021',
'\022',
'\023',
'\024',
'\025',
'\026',
'\027',
227 '\030',
'\031',
'\032',
'\033',
'\034',
'\035',
'\036',
'\037',
228 '\040',
'\041',
'\042',
'\043',
'\044',
'\045',
'\046',
'\047',
229 '\050',
'\051',
'\052',
'\053',
'\054',
'\055',
'\056',
'\057',
230 '\060',
'\061',
'\062',
'\063',
'\064',
'\065',
'\066',
'\067',
231 '\070',
'\071',
'\072',
'\073',
'\074',
'\075',
'\076',
'\077',
232 '\100',
'\101',
'\102',
'\103',
'\104',
'\105',
'\106',
'\107',
233 '\110',
'\111',
'\112',
'\113',
'\114',
'\115',
'\116',
'\117',
234 '\120',
'\121',
'\122',
'\123',
'\124',
'\125',
'\126',
'\127',
235 '\130',
'\131',
'\132',
'\133',
'\134',
'\135',
'\136',
'\137',
236 '\140',
'\101',
'\102',
'\103',
'\104',
'\105',
'\106',
'\107',
237 '\110',
'\111',
'\112',
'\113',
'\114',
'\115',
'\116',
'\117',
238 '\120',
'\121',
'\122',
'\123',
'\124',
'\125',
'\126',
'\127',
239 '\130',
'\131',
'\132',
'\173',
'\174',
'\175',
'\176',
'\177',
240 '\200',
'\201',
'\202',
'\203',
'\204',
'\205',
'\206',
'\207',
241 '\210',
'\211',
'\212',
'\213',
'\214',
'\215',
'\216',
'\217',
242 '\220',
'\221',
'\222',
'\223',
'\224',
'\225',
'\226',
'\227',
243 '\230',
'\231',
'\232',
'\233',
'\234',
'\235',
'\236',
'\237',
244 '\240',
'\241',
'\242',
'\243',
'\244',
'\245',
'\246',
'\247',
245 '\250',
'\251',
'\252',
'\253',
'\254',
'\255',
'\256',
'\257',
246 '\260',
'\261',
'\262',
'\263',
'\264',
'\265',
'\266',
'\267',
247 '\270',
'\271',
'\272',
'\273',
'\274',
'\275',
'\276',
'\277',
248 '\300',
'\301',
'\302',
'\303',
'\304',
'\305',
'\306',
'\307',
249 '\310',
'\311',
'\312',
'\313',
'\314',
'\315',
'\316',
'\317',
250 '\320',
'\321',
'\322',
'\323',
'\324',
'\325',
'\326',
'\327',
251 '\330',
'\331',
'\332',
'\333',
'\334',
'\335',
'\336',
'\337',
252 '\340',
'\341',
'\342',
'\343',
'\344',
'\345',
'\346',
'\347',
253 '\350',
'\351',
'\352',
'\353',
'\354',
'\355',
'\356',
'\357',
254 '\360',
'\361',
'\362',
'\363',
'\364',
'\365',
'\366',
'\367',
255 '\370',
'\371',
'\372',
'\373',
'\374',
'\375',
'\376',
'\377',
260 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
261 0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008,
262 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
263 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
264 0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,
265 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,
266 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0,
267 0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,
268 0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2,
269 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2,
270 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2,
271 0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0,
272 0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2,
273 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2,
274 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2,
275 0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008,
276 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
277 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
278 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
279 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
280 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
281 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
282 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
283 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
284 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
285 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
286 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
287 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
288 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
289 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
290 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
291 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
295 '\000',
'\001',
'\002',
'\003',
'\004',
'\005',
'\006',
'\007',
296 '\010',
'\011',
'\012',
'\013',
'\014',
'\015',
'\016',
'\017',
297 '\020',
'\021',
'\022',
'\023',
'\024',
'\025',
'\026',
'\027',
298 '\030',
'\031',
'\032',
'\033',
'\034',
'\035',
'\036',
'\037',
299 '\040',
'\041',
'\042',
'\043',
'\044',
'\045',
'\046',
'\047',
300 '\050',
'\051',
'\052',
'\053',
'\054',
'\055',
'\056',
'\057',
301 '\060',
'\061',
'\062',
'\063',
'\064',
'\065',
'\066',
'\067',
302 '\070',
'\071',
'\072',
'\073',
'\074',
'\075',
'\076',
'\077',
303 '\100',
'\141',
'\142',
'\143',
'\144',
'\145',
'\146',
'\147',
304 '\150',
'\151',
'\152',
'\153',
'\154',
'\155',
'\156',
'\157',
305 '\160',
'\161',
'\162',
'\163',
'\164',
'\165',
'\166',
'\167',
306 '\170',
'\171',
'\172',
'\133',
'\134',
'\135',
'\136',
'\137',
307 '\140',
'\141',
'\142',
'\143',
'\144',
'\145',
'\146',
'\147',
308 '\150',
'\151',
'\152',
'\153',
'\154',
'\155',
'\156',
'\157',
309 '\160',
'\161',
'\162',
'\163',
'\164',
'\165',
'\166',
'\167',
310 '\170',
'\171',
'\172',
'\173',
'\174',
'\175',
'\176',
'\177',
311 '\200',
'\201',
'\202',
'\203',
'\204',
'\205',
'\206',
'\207',
312 '\210',
'\211',
'\212',
'\213',
'\214',
'\215',
'\216',
'\217',
313 '\220',
'\221',
'\222',
'\223',
'\224',
'\225',
'\226',
'\227',
314 '\230',
'\231',
'\232',
'\233',
'\234',
'\235',
'\236',
'\237',
315 '\240',
'\241',
'\242',
'\243',
'\244',
'\245',
'\246',
'\247',
316 '\250',
'\251',
'\252',
'\253',
'\254',
'\255',
'\256',
'\257',
317 '\260',
'\261',
'\262',
'\263',
'\264',
'\265',
'\266',
'\267',
318 '\270',
'\271',
'\272',
'\273',
'\274',
'\275',
'\276',
'\277',
319 '\340',
'\341',
'\342',
'\343',
'\344',
'\345',
'\346',
'\347',
320 '\350',
'\351',
'\352',
'\353',
'\354',
'\355',
'\356',
'\357',
321 '\360',
'\361',
'\362',
'\363',
'\364',
'\365',
'\366',
'\327',
322 '\370',
'\371',
'\372',
'\373',
'\374',
'\375',
'\376',
'\337',
323 '\340',
'\341',
'\342',
'\343',
'\344',
'\345',
'\346',
'\347',
324 '\350',
'\351',
'\352',
'\353',
'\354',
'\355',
'\356',
'\357',
325 '\360',
'\361',
'\362',
'\363',
'\364',
'\365',
'\366',
'\367',
326 '\370',
'\371',
'\372',
'\373',
'\374',
'\375',
'\376',
'\377'
329 #ifdef USE_UPPER_CASE_TABLE
331 '\000',
'\001',
'\002',
'\003',
'\004',
'\005',
'\006',
'\007',
332 '\010',
'\011',
'\012',
'\013',
'\014',
'\015',
'\016',
'\017',
333 '\020',
'\021',
'\022',
'\023',
'\024',
'\025',
'\026',
'\027',
334 '\030',
'\031',
'\032',
'\033',
'\034',
'\035',
'\036',
'\037',
335 '\040',
'\041',
'\042',
'\043',
'\044',
'\045',
'\046',
'\047',
336 '\050',
'\051',
'\052',
'\053',
'\054',
'\055',
'\056',
'\057',
337 '\060',
'\061',
'\062',
'\063',
'\064',
'\065',
'\066',
'\067',
338 '\070',
'\071',
'\072',
'\073',
'\074',
'\075',
'\076',
'\077',
339 '\100',
'\101',
'\102',
'\103',
'\104',
'\105',
'\106',
'\107',
340 '\110',
'\111',
'\112',
'\113',
'\114',
'\115',
'\116',
'\117',
341 '\120',
'\121',
'\122',
'\123',
'\124',
'\125',
'\126',
'\127',
342 '\130',
'\131',
'\132',
'\133',
'\134',
'\135',
'\136',
'\137',
343 '\140',
'\101',
'\102',
'\103',
'\104',
'\105',
'\106',
'\107',
344 '\110',
'\111',
'\112',
'\113',
'\114',
'\115',
'\116',
'\117',
345 '\120',
'\121',
'\122',
'\123',
'\124',
'\125',
'\126',
'\127',
346 '\130',
'\131',
'\132',
'\173',
'\174',
'\175',
'\176',
'\177',
347 '\200',
'\201',
'\202',
'\203',
'\204',
'\205',
'\206',
'\207',
348 '\210',
'\211',
'\212',
'\213',
'\214',
'\215',
'\216',
'\217',
349 '\220',
'\221',
'\222',
'\223',
'\224',
'\225',
'\226',
'\227',
350 '\230',
'\231',
'\232',
'\233',
'\234',
'\235',
'\236',
'\237',
351 '\240',
'\241',
'\242',
'\243',
'\244',
'\245',
'\246',
'\247',
352 '\250',
'\251',
'\252',
'\253',
'\254',
'\255',
'\256',
'\257',
353 '\260',
'\261',
'\262',
'\263',
'\264',
'\265',
'\266',
'\267',
354 '\270',
'\271',
'\272',
'\273',
'\274',
'\275',
'\276',
'\277',
355 '\300',
'\301',
'\302',
'\303',
'\304',
'\305',
'\306',
'\307',
356 '\310',
'\311',
'\312',
'\313',
'\314',
'\315',
'\316',
'\317',
357 '\320',
'\321',
'\322',
'\323',
'\324',
'\325',
'\326',
'\327',
358 '\330',
'\331',
'\332',
'\333',
'\334',
'\335',
'\336',
'\337',
359 '\300',
'\301',
'\302',
'\303',
'\304',
'\305',
'\306',
'\307',
360 '\310',
'\311',
'\312',
'\313',
'\314',
'\315',
'\316',
'\317',
361 '\320',
'\321',
'\322',
'\323',
'\324',
'\325',
'\326',
'\367',
362 '\330',
'\331',
'\332',
'\333',
'\334',
'\335',
'\336',
'\377',
419 code = OnigAsciiLowerMap[
i].
to;
420 r = (*f)(OnigAsciiLowerMap[
i].
from, &code, 1,
arg);
421 if (r != 0)
return r;
423 code = OnigAsciiLowerMap[
i].
from;
424 r = (*f)(OnigAsciiLowerMap[
i].
to, &code, 1,
arg);
425 if (r != 0)
return r;
436 if (0x41 <= *p && *p <= 0x5a) {
442 else if (0x61 <= *p && *p <= 0x7a) {
471 if (r != 0)
return r;
473 for (i = 0; i < map_size; i++) {
475 r = (*f)(map[
i].
from, &code, 1,
arg);
476 if (r != 0)
return r;
479 r = (*f)(map[
i].
to, &code, 1,
arg);
480 if (r != 0)
return r;
483 if (ess_tsett_flag != 0)
495 if (0x41 <= *p && *p <= 0x5a) {
499 if (*p == 0x53 && ess_tsett_flag != 0 && end > p + 1
500 && (*(p+1) == 0x53 || *(p+1) == 0x73)) {
510 else if (0x61 <= *p && *p <= 0x7a) {
514 if (*p == 0x73 && ess_tsett_flag != 0 && end > p + 1
515 && (*(p+1) == 0x73 || *(p+1) == 0x53)) {
525 else if (*p == 0xdf && ess_tsett_flag != 0) {
551 for (i = 0; i < map_size; i++) {
552 if (*p == map[i].from) {
558 else if (*p == map[i].to) {
583 if (*p == 0x0a)
return 1;
602 const UChar** pp,
const UChar* end ARG_UNUSED)
636 *buf = (
UChar )(code & 0xff);
678 len =
enclen(enc, p, end);
680 if (len == 1)
return n;
682 for (i = 1; i <
len; i++) {
692 const UChar** pp,
const UChar* end ARG_UNUSED,
706 len =
enclen(enc, p, end);
707 for (i = 0; i <
len; i++) {
718 const UChar** pp ARG_UNUSED,
const UChar* end ARG_UNUSED)
735 if (code <= 0xff)
return 1;
736 if (code <= 0xffff)
return 2;
743 if ((code & 0xff000000) != 0)
return 4;
744 else if ((code & 0xff0000) != 0)
return 3;
745 else if ((code & 0xff00) != 0)
return 2;
754 if ((code & 0xff00) != 0) {
755 *p++ = (
UChar )((code >> 8) & 0xff);
757 *p++ = (
UChar )(code & 0xff);
763 return (
int)(p -
buf);
771 if ((code & 0xff000000) != 0) {
772 *p++ = (
UChar )((code >> 24) & 0xff);
774 if ((code & 0xff0000) != 0 || p !=
buf) {
775 *p++ = (
UChar )((code >> 16) & 0xff);
777 if ((code & 0xff00) != 0 || p !=
buf) {
778 *p++ = (
UChar )((code >> 8) & 0xff);
780 *p++ = (
UChar )(code & 0xff);
786 return (
int)(p -
buf);
813 for (pbe = (pb = PBS) +
sizeof(PBS)/
sizeof(PBS[0]); pb < pbe; ++pb) {
814 if (len == pb->
len &&
854 const UChar* sascii ,
int n)
859 if (p >= end)
return (
int )(*sascii);
899 #define PROP_INIT_SIZE 16
903 if (*psize <= *pnum) {
906 if (r != 0)
return r;
909 (*plist)[*pnum] = prop;