summaryrefslogtreecommitdiff
path: root/src/unicode_fold2_key.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/unicode_fold2_key.c')
-rw-r--r--src/unicode_fold2_key.c203
1 files changed, 203 insertions, 0 deletions
diff --git a/src/unicode_fold2_key.c b/src/unicode_fold2_key.c
new file mode 100644
index 0000000..74e9876
--- /dev/null
+++ b/src/unicode_fold2_key.c
@@ -0,0 +1,203 @@
+/* This file was converted by gperf_fold_key_conv.py
+ from gperf output file. */
+/* ANSI-C code produced by gperf version 3.0.3 */
+/* Command-line: /Library/Developer/CommandLineTools/usr/bin/gperf -n -C -T -c -t -j1 -L ANSI-C -F,-1 -N unicode_fold2_key unicode_fold2_key.gperf */
+/* Computed positions: -k'3,6' */
+
+
+
+/* This gperf source file was generated by make_unicode_fold_data.py */
+#include <string.h>
+#include "regenc.h"
+
+#define TOTAL_KEYWORDS 59
+#define MIN_WORD_LENGTH 6
+#define MAX_WORD_LENGTH 6
+#define MIN_HASH_VALUE 0
+#define MAX_HASH_VALUE 58
+/* maximum key range = 59, duplicates = 0 */
+
+#ifdef __GNUC__
+__inline
+#else
+#ifdef __cplusplus
+inline
+#endif
+#endif
+/*ARGSUSED*/
+static unsigned int
+hash(OnigCodePoint codes[])
+{
+ static const unsigned char asso_values[] =
+ {
+ 58, 57, 56, 55, 54, 53, 52, 16, 50, 59,
+ 15, 59, 25, 59, 59, 59, 59, 59, 59, 3,
+ 59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
+ 59, 59, 49, 48, 47, 46, 45, 44, 43, 42,
+ 59, 59, 59, 59, 59, 59, 59, 59, 59, 21,
+ 59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
+ 59, 59, 59, 59, 59, 59, 2, 59, 59, 59,
+ 59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
+ 59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
+ 59, 59, 59, 59, 59, 59, 40, 20, 39, 38,
+ 37, 14, 5, 36, 20, 7, 25, 34, 29, 32,
+ 16, 59, 31, 59, 59, 2, 1, 59, 25, 15,
+ 59, 14, 59, 59, 28, 59, 2, 59, 59, 59,
+ 11, 59, 59, 59, 59, 59, 59, 59, 59, 59,
+ 59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
+ 59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
+ 59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
+ 59, 59, 24, 59, 22, 59, 59, 11, 59, 59,
+ 59, 59, 59, 7, 59, 0, 59, 59, 16, 59,
+ 1, 59, 59, 16, 59, 59, 59, 15, 59, 59,
+ 59, 6, 59, 59, 59, 59, 0, 59, 59, 59,
+ 59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
+ 59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
+ 59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
+ 59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
+ 59, 59, 59, 59, 59, 59
+ };
+ return asso_values[(unsigned char)onig_codes_byte_at(codes, 5)] + asso_values[(unsigned char)onig_codes_byte_at(codes, 2)];
+}
+
+int
+unicode_fold2_key(OnigCodePoint codes[])
+{
+ static const int wordlist[] =
+ {
+
+ 101,
+
+ 253,
+
+ 76,
+
+ 29,
+
+ 24,
+
+ 239,
+
+ 96,
+
+ 71,
+
+ 92,
+
+ 67,
+
+ 4,
+
+ 62,
+
+ 8,
+
+ 58,
+
+ 234,
+
+ 109,
+
+ 164,
+
+ 88,
+
+ 84,
+
+ 80,
+
+ 214,
+
+ 0,
+
+ 54,
+
+ 261,
+
+ 50,
+
+ 105,
+
+ 121,
+
+ 125,
+
+ 257,
+
+ 42,
+
+ 38,
+
+ 249,
+
+ 46,
+
+ 117,
+
+ 12,
+
+ 113,
+
+ 244,
+
+ 229,
+
+ 224,
+
+ 219,
+
+ 209,
+
+ 16,
+
+ 204,
+
+ 199,
+
+ 194,
+
+ 189,
+
+ 184,
+
+ 179,
+
+ 174,
+
+ 169,
+
+ 20,
+
+ 34,
+
+ 159,
+
+ 154,
+
+ 149,
+
+ 144,
+
+ 139,
+
+ 134,
+
+ 129
+ };
+
+ if (0 == 0)
+ {
+ int key = hash(codes);
+
+ if (key <= MAX_HASH_VALUE)
+ {
+ int index = wordlist[key];
+
+ if (index >= 0 && onig_codes_cmp(codes, OnigUnicodeFolds2 + index, 2) == 0)
+ return index;
+ }
+ }
+ return -1;
+}
+
+