50 OnigEncDefaultCharEncoding = enc;
77 const UChar* start,
const UChar* s,
const UChar* end,
const UChar** prev)
82 if (prev) *prev = (
const UChar* )p;
119 return (q <= end ? q :
NULL);
147 if (len == 1)
return n;
150 if (*q !=
'\0')
break;
154 if (len == 1)
return n;
174 if (len == 1)
return (
int )(p - start);
177 if (*q !=
'\0')
break;
181 if (len == 1)
return (
int )(p - start);
189 '\000',
'\001',
'\002',
'\003',
'\004',
'\005',
'\006',
'\007',
190 '\010',
'\011',
'\012',
'\013',
'\014',
'\015',
'\016',
'\017',
191 '\020',
'\021',
'\022',
'\023',
'\024',
'\025',
'\026',
'\027',
192 '\030',
'\031',
'\032',
'\033',
'\034',
'\035',
'\036',
'\037',
193 '\040',
'\041',
'\042',
'\043',
'\044',
'\045',
'\046',
'\047',
194 '\050',
'\051',
'\052',
'\053',
'\054',
'\055',
'\056',
'\057',
195 '\060',
'\061',
'\062',
'\063',
'\064',
'\065',
'\066',
'\067',
196 '\070',
'\071',
'\072',
'\073',
'\074',
'\075',
'\076',
'\077',
197 '\100',
'\141',
'\142',
'\143',
'\144',
'\145',
'\146',
'\147',
198 '\150',
'\151',
'\152',
'\153',
'\154',
'\155',
'\156',
'\157',
199 '\160',
'\161',
'\162',
'\163',
'\164',
'\165',
'\166',
'\167',
200 '\170',
'\171',
'\172',
'\133',
'\134',
'\135',
'\136',
'\137',
201 '\140',
'\141',
'\142',
'\143',
'\144',
'\145',
'\146',
'\147',
202 '\150',
'\151',
'\152',
'\153',
'\154',
'\155',
'\156',
'\157',
203 '\160',
'\161',
'\162',
'\163',
'\164',
'\165',
'\166',
'\167',
204 '\170',
'\171',
'\172',
'\173',
'\174',
'\175',
'\176',
'\177',
205 '\200',
'\201',
'\202',
'\203',
'\204',
'\205',
'\206',
'\207',
206 '\210',
'\211',
'\212',
'\213',
'\214',
'\215',
'\216',
'\217',
207 '\220',
'\221',
'\222',
'\223',
'\224',
'\225',
'\226',
'\227',
208 '\230',
'\231',
'\232',
'\233',
'\234',
'\235',
'\236',
'\237',
209 '\240',
'\241',
'\242',
'\243',
'\244',
'\245',
'\246',
'\247',
210 '\250',
'\251',
'\252',
'\253',
'\254',
'\255',
'\256',
'\257',
211 '\260',
'\261',
'\262',
'\263',
'\264',
'\265',
'\266',
'\267',
212 '\270',
'\271',
'\272',
'\273',
'\274',
'\275',
'\276',
'\277',
213 '\300',
'\301',
'\302',
'\303',
'\304',
'\305',
'\306',
'\307',
214 '\310',
'\311',
'\312',
'\313',
'\314',
'\315',
'\316',
'\317',
215 '\320',
'\321',
'\322',
'\323',
'\324',
'\325',
'\326',
'\327',
216 '\330',
'\331',
'\332',
'\333',
'\334',
'\335',
'\336',
'\337',
217 '\340',
'\341',
'\342',
'\343',
'\344',
'\345',
'\346',
'\347',
218 '\350',
'\351',
'\352',
'\353',
'\354',
'\355',
'\356',
'\357',
219 '\360',
'\361',
'\362',
'\363',
'\364',
'\365',
'\366',
'\367',
220 '\370',
'\371',
'\372',
'\373',
'\374',
'\375',
'\376',
'\377',
223 #ifdef USE_UPPER_CASE_TABLE
225 '\000',
'\001',
'\002',
'\003',
'\004',
'\005',
'\006',
'\007',
226 '\010',
'\011',
'\012',
'\013',
'\014',
'\015',
'\016',
'\017',
227 '\020',
'\021',
'\022',
'\023',
'\024',
'\025',
'\026',
'\027',
228 '\030',
'\031',
'\032',
'\033',
'\034',
'\035',
'\036',
'\037',
229 '\040',
'\041',
'\042',
'\043',
'\044',
'\045',
'\046',
'\047',
230 '\050',
'\051',
'\052',
'\053',
'\054',
'\055',
'\056',
'\057',
231 '\060',
'\061',
'\062',
'\063',
'\064',
'\065',
'\066',
'\067',
232 '\070',
'\071',
'\072',
'\073',
'\074',
'\075',
'\076',
'\077',
233 '\100',
'\101',
'\102',
'\103',
'\104',
'\105',
'\106',
'\107',
234 '\110',
'\111',
'\112',
'\113',
'\114',
'\115',
'\116',
'\117',
235 '\120',
'\121',
'\122',
'\123',
'\124',
'\125',
'\126',
'\127',
236 '\130',
'\131',
'\132',
'\133',
'\134',
'\135',
'\136',
'\137',
237 '\140',
'\101',
'\102',
'\103',
'\104',
'\105',
'\106',
'\107',
238 '\110',
'\111',
'\112',
'\113',
'\114',
'\115',
'\116',
'\117',
239 '\120',
'\121',
'\122',
'\123',
'\124',
'\125',
'\126',
'\127',
240 '\130',
'\131',
'\132',
'\173',
'\174',
'\175',
'\176',
'\177',
241 '\200',
'\201',
'\202',
'\203',
'\204',
'\205',
'\206',
'\207',
242 '\210',
'\211',
'\212',
'\213',
'\214',
'\215',
'\216',
'\217',
243 '\220',
'\221',
'\222',
'\223',
'\224',
'\225',
'\226',
'\227',
244 '\230',
'\231',
'\232',
'\233',
'\234',
'\235',
'\236',
'\237',
245 '\240',
'\241',
'\242',
'\243',
'\244',
'\245',
'\246',
'\247',
246 '\250',
'\251',
'\252',
'\253',
'\254',
'\255',
'\256',
'\257',
247 '\260',
'\261',
'\262',
'\263',
'\264',
'\265',
'\266',
'\267',
248 '\270',
'\271',
'\272',
'\273',
'\274',
'\275',
'\276',
'\277',
249 '\300',
'\301',
'\302',
'\303',
'\304',
'\305',
'\306',
'\307',
250 '\310',
'\311',
'\312',
'\313',
'\314',
'\315',
'\316',
'\317',
251 '\320',
'\321',
'\322',
'\323',
'\324',
'\325',
'\326',
'\327',
252 '\330',
'\331',
'\332',
'\333',
'\334',
'\335',
'\336',
'\337',
253 '\340',
'\341',
'\342',
'\343',
'\344',
'\345',
'\346',
'\347',
254 '\350',
'\351',
'\352',
'\353',
'\354',
'\355',
'\356',
'\357',
255 '\360',
'\361',
'\362',
'\363',
'\364',
'\365',
'\366',
'\367',
256 '\370',
'\371',
'\372',
'\373',
'\374',
'\375',
'\376',
'\377',
261 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
262 0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008,
263 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
264 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
265 0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,
266 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,
267 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0,
268 0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,
269 0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2,
270 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2,
271 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2,
272 0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0,
273 0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2,
274 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2,
275 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2,
276 0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008,
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,
292 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
296 '\000',
'\001',
'\002',
'\003',
'\004',
'\005',
'\006',
'\007',
297 '\010',
'\011',
'\012',
'\013',
'\014',
'\015',
'\016',
'\017',
298 '\020',
'\021',
'\022',
'\023',
'\024',
'\025',
'\026',
'\027',
299 '\030',
'\031',
'\032',
'\033',
'\034',
'\035',
'\036',
'\037',
300 '\040',
'\041',
'\042',
'\043',
'\044',
'\045',
'\046',
'\047',
301 '\050',
'\051',
'\052',
'\053',
'\054',
'\055',
'\056',
'\057',
302 '\060',
'\061',
'\062',
'\063',
'\064',
'\065',
'\066',
'\067',
303 '\070',
'\071',
'\072',
'\073',
'\074',
'\075',
'\076',
'\077',
304 '\100',
'\141',
'\142',
'\143',
'\144',
'\145',
'\146',
'\147',
305 '\150',
'\151',
'\152',
'\153',
'\154',
'\155',
'\156',
'\157',
306 '\160',
'\161',
'\162',
'\163',
'\164',
'\165',
'\166',
'\167',
307 '\170',
'\171',
'\172',
'\133',
'\134',
'\135',
'\136',
'\137',
308 '\140',
'\141',
'\142',
'\143',
'\144',
'\145',
'\146',
'\147',
309 '\150',
'\151',
'\152',
'\153',
'\154',
'\155',
'\156',
'\157',
310 '\160',
'\161',
'\162',
'\163',
'\164',
'\165',
'\166',
'\167',
311 '\170',
'\171',
'\172',
'\173',
'\174',
'\175',
'\176',
'\177',
312 '\200',
'\201',
'\202',
'\203',
'\204',
'\205',
'\206',
'\207',
313 '\210',
'\211',
'\212',
'\213',
'\214',
'\215',
'\216',
'\217',
314 '\220',
'\221',
'\222',
'\223',
'\224',
'\225',
'\226',
'\227',
315 '\230',
'\231',
'\232',
'\233',
'\234',
'\235',
'\236',
'\237',
316 '\240',
'\241',
'\242',
'\243',
'\244',
'\245',
'\246',
'\247',
317 '\250',
'\251',
'\252',
'\253',
'\254',
'\255',
'\256',
'\257',
318 '\260',
'\261',
'\262',
'\263',
'\264',
'\265',
'\266',
'\267',
319 '\270',
'\271',
'\272',
'\273',
'\274',
'\275',
'\276',
'\277',
320 '\340',
'\341',
'\342',
'\343',
'\344',
'\345',
'\346',
'\347',
321 '\350',
'\351',
'\352',
'\353',
'\354',
'\355',
'\356',
'\357',
322 '\360',
'\361',
'\362',
'\363',
'\364',
'\365',
'\366',
'\327',
323 '\370',
'\371',
'\372',
'\373',
'\374',
'\375',
'\376',
'\337',
324 '\340',
'\341',
'\342',
'\343',
'\344',
'\345',
'\346',
'\347',
325 '\350',
'\351',
'\352',
'\353',
'\354',
'\355',
'\356',
'\357',
326 '\360',
'\361',
'\362',
'\363',
'\364',
'\365',
'\366',
'\367',
327 '\370',
'\371',
'\372',
'\373',
'\374',
'\375',
'\376',
'\377'
330 #ifdef USE_UPPER_CASE_TABLE
332 '\000',
'\001',
'\002',
'\003',
'\004',
'\005',
'\006',
'\007',
333 '\010',
'\011',
'\012',
'\013',
'\014',
'\015',
'\016',
'\017',
334 '\020',
'\021',
'\022',
'\023',
'\024',
'\025',
'\026',
'\027',
335 '\030',
'\031',
'\032',
'\033',
'\034',
'\035',
'\036',
'\037',
336 '\040',
'\041',
'\042',
'\043',
'\044',
'\045',
'\046',
'\047',
337 '\050',
'\051',
'\052',
'\053',
'\054',
'\055',
'\056',
'\057',
338 '\060',
'\061',
'\062',
'\063',
'\064',
'\065',
'\066',
'\067',
339 '\070',
'\071',
'\072',
'\073',
'\074',
'\075',
'\076',
'\077',
340 '\100',
'\101',
'\102',
'\103',
'\104',
'\105',
'\106',
'\107',
341 '\110',
'\111',
'\112',
'\113',
'\114',
'\115',
'\116',
'\117',
342 '\120',
'\121',
'\122',
'\123',
'\124',
'\125',
'\126',
'\127',
343 '\130',
'\131',
'\132',
'\133',
'\134',
'\135',
'\136',
'\137',
344 '\140',
'\101',
'\102',
'\103',
'\104',
'\105',
'\106',
'\107',
345 '\110',
'\111',
'\112',
'\113',
'\114',
'\115',
'\116',
'\117',
346 '\120',
'\121',
'\122',
'\123',
'\124',
'\125',
'\126',
'\127',
347 '\130',
'\131',
'\132',
'\173',
'\174',
'\175',
'\176',
'\177',
348 '\200',
'\201',
'\202',
'\203',
'\204',
'\205',
'\206',
'\207',
349 '\210',
'\211',
'\212',
'\213',
'\214',
'\215',
'\216',
'\217',
350 '\220',
'\221',
'\222',
'\223',
'\224',
'\225',
'\226',
'\227',
351 '\230',
'\231',
'\232',
'\233',
'\234',
'\235',
'\236',
'\237',
352 '\240',
'\241',
'\242',
'\243',
'\244',
'\245',
'\246',
'\247',
353 '\250',
'\251',
'\252',
'\253',
'\254',
'\255',
'\256',
'\257',
354 '\260',
'\261',
'\262',
'\263',
'\264',
'\265',
'\266',
'\267',
355 '\270',
'\271',
'\272',
'\273',
'\274',
'\275',
'\276',
'\277',
356 '\300',
'\301',
'\302',
'\303',
'\304',
'\305',
'\306',
'\307',
357 '\310',
'\311',
'\312',
'\313',
'\314',
'\315',
'\316',
'\317',
358 '\320',
'\321',
'\322',
'\323',
'\324',
'\325',
'\326',
'\327',
359 '\330',
'\331',
'\332',
'\333',
'\334',
'\335',
'\336',
'\337',
360 '\300',
'\301',
'\302',
'\303',
'\304',
'\305',
'\306',
'\307',
361 '\310',
'\311',
'\312',
'\313',
'\314',
'\315',
'\316',
'\317',
362 '\320',
'\321',
'\322',
'\323',
'\324',
'\325',
'\326',
'\367',
363 '\330',
'\331',
'\332',
'\333',
'\334',
'\335',
'\336',
'\377',
420 code = OnigAsciiLowerMap[i].
to;
421 r = (*f)(OnigAsciiLowerMap[i].
from, &code, 1,
arg);
422 if (r != 0)
return r;
424 code = OnigAsciiLowerMap[i].
from;
425 r = (*f)(OnigAsciiLowerMap[i].
to, &code, 1,
arg);
426 if (r != 0)
return r;
437 if (0x41 <= *p && *p <= 0x5a) {
443 else if (0x61 <= *p && *p <= 0x7a) {
472 if (r != 0)
return r;
474 for (i = 0; i < map_size; i++) {
476 r = (*f)(map[i].
from, &code, 1,
arg);
477 if (r != 0)
return r;
480 r = (*f)(map[i].
to, &code, 1,
arg);
481 if (r != 0)
return r;
484 if (ess_tsett_flag != 0)
496 if (0x41 <= *p && *p <= 0x5a) {
500 if (*p == 0x53 && ess_tsett_flag != 0 && end > p + 1
501 && (*(p+1) == 0x53 || *(p+1) == 0x73)) {
511 else if (0x61 <= *p && *p <= 0x7a) {
515 if (*p == 0x73 && ess_tsett_flag != 0 && end > p + 1
516 && (*(p+1) == 0x73 || *(p+1) == 0x53)) {
526 else if (*p == 0xdf && ess_tsett_flag != 0) {
552 for (i = 0; i < map_size; i++) {
553 if (*p == map[i].from) {
556 items[0].
code[0] = map[i].
to;
559 else if (*p == map[i].to) {
584 if (*p == 0x0a)
return 1;
592 const UChar*end, UChar* lower,
OnigEncoding enc ARG_UNUSED)
603 const UChar** pp,
const UChar* end ARG_UNUSED)
605 const UChar* p = *pp;
637 *buf = (
UChar )(code & 0xff);
679 len =
enclen(enc, p, end);
681 if (len == 1)
return n;
683 for (i = 1; i < len; i++) {
693 const UChar** pp,
const UChar* end ARG_UNUSED,
697 const UChar *p = *pp;
707 len =
enclen(enc, p, end);
708 for (i = 0; i < len; i++) {
719 const UChar** pp
ARG_UNUSED,
const UChar* end ARG_UNUSED)
721 const UChar* p = *pp;
736 if (code <= 0xff)
return 1;
737 if (code <= 0xffff)
return 2;
744 if ((code & 0xff000000) != 0)
return 4;
745 else if ((code & 0xff0000) != 0)
return 3;
746 else if ((code & 0xff00) != 0)
return 2;
755 if ((code & 0xff00) != 0) {
756 *p++ = (
UChar )((code >> 8) & 0xff);
758 *p++ = (
UChar )(code & 0xff);
764 return (
int )(p -
buf);
772 if ((code & 0xff000000) != 0) {
773 *p++ = (
UChar )((code >> 24) & 0xff);
775 if ((code & 0xff0000) != 0 || p !=
buf) {
776 *p++ = (
UChar )((code >> 16) & 0xff);
778 if ((code & 0xff00) != 0 || p !=
buf) {
779 *p++ = (
UChar )((code >> 8) & 0xff);
781 *p++ = (
UChar )(code & 0xff);
787 return (
int )(p -
buf);
814 for (pbe = (pb = PBS) +
sizeof(PBS)/
sizeof(PBS[0]); pb < pbe; ++pb) {
815 if (len == pb->
len &&
855 const UChar* sascii ,
int n)
860 if (p >= end)
return (
int )(*sascii);
874 const UChar* sascii ,
int n)
879 if (p >= end)
return (
int )(*sascii);
921 #define PROP_INIT_SIZE 16
925 if (*psize <= *pnum) {
928 if (r != 0)
return r;
931 (*plist)[*pnum] = prop;