regenc.c - Oniguruma (regular expression library)\r
**********************************************************************/\r
/*-\r
- * Copyright (c) 2002-2007 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>\r
+ * Copyright (c) 2002-2018 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>\r
* All rights reserved.\r
- * \r
- * (C) Copyright 2015 Hewlett Packard Enterprise Development LP<BR>\r
*\r
* Redistribution and use in source and binary forms, with or without\r
* modification, are permitted provided that the following conditions\r
\r
OnigEncoding OnigEncDefaultCharEncoding = ONIG_ENCODING_INIT_DEFAULT;\r
\r
+#define INITED_LIST_SIZE 20\r
+\r
+static int InitedListNum;\r
+\r
+static struct {\r
+ OnigEncoding enc;\r
+ int inited;\r
+} InitedList[INITED_LIST_SIZE];\r
+\r
+static int\r
+enc_inited_entry(OnigEncoding enc)\r
+{\r
+ int i;\r
+\r
+ for (i = 0; i < InitedListNum; i++) {\r
+ if (InitedList[i].enc == enc) {\r
+ InitedList[i].inited = 1;\r
+ return i;\r
+ }\r
+ }\r
+\r
+ i = InitedListNum;\r
+ if (i < INITED_LIST_SIZE - 1) {\r
+ InitedList[i].enc = enc;\r
+ InitedList[i].inited = 1;\r
+ InitedListNum++;\r
+ return i;\r
+ }\r
+\r
+ return -1;\r
+}\r
+\r
+static int\r
+enc_is_inited(OnigEncoding enc)\r
+{\r
+ int i;\r
+\r
+ for (i = 0; i < InitedListNum; i++) {\r
+ if (InitedList[i].enc == enc) {\r
+ return InitedList[i].inited;\r
+ }\r
+ }\r
+\r
+ return 0;\r
+}\r
+\r
+extern int\r
+onigenc_end(void)\r
+{\r
+ int i;\r
+\r
+ for (i = 0; i < InitedListNum; i++) {\r
+ InitedList[i].enc = 0;\r
+ InitedList[i].inited = 0;\r
+ }\r
+\r
+ InitedListNum = 0;\r
+ return ONIG_NORMAL;\r
+}\r
+\r
extern int\r
onigenc_init(void)\r
{\r
return 0;\r
}\r
\r
+extern int\r
+onig_initialize_encoding(OnigEncoding enc)\r
+{\r
+ int r;\r
+\r
+ if (enc != ONIG_ENCODING_ASCII &&\r
+ ONIGENC_IS_ASCII_COMPATIBLE_ENCODING(enc)) {\r
+ OnigEncoding ascii = ONIG_ENCODING_ASCII;\r
+ if (ascii->init != 0 && enc_is_inited(ascii) == 0) {\r
+ r = ascii->init();\r
+ if (r != ONIG_NORMAL) return r;\r
+ enc_inited_entry(ascii);\r
+ }\r
+ }\r
+\r
+ if (enc->init != 0 &&\r
+ enc_is_inited(enc) == 0) {\r
+ r = (enc->init)();\r
+ if (r == ONIG_NORMAL)\r
+ enc_inited_entry(enc);\r
+ return r;\r
+ }\r
+\r
+ return 0;\r
+}\r
+\r
extern OnigEncoding\r
onigenc_get_default_encoding(void)\r
{\r
return 0;\r
}\r
\r
+extern UChar*\r
+onigenc_strdup(OnigEncoding enc, const UChar* s, const UChar* end)\r
+{\r
+ int slen, term_len, i;\r
+ UChar *r;\r
+\r
+ slen = (int )(end - s);\r
+ term_len = ONIGENC_MBC_MINLEN(enc);\r
+\r
+ r = (UChar* )xmalloc(slen + term_len);\r
+ CHECK_NULL_RETURN(r);\r
+ xmemcpy(r, s, slen);\r
+\r
+ for (i = 0; i < term_len; i++)\r
+ r[slen + i] = (UChar )0;\r
+\r
+ return r;\r
+}\r
+\r
extern UChar*\r
onigenc_get_right_adjust_char_head(OnigEncoding enc, const UChar* start, const UChar* s)\r
{\r
return (UChar* )s;\r
}\r
\r
+#if 0\r
+extern int\r
+onigenc_mbc_enc_len_end(OnigEncoding enc, const UChar* p, const UChar* end)\r
+{\r
+ int len;\r
+ int n;\r
+\r
+ len = ONIGENC_MBC_ENC_LEN(enc, p);\r
+ n = (int )(end - p);\r
+\r
+ return (n < len ? n : len);\r
+}\r
+#endif\r
+\r
extern UChar*\r
onigenc_step(OnigEncoding enc, const UChar* p, const UChar* end, int n)\r
{\r
}\r
\r
const UChar OnigEncAsciiToLowerCaseTable[] = {\r
- 0000, 0001, 0002, 0003, 0004, 0005, 0006, 0007,\r
- 0010, 0011, 0012, 0013, 0014, 0015, 0016, 0017,\r
- 0020, 0021, 0022, 0023, 0024, 0025, 0026, 0027,\r
- 0030, 0031, 0032, 0033, 0034, 0035, 0036, 0037,\r
- 0040, 0041, 0042, 0043, 0044, 0045, 0046, 0047,\r
- 0050, 0051, 0052, 0053, 0054, 0055, 0056, 0057,\r
- 0060, 0061, 0062, 0063, 0064, 0065, 0066, 0067,\r
- 0070, 0071, 0072, 0073, 0074, 0075, 0076, 0077,\r
- 0100, 0141, 0142, 0143, 0144, 0145, 0146, 0147,\r
- 0150, 0151, 0152, 0153, 0154, 0155, 0156, 0157,\r
- 0160, 0161, 0162, 0163, 0164, 0165, 0166, 0167,\r
- 0170, 0171, 0172, 0133, 0134, 0135, 0136, 0137,\r
- 0140, 0141, 0142, 0143, 0144, 0145, 0146, 0147,\r
- 0150, 0151, 0152, 0153, 0154, 0155, 0156, 0157,\r
- 0160, 0161, 0162, 0163, 0164, 0165, 0166, 0167,\r
- 0170, 0171, 0172, 0173, 0174, 0175, 0176, 0177,\r
- 0200, 0201, 0202, 0203, 0204, 0205, 0206, 0207,\r
- 0210, 0211, 0212, 0213, 0214, 0215, 0216, 0217,\r
- 0220, 0221, 0222, 0223, 0224, 0225, 0226, 0227,\r
- 0230, 0231, 0232, 0233, 0234, 0235, 0236, 0237,\r
- 0240, 0241, 0242, 0243, 0244, 0245, 0246, 0247,\r
- 0250, 0251, 0252, 0253, 0254, 0255, 0256, 0257,\r
- 0260, 0261, 0262, 0263, 0264, 0265, 0266, 0267,\r
- 0270, 0271, 0272, 0273, 0274, 0275, 0276, 0277,\r
- 0300, 0301, 0302, 0303, 0304, 0305, 0306, 0307,\r
- 0310, 0311, 0312, 0313, 0314, 0315, 0316, 0317,\r
- 0320, 0321, 0322, 0323, 0324, 0325, 0326, 0327,\r
- 0330, 0331, 0332, 0333, 0334, 0335, 0336, 0337,\r
- 0340, 0341, 0342, 0343, 0344, 0345, 0346, 0347,\r
- 0350, 0351, 0352, 0353, 0354, 0355, 0356, 0357,\r
- 0360, 0361, 0362, 0363, 0364, 0365, 0366, 0367,\r
- 0370, 0371, 0372, 0373, 0374, 0375, 0376, 0377,\r
+ '\000', '\001', '\002', '\003', '\004', '\005', '\006', '\007',\r
+ '\010', '\011', '\012', '\013', '\014', '\015', '\016', '\017',\r
+ '\020', '\021', '\022', '\023', '\024', '\025', '\026', '\027',\r
+ '\030', '\031', '\032', '\033', '\034', '\035', '\036', '\037',\r
+ '\040', '\041', '\042', '\043', '\044', '\045', '\046', '\047',\r
+ '\050', '\051', '\052', '\053', '\054', '\055', '\056', '\057',\r
+ '\060', '\061', '\062', '\063', '\064', '\065', '\066', '\067',\r
+ '\070', '\071', '\072', '\073', '\074', '\075', '\076', '\077',\r
+ '\100', '\141', '\142', '\143', '\144', '\145', '\146', '\147',\r
+ '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157',\r
+ '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167',\r
+ '\170', '\171', '\172', '\133', '\134', '\135', '\136', '\137',\r
+ '\140', '\141', '\142', '\143', '\144', '\145', '\146', '\147',\r
+ '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157',\r
+ '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167',\r
+ '\170', '\171', '\172', '\173', '\174', '\175', '\176', '\177',\r
+ '\200', '\201', '\202', '\203', '\204', '\205', '\206', '\207',\r
+ '\210', '\211', '\212', '\213', '\214', '\215', '\216', '\217',\r
+ '\220', '\221', '\222', '\223', '\224', '\225', '\226', '\227',\r
+ '\230', '\231', '\232', '\233', '\234', '\235', '\236', '\237',\r
+ '\240', '\241', '\242', '\243', '\244', '\245', '\246', '\247',\r
+ '\250', '\251', '\252', '\253', '\254', '\255', '\256', '\257',\r
+ '\260', '\261', '\262', '\263', '\264', '\265', '\266', '\267',\r
+ '\270', '\271', '\272', '\273', '\274', '\275', '\276', '\277',\r
+ '\300', '\301', '\302', '\303', '\304', '\305', '\306', '\307',\r
+ '\310', '\311', '\312', '\313', '\314', '\315', '\316', '\317',\r
+ '\320', '\321', '\322', '\323', '\324', '\325', '\326', '\327',\r
+ '\330', '\331', '\332', '\333', '\334', '\335', '\336', '\337',\r
+ '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347',\r
+ '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357',\r
+ '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\367',\r
+ '\370', '\371', '\372', '\373', '\374', '\375', '\376', '\377',\r
};\r
\r
#ifdef USE_UPPER_CASE_TABLE\r
const UChar OnigEncAsciiToUpperCaseTable[256] = {\r
- 0000, 0001, 0002, 0003, 0004, 0005, 0006, 0007,\r
- 0010, 0011, 0012, 0013, 0014, 0015, 0016, 0017,\r
- 0020, 0021, 0022, 0023, 0024, 0025, 0026, 0027,\r
- 0030, 0031, 0032, 0033, 0034, 0035, 0036, 0037,\r
- 0040, 0041, 0042, 0043, 0044, 0045, 0046, 0047,\r
- 0050, 0051, 0052, 0053, 0054, 0055, 0056, 0057,\r
- 0060, 0061, 0062, 0063, 0064, 0065, 0066, 0067,\r
- 0070, 0071, 0072, 0073, 0074, 0075, 0076, 0077,\r
- 0100, 0101, 0102, 0103, 0104, 0105, 0106, 0107,\r
- 0110, 0111, 0112, 0113, 0114, 0115, 0116, 0117,\r
- 0120, 0121, 0122, 0123, 0124, 0125, 0126, 0127,\r
- 0130, 0131, 0132, 0133, 0134, 0135, 0136, 0137,\r
- 0140, 0101, 0102, 0103, 0104, 0105, 0106, 0107,\r
- 0110, 0111, 0112, 0113, 0114, 0115, 0116, 0117,\r
- 0120, 0121, 0122, 0123, 0124, 0125, 0126, 0127,\r
- 0130, 0131, 0132, 0173, 0174, 0175, 0176, 0177,\r
- 0200, 0201, 0202, 0203, 0204, 0205, 0206, 0207,\r
- 0210, 0211, 0212, 0213, 0214, 0215, 0216, 0217,\r
- 0220, 0221, 0222, 0223, 0224, 0225, 0226, 0227,\r
- 0230, 0231, 0232, 0233, 0234, 0235, 0236, 0237,\r
- 0240, 0241, 0242, 0243, 0244, 0245, 0246, 0247,\r
- 0250, 0251, 0252, 0253, 0254, 0255, 0256, 0257,\r
- 0260, 0261, 0262, 0263, 0264, 0265, 0266, 0267,\r
- 0270, 0271, 0272, 0273, 0274, 0275, 0276, 0277,\r
- 0300, 0301, 0302, 0303, 0304, 0305, 0306, 0307,\r
- 0310, 0311, 0312, 0313, 0314, 0315, 0316, 0317,\r
- 0320, 0321, 0322, 0323, 0324, 0325, 0326, 0327,\r
- 0330, 0331, 0332, 0333, 0334, 0335, 0336, 0337,\r
- 0340, 0341, 0342, 0343, 0344, 0345, 0346, 0347,\r
- 0350, 0351, 0352, 0353, 0354, 0355, 0356, 0357,\r
- 0360, 0361, 0362, 0363, 0364, 0365, 0366, 0367,\r
- 0370, 0371, 0372, 0373, 0374, 0375, 0376, 0377,\r
+ '\000', '\001', '\002', '\003', '\004', '\005', '\006', '\007',\r
+ '\010', '\011', '\012', '\013', '\014', '\015', '\016', '\017',\r
+ '\020', '\021', '\022', '\023', '\024', '\025', '\026', '\027',\r
+ '\030', '\031', '\032', '\033', '\034', '\035', '\036', '\037',\r
+ '\040', '\041', '\042', '\043', '\044', '\045', '\046', '\047',\r
+ '\050', '\051', '\052', '\053', '\054', '\055', '\056', '\057',\r
+ '\060', '\061', '\062', '\063', '\064', '\065', '\066', '\067',\r
+ '\070', '\071', '\072', '\073', '\074', '\075', '\076', '\077',\r
+ '\100', '\101', '\102', '\103', '\104', '\105', '\106', '\107',\r
+ '\110', '\111', '\112', '\113', '\114', '\115', '\116', '\117',\r
+ '\120', '\121', '\122', '\123', '\124', '\125', '\126', '\127',\r
+ '\130', '\131', '\132', '\133', '\134', '\135', '\136', '\137',\r
+ '\140', '\101', '\102', '\103', '\104', '\105', '\106', '\107',\r
+ '\110', '\111', '\112', '\113', '\114', '\115', '\116', '\117',\r
+ '\120', '\121', '\122', '\123', '\124', '\125', '\126', '\127',\r
+ '\130', '\131', '\132', '\173', '\174', '\175', '\176', '\177',\r
+ '\200', '\201', '\202', '\203', '\204', '\205', '\206', '\207',\r
+ '\210', '\211', '\212', '\213', '\214', '\215', '\216', '\217',\r
+ '\220', '\221', '\222', '\223', '\224', '\225', '\226', '\227',\r
+ '\230', '\231', '\232', '\233', '\234', '\235', '\236', '\237',\r
+ '\240', '\241', '\242', '\243', '\244', '\245', '\246', '\247',\r
+ '\250', '\251', '\252', '\253', '\254', '\255', '\256', '\257',\r
+ '\260', '\261', '\262', '\263', '\264', '\265', '\266', '\267',\r
+ '\270', '\271', '\272', '\273', '\274', '\275', '\276', '\277',\r
+ '\300', '\301', '\302', '\303', '\304', '\305', '\306', '\307',\r
+ '\310', '\311', '\312', '\313', '\314', '\315', '\316', '\317',\r
+ '\320', '\321', '\322', '\323', '\324', '\325', '\326', '\327',\r
+ '\330', '\331', '\332', '\333', '\334', '\335', '\336', '\337',\r
+ '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347',\r
+ '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357',\r
+ '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\367',\r
+ '\370', '\371', '\372', '\373', '\374', '\375', '\376', '\377',\r
};\r
#endif\r
\r
};\r
\r
const UChar OnigEncISO_8859_1_ToLowerCaseTable[256] = {\r
- 0000, 0001, 0002, 0003, 0004, 0005, 0006, 0007,\r
- 0010, 0011, 0012, 0013, 0014, 0015, 0016, 0017,\r
- 0020, 0021, 0022, 0023, 0024, 0025, 0026, 0027,\r
- 0030, 0031, 0032, 0033, 0034, 0035, 0036, 0037,\r
- 0040, 0041, 0042, 0043, 0044, 0045, 0046, 0047,\r
- 0050, 0051, 0052, 0053, 0054, 0055, 0056, 0057,\r
- 0060, 0061, 0062, 0063, 0064, 0065, 0066, 0067,\r
- 0070, 0071, 0072, 0073, 0074, 0075, 0076, 0077,\r
- 0100, 0141, 0142, 0143, 0144, 0145, 0146, 0147,\r
- 0150, 0151, 0152, 0153, 0154, 0155, 0156, 0157,\r
- 0160, 0161, 0162, 0163, 0164, 0165, 0166, 0167,\r
- 0170, 0171, 0172, 0133, 0134, 0135, 0136, 0137,\r
- 0140, 0141, 0142, 0143, 0144, 0145, 0146, 0147,\r
- 0150, 0151, 0152, 0153, 0154, 0155, 0156, 0157,\r
- 0160, 0161, 0162, 0163, 0164, 0165, 0166, 0167,\r
- 0170, 0171, 0172, 0173, 0174, 0175, 0176, 0177,\r
- 0200, 0201, 0202, 0203, 0204, 0205, 0206, 0207,\r
- 0210, 0211, 0212, 0213, 0214, 0215, 0216, 0217,\r
- 0220, 0221, 0222, 0223, 0224, 0225, 0226, 0227,\r
- 0230, 0231, 0232, 0233, 0234, 0235, 0236, 0237,\r
- 0240, 0241, 0242, 0243, 0244, 0245, 0246, 0247,\r
- 0250, 0251, 0252, 0253, 0254, 0255, 0256, 0257,\r
- 0260, 0261, 0262, 0263, 0264, 0265, 0266, 0267,\r
- 0270, 0271, 0272, 0273, 0274, 0275, 0276, 0277,\r
- 0340, 0341, 0342, 0343, 0344, 0345, 0346, 0347,\r
- 0350, 0351, 0352, 0353, 0354, 0355, 0356, 0357,\r
- 0360, 0361, 0362, 0363, 0364, 0365, 0366, 0327,\r
- 0370, 0371, 0372, 0373, 0374, 0375, 0376, 0337,\r
- 0340, 0341, 0342, 0343, 0344, 0345, 0346, 0347,\r
- 0350, 0351, 0352, 0353, 0354, 0355, 0356, 0357,\r
- 0360, 0361, 0362, 0363, 0364, 0365, 0366, 0367,\r
- 0370, 0371, 0372, 0373, 0374, 0375, 0376, 0377\r
+ '\000', '\001', '\002', '\003', '\004', '\005', '\006', '\007',\r
+ '\010', '\011', '\012', '\013', '\014', '\015', '\016', '\017',\r
+ '\020', '\021', '\022', '\023', '\024', '\025', '\026', '\027',\r
+ '\030', '\031', '\032', '\033', '\034', '\035', '\036', '\037',\r
+ '\040', '\041', '\042', '\043', '\044', '\045', '\046', '\047',\r
+ '\050', '\051', '\052', '\053', '\054', '\055', '\056', '\057',\r
+ '\060', '\061', '\062', '\063', '\064', '\065', '\066', '\067',\r
+ '\070', '\071', '\072', '\073', '\074', '\075', '\076', '\077',\r
+ '\100', '\141', '\142', '\143', '\144', '\145', '\146', '\147',\r
+ '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157',\r
+ '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167',\r
+ '\170', '\171', '\172', '\133', '\134', '\135', '\136', '\137',\r
+ '\140', '\141', '\142', '\143', '\144', '\145', '\146', '\147',\r
+ '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157',\r
+ '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167',\r
+ '\170', '\171', '\172', '\173', '\174', '\175', '\176', '\177',\r
+ '\200', '\201', '\202', '\203', '\204', '\205', '\206', '\207',\r
+ '\210', '\211', '\212', '\213', '\214', '\215', '\216', '\217',\r
+ '\220', '\221', '\222', '\223', '\224', '\225', '\226', '\227',\r
+ '\230', '\231', '\232', '\233', '\234', '\235', '\236', '\237',\r
+ '\240', '\241', '\242', '\243', '\244', '\245', '\246', '\247',\r
+ '\250', '\251', '\252', '\253', '\254', '\255', '\256', '\257',\r
+ '\260', '\261', '\262', '\263', '\264', '\265', '\266', '\267',\r
+ '\270', '\271', '\272', '\273', '\274', '\275', '\276', '\277',\r
+ '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347',\r
+ '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357',\r
+ '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\327',\r
+ '\370', '\371', '\372', '\373', '\374', '\375', '\376', '\337',\r
+ '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347',\r
+ '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357',\r
+ '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\367',\r
+ '\370', '\371', '\372', '\373', '\374', '\375', '\376', '\377'\r
};\r
\r
#ifdef USE_UPPER_CASE_TABLE\r
const UChar OnigEncISO_8859_1_ToUpperCaseTable[256] = {\r
- 0000, 0001, 0002, 0003, 0004, 0005, 0006, 0007,\r
- 0010, 0011, 0012, 0013, 0014, 0015, 0016, 0017,\r
- 0020, 0021, 0022, 0023, 0024, 0025, 0026, 0027,\r
- 0030, 0031, 0032, 0033, 0034, 0035, 0036, 0037,\r
- 0040, 0041, 0042, 0043, 0044, 0045, 0046, 0047,\r
- 0050, 0051, 0052, 0053, 0054, 0055, 0056, 0057,\r
- 0060, 0061, 0062, 0063, 0064, 0065, 0066, 0067,\r
- 0070, 0071, 0072, 0073, 0074, 0075, 0076, 0077,\r
- 0100, 0101, 0102, 0103, 0104, 0105, 0106, 0107,\r
- 0110, 0111, 0112, 0113, 0114, 0115, 0116, 0117,\r
- 0120, 0121, 0122, 0123, 0124, 0125, 0126, 0127,\r
- 0130, 0131, 0132, 0133, 0134, 0135, 0136, 0137,\r
- 0140, 0101, 0102, 0103, 0104, 0105, 0106, 0107,\r
- 0110, 0111, 0112, 0113, 0114, 0115, 0116, 0117,\r
- 0120, 0121, 0122, 0123, 0124, 0125, 0126, 0127,\r
- 0130, 0131, 0132, 0173, 0174, 0175, 0176, 0177,\r
- 0200, 0201, 0202, 0203, 0204, 0205, 0206, 0207,\r
- 0210, 0211, 0212, 0213, 0214, 0215, 0216, 0217,\r
- 0220, 0221, 0222, 0223, 0224, 0225, 0226, 0227,\r
- 0230, 0231, 0232, 0233, 0234, 0235, 0236, 0237,\r
- 0240, 0241, 0242, 0243, 0244, 0245, 0246, 0247,\r
- 0250, 0251, 0252, 0253, 0254, 0255, 0256, 0257,\r
- 0260, 0261, 0262, 0263, 0264, 0265, 0266, 0267,\r
- 0270, 0271, 0272, 0273, 0274, 0275, 0276, 0277,\r
- 0300, 0301, 0302, 0303, 0304, 0305, 0306, 0307,\r
- 0310, 0311, 0312, 0313, 0314, 0315, 0316, 0317,\r
- 0320, 0321, 0322, 0323, 0324, 0325, 0326, 0327,\r
- 0330, 0331, 0332, 0333, 0334, 0335, 0336, 0337,\r
- 0300, 0301, 0302, 0303, 0304, 0305, 0306, 0307,\r
- 0310, 0311, 0312, 0313, 0314, 0315, 0316, 0317,\r
- 0320, 0321, 0322, 0323, 0324, 0325, 0326, 0367,\r
- 0330, 0331, 0332, 0333, 0334, 0335, 0336, 0377,\r
+ '\000', '\001', '\002', '\003', '\004', '\005', '\006', '\007',\r
+ '\010', '\011', '\012', '\013', '\014', '\015', '\016', '\017',\r
+ '\020', '\021', '\022', '\023', '\024', '\025', '\026', '\027',\r
+ '\030', '\031', '\032', '\033', '\034', '\035', '\036', '\037',\r
+ '\040', '\041', '\042', '\043', '\044', '\045', '\046', '\047',\r
+ '\050', '\051', '\052', '\053', '\054', '\055', '\056', '\057',\r
+ '\060', '\061', '\062', '\063', '\064', '\065', '\066', '\067',\r
+ '\070', '\071', '\072', '\073', '\074', '\075', '\076', '\077',\r
+ '\100', '\101', '\102', '\103', '\104', '\105', '\106', '\107',\r
+ '\110', '\111', '\112', '\113', '\114', '\115', '\116', '\117',\r
+ '\120', '\121', '\122', '\123', '\124', '\125', '\126', '\127',\r
+ '\130', '\131', '\132', '\133', '\134', '\135', '\136', '\137',\r
+ '\140', '\101', '\102', '\103', '\104', '\105', '\106', '\107',\r
+ '\110', '\111', '\112', '\113', '\114', '\115', '\116', '\117',\r
+ '\120', '\121', '\122', '\123', '\124', '\125', '\126', '\127',\r
+ '\130', '\131', '\132', '\173', '\174', '\175', '\176', '\177',\r
+ '\200', '\201', '\202', '\203', '\204', '\205', '\206', '\207',\r
+ '\210', '\211', '\212', '\213', '\214', '\215', '\216', '\217',\r
+ '\220', '\221', '\222', '\223', '\224', '\225', '\226', '\227',\r
+ '\230', '\231', '\232', '\233', '\234', '\235', '\236', '\237',\r
+ '\240', '\241', '\242', '\243', '\244', '\245', '\246', '\247',\r
+ '\250', '\251', '\252', '\253', '\254', '\255', '\256', '\257',\r
+ '\260', '\261', '\262', '\263', '\264', '\265', '\266', '\267',\r
+ '\270', '\271', '\272', '\273', '\274', '\275', '\276', '\277',\r
+ '\300', '\301', '\302', '\303', '\304', '\305', '\306', '\307',\r
+ '\310', '\311', '\312', '\313', '\314', '\315', '\316', '\317',\r
+ '\320', '\321', '\322', '\323', '\324', '\325', '\326', '\327',\r
+ '\330', '\331', '\332', '\333', '\334', '\335', '\336', '\337',\r
+ '\300', '\301', '\302', '\303', '\304', '\305', '\306', '\307',\r
+ '\310', '\311', '\312', '\313', '\314', '\315', '\316', '\317',\r
+ '\320', '\321', '\322', '\323', '\324', '\325', '\326', '\367',\r
+ '\330', '\331', '\332', '\333', '\334', '\335', '\336', '\377',\r
};\r
#endif\r
\r
return FALSE;\r
}\r
\r
+extern int\r
+onigenc_always_true_is_valid_mbc_string(const UChar* s ARG_UNUSED,\r
+ const UChar* end ARG_UNUSED)\r
+{\r
+ return TRUE;\r
+}\r
+\r
+extern int\r
+onigenc_length_check_is_valid_mbc_string(OnigEncoding enc,\r
+ const UChar* p, const UChar* end)\r
+{\r
+ while (p < end) {\r
+ p += enclen(enc, p);\r
+ }\r
+\r
+ if (p != end)\r
+ return FALSE;\r
+ else\r
+ return TRUE;\r
+}\r
+\r
+extern int\r
+onigenc_is_valid_mbc_string(OnigEncoding enc, const UChar* s, const UChar* end)\r
+{\r
+ return ONIGENC_IS_VALID_MBC_STRING(enc, s, end);\r
+}\r
+\r
extern OnigCodePoint\r
onigenc_mbn_mbc_to_code(OnigEncoding enc, const UChar* p, const UChar* end)\r
{\r
if (enclen(enc, buf) != (p - buf))\r
return ONIGERR_INVALID_CODE_POINT_VALUE;\r
#endif\r
- return (int)(p - buf);\r
+ return (int )(p - buf);\r
}\r
\r
extern int\r
if (enclen(enc, buf) != (p - buf))\r
return ONIGERR_INVALID_CODE_POINT_VALUE;\r
#endif\r
- return (int)(p - buf);\r
+ return (int )(p - buf);\r
}\r
\r
extern int\r
return ONIGERR_INVALID_CHAR_PROPERTY_NAME;\r
}\r
\r
+extern int\r
+onigenc_is_mbc_word_ascii(OnigEncoding enc, UChar* s, const UChar* end)\r
+{\r
+ OnigCodePoint code = ONIGENC_MBC_TO_CODE(enc, s, end);\r
+\r
+ if (code > 127) return 0;\r
+\r
+ return ONIGENC_IS_ASCII_CODE_WORD(code);\r
+}\r
+\r
extern int\r
onigenc_mb2_is_code_ctype(OnigEncoding enc, OnigCodePoint code,\r
unsigned int ctype)\r
return 0;\r
}\r
\r
-/* Property management */\r
-static int\r
-resize_property_list(int new_size, const OnigCodePoint*** plist, int* psize)\r
-{\r
- int size;\r
- const OnigCodePoint **list = *plist;\r
-\r
- size = sizeof(OnigCodePoint*) * new_size;\r
- if (IS_NULL(list)) {\r
- list = (const OnigCodePoint** )xmalloc(size);\r
- }\r
- else {\r
- list = (const OnigCodePoint** )xrealloc((void* )list, size, *psize * sizeof(OnigCodePoint*));\r
- }\r
-\r
- if (IS_NULL(list)) return ONIGERR_MEMORY;\r
-\r
- *plist = list;\r
- *psize = new_size;\r
-\r
- return 0;\r
-}\r
-\r
extern int\r
-onigenc_property_list_add_property(UChar* name, const OnigCodePoint* prop,\r
- hash_table_type **table, const OnigCodePoint*** plist, int *pnum,\r
- int *psize)\r
+onig_codes_cmp(OnigCodePoint a[], OnigCodePoint b[], int n)\r
{\r
-#define PROP_INIT_SIZE 16\r
+ int i;\r
\r
- int r;\r
-\r
- if (*psize <= *pnum) {\r
- int new_size = (*psize == 0 ? PROP_INIT_SIZE : *psize * 2);\r
- r = resize_property_list(new_size, plist, psize);\r
- if (r != 0) return r;\r
+ for (i = 0; i < n; i++) {\r
+ if (a[i] != b[i])\r
+ return -1;\r
}\r
\r
- (*plist)[*pnum] = prop;\r
-\r
- if (ONIG_IS_NULL(*table)) {\r
- *table = onig_st_init_strend_table_with_size(PROP_INIT_SIZE);\r
- if (ONIG_IS_NULL(*table)) return ONIGERR_MEMORY;\r
- }\r
-\r
- *pnum = *pnum + 1;\r
- onig_st_insert_strend(*table, name, name + strlen_s((char* )name, MAX_STRING_SIZE),\r
- (hash_data_type )(*pnum + ONIGENC_MAX_STD_CTYPE));\r
return 0;\r
}\r
\r
extern int\r
-onigenc_property_list_init(int (*f)(void))\r
+onig_codes_byte_at(OnigCodePoint codes[], int at)\r
{\r
- int r;\r
-\r
- THREAD_ATOMIC_START;\r
+ int index;\r
+ int b;\r
+ OnigCodePoint code;\r
\r
- r = f();\r
+ index = at / 3;\r
+ b = at % 3;\r
+ code = codes[index];\r
\r
- THREAD_ATOMIC_END;\r
- return r;\r
+ return ((code >> ((2 - b) * 8)) & 0xff);\r
}\r