--- /dev/null
+/**********************************************************************\r
+ ascii.c - Oniguruma (regular expression library)\r
+**********************************************************************/\r
+/*-\r
+ * Copyright (c) 2002-2018 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>\r
+ * All rights reserved.\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions\r
+ * are met:\r
+ * 1. Redistributions of source code must retain the above copyright\r
+ * notice, this list of conditions and the following disclaimer.\r
+ * 2. Redistributions in binary form must reproduce the above copyright\r
+ * notice, this list of conditions and the following disclaimer in the\r
+ * documentation and/or other materials provided with the distribution.\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND\r
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE\r
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\r
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\r
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\r
+ * SUCH DAMAGE.\r
+ */\r
+\r
+#include "regint.h" /* for USE_CALLOUT */\r
+\r
+static int\r
+init(void)\r
+{\r
+#ifdef USE_CALLOUT\r
+\r
+ int id;\r
+ OnigEncoding enc;\r
+ char* name;\r
+ unsigned int args[4];\r
+ OnigValue opts[4];\r
+\r
+ enc = ONIG_ENCODING_ASCII;\r
+\r
+ name = "FAIL"; BC0_P(name, fail);\r
+ name = "MISMATCH"; BC0_P(name, mismatch);\r
+\r
+ name = "MAX";\r
+ args[0] = ONIG_TYPE_TAG | ONIG_TYPE_LONG;\r
+ args[1] = ONIG_TYPE_CHAR;\r
+ opts[0].c = 'X';\r
+ BC_B_O(name, max, 2, args, 1, opts);\r
+\r
+ name = "ERROR";\r
+ args[0] = ONIG_TYPE_LONG; opts[0].l = ONIG_ABORT;\r
+ BC_P_O(name, error, 1, args, 1, opts);\r
+\r
+ name = "COUNT";\r
+ args[0] = ONIG_TYPE_CHAR; opts[0].c = '>';\r
+ BC_B_O(name, count, 1, args, 1, opts);\r
+\r
+ name = "TOTAL_COUNT";\r
+ args[0] = ONIG_TYPE_CHAR; opts[0].c = '>';\r
+ BC_B_O(name, total_count, 1, args, 1, opts);\r
+\r
+ name = "CMP";\r
+ args[0] = ONIG_TYPE_TAG | ONIG_TYPE_LONG;\r
+ args[1] = ONIG_TYPE_STRING;\r
+ args[2] = ONIG_TYPE_TAG | ONIG_TYPE_LONG;\r
+ BC_P(name, cmp, 3, args);\r
+\r
+#endif /* USE_CALLOUT */\r
+\r
+ return ONIG_NORMAL;\r
+}\r
+\r
+#if 0\r
+static int\r
+is_initialized(void)\r
+{\r
+ /* Don't use this function */\r
+ /* can't answer, because builtin callout entries removed in onig_end() */\r
+ return 0;\r
+}\r
+#endif\r
+\r
+static int\r
+ascii_is_code_ctype(OnigCodePoint code, unsigned int ctype)\r
+{\r
+ if (code < 128)\r
+ return ONIGENC_IS_ASCII_CODE_CTYPE(code, ctype);\r
+ else\r
+ return FALSE;\r
+}\r
+\r
+OnigEncodingType OnigEncodingASCII = {\r
+ onigenc_single_byte_mbc_enc_len,\r
+ "US-ASCII", /* name */\r
+ 1, /* max enc length */\r
+ 1, /* min enc length */\r
+ onigenc_is_mbc_newline_0x0a,\r
+ onigenc_single_byte_mbc_to_code,\r
+ onigenc_single_byte_code_to_mbclen,\r
+ onigenc_single_byte_code_to_mbc,\r
+ onigenc_ascii_mbc_case_fold,\r
+ onigenc_ascii_apply_all_case_fold,\r
+ onigenc_ascii_get_case_fold_codes_by_str,\r
+ onigenc_minimum_property_name_to_ctype,\r
+ ascii_is_code_ctype,\r
+ onigenc_not_support_get_ctype_code_range,\r
+ onigenc_single_byte_left_adjust_char_head,\r
+ onigenc_always_true_is_allowed_reverse_match,\r
+ init,\r
+ 0, /* is_initialized */\r
+ onigenc_always_true_is_valid_mbc_string,\r
+ ENC_FLAG_ASCII_COMPATIBLE,\r
+ 0, 0\r
+};\r