diff options
44 files changed, 4118 insertions, 2395 deletions
@@ -4,7 +4,6 @@ ltmain.sh stamp-h1 configure config.status -config.log config.h config.h.in onig-config @@ -17,9 +16,13 @@ Makefile.in *.lo *.la *.pc +*.log +*.dll +*.lib +*.exe +*.exp *~ .libs/ .deps/ /build m4/*.m4 -debian/files @@ -1,5 +1,17 @@ History +2017/12/11: Version 6.7.0 + +2017/12/08: add ONIG_SYNTAX_ONIGURUMA (default syntax) +2017/12/05: restructure StackType +2017/11/13: implement subexp calls (?R), (?&name), (?-n), (?+n) for Perl syntax +2017/09/25: use string pool of gperf for Unicode Property lookup function +2017/09/16: fix #70: an empty greedy regex and a word boundary (.*\b) fails +2017/09/13: remove a stack type STK_POS +2017/09/08: fix #69: add a declaration of onig_end() +2017/09/07: fix #68: Compilation failure in out-of-source build +2017/09/03: [new] hexadecimal codepoint \uHHHH + 2017/08/30: Version 6.6.1 2017/08/29: fix definition of \X to (?>\O(?:\Y\O)*) @@ -26,6 +26,15 @@ Supported character encodings: * CP1251: contributed by Byte +New feature of version 6.7.0 +-------------------------- + +* NEW: hexadecimal codepoint \uHHHH +* NEW: add ONIG_SYNTAX_ONIGURUMA (== ONIG_SYNTAX_DEFAULT) +* Disabled \N and \O on ONIG_SYNTAX_RUBY +* Reduced object size + + New feature of version 6.6.1 -------------------------- diff --git a/configure.ac b/configure.ac index d585690..ebb0a66 100644 --- a/configure.ac +++ b/configure.ac @@ -1,5 +1,5 @@ dnl Process this file with autoconf to produce a configure script. -AC_INIT(onig, 6.6.1) +AC_INIT(onig, 6.7.0) AC_CONFIG_MACRO_DIR([m4]) @@ -1,7 +1,7 @@ --- This file is part of LuaDist project name = "onig" -version = "6.6.1" +version = "6.7.0" desc = "Oniguruma is a regular expressions library." author = "K.Kosako" @@ -1,4 +1,4 @@ -Oniguruma API Version 6.6.0 2017/08/15 +Oniguruma API Version 6.7.0 2017/12/08 #include <oniguruma.h> @@ -140,7 +140,8 @@ Oniguruma API Version 6.6.0 2017/08/15 ONIG_SYNTAX_PERL Perl ONIG_SYNTAX_PERL_NG Perl + named group ONIG_SYNTAX_RUBY Ruby - ONIG_SYNTAX_DEFAULT default (== Ruby) + ONIG_SYNTAX_ONIGURUMA Oniguruma + ONIG_SYNTAX_DEFAULT default (== ONIG_SYNTAX_ONIGURUMA) onig_set_default_syntax() or any OnigSyntaxType data address defined by user. @@ -1,4 +1,4 @@ -鬼車インターフェース Version 6.6.0 2017/08/15 +鬼車インターフェース Version 6.7.0 2017/12/08 #include <oniguruma.h> @@ -139,7 +139,8 @@ ONIG_SYNTAX_PERL Perl ONIG_SYNTAX_PERL_NG Perl + 名前付き捕獲式集合 ONIG_SYNTAX_RUBY Ruby - ONIG_SYNTAX_DEFAULT default (== Ruby) + ONIG_SYNTAX_ONIGURUMA Oniguruma + ONIG_SYNTAX_DEFAULT default (== ONIG_SYNTAX_ONIGURUMA) onig_set_default_syntax() または、ユーザが定義したOnigSyntaxTypeデータのアドレス @@ -1,6 +1,6 @@ -Oniguruma Regular Expressions Version 6.6.0 2017/08/29 +Oniguruma Regular Expressions Version 6.7.0 2017/12/08 -syntax: ONIG_SYNTAX_RUBY (default) +syntax: ONIG_SYNTAX_ONIGURUMA (default) 1. Syntax elements @@ -23,6 +23,7 @@ syntax: ONIG_SYNTAX_RUBY (default) \e escape (0x1B) \nnn octal char (encoded byte value) \o{17777777777} wide octal char (character code point value) + \uHHHH wide hexadecimal char (character code point value) \xHH hexadecimal char (encoded byte value) \x{7HHHHHHH} wide hexadecimal char (character code point value) \cx control char (character code point value) @@ -421,7 +422,7 @@ syntax: ONIG_SYNTAX_RUBY (default) ----------------------------- A-1. Syntax-dependent options - + ONIG_SYNTAX_RUBY + + ONIG_SYNTAX_ONIGURUMA (?m): dot (.) also matches newline + ONIG_SYNTAX_PERL and ONIG_SYNTAX_JAVA @@ -1,6 +1,6 @@ -鬼車 正規表現 Version 6.6.0 2017/08/29 +鬼車 正規表現 Version 6.7.0 2017/12/08 -使用文法: ONIG_SYNTAX_RUBY (既定値) +使用文法: ONIG_SYNTAX_ONIGURUMA (既定値) 1. 基本要素 @@ -23,6 +23,7 @@ \e 退避修飾 (0x1B) \nnn 八進数表現 符号化バイト値(の一部) \o{17777777777} 拡張八進数表現 コードポイント値 + \uHHHH 拡張十六進数表現 コードポイント値 \xHH 十六進数表現 符号化バイト値(の一部) \x{7HHHHHHH} 拡張十六進数表現 コードポイント値 \cx 制御文字表現 コードポイント値 @@ -429,7 +430,7 @@ ----------------------------- 補記 1. 文法依存オプション - + ONIG_SYNTAX_RUBY + + ONIG_SYNTAX_ONIGURUMA (?m): 終止符記号(.)は改行と照合成功 + ONIG_SYNTAX_PERL と ONIG_SYNTAX_JAVA @@ -8,7 +8,7 @@ <h1>Oniguruma</h1> (<a href="index_ja.html">Japanese</a>) <p> -(c) K.Kosako, updated at: 2017/08/30 +(c) K.Kosako, updated at: 2017/12/08 </p> <dl> @@ -16,6 +16,7 @@ <dt><b>What's new</b> </font> <ul> +<li>2017/12/11: Version 6.7.0 released.</li> <li>2017/08/30: Version 6.6.1 released.</li> <li>2017/08/28: Version 6.6.0 released.</li> <li>2017/08/03: Version 6.5.0 released.</li> diff --git a/index_ja.html b/index_ja.html index 4e5265c..929ae16 100644 --- a/index_ja.html +++ b/index_ja.html @@ -8,7 +8,7 @@ <h1>鬼車</h1> <p> -(c) K.Kosako, 最終更新: 2017/08/30 +(c) K.Kosako, 最終更新: 2017/12/08 </p> <dl> @@ -16,6 +16,7 @@ <dt><b>更新情報</b> </font> <ul> +<li>2017/12/11: Version 6.7.0 リリース</li> <li>2017/08/30: Version 6.6.1 リリース</li> <li>2017/08/28: Version 6.6.0 リリース</li> <li>2017/08/03: Version 6.5.0 リリース</li> diff --git a/sample/Makefile.am b/sample/Makefile.am index 6799ecd..7403384 100644 --- a/sample/Makefile.am +++ b/sample/Makefile.am @@ -4,7 +4,7 @@ lib_onig = ../src/libonig.la LDADD = $(lib_onig) AM_LDFLAGS = -L$(prefix)/lib -AM_CPPFLAGS = -I../src -I$(includedir) +AM_CPPFLAGS = -I$(top_srcdir)/src -I$(includedir) TESTS = encode listcap names posix simple sql syntax user_property bug_fix diff --git a/sample/posix.c b/sample/posix.c index f4cbe37..65bcf51 100644 --- a/sample/posix.c +++ b/sample/posix.c @@ -40,7 +40,7 @@ extern int main(int argc, char* argv[]) reg_set_encoding(REG_POSIX_ENCODING_ASCII); - /* default syntax (ONIG_SYNTAX_RUBY) */ + /* default syntax (ONIG_SYNTAX_ONIGURUMA) */ pattern = (UChar* )"^a+b{2,7}[c-f]?$|uuu"; r = regcomp(®, (char* )pattern, REG_EXTENDED); if (r) { diff --git a/src/Makefile.windows b/src/Makefile.windows index 8c22aa9..046345a 100644 --- a/src/Makefile.windows +++ b/src/Makefile.windows @@ -158,26 +158,26 @@ ptest: $(testp) .\$(testp)
$(testc): $(testc).c $(libname)
- $(CC) -nologo -o $(testc) -DONIG_EXTERN=extern $(testc).c $(libname)
+ $(CC) -nologo /Fe:$(testc) -DONIG_EXTERN=extern $(testc).c $(libname)
$(testp): $(testc).c $(dlllib)
- $(CC) -nologo -DPOSIX_TEST -o $(testp) $(testc).c $(dlllib)
+ $(CC) -nologo -DPOSIX_TEST /Fe:$(testp) $(testc).c $(dlllib)
#$(testc)u.c: test.rb testconvu.rb
# ruby -Ke testconvu.rb test.rb > $@
$(testc)u: $(testc)u.c $(libname)
- $(CC) -nologo -o $(testc)u -DONIG_EXTERN=extern $(testc)u.c $(libname)
+ $(CC) -nologo /Fe:$(testc)u -DONIG_EXTERN=extern $(testc)u.c $(libname)
clean:
del *.obj *.lib *.exp *.dll $(testp).exe $(testc).exe $(testc).obj
samples: all
- $(CC) $(CFLAGS) -I. -o simple sample\simple.c $(dlllib)
- $(CC) $(CFLAGS) -I. -o posix sample\posix.c $(dlllib)
- $(CC) $(CFLAGS) -I. -o names sample\names.c $(dlllib)
- $(CC) $(CFLAGS) -I. -o listcap sample\listcap.c $(dlllib)
- $(CC) $(CFLAGS) -I. -o sql sample\sql.c $(dlllib)
- $(CC) $(CFLAGS) -I. -o encode sample\encode.c $(dlllib)
- $(CC) $(CFLAGS) -I. -o syntax sample\syntax.c $(dlllib)
+ $(CC) $(CFLAGS) -I. /Fe:simple sample\simple.c $(dlllib)
+ $(CC) $(CFLAGS) -I. /Fe:posix sample\posix.c $(dlllib)
+ $(CC) $(CFLAGS) -I. /Fe:names sample\names.c $(dlllib)
+ $(CC) $(CFLAGS) -I. /Fe:listcap sample\listcap.c $(dlllib)
+ $(CC) $(CFLAGS) -I. /Fe:sql sample\sql.c $(dlllib)
+ $(CC) $(CFLAGS) -I. /Fe:encode sample\encode.c $(dlllib)
+ $(CC) $(CFLAGS) -I. /Fe:syntax sample\syntax.c $(dlllib)
diff --git a/src/euc_jp.c b/src/euc_jp.c index 756bdc7..42c3bce 100644 --- a/src/euc_jp.c +++ b/src/euc_jp.c @@ -152,7 +152,7 @@ code_to_mbc(OnigCodePoint code, UChar *buf) if (enclen(ONIG_ENCODING_EUC_JP, buf) != (p - buf)) return ONIGERR_INVALID_CODE_POINT_VALUE; #endif - return p - buf; + return (int )(p - buf); } static int @@ -230,7 +230,7 @@ static int property_name_to_ctype(OnigEncoding enc, UChar* p, UChar* end) { struct PropertyNameCtype* pc; - int len = end - p; + int len = (int )(end - p); char q[32]; if (len < sizeof(q) - 1) { diff --git a/src/gperf_fold_key_conv.py b/src/gperf_fold_key_conv.py index 5267aa4..59c5de9 100755 --- a/src/gperf_fold_key_conv.py +++ b/src/gperf_fold_key_conv.py @@ -9,7 +9,7 @@ import re REG_LINE_GPERF = re.compile('#line .+gperf"') REG_HASH_FUNC = re.compile('hash\s*\(register\s+const\s+char\s*\*\s*str,\s*register\s+unsigned\s+int\s+len\s*\)') REG_STR_AT = re.compile('str\[(\d+)\]') -REG_RETURN_TYPE = re.compile('^const\s+int\s*\*') +REG_RETURN_TYPE = re.compile('^const\s+short\s+int\s*\*') REG_FOLD_KEY = re.compile('unicode_fold(\d)_key\s*\(register\s+const\s+char\s*\*\s*str,\s*register\s+unsigned\s+int\s+len\)') REG_ENTRY = re.compile('\{".*?",\s*(-?\d+)\s*\}') REG_IF_LEN = re.compile('if\s*\(\s*len\s*<=\s*MAX_WORD_LENGTH.+') diff --git a/src/make_unicode_egcb_data.py b/src/make_unicode_egcb_data.py index 3f958eb..3d20508 100755 --- a/src/make_unicode_egcb_data.py +++ b/src/make_unicode_egcb_data.py @@ -191,8 +191,36 @@ merge_props(PROPS, props) PROPS = sorted(PROPS) -print '/* Copyright (c) 2017 K.Kosako */' -print '/* Generated by make_gcb_data.py. */' +print '/* unicode_egcb_data.c: Generated by make_unicode_egcb_data.py. */' +COPYRIGHT = ''' +/*- + * Copyright (c) 2017 K.Kosako <sndgk393 AT ybb DOT ne DOT jp> + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ +'''.strip() + +print COPYRIGHT print '' if VERSION_INFO is not None: print "#define GRAPHEME_BREAK_PROPERTY_VERSION %s" % re.sub(r'[\.-]', '_', VERSION_INFO) diff --git a/src/make_unicode_fold_data.py b/src/make_unicode_fold_data.py index f4ad321..64aa3a2 100755 --- a/src/make_unicode_fold_data.py +++ b/src/make_unicode_fold_data.py @@ -250,8 +250,8 @@ def output_gperf_unfold_key(f): %} struct ByUnfoldKey { OnigCodePoint code; - int index; - int fold_len; + short int index; + short int fold_len; }; %% """ @@ -272,7 +272,7 @@ def output_gperf_fold_key(f, key_len): #include <string.h> #include "regenc.h" %} -int +short int %% """ f.write(head) diff --git a/src/make_unicode_property.sh b/src/make_unicode_property.sh index 5ee2990..1e57674 100755 --- a/src/make_unicode_property.sh +++ b/src/make_unicode_property.sh @@ -3,15 +3,16 @@ NAME=unicode_property_data TMP=gperf.tmp #GPERF_OPT='-P -Q prop_name_pool -C -c -t -j1 -L ANSI-C --ignore-case' -GPERF_OPT='-T -C -c -t -j1 -L ANSI-C --ignore-case' +GPERF_OPT='-T -C -c -t -j1 -L ANSI-C --ignore-case --pic -Q unicode_prop_name_pool' +POOL_CAST='s/\(int *\)\(long *\)&\(\(struct +unicode_prop_name_pool_t *\* *\) *0\)->unicode_prop_name_pool_str([^,]+)/pool_offset(\1)/g' ./make_unicode_property_data.py > ${NAME}.gperf ./make_unicode_property_data.py -posix > ${NAME}_posix.gperf gperf ${GPERF_OPT} -N unicode_lookup_property_name --output-file ${TMP} ${NAME}.gperf -sed -e 's/^#line.*$//g' ${TMP} > ${NAME}.c +sed -e 's/^#line.*$//g' ${TMP} | sed -r "${POOL_CAST}" > ${NAME}.c gperf ${GPERF_OPT} -N unicode_lookup_property_name --output-file ${TMP} ${NAME}_posix.gperf -sed -e 's/^#line.*$//g' ${TMP} > ${NAME}_posix.c +sed -e 's/^#line.*$//g' ${TMP} | sed -r "${POOL_CAST}" > ${NAME}_posix.c rm -f ${NAME}.gperf ${NAME}_posix.gperf ${TMP} diff --git a/src/make_unicode_property_data.py b/src/make_unicode_property_data.py index 51986b6..8dd11b8 100755 --- a/src/make_unicode_property_data.py +++ b/src/make_unicode_property_data.py @@ -501,11 +501,15 @@ if not(POSIX_ONLY): print " CR_%s," % prop s = '''}; + +#define pool_offset(s) offsetof(struct unicode_prop_name_pool_t, unicode_prop_name_pool_str##s) + %} -struct PropertyNameCtype { - char* name: - int ctype; +struct PoolPropertyNameCtype { + short int name; + short int ctype; }; + %% ''' sys.stdout.write(s) diff --git a/src/onigposix.h b/src/onigposix.h index 2af3717..22211e4 100644 --- a/src/onigposix.h +++ b/src/onigposix.h @@ -4,7 +4,7 @@ onigposix.h - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2005 K.Kosako <sndgk393 AT ybb DOT ne DOT jp> + * Copyright (c) 2002-2017 K.Kosako <sndgk393 AT ybb DOT ne DOT jp> * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -128,6 +128,7 @@ ONIG_EXTERN OnigSyntaxType OnigSyntaxGnuRegex; ONIG_EXTERN OnigSyntaxType OnigSyntaxJava; ONIG_EXTERN OnigSyntaxType OnigSyntaxPerl; ONIG_EXTERN OnigSyntaxType OnigSyntaxRuby; +ONIG_EXTERN OnigSyntaxType OnigSyntaxOniguruma; /* predefined syntaxes (see regsyntax.c) */ #define ONIG_SYNTAX_POSIX_BASIC (&OnigSyntaxPosixBasic) @@ -138,6 +139,7 @@ ONIG_EXTERN OnigSyntaxType OnigSyntaxRuby; #define ONIG_SYNTAX_JAVA (&OnigSyntaxJava) #define ONIG_SYNTAX_PERL (&OnigSyntaxPerl) #define ONIG_SYNTAX_RUBY (&OnigSyntaxRuby) +#define ONIG_SYNTAX_ONIGURUMA (&OnigSyntaxOniguruma) /* default syntax */ #define ONIG_SYNTAX_DEFAULT OnigDefaultSyntax @@ -147,6 +149,7 @@ ONIG_EXTERN int onig_set_default_syntax P_((OnigSyntaxType* syntax)); ONIG_EXTERN void onig_copy_syntax P_((OnigSyntaxType* to, OnigSyntaxType* from)); ONIG_EXTERN const char* onig_version P_((void)); ONIG_EXTERN const char* onig_copyright P_((void)); +ONIG_EXTERN int onig_end P_((void)); #endif /* ONIGURUMA_H */ diff --git a/src/oniguruma.h b/src/oniguruma.h index dbcbbdb..5ad4469 100644 --- a/src/oniguruma.h +++ b/src/oniguruma.h @@ -35,8 +35,8 @@ extern "C" { #define ONIGURUMA #define ONIGURUMA_VERSION_MAJOR 6 -#define ONIGURUMA_VERSION_MINOR 6 -#define ONIGURUMA_VERSION_TEENY 1 +#define ONIGURUMA_VERSION_MINOR 7 +#define ONIGURUMA_VERSION_TEENY 0 #ifdef __cplusplus # ifndef HAVE_PROTOTYPES @@ -432,6 +432,7 @@ ONIG_EXTERN OnigSyntaxType OnigSyntaxJava; ONIG_EXTERN OnigSyntaxType OnigSyntaxPerl; ONIG_EXTERN OnigSyntaxType OnigSyntaxPerl_NG; ONIG_EXTERN OnigSyntaxType OnigSyntaxRuby; +ONIG_EXTERN OnigSyntaxType OnigSyntaxOniguruma; /* predefined syntaxes (see regsyntax.c) */ #define ONIG_SYNTAX_ASIS (&OnigSyntaxASIS) @@ -444,6 +445,7 @@ ONIG_EXTERN OnigSyntaxType OnigSyntaxRuby; #define ONIG_SYNTAX_PERL (&OnigSyntaxPerl) #define ONIG_SYNTAX_PERL_NG (&OnigSyntaxPerl_NG) #define ONIG_SYNTAX_RUBY (&OnigSyntaxRuby) +#define ONIG_SYNTAX_ONIGURUMA (&OnigSyntaxOniguruma) /* default syntax */ ONIG_EXTERN OnigSyntaxType* OnigDefaultSyntax; @@ -510,6 +512,7 @@ ONIG_EXTERN OnigSyntaxType* OnigDefaultSyntax; #define ONIG_SYN_OP2_ESC_CAPITAL_N_O_SUPER_DOT (1U<<24) /* \N (?-m:.), \O (?m:.) */ #define ONIG_SYN_OP2_QMARK_TILDE_ABSENT_GROUP (1U<<25) /* (?~...) */ #define ONIG_SYN_OP2_ESC_X_Y_GRAPHEME_CLUSTER (1U<<26) /* \X \y \Y */ +#define ONIG_SYN_OP2_QMARK_PERL_SUBEXP_CALL (1U<<27) /* (?R), (?&name)... */ /* syntax (behavior) */ #define ONIG_SYN_CONTEXT_INDEP_ANCHORS (1U<<31) /* not implemented */ diff --git a/src/regcomp.c b/src/regcomp.c index ab5701c..63df18b 100644 --- a/src/regcomp.c +++ b/src/regcomp.c @@ -29,6 +29,8 @@ #include "regparse.h" +OnigCaseFoldType OnigDefaultCaseFoldFlag = ONIGENC_CASE_FOLD_MIN; + #if 0 typedef struct { int n; @@ -106,8 +108,6 @@ int_stack_pop(int_stack* s) } #endif -OnigCaseFoldType OnigDefaultCaseFoldFlag = ONIGENC_CASE_FOLD_MIN; - extern OnigCaseFoldType onig_get_default_case_fold_flag(void) { @@ -129,7 +129,7 @@ static unsigned char PadBuf[WORD_ALIGNMENT_SIZE]; static UChar* str_dup(UChar* s, UChar* end) { - int len = end - s; + int len = (int )(end - s); if (len > 0) { UChar* r = (UChar* )xmalloc(len + 1); @@ -145,12 +145,13 @@ static void swap_node(Node* a, Node* b) { Node c; + c = *a; *a = *b; *b = c; if (NODE_TYPE(a) == NODE_STRING) { StrNode* sn = STR_(a); if (sn->capa == 0) { - int len = sn->end - sn->s; + int len = (int )(sn->end - sn->s); sn->s = sn->buf; sn->end = sn->s + len; } @@ -159,7 +160,7 @@ swap_node(Node* a, Node* b) if (NODE_TYPE(b) == NODE_STRING) { StrNode* sn = STR_(b); if (sn->capa == 0) { - int len = sn->end - sn->s; + int len = (int )(sn->end - sn->s); sn->s = sn->buf; sn->end = sn->s + len; } @@ -192,6 +193,7 @@ static int bitset_is_empty(BitSetRef bs) { int i; + for (i = 0; i < (int )BITSET_SIZE; i++) { if (bs[i] != 0) return 0; } @@ -235,10 +237,9 @@ onig_bbuf_init(BBuf* buf, int size) static int unset_addr_list_init(UnsetAddrList* list, int size) { - UnsetAddr* p; - - p = (UnsetAddr* )xmalloc(sizeof(UnsetAddr)* size); + UnsetAddr* p = (UnsetAddr* )xmalloc(sizeof(UnsetAddr)* size); CHECK_NULL_RETURN_MEMERR(p); + list->num = 0; list->alloc = size; list->us = p; @@ -562,9 +563,9 @@ static int compile_length_string_node(Node* node, regex_t* reg) { int rlen, r, len, prev_len, slen, ambig; - OnigEncoding enc = reg->enc; UChar *p, *prev; StrNode* sn; + OnigEncoding enc = reg->enc; sn = STR_(node); if (sn->end <= sn->s) @@ -592,6 +593,7 @@ compile_length_string_node(Node* node, regex_t* reg) } p += len; } + r = add_compile_string_length(prev, prev_len, slen, reg, ambig); rlen += r; return rlen; @@ -603,16 +605,17 @@ compile_length_string_raw_node(StrNode* sn, regex_t* reg) if (sn->end <= sn->s) return 0; - return add_compile_string_length(sn->s, 1 /* sb */, sn->end - sn->s, reg, 0); + return add_compile_string_length(sn->s, 1 /* sb */, (int )(sn->end - sn->s), + reg, 0); } static int compile_string_node(Node* node, regex_t* reg) { int r, len, prev_len, slen, ambig; - OnigEncoding enc = reg->enc; UChar *p, *prev, *end; StrNode* sn; + OnigEncoding enc = reg->enc; sn = STR_(node); if (sn->end <= sn->s) @@ -642,6 +645,7 @@ compile_string_node(Node* node, regex_t* reg) p += len; } + return add_compile_string(prev, prev_len, slen, reg, ambig); } @@ -651,7 +655,7 @@ compile_string_raw_node(StrNode* sn, regex_t* reg) if (sn->end <= sn->s) return 0; - return add_compile_string(sn->s, 1 /* sb */, sn->end - sn->s, reg, 0); + return add_compile_string(sn->s, 1 /* sb */, (int )(sn->end - sn->s), reg, 0); } static int @@ -892,8 +896,7 @@ compile_length_quantifier_node(QuantNode* qn, regex_t* reg) len = SIZE_OP_PUSH + cklen + SIZE_OP_JUMP + tlen; } else { - len = SIZE_OP_REPEAT_INC - + mod_tlen + SIZE_OPCODE + SIZE_RELADDR + SIZE_MEMNUM; + len = SIZE_OP_REPEAT_INC + mod_tlen + SIZE_OPCODE + SIZE_RELADDR + SIZE_MEMNUM; if (CKN_ON) len += SIZE_OP_STATE_CHECK; } @@ -1066,8 +1069,8 @@ compile_length_quantifier_node(QuantNode* qn, regex_t* reg) if (tlen < 0) return tlen; /* anychar repeat */ - if (NODE_IS_ANYCHAR(NODE_QUANT_BODY(qn))) { - if (qn->greedy && infinite) { + if (is_anychar_star_quantifier(qn)) { + if (qn->lower <= 1 || tlen * qn->lower <= QUANTIFIER_EXPAND_LIMIT_SIZE) { if (IS_NOT_NULL(qn->next_head_exact)) return SIZE_OP_ANYCHAR_STAR_PEEK_NEXT + tlen * qn->lower; else @@ -1130,7 +1133,8 @@ compile_quantifier_node(QuantNode* qn, regex_t* reg, ScanEnv* env) if (tlen < 0) return tlen; - if (is_anychar_star_quantifier(qn)) { + if (is_anychar_star_quantifier(qn) && + (qn->lower <= 1 || tlen * qn->lower <= QUANTIFIER_EXPAND_LIMIT_SIZE)) { r = compile_tree_n_times(NODE_QUANT_BODY(qn), qn->lower, reg, env); if (r != 0) return r; if (IS_NOT_NULL(qn->next_head_exact)) { @@ -1184,7 +1188,7 @@ compile_quantifier_node(QuantNode* qn, regex_t* reg, ScanEnv* env) r = compile_tree_empty_check(NODE_QUANT_BODY(qn), reg, empty_info, env); if (r != 0) return r; r = add_opcode_rel_addr(reg, OP_JUMP, - -(mod_tlen + (int )SIZE_OP_JUMP + (int )SIZE_OP_PUSH_OR_JUMP_EXACT1)); + -(mod_tlen + (int )SIZE_OP_JUMP + (int )SIZE_OP_PUSH_OR_JUMP_EXACT1)); } else if (IS_NOT_NULL(qn->next_head_exact)) { r = add_opcode_rel_addr(reg, OP_PUSH_IF_PEEK_NEXT, @@ -1194,7 +1198,7 @@ compile_quantifier_node(QuantNode* qn, regex_t* reg, ScanEnv* env) r = compile_tree_empty_check(NODE_QUANT_BODY(qn), reg, empty_info, env); if (r != 0) return r; r = add_opcode_rel_addr(reg, OP_JUMP, - -(mod_tlen + (int )SIZE_OP_JUMP + (int )SIZE_OP_PUSH_IF_PEEK_NEXT)); + -(mod_tlen + (int )SIZE_OP_JUMP + (int )SIZE_OP_PUSH_IF_PEEK_NEXT)); } else { r = add_opcode_rel_addr(reg, OP_PUSH, mod_tlen + SIZE_OP_JUMP); @@ -1218,7 +1222,7 @@ compile_quantifier_node(QuantNode* qn, regex_t* reg, ScanEnv* env) if (r != 0) return r; r = compile_tree(NODE_QUANT_BODY(qn), reg, env); } - else if (!infinite && qn->greedy && + else if (! infinite && qn->greedy && (qn->upper == 1 || (tlen + SIZE_OP_PUSH) * qn->upper <= QUANTIFIER_EXPAND_LIMIT_SIZE)) { int n = qn->upper - qn->lower; @@ -1228,13 +1232,13 @@ compile_quantifier_node(QuantNode* qn, regex_t* reg, ScanEnv* env) for (i = 0; i < n; i++) { r = add_opcode_rel_addr(reg, OP_PUSH, - (n - i) * tlen + (n - i - 1) * SIZE_OP_PUSH); + (n - i) * tlen + (n - i - 1) * SIZE_OP_PUSH); if (r != 0) return r; r = compile_tree(NODE_QUANT_BODY(qn), reg, env); if (r != 0) return r; } } - else if (!qn->greedy && qn->upper == 1 && qn->lower == 0) { /* '??' */ + else if (! qn->greedy && qn->upper == 1 && qn->lower == 0) { /* '??' */ r = add_opcode_rel_addr(reg, OP_PUSH, SIZE_OP_JUMP); if (r != 0) return r; r = add_opcode_rel_addr(reg, OP_JUMP, tlen); @@ -1343,7 +1347,7 @@ compile_length_enclosure_node(EnclosureNode* node, regex_t* reg) len = SIZE_OP_MEMORY_START; len += tlen + (MEM_STATUS_AT0(reg->bt_mem_end, node->m.regnum) - ? SIZE_OP_MEMORY_END_PUSH : SIZE_OP_MEMORY_END); + ? SIZE_OP_MEMORY_END_PUSH : SIZE_OP_MEMORY_END); } break; @@ -1357,7 +1361,7 @@ compile_length_enclosure_node(EnclosureNode* node, regex_t* reg) + SIZE_OP_PUSH + tlen + SIZE_OP_POP + SIZE_OP_JUMP; } else { - len = SIZE_OP_PUSH_STOP_BT + tlen + SIZE_OP_POP_STOP_BT; + len = SIZE_OP_ATOMIC_START + tlen + SIZE_OP_ATOMIC_END; } break; @@ -1370,7 +1374,7 @@ compile_length_enclosure_node(EnclosureNode* node, regex_t* reg) len = compile_length_tree(cond, reg); if (len < 0) return len; len += SIZE_OP_PUSH; - len += SIZE_OP_PUSH_STOP_BT + SIZE_OP_POP_STOP_BT; + len += SIZE_OP_ATOMIC_START + SIZE_OP_ATOMIC_END; if (IS_NOT_NULL(Then)) { tlen = compile_length_tree(Then, reg); @@ -1511,11 +1515,11 @@ compile_enclosure_node(EnclosureNode* node, regex_t* reg, ScanEnv* env) -((int )SIZE_OP_PUSH + len + (int )SIZE_OP_POP + (int )SIZE_OP_JUMP)); } else { - r = add_opcode(reg, OP_PUSH_STOP_BT); + r = add_opcode(reg, OP_ATOMIC_START); if (r != 0) return r; r = compile_tree(NODE_ENCLOSURE_BODY(node), reg, env); if (r != 0) return r; - r = add_opcode(reg, OP_POP_STOP_BT); + r = add_opcode(reg, OP_ATOMIC_END); } break; @@ -1526,7 +1530,7 @@ compile_enclosure_node(EnclosureNode* node, regex_t* reg, ScanEnv* env) Node* Then = node->te.Then; Node* Else = node->te.Else; - r = add_opcode(reg, OP_PUSH_STOP_BT); + r = add_opcode(reg, OP_ATOMIC_START); if (r != 0) return r; cond_len = compile_length_tree(cond, reg); @@ -1538,14 +1542,14 @@ compile_enclosure_node(EnclosureNode* node, regex_t* reg, ScanEnv* env) else then_len = 0; - jump_len = cond_len + then_len + SIZE_OP_POP_STOP_BT; + jump_len = cond_len + then_len + SIZE_OP_ATOMIC_END; if (IS_NOT_NULL(Else)) jump_len += SIZE_OP_JUMP; r = add_opcode_rel_addr(reg, OP_PUSH, jump_len); if (r != 0) return r; r = compile_tree(cond, reg, env); if (r != 0) return r; - r = add_opcode(reg, OP_POP_STOP_BT); + r = add_opcode(reg, OP_ATOMIC_END); if (r != 0) return r; if (IS_NOT_NULL(Then)) { @@ -1586,13 +1590,13 @@ compile_length_anchor_node(AnchorNode* node, regex_t* reg) len = SIZE_OP_PREC_READ_START + tlen + SIZE_OP_PREC_READ_END; break; case ANCHOR_PREC_READ_NOT: - len = SIZE_OP_PUSH_PREC_READ_NOT + tlen + SIZE_OP_FAIL_PREC_READ_NOT; + len = SIZE_OP_PREC_READ_NOT_START + tlen + SIZE_OP_PREC_READ_NOT_END; break; case ANCHOR_LOOK_BEHIND: len = SIZE_OP_LOOK_BEHIND + tlen; break; case ANCHOR_LOOK_BEHIND_NOT: - len = SIZE_OP_PUSH_LOOK_BEHIND_NOT + tlen + SIZE_OP_FAIL_LOOK_BEHIND_NOT; + len = SIZE_OP_LOOK_BEHIND_NOT_START + tlen + SIZE_OP_LOOK_BEHIND_NOT_END; break; case ANCHOR_WORD_BOUNDARY: @@ -1670,11 +1674,11 @@ compile_anchor_node(AnchorNode* node, regex_t* reg, ScanEnv* env) case ANCHOR_PREC_READ_NOT: len = compile_length_tree(NODE_ANCHOR_BODY(node), reg); if (len < 0) return len; - r = add_opcode_rel_addr(reg, OP_PUSH_PREC_READ_NOT, len + SIZE_OP_FAIL_PREC_READ_NOT); + r = add_opcode_rel_addr(reg, OP_PREC_READ_NOT_START, len + SIZE_OP_PREC_READ_NOT_END); if (r != 0) return r; r = compile_tree(NODE_ANCHOR_BODY(node), reg, env); if (r != 0) return r; - r = add_opcode(reg, OP_FAIL_PREC_READ_NOT); + r = add_opcode(reg, OP_PREC_READ_NOT_END); break; case ANCHOR_LOOK_BEHIND: @@ -1698,9 +1702,10 @@ compile_anchor_node(AnchorNode* node, regex_t* reg, ScanEnv* env) case ANCHOR_LOOK_BEHIND_NOT: { int n; + len = compile_length_tree(NODE_ANCHOR_BODY(node), reg); - r = add_opcode_rel_addr(reg, OP_PUSH_LOOK_BEHIND_NOT, - len + SIZE_OP_FAIL_LOOK_BEHIND_NOT); + r = add_opcode_rel_addr(reg, OP_LOOK_BEHIND_NOT_START, + len + SIZE_OP_LOOK_BEHIND_NOT_END); if (r != 0) return r; if (node->char_len < 0) { r = get_char_length_tree(NODE_ANCHOR_BODY(node), reg, &n); @@ -1712,7 +1717,7 @@ compile_anchor_node(AnchorNode* node, regex_t* reg, ScanEnv* env) if (r != 0) return r; r = compile_tree(NODE_ANCHOR_BODY(node), reg, env); if (r != 0) return r; - r = add_opcode(reg, OP_FAIL_LOOK_BEHIND_NOT); + r = add_opcode(reg, OP_LOOK_BEHIND_NOT_END); } break; @@ -2203,6 +2208,7 @@ renumber_by_map(Node* node, GroupNumRemap* map) case NODE_ENCLOSURE: { EnclosureNode* en = ENCLOSURE_(node); + r = renumber_by_map(NODE_BODY(node), map); if (r != 0) return r; @@ -2259,6 +2265,7 @@ numbered_ref_check(Node* node) case NODE_ENCLOSURE: { EnclosureNode* en = ENCLOSURE_(node); + r = numbered_ref_check(NODE_BODY(node)); if (r != 0) return r; @@ -2402,6 +2409,7 @@ get_char_length_tree1(Node* node, regex_t* reg, int* len, int level) { StrNode* sn = STR_(node); UChar *s = sn->s; + while (s < sn->end) { s += enclen(reg->enc, s); (*len)++; @@ -2412,6 +2420,7 @@ get_char_length_tree1(Node* node, regex_t* reg, int* len, int level) case NODE_QUANT: { QuantNode* qn = QUANT_(node); + if (qn->lower == qn->upper) { if (qn->upper == 0) { *len = 0; @@ -2444,6 +2453,7 @@ get_char_length_tree1(Node* node, regex_t* reg, int* len, int level) case NODE_ENCLOSURE: { EnclosureNode* en = ENCLOSURE_(node); + switch (en->type) { case ENCLOSURE_MEMORY: #ifdef USE_CALL @@ -2465,6 +2475,7 @@ get_char_length_tree1(Node* node, regex_t* reg, int* len, int level) case ENCLOSURE_IF_ELSE: { int clen, elen; + r = get_char_length_tree1(NODE_BODY(node), reg, &clen, level); if (r == 0) { if (IS_NOT_NULL(en->te.Then)) { @@ -2487,6 +2498,7 @@ get_char_length_tree1(Node* node, regex_t* reg, int* len, int level) } } break; + default: break; } @@ -2566,6 +2578,7 @@ is_exclusive(Node* x, Node* y, regex_t* reg) { int range; CClassNode* xc = CCLASS_(x); + switch (ytype) { case NODE_CTYPE: switch (CTYPE_(y)->ctype) { @@ -2616,8 +2629,7 @@ is_exclusive(Node* x, Node* y, regex_t* reg) for (i = 0; i < SINGLE_BYTE_SIZE; i++) { v = BITSET_AT(xc->bs, i); - if ((v != 0 && !IS_NCCLASS_NOT(xc)) || - (v == 0 && IS_NCCLASS_NOT(xc))) { + if ((v != 0 && !IS_NCCLASS_NOT(xc)) || (v == 0 && IS_NCCLASS_NOT(xc))) { v = BITSET_AT(yc->bs, i); if ((v != 0 && !IS_NCCLASS_NOT(yc)) || (v == 0 && IS_NCCLASS_NOT(yc))) @@ -2644,6 +2656,7 @@ is_exclusive(Node* x, Node* y, regex_t* reg) case NODE_STRING: { StrNode* xs = STR_(x); + if (NODE_STRING_LEN(x) == 0) break; @@ -2687,6 +2700,7 @@ is_exclusive(Node* x, Node* y, regex_t* reg) { UChar *q; StrNode* ys = STR_(y); + len = NODE_STRING_LEN(x); if (len > NODE_STRING_LEN(y)) len = NODE_STRING_LEN(y); if (NODE_STRING_IS_AMBIG(x) || NODE_STRING_IS_AMBIG(y)) { @@ -2700,7 +2714,7 @@ is_exclusive(Node* x, Node* y, regex_t* reg) } } break; - + default: break; } @@ -2925,7 +2939,7 @@ tree_min_len(Node* node, ScanEnv* env) case NODE_STRING: { StrNode* sn = STR_(node); - len = sn->end - sn->s; + len = (int )(sn->end - sn->s); } break; @@ -2972,7 +2986,8 @@ tree_min_len(Node* node, ScanEnv* env) break; case ENCLOSURE_IF_ELSE: { - int elen; + OnigLen elen; + len = tree_min_len(NODE_BODY(node), env); if (IS_NOT_NULL(en->te.Then)) len += tree_min_len(en->te.Then, env); @@ -3029,7 +3044,7 @@ tree_max_len(Node* node, ScanEnv* env) case NODE_STRING: { StrNode* sn = STR_(node); - len = sn->end - sn->s; + len = (OnigLen )(sn->end - sn->s); } break; @@ -3108,7 +3123,8 @@ tree_max_len(Node* node, ScanEnv* env) break; case ENCLOSURE_IF_ELSE: { - int tlen, elen; + OnigLen tlen, elen; + len = tree_max_len(NODE_BODY(node), env); if (IS_NOT_NULL(en->te.Then)) { tlen = tree_max_len(en->te.Then, env); @@ -3655,7 +3671,7 @@ update_string_node_case_fold(regex_t* reg, Node *node) StrNode* sn = STR_(node); end = sn->end; - sbuf_size = (end - sn->s) * 2; + sbuf_size = (int )(end - sn->s) * 2; sbuf = (UChar* )xmalloc(sbuf_size); CHECK_NULL_RETURN_MEMERR(sbuf); ebuf = sbuf + sbuf_size; @@ -3688,8 +3704,7 @@ update_string_node_case_fold(regex_t* reg, Node *node) } static int -expand_case_fold_make_rem_string(Node** rnode, UChar *s, UChar *end, - regex_t* reg) +expand_case_fold_make_rem_string(Node** rnode, UChar *s, UChar *end, regex_t* reg) { int r; Node *node; @@ -3711,8 +3726,8 @@ expand_case_fold_make_rem_string(Node** rnode, UChar *s, UChar *end, static int expand_case_fold_string_alt(int item_num, OnigCaseFoldCodeItem items[], - UChar *p, int slen, UChar *end, - regex_t* reg, Node **rnode) + UChar *p, int slen, UChar *end, regex_t* reg, + Node **rnode) { int r, i, j, len, varlen; Node *anode, *var_anode, *snode, *xnode, *an; @@ -3843,8 +3858,8 @@ expand_case_fold_string(Node* node, regex_t* reg) alt_num = 1; p = start; while (p < end) { - n = ONIGENC_GET_CASE_FOLD_CODES_BY_STR(reg->enc, reg->case_fold_flag, - p, end, items); + n = ONIGENC_GET_CASE_FOLD_CODES_BY_STR(reg->enc, reg->case_fold_flag, p, end, + items); if (n < 0) { r = n; goto err; @@ -3993,11 +4008,11 @@ setup_comb_exp_check(Node* node, int state, ScanEnv* env) case NODE_QUANT: { + int var_num; int child_state = state; int add_state = 0; QuantNode* qn = QUANT_(node); Node* target = NODE_QUANT_BODY(qn); - int var_num; if (! IS_REPEAT_INFINITE(qn->upper)) { if (qn->upper > 1) { @@ -4203,7 +4218,7 @@ setup_call_node_call(CallNode* cn, ScanEnv* env, int state) if (env->num_named > 0 && IS_SYNTAX_BV(env->syntax, ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP) && - !ONIG_IS_OPTION_ON(env->options, ONIG_OPTION_CAPTURE_GROUP)) { + ! ONIG_IS_OPTION_ON(env->options, ONIG_OPTION_CAPTURE_GROUP)) { return ONIGERR_NUMBERED_BACKREF_OR_CALL_NOT_ALLOWED; } @@ -4904,11 +4919,11 @@ setup_tree(Node* node, regex_t* reg, int state, ScanEnv* env) /* set skip map for Boyer-Moore search */ static int set_bm_skip(UChar* s, UChar* end, OnigEncoding enc ARG_UNUSED, - UChar skip[], int** int_skip) + UChar skip[], int** int_skip) { int i, len; - len = end - s; + len = (int )(end - s); if (len < ONIG_CHAR_TABLE_SIZE) { for (i = 0; i < ONIG_CHAR_TABLE_SIZE; i++) skip[i] = len; @@ -4944,38 +4959,34 @@ typedef struct { } OptEnv; typedef struct { - int left_anchor; - int right_anchor; -} OptAncInfo; + int left; + int right; +} OptAnc; typedef struct { - MinMaxLen mmd; /* info position */ - OptAncInfo anc; - + MinMaxLen mmd; /* info position */ + OptAnc anc; int reach_end; int ignore_case; int len; UChar s[OPT_EXACT_MAXLEN]; -} OptExactInfo; +} OptExact; typedef struct { - MinMaxLen mmd; /* info position */ - OptAncInfo anc; - + MinMaxLen mmd; /* info position */ + OptAnc anc; int value; /* weighted value */ UChar map[ONIG_CHAR_TABLE_SIZE]; -} OptMapInfo; +} OptMap; typedef struct { - MinMaxLen len; - - OptAncInfo anc; - OptExactInfo exb; /* boundary */ - OptExactInfo exm; /* middle */ - OptExactInfo expr; /* prec read (?=...) */ - - OptMapInfo map; /* boundary */ -} NodeOptInfo; + MinMaxLen len; + OptAnc anc; + OptExact exb; /* boundary */ + OptExact exm; /* middle */ + OptExact expr; /* prec read (?=...) */ + OptMap map; /* boundary */ +} NodeOpt; static int @@ -5054,7 +5065,6 @@ is_equal_mml(MinMaxLen* a, MinMaxLen* b) return (a->min == b->min && a->max == b->max) ? 1 : 0; } - static void set_mml(MinMaxLen* mml, OnigLen min, OnigLen max) { @@ -5082,15 +5092,6 @@ add_mml(MinMaxLen* to, MinMaxLen* from) to->max = distance_add(to->max, from->max); } -#if 0 -static void -add_len_mml(MinMaxLen* to, OnigLen len) -{ - to->min = distance_add(to->min, len); - to->max = distance_add(to->max, len); -} -#endif - static void alt_merge_mml(MinMaxLen* to, MinMaxLen* from) { @@ -5105,42 +5106,42 @@ copy_opt_env(OptEnv* to, OptEnv* from) } static void -clear_opt_anc_info(OptAncInfo* anc) +clear_opt_anc_info(OptAnc* anc) { - anc->left_anchor = 0; - anc->right_anchor = 0; + anc->left = 0; + anc->right = 0; } static void -copy_opt_anc_info(OptAncInfo* to, OptAncInfo* from) +copy_opt_anc_info(OptAnc* to, OptAnc* from) { *to = *from; } static void -concat_opt_anc_info(OptAncInfo* to, OptAncInfo* left, OptAncInfo* right, - OnigLen left_len, OnigLen right_len) +concat_opt_anc_info(OptAnc* to, OptAnc* left, OptAnc* right, + OnigLen left_len, OnigLen right_len) { clear_opt_anc_info(to); - to->left_anchor = left->left_anchor; + to->left = left->left; if (left_len == 0) { - to->left_anchor |= right->left_anchor; + to->left |= right->left; } - to->right_anchor = right->right_anchor; + to->right = right->right; if (right_len == 0) { - to->right_anchor |= left->right_anchor; + to->right |= left->right; } else { - to->right_anchor |= (left->right_anchor & ANCHOR_PREC_READ_NOT); + to->right |= (left->right & ANCHOR_PREC_READ_NOT); } } static int -is_left_anchor(int anc) +is_left(int anc) { - if (anc == ANCHOR_END_BUF || anc == ANCHOR_SEMI_END_BUF || + if (anc == ANCHOR_END_BUF || anc == ANCHOR_SEMI_END_BUF || anc == ANCHOR_END_LINE || anc == ANCHOR_PREC_READ || anc == ANCHOR_PREC_READ_NOT) return 0; @@ -5149,46 +5150,46 @@ is_left_anchor(int anc) } static int -is_set_opt_anc_info(OptAncInfo* to, int anc) +is_set_opt_anc_info(OptAnc* to, int anc) { - if ((to->left_anchor & anc) != 0) return 1; + if ((to->left & anc) != 0) return 1; - return ((to->right_anchor & anc) != 0 ? 1 : 0); + return ((to->right & anc) != 0 ? 1 : 0); } static void -add_opt_anc_info(OptAncInfo* to, int anc) +add_opt_anc_info(OptAnc* to, int anc) { - if (is_left_anchor(anc)) - to->left_anchor |= anc; + if (is_left(anc)) + to->left |= anc; else - to->right_anchor |= anc; + to->right |= anc; } static void -remove_opt_anc_info(OptAncInfo* to, int anc) +remove_opt_anc_info(OptAnc* to, int anc) { - if (is_left_anchor(anc)) - to->left_anchor &= ~anc; + if (is_left(anc)) + to->left &= ~anc; else - to->right_anchor &= ~anc; + to->right &= ~anc; } static void -alt_merge_opt_anc_info(OptAncInfo* to, OptAncInfo* add) +alt_merge_opt_anc_info(OptAnc* to, OptAnc* add) { - to->left_anchor &= add->left_anchor; - to->right_anchor &= add->right_anchor; + to->left &= add->left; + to->right &= add->right; } static int -is_full_opt_exact_info(OptExactInfo* ex) +is_full_opt_exact(OptExact* ex) { return (ex->len >= OPT_EXACT_MAXLEN ? 1 : 0); } static void -clear_opt_exact_info(OptExactInfo* ex) +clear_opt_exact(OptExact* ex) { clear_mml(&ex->mmd); clear_opt_anc_info(&ex->anc); @@ -5199,17 +5200,17 @@ clear_opt_exact_info(OptExactInfo* ex) } static void -copy_opt_exact_info(OptExactInfo* to, OptExactInfo* from) +copy_opt_exact(OptExact* to, OptExact* from) { *to = *from; } static void -concat_opt_exact_info(OptExactInfo* to, OptExactInfo* add, OnigEncoding enc) +concat_opt_exact(OptExact* to, OptExact* add, OnigEncoding enc) { int i, j, len; UChar *p, *end; - OptAncInfo tanc; + OptAnc tanc; if (! to->ignore_case && add->ignore_case) { if (to->len >= add->len) return ; /* avoid */ @@ -5230,13 +5231,13 @@ concat_opt_exact_info(OptExactInfo* to, OptExactInfo* add, OnigEncoding enc) to->reach_end = (p == end ? add->reach_end : 0); concat_opt_anc_info(&tanc, &to->anc, &add->anc, 1, 1); - if (! to->reach_end) tanc.right_anchor = 0; + if (! to->reach_end) tanc.right = 0; copy_opt_anc_info(&to->anc, &tanc); } static void -concat_opt_exact_info_str(OptExactInfo* to, UChar* s, UChar* end, - int raw ARG_UNUSED, OnigEncoding enc) +concat_opt_exact_str(OptExact* to, UChar* s, UChar* end, + int raw ARG_UNUSED, OnigEncoding enc) { int i, j, len; UChar *p; @@ -5252,17 +5253,17 @@ concat_opt_exact_info_str(OptExactInfo* to, UChar* s, UChar* end, } static void -alt_merge_opt_exact_info(OptExactInfo* to, OptExactInfo* add, OptEnv* env) +alt_merge_opt_exact(OptExact* to, OptExact* add, OptEnv* env) { int i, j, len; if (add->len == 0 || to->len == 0) { - clear_opt_exact_info(to); + clear_opt_exact(to); return ; } if (! is_equal_mml(&to->mmd, &add->mmd)) { - clear_opt_exact_info(to); + clear_opt_exact(to); return ; } @@ -5284,11 +5285,11 @@ alt_merge_opt_exact_info(OptExactInfo* to, OptExactInfo* add, OptEnv* env) to->ignore_case |= add->ignore_case; alt_merge_opt_anc_info(&to->anc, &add->anc); - if (! to->reach_end) to->anc.right_anchor = 0; + if (! to->reach_end) to->anc.right = 0; } static void -select_opt_exact_info(OnigEncoding enc, OptExactInfo* now, OptExactInfo* alt) +select_opt_exact(OnigEncoding enc, OptExact* now, OptExact* alt) { int v1, v2; @@ -5299,7 +5300,7 @@ select_opt_exact_info(OnigEncoding enc, OptExactInfo* now, OptExactInfo* alt) return ; } else if (v1 == 0) { - copy_opt_exact_info(now, alt); + copy_opt_exact(now, alt); return ; } else if (v1 <= 2 && v2 <= 2) { @@ -5315,13 +5316,13 @@ select_opt_exact_info(OnigEncoding enc, OptExactInfo* now, OptExactInfo* alt) if (alt->ignore_case == 0) v2 *= 2; if (comp_distance_value(&now->mmd, &alt->mmd, v1, v2) > 0) - copy_opt_exact_info(now, alt); + copy_opt_exact(now, alt); } static void -clear_opt_map_info(OptMapInfo* map) +clear_opt_map(OptMap* map) { - static const OptMapInfo clean_info = { + static const OptMap clean_info = { {0, 0}, {0, 0}, 0, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -5343,17 +5344,17 @@ clear_opt_map_info(OptMapInfo* map) } }; - xmemcpy(map, &clean_info, sizeof(OptMapInfo)); + xmemcpy(map, &clean_info, sizeof(OptMap)); } static void -copy_opt_map_info(OptMapInfo* to, OptMapInfo* from) +copy_opt_map(OptMap* to, OptMap* from) { *to = *from; } static void -add_char_opt_map_info(OptMapInfo* map, UChar c, OnigEncoding enc) +add_char_opt_map(OptMap* map, UChar c, OnigEncoding enc) { if (map->map[c] == 0) { map->map[c] = 1; @@ -5362,14 +5363,14 @@ add_char_opt_map_info(OptMapInfo* map, UChar c, OnigEncoding enc) } static int -add_char_amb_opt_map_info(OptMapInfo* map, UChar* p, UChar* end, - OnigEncoding enc, OnigCaseFoldType case_fold_flag) +add_char_amb_opt_map(OptMap* map, UChar* p, UChar* end, + OnigEncoding enc, OnigCaseFoldType case_fold_flag) { OnigCaseFoldCodeItem items[ONIGENC_GET_CASE_FOLD_CODES_MAX_NUM]; UChar buf[ONIGENC_CODE_TO_MBC_MAXLEN]; int i, n; - add_char_opt_map_info(map, p[0], enc); + add_char_opt_map(map, p[0], enc); case_fold_flag = DISABLE_CASE_FOLD_MULTI_CHAR(case_fold_flag); n = ONIGENC_GET_CASE_FOLD_CODES_BY_STR(enc, case_fold_flag, p, end, items); @@ -5377,14 +5378,14 @@ add_char_amb_opt_map_info(OptMapInfo* map, UChar* p, UChar* end, for (i = 0; i < n; i++) { ONIGENC_CODE_TO_MBC(enc, items[i].code[0], buf); - add_char_opt_map_info(map, buf[0], enc); + add_char_opt_map(map, buf[0], enc); } return 0; } static void -select_opt_map_info(OptMapInfo* now, OptMapInfo* alt) +select_opt_map(OptMap* now, OptMap* alt) { static int z = 1<<15; /* 32768: something big value */ @@ -5392,18 +5393,18 @@ select_opt_map_info(OptMapInfo* now, OptMapInfo* alt) if (alt->value == 0) return ; if (now->value == 0) { - copy_opt_map_info(now, alt); + copy_opt_map(now, alt); return ; } v1 = z / now->value; v2 = z / alt->value; if (comp_distance_value(&now->mmd, &alt->mmd, v1, v2) > 0) - copy_opt_map_info(now, alt); + copy_opt_map(now, alt); } static int -comp_opt_exact_or_map_info(OptExactInfo* e, OptMapInfo* m) +comp_opt_exact_or_map(OptExact* e, OptMap* m) { #define COMP_EM_BASE 20 int ve, vm; @@ -5416,14 +5417,14 @@ comp_opt_exact_or_map_info(OptExactInfo* e, OptMapInfo* m) } static void -alt_merge_opt_map_info(OnigEncoding enc, OptMapInfo* to, OptMapInfo* add) +alt_merge_opt_map(OnigEncoding enc, OptMap* to, OptMap* add) { int i, val; /* if (! is_equal_mml(&to->mmd, &add->mmd)) return ; */ if (to->value == 0) return ; if (add->value == 0 || to->mmd.max < add->mmd.min) { - clear_opt_map_info(to); + clear_opt_map(to); return ; } @@ -5443,7 +5444,7 @@ alt_merge_opt_map_info(OnigEncoding enc, OptMapInfo* to, OptMapInfo* add) } static void -set_bound_node_opt_info(NodeOptInfo* opt, MinMaxLen* mmd) +set_bound_node_opt_info(NodeOpt* opt, MinMaxLen* mmd) { copy_mml(&(opt->exb.mmd), mmd); copy_mml(&(opt->expr.mmd), mmd); @@ -5451,40 +5452,39 @@ set_bound_node_opt_info(NodeOptInfo* opt, MinMaxLen* mmd) } static void -clear_node_opt_info(NodeOptInfo* opt) +clear_node_opt_info(NodeOpt* opt) { clear_mml(&opt->len); clear_opt_anc_info(&opt->anc); - clear_opt_exact_info(&opt->exb); - clear_opt_exact_info(&opt->exm); - clear_opt_exact_info(&opt->expr); - clear_opt_map_info(&opt->map); + clear_opt_exact(&opt->exb); + clear_opt_exact(&opt->exm); + clear_opt_exact(&opt->expr); + clear_opt_map(&opt->map); } static void -copy_node_opt_info(NodeOptInfo* to, NodeOptInfo* from) +copy_node_opt_info(NodeOpt* to, NodeOpt* from) { *to = *from; } static void -concat_left_node_opt_info(OnigEncoding enc, NodeOptInfo* to, NodeOptInfo* add) +concat_left_node_opt_info(OnigEncoding enc, NodeOpt* to, NodeOpt* add) { int exb_reach, exm_reach; - OptAncInfo tanc; + OptAnc tanc; concat_opt_anc_info(&tanc, &to->anc, &add->anc, to->len.max, add->len.max); copy_opt_anc_info(&to->anc, &tanc); if (add->exb.len > 0 && to->len.max == 0) { - concat_opt_anc_info(&tanc, &to->anc, &add->exb.anc, - to->len.max, add->len.max); + concat_opt_anc_info(&tanc, &to->anc, &add->exb.anc, to->len.max, add->len.max); copy_opt_anc_info(&add->exb.anc, &tanc); } if (add->map.value > 0 && to->len.max == 0) { if (add->map.mmd.max == 0) - add->map.anc.left_anchor |= to->anc.left_anchor; + add->map.anc.left |= to->anc.left; } exb_reach = to->exb.reach_end; @@ -5495,16 +5495,16 @@ concat_left_node_opt_info(OnigEncoding enc, NodeOptInfo* to, NodeOptInfo* add) if (add->exb.len > 0) { if (exb_reach) { - concat_opt_exact_info(&to->exb, &add->exb, enc); - clear_opt_exact_info(&add->exb); + concat_opt_exact(&to->exb, &add->exb, enc); + clear_opt_exact(&add->exb); } else if (exm_reach) { - concat_opt_exact_info(&to->exm, &add->exb, enc); - clear_opt_exact_info(&add->exb); + concat_opt_exact(&to->exm, &add->exb, enc); + clear_opt_exact(&add->exb); } } - select_opt_exact_info(enc, &to->exm, &add->exb); - select_opt_exact_info(enc, &to->exm, &add->exm); + select_opt_exact(enc, &to->exm, &add->exb); + select_opt_exact(enc, &to->exm, &add->exm); if (to->expr.len > 0) { if (add->len.max > 0) { @@ -5512,28 +5512,27 @@ concat_left_node_opt_info(OnigEncoding enc, NodeOptInfo* to, NodeOptInfo* add) to->expr.len = add->len.max; if (to->expr.mmd.max == 0) - select_opt_exact_info(enc, &to->exb, &to->expr); + select_opt_exact(enc, &to->exb, &to->expr); else - select_opt_exact_info(enc, &to->exm, &to->expr); + select_opt_exact(enc, &to->exm, &to->expr); } } else if (add->expr.len > 0) { - copy_opt_exact_info(&to->expr, &add->expr); + copy_opt_exact(&to->expr, &add->expr); } - select_opt_map_info(&to->map, &add->map); - + select_opt_map(&to->map, &add->map); add_mml(&to->len, &add->len); } static void -alt_merge_node_opt_info(NodeOptInfo* to, NodeOptInfo* add, OptEnv* env) +alt_merge_node_opt_info(NodeOpt* to, NodeOpt* add, OptEnv* env) { - alt_merge_opt_anc_info (&to->anc, &add->anc); - alt_merge_opt_exact_info(&to->exb, &add->exb, env); - alt_merge_opt_exact_info(&to->exm, &add->exm, env); - alt_merge_opt_exact_info(&to->expr, &add->expr, env); - alt_merge_opt_map_info(env->enc, &to->map, &add->map); + alt_merge_opt_anc_info(&to->anc, &add->anc); + alt_merge_opt_exact(&to->exb, &add->exb, env); + alt_merge_opt_exact(&to->exm, &add->exm, env); + alt_merge_opt_exact(&to->expr, &add->expr, env); + alt_merge_opt_map(env->enc, &to->map, &add->map); alt_merge_mml(&to->len, &add->len); } @@ -5542,10 +5541,13 @@ alt_merge_node_opt_info(NodeOptInfo* to, NodeOptInfo* add, OptEnv* env) #define MAX_NODE_OPT_INFO_REF_COUNT 5 static int -optimize_node_left(Node* node, NodeOptInfo* opt, OptEnv* env) +optimize_nodes(Node* node, NodeOpt* opt, OptEnv* env) { + OnigEncoding enc; + int i; int r = 0; + enc = env->enc; clear_node_opt_info(opt); set_bound_node_opt_info(opt, &env->mmd); @@ -5553,15 +5555,15 @@ optimize_node_left(Node* node, NodeOptInfo* opt, OptEnv* env) case NODE_LIST: { OptEnv nenv; - NodeOptInfo nopt; + NodeOpt nopt; Node* nd = node; copy_opt_env(&nenv, env); do { - r = optimize_node_left(NODE_CAR(nd), &nopt, &nenv); + r = optimize_nodes(NODE_CAR(nd), &nopt, &nenv); if (r == 0) { add_mml(&nenv.mmd, &nopt.len); - concat_left_node_opt_info(env->enc, opt, &nopt); + concat_left_node_opt_info(enc, opt, &nopt); } } while (r == 0 && IS_NOT_NULL(nd = NODE_CDR(nd))); } @@ -5569,11 +5571,11 @@ optimize_node_left(Node* node, NodeOptInfo* opt, OptEnv* env) case NODE_ALT: { - NodeOptInfo nopt; + NodeOpt nopt; Node* nd = node; do { - r = optimize_node_left(NODE_CAR(nd), &nopt, env); + r = optimize_nodes(NODE_CAR(nd), &nopt, env); if (r == 0) { if (nd == node) copy_node_opt_info(opt, &nopt); else alt_merge_node_opt_info(opt, &nopt, env); @@ -5585,14 +5587,14 @@ optimize_node_left(Node* node, NodeOptInfo* opt, OptEnv* env) case NODE_STRING: { StrNode* sn = STR_(node); - int slen = sn->end - sn->s; + int slen = (int )(sn->end - sn->s); int is_raw = NODE_STRING_IS_RAW(node); if (! NODE_STRING_IS_AMBIG(node)) { - concat_opt_exact_info_str(&opt->exb, sn->s, sn->end, - NODE_STRING_IS_RAW(node), env->enc); + concat_opt_exact_str(&opt->exb, sn->s, sn->end, + NODE_STRING_IS_RAW(node), enc); if (slen > 0) { - add_char_opt_map_info(&opt->map, *(sn->s), env->enc); + add_char_opt_map(&opt->map, *(sn->s), enc); } set_mml(&opt->len, slen, slen); } @@ -5600,17 +5602,16 @@ optimize_node_left(Node* node, NodeOptInfo* opt, OptEnv* env) int max; if (NODE_STRING_IS_DONT_GET_OPT_INFO(node)) { - int n = onigenc_strlen(env->enc, sn->s, sn->end); - max = ONIGENC_MBC_MAXLEN_DIST(env->enc) * n; + int n = onigenc_strlen(enc, sn->s, sn->end); + max = ONIGENC_MBC_MAXLEN_DIST(enc) * n; } else { - concat_opt_exact_info_str(&opt->exb, sn->s, sn->end, - is_raw, env->enc); + concat_opt_exact_str(&opt->exb, sn->s, sn->end, is_raw, enc); opt->exb.ignore_case = 1; if (slen > 0) { - r = add_char_amb_opt_map_info(&opt->map, sn->s, sn->end, - env->enc, env->case_fold_flag); + r = add_char_amb_opt_map(&opt->map, sn->s, sn->end, + enc, env->case_fold_flag); if (r != 0) break; } @@ -5627,22 +5628,22 @@ optimize_node_left(Node* node, NodeOptInfo* opt, OptEnv* env) case NODE_CCLASS: { - int i, z; + int z; CClassNode* cc = CCLASS_(node); /* no need to check ignore case. (set in setup_tree()) */ if (IS_NOT_NULL(cc->mbuf) || IS_NCCLASS_NOT(cc)) { - OnigLen min = ONIGENC_MBC_MINLEN(env->enc); - OnigLen max = ONIGENC_MBC_MAXLEN_DIST(env->enc); + OnigLen min = ONIGENC_MBC_MINLEN(enc); + OnigLen max = ONIGENC_MBC_MAXLEN_DIST(enc); set_mml(&opt->len, min, max); } else { for (i = 0; i < SINGLE_BYTE_SIZE; i++) { z = BITSET_AT(cc->bs, i); - if ((z && !IS_NCCLASS_NOT(cc)) || (!z && IS_NCCLASS_NOT(cc))) { - add_char_opt_map_info(&opt->map, (UChar )i, env->enc); + if ((z && ! IS_NCCLASS_NOT(cc)) || (! z && IS_NCCLASS_NOT(cc))) { + add_char_opt_map(&opt->map, (UChar )i, enc); } } set_mml(&opt->len, 1, 1); @@ -5652,10 +5653,10 @@ optimize_node_left(Node* node, NodeOptInfo* opt, OptEnv* env) case NODE_CTYPE: { - int i, min, max; + int min, max; int range; - max = ONIGENC_MBC_MAXLEN_DIST(env->enc); + max = ONIGENC_MBC_MAXLEN_DIST(enc); if (max == 1) { min = 1; @@ -5668,18 +5669,18 @@ optimize_node_left(Node* node, NodeOptInfo* opt, OptEnv* env) range = CTYPE_(node)->ascii_mode != 0 ? 128 : SINGLE_BYTE_SIZE; if (CTYPE_(node)->not != 0) { for (i = 0; i < range; i++) { - if (! ONIGENC_IS_CODE_WORD(env->enc, i)) { - add_char_opt_map_info(&opt->map, (UChar )i, env->enc); + if (! ONIGENC_IS_CODE_WORD(enc, i)) { + add_char_opt_map(&opt->map, (UChar )i, enc); } } for (i = range; i < SINGLE_BYTE_SIZE; i++) { - add_char_opt_map_info(&opt->map, (UChar )i, env->enc); + add_char_opt_map(&opt->map, (UChar )i, enc); } } else { for (i = 0; i < range; i++) { - if (ONIGENC_IS_CODE_WORD(env->enc, i)) { - add_char_opt_map_info(&opt->map, (UChar )i, env->enc); + if (ONIGENC_IS_CODE_WORD(enc, i)) { + add_char_opt_map(&opt->map, (UChar )i, enc); } } } @@ -5687,7 +5688,7 @@ optimize_node_left(Node* node, NodeOptInfo* opt, OptEnv* env) } } else { - min = ONIGENC_MBC_MINLEN(env->enc); + min = ONIGENC_MBC_MINLEN(enc); } set_mml(&opt->len, min, max); } @@ -5708,19 +5709,19 @@ optimize_node_left(Node* node, NodeOptInfo* opt, OptEnv* env) case ANCHOR_PREC_READ: { - NodeOptInfo nopt; + NodeOpt nopt; - r = optimize_node_left(NODE_BODY(node), &nopt, env); + r = optimize_nodes(NODE_BODY(node), &nopt, env); if (r == 0) { if (nopt.exb.len > 0) - copy_opt_exact_info(&opt->expr, &nopt.exb); + copy_opt_exact(&opt->expr, &nopt.exb); else if (nopt.exm.len > 0) - copy_opt_exact_info(&opt->expr, &nopt.exm); + copy_opt_exact(&opt->expr, &nopt.exm); opt->expr.reach_end = 0; if (nopt.map.value > 0) - copy_opt_map_info(&opt->map, &nopt.map); + copy_opt_map(&opt->map, &nopt.map); } } break; @@ -5732,7 +5733,6 @@ optimize_node_left(Node* node, NodeOptInfo* opt, OptEnv* env) case NODE_BACKREF: if (! NODE_IS_CHECKER(node)) { - int i; int* backs; OnigLen min, max, tmin, tmax; MemEnv* mem_env = SCANENV_MEMENV(env->scan_env); @@ -5762,7 +5762,7 @@ optimize_node_left(Node* node, NodeOptInfo* opt, OptEnv* env) else { OnigOptionType save = env->options; env->options = ENCLOSURE_(NODE_BODY(node))->o.options; - r = optimize_node_left(NODE_BODY(node), opt, env); + r = optimize_nodes(NODE_BODY(node), opt, env); env->options = save; } break; @@ -5770,12 +5770,11 @@ optimize_node_left(Node* node, NodeOptInfo* opt, OptEnv* env) case NODE_QUANT: { - int i; OnigLen min, max; - NodeOptInfo nopt; + NodeOpt nopt; QuantNode* qn = QUANT_(node); - r = optimize_node_left(NODE_BODY(node), &nopt, env); + r = optimize_nodes(NODE_BODY(node), &nopt, env); if (r != 0) break; if (qn->lower == 0 && IS_REPEAT_INFINITE(qn->upper)) { @@ -5792,13 +5791,10 @@ optimize_node_left(Node* node, NodeOptInfo* opt, OptEnv* env) copy_node_opt_info(opt, &nopt); if (nopt.exb.len > 0) { if (nopt.exb.reach_end) { - for (i = 2; i <= qn->lower && - ! is_full_opt_exact_info(&opt->exb); i++) { - concat_opt_exact_info(&opt->exb, &nopt.exb, env->enc); - } - if (i < qn->lower) { - opt->exb.reach_end = 0; + for (i = 2; i <= qn->lower && ! is_full_opt_exact(&opt->exb); i++) { + concat_opt_exact(&opt->exb, &nopt.exb, enc); } + if (i < qn->lower) opt->exb.reach_end = 0; } } @@ -5831,7 +5827,7 @@ optimize_node_left(Node* node, NodeOptInfo* opt, OptEnv* env) OnigOptionType save = env->options; env->options = en->o.options; - r = optimize_node_left(NODE_BODY(node), opt, env); + r = optimize_nodes(NODE_BODY(node), opt, env); env->options = save; } break; @@ -5851,8 +5847,7 @@ optimize_node_left(Node* node, NodeOptInfo* opt, OptEnv* env) else #endif { - r = optimize_node_left(NODE_BODY(node), opt, env); - + r = optimize_nodes(NODE_BODY(node), opt, env); if (is_set_opt_anc_info(&opt->anc, ANCHOR_ANYCHAR_STAR_MASK)) { if (MEM_STATUS_AT0(env->scan_env->backrefed_mem, en->m.regnum)) remove_opt_anc_info(&opt->anc, ANCHOR_ANYCHAR_STAR_MASK); @@ -5861,28 +5856,28 @@ optimize_node_left(Node* node, NodeOptInfo* opt, OptEnv* env) break; case ENCLOSURE_STOP_BACKTRACK: - r = optimize_node_left(NODE_BODY(node), opt, env); + r = optimize_nodes(NODE_BODY(node), opt, env); break; case ENCLOSURE_IF_ELSE: { OptEnv nenv; - NodeOptInfo nopt; + NodeOpt nopt; copy_opt_env(&nenv, env); - r = optimize_node_left(NODE_ENCLOSURE_BODY(en), &nopt, &nenv); + r = optimize_nodes(NODE_ENCLOSURE_BODY(en), &nopt, &nenv); if (r == 0) { add_mml(&nenv.mmd, &nopt.len); - concat_left_node_opt_info(env->enc, opt, &nopt); + concat_left_node_opt_info(enc, opt, &nopt); if (IS_NOT_NULL(en->te.Then)) { - r = optimize_node_left(en->te.Then, &nopt, &nenv); + r = optimize_nodes(en->te.Then, &nopt, &nenv); if (r == 0) { - concat_left_node_opt_info(env->enc, opt, &nopt); + concat_left_node_opt_info(enc, opt, &nopt); } } if (IS_NOT_NULL(en->te.Else)) { - r = optimize_node_left(en->te.Else, &nopt, env); + r = optimize_nodes(en->te.Else, &nopt, env); if (r == 0) alt_merge_node_opt_info(opt, &nopt, env); } @@ -5898,7 +5893,7 @@ optimize_node_left(Node* node, NodeOptInfo* opt, OptEnv* env) default: #ifdef ONIG_DEBUG - fprintf(stderr, "optimize_node_left: undefined node type %d\n", NODE_TYPE(node)); + fprintf(stderr, "optimize_nodes: undefined node type %d\n", NODE_TYPE(node)); #endif r = ONIGERR_TYPE_BUG; break; @@ -5908,7 +5903,7 @@ optimize_node_left(Node* node, NodeOptInfo* opt, OptEnv* env) } static int -set_optimize_exact_info(regex_t* reg, OptExactInfo* e) +set_optimize_exact(regex_t* reg, OptExact* e) { int r; @@ -5933,11 +5928,11 @@ set_optimize_exact_info(regex_t* reg, OptExactInfo* e) if (e->len >= 3 || (e->len >= 2 && allow_reverse)) { r = set_bm_skip(reg->exact, reg->exact_end, reg->enc, - reg->map, &(reg->int_map)); + reg->map, &(reg->int_map)); if (r != 0) return r; reg->optimize = (allow_reverse != 0 - ? ONIG_OPTIMIZE_EXACT_BM : ONIG_OPTIMIZE_EXACT_BM_NOT_REV); + ? ONIG_OPTIMIZE_EXACT_BM : ONIG_OPTIMIZE_EXACT_BM_NOT_REV); } else { reg->optimize = ONIG_OPTIMIZE_EXACT; @@ -5948,14 +5943,14 @@ set_optimize_exact_info(regex_t* reg, OptExactInfo* e) reg->dmax = e->mmd.max; if (reg->dmin != INFINITE_LEN) { - reg->threshold_len = reg->dmin + (reg->exact_end - reg->exact); + reg->threshold_len = reg->dmin + (int )(reg->exact_end - reg->exact); } return 0; } static void -set_optimize_map_info(regex_t* reg, OptMapInfo* m) +set_optimize_map(regex_t* reg, OptMap* m) { int i; @@ -5972,10 +5967,10 @@ set_optimize_map_info(regex_t* reg, OptMapInfo* m) } static void -set_sub_anchor(regex_t* reg, OptAncInfo* anc) +set_sub_anchor(regex_t* reg, OptAnc* anc) { - reg->sub_anchor |= anc->left_anchor & ANCHOR_BEGIN_LINE; - reg->sub_anchor |= anc->right_anchor & ANCHOR_END_LINE; + reg->sub_anchor |= anc->left & ANCHOR_BEGIN_LINE; + reg->sub_anchor |= anc->right & ANCHOR_END_LINE; } #if defined(ONIG_DEBUG_COMPILE) || defined(ONIG_DEBUG_MATCH) @@ -5985,28 +5980,27 @@ static void print_optimize_info(FILE* f, regex_t* reg); static int set_optimize_info_from_tree(Node* node, regex_t* reg, ScanEnv* scan_env) { - int r; - NodeOptInfo opt; + NodeOpt opt; OptEnv env; env.enc = reg->enc; env.options = reg->options; env.case_fold_flag = reg->case_fold_flag; - env.scan_env = scan_env; + env.scan_env = scan_env; clear_mml(&env.mmd); - r = optimize_node_left(node, &opt, &env); + r = optimize_nodes(node, &opt, &env); if (r != 0) return r; - reg->anchor = opt.anc.left_anchor & (ANCHOR_BEGIN_BUF | + reg->anchor = opt.anc.left & (ANCHOR_BEGIN_BUF | ANCHOR_BEGIN_POSITION | ANCHOR_ANYCHAR_STAR | ANCHOR_ANYCHAR_STAR_ML | ANCHOR_LOOK_BEHIND); - if ((opt.anc.left_anchor & (ANCHOR_LOOK_BEHIND | ANCHOR_PREC_READ_NOT)) != 0) + if ((opt.anc.left & (ANCHOR_LOOK_BEHIND | ANCHOR_PREC_READ_NOT)) != 0) reg->anchor &= ~ANCHOR_ANYCHAR_STAR_ML; - reg->anchor |= opt.anc.right_anchor & (ANCHOR_END_BUF | ANCHOR_SEMI_END_BUF | + reg->anchor |= opt.anc.right & (ANCHOR_END_BUF | ANCHOR_SEMI_END_BUF | ANCHOR_PREC_READ_NOT); if (reg->anchor & (ANCHOR_END_BUF | ANCHOR_SEMI_END_BUF)) { @@ -6015,25 +6009,24 @@ set_optimize_info_from_tree(Node* node, regex_t* reg, ScanEnv* scan_env) } if (opt.exb.len > 0 || opt.exm.len > 0) { - select_opt_exact_info(reg->enc, &opt.exb, &opt.exm); - if (opt.map.value > 0 && - comp_opt_exact_or_map_info(&opt.exb, &opt.map) > 0) { + select_opt_exact(reg->enc, &opt.exb, &opt.exm); + if (opt.map.value > 0 && comp_opt_exact_or_map(&opt.exb, &opt.map) > 0) { goto set_map; } else { - r = set_optimize_exact_info(reg, &opt.exb); + r = set_optimize_exact(reg, &opt.exb); set_sub_anchor(reg, &opt.exb.anc); } } else if (opt.map.value > 0) { set_map: - set_optimize_map_info(reg, &opt.map); + set_optimize_map(reg, &opt.map); set_sub_anchor(reg, &opt.map.anc); } else { - reg->sub_anchor |= opt.anc.left_anchor & ANCHOR_BEGIN_LINE; + reg->sub_anchor |= opt.anc.left & ANCHOR_BEGIN_LINE; if (opt.len.max == 0) - reg->sub_anchor |= opt.anc.right_anchor & ANCHOR_END_LINE; + reg->sub_anchor |= opt.anc.right & ANCHOR_END_LINE; } #if defined(ONIG_DEBUG_COMPILE) || defined(ONIG_DEBUG_MATCH) @@ -6061,7 +6054,7 @@ clear_optimize_info(regex_t* reg) #ifdef ONIG_DEBUG static void print_enc_string(FILE* fp, OnigEncoding enc, - const UChar *s, const UChar *end) + const UChar *s, const UChar *end) { fprintf(fp, "\nPATTERN: /"); @@ -6261,7 +6254,7 @@ static void print_tree P_((FILE* f, Node* node)); extern int onig_compile(regex_t* reg, const UChar* pattern, const UChar* pattern_end, - OnigErrorInfo* einfo) + OnigErrorInfo* einfo) { #define COMPILE_INIT_SIZE 20 @@ -6280,7 +6273,7 @@ onig_compile(regex_t* reg, const UChar* pattern, const UChar* pattern_end, #endif if (reg->alloc == 0) { - init_size = (pattern_end - pattern) * 2; + init_size = (int )(pattern_end - pattern) * 2; if (init_size <= 0) init_size = COMPILE_INIT_SIZE; r = BB_INIT(reg, init_size); if (r != 0) goto end; @@ -6460,8 +6453,7 @@ onig_compile(regex_t* reg, const UChar* pattern, const UChar* pattern_end, static int onig_inited = 0; extern int -onig_reg_init(regex_t* reg, OnigOptionType option, - OnigCaseFoldType case_fold_flag, +onig_reg_init(regex_t* reg, OnigOptionType option, OnigCaseFoldType case_fold_flag, OnigEncoding enc, OnigSyntaxType* syntax) { int r; @@ -6521,9 +6513,10 @@ onig_reg_init(regex_t* reg, OnigOptionType option, } extern int -onig_new_without_alloc(regex_t* reg, const UChar* pattern, - const UChar* pattern_end, OnigOptionType option, OnigEncoding enc, - OnigSyntaxType* syntax, OnigErrorInfo* einfo) +onig_new_without_alloc(regex_t* reg, + const UChar* pattern, const UChar* pattern_end, + OnigOptionType option, OnigEncoding enc, + OnigSyntaxType* syntax, OnigErrorInfo* einfo) { int r; @@ -6536,8 +6529,8 @@ onig_new_without_alloc(regex_t* reg, const UChar* pattern, extern int onig_new(regex_t** reg, const UChar* pattern, const UChar* pattern_end, - OnigOptionType option, OnigEncoding enc, OnigSyntaxType* syntax, - OnigErrorInfo* einfo) + OnigOptionType option, OnigEncoding enc, OnigSyntaxType* syntax, + OnigErrorInfo* einfo) { int r; @@ -6775,13 +6768,13 @@ OnigOpInfoType OnigOpInfo[] = { { OP_EMPTY_CHECK_END_MEMST_PUSH,"empty-check-end-memst-push", ARG_MEMNUM }, { OP_PREC_READ_START, "push-pos", ARG_NON }, { OP_PREC_READ_END, "pop-pos", ARG_NON }, - { OP_PUSH_PREC_READ_NOT, "push-prec-read-not", ARG_RELADDR }, - { OP_FAIL_PREC_READ_NOT, "fail-prec-read-not", ARG_NON }, - { OP_PUSH_STOP_BT, "push-stop-bt", ARG_NON }, - { OP_POP_STOP_BT, "pop-stop-bt", ARG_NON }, + { OP_PREC_READ_NOT_START, "prec-read-not-start", ARG_RELADDR }, + { OP_PREC_READ_NOT_END, "prec-read-not-end", ARG_NON }, + { OP_ATOMIC_START, "atomic-start", ARG_NON }, + { OP_ATOMIC_END, "atomic-end", ARG_NON }, { OP_LOOK_BEHIND, "look-behind", ARG_SPECIAL }, - { OP_PUSH_LOOK_BEHIND_NOT, "push-look-behind-not", ARG_SPECIAL }, - { OP_FAIL_LOOK_BEHIND_NOT, "fail-look-behind-not", ARG_NON }, + { OP_LOOK_BEHIND_NOT_START, "look-behind-not-start", ARG_SPECIAL }, + { OP_LOOK_BEHIND_NOT_END, "look-behind-not-end", ARG_NON }, { OP_CALL, "call", ARG_ABSADDR }, { OP_RETURN, "return", ARG_NON }, { OP_PUSH_SAVE_VAL, "push-save-val", ARG_SPECIAL }, @@ -7077,7 +7070,7 @@ onig_print_compiled_byte_code(FILE* f, UChar* bp, UChar** nextp, UChar* start, fprintf(f, ":%d", len); break; - case OP_PUSH_LOOK_BEHIND_NOT: + case OP_LOOK_BEHIND_NOT_START: GET_RELADDR_INC(addr, bp); GET_LENGTH_INC(len, bp); fprintf(f, ":%d:", len); @@ -7113,8 +7106,7 @@ onig_print_compiled_byte_code(FILE* f, UChar* bp, UChar** nextp, UChar* start, break; default: - fprintf(stderr, "onig_print_compiled_byte_code: undefined code %d\n", - *--bp); + fprintf(stderr, "onig_print_compiled_byte_code: undefined code %d\n", *--bp); } } if (nextp) *nextp = bp; @@ -7188,8 +7180,7 @@ print_indent_tree(FILE* f, Node* node, int indent) break; case NODE_STRING: - fprintf(f, "<string%s:%p>", - (NODE_STRING_IS_RAW(node) ? "-raw" : ""), node); + fprintf(f, "<string%s:%p>", (NODE_STRING_IS_RAW(node) ? "-raw" : ""), node); for (p = STR_(node)->s; p < STR_(node)->end; p++) { if (*p >= 0x20 && *p < 0x7f) fputc(*p, f); @@ -7303,8 +7294,8 @@ print_indent_tree(FILE* f, Node* node, int indent) case NODE_QUANT: fprintf(f, "<quantifier:%p>{%d,%d}%s\n", node, - QUANT_(node)->lower, QUANT_(node)->upper, - (QUANT_(node)->greedy ? "" : "?")); + QUANT_(node)->lower, QUANT_(node)->upper, + (QUANT_(node)->greedy ? "" : "?")); print_indent_tree(f, NODE_BODY(node), indent + add); break; diff --git a/src/regenc.c b/src/regenc.c index 97b5052..7ded5a8 100644 --- a/src/regenc.c +++ b/src/regenc.c @@ -2,7 +2,7 @@ regenc.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2016 K.Kosako <sndgk393 AT ybb DOT ne DOT jp> + * Copyright (c) 2002-2017 K.Kosako <sndgk393 AT ybb DOT ne DOT jp> * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -780,7 +780,7 @@ onigenc_mb2_code_to_mbc(OnigEncoding enc, OnigCodePoint code, UChar *buf) if (enclen(enc, buf) != (p - buf)) return ONIGERR_INVALID_CODE_POINT_VALUE; #endif - return p - buf; + return (int )(p - buf); } extern int @@ -803,7 +803,7 @@ onigenc_mb4_code_to_mbc(OnigEncoding enc, OnigCodePoint code, UChar *buf) if (enclen(enc, buf) != (p - buf)) return ONIGERR_INVALID_CODE_POINT_VALUE; #endif - return p - buf; + return (int )(p - buf); } extern int diff --git a/src/regerror.c b/src/regerror.c index c0d2346..e7d2570 100644 --- a/src/regerror.c +++ b/src/regerror.c @@ -236,7 +236,7 @@ static int to_ascii(OnigEncoding enc, UChar *s, UChar *end, *is_over = ((p < end) ? 1 : 0); } else { - len = MIN((end - s), buf_size); + len = MIN((int )(end - s), buf_size); xmemcpy(buf, s, (size_t )len); *is_over = ((buf_size < (end - s)) ? 1 : 0); } @@ -300,7 +300,7 @@ onig_error_code_to_str(s, code, va_alist) } } *p = '\0'; - len = p - s; + len = (int )(p - s); break; default: @@ -340,7 +340,7 @@ onig_snprintf_with_pattern(buf, bufsize, enc, pat, pat_end, fmt, va_alist) n = xvsnprintf((char* )buf, bufsize, (const char* )fmt, args); va_end(args); - need = (pat_end - pat) * 4 + 4; + need = (int )(pat_end - pat) * 4 + 4; if (n + need < bufsize) { xstrcat((char* )buf, ": /", bufsize); diff --git a/src/regexec.c b/src/regexec.c index 9dbef70..53f42ee 100644 --- a/src/regexec.c +++ b/src/regexec.c @@ -326,12 +326,11 @@ onig_region_copy(OnigRegion* to, OnigRegion* from) #define STK_EMPTY_CHECK_START 0x3000 #define STK_EMPTY_CHECK_END 0x5000 /* for recursive call */ #define STK_MEM_END_MARK 0x8400 -#define STK_POS 0x0500 /* used when POP-POS */ -#define STK_STOP_BACKTRACK 0x0600 /* mark for "(?>...)" */ -#define STK_REPEAT 0x0700 -#define STK_CALL_FRAME 0x0800 -#define STK_RETURN 0x0900 -#define STK_SAVE_VAL 0x0a00 +#define STK_TO_VOID_START 0x0500 /* mark for "(?>...)" */ +#define STK_REPEAT 0x0600 +#define STK_CALL_FRAME 0x0700 +#define STK_RETURN 0x0800 +#define STK_SAVE_VAL 0x0900 /* stack type check mask */ #define STK_MASK_POP_USED STK_ALT_FLAG @@ -342,6 +341,7 @@ typedef intptr_t StackIndex; typedef struct _StackType { unsigned int type; + int id; union { struct { UChar *pcode; /* byte code position */ @@ -354,31 +354,26 @@ typedef struct _StackType { struct { int count; /* for OP_REPEAT_INC, OP_REPEAT_INC_NG */ UChar *pcode; /* byte code position (head of repeated target) */ - int num; /* repeat id */ } repeat; struct { StackIndex si; /* index of stack */ } repeat_inc; struct { - int num; /* memory num */ UChar *pstr; /* start/end position */ /* Following information is set, if this stack type is MEM-START */ StackIndex start; /* prev. info (for backtrack "(...)*" ) */ StackIndex end; /* prev. info (for backtrack "(...)*" ) */ } mem; struct { - int num; /* null check id */ UChar *pstr; /* start position */ } empty_check; #ifdef USE_CALL struct { UChar *ret_addr; /* byte code position */ - int num; /* null check id */ UChar *pstr; /* string position */ } call_frame; #endif struct { - int id; enum SaveType type; UChar* v; UChar* v2; @@ -410,7 +405,7 @@ typedef struct _StackType { #define STATE_CHECK_BUFF_MALLOC_THRESHOLD_SIZE 16 -#define STATE_CHECK_BUFF_INIT(msa, str_len, offset, state_num) do { \ +#define STATE_CHECK_BUFF_INIT(msa, str_len, offset, state_num) do {\ if ((state_num) > 0 && str_len >= STATE_CHECK_STRING_THRESHOLD_LEN) {\ unsigned int size = (unsigned int )(((str_len) + 1) * (state_num) + 7) >> 3;\ offset = ((offset) * (state_num)) >> 3;\ @@ -481,7 +476,7 @@ typedef struct _StackType { #define STACK_SAVE do{\ - msa->stack_n = stk_end - stk_base;\ + msa->stack_n = (int )(stk_end - stk_base);\ if (is_alloca != 0) {\ size_t size = sizeof(StackIndex) * msa->ptr_num \ + sizeof(StackType) * msa->stack_n;\ @@ -517,9 +512,8 @@ onig_set_match_stack_limit_size(unsigned int size) static int stack_double(int is_alloca, char** arg_alloc_base, - StackType** arg_stk_base, - StackType** arg_stk_end, StackType** arg_stk, - OnigMatchArg* msa) + StackType** arg_stk_base, StackType** arg_stk_end, StackType** arg_stk, + OnigMatchArg* msa) { unsigned int n; int used; @@ -534,7 +528,7 @@ stack_double(int is_alloca, char** arg_alloc_base, stk_end = *arg_stk_end; stk = *arg_stk; - n = stk_end - stk_base; + n = (unsigned int )(stk_end - stk_base); size = sizeof(StackIndex) * msa->ptr_num + sizeof(StackType) * n; n *= 2; new_size = sizeof(StackIndex) * msa->ptr_num + sizeof(StackType) * n; @@ -561,17 +555,17 @@ stack_double(int is_alloca, char** arg_alloc_base, } alloc_base = new_alloc_base; - used = stk - stk_base; + used = (int )(stk - stk_base); *arg_alloc_base = alloc_base; *arg_stk_base = (StackType* )(alloc_base - + (sizeof(StackIndex) * msa->ptr_num)); + + (sizeof(StackIndex) * msa->ptr_num)); *arg_stk = *arg_stk_base + used; *arg_stk_end = *arg_stk_base + n; return 0; } -#define STACK_ENSURE(n) do {\ - if (stk_end - stk < (n)) {\ +#define STACK_ENSURE(n) do {\ + if ((int )(stk_end - stk) < (n)) {\ int r = stack_double(is_alloca, &alloc_base, &stk_base, &stk_end, &stk, msa);\ if (r != 0) { STACK_SAVE; return r; } \ is_alloca = 0;\ @@ -605,7 +599,7 @@ stack_double(int is_alloca, char** arg_alloc_base, #define ELSE_IF_STATE_CHECK_MARK(stk) \ else if ((stk)->type == STK_STATE_CHECK_MARK) { \ int x = STATE_CHECK_POS(stk->u.state.pstr, stk->u.state.state_check);\ - state_check_buff[x/8] |= (1<<(x%8)); \ + state_check_buff[x/8] |= (1<<(x%8));\ } #define STACK_PUSH(stack_type,pat,s,sprev) do {\ @@ -667,17 +661,18 @@ stack_double(int is_alloca, char** arg_alloc_base, #define STACK_PUSH_ALT(pat,s,sprev) STACK_PUSH(STK_ALT,pat,s,sprev) #define STACK_PUSH_SUPER_ALT(pat,s,sprev) STACK_PUSH(STK_SUPER_ALT,pat,s,sprev) -#define STACK_PUSH_POS(s,sprev) STACK_PUSH(STK_POS,NULL_UCHARP,s,sprev) +#define STACK_PUSH_POS(s,sprev) \ + STACK_PUSH(STK_TO_VOID_START,NULL_UCHARP,s,sprev) #define STACK_PUSH_ALT_PREC_READ_NOT(pat,s,sprev) \ STACK_PUSH(STK_ALT_PREC_READ_NOT,pat,s,sprev) -#define STACK_PUSH_STOP_BACKTRACK STACK_PUSH_TYPE(STK_STOP_BACKTRACK) +#define STACK_PUSH_TO_VOID_START STACK_PUSH_TYPE(STK_TO_VOID_START) #define STACK_PUSH_ALT_LOOK_BEHIND_NOT(pat,s,sprev) \ STACK_PUSH(STK_ALT_LOOK_BEHIND_NOT,pat,s,sprev) -#define STACK_PUSH_REPEAT(id, pat) do {\ +#define STACK_PUSH_REPEAT(sid, pat) do {\ STACK_ENSURE(1);\ stk->type = STK_REPEAT;\ - stk->u.repeat.num = (id);\ + stk->id = (sid);\ stk->u.repeat.pcode = (pat);\ stk->u.repeat.count = 0;\ STACK_INC;\ @@ -693,7 +688,7 @@ stack_double(int is_alloca, char** arg_alloc_base, #define STACK_PUSH_MEM_START(mnum, s) do {\ STACK_ENSURE(1);\ stk->type = STK_MEM_START;\ - stk->u.mem.num = (mnum);\ + stk->id = (mnum);\ stk->u.mem.pstr = (s);\ stk->u.mem.start = mem_start_stk[mnum];\ stk->u.mem.end = mem_end_stk[mnum];\ @@ -705,7 +700,7 @@ stack_double(int is_alloca, char** arg_alloc_base, #define STACK_PUSH_MEM_END(mnum, s) do {\ STACK_ENSURE(1);\ stk->type = STK_MEM_END;\ - stk->u.mem.num = (mnum);\ + stk->id = (mnum);\ stk->u.mem.pstr = (s);\ stk->u.mem.start = mem_start_stk[mnum];\ stk->u.mem.end = mem_end_stk[mnum];\ @@ -716,7 +711,7 @@ stack_double(int is_alloca, char** arg_alloc_base, #define STACK_PUSH_MEM_END_MARK(mnum) do {\ STACK_ENSURE(1);\ stk->type = STK_MEM_END_MARK;\ - stk->u.mem.num = (mnum);\ + stk->id = (mnum);\ STACK_INC;\ } while(0) @@ -726,10 +721,10 @@ stack_double(int is_alloca, char** arg_alloc_base, while (k > stk_base) {\ k--;\ if ((k->type & STK_MASK_MEM_END_OR_MARK) != 0 \ - && k->u.mem.num == (mnum)) {\ + && k->id == (mnum)) {\ level++;\ }\ - else if (k->type == STK_MEM_START && k->u.mem.num == (mnum)) {\ + else if (k->type == STK_MEM_START && k->id == (mnum)) {\ if (level == 0) break;\ level--;\ }\ @@ -757,7 +752,7 @@ stack_double(int is_alloca, char** arg_alloc_base, #define STACK_PUSH_EMPTY_CHECK_START(cnum, s) do {\ STACK_ENSURE(1);\ stk->type = STK_EMPTY_CHECK_START;\ - stk->u.empty_check.num = (cnum);\ + stk->id = (cnum);\ stk->u.empty_check.pstr = (s);\ STACK_INC;\ } while(0) @@ -765,7 +760,7 @@ stack_double(int is_alloca, char** arg_alloc_base, #define STACK_PUSH_EMPTY_CHECK_END(cnum) do {\ STACK_ENSURE(1);\ stk->type = STK_EMPTY_CHECK_END;\ - stk->u.empty_check.num = (cnum);\ + stk->id = (cnum);\ STACK_INC;\ } while(0) @@ -785,7 +780,7 @@ stack_double(int is_alloca, char** arg_alloc_base, #define STACK_PUSH_SAVE_VAL(sid, stype, sval) do {\ STACK_ENSURE(1);\ stk->type = STK_SAVE_VAL;\ - stk->u.val.id = (sid);\ + stk->id = (sid);\ stk->u.val.type = (stype);\ stk->u.val.v = (UChar* )(sval);\ STACK_INC;\ @@ -794,7 +789,7 @@ stack_double(int is_alloca, char** arg_alloc_base, #define STACK_PUSH_SAVE_VAL_WITH_SPREV(sid, stype, sval) do {\ STACK_ENSURE(1);\ stk->type = STK_SAVE_VAL;\ - stk->u.val.id = (sid);\ + stk->id = (sid);\ stk->u.val.type = (stype);\ stk->u.val.v = (UChar* )(sval);\ stk->u.val.v2 = sprev;\ @@ -820,7 +815,7 @@ stack_double(int is_alloca, char** arg_alloc_base, k--;\ STACK_BASE_CHECK(k, "STACK_GET_SAVE_VAL_TYPE_LAST_ID"); \ if (k->type == STK_SAVE_VAL && k->u.val.type == (stype)\ - && k->u.val.id == (sid)) {\ + && k->id == (sid)) {\ if (level == 0) {\ (sval) = k->u.val.v;\ break;\ @@ -840,7 +835,7 @@ stack_double(int is_alloca, char** arg_alloc_base, k--;\ STACK_BASE_CHECK(k, "STACK_GET_SAVE_VAL_TYPE_LAST_ID"); \ if (k->type == STK_SAVE_VAL && k->u.val.type == (stype)\ - && k->u.val.id == (sid)) {\ + && k->id == (sid)) {\ if (level == 0) {\ (sval) = k->u.val.v;\ sprev = k->u.val.v2;\ @@ -905,8 +900,8 @@ stack_double(int is_alloca, char** arg_alloc_base, STACK_BASE_CHECK(stk, "STACK_POP 2"); \ if ((stk->type & STK_MASK_POP_USED) != 0) break;\ else if (stk->type == STK_MEM_START) {\ - mem_start_stk[stk->u.mem.num] = stk->u.mem.start;\ - mem_end_stk[stk->u.mem.num] = stk->u.mem.end;\ + mem_start_stk[stk->id] = stk->u.mem.start;\ + mem_end_stk[stk->id] = stk->u.mem.end;\ }\ ELSE_IF_STATE_CHECK_MARK(stk);\ }\ @@ -917,15 +912,15 @@ stack_double(int is_alloca, char** arg_alloc_base, STACK_BASE_CHECK(stk, "STACK_POP 3"); \ if ((stk->type & STK_MASK_POP_USED) != 0) break;\ else if (stk->type == STK_MEM_START) {\ - mem_start_stk[stk->u.mem.num] = stk->u.mem.start;\ - mem_end_stk[stk->u.mem.num] = stk->u.mem.end;\ + mem_start_stk[stk->id] = stk->u.mem.start;\ + mem_end_stk[stk->id] = stk->u.mem.end;\ }\ else if (stk->type == STK_REPEAT_INC) {\ STACK_AT(stk->u.repeat_inc.si)->u.repeat.count--;\ }\ else if (stk->type == STK_MEM_END) {\ - mem_start_stk[stk->u.mem.num] = stk->u.mem.start;\ - mem_end_stk[stk->u.mem.num] = stk->u.mem.end;\ + mem_start_stk[stk->id] = stk->u.mem.start;\ + mem_end_stk[stk->id] = stk->u.mem.end;\ }\ ELSE_IF_STATE_CHECK_MARK(stk);\ }\ @@ -939,15 +934,15 @@ stack_double(int is_alloca, char** arg_alloc_base, STACK_BASE_CHECK(stk, "STACK_POP_TIL_ALT_PREC_READ_NOT"); \ if (stk->type == STK_ALT_PREC_READ_NOT) break;\ else if (stk->type == STK_MEM_START) {\ - mem_start_stk[stk->u.mem.num] = stk->u.mem.start;\ - mem_end_stk[stk->u.mem.num] = stk->u.mem.end;\ + mem_start_stk[stk->id] = stk->u.mem.start;\ + mem_end_stk[stk->id] = stk->u.mem.end;\ }\ else if (stk->type == STK_REPEAT_INC) {\ STACK_AT(stk->u.repeat_inc.si)->u.repeat.count--;\ }\ else if (stk->type == STK_MEM_END) {\ - mem_start_stk[stk->u.mem.num] = stk->u.mem.start;\ - mem_end_stk[stk->u.mem.num] = stk->u.mem.end;\ + mem_start_stk[stk->id] = stk->u.mem.start;\ + mem_end_stk[stk->id] = stk->u.mem.end;\ }\ ELSE_IF_STATE_CHECK_MARK(stk);\ }\ @@ -959,57 +954,42 @@ stack_double(int is_alloca, char** arg_alloc_base, STACK_BASE_CHECK(stk, "STACK_POP_TIL_ALT_LOOK_BEHIND_NOT"); \ if (stk->type == STK_ALT_LOOK_BEHIND_NOT) break;\ else if (stk->type == STK_MEM_START) {\ - mem_start_stk[stk->u.mem.num] = stk->u.mem.start;\ - mem_end_stk[stk->u.mem.num] = stk->u.mem.end;\ + mem_start_stk[stk->id] = stk->u.mem.start;\ + mem_end_stk[stk->id] = stk->u.mem.end;\ }\ else if (stk->type == STK_REPEAT_INC) {\ STACK_AT(stk->u.repeat_inc.si)->u.repeat.count--;\ }\ else if (stk->type == STK_MEM_END) {\ - mem_start_stk[stk->u.mem.num] = stk->u.mem.start;\ - mem_end_stk[stk->u.mem.num] = stk->u.mem.end;\ + mem_start_stk[stk->id] = stk->u.mem.start;\ + mem_end_stk[stk->id] = stk->u.mem.end;\ }\ ELSE_IF_STATE_CHECK_MARK(stk);\ }\ } while(0) -#define STACK_POS_END(k) do {\ +#define STACK_EXEC_TO_VOID(k) do {\ k = stk;\ while (1) {\ k--;\ - STACK_BASE_CHECK(k, "STACK_POS_END"); \ - if (IS_TO_VOID_TARGET(k)) {\ - k->type = STK_VOID;\ - }\ - else if (k->type == STK_POS) {\ - k->type = STK_VOID;\ - break;\ - }\ - }\ -} while(0) - -#define STACK_STOP_BACKTRACK_END do {\ - StackType *k = stk;\ - while (1) {\ - k--;\ - STACK_BASE_CHECK(k, "STACK_STOP_BACKTRACK_END"); \ + STACK_BASE_CHECK(k, "STACK_EXEC_TO_VOID"); \ if (IS_TO_VOID_TARGET(k)) {\ k->type = STK_VOID;\ }\ - else if (k->type == STK_STOP_BACKTRACK) {\ + else if (k->type == STK_TO_VOID_START) {\ k->type = STK_VOID;\ break;\ }\ }\ } while(0) -#define STACK_EMPTY_CHECK(isnull,id,s) do {\ +#define STACK_EMPTY_CHECK(isnull,sid,s) do {\ StackType* k = stk;\ while (1) {\ k--;\ STACK_BASE_CHECK(k, "STACK_EMPTY_CHECK"); \ if (k->type == STK_EMPTY_CHECK_START) {\ - if (k->u.empty_check.num == (id)) {\ + if (k->id == (sid)) {\ (isnull) = (k->u.empty_check.pstr == (s));\ break;\ }\ @@ -1018,13 +998,13 @@ stack_double(int is_alloca, char** arg_alloc_base, } while(0) #ifdef USE_INSISTENT_CHECK_CAPTURES_STATUS_IN_ENDLESS_REPEAT -#define STACK_EMPTY_CHECK_MEMST(isnull,id,s,reg) do {\ +#define STACK_EMPTY_CHECK_MEMST(isnull,sid,s,reg) do {\ StackType* k = stk;\ while (1) {\ k--;\ STACK_BASE_CHECK(k, "STACK_EMPTY_CHECK_MEMST"); \ if (k->type == STK_EMPTY_CHECK_START) {\ - if (k->u.empty_check.num == (id)) {\ + if (k->id == (sid)) {\ if (k->u.empty_check.pstr != (s)) {\ (isnull) = 0;\ break;\ @@ -1037,7 +1017,7 @@ stack_double(int is_alloca, char** arg_alloc_base, if (k->u.mem.end == INVALID_STACK_INDEX) {\ (isnull) = 0; break;\ }\ - if (MEM_STATUS_AT(reg->bt_mem_end, k->u.mem.num))\ + if (MEM_STATUS_AT(reg->bt_mem_end, k->id))\ endp = STACK_AT(k->u.mem.end)->u.mem.pstr;\ else\ endp = (UChar* )k->u.mem.end;\ @@ -1058,14 +1038,14 @@ stack_double(int is_alloca, char** arg_alloc_base, }\ } while(0) -#define STACK_EMPTY_CHECK_MEMST_REC(isnull,id,s,reg) do {\ +#define STACK_EMPTY_CHECK_MEMST_REC(isnull,sid,s,reg) do {\ int level = 0;\ StackType* k = stk;\ while (1) {\ k--;\ STACK_BASE_CHECK(k, "STACK_EMPTY_CHECK_MEMST_REC"); \ if (k->type == STK_EMPTY_CHECK_START) {\ - if (k->u.empty_check.num == (id)) {\ + if (k->id == (sid)) {\ if (level == 0) {\ if (k->u.empty_check.pstr != (s)) {\ (isnull) = 0;\ @@ -1079,7 +1059,7 @@ stack_double(int is_alloca, char** arg_alloc_base, if (k->u.mem.end == INVALID_STACK_INDEX) {\ (isnull) = 0; break;\ }\ - if (MEM_STATUS_AT(reg->bt_mem_end, k->u.mem.num))\ + if (MEM_STATUS_AT(reg->bt_mem_end, k->id))\ endp = STACK_AT(k->u.mem.end)->u.mem.pstr;\ else\ endp = (UChar* )k->u.mem.end;\ @@ -1101,7 +1081,7 @@ stack_double(int is_alloca, char** arg_alloc_base, }\ }\ else if (k->type == STK_EMPTY_CHECK_END) {\ - if (k->u.empty_check.num == (id)) level++;\ + if (k->id == (sid)) level++;\ }\ }\ } while(0) @@ -1128,7 +1108,7 @@ stack_double(int is_alloca, char** arg_alloc_base, } while(0) #endif /* USE_INSISTENT_CHECK_CAPTURES_STATUS_IN_ENDLESS_REPEAT */ -#define STACK_GET_REPEAT(id, k) do {\ +#define STACK_GET_REPEAT(sid, k) do {\ int level = 0;\ k = stk;\ while (1) {\ @@ -1136,7 +1116,7 @@ stack_double(int is_alloca, char** arg_alloc_base, STACK_BASE_CHECK(k, "STACK_GET_REPEAT"); \ if (k->type == STK_REPEAT) {\ if (level == 0) {\ - if (k->u.repeat.num == (id)) {\ + if (k->id == (sid)) {\ break;\ }\ }\ @@ -1177,7 +1157,7 @@ stack_double(int is_alloca, char** arg_alloc_base, } while(0) static int string_cmp_ic(OnigEncoding enc, int case_fold_flag, - UChar* s1, UChar** ps2, int mblen) + UChar* s1, UChar** ps2, int mblen) { UChar buf1[ONIGENC_MBC_CASE_FOLD_MAXLEN]; UChar buf2[ONIGENC_MBC_CASE_FOLD_MAXLEN]; @@ -1245,7 +1225,7 @@ make_capture_history_tree(OnigCaptureTreeNode* node, StackType** kp, while (k < stk_top) { if (k->type == STK_MEM_START) { - n = k->u.mem.num; + n = k->id; if (n <= ONIG_MAX_CAPTURE_HISTORY_GROUP && MEM_STATUS_AT(reg->capture_history, n) != 0) { child = history_node_new(); @@ -1263,7 +1243,7 @@ make_capture_history_tree(OnigCaptureTreeNode* node, StackType** kp, } } else if (k->type == STK_MEM_END) { - if (k->u.mem.num == node->group) { + if (k->id == node->group) { node->end = (int )(k->u.mem.pstr - str); *kp = k; return 0; @@ -1289,10 +1269,12 @@ static int mem_is_in_memp(int mem, int num, UChar* memp) return 0; } -static int backref_match_at_nested_level(regex_t* reg - , StackType* top, StackType* stk_base - , int ignore_case, int case_fold_flag - , int nest, int mem_num, UChar* memp, UChar** s, const UChar* send) +static int +backref_match_at_nested_level(regex_t* reg, + StackType* top, StackType* stk_base, + int ignore_case, int case_fold_flag, + int nest, int mem_num, UChar* memp, + UChar** s, const UChar* send) { UChar *ss, *p, *pstart, *pend = NULL_UCHARP; int level; @@ -1310,7 +1292,7 @@ static int backref_match_at_nested_level(regex_t* reg } else if (level == nest) { if (k->type == STK_MEM_START) { - if (mem_is_in_memp(k->u.mem.num, mem_num, memp)) { + if (mem_is_in_memp(k->id, mem_num, memp)) { pstart = k->u.mem.pstr; if (IS_NOT_NULL(pend)) { if (pend - pstart > send - *s) return 0; /* or goto next_mem; */ @@ -1334,7 +1316,7 @@ static int backref_match_at_nested_level(regex_t* reg } } else if (k->type == STK_MEM_END) { - if (mem_is_in_memp(k->u.mem.num, mem_num, memp)) { + if (mem_is_in_memp(k->id, mem_num, memp)) { pend = k->u.mem.pstr; } } @@ -1365,7 +1347,7 @@ backref_check_at_nested_level(regex_t* reg, } else if (level == nest) { if (k->type == STK_MEM_END) { - if (mem_is_in_memp(k->u.mem.num, mem_num, memp)) { + if (mem_is_in_memp(k->id, mem_num, memp)) { return 1; } } @@ -1478,9 +1460,9 @@ typedef struct { static int match_at(regex_t* reg, const UChar* str, const UChar* end, #ifdef USE_MATCH_RANGE_MUST_BE_INSIDE_OF_SPECIFIED_RANGE - const UChar* in_right_range, + const UChar* in_right_range, #endif - const UChar* sstart, UChar* sprev, OnigMatchArg* msa) + const UChar* sstart, UChar* sprev, OnigMatchArg* msa) { static UChar FinishCode[] = { OP_FINISH }; @@ -1521,7 +1503,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, fprintf(stderr, "match_at: str: %p, end: %p, start: %p, sprev: %p\n", str, end, sstart, sprev); fprintf(stderr, "size: %d, start offset: %d\n", - (int )(end - str), (int )(sstart - str)); + (int )(end - str), (int )(sstart - str)); #endif STACK_PUSH_ENSURED(STK_ALT, FinishCode); /* bottom stack */ @@ -1560,7 +1542,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, sbegin = s; switch (*p++) { case OP_END: MOP_IN(OP_END); - n = s - sstart; + n = (int )(s - sstart); if (n > best_len) { OnigRegion* region; #ifdef USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE @@ -1582,18 +1564,19 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, if (IS_POSIX_REGION(msa->options)) { posix_regmatch_t* rmt = (posix_regmatch_t* )region; - rmt[0].rm_so = keep - str; - rmt[0].rm_eo = s - str; + rmt[0].rm_so = (regoff_t )(keep - str); + rmt[0].rm_eo = (regoff_t )(s - str); for (i = 1; i <= num_mem; i++) { if (mem_end_stk[i] != INVALID_STACK_INDEX) { if (MEM_STATUS_AT(reg->bt_mem_start, i)) - rmt[i].rm_so = STACK_AT(mem_start_stk[i])->u.mem.pstr - str; + rmt[i].rm_so = (regoff_t )(STACK_AT(mem_start_stk[i])->u.mem.pstr - str); else - rmt[i].rm_so = (UChar* )((void* )(mem_start_stk[i])) - str; + rmt[i].rm_so = (regoff_t )((UChar* )((void* )(mem_start_stk[i])) - str); - rmt[i].rm_eo = (MEM_STATUS_AT(reg->bt_mem_end, i) - ? STACK_AT(mem_end_stk[i])->u.mem.pstr - : (UChar* )((void* )mem_end_stk[i])) - str; + rmt[i].rm_eo = (regoff_t )((MEM_STATUS_AT(reg->bt_mem_end, i) + ? STACK_AT(mem_end_stk[i])->u.mem.pstr + : (UChar* )((void* )mem_end_stk[i])) + - str); } else { rmt[i].rm_so = rmt[i].rm_eo = ONIG_REGION_NOTPOS; @@ -1602,18 +1585,18 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, } else { #endif /* USE_POSIX_API_REGION_OPTION */ - region->beg[0] = keep - str; - region->end[0] = s - str; + region->beg[0] = (int )(keep - str); + region->end[0] = (int )(s - str); for (i = 1; i <= num_mem; i++) { if (mem_end_stk[i] != INVALID_STACK_INDEX) { if (MEM_STATUS_AT(reg->bt_mem_start, i)) - region->beg[i] = STACK_AT(mem_start_stk[i])->u.mem.pstr - str; + region->beg[i] = (int )(STACK_AT(mem_start_stk[i])->u.mem.pstr - str); else - region->beg[i] = (UChar* )((void* )mem_start_stk[i]) - str; + region->beg[i] = (int )((UChar* )((void* )mem_start_stk[i]) - str); - region->end[i] = (MEM_STATUS_AT(reg->bt_mem_end, i) - ? STACK_AT(mem_end_stk[i])->u.mem.pstr - : (UChar* )((void* )mem_end_stk[i])) - str; + region->end[i] = (int )((MEM_STATUS_AT(reg->bt_mem_end, i) + ? STACK_AT(mem_end_stk[i])->u.mem.pstr + : (UChar* )((void* )mem_end_stk[i])) - str); } else { region->beg[i] = region->end[i] = ONIG_REGION_NOTPOS; @@ -1635,8 +1618,8 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, } node->group = 0; - node->beg = keep - str; - node->end = s - str; + node->beg = (int )(keep - str); + node->end = (int )(s - str); stkp = stk_base; r = make_capture_history_tree(region->history_root, &stkp, @@ -2053,6 +2036,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, s += n; } MOP_OUT; + continue; break; case OP_ANYCHAR_ML_STAR: MOP_IN(OP_ANYCHAR_ML_STAR); @@ -2070,6 +2054,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, } } MOP_OUT; + continue; break; case OP_ANYCHAR_STAR_PEEK_NEXT: MOP_IN(OP_ANYCHAR_STAR_PEEK_NEXT); @@ -2454,7 +2439,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, pend = (MEM_STATUS_AT(reg->bt_mem_end, mem) ? STACK_AT(mem_end_stk[mem])->u.mem.pstr : (UChar* )((void* )mem_end_stk[mem])); - n = pend - pstart; + n = (int )(pend - pstart); DATA_ENSURE(n); sprev = s; STRING_CMP(pstart, s, n); @@ -2483,7 +2468,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, pend = (MEM_STATUS_AT(reg->bt_mem_end, mem) ? STACK_AT(mem_end_stk[mem])->u.mem.pstr : (UChar* )((void* )mem_end_stk[mem])); - n = pend - pstart; + n = (int )(pend - pstart); DATA_ENSURE(n); sprev = s; STRING_CMP_IC(case_fold_flag, pstart, &s, n); @@ -2515,7 +2500,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, pend = (MEM_STATUS_AT(reg->bt_mem_end, mem) ? STACK_AT(mem_end_stk[mem])->u.mem.pstr : (UChar* )((void* )mem_end_stk[mem])); - n = pend - pstart; + n = (int )(pend - pstart); DATA_ENSURE(n); sprev = s; swork = s; @@ -2554,7 +2539,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, pend = (MEM_STATUS_AT(reg->bt_mem_end, mem) ? STACK_AT(mem_end_stk[mem])->u.mem.pstr : (UChar* )((void* )mem_end_stk[mem])); - n = pend - pstart; + n = (int )(pend - pstart); DATA_ENSURE(n); sprev = s; swork = s; @@ -2708,7 +2693,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, fprintf(stderr, "EMPTY_CHECK_END_MEMST: skip id:%d, s:%p\n", (int)mem, s); #endif if (is_empty == -1) goto fail; - goto empty_check_found; + goto empty_check_found; } } MOP_OUT; @@ -2734,7 +2719,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, (int )mem, s); #endif if (is_empty == -1) goto fail; - goto empty_check_found; + goto empty_check_found; } else { STACK_PUSH_EMPTY_CHECK_END(mem); @@ -2943,7 +2928,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, case OP_PREC_READ_END: MOP_IN(OP_PREC_READ_END); { - STACK_POS_END(stkp); + STACK_EXEC_TO_VOID(stkp); s = stkp->u.state.pstr; sprev = stkp->u.state.pstr_prev; } @@ -2951,26 +2936,26 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, continue; break; - case OP_PUSH_PREC_READ_NOT: MOP_IN(OP_PUSH_PREC_READ_NOT); + case OP_PREC_READ_NOT_START: MOP_IN(OP_PREC_READ_NOT_START); GET_RELADDR_INC(addr, p); STACK_PUSH_ALT_PREC_READ_NOT(p + addr, s, sprev); MOP_OUT; continue; break; - case OP_FAIL_PREC_READ_NOT: MOP_IN(OP_FAIL_PREC_READ_NOT); + case OP_PREC_READ_NOT_END: MOP_IN(OP_PREC_READ_NOT_END); STACK_POP_TIL_ALT_PREC_READ_NOT; goto fail; break; - case OP_PUSH_STOP_BT: MOP_IN(OP_PUSH_STOP_BT); - STACK_PUSH_STOP_BACKTRACK; + case OP_ATOMIC_START: MOP_IN(OP_ATOMIC_START); + STACK_PUSH_TO_VOID_START; MOP_OUT; continue; break; - case OP_POP_STOP_BT: MOP_IN(OP_POP_STOP_BT); - STACK_STOP_BACKTRACK_END; + case OP_ATOMIC_END: MOP_IN(OP_ATOMIC_END); + STACK_EXEC_TO_VOID(stkp); MOP_OUT; continue; break; @@ -2984,7 +2969,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, continue; break; - case OP_PUSH_LOOK_BEHIND_NOT: MOP_IN(OP_PUSH_LOOK_BEHIND_NOT); + case OP_LOOK_BEHIND_NOT_START: MOP_IN(OP_LOOK_BEHIND_NOT_START); GET_RELADDR_INC(addr, p); GET_LENGTH_INC(tlen, p); q = (UChar* )ONIGENC_STEP_BACK(encode, str, s, (int )tlen); @@ -3003,7 +2988,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, continue; break; - case OP_FAIL_LOOK_BEHIND_NOT: MOP_IN(OP_FAIL_LOOK_BEHIND_NOT); + case OP_LOOK_BEHIND_NOT_END: MOP_IN(OP_LOOK_BEHIND_NOT_END); STACK_POP_TIL_ALT_LOOK_BEHIND_NOT; goto fail; break; @@ -3051,6 +3036,8 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, case OP_UPDATE_VAR: MOP_IN(OP_UPDATE_VAR); { UpdateVarType type; + enum SaveType save_type; + GET_UPDATE_VAR_TYPE_INC(type, p); GET_MEMNUM_INC(mem, p); /* mem: save id */ switch ((enum UpdateVarType )type) { @@ -3061,10 +3048,13 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, STACK_GET_SAVE_VAL_TYPE_LAST_ID_WITH_SPREV(SAVE_S, mem, s); break; case UPDATE_VAR_RIGHT_RANGE_FROM_S_STACK: - STACK_GET_SAVE_VAL_TYPE_LAST_ID(SAVE_S, mem, right_range); + save_type = SAVE_S; + goto get_save_val_type_last_id; break; case UPDATE_VAR_RIGHT_RANGE_FROM_STACK: - STACK_GET_SAVE_VAL_TYPE_LAST_ID(SAVE_RIGHT_RANGE, mem, right_range); + save_type = SAVE_RIGHT_RANGE; + get_save_val_type_last_id: + STACK_GET_SAVE_VAL_TYPE_LAST_ID(save_type, mem, right_range); break; case UPDATE_VAR_RIGHT_RANGE_INIT: INIT_RIGHT_RANGE; @@ -3128,7 +3118,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, static UChar* slow_search(OnigEncoding enc, UChar* target, UChar* target_end, - const UChar* text, const UChar* text_end, UChar* text_range) + const UChar* text, const UChar* text_end, UChar* text_range) { UChar *t, *p, *s, *end; @@ -3160,7 +3150,7 @@ slow_search(OnigEncoding enc, UChar* target, UChar* target_end, static int str_lower_case_match(OnigEncoding enc, int case_fold_flag, const UChar* t, const UChar* tend, - const UChar* p, const UChar* end) + const UChar* p, const UChar* end) { int lowlen; UChar *q, lowbuf[ONIGENC_MBC_CASE_FOLD_MAXLEN]; @@ -3169,7 +3159,7 @@ str_lower_case_match(OnigEncoding enc, int case_fold_flag, lowlen = ONIGENC_MBC_CASE_FOLD(enc, case_fold_flag, &p, end, lowbuf); q = lowbuf; while (lowlen > 0) { - if (*t++ != *q++) return 0; + if (*t++ != *q++) return 0; lowlen--; } } @@ -3179,8 +3169,8 @@ str_lower_case_match(OnigEncoding enc, int case_fold_flag, static UChar* slow_search_ic(OnigEncoding enc, int case_fold_flag, - UChar* target, UChar* target_end, - const UChar* text, const UChar* text_end, UChar* text_range) + UChar* target, UChar* target_end, + const UChar* text, const UChar* text_end, UChar* text_range) { UChar *s, *end; @@ -3193,7 +3183,7 @@ slow_search_ic(OnigEncoding enc, int case_fold_flag, while (s < end) { if (str_lower_case_match(enc, case_fold_flag, target, target_end, - s, text_end)) + s, text_end)) return s; s += enclen(enc, s); @@ -3204,8 +3194,8 @@ slow_search_ic(OnigEncoding enc, int case_fold_flag, static UChar* slow_search_backward(OnigEncoding enc, UChar* target, UChar* target_end, - const UChar* text, const UChar* adjust_text, - const UChar* text_end, const UChar* text_start) + const UChar* text, const UChar* adjust_text, + const UChar* text_end, const UChar* text_start) { UChar *t, *p, *s; @@ -3236,9 +3226,9 @@ slow_search_backward(OnigEncoding enc, UChar* target, UChar* target_end, static UChar* slow_search_backward_ic(OnigEncoding enc, int case_fold_flag, - UChar* target, UChar* target_end, - const UChar* text, const UChar* adjust_text, - const UChar* text_end, const UChar* text_start) + UChar* target, UChar* target_end, + const UChar* text, const UChar* adjust_text, + const UChar* text_end, const UChar* text_start) { UChar *s; @@ -3262,8 +3252,8 @@ slow_search_backward_ic(OnigEncoding enc, int case_fold_flag, static UChar* bm_search_notrev(regex_t* reg, const UChar* target, const UChar* target_end, - const UChar* text, const UChar* text_end, - const UChar* text_range) + const UChar* text, const UChar* text_end, + const UChar* text_range) { const UChar *s, *se, *t, *p, *end; const UChar *tail; @@ -3275,7 +3265,7 @@ bm_search_notrev(regex_t* reg, const UChar* target, const UChar* target_end, #endif tail = target_end - 1; - tlen1 = tail - target; + tlen1 = (int )(tail - target); end = text_range; if (end + tlen1 > text_end) end = text_end - tlen1; @@ -3318,7 +3308,7 @@ bm_search_notrev(regex_t* reg, const UChar* target, const UChar* target_end, static UChar* bm_search(regex_t* reg, const UChar* target, const UChar* target_end, - const UChar* text, const UChar* text_end, const UChar* text_range) + const UChar* text, const UChar* text_end, const UChar* text_range) { const UChar *s, *t, *p, *end; const UChar *tail; @@ -3356,9 +3346,7 @@ bm_search(regex_t* reg, const UChar* target, const UChar* target_end, #ifdef USE_INT_MAP_BACKWARD static int -set_bm_backward_skip(UChar* s, UChar* end, OnigEncoding enc ARG_UNUSED, - int** skip) - +set_bm_backward_skip(UChar* s, UChar* end, OnigEncoding enc ARG_UNUSED, int** skip) { int i, len; @@ -3379,8 +3367,8 @@ set_bm_backward_skip(UChar* s, UChar* end, OnigEncoding enc ARG_UNUSED, static UChar* bm_search_backward(regex_t* reg, const UChar* target, const UChar* target_end, - const UChar* text, const UChar* adjust_text, - const UChar* text_end, const UChar* text_start) + const UChar* text, const UChar* adjust_text, + const UChar* text_end, const UChar* text_start) { const UChar *s, *t, *p; @@ -3409,7 +3397,7 @@ bm_search_backward(regex_t* reg, const UChar* target, const UChar* target_end, static UChar* map_search(OnigEncoding enc, UChar map[], - const UChar* text, const UChar* text_range) + const UChar* text, const UChar* text_range) { const UChar *s = text; @@ -3423,8 +3411,8 @@ map_search(OnigEncoding enc, UChar map[], static UChar* map_search_backward(OnigEncoding enc, UChar map[], - const UChar* text, const UChar* adjust_text, - const UChar* text_start) + const UChar* text, const UChar* adjust_text, + const UChar* text_start) { const UChar *s = text_start; @@ -3437,8 +3425,8 @@ map_search_backward(OnigEncoding enc, UChar map[], } extern int -onig_match(regex_t* reg, const UChar* str, const UChar* end, const UChar* at, OnigRegion* region, - OnigOptionType option) +onig_match(regex_t* reg, const UChar* str, const UChar* end, const UChar* at, + OnigRegion* region, OnigOptionType option) { int r; UChar *prev; @@ -3473,9 +3461,9 @@ onig_match(regex_t* reg, const UChar* str, const UChar* end, const UChar* at, On prev = (UChar* )onigenc_get_prev_char_head(reg->enc, str, at); r = match_at(reg, str, end, #ifdef USE_MATCH_RANGE_MUST_BE_INSIDE_OF_SPECIFIED_RANGE - end, + end, #endif - at, prev, &msa); + at, prev, &msa); } end: @@ -3485,7 +3473,7 @@ onig_match(regex_t* reg, const UChar* str, const UChar* end, const UChar* at, On static int forward_search_range(regex_t* reg, const UChar* str, const UChar* end, UChar* s, - UChar* range, UChar** low, UChar** high, UChar** low_prev) + UChar* range, UChar** low, UChar** high, UChar** low_prev) { UChar *p, *pprev = (UChar* )NULL; @@ -3609,8 +3597,8 @@ forward_search_range(regex_t* reg, const UChar* str, const UChar* end, UChar* s, #ifdef ONIG_DEBUG_SEARCH fprintf(stderr, - "forward_search_range success: low: %d, high: %d, dmin: %d, dmax: %d\n", - (int )(*low - str), (int )(*high - str), reg->dmin, reg->dmax); + "forward_search_range success: low: %d, high: %d, dmin: %d, dmax: %d\n", + (int )(*low - str), (int )(*high - str), reg->dmin, reg->dmax); #endif return 1; /* success */ } @@ -3623,8 +3611,8 @@ forward_search_range(regex_t* reg, const UChar* str, const UChar* end, UChar* s, static int backward_search_range(regex_t* reg, const UChar* str, const UChar* end, - UChar* s, const UChar* range, UChar* adjrange, - UChar** low, UChar** high) + UChar* s, const UChar* range, UChar* adjrange, + UChar** low, UChar** high) { UChar *p; @@ -3636,7 +3624,7 @@ backward_search_range(regex_t* reg, const UChar* str, const UChar* end, case ONIG_OPTIMIZE_EXACT: exact_method: p = slow_search_backward(reg->enc, reg->exact, reg->exact_end, - range, adjrange, end, p); + range, adjrange, end, p); break; case ONIG_OPTIMIZE_EXACT_IC: @@ -3718,7 +3706,7 @@ backward_search_range(regex_t* reg, const UChar* str, const UChar* end, #ifdef ONIG_DEBUG_SEARCH fprintf(stderr, "backward_search_range: low: %d, high: %d\n", - (int )(*low - str), (int )(*high - str)); + (int )(*low - str), (int )(*high - str)); #endif return 1; /* success */ } @@ -3733,7 +3721,8 @@ backward_search_range(regex_t* reg, const UChar* str, const UChar* end, extern int onig_search(regex_t* reg, const UChar* str, const UChar* end, - const UChar* start, const UChar* range, OnigRegion* region, OnigOptionType option) + const UChar* start, const UChar* range, OnigRegion* region, + OnigOptionType option) { int r; UChar *s, *prev; @@ -3926,7 +3915,7 @@ onig_search(regex_t* reg, const UChar* str, const UChar* end, #ifdef ONIG_DEBUG_SEARCH fprintf(stderr, "onig_search(apply anchor): end: %d, start: %d, range: %d\n", - (int )(end - str), (int )(start - str), (int )(range - str)); + (int )(end - str), (int )(start - str), (int )(range - str)); #endif MATCH_ARG_INIT(msa, reg, option, region, orig_start); @@ -4110,14 +4099,14 @@ onig_search(regex_t* reg, const UChar* str, const UChar* end, match: MATCH_ARG_FREE(msa); - return s - str; + return (int )(s - str); } extern int onig_scan(regex_t* reg, const UChar* str, const UChar* end, - OnigRegion* region, OnigOptionType option, - int (*scan_callback)(int, int, OnigRegion*, void*), - void* callback_arg) + OnigRegion* region, OnigOptionType option, + int (*scan_callback)(int, int, OnigRegion*, void*), + void* callback_arg) { int r; int n; diff --git a/src/regext.c b/src/regext.c index 62a557c..996d043 100644 --- a/src/regext.c +++ b/src/regext.c @@ -95,7 +95,7 @@ static int conv_encoding(OnigEncoding from, OnigEncoding to, const UChar* s, const UChar* end, UChar** conv, UChar** conv_end) { - int len = end - s; + int len = (int )(end - s); if (to == ONIG_ENCODING_UTF16_BE) { if (from == ONIG_ENCODING_ASCII || from == ONIG_ENCODING_ISO_8859_1) { diff --git a/src/reggnu.c b/src/reggnu.c index 1de82fb..50eb9b4 100644 --- a/src/reggnu.c +++ b/src/reggnu.c @@ -2,7 +2,7 @@ reggnu.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2008 K.Kosako <sndgk393 AT ybb DOT ne DOT jp> + * Copyright (c) 2002-2017 K.Kosako <sndgk393 AT ybb DOT ne DOT jp> * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -54,7 +54,7 @@ re_adjust_startpos(regex_t* reg, const char* string, int size, else { p = ONIGENC_LEFT_ADJUST_CHAR_HEAD(reg->enc, (UChar* )string, s); } - return p - (UChar* )string; + return (int )(p - (UChar* )string); } return startpos; diff --git a/src/regint.h b/src/regint.h index 9dc1723..256b045 100644 --- a/src/regint.h +++ b/src/regint.h @@ -61,7 +61,6 @@ #define USE_INSISTENT_CHECK_CAPTURES_STATUS_IN_ENDLESS_REPEAT /* /(?:()|())*\2/ */ #define USE_NEWLINE_AT_END_OF_STRING_HAS_EMPTY_LINE /* /\n$/ =~ "\n" */ #define USE_WARNING_REDUNDANT_NESTED_REPEAT_OPERATOR -/* !!! moved to regenc.h. */ /* #define USE_CRNL_AS_LINE_TERMINATOR */ /* internal config */ #define USE_OP_PUSH_OR_JUMP_EXACT @@ -139,10 +138,16 @@ #endif +#include <stddef.h> + #ifdef HAVE_STDLIB_H #include <stdlib.h> #endif +#ifdef HAVE_STDINT_H +#include <stdint.h> +#endif + #if defined(HAVE_ALLOCA_H) && !defined(__GNUC__) #include <alloca.h> #endif @@ -174,7 +179,8 @@ #ifdef _WIN32 #if defined(_MSC_VER) && (_MSC_VER < 1300) -typedef int intptr_t; +typedef int intptr_t; +typedef unsigned int uintptr_t; #endif #endif @@ -186,6 +192,7 @@ typedef int intptr_t; #ifdef MAX #undef MAX #endif + #define MIN(a,b) (((a)>(b))?(b):(a)) #define MAX(a,b) (((a)<(b))?(b):(a)) @@ -219,20 +226,19 @@ typedef int intptr_t; #endif #define GET_ALIGNMENT_PAD_SIZE(addr,pad_size) do {\ - (pad_size) = WORD_ALIGNMENT_SIZE \ - - ((unsigned int )(addr) % WORD_ALIGNMENT_SIZE);\ + (pad_size) = WORD_ALIGNMENT_SIZE - ((uintptr_t )(addr) % WORD_ALIGNMENT_SIZE);\ if ((pad_size) == WORD_ALIGNMENT_SIZE) (pad_size) = 0;\ } while (0) #define ALIGNMENT_RIGHT(addr) do {\ (addr) += (WORD_ALIGNMENT_SIZE - 1);\ - (addr) -= ((unsigned int )(addr) % WORD_ALIGNMENT_SIZE);\ + (addr) -= ((uintptr_t )(addr) % WORD_ALIGNMENT_SIZE);\ } while (0) #endif /* PLATFORM_UNALIGNED_WORD_ACCESS */ typedef struct { - int num_keeper; + int num_keeper; int* keepers; } RegExt; @@ -241,9 +247,9 @@ typedef struct { /* stack pop level */ enum StackPopLevel { - STACK_POP_LEVEL_FREE = 0, + STACK_POP_LEVEL_FREE = 0, STACK_POP_LEVEL_MEM_START = 1, - STACK_POP_LEVEL_ALL =2 + STACK_POP_LEVEL_ALL = 2 }; /* optimize flags */ @@ -353,7 +359,7 @@ typedef Bits* BitSetRef; #define BITSET_CLEAR(bs) do {\ int i;\ - for (i = 0; i < (int )BITSET_SIZE; i++) { (bs)[i] = 0; } \ + for (i = 0; i < (int )BITSET_SIZE; i++) { (bs)[i] = 0; } \ } while (0) #define BS_ROOM(bs,pos) (bs)[pos / BITS_IN_ROOM] @@ -538,7 +544,7 @@ enum OpCode { OP_BACKREF_MULTI_IC, OP_BACKREF_WITH_LEVEL, /* \k<xxx+n>, \k<xxx-n> */ OP_BACKREF_CHECK, /* (?(n)), (?('name')) */ - OP_BACKREF_CHECK_WITH_LEVEL, /* (?(n)), (?('name')) */ + OP_BACKREF_CHECK_WITH_LEVEL, /* (?(n-level)), (?('name-level')) */ OP_MEMORY_START, OP_MEMORY_START_PUSH, /* push back-tracker to stack */ @@ -565,15 +571,15 @@ enum OpCode { OP_EMPTY_CHECK_END_MEMST, /* null loop checker end (with capture status) */ OP_EMPTY_CHECK_END_MEMST_PUSH, /* with capture status and push check-end */ - OP_PREC_READ_START, /* (?=...) start */ - OP_PREC_READ_END, /* (?=...) end */ - OP_PUSH_PREC_READ_NOT, /* (?!...) start */ - OP_FAIL_PREC_READ_NOT, /* (?!...) end */ - OP_PUSH_STOP_BT, /* (?>...) start */ - OP_POP_STOP_BT, /* (?>...) end */ - OP_LOOK_BEHIND, /* (?<=...) start (no needs end opcode) */ - OP_PUSH_LOOK_BEHIND_NOT, /* (?<!...) start */ - OP_FAIL_LOOK_BEHIND_NOT, /* (?<!...) end */ + OP_PREC_READ_START, /* (?=...) start */ + OP_PREC_READ_END, /* (?=...) end */ + OP_PREC_READ_NOT_START, /* (?!...) start */ + OP_PREC_READ_NOT_END, /* (?!...) end */ + OP_ATOMIC_START, /* (?>...) start */ + OP_ATOMIC_END, /* (?>...) end */ + OP_LOOK_BEHIND, /* (?<=...) start (no needs end opcode) */ + OP_LOOK_BEHIND_NOT_START, /* (?<!...) start */ + OP_LOOK_BEHIND_NOT_END, /* (?<!...) end */ OP_CALL, /* \g<name> */ OP_RETURN, @@ -663,9 +669,9 @@ typedef int ModeType; #define SIZE_OP_REPEAT_INC_NG (SIZE_OPCODE + SIZE_MEMNUM) #define SIZE_OP_WORD_BOUNDARY (SIZE_OPCODE + SIZE_MODE) #define SIZE_OP_PREC_READ_START SIZE_OPCODE -#define SIZE_OP_PUSH_PREC_READ_NOT (SIZE_OPCODE + SIZE_RELADDR) +#define SIZE_OP_PREC_READ_NOT_START (SIZE_OPCODE + SIZE_RELADDR) #define SIZE_OP_PREC_READ_END SIZE_OPCODE -#define SIZE_OP_FAIL_PREC_READ_NOT SIZE_OPCODE +#define SIZE_OP_PREC_READ_NOT_END SIZE_OPCODE #define SIZE_OP_SET_OPTION (SIZE_OPCODE + SIZE_OPTION) #define SIZE_OP_SET_OPTION_PUSH (SIZE_OPCODE + SIZE_OPTION) #define SIZE_OP_FAIL SIZE_OPCODE @@ -675,13 +681,13 @@ typedef int ModeType; #define SIZE_OP_MEMORY_END_PUSH_REC (SIZE_OPCODE + SIZE_MEMNUM) #define SIZE_OP_MEMORY_END (SIZE_OPCODE + SIZE_MEMNUM) #define SIZE_OP_MEMORY_END_REC (SIZE_OPCODE + SIZE_MEMNUM) -#define SIZE_OP_PUSH_STOP_BT SIZE_OPCODE -#define SIZE_OP_POP_STOP_BT SIZE_OPCODE +#define SIZE_OP_ATOMIC_START SIZE_OPCODE +#define SIZE_OP_ATOMIC_END SIZE_OPCODE #define SIZE_OP_EMPTY_CHECK_START (SIZE_OPCODE + SIZE_MEMNUM) #define SIZE_OP_EMPTY_CHECK_END (SIZE_OPCODE + SIZE_MEMNUM) #define SIZE_OP_LOOK_BEHIND (SIZE_OPCODE + SIZE_LENGTH) -#define SIZE_OP_PUSH_LOOK_BEHIND_NOT (SIZE_OPCODE + SIZE_RELADDR + SIZE_LENGTH) -#define SIZE_OP_FAIL_LOOK_BEHIND_NOT SIZE_OPCODE +#define SIZE_OP_LOOK_BEHIND_NOT_START (SIZE_OPCODE + SIZE_RELADDR + SIZE_LENGTH) +#define SIZE_OP_LOOK_BEHIND_NOT_END SIZE_OPCODE #define SIZE_OP_CALL (SIZE_OPCODE + SIZE_ABSADDR) #define SIZE_OP_RETURN SIZE_OPCODE #define SIZE_OP_PUSH_SAVE_VAL (SIZE_OPCODE + SIZE_SAVE_TYPE + SIZE_MEMNUM) @@ -790,16 +796,17 @@ extern int onig_print_statistics P_((FILE* f)); #endif #endif -extern void onig_warning(const char* s); +extern void onig_warning(const char* s); extern UChar* onig_error_code_to_format P_((int code)); -extern void onig_snprintf_with_pattern PV_((UChar buf[], int bufsize, OnigEncoding enc, UChar* pat, UChar* pat_end, const UChar *fmt, ...)); -extern int onig_bbuf_init P_((BBuf* buf, int size)); -extern int onig_compile P_((regex_t* reg, const UChar* pattern, const UChar* pattern_end, OnigErrorInfo* einfo)); -extern void onig_transfer P_((regex_t* to, regex_t* from)); -extern int onig_is_code_in_cc_len P_((int enclen, OnigCodePoint code, void* /* CClassNode* */ cc)); +extern void onig_snprintf_with_pattern PV_((UChar buf[], int bufsize, OnigEncoding enc, UChar* pat, UChar* pat_end, const UChar *fmt, ...)); +extern int onig_bbuf_init P_((BBuf* buf, int size)); +extern int onig_compile P_((regex_t* reg, const UChar* pattern, const UChar* pattern_end, OnigErrorInfo* einfo)); +extern void onig_transfer P_((regex_t* to, regex_t* from)); +extern int onig_is_code_in_cc_len P_((int enclen, OnigCodePoint code, void* /* CClassNode* */ cc)); /* strend hash */ typedef void hash_table_type; + #ifdef _WIN32 # include <windows.h> typedef ULONG_PTR hash_data_type; diff --git a/src/regparse.c b/src/regparse.c index 1fb2357..1e4dc30 100644 --- a/src/regparse.c +++ b/src/regparse.c @@ -38,7 +38,7 @@ #define CASE_FOLD_IS_APPLIED_INSIDE_NEGATIVE_CCLASS -OnigSyntaxType OnigSyntaxRuby = { +OnigSyntaxType OnigSyntaxOniguruma = { (( SYN_GNU_REGEX_OP | ONIG_SYN_OP_QMARK_NON_GREEDY | ONIG_SYN_OP_ESC_OCTAL3 | ONIG_SYN_OP_ESC_X_HEX2 | ONIG_SYN_OP_ESC_X_BRACE_HEX8 | ONIG_SYN_OP_ESC_O_BRACE_OCTAL | @@ -60,7 +60,7 @@ OnigSyntaxType OnigSyntaxRuby = { ONIG_SYN_OP2_PLUS_POSSESSIVE_REPEAT | ONIG_SYN_OP2_CCLASS_SET_OP | ONIG_SYN_OP2_ESC_CAPITAL_C_BAR_CONTROL | ONIG_SYN_OP2_ESC_CAPITAL_M_BAR_META | ONIG_SYN_OP2_ESC_V_VTAB | - ONIG_SYN_OP2_ESC_H_XDIGIT ) + ONIG_SYN_OP2_ESC_H_XDIGIT | ONIG_SYN_OP2_ESC_U_HEX4 ) , ( SYN_GNU_REGEX_BV | ONIG_SYN_ALLOW_INTERVAL_LOW_ABBREV | ONIG_SYN_DIFFERENT_LEN_ALT_LOOK_BEHIND | @@ -81,7 +81,49 @@ OnigSyntaxType OnigSyntaxRuby = { } }; -OnigSyntaxType* OnigDefaultSyntax = ONIG_SYNTAX_RUBY; +OnigSyntaxType OnigSyntaxRuby = { + (( SYN_GNU_REGEX_OP | ONIG_SYN_OP_QMARK_NON_GREEDY | + ONIG_SYN_OP_ESC_OCTAL3 | ONIG_SYN_OP_ESC_X_HEX2 | + ONIG_SYN_OP_ESC_X_BRACE_HEX8 | ONIG_SYN_OP_ESC_O_BRACE_OCTAL | + ONIG_SYN_OP_ESC_CONTROL_CHARS | + ONIG_SYN_OP_ESC_C_CONTROL ) + & ~ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END ) + , ( ONIG_SYN_OP2_QMARK_GROUP_EFFECT | + ONIG_SYN_OP2_OPTION_RUBY | + ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP | ONIG_SYN_OP2_ESC_K_NAMED_BACKREF | + ONIG_SYN_OP2_QMARK_LPAREN_IF_ELSE | + ONIG_SYN_OP2_QMARK_TILDE_ABSENT_GROUP | + ONIG_SYN_OP2_ESC_X_Y_GRAPHEME_CLUSTER | + ONIG_SYN_OP2_ESC_CAPITAL_R_GENERAL_NEWLINE | + ONIG_SYN_OP2_ESC_CAPITAL_K_KEEP | + ONIG_SYN_OP2_ESC_G_SUBEXP_CALL | + ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY | + ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT | + ONIG_SYN_OP2_PLUS_POSSESSIVE_REPEAT | + ONIG_SYN_OP2_CCLASS_SET_OP | ONIG_SYN_OP2_ESC_CAPITAL_C_BAR_CONTROL | + ONIG_SYN_OP2_ESC_CAPITAL_M_BAR_META | ONIG_SYN_OP2_ESC_V_VTAB | + ONIG_SYN_OP2_ESC_H_XDIGIT | ONIG_SYN_OP2_ESC_U_HEX4 ) + , ( SYN_GNU_REGEX_BV | + ONIG_SYN_ALLOW_INTERVAL_LOW_ABBREV | + ONIG_SYN_DIFFERENT_LEN_ALT_LOOK_BEHIND | + ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP | + ONIG_SYN_ALLOW_MULTIPLEX_DEFINITION_NAME | + ONIG_SYN_FIXED_INTERVAL_IS_GREEDY_ONLY | + ONIG_SYN_WARN_CC_OP_NOT_ESCAPED | + ONIG_SYN_WARN_REDUNDANT_NESTED_REPEAT ) + , ONIG_OPTION_NONE + , + { + (OnigCodePoint )'\\' /* esc */ + , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar '.' */ + , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anytime '*' */ + , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* zero or one time '?' */ + , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* one or more time '+' */ + , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar anytime */ + } +}; + +OnigSyntaxType* OnigDefaultSyntax = ONIG_SYNTAX_ONIGURUMA; extern void onig_null_warn(const char* s ARG_UNUSED) { } @@ -282,7 +324,7 @@ onig_strncmp(const UChar* s1, const UChar* s2, int n) extern void onig_strcpy(UChar* dest, const UChar* src, const UChar* end) { - int len = end - src; + int len = (int )(end - src); if (len > 0) { xmemcpy(dest, src, len); dest[len] = (UChar )0; @@ -295,7 +337,7 @@ strdup_with_null(OnigEncoding enc, UChar* s, UChar* end) int slen, term_len, i; UChar *r; - slen = end - s; + slen = (int )(end - s); term_len = ONIGENC_MBC_MINLEN(enc); r = (UChar* )xmalloc(slen + term_len); @@ -365,7 +407,7 @@ save_entry(ScanEnv* env, enum SaveType type, int* id) static UChar* strcat_capa(UChar* dest, UChar* dest_end, const UChar* src, const UChar* src_end, - int capa) + int capa) { UChar* r; @@ -382,7 +424,7 @@ strcat_capa(UChar* dest, UChar* dest_end, const UChar* src, const UChar* src_end /* dest on static area */ static UChar* strcat_capa_from_static(UChar* dest, UChar* dest_end, - const UChar* src, const UChar* src_end, int capa) + const UChar* src, const UChar* src_end, int capa) { UChar* r; @@ -450,7 +492,7 @@ onig_st_init_strend_table_with_size(int size) extern int onig_st_lookup_strend(hash_table_type* table, const UChar* str_key, - const UChar* end_key, hash_data_type *value) + const UChar* end_key, hash_data_type *value) { st_str_end_key key; @@ -462,7 +504,7 @@ onig_st_lookup_strend(hash_table_type* table, const UChar* str_key, extern int onig_st_insert_strend(hash_table_type* table, const UChar* str_key, - const UChar* end_key, hash_data_type value) + const UChar* end_key, hash_data_type value) { st_str_end_key* key; int result; @@ -834,7 +876,7 @@ name_add(regex_t* reg, UChar* name, UChar* name_end, int backref, ScanEnv* env) (HashDataType )e); if (r < 0) return r; - e->name_len = name_end - name; + e->name_len = (int )(name_end - name); e->back_num = 0; e->back_alloc = 0; e->back_refs = (int* )NULL; @@ -919,7 +961,7 @@ name_add(regex_t* reg, UChar* name, UChar* name_end, int backref, ScanEnv* env) extern int onig_name_to_group_numbers(regex_t* reg, const UChar* name, - const UChar* name_end, int** nums) + const UChar* name_end, int** nums) { NameEntry* e = name_find(reg, name, name_end); @@ -940,7 +982,7 @@ onig_name_to_group_numbers(regex_t* reg, const UChar* name, extern int onig_name_to_backref_number(regex_t* reg, const UChar* name, - const UChar* name_end, OnigRegion *region) + const UChar* name_end, OnigRegion *region) { int i, n, *nums; @@ -1361,9 +1403,9 @@ onig_node_new_anchor(int type, int ascii_mode) static Node* node_new_backref(int back_num, int* backrefs, int by_name, #ifdef USE_BACKREF_WITH_LEVEL - int exist_level, int nest_level, + int exist_level, int nest_level, #endif - ScanEnv* env) + ScanEnv* env) { int i; Node* node = node_new(); @@ -1411,9 +1453,9 @@ node_new_backref(int back_num, int* backrefs, int by_name, static Node* node_new_backref_checker(int back_num, int* backrefs, int by_name, #ifdef USE_BACKREF_WITH_LEVEL - int exist_level, int nest_level, + int exist_level, int nest_level, #endif - ScanEnv* env) + ScanEnv* env) { Node* node; @@ -2051,10 +2093,10 @@ make_absent_tree(Node** node, Node* absent, Node* expr, int is_range_cutter, extern int onig_node_str_cat(Node* node, const UChar* s, const UChar* end) { - int addlen = end - s; + int addlen = (int )(end - s); if (addlen > 0) { - int len = STR_(node)->end - STR_(node)->s; + int len = (int )(STR_(node)->end - STR_(node)->s); if (STR_(node)->capa > 0 || (len + addlen > NODE_STRING_BUF_SIZE - 1)) { UChar* p; @@ -2245,21 +2287,24 @@ onig_scan_unsigned_number(UChar** src, const UChar* end, OnigEncoding enc) } static int -scan_unsigned_hexadecimal_number(UChar** src, UChar* end, int maxlen, - OnigEncoding enc) +scan_unsigned_hexadecimal_number(UChar** src, UChar* end, int minlen, + int maxlen, OnigEncoding enc) { OnigCodePoint c; unsigned int num, val; + int n; UChar* p = *src; PFETCH_READY; num = 0; - while (! PEND && maxlen-- != 0) { + n = 0; + while (! PEND && n < maxlen) { PFETCH(c); if (IS_CODE_XDIGIT_ASCII(enc, c)) { + n++; val = (unsigned int )XDIGITVAL(enc,c); if ((INT_MAX_LIMIT - val) / 16UL < num) - return -1; /* overflow */ + return ONIGERR_TOO_BIG_NUMBER; /* overflow */ num = (num << 4) + XDIGITVAL(enc,c); } @@ -2268,6 +2313,10 @@ scan_unsigned_hexadecimal_number(UChar** src, UChar* end, int maxlen, break; } } + + if (n < minlen) + return ONIGERR_INVALID_CODE_POINT_VALUE; + *src = p; return num; } @@ -3477,8 +3526,9 @@ CC_ESC_WARN(ScanEnv* env, UChar *c) IS_SYNTAX_BV(env->syntax, ONIG_SYN_BACKSLASH_ESCAPE_IN_CC)) { UChar buf[WARN_BUFSIZE]; onig_snprintf_with_pattern(buf, WARN_BUFSIZE, env->enc, - env->pattern, env->pattern_end, - (UChar* )"character class has '%s' without escape", c); + env->pattern, env->pattern_end, + (UChar* )"character class has '%s' without escape", + c); (*onig_warn)((char* )buf); } } @@ -3491,8 +3541,8 @@ CLOSE_BRACKET_WITHOUT_ESC_WARN(ScanEnv* env, UChar* c) if (IS_SYNTAX_BV((env)->syntax, ONIG_SYN_WARN_CC_OP_NOT_ESCAPED)) { UChar buf[WARN_BUFSIZE]; onig_snprintf_with_pattern(buf, WARN_BUFSIZE, (env)->enc, - (env)->pattern, (env)->pattern_end, - (UChar* )"regular expression has '%s' without escape", c); + (env)->pattern, (env)->pattern_end, + (UChar* )"regular expression has '%s' without escape", c); (*onig_warn)((char* )buf); } } @@ -3700,8 +3750,13 @@ fetch_token_in_cc(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env) prev = p; if (PPEEK_IS('{') && IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_X_BRACE_HEX8)) { PINC; - num = scan_unsigned_hexadecimal_number(&p, end, 8, enc); - if (num < 0) return ONIGERR_TOO_BIG_WIDE_CHAR_VALUE; + num = scan_unsigned_hexadecimal_number(&p, end, 0, 8, enc); + if (num < 0) { + if (num == ONIGERR_TOO_BIG_NUMBER) + return ONIGERR_TOO_BIG_WIDE_CHAR_VALUE; + else + return num; + } if (!PEND) { c2 = PPEEK; if (IS_CODE_XDIGIT_ASCII(enc, c2)) @@ -3720,8 +3775,8 @@ fetch_token_in_cc(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env) } } else if (IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_X_HEX2)) { - num = scan_unsigned_hexadecimal_number(&p, end, 2, enc); - if (num < 0) return ONIGERR_TOO_BIG_NUMBER; + num = scan_unsigned_hexadecimal_number(&p, end, 0, 2, enc); + if (num < 0) return num; if (p == prev) { /* can't read nothing. */ num = 0; /* but, it's not error */ } @@ -3736,8 +3791,8 @@ fetch_token_in_cc(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env) prev = p; if (IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_U_HEX4)) { - num = scan_unsigned_hexadecimal_number(&p, end, 4, enc); - if (num < 0) return ONIGERR_TOO_BIG_NUMBER; + num = scan_unsigned_hexadecimal_number(&p, end, 4, 4, enc); + if (num < 0) return num; if (p == prev) { /* can't read nothing. */ num = 0; /* but, it's not error */ } @@ -4103,8 +4158,13 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env) prev = p; if (PPEEK_IS('{') && IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_X_BRACE_HEX8)) { PINC; - num = scan_unsigned_hexadecimal_number(&p, end, 8, enc); - if (num < 0) return ONIGERR_TOO_BIG_WIDE_CHAR_VALUE; + num = scan_unsigned_hexadecimal_number(&p, end, 0, 8, enc); + if (num < 0) { + if (num == ONIGERR_TOO_BIG_NUMBER) + return ONIGERR_TOO_BIG_WIDE_CHAR_VALUE; + else + return num; + } if (!PEND) { if (IS_CODE_XDIGIT_ASCII(enc, PPEEK)) return ONIGERR_TOO_LONG_WIDE_CHAR_VALUE; @@ -4121,8 +4181,8 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env) } } else if (IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_X_HEX2)) { - num = scan_unsigned_hexadecimal_number(&p, end, 2, enc); - if (num < 0) return ONIGERR_TOO_BIG_NUMBER; + num = scan_unsigned_hexadecimal_number(&p, end, 0, 2, enc); + if (num < 0) return num; if (p == prev) { /* can't read nothing. */ num = 0; /* but, it's not error */ } @@ -4137,8 +4197,8 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env) prev = p; if (IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_U_HEX4)) { - num = scan_unsigned_hexadecimal_number(&p, end, 4, enc); - if (num < 0) return ONIGERR_TOO_BIG_NUMBER; + num = scan_unsigned_hexadecimal_number(&p, end, 4, 4, enc); + if (num < 0) return num; if (p == prev) { /* can't read nothing. */ num = 0; /* but, it's not error */ } @@ -4442,20 +4502,91 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env) if (!PEND && PPEEK_IS('?') && IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_QMARK_GROUP_EFFECT)) { PINC; - if (!PEND && PPEEK_IS('#')) { - PFETCH(c); - while (1) { - if (PEND) return ONIGERR_END_PATTERN_IN_GROUP; + if (! PEND) { + c = PPEEK; + if (c == '#') { PFETCH(c); - if (c == MC_ESC(syn)) { - if (!PEND) PFETCH(c); + while (1) { + if (PEND) return ONIGERR_END_PATTERN_IN_GROUP; + PFETCH(c); + if (c == MC_ESC(syn)) { + if (! PEND) PFETCH(c); + } + else { + if (c == ')') break; + } } - else { - if (c == ')') break; + goto start; + } + else if (IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_QMARK_PERL_SUBEXP_CALL)) { + int gnum; + UChar* name; + UChar* name_end; + enum REF_NUM num_type; + + switch (c) { + case '&': + { + PINC; + name = p; + r = fetch_name((OnigCodePoint )'(', &p, end, &name_end, env, &gnum, + &num_type, 0); + if (r < 0) return r; + + tok->type = TK_CALL; + tok->u.call.by_number = 0; + tok->u.call.gnum = 0; + tok->u.call.name = name; + tok->u.call.name_end = name_end; + } + break; + + case 'R': + tok->type = TK_CALL; + tok->u.call.by_number = 1; + tok->u.call.gnum = 0; + tok->u.call.name = p; + PINC; + if (! PPEEK_IS(')')) return ONIGERR_INVALID_GROUP_NAME; + tok->u.call.name_end = p; + break; + + case '-': + case '+': + goto lparen_qmark_num; + break; + default: + if (! ONIGENC_IS_CODE_DIGIT(enc, c)) goto lparen_qmark_end; + + lparen_qmark_num: + { + name = p; + r = fetch_name((OnigCodePoint )'(', &p, end, &name_end, env, + &gnum, &num_type, 1); + if (r < 0) return r; + + if (num_type == IS_NOT_NUM) { + return ONIGERR_INVALID_GROUP_NAME; + } + else { + if (num_type == IS_REL_NUM) { + gnum = backref_rel_to_abs(gnum, env); + if (gnum < 0) + return ONIGERR_UNDEFINED_GROUP_REFERENCE; + } + tok->u.call.by_number = 1; + tok->u.call.gnum = gnum; + } + + tok->type = TK_CALL; + tok->u.call.name = name; + tok->u.call.name_end = name_end; + } + break; } } - goto start; } + lparen_qmark_end: PUNFETCH; } @@ -4472,14 +4603,14 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env) if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_LINE_ANCHOR)) break; tok->type = TK_ANCHOR; tok->u.subtype = (IS_SINGLELINE(env->options) - ? ANCHOR_BEGIN_BUF : ANCHOR_BEGIN_LINE); + ? ANCHOR_BEGIN_BUF : ANCHOR_BEGIN_LINE); break; case '$': if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_LINE_ANCHOR)) break; tok->type = TK_ANCHOR; tok->u.subtype = (IS_SINGLELINE(env->options) - ? ANCHOR_SEMI_END_BUF : ANCHOR_END_LINE); + ? ANCHOR_SEMI_END_BUF : ANCHOR_END_LINE); break; case '[': @@ -4731,7 +4862,7 @@ add_ctype_to_cc(CClassNode* cc, int ctype, int not, ScanEnv* env) case ONIGENC_CTYPE_ASCII: case ONIGENC_CTYPE_ALNUM: if (not != 0) { - for (c = 0; c < limit; c++) { + for (c = 0; c < (int )limit; c++) { if (! ONIGENC_IS_CODE_CTYPE(enc, (OnigCodePoint )c, ctype)) BITSET_SET_BIT(cc->bs, c); } @@ -4742,7 +4873,7 @@ add_ctype_to_cc(CClassNode* cc, int ctype, int not, ScanEnv* env) ADD_ALL_MULTI_BYTE_RANGE(enc, cc->mbuf); } else { - for (c = 0; c < limit; c++) { + for (c = 0; c < (int )limit; c++) { if (ONIGENC_IS_CODE_CTYPE(enc, (OnigCodePoint )c, ctype)) BITSET_SET_BIT(cc->bs, c); } @@ -4753,7 +4884,7 @@ add_ctype_to_cc(CClassNode* cc, int ctype, int not, ScanEnv* env) case ONIGENC_CTYPE_PRINT: case ONIGENC_CTYPE_WORD: if (not != 0) { - for (c = 0; c < limit; c++) { + for (c = 0; c < (int )limit; c++) { if (ONIGENC_CODE_TO_MBCLEN(enc, c) > 0 /* check invalid code point */ && ! ONIGENC_IS_CODE_CTYPE(enc, (OnigCodePoint )c, ctype)) BITSET_SET_BIT(cc->bs, c); @@ -4764,7 +4895,7 @@ add_ctype_to_cc(CClassNode* cc, int ctype, int not, ScanEnv* env) } } else { - for (c = 0; c < limit; c++) { + for (c = 0; c < (int )limit; c++) { if (ONIGENC_IS_CODE_CTYPE(enc, (OnigCodePoint )c, ctype)) BITSET_SET_BIT(cc->bs, c); } @@ -5037,8 +5168,7 @@ code_exist_check(OnigCodePoint c, UChar* from, UChar* end, int ignore_escaped, } static int -parse_char_class(Node** np, OnigToken* tok, UChar** src, UChar* end, - ScanEnv* env) +parse_char_class(Node** np, OnigToken* tok, UChar** src, UChar* end, ScanEnv* env) { int r, neg, len, fetched, and_start; OnigCodePoint v, vs; @@ -5171,7 +5301,7 @@ parse_char_class(Node** np, OnigToken* tok, UChar** src, UChar* end, in_type = (len == 1 ? CCV_SB : CCV_CODE_POINT); val_entry2: r = next_state_val(cc, &vs, v, &val_israw, in_israw, in_type, &val_type, - &state, env); + &state, env); if (r != 0) goto err; break; @@ -5260,7 +5390,7 @@ parse_char_class(Node** np, OnigToken* tok, UChar** src, UChar* end, CC_ESC_WARN(env, (UChar* )"-"); goto range_end_val; } - + if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_ALLOW_DOUBLE_RANGE_OP_IN_CC)) { CC_ESC_WARN(env, (UChar* )"-"); goto range_end_val; /* [0-9-a] is allowed as [0-9\-a] */ @@ -5333,7 +5463,7 @@ parse_char_class(Node** np, OnigToken* tok, UChar** src, UChar* end, if (state == CCS_VALUE) { r = next_state_val(cc, &vs, 0, &val_israw, 0, val_type, - &val_type, &state, env); + &val_type, &state, env); if (r != 0) goto err; } @@ -6053,7 +6183,7 @@ i_apply_case_fold(OnigCodePoint from, OnigCodePoint to[], int to_len, void* arg) if (onig_is_code_in_cc(env->enc, from, cc) #ifdef CASE_FOLD_IS_APPLIED_INSIDE_NEGATIVE_CCLASS - && !IS_NCCLASS_NOT(cc) + && !IS_NCCLASS_NOT(cc) #endif ) { for (i = 0; i < to_len; i++) { @@ -6316,10 +6446,10 @@ parse_exp(Node** np, OnigToken* tok, int term, UChar** src, UChar* end, (len > 1 ? tok->u.backref.refs : &(tok->u.backref.ref1)), tok->u.backref.by_name, #ifdef USE_BACKREF_WITH_LEVEL - tok->u.backref.exist_level, - tok->u.backref.level, + tok->u.backref.exist_level, + tok->u.backref.level, #endif - env); + env); CHECK_NULL_RETURN_MEMERR(*np); break; diff --git a/src/regparse.h b/src/regparse.h index 57219a4..99fe7c9 100644 --- a/src/regparse.h +++ b/src/regparse.h @@ -115,7 +115,7 @@ enum EnclosureType { #define STRING_AMBIG (1<<1) #define STRING_DONT_GET_OPT_INFO (1<<2) -#define NODE_STRING_LEN(node) ((node)->u.str.end - (node)->u.str.s) +#define NODE_STRING_LEN(node) (int )((node)->u.str.end - (node)->u.str.s) #define NODE_STRING_SET_RAW(node) (node)->u.str.flag |= STRING_RAW #define NODE_STRING_CLEAR_RAW(node) (node)->u.str.flag &= ~STRING_RAW #define NODE_STRING_SET_AMBIG(node) (node)->u.str.flag |= STRING_AMBIG @@ -256,7 +256,7 @@ typedef struct { OnigLen min_len; /* min length (byte) */ OnigLen max_len; /* max length (byte) */ int char_len; /* character length */ - int opt_count; /* referenced count in optimize_node_left() */ + int opt_count; /* referenced count in optimize_nodes() */ } EnclosureNode; #ifdef USE_CALL diff --git a/src/regposix.c b/src/regposix.c index 32b11b5..0fdbcbb 100644 --- a/src/regposix.c +++ b/src/regposix.c @@ -40,7 +40,7 @@ if (ONIGENC_MBC_MINLEN(enc) == 1) { \ UChar* tmps = (UChar* )(s); \ while (*tmps != 0) tmps++; \ - len = tmps - (UChar* )(s); \ + len = (int )(tmps - (UChar* )(s));\ } \ else { \ len = onigenc_str_bytelen_null(enc, (UChar* )s); \ diff --git a/src/regsyntax.c b/src/regsyntax.c index 83989b6..3817d38 100644 --- a/src/regsyntax.c +++ b/src/regsyntax.c @@ -215,7 +215,8 @@ OnigSyntaxType OnigSyntaxPerl_NG = { ONIG_SYN_OP2_ESC_G_SUBEXP_CALL | ONIG_SYN_OP2_ESC_CAPITAL_K_KEEP | ONIG_SYN_OP2_ESC_CAPITAL_R_GENERAL_NEWLINE | - ONIG_SYN_OP2_ESC_CAPITAL_N_O_SUPER_DOT ) + ONIG_SYN_OP2_ESC_CAPITAL_N_O_SUPER_DOT | + ONIG_SYN_OP2_QMARK_PERL_SUBEXP_CALL ) , ( SYN_GNU_REGEX_BV | ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP | ONIG_SYN_ALLOW_MULTIPLEX_DEFINITION_NAME ) @@ -237,7 +238,7 @@ extern int onig_set_default_syntax(OnigSyntaxType* syntax) { if (IS_NULL(syntax)) - syntax = ONIG_SYNTAX_RUBY; + syntax = ONIG_SYNTAX_ONIGURUMA; OnigDefaultSyntax = syntax; return 0; @@ -2,7 +2,7 @@ sjis.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2016 K.Kosako <sndgk393 AT ybb DOT ne DOT jp> + * Copyright (c) 2002-2017 K.Kosako <sndgk393 AT ybb DOT ne DOT jp> * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -156,7 +156,7 @@ code_to_mbc(OnigCodePoint code, UChar *buf) if (enclen(ONIG_ENCODING_SJIS, buf) != (p - buf)) return REGERR_INVALID_CODE_POINT_VALUE; #endif - return p - buf; + return (int )(p - buf); } static int @@ -262,7 +262,7 @@ static int property_name_to_ctype(OnigEncoding enc, UChar* p, UChar* end) { struct PropertyNameCtype* pc; - int len = end - p; + int len = (int )(end - p); char q[32]; if (len < sizeof(q) - 1) { diff --git a/src/unicode.c b/src/unicode.c index 65de74a..e585937 100644 --- a/src/unicode.c +++ b/src/unicode.c @@ -29,6 +29,11 @@ #include "regint.h" +struct PoolPropertyNameCtype { + short int name; + short int ctype; +}; + #define ONIGENC_IS_UNICODE_ISO_8859_1_CTYPE(code,ctype) \ ((EncUNICODE_ISO_8859_1_CtypeTable[code] & CTYPE_TO_BIT(ctype)) != 0) @@ -67,183 +72,10 @@ static const unsigned short EncUNICODE_ISO_8859_1_CtypeTable[256] = { 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2 }; -#ifdef USE_UNICODE_PROPERTIES -#include "unicode_property_data.c" -#else -#include "unicode_property_data_posix.c" -#endif - #include "st.h" -#define USER_DEFINED_PROPERTY_MAX_NUM 20 - -typedef struct { - int ctype; - OnigCodePoint* ranges; -} UserDefinedPropertyValue; - -static int UserDefinedPropertyNum; -static UserDefinedPropertyValue -UserDefinedPropertyRanges[USER_DEFINED_PROPERTY_MAX_NUM]; -static st_table* UserDefinedPropertyTable; - -extern int -onig_unicode_define_user_property(const char* name, OnigCodePoint* ranges) -{ - UserDefinedPropertyValue* e; - int r; - int i; - int n; - int len; - int c; - char* s; - - if (UserDefinedPropertyNum >= USER_DEFINED_PROPERTY_MAX_NUM) - return ONIGERR_TOO_MANY_USER_DEFINED_OBJECTS; - - len = strlen(name); - if (len >= PROPERTY_NAME_MAX_SIZE) - return ONIGERR_TOO_LONG_PROPERTY_NAME; - - s = (char* )xmalloc(len + 1); - if (s == 0) - return ONIGERR_MEMORY; - - n = 0; - for (i = 0; i < len; i++) { - c = name[i]; - if (c <= 0 || c >= 0x80) { - xfree(s); - return ONIGERR_INVALID_CHAR_PROPERTY_NAME; - } - - if (c != ' ' && c != '-' && c != '_') { - s[n] = c; - n++; - } - } - s[n] = '\0'; - - if (UserDefinedPropertyTable == 0) { - UserDefinedPropertyTable = onig_st_init_strend_table_with_size(10); - } - - e = UserDefinedPropertyRanges + UserDefinedPropertyNum; - e->ctype = CODE_RANGES_NUM + UserDefinedPropertyNum; - e->ranges = ranges; - r = onig_st_insert_strend(UserDefinedPropertyTable, - (const UChar* )s, (const UChar* )s + n, - (hash_data_type )((void* )e)); - if (r < 0) return r; - - UserDefinedPropertyNum++; - return 0; -} - -extern int -onigenc_unicode_is_code_ctype(OnigCodePoint code, unsigned int ctype) -{ - if ( -#ifdef USE_UNICODE_PROPERTIES - ctype <= ONIGENC_MAX_STD_CTYPE && -#endif - code < 256) { - return ONIGENC_IS_UNICODE_ISO_8859_1_CTYPE(code, ctype); - } - - if (ctype >= CODE_RANGES_NUM) { - int index = ctype - CODE_RANGES_NUM; - if (index < UserDefinedPropertyNum) - return onig_is_in_code_range((UChar* )UserDefinedPropertyRanges[index].ranges, code); - else - return ONIGERR_TYPE_BUG; - } - - return onig_is_in_code_range((UChar* )CodeRanges[ctype], code); -} - - -extern int -onigenc_unicode_ctype_code_range(OnigCtype ctype, const OnigCodePoint* ranges[]) -{ - if (ctype >= CODE_RANGES_NUM) { - int index = ctype - CODE_RANGES_NUM; - if (index < UserDefinedPropertyNum) { - *ranges = UserDefinedPropertyRanges[index].ranges; - return 0; - } - else - return ONIGERR_TYPE_BUG; - } - - *ranges = CodeRanges[ctype]; - return 0; -} - -extern int -onigenc_utf16_32_get_ctype_code_range(OnigCtype ctype, OnigCodePoint* sb_out, - const OnigCodePoint* ranges[]) -{ - *sb_out = 0x00; - return onigenc_unicode_ctype_code_range(ctype, ranges); -} - -extern int -onigenc_unicode_property_name_to_ctype(OnigEncoding enc, UChar* name, UChar* end) -{ - int len; - UChar *p; - OnigCodePoint code; - const struct PropertyNameCtype* pc; - char buf[PROPERTY_NAME_MAX_SIZE]; - - p = name; - len = 0; - while (p < end) { - code = ONIGENC_MBC_TO_CODE(enc, p, end); - if (code >= 0x80) - return ONIGERR_INVALID_CHAR_PROPERTY_NAME; - - if (code != ' ' && code != '-' && code != '_') { - buf[len++] = (char )code; - if (len >= PROPERTY_NAME_MAX_SIZE) - return ONIGERR_INVALID_CHAR_PROPERTY_NAME; - } - - p += enclen(enc, p); - } - - buf[len] = 0; - - if (UserDefinedPropertyTable != 0) { - UserDefinedPropertyValue* e; - e = (UserDefinedPropertyValue* )NULL; - onig_st_lookup_strend(UserDefinedPropertyTable, - (const UChar* )buf, (const UChar* )buf + len, - (hash_data_type* )((void* )(&e))); - if (e != 0) { - return e->ctype; - } - } - - pc = unicode_lookup_property_name(buf, len); - if (pc != 0) { - /* fprintf(stderr, "LOOKUP: %s: %d\n", buf, pc->ctype); */ -#ifndef USE_UNICODE_PROPERTIES - if (pc->ctype > ONIGENC_MAX_STD_CTYPE) - return ONIGERR_INVALID_CHAR_PROPERTY_NAME; -#endif - - return pc->ctype; - } - - return ONIGERR_INVALID_CHAR_PROPERTY_NAME; -} - -/* for use macros in unicode_fold_data.c */ #include "unicode_fold_data.c" - extern int onigenc_unicode_mbc_case_fold(OnigEncoding enc, OnigCaseFoldType flag ARG_UNUSED, const UChar** pp, const UChar* end, @@ -389,7 +221,7 @@ apply_case_fold3(int from, int to, OnigApplyAllCaseFoldFunc f, void* arg) extern int onigenc_unicode_apply_all_case_fold(OnigCaseFoldType flag, - OnigApplyAllCaseFoldFunc f, void* arg) + OnigApplyAllCaseFoldFunc f, void* arg) { int r; @@ -710,7 +542,7 @@ egcb_get_type(OnigCodePoint code) OnigCodePoint low, high, x; enum EGCB_TYPE type; - for (low = 0, high = EGCB_RANGE_NUM; low < high; ) { + for (low = 0, high = (OnigCodePoint )EGCB_RANGE_NUM; low < high; ) { x = (low + high) >> 1; if (code > EGCB_RANGES[x].end) low = x + 1; @@ -718,8 +550,10 @@ egcb_get_type(OnigCodePoint code) high = x; } - type = (low < EGCB_RANGE_NUM && code >= EGCB_RANGES[low].start) ? + type = (low < (OnigCodePoint )EGCB_RANGE_NUM && + code >= EGCB_RANGES[low].start) ? EGCB_RANGES[low].type : EGCB_Other; + return type; } @@ -864,3 +698,188 @@ onigenc_egcb_is_break_position(OnigEncoding enc, UChar* p, UChar* prev, else return 1; #endif /* USE_UNICODE_EXTENDED_GRAPHEME_CLUSTER */ } + + +/* + Undefine __GNUC__ for Escape warnings in Clang. + +./unicode_property_data.c:26730:44: warning: static variable + 'unicode_prop_name_pool_contents' is used in an inline function with + external linkage [-Wstatic-in-inline] + register const char *s = o + unicode_prop_name_pool; +*/ + +#ifdef __clang__ +#undef __GNUC__ +#endif + +#ifdef USE_UNICODE_PROPERTIES +#include "unicode_property_data.c" +#else +#include "unicode_property_data_posix.c" +#endif + +#define USER_DEFINED_PROPERTY_MAX_NUM 20 + +typedef struct { + int ctype; + OnigCodePoint* ranges; +} UserDefinedPropertyValue; + +static int UserDefinedPropertyNum; +static UserDefinedPropertyValue +UserDefinedPropertyRanges[USER_DEFINED_PROPERTY_MAX_NUM]; +static st_table* UserDefinedPropertyTable; + +extern int +onig_unicode_define_user_property(const char* name, OnigCodePoint* ranges) +{ + UserDefinedPropertyValue* e; + int r; + int i; + int n; + int len; + int c; + char* s; + + if (UserDefinedPropertyNum >= USER_DEFINED_PROPERTY_MAX_NUM) + return ONIGERR_TOO_MANY_USER_DEFINED_OBJECTS; + + len = (int )strlen(name); + if (len >= PROPERTY_NAME_MAX_SIZE) + return ONIGERR_TOO_LONG_PROPERTY_NAME; + + s = (char* )xmalloc(len + 1); + if (s == 0) + return ONIGERR_MEMORY; + + n = 0; + for (i = 0; i < len; i++) { + c = name[i]; + if (c <= 0 || c >= 0x80) { + xfree(s); + return ONIGERR_INVALID_CHAR_PROPERTY_NAME; + } + + if (c != ' ' && c != '-' && c != '_') { + s[n] = c; + n++; + } + } + s[n] = '\0'; + + if (UserDefinedPropertyTable == 0) { + UserDefinedPropertyTable = onig_st_init_strend_table_with_size(10); + } + + e = UserDefinedPropertyRanges + UserDefinedPropertyNum; + e->ctype = CODE_RANGES_NUM + UserDefinedPropertyNum; + e->ranges = ranges; + r = onig_st_insert_strend(UserDefinedPropertyTable, + (const UChar* )s, (const UChar* )s + n, + (hash_data_type )((void* )e)); + if (r < 0) return r; + + UserDefinedPropertyNum++; + return 0; +} + +extern int +onigenc_unicode_is_code_ctype(OnigCodePoint code, unsigned int ctype) +{ + if ( +#ifdef USE_UNICODE_PROPERTIES + ctype <= ONIGENC_MAX_STD_CTYPE && +#endif + code < 256) { + return ONIGENC_IS_UNICODE_ISO_8859_1_CTYPE(code, ctype); + } + + if (ctype >= CODE_RANGES_NUM) { + int index = ctype - CODE_RANGES_NUM; + if (index < UserDefinedPropertyNum) + return onig_is_in_code_range((UChar* )UserDefinedPropertyRanges[index].ranges, code); + else + return ONIGERR_TYPE_BUG; + } + + return onig_is_in_code_range((UChar* )CodeRanges[ctype], code); +} + + +extern int +onigenc_unicode_ctype_code_range(OnigCtype ctype, const OnigCodePoint* ranges[]) +{ + if (ctype >= CODE_RANGES_NUM) { + int index = ctype - CODE_RANGES_NUM; + if (index < UserDefinedPropertyNum) { + *ranges = UserDefinedPropertyRanges[index].ranges; + return 0; + } + else + return ONIGERR_TYPE_BUG; + } + + *ranges = CodeRanges[ctype]; + return 0; +} + +extern int +onigenc_utf16_32_get_ctype_code_range(OnigCtype ctype, OnigCodePoint* sb_out, + const OnigCodePoint* ranges[]) +{ + *sb_out = 0x00; + return onigenc_unicode_ctype_code_range(ctype, ranges); +} + +extern int +onigenc_unicode_property_name_to_ctype(OnigEncoding enc, UChar* name, UChar* end) +{ + int len; + UChar *p; + OnigCodePoint code; + const struct PoolPropertyNameCtype* pc; + char buf[PROPERTY_NAME_MAX_SIZE]; + + p = name; + len = 0; + while (p < end) { + code = ONIGENC_MBC_TO_CODE(enc, p, end); + if (code >= 0x80) + return ONIGERR_INVALID_CHAR_PROPERTY_NAME; + + if (code != ' ' && code != '-' && code != '_') { + buf[len++] = (char )code; + if (len >= PROPERTY_NAME_MAX_SIZE) + return ONIGERR_INVALID_CHAR_PROPERTY_NAME; + } + + p += enclen(enc, p); + } + + buf[len] = 0; + + if (UserDefinedPropertyTable != 0) { + UserDefinedPropertyValue* e; + e = (UserDefinedPropertyValue* )NULL; + onig_st_lookup_strend(UserDefinedPropertyTable, + (const UChar* )buf, (const UChar* )buf + len, + (hash_data_type* )((void* )(&e))); + if (e != 0) { + return e->ctype; + } + } + + pc = unicode_lookup_property_name(buf, len); + if (pc != 0) { + /* fprintf(stderr, "LOOKUP: %s: %d\n", buf, pc->ctype); */ +#ifndef USE_UNICODE_PROPERTIES + if (pc->ctype > ONIGENC_MAX_STD_CTYPE) + return ONIGERR_INVALID_CHAR_PROPERTY_NAME; +#endif + + return (int )pc->ctype; + } + + return ONIGERR_INVALID_CHAR_PROPERTY_NAME; +} diff --git a/src/unicode_egcb_data.c b/src/unicode_egcb_data.c index 144d9b3..2304407 100644 --- a/src/unicode_egcb_data.c +++ b/src/unicode_egcb_data.c @@ -1,5 +1,29 @@ -/* Copyright (c) 2017 K.Kosako */ -/* Generated by make_gcb_data.py. */ +/* unicode_egcb_data.c: Generated by make_unicode_egcb_data.py. */ +/*- + * Copyright (c) 2017 K.Kosako <sndgk393 AT ybb DOT ne DOT jp> + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ #define GRAPHEME_BREAK_PROPERTY_VERSION 10_0_0 diff --git a/src/unicode_fold1_key.c b/src/unicode_fold1_key.c index 2151211..ffaa661 100644 --- a/src/unicode_fold1_key.c +++ b/src/unicode_fold1_key.c @@ -69,7 +69,7 @@ __attribute__ ((__gnu_inline__)) int unicode_fold1_key(OnigCodePoint codes[]) { - static const int wordlist[] = + static const short int wordlist[] = { -1, -1, -1, -1, -1, -1, diff --git a/src/unicode_fold2_key.c b/src/unicode_fold2_key.c index 07cfa4e..8a45c9d 100644 --- a/src/unicode_fold2_key.c +++ b/src/unicode_fold2_key.c @@ -69,7 +69,7 @@ __attribute__ ((__gnu_inline__)) int unicode_fold2_key(OnigCodePoint codes[]) { - static const int wordlist[] = + static const short int wordlist[] = { 101, diff --git a/src/unicode_fold3_key.c b/src/unicode_fold3_key.c index 1b4d9d4..deb9d22 100644 --- a/src/unicode_fold3_key.c +++ b/src/unicode_fold3_key.c @@ -69,7 +69,7 @@ __attribute__ ((__gnu_inline__)) int unicode_fold3_key(OnigCodePoint codes[]) { - static const int wordlist[] = + static const short int wordlist[] = { 62, diff --git a/src/unicode_property_data.c b/src/unicode_property_data.c index 1807de4..b25392b 100644 --- a/src/unicode_property_data.c +++ b/src/unicode_property_data.c @@ -1,5 +1,5 @@ /* ANSI-C code produced by gperf version 3.0.4 */ -/* Command-line: gperf -T -C -c -t -j1 -L ANSI-C --ignore-case -N unicode_lookup_property_name --output-file gperf.tmp unicode_property_data.gperf */ +/* Command-line: gperf -T -C -c -t -j1 -L ANSI-C --ignore-case --pic -Q unicode_prop_name_pool -N unicode_lookup_property_name --output-file gperf.tmp unicode_property_data.gperf */ /* Computed positions: -k'1-3,5-6,12,16,$' */ #if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ @@ -22909,6 +22909,9 @@ const CodeRanges[] = { CR_In_No_Block, }; +#define pool_offset(s) offsetof(struct unicode_prop_name_pool_t, unicode_prop_name_pool_str##s) + + #define TOTAL_KEYWORDS 711 #define MIN_WORD_LENGTH 1 #define MAX_WORD_LENGTH 44 @@ -23038,2255 +23041,3684 @@ hash (register const char *str, register unsigned int len) return hval + asso_values[(unsigned char)str[len - 1]]; } +struct unicode_prop_name_pool_t + { + char unicode_prop_name_pool_str1[sizeof("n")]; + char unicode_prop_name_pool_str3[sizeof("z")]; + char unicode_prop_name_pool_str8[sizeof("zzzz")]; + char unicode_prop_name_pool_str9[sizeof("mn")]; + char unicode_prop_name_pool_str10[sizeof("cn")]; + char unicode_prop_name_pool_str14[sizeof("ci")]; + char unicode_prop_name_pool_str15[sizeof("m")]; + char unicode_prop_name_pool_str17[sizeof("c")]; + char unicode_prop_name_pool_str23[sizeof("inmanichaean")]; + char unicode_prop_name_pool_str24[sizeof("mani")]; + char unicode_prop_name_pool_str25[sizeof("mc")]; + char unicode_prop_name_pool_str26[sizeof("cc")]; + char unicode_prop_name_pool_str28[sizeof("qaai")]; + char unicode_prop_name_pool_str34[sizeof("qaac")]; + char unicode_prop_name_pool_str41[sizeof("incham")]; + char unicode_prop_name_pool_str46[sizeof("mandaic")]; + char unicode_prop_name_pool_str49[sizeof("sm")]; + char unicode_prop_name_pool_str51[sizeof("sc")]; + char unicode_prop_name_pool_str56[sizeof("cans")]; + char unicode_prop_name_pool_str61[sizeof("ascii")]; + char unicode_prop_name_pool_str64[sizeof("insamaritan")]; + char unicode_prop_name_pool_str66[sizeof("incuneiform")]; + char unicode_prop_name_pool_str67[sizeof("s")]; + char unicode_prop_name_pool_str68[sizeof("inarmenian")]; + char unicode_prop_name_pool_str69[sizeof("zs")]; + char unicode_prop_name_pool_str76[sizeof("cs")]; + char unicode_prop_name_pool_str85[sizeof("me")]; + char unicode_prop_name_pool_str90[sizeof("incommonindicnumberforms")]; + char unicode_prop_name_pool_str93[sizeof("inavestan")]; + char unicode_prop_name_pool_str94[sizeof("inthai")]; + char unicode_prop_name_pool_str103[sizeof("inipaextensions")]; + char unicode_prop_name_pool_str108[sizeof("initialpunctuation")]; + char unicode_prop_name_pool_str112[sizeof("inancientsymbols")]; + char unicode_prop_name_pool_str114[sizeof("inthaana")]; + char unicode_prop_name_pool_str116[sizeof("cf")]; + char unicode_prop_name_pool_str118[sizeof("incuneiformnumbersandpunctuation")]; + char unicode_prop_name_pool_str122[sizeof("mtei")]; + char unicode_prop_name_pool_str124[sizeof("inspecials")]; + char unicode_prop_name_pool_str133[sizeof("inmusicalsymbols")]; + char unicode_prop_name_pool_str141[sizeof("inmiscellaneousmathematicalsymbolsa")]; + char unicode_prop_name_pool_str145[sizeof("lm")]; + char unicode_prop_name_pool_str146[sizeof("lina")]; + char unicode_prop_name_pool_str147[sizeof("lc")]; + char unicode_prop_name_pool_str149[sizeof("inlycian")]; + char unicode_prop_name_pool_str155[sizeof("lana")]; + char unicode_prop_name_pool_str157[sizeof("intaixuanjingsymbols")]; + char unicode_prop_name_pool_str158[sizeof("inmyanmarextendeda")]; + char unicode_prop_name_pool_str159[sizeof("alnum")]; + char unicode_prop_name_pool_str161[sizeof("sterm")]; + char unicode_prop_name_pool_str162[sizeof("intaitham")]; + char unicode_prop_name_pool_str163[sizeof("intransportandmapsymbols")]; + char unicode_prop_name_pool_str165[sizeof("taile")]; + char unicode_prop_name_pool_str167[sizeof("inmalayalam")]; + char unicode_prop_name_pool_str176[sizeof("inmiscellaneoussymbols")]; + char unicode_prop_name_pool_str177[sizeof("incontrolpictures")]; + char unicode_prop_name_pool_str185[sizeof("inmiscellaneoussymbolsandarrows")]; + char unicode_prop_name_pool_str189[sizeof("inlineara")]; + char unicode_prop_name_pool_str190[sizeof("inmiscellaneoussymbolsandpictographs")]; + char unicode_prop_name_pool_str193[sizeof("sinhala")]; + char unicode_prop_name_pool_str202[sizeof("taiviet")]; + char unicode_prop_name_pool_str205[sizeof("ext")]; + char unicode_prop_name_pool_str215[sizeof("latn")]; + char unicode_prop_name_pool_str216[sizeof("latin")]; + char unicode_prop_name_pool_str217[sizeof("ital")]; + char unicode_prop_name_pool_str218[sizeof("intamil")]; + char unicode_prop_name_pool_str220[sizeof("inmultani")]; + char unicode_prop_name_pool_str222[sizeof("taml")]; + char unicode_prop_name_pool_str229[sizeof("inrunic")]; + char unicode_prop_name_pool_str230[sizeof("incarian")]; + char unicode_prop_name_pool_str232[sizeof("armn")]; + char unicode_prop_name_pool_str234[sizeof("armi")]; + char unicode_prop_name_pool_str235[sizeof("cari")]; + char unicode_prop_name_pool_str236[sizeof("inlatinextendedc")]; + char unicode_prop_name_pool_str238[sizeof("armenian")]; + char unicode_prop_name_pool_str239[sizeof("inmyanmar")]; + char unicode_prop_name_pool_str240[sizeof("incyrillic")]; + char unicode_prop_name_pool_str242[sizeof("inlatinextendeda")]; + char unicode_prop_name_pool_str246[sizeof("carian")]; + char unicode_prop_name_pool_str249[sizeof("intaile")]; + char unicode_prop_name_pool_str253[sizeof("tale")]; + char unicode_prop_name_pool_str256[sizeof("arabic")]; + char unicode_prop_name_pool_str259[sizeof("l")]; + char unicode_prop_name_pool_str260[sizeof("nl")]; + char unicode_prop_name_pool_str261[sizeof("zl")]; + char unicode_prop_name_pool_str263[sizeof("insyriac")]; + char unicode_prop_name_pool_str265[sizeof("samr")]; + char unicode_prop_name_pool_str267[sizeof("merc")]; + char unicode_prop_name_pool_str269[sizeof("inlinearbideograms")]; + char unicode_prop_name_pool_str272[sizeof("samaritan")]; + char unicode_prop_name_pool_str273[sizeof("lt")]; + char unicode_prop_name_pool_str276[sizeof("insharada")]; + char unicode_prop_name_pool_str283[sizeof("inmeeteimayekextensions")]; + char unicode_prop_name_pool_str292[sizeof("inruminumeralsymbols")]; + char unicode_prop_name_pool_str295[sizeof("miao")]; + char unicode_prop_name_pool_str296[sizeof("inlatinextendede")]; + char unicode_prop_name_pool_str300[sizeof("zinh")]; + char unicode_prop_name_pool_str304[sizeof("inahom")]; + char unicode_prop_name_pool_str306[sizeof("incherokee")]; + char unicode_prop_name_pool_str307[sizeof("han")]; + char unicode_prop_name_pool_str310[sizeof("hani")]; + char unicode_prop_name_pool_str311[sizeof("inosmanya")]; + char unicode_prop_name_pool_str312[sizeof("inmiscellaneoustechnical")]; + char unicode_prop_name_pool_str323[sizeof("cham")]; + char unicode_prop_name_pool_str325[sizeof("inmahajani")]; + char unicode_prop_name_pool_str326[sizeof("osma")]; + char unicode_prop_name_pool_str329[sizeof("manichaean")]; + char unicode_prop_name_pool_str330[sizeof("term")]; + char unicode_prop_name_pool_str332[sizeof("sinh")]; + char unicode_prop_name_pool_str342[sizeof("cntrl")]; + char unicode_prop_name_pool_str347[sizeof("chakma")]; + char unicode_prop_name_pool_str348[sizeof("insinhala")]; + char unicode_prop_name_pool_str352[sizeof("tamil")]; + char unicode_prop_name_pool_str353[sizeof("inethiopic")]; + char unicode_prop_name_pool_str356[sizeof("connectorpunctuation")]; + char unicode_prop_name_pool_str357[sizeof("shavian")]; + char unicode_prop_name_pool_str361[sizeof("joinc")]; + char unicode_prop_name_pool_str362[sizeof("inenclosedalphanumerics")]; + char unicode_prop_name_pool_str368[sizeof("ahex")]; + char unicode_prop_name_pool_str369[sizeof("inlatinextendedadditional")]; + char unicode_prop_name_pool_str370[sizeof("lineara")]; + char unicode_prop_name_pool_str377[sizeof("inenclosedcjklettersandmonths")]; + char unicode_prop_name_pool_str378[sizeof("hex")]; + char unicode_prop_name_pool_str381[sizeof("thai")]; + char unicode_prop_name_pool_str382[sizeof("mahj")]; + char unicode_prop_name_pool_str386[sizeof("math")]; + char unicode_prop_name_pool_str389[sizeof("ll")]; + char unicode_prop_name_pool_str390[sizeof("thaa")]; + char unicode_prop_name_pool_str392[sizeof("hatran")]; + char unicode_prop_name_pool_str399[sizeof("mahajani")]; + char unicode_prop_name_pool_str400[sizeof("insinhalaarchaicnumbers")]; + char unicode_prop_name_pool_str402[sizeof("taitham")]; + char unicode_prop_name_pool_str403[sizeof("thaana")]; + char unicode_prop_name_pool_str408[sizeof("ethi")]; + char unicode_prop_name_pool_str409[sizeof("inenclosedalphanumericsupplement")]; + char unicode_prop_name_pool_str414[sizeof("meroiticcursive")]; + char unicode_prop_name_pool_str415[sizeof("inideographicdescriptioncharacters")]; + char unicode_prop_name_pool_str419[sizeof("terminalpunctuation")]; + char unicode_prop_name_pool_str426[sizeof("inemoticons")]; + char unicode_prop_name_pool_str431[sizeof("intifinagh")]; + char unicode_prop_name_pool_str433[sizeof("asciihexdigit")]; + char unicode_prop_name_pool_str438[sizeof("tifinagh")]; + char unicode_prop_name_pool_str451[sizeof("inearlydynasticcuneiform")]; + char unicode_prop_name_pool_str457[sizeof("inopticalcharacterrecognition")]; + char unicode_prop_name_pool_str479[sizeof("loe")]; + char unicode_prop_name_pool_str486[sizeof("titlecaseletter")]; + char unicode_prop_name_pool_str489[sizeof("inscriptionalparthian")]; + char unicode_prop_name_pool_str510[sizeof("oriya")]; + char unicode_prop_name_pool_str520[sizeof("hira")]; + char unicode_prop_name_pool_str529[sizeof("sora")]; + char unicode_prop_name_pool_str530[sizeof("mero")]; + char unicode_prop_name_pool_str535[sizeof("inarrows")]; + char unicode_prop_name_pool_str537[sizeof("inhiragana")]; + char unicode_prop_name_pool_str544[sizeof("no")]; + char unicode_prop_name_pool_str545[sizeof("inmahjongtiles")]; + char unicode_prop_name_pool_str549[sizeof("innko")]; + char unicode_prop_name_pool_str552[sizeof("co")]; + char unicode_prop_name_pool_str553[sizeof("cher")]; + char unicode_prop_name_pool_str556[sizeof("inmro")]; + char unicode_prop_name_pool_str563[sizeof("common")]; + char unicode_prop_name_pool_str564[sizeof("cwcm")]; + char unicode_prop_name_pool_str568[sizeof("inmiao")]; + char unicode_prop_name_pool_str573[sizeof("inscriptionalpahlavi")]; + char unicode_prop_name_pool_str576[sizeof("inmathematicalalphanumericsymbols")]; + char unicode_prop_name_pool_str577[sizeof("so")]; + char unicode_prop_name_pool_str579[sizeof("hano")]; + char unicode_prop_name_pool_str580[sizeof("tirh")]; + char unicode_prop_name_pool_str584[sizeof("inhatran")]; + char unicode_prop_name_pool_str585[sizeof("inolchiki")]; + char unicode_prop_name_pool_str586[sizeof("ahom")]; + char unicode_prop_name_pool_str588[sizeof("di")]; + char unicode_prop_name_pool_str589[sizeof("hatr")]; + char unicode_prop_name_pool_str591[sizeof("inogham")]; + char unicode_prop_name_pool_str596[sizeof("intirhuta")]; + char unicode_prop_name_pool_str601[sizeof("inmodi")]; + char unicode_prop_name_pool_str603[sizeof("idc")]; + char unicode_prop_name_pool_str604[sizeof("mand")]; + char unicode_prop_name_pool_str608[sizeof("inmandaic")]; + char unicode_prop_name_pool_str609[sizeof("dia")]; + char unicode_prop_name_pool_str610[sizeof("cwcf")]; + char unicode_prop_name_pool_str618[sizeof("xidc")]; + char unicode_prop_name_pool_str621[sizeof("sind")]; + char unicode_prop_name_pool_str622[sizeof("newline")]; + char unicode_prop_name_pool_str631[sizeof("mend")]; + char unicode_prop_name_pool_str635[sizeof("newtailue")]; + char unicode_prop_name_pool_str638[sizeof("inshorthandformatcontrols")]; + char unicode_prop_name_pool_str642[sizeof("anatolianhieroglyphs")]; + char unicode_prop_name_pool_str643[sizeof("xids")]; + char unicode_prop_name_pool_str653[sizeof("ids")]; + char unicode_prop_name_pool_str659[sizeof("innewtailue")]; + char unicode_prop_name_pool_str660[sizeof("insylotinagri")]; + char unicode_prop_name_pool_str666[sizeof("insundanese")]; + char unicode_prop_name_pool_str673[sizeof("lo")]; + char unicode_prop_name_pool_str677[sizeof("indominotiles")]; + char unicode_prop_name_pool_str678[sizeof("inlao")]; + char unicode_prop_name_pool_str685[sizeof("lao")]; + char unicode_prop_name_pool_str686[sizeof("laoo")]; + char unicode_prop_name_pool_str687[sizeof("mongolian")]; + char unicode_prop_name_pool_str690[sizeof("cwt")]; + char unicode_prop_name_pool_str692[sizeof("idst")]; + char unicode_prop_name_pool_str693[sizeof("format")]; + char unicode_prop_name_pool_str696[sizeof("lineseparator")]; + char unicode_prop_name_pool_str702[sizeof("letter")]; + char unicode_prop_name_pool_str711[sizeof("idcontinue")]; + char unicode_prop_name_pool_str714[sizeof("inanatolianhieroglyphs")]; + char unicode_prop_name_pool_str723[sizeof("inlydian")]; + char unicode_prop_name_pool_str725[sizeof("pi")]; + char unicode_prop_name_pool_str726[sizeof("nchar")]; + char unicode_prop_name_pool_str731[sizeof("inspacingmodifierletters")]; + char unicode_prop_name_pool_str732[sizeof("oalpha")]; + char unicode_prop_name_pool_str735[sizeof("indeseret")]; + char unicode_prop_name_pool_str737[sizeof("pc")]; + char unicode_prop_name_pool_str756[sizeof("xdigit")]; + char unicode_prop_name_pool_str758[sizeof("inphaistosdisc")]; + char unicode_prop_name_pool_str759[sizeof("joincontrol")]; + char unicode_prop_name_pool_str760[sizeof("inlowsurrogates")]; + char unicode_prop_name_pool_str762[sizeof("mro")]; + char unicode_prop_name_pool_str763[sizeof("mroo")]; + char unicode_prop_name_pool_str767[sizeof("xidstart")]; + char unicode_prop_name_pool_str773[sizeof("wara")]; + char unicode_prop_name_pool_str776[sizeof("inwarangciti")]; + char unicode_prop_name_pool_str787[sizeof("ps")]; + char unicode_prop_name_pool_str797[sizeof("pe")]; + char unicode_prop_name_pool_str806[sizeof("cwl")]; + char unicode_prop_name_pool_str816[sizeof("incoptic")]; + char unicode_prop_name_pool_str824[sizeof("diacritic")]; + char unicode_prop_name_pool_str827[sizeof("pf")]; + char unicode_prop_name_pool_str844[sizeof("space")]; + char unicode_prop_name_pool_str853[sizeof("hanunoo")]; + char unicode_prop_name_pool_str856[sizeof("incyrillicextendeda")]; + char unicode_prop_name_pool_str860[sizeof("odi")]; + char unicode_prop_name_pool_str866[sizeof("modi")]; + char unicode_prop_name_pool_str867[sizeof("oidc")]; + char unicode_prop_name_pool_str868[sizeof("incopticepactnumbers")]; + char unicode_prop_name_pool_str870[sizeof("palm")]; + char unicode_prop_name_pool_str871[sizeof("insundanesesupplement")]; + char unicode_prop_name_pool_str872[sizeof("patws")]; + char unicode_prop_name_pool_str876[sizeof("inolditalic")]; + char unicode_prop_name_pool_str877[sizeof("inlepcha")]; + char unicode_prop_name_pool_str878[sizeof("shaw")]; + char unicode_prop_name_pool_str880[sizeof("omath")]; + char unicode_prop_name_pool_str886[sizeof("alpha")]; + char unicode_prop_name_pool_str892[sizeof("oids")]; + char unicode_prop_name_pool_str896[sizeof("control")]; + char unicode_prop_name_pool_str897[sizeof("ideo")]; + char unicode_prop_name_pool_str898[sizeof("lepc")]; + char unicode_prop_name_pool_str899[sizeof("psalterpahlavi")]; + char unicode_prop_name_pool_str900[sizeof("dsrt")]; + char unicode_prop_name_pool_str902[sizeof("otheridcontinue")]; + char unicode_prop_name_pool_str906[sizeof("inpalmyrene")]; + char unicode_prop_name_pool_str907[sizeof("decimalnumber")]; + char unicode_prop_name_pool_str915[sizeof("noncharactercodepoint")]; + char unicode_prop_name_pool_str916[sizeof("idstart")]; + char unicode_prop_name_pool_str917[sizeof("otheralphabetic")]; + char unicode_prop_name_pool_str918[sizeof("letternumber")]; + char unicode_prop_name_pool_str923[sizeof("dash")]; + char unicode_prop_name_pool_str926[sizeof("xidcontinue")]; + char unicode_prop_name_pool_str930[sizeof("finalpunctuation")]; + char unicode_prop_name_pool_str931[sizeof("extender")]; + char unicode_prop_name_pool_str935[sizeof("siddham")]; + char unicode_prop_name_pool_str945[sizeof("inoldturkic")]; + char unicode_prop_name_pool_str948[sizeof("sharada")]; + char unicode_prop_name_pool_str951[sizeof("whitespace")]; + char unicode_prop_name_pool_str956[sizeof("inmodifiertoneletters")]; + char unicode_prop_name_pool_str958[sizeof("radical")]; + char unicode_prop_name_pool_str960[sizeof("canadianaboriginal")]; + char unicode_prop_name_pool_str969[sizeof("inethiopicextendeda")]; + char unicode_prop_name_pool_str970[sizeof("imperialaramaic")]; + char unicode_prop_name_pool_str978[sizeof("perm")]; + char unicode_prop_name_pool_str979[sizeof("deseret")]; + char unicode_prop_name_pool_str984[sizeof("casedletter")]; + char unicode_prop_name_pool_str998[sizeof("inimperialaramaic")]; + char unicode_prop_name_pool_str1001[sizeof("otheridstart")]; + char unicode_prop_name_pool_str1006[sizeof("prti")]; + char unicode_prop_name_pool_str1012[sizeof("cprt")]; + char unicode_prop_name_pool_str1018[sizeof("othersymbol")]; + char unicode_prop_name_pool_str1022[sizeof("coptic")]; + char unicode_prop_name_pool_str1037[sizeof("otherlowercase")]; + char unicode_prop_name_pool_str1038[sizeof("phnx")]; + char unicode_prop_name_pool_str1042[sizeof("inphoenician")]; + char unicode_prop_name_pool_str1049[sizeof("incaucasianalbanian")]; + char unicode_prop_name_pool_str1050[sizeof("inlatin1supplement")]; + char unicode_prop_name_pool_str1054[sizeof("xpeo")]; + char unicode_prop_name_pool_str1058[sizeof("ininscriptionalparthian")]; + char unicode_prop_name_pool_str1059[sizeof("ininscriptionalpahlavi")]; + char unicode_prop_name_pool_str1060[sizeof("other")]; + char unicode_prop_name_pool_str1061[sizeof("privateuse")]; + char unicode_prop_name_pool_str1066[sizeof("othernumber")]; + char unicode_prop_name_pool_str1071[sizeof("inenclosedideographicsupplement")]; + char unicode_prop_name_pool_str1073[sizeof("copt")]; + char unicode_prop_name_pool_str1078[sizeof("print")]; + char unicode_prop_name_pool_str1080[sizeof("cuneiform")]; + char unicode_prop_name_pool_str1081[sizeof("olditalic")]; + char unicode_prop_name_pool_str1082[sizeof("xsux")]; + char unicode_prop_name_pool_str1086[sizeof("inmongolian")]; + char unicode_prop_name_pool_str1091[sizeof("inancientgreekmusicalnotation")]; + char unicode_prop_name_pool_str1092[sizeof("sundanese")]; + char unicode_prop_name_pool_str1093[sizeof("inoldnortharabian")]; + char unicode_prop_name_pool_str1095[sizeof("patternsyntax")]; + char unicode_prop_name_pool_str1098[sizeof("inherited")]; + char unicode_prop_name_pool_str1099[sizeof("ingrantha")]; + char unicode_prop_name_pool_str1100[sizeof("inphoneticextensions")]; + char unicode_prop_name_pool_str1110[sizeof("saurashtra")]; + char unicode_prop_name_pool_str1116[sizeof("inancientgreeknumbers")]; + char unicode_prop_name_pool_str1122[sizeof("shrd")]; + char unicode_prop_name_pool_str1126[sizeof("inoldsoutharabian")]; + char unicode_prop_name_pool_str1127[sizeof("innabataean")]; + char unicode_prop_name_pool_str1128[sizeof("inalphabeticpresentationforms")]; + char unicode_prop_name_pool_str1129[sizeof("spaceseparator")]; + char unicode_prop_name_pool_str1135[sizeof("olower")]; + char unicode_prop_name_pool_str1137[sizeof("ingeneralpunctuation")]; + char unicode_prop_name_pool_str1138[sizeof("inunifiedcanadianaboriginalsyllabics")]; + char unicode_prop_name_pool_str1140[sizeof("bamum")]; + char unicode_prop_name_pool_str1143[sizeof("inarabic")]; + char unicode_prop_name_pool_str1147[sizeof("phli")]; + char unicode_prop_name_pool_str1148[sizeof("inphoneticextensionssupplement")]; + char unicode_prop_name_pool_str1150[sizeof("patternwhitespace")]; + char unicode_prop_name_pool_str1152[sizeof("inbasiclatin")]; + char unicode_prop_name_pool_str1154[sizeof("othermath")]; + char unicode_prop_name_pool_str1155[sizeof("idsbinaryoperator")]; + char unicode_prop_name_pool_str1156[sizeof("inmathematicaloperators")]; + char unicode_prop_name_pool_str1157[sizeof("multani")]; + char unicode_prop_name_pool_str1158[sizeof("ingujarati")]; + char unicode_prop_name_pool_str1163[sizeof("inelbasan")]; + char unicode_prop_name_pool_str1164[sizeof("inoldhungarian")]; + char unicode_prop_name_pool_str1165[sizeof("innumberforms")]; + char unicode_prop_name_pool_str1166[sizeof("nd")]; + char unicode_prop_name_pool_str1168[sizeof("yi")]; + char unicode_prop_name_pool_str1169[sizeof("lisu")]; + char unicode_prop_name_pool_str1172[sizeof("yiii")]; + char unicode_prop_name_pool_str1174[sizeof("inpsalterpahlavi")]; + char unicode_prop_name_pool_str1178[sizeof("tagbanwa")]; + char unicode_prop_name_pool_str1184[sizeof("bass")]; + char unicode_prop_name_pool_str1189[sizeof("nbat")]; + char unicode_prop_name_pool_str1190[sizeof("inbyzantinemusicalsymbols")]; + char unicode_prop_name_pool_str1192[sizeof("closepunctuation")]; + char unicode_prop_name_pool_str1194[sizeof("tfng")]; + char unicode_prop_name_pool_str1195[sizeof("otherletter")]; + char unicode_prop_name_pool_str1199[sizeof("sd")]; + char unicode_prop_name_pool_str1202[sizeof("lowercase")]; + char unicode_prop_name_pool_str1203[sizeof("sidd")]; + char unicode_prop_name_pool_str1205[sizeof("nabataean")]; + char unicode_prop_name_pool_str1207[sizeof("lepcha")]; + char unicode_prop_name_pool_str1208[sizeof("inarabicpresentationformsa")]; + char unicode_prop_name_pool_str1210[sizeof("modifierletter")]; + char unicode_prop_name_pool_str1211[sizeof("intags")]; + char unicode_prop_name_pool_str1212[sizeof("mult")]; + char unicode_prop_name_pool_str1215[sizeof("insiddham")]; + char unicode_prop_name_pool_str1216[sizeof("talu")]; + char unicode_prop_name_pool_str1221[sizeof("cased")]; + char unicode_prop_name_pool_str1223[sizeof("intibetan")]; + char unicode_prop_name_pool_str1230[sizeof("separator")]; + char unicode_prop_name_pool_str1232[sizeof("runic")]; + char unicode_prop_name_pool_str1233[sizeof("inmiscellaneousmathematicalsymbolsb")]; + char unicode_prop_name_pool_str1238[sizeof("linb")]; + char unicode_prop_name_pool_str1239[sizeof("inbraillepatterns")]; + char unicode_prop_name_pool_str1240[sizeof("oldpersian")]; + char unicode_prop_name_pool_str1242[sizeof("inugaritic")]; + char unicode_prop_name_pool_str1243[sizeof("telu")]; + char unicode_prop_name_pool_str1245[sizeof("limb")]; + char unicode_prop_name_pool_str1247[sizeof("oldpermic")]; + char unicode_prop_name_pool_str1249[sizeof("bali")]; + char unicode_prop_name_pool_str1250[sizeof("inmyanmarextendedb")]; + char unicode_prop_name_pool_str1251[sizeof("tibt")]; + char unicode_prop_name_pool_str1259[sizeof("saur")]; + char unicode_prop_name_pool_str1263[sizeof("po")]; + char unicode_prop_name_pool_str1265[sizeof("tibetan")]; + char unicode_prop_name_pool_str1280[sizeof("insaurashtra")]; + char unicode_prop_name_pool_str1284[sizeof("inbalinese")]; + char unicode_prop_name_pool_str1285[sizeof("elba")]; + char unicode_prop_name_pool_str1290[sizeof("bengali")]; + char unicode_prop_name_pool_str1291[sizeof("gran")]; + char unicode_prop_name_pool_str1295[sizeof("phoenician")]; + char unicode_prop_name_pool_str1297[sizeof("ingurmukhi")]; + char unicode_prop_name_pool_str1300[sizeof("caseignorable")]; + char unicode_prop_name_pool_str1305[sizeof("lyci")]; + char unicode_prop_name_pool_str1307[sizeof("inyijinghexagramsymbols")]; + char unicode_prop_name_pool_str1309[sizeof("mlym")]; + char unicode_prop_name_pool_str1316[sizeof("lycian")]; + char unicode_prop_name_pool_str1321[sizeof("elbasan")]; + char unicode_prop_name_pool_str1327[sizeof("balinese")]; + char unicode_prop_name_pool_str1328[sizeof("narb")]; + char unicode_prop_name_pool_str1330[sizeof("brai")]; + char unicode_prop_name_pool_str1333[sizeof("insuttonsignwriting")]; + char unicode_prop_name_pool_str1335[sizeof("insorasompeng")]; + char unicode_prop_name_pool_str1336[sizeof("malayalam")]; + char unicode_prop_name_pool_str1339[sizeof("arab")]; + char unicode_prop_name_pool_str1341[sizeof("brahmi")]; + char unicode_prop_name_pool_str1343[sizeof("incountingrodnumerals")]; + char unicode_prop_name_pool_str1347[sizeof("rjng")]; + char unicode_prop_name_pool_str1348[sizeof("mong")]; + char unicode_prop_name_pool_str1352[sizeof("incyrillicsupplement")]; + char unicode_prop_name_pool_str1359[sizeof("ogam")]; + char unicode_prop_name_pool_str1361[sizeof("sarb")]; + char unicode_prop_name_pool_str1362[sizeof("lower")]; + char unicode_prop_name_pool_str1364[sizeof("inrejang")]; + char unicode_prop_name_pool_str1370[sizeof("hmng")]; + char unicode_prop_name_pool_str1373[sizeof("tirhuta")]; + char unicode_prop_name_pool_str1374[sizeof("hang")]; + char unicode_prop_name_pool_str1379[sizeof("wspace")]; + char unicode_prop_name_pool_str1384[sizeof("inlatinextendedd")]; + char unicode_prop_name_pool_str1387[sizeof("invai")]; + char unicode_prop_name_pool_str1388[sizeof("incherokeesupplement")]; + char unicode_prop_name_pool_str1390[sizeof("mymr")]; + char unicode_prop_name_pool_str1394[sizeof("vai")]; + char unicode_prop_name_pool_str1395[sizeof("vaii")]; + char unicode_prop_name_pool_str1408[sizeof("ethiopic")]; + char unicode_prop_name_pool_str1410[sizeof("sylotinagri")]; + char unicode_prop_name_pool_str1415[sizeof("myanmar")]; + char unicode_prop_name_pool_str1417[sizeof("syrc")]; + char unicode_prop_name_pool_str1419[sizeof("inbrahmi")]; + char unicode_prop_name_pool_str1423[sizeof("mathsymbol")]; + char unicode_prop_name_pool_str1425[sizeof("runr")]; + char unicode_prop_name_pool_str1431[sizeof("inshavian")]; + char unicode_prop_name_pool_str1432[sizeof("gothic")]; + char unicode_prop_name_pool_str1438[sizeof("syriac")]; + char unicode_prop_name_pool_str1439[sizeof("p")]; + char unicode_prop_name_pool_str1441[sizeof("zp")]; + char unicode_prop_name_pool_str1442[sizeof("induployan")]; + char unicode_prop_name_pool_str1444[sizeof("vs")]; + char unicode_prop_name_pool_str1447[sizeof("ingreekandcoptic")]; + char unicode_prop_name_pool_str1448[sizeof("ingothic")]; + char unicode_prop_name_pool_str1451[sizeof("lowercaseletter")]; + char unicode_prop_name_pool_str1455[sizeof("inoriya")]; + char unicode_prop_name_pool_str1461[sizeof("grext")]; + char unicode_prop_name_pool_str1462[sizeof("linearb")]; + char unicode_prop_name_pool_str1463[sizeof("inyiradicals")]; + char unicode_prop_name_pool_str1465[sizeof("inethiopicsupplement")]; + char unicode_prop_name_pool_str1466[sizeof("inletterlikesymbols")]; + char unicode_prop_name_pool_str1467[sizeof("ingeometricshapes")]; + char unicode_prop_name_pool_str1469[sizeof("java")]; + char unicode_prop_name_pool_str1470[sizeof("inblockelements")]; + char unicode_prop_name_pool_str1472[sizeof("number")]; + char unicode_prop_name_pool_str1473[sizeof("incombininghalfmarks")]; + char unicode_prop_name_pool_str1474[sizeof("inbassavah")]; + char unicode_prop_name_pool_str1489[sizeof("inlinearbsyllabary")]; + char unicode_prop_name_pool_str1491[sizeof("osmanya")]; + char unicode_prop_name_pool_str1495[sizeof("avst")]; + char unicode_prop_name_pool_str1500[sizeof("hexdigit")]; + char unicode_prop_name_pool_str1504[sizeof("injavanese")]; + char unicode_prop_name_pool_str1513[sizeof("cyrl")]; + char unicode_prop_name_pool_str1514[sizeof("avestan")]; + char unicode_prop_name_pool_str1531[sizeof("intaiviet")]; + char unicode_prop_name_pool_str1532[sizeof("inornamentaldingbats")]; + char unicode_prop_name_pool_str1533[sizeof("tavt")]; + char unicode_prop_name_pool_str1538[sizeof("javanese")]; + char unicode_prop_name_pool_str1539[sizeof("inethiopicextended")]; + char unicode_prop_name_pool_str1550[sizeof("inhalfwidthandfullwidthforms")]; + char unicode_prop_name_pool_str1559[sizeof("ingeorgian")]; + char unicode_prop_name_pool_str1561[sizeof("inarabicmathematicalalphabeticsymbols")]; + char unicode_prop_name_pool_str1569[sizeof("hangul")]; + char unicode_prop_name_pool_str1571[sizeof("insuperscriptsandsubscripts")]; + char unicode_prop_name_pool_str1576[sizeof("inhanunoo")]; + char unicode_prop_name_pool_str1578[sizeof("inhangulsyllables")]; + char unicode_prop_name_pool_str1586[sizeof("inoldpersian")]; + char unicode_prop_name_pool_str1589[sizeof("geor")]; + char unicode_prop_name_pool_str1591[sizeof("otherpunctuation")]; + char unicode_prop_name_pool_str1593[sizeof("inoldpermic")]; + char unicode_prop_name_pool_str1598[sizeof("inalchemicalsymbols")]; + char unicode_prop_name_pool_str1599[sizeof("sylo")]; + char unicode_prop_name_pool_str1601[sizeof("hiragana")]; + char unicode_prop_name_pool_str1604[sizeof("word")]; + char unicode_prop_name_pool_str1612[sizeof("inmeroitichieroglyphs")]; + char unicode_prop_name_pool_str1614[sizeof("insmallformvariants")]; + char unicode_prop_name_pool_str1620[sizeof("sund")]; + char unicode_prop_name_pool_str1621[sizeof("brah")]; + char unicode_prop_name_pool_str1623[sizeof("insupplementalmathematicaloperators")]; + char unicode_prop_name_pool_str1624[sizeof("glagolitic")]; + char unicode_prop_name_pool_str1627[sizeof("braille")]; + char unicode_prop_name_pool_str1639[sizeof("unassigned")]; + char unicode_prop_name_pool_str1640[sizeof("sgnw")]; + char unicode_prop_name_pool_str1644[sizeof("plrd")]; + char unicode_prop_name_pool_str1648[sizeof("hebr")]; + char unicode_prop_name_pool_str1649[sizeof("ogham")]; + char unicode_prop_name_pool_str1654[sizeof("cyrillic")]; + char unicode_prop_name_pool_str1658[sizeof("orya")]; + char unicode_prop_name_pool_str1669[sizeof("grantha")]; + char unicode_prop_name_pool_str1684[sizeof("invariationselectors")]; + char unicode_prop_name_pool_str1693[sizeof("indingbats")]; + char unicode_prop_name_pool_str1695[sizeof("inunifiedcanadianaboriginalsyllabicsextended")]; + char unicode_prop_name_pool_str1702[sizeof("inhanguljamoextendeda")]; + char unicode_prop_name_pool_str1705[sizeof("goth")]; + char unicode_prop_name_pool_str1706[sizeof("graphemebase")]; + char unicode_prop_name_pool_str1708[sizeof("bidic")]; + char unicode_prop_name_pool_str1717[sizeof("ogrext")]; + char unicode_prop_name_pool_str1724[sizeof("idsb")]; + char unicode_prop_name_pool_str1732[sizeof("invariationselectorssupplement")]; + char unicode_prop_name_pool_str1733[sizeof("assigned")]; + char unicode_prop_name_pool_str1737[sizeof("symbol")]; + char unicode_prop_name_pool_str1741[sizeof("ingreekextended")]; + char unicode_prop_name_pool_str1743[sizeof("pauc")]; + char unicode_prop_name_pool_str1752[sizeof("meroitichieroglyphs")]; + char unicode_prop_name_pool_str1754[sizeof("logicalorderexception")]; + char unicode_prop_name_pool_str1771[sizeof("incurrencysymbols")]; + char unicode_prop_name_pool_str1775[sizeof("inarabicextendeda")]; + char unicode_prop_name_pool_str1783[sizeof("insupplementalarrowsc")]; + char unicode_prop_name_pool_str1786[sizeof("insupplementalarrowsa")]; + char unicode_prop_name_pool_str1788[sizeof("inkannada")]; + char unicode_prop_name_pool_str1792[sizeof("kana")]; + char unicode_prop_name_pool_str1793[sizeof("phagspa")]; + char unicode_prop_name_pool_str1796[sizeof("cakm")]; + char unicode_prop_name_pool_str1797[sizeof("digit")]; + char unicode_prop_name_pool_str1802[sizeof("softdotted")]; + char unicode_prop_name_pool_str1806[sizeof("inchakma")]; + char unicode_prop_name_pool_str1818[sizeof("inphagspa")]; + char unicode_prop_name_pool_str1822[sizeof("inhighprivateusesurrogates")]; + char unicode_prop_name_pool_str1836[sizeof("warangciti")]; + char unicode_prop_name_pool_str1844[sizeof("incjkcompatibilityforms")]; + char unicode_prop_name_pool_str1847[sizeof("idstrinaryoperator")]; + char unicode_prop_name_pool_str1849[sizeof("incjkcompatibilityideographs")]; + char unicode_prop_name_pool_str1851[sizeof("inkaithi")]; + char unicode_prop_name_pool_str1857[sizeof("takri")]; + char unicode_prop_name_pool_str1864[sizeof("phlp")]; + char unicode_prop_name_pool_str1865[sizeof("mendekikakui")]; + char unicode_prop_name_pool_str1867[sizeof("punct")]; + char unicode_prop_name_pool_str1870[sizeof("otherdefaultignorablecodepoint")]; + char unicode_prop_name_pool_str1871[sizeof("inkatakana")]; + char unicode_prop_name_pool_str1878[sizeof("graph")]; + char unicode_prop_name_pool_str1879[sizeof("lydi")]; + char unicode_prop_name_pool_str1885[sizeof("pd")]; + char unicode_prop_name_pool_str1887[sizeof("incjkstrokes")]; + char unicode_prop_name_pool_str1890[sizeof("lydian")]; + char unicode_prop_name_pool_str1895[sizeof("sorasompeng")]; + char unicode_prop_name_pool_str1897[sizeof("incjkcompatibilityideographssupplement")]; + char unicode_prop_name_pool_str1900[sizeof("meeteimayek")]; + char unicode_prop_name_pool_str1909[sizeof("otheruppercase")]; + char unicode_prop_name_pool_str1912[sizeof("kali")]; + char unicode_prop_name_pool_str1915[sizeof("inhanguljamo")]; + char unicode_prop_name_pool_str1917[sizeof("ideographic")]; + char unicode_prop_name_pool_str1935[sizeof("inmeeteimayek")]; + char unicode_prop_name_pool_str1948[sizeof("incyrillicextendedb")]; + char unicode_prop_name_pool_str1964[sizeof("hluw")]; + char unicode_prop_name_pool_str1969[sizeof("patsyn")]; + char unicode_prop_name_pool_str1972[sizeof("incombiningdiacriticalmarks")]; + char unicode_prop_name_pool_str1973[sizeof("inarabicsupplement")]; + char unicode_prop_name_pool_str1975[sizeof("inkanasupplement")]; + char unicode_prop_name_pool_str1977[sizeof("deprecated")]; + char unicode_prop_name_pool_str1978[sizeof("inverticalforms")]; + char unicode_prop_name_pool_str1982[sizeof("incombiningdiacriticalmarksforsymbols")]; + char unicode_prop_name_pool_str1987[sizeof("indevanagari")]; + char unicode_prop_name_pool_str1989[sizeof("inbuhid")]; + char unicode_prop_name_pool_str1991[sizeof("alphabetic")]; + char unicode_prop_name_pool_str1995[sizeof("oldhungarian")]; + char unicode_prop_name_pool_str1998[sizeof("mark")]; + char unicode_prop_name_pool_str2005[sizeof("inkharoshthi")]; + char unicode_prop_name_pool_str2011[sizeof("deva")]; + char unicode_prop_name_pool_str2012[sizeof("invedicextensions")]; + char unicode_prop_name_pool_str2019[sizeof("devanagari")]; + char unicode_prop_name_pool_str2020[sizeof("incombiningdiacriticalmarkssupplement")]; + char unicode_prop_name_pool_str2024[sizeof("ingeometricshapesextended")]; + char unicode_prop_name_pool_str2030[sizeof("inkhmer")]; + char unicode_prop_name_pool_str2034[sizeof("changeswhencasemapped")]; + char unicode_prop_name_pool_str2058[sizeof("intakri")]; + char unicode_prop_name_pool_str2061[sizeof("dep")]; + char unicode_prop_name_pool_str2062[sizeof("takr")]; + char unicode_prop_name_pool_str2080[sizeof("changeswhencasefolded")]; + char unicode_prop_name_pool_str2082[sizeof("kaithi")]; + char unicode_prop_name_pool_str2093[sizeof("phag")]; + char unicode_prop_name_pool_str2104[sizeof("inpahawhhmong")]; + char unicode_prop_name_pool_str2106[sizeof("bidicontrol")]; + char unicode_prop_name_pool_str2116[sizeof("inkhojki")]; + char unicode_prop_name_pool_str2126[sizeof("bamu")]; + char unicode_prop_name_pool_str2127[sizeof("inbamum")]; + char unicode_prop_name_pool_str2128[sizeof("changeswhentitlecased")]; + char unicode_prop_name_pool_str2131[sizeof("inkhmersymbols")]; + char unicode_prop_name_pool_str2132[sizeof("uideo")]; + char unicode_prop_name_pool_str2133[sizeof("lu")]; + char unicode_prop_name_pool_str2136[sizeof("kthi")]; + char unicode_prop_name_pool_str2145[sizeof("limbu")]; + char unicode_prop_name_pool_str2147[sizeof("defaultignorablecodepoint")]; + char unicode_prop_name_pool_str2151[sizeof("inplayingcards")]; + char unicode_prop_name_pool_str2153[sizeof("inhebrew")]; + char unicode_prop_name_pool_str2161[sizeof("modifiersymbol")]; + char unicode_prop_name_pool_str2167[sizeof("ugaritic")]; + char unicode_prop_name_pool_str2172[sizeof("inlisu")]; + char unicode_prop_name_pool_str2173[sizeof("inglagolitic")]; + char unicode_prop_name_pool_str2175[sizeof("inprivateusearea")]; + char unicode_prop_name_pool_str2178[sizeof("olck")]; + char unicode_prop_name_pool_str2182[sizeof("inbengali")]; + char unicode_prop_name_pool_str2185[sizeof("olchiki")]; + char unicode_prop_name_pool_str2195[sizeof("caucasianalbanian")]; + char unicode_prop_name_pool_str2210[sizeof("oldturkic")]; + char unicode_prop_name_pool_str2211[sizeof("beng")]; + char unicode_prop_name_pool_str2212[sizeof("intelugu")]; + char unicode_prop_name_pool_str2218[sizeof("hyphen")]; + char unicode_prop_name_pool_str2221[sizeof("inbuginese")]; + char unicode_prop_name_pool_str2225[sizeof("intagalog")]; + char unicode_prop_name_pool_str2240[sizeof("cypriot")]; + char unicode_prop_name_pool_str2249[sizeof("inlimbu")]; + char unicode_prop_name_pool_str2252[sizeof("graphemeextend")]; + char unicode_prop_name_pool_str2255[sizeof("tagb")]; + char unicode_prop_name_pool_str2259[sizeof("incypriotsyllabary")]; + char unicode_prop_name_pool_str2263[sizeof("intagbanwa")]; + char unicode_prop_name_pool_str2268[sizeof("inaegeannumbers")]; + char unicode_prop_name_pool_str2275[sizeof("inkatakanaphoneticextensions")]; + char unicode_prop_name_pool_str2276[sizeof("glag")]; + char unicode_prop_name_pool_str2277[sizeof("combiningmark")]; + char unicode_prop_name_pool_str2278[sizeof("palmyrene")]; + char unicode_prop_name_pool_str2280[sizeof("khmr")]; + char unicode_prop_name_pool_str2284[sizeof("khar")]; + char unicode_prop_name_pool_str2292[sizeof("ugar")]; + char unicode_prop_name_pool_str2300[sizeof("inarabicpresentationformsb")]; + char unicode_prop_name_pool_str2304[sizeof("insupplementaryprivateuseareaa")]; + char unicode_prop_name_pool_str2306[sizeof("variationselector")]; + char unicode_prop_name_pool_str2311[sizeof("nko")]; + char unicode_prop_name_pool_str2312[sizeof("nkoo")]; + char unicode_prop_name_pool_str2330[sizeof("inbamumsupplement")]; + char unicode_prop_name_pool_str2336[sizeof("tglg")]; + char unicode_prop_name_pool_str2338[sizeof("any")]; + char unicode_prop_name_pool_str2339[sizeof("enclosingmark")]; + char unicode_prop_name_pool_str2348[sizeof("gujr")]; + char unicode_prop_name_pool_str2358[sizeof("changeswhenlowercased")]; + char unicode_prop_name_pool_str2363[sizeof("knda")]; + char unicode_prop_name_pool_str2364[sizeof("hung")]; + char unicode_prop_name_pool_str2365[sizeof("gujarati")]; + char unicode_prop_name_pool_str2368[sizeof("bopo")]; + char unicode_prop_name_pool_str2373[sizeof("inmendekikakui")]; + char unicode_prop_name_pool_str2376[sizeof("inbopomofo")]; + char unicode_prop_name_pool_str2386[sizeof("kharoshthi")]; + char unicode_prop_name_pool_str2388[sizeof("kannada")]; + char unicode_prop_name_pool_str2401[sizeof("khoj")]; + char unicode_prop_name_pool_str2422[sizeof("cherokee")]; + char unicode_prop_name_pool_str2426[sizeof("inlatinextendedb")]; + char unicode_prop_name_pool_str2432[sizeof("dashpunctuation")]; + char unicode_prop_name_pool_str2435[sizeof("dupl")]; + char unicode_prop_name_pool_str2443[sizeof("inyisyllables")]; + char unicode_prop_name_pool_str2451[sizeof("georgian")]; + char unicode_prop_name_pool_str2453[sizeof("rejang")]; + char unicode_prop_name_pool_str2455[sizeof("oupper")]; + char unicode_prop_name_pool_str2477[sizeof("aghb")]; + char unicode_prop_name_pool_str2491[sizeof("khmer")]; + char unicode_prop_name_pool_str2494[sizeof("grbase")]; + char unicode_prop_name_pool_str2503[sizeof("currencysymbol")]; + char unicode_prop_name_pool_str2529[sizeof("incombiningdiacriticalmarksextended")]; + char unicode_prop_name_pool_str2542[sizeof("spacingmark")]; + char unicode_prop_name_pool_str2544[sizeof("orkh")]; + char unicode_prop_name_pool_str2550[sizeof("cwu")]; + char unicode_prop_name_pool_str2552[sizeof("hebrew")]; + char unicode_prop_name_pool_str2570[sizeof("insupplementalpunctuation")]; + char unicode_prop_name_pool_str2581[sizeof("oldnortharabian")]; + char unicode_prop_name_pool_str2587[sizeof("incjksymbolsandpunctuation")]; + char unicode_prop_name_pool_str2590[sizeof("othergraphemeextend")]; + char unicode_prop_name_pool_str2613[sizeof("indevanagariextended")]; + char unicode_prop_name_pool_str2621[sizeof("tagalog")]; + char unicode_prop_name_pool_str2628[sizeof("surrogate")]; + char unicode_prop_name_pool_str2650[sizeof("bopomofo")]; + char unicode_prop_name_pool_str2679[sizeof("ingeorgiansupplement")]; + char unicode_prop_name_pool_str2704[sizeof("uppercase")]; + char unicode_prop_name_pool_str2711[sizeof("unifiedideograph")]; + char unicode_prop_name_pool_str2742[sizeof("inpaucinhau")]; + char unicode_prop_name_pool_str2743[sizeof("paucinhau")]; + char unicode_prop_name_pool_str2774[sizeof("insupplementalsymbolsandpictographs")]; + char unicode_prop_name_pool_str2792[sizeof("nonspacingmark")]; + char unicode_prop_name_pool_str2794[sizeof("inhanguljamoextendedb")]; + char unicode_prop_name_pool_str2802[sizeof("inhighsurrogates")]; + char unicode_prop_name_pool_str2803[sizeof("punctuation")]; + char unicode_prop_name_pool_str2834[sizeof("openpunctuation")]; + char unicode_prop_name_pool_str2835[sizeof("bassavah")]; + char unicode_prop_name_pool_str2864[sizeof("upper")]; + char unicode_prop_name_pool_str2878[sizeof("insupplementalarrowsb")]; + char unicode_prop_name_pool_str2879[sizeof("inkanbun")]; + char unicode_prop_name_pool_str2918[sizeof("inkangxiradicals")]; + char unicode_prop_name_pool_str2922[sizeof("inmeroiticcursive")]; + char unicode_prop_name_pool_str2925[sizeof("signwriting")]; + char unicode_prop_name_pool_str2928[sizeof("incjkradicalssupplement")]; + char unicode_prop_name_pool_str2930[sizeof("pahawhhmong")]; + char unicode_prop_name_pool_str2952[sizeof("inkayahli")]; + char unicode_prop_name_pool_str2953[sizeof("uppercaseletter")]; + char unicode_prop_name_pool_str2955[sizeof("batk")]; + char unicode_prop_name_pool_str2960[sizeof("inbatak")]; + char unicode_prop_name_pool_str2968[sizeof("incjkcompatibility")]; + char unicode_prop_name_pool_str2983[sizeof("buhd")]; + char unicode_prop_name_pool_str2989[sizeof("egyp")]; + char unicode_prop_name_pool_str3009[sizeof("innoblock")]; + char unicode_prop_name_pool_str3043[sizeof("inegyptianhieroglyphs")]; + char unicode_prop_name_pool_str3084[sizeof("grek")]; + char unicode_prop_name_pool_str3176[sizeof("bugi")]; + char unicode_prop_name_pool_str3230[sizeof("changeswhenuppercased")]; + char unicode_prop_name_pool_str3234[sizeof("paragraphseparator")]; + char unicode_prop_name_pool_str3254[sizeof("buginese")]; + char unicode_prop_name_pool_str3282[sizeof("guru")]; + char unicode_prop_name_pool_str3299[sizeof("inbopomofoextended")]; + char unicode_prop_name_pool_str3312[sizeof("telugu")]; + char unicode_prop_name_pool_str3343[sizeof("quotationmark")]; + char unicode_prop_name_pool_str3364[sizeof("inkhudawadi")]; + char unicode_prop_name_pool_str3370[sizeof("kayahli")]; + char unicode_prop_name_pool_str3372[sizeof("oldsoutharabian")]; + char unicode_prop_name_pool_str3396[sizeof("insupplementaryprivateuseareab")]; + char unicode_prop_name_pool_str3479[sizeof("inhangulcompatibilityjamo")]; + char unicode_prop_name_pool_str3491[sizeof("zyyy")]; + char unicode_prop_name_pool_str3555[sizeof("qmark")]; + char unicode_prop_name_pool_str3566[sizeof("buhid")]; + char unicode_prop_name_pool_str3567[sizeof("sk")]; + char unicode_prop_name_pool_str3582[sizeof("unknown")]; + char unicode_prop_name_pool_str3619[sizeof("khudawadi")]; + char unicode_prop_name_pool_str3644[sizeof("katakana")]; + char unicode_prop_name_pool_str3670[sizeof("incjkunifiedideographsextensionc")]; + char unicode_prop_name_pool_str3673[sizeof("incjkunifiedideographsextensiona")]; + char unicode_prop_name_pool_str3685[sizeof("incjkunifiedideographs")]; + char unicode_prop_name_pool_str3700[sizeof("incjkunifiedideographsextensione")]; + char unicode_prop_name_pool_str3743[sizeof("duployan")]; + char unicode_prop_name_pool_str3763[sizeof("egyptianhieroglyphs")]; + char unicode_prop_name_pool_str3853[sizeof("inboxdrawing")]; + char unicode_prop_name_pool_str4106[sizeof("khojki")]; + char unicode_prop_name_pool_str4244[sizeof("incjkunifiedideographsextensiond")]; + char unicode_prop_name_pool_str4722[sizeof("batak")]; + char unicode_prop_name_pool_str4765[sizeof("incjkunifiedideographsextensionb")]; + char unicode_prop_name_pool_str4780[sizeof("blank")]; + char unicode_prop_name_pool_str4851[sizeof("greek")]; + char unicode_prop_name_pool_str4943[sizeof("grlink")]; + char unicode_prop_name_pool_str5054[sizeof("gurmukhi")]; + char unicode_prop_name_pool_str5162[sizeof("graphemelink")]; + }; +static const struct unicode_prop_name_pool_t unicode_prop_name_pool_contents = + { + "n", + "z", + "zzzz", + "mn", + "cn", + "ci", + "m", + "c", + "inmanichaean", + "mani", + "mc", + "cc", + "qaai", + "qaac", + "incham", + "mandaic", + "sm", + "sc", + "cans", + "ascii", + "insamaritan", + "incuneiform", + "s", + "inarmenian", + "zs", + "cs", + "me", + "incommonindicnumberforms", + "inavestan", + "inthai", + "inipaextensions", + "initialpunctuation", + "inancientsymbols", + "inthaana", + "cf", + "incuneiformnumbersandpunctuation", + "mtei", + "inspecials", + "inmusicalsymbols", + "inmiscellaneousmathematicalsymbolsa", + "lm", + "lina", + "lc", + "inlycian", + "lana", + "intaixuanjingsymbols", + "inmyanmarextendeda", + "alnum", + "sterm", + "intaitham", + "intransportandmapsymbols", + "taile", + "inmalayalam", + "inmiscellaneoussymbols", + "incontrolpictures", + "inmiscellaneoussymbolsandarrows", + "inlineara", + "inmiscellaneoussymbolsandpictographs", + "sinhala", + "taiviet", + "ext", + "latn", + "latin", + "ital", + "intamil", + "inmultani", + "taml", + "inrunic", + "incarian", + "armn", + "armi", + "cari", + "inlatinextendedc", + "armenian", + "inmyanmar", + "incyrillic", + "inlatinextendeda", + "carian", + "intaile", + "tale", + "arabic", + "l", + "nl", + "zl", + "insyriac", + "samr", + "merc", + "inlinearbideograms", + "samaritan", + "lt", + "insharada", + "inmeeteimayekextensions", + "inruminumeralsymbols", + "miao", + "inlatinextendede", + "zinh", + "inahom", + "incherokee", + "han", + "hani", + "inosmanya", + "inmiscellaneoustechnical", + "cham", + "inmahajani", + "osma", + "manichaean", + "term", + "sinh", + "cntrl", + "chakma", + "insinhala", + "tamil", + "inethiopic", + "connectorpunctuation", + "shavian", + "joinc", + "inenclosedalphanumerics", + "ahex", + "inlatinextendedadditional", + "lineara", + "inenclosedcjklettersandmonths", + "hex", + "thai", + "mahj", + "math", + "ll", + "thaa", + "hatran", + "mahajani", + "insinhalaarchaicnumbers", + "taitham", + "thaana", + "ethi", + "inenclosedalphanumericsupplement", + "meroiticcursive", + "inideographicdescriptioncharacters", + "terminalpunctuation", + "inemoticons", + "intifinagh", + "asciihexdigit", + "tifinagh", + "inearlydynasticcuneiform", + "inopticalcharacterrecognition", + "loe", + "titlecaseletter", + "inscriptionalparthian", + "oriya", + "hira", + "sora", + "mero", + "inarrows", + "inhiragana", + "no", + "inmahjongtiles", + "innko", + "co", + "cher", + "inmro", + "common", + "cwcm", + "inmiao", + "inscriptionalpahlavi", + "inmathematicalalphanumericsymbols", + "so", + "hano", + "tirh", + "inhatran", + "inolchiki", + "ahom", + "di", + "hatr", + "inogham", + "intirhuta", + "inmodi", + "idc", + "mand", + "inmandaic", + "dia", + "cwcf", + "xidc", + "sind", + "newline", + "mend", + "newtailue", + "inshorthandformatcontrols", + "anatolianhieroglyphs", + "xids", + "ids", + "innewtailue", + "insylotinagri", + "insundanese", + "lo", + "indominotiles", + "inlao", + "lao", + "laoo", + "mongolian", + "cwt", + "idst", + "format", + "lineseparator", + "letter", + "idcontinue", + "inanatolianhieroglyphs", + "inlydian", + "pi", + "nchar", + "inspacingmodifierletters", + "oalpha", + "indeseret", + "pc", + "xdigit", + "inphaistosdisc", + "joincontrol", + "inlowsurrogates", + "mro", + "mroo", + "xidstart", + "wara", + "inwarangciti", + "ps", + "pe", + "cwl", + "incoptic", + "diacritic", + "pf", + "space", + "hanunoo", + "incyrillicextendeda", + "odi", + "modi", + "oidc", + "incopticepactnumbers", + "palm", + "insundanesesupplement", + "patws", + "inolditalic", + "inlepcha", + "shaw", + "omath", + "alpha", + "oids", + "control", + "ideo", + "lepc", + "psalterpahlavi", + "dsrt", + "otheridcontinue", + "inpalmyrene", + "decimalnumber", + "noncharactercodepoint", + "idstart", + "otheralphabetic", + "letternumber", + "dash", + "xidcontinue", + "finalpunctuation", + "extender", + "siddham", + "inoldturkic", + "sharada", + "whitespace", + "inmodifiertoneletters", + "radical", + "canadianaboriginal", + "inethiopicextendeda", + "imperialaramaic", + "perm", + "deseret", + "casedletter", + "inimperialaramaic", + "otheridstart", + "prti", + "cprt", + "othersymbol", + "coptic", + "otherlowercase", + "phnx", + "inphoenician", + "incaucasianalbanian", + "inlatin1supplement", + "xpeo", + "ininscriptionalparthian", + "ininscriptionalpahlavi", + "other", + "privateuse", + "othernumber", + "inenclosedideographicsupplement", + "copt", + "print", + "cuneiform", + "olditalic", + "xsux", + "inmongolian", + "inancientgreekmusicalnotation", + "sundanese", + "inoldnortharabian", + "patternsyntax", + "inherited", + "ingrantha", + "inphoneticextensions", + "saurashtra", + "inancientgreeknumbers", + "shrd", + "inoldsoutharabian", + "innabataean", + "inalphabeticpresentationforms", + "spaceseparator", + "olower", + "ingeneralpunctuation", + "inunifiedcanadianaboriginalsyllabics", + "bamum", + "inarabic", + "phli", + "inphoneticextensionssupplement", + "patternwhitespace", + "inbasiclatin", + "othermath", + "idsbinaryoperator", + "inmathematicaloperators", + "multani", + "ingujarati", + "inelbasan", + "inoldhungarian", + "innumberforms", + "nd", + "yi", + "lisu", + "yiii", + "inpsalterpahlavi", + "tagbanwa", + "bass", + "nbat", + "inbyzantinemusicalsymbols", + "closepunctuation", + "tfng", + "otherletter", + "sd", + "lowercase", + "sidd", + "nabataean", + "lepcha", + "inarabicpresentationformsa", + "modifierletter", + "intags", + "mult", + "insiddham", + "talu", + "cased", + "intibetan", + "separator", + "runic", + "inmiscellaneousmathematicalsymbolsb", + "linb", + "inbraillepatterns", + "oldpersian", + "inugaritic", + "telu", + "limb", + "oldpermic", + "bali", + "inmyanmarextendedb", + "tibt", + "saur", + "po", + "tibetan", + "insaurashtra", + "inbalinese", + "elba", + "bengali", + "gran", + "phoenician", + "ingurmukhi", + "caseignorable", + "lyci", + "inyijinghexagramsymbols", + "mlym", + "lycian", + "elbasan", + "balinese", + "narb", + "brai", + "insuttonsignwriting", + "insorasompeng", + "malayalam", + "arab", + "brahmi", + "incountingrodnumerals", + "rjng", + "mong", + "incyrillicsupplement", + "ogam", + "sarb", + "lower", + "inrejang", + "hmng", + "tirhuta", + "hang", + "wspace", + "inlatinextendedd", + "invai", + "incherokeesupplement", + "mymr", + "vai", + "vaii", + "ethiopic", + "sylotinagri", + "myanmar", + "syrc", + "inbrahmi", + "mathsymbol", + "runr", + "inshavian", + "gothic", + "syriac", + "p", + "zp", + "induployan", + "vs", + "ingreekandcoptic", + "ingothic", + "lowercaseletter", + "inoriya", + "grext", + "linearb", + "inyiradicals", + "inethiopicsupplement", + "inletterlikesymbols", + "ingeometricshapes", + "java", + "inblockelements", + "number", + "incombininghalfmarks", + "inbassavah", + "inlinearbsyllabary", + "osmanya", + "avst", + "hexdigit", + "injavanese", + "cyrl", + "avestan", + "intaiviet", + "inornamentaldingbats", + "tavt", + "javanese", + "inethiopicextended", + "inhalfwidthandfullwidthforms", + "ingeorgian", + "inarabicmathematicalalphabeticsymbols", + "hangul", + "insuperscriptsandsubscripts", + "inhanunoo", + "inhangulsyllables", + "inoldpersian", + "geor", + "otherpunctuation", + "inoldpermic", + "inalchemicalsymbols", + "sylo", + "hiragana", + "word", + "inmeroitichieroglyphs", + "insmallformvariants", + "sund", + "brah", + "insupplementalmathematicaloperators", + "glagolitic", + "braille", + "unassigned", + "sgnw", + "plrd", + "hebr", + "ogham", + "cyrillic", + "orya", + "grantha", + "invariationselectors", + "indingbats", + "inunifiedcanadianaboriginalsyllabicsextended", + "inhanguljamoextendeda", + "goth", + "graphemebase", + "bidic", + "ogrext", + "idsb", + "invariationselectorssupplement", + "assigned", + "symbol", + "ingreekextended", + "pauc", + "meroitichieroglyphs", + "logicalorderexception", + "incurrencysymbols", + "inarabicextendeda", + "insupplementalarrowsc", + "insupplementalarrowsa", + "inkannada", + "kana", + "phagspa", + "cakm", + "digit", + "softdotted", + "inchakma", + "inphagspa", + "inhighprivateusesurrogates", + "warangciti", + "incjkcompatibilityforms", + "idstrinaryoperator", + "incjkcompatibilityideographs", + "inkaithi", + "takri", + "phlp", + "mendekikakui", + "punct", + "otherdefaultignorablecodepoint", + "inkatakana", + "graph", + "lydi", + "pd", + "incjkstrokes", + "lydian", + "sorasompeng", + "incjkcompatibilityideographssupplement", + "meeteimayek", + "otheruppercase", + "kali", + "inhanguljamo", + "ideographic", + "inmeeteimayek", + "incyrillicextendedb", + "hluw", + "patsyn", + "incombiningdiacriticalmarks", + "inarabicsupplement", + "inkanasupplement", + "deprecated", + "inverticalforms", + "incombiningdiacriticalmarksforsymbols", + "indevanagari", + "inbuhid", + "alphabetic", + "oldhungarian", + "mark", + "inkharoshthi", + "deva", + "invedicextensions", + "devanagari", + "incombiningdiacriticalmarkssupplement", + "ingeometricshapesextended", + "inkhmer", + "changeswhencasemapped", + "intakri", + "dep", + "takr", + "changeswhencasefolded", + "kaithi", + "phag", + "inpahawhhmong", + "bidicontrol", + "inkhojki", + "bamu", + "inbamum", + "changeswhentitlecased", + "inkhmersymbols", + "uideo", + "lu", + "kthi", + "limbu", + "defaultignorablecodepoint", + "inplayingcards", + "inhebrew", + "modifiersymbol", + "ugaritic", + "inlisu", + "inglagolitic", + "inprivateusearea", + "olck", + "inbengali", + "olchiki", + "caucasianalbanian", + "oldturkic", + "beng", + "intelugu", + "hyphen", + "inbuginese", + "intagalog", + "cypriot", + "inlimbu", + "graphemeextend", + "tagb", + "incypriotsyllabary", + "intagbanwa", + "inaegeannumbers", + "inkatakanaphoneticextensions", + "glag", + "combiningmark", + "palmyrene", + "khmr", + "khar", + "ugar", + "inarabicpresentationformsb", + "insupplementaryprivateuseareaa", + "variationselector", + "nko", + "nkoo", + "inbamumsupplement", + "tglg", + "any", + "enclosingmark", + "gujr", + "changeswhenlowercased", + "knda", + "hung", + "gujarati", + "bopo", + "inmendekikakui", + "inbopomofo", + "kharoshthi", + "kannada", + "khoj", + "cherokee", + "inlatinextendedb", + "dashpunctuation", + "dupl", + "inyisyllables", + "georgian", + "rejang", + "oupper", + "aghb", + "khmer", + "grbase", + "currencysymbol", + "incombiningdiacriticalmarksextended", + "spacingmark", + "orkh", + "cwu", + "hebrew", + "insupplementalpunctuation", + "oldnortharabian", + "incjksymbolsandpunctuation", + "othergraphemeextend", + "indevanagariextended", + "tagalog", + "surrogate", + "bopomofo", + "ingeorgiansupplement", + "uppercase", + "unifiedideograph", + "inpaucinhau", + "paucinhau", + "insupplementalsymbolsandpictographs", + "nonspacingmark", + "inhanguljamoextendedb", + "inhighsurrogates", + "punctuation", + "openpunctuation", + "bassavah", + "upper", + "insupplementalarrowsb", + "inkanbun", + "inkangxiradicals", + "inmeroiticcursive", + "signwriting", + "incjkradicalssupplement", + "pahawhhmong", + "inkayahli", + "uppercaseletter", + "batk", + "inbatak", + "incjkcompatibility", + "buhd", + "egyp", + "innoblock", + "inegyptianhieroglyphs", + "grek", + "bugi", + "changeswhenuppercased", + "paragraphseparator", + "buginese", + "guru", + "inbopomofoextended", + "telugu", + "quotationmark", + "inkhudawadi", + "kayahli", + "oldsoutharabian", + "insupplementaryprivateuseareab", + "inhangulcompatibilityjamo", + "zyyy", + "qmark", + "buhid", + "sk", + "unknown", + "khudawadi", + "katakana", + "incjkunifiedideographsextensionc", + "incjkunifiedideographsextensiona", + "incjkunifiedideographs", + "incjkunifiedideographsextensione", + "duployan", + "egyptianhieroglyphs", + "inboxdrawing", + "khojki", + "incjkunifiedideographsextensiond", + "batak", + "incjkunifiedideographsextensionb", + "blank", + "greek", + "grlink", + "gurmukhi", + "graphemelink" + }; +#define unicode_prop_name_pool ((const char *) &unicode_prop_name_pool_contents) #ifdef __GNUC__ __inline #if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__ __attribute__ ((__gnu_inline__)) #endif #endif -const struct PropertyNameCtype * +const struct PoolPropertyNameCtype * unicode_lookup_property_name (register const char *str, register unsigned int len) { - static const struct PropertyNameCtype wordlist[] = + static const struct PoolPropertyNameCtype wordlist[] = { - {""}, + {-1}, - {"n", 144}, - {""}, + {pool_offset(1), 144}, + {-1}, - {"z", 234}, - {""}, {""}, {""}, {""}, + {pool_offset(3), 234}, + {-1}, {-1}, {-1}, {-1}, - {"zzzz", 225}, + {pool_offset(8), 225}, - {"mn", 138}, + {pool_offset(9), 138}, - {"cn", 51}, - {""}, {""}, {""}, + {pool_offset(10), 51}, + {-1}, {-1}, {-1}, - {"ci", 38}, + {pool_offset(14), 38}, - {"m", 125}, - {""}, + {pool_offset(15), 125}, + {-1}, - {"c", 35}, - {""}, {""}, {""}, {""}, {""}, + {pool_offset(17), 35}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {"inmanichaean", 430}, + {pool_offset(23), 430}, - {"mani", 129}, + {pool_offset(24), 129}, - {"mc", 131}, + {pool_offset(25), 131}, - {"cc", 41}, - {""}, + {pool_offset(26), 41}, + {-1}, - {"qaai", 94}, - {""}, {""}, {""}, {""}, {""}, + {pool_offset(28), 94}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {"qaac", 54}, - {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(34), 54}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"incham", 373}, - {""}, {""}, {""}, {""}, + {pool_offset(41), 373}, + {-1}, {-1}, {-1}, {-1}, - {"mandaic", 128}, - {""}, {""}, + {pool_offset(46), 128}, + {-1}, {-1}, - {"sm", 202}, - {""}, + {pool_offset(49), 202}, + {-1}, - {"sc", 195}, - {""}, {""}, {""}, {""}, + {pool_offset(51), 195}, + {-1}, {-1}, {-1}, {-1}, - {"cans", 36}, - {""}, {""}, {""}, {""}, + {pool_offset(56), 36}, + {-1}, {-1}, {-1}, {-1}, - {"ascii", 14}, - {""}, {""}, + {pool_offset(61), 14}, + {-1}, {-1}, - {"insamaritan", 255}, - {""}, + {pool_offset(64), 255}, + {-1}, - {"incuneiform", 456}, + {pool_offset(66), 456}, - {"s", 191}, + {pool_offset(67), 191}, - {"inarmenian", 248}, + {pool_offset(68), 248}, - {"zs", 237}, - {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(69), 237}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"cs", 55}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(76), 55}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"me", 132}, - {""}, {""}, {""}, {""}, + {pool_offset(85), 132}, + {-1}, {-1}, {-1}, {-1}, - {"incommonindicnumberforms", 364}, - {""}, {""}, + {pool_offset(90), 364}, + {-1}, {-1}, - {"inavestan", 431}, + {pool_offset(93), 431}, - {"inthai", 268}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(94), 268}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"inipaextensions", 242}, - {""}, {""}, {""}, {""}, + {pool_offset(103), 242}, + {-1}, {-1}, {-1}, {-1}, - {"initialpunctuation", 183}, - {""}, {""}, {""}, + {pool_offset(108), 183}, + {-1}, {-1}, {-1}, - {"inancientsymbols", 402}, - {""}, + {pool_offset(112), 402}, + {-1}, - {"inthaana", 253}, - {""}, + {pool_offset(114), 253}, + {-1}, - {"cf", 42}, - {""}, + {pool_offset(116), 42}, + {-1}, - {"incuneiformnumbersandpunctuation", 457}, - {""}, {""}, {""}, + {pool_offset(118), 457}, + {-1}, {-1}, {-1}, - {"mtei", 133}, - {""}, + {pool_offset(122), 133}, + {-1}, - {"inspecials", 397}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(124), 397}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"inmusicalsymbols", 470}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(133), 470}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"inmiscellaneousmathematicalsymbolsa", 323}, - {""}, {""}, {""}, + {pool_offset(141), 323}, + {-1}, {-1}, {-1}, - {"lm", 117}, + {pool_offset(145), 117}, - {"lina", 113}, + {pool_offset(146), 113}, - {"lc", 108}, - {""}, + {pool_offset(147), 108}, + {-1}, - {"inlycian", 404}, - {""}, {""}, {""}, {""}, {""}, + {pool_offset(149), 404}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {"lana", 212}, - {""}, + {pool_offset(155), 212}, + {-1}, - {"intaixuanjingsymbols", 472}, + {pool_offset(157), 472}, - {"inmyanmarextendeda", 374}, + {pool_offset(158), 374}, - {"alnum", 13}, - {""}, + {pool_offset(159), 13}, + {-1}, - {"sterm", 192}, + {pool_offset(161), 192}, - {"intaitham", 292}, + {pool_offset(162), 292}, - {"intransportandmapsymbols", 486}, - {""}, + {pool_offset(163), 486}, + {-1}, - {"taile", 211}, - {""}, + {pool_offset(165), 211}, + {-1}, - {"inmalayalam", 266}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(167), 266}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"inmiscellaneoussymbols", 321}, + {pool_offset(176), 321}, - {"incontrolpictures", 315}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(177), 315}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"inmiscellaneoussymbolsandarrows", 329}, - {""}, {""}, {""}, + {pool_offset(185), 329}, + {-1}, {-1}, {-1}, - {"inlineara", 417}, + {pool_offset(189), 417}, - {"inmiscellaneoussymbolsandpictographs", 483}, - {""}, {""}, + {pool_offset(190), 483}, + {-1}, {-1}, - {"sinhala", 200}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(193), 200}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"taiviet", 213}, - {""}, {""}, + {pool_offset(202), 213}, + {-1}, {-1}, - {"ext", 69}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(205), 69}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"latn", 110}, + {pool_offset(215), 110}, - {"latin", 110}, + {pool_offset(216), 110}, - {"ital", 155}, + {pool_offset(217), 155}, - {"intamil", 263}, - {""}, + {pool_offset(218), 263}, + {-1}, - {"inmultani", 446}, - {""}, + {pool_offset(220), 446}, + {-1}, - {"taml", 215}, - {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(222), 215}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"inrunic", 279}, + {pool_offset(229), 279}, - {"incarian", 405}, - {""}, + {pool_offset(230), 405}, + {-1}, - {"armn", 21}, - {""}, + {pool_offset(232), 21}, + {-1}, - {"armi", 93}, + {pool_offset(234), 93}, - {"cari", 37}, + {pool_offset(235), 37}, - {"inlatinextendedc", 331}, - {""}, + {pool_offset(236), 331}, + {-1}, - {"armenian", 21}, + {pool_offset(238), 21}, - {"inmyanmar", 271}, + {pool_offset(239), 271}, - {"incyrillic", 246}, - {""}, + {pool_offset(240), 246}, + {-1}, - {"inlatinextendeda", 240}, - {""}, {""}, {""}, + {pool_offset(242), 240}, + {-1}, {-1}, {-1}, - {"carian", 37}, - {""}, {""}, + {pool_offset(246), 37}, + {-1}, {-1}, - {"intaile", 288}, - {""}, {""}, {""}, + {pool_offset(249), 288}, + {-1}, {-1}, {-1}, - {"tale", 211}, - {""}, {""}, + {pool_offset(253), 211}, + {-1}, {-1}, - {"arabic", 20}, - {""}, {""}, + {pool_offset(256), 20}, + {-1}, {-1}, - {"l", 107}, + {pool_offset(259), 107}, - {"nl", 149}, + {pool_offset(260), 149}, - {"zl", 235}, - {""}, + {pool_offset(261), 235}, + {-1}, - {"insyriac", 251}, - {""}, + {pool_offset(263), 251}, + {-1}, - {"samr", 193}, - {""}, + {pool_offset(265), 193}, + {-1}, - {"merc", 135}, - {""}, + {pool_offset(267), 135}, + {-1}, - {"inlinearbideograms", 399}, - {""}, {""}, + {pool_offset(269), 399}, + {-1}, {-1}, - {"samaritan", 193}, + {pool_offset(272), 193}, - {"lt", 121}, - {""}, {""}, + {pool_offset(273), 121}, + {-1}, {-1}, - {"insharada", 443}, - {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(276), 443}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"inmeeteimayekextensions", 376}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(283), 376}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"inruminumeralsymbols", 437}, - {""}, {""}, + {pool_offset(292), 437}, + {-1}, {-1}, - {"miao", 137}, + {pool_offset(295), 137}, - {"inlatinextendede", 378}, - {""}, {""}, {""}, + {pool_offset(296), 378}, + {-1}, {-1}, {-1}, - {"zinh", 94}, - {""}, {""}, {""}, + {pool_offset(300), 94}, + {-1}, {-1}, {-1}, - {"inahom", 453}, - {""}, + {pool_offset(304), 453}, + {-1}, - {"incherokee", 276}, + {pool_offset(306), 276}, - {"han", 80}, - {""}, {""}, + {pool_offset(307), 80}, + {-1}, {-1}, - {"hani", 80}, + {pool_offset(310), 80}, - {"inosmanya", 414}, + {pool_offset(311), 414}, - {"inmiscellaneoustechnical", 314}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, + {pool_offset(312), 314}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, - {"cham", 44}, - {""}, + {pool_offset(323), 44}, + {-1}, - {"inmahajani", 442}, + {pool_offset(325), 442}, - {"osma", 162}, - {""}, {""}, + {pool_offset(326), 162}, + {-1}, {-1}, - {"manichaean", 129}, + {pool_offset(329), 129}, - {"term", 217}, - {""}, + {pool_offset(330), 217}, + {-1}, - {"sinh", 200}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(332), 200}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"cntrl", 3}, - {""}, {""}, {""}, {""}, + {pool_offset(342), 3}, + {-1}, {-1}, {-1}, {-1}, - {"chakma", 43}, + {pool_offset(347), 43}, - {"insinhala", 267}, - {""}, {""}, {""}, + {pool_offset(348), 267}, + {-1}, {-1}, {-1}, - {"tamil", 215}, + {pool_offset(352), 215}, - {"inethiopic", 274}, - {""}, {""}, + {pool_offset(353), 274}, + {-1}, {-1}, - {"connectorpunctuation", 177}, + {pool_offset(356), 177}, - {"shavian", 197}, - {""}, {""}, {""}, + {pool_offset(357), 197}, + {-1}, {-1}, {-1}, - {"joinc", 98}, + {pool_offset(361), 98}, - {"inenclosedalphanumerics", 317}, - {""}, {""}, {""}, {""}, {""}, + {pool_offset(362), 317}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {"ahex", 15}, + {pool_offset(368), 15}, - {"inlatinextendedadditional", 304}, + {pool_offset(369), 304}, - {"lineara", 113}, - {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(370), 113}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"inenclosedcjklettersandmonths", 350}, + {pool_offset(377), 350}, - {"hex", 85}, - {""}, {""}, + {pool_offset(378), 85}, + {-1}, {-1}, - {"thai", 219}, + {pool_offset(381), 219}, - {"mahj", 126}, - {""}, {""}, {""}, + {pool_offset(382), 126}, + {-1}, {-1}, {-1}, - {"math", 130}, - {""}, {""}, + {pool_offset(386), 130}, + {-1}, {-1}, - {"ll", 116}, + {pool_offset(389), 116}, - {"thaa", 218}, - {""}, + {pool_offset(390), 218}, + {-1}, - {"hatran", 83}, - {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(392), 83}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"mahajani", 126}, + {pool_offset(399), 126}, - {"insinhalaarchaicnumbers", 444}, - {""}, + {pool_offset(400), 444}, + {-1}, - {"taitham", 212}, + {pool_offset(402), 212}, - {"thaana", 218}, - {""}, {""}, {""}, {""}, + {pool_offset(403), 218}, + {-1}, {-1}, {-1}, {-1}, - {"ethi", 68}, + {pool_offset(408), 68}, - {"inenclosedalphanumericsupplement", 481}, - {""}, {""}, {""}, {""}, + {pool_offset(409), 481}, + {-1}, {-1}, {-1}, {-1}, - {"meroiticcursive", 135}, + {pool_offset(414), 135}, - {"inideographicdescriptioncharacters", 340}, - {""}, {""}, {""}, + {pool_offset(415), 340}, + {-1}, {-1}, {-1}, - {"terminalpunctuation", 217}, - {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(419), 217}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"inemoticons", 484}, - {""}, {""}, {""}, {""}, + {pool_offset(426), 484}, + {-1}, {-1}, {-1}, {-1}, - {"intifinagh", 334}, - {""}, + {pool_offset(431), 334}, + {-1}, - {"asciihexdigit", 15}, - {""}, {""}, {""}, {""}, + {pool_offset(433), 15}, + {-1}, {-1}, {-1}, {-1}, - {"tifinagh", 221}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, + {pool_offset(438), 221}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, - {"inearlydynasticcuneiform", 458}, - {""}, {""}, {""}, {""}, {""}, + {pool_offset(451), 458}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {"inopticalcharacterrecognition", 316}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, + {pool_offset(457), 316}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, - {"loe", 119}, - {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(479), 119}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"titlecaseletter", 121}, - {""}, {""}, + {pool_offset(486), 121}, + {-1}, {-1}, - {"inscriptionalparthian", 96}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, + {pool_offset(489), 96}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, - {"oriya", 161}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(510), 161}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"hira", 86}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(520), 86}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"sora", 205}, + {pool_offset(529), 205}, - {"mero", 136}, - {""}, {""}, {""}, {""}, + {pool_offset(530), 136}, + {-1}, {-1}, {-1}, {-1}, - {"inarrows", 312}, - {""}, + {pool_offset(535), 312}, + {-1}, - {"inhiragana", 342}, - {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(537), 342}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"no", 150}, + {pool_offset(544), 150}, - {"inmahjongtiles", 478}, - {""}, {""}, {""}, + {pool_offset(545), 478}, + {-1}, {-1}, {-1}, - {"innko", 254}, - {""}, {""}, + {pool_offset(549), 254}, + {-1}, {-1}, - {"co", 52}, + {pool_offset(552), 52}, - {"cher", 50}, - {""}, {""}, + {pool_offset(553), 50}, + {-1}, {-1}, - {"inmro", 462}, - {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(556), 462}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"common", 53}, + {pool_offset(563), 53}, - {"cwcm", 46}, - {""}, {""}, {""}, + {pool_offset(564), 46}, + {-1}, {-1}, {-1}, - {"inmiao", 465}, - {""}, {""}, {""}, {""}, + {pool_offset(568), 465}, + {-1}, {-1}, {-1}, {-1}, - {"inscriptionalpahlavi", 95}, - {""}, {""}, + {pool_offset(573), 95}, + {-1}, {-1}, - {"inmathematicalalphanumericsymbols", 474}, + {pool_offset(576), 474}, - {"so", 203}, - {""}, + {pool_offset(577), 203}, + {-1}, - {"hano", 82}, + {pool_offset(579), 82}, - {"tirh", 222}, - {""}, {""}, {""}, + {pool_offset(580), 222}, + {-1}, {-1}, {-1}, - {"inhatran", 422}, + {pool_offset(584), 422}, - {"inolchiki", 298}, + {pool_offset(585), 298}, - {"ahom", 16}, - {""}, + {pool_offset(586), 16}, + {-1}, - {"di", 60}, + {pool_offset(588), 60}, - {"hatr", 83}, - {""}, + {pool_offset(589), 83}, + {-1}, - {"inogham", 278}, - {""}, {""}, {""}, {""}, + {pool_offset(591), 278}, + {-1}, {-1}, {-1}, {-1}, - {"intirhuta", 449}, - {""}, {""}, {""}, {""}, + {pool_offset(596), 449}, + {-1}, {-1}, {-1}, {-1}, - {"inmodi", 451}, - {""}, + {pool_offset(601), 451}, + {-1}, - {"idc", 90}, + {pool_offset(603), 90}, - {"mand", 128}, - {""}, {""}, {""}, + {pool_offset(604), 128}, + {-1}, {-1}, {-1}, - {"inmandaic", 256}, + {pool_offset(608), 256}, - {"dia", 64}, + {pool_offset(609), 64}, - {"cwcf", 45}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(610), 45}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"xidc", 231}, - {""}, {""}, + {pool_offset(618), 231}, + {-1}, {-1}, - {"sind", 106}, + {pool_offset(621), 106}, - {"newline", 0}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(622), 0}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"mend", 134}, - {""}, {""}, {""}, + {pool_offset(631), 134}, + {-1}, {-1}, {-1}, - {"newtailue", 147}, - {""}, {""}, + {pool_offset(635), 147}, + {-1}, {-1}, - {"inshorthandformatcontrols", 468}, - {""}, {""}, {""}, + {pool_offset(638), 468}, + {-1}, {-1}, {-1}, - {"anatolianhieroglyphs", 18}, + {pool_offset(642), 18}, - {"xids", 232}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(643), 232}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"ids", 91}, - {""}, {""}, {""}, {""}, {""}, + {pool_offset(653), 91}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {"innewtailue", 289}, + {pool_offset(659), 289}, - {"insylotinagri", 363}, - {""}, {""}, {""}, {""}, {""}, + {pool_offset(660), 363}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {"insundanese", 295}, - {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(666), 295}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"lo", 118}, - {""}, {""}, {""}, + {pool_offset(673), 118}, + {-1}, {-1}, {-1}, - {"indominotiles", 479}, + {pool_offset(677), 479}, - {"inlao", 269}, - {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(678), 269}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"lao", 109}, + {pool_offset(685), 109}, - {"laoo", 109}, + {pool_offset(686), 109}, - {"mongolian", 140}, - {""}, {""}, + {pool_offset(687), 140}, + {-1}, {-1}, - {"cwt", 48}, - {""}, + {pool_offset(690), 48}, + {-1}, - {"idst", 89}, + {pool_offset(692), 89}, - {"format", 42}, - {""}, {""}, + {pool_offset(693), 42}, + {-1}, {-1}, - {"lineseparator", 235}, - {""}, {""}, {""}, {""}, {""}, + {pool_offset(696), 235}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {"letter", 107}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(702), 107}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"idcontinue", 90}, - {""}, {""}, + {pool_offset(711), 90}, + {-1}, {-1}, - {"inanatolianhieroglyphs", 460}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(714), 460}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"inlydian", 424}, - {""}, + {pool_offset(723), 424}, + {-1}, - {"pi", 183}, + {pool_offset(725), 183}, - {"nchar", 151}, - {""}, {""}, {""}, {""}, + {pool_offset(726), 151}, + {-1}, {-1}, {-1}, {-1}, - {"inspacingmodifierletters", 243}, + {pool_offset(731), 243}, - {"oalpha", 163}, - {""}, {""}, + {pool_offset(732), 163}, + {-1}, {-1}, - {"indeseret", 412}, - {""}, + {pool_offset(735), 412}, + {-1}, - {"pc", 177}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(737), 177}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"xdigit", 11}, - {""}, + {pool_offset(756), 11}, + {-1}, - {"inphaistosdisc", 403}, + {pool_offset(758), 403}, - {"joincontrol", 98}, + {pool_offset(759), 98}, - {"inlowsurrogates", 385}, - {""}, + {pool_offset(760), 385}, + {-1}, - {"mro", 141}, + {pool_offset(762), 141}, - {"mroo", 141}, - {""}, {""}, {""}, + {pool_offset(763), 141}, + {-1}, {-1}, {-1}, - {"xidstart", 232}, - {""}, {""}, {""}, {""}, {""}, + {pool_offset(767), 232}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {"wara", 229}, - {""}, {""}, + {pool_offset(773), 229}, + {-1}, {-1}, - {"inwarangciti", 454}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, + {pool_offset(776), 454}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, - {"ps", 185}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(787), 185}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"pe", 179}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(797), 179}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"cwl", 47}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(806), 47}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"incoptic", 332}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(816), 332}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"diacritic", 64}, - {""}, {""}, + {pool_offset(824), 64}, + {-1}, {-1}, - {"pf", 180}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(827), 180}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"space", 9}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(844), 9}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"hanunoo", 82}, - {""}, {""}, + {pool_offset(853), 82}, + {-1}, {-1}, - {"incyrillicextendeda", 336}, - {""}, {""}, {""}, + {pool_offset(856), 336}, + {-1}, {-1}, {-1}, - {"odi", 164}, - {""}, {""}, {""}, {""}, {""}, + {pool_offset(860), 164}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {"modi", 139}, + {pool_offset(866), 139}, - {"oidc", 166}, + {pool_offset(867), 166}, - {"incopticepactnumbers", 406}, - {""}, + {pool_offset(868), 406}, + {-1}, - {"palm", 173}, + {pool_offset(870), 173}, - {"insundanesesupplement", 299}, + {pool_offset(871), 299}, - {"patws", 175}, - {""}, {""}, {""}, + {pool_offset(872), 175}, + {-1}, {-1}, {-1}, - {"inolditalic", 407}, + {pool_offset(876), 407}, - {"inlepcha", 297}, + {pool_offset(877), 297}, - {"shaw", 197}, - {""}, + {pool_offset(878), 197}, + {-1}, - {"omath", 169}, - {""}, {""}, {""}, {""}, {""}, + {pool_offset(880), 169}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {"alpha", 1}, - {""}, {""}, {""}, {""}, {""}, + {pool_offset(886), 1}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {"oids", 167}, - {""}, {""}, {""}, + {pool_offset(892), 167}, + {-1}, {-1}, {-1}, - {"control", 41}, + {pool_offset(896), 41}, - {"ideo", 92}, + {pool_offset(897), 92}, - {"lepc", 111}, + {pool_offset(898), 111}, - {"psalterpahlavi", 186}, + {pool_offset(899), 186}, - {"dsrt", 62}, - {""}, + {pool_offset(900), 62}, + {-1}, - {"otheridcontinue", 166}, - {""}, {""}, {""}, + {pool_offset(902), 166}, + {-1}, {-1}, {-1}, - {"inpalmyrene", 420}, + {pool_offset(906), 420}, - {"decimalnumber", 146}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(907), 146}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"noncharactercodepoint", 151}, + {pool_offset(915), 151}, - {"idstart", 91}, + {pool_offset(916), 91}, - {"otheralphabetic", 163}, + {pool_offset(917), 163}, - {"letternumber", 149}, - {""}, {""}, {""}, {""}, + {pool_offset(918), 149}, + {-1}, {-1}, {-1}, {-1}, - {"dash", 59}, - {""}, {""}, + {pool_offset(923), 59}, + {-1}, {-1}, - {"xidcontinue", 231}, - {""}, {""}, {""}, + {pool_offset(926), 231}, + {-1}, {-1}, {-1}, - {"finalpunctuation", 180}, + {pool_offset(930), 180}, - {"extender", 69}, - {""}, {""}, {""}, + {pool_offset(931), 69}, + {-1}, {-1}, {-1}, - {"siddham", 198}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(935), 198}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"inoldturkic", 435}, - {""}, {""}, + {pool_offset(945), 435}, + {-1}, {-1}, - {"sharada", 196}, - {""}, {""}, + {pool_offset(948), 196}, + {-1}, {-1}, - {"whitespace", 230}, - {""}, {""}, {""}, {""}, + {pool_offset(951), 230}, + {-1}, {-1}, {-1}, {-1}, - {"inmodifiertoneletters", 361}, - {""}, + {pool_offset(956), 361}, + {-1}, - {"radical", 188}, - {""}, + {pool_offset(958), 188}, + {-1}, - {"canadianaboriginal", 36}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(960), 36}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"inethiopicextendeda", 377}, + {pool_offset(969), 377}, - {"imperialaramaic", 93}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(970), 93}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"perm", 157}, + {pool_offset(978), 157}, - {"deseret", 62}, - {""}, {""}, {""}, {""}, + {pool_offset(979), 62}, + {-1}, {-1}, {-1}, {-1}, - {"casedletter", 108}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, + {pool_offset(984), 108}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, - {"inimperialaramaic", 419}, - {""}, {""}, + {pool_offset(998), 419}, + {-1}, {-1}, - {"otheridstart", 167}, - {""}, {""}, {""}, {""}, + {pool_offset(1001), 167}, + {-1}, {-1}, {-1}, {-1}, - {"prti", 96}, - {""}, {""}, {""}, {""}, {""}, + {pool_offset(1006), 96}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {"cprt", 57}, - {""}, {""}, {""}, {""}, {""}, + {pool_offset(1012), 57}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {"othersymbol", 203}, - {""}, {""}, {""}, + {pool_offset(1018), 203}, + {-1}, {-1}, {-1}, - {"coptic", 54}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, + {pool_offset(1022), 54}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {"otherlowercase", 168}, + {pool_offset(1037), 168}, - {"phnx", 182}, - {""}, {""}, {""}, + {pool_offset(1038), 182}, + {-1}, {-1}, {-1}, - {"inphoenician", 423}, - {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(1042), 423}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"incaucasianalbanian", 416}, + {pool_offset(1049), 416}, - {"inlatin1supplement", 239}, - {""}, {""}, {""}, + {pool_offset(1050), 239}, + {-1}, {-1}, {-1}, - {"xpeo", 158}, - {""}, {""}, {""}, + {pool_offset(1054), 158}, + {-1}, {-1}, {-1}, - {"ininscriptionalparthian", 432}, + {pool_offset(1058), 432}, - {"ininscriptionalpahlavi", 433}, + {pool_offset(1059), 433}, - {"other", 35}, + {pool_offset(1060), 35}, - {"privateuse", 52}, - {""}, {""}, {""}, {""}, + {pool_offset(1061), 52}, + {-1}, {-1}, {-1}, {-1}, - {"othernumber", 150}, - {""}, {""}, {""}, {""}, + {pool_offset(1066), 150}, + {-1}, {-1}, {-1}, {-1}, - {"inenclosedideographicsupplement", 482}, - {""}, + {pool_offset(1071), 482}, + {-1}, - {"copt", 54}, - {""}, {""}, {""}, {""}, + {pool_offset(1073), 54}, + {-1}, {-1}, {-1}, {-1}, - {"print", 7}, - {""}, + {pool_offset(1078), 7}, + {-1}, - {"cuneiform", 56}, + {pool_offset(1080), 56}, - {"olditalic", 155}, + {pool_offset(1081), 155}, - {"xsux", 56}, - {""}, {""}, {""}, + {pool_offset(1082), 56}, + {-1}, {-1}, {-1}, - {"inmongolian", 285}, - {""}, {""}, {""}, {""}, + {pool_offset(1086), 285}, + {-1}, {-1}, {-1}, {-1}, - {"inancientgreekmusicalnotation", 471}, + {pool_offset(1091), 471}, - {"sundanese", 206}, + {pool_offset(1092), 206}, - {"inoldnortharabian", 429}, - {""}, + {pool_offset(1093), 429}, + {-1}, - {"patternsyntax", 174}, - {""}, {""}, + {pool_offset(1095), 174}, + {-1}, {-1}, - {"inherited", 94}, + {pool_offset(1098), 94}, - {"ingrantha", 448}, + {pool_offset(1099), 448}, - {"inphoneticextensions", 301}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(1100), 301}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"saurashtra", 194}, - {""}, {""}, {""}, {""}, {""}, + {pool_offset(1110), 194}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {"inancientgreeknumbers", 401}, - {""}, {""}, {""}, {""}, {""}, + {pool_offset(1116), 401}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {"shrd", 196}, - {""}, {""}, {""}, + {pool_offset(1122), 196}, + {-1}, {-1}, {-1}, - {"inoldsoutharabian", 428}, + {pool_offset(1126), 428}, - {"innabataean", 421}, + {pool_offset(1127), 421}, - {"inalphabeticpresentationforms", 388}, + {pool_offset(1128), 388}, - {"spaceseparator", 237}, - {""}, {""}, {""}, {""}, {""}, + {pool_offset(1129), 237}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {"olower", 168}, - {""}, + {pool_offset(1135), 168}, + {-1}, - {"ingeneralpunctuation", 306}, + {pool_offset(1137), 306}, - {"inunifiedcanadianaboriginalsyllabics", 277}, - {""}, + {pool_offset(1138), 277}, + {-1}, - {"bamum", 25}, - {""}, {""}, + {pool_offset(1140), 25}, + {-1}, {-1}, - {"inarabic", 250}, - {""}, {""}, {""}, + {pool_offset(1143), 250}, + {-1}, {-1}, {-1}, - {"phli", 95}, + {pool_offset(1147), 95}, - {"inphoneticextensionssupplement", 302}, - {""}, + {pool_offset(1148), 302}, + {-1}, - {"patternwhitespace", 175}, - {""}, + {pool_offset(1150), 175}, + {-1}, - {"inbasiclatin", 238}, - {""}, + {pool_offset(1152), 238}, + {-1}, - {"othermath", 169}, + {pool_offset(1154), 169}, - {"idsbinaryoperator", 88}, + {pool_offset(1155), 88}, - {"inmathematicaloperators", 313}, + {pool_offset(1156), 313}, - {"multani", 142}, + {pool_offset(1157), 142}, - {"ingujarati", 261}, - {""}, {""}, {""}, {""}, + {pool_offset(1158), 261}, + {-1}, {-1}, {-1}, {-1}, - {"inelbasan", 415}, + {pool_offset(1163), 415}, - {"inoldhungarian", 436}, + {pool_offset(1164), 436}, - {"innumberforms", 311}, + {pool_offset(1165), 311}, - {"nd", 146}, - {""}, + {pool_offset(1166), 146}, + {-1}, - {"yi", 233}, + {pool_offset(1168), 233}, - {"lisu", 115}, - {""}, {""}, + {pool_offset(1169), 115}, + {-1}, {-1}, - {"yiii", 233}, - {""}, + {pool_offset(1172), 233}, + {-1}, - {"inpsalterpahlavi", 434}, - {""}, {""}, {""}, + {pool_offset(1174), 434}, + {-1}, {-1}, {-1}, - {"tagbanwa", 210}, - {""}, {""}, {""}, {""}, {""}, + {pool_offset(1178), 210}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {"bass", 26}, - {""}, {""}, {""}, {""}, + {pool_offset(1184), 26}, + {-1}, {-1}, {-1}, {-1}, - {"nbat", 145}, + {pool_offset(1189), 145}, - {"inbyzantinemusicalsymbols", 469}, - {""}, + {pool_offset(1190), 469}, + {-1}, - {"closepunctuation", 179}, - {""}, + {pool_offset(1192), 179}, + {-1}, - {"tfng", 221}, + {pool_offset(1194), 221}, - {"otherletter", 118}, - {""}, {""}, {""}, + {pool_offset(1195), 118}, + {-1}, {-1}, {-1}, - {"sd", 204}, - {""}, {""}, + {pool_offset(1199), 204}, + {-1}, {-1}, - {"lowercase", 120}, + {pool_offset(1202), 120}, - {"sidd", 198}, - {""}, + {pool_offset(1203), 198}, + {-1}, - {"nabataean", 145}, - {""}, + {pool_offset(1205), 145}, + {-1}, - {"lepcha", 111}, + {pool_offset(1207), 111}, - {"inarabicpresentationformsa", 389}, - {""}, + {pool_offset(1208), 389}, + {-1}, - {"modifierletter", 117}, + {pool_offset(1210), 117}, - {"intags", 496}, + {pool_offset(1211), 496}, - {"mult", 142}, - {""}, {""}, + {pool_offset(1212), 142}, + {-1}, {-1}, - {"insiddham", 450}, + {pool_offset(1215), 450}, - {"talu", 147}, - {""}, {""}, {""}, {""}, + {pool_offset(1216), 147}, + {-1}, {-1}, {-1}, {-1}, - {"cased", 39}, - {""}, + {pool_offset(1221), 39}, + {-1}, - {"intibetan", 270}, - {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(1223), 270}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"separator", 234}, - {""}, + {pool_offset(1230), 234}, + {-1}, - {"runic", 190}, + {pool_offset(1232), 190}, - {"inmiscellaneousmathematicalsymbolsb", 327}, - {""}, {""}, {""}, {""}, + {pool_offset(1233), 327}, + {-1}, {-1}, {-1}, {-1}, - {"linb", 114}, + {pool_offset(1238), 114}, - {"inbraillepatterns", 325}, + {pool_offset(1239), 325}, - {"oldpersian", 158}, - {""}, + {pool_offset(1240), 158}, + {-1}, - {"inugaritic", 410}, + {pool_offset(1242), 410}, - {"telu", 216}, - {""}, + {pool_offset(1243), 216}, + {-1}, - {"limb", 112}, - {""}, + {pool_offset(1245), 112}, + {-1}, - {"oldpermic", 157}, - {""}, + {pool_offset(1247), 157}, + {-1}, - {"bali", 24}, + {pool_offset(1249), 24}, - {"inmyanmarextendedb", 372}, + {pool_offset(1250), 372}, - {"tibt", 220}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(1251), 220}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"saur", 194}, - {""}, {""}, {""}, + {pool_offset(1259), 194}, + {-1}, {-1}, {-1}, - {"po", 184}, - {""}, + {pool_offset(1263), 184}, + {-1}, - {"tibetan", 220}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, + {pool_offset(1265), 220}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {"insaurashtra", 366}, - {""}, {""}, {""}, + {pool_offset(1280), 366}, + {-1}, {-1}, {-1}, - {"inbalinese", 294}, + {pool_offset(1284), 294}, - {"elba", 67}, - {""}, {""}, {""}, {""}, + {pool_offset(1285), 67}, + {-1}, {-1}, {-1}, {-1}, - {"bengali", 28}, + {pool_offset(1290), 28}, - {"gran", 73}, - {""}, {""}, {""}, + {pool_offset(1291), 73}, + {-1}, {-1}, {-1}, - {"phoenician", 182}, - {""}, + {pool_offset(1295), 182}, + {-1}, - {"ingurmukhi", 260}, - {""}, {""}, + {pool_offset(1297), 260}, + {-1}, {-1}, - {"caseignorable", 38}, - {""}, {""}, {""}, {""}, + {pool_offset(1300), 38}, + {-1}, {-1}, {-1}, {-1}, - {"lyci", 123}, - {""}, + {pool_offset(1305), 123}, + {-1}, - {"inyijinghexagramsymbols", 353}, - {""}, + {pool_offset(1307), 353}, + {-1}, - {"mlym", 127}, - {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(1309), 127}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"lycian", 123}, - {""}, {""}, {""}, {""}, + {pool_offset(1316), 123}, + {-1}, {-1}, {-1}, {-1}, - {"elbasan", 67}, - {""}, {""}, {""}, {""}, {""}, + {pool_offset(1321), 67}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {"balinese", 24}, + {pool_offset(1327), 24}, - {"narb", 156}, - {""}, + {pool_offset(1328), 156}, + {-1}, - {"brai", 32}, - {""}, {""}, + {pool_offset(1330), 32}, + {-1}, {-1}, - {"insuttonsignwriting", 475}, - {""}, + {pool_offset(1333), 475}, + {-1}, - {"insorasompeng", 440}, + {pool_offset(1335), 440}, - {"malayalam", 127}, - {""}, {""}, + {pool_offset(1336), 127}, + {-1}, {-1}, - {"arab", 20}, - {""}, + {pool_offset(1339), 20}, + {-1}, - {"brahmi", 31}, - {""}, + {pool_offset(1341), 31}, + {-1}, - {"incountingrodnumerals", 473}, - {""}, {""}, {""}, + {pool_offset(1343), 473}, + {-1}, {-1}, {-1}, - {"rjng", 189}, + {pool_offset(1347), 189}, - {"mong", 140}, - {""}, {""}, {""}, + {pool_offset(1348), 140}, + {-1}, {-1}, {-1}, - {"incyrillicsupplement", 247}, - {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(1352), 247}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"ogam", 152}, - {""}, + {pool_offset(1359), 152}, + {-1}, - {"sarb", 159}, + {pool_offset(1361), 159}, - {"lower", 6}, - {""}, + {pool_offset(1362), 6}, + {-1}, - {"inrejang", 369}, - {""}, {""}, {""}, {""}, {""}, + {pool_offset(1364), 369}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {"hmng", 172}, - {""}, {""}, + {pool_offset(1370), 172}, + {-1}, {-1}, - {"tirhuta", 222}, + {pool_offset(1373), 222}, - {"hang", 81}, - {""}, {""}, {""}, {""}, + {pool_offset(1374), 81}, + {-1}, {-1}, {-1}, {-1}, - {"wspace", 230}, - {""}, {""}, {""}, {""}, + {pool_offset(1379), 230}, + {-1}, {-1}, {-1}, {-1}, - {"inlatinextendedd", 362}, - {""}, {""}, + {pool_offset(1384), 362}, + {-1}, {-1}, - {"invai", 358}, + {pool_offset(1387), 358}, - {"incherokeesupplement", 379}, - {""}, + {pool_offset(1388), 379}, + {-1}, - {"mymr", 143}, - {""}, {""}, {""}, + {pool_offset(1390), 143}, + {-1}, {-1}, {-1}, - {"vai", 227}, + {pool_offset(1394), 227}, - {"vaii", 227}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, + {pool_offset(1395), 227}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, - {"ethiopic", 68}, - {""}, + {pool_offset(1408), 68}, + {-1}, - {"sylotinagri", 207}, - {""}, {""}, {""}, {""}, + {pool_offset(1410), 207}, + {-1}, {-1}, {-1}, {-1}, - {"myanmar", 143}, - {""}, + {pool_offset(1415), 143}, + {-1}, - {"syrc", 208}, - {""}, + {pool_offset(1417), 208}, + {-1}, - {"inbrahmi", 438}, - {""}, {""}, {""}, + {pool_offset(1419), 438}, + {-1}, {-1}, {-1}, - {"mathsymbol", 202}, - {""}, + {pool_offset(1423), 202}, + {-1}, - {"runr", 190}, - {""}, {""}, {""}, {""}, {""}, + {pool_offset(1425), 190}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {"inshavian", 413}, + {pool_offset(1431), 413}, - {"gothic", 72}, - {""}, {""}, {""}, {""}, {""}, + {pool_offset(1432), 72}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {"syriac", 208}, + {pool_offset(1438), 208}, - {"p", 171}, - {""}, + {pool_offset(1439), 171}, + {-1}, - {"zp", 236}, + {pool_offset(1441), 236}, - {"induployan", 467}, - {""}, + {pool_offset(1442), 467}, + {-1}, - {"vs", 228}, - {""}, {""}, + {pool_offset(1444), 228}, + {-1}, {-1}, - {"ingreekandcoptic", 245}, + {pool_offset(1447), 245}, - {"ingothic", 408}, - {""}, {""}, + {pool_offset(1448), 408}, + {-1}, {-1}, - {"lowercaseletter", 116}, - {""}, {""}, {""}, + {pool_offset(1451), 116}, + {-1}, {-1}, {-1}, - {"inoriya", 262}, - {""}, {""}, {""}, {""}, {""}, + {pool_offset(1455), 262}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {"grext", 75}, + {pool_offset(1461), 75}, - {"linearb", 114}, + {pool_offset(1462), 114}, - {"inyiradicals", 356}, - {""}, + {pool_offset(1463), 356}, + {-1}, - {"inethiopicsupplement", 275}, + {pool_offset(1465), 275}, - {"inletterlikesymbols", 310}, + {pool_offset(1466), 310}, - {"ingeometricshapes", 320}, - {""}, + {pool_offset(1467), 320}, + {-1}, - {"java", 97}, + {pool_offset(1469), 97}, - {"inblockelements", 319}, - {""}, + {pool_offset(1470), 319}, + {-1}, - {"number", 144}, + {pool_offset(1472), 144}, - {"incombininghalfmarks", 392}, + {pool_offset(1473), 392}, - {"inbassavah", 463}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, + {pool_offset(1474), 463}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {"inlinearbsyllabary", 398}, - {""}, + {pool_offset(1489), 398}, + {-1}, - {"osmanya", 162}, - {""}, {""}, {""}, + {pool_offset(1491), 162}, + {-1}, {-1}, {-1}, - {"avst", 23}, - {""}, {""}, {""}, {""}, + {pool_offset(1495), 23}, + {-1}, {-1}, {-1}, {-1}, - {"hexdigit", 85}, - {""}, {""}, {""}, + {pool_offset(1500), 85}, + {-1}, {-1}, {-1}, - {"injavanese", 371}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(1504), 371}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"cyrl", 58}, + {pool_offset(1513), 58}, - {"avestan", 23}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(1514), 23}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"intaiviet", 375}, + {pool_offset(1531), 375}, - {"inornamentaldingbats", 485}, + {pool_offset(1532), 485}, - {"tavt", 213}, - {""}, {""}, {""}, {""}, + {pool_offset(1533), 213}, + {-1}, {-1}, {-1}, {-1}, - {"javanese", 97}, + {pool_offset(1538), 97}, - {"inethiopicextended", 335}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, + {pool_offset(1539), 335}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, - {"inhalfwidthandfullwidthforms", 396}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(1550), 396}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"ingeorgian", 272}, - {""}, + {pool_offset(1559), 272}, + {-1}, - {"inarabicmathematicalalphabeticsymbols", 477}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(1561), 477}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"hangul", 81}, - {""}, + {pool_offset(1569), 81}, + {-1}, - {"insuperscriptsandsubscripts", 307}, - {""}, {""}, {""}, {""}, + {pool_offset(1571), 307}, + {-1}, {-1}, {-1}, {-1}, - {"inhanunoo", 281}, - {""}, + {pool_offset(1576), 281}, + {-1}, - {"inhangulsyllables", 381}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(1578), 381}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"inoldpersian", 411}, - {""}, {""}, + {pool_offset(1586), 411}, + {-1}, {-1}, - {"geor", 70}, - {""}, + {pool_offset(1589), 70}, + {-1}, - {"otherpunctuation", 184}, - {""}, + {pool_offset(1591), 184}, + {-1}, - {"inoldpermic", 409}, - {""}, {""}, {""}, {""}, + {pool_offset(1593), 409}, + {-1}, {-1}, {-1}, {-1}, - {"inalchemicalsymbols", 487}, + {pool_offset(1598), 487}, - {"sylo", 207}, - {""}, + {pool_offset(1599), 207}, + {-1}, - {"hiragana", 86}, - {""}, {""}, + {pool_offset(1601), 86}, + {-1}, {-1}, - {"word", 12}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(1604), 12}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"inmeroitichieroglyphs", 425}, - {""}, + {pool_offset(1612), 425}, + {-1}, - {"insmallformvariants", 394}, - {""}, {""}, {""}, {""}, {""}, + {pool_offset(1614), 394}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {"sund", 206}, + {pool_offset(1620), 206}, - {"brah", 31}, - {""}, + {pool_offset(1621), 31}, + {-1}, - {"insupplementalmathematicaloperators", 328}, + {pool_offset(1623), 328}, - {"glagolitic", 71}, - {""}, {""}, + {pool_offset(1624), 71}, + {-1}, {-1}, - {"braille", 32}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, + {pool_offset(1627), 32}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, - {"unassigned", 51}, + {pool_offset(1639), 51}, - {"sgnw", 199}, - {""}, {""}, {""}, + {pool_offset(1640), 199}, + {-1}, {-1}, {-1}, - {"plrd", 137}, - {""}, {""}, {""}, + {pool_offset(1644), 137}, + {-1}, {-1}, {-1}, - {"hebr", 84}, + {pool_offset(1648), 84}, - {"ogham", 152}, - {""}, {""}, {""}, {""}, + {pool_offset(1649), 152}, + {-1}, {-1}, {-1}, {-1}, - {"cyrillic", 58}, - {""}, {""}, {""}, + {pool_offset(1654), 58}, + {-1}, {-1}, {-1}, - {"orya", 161}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, + {pool_offset(1658), 161}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, - {"grantha", 73}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, + {pool_offset(1669), 73}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {"invariationselectors", 390}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(1684), 390}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"indingbats", 322}, - {""}, + {pool_offset(1693), 322}, + {-1}, - {"inunifiedcanadianaboriginalsyllabicsextended", 286}, - {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(1695), 286}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"inhanguljamoextendeda", 370}, - {""}, {""}, + {pool_offset(1702), 370}, + {-1}, {-1}, - {"goth", 72}, + {pool_offset(1705), 72}, - {"graphemebase", 74}, - {""}, + {pool_offset(1706), 74}, + {-1}, - {"bidic", 29}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(1708), 29}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"ogrext", 165}, - {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(1717), 165}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"idsb", 88}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(1724), 88}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"invariationselectorssupplement", 497}, + {pool_offset(1732), 497}, - {"assigned", 22}, - {""}, {""}, {""}, + {pool_offset(1733), 22}, + {-1}, {-1}, {-1}, - {"symbol", 191}, - {""}, {""}, {""}, + {pool_offset(1737), 191}, + {-1}, {-1}, {-1}, - {"ingreekextended", 305}, - {""}, + {pool_offset(1741), 305}, + {-1}, - {"pauc", 176}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(1743), 176}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"meroitichieroglyphs", 136}, - {""}, + {pool_offset(1752), 136}, + {-1}, - {"logicalorderexception", 119}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(1754), 119}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"incurrencysymbols", 308}, - {""}, {""}, {""}, + {pool_offset(1771), 308}, + {-1}, {-1}, {-1}, - {"inarabicextendeda", 257}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(1775), 257}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"insupplementalarrowsc", 489}, - {""}, {""}, + {pool_offset(1783), 489}, + {-1}, {-1}, - {"insupplementalarrowsa", 324}, - {""}, + {pool_offset(1786), 324}, + {-1}, - {"inkannada", 265}, - {""}, {""}, {""}, + {pool_offset(1788), 265}, + {-1}, {-1}, {-1}, - {"kana", 101}, + {pool_offset(1792), 101}, - {"phagspa", 181}, - {""}, {""}, + {pool_offset(1793), 181}, + {-1}, {-1}, - {"cakm", 43}, + {pool_offset(1796), 43}, - {"digit", 4}, - {""}, {""}, {""}, {""}, + {pool_offset(1797), 4}, + {-1}, {-1}, {-1}, {-1}, - {"softdotted", 204}, - {""}, {""}, {""}, + {pool_offset(1802), 204}, + {-1}, {-1}, {-1}, - {"inchakma", 441}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, + {pool_offset(1806), 441}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, - {"inphagspa", 365}, - {""}, {""}, {""}, + {pool_offset(1818), 365}, + {-1}, {-1}, {-1}, - {"inhighprivateusesurrogates", 384}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, + {pool_offset(1822), 384}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, - {"warangciti", 229}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(1836), 229}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"incjkcompatibilityforms", 393}, - {""}, {""}, + {pool_offset(1844), 393}, + {-1}, {-1}, - {"idstrinaryoperator", 89}, - {""}, + {pool_offset(1847), 89}, + {-1}, - {"incjkcompatibilityideographs", 387}, - {""}, + {pool_offset(1849), 387}, + {-1}, - {"inkaithi", 439}, - {""}, {""}, {""}, {""}, {""}, + {pool_offset(1851), 439}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {"takri", 214}, - {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(1857), 214}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"phlp", 186}, + {pool_offset(1864), 186}, - {"mendekikakui", 134}, - {""}, + {pool_offset(1865), 134}, + {-1}, - {"punct", 8}, - {""}, {""}, + {pool_offset(1867), 8}, + {-1}, {-1}, - {"otherdefaultignorablecodepoint", 164}, + {pool_offset(1870), 164}, - {"inkatakana", 343}, - {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(1871), 343}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"graph", 5}, + {pool_offset(1878), 5}, - {"lydi", 124}, - {""}, {""}, {""}, {""}, {""}, + {pool_offset(1879), 124}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {"pd", 178}, - {""}, + {pool_offset(1885), 178}, + {-1}, - {"incjkstrokes", 348}, - {""}, {""}, + {pool_offset(1887), 348}, + {-1}, {-1}, - {"lydian", 124}, - {""}, {""}, {""}, {""}, + {pool_offset(1890), 124}, + {-1}, {-1}, {-1}, {-1}, - {"sorasompeng", 205}, - {""}, + {pool_offset(1895), 205}, + {-1}, - {"incjkcompatibilityideographssupplement", 495}, - {""}, {""}, + {pool_offset(1897), 495}, + {-1}, {-1}, - {"meeteimayek", 133}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(1900), 133}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"otheruppercase", 170}, - {""}, {""}, + {pool_offset(1909), 170}, + {-1}, {-1}, - {"kali", 102}, - {""}, {""}, + {pool_offset(1912), 102}, + {-1}, {-1}, - {"inhanguljamo", 273}, - {""}, + {pool_offset(1915), 273}, + {-1}, - {"ideographic", 92}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(1917), 92}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"inmeeteimayek", 380}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, + {pool_offset(1935), 380}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, - {"incyrillicextendedb", 359}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(1948), 359}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"hluw", 18}, - {""}, {""}, {""}, {""}, + {pool_offset(1964), 18}, + {-1}, {-1}, {-1}, {-1}, - {"patsyn", 174}, - {""}, {""}, + {pool_offset(1969), 174}, + {-1}, {-1}, - {"incombiningdiacriticalmarks", 244}, + {pool_offset(1972), 244}, - {"inarabicsupplement", 252}, - {""}, + {pool_offset(1973), 252}, + {-1}, - {"inkanasupplement", 466}, - {""}, + {pool_offset(1975), 466}, + {-1}, - {"deprecated", 61}, + {pool_offset(1977), 61}, - {"inverticalforms", 391}, - {""}, {""}, {""}, + {pool_offset(1978), 391}, + {-1}, {-1}, {-1}, - {"incombiningdiacriticalmarksforsymbols", 309}, - {""}, {""}, {""}, {""}, + {pool_offset(1982), 309}, + {-1}, {-1}, {-1}, {-1}, - {"indevanagari", 258}, - {""}, + {pool_offset(1987), 258}, + {-1}, - {"inbuhid", 282}, - {""}, + {pool_offset(1989), 282}, + {-1}, - {"alphabetic", 17}, - {""}, {""}, {""}, + {pool_offset(1991), 17}, + {-1}, {-1}, {-1}, - {"oldhungarian", 154}, - {""}, {""}, + {pool_offset(1995), 154}, + {-1}, {-1}, - {"mark", 125}, - {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(1998), 125}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"inkharoshthi", 427}, - {""}, {""}, {""}, {""}, {""}, + {pool_offset(2005), 427}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {"deva", 63}, + {pool_offset(2011), 63}, - {"invedicextensions", 300}, - {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(2012), 300}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"devanagari", 63}, + {pool_offset(2019), 63}, - {"incombiningdiacriticalmarkssupplement", 303}, - {""}, {""}, {""}, + {pool_offset(2020), 303}, + {-1}, {-1}, {-1}, - {"ingeometricshapesextended", 488}, - {""}, {""}, {""}, {""}, {""}, + {pool_offset(2024), 488}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {"inkhmer", 284}, - {""}, {""}, {""}, + {pool_offset(2030), 284}, + {-1}, {-1}, {-1}, - {"changeswhencasemapped", 46}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, + {pool_offset(2034), 46}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {"intakri", 452}, - {""}, {""}, + {pool_offset(2058), 452}, + {-1}, {-1}, - {"dep", 61}, + {pool_offset(2061), 61}, - {"takr", 214}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(2062), 214}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"changeswhencasefolded", 45}, - {""}, + {pool_offset(2080), 45}, + {-1}, - {"kaithi", 99}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, + {pool_offset(2082), 99}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, - {"phag", 181}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, + {pool_offset(2093), 181}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, - {"inpahawhhmong", 464}, - {""}, + {pool_offset(2104), 464}, + {-1}, - {"bidicontrol", 29}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(2106), 29}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"inkhojki", 445}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(2116), 445}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"bamu", 25}, + {pool_offset(2126), 25}, - {"inbamum", 360}, + {pool_offset(2127), 360}, - {"changeswhentitlecased", 48}, - {""}, {""}, + {pool_offset(2128), 48}, + {-1}, {-1}, - {"inkhmersymbols", 290}, + {pool_offset(2131), 290}, - {"uideo", 224}, + {pool_offset(2132), 224}, - {"lu", 122}, - {""}, {""}, + {pool_offset(2133), 122}, + {-1}, {-1}, - {"kthi", 99}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(2136), 99}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"limbu", 112}, - {""}, + {pool_offset(2145), 112}, + {-1}, - {"defaultignorablecodepoint", 60}, - {""}, {""}, {""}, + {pool_offset(2147), 60}, + {-1}, {-1}, {-1}, - {"inplayingcards", 480}, - {""}, + {pool_offset(2151), 480}, + {-1}, - {"inhebrew", 249}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(2153), 249}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"modifiersymbol", 201}, - {""}, {""}, {""}, {""}, {""}, + {pool_offset(2161), 201}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {"ugaritic", 223}, - {""}, {""}, {""}, {""}, + {pool_offset(2167), 223}, + {-1}, {-1}, {-1}, {-1}, - {"inlisu", 357}, + {pool_offset(2172), 357}, - {"inglagolitic", 330}, - {""}, + {pool_offset(2173), 330}, + {-1}, - {"inprivateusearea", 386}, - {""}, {""}, + {pool_offset(2175), 386}, + {-1}, {-1}, - {"olck", 153}, - {""}, {""}, {""}, + {pool_offset(2178), 153}, + {-1}, {-1}, {-1}, - {"inbengali", 259}, - {""}, {""}, + {pool_offset(2182), 259}, + {-1}, {-1}, - {"olchiki", 153}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(2185), 153}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"caucasianalbanian", 40}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, + {pool_offset(2195), 40}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {"oldturkic", 160}, + {pool_offset(2210), 160}, - {"beng", 28}, + {pool_offset(2211), 28}, - {"intelugu", 264}, - {""}, {""}, {""}, {""}, {""}, + {pool_offset(2212), 264}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {"hyphen", 87}, - {""}, {""}, + {pool_offset(2218), 87}, + {-1}, {-1}, - {"inbuginese", 291}, - {""}, {""}, {""}, + {pool_offset(2221), 291}, + {-1}, {-1}, {-1}, - {"intagalog", 280}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, + {pool_offset(2225), 280}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {"cypriot", 57}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(2240), 57}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"inlimbu", 287}, - {""}, {""}, + {pool_offset(2249), 287}, + {-1}, {-1}, - {"graphemeextend", 75}, - {""}, {""}, + {pool_offset(2252), 75}, + {-1}, {-1}, - {"tagb", 210}, - {""}, {""}, {""}, + {pool_offset(2255), 210}, + {-1}, {-1}, {-1}, - {"incypriotsyllabary", 418}, - {""}, {""}, {""}, + {pool_offset(2259), 418}, + {-1}, {-1}, {-1}, - {"intagbanwa", 283}, - {""}, {""}, {""}, {""}, + {pool_offset(2263), 283}, + {-1}, {-1}, {-1}, {-1}, - {"inaegeannumbers", 400}, - {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(2268), 400}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"inkatakanaphoneticextensions", 349}, + {pool_offset(2275), 349}, - {"glag", 71}, + {pool_offset(2276), 71}, - {"combiningmark", 125}, + {pool_offset(2277), 125}, - {"palmyrene", 173}, - {""}, + {pool_offset(2278), 173}, + {-1}, - {"khmr", 104}, - {""}, {""}, {""}, + {pool_offset(2280), 104}, + {-1}, {-1}, {-1}, - {"khar", 103}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(2284), 103}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"ugar", 223}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(2292), 223}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"inarabicpresentationformsb", 395}, - {""}, {""}, {""}, + {pool_offset(2300), 395}, + {-1}, {-1}, {-1}, - {"insupplementaryprivateuseareaa", 498}, - {""}, + {pool_offset(2304), 498}, + {-1}, - {"variationselector", 228}, - {""}, {""}, {""}, {""}, + {pool_offset(2306), 228}, + {-1}, {-1}, {-1}, {-1}, - {"nko", 148}, + {pool_offset(2311), 148}, - {"nkoo", 148}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(2312), 148}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"inbamumsupplement", 461}, - {""}, {""}, {""}, {""}, {""}, + {pool_offset(2330), 461}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {"tglg", 209}, - {""}, + {pool_offset(2336), 209}, + {-1}, - {"any", 19}, + {pool_offset(2338), 19}, - {"enclosingmark", 132}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(2339), 132}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"gujr", 78}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(2348), 78}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"changeswhenlowercased", 47}, - {""}, {""}, {""}, {""}, + {pool_offset(2358), 47}, + {-1}, {-1}, {-1}, {-1}, - {"knda", 100}, + {pool_offset(2363), 100}, - {"hung", 154}, + {pool_offset(2364), 154}, - {"gujarati", 78}, - {""}, {""}, + {pool_offset(2365), 78}, + {-1}, {-1}, - {"bopo", 30}, - {""}, {""}, {""}, {""}, + {pool_offset(2368), 30}, + {-1}, {-1}, {-1}, {-1}, - {"inmendekikakui", 476}, - {""}, {""}, + {pool_offset(2373), 476}, + {-1}, {-1}, - {"inbopomofo", 344}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(2376), 344}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"kharoshthi", 103}, - {""}, + {pool_offset(2386), 103}, + {-1}, - {"kannada", 100}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, + {pool_offset(2388), 100}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, - {"khoj", 105}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, + {pool_offset(2401), 105}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, - {"cherokee", 50}, - {""}, {""}, {""}, + {pool_offset(2422), 50}, + {-1}, {-1}, {-1}, - {"inlatinextendedb", 241}, - {""}, {""}, {""}, {""}, {""}, + {pool_offset(2426), 241}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {"dashpunctuation", 178}, - {""}, {""}, + {pool_offset(2432), 178}, + {-1}, {-1}, - {"dupl", 65}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(2435), 65}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"inyisyllables", 355}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(2443), 355}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"georgian", 70}, - {""}, + {pool_offset(2451), 70}, + {-1}, - {"rejang", 189}, - {""}, + {pool_offset(2453), 189}, + {-1}, - {"oupper", 170}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, + {pool_offset(2455), 170}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, - {"aghb", 40}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, + {pool_offset(2477), 40}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, - {"khmer", 104}, - {""}, {""}, + {pool_offset(2491), 104}, + {-1}, {-1}, - {"grbase", 74}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(2494), 74}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"currencysymbol", 195}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(2503), 195}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"incombiningdiacriticalmarksextended", 293}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, + {pool_offset(2529), 293}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, - {"spacingmark", 131}, - {""}, + {pool_offset(2542), 131}, + {-1}, - {"orkh", 160}, - {""}, {""}, {""}, {""}, {""}, + {pool_offset(2544), 160}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {"cwu", 49}, - {""}, + {pool_offset(2550), 49}, + {-1}, - {"hebrew", 84}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(2552), 84}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"insupplementalpunctuation", 337}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, + {pool_offset(2570), 337}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, - {"oldnortharabian", 156}, - {""}, {""}, {""}, {""}, {""}, + {pool_offset(2581), 156}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {"incjksymbolsandpunctuation", 341}, - {""}, {""}, + {pool_offset(2587), 341}, + {-1}, {-1}, - {"othergraphemeextend", 165}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, + {pool_offset(2590), 165}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, - {"indevanagariextended", 367}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(2613), 367}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"tagalog", 209}, - {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(2621), 209}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"surrogate", 55}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, + {pool_offset(2628), 55}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, - {"bopomofo", 30}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, + {pool_offset(2650), 30}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, - {"ingeorgiansupplement", 333}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(2679), 333}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"uppercase", 226}, - {""}, {""}, {""}, {""}, {""}, {""}, + {pool_offset(2704), 226}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {"unifiedideograph", 224}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, + {pool_offset(2711), 224}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, - {"inpaucinhau", 455}, + {pool_offset(2742), 455}, - {"paucinhau", 176}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, + {pool_offset(2743), 176}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, - {"insupplementalsymbolsandpictographs", 490}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - - {"nonspacingmark", 138}, - {""}, - - {"inhanguljamoextendedb", 382}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - - {"inhighsurrogates", 383}, - - {"punctuation", 171}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - - {"openpunctuation", 185}, - - {"bassavah", 26}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - - {"upper", 10}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, - - {"insupplementalarrowsb", 326}, - - {"inkanbun", 346}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - - {"inkangxiradicals", 339}, - {""}, {""}, {""}, - - {"inmeroiticcursive", 426}, - {""}, {""}, - - {"signwriting", 199}, - {""}, {""}, - - {"incjkradicalssupplement", 338}, - {""}, - - {"pahawhhmong", 172}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - - {"inkayahli", 368}, - - {"uppercaseletter", 122}, - {""}, - - {"batk", 27}, - {""}, {""}, {""}, {""}, - - {"inbatak", 296}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - - {"incjkcompatibility", 351}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, - - {"buhd", 34}, - {""}, {""}, {""}, {""}, {""}, - - {"egyp", 66}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - - {"innoblock", 500}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, - - {"inegyptianhieroglyphs", 459}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, - - {"grek", 77}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - - {"bugi", 33}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - - {"changeswhenuppercased", 49}, - {""}, {""}, {""}, - - {"paragraphseparator", 236}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - - {"buginese", 33}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - - {"guru", 79}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - - {"inbopomofoextended", 347}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - - {"telugu", 216}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - - {"quotationmark", 187}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - - {"inkhudawadi", 447}, - {""}, {""}, {""}, {""}, {""}, - - {"kayahli", 102}, - {""}, - - {"oldsoutharabian", 159}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, - - {"insupplementaryprivateuseareab", 499}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - - {"inhangulcompatibilityjamo", 345}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - - {"zyyy", 53}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - - {"qmark", 187}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - - {"buhid", 34}, - - {"sk", 201}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, - - {"unknown", 225}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - - {"khudawadi", 106}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, - - {"katakana", 101}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - - {"incjkunifiedideographsextensionc", 492}, - {""}, {""}, - - {"incjkunifiedideographsextensiona", 352}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - - {"incjkunifiedideographs", 354}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, - - {"incjkunifiedideographsextensione", 494}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, - - {"duployan", 65}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - - {"egyptianhieroglyphs", 66}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - - {"inboxdrawing", 318}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - - {"khojki", 105}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - - {"incjkunifiedideographsextensiond", 493}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - - {"batak", 27}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, - - {"incjkunifiedideographsextensionb", 491}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, - - {"blank", 2}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - - {"greek", 77}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - - {"grlink", 76}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - - {"gurmukhi", 79}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - - {"graphemelink", 76} + {pool_offset(2774), 490}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2792), 138}, + {-1}, + + {pool_offset(2794), 382}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2802), 383}, + + {pool_offset(2803), 171}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, + + {pool_offset(2834), 185}, + + {pool_offset(2835), 26}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, + + {pool_offset(2864), 10}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2878), 326}, + + {pool_offset(2879), 346}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, + + {pool_offset(2918), 339}, + {-1}, {-1}, {-1}, + + {pool_offset(2922), 426}, + {-1}, {-1}, + + {pool_offset(2925), 199}, + {-1}, {-1}, + + {pool_offset(2928), 338}, + {-1}, + + {pool_offset(2930), 172}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, + + {pool_offset(2952), 368}, + + {pool_offset(2953), 122}, + {-1}, + + {pool_offset(2955), 27}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2960), 296}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2968), 351}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2983), 34}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2989), 66}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, + + {pool_offset(3009), 500}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3043), 459}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3084), 77}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, + + {pool_offset(3176), 33}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3230), 49}, + {-1}, {-1}, {-1}, + + {pool_offset(3234), 236}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, + + {pool_offset(3254), 33}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3282), 79}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3299), 347}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, + + {pool_offset(3312), 216}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, + + {pool_offset(3343), 187}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, + + {pool_offset(3364), 447}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3370), 102}, + {-1}, + + {pool_offset(3372), 159}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3396), 499}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, + + {pool_offset(3479), 345}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, + + {pool_offset(3491), 53}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3555), 187}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, + + {pool_offset(3566), 34}, + + {pool_offset(3567), 201}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3582), 225}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3619), 106}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3644), 101}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3670), 492}, + {-1}, {-1}, + + {pool_offset(3673), 352}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, + + {pool_offset(3685), 354}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3700), 494}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3743), 65}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, + + {pool_offset(3763), 66}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3853), 318}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(4106), 105}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, + + {pool_offset(4244), 493}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(4722), 27}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(4765), 491}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(4780), 2}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(4851), 77}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, + + {pool_offset(4943), 76}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, + + {pool_offset(5054), 79}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(5162), 76} }; if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) @@ -25295,10 +26727,14 @@ unicode_lookup_property_name (register const char *str, register unsigned int le if (key <= MAX_HASH_VALUE && key >= 0) { - register const char *s = wordlist[key].name; - - if ((((unsigned char)*str ^ (unsigned char)*s) & ~32) == 0 && !gperf_case_strncmp (str, s, len) && s[len] == '\0') - return &wordlist[key]; + register int o = wordlist[key].name; + if (o >= 0) + { + register const char *s = o + unicode_prop_name_pool; + + if ((((unsigned char)*str ^ (unsigned char)*s) & ~32) == 0 && !gperf_case_strncmp (str, s, len) && s[len] == '\0') + return &wordlist[key]; + } } } return 0; diff --git a/src/unicode_property_data_posix.c b/src/unicode_property_data_posix.c index 1cf082b..fffe2ef 100644 --- a/src/unicode_property_data_posix.c +++ b/src/unicode_property_data_posix.c @@ -1,5 +1,5 @@ /* ANSI-C code produced by gperf version 3.0.4 */ -/* Command-line: gperf -T -C -c -t -j1 -L ANSI-C --ignore-case -N unicode_lookup_property_name --output-file gperf.tmp unicode_property_data_posix.gperf */ +/* Command-line: gperf -T -C -c -t -j1 -L ANSI-C --ignore-case --pic -Q unicode_prop_name_pool -N unicode_lookup_property_name --output-file gperf.tmp unicode_property_data_posix.gperf */ /* Computed positions: -k'1,3' */ #if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ @@ -4785,6 +4785,9 @@ const CodeRanges[] = { CR_ASCII, }; +#define pool_offset(s) offsetof(struct unicode_prop_name_pool_t, unicode_prop_name_pool_str##s) + + #define TOTAL_KEYWORDS 15 #define MIN_WORD_LENGTH 4 #define MAX_WORD_LENGTH 7 @@ -4879,48 +4882,85 @@ hash (register const char *str, register unsigned int len) return len + asso_values[(unsigned char)str[2]] + asso_values[(unsigned char)str[0]]; } +struct unicode_prop_name_pool_t + { + char unicode_prop_name_pool_str5[sizeof("print")]; + char unicode_prop_name_pool_str6[sizeof("punct")]; + char unicode_prop_name_pool_str7[sizeof("alpha")]; + char unicode_prop_name_pool_str8[sizeof("alnum")]; + char unicode_prop_name_pool_str9[sizeof("xdigit")]; + char unicode_prop_name_pool_str10[sizeof("newline")]; + char unicode_prop_name_pool_str11[sizeof("upper")]; + char unicode_prop_name_pool_str12[sizeof("ascii")]; + char unicode_prop_name_pool_str13[sizeof("cntrl")]; + char unicode_prop_name_pool_str14[sizeof("space")]; + char unicode_prop_name_pool_str15[sizeof("word")]; + char unicode_prop_name_pool_str16[sizeof("lower")]; + char unicode_prop_name_pool_str17[sizeof("graph")]; + char unicode_prop_name_pool_str18[sizeof("digit")]; + char unicode_prop_name_pool_str19[sizeof("blank")]; + }; +static const struct unicode_prop_name_pool_t unicode_prop_name_pool_contents = + { + "print", + "punct", + "alpha", + "alnum", + "xdigit", + "newline", + "upper", + "ascii", + "cntrl", + "space", + "word", + "lower", + "graph", + "digit", + "blank" + }; +#define unicode_prop_name_pool ((const char *) &unicode_prop_name_pool_contents) #ifdef __GNUC__ __inline #if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__ __attribute__ ((__gnu_inline__)) #endif #endif -const struct PropertyNameCtype * +const struct PoolPropertyNameCtype * unicode_lookup_property_name (register const char *str, register unsigned int len) { - static const struct PropertyNameCtype wordlist[] = + static const struct PoolPropertyNameCtype wordlist[] = { - {""}, {""}, {""}, {""}, {""}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {"print", 7}, + {pool_offset(5), 7}, - {"punct", 8}, + {pool_offset(6), 8}, - {"alpha", 1}, + {pool_offset(7), 1}, - {"alnum", 13}, + {pool_offset(8), 13}, - {"xdigit", 11}, + {pool_offset(9), 11}, - {"newline", 0}, + {pool_offset(10), 0}, - {"upper", 10}, + {pool_offset(11), 10}, - {"ascii", 14}, + {pool_offset(12), 14}, - {"cntrl", 3}, + {pool_offset(13), 3}, - {"space", 9}, + {pool_offset(14), 9}, - {"word", 12}, + {pool_offset(15), 12}, - {"lower", 6}, + {pool_offset(16), 6}, - {"graph", 5}, + {pool_offset(17), 5}, - {"digit", 4}, + {pool_offset(18), 4}, - {"blank", 2} + {pool_offset(19), 2} }; if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) @@ -4929,10 +4969,14 @@ unicode_lookup_property_name (register const char *str, register unsigned int le if (key <= MAX_HASH_VALUE && key >= 0) { - register const char *s = wordlist[key].name; + register int o = wordlist[key].name; + if (o >= 0) + { + register const char *s = o + unicode_prop_name_pool; - if ((((unsigned char)*str ^ (unsigned char)*s) & ~32) == 0 && !gperf_case_strncmp (str, s, len) && s[len] == '\0') - return &wordlist[key]; + if ((((unsigned char)*str ^ (unsigned char)*s) & ~32) == 0 && !gperf_case_strncmp (str, s, len) && s[len] == '\0') + return &wordlist[key]; + } } } return 0; @@ -2,7 +2,7 @@ utf8.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2016 K.Kosako <sndgk393 AT ybb DOT ne DOT jp> + * Copyright (c) 2002-2017 K.Kosako <sndgk393 AT ybb DOT ne DOT jp> * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -124,7 +124,7 @@ mbc_to_code(const UChar* p, const UChar* end) OnigCodePoint n; len = mbc_enc_len(p); - if (len > end - p) len = end - p; + if (len > (int )(end - p)) len = (int )(end - p); c = *p++; if (len > 1) { @@ -216,7 +216,7 @@ code_to_mbc(OnigCodePoint code, UChar *buf) } *p++ = UTF8_TRAIL0(code); - return p - buf; + return (int )(p - buf); } } diff --git a/test/Makefile.am b/test/Makefile.am index 2930e7f..9643bb0 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -3,7 +3,7 @@ lib_onig = ../src/libonig.la AM_LDFLAGS = -L$(prefix)/lib AM_CFLAGS = -AM_CPPFLAGS = -I../src -I$(includedir) +AM_CPPFLAGS = -I$(top_srcdir)/src -I$(includedir) TESTS = test_utf8 testc testp testcu diff --git a/test/test_utf8.c b/test/test_utf8.c index 31fcfcd..a14cacc 100644 --- a/test/test_utf8.c +++ b/test/test_utf8.c @@ -1051,7 +1051,20 @@ extern int main(int argc, char* argv[]) n("^\\X.$", "\xE0\xAE\xA8\xE0\xAE\xBF"); + // a + COMBINING GRAVE ACCENT (U+0300) + x2("h\\Xllo", "ha\xCC\x80llo", 0, 7); + x2("\\x40", "@", 0, 1); + x2("\\x1", "\x01", 0, 1); + x2("\\x{1}", "\x01", 0, 1); + x2("\\x{4E38}", "\xE4\xB8\xB8", 0, 3); + x2("\\u4E38", "\xE4\xB8\xB8", 0, 3); + x2("\\u0040", "@", 0, 1); + + x2("c.*\\b", "abc", 2, 3); + x2("\\b.*abc.*\\b", "abc", 0, 3); + + e("\\u040", "@", ONIGERR_INVALID_CODE_POINT_VALUE); e("(?<abc>\\g<abc>)", "zzzz", ONIGERR_NEVER_ENDING_RECURSION); e("(?<=(?>abc))", "abc", ONIGERR_INVALID_LOOK_BEHIND_PATTERN); |