+upd: Oniguruma (intermediate)

This commit is contained in:
METANEOCORTEX\Kotti 2023-09-12 15:37:01 +02:00
parent eb804a35fa
commit 89e065fb8f
19 changed files with 311 additions and 319 deletions

View File

@ -35,6 +35,7 @@ m4/*.m4
/coverage
/coverage.info
/fuzzers
/.vscode
# src/
/src/unicode_fold?_key.gperf

View File

@ -2453,10 +2453,17 @@ cvs history -T
cvs rtag "VERSION_X_X_X" oniguruma
<Homebrew install autotools>
> brew install autoconf
> brew install automake
> brew install libtool
<GNU Autotools: bootstrap>
* write Makefile.am and configure.in.
> libtoolize or glibtoolize
> aclocal
> libtoolize or glibtoolize
> autoheader
> automake --foreign --add-missing
> autoconf
> configure --with-rubydir=... CFLAGS="-O2 -Wall"

View File

@ -1,7 +1,7 @@
#!/usr/bin/python
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# gperf_fold_key_conv.py
# Copyright (c) 2016-2018 K.Kosako
# Copyright (c) 2016-2023 K.Kosako
import sys
import re
@ -52,7 +52,7 @@ def parse_line(s, key_len):
return s
def parse_file(f, key_len):
print "/* This file was converted by gperf_fold_key_conv.py\n from gperf output file. */"
print("/* This file was converted by gperf_fold_key_conv.py\n from gperf output file. */")
while True:
line = f.readline()
@ -60,7 +60,7 @@ def parse_file(f, key_len):
break
s = parse_line(line, key_len)
print s
print(s)
# main

View File

@ -1,7 +1,7 @@
#!/usr/bin/python
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# gperf_unfold_key_conv.py
# Copyright (c) 2016-2018 K.Kosako
# Copyright (c) 2016-2023 K.Kosako
import sys
import re
@ -44,12 +44,12 @@ def parse_line(s):
return s
def parse_file(f):
print "/* This file was converted by gperf_unfold_key_conv.py\n from gperf output file. */"
print("/* This file was converted by gperf_unfold_key_conv.py\n from gperf output file. */")
line = f.readline()
while line:
s = parse_line(line)
print s
print(s)
line = f.readline()

View File

