]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regenc.c
MdeModulePkg RegularExpressionDxe: Update Oniguruma to 6.9.0
[mirror_edk2.git] / MdeModulePkg / Universal / RegularExpressionDxe / Oniguruma / regenc.c
index ec052627da6f5ae17872123cfae0379d9fe3d660..90547d359e77e440891667a547aad2412b3c7b70 100644 (file)
@@ -2,10 +2,8 @@
   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
@@ -52,6 +136,25 @@ onigenc_set_default_encoding(OnigEncoding enc)
   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
@@ -99,6 +202,20 @@ onigenc_step_back(OnigEncoding enc, const UChar* start, const UChar* s, int n)
   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
@@ -172,74 +289,74 @@ onigenc_str_bytelen_null(OnigEncoding enc, const UChar* s)
 }\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
@@ -279,74 +396,74 @@ const unsigned short OnigEncAsciiCtypeTable[256] = {
 };\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
@@ -640,6 +757,33 @@ onigenc_always_false_is_allowed_reverse_match(const UChar* s   ARG_UNUSED,
   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
@@ -730,7 +874,7 @@ onigenc_mb2_code_to_mbc(OnigEncoding enc, OnigCodePoint code, UChar *buf)
   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
@@ -753,7 +897,7 @@ onigenc_mb4_code_to_mbc(OnigEncoding enc, OnigCodePoint code, UChar *buf)
   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
@@ -790,6 +934,16 @@ onigenc_minimum_property_name_to_ctype(OnigEncoding enc, UChar* p, UChar* end)
   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
@@ -839,66 +993,29 @@ onigenc_with_ascii_strncmp(OnigEncoding enc, const UChar* p, const UChar* end,
   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