@ -1,7 +1,7 @@
#!/usr/bin/python
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# make_unicode_egcb_data.py
# Copyright (c) 2017-2022 K.Kosako
# Copyright (c) 2017-2023 K.Kosako
import sys
import re
@ -29,10 +29,10 @@ def check_version_info(s):
def print_ranges(ranges):
for (start, end) in ranges:
print "0x%06x, 0x%06x" % (start, end)
print("0x%06x, 0x%06x" % (start, end))
def print_prop_and_index(prop, i):
print "%-35s %3d" % (prop + ',', i)
print("%-35s %3d" % (prop + ',', i))
PropIndex[prop] = i
def dic_find_by_value(dic, v):
@ -52,7 +52,7 @@ def normalize_ranges(in_ranges, sort=False):
r = []
prev = None
for (start, end) in ranges:
if prev >= start - 1:
if prev is not None and prev >= start - 1:
(pstart, pend) = r.pop()
end = max(pend, end)
start = pstart
@ -192,10 +192,11 @@ merge_props(PROPS, props)
PROPS = sorted(PROPS)
print '/* unicode_egcb_data.c: Generated by make_unicode_egcb_data.py. */'
print('/* unicode_egcb_data.c: Generated by make_unicode_egcb_data.py. */')
COPYRIGHT = '''
/*-
* Copyright (c) 2017-2022 K.Kosako
* Copyright (c) 2017-2023 K.Kosako
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -221,13 +222,13 @@ COPYRIGHT = '''
*/
'''.strip()
print COPYRIGHT
print ''
print(COPYRIGHT)
print('')
if VERSION_INFO[0] < 0:
raise RuntimeError("Version is not found")
print "#define GRAPHEME_BREAK_PROPERTY_VERSION %02d%02d%02d" % (VERSION_INFO[0], VERSION_INFO[1], VERSION_INFO[2])
print ''
print("#define GRAPHEME_BREAK_PROPERTY_VERSION %02d%02d%02d" % (VERSION_INFO[0], VERSION_INFO[1], VERSION_INFO[2]))
print('')
ranges = []
for prop in PROPS:
@ -243,16 +244,16 @@ for (start, end, prop) in ranges:
raise ValueError("{2}:{0} - {1} range overlap prev value {3}".format(start, end, prop, prev))
print '/*'
print('/*')
for prop in PROPS:
print "%s" % prop
print '*/'
print ''
print("%s" % prop)
print('*/')
print('')
num_ranges = len(ranges)
print "static int EGCB_RANGE_NUM = %d;" % num_ranges
print("static int EGCB_RANGE_NUM = %d;" % num_ranges)
print 'static EGCB_RANGE_TYPE EGCB_RANGES[] = {'
print('static EGCB_RANGE_TYPE EGCB_RANGES[] = {')
for i, (start, end, prop) in enumerate(ranges):
if i == num_ranges - 1:
comma = ''
@ -260,8 +261,8 @@ for i, (start, end, prop) in enumerate(ranges):
comma = ','
type_name = 'EGCB_' + prop
print " {0x%06x, 0x%06x, %s }%s" % (start, end, type_name, comma)
print(" {0x%06x, 0x%06x, %s }%s" % (start, end, type_name, comma))
print '};'
print('};')
sys.exit(0)

View File

@ -1,7 +1,7 @@
#!/usr/bin/python
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# make_unicode_fold_data.py
# Copyright (c) 2016-2022 K.Kosako
# Copyright (c) 2016-2023 K.Kosako
import sys
import re
@ -30,7 +30,7 @@ LOCALE_UNFOLDS = {}
COPYRIGHT = '''
/*-
* Copyright (c) 2017-2022 K.Kosako
* Copyright (c) 2017-2023 K.Kosako
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -182,12 +182,12 @@ typedef unsigned long OnigCodePoint;
def divide_by_fold_len(d):
l = d.items()
l1 = filter(lambda (k,e):e.fold_len == 1, l)
l2 = filter(lambda (k,e):e.fold_len == 2, l)
l3 = filter(lambda (k,e):e.fold_len == 3, l)
sl1 = sorted(l1, key=lambda (k,e):k)
sl2 = sorted(l2, key=lambda (k,e):k)
sl3 = sorted(l3, key=lambda (k,e):k)
l1 = filter(lambda x:x[1].fold_len == 1, l)
l2 = filter(lambda x:x[1].fold_len == 2, l)
l3 = filter(lambda x:x[1].fold_len == 3, l)
sl1 = sorted(l1, key=lambda x:x[0])
sl2 = sorted(l2, key=lambda x:x[0])
sl3 = sorted(l3, key=lambda x:x[0])
return (sl1, sl2, sl3)
def output_comment(f, s):
@ -198,7 +198,7 @@ def output_data_n1(f, n, fn, c, out_comment):
e.index = c
if out_comment and n > 1 and e.comment is not None:
output_comment(f, e.comment)
print >> f, ''
print('', file=f)
f.write(' ')
f.write("/*%4d*/ " % c)
@ -226,25 +226,25 @@ def output_data_n1(f, n, fn, c, out_comment):
return c
def output_data_n(f, name, n, fn, lfn, out_comment):
print >> f, "OnigCodePoint %s%d[] = {" % (name, n)
print("OnigCodePoint %s%d[] = {" % (name, n), file=f)
c = 0
c = output_data_n1(f, n, fn, c, out_comment)
print >> f, "#define FOLDS%d_NORMAL_END_INDEX %d" % (n, c)
print >> f, " /* ----- LOCALE ----- */"
print("#define FOLDS%d_NORMAL_END_INDEX %d" % (n, c), file=f)
print(" /* ----- LOCALE ----- */", file=f)
c = output_data_n1(f, n, lfn, c, out_comment)
print >> f, "#define FOLDS%d_END_INDEX %d" % (n, c)
print >> f, "};"
print("#define FOLDS%d_END_INDEX %d" % (n, c), file=f)
print("};", file=f)
def output_fold_data(f, name, out_comment):
f1, f2, f3 = divide_by_fold_len(FOLDS)
lf1, lf2, lf3 = divide_by_fold_len(LOCALE_FOLDS)
output_data_n(f, name, 1, f1, lf1, out_comment)
print >> f, ''
print('', file=f)
output_data_n(f, name, 2, f2, lf2, out_comment)
print >> f, ''
print('', file=f)
output_data_n(f, name, 3, f3, lf3, out_comment)
print >> f, ''
print('', file=f)
def output_macros(f, name):
print >> f, "#define FOLDS1_FOLD(i) (%s1 + (i))" % name
@ -264,18 +264,18 @@ def output_macros(f, name):
print >> f, "#define FOLDS3_NEXT_INDEX(i) ((i) + 4 + %s1[(i)+3])" % name
def output_fold_source(f, out_comment):
print >> f, "/* This file was generated by make_unicode_fold_data.py. */"
print >> f, COPYRIGHT
print >> f, "\n"
print >> f, '#include "regenc.h"'
print >> f, ''
print("/* This file was generated by make_unicode_fold_data.py. */", file=f)
print(COPYRIGHT, file=f)
print("\n", file=f)
print('#include "regenc.h"', file=f)
print('', file=f)
if VERSION_INFO[0] < 0:
raise RuntimeError("Version is not found")
print "#define UNICODE_CASEFOLD_VERSION %02d%02d%02d" % (VERSION_INFO[0], VERSION_INFO[1], VERSION_INFO[2])
print ''
print("#define UNICODE_CASEFOLD_VERSION %02d%02d%02d" % (VERSION_INFO[0], VERSION_INFO[1], VERSION_INFO[2]))
print('')
#output_macros(f, DataName)
print >> f, ''
print('', file=f)
#output_typedef(f)
output_fold_data(f, DataName, out_comment)
@ -296,12 +296,12 @@ struct ByUnfoldKey {
f.write(head)
UNFOLDS.update(LOCALE_UNFOLDS)
l = UNFOLDS.items()
sl = sorted(l, key=lambda (k,e):(e.fold_len, e.index))
sl = sorted(l, key=lambda x:(x[1].fold_len, x[1].index))
for k, e in sl:
f.write('"%s", /*0x%04x*/ %4d, %d\n' %
(form3bytes(k), k, e.index, e.fold_len))
print >> f, '%%'
print('%%', file=f)
def output_gperf_fold_key(f, key_len):
head = "%{\n/* This gperf source file was generated by make_unicode_fold_data.py */\n\n" + COPYRIGHT + """\
@ -314,13 +314,13 @@ short int
"""
f.write(head)
l = FOLDS.items()
l = filter(lambda (k,e):e.fold_len == key_len, l)
sl = sorted(l, key=lambda (k,e):e.index)
l = filter(lambda x:x[1].fold_len == key_len, l)
sl = sorted(l, key=lambda x:x[1].index)
for k, e in sl:
skey = ''.join(map(lambda i: form3bytes(i), e.fold))
f.write('"%s", %4d\n' % (skey, e.index))
print >> f, '%%'
print('%%', file=f)
def output_gperf_source():
with open(GPERF_UNFOLD_KEY_FILE, 'w') as f:
@ -334,7 +334,7 @@ def output_gperf_source():
def unfolds_byte_length_check(encode):
l = UNFOLDS.items()
sl = sorted(l, key=lambda (k,e):(e.fold_len, e.index))
sl = sorted(l, key=lambda x:(x[1].fold_len, x[1].index))
for unfold, e in sl:
key_len = enc_len(unfold, encode)
fold_len = sum(map(lambda c: enc_len(c, encode), e.fold))
@ -345,7 +345,7 @@ def unfolds_byte_length_check(encode):
def double_fold_check():
l = UNFOLDS.items()
sl = sorted(l, key=lambda (k,e):(e.fold_len, e.index))
sl = sorted(l, key=lambda x:(x[1].fold_len, x[1].index))
for unfold, e in sl:
for f in e.fold:
#print >> sys.stderr, ("check 0x%06x" % f)
@ -356,9 +356,9 @@ def double_fold_check():
def unfold_is_multi_code_folds_head_check():
l = UNFOLDS.items()
l2 = filter(lambda (k,e):e.fold_len == 2, l)
l3 = filter(lambda (k,e):e.fold_len == 3, l)
sl = sorted(l, key=lambda (k,e):(e.fold_len, e.index))
l2 = filter(lambda x:x[1].fold_len == 2, l)
l3 = filter(lambda x:x[1].fold_len == 3, l)
sl = sorted(l, key=lambda x:(x[1].fold_len, x[1].index))
for unfold, _ in sl:
for k, e in l2:
if e.fold[0] == unfold:
@ -454,7 +454,7 @@ def get_all_folds_expansion_max_num():
one_folds = make_one_folds(l)
fold2_heads = make_foldn_heads(l, 2, one_folds)
fold3_heads = make_foldn_heads(l, 3, one_folds)
sl = sorted(l, key=lambda (k,e):(e.fold_len, e.index))
sl = sorted(l, key=lambda x:(x[1].fold_len, x[1].index))
nmax = 0
max_unfold = None
for unfold, e in sl:

View File

@ -1,7 +1,7 @@
#!/usr/bin/python
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# make_unicode_property_data.py
# Copyright (c) 2016-2022 K.Kosako
# Copyright (c) 2016-2023 K.Kosako
import sys
import re
@ -46,31 +46,31 @@ def fix_block_name(name):
def print_ranges(ranges):
for (start, end) in ranges:
print "0x%06x, 0x%06x" % (start, end)
print("0x%06x, 0x%06x" % (start, end))
print len(ranges)
print(len(ranges))
def print_prop_and_index(prop, i):
print "%-35s %3d" % (prop + ',', i)
print("%-35s %3d" % (prop + ',', i))
PropIndex[prop] = i
PRINT_CACHE = { }
def print_property(prop, data, desc):
print ''
print "/* PROPERTY: '%s': %s */" % (prop, desc)
print('')
print("/* PROPERTY: '%s': %s */" % (prop, desc))
prev_prop = dic_find_by_value(PRINT_CACHE, data)
if prev_prop is not None:
print "#define CR_%s CR_%s" % (prop, prev_prop)
print("#define CR_%s CR_%s" % (prop, prev_prop))
else:
PRINT_CACHE[prop] = data
print "static const OnigCodePoint"
print "CR_%s[] = { %d," % (prop, len(data))
print("static const OnigCodePoint")
print("CR_%s[] = { %d," % (prop, len(data)))
for (start, end) in data:
print "0x%04x, 0x%04x," % (start, end)
print("0x%04x, 0x%04x," % (start, end))
print "}; /* END of CR_%s */" % prop
print("}; /* END of CR_%s */" % prop)
def dic_find_by_value(dic, v):
@ -100,7 +100,7 @@ def normalize_ranges(in_ranges, sort=False):
r = []
prev = None
for (start, end) in ranges:
if prev >= start - 1:
if prev is not None and prev >= start - 1:
(pstart, pend) = r.pop()
end = max(pend, end)
start = pstart
@ -175,14 +175,14 @@ def merge_dic(to_dic, from_dic):
from_keys = from_dic.keys()
common = list(set(to_keys) & set(from_keys))
if len(common) != 0:
print >> sys.stderr, "merge_dic: collision: %s" % sorted(common)
print("merge_dic: collision: %s" % sorted(common), file=sys.stderr)
to_dic.update(from_dic)
def merge_props(to_props, from_props):
common = list(set(to_props) & set(from_props))
if len(common) != 0:
print >> sys.stderr, "merge_props: collision: %s" % sorted(common)
print("merge_props: collision: %s" % sorted(common), file=sys.stderr)
to_props.extend(from_props)
@ -406,7 +406,7 @@ def set_max_prop_name(name):
def entry_prop_name(name, index):
set_max_prop_name(name)
if OUTPUT_LIST_MODE and index >= len(POSIX_LIST):
print >> UPF, "%s" % (name)
print("%s" % (name), file=UPF)
def entry_and_print_prop_and_index(name, index):
entry_prop_name(name, index)
@ -426,7 +426,7 @@ argc = len(argv)
COPYRIGHT = '''
/*-
* Copyright (c) 2016-2022 K.Kosako
* Copyright (c) 2016-2023 K.Kosako
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -462,7 +462,7 @@ for i in range(1, argc):
elif arg == '-gc':
INCLUDE_GRAPHEME_CLUSTER_DATA = True
else:
print >> sys.stderr, "Invalid argument: %s" % arg
print("Invalid argument: %s" % arg, file=sys.stderr)
OUTPUT_LIST_MODE = not(POSIX_ONLY)
@ -519,9 +519,9 @@ PROPS = sorted(PROPS)
s = '''%{
/* Generated by make_unicode_property_data.py. */
'''
print s
print COPYRIGHT
print ''
print(s)
print(COPYRIGHT)
print('')
for prop in POSIX_LIST:
if prop == 'PosixPunct':
@ -531,7 +531,7 @@ for prop in POSIX_LIST:
print_property(prop, DIC[prop], desc)
print ''
print('')
if not(POSIX_ONLY):
for prop in PROPS:
@ -551,18 +551,18 @@ if not(POSIX_ONLY):
print_property(block, DIC[block], 'Block')
print ''
print "static const OnigCodePoint*\nconst CodeRanges[] = {"
print('')
print("static const OnigCodePoint*\nconst CodeRanges[] = {")
for prop in POSIX_LIST:
print " CR_%s," % prop
print(" CR_%s," % prop)
if not(POSIX_ONLY):
for prop in PROPS:
print " CR_%s," % prop
print(" CR_%s," % prop)
for prop in BLOCKS:
print " CR_%s," % prop
print(" CR_%s," % prop)
s = '''};
@ -585,8 +585,8 @@ if OUTPUT_LIST_MODE:
if EMOJI_VERSION_INFO[0] < 0:
raise RuntimeError("Emoji Version is not found")
print >> UPF, "Unicode Properties (Unicode Version: %d.%d.%d, Emoji: %d.%d)" % (VERSION_INFO[0], VERSION_INFO[1], VERSION_INFO[2], EMOJI_VERSION_INFO[0], EMOJI_VERSION_INFO[1])
print >> UPF, ''
print("Unicode Properties (Unicode Version: %d.%d.%d, Emoji: %d.%d)" % (VERSION_INFO[0], VERSION_INFO[1], VERSION_INFO[2], EMOJI_VERSION_INFO[0], EMOJI_VERSION_INFO[1]), file=UPF)
print('', file=UPF)
index = -1
for prop in POSIX_LIST:
@ -598,16 +598,16 @@ if not(POSIX_ONLY):
index += 1
entry_and_print_prop_and_index(prop, index)
NALIASES = map(lambda (k,v):(normalize_prop_name(k), k, v), ALIASES.items())
NALIASES = map(lambda x:(normalize_prop_name(x[0]), x[0], x[1]), ALIASES.items())
NALIASES = sorted(NALIASES)
for (nk, k, v) in NALIASES:
nv = normalize_prop_name(v)
if PropIndex.get(nk, None) is not None:
print >> sys.stderr, "ALIASES: already exists: %s => %s" % (k, v)
print("ALIASES: already exists: %s => %s" % (k, v), file=sys.stderr)
continue
aindex = PropIndex.get(nv, None)
if aindex is None:
#print >> sys.stderr, "ALIASES: value is not exist: %s => %s" % (k, v)
#print("ALIASES: value is not exist: %s => %s" % (k, v), file=sys.stderr)
continue
entry_prop_name(k, aindex)
@ -617,26 +617,26 @@ if not(POSIX_ONLY):
index += 1
entry_and_print_prop_and_index(name, index)
print '%%'
print ''
print('%%')
print('')
if not(POSIX_ONLY):
if VERSION_INFO[0] < 0:
raise RuntimeError("Unicode Version is not found")
if EMOJI_VERSION_INFO[0] < 0:
raise RuntimeError("Emoji Version is not found")
print "#define UNICODE_PROPERTY_VERSION %02d%02d%02d" % (VERSION_INFO[0], VERSION_INFO[1], VERSION_INFO[2])
print "#define UNICODE_EMOJI_VERSION %02d%02d" % (EMOJI_VERSION_INFO[0], EMOJI_VERSION_INFO[1])
print ''
print("#define UNICODE_PROPERTY_VERSION %02d%02d%02d" % (VERSION_INFO[0], VERSION_INFO[1], VERSION_INFO[2]))
print("#define UNICODE_EMOJI_VERSION %02d%02d" % (EMOJI_VERSION_INFO[0], EMOJI_VERSION_INFO[1]))
print('')
print "#define PROPERTY_NAME_MAX_SIZE %d" % (PROPERTY_NAME_MAX_LEN + 10)
print "#define CODE_RANGES_NUM %d" % (index + 1)
print("#define PROPERTY_NAME_MAX_SIZE %d" % (PROPERTY_NAME_MAX_LEN + 10))
print("#define CODE_RANGES_NUM %d" % (index + 1))
index_props = make_reverse_dic(PropIndex)
print ''
print('')
for i in range(index + 1):
for p in index_props[i]:
print "#define PROP_INDEX_%s %d" % (p.upper(), i)
print("#define PROP_INDEX_%s %d" % (p.upper(), i))
if OUTPUT_LIST_MODE:
UPF.close()

View File

@ -548,8 +548,10 @@ typedef struct {
} st_str_end_key;
static int
str_end_cmp(st_str_end_key* x, st_str_end_key* y)
str_end_cmp(st_data_t ax, st_data_t ay)
{
st_str_end_key* x = (st_str_end_key* )ax;
st_str_end_key* y = (st_str_end_key* )ay;
UChar *p, *q;
int c;
@ -569,8 +571,9 @@ str_end_cmp(st_str_end_key* x, st_str_end_key* y)
}
static int
str_end_hash(st_str_end_key* x)
str_end_hash(st_data_t ax)
{
st_str_end_key* x = (st_str_end_key* )ax;
UChar *p;
unsigned val = 0;
@ -635,8 +638,10 @@ typedef struct {
} st_callout_name_key;
static int
callout_name_table_cmp(st_callout_name_key* x, st_callout_name_key* y)
callout_name_table_cmp(st_data_t ax, st_data_t ay)
{
st_callout_name_key* x = (st_callout_name_key* )ax;
st_callout_name_key* y = (st_callout_name_key* )ay;
UChar *p, *q;
int c;
@ -658,8 +663,9 @@ callout_name_table_cmp(st_callout_name_key* x, st_callout_name_key* y)
}
static int
callout_name_table_hash(st_callout_name_key* x)
callout_name_table_hash(st_data_t ax)
{
st_callout_name_key* x = (st_callout_name_key* )ax;
UChar *p;
unsigned int val = 0;

View File

@ -32,18 +32,18 @@ struct st_table_entry {
*
*/
static int numcmp(long, long);
static int numhash(long);
static int numcmp(st_data_t, st_data_t);
static int numhash(st_data_t);
static struct st_hash_type type_numhash = {
numcmp,
numhash,
};
/* extern int strcmp(const char *, const char *); */
static int strhash(const char *);
static int str_cmp(st_data_t, st_data_t);
static int str_hash(st_data_t);
static struct st_hash_type type_strhash = {
strcmp,
strhash,
str_cmp,
str_hash,
};
static void rehash(st_table *);
@ -97,9 +97,7 @@ static const long primes[] = {
0
};
static int
new_size(size)
int size;
static int new_size(int size)
{
int i;
@ -136,10 +134,8 @@ stat_col(void)
}
#endif
st_table*
st_init_table_with_size(type, size)
struct st_hash_type *type;
int size;
extern st_table*
st_init_table_with_size(struct st_hash_type* type, int size)
{
st_table *tbl;
@ -168,42 +164,38 @@ st_init_table_with_size(type, size)
return tbl;
}
st_table*
st_init_table(type)
struct st_hash_type *type;
extern st_table*
st_init_table(struct st_hash_type* type)
{
return st_init_table_with_size(type, 0);
}
st_table*
extern st_table*
st_init_numtable(void)
{
return st_init_table(&type_numhash);
}
st_table*
st_init_numtable_with_size(size)
int size;
extern st_table*
st_init_numtable_with_size(int size)
{
return st_init_table_with_size(&type_numhash, size);
}
st_table*
extern st_table*
st_init_strtable(void)
{
return st_init_table(&type_strhash);
}
st_table*
st_init_strtable_with_size(size)
int size;
extern st_table*
st_init_strtable_with_size(int size)
{
return st_init_table_with_size(&type_strhash, size);
}
void
st_free_table(table)
st_table *table;
extern void
st_free_table(st_table* table)
{
register st_table_entry *ptr, *next;
int i;
@ -241,11 +233,8 @@ st_free_table(table)
}\
} while (0)
int
st_lookup(table, key, value)
st_table *table;
register st_data_t key;
st_data_t *value;
extern int
st_lookup(st_table* table, register st_data_t key, st_data_t* value)
{
unsigned int hash_val, bin_pos;
register st_table_entry *ptr;
@ -279,11 +268,8 @@ do {\
table->num_entries++;\
} while (0)
int
st_insert(table, key, value)
register st_table *table;
register st_data_t key;
st_data_t value;
extern int
st_insert(register st_table* table, register st_data_t key, st_data_t value)
{
unsigned int hash_val, bin_pos;
register st_table_entry *ptr;
@ -301,11 +287,8 @@ st_insert(table, key, value)
}
}
void
st_add_direct(table, key, value)
st_table *table;
st_data_t key;
st_data_t value;
extern void
st_add_direct(st_table* table, st_data_t key, st_data_t value)
{
unsigned int hash_val, bin_pos;
@ -315,8 +298,7 @@ st_add_direct(table, key, value)
}
static void
rehash(table)
register st_table *table;
rehash(register st_table* table)
{
register st_table_entry *ptr, *next, **new_bins;
int i, new_num_bins, old_num_bins;
@ -346,9 +328,8 @@ rehash(table)
table->bins = new_bins;
}
st_table*
st_copy(old_table)
st_table *old_table;
extern st_table*
st_copy(st_table* old_table)
{
st_table *new_table;
st_table_entry *ptr, *entry;
@ -387,11 +368,8 @@ st_copy(old_table)
return new_table;
}
int
st_delete(table, key, value)
register st_table *table;
register st_data_t *key;
st_data_t *value;
extern int
st_delete(register st_table* table, register st_data_t* key, st_data_t* value)
{
unsigned int hash_val;
st_table_entry *tmp;
@ -429,12 +407,8 @@ st_delete(table, key, value)
return 0;
}
int
st_delete_safe(table, key, value, never)
register st_table *table;
register st_data_t *key;
st_data_t *value;
st_data_t never;
extern int
st_delete_safe(register st_table* table, register st_data_t* key, st_data_t* value, st_data_t never)
{
unsigned int hash_val;
register st_table_entry *ptr;
@ -465,18 +439,15 @@ static int
delete_never(st_data_t key __attribute__ ((unused)), st_data_t value,
st_data_t never)
#else
delete_never(key, value, never)
st_data_t key, value, never;
delete_never(st_data_t key, st_data_t value, st_data_t never)
#endif
{
if (value == never) return ST_DELETE;
return ST_CONTINUE;
}
void
st_cleanup_safe(table, never)
st_table *table;
st_data_t never;
extern void
st_cleanup_safe(st_table* table, st_data_t never)
{
int num_entries = table->num_entries;
@ -484,11 +455,10 @@ st_cleanup_safe(table, never)
table->num_entries = num_entries;
}
int
st_foreach(table, func, arg)
st_table *table;
int (*func)();
st_data_t arg;
#pragma warning(push)
#pragma warning(disable : 4028)
extern int
st_foreach(st_table* table, int (*func)(st_data_t, st_data_t, st_data_t), st_data_t arg)
{
st_table_entry *ptr, *last, *tmp;
enum st_retval retval;
@ -533,11 +503,20 @@ st_foreach(table, func, arg)
}
return 0;
}
#pragma warning(pop)
static int
strhash(string)
register const char *string;
str_cmp(st_data_t a1, st_data_t a2)
{
const char* s1 = (const char* )a1;
const char* s2 = (const char* )a2;
return strcmp(s1, s2);
}
static int
str_hash(st_data_t astring)
{
const char* string = (const char* )astring;
register int c;
#ifdef HASH_ELFHASH
@ -574,15 +553,13 @@ strhash(string)
}
static int
numcmp(x, y)
long x, y;
numcmp(st_data_t x, st_data_t y)
{
return x != y;
}
static int
numhash(n)
long n;
numhash(st_data_t n)
{
return n;
}

View File

@ -16,8 +16,8 @@ typedef unsigned long long st_data_t;
typedef struct st_table st_table;
struct st_hash_type {
int (*compare)();
int (*hash)();
int (*compare)(st_data_t, st_data_t);
int (*hash)(st_data_t);
};
struct st_table {

View File

@ -1,6 +1,6 @@
/* unicode_egcb_data.c: Generated by make_unicode_egcb_data.py. */
/*-
* Copyright (c) 2017-2022 K.Kosako
* Copyright (c) 2017-2023 K.Kosako
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@ -9,7 +9,7 @@
/* This gperf source file was generated by make_unicode_fold_data.py */
/*-
* Copyright (c) 2017-2022 K.Kosako
* Copyright (c) 2017-2023 K.Kosako
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@ -9,7 +9,7 @@
/* This gperf source file was generated by make_unicode_fold_data.py */
/*-
* Copyright (c) 2017-2022 K.Kosako
* Copyright (c) 2017-2023 K.Kosako
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@ -9,7 +9,7 @@
/* This gperf source file was generated by make_unicode_fold_data.py */
/*-
* Copyright (c) 2017-2022 K.Kosako
* Copyright (c) 2017-2023 K.Kosako
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@ -1,6 +1,6 @@
/* This file was generated by make_unicode_fold_data.py. */
/*-
* Copyright (c) 2017-2022 K.Kosako
* Copyright (c) 2017-2023 K.Kosako
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@ -34,7 +34,7 @@
/* Generated by make_unicode_property_data.py. */
/*-
* Copyright (c) 2016-2022 K.Kosako
* Copyright (c) 2016-2023 K.Kosako
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -31749,8 +31749,8 @@ unicode_lookup_property_name (register const char *str, register size_t len)
#define PROP_INDEX_ASCII 14
#define PROP_INDEX_ASCIIHEXDIGIT 15
#define PROP_INDEX_AHEX 15
#define PROP_INDEX_ADLM 16
#define PROP_INDEX_ADLAM 16
#define PROP_INDEX_ADLM 16
#define PROP_INDEX_AHOM 17
#define PROP_INDEX_ALPHABETIC 18
#define PROP_INDEX_ANATOLIANHIEROGLYPHS 19
@ -31758,11 +31758,11 @@ unicode_lookup_property_name (register const char *str, register size_t len)
#define PROP_INDEX_ANY 20
#define PROP_INDEX_ARABIC 21
#define PROP_INDEX_ARAB 21
#define PROP_INDEX_ARMN 22
#define PROP_INDEX_ARMENIAN 22
#define PROP_INDEX_ARMN 22
#define PROP_INDEX_ASSIGNED 23
#define PROP_INDEX_AVST 24
#define PROP_INDEX_AVESTAN 24
#define PROP_INDEX_AVST 24
#define PROP_INDEX_BALINESE 25
#define PROP_INDEX_BALI 25
#define PROP_INDEX_BAMUM 26
@ -31771,69 +31771,69 @@ unicode_lookup_property_name (register const char *str, register size_t len)
#define PROP_INDEX_BASS 27
#define PROP_INDEX_BATAK 28
#define PROP_INDEX_BATK 28
#define PROP_INDEX_BENG 29
#define PROP_INDEX_BENGALI 29
#define PROP_INDEX_BHKS 30
#define PROP_INDEX_BENG 29
#define PROP_INDEX_BHAIKSUKI 30
#define PROP_INDEX_BHKS 30
#define PROP_INDEX_BIDICONTROL 31
#define PROP_INDEX_BIDIC 31
#define PROP_INDEX_BOPO 32
#define PROP_INDEX_BOPOMOFO 32
#define PROP_INDEX_BOPO 32
#define PROP_INDEX_BRAHMI 33
#define PROP_INDEX_BRAH 33
#define PROP_INDEX_BRAI 34
#define PROP_INDEX_BRAILLE 34
#define PROP_INDEX_BUGI 35
#define PROP_INDEX_BRAI 34
#define PROP_INDEX_BUGINESE 35
#define PROP_INDEX_BUHD 36
#define PROP_INDEX_BUGI 35
#define PROP_INDEX_BUHID 36
#define PROP_INDEX_BUHD 36
#define PROP_INDEX_C 37
#define PROP_INDEX_OTHER 37
#define PROP_INDEX_CANS 38
#define PROP_INDEX_CANADIANABORIGINAL 38
#define PROP_INDEX_CARI 39
#define PROP_INDEX_CANS 38
#define PROP_INDEX_CARIAN 39
#define PROP_INDEX_CI 40
#define PROP_INDEX_CARI 39
#define PROP_INDEX_CASEIGNORABLE 40
#define PROP_INDEX_CI 40
#define PROP_INDEX_CASED 41
#define PROP_INDEX_AGHB 42
#define PROP_INDEX_CAUCASIANALBANIAN 42
#define PROP_INDEX_CONTROL 43
#define PROP_INDEX_AGHB 42
#define PROP_INDEX_CC 43
#define PROP_INDEX_CONTROL 43
#define PROP_INDEX_CF 44
#define PROP_INDEX_FORMAT 44
#define PROP_INDEX_CHAKMA 45
#define PROP_INDEX_CAKM 45
#define PROP_INDEX_CHAM 46
#define PROP_INDEX_CWCF 47
#define PROP_INDEX_CHANGESWHENCASEFOLDED 47
#define PROP_INDEX_CWCM 48
#define PROP_INDEX_CWCF 47
#define PROP_INDEX_CHANGESWHENCASEMAPPED 48
#define PROP_INDEX_CWL 49
#define PROP_INDEX_CWCM 48
#define PROP_INDEX_CHANGESWHENLOWERCASED 49
#define PROP_INDEX_CWT 50
#define PROP_INDEX_CWL 49
#define PROP_INDEX_CHANGESWHENTITLECASED 50
#define PROP_INDEX_CWU 51
#define PROP_INDEX_CWT 50
#define PROP_INDEX_CHANGESWHENUPPERCASED 51
#define PROP_INDEX_CHER 52
#define PROP_INDEX_CWU 51
#define PROP_INDEX_CHEROKEE 52
#define PROP_INDEX_CHRS 53
#define PROP_INDEX_CHER 52
#define PROP_INDEX_CHORASMIAN 53
#define PROP_INDEX_CHRS 53
#define PROP_INDEX_CN 54
#define PROP_INDEX_UNASSIGNED 54
#define PROP_INDEX_PRIVATEUSE 55
#define PROP_INDEX_CO 55
#define PROP_INDEX_ZYYY 56
#define PROP_INDEX_PRIVATEUSE 55
#define PROP_INDEX_COMMON 56
#define PROP_INDEX_COPT 57
#define PROP_INDEX_ZYYY 56
#define PROP_INDEX_COPTIC 57
#define PROP_INDEX_COPT 57
#define PROP_INDEX_QAAC 57
#define PROP_INDEX_CS 58
#define PROP_INDEX_SURROGATE 58
#define PROP_INDEX_XSUX 59
#define PROP_INDEX_CUNEIFORM 59
#define PROP_INDEX_CPRT 60
#define PROP_INDEX_XSUX 59
#define PROP_INDEX_CYPRIOT 60
#define PROP_INDEX_CPRT 60
#define PROP_INDEX_CYPROMINOAN 61
#define PROP_INDEX_CPMN 61
#define PROP_INDEX_CYRILLIC 62
@ -31841,53 +31841,53 @@ unicode_lookup_property_name (register const char *str, register size_t len)
#define PROP_INDEX_DASH 63
#define PROP_INDEX_DEFAULTIGNORABLECODEPOINT 64
#define PROP_INDEX_DI 64
#define PROP_INDEX_DEP 65
#define PROP_INDEX_DEPRECATED 65
#define PROP_INDEX_DSRT 66
#define PROP_INDEX_DEP 65
#define PROP_INDEX_DESERET 66
#define PROP_INDEX_DEVA 67
#define PROP_INDEX_DSRT 66
#define PROP_INDEX_DEVANAGARI 67
#define PROP_INDEX_DEVA 67
#define PROP_INDEX_DIACRITIC 68
#define PROP_INDEX_DIA 68
#define PROP_INDEX_DIAK 69
#define PROP_INDEX_DIVESAKURU 69
#define PROP_INDEX_DOGR 70
#define PROP_INDEX_DIAK 69
#define PROP_INDEX_DOGRA 70
#define PROP_INDEX_DUPL 71
#define PROP_INDEX_DOGR 70
#define PROP_INDEX_DUPLOYAN 71
#define PROP_INDEX_DUPL 71
#define PROP_INDEX_EGYPTIANHIEROGLYPHS 72
#define PROP_INDEX_EGYP 72
#define PROP_INDEX_ELBA 73
#define PROP_INDEX_ELBASAN 73
#define PROP_INDEX_ELYM 74
#define PROP_INDEX_ELBA 73
#define PROP_INDEX_ELYMAIC 74
#define PROP_INDEX_ELYM 74
#define PROP_INDEX_EMOJI 75
#define PROP_INDEX_EMOJICOMPONENT 76
#define PROP_INDEX_ECOMP 76
#define PROP_INDEX_EMOD 77
#define PROP_INDEX_EMOJIMODIFIER 77
#define PROP_INDEX_EMOD 77
#define PROP_INDEX_EMOJIMODIFIERBASE 78
#define PROP_INDEX_EBASE 78
#define PROP_INDEX_EMOJIPRESENTATION 79
#define PROP_INDEX_EPRES 79
#define PROP_INDEX_ETHIOPIC 80
#define PROP_INDEX_ETHI 80
#define PROP_INDEX_EXTPICT 81
#define PROP_INDEX_EXTENDEDPICTOGRAPHIC 81
#define PROP_INDEX_EXT 82
#define PROP_INDEX_EXTPICT 81
#define PROP_INDEX_EXTENDER 82
#define PROP_INDEX_EXT 82
#define PROP_INDEX_GEORGIAN 83
#define PROP_INDEX_GEOR 83
#define PROP_INDEX_GLAG 84
#define PROP_INDEX_GLAGOLITIC 84
#define PROP_INDEX_GOTH 85
#define PROP_INDEX_GLAG 84
#define PROP_INDEX_GOTHIC 85
#define PROP_INDEX_GRAN 86
#define PROP_INDEX_GOTH 85
#define PROP_INDEX_GRANTHA 86
#define PROP_INDEX_GRBASE 87
#define PROP_INDEX_GRAN 86
#define PROP_INDEX_GRAPHEMEBASE 87
#define PROP_INDEX_GREXT 88
#define PROP_INDEX_GRBASE 87
#define PROP_INDEX_GRAPHEMEEXTEND 88
#define PROP_INDEX_GREXT 88
#define PROP_INDEX_GRAPHEMELINK 89
#define PROP_INDEX_GRLINK 89
#define PROP_INDEX_GREEK 90
@ -31896,52 +31896,52 @@ unicode_lookup_property_name (register const char *str, register size_t len)
#define PROP_INDEX_GUJR 91
#define PROP_INDEX_GUNJALAGONDI 92
#define PROP_INDEX_GONG 92
#define PROP_INDEX_GURU 93
#define PROP_INDEX_GURMUKHI 93
#define PROP_INDEX_HANI 94
#define PROP_INDEX_GURU 93
#define PROP_INDEX_HAN 94
#define PROP_INDEX_HANG 95
#define PROP_INDEX_HANI 94
#define PROP_INDEX_HANGUL 95
#define PROP_INDEX_HANG 95
#define PROP_INDEX_HANIFIROHINGYA 96
#define PROP_INDEX_ROHG 96
#define PROP_INDEX_HANUNOO 97
#define PROP_INDEX_HANO 97
#define PROP_INDEX_HATR 98
#define PROP_INDEX_HATRAN 98
#define PROP_INDEX_HATR 98
#define PROP_INDEX_HEBREW 99
#define PROP_INDEX_HEBR 99
#define PROP_INDEX_HEX 100
#define PROP_INDEX_HEXDIGIT 100
#define PROP_INDEX_HEX 100
#define PROP_INDEX_HIRAGANA 101
#define PROP_INDEX_HIRA 101
#define PROP_INDEX_HYPHEN 102
#define PROP_INDEX_IDSB 103
#define PROP_INDEX_IDSBINARYOPERATOR 103
#define PROP_INDEX_IDST 104
#define PROP_INDEX_IDSB 103
#define PROP_INDEX_IDSTRINARYOPERATOR 104
#define PROP_INDEX_IDST 104
#define PROP_INDEX_IDCONTINUE 105
#define PROP_INDEX_IDC 105
#define PROP_INDEX_IDS 106
#define PROP_INDEX_IDSTART 106
#define PROP_INDEX_IDEO 107
#define PROP_INDEX_IDS 106
#define PROP_INDEX_IDEOGRAPHIC 107
#define PROP_INDEX_ARMI 108
#define PROP_INDEX_IDEO 107
#define PROP_INDEX_IMPERIALARAMAIC 108
#define PROP_INDEX_ZINH 109
#define PROP_INDEX_ARMI 108
#define PROP_INDEX_INHERITED 109
#define PROP_INDEX_QAAI 109
#define PROP_INDEX_PHLI 110
#define PROP_INDEX_ZINH 109
#define PROP_INDEX_INSCRIPTIONALPAHLAVI 110
#define PROP_INDEX_PHLI 110
#define PROP_INDEX_INSCRIPTIONALPARTHIAN 111
#define PROP_INDEX_PRTI 111
#define PROP_INDEX_JAVANESE 112
#define PROP_INDEX_JAVA 112
#define PROP_INDEX_JOINC 113
#define PROP_INDEX_JOINCONTROL 113
#define PROP_INDEX_JOINC 113
#define PROP_INDEX_KAITHI 114
#define PROP_INDEX_KTHI 114
#define PROP_INDEX_KNDA 115
#define PROP_INDEX_KANNADA 115
#define PROP_INDEX_KNDA 115
#define PROP_INDEX_KATAKANA 116
#define PROP_INDEX_KANA 116
#define PROP_INDEX_KAWI 117
@ -31949,12 +31949,12 @@ unicode_lookup_property_name (register const char *str, register size_t len)
#define PROP_INDEX_KALI 118
#define PROP_INDEX_KHAROSHTHI 119
#define PROP_INDEX_KHAR 119
#define PROP_INDEX_KITS 120
#define PROP_INDEX_KHITANSMALLSCRIPT 120
#define PROP_INDEX_KHMR 121
#define PROP_INDEX_KITS 120
#define PROP_INDEX_KHMER 121
#define PROP_INDEX_KHOJ 122
#define PROP_INDEX_KHMR 121
#define PROP_INDEX_KHOJKI 122
#define PROP_INDEX_KHOJ 122
#define PROP_INDEX_KHUDAWADI 123
#define PROP_INDEX_SIND 123
#define PROP_INDEX_L 124
@ -31963,19 +31963,19 @@ unicode_lookup_property_name (register const char *str, register size_t len)
#define PROP_INDEX_CASEDLETTER 125
#define PROP_INDEX_LAO 126
#define PROP_INDEX_LAOO 126
#define PROP_INDEX_LATN 127
#define PROP_INDEX_LATIN 127
#define PROP_INDEX_LEPC 128
#define PROP_INDEX_LATN 127
#define PROP_INDEX_LEPCHA 128
#define PROP_INDEX_LEPC 128
#define PROP_INDEX_LIMBU 129
#define PROP_INDEX_LIMB 129
#define PROP_INDEX_LINA 130
#define PROP_INDEX_LINEARA 130
#define PROP_INDEX_LINB 131
#define PROP_INDEX_LINA 130
#define PROP_INDEX_LINEARB 131
#define PROP_INDEX_LINB 131
#define PROP_INDEX_LISU 132
#define PROP_INDEX_LOWERCASELETTER 133
#define PROP_INDEX_LL 133
#define PROP_INDEX_LOWERCASELETTER 133
#define PROP_INDEX_LM 134
#define PROP_INDEX_MODIFIERLETTER 134
#define PROP_INDEX_LO 135
@ -31985,34 +31985,34 @@ unicode_lookup_property_name (register const char *str, register size_t len)
#define PROP_INDEX_LOWERCASE 137
#define PROP_INDEX_LT 138
#define PROP_INDEX_TITLECASELETTER 138
#define PROP_INDEX_UPPERCASELETTER 139
#define PROP_INDEX_LU 139
#define PROP_INDEX_LYCI 140
#define PROP_INDEX_UPPERCASELETTER 139
#define PROP_INDEX_LYCIAN 140
#define PROP_INDEX_LYDI 141
#define PROP_INDEX_LYCI 140
#define PROP_INDEX_LYDIAN 141
#define PROP_INDEX_LYDI 141
#define PROP_INDEX_M 142
#define PROP_INDEX_COMBININGMARK 142
#define PROP_INDEX_MARK 142
#define PROP_INDEX_MAHJ 143
#define PROP_INDEX_MAHAJANI 143
#define PROP_INDEX_MAHJ 143
#define PROP_INDEX_MAKASAR 144
#define PROP_INDEX_MAKA 144
#define PROP_INDEX_MALAYALAM 145
#define PROP_INDEX_MLYM 145
#define PROP_INDEX_MAND 146
#define PROP_INDEX_MANDAIC 146
#define PROP_INDEX_MANI 147
#define PROP_INDEX_MAND 146
#define PROP_INDEX_MANICHAEAN 147
#define PROP_INDEX_MARC 148
#define PROP_INDEX_MANI 147
#define PROP_INDEX_MARCHEN 148
#define PROP_INDEX_MARC 148
#define PROP_INDEX_MASARAMGONDI 149
#define PROP_INDEX_GONM 149
#define PROP_INDEX_MATH 150
#define PROP_INDEX_MC 151
#define PROP_INDEX_SPACINGMARK 151
#define PROP_INDEX_ENCLOSINGMARK 152
#define PROP_INDEX_ME 152
#define PROP_INDEX_ENCLOSINGMARK 152
#define PROP_INDEX_MEDEFAIDRIN 153
#define PROP_INDEX_MEDF 153
#define PROP_INDEX_MEETEIMAYEK 154
@ -32023,8 +32023,8 @@ unicode_lookup_property_name (register const char *str, register size_t len)
#define PROP_INDEX_MERC 156
#define PROP_INDEX_MEROITICHIEROGLYPHS 157
#define PROP_INDEX_MERO 157
#define PROP_INDEX_PLRD 158
#define PROP_INDEX_MIAO 158
#define PROP_INDEX_PLRD 158
#define PROP_INDEX_MN 159
#define PROP_INDEX_NONSPACINGMARK 159
#define PROP_INDEX_MODI 160
@ -32032,71 +32032,71 @@ unicode_lookup_property_name (register const char *str, register size_t len)
#define PROP_INDEX_MONG 161
#define PROP_INDEX_MRO 162
#define PROP_INDEX_MROO 162
#define PROP_INDEX_MULT 163
#define PROP_INDEX_MULTANI 163
#define PROP_INDEX_MULT 163
#define PROP_INDEX_MYANMAR 164
#define PROP_INDEX_MYMR 164
#define PROP_INDEX_NUMBER 165
#define PROP_INDEX_N 165
#define PROP_INDEX_NUMBER 165
#define PROP_INDEX_NABATAEAN 166
#define PROP_INDEX_NBAT 166
#define PROP_INDEX_NAGMUNDARI 167
#define PROP_INDEX_NAGM 167
#define PROP_INDEX_NAND 168
#define PROP_INDEX_NANDINAGARI 168
#define PROP_INDEX_DECIMALNUMBER 169
#define PROP_INDEX_NAND 168
#define PROP_INDEX_ND 169
#define PROP_INDEX_TALU 170
#define PROP_INDEX_DECIMALNUMBER 169
#define PROP_INDEX_NEWTAILUE 170
#define PROP_INDEX_TALU 170
#define PROP_INDEX_NEWA 171
#define PROP_INDEX_NKO 172
#define PROP_INDEX_NKOO 172
#define PROP_INDEX_LETTERNUMBER 173
#define PROP_INDEX_NL 173
#define PROP_INDEX_OTHERNUMBER 174
#define PROP_INDEX_LETTERNUMBER 173
#define PROP_INDEX_NO 174
#define PROP_INDEX_OTHERNUMBER 174
#define PROP_INDEX_NONCHARACTERCODEPOINT 175
#define PROP_INDEX_NCHAR 175
#define PROP_INDEX_NSHU 176
#define PROP_INDEX_NUSHU 176
#define PROP_INDEX_HMNP 177
#define PROP_INDEX_NSHU 176
#define PROP_INDEX_NYIAKENGPUACHUEHMONG 177
#define PROP_INDEX_HMNP 177
#define PROP_INDEX_OGHAM 178
#define PROP_INDEX_OGAM 178
#define PROP_INDEX_OLCK 179
#define PROP_INDEX_OLCHIKI 179
#define PROP_INDEX_HUNG 180
#define PROP_INDEX_OLCK 179
#define PROP_INDEX_OLDHUNGARIAN 180
#define PROP_INDEX_ITAL 181
#define PROP_INDEX_HUNG 180
#define PROP_INDEX_OLDITALIC 181
#define PROP_INDEX_NARB 182
#define PROP_INDEX_ITAL 181
#define PROP_INDEX_OLDNORTHARABIAN 182
#define PROP_INDEX_NARB 182
#define PROP_INDEX_OLDPERMIC 183
#define PROP_INDEX_PERM 183
#define PROP_INDEX_OLDPERSIAN 184
#define PROP_INDEX_XPEO 184
#define PROP_INDEX_SOGO 185
#define PROP_INDEX_OLDSOGDIAN 185
#define PROP_INDEX_SARB 186
#define PROP_INDEX_SOGO 185
#define PROP_INDEX_OLDSOUTHARABIAN 186
#define PROP_INDEX_SARB 186
#define PROP_INDEX_OLDTURKIC 187
#define PROP_INDEX_ORKH 187
#define PROP_INDEX_OUGR 188
#define PROP_INDEX_OLDUYGHUR 188
#define PROP_INDEX_ORYA 189
#define PROP_INDEX_OUGR 188
#define PROP_INDEX_ORIYA 189
#define PROP_INDEX_ORYA 189
#define PROP_INDEX_OSAGE 190
#define PROP_INDEX_OSGE 190
#define PROP_INDEX_OSMANYA 191
#define PROP_INDEX_OSMA 191
#define PROP_INDEX_OTHERALPHABETIC 192
#define PROP_INDEX_OALPHA 192
#define PROP_INDEX_ODI 193
#define PROP_INDEX_OTHERDEFAULTIGNORABLECODEPOINT 193
#define PROP_INDEX_OGREXT 194
#define PROP_INDEX_ODI 193
#define PROP_INDEX_OTHERGRAPHEMEEXTEND 194
#define PROP_INDEX_OIDC 195
#define PROP_INDEX_OGREXT 194
#define PROP_INDEX_OTHERIDCONTINUE 195
#define PROP_INDEX_OIDC 195
#define PROP_INDEX_OTHERIDSTART 196
#define PROP_INDEX_OIDS 196
#define PROP_INDEX_OTHERLOWERCASE 197
@ -32114,37 +32114,37 @@ unicode_lookup_property_name (register const char *str, register size_t len)
#define PROP_INDEX_PALM 202
#define PROP_INDEX_PATTERNSYNTAX 203
#define PROP_INDEX_PATSYN 203
#define PROP_INDEX_PATWS 204
#define PROP_INDEX_PATTERNWHITESPACE 204
#define PROP_INDEX_PATWS 204
#define PROP_INDEX_PAUCINHAU 205
#define PROP_INDEX_PAUC 205
#define PROP_INDEX_CONNECTORPUNCTUATION 206
#define PROP_INDEX_PC 206
#define PROP_INDEX_DASHPUNCTUATION 207
#define PROP_INDEX_CONNECTORPUNCTUATION 206
#define PROP_INDEX_PD 207
#define PROP_INDEX_DASHPUNCTUATION 207
#define PROP_INDEX_PE 208
#define PROP_INDEX_CLOSEPUNCTUATION 208
#define PROP_INDEX_FINALPUNCTUATION 209
#define PROP_INDEX_PF 209
#define PROP_INDEX_PHAG 210
#define PROP_INDEX_FINALPUNCTUATION 209
#define PROP_INDEX_PHAGSPA 210
#define PROP_INDEX_PHAG 210
#define PROP_INDEX_PHOENICIAN 211
#define PROP_INDEX_PHNX 211
#define PROP_INDEX_PI 212
#define PROP_INDEX_INITIALPUNCTUATION 212
#define PROP_INDEX_OTHERPUNCTUATION 213
#define PROP_INDEX_PO 213
#define PROP_INDEX_OTHERPUNCTUATION 213
#define PROP_INDEX_PREPENDEDCONCATENATIONMARK 214
#define PROP_INDEX_PCM 214
#define PROP_INDEX_PS 215
#define PROP_INDEX_OPENPUNCTUATION 215
#define PROP_INDEX_PHLP 216
#define PROP_INDEX_PSALTERPAHLAVI 216
#define PROP_INDEX_PHLP 216
#define PROP_INDEX_QUOTATIONMARK 217
#define PROP_INDEX_QMARK 217
#define PROP_INDEX_RADICAL 218
#define PROP_INDEX_RI 219
#define PROP_INDEX_REGIONALINDICATOR 219
#define PROP_INDEX_RI 219
#define PROP_INDEX_REJANG 220
#define PROP_INDEX_RJNG 220
#define PROP_INDEX_RUNIC 221
@ -32167,30 +32167,30 @@ unicode_lookup_property_name (register const char *str, register size_t len)
#define PROP_INDEX_SIDD 229
#define PROP_INDEX_SIGNWRITING 230
#define PROP_INDEX_SGNW 230
#define PROP_INDEX_SINH 231
#define PROP_INDEX_SINHALA 231
#define PROP_INDEX_SINH 231
#define PROP_INDEX_SK 232
#define PROP_INDEX_MODIFIERSYMBOL 232
#define PROP_INDEX_MATHSYMBOL 233
#define PROP_INDEX_SM 233
#define PROP_INDEX_MATHSYMBOL 233
#define PROP_INDEX_SO 234
#define PROP_INDEX_OTHERSYMBOL 234
#define PROP_INDEX_SD 235
#define PROP_INDEX_SOFTDOTTED 235
#define PROP_INDEX_SOGD 236
#define PROP_INDEX_SD 235
#define PROP_INDEX_SOGDIAN 236
#define PROP_INDEX_SOGD 236
#define PROP_INDEX_SORASOMPENG 237
#define PROP_INDEX_SORA 237
#define PROP_INDEX_SOYO 238
#define PROP_INDEX_SOYOMBO 238
#define PROP_INDEX_SUND 239
#define PROP_INDEX_SOYO 238
#define PROP_INDEX_SUNDANESE 239
#define PROP_INDEX_SYLO 240
#define PROP_INDEX_SUND 239
#define PROP_INDEX_SYLOTINAGRI 240
#define PROP_INDEX_SYRC 241
#define PROP_INDEX_SYLO 240
#define PROP_INDEX_SYRIAC 241
#define PROP_INDEX_TGLG 242
#define PROP_INDEX_SYRC 241
#define PROP_INDEX_TAGALOG 242
#define PROP_INDEX_TGLG 242
#define PROP_INDEX_TAGBANWA 243
#define PROP_INDEX_TAGB 243
#define PROP_INDEX_TAILE 244
@ -32205,51 +32205,51 @@ unicode_lookup_property_name (register const char *str, register size_t len)
#define PROP_INDEX_TAML 248
#define PROP_INDEX_TANGSA 249
#define PROP_INDEX_TNSA 249
#define PROP_INDEX_TANG 250
#define PROP_INDEX_TANGUT 250
#define PROP_INDEX_TANG 250
#define PROP_INDEX_TELUGU 251
#define PROP_INDEX_TELU 251
#define PROP_INDEX_TERM 252
#define PROP_INDEX_TERMINALPUNCTUATION 252
#define PROP_INDEX_THAA 253
#define PROP_INDEX_TERM 252
#define PROP_INDEX_THAANA 253
#define PROP_INDEX_THAA 253
#define PROP_INDEX_THAI 254
#define PROP_INDEX_TIBT 255
#define PROP_INDEX_TIBETAN 255
#define PROP_INDEX_TFNG 256
#define PROP_INDEX_TIBT 255
#define PROP_INDEX_TIFINAGH 256
#define PROP_INDEX_TFNG 256
#define PROP_INDEX_TIRHUTA 257
#define PROP_INDEX_TIRH 257
#define PROP_INDEX_TOTO 258
#define PROP_INDEX_UGAR 259
#define PROP_INDEX_UGARITIC 259
#define PROP_INDEX_UGAR 259
#define PROP_INDEX_UNIFIEDIDEOGRAPH 260
#define PROP_INDEX_UIDEO 260
#define PROP_INDEX_ZZZZ 261
#define PROP_INDEX_UNKNOWN 261
#define PROP_INDEX_ZZZZ 261
#define PROP_INDEX_UPPERCASE 262
#define PROP_INDEX_VAII 263
#define PROP_INDEX_VAI 263
#define PROP_INDEX_VAII 263
#define PROP_INDEX_VARIATIONSELECTOR 264
#define PROP_INDEX_VS 264
#define PROP_INDEX_VITH 265
#define PROP_INDEX_VITHKUQI 265
#define PROP_INDEX_WCHO 266
#define PROP_INDEX_VITH 265
#define PROP_INDEX_WANCHO 266
#define PROP_INDEX_WCHO 266
#define PROP_INDEX_WARANGCITI 267
#define PROP_INDEX_WARA 267
#define PROP_INDEX_WHITESPACE 268
#define PROP_INDEX_WSPACE 268
#define PROP_INDEX_XIDC 269
#define PROP_INDEX_XIDCONTINUE 269
#define PROP_INDEX_XIDS 270
#define PROP_INDEX_XIDC 269
#define PROP_INDEX_XIDSTART 270
#define PROP_INDEX_XIDS 270
#define PROP_INDEX_YEZIDI 271
#define PROP_INDEX_YEZI 271
#define PROP_INDEX_YI 272
#define PROP_INDEX_YIII 272
#define PROP_INDEX_SEPARATOR 273
#define PROP_INDEX_Z 273
#define PROP_INDEX_SEPARATOR 273
#define PROP_INDEX_ZANABAZARSQUARE 274
#define PROP_INDEX_ZANB 274
#define PROP_INDEX_ZL 275

View File

@ -34,7 +34,7 @@
/* Generated by make_unicode_property_data.py. */
/*-
* Copyright (c) 2016-2022 K.Kosako
* Copyright (c) 2016-2023 K.Kosako
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@ -9,7 +9,7 @@
/* This gperf source file was generated by make_unicode_fold_data.py */
/*-
* Copyright (c) 2017-2022 K.Kosako
* Copyright (c) 2017-2023 K.Kosako
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@ -1,6 +1,6 @@
/* unicode_wb_data.c: Generated by make_unicode_wb_data.py. */
/*-
* Copyright (c) 2019-2022 K.Kosako
* Copyright (c) 2019-2023 K.Kosako
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without