diff --git a/.gitignore b/.gitignore index b239c01..9f6a890 100644 --- a/.gitignore +++ b/.gitignore @@ -48,3 +48,4 @@ edbee-test/edbee-lib/qslog/ build/ .idea/ +*.old/ diff --git a/CHANGELOG.md b/CHANGELOG.md index 7b8972a..06232a5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,10 +1,14 @@ # Changelog -edbee.lib: +- (2025-01-24) [v0.9.0] #150, Add version number (EDBEE_VERSION / Edbee::instance()->version()) +- (2025-01-24) #145, Replace onigmo with onigruma - (2025-01-04) Remove qslog references from `edbee-test` +- (2024-12-28) Default cmake build is QT6 (use the BUILD_WITH_QT5 option) +- (2024-12-22) Replaced qslog dependency with qlog_* macros to qDebug, qWarning etc. + +Older Items -- Replaced qslog dependency with qlog_* macros to qDebug, qWarning etc. - Autocomplete changes, setFocusPolicy on QMenu an adding `setAttribute(Qt::WA_ShowWithoutActivating)` - PR #147, Add ctrl-a / ctrl-e support for macOS - fix, Autocomplete Improvements diff --git a/CMakeLists.txt b/CMakeLists.txt index 174f3cb..3053c2a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,7 +2,7 @@ CMAKE_MINIMUM_REQUIRED(VERSION 3.1...3.20) PROJECT(edbee) -OPTION(BUILD_WITH_QT5 "Whether to build with Qt5 or Qt6." ON) +OPTION(BUILD_WITH_QT5 "Whether to build with Qt5 or Qt6." OFF) ADD_SUBDIRECTORY(edbee-lib) ADD_SUBDIRECTORY(edbee-test) diff --git a/README.md b/README.md index 602c626..4edc9a6 100644 --- a/README.md +++ b/README.md @@ -157,6 +157,33 @@ Known Issues and Missing Features * Optimalisations for better render support and background calculate/paint-ahead functionality * I really want to build in scripting support, for extending the editor with plugins. +Dependencies +------------ + +The following dependencies have been added. +(via git subtree, to embed the code and not add the complexity of a submodule to the end user) + +Oniguruma has been added + +```sh +git subtree add --prefix vendor/oniguruma/oniguruma https://github.com/kkos/oniguruma master --squash +``` + +To update oniguruma + +```sh +git subtree pull --prefix vendor/oniguruma/oniguruma https://github.com/kkos/oniguruma master --squash +``` + +Build with minGW +---------------- + +```powershell +# Sample to build with MinGW on Qt (-DCMAKE_PREFIX_PATH=you cmake path) +cmake -G "MinGW Makefiles" -DCMAKE_PREFIX_PATH="C:\Qt\6.8.0\mingw_64\lib\cmake\" . +cmake --build . +``` + Contributing ------------ diff --git a/edbee-lib/CMakeLists.txt b/edbee-lib/CMakeLists.txt index dfc4722..f749d8f 100644 --- a/edbee-lib/CMakeLists.txt +++ b/edbee-lib/CMakeLists.txt @@ -175,7 +175,7 @@ SET(HEADERS edbee/views/texttheme.h ) -add_subdirectory(../vendor/onig/ onig) +add_subdirectory(../vendor/oniguruma/ oniguruma) if(BUILD_WITH_QT5) find_package(Qt5 REQUIRED COMPONENTS Core UiTools Widgets) diff --git a/edbee-lib/edbee-lib.pri b/edbee-lib/edbee-lib.pri index 788f3b6..071a965 100644 --- a/edbee-lib/edbee-lib.pri +++ b/edbee-lib/edbee-lib.pri @@ -104,6 +104,7 @@ HEADERS += \ $$PWD/edbee/data/factorykeymap.h \ $$PWD/edbee/debug.h \ $$PWD/edbee/edbee.h \ + $$PWD/edbee/edbeeversion.h \ $$PWD/edbee/exports.h \ $$PWD/edbee/io/baseplistparser.h \ $$PWD/edbee/io/jsonparser.h \ @@ -168,7 +169,8 @@ HEADERS += \ ## Extra dependencies ##==================== -include($$PWD/../vendor/onig/onig.pri) + +include($$PWD/../vendor/oniguruma/oniguruma.pri) ## Files that can usefully listed inside Qt IDE (Qt Creator, as "Other files") ##============================================================================ diff --git a/edbee-lib/edbee/edbee.cpp b/edbee-lib/edbee/edbee.cpp index ff915cf..90e32ec 100644 --- a/edbee-lib/edbee/edbee.cpp +++ b/edbee-lib/edbee/edbee.cpp @@ -98,6 +98,12 @@ void Edbee::autoInit() } } +/// Returns the edbee version number +const char* Edbee::version() const +{ + return EDBEE_VERSION; +} + /// TODO: We need a way to load the (scoped) environment variables diff --git a/edbee-lib/edbee/edbee.h b/edbee-lib/edbee/edbee.h index ad94555..3a2a4d4 100644 --- a/edbee-lib/edbee/edbee.h +++ b/edbee-lib/edbee/edbee.h @@ -6,6 +6,7 @@ #pragma once #include "edbee/exports.h" +#include "edbee/edbeeversion.h" #include @@ -39,6 +40,7 @@ class EDBEE_EXPORT Edbee : public QObject void setThemePath( const QString& themePath ); void autoInit(); + const char* version() const; public slots: void init(); diff --git a/edbee-lib/edbee/edbeeversion.h b/edbee-lib/edbee/edbeeversion.h new file mode 100644 index 0000000..6160d2f --- /dev/null +++ b/edbee-lib/edbee/edbeeversion.h @@ -0,0 +1,8 @@ +#pragma once + +#define EDBEE_VERSION "0.9.0" + +#define EDBEE_VERSION_MAJOR 0 +#define EDBEE_VERSION_MINOR 9 +#define EDBEE_VERSION_PATCH 0 +#define EDBEE_VERSION_POSTFIX "" diff --git a/edbee-lib/edbee/util/regexp.cpp b/edbee-lib/edbee/util/regexp.cpp index 8e53f3b..9a312d3 100644 --- a/edbee-lib/edbee/util/regexp.cpp +++ b/edbee-lib/edbee/util/regexp.cpp @@ -17,7 +17,7 @@ #endif #define ONIG_EXTERN extern -#include "onigmo.h" +#include "oniguruma.h" #ifdef _MSC_VER #pragma warning( pop ) @@ -89,14 +89,21 @@ class OnigRegExpEngine : public RegExpEngine { const QChar* patternChars = pattern.constData(); - const OnigSyntaxType* onigSyntax = &OnigSyntaxRuby; // ONIG_SYNTAX_DEFAULT + OnigSyntaxType* onigSyntax = &OnigSyntaxRuby; // ONIG_SYNTAX_DEFAULT if( syntax == RegExp::SyntaxFixedString ) { onigSyntax = &OnigSyntaxASIS; } OnigOptionType onigOptions = ONIG_OPTION_NONE|ONIG_OPTION_CAPTURE_GROUP; if( !caseSensitive ) { onigOptions = onigOptions | ONIG_OPTION_IGNORECASE;} - int result = onig_new(®_, (OnigUChar*)patternChars, (OnigUChar*)(patternChars + pattern.length()), onigOptions, ONIG_ENCODING_UTF16_LE, onigSyntax, &einfo_); + int result = onig_new( + ®_, + (OnigUChar*)patternChars, + (OnigUChar*)(patternChars + pattern.length()), + onigOptions, + ONIG_ENCODING_UTF16_LE, + onigSyntax, + &einfo_); valid_ = result == ONIG_NORMAL; fillError( result ); } diff --git a/tools/patch-oniguruma.sh b/tools/patch-oniguruma.sh new file mode 100755 index 0000000..e31e984 --- /dev/null +++ b/tools/patch-oniguruma.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +cp -Rp ../vendor/oniguruma/patch/* ../vendor/oniguruma/oniguruma/ diff --git a/tools/set-version.sh b/tools/set-version.sh new file mode 100755 index 0000000..4b2e1d0 --- /dev/null +++ b/tools/set-version.sh @@ -0,0 +1,30 @@ +#!/bin/sh + +if [ "$#" -lt 3 ]; then + echo "Generates the edbee version header" + echo "" + echo "Usage: $0 []" + exit; +fi + +major="$1" +minor="$2" +patch="$3" +postfix="$4" +if [ -n "$4" ]; then + postfix_dash="-$4" +fi +target="../edbee-lib/edbee/edbeeversion.h" + +cat < $target +#pragma once + +#define EDBEE_VERSION "$major.$minor.$patch$postfix_dash" + +#define EDBEE_VERSION_MAJOR $major +#define EDBEE_VERSION_MINOR $minor +#define EDBEE_VERSION_PATCH $patch +#define EDBEE_VERSION_POSTFIX "$postfix" +C + +cat $target diff --git a/vendor/onig/.editorconfig b/vendor/onig/.editorconfig deleted file mode 100644 index abeeae2..0000000 --- a/vendor/onig/.editorconfig +++ /dev/null @@ -1,42 +0,0 @@ -; see: http://editorconfig.org/ - -root = true - -[*] -end_of_line = lf -insert_final_newline = true -trim_trailing_whitespace = true - -[**.[ch]] -indent_style = tab -indent_size = 2 -tab_width = 8 - -[st.[ch]] -indent_style = tab -indent_size = 4 -tab_width = 8 - -[**.py] -indent_style = space -indent_size = 4 - -[**.rb] -indent_style = space -indent_size = 2 - -[**.yml] -indent_style = space -indent_size = 2 - -[HISTORY] -indent_style = space - -[doc/*] -indent_style = space - -[win32/*] -end_of_line = crlf - -[win32/*.py] -end_of_line = lf diff --git a/vendor/onig/.gitignore b/vendor/onig/.gitignore deleted file mode 100644 index 085b4a1..0000000 --- a/vendor/onig/.gitignore +++ /dev/null @@ -1,75 +0,0 @@ -# ignore dot-files, binary files and backup files -.* -*.o -*.lo -*.so -*.a -*.la -*.obj -*.def -*.dll -*.exe -*.exp -*.lib -*.pdb -*.pyc -*.bak -*.BAK -*~ -*.swp -*.orig -*.rej -*.RES -*.res - -# gcov files -*.gcda -*.gcno -*.gcov - -# don't want to ignore -!.gitignore -!.editorconfig -!.travis.yml - -# working dirs -.deps -.libs -/build*/ - -# autotools generated files -/autom4te.cache -/config.h -/config.log -/config.status -/libtool -/onigmo-config -/onigmo.pc -/Makefile -/sample/Makefile -/stamp-h1 - -# generated executable files -/enc/mktable -/sample/crnl -/sample/encode -/sample/listcap -/sample/names -/sample/posix -/sample/scan -/sample/simple -/sample/sql -/sample/syntax -/testc -/testcu -/testp - -# tag files -tags -TAGS - -# GNU global files -GPATH -GRTAGS -GSYMS -GTAGS diff --git a/vendor/onig/.travis.yml b/vendor/onig/.travis.yml deleted file mode 100644 index 601962a..0000000 --- a/vendor/onig/.travis.yml +++ /dev/null @@ -1,33 +0,0 @@ -language: c - -branches: - except: - - ruby-2.x - -compiler: - - gcc - - clang - -env: - - CFLAGS=--coverage CONFOPT= - -sudo: false - -addons: - apt: - packages: - - lcov - #- python3 - -before_install: - - gem install lcoveralls - -before_script: - - ./configure $CONFOPT && make - -script: - - make test - -after_success: - - lcov -c -d .libs -o coverage.info - - lcoveralls --retry-count 5 coverage.info diff --git a/vendor/onig/AUTHORS b/vendor/onig/AUTHORS deleted file mode 100644 index c6a707a..0000000 --- a/vendor/onig/AUTHORS +++ /dev/null @@ -1,2 +0,0 @@ -kentkt AT csc DOT jp (K.Takata) -sndgk393 AT ybb DOT ne DOT jp (K.Kosako) diff --git a/vendor/onig/CMakeLists.txt b/vendor/onig/CMakeLists.txt deleted file mode 100644 index 866508f..0000000 --- a/vendor/onig/CMakeLists.txt +++ /dev/null @@ -1,86 +0,0 @@ -IF(NOT WIN32) - EXECUTE_PROCESS( - COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/configure - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} - ) -ENDIF(NOT WIN32) - -SET(ONIG_INCLUDE_DIRS - ${CMAKE_CURRENT_SOURCE_DIR}/ - ${CMAKE_CURRENT_SOURCE_DIR}/enc/unicode - PARENT_SCOPE -) - -SET(ONIG_SOURCES - ${CMAKE_CURRENT_SOURCE_DIR}/regcomp.c - ${CMAKE_CURRENT_SOURCE_DIR}/regenc.c - ${CMAKE_CURRENT_SOURCE_DIR}/regerror.c - ${CMAKE_CURRENT_SOURCE_DIR}/regexec.c - ${CMAKE_CURRENT_SOURCE_DIR}/regext.c - ${CMAKE_CURRENT_SOURCE_DIR}/reggnu.c - ${CMAKE_CURRENT_SOURCE_DIR}/regparse.c - ${CMAKE_CURRENT_SOURCE_DIR}/regposerr.c - ${CMAKE_CURRENT_SOURCE_DIR}/regposix.c - ${CMAKE_CURRENT_SOURCE_DIR}/regsyntax.c - ${CMAKE_CURRENT_SOURCE_DIR}/regtrav.c - ${CMAKE_CURRENT_SOURCE_DIR}/regversion.c - ${CMAKE_CURRENT_SOURCE_DIR}/st.c - ${CMAKE_CURRENT_SOURCE_DIR}/enc/ascii.c - ${CMAKE_CURRENT_SOURCE_DIR}/enc/big5.c - ${CMAKE_CURRENT_SOURCE_DIR}/enc/cp949.c - ${CMAKE_CURRENT_SOURCE_DIR}/enc/emacs_mule.c - ${CMAKE_CURRENT_SOURCE_DIR}/enc/euc_jp.c - ${CMAKE_CURRENT_SOURCE_DIR}/enc/euc_kr.c - ${CMAKE_CURRENT_SOURCE_DIR}/enc/euc_tw.c - ${CMAKE_CURRENT_SOURCE_DIR}/enc/gb18030.c - ${CMAKE_CURRENT_SOURCE_DIR}/enc/gbk.c - ${CMAKE_CURRENT_SOURCE_DIR}/enc/iso_8859.h - ${CMAKE_CURRENT_SOURCE_DIR}/enc/iso_8859_1.c - ${CMAKE_CURRENT_SOURCE_DIR}/enc/iso_8859_10.c - ${CMAKE_CURRENT_SOURCE_DIR}/enc/iso_8859_11.c - ${CMAKE_CURRENT_SOURCE_DIR}/enc/iso_8859_13.c - ${CMAKE_CURRENT_SOURCE_DIR}/enc/iso_8859_14.c - ${CMAKE_CURRENT_SOURCE_DIR}/enc/iso_8859_15.c - ${CMAKE_CURRENT_SOURCE_DIR}/enc/iso_8859_16.c - ${CMAKE_CURRENT_SOURCE_DIR}/enc/iso_8859_2.c - ${CMAKE_CURRENT_SOURCE_DIR}/enc/iso_8859_3.c - ${CMAKE_CURRENT_SOURCE_DIR}/enc/iso_8859_4.c - ${CMAKE_CURRENT_SOURCE_DIR}/enc/iso_8859_5.c - ${CMAKE_CURRENT_SOURCE_DIR}/enc/iso_8859_6.c - ${CMAKE_CURRENT_SOURCE_DIR}/enc/iso_8859_7.c - ${CMAKE_CURRENT_SOURCE_DIR}/enc/iso_8859_8.c - ${CMAKE_CURRENT_SOURCE_DIR}/enc/iso_8859_9.c - ${CMAKE_CURRENT_SOURCE_DIR}/enc/koi8_r.c - ${CMAKE_CURRENT_SOURCE_DIR}/enc/koi8_u.c - ${CMAKE_CURRENT_SOURCE_DIR}/enc/shift_jis.c - ${CMAKE_CURRENT_SOURCE_DIR}/enc/unicode.c - ${CMAKE_CURRENT_SOURCE_DIR}/enc/us_ascii.c - ${CMAKE_CURRENT_SOURCE_DIR}/enc/utf_16be.c - ${CMAKE_CURRENT_SOURCE_DIR}/enc/utf_16le.c - ${CMAKE_CURRENT_SOURCE_DIR}/enc/utf_32be.c - ${CMAKE_CURRENT_SOURCE_DIR}/enc/utf_32le.c - ${CMAKE_CURRENT_SOURCE_DIR}/enc/utf_8.c - ${CMAKE_CURRENT_SOURCE_DIR}/enc/windows_1250.c - ${CMAKE_CURRENT_SOURCE_DIR}/enc/windows_1251.c - ${CMAKE_CURRENT_SOURCE_DIR}/enc/windows_1252.c - ${CMAKE_CURRENT_SOURCE_DIR}/enc/windows_1253.c - ${CMAKE_CURRENT_SOURCE_DIR}/enc/windows_1254.c - ${CMAKE_CURRENT_SOURCE_DIR}/enc/windows_1257.c - ${CMAKE_CURRENT_SOURCE_DIR}/enc/windows_31j.c - PARENT_SCOPE -) - -SET(ONIG_HEADERS - ${CMAKE_CURRENT_SOURCE_DIR}/config.h - ${CMAKE_CURRENT_SOURCE_DIR}/enc/unicode/casefold.h - ${CMAKE_CURRENT_SOURCE_DIR}/onigmo.h - ${CMAKE_CURRENT_SOURCE_DIR}/onigmognu.h - ${CMAKE_CURRENT_SOURCE_DIR}/onigmoposix.h - ${CMAKE_CURRENT_SOURCE_DIR}/regenc.h - ${CMAKE_CURRENT_SOURCE_DIR}/regint.h - ${CMAKE_CURRENT_SOURCE_DIR}/regparse.h - ${CMAKE_CURRENT_SOURCE_DIR}/st.h - ${CMAKE_CURRENT_SOURCE_DIR}/win32/config.h - ${CMAKE_CURRENT_SOURCE_DIR}/config-onig-edbee.h - PARENT_SCOPE -) diff --git a/vendor/onig/COPYING b/vendor/onig/COPYING deleted file mode 100644 index de0e790..0000000 --- a/vendor/onig/COPYING +++ /dev/null @@ -1,87 +0,0 @@ -Onigmo (Oniguruma-mod) LICENSE ------------------------------- - -/*- - * Copyright (c) 2002-2009 K.Kosako - * Copyright (c) 2011-2014 K.Takata - * 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. - */ - - - -Oniguruma LICENSE ------------------ - -/*- - * Copyright (c) 2002-2009 K.Kosako - * 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. - */ - - - -Ruby BSDL ---------- -Copyright (C) 1993-2013 Yukihiro Matsumoto. 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. diff --git a/vendor/onig/INSTALL b/vendor/onig/INSTALL deleted file mode 100644 index 7d1c323..0000000 --- a/vendor/onig/INSTALL +++ /dev/null @@ -1,365 +0,0 @@ -Installation Instructions -************************* - -Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005, -2006, 2007, 2008, 2009 Free Software Foundation, Inc. - - Copying and distribution of this file, with or without modification, -are permitted in any medium without royalty provided the copyright -notice and this notice are preserved. This file is offered as-is, -without warranty of any kind. - -Basic Installation -================== - - Briefly, the shell commands `./configure; make; make install' should -configure, build, and install this package. The following -more-detailed instructions are generic; see the `README' file for -instructions specific to this package. Some packages provide this -`INSTALL' file but do not implement all of the features documented -below. The lack of an optional feature in a given package is not -necessarily a bug. More recommendations for GNU packages can be found -in *note Makefile Conventions: (standards)Makefile Conventions. - - The `configure' shell script attempts to guess correct values for -various system-dependent variables used during compilation. It uses -those values to create a `Makefile' in each directory of the package. -It may also create one or more `.h' files containing system-dependent -definitions. Finally, it creates a shell script `config.status' that -you can run in the future to recreate the current configuration, and a -file `config.log' containing compiler output (useful mainly for -debugging `configure'). - - It can also use an optional file (typically called `config.cache' -and enabled with `--cache-file=config.cache' or simply `-C') that saves -the results of its tests to speed up reconfiguring. Caching is -disabled by default to prevent problems with accidental use of stale -cache files. - - If you need to do unusual things to compile the package, please try -to figure out how `configure' could check whether to do them, and mail -diffs or instructions to the address given in the `README' so they can -be considered for the next release. If you are using the cache, and at -some point `config.cache' contains results you don't want to keep, you -may remove or edit it. - - The file `configure.ac' (or `configure.in') is used to create -`configure' by a program called `autoconf'. You need `configure.ac' if -you want to change it or regenerate `configure' using a newer version -of `autoconf'. - - The simplest way to compile this package is: - - 1. `cd' to the directory containing the package's source code and type - `./configure' to configure the package for your system. - - Running `configure' might take a while. While running, it prints - some messages telling which features it is checking for. - - 2. Type `make' to compile the package. - - 3. Optionally, type `make check' to run any self-tests that come with - the package, generally using the just-built uninstalled binaries. - - 4. Type `make install' to install the programs and any data files and - documentation. When installing into a prefix owned by root, it is - recommended that the package be configured and built as a regular - user, and only the `make install' phase executed with root - privileges. - - 5. Optionally, type `make installcheck' to repeat any self-tests, but - this time using the binaries in their final installed location. - This target does not install anything. Running this target as a - regular user, particularly if the prior `make install' required - root privileges, verifies that the installation completed - correctly. - - 6. You can remove the program binaries and object files from the - source code directory by typing `make clean'. To also remove the - files that `configure' created (so you can compile the package for - a different kind of computer), type `make distclean'. There is - also a `make maintainer-clean' target, but that is intended mainly - for the package's developers. If you use it, you may have to get - all sorts of other programs in order to regenerate files that came - with the distribution. - - 7. Often, you can also type `make uninstall' to remove the installed - files again. In practice, not all packages have tested that - uninstallation works correctly, even though it is required by the - GNU Coding Standards. - - 8. Some packages, particularly those that use Automake, provide `make - distcheck', which can by used by developers to test that all other - targets like `make install' and `make uninstall' work correctly. - This target is generally not run by end users. - -Compilers and Options -===================== - - Some systems require unusual options for compilation or linking that -the `configure' script does not know about. Run `./configure --help' -for details on some of the pertinent environment variables. - - You can give `configure' initial values for configuration parameters -by setting variables in the command line or in the environment. Here -is an example: - - ./configure CC=c99 CFLAGS=-g LIBS=-lposix - - *Note Defining Variables::, for more details. - -Compiling For Multiple Architectures -==================================== - - You can compile the package for more than one kind of computer at the -same time, by placing the object files for each architecture in their -own directory. To do this, you can use GNU `make'. `cd' to the -directory where you want the object files and executables to go and run -the `configure' script. `configure' automatically checks for the -source code in the directory that `configure' is in and in `..'. This -is known as a "VPATH" build. - - With a non-GNU `make', it is safer to compile the package for one -architecture at a time in the source code directory. After you have -installed the package for one architecture, use `make distclean' before -reconfiguring for another architecture. - - On MacOS X 10.5 and later systems, you can create libraries and -executables that work on multiple system types--known as "fat" or -"universal" binaries--by specifying multiple `-arch' options to the -compiler but only a single `-arch' option to the preprocessor. Like -this: - - ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ - CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ - CPP="gcc -E" CXXCPP="g++ -E" - - This is not guaranteed to produce working output in all cases, you -may have to build one architecture at a time and combine the results -using the `lipo' tool if you have problems. - -Installation Names -================== - - By default, `make install' installs the package's commands under -`/usr/local/bin', include files under `/usr/local/include', etc. You -can specify an installation prefix other than `/usr/local' by giving -`configure' the option `--prefix=PREFIX', where PREFIX must be an -absolute file name. - - You can specify separate installation prefixes for -architecture-specific files and architecture-independent files. If you -pass the option `--exec-prefix=PREFIX' to `configure', the package uses -PREFIX as the prefix for installing programs and libraries. -Documentation and other data files still use the regular prefix. - - In addition, if you use an unusual directory layout you can give -options like `--bindir=DIR' to specify different values for particular -kinds of files. Run `configure --help' for a list of the directories -you can set and what kinds of files go in them. In general, the -default for these options is expressed in terms of `${prefix}', so that -specifying just `--prefix' will affect all of the other directory -specifications that were not explicitly provided. - - The most portable way to affect installation locations is to pass the -correct locations to `configure'; however, many packages provide one or -both of the following shortcuts of passing variable assignments to the -`make install' command line to change installation locations without -having to reconfigure or recompile. - - The first method involves providing an override variable for each -affected directory. For example, `make install -prefix=/alternate/directory' will choose an alternate location for all -directory configuration variables that were expressed in terms of -`${prefix}'. Any directories that were specified during `configure', -but not in terms of `${prefix}', must each be overridden at install -time for the entire installation to be relocated. The approach of -makefile variable overrides for each directory variable is required by -the GNU Coding Standards, and ideally causes no recompilation. -However, some platforms have known limitations with the semantics of -shared libraries that end up requiring recompilation when using this -method, particularly noticeable in packages that use GNU Libtool. - - The second method involves providing the `DESTDIR' variable. For -example, `make install DESTDIR=/alternate/directory' will prepend -`/alternate/directory' before all installation names. The approach of -`DESTDIR' overrides is not required by the GNU Coding Standards, and -does not work on platforms that have drive letters. On the other hand, -it does better at avoiding recompilation issues, and works well even -when some directory options were not specified in terms of `${prefix}' -at `configure' time. - -Optional Features -================= - - If the package supports it, you can cause programs to be installed -with an extra prefix or suffix on their names by giving `configure' the -option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. - - Some packages pay attention to `--enable-FEATURE' options to -`configure', where FEATURE indicates an optional part of the package. -They may also pay attention to `--with-PACKAGE' options, where PACKAGE -is something like `gnu-as' or `x' (for the X Window System). The -`README' should mention any `--enable-' and `--with-' options that the -package recognizes. - - For packages that use the X Window System, `configure' can usually -find the X include and library files automatically, but if it doesn't, -you can use the `configure' options `--x-includes=DIR' and -`--x-libraries=DIR' to specify their locations. - - Some packages offer the ability to configure how verbose the -execution of `make' will be. For these packages, running `./configure ---enable-silent-rules' sets the default to minimal output, which can be -overridden with `make V=1'; while running `./configure ---disable-silent-rules' sets the default to verbose, which can be -overridden with `make V=0'. - -Particular systems -================== - - On HP-UX, the default C compiler is not ANSI C compatible. If GNU -CC is not installed, it is recommended to use the following options in -order to use an ANSI C compiler: - - ./configure CC="cc -Ae -D_XOPEN_SOURCE=500" - -and if that doesn't work, install pre-built binaries of GCC for HP-UX. - - On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot -parse its `' header file. The option `-nodtk' can be used as -a workaround. If GNU CC is not installed, it is therefore recommended -to try - - ./configure CC="cc" - -and if that doesn't work, try - - ./configure CC="cc -nodtk" - - On Solaris, don't put `/usr/ucb' early in your `PATH'. This -directory contains several dysfunctional programs; working variants of -these programs are available in `/usr/bin'. So, if you need `/usr/ucb' -in your `PATH', put it _after_ `/usr/bin'. - - On Haiku, software installed for all users goes in `/boot/common', -not `/usr/local'. It is recommended to use the following options: - - ./configure --prefix=/boot/common - -Specifying the System Type -========================== - - There may be some features `configure' cannot figure out -automatically, but needs to determine by the type of machine the package -will run on. Usually, assuming the package is built to be run on the -_same_ architectures, `configure' can figure that out, but if it prints -a message saying it cannot guess the machine type, give it the -`--build=TYPE' option. TYPE can either be a short name for the system -type, such as `sun4', or a canonical name which has the form: - - CPU-COMPANY-SYSTEM - -where SYSTEM can have one of these forms: - - OS - KERNEL-OS - - See the file `config.sub' for the possible values of each field. If -`config.sub' isn't included in this package, then this package doesn't -need to know the machine type. - - If you are _building_ compiler tools for cross-compiling, you should -use the option `--target=TYPE' to select the type of system they will -produce code for. - - If you want to _use_ a cross compiler, that generates code for a -platform different from the build platform, you should specify the -"host" platform (i.e., that on which the generated programs will -eventually be run) with `--host=TYPE'. - -Sharing Defaults -================ - - If you want to set default values for `configure' scripts to share, -you can create a site shell script called `config.site' that gives -default values for variables like `CC', `cache_file', and `prefix'. -`configure' looks for `PREFIX/share/config.site' if it exists, then -`PREFIX/etc/config.site' if it exists. Or, you can set the -`CONFIG_SITE' environment variable to the location of the site script. -A warning: not all `configure' scripts look for a site script. - -Defining Variables -================== - - Variables not defined in a site shell script can be set in the -environment passed to `configure'. However, some packages may run -configure again during the build, and the customized values of these -variables may be lost. In order to avoid this problem, you should set -them in the `configure' command line, using `VAR=value'. For example: - - ./configure CC=/usr/local2/bin/gcc - -causes the specified `gcc' to be used as the C compiler (unless it is -overridden in the site shell script). - -Unfortunately, this technique does not work for `CONFIG_SHELL' due to -an Autoconf bug. Until the bug is fixed you can use this workaround: - - CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash - -`configure' Invocation -====================== - - `configure' recognizes the following options to control how it -operates. - -`--help' -`-h' - Print a summary of all of the options to `configure', and exit. - -`--help=short' -`--help=recursive' - Print a summary of the options unique to this package's - `configure', and exit. The `short' variant lists options used - only in the top level, while the `recursive' variant lists options - also present in any nested packages. - -`--version' -`-V' - Print the version of Autoconf used to generate the `configure' - script, and exit. - -`--cache-file=FILE' - Enable the cache: use and save the results of the tests in FILE, - traditionally `config.cache'. FILE defaults to `/dev/null' to - disable caching. - -`--config-cache' -`-C' - Alias for `--cache-file=config.cache'. - -`--quiet' -`--silent' -`-q' - Do not print messages saying which checks are being made. To - suppress all normal output, redirect it to `/dev/null' (any error - messages will still be shown). - -`--srcdir=DIR' - Look for the package's source code in directory DIR. Usually - `configure' can determine that directory automatically. - -`--prefix=DIR' - Use DIR as the installation prefix. *note Installation Names:: - for more details, including other options available for fine-tuning - the installation locations. - -`--no-create' -`-n' - Run the configure checks, but stop before creating any output - files. - -`configure' also accepts some other, not widely useful, options. Run -`configure --help' for more details. - diff --git a/vendor/onig/Makefile.am b/vendor/onig/Makefile.am deleted file mode 100644 index a6b01dc..0000000 --- a/vendor/onig/Makefile.am +++ /dev/null @@ -1,144 +0,0 @@ -## Makefile.am for Onigmo -encdir = $(top_srcdir)/enc -sampledir = $(top_srcdir)/sample -libname = libonigmo.la - -PYTHON = @python_prog@ - -ACLOCAL_AMFLAGS = -I m4 -AM_CFLAGS = -Wall -AM_CPPFLAGS = -I$(top_srcdir) -I$(includedir) -I$(encdir)/unicode - -SUBDIRS = . sample - -include_HEADERS = onigmo.h onigmognu.h onigmoposix.h -lib_LTLIBRARIES = $(libname) - -libonigmo_la_SOURCES = regint.h regparse.h regenc.h st.h \ - regerror.c regparse.c regext.c regcomp.c regexec.c reggnu.c \ - regenc.c regsyntax.c regtrav.c regversion.c st.c \ - regposix.c regposerr.c \ - $(encdir)/unicode.c $(encdir)/ascii.c $(encdir)/utf_8.c \ - $(encdir)/utf_16be.c $(encdir)/utf_16le.c \ - $(encdir)/utf_32be.c $(encdir)/utf_32le.c \ - $(encdir)/unicode/casefold.h $(encdir)/unicode/name2ctype.h \ - $(encdir)/euc_jp.c $(encdir)/shift_jis.c $(encdir)/shift_jis.h \ - $(encdir)/windows_31j.c \ - $(encdir)/jis/props.h $(encdir)/jis/props.kwd \ - $(encdir)/iso_8859.h $(encdir)/iso_8859_1.c \ - $(encdir)/iso_8859_2.c $(encdir)/iso_8859_3.c \ - $(encdir)/iso_8859_4.c $(encdir)/iso_8859_5.c \ - $(encdir)/iso_8859_6.c $(encdir)/iso_8859_7.c \ - $(encdir)/iso_8859_8.c $(encdir)/iso_8859_9.c \ - $(encdir)/iso_8859_10.c $(encdir)/iso_8859_11.c \ - $(encdir)/iso_8859_13.c $(encdir)/iso_8859_14.c \ - $(encdir)/iso_8859_15.c $(encdir)/iso_8859_16.c \ - $(encdir)/euc_tw.c $(encdir)/euc_kr.c $(encdir)/big5.c \ - $(encdir)/gb18030.c $(encdir)/koi8_r.c $(encdir)/koi8_u.c \ - $(encdir)/windows_1250.c $(encdir)/windows_1251.c \ - $(encdir)/windows_1252.c $(encdir)/windows_1253.c \ - $(encdir)/windows_1254.c $(encdir)/windows_1257.c - -libonigmo_la_LDFLAGS = -version-info $(LTVERSION) -no-undefined - -EXTRA_DIST = .gitignore onigmo.pc.in HISTORY README.ja README.md \ - doc/API doc/API.ja doc/RE doc/RE.ja doc/FAQ doc/FAQ.ja \ - doc/UnicodeProps.txt \ - tool/.gitignore tool/Makefile tool/case-folding.rb \ - tool/convert-jis-props.sh \ - tool/enc-unicode.rb tool/download-ucd.sh tool/update-doc.py \ - win32/Makefile win32/Makefile.mingw win32/config.h win32/testc.c \ - win32/makedef.py win32/onigmo.rc \ - $(encdir)/mktable.c \ - test.rb testconv.rb testconvu.rb \ - onigmo.py testpy.py .editorconfig - -bin_SCRIPTS = onigmo-config - -onigmo-config: onigmo-config.in - -do_subst = sed \ - -e 's,[@]datadir[@],$(datadir),g' \ - -e 's,[@]datarootdir[@],$(datarootdir),g' \ - -e 's,[@]PACKAGE_VERSION[@],$(PACKAGE_VERSION),g' \ - -e 's,[@]prefix[@],$(prefix),g' \ - -e 's,[@]exec_prefix[@],$(exec_prefix),g' \ - -e 's,[@]libdir[@],$(libdir),g' \ - -e 's,[@]includedir[@],$(includedir),g' - -onigmo.pc: $(srcdir)/onigmo.pc.in Makefile - $(do_subst) < $(srcdir)/onigmo.pc.in > $(@) - -pkgconfigdir = $(libdir)/pkgconfig -pkgconfig_DATA = onigmo.pc -CLEANFILES = onigmo.pc - -# character-types-table source generator -mktable: $(encdir)/mktable.c $(srcdir)/regenc.h - $(CC) -I$(top_srcdir) -o mktable $(encdir)/mktable.c - - -# TEST -TESTS = testc testp testcu - -check_PROGRAMS = testc testp testcu - -test: atest pytest - $(MAKE) -C sample test - -atest: testc$(EXEEXT) testp$(EXEEXT) testcu$(EXEEXT) - @echo "[Onigmo API, ASCII/EUC-JP check]" - @$(top_builddir)/testc | grep RESULT - @echo "[POSIX API, ASCII/EUC-JP check]" - @$(top_builddir)/testp | grep RESULT - @echo "[Onigmo API, UTF-16 check]" - @$(top_builddir)/testcu | grep RESULT - -testc_SOURCES = testc.c -testc_LDADD = libonigmo.la - -testp_SOURCES = testc.c -testp_LDADD = libonigmo.la -testp_CFLAGS = -DPOSIX_TEST - -testcu_SOURCES = testu.c -testcu_LDADD = libonigmo.la - - -#$(srcdir)/testc.c: $(srcdir)/test.rb $(srcdir)/testconv.rb -$(srcdir)/testc.c: - ruby -Ke $(srcdir)/testconv.rb < $(srcdir)/test.rb > $@ - -#$(srcdir)/testu.c: $(srcdir)/test.rb $(srcdir)/testconvu.rb -$(srcdir)/testu.c: - ruby -Ke $(srcdir)/testconvu.rb $(srcdir)/test.rb > $@ - -#$(srcdir)/win32/testc.c: $(srcdir)/test.rb $(srcdir)/testconv.rb -$(srcdir)/win32/testc.c: - ruby -Ke $(srcdir)/testconv.rb -win < $(srcdir)/test.rb | iconv -f euc-jp -t cp932 | sed -e "s/$$/\r/" > $@ - -# Python TEST -pytest: - LD_LIBRARY_PATH=.libs $(PYTHON) $(srcdir)/testpy.py EUC-JP - LD_LIBRARY_PATH=.libs $(PYTHON) $(srcdir)/testpy.py SJIS - LD_LIBRARY_PATH=.libs $(PYTHON) $(srcdir)/testpy.py UTF-8 - LD_LIBRARY_PATH=.libs $(PYTHON) $(srcdir)/testpy.py UTF-16LE - LD_LIBRARY_PATH=.libs $(PYTHON) $(srcdir)/testpy.py UTF-16BE - LD_LIBRARY_PATH=.libs $(PYTHON) $(srcdir)/testpy.py UTF-32LE - LD_LIBRARY_PATH=.libs $(PYTHON) $(srcdir)/testpy.py UTF-32BE - - -# lcov - -# Collect coverage data and write to coverage.info, then create HTML output -# in the coverage directory. -lcov: - if [ ! -f $(builddir)/enc/jis/props.kwd ]; then mkdir -p $(builddir)/enc/jis; cp $(srcdir)/enc/jis/props.kwd $(builddir)/enc/jis/props.kwd; fi - lcov -c -d .libs -o coverage.info - genhtml -o coverage coverage.info - -# Clear coverage data. -lcov-clear: - lcov -d . -z - -## END OF FILE diff --git a/vendor/onig/Makefile.in b/vendor/onig/Makefile.in deleted file mode 100644 index a0b098a..0000000 --- a/vendor/onig/Makefile.in +++ /dev/null @@ -1,1569 +0,0 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - - - - -VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ - esac; \ - test $$am__dry = yes; \ - } -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -TESTS = testc$(EXEEXT) testp$(EXEEXT) testcu$(EXEEXT) -check_PROGRAMS = testc$(EXEEXT) testp$(EXEEXT) testcu$(EXEEXT) -subdir = . -DIST_COMMON = README $(am__configure_deps) $(include_HEADERS) \ - $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ - $(srcdir)/config.h.in $(srcdir)/onigmo-config.in \ - $(top_srcdir)/configure AUTHORS COPYING INSTALL compile \ - config.guess config.sub depcomp install-sh ltmain.sh missing -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ - configure.lineno config.status.lineno -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = config.h -CONFIG_CLEAN_FILES = onigmo-config -CONFIG_CLEAN_VPATH_FILES = -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; -am__install_max = 40 -am__nobase_strip_setup = \ - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` -am__nobase_strip = \ - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -am__nobase_list = $(am__nobase_strip_setup); \ - for p in $$list; do echo "$$p $$p"; done | \ - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' -am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -am__uninstall_files_from_dir = { \ - test -z "$$files" \ - || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ - || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ - $(am__cd) "$$dir" && rm -f $$files; }; \ - } -am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" \ - "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(includedir)" -LTLIBRARIES = $(lib_LTLIBRARIES) -libonigmo_la_LIBADD = -am_libonigmo_la_OBJECTS = regerror.lo regparse.lo regext.lo regcomp.lo \ - regexec.lo reggnu.lo regenc.lo regsyntax.lo regtrav.lo \ - regversion.lo st.lo regposix.lo regposerr.lo unicode.lo \ - ascii.lo utf_8.lo utf_16be.lo utf_16le.lo utf_32be.lo \ - utf_32le.lo euc_jp.lo shift_jis.lo windows_31j.lo \ - iso_8859_1.lo iso_8859_2.lo iso_8859_3.lo iso_8859_4.lo \ - iso_8859_5.lo iso_8859_6.lo iso_8859_7.lo iso_8859_8.lo \ - iso_8859_9.lo iso_8859_10.lo iso_8859_11.lo iso_8859_13.lo \ - iso_8859_14.lo iso_8859_15.lo iso_8859_16.lo euc_tw.lo \ - euc_kr.lo big5.lo gb18030.lo koi8_r.lo koi8_u.lo \ - windows_1250.lo windows_1251.lo windows_1252.lo \ - windows_1253.lo windows_1254.lo windows_1257.lo -libonigmo_la_OBJECTS = $(am_libonigmo_la_OBJECTS) -libonigmo_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(libonigmo_la_LDFLAGS) $(LDFLAGS) -o $@ -am_testc_OBJECTS = testc.$(OBJEXT) -testc_OBJECTS = $(am_testc_OBJECTS) -testc_DEPENDENCIES = libonigmo.la -am_testcu_OBJECTS = testu.$(OBJEXT) -testcu_OBJECTS = $(am_testcu_OBJECTS) -testcu_DEPENDENCIES = libonigmo.la -am_testp_OBJECTS = testp-testc.$(OBJEXT) -testp_OBJECTS = $(am_testp_OBJECTS) -testp_DEPENDENCIES = libonigmo.la -testp_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(testp_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ -SCRIPTS = $(bin_SCRIPTS) -DEFAULT_INCLUDES = -I.@am__isrc@ -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ -SOURCES = $(libonigmo_la_SOURCES) $(testc_SOURCES) $(testcu_SOURCES) \ - $(testp_SOURCES) -DIST_SOURCES = $(libonigmo_la_SOURCES) $(testc_SOURCES) \ - $(testcu_SOURCES) $(testp_SOURCES) -RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ - html-recursive info-recursive install-data-recursive \ - install-dvi-recursive install-exec-recursive \ - install-html-recursive install-info-recursive \ - install-pdf-recursive install-ps-recursive install-recursive \ - installcheck-recursive installdirs-recursive pdf-recursive \ - ps-recursive uninstall-recursive -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -DATA = $(pkgconfig_DATA) -HEADERS = $(include_HEADERS) -RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ - distclean-recursive maintainer-clean-recursive -AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ - $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ - distdir dist dist-all distcheck -ETAGS = etags -CTAGS = ctags -am__tty_colors = \ -red=; grn=; lgn=; blu=; std= -DIST_SUBDIRS = $(SUBDIRS) -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -distdir = $(PACKAGE)-$(VERSION) -top_distdir = $(distdir) -am__remove_distdir = \ - if test -d "$(distdir)"; then \ - find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ - && rm -rf "$(distdir)" \ - || { sleep 5 && rm -rf "$(distdir)"; }; \ - else :; fi -am__relativize = \ - dir0=`pwd`; \ - sed_first='s,^\([^/]*\)/.*$$,\1,'; \ - sed_rest='s,^[^/]*/*,,'; \ - sed_last='s,^.*/\([^/]*\)$$,\1,'; \ - sed_butlast='s,/*[^/]*$$,,'; \ - while test -n "$$dir1"; do \ - first=`echo "$$dir1" | sed -e "$$sed_first"`; \ - if test "$$first" != "."; then \ - if test "$$first" = ".."; then \ - dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ - dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ - else \ - first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ - if test "$$first2" = "$$first"; then \ - dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ - else \ - dir2="../$$dir2"; \ - fi; \ - dir0="$$dir0"/"$$first"; \ - fi; \ - fi; \ - dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ - done; \ - reldir="$$dir2" -DIST_ARCHIVES = $(distdir).tar.gz -GZIP_ENV = --best -distuninstallcheck_listfiles = find . -type f -print -am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ - | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' -distcleancheck_listfiles = find . -type f -print -ACLOCAL = @ACLOCAL@ -ALLOCA = @ALLOCA@ -AMTAR = @AMTAR@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -LTVERSION = @LTVERSION@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -RANLIB = @RANLIB@ -RUBYDIR = @RUBYDIR@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STATISTICS = @STATISTICS@ -STRIP = @STRIP@ -VERSION = @VERSION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -python_prog = @python_prog@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -encdir = $(top_srcdir)/enc -sampledir = $(top_srcdir)/sample -libname = libonigmo.la -PYTHON = @python_prog@ -ACLOCAL_AMFLAGS = -I m4 -AM_CFLAGS = -Wall -AM_CPPFLAGS = -I$(top_srcdir) -I$(includedir) -I$(encdir)/unicode -SUBDIRS = . sample -include_HEADERS = onigmo.h onigmognu.h onigmoposix.h -lib_LTLIBRARIES = $(libname) -libonigmo_la_SOURCES = regint.h regparse.h regenc.h st.h \ - regerror.c regparse.c regext.c regcomp.c regexec.c reggnu.c \ - regenc.c regsyntax.c regtrav.c regversion.c st.c \ - regposix.c regposerr.c \ - $(encdir)/unicode.c $(encdir)/ascii.c $(encdir)/utf_8.c \ - $(encdir)/utf_16be.c $(encdir)/utf_16le.c \ - $(encdir)/utf_32be.c $(encdir)/utf_32le.c \ - $(encdir)/unicode/casefold.h $(encdir)/unicode/name2ctype.h \ - $(encdir)/euc_jp.c $(encdir)/shift_jis.c $(encdir)/shift_jis.h \ - $(encdir)/windows_31j.c \ - $(encdir)/jis/props.h $(encdir)/jis/props.kwd \ - $(encdir)/iso_8859.h $(encdir)/iso_8859_1.c \ - $(encdir)/iso_8859_2.c $(encdir)/iso_8859_3.c \ - $(encdir)/iso_8859_4.c $(encdir)/iso_8859_5.c \ - $(encdir)/iso_8859_6.c $(encdir)/iso_8859_7.c \ - $(encdir)/iso_8859_8.c $(encdir)/iso_8859_9.c \ - $(encdir)/iso_8859_10.c $(encdir)/iso_8859_11.c \ - $(encdir)/iso_8859_13.c $(encdir)/iso_8859_14.c \ - $(encdir)/iso_8859_15.c $(encdir)/iso_8859_16.c \ - $(encdir)/euc_tw.c $(encdir)/euc_kr.c $(encdir)/big5.c \ - $(encdir)/gb18030.c $(encdir)/koi8_r.c $(encdir)/koi8_u.c \ - $(encdir)/windows_1250.c $(encdir)/windows_1251.c \ - $(encdir)/windows_1252.c $(encdir)/windows_1253.c \ - $(encdir)/windows_1254.c $(encdir)/windows_1257.c - -libonigmo_la_LDFLAGS = -version-info $(LTVERSION) -no-undefined -EXTRA_DIST = .gitignore onigmo.pc.in HISTORY README.ja README.md \ - doc/API doc/API.ja doc/RE doc/RE.ja doc/FAQ doc/FAQ.ja \ - doc/UnicodeProps.txt \ - tool/.gitignore tool/Makefile tool/case-folding.rb \ - tool/convert-jis-props.sh \ - tool/enc-unicode.rb tool/download-ucd.sh tool/update-doc.py \ - win32/Makefile win32/Makefile.mingw win32/config.h win32/testc.c \ - win32/makedef.py win32/onigmo.rc \ - $(encdir)/mktable.c \ - test.rb testconv.rb testconvu.rb \ - onigmo.py testpy.py .editorconfig - -bin_SCRIPTS = onigmo-config -do_subst = sed \ - -e 's,[@]datadir[@],$(datadir),g' \ - -e 's,[@]datarootdir[@],$(datarootdir),g' \ - -e 's,[@]PACKAGE_VERSION[@],$(PACKAGE_VERSION),g' \ - -e 's,[@]prefix[@],$(prefix),g' \ - -e 's,[@]exec_prefix[@],$(exec_prefix),g' \ - -e 's,[@]libdir[@],$(libdir),g' \ - -e 's,[@]includedir[@],$(includedir),g' - -pkgconfigdir = $(libdir)/pkgconfig -pkgconfig_DATA = onigmo.pc -CLEANFILES = onigmo.pc -testc_SOURCES = testc.c -testc_LDADD = libonigmo.la -testp_SOURCES = testc.c -testp_LDADD = libonigmo.la -testp_CFLAGS = -DPOSIX_TEST -testcu_SOURCES = testu.c -testcu_LDADD = libonigmo.la -all: config.h - $(MAKE) $(AM_MAKEFLAGS) all-recursive - -.SUFFIXES: -.SUFFIXES: .c .lo .o .obj -am--refresh: Makefile - @: -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ - $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - echo ' $(SHELL) ./config.status'; \ - $(SHELL) ./config.status;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - $(SHELL) ./config.status --recheck - -$(top_srcdir)/configure: $(am__configure_deps) - $(am__cd) $(srcdir) && $(AUTOCONF) -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) -$(am__aclocal_m4_deps): - -config.h: stamp-h1 - @if test ! -f $@; then rm -f stamp-h1; else :; fi - @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi - -stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status - @rm -f stamp-h1 - cd $(top_builddir) && $(SHELL) ./config.status config.h -$(srcdir)/config.h.in: $(am__configure_deps) - ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) - rm -f stamp-h1 - touch $@ - -distclean-hdr: - -rm -f config.h stamp-h1 -onigmo-config: $(top_builddir)/config.status $(srcdir)/onigmo-config.in - cd $(top_builddir) && $(SHELL) ./config.status $@ -install-libLTLIBRARIES: $(lib_LTLIBRARIES) - @$(NORMAL_INSTALL) - @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ - list2=; for p in $$list; do \ - if test -f $$p; then \ - list2="$$list2 $$p"; \ - else :; fi; \ - done; \ - test -z "$$list2" || { \ - echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ - echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ - $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ - } - -uninstall-libLTLIBRARIES: - @$(NORMAL_UNINSTALL) - @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ - for p in $$list; do \ - $(am__strip_dir) \ - echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ - $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ - done - -clean-libLTLIBRARIES: - -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) - @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done -libonigmo.la: $(libonigmo_la_OBJECTS) $(libonigmo_la_DEPENDENCIES) $(EXTRA_libonigmo_la_DEPENDENCIES) - $(libonigmo_la_LINK) -rpath $(libdir) $(libonigmo_la_OBJECTS) $(libonigmo_la_LIBADD) $(LIBS) - -clean-checkPROGRAMS: - @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ - echo " rm -f" $$list; \ - rm -f $$list || exit $$?; \ - test -n "$(EXEEXT)" || exit 0; \ - list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f" $$list; \ - rm -f $$list -testc$(EXEEXT): $(testc_OBJECTS) $(testc_DEPENDENCIES) $(EXTRA_testc_DEPENDENCIES) - @rm -f testc$(EXEEXT) - $(LINK) $(testc_OBJECTS) $(testc_LDADD) $(LIBS) -testcu$(EXEEXT): $(testcu_OBJECTS) $(testcu_DEPENDENCIES) $(EXTRA_testcu_DEPENDENCIES) - @rm -f testcu$(EXEEXT) - $(LINK) $(testcu_OBJECTS) $(testcu_LDADD) $(LIBS) -testp$(EXEEXT): $(testp_OBJECTS) $(testp_DEPENDENCIES) $(EXTRA_testp_DEPENDENCIES) - @rm -f testp$(EXEEXT) - $(testp_LINK) $(testp_OBJECTS) $(testp_LDADD) $(LIBS) -install-binSCRIPTS: $(bin_SCRIPTS) - @$(NORMAL_INSTALL) - @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ - done | \ - sed -e 'p;s,.*/,,;n' \ - -e 'h;s|.*|.|' \ - -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ - $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ - { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ - if ($$2 == $$4) { files[d] = files[d] " " $$1; \ - if (++n[d] == $(am__install_max)) { \ - print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ - else { print "f", d "/" $$4, $$1 } } \ - END { for (d in files) print "f", d, files[d] }' | \ - while read type dir files; do \ - if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ - test -z "$$files" || { \ - echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \ - $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ - } \ - ; done - -uninstall-binSCRIPTS: - @$(NORMAL_UNINSTALL) - @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \ - files=`for p in $$list; do echo "$$p"; done | \ - sed -e 's,.*/,,;$(transform)'`; \ - dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ascii.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/big5.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/euc_jp.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/euc_kr.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/euc_tw.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gb18030.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iso_8859_1.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iso_8859_10.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iso_8859_11.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iso_8859_13.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iso_8859_14.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iso_8859_15.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iso_8859_16.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iso_8859_2.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iso_8859_3.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iso_8859_4.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iso_8859_5.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iso_8859_6.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iso_8859_7.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iso_8859_8.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iso_8859_9.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/koi8_r.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/koi8_u.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/regcomp.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/regenc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/regerror.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/regexec.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/regext.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/reggnu.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/regparse.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/regposerr.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/regposix.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/regsyntax.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/regtrav.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/regversion.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shift_jis.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/st.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testc.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testp-testc.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testu.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unicode.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utf_16be.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utf_16le.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utf_32be.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utf_32le.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utf_8.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/windows_1250.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/windows_1251.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/windows_1252.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/windows_1253.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/windows_1254.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/windows_1257.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/windows_31j.Plo@am__quote@ - -.c.o: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< - -.c.obj: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` - -.c.lo: -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< - -unicode.lo: $(encdir)/unicode.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unicode.lo -MD -MP -MF $(DEPDIR)/unicode.Tpo -c -o unicode.lo `test -f '$(encdir)/unicode.c' || echo '$(srcdir)/'`$(encdir)/unicode.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/unicode.Tpo $(DEPDIR)/unicode.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(encdir)/unicode.c' object='unicode.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unicode.lo `test -f '$(encdir)/unicode.c' || echo '$(srcdir)/'`$(encdir)/unicode.c - -ascii.lo: $(encdir)/ascii.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ascii.lo -MD -MP -MF $(DEPDIR)/ascii.Tpo -c -o ascii.lo `test -f '$(encdir)/ascii.c' || echo '$(srcdir)/'`$(encdir)/ascii.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/ascii.Tpo $(DEPDIR)/ascii.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(encdir)/ascii.c' object='ascii.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ascii.lo `test -f '$(encdir)/ascii.c' || echo '$(srcdir)/'`$(encdir)/ascii.c - -utf_8.lo: $(encdir)/utf_8.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT utf_8.lo -MD -MP -MF $(DEPDIR)/utf_8.Tpo -c -o utf_8.lo `test -f '$(encdir)/utf_8.c' || echo '$(srcdir)/'`$(encdir)/utf_8.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/utf_8.Tpo $(DEPDIR)/utf_8.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(encdir)/utf_8.c' object='utf_8.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o utf_8.lo `test -f '$(encdir)/utf_8.c' || echo '$(srcdir)/'`$(encdir)/utf_8.c - -utf_16be.lo: $(encdir)/utf_16be.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT utf_16be.lo -MD -MP -MF $(DEPDIR)/utf_16be.Tpo -c -o utf_16be.lo `test -f '$(encdir)/utf_16be.c' || echo '$(srcdir)/'`$(encdir)/utf_16be.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/utf_16be.Tpo $(DEPDIR)/utf_16be.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(encdir)/utf_16be.c' object='utf_16be.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o utf_16be.lo `test -f '$(encdir)/utf_16be.c' || echo '$(srcdir)/'`$(encdir)/utf_16be.c - -utf_16le.lo: $(encdir)/utf_16le.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT utf_16le.lo -MD -MP -MF $(DEPDIR)/utf_16le.Tpo -c -o utf_16le.lo `test -f '$(encdir)/utf_16le.c' || echo '$(srcdir)/'`$(encdir)/utf_16le.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/utf_16le.Tpo $(DEPDIR)/utf_16le.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(encdir)/utf_16le.c' object='utf_16le.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o utf_16le.lo `test -f '$(encdir)/utf_16le.c' || echo '$(srcdir)/'`$(encdir)/utf_16le.c - -utf_32be.lo: $(encdir)/utf_32be.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT utf_32be.lo -MD -MP -MF $(DEPDIR)/utf_32be.Tpo -c -o utf_32be.lo `test -f '$(encdir)/utf_32be.c' || echo '$(srcdir)/'`$(encdir)/utf_32be.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/utf_32be.Tpo $(DEPDIR)/utf_32be.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(encdir)/utf_32be.c' object='utf_32be.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o utf_32be.lo `test -f '$(encdir)/utf_32be.c' || echo '$(srcdir)/'`$(encdir)/utf_32be.c - -utf_32le.lo: $(encdir)/utf_32le.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT utf_32le.lo -MD -MP -MF $(DEPDIR)/utf_32le.Tpo -c -o utf_32le.lo `test -f '$(encdir)/utf_32le.c' || echo '$(srcdir)/'`$(encdir)/utf_32le.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/utf_32le.Tpo $(DEPDIR)/utf_32le.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(encdir)/utf_32le.c' object='utf_32le.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o utf_32le.lo `test -f '$(encdir)/utf_32le.c' || echo '$(srcdir)/'`$(encdir)/utf_32le.c - -euc_jp.lo: $(encdir)/euc_jp.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT euc_jp.lo -MD -MP -MF $(DEPDIR)/euc_jp.Tpo -c -o euc_jp.lo `test -f '$(encdir)/euc_jp.c' || echo '$(srcdir)/'`$(encdir)/euc_jp.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/euc_jp.Tpo $(DEPDIR)/euc_jp.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(encdir)/euc_jp.c' object='euc_jp.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o euc_jp.lo `test -f '$(encdir)/euc_jp.c' || echo '$(srcdir)/'`$(encdir)/euc_jp.c - -shift_jis.lo: $(encdir)/shift_jis.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT shift_jis.lo -MD -MP -MF $(DEPDIR)/shift_jis.Tpo -c -o shift_jis.lo `test -f '$(encdir)/shift_jis.c' || echo '$(srcdir)/'`$(encdir)/shift_jis.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/shift_jis.Tpo $(DEPDIR)/shift_jis.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(encdir)/shift_jis.c' object='shift_jis.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o shift_jis.lo `test -f '$(encdir)/shift_jis.c' || echo '$(srcdir)/'`$(encdir)/shift_jis.c - -windows_31j.lo: $(encdir)/windows_31j.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT windows_31j.lo -MD -MP -MF $(DEPDIR)/windows_31j.Tpo -c -o windows_31j.lo `test -f '$(encdir)/windows_31j.c' || echo '$(srcdir)/'`$(encdir)/windows_31j.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/windows_31j.Tpo $(DEPDIR)/windows_31j.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(encdir)/windows_31j.c' object='windows_31j.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o windows_31j.lo `test -f '$(encdir)/windows_31j.c' || echo '$(srcdir)/'`$(encdir)/windows_31j.c - -iso_8859_1.lo: $(encdir)/iso_8859_1.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT iso_8859_1.lo -MD -MP -MF $(DEPDIR)/iso_8859_1.Tpo -c -o iso_8859_1.lo `test -f '$(encdir)/iso_8859_1.c' || echo '$(srcdir)/'`$(encdir)/iso_8859_1.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/iso_8859_1.Tpo $(DEPDIR)/iso_8859_1.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(encdir)/iso_8859_1.c' object='iso_8859_1.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o iso_8859_1.lo `test -f '$(encdir)/iso_8859_1.c' || echo '$(srcdir)/'`$(encdir)/iso_8859_1.c - -iso_8859_2.lo: $(encdir)/iso_8859_2.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT iso_8859_2.lo -MD -MP -MF $(DEPDIR)/iso_8859_2.Tpo -c -o iso_8859_2.lo `test -f '$(encdir)/iso_8859_2.c' || echo '$(srcdir)/'`$(encdir)/iso_8859_2.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/iso_8859_2.Tpo $(DEPDIR)/iso_8859_2.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(encdir)/iso_8859_2.c' object='iso_8859_2.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o iso_8859_2.lo `test -f '$(encdir)/iso_8859_2.c' || echo '$(srcdir)/'`$(encdir)/iso_8859_2.c - -iso_8859_3.lo: $(encdir)/iso_8859_3.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT iso_8859_3.lo -MD -MP -MF $(DEPDIR)/iso_8859_3.Tpo -c -o iso_8859_3.lo `test -f '$(encdir)/iso_8859_3.c' || echo '$(srcdir)/'`$(encdir)/iso_8859_3.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/iso_8859_3.Tpo $(DEPDIR)/iso_8859_3.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(encdir)/iso_8859_3.c' object='iso_8859_3.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o iso_8859_3.lo `test -f '$(encdir)/iso_8859_3.c' || echo '$(srcdir)/'`$(encdir)/iso_8859_3.c - -iso_8859_4.lo: $(encdir)/iso_8859_4.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT iso_8859_4.lo -MD -MP -MF $(DEPDIR)/iso_8859_4.Tpo -c -o iso_8859_4.lo `test -f '$(encdir)/iso_8859_4.c' || echo '$(srcdir)/'`$(encdir)/iso_8859_4.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/iso_8859_4.Tpo $(DEPDIR)/iso_8859_4.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(encdir)/iso_8859_4.c' object='iso_8859_4.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o iso_8859_4.lo `test -f '$(encdir)/iso_8859_4.c' || echo '$(srcdir)/'`$(encdir)/iso_8859_4.c - -iso_8859_5.lo: $(encdir)/iso_8859_5.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT iso_8859_5.lo -MD -MP -MF $(DEPDIR)/iso_8859_5.Tpo -c -o iso_8859_5.lo `test -f '$(encdir)/iso_8859_5.c' || echo '$(srcdir)/'`$(encdir)/iso_8859_5.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/iso_8859_5.Tpo $(DEPDIR)/iso_8859_5.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(encdir)/iso_8859_5.c' object='iso_8859_5.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o iso_8859_5.lo `test -f '$(encdir)/iso_8859_5.c' || echo '$(srcdir)/'`$(encdir)/iso_8859_5.c - -iso_8859_6.lo: $(encdir)/iso_8859_6.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT iso_8859_6.lo -MD -MP -MF $(DEPDIR)/iso_8859_6.Tpo -c -o iso_8859_6.lo `test -f '$(encdir)/iso_8859_6.c' || echo '$(srcdir)/'`$(encdir)/iso_8859_6.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/iso_8859_6.Tpo $(DEPDIR)/iso_8859_6.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(encdir)/iso_8859_6.c' object='iso_8859_6.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o iso_8859_6.lo `test -f '$(encdir)/iso_8859_6.c' || echo '$(srcdir)/'`$(encdir)/iso_8859_6.c - -iso_8859_7.lo: $(encdir)/iso_8859_7.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT iso_8859_7.lo -MD -MP -MF $(DEPDIR)/iso_8859_7.Tpo -c -o iso_8859_7.lo `test -f '$(encdir)/iso_8859_7.c' || echo '$(srcdir)/'`$(encdir)/iso_8859_7.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/iso_8859_7.Tpo $(DEPDIR)/iso_8859_7.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(encdir)/iso_8859_7.c' object='iso_8859_7.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o iso_8859_7.lo `test -f '$(encdir)/iso_8859_7.c' || echo '$(srcdir)/'`$(encdir)/iso_8859_7.c - -iso_8859_8.lo: $(encdir)/iso_8859_8.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT iso_8859_8.lo -MD -MP -MF $(DEPDIR)/iso_8859_8.Tpo -c -o iso_8859_8.lo `test -f '$(encdir)/iso_8859_8.c' || echo '$(srcdir)/'`$(encdir)/iso_8859_8.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/iso_8859_8.Tpo $(DEPDIR)/iso_8859_8.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(encdir)/iso_8859_8.c' object='iso_8859_8.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o iso_8859_8.lo `test -f '$(encdir)/iso_8859_8.c' || echo '$(srcdir)/'`$(encdir)/iso_8859_8.c - -iso_8859_9.lo: $(encdir)/iso_8859_9.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT iso_8859_9.lo -MD -MP -MF $(DEPDIR)/iso_8859_9.Tpo -c -o iso_8859_9.lo `test -f '$(encdir)/iso_8859_9.c' || echo '$(srcdir)/'`$(encdir)/iso_8859_9.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/iso_8859_9.Tpo $(DEPDIR)/iso_8859_9.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(encdir)/iso_8859_9.c' object='iso_8859_9.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o iso_8859_9.lo `test -f '$(encdir)/iso_8859_9.c' || echo '$(srcdir)/'`$(encdir)/iso_8859_9.c - -iso_8859_10.lo: $(encdir)/iso_8859_10.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT iso_8859_10.lo -MD -MP -MF $(DEPDIR)/iso_8859_10.Tpo -c -o iso_8859_10.lo `test -f '$(encdir)/iso_8859_10.c' || echo '$(srcdir)/'`$(encdir)/iso_8859_10.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/iso_8859_10.Tpo $(DEPDIR)/iso_8859_10.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(encdir)/iso_8859_10.c' object='iso_8859_10.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o iso_8859_10.lo `test -f '$(encdir)/iso_8859_10.c' || echo '$(srcdir)/'`$(encdir)/iso_8859_10.c - -iso_8859_11.lo: $(encdir)/iso_8859_11.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT iso_8859_11.lo -MD -MP -MF $(DEPDIR)/iso_8859_11.Tpo -c -o iso_8859_11.lo `test -f '$(encdir)/iso_8859_11.c' || echo '$(srcdir)/'`$(encdir)/iso_8859_11.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/iso_8859_11.Tpo $(DEPDIR)/iso_8859_11.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(encdir)/iso_8859_11.c' object='iso_8859_11.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o iso_8859_11.lo `test -f '$(encdir)/iso_8859_11.c' || echo '$(srcdir)/'`$(encdir)/iso_8859_11.c - -iso_8859_13.lo: $(encdir)/iso_8859_13.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT iso_8859_13.lo -MD -MP -MF $(DEPDIR)/iso_8859_13.Tpo -c -o iso_8859_13.lo `test -f '$(encdir)/iso_8859_13.c' || echo '$(srcdir)/'`$(encdir)/iso_8859_13.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/iso_8859_13.Tpo $(DEPDIR)/iso_8859_13.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(encdir)/iso_8859_13.c' object='iso_8859_13.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o iso_8859_13.lo `test -f '$(encdir)/iso_8859_13.c' || echo '$(srcdir)/'`$(encdir)/iso_8859_13.c - -iso_8859_14.lo: $(encdir)/iso_8859_14.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT iso_8859_14.lo -MD -MP -MF $(DEPDIR)/iso_8859_14.Tpo -c -o iso_8859_14.lo `test -f '$(encdir)/iso_8859_14.c' || echo '$(srcdir)/'`$(encdir)/iso_8859_14.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/iso_8859_14.Tpo $(DEPDIR)/iso_8859_14.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(encdir)/iso_8859_14.c' object='iso_8859_14.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o iso_8859_14.lo `test -f '$(encdir)/iso_8859_14.c' || echo '$(srcdir)/'`$(encdir)/iso_8859_14.c - -iso_8859_15.lo: $(encdir)/iso_8859_15.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT iso_8859_15.lo -MD -MP -MF $(DEPDIR)/iso_8859_15.Tpo -c -o iso_8859_15.lo `test -f '$(encdir)/iso_8859_15.c' || echo '$(srcdir)/'`$(encdir)/iso_8859_15.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/iso_8859_15.Tpo $(DEPDIR)/iso_8859_15.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(encdir)/iso_8859_15.c' object='iso_8859_15.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o iso_8859_15.lo `test -f '$(encdir)/iso_8859_15.c' || echo '$(srcdir)/'`$(encdir)/iso_8859_15.c - -iso_8859_16.lo: $(encdir)/iso_8859_16.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT iso_8859_16.lo -MD -MP -MF $(DEPDIR)/iso_8859_16.Tpo -c -o iso_8859_16.lo `test -f '$(encdir)/iso_8859_16.c' || echo '$(srcdir)/'`$(encdir)/iso_8859_16.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/iso_8859_16.Tpo $(DEPDIR)/iso_8859_16.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(encdir)/iso_8859_16.c' object='iso_8859_16.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o iso_8859_16.lo `test -f '$(encdir)/iso_8859_16.c' || echo '$(srcdir)/'`$(encdir)/iso_8859_16.c - -euc_tw.lo: $(encdir)/euc_tw.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT euc_tw.lo -MD -MP -MF $(DEPDIR)/euc_tw.Tpo -c -o euc_tw.lo `test -f '$(encdir)/euc_tw.c' || echo '$(srcdir)/'`$(encdir)/euc_tw.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/euc_tw.Tpo $(DEPDIR)/euc_tw.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(encdir)/euc_tw.c' object='euc_tw.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o euc_tw.lo `test -f '$(encdir)/euc_tw.c' || echo '$(srcdir)/'`$(encdir)/euc_tw.c - -euc_kr.lo: $(encdir)/euc_kr.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT euc_kr.lo -MD -MP -MF $(DEPDIR)/euc_kr.Tpo -c -o euc_kr.lo `test -f '$(encdir)/euc_kr.c' || echo '$(srcdir)/'`$(encdir)/euc_kr.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/euc_kr.Tpo $(DEPDIR)/euc_kr.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(encdir)/euc_kr.c' object='euc_kr.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o euc_kr.lo `test -f '$(encdir)/euc_kr.c' || echo '$(srcdir)/'`$(encdir)/euc_kr.c - -big5.lo: $(encdir)/big5.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT big5.lo -MD -MP -MF $(DEPDIR)/big5.Tpo -c -o big5.lo `test -f '$(encdir)/big5.c' || echo '$(srcdir)/'`$(encdir)/big5.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/big5.Tpo $(DEPDIR)/big5.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(encdir)/big5.c' object='big5.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o big5.lo `test -f '$(encdir)/big5.c' || echo '$(srcdir)/'`$(encdir)/big5.c - -gb18030.lo: $(encdir)/gb18030.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT gb18030.lo -MD -MP -MF $(DEPDIR)/gb18030.Tpo -c -o gb18030.lo `test -f '$(encdir)/gb18030.c' || echo '$(srcdir)/'`$(encdir)/gb18030.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/gb18030.Tpo $(DEPDIR)/gb18030.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(encdir)/gb18030.c' object='gb18030.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o gb18030.lo `test -f '$(encdir)/gb18030.c' || echo '$(srcdir)/'`$(encdir)/gb18030.c - -koi8_r.lo: $(encdir)/koi8_r.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT koi8_r.lo -MD -MP -MF $(DEPDIR)/koi8_r.Tpo -c -o koi8_r.lo `test -f '$(encdir)/koi8_r.c' || echo '$(srcdir)/'`$(encdir)/koi8_r.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/koi8_r.Tpo $(DEPDIR)/koi8_r.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(encdir)/koi8_r.c' object='koi8_r.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o koi8_r.lo `test -f '$(encdir)/koi8_r.c' || echo '$(srcdir)/'`$(encdir)/koi8_r.c - -koi8_u.lo: $(encdir)/koi8_u.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT koi8_u.lo -MD -MP -MF $(DEPDIR)/koi8_u.Tpo -c -o koi8_u.lo `test -f '$(encdir)/koi8_u.c' || echo '$(srcdir)/'`$(encdir)/koi8_u.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/koi8_u.Tpo $(DEPDIR)/koi8_u.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(encdir)/koi8_u.c' object='koi8_u.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o koi8_u.lo `test -f '$(encdir)/koi8_u.c' || echo '$(srcdir)/'`$(encdir)/koi8_u.c - -windows_1250.lo: $(encdir)/windows_1250.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT windows_1250.lo -MD -MP -MF $(DEPDIR)/windows_1250.Tpo -c -o windows_1250.lo `test -f '$(encdir)/windows_1250.c' || echo '$(srcdir)/'`$(encdir)/windows_1250.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/windows_1250.Tpo $(DEPDIR)/windows_1250.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(encdir)/windows_1250.c' object='windows_1250.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o windows_1250.lo `test -f '$(encdir)/windows_1250.c' || echo '$(srcdir)/'`$(encdir)/windows_1250.c - -windows_1251.lo: $(encdir)/windows_1251.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT windows_1251.lo -MD -MP -MF $(DEPDIR)/windows_1251.Tpo -c -o windows_1251.lo `test -f '$(encdir)/windows_1251.c' || echo '$(srcdir)/'`$(encdir)/windows_1251.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/windows_1251.Tpo $(DEPDIR)/windows_1251.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(encdir)/windows_1251.c' object='windows_1251.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o windows_1251.lo `test -f '$(encdir)/windows_1251.c' || echo '$(srcdir)/'`$(encdir)/windows_1251.c - -windows_1252.lo: $(encdir)/windows_1252.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT windows_1252.lo -MD -MP -MF $(DEPDIR)/windows_1252.Tpo -c -o windows_1252.lo `test -f '$(encdir)/windows_1252.c' || echo '$(srcdir)/'`$(encdir)/windows_1252.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/windows_1252.Tpo $(DEPDIR)/windows_1252.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(encdir)/windows_1252.c' object='windows_1252.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o windows_1252.lo `test -f '$(encdir)/windows_1252.c' || echo '$(srcdir)/'`$(encdir)/windows_1252.c - -windows_1253.lo: $(encdir)/windows_1253.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT windows_1253.lo -MD -MP -MF $(DEPDIR)/windows_1253.Tpo -c -o windows_1253.lo `test -f '$(encdir)/windows_1253.c' || echo '$(srcdir)/'`$(encdir)/windows_1253.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/windows_1253.Tpo $(DEPDIR)/windows_1253.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(encdir)/windows_1253.c' object='windows_1253.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o windows_1253.lo `test -f '$(encdir)/windows_1253.c' || echo '$(srcdir)/'`$(encdir)/windows_1253.c - -windows_1254.lo: $(encdir)/windows_1254.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT windows_1254.lo -MD -MP -MF $(DEPDIR)/windows_1254.Tpo -c -o windows_1254.lo `test -f '$(encdir)/windows_1254.c' || echo '$(srcdir)/'`$(encdir)/windows_1254.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/windows_1254.Tpo $(DEPDIR)/windows_1254.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(encdir)/windows_1254.c' object='windows_1254.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o windows_1254.lo `test -f '$(encdir)/windows_1254.c' || echo '$(srcdir)/'`$(encdir)/windows_1254.c - -windows_1257.lo: $(encdir)/windows_1257.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT windows_1257.lo -MD -MP -MF $(DEPDIR)/windows_1257.Tpo -c -o windows_1257.lo `test -f '$(encdir)/windows_1257.c' || echo '$(srcdir)/'`$(encdir)/windows_1257.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/windows_1257.Tpo $(DEPDIR)/windows_1257.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(encdir)/windows_1257.c' object='windows_1257.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o windows_1257.lo `test -f '$(encdir)/windows_1257.c' || echo '$(srcdir)/'`$(encdir)/windows_1257.c - -testp-testc.o: testc.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testp_CFLAGS) $(CFLAGS) -MT testp-testc.o -MD -MP -MF $(DEPDIR)/testp-testc.Tpo -c -o testp-testc.o `test -f 'testc.c' || echo '$(srcdir)/'`testc.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testp-testc.Tpo $(DEPDIR)/testp-testc.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testc.c' object='testp-testc.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testp_CFLAGS) $(CFLAGS) -c -o testp-testc.o `test -f 'testc.c' || echo '$(srcdir)/'`testc.c - -testp-testc.obj: testc.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testp_CFLAGS) $(CFLAGS) -MT testp-testc.obj -MD -MP -MF $(DEPDIR)/testp-testc.Tpo -c -o testp-testc.obj `if test -f 'testc.c'; then $(CYGPATH_W) 'testc.c'; else $(CYGPATH_W) '$(srcdir)/testc.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/testp-testc.Tpo $(DEPDIR)/testp-testc.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testc.c' object='testp-testc.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testp_CFLAGS) $(CFLAGS) -c -o testp-testc.obj `if test -f 'testc.c'; then $(CYGPATH_W) 'testc.c'; else $(CYGPATH_W) '$(srcdir)/testc.c'; fi` - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool config.lt -install-pkgconfigDATA: $(pkgconfig_DATA) - @$(NORMAL_INSTALL) - @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \ - done - -uninstall-pkgconfigDATA: - @$(NORMAL_UNINSTALL) - @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir) -install-includeHEADERS: $(include_HEADERS) - @$(NORMAL_INSTALL) - @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \ - $(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \ - done - -uninstall-includeHEADERS: - @$(NORMAL_UNINSTALL) - @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir) - -# This directory's subdirectories are mostly independent; you can cd -# into them and run `make' without going through this Makefile. -# To change the values of `make' variables: instead of editing Makefiles, -# (1) if the variable is set in `config.status', edit `config.status' -# (which will cause the Makefiles to be regenerated when you run `make'); -# (2) otherwise, pass the desired values on the `make' command line. -$(RECURSIVE_TARGETS): - @fail= failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - dot_seen=no; \ - target=`echo $@ | sed s/-recursive//`; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - dot_seen=yes; \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done; \ - if test "$$dot_seen" = "no"; then \ - $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ - fi; test -z "$$fail" - -$(RECURSIVE_CLEAN_TARGETS): - @fail= failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - dot_seen=no; \ - case "$@" in \ - distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ - *) list='$(SUBDIRS)' ;; \ - esac; \ - rev=''; for subdir in $$list; do \ - if test "$$subdir" = "."; then :; else \ - rev="$$subdir $$rev"; \ - fi; \ - done; \ - rev="$$rev ."; \ - target=`echo $@ | sed s/-recursive//`; \ - for subdir in $$rev; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done && test -z "$$fail" -tags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ - done -ctags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ - done - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - here=`pwd`; \ - if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ - include_option=--etags-include; \ - empty_fix=.; \ - else \ - include_option=--include; \ - empty_fix=; \ - fi; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test ! -f $$subdir/TAGS || \ - set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ - fi; \ - done; \ - list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -check-TESTS: $(TESTS) - @failed=0; all=0; xfail=0; xpass=0; skip=0; \ - srcdir=$(srcdir); export srcdir; \ - list=' $(TESTS) '; \ - $(am__tty_colors); \ - if test -n "$$list"; then \ - for tst in $$list; do \ - if test -f ./$$tst; then dir=./; \ - elif test -f $$tst; then dir=; \ - else dir="$(srcdir)/"; fi; \ - if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ - all=`expr $$all + 1`; \ - case " $(XFAIL_TESTS) " in \ - *[\ \ ]$$tst[\ \ ]*) \ - xpass=`expr $$xpass + 1`; \ - failed=`expr $$failed + 1`; \ - col=$$red; res=XPASS; \ - ;; \ - *) \ - col=$$grn; res=PASS; \ - ;; \ - esac; \ - elif test $$? -ne 77; then \ - all=`expr $$all + 1`; \ - case " $(XFAIL_TESTS) " in \ - *[\ \ ]$$tst[\ \ ]*) \ - xfail=`expr $$xfail + 1`; \ - col=$$lgn; res=XFAIL; \ - ;; \ - *) \ - failed=`expr $$failed + 1`; \ - col=$$red; res=FAIL; \ - ;; \ - esac; \ - else \ - skip=`expr $$skip + 1`; \ - col=$$blu; res=SKIP; \ - fi; \ - echo "$${col}$$res$${std}: $$tst"; \ - done; \ - if test "$$all" -eq 1; then \ - tests="test"; \ - All=""; \ - else \ - tests="tests"; \ - All="All "; \ - fi; \ - if test "$$failed" -eq 0; then \ - if test "$$xfail" -eq 0; then \ - banner="$$All$$all $$tests passed"; \ - else \ - if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \ - banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \ - fi; \ - else \ - if test "$$xpass" -eq 0; then \ - banner="$$failed of $$all $$tests failed"; \ - else \ - if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \ - banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \ - fi; \ - fi; \ - dashes="$$banner"; \ - skipped=""; \ - if test "$$skip" -ne 0; then \ - if test "$$skip" -eq 1; then \ - skipped="($$skip test was not run)"; \ - else \ - skipped="($$skip tests were not run)"; \ - fi; \ - test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ - dashes="$$skipped"; \ - fi; \ - report=""; \ - if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ - report="Please report to $(PACKAGE_BUGREPORT)"; \ - test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ - dashes="$$report"; \ - fi; \ - dashes=`echo "$$dashes" | sed s/./=/g`; \ - if test "$$failed" -eq 0; then \ - col="$$grn"; \ - else \ - col="$$red"; \ - fi; \ - echo "$${col}$$dashes$${std}"; \ - echo "$${col}$$banner$${std}"; \ - test -z "$$skipped" || echo "$${col}$$skipped$${std}"; \ - test -z "$$report" || echo "$${col}$$report$${std}"; \ - echo "$${col}$$dashes$${std}"; \ - test "$$failed" -eq 0; \ - else :; fi - -distdir: $(DISTFILES) - $(am__remove_distdir) - test -d "$(distdir)" || mkdir "$(distdir)" - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done - @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - $(am__make_dryrun) \ - || test -d "$(distdir)/$$subdir" \ - || $(MKDIR_P) "$(distdir)/$$subdir" \ - || exit 1; \ - dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ - $(am__relativize); \ - new_distdir=$$reldir; \ - dir1=$$subdir; dir2="$(top_distdir)"; \ - $(am__relativize); \ - new_top_distdir=$$reldir; \ - echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ - echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ - ($(am__cd) $$subdir && \ - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$new_top_distdir" \ - distdir="$$new_distdir" \ - am__remove_distdir=: \ - am__skip_length_check=: \ - am__skip_mode_fix=: \ - distdir) \ - || exit 1; \ - fi; \ - done - -test -n "$(am__skip_mode_fix)" \ - || find "$(distdir)" -type d ! -perm -755 \ - -exec chmod u+rwx,go+rx {} \; -o \ - ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ - ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ - ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ - || chmod -R a+r "$(distdir)" -dist-gzip: distdir - tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz - $(am__remove_distdir) - -dist-bzip2: distdir - tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 - $(am__remove_distdir) - -dist-lzip: distdir - tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz - $(am__remove_distdir) - -dist-lzma: distdir - tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma - $(am__remove_distdir) - -dist-xz: distdir - tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz - $(am__remove_distdir) - -dist-tarZ: distdir - tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z - $(am__remove_distdir) - -dist-shar: distdir - shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz - $(am__remove_distdir) - -dist-zip: distdir - -rm -f $(distdir).zip - zip -rq $(distdir).zip $(distdir) - $(am__remove_distdir) - -dist dist-all: distdir - tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz - $(am__remove_distdir) - -# This target untars the dist file and tries a VPATH configuration. Then -# it guarantees that the distribution is self-contained by making another -# tarfile. -distcheck: dist - case '$(DIST_ARCHIVES)' in \ - *.tar.gz*) \ - GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ - *.tar.bz2*) \ - bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ - *.tar.lzma*) \ - lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\ - *.tar.lz*) \ - lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ - *.tar.xz*) \ - xz -dc $(distdir).tar.xz | $(am__untar) ;;\ - *.tar.Z*) \ - uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ - *.shar.gz*) \ - GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ - *.zip*) \ - unzip $(distdir).zip ;;\ - esac - chmod -R a-w $(distdir); chmod u+w $(distdir) - mkdir $(distdir)/_build - mkdir $(distdir)/_inst - chmod a-w $(distdir) - test -d $(distdir)/_build || exit 0; \ - dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ - && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ - && am__cwd=`pwd` \ - && $(am__cd) $(distdir)/_build \ - && ../configure --srcdir=.. --prefix="$$dc_install_base" \ - $(AM_DISTCHECK_CONFIGURE_FLAGS) \ - $(DISTCHECK_CONFIGURE_FLAGS) \ - && $(MAKE) $(AM_MAKEFLAGS) \ - && $(MAKE) $(AM_MAKEFLAGS) dvi \ - && $(MAKE) $(AM_MAKEFLAGS) check \ - && $(MAKE) $(AM_MAKEFLAGS) install \ - && $(MAKE) $(AM_MAKEFLAGS) installcheck \ - && $(MAKE) $(AM_MAKEFLAGS) uninstall \ - && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ - distuninstallcheck \ - && chmod -R a-w "$$dc_install_base" \ - && ({ \ - (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ - distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ - } || { rm -rf "$$dc_destdir"; exit 1; }) \ - && rm -rf "$$dc_destdir" \ - && $(MAKE) $(AM_MAKEFLAGS) dist \ - && rm -rf $(DIST_ARCHIVES) \ - && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ - && cd "$$am__cwd" \ - || exit 1 - $(am__remove_distdir) - @(echo "$(distdir) archives ready for distribution: "; \ - list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ - sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' -distuninstallcheck: - @test -n '$(distuninstallcheck_dir)' || { \ - echo 'ERROR: trying to run $@ with an empty' \ - '$$(distuninstallcheck_dir)' >&2; \ - exit 1; \ - }; \ - $(am__cd) '$(distuninstallcheck_dir)' || { \ - echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ - exit 1; \ - }; \ - test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ - || { echo "ERROR: files left after uninstall:" ; \ - if test -n "$(DESTDIR)"; then \ - echo " (check DESTDIR support)"; \ - fi ; \ - $(distuninstallcheck_listfiles) ; \ - exit 1; } >&2 -distcleancheck: distclean - @if test '$(srcdir)' = . ; then \ - echo "ERROR: distcleancheck can only run from a VPATH build" ; \ - exit 1 ; \ - fi - @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ - || { echo "ERROR: files left in build directory after distclean:" ; \ - $(distcleancheck_listfiles) ; \ - exit 1; } >&2 -check-am: all-am - $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) - $(MAKE) $(AM_MAKEFLAGS) check-TESTS -check: check-recursive -all-am: Makefile $(LTLIBRARIES) $(SCRIPTS) $(DATA) $(HEADERS) config.h -installdirs: installdirs-recursive -installdirs-am: - for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(includedir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -install: install-recursive -install-exec: install-exec-recursive -install-data: install-data-recursive -uninstall: uninstall-recursive - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-recursive -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-recursive - -clean-am: clean-checkPROGRAMS clean-generic clean-libLTLIBRARIES \ - clean-libtool mostlyclean-am - -distclean: distclean-recursive - -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-hdr distclean-libtool distclean-tags - -dvi: dvi-recursive - -dvi-am: - -html: html-recursive - -html-am: - -info: info-recursive - -info-am: - -install-data-am: install-includeHEADERS install-pkgconfigDATA - -install-dvi: install-dvi-recursive - -install-dvi-am: - -install-exec-am: install-binSCRIPTS install-libLTLIBRARIES - -install-html: install-html-recursive - -install-html-am: - -install-info: install-info-recursive - -install-info-am: - -install-man: - -install-pdf: install-pdf-recursive - -install-pdf-am: - -install-ps: install-ps-recursive - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-recursive - -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf $(top_srcdir)/autom4te.cache - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-recursive - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-recursive - -pdf-am: - -ps: ps-recursive - -ps-am: - -uninstall-am: uninstall-binSCRIPTS uninstall-includeHEADERS \ - uninstall-libLTLIBRARIES uninstall-pkgconfigDATA - -.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all check-am \ - ctags-recursive install-am install-strip tags-recursive - -.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ - all all-am am--refresh check check-TESTS check-am clean \ - clean-checkPROGRAMS clean-generic clean-libLTLIBRARIES \ - clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \ - dist-gzip dist-lzip dist-lzma dist-shar dist-tarZ dist-xz \ - dist-zip distcheck distclean distclean-compile \ - distclean-generic distclean-hdr distclean-libtool \ - distclean-tags distcleancheck distdir distuninstallcheck dvi \ - dvi-am html html-am info info-am install install-am \ - install-binSCRIPTS install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-includeHEADERS install-info \ - install-info-am install-libLTLIBRARIES install-man install-pdf \ - install-pdf-am install-pkgconfigDATA install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - installdirs-am maintainer-clean maintainer-clean-generic \ - mostlyclean mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ - uninstall uninstall-am uninstall-binSCRIPTS \ - uninstall-includeHEADERS uninstall-libLTLIBRARIES \ - uninstall-pkgconfigDATA - - -onigmo-config: onigmo-config.in - -onigmo.pc: $(srcdir)/onigmo.pc.in Makefile - $(do_subst) < $(srcdir)/onigmo.pc.in > $(@) - -# character-types-table source generator -mktable: $(encdir)/mktable.c $(srcdir)/regenc.h - $(CC) -I$(top_srcdir) -o mktable $(encdir)/mktable.c - -test: atest pytest - $(MAKE) -C sample test - -atest: testc$(EXEEXT) testp$(EXEEXT) testcu$(EXEEXT) - @echo "[Onigmo API, ASCII/EUC-JP check]" - @$(top_builddir)/testc | grep RESULT - @echo "[POSIX API, ASCII/EUC-JP check]" - @$(top_builddir)/testp | grep RESULT - @echo "[Onigmo API, UTF-16 check]" - @$(top_builddir)/testcu | grep RESULT - -#$(srcdir)/testc.c: $(srcdir)/test.rb $(srcdir)/testconv.rb -$(srcdir)/testc.c: - ruby -Ke $(srcdir)/testconv.rb < $(srcdir)/test.rb > $@ - -#$(srcdir)/testu.c: $(srcdir)/test.rb $(srcdir)/testconvu.rb -$(srcdir)/testu.c: - ruby -Ke $(srcdir)/testconvu.rb $(srcdir)/test.rb > $@ - -#$(srcdir)/win32/testc.c: $(srcdir)/test.rb $(srcdir)/testconv.rb -$(srcdir)/win32/testc.c: - ruby -Ke $(srcdir)/testconv.rb -win < $(srcdir)/test.rb | iconv -f euc-jp -t cp932 | sed -e "s/$$/\r/" > $@ - -# Python TEST -pytest: - LD_LIBRARY_PATH=.libs $(PYTHON) $(srcdir)/testpy.py EUC-JP - LD_LIBRARY_PATH=.libs $(PYTHON) $(srcdir)/testpy.py SJIS - LD_LIBRARY_PATH=.libs $(PYTHON) $(srcdir)/testpy.py UTF-8 - LD_LIBRARY_PATH=.libs $(PYTHON) $(srcdir)/testpy.py UTF-16LE - LD_LIBRARY_PATH=.libs $(PYTHON) $(srcdir)/testpy.py UTF-16BE - LD_LIBRARY_PATH=.libs $(PYTHON) $(srcdir)/testpy.py UTF-32LE - LD_LIBRARY_PATH=.libs $(PYTHON) $(srcdir)/testpy.py UTF-32BE - -# lcov - -# Collect coverage data and write to coverage.info, then create HTML output -# in the coverage directory. -lcov: - if [ ! -f $(builddir)/enc/jis/props.kwd ]; then mkdir -p $(builddir)/enc/jis; cp $(srcdir)/enc/jis/props.kwd $(builddir)/enc/jis/props.kwd; fi - lcov -c -d .libs -o coverage.info - genhtml -o coverage coverage.info - -# Clear coverage data. -lcov-clear: - lcov -d . -z - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/vendor/onig/README b/vendor/onig/README deleted file mode 100644 index 87a48fa..0000000 --- a/vendor/onig/README +++ /dev/null @@ -1,251 +0,0 @@ -README 2016/11/30 - -Onigmo (Oniguruma-mod) -- (C) K.Takata - -https://github.com/k-takata/Onigmo - -Onigmo is a regular expressions library forked from Oniguruma. -It focuses to support new expressions like `\K`, `\R`, `(?(cond)yes|no)` -and etc. which are supported in Perl 5.10+. - -Since Onigmo is used as the default regexp library of Ruby 2.0 or later, -many patches are backported from Ruby 2.x. - -See also the Wiki page: -https://github.com/k-takata/Onigmo/wiki - - -Main New features: - Regular Expressions (depends on the syntax): - \K, \R, \X, (?(cond)yes|no) - (?adlu), \g{name}, \g{n}, (?&name), (?n), (?R), (?0) - (?P...), (?P=name), (?P>name) - - API: - onig_search_gpos (for Perl-compatible \G) - - Encoding: - CP932, CP1250, CP1251, CP1252, CP1253, CP1254, CP1257 - - Syntax: - Python - - -New Source Files: - enc/jis/props.h JIS character properties data. - enc/jis/props.kwd JIS character properties data. - enc/unicode/casefold.h Unicode case folding data. - enc/unicode/name2ctype.h Unicode properties data. - enc/windows_*.c CP* encoding - - onigmo.py onigmo.dll/libonigmo.so loader. - testpy.py test program. - - tool/download-ucd.sh downloads Unicode Character Database (UCD). - tool/case-folding.rb generates casefold.h from UCD. - tool/convert-jis-props.sh converts props.kwd to props.h. - tool/convert-name2ctype.sh converts name2ctype.kwd to name2ctypes.h. - tool/enc-unicode.rb generates name2ctype.kwd from UCD. - - win32/Makefile.mingw Makefile for Win32 (MinGW) - win32/makedef.py creates onigmo.def. - win32/onigmo.rc resource file for onigmo.dll. - - -ToDo: - * Reduce the size of Unicode Character Data. - * (?|...) - * Improve (?(cond)yes|no). (support look-ahead/behind assertions.) - - -Oniguruma's README follows: -====================================================================== -README 2007/05/31 - -Oniguruma ---- (C) K.Kosako - -http://www.geocities.jp/kosako3/oniguruma/ - -Oniguruma is a regular expressions library. -The characteristics of this library is that different character encoding -for every regular expression object can be specified. - -Supported character encodings: - - ASCII, UTF-8, UTF-16BE, UTF-16LE, UTF-32BE, UTF-32LE, - EUC-JP, EUC-TW, EUC-KR, EUC-CN, - Shift_JIS, Big5, GB18030, KOI8-R, CP1251, - ISO-8859-1, ISO-8859-2, ISO-8859-3, ISO-8859-4, ISO-8859-5, - ISO-8859-6, ISO-8859-7, ISO-8859-8, ISO-8859-9, ISO-8859-10, - ISO-8859-11, ISO-8859-13, ISO-8859-14, ISO-8859-15, ISO-8859-16 - -* GB18030: contributed by KUBO Takehiro -* CP1251: contributed by Byte ------------------------------------------------------------- - -License - - BSD license. - - -Install - - Case 1: Unix and Cygwin platform - - 1. ./configure - 2. make - 3. make install - - * uninstall - - make uninstall - - * test (ASCII/EUC-JP) - - make atest - - * configuration check - - onig-config --cflags - onig-config --libs - onig-config --prefix - onig-config --exec-prefix - - - - Case 2: Win32 platform (VC++) - - 1. copy win32\Makefile Makefile - 2. copy win32\config.h config.h - 3. nmake - - onig_s.lib: static link library - onig.dll: dynamic link library - - * test (ASCII/Shift_JIS) - 4. copy win32\testc.c testc.c - 5. nmake ctest - - - -Regular Expressions - - See doc/RE (or doc/RE.ja for Japanese). - - -Usage - - Include oniguruma.h in your program. (Oniguruma API) - See doc/API for Oniguruma API. - - If you want to disable UChar type (== unsigned char) definition - in oniguruma.h, define ONIG_ESCAPE_UCHAR_COLLISION and then - include oniguruma.h. - - If you want to disable regex_t type definition in oniguruma.h, - define ONIG_ESCAPE_REGEX_T_COLLISION and then include oniguruma.h. - - Example of the compiling/linking command line in Unix or Cygwin, - (prefix == /usr/local case) - - cc sample.c -L/usr/local/lib -lonig - - - If you want to use static link library(onig_s.lib) in Win32, - add option -DONIG_EXTERN=extern to C compiler. - - - -Sample Programs - - sample/simple.c example of the minimum (Oniguruma API) - sample/names.c example of the named group callback. - sample/encode.c example of some encodings. - sample/listcap.c example of the capture history. - sample/posix.c POSIX API sample. - sample/sql.c example of the variable meta characters. - (SQL-like pattern matching) - -Test Programs - sample/syntax.c Perl, Java and ASIS syntax test. - sample/crnl.c --enable-crnl-as-line-terminator test - - -Source Files - - oniguruma.h Oniguruma API header file. (public) - onig-config.in configuration check program template. - - regenc.h character encodings framework header file. - regint.h internal definitions - regparse.h internal definitions for regparse.c and regcomp.c - regcomp.c compiling and optimization functions - regenc.c character encodings framework. - regerror.c error message function - regext.c extended API functions. (deluxe version API) - regexec.c search and match functions - regparse.c parsing functions. - regsyntax.c pattern syntax functions and built-in syntax definitions. - regtrav.c capture history tree data traverse functions. - regversion.c version info function. - st.h hash table functions header file - st.c hash table functions - - oniggnu.h GNU regex API header file. (public) - reggnu.c GNU regex API functions - - onigposix.h POSIX API header file. (public) - regposerr.c POSIX error message function. - regposix.c POSIX API functions. - - enc/mktable.c character type table generator. - enc/ascii.c ASCII encoding. - enc/euc_jp.c EUC-JP encoding. - enc/euc_tw.c EUC-TW encoding. - enc/euc_kr.c EUC-KR, EUC-CN encoding. - enc/sjis.c Shift_JIS encoding. - enc/big5.c Big5 encoding. - enc/gb18030.c GB18030 encoding. - enc/koi8.c KOI8 encoding. - enc/koi8_r.c KOI8-R encoding. - enc/cp1251.c CP1251 encoding. - enc/iso8859_1.c ISO-8859-1 encoding. (Latin-1) - enc/iso8859_2.c ISO-8859-2 encoding. (Latin-2) - enc/iso8859_3.c ISO-8859-3 encoding. (Latin-3) - enc/iso8859_4.c ISO-8859-4 encoding. (Latin-4) - enc/iso8859_5.c ISO-8859-5 encoding. (Cyrillic) - enc/iso8859_6.c ISO-8859-6 encoding. (Arabic) - enc/iso8859_7.c ISO-8859-7 encoding. (Greek) - enc/iso8859_8.c ISO-8859-8 encoding. (Hebrew) - enc/iso8859_9.c ISO-8859-9 encoding. (Latin-5 or Turkish) - enc/iso8859_10.c ISO-8859-10 encoding. (Latin-6 or Nordic) - enc/iso8859_11.c ISO-8859-11 encoding. (Thai) - enc/iso8859_13.c ISO-8859-13 encoding. (Latin-7 or Baltic Rim) - enc/iso8859_14.c ISO-8859-14 encoding. (Latin-8 or Celtic) - enc/iso8859_15.c ISO-8859-15 encoding. (Latin-9 or West European with Euro) - enc/iso8859_16.c ISO-8859-16 encoding. - (Latin-10 or South-Eastern European with Euro) - enc/utf8.c UTF-8 encoding. - enc/utf16_be.c UTF-16BE encoding. - enc/utf16_le.c UTF-16LE encoding. - enc/utf32_be.c UTF-32BE encoding. - enc/utf32_le.c UTF-32LE encoding. - enc/unicode.c Unicode information data. - - win32/Makefile Makefile for Win32 (VC++) - win32/config.h config.h for Win32 - - - -ToDo - - ? case fold flag: Katakana <-> Hiragana. - ? add ONIG_OPTION_NOTBOS/NOTEOS. (\A, \z, \Z) - ?? \X (== \PM\pM*) - ?? implement syntax behavior ONIG_SYN_CONTEXT_INDEP_ANCHORS. - ?? transmission stopper. (return ONIG_STOP from match_at()) - -and I'm thankful to Akinori MUSHA. - - -Mail Address: K.Kosako diff --git a/vendor/onig/README.ja b/vendor/onig/README.ja deleted file mode 100644 index f30e08a..0000000 --- a/vendor/onig/README.ja +++ /dev/null @@ -1,257 +0,0 @@ -README.ja 2016/11/30 - -鬯シ髮イ (鬯シ霆頑隼) -- (C) K.Takata - -https://github.com/k-takata/Onigmo - -鬯シ髮イ縺ッ縲鬯シ霆翫°繧画エセ逕溘@縺滓ュ」隕剰。ィ迴セ繝ゥ繧、繝悶Λ繝ェ縺ァ縺ゅk縲 -Perl 5.10莉・髯阪〒蟆主・縺輔l縺 `\K`, `\R`, `(?(cond)yes|no)` 縺ェ縺ゥ縺ョ譁ー縺溘↑ -豁」隕剰。ィ迴セ繧偵し繝昴シ繝医☆繧九%縺ィ縺ォ豕ィ蜉帙@縺ヲ縺繧九 - -鬯シ髮イ縺ッ縲ヽuby 2.0莉・髯阪ョ讓呎コ悶ョ豁」隕剰。ィ迴セ繝ゥ繧、繝悶Λ繝ェ縺ァ縺ゅk縺溘a縲∝、壹¥縺ョ繝代ャ繝√′ -Ruby 2.x縺九i繝舌ャ繧ッ繝昴シ繝医&繧後※縺繧九 - -Wiki繝壹シ繧ク繧ょ盾辣ァ縺ョ縺薙→縲 -https://github.com/k-takata/Onigmo/wiki - - -荳サ縺ェ譁ー讖溯ス: - 豁」隕剰。ィ迴セ (譁豕穂セ晏ュ): - \K, \R, \X, (?(cond)yes|no) - (?adlu), \g{name}, \g{n}, (?&name), (?n), (?R), (?0) - (?P...), (?P=name), (?P>name) - - API: - onig_search_gpos (Perl莠呈鋤縺ョ \G 逕ィ) - - 繧ィ繝ウ繧ウ繝シ繝繧」繝ウ繧ー: - CP932, CP1250, CP1251, CP1252, CP1253, CP1254, CP1257 - - 譁豕: - Python - - -譁ー隕上た繝シ繧ケ繝輔ぃ繧、繝ォ: - enc/jis/props.h JIS 譁蟄励励Ο繝代ユ繧」繝シ繝繝シ繧ソ - enc/jis/props.kwd JIS 譁蟄励励Ο繝代ユ繧」繝シ繝繝シ繧ソ - enc/unicode/casefold.h Unicode繧ア繝シ繧ケ繝輔か繝シ繝ォ繝峨ョ繝シ繧ソ - enc/unicode/name2ctype.h Unicode繝励Ο繝代ユ繧」繝繝シ繧ソ - enc/windows_*.c CP*繧ィ繝ウ繧ウ繝シ繝繧」繝ウ繧ー - - onigmo.py onigmo.dll/libonigmo.so 繝ュ繝シ繝 - testpy.py 繝繧ケ繝医励Ο繧ー繝ゥ繝 - - tool/download-ucd.sh Unicode Character Database (UCD)繧偵ム繧ヲ繝ウ繝ュ繝シ繝 - tool/case-folding.rb UCD縺九icasefold.h繧堤函謌 - tool/convert-jis-props.sh props.kwd繧恥rops.h縺ォ螟画鋤 - tool/convert-name2ctype.sh name2ctype.kwd繧地ame2ctypes.h縺ォ螟画鋤 - tool/enc-unicode.rb UCD縺九iname2ctype.kwd繧堤函謌 - - win32/Makefile.mingw Win32逕ィ Makefile (for MinGW) - win32/makedef.py onigmo.def繧剃ス懈 - win32/onigmo.rc onigmo.dll逕ィ繝ェ繧ス繝シ繧ケ繝輔ぃ繧、繝ォ - - -ToDo: - * Unicode Character Data 縺ョ繧オ繧、繧コ蜑頑ク帙 - * (?|...) - * (?(cond)yes|no) 縺ョ謾ケ蝟縲ゑシ亥郁ェュ縺ソ繝サ謌サ繧願ェュ縺ソ縺ョ蟇セ蠢懶シ - - -莉・荳九鬯シ霆翫ョ README.ja: -====================================================================== -README.ja 2007/05/31 - -鬯シ霆 ---- (C) K.Kosako - -http://www.geocities.jp/kosako3/oniguruma/ - -鬯シ霆翫ッ豁」隕剰。ィ迴セ繝ゥ繧、繝悶Λ繝ェ縺ァ縺ゅk縲 -縺薙ョ繝ゥ繧、繝悶Λ繝ェ縺ョ迚ケ髟キ縺ッ縲√◎繧後◇繧後ョ豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝医#縺ィ縺ォ -譁蟄励お繝ウ繧ウ繝シ繝繧」繝ウ繧ー繧呈欠螳壹〒縺阪k縺薙→縺ァ縺ゅk縲 - -繧オ繝昴シ繝医@縺ヲ縺繧区枚蟄励お繝ウ繧ウ繝シ繝繧」繝ウ繧ー: - - ASCII, UTF-8, UTF-16BE, UTF-16LE, UTF-32BE, UTF-32LE, - EUC-JP, EUC-TW, EUC-KR, EUC-CN, - Shift_JIS, Big5, GB18030, KOI8-R, CP1251, - ISO-8859-1, ISO-8859-2, ISO-8859-3, ISO-8859-4, ISO-8859-5, - ISO-8859-6, ISO-8859-7, ISO-8859-8, ISO-8859-9, ISO-8859-10, - ISO-8859-11, ISO-8859-13, ISO-8859-14, ISO-8859-15, ISO-8859-16 - -* GB18030: 荵菫晏▼豢区ー乗署萓 -* CP1251: Byte豌乗署萓 ------------------------------------------------------------- - -繝ゥ繧、繧サ繝ウ繧ケ - - BSD繝ゥ繧、繧サ繝ウ繧ケ縺ォ蠕薙≧縲 - - -繧、繝ウ繧ケ繝医シ繝ォ - - 繧ア繝シ繧ケシ: Unix縺ィCygwin迺ー蠅 - - 1. ./configure - 2. make - 3. make install - - 繧「繝ウ繧、繝ウ繧ケ繝医シ繝ォ - - make uninstall - - 蜍穂ス懊ユ繧ケ繝 (ASCII/EUC-JP) - - make atest - - - 讒区千「コ隱 - - onig-config --cflags - onig-config --libs - onig-config --prefix - onig-config --exec-prefix - - - - 繧ア繝シ繧ケシ: Win32(VC++)迺ー蠅 - - 1. copy win32\Makefile Makefile - 2. copy win32\config.h config.h - 3. nmake - - onig_s.lib: static link library - onig.dll: dynamic link library - - * 蜍穂ス懊ユ繧ケ繝 (ASCII/Shift_JIS) - 4. copy win32\testc.c testc.c - 5. nmake ctest - - - -豁」隕剰。ィ迴セ - - doc/RE.ja繧貞盾辣ァ - - -菴ソ逕ィ譁ケ豕 - - 菴ソ逕ィ縺吶k繝励Ο繧ー繝ゥ繝縺ァ縲{niguruma.h繧偵う繝ウ繧ッ繝ォ繝シ繝峨☆繧(Oniguruma API縺ョ蝣エ蜷)縲 - Oniguruma API縺ォ縺、縺縺ヲ縺ッ縲‥oc/API.ja繧貞盾辣ァ縲 - - oniguruma.h縺ァ螳夂セゥ縺輔l縺ヲ縺繧句梛蜷攻Char(== unsigned char)繧堤┌蜉ケ縺ォ縺励◆縺蝣エ蜷 - 縺ォ縺ッ縲^NIG_ESCAPE_UCHAR_COLLISION繧壇efine縺励※縺九ioniguruma.h繧偵う繝ウ繧ッ繝ォ繝シ繝 - 縺吶k縺薙→縲ゅ%縺ョ縺ィ縺阪↓縺ッUChar縺ッ螳夂セゥ縺輔l縺壹^nigUChar縺ィ縺縺蜷榊燕縺ョ螳夂セゥ縺ョ縺ソ縺 - 譛牙柑縺ォ縺ェ繧九 - - oniguruma.h縺ァ螳夂セゥ縺輔l縺ヲ縺繧句梛蜷荒egex_t繧堤┌蜉ケ縺ォ縺励◆縺蝣エ蜷医↓縺ッ縲 - ONIG_ESCAPE_REGEX_T_COLLISION繧壇efine縺励※縺九ioniguruma.h繧偵う繝ウ繧ッ繝ォ繝シ繝 - 縺吶k縺薙→縲ゅ%縺ョ縺ィ縺阪↓縺ッregex_t縺ッ螳夂セゥ縺輔l縺壹^nigRegexType, OnigRegex縺ィ縺縺 - 蜷榊燕縺ョ螳夂セゥ縺ョ縺ソ縺梧怏蜉ケ縺ォ縺ェ繧九 - - Unix/Cygwin荳翫〒繧ウ繝ウ繝代う繝ォ縲√Μ繝ウ繧ッ縺吶k蝣エ蜷医ョ萓具シ - (prefix縺/usr/local縺ョ縺ィ縺) - cc sample.c -L/usr/local/lib -lonig - - GNU libtool繧剃スソ逕ィ縺励※縺繧九ョ縺ァ縲√励Λ繝繝医ヵ繧ゥ繝シ繝縺悟ア譛峨Λ繧、繝悶Λ繝ェ繧偵し繝昴シ繝医@縺ヲ - 縺繧後ー縲∽スソ逕ィ縺ァ縺阪k繧医≧縺ォ縺ェ縺」縺ヲ縺繧九 - 髱咏噪繝ゥ繧、繝悶Λ繝ェ縺ィ蜈ア譛峨Λ繧、繝悶Λ繝ェ縺ョ縺ゥ縺。繧峨r菴ソ逕ィ縺吶k縺九r謖螳壹☆繧区婿豕輔∝ョ溯。梧凾轤ケ縺ァ縺ョ - 迺ー蠅險ュ螳壽婿豕輔↓縺、縺縺ヲ縺ッ縲∬ェ蛻縺ァ隱ソ縺ケ縺ヲ荳九&縺縲 - - - Win32縺ァ繧ケ繧ソ繝繧」繝繧ッ繝ェ繝ウ繧ッ繝ゥ繧、繝悶Λ繝ェ(onig_s.lib)繧偵Μ繝ウ繧ッ縺吶k蝣エ蜷医↓縺ッ縲 - 繧ウ繝ウ繝代う繝ォ縺吶k縺ィ縺阪↓ -DONIG_EXTERN=extern 繧偵さ繝ウ繝代う繝ォ蠑墓焚縺ォ霑ス蜉縺吶k縺薙→縲 - - -菴ソ逕ィ萓九励Ο繧ー繝ゥ繝 - - sample/simple.c 譛蟆丈セ (Oniguruma API) - sample/names.c 蜷榊燕莉倥″繧ー繝ォ繝シ繝励さ繝シ繝ォ繝舌ャ繧ッ菴ソ逕ィ萓 - sample/encode.c 蟷セ縺、縺九ョ譁蟄励お繝ウ繧ウ繝シ繝繧」繝ウ繧ー菴ソ逕ィ萓 - sample/listcap.c 謐慕佐螻・豁エ讖溯ス縺ョ菴ソ逕ィ萓 - sample/posix.c POSIX API菴ソ逕ィ萓 - sample/sql.c 蜿ッ螟峨Γ繧ソ譁蟄玲ゥ溯ス菴ソ逕ィ萓 (SQL-like 繝代ち繝シ繝ウ) - -繝繧ケ繝医励Ο繧ー繝ゥ繝 - sample/syntax.c Perl縲゛ava縲、SIS譁豕輔ョ繝繧ケ繝 - sample/crnl.c --enable-crnl-as-line-terminator 繝繧ケ繝 - - -繧ス繝シ繧ケ繝輔ぃ繧、繝ォ - - oniguruma.h 鬯シ霆晦PI繝倥ャ繝 (蜈ャ髢) - onig-config.in onig-config繝励Ο繧ー繝ゥ繝 繝繝ウ繝励Ξ繝シ繝 - - regenc.h 譁蟄励お繝ウ繧ウ繝シ繝繧」繝ウ繧ー譫邨縺ソ繝倥ャ繝 - regint.h 蜀驛ィ螳」險 - regparse.h regparse.c縺ィregcomp.c縺ョ縺溘a縺ョ蜀驛ィ螳」險 - regcomp.c 繧ウ繝ウ繝代う繝ォ縲∵怙驕ゥ蛹夜未謨ー - regenc.c 譁蟄励お繝ウ繧ウ繝シ繝繧」繝ウ繧ー譫邨縺ソ - regerror.c 繧ィ繝ゥ繝シ繝。繝繧サ繝シ繧ク髢「謨ー - regext.c 諡。蠑オAPI髢「謨ー - regexec.c 讀懃エ「縲∫ァ蜷磯未謨ー - regparse.c 豁」隕剰。ィ迴セ繝代ち繝シ繝ウ隗」譫宣未謨ー - regsyntax.c 豁」隕剰。ィ迴セ繝代ち繝シ繝ウ譁豕暮未謨ー縲∫オ霎シ縺ソ譁豕募ョ夂セゥ - regtrav.c 謐慕佐螻・豁エ譛ィ蟾。蝗樣未謨ー - regversion.c 迚域ュ蝣ア髢「謨ー - st.h 繝上ャ繧キ繝・繝繝シ繝悶Ν髢「謨ー螳」險 - st.c 繝上ャ繧キ繝・繝繝シ繝悶Ν髢「謨ー - - oniggnu.h GNU regex API繝倥ャ繝 (蜈ャ髢) - reggnu.c GNU regex API髢「謨ー - - onigposix.h POSIX API繝倥ャ繝 (蜈ャ髢) - regposerr.c POSIX API繧ィ繝ゥ繝シ繝。繝繧サ繝シ繧ク髢「謨ー - regposix.c POSIX API髢「謨ー - - enc/mktable.c 譁蟄励ち繧、繝励ユ繝シ繝悶Ν逕滓舌励Ο繧ー繝ゥ繝 - enc/ascii.c ASCII 繧ィ繝ウ繧ウ繝シ繝繧」繝ウ繧ー - enc/euc_jp.c EUC-JP 繧ィ繝ウ繧ウ繝シ繝繧」繝ウ繧ー - enc/euc_tw.c EUC-TW 繧ィ繝ウ繧ウ繝シ繝繧」繝ウ繧ー - enc/euc_kr.c EUC-KR, EUC-CN 繧ィ繝ウ繧ウ繝シ繝繧」繝ウ繧ー - enc/sjis.c Shift_JIS 繧ィ繝ウ繧ウ繝シ繝繧」繝ウ繧ー - enc/big5.c Big5 繧ィ繝ウ繧ウ繝シ繝繧」繝ウ繧ー - enc/gb18030.c GB18030 繧ィ繝ウ繧ウ繝シ繝繧」繝ウ繧ー - enc/koi8.c KOI8 繧ィ繝ウ繧ウ繝シ繝繧」繝ウ繧ー - enc/koi8_r.c KOI8-R 繧ィ繝ウ繧ウ繝シ繝繧」繝ウ繧ー - enc/cp1251.c CP1251 繧ィ繝ウ繧ウ繝シ繝繧」繝ウ繧ー - enc/iso8859_1.c ISO-8859-1 (Latin-1) - enc/iso8859_2.c ISO-8859-2 (Latin-2) - enc/iso8859_3.c ISO-8859-3 (Latin-3) - enc/iso8859_4.c ISO-8859-4 (Latin-4) - enc/iso8859_5.c ISO-8859-5 (Cyrillic) - enc/iso8859_6.c ISO-8859-6 (Arabic) - enc/iso8859_7.c ISO-8859-7 (Greek) - enc/iso8859_8.c ISO-8859-8 (Hebrew) - enc/iso8859_9.c ISO-8859-9 (Latin-5 縺セ縺溘ッ Turkish) - enc/iso8859_10.c ISO-8859-10 (Latin-6 縺セ縺溘ッ Nordic) - enc/iso8859_11.c ISO-8859-11 (Thai) - enc/iso8859_13.c ISO-8859-13 (Latin-7 縺セ縺溘ッ Baltic Rim) - enc/iso8859_14.c ISO-8859-14 (Latin-8 縺セ縺溘ッ Celtic) - enc/iso8859_15.c ISO-8859-15 (Latin-9 縺セ縺溘ッ West European with Euro) - enc/iso8859_16.c ISO-8859-16 - (Latin-10 縺セ縺溘ッ South-Eastern European with Euro) - enc/utf8.c UTF-8 繧ィ繝ウ繧ウ繝シ繝繧」繝ウ繧ー - enc/utf16_be.c UTF-16BE 繧ィ繝ウ繧ウ繝シ繝繧」繝ウ繧ー - enc/utf16_le.c UTF-16LE 繧ィ繝ウ繧ウ繝シ繝繧」繝ウ繧ー - enc/utf32_be.c UTF-32BE 繧ィ繝ウ繧ウ繝シ繝繧」繝ウ繧ー - enc/utf32_le.c UTF-32LE 繧ィ繝ウ繧ウ繝シ繝繧」繝ウ繧ー - enc/unicode.c Unicode諠蝣ア - - win32/Makefile Win32逕ィ Makefile (for VC++) - win32/config.h Win32逕ィ config.h - - - -谿倶サカ - - ? case fold flag: Katakana <-> Hiragana - ? ONIG_OPTION_NOTBOS/NOTEOS霑ス蜉 (\A, \z, \Z) - ?? \X (== \PM\pM*) - ?? 譁豕戊ヲ∫エ ONIG_SYN_CONTEXT_INDEP_ANCHORS縺ョ螳溯」 - ?? 讀懃エ「菴咲スョ遘サ蜍募●豁「貍皮ョ怜ュ (match_at()縺九iONIG_STOP繧定ソ斐☆) - -and I'm thankful to Akinori MUSHA. - - -繧「繝峨Ξ繧ケ: K.Kosako diff --git a/vendor/onig/README.md b/vendor/onig/README.md deleted file mode 100644 index ed705da..0000000 --- a/vendor/onig/README.md +++ /dev/null @@ -1,217 +0,0 @@ -[![Build Status](https://travis-ci.org/k-takata/Onigmo.svg?branch=master)](https://travis-ci.org/k-takata/Onigmo) -[![Build status](https://ci.appveyor.com/api/projects/status/kndb924qaw1hq72i/branch/master?svg=true)](https://ci.appveyor.com/project/k-takata/onigmo/branch/master) -[![Coverage Status](https://coveralls.io/repos/k-takata/Onigmo/badge.svg?branch=master&service=github)](https://coveralls.io/github/k-takata/Onigmo?branch=master) -[![Coverity Scan Build Status](https://scan.coverity.com/projects/2778/badge.svg)](https://scan.coverity.com/projects/k-takata-onigmo) - -Onigmo (Oniguruma-mod) -====================== - -https://github.com/k-takata/Onigmo - -Onigmo is a regular expressions library forked from [Oniguruma](https://github.com/kkos/oniguruma). -It focuses to support new expressions like `\K`, `\R`, `(?(cond)yes|no)` -and etc. which are supported in Perl 5.10+. - -Since Onigmo is used as the default regexp library of Ruby 2.0 or later, -many patches are backported from Ruby 2.x. - -See also the Wiki page: -https://github.com/k-takata/Onigmo/wiki - - -License -------- - - BSD license. - - -Install -------- - -### Case 1: Unix and Cygwin platform - - 1. `./configure` - 2. `make` - 3. `make install` - - * test - - make test - - * uninstall - - make uninstall - - * configuration check - - onigmo-config --cflags - onigmo-config --libs - onigmo-config --prefix - onigmo-config --exec-prefix - - -### Case 2: Windows 64/32bit platform (Visual C++) - - Execute `build_nmake.cmd`. - `build_x64` or `build_x86` will be used as a working/output directory. - - onigmo_s.lib: static link library - onigmo.lib: import library for dynamic link - onigmo.dll: dynamic link library - - * test (ASCII/Shift_JIS/EUC-JP/Unicode) - - Execute `build_nmake.cmd test`. - Python (with the same bitness of Onigmo) is needed to run the tests. - - -### Case 3: Windows 64/32bit platform (MinGW) - - Execute `mingw32-make -f win32/Makefile.mingw`. - `build_x86-64`, `build_i686` and etc. will be used as a working/output - directory. - - libonigmo.a: static link library - libonigmo.dll.a: import library for dynamic link - onigmo.dll: dynamic link library - - * test (ASCII/Shift_JIS/EUC-JP/Unicode) - - Execute `mingw32-make -f win32/Makefile.mingw test`. - Python (with the same bitness of Onigmo) is needed to run the tests. - - * If you use MinGW on MSYS2, you can also use `./configure` and `make` - like Unix. In this case, DLL name will have API version number. E.g.: - - libonigmo-6.dll - - -Regular Expressions -------------------- - - See [doc/RE](doc/RE) or [doc/RE.ja](doc/RE.ja) for Japanese. - - -Usage ------ - - Include onigmo.h in your program. (Onigmo API) - See [doc/API](doc/API) for Onigmo API. - - If you want to disable `UChar` type (== `unsigned char`) definition - in onigmo.h, define `ONIG_ESCAPE_UCHAR_COLLISION` and then - include onigmo.h. - - If you want to disable `regex_t` type definition in onigmo.h, - define `ONIG_ESCAPE_REGEX_T_COLLISION` and then include onigmo.h. - - Example of the compiling/linking command line in Unix or Cygwin, - (prefix == /usr/local case) - - cc sample.c -L/usr/local/lib -lonigmo - - - If you want to use static link library (onigmo_s.lib) in Win32, - add option `-DONIG_EXTERN=extern` to C compiler. - - - -Sample Programs ---------------- - -|File |Description | -|:---------------------|:-----------------------------------------| -|sample/simple.c |example of the minimum (Onigmo API) | -|sample/names.c |example of the named group callback. | -|sample/encode.c |example of some encodings. | -|sample/listcap.c |example of the capture history. | -|sample/posix.c |POSIX API sample. | -|sample/sql.c |example of the variable meta characters. | - - -Test Programs - -|File |Description | -|:------------------|:--------------------------------------| -|sample/syntax.c |Perl, Java and ASIS syntax test. | -|sample/crnl.c |CRNL test | - - - -Source Files ------------- - -|File |Description | -|:-------------------|:------------------------------------------------------| -|onigmo.h |Onigmo API header file (public) | -|onigmo-config.in |configuration check program template | -|onigmo.py |Onigmo module for Python | -|regenc.h |character encodings framework header file | -|regint.h |internal definitions | -|regparse.h |internal definitions for regparse.c and regcomp.c | -|regcomp.c |compiling and optimization functions | -|regenc.c |character encodings framework | -|regerror.c |error message function | -|regext.c |extended API functions (deluxe version API) | -|regexec.c |search and match functions | -|regparse.c |parsing functions. | -|regsyntax.c |pattern syntax functions and built-in syntax definition| -|regtrav.c |capture history tree data traverse functions | -|regversion.c |version info function | -|st.h |hash table functions header file | -|st.c |hash table functions | -|onigmognu.h |GNU regex API header file (public) | -|reggnu.c |GNU regex API functions | -|onigmoposix.h |POSIX API header file (public) | -|regposerr.c |POSIX error message function | -|regposix.c |POSIX API functions | -|enc/mktable.c |character type table generator | -|enc/ascii.c |ASCII-8BIT encoding | -|enc/jis/ |JIS properties data | -|enc/euc_jp.c |EUC-JP encoding | -|enc/euc_tw.c |EUC-TW encoding | -|enc/euc_kr.c |EUC-KR, EUC-CN encoding | -|enc/shift_jis.c |Shift_JIS encoding | -|enc/windows_31j.c |Windows-31J (CP932) encoding | -|enc/big5.c |Big5 encoding | -|enc/gb18030.c |GB18030 encoding | -|enc/gbk.c |GBK encoding | -|enc/koi8_r.c |KOI8-R encoding | -|enc/koi8_u.c |KOI8-U encoding | -|enc/iso_8859.h |common definition of ISO-8859 encoding | -|enc/iso_8859_1.c |ISO-8859-1 (Latin-1) | -|enc/iso_8859_2.c |ISO-8859-2 (Latin-2) | -|enc/iso_8859_3.c |ISO-8859-3 (Latin-3) | -|enc/iso_8859_4.c |ISO-8859-4 (Latin-4) | -|enc/iso_8859_5.c |ISO-8859-5 (Cyrillic) | -|enc/iso_8859_6.c |ISO-8859-6 (Arabic) | -|enc/iso_8859_7.c |ISO-8859-7 (Greek) | -|enc/iso_8859_8.c |ISO-8859-8 (Hebrew) | -|enc/iso_8859_9.c |ISO-8859-9 (Latin-5 or Turkish) | -|enc/iso_8859_10.c |ISO-8859-10 (Latin-6 or Nordic) | -|enc/iso_8859_11.c |ISO-8859-11 (Thai) | -|enc/iso_8859_13.c |ISO-8859-13 (Latin-7 or Baltic Rim) | -|enc/iso_8859_14.c |ISO-8859-14 (Latin-8 or Celtic) | -|enc/iso_8859_15.c |ISO-8859-15 (Latin-9 or West European with Euro) | -|enc/iso_8859_16.c |ISO-8859-16 (Latin-10) | -|enc/utf_8.c |UTF-8 encoding | -|enc/utf_16be.c |UTF-16BE encoding | -|enc/utf_16le.c |UTF-16LE encoding | -|enc/utf_32be.c |UTF-32BE encoding | -|enc/utf_32le.c |UTF-32LE encoding | -|enc/unicode.c |common codes of Unicode encoding | -|enc/unicode/ |Unicode case folding data and properties data | -|enc/windows_1250.c |Windows-1250 (CP1250) encoding (Central/Eastern Europe)| -|enc/windows_1251.c |Windows-1251 (CP1251) encoding (Cyrillic) | -|enc/windows_1252.c |Windows-1252 (CP1252) encoding (Latin) | -|enc/windows_1253.c |Windows-1253 (CP1253) encoding (Greek) | -|enc/windows_1254.c |Windows-1254 (CP1254) encoding (Turkish) | -|enc/windows_1257.c |Windows-1257 (CP1257) encoding (Baltic Rim) | -|enc/cp949.c |CP949 encoding (only used in Ruby) | -|enc/emacs_mule.c |Emacs internal encoding (only used in Ruby) | -|enc/gb2312.c |GB2312 encoding (only used in Ruby) | -|enc/us_ascii.c |US-ASCII encoding (only used in Ruby) | -|win32/Makefile |Makefile for Win32 (VC++) | -|win32/Makefile.mingw|Makefile for Win32 (MinGW) | -|win32/config.h |config.h for Win32 | -|win32/onigmo.rc |resource file for Win32 | diff --git a/vendor/onig/aclocal.m4 b/vendor/onig/aclocal.m4 deleted file mode 100644 index d19f831..0000000 --- a/vendor/onig/aclocal.m4 +++ /dev/null @@ -1,1011 +0,0 @@ -# generated automatically by aclocal 1.11.6 -*- Autoconf -*- - -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, -# 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, -# Inc. -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -m4_ifndef([AC_AUTOCONF_VERSION], - [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, -[m4_warning([this file was generated for autoconf 2.69. -You have another version of autoconf. It may work, but is not guaranteed to. -If you have problems, you may need to regenerate the build system entirely. -To do so, use the procedure documented by the package, typically `autoreconf'.])]) - -# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008, 2011 Free Software -# Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 1 - -# AM_AUTOMAKE_VERSION(VERSION) -# ---------------------------- -# Automake X.Y traces this macro to ensure aclocal.m4 has been -# generated from the m4 files accompanying Automake X.Y. -# (This private macro should not be called outside this file.) -AC_DEFUN([AM_AUTOMAKE_VERSION], -[am__api_version='1.11' -dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to -dnl require some minimum version. Point them to the right macro. -m4_if([$1], [1.11.6], [], - [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl -]) - -# _AM_AUTOCONF_VERSION(VERSION) -# ----------------------------- -# aclocal traces this macro to find the Autoconf version. -# This is a private macro too. Using m4_define simplifies -# the logic in aclocal, which can simply ignore this definition. -m4_define([_AM_AUTOCONF_VERSION], []) - -# AM_SET_CURRENT_AUTOMAKE_VERSION -# ------------------------------- -# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. -# This function is AC_REQUIREd by AM_INIT_AUTOMAKE. -AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], -[AM_AUTOMAKE_VERSION([1.11.6])dnl -m4_ifndef([AC_AUTOCONF_VERSION], - [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) - -# AM_AUX_DIR_EXPAND -*- Autoconf -*- - -# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 1 - -# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets -# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to -# `$srcdir', `$srcdir/..', or `$srcdir/../..'. -# -# Of course, Automake must honor this variable whenever it calls a -# tool from the auxiliary directory. The problem is that $srcdir (and -# therefore $ac_aux_dir as well) can be either absolute or relative, -# depending on how configure is run. This is pretty annoying, since -# it makes $ac_aux_dir quite unusable in subdirectories: in the top -# source directory, any form will work fine, but in subdirectories a -# relative path needs to be adjusted first. -# -# $ac_aux_dir/missing -# fails when called from a subdirectory if $ac_aux_dir is relative -# $top_srcdir/$ac_aux_dir/missing -# fails if $ac_aux_dir is absolute, -# fails when called from a subdirectory in a VPATH build with -# a relative $ac_aux_dir -# -# The reason of the latter failure is that $top_srcdir and $ac_aux_dir -# are both prefixed by $srcdir. In an in-source build this is usually -# harmless because $srcdir is `.', but things will broke when you -# start a VPATH build or use an absolute $srcdir. -# -# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, -# iff we strip the leading $srcdir from $ac_aux_dir. That would be: -# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` -# and then we would define $MISSING as -# MISSING="\${SHELL} $am_aux_dir/missing" -# This will work as long as MISSING is not called from configure, because -# unfortunately $(top_srcdir) has no meaning in configure. -# However there are other variables, like CC, which are often used in -# configure, and could therefore not use this "fixed" $ac_aux_dir. -# -# Another solution, used here, is to always expand $ac_aux_dir to an -# absolute PATH. The drawback is that using absolute paths prevent a -# configured tree to be moved without reconfiguration. - -AC_DEFUN([AM_AUX_DIR_EXPAND], -[dnl Rely on autoconf to set up CDPATH properly. -AC_PREREQ([2.50])dnl -# expand $ac_aux_dir to an absolute path -am_aux_dir=`cd $ac_aux_dir && pwd` -]) - -# AM_CONDITIONAL -*- Autoconf -*- - -# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 9 - -# AM_CONDITIONAL(NAME, SHELL-CONDITION) -# ------------------------------------- -# Define a conditional. -AC_DEFUN([AM_CONDITIONAL], -[AC_PREREQ(2.52)dnl - ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], - [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl -AC_SUBST([$1_TRUE])dnl -AC_SUBST([$1_FALSE])dnl -_AM_SUBST_NOTMAKE([$1_TRUE])dnl -_AM_SUBST_NOTMAKE([$1_FALSE])dnl -m4_define([_AM_COND_VALUE_$1], [$2])dnl -if $2; then - $1_TRUE= - $1_FALSE='#' -else - $1_TRUE='#' - $1_FALSE= -fi -AC_CONFIG_COMMANDS_PRE( -[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then - AC_MSG_ERROR([[conditional "$1" was never defined. -Usually this means the macro was only invoked conditionally.]]) -fi])]) - -# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009, -# 2010, 2011 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 12 - -# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be -# written in clear, in which case automake, when reading aclocal.m4, -# will think it sees a *use*, and therefore will trigger all it's -# C support machinery. Also note that it means that autoscan, seeing -# CC etc. in the Makefile, will ask for an AC_PROG_CC use... - - -# _AM_DEPENDENCIES(NAME) -# ---------------------- -# See how the compiler implements dependency checking. -# NAME is "CC", "CXX", "GCJ", or "OBJC". -# We try a few techniques and use that to set a single cache variable. -# -# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was -# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular -# dependency, and given that the user is not expected to run this macro, -# just rely on AC_PROG_CC. -AC_DEFUN([_AM_DEPENDENCIES], -[AC_REQUIRE([AM_SET_DEPDIR])dnl -AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl -AC_REQUIRE([AM_MAKE_INCLUDE])dnl -AC_REQUIRE([AM_DEP_TRACK])dnl - -ifelse([$1], CC, [depcc="$CC" am_compiler_list=], - [$1], CXX, [depcc="$CXX" am_compiler_list=], - [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], - [$1], UPC, [depcc="$UPC" am_compiler_list=], - [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], - [depcc="$$1" am_compiler_list=]) - -AC_CACHE_CHECK([dependency style of $depcc], - [am_cv_$1_dependencies_compiler_type], -[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. - rm -rf conftest.dir - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub - - am_cv_$1_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` - fi - am__universal=false - m4_case([$1], [CC], - [case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac], - [CXX], - [case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac]) - - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - # We check with `-c' and `-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - nosideeffect) - # after this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok `-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_$1_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_$1_dependencies_compiler_type=none -fi -]) -AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) -AM_CONDITIONAL([am__fastdep$1], [ - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) -]) - - -# AM_SET_DEPDIR -# ------------- -# Choose a directory name for dependency files. -# This macro is AC_REQUIREd in _AM_DEPENDENCIES -AC_DEFUN([AM_SET_DEPDIR], -[AC_REQUIRE([AM_SET_LEADING_DOT])dnl -AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl -]) - - -# AM_DEP_TRACK -# ------------ -AC_DEFUN([AM_DEP_TRACK], -[AC_ARG_ENABLE(dependency-tracking, -[ --disable-dependency-tracking speeds up one-time build - --enable-dependency-tracking do not reject slow dependency extractors]) -if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' - am__nodep='_no' -fi -AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) -AC_SUBST([AMDEPBACKSLASH])dnl -_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl -AC_SUBST([am__nodep])dnl -_AM_SUBST_NOTMAKE([am__nodep])dnl -]) - -# Generate code to set up dependency tracking. -*- Autoconf -*- - -# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -#serial 5 - -# _AM_OUTPUT_DEPENDENCY_COMMANDS -# ------------------------------ -AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], -[{ - # Autoconf 2.62 quotes --file arguments for eval, but not when files - # are listed without --file. Let's play safe and only enable the eval - # if we detect the quoting. - case $CONFIG_FILES in - *\'*) eval set x "$CONFIG_FILES" ;; - *) set x $CONFIG_FILES ;; - esac - shift - for mf - do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named `Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # Grep'ing the whole file is not good either: AIX grep has a line - # limit of 2048, but all sed's we know have understand at least 4000. - if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then - dirpart=`AS_DIRNAME("$mf")` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running `make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n 's/^U = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`AS_DIRNAME(["$file"])` - AS_MKDIR_P([$dirpart/$fdir]) - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done - done -} -])# _AM_OUTPUT_DEPENDENCY_COMMANDS - - -# AM_OUTPUT_DEPENDENCY_COMMANDS -# ----------------------------- -# This macro should only be invoked once -- use via AC_REQUIRE. -# -# This code is only required when automatic dependency tracking -# is enabled. FIXME. This creates each `.P' file that we will -# need in order to bootstrap the dependency handling code. -AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], -[AC_CONFIG_COMMANDS([depfiles], - [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], - [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) -]) - -# Do all the work for Automake. -*- Autoconf -*- - -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, -# 2005, 2006, 2008, 2009 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 16 - -# This macro actually does too much. Some checks are only needed if -# your package does certain things. But this isn't really a big deal. - -# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) -# AM_INIT_AUTOMAKE([OPTIONS]) -# ----------------------------------------------- -# The call with PACKAGE and VERSION arguments is the old style -# call (pre autoconf-2.50), which is being phased out. PACKAGE -# and VERSION should now be passed to AC_INIT and removed from -# the call to AM_INIT_AUTOMAKE. -# We support both call styles for the transition. After -# the next Automake release, Autoconf can make the AC_INIT -# arguments mandatory, and then we can depend on a new Autoconf -# release and drop the old call support. -AC_DEFUN([AM_INIT_AUTOMAKE], -[AC_PREREQ([2.62])dnl -dnl Autoconf wants to disallow AM_ names. We explicitly allow -dnl the ones we care about. -m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl -AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl -AC_REQUIRE([AC_PROG_INSTALL])dnl -if test "`cd $srcdir && pwd`" != "`pwd`"; then - # Use -I$(srcdir) only when $(srcdir) != ., so that make's output - # is not polluted with repeated "-I." - AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl - # test to see if srcdir already configured - if test -f $srcdir/config.status; then - AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) - fi -fi - -# test whether we have cygpath -if test -z "$CYGPATH_W"; then - if (cygpath --version) >/dev/null 2>/dev/null; then - CYGPATH_W='cygpath -w' - else - CYGPATH_W=echo - fi -fi -AC_SUBST([CYGPATH_W]) - -# Define the identity of the package. -dnl Distinguish between old-style and new-style calls. -m4_ifval([$2], -[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl - AC_SUBST([PACKAGE], [$1])dnl - AC_SUBST([VERSION], [$2])], -[_AM_SET_OPTIONS([$1])dnl -dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. -m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, - [m4_fatal([AC_INIT should be called with package and version arguments])])dnl - AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl - AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl - -_AM_IF_OPTION([no-define],, -[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) - AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl - -# Some tools Automake needs. -AC_REQUIRE([AM_SANITY_CHECK])dnl -AC_REQUIRE([AC_ARG_PROGRAM])dnl -AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) -AM_MISSING_PROG(AUTOCONF, autoconf) -AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) -AM_MISSING_PROG(AUTOHEADER, autoheader) -AM_MISSING_PROG(MAKEINFO, makeinfo) -AC_REQUIRE([AM_PROG_INSTALL_SH])dnl -AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl -AC_REQUIRE([AM_PROG_MKDIR_P])dnl -# We need awk for the "check" target. The system "awk" is bad on -# some platforms. -AC_REQUIRE([AC_PROG_AWK])dnl -AC_REQUIRE([AC_PROG_MAKE_SET])dnl -AC_REQUIRE([AM_SET_LEADING_DOT])dnl -_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], - [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], - [_AM_PROG_TAR([v7])])]) -_AM_IF_OPTION([no-dependencies],, -[AC_PROVIDE_IFELSE([AC_PROG_CC], - [_AM_DEPENDENCIES(CC)], - [define([AC_PROG_CC], - defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl -AC_PROVIDE_IFELSE([AC_PROG_CXX], - [_AM_DEPENDENCIES(CXX)], - [define([AC_PROG_CXX], - defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl -AC_PROVIDE_IFELSE([AC_PROG_OBJC], - [_AM_DEPENDENCIES(OBJC)], - [define([AC_PROG_OBJC], - defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl -]) -_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl -dnl The `parallel-tests' driver may need to know about EXEEXT, so add the -dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro -dnl is hooked onto _AC_COMPILER_EXEEXT early, see below. -AC_CONFIG_COMMANDS_PRE(dnl -[m4_provide_if([_AM_COMPILER_EXEEXT], - [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl -]) - -dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not -dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further -dnl mangled by Autoconf and run in a shell conditional statement. -m4_define([_AC_COMPILER_EXEEXT], -m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) - - -# When config.status generates a header, we must update the stamp-h file. -# This file resides in the same directory as the config header -# that is generated. The stamp files are numbered to have different names. - -# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the -# loop where config.status creates the headers, so we can generate -# our stamp files there. -AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], -[# Compute $1's index in $config_headers. -_am_arg=$1 -_am_stamp_count=1 -for _am_header in $config_headers :; do - case $_am_header in - $_am_arg | $_am_arg:* ) - break ;; - * ) - _am_stamp_count=`expr $_am_stamp_count + 1` ;; - esac -done -echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) - -# Copyright (C) 2001, 2003, 2005, 2008, 2011 Free Software Foundation, -# Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 1 - -# AM_PROG_INSTALL_SH -# ------------------ -# Define $install_sh. -AC_DEFUN([AM_PROG_INSTALL_SH], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -if test x"${install_sh}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; - *) - install_sh="\${SHELL} $am_aux_dir/install-sh" - esac -fi -AC_SUBST(install_sh)]) - -# Copyright (C) 2003, 2005 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 2 - -# Check whether the underlying file-system supports filenames -# with a leading dot. For instance MS-DOS doesn't. -AC_DEFUN([AM_SET_LEADING_DOT], -[rm -rf .tst 2>/dev/null -mkdir .tst 2>/dev/null -if test -d .tst; then - am__leading_dot=. -else - am__leading_dot=_ -fi -rmdir .tst 2>/dev/null -AC_SUBST([am__leading_dot])]) - -# Check to see how 'make' treats includes. -*- Autoconf -*- - -# Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 4 - -# AM_MAKE_INCLUDE() -# ----------------- -# Check to see how make treats includes. -AC_DEFUN([AM_MAKE_INCLUDE], -[am_make=${MAKE-make} -cat > confinc << 'END' -am__doit: - @echo this is the am__doit target -.PHONY: am__doit -END -# If we don't find an include directive, just comment out the code. -AC_MSG_CHECKING([for style of include used by $am_make]) -am__include="#" -am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# Ignore all kinds of additional output from `make'. -case `$am_make -s -f confmf 2> /dev/null` in #( -*the\ am__doit\ target*) - am__include=include - am__quote= - _am_result=GNU - ;; -esac -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - case `$am_make -s -f confmf 2> /dev/null` in #( - *the\ am__doit\ target*) - am__include=.include - am__quote="\"" - _am_result=BSD - ;; - esac -fi -AC_SUBST([am__include]) -AC_SUBST([am__quote]) -AC_MSG_RESULT([$_am_result]) -rm -f confinc confmf -]) - -# Copyright (C) 1999, 2000, 2001, 2003, 2004, 2005, 2008 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 6 - -# AM_PROG_CC_C_O -# -------------- -# Like AC_PROG_CC_C_O, but changed for automake. -AC_DEFUN([AM_PROG_CC_C_O], -[AC_REQUIRE([AC_PROG_CC_C_O])dnl -AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -AC_REQUIRE_AUX_FILE([compile])dnl -# FIXME: we rely on the cache variable name because -# there is no other way. -set dummy $CC -am_cc=`echo $[2] | sed ['s/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/']` -eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o -if test "$am_t" != yes; then - # Losing compiler, so override with the script. - # FIXME: It is wrong to rewrite CC. - # But if we don't then we get into trouble of one sort or another. - # A longer-term fix would be to have automake use am__CC in this case, - # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" - CC="$am_aux_dir/compile $CC" -fi -dnl Make sure AC_PROG_CC is never called again, or it will override our -dnl setting of CC. -m4_define([AC_PROG_CC], - [m4_fatal([AC_PROG_CC cannot be called after AM_PROG_CC_C_O])]) -]) - -# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- - -# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 6 - -# AM_MISSING_PROG(NAME, PROGRAM) -# ------------------------------ -AC_DEFUN([AM_MISSING_PROG], -[AC_REQUIRE([AM_MISSING_HAS_RUN]) -$1=${$1-"${am_missing_run}$2"} -AC_SUBST($1)]) - - -# AM_MISSING_HAS_RUN -# ------------------ -# Define MISSING if not defined so far and test if it supports --run. -# If it does, set am_missing_run to use it, otherwise, to nothing. -AC_DEFUN([AM_MISSING_HAS_RUN], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -AC_REQUIRE_AUX_FILE([missing])dnl -if test x"${MISSING+set}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; - *) - MISSING="\${SHELL} $am_aux_dir/missing" ;; - esac -fi -# Use eval to expand $SHELL -if eval "$MISSING --run true"; then - am_missing_run="$MISSING --run " -else - am_missing_run= - AC_MSG_WARN([`missing' script is too old or missing]) -fi -]) - -# Copyright (C) 2003, 2004, 2005, 2006, 2011 Free Software Foundation, -# Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 1 - -# AM_PROG_MKDIR_P -# --------------- -# Check for `mkdir -p'. -AC_DEFUN([AM_PROG_MKDIR_P], -[AC_PREREQ([2.60])dnl -AC_REQUIRE([AC_PROG_MKDIR_P])dnl -dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, -dnl while keeping a definition of mkdir_p for backward compatibility. -dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. -dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of -dnl Makefile.ins that do not define MKDIR_P, so we do our own -dnl adjustment using top_builddir (which is defined more often than -dnl MKDIR_P). -AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl -case $mkdir_p in - [[\\/$]]* | ?:[[\\/]]*) ;; - */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; -esac -]) - -# Helper functions for option handling. -*- Autoconf -*- - -# Copyright (C) 2001, 2002, 2003, 2005, 2008, 2010 Free Software -# Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 5 - -# _AM_MANGLE_OPTION(NAME) -# ----------------------- -AC_DEFUN([_AM_MANGLE_OPTION], -[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) - -# _AM_SET_OPTION(NAME) -# -------------------- -# Set option NAME. Presently that only means defining a flag for this option. -AC_DEFUN([_AM_SET_OPTION], -[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) - -# _AM_SET_OPTIONS(OPTIONS) -# ------------------------ -# OPTIONS is a space-separated list of Automake options. -AC_DEFUN([_AM_SET_OPTIONS], -[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) - -# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) -# ------------------------------------------- -# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. -AC_DEFUN([_AM_IF_OPTION], -[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) - -# Check to make sure that the build environment is sane. -*- Autoconf -*- - -# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 5 - -# AM_SANITY_CHECK -# --------------- -AC_DEFUN([AM_SANITY_CHECK], -[AC_MSG_CHECKING([whether build environment is sane]) -# Just in case -sleep 1 -echo timestamp > conftest.file -# Reject unsafe characters in $srcdir or the absolute working directory -# name. Accept space and tab only in the latter. -am_lf=' -' -case `pwd` in - *[[\\\"\#\$\&\'\`$am_lf]]*) - AC_MSG_ERROR([unsafe absolute working directory name]);; -esac -case $srcdir in - *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) - AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);; -esac - -# Do `set' in a subshell so we don't clobber the current shell's -# arguments. Must try -L first in case configure is actually a -# symlink; some systems play weird games with the mod time of symlinks -# (eg FreeBSD returns the mod time of the symlink's containing -# directory). -if ( - set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` - if test "$[*]" = "X"; then - # -L didn't work. - set X `ls -t "$srcdir/configure" conftest.file` - fi - rm -f conftest.file - if test "$[*]" != "X $srcdir/configure conftest.file" \ - && test "$[*]" != "X conftest.file $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken -alias in your environment]) - fi - - test "$[2]" = conftest.file - ) -then - # Ok. - : -else - AC_MSG_ERROR([newly created file is older than distributed files! -Check your system clock]) -fi -AC_MSG_RESULT(yes)]) - -# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 1 - -# AM_PROG_INSTALL_STRIP -# --------------------- -# One issue with vendor `install' (even GNU) is that you can't -# specify the program used to strip binaries. This is especially -# annoying in cross-compiling environments, where the build's strip -# is unlikely to handle the host's binaries. -# Fortunately install-sh will honor a STRIPPROG variable, so we -# always use install-sh in `make install-strip', and initialize -# STRIPPROG with the value of the STRIP variable (set by the user). -AC_DEFUN([AM_PROG_INSTALL_STRIP], -[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl -# Installed binaries are usually stripped using `strip' when the user -# run `make install-strip'. However `strip' might not be the right -# tool to use in cross-compilation environments, therefore Automake -# will honor the `STRIP' environment variable to overrule this program. -dnl Don't test for $cross_compiling = yes, because it might be `maybe'. -if test "$cross_compiling" != no; then - AC_CHECK_TOOL([STRIP], [strip], :) -fi -INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" -AC_SUBST([INSTALL_STRIP_PROGRAM])]) - -# Copyright (C) 2006, 2008, 2010 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 3 - -# _AM_SUBST_NOTMAKE(VARIABLE) -# --------------------------- -# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. -# This macro is traced by Automake. -AC_DEFUN([_AM_SUBST_NOTMAKE]) - -# AM_SUBST_NOTMAKE(VARIABLE) -# -------------------------- -# Public sister of _AM_SUBST_NOTMAKE. -AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) - -# Check how to create a tarball. -*- Autoconf -*- - -# Copyright (C) 2004, 2005, 2012 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 2 - -# _AM_PROG_TAR(FORMAT) -# -------------------- -# Check how to create a tarball in format FORMAT. -# FORMAT should be one of `v7', `ustar', or `pax'. -# -# Substitute a variable $(am__tar) that is a command -# writing to stdout a FORMAT-tarball containing the directory -# $tardir. -# tardir=directory && $(am__tar) > result.tar -# -# Substitute a variable $(am__untar) that extract such -# a tarball read from stdin. -# $(am__untar) < result.tar -AC_DEFUN([_AM_PROG_TAR], -[# Always define AMTAR for backward compatibility. Yes, it's still used -# in the wild :-( We should find a proper way to deprecate it ... -AC_SUBST([AMTAR], ['$${TAR-tar}']) -m4_if([$1], [v7], - [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], - [m4_case([$1], [ustar],, [pax],, - [m4_fatal([Unknown tar format])]) -AC_MSG_CHECKING([how to create a $1 tar archive]) -# Loop over all known methods to create a tar archive until one works. -_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' -_am_tools=${am_cv_prog_tar_$1-$_am_tools} -# Do not fold the above two line into one, because Tru64 sh and -# Solaris sh will not grok spaces in the rhs of `-'. -for _am_tool in $_am_tools -do - case $_am_tool in - gnutar) - for _am_tar in tar gnutar gtar; - do - AM_RUN_LOG([$_am_tar --version]) && break - done - am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' - am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' - am__untar="$_am_tar -xf -" - ;; - plaintar) - # Must skip GNU tar: if it does not support --format= it doesn't create - # ustar tarball either. - (tar --version) >/dev/null 2>&1 && continue - am__tar='tar chf - "$$tardir"' - am__tar_='tar chf - "$tardir"' - am__untar='tar xf -' - ;; - pax) - am__tar='pax -L -x $1 -w "$$tardir"' - am__tar_='pax -L -x $1 -w "$tardir"' - am__untar='pax -r' - ;; - cpio) - am__tar='find "$$tardir" -print | cpio -o -H $1 -L' - am__tar_='find "$tardir" -print | cpio -o -H $1 -L' - am__untar='cpio -i -H $1 -d' - ;; - none) - am__tar=false - am__tar_=false - am__untar=false - ;; - esac - - # If the value was cached, stop now. We just wanted to have am__tar - # and am__untar set. - test -n "${am_cv_prog_tar_$1}" && break - - # tar/untar a dummy directory, and stop if the command works - rm -rf conftest.dir - mkdir conftest.dir - echo GrepMe > conftest.dir/file - AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) - rm -rf conftest.dir - if test -s conftest.tar; then - AM_RUN_LOG([$am__untar /dev/null 2>&1 && break - fi -done -rm -rf conftest.dir - -AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) -AC_MSG_RESULT([$am_cv_prog_tar_$1])]) -AC_SUBST([am__tar]) -AC_SUBST([am__untar]) -]) # _AM_PROG_TAR - -m4_include([m4/libtool.m4]) -m4_include([m4/ltoptions.m4]) -m4_include([m4/ltsugar.m4]) -m4_include([m4/ltversion.m4]) -m4_include([m4/lt~obsolete.m4]) diff --git a/vendor/onig/appveyor.yml b/vendor/onig/appveyor.yml deleted file mode 100644 index 1984573..0000000 --- a/vendor/onig/appveyor.yml +++ /dev/null @@ -1,42 +0,0 @@ -version: 1.0.{build} - -branches: - except: - - ruby-2.x - - onig-5.9.x-mod - - onig-5.9.x-mod_for_bregonig-v2 - -environment: - matrix: - - ARCH: x64 - PYOPT: -3 - - ARCH: x86 - PYOPT: -3.4-32 - -install: -- cmd: |- - rem Check environments. - rem path - rem dir C:\ - rem dir "C:\Program Files" - rem dir "C:\Program Files\Microsoft SDKs\Windows" - rem dir "C:\Program Files (x86)" - rem dir "C:\Program Files (x86)\Windows Kits" - rem Using Windows SDK 7.1 (VC10) - rem "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /%ARCH% /release - rem Using VC12 - "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" %ARCH% - path - -build_script: -- cmd: |- - nmake -f win32\Makefile - dir build_%ARCH%\onigmo.dll - \msys64\usr\bin\file build_%ARCH%\onigmo.dll - -test_script: -- cmd: |- - py %PYOPT% -c "import locale; print(locale.getpreferredencoding())" - nmake -f win32\Makefile test - -# vim: ts=2 sw=2 sts=2 et diff --git a/vendor/onig/build_nmake.cmd b/vendor/onig/build_nmake.cmd deleted file mode 100644 index c5a622a..0000000 --- a/vendor/onig/build_nmake.cmd +++ /dev/null @@ -1,2 +0,0 @@ -@setlocal enabledelayedexpansion -nmake -f "%~dp0win32\Makefile" %* diff --git a/vendor/onig/config.h.in b/vendor/onig/config.h.in deleted file mode 100644 index f7766c3..0000000 --- a/vendor/onig/config.h.in +++ /dev/null @@ -1,139 +0,0 @@ -/* config.h.in. Generated from configure.ac by autoheader. */ - -#include "config-onig-edbee.h" - -#ifdef _WIN32 - - #include "win32/config.h" - - // Rick: added to make it compile on windows - #define ONIG_EXTERN extern - - // Rick: added to decrease the numberr of warnings for onig - #define _CRT_SECURE_NO_WARNINGS - -#else - -/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP - systems. This function is required for `alloca.c' support on those systems. - */ -#undef CRAY_STACKSEG_END - -/* Define to 1 if using `alloca.c'. */ -#undef C_ALLOCA - -/* Define to 1 if you have `alloca', as a function or macro. */ -#undef HAVE_ALLOCA - -/* Define to 1 if you have and it should be used (not on Ultrix). - */ -#undef HAVE_ALLOCA_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_DLFCN_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_INTTYPES_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_MEMORY_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STDINT_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STDLIB_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STRINGS_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STRING_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_STAT_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_TIMES_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_TIME_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_TYPES_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_UNISTD_H - -/* Define to the sub-directory where libtool stores uninstalled libraries. */ -#undef LT_OBJDIR - -/* Define to 1 if your C compiler doesn't accept -c and -o together. */ -#undef NO_MINUS_C_MINUS_O - -/* Name of package */ -#undef PACKAGE - -/* Define to the address where bug reports for this package should be sent. */ -#undef PACKAGE_BUGREPORT - -/* Define to the full name of this package. */ -#undef PACKAGE_NAME - -/* Define to the full name and version of this package. */ -#undef PACKAGE_STRING - -/* Define to the one symbol short name of this package. */ -#undef PACKAGE_TARNAME - -/* Define to the home page for this package. */ -#undef PACKAGE_URL - -/* Define to the version of this package. */ -#undef PACKAGE_VERSION - -/* The size of `int', as computed by sizeof. */ -#undef SIZEOF_INT - -/* The size of `long', as computed by sizeof. */ -#undef SIZEOF_LONG - -/* The size of `long long', as computed by sizeof. */ -#undef SIZEOF_LONG_LONG - -/* The size of `short', as computed by sizeof. */ -#undef SIZEOF_SHORT - -/* The size of `void*', as computed by sizeof. */ -#undef SIZEOF_VOIDP - -/* If using the C implementation of alloca, define if you know the - direction of stack growth for your system; otherwise it will be - automatically deduced at runtime. - STACK_DIRECTION > 0 => grows toward higher addresses - STACK_DIRECTION < 0 => grows toward lower addresses - STACK_DIRECTION = 0 => direction of growth unknown */ -#undef STACK_DIRECTION - -/* Define to 1 if you have the ANSI C header files. */ -#undef STDC_HEADERS - -/* Define to 1 if you can safely include both and . */ -#undef TIME_WITH_SYS_TIME - -/* Define if combination explosion check */ -#undef USE_COMBINATION_EXPLOSION_CHECK - -/* Define if enable CR+NL as line terminator */ -#undef USE_CRNL_AS_LINE_TERMINATOR - -/* Version number of package */ -#undef VERSION - -/* Define to empty if `const' does not conform to ANSI C. */ -#undef const - -/* Define to `unsigned int' if does not define. */ -#undef size_t - -#endif diff --git a/vendor/onig/config.sub b/vendor/onig/config.sub deleted file mode 100755 index cc69b06..0000000 --- a/vendor/onig/config.sub +++ /dev/null @@ -1,1823 +0,0 @@ -#! /bin/sh -# Configuration validation subroutine script. -# Copyright 1992-2016 Free Software Foundation, Inc. - -timestamp='2016-09-05' - -# This file is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, see . -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that -# program. This Exception is an additional permission under section 7 -# of the GNU General Public License, version 3 ("GPLv3"). - - -# Please send patches to . -# -# Configuration subroutine to validate and canonicalize a configuration type. -# Supply the specified configuration type as an argument. -# If it is invalid, we print an error message on stderr and exit with code 1. -# Otherwise, we print the canonical config type on stdout and succeed. - -# You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub - -# This file is supposed to be the same for all GNU packages -# and recognize all the CPU types, system types and aliases -# that are meaningful with *any* GNU software. -# Each package is responsible for reporting which valid configurations -# it does not support. The user should be able to distinguish -# a failure to support a valid configuration from a meaningless -# configuration. - -# The goal of this file is to map all the various variations of a given -# machine specification into a single specification in the form: -# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM -# or in some cases, the newer four-part form: -# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM -# It is wrong to echo any other type of specification. - -me=`echo "$0" | sed -e 's,.*/,,'` - -usage="\ -Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS - -Canonicalize a configuration name. - -Operation modes: - -h, --help print this help, then exit - -t, --time-stamp print date of last modification, then exit - -v, --version print version number, then exit - -Report bugs and patches to ." - -version="\ -GNU config.sub ($timestamp) - -Copyright 1992-2016 Free Software Foundation, Inc. - -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." - -help=" -Try \`$me --help' for more information." - -# Parse command line -while test $# -gt 0 ; do - case $1 in - --time-stamp | --time* | -t ) - echo "$timestamp" ; exit ;; - --version | -v ) - echo "$version" ; exit ;; - --help | --h* | -h ) - echo "$usage"; exit ;; - -- ) # Stop option processing - shift; break ;; - - ) # Use stdin as input. - break ;; - -* ) - echo "$me: invalid option $1$help" - exit 1 ;; - - *local*) - # First pass through any local machine types. - echo $1 - exit ;; - - * ) - break ;; - esac -done - -case $# in - 0) echo "$me: missing argument$help" >&2 - exit 1;; - 1) ;; - *) echo "$me: too many arguments$help" >&2 - exit 1;; -esac - -# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). -# Here we must recognize all the valid KERNEL-OS combinations. -maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` -case $maybe_os in - nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ - linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ - knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \ - kopensolaris*-gnu* | cloudabi*-eabi* | \ - storm-chaos* | os2-emx* | rtmk-nova*) - os=-$maybe_os - basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` - ;; - android-linux) - os=-linux-android - basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown - ;; - *) - basic_machine=`echo $1 | sed 's/-[^-]*$//'` - if [ $basic_machine != $1 ] - then os=`echo $1 | sed 's/.*-/-/'` - else os=; fi - ;; -esac - -### Let's recognize common machines as not being operating systems so -### that things like config.sub decstation-3100 work. We also -### recognize some manufacturers as not being operating systems, so we -### can provide default operating systems below. -case $os in - -sun*os*) - # Prevent following clause from handling this invalid input. - ;; - -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ - -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ - -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ - -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ - -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ - -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ - -apple | -axis | -knuth | -cray | -microblaze*) - os= - basic_machine=$1 - ;; - -bluegene*) - os=-cnk - ;; - -sim | -cisco | -oki | -wec | -winbond) - os= - basic_machine=$1 - ;; - -scout) - ;; - -wrs) - os=-vxworks - basic_machine=$1 - ;; - -chorusos*) - os=-chorusos - basic_machine=$1 - ;; - -chorusrdb) - os=-chorusrdb - basic_machine=$1 - ;; - -hiux*) - os=-hiuxwe2 - ;; - -sco6) - os=-sco5v6 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco5) - os=-sco3.2v5 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco4) - os=-sco3.2v4 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2.[4-9]*) - os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2v[4-9]*) - # Don't forget version if it is 3.2v4 or newer. - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco5v6*) - # Don't forget version if it is 3.2v4 or newer. - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco*) - os=-sco3.2v2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -udk*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -isc) - os=-isc2.2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -clix*) - basic_machine=clipper-intergraph - ;; - -isc*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -lynx*178) - os=-lynxos178 - ;; - -lynx*5) - os=-lynxos5 - ;; - -lynx*) - os=-lynxos - ;; - -ptx*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` - ;; - -windowsnt*) - os=`echo $os | sed -e 's/windowsnt/winnt/'` - ;; - -psos*) - os=-psos - ;; - -mint | -mint[0-9]*) - basic_machine=m68k-atari - os=-mint - ;; -esac - -# Decode aliases for certain CPU-COMPANY combinations. -case $basic_machine in - # Recognize the basic CPU types without company name. - # Some are omitted here because they have special meanings below. - 1750a | 580 \ - | a29k \ - | aarch64 | aarch64_be \ - | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ - | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ - | am33_2.0 \ - | arc | arceb \ - | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ - | avr | avr32 \ - | ba \ - | be32 | be64 \ - | bfin \ - | c4x | c8051 | clipper \ - | d10v | d30v | dlx | dsp16xx \ - | e2k | epiphany \ - | fido | fr30 | frv | ft32 \ - | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ - | hexagon \ - | i370 | i860 | i960 | ia64 \ - | ip2k | iq2000 \ - | k1om \ - | le32 | le64 \ - | lm32 \ - | m32c | m32r | m32rle | m68000 | m68k | m88k \ - | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ - | mips | mipsbe | mipseb | mipsel | mipsle \ - | mips16 \ - | mips64 | mips64el \ - | mips64octeon | mips64octeonel \ - | mips64orion | mips64orionel \ - | mips64r5900 | mips64r5900el \ - | mips64vr | mips64vrel \ - | mips64vr4100 | mips64vr4100el \ - | mips64vr4300 | mips64vr4300el \ - | mips64vr5000 | mips64vr5000el \ - | mips64vr5900 | mips64vr5900el \ - | mipsisa32 | mipsisa32el \ - | mipsisa32r2 | mipsisa32r2el \ - | mipsisa32r6 | mipsisa32r6el \ - | mipsisa64 | mipsisa64el \ - | mipsisa64r2 | mipsisa64r2el \ - | mipsisa64r6 | mipsisa64r6el \ - | mipsisa64sb1 | mipsisa64sb1el \ - | mipsisa64sr71k | mipsisa64sr71kel \ - | mipsr5900 | mipsr5900el \ - | mipstx39 | mipstx39el \ - | mn10200 | mn10300 \ - | moxie \ - | mt \ - | msp430 \ - | nds32 | nds32le | nds32be \ - | nios | nios2 | nios2eb | nios2el \ - | ns16k | ns32k \ - | open8 | or1k | or1knd | or32 \ - | pdp10 | pdp11 | pj | pjl \ - | powerpc | powerpc64 | powerpc64le | powerpcle \ - | pyramid \ - | riscv32 | riscv64 \ - | rl78 | rx \ - | score \ - | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ - | sh64 | sh64le \ - | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ - | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ - | spu \ - | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ - | ubicom32 \ - | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ - | visium \ - | we32k \ - | x86 | xc16x | xstormy16 | xtensa \ - | z8k | z80) - basic_machine=$basic_machine-unknown - ;; - c54x) - basic_machine=tic54x-unknown - ;; - c55x) - basic_machine=tic55x-unknown - ;; - c6x) - basic_machine=tic6x-unknown - ;; - leon|leon[3-9]) - basic_machine=sparc-$basic_machine - ;; - m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) - basic_machine=$basic_machine-unknown - os=-none - ;; - m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) - ;; - ms1) - basic_machine=mt-unknown - ;; - - strongarm | thumb | xscale) - basic_machine=arm-unknown - ;; - xgate) - basic_machine=$basic_machine-unknown - os=-none - ;; - xscaleeb) - basic_machine=armeb-unknown - ;; - - xscaleel) - basic_machine=armel-unknown - ;; - - # We use `pc' rather than `unknown' - # because (1) that's what they normally are, and - # (2) the word "unknown" tends to confuse beginning users. - i*86 | x86_64) - basic_machine=$basic_machine-pc - ;; - # Object if more than one company name word. - *-*-*) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; - # Recognize the basic CPU types with company name. - 580-* \ - | a29k-* \ - | aarch64-* | aarch64_be-* \ - | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ - | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ - | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ - | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ - | avr-* | avr32-* \ - | ba-* \ - | be32-* | be64-* \ - | bfin-* | bs2000-* \ - | c[123]* | c30-* | [cjt]90-* | c4x-* \ - | c8051-* | clipper-* | craynv-* | cydra-* \ - | d10v-* | d30v-* | dlx-* \ - | e2k-* | elxsi-* \ - | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ - | h8300-* | h8500-* \ - | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ - | hexagon-* \ - | i*86-* | i860-* | i960-* | ia64-* \ - | ip2k-* | iq2000-* \ - | k1om-* \ - | le32-* | le64-* \ - | lm32-* \ - | m32c-* | m32r-* | m32rle-* \ - | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ - | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ - | microblaze-* | microblazeel-* \ - | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ - | mips16-* \ - | mips64-* | mips64el-* \ - | mips64octeon-* | mips64octeonel-* \ - | mips64orion-* | mips64orionel-* \ - | mips64r5900-* | mips64r5900el-* \ - | mips64vr-* | mips64vrel-* \ - | mips64vr4100-* | mips64vr4100el-* \ - | mips64vr4300-* | mips64vr4300el-* \ - | mips64vr5000-* | mips64vr5000el-* \ - | mips64vr5900-* | mips64vr5900el-* \ - | mipsisa32-* | mipsisa32el-* \ - | mipsisa32r2-* | mipsisa32r2el-* \ - | mipsisa32r6-* | mipsisa32r6el-* \ - | mipsisa64-* | mipsisa64el-* \ - | mipsisa64r2-* | mipsisa64r2el-* \ - | mipsisa64r6-* | mipsisa64r6el-* \ - | mipsisa64sb1-* | mipsisa64sb1el-* \ - | mipsisa64sr71k-* | mipsisa64sr71kel-* \ - | mipsr5900-* | mipsr5900el-* \ - | mipstx39-* | mipstx39el-* \ - | mmix-* \ - | mt-* \ - | msp430-* \ - | nds32-* | nds32le-* | nds32be-* \ - | nios-* | nios2-* | nios2eb-* | nios2el-* \ - | none-* | np1-* | ns16k-* | ns32k-* \ - | open8-* \ - | or1k*-* \ - | orion-* \ - | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ - | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ - | pyramid-* \ - | riscv32-* | riscv64-* \ - | rl78-* | romp-* | rs6000-* | rx-* \ - | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ - | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ - | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ - | sparclite-* \ - | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \ - | tahoe-* \ - | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ - | tile*-* \ - | tron-* \ - | ubicom32-* \ - | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ - | vax-* \ - | visium-* \ - | we32k-* \ - | x86-* | x86_64-* | xc16x-* | xps100-* \ - | xstormy16-* | xtensa*-* \ - | ymp-* \ - | z8k-* | z80-*) - ;; - # Recognize the basic CPU types without company name, with glob match. - xtensa*) - basic_machine=$basic_machine-unknown - ;; - # Recognize the various machine names and aliases which stand - # for a CPU type and a company and sometimes even an OS. - 386bsd) - basic_machine=i386-unknown - os=-bsd - ;; - 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) - basic_machine=m68000-att - ;; - 3b*) - basic_machine=we32k-att - ;; - a29khif) - basic_machine=a29k-amd - os=-udi - ;; - abacus) - basic_machine=abacus-unknown - ;; - adobe68k) - basic_machine=m68010-adobe - os=-scout - ;; - alliant | fx80) - basic_machine=fx80-alliant - ;; - altos | altos3068) - basic_machine=m68k-altos - ;; - am29k) - basic_machine=a29k-none - os=-bsd - ;; - amd64) - basic_machine=x86_64-pc - ;; - amd64-*) - basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - amdahl) - basic_machine=580-amdahl - os=-sysv - ;; - amiga | amiga-*) - basic_machine=m68k-unknown - ;; - amigaos | amigados) - basic_machine=m68k-unknown - os=-amigaos - ;; - amigaunix | amix) - basic_machine=m68k-unknown - os=-sysv4 - ;; - apollo68) - basic_machine=m68k-apollo - os=-sysv - ;; - apollo68bsd) - basic_machine=m68k-apollo - os=-bsd - ;; - aros) - basic_machine=i386-pc - os=-aros - ;; - asmjs) - basic_machine=asmjs-unknown - ;; - aux) - basic_machine=m68k-apple - os=-aux - ;; - balance) - basic_machine=ns32k-sequent - os=-dynix - ;; - blackfin) - basic_machine=bfin-unknown - os=-linux - ;; - blackfin-*) - basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` - os=-linux - ;; - bluegene*) - basic_machine=powerpc-ibm - os=-cnk - ;; - c54x-*) - basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - c55x-*) - basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - c6x-*) - basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - c90) - basic_machine=c90-cray - os=-unicos - ;; - cegcc) - basic_machine=arm-unknown - os=-cegcc - ;; - convex-c1) - basic_machine=c1-convex - os=-bsd - ;; - convex-c2) - basic_machine=c2-convex - os=-bsd - ;; - convex-c32) - basic_machine=c32-convex - os=-bsd - ;; - convex-c34) - basic_machine=c34-convex - os=-bsd - ;; - convex-c38) - basic_machine=c38-convex - os=-bsd - ;; - cray | j90) - basic_machine=j90-cray - os=-unicos - ;; - craynv) - basic_machine=craynv-cray - os=-unicosmp - ;; - cr16 | cr16-*) - basic_machine=cr16-unknown - os=-elf - ;; - crds | unos) - basic_machine=m68k-crds - ;; - crisv32 | crisv32-* | etraxfs*) - basic_machine=crisv32-axis - ;; - cris | cris-* | etrax*) - basic_machine=cris-axis - ;; - crx) - basic_machine=crx-unknown - os=-elf - ;; - da30 | da30-*) - basic_machine=m68k-da30 - ;; - decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) - basic_machine=mips-dec - ;; - decsystem10* | dec10*) - basic_machine=pdp10-dec - os=-tops10 - ;; - decsystem20* | dec20*) - basic_machine=pdp10-dec - os=-tops20 - ;; - delta | 3300 | motorola-3300 | motorola-delta \ - | 3300-motorola | delta-motorola) - basic_machine=m68k-motorola - ;; - delta88) - basic_machine=m88k-motorola - os=-sysv3 - ;; - dicos) - basic_machine=i686-pc - os=-dicos - ;; - djgpp) - basic_machine=i586-pc - os=-msdosdjgpp - ;; - dpx20 | dpx20-*) - basic_machine=rs6000-bull - os=-bosx - ;; - dpx2* | dpx2*-bull) - basic_machine=m68k-bull - os=-sysv3 - ;; - e500v[12]) - basic_machine=powerpc-unknown - os=$os"spe" - ;; - e500v[12]-*) - basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` - os=$os"spe" - ;; - ebmon29k) - basic_machine=a29k-amd - os=-ebmon - ;; - elxsi) - basic_machine=elxsi-elxsi - os=-bsd - ;; - encore | umax | mmax) - basic_machine=ns32k-encore - ;; - es1800 | OSE68k | ose68k | ose | OSE) - basic_machine=m68k-ericsson - os=-ose - ;; - fx2800) - basic_machine=i860-alliant - ;; - genix) - basic_machine=ns32k-ns - ;; - gmicro) - basic_machine=tron-gmicro - os=-sysv - ;; - go32) - basic_machine=i386-pc - os=-go32 - ;; - h3050r* | hiux*) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - h8300hms) - basic_machine=h8300-hitachi - os=-hms - ;; - h8300xray) - basic_machine=h8300-hitachi - os=-xray - ;; - h8500hms) - basic_machine=h8500-hitachi - os=-hms - ;; - harris) - basic_machine=m88k-harris - os=-sysv3 - ;; - hp300-*) - basic_machine=m68k-hp - ;; - hp300bsd) - basic_machine=m68k-hp - os=-bsd - ;; - hp300hpux) - basic_machine=m68k-hp - os=-hpux - ;; - hp3k9[0-9][0-9] | hp9[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hp9k2[0-9][0-9] | hp9k31[0-9]) - basic_machine=m68000-hp - ;; - hp9k3[2-9][0-9]) - basic_machine=m68k-hp - ;; - hp9k6[0-9][0-9] | hp6[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hp9k7[0-79][0-9] | hp7[0-79][0-9]) - basic_machine=hppa1.1-hp - ;; - hp9k78[0-9] | hp78[0-9]) - # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp - ;; - hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) - # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][13679] | hp8[0-9][13679]) - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][0-9] | hp8[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hppa-next) - os=-nextstep3 - ;; - hppaosf) - basic_machine=hppa1.1-hp - os=-osf - ;; - hppro) - basic_machine=hppa1.1-hp - os=-proelf - ;; - i370-ibm* | ibm*) - basic_machine=i370-ibm - ;; - i*86v32) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv32 - ;; - i*86v4*) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv4 - ;; - i*86v) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv - ;; - i*86sol2) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-solaris2 - ;; - i386mach) - basic_machine=i386-mach - os=-mach - ;; - i386-vsta | vsta) - basic_machine=i386-unknown - os=-vsta - ;; - iris | iris4d) - basic_machine=mips-sgi - case $os in - -irix*) - ;; - *) - os=-irix4 - ;; - esac - ;; - isi68 | isi) - basic_machine=m68k-isi - os=-sysv - ;; - leon-*|leon[3-9]-*) - basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'` - ;; - m68knommu) - basic_machine=m68k-unknown - os=-linux - ;; - m68knommu-*) - basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` - os=-linux - ;; - m88k-omron*) - basic_machine=m88k-omron - ;; - magnum | m3230) - basic_machine=mips-mips - os=-sysv - ;; - merlin) - basic_machine=ns32k-utek - os=-sysv - ;; - microblaze*) - basic_machine=microblaze-xilinx - ;; - mingw64) - basic_machine=x86_64-pc - os=-mingw64 - ;; - mingw32) - basic_machine=i686-pc - os=-mingw32 - ;; - mingw32ce) - basic_machine=arm-unknown - os=-mingw32ce - ;; - miniframe) - basic_machine=m68000-convergent - ;; - *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) - basic_machine=m68k-atari - os=-mint - ;; - mips3*-*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` - ;; - mips3*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown - ;; - monitor) - basic_machine=m68k-rom68k - os=-coff - ;; - morphos) - basic_machine=powerpc-unknown - os=-morphos - ;; - moxiebox) - basic_machine=moxie-unknown - os=-moxiebox - ;; - msdos) - basic_machine=i386-pc - os=-msdos - ;; - ms1-*) - basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` - ;; - msys) - basic_machine=i686-pc - os=-msys - ;; - mvs) - basic_machine=i370-ibm - os=-mvs - ;; - nacl) - basic_machine=le32-unknown - os=-nacl - ;; - ncr3000) - basic_machine=i486-ncr - os=-sysv4 - ;; - netbsd386) - basic_machine=i386-unknown - os=-netbsd - ;; - netwinder) - basic_machine=armv4l-rebel - os=-linux - ;; - news | news700 | news800 | news900) - basic_machine=m68k-sony - os=-newsos - ;; - news1000) - basic_machine=m68030-sony - os=-newsos - ;; - news-3600 | risc-news) - basic_machine=mips-sony - os=-newsos - ;; - necv70) - basic_machine=v70-nec - os=-sysv - ;; - next | m*-next ) - basic_machine=m68k-next - case $os in - -nextstep* ) - ;; - -ns2*) - os=-nextstep2 - ;; - *) - os=-nextstep3 - ;; - esac - ;; - nh3000) - basic_machine=m68k-harris - os=-cxux - ;; - nh[45]000) - basic_machine=m88k-harris - os=-cxux - ;; - nindy960) - basic_machine=i960-intel - os=-nindy - ;; - mon960) - basic_machine=i960-intel - os=-mon960 - ;; - nonstopux) - basic_machine=mips-compaq - os=-nonstopux - ;; - np1) - basic_machine=np1-gould - ;; - neo-tandem) - basic_machine=neo-tandem - ;; - nse-tandem) - basic_machine=nse-tandem - ;; - nsr-tandem) - basic_machine=nsr-tandem - ;; - op50n-* | op60c-*) - basic_machine=hppa1.1-oki - os=-proelf - ;; - openrisc | openrisc-*) - basic_machine=or32-unknown - ;; - os400) - basic_machine=powerpc-ibm - os=-os400 - ;; - OSE68000 | ose68000) - basic_machine=m68000-ericsson - os=-ose - ;; - os68k) - basic_machine=m68k-none - os=-os68k - ;; - pa-hitachi) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - paragon) - basic_machine=i860-intel - os=-osf - ;; - parisc) - basic_machine=hppa-unknown - os=-linux - ;; - parisc-*) - basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` - os=-linux - ;; - pbd) - basic_machine=sparc-tti - ;; - pbb) - basic_machine=m68k-tti - ;; - pc532 | pc532-*) - basic_machine=ns32k-pc532 - ;; - pc98) - basic_machine=i386-pc - ;; - pc98-*) - basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentium | p5 | k5 | k6 | nexgen | viac3) - basic_machine=i586-pc - ;; - pentiumpro | p6 | 6x86 | athlon | athlon_*) - basic_machine=i686-pc - ;; - pentiumii | pentium2 | pentiumiii | pentium3) - basic_machine=i686-pc - ;; - pentium4) - basic_machine=i786-pc - ;; - pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) - basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumpro-* | p6-* | 6x86-* | athlon-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentium4-*) - basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pn) - basic_machine=pn-gould - ;; - power) basic_machine=power-ibm - ;; - ppc | ppcbe) basic_machine=powerpc-unknown - ;; - ppc-* | ppcbe-*) - basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppcle | powerpclittle) - basic_machine=powerpcle-unknown - ;; - ppcle-* | powerpclittle-*) - basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppc64) basic_machine=powerpc64-unknown - ;; - ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppc64le | powerpc64little) - basic_machine=powerpc64le-unknown - ;; - ppc64le-* | powerpc64little-*) - basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ps2) - basic_machine=i386-ibm - ;; - pw32) - basic_machine=i586-unknown - os=-pw32 - ;; - rdos | rdos64) - basic_machine=x86_64-pc - os=-rdos - ;; - rdos32) - basic_machine=i386-pc - os=-rdos - ;; - rom68k) - basic_machine=m68k-rom68k - os=-coff - ;; - rm[46]00) - basic_machine=mips-siemens - ;; - rtpc | rtpc-*) - basic_machine=romp-ibm - ;; - s390 | s390-*) - basic_machine=s390-ibm - ;; - s390x | s390x-*) - basic_machine=s390x-ibm - ;; - sa29200) - basic_machine=a29k-amd - os=-udi - ;; - sb1) - basic_machine=mipsisa64sb1-unknown - ;; - sb1el) - basic_machine=mipsisa64sb1el-unknown - ;; - sde) - basic_machine=mipsisa32-sde - os=-elf - ;; - sei) - basic_machine=mips-sei - os=-seiux - ;; - sequent) - basic_machine=i386-sequent - ;; - sh) - basic_machine=sh-hitachi - os=-hms - ;; - sh5el) - basic_machine=sh5le-unknown - ;; - sh64) - basic_machine=sh64-unknown - ;; - sparclite-wrs | simso-wrs) - basic_machine=sparclite-wrs - os=-vxworks - ;; - sps7) - basic_machine=m68k-bull - os=-sysv2 - ;; - spur) - basic_machine=spur-unknown - ;; - st2000) - basic_machine=m68k-tandem - ;; - stratus) - basic_machine=i860-stratus - os=-sysv4 - ;; - strongarm-* | thumb-*) - basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - sun2) - basic_machine=m68000-sun - ;; - sun2os3) - basic_machine=m68000-sun - os=-sunos3 - ;; - sun2os4) - basic_machine=m68000-sun - os=-sunos4 - ;; - sun3os3) - basic_machine=m68k-sun - os=-sunos3 - ;; - sun3os4) - basic_machine=m68k-sun - os=-sunos4 - ;; - sun4os3) - basic_machine=sparc-sun - os=-sunos3 - ;; - sun4os4) - basic_machine=sparc-sun - os=-sunos4 - ;; - sun4sol2) - basic_machine=sparc-sun - os=-solaris2 - ;; - sun3 | sun3-*) - basic_machine=m68k-sun - ;; - sun4) - basic_machine=sparc-sun - ;; - sun386 | sun386i | roadrunner) - basic_machine=i386-sun - ;; - sv1) - basic_machine=sv1-cray - os=-unicos - ;; - symmetry) - basic_machine=i386-sequent - os=-dynix - ;; - t3e) - basic_machine=alphaev5-cray - os=-unicos - ;; - t90) - basic_machine=t90-cray - os=-unicos - ;; - tile*) - basic_machine=$basic_machine-unknown - os=-linux-gnu - ;; - tx39) - basic_machine=mipstx39-unknown - ;; - tx39el) - basic_machine=mipstx39el-unknown - ;; - toad1) - basic_machine=pdp10-xkl - os=-tops20 - ;; - tower | tower-32) - basic_machine=m68k-ncr - ;; - tpf) - basic_machine=s390x-ibm - os=-tpf - ;; - udi29k) - basic_machine=a29k-amd - os=-udi - ;; - ultra3) - basic_machine=a29k-nyu - os=-sym1 - ;; - v810 | necv810) - basic_machine=v810-nec - os=-none - ;; - vaxv) - basic_machine=vax-dec - os=-sysv - ;; - vms) - basic_machine=vax-dec - os=-vms - ;; - vpp*|vx|vx-*) - basic_machine=f301-fujitsu - ;; - vxworks960) - basic_machine=i960-wrs - os=-vxworks - ;; - vxworks68) - basic_machine=m68k-wrs - os=-vxworks - ;; - vxworks29k) - basic_machine=a29k-wrs - os=-vxworks - ;; - w65*) - basic_machine=w65-wdc - os=-none - ;; - w89k-*) - basic_machine=hppa1.1-winbond - os=-proelf - ;; - xbox) - basic_machine=i686-pc - os=-mingw32 - ;; - xps | xps100) - basic_machine=xps100-honeywell - ;; - xscale-* | xscalee[bl]-*) - basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` - ;; - ymp) - basic_machine=ymp-cray - os=-unicos - ;; - z8k-*-coff) - basic_machine=z8k-unknown - os=-sim - ;; - z80-*-coff) - basic_machine=z80-unknown - os=-sim - ;; - none) - basic_machine=none-none - os=-none - ;; - -# Here we handle the default manufacturer of certain CPU types. It is in -# some cases the only manufacturer, in others, it is the most popular. - w89k) - basic_machine=hppa1.1-winbond - ;; - op50n) - basic_machine=hppa1.1-oki - ;; - op60c) - basic_machine=hppa1.1-oki - ;; - romp) - basic_machine=romp-ibm - ;; - mmix) - basic_machine=mmix-knuth - ;; - rs6000) - basic_machine=rs6000-ibm - ;; - vax) - basic_machine=vax-dec - ;; - pdp10) - # there are many clones, so DEC is not a safe bet - basic_machine=pdp10-unknown - ;; - pdp11) - basic_machine=pdp11-dec - ;; - we32k) - basic_machine=we32k-att - ;; - sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) - basic_machine=sh-unknown - ;; - sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) - basic_machine=sparc-sun - ;; - cydra) - basic_machine=cydra-cydrome - ;; - orion) - basic_machine=orion-highlevel - ;; - orion105) - basic_machine=clipper-highlevel - ;; - mac | mpw | mac-mpw) - basic_machine=m68k-apple - ;; - pmac | pmac-mpw) - basic_machine=powerpc-apple - ;; - *-unknown) - # Make sure to match an already-canonicalized machine name. - ;; - *) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; -esac - -# Here we canonicalize certain aliases for manufacturers. -case $basic_machine in - *-digital*) - basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` - ;; - *-commodore*) - basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` - ;; - *) - ;; -esac - -# Decode manufacturer-specific aliases for certain operating systems. - -if [ x"$os" != x"" ] -then -case $os in - # First match some system type aliases - # that might get confused with valid system types. - # -solaris* is a basic system type, with this one exception. - -auroraux) - os=-auroraux - ;; - -solaris1 | -solaris1.*) - os=`echo $os | sed -e 's|solaris1|sunos4|'` - ;; - -solaris) - os=-solaris2 - ;; - -svr4*) - os=-sysv4 - ;; - -unixware*) - os=-sysv4.2uw - ;; - -gnu/linux*) - os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` - ;; - # First accept the basic system types. - # The portable systems comes first. - # Each alternative MUST END IN A *, to match a version number. - # -sysv* is not here because it comes later, after sysvr4. - -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ - | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ - | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ - | -sym* | -kopensolaris* | -plan9* \ - | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ - | -aos* | -aros* | -cloudabi* | -sortix* \ - | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ - | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ - | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ - | -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \ - | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ - | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ - | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ - | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ - | -chorusos* | -chorusrdb* | -cegcc* \ - | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ - | -linux-newlib* | -linux-musl* | -linux-uclibc* \ - | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ - | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ - | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ - | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ - | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ - | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ - | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ - | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \ - | -onefs* | -tirtos* | -phoenix*) - # Remember, each alternative MUST END IN *, to match a version number. - ;; - -qnx*) - case $basic_machine in - x86-* | i*86-*) - ;; - *) - os=-nto$os - ;; - esac - ;; - -nto-qnx*) - ;; - -nto*) - os=`echo $os | sed -e 's|nto|nto-qnx|'` - ;; - -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ - | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ - | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) - ;; - -mac*) - os=`echo $os | sed -e 's|mac|macos|'` - ;; - -linux-dietlibc) - os=-linux-dietlibc - ;; - -linux*) - os=`echo $os | sed -e 's|linux|linux-gnu|'` - ;; - -sunos5*) - os=`echo $os | sed -e 's|sunos5|solaris2|'` - ;; - -sunos6*) - os=`echo $os | sed -e 's|sunos6|solaris3|'` - ;; - -opened*) - os=-openedition - ;; - -os400*) - os=-os400 - ;; - -wince*) - os=-wince - ;; - -osfrose*) - os=-osfrose - ;; - -osf*) - os=-osf - ;; - -utek*) - os=-bsd - ;; - -dynix*) - os=-bsd - ;; - -acis*) - os=-aos - ;; - -atheos*) - os=-atheos - ;; - -syllable*) - os=-syllable - ;; - -386bsd) - os=-bsd - ;; - -ctix* | -uts*) - os=-sysv - ;; - -nova*) - os=-rtmk-nova - ;; - -ns2 ) - os=-nextstep2 - ;; - -nsk*) - os=-nsk - ;; - # Preserve the version number of sinix5. - -sinix5.*) - os=`echo $os | sed -e 's|sinix|sysv|'` - ;; - -sinix*) - os=-sysv4 - ;; - -tpf*) - os=-tpf - ;; - -triton*) - os=-sysv3 - ;; - -oss*) - os=-sysv3 - ;; - -svr4) - os=-sysv4 - ;; - -svr3) - os=-sysv3 - ;; - -sysvr4) - os=-sysv4 - ;; - # This must come after -sysvr4. - -sysv*) - ;; - -ose*) - os=-ose - ;; - -es1800*) - os=-ose - ;; - -xenix) - os=-xenix - ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) - os=-mint - ;; - -aros*) - os=-aros - ;; - -zvmoe) - os=-zvmoe - ;; - -dicos*) - os=-dicos - ;; - -nacl*) - ;; - -ios) - ;; - -none) - ;; - *) - # Get rid of the `-' at the beginning of $os. - os=`echo $os | sed 's/[^-]*-//'` - echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 - exit 1 - ;; -esac -else - -# Here we handle the default operating systems that come with various machines. -# The value should be what the vendor currently ships out the door with their -# machine or put another way, the most popular os provided with the machine. - -# Note that if you're going to try to match "-MANUFACTURER" here (say, -# "-sun"), then you have to tell the case statement up towards the top -# that MANUFACTURER isn't an operating system. Otherwise, code above -# will signal an error saying that MANUFACTURER isn't an operating -# system, and we'll never get to this point. - -case $basic_machine in - score-*) - os=-elf - ;; - spu-*) - os=-elf - ;; - *-acorn) - os=-riscix1.2 - ;; - arm*-rebel) - os=-linux - ;; - arm*-semi) - os=-aout - ;; - c4x-* | tic4x-*) - os=-coff - ;; - c8051-*) - os=-elf - ;; - hexagon-*) - os=-elf - ;; - tic54x-*) - os=-coff - ;; - tic55x-*) - os=-coff - ;; - tic6x-*) - os=-coff - ;; - # This must come before the *-dec entry. - pdp10-*) - os=-tops20 - ;; - pdp11-*) - os=-none - ;; - *-dec | vax-*) - os=-ultrix4.2 - ;; - m68*-apollo) - os=-domain - ;; - i386-sun) - os=-sunos4.0.2 - ;; - m68000-sun) - os=-sunos3 - ;; - m68*-cisco) - os=-aout - ;; - mep-*) - os=-elf - ;; - mips*-cisco) - os=-elf - ;; - mips*-*) - os=-elf - ;; - or32-*) - os=-coff - ;; - *-tti) # must be before sparc entry or we get the wrong os. - os=-sysv3 - ;; - sparc-* | *-sun) - os=-sunos4.1.1 - ;; - *-be) - os=-beos - ;; - *-haiku) - os=-haiku - ;; - *-ibm) - os=-aix - ;; - *-knuth) - os=-mmixware - ;; - *-wec) - os=-proelf - ;; - *-winbond) - os=-proelf - ;; - *-oki) - os=-proelf - ;; - *-hp) - os=-hpux - ;; - *-hitachi) - os=-hiux - ;; - i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) - os=-sysv - ;; - *-cbm) - os=-amigaos - ;; - *-dg) - os=-dgux - ;; - *-dolphin) - os=-sysv3 - ;; - m68k-ccur) - os=-rtu - ;; - m88k-omron*) - os=-luna - ;; - *-next ) - os=-nextstep - ;; - *-sequent) - os=-ptx - ;; - *-crds) - os=-unos - ;; - *-ns) - os=-genix - ;; - i370-*) - os=-mvs - ;; - *-next) - os=-nextstep3 - ;; - *-gould) - os=-sysv - ;; - *-highlevel) - os=-bsd - ;; - *-encore) - os=-bsd - ;; - *-sgi) - os=-irix - ;; - *-siemens) - os=-sysv4 - ;; - *-masscomp) - os=-rtu - ;; - f30[01]-fujitsu | f700-fujitsu) - os=-uxpv - ;; - *-rom68k) - os=-coff - ;; - *-*bug) - os=-coff - ;; - *-apple) - os=-macos - ;; - *-atari*) - os=-mint - ;; - *) - os=-none - ;; -esac -fi - -# Here we handle the case where we know the os, and the CPU type, but not the -# manufacturer. We pick the logical manufacturer. -vendor=unknown -case $basic_machine in - *-unknown) - case $os in - -riscix*) - vendor=acorn - ;; - -sunos*) - vendor=sun - ;; - -cnk*|-aix*) - vendor=ibm - ;; - -beos*) - vendor=be - ;; - -hpux*) - vendor=hp - ;; - -mpeix*) - vendor=hp - ;; - -hiux*) - vendor=hitachi - ;; - -unos*) - vendor=crds - ;; - -dgux*) - vendor=dg - ;; - -luna*) - vendor=omron - ;; - -genix*) - vendor=ns - ;; - -mvs* | -opened*) - vendor=ibm - ;; - -os400*) - vendor=ibm - ;; - -ptx*) - vendor=sequent - ;; - -tpf*) - vendor=ibm - ;; - -vxsim* | -vxworks* | -windiss*) - vendor=wrs - ;; - -aux*) - vendor=apple - ;; - -hms*) - vendor=hitachi - ;; - -mpw* | -macos*) - vendor=apple - ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) - vendor=atari - ;; - -vos*) - vendor=stratus - ;; - esac - basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` - ;; -esac - -echo $basic_machine$os -exit - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "timestamp='" -# time-stamp-format: "%:y-%02m-%02d" -# time-stamp-end: "'" -# End: diff --git a/vendor/onig/configure b/vendor/onig/configure deleted file mode 100755 index 31cc854..0000000 --- a/vendor/onig/configure +++ /dev/null @@ -1,15207 +0,0 @@ -#! /bin/sh -# Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for onigmo 6.1.2. -# -# -# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. -# -# -# This configure script is free software; the Free Software Foundation -# gives unlimited permission to copy, distribute and modify it. -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi - - -as_nl=' -' -export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -as_myself= -case $0 in #(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break - done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -# Use a proper internal environment variable to ensure we don't fall - # into an infinite loop, continuously re-executing ourselves. - if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then - _as_can_reexec=no; export _as_can_reexec; - # We cannot yet assume a decent shell, so we have to provide a -# neutralization value for shells without unset; and this also -# works around shells that cannot unset nonexistent variables. -# Preserve -v and -x to the replacement shell. -BASH_ENV=/dev/null -ENV=/dev/null -(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV -case $- in # (((( - *v*x* | *x*v* ) as_opts=-vx ;; - *v* ) as_opts=-v ;; - *x* ) as_opts=-x ;; - * ) as_opts= ;; -esac -exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} -# Admittedly, this is quite paranoid, since all the known shells bail -# out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 -as_fn_exit 255 - fi - # We don't want this to propagate to other subprocesses. - { _as_can_reexec=; unset _as_can_reexec;} -if test "x$CONFIG_SHELL" = x; then - as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which - # is contrary to our usage. Disable this feature. - alias -g '\${1+\"\$@\"}'='\"\$@\"' - setopt NO_GLOB_SUBST -else - case \`(set -o) 2>/dev/null\` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi -" - as_required="as_fn_return () { (exit \$1); } -as_fn_success () { as_fn_return 0; } -as_fn_failure () { as_fn_return 1; } -as_fn_ret_success () { return 0; } -as_fn_ret_failure () { return 1; } - -exitcode=0 -as_fn_success || { exitcode=1; echo as_fn_success failed.; } -as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } -as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } -as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } -if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : - -else - exitcode=1; echo positional parameters were not saved. -fi -test x\$exitcode = x0 || exit 1 -test -x / || exit 1" - as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO - as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO - eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && - test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 - - test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( - ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' - ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO - ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO - PATH=/empty FPATH=/empty; export PATH FPATH - test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ - || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1 -test \$(( 1 + 1 )) = 2 || exit 1" - if (eval "$as_required") 2>/dev/null; then : - as_have_required=yes -else - as_have_required=no -fi - if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : - -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_found=false -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - as_found=: - case $as_dir in #( - /*) - for as_base in sh bash ksh sh5; do - # Try only shells that exist, to save several forks. - as_shell=$as_dir/$as_base - if { test -f "$as_shell" || test -f "$as_shell.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : - CONFIG_SHELL=$as_shell as_have_required=yes - if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : - break 2 -fi -fi - done;; - esac - as_found=false -done -$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : - CONFIG_SHELL=$SHELL as_have_required=yes -fi; } -IFS=$as_save_IFS - - - if test "x$CONFIG_SHELL" != x; then : - export CONFIG_SHELL - # We cannot yet assume a decent shell, so we have to provide a -# neutralization value for shells without unset; and this also -# works around shells that cannot unset nonexistent variables. -# Preserve -v and -x to the replacement shell. -BASH_ENV=/dev/null -ENV=/dev/null -(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV -case $- in # (((( - *v*x* | *x*v* ) as_opts=-vx ;; - *v* ) as_opts=-v ;; - *x* ) as_opts=-x ;; - * ) as_opts= ;; -esac -exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} -# Admittedly, this is quite paranoid, since all the known shells bail -# out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 -exit 255 -fi - - if test x$as_have_required = xno; then : - $as_echo "$0: This script requires a shell more modern than all" - $as_echo "$0: the shells that I found on your system." - if test x${ZSH_VERSION+set} = xset ; then - $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" - $as_echo "$0: be upgraded to zsh 4.3.4 or later." - else - $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, -$0: including any error possibly output before this -$0: message. Then install a modern shell, or manually run -$0: the script under such a shell if you do have one." - fi - exit 1 -fi -fi -fi -SHELL=${CONFIG_SHELL-/bin/sh} -export SHELL -# Unset more variables known to interfere with behavior of common tools. -CLICOLOR_FORCE= GREP_OPTIONS= -unset CLICOLOR_FORCE GREP_OPTIONS - -## --------------------- ## -## M4sh Shell Functions. ## -## --------------------- ## -# as_fn_unset VAR -# --------------- -# Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit - -# as_fn_mkdir_p -# ------------- -# Create "$as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - -} # as_fn_mkdir_p - -# as_fn_executable_p FILE -# ----------------------- -# Test if FILE is an executable regular file. -as_fn_executable_p () -{ - test -f "$1" && test -x "$1" -} # as_fn_executable_p -# as_fn_append VAR VALUE -# ---------------------- -# Append the text in VALUE to the end of the definition contained in VAR. Take -# advantage of any shell optimizations that allow amortized linear growth over -# repeated appends, instead of the typical quadratic growth present in naive -# implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -# as_fn_arith ARG... -# ------------------ -# Perform arithmetic evaluation on the ARGs, and store the result in the -# global $as_val. Take advantage of shells that can avoid forks. The arguments -# must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - - -# as_fn_error STATUS ERROR [LINENO LOG_FD] -# ---------------------------------------- -# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - $as_echo "$as_me: error: $2" >&2 - as_fn_exit $as_status -} # as_fn_error - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - - - as_lineno_1=$LINENO as_lineno_1a=$LINENO - as_lineno_2=$LINENO as_lineno_2a=$LINENO - eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && - test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { - # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) - sed -n ' - p - /[$]LINENO/= - ' <$as_myself | - sed ' - s/[$]LINENO.*/&-/ - t lineno - b - :lineno - N - :loop - s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ - t loop - s/-\n.*// - ' >$as_me.lineno && - chmod +x "$as_me.lineno" || - { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } - - # If we had to re-execute with $CONFIG_SHELL, we're ensured to have - # already done that, so ensure we don't try to do so again and fall - # in an infinite loop. This has already happened in practice. - _as_can_reexec=no; export _as_can_reexec - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensitive to this). - . "./$as_me.lineno" - # Exit status is that of the last command. - exit -} - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -pR'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -pR' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -pR' - fi -else - as_ln_s='cp -pR' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -as_test_x='test -x' -as_executable_p=as_fn_executable_p - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - -SHELL=${CONFIG_SHELL-/bin/sh} - - -test -n "$DJDIR" || exec 7<&0 &1 - -# Name of the host. -# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, -# so uname gets run too. -ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` - -# -# Initializations. -# -ac_default_prefix=/usr/local -ac_clean_files= -ac_config_libobj_dir=. -LIBOBJS= -cross_compiling=no -subdirs= -MFLAGS= -MAKEFLAGS= - -# Identity of this package. -PACKAGE_NAME='onigmo' -PACKAGE_TARNAME='onigmo' -PACKAGE_VERSION='6.1.2' -PACKAGE_STRING='onigmo 6.1.2' -PACKAGE_BUGREPORT='' -PACKAGE_URL='' - -# Factoring default headers for most tests. -ac_includes_default="\ -#include -#ifdef HAVE_SYS_TYPES_H -# include -#endif -#ifdef HAVE_SYS_STAT_H -# include -#endif -#ifdef STDC_HEADERS -# include -# include -#else -# ifdef HAVE_STDLIB_H -# include -# endif -#endif -#ifdef HAVE_STRING_H -# if !defined STDC_HEADERS && defined HAVE_MEMORY_H -# include -# endif -# include -#endif -#ifdef HAVE_STRINGS_H -# include -#endif -#ifdef HAVE_INTTYPES_H -# include -#endif -#ifdef HAVE_STDINT_H -# include -#endif -#ifdef HAVE_UNISTD_H -# include -#endif" - -ac_subst_vars='am__EXEEXT_FALSE -am__EXEEXT_TRUE -LTLIBOBJS -LIBOBJS -ALLOCA -python_prog -LTVERSION -CPP -LT_SYS_LIBRARY_PATH -OTOOL64 -OTOOL -LIPO -NMEDIT -DSYMUTIL -MANIFEST_TOOL -RANLIB -ac_ct_AR -AR -DLLTOOL -OBJDUMP -LN_S -NM -ac_ct_DUMPBIN -DUMPBIN -LD -FGREP -EGREP -GREP -SED -host_os -host_vendor -host_cpu -host -build_os -build_vendor -build_cpu -build -LIBTOOL -am__fastdepCC_FALSE -am__fastdepCC_TRUE -CCDEPMODE -am__nodep -AMDEPBACKSLASH -AMDEP_FALSE -AMDEP_TRUE -am__quote -am__include -DEPDIR -OBJEXT -EXEEXT -ac_ct_CC -CPPFLAGS -LDFLAGS -CFLAGS -CC -STATISTICS -RUBYDIR -am__untar -am__tar -AMTAR -am__leading_dot -SET_MAKE -AWK -mkdir_p -MKDIR_P -INSTALL_STRIP_PROGRAM -STRIP -install_sh -MAKEINFO -AUTOHEADER -AUTOMAKE -AUTOCONF -ACLOCAL -VERSION -PACKAGE -CYGPATH_W -am__isrc -INSTALL_DATA -INSTALL_SCRIPT -INSTALL_PROGRAM -target_alias -host_alias -build_alias -LIBS -ECHO_T -ECHO_N -ECHO_C -DEFS -mandir -localedir -libdir -psdir -pdfdir -dvidir -htmldir -infodir -docdir -oldincludedir -includedir -localstatedir -sharedstatedir -sysconfdir -datadir -datarootdir -libexecdir -sbindir -bindir -program_transform_name -prefix -exec_prefix -PACKAGE_URL -PACKAGE_BUGREPORT -PACKAGE_STRING -PACKAGE_VERSION -PACKAGE_TARNAME -PACKAGE_NAME -PATH_SEPARATOR -SHELL' -ac_subst_files='' -ac_user_opts=' -enable_option_checking -with_rubydir -with_statistics -enable_combination_explosion_check -enable_crnl_as_line_terminator -enable_dependency_tracking -enable_shared -enable_static -with_pic -enable_fast_install -with_aix_soname -with_gnu_ld -with_sysroot -enable_libtool_lock -' - ac_precious_vars='build_alias -host_alias -target_alias -CC -CFLAGS -LDFLAGS -LIBS -CPPFLAGS -LT_SYS_LIBRARY_PATH -CPP' - - -# Initialize some variables set by options. -ac_init_help= -ac_init_version=false -ac_unrecognized_opts= -ac_unrecognized_sep= -# The variables have the same names as the options, with -# dashes changed to underlines. -cache_file=/dev/null -exec_prefix=NONE -no_create= -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -verbose= -x_includes=NONE -x_libraries=NONE - -# Installation directory options. -# These are left unexpanded so users can "make install exec_prefix=/foo" -# and all the variables that are supposed to be based on exec_prefix -# by default will actually change. -# Use braces instead of parens because sh, perl, etc. also accept them. -# (The list follows the same order as the GNU Coding Standards.) -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datarootdir='${prefix}/share' -datadir='${datarootdir}' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -includedir='${prefix}/include' -oldincludedir='/usr/include' -docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' -infodir='${datarootdir}/info' -htmldir='${docdir}' -dvidir='${docdir}' -pdfdir='${docdir}' -psdir='${docdir}' -libdir='${exec_prefix}/lib' -localedir='${datarootdir}/locale' -mandir='${datarootdir}/man' - -ac_prev= -ac_dashdash= -for ac_option -do - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval $ac_prev=\$ac_option - ac_prev= - continue - fi - - case $ac_option in - *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; - *=) ac_optarg= ;; - *) ac_optarg=yes ;; - esac - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case $ac_dashdash$ac_option in - --) - ac_dashdash=yes ;; - - -bindir | --bindir | --bindi | --bind | --bin | --bi) - ac_prev=bindir ;; - -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir=$ac_optarg ;; - - -build | --build | --buil | --bui | --bu) - ac_prev=build_alias ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build_alias=$ac_optarg ;; - - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file=$ac_optarg ;; - - --config-cache | -C) - cache_file=config.cache ;; - - -datadir | --datadir | --datadi | --datad) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=*) - datadir=$ac_optarg ;; - - -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ - | --dataroo | --dataro | --datar) - ac_prev=datarootdir ;; - -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ - | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) - datarootdir=$ac_optarg ;; - - -disable-* | --disable-*) - ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=no ;; - - -docdir | --docdir | --docdi | --doc | --do) - ac_prev=docdir ;; - -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) - docdir=$ac_optarg ;; - - -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) - ac_prev=dvidir ;; - -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) - dvidir=$ac_optarg ;; - - -enable-* | --enable-*) - ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=\$ac_optarg ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix=$ac_optarg ;; - - -gas | --gas | --ga | --g) - # Obsolete; use --with-gas. - with_gas=yes ;; - - -help | --help | --hel | --he | -h) - ac_init_help=long ;; - -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) - ac_init_help=recursive ;; - -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) - ac_init_help=short ;; - - -host | --host | --hos | --ho) - ac_prev=host_alias ;; - -host=* | --host=* | --hos=* | --ho=*) - host_alias=$ac_optarg ;; - - -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) - ac_prev=htmldir ;; - -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ - | --ht=*) - htmldir=$ac_optarg ;; - - -includedir | --includedir | --includedi | --included | --include \ - | --includ | --inclu | --incl | --inc) - ac_prev=includedir ;; - -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ - | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir=$ac_optarg ;; - - -infodir | --infodir | --infodi | --infod | --info | --inf) - ac_prev=infodir ;; - -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir=$ac_optarg ;; - - -libdir | --libdir | --libdi | --libd) - ac_prev=libdir ;; - -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir=$ac_optarg ;; - - -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ - | --libexe | --libex | --libe) - ac_prev=libexecdir ;; - -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ - | --libexe=* | --libex=* | --libe=*) - libexecdir=$ac_optarg ;; - - -localedir | --localedir | --localedi | --localed | --locale) - ac_prev=localedir ;; - -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) - localedir=$ac_optarg ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst | --locals) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) - localstatedir=$ac_optarg ;; - - -mandir | --mandir | --mandi | --mand | --man | --ma | --m) - ac_prev=mandir ;; - -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir=$ac_optarg ;; - - -nfp | --nfp | --nf) - # Obsolete; use --without-fp. - with_fp=no ;; - - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c | -n) - no_create=yes ;; - - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - no_recursion=yes ;; - - -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ - | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ - | --oldin | --oldi | --old | --ol | --o) - ac_prev=oldincludedir ;; - -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ - | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ - | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir=$ac_optarg ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix=$ac_optarg ;; - - -program-prefix | --program-prefix | --program-prefi | --program-pref \ - | --program-pre | --program-pr | --program-p) - ac_prev=program_prefix ;; - -program-prefix=* | --program-prefix=* | --program-prefi=* \ - | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix=$ac_optarg ;; - - -program-suffix | --program-suffix | --program-suffi | --program-suff \ - | --program-suf | --program-su | --program-s) - ac_prev=program_suffix ;; - -program-suffix=* | --program-suffix=* | --program-suffi=* \ - | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix=$ac_optarg ;; - - -program-transform-name | --program-transform-name \ - | --program-transform-nam | --program-transform-na \ - | --program-transform-n | --program-transform- \ - | --program-transform | --program-transfor \ - | --program-transfo | --program-transf \ - | --program-trans | --program-tran \ - | --progr-tra | --program-tr | --program-t) - ac_prev=program_transform_name ;; - -program-transform-name=* | --program-transform-name=* \ - | --program-transform-nam=* | --program-transform-na=* \ - | --program-transform-n=* | --program-transform-=* \ - | --program-transform=* | --program-transfor=* \ - | --program-transfo=* | --program-transf=* \ - | --program-trans=* | --program-tran=* \ - | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name=$ac_optarg ;; - - -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) - ac_prev=pdfdir ;; - -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) - pdfdir=$ac_optarg ;; - - -psdir | --psdir | --psdi | --psd | --ps) - ac_prev=psdir ;; - -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) - psdir=$ac_optarg ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) - ac_prev=sbindir ;; - -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ - | --sbi=* | --sb=*) - sbindir=$ac_optarg ;; - - -sharedstatedir | --sharedstatedir | --sharedstatedi \ - | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ - | --sharedst | --shareds | --shared | --share | --shar \ - | --sha | --sh) - ac_prev=sharedstatedir ;; - -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ - | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ - | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ - | --sha=* | --sh=*) - sharedstatedir=$ac_optarg ;; - - -site | --site | --sit) - ac_prev=site ;; - -site=* | --site=* | --sit=*) - site=$ac_optarg ;; - - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir=$ac_optarg ;; - - -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ - | --syscon | --sysco | --sysc | --sys | --sy) - ac_prev=sysconfdir ;; - -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ - | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir=$ac_optarg ;; - - -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target_alias ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target_alias=$ac_optarg ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers | -V) - ac_init_version=: ;; - - -with-* | --with-*) - ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=\$ac_optarg ;; - - -without-* | --without-*) - ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=no ;; - - --x) - # Obsolete; use --with-x. - with_x=yes ;; - - -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ - | --x-incl | --x-inc | --x-in | --x-i) - ac_prev=x_includes ;; - -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ - | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes=$ac_optarg ;; - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries=$ac_optarg ;; - - -*) as_fn_error $? "unrecognized option: \`$ac_option' -Try \`$0 --help' for more information" - ;; - - *=*) - ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` - # Reject names that are not valid shell variable names. - case $ac_envvar in #( - '' | [0-9]* | *[!_$as_cr_alnum]* ) - as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; - esac - eval $ac_envvar=\$ac_optarg - export $ac_envvar ;; - - *) - # FIXME: should be removed in autoconf 3.0. - $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 - expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 - : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" - ;; - - esac -done - -if test -n "$ac_prev"; then - ac_option=--`echo $ac_prev | sed 's/_/-/g'` - as_fn_error $? "missing argument to $ac_option" -fi - -if test -n "$ac_unrecognized_opts"; then - case $enable_option_checking in - no) ;; - fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; - *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; - esac -fi - -# Check all directory arguments for consistency. -for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ - datadir sysconfdir sharedstatedir localstatedir includedir \ - oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir -do - eval ac_val=\$$ac_var - # Remove trailing slashes. - case $ac_val in - */ ) - ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` - eval $ac_var=\$ac_val;; - esac - # Be sure to have absolute directory names. - case $ac_val in - [\\/$]* | ?:[\\/]* ) continue;; - NONE | '' ) case $ac_var in *prefix ) continue;; esac;; - esac - as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" -done - -# There might be people who depend on the old broken behavior: `$host' -# used to hold the argument of --host etc. -# FIXME: To remove some day. -build=$build_alias -host=$host_alias -target=$target_alias - -# FIXME: To remove some day. -if test "x$host_alias" != x; then - if test "x$build_alias" = x; then - cross_compiling=maybe - elif test "x$build_alias" != "x$host_alias"; then - cross_compiling=yes - fi -fi - -ac_tool_prefix= -test -n "$host_alias" && ac_tool_prefix=$host_alias- - -test "$silent" = yes && exec 6>/dev/null - - -ac_pwd=`pwd` && test -n "$ac_pwd" && -ac_ls_di=`ls -di .` && -ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || - as_fn_error $? "working directory cannot be determined" -test "X$ac_ls_di" = "X$ac_pwd_ls_di" || - as_fn_error $? "pwd does not report name of working directory" - - -# Find the source files, if location was not specified. -if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then the parent directory. - ac_confdir=`$as_dirname -- "$as_myself" || -$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_myself" : 'X\(//\)[^/]' \| \ - X"$as_myself" : 'X\(//\)$' \| \ - X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_myself" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - srcdir=$ac_confdir - if test ! -r "$srcdir/$ac_unique_file"; then - srcdir=.. - fi -else - ac_srcdir_defaulted=no -fi -if test ! -r "$srcdir/$ac_unique_file"; then - test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." - as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" -fi -ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" -ac_abs_confdir=`( - cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" - pwd)` -# When building in place, set srcdir=. -if test "$ac_abs_confdir" = "$ac_pwd"; then - srcdir=. -fi -# Remove unnecessary trailing slashes from srcdir. -# Double slashes in file names in object file debugging info -# mess up M-x gdb in Emacs. -case $srcdir in -*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; -esac -for ac_var in $ac_precious_vars; do - eval ac_env_${ac_var}_set=\${${ac_var}+set} - eval ac_env_${ac_var}_value=\$${ac_var} - eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} - eval ac_cv_env_${ac_var}_value=\$${ac_var} -done - -# -# Report the --help message. -# -if test "$ac_init_help" = "long"; then - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat <<_ACEOF -\`configure' configures onigmo 6.1.2 to adapt to many kinds of systems. - -Usage: $0 [OPTION]... [VAR=VALUE]... - -To assign environment variables (e.g., CC, CFLAGS...), specify them as -VAR=VALUE. See below for descriptions of some of the useful variables. - -Defaults for the options are specified in brackets. - -Configuration: - -h, --help display this help and exit - --help=short display options specific to this package - --help=recursive display the short help of all the included packages - -V, --version display version information and exit - -q, --quiet, --silent do not print \`checking ...' messages - --cache-file=FILE cache test results in FILE [disabled] - -C, --config-cache alias for \`--cache-file=config.cache' - -n, --no-create do not create output files - --srcdir=DIR find the sources in DIR [configure dir or \`..'] - -Installation directories: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [PREFIX] - -By default, \`make install' will install all the files in -\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify -an installation prefix other than \`$ac_default_prefix' using \`--prefix', -for instance \`--prefix=\$HOME'. - -For better control, use the options below. - -Fine tuning of the installation directories: - --bindir=DIR user executables [EPREFIX/bin] - --sbindir=DIR system admin executables [EPREFIX/sbin] - --libexecdir=DIR program executables [EPREFIX/libexec] - --sysconfdir=DIR read-only single-machine data [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] - --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --libdir=DIR object code libraries [EPREFIX/lib] - --includedir=DIR C header files [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc [/usr/include] - --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] - --datadir=DIR read-only architecture-independent data [DATAROOTDIR] - --infodir=DIR info documentation [DATAROOTDIR/info] - --localedir=DIR locale-dependent data [DATAROOTDIR/locale] - --mandir=DIR man documentation [DATAROOTDIR/man] - --docdir=DIR documentation root [DATAROOTDIR/doc/onigmo] - --htmldir=DIR html documentation [DOCDIR] - --dvidir=DIR dvi documentation [DOCDIR] - --pdfdir=DIR pdf documentation [DOCDIR] - --psdir=DIR ps documentation [DOCDIR] -_ACEOF - - cat <<\_ACEOF - -Program names: - --program-prefix=PREFIX prepend PREFIX to installed program names - --program-suffix=SUFFIX append SUFFIX to installed program names - --program-transform-name=PROGRAM run sed PROGRAM on installed program names - -System types: - --build=BUILD configure for building on BUILD [guessed] - --host=HOST cross-compile to build programs to run on HOST [BUILD] -_ACEOF -fi - -if test -n "$ac_init_help"; then - case $ac_init_help in - short | recursive ) echo "Configuration of onigmo 6.1.2:";; - esac - cat <<\_ACEOF - -Optional Features: - --disable-option-checking ignore unrecognized --enable/--with options - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --enable-combination-explosion-check enable combination explosion check - --enable-crnl-as-line-terminator enable CR+NL as line terminator - --disable-dependency-tracking speeds up one-time build - --enable-dependency-tracking do not reject slow dependency extractors - --enable-shared[=PKGS] build shared libraries [default=yes] - --enable-static[=PKGS] build static libraries [default=yes] - --enable-fast-install[=PKGS] - optimize for fast installation [default=yes] - --disable-libtool-lock avoid locking (might break parallel builds) - -Optional Packages: - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --with-rubydir=RUBYDIR specify value for RUBYDIR (default ..) - --with-statistics take matching time statistical data - --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use - both] - --with-aix-soname=aix|svr4|both - shared library versioning (aka "SONAME") variant to - provide on AIX, [default=aix]. - --with-gnu-ld assume the C compiler uses GNU ld [default=no] - --with-sysroot[=DIR] Search for dependent libraries within DIR (or the - compiler's sysroot if not specified). - -Some influential environment variables: - CC C compiler command - CFLAGS C compiler flags - LDFLAGS linker flags, e.g. -L if you have libraries in a - nonstandard directory - LIBS libraries to pass to the linker, e.g. -l - CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if - you have headers in a nonstandard directory - LT_SYS_LIBRARY_PATH - User-defined run-time library search path. - CPP C preprocessor - -Use these variables to override the choices made by `configure' or to help -it to find libraries and programs with nonstandard names/locations. - -Report bugs to the package provider. -_ACEOF -ac_status=$? -fi - -if test "$ac_init_help" = "recursive"; then - # If there are subdirs, report their specific --help. - for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d "$ac_dir" || - { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || - continue - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - cd "$ac_dir" || { ac_status=$?; continue; } - # Check for guested configure. - if test -f "$ac_srcdir/configure.gnu"; then - echo && - $SHELL "$ac_srcdir/configure.gnu" --help=recursive - elif test -f "$ac_srcdir/configure"; then - echo && - $SHELL "$ac_srcdir/configure" --help=recursive - else - $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi || ac_status=$? - cd "$ac_pwd" || { ac_status=$?; break; } - done -fi - -test -n "$ac_init_help" && exit $ac_status -if $ac_init_version; then - cat <<\_ACEOF -onigmo configure 6.1.2 -generated by GNU Autoconf 2.69 - -Copyright (C) 2012 Free Software Foundation, Inc. -This configure script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it. -_ACEOF - exit -fi - -## ------------------------ ## -## Autoconf initialization. ## -## ------------------------ ## - -# ac_fn_c_try_compile LINENO -# -------------------------- -# Try to compile conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext - if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_compile - -# ac_fn_c_try_link LINENO -# ----------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_link () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest$ac_exeext - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - test -x conftest$ac_exeext - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information - # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would - # interfere with the next link command; also delete a directory that is - # left behind by Apple's compiler. We do this before executing the actions. - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_link - -# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists and can be compiled using the include files in -# INCLUDES, setting the cache variable VAR accordingly. -ac_fn_c_check_header_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_header_compile - -# ac_fn_c_try_cpp LINENO -# ---------------------- -# Try to preprocess conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_cpp () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } > conftest.i && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_cpp - -# ac_fn_c_try_run LINENO -# ---------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes -# that executables *can* be run. -ac_fn_c_try_run () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then : - ac_retval=0 -else - $as_echo "$as_me: program exited with status $ac_status" >&5 - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=$ac_status -fi - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_run - -# ac_fn_c_check_func LINENO FUNC VAR -# ---------------------------------- -# Tests whether FUNC exists, setting the cache variable VAR accordingly -ac_fn_c_check_func () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -/* Define $2 to an innocuous variant, in case declares $2. - For example, HP-UX 11i declares gettimeofday. */ -#define $2 innocuous_$2 - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $2 (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $2 - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $2 (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$2 || defined __stub___$2 -choke me -#endif - -int -main () -{ -return $2 (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_func - -# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists, giving a warning if it cannot be compiled using -# the include files in INCLUDES and setting the cache variable VAR -# accordingly. -ac_fn_c_check_header_mongrel () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if eval \${$3+:} false; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -else - # Is the header compilable? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 -$as_echo_n "checking $2 usability... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_header_compiler=yes -else - ac_header_compiler=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 -$as_echo "$ac_header_compiler" >&6; } - -# Is the header present? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 -$as_echo_n "checking $2 presence... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <$2> -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - ac_header_preproc=yes -else - ac_header_preproc=no -fi -rm -f conftest.err conftest.i conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 -$as_echo "$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( - yes:no: ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 -$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} - ;; - no:yes:* ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 -$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 -$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 -$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 -$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} - ;; -esac - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - eval "$3=\$ac_header_compiler" -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_header_mongrel - -# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES -# -------------------------------------------- -# Tries to find the compile-time value of EXPR in a program that includes -# INCLUDES, setting VAR accordingly. Returns whether the value could be -# computed -ac_fn_c_compute_int () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if test "$cross_compiling" = yes; then - # Depending upon the size, compute the lo and hi bounds. -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -static int test_array [1 - 2 * !(($2) >= 0)]; -test_array [0] = 0; -return test_array [0]; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_lo=0 ac_mid=0 - while :; do - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -static int test_array [1 - 2 * !(($2) <= $ac_mid)]; -test_array [0] = 0; -return test_array [0]; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_hi=$ac_mid; break -else - as_fn_arith $ac_mid + 1 && ac_lo=$as_val - if test $ac_lo -le $ac_mid; then - ac_lo= ac_hi= - break - fi - as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - done -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -static int test_array [1 - 2 * !(($2) < 0)]; -test_array [0] = 0; -return test_array [0]; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_hi=-1 ac_mid=-1 - while :; do - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -static int test_array [1 - 2 * !(($2) >= $ac_mid)]; -test_array [0] = 0; -return test_array [0]; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_lo=$ac_mid; break -else - as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val - if test $ac_mid -le $ac_hi; then - ac_lo= ac_hi= - break - fi - as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - done -else - ac_lo= ac_hi= -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -# Binary search between lo and hi bounds. -while test "x$ac_lo" != "x$ac_hi"; do - as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -static int test_array [1 - 2 * !(($2) <= $ac_mid)]; -test_array [0] = 0; -return test_array [0]; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_hi=$ac_mid -else - as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -done -case $ac_lo in #(( -?*) eval "$3=\$ac_lo"; ac_retval=0 ;; -'') ac_retval=1 ;; -esac - else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -static long int longval () { return $2; } -static unsigned long int ulongval () { return $2; } -#include -#include -int -main () -{ - - FILE *f = fopen ("conftest.val", "w"); - if (! f) - return 1; - if (($2) < 0) - { - long int i = longval (); - if (i != ($2)) - return 1; - fprintf (f, "%ld", i); - } - else - { - unsigned long int i = ulongval (); - if (i != ($2)) - return 1; - fprintf (f, "%lu", i); - } - /* Do not output a trailing newline, as this causes \r\n confusion - on some platforms. */ - return ferror (f) || fclose (f) != 0; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - echo >>conftest.val; read $3 &5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - eval "$3=no" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -if (sizeof ($2)) - return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -if (sizeof (($2))) - return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -else - eval "$3=yes" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_type -cat >config.log <<_ACEOF -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. - -It was created by onigmo $as_me 6.1.2, which was -generated by GNU Autoconf 2.69. Invocation command line was - - $ $0 $@ - -_ACEOF -exec 5>>config.log -{ -cat <<_ASUNAME -## --------- ## -## Platform. ## -## --------- ## - -hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` - -/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` -/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` -/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` - -_ASUNAME - -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - $as_echo "PATH: $as_dir" - done -IFS=$as_save_IFS - -} >&5 - -cat >&5 <<_ACEOF - - -## ----------- ## -## Core tests. ## -## ----------- ## - -_ACEOF - - -# Keep a trace of the command line. -# Strip out --no-create and --no-recursion so they do not pile up. -# Strip out --silent because we don't want to record it for future runs. -# Also quote any args containing shell meta-characters. -# Make two passes to allow for proper duplicate-argument suppression. -ac_configure_args= -ac_configure_args0= -ac_configure_args1= -ac_must_keep_next=false -for ac_pass in 1 2 -do - for ac_arg - do - case $ac_arg in - -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - continue ;; - *\'*) - ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - case $ac_pass in - 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; - 2) - as_fn_append ac_configure_args1 " '$ac_arg'" - if test $ac_must_keep_next = true; then - ac_must_keep_next=false # Got value, back to normal. - else - case $ac_arg in - *=* | --config-cache | -C | -disable-* | --disable-* \ - | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ - | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ - | -with-* | --with-* | -without-* | --without-* | --x) - case "$ac_configure_args0 " in - "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; - esac - ;; - -* ) ac_must_keep_next=true ;; - esac - fi - as_fn_append ac_configure_args " '$ac_arg'" - ;; - esac - done -done -{ ac_configure_args0=; unset ac_configure_args0;} -{ ac_configure_args1=; unset ac_configure_args1;} - -# When interrupted or exit'd, cleanup temporary files, and complete -# config.log. We remove comments because anyway the quotes in there -# would cause problems or look ugly. -# WARNING: Use '\'' to represent an apostrophe within the trap. -# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. -trap 'exit_status=$? - # Save into config.log some information that might help in debugging. - { - echo - - $as_echo "## ---------------- ## -## Cache variables. ## -## ---------------- ##" - echo - # The following way of writing the cache mishandles newlines in values, -( - for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; - esac ;; - esac - done - (set) 2>&1 | - case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - sed -n \ - "s/'\''/'\''\\\\'\'''\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" - ;; #( - *) - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) - echo - - $as_echo "## ----------------- ## -## Output variables. ## -## ----------------- ##" - echo - for ac_var in $ac_subst_vars - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - $as_echo "$ac_var='\''$ac_val'\''" - done | sort - echo - - if test -n "$ac_subst_files"; then - $as_echo "## ------------------- ## -## File substitutions. ## -## ------------------- ##" - echo - for ac_var in $ac_subst_files - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - $as_echo "$ac_var='\''$ac_val'\''" - done | sort - echo - fi - - if test -s confdefs.h; then - $as_echo "## ----------- ## -## confdefs.h. ## -## ----------- ##" - echo - cat confdefs.h - echo - fi - test "$ac_signal" != 0 && - $as_echo "$as_me: caught signal $ac_signal" - $as_echo "$as_me: exit $exit_status" - } >&5 - rm -f core *.core core.conftest.* && - rm -f -r conftest* confdefs* conf$$* $ac_clean_files && - exit $exit_status -' 0 -for ac_signal in 1 2 13 15; do - trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal -done -ac_signal=0 - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -f -r conftest* confdefs.h - -$as_echo "/* confdefs.h */" > confdefs.h - -# Predefined preprocessor variables. - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_NAME "$PACKAGE_NAME" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_TARNAME "$PACKAGE_TARNAME" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_VERSION "$PACKAGE_VERSION" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_STRING "$PACKAGE_STRING" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_URL "$PACKAGE_URL" -_ACEOF - - -# Let the site file select an alternate cache file if it wants to. -# Prefer an explicitly selected file to automatically selected ones. -ac_site_file1=NONE -ac_site_file2=NONE -if test -n "$CONFIG_SITE"; then - # We do not want a PATH search for config.site. - case $CONFIG_SITE in #(( - -*) ac_site_file1=./$CONFIG_SITE;; - */*) ac_site_file1=$CONFIG_SITE;; - *) ac_site_file1=./$CONFIG_SITE;; - esac -elif test "x$prefix" != xNONE; then - ac_site_file1=$prefix/share/config.site - ac_site_file2=$prefix/etc/config.site -else - ac_site_file1=$ac_default_prefix/share/config.site - ac_site_file2=$ac_default_prefix/etc/config.site -fi -for ac_site_file in "$ac_site_file1" "$ac_site_file2" -do - test "x$ac_site_file" = xNONE && continue - if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 -$as_echo "$as_me: loading site script $ac_site_file" >&6;} - sed 's/^/| /' "$ac_site_file" >&5 - . "$ac_site_file" \ - || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "failed to load site script $ac_site_file -See \`config.log' for more details" "$LINENO" 5; } - fi -done - -if test -r "$cache_file"; then - # Some versions of bash will fail to source /dev/null (special files - # actually), so we avoid doing that. DJGPP emulates it as a regular file. - if test /dev/null != "$cache_file" && test -f "$cache_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 -$as_echo "$as_me: loading cache $cache_file" >&6;} - case $cache_file in - [\\/]* | ?:[\\/]* ) . "$cache_file";; - *) . "./$cache_file";; - esac - fi -else - { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 -$as_echo "$as_me: creating cache $cache_file" >&6;} - >$cache_file -fi - -# Check that the precious variables saved in the cache have kept the same -# value. -ac_cache_corrupted=false -for ac_var in $ac_precious_vars; do - eval ac_old_set=\$ac_cv_env_${ac_var}_set - eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val=\$ac_cv_env_${ac_var}_value - eval ac_new_val=\$ac_env_${ac_var}_value - case $ac_old_set,$ac_new_set in - set,) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,set) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,);; - *) - if test "x$ac_old_val" != "x$ac_new_val"; then - # differences in whitespace do not lead to failure. - ac_old_val_w=`echo x $ac_old_val` - ac_new_val_w=`echo x $ac_new_val` - if test "$ac_old_val_w" != "$ac_new_val_w"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 -$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - ac_cache_corrupted=: - else - { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 -$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} - eval $ac_var=\$ac_old_val - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 -$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 -$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} - fi;; - esac - # Pass precious variables to config.status. - if test "$ac_new_set" = set; then - case $ac_new_val in - *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; - *) ac_arg=$ac_var=$ac_new_val ;; - esac - case " $ac_configure_args " in - *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. - *) as_fn_append ac_configure_args " '$ac_arg'" ;; - esac - fi -done -if $ac_cache_corrupted; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 -$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} - as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 -fi -## -------------------- ## -## Main body of script. ## -## -------------------- ## - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - - - -am__api_version='1.11' - -ac_aux_dir= -for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do - if test -f "$ac_dir/install-sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f "$ac_dir/install.sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - elif test -f "$ac_dir/shtool"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/shtool install -c" - break - fi -done -if test -z "$ac_aux_dir"; then - as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 -fi - -# These three variables are undocumented and unsupported, -# and are intended to be withdrawn in a future Autoconf release. -# They can cause serious problems if a builder's source tree is in a directory -# whose full name contains unusual characters. -ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. -ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. -ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. - - -# Find a good install program. We prefer a C program (faster), -# so one script is as good as another. But avoid the broken or -# incompatible versions: -# SysV /etc/install, /usr/sbin/install -# SunOS /usr/etc/install -# IRIX /sbin/install -# AIX /bin/install -# AmigaOS /C/install, which installs bootblocks on floppy discs -# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag -# AFS /usr/afsws/bin/install, which mishandles nonexistent args -# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -# OS/2's system install, which has a completely different semantic -# ./install, which can be erroneously created by make from ./install.sh. -# Reject install programs that cannot install multiple files. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 -$as_echo_n "checking for a BSD-compatible install... " >&6; } -if test -z "$INSTALL"; then -if ${ac_cv_path_install+:} false; then : - $as_echo_n "(cached) " >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in #(( - ./ | .// | /[cC]/* | \ - /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ - ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ - /usr/ucb/* ) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - # Don't use installbsd from OSF since it installs stuff as root - # by default. - for ac_prog in ginstall scoinst install; do - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then - if test $ac_prog = install && - grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - elif test $ac_prog = install && - grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # program-specific install script used by HP pwplus--don't use. - : - else - rm -rf conftest.one conftest.two conftest.dir - echo one > conftest.one - echo two > conftest.two - mkdir conftest.dir - if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && - test -s conftest.one && test -s conftest.two && - test -s conftest.dir/conftest.one && - test -s conftest.dir/conftest.two - then - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" - break 3 - fi - fi - fi - done - done - ;; -esac - - done -IFS=$as_save_IFS - -rm -rf conftest.one conftest.two conftest.dir - -fi - if test "${ac_cv_path_install+set}" = set; then - INSTALL=$ac_cv_path_install - else - # As a last resort, use the slow shell script. Don't cache a - # value for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - INSTALL=$ac_install_sh - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 -$as_echo "$INSTALL" >&6; } - -# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -# It thinks the first close brace ends the variable substitution. -test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' - -test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' - -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 -$as_echo_n "checking whether build environment is sane... " >&6; } -# Just in case -sleep 1 -echo timestamp > conftest.file -# Reject unsafe characters in $srcdir or the absolute working directory -# name. Accept space and tab only in the latter. -am_lf=' -' -case `pwd` in - *[\\\"\#\$\&\'\`$am_lf]*) - as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; -esac -case $srcdir in - *[\\\"\#\$\&\'\`$am_lf\ \ ]*) - as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;; -esac - -# Do `set' in a subshell so we don't clobber the current shell's -# arguments. Must try -L first in case configure is actually a -# symlink; some systems play weird games with the mod time of symlinks -# (eg FreeBSD returns the mod time of the symlink's containing -# directory). -if ( - set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` - if test "$*" = "X"; then - # -L didn't work. - set X `ls -t "$srcdir/configure" conftest.file` - fi - rm -f conftest.file - if test "$*" != "X $srcdir/configure conftest.file" \ - && test "$*" != "X conftest.file $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - as_fn_error $? "ls -t appears to fail. Make sure there is not a broken -alias in your environment" "$LINENO" 5 - fi - - test "$2" = conftest.file - ) -then - # Ok. - : -else - as_fn_error $? "newly created file is older than distributed files! -Check your system clock" "$LINENO" 5 -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -test "$program_prefix" != NONE && - program_transform_name="s&^&$program_prefix&;$program_transform_name" -# Use a double $ so make ignores it. -test "$program_suffix" != NONE && - program_transform_name="s&\$&$program_suffix&;$program_transform_name" -# Double any \ or $. -# By default was `s,x,x', remove it if useless. -ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' -program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` - -# expand $ac_aux_dir to an absolute path -am_aux_dir=`cd $ac_aux_dir && pwd` - -if test x"${MISSING+set}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; - *) - MISSING="\${SHELL} $am_aux_dir/missing" ;; - esac -fi -# Use eval to expand $SHELL -if eval "$MISSING --run true"; then - am_missing_run="$MISSING --run " -else - am_missing_run= - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5 -$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} -fi - -if test x"${install_sh}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; - *) - install_sh="\${SHELL} $am_aux_dir/install-sh" - esac -fi - -# Installed binaries are usually stripped using `strip' when the user -# run `make install-strip'. However `strip' might not be the right -# tool to use in cross-compilation environments, therefore Automake -# will honor the `STRIP' environment variable to overrule this program. -if test "$cross_compiling" != no; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. -set dummy ${ac_tool_prefix}strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$STRIP"; then - ac_cv_prog_STRIP="$STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_STRIP="${ac_tool_prefix}strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -STRIP=$ac_cv_prog_STRIP -if test -n "$STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 -$as_echo "$STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_STRIP"; then - ac_ct_STRIP=$STRIP - # Extract the first word of "strip", so it can be a program name with args. -set dummy strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_STRIP"; then - ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_STRIP="strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP -if test -n "$ac_ct_STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 -$as_echo "$ac_ct_STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_STRIP" = x; then - STRIP=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - STRIP=$ac_ct_STRIP - fi -else - STRIP="$ac_cv_prog_STRIP" -fi - -fi -INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 -$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } -if test -z "$MKDIR_P"; then - if ${ac_cv_path_mkdir+:} false; then : - $as_echo_n "(cached) " >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in mkdir gmkdir; do - for ac_exec_ext in '' $ac_executable_extensions; do - as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue - case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( - 'mkdir (GNU coreutils) '* | \ - 'mkdir (coreutils) '* | \ - 'mkdir (fileutils) '4.1*) - ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext - break 3;; - esac - done - done - done -IFS=$as_save_IFS - -fi - - test -d ./--version && rmdir ./--version - if test "${ac_cv_path_mkdir+set}" = set; then - MKDIR_P="$ac_cv_path_mkdir -p" - else - # As a last resort, use the slow shell script. Don't cache a - # value for MKDIR_P within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - MKDIR_P="$ac_install_sh -d" - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 -$as_echo "$MKDIR_P" >&6; } - -mkdir_p="$MKDIR_P" -case $mkdir_p in - [\\/$]* | ?:[\\/]*) ;; - */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; -esac - -for ac_prog in gawk mawk nawk awk -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AWK+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$AWK"; then - ac_cv_prog_AWK="$AWK" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_AWK="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -AWK=$ac_cv_prog_AWK -if test -n "$AWK"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 -$as_echo "$AWK" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$AWK" && break -done - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 -$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } -set x ${MAKE-make} -ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` -if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat >conftest.make <<\_ACEOF -SHELL = /bin/sh -all: - @echo '@@@%%%=$(MAKE)=@@@%%%' -_ACEOF -# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. -case `${MAKE-make} -f conftest.make 2>/dev/null` in - *@@@%%%=?*=@@@%%%*) - eval ac_cv_prog_make_${ac_make}_set=yes;; - *) - eval ac_cv_prog_make_${ac_make}_set=no;; -esac -rm -f conftest.make -fi -if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - SET_MAKE= -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - SET_MAKE="MAKE=${MAKE-make}" -fi - -rm -rf .tst 2>/dev/null -mkdir .tst 2>/dev/null -if test -d .tst; then - am__leading_dot=. -else - am__leading_dot=_ -fi -rmdir .tst 2>/dev/null - -if test "`cd $srcdir && pwd`" != "`pwd`"; then - # Use -I$(srcdir) only when $(srcdir) != ., so that make's output - # is not polluted with repeated "-I." - am__isrc=' -I$(srcdir)' - # test to see if srcdir already configured - if test -f $srcdir/config.status; then - as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 - fi -fi - -# test whether we have cygpath -if test -z "$CYGPATH_W"; then - if (cygpath --version) >/dev/null 2>/dev/null; then - CYGPATH_W='cygpath -w' - else - CYGPATH_W=echo - fi -fi - - -# Define the identity of the package. - PACKAGE='onigmo' - VERSION='6.1.2' - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE "$PACKAGE" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define VERSION "$VERSION" -_ACEOF - -# Some tools Automake needs. - -ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} - - -AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} - - -AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} - - -AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} - - -MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} - -# We need awk for the "check" target. The system "awk" is bad on -# some platforms. -# Always define AMTAR for backward compatibility. Yes, it's still used -# in the wild :-( We should find a proper way to deprecate it ... -AMTAR='$${TAR-tar}' - -am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' - - - - - -ac_config_headers="$ac_config_headers config.h" - - - -RUBYDIR=".." - -# Check whether --with-rubydir was given. -if test "${with_rubydir+set}" = set; then : - withval=$with_rubydir; RUBYDIR=$withval -fi - - - -STATISTICS="" - -# Check whether --with-statistics was given. -if test "${with_statistics+set}" = set; then : - withval=$with_statistics; STATISTICS=-DONIG_DEBUG_STATISTICS -fi - - - -# Check whether --enable-combination-explosion-check was given. -if test "${enable_combination_explosion_check+set}" = set; then : - enableval=$enable_combination_explosion_check; comb_expl_check=$enableval -fi - -if test "${comb_expl_check}" = yes; then - -$as_echo "#define USE_COMBINATION_EXPLOSION_CHECK 1" >>confdefs.h - -fi - -# Check whether --enable-crnl-as-line-terminator was given. -if test "${enable_crnl_as_line_terminator+set}" = set; then : - enableval=$enable_crnl_as_line_terminator; crnl_as_line_terminator=$enableval -fi - -if test "${crnl_as_line_terminator}" = yes; then - -$as_echo "#define USE_CRNL_AS_LINE_TERMINATOR 1" >>confdefs.h - -fi - - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -else - CC="$ac_cv_prog_CC" -fi - -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. -set dummy ${ac_tool_prefix}cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - fi -fi -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - ac_prog_rejected=no -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $# != 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" - fi -fi -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - for ac_prog in cl.exe - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$CC" && break - done -fi -if test -z "$CC"; then - ac_ct_CC=$CC - for ac_prog in cl.exe -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_CC" && break -done - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -fi - -fi - - -test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "no acceptable C compiler found in \$PATH -See \`config.log' for more details" "$LINENO" 5; } - -# Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 -set X $ac_compile -ac_compiler=$2 -for ac_option in --version -v -V -qversion; do - { { ac_try="$ac_compiler $ac_option >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compiler $ac_option >&5") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - sed '10a\ -... rest of stderr output deleted ... - 10q' conftest.err >conftest.er1 - cat conftest.er1 >&5 - fi - rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -done - -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" -# Try to create an executable without -o first, disregard a.out. -# It will help us diagnose broken compilers, and finding out an intuition -# of exeext. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 -$as_echo_n "checking whether the C compiler works... " >&6; } -ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` - -# The possible output files: -ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" - -ac_rmfiles= -for ac_file in $ac_files -do - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - * ) ac_rmfiles="$ac_rmfiles $ac_file";; - esac -done -rm -f $ac_rmfiles - -if { { ac_try="$ac_link_default" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link_default") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. -# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' -# in a Makefile. We should not override ac_cv_exeext if it was cached, -# so that the user can short-circuit this test for compilers unknown to -# Autoconf. -for ac_file in $ac_files '' -do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) - ;; - [ab].out ) - # We found the default executable, but exeext='' is most - # certainly right. - break;; - *.* ) - if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; - then :; else - ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - fi - # We set ac_cv_exeext here because the later test for it is not - # safe: cross compilers may not add the suffix if given an `-o' - # argument, so we may need to know it at that point already. - # Even if this section looks crufty: it has the advantage of - # actually working. - break;; - * ) - break;; - esac -done -test "$ac_cv_exeext" = no && ac_cv_exeext= - -else - ac_file='' -fi -if test -z "$ac_file"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "C compiler cannot create executables -See \`config.log' for more details" "$LINENO" 5; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 -$as_echo_n "checking for C compiler default output file name... " >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 -$as_echo "$ac_file" >&6; } -ac_exeext=$ac_cv_exeext - -rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out -ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 -$as_echo_n "checking for suffix of executables... " >&6; } -if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - # If both `conftest.exe' and `conftest' are `present' (well, observable) -# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will -# work properly (i.e., refer to `conftest.exe'), while it won't with -# `rm'. -for ac_file in conftest.exe conftest conftest.*; do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - break;; - * ) break;; - esac -done -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details" "$LINENO" 5; } -fi -rm -f conftest conftest$ac_cv_exeext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 -$as_echo "$ac_cv_exeext" >&6; } - -rm -f conftest.$ac_ext -EXEEXT=$ac_cv_exeext -ac_exeext=$EXEEXT -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -FILE *f = fopen ("conftest.out", "w"); - return ferror (f) || fclose (f) != 0; - - ; - return 0; -} -_ACEOF -ac_clean_files="$ac_clean_files conftest.out" -# Check that the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 -$as_echo_n "checking whether we are cross compiling... " >&6; } -if test "$cross_compiling" != yes; then - { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if { ac_try='./conftest$ac_cv_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then - cross_compiling=no - else - if test "$cross_compiling" = maybe; then - cross_compiling=yes - else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details" "$LINENO" 5; } - fi - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 -$as_echo "$cross_compiling" >&6; } - -rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out -ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 -$as_echo_n "checking for suffix of object files... " >&6; } -if ${ac_cv_objext+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.o conftest.obj -if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - for ac_file in conftest.o conftest.obj conftest.*; do - test -f "$ac_file" || continue; - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; - *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` - break;; - esac -done -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot compute suffix of object files: cannot compile -See \`config.log' for more details" "$LINENO" 5; } -fi -rm -f conftest.$ac_cv_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 -$as_echo "$ac_cv_objext" >&6; } -OBJEXT=$ac_cv_objext -ac_objext=$OBJEXT -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 -$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } -if ${ac_cv_c_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_compiler_gnu=yes -else - ac_compiler_gnu=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_c_compiler_gnu=$ac_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 -$as_echo "$ac_cv_c_compiler_gnu" >&6; } -if test $ac_compiler_gnu = yes; then - GCC=yes -else - GCC= -fi -ac_test_CFLAGS=${CFLAGS+set} -ac_save_CFLAGS=$CFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 -$as_echo_n "checking whether $CC accepts -g... " >&6; } -if ${ac_cv_prog_cc_g+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_save_c_werror_flag=$ac_c_werror_flag - ac_c_werror_flag=yes - ac_cv_prog_cc_g=no - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -else - CFLAGS="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -else - ac_c_werror_flag=$ac_save_c_werror_flag - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_c_werror_flag=$ac_save_c_werror_flag -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 -$as_echo "$ac_cv_prog_cc_g" >&6; } -if test "$ac_test_CFLAGS" = set; then - CFLAGS=$ac_save_CFLAGS -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 -$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } -if ${ac_cv_prog_cc_c89+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_prog_cc_c89=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -struct stat; -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; - -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters - inside strings and character constants. */ -#define FOO(x) 'x' -int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; - -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} -_ACEOF -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ - -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_c89=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext - test "x$ac_cv_prog_cc_c89" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC - -fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c89" in - x) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; - xno) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c89" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; -esac -if test "x$ac_cv_prog_cc_c89" != xno; then : - -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -DEPDIR="${am__leading_dot}deps" - -ac_config_commands="$ac_config_commands depfiles" - - -am_make=${MAKE-make} -cat > confinc << 'END' -am__doit: - @echo this is the am__doit target -.PHONY: am__doit -END -# If we don't find an include directive, just comment out the code. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 -$as_echo_n "checking for style of include used by $am_make... " >&6; } -am__include="#" -am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# Ignore all kinds of additional output from `make'. -case `$am_make -s -f confmf 2> /dev/null` in #( -*the\ am__doit\ target*) - am__include=include - am__quote= - _am_result=GNU - ;; -esac -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - case `$am_make -s -f confmf 2> /dev/null` in #( - *the\ am__doit\ target*) - am__include=.include - am__quote="\"" - _am_result=BSD - ;; - esac -fi - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 -$as_echo "$_am_result" >&6; } -rm -f confinc confmf - -# Check whether --enable-dependency-tracking was given. -if test "${enable_dependency_tracking+set}" = set; then : - enableval=$enable_dependency_tracking; -fi - -if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' - am__nodep='_no' -fi - if test "x$enable_dependency_tracking" != xno; then - AMDEP_TRUE= - AMDEP_FALSE='#' -else - AMDEP_TRUE='#' - AMDEP_FALSE= -fi - - - -depcc="$CC" am_compiler_list= - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 -$as_echo_n "checking dependency style of $depcc... " >&6; } -if ${am_cv_CC_dependencies_compiler_type+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. - rm -rf conftest.dir - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub - - am_cv_CC_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` - fi - am__universal=false - case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac - - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - # We check with `-c' and `-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - nosideeffect) - # after this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok `-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_CC_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_CC_dependencies_compiler_type=none -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 -$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } -CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type - - if - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then - am__fastdepCC_TRUE= - am__fastdepCC_FALSE='#' -else - am__fastdepCC_TRUE='#' - am__fastdepCC_FALSE= -fi - - -case `pwd` in - *\ * | *\ *) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 -$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; -esac - - - -macro_version='2.4.6' -macro_revision='2.4.6' - - - - - - - - - - - - - -ltmain=$ac_aux_dir/ltmain.sh - -# Make sure we can run config.sub. -$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || - as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 -$as_echo_n "checking build system type... " >&6; } -if ${ac_cv_build+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_build_alias=$build_alias -test "x$ac_build_alias" = x && - ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` -test "x$ac_build_alias" = x && - as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 -ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 -$as_echo "$ac_cv_build" >&6; } -case $ac_cv_build in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; -esac -build=$ac_cv_build -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_build -shift -build_cpu=$1 -build_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -build_os=$* -IFS=$ac_save_IFS -case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 -$as_echo_n "checking host system type... " >&6; } -if ${ac_cv_host+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "x$host_alias" = x; then - ac_cv_host=$ac_cv_build -else - ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 -$as_echo "$ac_cv_host" >&6; } -case $ac_cv_host in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; -esac -host=$ac_cv_host -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_host -shift -host_cpu=$1 -host_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -host_os=$* -IFS=$ac_save_IFS -case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac - - -# Backslashify metacharacters that are still active within -# double-quoted strings. -sed_quote_subst='s/\(["`$\\]\)/\\\1/g' - -# Same as above, but do not quote variable references. -double_quote_subst='s/\(["`\\]\)/\\\1/g' - -# Sed substitution to delay expansion of an escaped shell variable in a -# double_quote_subst'ed string. -delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' - -# Sed substitution to delay expansion of an escaped single quote. -delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' - -# Sed substitution to avoid accidental globbing in evaled expressions -no_glob_subst='s/\*/\\\*/g' - -ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 -$as_echo_n "checking how to print strings... " >&6; } -# Test print first, because it will be a builtin if present. -if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ - test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='print -r --' -elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='printf %s\n' -else - # Use this function as a fallback that always works. - func_fallback_echo () - { - eval 'cat <<_LTECHO_EOF -$1 -_LTECHO_EOF' - } - ECHO='func_fallback_echo' -fi - -# func_echo_all arg... -# Invoke $ECHO with all args, space-separated. -func_echo_all () -{ - $ECHO "" -} - -case $ECHO in - printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 -$as_echo "printf" >&6; } ;; - print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 -$as_echo "print -r" >&6; } ;; - *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 -$as_echo "cat" >&6; } ;; -esac - - - - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 -$as_echo_n "checking for a sed that does not truncate output... " >&6; } -if ${ac_cv_path_SED+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ - for ac_i in 1 2 3 4 5 6 7; do - ac_script="$ac_script$as_nl$ac_script" - done - echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed - { ac_script=; unset ac_script;} - if test -z "$SED"; then - ac_path_SED_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in sed gsed; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_SED" || continue -# Check for GNU ac_path_SED and select it if it is found. - # Check for GNU $ac_path_SED -case `"$ac_path_SED" --version 2>&1` in -*GNU*) - ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo '' >> "conftest.nl" - "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_SED_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_SED="$ac_path_SED" - ac_path_SED_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_SED_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_SED"; then - as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 - fi -else - ac_cv_path_SED=$SED -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 -$as_echo "$ac_cv_path_SED" >&6; } - SED="$ac_cv_path_SED" - rm -f conftest.sed - -test -z "$SED" && SED=sed -Xsed="$SED -e 1s/^X//" - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 -$as_echo_n "checking for grep that handles long lines and -e... " >&6; } -if ${ac_cv_path_GREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$GREP"; then - ac_path_GREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in grep ggrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_GREP" || continue -# Check for GNU ac_path_GREP and select it if it is found. - # Check for GNU $ac_path_GREP -case `"$ac_path_GREP" --version 2>&1` in -*GNU*) - ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'GREP' >> "conftest.nl" - "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_GREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_GREP="$ac_path_GREP" - ac_path_GREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_GREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_GREP"; then - as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_GREP=$GREP -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 -$as_echo "$ac_cv_path_GREP" >&6; } - GREP="$ac_cv_path_GREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 -$as_echo_n "checking for egrep... " >&6; } -if ${ac_cv_path_EGREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 - then ac_cv_path_EGREP="$GREP -E" - else - if test -z "$EGREP"; then - ac_path_EGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in egrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_EGREP" || continue -# Check for GNU ac_path_EGREP and select it if it is found. - # Check for GNU $ac_path_EGREP -case `"$ac_path_EGREP" --version 2>&1` in -*GNU*) - ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'EGREP' >> "conftest.nl" - "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_EGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_EGREP="$ac_path_EGREP" - ac_path_EGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_EGREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_EGREP"; then - as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_EGREP=$EGREP -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 -$as_echo "$ac_cv_path_EGREP" >&6; } - EGREP="$ac_cv_path_EGREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 -$as_echo_n "checking for fgrep... " >&6; } -if ${ac_cv_path_FGREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 - then ac_cv_path_FGREP="$GREP -F" - else - if test -z "$FGREP"; then - ac_path_FGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in fgrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_FGREP" || continue -# Check for GNU ac_path_FGREP and select it if it is found. - # Check for GNU $ac_path_FGREP -case `"$ac_path_FGREP" --version 2>&1` in -*GNU*) - ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'FGREP' >> "conftest.nl" - "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_FGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_FGREP="$ac_path_FGREP" - ac_path_FGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_FGREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_FGREP"; then - as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_FGREP=$FGREP -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 -$as_echo "$ac_cv_path_FGREP" >&6; } - FGREP="$ac_cv_path_FGREP" - - -test -z "$GREP" && GREP=grep - - - - - - - - - - - - - - - - - - - -# Check whether --with-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then : - withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes -else - with_gnu_ld=no -fi - -ac_prog=ld -if test yes = "$GCC"; then - # Check if gcc -print-prog-name=ld gives a path. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 -$as_echo_n "checking for ld used by $CC... " >&6; } - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return, which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [\\/]* | ?:[\\/]*) - re_direlt='/[^/][^/]*/\.\./' - # Canonicalize the pathname of ld - ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` - while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do - ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` - done - test -z "$LD" && LD=$ac_prog - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test yes = "$with_gnu_ld"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 -$as_echo_n "checking for GNU ld... " >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 -$as_echo_n "checking for non-GNU ld... " >&6; } -fi -if ${lt_cv_path_LD+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$LD"; then - lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS=$lt_save_ifs - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD=$ac_dir/$ac_prog - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some variants of GNU ld only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 &5 -$as_echo "$LD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 -$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } -if ${lt_cv_prog_gnu_ld+:} false; then : - $as_echo_n "(cached) " >&6 -else - # I'd rather use --version here, but apparently some GNU lds only accept -v. -case `$LD -v 2>&1 &5 -$as_echo "$lt_cv_prog_gnu_ld" >&6; } -with_gnu_ld=$lt_cv_prog_gnu_ld - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 -$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } -if ${lt_cv_path_NM+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$NM"; then - # Let the user override the test. - lt_cv_path_NM=$NM -else - lt_nm_to_check=${ac_tool_prefix}nm - if test -n "$ac_tool_prefix" && test "$build" = "$host"; then - lt_nm_to_check="$lt_nm_to_check nm" - fi - for lt_tmp_nm in $lt_nm_to_check; do - lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR - for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do - IFS=$lt_save_ifs - test -z "$ac_dir" && ac_dir=. - tmp_nm=$ac_dir/$lt_tmp_nm - if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then - # Check to see if the nm accepts a BSD-compat flag. - # Adding the 'sed 1q' prevents false positives on HP-UX, which says: - # nm: unknown option "B" ignored - # Tru64's nm complains that /dev/null is an invalid object file - # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty - case $build_os in - mingw*) lt_bad_file=conftest.nm/nofile ;; - *) lt_bad_file=/dev/null ;; - esac - case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in - *$lt_bad_file* | *'Invalid file or object type'*) - lt_cv_path_NM="$tmp_nm -B" - break 2 - ;; - *) - case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in - */dev/null*) - lt_cv_path_NM="$tmp_nm -p" - break 2 - ;; - *) - lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but - continue # so that we can try to find one that supports BSD flags - ;; - esac - ;; - esac - fi - done - IFS=$lt_save_ifs - done - : ${lt_cv_path_NM=no} -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 -$as_echo "$lt_cv_path_NM" >&6; } -if test no != "$lt_cv_path_NM"; then - NM=$lt_cv_path_NM -else - # Didn't find any BSD compatible name lister, look for dumpbin. - if test -n "$DUMPBIN"; then : - # Let the user override the test. - else - if test -n "$ac_tool_prefix"; then - for ac_prog in dumpbin "link -dump" - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DUMPBIN+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DUMPBIN"; then - ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DUMPBIN=$ac_cv_prog_DUMPBIN -if test -n "$DUMPBIN"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 -$as_echo "$DUMPBIN" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$DUMPBIN" && break - done -fi -if test -z "$DUMPBIN"; then - ac_ct_DUMPBIN=$DUMPBIN - for ac_prog in dumpbin "link -dump" -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DUMPBIN"; then - ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN -if test -n "$ac_ct_DUMPBIN"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 -$as_echo "$ac_ct_DUMPBIN" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_DUMPBIN" && break -done - - if test "x$ac_ct_DUMPBIN" = x; then - DUMPBIN=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DUMPBIN=$ac_ct_DUMPBIN - fi -fi - - case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in - *COFF*) - DUMPBIN="$DUMPBIN -symbols -headers" - ;; - *) - DUMPBIN=: - ;; - esac - fi - - if test : != "$DUMPBIN"; then - NM=$DUMPBIN - fi -fi -test -z "$NM" && NM=nm - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 -$as_echo_n "checking the name lister ($NM) interface... " >&6; } -if ${lt_cv_nm_interface+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_nm_interface="BSD nm" - echo "int some_variable = 0;" > conftest.$ac_ext - (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) - (eval "$ac_compile" 2>conftest.err) - cat conftest.err >&5 - (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) - (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) - cat conftest.err >&5 - (eval echo "\"\$as_me:$LINENO: output\"" >&5) - cat conftest.out >&5 - if $GREP 'External.*some_variable' conftest.out > /dev/null; then - lt_cv_nm_interface="MS dumpbin" - fi - rm -f conftest* -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 -$as_echo "$lt_cv_nm_interface" >&6; } - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 -$as_echo_n "checking whether ln -s works... " >&6; } -LN_S=$as_ln_s -if test "$LN_S" = "ln -s"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 -$as_echo "no, using $LN_S" >&6; } -fi - -# find the maximum length of command line arguments -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 -$as_echo_n "checking the maximum length of command line arguments... " >&6; } -if ${lt_cv_sys_max_cmd_len+:} false; then : - $as_echo_n "(cached) " >&6 -else - i=0 - teststring=ABCD - - case $build_os in - msdosdjgpp*) - # On DJGPP, this test can blow up pretty badly due to problems in libc - # (any single argument exceeding 2000 bytes causes a buffer overrun - # during glob expansion). Even if it were fixed, the result of this - # check would be larger than it should be. - lt_cv_sys_max_cmd_len=12288; # 12K is about right - ;; - - gnu*) - # Under GNU Hurd, this test is not required because there is - # no limit to the length of command line arguments. - # Libtool will interpret -1 as no limit whatsoever - lt_cv_sys_max_cmd_len=-1; - ;; - - cygwin* | mingw* | cegcc*) - # On Win9x/ME, this test blows up -- it succeeds, but takes - # about 5 minutes as the teststring grows exponentially. - # Worse, since 9x/ME are not pre-emptively multitasking, - # you end up with a "frozen" computer, even though with patience - # the test eventually succeeds (with a max line length of 256k). - # Instead, let's just punt: use the minimum linelength reported by - # all of the supported platforms: 8192 (on NT/2K/XP). - lt_cv_sys_max_cmd_len=8192; - ;; - - mint*) - # On MiNT this can take a long time and run out of memory. - lt_cv_sys_max_cmd_len=8192; - ;; - - amigaos*) - # On AmigaOS with pdksh, this test takes hours, literally. - # So we just punt and use a minimum line length of 8192. - lt_cv_sys_max_cmd_len=8192; - ;; - - bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) - # This has been around since 386BSD, at least. Likely further. - if test -x /sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` - elif test -x /usr/sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` - else - lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs - fi - # And add a safety zone - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - ;; - - interix*) - # We know the value 262144 and hardcode it with a safety zone (like BSD) - lt_cv_sys_max_cmd_len=196608 - ;; - - os2*) - # The test takes a long time on OS/2. - lt_cv_sys_max_cmd_len=8192 - ;; - - osf*) - # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure - # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not - # nice to cause kernel panics so lets avoid the loop below. - # First set a reasonable default. - lt_cv_sys_max_cmd_len=16384 - # - if test -x /sbin/sysconfig; then - case `/sbin/sysconfig -q proc exec_disable_arg_limit` in - *1*) lt_cv_sys_max_cmd_len=-1 ;; - esac - fi - ;; - sco3.2v5*) - lt_cv_sys_max_cmd_len=102400 - ;; - sysv5* | sco5v6* | sysv4.2uw2*) - kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` - if test -n "$kargmax"; then - lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` - else - lt_cv_sys_max_cmd_len=32768 - fi - ;; - *) - lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` - if test -n "$lt_cv_sys_max_cmd_len" && \ - test undefined != "$lt_cv_sys_max_cmd_len"; then - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - else - # Make teststring a little bigger before we do anything with it. - # a 1K string should be a reasonable start. - for i in 1 2 3 4 5 6 7 8; do - teststring=$teststring$teststring - done - SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} - # If test is not a shell built-in, we'll probably end up computing a - # maximum length that is only half of the actual maximum length, but - # we can't tell. - while { test X`env echo "$teststring$teststring" 2>/dev/null` \ - = "X$teststring$teststring"; } >/dev/null 2>&1 && - test 17 != "$i" # 1/2 MB should be enough - do - i=`expr $i + 1` - teststring=$teststring$teststring - done - # Only check the string length outside the loop. - lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` - teststring= - # Add a significant safety factor because C++ compilers can tack on - # massive amounts of additional arguments before passing them to the - # linker. It appears as though 1/2 is a usable value. - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` - fi - ;; - esac - -fi - -if test -n "$lt_cv_sys_max_cmd_len"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 -$as_echo "$lt_cv_sys_max_cmd_len" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 -$as_echo "none" >&6; } -fi -max_cmd_len=$lt_cv_sys_max_cmd_len - - - - - - -: ${CP="cp -f"} -: ${MV="mv -f"} -: ${RM="rm -f"} - -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - lt_unset=unset -else - lt_unset=false -fi - - - - - -# test EBCDIC or ASCII -case `echo X|tr X '\101'` in - A) # ASCII based system - # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr - lt_SP2NL='tr \040 \012' - lt_NL2SP='tr \015\012 \040\040' - ;; - *) # EBCDIC based system - lt_SP2NL='tr \100 \n' - lt_NL2SP='tr \r\n \100\100' - ;; -esac - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 -$as_echo_n "checking how to convert $build file names to $host format... " >&6; } -if ${lt_cv_to_host_file_cmd+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 - ;; - *-*-cygwin* ) - lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 - ;; - esac - ;; - *-*-cygwin* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin - ;; - *-*-cygwin* ) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin - ;; - esac - ;; - * ) # unhandled hosts (and "normal" native builds) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; -esac - -fi - -to_host_file_cmd=$lt_cv_to_host_file_cmd -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 -$as_echo "$lt_cv_to_host_file_cmd" >&6; } - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 -$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } -if ${lt_cv_to_tool_file_cmd+:} false; then : - $as_echo_n "(cached) " >&6 -else - #assume ordinary cross tools, or native build. -lt_cv_to_tool_file_cmd=func_convert_file_noop -case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 - ;; - esac - ;; -esac - -fi - -to_tool_file_cmd=$lt_cv_to_tool_file_cmd -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 -$as_echo "$lt_cv_to_tool_file_cmd" >&6; } - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 -$as_echo_n "checking for $LD option to reload object files... " >&6; } -if ${lt_cv_ld_reload_flag+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_reload_flag='-r' -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 -$as_echo "$lt_cv_ld_reload_flag" >&6; } -reload_flag=$lt_cv_ld_reload_flag -case $reload_flag in -"" | " "*) ;; -*) reload_flag=" $reload_flag" ;; -esac -reload_cmds='$LD$reload_flag -o $output$reload_objs' -case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - if test yes != "$GCC"; then - reload_cmds=false - fi - ;; - darwin*) - if test yes = "$GCC"; then - reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs' - else - reload_cmds='$LD$reload_flag -o $output$reload_objs' - fi - ;; -esac - - - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. -set dummy ${ac_tool_prefix}objdump; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OBJDUMP"; then - ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OBJDUMP=$ac_cv_prog_OBJDUMP -if test -n "$OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 -$as_echo "$OBJDUMP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OBJDUMP"; then - ac_ct_OBJDUMP=$OBJDUMP - # Extract the first word of "objdump", so it can be a program name with args. -set dummy objdump; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OBJDUMP"; then - ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_OBJDUMP="objdump" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP -if test -n "$ac_ct_OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 -$as_echo "$ac_ct_OBJDUMP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OBJDUMP" = x; then - OBJDUMP="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OBJDUMP=$ac_ct_OBJDUMP - fi -else - OBJDUMP="$ac_cv_prog_OBJDUMP" -fi - -test -z "$OBJDUMP" && OBJDUMP=objdump - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 -$as_echo_n "checking how to recognize dependent libraries... " >&6; } -if ${lt_cv_deplibs_check_method+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_file_magic_cmd='$MAGIC_CMD' -lt_cv_file_magic_test_file= -lt_cv_deplibs_check_method='unknown' -# Need to set the preceding variable on all platforms that support -# interlibrary dependencies. -# 'none' -- dependencies not supported. -# 'unknown' -- same as none, but documents that we really don't know. -# 'pass_all' -- all dependencies passed with no checks. -# 'test_compile' -- check by making test program. -# 'file_magic [[regex]]' -- check by looking for files in library path -# that responds to the $file_magic_cmd with a given extended regex. -# If you have 'file' or equivalent on your system and you're not sure -# whether 'pass_all' will *always* work, you probably want this one. - -case $host_os in -aix[4-9]*) - lt_cv_deplibs_check_method=pass_all - ;; - -beos*) - lt_cv_deplibs_check_method=pass_all - ;; - -bsdi[45]*) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' - lt_cv_file_magic_cmd='/usr/bin/file -L' - lt_cv_file_magic_test_file=/shlib/libc.so - ;; - -cygwin*) - # func_win32_libid is a shell function defined in ltmain.sh - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - ;; - -mingw* | pw32*) - # Base MSYS/MinGW do not provide the 'file' command needed by - # func_win32_libid shell function, so use a weaker test based on 'objdump', - # unless we find 'file', for example because we are cross-compiling. - if ( file / ) >/dev/null 2>&1; then - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - else - # Keep this pattern in sync with the one in func_win32_libid. - lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' - lt_cv_file_magic_cmd='$OBJDUMP -f' - fi - ;; - -cegcc*) - # use the weaker test based on 'objdump'. See mingw*. - lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' - lt_cv_file_magic_cmd='$OBJDUMP -f' - ;; - -darwin* | rhapsody*) - lt_cv_deplibs_check_method=pass_all - ;; - -freebsd* | dragonfly*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - case $host_cpu in - i*86 ) - # Not sure whether the presence of OpenBSD here was a mistake. - # Let's accept both of them until this is cleared up. - lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` - ;; - esac - else - lt_cv_deplibs_check_method=pass_all - fi - ;; - -haiku*) - lt_cv_deplibs_check_method=pass_all - ;; - -hpux10.20* | hpux11*) - lt_cv_file_magic_cmd=/usr/bin/file - case $host_cpu in - ia64*) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' - lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so - ;; - hppa*64*) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' - lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl - ;; - *) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' - lt_cv_file_magic_test_file=/usr/lib/libc.sl - ;; - esac - ;; - -interix[3-9]*) - # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' - ;; - -irix5* | irix6* | nonstopux*) - case $LD in - *-32|*"-32 ") libmagic=32-bit;; - *-n32|*"-n32 ") libmagic=N32;; - *-64|*"-64 ") libmagic=64-bit;; - *) libmagic=never-match;; - esac - lt_cv_deplibs_check_method=pass_all - ;; - -# This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' - fi - ;; - -newos6*) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=/usr/lib/libnls.so - ;; - -*nto* | *qnx*) - lt_cv_deplibs_check_method=pass_all - ;; - -openbsd* | bitrig*) - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' - fi - ;; - -osf3* | osf4* | osf5*) - lt_cv_deplibs_check_method=pass_all - ;; - -rdos*) - lt_cv_deplibs_check_method=pass_all - ;; - -solaris*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv4 | sysv4.3*) - case $host_vendor in - motorola) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` - ;; - ncr) - lt_cv_deplibs_check_method=pass_all - ;; - sequent) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' - ;; - sni) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" - lt_cv_file_magic_test_file=/lib/libc.so - ;; - siemens) - lt_cv_deplibs_check_method=pass_all - ;; - pc) - lt_cv_deplibs_check_method=pass_all - ;; - esac - ;; - -tpf*) - lt_cv_deplibs_check_method=pass_all - ;; -os2*) - lt_cv_deplibs_check_method=pass_all - ;; -esac - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 -$as_echo "$lt_cv_deplibs_check_method" >&6; } - -file_magic_glob= -want_nocaseglob=no -if test "$build" = "$host"; then - case $host_os in - mingw* | pw32*) - if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then - want_nocaseglob=yes - else - file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` - fi - ;; - esac -fi - -file_magic_cmd=$lt_cv_file_magic_cmd -deplibs_check_method=$lt_cv_deplibs_check_method -test -z "$deplibs_check_method" && deplibs_check_method=unknown - - - - - - - - - - - - - - - - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. -set dummy ${ac_tool_prefix}dlltool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DLLTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DLLTOOL"; then - ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DLLTOOL=$ac_cv_prog_DLLTOOL -if test -n "$DLLTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 -$as_echo "$DLLTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_DLLTOOL"; then - ac_ct_DLLTOOL=$DLLTOOL - # Extract the first word of "dlltool", so it can be a program name with args. -set dummy dlltool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DLLTOOL"; then - ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_DLLTOOL="dlltool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL -if test -n "$ac_ct_DLLTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 -$as_echo "$ac_ct_DLLTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_DLLTOOL" = x; then - DLLTOOL="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DLLTOOL=$ac_ct_DLLTOOL - fi -else - DLLTOOL="$ac_cv_prog_DLLTOOL" -fi - -test -z "$DLLTOOL" && DLLTOOL=dlltool - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 -$as_echo_n "checking how to associate runtime and link libraries... " >&6; } -if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_sharedlib_from_linklib_cmd='unknown' - -case $host_os in -cygwin* | mingw* | pw32* | cegcc*) - # two different shell functions defined in ltmain.sh; - # decide which one to use based on capabilities of $DLLTOOL - case `$DLLTOOL --help 2>&1` in - *--identify-strict*) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib - ;; - *) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback - ;; - esac - ;; -*) - # fallback: assume linklib IS sharedlib - lt_cv_sharedlib_from_linklib_cmd=$ECHO - ;; -esac - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 -$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } -sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd -test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO - - - - - - - - -if test -n "$ac_tool_prefix"; then - for ac_prog in ar - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$AR"; then - ac_cv_prog_AR="$AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_AR="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -AR=$ac_cv_prog_AR -if test -n "$AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 -$as_echo "$AR" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$AR" && break - done -fi -if test -z "$AR"; then - ac_ct_AR=$AR - for ac_prog in ar -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_AR"; then - ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_AR="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_AR=$ac_cv_prog_ac_ct_AR -if test -n "$ac_ct_AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 -$as_echo "$ac_ct_AR" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_AR" && break -done - - if test "x$ac_ct_AR" = x; then - AR="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - AR=$ac_ct_AR - fi -fi - -: ${AR=ar} -: ${AR_FLAGS=cru} - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 -$as_echo_n "checking for archiver @FILE support... " >&6; } -if ${lt_cv_ar_at_file+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ar_at_file=no - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - echo conftest.$ac_objext > conftest.lst - lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' - { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 - (eval $lt_ar_try) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if test 0 -eq "$ac_status"; then - # Ensure the archiver fails upon bogus file names. - rm -f conftest.$ac_objext libconftest.a - { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 - (eval $lt_ar_try) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if test 0 -ne "$ac_status"; then - lt_cv_ar_at_file=@ - fi - fi - rm -f conftest.* libconftest.a - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 -$as_echo "$lt_cv_ar_at_file" >&6; } - -if test no = "$lt_cv_ar_at_file"; then - archiver_list_spec= -else - archiver_list_spec=$lt_cv_ar_at_file -fi - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. -set dummy ${ac_tool_prefix}strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$STRIP"; then - ac_cv_prog_STRIP="$STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_STRIP="${ac_tool_prefix}strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -STRIP=$ac_cv_prog_STRIP -if test -n "$STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 -$as_echo "$STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_STRIP"; then - ac_ct_STRIP=$STRIP - # Extract the first word of "strip", so it can be a program name with args. -set dummy strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_STRIP"; then - ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_STRIP="strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP -if test -n "$ac_ct_STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 -$as_echo "$ac_ct_STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_STRIP" = x; then - STRIP=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - STRIP=$ac_ct_STRIP - fi -else - STRIP="$ac_cv_prog_STRIP" -fi - -test -z "$STRIP" && STRIP=: - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. -set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$RANLIB"; then - ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -RANLIB=$ac_cv_prog_RANLIB -if test -n "$RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 -$as_echo "$RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_RANLIB"; then - ac_ct_RANLIB=$RANLIB - # Extract the first word of "ranlib", so it can be a program name with args. -set dummy ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_RANLIB"; then - ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_RANLIB="ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB -if test -n "$ac_ct_RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 -$as_echo "$ac_ct_RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_RANLIB" = x; then - RANLIB=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - RANLIB=$ac_ct_RANLIB - fi -else - RANLIB="$ac_cv_prog_RANLIB" -fi - -test -z "$RANLIB" && RANLIB=: - - - - - - -# Determine commands to create old-style static archives. -old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' -old_postinstall_cmds='chmod 644 $oldlib' -old_postuninstall_cmds= - -if test -n "$RANLIB"; then - case $host_os in - bitrig* | openbsd*) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" - ;; - *) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" - ;; - esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" -fi - -case $host_os in - darwin*) - lock_old_archive_extraction=yes ;; - *) - lock_old_archive_extraction=no ;; -esac - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC - - -# Check for command to grab the raw symbol name followed by C symbol from nm. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 -$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } -if ${lt_cv_sys_global_symbol_pipe+:} false; then : - $as_echo_n "(cached) " >&6 -else - -# These are sane defaults that work on at least a few old systems. -# [They come from Ultrix. What could be older than Ultrix?!! ;)] - -# Character class describing NM global symbol codes. -symcode='[BCDEGRST]' - -# Regexp to match symbols that can be accessed directly from C. -sympat='\([_A-Za-z][_A-Za-z0-9]*\)' - -# Define system-specific variables. -case $host_os in -aix*) - symcode='[BCDT]' - ;; -cygwin* | mingw* | pw32* | cegcc*) - symcode='[ABCDGISTW]' - ;; -hpux*) - if test ia64 = "$host_cpu"; then - symcode='[ABCDEGRST]' - fi - ;; -irix* | nonstopux*) - symcode='[BCDEGRST]' - ;; -osf*) - symcode='[BCDEGQRST]' - ;; -solaris*) - symcode='[BDRT]' - ;; -sco3.2v5*) - symcode='[DT]' - ;; -sysv4.2uw2*) - symcode='[DT]' - ;; -sysv5* | sco5v6* | unixware* | OpenUNIX*) - symcode='[ABDT]' - ;; -sysv4) - symcode='[DFNSTU]' - ;; -esac - -# If we're using GNU nm, then use its standard symbol codes. -case `$NM -V 2>&1` in -*GNU* | *'with BFD'*) - symcode='[ABCDGIRSTW]' ;; -esac - -if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Gets list of data symbols to import. - lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" - # Adjust the below global symbol transforms to fixup imported variables. - lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" - lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" - lt_c_name_lib_hook="\ - -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ - -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" -else - # Disable hooks by default. - lt_cv_sys_global_symbol_to_import= - lt_cdecl_hook= - lt_c_name_hook= - lt_c_name_lib_hook= -fi - -# Transform an extracted symbol line into a proper C declaration. -# Some systems (esp. on ia64) link data and code symbols differently, -# so use this general approach. -lt_cv_sys_global_symbol_to_cdecl="sed -n"\ -$lt_cdecl_hook\ -" -e 's/^T .* \(.*\)$/extern int \1();/p'"\ -" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" - -# Transform an extracted symbol line into symbol name and symbol address -lt_cv_sys_global_symbol_to_c_name_address="sed -n"\ -$lt_c_name_hook\ -" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ -" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" - -# Transform an extracted symbol line into symbol name with lib prefix and -# symbol address. -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ -$lt_c_name_lib_hook\ -" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ -" -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ -" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" - -# Handle CRLF in mingw tool chain -opt_cr= -case $build_os in -mingw*) - opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp - ;; -esac - -# Try without a prefix underscore, then with it. -for ac_symprfx in "" "_"; do - - # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. - symxfrm="\\1 $ac_symprfx\\2 \\2" - - # Write the raw and C identifiers. - if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Fake it for dumpbin and say T for any non-static function, - # D for any global variable and I for any imported variable. - # Also find C++ and __fastcall symbols from MSVC++, - # which start with @ or ?. - lt_cv_sys_global_symbol_pipe="$AWK '"\ -" {last_section=section; section=\$ 3};"\ -" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ -" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ -" /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ -" /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ -" /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ -" \$ 0!~/External *\|/{next};"\ -" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ -" {if(hide[section]) next};"\ -" {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ -" {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ -" s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ -" s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ -" ' prfx=^$ac_symprfx" - else - lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" - fi - lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" - - # Check to see that the pipe works correctly. - pipe_works=no - - rm -f conftest* - cat > conftest.$ac_ext <<_LT_EOF -#ifdef __cplusplus -extern "C" { -#endif -char nm_test_var; -void nm_test_func(void); -void nm_test_func(void){} -#ifdef __cplusplus -} -#endif -int main(){nm_test_var='a';nm_test_func();return(0);} -_LT_EOF - - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - # Now try to grab the symbols. - nlist=conftest.nm - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 - (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s "$nlist"; then - # Try sorting and uniquifying the output. - if sort "$nlist" | uniq > "$nlist"T; then - mv -f "$nlist"T "$nlist" - else - rm -f "$nlist"T - fi - - # Make sure that we snagged all the symbols we need. - if $GREP ' nm_test_var$' "$nlist" >/dev/null; then - if $GREP ' nm_test_func$' "$nlist" >/dev/null; then - cat <<_LT_EOF > conftest.$ac_ext -/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE -/* DATA imports from DLLs on WIN32 can't be const, because runtime - relocations are performed -- see ld's documentation on pseudo-relocs. */ -# define LT_DLSYM_CONST -#elif defined __osf__ -/* This system does not cope well with relocations in const data. */ -# define LT_DLSYM_CONST -#else -# define LT_DLSYM_CONST const -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -_LT_EOF - # Now generate the symbol file. - eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' - - cat <<_LT_EOF >> conftest.$ac_ext - -/* The mapping between symbol names and symbols. */ -LT_DLSYM_CONST struct { - const char *name; - void *address; -} -lt__PROGRAM__LTX_preloaded_symbols[] = -{ - { "@PROGRAM@", (void *) 0 }, -_LT_EOF - $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext - cat <<\_LT_EOF >> conftest.$ac_ext - {0, (void *) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt__PROGRAM__LTX_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif -_LT_EOF - # Now try linking the two files. - mv conftest.$ac_objext conftstm.$ac_objext - lt_globsym_save_LIBS=$LIBS - lt_globsym_save_CFLAGS=$CFLAGS - LIBS=conftstm.$ac_objext - CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest$ac_exeext; then - pipe_works=yes - fi - LIBS=$lt_globsym_save_LIBS - CFLAGS=$lt_globsym_save_CFLAGS - else - echo "cannot find nm_test_func in $nlist" >&5 - fi - else - echo "cannot find nm_test_var in $nlist" >&5 - fi - else - echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 - fi - else - echo "$progname: failed program was:" >&5 - cat conftest.$ac_ext >&5 - fi - rm -rf conftest* conftst* - - # Do not use the global_symbol_pipe unless it works. - if test yes = "$pipe_works"; then - break - else - lt_cv_sys_global_symbol_pipe= - fi -done - -fi - -if test -z "$lt_cv_sys_global_symbol_pipe"; then - lt_cv_sys_global_symbol_to_cdecl= -fi -if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 -$as_echo "failed" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 -$as_echo "ok" >&6; } -fi - -# Response file support. -if test "$lt_cv_nm_interface" = "MS dumpbin"; then - nm_file_list_spec='@' -elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then - nm_file_list_spec='@' -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 -$as_echo_n "checking for sysroot... " >&6; } - -# Check whether --with-sysroot was given. -if test "${with_sysroot+set}" = set; then : - withval=$with_sysroot; -else - with_sysroot=no -fi - - -lt_sysroot= -case $with_sysroot in #( - yes) - if test yes = "$GCC"; then - lt_sysroot=`$CC --print-sysroot 2>/dev/null` - fi - ;; #( - /*) - lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` - ;; #( - no|'') - ;; #( - *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5 -$as_echo "$with_sysroot" >&6; } - as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 - ;; -esac - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 -$as_echo "${lt_sysroot:-no}" >&6; } - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5 -$as_echo_n "checking for a working dd... " >&6; } -if ${ac_cv_path_lt_DD+:} false; then : - $as_echo_n "(cached) " >&6 -else - printf 0123456789abcdef0123456789abcdef >conftest.i -cat conftest.i conftest.i >conftest2.i -: ${lt_DD:=$DD} -if test -z "$lt_DD"; then - ac_path_lt_DD_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in dd; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_lt_DD="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_lt_DD" || continue -if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then - cmp -s conftest.i conftest.out \ - && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: -fi - $ac_path_lt_DD_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_lt_DD"; then - : - fi -else - ac_cv_path_lt_DD=$lt_DD -fi - -rm -f conftest.i conftest2.i conftest.out -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5 -$as_echo "$ac_cv_path_lt_DD" >&6; } - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5 -$as_echo_n "checking how to truncate binary pipes... " >&6; } -if ${lt_cv_truncate_bin+:} false; then : - $as_echo_n "(cached) " >&6 -else - printf 0123456789abcdef0123456789abcdef >conftest.i -cat conftest.i conftest.i >conftest2.i -lt_cv_truncate_bin= -if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then - cmp -s conftest.i conftest.out \ - && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" -fi -rm -f conftest.i conftest2.i conftest.out -test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q" -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5 -$as_echo "$lt_cv_truncate_bin" >&6; } - - - - - - - -# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. -func_cc_basename () -{ - for cc_temp in $*""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac - done - func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` -} - -# Check whether --enable-libtool-lock was given. -if test "${enable_libtool_lock+set}" = set; then : - enableval=$enable_libtool_lock; -fi - -test no = "$enable_libtool_lock" || enable_libtool_lock=yes - -# Some flags need to be propagated to the compiler or linker for good -# libtool support. -case $host in -ia64-*-hpux*) - # Find out what ABI is being produced by ac_compile, and set mode - # options accordingly. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `/usr/bin/file conftest.$ac_objext` in - *ELF-32*) - HPUX_IA64_MODE=32 - ;; - *ELF-64*) - HPUX_IA64_MODE=64 - ;; - esac - fi - rm -rf conftest* - ;; -*-*-irix6*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. - echo '#line '$LINENO' "configure"' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - if test yes = "$lt_cv_prog_gnu_ld"; then - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -melf32bsmip" - ;; - *N32*) - LD="${LD-ld} -melf32bmipn32" - ;; - *64-bit*) - LD="${LD-ld} -melf64bmip" - ;; - esac - else - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -32" - ;; - *N32*) - LD="${LD-ld} -n32" - ;; - *64-bit*) - LD="${LD-ld} -64" - ;; - esac - fi - fi - rm -rf conftest* - ;; - -mips64*-*linux*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. - echo '#line '$LINENO' "configure"' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - emul=elf - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - emul="${emul}32" - ;; - *64-bit*) - emul="${emul}64" - ;; - esac - case `/usr/bin/file conftest.$ac_objext` in - *MSB*) - emul="${emul}btsmip" - ;; - *LSB*) - emul="${emul}ltsmip" - ;; - esac - case `/usr/bin/file conftest.$ac_objext` in - *N32*) - emul="${emul}n32" - ;; - esac - LD="${LD-ld} -m $emul" - fi - rm -rf conftest* - ;; - -x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ -s390*-*linux*|s390*-*tpf*|sparc*-*linux*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. Note that the listed cases only cover the - # situations where additional linker options are needed (such as when - # doing 32-bit compilation for a host where ld defaults to 64-bit, or - # vice versa); the common cases where no linker options are needed do - # not appear in the list. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `/usr/bin/file conftest.o` in - *32-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_i386_fbsd" - ;; - x86_64-*linux*) - case `/usr/bin/file conftest.o` in - *x86-64*) - LD="${LD-ld} -m elf32_x86_64" - ;; - *) - LD="${LD-ld} -m elf_i386" - ;; - esac - ;; - powerpc64le-*linux*) - LD="${LD-ld} -m elf32lppclinux" - ;; - powerpc64-*linux*) - LD="${LD-ld} -m elf32ppclinux" - ;; - s390x-*linux*) - LD="${LD-ld} -m elf_s390" - ;; - sparc64-*linux*) - LD="${LD-ld} -m elf32_sparc" - ;; - esac - ;; - *64-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_x86_64_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_x86_64" - ;; - powerpcle-*linux*) - LD="${LD-ld} -m elf64lppc" - ;; - powerpc-*linux*) - LD="${LD-ld} -m elf64ppc" - ;; - s390*-*linux*|s390*-*tpf*) - LD="${LD-ld} -m elf64_s390" - ;; - sparc*-*linux*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; - -*-*-sco3.2v5*) - # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS=$CFLAGS - CFLAGS="$CFLAGS -belf" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 -$as_echo_n "checking whether the C compiler needs -belf... " >&6; } -if ${lt_cv_cc_needs_belf+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - lt_cv_cc_needs_belf=yes -else - lt_cv_cc_needs_belf=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 -$as_echo "$lt_cv_cc_needs_belf" >&6; } - if test yes != "$lt_cv_cc_needs_belf"; then - # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS=$SAVE_CFLAGS - fi - ;; -*-*solaris*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `/usr/bin/file conftest.o` in - *64-bit*) - case $lt_cv_prog_gnu_ld in - yes*) - case $host in - i?86-*-solaris*|x86_64-*-solaris*) - LD="${LD-ld} -m elf_x86_64" - ;; - sparc*-*-solaris*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - # GNU ld 2.21 introduced _sol2 emulations. Use them if available. - if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then - LD=${LD-ld}_sol2 - fi - ;; - *) - if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then - LD="${LD-ld} -64" - fi - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; -esac - -need_locks=$enable_libtool_lock - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. -set dummy ${ac_tool_prefix}mt; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$MANIFEST_TOOL"; then - ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL -if test -n "$MANIFEST_TOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 -$as_echo "$MANIFEST_TOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_MANIFEST_TOOL"; then - ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL - # Extract the first word of "mt", so it can be a program name with args. -set dummy mt; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_MANIFEST_TOOL"; then - ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL -if test -n "$ac_ct_MANIFEST_TOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 -$as_echo "$ac_ct_MANIFEST_TOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_MANIFEST_TOOL" = x; then - MANIFEST_TOOL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL - fi -else - MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" -fi - -test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 -$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } -if ${lt_cv_path_mainfest_tool+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_path_mainfest_tool=no - echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 - $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out - cat conftest.err >&5 - if $GREP 'Manifest Tool' conftest.out > /dev/null; then - lt_cv_path_mainfest_tool=yes - fi - rm -f conftest* -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 -$as_echo "$lt_cv_path_mainfest_tool" >&6; } -if test yes != "$lt_cv_path_mainfest_tool"; then - MANIFEST_TOOL=: -fi - - - - - - - case $host_os in - rhapsody* | darwin*) - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. -set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DSYMUTIL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DSYMUTIL"; then - ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DSYMUTIL=$ac_cv_prog_DSYMUTIL -if test -n "$DSYMUTIL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 -$as_echo "$DSYMUTIL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_DSYMUTIL"; then - ac_ct_DSYMUTIL=$DSYMUTIL - # Extract the first word of "dsymutil", so it can be a program name with args. -set dummy dsymutil; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DSYMUTIL"; then - ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL -if test -n "$ac_ct_DSYMUTIL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 -$as_echo "$ac_ct_DSYMUTIL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_DSYMUTIL" = x; then - DSYMUTIL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DSYMUTIL=$ac_ct_DSYMUTIL - fi -else - DSYMUTIL="$ac_cv_prog_DSYMUTIL" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. -set dummy ${ac_tool_prefix}nmedit; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_NMEDIT+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$NMEDIT"; then - ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -NMEDIT=$ac_cv_prog_NMEDIT -if test -n "$NMEDIT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 -$as_echo "$NMEDIT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_NMEDIT"; then - ac_ct_NMEDIT=$NMEDIT - # Extract the first word of "nmedit", so it can be a program name with args. -set dummy nmedit; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_NMEDIT"; then - ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_NMEDIT="nmedit" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT -if test -n "$ac_ct_NMEDIT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 -$as_echo "$ac_ct_NMEDIT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_NMEDIT" = x; then - NMEDIT=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - NMEDIT=$ac_ct_NMEDIT - fi -else - NMEDIT="$ac_cv_prog_NMEDIT" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. -set dummy ${ac_tool_prefix}lipo; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_LIPO+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$LIPO"; then - ac_cv_prog_LIPO="$LIPO" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_LIPO="${ac_tool_prefix}lipo" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -LIPO=$ac_cv_prog_LIPO -if test -n "$LIPO"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 -$as_echo "$LIPO" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_LIPO"; then - ac_ct_LIPO=$LIPO - # Extract the first word of "lipo", so it can be a program name with args. -set dummy lipo; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_LIPO+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_LIPO"; then - ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_LIPO="lipo" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO -if test -n "$ac_ct_LIPO"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 -$as_echo "$ac_ct_LIPO" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_LIPO" = x; then - LIPO=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - LIPO=$ac_ct_LIPO - fi -else - LIPO="$ac_cv_prog_LIPO" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. -set dummy ${ac_tool_prefix}otool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OTOOL"; then - ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_OTOOL="${ac_tool_prefix}otool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OTOOL=$ac_cv_prog_OTOOL -if test -n "$OTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 -$as_echo "$OTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OTOOL"; then - ac_ct_OTOOL=$OTOOL - # Extract the first word of "otool", so it can be a program name with args. -set dummy otool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OTOOL"; then - ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_OTOOL="otool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL -if test -n "$ac_ct_OTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 -$as_echo "$ac_ct_OTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OTOOL" = x; then - OTOOL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OTOOL=$ac_ct_OTOOL - fi -else - OTOOL="$ac_cv_prog_OTOOL" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. -set dummy ${ac_tool_prefix}otool64; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OTOOL64+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OTOOL64"; then - ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OTOOL64=$ac_cv_prog_OTOOL64 -if test -n "$OTOOL64"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 -$as_echo "$OTOOL64" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OTOOL64"; then - ac_ct_OTOOL64=$OTOOL64 - # Extract the first word of "otool64", so it can be a program name with args. -set dummy otool64; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OTOOL64"; then - ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_OTOOL64="otool64" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 -if test -n "$ac_ct_OTOOL64"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 -$as_echo "$ac_ct_OTOOL64" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OTOOL64" = x; then - OTOOL64=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OTOOL64=$ac_ct_OTOOL64 - fi -else - OTOOL64="$ac_cv_prog_OTOOL64" -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 -$as_echo_n "checking for -single_module linker flag... " >&6; } -if ${lt_cv_apple_cc_single_mod+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_apple_cc_single_mod=no - if test -z "$LT_MULTI_MODULE"; then - # By default we will add the -single_module flag. You can override - # by either setting the environment variable LT_MULTI_MODULE - # non-empty at configure time, or by adding -multi_module to the - # link flags. - rm -rf libconftest.dylib* - echo "int foo(void){return 1;}" > conftest.c - echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ --dynamiclib -Wl,-single_module conftest.c" >&5 - $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ - -dynamiclib -Wl,-single_module conftest.c 2>conftest.err - _lt_result=$? - # If there is a non-empty error log, and "single_module" - # appears in it, assume the flag caused a linker warning - if test -s conftest.err && $GREP single_module conftest.err; then - cat conftest.err >&5 - # Otherwise, if the output was created with a 0 exit code from - # the compiler, it worked. - elif test -f libconftest.dylib && test 0 = "$_lt_result"; then - lt_cv_apple_cc_single_mod=yes - else - cat conftest.err >&5 - fi - rm -rf libconftest.dylib* - rm -f conftest.* - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 -$as_echo "$lt_cv_apple_cc_single_mod" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 -$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } -if ${lt_cv_ld_exported_symbols_list+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_exported_symbols_list=no - save_LDFLAGS=$LDFLAGS - echo "_main" > conftest.sym - LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - lt_cv_ld_exported_symbols_list=yes -else - lt_cv_ld_exported_symbols_list=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 -$as_echo "$lt_cv_ld_exported_symbols_list" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 -$as_echo_n "checking for -force_load linker flag... " >&6; } -if ${lt_cv_ld_force_load+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_force_load=no - cat > conftest.c << _LT_EOF -int forced_loaded() { return 2;} -_LT_EOF - echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 - $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 - echo "$AR cru libconftest.a conftest.o" >&5 - $AR cru libconftest.a conftest.o 2>&5 - echo "$RANLIB libconftest.a" >&5 - $RANLIB libconftest.a 2>&5 - cat > conftest.c << _LT_EOF -int main() { return 0;} -_LT_EOF - echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 - $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err - _lt_result=$? - if test -s conftest.err && $GREP force_load conftest.err; then - cat conftest.err >&5 - elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then - lt_cv_ld_force_load=yes - else - cat conftest.err >&5 - fi - rm -f conftest.err libconftest.a conftest conftest.c - rm -rf conftest.dSYM - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 -$as_echo "$lt_cv_ld_force_load" >&6; } - case $host_os in - rhapsody* | darwin1.[012]) - _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; - darwin1.*) - _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; - darwin*) # darwin 5.x on - # if running on 10.5 or later, the deployment target defaults - # to the OS version, if on x86, and 10.4, the deployment - # target defaults to 10.4. Don't you love it? - case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in - 10.0,*86*-darwin8*|10.0,*-darwin[91]*) - _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; - 10.[012][,.]*) - _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; - 10.*) - _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; - esac - ;; - esac - if test yes = "$lt_cv_apple_cc_single_mod"; then - _lt_dar_single_mod='$single_module' - fi - if test yes = "$lt_cv_ld_exported_symbols_list"; then - _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' - else - _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' - fi - if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then - _lt_dsymutil='~$DSYMUTIL $lib || :' - else - _lt_dsymutil= - fi - ;; - esac - -# func_munge_path_list VARIABLE PATH -# ----------------------------------- -# VARIABLE is name of variable containing _space_ separated list of -# directories to be munged by the contents of PATH, which is string -# having a format: -# "DIR[:DIR]:" -# string "DIR[ DIR]" will be prepended to VARIABLE -# ":DIR[:DIR]" -# string "DIR[ DIR]" will be appended to VARIABLE -# "DIRP[:DIRP]::[DIRA:]DIRA" -# string "DIRP[ DIRP]" will be prepended to VARIABLE and string -# "DIRA[ DIRA]" will be appended to VARIABLE -# "DIR[:DIR]" -# VARIABLE will be replaced by "DIR[ DIR]" -func_munge_path_list () -{ - case x$2 in - x) - ;; - *:) - eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" - ;; - x:*) - eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" - ;; - *::*) - eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" - eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" - ;; - *) - eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" - ;; - esac -} - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 -$as_echo_n "checking how to run the C preprocessor... " >&6; } -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= -fi -if test -z "$CPP"; then - if ${ac_cv_prog_CPP+:} false; then : - $as_echo_n "(cached) " >&6 -else - # Double quotes because CPP needs to be expanded - for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" - do - ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - break -fi - - done - ac_cv_prog_CPP=$CPP - -fi - CPP=$ac_cv_prog_CPP -else - ac_cv_prog_CPP=$CPP -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 -$as_echo "$CPP" >&6; } -ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details" "$LINENO" 5; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 -$as_echo_n "checking for ANSI C header files... " >&6; } -if ${ac_cv_header_stdc+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_stdc=yes -else - ac_cv_header_stdc=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then : - : -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - return 2; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - -else - ac_cv_header_stdc=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 -$as_echo "$ac_cv_header_stdc" >&6; } -if test $ac_cv_header_stdc = yes; then - -$as_echo "#define STDC_HEADERS 1" >>confdefs.h - -fi - -# On IRIX 5.3, sys/types and inttypes.h are conflicting. -for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ - inttypes.h stdint.h unistd.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default -" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - -for ac_header in dlfcn.h -do : - ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default -" -if test "x$ac_cv_header_dlfcn_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_DLFCN_H 1 -_ACEOF - -fi - -done - - - - - -# Set options - - - - enable_dlopen=no - - - enable_win32_dll=no - - - # Check whether --enable-shared was given. -if test "${enable_shared+set}" = set; then : - enableval=$enable_shared; p=${PACKAGE-default} - case $enableval in - yes) enable_shared=yes ;; - no) enable_shared=no ;; - *) - enable_shared=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, - for pkg in $enableval; do - IFS=$lt_save_ifs - if test "X$pkg" = "X$p"; then - enable_shared=yes - fi - done - IFS=$lt_save_ifs - ;; - esac -else - enable_shared=yes -fi - - - - - - - - - - # Check whether --enable-static was given. -if test "${enable_static+set}" = set; then : - enableval=$enable_static; p=${PACKAGE-default} - case $enableval in - yes) enable_static=yes ;; - no) enable_static=no ;; - *) - enable_static=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, - for pkg in $enableval; do - IFS=$lt_save_ifs - if test "X$pkg" = "X$p"; then - enable_static=yes - fi - done - IFS=$lt_save_ifs - ;; - esac -else - enable_static=yes -fi - - - - - - - - - - -# Check whether --with-pic was given. -if test "${with_pic+set}" = set; then : - withval=$with_pic; lt_p=${PACKAGE-default} - case $withval in - yes|no) pic_mode=$withval ;; - *) - pic_mode=default - # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, - for lt_pkg in $withval; do - IFS=$lt_save_ifs - if test "X$lt_pkg" = "X$lt_p"; then - pic_mode=yes - fi - done - IFS=$lt_save_ifs - ;; - esac -else - pic_mode=default -fi - - - - - - - - - # Check whether --enable-fast-install was given. -if test "${enable_fast_install+set}" = set; then : - enableval=$enable_fast_install; p=${PACKAGE-default} - case $enableval in - yes) enable_fast_install=yes ;; - no) enable_fast_install=no ;; - *) - enable_fast_install=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, - for pkg in $enableval; do - IFS=$lt_save_ifs - if test "X$pkg" = "X$p"; then - enable_fast_install=yes - fi - done - IFS=$lt_save_ifs - ;; - esac -else - enable_fast_install=yes -fi - - - - - - - - - shared_archive_member_spec= -case $host,$enable_shared in -power*-*-aix[5-9]*,yes) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5 -$as_echo_n "checking which variant of shared library versioning to provide... " >&6; } - -# Check whether --with-aix-soname was given. -if test "${with_aix_soname+set}" = set; then : - withval=$with_aix_soname; case $withval in - aix|svr4|both) - ;; - *) - as_fn_error $? "Unknown argument to --with-aix-soname" "$LINENO" 5 - ;; - esac - lt_cv_with_aix_soname=$with_aix_soname -else - if ${lt_cv_with_aix_soname+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_with_aix_soname=aix -fi - - with_aix_soname=$lt_cv_with_aix_soname -fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5 -$as_echo "$with_aix_soname" >&6; } - if test aix != "$with_aix_soname"; then - # For the AIX way of multilib, we name the shared archive member - # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', - # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. - # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, - # the AIX toolchain works better with OBJECT_MODE set (default 32). - if test 64 = "${OBJECT_MODE-32}"; then - shared_archive_member_spec=shr_64 - else - shared_archive_member_spec=shr - fi - fi - ;; -*) - with_aix_soname=aix - ;; -esac - - - - - - - - - - -# This can be used to rebuild libtool when needed -LIBTOOL_DEPS=$ltmain - -# Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -test -z "$LN_S" && LN_S="ln -s" - - - - - - - - - - - - - - -if test -n "${ZSH_VERSION+set}"; then - setopt NO_GLOB_SUBST -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 -$as_echo_n "checking for objdir... " >&6; } -if ${lt_cv_objdir+:} false; then : - $as_echo_n "(cached) " >&6 -else - rm -f .libs 2>/dev/null -mkdir .libs 2>/dev/null -if test -d .libs; then - lt_cv_objdir=.libs -else - # MS-DOS does not allow filenames that begin with a dot. - lt_cv_objdir=_libs -fi -rmdir .libs 2>/dev/null -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 -$as_echo "$lt_cv_objdir" >&6; } -objdir=$lt_cv_objdir - - - - - -cat >>confdefs.h <<_ACEOF -#define LT_OBJDIR "$lt_cv_objdir/" -_ACEOF - - - - -case $host_os in -aix3*) - # AIX sometimes has problems with the GCC collect2 program. For some - # reason, if we set the COLLECT_NAMES environment variable, the problems - # vanish in a puff of smoke. - if test set != "${COLLECT_NAMES+set}"; then - COLLECT_NAMES= - export COLLECT_NAMES - fi - ;; -esac - -# Global variables: -ofile=libtool -can_build_shared=yes - -# All known linkers require a '.a' archive for static linking (except MSVC, -# which needs '.lib'). -libext=a - -with_gnu_ld=$lt_cv_prog_gnu_ld - -old_CC=$CC -old_CFLAGS=$CFLAGS - -# Set sane defaults for various variables -test -z "$CC" && CC=cc -test -z "$LTCC" && LTCC=$CC -test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS -test -z "$LD" && LD=ld -test -z "$ac_objext" && ac_objext=o - -func_cc_basename $compiler -cc_basename=$func_cc_basename_result - - -# Only perform the check for file, if the check method requires it -test -z "$MAGIC_CMD" && MAGIC_CMD=file -case $deplibs_check_method in -file_magic*) - if test "$file_magic_cmd" = '$MAGIC_CMD'; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 -$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } -if ${lt_cv_path_MAGIC_CMD+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $MAGIC_CMD in -[\\/*] | ?:[\\/]*) - lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD=$MAGIC_CMD - lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR - ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" - for ac_dir in $ac_dummy; do - IFS=$lt_save_ifs - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/${ac_tool_prefix}file"; then - lt_cv_path_MAGIC_CMD=$ac_dir/"${ac_tool_prefix}file" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD=$lt_cv_path_MAGIC_CMD - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<_LT_EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS=$lt_save_ifs - MAGIC_CMD=$lt_save_MAGIC_CMD - ;; -esac -fi - -MAGIC_CMD=$lt_cv_path_MAGIC_CMD -if test -n "$MAGIC_CMD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 -$as_echo "$MAGIC_CMD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - - - -if test -z "$lt_cv_path_MAGIC_CMD"; then - if test -n "$ac_tool_prefix"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 -$as_echo_n "checking for file... " >&6; } -if ${lt_cv_path_MAGIC_CMD+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $MAGIC_CMD in -[\\/*] | ?:[\\/]*) - lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD=$MAGIC_CMD - lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR - ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" - for ac_dir in $ac_dummy; do - IFS=$lt_save_ifs - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/file"; then - lt_cv_path_MAGIC_CMD=$ac_dir/"file" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD=$lt_cv_path_MAGIC_CMD - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<_LT_EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS=$lt_save_ifs - MAGIC_CMD=$lt_save_MAGIC_CMD - ;; -esac -fi - -MAGIC_CMD=$lt_cv_path_MAGIC_CMD -if test -n "$MAGIC_CMD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 -$as_echo "$MAGIC_CMD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - else - MAGIC_CMD=: - fi -fi - - fi - ;; -esac - -# Use C for the default configuration in the libtool script - -lt_save_CC=$CC -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -# Source file extension for C test sources. -ac_ext=c - -# Object file extension for compiled C test sources. -objext=o -objext=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="int some_variable = 0;" - -# Code to be used in simple link tests -lt_simple_link_test_code='int main(){return(0);}' - - - - - - - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC - -# Save the default compiler, since it gets overwritten when the other -# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. -compiler_DEFAULT=$CC - -# save warnings/boilerplate of simple test code -ac_outfile=conftest.$ac_objext -echo "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$RM conftest* - -ac_outfile=conftest.$ac_objext -echo "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$RM -r conftest* - - -## CAVEAT EMPTOR: -## There is no encapsulation within the following macros, do not change -## the running order or otherwise move them around unless you know exactly -## what you are doing... -if test -n "$compiler"; then - -lt_prog_compiler_no_builtin_flag= - -if test yes = "$GCC"; then - case $cc_basename in - nvcc*) - lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; - *) - lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; - esac - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 -$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } -if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_rtti_exceptions=no - ac_outfile=conftest.$ac_objext - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="-fno-rtti -fno-exceptions" ## exclude from sc_useless_quotes_in_assignment - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_rtti_exceptions=yes - fi - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 -$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } - -if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; then - lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" -else - : -fi - -fi - - - - - - - lt_prog_compiler_wl= -lt_prog_compiler_pic= -lt_prog_compiler_static= - - - if test yes = "$GCC"; then - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_static='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test ia64 = "$host_cpu"; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static='-Bstatic' - fi - lt_prog_compiler_pic='-fPIC' - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - lt_prog_compiler_pic='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the '-m68020' flag to GCC prevents building anything better, - # like '-m68040'. - lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - lt_prog_compiler_pic='-DDLL_EXPORT' - case $host_os in - os2*) - lt_prog_compiler_static='$wl-static' - ;; - esac - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - lt_prog_compiler_pic='-fno-common' - ;; - - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - lt_prog_compiler_static= - ;; - - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic='-fPIC' - ;; - esac - ;; - - interix[3-9]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - - msdosdjgpp*) - # Just because we use GCC doesn't mean we suddenly get shared libraries - # on systems that don't support them. - lt_prog_compiler_can_build_shared=no - enable_shared=no - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic='-fPIC -shared' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - lt_prog_compiler_pic=-Kconform_pic - fi - ;; - - *) - lt_prog_compiler_pic='-fPIC' - ;; - esac - - case $cc_basename in - nvcc*) # Cuda Compiler Driver 2.2 - lt_prog_compiler_wl='-Xlinker ' - if test -n "$lt_prog_compiler_pic"; then - lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" - fi - ;; - esac - else - # PORTME Check for flag to pass linker flags through the system compiler. - case $host_os in - aix*) - lt_prog_compiler_wl='-Wl,' - if test ia64 = "$host_cpu"; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static='-Bstatic' - else - lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' - fi - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - lt_prog_compiler_pic='-fno-common' - case $cc_basename in - nagfor*) - # NAG Fortran compiler - lt_prog_compiler_wl='-Wl,-Wl,,' - lt_prog_compiler_pic='-PIC' - lt_prog_compiler_static='-Bstatic' - ;; - esac - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - lt_prog_compiler_pic='-DDLL_EXPORT' - case $host_os in - os2*) - lt_prog_compiler_static='$wl-static' - ;; - esac - ;; - - hpux9* | hpux10* | hpux11*) - lt_prog_compiler_wl='-Wl,' - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic='+Z' - ;; - esac - # Is there a better lt_prog_compiler_static that works with the bundled CC? - lt_prog_compiler_static='$wl-a ${wl}archive' - ;; - - irix5* | irix6* | nonstopux*) - lt_prog_compiler_wl='-Wl,' - # PIC (with -KPIC) is the default. - lt_prog_compiler_static='-non_shared' - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - case $cc_basename in - # old Intel for x86_64, which still supported -KPIC. - ecc*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-static' - ;; - # icc used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - icc* | ifort*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fPIC' - lt_prog_compiler_static='-static' - ;; - # Lahey Fortran 8.1. - lf95*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='--shared' - lt_prog_compiler_static='--static' - ;; - nagfor*) - # NAG Fortran compiler - lt_prog_compiler_wl='-Wl,-Wl,,' - lt_prog_compiler_pic='-PIC' - lt_prog_compiler_static='-Bstatic' - ;; - tcc*) - # Fabrice Bellard et al's Tiny C Compiler - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fPIC' - lt_prog_compiler_static='-static' - ;; - pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group compilers (*not* the Pentium gcc compiler, - # which looks to be a dead project) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fpic' - lt_prog_compiler_static='-Bstatic' - ;; - ccc*) - lt_prog_compiler_wl='-Wl,' - # All Alpha code is PIC. - lt_prog_compiler_static='-non_shared' - ;; - xl* | bgxl* | bgf* | mpixl*) - # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-qpic' - lt_prog_compiler_static='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) - # Sun Fortran 8.3 passes all unrecognized flags to the linker - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='' - ;; - *Sun\ F* | *Sun*Fortran*) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='-Qoption ld ' - ;; - *Sun\ C*) - # Sun C 5.9 - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='-Wl,' - ;; - *Intel*\ [CF]*Compiler*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fPIC' - lt_prog_compiler_static='-static' - ;; - *Portland\ Group*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fpic' - lt_prog_compiler_static='-Bstatic' - ;; - esac - ;; - esac - ;; - - newsos6) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic='-fPIC -shared' - ;; - - osf3* | osf4* | osf5*) - lt_prog_compiler_wl='-Wl,' - # All OSF/1 code is PIC. - lt_prog_compiler_static='-non_shared' - ;; - - rdos*) - lt_prog_compiler_static='-non_shared' - ;; - - solaris*) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - case $cc_basename in - f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) - lt_prog_compiler_wl='-Qoption ld ';; - *) - lt_prog_compiler_wl='-Wl,';; - esac - ;; - - sunos4*) - lt_prog_compiler_wl='-Qoption ld ' - lt_prog_compiler_pic='-PIC' - lt_prog_compiler_static='-Bstatic' - ;; - - sysv4 | sysv4.2uw2* | sysv4.3*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - lt_prog_compiler_pic='-Kconform_pic' - lt_prog_compiler_static='-Bstatic' - fi - ;; - - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - unicos*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_can_build_shared=no - ;; - - uts4*) - lt_prog_compiler_pic='-pic' - lt_prog_compiler_static='-Bstatic' - ;; - - *) - lt_prog_compiler_can_build_shared=no - ;; - esac - fi - -case $host_os in - # For platforms that do not support PIC, -DPIC is meaningless: - *djgpp*) - lt_prog_compiler_pic= - ;; - *) - lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" - ;; -esac - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 -$as_echo_n "checking for $compiler option to produce PIC... " >&6; } -if ${lt_cv_prog_compiler_pic+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_pic=$lt_prog_compiler_pic -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 -$as_echo "$lt_cv_prog_compiler_pic" >&6; } -lt_prog_compiler_pic=$lt_cv_prog_compiler_pic - -# -# Check to make sure the PIC flag actually works. -# -if test -n "$lt_prog_compiler_pic"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 -$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } -if ${lt_cv_prog_compiler_pic_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_pic_works=no - ac_outfile=conftest.$ac_objext - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$lt_prog_compiler_pic -DPIC" ## exclude from sc_useless_quotes_in_assignment - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_pic_works=yes - fi - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 -$as_echo "$lt_cv_prog_compiler_pic_works" >&6; } - -if test yes = "$lt_cv_prog_compiler_pic_works"; then - case $lt_prog_compiler_pic in - "" | " "*) ;; - *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; - esac -else - lt_prog_compiler_pic= - lt_prog_compiler_can_build_shared=no -fi - -fi - - - - - - - - - - - -# -# Check to make sure the static flag actually works. -# -wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } -if ${lt_cv_prog_compiler_static_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_static_works=no - save_LDFLAGS=$LDFLAGS - LDFLAGS="$LDFLAGS $lt_tmp_static_flag" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&5 - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_static_works=yes - fi - else - lt_cv_prog_compiler_static_works=yes - fi - fi - $RM -r conftest* - LDFLAGS=$save_LDFLAGS - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 -$as_echo "$lt_cv_prog_compiler_static_works" >&6; } - -if test yes = "$lt_cv_prog_compiler_static_works"; then - : -else - lt_prog_compiler_static= -fi - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 -$as_echo "$lt_cv_prog_compiler_c_o" >&6; } - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 -$as_echo "$lt_cv_prog_compiler_c_o" >&6; } - - - - -hard_links=nottested -if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then - # do not overwrite the value of need_locks provided by the user - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 -$as_echo_n "checking if we can lock with hard links... " >&6; } - hard_links=yes - $RM conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 -$as_echo "$hard_links" >&6; } - if test no = "$hard_links"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 -$as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} - need_locks=warn - fi -else - need_locks=no -fi - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } - - runpath_var= - allow_undefined_flag= - always_export_symbols=no - archive_cmds= - archive_expsym_cmds= - compiler_needs_object=no - enable_shared_with_static_runtimes=no - export_dynamic_flag_spec= - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - hardcode_automatic=no - hardcode_direct=no - hardcode_direct_absolute=no - hardcode_libdir_flag_spec= - hardcode_libdir_separator= - hardcode_minus_L=no - hardcode_shlibpath_var=unsupported - inherit_rpath=no - link_all_deplibs=unknown - module_cmds= - module_expsym_cmds= - old_archive_from_new_cmds= - old_archive_from_expsyms_cmds= - thread_safe_flag_spec= - whole_archive_flag_spec= - # include_expsyms should be a list of space-separated symbols to be *always* - # included in the symbol list - include_expsyms= - # exclude_expsyms can be an extended regexp of symbols to exclude - # it will be wrapped by ' (' and ')$', so one must not match beginning or - # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', - # as well as any symbol that contains 'd'. - exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' - # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out - # platforms (ab)use it in PIC code, but their linkers get confused if - # the symbol is explicitly referenced. Since portable code cannot - # rely on this symbol name, it's probably fine to never include it in - # preloaded symbol tables. - # Exclude shared library initialization/finalization symbols. - extract_expsyms_cmds= - - case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - # FIXME: the MSVC++ port hasn't been tested in a loooong time - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - if test yes != "$GCC"; then - with_gnu_ld=no - fi - ;; - interix*) - # we just hope/assume this is gcc and not c89 (= MSVC++) - with_gnu_ld=yes - ;; - openbsd* | bitrig*) - with_gnu_ld=no - ;; - esac - - ld_shlibs=yes - - # On some targets, GNU ld is compatible enough with the native linker - # that we're better off using the native interface for both. - lt_use_gnu_ld_interface=no - if test yes = "$with_gnu_ld"; then - case $host_os in - aix*) - # The AIX port of GNU ld has always aspired to compatibility - # with the native linker. However, as the warning in the GNU ld - # block says, versions before 2.19.5* couldn't really create working - # shared libraries, regardless of the interface used. - case `$LD -v 2>&1` in - *\ \(GNU\ Binutils\)\ 2.19.5*) ;; - *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; - *\ \(GNU\ Binutils\)\ [3-9]*) ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - fi - - if test yes = "$lt_use_gnu_ld_interface"; then - # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='$wl' - - # Set some defaults for GNU ld with shared library support. These - # are reset later if shared libraries are not supported. Putting them - # here allows them to be overridden if necessary. - runpath_var=LD_RUN_PATH - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - export_dynamic_flag_spec='$wl--export-dynamic' - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then - whole_archive_flag_spec=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' - else - whole_archive_flag_spec= - fi - supports_anon_versioning=no - case `$LD -v | $SED -e 's/(^)\+)\s\+//' 2>&1` in - *GNU\ gold*) supports_anon_versioning=yes ;; - *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 - *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... - *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... - *\ 2.11.*) ;; # other 2.11 versions - *) supports_anon_versioning=yes ;; - esac - - # See if GNU ld supports shared libraries. - case $host_os in - aix[3-9]*) - # On AIX/PPC, the GNU linker is very broken - if test ia64 != "$host_cpu"; then - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: the GNU linker, at least up to release 2.19, is reported -*** to be unable to reliably create shared libraries on AIX. -*** Therefore, libtool is disabling shared libraries support. If you -*** really care for shared libraries, you may want to install binutils -*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. -*** You will then need to restart the configuration process. - -_LT_EOF - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds='' - ;; - m68k) - archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - ;; - esac - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - allow_undefined_flag=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - else - ld_shlibs=no - fi - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, - # as there is no search path for DLLs. - hardcode_libdir_flag_spec='-L$libdir' - export_dynamic_flag_spec='$wl--export-all-symbols' - allow_undefined_flag=unsupported - always_export_symbols=no - enable_shared_with_static_runtimes=yes - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' - exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file, use it as - # is; otherwise, prepend EXPORTS... - archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - ld_shlibs=no - fi - ;; - - haiku*) - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - link_all_deplibs=yes - ;; - - os2*) - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - allow_undefined_flag=unsupported - shrext_cmds=.dll - archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - prefix_cmds="$SED"~ - if test EXPORTS = "`$SED 1q $export_symbols`"; then - prefix_cmds="$prefix_cmds -e 1d"; - fi~ - prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ - cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' - enable_shared_with_static_runtimes=yes - ;; - - interix[3-9]*) - hardcode_direct=no - hardcode_shlibpath_var=no - hardcode_libdir_flag_spec='$wl-rpath,$libdir' - export_dynamic_flag_spec='$wl-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - archive_expsym_cmds='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - - gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) - tmp_diet=no - if test linux-dietlibc = "$host_os"; then - case $cc_basename in - diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) - esac - fi - if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ - && test no = "$tmp_diet" - then - tmp_addflag=' $pic_flag' - tmp_sharedflag='-shared' - case $cc_basename,$host_cpu in - pgcc*) # Portland Group C compiler - whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' - tmp_addflag=' $pic_flag' - ;; - pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group f77 and f90 compilers - whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' - tmp_addflag=' $pic_flag -Mnomain' ;; - ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 - tmp_addflag=' -i_dynamic' ;; - efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 - tmp_addflag=' -i_dynamic -nofor_main' ;; - ifc* | ifort*) # Intel Fortran compiler - tmp_addflag=' -nofor_main' ;; - lf95*) # Lahey Fortran 8.1 - whole_archive_flag_spec= - tmp_sharedflag='--shared' ;; - nagfor*) # NAGFOR 5.3 - tmp_sharedflag='-Wl,-shared' ;; - xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) - tmp_sharedflag='-qmkshrobj' - tmp_addflag= ;; - nvcc*) # Cuda Compiler Driver 2.2 - whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' - compiler_needs_object=yes - ;; - esac - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) # Sun C 5.9 - whole_archive_flag_spec='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' - compiler_needs_object=yes - tmp_sharedflag='-G' ;; - *Sun\ F*) # Sun Fortran 8.3 - tmp_sharedflag='-G' ;; - esac - archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - - if test yes = "$supports_anon_versioning"; then - archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' - fi - - case $cc_basename in - tcc*) - export_dynamic_flag_spec='-rdynamic' - ;; - xlf* | bgf* | bgxlf* | mpixlf*) - # IBM XL Fortran 10.1 on PPC cannot create shared libs itself - whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' - if test yes = "$supports_anon_versioning"; then - archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' - fi - ;; - esac - else - ld_shlibs=no - fi - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' - wlarc= - else - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - fi - ;; - - solaris*) - if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: The releases 2.8.* of the GNU linker cannot reliably -*** create shared libraries on Solaris systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.9.1 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - - sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) - case `$LD -v 2>&1` in - *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot -*** reliably create shared libraries on SCO systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.16.91.0.3 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - ;; - *) - # For security reasons, it is highly recommended that you always - # use absolute paths for naming shared libraries, and exclude the - # DT_RUNPATH tag from executables and libraries. But doing so - # requires that you compile everything twice, which is a pain. - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - esac - ;; - - sunos4*) - archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' - wlarc= - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - *) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - esac - - if test no = "$ld_shlibs"; then - runpath_var= - hardcode_libdir_flag_spec= - export_dynamic_flag_spec= - whole_archive_flag_spec= - fi - else - # PORTME fill in a description of your system's linker (not GNU ld) - case $host_os in - aix3*) - allow_undefined_flag=unsupported - always_export_symbols=yes - archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' - # Note: this linker hardcodes the directories in LIBPATH if there - # are no directories specified by -L. - hardcode_minus_L=yes - if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - hardcode_direct=unsupported - fi - ;; - - aix[4-9]*) - if test ia64 = "$host_cpu"; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag= - else - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to GNU nm, but means don't demangle to AIX nm. - # Without the "-l" option, or with the "-B" option, AIX nm treats - # weak defined symbols like other global defined symbols, whereas - # GNU nm marks them as "W". - # While the 'weak' keyword is ignored in the Export File, we need - # it in the Import File for the 'aix-soname' feature, so we have - # to replace the "-B" option with "-P" for AIX nm. - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' - else - export_symbols_cmds='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' - fi - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # have runtime linking enabled, and use it for executables. - # For shared libraries, we enable/disable runtime linking - # depending on the kind of the shared library created - - # when "with_aix_soname,aix_use_runtimelinking" is: - # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables - # "aix,yes" lib.so shared, rtl:yes, for executables - # lib.a static archive - # "both,no" lib.so.V(shr.o) shared, rtl:yes - # lib.a(lib.so.V) shared, rtl:no, for executables - # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables - # lib.a(lib.so.V) shared, rtl:no - # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables - # lib.a static archive - case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) - for ld_flag in $LDFLAGS; do - if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then - aix_use_runtimelinking=yes - break - fi - done - if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then - # With aix-soname=svr4, we create the lib.so.V shared archives only, - # so we don't have lib.a shared libs to link our executables. - # We have to force runtime linking in this case. - aix_use_runtimelinking=yes - LDFLAGS="$LDFLAGS -Wl,-brtl" - fi - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - archive_cmds='' - hardcode_direct=yes - hardcode_direct_absolute=yes - hardcode_libdir_separator=':' - link_all_deplibs=yes - file_list_spec='$wl-f,' - case $with_aix_soname,$aix_use_runtimelinking in - aix,*) ;; # traditional, no import file - svr4,* | *,yes) # use import file - # The Import File defines what to hardcode. - hardcode_direct=no - hardcode_direct_absolute=no - ;; - esac - - if test yes = "$GCC"; then - case $host_os in aix4.[012]|aix4.[012].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`$CC -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - hardcode_direct=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - hardcode_minus_L=yes - hardcode_libdir_flag_spec='-L$libdir' - hardcode_libdir_separator= - fi - ;; - esac - shared_flag='-shared' - if test yes = "$aix_use_runtimelinking"; then - shared_flag="$shared_flag "'$wl-G' - fi - # Need to ensure runtime linking is disabled for the traditional - # shared library, or the linker may eventually find shared libraries - # /with/ Import File - we do not want to mix them. - shared_flag_aix='-shared' - shared_flag_svr4='-shared $wl-G' - else - # not using gcc - if test ia64 = "$host_cpu"; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test yes = "$aix_use_runtimelinking"; then - shared_flag='$wl-G' - else - shared_flag='$wl-bM:SRE' - fi - shared_flag_aix='$wl-bM:SRE' - shared_flag_svr4='$wl-G' - fi - fi - - export_dynamic_flag_spec='$wl-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to export. - always_export_symbols=yes - if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - allow_undefined_flag='-berok' - # Determine the default libpath from the value encoded in an - # empty executable. - if test set = "${lt_cv_aix_libpath+set}"; then - aix_libpath=$lt_cv_aix_libpath -else - if ${lt_cv_aix_libpath_+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_=/usr/lib:/lib - fi - -fi - - aix_libpath=$lt_cv_aix_libpath_ -fi - - hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" - archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag - else - if test ia64 = "$host_cpu"; then - hardcode_libdir_flag_spec='$wl-R $libdir:/usr/lib:/lib' - allow_undefined_flag="-z nodefs" - archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - if test set = "${lt_cv_aix_libpath+set}"; then - aix_libpath=$lt_cv_aix_libpath -else - if ${lt_cv_aix_libpath_+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_=/usr/lib:/lib - fi - -fi - - aix_libpath=$lt_cv_aix_libpath_ -fi - - hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - no_undefined_flag=' $wl-bernotok' - allow_undefined_flag=' $wl-berok' - if test yes = "$with_gnu_ld"; then - # We only use this code for GNU lds that support --whole-archive. - whole_archive_flag_spec='$wl--whole-archive$convenience $wl--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - whole_archive_flag_spec='$convenience' - fi - archive_cmds_need_lc=yes - archive_expsym_cmds='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' - # -brtl affects multiple linker settings, -berok does not and is overridden later - compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' - if test svr4 != "$with_aix_soname"; then - # This is similar to how AIX traditionally builds its shared libraries. - archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' - fi - if test aix != "$with_aix_soname"; then - archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' - else - # used by -dlpreopen to get the symbols - archive_expsym_cmds="$archive_expsym_cmds"'~$MV $output_objdir/$realname.d/$soname $output_objdir' - fi - archive_expsym_cmds="$archive_expsym_cmds"'~$RM -r $output_objdir/$realname.d' - fi - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds='' - ;; - m68k) - archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - ;; - esac - ;; - - bsdi[45]*) - export_dynamic_flag_spec=-rdynamic - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - case $cc_basename in - cl*) - # Native MSVC - hardcode_libdir_flag_spec=' ' - allow_undefined_flag=unsupported - always_export_symbols=yes - file_list_spec='@' - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=.dll - # FIXME: Setting linknames here is a bad hack. - archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' - archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then - cp "$export_symbols" "$output_objdir/$soname.def"; - echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; - else - $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' - # The linker will not automatically build a static lib if we build a DLL. - # _LT_TAGVAR(old_archive_from_new_cmds, )='true' - enable_shared_with_static_runtimes=yes - exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' - # Don't use ranlib - old_postinstall_cmds='chmod 644 $oldlib' - postlink_cmds='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile=$lt_outputfile.exe - lt_tool_outputfile=$lt_tool_outputfile.exe - ;; - esac~ - if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' - ;; - *) - # Assume MSVC wrapper - hardcode_libdir_flag_spec=' ' - allow_undefined_flag=unsupported - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=.dll - # FIXME: Setting linknames here is a bad hack. - archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' - # The linker will automatically build a .lib file if we build a DLL. - old_archive_from_new_cmds='true' - # FIXME: Should let the user specify the lib program. - old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' - enable_shared_with_static_runtimes=yes - ;; - esac - ;; - - darwin* | rhapsody*) - - - archive_cmds_need_lc=no - hardcode_direct=no - hardcode_automatic=yes - hardcode_shlibpath_var=unsupported - if test yes = "$lt_cv_ld_force_load"; then - whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' - - else - whole_archive_flag_spec='' - fi - link_all_deplibs=yes - allow_undefined_flag=$_lt_dar_allow_undefined - case $cc_basename in - ifort*|nagfor*) _lt_dar_can_shared=yes ;; - *) _lt_dar_can_shared=$GCC ;; - esac - if test yes = "$_lt_dar_can_shared"; then - output_verbose_link_cmd=func_echo_all - archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" - module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" - archive_expsym_cmds="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" - module_expsym_cmds="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" - - else - ld_shlibs=no - fi - - ;; - - dgux*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_shlibpath_var=no - ;; - - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor - # support. Future versions do this automatically, but an explicit c++rt0.o - # does not break anything, and helps significantly (at the cost of a little - # extra space). - freebsd2.2*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2.*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - - # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd* | dragonfly*) - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - hpux9*) - if test yes = "$GCC"; then - archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' - else - archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' - fi - hardcode_libdir_flag_spec='$wl+b $wl$libdir' - hardcode_libdir_separator=: - hardcode_direct=yes - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - export_dynamic_flag_spec='$wl-E' - ;; - - hpux10*) - if test yes,no = "$GCC,$with_gnu_ld"; then - archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' - fi - if test no = "$with_gnu_ld"; then - hardcode_libdir_flag_spec='$wl+b $wl$libdir' - hardcode_libdir_separator=: - hardcode_direct=yes - hardcode_direct_absolute=yes - export_dynamic_flag_spec='$wl-E' - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - fi - ;; - - hpux11*) - if test yes,no = "$GCC,$with_gnu_ld"; then - case $host_cpu in - hppa*64*) - archive_cmds='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - else - case $host_cpu in - hppa*64*) - archive_cmds='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - archive_cmds='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - - # Older versions of the 11.00 compiler do not understand -b yet - # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 -$as_echo_n "checking if $CC understands -b... " >&6; } -if ${lt_cv_prog_compiler__b+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler__b=no - save_LDFLAGS=$LDFLAGS - LDFLAGS="$LDFLAGS -b" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&5 - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler__b=yes - fi - else - lt_cv_prog_compiler__b=yes - fi - fi - $RM -r conftest* - LDFLAGS=$save_LDFLAGS - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 -$as_echo "$lt_cv_prog_compiler__b" >&6; } - -if test yes = "$lt_cv_prog_compiler__b"; then - archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' -else - archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' -fi - - ;; - esac - fi - if test no = "$with_gnu_ld"; then - hardcode_libdir_flag_spec='$wl+b $wl$libdir' - hardcode_libdir_separator=: - - case $host_cpu in - hppa*64*|ia64*) - hardcode_direct=no - hardcode_shlibpath_var=no - ;; - *) - hardcode_direct=yes - hardcode_direct_absolute=yes - export_dynamic_flag_spec='$wl-E' - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - ;; - esac - fi - ;; - - irix5* | irix6* | nonstopux*) - if test yes = "$GCC"; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' - # Try to use the -exported_symbol ld option, if it does not - # work, assume that -exports_file does not work either and - # implicitly export all symbols. - # This should be the same for all languages, so no per-tag cache variable. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 -$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } -if ${lt_cv_irix_exported_symbol+:} false; then : - $as_echo_n "(cached) " >&6 -else - save_LDFLAGS=$LDFLAGS - LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -int foo (void) { return 0; } -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - lt_cv_irix_exported_symbol=yes -else - lt_cv_irix_exported_symbol=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 -$as_echo "$lt_cv_irix_exported_symbol" >&6; } - if test yes = "$lt_cv_irix_exported_symbol"; then - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' - fi - else - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' - fi - archive_cmds_need_lc='no' - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - hardcode_libdir_separator=: - inherit_rpath=yes - link_all_deplibs=yes - ;; - - linux*) - case $cc_basename in - tcc*) - # Fabrice Bellard et al's Tiny C Compiler - ld_shlibs=yes - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out - else - archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF - fi - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - newsos6) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - hardcode_libdir_separator=: - hardcode_shlibpath_var=no - ;; - - *nto* | *qnx*) - ;; - - openbsd* | bitrig*) - if test -f /usr/libexec/ld.so; then - hardcode_direct=yes - hardcode_shlibpath_var=no - hardcode_direct_absolute=yes - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' - hardcode_libdir_flag_spec='$wl-rpath,$libdir' - export_dynamic_flag_spec='$wl-E' - else - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec='$wl-rpath,$libdir' - fi - else - ld_shlibs=no - fi - ;; - - os2*) - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - allow_undefined_flag=unsupported - shrext_cmds=.dll - archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - prefix_cmds="$SED"~ - if test EXPORTS = "`$SED 1q $export_symbols`"; then - prefix_cmds="$prefix_cmds -e 1d"; - fi~ - prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ - cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' - enable_shared_with_static_runtimes=yes - ;; - - osf3*) - if test yes = "$GCC"; then - allow_undefined_flag=' $wl-expect_unresolved $wl\*' - archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' - else - allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' - fi - archive_cmds_need_lc='no' - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - hardcode_libdir_separator=: - ;; - - osf4* | osf5*) # as osf3* with the addition of -msym flag - if test yes = "$GCC"; then - allow_undefined_flag=' $wl-expect_unresolved $wl\*' - archive_cmds='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - else - allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' - archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ - $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' - - # Both c and cxx compiler support -rpath directly - hardcode_libdir_flag_spec='-rpath $libdir' - fi - archive_cmds_need_lc='no' - hardcode_libdir_separator=: - ;; - - solaris*) - no_undefined_flag=' -z defs' - if test yes = "$GCC"; then - wlarc='$wl' - archive_cmds='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - else - case `$CC -V 2>&1` in - *"Compilers 5.0"*) - wlarc='' - archive_cmds='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' - ;; - *) - wlarc='$wl' - archive_cmds='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - ;; - esac - fi - hardcode_libdir_flag_spec='-R$libdir' - hardcode_shlibpath_var=no - case $host_os in - solaris2.[0-5] | solaris2.[0-5].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands '-z linker_flag'. GCC discards it without '$wl', - # but is careful enough not to reorder. - # Supported since Solaris 2.6 (maybe 2.5.1?) - if test yes = "$GCC"; then - whole_archive_flag_spec='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' - else - whole_archive_flag_spec='-z allextract$convenience -z defaultextract' - fi - ;; - esac - link_all_deplibs=yes - ;; - - sunos4*) - if test sequent = "$host_vendor"; then - # Use $CC to link under sequent, because it throws in some extra .o - # files that make .init and .fini sections work. - archive_cmds='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' - fi - hardcode_libdir_flag_spec='-L$libdir' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - - sysv4) - case $host_vendor in - sni) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes # is this really true??? - ;; - siemens) - ## LD is ld it makes a PLAMLIB - ## CC just makes a GrossModule. - archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' - reload_cmds='$CC -r -o $output$reload_objs' - hardcode_direct=no - ;; - motorola) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=no #Motorola manual says yes, but my tests say they lie - ;; - esac - runpath_var='LD_RUN_PATH' - hardcode_shlibpath_var=no - ;; - - sysv4.3*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var=no - export_dynamic_flag_spec='-Bexport' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - ld_shlibs=yes - fi - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) - no_undefined_flag='$wl-z,text' - archive_cmds_need_lc=no - hardcode_shlibpath_var=no - runpath_var='LD_RUN_PATH' - - if test yes = "$GCC"; then - archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We CANNOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - no_undefined_flag='$wl-z,text' - allow_undefined_flag='$wl-z,nodefs' - archive_cmds_need_lc=no - hardcode_shlibpath_var=no - hardcode_libdir_flag_spec='$wl-R,$libdir' - hardcode_libdir_separator=':' - link_all_deplibs=yes - export_dynamic_flag_spec='$wl-Bexport' - runpath_var='LD_RUN_PATH' - - if test yes = "$GCC"; then - archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - uts4*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_shlibpath_var=no - ;; - - *) - ld_shlibs=no - ;; - esac - - if test sni = "$host_vendor"; then - case $host in - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - export_dynamic_flag_spec='$wl-Blargedynsym' - ;; - esac - fi - fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 -$as_echo "$ld_shlibs" >&6; } -test no = "$ld_shlibs" && can_build_shared=no - -with_gnu_ld=$with_gnu_ld - - - - - - - - - - - - - - - -# -# Do we need to explicitly link libc? -# -case "x$archive_cmds_need_lc" in -x|xyes) - # Assume -lc should be added - archive_cmds_need_lc=yes - - if test yes,yes = "$GCC,$enable_shared"; then - case $archive_cmds in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 -$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } -if ${lt_cv_archive_cmds_need_lc+:} false; then : - $as_echo_n "(cached) " >&6 -else - $RM conftest* - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$lt_prog_compiler_wl - pic_flag=$lt_prog_compiler_pic - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$allow_undefined_flag - allow_undefined_flag= - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 - (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - then - lt_cv_archive_cmds_need_lc=no - else - lt_cv_archive_cmds_need_lc=yes - fi - allow_undefined_flag=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 -$as_echo "$lt_cv_archive_cmds_need_lc" >&6; } - archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc - ;; - esac - fi - ;; -esac - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 -$as_echo_n "checking dynamic linker characteristics... " >&6; } - -if test yes = "$GCC"; then - case $host_os in - darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; - *) lt_awk_arg='/^libraries:/' ;; - esac - case $host_os in - mingw* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;; - *) lt_sed_strip_eq='s|=/|/|g' ;; - esac - lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` - case $lt_search_path_spec in - *\;*) - # if the path contains ";" then we assume it to be the separator - # otherwise default to the standard path separator (i.e. ":") - it is - # assumed that no part of a normal pathname contains ";" but that should - # okay in the real world where ";" in dirpaths is itself problematic. - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` - ;; - *) - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` - ;; - esac - # Ok, now we have the path, separated by spaces, we can step through it - # and add multilib dir if necessary... - lt_tmp_lt_search_path_spec= - lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` - # ...but if some path component already ends with the multilib dir we assume - # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). - case "$lt_multi_os_dir; $lt_search_path_spec " in - "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) - lt_multi_os_dir= - ;; - esac - for lt_sys_path in $lt_search_path_spec; do - if test -d "$lt_sys_path$lt_multi_os_dir"; then - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" - elif test -n "$lt_multi_os_dir"; then - test -d "$lt_sys_path" && \ - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" - fi - done - lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' -BEGIN {RS = " "; FS = "/|\n";} { - lt_foo = ""; - lt_count = 0; - for (lt_i = NF; lt_i > 0; lt_i--) { - if ($lt_i != "" && $lt_i != ".") { - if ($lt_i == "..") { - lt_count++; - } else { - if (lt_count == 0) { - lt_foo = "/" $lt_i lt_foo; - } else { - lt_count--; - } - } - } - } - if (lt_foo != "") { lt_freq[lt_foo]++; } - if (lt_freq[lt_foo] == 1) { print lt_foo; } -}'` - # AWK program above erroneously prepends '/' to C:/dos/paths - # for these hosts. - case $host_os in - mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ - $SED 's|/\([A-Za-z]:\)|\1|g'` ;; - esac - sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` -else - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -fi -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=.so -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - - - -case $host_os in -aix3*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='$libname$release$shared_ext$major' - ;; - -aix[4-9]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test ia64 = "$host_cpu"; then - # AIX 5 supports IA64 - library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line '#! .'. This would cause the generated library to - # depend on '.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[01] | aix4.[01].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # Using Import Files as archive members, it is possible to support - # filename-based versioning of shared library archives on AIX. While - # this would work for both with and without runtime linking, it will - # prevent static linking of such archives. So we do filename-based - # shared library versioning with .so extension only, which is used - # when both runtime linking and shared linking is enabled. - # Unfortunately, runtime linking may impact performance, so we do - # not want this to be the default eventually. Also, we use the - # versioned .so libs for executables only if there is the -brtl - # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. - # To allow for filename-based versioning support, we need to create - # libNAME.so.V as an archive file, containing: - # *) an Import File, referring to the versioned filename of the - # archive as well as the shared archive member, telling the - # bitwidth (32 or 64) of that shared object, and providing the - # list of exported symbols of that shared object, eventually - # decorated with the 'weak' keyword - # *) the shared object with the F_LOADONLY flag set, to really avoid - # it being seen by the linker. - # At run time we better use the real file rather than another symlink, - # but for link time we create the symlink libNAME.so -> libNAME.so.V - - case $with_aix_soname,$aix_use_runtimelinking in - # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - aix,yes) # traditional libtool - dynamic_linker='AIX unversionable lib.so' - # If using run time linking (on AIX 4.2 or later) use lib.so - # instead of lib.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - ;; - aix,no) # traditional AIX only - dynamic_linker='AIX lib.a(lib.so.V)' - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='$libname$release.a $libname.a' - soname_spec='$libname$release$shared_ext$major' - ;; - svr4,*) # full svr4 only - dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" - library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' - # We do not specify a path in Import Files, so LIBPATH fires. - shlibpath_overrides_runpath=yes - ;; - *,yes) # both, prefer svr4 - dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" - library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' - # unpreferred sharedlib libNAME.a needs extra handling - postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' - postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' - # We do not specify a path in Import Files, so LIBPATH fires. - shlibpath_overrides_runpath=yes - ;; - *,no) # both, prefer aix - dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" - library_names_spec='$libname$release.a $libname.a' - soname_spec='$libname$release$shared_ext$major' - # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling - postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' - postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' - ;; - esac - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - case $host_cpu in - powerpc) - # Since July 2007 AmigaOS4 officially supports .so libraries. - # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - ;; - m68k) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' - ;; - esac - ;; - -beos*) - library_names_spec='$libname$shared_ext' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi[45]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | mingw* | pw32* | cegcc*) - version_type=windows - shrext_cmds=.dll - need_version=no - need_lib_prefix=no - - case $GCC,$cc_basename in - yes,*) - # gcc - library_names_spec='$libname.dll.a' - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \$file`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - - case $host_os in - cygwin*) - # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' - - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" - ;; - mingw* | cegcc*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' - ;; - pw32*) - # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' - ;; - esac - dynamic_linker='Win32 ld.exe' - ;; - - *,cl*) - # Native MSVC - libname_spec='$name' - soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' - library_names_spec='$libname.dll.lib' - - case $build_os in - mingw*) - sys_lib_search_path_spec= - lt_save_ifs=$IFS - IFS=';' - for lt_path in $LIB - do - IFS=$lt_save_ifs - # Let DOS variable expansion print the short 8.3 style file name. - lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` - sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" - done - IFS=$lt_save_ifs - # Convert to MSYS style. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` - ;; - cygwin*) - # Convert to unix form, then to dos form, then back to unix form - # but this time dos style (no spaces!) so that the unix form looks - # like /cygdrive/c/PROGRA~1:/cygdr... - sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` - sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` - sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - ;; - *) - sys_lib_search_path_spec=$LIB - if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then - # It is most probably a Windows format PATH. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi - # FIXME: find the short name or the path components, as spaces are - # common. (e.g. "Program Files" -> "PROGRA~1") - ;; - esac - - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \$file`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - dynamic_linker='Win32 link.exe' - ;; - - *) - # Assume MSVC wrapper - library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' - dynamic_linker='Win32 ld.exe' - ;; - esac - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' - soname_spec='$libname$release$major$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' - - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - -dgux*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -freebsd* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - if test -x /usr/bin/objformat; then - objformat=`/usr/bin/objformat` - else - case $host_os in - freebsd[23].*) objformat=aout ;; - *) objformat=elf ;; - esac - fi - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2.*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[01]* | freebsdelf3.[01]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ - freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - *) # from 4.6 on, and DragonFly - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - esac - ;; - -haiku*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - dynamic_linker="$host_os runtime_loader" - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LIBRARY_PATH - shlibpath_overrides_runpath=no - sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' - hardcode_into_libs=yes - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case $host_cpu in - ia64*) - shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - if test 32 = "$HPUX_IA64_MODE"; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - sys_lib_dlsearch_path_spec=/usr/lib/hpux32 - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - sys_lib_dlsearch_path_spec=/usr/lib/hpux64 - fi - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555, ... - postinstall_cmds='chmod 555 $lib' - # or fails outright, so override atomically: - install_override_mode=555 - ;; - -interix[3-9]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test yes = "$lt_cv_prog_gnu_ld"; then - version_type=linux # correct to gnu/linux during the next big refactor - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='$libname$release$shared_ext$major' - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" - sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -linux*android*) - version_type=none # Android doesn't support versioned libraries. - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext' - soname_spec='$libname$release$shared_ext' - finish_cmds= - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - dynamic_linker='Android linker' - # Don't embed -rpath directories since the linker doesn't support them. - hardcode_libdir_flag_spec='-L$libdir' - ;; - -# This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - - # Some binutils ld are patched to set DT_RUNPATH - if ${lt_cv_shlibpath_overrides_runpath+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_shlibpath_overrides_runpath=no - save_LDFLAGS=$LDFLAGS - save_libdir=$libdir - eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ - LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : - lt_cv_shlibpath_overrides_runpath=yes -fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir - -fi - - shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - # Ideally, we could use ldconfig to report *all* directores which are - # searched for libraries, however this is still not possible. Aside from not - # being certain /sbin/ldconfig is available, command - # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, - # even though it is searched at run-time. Try to do the best guess by - # appending ld.so.conf contents (and includes) to the search path. - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -*nto* | *qnx*) - version_type=qnx - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='ldqnx.so' - ;; - -openbsd* | bitrig*) - version_type=sunos - sys_lib_dlsearch_path_spec=/usr/lib - need_lib_prefix=no - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then - need_version=no - else - need_version=yes - fi - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -os2*) - libname_spec='$name' - version_type=windows - shrext_cmds=.dll - need_version=no - need_lib_prefix=no - # OS/2 can only load a DLL with a base name of 8 characters or less. - soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; - v=$($ECHO $release$versuffix | tr -d .-); - n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); - $ECHO $n$v`$shared_ext' - library_names_spec='${libname}_dll.$libext' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=BEGINLIBPATH - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - postinstall_cmds='base_file=`basename \$file`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='$libname$release$shared_ext$major' - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - -rdos*) - dynamic_linker=no - ;; - -solaris*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test yes = "$with_gnu_ld"; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.3*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec; then - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' - soname_spec='$libname$shared_ext.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=sco - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - if test yes = "$with_gnu_ld"; then - sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' - else - sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - case $host_os in - sco3.2v5*) - sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" - ;; - esac - fi - sys_lib_dlsearch_path_spec='/usr/lib' - ;; - -tpf*) - # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -uts4*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 -$as_echo "$dynamic_linker" >&6; } -test no = "$dynamic_linker" && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test yes = "$GCC"; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then - sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec -fi - -if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then - sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec -fi - -# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... -configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec - -# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code -func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" - -# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool -configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 -$as_echo_n "checking how to hardcode library paths into programs... " >&6; } -hardcode_action= -if test -n "$hardcode_libdir_flag_spec" || - test -n "$runpath_var" || - test yes = "$hardcode_automatic"; then - - # We can hardcode non-existent directories. - if test no != "$hardcode_direct" && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, )" && - test no != "$hardcode_minus_L"; then - # Linking always hardcodes the temporary library directory. - hardcode_action=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - hardcode_action=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - hardcode_action=unsupported -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 -$as_echo "$hardcode_action" >&6; } - -if test relink = "$hardcode_action" || - test yes = "$inherit_rpath"; then - # Fast installation is not supported - enable_fast_install=no -elif test yes = "$shlibpath_overrides_runpath" || - test no = "$enable_shared"; then - # Fast installation is not necessary - enable_fast_install=needless -fi - - - - - - - if test yes != "$enable_dlopen"; then - enable_dlopen=unknown - enable_dlopen_self=unknown - enable_dlopen_self_static=unknown -else - lt_cv_dlopen=no - lt_cv_dlopen_libs= - - case $host_os in - beos*) - lt_cv_dlopen=load_add_on - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ;; - - mingw* | pw32* | cegcc*) - lt_cv_dlopen=LoadLibrary - lt_cv_dlopen_libs= - ;; - - cygwin*) - lt_cv_dlopen=dlopen - lt_cv_dlopen_libs= - ;; - - darwin*) - # if libdl is installed we need to link against it - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 -$as_echo_n "checking for dlopen in -ldl... " >&6; } -if ${ac_cv_lib_dl_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dl_dlopen=yes -else - ac_cv_lib_dl_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -$as_echo "$ac_cv_lib_dl_dlopen" >&6; } -if test "x$ac_cv_lib_dl_dlopen" = xyes; then : - lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl -else - - lt_cv_dlopen=dyld - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - -fi - - ;; - - tpf*) - # Don't try to run any link tests for TPF. We know it's impossible - # because TPF is a cross-compiler, and we know how we open DSOs. - lt_cv_dlopen=dlopen - lt_cv_dlopen_libs= - lt_cv_dlopen_self=no - ;; - - *) - ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" -if test "x$ac_cv_func_shl_load" = xyes; then : - lt_cv_dlopen=shl_load -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 -$as_echo_n "checking for shl_load in -ldld... " >&6; } -if ${ac_cv_lib_dld_shl_load+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char shl_load (); -int -main () -{ -return shl_load (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dld_shl_load=yes -else - ac_cv_lib_dld_shl_load=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 -$as_echo "$ac_cv_lib_dld_shl_load" >&6; } -if test "x$ac_cv_lib_dld_shl_load" = xyes; then : - lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld -else - ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" -if test "x$ac_cv_func_dlopen" = xyes; then : - lt_cv_dlopen=dlopen -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 -$as_echo_n "checking for dlopen in -ldl... " >&6; } -if ${ac_cv_lib_dl_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dl_dlopen=yes -else - ac_cv_lib_dl_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -$as_echo "$ac_cv_lib_dl_dlopen" >&6; } -if test "x$ac_cv_lib_dl_dlopen" = xyes; then : - lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 -$as_echo_n "checking for dlopen in -lsvld... " >&6; } -if ${ac_cv_lib_svld_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lsvld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_svld_dlopen=yes -else - ac_cv_lib_svld_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 -$as_echo "$ac_cv_lib_svld_dlopen" >&6; } -if test "x$ac_cv_lib_svld_dlopen" = xyes; then : - lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 -$as_echo_n "checking for dld_link in -ldld... " >&6; } -if ${ac_cv_lib_dld_dld_link+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dld_link (); -int -main () -{ -return dld_link (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dld_dld_link=yes -else - ac_cv_lib_dld_dld_link=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 -$as_echo "$ac_cv_lib_dld_dld_link" >&6; } -if test "x$ac_cv_lib_dld_dld_link" = xyes; then : - lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld -fi - - -fi - - -fi - - -fi - - -fi - - -fi - - ;; - esac - - if test no = "$lt_cv_dlopen"; then - enable_dlopen=no - else - enable_dlopen=yes - fi - - case $lt_cv_dlopen in - dlopen) - save_CPPFLAGS=$CPPFLAGS - test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - - save_LDFLAGS=$LDFLAGS - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - - save_LIBS=$LIBS - LIBS="$lt_cv_dlopen_libs $LIBS" - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 -$as_echo_n "checking whether a program can dlopen itself... " >&6; } -if ${lt_cv_dlopen_self+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test yes = "$cross_compiling"; then : - lt_cv_dlopen_self=cross -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -#line $LINENO "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include -#endif - -#include - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -/* When -fvisibility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -int fnord () __attribute__((visibility("default"))); -#endif - -int fnord () { return 42; } -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else - { - if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -} -_LT_EOF - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then - (./conftest; exit; ) >&5 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; - x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; - x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; - esac - else : - # compilation failed - lt_cv_dlopen_self=no - fi -fi -rm -fr conftest* - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 -$as_echo "$lt_cv_dlopen_self" >&6; } - - if test yes = "$lt_cv_dlopen_self"; then - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 -$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } -if ${lt_cv_dlopen_self_static+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test yes = "$cross_compiling"; then : - lt_cv_dlopen_self_static=cross -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -#line $LINENO "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include -#endif - -#include - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -/* When -fvisibility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -int fnord () __attribute__((visibility("default"))); -#endif - -int fnord () { return 42; } -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else - { - if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -} -_LT_EOF - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then - (./conftest; exit; ) >&5 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; - x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; - x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; - esac - else : - # compilation failed - lt_cv_dlopen_self_static=no - fi -fi -rm -fr conftest* - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 -$as_echo "$lt_cv_dlopen_self_static" >&6; } - fi - - CPPFLAGS=$save_CPPFLAGS - LDFLAGS=$save_LDFLAGS - LIBS=$save_LIBS - ;; - esac - - case $lt_cv_dlopen_self in - yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; - *) enable_dlopen_self=unknown ;; - esac - - case $lt_cv_dlopen_self_static in - yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; - *) enable_dlopen_self_static=unknown ;; - esac -fi - - - - - - - - - - - - - - - - - -striplib= -old_striplib= -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 -$as_echo_n "checking whether stripping libraries is possible... " >&6; } -if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else -# FIXME - insert some real tests, host_os isn't really good enough - case $host_os in - darwin*) - if test -n "$STRIP"; then - striplib="$STRIP -x" - old_striplib="$STRIP -S" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - fi - ;; - *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - ;; - esac -fi - - - - - - - - - - - - - # Report what library types will actually be built - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 -$as_echo_n "checking if libtool supports shared libraries... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 -$as_echo "$can_build_shared" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 -$as_echo_n "checking whether to build shared libraries... " >&6; } - test no = "$can_build_shared" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test yes = "$enable_shared" && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - - aix[4-9]*) - if test ia64 != "$host_cpu"; then - case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in - yes,aix,yes) ;; # shared object as lib.so file only - yes,svr4,*) ;; # shared object as lib.so archive member only - yes,*) enable_static=no ;; # shared object in lib.a archive as well - esac - fi - ;; - esac - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 -$as_echo "$enable_shared" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 -$as_echo_n "checking whether to build static libraries... " >&6; } - # Make sure either enable_shared or enable_static is yes. - test yes = "$enable_shared" || enable_static=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 -$as_echo "$enable_static" >&6; } - - - - -fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -CC=$lt_save_CC - - - - - - - - - - - - - - - - ac_config_commands="$ac_config_commands libtool" - - - - -# Only expand once: - - -if test "x$CC" != xcc; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC and cc understand -c and -o together" >&5 -$as_echo_n "checking whether $CC and cc understand -c and -o together... " >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cc understands -c and -o together" >&5 -$as_echo_n "checking whether cc understands -c and -o together... " >&6; } -fi -set dummy $CC; ac_cc=`$as_echo "$2" | - sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'` -if eval \${ac_cv_prog_cc_${ac_cc}_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -# Make sure it works both with $CC and with simple cc. -# We do the test twice because some compilers refuse to overwrite an -# existing .o file with -o, though they will create one. -ac_try='$CC -c conftest.$ac_ext -o conftest2.$ac_objext >&5' -rm -f conftest2.* -if { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && - test -f conftest2.$ac_objext && { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; -then - eval ac_cv_prog_cc_${ac_cc}_c_o=yes - if test "x$CC" != xcc; then - # Test first that cc exists at all. - if { ac_try='cc -c conftest.$ac_ext >&5' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then - ac_try='cc -c conftest.$ac_ext -o conftest2.$ac_objext >&5' - rm -f conftest2.* - if { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && - test -f conftest2.$ac_objext && { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; - then - # cc works too. - : - else - # cc exists but doesn't like -o. - eval ac_cv_prog_cc_${ac_cc}_c_o=no - fi - fi - fi -else - eval ac_cv_prog_cc_${ac_cc}_c_o=no -fi -rm -f core conftest* - -fi -if eval test \$ac_cv_prog_cc_${ac_cc}_c_o = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -$as_echo "#define NO_MINUS_C_MINUS_O 1" >>confdefs.h - -fi - -# FIXME: we rely on the cache variable name because -# there is no other way. -set dummy $CC -am_cc=`echo $2 | sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'` -eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o -if test "$am_t" != yes; then - # Losing compiler, so override with the script. - # FIXME: It is wrong to rewrite CC. - # But if we don't then we get into trouble of one sort or another. - # A longer-term fix would be to have automake use am__CC in this case, - # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" - CC="$am_aux_dir/compile $CC" -fi - - -LTVERSION="6:3:0" - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 -$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } -set x ${MAKE-make} -ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` -if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat >conftest.make <<\_ACEOF -SHELL = /bin/sh -all: - @echo '@@@%%%=$(MAKE)=@@@%%%' -_ACEOF -# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. -case `${MAKE-make} -f conftest.make 2>/dev/null` in - *@@@%%%=?*=@@@%%%*) - eval ac_cv_prog_make_${ac_make}_set=yes;; - *) - eval ac_cv_prog_make_${ac_make}_set=no;; -esac -rm -f conftest.make -fi -if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - SET_MAKE= -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - SET_MAKE="MAKE=${MAKE-make}" -fi - - -for ac_prog in python3 python python2 -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_python_prog+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$python_prog"; then - ac_cv_prog_python_prog="$python_prog" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_python_prog="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -python_prog=$ac_cv_prog_python_prog -if test -n "$python_prog"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $python_prog" >&5 -$as_echo "$python_prog" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$python_prog" && break -done - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 -$as_echo_n "checking for ANSI C header files... " >&6; } -if ${ac_cv_header_stdc+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_stdc=yes -else - ac_cv_header_stdc=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then : - : -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - return 2; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - -else - ac_cv_header_stdc=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 -$as_echo "$ac_cv_header_stdc" >&6; } -if test $ac_cv_header_stdc = yes; then - -$as_echo "#define STDC_HEADERS 1" >>confdefs.h - -fi - -for ac_header in sys/time.h unistd.h sys/times.h stdint.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of int" >&5 -$as_echo_n "checking size of int... " >&6; } -if ${ac_cv_sizeof_int+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (int))" "ac_cv_sizeof_int" "$ac_includes_default"; then : - -else - if test "$ac_cv_type_int" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (int) -See \`config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_int=0 - fi -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_int" >&5 -$as_echo "$ac_cv_sizeof_int" >&6; } - - - -cat >>confdefs.h <<_ACEOF -#define SIZEOF_INT $ac_cv_sizeof_int -_ACEOF - - -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of short" >&5 -$as_echo_n "checking size of short... " >&6; } -if ${ac_cv_sizeof_short+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (short))" "ac_cv_sizeof_short" "$ac_includes_default"; then : - -else - if test "$ac_cv_type_short" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (short) -See \`config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_short=0 - fi -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_short" >&5 -$as_echo "$ac_cv_sizeof_short" >&6; } - - - -cat >>confdefs.h <<_ACEOF -#define SIZEOF_SHORT $ac_cv_sizeof_short -_ACEOF - - -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long" >&5 -$as_echo_n "checking size of long... " >&6; } -if ${ac_cv_sizeof_long+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long))" "ac_cv_sizeof_long" "$ac_includes_default"; then : - -else - if test "$ac_cv_type_long" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (long) -See \`config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_long=0 - fi -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5 -$as_echo "$ac_cv_sizeof_long" >&6; } - - - -cat >>confdefs.h <<_ACEOF -#define SIZEOF_LONG $ac_cv_sizeof_long -_ACEOF - - -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of void*" >&5 -$as_echo_n "checking size of void*... " >&6; } -if ${ac_cv_sizeof_voidp+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (void*))" "ac_cv_sizeof_voidp" "$ac_includes_default"; then : - -else - if test "$ac_cv_type_voidp" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (void*) -See \`config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_voidp=0 - fi -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_voidp" >&5 -$as_echo "$ac_cv_sizeof_voidp" >&6; } - - - -cat >>confdefs.h <<_ACEOF -#define SIZEOF_VOIDP $ac_cv_sizeof_voidp -_ACEOF - - -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long long" >&5 -$as_echo_n "checking size of long long... " >&6; } -if ${ac_cv_sizeof_long_long+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long long))" "ac_cv_sizeof_long_long" "$ac_includes_default"; then : - -else - if test "$ac_cv_type_long_long" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (long long) -See \`config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_long_long=0 - fi -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_long" >&5 -$as_echo "$ac_cv_sizeof_long_long" >&6; } - - - -cat >>confdefs.h <<_ACEOF -#define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long -_ACEOF - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 -$as_echo_n "checking for an ANSI C-conforming const... " >&6; } -if ${ac_cv_c_const+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - -#ifndef __cplusplus - /* Ultrix mips cc rejects this sort of thing. */ - typedef int charset[2]; - const charset cs = { 0, 0 }; - /* SunOS 4.1.1 cc rejects this. */ - char const *const *pcpcc; - char **ppc; - /* NEC SVR4.0.2 mips cc rejects this. */ - struct point {int x, y;}; - static struct point const zero = {0,0}; - /* AIX XL C 1.02.0.0 rejects this. - It does not let you subtract one const X* pointer from another in - an arm of an if-expression whose if-part is not a constant - expression */ - const char *g = "string"; - pcpcc = &g + (g ? g-g : 0); - /* HPUX 7.0 cc rejects these. */ - ++pcpcc; - ppc = (char**) pcpcc; - pcpcc = (char const *const *) ppc; - { /* SCO 3.2v4 cc rejects this sort of thing. */ - char tx; - char *t = &tx; - char const *s = 0 ? (char *) 0 : (char const *) 0; - - *t++ = 0; - if (s) return 0; - } - { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ - int x[] = {25, 17}; - const int *foo = &x[0]; - ++foo; - } - { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ - typedef const int *iptr; - iptr p = 0; - ++p; - } - { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying - "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ - struct s { int j; const int *ap[3]; } bx; - struct s *b = &bx; b->j = 5; - } - { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ - const int foo = 10; - if (!foo) return 0; - } - return !cs[0] && !zero.x; -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_c_const=yes -else - ac_cv_c_const=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 -$as_echo "$ac_cv_c_const" >&6; } -if test $ac_cv_c_const = no; then - -$as_echo "#define const /**/" >>confdefs.h - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5 -$as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; } -if ${ac_cv_header_time+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include - -int -main () -{ -if ((struct tm *) 0) -return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_time=yes -else - ac_cv_header_time=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_time" >&5 -$as_echo "$ac_cv_header_time" >&6; } -if test $ac_cv_header_time = yes; then - -$as_echo "#define TIME_WITH_SYS_TIME 1" >>confdefs.h - -fi - - -ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" -if test "x$ac_cv_type_size_t" = xyes; then : - -else - -cat >>confdefs.h <<_ACEOF -#define size_t unsigned int -_ACEOF - -fi - -# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works -# for constant arguments. Useless! -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5 -$as_echo_n "checking for working alloca.h... " >&6; } -if ${ac_cv_working_alloca_h+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -char *p = (char *) alloca (2 * sizeof (int)); - if (p) return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_working_alloca_h=yes -else - ac_cv_working_alloca_h=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5 -$as_echo "$ac_cv_working_alloca_h" >&6; } -if test $ac_cv_working_alloca_h = yes; then - -$as_echo "#define HAVE_ALLOCA_H 1" >>confdefs.h - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5 -$as_echo_n "checking for alloca... " >&6; } -if ${ac_cv_func_alloca_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __GNUC__ -# define alloca __builtin_alloca -#else -# ifdef _MSC_VER -# include -# define alloca _alloca -# else -# ifdef HAVE_ALLOCA_H -# include -# else -# ifdef _AIX - #pragma alloca -# else -# ifndef alloca /* predefined by HP cc +Olibcalls */ -void *alloca (size_t); -# endif -# endif -# endif -# endif -#endif - -int -main () -{ -char *p = (char *) alloca (1); - if (p) return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_func_alloca_works=yes -else - ac_cv_func_alloca_works=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_alloca_works" >&5 -$as_echo "$ac_cv_func_alloca_works" >&6; } - -if test $ac_cv_func_alloca_works = yes; then - -$as_echo "#define HAVE_ALLOCA 1" >>confdefs.h - -else - # The SVR3 libPW and SVR4 libucb both contain incompatible functions -# that cause trouble. Some versions do not even contain alloca or -# contain a buggy version. If you still want to use their alloca, -# use ar to extract alloca.o from them instead of compiling alloca.c. - -ALLOCA=\${LIBOBJDIR}alloca.$ac_objext - -$as_echo "#define C_ALLOCA 1" >>confdefs.h - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether \`alloca.c' needs Cray hooks" >&5 -$as_echo_n "checking whether \`alloca.c' needs Cray hooks... " >&6; } -if ${ac_cv_os_cray+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#if defined CRAY && ! defined CRAY2 -webecray -#else -wenotbecray -#endif - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "webecray" >/dev/null 2>&1; then : - ac_cv_os_cray=yes -else - ac_cv_os_cray=no -fi -rm -f conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_os_cray" >&5 -$as_echo "$ac_cv_os_cray" >&6; } -if test $ac_cv_os_cray = yes; then - for ac_func in _getb67 GETB67 getb67; do - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - -cat >>confdefs.h <<_ACEOF -#define CRAY_STACKSEG_END $ac_func -_ACEOF - - break -fi - - done -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5 -$as_echo_n "checking stack direction for C alloca... " >&6; } -if ${ac_cv_c_stack_direction+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - ac_cv_c_stack_direction=0 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_includes_default -int -find_stack_direction (int *addr, int depth) -{ - int dir, dummy = 0; - if (! addr) - addr = &dummy; - *addr = addr < &dummy ? 1 : addr == &dummy ? 0 : -1; - dir = depth ? find_stack_direction (addr, depth - 1) : 0; - return dir + dummy; -} - -int -main (int argc, char **argv) -{ - return find_stack_direction (0, argc + !argv + 20) < 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - ac_cv_c_stack_direction=1 -else - ac_cv_c_stack_direction=-1 -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5 -$as_echo "$ac_cv_c_stack_direction" >&6; } -cat >>confdefs.h <<_ACEOF -#define STACK_DIRECTION $ac_cv_c_stack_direction -_ACEOF - - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working memcmp" >&5 -$as_echo_n "checking for working memcmp... " >&6; } -if ${ac_cv_func_memcmp_working+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - ac_cv_func_memcmp_working=no -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ - - /* Some versions of memcmp are not 8-bit clean. */ - char c0 = '\100', c1 = '\200', c2 = '\201'; - if (memcmp(&c0, &c2, 1) >= 0 || memcmp(&c1, &c2, 1) >= 0) - return 1; - - /* The Next x86 OpenStep bug shows up only when comparing 16 bytes - or more and with at least one buffer not starting on a 4-byte boundary. - William Lewis provided this test program. */ - { - char foo[21]; - char bar[21]; - int i; - for (i = 0; i < 4; i++) - { - char *a = foo + i; - char *b = bar + i; - strcpy (a, "--------01111111"); - strcpy (b, "--------10000000"); - if (memcmp (a, b, 16) >= 0) - return 1; - } - return 0; - } - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - ac_cv_func_memcmp_working=yes -else - ac_cv_func_memcmp_working=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_memcmp_working" >&5 -$as_echo "$ac_cv_func_memcmp_working" >&6; } -test $ac_cv_func_memcmp_working = no && case " $LIBOBJS " in - *" memcmp.$ac_objext "* ) ;; - *) LIBOBJS="$LIBOBJS memcmp.$ac_objext" - ;; -esac - - - - -ac_config_files="$ac_config_files Makefile onigmo-config sample/Makefile" - -ac_config_commands="$ac_config_commands default" - -cat >confcache <<\_ACEOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs, see configure's option --config-cache. -# It is not useful on other systems. If it contains results you don't -# want to keep, you may remove or edit it. -# -# config.status only pays attention to the cache file if you give it -# the --recheck option to rerun configure. -# -# `ac_cv_env_foo' variables (set or unset) will be overridden when -# loading this file, other *unset* `ac_cv_foo' will be assigned the -# following values. - -_ACEOF - -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, we kill variables containing newlines. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -( - for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; - esac ;; - esac - done - - (set) 2>&1 | - case $as_nl`(ac_space=' '; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - # `set' does not quote correctly, so add quotes: double-quote - # substitution turns \\\\ into \\, and sed turns \\ into \. - sed -n \ - "s/'/'\\\\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" - ;; #( - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) | - sed ' - /^ac_cv_env_/b end - t clear - :clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ - t end - s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - :end' >>confcache -if diff "$cache_file" confcache >/dev/null 2>&1; then :; else - if test -w "$cache_file"; then - if test "x$cache_file" != "x/dev/null"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 -$as_echo "$as_me: updating cache $cache_file" >&6;} - if test ! -f "$cache_file" || test -h "$cache_file"; then - cat confcache >"$cache_file" - else - case $cache_file in #( - */* | ?:*) - mv -f confcache "$cache_file"$$ && - mv -f "$cache_file"$$ "$cache_file" ;; #( - *) - mv -f confcache "$cache_file" ;; - esac - fi - fi - else - { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 -$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} - fi -fi -rm -f confcache - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -DEFS=-DHAVE_CONFIG_H - -ac_libobjs= -ac_ltlibobjs= -U= -for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue - # 1. Remove the extension, and $U if already installed. - ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' - ac_i=`$as_echo "$ac_i" | sed "$ac_script"` - # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR - # will be set to the directory where LIBOBJS objects are built. - as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" - as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' -done -LIBOBJS=$ac_libobjs - -LTLIBOBJS=$ac_ltlibobjs - - - if test -n "$EXEEXT"; then - am__EXEEXT_TRUE= - am__EXEEXT_FALSE='#' -else - am__EXEEXT_TRUE='#' - am__EXEEXT_FALSE= -fi - -if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then - as_fn_error $? "conditional \"AMDEP\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then - as_fn_error $? "conditional \"am__fastdepCC\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi - -: "${CONFIG_STATUS=./config.status}" -ac_write_fail=0 -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 -$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} -as_write_fail=0 -cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 -#! $SHELL -# Generated by $as_me. -# Run this file to recreate the current configuration. -# Compiler output produced by configure, useful for debugging -# configure, is in config.log if it exists. - -debug=false -ac_cs_recheck=false -ac_cs_silent=false - -SHELL=\${CONFIG_SHELL-$SHELL} -export SHELL -_ASEOF -cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi - - -as_nl=' -' -export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -as_myself= -case $0 in #(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break - done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - - -# as_fn_error STATUS ERROR [LINENO LOG_FD] -# ---------------------------------------- -# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - $as_echo "$as_me: error: $2" >&2 - as_fn_exit $as_status -} # as_fn_error - - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit - -# as_fn_unset VAR -# --------------- -# Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset -# as_fn_append VAR VALUE -# ---------------------- -# Append the text in VALUE to the end of the definition contained in VAR. Take -# advantage of any shell optimizations that allow amortized linear growth over -# repeated appends, instead of the typical quadratic growth present in naive -# implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -# as_fn_arith ARG... -# ------------------ -# Perform arithmetic evaluation on the ARGs, and store the result in the -# global $as_val. Take advantage of shells that can avoid forks. The arguments -# must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -pR'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -pR' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -pR' - fi -else - as_ln_s='cp -pR' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - - -# as_fn_mkdir_p -# ------------- -# Create "$as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - -} # as_fn_mkdir_p -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - - -# as_fn_executable_p FILE -# ----------------------- -# Test if FILE is an executable regular file. -as_fn_executable_p () -{ - test -f "$1" && test -x "$1" -} # as_fn_executable_p -as_test_x='test -x' -as_executable_p=as_fn_executable_p - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -exec 6>&1 -## ----------------------------------- ## -## Main body of $CONFIG_STATUS script. ## -## ----------------------------------- ## -_ASEOF -test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# Save the log message, to keep $0 and so on meaningful, and to -# report actual input values of CONFIG_FILES etc. instead of their -# values after options handling. -ac_log=" -This file was extended by onigmo $as_me 6.1.2, which was -generated by GNU Autoconf 2.69. Invocation command line was - - CONFIG_FILES = $CONFIG_FILES - CONFIG_HEADERS = $CONFIG_HEADERS - CONFIG_LINKS = $CONFIG_LINKS - CONFIG_COMMANDS = $CONFIG_COMMANDS - $ $0 $@ - -on `(hostname || uname -n) 2>/dev/null | sed 1q` -" - -_ACEOF - -case $ac_config_files in *" -"*) set x $ac_config_files; shift; ac_config_files=$*;; -esac - -case $ac_config_headers in *" -"*) set x $ac_config_headers; shift; ac_config_headers=$*;; -esac - - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# Files that config.status was made for. -config_files="$ac_config_files" -config_headers="$ac_config_headers" -config_commands="$ac_config_commands" - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -ac_cs_usage="\ -\`$as_me' instantiates files and other configuration actions -from templates according to the current configuration. Unless the files -and actions are specified as TAGs, all are instantiated by default. - -Usage: $0 [OPTION]... [TAG]... - - -h, --help print this help, then exit - -V, --version print version number and configuration settings, then exit - --config print configuration, then exit - -q, --quiet, --silent - do not print progress messages - -d, --debug don't remove temporary files - --recheck update $as_me by reconfiguring in the same conditions - --file=FILE[:TEMPLATE] - instantiate the configuration file FILE - --header=FILE[:TEMPLATE] - instantiate the configuration header FILE - -Configuration files: -$config_files - -Configuration headers: -$config_headers - -Configuration commands: -$config_commands - -Report bugs to the package provider." - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" -ac_cs_version="\\ -onigmo config.status 6.1.2 -configured by $0, generated by GNU Autoconf 2.69, - with options \\"\$ac_cs_config\\" - -Copyright (C) 2012 Free Software Foundation, Inc. -This config.status script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it." - -ac_pwd='$ac_pwd' -srcdir='$srcdir' -INSTALL='$INSTALL' -MKDIR_P='$MKDIR_P' -AWK='$AWK' -test -n "\$AWK" || AWK=awk -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# The default lists apply if the user does not specify any file. -ac_need_defaults=: -while test $# != 0 -do - case $1 in - --*=?*) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` - ac_shift=: - ;; - --*=) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg= - ac_shift=: - ;; - *) - ac_option=$1 - ac_optarg=$2 - ac_shift=shift - ;; - esac - - case $ac_option in - # Handling of the options. - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - ac_cs_recheck=: ;; - --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) - $as_echo "$ac_cs_version"; exit ;; - --config | --confi | --conf | --con | --co | --c ) - $as_echo "$ac_cs_config"; exit ;; - --debug | --debu | --deb | --de | --d | -d ) - debug=: ;; - --file | --fil | --fi | --f ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - '') as_fn_error $? "missing file argument" ;; - esac - as_fn_append CONFIG_FILES " '$ac_optarg'" - ac_need_defaults=false;; - --header | --heade | --head | --hea ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - as_fn_append CONFIG_HEADERS " '$ac_optarg'" - ac_need_defaults=false;; - --he | --h) - # Conflict between --help and --header - as_fn_error $? "ambiguous option: \`$1' -Try \`$0 --help' for more information.";; - --help | --hel | -h ) - $as_echo "$ac_cs_usage"; exit ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil | --si | --s) - ac_cs_silent=: ;; - - # This is an error. - -*) as_fn_error $? "unrecognized option: \`$1' -Try \`$0 --help' for more information." ;; - - *) as_fn_append ac_config_targets " $1" - ac_need_defaults=false ;; - - esac - shift -done - -ac_configure_extra_args= - -if $ac_cs_silent; then - exec 6>/dev/null - ac_configure_extra_args="$ac_configure_extra_args --silent" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -if \$ac_cs_recheck; then - set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion - shift - \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 - CONFIG_SHELL='$SHELL' - export CONFIG_SHELL - exec "\$@" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -## Running $as_me. ## -_ASBOX - $as_echo "$ac_log" -} >&5 - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# -# INIT-COMMANDS -# -AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" - - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -sed_quote_subst='$sed_quote_subst' -double_quote_subst='$double_quote_subst' -delay_variable_subst='$delay_variable_subst' -macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' -macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' -enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' -enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' -pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' -enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' -shared_archive_member_spec='`$ECHO "$shared_archive_member_spec" | $SED "$delay_single_quote_subst"`' -SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' -ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' -PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' -host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' -host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' -host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' -build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' -build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' -build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' -SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' -Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' -GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' -EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' -FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' -LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' -NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' -LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' -max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' -ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' -exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' -lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' -lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' -lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' -lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' -lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' -reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' -reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' -OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' -deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' -file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' -file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' -want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' -DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' -sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' -AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' -AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' -archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' -STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' -RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' -old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' -old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' -old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' -lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' -CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' -CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' -compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' -GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_import='`$ECHO "$lt_cv_sys_global_symbol_to_import" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' -lt_cv_nm_interface='`$ECHO "$lt_cv_nm_interface" | $SED "$delay_single_quote_subst"`' -nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' -lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' -lt_cv_truncate_bin='`$ECHO "$lt_cv_truncate_bin" | $SED "$delay_single_quote_subst"`' -objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' -MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' -lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' -need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' -MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' -DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' -NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' -LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' -OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' -OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' -libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' -shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' -extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' -archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' -enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' -export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' -whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' -compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' -old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' -old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' -archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' -archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' -module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' -module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' -with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' -allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' -no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' -hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' -hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' -hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' -hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' -hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' -inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' -link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' -always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' -export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' -exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' -include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' -prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' -postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' -file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' -variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' -need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' -need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' -version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' -runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' -shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' -shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' -libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' -library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' -soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' -install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' -postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' -postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' -finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' -finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' -hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' -sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' -configure_time_dlsearch_path='`$ECHO "$configure_time_dlsearch_path" | $SED "$delay_single_quote_subst"`' -configure_time_lt_sys_library_path='`$ECHO "$configure_time_lt_sys_library_path" | $SED "$delay_single_quote_subst"`' -hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' -enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' -enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' -enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' -old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' -striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' - -LTCC='$LTCC' -LTCFLAGS='$LTCFLAGS' -compiler='$compiler_DEFAULT' - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -\$1 -_LTECHO_EOF' -} - -# Quote evaled strings. -for var in SHELL \ -ECHO \ -PATH_SEPARATOR \ -SED \ -GREP \ -EGREP \ -FGREP \ -LD \ -NM \ -LN_S \ -lt_SP2NL \ -lt_NL2SP \ -reload_flag \ -OBJDUMP \ -deplibs_check_method \ -file_magic_cmd \ -file_magic_glob \ -want_nocaseglob \ -DLLTOOL \ -sharedlib_from_linklib_cmd \ -AR \ -AR_FLAGS \ -archiver_list_spec \ -STRIP \ -RANLIB \ -CC \ -CFLAGS \ -compiler \ -lt_cv_sys_global_symbol_pipe \ -lt_cv_sys_global_symbol_to_cdecl \ -lt_cv_sys_global_symbol_to_import \ -lt_cv_sys_global_symbol_to_c_name_address \ -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ -lt_cv_nm_interface \ -nm_file_list_spec \ -lt_cv_truncate_bin \ -lt_prog_compiler_no_builtin_flag \ -lt_prog_compiler_pic \ -lt_prog_compiler_wl \ -lt_prog_compiler_static \ -lt_cv_prog_compiler_c_o \ -need_locks \ -MANIFEST_TOOL \ -DSYMUTIL \ -NMEDIT \ -LIPO \ -OTOOL \ -OTOOL64 \ -shrext_cmds \ -export_dynamic_flag_spec \ -whole_archive_flag_spec \ -compiler_needs_object \ -with_gnu_ld \ -allow_undefined_flag \ -no_undefined_flag \ -hardcode_libdir_flag_spec \ -hardcode_libdir_separator \ -exclude_expsyms \ -include_expsyms \ -file_list_spec \ -variables_saved_for_relink \ -libname_spec \ -library_names_spec \ -soname_spec \ -install_override_mode \ -finish_eval \ -old_striplib \ -striplib; do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -# Double-quote double-evaled strings. -for var in reload_cmds \ -old_postinstall_cmds \ -old_postuninstall_cmds \ -old_archive_cmds \ -extract_expsyms_cmds \ -old_archive_from_new_cmds \ -old_archive_from_expsyms_cmds \ -archive_cmds \ -archive_expsym_cmds \ -module_cmds \ -module_expsym_cmds \ -export_symbols_cmds \ -prelink_cmds \ -postlink_cmds \ -postinstall_cmds \ -postuninstall_cmds \ -finish_cmds \ -sys_lib_search_path_spec \ -configure_time_dlsearch_path \ -configure_time_lt_sys_library_path; do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -ac_aux_dir='$ac_aux_dir' - -# See if we are running on zsh, and set the options that allow our -# commands through without removal of \ escapes INIT. -if test -n "\${ZSH_VERSION+set}"; then - setopt NO_GLOB_SUBST -fi - - - PACKAGE='$PACKAGE' - VERSION='$VERSION' - RM='$RM' - ofile='$ofile' - - - - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - -# Handling of arguments. -for ac_config_target in $ac_config_targets -do - case $ac_config_target in - "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; - "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; - "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; - "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; - "onigmo-config") CONFIG_FILES="$CONFIG_FILES onigmo-config" ;; - "sample/Makefile") CONFIG_FILES="$CONFIG_FILES sample/Makefile" ;; - "default") CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;; - - *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; - esac -done - - -# If the user did not use the arguments to specify the items to instantiate, -# then the envvar interface is used. Set only those that are not. -# We use the long form for the default assignment because of an extremely -# bizarre bug on SunOS 4.1.3. -if $ac_need_defaults; then - test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files - test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers - test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands -fi - -# Have a temporary directory for convenience. Make it in the build tree -# simply because there is no reason against having it here, and in addition, -# creating and moving files from /tmp can sometimes cause problems. -# Hook for its removal unless debugging. -# Note that there is a small window in which the directory will not be cleaned: -# after its creation but before its name has been assigned to `$tmp'. -$debug || -{ - tmp= ac_tmp= - trap 'exit_status=$? - : "${ac_tmp:=$tmp}" - { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status -' 0 - trap 'as_fn_exit 1' 1 2 13 15 -} -# Create a (secure) tmp directory for tmp files. - -{ - tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && - test -d "$tmp" -} || -{ - tmp=./conf$$-$RANDOM - (umask 077 && mkdir "$tmp") -} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 -ac_tmp=$tmp - -# Set up the scripts for CONFIG_FILES section. -# No need to generate them if there are no CONFIG_FILES. -# This happens for instance with `./config.status config.h'. -if test -n "$CONFIG_FILES"; then - - -ac_cr=`echo X | tr X '\015'` -# On cygwin, bash can eat \r inside `` if the user requested igncr. -# But we know of no other shell where ac_cr would be empty at this -# point, so we can use a bashism as a fallback. -if test "x$ac_cr" = x; then - eval ac_cr=\$\'\\r\' -fi -ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` -if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then - ac_cs_awk_cr='\\r' -else - ac_cs_awk_cr=$ac_cr -fi - -echo 'BEGIN {' >"$ac_tmp/subs1.awk" && -_ACEOF - - -{ - echo "cat >conf$$subs.awk <<_ACEOF" && - echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && - echo "_ACEOF" -} >conf$$subs.sh || - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 -ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` -ac_delim='%!_!# ' -for ac_last_try in false false false false false :; do - . ./conf$$subs.sh || - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - - ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` - if test $ac_delim_n = $ac_delim_num; then - break - elif $ac_last_try; then - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done -rm -f conf$$subs.sh - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && -_ACEOF -sed -n ' -h -s/^/S["/; s/!.*/"]=/ -p -g -s/^[^!]*!// -:repl -t repl -s/'"$ac_delim"'$// -t delim -:nl -h -s/\(.\{148\}\)..*/\1/ -t more1 -s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ -p -n -b repl -:more1 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t nl -:delim -h -s/\(.\{148\}\)..*/\1/ -t more2 -s/["\\]/\\&/g; s/^/"/; s/$/"/ -p -b -:more2 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t delim -' >$CONFIG_STATUS || ac_write_fail=1 -rm -f conf$$subs.awk -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -_ACAWK -cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && - for (key in S) S_is_set[key] = 1 - FS = "" - -} -{ - line = $ 0 - nfields = split(line, field, "@") - substed = 0 - len = length(field[1]) - for (i = 2; i < nfields; i++) { - key = field[i] - keylen = length(key) - if (S_is_set[key]) { - value = S[key] - line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) - len += length(value) + length(field[++i]) - substed = 1 - } else - len += 1 + keylen - } - - print line -} - -_ACAWK -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then - sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" -else - cat -fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ - || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 -_ACEOF - -# VPATH may cause trouble with some makes, so we remove sole $(srcdir), -# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and -# trailing colons and then remove the whole line if VPATH becomes empty -# (actually we leave an empty line to preserve line numbers). -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ -h -s/// -s/^/:/ -s/[ ]*$/:/ -s/:\$(srcdir):/:/g -s/:\${srcdir}:/:/g -s/:@srcdir@:/:/g -s/^:*// -s/:*$// -x -s/\(=[ ]*\).*/\1/ -G -s/\n// -s/^[^=]*=[ ]*$// -}' -fi - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -fi # test -n "$CONFIG_FILES" - -# Set up the scripts for CONFIG_HEADERS section. -# No need to generate them if there are no CONFIG_HEADERS. -# This happens for instance with `./config.status Makefile'. -if test -n "$CONFIG_HEADERS"; then -cat >"$ac_tmp/defines.awk" <<\_ACAWK || -BEGIN { -_ACEOF - -# Transform confdefs.h into an awk script `defines.awk', embedded as -# here-document in config.status, that substitutes the proper values into -# config.h.in to produce config.h. - -# Create a delimiter string that does not exist in confdefs.h, to ease -# handling of long lines. -ac_delim='%!_!# ' -for ac_last_try in false false :; do - ac_tt=`sed -n "/$ac_delim/p" confdefs.h` - if test -z "$ac_tt"; then - break - elif $ac_last_try; then - as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done - -# For the awk script, D is an array of macro values keyed by name, -# likewise P contains macro parameters if any. Preserve backslash -# newline sequences. - -ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* -sed -n ' -s/.\{148\}/&'"$ac_delim"'/g -t rset -:rset -s/^[ ]*#[ ]*define[ ][ ]*/ / -t def -d -:def -s/\\$// -t bsnl -s/["\\]/\\&/g -s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ -D["\1"]=" \3"/p -s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p -d -:bsnl -s/["\\]/\\&/g -s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ -D["\1"]=" \3\\\\\\n"\\/p -t cont -s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p -t cont -d -:cont -n -s/.\{148\}/&'"$ac_delim"'/g -t clear -:clear -s/\\$// -t bsnlc -s/["\\]/\\&/g; s/^/"/; s/$/"/p -d -:bsnlc -s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p -b cont -' >$CONFIG_STATUS || ac_write_fail=1 - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - for (key in D) D_is_set[key] = 1 - FS = "" -} -/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { - line = \$ 0 - split(line, arg, " ") - if (arg[1] == "#") { - defundef = arg[2] - mac1 = arg[3] - } else { - defundef = substr(arg[1], 2) - mac1 = arg[2] - } - split(mac1, mac2, "(") #) - macro = mac2[1] - prefix = substr(line, 1, index(line, defundef) - 1) - if (D_is_set[macro]) { - # Preserve the white space surrounding the "#". - print prefix "define", macro P[macro] D[macro] - next - } else { - # Replace #undef with comments. This is necessary, for example, - # in the case of _POSIX_SOURCE, which is predefined and required - # on some systems where configure will not decide to define it. - if (defundef == "undef") { - print "/*", prefix defundef, macro, "*/" - next - } - } -} -{ print } -_ACAWK -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 -fi # test -n "$CONFIG_HEADERS" - - -eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" -shift -for ac_tag -do - case $ac_tag in - :[FHLC]) ac_mode=$ac_tag; continue;; - esac - case $ac_mode$ac_tag in - :[FHL]*:*);; - :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; - :[FH]-) ac_tag=-:-;; - :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; - esac - ac_save_IFS=$IFS - IFS=: - set x $ac_tag - IFS=$ac_save_IFS - shift - ac_file=$1 - shift - - case $ac_mode in - :L) ac_source=$1;; - :[FH]) - ac_file_inputs= - for ac_f - do - case $ac_f in - -) ac_f="$ac_tmp/stdin";; - *) # Look for the file first in the build tree, then in the source tree - # (if the path is not absolute). The absolute path cannot be DOS-style, - # because $ac_f cannot contain `:'. - test -f "$ac_f" || - case $ac_f in - [\\/$]*) false;; - *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; - esac || - as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; - esac - case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac - as_fn_append ac_file_inputs " '$ac_f'" - done - - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - configure_input='Generated from '` - $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' - `' by configure.' - if test x"$ac_file" != x-; then - configure_input="$ac_file. $configure_input" - { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 -$as_echo "$as_me: creating $ac_file" >&6;} - fi - # Neutralize special characters interpreted by sed in replacement strings. - case $configure_input in #( - *\&* | *\|* | *\\* ) - ac_sed_conf_input=`$as_echo "$configure_input" | - sed 's/[\\\\&|]/\\\\&/g'`;; #( - *) ac_sed_conf_input=$configure_input;; - esac - - case $ac_tag in - *:-:* | *:-) cat >"$ac_tmp/stdin" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; - esac - ;; - esac - - ac_dir=`$as_dirname -- "$ac_file" || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - as_dir="$ac_dir"; as_fn_mkdir_p - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - - case $ac_mode in - :F) - # - # CONFIG_FILE - # - - case $INSTALL in - [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; - *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; - esac - ac_MKDIR_P=$MKDIR_P - case $MKDIR_P in - [\\/$]* | ?:[\\/]* ) ;; - */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; - esac -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# If the template does not know about datarootdir, expand it. -# FIXME: This hack should be removed a few years after 2.60. -ac_datarootdir_hack=; ac_datarootdir_seen= -ac_sed_dataroot=' -/datarootdir/ { - p - q -} -/@datadir@/p -/@docdir@/p -/@infodir@/p -/@localedir@/p -/@mandir@/p' -case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in -*datarootdir*) ac_datarootdir_seen=yes;; -*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - ac_datarootdir_hack=' - s&@datadir@&$datadir&g - s&@docdir@&$docdir&g - s&@infodir@&$infodir&g - s&@localedir@&$localedir&g - s&@mandir@&$mandir&g - s&\\\${datarootdir}&$datarootdir&g' ;; -esac -_ACEOF - -# Neutralize VPATH when `$srcdir' = `.'. -# Shell code in configure.ac might set extrasub. -# FIXME: do we really want to maintain this feature? -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_sed_extra="$ac_vpsub -$extrasub -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -:t -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s|@configure_input@|$ac_sed_conf_input|;t t -s&@top_builddir@&$ac_top_builddir_sub&;t t -s&@top_build_prefix@&$ac_top_build_prefix&;t t -s&@srcdir@&$ac_srcdir&;t t -s&@abs_srcdir@&$ac_abs_srcdir&;t t -s&@top_srcdir@&$ac_top_srcdir&;t t -s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t -s&@builddir@&$ac_builddir&;t t -s&@abs_builddir@&$ac_abs_builddir&;t t -s&@abs_top_builddir@&$ac_abs_top_builddir&;t t -s&@INSTALL@&$ac_INSTALL&;t t -s&@MKDIR_P@&$ac_MKDIR_P&;t t -$ac_datarootdir_hack -" -eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ - >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - -test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && - { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && - { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ - "$ac_tmp/out"`; test -z "$ac_out"; } && - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined" >&5 -$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined" >&2;} - - rm -f "$ac_tmp/stdin" - case $ac_file in - -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; - *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; - esac \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - ;; - :H) - # - # CONFIG_HEADER - # - if test x"$ac_file" != x-; then - { - $as_echo "/* $configure_input */" \ - && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" - } >"$ac_tmp/config.h" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then - { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 -$as_echo "$as_me: $ac_file is unchanged" >&6;} - else - rm -f "$ac_file" - mv "$ac_tmp/config.h" "$ac_file" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - fi - else - $as_echo "/* $configure_input */" \ - && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ - || as_fn_error $? "could not create -" "$LINENO" 5 - fi -# Compute "$ac_file"'s index in $config_headers. -_am_arg="$ac_file" -_am_stamp_count=1 -for _am_header in $config_headers :; do - case $_am_header in - $_am_arg | $_am_arg:* ) - break ;; - * ) - _am_stamp_count=`expr $_am_stamp_count + 1` ;; - esac -done -echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || -$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$_am_arg" : 'X\(//\)[^/]' \| \ - X"$_am_arg" : 'X\(//\)$' \| \ - X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$_am_arg" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'`/stamp-h$_am_stamp_count - ;; - - :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 -$as_echo "$as_me: executing $ac_file commands" >&6;} - ;; - esac - - - case $ac_file$ac_mode in - "depfiles":C) test x"$AMDEP_TRUE" != x"" || { - # Autoconf 2.62 quotes --file arguments for eval, but not when files - # are listed without --file. Let's play safe and only enable the eval - # if we detect the quoting. - case $CONFIG_FILES in - *\'*) eval set x "$CONFIG_FILES" ;; - *) set x $CONFIG_FILES ;; - esac - shift - for mf - do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named `Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # Grep'ing the whole file is not good either: AIX grep has a line - # limit of 2048, but all sed's we know have understand at least 4000. - if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then - dirpart=`$as_dirname -- "$mf" || -$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$mf" : 'X\(//\)[^/]' \| \ - X"$mf" : 'X\(//\)$' \| \ - X"$mf" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$mf" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running `make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n 's/^U = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`$as_dirname -- "$file" || -$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$file" : 'X\(//\)[^/]' \| \ - X"$file" : 'X\(//\)$' \| \ - X"$file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - as_dir=$dirpart/$fdir; as_fn_mkdir_p - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done - done -} - ;; - "libtool":C) - - # See if we are running on zsh, and set the options that allow our - # commands through without removal of \ escapes. - if test -n "${ZSH_VERSION+set}"; then - setopt NO_GLOB_SUBST - fi - - cfgfile=${ofile}T - trap "$RM \"$cfgfile\"; exit 1" 1 2 15 - $RM "$cfgfile" - - cat <<_LT_EOF >> "$cfgfile" -#! $SHELL -# Generated automatically by $as_me ($PACKAGE) $VERSION -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -# NOTE: Changes made to this file will be lost: look at ltmain.sh. - -# Provide generalized library-building support services. -# Written by Gordon Matzigkeit, 1996 - -# Copyright (C) 2014 Free Software Foundation, Inc. -# This is free software; see the source for copying conditions. There is NO -# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -# GNU Libtool is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of of the License, or -# (at your option) any later version. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program or library that is built -# using GNU Libtool, you may include this file under the same -# distribution terms that you use for the rest of that program. -# -# GNU Libtool is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - - -# The names of the tagged configurations supported by this script. -available_tags='' - -# Configured defaults for sys_lib_dlsearch_path munging. -: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} - -# ### BEGIN LIBTOOL CONFIG - -# Which release of libtool.m4 was used? -macro_version=$macro_version -macro_revision=$macro_revision - -# Whether or not to build shared libraries. -build_libtool_libs=$enable_shared - -# Whether or not to build static libraries. -build_old_libs=$enable_static - -# What type of objects to build. -pic_mode=$pic_mode - -# Whether or not to optimize for fast installation. -fast_install=$enable_fast_install - -# Shared archive member basename,for filename based shared library versioning on AIX. -shared_archive_member_spec=$shared_archive_member_spec - -# Shell to use when invoking shell scripts. -SHELL=$lt_SHELL - -# An echo program that protects backslashes. -ECHO=$lt_ECHO - -# The PATH separator for the build system. -PATH_SEPARATOR=$lt_PATH_SEPARATOR - -# The host system. -host_alias=$host_alias -host=$host -host_os=$host_os - -# The build system. -build_alias=$build_alias -build=$build -build_os=$build_os - -# A sed program that does not truncate output. -SED=$lt_SED - -# Sed that helps us avoid accidentally triggering echo(1) options like -n. -Xsed="\$SED -e 1s/^X//" - -# A grep program that handles long lines. -GREP=$lt_GREP - -# An ERE matcher. -EGREP=$lt_EGREP - -# A literal string matcher. -FGREP=$lt_FGREP - -# A BSD- or MS-compatible name lister. -NM=$lt_NM - -# Whether we need soft or hard links. -LN_S=$lt_LN_S - -# What is the maximum length of a command? -max_cmd_len=$max_cmd_len - -# Object file suffix (normally "o"). -objext=$ac_objext - -# Executable file suffix (normally ""). -exeext=$exeext - -# whether the shell understands "unset". -lt_unset=$lt_unset - -# turn spaces into newlines. -SP2NL=$lt_lt_SP2NL - -# turn newlines into spaces. -NL2SP=$lt_lt_NL2SP - -# convert \$build file names to \$host format. -to_host_file_cmd=$lt_cv_to_host_file_cmd - -# convert \$build files to toolchain format. -to_tool_file_cmd=$lt_cv_to_tool_file_cmd - -# An object symbol dumper. -OBJDUMP=$lt_OBJDUMP - -# Method to check whether dependent libraries are shared objects. -deplibs_check_method=$lt_deplibs_check_method - -# Command to use when deplibs_check_method = "file_magic". -file_magic_cmd=$lt_file_magic_cmd - -# How to find potential files when deplibs_check_method = "file_magic". -file_magic_glob=$lt_file_magic_glob - -# Find potential files using nocaseglob when deplibs_check_method = "file_magic". -want_nocaseglob=$lt_want_nocaseglob - -# DLL creation program. -DLLTOOL=$lt_DLLTOOL - -# Command to associate shared and link libraries. -sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd - -# The archiver. -AR=$lt_AR - -# Flags to create an archive. -AR_FLAGS=$lt_AR_FLAGS - -# How to feed a file listing to the archiver. -archiver_list_spec=$lt_archiver_list_spec - -# A symbol stripping program. -STRIP=$lt_STRIP - -# Commands used to install an old-style archive. -RANLIB=$lt_RANLIB -old_postinstall_cmds=$lt_old_postinstall_cmds -old_postuninstall_cmds=$lt_old_postuninstall_cmds - -# Whether to use a lock for old archive extraction. -lock_old_archive_extraction=$lock_old_archive_extraction - -# A C compiler. -LTCC=$lt_CC - -# LTCC compiler flags. -LTCFLAGS=$lt_CFLAGS - -# Take the output of nm and produce a listing of raw symbols and C names. -global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe - -# Transform the output of nm in a proper C declaration. -global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl - -# Transform the output of nm into a list of symbols to manually relocate. -global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import - -# Transform the output of nm in a C name address pair. -global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address - -# Transform the output of nm in a C name address pair when lib prefix is needed. -global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix - -# The name lister interface. -nm_interface=$lt_lt_cv_nm_interface - -# Specify filename containing input files for \$NM. -nm_file_list_spec=$lt_nm_file_list_spec - -# The root where to search for dependent libraries,and where our libraries should be installed. -lt_sysroot=$lt_sysroot - -# Command to truncate a binary pipe. -lt_truncate_bin=$lt_lt_cv_truncate_bin - -# The name of the directory that contains temporary libtool files. -objdir=$objdir - -# Used to examine libraries when file_magic_cmd begins with "file". -MAGIC_CMD=$MAGIC_CMD - -# Must we lock files when doing compilation? -need_locks=$lt_need_locks - -# Manifest tool. -MANIFEST_TOOL=$lt_MANIFEST_TOOL - -# Tool to manipulate archived DWARF debug symbol files on Mac OS X. -DSYMUTIL=$lt_DSYMUTIL - -# Tool to change global to local symbols on Mac OS X. -NMEDIT=$lt_NMEDIT - -# Tool to manipulate fat objects and archives on Mac OS X. -LIPO=$lt_LIPO - -# ldd/readelf like tool for Mach-O binaries on Mac OS X. -OTOOL=$lt_OTOOL - -# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. -OTOOL64=$lt_OTOOL64 - -# Old archive suffix (normally "a"). -libext=$libext - -# Shared library suffix (normally ".so"). -shrext_cmds=$lt_shrext_cmds - -# The commands to extract the exported symbol list from a shared archive. -extract_expsyms_cmds=$lt_extract_expsyms_cmds - -# Variables whose values should be saved in libtool wrapper scripts and -# restored at link time. -variables_saved_for_relink=$lt_variables_saved_for_relink - -# Do we need the "lib" prefix for modules? -need_lib_prefix=$need_lib_prefix - -# Do we need a version for libraries? -need_version=$need_version - -# Library versioning type. -version_type=$version_type - -# Shared library runtime path variable. -runpath_var=$runpath_var - -# Shared library path variable. -shlibpath_var=$shlibpath_var - -# Is shlibpath searched before the hard-coded library search path? -shlibpath_overrides_runpath=$shlibpath_overrides_runpath - -# Format of library name prefix. -libname_spec=$lt_libname_spec - -# List of archive names. First name is the real one, the rest are links. -# The last name is the one that the linker finds with -lNAME -library_names_spec=$lt_library_names_spec - -# The coded name of the library, if different from the real name. -soname_spec=$lt_soname_spec - -# Permission mode override for installation of shared libraries. -install_override_mode=$lt_install_override_mode - -# Command to use after installation of a shared archive. -postinstall_cmds=$lt_postinstall_cmds - -# Command to use after uninstallation of a shared archive. -postuninstall_cmds=$lt_postuninstall_cmds - -# Commands used to finish a libtool library installation in a directory. -finish_cmds=$lt_finish_cmds - -# As "finish_cmds", except a single script fragment to be evaled but -# not shown. -finish_eval=$lt_finish_eval - -# Whether we should hardcode library paths into libraries. -hardcode_into_libs=$hardcode_into_libs - -# Compile-time system search path for libraries. -sys_lib_search_path_spec=$lt_sys_lib_search_path_spec - -# Detected run-time system search path for libraries. -sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path - -# Explicit LT_SYS_LIBRARY_PATH set during ./configure time. -configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path - -# Whether dlopen is supported. -dlopen_support=$enable_dlopen - -# Whether dlopen of programs is supported. -dlopen_self=$enable_dlopen_self - -# Whether dlopen of statically linked programs is supported. -dlopen_self_static=$enable_dlopen_self_static - -# Commands to strip libraries. -old_striplib=$lt_old_striplib -striplib=$lt_striplib - - -# The linker used to build libraries. -LD=$lt_LD - -# How to create reloadable object files. -reload_flag=$lt_reload_flag -reload_cmds=$lt_reload_cmds - -# Commands used to build an old-style archive. -old_archive_cmds=$lt_old_archive_cmds - -# A language specific compiler. -CC=$lt_compiler - -# Is the compiler the GNU compiler? -with_gcc=$GCC - -# Compiler flag to turn off builtin functions. -no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag - -# Additional compiler flags for building library objects. -pic_flag=$lt_lt_prog_compiler_pic - -# How to pass a linker flag through the compiler. -wl=$lt_lt_prog_compiler_wl - -# Compiler flag to prevent dynamic linking. -link_static_flag=$lt_lt_prog_compiler_static - -# Does compiler simultaneously support -c and -o options? -compiler_c_o=$lt_lt_cv_prog_compiler_c_o - -# Whether or not to add -lc for building shared libraries. -build_libtool_need_lc=$archive_cmds_need_lc - -# Whether or not to disallow shared libs when runtime libs are static. -allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes - -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec=$lt_export_dynamic_flag_spec - -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec=$lt_whole_archive_flag_spec - -# Whether the compiler copes with passing no objects directly. -compiler_needs_object=$lt_compiler_needs_object - -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds=$lt_old_archive_from_new_cmds - -# Create a temporary old-style archive to link instead of a shared archive. -old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds - -# Commands used to build a shared archive. -archive_cmds=$lt_archive_cmds -archive_expsym_cmds=$lt_archive_expsym_cmds - -# Commands used to build a loadable module if different from building -# a shared archive. -module_cmds=$lt_module_cmds -module_expsym_cmds=$lt_module_expsym_cmds - -# Whether we are building with GNU ld or not. -with_gnu_ld=$lt_with_gnu_ld - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag=$lt_allow_undefined_flag - -# Flag that enforces no undefined symbols. -no_undefined_flag=$lt_no_undefined_flag - -# Flag to hardcode \$libdir into a binary during linking. -# This must work even if \$libdir does not exist -hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec - -# Whether we need a single "-rpath" flag with a separated argument. -hardcode_libdir_separator=$lt_hardcode_libdir_separator - -# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes -# DIR into the resulting binary. -hardcode_direct=$hardcode_direct - -# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes -# DIR into the resulting binary and the resulting library dependency is -# "absolute",i.e impossible to change by setting \$shlibpath_var if the -# library is relocated. -hardcode_direct_absolute=$hardcode_direct_absolute - -# Set to "yes" if using the -LDIR flag during linking hardcodes DIR -# into the resulting binary. -hardcode_minus_L=$hardcode_minus_L - -# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR -# into the resulting binary. -hardcode_shlibpath_var=$hardcode_shlibpath_var - -# Set to "yes" if building a shared library automatically hardcodes DIR -# into the library and all subsequent libraries and executables linked -# against it. -hardcode_automatic=$hardcode_automatic - -# Set to yes if linker adds runtime paths of dependent libraries -# to runtime path list. -inherit_rpath=$inherit_rpath - -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs=$link_all_deplibs - -# Set to "yes" if exported symbols are required. -always_export_symbols=$always_export_symbols - -# The commands to list exported symbols. -export_symbols_cmds=$lt_export_symbols_cmds - -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms=$lt_exclude_expsyms - -# Symbols that must always be exported. -include_expsyms=$lt_include_expsyms - -# Commands necessary for linking programs (against libraries) with templates. -prelink_cmds=$lt_prelink_cmds - -# Commands necessary for finishing linking programs. -postlink_cmds=$lt_postlink_cmds - -# Specify filename containing input files. -file_list_spec=$lt_file_list_spec - -# How to hardcode a shared library path into an executable. -hardcode_action=$hardcode_action - -# ### END LIBTOOL CONFIG - -_LT_EOF - - cat <<'_LT_EOF' >> "$cfgfile" - -# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE - -# func_munge_path_list VARIABLE PATH -# ----------------------------------- -# VARIABLE is name of variable containing _space_ separated list of -# directories to be munged by the contents of PATH, which is string -# having a format: -# "DIR[:DIR]:" -# string "DIR[ DIR]" will be prepended to VARIABLE -# ":DIR[:DIR]" -# string "DIR[ DIR]" will be appended to VARIABLE -# "DIRP[:DIRP]::[DIRA:]DIRA" -# string "DIRP[ DIRP]" will be prepended to VARIABLE and string -# "DIRA[ DIRA]" will be appended to VARIABLE -# "DIR[:DIR]" -# VARIABLE will be replaced by "DIR[ DIR]" -func_munge_path_list () -{ - case x$2 in - x) - ;; - *:) - eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" - ;; - x:*) - eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" - ;; - *::*) - eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" - eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" - ;; - *) - eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" - ;; - esac -} - - -# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. -func_cc_basename () -{ - for cc_temp in $*""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac - done - func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` -} - - -# ### END FUNCTIONS SHARED WITH CONFIGURE - -_LT_EOF - - case $host_os in - aix3*) - cat <<\_LT_EOF >> "$cfgfile" -# AIX sometimes has problems with the GCC collect2 program. For some -# reason, if we set the COLLECT_NAMES environment variable, the problems -# vanish in a puff of smoke. -if test set != "${COLLECT_NAMES+set}"; then - COLLECT_NAMES= - export COLLECT_NAMES -fi -_LT_EOF - ;; - esac - - -ltmain=$ac_aux_dir/ltmain.sh - - - # We use sed instead of cat because bash on DJGPP gets confused if - # if finds mixed CR/LF and LF-only lines. Since sed operates in - # text mode, it properly converts lines to CR/LF. This bash problem - # is reportedly fixed, but why not run on old versions too? - sed '$q' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) - - mv -f "$cfgfile" "$ofile" || - (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") - chmod +x "$ofile" - - ;; - "default":C) chmod +x onigmo-config ;; - - esac -done # for ac_tag - - -as_fn_exit 0 -_ACEOF -ac_clean_files=$ac_clean_files_save - -test $ac_write_fail = 0 || - as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 - - -# configure is writing to config.log, and then calls config.status. -# config.status does its own redirection, appending to config.log. -# Unfortunately, on DOS this fails, as config.log is still kept open -# by configure, so config.status won't be able to write to it; its -# output is simply discarded. So we exec the FD to /dev/null, -# effectively closing config.log, so it can be properly (re)opened and -# appended to by config.status. When coming back to configure, we -# need to make the FD available again. -if test "$no_create" != yes; then - ac_cs_success=: - ac_config_status_args= - test "$silent" = yes && - ac_config_status_args="$ac_config_status_args --quiet" - exec 5>/dev/null - $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false - exec 5>>config.log - # Use ||, not &&, to avoid exiting from the if with $? = 1, which - # would make configure fail if this is the last instruction. - $ac_cs_success || as_fn_exit 1 -fi -if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 -$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} -fi - diff --git a/vendor/onig/configure.ac b/vendor/onig/configure.ac deleted file mode 100644 index 05641f3..0000000 --- a/vendor/onig/configure.ac +++ /dev/null @@ -1,90 +0,0 @@ -dnl Process this file with autoconf to produce a configure script. -AC_INIT(onigmo, 6.1.2) - -AC_CONFIG_MACRO_DIR([m4]) - -AM_INIT_AUTOMAKE(foreign) -AC_CONFIG_HEADER(config.h) - - -dnl default value for RUBYDIR -RUBYDIR=".." -AC_ARG_WITH(rubydir, - [ --with-rubydir=RUBYDIR specify value for RUBYDIR (default ..)], - [ RUBYDIR=$withval ]) -AC_SUBST(RUBYDIR) - -dnl default value for STATISTICS -STATISTICS="" -AC_ARG_WITH(statistics, - [ --with-statistics take matching time statistical data], - [ STATISTICS=-DONIG_DEBUG_STATISTICS ]) -AC_SUBST(STATISTICS) - -dnl check for COMBINATION_EXPLOSION -AC_ARG_ENABLE(combination-explosion-check, - [ --enable-combination-explosion-check enable combination explosion check], - [comb_expl_check=$enableval]) -if test "${comb_expl_check}" = yes; then - AC_DEFINE(USE_COMBINATION_EXPLOSION_CHECK,1,[Define if combination explosion check]) -fi - -dnl check for CRNL_AS_LINE_TERMINATOR -AC_ARG_ENABLE(crnl-as-line-terminator, - [ --enable-crnl-as-line-terminator enable CR+NL as line terminator], - [crnl_as_line_terminator=$enableval]) -if test "${crnl_as_line_terminator}" = yes; then - AC_DEFINE(USE_CRNL_AS_LINE_TERMINATOR,1,[Define if enable CR+NL as line terminator]) -fi - - -dnl Checks for programs. -AC_PROG_CC -AC_PROG_LIBTOOL -AM_PROG_CC_C_O -LTVERSION="6:3:0" -AC_SUBST(LTVERSION) - -AC_PROG_INSTALL -AC_PROG_MAKE_SET - -AC_CHECK_PROGS(python_prog, python3 python python2) - -dnl Checks for libraries. - -dnl Checks for header files. -AC_HEADER_STDC -AC_CHECK_HEADERS(sys/time.h unistd.h sys/times.h stdint.h) - -dnl Checks for typedefs, structures, and compiler characteristics. -AC_CHECK_SIZEOF(int, 4) -AC_CHECK_SIZEOF(short, 2) -AC_CHECK_SIZEOF(long, 4) -AC_CHECK_SIZEOF([void*]) -AC_CHECK_SIZEOF([long long]) -AC_C_CONST -AC_HEADER_TIME - -dnl Checks for library functions. -AC_FUNC_ALLOCA -AC_FUNC_MEMCMP - -dnl Add custom edbee boilerplate start -AH_TOP([#include "config-onig-edbee.h" - -#ifdef _WIN32 - - #include "win32/config.h" - - // Rick: added to make it compile on windows - #define ONIG_EXTERN extern - - // Rick: added to decrease the numberr of warnings for onig - #define _CRT_SECURE_NO_WARNINGS - -#else]) - -AC_OUTPUT([Makefile onigmo-config sample/Makefile], [chmod +x onigmo-config]) - -dnl Add custom edbee boilerplate end -AH_BOTTOM([#endif]) diff --git a/vendor/onig/doc/API b/vendor/onig/doc/API deleted file mode 100644 index 1dcb93c..0000000 --- a/vendor/onig/doc/API +++ /dev/null @@ -1,702 +0,0 @@ -Onigmo (Oniguruma-mod) API Version 6.1.2 2017/05/10 - -#include - - -# int onig_initialize(OnigEncoding use_encodings[], int num_encodings) - - Initialize library. - This is added for compatibility to Oniguruma 6.0. - Currently this is same as onig_init(). - - arguments - 1 use_encodings: array of encodings used in application. - 2 num_encodings: number of encodings. - - -# int onig_init(void) - - Initialize library. - - Single thread program: - You don't have to call it explicitly, because it is called in onig_new(). - However calling it is preferred. - - Multi thread program: - You have to call it explicitly from a specific thread (normally the main - thread) before you use onig_new(), because onig_init() is not thread safe. - - -# int onig_error_code_to_str(UChar* err_buf, OnigPosition err_code, ...) - - Get error message string. - If this function is used for onig_new(), - don't call this after the pattern argument of onig_new() is freed. - - normal return: error message string length - - arguments - 1 err_buf: error message string buffer. - (required size: ONIG_MAX_ERROR_MESSAGE_LEN) - 2 err_code: error code returned by other API functions. - 3 err_info (optional): error info returned by onig_new(). - - -# void onig_set_warn_func(OnigWarnFunc func) - - Set warning function. - - WARNING: - '[', '-', ']' in character class without escape. - ']' in pattern without escape. - - arguments - 1 func: function pointer. void (*func)(char* warning_message) - - -# void onig_set_verb_warn_func(OnigWarnFunc func) - - Set verbose warning function. - - WARNING: - redundant nested repeat operator. - - arguments - 1 func: function pointer. void (*func)(char* warning_message) - - -# int onig_new(regex_t** reg, const UChar* pattern, const UChar* pattern_end, - OnigOptionType option, OnigEncoding enc, - const OnigSyntaxType* syntax, OnigErrorInfo* err_info) - - Create a regex object. - - normal return: ONIG_NORMAL - - arguments - 1 reg: return regex object's address. - 2 pattern: regex pattern string. - 3 pattern_end: terminate address of pattern. (pattern + pattern length) - 4 option: compile time options. - - ONIG_OPTION_NONE no option - ONIG_OPTION_SINGLELINE '^' -> '\A', '$' -> '\Z' - ONIG_OPTION_DOTALL '.' match with newline - ONIG_OPTION_MULTILINE same as ONIG_OPTION_DOTALL - ONIG_OPTION_IGNORECASE ambiguity match on - ONIG_OPTION_EXTEND extended pattern form - ONIG_OPTION_FIND_LONGEST find longest match - ONIG_OPTION_FIND_NOT_EMPTY ignore empty match - ONIG_OPTION_NEGATE_SINGLELINE - clear ONIG_OPTION_SINGLELINE which is enabled on - ONIG_SYNTAX_POSIX_BASIC, ONIG_SYNTAX_POSIX_EXTENDED, - ONIG_SYNTAX_PERL, ONIG_SYNTAX_PERL58, ONIG_SYNTAX_PERL58_NG, - ONIG_SYNTAX_JAVA, ONIG_SYNTAX_PYTHON - - ONIG_OPTION_DONT_CAPTURE_GROUP only named group captured. - ONIG_OPTION_CAPTURE_GROUP named and no-named group captured. - - ONIG_OPTION_NEWLINE_CRLF - Treat CR+LF as a newline too. (default: LF only) - To use this option, you must enable the following line in regenc.h. - - /* #define USE_CRNL_AS_LINE_TERMINATOR */ - - 5 enc: character encoding. - - ONIG_ENCODING_ASCII ASCII - ONIG_ENCODING_ISO_8859_1 ISO 8859-1 - ONIG_ENCODING_ISO_8859_2 ISO 8859-2 - ONIG_ENCODING_ISO_8859_3 ISO 8859-3 - ONIG_ENCODING_ISO_8859_4 ISO 8859-4 - ONIG_ENCODING_ISO_8859_5 ISO 8859-5 - ONIG_ENCODING_ISO_8859_6 ISO 8859-6 - ONIG_ENCODING_ISO_8859_7 ISO 8859-7 - ONIG_ENCODING_ISO_8859_8 ISO 8859-8 - ONIG_ENCODING_ISO_8859_9 ISO 8859-9 - ONIG_ENCODING_ISO_8859_10 ISO 8859-10 - ONIG_ENCODING_ISO_8859_11 ISO 8859-11 - ONIG_ENCODING_ISO_8859_13 ISO 8859-13 - ONIG_ENCODING_ISO_8859_14 ISO 8859-14 - ONIG_ENCODING_ISO_8859_15 ISO 8859-15 - ONIG_ENCODING_ISO_8859_16 ISO 8859-16 - ONIG_ENCODING_UTF_8 UTF-8 - ONIG_ENCODING_UTF_16BE UTF-16BE - ONIG_ENCODING_UTF_16LE UTF-16LE - ONIG_ENCODING_UTF_32BE UTF-32BE - ONIG_ENCODING_UTF_32LE UTF-32LE - ONIG_ENCODING_EUC_JP EUC-JP - ONIG_ENCODING_EUC_TW EUC-TW - ONIG_ENCODING_EUC_KR EUC-KR - ONIG_ENCODING_EUC_CN EUC-CN - ONIG_ENCODING_SHIFT_JIS Shift_JIS - ONIG_ENCODING_WINDOWS_31J Windows-31J (CP932) - ONIG_ENCODING_KOI8_R KOI8-R - ONIG_ENCODING_KOI8_U KOI8-U - ONIG_ENCODING_WINDOWS_1250 Windows-1250 (CP1250) - ONIG_ENCODING_WINDOWS_1251 Windows-1251 (CP1251) - ONIG_ENCODING_WINDOWS_1252 Windows-1252 (CP1252) - ONIG_ENCODING_WINDOWS_1253 Windows-1253 (CP1253) - ONIG_ENCODING_WINDOWS_1254 Windows-1254 (CP1254) - ONIG_ENCODING_WINDOWS_1257 Windows-1257 (CP1257) - ONIG_ENCODING_BIG5 Big5 - ONIG_ENCODING_GB18030 GB18030 - - or any OnigEncodingType data address defined by user. - - The following encoding names can be also used for backward compatibility: - - ONIG_ENCODING_UTF8 UTF-8 - ONIG_ENCODING_UTF16_BE UTF-16BE - ONIG_ENCODING_UTF16_LE UTF-16LE - ONIG_ENCODING_UTF32_BE UTF-32BE - ONIG_ENCODING_UTF32_LE UTF-32LE - ONIG_ENCODING_SJIS Shift_JIS - ONIG_ENCODING_CP932 Windows-31J (CP932) - ONIG_ENCODING_CP1250 Windows-1250 (CP1250) - ONIG_ENCODING_CP1251 Windows-1251 (CP1251) - ONIG_ENCODING_CP1252 Windows-1252 (CP1252) - ONIG_ENCODING_CP1253 Windows-1253 (CP1253) - ONIG_ENCODING_CP1254 Windows-1254 (CP1254) - ONIG_ENCODING_CP1257 Windows-1257 (CP1257) - - - 6 syntax: address of pattern syntax definition. - - ONIG_SYNTAX_ASIS plain text - ONIG_SYNTAX_POSIX_BASIC POSIX Basic RE - ONIG_SYNTAX_POSIX_EXTENDED POSIX Extended RE - ONIG_SYNTAX_EMACS Emacs - ONIG_SYNTAX_GREP grep - ONIG_SYNTAX_GNU_REGEX GNU regex - ONIG_SYNTAX_JAVA Java (Sun java.util.regex) - ONIG_SYNTAX_PERL58 Perl 5.8 - ONIG_SYNTAX_PERL58_NG Perl 5.8 + named group - ONIG_SYNTAX_PERL Perl 5.10+ - ONIG_SYNTAX_PYTHON Python - ONIG_SYNTAX_RUBY Ruby - ONIG_SYNTAX_DEFAULT default (== Ruby) - onig_set_default_syntax() - - or any OnigSyntaxType data address defined by user. - - 7 err_info: address for return optional error info. - Use this value as 3rd argument of onig_error_code_to_str(). - - - -# int onig_new_without_alloc(regex_t* reg, const UChar* pattern, - const UChar* pattern_end, - OnigOptionType option, OnigEncoding enc, - const OnigSyntaxType* syntax, OnigErrorInfo* err_info) - - Create a regex object. - reg object area is not allocated in this function. - - normal return: ONIG_NORMAL - - - -# int onig_new_deluxe(regex_t** reg, const UChar* pattern, const UChar* pattern_end, - OnigCompileInfo* ci, OnigErrorInfo* einfo) - - Create a regex object. - This function is deluxe version of onig_new(). - - normal return: ONIG_NORMAL - - arguments - 1 reg: return address of regex object. - 2 pattern: regex pattern string. - 3 pattern_end: terminate address of pattern. (pattern + pattern length) - 4 ci: compile time info. - - ci->num_of_elements: number of elements in ci. (current version: 5) - ci->pattern_enc: pattern string character encoding. - ci->target_enc: target string character encoding. - ci->syntax: address of pattern syntax definition. - ci->option: compile time option. - ci->case_fold_flag: character matching case fold bit flag for - ONIG_OPTION_IGNORECASE mode. - - ONIGENC_CASE_FOLD_MIN: minimum - ONIGENC_CASE_FOLD_DEFAULT: minimum - onig_set_default_case_fold_flag() - - 5 err_info: address for return optional error info. - Use this value as 3rd argument of onig_error_code_to_str(). - - - Different character encoding combination is allowed for - the following cases only. - - pattern_enc: ASCII, ISO_8859_1 - target_enc: UTF_16BE, UTF_16LE, UTF_32BE, UTF_32LE - - pattern_enc: UTF_16BE/LE - target_enc: UTF_16LE/BE - - pattern_enc: UTF_32BE/LE - target_enc: UTF_32LE/BE - - -# void onig_free(regex_t* reg) - - Free memory used by regex object. - - arguments - 1 reg: regex object. - - -# void onig_free_body(regex_t* reg) - - Free memory used by regex object. (Except reg oneself.) - - arguments - 1 reg: regex object. - - -# OnigPosition onig_search(regex_t* reg, const UChar* str, const UChar* end, - const UChar* start, const UChar* range, OnigRegion* region, - OnigOptionType option) -# OnigPosition onig_search_gpos(regex_t* reg, const UChar* str, const UChar* end, - const UChar* global_pos, - const UChar* start, const UChar* range, OnigRegion* region, - OnigOptionType option) - - Search string and return search result and matching region. - - normal return: match position offset (i.e. p - str >= 0) - not found: ONIG_MISMATCH (< 0) - - arguments - 1 reg: regex object - 2 str: target string - 3 end: terminate address of target string - 4 global_pos: position of \G - if not need, set same value as str. - 5 start: search start address of target string - 6 range: search terminate address of target string - in forward search (start <= searched string < range) - in backward search (range <= searched string <= start) - 7 region: address for return group match range info (NULL is allowed) - 8 option: search time option - - ONIG_OPTION_NOTBOL string head(str) isn't considered as begin of line - ONIG_OPTION_NOTEOL string end (end) isn't considered as end of line - ONIG_OPTION_NOTBOS string head(str) isn't considered as begin of string (\A) - ONIG_OPTION_NOTEOS string end (end) isn't considered as end of string (\z) - - -# OnigPosition onig_match(regex_t* reg, const UChar* str, const UChar* end, - const UChar* at, OnigRegion* region, OnigOptionType option) - - Match string and return result and matching region. - - normal return: match length (>= 0) - not match: ONIG_MISMATCH ( < 0) - - arguments - 1 reg: regex object - 2 str: target string - 3 end: terminate address of target string - 4 at: match address of target string - 5 region: address for return group match range info (NULL is allowed) - 6 option: search time option - - ONIG_OPTION_NOTBOL string head(str) isn't considered as begin of line - ONIG_OPTION_NOTEOL string end (end) isn't considered as end of line - ONIG_OPTION_NOTBOS string head(str) isn't considered as begin of string (\A) - ONIG_OPTION_NOTEOS string end (end) isn't considered as end of string (\z) - - -# OnigPosition onig_scan(regex_t* reg, const UChar* str, const UChar* end, - OnigRegion* region, OnigOptionType option, - int (*scan_callback)(OnigPosition, OnigPosition, OnigRegion*, void*), - void* callback_arg) - - Scan string and callback with matching region. - - normal return: number of matching times - error: error code - interruption: return value of callback function (!= 0) - - arguments - 1 reg: regex object - 2 str: target string - 3 end: terminate address of target string - 4 region: address for return group match range info (NULL is allowed) - 5 option: search time option - 6 scan_callback: callback function (defined by user) - 7 callback_arg: optional argument passed to callback - - -# OnigRegion* onig_region_new(void) - - Create a region. - - -# void onig_region_free(OnigRegion* region, int free_self) - - Free memory used by region. - - arguments - 1 region: target region - 2 free_self: [1: free all, 0: free memory used in region but not self] - - -# void onig_region_copy(OnigRegion* to, const OnigRegion* from) - - Copy contents of region. - - arguments - 1 to: target region - 2 from: source region - - -# void onig_region_clear(OnigRegion* region) - - Clear contents of region. - - arguments - 1 region: target region - - -# int onig_region_resize(OnigRegion* region, int n) - - Resize group range area of region. - - normal return: ONIG_NORMAL - - arguments - 1 region: target region - 2 n: new size - - -# int onig_name_to_group_numbers(regex_t* reg, const UChar* name, const UChar* name_end, - int** num_list) - - Return the group number list of the name. - Named subexp is defined by (?....). - - normal return: number of groups for the name. - (ex. /(?..)(?..)/ ==> 2) - name not found: -1 - - arguments - 1 reg: regex object. - 2 name: group name. - 3 name_end: terminate address of group name. - 4 num_list: return list of group number. - - -# int onig_name_to_backref_number(regex_t* reg, const UChar* name, const UChar* name_end, - const OnigRegion *region) - - Return the group number corresponding to the named backref (\k). - If two or more regions for the groups of the name are effective, - the greatest number in it is obtained. - - normal return: group number. - - arguments - 1 reg: regex object. - 2 name: group name. - 3 name_end: terminate address of group name. - 4 region: search/match result region. - - -# int onig_foreach_name(regex_t* reg, - int (*func)(const UChar*, const UChar*, int,int*,regex_t*,void*), - void* arg) - - Iterate function call for all names. - - normal return: 0 - error: func's return value. - - arguments - 1 reg: regex object. - 2 func: callback function. - func(name, name_end, , , - reg, arg); - if func does not return 0, then iteration is stopped. - 3 arg: argument for func. - - -# int onig_number_of_names(const regex_t* reg) - - Return the number of names defined in the pattern. - Multiple definitions of one name is counted as one. - - arguments - 1 reg: regex object. - - -# OnigEncoding onig_get_encoding(const regex_t* reg) -# OnigOptionType onig_get_options(const regex_t* reg) -# OnigCaseFoldType onig_get_case_fold_flag(const regex_t* reg) -# const OnigSyntaxType* onig_get_syntax(const regex_t* reg) - - Return a value of the regex object. - - arguments - 1 reg: regex object. - - -# int onig_number_of_captures(const regex_t* reg) - - Return the number of capture group in the pattern. - - arguments - 1 reg: regex object. - - -# int onig_number_of_capture_histories(const regex_t* reg) - - Return the number of capture history defined in the pattern. - - You can't use capture history if ONIG_SYN_OP2_ATMARK_CAPTURE_HISTORY - is disabled in the pattern syntax.(disabled in the default syntax) - - arguments - 1 reg: regex object. - - - -# OnigCaptureTreeNode* onig_get_capture_tree(OnigRegion* region) - - Return the root node of capture history data tree. - - This value is undefined if matching has faild. - - arguments - 1 region: matching result. - - -# int onig_capture_tree_traverse(OnigRegion* region, int at, - int(*func)(int,OnigPosition,OnigPosition,int,int,void*), - void* arg) - - Traverse and callback in capture history data tree. - - normal return: 0 - error: callback func's return value. - - arguments - 1 region: match region data. - 2 at: callback position. - - ONIG_TRAVERSE_CALLBACK_AT_FIRST: callback first, then traverse children. - ONIG_TRAVERSE_CALLBACK_AT_LAST: traverse children first, then callback. - ONIG_TRAVERSE_CALLBACK_AT_BOTH: callback first, then traverse children, - and at last callback again. - - 3 func: callback function. - if func does not return 0, then traverse is stopped. - - int func(int group, OnigPosition beg, OnigPosition end, - int level, int at, void* arg) - - group: group number - beg: capture start position - end: capture end position - level: nest level (from 0) - at: callback position - ONIG_TRAVERSE_CALLBACK_AT_FIRST - ONIG_TRAVERSE_CALLBACK_AT_LAST - arg: optional callback argument - - 4 arg; optional callback argument. - - -# int onig_noname_group_capture_is_active(const regex_t* reg) - - Return noname group capture activity. - - active: 1 - inactive: 0 - - arguments - 1 reg: regex object. - - if option ONIG_OPTION_DONT_CAPTURE_GROUP == ON - --> inactive - - if the regex pattern have named group - and syntax ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP == ON - and option ONIG_OPTION_CAPTURE_GROUP == OFF - --> inactive - - else --> active - - -# UChar* onigenc_get_prev_char_head(OnigEncoding enc, const UChar* start, - const UChar* s, const UChar* end) - - Return previous character head address. - - arguments - 1 enc: character encoding - 2 start: string address - 3 s: target address of string - 4 end: end of string - - -# UChar* onigenc_get_left_adjust_char_head(OnigEncoding enc, - const UChar* start, const UChar* s, const UChar* end) - - Return left-adjusted head address of a character. - - arguments - 1 enc: character encoding - 2 start: string address - 3 s: target address of string - 4 end: end of string - - -# UChar* onigenc_get_right_adjust_char_head(OnigEncoding enc, - const UChar* start, const UChar* s, const UChar* end) - - Return right-adjusted head address of a character. - - arguments - 1 enc: character encoding - 2 start: string address - 3 s: target address of string - 4 end: end of string - - -# int onigenc_strlen(OnigEncoding enc, const UChar* s, const UChar* end) -# int onigenc_strlen_null(OnigEncoding enc, const UChar* s) - - Return number of characters in the string. - - -# int onigenc_str_bytelen_null(OnigEncoding enc, const UChar* s) - - Return number of bytes in the string. - - -# int onig_set_default_syntax(const OnigSyntaxType* syntax) - - Set default syntax. - - arguments - 1 syntax: address of pattern syntax definition. - - -# void onig_copy_syntax(OnigSyntaxType* to, const OnigSyntaxType* from) - - Copy syntax. - - arguments - 1 to: destination address. - 2 from: source address. - - -# unsigned int onig_get_syntax_op(const OnigSyntaxType* syntax) -# unsigned int onig_get_syntax_op2(const OnigSyntaxType* syntax) -# unsigned int onig_get_syntax_behavior(const OnigSyntaxType* syntax) -# OnigOptionType onig_get_syntax_options(const OnigSyntaxType* syntax) - -# void onig_set_syntax_op(OnigSyntaxType* syntax, unsigned int op) -# void onig_set_syntax_op2(OnigSyntaxType* syntax, unsigned int op2) -# void onig_set_syntax_behavior(OnigSyntaxType* syntax, unsigned int behavior) -# void onig_set_syntax_options(OnigSyntaxType* syntax, OnigOptionType options) - - Get/Set elements of the syntax. - - arguments - 1 syntax: syntax - 2 op, op2, behavior, options: value of element. - - -# void onig_copy_encoding(OnigEncodingType *to, OnigEncoding from) - - Copy encoding. - - arguments - 1 to: destination address. - 2 from: source address. - - -# int onig_set_meta_char(OnigSyntaxType* syntax, unsigned int what, - OnigCodePoint code) - - Set a variable meta character to the code point value. - Except for an escape character, this meta characters specification - is not work, if ONIG_SYN_OP_VARIABLE_META_CHARACTERS is not effective - by the syntax. (Build-in syntaxes are not effective.) - - normal return: ONIG_NORMAL - - arguments - 1 syntax: target syntax - 2 what: specifies which meta character it is. - - ONIG_META_CHAR_ESCAPE - ONIG_META_CHAR_ANYCHAR - ONIG_META_CHAR_ANYTIME - ONIG_META_CHAR_ZERO_OR_ONE_TIME - ONIG_META_CHAR_ONE_OR_MORE_TIME - ONIG_META_CHAR_ANYCHAR_ANYTIME - - 3 code: meta character or ONIG_INEFFECTIVE_META_CHAR. - - -# OnigCaseFoldType onig_get_default_case_fold_flag(void) - - Get default case fold flag. - - -# int onig_set_default_case_fold_flag(OnigCaseFoldType case_fold_flag) - - Set default case fold flag. - - 1 case_fold_flag: case fold flag - - -# unsigned int onig_get_match_stack_limit_size(void) - - Return the maximum number of stack size. - (default: 0 == unlimited) - - -# int onig_set_match_stack_limit_size(unsigned int size) - - Set the maximum number of stack size. - (size = 0: unlimited) - - normal return: ONIG_NORMAL - - -# unsigned int onig_get_parse_depth_limit(void) - - Return the maximum depth of parser recursion. - (default: DEFAULT_PARSE_DEPTH_LIMIT defined in regint.h. Currently 4096.) - - -# int onig_set_parse_depth_limit(unsigned int depth) - - Set the maximum depth of parser recursion. - (depth = 0: Set to the default value defined in regint.h.) - - normal return: ONIG_NORMAL - - -# int onig_end(void) - - The use of this library is finished. - - normal return: ONIG_NORMAL - - It is not allowed to use regex objects which created - before onig_end() call. - - -# const char* onig_version(void) - - Return version string. (ex. "5.0.3") - -// END diff --git a/vendor/onig/doc/API.ja b/vendor/onig/doc/API.ja deleted file mode 100644 index 4ae972f..0000000 --- a/vendor/onig/doc/API.ja +++ /dev/null @@ -1,710 +0,0 @@ -Onigmo 繧、繝ウ繧ソ繝シ繝輔ぉ繝シ繧ケ Version 6.1.2 2017/05/10 - -#include - - -# int onig_initialize(OnigEncoding use_encodings[], int num_encodings) - - 繝ゥ繧、繝悶Λ繝ェ縺ョ蛻晄悄蛹 - 鬯シ霆6.0縺ィ縺ョ莠呈鋤諤ァ縺ョ縺溘a縺ォ霑ス蜉縺輔l縺溘 - 迴セ譎らせ縺ァ縺ッonig_init()縺ィ蜷後§縺ァ縺ゅk縲 - - 蠑墓焚 - 1 use_encodings: 菴ソ逕ィ縺吶k譁蟄励お繝ウ繧ウ繝シ繝繧」繝ウ繧ー縺ョ驟榊 - 2 num_encodings: 譁蟄励お繝ウ繧ウ繝シ繝繧」繝ウ繧ー縺ョ謨ー - - -# int onig_init(void) - - 繝ゥ繧、繝悶Λ繝ェ縺ョ蛻晄悄蛹 - - 繧キ繝ウ繧ー繝ォ繧ケ繝ャ繝繝峨励Ο繧ー繝ゥ繝: - onig_new()縺ョ荳ュ縺ァ蜻シ縺ウ蜃コ縺輔l繧九ョ縺ァ縲√%縺ョ髢「謨ー繧呈守、コ逧縺ォ蜻シ縺ウ蜃コ縺輔↑縺上※繧ゅh縺縲 - 縺励°縺怜他縺ウ蜃コ縺呎婿縺梧悍縺セ縺励>縲 - - 繝槭Ν繝√せ繝ャ繝繝峨励Ο繧ー繝ゥ繝: - 縺薙ョ髢「謨ー縺ッ繧ケ繝ャ繝繝峨そ繝シ繝輔〒縺ッ縺ェ縺縺溘a縲{nig_new()繧貞他縺カ蜑阪↓縺ゅk迚ケ螳壹ョ - 繧ケ繝ャ繝繝会シ磯壼クク縺ッ繝。繧、繝ウ繧ケ繝ャ繝繝会シ峨°繧峨%縺ョ髢「謨ー繧貞他縺ウ蜃コ縺輔↑縺代l縺ー縺ェ繧峨↑縺縲 - - -# int onig_error_code_to_str(UChar* err_buf, OnigPosition err_code, ...) - - 繧ィ繝ゥ繝シ繝。繝繧サ繝シ繧ク繧貞叙蠕励☆繧九 - - 縺薙ョ髢「謨ー繧偵{nig_new()縺ョ邨先棡縺ォ蟇セ縺励※蜻シ縺ウ蜃コ縺吝エ蜷医↓縺ッ縲{nig_new()縺ョpattern蠑墓焚繧 - 繝。繝「繝ェ隗」謾セ縺吶k繧医j繧ょ燕縺ォ蜻シ縺ウ蜃コ縺輔↑縺代l縺ー縺ェ繧峨↑縺縲 - - 豁」蟶ク邨ゆコ謌サ繧雁、: 繧ィ繝ゥ繝シ繝。繝繧サ繝シ繧ク譁蟄怜励ョ繝舌う繝磯聞 - - 蠑墓焚 - 1 err_buf: 繧ィ繝ゥ繝シ繝。繝繧サ繝シ繧ク繧呈シ邏阪☆繧矩伜沺 - (蠢隕√↑繧オ繧、繧コ: ONIG_MAX_ERROR_MESSAGE_LEN) - 2 err_code: 繧ィ繝ゥ繝シ繧ウ繝シ繝 - 3 err_info (optional): onig_new()縺ョerr_info - - -# void onig_set_warn_func(OnigWarnFunc func) - - 隴ヲ蜻企夂衍髢「謨ー繧偵そ繝繝医☆繧九 - - 隴ヲ蜻: - '[', '-', ']' in character class without escape. - ']' in pattern without escape. - - 蠑墓焚 - 1 func: 隴ヲ蜻企未謨ー void (*func)(char* warning_message) - - -# void onig_set_verb_warn_func(OnigWarnFunc func) - - 隧ウ邏ー隴ヲ蜻企夂衍髢「謨ー繧偵そ繝繝医☆繧九 - - 隧ウ邏ー隴ヲ蜻: - redundant nested repeat operator. - - 蠑墓焚 - 1 func: 隧ウ邏ー隴ヲ蜻企未謨ー void (*func)(char* warning_message) - - -# int onig_new(regex_t** reg, const UChar* pattern, const UChar* pattern_end, - OnigOptionType option, OnigEncoding enc, - const OnigSyntaxType* syntax, OnigErrorInfo* err_info) - - 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝(regex)繧剃ス懈舌☆繧九 - - 豁」蟶ク邨ゆコ謌サ繧雁、: ONIG_NORMAL - - 蠑墓焚 - 1 reg: 菴懈舌&繧後◆豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝医r霑斐☆繧「繝峨Ξ繧ケ - 2 pattern: 豁」隕剰。ィ迴セ繝代ち繝シ繝ウ譁蟄怜 - 3 pattern_end: 豁」隕剰。ィ迴セ繝代ち繝シ繝ウ譁蟄怜励ョ邨らォッ繧「繝峨Ξ繧ケ(pattern + pattern length) - 4 option: 豁」隕剰。ィ迴セ繧ウ繝ウ繝代う繝ォ譎ゅが繝励す繝ァ繝ウ - - ONIG_OPTION_NONE 繧ェ繝励す繝ァ繝ウ縺ェ縺 - ONIG_OPTION_SINGLELINE '^' -> '\A', '$' -> '\Z' - ONIG_OPTION_DOTALL '.'縺梧隼陦後↓繝槭ャ繝√☆繧 - ONIG_OPTION_MULTILINE ONIG_OPTION_DOTALL縺ィ蜷後§ - ONIG_OPTION_IGNORECASE 譖匁乂繝槭ャ繝 繧ェ繝ウ - ONIG_OPTION_EXTEND 繝代ち繝シ繝ウ諡。蠑オ蠖「蠑 - ONIG_OPTION_FIND_LONGEST 譛髟キ繝槭ャ繝 - ONIG_OPTION_FIND_NOT_EMPTY 遨コ繝槭ャ繝√r辟。隕 - ONIG_OPTION_NEGATE_SINGLELINE - ONIG_SYNTAX_POSIX_BASIC, ONIG_SYNTAX_POSIX_EXTENDED, - ONIG_SYNTAX_PERL, ONIG_SYNTAX_PERL58, ONIG_SYNTAX_PERL58_NG, - ONIG_SYNTAX_JAVA, ONIG_SYNTAX_PYTHON縺ァ - 繝繝輔か繝ォ繝医〒譛牙柑縺ェONIG_OPTION_SINGLELINE繧偵け繝ェ繧「縺吶k縲 - - ONIG_OPTION_DONT_CAPTURE_GROUP 蜷榊燕莉倥″謐慕佐蠑城寔蜷医ョ縺ソ謐慕佐 - ONIG_OPTION_CAPTURE_GROUP 蜷榊燕辟。縺玲黒迯イ蠑城寔蜷医b謐慕佐 - - ONIG_OPTION_NEWLINE_CRLF - CR+LF繧よ隼陦後→縺励※謇ア縺縲(繝繝輔か繝ォ繝医〒縺ッLF縺ョ縺ソ縲) - 縺薙ョ讖溯ス繧剃スソ縺縺ォ縺ッ縲〉egenc.h縺ョ莉・荳九ョ陦後r譛牙柑縺ォ縺吶k蠢隕√′縺ゅk縲 - - /* #define USE_CRNL_AS_LINE_TERMINATOR */ - - 5 enc: 譁蟄励お繝ウ繧ウ繝シ繝繧」繝ウ繧ー - - ONIG_ENCODING_ASCII ASCII - ONIG_ENCODING_ISO_8859_1 ISO 8859-1 - ONIG_ENCODING_ISO_8859_2 ISO 8859-2 - ONIG_ENCODING_ISO_8859_3 ISO 8859-3 - ONIG_ENCODING_ISO_8859_4 ISO 8859-4 - ONIG_ENCODING_ISO_8859_5 ISO 8859-5 - ONIG_ENCODING_ISO_8859_6 ISO 8859-6 - ONIG_ENCODING_ISO_8859_7 ISO 8859-7 - ONIG_ENCODING_ISO_8859_8 ISO 8859-8 - ONIG_ENCODING_ISO_8859_9 ISO 8859-9 - ONIG_ENCODING_ISO_8859_10 ISO 8859-10 - ONIG_ENCODING_ISO_8859_11 ISO 8859-11 - ONIG_ENCODING_ISO_8859_13 ISO 8859-13 - ONIG_ENCODING_ISO_8859_14 ISO 8859-14 - ONIG_ENCODING_ISO_8859_15 ISO 8859-15 - ONIG_ENCODING_ISO_8859_16 ISO 8859-16 - ONIG_ENCODING_UTF_8 UTF-8 - ONIG_ENCODING_UTF_16BE UTF-16BE - ONIG_ENCODING_UTF_16LE UTF-16LE - ONIG_ENCODING_UTF_32BE UTF-32BE - ONIG_ENCODING_UTF_32LE UTF-32LE - ONIG_ENCODING_EUC_JP EUC-JP - ONIG_ENCODING_EUC_TW EUC-TW - ONIG_ENCODING_EUC_KR EUC-KR - ONIG_ENCODING_EUC_CN EUC-CN - ONIG_ENCODING_SHIFT_JIS Shift_JIS - ONIG_ENCODING_WINDOWS_31J Windows-31J (CP932) - ONIG_ENCODING_KOI8_R KOI8-R - ONIG_ENCODING_KOI8_U KOI8-U - ONIG_ENCODING_WINDOWS_1250 Windows-1250 (CP1250) - ONIG_ENCODING_WINDOWS_1251 Windows-1251 (CP1251) - ONIG_ENCODING_WINDOWS_1252 Windows-1252 (CP1252) - ONIG_ENCODING_WINDOWS_1253 Windows-1253 (CP1253) - ONIG_ENCODING_WINDOWS_1254 Windows-1254 (CP1254) - ONIG_ENCODING_WINDOWS_1257 Windows-1257 (CP1257) - ONIG_ENCODING_BIG5 Big5 - ONIG_ENCODING_GB18030 GB18030 - - 縺セ縺溘ッ縲√Θ繝シ繧カ縺悟ョ夂セゥ縺励◆OnigEncodingType繝繝シ繧ソ縺ョ繧「繝峨Ξ繧ケ - - 蠕梧婿莠呈鋤諤ァ縺ョ縺溘a縲∽サ・荳九ョ繧ィ繝ウ繧ウ繝シ繝繧」繝ウ繧ー蜷阪b菴ソ逕ィ縺ァ縺阪k縲 - - ONIG_ENCODING_UTF8 UTF-8 - ONIG_ENCODING_UTF16_BE UTF-16BE - ONIG_ENCODING_UTF16_LE UTF-16LE - ONIG_ENCODING_UTF32_BE UTF-32BE - ONIG_ENCODING_UTF32_LE UTF-32LE - ONIG_ENCODING_SJIS Shift_JIS - ONIG_ENCODING_CP932 Windows-31J (CP932) - ONIG_ENCODING_CP1250 Windows-1250 (CP1250) - ONIG_ENCODING_CP1251 Windows-1251 (CP1251) - ONIG_ENCODING_CP1252 Windows-1252 (CP1252) - ONIG_ENCODING_CP1253 Windows-1253 (CP1253) - ONIG_ENCODING_CP1254 Windows-1254 (CP1254) - ONIG_ENCODING_CP1257 Windows-1257 (CP1257) - - - 6 syntax: 豁」隕剰。ィ迴セ繝代ち繝シ繝ウ譁豕募ョ夂セゥ - - ONIG_SYNTAX_ASIS plain text - ONIG_SYNTAX_POSIX_BASIC POSIX Basic RE - ONIG_SYNTAX_POSIX_EXTENDED POSIX Extended RE - ONIG_SYNTAX_EMACS Emacs - ONIG_SYNTAX_GREP grep - ONIG_SYNTAX_GNU_REGEX GNU regex - ONIG_SYNTAX_JAVA Java (Sun java.util.regex) - ONIG_SYNTAX_PERL58 Perl 5.8 - ONIG_SYNTAX_PERL58_NG Perl 5.8 + 蜷榊燕莉倥″謐慕佐蠑城寔蜷 - ONIG_SYNTAX_PERL Perl 5.10莉・髯 - ONIG_SYNTAX_PYTHON Python - ONIG_SYNTAX_RUBY Ruby - ONIG_SYNTAX_DEFAULT default (== Ruby) - onig_set_default_syntax() - - 縺セ縺溘ッ縲√Θ繝シ繧カ縺悟ョ夂セゥ縺励◆OnigSyntaxType繝繝シ繧ソ縺ョ繧「繝峨Ξ繧ケ - - 7 err_info: 繧ィ繝ゥ繝シ諠蝣ア繧定ソ斐☆縺溘a縺ョ繧「繝峨Ξ繧ケ - onig_error_code_to_str()縺ョ荳臥分逶ョ縺ョ蠑墓焚縺ィ縺励※菴ソ逕ィ縺吶k - - - -# int onig_new_without_alloc(regex_t* reg, const UChar* pattern, - const UChar* pattern_end, - OnigOptionType option, OnigEncoding enc, - const OnigSyntaxType* syntax, OnigErrorInfo* err_info) - - 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝(regex)繧剃ス懈舌☆繧九 - reg縺ョ鬆伜沺繧貞驛ィ縺ァ蜑イ繧雁ス薙※縺ェ縺縲 - - 豁」蟶ク邨ゆコ謌サ繧雁、: ONIG_NORMAL - - - -# int onig_new_deluxe(regex_t** reg, const UChar* pattern, const UChar* pattern_end, - OnigCompileInfo* ci, OnigErrorInfo* einfo) - - 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝(regex)繧剃ス懈舌☆繧九 - 縺薙ョ髢「謨ー縺ッ縲{nig_new()縺ョ繝繝ゥ繝繧ッ繧ケ迚医 - - 豁」蟶ク邨ゆコ謌サ繧雁、: ONIG_NORMAL - - 蠑墓焚 - 1 reg: 菴懈舌&繧後◆豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝医r霑斐☆繧「繝峨Ξ繧ケ - 2 pattern: 豁」隕剰。ィ迴セ繝代ち繝シ繝ウ譁蟄怜 - 3 pattern_end: 豁」隕剰。ィ迴セ繝代ち繝シ繝ウ譁蟄怜励ョ邨らォッ繧「繝峨Ξ繧ケ(pattern + pattern length) - 4 ci: 繧ウ繝ウ繝代う繝ォ諠蝣ア - - ci->num_of_elements: ci縺ョ隕∫エ謨ー (迴セ蝨ィ縺ョ迚医〒縺ッ: 5) - ci->pattern_enc: 繝代ち繝シ繝ウ譁蟄怜励ョ譁蟄励お繝ウ繧ウ繝シ繝繧」繝ウ繧ー - ci->target_enc: 蟇セ雎。譁蟄怜励ョ譁蟄励お繝ウ繧ウ繝シ繝繧」繝ウ繧ー - ci->syntax: 豁」隕剰。ィ迴セ繝代ち繝シ繝ウ譁豕募ョ夂セゥ - ci->option: 豁」隕剰。ィ迴セ繧ウ繝ウ繝代う繝ォ譎ゅが繝励す繝ァ繝ウ - ci->case_fold_flag: ONIG_OPTION_IGNORECASE繝「繝シ繝峨〒縺ョ - 譁蟄玲尠譏ァ繝槭ャ繝∵欠螳壹ン繝繝医ヵ繝ゥ繧ー - - ONIGENC_CASE_FOLD_MIN: 譛蟆 - ONIGENC_CASE_FOLD_DEFAULT: 譛蟆 - onig_set_default_case_fold_flag() - - 5 err_info: 繧ィ繝ゥ繝シ諠蝣ア繧定ソ斐☆縺溘a縺ョ繧「繝峨Ξ繧ケ - onig_error_code_to_str()縺ョ荳臥分逶ョ縺ョ蠑墓焚縺ィ縺励※菴ソ逕ィ縺吶k - - - 逡ー縺ェ繧区枚蟄励お繝ウ繧ウ繝シ繝繧」繝ウ繧ー縺ョ邨縺ソ蜷医o縺帙ッ縲∽サ・荳九ョ蝣エ蜷医↓縺ョ縺ソ險ア縺輔l繧九 - - pattern_enc: ASCII, ISO_8859_1 - target_enc: UTF16_BE, UTF16_LE, UTF32_BE, UTF32_LE - - pattern_enc: UTF16_BE/LE - target_enc: UTF16_LE/BE - - pattern_enc: UTF32_BE/LE - target_enc: UTF32_LE/BE - - -# void onig_free(regex_t* reg) - - 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝医ョ繝。繝「繝ェ繧定ァ」謾セ縺吶k縲 - - 蠑墓焚 - 1 reg: 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝 - - -# void onig_free_body(regex_t* reg) - - 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝医ョ繝。繝「繝ェ繧定ァ」謾セ縺吶k縲(reg閾ェ霄ォ縺ョ鬆伜沺繧帝勁縺縺ヲ) - - 蠑墓焚 - 1 reg: 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝 - - - -# OnigPosition onig_search(regex_t* reg, const UChar* str, const UChar* end, - const UChar* start, const UChar* range, OnigRegion* region, - OnigOptionType option) -# OnigPosition onig_search_gpos(regex_t* reg, const UChar* str, const UChar* end, - const UChar* global_pos, - const UChar* start, const UChar* range, OnigRegion* region, - OnigOptionType option) - - 豁」隕剰。ィ迴セ縺ァ譁蟄怜励r讀懃エ「縺励∵、懃エ「邨先棡縺ィ繝槭ャ繝鬆伜沺繧定ソ斐☆縲 - - 豁」蟶ク邨ゆコ謌サ繧雁、: 繝槭ャ繝∽ス咲スョ (p - str >= 0) - 讀懃エ「螟ア謨: ONIG_MISMATCH (< 0) - - 蠑墓焚 - 1 reg: 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝 - 2 str: 讀懃エ「蟇セ雎。譁蟄怜 - 3 end: 讀懃エ「蟇セ雎。譁蟄怜励ョ邨らォッ繧「繝峨Ξ繧ケ - 4 global_pos: \G縺ョ繧「繝峨Ξ繧ケ - 荳崎ヲ∵凾縺ッstr縺ィ蜷後§蛟、繧定ィュ螳壹☆繧九%縺ィ - 5 start: 讀懃エ「蟇セ雎。譁蟄怜励ョ讀懃エ「蜈磯ュ菴咲スョ繧「繝峨Ξ繧ケ - 6 range: 讀懃エ「蟇セ雎。譁蟄怜励ョ讀懃エ「邨ゆコ菴咲スョ繧「繝峨Ξ繧ケ - 蜑肴婿謗「邏「 (start <= 謗「邏「縺輔l繧区枚蟄怜 < range) - 蠕梧婿謗「邏「 (range <= 謗「邏「縺輔l繧区枚蟄怜 <= start) - 7 region: 繝槭ャ繝鬆伜沺諠蝣ア(region) (NULL繧りィア縺輔l繧) - 8 option: 讀懃エ「譎ゅが繝励す繝ァ繝ウ - - ONIG_OPTION_NOTBOL 譁蟄怜励ョ蜈磯ュ(str)繧定。碁ュ縺ィ逵句★縺輔↑縺 - ONIG_OPTION_NOTEOL 譁蟄怜励ョ邨らォッ(end)繧定。梧忰縺ィ逵句★縺輔↑縺 - ONIG_OPTION_NOTBOS 譁蟄怜励ョ蜈磯ュ(str)繧貞磯ュ(\A)縺ィ逵句★縺輔↑縺 - ONIG_OPTION_NOTEOS 譁蟄怜励ョ邨らォッ(end)繧堤オらォッ(\z)縺ィ逵句★縺輔↑縺 - - -# OnigPosition onig_match(regex_t* reg, const UChar* str, const UChar* end, - const UChar* at, OnigRegion* region, OnigOptionType option) - - 譁蟄怜励ョ謖螳壻ス咲スョ縺ァ繝槭ャ繝√Φ繧ー繧定。後>縲∫オ先棡縺ィ繝槭ャ繝鬆伜沺繧定ソ斐☆縲 - - 豁」蟶ク邨ゆコ謌サ繧雁、: 繝槭ャ繝√@縺溘ヰ繧、繝磯聞 (>= 0) - not match: ONIG_MISMATCH ( < 0) - - 蠑墓焚 - 1 reg: 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝 - 2 str: 讀懃エ「蟇セ雎。譁蟄怜 - 3 end: 讀懃エ「蟇セ雎。譁蟄怜励ョ邨らォッ繧「繝峨Ξ繧ケ - 4 at: 讀懃エ「蟇セ雎。譁蟄怜励ョ讀懃エ「繧「繝峨Ξ繧ケ - 5 region: 繝槭ャ繝鬆伜沺諠蝣ア(region) (NULL繧りィア縺輔l繧) - 6 option: 讀懃エ「譎ゅが繝励す繝ァ繝ウ - - ONIG_OPTION_NOTBOL 譁蟄怜励ョ蜈磯ュ(str)繧定。碁ュ縺ィ逵句★縺輔↑縺 - ONIG_OPTION_NOTEOL 譁蟄怜励ョ邨らォッ(end)繧定。梧忰縺ィ逵句★縺輔↑縺 - ONIG_OPTION_NOTBOS 譁蟄怜励ョ蜈磯ュ(str)繧貞磯ュ(\A)縺ィ逵句★縺輔↑縺 - ONIG_OPTION_NOTEOS 譁蟄怜励ョ邨らォッ(end)繧堤オらォッ(\z)縺ィ逵句★縺輔↑縺 - - -# OnigPosition onig_scan(regex_t* reg, const UChar* str, const UChar* end, - OnigRegion* region, OnigOptionType option, - int (*scan_callback)(OnigPosition, OnigPosition, OnigRegion*, void*), - void* callback_arg) - - 豁」隕剰。ィ迴セ縺ァ譁蟄怜励r繧ケ繧ュ繝」繝ウ縺励※縲√槭ャ繝√Φ繧ー縺吶k豈弱↓繧ウ繝シ繝ォ繝舌ャ繧ッ髢「謨ー繧貞他縺ウ蜃コ縺吶 - - 豁」蟶ク邨ゆコ: 繝槭ャ繝∝屓謨ー (0蝗槭b蜷ォ繧√k) - 繧ィ繝ゥ繝シ: 繧ィ繝ゥ繝シ繧ウ繝シ繝 (< 0) - 荳ュ譁ュ: 繧ウ繝シ繝ォ繝舌ャ繧ッ髢「謨ー縺鯉シ蝉サ・螟悶ョ謌サ繧雁、繧定ソ斐@縺溘→縺阪√◎縺ョ蛟、繧呈綾繧雁、縺ィ縺励※荳ュ譁ュ - - 蠑墓焚 - 1 reg: 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝 - 2 str: 讀懃エ「蟇セ雎。譁蟄怜 - 3 end: 讀懃エ「蟇セ雎。譁蟄怜励ョ邨らォッ繧「繝峨Ξ繧ケ - 4 region: 繝槭ャ繝鬆伜沺諠蝣ア(region) (NULL繧りィア縺輔l繧) - 5 option: 讀懃エ「譎ゅが繝励す繝ァ繝ウ - 6 scan_callback: 繧ウ繝シ繝ォ繝舌ャ繧ッ髢「謨ー - 7 callback_arg: 繧ウ繝シ繝ォ繝舌ャ繧ッ髢「謨ー縺ォ貂。縺輔l繧倶サ伜刈蠑墓焚蛟、 - - -# OnigRegion* onig_region_new(void) - - 繝槭ャ繝鬆伜沺諠蝣ア(region)繧剃ス懈舌☆繧九 - - -# void onig_region_free(OnigRegion* region, int free_self) - - 繝槭ャ繝鬆伜沺諠蝣ア(region)縺ァ菴ソ逕ィ縺輔l縺ヲ縺繧九Γ繝「繝ェ繧定ァ」謾セ縺吶k縲 - - 蠑墓焚 - 1 region: 繝槭ャ繝鬆伜沺諠蝣ア繧ェ繝悶ず繧ァ繧ッ繝 - 2 free_self: [1: region閾ェ霄ォ繧貞性繧√※蜈ィ縺ヲ隗」謾セ, 0: region閾ェ霄ォ縺ッ隗」謾セ縺励↑縺Ь - - -# void onig_region_copy(OnigRegion* to, const OnigRegion* from) - - 繝槭ャ繝鬆伜沺諠蝣ア(region)繧定、陬ス縺吶k縲 - - 蠑墓焚 - 1 to: 蟇セ雎。鬆伜沺 - 2 from: 蜈鬆伜沺 - - -# void onig_region_clear(OnigRegion* region) - - 繝槭ャ繝鬆伜沺諠蝣ア(region)縺ョ荳ュ蜻ウ繧偵け繝ェ繧「縺吶k縲 - - 蠑墓焚 - 1 region: 蟇セ雎。鬆伜沺 - - -# int onig_region_resize(OnigRegion* region, int n) - - 繝槭ャ繝鬆伜沺諠蝣ア(region)縺ョ謐慕佐蠑城寔蜷(繧ー繝ォ繝シ繝)謨ー繧貞、画峩縺吶k縲 - - 豁」蟶ク邨ゆコ謌サ繧雁、: ONIG_NORMAL - - 蠑墓焚 - 1 region: 蟇セ雎。鬆伜沺 - 2 n: 譁ー縺励>繧オ繧、繧コ - - -# int onig_name_to_group_numbers(regex_t* reg, const UChar* name, const UChar* name_end, - int** num_list) - - 謖螳壹@縺溷錐蜑阪↓蟇セ縺吶k蜷榊燕莉倥″謐慕佐蠑城寔蜷(繧ー繝ォ繝シ繝)縺ョ - 繧ー繝ォ繝シ繝礼分蜿キ繝ェ繧ケ繝医r霑斐☆縲 - 蜷榊燕莉倥″謐慕佐蠑城寔蜷医ッ縲(?....)縺ォ繧医▲縺ヲ螳夂セゥ縺ァ縺阪k縲 - - 豁」蟶ク邨ゆコ謌サ繧雁、: 謖螳壹&繧後◆蜷榊燕縺ォ蟇セ縺吶k繧ー繝ォ繝シ繝玲焚 - (萓 /(?..)(?..)/ ==> 2) - 蜷榊燕縺ォ蟇セ縺吶k繧ー繝ォ繝シ繝励′蟄伜惠縺励↑縺: -1 - - 蠑墓焚 - 1 reg: 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝 - 2 name: 謐慕佐蠑城寔蜷(繧ー繝ォ繝シ繝)蜷 - 3 name_end: 謐慕佐蠑城寔蜷(繧ー繝ォ繝シ繝)蜷阪ョ邨らォッ繧「繝峨Ξ繧ケ - 4 num_list: 逡ェ蜿キ繝ェ繧ケ繝医r霑斐☆繧「繝峨Ξ繧ケ - - -# int onig_name_to_backref_number(regex_t* reg, const UChar* name, const UChar* name_end, - const OnigRegion *region) - - 謖螳壹&繧後◆蜷榊燕縺ョ蠕梧婿蜿らァ(\k)縺ォ蟇セ縺吶k謐慕佐蠑城寔蜷(繧ー繝ォ繝シ繝)縺ョ逡ェ蜿キ繧定ソ斐☆縲 - 蜷榊燕縺ォ蟇セ縺励※縲∬、謨ー縺ョ繝槭ャ繝鬆伜沺縺梧怏蜉ケ縺ァ縺ゅl縺ー縲√◎縺ョ荳ュ縺ョ譛螟ァ縺ョ逡ェ蜿キ繧定ソ斐☆縲 - 蜷榊燕縺ォ蟇セ縺吶k謐慕佐蠑城寔蜷医′荳蛟九@縺九↑縺縺ィ縺阪↓縺ッ縲∝ッセ蠢懊☆繧九槭ャ繝鬆伜沺縺梧怏蜉ケ縺 - 縺ゥ縺縺九↓髢「菫ゅ↑縺上√◎縺ョ逡ェ蜿キ繧定ソ斐☆縲(蠕薙▲縺ヲ縲〉egion縺ォ縺ッNULL繧呈ク。縺励※繧ゅh縺縲) - - 豁」蟶ク邨ゆコ謌サ繧雁、: 逡ェ蜿キ - - 蠑墓焚 - 1 reg: 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝 - 2 name: 謐慕佐蠑城寔蜷(繧ー繝ォ繝シ繝)蜷 - 3 name_end: 謐慕佐蠑城寔蜷(繧ー繝ォ繝シ繝)蜷阪ョ邨らォッ繧「繝峨Ξ繧ケ - 4 region: search/match邨先棡縺ョ繝槭ャ繝鬆伜沺 - - -# int onig_foreach_name(regex_t* reg, - int (*func)(const UChar*, const UChar*, int,int*,regex_t*,void*), - void* arg) - - 蜈ィ縺ヲ縺ョ蜷榊燕縺ォ蟇セ縺励※繧ウ繝シ繝ォ繝舌ャ繧ッ髢「謨ー蜻シ縺ウ蜃コ縺励r螳溯。後☆繧九 - - 豁」蟶ク邨ゆコ謌サ繧雁、: 0 - 繧ィ繝ゥ繝シ: 繧ウ繝シ繝ォ繝舌ャ繧ッ髢「謨ー縺ョ謌サ繧雁、 - - 蠑墓焚 - 1 reg: 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝 - 2 func: 繧ウ繝シ繝ォ繝舌ャ繧ッ髢「謨ー - func(name, name_end, , , - reg, arg); - - func縺0莉・螟悶ョ蛟、繧定ソ斐☆縺ィ縲√◎繧御サ・髯阪ョ繧ウ繝シ繝ォ繝舌ャ繧ッ縺ッ陦後↑繧上★縺ォ - 邨ゆコ縺吶k縲 - - 3 arg: func縺ォ蟇セ縺吶k霑ス蜉蠑墓焚 - - -# int onig_number_of_names(const regex_t* reg) - - 繝代ち繝シ繝ウ荳ュ縺ァ螳夂セゥ縺輔l縺溷錐蜑阪ョ謨ー繧定ソ斐☆縲 - 荳蛟九ョ蜷榊燕縺ョ螟夐榊ョ夂セゥ縺ッ荳蛟九→逵句★縺吶 - - 蠑墓焚 - 1 reg: 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝 - - -# OnigEncoding onig_get_encoding(const regex_t* reg) -# OnigOptionType onig_get_options(const regex_t* reg) -# OnigCaseFoldType onig_get_case_fold_flag(const regex_t* reg) -# const OnigSyntaxType* onig_get_syntax(const regex_t* reg) - - 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝医↓蟇セ縺励※縲∝ッセ蠢懊☆繧句、繧定ソ斐☆縲 - - 蠑墓焚 - 1 reg: 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝 - - -# int onig_number_of_captures(const regex_t* reg) - - 繝代ち繝シ繝ウ荳ュ縺ァ螳夂セゥ縺輔l縺滓黒迯イ繧ー繝ォ繝シ繝励ョ謨ー繧定ソ斐☆縲 - - 蠑墓焚 - 1 reg: 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝 - - -# int onig_number_of_capture_histories(const regex_t* reg) - - 繝代ち繝シ繝ウ荳ュ縺ァ螳夂セゥ縺輔l縺滓黒迯イ螻・豁エ(?@...)縺ョ謨ー繧定ソ斐☆縲 - - 菴ソ逕ィ縺吶k譁豕輔〒謐慕佐螻・豁エ讖溯ス縺梧怏蜉ケ(ONIG_SYN_OP2_ATMARK_CAPTURE_HISTORY) - 縺ァ縺ェ縺代l縺ー縲∵黒迯イ螻・豁エ讖溯ス縺ッ菴ソ逕ィ縺ァ縺阪↑縺縲 - - 蠑墓焚 - 1 reg: 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝 - - -# OnigCaptureTreeNode* onig_get_capture_tree(OnigRegion* region) - - 謐慕佐螻・豁エ繝繝シ繧ソ縺ョ繝ォ繝シ繝医ヮ繝シ繝峨r霑斐☆縲 - - 繝槭ャ繝√′螟ア謨励@縺ヲ縺繧句エ蜷医↓縺ッ縲√%縺ョ蛟、縺ッ荳榊ョ壹〒縺ゅk縲 - - 蠑墓焚 - 1 region: 繝槭ャ繝鬆伜沺 - - -# int onig_capture_tree_traverse(OnigRegion* region, int at, - int(*func)(int,OnigPosition,OnigPosition,int,int,void*), - void* arg) - - 謐慕佐螻・豁エ繝繝シ繧ソ譛ィ繧貞キ。蝗槭@縺ヲ繧ウ繝シ繝ォ繝舌ャ繧ッ縺吶k縲 - - 豁」蟶ク邨ゆコ謌サ繧雁、: 0 - 繧ィ繝ゥ繝シ: 繧ウ繝シ繝ォ繝舌ャ繧ッ髢「謨ー縺ョ謌サ繧雁、 - - 蠑墓焚 - 1 region: 繝槭ャ繝鬆伜沺 - 2 at: 繧ウ繝シ繝ォ繝舌ャ繧ッ繧定。後↑縺繧ソ繧、繝溘Φ繧ー - - ONIG_TRAVERSE_CALLBACK_AT_FIRST: - 譛蛻昴↓繧ウ繝シ繝ォ繝舌ャ繧ッ縺励※縲∝ュ舌ヮ繝シ繝峨r蟾。蝗 - ONIG_TRAVERSE_CALLBACK_AT_LAST: - 蟄舌ヮ繝シ繝峨r蟾。蝗槭@縺ヲ縲√さ繝シ繝ォ繝舌ャ繧ッ - ONIG_TRAVERSE_CALLBACK_AT_BOTH: - 譛蛻昴↓繧ウ繝シ繝ォ繝舌ャ繧ッ縺励※縲∝ュ舌ヮ繝シ繝峨r蟾。蝗槭∵怙蠕後↓繧ゅ≧荳蠎ヲ繧ウ繝シ繝ォ繝舌ャ繧ッ - - 3 func: 繧ウ繝シ繝ォ繝舌ャ繧ッ髢「謨ー - func縺0莉・螟悶ョ蛟、繧定ソ斐☆縺ィ縲√◎繧御サ・髯阪ョ蟾。蝗槭ッ陦後↑繧上★縺ォ - 邨ゆコ縺吶k縲 - - int func(int group, OnigPosition beg, OnigPosition end, - int level, int at, void* arg) - group: 繧ー繝ォ繝シ繝礼分蜿キ - beg: 繝槭ャ繝髢句ァ倶ス咲スョ - end 繝槭ャ繝∫オゆコ菴咲スョ - level: 繝阪せ繝医Ξ繝吶Ν (0縺九i) - at: 繧ウ繝シ繝ォ繝舌ャ繧ッ縺悟他縺ウ蜃コ縺輔l縺溘ち繧、繝溘Φ繧ー - ONIG_TRAVERSE_CALLBACK_AT_FIRST - ONIG_TRAVERSE_CALLBACK_AT_LAST - arg: 霑ス蜉蠑墓焚 - - 4 arg; func縺ォ蟇セ縺吶k霑ス蜉蠑墓焚 - - -# int onig_noname_group_capture_is_active(const regex_t* reg) - - 蜷榊燕縺ェ縺怜シ城寔蜷医ョ謐慕佐讖溯ス縺梧怏蜉ケ縺九←縺縺九r霑斐☆縲 - - 譛牙柑: 1 - 辟。蜉ケ: 0 - - 蠑墓焚 - 1 reg: 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝 - - - 繧ェ繝励す繝ァ繝ウ縺ョONIG_OPTION_DONT_CAPTURE_GROUP縺薫N --> 辟。蜉ケ - - 繝代ち繝シ繝ウ縺悟錐蜑阪▽縺榊シ城寔蜷医r菴ソ逕ィ縺励※縺繧 - AND 菴ソ逕ィ譁豕輔〒縲^NIG_SYN_CAPTURE_ONLY_NAMED_GROUP縺薫N - AND 繧ェ繝励す繝ァ繝ウ縺ョONIG_OPTION_CAPTURE_GROUP縺薫FF - --> 辟。蜉ケ - - 荳願ィ倅サ・螟悶ョ蝣エ蜷 --> 譛牙柑 - - -# UChar* onigenc_get_prev_char_head(OnigEncoding enc, const UChar* start, - const UChar* s, const UChar* end) - - 譁蟄嶺ク蛟句蜑阪ョ譁蟄怜嶺ス咲スョ繧定ソ斐☆縲 - - 蠑墓焚 - 1 enc: 譁蟄励お繝ウ繧ウ繝シ繝繧」繝ウ繧ー - 2 start: 譁蟄怜励ョ蜈磯ュ繧「繝峨Ξ繧ケ - 3 s: 譁蟄怜嶺クュ縺ョ菴咲スョ - 4 end: 譁蟄怜励ョ譛ォ蟆セ - - -# UChar* onigenc_get_left_adjust_char_head(OnigEncoding enc, - const UChar* start, const UChar* s, const UChar* end) - - 譁蟄励ョ蜈磯ュ繝舌う繝井ス咲スョ縺ォ縺ェ繧九h縺縺ォ蟾ヲ蛛エ縺ォ隱ソ謨エ縺励◆繧「繝峨Ξ繧ケ繧定ソ斐☆縲 - - 蠑墓焚 - 1 enc: 譁蟄励お繝ウ繧ウ繝シ繝繧」繝ウ繧ー - 2 start: 譁蟄怜励ョ蜈磯ュ繧「繝峨Ξ繧ケ - 3 s: 譁蟄怜嶺クュ縺ョ菴咲スョ - 4 end: 譁蟄怜励ョ譛ォ蟆セ - - -# UChar* onigenc_get_right_adjust_char_head(OnigEncoding enc, - const UChar* start, const UChar* s, const UChar* end) - - 譁蟄励ョ蜈磯ュ繝舌う繝井ス咲スョ縺ォ縺ェ繧九h縺縺ォ蜿ウ蛛エ縺ォ隱ソ謨エ縺励◆繧「繝峨Ξ繧ケ繧定ソ斐☆縲 - - 蠑墓焚 - 1 enc: 譁蟄励お繝ウ繧ウ繝シ繝繧」繝ウ繧ー - 2 start: 譁蟄怜励ョ蜈磯ュ繧「繝峨Ξ繧ケ - 3 s: 譁蟄怜嶺クュ縺ョ菴咲スョ - 4 end: 譁蟄怜励ョ譛ォ蟆セ - - -# int onigenc_strlen(OnigEncoding enc, const UChar* s, const UChar* end) -# int onigenc_strlen_null(OnigEncoding enc, const UChar* s) - - 譁蟄怜励ョ譁蟄玲焚繧定ソ斐☆縲 - - -# int onigenc_str_bytelen_null(OnigEncoding enc, const UChar* s) - - 譁蟄怜励ョ繝舌う繝域焚繧定ソ斐☆縲 - - -# int onig_set_default_syntax(const OnigSyntaxType* syntax) - - 繝繝輔か繝ォ繝医ョ豁」隕剰。ィ迴セ繝代ち繝シ繝ウ譁豕輔r繧サ繝繝医☆繧九 - - 蠑墓焚 - 1 syntax: 豁」隕剰。ィ迴セ繝代ち繝シ繝ウ譁豕 - - -# void onig_copy_syntax(OnigSyntaxType* to, const OnigSyntaxType* from) - - 豁」隕剰。ィ迴セ繝代ち繝シ繝ウ譁豕輔r繧ウ繝斐シ縺吶k縲 - - 蠑墓焚 - 1 to: 蟇セ雎。 - 2 from: 蜈 - - -# unsigned int onig_get_syntax_op(const OnigSyntaxType* syntax) -# unsigned int onig_get_syntax_op2(const OnigSyntaxType* syntax) -# unsigned int onig_get_syntax_behavior(const OnigSyntaxType* syntax) -# OnigOptionType onig_get_syntax_options(const OnigSyntaxType* syntax) - -# void onig_set_syntax_op(OnigSyntaxType* syntax, unsigned int op) -# void onig_set_syntax_op2(OnigSyntaxType* syntax, unsigned int op2) -# void onig_set_syntax_behavior(OnigSyntaxType* syntax, unsigned int behavior) -# void onig_set_syntax_options(OnigSyntaxType* syntax, OnigOptionType options) - - 豁」隕剰。ィ迴セ繝代ち繝シ繝ウ譁豕輔ョ隕∫エ繧貞盾辣ァ/蜿門セ励☆繧九 - - 蠑墓焚 - 1 syntax: 豁」隕剰。ィ迴セ繝代ち繝シ繝ウ譁豕 - 2 op, op2, behavior, options: 隕∫エ縺ョ蛟、 - - -# void onig_copy_encoding(OnigEncodingType *to, OnigEncoding from) - - 譁蟄励お繝ウ繧ウ繝シ繝繧」繝ウ繧ー繧偵さ繝斐シ縺吶k縲 - - 蠑墓焚 - 1 to: 蟇セ雎。 - 2 from: 蜈 - - -# int onig_set_meta_char(OnigSyntaxType* syntax, unsigned int what, - OnigCodePoint code) - - 繝。繧ソ譁蟄励r謖螳壹@縺溘さ繝シ繝峨昴う繝ウ繝亥、縺ォ繧サ繝繝医☆繧九 - ONIG_SYN_OP_VARIABLE_META_CHARACTERS縺梧ュ」隕剰。ィ迴セ繝代ち繝シ繝ウ譁豕輔〒譛牙柑縺ォ - 縺ェ縺」縺ヲ縺縺ェ縺蝣エ蜷医↓縺ッ縲√お繧ケ繧ア繝シ繝玲枚蟄励r髯、縺縺ヲ縲√%縺薙〒謖螳壹@縺溘Γ繧ソ譁蟄励ッ - 讖溯ス縺励↑縺縲(邨霎シ縺ソ縺ョ譁豕輔〒縺ッ譛牙柑縺ォ縺励※縺縺ェ縺縲) - - 豁」蟶ク邨ゆコ謌サ繧雁、: ONIG_NORMAL - - 蠑墓焚 - 1 syntax: 蟇セ雎。譁豕 - 2 what: 繝。繧ソ譁蟄玲ゥ溯ス縺ョ謖螳 - - ONIG_META_CHAR_ESCAPE - ONIG_META_CHAR_ANYCHAR - ONIG_META_CHAR_ANYTIME - ONIG_META_CHAR_ZERO_OR_ONE_TIME - ONIG_META_CHAR_ONE_OR_MORE_TIME - ONIG_META_CHAR_ANYCHAR_ANYTIME - - 3 code: 繝。繧ソ譁蟄励ョ繧ウ繝シ繝峨昴う繝ウ繝 縺セ縺溘ッ ONIG_INEFFECTIVE_META_CHAR. - - -# OnigCaseFoldType onig_get_default_case_fold_flag(void) - - 繝繝輔か繝ォ繝医ョcase fold繝輔Λ繧ー繧貞叙蠕励☆繧九 - - -# int onig_set_default_case_fold_flag(OnigCaseFoldType case_fold_flag) - - 繝繝輔か繝ォ繝医ョcase fold繝輔Λ繧ー繧偵そ繝繝医☆繧九 - - 蠑墓焚 - 1 case_fold_flag: case fold繝輔Λ繧ー - - -# unsigned int onig_get_match_stack_limit_size(void) - - 繝槭ャ繝√せ繧ソ繝繧ッ繧オ繧、繧コ縺ョ譛螟ァ蛟、繧定ソ斐☆縲 - (繝繝輔か繝ォ繝: 0 == 辟。蛻カ髯) - - -# int onig_set_match_stack_limit_size(unsigned int size) - - 繝槭ャ繝√せ繧ソ繝繧ッ繧オ繧、繧コ縺ョ譛螟ァ蛟、繧呈欠螳壹☆繧九 - (size = 0: 辟。蛻カ髯) - - 豁」蟶ク邨ゆコ謌サ繧雁、: ONIG_NORMAL - - -# unsigned int onig_get_parse_depth_limit(void) - - 蜀榊クー繝代シ繧ケ蜃ヲ逅縺ョ譛螟ァ豺ア縺輔r霑斐☆縲 - (繝繝輔か繝ォ繝: regint.h 縺ァ螳夂セゥ縺輔l縺ヲ縺繧 DEFAULT_PARSE_DEPTH_LIMIT縲ら樟蝨ィ縺ッ 4096) - - -# int onig_set_parse_depth_limit(unsigned int depth) - - 蜀榊クー繝代シ繧ケ蜃ヲ逅縺ョ譛螟ァ豺ア縺輔r謖螳壹☆繧九 - (depth = 0: regint.h 縺ァ螳夂セゥ縺輔l縺溘ョ繝輔か繝ォ繝亥、縺ォ險ュ螳壹☆繧九) - - 豁」蟶ク邨ゆコ謌サ繧雁、: ONIG_NORMAL - - -# int onig_end(void) - - 繝ゥ繧、繝悶Λ繝ェ縺ョ菴ソ逕ィ繧堤オゆコ縺吶k縲 - - 豁」蟶ク邨ゆコ謌サ繧雁、: ONIG_NORMAL - - onig_init()繧貞榊コヲ蜻シ縺ウ蜃コ縺励※繧ゅ∽サ・蜑阪↓菴懈舌@縺滓ュ」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝 - 繧剃スソ逕ィ縺吶k縺薙→縺ッ縺ァ縺阪↑縺縲 - - -# const char* onig_version(void) - - 繝舌シ繧ク繝ァ繝ウ譁蟄怜励r霑斐☆縲(萓 "5.0.3") - -// END diff --git a/vendor/onig/doc/FAQ b/vendor/onig/doc/FAQ deleted file mode 100644 index 444753a..0000000 --- a/vendor/onig/doc/FAQ +++ /dev/null @@ -1,23 +0,0 @@ -FAQ 2016/11/07 - -1. Longest match - - You can execute longest match by using ONIG_OPTION_FIND_LONGEST option - in onig_new(). - - -2. CR + LF - - DOS newline (CR (0x0c) + LF (0x0a) sequence) - - Enable the following line in regenc.h, and use ONIG_OPTION_NEWLINE_CRLF - option in onig_new(). - - /* #define USE_CRNL_AS_LINE_TERMINATOR */ - - -3. Mailing list - - There is no mailing list about Onigmo/Oniguruma. - -// END diff --git a/vendor/onig/doc/FAQ.ja b/vendor/onig/doc/FAQ.ja deleted file mode 100644 index 0749aca..0000000 --- a/vendor/onig/doc/FAQ.ja +++ /dev/null @@ -1,23 +0,0 @@ -FAQ 2016/11/07 - -1. 譛髟キ繝槭ャ繝 - - onig_new()縺ョ荳ュ縺ァ縲^NIG_OPTION_FIND_LONGEST繧ェ繝励す繝ァ繝ウ - 繧剃スソ逕ィ縺吶l縺ー譛髟キ繝槭ャ繝√↓縺ェ繧九 - - -2. CR + LF - - DOS縺ョ謾ケ陦(CR(0x0c) + LF(0x0a)縺ョ騾」邯) - - regenc.h縺ョ荳ュ縺ョ縲∽サ・荳九ョ驛ィ蛻繧呈怏蜉ケ縺ォ縺励{nig_new()縺ァ - ONIG_OPTION_NEWLINE_CRLF繧ェ繝励す繝ァ繝ウ繧剃スソ逕ィ縺吶k縲 - - /* #define USE_CRNL_AS_LINE_TERMINATOR */ - - -3. 繝。繝シ繝ェ繝ウ繧ー繝ェ繧ケ繝 - - 鬯シ髮イ/鬯シ霆翫↓髢「縺吶k繝。繝シ繝ェ繝ウ繧ー繝ェ繧ケ繝医ッ蟄伜惠縺励↑縺縲 - -//END diff --git a/vendor/onig/doc/RE b/vendor/onig/doc/RE deleted file mode 100644 index 17c84ba..0000000 --- a/vendor/onig/doc/RE +++ /dev/null @@ -1,569 +0,0 @@ -Onigmo (Oniguruma-mod) Regular Expressions Version 6.1.0 2016/12/25 - -syntax: ONIG_SYNTAX_RUBY (default) - - -1. Syntax elements - - \ escape (enable or disable meta character) - | alternation - (...) group - [...] character class - - -2. Characters - - \t horizontal tab (0x09) - \v vertical tab (0x0B) - \n newline (line feed) (0x0A) - \r carriage return (0x0D) - \b backspace (0x08) - \f form feed (0x0C) - \a bell (0x07) - \e escape (0x1B) - \nnn octal char (encoded byte value) - \xHH hexadecimal char (encoded byte value) - \x{7HHHHHHH} wide hexadecimal char (character code point value) - \uHHHH wide hexadecimal char (character code point value) - \cx control char (character code point value) - \C-x control char (character code point value) - \M-x meta (x|0x80) (character code point value) - \M-\C-x meta control char (character code point value) - - (* \b as backspace is effective in character class only) - - * ONIG_SYNTAX_PERL: \o{nnn} (octal char) can be also used. - - -3. Character types - - . any character (except newline) - - \w word character - - Not Unicode: - alphanumeric and "_". - - Unicode: - General_Category -- (Letter|Mark|Number|Connector_Punctuation) - - It depends on ONIG_OPTION_ASCII_RANGE option that non-ASCII char - includes or not. - - \W non-word char - - \s whitespace char - - Not Unicode: - \t, \n, \v, \f, \r, \x20 - - Unicode: - 0009, 000A, 000B, 000C, 000D, 0085(NEL), - General_Category -- Line_Separator - -- Paragraph_Separator - -- Space_Separator - - It depends on ONIG_OPTION_ASCII_RANGE option that non-ASCII char - includes or not. - - \S non-whitespace char - - \d decimal digit char - - Unicode: General_Category -- Decimal_Number - - It depends on ONIG_OPTION_ASCII_RANGE option that non-ASCII char - includes or not. - - \D non-decimal-digit char - - \h hexadecimal-digit char [0-9a-fA-F] - - \H non-hexadecimal-digit char - - - Character Property - - * \p{property-name} - * \p{^property-name} (negative) - * \P{property-name} (negative) - - property-name: - - + works on all encodings - Alnum, Alpha, Blank, Cntrl, Digit, Graph, Lower, - Print, Punct, Space, Upper, XDigit, Word, ASCII - - + works on EUC_JP, Shift_JIS, CP932 - Hiragana, Katakana, Han, Latin, Greek, Cyrillic - - + works on UTF-8, UTF-16, UTF-32 - see UnicodeProps.txt - - \p{Punct} works slightly different on Unicode encodings and the other - encodings. It matches the nine characters "$+<=>^`|~" on non-Unicode - encodings (which is the same as [[:punct:]]), but not on Unicode encodings. - \p{XPosixPunct} matches the nine characters on Unicode encodings. - - - \R Linebreak - - Unicode: - (?>\x0D\x0A|[\x0A-\x0D\x{85}\x{2028}\x{2029}]) - - Not Unicode: - (?>\x0D\x0A|[\x0A-\x0D]) - - \X Extended Grapheme cluster - - Unicode: - See: Unicode Standard Annex #29 UNICODE TEXT SEGMENTATION - http://unicode.org/reports/tr29/ - - Not Unicode: - (?>\x0D\x0A|(?m:.)) - - - -4. Quantifier - - greedy - - ? 1 or 0 times - * 0 or more times - + 1 or more times - {n,m} at least n but no more than m times - {n,} at least n times - {,n} at least 0 but no more than n times ({0,n}) - {n} n times - - reluctant - - ?? 1 or 0 times - *? 0 or more times - +? 1 or more times - {n,m}? at least n but not more than m times - {n,}? at least n times - {,n}? at least 0 but not more than n times (== {0,n}?) - - possessive (greedy and does not backtrack once match) - - ?+ 1 or 0 times - *+ 0 or more times - ++ 1 or more times - - ({n,m}+, {n,}+, {n}+ are possessive op. in ONIG_SYNTAX_JAVA and - ONIG_SYNTAX_PERL only) - - ex. /a*+/ === /(?>a*)/ - - -5. Anchors - - ^ beginning of the line - $ end of the line - \b word boundary - \B non-word boundary - \A beginning of string - \Z end of string, or before newline at the end - \z end of string - \G where the current search attempt begins - - -6. Character class - - ^... negative class (lowest precedence) - x-y range from x to y - [...] set (character class in character class) - ..&&.. intersection (low precedence, only higher than ^) - - ex. [a-w&&[^c-g]z] ==> ([a-w] AND ([^c-g] OR z)) ==> [abh-w] - - * If you want to use '[', '-', or ']' as a normal character - in character class, you should escape them with '\'. - - - POSIX bracket ([:xxxxx:], negate [:^xxxxx:]) - - Not Unicode Case: - - alnum alphabet or digit char - alpha alphabet - ascii code value: [0 - 127] - blank \t, \x20 - cntrl - digit 0-9 - graph \x21-\x7E and all of multibyte encoded characters - lower - print \x20-\x7E and all of multibyte encoded characters - punct - space \t, \n, \v, \f, \r, \x20 - upper - xdigit 0-9, a-f, A-F - word alphanumeric, "_" and multibyte characters - - - Unicode Case: - - alnum Letter | Mark | Decimal_Number - alpha Letter | Mark - ascii 0000 - 007F - blank Space_Separator | 0009 - cntrl Control | Format | Unassigned | Private_Use | Surrogate - digit Decimal_Number - graph [[:^space:]] && ^Control && ^Unassigned && ^Surrogate - lower Lowercase_Letter - print [[:graph:]] | Space_Separator - punct Connector_Punctuation | Dash_Punctuation | Close_Punctuation | - Final_Punctuation | Initial_Punctuation | Other_Punctuation | - Open_Punctuation | 0024 | 002B | 003C | 003D | 003E | 005E | - 0060 | 007C | 007E - space Space_Separator | Line_Separator | Paragraph_Separator | - 0009 | 000A | 000B | 000C | 000D | 0085 - upper Uppercase_Letter - xdigit 0030 - 0039 | 0041 - 0046 | 0061 - 0066 - (0-9, a-f, A-F) - word Letter | Mark | Decimal_Number | Connector_Punctuation - - - It depends on ONIG_OPTION_ASCII_RANGE option and - ONIG_OPTION_POSIX_BRACKET_ALL_RANGE option that POSIX brackets - match non-ASCII char or not. - - - -7. Extended groups - - (?#...) comment - - (?imxdau-imx) option on/off - i: ignore case - m: multi-line (dot (.) also matches newline) - x: extended form - - character set option (character range option) - d: Default (compatible with Ruby 1.9.3) - \w, \d and \s doesn't match non-ASCII characters. - \b, \B and POSIX brackets use the each encoding's - rules. - a: ASCII - ONIG_OPTION_ASCII_RANGE option is turned on. - \w, \d, \s and POSIX brackets doesn't match - non-ASCII characters. - \b and \B use the ASCII rules. - u: Unicode - ONIG_OPTION_ASCII_RANGE option is turned off. - \w (\W), \d (\D), \s (\S), \b (\B) and POSIX - brackets use the each encoding's rules. - - (?imxdau-imx:subexp) - option on/off for subexp - - (?:subexp) non-capturing group - (subexp) capturing group - - (?=subexp) look-ahead - (?!subexp) negative look-ahead - (?<=subexp) look-behind - (?subexp) atomic group - no backtracks in subexp. - - (?subexp), (?'name'subexp) - define named group - (Each character of the name must be a word character.) - - Not only a name but a number is assigned like a capturing - group. - - Assigning the same name to two or more subexps is allowed. - - (?(cond)yes-subexp), (?(cond)yes-subexp|no-subexp) - conditional expression - Matches yes-subexp if (cond) yields a true value, matches - no-subexp otherwise. - Following (cond) can be used: - - (n) (n >= 1) - Checks if the numbered capturing group has matched - something. - - (), ('name') - Checks if a group with the given name has matched - something. - - BUG: If the name is defined more than once, the - left-most group is checked, but it should be the - same as \k. - - (?~subexp) absence operator (experimental) - Matches any string which doesn't contain any string which - matches subexp. - More precisely, (?~subexp) matches the complement set of - a set which .*subexp.* matches. This is regular in the - meaning of formal language theory. - Similar to (?:(?!subexp).)*, but easy to write. - - E.g.: - (?~abc) matches: "", "ab", "aab", "ccdd", etc. - It doesn't match: "abc", "aabc", "ccabcdd", etc. - - \/\*(?~\*\/)\*\/ matches C style comments: - "/**/", "/* foobar */", etc. - - \A\/\*(?~\*\/)\*\/\z doesn't match "/**/ */". - This is different from \A\/\*.*?\*\/\z which uses a - reluctant quantifier (.*?). - - Unlike (?:(?!abc).)*c, (?~abc)c matches "abc", because - (?~abc) matches "ab". - - (?~) never matches. - - Theoretical backgrounds are discussed in Tanaka Akira's - paper and slide (both Japanese): - - * Absent Operator for Regular Expression - https://staff.aist.go.jp/tanaka-akira/pub/prosym49-akr-paper.pdf - * 豁」隕剰。ィ迴セ縺ォ縺翫¢繧矩撼蛹蜷ォ繧ェ繝壹Ξ繝シ繧ソ縺ョ謠先。 - https://staff.aist.go.jp/tanaka-akira/pub/prosym49-akr-presen.pdf - - -8. Backreferences - - When we say "backreference a group," it actually means, "re-match the same - text matched by the subexp in that group." - - \n \k \k'n' (n >= 1) backreference the nth group in the regexp - \k<-n> \k'-n' (n >= 1) backreference the nth group counting - backwards from the referring position - \k \k'name' backreference a group with the specified name - - When backreferencing with a name that is assigned to more than one groups, - the last group with the name is checked first, if not matched then the - previous one with the name, and so on, until there is a match. - - * Backreference by number is forbidden if any named group is defined and - ONIG_OPTION_CAPTURE_GROUP is not set. - - * ONIG_SYNTAX_PERL: \g{n}, \g{-n} and \g{name} can also be used. - If a name is defined more than once in Perl syntax, only the left-most - group is checked. - - - backreference with recursion level - - (n >= 1, level >= 0) - - \k \k'n+level' - \k \k'n-level' - \k<-n+level> \k'-n+level' - \k<-n-level> \k'-n-level' - - \k \k'name+level' - \k \k'name-level' - - Destine a group on the recursion level relative to the referring position. - - ex 1. - - /\A(?|.|(?:(?.)\g\k))\z/.match("reee") - /\A(?|.|(?:(?.)\g\k))\z/.match("reer") - - \k refers to the (?.) on the same recursion level with it. - - ex 2. - - r = Regexp.compile(<<'__REGEXP__'.strip, Regexp::EXTENDED) - (? \g \g* \g ){0} - (? < \g \s* > ){0} - (? [a-zA-Z_:]+ ){0} - (? [^<&]+ (\g | [^<&]+)* ){0} - (? >){0} - \g - __REGEXP__ - - p r.match("fbbbf").captures - - -9. Subexp calls ("Tanaka Akira special") - - When we say "call a group," it actually means, "re-execute the subexp in - that group." - - \g<0> \g'0' call the whole pattern recursively - \g \g'n' (n >= 1) call the nth group - \g<-n> \g'-n' (n >= 1) call the nth group counting backwards from - the calling position - \g<+n> \g'+n' (n >= 1) call the nth group counting forwards from - the calling position - \g \g'name' call the group with the specified name - - * Left-most recursive calls are not allowed. - - ex. (?a|\gb) => error - (?a|b\gc) => OK - - * Calls with a name that is assigned to more than one groups are not - allowed in ONIG_SYNTAX_RUBY. - - * Call by number is forbidden if any named group is defined and - ONIG_OPTION_CAPTURE_GROUP is not set. - - * The option status of the called group is always effective. - - ex. /(?-i:\g)(?i:(?a)){0}/.match("A") - - * ONIG_SYNTAX_PERL: - Use (?&name), (?n), (?-n), (?+n), (?R) or (?0) instead of \g<>. - Calls with a name that is assigned to more than one groups are allowed, - and the left-most subexp is used. - - -10. Captured group - - Behavior of an unnamed group (...) changes with the following conditions. - (But named group is not changed.) - - case 1. /.../ (named group is not used, no option) - - (...) is treated as a capturing group. - - case 2. /.../g (named group is not used, 'g' option) - - (...) is treated as a non-capturing group (?:...). - - case 3. /..(?..)../ (named group is used, no option) - - (...) is treated as a non-capturing group. - numbered-backref/call is not allowed. - - case 4. /..(?..)../G (named group is used, 'G' option) - - (...) is treated as a capturing group. - numbered-backref/call is allowed. - - where - g: ONIG_OPTION_DONT_CAPTURE_GROUP - G: ONIG_OPTION_CAPTURE_GROUP - - ('g' and 'G' options are argued in ruby-dev ML) - - - ------------------------------ -A-1. Syntax-dependent options - - + ONIG_SYNTAX_RUBY - (?m): dot (.) also matches newline - - + ONIG_SYNTAX_PERL, ONIG_SYNTAX_JAVA and ONIG_SYNTAX_PYTHON - (?s): dot (.) also matches newline - (?m): ^ matches after newline, $ matches before newline - - + ONIG_SYNTAX_PERL - (?d), (?l): same as (?u) - - -A-2. Original extensions - - + hexadecimal digit char type \h, \H - + named group (?...), (?'name'...) - + named backref \k - + subexp call \g, \g - - -A-3. Missing features compared with perl 5.18.0 - - + \N{name}, \N{U+xxxx}, \N - + \l,\u,\L,\U, \C - + \v, \V, \h, \H - + (?{code}) - + (??{code}) - + (?|...) - + (?[]) - + (*VERB:ARG) - - * \Q...\E - This is effective on ONIG_SYNTAX_PERL and ONIG_SYNTAX_JAVA. - - -A-4. Differences with Japanized GNU regex(version 0.12) of Ruby 1.8 - - + add character property (\p{property}, \P{property}) - + add hexadecimal digit char type (\h, \H) - + add look-behind - (?<=fixed-width-pattern), (?>]/ in EUC-JP encoding. - + effect range of isolated option is to next ')'. - ex. (?:(?i)a|b) is interpreted as (?:(?i:a|b)), not (?:(?i:a)|b). - + isolated option is not transparent to previous pattern. - ex. a(?i)* is a syntax error pattern. - + allowed unpaired left brace as a normal character. - ex. /{/, /({)/, /a{2,3/ etc... - + negative POSIX bracket [:^xxxx:] is supported. - + POSIX bracket [:ascii:] is added. - + repeat of look-ahead is not allowed. - ex. /(?=a)*/, /(?!b){5}/ - + Ignore case option is effective to escape sequence. - ex. /\x61/i =~ "A" - + In the range quantifier, the number of the minimum is optional. - /a{,n}/ == /a{0,n}/ - The omission of both minimum and maximum values is not allowed. - /a{,}/ - + /{n}?/ is not a reluctant quantifier. - /a{n}?/ == /(?:a{n})?/ - + invalid back reference is checked and raises error. - /\1/, /(a)\2/ - + Zero-width match in an infinite loop stops the repeat, - then changes of the capture group status are checked as stop condition. - /(?:()|())*\1\2/ =~ "" - /(?:\1a|())*/ =~ "a" - - -A-5. Features disabled in default syntax - - + capture history - - (?@...) and (?@...) - - ex. /(?@a)*/.match("aaa") ==> [<0-1>, <1-2>, <2-3>] - - see sample/listcap.c file. - - -A-6. Problems - - + Invalid encoding byte sequence is not checked. - - ex. UTF-8 - - * Invalid first byte is treated as a character. - /./u =~ "\xa3" - - * Incomplete byte sequence is not checked. - /\w+/ =~ "a\xf3\x8ec" - -// END diff --git a/vendor/onig/doc/RE.ja b/vendor/onig/doc/RE.ja deleted file mode 100644 index c4e2568..0000000 --- a/vendor/onig/doc/RE.ja +++ /dev/null @@ -1,565 +0,0 @@ -鬯シ髮イ (鬯シ霆頑隼) 豁」隕剰。ィ迴セ Version 6.1.0 2016/12/25 - -菴ソ逕ィ譁豕: ONIG_SYNTAX_RUBY (譌「螳壼、) - - -1. 蝓コ譛ャ隕∫エ - - \ 騾驕ソ菫ョ鬟セ (繧ィ繧ケ繧ア繝シ繝) 豁」隕剰。ィ迴セ險伜捷縺ョ譛牙柑/辟。蜉ケ縺ョ蛻カ蠕。 - | 驕ク謚槫ュ - (...) 蠑城寔蜷 (繧ー繝ォ繝シ繝) - [...] 譁蟄鈴寔蜷 (譁蟄励け繝ゥ繧ケ) - - -2. 譁蟄 - - \t 豌エ蟷ウ繧ソ繝 (0x09) - \v 蝙ら峩繧ソ繝 (0x0B) - \n 謾ケ陦 (0x0A) - \r 蠕ゥ蟶ー (0x0D) - \b 蠕碁遨コ逋ス (0x08) - \f 謾ケ鬆 (0x0C) - \a 髏 (0x07) - \e 騾驕ソ菫ョ鬟セ (0x1B) - \nnn 蜈ォ騾イ謨ー陦ィ迴セ 隨ヲ蜿キ蛹悶ヰ繧、繝亥、(縺ョ荳驛ィ) - \xHH 蜊∝ュ騾イ謨ー陦ィ迴セ 隨ヲ蜿キ蛹悶ヰ繧、繝亥、(縺ョ荳驛ィ) - \x{7HHHHHHH} 諡。蠑オ蜊∝ュ騾イ謨ー陦ィ迴セ 繧ウ繝シ繝峨昴う繝ウ繝亥、 - \uHHHH 諡。蠑オ蜊∝ュ騾イ謨ー陦ィ迴セ 繧ウ繝シ繝峨昴う繝ウ繝亥、 - \cx 蛻カ蠕。譁蟄苓。ィ迴セ 繧ウ繝シ繝峨昴う繝ウ繝亥、 - \C-x 蛻カ蠕。譁蟄苓。ィ迴セ 繧ウ繝シ繝峨昴う繝ウ繝亥、 - \M-x 雜 (x|0x80) 繧ウ繝シ繝峨昴う繝ウ繝亥、 - \M-\C-x 雜 + 蛻カ蠕。譁蟄苓。ィ迴セ 繧ウ繝シ繝峨昴う繝ウ繝亥、 - - 窶サ \b縺ッ縲∵枚蟄鈴寔蜷亥縺ァ縺ョ縺ソ譛牙柑 - - 窶サ ONIG_SYNTAX_PERL縺ァ縺ッ \o{nnn} (蜈ォ騾イ謨ー陦ィ迴セ)繧ゆスソ逕ィ縺ァ縺阪k縲 - - -3. 譁蟄礼ィョ - - . 莉サ諢乗枚蟄 (謾ケ陦後r髯、縺) - - \w 蜊倩ェ樊ァ区先枚蟄 - - Unicode莉・螟悶ョ蝣エ蜷: - 闍ア謨ー蟄 縺翫h縺ウ "_"縲 - - Unicode縺ョ蝣エ蜷: - General_Category -- (Letter|Mark|Number|Connector_Punctuation) - - ASCII螟悶ョ譁蟄励r蜷ォ繧縺九←縺縺九ッ ONIG_OPTION_ASCII_RANGE 繧ェ繝励す繝ァ繝ウ縺ォ - 萓晏ュ倥☆繧九 - - \W 髱槫腰隱樊ァ区先枚蟄 - - \s 遨コ逋ス譁蟄 - - Unicode莉・螟悶ョ蝣エ蜷: - \t, \n, \v, \f, \r, \x20 - - Unicode縺ョ蝣エ蜷: - 0009, 000A, 000B, 000C, 000D, 0085(NEL), - General_Category -- Line_Separator - -- Paragraph_Separator - -- Space_Separator - - ASCII螟悶ョ譁蟄励r蜷ォ繧縺九←縺縺九ッ ONIG_OPTION_ASCII_RANGE 繧ェ繝励す繝ァ繝ウ縺ォ - 萓晏ュ倥☆繧九 - - \S 髱樒ゥコ逋ス譁蟄 - - \d 10騾イ謨ー蟄 - - Unicode縺ョ蝣エ蜷: General_Category -- Decimal_Number - - ASCII螟悶ョ譁蟄励r蜷ォ繧縺九←縺縺九ッ ONIG_OPTION_ASCII_RANGE 繧ェ繝励す繝ァ繝ウ縺ォ - 萓晏ュ倥☆繧九 - - \D 髱10騾イ謨ー蟄 - - \h 16騾イ謨ー蟄 [0-9a-fA-F] - - \H 髱16騾イ謨ー蟄 - - - Character Property - - * \p{property-name} - * \p{^property-name} (negative) - * \P{property-name} (negative) - - property-name: - - + 蜈ィ縺ヲ縺ョ繧ィ繝ウ繧ウ繝シ繝繧」繝ウ繧ー縺ァ譛牙柑 - Alnum, Alpha, Blank, Cntrl, Digit, Graph, Lower, - Print, Punct, Space, Upper, XDigit, Word, ASCII, - - + EUC-JP, Shift_JIS, CP932縺ァ譛牙柑 - Hiragana, Katakana, Han, Latin, Greek, Cyrillic - - + UTF-8, UTF-16, UTF-32縺ァ譛牙柑 - UnicodeProps.txt 蜿らァ - - \p{Punct} 縺ッ縲ゞnicode縺ョ蝣エ蜷医→縺昴l莉・螟悶〒蟆代@逡ー縺ェ縺」縺溷虚菴懊r縺吶k縲6nicode - 莉・螟悶ョ蝣エ蜷医ッ縲"$+<=>^`|~" 縺ョ9蛟九ョ譁蟄励↓繝槭ャ繝√☆繧九′(縺薙l縺ッ [[:punct:]] 縺ィ - 蜷後§縺ァ縺ゅk)縲ゞnicode縺ョ蝣エ蜷医ッ繝槭ャ繝√@縺ェ縺縲 - Unicode縺ョ蝣エ蜷医―p{XPosixPunct} 縺ッ縺薙ョ9蛟九ョ譁蟄励↓繝槭ャ繝√☆繧九 - - - \R 謾ケ陦梧枚蟄 (Linebreak) - - Unicode縺ョ蝣エ蜷: - (?>\x0D\x0A|[\x0A-\x0D\x{85}\x{2028}\x{2029}]) - - Unicode莉・螟悶ョ蝣エ蜷: - (?>\x0D\x0A|[\x0A-\x0D]) - - \X 諡。蠑オ譖ク險倡エ繧ッ繝ゥ繧ケ繧ソ (Extended Grapheme cluster) - - Unicode縺ョ蝣エ蜷: - 蜿らァ: Unicode Standard Annex #29 UNICODE TEXT SEGMENTATION - http://unicode.org/reports/tr29/ - - Unicode莉・螟悶ョ蝣エ蜷: - (?>\x0D\x0A|(?m:.)) - - - -4. 驥乗欠螳壼ュ - - 谺イ蠑オ繧 - - ? 荳蝗槭∪縺溘ッ髮カ蝗 - * 髮カ蝗樔サ・荳 - + 荳蝗樔サ・荳 - {n,m} n蝗樔サ・荳確蝗樔サ・荳 - {n,} n蝗樔サ・荳 - {,n} 髮カ蝗樔サ・荳穫蝗樔サ・荳 ({0,n}) - {n} n蝗 - - 辟。谺イ - - ?? 荳蝗槭∪縺溘ッ髮カ蝗 - *? 髮カ蝗樔サ・荳 - +? 荳蝗樔サ・荳 - {n,m}? n蝗樔サ・荳確蝗樔サ・荳 - {n,}? n蝗樔サ・荳 - {,n}? 髮カ蝗樔サ・荳穫蝗樔サ・荳 (== {0,n}?) - - 蠑キ谺イ (谺イ蠑オ繧翫〒縲∫ケー繧願ソ斐@縺ォ謌仙粥縺励◆蠕後ッ蝗樊焚繧呈ク帙i縺吶h縺縺ェ蠕碁蜀崎ゥヲ陦後r縺励↑縺) - - ?+ 荳蝗槭∪縺溘ッ髮カ蝗 - *+ 髮カ蝗樔サ・荳 - ++ 荳蝗樔サ・荳 - - ({n,m}+, {n,}+, {n}+ 縺ッ縲^NIG_SYNTAX_JAVA縺ィONIG_SYNTAX_PERL縺ァ縺ョ縺ソ蠑キ谺イ縺ェ - 謖螳壼ュ) - - 萓. /a*+/ === /(?>a*)/ - - -5. 骭ィ - - ^ 陦碁ュ - $ 陦梧忰 - \b 蜊倩ェ槫「逡 - \B 髱槫腰隱槫「逡 - \A 譁蟄怜怜磯ュ - \Z 譁蟄怜玲忰蟆セ縲√∪縺溘ッ譁蟄怜玲忰蟆セ縺ョ謾ケ陦後ョ逶エ蜑 - \z 譁蟄怜玲忰蟆セ - \G 辣ァ蜷磯幕蟋倶ス咲スョ - - -6. 譁蟄鈴寔蜷 - - ^... 蜷ヲ螳 (譛菴主━蜈亥コヲ貍皮ョ怜ュ) - x-y 遽蝗イ (x縺九iy縺セ縺ァ) - [...] 髮蜷 (譁蟄鈴寔蜷亥譁蟄鈴寔蜷) - ..&&.. 遨肴シ皮ョ (^縺ョ谺。縺ォ蜆ェ蜈亥コヲ縺御ス弱>貍皮ョ怜ュ) - - 萓. [a-w&&[^c-g]z] ==> ([a-w] and ([^c-g] or z)) ==> [abh-w] - - 窶サ '[', '-', ']'繧偵∵枚蟄鈴寔蜷亥縺ァ騾壼クク譁蟄励ョ諢丞袖縺ァ菴ソ逕ィ縺励◆縺蝣エ蜷医↓縺ッ縲 - 縺薙l繧峨ョ譁蟄励r'\'縺ァ騾驕ソ菫ョ鬟セ縺励↑縺代l縺ー縺ェ繧峨↑縺縲 - - - POSIX繝悶Λ繧ア繝繝 ([:xxxxx:], 蜷ヲ螳 [:^xxxxx:]) - - Unicode莉・螟悶ョ蝣エ蜷: - - alnum 闍ア謨ー蟄 - alpha 闍ア蟄 - ascii 0 - 127 - blank \t, \x20 - cntrl - digit 0-9 - graph \x21-\x7E 縺翫h縺ウ 螟壹ヰ繧、繝域枚蟄怜ィ驛ィ繧貞性繧 - lower - print \x20-\x7E 縺翫h縺ウ 螟壹ヰ繧、繝域枚蟄怜ィ驛ィ繧貞性繧 - punct - space \t, \n, \v, \f, \r, \x20 - upper - xdigit 0-9, a-f, A-F - word 闍ア謨ー蟄, "_" 縺翫h縺ウ 螟壹ヰ繧、繝域枚蟄 - - Unicode縺ョ蝣エ蜷: - - alnum Letter | Mark | Decimal_Number - alpha Letter | Mark - ascii 0000 - 007F - blank Space_Separator | 0009 - cntrl Control | Format | Unassigned | Private_Use | Surrogate - digit Decimal_Number - graph [[:^space:]] && ^Control && ^Unassigned && ^Surrogate - lower Lowercase_Letter - print [[:graph:]] | Space_Separator - punct Connector_Punctuation | Dash_Punctuation | Close_Punctuation | - Final_Punctuation | Initial_Punctuation | Other_Punctuation | - Open_Punctuation | 0024 | 002B | 003C | 003D | 003E | 005E | - 0060 | 007C | 007E - space Space_Separator | Line_Separator | Paragraph_Separator | - 0009 | 000A | 000B | 000C | 000D | 0085 - upper Uppercase_Letter - xdigit 0030 - 0039 | 0041 - 0046 | 0061 - 0066 - (0-9, a-f, A-F) - word Letter | Mark | Decimal_Number | Connector_Punctuation - - - POSIX繝悶Λ繧ア繝繝医′ASCII螟悶ョ譁蟄励↓繝槭ャ繝√☆繧九°縺ゥ縺縺九ッ - ONIG_OPTION_ASCII_RANGE繧ェ繝励す繝ァ繝ウ縺ィONIG_OPTION_POSIX_BRACKET_ALL_RANGE - 繧ェ繝励す繝ァ繝ウ縺ォ萓晏ュ倥☆繧九 - - - -7. 諡。蠑オ蠑城寔蜷 - - (?#...) 豕ィ驥 - (?imxdau-imx) 蟄、遶九が繝励す繝ァ繝ウ - i: 螟ァ譁蟄怜ー乗枚蟄礼ァ蜷 - m: 隍謨ー陦 - x: 諡。蠑オ蠖「蠑 - - 譁蟄鈴寔蜷医が繝励す繝ァ繝ウ (譁蟄礼ッ蝗イ繧ェ繝励す繝ァ繝ウ) - d: 繝繝輔か繝ォ繝 (Ruby 1.9.3 莠呈鋤) - \w, \d, \s 縺ッ縲髱暸SCII譁蟄励↓繝槭ャ繝√@縺ェ縺縲 - \b, \B, POSIX繝悶Λ繧ア繝繝医ッ縲∝推繧ィ繝ウ繧ウ繝シ繝繧」繝ウ繧ー縺ョ - 繝ォ繝シ繝ォ縺ォ蠕薙≧縲 - a: ASCII - ONIG_OPTION_ASCII_RANGE繧ェ繝励す繝ァ繝ウ縺後が繝ウ縺ォ縺ェ繧九 - \w, \d, \s, POSIX繝悶Λ繧ア繝繝医ッ縲髱暸SCII譁蟄励↓ - 繝槭ャ繝√@縺ェ縺縲 - \b, \B 縺ッ縲、SCII縺ョ繝ォ繝シ繝ォ縺ォ蠕薙≧縲 - u: Unicode - ONIG_OPTION_ASCII_RANGE繧ェ繝励す繝ァ繝ウ縺後が繝輔↓縺ェ繧九 - \w (\W), \d (\D), \s (\S), \b (\B), POSIX繝悶Λ繧ア繝繝 - 縺ッ縲∝推繧ィ繝ウ繧ウ繝シ繝繧」繝ウ繧ー縺ョ繝ォ繝シ繝ォ縺ォ蠕薙≧縲 - - (?imxdau-imx:蠑) 蠑上が繝励す繝ァ繝ウ - - (蠑) 謐慕佐蠑城寔蜷 - (?:蠑) 髱樊黒迯イ蠑城寔蜷 - - (?=蠑) 蜈郁ェュ縺ソ - (?!蠑) 蜷ヲ螳壼郁ェュ縺ソ - (?<=蠑) 謌サ繧願ェュ縺ソ - (?蠑) 蜴溷ュ千噪蠑城寔蜷 - 蠑丞ィ菴薙r騾夐℃縺励◆縺ィ縺阪∝シ上ョ荳ュ縺ァ縺ョ蠕碁蜀崎ゥヲ陦後r陦後↑繧上↑縺 - - (?蠑), (?'name'蠑) - 蜷榊燕莉倥″謐慕佐蠑城寔蜷 - 蠑城寔蜷医↓蜷榊燕繧貞牡繧雁ス薙※繧(螳夂セゥ縺吶k)縲 - (蜷榊燕縺ッ蜊倩ェ樊ァ区先枚蟄励〒縺ェ縺代l縺ー縺ェ繧峨↑縺縲) - - 蜷榊燕縺縺代〒縺ェ縺上∵黒迯イ蠑城寔蜷医→蜷梧ァ倥↓逡ェ蜿キ繧ょ牡繧雁ス薙※繧峨l繧九 - 逡ェ蜿キ謖螳壹′遖∵ュ「縺輔l縺ヲ縺縺ェ縺迥カ諷 (10. 謐慕佐蠑城寔蜷 繧貞盾辣ァ) - 縺ョ縺ィ縺阪ッ縲∝錐蜑阪r菴ソ繧上↑縺縺ァ逡ェ蜿キ縺ァ繧ょ盾辣ァ縺ァ縺阪k縲 - - 隍謨ー縺ョ蠑城寔蜷医↓蜷後§蜷榊燕繧剃ク弱∴繧九%縺ィ縺ッ險ア縺輔l縺ヲ縺繧九 - - (?(譚。莉カ)逵溘ョ蠑), (?(譚。莉カ)逵溘ョ蠑楯蛛ス縺ョ蠑) - 譚。莉カ蠑 - (譚。莉カ)縺檎悄縺ァ縺ゅl縺ー逵溘ョ蠑上′繝槭ャ繝√@縲∝⊃縺ァ縺ゅl縺ー蛛ス縺ョ蠑上′ - 繝槭ャ繝√☆繧九 - (譚。莉カ)縺ォ縺ッ莉・荳九ョ繧ゅョ縺御スソ逕ィ縺ァ縺阪k縲 - - (n) (n >= 1) - 逡ェ蜿キ謖螳壹ョ蠕梧婿蜿らァ縺御ス輔°縺ォ繝槭ャ繝√@縺ヲ縺繧後ー逵溘 - 繝槭ャ繝√@縺ヲ縺縺ェ縺代l縺ー蛛ス - - (), ('name') - 蜷榊燕謖螳壹ョ蠕梧婿蜿らァ縺御ス輔°縺ォ繝槭ャ繝√@縺ヲ縺繧後ー逵溘 - 繝槭ャ繝√@縺ヲ縺縺ェ縺代l縺ー蛛ス - - 繝舌げ: 謖螳壹&繧後※縺縺溷錐蜑阪′螟夐榊ョ夂セゥ縺輔l縺ヲ縺縺溷エ蜷医 - 譛繧ょキヲ縺ョ繧ー繝ォ繝シ繝励r蜿らァ縺吶k縺後√%繧後ッ譛ャ譚・ \k - 縺ィ蜷後§蜍穂ス懊↓縺ェ繧九∋縺阪〒縺ゅk縲 - - (?~蠑) 髱槫桁蜷ォ繧ェ繝壹Ξ繝シ繧ソ (螳滄ィ鍋噪) - 蠑上↓繝槭ャ繝√☆繧区枚蟄怜励r蜷ォ縺セ縺ェ縺莉サ諢上ョ譁蟄怜励↓繝槭ャ繝√☆繧九 - 繧医j豁」遒コ縺ォ縺ッ縲(?~蠑) 縺ッ縲.*蠑.* 縺後槭ャ繝√☆繧矩寔蜷医ョ陬憺寔蜷医↓ - 繝槭ャ繝√☆繧九ゅ%繧後ッ蠖「蠑剰ィ隱樒炊隲悶ョ諢丞袖縺ァ豁」隕上〒縺ゅk縲 - (?:(?!蠑).)* 縺ィ莨シ縺ヲ縺繧九′邁。蜊倥↓譖ク縺代k縲 - - 萓: - (?~abc) 縺ッ莉・荳九↓繝槭ャ繝√☆繧: "", "ab", "aab", "ccdd" 遲 - 莉・荳九↓縺ッ繝槭ャ繝√@縺ェ縺: "abc", "aabc", "ccabcdd" 遲 - - \/\*(?~\*\/)\*\/ 縺ッ C 繧ケ繧ソ繧、繝ォ縺ョ繧ウ繝。繝ウ繝医↓繝槭ャ繝√☆繧: - "/**/", "/* foobar */" 遲 - - \A\/\*(?~\*\/)\*\/\z 縺ッ "/**/ */" 縺ォ縺ッ繝槭ャ繝√@縺ェ縺縲 - 縺薙l縺ッ縲∫┌谺イ縺ェ驥乗欠螳壼ュ(.*?)繧剃スソ縺」縺 \A\/\*.*?\*\/\z 縺ィ縺ッ - 逡ー縺ェ繧九 - - (?:(?!abc).)*c 縺ィ縺ッ驕輔>縲(?~abc)c 縺ッ "abc" 縺ォ繝槭ャ繝√☆繧九 - 縺ェ縺懊↑繧 (?~abc) 縺ッ "ab" 縺ォ繝槭ャ繝√☆繧九°繧峨〒縺ゅk縲 - - (?~) 縺ッ菴輔↓繧ゅ槭ャ繝√@縺ェ縺縲 - - 逅隲也噪閭梧勹縺ッ逕ー荳ュ蜩イ豌上ョ隲匁枚縺ィ繧ケ繝ゥ繧、繝峨〒隴ー隲悶&繧後※縺繧 - (縺ゥ縺。繧峨b譌・譛ャ隱): - - * Absent Operator for Regular Expression - https://staff.aist.go.jp/tanaka-akira/pub/prosym49-akr-paper.pdf - * 豁」隕剰。ィ迴セ縺ォ縺翫¢繧矩撼蛹蜷ォ繧ェ繝壹Ξ繝シ繧ソ縺ョ謠先。 - https://staff.aist.go.jp/tanaka-akira/pub/prosym49-akr-presen.pdf - - -8. 蠕梧婿蜿らァ - - \n \k \k'n' (n >= 1) 逡ェ蜿キ謖螳壼盾辣ァ - \k<-n> \k'-n' (n >= 1) 逶ク蟇セ逡ェ蜿キ謖螳壼盾辣ァ - \k \k'name' 蜷榊燕謖螳壼盾辣ァ - - 蜷榊燕謖螳壼盾辣ァ縺ァ縲√◎縺ョ蜷榊燕縺瑚、謨ー縺ョ蠑城寔蜷医〒螟夐榊ョ夂セゥ縺輔l縺ヲ縺繧句エ蜷医↓縺ッ縲 - 逡ェ蜿キ縺ョ螟ァ縺阪>蠑城寔蜷医°繧牙━蜈育噪縺ォ蜿らァ縺輔l繧九 - (繝槭ャ繝√@縺ェ縺縺ィ縺阪↓縺ッ逡ェ蜿キ縺ョ蟆上&縺蠑城寔蜷医′蜿らァ縺輔l繧) - - 窶サ 逡ェ蜿キ謖螳壼盾辣ァ縺ッ縲∝錐蜑堺サ倥″謐慕佐蠑城寔蜷医′螳夂セゥ縺輔l縲 - 縺九▽ ONIG_OPTION_CAPTURE_GROUP縺梧欠螳壹&繧後※縺縺ェ縺蝣エ蜷医↓縺ッ縲 - 遖∵ュ「縺輔l繧九(10. 謐慕佐蠑城寔蜷 繧貞盾辣ァ) - - 窶サ ONIG_SYNTAX_PERL縺ァ縺ッ縲―g{n}, \g{-n}, \g{name} 繧ゆスソ逕ィ蜿ッ閭ス縲 - Perl譁豕輔〒蜷榊燕縺悟、夐榊ョ夂セゥ縺輔l縺ヲ縺縺溷エ蜷医∵怙繧ょキヲ縺ョ繧ー繝ォ繝シ繝励ョ縺ソ縺 - 蜿らァ縺輔l繧九 - - - 蜀榊クー繝ャ繝吶Ν莉倥″蠕梧婿蜿らァ - - (n >= 1, level >= 0) - - \k \k'n+level' - \k \k'n-level' - \k<-n+level> \k'-n+level' - \k<-n-level> \k'-n-level' - - \k \k'name+level' - \k \k'name-level' - - 蠕梧婿蜿らァ縺ョ菴咲スョ縺九i逶ク蟇セ逧縺ェ驛ィ蛻蠑丞他蜃コ縺怜榊クー繝ャ繝吶Ν繧呈欠螳壹@縺ヲ縲√◎縺ョ繝ャ繝吶Ν縺ァ縺ョ - 謐慕佐蛟、繧貞盾辣ァ縺吶k縲 - - 萓-1. - - /\A(?|.|(?:(?.)\g\k))\z/.match("reer") - - 萓-2. - - r = Regexp.compile(<<'__REGEXP__'.strip, Regexp::EXTENDED) - (? \g \g* \g ){0} - (? < \g \s* > ){0} - (? [a-zA-Z_:]+ ){0} - (? [^<&]+ (\g | [^<&]+)* ){0} - (? >){0} - \g - __REGEXP__ - - p r.match('fbbbf').captures - - - -9. 驛ィ蛻蠑丞他蜃コ縺 ("逕ー荳ュ蜩イ繧ケ繝壹す繝」繝ォ") - - \g<0> \g'0' 繝代ち繝シ繝ウ蜈ィ菴薙ョ蜀榊クー蜻シ縺ウ蜃コ縺 - \g \g'n' (n >= 1) 逡ェ蜿キ謖螳壼他蜃コ縺 - \g<-n> \g'-n' (n >= 1) 蠕梧婿縺ク縺ョ逶ク蟇セ逡ェ蜿キ謖螳壼他蜃コ縺 - \g<+n> \g'+n' (n >= 1) 蜑肴婿縺ク縺ョ逶ク蟇セ逡ェ蜿キ謖螳壼他蜃コ縺 - \g \g'name' 蜷榊燕謖螳壼他蜃コ縺 - - 窶サ ONIG_SYNTAX_RUBY縺ァ縺ッ螟夐榊ョ夂セゥ縺輔l縺溷錐蜑阪↓繧医k驛ィ蛻蠑丞他縺ウ蜃コ縺励ッ縺ァ縺阪↑縺縲 - - 窶サ 譛蟾ヲ菴咲スョ縺ァ縺ョ蜀榊クー蜻シ蜃コ縺励ッ遖∵ュ「縺輔l繧九 - 萓. (?a|\gb) => error - (?a|b\gc) => OK - - 窶サ 逡ェ蜿キ謖螳壼他蜃コ縺励ッ縲∝錐蜑堺サ倥″謐慕佐蠑城寔蜷医′螳夂セゥ縺輔l縲 - 縺九▽ ONIG_OPTION_CAPTURE_GROUP縺梧欠螳壹&繧後※縺縺ェ縺蝣エ蜷医↓縺ッ縲 - 遖∵ュ「縺輔l繧九 (10. 謐慕佐蠑城寔蜷 繧貞盾辣ァ) - - 窶サ 蜻シ縺ウ蜃コ縺輔l縺溷シ城寔蜷医ョ繧ェ繝励す繝ァ繝ウ迥カ諷九′蜻シ蜃コ縺怜エ縺ョ繧ェ繝励す繝ァ繝ウ迥カ諷九→逡ー縺ェ縺」縺ヲ縺繧 - 縺ィ縺阪∝他縺ウ蜃コ縺輔l縺溷エ縺ョ繧ェ繝励す繝ァ繝ウ迥カ諷九′譛牙柑縺ァ縺ゅk縲 - - 萓. (?-i:\g)(?i:(?a)){0} 縺ッ "A" 縺ォ辣ァ蜷域仙粥縺吶k縲 - - 窶サ ONIG_SYNTAX_PERL縺ァ縺ッ \g<> 縺ョ莉」繧上j縺ォ (?&name), (?n), (?-n), (?+n), (?R), - (?0) 繧剃スソ逕ィ縺吶k縲 - 螟夐榊ョ夂セゥ縺輔l縺溷錐蜑阪↓繧医k驛ィ蛻蠑丞他縺ウ蜃コ縺励ッ蜿ッ閭ス縺ァ縺ゅk縲ゅ◎縺ョ髫帙∵怙繧ょキヲ縺ョ - 驛ィ蛻蠑上′蛻ゥ逕ィ縺輔l繧九 - - -10. 謐慕佐蠑城寔蜷 - - 謐慕佐蠑城寔蜷(...)縺ッ縲∽サ・荳九ョ譚。莉カ縺ォ蠢懊§縺ヲ謖ッ闊槭′螟牙喧縺吶k縲 - (蜷榊燕莉倥″謐慕佐蠑城寔蜷医ッ螟牙喧縺励↑縺) - - case 1. /.../ (蜷榊燕莉倥″謐慕佐蠑城寔蜷医ッ荳堺スソ逕ィ縲√が繝励す繝ァ繝ウ縺ェ縺) - - (...) 縺ッ縲∵黒迯イ蠑城寔蜷医→縺励※謇ア繧上l繧九 - - case 2. /.../g (蜷榊燕莉倥″謐慕佐蠑城寔蜷医ッ荳堺スソ逕ィ縲√が繝励す繝ァ繝ウ 'g'繧呈欠螳) - - (...) 縺ッ縲髱樊黒迯イ蠑城寔蜷医→縺励※謇ア繧上l繧九 - - case 3. /..(?..)../ (蜷榊燕莉倥″謐慕佐蠑城寔蜷医ッ菴ソ逕ィ縲√が繝励す繝ァ繝ウ縺ェ縺) - - (...) 縺ッ縲髱樊黒迯イ蠑城寔蜷医→縺励※謇ア繧上l繧九 - 逡ェ蜿キ謖螳壼盾辣ァ/蜻シ縺ウ蜃コ縺励ッ荳崎ィア蜿ッ縲 - - case 4. /..(?..)../G (蜷榊燕莉倥″謐慕佐蠑城寔蜷医ッ菴ソ逕ィ縲√が繝励す繝ァ繝ウ 'G'繧呈欠螳) - - (...) 縺ッ縲∵黒迯イ蠑城寔蜷医→縺励※謇ア繧上l繧九 - 逡ェ蜿キ謖螳壼盾辣ァ/蜻シ縺ウ蜃コ縺励ッ險ア蜿ッ縲 - - 菴縺 - g: ONIG_OPTION_DONT_CAPTURE_GROUP - G: ONIG_OPTION_CAPTURE_GROUP - ('g'縺ィ'G'繧ェ繝励す繝ァ繝ウ縺ッ縲〉uby-dev ML縺ァ隴ー隲悶&繧後◆縲) - - 縺薙l繧峨ョ謖ッ闊槭ョ諢丞袖縺ッ縲 - 蜷榊燕莉倥″謐慕佐縺ィ蜷榊燕辟。縺玲黒迯イ繧貞酔譎ゅ↓菴ソ逕ィ縺吶k蠢辟カ諤ァ縺ョ縺ゅk蝣エ髱「縺ッ蟆代↑縺縺ァ縺ゅm縺 - 縺ィ縺縺逅逕ア縺九i閠縺医i繧後◆繧ゅョ縺ァ縺ゅk縲 - - ------------------------------ -陬懆ィ 1. 譁豕穂セ晏ュ倥が繝励す繝ァ繝ウ - - + ONIG_SYNTAX_RUBY - (?m): 邨よュ「隨ヲ險伜捷(.)縺ッ謾ケ陦後→辣ァ蜷域仙粥 - - + ONIG_SYNTAX_PERL縲^NIG_SYNTAX_JAVA縲^NIG_SYNTAX_PYTHON - (?s): 邨よュ「隨ヲ險伜捷(.)縺ッ謾ケ陦後→辣ァ蜷域仙粥 - (?m): ^ 縺ッ謾ケ陦後ョ逶エ蠕後↓辣ァ蜷医☆繧九$ 縺ッ謾ケ陦後ョ逶エ蜑阪↓辣ァ蜷医☆繧 - - + ONIG_SYNTAX_PERL - (?d), (?l): (?u)縺ィ蜷後§ - - -陬懆ィ 2. 迢ャ閾ェ諡。蠑オ讖溯ス - - + 16騾イ謨ー謨ー蟄励髱16騾イ謨ー蟄 \h, \H - + 蜷榊燕莉倥″謐慕佐蠑城寔蜷 (?...), (?'name'...) - + 蜷榊燕謖螳壼セ梧婿蜿らァ \k - + 驛ィ蛻蠑丞他蜃コ縺 \g, \g - - -陬懆ィ 3. Perl 5.18.0縺ィ豈碑シ縺励※蟄伜惠縺励↑縺讖溯ス - - + \N{name}, \N{U+xxxx}, \N - + \l,\u,\L,\U, \C - + \v, \V, \h, \H - + (?{code}) - + (??{code}) - + (?|...) - + (?[]) - + (*VERB:ARG) - - * \Q...\E - 菴縺涌NIG_SYNTAX_PERL縺ィONIG_SYNTAX_JAVA縺ァ縺ッ譛牙柑 - - -陬懆ィ 4. Ruby 1.8 縺ョ譌・譛ャ隱槫喧 GNU regex(version 0.12)縺ィ縺ョ驕輔> - - + 譁蟄猶roperty讖溯ス霑ス蜉 (\p{property}, \P{Property}) - + 16騾イ謨ー蟄励ち繧、繝苓ソス蜉 (\h, \H) - + 謌サ繧願ェュ縺ソ讖溯ス繧定ソス蜉 - + 蠑キ谺イ縺ェ郢ー繧願ソ斐@謖螳壼ュ舌r霑ス蜉 (?+, *+, ++) - + 譁蟄鈴寔蜷医ョ荳ュ縺ョ貍皮ョ怜ュ舌r霑ス蜉 ([...], &&) - ('[' 縺ッ縲∵枚蟄鈴寔蜷医ョ荳ュ縺ァ騾壼クク縺ョ譁蟄励→縺励※菴ソ逕ィ縺吶k縺ィ縺阪↓縺ッ - 騾驕ソ菫ョ鬟セ縺励↑縺代l縺ー縺ェ繧峨↑縺) - + 蜷榊燕莉倥″謐慕佐蠑城寔蜷医→縲驛ィ蛻蠑丞他蜃コ縺玲ゥ溯ス霑ス蜉 - + 螟壹ヰ繧、繝域枚蟄励さ繝シ繝峨′謖螳壹&繧後※縺繧九→縺阪 - 譁蟄鈴寔蜷医ョ荳ュ縺ァ蜈ォ騾イ謨ー縺セ縺溘ッ蜊∝ュ騾イ謨ー陦ィ迴セ縺ョ騾」邯壹ッ縲∝、壹ヰ繧、繝育ャヲ蜿キ縺ァ陦ィ迴セ縺輔l縺 - 荳蛟九ョ譁蟄励→隗」驥医&繧後k - (萓. [\xa1\xa2], [\xa1\xa7-\xa4\xa1]) - + 譁蟄鈴寔蜷医ョ荳ュ縺ァ縲∽ク繝舌う繝域枚蟄励→螟壹ヰ繧、繝域枚蟄励ョ遽蝗イ謖螳壹ッ險ア縺輔l繧九 - ex. /[a-縺]/ - + 蟄、遶九が繝励す繝ァ繝ウ縺ョ譛牙柑遽蝗イ縺ッ縲√◎縺ョ蟄、遶九が繝励す繝ァ繝ウ繧貞性繧薙〒縺繧句シ城寔蜷医ョ - 邨ゅo繧翫∪縺ァ縺ァ縺ゅk - 萓. (?:(?i)a|b) 縺ッ (?:(?i:a|b)) 縺ィ隗」驥医&繧後k縲(?:(?i:a)|b)縺ァ縺ッ縺ェ縺 - + 蟄、遶九が繝励す繝ァ繝ウ縺ッ縺昴ョ蜑阪ョ蠑上↓蟇セ縺励※騾城℃逧縺ァ縺ッ縺ェ縺 - 萓. /a(?i)*/ 縺ッ譁豕輔お繝ゥ繝シ縺ィ縺ェ繧 - + 荳榊ョ悟ィ縺ェ郢ー繧願ソ斐@遽蝗イ謖螳壼ュ舌ッ騾壼クク縺ョ譁蟄怜励→縺励※險ア蜿ッ縺輔l繧 - 萓. /{/, /({)/, /a{2,3/ - + 蜷ヲ螳夂噪POSIX繝悶Λ繧ア繝繝 [:^xxxx:] 繧定ソス蜉 - + POSIX繝悶Λ繧ア繝繝 [:ascii:] 繧定ソス蜉 - + 蜈郁ェュ縺ソ縺ョ郢ー繧願ソ斐@縺ッ荳崎ィア蜿ッ - 萓. /(?=a)*/, /(?!b){5}/ - + 謨ー蛟、縺ァ謖螳壹&繧後◆譁蟄励↓蟇セ縺励※繧ゅ∝、ァ譁蟄怜ー乗枚蟄礼ァ蜷医が繝励す繝ァ繝ウ縺ッ譛牙柑 - 萓. /\x61/i =~ "A" - + 郢ー繧願ソ斐@蝗樊焚謖螳壹〒縲∵怙菴主屓謨ー縺ョ逵∫払(0蝗)縺後〒縺阪k - /a{,n}/ == /a{0,n}/ - 譛菴主屓謨ー縺ィ譛螟ァ蝗樊焚縺ョ蜷梧凾逵∫払縺ッ險ア縺輔l縺ェ縺縲(/a{,}/) - + /a{n}?/縺ッ辟。谺イ縺ェ貍皮ョ怜ュ舌〒縺ッ縺ェ縺縲 - /a{n}?/ == /(?:a{n})?/ - + 辟。蜉ケ縺ェ蠕梧婿蜿らァ繧偵メ繧ァ繝繧ッ縺励※繧ィ繝ゥ繝シ縺ォ縺吶k縲 - /\1/, /(a)\2/ - + 辟。髯千ケー繧願ソ斐@縺ョ荳ュ縺ァ縲髟キ縺暮峺縺ァ縺ョ辣ァ蜷域仙粥縺ッ郢ー繧願ソ斐@繧剃クュ譁ュ縺輔○繧九′縲 - 縺薙ョ縺ィ縺阪∽クュ譁ュ縺吶∋縺阪°縺ゥ縺縺九ョ蛻、螳壹→縺励※縲∵黒迯イ蠑城寔蜷医ョ謐慕佐迥カ諷九ョ - 螟牙喧縺セ縺ァ閠諷ョ縺励※縺繧 - /(?:()|())*\1\2/ =~ "" - /(?:\1a|())*/ =~ "a" - - - -陬懆ィ 5. 螳溯」縺輔l縺ヲ縺繧九′縲∵里螳壼、縺ァ縺ッ譛牙柑縺ォ縺励※縺縺ェ縺讖溯ス - - + 謐慕佐螻・豁エ蜿らァ - - (?@...) 縺ィ (?@...) - - 萓. /(?@a)*/.match("aaa") ==> [<0-1>, <1-2>, <2-3>] - - 菴ソ逕ィ譁ケ豕輔ッ縲《ample/listcap.c繧貞盾辣ァ - - 譛牙柑縺ォ縺励※縺縺ェ縺逅逕ア縺ッ縲√←縺ョ遞句コヲ蠖ケ縺ォ遶九▽縺九ッ縺」縺阪j縺励↑縺縺溘a縲 - - -陬懆ィ 6. 蝠城。檎せ - - + 繧ィ繝ウ繧ウ繝シ繝繧」繝ウ繧ー繝舌う繝亥、縺碁←豁」縺ェ萓。縺九←縺縺九ョ繝√ぉ繝繧ッ縺ッ陦後↑縺」縺ヲ縺縺ェ縺縲 - - 萓: UTF-8 - - * 蜈磯ュ繝舌う繝医→縺励※荳肴ュ」縺ェ繝舌う繝医r荳譁蟄励→縺ソ縺ェ縺 - /./u =~ "\xa3" - - * 荳榊ョ悟ィ縺ェ繝舌う繝医す繝シ繧ア繝ウ繧ケ縺ョ繝√ぉ繝繧ッ繧偵@縺ェ縺 - /\w+/u =~ "a\xf3\x8ec" - - 縺薙l繧定ェソ縺ケ繧九%縺ィ縺ッ蜿ッ閭ス縺ァ縺ッ縺ゅk縺後驕縺上↑繧九ョ縺ァ陦後↑繧上↑縺縲 - - 譁蟄怜励→縺励※縲√◎縺ョ繧医≧縺ェ繝舌う繝亥励r謖螳壹@縺溷エ蜷医ョ蜍穂ス懊ッ菫晁ィシ縺励↑縺縲 - -邨ゅj diff --git a/vendor/onig/doc/UnicodeProps.txt b/vendor/onig/doc/UnicodeProps.txt deleted file mode 100644 index 14ddd30..0000000 --- a/vendor/onig/doc/UnicodeProps.txt +++ /dev/null @@ -1,777 +0,0 @@ -Onigmo (Oniguruma-mod) Unicode Properties Version 6.0.0 2016/10/15 - -* POSIX brackets - Alpha - Blank - Cntrl - Digit - Graph - Lower - Print - Punct - Space - Upper - XDigit - Word - Alnum - ASCII - XPosixPunct - -* Special - Any - Assigned - -* Major and General Categories - C - Cc - Cf - Cn - Co - Cs - L - LC - Ll - Lm - Lo - Lt - Lu - M - Mc - Me - Mn - N - Nd - Nl - No - P - Pc - Pd - Pe - Pf - Pi - Po - Ps - S - Sc - Sk - Sm - So - Z - Zl - Zp - Zs - -* Scripts - Adlam - Ahom - Anatolian_Hieroglyphs - Arabic - Armenian - Avestan - Balinese - Bamum - Bassa_Vah - Batak - Bengali - Bhaiksuki - Bopomofo - Brahmi - Braille - Buginese - Buhid - Canadian_Aboriginal - Carian - Caucasian_Albanian - Chakma - Cham - Cherokee - Common - Coptic - Cuneiform - Cypriot - Cyrillic - Deseret - Devanagari - Duployan - Egyptian_Hieroglyphs - Elbasan - Ethiopic - Georgian - Glagolitic - Gothic - Grantha - Greek - Gujarati - Gurmukhi - Han - Hangul - Hanunoo - Hatran - Hebrew - Hiragana - Imperial_Aramaic - Inherited - Inscriptional_Pahlavi - Inscriptional_Parthian - Javanese - Kaithi - Kannada - Katakana - Kayah_Li - Kharoshthi - Khmer - Khojki - Khudawadi - Lao - Latin - Lepcha - Limbu - Linear_A - Linear_B - Lisu - Lycian - Lydian - Mahajani - Malayalam - Mandaic - Manichaean - Marchen - Meetei_Mayek - Mende_Kikakui - Meroitic_Cursive - Meroitic_Hieroglyphs - Miao - Modi - Mongolian - Mro - Multani - Myanmar - Nabataean - New_Tai_Lue - Newa - Nko - Ogham - Ol_Chiki - Old_Hungarian - Old_Italic - Old_North_Arabian - Old_Permic - Old_Persian - Old_South_Arabian - Old_Turkic - Oriya - Osage - Osmanya - Pahawh_Hmong - Palmyrene - Pau_Cin_Hau - Phags_Pa - Phoenician - Psalter_Pahlavi - Rejang - Runic - Samaritan - Saurashtra - Sharada - Shavian - Siddham - SignWriting - Sinhala - Sora_Sompeng - Sundanese - Syloti_Nagri - Syriac - Tagalog - Tagbanwa - Tai_Le - Tai_Tham - Tai_Viet - Takri - Tamil - Tangut - Telugu - Thaana - Thai - Tibetan - Tifinagh - Tirhuta - Ugaritic - Unknown - Vai - Warang_Citi - Yi - -* DerivedCoreProperties - Alphabetic - Case_Ignorable - Cased - Changes_When_Casefolded - Changes_When_Casemapped - Changes_When_Lowercased - Changes_When_Titlecased - Changes_When_Uppercased - Default_Ignorable_Code_Point - Grapheme_Base - Grapheme_Extend - Grapheme_Link - ID_Continue - ID_Start - Lowercase - Math - Uppercase - XID_Continue - XID_Start - -* PropList - ASCII_Hex_Digit - Bidi_Control - Dash - Deprecated - Diacritic - Extender - Hex_Digit - Hyphen - IDS_Binary_Operator - IDS_Trinary_Operator - Ideographic - Join_Control - Logical_Order_Exception - Noncharacter_Code_Point - Other_Alphabetic - Other_Default_Ignorable_Code_Point - Other_Grapheme_Extend - Other_ID_Continue - Other_ID_Start - Other_Lowercase - Other_Math - Other_Uppercase - Pattern_Syntax - Pattern_White_Space - Prepended_Concatenation_Mark - Quotation_Mark - Radical - Sentence_Terminal - Soft_Dotted - Terminal_Punctuation - Unified_Ideograph - Variation_Selector - White_Space - -* PropertyAliases - AHex - Bidi_C - CI - CWCF - CWCM - CWL - CWT - CWU - DI - Dep - Dia - Ext - Gr_Base - Gr_Ext - Gr_Link - Hex - IDC - IDS - IDSB - IDST - Ideo - Join_C - LOE - NChar - OAlpha - ODI - OGr_Ext - OIDC - OIDS - OLower - OMath - OUpper - PCM - Pat_Syn - Pat_WS - QMark - SD - STerm - Term - UIdeo - VS - WSpace - XIDC - XIDS - -* PropertyValueAliases (General_Category) - Other - Control - Format - Unassigned - Private_Use - Surrogate - Letter - Cased_Letter - Lowercase_Letter - Modifier_Letter - Other_Letter - Titlecase_Letter - Uppercase_Letter - Mark - Combining_Mark - Spacing_Mark - Enclosing_Mark - Nonspacing_Mark - Number - Decimal_Number - Letter_Number - Other_Number - Punctuation - Connector_Punctuation - Dash_Punctuation - Close_Punctuation - Final_Punctuation - Initial_Punctuation - Other_Punctuation - Open_Punctuation - Symbol - Currency_Symbol - Modifier_Symbol - Math_Symbol - Other_Symbol - Separator - Line_Separator - Paragraph_Separator - Space_Separator - -* PropertyValueAliases (Script) - Adlm - Aghb - Arab - Armi - Armn - Avst - Bali - Bamu - Bass - Batk - Beng - Bhks - Bopo - Brah - Brai - Bugi - Buhd - Cakm - Cans - Cari - Cher - Copt - Qaac - Cprt - Cyrl - Deva - Dsrt - Dupl - Egyp - Elba - Ethi - Geor - Glag - Goth - Gran - Grek - Gujr - Guru - Hang - Hani - Hano - Hatr - Hebr - Hira - Hluw - Hmng - Hung - Ital - Java - Kali - Kana - Khar - Khmr - Khoj - Knda - Kthi - Lana - Laoo - Latn - Lepc - Limb - Lina - Linb - Lyci - Lydi - Mahj - Mand - Mani - Marc - Mend - Merc - Mero - Mlym - Mong - Mroo - Mtei - Mult - Mymr - Narb - Nbat - Nkoo - Ogam - Olck - Orkh - Orya - Osge - Osma - Palm - Pauc - Perm - Phag - Phli - Phlp - Phnx - Plrd - Prti - Rjng - Runr - Samr - Sarb - Saur - Sgnw - Shaw - Shrd - Sidd - Sind - Sinh - Sora - Sund - Sylo - Syrc - Tagb - Takr - Tale - Talu - Taml - Tang - Tavt - Telu - Tfng - Tglg - Thaa - Tibt - Tirh - Ugar - Vaii - Wara - Xpeo - Xsux - Yiii - Zinh - Qaai - Zyyy - Zzzz - -* DerivedAges - Age=1.1 - Age=2.0 - Age=2.1 - Age=3.0 - Age=3.1 - Age=3.2 - Age=4.0 - Age=4.1 - Age=5.0 - Age=5.1 - Age=5.2 - Age=6.0 - Age=6.1 - Age=6.2 - Age=6.3 - Age=7.0 - Age=8.0 - Age=9.0 - -* Blocks - In_Basic_Latin - In_Latin_1_Supplement - In_Latin_Extended_A - In_Latin_Extended_B - In_IPA_Extensions - In_Spacing_Modifier_Letters - In_Combining_Diacritical_Marks - In_Greek_and_Coptic - In_Cyrillic - In_Cyrillic_Supplement - In_Armenian - In_Hebrew - In_Arabic - In_Syriac - In_Arabic_Supplement - In_Thaana - In_NKo - In_Samaritan - In_Mandaic - In_Arabic_Extended_A - In_Devanagari - In_Bengali - In_Gurmukhi - In_Gujarati - In_Oriya - In_Tamil - In_Telugu - In_Kannada - In_Malayalam - In_Sinhala - In_Thai - In_Lao - In_Tibetan - In_Myanmar - In_Georgian - In_Hangul_Jamo - In_Ethiopic - In_Ethiopic_Supplement - In_Cherokee - In_Unified_Canadian_Aboriginal_Syllabics - In_Ogham - In_Runic - In_Tagalog - In_Hanunoo - In_Buhid - In_Tagbanwa - In_Khmer - In_Mongolian - In_Unified_Canadian_Aboriginal_Syllabics_Extended - In_Limbu - In_Tai_Le - In_New_Tai_Lue - In_Khmer_Symbols - In_Buginese - In_Tai_Tham - In_Combining_Diacritical_Marks_Extended - In_Balinese - In_Sundanese - In_Batak - In_Lepcha - In_Ol_Chiki - In_Cyrillic_Extended_C - In_Sundanese_Supplement - In_Vedic_Extensions - In_Phonetic_Extensions - In_Phonetic_Extensions_Supplement - In_Combining_Diacritical_Marks_Supplement - In_Latin_Extended_Additional - In_Greek_Extended - In_General_Punctuation - In_Superscripts_and_Subscripts - In_Currency_Symbols - In_Combining_Diacritical_Marks_for_Symbols - In_Letterlike_Symbols - In_Number_Forms - In_Arrows - In_Mathematical_Operators - In_Miscellaneous_Technical - In_Control_Pictures - In_Optical_Character_Recognition - In_Enclosed_Alphanumerics - In_Box_Drawing - In_Block_Elements - In_Geometric_Shapes - In_Miscellaneous_Symbols - In_Dingbats - In_Miscellaneous_Mathematical_Symbols_A - In_Supplemental_Arrows_A - In_Braille_Patterns - In_Supplemental_Arrows_B - In_Miscellaneous_Mathematical_Symbols_B - In_Supplemental_Mathematical_Operators - In_Miscellaneous_Symbols_and_Arrows - In_Glagolitic - In_Latin_Extended_C - In_Coptic - In_Georgian_Supplement - In_Tifinagh - In_Ethiopic_Extended - In_Cyrillic_Extended_A - In_Supplemental_Punctuation - In_CJK_Radicals_Supplement - In_Kangxi_Radicals - In_Ideographic_Description_Characters - In_CJK_Symbols_and_Punctuation - In_Hiragana - In_Katakana - In_Bopomofo - In_Hangul_Compatibility_Jamo - In_Kanbun - In_Bopomofo_Extended - In_CJK_Strokes - In_Katakana_Phonetic_Extensions - In_Enclosed_CJK_Letters_and_Months - In_CJK_Compatibility - In_CJK_Unified_Ideographs_Extension_A - In_Yijing_Hexagram_Symbols - In_CJK_Unified_Ideographs - In_Yi_Syllables - In_Yi_Radicals - In_Lisu - In_Vai - In_Cyrillic_Extended_B - In_Bamum - In_Modifier_Tone_Letters - In_Latin_Extended_D - In_Syloti_Nagri - In_Common_Indic_Number_Forms - In_Phags_pa - In_Saurashtra - In_Devanagari_Extended - In_Kayah_Li - In_Rejang - In_Hangul_Jamo_Extended_A - In_Javanese - In_Myanmar_Extended_B - In_Cham - In_Myanmar_Extended_A - In_Tai_Viet - In_Meetei_Mayek_Extensions - In_Ethiopic_Extended_A - In_Latin_Extended_E - In_Cherokee_Supplement - In_Meetei_Mayek - In_Hangul_Syllables - In_Hangul_Jamo_Extended_B - In_High_Surrogates - In_High_Private_Use_Surrogates - In_Low_Surrogates - In_Private_Use_Area - In_CJK_Compatibility_Ideographs - In_Alphabetic_Presentation_Forms - In_Arabic_Presentation_Forms_A - In_Variation_Selectors - In_Vertical_Forms - In_Combining_Half_Marks - In_CJK_Compatibility_Forms - In_Small_Form_Variants - In_Arabic_Presentation_Forms_B - In_Halfwidth_and_Fullwidth_Forms - In_Specials - In_Linear_B_Syllabary - In_Linear_B_Ideograms - In_Aegean_Numbers - In_Ancient_Greek_Numbers - In_Ancient_Symbols - In_Phaistos_Disc - In_Lycian - In_Carian - In_Coptic_Epact_Numbers - In_Old_Italic - In_Gothic - In_Old_Permic - In_Ugaritic - In_Old_Persian - In_Deseret - In_Shavian - In_Osmanya - In_Osage - In_Elbasan - In_Caucasian_Albanian - In_Linear_A - In_Cypriot_Syllabary - In_Imperial_Aramaic - In_Palmyrene - In_Nabataean - In_Hatran - In_Phoenician - In_Lydian - In_Meroitic_Hieroglyphs - In_Meroitic_Cursive - In_Kharoshthi - In_Old_South_Arabian - In_Old_North_Arabian - In_Manichaean - In_Avestan - In_Inscriptional_Parthian - In_Inscriptional_Pahlavi - In_Psalter_Pahlavi - In_Old_Turkic - In_Old_Hungarian - In_Rumi_Numeral_Symbols - In_Brahmi - In_Kaithi - In_Sora_Sompeng - In_Chakma - In_Mahajani - In_Sharada - In_Sinhala_Archaic_Numbers - In_Khojki - In_Multani - In_Khudawadi - In_Grantha - In_Newa - In_Tirhuta - In_Siddham - In_Modi - In_Mongolian_Supplement - In_Takri - In_Ahom - In_Warang_Citi - In_Pau_Cin_Hau - In_Bhaiksuki - In_Marchen - In_Cuneiform - In_Cuneiform_Numbers_and_Punctuation - In_Early_Dynastic_Cuneiform - In_Egyptian_Hieroglyphs - In_Anatolian_Hieroglyphs - In_Bamum_Supplement - In_Mro - In_Bassa_Vah - In_Pahawh_Hmong - In_Miao - In_Ideographic_Symbols_and_Punctuation - In_Tangut - In_Tangut_Components - In_Kana_Supplement - In_Duployan - In_Shorthand_Format_Controls - In_Byzantine_Musical_Symbols - In_Musical_Symbols - In_Ancient_Greek_Musical_Notation - In_Tai_Xuan_Jing_Symbols - In_Counting_Rod_Numerals - In_Mathematical_Alphanumeric_Symbols - In_Sutton_SignWriting - In_Glagolitic_Supplement - In_Mende_Kikakui - In_Adlam - In_Arabic_Mathematical_Alphabetic_Symbols - In_Mahjong_Tiles - In_Domino_Tiles - In_Playing_Cards - In_Enclosed_Alphanumeric_Supplement - In_Enclosed_Ideographic_Supplement - In_Miscellaneous_Symbols_and_Pictographs - In_Emoticons - In_Ornamental_Dingbats - In_Transport_and_Map_Symbols - In_Alchemical_Symbols - In_Geometric_Shapes_Extended - In_Supplemental_Arrows_C - In_Supplemental_Symbols_and_Pictographs - In_CJK_Unified_Ideographs_Extension_B - In_CJK_Unified_Ideographs_Extension_C - In_CJK_Unified_Ideographs_Extension_D - In_CJK_Unified_Ideographs_Extension_E - In_CJK_Compatibility_Ideographs_Supplement - In_Tags - In_Variation_Selectors_Supplement - In_Supplementary_Private_Use_Area_A - In_Supplementary_Private_Use_Area_B - In_No_Block diff --git a/vendor/onig/enc/ascii.c b/vendor/onig/enc/ascii.c deleted file mode 100644 index 8b32c41..0000000 --- a/vendor/onig/enc/ascii.c +++ /dev/null @@ -1,104 +0,0 @@ -/********************************************************************** - ascii.c - Onigmo (Oniguruma-mod) (regular expression library) -**********************************************************************/ -/*- - * Copyright (c) 2002-2006 K.Kosako - * Copyright (c) 2011 K.Takata - * 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. - */ - -#include "regenc.h" -#ifdef RUBY -# include "encindex.h" -#endif - -#ifndef ENCINDEX_ASCII -# define ENCINDEX_ASCII 0 -#endif - -OnigEncodingDefine(ascii, ASCII) = { - onigenc_single_byte_mbc_enc_len, - "ASCII-8BIT",/* name */ - 1, /* max byte length */ - 1, /* min byte length */ - onigenc_is_mbc_newline_0x0a, - onigenc_single_byte_mbc_to_code, - onigenc_single_byte_code_to_mbclen, - onigenc_single_byte_code_to_mbc, - onigenc_ascii_mbc_case_fold, - onigenc_ascii_apply_all_case_fold, - onigenc_ascii_get_case_fold_codes_by_str, - onigenc_minimum_property_name_to_ctype, - onigenc_ascii_is_code_ctype, - onigenc_not_support_get_ctype_code_range, - onigenc_single_byte_left_adjust_char_head, - onigenc_always_true_is_allowed_reverse_match, - onigenc_single_byte_ascii_only_case_map, - ENCINDEX_ASCII, - ONIGENC_FLAG_NONE, -}; -ENC_ALIAS("BINARY", "ASCII-8BIT") -ENC_REPLICATE("IBM437", "ASCII-8BIT") -ENC_ALIAS("CP437", "IBM437") -ENC_REPLICATE("IBM737", "ASCII-8BIT") -ENC_ALIAS("CP737", "IBM737") -ENC_REPLICATE("IBM775", "ASCII-8BIT") -ENC_ALIAS("CP775", "IBM775") -ENC_REPLICATE("CP850", "ASCII-8BIT") -ENC_ALIAS("IBM850", "CP850") -ENC_REPLICATE("IBM852", "ASCII-8BIT") -ENC_REPLICATE("CP852", "IBM852") -ENC_REPLICATE("IBM855", "ASCII-8BIT") -ENC_REPLICATE("CP855", "IBM855") -ENC_REPLICATE("IBM857", "ASCII-8BIT") -ENC_ALIAS("CP857", "IBM857") -ENC_REPLICATE("IBM860", "ASCII-8BIT") -ENC_ALIAS("CP860", "IBM860") -ENC_REPLICATE("IBM861", "ASCII-8BIT") -ENC_ALIAS("CP861", "IBM861") -ENC_REPLICATE("IBM862", "ASCII-8BIT") -ENC_ALIAS("CP862", "IBM862") -ENC_REPLICATE("IBM863", "ASCII-8BIT") -ENC_ALIAS("CP863", "IBM863") -ENC_REPLICATE("IBM864", "ASCII-8BIT") -ENC_ALIAS("CP864", "IBM864") -ENC_REPLICATE("IBM865", "ASCII-8BIT") -ENC_ALIAS("CP865", "IBM865") -ENC_REPLICATE("IBM866", "ASCII-8BIT") -ENC_ALIAS("CP866", "IBM866") -ENC_REPLICATE("IBM869", "ASCII-8BIT") -ENC_ALIAS("CP869", "IBM869") -ENC_REPLICATE("Windows-1258", "ASCII-8BIT") -ENC_ALIAS("CP1258", "Windows-1258") -ENC_REPLICATE("GB1988", "ASCII-8BIT") -ENC_REPLICATE("macCentEuro", "ASCII-8BIT") -ENC_REPLICATE("macCroatian", "ASCII-8BIT") -ENC_REPLICATE("macCyrillic", "ASCII-8BIT") -ENC_REPLICATE("macGreek", "ASCII-8BIT") -ENC_REPLICATE("macIceland", "ASCII-8BIT") -ENC_REPLICATE("macRoman", "ASCII-8BIT") -ENC_REPLICATE("macRomania", "ASCII-8BIT") -ENC_REPLICATE("macThai", "ASCII-8BIT") -ENC_REPLICATE("macTurkish", "ASCII-8BIT") -ENC_REPLICATE("macUkraine", "ASCII-8BIT") diff --git a/vendor/onig/enc/big5.c b/vendor/onig/enc/big5.c deleted file mode 100644 index ab4fb69..0000000 --- a/vendor/onig/enc/big5.c +++ /dev/null @@ -1,376 +0,0 @@ -/********************************************************************** - big5.c - Oniguruma (regular expression library) -**********************************************************************/ -/*- - * Copyright (c) 2002-2007 K.Kosako - * 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. - */ - -#include "regenc.h" - -static const int EncLen_BIG5[] = { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 -}; -static const int EncLen_BIG5_HKSCS[] = { - /* LEN 0 1 2 3 4 5 6 7 8 9 A B C D E F */ - /* 0 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* 1 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* 2 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* 3 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* 4 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* 5 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* 6 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* 7 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* 8 */ 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, - /* 9 */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - /* A */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - /* B */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - /* C */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - /* D */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - /* E */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - /* F */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, -}; - -static const int EncLen_BIG5_UAO[] = { - /* LEN 0 1 2 3 4 5 6 7 8 9 A B C D E F */ - /* 0 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* 1 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* 2 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* 3 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* 4 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* 5 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* 6 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* 7 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* 8 */ 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - /* 9 */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - /* A */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - /* B */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - /* C */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - /* D */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - /* E */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - /* F */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, -}; - -typedef enum { FAILURE = -2, ACCEPT = -1, S0 = 0, S1 } state_t; -#define A ACCEPT -#define F FAILURE -static const signed char trans[][0x100] = { - { /* S0 0 1 2 3 4 5 6 7 8 9 a b c d e f */ - /* 0 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 1 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 2 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 3 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 4 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 5 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 6 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 7 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* a */ F, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* b */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* c */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* d */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* e */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* f */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, F - }, - { /* S1 0 1 2 3 4 5 6 7 8 9 a b c d e f */ - /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 4 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 5 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 6 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 7 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, F, - /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* a */ F, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* b */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* c */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* d */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* e */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* f */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, F - }, - { /* S2 0 1 2 3 4 5 6 7 8 9 a b c d e f */ - /* 0 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 1 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 2 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 3 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 4 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 5 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 6 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 7 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 8 */ F, F, F, F, F, F, F, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* 9 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* a */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* b */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* c */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* d */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* e */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* f */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, F - } -}; -#undef A -#undef F - -static int -big5_mbc_enc_len0(const UChar* p, const UChar* e, int tridx, const int tbl[]) -{ - int firstbyte = *p++; - state_t s = trans[tridx][firstbyte]; -#define RETURN(n) \ - return s == ACCEPT ? ONIGENC_CONSTRUCT_MBCLEN_CHARFOUND(n) : \ - ONIGENC_CONSTRUCT_MBCLEN_INVALID() - if (s < 0) RETURN(1); - if (p == e) return ONIGENC_CONSTRUCT_MBCLEN_NEEDMORE(tbl[firstbyte]-1); - s = trans[s][*p++]; - RETURN(2); -#undef RETURN -} - -static int -big5_mbc_enc_len(const UChar* p, const UChar* e, OnigEncoding enc ARG_UNUSED) -{ - return big5_mbc_enc_len0(p, e, 0, EncLen_BIG5); -} - -static int -big5_hkscs_mbc_enc_len(const UChar* p, const UChar* e, OnigEncoding enc ARG_UNUSED) -{ - return big5_mbc_enc_len0(p, e, 2, EncLen_BIG5_HKSCS); -} - -static int -big5_uao_mbc_enc_len(const UChar* p, const UChar* e, OnigEncoding enc ARG_UNUSED) -{ - return big5_mbc_enc_len0(p, e, 2, EncLen_BIG5_UAO); -} - -static OnigCodePoint -big5_mbc_to_code(const UChar* p, const UChar* end, OnigEncoding enc) -{ - return onigenc_mbn_mbc_to_code(enc, p, end); -} - -static int -big5_code_to_mbc(OnigCodePoint code, UChar *buf, OnigEncoding enc) -{ - return onigenc_mb2_code_to_mbc(enc, code, buf); -} - -static int -big5_mbc_case_fold(OnigCaseFoldType flag, const UChar** pp, const UChar* end, - UChar* lower, OnigEncoding enc) -{ - return onigenc_mbn_mbc_case_fold(enc, flag, - pp, end, lower); -} - -#if 0 -static int -big5_is_mbc_ambiguous(OnigCaseFoldType flag, - const UChar** pp, const UChar* end, OnigEncoding enc) -{ - return onigenc_mbn_is_mbc_ambiguous(enc, flag, pp, end); -} -#endif - -static int -big5_is_code_ctype(OnigCodePoint code, unsigned int ctype, OnigEncoding enc) -{ - return onigenc_mb2_is_code_ctype(enc, code, ctype); -} - -static const char BIG5_CAN_BE_TRAIL_TABLE[256] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0 -}; - -#define BIG5_HKSCS_P(enc) ((enc)->precise_mbc_enc_len == big5_hkscs_mbc_enc_len) -#define BIG5_UAO_P(enc) ((enc)->precise_mbc_enc_len == big5_uao_mbc_enc_len) - -#define BIG5_ISMB_FIRST(byte) ( \ - BIG5_HKSCS_P(enc) ? EncLen_BIG5_HKSCS[byte] > 1 : \ - EncLen_BIG5[byte] > 1 \ - ) -#define BIG5_ISMB_TRAIL(byte) BIG5_CAN_BE_TRAIL_TABLE[(byte)] - -static UChar* -big5_left_adjust_char_head(const UChar* start, const UChar* s, const UChar* end, OnigEncoding enc) -{ - const UChar *p; - int len; - - if (s <= start) return (UChar* )s; - p = s; - - if (BIG5_ISMB_TRAIL(*p)) { - while (p > start) { - if (! BIG5_ISMB_FIRST(*--p)) { - p++; - break; - } - } - } - len = enclen(enc, p, end); - if (p + len > s) return (UChar* )p; - p += len; - return (UChar* )(p + ((s - p) & ~1)); -} - -static int -big5_is_allowed_reverse_match(const UChar* s, const UChar* end ARG_UNUSED, OnigEncoding enc ARG_UNUSED) -{ - const UChar c = *s; - - return (BIG5_ISMB_TRAIL(c) ? FALSE : TRUE); -} - -/* - * Name: Big5 (preferred MIME name) - * MIBenum: 2026 - * Source: Chinese for Taiwan Multi-byte set. - * PCL Symbol Set Id: 18T - * Alias: csBig5 - */ -OnigEncodingDefine(big5, BIG5) = { - big5_mbc_enc_len, - "Big5", /* name */ - 2, /* max enc length */ - 1, /* min enc length */ - onigenc_is_mbc_newline_0x0a, - big5_mbc_to_code, - onigenc_mb2_code_to_mbclen, - big5_code_to_mbc, - big5_mbc_case_fold, - onigenc_ascii_apply_all_case_fold, - onigenc_ascii_get_case_fold_codes_by_str, - onigenc_minimum_property_name_to_ctype, - big5_is_code_ctype, - onigenc_not_support_get_ctype_code_range, - big5_left_adjust_char_head, - big5_is_allowed_reverse_match, - onigenc_ascii_only_case_map, - 0, - ONIGENC_FLAG_NONE, -}; - -/* - * Name: CP950 - * Source: http://msdn.microsoft.com/en-us/goglobal/cc305155.aspx - */ -ENC_REPLICATE("CP950", "Big5") - -/* - * Name: Big5-HKSCS - * MIBenum: 2101 - * Source: http://www.iana.org/assignments/charset-reg/Big5-HKSCS - * Source: http://www.ogcio.gov.hk/ccli/eng/hkscs/mapping_table_2008.html - * Alias: None - */ -OnigEncodingDefine(big5_hkscs, BIG5_HKSCS) = { - big5_hkscs_mbc_enc_len, - "Big5-HKSCS", /* name */ - 2, /* max enc length */ - 1, /* min enc length */ - onigenc_is_mbc_newline_0x0a, - big5_mbc_to_code, - onigenc_mb2_code_to_mbclen, - big5_code_to_mbc, - big5_mbc_case_fold, - onigenc_ascii_apply_all_case_fold, - onigenc_ascii_get_case_fold_codes_by_str, - onigenc_minimum_property_name_to_ctype, - big5_is_code_ctype, - onigenc_not_support_get_ctype_code_range, - big5_left_adjust_char_head, - big5_is_allowed_reverse_match, - onigenc_ascii_only_case_map, - 0, - ONIGENC_FLAG_NONE, -}; -ENC_ALIAS("Big5-HKSCS:2008", "Big5-HKSCS") - -/* - * Name: CP951 - * Source: http://www.microsoft.com/hk/hkscs/default.aspx - * Source: http://www.microsoft.com/downloads/en/details.aspx?FamilyID=0e6f5ac8-7baa-4571-b8e8-78b3b776afd7&DisplayLang=en - * Source: http://blogs.msdn.com/b/shawnste/archive/2007/03/12/cp-951-hkscs.aspx - */ -ENC_REPLICATE("CP951", "Big5-HKSCS") - -/* - * Name: Big5-UAO [NOT registered by IANA!] - * Source: http://moztw.org/docs/big5/table/big5_2003-b2u.txt - */ -OnigEncodingDefine(big5_uao, BIG5_UAO) = { - big5_uao_mbc_enc_len, - "Big5-UAO", /* name */ - 2, /* max enc length */ - 1, /* min enc length */ - onigenc_is_mbc_newline_0x0a, - big5_mbc_to_code, - onigenc_mb2_code_to_mbclen, - big5_code_to_mbc, - big5_mbc_case_fold, - onigenc_ascii_apply_all_case_fold, - onigenc_ascii_get_case_fold_codes_by_str, - onigenc_minimum_property_name_to_ctype, - big5_is_code_ctype, - onigenc_not_support_get_ctype_code_range, - big5_left_adjust_char_head, - big5_is_allowed_reverse_match, - onigenc_ascii_only_case_map, - 0, - ONIGENC_FLAG_NONE, -}; diff --git a/vendor/onig/enc/cp949.c b/vendor/onig/enc/cp949.c deleted file mode 100644 index bd2c8d2..0000000 --- a/vendor/onig/enc/cp949.c +++ /dev/null @@ -1,222 +0,0 @@ -/********************************************************************** - cp949.c - Oniguruma (regular expression library) -**********************************************************************/ -/*- - * Copyright (c) 2002-2007 K.Kosako - * 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. - */ - -#include "regenc.h" - -static const int EncLen_CP949[] = { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 -}; - -static const char CP949_CAN_BE_TRAIL_TABLE[256] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0 -}; - -#define CP949_ISMB_FIRST(byte) (EncLen_CP949[byte] > 1) -#define CP949_ISMB_TRAIL(byte) CP949_CAN_BE_TRAIL_TABLE[(byte)] - -typedef enum { FAILURE = -2, ACCEPT = -1, S0 = 0, S1 } state_t; -#define A ACCEPT -#define F FAILURE -static const signed char trans[][0x100] = { - { /* S0 0 1 2 3 4 5 6 7 8 9 a b c d e f */ - /* 0 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 1 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 2 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 3 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 4 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 5 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 6 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 7 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 8 */ A, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* 9 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* a */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* b */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* c */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* d */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* e */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* f */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, F - }, - { /* S1 0 1 2 3 4 5 6 7 8 9 a b c d e f */ - /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 4 */ F, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 5 */ A, A, A, A, A, A, A, A, A, A, A, F, F, F, F, F, - /* 6 */ F, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 7 */ A, A, A, A, A, A, A, A, A, A, A, F, F, F, F, F, - /* 8 */ F, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 9 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* a */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* b */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* c */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* d */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* e */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* f */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, F - } -}; -#undef A -#undef F - -static int -cp949_mbc_enc_len(const UChar* p, const UChar* e, OnigEncoding enc ARG_UNUSED) -{ - int firstbyte = *p++; - state_t s = trans[0][firstbyte]; -#define RETURN(n) \ - return s == ACCEPT ? ONIGENC_CONSTRUCT_MBCLEN_CHARFOUND(n) : \ - ONIGENC_CONSTRUCT_MBCLEN_INVALID() - if (s < 0) RETURN(1); - if (p == e) return ONIGENC_CONSTRUCT_MBCLEN_NEEDMORE(EncLen_CP949[firstbyte]-1); - s = trans[s][*p++]; - RETURN(2); -#undef RETURN -} - -static OnigCodePoint -cp949_mbc_to_code(const UChar* p, const UChar* end, OnigEncoding enc) -{ - return onigenc_mbn_mbc_to_code(enc, p, end); -} - -static int -cp949_code_to_mbc(OnigCodePoint code, UChar *buf, OnigEncoding enc) -{ - return onigenc_mb2_code_to_mbc(enc, code, buf); -} - -static int -cp949_mbc_case_fold(OnigCaseFoldType flag, const UChar** pp, const UChar* end, - UChar* lower, OnigEncoding enc) -{ - return onigenc_mbn_mbc_case_fold(enc, flag, - pp, end, lower); -} - -#if 0 -static int -cp949_is_mbc_ambiguous(OnigCaseFoldType flag, - const UChar** pp, const UChar* end, OnigEncoding enc) -{ - return onigenc_mbn_is_mbc_ambiguous(enc, flag, pp, end); -} -#endif - -static int -cp949_is_code_ctype(OnigCodePoint code, unsigned int ctype, OnigEncoding enc) -{ - return onigenc_mb2_is_code_ctype(enc, code, ctype); -} - -static UChar* -cp949_left_adjust_char_head(const UChar* start, const UChar* s, const UChar* end, OnigEncoding enc) -{ - const UChar *p; - int len; - - if (s <= start) return (UChar* )s; - p = s; - - if (CP949_ISMB_TRAIL(*p)) { - while (p > start) { - if (! CP949_ISMB_FIRST(*--p)) { - p++; - break; - } - } - } - len = enclen(enc, p, end); - if (p + len > s) return (UChar* )p; - p += len; - return (UChar* )(p + ((s - p) & ~1)); -} - -static int -cp949_is_allowed_reverse_match(const UChar* s, const UChar* end ARG_UNUSED, OnigEncoding enc ARG_UNUSED) -{ - const UChar c = *s; - return (CP949_ISMB_TRAIL(c) ? FALSE : TRUE); -} - -OnigEncodingDefine(cp949, CP949) = { - cp949_mbc_enc_len, - "CP949", /* name */ - 2, /* max enc length */ - 1, /* min enc length */ - onigenc_is_mbc_newline_0x0a, - cp949_mbc_to_code, - onigenc_mb2_code_to_mbclen, - cp949_code_to_mbc, - cp949_mbc_case_fold, - onigenc_ascii_apply_all_case_fold, - onigenc_ascii_get_case_fold_codes_by_str, - onigenc_minimum_property_name_to_ctype, - cp949_is_code_ctype, - onigenc_not_support_get_ctype_code_range, - cp949_left_adjust_char_head, - cp949_is_allowed_reverse_match, - onigenc_ascii_only_case_map, - 0, - ONIGENC_FLAG_NONE, -}; -/* - * Name: CP949 - * Link: http://www.microsoft.com/globaldev/reference/dbcs/949.mspx - * Link: http://en.wikipedia.org/wiki/EUC-KR#EUC-KR - */ diff --git a/vendor/onig/enc/emacs_mule.c b/vendor/onig/enc/emacs_mule.c deleted file mode 100644 index f92eb18..0000000 --- a/vendor/onig/enc/emacs_mule.c +++ /dev/null @@ -1,342 +0,0 @@ -/********************************************************************** - emacs_mule.c - Oniguruma (regular expression library) -**********************************************************************/ -/*- - * Copyright (c) 2002-2007 K.Kosako - * 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. - */ - -#include "regenc.h" - - -#define emacsmule_islead(c) ((UChar )(c) < 0x9e) - -/* - CHARACTER := ASCII_CHAR | MULTIBYTE_CHAR - MULTIBYTE_CHAR := PRIMARY_CHAR_1 | PRIMARY_CHAR_2 - | SECONDARY_CHAR_1 | SECONDARY_CHAR_2 - PRIMARY_CHAR_1 := LEADING_CODE_PRI C1 - PRIMARY_CHAR_2 := LEADING_CODE_PRI C1 C2 - SECONDARY_CHAR_1 := LEADING_CODE_SEC LEADING_CODE_EXT C1 - SECONDARY_CHAR_2 := LEADING_CODE_SEC LEADING_CODE_EXT C1 C2 - ASCII_CHAR := 0 | 1 | ... | 127 - LEADING_CODE_PRI := 129 | 130 | ... | 153 - LEADING_CODE_SEC := 154 | 155 | 156 | 157 - C1, C2, LEADING_CODE_EXT := 160 | 161 | ... | 255 - */ - -static const int EncLen_EmacsMule[] = { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, -}; - -typedef enum { FAILURE = -2, ACCEPT = -1, S0 = 0, S1, S2, S3, S4, S5, S6 } state_t; -#define A ACCEPT -#define F FAILURE -static const signed char trans[][0x100] = { - { /* S0 0 1 2 3 4 5 6 7 8 9 a b c d e f */ - /* 0 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 1 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 2 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 3 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 4 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 5 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 6 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 7 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 8 */ F, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* 9 */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 5, 6, F, F, - /* a */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* b */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* c */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* d */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* e */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* f */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F - }, - { /* S1 0 1 2 3 4 5 6 7 8 9 a b c d e f */ - /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* a */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* b */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* c */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* d */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* e */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* f */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A - }, - { /* S2 0 1 2 3 4 5 6 7 8 9 a b c d e f */ - /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* a */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* b */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* c */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* d */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* e */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* f */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 - }, - { /* S3 0 1 2 3 4 5 6 7 8 9 a b c d e f */ - /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* a */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* b */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* c */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* d */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* e */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* f */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F - }, - { /* S4 0 1 2 3 4 5 6 7 8 9 a b c d e f */ - /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* a */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* b */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* c */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* d */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* e */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* f */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F - }, - { /* S5 0 1 2 3 4 5 6 7 8 9 a b c d e f */ - /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* a */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* b */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* c */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* d */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* e */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* f */ 2, 2, 2, 2, 2, F, F, F, F, F, F, F, F, F, F, F - }, - { /* S6 0 1 2 3 4 5 6 7 8 9 a b c d e f */ - /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* a */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* b */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* c */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* d */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* e */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* f */ F, F, F, F, F, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, F - }, - -}; -#undef A -#undef F - -static int -mbc_enc_len(const UChar* p, const UChar* e, OnigEncoding enc ARG_UNUSED) -{ - int firstbyte = *p++; - state_t s; - s = trans[0][firstbyte]; - if (s < 0) return s == ACCEPT ? ONIGENC_CONSTRUCT_MBCLEN_CHARFOUND(1) : - ONIGENC_CONSTRUCT_MBCLEN_INVALID(); - if (p == e) return ONIGENC_CONSTRUCT_MBCLEN_NEEDMORE(EncLen_EmacsMule[firstbyte]-1); - s = trans[s][*p++]; - if (s < 0) return s == ACCEPT ? ONIGENC_CONSTRUCT_MBCLEN_CHARFOUND(2) : - ONIGENC_CONSTRUCT_MBCLEN_INVALID(); - if (p == e) return ONIGENC_CONSTRUCT_MBCLEN_NEEDMORE(EncLen_EmacsMule[firstbyte]-2); - s = trans[s][*p++]; - if (s < 0) return s == ACCEPT ? ONIGENC_CONSTRUCT_MBCLEN_CHARFOUND(3) : - ONIGENC_CONSTRUCT_MBCLEN_INVALID(); - if (p == e) return ONIGENC_CONSTRUCT_MBCLEN_NEEDMORE(EncLen_EmacsMule[firstbyte]-3); - s = trans[s][*p++]; - return s == ACCEPT ? ONIGENC_CONSTRUCT_MBCLEN_CHARFOUND(4) : - ONIGENC_CONSTRUCT_MBCLEN_INVALID(); -} - -static OnigCodePoint -mbc_to_code(const UChar* p, const UChar* end, OnigEncoding enc) -{ - int c, i, len; - OnigCodePoint n; - - len = enclen(enc, p, end); - n = (OnigCodePoint )*p++; - if (len == 1) return n; - - for (i = 1; i < len; i++) { - if (p >= end) break; - c = *p++; - n <<= 8; n += c; - } - return n; -} - -static int -code_to_mbclen(OnigCodePoint code, OnigEncoding enc ARG_UNUSED) -{ - if (ONIGENC_IS_CODE_ASCII(code)) return 1; - else if (code > 0xffffffff) return 0; - else if ((code & 0xff000000) >= 0x80000000) return 4; - else if ((code & 0xff0000) >= 0x800000) return 3; - else if ((code & 0xff00) >= 0x8000) return 2; - else - return ONIGERR_INVALID_CODE_POINT_VALUE; -} - -static int -code_to_mbc(OnigCodePoint code, UChar *buf, OnigEncoding enc) -{ - UChar *p = buf; - - if ((code & 0xff000000) != 0) *p++ = (UChar )(((code >> 24) & 0xff)); - if ((code & 0xff0000) != 0) *p++ = (UChar )(((code >> 16) & 0xff)); - if ((code & 0xff00) != 0) *p++ = (UChar )(((code >> 8) & 0xff)); - *p++ = (UChar )(code & 0xff); - - if (enclen(enc, buf, p) != (p - buf)) - return ONIGERR_INVALID_CODE_POINT_VALUE; - return (int)(p - buf); -} - -static int -mbc_case_fold(OnigCaseFoldType flag, - const UChar** pp, const UChar* end, UChar* lower, - OnigEncoding enc) -{ - int len; - const UChar* p = *pp; - - if (ONIGENC_IS_MBC_ASCII(p)) { - *lower = ONIGENC_ASCII_CODE_TO_LOWER_CASE(*p); - (*pp)++; - return 1; - } - else { - int i; - - len = mbc_enc_len(p, end, enc); - for (i = 0; i < len; i++) { - *lower++ = *p++; - } - (*pp) += len; - return len; /* return byte length of converted char to lower */ - } -} - -static UChar* -left_adjust_char_head(const UChar* start, const UChar* s, const UChar* end, OnigEncoding enc) -{ - const UChar *p; - - if (s <= start) return (UChar* )s; - p = s; - - while (!emacsmule_islead(*p) && p > start) p--; - return (UChar* )p; -} - -static int -is_code_ctype(OnigCodePoint code, unsigned int ctype, OnigEncoding enc ARG_UNUSED) -{ - if (code < 128) - return ONIGENC_IS_ASCII_CODE_CTYPE(code, ctype); - else - return (code_to_mbclen(code, enc) > 1 ? TRUE : FALSE); -} - -/* - * Name: Emacs-Mule - * Link: http://www.m17n.org/mule/pricai96/mule.en.html - */ -OnigEncodingDefine(emacs_mule, Emacs_Mule) = { - mbc_enc_len, - "Emacs-Mule", /* name */ - 4, /* max enc length */ - 1, /* min enc length */ - onigenc_is_mbc_newline_0x0a, - mbc_to_code, - code_to_mbclen, - code_to_mbc, - mbc_case_fold, - onigenc_ascii_apply_all_case_fold, - onigenc_ascii_get_case_fold_codes_by_str, - onigenc_minimum_property_name_to_ctype, - is_code_ctype, - onigenc_not_support_get_ctype_code_range, - left_adjust_char_head, - onigenc_always_true_is_allowed_reverse_match, - onigenc_ascii_only_case_map, - 0, - ONIGENC_FLAG_NONE, -}; - -ENC_REPLICATE("stateless-ISO-2022-JP", "Emacs-Mule") diff --git a/vendor/onig/enc/euc_jp.c b/vendor/onig/enc/euc_jp.c deleted file mode 100644 index ded051a..0000000 --- a/vendor/onig/enc/euc_jp.c +++ /dev/null @@ -1,616 +0,0 @@ -/********************************************************************** - euc_jp.c - Onigmo (Oniguruma-mod) (regular expression library) -**********************************************************************/ -/*- - * Copyright (c) 2002-2008 K.Kosako - * Copyright (c) 2011 K.Takata - * 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. - */ - -#include "regenc.h" - -#define eucjp_islead(c) ((UChar )((c) - 0xa1) > 0xfe - 0xa1) - -static const int EncLen_EUCJP[] = { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 -}; - -typedef enum { FAILURE = -2, ACCEPT = -1, S0 = 0, S1, S2 } state_t; -#define A ACCEPT -#define F FAILURE -static const signed char trans[][0x100] = { - { /* S0 0 1 2 3 4 5 6 7 8 9 a b c d e f */ - /* 0 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 1 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 2 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 3 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 4 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 5 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 6 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 7 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, 1, 2, - /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* a */ F, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* b */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* c */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* d */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* e */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* f */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, F - }, - { /* S1 0 1 2 3 4 5 6 7 8 9 a b c d e f */ - /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* a */ F, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* b */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* c */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* d */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* e */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* f */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, F - }, - { /* S2 0 1 2 3 4 5 6 7 8 9 a b c d e f */ - /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* a */ F, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* b */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* c */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* d */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* e */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* f */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, F - }, - -}; -#undef A -#undef F - -static const OnigPairCaseFoldCodes CaseFoldMap[] = { - /* Fullwidth Alphabet */ - { 0xa3c1, 0xa3e1 }, - { 0xa3c2, 0xa3e2 }, - { 0xa3c3, 0xa3e3 }, - { 0xa3c4, 0xa3e4 }, - { 0xa3c5, 0xa3e5 }, - { 0xa3c6, 0xa3e6 }, - { 0xa3c7, 0xa3e7 }, - { 0xa3c8, 0xa3e8 }, - { 0xa3c9, 0xa3e9 }, - { 0xa3ca, 0xa3ea }, - { 0xa3cb, 0xa3eb }, - { 0xa3cc, 0xa3ec }, - { 0xa3cd, 0xa3ed }, - { 0xa3ce, 0xa3ee }, - { 0xa3cf, 0xa3ef }, - { 0xa3d0, 0xa3f0 }, - { 0xa3d1, 0xa3f1 }, - { 0xa3d2, 0xa3f2 }, - { 0xa3d3, 0xa3f3 }, - { 0xa3d4, 0xa3f4 }, - { 0xa3d5, 0xa3f5 }, - { 0xa3d6, 0xa3f6 }, - { 0xa3d7, 0xa3f7 }, - { 0xa3d8, 0xa3f8 }, - { 0xa3d9, 0xa3f9 }, - { 0xa3da, 0xa3fa }, - - /* Greek */ - { 0xa6a1, 0xa6c1 }, - { 0xa6a2, 0xa6c2 }, - { 0xa6a3, 0xa6c3 }, - { 0xa6a4, 0xa6c4 }, - { 0xa6a5, 0xa6c5 }, - { 0xa6a6, 0xa6c6 }, - { 0xa6a7, 0xa6c7 }, - { 0xa6a8, 0xa6c8 }, - { 0xa6a9, 0xa6c9 }, - { 0xa6aa, 0xa6ca }, - { 0xa6ab, 0xa6cb }, - { 0xa6ac, 0xa6cc }, - { 0xa6ad, 0xa6cd }, - { 0xa6ae, 0xa6ce }, - { 0xa6af, 0xa6cf }, - { 0xa6b0, 0xa6d0 }, - { 0xa6b1, 0xa6d1 }, - { 0xa6b2, 0xa6d2 }, - { 0xa6b3, 0xa6d3 }, - { 0xa6b4, 0xa6d4 }, - { 0xa6b5, 0xa6d5 }, - { 0xa6b6, 0xa6d6 }, - { 0xa6b7, 0xa6d7 }, - { 0xa6b8, 0xa6d8 }, - - /* Cyrillic */ - { 0xa7a1, 0xa7d1 }, - { 0xa7a2, 0xa7d2 }, - { 0xa7a3, 0xa7d3 }, - { 0xa7a4, 0xa7d4 }, - { 0xa7a5, 0xa7d5 }, - { 0xa7a6, 0xa7d6 }, - { 0xa7a7, 0xa7d7 }, - { 0xa7a8, 0xa7d8 }, - { 0xa7a9, 0xa7d9 }, - { 0xa7aa, 0xa7da }, - { 0xa7ab, 0xa7db }, - { 0xa7ac, 0xa7dc }, - { 0xa7ad, 0xa7dd }, - { 0xa7ae, 0xa7de }, - { 0xa7af, 0xa7df }, - { 0xa7b0, 0xa7e0 }, - { 0xa7b1, 0xa7e1 }, - { 0xa7b2, 0xa7e2 }, - { 0xa7b3, 0xa7e3 }, - { 0xa7b4, 0xa7e4 }, - { 0xa7b5, 0xa7e5 }, - { 0xa7b6, 0xa7e6 }, - { 0xa7b7, 0xa7e7 }, - { 0xa7b8, 0xa7e8 }, - { 0xa7b9, 0xa7e9 }, - { 0xa7ba, 0xa7ea }, - { 0xa7bb, 0xa7eb }, - { 0xa7bc, 0xa7ec }, - { 0xa7bd, 0xa7ed }, - { 0xa7be, 0xa7ee }, - { 0xa7bf, 0xa7ef }, - { 0xa7c0, 0xa7f0 }, - { 0xa7c1, 0xa7f1 }, -}; - -static int -mbc_enc_len(const UChar* p, const UChar* e, OnigEncoding enc ARG_UNUSED) -{ - int firstbyte = *p++; - state_t s; - s = trans[0][firstbyte]; - if (s < 0) return s == ACCEPT ? ONIGENC_CONSTRUCT_MBCLEN_CHARFOUND(1) : - ONIGENC_CONSTRUCT_MBCLEN_INVALID(); - if (p == e) return ONIGENC_CONSTRUCT_MBCLEN_NEEDMORE(EncLen_EUCJP[firstbyte]-1); - s = trans[s][*p++]; - if (s < 0) return s == ACCEPT ? ONIGENC_CONSTRUCT_MBCLEN_CHARFOUND(2) : - ONIGENC_CONSTRUCT_MBCLEN_INVALID(); - if (p == e) return ONIGENC_CONSTRUCT_MBCLEN_NEEDMORE(EncLen_EUCJP[firstbyte]-2); - s = trans[s][*p++]; - return s == ACCEPT ? ONIGENC_CONSTRUCT_MBCLEN_CHARFOUND(3) : - ONIGENC_CONSTRUCT_MBCLEN_INVALID(); -} - -static OnigCodePoint -mbc_to_code(const UChar* p, const UChar* end, OnigEncoding enc) -{ - int c, i, len; - OnigCodePoint n; - - len = mbc_enc_len(p, end, enc); - n = (OnigCodePoint )*p++; - if (len == 1) return n; - - for (i = 1; i < len; i++) { - if (p >= end) break; - c = *p++; - n <<= 8; n += c; - } - return n; -} - -static int -code_to_mbclen(OnigCodePoint code, OnigEncoding enc ARG_UNUSED) -{ - if (ONIGENC_IS_CODE_ASCII(code)) return 1; - else if (code > 0x00ffffff) - return ONIGERR_TOO_BIG_WIDE_CHAR_VALUE; - else if ((code & 0xff808080) == 0x00808080) return 3; - else if ((code & 0xffff8080) == 0x00008080) return 2; - else - return ONIGERR_INVALID_CODE_POINT_VALUE; -} - -#if 0 -static int -code_to_mbc_first(OnigCodePoint code) -{ - int first; - - if ((code & 0xff0000) != 0) { - first = (code >> 16) & 0xff; - } - else if ((code & 0xff00) != 0) { - first = (code >> 8) & 0xff; - } - else { - return (int )code; - } - return first; -} -#endif - -static int -code_to_mbc(OnigCodePoint code, UChar *buf, OnigEncoding enc) -{ - UChar *p = buf; - - if ((code & 0xff0000) != 0) *p++ = (UChar )(((code >> 16) & 0xff)); - if ((code & 0xff00) != 0) *p++ = (UChar )(((code >> 8) & 0xff)); - *p++ = (UChar )(code & 0xff); - -#if 1 - if (mbc_enc_len(buf, p, enc) != (p - buf)) - return ONIGERR_INVALID_CODE_POINT_VALUE; -#endif - return (int )(p - buf); -} - -static int -apply_all_case_fold(OnigCaseFoldType flag, - OnigApplyAllCaseFoldFunc f, void* arg, OnigEncoding enc) -{ - return onigenc_apply_all_case_fold_with_map( - numberof(CaseFoldMap), CaseFoldMap, 0, - flag, f, arg); -} - -static OnigCodePoint -get_lower_case(OnigCodePoint code) -{ - if (ONIGENC_IS_IN_RANGE(code, 0xa3c1, 0xa3da)) { - /* Fullwidth Alphabet */ - return (OnigCodePoint )(code + 0x0020); - } - else if (ONIGENC_IS_IN_RANGE(code, 0xa6a1, 0xa6b8)) { - /* Greek */ - return (OnigCodePoint )(code + 0x0020); - } - else if (ONIGENC_IS_IN_RANGE(code, 0xa7a1, 0xa7c1)) { - /* Cyrillic */ - return (OnigCodePoint )(code + 0x0030); - } - return code; -} - -static OnigCodePoint -get_upper_case(OnigCodePoint code) -{ - if (ONIGENC_IS_IN_RANGE(code, 0xa3e1, 0xa3fa)) { - /* Fullwidth Alphabet */ - return (OnigCodePoint )(code - 0x0020); - } - else if (ONIGENC_IS_IN_RANGE(code, 0xa6c1, 0xa6d8)) { - /* Greek */ - return (OnigCodePoint )(code - 0x0020); - } - else if (ONIGENC_IS_IN_RANGE(code, 0xa7d1, 0xa7f1)) { - /* Cyrillic */ - return (OnigCodePoint )(code - 0x0030); - } - return code; -} - -static int -get_case_fold_codes_by_str(OnigCaseFoldType flag, - const OnigUChar* p, const OnigUChar* end, - OnigCaseFoldCodeItem items[], OnigEncoding enc) -{ - int len; - OnigCodePoint code, code_lo, code_up; - - code = mbc_to_code(p, end, enc); - if (ONIGENC_IS_ASCII_CODE(code)) - return onigenc_ascii_get_case_fold_codes_by_str(flag, p, end, items, enc); - - len = mbc_enc_len(p, end, enc); - code_lo = get_lower_case(code); - code_up = get_upper_case(code); - - if (code != code_lo) { - items[0].byte_len = len; - items[0].code_len = 1; - items[0].code[0] = code_lo; - return 1; - } - else if (code != code_up) { - items[0].byte_len = len; - items[0].code_len = 1; - items[0].code[0] = code_up; - return 1; - } - - return 0; -} - -static int -mbc_case_fold(OnigCaseFoldType flag, - const UChar** pp, const UChar* end, UChar* lower, - OnigEncoding enc) -{ - const UChar* p = *pp; - - if (ONIGENC_IS_MBC_ASCII(p)) { - *lower = ONIGENC_ASCII_CODE_TO_LOWER_CASE(*p); - (*pp)++; - return 1; - } - else { - OnigCodePoint code; - int len; - - len = mbc_enc_len(p, end, enc); - code = get_lower_case(mbc_to_code(p, end, enc)); - len = code_to_mbc(code, lower, enc); - if (len == ONIGERR_INVALID_CODE_POINT_VALUE) len = 1; - (*pp) += len; - return len; /* return byte length of converted char to lower */ - } -} - -static UChar* -left_adjust_char_head(const UChar* start, const UChar* s, const UChar* end, OnigEncoding enc) -{ - /* In this encoding - mb-trail bytes doesn't mix with single bytes. - */ - const UChar *p; - int len; - - if (s <= start) return (UChar* )s; - p = s; - - while (!eucjp_islead(*p) && p > start) p--; - len = mbc_enc_len(p, end, enc); - if (p + len > s) return (UChar* )p; - p += len; - return (UChar* )(p + ((s - p) & ~1)); -} - -static int -is_allowed_reverse_match(const UChar* s, const UChar* end, OnigEncoding enc ARG_UNUSED) -{ - const UChar c = *s; - if (c <= 0x7e || c == 0x8e || c == 0x8f) - return TRUE; - else - return FALSE; -} - - -static const OnigCodePoint CR_Hiragana[] = { - 1, -#ifdef ENC_EUC_JIS_2004 - 0xa4a1, 0xa4fb -#else - 0xa4a1, 0xa4f3 -#endif -}; /* CR_Hiragana */ - -#ifdef ENC_EUC_JIS_2004 -static const OnigCodePoint CR_Katakana[] = { - 5, - 0x8ea6, 0x8eaf, /* JIS X 0201 Katakana */ - 0x8eb1, 0x8edd, /* JIS X 0201 Katakana */ - 0xa5a1, 0xa5fe, - 0xa6ee, 0xa6fe, - 0xa7f2, 0xa7f5, -}; /* CR_Katakana */ -#else -static const OnigCodePoint CR_Katakana[] = { - 3, - 0x8ea6, 0x8eaf, /* JIS X 0201 Katakana */ - 0x8eb1, 0x8edd, /* JIS X 0201 Katakana */ - 0xa5a1, 0xa5f6, -}; /* CR_Katakana */ -#endif - -#ifdef ENC_EUC_JIS_2004 -static const OnigCodePoint CR_Han[] = { - /* EUC-JIS-2004 (JIS X 0213:2004) */ - 7, - /* plane 1 */ - 0xa1b8, 0xa1b8, - 0xaea1, 0xfefe, /* Kanji level 1, 2 and 3 */ - /* plane 2 */ - 0x8fa1a1, 0x8fa1fe, /* row 1 */ - 0x8fa3a1, 0x8fa5fe, /* row 3 .. 5 */ - 0x8fa8a1, 0x8fa8fe, /* row 8 */ - 0x8faca1, 0x8faffe, /* row 12 .. 15 */ - 0x8feea1, 0x8ffef6, /* row 78 .. 94 */ -}; /* CR_Han */ -#else -static const OnigCodePoint CR_Han[] = { - /* EUC-JP (JIS X 0208 based) */ - 4, - 0xa1b8, 0xa1b8, - 0xb0a1, 0xcfd3, /* Kanji level 1 */ - 0xd0a1, 0xf4a6, /* Kanji level 2 */ - 0x8fb0a1, 0x8fedf3 /* JIS X 0212 Supplemental Kanji (row 16 .. 77) */ -}; /* CR_Han */ -#endif - -static const OnigCodePoint CR_Latin[] = { - 4, - 0x0041, 0x005a, - 0x0061, 0x007a, - 0xa3c1, 0xa3da, - 0xa3e1, 0xa3fa, - /* TODO: add raw 8 .. 11 to support EUC-JIS-2004 */ - /* TODO: add JIS X 0212 row 9 .. 11 */ -}; /* CR_Latin */ - -static const OnigCodePoint CR_Greek[] = { - 2, - 0xa6a1, 0xa6b8, -#ifdef ENC_EUC_JIS_2004 - 0xa6c1, 0xa6d9, -#else - 0xa6c1, 0xa6d8, - /* TODO: add JIS X 0212 row 6 */ -#endif -}; /* CR_Greek */ - -static const OnigCodePoint CR_Cyrillic[] = { - 2, - 0xa7a1, 0xa7c1, - 0xa7d1, 0xa7f1, - /* TODO: add JIS X 0212 row 7 */ -}; /* CR_Cyrillic */ - -#include "enc/jis/props.h" - -static int -property_name_to_ctype(OnigEncoding enc, const UChar* p, const UChar* end) -{ - const UChar *s = p, *e = end; - const struct enc_property *prop = - onig_jis_property((const char* )s, (unsigned int )(e - s)); - - if (!prop) { - return onigenc_minimum_property_name_to_ctype(enc, s, e); - } - - return (int )prop->ctype; -} - -static int -is_code_ctype(OnigCodePoint code, unsigned int ctype, OnigEncoding enc ARG_UNUSED) -{ - if (ctype <= ONIGENC_MAX_STD_CTYPE) { - if (code < 128) - return ONIGENC_IS_ASCII_CODE_CTYPE(code, ctype); - else { - if (CTYPE_IS_WORD_GRAPH_PRINT(ctype)) { - return (code_to_mbclen(code, enc) > 1 ? TRUE : FALSE); - } - } - } - else { - ctype -= (ONIGENC_MAX_STD_CTYPE + 1); - if (ctype >= (unsigned int )PropertyListNum) - return ONIGERR_TYPE_BUG; - - return onig_is_in_code_range((UChar* )PropertyList[ctype], code); - } - - return FALSE; -} - -static int -get_ctype_code_range(OnigCtype ctype, OnigCodePoint* sb_out, - const OnigCodePoint* ranges[], OnigEncoding enc ARG_UNUSED) -{ - if (ctype <= ONIGENC_MAX_STD_CTYPE) { - return ONIG_NO_SUPPORT_CONFIG; - } - else { - *sb_out = 0x80; - - ctype -= (ONIGENC_MAX_STD_CTYPE + 1); - if (ctype >= (OnigCtype )PropertyListNum) - return ONIGERR_TYPE_BUG; - - *ranges = PropertyList[ctype]; - return 0; - } -} - - -OnigEncodingDefine(euc_jp, EUC_JP) = { - mbc_enc_len, - "EUC-JP", /* name */ - 3, /* max enc length */ - 1, /* min enc length */ - onigenc_is_mbc_newline_0x0a, - mbc_to_code, - code_to_mbclen, - code_to_mbc, - mbc_case_fold, - apply_all_case_fold, - get_case_fold_codes_by_str, - property_name_to_ctype, - is_code_ctype, - get_ctype_code_range, - left_adjust_char_head, - is_allowed_reverse_match, - onigenc_ascii_only_case_map, - 0, - ONIGENC_FLAG_NONE, -}; -/* - * Name: EUC-JP - * MIBenum: 18 - * Link: http://www.iana.org/assignments/character-sets - * Link: http://home.m05.itscom.net/numa/cde/sjis-euc/sjis-euc.html - * Link: http://home.m05.itscom.net/numa/uocjleE.pdf - */ -ENC_ALIAS("eucJP", "EUC-JP") /* UI-OSF Application Platform Profile for Japanese Environment Version 1.1 */ - -/* - * Name: eucJP-ms - * Link: http://home.m05.itscom.net/numa/cde/ucs-conv/ucs-conv.html - * Link: http://www2d.biglobe.ne.jp/~msyk/charcode/cp932/eucJP-ms.html - * Link: http://ja.wikipedia.org/wiki/EUC-JP - */ -ENC_REPLICATE("eucJP-ms", "EUC-JP") /* TOG/JVC CDE/Motif Technical WG */ -ENC_ALIAS("euc-jp-ms", "eucJP-ms") - -/* - * Name: CP51932 - * MIBenum: 2108 - * Link: http://www.iana.org/assignments/charset-reg/CP51932 - * Link: http://search.cpan.org/src/NARUSE/Encode-EUCJPMS-0.07/ucm/cp51932.ucm - * Link: http://legacy-encoding.sourceforge.jp/wiki/index.php?cp51932 - * Link: http://msyk.at.webry.info/200511/article_2.html - */ -ENC_REPLICATE("CP51932", "EUC-JP") - -/* - * Name: EUC-JIS-2004 - * Link: http://ja.wikipedia.org/wiki/EUC-JIS-2004 - */ -ENC_REPLICATE("EUC-JIS-2004", "EUC-JP") /* defined at JIS X 0213:2004 */ -ENC_ALIAS("EUC-JISX0213", "EUC-JIS-2004") /* defined at JIS X 0213:2000, and obsolete at JIS X 0213:2004 */ diff --git a/vendor/onig/enc/euc_tw.c b/vendor/onig/enc/euc_tw.c deleted file mode 100644 index 1c5659c..0000000 --- a/vendor/onig/enc/euc_tw.c +++ /dev/null @@ -1,228 +0,0 @@ -/********************************************************************** - euc_tw.c - Oniguruma (regular expression library) -**********************************************************************/ -/*- - * Copyright (c) 2002-2008 K.Kosako - * 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. - */ - -#include "regenc.h" - -static const int EncLen_EUCTW[] = { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 -}; - -typedef enum { FAILURE = -2, ACCEPT = -1, S0 = 0, S1, S2, S3 } state_t; -#define A ACCEPT -#define F FAILURE -static const signed char trans[][0x100] = { - { /* S0 0 1 2 3 4 5 6 7 8 9 a b c d e f */ - /* 0 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 1 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 2 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 3 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 4 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 5 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 6 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 7 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, 2, F, - /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* a */ F, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* b */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* c */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* d */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* e */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* f */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, F - }, - { /* S1 0 1 2 3 4 5 6 7 8 9 a b c d e f */ - /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* a */ F, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* b */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* c */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* d */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* e */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* f */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, F - }, - { /* S2 0 1 2 3 4 5 6 7 8 9 a b c d e f */ - /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* a */ F, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - /* b */ 3, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* c */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* d */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* e */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* f */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F - }, - { /* S3 0 1 2 3 4 5 6 7 8 9 a b c d e f */ - /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* a */ F, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* b */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* c */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* d */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* e */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* f */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, F - } -}; -#undef A -#undef F - -static int -euctw_mbc_enc_len(const UChar* p, const UChar* e, OnigEncoding enc ARG_UNUSED) -{ - int firstbyte = *p++; - state_t s = trans[0][firstbyte]; -#define RETURN(n) \ - return s == ACCEPT ? ONIGENC_CONSTRUCT_MBCLEN_CHARFOUND(n) : \ - ONIGENC_CONSTRUCT_MBCLEN_INVALID() - if (s < 0) RETURN(1); - if (p == e) return ONIGENC_CONSTRUCT_MBCLEN_NEEDMORE(EncLen_EUCTW[firstbyte]-1); - s = trans[s][*p++]; - if (s < 0) RETURN(2); - if (p == e) return ONIGENC_CONSTRUCT_MBCLEN_NEEDMORE(4-2); - s = trans[s][*p++]; - if (s < 0) RETURN(3); - if (p == e) return ONIGENC_CONSTRUCT_MBCLEN_NEEDMORE(4-3); - s = trans[s][*p++]; - RETURN(4); -#undef RETURN -} - -static OnigCodePoint -euctw_mbc_to_code(const UChar* p, const UChar* end, OnigEncoding enc ARG_UNUSED) -{ - return onigenc_mbn_mbc_to_code(enc, p, end); -} - -static int -euctw_code_to_mbc(OnigCodePoint code, UChar *buf, OnigEncoding enc) -{ - return onigenc_mb4_code_to_mbc(enc, code, buf); -} - -static int -euctw_mbc_case_fold(OnigCaseFoldType flag, const UChar** pp, const UChar* end, - UChar* lower, OnigEncoding enc) -{ - return onigenc_mbn_mbc_case_fold(enc, flag, - pp, end, lower); -} - -static int -euctw_is_code_ctype(OnigCodePoint code, unsigned int ctype, OnigEncoding enc) -{ - return onigenc_mb4_is_code_ctype(enc, code, ctype); -} - -#define euctw_islead(c) ((UChar )((c) - 0xa1) > 0xfe - 0xa1) - -static UChar* -euctw_left_adjust_char_head(const UChar* start, const UChar* s, const UChar* end, OnigEncoding enc) -{ - /* Assumed in this encoding, - mb-trail bytes don't mix with single bytes. - */ - const UChar *p; - int len; - - if (s <= start) return (UChar* )s; - p = s; - - while (!euctw_islead(*p) && p > start) p--; - len = enclen(enc, p, end); - if (p + len > s) return (UChar* )p; - p += len; - return (UChar* )(p + ((s - p) & ~1)); -} - -static int -euctw_is_allowed_reverse_match(const UChar* s, const UChar* end ARG_UNUSED, OnigEncoding enc ARG_UNUSED) -{ - const UChar c = *s; - if (c <= 0x7e) return TRUE; - else return FALSE; -} - -OnigEncodingDefine(euc_tw, EUC_TW) = { - euctw_mbc_enc_len, - "EUC-TW", /* name */ - 4, /* max enc length */ - 1, /* min enc length */ - onigenc_is_mbc_newline_0x0a, - euctw_mbc_to_code, - onigenc_mb4_code_to_mbclen, - euctw_code_to_mbc, - euctw_mbc_case_fold, - onigenc_ascii_apply_all_case_fold, - onigenc_ascii_get_case_fold_codes_by_str, - onigenc_minimum_property_name_to_ctype, - euctw_is_code_ctype, - onigenc_not_support_get_ctype_code_range, - euctw_left_adjust_char_head, - euctw_is_allowed_reverse_match, - onigenc_ascii_only_case_map, - 0, - ONIGENC_FLAG_NONE, -}; -ENC_ALIAS("eucTW", "EUC-TW") diff --git a/vendor/onig/enc/gb2312.c b/vendor/onig/enc/gb2312.c deleted file mode 100644 index 6fc1573..0000000 --- a/vendor/onig/enc/gb2312.c +++ /dev/null @@ -1,13 +0,0 @@ -#include -#include -#include "regenc.h" - -void -Init_gb2312(void) -{ - rb_enc_register("GB2312", rb_enc_find("EUC-KR")); -} - -ENC_ALIAS("EUC-CN", "GB2312") -ENC_ALIAS("eucCN", "GB2312") -ENC_REPLICATE("GB12345", "GB2312") diff --git a/vendor/onig/enc/gbk.c b/vendor/onig/enc/gbk.c deleted file mode 100644 index 3103255..0000000 --- a/vendor/onig/enc/gbk.c +++ /dev/null @@ -1,225 +0,0 @@ -/********************************************************************** - gbk.c - Oniguruma (regular expression library) -**********************************************************************/ -/*- - * Copyright (c) 2002-2007 K.Kosako - * 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. - */ - -#include "regenc.h" - -static const int EncLen_GBK[] = { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 -}; - -static const char GBK_CAN_BE_TRAIL_TABLE[256] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0 -}; - -#define GBK_ISMB_FIRST(byte) (EncLen_GBK[byte] > 1) -#define GBK_ISMB_TRAIL(byte) GBK_CAN_BE_TRAIL_TABLE[(byte)] - -typedef enum { FAILURE = -2, ACCEPT = -1, S0 = 0, S1 } state_t; -#define A ACCEPT -#define F FAILURE -static const signed char trans[][0x100] = { - { /* S0 0 1 2 3 4 5 6 7 8 9 a b c d e f */ - /* 0 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 1 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 2 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 3 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 4 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 5 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 6 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 7 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 8 */ A, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* 9 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* a */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* b */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* c */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* d */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* e */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* f */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, F - }, - { /* S1 0 1 2 3 4 5 6 7 8 9 a b c d e f */ - /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 4 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 5 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 6 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 7 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, F, - /* 8 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 9 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* a */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* b */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* c */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* d */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* e */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* f */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, F - } -}; -#undef A -#undef F - -static int -gbk_mbc_enc_len(const UChar* p, const UChar* e, OnigEncoding enc ARG_UNUSED) -{ - int firstbyte = *p++; - state_t s = trans[0][firstbyte]; -#define RETURN(n) \ - return s == ACCEPT ? ONIGENC_CONSTRUCT_MBCLEN_CHARFOUND(n) : \ - ONIGENC_CONSTRUCT_MBCLEN_INVALID() - if (s < 0) RETURN(1); - if (p == e) return ONIGENC_CONSTRUCT_MBCLEN_NEEDMORE(EncLen_GBK[firstbyte]-1); - s = trans[s][*p++]; - RETURN(2); -#undef RETURN -} - -static OnigCodePoint -gbk_mbc_to_code(const UChar* p, const UChar* end, OnigEncoding enc) -{ - return onigenc_mbn_mbc_to_code(enc, p, end); -} - -static int -gbk_code_to_mbc(OnigCodePoint code, UChar *buf, OnigEncoding enc) -{ - return onigenc_mb2_code_to_mbc(enc, code, buf); -} - -static int -gbk_mbc_case_fold(OnigCaseFoldType flag, const UChar** pp, const UChar* end, - UChar* lower, OnigEncoding enc) -{ - return onigenc_mbn_mbc_case_fold(enc, flag, - pp, end, lower); -} - -#if 0 -static int -gbk_is_mbc_ambiguous(OnigCaseFoldType flag, - const UChar** pp, const UChar* end, OnigEncoding enc) -{ - return onigenc_mbn_is_mbc_ambiguous(enc, flag, pp, end); -} -#endif - -static int -gbk_is_code_ctype(OnigCodePoint code, unsigned int ctype, OnigEncoding enc) -{ - return onigenc_mb2_is_code_ctype(enc, code, ctype); -} - -static UChar* -gbk_left_adjust_char_head(const UChar* start, const UChar* s, const UChar* end, OnigEncoding enc) -{ - const UChar *p; - int len; - - if (s <= start) return (UChar* )s; - p = s; - - if (GBK_ISMB_TRAIL(*p)) { - while (p > start) { - if (! GBK_ISMB_FIRST(*--p)) { - p++; - break; - } - } - } - len = enclen(enc, p, end); - if (p + len > s) return (UChar* )p; - p += len; - return (UChar* )(p + ((s - p) & ~1)); -} - -static int -gbk_is_allowed_reverse_match(const UChar* s, const UChar* end ARG_UNUSED, OnigEncoding enc ARG_UNUSED) -{ - const UChar c = *s; - return (GBK_ISMB_TRAIL(c) ? FALSE : TRUE); -} - -OnigEncodingDefine(gbk, GBK) = { - gbk_mbc_enc_len, - "GBK", /* name */ - 2, /* max enc length */ - 1, /* min enc length */ - onigenc_is_mbc_newline_0x0a, - gbk_mbc_to_code, - onigenc_mb2_code_to_mbclen, - gbk_code_to_mbc, - gbk_mbc_case_fold, - onigenc_ascii_apply_all_case_fold, - onigenc_ascii_get_case_fold_codes_by_str, - onigenc_minimum_property_name_to_ctype, - gbk_is_code_ctype, - onigenc_not_support_get_ctype_code_range, - gbk_left_adjust_char_head, - gbk_is_allowed_reverse_match, - onigenc_ascii_only_case_map, - 0, - ONIGENC_FLAG_NONE, -}; -/* - * Name: GBK - * MIBenum: 113 - * Link: http://www.iana.org/assignments/character-sets - * Link: http://www.iana.org/assignments/charset-reg/GBK - * Link: http://www.microsoft.com/globaldev/reference/dbcs/936.mspx - */ -ENC_ALIAS("CP936", "GBK") diff --git a/vendor/onig/enc/iso_8859.h b/vendor/onig/enc/iso_8859.h deleted file mode 100644 index 0ec1468..0000000 --- a/vendor/onig/enc/iso_8859.h +++ /dev/null @@ -1 +0,0 @@ -#define SHARP_s 0xdf diff --git a/vendor/onig/enc/jis/props.h b/vendor/onig/enc/jis/props.h deleted file mode 100644 index 4ae2e1f..0000000 --- a/vendor/onig/enc/jis/props.h +++ /dev/null @@ -1,227 +0,0 @@ -/* C code produced by gperf version 3.0.4 */ -/* Command-line: gperf -k1,3 -7 -c -j1 -i1 -t -C -P -t --ignore-case -H onig_jis_property_hash -Q onig_jis_property_pool -N onig_jis_property enc/jis/props.kwd */ - -#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ - && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \ - && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \ - && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \ - && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \ - && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \ - && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \ - && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \ - && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \ - && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \ - && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \ - && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \ - && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \ - && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \ - && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \ - && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \ - && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \ - && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \ - && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \ - && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \ - && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \ - && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \ - && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126)) -/* The character set is not based on ISO-646. */ -error "gperf generated tables don't work with this execution character set. Please report a bug to ." -#endif - -#line 1 "enc/jis/props.kwd" -/* -*- c -*- */ -#define GPERF_DOWNCASE 1 -#define GPERF_CASE_STRNCMP 1 - -static inline int -gperf_case_strncmp(const char *s1, const char *s2, unsigned int n) -{ - const UChar *str = (const UChar *)s1; - const UChar *s = (const UChar *)s2; - return onigenc_with_ascii_strnicmp(ONIG_ENCODING_ASCII, str, str + n, s, n); -} - -enum onigenc_jis_ctype { - onigenc_jis_min = ONIGENC_MAX_STD_CTYPE, - onigenc_jis_hiragana, - onigenc_jis_katakana, - onigenc_jis_han, - onigenc_jis_latin, - onigenc_jis_greek, - onigenc_jis_cyrillic, - onigenc_jis_max -}; - -enum {PropertyListNum = onigenc_jis_max - onigenc_jis_min - 1}; - -static const OnigCodePoint* const PropertyList[PropertyListNum] = { - CR_Hiragana, - CR_Katakana, - CR_Han, - CR_Latin, - CR_Greek, - CR_Cyrillic, -}; - -struct enc_property { - signed char name; - unsigned char ctype; -}; - -static const struct enc_property *onig_jis_property(const char *str, unsigned int len); -#line 43 "enc/jis/props.kwd" -struct enc_property; - -#define TOTAL_KEYWORDS 6 -#define MIN_WORD_LENGTH 3 -#define MAX_WORD_LENGTH 8 -#define MIN_HASH_VALUE 5 -#define MAX_HASH_VALUE 12 -/* maximum key range = 8, duplicates = 0 */ - -#ifndef GPERF_DOWNCASE -#define GPERF_DOWNCASE 1 -static unsigned char gperf_downcase[256] = - { - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255 - }; -#endif - -#ifndef GPERF_CASE_STRNCMP -#define GPERF_CASE_STRNCMP 1 -static int -gperf_case_strncmp (s1, s2, n) - register const char *s1; - register const char *s2; - register unsigned int n; -{ - for (; n > 0;) - { - unsigned char c1 = gperf_downcase[(unsigned char)*s1++]; - unsigned char c2 = gperf_downcase[(unsigned char)*s2++]; - if (c1 != 0 && c1 == c2) - { - n--; - continue; - } - return (int)c1 - (int)c2; - } - return 0; -} -#endif - -#if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__cplusplus) || defined(__GNUC_STDC_INLINE__) -inline -#elif defined(__GNUC__) -__inline -#endif -static unsigned int -onig_jis_property_hash (str, len) - register const char *str; - register unsigned int len; -{ - static const unsigned char asso_values[] = - { - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 3, 13, 2, - 13, 1, 1, 13, 13, 2, 1, 13, 1, 13, - 13, 13, 1, 13, 1, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 3, - 13, 2, 13, 1, 1, 13, 13, 2, 1, 13, - 1, 13, 13, 13, 1, 13, 1, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13 - }; - return len + asso_values[(unsigned char)str[2]] + asso_values[(unsigned char)str[0]]; -} - -struct onig_jis_property_pool_t - { - char onig_jis_property_pool_str5[sizeof("han")]; - char onig_jis_property_pool_str7[sizeof("latin")]; - char onig_jis_property_pool_str8[sizeof("greek")]; - char onig_jis_property_pool_str10[sizeof("hiragana")]; - char onig_jis_property_pool_str11[sizeof("katakana")]; - char onig_jis_property_pool_str12[sizeof("cyrillic")]; - }; -static const struct onig_jis_property_pool_t onig_jis_property_pool_contents = - { - "han", - "latin", - "greek", - "hiragana", - "katakana", - "cyrillic" - }; -#define onig_jis_property_pool ((const char *) &onig_jis_property_pool_contents) -#ifdef __GNUC__ -__inline -#if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__ -__attribute__ ((__gnu_inline__)) -#endif -#endif -const struct enc_property * -onig_jis_property (str, len) - register const char *str; - register unsigned int len; -{ - static const struct enc_property wordlist[] = - { - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 48 "enc/jis/props.kwd" - {(char)offsetof(struct onig_jis_property_pool_t, onig_jis_property_pool_str5), onigenc_jis_han}, - {-1}, -#line 49 "enc/jis/props.kwd" - {(char)offsetof(struct onig_jis_property_pool_t, onig_jis_property_pool_str7), onigenc_jis_latin}, -#line 50 "enc/jis/props.kwd" - {(char)offsetof(struct onig_jis_property_pool_t, onig_jis_property_pool_str8), onigenc_jis_greek}, - {-1}, -#line 46 "enc/jis/props.kwd" - {(char)offsetof(struct onig_jis_property_pool_t, onig_jis_property_pool_str10), onigenc_jis_hiragana}, -#line 47 "enc/jis/props.kwd" - {(char)offsetof(struct onig_jis_property_pool_t, onig_jis_property_pool_str11), onigenc_jis_katakana}, -#line 51 "enc/jis/props.kwd" - {(char)offsetof(struct onig_jis_property_pool_t, onig_jis_property_pool_str12), onigenc_jis_cyrillic} - }; - - if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) - { - register int key = onig_jis_property_hash (str, len); - - if (key <= MAX_HASH_VALUE && key >= 0) - { - register int o = wordlist[key].name; - if (o >= 0) - { - register const char *s = o + onig_jis_property_pool; - - if ((((unsigned char)*str ^ (unsigned char)*s) & ~32) == 0 && !gperf_case_strncmp (str, s, len) && s[len] == '\0') - return &wordlist[key]; - } - } - } - return 0; -} -#line 52 "enc/jis/props.kwd" - diff --git a/vendor/onig/enc/jis/props.kwd b/vendor/onig/enc/jis/props.kwd deleted file mode 100644 index f3235c0..0000000 --- a/vendor/onig/enc/jis/props.kwd +++ /dev/null @@ -1,52 +0,0 @@ -%{/* -*- c -*- */ -#define GPERF_DOWNCASE 1 -#define GPERF_CASE_STRNCMP 1 - -static inline int -gperf_case_strncmp(const char *s1, const char *s2, unsigned int n) -{ - const UChar *str = (const UChar *)s1; - const UChar *s = (const UChar *)s2; - return onigenc_with_ascii_strnicmp(ONIG_ENCODING_ASCII, str, str + n, s, n); -} - -enum onigenc_jis_ctype { - onigenc_jis_min = ONIGENC_MAX_STD_CTYPE, - onigenc_jis_hiragana, - onigenc_jis_katakana, - onigenc_jis_han, - onigenc_jis_latin, - onigenc_jis_greek, - onigenc_jis_cyrillic, - onigenc_jis_max -}; - -enum {PropertyListNum = onigenc_jis_max - onigenc_jis_min - 1}; - -static const OnigCodePoint* const PropertyList[PropertyListNum] = { - CR_Hiragana, - CR_Katakana, - CR_Han, - CR_Latin, - CR_Greek, - CR_Cyrillic, -}; - -struct enc_property { - signed char name; - unsigned char ctype; -}; - -static const struct enc_property *onig_jis_property(const char *str, unsigned int len); -%} - -struct enc_property; - -%% -hiragana, onigenc_jis_hiragana -katakana, onigenc_jis_katakana -han, onigenc_jis_han -latin, onigenc_jis_latin -greek, onigenc_jis_greek -cyrillic, onigenc_jis_cyrillic -%% diff --git a/vendor/onig/enc/shift_jis.h b/vendor/onig/enc/shift_jis.h deleted file mode 100644 index d552401..0000000 --- a/vendor/onig/enc/shift_jis.h +++ /dev/null @@ -1,546 +0,0 @@ -/********************************************************************** - shift_jis.h - Onigmo (Oniguruma-mod) (regular expression library) -**********************************************************************/ -/*- - * Copyright (c) 2002-2008 K.Kosako - * Copyright (c) 2011 K.Takata - * 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. - */ - -#include "regenc.h" - -static const int EncLen_SJIS[] = { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 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, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1 -}; - -static const char SJIS_CAN_BE_TRAIL_TABLE[256] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0 -}; - -static const OnigPairCaseFoldCodes CaseFoldMap[] = { - /* Fullwidth Alphabet */ - { 0x8260, 0x8281 }, - { 0x8261, 0x8282 }, - { 0x8262, 0x8283 }, - { 0x8263, 0x8284 }, - { 0x8264, 0x8285 }, - { 0x8265, 0x8286 }, - { 0x8266, 0x8287 }, - { 0x8267, 0x8288 }, - { 0x8268, 0x8289 }, - { 0x8269, 0x828a }, - { 0x826a, 0x828b }, - { 0x826b, 0x828c }, - { 0x826c, 0x828d }, - { 0x826d, 0x828e }, - { 0x826e, 0x828f }, - { 0x826f, 0x8290 }, - { 0x8270, 0x8291 }, - { 0x8271, 0x8292 }, - { 0x8272, 0x8293 }, - { 0x8273, 0x8294 }, - { 0x8274, 0x8295 }, - { 0x8275, 0x8296 }, - { 0x8276, 0x8297 }, - { 0x8277, 0x8298 }, - { 0x8278, 0x8299 }, - { 0x8279, 0x829a }, - - /* Greek */ - { 0x839f, 0x83bf }, - { 0x83a0, 0x83c0 }, - { 0x83a1, 0x83c1 }, - { 0x83a2, 0x83c2 }, - { 0x83a3, 0x83c3 }, - { 0x83a4, 0x83c4 }, - { 0x83a5, 0x83c5 }, - { 0x83a6, 0x83c6 }, - { 0x83a7, 0x83c7 }, - { 0x83a8, 0x83c8 }, - { 0x83a9, 0x83c9 }, - { 0x83aa, 0x83ca }, - { 0x83ab, 0x83cb }, - { 0x83ac, 0x83cc }, - { 0x83ad, 0x83cd }, - { 0x83ae, 0x83ce }, - { 0x83af, 0x83cf }, - { 0x83b0, 0x83d0 }, - { 0x83b1, 0x83d1 }, - { 0x83b2, 0x83d2 }, - { 0x83b3, 0x83d3 }, - { 0x83b4, 0x83d4 }, - { 0x83b5, 0x83d5 }, - { 0x83b6, 0x83d6 }, - - /* Cyrillic */ - { 0x8440, 0x8470 }, - { 0x8441, 0x8471 }, - { 0x8442, 0x8472 }, - { 0x8443, 0x8473 }, - { 0x8444, 0x8474 }, - { 0x8445, 0x8475 }, - { 0x8446, 0x8476 }, - { 0x8447, 0x8477 }, - { 0x8448, 0x8478 }, - { 0x8449, 0x8479 }, - { 0x844a, 0x847a }, - { 0x844b, 0x847b }, - { 0x844c, 0x847c }, - { 0x844d, 0x847d }, - { 0x844e, 0x847e }, - { 0x844f, 0x8480 }, - { 0x8450, 0x8481 }, - { 0x8451, 0x8482 }, - { 0x8452, 0x8483 }, - { 0x8453, 0x8484 }, - { 0x8454, 0x8485 }, - { 0x8455, 0x8486 }, - { 0x8456, 0x8487 }, - { 0x8457, 0x8488 }, - { 0x8458, 0x8489 }, - { 0x8459, 0x848a }, - { 0x845a, 0x848b }, - { 0x845b, 0x848c }, - { 0x845c, 0x848d }, - { 0x845d, 0x848e }, - { 0x845e, 0x848f }, - { 0x845f, 0x8490 }, - { 0x8460, 0x8491 }, -}; - -#define SJIS_ISMB_FIRST(byte) (EncLen_SJIS[byte] > 1) -#define SJIS_ISMB_TRAIL(byte) SJIS_CAN_BE_TRAIL_TABLE[(byte)] - -typedef enum { FAILURE = -2, ACCEPT = -1, S0 = 0, S1 } state_t; -#define A ACCEPT -#define F FAILURE -static const signed char trans[][0x100] = { - { /* S0 0 1 2 3 4 5 6 7 8 9 a b c d e f */ - /* 0 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 1 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 2 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 3 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 4 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 5 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 6 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 7 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 8 */ F, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* 9 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* a */ F, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* b */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* c */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* d */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* e */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* f */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, F, F, F - }, - { /* S1 0 1 2 3 4 5 6 7 8 9 a b c d e f */ - /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 4 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 5 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 6 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 7 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, F, - /* 8 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 9 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* a */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* b */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* c */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* d */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* e */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* f */ A, A, A, A, A, A, A, A, A, A, A, A, A, F, F, F - } -}; -#undef A -#undef F - -static int -mbc_enc_len(const UChar* p, const UChar* e, OnigEncoding enc ARG_UNUSED) -{ - int firstbyte = *p++; - state_t s; - s = trans[0][firstbyte]; - if (s < 0) return s == ACCEPT ? ONIGENC_CONSTRUCT_MBCLEN_CHARFOUND(1) : - ONIGENC_CONSTRUCT_MBCLEN_INVALID(); - if (p == e) return ONIGENC_CONSTRUCT_MBCLEN_NEEDMORE(EncLen_SJIS[firstbyte]-1); - s = trans[s][*p++]; - return s == ACCEPT ? ONIGENC_CONSTRUCT_MBCLEN_CHARFOUND(2) : - ONIGENC_CONSTRUCT_MBCLEN_INVALID(); -} - -static int -code_to_mbclen(OnigCodePoint code, OnigEncoding enc ARG_UNUSED) -{ - if (code < 256) { - if (EncLen_SJIS[(int )code] == 1) - return 1; - else - return ONIGERR_INVALID_CODE_POINT_VALUE; - } - else if (code <= 0xffff) { - int low = code & 0xff; - if (! SJIS_ISMB_TRAIL(low)) - return ONIGERR_INVALID_CODE_POINT_VALUE; - return 2; - } - else - return ONIGERR_TOO_BIG_WIDE_CHAR_VALUE; -} - -static OnigCodePoint -mbc_to_code(const UChar* p, const UChar* end, OnigEncoding enc) -{ - int c, i, len; - OnigCodePoint n; - - len = mbc_enc_len(p, end, enc); - c = *p++; - n = c; - if (len == 1) return n; - - for (i = 1; i < len; i++) { - if (p >= end) break; - c = *p++; - n <<= 8; n += c; - } - return n; -} - -static int -code_to_mbc(OnigCodePoint code, UChar *buf, OnigEncoding enc) -{ - UChar *p = buf; - - if ((code & 0xff00) != 0) *p++ = (UChar )(((code >> 8) & 0xff)); - *p++ = (UChar )(code & 0xff); - -#if 0 - if (mbc_enc_len(buf, p, enc) != (p - buf)) - return REGERR_INVALID_CODE_POINT_VALUE; -#endif - return (int )(p - buf); -} - -static int -apply_all_case_fold(OnigCaseFoldType flag, - OnigApplyAllCaseFoldFunc f, void* arg, OnigEncoding enc) -{ - return onigenc_apply_all_case_fold_with_map( - numberof(CaseFoldMap), CaseFoldMap, 0, - flag, f, arg); -} - -static OnigCodePoint -get_lower_case(OnigCodePoint code) -{ - if (ONIGENC_IS_IN_RANGE(code, 0x8260, 0x8279)) { - /* Fullwidth Alphabet */ - return (OnigCodePoint )(code + 0x0021); - } - else if (ONIGENC_IS_IN_RANGE(code, 0x839f, 0x83b6)) { - /* Greek */ - return (OnigCodePoint )(code + 0x0020); - } - else if (ONIGENC_IS_IN_RANGE(code, 0x8440, 0x8460)) { - /* Cyrillic */ - int d = (code >= 0x844f) ? 1 : 0; - return (OnigCodePoint )(code + (0x0030 + d)); - } - return code; -} - -static OnigCodePoint -get_upper_case(OnigCodePoint code) -{ - if (ONIGENC_IS_IN_RANGE(code, 0x8281, 0x829a)) { - /* Fullwidth Alphabet */ - return (OnigCodePoint )(code - 0x0021); - } - else if (ONIGENC_IS_IN_RANGE(code, 0x83bf, 0x83d6)) { - /* Greek */ - return (OnigCodePoint )(code - 0x0020); - } - else if (ONIGENC_IS_IN_RANGE(code, 0x8470, 0x847e) || - ONIGENC_IS_IN_RANGE(code, 0x8480, 0x8491)) { - /* Cyrillic */ - int d = (code >= 0x8480) ? 1 : 0; - return (OnigCodePoint )(code - (0x0030 - d)); - } - return code; -} - -static int -get_case_fold_codes_by_str(OnigCaseFoldType flag, - const OnigUChar* p, const OnigUChar* end, - OnigCaseFoldCodeItem items[], OnigEncoding enc) -{ - int len; - OnigCodePoint code, code_lo, code_up; - - code = mbc_to_code(p, end, enc); - if (ONIGENC_IS_ASCII_CODE(code)) - return onigenc_ascii_get_case_fold_codes_by_str(flag, p, end, items, enc); - - len = mbc_enc_len(p, end, enc); - code_lo = get_lower_case(code); - code_up = get_upper_case(code); - - if (code != code_lo) { - items[0].byte_len = len; - items[0].code_len = 1; - items[0].code[0] = code_lo; - return 1; - } - else if (code != code_up) { - items[0].byte_len = len; - items[0].code_len = 1; - items[0].code[0] = code_up; - return 1; - } - - return 0; -} - -static int -mbc_case_fold(OnigCaseFoldType flag, - const UChar** pp, const UChar* end, UChar* lower, - OnigEncoding enc) -{ - const UChar* p = *pp; - - if (ONIGENC_IS_MBC_ASCII(p)) { - *lower = ONIGENC_ASCII_CODE_TO_LOWER_CASE(*p); - (*pp)++; - return 1; - } - else { - OnigCodePoint code; - int len; - - code = get_lower_case(mbc_to_code(p, end, enc)); - len = code_to_mbc(code, lower, enc); - (*pp) += len; - return len; /* return byte length of converted char to lower */ - } -} - -#if 0 -static int -is_mbc_ambiguous(OnigCaseFoldType flag, - const UChar** pp, const UChar* end) -{ - return onigenc_mbn_is_mbc_ambiguous(enc, flag, pp, end); - -} -#endif - -#if 0 -static int -is_code_ctype(OnigCodePoint code, unsigned int ctype) -{ - if (code < 128) - return ONIGENC_IS_ASCII_CODE_CTYPE(code, ctype); - else { - if (CTYPE_IS_WORD_GRAPH_PRINT(ctype)) { - return (code_to_mbclen(code) > 1 ? TRUE : FALSE); - } - } - - return FALSE; -} -#endif - -static UChar* -left_adjust_char_head(const UChar* start, const UChar* s, const UChar* end, OnigEncoding enc) -{ - const UChar *p; - int len; - - if (s <= start) return (UChar* )s; - p = s; - - if (SJIS_ISMB_TRAIL(*p)) { - while (p > start) { - if (! SJIS_ISMB_FIRST(*--p)) { - p++; - break; - } - } - } - len = mbc_enc_len(p, end, enc); - if (p + len > s) return (UChar* )p; - p += len; - return (UChar* )(p + ((s - p) & ~1)); -} - -static int -is_allowed_reverse_match(const UChar* s, const UChar* end, OnigEncoding enc ARG_UNUSED) -{ - const UChar c = *s; - return (SJIS_ISMB_TRAIL(c) ? FALSE : TRUE); -} - - -static const OnigCodePoint CR_Hiragana[] = { - 1, - 0x829f, 0x82f1 -}; /* CR_Hiragana */ - -static const OnigCodePoint CR_Katakana[] = { - 4, - 0x00a6, 0x00af, - 0x00b1, 0x00dd, - 0x8340, 0x837e, - 0x8380, 0x8396, -}; /* CR_Katakana */ - -#ifdef ENC_CP932 -static const OnigCodePoint CR_Han[] = { - 6, - 0x8157, 0x8157, - 0x889f, 0x9872, /* Kanji level 1 */ - 0x989f, 0x9ffc, /* Kanji level 2 */ - 0xe040, 0xeaa4, /* Kanji level 2 */ - 0xed40, 0xeeec, /* NEC-selected IBM extended characters (without symbols) */ - 0xfa5c, 0xfc4b, /* IBM extended characters (without symbols) */ -}; /* CR_Han */ -#else -static const OnigCodePoint CR_Han[] = { - 4, - 0x8157, 0x8157, - 0x889f, 0x9872, /* Kanji level 1 */ - 0x989f, 0x9ffc, /* Kanji level 2 */ - 0xe040, 0xeaa4, /* Kanji level 2 */ -}; /* CR_Han */ -#endif - -static const OnigCodePoint CR_Latin[] = { - 4, - 0x0041, 0x005a, - 0x0061, 0x007a, - 0x8260, 0x8279, - 0x8281, 0x829a, -}; /* CR_Latin */ - -static const OnigCodePoint CR_Greek[] = { - 2, - 0x839f, 0x83b6, - 0x83bf, 0x83d6, -}; /* CR_Greek */ - -static const OnigCodePoint CR_Cyrillic[] = { - 3, - 0x8440, 0x8460, - 0x8470, 0x847f, - 0x8480, 0x8491, -}; /* CR_Cyrillic */ - -#include "enc/jis/props.h" - -static int -property_name_to_ctype(OnigEncoding enc, const UChar* p, const UChar* end) -{ - const UChar *s = p, *e = end; - const struct enc_property *prop = - onig_jis_property((const char* )s, (unsigned int )(e - s)); - - if (!prop) { - return onigenc_minimum_property_name_to_ctype(enc, s, e); - } - - return (int )prop->ctype; -} - -static int -is_code_ctype(OnigCodePoint code, unsigned int ctype, OnigEncoding enc) -{ - if (ctype <= ONIGENC_MAX_STD_CTYPE) { - if (code < 128) - return ONIGENC_IS_ASCII_CODE_CTYPE(code, ctype); - else { - if (CTYPE_IS_WORD_GRAPH_PRINT(ctype)) { - return TRUE; - } - } - } - else { - ctype -= (ONIGENC_MAX_STD_CTYPE + 1); - if (ctype >= (unsigned int )PropertyListNum) - return ONIGERR_TYPE_BUG; - - return onig_is_in_code_range((UChar* )PropertyList[ctype], code); - } - - return FALSE; -} - -static int -get_ctype_code_range(OnigCtype ctype, OnigCodePoint* sb_out, - const OnigCodePoint* ranges[], OnigEncoding enc ARG_UNUSED) -{ - if (ctype <= ONIGENC_MAX_STD_CTYPE) { - return ONIG_NO_SUPPORT_CONFIG; - } - else { - *sb_out = 0x80; - - ctype -= (ONIGENC_MAX_STD_CTYPE + 1); - if (ctype >= (OnigCtype )PropertyListNum) - return ONIGERR_TYPE_BUG; - - *ranges = PropertyList[ctype]; - return 0; - } -} diff --git a/vendor/onig/enc/unicode.c b/vendor/onig/enc/unicode.c deleted file mode 100644 index 72ff5a9..0000000 --- a/vendor/onig/enc/unicode.c +++ /dev/null @@ -1,805 +0,0 @@ -/********************************************************************** - unicode.c - Oniguruma (regular expression library) -**********************************************************************/ -/*- - * Copyright (c) 2002-2013 K.Kosako - * 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. - */ - -#include "regint.h" - -#define ONIGENC_IS_UNICODE_ISO_8859_1_CTYPE(code,ctype) \ - ((EncUNICODE_ISO_8859_1_CtypeTable[code] & CTYPE_TO_BIT(ctype)) != 0) -#if 0 -#define ONIGENC_IS_UNICODE_ISO_8859_1_BIT_CTYPE(code,cbit) \ - ((EncUNICODE_ISO_8859_1_CtypeTable[code] & (cbit)) != 0) -#endif - -static const unsigned short EncUNICODE_ISO_8859_1_CtypeTable[256] = { - 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, - 0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008, - 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, - 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, - 0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, - 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, - 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, - 0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, - 0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2, - 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, - 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, - 0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0, - 0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2, - 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, - 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, - 0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008, - 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0288, 0x0008, 0x0008, - 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, - 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, - 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, - 0x0284, 0x01a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, - 0x00a0, 0x00a0, 0x30e2, 0x01a0, 0x00a0, 0x00a8, 0x00a0, 0x00a0, - 0x00a0, 0x00a0, 0x10a0, 0x10a0, 0x00a0, 0x30e2, 0x00a0, 0x01a0, - 0x00a0, 0x10a0, 0x30e2, 0x01a0, 0x10a0, 0x10a0, 0x10a0, 0x01a0, - 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, - 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, - 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x00a0, - 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x30e2, - 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, - 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, - 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x00a0, - 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2 -}; - -typedef struct { - int n; - OnigCodePoint code[3]; -} CodePointList3; - -typedef struct { - OnigCodePoint from; - CodePointList3 to; -} CaseFold_11_Type; - -typedef struct { - OnigCodePoint from; - CodePointList3 to; -} CaseUnfold_11_Type; - -typedef struct { - int n; - OnigCodePoint code[2]; -} CodePointList2; - -typedef struct { - OnigCodePoint from[2]; - CodePointList2 to; -} CaseUnfold_12_Type; - -typedef struct { - OnigCodePoint from[3]; - CodePointList2 to; -} CaseUnfold_13_Type; - -static inline int -bits_of(const OnigCodePoint c, const int n) -{ - return (c >> (2 - n) * 7) & 127; -} - -static inline int -bits_at(const OnigCodePoint *c, const int n) -{ - return bits_of(c[n / 3], n % 3); -} - -static int -code1_equal(const OnigCodePoint x, const OnigCodePoint y) -{ - if (x != y) return 0; - return 1; -} - -static int -code2_equal(const OnigCodePoint *x, const OnigCodePoint *y) -{ - if (x[0] != y[0]) return 0; - if (x[1] != y[1]) return 0; - return 1; -} - -static int -code3_equal(const OnigCodePoint *x, const OnigCodePoint *y) -{ - if (x[0] != y[0]) return 0; - if (x[1] != y[1]) return 0; - if (x[2] != y[2]) return 0; - return 1; -} - -/* macros related to ONIGENC_CASE flags */ -/* defined here because not used in other files */ -#define ONIGENC_CASE_SPECIALS (ONIGENC_CASE_TITLECASE | ONIGENC_CASE_IS_TITLECASE | ONIGENC_CASE_UP_SPECIAL | ONIGENC_CASE_DOWN_SPECIAL) - -/* macros for length in CaseMappingSpecials array in enc/unicode/casefold.h */ -#define SpecialsLengthOffset 25 /* needs to be higher than the 22 bits used for Unicode codepoints */ -#define SpecialsLengthExtract(n) ((n) >> SpecialsLengthOffset) -#define SpecialsCodepointExtract(n) ((n) & ((1 << SpecialsLengthOffset) - 1)) -#define SpecialsLengthEncode(n) ((n) << SpecialsLengthOffset) - -#define OnigSpecialIndexMask (((1 << OnigSpecialIndexWidth) - 1) << OnigSpecialIndexShift) -#define OnigSpecialIndexEncode(n) ((n) << OnigSpecialIndexShift) -#define OnigSpecialIndexDecode(n) (((n) & OnigSpecialIndexMask) >> OnigSpecialIndexShift) - -/* macros to shorten "enc/unicode/casefold.h", undefined immediately after including the file */ -#define U ONIGENC_CASE_UPCASE -#define D ONIGENC_CASE_DOWNCASE -#define F ONIGENC_CASE_FOLD -#define ST ONIGENC_CASE_TITLECASE -#define SU ONIGENC_CASE_UP_SPECIAL -#define SL ONIGENC_CASE_DOWN_SPECIAL -#define IT ONIGENC_CASE_IS_TITLECASE -#define I(n) OnigSpecialIndexEncode(n) -#define L(n) SpecialsLengthEncode(n) - -#include "casefold.h" - -#undef U -#undef D -#undef F -#undef ST -#undef SU -#undef SL -#undef IT -#undef I -#undef L - -#include "name2ctype.h" - -#define CODE_RANGES_NUM numberof(CodeRanges) - -extern int -onigenc_unicode_is_code_ctype(OnigCodePoint code, unsigned int ctype, OnigEncoding enc ARG_UNUSED) -{ - 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) { - return ONIGERR_TYPE_BUG; - } - - return onig_is_in_code_range((UChar* )CodeRanges[ctype], code); -} - - -extern int -onigenc_unicode_ctype_code_range(int ctype, const OnigCodePoint* ranges[]) -{ - if (ctype >= CODE_RANGES_NUM) { - 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[], - OnigEncoding enc ARG_UNUSED) -{ - *sb_out = 0x00; - return onigenc_unicode_ctype_code_range(ctype, ranges); -} - -#define PROPERTY_NAME_MAX_SIZE (MAX_WORD_LENGTH + 1) - -extern int -onigenc_unicode_property_name_to_ctype(OnigEncoding enc, const UChar* name, const UChar* end) -{ - int len; - int ctype; - UChar buf[PROPERTY_NAME_MAX_SIZE]; - const UChar *p; - OnigCodePoint code; - - len = 0; - for (p = name; p < end; p += enclen(enc, p, end)) { - code = ONIGENC_MBC_TO_CODE(enc, p, end); - if (code == ' ' || code == '-' || code == '_') - continue; - if (code >= 0x80) - return ONIGERR_INVALID_CHAR_PROPERTY_NAME; - - buf[len++] = ONIGENC_ASCII_CODE_TO_LOWER_CASE(code); - if (len >= PROPERTY_NAME_MAX_SIZE) - return ONIGERR_INVALID_CHAR_PROPERTY_NAME; - } - - buf[len] = 0; - - if ((ctype = uniname2ctype(buf, len)) < 0) { - return ONIGERR_INVALID_CHAR_PROPERTY_NAME; - } - - return ctype; -} - -#define onigenc_unicode_fold_lookup onigenc_unicode_CaseFold_11_lookup -#define onigenc_unicode_unfold1_lookup onigenc_unicode_CaseUnfold_11_lookup -#define onigenc_unicode_unfold2_lookup onigenc_unicode_CaseUnfold_12_lookup -#define onigenc_unicode_unfold3_lookup onigenc_unicode_CaseUnfold_13_lookup - -enum { - I_WITH_DOT_ABOVE = 0x0130, - DOTLESS_i = 0x0131, - DOT_ABOVE = 0x0307 -}; - -extern int -onigenc_unicode_mbc_case_fold(OnigEncoding enc, - OnigCaseFoldType flag ARG_UNUSED, const UChar** pp, const UChar* end, - UChar* fold) -{ - const CodePointList3 *to; - OnigCodePoint code; - int i, len, rlen; - const UChar *p = *pp; - - code = ONIGENC_MBC_TO_CODE(enc, p, end); - len = enclen(enc, p, end); - *pp += len; - -#ifdef USE_UNICODE_CASE_FOLD_TURKISH_AZERI - if ((flag & ONIGENC_CASE_FOLD_TURKISH_AZERI) != 0) { - if (code == 'I') { - return ONIGENC_CODE_TO_MBC(enc, DOTLESS_i, fold); - } - else if (code == I_WITH_DOT_ABOVE) { - return ONIGENC_CODE_TO_MBC(enc, 'i', fold); - } - } -#endif - - if ((to = onigenc_unicode_fold_lookup(code)) != 0) { - if (OnigCodePointCount(to->n) == 1) { - return ONIGENC_CODE_TO_MBC(enc, to->code[0], fold); - } -#if 0 - /* NO NEEDS TO CHECK */ - else if ((flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) -#else - else -#endif - { - rlen = 0; - for (i = 0; i < OnigCodePointCount(to->n); i++) { - len = ONIGENC_CODE_TO_MBC(enc, to->code[i], fold); - fold += len; - rlen += len; - } - return rlen; - } - } - - for (i = 0; i < len; i++) { - *fold++ = *p++; - } - return len; -} - -extern int -onigenc_unicode_apply_all_case_fold(OnigCaseFoldType flag, - OnigApplyAllCaseFoldFunc f, void* arg, - OnigEncoding enc ARG_UNUSED) -{ - const CaseUnfold_11_Type* p11; - OnigCodePoint code; - int i, j, k, r; - - for (i = 0; i < numberof(CaseUnfold_11); i++) { - p11 = &CaseUnfold_11[i]; - for (j = 0; j < OnigCodePointCount(p11->to.n); j++) { - code = p11->from; - r = (*f)(p11->to.code[j], &code, 1, arg); - if (r != 0) return r; - - code = p11->to.code[j]; - r = (*f)(p11->from, &code, 1, arg); - if (r != 0) return r; - - for (k = 0; k < j; k++) { - r = (*f)(p11->to.code[j], (OnigCodePoint* )(&p11->to.code[k]), 1, arg); - if (r != 0) return r; - - r = (*f)(p11->to.code[k], (OnigCodePoint* )(&p11->to.code[j]), 1, arg); - if (r != 0) return r; - } - } - } - -#ifdef USE_UNICODE_CASE_FOLD_TURKISH_AZERI - if ((flag & ONIGENC_CASE_FOLD_TURKISH_AZERI) != 0) { - code = DOTLESS_i; - r = (*f)('I', &code, 1, arg); - if (r != 0) return r; - code = 'I'; - r = (*f)(DOTLESS_i, &code, 1, arg); - if (r != 0) return r; - - code = I_WITH_DOT_ABOVE; - r = (*f)('i', &code, 1, arg); - if (r != 0) return r; - code = 'i'; - r = (*f)(I_WITH_DOT_ABOVE, &code, 1, arg); - if (r != 0) return r; - } - else { -#endif - for (i = 0; i < numberof(CaseUnfold_11_Locale); i++) { - p11 = &CaseUnfold_11_Locale[i]; - for (j = 0; j < OnigCodePointCount(p11->to.n); j++) { - code = p11->from; - r = (*f)(p11->to.code[j], &code, 1, arg); - if (r != 0) return r; - - code = p11->to.code[j]; - r = (*f)(p11->from, &code, 1, arg); - if (r != 0) return r; - - for (k = 0; k < j; k++) { - r = (*f)(p11->to.code[j], (OnigCodePoint* )(&p11->to.code[k]), - 1, arg); - if (r != 0) return r; - - r = (*f)(p11->to.code[k], (OnigCodePoint* )(&p11->to.code[j]), - 1, arg); - if (r != 0) return r; - } - } - } -#ifdef USE_UNICODE_CASE_FOLD_TURKISH_AZERI - } -#endif - - if ((flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { - for (i = 0; i < numberof(CaseUnfold_12); i++) { - for (j = 0; j < OnigCodePointCount(CaseUnfold_12[i].to.n); j++) { - r = (*f)(CaseUnfold_12[i].to.code[j], - (OnigCodePoint* )CaseUnfold_12[i].from, 2, arg); - if (r != 0) return r; - - for (k = 0; k < OnigCodePointCount(CaseUnfold_12[i].to.n); k++) { - if (k == j) continue; - - r = (*f)(CaseUnfold_12[i].to.code[j], - (OnigCodePoint* )(&CaseUnfold_12[i].to.code[k]), 1, arg); - if (r != 0) return r; - } - } - } - -#ifdef USE_UNICODE_CASE_FOLD_TURKISH_AZERI - if ((flag & ONIGENC_CASE_FOLD_TURKISH_AZERI) == 0) { -#endif - for (i = 0; i < numberof(CaseUnfold_12_Locale); i++) { - for (j = 0; j < OnigCodePointCount(CaseUnfold_12_Locale[i].to.n); j++) { - r = (*f)(CaseUnfold_12_Locale[i].to.code[j], - (OnigCodePoint* )CaseUnfold_12_Locale[i].from, 2, arg); - if (r != 0) return r; - - for (k = 0; k < OnigCodePointCount(CaseUnfold_12_Locale[i].to.n); k++) { - if (k == j) continue; - - r = (*f)(CaseUnfold_12_Locale[i].to.code[j], - (OnigCodePoint* )(&CaseUnfold_12_Locale[i].to.code[k]), - 1, arg); - if (r != 0) return r; - } - } - } -#ifdef USE_UNICODE_CASE_FOLD_TURKISH_AZERI - } -#endif - - for (i = 0; i < numberof(CaseUnfold_13); i++) { - for (j = 0; j < OnigCodePointCount(CaseUnfold_13[i].to.n); j++) { - r = (*f)(CaseUnfold_13[i].to.code[j], - (OnigCodePoint* )CaseUnfold_13[i].from, 3, arg); - if (r != 0) return r; - - for (k = 0; k < OnigCodePointCount(CaseUnfold_13[i].to.n); k++) { - if (k == j) continue; - - r = (*f)(CaseUnfold_13[i].to.code[j], - (OnigCodePoint* )(&CaseUnfold_13[i].to.code[k]), 1, arg); - if (r != 0) return r; - } - } - } - } - - return 0; -} - -#define CodePointListValidP(x) (OnigCodePointCount((x)->n) <= numberof((x)->code)) - -extern int -onigenc_unicode_get_case_fold_codes_by_str(OnigEncoding enc, - OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, - OnigCaseFoldCodeItem items[]) -{ - int n, i, j, k, len; - OnigCodePoint code, codes[3]; - const CodePointList3 *to, *z3; - const CodePointList2 *z2; - - n = 0; - - code = ONIGENC_MBC_TO_CODE(enc, p, end); - len = enclen(enc, p, end); - -#ifdef USE_UNICODE_CASE_FOLD_TURKISH_AZERI - if ((flag & ONIGENC_CASE_FOLD_TURKISH_AZERI) != 0) { - switch (code) { - case 'I': - items[0].byte_len = len; - items[0].code_len = 1; - items[0].code[0] = DOTLESS_i; - return 1; - case I_WITH_DOT_ABOVE: - items[0].byte_len = len; - items[0].code_len = 1; - items[0].code[0] = 'i'; - return 1; - case DOTLESS_i: - items[0].byte_len = len; - items[0].code_len = 1; - items[0].code[0] = 'I'; - return 1; - case 'i': - items[0].byte_len = len; - items[0].code_len = 1; - items[0].code[0] = I_WITH_DOT_ABOVE; - return 1; - } - } -#endif - - if ((to = onigenc_unicode_fold_lookup(code)) != 0) { - if (OnigCodePointCount(to->n) == 1) { - OnigCodePoint orig_code = code; - - items[0].byte_len = len; - items[0].code_len = 1; - items[0].code[0] = to->code[0]; - n++; - - code = to->code[0]; - if ((to = onigenc_unicode_unfold1_lookup(code)) != 0 && - CodePointListValidP(to)) { - for (i = 0; i < OnigCodePointCount(to->n); i++) { - if (to->code[i] != orig_code) { - items[n].byte_len = len; - items[n].code_len = 1; - items[n].code[0] = to->code[i]; - n++; - } - } - } - } - else if ((flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { - OnigCodePoint cs[3][4]; - int fn, ncs[3]; - - for (fn = 0; fn < OnigCodePointCount(to->n); fn++) { - cs[fn][0] = to->code[fn]; - if ((z3 = onigenc_unicode_unfold1_lookup(cs[fn][0])) != 0) { - for (i = 0; i < OnigCodePointCount(z3->n); i++) { - cs[fn][i+1] = z3->code[i]; - } - ncs[fn] = OnigCodePointCount(z3->n) + 1; - } - else - ncs[fn] = 1; - } - - if (fn == 2) { - for (i = 0; i < ncs[0]; i++) { - for (j = 0; j < ncs[1]; j++) { - items[n].byte_len = len; - items[n].code_len = 2; - items[n].code[0] = cs[0][i]; - items[n].code[1] = cs[1][j]; - n++; - } - } - - if ((z2 = onigenc_unicode_unfold2_lookup(to->code)) != 0 && - CodePointListValidP(z2)) { - for (i = 0; i < OnigCodePointCount(z2->n); i++) { - if (z2->code[i] == code) continue; - - items[n].byte_len = len; - items[n].code_len = 1; - items[n].code[0] = z2->code[i]; - n++; - } - } - } - else { - for (i = 0; i < ncs[0]; i++) { - for (j = 0; j < ncs[1]; j++) { - for (k = 0; k < ncs[2]; k++) { - items[n].byte_len = len; - items[n].code_len = 3; - items[n].code[0] = cs[0][i]; - items[n].code[1] = cs[1][j]; - items[n].code[2] = cs[2][k]; - n++; - } - } - } - - if ((z2 = onigenc_unicode_unfold3_lookup(to->code)) != 0 && - CodePointListValidP(z2)) { - for (i = 0; i < OnigCodePointCount(z2->n); i++) { - if (z2->code[i] == code) continue; - - items[n].byte_len = len; - items[n].code_len = 1; - items[n].code[0] = z2->code[i]; - n++; - } - } - } - - /* multi char folded code is not head of another folded multi char */ - flag = 0; /* DISABLE_CASE_FOLD_MULTI_CHAR(flag); */ - } - } - else { - if ((to = onigenc_unicode_unfold1_lookup(code)) != 0 && - CodePointListValidP(to)) { - for (i = 0; i < OnigCodePointCount(to->n); i++) { - items[n].byte_len = len; - items[n].code_len = 1; - items[n].code[0] = to->code[i]; - n++; - } - } - } - - - if ((flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { - p += len; - if (p < end) { - int clen; - - codes[0] = code; - code = ONIGENC_MBC_TO_CODE(enc, p, end); - if ((to = onigenc_unicode_fold_lookup(code)) != 0 - && OnigCodePointCount(to->n) == 1) { - codes[1] = to->code[0]; - } - else - codes[1] = code; - - clen = enclen(enc, p, end); - len += clen; - if ((z2 = onigenc_unicode_unfold2_lookup(codes)) != 0 && - CodePointListValidP(z2)) { - for (i = 0; i < OnigCodePointCount(z2->n); i++) { - items[n].byte_len = len; - items[n].code_len = 1; - items[n].code[0] = z2->code[i]; - n++; - } - } - - p += clen; - if (p < end) { - code = ONIGENC_MBC_TO_CODE(enc, p, end); - if ((to = onigenc_unicode_fold_lookup(code)) != 0 - && OnigCodePointCount(to->n) == 1) { - codes[2] = to->code[0]; - } - else - codes[2] = code; - - clen = enclen(enc, p, end); - len += clen; - if ((z2 = onigenc_unicode_unfold3_lookup(codes)) != 0 && - CodePointListValidP(z2)) { - for (i = 0; i < OnigCodePointCount(z2->n); i++) { - items[n].byte_len = len; - items[n].code_len = 1; - items[n].code[0] = z2->code[i]; - n++; - } - } - } - } - } - - return n; -} - -/* length in bytes for three characters in UTF-32; e.g. needed for ffi (U+FB03) */ -#define CASE_MAPPING_SLACK 12 -#define MODIFIED (flags |= ONIGENC_CASE_MODIFIED) -extern int -onigenc_unicode_case_map(OnigCaseFoldType* flagP, - const OnigUChar** pp, const OnigUChar* end, - OnigUChar* to, OnigUChar* to_end, - const struct OnigEncodingTypeST* enc) -{ - OnigCodePoint code; - OnigUChar *to_start = to; - OnigCaseFoldType flags = *flagP; - int codepoint_length; - - to_end -= CASE_MAPPING_SLACK; - /* copy flags ONIGENC_CASE_UPCASE and ONIGENC_CASE_DOWNCASE over to - * ONIGENC_CASE_UP_SPECIAL and ONIGENC_CASE_DOWN_SPECIAL */ - flags |= (flags & (ONIGENC_CASE_UPCASE | ONIGENC_CASE_DOWNCASE)) << ONIGENC_CASE_SPECIAL_OFFSET; - - while (*pp < end && to <= to_end) { - codepoint_length = ONIGENC_PRECISE_MBC_ENC_LEN(enc, *pp, end); - if (codepoint_length < 0) - return codepoint_length; /* encoding invalid */ - code = ONIGENC_MBC_TO_CODE(enc, *pp, end); - *pp += codepoint_length; - - if (code <= 'z') { /* ASCII comes first */ - if (code >= 'a' && code <= 'z') { - if (flags & ONIGENC_CASE_UPCASE) { - MODIFIED; - if (flags & ONIGENC_CASE_FOLD_TURKISH_AZERI && code == 'i') - code = I_WITH_DOT_ABOVE; - else - code += 'A' - 'a'; - } - } - else if (code >= 'A' && code <= 'Z') { - if (flags & (ONIGENC_CASE_DOWNCASE | ONIGENC_CASE_FOLD)) { - MODIFIED; - if (flags & ONIGENC_CASE_FOLD_TURKISH_AZERI && code == 'I') - code = DOTLESS_i; - else - code += 'a' - 'A'; - } - } - } - else if (!(flags & ONIGENC_CASE_ASCII_ONLY) && code >= 0x00B5) { /* deal with non-ASCII; micron sign (U+00B5) is lowest affected */ - const CodePointList3 *folded; - - if (code == I_WITH_DOT_ABOVE) { - if (flags & (ONIGENC_CASE_DOWNCASE | ONIGENC_CASE_FOLD)) { - MODIFIED; - code = 'i'; - if (!(flags & ONIGENC_CASE_FOLD_TURKISH_AZERI)) { /* make dot above explicit */ - to += ONIGENC_CODE_TO_MBC(enc, code, to); - code = DOT_ABOVE; - } - } - } - else if (code == DOTLESS_i) { /* handle this manually, because it isn't involved in folding */ - if (flags & ONIGENC_CASE_UPCASE) { - MODIFIED; - code = 'I'; - } - } - else if ((folded = onigenc_unicode_fold_lookup(code)) != 0) { /* data about character found in CaseFold_11_Table */ - if ((flags & ONIGENC_CASE_TITLECASE) /* Titlecase needed, */ - && (OnigCaseFoldFlags(folded->n) & ONIGENC_CASE_IS_TITLECASE)) { /* but already Titlecase */ - /* already Titlecase, no changes needed */ - } - else if (flags & OnigCaseFoldFlags(folded->n)) { /* needs and data availability match */ - const OnigCodePoint *next; - int count; - - MODIFIED; - if (flags & OnigCaseFoldFlags(folded->n) & ONIGENC_CASE_SPECIALS) { /* special */ - const OnigCodePoint *SpecialsStart = CaseMappingSpecials + OnigSpecialIndexDecode(folded->n); - - if (OnigCaseFoldFlags(folded->n) & ONIGENC_CASE_IS_TITLECASE) { /* swapCASE available */ - if ((flags & (ONIGENC_CASE_UPCASE | ONIGENC_CASE_DOWNCASE)) - == (ONIGENC_CASE_UPCASE | ONIGENC_CASE_DOWNCASE)) /* swapCASE needed */ - goto SpecialsCopy; - else /* swapCASE not needed */ - SpecialsStart += SpecialsLengthExtract(*SpecialsStart); - } - if (OnigCaseFoldFlags(folded->n) & ONIGENC_CASE_TITLECASE) { /* Titlecase available */ - if (flags & ONIGENC_CASE_TITLECASE) /* Titlecase needed, but not yet Titlecase */ - goto SpecialsCopy; - else /* Titlecase not needed */ - SpecialsStart += SpecialsLengthExtract(*SpecialsStart); - } - if (OnigCaseFoldFlags(folded->n) & ONIGENC_CASE_DOWN_SPECIAL) { - if (!(flags & ONIGENC_CASE_DOWN_SPECIAL)) - SpecialsStart += SpecialsLengthExtract(*SpecialsStart); - } - /* here, we know we use ONIGENC_CASE_UP_SPECIAL, and the position is right */ -SpecialsCopy: - count = SpecialsLengthExtract(*SpecialsStart); - next = SpecialsStart; - code = SpecialsCodepointExtract(*next++); - } - else { /* no specials */ - count = OnigCodePointCount(folded->n); - next = folded->code; - code = *next++; - } - if (count == 1) - ; - else if (count == 2) { - to += ONIGENC_CODE_TO_MBC(enc, code, to); - code = *next; - } - else { /* count == 3 */ - to += ONIGENC_CODE_TO_MBC(enc, code, to); - to += ONIGENC_CODE_TO_MBC(enc, *next++, to); - code = *next; - } - } - } - else if ((folded = onigenc_unicode_unfold1_lookup(code)) != 0 /* data about character found in CaseUnfold_11_Table */ - && flags & OnigCaseFoldFlags(folded->n)) { /* needs and data availability match */ - MODIFIED; - code = folded->code[(flags & OnigCaseFoldFlags(folded->n) & ONIGENC_CASE_TITLECASE) ? 1 : 0]; - } - } - to += ONIGENC_CODE_TO_MBC(enc, code, to); - /* switch from titlecase to lowercase for capitalize */ - if (flags & ONIGENC_CASE_TITLECASE) - flags ^= (ONIGENC_CASE_UPCASE | ONIGENC_CASE_DOWNCASE | ONIGENC_CASE_TITLECASE | - ONIGENC_CASE_UP_SPECIAL | ONIGENC_CASE_DOWN_SPECIAL); - } - *flagP = flags; - return (int )(to - to_start); -} - -#if 0 -const char onigenc_unicode_version_string[] = -#ifdef ONIG_UNICODE_VERSION_STRING - ONIG_UNICODE_VERSION_STRING -#endif - ""; - -const int onigenc_unicode_version_number[3] = { -#ifdef ONIG_UNICODE_VERSION_MAJOR - ONIG_UNICODE_VERSION_MAJOR, - ONIG_UNICODE_VERSION_MINOR, - ONIG_UNICODE_VERSION_TEENY, -#else - 0 -#endif -}; -#endif diff --git a/vendor/onig/enc/unicode/casefold.h b/vendor/onig/enc/unicode/casefold.h deleted file mode 100644 index 2df4d15..0000000 --- a/vendor/onig/enc/unicode/casefold.h +++ /dev/null @@ -1,7068 +0,0 @@ -/* DO NOT EDIT THIS FILE. */ -/* Generated by tool/case-folding.rb */ - -#if defined ONIG_UNICODE_VERSION_STRING && !( \ - ONIG_UNICODE_VERSION_MAJOR == 9 && \ - ONIG_UNICODE_VERSION_MINOR == 0 && \ - ONIG_UNICODE_VERSION_TEENY == 0 && \ - 1) -# error ONIG_UNICODE_VERSION_STRING mismatch -#endif -#define ONIG_UNICODE_VERSION_STRING "9.0.0" -#define ONIG_UNICODE_VERSION_MAJOR 9 -#define ONIG_UNICODE_VERSION_MINOR 0 -#define ONIG_UNICODE_VERSION_TEENY 0 - -static const CaseFold_11_Type CaseFold_11_Table[] = { -#define CaseFold (*(CaseFold_11_Type (*)[1399])(CaseFold_11_Table+0)) - {0x0041, {1|F|D, {0x0061}}}, - {0x0042, {1|F|D, {0x0062}}}, - {0x0043, {1|F|D, {0x0063}}}, - {0x0044, {1|F|D, {0x0064}}}, - {0x0045, {1|F|D, {0x0065}}}, - {0x0046, {1|F|D, {0x0066}}}, - {0x0047, {1|F|D, {0x0067}}}, - {0x0048, {1|F|D, {0x0068}}}, - {0x004a, {1|F|D, {0x006a}}}, - {0x004b, {1|F|D, {0x006b}}}, - {0x004c, {1|F|D, {0x006c}}}, - {0x004d, {1|F|D, {0x006d}}}, - {0x004e, {1|F|D, {0x006e}}}, - {0x004f, {1|F|D, {0x006f}}}, - {0x0050, {1|F|D, {0x0070}}}, - {0x0051, {1|F|D, {0x0071}}}, - {0x0052, {1|F|D, {0x0072}}}, - {0x0053, {1|F|D, {0x0073}}}, - {0x0054, {1|F|D, {0x0074}}}, - {0x0055, {1|F|D, {0x0075}}}, - {0x0056, {1|F|D, {0x0076}}}, - {0x0057, {1|F|D, {0x0077}}}, - {0x0058, {1|F|D, {0x0078}}}, - {0x0059, {1|F|D, {0x0079}}}, - {0x005a, {1|F|D, {0x007a}}}, - {0x00b5, {1|F|SU|I(0), {0x03bc}}}, - {0x00c0, {1|F|D, {0x00e0}}}, - {0x00c1, {1|F|D, {0x00e1}}}, - {0x00c2, {1|F|D, {0x00e2}}}, - {0x00c3, {1|F|D, {0x00e3}}}, - {0x00c4, {1|F|D, {0x00e4}}}, - {0x00c5, {1|F|D, {0x00e5}}}, - {0x00c6, {1|F|D, {0x00e6}}}, - {0x00c7, {1|F|D, {0x00e7}}}, - {0x00c8, {1|F|D, {0x00e8}}}, - {0x00c9, {1|F|D, {0x00e9}}}, - {0x00ca, {1|F|D, {0x00ea}}}, - {0x00cb, {1|F|D, {0x00eb}}}, - {0x00cc, {1|F|D, {0x00ec}}}, - {0x00cd, {1|F|D, {0x00ed}}}, - {0x00ce, {1|F|D, {0x00ee}}}, - {0x00cf, {1|F|D, {0x00ef}}}, - {0x00d0, {1|F|D, {0x00f0}}}, - {0x00d1, {1|F|D, {0x00f1}}}, - {0x00d2, {1|F|D, {0x00f2}}}, - {0x00d3, {1|F|D, {0x00f3}}}, - {0x00d4, {1|F|D, {0x00f4}}}, - {0x00d5, {1|F|D, {0x00f5}}}, - {0x00d6, {1|F|D, {0x00f6}}}, - {0x00d8, {1|F|D, {0x00f8}}}, - {0x00d9, {1|F|D, {0x00f9}}}, - {0x00da, {1|F|D, {0x00fa}}}, - {0x00db, {1|F|D, {0x00fb}}}, - {0x00dc, {1|F|D, {0x00fc}}}, - {0x00dd, {1|F|D, {0x00fd}}}, - {0x00de, {1|F|D, {0x00fe}}}, - {0x00df, {2|F|ST|SU|I(1), {0x0073, 0x0073}}}, - {0x0100, {1|F|D, {0x0101}}}, - {0x0102, {1|F|D, {0x0103}}}, - {0x0104, {1|F|D, {0x0105}}}, - {0x0106, {1|F|D, {0x0107}}}, - {0x0108, {1|F|D, {0x0109}}}, - {0x010a, {1|F|D, {0x010b}}}, - {0x010c, {1|F|D, {0x010d}}}, - {0x010e, {1|F|D, {0x010f}}}, - {0x0110, {1|F|D, {0x0111}}}, - {0x0112, {1|F|D, {0x0113}}}, - {0x0114, {1|F|D, {0x0115}}}, - {0x0116, {1|F|D, {0x0117}}}, - {0x0118, {1|F|D, {0x0119}}}, - {0x011a, {1|F|D, {0x011b}}}, - {0x011c, {1|F|D, {0x011d}}}, - {0x011e, {1|F|D, {0x011f}}}, - {0x0120, {1|F|D, {0x0121}}}, - {0x0122, {1|F|D, {0x0123}}}, - {0x0124, {1|F|D, {0x0125}}}, - {0x0126, {1|F|D, {0x0127}}}, - {0x0128, {1|F|D, {0x0129}}}, - {0x012a, {1|F|D, {0x012b}}}, - {0x012c, {1|F|D, {0x012d}}}, - {0x012e, {1|F|D, {0x012f}}}, - {0x0132, {1|F|D, {0x0133}}}, - {0x0134, {1|F|D, {0x0135}}}, - {0x0136, {1|F|D, {0x0137}}}, - {0x0139, {1|F|D, {0x013a}}}, - {0x013b, {1|F|D, {0x013c}}}, - {0x013d, {1|F|D, {0x013e}}}, - {0x013f, {1|F|D, {0x0140}}}, - {0x0141, {1|F|D, {0x0142}}}, - {0x0143, {1|F|D, {0x0144}}}, - {0x0145, {1|F|D, {0x0146}}}, - {0x0147, {1|F|D, {0x0148}}}, - {0x0149, {2|F|SU|I(5), {0x02bc, 0x006e}}}, - {0x014a, {1|F|D, {0x014b}}}, - {0x014c, {1|F|D, {0x014d}}}, - {0x014e, {1|F|D, {0x014f}}}, - {0x0150, {1|F|D, {0x0151}}}, - {0x0152, {1|F|D, {0x0153}}}, - {0x0154, {1|F|D, {0x0155}}}, - {0x0156, {1|F|D, {0x0157}}}, - {0x0158, {1|F|D, {0x0159}}}, - {0x015a, {1|F|D, {0x015b}}}, - {0x015c, {1|F|D, {0x015d}}}, - {0x015e, {1|F|D, {0x015f}}}, - {0x0160, {1|F|D, {0x0161}}}, - {0x0162, {1|F|D, {0x0163}}}, - {0x0164, {1|F|D, {0x0165}}}, - {0x0166, {1|F|D, {0x0167}}}, - {0x0168, {1|F|D, {0x0169}}}, - {0x016a, {1|F|D, {0x016b}}}, - {0x016c, {1|F|D, {0x016d}}}, - {0x016e, {1|F|D, {0x016f}}}, - {0x0170, {1|F|D, {0x0171}}}, - {0x0172, {1|F|D, {0x0173}}}, - {0x0174, {1|F|D, {0x0175}}}, - {0x0176, {1|F|D, {0x0177}}}, - {0x0178, {1|F|D, {0x00ff}}}, - {0x0179, {1|F|D, {0x017a}}}, - {0x017b, {1|F|D, {0x017c}}}, - {0x017d, {1|F|D, {0x017e}}}, - {0x017f, {1|F|SU|I(7), {0x0073}}}, - {0x0181, {1|F|D, {0x0253}}}, - {0x0182, {1|F|D, {0x0183}}}, - {0x0184, {1|F|D, {0x0185}}}, - {0x0186, {1|F|D, {0x0254}}}, - {0x0187, {1|F|D, {0x0188}}}, - {0x0189, {1|F|D, {0x0256}}}, - {0x018a, {1|F|D, {0x0257}}}, - {0x018b, {1|F|D, {0x018c}}}, - {0x018e, {1|F|D, {0x01dd}}}, - {0x018f, {1|F|D, {0x0259}}}, - {0x0190, {1|F|D, {0x025b}}}, - {0x0191, {1|F|D, {0x0192}}}, - {0x0193, {1|F|D, {0x0260}}}, - {0x0194, {1|F|D, {0x0263}}}, - {0x0196, {1|F|D, {0x0269}}}, - {0x0197, {1|F|D, {0x0268}}}, - {0x0198, {1|F|D, {0x0199}}}, - {0x019c, {1|F|D, {0x026f}}}, - {0x019d, {1|F|D, {0x0272}}}, - {0x019f, {1|F|D, {0x0275}}}, - {0x01a0, {1|F|D, {0x01a1}}}, - {0x01a2, {1|F|D, {0x01a3}}}, - {0x01a4, {1|F|D, {0x01a5}}}, - {0x01a6, {1|F|D, {0x0280}}}, - {0x01a7, {1|F|D, {0x01a8}}}, - {0x01a9, {1|F|D, {0x0283}}}, - {0x01ac, {1|F|D, {0x01ad}}}, - {0x01ae, {1|F|D, {0x0288}}}, - {0x01af, {1|F|D, {0x01b0}}}, - {0x01b1, {1|F|D, {0x028a}}}, - {0x01b2, {1|F|D, {0x028b}}}, - {0x01b3, {1|F|D, {0x01b4}}}, - {0x01b5, {1|F|D, {0x01b6}}}, - {0x01b7, {1|F|D, {0x0292}}}, - {0x01b8, {1|F|D, {0x01b9}}}, - {0x01bc, {1|F|D, {0x01bd}}}, - {0x01c4, {1|F|D|ST|I(8), {0x01c6}}}, - {0x01c5, {1|F|D|IT|SU|I(9), {0x01c6}}}, - {0x01c7, {1|F|D|ST|I(12), {0x01c9}}}, - {0x01c8, {1|F|D|IT|SU|I(13), {0x01c9}}}, - {0x01ca, {1|F|D|ST|I(16), {0x01cc}}}, - {0x01cb, {1|F|D|IT|SU|I(17), {0x01cc}}}, - {0x01cd, {1|F|D, {0x01ce}}}, - {0x01cf, {1|F|D, {0x01d0}}}, - {0x01d1, {1|F|D, {0x01d2}}}, - {0x01d3, {1|F|D, {0x01d4}}}, - {0x01d5, {1|F|D, {0x01d6}}}, - {0x01d7, {1|F|D, {0x01d8}}}, - {0x01d9, {1|F|D, {0x01da}}}, - {0x01db, {1|F|D, {0x01dc}}}, - {0x01de, {1|F|D, {0x01df}}}, - {0x01e0, {1|F|D, {0x01e1}}}, - {0x01e2, {1|F|D, {0x01e3}}}, - {0x01e4, {1|F|D, {0x01e5}}}, - {0x01e6, {1|F|D, {0x01e7}}}, - {0x01e8, {1|F|D, {0x01e9}}}, - {0x01ea, {1|F|D, {0x01eb}}}, - {0x01ec, {1|F|D, {0x01ed}}}, - {0x01ee, {1|F|D, {0x01ef}}}, - {0x01f0, {2|F|SU|I(20), {0x006a, 0x030c}}}, - {0x01f1, {1|F|D|ST|I(22), {0x01f3}}}, - {0x01f2, {1|F|D|IT|SU|I(23), {0x01f3}}}, - {0x01f4, {1|F|D, {0x01f5}}}, - {0x01f6, {1|F|D, {0x0195}}}, - {0x01f7, {1|F|D, {0x01bf}}}, - {0x01f8, {1|F|D, {0x01f9}}}, - {0x01fa, {1|F|D, {0x01fb}}}, - {0x01fc, {1|F|D, {0x01fd}}}, - {0x01fe, {1|F|D, {0x01ff}}}, - {0x0200, {1|F|D, {0x0201}}}, - {0x0202, {1|F|D, {0x0203}}}, - {0x0204, {1|F|D, {0x0205}}}, - {0x0206, {1|F|D, {0x0207}}}, - {0x0208, {1|F|D, {0x0209}}}, - {0x020a, {1|F|D, {0x020b}}}, - {0x020c, {1|F|D, {0x020d}}}, - {0x020e, {1|F|D, {0x020f}}}, - {0x0210, {1|F|D, {0x0211}}}, - {0x0212, {1|F|D, {0x0213}}}, - {0x0214, {1|F|D, {0x0215}}}, - {0x0216, {1|F|D, {0x0217}}}, - {0x0218, {1|F|D, {0x0219}}}, - {0x021a, {1|F|D, {0x021b}}}, - {0x021c, {1|F|D, {0x021d}}}, - {0x021e, {1|F|D, {0x021f}}}, - {0x0220, {1|F|D, {0x019e}}}, - {0x0222, {1|F|D, {0x0223}}}, - {0x0224, {1|F|D, {0x0225}}}, - {0x0226, {1|F|D, {0x0227}}}, - {0x0228, {1|F|D, {0x0229}}}, - {0x022a, {1|F|D, {0x022b}}}, - {0x022c, {1|F|D, {0x022d}}}, - {0x022e, {1|F|D, {0x022f}}}, - {0x0230, {1|F|D, {0x0231}}}, - {0x0232, {1|F|D, {0x0233}}}, - {0x023a, {1|F|D, {0x2c65}}}, - {0x023b, {1|F|D, {0x023c}}}, - {0x023d, {1|F|D, {0x019a}}}, - {0x023e, {1|F|D, {0x2c66}}}, - {0x0241, {1|F|D, {0x0242}}}, - {0x0243, {1|F|D, {0x0180}}}, - {0x0244, {1|F|D, {0x0289}}}, - {0x0245, {1|F|D, {0x028c}}}, - {0x0246, {1|F|D, {0x0247}}}, - {0x0248, {1|F|D, {0x0249}}}, - {0x024a, {1|F|D, {0x024b}}}, - {0x024c, {1|F|D, {0x024d}}}, - {0x024e, {1|F|D, {0x024f}}}, - {0x0345, {1|F|SU|I(26), {0x03b9}}}, - {0x0370, {1|F|D, {0x0371}}}, - {0x0372, {1|F|D, {0x0373}}}, - {0x0376, {1|F|D, {0x0377}}}, - {0x037f, {1|F|D, {0x03f3}}}, - {0x0386, {1|F|D, {0x03ac}}}, - {0x0388, {1|F|D, {0x03ad}}}, - {0x0389, {1|F|D, {0x03ae}}}, - {0x038a, {1|F|D, {0x03af}}}, - {0x038c, {1|F|D, {0x03cc}}}, - {0x038e, {1|F|D, {0x03cd}}}, - {0x038f, {1|F|D, {0x03ce}}}, - {0x0390, {3|F|SU|I(27), {0x03b9, 0x0308, 0x0301}}}, - {0x0391, {1|F|D, {0x03b1}}}, - {0x0392, {1|F|D, {0x03b2}}}, - {0x0393, {1|F|D, {0x03b3}}}, - {0x0394, {1|F|D, {0x03b4}}}, - {0x0395, {1|F|D, {0x03b5}}}, - {0x0396, {1|F|D, {0x03b6}}}, - {0x0397, {1|F|D, {0x03b7}}}, - {0x0398, {1|F|D, {0x03b8}}}, - {0x0399, {1|F|D, {0x03b9}}}, - {0x039a, {1|F|D, {0x03ba}}}, - {0x039b, {1|F|D, {0x03bb}}}, - {0x039c, {1|F|D, {0x03bc}}}, - {0x039d, {1|F|D, {0x03bd}}}, - {0x039e, {1|F|D, {0x03be}}}, - {0x039f, {1|F|D, {0x03bf}}}, - {0x03a0, {1|F|D, {0x03c0}}}, - {0x03a1, {1|F|D, {0x03c1}}}, - {0x03a3, {1|F|D, {0x03c3}}}, - {0x03a4, {1|F|D, {0x03c4}}}, - {0x03a5, {1|F|D, {0x03c5}}}, - {0x03a6, {1|F|D, {0x03c6}}}, - {0x03a7, {1|F|D, {0x03c7}}}, - {0x03a8, {1|F|D, {0x03c8}}}, - {0x03a9, {1|F|D, {0x03c9}}}, - {0x03aa, {1|F|D, {0x03ca}}}, - {0x03ab, {1|F|D, {0x03cb}}}, - {0x03b0, {3|F|SU|I(30), {0x03c5, 0x0308, 0x0301}}}, - {0x03c2, {1|F|SU|I(33), {0x03c3}}}, - {0x03cf, {1|F|D, {0x03d7}}}, - {0x03d0, {1|F|SU|I(34), {0x03b2}}}, - {0x03d1, {1|F|SU|I(35), {0x03b8}}}, - {0x03d5, {1|F|SU|I(36), {0x03c6}}}, - {0x03d6, {1|F|SU|I(37), {0x03c0}}}, - {0x03d8, {1|F|D, {0x03d9}}}, - {0x03da, {1|F|D, {0x03db}}}, - {0x03dc, {1|F|D, {0x03dd}}}, - {0x03de, {1|F|D, {0x03df}}}, - {0x03e0, {1|F|D, {0x03e1}}}, - {0x03e2, {1|F|D, {0x03e3}}}, - {0x03e4, {1|F|D, {0x03e5}}}, - {0x03e6, {1|F|D, {0x03e7}}}, - {0x03e8, {1|F|D, {0x03e9}}}, - {0x03ea, {1|F|D, {0x03eb}}}, - {0x03ec, {1|F|D, {0x03ed}}}, - {0x03ee, {1|F|D, {0x03ef}}}, - {0x03f0, {1|F|SU|I(38), {0x03ba}}}, - {0x03f1, {1|F|SU|I(39), {0x03c1}}}, - {0x03f4, {1|F|D, {0x03b8}}}, - {0x03f5, {1|F|SU|I(40), {0x03b5}}}, - {0x03f7, {1|F|D, {0x03f8}}}, - {0x03f9, {1|F|D, {0x03f2}}}, - {0x03fa, {1|F|D, {0x03fb}}}, - {0x03fd, {1|F|D, {0x037b}}}, - {0x03fe, {1|F|D, {0x037c}}}, - {0x03ff, {1|F|D, {0x037d}}}, - {0x0400, {1|F|D, {0x0450}}}, - {0x0401, {1|F|D, {0x0451}}}, - {0x0402, {1|F|D, {0x0452}}}, - {0x0403, {1|F|D, {0x0453}}}, - {0x0404, {1|F|D, {0x0454}}}, - {0x0405, {1|F|D, {0x0455}}}, - {0x0406, {1|F|D, {0x0456}}}, - {0x0407, {1|F|D, {0x0457}}}, - {0x0408, {1|F|D, {0x0458}}}, - {0x0409, {1|F|D, {0x0459}}}, - {0x040a, {1|F|D, {0x045a}}}, - {0x040b, {1|F|D, {0x045b}}}, - {0x040c, {1|F|D, {0x045c}}}, - {0x040d, {1|F|D, {0x045d}}}, - {0x040e, {1|F|D, {0x045e}}}, - {0x040f, {1|F|D, {0x045f}}}, - {0x0410, {1|F|D, {0x0430}}}, - {0x0411, {1|F|D, {0x0431}}}, - {0x0412, {1|F|D, {0x0432}}}, - {0x0413, {1|F|D, {0x0433}}}, - {0x0414, {1|F|D, {0x0434}}}, - {0x0415, {1|F|D, {0x0435}}}, - {0x0416, {1|F|D, {0x0436}}}, - {0x0417, {1|F|D, {0x0437}}}, - {0x0418, {1|F|D, {0x0438}}}, - {0x0419, {1|F|D, {0x0439}}}, - {0x041a, {1|F|D, {0x043a}}}, - {0x041b, {1|F|D, {0x043b}}}, - {0x041c, {1|F|D, {0x043c}}}, - {0x041d, {1|F|D, {0x043d}}}, - {0x041e, {1|F|D, {0x043e}}}, - {0x041f, {1|F|D, {0x043f}}}, - {0x0420, {1|F|D, {0x0440}}}, - {0x0421, {1|F|D, {0x0441}}}, - {0x0422, {1|F|D, {0x0442}}}, - {0x0423, {1|F|D, {0x0443}}}, - {0x0424, {1|F|D, {0x0444}}}, - {0x0425, {1|F|D, {0x0445}}}, - {0x0426, {1|F|D, {0x0446}}}, - {0x0427, {1|F|D, {0x0447}}}, - {0x0428, {1|F|D, {0x0448}}}, - {0x0429, {1|F|D, {0x0449}}}, - {0x042a, {1|F|D, {0x044a}}}, - {0x042b, {1|F|D, {0x044b}}}, - {0x042c, {1|F|D, {0x044c}}}, - {0x042d, {1|F|D, {0x044d}}}, - {0x042e, {1|F|D, {0x044e}}}, - {0x042f, {1|F|D, {0x044f}}}, - {0x0460, {1|F|D, {0x0461}}}, - {0x0462, {1|F|D, {0x0463}}}, - {0x0464, {1|F|D, {0x0465}}}, - {0x0466, {1|F|D, {0x0467}}}, - {0x0468, {1|F|D, {0x0469}}}, - {0x046a, {1|F|D, {0x046b}}}, - {0x046c, {1|F|D, {0x046d}}}, - {0x046e, {1|F|D, {0x046f}}}, - {0x0470, {1|F|D, {0x0471}}}, - {0x0472, {1|F|D, {0x0473}}}, - {0x0474, {1|F|D, {0x0475}}}, - {0x0476, {1|F|D, {0x0477}}}, - {0x0478, {1|F|D, {0x0479}}}, - {0x047a, {1|F|D, {0x047b}}}, - {0x047c, {1|F|D, {0x047d}}}, - {0x047e, {1|F|D, {0x047f}}}, - {0x0480, {1|F|D, {0x0481}}}, - {0x048a, {1|F|D, {0x048b}}}, - {0x048c, {1|F|D, {0x048d}}}, - {0x048e, {1|F|D, {0x048f}}}, - {0x0490, {1|F|D, {0x0491}}}, - {0x0492, {1|F|D, {0x0493}}}, - {0x0494, {1|F|D, {0x0495}}}, - {0x0496, {1|F|D, {0x0497}}}, - {0x0498, {1|F|D, {0x0499}}}, - {0x049a, {1|F|D, {0x049b}}}, - {0x049c, {1|F|D, {0x049d}}}, - {0x049e, {1|F|D, {0x049f}}}, - {0x04a0, {1|F|D, {0x04a1}}}, - {0x04a2, {1|F|D, {0x04a3}}}, - {0x04a4, {1|F|D, {0x04a5}}}, - {0x04a6, {1|F|D, {0x04a7}}}, - {0x04a8, {1|F|D, {0x04a9}}}, - {0x04aa, {1|F|D, {0x04ab}}}, - {0x04ac, {1|F|D, {0x04ad}}}, - {0x04ae, {1|F|D, {0x04af}}}, - {0x04b0, {1|F|D, {0x04b1}}}, - {0x04b2, {1|F|D, {0x04b3}}}, - {0x04b4, {1|F|D, {0x04b5}}}, - {0x04b6, {1|F|D, {0x04b7}}}, - {0x04b8, {1|F|D, {0x04b9}}}, - {0x04ba, {1|F|D, {0x04bb}}}, - {0x04bc, {1|F|D, {0x04bd}}}, - {0x04be, {1|F|D, {0x04bf}}}, - {0x04c0, {1|F|D, {0x04cf}}}, - {0x04c1, {1|F|D, {0x04c2}}}, - {0x04c3, {1|F|D, {0x04c4}}}, - {0x04c5, {1|F|D, {0x04c6}}}, - {0x04c7, {1|F|D, {0x04c8}}}, - {0x04c9, {1|F|D, {0x04ca}}}, - {0x04cb, {1|F|D, {0x04cc}}}, - {0x04cd, {1|F|D, {0x04ce}}}, - {0x04d0, {1|F|D, {0x04d1}}}, - {0x04d2, {1|F|D, {0x04d3}}}, - {0x04d4, {1|F|D, {0x04d5}}}, - {0x04d6, {1|F|D, {0x04d7}}}, - {0x04d8, {1|F|D, {0x04d9}}}, - {0x04da, {1|F|D, {0x04db}}}, - {0x04dc, {1|F|D, {0x04dd}}}, - {0x04de, {1|F|D, {0x04df}}}, - {0x04e0, {1|F|D, {0x04e1}}}, - {0x04e2, {1|F|D, {0x04e3}}}, - {0x04e4, {1|F|D, {0x04e5}}}, - {0x04e6, {1|F|D, {0x04e7}}}, - {0x04e8, {1|F|D, {0x04e9}}}, - {0x04ea, {1|F|D, {0x04eb}}}, - {0x04ec, {1|F|D, {0x04ed}}}, - {0x04ee, {1|F|D, {0x04ef}}}, - {0x04f0, {1|F|D, {0x04f1}}}, - {0x04f2, {1|F|D, {0x04f3}}}, - {0x04f4, {1|F|D, {0x04f5}}}, - {0x04f6, {1|F|D, {0x04f7}}}, - {0x04f8, {1|F|D, {0x04f9}}}, - {0x04fa, {1|F|D, {0x04fb}}}, - {0x04fc, {1|F|D, {0x04fd}}}, - {0x04fe, {1|F|D, {0x04ff}}}, - {0x0500, {1|F|D, {0x0501}}}, - {0x0502, {1|F|D, {0x0503}}}, - {0x0504, {1|F|D, {0x0505}}}, - {0x0506, {1|F|D, {0x0507}}}, - {0x0508, {1|F|D, {0x0509}}}, - {0x050a, {1|F|D, {0x050b}}}, - {0x050c, {1|F|D, {0x050d}}}, - {0x050e, {1|F|D, {0x050f}}}, - {0x0510, {1|F|D, {0x0511}}}, - {0x0512, {1|F|D, {0x0513}}}, - {0x0514, {1|F|D, {0x0515}}}, - {0x0516, {1|F|D, {0x0517}}}, - {0x0518, {1|F|D, {0x0519}}}, - {0x051a, {1|F|D, {0x051b}}}, - {0x051c, {1|F|D, {0x051d}}}, - {0x051e, {1|F|D, {0x051f}}}, - {0x0520, {1|F|D, {0x0521}}}, - {0x0522, {1|F|D, {0x0523}}}, - {0x0524, {1|F|D, {0x0525}}}, - {0x0526, {1|F|D, {0x0527}}}, - {0x0528, {1|F|D, {0x0529}}}, - {0x052a, {1|F|D, {0x052b}}}, - {0x052c, {1|F|D, {0x052d}}}, - {0x052e, {1|F|D, {0x052f}}}, - {0x0531, {1|F|D, {0x0561}}}, - {0x0532, {1|F|D, {0x0562}}}, - {0x0533, {1|F|D, {0x0563}}}, - {0x0534, {1|F|D, {0x0564}}}, - {0x0535, {1|F|D, {0x0565}}}, - {0x0536, {1|F|D, {0x0566}}}, - {0x0537, {1|F|D, {0x0567}}}, - {0x0538, {1|F|D, {0x0568}}}, - {0x0539, {1|F|D, {0x0569}}}, - {0x053a, {1|F|D, {0x056a}}}, - {0x053b, {1|F|D, {0x056b}}}, - {0x053c, {1|F|D, {0x056c}}}, - {0x053d, {1|F|D, {0x056d}}}, - {0x053e, {1|F|D, {0x056e}}}, - {0x053f, {1|F|D, {0x056f}}}, - {0x0540, {1|F|D, {0x0570}}}, - {0x0541, {1|F|D, {0x0571}}}, - {0x0542, {1|F|D, {0x0572}}}, - {0x0543, {1|F|D, {0x0573}}}, - {0x0544, {1|F|D, {0x0574}}}, - {0x0545, {1|F|D, {0x0575}}}, - {0x0546, {1|F|D, {0x0576}}}, - {0x0547, {1|F|D, {0x0577}}}, - {0x0548, {1|F|D, {0x0578}}}, - {0x0549, {1|F|D, {0x0579}}}, - {0x054a, {1|F|D, {0x057a}}}, - {0x054b, {1|F|D, {0x057b}}}, - {0x054c, {1|F|D, {0x057c}}}, - {0x054d, {1|F|D, {0x057d}}}, - {0x054e, {1|F|D, {0x057e}}}, - {0x054f, {1|F|D, {0x057f}}}, - {0x0550, {1|F|D, {0x0580}}}, - {0x0551, {1|F|D, {0x0581}}}, - {0x0552, {1|F|D, {0x0582}}}, - {0x0553, {1|F|D, {0x0583}}}, - {0x0554, {1|F|D, {0x0584}}}, - {0x0555, {1|F|D, {0x0585}}}, - {0x0556, {1|F|D, {0x0586}}}, - {0x0587, {2|F|ST|SU|I(41), {0x0565, 0x0582}}}, - {0x10a0, {1|F|D, {0x2d00}}}, - {0x10a1, {1|F|D, {0x2d01}}}, - {0x10a2, {1|F|D, {0x2d02}}}, - {0x10a3, {1|F|D, {0x2d03}}}, - {0x10a4, {1|F|D, {0x2d04}}}, - {0x10a5, {1|F|D, {0x2d05}}}, - {0x10a6, {1|F|D, {0x2d06}}}, - {0x10a7, {1|F|D, {0x2d07}}}, - {0x10a8, {1|F|D, {0x2d08}}}, - {0x10a9, {1|F|D, {0x2d09}}}, - {0x10aa, {1|F|D, {0x2d0a}}}, - {0x10ab, {1|F|D, {0x2d0b}}}, - {0x10ac, {1|F|D, {0x2d0c}}}, - {0x10ad, {1|F|D, {0x2d0d}}}, - {0x10ae, {1|F|D, {0x2d0e}}}, - {0x10af, {1|F|D, {0x2d0f}}}, - {0x10b0, {1|F|D, {0x2d10}}}, - {0x10b1, {1|F|D, {0x2d11}}}, - {0x10b2, {1|F|D, {0x2d12}}}, - {0x10b3, {1|F|D, {0x2d13}}}, - {0x10b4, {1|F|D, {0x2d14}}}, - {0x10b5, {1|F|D, {0x2d15}}}, - {0x10b6, {1|F|D, {0x2d16}}}, - {0x10b7, {1|F|D, {0x2d17}}}, - {0x10b8, {1|F|D, {0x2d18}}}, - {0x10b9, {1|F|D, {0x2d19}}}, - {0x10ba, {1|F|D, {0x2d1a}}}, - {0x10bb, {1|F|D, {0x2d1b}}}, - {0x10bc, {1|F|D, {0x2d1c}}}, - {0x10bd, {1|F|D, {0x2d1d}}}, - {0x10be, {1|F|D, {0x2d1e}}}, - {0x10bf, {1|F|D, {0x2d1f}}}, - {0x10c0, {1|F|D, {0x2d20}}}, - {0x10c1, {1|F|D, {0x2d21}}}, - {0x10c2, {1|F|D, {0x2d22}}}, - {0x10c3, {1|F|D, {0x2d23}}}, - {0x10c4, {1|F|D, {0x2d24}}}, - {0x10c5, {1|F|D, {0x2d25}}}, - {0x10c7, {1|F|D, {0x2d27}}}, - {0x10cd, {1|F|D, {0x2d2d}}}, - {0x13f8, {1|F|U, {0x13f0}}}, - {0x13f9, {1|F|U, {0x13f1}}}, - {0x13fa, {1|F|U, {0x13f2}}}, - {0x13fb, {1|F|U, {0x13f3}}}, - {0x13fc, {1|F|U, {0x13f4}}}, - {0x13fd, {1|F|U, {0x13f5}}}, - {0x1c80, {1|F|SU|I(45), {0x0432}}}, - {0x1c81, {1|F|SU|I(46), {0x0434}}}, - {0x1c82, {1|F|SU|I(47), {0x043e}}}, - {0x1c83, {1|F|SU|I(48), {0x0441}}}, - {0x1c84, {1|F|SU|I(49), {0x0442}}}, - {0x1c85, {1|F|SU|I(50), {0x0442}}}, - {0x1c86, {1|F|SU|I(51), {0x044a}}}, - {0x1c87, {1|F|SU|I(52), {0x0463}}}, - {0x1c88, {1|F|SU|I(53), {0xa64b}}}, - {0x1e00, {1|F|D, {0x1e01}}}, - {0x1e02, {1|F|D, {0x1e03}}}, - {0x1e04, {1|F|D, {0x1e05}}}, - {0x1e06, {1|F|D, {0x1e07}}}, - {0x1e08, {1|F|D, {0x1e09}}}, - {0x1e0a, {1|F|D, {0x1e0b}}}, - {0x1e0c, {1|F|D, {0x1e0d}}}, - {0x1e0e, {1|F|D, {0x1e0f}}}, - {0x1e10, {1|F|D, {0x1e11}}}, - {0x1e12, {1|F|D, {0x1e13}}}, - {0x1e14, {1|F|D, {0x1e15}}}, - {0x1e16, {1|F|D, {0x1e17}}}, - {0x1e18, {1|F|D, {0x1e19}}}, - {0x1e1a, {1|F|D, {0x1e1b}}}, - {0x1e1c, {1|F|D, {0x1e1d}}}, - {0x1e1e, {1|F|D, {0x1e1f}}}, - {0x1e20, {1|F|D, {0x1e21}}}, - {0x1e22, {1|F|D, {0x1e23}}}, - {0x1e24, {1|F|D, {0x1e25}}}, - {0x1e26, {1|F|D, {0x1e27}}}, - {0x1e28, {1|F|D, {0x1e29}}}, - {0x1e2a, {1|F|D, {0x1e2b}}}, - {0x1e2c, {1|F|D, {0x1e2d}}}, - {0x1e2e, {1|F|D, {0x1e2f}}}, - {0x1e30, {1|F|D, {0x1e31}}}, - {0x1e32, {1|F|D, {0x1e33}}}, - {0x1e34, {1|F|D, {0x1e35}}}, - {0x1e36, {1|F|D, {0x1e37}}}, - {0x1e38, {1|F|D, {0x1e39}}}, - {0x1e3a, {1|F|D, {0x1e3b}}}, - {0x1e3c, {1|F|D, {0x1e3d}}}, - {0x1e3e, {1|F|D, {0x1e3f}}}, - {0x1e40, {1|F|D, {0x1e41}}}, - {0x1e42, {1|F|D, {0x1e43}}}, - {0x1e44, {1|F|D, {0x1e45}}}, - {0x1e46, {1|F|D, {0x1e47}}}, - {0x1e48, {1|F|D, {0x1e49}}}, - {0x1e4a, {1|F|D, {0x1e4b}}}, - {0x1e4c, {1|F|D, {0x1e4d}}}, - {0x1e4e, {1|F|D, {0x1e4f}}}, - {0x1e50, {1|F|D, {0x1e51}}}, - {0x1e52, {1|F|D, {0x1e53}}}, - {0x1e54, {1|F|D, {0x1e55}}}, - {0x1e56, {1|F|D, {0x1e57}}}, - {0x1e58, {1|F|D, {0x1e59}}}, - {0x1e5a, {1|F|D, {0x1e5b}}}, - {0x1e5c, {1|F|D, {0x1e5d}}}, - {0x1e5e, {1|F|D, {0x1e5f}}}, - {0x1e60, {1|F|D, {0x1e61}}}, - {0x1e62, {1|F|D, {0x1e63}}}, - {0x1e64, {1|F|D, {0x1e65}}}, - {0x1e66, {1|F|D, {0x1e67}}}, - {0x1e68, {1|F|D, {0x1e69}}}, - {0x1e6a, {1|F|D, {0x1e6b}}}, - {0x1e6c, {1|F|D, {0x1e6d}}}, - {0x1e6e, {1|F|D, {0x1e6f}}}, - {0x1e70, {1|F|D, {0x1e71}}}, - {0x1e72, {1|F|D, {0x1e73}}}, - {0x1e74, {1|F|D, {0x1e75}}}, - {0x1e76, {1|F|D, {0x1e77}}}, - {0x1e78, {1|F|D, {0x1e79}}}, - {0x1e7a, {1|F|D, {0x1e7b}}}, - {0x1e7c, {1|F|D, {0x1e7d}}}, - {0x1e7e, {1|F|D, {0x1e7f}}}, - {0x1e80, {1|F|D, {0x1e81}}}, - {0x1e82, {1|F|D, {0x1e83}}}, - {0x1e84, {1|F|D, {0x1e85}}}, - {0x1e86, {1|F|D, {0x1e87}}}, - {0x1e88, {1|F|D, {0x1e89}}}, - {0x1e8a, {1|F|D, {0x1e8b}}}, - {0x1e8c, {1|F|D, {0x1e8d}}}, - {0x1e8e, {1|F|D, {0x1e8f}}}, - {0x1e90, {1|F|D, {0x1e91}}}, - {0x1e92, {1|F|D, {0x1e93}}}, - {0x1e94, {1|F|D, {0x1e95}}}, - {0x1e96, {2|F|SU|I(54), {0x0068, 0x0331}}}, - {0x1e97, {2|F|SU|I(56), {0x0074, 0x0308}}}, - {0x1e98, {2|F|SU|I(58), {0x0077, 0x030a}}}, - {0x1e99, {2|F|SU|I(60), {0x0079, 0x030a}}}, - {0x1e9a, {2|F|SU|I(62), {0x0061, 0x02be}}}, - {0x1e9b, {1|F|SU|I(64), {0x1e61}}}, - {0x1e9e, {2|F|SL|I(65), {0x0073, 0x0073}}}, - {0x1ea0, {1|F|D, {0x1ea1}}}, - {0x1ea2, {1|F|D, {0x1ea3}}}, - {0x1ea4, {1|F|D, {0x1ea5}}}, - {0x1ea6, {1|F|D, {0x1ea7}}}, - {0x1ea8, {1|F|D, {0x1ea9}}}, - {0x1eaa, {1|F|D, {0x1eab}}}, - {0x1eac, {1|F|D, {0x1ead}}}, - {0x1eae, {1|F|D, {0x1eaf}}}, - {0x1eb0, {1|F|D, {0x1eb1}}}, - {0x1eb2, {1|F|D, {0x1eb3}}}, - {0x1eb4, {1|F|D, {0x1eb5}}}, - {0x1eb6, {1|F|D, {0x1eb7}}}, - {0x1eb8, {1|F|D, {0x1eb9}}}, - {0x1eba, {1|F|D, {0x1ebb}}}, - {0x1ebc, {1|F|D, {0x1ebd}}}, - {0x1ebe, {1|F|D, {0x1ebf}}}, - {0x1ec0, {1|F|D, {0x1ec1}}}, - {0x1ec2, {1|F|D, {0x1ec3}}}, - {0x1ec4, {1|F|D, {0x1ec5}}}, - {0x1ec6, {1|F|D, {0x1ec7}}}, - {0x1ec8, {1|F|D, {0x1ec9}}}, - {0x1eca, {1|F|D, {0x1ecb}}}, - {0x1ecc, {1|F|D, {0x1ecd}}}, - {0x1ece, {1|F|D, {0x1ecf}}}, - {0x1ed0, {1|F|D, {0x1ed1}}}, - {0x1ed2, {1|F|D, {0x1ed3}}}, - {0x1ed4, {1|F|D, {0x1ed5}}}, - {0x1ed6, {1|F|D, {0x1ed7}}}, - {0x1ed8, {1|F|D, {0x1ed9}}}, - {0x1eda, {1|F|D, {0x1edb}}}, - {0x1edc, {1|F|D, {0x1edd}}}, - {0x1ede, {1|F|D, {0x1edf}}}, - {0x1ee0, {1|F|D, {0x1ee1}}}, - {0x1ee2, {1|F|D, {0x1ee3}}}, - {0x1ee4, {1|F|D, {0x1ee5}}}, - {0x1ee6, {1|F|D, {0x1ee7}}}, - {0x1ee8, {1|F|D, {0x1ee9}}}, - {0x1eea, {1|F|D, {0x1eeb}}}, - {0x1eec, {1|F|D, {0x1eed}}}, - {0x1eee, {1|F|D, {0x1eef}}}, - {0x1ef0, {1|F|D, {0x1ef1}}}, - {0x1ef2, {1|F|D, {0x1ef3}}}, - {0x1ef4, {1|F|D, {0x1ef5}}}, - {0x1ef6, {1|F|D, {0x1ef7}}}, - {0x1ef8, {1|F|D, {0x1ef9}}}, - {0x1efa, {1|F|D, {0x1efb}}}, - {0x1efc, {1|F|D, {0x1efd}}}, - {0x1efe, {1|F|D, {0x1eff}}}, - {0x1f08, {1|F|D, {0x1f00}}}, - {0x1f09, {1|F|D, {0x1f01}}}, - {0x1f0a, {1|F|D, {0x1f02}}}, - {0x1f0b, {1|F|D, {0x1f03}}}, - {0x1f0c, {1|F|D, {0x1f04}}}, - {0x1f0d, {1|F|D, {0x1f05}}}, - {0x1f0e, {1|F|D, {0x1f06}}}, - {0x1f0f, {1|F|D, {0x1f07}}}, - {0x1f18, {1|F|D, {0x1f10}}}, - {0x1f19, {1|F|D, {0x1f11}}}, - {0x1f1a, {1|F|D, {0x1f12}}}, - {0x1f1b, {1|F|D, {0x1f13}}}, - {0x1f1c, {1|F|D, {0x1f14}}}, - {0x1f1d, {1|F|D, {0x1f15}}}, - {0x1f28, {1|F|D, {0x1f20}}}, - {0x1f29, {1|F|D, {0x1f21}}}, - {0x1f2a, {1|F|D, {0x1f22}}}, - {0x1f2b, {1|F|D, {0x1f23}}}, - {0x1f2c, {1|F|D, {0x1f24}}}, - {0x1f2d, {1|F|D, {0x1f25}}}, - {0x1f2e, {1|F|D, {0x1f26}}}, - {0x1f2f, {1|F|D, {0x1f27}}}, - {0x1f38, {1|F|D, {0x1f30}}}, - {0x1f39, {1|F|D, {0x1f31}}}, - {0x1f3a, {1|F|D, {0x1f32}}}, - {0x1f3b, {1|F|D, {0x1f33}}}, - {0x1f3c, {1|F|D, {0x1f34}}}, - {0x1f3d, {1|F|D, {0x1f35}}}, - {0x1f3e, {1|F|D, {0x1f36}}}, - {0x1f3f, {1|F|D, {0x1f37}}}, - {0x1f48, {1|F|D, {0x1f40}}}, - {0x1f49, {1|F|D, {0x1f41}}}, - {0x1f4a, {1|F|D, {0x1f42}}}, - {0x1f4b, {1|F|D, {0x1f43}}}, - {0x1f4c, {1|F|D, {0x1f44}}}, - {0x1f4d, {1|F|D, {0x1f45}}}, - {0x1f50, {2|F|SU|I(66), {0x03c5, 0x0313}}}, - {0x1f52, {3|F|SU|I(68), {0x03c5, 0x0313, 0x0300}}}, - {0x1f54, {3|F|SU|I(71), {0x03c5, 0x0313, 0x0301}}}, - {0x1f56, {3|F|SU|I(74), {0x03c5, 0x0313, 0x0342}}}, - {0x1f59, {1|F|D, {0x1f51}}}, - {0x1f5b, {1|F|D, {0x1f53}}}, - {0x1f5d, {1|F|D, {0x1f55}}}, - {0x1f5f, {1|F|D, {0x1f57}}}, - {0x1f68, {1|F|D, {0x1f60}}}, - {0x1f69, {1|F|D, {0x1f61}}}, - {0x1f6a, {1|F|D, {0x1f62}}}, - {0x1f6b, {1|F|D, {0x1f63}}}, - {0x1f6c, {1|F|D, {0x1f64}}}, - {0x1f6d, {1|F|D, {0x1f65}}}, - {0x1f6e, {1|F|D, {0x1f66}}}, - {0x1f6f, {1|F|D, {0x1f67}}}, - {0x1f80, {2|F|ST|SU|I(77), {0x1f00, 0x03b9}}}, - {0x1f81, {2|F|ST|SU|I(80), {0x1f01, 0x03b9}}}, - {0x1f82, {2|F|ST|SU|I(83), {0x1f02, 0x03b9}}}, - {0x1f83, {2|F|ST|SU|I(86), {0x1f03, 0x03b9}}}, - {0x1f84, {2|F|ST|SU|I(89), {0x1f04, 0x03b9}}}, - {0x1f85, {2|F|ST|SU|I(92), {0x1f05, 0x03b9}}}, - {0x1f86, {2|F|ST|SU|I(95), {0x1f06, 0x03b9}}}, - {0x1f87, {2|F|ST|SU|I(98), {0x1f07, 0x03b9}}}, - {0x1f88, {2|F|IT|SL|SU|I(101), {0x1f00, 0x03b9}}}, - {0x1f89, {2|F|IT|SL|SU|I(106), {0x1f01, 0x03b9}}}, - {0x1f8a, {2|F|IT|SL|SU|I(111), {0x1f02, 0x03b9}}}, - {0x1f8b, {2|F|IT|SL|SU|I(116), {0x1f03, 0x03b9}}}, - {0x1f8c, {2|F|IT|SL|SU|I(121), {0x1f04, 0x03b9}}}, - {0x1f8d, {2|F|IT|SL|SU|I(126), {0x1f05, 0x03b9}}}, - {0x1f8e, {2|F|IT|SL|SU|I(131), {0x1f06, 0x03b9}}}, - {0x1f8f, {2|F|IT|SL|SU|I(136), {0x1f07, 0x03b9}}}, - {0x1f90, {2|F|ST|SU|I(141), {0x1f20, 0x03b9}}}, - {0x1f91, {2|F|ST|SU|I(144), {0x1f21, 0x03b9}}}, - {0x1f92, {2|F|ST|SU|I(147), {0x1f22, 0x03b9}}}, - {0x1f93, {2|F|ST|SU|I(150), {0x1f23, 0x03b9}}}, - {0x1f94, {2|F|ST|SU|I(153), {0x1f24, 0x03b9}}}, - {0x1f95, {2|F|ST|SU|I(156), {0x1f25, 0x03b9}}}, - {0x1f96, {2|F|ST|SU|I(159), {0x1f26, 0x03b9}}}, - {0x1f97, {2|F|ST|SU|I(162), {0x1f27, 0x03b9}}}, - {0x1f98, {2|F|IT|SL|SU|I(165), {0x1f20, 0x03b9}}}, - {0x1f99, {2|F|IT|SL|SU|I(170), {0x1f21, 0x03b9}}}, - {0x1f9a, {2|F|IT|SL|SU|I(175), {0x1f22, 0x03b9}}}, - {0x1f9b, {2|F|IT|SL|SU|I(180), {0x1f23, 0x03b9}}}, - {0x1f9c, {2|F|IT|SL|SU|I(185), {0x1f24, 0x03b9}}}, - {0x1f9d, {2|F|IT|SL|SU|I(190), {0x1f25, 0x03b9}}}, - {0x1f9e, {2|F|IT|SL|SU|I(195), {0x1f26, 0x03b9}}}, - {0x1f9f, {2|F|IT|SL|SU|I(200), {0x1f27, 0x03b9}}}, - {0x1fa0, {2|F|ST|SU|I(205), {0x1f60, 0x03b9}}}, - {0x1fa1, {2|F|ST|SU|I(208), {0x1f61, 0x03b9}}}, - {0x1fa2, {2|F|ST|SU|I(211), {0x1f62, 0x03b9}}}, - {0x1fa3, {2|F|ST|SU|I(214), {0x1f63, 0x03b9}}}, - {0x1fa4, {2|F|ST|SU|I(217), {0x1f64, 0x03b9}}}, - {0x1fa5, {2|F|ST|SU|I(220), {0x1f65, 0x03b9}}}, - {0x1fa6, {2|F|ST|SU|I(223), {0x1f66, 0x03b9}}}, - {0x1fa7, {2|F|ST|SU|I(226), {0x1f67, 0x03b9}}}, - {0x1fa8, {2|F|IT|SL|SU|I(229), {0x1f60, 0x03b9}}}, - {0x1fa9, {2|F|IT|SL|SU|I(234), {0x1f61, 0x03b9}}}, - {0x1faa, {2|F|IT|SL|SU|I(239), {0x1f62, 0x03b9}}}, - {0x1fab, {2|F|IT|SL|SU|I(244), {0x1f63, 0x03b9}}}, - {0x1fac, {2|F|IT|SL|SU|I(249), {0x1f64, 0x03b9}}}, - {0x1fad, {2|F|IT|SL|SU|I(254), {0x1f65, 0x03b9}}}, - {0x1fae, {2|F|IT|SL|SU|I(259), {0x1f66, 0x03b9}}}, - {0x1faf, {2|F|IT|SL|SU|I(264), {0x1f67, 0x03b9}}}, - {0x1fb2, {2|F|ST|SU|I(269), {0x1f70, 0x03b9}}}, - {0x1fb3, {2|F|ST|SU|I(273), {0x03b1, 0x03b9}}}, - {0x1fb4, {2|F|ST|SU|I(276), {0x03ac, 0x03b9}}}, - {0x1fb6, {2|F|SU|I(280), {0x03b1, 0x0342}}}, - {0x1fb7, {3|F|ST|SU|I(282), {0x03b1, 0x0342, 0x03b9}}}, - {0x1fb8, {1|F|D, {0x1fb0}}}, - {0x1fb9, {1|F|D, {0x1fb1}}}, - {0x1fba, {1|F|D, {0x1f70}}}, - {0x1fbb, {1|F|D, {0x1f71}}}, - {0x1fbc, {2|F|IT|SL|SU|I(288), {0x03b1, 0x03b9}}}, - {0x1fbe, {1|F|SU|I(293), {0x03b9}}}, - {0x1fc2, {2|F|ST|SU|I(294), {0x1f74, 0x03b9}}}, - {0x1fc3, {2|F|ST|SU|I(298), {0x03b7, 0x03b9}}}, - {0x1fc4, {2|F|ST|SU|I(301), {0x03ae, 0x03b9}}}, - {0x1fc6, {2|F|SU|I(305), {0x03b7, 0x0342}}}, - {0x1fc7, {3|F|ST|SU|I(307), {0x03b7, 0x0342, 0x03b9}}}, - {0x1fc8, {1|F|D, {0x1f72}}}, - {0x1fc9, {1|F|D, {0x1f73}}}, - {0x1fca, {1|F|D, {0x1f74}}}, - {0x1fcb, {1|F|D, {0x1f75}}}, - {0x1fcc, {2|F|IT|SL|SU|I(313), {0x03b7, 0x03b9}}}, - {0x1fd2, {3|F|SU|I(318), {0x03b9, 0x0308, 0x0300}}}, - {0x1fd3, {3|F|SU|I(321), {0x03b9, 0x0308, 0x0301}}}, - {0x1fd6, {2|F|SU|I(324), {0x03b9, 0x0342}}}, - {0x1fd7, {3|F|SU|I(326), {0x03b9, 0x0308, 0x0342}}}, - {0x1fd8, {1|F|D, {0x1fd0}}}, - {0x1fd9, {1|F|D, {0x1fd1}}}, - {0x1fda, {1|F|D, {0x1f76}}}, - {0x1fdb, {1|F|D, {0x1f77}}}, - {0x1fe2, {3|F|SU|I(329), {0x03c5, 0x0308, 0x0300}}}, - {0x1fe3, {3|F|SU|I(332), {0x03c5, 0x0308, 0x0301}}}, - {0x1fe4, {2|F|SU|I(335), {0x03c1, 0x0313}}}, - {0x1fe6, {2|F|SU|I(337), {0x03c5, 0x0342}}}, - {0x1fe7, {3|F|SU|I(339), {0x03c5, 0x0308, 0x0342}}}, - {0x1fe8, {1|F|D, {0x1fe0}}}, - {0x1fe9, {1|F|D, {0x1fe1}}}, - {0x1fea, {1|F|D, {0x1f7a}}}, - {0x1feb, {1|F|D, {0x1f7b}}}, - {0x1fec, {1|F|D, {0x1fe5}}}, - {0x1ff2, {2|F|ST|SU|I(342), {0x1f7c, 0x03b9}}}, - {0x1ff3, {2|F|ST|SU|I(346), {0x03c9, 0x03b9}}}, - {0x1ff4, {2|F|ST|SU|I(349), {0x03ce, 0x03b9}}}, - {0x1ff6, {2|F|SU|I(353), {0x03c9, 0x0342}}}, - {0x1ff7, {3|F|ST|SU|I(355), {0x03c9, 0x0342, 0x03b9}}}, - {0x1ff8, {1|F|D, {0x1f78}}}, - {0x1ff9, {1|F|D, {0x1f79}}}, - {0x1ffa, {1|F|D, {0x1f7c}}}, - {0x1ffb, {1|F|D, {0x1f7d}}}, - {0x1ffc, {2|F|IT|SL|SU|I(361), {0x03c9, 0x03b9}}}, - {0x2126, {1|F|D, {0x03c9}}}, - {0x212a, {1|F|D, {0x006b}}}, - {0x212b, {1|F|D, {0x00e5}}}, - {0x2132, {1|F|D, {0x214e}}}, - {0x2160, {1|F|D, {0x2170}}}, - {0x2161, {1|F|D, {0x2171}}}, - {0x2162, {1|F|D, {0x2172}}}, - {0x2163, {1|F|D, {0x2173}}}, - {0x2164, {1|F|D, {0x2174}}}, - {0x2165, {1|F|D, {0x2175}}}, - {0x2166, {1|F|D, {0x2176}}}, - {0x2167, {1|F|D, {0x2177}}}, - {0x2168, {1|F|D, {0x2178}}}, - {0x2169, {1|F|D, {0x2179}}}, - {0x216a, {1|F|D, {0x217a}}}, - {0x216b, {1|F|D, {0x217b}}}, - {0x216c, {1|F|D, {0x217c}}}, - {0x216d, {1|F|D, {0x217d}}}, - {0x216e, {1|F|D, {0x217e}}}, - {0x216f, {1|F|D, {0x217f}}}, - {0x2183, {1|F|D, {0x2184}}}, - {0x24b6, {1|F|D, {0x24d0}}}, - {0x24b7, {1|F|D, {0x24d1}}}, - {0x24b8, {1|F|D, {0x24d2}}}, - {0x24b9, {1|F|D, {0x24d3}}}, - {0x24ba, {1|F|D, {0x24d4}}}, - {0x24bb, {1|F|D, {0x24d5}}}, - {0x24bc, {1|F|D, {0x24d6}}}, - {0x24bd, {1|F|D, {0x24d7}}}, - {0x24be, {1|F|D, {0x24d8}}}, - {0x24bf, {1|F|D, {0x24d9}}}, - {0x24c0, {1|F|D, {0x24da}}}, - {0x24c1, {1|F|D, {0x24db}}}, - {0x24c2, {1|F|D, {0x24dc}}}, - {0x24c3, {1|F|D, {0x24dd}}}, - {0x24c4, {1|F|D, {0x24de}}}, - {0x24c5, {1|F|D, {0x24df}}}, - {0x24c6, {1|F|D, {0x24e0}}}, - {0x24c7, {1|F|D, {0x24e1}}}, - {0x24c8, {1|F|D, {0x24e2}}}, - {0x24c9, {1|F|D, {0x24e3}}}, - {0x24ca, {1|F|D, {0x24e4}}}, - {0x24cb, {1|F|D, {0x24e5}}}, - {0x24cc, {1|F|D, {0x24e6}}}, - {0x24cd, {1|F|D, {0x24e7}}}, - {0x24ce, {1|F|D, {0x24e8}}}, - {0x24cf, {1|F|D, {0x24e9}}}, - {0x2c00, {1|F|D, {0x2c30}}}, - {0x2c01, {1|F|D, {0x2c31}}}, - {0x2c02, {1|F|D, {0x2c32}}}, - {0x2c03, {1|F|D, {0x2c33}}}, - {0x2c04, {1|F|D, {0x2c34}}}, - {0x2c05, {1|F|D, {0x2c35}}}, - {0x2c06, {1|F|D, {0x2c36}}}, - {0x2c07, {1|F|D, {0x2c37}}}, - {0x2c08, {1|F|D, {0x2c38}}}, - {0x2c09, {1|F|D, {0x2c39}}}, - {0x2c0a, {1|F|D, {0x2c3a}}}, - {0x2c0b, {1|F|D, {0x2c3b}}}, - {0x2c0c, {1|F|D, {0x2c3c}}}, - {0x2c0d, {1|F|D, {0x2c3d}}}, - {0x2c0e, {1|F|D, {0x2c3e}}}, - {0x2c0f, {1|F|D, {0x2c3f}}}, - {0x2c10, {1|F|D, {0x2c40}}}, - {0x2c11, {1|F|D, {0x2c41}}}, - {0x2c12, {1|F|D, {0x2c42}}}, - {0x2c13, {1|F|D, {0x2c43}}}, - {0x2c14, {1|F|D, {0x2c44}}}, - {0x2c15, {1|F|D, {0x2c45}}}, - {0x2c16, {1|F|D, {0x2c46}}}, - {0x2c17, {1|F|D, {0x2c47}}}, - {0x2c18, {1|F|D, {0x2c48}}}, - {0x2c19, {1|F|D, {0x2c49}}}, - {0x2c1a, {1|F|D, {0x2c4a}}}, - {0x2c1b, {1|F|D, {0x2c4b}}}, - {0x2c1c, {1|F|D, {0x2c4c}}}, - {0x2c1d, {1|F|D, {0x2c4d}}}, - {0x2c1e, {1|F|D, {0x2c4e}}}, - {0x2c1f, {1|F|D, {0x2c4f}}}, - {0x2c20, {1|F|D, {0x2c50}}}, - {0x2c21, {1|F|D, {0x2c51}}}, - {0x2c22, {1|F|D, {0x2c52}}}, - {0x2c23, {1|F|D, {0x2c53}}}, - {0x2c24, {1|F|D, {0x2c54}}}, - {0x2c25, {1|F|D, {0x2c55}}}, - {0x2c26, {1|F|D, {0x2c56}}}, - {0x2c27, {1|F|D, {0x2c57}}}, - {0x2c28, {1|F|D, {0x2c58}}}, - {0x2c29, {1|F|D, {0x2c59}}}, - {0x2c2a, {1|F|D, {0x2c5a}}}, - {0x2c2b, {1|F|D, {0x2c5b}}}, - {0x2c2c, {1|F|D, {0x2c5c}}}, - {0x2c2d, {1|F|D, {0x2c5d}}}, - {0x2c2e, {1|F|D, {0x2c5e}}}, - {0x2c60, {1|F|D, {0x2c61}}}, - {0x2c62, {1|F|D, {0x026b}}}, - {0x2c63, {1|F|D, {0x1d7d}}}, - {0x2c64, {1|F|D, {0x027d}}}, - {0x2c67, {1|F|D, {0x2c68}}}, - {0x2c69, {1|F|D, {0x2c6a}}}, - {0x2c6b, {1|F|D, {0x2c6c}}}, - {0x2c6d, {1|F|D, {0x0251}}}, - {0x2c6e, {1|F|D, {0x0271}}}, - {0x2c6f, {1|F|D, {0x0250}}}, - {0x2c70, {1|F|D, {0x0252}}}, - {0x2c72, {1|F|D, {0x2c73}}}, - {0x2c75, {1|F|D, {0x2c76}}}, - {0x2c7e, {1|F|D, {0x023f}}}, - {0x2c7f, {1|F|D, {0x0240}}}, - {0x2c80, {1|F|D, {0x2c81}}}, - {0x2c82, {1|F|D, {0x2c83}}}, - {0x2c84, {1|F|D, {0x2c85}}}, - {0x2c86, {1|F|D, {0x2c87}}}, - {0x2c88, {1|F|D, {0x2c89}}}, - {0x2c8a, {1|F|D, {0x2c8b}}}, - {0x2c8c, {1|F|D, {0x2c8d}}}, - {0x2c8e, {1|F|D, {0x2c8f}}}, - {0x2c90, {1|F|D, {0x2c91}}}, - {0x2c92, {1|F|D, {0x2c93}}}, - {0x2c94, {1|F|D, {0x2c95}}}, - {0x2c96, {1|F|D, {0x2c97}}}, - {0x2c98, {1|F|D, {0x2c99}}}, - {0x2c9a, {1|F|D, {0x2c9b}}}, - {0x2c9c, {1|F|D, {0x2c9d}}}, - {0x2c9e, {1|F|D, {0x2c9f}}}, - {0x2ca0, {1|F|D, {0x2ca1}}}, - {0x2ca2, {1|F|D, {0x2ca3}}}, - {0x2ca4, {1|F|D, {0x2ca5}}}, - {0x2ca6, {1|F|D, {0x2ca7}}}, - {0x2ca8, {1|F|D, {0x2ca9}}}, - {0x2caa, {1|F|D, {0x2cab}}}, - {0x2cac, {1|F|D, {0x2cad}}}, - {0x2cae, {1|F|D, {0x2caf}}}, - {0x2cb0, {1|F|D, {0x2cb1}}}, - {0x2cb2, {1|F|D, {0x2cb3}}}, - {0x2cb4, {1|F|D, {0x2cb5}}}, - {0x2cb6, {1|F|D, {0x2cb7}}}, - {0x2cb8, {1|F|D, {0x2cb9}}}, - {0x2cba, {1|F|D, {0x2cbb}}}, - {0x2cbc, {1|F|D, {0x2cbd}}}, - {0x2cbe, {1|F|D, {0x2cbf}}}, - {0x2cc0, {1|F|D, {0x2cc1}}}, - {0x2cc2, {1|F|D, {0x2cc3}}}, - {0x2cc4, {1|F|D, {0x2cc5}}}, - {0x2cc6, {1|F|D, {0x2cc7}}}, - {0x2cc8, {1|F|D, {0x2cc9}}}, - {0x2cca, {1|F|D, {0x2ccb}}}, - {0x2ccc, {1|F|D, {0x2ccd}}}, - {0x2cce, {1|F|D, {0x2ccf}}}, - {0x2cd0, {1|F|D, {0x2cd1}}}, - {0x2cd2, {1|F|D, {0x2cd3}}}, - {0x2cd4, {1|F|D, {0x2cd5}}}, - {0x2cd6, {1|F|D, {0x2cd7}}}, - {0x2cd8, {1|F|D, {0x2cd9}}}, - {0x2cda, {1|F|D, {0x2cdb}}}, - {0x2cdc, {1|F|D, {0x2cdd}}}, - {0x2cde, {1|F|D, {0x2cdf}}}, - {0x2ce0, {1|F|D, {0x2ce1}}}, - {0x2ce2, {1|F|D, {0x2ce3}}}, - {0x2ceb, {1|F|D, {0x2cec}}}, - {0x2ced, {1|F|D, {0x2cee}}}, - {0x2cf2, {1|F|D, {0x2cf3}}}, - {0xa640, {1|F|D, {0xa641}}}, - {0xa642, {1|F|D, {0xa643}}}, - {0xa644, {1|F|D, {0xa645}}}, - {0xa646, {1|F|D, {0xa647}}}, - {0xa648, {1|F|D, {0xa649}}}, - {0xa64a, {1|F|D, {0xa64b}}}, - {0xa64c, {1|F|D, {0xa64d}}}, - {0xa64e, {1|F|D, {0xa64f}}}, - {0xa650, {1|F|D, {0xa651}}}, - {0xa652, {1|F|D, {0xa653}}}, - {0xa654, {1|F|D, {0xa655}}}, - {0xa656, {1|F|D, {0xa657}}}, - {0xa658, {1|F|D, {0xa659}}}, - {0xa65a, {1|F|D, {0xa65b}}}, - {0xa65c, {1|F|D, {0xa65d}}}, - {0xa65e, {1|F|D, {0xa65f}}}, - {0xa660, {1|F|D, {0xa661}}}, - {0xa662, {1|F|D, {0xa663}}}, - {0xa664, {1|F|D, {0xa665}}}, - {0xa666, {1|F|D, {0xa667}}}, - {0xa668, {1|F|D, {0xa669}}}, - {0xa66a, {1|F|D, {0xa66b}}}, - {0xa66c, {1|F|D, {0xa66d}}}, - {0xa680, {1|F|D, {0xa681}}}, - {0xa682, {1|F|D, {0xa683}}}, - {0xa684, {1|F|D, {0xa685}}}, - {0xa686, {1|F|D, {0xa687}}}, - {0xa688, {1|F|D, {0xa689}}}, - {0xa68a, {1|F|D, {0xa68b}}}, - {0xa68c, {1|F|D, {0xa68d}}}, - {0xa68e, {1|F|D, {0xa68f}}}, - {0xa690, {1|F|D, {0xa691}}}, - {0xa692, {1|F|D, {0xa693}}}, - {0xa694, {1|F|D, {0xa695}}}, - {0xa696, {1|F|D, {0xa697}}}, - {0xa698, {1|F|D, {0xa699}}}, - {0xa69a, {1|F|D, {0xa69b}}}, - {0xa722, {1|F|D, {0xa723}}}, - {0xa724, {1|F|D, {0xa725}}}, - {0xa726, {1|F|D, {0xa727}}}, - {0xa728, {1|F|D, {0xa729}}}, - {0xa72a, {1|F|D, {0xa72b}}}, - {0xa72c, {1|F|D, {0xa72d}}}, - {0xa72e, {1|F|D, {0xa72f}}}, - {0xa732, {1|F|D, {0xa733}}}, - {0xa734, {1|F|D, {0xa735}}}, - {0xa736, {1|F|D, {0xa737}}}, - {0xa738, {1|F|D, {0xa739}}}, - {0xa73a, {1|F|D, {0xa73b}}}, - {0xa73c, {1|F|D, {0xa73d}}}, - {0xa73e, {1|F|D, {0xa73f}}}, - {0xa740, {1|F|D, {0xa741}}}, - {0xa742, {1|F|D, {0xa743}}}, - {0xa744, {1|F|D, {0xa745}}}, - {0xa746, {1|F|D, {0xa747}}}, - {0xa748, {1|F|D, {0xa749}}}, - {0xa74a, {1|F|D, {0xa74b}}}, - {0xa74c, {1|F|D, {0xa74d}}}, - {0xa74e, {1|F|D, {0xa74f}}}, - {0xa750, {1|F|D, {0xa751}}}, - {0xa752, {1|F|D, {0xa753}}}, - {0xa754, {1|F|D, {0xa755}}}, - {0xa756, {1|F|D, {0xa757}}}, - {0xa758, {1|F|D, {0xa759}}}, - {0xa75a, {1|F|D, {0xa75b}}}, - {0xa75c, {1|F|D, {0xa75d}}}, - {0xa75e, {1|F|D, {0xa75f}}}, - {0xa760, {1|F|D, {0xa761}}}, - {0xa762, {1|F|D, {0xa763}}}, - {0xa764, {1|F|D, {0xa765}}}, - {0xa766, {1|F|D, {0xa767}}}, - {0xa768, {1|F|D, {0xa769}}}, - {0xa76a, {1|F|D, {0xa76b}}}, - {0xa76c, {1|F|D, {0xa76d}}}, - {0xa76e, {1|F|D, {0xa76f}}}, - {0xa779, {1|F|D, {0xa77a}}}, - {0xa77b, {1|F|D, {0xa77c}}}, - {0xa77d, {1|F|D, {0x1d79}}}, - {0xa77e, {1|F|D, {0xa77f}}}, - {0xa780, {1|F|D, {0xa781}}}, - {0xa782, {1|F|D, {0xa783}}}, - {0xa784, {1|F|D, {0xa785}}}, - {0xa786, {1|F|D, {0xa787}}}, - {0xa78b, {1|F|D, {0xa78c}}}, - {0xa78d, {1|F|D, {0x0265}}}, - {0xa790, {1|F|D, {0xa791}}}, - {0xa792, {1|F|D, {0xa793}}}, - {0xa796, {1|F|D, {0xa797}}}, - {0xa798, {1|F|D, {0xa799}}}, - {0xa79a, {1|F|D, {0xa79b}}}, - {0xa79c, {1|F|D, {0xa79d}}}, - {0xa79e, {1|F|D, {0xa79f}}}, - {0xa7a0, {1|F|D, {0xa7a1}}}, - {0xa7a2, {1|F|D, {0xa7a3}}}, - {0xa7a4, {1|F|D, {0xa7a5}}}, - {0xa7a6, {1|F|D, {0xa7a7}}}, - {0xa7a8, {1|F|D, {0xa7a9}}}, - {0xa7aa, {1|F|D, {0x0266}}}, - {0xa7ab, {1|F|D, {0x025c}}}, - {0xa7ac, {1|F|D, {0x0261}}}, - {0xa7ad, {1|F|D, {0x026c}}}, - {0xa7ae, {1|F|D, {0x026a}}}, - {0xa7b0, {1|F|D, {0x029e}}}, - {0xa7b1, {1|F|D, {0x0287}}}, - {0xa7b2, {1|F|D, {0x029d}}}, - {0xa7b3, {1|F|D, {0xab53}}}, - {0xa7b4, {1|F|D, {0xa7b5}}}, - {0xa7b6, {1|F|D, {0xa7b7}}}, - {0xab70, {1|F|U, {0x13a0}}}, - {0xab71, {1|F|U, {0x13a1}}}, - {0xab72, {1|F|U, {0x13a2}}}, - {0xab73, {1|F|U, {0x13a3}}}, - {0xab74, {1|F|U, {0x13a4}}}, - {0xab75, {1|F|U, {0x13a5}}}, - {0xab76, {1|F|U, {0x13a6}}}, - {0xab77, {1|F|U, {0x13a7}}}, - {0xab78, {1|F|U, {0x13a8}}}, - {0xab79, {1|F|U, {0x13a9}}}, - {0xab7a, {1|F|U, {0x13aa}}}, - {0xab7b, {1|F|U, {0x13ab}}}, - {0xab7c, {1|F|U, {0x13ac}}}, - {0xab7d, {1|F|U, {0x13ad}}}, - {0xab7e, {1|F|U, {0x13ae}}}, - {0xab7f, {1|F|U, {0x13af}}}, - {0xab80, {1|F|U, {0x13b0}}}, - {0xab81, {1|F|U, {0x13b1}}}, - {0xab82, {1|F|U, {0x13b2}}}, - {0xab83, {1|F|U, {0x13b3}}}, - {0xab84, {1|F|U, {0x13b4}}}, - {0xab85, {1|F|U, {0x13b5}}}, - {0xab86, {1|F|U, {0x13b6}}}, - {0xab87, {1|F|U, {0x13b7}}}, - {0xab88, {1|F|U, {0x13b8}}}, - {0xab89, {1|F|U, {0x13b9}}}, - {0xab8a, {1|F|U, {0x13ba}}}, - {0xab8b, {1|F|U, {0x13bb}}}, - {0xab8c, {1|F|U, {0x13bc}}}, - {0xab8d, {1|F|U, {0x13bd}}}, - {0xab8e, {1|F|U, {0x13be}}}, - {0xab8f, {1|F|U, {0x13bf}}}, - {0xab90, {1|F|U, {0x13c0}}}, - {0xab91, {1|F|U, {0x13c1}}}, - {0xab92, {1|F|U, {0x13c2}}}, - {0xab93, {1|F|U, {0x13c3}}}, - {0xab94, {1|F|U, {0x13c4}}}, - {0xab95, {1|F|U, {0x13c5}}}, - {0xab96, {1|F|U, {0x13c6}}}, - {0xab97, {1|F|U, {0x13c7}}}, - {0xab98, {1|F|U, {0x13c8}}}, - {0xab99, {1|F|U, {0x13c9}}}, - {0xab9a, {1|F|U, {0x13ca}}}, - {0xab9b, {1|F|U, {0x13cb}}}, - {0xab9c, {1|F|U, {0x13cc}}}, - {0xab9d, {1|F|U, {0x13cd}}}, - {0xab9e, {1|F|U, {0x13ce}}}, - {0xab9f, {1|F|U, {0x13cf}}}, - {0xaba0, {1|F|U, {0x13d0}}}, - {0xaba1, {1|F|U, {0x13d1}}}, - {0xaba2, {1|F|U, {0x13d2}}}, - {0xaba3, {1|F|U, {0x13d3}}}, - {0xaba4, {1|F|U, {0x13d4}}}, - {0xaba5, {1|F|U, {0x13d5}}}, - {0xaba6, {1|F|U, {0x13d6}}}, - {0xaba7, {1|F|U, {0x13d7}}}, - {0xaba8, {1|F|U, {0x13d8}}}, - {0xaba9, {1|F|U, {0x13d9}}}, - {0xabaa, {1|F|U, {0x13da}}}, - {0xabab, {1|F|U, {0x13db}}}, - {0xabac, {1|F|U, {0x13dc}}}, - {0xabad, {1|F|U, {0x13dd}}}, - {0xabae, {1|F|U, {0x13de}}}, - {0xabaf, {1|F|U, {0x13df}}}, - {0xabb0, {1|F|U, {0x13e0}}}, - {0xabb1, {1|F|U, {0x13e1}}}, - {0xabb2, {1|F|U, {0x13e2}}}, - {0xabb3, {1|F|U, {0x13e3}}}, - {0xabb4, {1|F|U, {0x13e4}}}, - {0xabb5, {1|F|U, {0x13e5}}}, - {0xabb6, {1|F|U, {0x13e6}}}, - {0xabb7, {1|F|U, {0x13e7}}}, - {0xabb8, {1|F|U, {0x13e8}}}, - {0xabb9, {1|F|U, {0x13e9}}}, - {0xabba, {1|F|U, {0x13ea}}}, - {0xabbb, {1|F|U, {0x13eb}}}, - {0xabbc, {1|F|U, {0x13ec}}}, - {0xabbd, {1|F|U, {0x13ed}}}, - {0xabbe, {1|F|U, {0x13ee}}}, - {0xabbf, {1|F|U, {0x13ef}}}, - {0xfb00, {2|F|ST|SU|I(366), {0x0066, 0x0066}}}, - {0xfb01, {2|F|ST|SU|I(370), {0x0066, 0x0069}}}, - {0xfb02, {2|F|ST|SU|I(374), {0x0066, 0x006c}}}, - {0xfb03, {3|F|ST|SU|I(378), {0x0066, 0x0066, 0x0069}}}, - {0xfb04, {3|F|ST|SU|I(384), {0x0066, 0x0066, 0x006c}}}, - {0xfb05, {2|F|ST|SU|I(390), {0x0073, 0x0074}}}, - {0xfb06, {2|F|ST|SU|I(394), {0x0073, 0x0074}}}, - {0xfb13, {2|F|ST|SU|I(398), {0x0574, 0x0576}}}, - {0xfb14, {2|F|ST|SU|I(402), {0x0574, 0x0565}}}, - {0xfb15, {2|F|ST|SU|I(406), {0x0574, 0x056b}}}, - {0xfb16, {2|F|ST|SU|I(410), {0x057e, 0x0576}}}, - {0xfb17, {2|F|ST|SU|I(414), {0x0574, 0x056d}}}, - {0xff21, {1|F|D, {0xff41}}}, - {0xff22, {1|F|D, {0xff42}}}, - {0xff23, {1|F|D, {0xff43}}}, - {0xff24, {1|F|D, {0xff44}}}, - {0xff25, {1|F|D, {0xff45}}}, - {0xff26, {1|F|D, {0xff46}}}, - {0xff27, {1|F|D, {0xff47}}}, - {0xff28, {1|F|D, {0xff48}}}, - {0xff29, {1|F|D, {0xff49}}}, - {0xff2a, {1|F|D, {0xff4a}}}, - {0xff2b, {1|F|D, {0xff4b}}}, - {0xff2c, {1|F|D, {0xff4c}}}, - {0xff2d, {1|F|D, {0xff4d}}}, - {0xff2e, {1|F|D, {0xff4e}}}, - {0xff2f, {1|F|D, {0xff4f}}}, - {0xff30, {1|F|D, {0xff50}}}, - {0xff31, {1|F|D, {0xff51}}}, - {0xff32, {1|F|D, {0xff52}}}, - {0xff33, {1|F|D, {0xff53}}}, - {0xff34, {1|F|D, {0xff54}}}, - {0xff35, {1|F|D, {0xff55}}}, - {0xff36, {1|F|D, {0xff56}}}, - {0xff37, {1|F|D, {0xff57}}}, - {0xff38, {1|F|D, {0xff58}}}, - {0xff39, {1|F|D, {0xff59}}}, - {0xff3a, {1|F|D, {0xff5a}}}, - {0x10400, {1|F|D, {0x10428}}}, - {0x10401, {1|F|D, {0x10429}}}, - {0x10402, {1|F|D, {0x1042a}}}, - {0x10403, {1|F|D, {0x1042b}}}, - {0x10404, {1|F|D, {0x1042c}}}, - {0x10405, {1|F|D, {0x1042d}}}, - {0x10406, {1|F|D, {0x1042e}}}, - {0x10407, {1|F|D, {0x1042f}}}, - {0x10408, {1|F|D, {0x10430}}}, - {0x10409, {1|F|D, {0x10431}}}, - {0x1040a, {1|F|D, {0x10432}}}, - {0x1040b, {1|F|D, {0x10433}}}, - {0x1040c, {1|F|D, {0x10434}}}, - {0x1040d, {1|F|D, {0x10435}}}, - {0x1040e, {1|F|D, {0x10436}}}, - {0x1040f, {1|F|D, {0x10437}}}, - {0x10410, {1|F|D, {0x10438}}}, - {0x10411, {1|F|D, {0x10439}}}, - {0x10412, {1|F|D, {0x1043a}}}, - {0x10413, {1|F|D, {0x1043b}}}, - {0x10414, {1|F|D, {0x1043c}}}, - {0x10415, {1|F|D, {0x1043d}}}, - {0x10416, {1|F|D, {0x1043e}}}, - {0x10417, {1|F|D, {0x1043f}}}, - {0x10418, {1|F|D, {0x10440}}}, - {0x10419, {1|F|D, {0x10441}}}, - {0x1041a, {1|F|D, {0x10442}}}, - {0x1041b, {1|F|D, {0x10443}}}, - {0x1041c, {1|F|D, {0x10444}}}, - {0x1041d, {1|F|D, {0x10445}}}, - {0x1041e, {1|F|D, {0x10446}}}, - {0x1041f, {1|F|D, {0x10447}}}, - {0x10420, {1|F|D, {0x10448}}}, - {0x10421, {1|F|D, {0x10449}}}, - {0x10422, {1|F|D, {0x1044a}}}, - {0x10423, {1|F|D, {0x1044b}}}, - {0x10424, {1|F|D, {0x1044c}}}, - {0x10425, {1|F|D, {0x1044d}}}, - {0x10426, {1|F|D, {0x1044e}}}, - {0x10427, {1|F|D, {0x1044f}}}, - {0x104b0, {1|F|D, {0x104d8}}}, - {0x104b1, {1|F|D, {0x104d9}}}, - {0x104b2, {1|F|D, {0x104da}}}, - {0x104b3, {1|F|D, {0x104db}}}, - {0x104b4, {1|F|D, {0x104dc}}}, - {0x104b5, {1|F|D, {0x104dd}}}, - {0x104b6, {1|F|D, {0x104de}}}, - {0x104b7, {1|F|D, {0x104df}}}, - {0x104b8, {1|F|D, {0x104e0}}}, - {0x104b9, {1|F|D, {0x104e1}}}, - {0x104ba, {1|F|D, {0x104e2}}}, - {0x104bb, {1|F|D, {0x104e3}}}, - {0x104bc, {1|F|D, {0x104e4}}}, - {0x104bd, {1|F|D, {0x104e5}}}, - {0x104be, {1|F|D, {0x104e6}}}, - {0x104bf, {1|F|D, {0x104e7}}}, - {0x104c0, {1|F|D, {0x104e8}}}, - {0x104c1, {1|F|D, {0x104e9}}}, - {0x104c2, {1|F|D, {0x104ea}}}, - {0x104c3, {1|F|D, {0x104eb}}}, - {0x104c4, {1|F|D, {0x104ec}}}, - {0x104c5, {1|F|D, {0x104ed}}}, - {0x104c6, {1|F|D, {0x104ee}}}, - {0x104c7, {1|F|D, {0x104ef}}}, - {0x104c8, {1|F|D, {0x104f0}}}, - {0x104c9, {1|F|D, {0x104f1}}}, - {0x104ca, {1|F|D, {0x104f2}}}, - {0x104cb, {1|F|D, {0x104f3}}}, - {0x104cc, {1|F|D, {0x104f4}}}, - {0x104cd, {1|F|D, {0x104f5}}}, - {0x104ce, {1|F|D, {0x104f6}}}, - {0x104cf, {1|F|D, {0x104f7}}}, - {0x104d0, {1|F|D, {0x104f8}}}, - {0x104d1, {1|F|D, {0x104f9}}}, - {0x104d2, {1|F|D, {0x104fa}}}, - {0x104d3, {1|F|D, {0x104fb}}}, - {0x10c80, {1|F|D, {0x10cc0}}}, - {0x10c81, {1|F|D, {0x10cc1}}}, - {0x10c82, {1|F|D, {0x10cc2}}}, - {0x10c83, {1|F|D, {0x10cc3}}}, - {0x10c84, {1|F|D, {0x10cc4}}}, - {0x10c85, {1|F|D, {0x10cc5}}}, - {0x10c86, {1|F|D, {0x10cc6}}}, - {0x10c87, {1|F|D, {0x10cc7}}}, - {0x10c88, {1|F|D, {0x10cc8}}}, - {0x10c89, {1|F|D, {0x10cc9}}}, - {0x10c8a, {1|F|D, {0x10cca}}}, - {0x10c8b, {1|F|D, {0x10ccb}}}, - {0x10c8c, {1|F|D, {0x10ccc}}}, - {0x10c8d, {1|F|D, {0x10ccd}}}, - {0x10c8e, {1|F|D, {0x10cce}}}, - {0x10c8f, {1|F|D, {0x10ccf}}}, - {0x10c90, {1|F|D, {0x10cd0}}}, - {0x10c91, {1|F|D, {0x10cd1}}}, - {0x10c92, {1|F|D, {0x10cd2}}}, - {0x10c93, {1|F|D, {0x10cd3}}}, - {0x10c94, {1|F|D, {0x10cd4}}}, - {0x10c95, {1|F|D, {0x10cd5}}}, - {0x10c96, {1|F|D, {0x10cd6}}}, - {0x10c97, {1|F|D, {0x10cd7}}}, - {0x10c98, {1|F|D, {0x10cd8}}}, - {0x10c99, {1|F|D, {0x10cd9}}}, - {0x10c9a, {1|F|D, {0x10cda}}}, - {0x10c9b, {1|F|D, {0x10cdb}}}, - {0x10c9c, {1|F|D, {0x10cdc}}}, - {0x10c9d, {1|F|D, {0x10cdd}}}, - {0x10c9e, {1|F|D, {0x10cde}}}, - {0x10c9f, {1|F|D, {0x10cdf}}}, - {0x10ca0, {1|F|D, {0x10ce0}}}, - {0x10ca1, {1|F|D, {0x10ce1}}}, - {0x10ca2, {1|F|D, {0x10ce2}}}, - {0x10ca3, {1|F|D, {0x10ce3}}}, - {0x10ca4, {1|F|D, {0x10ce4}}}, - {0x10ca5, {1|F|D, {0x10ce5}}}, - {0x10ca6, {1|F|D, {0x10ce6}}}, - {0x10ca7, {1|F|D, {0x10ce7}}}, - {0x10ca8, {1|F|D, {0x10ce8}}}, - {0x10ca9, {1|F|D, {0x10ce9}}}, - {0x10caa, {1|F|D, {0x10cea}}}, - {0x10cab, {1|F|D, {0x10ceb}}}, - {0x10cac, {1|F|D, {0x10cec}}}, - {0x10cad, {1|F|D, {0x10ced}}}, - {0x10cae, {1|F|D, {0x10cee}}}, - {0x10caf, {1|F|D, {0x10cef}}}, - {0x10cb0, {1|F|D, {0x10cf0}}}, - {0x10cb1, {1|F|D, {0x10cf1}}}, - {0x10cb2, {1|F|D, {0x10cf2}}}, - {0x118a0, {1|F|D, {0x118c0}}}, - {0x118a1, {1|F|D, {0x118c1}}}, - {0x118a2, {1|F|D, {0x118c2}}}, - {0x118a3, {1|F|D, {0x118c3}}}, - {0x118a4, {1|F|D, {0x118c4}}}, - {0x118a5, {1|F|D, {0x118c5}}}, - {0x118a6, {1|F|D, {0x118c6}}}, - {0x118a7, {1|F|D, {0x118c7}}}, - {0x118a8, {1|F|D, {0x118c8}}}, - {0x118a9, {1|F|D, {0x118c9}}}, - {0x118aa, {1|F|D, {0x118ca}}}, - {0x118ab, {1|F|D, {0x118cb}}}, - {0x118ac, {1|F|D, {0x118cc}}}, - {0x118ad, {1|F|D, {0x118cd}}}, - {0x118ae, {1|F|D, {0x118ce}}}, - {0x118af, {1|F|D, {0x118cf}}}, - {0x118b0, {1|F|D, {0x118d0}}}, - {0x118b1, {1|F|D, {0x118d1}}}, - {0x118b2, {1|F|D, {0x118d2}}}, - {0x118b3, {1|F|D, {0x118d3}}}, - {0x118b4, {1|F|D, {0x118d4}}}, - {0x118b5, {1|F|D, {0x118d5}}}, - {0x118b6, {1|F|D, {0x118d6}}}, - {0x118b7, {1|F|D, {0x118d7}}}, - {0x118b8, {1|F|D, {0x118d8}}}, - {0x118b9, {1|F|D, {0x118d9}}}, - {0x118ba, {1|F|D, {0x118da}}}, - {0x118bb, {1|F|D, {0x118db}}}, - {0x118bc, {1|F|D, {0x118dc}}}, - {0x118bd, {1|F|D, {0x118dd}}}, - {0x118be, {1|F|D, {0x118de}}}, - {0x118bf, {1|F|D, {0x118df}}}, - {0x1e900, {1|F|D, {0x1e922}}}, - {0x1e901, {1|F|D, {0x1e923}}}, - {0x1e902, {1|F|D, {0x1e924}}}, - {0x1e903, {1|F|D, {0x1e925}}}, - {0x1e904, {1|F|D, {0x1e926}}}, - {0x1e905, {1|F|D, {0x1e927}}}, - {0x1e906, {1|F|D, {0x1e928}}}, - {0x1e907, {1|F|D, {0x1e929}}}, - {0x1e908, {1|F|D, {0x1e92a}}}, - {0x1e909, {1|F|D, {0x1e92b}}}, - {0x1e90a, {1|F|D, {0x1e92c}}}, - {0x1e90b, {1|F|D, {0x1e92d}}}, - {0x1e90c, {1|F|D, {0x1e92e}}}, - {0x1e90d, {1|F|D, {0x1e92f}}}, - {0x1e90e, {1|F|D, {0x1e930}}}, - {0x1e90f, {1|F|D, {0x1e931}}}, - {0x1e910, {1|F|D, {0x1e932}}}, - {0x1e911, {1|F|D, {0x1e933}}}, - {0x1e912, {1|F|D, {0x1e934}}}, - {0x1e913, {1|F|D, {0x1e935}}}, - {0x1e914, {1|F|D, {0x1e936}}}, - {0x1e915, {1|F|D, {0x1e937}}}, - {0x1e916, {1|F|D, {0x1e938}}}, - {0x1e917, {1|F|D, {0x1e939}}}, - {0x1e918, {1|F|D, {0x1e93a}}}, - {0x1e919, {1|F|D, {0x1e93b}}}, - {0x1e91a, {1|F|D, {0x1e93c}}}, - {0x1e91b, {1|F|D, {0x1e93d}}}, - {0x1e91c, {1|F|D, {0x1e93e}}}, - {0x1e91d, {1|F|D, {0x1e93f}}}, - {0x1e91e, {1|F|D, {0x1e940}}}, - {0x1e91f, {1|F|D, {0x1e941}}}, - {0x1e920, {1|F|D, {0x1e942}}}, - {0x1e921, {1|F|D, {0x1e943}}}, -#define CaseFold_Locale (*(CaseFold_11_Type (*)[2])(CaseFold_11_Table+1399)) - {0x0049, {1|F|D, {0x0069}}}, - {0x0130, {2|F|D, {0x0069, 0x0307}}}, -}; - -/* C code produced by gperf version 3.0.4 */ -/* Command-line: gperf -7 -k1,2,3 -F,-1 -c -j1 -i1 -t -T -E -C -H onigenc_unicode_CaseFold_11_hash -N onigenc_unicode_CaseFold_11_lookup -n */ - -/* maximum key range = 3623, duplicates = 0 */ - -#ifdef __GNUC__ -__inline -#else -#ifdef __cplusplus -inline -#endif -#endif -/*ARGSUSED*/ -static unsigned int -onigenc_unicode_CaseFold_11_hash(const OnigCodePoint code) -{ - static const unsigned short asso_values[] = - { - 1, 3627, 2, 28, 3, 303, 218, 5, 21, 167, - 2, 199, 194, 7, 3627, 3627, 3627, 3627, 3627, 3627, - 3627, 3627, 3627, 3627, 3627, 3627, 3627, 28, 3627, 3627, - 3627, 3627, 3627, 3627, 3627, 282, 3627, 3627, 3627, 3627, - 3627, 113, 3627, 3627, 3627, 3627, 3627, 3627, 3627, 3627, - 3627, 318, 3627, 3627, 3627, 3627, 3627, 3627, 3627, 1197, - 3627, 3627, 149, 73, 513, 1, 3627, 3627, 267, 17, - 3627, 3627, 3627, 3627, 3627, 286, 3627, 3627, 289, 617, - 291, 28, 1163, 444, 36, 430, 954, 110, 1767, 5, - 11, 22, 1761, 486, 1921, 250, 1746, 122, 1905, 163, - 1716, 262, 1880, 80, 1503, 68, 1704, 157, 1681, 376, - 1673, 209, 1822, 203, 1406, 498, 1622, 362, 1588, 316, - 475, 599, 1228, 538, 1160, 585, 1510, 544, 331, 685, - 1672, 603, 1536, 840, 1684, 786, 1594, 743, 1380, 700, - 142, 839, 1302, 865, 1173, 1329, 1730, 1043, 1449, 969, - 1437, 1108, 1360, 925, 1497, 723, 154, 810, 391, 1083, - 1777, 1047, 436, 1051, 47, 1342, 8, 974, 98, 1318, - 781, 1314, 148, 1403, 39, 1357, 18, 1265, 11, 928, - 92, 1205, 2, 1295, 3, 1181, 187, 1151, 385, 1132, - 107, 1280, 8, 1678, 41, 511, 42, 1655, 78, 294, - 134, 1857, 17, 784, 2, 1113, 57, 496, 52 - }; - return asso_values[bits_of(code, 2)+81] + asso_values[bits_of(code, 1)+2] + asso_values[bits_of(code, 0)]; -} - -#ifdef __GNUC__ -__inline -#if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__ -__attribute__ ((__gnu_inline__)) -#endif -#endif -static const CodePointList3 * -onigenc_unicode_CaseFold_11_lookup(const OnigCodePoint code) -{ - enum - { - MIN_CODE_VALUE = 0x41, - MAX_CODE_VALUE = 0x1e921, - TOTAL_KEYWORDS = 1401, - MIN_WORD_LENGTH = 3, - MAX_WORD_LENGTH = 3, - MIN_HASH_VALUE = 4, - MAX_HASH_VALUE = 3626 - }; - - static const short wordlist[] = - { - -1, -1, -1, -1, - /*0x1ffb*/ 816, - /*0x1fe7*/ 802, - /*0x017b*/ 118, - /*0x1f88*/ 729, - /*0x0408*/ 305, - /*0x0108*/ 61, - /*0x10408*/ 1214, - /*0x0055*/ 19, - /*0xab88*/ 1112, - /*0x1f89*/ 730, - /*0x0409*/ 306, - /*0x2c67*/ 916, - /*0x10409*/ 1215, - /*0x2c08*/ 873, - /*0xab89*/ 1113, - /*0x1ff9*/ 814, - /*0x2c6f*/ 921, - /*0x0179*/ 117, - -1, - /*0x2c09*/ 874, - /*0x1f8a*/ 731, - /*0x040a*/ 307, - /*0x010a*/ 62, - /*0x1040a*/ 1216, - /*0x2c88*/ 931, - /*0xab8a*/ 1114, - /*0x1f80*/ 721, - /*0x0400*/ 297, - /*0x0100*/ 57, - /*0x10400*/ 1206, - /*0x2c0a*/ 875, - /*0xab80*/ 1104, - /*0x10c88*/ 1290, - /*0x00d5*/ 47, - /*0x1f83*/ 724, - /*0x0403*/ 300, - /*0x2c00*/ 865, - /*0x10403*/ 1209, - /*0x10c89*/ 1291, - /*0xab83*/ 1107, - /*0x1ff3*/ 809, - /*0x2c8a*/ 932, - /*0x1e908*/ 1373, - /*0x00df*/ 56, - /*0x2c03*/ 868, - /*0x1fd3*/ 791, - /*0x0053*/ 17, - /*0x2c80*/ 927, - /*0x1e909*/ 1374, - /*0x10c8a*/ 1292, - /*0x2183*/ 838, - -1, - /*0x017f*/ 120, - -1, - /*0xa780*/ 1059, - /*0x10c80*/ 1282, - -1, - /*0x017d*/ 119, - -1, - /*0x1e90a*/ 1375, - /*0x2c7f*/ 926, - -1, -1, - /*0x10c83*/ 1285, - /*0x00dd*/ 54, - /*0x1e900*/ 1365, - /*0x1f98*/ 745, - /*0x0418*/ 321, - /*0x0118*/ 69, - /*0x10418*/ 1230, - /*0x037f*/ 233, - /*0xab98*/ 1128, - /*0x00d3*/ 45, - /*0x1e903*/ 1368, - -1, - /*0x1e88*/ 607, - /*0x2c18*/ 889, - -1, - /*0x1f96*/ 743, - /*0x0416*/ 319, - /*0x0116*/ 68, - /*0x10416*/ 1228, - -1, - /*0xab96*/ 1126, - -1, -1, - /*0x2c75*/ 924, - /*0x2c98*/ 939, - /*0x2c16*/ 887, - -1, - /*0x1fe3*/ 799, - -1, - /*0x1e8a*/ 608, - -1, - /*0xa798*/ 1068, - /*0x10c98*/ 1306, - /*0x1fd7*/ 793, - /*0x0057*/ 21, - /*0x1e80*/ 603, - /*0x2c96*/ 938, - /*0x2c63*/ 914, - -1, -1, -1, -1, - /*0x1e918*/ 1389, - /*0xa796*/ 1067, - /*0x10c96*/ 1304, - /*0x1f86*/ 727, - /*0x0406*/ 303, - /*0x0106*/ 60, - /*0x10406*/ 1212, - /*0x13fb*/ 527, - /*0xab86*/ 1110, - -1, - /*0x2c6d*/ 919, - -1, - /*0x1e916*/ 1387, - /*0x2c06*/ 871, - -1, - /*0x1f90*/ 737, - /*0x0410*/ 313, - /*0x0110*/ 65, - /*0x10410*/ 1222, - -1, - /*0xab90*/ 1120, - /*0x2ced*/ 978, - /*0x13f9*/ 525, - -1, - /*0x2c86*/ 930, - /*0x2c10*/ 881, - -1, - /*0x1ff7*/ 812, - -1, -1, -1, - /*0xa786*/ 1062, - /*0x10c86*/ 1288, - /*0x1e98*/ 616, - -1, - /*0x1fbb*/ 777, - /*0x2c90*/ 935, - /*0x013b*/ 85, - -1, -1, - /*0xabbb*/ 1163, - /*0x1fdb*/ 797, - /*0x1e906*/ 1371, - /*0xa790*/ 1065, - /*0x10c90*/ 1298, - /*0x1e96*/ 614, - /*0x1e08*/ 543, - /*0x1fcb*/ 788, - /*0x004b*/ 9, - -1, - /*0x1f9a*/ 747, - /*0x041a*/ 323, - /*0x011a*/ 70, - /*0x1041a*/ 1232, - /*0x1e910*/ 1381, - /*0xab9a*/ 1130, - /*0x1f92*/ 739, - /*0x0412*/ 315, - /*0x0112*/ 66, - /*0x10412*/ 1224, - /*0x2c1a*/ 891, - /*0xab92*/ 1122, - /*0x13fd*/ 529, - /*0x1e0a*/ 544, - /*0x0388*/ 235, - -1, - /*0x2c12*/ 883, - /*0x03d5*/ 273, - /*0x00db*/ 52, - /*0x1e00*/ 539, - /*0x0389*/ 236, - /*0x2c9a*/ 940, - -1, -1, - /*0x00cb*/ 37, - /*0x1e86*/ 606, - /*0x03f9*/ 292, - /*0x2c92*/ 936, - /*0xa79a*/ 1069, - /*0x10c9a*/ 1308, - /*0x1fe9*/ 804, - /*0x038a*/ 237, - -1, -1, - /*0xa792*/ 1066, - /*0x10c92*/ 1300, - -1, - /*0x1e90*/ 611, - -1, - /*0x1e91a*/ 1391, - /*0x2c69*/ 917, - /*0x0508*/ 425, - -1, -1, - /*0x0555*/ 481, - /*0x1e912*/ 1383, - /*0x1fa0*/ 753, - /*0x0420*/ 329, - /*0x0120*/ 73, - /*0x10420*/ 1238, - /*0x03f1*/ 288, - /*0xaba0*/ 1136, - /*0x1f9e*/ 751, - /*0x041e*/ 327, - /*0x011e*/ 72, - /*0x1041e*/ 1236, - /*0x2c20*/ 897, - /*0xab9e*/ 1134, - /*0x050a*/ 426, - /*0x1e18*/ 551, - -1, - /*0x03ff*/ 296, - /*0x2c1e*/ 895, - /*0x048a*/ 362, - /*0x0500*/ 421, - /*0x0208*/ 194, - /*0x03fd*/ 294, - /*0x2ca0*/ 943, - -1, - /*0x0480*/ 361, - -1, - /*0x1e16*/ 550, - /*0x1e9a*/ 618, - /*0x2c9e*/ 942, - /*0xa7a0*/ 1072, - /*0x10ca0*/ 1314, - -1, - /*0x0398*/ 249, - /*0x1e92*/ 612, - -1, - /*0xa79e*/ 1071, - /*0x10c9e*/ 1312, - /*0x020a*/ 195, - /*0x0553*/ 479, - -1, - /*0x1e920*/ 1397, - -1, - /*0x03f5*/ 290, - /*0x0200*/ 190, - /*0x0396*/ 247, - /*0x104d3*/ 1281, - /*0x1e91e*/ 1395, - -1, - /*0x1f8e*/ 735, - /*0x040e*/ 311, - /*0x010e*/ 64, - /*0x1040e*/ 1220, - -1, - /*0xab8e*/ 1118, - -1, -1, - /*0x1e06*/ 542, - -1, - /*0x2c0e*/ 879, - /*0x0518*/ 433, - /*0x1f94*/ 741, - /*0x0414*/ 317, - /*0x0114*/ 67, - /*0x10414*/ 1226, - /*0x0498*/ 369, - /*0xab94*/ 1124, - /*0x2165*/ 827, - /*0x2167*/ 829, - /*0x1e10*/ 547, - /*0x2c8e*/ 934, - /*0x2c14*/ 885, - /*0x0516*/ 432, - /*0x216f*/ 837, - /*0x1ea0*/ 621, - /*0x0386*/ 234, - /*0x2161*/ 823, - /*0x0496*/ 368, - /*0x10c8e*/ 1296, - -1, - /*0x1e9e*/ 620, - -1, - /*0x2c94*/ 937, - -1, - /*0x0218*/ 202, - -1, -1, - /*0x0390*/ 241, - /*0x1e90e*/ 1379, - -1, - /*0x10c94*/ 1302, - -1, - /*0xa77b*/ 1056, - /*0x1ff6*/ 811, - /*0x0476*/ 356, - /*0x0176*/ 115, - /*0x0216*/ 201, - -1, -1, - /*0x03f7*/ 291, - /*0x1e914*/ 1385, - -1, - /*0x0506*/ 424, - -1, - /*0x1e1a*/ 552, - -1, -1, - /*0xa779*/ 1055, - -1, - /*0x01d5*/ 167, - /*0x1e12*/ 548, - -1, - /*0x0189*/ 126, - /*0x0376*/ 232, - /*0x0510*/ 429, - /*0x1fa6*/ 759, - /*0x0426*/ 335, - /*0x0126*/ 76, - /*0x10426*/ 1244, - /*0x0490*/ 365, - /*0xaba6*/ 1142, - /*0x1e8e*/ 610, - /*0x039a*/ 251, - /*0x018a*/ 127, - -1, - /*0x2c26*/ 903, - /*0x0206*/ 193, - -1, - /*0x0392*/ 243, - -1, - /*0x1faf*/ 768, - /*0x042f*/ 344, - -1, - /*0x1e94*/ 613, - /*0x053b*/ 455, - /*0xabaf*/ 1151, - /*0x2ca6*/ 946, - -1, - /*0x0210*/ 198, - -1, -1, - /*0x104bb*/ 1257, - /*0x01f1*/ 181, - /*0xa7a6*/ 1075, - /*0x10ca6*/ 1320, - -1, - /*0x054b*/ 471, - /*0xa77d*/ 1057, - /*0x01d3*/ 166, - /*0x051a*/ 434, - /*0x1e20*/ 555, - /*0x04cb*/ 395, - -1, - /*0x104cb*/ 1273, - /*0x049a*/ 370, - /*0x0512*/ 430, - /*0x1e1e*/ 554, - /*0x2163*/ 825, - /*0x023b*/ 217, - /*0x10caf*/ 1329, - /*0x0492*/ 366, - /*0x1fa4*/ 757, - /*0x0424*/ 333, - /*0x0124*/ 75, - /*0x10424*/ 1242, - /*0x1ef6*/ 664, - /*0xaba4*/ 1140, - -1, - /*0x03a0*/ 257, - /*0x0198*/ 137, - -1, - /*0x2c24*/ 901, - /*0x216d*/ 835, - /*0x021a*/ 203, - /*0x039e*/ 255, - /*0x1f9c*/ 749, - /*0x041c*/ 325, - /*0x011c*/ 71, - /*0x1041c*/ 1234, - /*0x0212*/ 199, - /*0xab9c*/ 1132, - /*0x0196*/ 135, - /*0x2ca4*/ 945, - -1, - /*0x1feb*/ 806, - /*0x2c1c*/ 893, - -1, - /*0x1ea6*/ 624, - -1, - /*0xa7a4*/ 1074, - /*0x10ca4*/ 1318, - /*0x004d*/ 11, - -1, -1, - /*0x2c6b*/ 918, - /*0x0520*/ 437, - /*0x2c9c*/ 941, - /*0x1e0e*/ 546, - -1, - /*0x01d7*/ 168, - /*0x04a0*/ 373, - /*0x051e*/ 436, - -1, - /*0xa79c*/ 1070, - /*0x10c9c*/ 1310, - /*0x2ceb*/ 977, - /*0x049e*/ 372, - -1, -1, - /*0x1e14*/ 549, - -1, - /*0x0186*/ 124, - -1, -1, - /*0x1e91c*/ 1393, - /*0x038e*/ 239, - -1, - /*0x00cd*/ 39, - -1, - /*0x0220*/ 206, - -1, -1, - /*0x10bb*/ 511, - /*0x0190*/ 131, - -1, - /*0x021e*/ 205, - /*0x24bb*/ 844, - /*0x0394*/ 245, - -1, - /*0x1f84*/ 725, - /*0x0404*/ 301, - /*0x0104*/ 59, - /*0x10404*/ 1210, - /*0x1ea4*/ 623, - /*0xab84*/ 1108, - /*0x01f7*/ 185, - /*0x0051*/ 15, - -1, - /*0x24cb*/ 860, - /*0x2c04*/ 869, - -1, - /*0x1e76*/ 598, - /*0x050e*/ 428, - /*0x1f82*/ 723, - /*0x0402*/ 299, - /*0x0102*/ 58, - /*0x10402*/ 1208, - /*0x048e*/ 364, - /*0xab82*/ 1106, - /*0x01db*/ 170, - /*0x2c84*/ 929, - -1, - /*0x2169*/ 831, - /*0x2c02*/ 867, - /*0x0514*/ 431, - /*0x01cb*/ 162, - -1, - /*0xa784*/ 1061, - /*0x10c84*/ 1286, - /*0x0494*/ 367, - /*0x118bb*/ 1360, - -1, - /*0x00d1*/ 43, - /*0x1e26*/ 558, - /*0x2c82*/ 928, - -1, - /*0x020e*/ 197, - -1, - /*0x1e904*/ 1369, - -1, -1, - /*0xa782*/ 1060, - /*0x10c82*/ 1284, - -1, - /*0x1fa7*/ 760, - /*0x0427*/ 336, - -1, - /*0x10427*/ 1245, - /*0x0214*/ 200, - /*0xaba7*/ 1143, - -1, - /*0x03a6*/ 262, - /*0x1e902*/ 1367, - /*0x10a0*/ 484, - /*0x2c27*/ 904, - /*0x1f8c*/ 733, - /*0x040c*/ 309, - /*0x010c*/ 63, - /*0x1040c*/ 1218, - -1, - /*0xab8c*/ 1116, - /*0x04f6*/ 416, - -1, -1, -1, - /*0x2c0c*/ 877, - /*0x047e*/ 360, - /*0x1fa2*/ 755, - /*0x0422*/ 331, - /*0x0122*/ 74, - /*0x10422*/ 1240, - /*0x1e84*/ 605, - /*0xaba2*/ 1138, - /*0x10ca7*/ 1321, - /*0x01a0*/ 141, - /*0x2c7e*/ 925, - /*0x2c8c*/ 933, - /*0x2c22*/ 899, - /*0x0526*/ 440, - /*0x1e24*/ 557, - /*0x1ff2*/ 808, - /*0x0472*/ 354, - /*0x0172*/ 113, - /*0x04a6*/ 376, - /*0x10c8c*/ 1294, - /*0x1e82*/ 604, - /*0x1f08*/ 669, - -1, - /*0x2ca2*/ 944, - /*0x1f6f*/ 720, - /*0x2c72*/ 923, - /*0x118a0*/ 1333, - /*0x1f09*/ 670, - /*0x1e1c*/ 553, - /*0x1e90c*/ 1377, - /*0xa7a2*/ 1073, - /*0x10ca2*/ 1316, - /*0x03a4*/ 260, - /*0xfb00*/ 1168, - /*0x1f5f*/ 712, - /*0x0372*/ 231, - /*0x2cf2*/ 979, - /*0x0226*/ 209, - /*0x1f0a*/ 671, - -1, -1, - /*0xfb03*/ 1171, - /*0x1faa*/ 763, - /*0x042a*/ 339, - /*0x012a*/ 78, - -1, - /*0x039c*/ 253, - /*0xabaa*/ 1146, - /*0x1fae*/ 767, - /*0x042e*/ 343, - /*0x012e*/ 80, - -1, - /*0x2c2a*/ 907, - /*0xabae*/ 1150, - -1, - /*0x1f5d*/ 711, - /*0x018e*/ 129, - -1, - /*0x2c2e*/ 911, - /*0x0524*/ 439, - -1, -1, - /*0x1e8c*/ 609, - /*0x2caa*/ 948, - /*0x04a4*/ 375, - -1, -1, -1, - /*0x0194*/ 134, - /*0x2cae*/ 950, - /*0xa7aa*/ 1077, - /*0x10caa*/ 1324, - /*0x1efe*/ 668, - /*0x051c*/ 435, - /*0x1ea2*/ 622, - -1, - /*0xa7ae*/ 1081, - /*0x10cae*/ 1328, - /*0x049c*/ 371, - -1, -1, -1, - /*0x1e04*/ 541, - /*0x0224*/ 208, - /*0x1f18*/ 677, - /*0xfb16*/ 1178, - /*0x2126*/ 818, - /*0x1ef2*/ 662, - /*0x054d*/ 473, - /*0x1fac*/ 765, - /*0x042c*/ 341, - /*0x012c*/ 79, - -1, - /*0x04cd*/ 396, - /*0xabac*/ 1148, - /*0x104cd*/ 1275, - /*0x1e02*/ 540, - /*0x021c*/ 204, - -1, - /*0x2c2c*/ 909, - /*0x01f6*/ 184, - /*0x10a6*/ 490, - -1, - /*0x1fa8*/ 761, - /*0x0428*/ 337, - /*0x0128*/ 77, - /*0x03d1*/ 272, - /*0x1fb2*/ 769, - /*0xaba8*/ 1144, - /*0x0132*/ 81, - /*0x2cac*/ 949, - /*0xa726*/ 1019, - /*0xabb2*/ 1154, - /*0x2c28*/ 905, - /*0x1eaa*/ 626, - /*0xfb06*/ 1174, - /*0x10af*/ 499, - /*0xa7ac*/ 1079, - /*0x10cac*/ 1326, - -1, - /*0x1eae*/ 628, - -1, - /*0x01a6*/ 144, - /*0x1f6d*/ 718, - /*0x2ca8*/ 947, - -1, - /*0xa688*/ 1007, - /*0x0504*/ 423, - /*0x2cb2*/ 952, - -1, -1, - /*0xa7a8*/ 1076, - /*0x10ca8*/ 1322, - /*0x0551*/ 477, - -1, - /*0xa7b2*/ 1084, - /*0x10cb2*/ 1332, - /*0x01af*/ 149, - /*0x1e0c*/ 545, - /*0x118a6*/ 1339, - /*0x104d1*/ 1279, - /*0x0502*/ 422, - -1, - /*0xa68a*/ 1008, - -1, - /*0x03a7*/ 263, - -1, - /*0x10a4*/ 488, - /*0x1e7e*/ 602, - /*0xa680*/ 1003, - /*0x1e22*/ 556, - /*0x0204*/ 192, - -1, -1, - /*0x118af*/ 1348, - /*0x216b*/ 833, - /*0x038c*/ 238, - /*0xa724*/ 1018, - /*0x1f3b*/ 694, - -1, -1, - /*0x1eac*/ 627, - -1, - /*0x1e72*/ 596, - /*0x1f5b*/ 710, - /*0x0202*/ 191, - /*0x03fe*/ 295, - -1, - /*0x01a4*/ 143, - -1, - /*0x1f4b*/ 702, - -1, -1, - /*0x1f1a*/ 679, - -1, - /*0x1ea8*/ 625, - /*0x10cd*/ 523, - /*0xff26*/ 1185, - -1, - /*0x1eb2*/ 630, - /*0x24cd*/ 862, - -1, - /*0x019c*/ 138, - /*0x050c*/ 427, - -1, - /*0x118a4*/ 1337, - -1, -1, - /*0x048c*/ 363, - /*0xa698*/ 1015, - /*0x1e2a*/ 560, - /*0x0130*/ 1400, - /*0xff2f*/ 1194, - -1, - /*0xabb0*/ 1152, - /*0x0522*/ 438, - /*0x1e2e*/ 562, - /*0x01cd*/ 163, - /*0x04fe*/ 420, - -1, - /*0x04a2*/ 374, - /*0xa696*/ 1014, - -1, - /*0x1f69*/ 714, - /*0x1fba*/ 776, - -1, -1, - /*0x020c*/ 196, - /*0x03aa*/ 266, - /*0xabba*/ 1162, - /*0x2cb0*/ 951, - -1, -1, - /*0x04f2*/ 414, - -1, -1, -1, - /*0xa7b0*/ 1082, - /*0x10cb0*/ 1330, - /*0x0222*/ 207, - -1, -1, -1, - /*0xff24*/ 1183, - -1, - /*0x2cba*/ 956, - -1, - /*0x1fca*/ 787, - /*0x004a*/ 8, - /*0x014a*/ 93, - -1, - /*0xa686*/ 1006, - -1, -1, -1, - /*0x052a*/ 442, - /*0x0184*/ 123, - /*0x1e2c*/ 561, - -1, -1, - /*0x04aa*/ 378, - /*0x052e*/ 444, - /*0x01d1*/ 165, - /*0xa690*/ 1011, - -1, -1, - /*0x04ae*/ 380, - /*0x1fb8*/ 774, - /*0x2cca*/ 964, - -1, - /*0x0182*/ 122, - /*0x1e28*/ 559, - /*0xabb8*/ 1160, - -1, - /*0x00ca*/ 36, - /*0x1e32*/ 564, - -1, -1, -1, - /*0x022a*/ 211, - /*0x10a7*/ 491, - /*0x1eb0*/ 629, - -1, -1, -1, - /*0x022e*/ 213, - /*0x1f0e*/ 675, - /*0xfb14*/ 1176, - /*0x2cb8*/ 955, - /*0x03a8*/ 264, - -1, -1, -1, -1, -1, -1, - /*0x1eba*/ 634, - -1, - /*0xa69a*/ 1016, - -1, -1, - /*0x01a7*/ 145, - /*0x052c*/ 443, - /*0x10a2*/ 486, - /*0xa692*/ 1012, - /*0x1fd9*/ 795, - /*0x0059*/ 23, - /*0x04ac*/ 379, - /*0x1ffa*/ 815, - /*0x047a*/ 358, - /*0x1fb6*/ 772, - /*0xa77e*/ 1058, - /*0x0136*/ 83, - /*0xa722*/ 1017, - -1, - /*0xabb6*/ 1158, - /*0x0528*/ 441, - -1, - /*0x118a7*/ 1340, - /*0x1eca*/ 642, - /*0x0532*/ 446, - /*0x04a8*/ 377, - /*0x01fe*/ 189, - -1, - /*0x01a2*/ 142, - /*0x04b2*/ 382, - /*0x022c*/ 212, - /*0x104b2*/ 1248, - /*0x212a*/ 819, - -1, -1, - /*0x2cb6*/ 954, - /*0x00d9*/ 50, - -1, - /*0x1fcc*/ 789, - /*0x004c*/ 10, - /*0x014c*/ 94, - /*0x01f2*/ 182, - /*0xa7b6*/ 1087, - /*0x1eb8*/ 633, - /*0x0228*/ 210, - /*0x118a2*/ 1335, - -1, - /*0x10aa*/ 494, - /*0x0232*/ 215, - -1, -1, -1, -1, - /*0x10ae*/ 498, - -1, -1, -1, - /*0xa72a*/ 1021, - -1, - /*0x2ccc*/ 965, - /*0xff27*/ 1186, - /*0x1e30*/ 563, - -1, - /*0xa72e*/ 1023, - -1, - /*0x00cc*/ 38, - -1, - /*0x1fbc*/ 778, - /*0x1fb4*/ 771, - -1, - /*0x0134*/ 82, - /*0x1f2f*/ 690, - /*0xabbc*/ 1164, - /*0xabb4*/ 1156, - /*0x01ae*/ 148, - -1, - /*0x1e3a*/ 568, - -1, -1, - /*0x03b0*/ 268, - -1, -1, -1, - /*0xff22*/ 1181, - /*0x1efa*/ 666, - /*0x118aa*/ 1343, - /*0x1eb6*/ 632, - -1, - /*0x2cbc*/ 957, - /*0x2cb4*/ 953, - -1, - /*0x118ae*/ 1347, - -1, - /*0x1fbe*/ 779, - /*0x10ac*/ 496, - /*0xa68e*/ 1010, - /*0xa7b4*/ 1086, - /*0x2132*/ 821, - /*0xabbe*/ 1166, - /*0x1e4a*/ 576, - -1, -1, -1, -1, - /*0xa72c*/ 1022, - -1, -1, - /*0xa694*/ 1013, - /*0x10a8*/ 492, - -1, - /*0x1ecc*/ 643, - /*0x04b0*/ 381, - /*0x10b2*/ 502, - /*0x104b0*/ 1246, - /*0x2cbe*/ 958, - /*0x01ac*/ 147, - /*0x1f1c*/ 681, - -1, - /*0xa728*/ 1020, - /*0x1e38*/ 567, - -1, - /*0x053a*/ 454, - /*0xa732*/ 1024, - /*0xff2a*/ 1189, - /*0x13fa*/ 526, - /*0x1f6b*/ 716, - /*0x04ba*/ 386, - -1, - /*0x104ba*/ 1256, - /*0xff2e*/ 1193, - /*0x0230*/ 214, - /*0x1f4d*/ 704, - /*0x118ac*/ 1345, - /*0x01b2*/ 151, - -1, -1, -1, -1, -1, - /*0x1ebc*/ 635, - /*0x1eb4*/ 631, - -1, -1, -1, - /*0x054a*/ 470, - /*0x023a*/ 216, - /*0x118a8*/ 1341, - -1, -1, -1, - /*0x118b2*/ 1351, - /*0x104ca*/ 1272, - -1, - /*0x1fc8*/ 785, - /*0x0048*/ 7, - -1, - /*0x1fe2*/ 798, - /*0x0462*/ 346, - /*0x0162*/ 105, - /*0xfb04*/ 1172, - /*0x1e7a*/ 600, - -1, - /*0x1e36*/ 566, - -1, - /*0x0538*/ 452, - /*0x1ebe*/ 636, - /*0x2c62*/ 913, - -1, - /*0x024a*/ 226, - /*0x04b8*/ 385, - /*0xff2c*/ 1191, - /*0x104b8*/ 1254, - -1, - /*0xfb02*/ 1170, - /*0x2cc8*/ 963, - -1, -1, - /*0x2ce2*/ 976, - /*0x03fa*/ 293, - -1, - /*0x00c8*/ 34, - -1, - /*0x1f85*/ 726, - /*0x0405*/ 302, - /*0xff28*/ 1187, - /*0x10405*/ 1211, - /*0x1e4c*/ 577, - /*0xab85*/ 1109, - /*0xff32*/ 1197, - -1, -1, -1, - /*0x2c05*/ 870, - -1, - /*0x10b0*/ 500, - -1, -1, - /*0x1fc4*/ 782, - /*0x0044*/ 3, - -1, -1, -1, - /*0x1fd6*/ 792, - /*0x0056*/ 20, - /*0x0156*/ 99, - -1, -1, - /*0x0536*/ 450, - -1, - /*0x10ba*/ 510, - /*0x04fa*/ 418, - /*0x10c85*/ 1287, - /*0x04b6*/ 384, - /*0x24ba*/ 843, - /*0x104b6*/ 1252, - /*0x1e3c*/ 569, - /*0x1e34*/ 565, - -1, - /*0x2cc4*/ 961, - /*0xa73a*/ 1028, - -1, - /*0x1e905*/ 1370, - -1, - /*0x2cd6*/ 970, - /*0x00c4*/ 30, - /*0x1ec8*/ 641, - /*0x1f0c*/ 673, - -1, - /*0x1ee2*/ 654, - /*0x00d6*/ 48, - -1, - /*0x054c*/ 472, - /*0x118b0*/ 1349, - -1, -1, -1, - /*0x24ca*/ 859, - -1, - /*0x104cc*/ 1274, - -1, - /*0xa64a*/ 985, - /*0x1e3e*/ 570, - /*0xa74a*/ 1036, - -1, -1, -1, -1, - /*0x118ba*/ 1359, - -1, -1, -1, -1, - /*0x10b8*/ 508, - /*0x01ca*/ 161, - -1, - /*0x024c*/ 227, - /*0x24b8*/ 841, - -1, -1, -1, - /*0x053c*/ 456, - /*0x0534*/ 448, - /*0xa738*/ 1027, - -1, -1, - /*0x04bc*/ 387, - /*0x04b4*/ 383, - /*0x104bc*/ 1258, - /*0x104b4*/ 1250, - /*0x1ec4*/ 639, - /*0xff30*/ 1195, - /*0x1fc2*/ 780, - /*0x0042*/ 1, - /*0x01b8*/ 155, - /*0x1ed6*/ 648, - /*0xa684*/ 1005, - /*0x0050*/ 14, - /*0x0150*/ 96, - /*0x1f2a*/ 685, - /*0x1fd2*/ 790, - /*0x0052*/ 16, - /*0x0152*/ 97, - -1, -1, - /*0x1f2e*/ 689, - /*0xff3a*/ 1205, - /*0x053e*/ 458, - -1, -1, - /*0xa682*/ 1004, - /*0x118b8*/ 1357, - /*0x04be*/ 388, - /*0x2cc2*/ 960, - /*0x104be*/ 1260, - -1, - /*0x10b6*/ 506, - /*0x2cd0*/ 967, - -1, - /*0x00c2*/ 28, - /*0x24b6*/ 839, - /*0x2cd2*/ 968, - /*0x1e48*/ 575, - /*0x00d0*/ 42, - -1, - /*0x1e62*/ 588, - /*0xa736*/ 1026, - /*0x00d2*/ 44, - -1, -1, -1, - /*0x023e*/ 219, - /*0x01d9*/ 169, - /*0x004e*/ 12, - /*0x014e*/ 95, - /*0x01fa*/ 187, - -1, -1, -1, -1, -1, -1, - -1, - /*0x03e2*/ 280, - /*0x24cc*/ 861, - -1, - /*0x1f2c*/ 687, - -1, - /*0xa64c*/ 986, - /*0xff38*/ 1203, - /*0xa74c*/ 1037, - -1, - /*0xa68c*/ 1009, - /*0x2cce*/ 966, - /*0x118b6*/ 1355, - -1, -1, - /*0x1fc6*/ 783, - /*0x0046*/ 5, - /*0x00ce*/ 40, - /*0x1f28*/ 683, - -1, - /*0x1ffc*/ 817, - /*0x047c*/ 359, - /*0x1ec2*/ 638, - -1, - /*0x1e44*/ 573, - /*0x0548*/ 468, - /*0x1ed0*/ 645, - /*0x10bc*/ 512, - /*0x10b4*/ 504, - /*0x1e56*/ 582, - /*0x1ed2*/ 646, - /*0x24bc*/ 845, - /*0x104c8*/ 1270, - /*0x04e2*/ 406, - -1, -1, - /*0x2cc6*/ 962, - /*0xa73c*/ 1029, - /*0xa734*/ 1025, - /*0x1fec*/ 807, - /*0x046c*/ 351, - /*0x016c*/ 110, - /*0x00c6*/ 32, - -1, -1, -1, -1, - /*0x03d6*/ 274, - /*0x01bc*/ 156, - /*0x0248*/ 225, - /*0xff36*/ 1201, - -1, -1, - /*0x10be*/ 514, - -1, -1, -1, - /*0x24be*/ 847, - /*0x1fea*/ 805, - /*0x046a*/ 350, - /*0x016a*/ 109, - -1, - /*0x1ece*/ 644, - /*0xa73e*/ 1030, - -1, - /*0x118bc*/ 1361, - /*0x118b4*/ 1353, - /*0x1fab*/ 764, - /*0x042b*/ 340, - /*0x0544*/ 464, - /*0x1f81*/ 722, - /*0x0401*/ 298, - /*0xabab*/ 1147, - /*0x10401*/ 1207, - /*0x0556*/ 482, - /*0xab81*/ 1105, - /*0x104c4*/ 1266, - /*0x2c2b*/ 908, - -1, - /*0x04d6*/ 400, - /*0x2c01*/ 866, - -1, - /*0x013f*/ 87, - -1, -1, - /*0xabbf*/ 1167, - -1, - /*0x1ec6*/ 640, - /*0x1fe8*/ 803, - /*0x0468*/ 349, - /*0x0168*/ 108, - /*0x118be*/ 1363, - /*0x1efc*/ 667, - /*0x0244*/ 222, - -1, - /*0xa7ab*/ 1078, - /*0x10cab*/ 1325, - -1, - /*0x1e42*/ 572, - /*0x10c81*/ 1283, - -1, - /*0x2162*/ 824, - /*0x1e50*/ 579, - -1, - /*0xff34*/ 1199, - -1, - /*0x1e52*/ 580, - -1, - /*0x1c88*/ 538, - /*0x1e901*/ 1366, - -1, - /*0x1eec*/ 659, - /*0x1fe4*/ 800, - /*0x0464*/ 347, - /*0x0164*/ 106, - -1, - /*0x03c2*/ 269, - /*0x24c8*/ 857, - -1, - /*0x1f3a*/ 693, - /*0x03d0*/ 271, - /*0xa648*/ 984, - /*0x2c64*/ 915, - /*0xa748*/ 1035, - /*0xa662*/ 997, - -1, - /*0xa762*/ 1048, - -1, -1, -1, - /*0x1eea*/ 658, - /*0x1c80*/ 530, - /*0x13fc*/ 528, - -1, - /*0x01c8*/ 160, - /*0x1fa9*/ 762, - /*0x0429*/ 338, - /*0x01e2*/ 173, - /*0x1e4e*/ 578, - /*0x1c83*/ 533, - /*0xaba9*/ 1145, - -1, - /*0x1f4a*/ 701, - /*0x0542*/ 462, - -1, - /*0x2c29*/ 906, - -1, - /*0x0550*/ 476, - -1, -1, - /*0x104c2*/ 1264, - /*0x0552*/ 478, - /*0x04d0*/ 397, - -1, - /*0x104d0*/ 1278, - -1, - /*0x04d2*/ 398, - /*0x10c4*/ 520, - /*0x104d2*/ 1280, - -1, - /*0x1ee8*/ 657, - /*0x24c4*/ 853, - /*0x1f38*/ 691, - /*0x1e46*/ 574, - /*0x10ca9*/ 1323, - /*0xa644*/ 982, - -1, - /*0xa744*/ 1033, - /*0x1e7c*/ 601, - -1, - /*0xa656*/ 991, - -1, - /*0xa756*/ 1042, - /*0x0460*/ 345, - /*0x0160*/ 104, - -1, -1, -1, - /*0x01c4*/ 157, - -1, -1, -1, - /*0x2c60*/ 912, - /*0x054e*/ 474, - /*0x1ee4*/ 655, - -1, -1, - /*0x1e6c*/ 593, - /*0x046e*/ 352, - /*0x016e*/ 111, - /*0x104ce*/ 1276, - -1, -1, - /*0x2ce0*/ 975, - -1, -1, -1, - /*0x2c6e*/ 920, - -1, -1, - /*0x1f59*/ 709, - -1, - /*0x1fe6*/ 801, - /*0x0466*/ 348, - /*0x0166*/ 107, - /*0x03ec*/ 285, - /*0x1e6a*/ 592, - /*0x024e*/ 228, - /*0x0546*/ 466, - -1, -1, - /*0x013d*/ 86, - -1, - /*0x1c86*/ 536, - /*0xabbd*/ 1165, - /*0x104c6*/ 1268, - -1, -1, - /*0x04fc*/ 419, - -1, -1, - /*0x1fda*/ 796, - /*0x005a*/ 24, - /*0x015a*/ 101, - /*0x03ea*/ 284, - /*0x1fd8*/ 794, - /*0x0058*/ 22, - /*0x0158*/ 100, - -1, - /*0x1f4c*/ 703, - -1, - /*0x10c2*/ 518, - /*0x0246*/ 224, - /*0x03ab*/ 267, - -1, - /*0x24c2*/ 851, - /*0x1e68*/ 591, - /*0x04ec*/ 411, - -1, - /*0xa642*/ 981, - -1, - /*0xa742*/ 1032, - /*0x2cda*/ 972, - /*0xa650*/ 988, - /*0x1ee0*/ 653, - /*0xa750*/ 1039, - /*0x2cd8*/ 971, - /*0xa652*/ 989, - /*0x00da*/ 51, - /*0xa752*/ 1040, - /*0x0054*/ 18, - /*0x0154*/ 98, - /*0x00d8*/ 49, - -1, - /*0x03e8*/ 283, - -1, - /*0x04ea*/ 410, - /*0x2cc0*/ 959, - /*0x1f3c*/ 695, - /*0x1eee*/ 660, - /*0x1e64*/ 589, - -1, -1, - /*0x00c0*/ 26, - -1, -1, - /*0x015e*/ 103, - /*0x1fc7*/ 784, - /*0x0047*/ 6, - /*0x0147*/ 91, - /*0x2cd4*/ 969, - -1, -1, - /*0x053f*/ 459, - /*0x1ee6*/ 656, - /*0x24ce*/ 863, - /*0x00d4*/ 46, - -1, - /*0x03e4*/ 281, - /*0xa64e*/ 987, - /*0x104bf*/ 1261, - /*0xa74e*/ 1038, - -1, -1, - /*0x1f3e*/ 697, - /*0x2cde*/ 974, - /*0x04e8*/ 409, - /*0x1fb9*/ 775, - -1, - /*0x0139*/ 84, - -1, - /*0x00de*/ 55, - /*0xabb9*/ 1161, - /*0x1eda*/ 650, - /*0x00c7*/ 33, - -1, -1, - /*0x1ed8*/ 649, - -1, -1, - /*0x24c6*/ 855, - /*0x03a9*/ 265, - -1, -1, - /*0xa646*/ 983, - /*0x216c*/ 834, - /*0xa746*/ 1034, - -1, - /*0x1ec0*/ 637, - -1, - /*0x04e4*/ 407, - -1, - /*0x015c*/ 102, - /*0x1fa1*/ 754, - /*0x0421*/ 330, - -1, - /*0x10421*/ 1239, - -1, - /*0xaba1*/ 1137, - -1, - /*0x1e60*/ 587, - /*0x1ed4*/ 647, - /*0x01fc*/ 188, - /*0x2c21*/ 898, - /*0x216a*/ 832, - -1, -1, -1, - /*0xa66c*/ 1002, - -1, - /*0xa76c*/ 1053, - /*0x2cdc*/ 973, - -1, - /*0x212b*/ 820, - -1, - /*0x1e6e*/ 594, - /*0x1ede*/ 652, - /*0x00dc*/ 53, - /*0x03e0*/ 279, - -1, -1, - /*0x01ec*/ 178, - /*0x10ca1*/ 1315, - -1, - /*0x1f48*/ 699, - /*0x0045*/ 4, - /*0x0145*/ 90, - /*0xa66a*/ 1001, - /*0x10ab*/ 495, - /*0xa76a*/ 1052, - /*0x1e66*/ 590, - -1, - /*0x1e921*/ 1398, - /*0x03ee*/ 286, - /*0x2168*/ 830, - -1, - /*0x1fc3*/ 781, - /*0x0043*/ 2, - /*0x0143*/ 89, - -1, - /*0x01ea*/ 177, - /*0x10bf*/ 515, - /*0xfb05*/ 1173, - -1, - /*0x0345*/ 229, - /*0x24bf*/ 848, - -1, -1, - /*0x03e6*/ 282, - /*0x1e5a*/ 584, - /*0x04e0*/ 405, - /*0x00c5*/ 31, - /*0x0181*/ 121, - /*0x1e58*/ 583, - -1, -1, -1, - /*0xa668*/ 1000, - /*0x2164*/ 826, - /*0xa768*/ 1051, - -1, -1, - /*0x1edc*/ 651, - /*0x00c3*/ 29, - /*0x1e40*/ 571, - /*0x04ee*/ 412, - /*0x118ab*/ 1344, - /*0x03da*/ 276, - -1, -1, - /*0x01e8*/ 176, - /*0x03d8*/ 275, - -1, - /*0x1f56*/ 708, - -1, -1, -1, - /*0x1e54*/ 581, - -1, - /*0x118bf*/ 1364, - /*0x04e6*/ 408, - /*0xa664*/ 998, - /*0x053d*/ 457, - /*0xa764*/ 1049, - /*0x1fc9*/ 786, - /*0x0049*/ 1399, - /*0x0149*/ 92, - -1, -1, - /*0x104bd*/ 1259, - /*0x1f97*/ 744, - /*0x0417*/ 320, - /*0x1e5e*/ 586, - /*0x10417*/ 1229, - /*0x01e4*/ 174, - /*0xab97*/ 1127, - /*0x10a9*/ 493, - /*0x1fad*/ 766, - /*0x042d*/ 342, - /*0x04da*/ 402, - /*0x2c17*/ 888, - -1, - /*0xabad*/ 1149, - /*0x04d8*/ 401, - /*0xff2b*/ 1190, - -1, - /*0x023d*/ 218, - /*0x2c2d*/ 910, - -1, - /*0x0540*/ 460, - /*0x03de*/ 278, - /*0x00c9*/ 35, - -1, -1, - /*0x04c0*/ 389, - -1, - /*0x104c0*/ 1262, - /*0x01a9*/ 146, - /*0x2160*/ 822, - /*0x10c97*/ 1305, - -1, -1, - /*0x0554*/ 480, - /*0x1fb3*/ 770, - -1, - /*0xa7ad*/ 1080, - /*0x10cad*/ 1327, - /*0x04d4*/ 399, - /*0xabb3*/ 1155, - /*0x1e917*/ 1388, - -1, -1, -1, - /*0x216e*/ 836, - /*0x118a9*/ 1342, - -1, -1, -1, - /*0x1e5c*/ 585, - -1, - /*0x0547*/ 467, - /*0xa660*/ 996, - /*0x04de*/ 404, - /*0xa760*/ 1047, - -1, - /*0x04c7*/ 393, - /*0x1f50*/ 705, - /*0x104c7*/ 1269, - /*0x2166*/ 828, - -1, - /*0x1f52*/ 706, - /*0xa7b3*/ 1085, - -1, -1, - /*0x01e0*/ 172, - -1, - /*0x03dc*/ 277, - -1, - /*0xa76e*/ 1054, - /*0x03a1*/ 258, - /*0x0539*/ 453, - -1, - /*0x1e97*/ 615, - -1, -1, -1, -1, - /*0x104b9*/ 1255, - -1, - /*0x01ee*/ 179, - /*0x10bd*/ 513, - /*0xa666*/ 999, - /*0xff29*/ 1188, - /*0xa766*/ 1050, - /*0x24bd*/ 846, - /*0x1fa5*/ 758, - /*0x0425*/ 334, - -1, - /*0x10425*/ 1243, - -1, - /*0xaba5*/ 1141, - /*0x1fb7*/ 773, - -1, -1, - /*0x01e6*/ 175, - /*0x2c25*/ 902, - /*0xabb7*/ 1159, - -1, - /*0x04dc*/ 403, - -1, - /*0xa65a*/ 993, - -1, - /*0xa75a*/ 1044, - -1, - /*0xa658*/ 992, - -1, - /*0xa758*/ 1043, - /*0x10c0*/ 516, - -1, -1, -1, - /*0x24c0*/ 849, - -1, -1, - /*0x10ca5*/ 1319, - /*0xa640*/ 980, - -1, - /*0xa740*/ 1031, - /*0x118bd*/ 1362, - /*0x1fa3*/ 756, - /*0x0423*/ 332, - -1, - /*0x10423*/ 1241, - /*0x1c84*/ 534, - /*0xaba3*/ 1139, - -1, -1, - /*0x0545*/ 465, - /*0xa654*/ 990, - /*0x2c23*/ 900, - /*0xa754*/ 1041, - -1, - /*0x04c5*/ 392, - -1, - /*0x104c5*/ 1267, - -1, -1, - /*0x1c82*/ 532, - /*0x10c7*/ 522, - /*0x0543*/ 463, - -1, - /*0x1f6c*/ 717, - /*0x24c7*/ 856, - /*0xa65e*/ 995, - /*0x04c3*/ 391, - /*0xa75e*/ 1046, - /*0x104c3*/ 1265, - -1, - /*0x10ca3*/ 1317, - -1, -1, - /*0x0245*/ 223, - /*0x1ff4*/ 810, - /*0x0474*/ 355, - /*0x0174*/ 114, - -1, - /*0x01de*/ 171, - -1, - /*0x10b9*/ 509, - /*0x01c7*/ 159, - /*0x1f6a*/ 715, - /*0xfb01*/ 1169, - /*0x24b9*/ 842, - /*0x0243*/ 221, - -1, -1, - /*0x0397*/ 248, - -1, -1, - /*0x1f2b*/ 686, - /*0x1f9d*/ 750, - /*0x041d*/ 326, - -1, - /*0x1041d*/ 1235, - /*0xabb1*/ 1153, - /*0xab9d*/ 1133, - /*0x0470*/ 353, - /*0x0170*/ 112, - /*0x1f9b*/ 748, - /*0x041b*/ 324, - /*0x2c1d*/ 894, - /*0x1041b*/ 1233, - /*0x1f3f*/ 698, - /*0xab9b*/ 1131, - /*0x10a1*/ 485, - /*0x2c70*/ 922, - /*0xabb5*/ 1157, - /*0x0549*/ 469, - /*0x2c1b*/ 892, - /*0xa65c*/ 994, - /*0x1f68*/ 713, - /*0xa75c*/ 1045, - /*0x04c9*/ 394, - -1, - /*0x104c9*/ 1271, - /*0x0370*/ 230, - /*0x118b9*/ 1358, - /*0xa7b1*/ 1083, - /*0x10cb1*/ 1331, - /*0x10c9d*/ 1311, - -1, - /*0x1f99*/ 746, - /*0x0419*/ 322, - -1, - /*0x10419*/ 1231, - -1, - /*0xab99*/ 1129, - /*0x10c9b*/ 1309, - /*0x00b5*/ 25, - /*0x1e91d*/ 1394, - -1, - /*0x2c19*/ 890, - -1, - /*0x1f93*/ 740, - /*0x0413*/ 316, - /*0x10c5*/ 521, - /*0x10413*/ 1225, - /*0x1e91b*/ 1392, - /*0xab93*/ 1123, - /*0x24c5*/ 854, - -1, -1, - /*0x118a1*/ 1334, - /*0x2c13*/ 884, - /*0x1ef4*/ 663, - -1, - /*0x0533*/ 447, - /*0x10c3*/ 519, - /*0x0041*/ 0, - /*0x0141*/ 88, - /*0x10c99*/ 1307, - /*0x24c3*/ 852, - -1, - /*0x104b3*/ 1249, - /*0xff39*/ 1204, - -1, - /*0x01c5*/ 158, - /*0x1f29*/ 684, - -1, -1, - /*0x1e919*/ 1390, - -1, - /*0x10c93*/ 1301, - /*0x1f8f*/ 736, - /*0x040f*/ 312, - -1, - /*0x1040f*/ 1221, - /*0x1ef0*/ 661, - /*0xab8f*/ 1119, - -1, - /*0x1e9b*/ 619, - /*0x03a5*/ 261, - /*0x1e913*/ 1384, - /*0x2c0f*/ 880, - /*0x00c1*/ 27, - -1, -1, -1, - /*0x1f8b*/ 732, - /*0x040b*/ 308, - /*0xff21*/ 1180, - /*0x1040b*/ 1217, - -1, - /*0xab8b*/ 1115, - /*0x1f87*/ 728, - /*0x0407*/ 304, - /*0xab7b*/ 1099, - /*0x10407*/ 1213, - /*0x2c0b*/ 876, - /*0xab87*/ 1111, - /*0x0587*/ 483, - -1, - /*0x10c8f*/ 1297, - /*0x1e99*/ 617, - /*0x2c07*/ 872, - /*0x004f*/ 13, - -1, -1, -1, - /*0x24c9*/ 858, - -1, - /*0xab79*/ 1097, - /*0x1e90f*/ 1380, - -1, - /*0x0537*/ 451, - /*0x03a3*/ 259, - /*0xa78b*/ 1063, - /*0x10c8b*/ 1293, - /*0x10ad*/ 497, - /*0x1f6e*/ 719, - -1, - /*0x104b7*/ 1253, - -1, - /*0x10c87*/ 1289, - -1, -1, -1, - /*0x1e90b*/ 1376, - -1, -1, - /*0x1e74*/ 597, - /*0x00cf*/ 41, - /*0x0197*/ 136, - /*0x1e907*/ 1372, - -1, - /*0xab71*/ 1089, - /*0xab73*/ 1091, - -1, -1, -1, -1, - /*0x1f3d*/ 696, - -1, -1, - /*0x10b3*/ 503, - -1, - /*0xab7f*/ 1103, - -1, - /*0x03f4*/ 289, - /*0x1f9f*/ 752, - /*0x041f*/ 328, - /*0xab7d*/ 1101, - /*0x1041f*/ 1237, - /*0x1e70*/ 595, - /*0xab9f*/ 1135, - -1, - /*0x118ad*/ 1346, - -1, -1, - /*0x2c1f*/ 896, - -1, -1, -1, -1, -1, - /*0x01b3*/ 152, - /*0x039d*/ 254, - -1, -1, -1, -1, - /*0x03f0*/ 287, - /*0xab75*/ 1093, - -1, - /*0x039b*/ 252, - -1, -1, -1, - /*0x10c9f*/ 1313, - -1, - /*0x04f4*/ 415, - /*0x1f54*/ 707, - /*0x118b3*/ 1352, - -1, - /*0x1ff8*/ 813, - /*0x0478*/ 357, - /*0x0178*/ 116, - -1, - /*0x1e91f*/ 1396, - -1, -1, -1, - /*0x0531*/ 445, - -1, - /*0xff2d*/ 1192, - -1, - /*0x10a5*/ 489, - /*0x0399*/ 250, - -1, - /*0x104b1*/ 1247, - -1, -1, - /*0x10b7*/ 507, - /*0x04f0*/ 413, - /*0x0535*/ 449, - -1, - /*0x24b7*/ 840, - /*0x1f95*/ 742, - /*0x0415*/ 318, - /*0x0393*/ 244, - /*0x10415*/ 1227, - /*0x104b5*/ 1251, - /*0xab95*/ 1125, - -1, -1, -1, -1, - /*0x2c15*/ 886, - -1, - /*0x1f39*/ 692, - /*0xff33*/ 1198, - -1, -1, - /*0x01b7*/ 154, - -1, -1, -1, -1, - /*0xab77*/ 1095, - -1, - /*0x10a3*/ 487, - -1, - /*0x1f91*/ 738, - /*0x0411*/ 314, - /*0x118a5*/ 1338, - /*0x10411*/ 1223, - /*0x10c95*/ 1303, - /*0xab91*/ 1121, - -1, - /*0x038f*/ 240, - /*0x118b7*/ 1356, - -1, - /*0x2c11*/ 882, - -1, -1, -1, - /*0x1e915*/ 1386, - -1, - /*0x1f8d*/ 734, - /*0x040d*/ 310, - /*0x0541*/ 461, - /*0x1040d*/ 1219, - -1, - /*0xab8d*/ 1117, - -1, - /*0x04c1*/ 390, - /*0x1ef8*/ 665, - /*0x104c1*/ 1263, - /*0x2c0d*/ 878, - -1, -1, - /*0x10c91*/ 1299, - -1, -1, -1, -1, -1, -1, - /*0x118a3*/ 1336, - -1, - /*0x03cf*/ 270, - /*0x1e911*/ 1382, - /*0xff25*/ 1184, - -1, - /*0x0241*/ 220, - -1, - /*0xa78d*/ 1064, - /*0x10c8d*/ 1295, - /*0xff37*/ 1202, - -1, - /*0x10b1*/ 501, - -1, -1, -1, - /*0x01f4*/ 183, - -1, -1, - /*0x1e90d*/ 1378, - -1, -1, -1, -1, - /*0x10b5*/ 505, - -1, -1, -1, - /*0x13f8*/ 524, - /*0x054f*/ 475, - -1, -1, -1, - /*0x01b1*/ 150, - /*0x019d*/ 139, - -1, - /*0x104cf*/ 1277, - -1, - /*0xff23*/ 1182, - /*0x01f0*/ 180, - -1, -1, -1, -1, -1, - /*0x01b5*/ 153, - -1, - /*0x039f*/ 256, - -1, -1, - /*0x118b1*/ 1350, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, - /*0x118b5*/ 1354, - /*0xfb17*/ 1179, - /*0x1e78*/ 599, - -1, -1, -1, - /*0x1f49*/ 700, - -1, - /*0x10c1*/ 517, - -1, -1, -1, - /*0x24c1*/ 850, - -1, -1, - /*0x0193*/ 133, - -1, -1, -1, - /*0x1f2d*/ 688, - -1, -1, -1, -1, -1, -1, - /*0xff31*/ 1196, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, - /*0xff35*/ 1200, - -1, -1, -1, -1, - /*0x0395*/ 246, - -1, - /*0x018f*/ 130, - -1, -1, -1, -1, -1, -1, - /*0x04f8*/ 417, - -1, -1, -1, -1, -1, - /*0xab76*/ 1094, - /*0x24cf*/ 864, - /*0x018b*/ 128, - -1, -1, -1, -1, -1, - /*0x0187*/ 125, - -1, - /*0x0391*/ 242, - -1, -1, -1, -1, -1, -1, - -1, - /*0x01cf*/ 164, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, - /*0x019f*/ 140, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, - /*0x1c85*/ 535, - -1, -1, -1, -1, -1, -1, - -1, -1, - /*0x01f8*/ 186, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, - /*0x1f1d*/ 682, - -1, -1, -1, -1, -1, -1, - -1, - /*0x1f1b*/ 680, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, - /*0x0191*/ 132, - -1, -1, -1, -1, -1, -1, - -1, -1, - /*0x1f19*/ 678, - /*0xfb13*/ 1175, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, - /*0x1f0f*/ 676, - -1, -1, -1, -1, - /*0xab7e*/ 1102, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, - /*0x1f0b*/ 672, - -1, -1, -1, -1, - /*0xab72*/ 1090, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, - /*0x1c81*/ 531, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, - /*0xfb15*/ 1177, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, - /*0x1f0d*/ 674, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, - /*0xab7a*/ 1098, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, - /*0xab7c*/ 1100, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, - /*0x1c87*/ 537, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, - /*0xab74*/ 1092, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, - /*0xab70*/ 1088, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, - /*0xab78*/ 1096 - }; - - if (code <= MAX_CODE_VALUE && code >= MIN_CODE_VALUE) - { - register int key = onigenc_unicode_CaseFold_11_hash(code); - - if (key <= MAX_HASH_VALUE && key >= 0) - { - register short s = wordlist[key]; - - if (s >= 0 && code1_equal(code, CaseFold_11_Table[s].from)) - return &CaseFold_11_Table[s].to; - } - } - return 0; -} - -static const CaseUnfold_11_Type CaseUnfold_11_Table[] = { -#define CaseUnfold_11 (*(CaseUnfold_11_Type (*)[1266])(CaseUnfold_11_Table+0)) - {0x0061, {1|U, {0x0041}}}, - {0x0062, {1|U, {0x0042}}}, - {0x0063, {1|U, {0x0043}}}, - {0x0064, {1|U, {0x0044}}}, - {0x0065, {1|U, {0x0045}}}, - {0x0066, {1|U, {0x0046}}}, - {0x0067, {1|U, {0x0047}}}, - {0x0068, {1|U, {0x0048}}}, - {0x006a, {1|U, {0x004a}}}, - {0x006b, {2|U, {0x004b, 0x212a}}}, - {0x006c, {1|U, {0x004c}}}, - {0x006d, {1|U, {0x004d}}}, - {0x006e, {1|U, {0x004e}}}, - {0x006f, {1|U, {0x004f}}}, - {0x0070, {1|U, {0x0050}}}, - {0x0071, {1|U, {0x0051}}}, - {0x0072, {1|U, {0x0052}}}, - {0x0073, {2|U, {0x0053, 0x017f}}}, - {0x0074, {1|U, {0x0054}}}, - {0x0075, {1|U, {0x0055}}}, - {0x0076, {1|U, {0x0056}}}, - {0x0077, {1|U, {0x0057}}}, - {0x0078, {1|U, {0x0058}}}, - {0x0079, {1|U, {0x0059}}}, - {0x007a, {1|U, {0x005a}}}, - {0x00e0, {1|U, {0x00c0}}}, - {0x00e1, {1|U, {0x00c1}}}, - {0x00e2, {1|U, {0x00c2}}}, - {0x00e3, {1|U, {0x00c3}}}, - {0x00e4, {1|U, {0x00c4}}}, - {0x00e5, {2|U, {0x00c5, 0x212b}}}, - {0x00e6, {1|U, {0x00c6}}}, - {0x00e7, {1|U, {0x00c7}}}, - {0x00e8, {1|U, {0x00c8}}}, - {0x00e9, {1|U, {0x00c9}}}, - {0x00ea, {1|U, {0x00ca}}}, - {0x00eb, {1|U, {0x00cb}}}, - {0x00ec, {1|U, {0x00cc}}}, - {0x00ed, {1|U, {0x00cd}}}, - {0x00ee, {1|U, {0x00ce}}}, - {0x00ef, {1|U, {0x00cf}}}, - {0x00f0, {1|U, {0x00d0}}}, - {0x00f1, {1|U, {0x00d1}}}, - {0x00f2, {1|U, {0x00d2}}}, - {0x00f3, {1|U, {0x00d3}}}, - {0x00f4, {1|U, {0x00d4}}}, - {0x00f5, {1|U, {0x00d5}}}, - {0x00f6, {1|U, {0x00d6}}}, - {0x00f8, {1|U, {0x00d8}}}, - {0x00f9, {1|U, {0x00d9}}}, - {0x00fa, {1|U, {0x00da}}}, - {0x00fb, {1|U, {0x00db}}}, - {0x00fc, {1|U, {0x00dc}}}, - {0x00fd, {1|U, {0x00dd}}}, - {0x00fe, {1|U, {0x00de}}}, - {0x00ff, {1|U, {0x0178}}}, - {0x0101, {1|U, {0x0100}}}, - {0x0103, {1|U, {0x0102}}}, - {0x0105, {1|U, {0x0104}}}, - {0x0107, {1|U, {0x0106}}}, - {0x0109, {1|U, {0x0108}}}, - {0x010b, {1|U, {0x010a}}}, - {0x010d, {1|U, {0x010c}}}, - {0x010f, {1|U, {0x010e}}}, - {0x0111, {1|U, {0x0110}}}, - {0x0113, {1|U, {0x0112}}}, - {0x0115, {1|U, {0x0114}}}, - {0x0117, {1|U, {0x0116}}}, - {0x0119, {1|U, {0x0118}}}, - {0x011b, {1|U, {0x011a}}}, - {0x011d, {1|U, {0x011c}}}, - {0x011f, {1|U, {0x011e}}}, - {0x0121, {1|U, {0x0120}}}, - {0x0123, {1|U, {0x0122}}}, - {0x0125, {1|U, {0x0124}}}, - {0x0127, {1|U, {0x0126}}}, - {0x0129, {1|U, {0x0128}}}, - {0x012b, {1|U, {0x012a}}}, - {0x012d, {1|U, {0x012c}}}, - {0x012f, {1|U, {0x012e}}}, - {0x0133, {1|U, {0x0132}}}, - {0x0135, {1|U, {0x0134}}}, - {0x0137, {1|U, {0x0136}}}, - {0x013a, {1|U, {0x0139}}}, - {0x013c, {1|U, {0x013b}}}, - {0x013e, {1|U, {0x013d}}}, - {0x0140, {1|U, {0x013f}}}, - {0x0142, {1|U, {0x0141}}}, - {0x0144, {1|U, {0x0143}}}, - {0x0146, {1|U, {0x0145}}}, - {0x0148, {1|U, {0x0147}}}, - {0x014b, {1|U, {0x014a}}}, - {0x014d, {1|U, {0x014c}}}, - {0x014f, {1|U, {0x014e}}}, - {0x0151, {1|U, {0x0150}}}, - {0x0153, {1|U, {0x0152}}}, - {0x0155, {1|U, {0x0154}}}, - {0x0157, {1|U, {0x0156}}}, - {0x0159, {1|U, {0x0158}}}, - {0x015b, {1|U, {0x015a}}}, - {0x015d, {1|U, {0x015c}}}, - {0x015f, {1|U, {0x015e}}}, - {0x0161, {1|U, {0x0160}}}, - {0x0163, {1|U, {0x0162}}}, - {0x0165, {1|U, {0x0164}}}, - {0x0167, {1|U, {0x0166}}}, - {0x0169, {1|U, {0x0168}}}, - {0x016b, {1|U, {0x016a}}}, - {0x016d, {1|U, {0x016c}}}, - {0x016f, {1|U, {0x016e}}}, - {0x0171, {1|U, {0x0170}}}, - {0x0173, {1|U, {0x0172}}}, - {0x0175, {1|U, {0x0174}}}, - {0x0177, {1|U, {0x0176}}}, - {0x017a, {1|U, {0x0179}}}, - {0x017c, {1|U, {0x017b}}}, - {0x017e, {1|U, {0x017d}}}, - {0x0180, {1|U, {0x0243}}}, - {0x0183, {1|U, {0x0182}}}, - {0x0185, {1|U, {0x0184}}}, - {0x0188, {1|U, {0x0187}}}, - {0x018c, {1|U, {0x018b}}}, - {0x0192, {1|U, {0x0191}}}, - {0x0195, {1|U, {0x01f6}}}, - {0x0199, {1|U, {0x0198}}}, - {0x019a, {1|U, {0x023d}}}, - {0x019e, {1|U, {0x0220}}}, - {0x01a1, {1|U, {0x01a0}}}, - {0x01a3, {1|U, {0x01a2}}}, - {0x01a5, {1|U, {0x01a4}}}, - {0x01a8, {1|U, {0x01a7}}}, - {0x01ad, {1|U, {0x01ac}}}, - {0x01b0, {1|U, {0x01af}}}, - {0x01b4, {1|U, {0x01b3}}}, - {0x01b6, {1|U, {0x01b5}}}, - {0x01b9, {1|U, {0x01b8}}}, - {0x01bd, {1|U, {0x01bc}}}, - {0x01bf, {1|U, {0x01f7}}}, - {0x01c6, {2|U|ST, {0x01c4, 0x01c5}}}, - {0x01c9, {2|U|ST, {0x01c7, 0x01c8}}}, - {0x01cc, {2|U|ST, {0x01ca, 0x01cb}}}, - {0x01ce, {1|U, {0x01cd}}}, - {0x01d0, {1|U, {0x01cf}}}, - {0x01d2, {1|U, {0x01d1}}}, - {0x01d4, {1|U, {0x01d3}}}, - {0x01d6, {1|U, {0x01d5}}}, - {0x01d8, {1|U, {0x01d7}}}, - {0x01da, {1|U, {0x01d9}}}, - {0x01dc, {1|U, {0x01db}}}, - {0x01dd, {1|U, {0x018e}}}, - {0x01df, {1|U, {0x01de}}}, - {0x01e1, {1|U, {0x01e0}}}, - {0x01e3, {1|U, {0x01e2}}}, - {0x01e5, {1|U, {0x01e4}}}, - {0x01e7, {1|U, {0x01e6}}}, - {0x01e9, {1|U, {0x01e8}}}, - {0x01eb, {1|U, {0x01ea}}}, - {0x01ed, {1|U, {0x01ec}}}, - {0x01ef, {1|U, {0x01ee}}}, - {0x01f3, {2|U|ST, {0x01f1, 0x01f2}}}, - {0x01f5, {1|U, {0x01f4}}}, - {0x01f9, {1|U, {0x01f8}}}, - {0x01fb, {1|U, {0x01fa}}}, - {0x01fd, {1|U, {0x01fc}}}, - {0x01ff, {1|U, {0x01fe}}}, - {0x0201, {1|U, {0x0200}}}, - {0x0203, {1|U, {0x0202}}}, - {0x0205, {1|U, {0x0204}}}, - {0x0207, {1|U, {0x0206}}}, - {0x0209, {1|U, {0x0208}}}, - {0x020b, {1|U, {0x020a}}}, - {0x020d, {1|U, {0x020c}}}, - {0x020f, {1|U, {0x020e}}}, - {0x0211, {1|U, {0x0210}}}, - {0x0213, {1|U, {0x0212}}}, - {0x0215, {1|U, {0x0214}}}, - {0x0217, {1|U, {0x0216}}}, - {0x0219, {1|U, {0x0218}}}, - {0x021b, {1|U, {0x021a}}}, - {0x021d, {1|U, {0x021c}}}, - {0x021f, {1|U, {0x021e}}}, - {0x0223, {1|U, {0x0222}}}, - {0x0225, {1|U, {0x0224}}}, - {0x0227, {1|U, {0x0226}}}, - {0x0229, {1|U, {0x0228}}}, - {0x022b, {1|U, {0x022a}}}, - {0x022d, {1|U, {0x022c}}}, - {0x022f, {1|U, {0x022e}}}, - {0x0231, {1|U, {0x0230}}}, - {0x0233, {1|U, {0x0232}}}, - {0x023c, {1|U, {0x023b}}}, - {0x023f, {1|U, {0x2c7e}}}, - {0x0240, {1|U, {0x2c7f}}}, - {0x0242, {1|U, {0x0241}}}, - {0x0247, {1|U, {0x0246}}}, - {0x0249, {1|U, {0x0248}}}, - {0x024b, {1|U, {0x024a}}}, - {0x024d, {1|U, {0x024c}}}, - {0x024f, {1|U, {0x024e}}}, - {0x0250, {1|U, {0x2c6f}}}, - {0x0251, {1|U, {0x2c6d}}}, - {0x0252, {1|U, {0x2c70}}}, - {0x0253, {1|U, {0x0181}}}, - {0x0254, {1|U, {0x0186}}}, - {0x0256, {1|U, {0x0189}}}, - {0x0257, {1|U, {0x018a}}}, - {0x0259, {1|U, {0x018f}}}, - {0x025b, {1|U, {0x0190}}}, - {0x025c, {1|U, {0xa7ab}}}, - {0x0260, {1|U, {0x0193}}}, - {0x0261, {1|U, {0xa7ac}}}, - {0x0263, {1|U, {0x0194}}}, - {0x0265, {1|U, {0xa78d}}}, - {0x0266, {1|U, {0xa7aa}}}, - {0x0268, {1|U, {0x0197}}}, - {0x0269, {1|U, {0x0196}}}, - {0x026a, {1|U, {0xa7ae}}}, - {0x026b, {1|U, {0x2c62}}}, - {0x026c, {1|U, {0xa7ad}}}, - {0x026f, {1|U, {0x019c}}}, - {0x0271, {1|U, {0x2c6e}}}, - {0x0272, {1|U, {0x019d}}}, - {0x0275, {1|U, {0x019f}}}, - {0x027d, {1|U, {0x2c64}}}, - {0x0280, {1|U, {0x01a6}}}, - {0x0283, {1|U, {0x01a9}}}, - {0x0287, {1|U, {0xa7b1}}}, - {0x0288, {1|U, {0x01ae}}}, - {0x0289, {1|U, {0x0244}}}, - {0x028a, {1|U, {0x01b1}}}, - {0x028b, {1|U, {0x01b2}}}, - {0x028c, {1|U, {0x0245}}}, - {0x0292, {1|U, {0x01b7}}}, - {0x029d, {1|U, {0xa7b2}}}, - {0x029e, {1|U, {0xa7b0}}}, - {0x0371, {1|U, {0x0370}}}, - {0x0373, {1|U, {0x0372}}}, - {0x0377, {1|U, {0x0376}}}, - {0x037b, {1|U, {0x03fd}}}, - {0x037c, {1|U, {0x03fe}}}, - {0x037d, {1|U, {0x03ff}}}, - {0x03ac, {1|U, {0x0386}}}, - {0x03ad, {1|U, {0x0388}}}, - {0x03ae, {1|U, {0x0389}}}, - {0x03af, {1|U, {0x038a}}}, - {0x03b1, {1|U, {0x0391}}}, - {0x03b2, {2|U, {0x0392, 0x03d0}}}, - {0x03b3, {1|U, {0x0393}}}, - {0x03b4, {1|U, {0x0394}}}, - {0x03b5, {2|U, {0x0395, 0x03f5}}}, - {0x03b6, {1|U, {0x0396}}}, - {0x03b7, {1|U, {0x0397}}}, - {0x03b8, {3|U, {0x0398, 0x03d1, 0x03f4}}}, - {0x03b9, {3|U, {0x0399, 0x0345, 0x1fbe}}}, - {0x03ba, {2|U, {0x039a, 0x03f0}}}, - {0x03bb, {1|U, {0x039b}}}, - {0x03bc, {2|U, {0x039c, 0x00b5}}}, - {0x03bd, {1|U, {0x039d}}}, - {0x03be, {1|U, {0x039e}}}, - {0x03bf, {1|U, {0x039f}}}, - {0x03c0, {2|U, {0x03a0, 0x03d6}}}, - {0x03c1, {2|U, {0x03a1, 0x03f1}}}, - {0x03c3, {2|U, {0x03a3, 0x03c2}}}, - {0x03c4, {1|U, {0x03a4}}}, - {0x03c5, {1|U, {0x03a5}}}, - {0x03c6, {2|U, {0x03a6, 0x03d5}}}, - {0x03c7, {1|U, {0x03a7}}}, - {0x03c8, {1|U, {0x03a8}}}, - {0x03c9, {2|U, {0x03a9, 0x2126}}}, - {0x03ca, {1|U, {0x03aa}}}, - {0x03cb, {1|U, {0x03ab}}}, - {0x03cc, {1|U, {0x038c}}}, - {0x03cd, {1|U, {0x038e}}}, - {0x03ce, {1|U, {0x038f}}}, - {0x03d7, {1|U, {0x03cf}}}, - {0x03d9, {1|U, {0x03d8}}}, - {0x03db, {1|U, {0x03da}}}, - {0x03dd, {1|U, {0x03dc}}}, - {0x03df, {1|U, {0x03de}}}, - {0x03e1, {1|U, {0x03e0}}}, - {0x03e3, {1|U, {0x03e2}}}, - {0x03e5, {1|U, {0x03e4}}}, - {0x03e7, {1|U, {0x03e6}}}, - {0x03e9, {1|U, {0x03e8}}}, - {0x03eb, {1|U, {0x03ea}}}, - {0x03ed, {1|U, {0x03ec}}}, - {0x03ef, {1|U, {0x03ee}}}, - {0x03f2, {1|U, {0x03f9}}}, - {0x03f3, {1|U, {0x037f}}}, - {0x03f8, {1|U, {0x03f7}}}, - {0x03fb, {1|U, {0x03fa}}}, - {0x0430, {1|U, {0x0410}}}, - {0x0431, {1|U, {0x0411}}}, - {0x0432, {2|U, {0x0412, 0x1c80}}}, - {0x0433, {1|U, {0x0413}}}, - {0x0434, {2|U, {0x0414, 0x1c81}}}, - {0x0435, {1|U, {0x0415}}}, - {0x0436, {1|U, {0x0416}}}, - {0x0437, {1|U, {0x0417}}}, - {0x0438, {1|U, {0x0418}}}, - {0x0439, {1|U, {0x0419}}}, - {0x043a, {1|U, {0x041a}}}, - {0x043b, {1|U, {0x041b}}}, - {0x043c, {1|U, {0x041c}}}, - {0x043d, {1|U, {0x041d}}}, - {0x043e, {2|U, {0x041e, 0x1c82}}}, - {0x043f, {1|U, {0x041f}}}, - {0x0440, {1|U, {0x0420}}}, - {0x0441, {2|U, {0x0421, 0x1c83}}}, - {0x0442, {3|U, {0x0422, 0x1c84, 0x1c85}}}, - {0x0443, {1|U, {0x0423}}}, - {0x0444, {1|U, {0x0424}}}, - {0x0445, {1|U, {0x0425}}}, - {0x0446, {1|U, {0x0426}}}, - {0x0447, {1|U, {0x0427}}}, - {0x0448, {1|U, {0x0428}}}, - {0x0449, {1|U, {0x0429}}}, - {0x044a, {2|U, {0x042a, 0x1c86}}}, - {0x044b, {1|U, {0x042b}}}, - {0x044c, {1|U, {0x042c}}}, - {0x044d, {1|U, {0x042d}}}, - {0x044e, {1|U, {0x042e}}}, - {0x044f, {1|U, {0x042f}}}, - {0x0450, {1|U, {0x0400}}}, - {0x0451, {1|U, {0x0401}}}, - {0x0452, {1|U, {0x0402}}}, - {0x0453, {1|U, {0x0403}}}, - {0x0454, {1|U, {0x0404}}}, - {0x0455, {1|U, {0x0405}}}, - {0x0456, {1|U, {0x0406}}}, - {0x0457, {1|U, {0x0407}}}, - {0x0458, {1|U, {0x0408}}}, - {0x0459, {1|U, {0x0409}}}, - {0x045a, {1|U, {0x040a}}}, - {0x045b, {1|U, {0x040b}}}, - {0x045c, {1|U, {0x040c}}}, - {0x045d, {1|U, {0x040d}}}, - {0x045e, {1|U, {0x040e}}}, - {0x045f, {1|U, {0x040f}}}, - {0x0461, {1|U, {0x0460}}}, - {0x0463, {2|U, {0x0462, 0x1c87}}}, - {0x0465, {1|U, {0x0464}}}, - {0x0467, {1|U, {0x0466}}}, - {0x0469, {1|U, {0x0468}}}, - {0x046b, {1|U, {0x046a}}}, - {0x046d, {1|U, {0x046c}}}, - {0x046f, {1|U, {0x046e}}}, - {0x0471, {1|U, {0x0470}}}, - {0x0473, {1|U, {0x0472}}}, - {0x0475, {1|U, {0x0474}}}, - {0x0477, {1|U, {0x0476}}}, - {0x0479, {1|U, {0x0478}}}, - {0x047b, {1|U, {0x047a}}}, - {0x047d, {1|U, {0x047c}}}, - {0x047f, {1|U, {0x047e}}}, - {0x0481, {1|U, {0x0480}}}, - {0x048b, {1|U, {0x048a}}}, - {0x048d, {1|U, {0x048c}}}, - {0x048f, {1|U, {0x048e}}}, - {0x0491, {1|U, {0x0490}}}, - {0x0493, {1|U, {0x0492}}}, - {0x0495, {1|U, {0x0494}}}, - {0x0497, {1|U, {0x0496}}}, - {0x0499, {1|U, {0x0498}}}, - {0x049b, {1|U, {0x049a}}}, - {0x049d, {1|U, {0x049c}}}, - {0x049f, {1|U, {0x049e}}}, - {0x04a1, {1|U, {0x04a0}}}, - {0x04a3, {1|U, {0x04a2}}}, - {0x04a5, {1|U, {0x04a4}}}, - {0x04a7, {1|U, {0x04a6}}}, - {0x04a9, {1|U, {0x04a8}}}, - {0x04ab, {1|U, {0x04aa}}}, - {0x04ad, {1|U, {0x04ac}}}, - {0x04af, {1|U, {0x04ae}}}, - {0x04b1, {1|U, {0x04b0}}}, - {0x04b3, {1|U, {0x04b2}}}, - {0x04b5, {1|U, {0x04b4}}}, - {0x04b7, {1|U, {0x04b6}}}, - {0x04b9, {1|U, {0x04b8}}}, - {0x04bb, {1|U, {0x04ba}}}, - {0x04bd, {1|U, {0x04bc}}}, - {0x04bf, {1|U, {0x04be}}}, - {0x04c2, {1|U, {0x04c1}}}, - {0x04c4, {1|U, {0x04c3}}}, - {0x04c6, {1|U, {0x04c5}}}, - {0x04c8, {1|U, {0x04c7}}}, - {0x04ca, {1|U, {0x04c9}}}, - {0x04cc, {1|U, {0x04cb}}}, - {0x04ce, {1|U, {0x04cd}}}, - {0x04cf, {1|U, {0x04c0}}}, - {0x04d1, {1|U, {0x04d0}}}, - {0x04d3, {1|U, {0x04d2}}}, - {0x04d5, {1|U, {0x04d4}}}, - {0x04d7, {1|U, {0x04d6}}}, - {0x04d9, {1|U, {0x04d8}}}, - {0x04db, {1|U, {0x04da}}}, - {0x04dd, {1|U, {0x04dc}}}, - {0x04df, {1|U, {0x04de}}}, - {0x04e1, {1|U, {0x04e0}}}, - {0x04e3, {1|U, {0x04e2}}}, - {0x04e5, {1|U, {0x04e4}}}, - {0x04e7, {1|U, {0x04e6}}}, - {0x04e9, {1|U, {0x04e8}}}, - {0x04eb, {1|U, {0x04ea}}}, - {0x04ed, {1|U, {0x04ec}}}, - {0x04ef, {1|U, {0x04ee}}}, - {0x04f1, {1|U, {0x04f0}}}, - {0x04f3, {1|U, {0x04f2}}}, - {0x04f5, {1|U, {0x04f4}}}, - {0x04f7, {1|U, {0x04f6}}}, - {0x04f9, {1|U, {0x04f8}}}, - {0x04fb, {1|U, {0x04fa}}}, - {0x04fd, {1|U, {0x04fc}}}, - {0x04ff, {1|U, {0x04fe}}}, - {0x0501, {1|U, {0x0500}}}, - {0x0503, {1|U, {0x0502}}}, - {0x0505, {1|U, {0x0504}}}, - {0x0507, {1|U, {0x0506}}}, - {0x0509, {1|U, {0x0508}}}, - {0x050b, {1|U, {0x050a}}}, - {0x050d, {1|U, {0x050c}}}, - {0x050f, {1|U, {0x050e}}}, - {0x0511, {1|U, {0x0510}}}, - {0x0513, {1|U, {0x0512}}}, - {0x0515, {1|U, {0x0514}}}, - {0x0517, {1|U, {0x0516}}}, - {0x0519, {1|U, {0x0518}}}, - {0x051b, {1|U, {0x051a}}}, - {0x051d, {1|U, {0x051c}}}, - {0x051f, {1|U, {0x051e}}}, - {0x0521, {1|U, {0x0520}}}, - {0x0523, {1|U, {0x0522}}}, - {0x0525, {1|U, {0x0524}}}, - {0x0527, {1|U, {0x0526}}}, - {0x0529, {1|U, {0x0528}}}, - {0x052b, {1|U, {0x052a}}}, - {0x052d, {1|U, {0x052c}}}, - {0x052f, {1|U, {0x052e}}}, - {0x0561, {1|U, {0x0531}}}, - {0x0562, {1|U, {0x0532}}}, - {0x0563, {1|U, {0x0533}}}, - {0x0564, {1|U, {0x0534}}}, - {0x0565, {1|U, {0x0535}}}, - {0x0566, {1|U, {0x0536}}}, - {0x0567, {1|U, {0x0537}}}, - {0x0568, {1|U, {0x0538}}}, - {0x0569, {1|U, {0x0539}}}, - {0x056a, {1|U, {0x053a}}}, - {0x056b, {1|U, {0x053b}}}, - {0x056c, {1|U, {0x053c}}}, - {0x056d, {1|U, {0x053d}}}, - {0x056e, {1|U, {0x053e}}}, - {0x056f, {1|U, {0x053f}}}, - {0x0570, {1|U, {0x0540}}}, - {0x0571, {1|U, {0x0541}}}, - {0x0572, {1|U, {0x0542}}}, - {0x0573, {1|U, {0x0543}}}, - {0x0574, {1|U, {0x0544}}}, - {0x0575, {1|U, {0x0545}}}, - {0x0576, {1|U, {0x0546}}}, - {0x0577, {1|U, {0x0547}}}, - {0x0578, {1|U, {0x0548}}}, - {0x0579, {1|U, {0x0549}}}, - {0x057a, {1|U, {0x054a}}}, - {0x057b, {1|U, {0x054b}}}, - {0x057c, {1|U, {0x054c}}}, - {0x057d, {1|U, {0x054d}}}, - {0x057e, {1|U, {0x054e}}}, - {0x057f, {1|U, {0x054f}}}, - {0x0580, {1|U, {0x0550}}}, - {0x0581, {1|U, {0x0551}}}, - {0x0582, {1|U, {0x0552}}}, - {0x0583, {1|U, {0x0553}}}, - {0x0584, {1|U, {0x0554}}}, - {0x0585, {1|U, {0x0555}}}, - {0x0586, {1|U, {0x0556}}}, - {0x13a0, {1|D, {0xab70}}}, - {0x13a1, {1|D, {0xab71}}}, - {0x13a2, {1|D, {0xab72}}}, - {0x13a3, {1|D, {0xab73}}}, - {0x13a4, {1|D, {0xab74}}}, - {0x13a5, {1|D, {0xab75}}}, - {0x13a6, {1|D, {0xab76}}}, - {0x13a7, {1|D, {0xab77}}}, - {0x13a8, {1|D, {0xab78}}}, - {0x13a9, {1|D, {0xab79}}}, - {0x13aa, {1|D, {0xab7a}}}, - {0x13ab, {1|D, {0xab7b}}}, - {0x13ac, {1|D, {0xab7c}}}, - {0x13ad, {1|D, {0xab7d}}}, - {0x13ae, {1|D, {0xab7e}}}, - {0x13af, {1|D, {0xab7f}}}, - {0x13b0, {1|D, {0xab80}}}, - {0x13b1, {1|D, {0xab81}}}, - {0x13b2, {1|D, {0xab82}}}, - {0x13b3, {1|D, {0xab83}}}, - {0x13b4, {1|D, {0xab84}}}, - {0x13b5, {1|D, {0xab85}}}, - {0x13b6, {1|D, {0xab86}}}, - {0x13b7, {1|D, {0xab87}}}, - {0x13b8, {1|D, {0xab88}}}, - {0x13b9, {1|D, {0xab89}}}, - {0x13ba, {1|D, {0xab8a}}}, - {0x13bb, {1|D, {0xab8b}}}, - {0x13bc, {1|D, {0xab8c}}}, - {0x13bd, {1|D, {0xab8d}}}, - {0x13be, {1|D, {0xab8e}}}, - {0x13bf, {1|D, {0xab8f}}}, - {0x13c0, {1|D, {0xab90}}}, - {0x13c1, {1|D, {0xab91}}}, - {0x13c2, {1|D, {0xab92}}}, - {0x13c3, {1|D, {0xab93}}}, - {0x13c4, {1|D, {0xab94}}}, - {0x13c5, {1|D, {0xab95}}}, - {0x13c6, {1|D, {0xab96}}}, - {0x13c7, {1|D, {0xab97}}}, - {0x13c8, {1|D, {0xab98}}}, - {0x13c9, {1|D, {0xab99}}}, - {0x13ca, {1|D, {0xab9a}}}, - {0x13cb, {1|D, {0xab9b}}}, - {0x13cc, {1|D, {0xab9c}}}, - {0x13cd, {1|D, {0xab9d}}}, - {0x13ce, {1|D, {0xab9e}}}, - {0x13cf, {1|D, {0xab9f}}}, - {0x13d0, {1|D, {0xaba0}}}, - {0x13d1, {1|D, {0xaba1}}}, - {0x13d2, {1|D, {0xaba2}}}, - {0x13d3, {1|D, {0xaba3}}}, - {0x13d4, {1|D, {0xaba4}}}, - {0x13d5, {1|D, {0xaba5}}}, - {0x13d6, {1|D, {0xaba6}}}, - {0x13d7, {1|D, {0xaba7}}}, - {0x13d8, {1|D, {0xaba8}}}, - {0x13d9, {1|D, {0xaba9}}}, - {0x13da, {1|D, {0xabaa}}}, - {0x13db, {1|D, {0xabab}}}, - {0x13dc, {1|D, {0xabac}}}, - {0x13dd, {1|D, {0xabad}}}, - {0x13de, {1|D, {0xabae}}}, - {0x13df, {1|D, {0xabaf}}}, - {0x13e0, {1|D, {0xabb0}}}, - {0x13e1, {1|D, {0xabb1}}}, - {0x13e2, {1|D, {0xabb2}}}, - {0x13e3, {1|D, {0xabb3}}}, - {0x13e4, {1|D, {0xabb4}}}, - {0x13e5, {1|D, {0xabb5}}}, - {0x13e6, {1|D, {0xabb6}}}, - {0x13e7, {1|D, {0xabb7}}}, - {0x13e8, {1|D, {0xabb8}}}, - {0x13e9, {1|D, {0xabb9}}}, - {0x13ea, {1|D, {0xabba}}}, - {0x13eb, {1|D, {0xabbb}}}, - {0x13ec, {1|D, {0xabbc}}}, - {0x13ed, {1|D, {0xabbd}}}, - {0x13ee, {1|D, {0xabbe}}}, - {0x13ef, {1|D, {0xabbf}}}, - {0x13f0, {1|D, {0x13f8}}}, - {0x13f1, {1|D, {0x13f9}}}, - {0x13f2, {1|D, {0x13fa}}}, - {0x13f3, {1|D, {0x13fb}}}, - {0x13f4, {1|D, {0x13fc}}}, - {0x13f5, {1|D, {0x13fd}}}, - {0x1d79, {1|U, {0xa77d}}}, - {0x1d7d, {1|U, {0x2c63}}}, - {0x1e01, {1|U, {0x1e00}}}, - {0x1e03, {1|U, {0x1e02}}}, - {0x1e05, {1|U, {0x1e04}}}, - {0x1e07, {1|U, {0x1e06}}}, - {0x1e09, {1|U, {0x1e08}}}, - {0x1e0b, {1|U, {0x1e0a}}}, - {0x1e0d, {1|U, {0x1e0c}}}, - {0x1e0f, {1|U, {0x1e0e}}}, - {0x1e11, {1|U, {0x1e10}}}, - {0x1e13, {1|U, {0x1e12}}}, - {0x1e15, {1|U, {0x1e14}}}, - {0x1e17, {1|U, {0x1e16}}}, - {0x1e19, {1|U, {0x1e18}}}, - {0x1e1b, {1|U, {0x1e1a}}}, - {0x1e1d, {1|U, {0x1e1c}}}, - {0x1e1f, {1|U, {0x1e1e}}}, - {0x1e21, {1|U, {0x1e20}}}, - {0x1e23, {1|U, {0x1e22}}}, - {0x1e25, {1|U, {0x1e24}}}, - {0x1e27, {1|U, {0x1e26}}}, - {0x1e29, {1|U, {0x1e28}}}, - {0x1e2b, {1|U, {0x1e2a}}}, - {0x1e2d, {1|U, {0x1e2c}}}, - {0x1e2f, {1|U, {0x1e2e}}}, - {0x1e31, {1|U, {0x1e30}}}, - {0x1e33, {1|U, {0x1e32}}}, - {0x1e35, {1|U, {0x1e34}}}, - {0x1e37, {1|U, {0x1e36}}}, - {0x1e39, {1|U, {0x1e38}}}, - {0x1e3b, {1|U, {0x1e3a}}}, - {0x1e3d, {1|U, {0x1e3c}}}, - {0x1e3f, {1|U, {0x1e3e}}}, - {0x1e41, {1|U, {0x1e40}}}, - {0x1e43, {1|U, {0x1e42}}}, - {0x1e45, {1|U, {0x1e44}}}, - {0x1e47, {1|U, {0x1e46}}}, - {0x1e49, {1|U, {0x1e48}}}, - {0x1e4b, {1|U, {0x1e4a}}}, - {0x1e4d, {1|U, {0x1e4c}}}, - {0x1e4f, {1|U, {0x1e4e}}}, - {0x1e51, {1|U, {0x1e50}}}, - {0x1e53, {1|U, {0x1e52}}}, - {0x1e55, {1|U, {0x1e54}}}, - {0x1e57, {1|U, {0x1e56}}}, - {0x1e59, {1|U, {0x1e58}}}, - {0x1e5b, {1|U, {0x1e5a}}}, - {0x1e5d, {1|U, {0x1e5c}}}, - {0x1e5f, {1|U, {0x1e5e}}}, - {0x1e61, {2|U, {0x1e60, 0x1e9b}}}, - {0x1e63, {1|U, {0x1e62}}}, - {0x1e65, {1|U, {0x1e64}}}, - {0x1e67, {1|U, {0x1e66}}}, - {0x1e69, {1|U, {0x1e68}}}, - {0x1e6b, {1|U, {0x1e6a}}}, - {0x1e6d, {1|U, {0x1e6c}}}, - {0x1e6f, {1|U, {0x1e6e}}}, - {0x1e71, {1|U, {0x1e70}}}, - {0x1e73, {1|U, {0x1e72}}}, - {0x1e75, {1|U, {0x1e74}}}, - {0x1e77, {1|U, {0x1e76}}}, - {0x1e79, {1|U, {0x1e78}}}, - {0x1e7b, {1|U, {0x1e7a}}}, - {0x1e7d, {1|U, {0x1e7c}}}, - {0x1e7f, {1|U, {0x1e7e}}}, - {0x1e81, {1|U, {0x1e80}}}, - {0x1e83, {1|U, {0x1e82}}}, - {0x1e85, {1|U, {0x1e84}}}, - {0x1e87, {1|U, {0x1e86}}}, - {0x1e89, {1|U, {0x1e88}}}, - {0x1e8b, {1|U, {0x1e8a}}}, - {0x1e8d, {1|U, {0x1e8c}}}, - {0x1e8f, {1|U, {0x1e8e}}}, - {0x1e91, {1|U, {0x1e90}}}, - {0x1e93, {1|U, {0x1e92}}}, - {0x1e95, {1|U, {0x1e94}}}, - {0x1ea1, {1|U, {0x1ea0}}}, - {0x1ea3, {1|U, {0x1ea2}}}, - {0x1ea5, {1|U, {0x1ea4}}}, - {0x1ea7, {1|U, {0x1ea6}}}, - {0x1ea9, {1|U, {0x1ea8}}}, - {0x1eab, {1|U, {0x1eaa}}}, - {0x1ead, {1|U, {0x1eac}}}, - {0x1eaf, {1|U, {0x1eae}}}, - {0x1eb1, {1|U, {0x1eb0}}}, - {0x1eb3, {1|U, {0x1eb2}}}, - {0x1eb5, {1|U, {0x1eb4}}}, - {0x1eb7, {1|U, {0x1eb6}}}, - {0x1eb9, {1|U, {0x1eb8}}}, - {0x1ebb, {1|U, {0x1eba}}}, - {0x1ebd, {1|U, {0x1ebc}}}, - {0x1ebf, {1|U, {0x1ebe}}}, - {0x1ec1, {1|U, {0x1ec0}}}, - {0x1ec3, {1|U, {0x1ec2}}}, - {0x1ec5, {1|U, {0x1ec4}}}, - {0x1ec7, {1|U, {0x1ec6}}}, - {0x1ec9, {1|U, {0x1ec8}}}, - {0x1ecb, {1|U, {0x1eca}}}, - {0x1ecd, {1|U, {0x1ecc}}}, - {0x1ecf, {1|U, {0x1ece}}}, - {0x1ed1, {1|U, {0x1ed0}}}, - {0x1ed3, {1|U, {0x1ed2}}}, - {0x1ed5, {1|U, {0x1ed4}}}, - {0x1ed7, {1|U, {0x1ed6}}}, - {0x1ed9, {1|U, {0x1ed8}}}, - {0x1edb, {1|U, {0x1eda}}}, - {0x1edd, {1|U, {0x1edc}}}, - {0x1edf, {1|U, {0x1ede}}}, - {0x1ee1, {1|U, {0x1ee0}}}, - {0x1ee3, {1|U, {0x1ee2}}}, - {0x1ee5, {1|U, {0x1ee4}}}, - {0x1ee7, {1|U, {0x1ee6}}}, - {0x1ee9, {1|U, {0x1ee8}}}, - {0x1eeb, {1|U, {0x1eea}}}, - {0x1eed, {1|U, {0x1eec}}}, - {0x1eef, {1|U, {0x1eee}}}, - {0x1ef1, {1|U, {0x1ef0}}}, - {0x1ef3, {1|U, {0x1ef2}}}, - {0x1ef5, {1|U, {0x1ef4}}}, - {0x1ef7, {1|U, {0x1ef6}}}, - {0x1ef9, {1|U, {0x1ef8}}}, - {0x1efb, {1|U, {0x1efa}}}, - {0x1efd, {1|U, {0x1efc}}}, - {0x1eff, {1|U, {0x1efe}}}, - {0x1f00, {1|U, {0x1f08}}}, - {0x1f01, {1|U, {0x1f09}}}, - {0x1f02, {1|U, {0x1f0a}}}, - {0x1f03, {1|U, {0x1f0b}}}, - {0x1f04, {1|U, {0x1f0c}}}, - {0x1f05, {1|U, {0x1f0d}}}, - {0x1f06, {1|U, {0x1f0e}}}, - {0x1f07, {1|U, {0x1f0f}}}, - {0x1f10, {1|U, {0x1f18}}}, - {0x1f11, {1|U, {0x1f19}}}, - {0x1f12, {1|U, {0x1f1a}}}, - {0x1f13, {1|U, {0x1f1b}}}, - {0x1f14, {1|U, {0x1f1c}}}, - {0x1f15, {1|U, {0x1f1d}}}, - {0x1f20, {1|U, {0x1f28}}}, - {0x1f21, {1|U, {0x1f29}}}, - {0x1f22, {1|U, {0x1f2a}}}, - {0x1f23, {1|U, {0x1f2b}}}, - {0x1f24, {1|U, {0x1f2c}}}, - {0x1f25, {1|U, {0x1f2d}}}, - {0x1f26, {1|U, {0x1f2e}}}, - {0x1f27, {1|U, {0x1f2f}}}, - {0x1f30, {1|U, {0x1f38}}}, - {0x1f31, {1|U, {0x1f39}}}, - {0x1f32, {1|U, {0x1f3a}}}, - {0x1f33, {1|U, {0x1f3b}}}, - {0x1f34, {1|U, {0x1f3c}}}, - {0x1f35, {1|U, {0x1f3d}}}, - {0x1f36, {1|U, {0x1f3e}}}, - {0x1f37, {1|U, {0x1f3f}}}, - {0x1f40, {1|U, {0x1f48}}}, - {0x1f41, {1|U, {0x1f49}}}, - {0x1f42, {1|U, {0x1f4a}}}, - {0x1f43, {1|U, {0x1f4b}}}, - {0x1f44, {1|U, {0x1f4c}}}, - {0x1f45, {1|U, {0x1f4d}}}, - {0x1f51, {1|U, {0x1f59}}}, - {0x1f53, {1|U, {0x1f5b}}}, - {0x1f55, {1|U, {0x1f5d}}}, - {0x1f57, {1|U, {0x1f5f}}}, - {0x1f60, {1|U, {0x1f68}}}, - {0x1f61, {1|U, {0x1f69}}}, - {0x1f62, {1|U, {0x1f6a}}}, - {0x1f63, {1|U, {0x1f6b}}}, - {0x1f64, {1|U, {0x1f6c}}}, - {0x1f65, {1|U, {0x1f6d}}}, - {0x1f66, {1|U, {0x1f6e}}}, - {0x1f67, {1|U, {0x1f6f}}}, - {0x1f70, {1|U, {0x1fba}}}, - {0x1f71, {1|U, {0x1fbb}}}, - {0x1f72, {1|U, {0x1fc8}}}, - {0x1f73, {1|U, {0x1fc9}}}, - {0x1f74, {1|U, {0x1fca}}}, - {0x1f75, {1|U, {0x1fcb}}}, - {0x1f76, {1|U, {0x1fda}}}, - {0x1f77, {1|U, {0x1fdb}}}, - {0x1f78, {1|U, {0x1ff8}}}, - {0x1f79, {1|U, {0x1ff9}}}, - {0x1f7a, {1|U, {0x1fea}}}, - {0x1f7b, {1|U, {0x1feb}}}, - {0x1f7c, {1|U, {0x1ffa}}}, - {0x1f7d, {1|U, {0x1ffb}}}, - {0x1fb0, {1|U, {0x1fb8}}}, - {0x1fb1, {1|U, {0x1fb9}}}, - {0x1fd0, {1|U, {0x1fd8}}}, - {0x1fd1, {1|U, {0x1fd9}}}, - {0x1fe0, {1|U, {0x1fe8}}}, - {0x1fe1, {1|U, {0x1fe9}}}, - {0x1fe5, {1|U, {0x1fec}}}, - {0x214e, {1|U, {0x2132}}}, - {0x2170, {1|U, {0x2160}}}, - {0x2171, {1|U, {0x2161}}}, - {0x2172, {1|U, {0x2162}}}, - {0x2173, {1|U, {0x2163}}}, - {0x2174, {1|U, {0x2164}}}, - {0x2175, {1|U, {0x2165}}}, - {0x2176, {1|U, {0x2166}}}, - {0x2177, {1|U, {0x2167}}}, - {0x2178, {1|U, {0x2168}}}, - {0x2179, {1|U, {0x2169}}}, - {0x217a, {1|U, {0x216a}}}, - {0x217b, {1|U, {0x216b}}}, - {0x217c, {1|U, {0x216c}}}, - {0x217d, {1|U, {0x216d}}}, - {0x217e, {1|U, {0x216e}}}, - {0x217f, {1|U, {0x216f}}}, - {0x2184, {1|U, {0x2183}}}, - {0x24d0, {1|U, {0x24b6}}}, - {0x24d1, {1|U, {0x24b7}}}, - {0x24d2, {1|U, {0x24b8}}}, - {0x24d3, {1|U, {0x24b9}}}, - {0x24d4, {1|U, {0x24ba}}}, - {0x24d5, {1|U, {0x24bb}}}, - {0x24d6, {1|U, {0x24bc}}}, - {0x24d7, {1|U, {0x24bd}}}, - {0x24d8, {1|U, {0x24be}}}, - {0x24d9, {1|U, {0x24bf}}}, - {0x24da, {1|U, {0x24c0}}}, - {0x24db, {1|U, {0x24c1}}}, - {0x24dc, {1|U, {0x24c2}}}, - {0x24dd, {1|U, {0x24c3}}}, - {0x24de, {1|U, {0x24c4}}}, - {0x24df, {1|U, {0x24c5}}}, - {0x24e0, {1|U, {0x24c6}}}, - {0x24e1, {1|U, {0x24c7}}}, - {0x24e2, {1|U, {0x24c8}}}, - {0x24e3, {1|U, {0x24c9}}}, - {0x24e4, {1|U, {0x24ca}}}, - {0x24e5, {1|U, {0x24cb}}}, - {0x24e6, {1|U, {0x24cc}}}, - {0x24e7, {1|U, {0x24cd}}}, - {0x24e8, {1|U, {0x24ce}}}, - {0x24e9, {1|U, {0x24cf}}}, - {0x2c30, {1|U, {0x2c00}}}, - {0x2c31, {1|U, {0x2c01}}}, - {0x2c32, {1|U, {0x2c02}}}, - {0x2c33, {1|U, {0x2c03}}}, - {0x2c34, {1|U, {0x2c04}}}, - {0x2c35, {1|U, {0x2c05}}}, - {0x2c36, {1|U, {0x2c06}}}, - {0x2c37, {1|U, {0x2c07}}}, - {0x2c38, {1|U, {0x2c08}}}, - {0x2c39, {1|U, {0x2c09}}}, - {0x2c3a, {1|U, {0x2c0a}}}, - {0x2c3b, {1|U, {0x2c0b}}}, - {0x2c3c, {1|U, {0x2c0c}}}, - {0x2c3d, {1|U, {0x2c0d}}}, - {0x2c3e, {1|U, {0x2c0e}}}, - {0x2c3f, {1|U, {0x2c0f}}}, - {0x2c40, {1|U, {0x2c10}}}, - {0x2c41, {1|U, {0x2c11}}}, - {0x2c42, {1|U, {0x2c12}}}, - {0x2c43, {1|U, {0x2c13}}}, - {0x2c44, {1|U, {0x2c14}}}, - {0x2c45, {1|U, {0x2c15}}}, - {0x2c46, {1|U, {0x2c16}}}, - {0x2c47, {1|U, {0x2c17}}}, - {0x2c48, {1|U, {0x2c18}}}, - {0x2c49, {1|U, {0x2c19}}}, - {0x2c4a, {1|U, {0x2c1a}}}, - {0x2c4b, {1|U, {0x2c1b}}}, - {0x2c4c, {1|U, {0x2c1c}}}, - {0x2c4d, {1|U, {0x2c1d}}}, - {0x2c4e, {1|U, {0x2c1e}}}, - {0x2c4f, {1|U, {0x2c1f}}}, - {0x2c50, {1|U, {0x2c20}}}, - {0x2c51, {1|U, {0x2c21}}}, - {0x2c52, {1|U, {0x2c22}}}, - {0x2c53, {1|U, {0x2c23}}}, - {0x2c54, {1|U, {0x2c24}}}, - {0x2c55, {1|U, {0x2c25}}}, - {0x2c56, {1|U, {0x2c26}}}, - {0x2c57, {1|U, {0x2c27}}}, - {0x2c58, {1|U, {0x2c28}}}, - {0x2c59, {1|U, {0x2c29}}}, - {0x2c5a, {1|U, {0x2c2a}}}, - {0x2c5b, {1|U, {0x2c2b}}}, - {0x2c5c, {1|U, {0x2c2c}}}, - {0x2c5d, {1|U, {0x2c2d}}}, - {0x2c5e, {1|U, {0x2c2e}}}, - {0x2c61, {1|U, {0x2c60}}}, - {0x2c65, {1|U, {0x023a}}}, - {0x2c66, {1|U, {0x023e}}}, - {0x2c68, {1|U, {0x2c67}}}, - {0x2c6a, {1|U, {0x2c69}}}, - {0x2c6c, {1|U, {0x2c6b}}}, - {0x2c73, {1|U, {0x2c72}}}, - {0x2c76, {1|U, {0x2c75}}}, - {0x2c81, {1|U, {0x2c80}}}, - {0x2c83, {1|U, {0x2c82}}}, - {0x2c85, {1|U, {0x2c84}}}, - {0x2c87, {1|U, {0x2c86}}}, - {0x2c89, {1|U, {0x2c88}}}, - {0x2c8b, {1|U, {0x2c8a}}}, - {0x2c8d, {1|U, {0x2c8c}}}, - {0x2c8f, {1|U, {0x2c8e}}}, - {0x2c91, {1|U, {0x2c90}}}, - {0x2c93, {1|U, {0x2c92}}}, - {0x2c95, {1|U, {0x2c94}}}, - {0x2c97, {1|U, {0x2c96}}}, - {0x2c99, {1|U, {0x2c98}}}, - {0x2c9b, {1|U, {0x2c9a}}}, - {0x2c9d, {1|U, {0x2c9c}}}, - {0x2c9f, {1|U, {0x2c9e}}}, - {0x2ca1, {1|U, {0x2ca0}}}, - {0x2ca3, {1|U, {0x2ca2}}}, - {0x2ca5, {1|U, {0x2ca4}}}, - {0x2ca7, {1|U, {0x2ca6}}}, - {0x2ca9, {1|U, {0x2ca8}}}, - {0x2cab, {1|U, {0x2caa}}}, - {0x2cad, {1|U, {0x2cac}}}, - {0x2caf, {1|U, {0x2cae}}}, - {0x2cb1, {1|U, {0x2cb0}}}, - {0x2cb3, {1|U, {0x2cb2}}}, - {0x2cb5, {1|U, {0x2cb4}}}, - {0x2cb7, {1|U, {0x2cb6}}}, - {0x2cb9, {1|U, {0x2cb8}}}, - {0x2cbb, {1|U, {0x2cba}}}, - {0x2cbd, {1|U, {0x2cbc}}}, - {0x2cbf, {1|U, {0x2cbe}}}, - {0x2cc1, {1|U, {0x2cc0}}}, - {0x2cc3, {1|U, {0x2cc2}}}, - {0x2cc5, {1|U, {0x2cc4}}}, - {0x2cc7, {1|U, {0x2cc6}}}, - {0x2cc9, {1|U, {0x2cc8}}}, - {0x2ccb, {1|U, {0x2cca}}}, - {0x2ccd, {1|U, {0x2ccc}}}, - {0x2ccf, {1|U, {0x2cce}}}, - {0x2cd1, {1|U, {0x2cd0}}}, - {0x2cd3, {1|U, {0x2cd2}}}, - {0x2cd5, {1|U, {0x2cd4}}}, - {0x2cd7, {1|U, {0x2cd6}}}, - {0x2cd9, {1|U, {0x2cd8}}}, - {0x2cdb, {1|U, {0x2cda}}}, - {0x2cdd, {1|U, {0x2cdc}}}, - {0x2cdf, {1|U, {0x2cde}}}, - {0x2ce1, {1|U, {0x2ce0}}}, - {0x2ce3, {1|U, {0x2ce2}}}, - {0x2cec, {1|U, {0x2ceb}}}, - {0x2cee, {1|U, {0x2ced}}}, - {0x2cf3, {1|U, {0x2cf2}}}, - {0x2d00, {1|U, {0x10a0}}}, - {0x2d01, {1|U, {0x10a1}}}, - {0x2d02, {1|U, {0x10a2}}}, - {0x2d03, {1|U, {0x10a3}}}, - {0x2d04, {1|U, {0x10a4}}}, - {0x2d05, {1|U, {0x10a5}}}, - {0x2d06, {1|U, {0x10a6}}}, - {0x2d07, {1|U, {0x10a7}}}, - {0x2d08, {1|U, {0x10a8}}}, - {0x2d09, {1|U, {0x10a9}}}, - {0x2d0a, {1|U, {0x10aa}}}, - {0x2d0b, {1|U, {0x10ab}}}, - {0x2d0c, {1|U, {0x10ac}}}, - {0x2d0d, {1|U, {0x10ad}}}, - {0x2d0e, {1|U, {0x10ae}}}, - {0x2d0f, {1|U, {0x10af}}}, - {0x2d10, {1|U, {0x10b0}}}, - {0x2d11, {1|U, {0x10b1}}}, - {0x2d12, {1|U, {0x10b2}}}, - {0x2d13, {1|U, {0x10b3}}}, - {0x2d14, {1|U, {0x10b4}}}, - {0x2d15, {1|U, {0x10b5}}}, - {0x2d16, {1|U, {0x10b6}}}, - {0x2d17, {1|U, {0x10b7}}}, - {0x2d18, {1|U, {0x10b8}}}, - {0x2d19, {1|U, {0x10b9}}}, - {0x2d1a, {1|U, {0x10ba}}}, - {0x2d1b, {1|U, {0x10bb}}}, - {0x2d1c, {1|U, {0x10bc}}}, - {0x2d1d, {1|U, {0x10bd}}}, - {0x2d1e, {1|U, {0x10be}}}, - {0x2d1f, {1|U, {0x10bf}}}, - {0x2d20, {1|U, {0x10c0}}}, - {0x2d21, {1|U, {0x10c1}}}, - {0x2d22, {1|U, {0x10c2}}}, - {0x2d23, {1|U, {0x10c3}}}, - {0x2d24, {1|U, {0x10c4}}}, - {0x2d25, {1|U, {0x10c5}}}, - {0x2d27, {1|U, {0x10c7}}}, - {0x2d2d, {1|U, {0x10cd}}}, - {0xa641, {1|U, {0xa640}}}, - {0xa643, {1|U, {0xa642}}}, - {0xa645, {1|U, {0xa644}}}, - {0xa647, {1|U, {0xa646}}}, - {0xa649, {1|U, {0xa648}}}, - {0xa64b, {2|U, {0xa64a, 0x1c88}}}, - {0xa64d, {1|U, {0xa64c}}}, - {0xa64f, {1|U, {0xa64e}}}, - {0xa651, {1|U, {0xa650}}}, - {0xa653, {1|U, {0xa652}}}, - {0xa655, {1|U, {0xa654}}}, - {0xa657, {1|U, {0xa656}}}, - {0xa659, {1|U, {0xa658}}}, - {0xa65b, {1|U, {0xa65a}}}, - {0xa65d, {1|U, {0xa65c}}}, - {0xa65f, {1|U, {0xa65e}}}, - {0xa661, {1|U, {0xa660}}}, - {0xa663, {1|U, {0xa662}}}, - {0xa665, {1|U, {0xa664}}}, - {0xa667, {1|U, {0xa666}}}, - {0xa669, {1|U, {0xa668}}}, - {0xa66b, {1|U, {0xa66a}}}, - {0xa66d, {1|U, {0xa66c}}}, - {0xa681, {1|U, {0xa680}}}, - {0xa683, {1|U, {0xa682}}}, - {0xa685, {1|U, {0xa684}}}, - {0xa687, {1|U, {0xa686}}}, - {0xa689, {1|U, {0xa688}}}, - {0xa68b, {1|U, {0xa68a}}}, - {0xa68d, {1|U, {0xa68c}}}, - {0xa68f, {1|U, {0xa68e}}}, - {0xa691, {1|U, {0xa690}}}, - {0xa693, {1|U, {0xa692}}}, - {0xa695, {1|U, {0xa694}}}, - {0xa697, {1|U, {0xa696}}}, - {0xa699, {1|U, {0xa698}}}, - {0xa69b, {1|U, {0xa69a}}}, - {0xa723, {1|U, {0xa722}}}, - {0xa725, {1|U, {0xa724}}}, - {0xa727, {1|U, {0xa726}}}, - {0xa729, {1|U, {0xa728}}}, - {0xa72b, {1|U, {0xa72a}}}, - {0xa72d, {1|U, {0xa72c}}}, - {0xa72f, {1|U, {0xa72e}}}, - {0xa733, {1|U, {0xa732}}}, - {0xa735, {1|U, {0xa734}}}, - {0xa737, {1|U, {0xa736}}}, - {0xa739, {1|U, {0xa738}}}, - {0xa73b, {1|U, {0xa73a}}}, - {0xa73d, {1|U, {0xa73c}}}, - {0xa73f, {1|U, {0xa73e}}}, - {0xa741, {1|U, {0xa740}}}, - {0xa743, {1|U, {0xa742}}}, - {0xa745, {1|U, {0xa744}}}, - {0xa747, {1|U, {0xa746}}}, - {0xa749, {1|U, {0xa748}}}, - {0xa74b, {1|U, {0xa74a}}}, - {0xa74d, {1|U, {0xa74c}}}, - {0xa74f, {1|U, {0xa74e}}}, - {0xa751, {1|U, {0xa750}}}, - {0xa753, {1|U, {0xa752}}}, - {0xa755, {1|U, {0xa754}}}, - {0xa757, {1|U, {0xa756}}}, - {0xa759, {1|U, {0xa758}}}, - {0xa75b, {1|U, {0xa75a}}}, - {0xa75d, {1|U, {0xa75c}}}, - {0xa75f, {1|U, {0xa75e}}}, - {0xa761, {1|U, {0xa760}}}, - {0xa763, {1|U, {0xa762}}}, - {0xa765, {1|U, {0xa764}}}, - {0xa767, {1|U, {0xa766}}}, - {0xa769, {1|U, {0xa768}}}, - {0xa76b, {1|U, {0xa76a}}}, - {0xa76d, {1|U, {0xa76c}}}, - {0xa76f, {1|U, {0xa76e}}}, - {0xa77a, {1|U, {0xa779}}}, - {0xa77c, {1|U, {0xa77b}}}, - {0xa77f, {1|U, {0xa77e}}}, - {0xa781, {1|U, {0xa780}}}, - {0xa783, {1|U, {0xa782}}}, - {0xa785, {1|U, {0xa784}}}, - {0xa787, {1|U, {0xa786}}}, - {0xa78c, {1|U, {0xa78b}}}, - {0xa791, {1|U, {0xa790}}}, - {0xa793, {1|U, {0xa792}}}, - {0xa797, {1|U, {0xa796}}}, - {0xa799, {1|U, {0xa798}}}, - {0xa79b, {1|U, {0xa79a}}}, - {0xa79d, {1|U, {0xa79c}}}, - {0xa79f, {1|U, {0xa79e}}}, - {0xa7a1, {1|U, {0xa7a0}}}, - {0xa7a3, {1|U, {0xa7a2}}}, - {0xa7a5, {1|U, {0xa7a4}}}, - {0xa7a7, {1|U, {0xa7a6}}}, - {0xa7a9, {1|U, {0xa7a8}}}, - {0xa7b5, {1|U, {0xa7b4}}}, - {0xa7b7, {1|U, {0xa7b6}}}, - {0xab53, {1|U, {0xa7b3}}}, - {0xff41, {1|U, {0xff21}}}, - {0xff42, {1|U, {0xff22}}}, - {0xff43, {1|U, {0xff23}}}, - {0xff44, {1|U, {0xff24}}}, - {0xff45, {1|U, {0xff25}}}, - {0xff46, {1|U, {0xff26}}}, - {0xff47, {1|U, {0xff27}}}, - {0xff48, {1|U, {0xff28}}}, - {0xff49, {1|U, {0xff29}}}, - {0xff4a, {1|U, {0xff2a}}}, - {0xff4b, {1|U, {0xff2b}}}, - {0xff4c, {1|U, {0xff2c}}}, - {0xff4d, {1|U, {0xff2d}}}, - {0xff4e, {1|U, {0xff2e}}}, - {0xff4f, {1|U, {0xff2f}}}, - {0xff50, {1|U, {0xff30}}}, - {0xff51, {1|U, {0xff31}}}, - {0xff52, {1|U, {0xff32}}}, - {0xff53, {1|U, {0xff33}}}, - {0xff54, {1|U, {0xff34}}}, - {0xff55, {1|U, {0xff35}}}, - {0xff56, {1|U, {0xff36}}}, - {0xff57, {1|U, {0xff37}}}, - {0xff58, {1|U, {0xff38}}}, - {0xff59, {1|U, {0xff39}}}, - {0xff5a, {1|U, {0xff3a}}}, - {0x10428, {1|U, {0x10400}}}, - {0x10429, {1|U, {0x10401}}}, - {0x1042a, {1|U, {0x10402}}}, - {0x1042b, {1|U, {0x10403}}}, - {0x1042c, {1|U, {0x10404}}}, - {0x1042d, {1|U, {0x10405}}}, - {0x1042e, {1|U, {0x10406}}}, - {0x1042f, {1|U, {0x10407}}}, - {0x10430, {1|U, {0x10408}}}, - {0x10431, {1|U, {0x10409}}}, - {0x10432, {1|U, {0x1040a}}}, - {0x10433, {1|U, {0x1040b}}}, - {0x10434, {1|U, {0x1040c}}}, - {0x10435, {1|U, {0x1040d}}}, - {0x10436, {1|U, {0x1040e}}}, - {0x10437, {1|U, {0x1040f}}}, - {0x10438, {1|U, {0x10410}}}, - {0x10439, {1|U, {0x10411}}}, - {0x1043a, {1|U, {0x10412}}}, - {0x1043b, {1|U, {0x10413}}}, - {0x1043c, {1|U, {0x10414}}}, - {0x1043d, {1|U, {0x10415}}}, - {0x1043e, {1|U, {0x10416}}}, - {0x1043f, {1|U, {0x10417}}}, - {0x10440, {1|U, {0x10418}}}, - {0x10441, {1|U, {0x10419}}}, - {0x10442, {1|U, {0x1041a}}}, - {0x10443, {1|U, {0x1041b}}}, - {0x10444, {1|U, {0x1041c}}}, - {0x10445, {1|U, {0x1041d}}}, - {0x10446, {1|U, {0x1041e}}}, - {0x10447, {1|U, {0x1041f}}}, - {0x10448, {1|U, {0x10420}}}, - {0x10449, {1|U, {0x10421}}}, - {0x1044a, {1|U, {0x10422}}}, - {0x1044b, {1|U, {0x10423}}}, - {0x1044c, {1|U, {0x10424}}}, - {0x1044d, {1|U, {0x10425}}}, - {0x1044e, {1|U, {0x10426}}}, - {0x1044f, {1|U, {0x10427}}}, - {0x104d8, {1|U, {0x104b0}}}, - {0x104d9, {1|U, {0x104b1}}}, - {0x104da, {1|U, {0x104b2}}}, - {0x104db, {1|U, {0x104b3}}}, - {0x104dc, {1|U, {0x104b4}}}, - {0x104dd, {1|U, {0x104b5}}}, - {0x104de, {1|U, {0x104b6}}}, - {0x104df, {1|U, {0x104b7}}}, - {0x104e0, {1|U, {0x104b8}}}, - {0x104e1, {1|U, {0x104b9}}}, - {0x104e2, {1|U, {0x104ba}}}, - {0x104e3, {1|U, {0x104bb}}}, - {0x104e4, {1|U, {0x104bc}}}, - {0x104e5, {1|U, {0x104bd}}}, - {0x104e6, {1|U, {0x104be}}}, - {0x104e7, {1|U, {0x104bf}}}, - {0x104e8, {1|U, {0x104c0}}}, - {0x104e9, {1|U, {0x104c1}}}, - {0x104ea, {1|U, {0x104c2}}}, - {0x104eb, {1|U, {0x104c3}}}, - {0x104ec, {1|U, {0x104c4}}}, - {0x104ed, {1|U, {0x104c5}}}, - {0x104ee, {1|U, {0x104c6}}}, - {0x104ef, {1|U, {0x104c7}}}, - {0x104f0, {1|U, {0x104c8}}}, - {0x104f1, {1|U, {0x104c9}}}, - {0x104f2, {1|U, {0x104ca}}}, - {0x104f3, {1|U, {0x104cb}}}, - {0x104f4, {1|U, {0x104cc}}}, - {0x104f5, {1|U, {0x104cd}}}, - {0x104f6, {1|U, {0x104ce}}}, - {0x104f7, {1|U, {0x104cf}}}, - {0x104f8, {1|U, {0x104d0}}}, - {0x104f9, {1|U, {0x104d1}}}, - {0x104fa, {1|U, {0x104d2}}}, - {0x104fb, {1|U, {0x104d3}}}, - {0x10cc0, {1|U, {0x10c80}}}, - {0x10cc1, {1|U, {0x10c81}}}, - {0x10cc2, {1|U, {0x10c82}}}, - {0x10cc3, {1|U, {0x10c83}}}, - {0x10cc4, {1|U, {0x10c84}}}, - {0x10cc5, {1|U, {0x10c85}}}, - {0x10cc6, {1|U, {0x10c86}}}, - {0x10cc7, {1|U, {0x10c87}}}, - {0x10cc8, {1|U, {0x10c88}}}, - {0x10cc9, {1|U, {0x10c89}}}, - {0x10cca, {1|U, {0x10c8a}}}, - {0x10ccb, {1|U, {0x10c8b}}}, - {0x10ccc, {1|U, {0x10c8c}}}, - {0x10ccd, {1|U, {0x10c8d}}}, - {0x10cce, {1|U, {0x10c8e}}}, - {0x10ccf, {1|U, {0x10c8f}}}, - {0x10cd0, {1|U, {0x10c90}}}, - {0x10cd1, {1|U, {0x10c91}}}, - {0x10cd2, {1|U, {0x10c92}}}, - {0x10cd3, {1|U, {0x10c93}}}, - {0x10cd4, {1|U, {0x10c94}}}, - {0x10cd5, {1|U, {0x10c95}}}, - {0x10cd6, {1|U, {0x10c96}}}, - {0x10cd7, {1|U, {0x10c97}}}, - {0x10cd8, {1|U, {0x10c98}}}, - {0x10cd9, {1|U, {0x10c99}}}, - {0x10cda, {1|U, {0x10c9a}}}, - {0x10cdb, {1|U, {0x10c9b}}}, - {0x10cdc, {1|U, {0x10c9c}}}, - {0x10cdd, {1|U, {0x10c9d}}}, - {0x10cde, {1|U, {0x10c9e}}}, - {0x10cdf, {1|U, {0x10c9f}}}, - {0x10ce0, {1|U, {0x10ca0}}}, - {0x10ce1, {1|U, {0x10ca1}}}, - {0x10ce2, {1|U, {0x10ca2}}}, - {0x10ce3, {1|U, {0x10ca3}}}, - {0x10ce4, {1|U, {0x10ca4}}}, - {0x10ce5, {1|U, {0x10ca5}}}, - {0x10ce6, {1|U, {0x10ca6}}}, - {0x10ce7, {1|U, {0x10ca7}}}, - {0x10ce8, {1|U, {0x10ca8}}}, - {0x10ce9, {1|U, {0x10ca9}}}, - {0x10cea, {1|U, {0x10caa}}}, - {0x10ceb, {1|U, {0x10cab}}}, - {0x10cec, {1|U, {0x10cac}}}, - {0x10ced, {1|U, {0x10cad}}}, - {0x10cee, {1|U, {0x10cae}}}, - {0x10cef, {1|U, {0x10caf}}}, - {0x10cf0, {1|U, {0x10cb0}}}, - {0x10cf1, {1|U, {0x10cb1}}}, - {0x10cf2, {1|U, {0x10cb2}}}, - {0x118c0, {1|U, {0x118a0}}}, - {0x118c1, {1|U, {0x118a1}}}, - {0x118c2, {1|U, {0x118a2}}}, - {0x118c3, {1|U, {0x118a3}}}, - {0x118c4, {1|U, {0x118a4}}}, - {0x118c5, {1|U, {0x118a5}}}, - {0x118c6, {1|U, {0x118a6}}}, - {0x118c7, {1|U, {0x118a7}}}, - {0x118c8, {1|U, {0x118a8}}}, - {0x118c9, {1|U, {0x118a9}}}, - {0x118ca, {1|U, {0x118aa}}}, - {0x118cb, {1|U, {0x118ab}}}, - {0x118cc, {1|U, {0x118ac}}}, - {0x118cd, {1|U, {0x118ad}}}, - {0x118ce, {1|U, {0x118ae}}}, - {0x118cf, {1|U, {0x118af}}}, - {0x118d0, {1|U, {0x118b0}}}, - {0x118d1, {1|U, {0x118b1}}}, - {0x118d2, {1|U, {0x118b2}}}, - {0x118d3, {1|U, {0x118b3}}}, - {0x118d4, {1|U, {0x118b4}}}, - {0x118d5, {1|U, {0x118b5}}}, - {0x118d6, {1|U, {0x118b6}}}, - {0x118d7, {1|U, {0x118b7}}}, - {0x118d8, {1|U, {0x118b8}}}, - {0x118d9, {1|U, {0x118b9}}}, - {0x118da, {1|U, {0x118ba}}}, - {0x118db, {1|U, {0x118bb}}}, - {0x118dc, {1|U, {0x118bc}}}, - {0x118dd, {1|U, {0x118bd}}}, - {0x118de, {1|U, {0x118be}}}, - {0x118df, {1|U, {0x118bf}}}, - {0x1e922, {1|U, {0x1e900}}}, - {0x1e923, {1|U, {0x1e901}}}, - {0x1e924, {1|U, {0x1e902}}}, - {0x1e925, {1|U, {0x1e903}}}, - {0x1e926, {1|U, {0x1e904}}}, - {0x1e927, {1|U, {0x1e905}}}, - {0x1e928, {1|U, {0x1e906}}}, - {0x1e929, {1|U, {0x1e907}}}, - {0x1e92a, {1|U, {0x1e908}}}, - {0x1e92b, {1|U, {0x1e909}}}, - {0x1e92c, {1|U, {0x1e90a}}}, - {0x1e92d, {1|U, {0x1e90b}}}, - {0x1e92e, {1|U, {0x1e90c}}}, - {0x1e92f, {1|U, {0x1e90d}}}, - {0x1e930, {1|U, {0x1e90e}}}, - {0x1e931, {1|U, {0x1e90f}}}, - {0x1e932, {1|U, {0x1e910}}}, - {0x1e933, {1|U, {0x1e911}}}, - {0x1e934, {1|U, {0x1e912}}}, - {0x1e935, {1|U, {0x1e913}}}, - {0x1e936, {1|U, {0x1e914}}}, - {0x1e937, {1|U, {0x1e915}}}, - {0x1e938, {1|U, {0x1e916}}}, - {0x1e939, {1|U, {0x1e917}}}, - {0x1e93a, {1|U, {0x1e918}}}, - {0x1e93b, {1|U, {0x1e919}}}, - {0x1e93c, {1|U, {0x1e91a}}}, - {0x1e93d, {1|U, {0x1e91b}}}, - {0x1e93e, {1|U, {0x1e91c}}}, - {0x1e93f, {1|U, {0x1e91d}}}, - {0x1e940, {1|U, {0x1e91e}}}, - {0x1e941, {1|U, {0x1e91f}}}, - {0x1e942, {1|U, {0x1e920}}}, - {0x1e943, {1|U, {0x1e921}}}, -#define CaseUnfold_11_Locale (*(CaseUnfold_11_Type (*)[1])(CaseUnfold_11_Table+1266)) - {0x0069, {1|U, {0x0049}}}, -}; - -/* C code produced by gperf version 3.0.4 */ -/* Command-line: gperf -7 -k1,2,3 -F,-1 -c -j1 -i1 -t -T -E -C -H onigenc_unicode_CaseUnfold_11_hash -N onigenc_unicode_CaseUnfold_11_lookup -n */ - -/* maximum key range = 2216, duplicates = 0 */ - -#ifdef __GNUC__ -__inline -#else -#ifdef __cplusplus -inline -#endif -#endif -/*ARGSUSED*/ -static unsigned int -onigenc_unicode_CaseUnfold_11_hash(const OnigCodePoint code) -{ - static const unsigned short asso_values[] = - { - 1, 2219, 2, 14, 4, 807, 9, 379, 10, 179, - 70, 161, 2, 3, 411, 4, 2219, 2219, 2219, 2219, - 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 80, - 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, - 2219, 2219, 2219, 1, 2219, 2219, 2219, 2219, 2219, 2219, - 2219, 2219, 2219, 210, 2219, 2219, 2219, 2219, 2219, 2219, - 2219, 2219, 53, 2219, 7, 8, 306, 607, 169, 844, - 431, 722, 125, 1047, 489, 1394, 15, 16, 324, 1361, - 140, 521, 47, 461, 221, 985, 70, 965, 9, 1085, - 51, 1029, 223, 11, 430, 1168, 122, 1457, 344, 930, - 91, 711, 31, 651, 157, 772, 224, 876, 262, 900, - 254, 686, 221, 830, 1335, 755, 432, 623, 1382, 675, - 1275, 587, 99, 821, 1530, 958, 195, 810, 1518, 739, - 330, 361, 767, 313, 941, 400, 925, 384, 1142, 295, - 1295, 242, 1103, 229, 1082, 206, 1066, 104, 1317, 137, - 1249, 263, 1229, 115, 1154, 71, 135, 60, 1211, 158, - 1472, 175, 1232, 1, 1345, 27, 1269, 38, 1111, 87, - 1189, 49, 1256, 503, 1157, 574, 1410, 556, 1200, 787, - 948, 486, 1316, 797, 1218, 1044, 1282, 1007, 1126, 996, - 818, 1019, 218, 1072 - }; - return asso_values[bits_of(code, 2)+66] + asso_values[bits_of(code, 1)+4] + asso_values[bits_of(code, 0)]; -} - -#ifdef __GNUC__ -__inline -#if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__ -__attribute__ ((__gnu_inline__)) -#endif -#endif -static const CodePointList3 * -onigenc_unicode_CaseUnfold_11_lookup(const OnigCodePoint code) -{ - enum - { - MIN_CODE_VALUE = 0x61, - MAX_CODE_VALUE = 0x1e943, - TOTAL_KEYWORDS = 1267, - MIN_WORD_LENGTH = 3, - MAX_WORD_LENGTH = 3, - MIN_HASH_VALUE = 3, - MAX_HASH_VALUE = 2218 - }; - - static const short wordlist[] = - { - -1, -1, -1, - /*0x13e1*/ 542, - /*0x0461*/ 339, - /*0x04e1*/ 399, - /*0x0061*/ 0, - -1, - /*0x104e1*/ 1122, - /*0x1e61*/ 613, - /*0x1ee1*/ 672, - /*0x0161*/ 102, - /*0x0261*/ 210, - /*0x2ce1*/ 904, - -1, - /*0x049b*/ 364, - -1, -1, - /*0x24e1*/ 792, - /*0x1e1b*/ 578, - /*0x048b*/ 356, - /*0x011b*/ 69, - /*0x021b*/ 178, - /*0x2c9b*/ 869, - /*0x1e0b*/ 570, - /*0x1e8b*/ 634, - /*0x010b*/ 61, - /*0x020b*/ 170, - /*0x2c8b*/ 861, - /*0x13e3*/ 544, - /*0x0463*/ 340, - /*0x04e3*/ 400, - /*0x0063*/ 2, - /*0x13a4*/ 481, - /*0x104e3*/ 1124, - /*0x1e63*/ 614, - /*0x1ee3*/ 673, - /*0x0163*/ 103, - /*0x0263*/ 211, - /*0x2ce3*/ 905, - /*0x13e5*/ 546, - /*0x0465*/ 341, - /*0x04e5*/ 401, - /*0x0065*/ 4, - /*0x24e3*/ 794, - /*0x104e5*/ 1126, - /*0x1e65*/ 615, - /*0x1ee5*/ 674, - /*0x0165*/ 104, - /*0x0265*/ 212, - /*0xa761*/ 1016, - /*0x13e9*/ 550, - /*0x0469*/ 343, - /*0x04e9*/ 403, - /*0x0069*/ 1266, - /*0x24e5*/ 796, - /*0x104e9*/ 1130, - /*0x1e69*/ 617, - /*0x1ee9*/ 676, - /*0x0169*/ 106, - /*0x0269*/ 215, - -1, - /*0x13db*/ 536, - /*0x045b*/ 334, - /*0x04db*/ 396, - -1, - /*0x24e9*/ 800, - /*0x104db*/ 1116, - /*0x1e5b*/ 610, - /*0x1edb*/ 669, - /*0x015b*/ 99, - /*0x025b*/ 207, - /*0x2cdb*/ 901, - /*0x13d9*/ 534, - /*0x0459*/ 332, - /*0x04d9*/ 395, - /*0xa763*/ 1017, - /*0x24db*/ 786, - /*0x104d9*/ 1114, - /*0x1e59*/ 609, - /*0x1ed9*/ 668, - /*0x0159*/ 98, - /*0x0259*/ 206, - /*0x2cd9*/ 900, - -1, - /*0x10ce1*/ 1182, - -1, - /*0xa765*/ 1018, - /*0x24d9*/ 784, - /*0x13e7*/ 548, - /*0x0467*/ 342, - /*0x04e7*/ 402, - /*0x0067*/ 6, - /*0x13a2*/ 479, - /*0x104e7*/ 1128, - /*0x1e67*/ 616, - /*0x1ee7*/ 675, - /*0x0167*/ 105, - /*0xa769*/ 1020, - -1, -1, - /*0x13b8*/ 501, - /*0x0438*/ 299, - -1, - /*0x24e7*/ 798, - /*0x10438*/ 1089, - /*0x13d1*/ 526, - /*0x0451*/ 324, - /*0x04d1*/ 391, - /*0xa75b*/ 1013, - -1, - /*0x10ce3*/ 1184, - /*0x1e51*/ 605, - /*0x1ed1*/ 664, - /*0x0151*/ 94, - /*0x0251*/ 200, - /*0x2cd1*/ 896, - /*0x13d7*/ 532, - /*0x0457*/ 330, - /*0x04d7*/ 394, - /*0xa759*/ 1012, - /*0x24d1*/ 776, - /*0x10ce5*/ 1186, - /*0x1e57*/ 608, - /*0x1ed7*/ 667, - /*0x0157*/ 97, - /*0x0257*/ 205, - /*0x2cd7*/ 899, - -1, -1, - /*0x0586*/ 476, - -1, - /*0x24d7*/ 782, - /*0x10ce9*/ 1190, - -1, -1, - /*0xa767*/ 1019, - /*0x13da*/ 535, - /*0x045a*/ 333, - /*0x13d3*/ 528, - /*0x0453*/ 326, - /*0x04d3*/ 392, - /*0x104da*/ 1115, - /*0xa661*/ 965, - /*0x10cdb*/ 1176, - /*0x1e53*/ 606, - /*0x1ed3*/ 665, - /*0x0153*/ 95, - /*0x0253*/ 202, - /*0x2cd3*/ 897, - -1, -1, - /*0x24da*/ 785, - /*0xa751*/ 1008, - /*0x24d3*/ 778, - /*0x10cd9*/ 1174, - -1, -1, -1, - /*0x13a6*/ 483, - /*0x13dd*/ 538, - /*0x045d*/ 336, - /*0x04dd*/ 397, - /*0x03e1*/ 279, - /*0xa757*/ 1011, - /*0x104dd*/ 1118, - /*0x1e5d*/ 611, - /*0x1edd*/ 670, - /*0x015d*/ 100, - /*0xa663*/ 966, - /*0x2cdd*/ 902, - /*0x10ce7*/ 1188, - -1, -1, - /*0x0582*/ 472, - /*0x24dd*/ 788, - -1, - /*0x13df*/ 540, - /*0x045f*/ 338, - /*0x04df*/ 398, - /*0xa665*/ 967, - -1, - /*0x104df*/ 1120, - /*0x1e5f*/ 612, - /*0x1edf*/ 671, - /*0x015f*/ 101, - /*0xa753*/ 1009, - /*0x2cdf*/ 903, - /*0x10cd1*/ 1166, - /*0x03e3*/ 280, - /*0xab53*/ 1046, - /*0xa669*/ 969, - /*0x24df*/ 790, - -1, -1, - /*0x028a*/ 229, - /*0x028b*/ 230, - /*0x13bc*/ 505, - /*0x043c*/ 303, - /*0x10cd7*/ 1172, - /*0x03e5*/ 281, - /*0x1043c*/ 1093, - /*0xa65b*/ 962, - -1, -1, - /*0x013c*/ 84, - /*0x023c*/ 190, - /*0xa75d*/ 1014, - /*0x13cf*/ 524, - /*0x044f*/ 322, - /*0x04cf*/ 390, - /*0x03e9*/ 283, - /*0x1044f*/ 1112, - /*0xa659*/ 961, - /*0x1e4f*/ 604, - /*0x1ecf*/ 663, - /*0x014f*/ 93, - /*0x024f*/ 198, - /*0x2ccf*/ 895, - /*0x10cda*/ 1175, - -1, - /*0x10cd3*/ 1168, - /*0x03db*/ 276, - /*0x13ae*/ 491, - /*0xa75f*/ 1015, - /*0x2c61*/ 848, - /*0x13a8*/ 485, - /*0x1042e*/ 1079, - /*0x017e*/ 116, - /*0xa667*/ 968, - /*0x10428*/ 1073, - /*0x13cd*/ 522, - /*0x044d*/ 320, - /*0x03d9*/ 275, - -1, - /*0x1044d*/ 1110, - -1, - /*0x1e4d*/ 603, - /*0x1ecd*/ 662, - /*0x014d*/ 92, - /*0x024d*/ 197, - /*0x2ccd*/ 894, - /*0x10cdd*/ 1178, - -1, - /*0x13cb*/ 520, - /*0x044b*/ 318, - /*0xa651*/ 957, - -1, - /*0x1044b*/ 1108, - /*0x03e7*/ 282, - /*0x1e4b*/ 602, - /*0x1ecb*/ 661, - /*0x014b*/ 91, - /*0x024b*/ 196, - /*0x2ccb*/ 893, - /*0xa74f*/ 1007, - /*0x13ac*/ 489, - /*0xa657*/ 960, - -1, - /*0x10cdf*/ 1180, - /*0x1042c*/ 1077, - /*0x03b8*/ 252, - /*0x2c65*/ 849, - -1, - /*0x13aa*/ 487, - /*0x13d5*/ 530, - /*0x0455*/ 328, - /*0x04d5*/ 393, - /*0x1042a*/ 1075, - -1, -1, - /*0x1e55*/ 607, - /*0x1ed5*/ 666, - /*0x0155*/ 96, - /*0x118db*/ 1227, - /*0x2cd5*/ 898, - -1, - /*0x03d7*/ 274, - /*0xa74d*/ 1006, - /*0xa653*/ 958, - /*0x24d5*/ 780, - -1, -1, -1, - /*0x2c5b*/ 844, - /*0x118d9*/ 1225, - -1, -1, -1, -1, - /*0x10ccf*/ 1164, - /*0xa74b*/ 1005, - -1, -1, -1, - /*0x2c59*/ 842, - -1, - /*0x13c9*/ 518, - /*0x0449*/ 316, - -1, - /*0xa65d*/ 963, - /*0x10449*/ 1106, - /*0x029e*/ 234, - /*0x1e49*/ 601, - /*0x1ec9*/ 660, - -1, - /*0x0249*/ 195, - /*0x2cc9*/ 892, - /*0x1f61*/ 729, - -1, -1, - /*0x0580*/ 470, - /*0xa755*/ 1010, - /*0x10ccd*/ 1162, - -1, - /*0x13c3*/ 512, - /*0x0443*/ 310, - /*0xa65f*/ 964, - /*0x118d1*/ 1217, - /*0x10443*/ 1100, - /*0x03dd*/ 277, - /*0x1e43*/ 598, - /*0x1ec3*/ 657, - /*0x2c38*/ 809, - -1, - /*0x2cc3*/ 889, - /*0x10ccb*/ 1160, - -1, - /*0x2c51*/ 834, - /*0x118d7*/ 1223, - -1, -1, - /*0x13c0*/ 509, - /*0x0440*/ 307, - /*0x1f63*/ 731, - -1, - /*0x10440*/ 1097, - /*0x03df*/ 278, - /*0x1f24*/ 706, - /*0x2c57*/ 840, - /*0x0140*/ 86, - /*0x0240*/ 192, - -1, -1, - /*0xa749*/ 1004, - /*0x1f65*/ 733, - /*0x13a0*/ 477, - /*0x10cd5*/ 1170, - /*0xa64f*/ 956, - /*0x118da*/ 1226, - -1, - /*0x118d3*/ 1219, - -1, -1, - /*0x1f10*/ 696, - -1, -1, - /*0x03bc*/ 256, - -1, - /*0x2c5a*/ 843, - -1, - /*0x2c53*/ 836, - /*0xa743*/ 1001, - /*0x13c1*/ 510, - /*0x0441*/ 308, - -1, -1, - /*0x10441*/ 1098, - -1, - /*0x1e41*/ 597, - /*0x1ec1*/ 656, - /*0xa64d*/ 955, - /*0x118dd*/ 1229, - /*0x2cc1*/ 888, - -1, -1, -1, - /*0x1f14*/ 700, - -1, - /*0x10cc9*/ 1158, - -1, - /*0x01e1*/ 151, - /*0x2c5d*/ 846, - /*0x03ae*/ 243, - /*0xa64b*/ 954, - -1, - /*0x13c7*/ 516, - /*0x0447*/ 314, - -1, - /*0x118df*/ 1231, - /*0x10447*/ 1104, - /*0x03cd*/ 272, - /*0x1e47*/ 600, - /*0x1ec7*/ 659, - /*0x1f67*/ 735, - /*0x0247*/ 194, - /*0x2cc7*/ 891, - /*0x10cc3*/ 1152, - /*0x1f22*/ 704, - -1, -1, - /*0x0292*/ 232, - /*0x13c5*/ 514, - /*0x0445*/ 312, - /*0x03cb*/ 270, - /*0xa655*/ 959, - /*0x10445*/ 1102, - /*0x01e3*/ 152, - /*0x1e45*/ 599, - /*0x1ec5*/ 658, - /*0xa741*/ 1000, - /*0x1f51*/ 724, - /*0x2cc5*/ 890, - /*0x0561*/ 439, - /*0x10cc0*/ 1149, - /*0xff59*/ 1071, - /*0x03ac*/ 241, - -1, - /*0x01e5*/ 153, - /*0x2c3c*/ 813, - /*0x118cf*/ 1215, - -1, - /*0x1f57*/ 727, - /*0x051b*/ 428, - -1, -1, -1, -1, - /*0x050b*/ 420, - /*0x01e9*/ 155, - /*0x2c4f*/ 832, - -1, - /*0x1f06*/ 694, - /*0xa747*/ 1003, - /*0x13b2*/ 495, - /*0x0432*/ 293, - /*0x0584*/ 474, - /*0xa649*/ 953, - /*0x10432*/ 1083, - /*0x0563*/ 441, - /*0x2d16*/ 931, - -1, - /*0x2d1b*/ 936, - /*0x118cd*/ 1213, - /*0x1f53*/ 725, - /*0x10cc1*/ 1150, - /*0x2d0a*/ 919, - /*0x2d0b*/ 920, - /*0xff51*/ 1063, - /*0xa745*/ 1002, - /*0x0565*/ 443, - -1, -1, - /*0x2c4d*/ 830, - -1, - /*0xa643*/ 950, - /*0x118cb*/ 1211, - /*0x03c9*/ 268, - -1, - /*0xff57*/ 1069, - -1, - /*0x0569*/ 447, - /*0x2d24*/ 945, - -1, - /*0x1f26*/ 708, - /*0x0491*/ 359, - /*0x2c4b*/ 828, - /*0x01e7*/ 154, - /*0x10cc7*/ 1156, - /*0x1e11*/ 573, - /*0x1e91*/ 637, - /*0x0111*/ 64, - /*0x0211*/ 173, - /*0x2c91*/ 864, - /*0xa79b*/ 1036, - /*0x03c3*/ 262, - /*0x1f02*/ 690, - /*0x118d5*/ 1221, - /*0x2d10*/ 925, - /*0xff5a*/ 1072, - /*0x1e924*/ 1234, - /*0xff53*/ 1065, - /*0x2d18*/ 933, - -1, - /*0x10cc5*/ 1154, - -1, - /*0x0280*/ 224, - /*0x2c55*/ 838, - /*0x13f3*/ 560, - /*0x0473*/ 348, - /*0x04f3*/ 408, - /*0x0073*/ 17, - /*0x03c0*/ 260, - /*0x104f3*/ 1140, - /*0x1e73*/ 622, - /*0x1ef3*/ 681, - /*0x0173*/ 111, - -1, - /*0x2cf3*/ 908, - /*0x0567*/ 445, - -1, - /*0x2d14*/ 929, - /*0x019e*/ 126, - /*0xa641*/ 949, - /*0x028c*/ 231, - /*0x13eb*/ 552, - /*0x046b*/ 344, - /*0x04eb*/ 404, - /*0x006b*/ 9, - /*0x118c9*/ 1209, - /*0x104eb*/ 1132, - /*0x1e6b*/ 618, - /*0x1eeb*/ 677, - /*0x016b*/ 107, - /*0x026b*/ 217, - /*0x01da*/ 147, - -1, -1, -1, - /*0x2c49*/ 826, - -1, -1, - /*0x2d22*/ 943, - /*0x03c1*/ 261, - -1, - /*0x048f*/ 358, - /*0xa647*/ 952, - /*0x118c3*/ 1203, - /*0x1f12*/ 698, - /*0x1e0f*/ 572, - /*0x1e8f*/ 636, - /*0x010f*/ 63, - /*0x020f*/ 172, - /*0x2c8f*/ 863, - /*0xa69b*/ 985, - -1, -1, - /*0x2c43*/ 820, - /*0x01dd*/ 149, - /*0xa68b*/ 977, - /*0x1e922*/ 1232, - -1, - /*0xa645*/ 951, - -1, - /*0x118c0*/ 1200, - -1, - /*0x03c7*/ 266, - -1, - /*0x1e938*/ 1254, - -1, - /*0xff4f*/ 1061, - -1, - /*0xa76b*/ 1021, - /*0x2d1e*/ 939, - /*0x2c40*/ 817, - /*0x01df*/ 150, - /*0x2d06*/ 915, - /*0x0373*/ 236, - /*0x13ef*/ 556, - /*0x046f*/ 346, - /*0x04ef*/ 406, - /*0x006f*/ 13, - /*0x03c5*/ 264, - /*0x104ef*/ 1136, - /*0x1e6f*/ 620, - /*0x1eef*/ 679, - /*0x016f*/ 109, - /*0x026f*/ 219, - -1, -1, - /*0x1f55*/ 726, - /*0x2d0e*/ 923, - -1, - /*0xff4d*/ 1059, - -1, - /*0x118c1*/ 1201, - /*0x13ed*/ 554, - /*0x046d*/ 345, - /*0x04ed*/ 405, - /*0x006d*/ 11, - -1, - /*0x104ed*/ 1134, - /*0x1e6d*/ 619, - /*0x1eed*/ 678, - /*0x016d*/ 108, - /*0x2c41*/ 818, - /*0xff4b*/ 1057, - /*0x10ceb*/ 1192, - -1, - /*0x13b7*/ 500, - /*0x0437*/ 298, - /*0x04b7*/ 378, - -1, - /*0x10437*/ 1088, - /*0x03b2*/ 246, - /*0x1e37*/ 592, - /*0x1eb7*/ 651, - /*0x0137*/ 82, - /*0x118c7*/ 1207, - /*0x2cb7*/ 883, - /*0x2d02*/ 911, - /*0x0192*/ 122, - -1, - /*0x019a*/ 125, - /*0x01a8*/ 130, - /*0xa76f*/ 1023, - /*0x1e926*/ 1236, - /*0xff55*/ 1067, - /*0x2c47*/ 824, - /*0x1fe1*/ 755, - -1, - /*0x0481*/ 355, - /*0x0581*/ 471, - /*0x1f00*/ 688, - /*0x118c5*/ 1205, - /*0x1e01*/ 565, - /*0x1e81*/ 629, - /*0x0101*/ 56, - /*0x0201*/ 165, - /*0x2c81*/ 856, - /*0x1f43*/ 721, - -1, -1, - /*0xa76d*/ 1022, - /*0x2c45*/ 822, - /*0x13b3*/ 496, - /*0x0433*/ 294, - /*0x04b3*/ 376, - -1, - /*0x10433*/ 1084, - /*0x057e*/ 468, - /*0x1e33*/ 590, - /*0x1eb3*/ 649, - /*0x0133*/ 80, - /*0x0233*/ 189, - /*0x2cb3*/ 881, - /*0xa737*/ 995, - /*0x1f40*/ 718, - -1, - /*0xff49*/ 1055, - /*0x10cef*/ 1196, - -1, -1, -1, - /*0x1e93c*/ 1258, - /*0xa66b*/ 970, - /*0x1fe5*/ 756, - -1, - /*0x03f3*/ 288, - -1, - /*0x217e*/ 772, - /*0x1f20*/ 702, - /*0x2d12*/ 927, - /*0x13a5*/ 482, - /*0x2d1a*/ 935, - /*0x04a5*/ 369, - /*0x2c32*/ 803, - /*0xff43*/ 1049, - /*0x10ced*/ 1194, - /*0x1e25*/ 583, - /*0x1ea5*/ 642, - /*0x0125*/ 74, - /*0x0225*/ 182, - /*0x2ca5*/ 874, - -1, - /*0x03eb*/ 284, - -1, -1, - /*0x1f41*/ 719, - /*0x0288*/ 227, - /*0x1e92e*/ 1244, - -1, - /*0xa733*/ 993, - /*0x1e928*/ 1238, - -1, - /*0x01c9*/ 139, - -1, - /*0x13b5*/ 498, - /*0x0435*/ 296, - /*0x04b5*/ 377, - -1, - /*0x10435*/ 1086, - -1, - /*0x1e35*/ 591, - /*0x1eb5*/ 650, - /*0x0135*/ 81, - /*0x0180*/ 117, - /*0x2cb5*/ 882, - /*0x13ad*/ 490, - -1, - /*0x04ad*/ 373, - -1, - /*0x1042d*/ 1078, - -1, - /*0x1e2d*/ 587, - /*0x1ead*/ 646, - /*0x012d*/ 78, - /*0x022d*/ 186, - /*0x2cad*/ 878, - -1, - /*0xa725*/ 987, - -1, -1, - /*0x1e92c*/ 1242, - /*0x018c*/ 121, - /*0xff41*/ 1047, - -1, - /*0x1f45*/ 723, - -1, -1, - /*0x2c73*/ 854, - /*0x1e92a*/ 1240, - /*0x1fd1*/ 753, - /*0x13a3*/ 480, - -1, - /*0x04a3*/ 368, - /*0xa66d*/ 971, - -1, - /*0x03ef*/ 286, - /*0x1e23*/ 582, - /*0x1ea3*/ 641, - /*0x0123*/ 73, - /*0x0223*/ 181, - /*0x2ca3*/ 873, - /*0xa735*/ 994, - -1, -1, - /*0x0585*/ 475, - /*0xff47*/ 1053, - -1, - /*0x1e05*/ 567, - /*0x1e85*/ 631, - /*0x0105*/ 58, - /*0x0205*/ 167, - /*0x2c85*/ 858, - /*0xa72d*/ 991, - /*0x03ed*/ 285, - /*0x2d00*/ 909, - /*0x1f04*/ 692, - /*0x1f32*/ 712, - -1, - /*0x13bf*/ 508, - /*0x043f*/ 306, - /*0x04bf*/ 382, - /*0xff45*/ 1051, - /*0x1043f*/ 1096, - -1, - /*0x1e3f*/ 596, - /*0x1ebf*/ 655, - /*0x03b7*/ 251, - /*0x023f*/ 191, - /*0x2cbf*/ 887, - -1, -1, -1, - /*0x2d0c*/ 921, - -1, - /*0x13b1*/ 494, - /*0x0431*/ 292, - /*0x04b1*/ 375, - /*0xa723*/ 986, - /*0x10431*/ 1082, - /*0x1e943*/ 1265, - /*0x1e31*/ 589, - /*0x1eb1*/ 648, - -1, - /*0x0231*/ 188, - /*0x2cb1*/ 880, - /*0x1f11*/ 697, - /*0x13c2*/ 511, - /*0x0442*/ 309, - /*0x04c2*/ 383, - -1, - /*0x10442*/ 1099, - /*0x13a7*/ 484, - /*0x2d20*/ 941, - /*0x04a7*/ 370, - /*0x0142*/ 87, - /*0x0242*/ 193, - /*0x1e940*/ 1262, - /*0x1e27*/ 584, - /*0x1ea7*/ 643, - /*0x0127*/ 75, - /*0x0227*/ 183, - /*0x2ca7*/ 875, - /*0x03b3*/ 247, - -1, - /*0xa78c*/ 1031, - /*0xa73f*/ 999, - /*0x13f1*/ 558, - /*0x0471*/ 347, - /*0x04f1*/ 407, - /*0x0071*/ 15, - /*0x1f73*/ 739, - /*0x104f1*/ 1138, - /*0x1e71*/ 621, - /*0x1ef1*/ 680, - /*0x0171*/ 110, - /*0x0271*/ 220, - /*0x13f5*/ 562, - /*0x0475*/ 349, - /*0x04f5*/ 409, - /*0x0075*/ 19, - -1, - /*0x104f5*/ 1142, - /*0x1e75*/ 623, - /*0x1ef5*/ 682, - /*0x0175*/ 112, - /*0x0275*/ 222, - /*0x00e1*/ 26, - /*0x1e941*/ 1263, - /*0x2c37*/ 808, - /*0x13bd*/ 506, - /*0x043d*/ 304, - /*0x04bd*/ 381, - -1, - /*0x1043d*/ 1094, - -1, - /*0x1e3d*/ 595, - /*0x1ebd*/ 654, - -1, - /*0xa727*/ 988, - /*0x2cbd*/ 886, - /*0x13b9*/ 502, - /*0x0439*/ 300, - /*0x04b9*/ 379, - -1, - /*0x10439*/ 1090, - /*0x017c*/ 115, - /*0x1e39*/ 593, - /*0x1eb9*/ 652, - -1, - /*0x13af*/ 492, - /*0x2cb9*/ 884, - /*0x04af*/ 374, - /*0x00e3*/ 28, - /*0x1042f*/ 1080, - /*0x03b5*/ 249, - /*0x1e2f*/ 588, - /*0x1eaf*/ 647, - /*0x012f*/ 79, - /*0x022f*/ 187, - /*0x2caf*/ 879, - -1, -1, -1, - /*0x00e5*/ 30, - /*0x2c33*/ 804, - /*0x03ad*/ 242, - /*0x0583*/ 473, - -1, - /*0x10cc2*/ 1151, - /*0x1e03*/ 566, - /*0x1e83*/ 630, - /*0x0103*/ 57, - /*0x0203*/ 166, - /*0x2c83*/ 857, - /*0x00e9*/ 34, - /*0x0371*/ 235, - /*0xa73d*/ 998, - -1, - /*0x2d1c*/ 937, - /*0x2d04*/ 913, - -1, -1, -1, - /*0x01f3*/ 159, - /*0xa77c*/ 1025, - -1, - /*0x0188*/ 120, - /*0xa739*/ 996, - /*0x10cf1*/ 1198, - -1, - /*0x0511*/ 423, - -1, -1, -1, -1, - /*0x13a9*/ 486, - /*0xa72f*/ 992, - /*0x04a9*/ 371, - /*0x1e932*/ 1248, - /*0x10429*/ 1074, - /*0x01eb*/ 156, - /*0x1e29*/ 585, - /*0x1ea9*/ 644, - /*0x0129*/ 76, - /*0x0229*/ 184, - /*0x2ca9*/ 876, - /*0x037c*/ 239, - -1, -1, - /*0x2d11*/ 926, - -1, - /*0x1f37*/ 717, - /*0x00e7*/ 32, - -1, -1, - /*0x0573*/ 457, - /*0x2c35*/ 806, - -1, - /*0x03bf*/ 259, - /*0x13ab*/ 488, - -1, - /*0x04ab*/ 372, - -1, - /*0x1042b*/ 1076, - -1, - /*0x1e2b*/ 586, - /*0x1eab*/ 645, - /*0x012b*/ 77, - /*0x022b*/ 185, - /*0x2cab*/ 877, - -1, - /*0x1f01*/ 689, - /*0x056b*/ 449, - -1, - /*0x03b1*/ 245, - /*0x2173*/ 761, - -1, - /*0x2d08*/ 917, - -1, -1, -1, - /*0xa791*/ 1032, - /*0xa729*/ 989, - -1, - /*0x13c6*/ 515, - /*0x0446*/ 313, - /*0x04c6*/ 385, - /*0x1f33*/ 713, - /*0x10446*/ 1103, - /*0x13a1*/ 478, - /*0x050f*/ 422, - /*0x04a1*/ 367, - /*0x0146*/ 89, - /*0x01ef*/ 158, - -1, - /*0x1e21*/ 581, - /*0x1ea1*/ 640, - /*0x0121*/ 72, - -1, - /*0x2ca1*/ 872, - /*0x13c4*/ 513, - /*0x0444*/ 311, - /*0x04c4*/ 384, - -1, - /*0x10444*/ 1101, - -1, - /*0xa72b*/ 990, - /*0x13f2*/ 559, - /*0x0144*/ 88, - /*0x2d0f*/ 924, - /*0x0072*/ 16, - /*0x01ed*/ 157, - /*0x104f2*/ 1139, - -1, -1, - /*0x1f25*/ 707, - /*0x0272*/ 221, - /*0x13bb*/ 504, - /*0x043b*/ 302, - /*0x04bb*/ 380, - /*0x2c3f*/ 816, - /*0x1043b*/ 1092, - -1, - /*0x1e3b*/ 594, - /*0x1ebb*/ 653, - /*0x056f*/ 453, - /*0x0495*/ 361, - /*0x2cbb*/ 885, - -1, - /*0x03bd*/ 257, - /*0x1e15*/ 575, - /*0x1e95*/ 639, - /*0x0115*/ 66, - /*0x0215*/ 175, - /*0x2c95*/ 866, - -1, - /*0x2c31*/ 802, - -1, - /*0x118c2*/ 1202, - /*0x1f35*/ 715, - /*0x03b9*/ 253, - /*0xa691*/ 980, - -1, - /*0x056d*/ 451, - -1, -1, - /*0x0493*/ 360, - -1, - /*0x2c42*/ 819, - /*0x03af*/ 244, - /*0x1e13*/ 574, - /*0x1e93*/ 638, - /*0x0113*/ 65, - /*0x0213*/ 174, - /*0x2c93*/ 865, - -1, - /*0x047b*/ 352, - /*0x04fb*/ 412, - -1, -1, - /*0x104fb*/ 1148, - /*0x1e7b*/ 626, - /*0x1efb*/ 685, - -1, - /*0xa73b*/ 997, - -1, - /*0x10cc6*/ 1155, - /*0x0479*/ 351, - /*0x04f9*/ 411, - /*0x0079*/ 23, - -1, - /*0x104f9*/ 1146, - /*0x1e79*/ 625, - /*0x1ef9*/ 684, - -1, - /*0x1f23*/ 705, - /*0x0501*/ 415, - -1, -1, - /*0x047d*/ 353, - /*0x04fd*/ 413, - /*0x0283*/ 225, - /*0x10cc4*/ 1153, - /*0x00fe*/ 54, - /*0x1e7d*/ 627, - /*0x1efd*/ 686, - /*0x1f05*/ 693, - /*0x027d*/ 223, - /*0x01a5*/ 129, - /*0x10cf2*/ 1199, - /*0x0499*/ 363, - /*0x2c3d*/ 814, - -1, - /*0x1e937*/ 1253, - /*0x1e19*/ 577, - /*0x2d01*/ 910, - /*0x0119*/ 68, - /*0x0219*/ 177, - /*0x2c99*/ 868, - -1, -1, - /*0xa68f*/ 979, - /*0x2c39*/ 810, - -1, - /*0x0477*/ 350, - /*0x04f7*/ 410, - /*0x0077*/ 21, - /*0xa7b7*/ 1045, - /*0x104f7*/ 1144, - /*0x1e77*/ 624, - /*0x1ef7*/ 683, - /*0x0177*/ 113, - /*0x1e07*/ 568, - /*0x1e87*/ 632, - /*0x0107*/ 59, - /*0x0207*/ 168, - /*0x2c87*/ 859, - -1, - /*0x1d79*/ 563, - /*0x1f31*/ 711, - /*0x0525*/ 433, - -1, -1, - /*0x01ad*/ 131, - /*0x037b*/ 238, - /*0x13d0*/ 525, - /*0x0450*/ 323, - /*0xa781*/ 1027, - -1, - /*0x1e933*/ 1249, - /*0x1d7d*/ 564, - /*0x1f42*/ 720, - /*0x047f*/ 354, - /*0x04ff*/ 414, - /*0x0250*/ 199, - -1, - /*0x1f27*/ 709, - /*0x1e7f*/ 628, - /*0x1eff*/ 687, - /*0x2d25*/ 946, - /*0x24d0*/ 775, - /*0x13ce*/ 523, - /*0x044e*/ 321, - /*0x04ce*/ 389, - /*0x03c6*/ 265, - /*0x1044e*/ 1111, - /*0x0497*/ 362, - /*0x037d*/ 240, - /*0x01a3*/ 128, - -1, - /*0x1e17*/ 576, - /*0x1f71*/ 737, - /*0x0117*/ 67, - /*0x0217*/ 176, - /*0x2c97*/ 867, - /*0x052d*/ 437, - -1, - /*0x1e925*/ 1235, - -1, - /*0x0185*/ 119, - /*0x03c4*/ 263, - /*0x1f75*/ 741, - /*0x13cc*/ 521, - /*0x044c*/ 319, - /*0x04cc*/ 388, - -1, - /*0x1044c*/ 1109, - /*0x03f2*/ 287, - /*0xff42*/ 1048, - -1, - /*0x13e6*/ 547, - /*0xa7a5*/ 1041, - /*0x0377*/ 237, - /*0x0066*/ 5, - /*0x2d2d*/ 948, - /*0x104e6*/ 1127, - /*0x01bf*/ 137, - /*0x03bb*/ 255, - /*0xa77f*/ 1026, - /*0x0266*/ 213, - /*0x0523*/ 432, - /*0x1e935*/ 1251, - /*0x1f7c*/ 748, - -1, -1, - /*0x24e6*/ 797, - -1, - /*0xa681*/ 972, - /*0x007a*/ 24, - -1, - /*0x104fa*/ 1147, - /*0x0505*/ 417, - /*0x1e92d*/ 1243, - /*0x017a*/ 114, - -1, - /*0xa7b5*/ 1044, - /*0x118c6*/ 1206, - -1, -1, - /*0x2d23*/ 944, - -1, - /*0x13c8*/ 517, - /*0x0448*/ 315, - /*0x04c8*/ 386, - -1, - /*0x10448*/ 1105, - /*0x2c46*/ 823, - /*0x10cd0*/ 1165, - /*0x1f03*/ 691, - /*0x0148*/ 90, - /*0x2d05*/ 914, - /*0x2184*/ 774, - /*0x118c4*/ 1204, - /*0x13d8*/ 533, - /*0x0458*/ 331, - /*0x03fb*/ 290, - /*0x13ec*/ 553, - /*0x1e923*/ 1233, - /*0x104d8*/ 1113, - /*0x006c*/ 10, - -1, - /*0x104ec*/ 1133, - /*0x2c44*/ 821, - /*0x10cce*/ 1163, - -1, - /*0x026c*/ 218, - /*0x2cec*/ 906, - -1, - /*0x24d8*/ 783, - /*0x049d*/ 365, - -1, - /*0xa7a3*/ 1040, - /*0xa77a*/ 1024, - /*0x1e1d*/ 579, - /*0x01f5*/ 160, - /*0x011d*/ 70, - /*0x021d*/ 179, - /*0x2c9d*/ 870, - -1, - /*0x2c3b*/ 812, - -1, - /*0x0527*/ 434, - /*0xa785*/ 1029, - -1, - /*0x10ccc*/ 1161, - /*0x1e93f*/ 1261, - -1, - /*0x01bd*/ 136, - /*0x13e8*/ 549, - -1, -1, - /*0x0068*/ 7, - /*0x10ce6*/ 1187, - /*0x104e8*/ 1129, - -1, -1, - /*0x0571*/ 455, - /*0x0268*/ 214, - /*0x01b9*/ 135, - /*0x13f0*/ 557, - /*0x2d27*/ 947, - /*0x1e931*/ 1247, - /*0x0070*/ 14, - /*0x24e8*/ 799, - /*0x104f0*/ 1137, - -1, - /*0x0575*/ 459, - -1, -1, -1, - /*0x13dc*/ 537, - /*0x045c*/ 335, - -1, - /*0x1e942*/ 1264, - -1, - /*0x104dc*/ 1117, - /*0x2171*/ 759, - -1, - /*0x1e927*/ 1237, - /*0x025c*/ 208, - /*0x0076*/ 20, - /*0x0183*/ 118, - /*0x104f6*/ 1143, - /*0x10cc8*/ 1157, - /*0x0287*/ 226, - /*0x24dc*/ 787, - /*0x2175*/ 763, - /*0x057c*/ 466, - /*0x13d6*/ 531, - /*0x0456*/ 329, - -1, - /*0x13e0*/ 541, - /*0xa7a7*/ 1042, - -1, - /*0x1f21*/ 703, - /*0x10cd8*/ 1173, - /*0x104e0*/ 1121, - /*0x0256*/ 204, - /*0x10cec*/ 1193, - /*0x052f*/ 438, - /*0x0260*/ 209, - /*0x03ce*/ 273, - /*0xa685*/ 974, - /*0x24d6*/ 781, - -1, - /*0x1f44*/ 722, - /*0x24e0*/ 791, - /*0x217c*/ 770, - /*0x13d4*/ 529, - /*0x0454*/ 327, - -1, -1, - /*0x1f72*/ 738, - /*0x0503*/ 416, - -1, - /*0x13ea*/ 551, - /*0x1e93d*/ 1259, - /*0x0254*/ 203, - /*0x006a*/ 8, - -1, - /*0x104ea*/ 1131, - -1, - /*0x03cc*/ 271, - /*0x24d4*/ 779, - /*0x026a*/ 216, - -1, - /*0xff46*/ 1052, - /*0x1e939*/ 1255, - /*0x13e4*/ 545, - /*0x1f15*/ 701, - /*0x10ce8*/ 1189, - /*0x0064*/ 3, - /*0x2d03*/ 912, - /*0x104e4*/ 1125, - /*0x13b6*/ 499, - /*0x0436*/ 297, - /*0x1e92f*/ 1245, - /*0x118d0*/ 1216, - /*0x10436*/ 1087, - -1, -1, - /*0x10cf0*/ 1197, - /*0xff44*/ 1050, - /*0x24e4*/ 795, - /*0x0078*/ 22, - /*0x0529*/ 435, - /*0x104f8*/ 1145, - /*0x2c50*/ 833, - -1, - /*0x1f13*/ 699, - -1, - /*0x00f3*/ 44, - /*0x10cdc*/ 1177, - /*0x118ce*/ 1214, - /*0x13ca*/ 519, - /*0x044a*/ 317, - /*0x04ca*/ 387, - -1, - /*0x1044a*/ 1107, - -1, - /*0x1f7b*/ 747, - /*0x03c8*/ 267, - /*0x01c6*/ 138, - /*0x2c4e*/ 831, - /*0xa783*/ 1028, - -1, -1, - /*0x01a1*/ 127, - /*0x00eb*/ 36, - /*0x052b*/ 436, - /*0x10cd6*/ 1171, - /*0x1f79*/ 745, - -1, - /*0x10ce0*/ 1181, - /*0x118cc*/ 1212, - /*0x13f4*/ 561, - /*0x13d2*/ 527, - /*0x0452*/ 325, - /*0x0074*/ 18, - -1, - /*0x104f4*/ 1141, - -1, - /*0x1e929*/ 1239, - /*0x1f7d*/ 749, - /*0x2c4c*/ 829, - /*0x0252*/ 201, - -1, -1, -1, -1, - /*0x10cd4*/ 1169, - /*0x24d2*/ 777, - /*0x2c66*/ 850, - -1, - /*0x13b0*/ 493, - /*0x0430*/ 291, - /*0xa7a9*/ 1043, - /*0x10cea*/ 1191, - /*0x10430*/ 1081, - /*0x0521*/ 431, - -1, -1, - /*0x0195*/ 123, - -1, - /*0x13e2*/ 543, - /*0x029d*/ 233, - /*0x1e92b*/ 1241, - /*0x0062*/ 1, - /*0x1f77*/ 743, - /*0x104e2*/ 1123, - /*0x10ce4*/ 1185, - /*0x1f07*/ 695, - -1, - /*0x118c8*/ 1208, - -1, -1, -1, - /*0x0572*/ 456, - /*0x2d21*/ 942, - /*0x24e2*/ 793, - /*0x1fb1*/ 751, - /*0x00ef*/ 40, - /*0x048d*/ 357, - /*0x2c48*/ 825, - /*0xa683*/ 973, - /*0x118d8*/ 1224, - /*0x1e0d*/ 571, - /*0x1e8d*/ 635, - /*0x010d*/ 62, - /*0x020d*/ 171, - /*0x2c8d*/ 862, - -1, -1, - /*0x01fb*/ 162, - /*0x0515*/ 425, - /*0x2c58*/ 841, - /*0x10cca*/ 1159, - /*0x2172*/ 760, - /*0x2c6c*/ 853, - /*0x00ed*/ 38, - -1, - /*0x13b4*/ 497, - /*0x0434*/ 295, - -1, - /*0x01f9*/ 161, - /*0x10434*/ 1085, - -1, -1, -1, -1, - /*0xa7a1*/ 1039, - -1, -1, - /*0x2d15*/ 930, - /*0x0513*/ 424, - -1, - /*0x01fd*/ 163, - -1, - /*0x10cd2*/ 1167, - /*0x1e09*/ 569, - /*0x1e89*/ 633, - /*0x0109*/ 60, - /*0x0209*/ 169, - /*0x2c89*/ 860, - /*0x1e93b*/ 1257, - /*0x057b*/ 465, - /*0x0199*/ 124, - /*0xff50*/ 1062, - -1, - /*0x13ee*/ 555, - /*0x2c68*/ 851, - -1, - /*0x006e*/ 12, - /*0x2d13*/ 928, - /*0x104ee*/ 1135, - /*0x1f66*/ 734, - /*0x0579*/ 463, - -1, -1, - /*0x2cee*/ 907, - -1, -1, - /*0x118dc*/ 1228, - /*0xff4e*/ 1060, - -1, - /*0x217b*/ 769, - /*0x10ce2*/ 1183, - -1, - /*0x057d*/ 467, - -1, - /*0x1f7a*/ 746, - -1, - /*0x2c5c*/ 845, - -1, - /*0x03b6*/ 250, - -1, - /*0x2179*/ 767, - -1, - /*0x0519*/ 427, - /*0x2c76*/ 855, - /*0x118d6*/ 1222, - /*0x03f8*/ 289, - -1, - /*0x01d0*/ 142, - /*0xff4c*/ 1058, - /*0xa793*/ 1033, - -1, -1, - /*0x217d*/ 771, - /*0x01ff*/ 164, - /*0x2c56*/ 839, - -1, -1, - /*0x0577*/ 461, - /*0x03ca*/ 269, - -1, - /*0x0507*/ 418, - /*0x2d19*/ 934, - /*0x049f*/ 366, - /*0x01ce*/ 141, - /*0x118d4*/ 1220, - -1, - /*0x1e1f*/ 580, - -1, - /*0x011f*/ 71, - /*0x021f*/ 180, - /*0x2c9f*/ 871, - -1, -1, -1, - /*0x2c54*/ 837, - /*0x13de*/ 539, - /*0x045e*/ 337, - /*0x2177*/ 765, - -1, - /*0x2d07*/ 916, - /*0x104de*/ 1119, - /*0x2c6a*/ 852, - -1, -1, - /*0x01cc*/ 140, - /*0x057f*/ 469, - -1, - /*0xff48*/ 1054, - -1, - /*0xa695*/ 982, - /*0x24de*/ 789, - -1, -1, - /*0xa799*/ 1035, - -1, - /*0x10cee*/ 1195, - -1, -1, - /*0x0517*/ 426, - /*0xff58*/ 1070, - /*0x2c36*/ 807, - -1, -1, -1, -1, - /*0x217f*/ 773, - -1, -1, - /*0x1f70*/ 736, - /*0xa693*/ 981, - /*0x118ca*/ 1210, - /*0xa787*/ 1030, - -1, -1, -1, - /*0x214e*/ 757, - -1, - /*0x2d17*/ 932, - -1, -1, - /*0x2c4a*/ 827, - /*0x13be*/ 507, - /*0x043e*/ 305, - -1, - /*0x0566*/ 444, - /*0x1043e*/ 1095, - /*0x1f76*/ 742, - -1, -1, - /*0x013e*/ 85, - -1, -1, - /*0x118d2*/ 1218, - /*0x13ba*/ 503, - /*0x043a*/ 301, - /*0x01d8*/ 146, - -1, - /*0x1043a*/ 1091, - -1, - /*0x057a*/ 464, - /*0x1f60*/ 728, - /*0x013a*/ 83, - /*0x2c52*/ 835, - -1, -1, - /*0x03b4*/ 248, - -1, -1, -1, - /*0xa797*/ 1034, - -1, -1, -1, - /*0xa699*/ 984, - -1, -1, -1, - /*0x10cde*/ 1179, - -1, - /*0x217a*/ 768, - /*0x2c30*/ 801, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, - /*0x056c*/ 450, - /*0xa687*/ 975, - -1, -1, - /*0xff56*/ 1068, - /*0x0289*/ 228, - -1, - /*0x1f64*/ 732, - -1, -1, -1, - /*0x051d*/ 429, - -1, - /*0x1f36*/ 716, - -1, -1, -1, -1, -1, -1, - /*0x1f78*/ 744, - -1, - /*0x01dc*/ 148, - -1, - /*0xff54*/ 1066, - -1, - /*0x00f1*/ 42, - -1, -1, -1, - /*0x2d1d*/ 938, - -1, - /*0x0568*/ 446, - -1, -1, -1, - /*0x00f5*/ 46, - /*0x2c34*/ 805, - -1, - /*0xa697*/ 983, - /*0x01d6*/ 145, - -1, -1, - /*0x0570*/ 454, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, - /*0x1f74*/ 740, - -1, -1, - /*0x00fc*/ 52, - -1, -1, - /*0x01d4*/ 144, - /*0x0576*/ 460, - /*0xa79d*/ 1037, - /*0x2170*/ 758, - -1, -1, -1, -1, -1, -1, - /*0xff4a*/ 1056, - -1, -1, - /*0x1f30*/ 710, - -1, -1, -1, -1, -1, -1, - -1, - /*0x2176*/ 764, - -1, - /*0x1f62*/ 730, - -1, -1, - /*0x01b6*/ 134, - -1, -1, -1, -1, -1, - /*0xff52*/ 1064, - -1, -1, -1, -1, -1, -1, - /*0x056a*/ 448, - -1, -1, -1, -1, -1, - /*0x1fd0*/ 752, - -1, -1, -1, -1, -1, - /*0x03be*/ 258, - /*0x0564*/ 442, - -1, -1, -1, -1, - /*0x118de*/ 1230, - -1, -1, - /*0x1f34*/ 714, - -1, -1, - /*0x03ba*/ 254, - -1, - /*0x0578*/ 462, - -1, - /*0x2c5e*/ 847, - /*0x01d2*/ 143, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, - /*0x2178*/ 766, - /*0x01b0*/ 132, - -1, -1, -1, -1, -1, -1, - -1, -1, - /*0x1e936*/ 1252, - -1, -1, -1, - /*0x0574*/ 458, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, - /*0x2c3e*/ 815, - -1, -1, -1, -1, -1, - /*0x2174*/ 762, - -1, -1, -1, -1, -1, - /*0x2c3a*/ 811, - -1, - /*0x00f2*/ 43, - /*0x0562*/ 440, - -1, -1, -1, -1, - /*0x01b4*/ 133, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, - /*0x050d*/ 421, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, - /*0x1e930*/ 1246, - -1, -1, -1, -1, -1, -1, - -1, - /*0x2d0d*/ 922, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, - /*0x00fb*/ 51, - -1, - /*0x0509*/ 419, - -1, -1, -1, -1, -1, -1, - -1, -1, - /*0x00f9*/ 49, - -1, -1, -1, -1, -1, -1, - /*0x056e*/ 452, - -1, -1, - /*0x2d09*/ 918, - -1, - /*0x00fd*/ 53, - -1, -1, -1, - /*0x1e934*/ 1250, - -1, -1, -1, -1, -1, -1, - -1, -1, - /*0x1fe0*/ 754, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, - /*0x051f*/ 430, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, - /*0x00ff*/ 55, - -1, -1, -1, - /*0xa68d*/ 978, - -1, -1, -1, - /*0x2d1f*/ 940, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, - /*0xa689*/ 976, - -1, - /*0x00e6*/ 31, - /*0xa79f*/ 1038, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, - /*0x00fa*/ 50, - -1, -1, -1, -1, -1, -1, - -1, -1, - /*0x1fb0*/ 750, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, - /*0x00ec*/ 37, - -1, - /*0x1e93e*/ 1260, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, - /*0x1e93a*/ 1256, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, - /*0x00e8*/ 33, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, - /*0x00f0*/ 41, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, - /*0x00f6*/ 47, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, - /*0x00e0*/ 25, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, - /*0x00ea*/ 35, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - /*0x00e4*/ 29, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - /*0x00f8*/ 48, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, - /*0x00f4*/ 45, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, - /*0x00e2*/ 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, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, - /*0x00ee*/ 39 - }; - - if (code <= MAX_CODE_VALUE && code >= MIN_CODE_VALUE) - { - register int key = onigenc_unicode_CaseUnfold_11_hash(code); - - if (key <= MAX_HASH_VALUE && key >= 0) - { - register short s = wordlist[key]; - - if (s >= 0 && code1_equal(code, CaseUnfold_11_Table[s].from)) - return &CaseUnfold_11_Table[s].to; - } - } - return 0; -} - -static const CaseUnfold_12_Type CaseUnfold_12_Table[] = { -#define CaseUnfold_12 (*(CaseUnfold_12_Type (*)[58])(CaseUnfold_12_Table+0)) - {{0x0061, 0x02be}, {1, {0x1e9a}}}, - {{0x0066, 0x0066}, {1, {0xfb00}}}, - {{0x0066, 0x0069}, {1, {0xfb01}}}, - {{0x0066, 0x006c}, {1, {0xfb02}}}, - {{0x0068, 0x0331}, {1, {0x1e96}}}, - {{0x006a, 0x030c}, {1, {0x01f0}}}, - {{0x0073, 0x0073}, {2, {0x00df, 0x1e9e}}}, - {{0x0073, 0x0074}, {2, {0xfb05, 0xfb06}}}, - {{0x0074, 0x0308}, {1, {0x1e97}}}, - {{0x0077, 0x030a}, {1, {0x1e98}}}, - {{0x0079, 0x030a}, {1, {0x1e99}}}, - {{0x02bc, 0x006e}, {1, {0x0149}}}, - {{0x03ac, 0x03b9}, {1, {0x1fb4}}}, - {{0x03ae, 0x03b9}, {1, {0x1fc4}}}, - {{0x03b1, 0x0342}, {1, {0x1fb6}}}, - {{0x03b1, 0x03b9}, {2, {0x1fb3, 0x1fbc}}}, - {{0x03b7, 0x0342}, {1, {0x1fc6}}}, - {{0x03b7, 0x03b9}, {2, {0x1fc3, 0x1fcc}}}, - {{0x03b9, 0x0342}, {1, {0x1fd6}}}, - {{0x03c1, 0x0313}, {1, {0x1fe4}}}, - {{0x03c5, 0x0313}, {1, {0x1f50}}}, - {{0x03c5, 0x0342}, {1, {0x1fe6}}}, - {{0x03c9, 0x0342}, {1, {0x1ff6}}}, - {{0x03c9, 0x03b9}, {2, {0x1ff3, 0x1ffc}}}, - {{0x03ce, 0x03b9}, {1, {0x1ff4}}}, - {{0x0565, 0x0582}, {1, {0x0587}}}, - {{0x0574, 0x0565}, {1, {0xfb14}}}, - {{0x0574, 0x056b}, {1, {0xfb15}}}, - {{0x0574, 0x056d}, {1, {0xfb17}}}, - {{0x0574, 0x0576}, {1, {0xfb13}}}, - {{0x057e, 0x0576}, {1, {0xfb16}}}, - {{0x1f00, 0x03b9}, {2, {0x1f80, 0x1f88}}}, - {{0x1f01, 0x03b9}, {2, {0x1f81, 0x1f89}}}, - {{0x1f02, 0x03b9}, {2, {0x1f82, 0x1f8a}}}, - {{0x1f03, 0x03b9}, {2, {0x1f83, 0x1f8b}}}, - {{0x1f04, 0x03b9}, {2, {0x1f84, 0x1f8c}}}, - {{0x1f05, 0x03b9}, {2, {0x1f85, 0x1f8d}}}, - {{0x1f06, 0x03b9}, {2, {0x1f86, 0x1f8e}}}, - {{0x1f07, 0x03b9}, {2, {0x1f87, 0x1f8f}}}, - {{0x1f20, 0x03b9}, {2, {0x1f90, 0x1f98}}}, - {{0x1f21, 0x03b9}, {2, {0x1f91, 0x1f99}}}, - {{0x1f22, 0x03b9}, {2, {0x1f92, 0x1f9a}}}, - {{0x1f23, 0x03b9}, {2, {0x1f93, 0x1f9b}}}, - {{0x1f24, 0x03b9}, {2, {0x1f94, 0x1f9c}}}, - {{0x1f25, 0x03b9}, {2, {0x1f95, 0x1f9d}}}, - {{0x1f26, 0x03b9}, {2, {0x1f96, 0x1f9e}}}, - {{0x1f27, 0x03b9}, {2, {0x1f97, 0x1f9f}}}, - {{0x1f60, 0x03b9}, {2, {0x1fa0, 0x1fa8}}}, - {{0x1f61, 0x03b9}, {2, {0x1fa1, 0x1fa9}}}, - {{0x1f62, 0x03b9}, {2, {0x1fa2, 0x1faa}}}, - {{0x1f63, 0x03b9}, {2, {0x1fa3, 0x1fab}}}, - {{0x1f64, 0x03b9}, {2, {0x1fa4, 0x1fac}}}, - {{0x1f65, 0x03b9}, {2, {0x1fa5, 0x1fad}}}, - {{0x1f66, 0x03b9}, {2, {0x1fa6, 0x1fae}}}, - {{0x1f67, 0x03b9}, {2, {0x1fa7, 0x1faf}}}, - {{0x1f70, 0x03b9}, {1, {0x1fb2}}}, - {{0x1f74, 0x03b9}, {1, {0x1fc2}}}, - {{0x1f7c, 0x03b9}, {1, {0x1ff2}}}, -#define CaseUnfold_12_Locale (*(CaseUnfold_12_Type (*)[1])(CaseUnfold_12_Table+58)) - {{0x0069, 0x0307}, {1, {0x0130}}}, -}; - -/* C code produced by gperf version 3.0.4 */ -/* Command-line: gperf -7 -k1,2,3,4,5,6 -F,-1 -c -j1 -i1 -t -T -E -C -H onigenc_unicode_CaseUnfold_12_hash -N onigenc_unicode_CaseUnfold_12_lookup -n */ - -/* maximum key range = 71, duplicates = 0 */ - -#ifdef __GNUC__ -__inline -#else -#ifdef __cplusplus -inline -#endif -#endif -/*ARGSUSED*/ -static unsigned int -onigenc_unicode_CaseUnfold_12_hash(const OnigCodePoint *codes) -{ - static const unsigned char asso_values[] = - { - 3, 58, 54, 57, 56, 16, 8, 2, 43, 82, - 3, 1, 23, 82, 82, 82, 82, 82, 82, 4, - 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, - 82, 82, 52, 51, 50, 49, 48, 47, 46, 45, - 82, 82, 82, 82, 43, 82, 42, 82, 82, 13, - 82, 82, 82, 82, 82, 11, 82, 1, 82, 82, - 14, 82, 1, 82, 82, 31, 3, 82, 82, 30, - 82, 82, 82, 10, 82, 82, 82, 82, 37, 82, - 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, - 82, 82, 82, 82, 82, 82, 37, 15, 36, 35, - 34, 17, 1, 33, 12, 4, 23, 23, 26, 21, - 13, 82, 27, 82, 82, 2, 5, 82, 11, 16, - 82, 15, 82, 82, 23, 82, 8, 82 - }; - return asso_values[bits_at(codes, 5)] + asso_values[bits_at(codes, 4)] + asso_values[bits_at(codes, 3)] + asso_values[bits_at(codes, 2)] + asso_values[bits_at(codes, 1)] + asso_values[bits_at(codes, 0)]; -} - -#ifdef __GNUC__ -__inline -#if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__ -__attribute__ ((__gnu_inline__)) -#endif -#endif -static const CodePointList2 * -onigenc_unicode_CaseUnfold_12_lookup(const OnigCodePoint *codes) -{ - enum - { - MIN_CODE_VALUE = 0x61, - MAX_CODE_VALUE = 0x1f7c, - TOTAL_KEYWORDS = 59, - MIN_WORD_LENGTH = 6, - MAX_WORD_LENGTH = 6, - MIN_HASH_VALUE = 11, - MAX_HASH_VALUE = 81 - }; - - static const short wordlist[] = - { - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, - /*0x1f66,0x03b9*/ 53, - /*0x1f07,0x03b9*/ 38, - /*0x1f00,0x03b9*/ 31, - /*0x0066,0x0066*/ 1, - /*0x1f74,0x03b9*/ 56, - /*0x0073,0x0073*/ 6, - /*0x0066,0x0069*/ 2, - /*0x1f06,0x03b9*/ 37, - /*0x0073,0x0074*/ 7, - /*0x03b9,0x0342*/ 18, - /*0x03c9,0x03b9*/ 23, - /*0x03b7,0x03b9*/ 17, - /*0x0069,0x0307*/ 58, - /*0x03b1,0x03b9*/ 15, - /*0x1f61,0x03b9*/ 48, - /*0x1f05,0x03b9*/ 36, - /*0x1f65,0x03b9*/ 52, - /*0x0574,0x0576*/ 29, - /*0x03c9,0x0342*/ 22, - /*0x03b7,0x0342*/ 16, - /*0x057e,0x0576*/ 30, - /*0x03b1,0x0342*/ 14, - /*0x1f7c,0x03b9*/ 57, - /*0x0574,0x0565*/ 26, - /*0x0079,0x030a*/ 10, - /*0x0077,0x030a*/ 9, - /*0x1f70,0x03b9*/ 55, - /*0x0574,0x056d*/ 28, - /*0x0066,0x006c*/ 3, - /*0x0574,0x056b*/ 27, - /*0x0061,0x02be*/ 0, - /*0x0068,0x0331*/ 4, - /*0x1f67,0x03b9*/ 54, - /*0x1f64,0x03b9*/ 51, - /*0x1f63,0x03b9*/ 50, - /*0x1f62,0x03b9*/ 49, - /*0x1f60,0x03b9*/ 47, - /*0x03ce,0x03b9*/ 24, - /*0x03c5,0x0342*/ 21, - /*0x03c5,0x0313*/ 20, - /*0x03c1,0x0313*/ 19, - /*0x02bc,0x006e*/ 11, - /*0x03ae,0x03b9*/ 13, - /*0x03ac,0x03b9*/ 12, - /*0x1f27,0x03b9*/ 46, - /*0x1f26,0x03b9*/ 45, - /*0x1f25,0x03b9*/ 44, - /*0x1f24,0x03b9*/ 43, - /*0x1f23,0x03b9*/ 42, - /*0x1f22,0x03b9*/ 41, - /*0x1f21,0x03b9*/ 40, - /*0x1f20,0x03b9*/ 39, - /*0x006a,0x030c*/ 5, - /*0x1f02,0x03b9*/ 33, - /*0x0074,0x0308*/ 8, - /*0x1f04,0x03b9*/ 35, - /*0x1f03,0x03b9*/ 34, - /*0x1f01,0x03b9*/ 32, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - /*0x0565,0x0582*/ 25 - }; - - if (codes[0] <= MAX_CODE_VALUE && codes[0] >= MIN_CODE_VALUE && - codes[1] <= MAX_CODE_VALUE && codes[1] >= MIN_CODE_VALUE) - { - register int key = onigenc_unicode_CaseUnfold_12_hash(codes); - - if (key <= MAX_HASH_VALUE && key >= 0) - { - register short s = wordlist[key]; - - if (s >= 0 && code2_equal(codes, CaseUnfold_12_Table[s].from)) - return &CaseUnfold_12_Table[s].to; - } - } - return 0; -} - -static const CaseUnfold_13_Type CaseUnfold_13_Table[] = { -#define CaseUnfold_13 (*(CaseUnfold_13_Type (*)[14])(CaseUnfold_13_Table+0)) - {{0x0066, 0x0066, 0x0069}, {1, {0xfb03}}}, - {{0x0066, 0x0066, 0x006c}, {1, {0xfb04}}}, - {{0x03b1, 0x0342, 0x03b9}, {1, {0x1fb7}}}, - {{0x03b7, 0x0342, 0x03b9}, {1, {0x1fc7}}}, - {{0x03b9, 0x0308, 0x0300}, {1, {0x1fd2}}}, - {{0x03b9, 0x0308, 0x0301}, {2, {0x0390, 0x1fd3}}}, - {{0x03b9, 0x0308, 0x0342}, {1, {0x1fd7}}}, - {{0x03c5, 0x0308, 0x0300}, {1, {0x1fe2}}}, - {{0x03c5, 0x0308, 0x0301}, {2, {0x03b0, 0x1fe3}}}, - {{0x03c5, 0x0308, 0x0342}, {1, {0x1fe7}}}, - {{0x03c5, 0x0313, 0x0300}, {1, {0x1f52}}}, - {{0x03c5, 0x0313, 0x0301}, {1, {0x1f54}}}, - {{0x03c5, 0x0313, 0x0342}, {1, {0x1f56}}}, - {{0x03c9, 0x0342, 0x03b9}, {1, {0x1ff7}}}, -}; - -/* C code produced by gperf version 3.0.4 */ -/* Command-line: gperf -7 -k1,2,3,4,5,6,7,8,9 -F,-1 -c -j1 -i1 -t -T -E -C -H onigenc_unicode_CaseUnfold_13_hash -N onigenc_unicode_CaseUnfold_13_lookup -n */ - -/* maximum key range = 20, duplicates = 0 */ - -#ifdef __GNUC__ -__inline -#else -#ifdef __cplusplus -inline -#endif -#endif -/*ARGSUSED*/ -static unsigned int -onigenc_unicode_CaseUnfold_13_hash(const OnigCodePoint *codes) -{ - static const unsigned char asso_values[] = - { - 7, 4, 47, 47, 47, 47, 1, 1, 2, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 1, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 11, - 47, 47, 47, 47, 47, 10, 47, 2, 47, 47, - 47, 47, 47, 47, 47, 47, 1, 47, 47, 1, - 47, 47, 47, 9, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 1, 47, 47, 2, 47, 47, 1, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47 - }; - return asso_values[bits_at(codes, 8)] + asso_values[bits_at(codes, 7)] + asso_values[bits_at(codes, 6)] + asso_values[bits_at(codes, 5)] + asso_values[bits_at(codes, 4)] + asso_values[bits_at(codes, 3)] + asso_values[bits_at(codes, 2)] + asso_values[bits_at(codes, 1)] + asso_values[bits_at(codes, 0)]; -} - -#ifdef __GNUC__ -__inline -#if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__ -__attribute__ ((__gnu_inline__)) -#endif -#endif -static const CodePointList2 * -onigenc_unicode_CaseUnfold_13_lookup(const OnigCodePoint *codes) -{ - enum - { - MIN_CODE_VALUE = 0x66, - MAX_CODE_VALUE = 0x3c9, - TOTAL_KEYWORDS = 14, - MIN_WORD_LENGTH = 9, - MAX_WORD_LENGTH = 9, - MIN_HASH_VALUE = 27, - MAX_HASH_VALUE = 46 - }; - - static const short wordlist[] = - { - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, - /*0x03c5,0x0313,0x0342*/ 12, - /*0x03c5,0x0308,0x0342*/ 9, - /*0x03b9,0x0308,0x0342*/ 6, - /*0x03c5,0x0313,0x0301*/ 11, - /*0x03c5,0x0308,0x0301*/ 8, - /*0x03b9,0x0308,0x0301*/ 5, - /*0x03c5,0x0313,0x0300*/ 10, - /*0x03c5,0x0308,0x0300*/ 7, - /*0x03b9,0x0308,0x0300*/ 4, - /*0x03c9,0x0342,0x03b9*/ 13, - /*0x03b7,0x0342,0x03b9*/ 3, - /*0x03b1,0x0342,0x03b9*/ 2, - -1, -1, -1, -1, -1, -1, - /*0x0066,0x0066,0x006c*/ 1, - /*0x0066,0x0066,0x0069*/ 0 - }; - - if (codes[0] <= MAX_CODE_VALUE && codes[0] >= MIN_CODE_VALUE && - codes[1] <= MAX_CODE_VALUE && codes[1] >= MIN_CODE_VALUE && - codes[2] <= MAX_CODE_VALUE && codes[2] >= MIN_CODE_VALUE) - { - register int key = onigenc_unicode_CaseUnfold_13_hash(codes); - - if (key <= MAX_HASH_VALUE && key >= 0) - { - register short s = wordlist[key]; - - if (s >= 0 && code3_equal(codes, CaseUnfold_13_Table[s].from)) - return &CaseUnfold_13_Table[s].to; - } - } - return 0; -} - -static const OnigCodePoint CaseMappingSpecials[] = { - L(1)|0x039C, - L(2)|0x0053, 0x0073, L(2)|0x0053, 0x0053, - L(2)|0x02BC, 0x004E, - L(1)|0x0053, - L(1)|0x01C5, - L(2)|0x0064, 0x017D, L(1)|0x01C4, - L(1)|0x01C8, - L(2)|0x006C, 0x004A, L(1)|0x01C7, - L(1)|0x01CB, - L(2)|0x006E, 0x004A, L(1)|0x01CA, - L(2)|0x004A, 0x030C, - L(1)|0x01F2, - L(2)|0x0064, 0x005A, L(1)|0x01F1, - L(1)|0x0399, - L(3)|0x0399, 0x0308, 0x0301, - L(3)|0x03A5, 0x0308, 0x0301, - L(1)|0x03A3, - L(1)|0x0392, - L(1)|0x0398, - L(1)|0x03A6, - L(1)|0x03A0, - L(1)|0x039A, - L(1)|0x03A1, - L(1)|0x0395, - L(2)|0x0535, 0x0582, L(2)|0x0535, 0x0552, - L(1)|0x0412, - L(1)|0x0414, - L(1)|0x041E, - L(1)|0x0421, - L(1)|0x0422, - L(1)|0x0422, - L(1)|0x042A, - L(1)|0x0462, - L(1)|0xA64A, - L(2)|0x0048, 0x0331, - L(2)|0x0054, 0x0308, - L(2)|0x0057, 0x030A, - L(2)|0x0059, 0x030A, - L(2)|0x0041, 0x02BE, - L(1)|0x1E60, - L(1)|0x00DF, - L(2)|0x03A5, 0x0313, - L(3)|0x03A5, 0x0313, 0x0300, - L(3)|0x03A5, 0x0313, 0x0301, - L(3)|0x03A5, 0x0313, 0x0342, - L(1)|0x1F88, L(2)|0x1F08, 0x0399, - L(1)|0x1F89, L(2)|0x1F09, 0x0399, - L(1)|0x1F8A, L(2)|0x1F0A, 0x0399, - L(1)|0x1F8B, L(2)|0x1F0B, 0x0399, - L(1)|0x1F8C, L(2)|0x1F0C, 0x0399, - L(1)|0x1F8D, L(2)|0x1F0D, 0x0399, - L(1)|0x1F8E, L(2)|0x1F0E, 0x0399, - L(1)|0x1F8F, L(2)|0x1F0F, 0x0399, - L(2)|0x1F00, 0x0399, L(1)|0x1F80, L(2)|0x1F08, 0x0399, - L(2)|0x1F01, 0x0399, L(1)|0x1F81, L(2)|0x1F09, 0x0399, - L(2)|0x1F02, 0x0399, L(1)|0x1F82, L(2)|0x1F0A, 0x0399, - L(2)|0x1F03, 0x0399, L(1)|0x1F83, L(2)|0x1F0B, 0x0399, - L(2)|0x1F04, 0x0399, L(1)|0x1F84, L(2)|0x1F0C, 0x0399, - L(2)|0x1F05, 0x0399, L(1)|0x1F85, L(2)|0x1F0D, 0x0399, - L(2)|0x1F06, 0x0399, L(1)|0x1F86, L(2)|0x1F0E, 0x0399, - L(2)|0x1F07, 0x0399, L(1)|0x1F87, L(2)|0x1F0F, 0x0399, - L(1)|0x1F98, L(2)|0x1F28, 0x0399, - L(1)|0x1F99, L(2)|0x1F29, 0x0399, - L(1)|0x1F9A, L(2)|0x1F2A, 0x0399, - L(1)|0x1F9B, L(2)|0x1F2B, 0x0399, - L(1)|0x1F9C, L(2)|0x1F2C, 0x0399, - L(1)|0x1F9D, L(2)|0x1F2D, 0x0399, - L(1)|0x1F9E, L(2)|0x1F2E, 0x0399, - L(1)|0x1F9F, L(2)|0x1F2F, 0x0399, - L(2)|0x1F20, 0x0399, L(1)|0x1F90, L(2)|0x1F28, 0x0399, - L(2)|0x1F21, 0x0399, L(1)|0x1F91, L(2)|0x1F29, 0x0399, - L(2)|0x1F22, 0x0399, L(1)|0x1F92, L(2)|0x1F2A, 0x0399, - L(2)|0x1F23, 0x0399, L(1)|0x1F93, L(2)|0x1F2B, 0x0399, - L(2)|0x1F24, 0x0399, L(1)|0x1F94, L(2)|0x1F2C, 0x0399, - L(2)|0x1F25, 0x0399, L(1)|0x1F95, L(2)|0x1F2D, 0x0399, - L(2)|0x1F26, 0x0399, L(1)|0x1F96, L(2)|0x1F2E, 0x0399, - L(2)|0x1F27, 0x0399, L(1)|0x1F97, L(2)|0x1F2F, 0x0399, - L(1)|0x1FA8, L(2)|0x1F68, 0x0399, - L(1)|0x1FA9, L(2)|0x1F69, 0x0399, - L(1)|0x1FAA, L(2)|0x1F6A, 0x0399, - L(1)|0x1FAB, L(2)|0x1F6B, 0x0399, - L(1)|0x1FAC, L(2)|0x1F6C, 0x0399, - L(1)|0x1FAD, L(2)|0x1F6D, 0x0399, - L(1)|0x1FAE, L(2)|0x1F6E, 0x0399, - L(1)|0x1FAF, L(2)|0x1F6F, 0x0399, - L(2)|0x1F60, 0x0399, L(1)|0x1FA0, L(2)|0x1F68, 0x0399, - L(2)|0x1F61, 0x0399, L(1)|0x1FA1, L(2)|0x1F69, 0x0399, - L(2)|0x1F62, 0x0399, L(1)|0x1FA2, L(2)|0x1F6A, 0x0399, - L(2)|0x1F63, 0x0399, L(1)|0x1FA3, L(2)|0x1F6B, 0x0399, - L(2)|0x1F64, 0x0399, L(1)|0x1FA4, L(2)|0x1F6C, 0x0399, - L(2)|0x1F65, 0x0399, L(1)|0x1FA5, L(2)|0x1F6D, 0x0399, - L(2)|0x1F66, 0x0399, L(1)|0x1FA6, L(2)|0x1F6E, 0x0399, - L(2)|0x1F67, 0x0399, L(1)|0x1FA7, L(2)|0x1F6F, 0x0399, - L(2)|0x1FBA, 0x0345, L(2)|0x1FBA, 0x0399, - L(1)|0x1FBC, L(2)|0x0391, 0x0399, - L(2)|0x0386, 0x0345, L(2)|0x0386, 0x0399, - L(2)|0x0391, 0x0342, - L(3)|0x0391, 0x0342, 0x0345, L(3)|0x0391, 0x0342, 0x0399, - L(2)|0x03B1, 0x0399, L(1)|0x1FB3, L(2)|0x0391, 0x0399, - L(1)|0x0399, - L(2)|0x1FCA, 0x0345, L(2)|0x1FCA, 0x0399, - L(1)|0x1FCC, L(2)|0x0397, 0x0399, - L(2)|0x0389, 0x0345, L(2)|0x0389, 0x0399, - L(2)|0x0397, 0x0342, - L(3)|0x0397, 0x0342, 0x0345, L(3)|0x0397, 0x0342, 0x0399, - L(2)|0x03B7, 0x0399, L(1)|0x1FC3, L(2)|0x0397, 0x0399, - L(3)|0x0399, 0x0308, 0x0300, - L(3)|0x0399, 0x0308, 0x0301, - L(2)|0x0399, 0x0342, - L(3)|0x0399, 0x0308, 0x0342, - L(3)|0x03A5, 0x0308, 0x0300, - L(3)|0x03A5, 0x0308, 0x0301, - L(2)|0x03A1, 0x0313, - L(2)|0x03A5, 0x0342, - L(3)|0x03A5, 0x0308, 0x0342, - L(2)|0x1FFA, 0x0345, L(2)|0x1FFA, 0x0399, - L(1)|0x1FFC, L(2)|0x03A9, 0x0399, - L(2)|0x038F, 0x0345, L(2)|0x038F, 0x0399, - L(2)|0x03A9, 0x0342, - L(3)|0x03A9, 0x0342, 0x0345, L(3)|0x03A9, 0x0342, 0x0399, - L(2)|0x03C9, 0x0399, L(1)|0x1FF3, L(2)|0x03A9, 0x0399, - L(2)|0x0046, 0x0066, L(2)|0x0046, 0x0046, - L(2)|0x0046, 0x0069, L(2)|0x0046, 0x0049, - L(2)|0x0046, 0x006C, L(2)|0x0046, 0x004C, - L(3)|0x0046, 0x0066, 0x0069, L(3)|0x0046, 0x0046, 0x0049, - L(3)|0x0046, 0x0066, 0x006C, L(3)|0x0046, 0x0046, 0x004C, - L(2)|0x0053, 0x0074, L(2)|0x0053, 0x0054, - L(2)|0x0053, 0x0074, L(2)|0x0053, 0x0054, - L(2)|0x0544, 0x0576, L(2)|0x0544, 0x0546, - L(2)|0x0544, 0x0565, L(2)|0x0544, 0x0535, - L(2)|0x0544, 0x056B, L(2)|0x0544, 0x053B, - L(2)|0x054E, 0x0576, L(2)|0x054E, 0x0546, - L(2)|0x0544, 0x056D, L(2)|0x0544, 0x053D, -}; diff --git a/vendor/onig/enc/unicode/name2ctype.h b/vendor/onig/enc/unicode/name2ctype.h deleted file mode 100644 index 2ee162f..0000000 --- a/vendor/onig/enc/unicode/name2ctype.h +++ /dev/null @@ -1,36813 +0,0 @@ -/* C code produced by gperf version 3.0.4 */ -/* Command-line: gperf -7 -c -j1 -i1 -t -C -P -T -H uniname2ctype_hash -Q uniname2ctype_pool -N uniname2ctype_p */ -#ifndef USE_UNICODE_PROPERTIES -/* Computed positions: -k'1,3' */ -#else /* USE_UNICODE_PROPERTIES */ -/* Computed positions: -k'1-3,5-6,12,16,$' */ -#endif /* USE_UNICODE_PROPERTIES */ - -#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ - && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \ - && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \ - && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \ - && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \ - && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \ - && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \ - && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \ - && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \ - && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \ - && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \ - && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \ - && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \ - && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \ - && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \ - && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \ - && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \ - && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \ - && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \ - && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \ - && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \ - && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \ - && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126)) -/* The character set is not based on ISO-646. */ -error "gperf generated tables don't work with this execution character set. Please report a bug to ." -#endif - - - -/* 'NEWLINE': [[:NEWLINE:]] */ -static const OnigCodePoint CR_NEWLINE[] = { - 1, - 0x000a, 0x000a, -}; /* CR_NEWLINE */ - -/* 'Alpha': [[:Alpha:]] */ -static const OnigCodePoint CR_Alpha[] = { - 644, - 0x0041, 0x005a, - 0x0061, 0x007a, - 0x00aa, 0x00aa, - 0x00b5, 0x00b5, - 0x00ba, 0x00ba, - 0x00c0, 0x00d6, - 0x00d8, 0x00f6, - 0x00f8, 0x02c1, - 0x02c6, 0x02d1, - 0x02e0, 0x02e4, - 0x02ec, 0x02ec, - 0x02ee, 0x02ee, - 0x0345, 0x0345, - 0x0370, 0x0374, - 0x0376, 0x0377, - 0x037a, 0x037d, - 0x037f, 0x037f, - 0x0386, 0x0386, - 0x0388, 0x038a, - 0x038c, 0x038c, - 0x038e, 0x03a1, - 0x03a3, 0x03f5, - 0x03f7, 0x0481, - 0x048a, 0x052f, - 0x0531, 0x0556, - 0x0559, 0x0559, - 0x0561, 0x0587, - 0x05b0, 0x05bd, - 0x05bf, 0x05bf, - 0x05c1, 0x05c2, - 0x05c4, 0x05c5, - 0x05c7, 0x05c7, - 0x05d0, 0x05ea, - 0x05f0, 0x05f2, - 0x0610, 0x061a, - 0x0620, 0x0657, - 0x0659, 0x065f, - 0x066e, 0x06d3, - 0x06d5, 0x06dc, - 0x06e1, 0x06e8, - 0x06ed, 0x06ef, - 0x06fa, 0x06fc, - 0x06ff, 0x06ff, - 0x0710, 0x073f, - 0x074d, 0x07b1, - 0x07ca, 0x07ea, - 0x07f4, 0x07f5, - 0x07fa, 0x07fa, - 0x0800, 0x0817, - 0x081a, 0x082c, - 0x0840, 0x0858, - 0x08a0, 0x08b4, - 0x08b6, 0x08bd, - 0x08d4, 0x08df, - 0x08e3, 0x08e9, - 0x08f0, 0x093b, - 0x093d, 0x094c, - 0x094e, 0x0950, - 0x0955, 0x0963, - 0x0971, 0x0983, - 0x0985, 0x098c, - 0x098f, 0x0990, - 0x0993, 0x09a8, - 0x09aa, 0x09b0, - 0x09b2, 0x09b2, - 0x09b6, 0x09b9, - 0x09bd, 0x09c4, - 0x09c7, 0x09c8, - 0x09cb, 0x09cc, - 0x09ce, 0x09ce, - 0x09d7, 0x09d7, - 0x09dc, 0x09dd, - 0x09df, 0x09e3, - 0x09f0, 0x09f1, - 0x0a01, 0x0a03, - 0x0a05, 0x0a0a, - 0x0a0f, 0x0a10, - 0x0a13, 0x0a28, - 0x0a2a, 0x0a30, - 0x0a32, 0x0a33, - 0x0a35, 0x0a36, - 0x0a38, 0x0a39, - 0x0a3e, 0x0a42, - 0x0a47, 0x0a48, - 0x0a4b, 0x0a4c, - 0x0a51, 0x0a51, - 0x0a59, 0x0a5c, - 0x0a5e, 0x0a5e, - 0x0a70, 0x0a75, - 0x0a81, 0x0a83, - 0x0a85, 0x0a8d, - 0x0a8f, 0x0a91, - 0x0a93, 0x0aa8, - 0x0aaa, 0x0ab0, - 0x0ab2, 0x0ab3, - 0x0ab5, 0x0ab9, - 0x0abd, 0x0ac5, - 0x0ac7, 0x0ac9, - 0x0acb, 0x0acc, - 0x0ad0, 0x0ad0, - 0x0ae0, 0x0ae3, - 0x0af9, 0x0af9, - 0x0b01, 0x0b03, - 0x0b05, 0x0b0c, - 0x0b0f, 0x0b10, - 0x0b13, 0x0b28, - 0x0b2a, 0x0b30, - 0x0b32, 0x0b33, - 0x0b35, 0x0b39, - 0x0b3d, 0x0b44, - 0x0b47, 0x0b48, - 0x0b4b, 0x0b4c, - 0x0b56, 0x0b57, - 0x0b5c, 0x0b5d, - 0x0b5f, 0x0b63, - 0x0b71, 0x0b71, - 0x0b82, 0x0b83, - 0x0b85, 0x0b8a, - 0x0b8e, 0x0b90, - 0x0b92, 0x0b95, - 0x0b99, 0x0b9a, - 0x0b9c, 0x0b9c, - 0x0b9e, 0x0b9f, - 0x0ba3, 0x0ba4, - 0x0ba8, 0x0baa, - 0x0bae, 0x0bb9, - 0x0bbe, 0x0bc2, - 0x0bc6, 0x0bc8, - 0x0bca, 0x0bcc, - 0x0bd0, 0x0bd0, - 0x0bd7, 0x0bd7, - 0x0c00, 0x0c03, - 0x0c05, 0x0c0c, - 0x0c0e, 0x0c10, - 0x0c12, 0x0c28, - 0x0c2a, 0x0c39, - 0x0c3d, 0x0c44, - 0x0c46, 0x0c48, - 0x0c4a, 0x0c4c, - 0x0c55, 0x0c56, - 0x0c58, 0x0c5a, - 0x0c60, 0x0c63, - 0x0c80, 0x0c83, - 0x0c85, 0x0c8c, - 0x0c8e, 0x0c90, - 0x0c92, 0x0ca8, - 0x0caa, 0x0cb3, - 0x0cb5, 0x0cb9, - 0x0cbd, 0x0cc4, - 0x0cc6, 0x0cc8, - 0x0cca, 0x0ccc, - 0x0cd5, 0x0cd6, - 0x0cde, 0x0cde, - 0x0ce0, 0x0ce3, - 0x0cf1, 0x0cf2, - 0x0d01, 0x0d03, - 0x0d05, 0x0d0c, - 0x0d0e, 0x0d10, - 0x0d12, 0x0d3a, - 0x0d3d, 0x0d44, - 0x0d46, 0x0d48, - 0x0d4a, 0x0d4c, - 0x0d4e, 0x0d4e, - 0x0d54, 0x0d57, - 0x0d5f, 0x0d63, - 0x0d7a, 0x0d7f, - 0x0d82, 0x0d83, - 0x0d85, 0x0d96, - 0x0d9a, 0x0db1, - 0x0db3, 0x0dbb, - 0x0dbd, 0x0dbd, - 0x0dc0, 0x0dc6, - 0x0dcf, 0x0dd4, - 0x0dd6, 0x0dd6, - 0x0dd8, 0x0ddf, - 0x0df2, 0x0df3, - 0x0e01, 0x0e3a, - 0x0e40, 0x0e46, - 0x0e4d, 0x0e4d, - 0x0e81, 0x0e82, - 0x0e84, 0x0e84, - 0x0e87, 0x0e88, - 0x0e8a, 0x0e8a, - 0x0e8d, 0x0e8d, - 0x0e94, 0x0e97, - 0x0e99, 0x0e9f, - 0x0ea1, 0x0ea3, - 0x0ea5, 0x0ea5, - 0x0ea7, 0x0ea7, - 0x0eaa, 0x0eab, - 0x0ead, 0x0eb9, - 0x0ebb, 0x0ebd, - 0x0ec0, 0x0ec4, - 0x0ec6, 0x0ec6, - 0x0ecd, 0x0ecd, - 0x0edc, 0x0edf, - 0x0f00, 0x0f00, - 0x0f40, 0x0f47, - 0x0f49, 0x0f6c, - 0x0f71, 0x0f81, - 0x0f88, 0x0f97, - 0x0f99, 0x0fbc, - 0x1000, 0x1036, - 0x1038, 0x1038, - 0x103b, 0x103f, - 0x1050, 0x1062, - 0x1065, 0x1068, - 0x106e, 0x1086, - 0x108e, 0x108e, - 0x109c, 0x109d, - 0x10a0, 0x10c5, - 0x10c7, 0x10c7, - 0x10cd, 0x10cd, - 0x10d0, 0x10fa, - 0x10fc, 0x1248, - 0x124a, 0x124d, - 0x1250, 0x1256, - 0x1258, 0x1258, - 0x125a, 0x125d, - 0x1260, 0x1288, - 0x128a, 0x128d, - 0x1290, 0x12b0, - 0x12b2, 0x12b5, - 0x12b8, 0x12be, - 0x12c0, 0x12c0, - 0x12c2, 0x12c5, - 0x12c8, 0x12d6, - 0x12d8, 0x1310, - 0x1312, 0x1315, - 0x1318, 0x135a, - 0x135f, 0x135f, - 0x1380, 0x138f, - 0x13a0, 0x13f5, - 0x13f8, 0x13fd, - 0x1401, 0x166c, - 0x166f, 0x167f, - 0x1681, 0x169a, - 0x16a0, 0x16ea, - 0x16ee, 0x16f8, - 0x1700, 0x170c, - 0x170e, 0x1713, - 0x1720, 0x1733, - 0x1740, 0x1753, - 0x1760, 0x176c, - 0x176e, 0x1770, - 0x1772, 0x1773, - 0x1780, 0x17b3, - 0x17b6, 0x17c8, - 0x17d7, 0x17d7, - 0x17dc, 0x17dc, - 0x1820, 0x1877, - 0x1880, 0x18aa, - 0x18b0, 0x18f5, - 0x1900, 0x191e, - 0x1920, 0x192b, - 0x1930, 0x1938, - 0x1950, 0x196d, - 0x1970, 0x1974, - 0x1980, 0x19ab, - 0x19b0, 0x19c9, - 0x1a00, 0x1a1b, - 0x1a20, 0x1a5e, - 0x1a61, 0x1a74, - 0x1aa7, 0x1aa7, - 0x1b00, 0x1b33, - 0x1b35, 0x1b43, - 0x1b45, 0x1b4b, - 0x1b80, 0x1ba9, - 0x1bac, 0x1baf, - 0x1bba, 0x1be5, - 0x1be7, 0x1bf1, - 0x1c00, 0x1c35, - 0x1c4d, 0x1c4f, - 0x1c5a, 0x1c7d, - 0x1c80, 0x1c88, - 0x1ce9, 0x1cec, - 0x1cee, 0x1cf3, - 0x1cf5, 0x1cf6, - 0x1d00, 0x1dbf, - 0x1de7, 0x1df4, - 0x1e00, 0x1f15, - 0x1f18, 0x1f1d, - 0x1f20, 0x1f45, - 0x1f48, 0x1f4d, - 0x1f50, 0x1f57, - 0x1f59, 0x1f59, - 0x1f5b, 0x1f5b, - 0x1f5d, 0x1f5d, - 0x1f5f, 0x1f7d, - 0x1f80, 0x1fb4, - 0x1fb6, 0x1fbc, - 0x1fbe, 0x1fbe, - 0x1fc2, 0x1fc4, - 0x1fc6, 0x1fcc, - 0x1fd0, 0x1fd3, - 0x1fd6, 0x1fdb, - 0x1fe0, 0x1fec, - 0x1ff2, 0x1ff4, - 0x1ff6, 0x1ffc, - 0x2071, 0x2071, - 0x207f, 0x207f, - 0x2090, 0x209c, - 0x2102, 0x2102, - 0x2107, 0x2107, - 0x210a, 0x2113, - 0x2115, 0x2115, - 0x2119, 0x211d, - 0x2124, 0x2124, - 0x2126, 0x2126, - 0x2128, 0x2128, - 0x212a, 0x212d, - 0x212f, 0x2139, - 0x213c, 0x213f, - 0x2145, 0x2149, - 0x214e, 0x214e, - 0x2160, 0x2188, - 0x24b6, 0x24e9, - 0x2c00, 0x2c2e, - 0x2c30, 0x2c5e, - 0x2c60, 0x2ce4, - 0x2ceb, 0x2cee, - 0x2cf2, 0x2cf3, - 0x2d00, 0x2d25, - 0x2d27, 0x2d27, - 0x2d2d, 0x2d2d, - 0x2d30, 0x2d67, - 0x2d6f, 0x2d6f, - 0x2d80, 0x2d96, - 0x2da0, 0x2da6, - 0x2da8, 0x2dae, - 0x2db0, 0x2db6, - 0x2db8, 0x2dbe, - 0x2dc0, 0x2dc6, - 0x2dc8, 0x2dce, - 0x2dd0, 0x2dd6, - 0x2dd8, 0x2dde, - 0x2de0, 0x2dff, - 0x2e2f, 0x2e2f, - 0x3005, 0x3007, - 0x3021, 0x3029, - 0x3031, 0x3035, - 0x3038, 0x303c, - 0x3041, 0x3096, - 0x309d, 0x309f, - 0x30a1, 0x30fa, - 0x30fc, 0x30ff, - 0x3105, 0x312d, - 0x3131, 0x318e, - 0x31a0, 0x31ba, - 0x31f0, 0x31ff, - 0x3400, 0x4db5, - 0x4e00, 0x9fd5, - 0xa000, 0xa48c, - 0xa4d0, 0xa4fd, - 0xa500, 0xa60c, - 0xa610, 0xa61f, - 0xa62a, 0xa62b, - 0xa640, 0xa66e, - 0xa674, 0xa67b, - 0xa67f, 0xa6ef, - 0xa717, 0xa71f, - 0xa722, 0xa788, - 0xa78b, 0xa7ae, - 0xa7b0, 0xa7b7, - 0xa7f7, 0xa801, - 0xa803, 0xa805, - 0xa807, 0xa80a, - 0xa80c, 0xa827, - 0xa840, 0xa873, - 0xa880, 0xa8c3, - 0xa8c5, 0xa8c5, - 0xa8f2, 0xa8f7, - 0xa8fb, 0xa8fb, - 0xa8fd, 0xa8fd, - 0xa90a, 0xa92a, - 0xa930, 0xa952, - 0xa960, 0xa97c, - 0xa980, 0xa9b2, - 0xa9b4, 0xa9bf, - 0xa9cf, 0xa9cf, - 0xa9e0, 0xa9e4, - 0xa9e6, 0xa9ef, - 0xa9fa, 0xa9fe, - 0xaa00, 0xaa36, - 0xaa40, 0xaa4d, - 0xaa60, 0xaa76, - 0xaa7a, 0xaa7a, - 0xaa7e, 0xaabe, - 0xaac0, 0xaac0, - 0xaac2, 0xaac2, - 0xaadb, 0xaadd, - 0xaae0, 0xaaef, - 0xaaf2, 0xaaf5, - 0xab01, 0xab06, - 0xab09, 0xab0e, - 0xab11, 0xab16, - 0xab20, 0xab26, - 0xab28, 0xab2e, - 0xab30, 0xab5a, - 0xab5c, 0xab65, - 0xab70, 0xabea, - 0xac00, 0xd7a3, - 0xd7b0, 0xd7c6, - 0xd7cb, 0xd7fb, - 0xf900, 0xfa6d, - 0xfa70, 0xfad9, - 0xfb00, 0xfb06, - 0xfb13, 0xfb17, - 0xfb1d, 0xfb28, - 0xfb2a, 0xfb36, - 0xfb38, 0xfb3c, - 0xfb3e, 0xfb3e, - 0xfb40, 0xfb41, - 0xfb43, 0xfb44, - 0xfb46, 0xfbb1, - 0xfbd3, 0xfd3d, - 0xfd50, 0xfd8f, - 0xfd92, 0xfdc7, - 0xfdf0, 0xfdfb, - 0xfe70, 0xfe74, - 0xfe76, 0xfefc, - 0xff21, 0xff3a, - 0xff41, 0xff5a, - 0xff66, 0xffbe, - 0xffc2, 0xffc7, - 0xffca, 0xffcf, - 0xffd2, 0xffd7, - 0xffda, 0xffdc, - 0x10000, 0x1000b, - 0x1000d, 0x10026, - 0x10028, 0x1003a, - 0x1003c, 0x1003d, - 0x1003f, 0x1004d, - 0x10050, 0x1005d, - 0x10080, 0x100fa, - 0x10140, 0x10174, - 0x10280, 0x1029c, - 0x102a0, 0x102d0, - 0x10300, 0x1031f, - 0x10330, 0x1034a, - 0x10350, 0x1037a, - 0x10380, 0x1039d, - 0x103a0, 0x103c3, - 0x103c8, 0x103cf, - 0x103d1, 0x103d5, - 0x10400, 0x1049d, - 0x104b0, 0x104d3, - 0x104d8, 0x104fb, - 0x10500, 0x10527, - 0x10530, 0x10563, - 0x10600, 0x10736, - 0x10740, 0x10755, - 0x10760, 0x10767, - 0x10800, 0x10805, - 0x10808, 0x10808, - 0x1080a, 0x10835, - 0x10837, 0x10838, - 0x1083c, 0x1083c, - 0x1083f, 0x10855, - 0x10860, 0x10876, - 0x10880, 0x1089e, - 0x108e0, 0x108f2, - 0x108f4, 0x108f5, - 0x10900, 0x10915, - 0x10920, 0x10939, - 0x10980, 0x109b7, - 0x109be, 0x109bf, - 0x10a00, 0x10a03, - 0x10a05, 0x10a06, - 0x10a0c, 0x10a13, - 0x10a15, 0x10a17, - 0x10a19, 0x10a33, - 0x10a60, 0x10a7c, - 0x10a80, 0x10a9c, - 0x10ac0, 0x10ac7, - 0x10ac9, 0x10ae4, - 0x10b00, 0x10b35, - 0x10b40, 0x10b55, - 0x10b60, 0x10b72, - 0x10b80, 0x10b91, - 0x10c00, 0x10c48, - 0x10c80, 0x10cb2, - 0x10cc0, 0x10cf2, - 0x11000, 0x11045, - 0x11082, 0x110b8, - 0x110d0, 0x110e8, - 0x11100, 0x11132, - 0x11150, 0x11172, - 0x11176, 0x11176, - 0x11180, 0x111bf, - 0x111c1, 0x111c4, - 0x111da, 0x111da, - 0x111dc, 0x111dc, - 0x11200, 0x11211, - 0x11213, 0x11234, - 0x11237, 0x11237, - 0x1123e, 0x1123e, - 0x11280, 0x11286, - 0x11288, 0x11288, - 0x1128a, 0x1128d, - 0x1128f, 0x1129d, - 0x1129f, 0x112a8, - 0x112b0, 0x112e8, - 0x11300, 0x11303, - 0x11305, 0x1130c, - 0x1130f, 0x11310, - 0x11313, 0x11328, - 0x1132a, 0x11330, - 0x11332, 0x11333, - 0x11335, 0x11339, - 0x1133d, 0x11344, - 0x11347, 0x11348, - 0x1134b, 0x1134c, - 0x11350, 0x11350, - 0x11357, 0x11357, - 0x1135d, 0x11363, - 0x11400, 0x11441, - 0x11443, 0x11445, - 0x11447, 0x1144a, - 0x11480, 0x114c1, - 0x114c4, 0x114c5, - 0x114c7, 0x114c7, - 0x11580, 0x115b5, - 0x115b8, 0x115be, - 0x115d8, 0x115dd, - 0x11600, 0x1163e, - 0x11640, 0x11640, - 0x11644, 0x11644, - 0x11680, 0x116b5, - 0x11700, 0x11719, - 0x1171d, 0x1172a, - 0x118a0, 0x118df, - 0x118ff, 0x118ff, - 0x11ac0, 0x11af8, - 0x11c00, 0x11c08, - 0x11c0a, 0x11c36, - 0x11c38, 0x11c3e, - 0x11c40, 0x11c40, - 0x11c72, 0x11c8f, - 0x11c92, 0x11ca7, - 0x11ca9, 0x11cb6, - 0x12000, 0x12399, - 0x12400, 0x1246e, - 0x12480, 0x12543, - 0x13000, 0x1342e, - 0x14400, 0x14646, - 0x16800, 0x16a38, - 0x16a40, 0x16a5e, - 0x16ad0, 0x16aed, - 0x16b00, 0x16b36, - 0x16b40, 0x16b43, - 0x16b63, 0x16b77, - 0x16b7d, 0x16b8f, - 0x16f00, 0x16f44, - 0x16f50, 0x16f7e, - 0x16f93, 0x16f9f, - 0x16fe0, 0x16fe0, - 0x17000, 0x187ec, - 0x18800, 0x18af2, - 0x1b000, 0x1b001, - 0x1bc00, 0x1bc6a, - 0x1bc70, 0x1bc7c, - 0x1bc80, 0x1bc88, - 0x1bc90, 0x1bc99, - 0x1bc9e, 0x1bc9e, - 0x1d400, 0x1d454, - 0x1d456, 0x1d49c, - 0x1d49e, 0x1d49f, - 0x1d4a2, 0x1d4a2, - 0x1d4a5, 0x1d4a6, - 0x1d4a9, 0x1d4ac, - 0x1d4ae, 0x1d4b9, - 0x1d4bb, 0x1d4bb, - 0x1d4bd, 0x1d4c3, - 0x1d4c5, 0x1d505, - 0x1d507, 0x1d50a, - 0x1d50d, 0x1d514, - 0x1d516, 0x1d51c, - 0x1d51e, 0x1d539, - 0x1d53b, 0x1d53e, - 0x1d540, 0x1d544, - 0x1d546, 0x1d546, - 0x1d54a, 0x1d550, - 0x1d552, 0x1d6a5, - 0x1d6a8, 0x1d6c0, - 0x1d6c2, 0x1d6da, - 0x1d6dc, 0x1d6fa, - 0x1d6fc, 0x1d714, - 0x1d716, 0x1d734, - 0x1d736, 0x1d74e, - 0x1d750, 0x1d76e, - 0x1d770, 0x1d788, - 0x1d78a, 0x1d7a8, - 0x1d7aa, 0x1d7c2, - 0x1d7c4, 0x1d7cb, - 0x1e000, 0x1e006, - 0x1e008, 0x1e018, - 0x1e01b, 0x1e021, - 0x1e023, 0x1e024, - 0x1e026, 0x1e02a, - 0x1e800, 0x1e8c4, - 0x1e900, 0x1e943, - 0x1e947, 0x1e947, - 0x1ee00, 0x1ee03, - 0x1ee05, 0x1ee1f, - 0x1ee21, 0x1ee22, - 0x1ee24, 0x1ee24, - 0x1ee27, 0x1ee27, - 0x1ee29, 0x1ee32, - 0x1ee34, 0x1ee37, - 0x1ee39, 0x1ee39, - 0x1ee3b, 0x1ee3b, - 0x1ee42, 0x1ee42, - 0x1ee47, 0x1ee47, - 0x1ee49, 0x1ee49, - 0x1ee4b, 0x1ee4b, - 0x1ee4d, 0x1ee4f, - 0x1ee51, 0x1ee52, - 0x1ee54, 0x1ee54, - 0x1ee57, 0x1ee57, - 0x1ee59, 0x1ee59, - 0x1ee5b, 0x1ee5b, - 0x1ee5d, 0x1ee5d, - 0x1ee5f, 0x1ee5f, - 0x1ee61, 0x1ee62, - 0x1ee64, 0x1ee64, - 0x1ee67, 0x1ee6a, - 0x1ee6c, 0x1ee72, - 0x1ee74, 0x1ee77, - 0x1ee79, 0x1ee7c, - 0x1ee7e, 0x1ee7e, - 0x1ee80, 0x1ee89, - 0x1ee8b, 0x1ee9b, - 0x1eea1, 0x1eea3, - 0x1eea5, 0x1eea9, - 0x1eeab, 0x1eebb, - 0x1f130, 0x1f149, - 0x1f150, 0x1f169, - 0x1f170, 0x1f189, - 0x20000, 0x2a6d6, - 0x2a700, 0x2b734, - 0x2b740, 0x2b81d, - 0x2b820, 0x2cea1, - 0x2f800, 0x2fa1d, -}; /* CR_Alpha */ - -/* 'Blank': [[:Blank:]] */ -static const OnigCodePoint CR_Blank[] = { - 8, - 0x0009, 0x0009, - 0x0020, 0x0020, - 0x00a0, 0x00a0, - 0x1680, 0x1680, - 0x2000, 0x200a, - 0x202f, 0x202f, - 0x205f, 0x205f, - 0x3000, 0x3000, -}; /* CR_Blank */ - -/* 'Cntrl': [[:Cntrl:]] */ -static const OnigCodePoint CR_Cntrl[] = { - 2, - 0x0000, 0x001f, - 0x007f, 0x009f, -}; /* CR_Cntrl */ - -/* 'Digit': [[:Digit:]] */ -static const OnigCodePoint CR_Digit[] = { - 54, - 0x0030, 0x0039, - 0x0660, 0x0669, - 0x06f0, 0x06f9, - 0x07c0, 0x07c9, - 0x0966, 0x096f, - 0x09e6, 0x09ef, - 0x0a66, 0x0a6f, - 0x0ae6, 0x0aef, - 0x0b66, 0x0b6f, - 0x0be6, 0x0bef, - 0x0c66, 0x0c6f, - 0x0ce6, 0x0cef, - 0x0d66, 0x0d6f, - 0x0de6, 0x0def, - 0x0e50, 0x0e59, - 0x0ed0, 0x0ed9, - 0x0f20, 0x0f29, - 0x1040, 0x1049, - 0x1090, 0x1099, - 0x17e0, 0x17e9, - 0x1810, 0x1819, - 0x1946, 0x194f, - 0x19d0, 0x19d9, - 0x1a80, 0x1a89, - 0x1a90, 0x1a99, - 0x1b50, 0x1b59, - 0x1bb0, 0x1bb9, - 0x1c40, 0x1c49, - 0x1c50, 0x1c59, - 0xa620, 0xa629, - 0xa8d0, 0xa8d9, - 0xa900, 0xa909, - 0xa9d0, 0xa9d9, - 0xa9f0, 0xa9f9, - 0xaa50, 0xaa59, - 0xabf0, 0xabf9, - 0xff10, 0xff19, - 0x104a0, 0x104a9, - 0x11066, 0x1106f, - 0x110f0, 0x110f9, - 0x11136, 0x1113f, - 0x111d0, 0x111d9, - 0x112f0, 0x112f9, - 0x11450, 0x11459, - 0x114d0, 0x114d9, - 0x11650, 0x11659, - 0x116c0, 0x116c9, - 0x11730, 0x11739, - 0x118e0, 0x118e9, - 0x11c50, 0x11c59, - 0x16a60, 0x16a69, - 0x16b50, 0x16b59, - 0x1d7ce, 0x1d7ff, - 0x1e950, 0x1e959, -}; /* CR_Digit */ - -/* 'Graph': [[:Graph:]] */ -static const OnigCodePoint CR_Graph[] = { - 643, - 0x0021, 0x007e, - 0x00a1, 0x0377, - 0x037a, 0x037f, - 0x0384, 0x038a, - 0x038c, 0x038c, - 0x038e, 0x03a1, - 0x03a3, 0x052f, - 0x0531, 0x0556, - 0x0559, 0x055f, - 0x0561, 0x0587, - 0x0589, 0x058a, - 0x058d, 0x058f, - 0x0591, 0x05c7, - 0x05d0, 0x05ea, - 0x05f0, 0x05f4, - 0x0600, 0x061c, - 0x061e, 0x070d, - 0x070f, 0x074a, - 0x074d, 0x07b1, - 0x07c0, 0x07fa, - 0x0800, 0x082d, - 0x0830, 0x083e, - 0x0840, 0x085b, - 0x085e, 0x085e, - 0x08a0, 0x08b4, - 0x08b6, 0x08bd, - 0x08d4, 0x0983, - 0x0985, 0x098c, - 0x098f, 0x0990, - 0x0993, 0x09a8, - 0x09aa, 0x09b0, - 0x09b2, 0x09b2, - 0x09b6, 0x09b9, - 0x09bc, 0x09c4, - 0x09c7, 0x09c8, - 0x09cb, 0x09ce, - 0x09d7, 0x09d7, - 0x09dc, 0x09dd, - 0x09df, 0x09e3, - 0x09e6, 0x09fb, - 0x0a01, 0x0a03, - 0x0a05, 0x0a0a, - 0x0a0f, 0x0a10, - 0x0a13, 0x0a28, - 0x0a2a, 0x0a30, - 0x0a32, 0x0a33, - 0x0a35, 0x0a36, - 0x0a38, 0x0a39, - 0x0a3c, 0x0a3c, - 0x0a3e, 0x0a42, - 0x0a47, 0x0a48, - 0x0a4b, 0x0a4d, - 0x0a51, 0x0a51, - 0x0a59, 0x0a5c, - 0x0a5e, 0x0a5e, - 0x0a66, 0x0a75, - 0x0a81, 0x0a83, - 0x0a85, 0x0a8d, - 0x0a8f, 0x0a91, - 0x0a93, 0x0aa8, - 0x0aaa, 0x0ab0, - 0x0ab2, 0x0ab3, - 0x0ab5, 0x0ab9, - 0x0abc, 0x0ac5, - 0x0ac7, 0x0ac9, - 0x0acb, 0x0acd, - 0x0ad0, 0x0ad0, - 0x0ae0, 0x0ae3, - 0x0ae6, 0x0af1, - 0x0af9, 0x0af9, - 0x0b01, 0x0b03, - 0x0b05, 0x0b0c, - 0x0b0f, 0x0b10, - 0x0b13, 0x0b28, - 0x0b2a, 0x0b30, - 0x0b32, 0x0b33, - 0x0b35, 0x0b39, - 0x0b3c, 0x0b44, - 0x0b47, 0x0b48, - 0x0b4b, 0x0b4d, - 0x0b56, 0x0b57, - 0x0b5c, 0x0b5d, - 0x0b5f, 0x0b63, - 0x0b66, 0x0b77, - 0x0b82, 0x0b83, - 0x0b85, 0x0b8a, - 0x0b8e, 0x0b90, - 0x0b92, 0x0b95, - 0x0b99, 0x0b9a, - 0x0b9c, 0x0b9c, - 0x0b9e, 0x0b9f, - 0x0ba3, 0x0ba4, - 0x0ba8, 0x0baa, - 0x0bae, 0x0bb9, - 0x0bbe, 0x0bc2, - 0x0bc6, 0x0bc8, - 0x0bca, 0x0bcd, - 0x0bd0, 0x0bd0, - 0x0bd7, 0x0bd7, - 0x0be6, 0x0bfa, - 0x0c00, 0x0c03, - 0x0c05, 0x0c0c, - 0x0c0e, 0x0c10, - 0x0c12, 0x0c28, - 0x0c2a, 0x0c39, - 0x0c3d, 0x0c44, - 0x0c46, 0x0c48, - 0x0c4a, 0x0c4d, - 0x0c55, 0x0c56, - 0x0c58, 0x0c5a, - 0x0c60, 0x0c63, - 0x0c66, 0x0c6f, - 0x0c78, 0x0c83, - 0x0c85, 0x0c8c, - 0x0c8e, 0x0c90, - 0x0c92, 0x0ca8, - 0x0caa, 0x0cb3, - 0x0cb5, 0x0cb9, - 0x0cbc, 0x0cc4, - 0x0cc6, 0x0cc8, - 0x0cca, 0x0ccd, - 0x0cd5, 0x0cd6, - 0x0cde, 0x0cde, - 0x0ce0, 0x0ce3, - 0x0ce6, 0x0cef, - 0x0cf1, 0x0cf2, - 0x0d01, 0x0d03, - 0x0d05, 0x0d0c, - 0x0d0e, 0x0d10, - 0x0d12, 0x0d3a, - 0x0d3d, 0x0d44, - 0x0d46, 0x0d48, - 0x0d4a, 0x0d4f, - 0x0d54, 0x0d63, - 0x0d66, 0x0d7f, - 0x0d82, 0x0d83, - 0x0d85, 0x0d96, - 0x0d9a, 0x0db1, - 0x0db3, 0x0dbb, - 0x0dbd, 0x0dbd, - 0x0dc0, 0x0dc6, - 0x0dca, 0x0dca, - 0x0dcf, 0x0dd4, - 0x0dd6, 0x0dd6, - 0x0dd8, 0x0ddf, - 0x0de6, 0x0def, - 0x0df2, 0x0df4, - 0x0e01, 0x0e3a, - 0x0e3f, 0x0e5b, - 0x0e81, 0x0e82, - 0x0e84, 0x0e84, - 0x0e87, 0x0e88, - 0x0e8a, 0x0e8a, - 0x0e8d, 0x0e8d, - 0x0e94, 0x0e97, - 0x0e99, 0x0e9f, - 0x0ea1, 0x0ea3, - 0x0ea5, 0x0ea5, - 0x0ea7, 0x0ea7, - 0x0eaa, 0x0eab, - 0x0ead, 0x0eb9, - 0x0ebb, 0x0ebd, - 0x0ec0, 0x0ec4, - 0x0ec6, 0x0ec6, - 0x0ec8, 0x0ecd, - 0x0ed0, 0x0ed9, - 0x0edc, 0x0edf, - 0x0f00, 0x0f47, - 0x0f49, 0x0f6c, - 0x0f71, 0x0f97, - 0x0f99, 0x0fbc, - 0x0fbe, 0x0fcc, - 0x0fce, 0x0fda, - 0x1000, 0x10c5, - 0x10c7, 0x10c7, - 0x10cd, 0x10cd, - 0x10d0, 0x1248, - 0x124a, 0x124d, - 0x1250, 0x1256, - 0x1258, 0x1258, - 0x125a, 0x125d, - 0x1260, 0x1288, - 0x128a, 0x128d, - 0x1290, 0x12b0, - 0x12b2, 0x12b5, - 0x12b8, 0x12be, - 0x12c0, 0x12c0, - 0x12c2, 0x12c5, - 0x12c8, 0x12d6, - 0x12d8, 0x1310, - 0x1312, 0x1315, - 0x1318, 0x135a, - 0x135d, 0x137c, - 0x1380, 0x1399, - 0x13a0, 0x13f5, - 0x13f8, 0x13fd, - 0x1400, 0x167f, - 0x1681, 0x169c, - 0x16a0, 0x16f8, - 0x1700, 0x170c, - 0x170e, 0x1714, - 0x1720, 0x1736, - 0x1740, 0x1753, - 0x1760, 0x176c, - 0x176e, 0x1770, - 0x1772, 0x1773, - 0x1780, 0x17dd, - 0x17e0, 0x17e9, - 0x17f0, 0x17f9, - 0x1800, 0x180e, - 0x1810, 0x1819, - 0x1820, 0x1877, - 0x1880, 0x18aa, - 0x18b0, 0x18f5, - 0x1900, 0x191e, - 0x1920, 0x192b, - 0x1930, 0x193b, - 0x1940, 0x1940, - 0x1944, 0x196d, - 0x1970, 0x1974, - 0x1980, 0x19ab, - 0x19b0, 0x19c9, - 0x19d0, 0x19da, - 0x19de, 0x1a1b, - 0x1a1e, 0x1a5e, - 0x1a60, 0x1a7c, - 0x1a7f, 0x1a89, - 0x1a90, 0x1a99, - 0x1aa0, 0x1aad, - 0x1ab0, 0x1abe, - 0x1b00, 0x1b4b, - 0x1b50, 0x1b7c, - 0x1b80, 0x1bf3, - 0x1bfc, 0x1c37, - 0x1c3b, 0x1c49, - 0x1c4d, 0x1c88, - 0x1cc0, 0x1cc7, - 0x1cd0, 0x1cf6, - 0x1cf8, 0x1cf9, - 0x1d00, 0x1df5, - 0x1dfb, 0x1f15, - 0x1f18, 0x1f1d, - 0x1f20, 0x1f45, - 0x1f48, 0x1f4d, - 0x1f50, 0x1f57, - 0x1f59, 0x1f59, - 0x1f5b, 0x1f5b, - 0x1f5d, 0x1f5d, - 0x1f5f, 0x1f7d, - 0x1f80, 0x1fb4, - 0x1fb6, 0x1fc4, - 0x1fc6, 0x1fd3, - 0x1fd6, 0x1fdb, - 0x1fdd, 0x1fef, - 0x1ff2, 0x1ff4, - 0x1ff6, 0x1ffe, - 0x200b, 0x2027, - 0x202a, 0x202e, - 0x2030, 0x205e, - 0x2060, 0x2064, - 0x2066, 0x2071, - 0x2074, 0x208e, - 0x2090, 0x209c, - 0x20a0, 0x20be, - 0x20d0, 0x20f0, - 0x2100, 0x218b, - 0x2190, 0x23fe, - 0x2400, 0x2426, - 0x2440, 0x244a, - 0x2460, 0x2b73, - 0x2b76, 0x2b95, - 0x2b98, 0x2bb9, - 0x2bbd, 0x2bc8, - 0x2bca, 0x2bd1, - 0x2bec, 0x2bef, - 0x2c00, 0x2c2e, - 0x2c30, 0x2c5e, - 0x2c60, 0x2cf3, - 0x2cf9, 0x2d25, - 0x2d27, 0x2d27, - 0x2d2d, 0x2d2d, - 0x2d30, 0x2d67, - 0x2d6f, 0x2d70, - 0x2d7f, 0x2d96, - 0x2da0, 0x2da6, - 0x2da8, 0x2dae, - 0x2db0, 0x2db6, - 0x2db8, 0x2dbe, - 0x2dc0, 0x2dc6, - 0x2dc8, 0x2dce, - 0x2dd0, 0x2dd6, - 0x2dd8, 0x2dde, - 0x2de0, 0x2e44, - 0x2e80, 0x2e99, - 0x2e9b, 0x2ef3, - 0x2f00, 0x2fd5, - 0x2ff0, 0x2ffb, - 0x3001, 0x303f, - 0x3041, 0x3096, - 0x3099, 0x30ff, - 0x3105, 0x312d, - 0x3131, 0x318e, - 0x3190, 0x31ba, - 0x31c0, 0x31e3, - 0x31f0, 0x321e, - 0x3220, 0x32fe, - 0x3300, 0x4db5, - 0x4dc0, 0x9fd5, - 0xa000, 0xa48c, - 0xa490, 0xa4c6, - 0xa4d0, 0xa62b, - 0xa640, 0xa6f7, - 0xa700, 0xa7ae, - 0xa7b0, 0xa7b7, - 0xa7f7, 0xa82b, - 0xa830, 0xa839, - 0xa840, 0xa877, - 0xa880, 0xa8c5, - 0xa8ce, 0xa8d9, - 0xa8e0, 0xa8fd, - 0xa900, 0xa953, - 0xa95f, 0xa97c, - 0xa980, 0xa9cd, - 0xa9cf, 0xa9d9, - 0xa9de, 0xa9fe, - 0xaa00, 0xaa36, - 0xaa40, 0xaa4d, - 0xaa50, 0xaa59, - 0xaa5c, 0xaac2, - 0xaadb, 0xaaf6, - 0xab01, 0xab06, - 0xab09, 0xab0e, - 0xab11, 0xab16, - 0xab20, 0xab26, - 0xab28, 0xab2e, - 0xab30, 0xab65, - 0xab70, 0xabed, - 0xabf0, 0xabf9, - 0xac00, 0xd7a3, - 0xd7b0, 0xd7c6, - 0xd7cb, 0xd7fb, - 0xe000, 0xfa6d, - 0xfa70, 0xfad9, - 0xfb00, 0xfb06, - 0xfb13, 0xfb17, - 0xfb1d, 0xfb36, - 0xfb38, 0xfb3c, - 0xfb3e, 0xfb3e, - 0xfb40, 0xfb41, - 0xfb43, 0xfb44, - 0xfb46, 0xfbc1, - 0xfbd3, 0xfd3f, - 0xfd50, 0xfd8f, - 0xfd92, 0xfdc7, - 0xfdf0, 0xfdfd, - 0xfe00, 0xfe19, - 0xfe20, 0xfe52, - 0xfe54, 0xfe66, - 0xfe68, 0xfe6b, - 0xfe70, 0xfe74, - 0xfe76, 0xfefc, - 0xfeff, 0xfeff, - 0xff01, 0xffbe, - 0xffc2, 0xffc7, - 0xffca, 0xffcf, - 0xffd2, 0xffd7, - 0xffda, 0xffdc, - 0xffe0, 0xffe6, - 0xffe8, 0xffee, - 0xfff9, 0xfffd, - 0x10000, 0x1000b, - 0x1000d, 0x10026, - 0x10028, 0x1003a, - 0x1003c, 0x1003d, - 0x1003f, 0x1004d, - 0x10050, 0x1005d, - 0x10080, 0x100fa, - 0x10100, 0x10102, - 0x10107, 0x10133, - 0x10137, 0x1018e, - 0x10190, 0x1019b, - 0x101a0, 0x101a0, - 0x101d0, 0x101fd, - 0x10280, 0x1029c, - 0x102a0, 0x102d0, - 0x102e0, 0x102fb, - 0x10300, 0x10323, - 0x10330, 0x1034a, - 0x10350, 0x1037a, - 0x10380, 0x1039d, - 0x1039f, 0x103c3, - 0x103c8, 0x103d5, - 0x10400, 0x1049d, - 0x104a0, 0x104a9, - 0x104b0, 0x104d3, - 0x104d8, 0x104fb, - 0x10500, 0x10527, - 0x10530, 0x10563, - 0x1056f, 0x1056f, - 0x10600, 0x10736, - 0x10740, 0x10755, - 0x10760, 0x10767, - 0x10800, 0x10805, - 0x10808, 0x10808, - 0x1080a, 0x10835, - 0x10837, 0x10838, - 0x1083c, 0x1083c, - 0x1083f, 0x10855, - 0x10857, 0x1089e, - 0x108a7, 0x108af, - 0x108e0, 0x108f2, - 0x108f4, 0x108f5, - 0x108fb, 0x1091b, - 0x1091f, 0x10939, - 0x1093f, 0x1093f, - 0x10980, 0x109b7, - 0x109bc, 0x109cf, - 0x109d2, 0x10a03, - 0x10a05, 0x10a06, - 0x10a0c, 0x10a13, - 0x10a15, 0x10a17, - 0x10a19, 0x10a33, - 0x10a38, 0x10a3a, - 0x10a3f, 0x10a47, - 0x10a50, 0x10a58, - 0x10a60, 0x10a9f, - 0x10ac0, 0x10ae6, - 0x10aeb, 0x10af6, - 0x10b00, 0x10b35, - 0x10b39, 0x10b55, - 0x10b58, 0x10b72, - 0x10b78, 0x10b91, - 0x10b99, 0x10b9c, - 0x10ba9, 0x10baf, - 0x10c00, 0x10c48, - 0x10c80, 0x10cb2, - 0x10cc0, 0x10cf2, - 0x10cfa, 0x10cff, - 0x10e60, 0x10e7e, - 0x11000, 0x1104d, - 0x11052, 0x1106f, - 0x1107f, 0x110c1, - 0x110d0, 0x110e8, - 0x110f0, 0x110f9, - 0x11100, 0x11134, - 0x11136, 0x11143, - 0x11150, 0x11176, - 0x11180, 0x111cd, - 0x111d0, 0x111df, - 0x111e1, 0x111f4, - 0x11200, 0x11211, - 0x11213, 0x1123e, - 0x11280, 0x11286, - 0x11288, 0x11288, - 0x1128a, 0x1128d, - 0x1128f, 0x1129d, - 0x1129f, 0x112a9, - 0x112b0, 0x112ea, - 0x112f0, 0x112f9, - 0x11300, 0x11303, - 0x11305, 0x1130c, - 0x1130f, 0x11310, - 0x11313, 0x11328, - 0x1132a, 0x11330, - 0x11332, 0x11333, - 0x11335, 0x11339, - 0x1133c, 0x11344, - 0x11347, 0x11348, - 0x1134b, 0x1134d, - 0x11350, 0x11350, - 0x11357, 0x11357, - 0x1135d, 0x11363, - 0x11366, 0x1136c, - 0x11370, 0x11374, - 0x11400, 0x11459, - 0x1145b, 0x1145b, - 0x1145d, 0x1145d, - 0x11480, 0x114c7, - 0x114d0, 0x114d9, - 0x11580, 0x115b5, - 0x115b8, 0x115dd, - 0x11600, 0x11644, - 0x11650, 0x11659, - 0x11660, 0x1166c, - 0x11680, 0x116b7, - 0x116c0, 0x116c9, - 0x11700, 0x11719, - 0x1171d, 0x1172b, - 0x11730, 0x1173f, - 0x118a0, 0x118f2, - 0x118ff, 0x118ff, - 0x11ac0, 0x11af8, - 0x11c00, 0x11c08, - 0x11c0a, 0x11c36, - 0x11c38, 0x11c45, - 0x11c50, 0x11c6c, - 0x11c70, 0x11c8f, - 0x11c92, 0x11ca7, - 0x11ca9, 0x11cb6, - 0x12000, 0x12399, - 0x12400, 0x1246e, - 0x12470, 0x12474, - 0x12480, 0x12543, - 0x13000, 0x1342e, - 0x14400, 0x14646, - 0x16800, 0x16a38, - 0x16a40, 0x16a5e, - 0x16a60, 0x16a69, - 0x16a6e, 0x16a6f, - 0x16ad0, 0x16aed, - 0x16af0, 0x16af5, - 0x16b00, 0x16b45, - 0x16b50, 0x16b59, - 0x16b5b, 0x16b61, - 0x16b63, 0x16b77, - 0x16b7d, 0x16b8f, - 0x16f00, 0x16f44, - 0x16f50, 0x16f7e, - 0x16f8f, 0x16f9f, - 0x16fe0, 0x16fe0, - 0x17000, 0x187ec, - 0x18800, 0x18af2, - 0x1b000, 0x1b001, - 0x1bc00, 0x1bc6a, - 0x1bc70, 0x1bc7c, - 0x1bc80, 0x1bc88, - 0x1bc90, 0x1bc99, - 0x1bc9c, 0x1bca3, - 0x1d000, 0x1d0f5, - 0x1d100, 0x1d126, - 0x1d129, 0x1d1e8, - 0x1d200, 0x1d245, - 0x1d300, 0x1d356, - 0x1d360, 0x1d371, - 0x1d400, 0x1d454, - 0x1d456, 0x1d49c, - 0x1d49e, 0x1d49f, - 0x1d4a2, 0x1d4a2, - 0x1d4a5, 0x1d4a6, - 0x1d4a9, 0x1d4ac, - 0x1d4ae, 0x1d4b9, - 0x1d4bb, 0x1d4bb, - 0x1d4bd, 0x1d4c3, - 0x1d4c5, 0x1d505, - 0x1d507, 0x1d50a, - 0x1d50d, 0x1d514, - 0x1d516, 0x1d51c, - 0x1d51e, 0x1d539, - 0x1d53b, 0x1d53e, - 0x1d540, 0x1d544, - 0x1d546, 0x1d546, - 0x1d54a, 0x1d550, - 0x1d552, 0x1d6a5, - 0x1d6a8, 0x1d7cb, - 0x1d7ce, 0x1da8b, - 0x1da9b, 0x1da9f, - 0x1daa1, 0x1daaf, - 0x1e000, 0x1e006, - 0x1e008, 0x1e018, - 0x1e01b, 0x1e021, - 0x1e023, 0x1e024, - 0x1e026, 0x1e02a, - 0x1e800, 0x1e8c4, - 0x1e8c7, 0x1e8d6, - 0x1e900, 0x1e94a, - 0x1e950, 0x1e959, - 0x1e95e, 0x1e95f, - 0x1ee00, 0x1ee03, - 0x1ee05, 0x1ee1f, - 0x1ee21, 0x1ee22, - 0x1ee24, 0x1ee24, - 0x1ee27, 0x1ee27, - 0x1ee29, 0x1ee32, - 0x1ee34, 0x1ee37, - 0x1ee39, 0x1ee39, - 0x1ee3b, 0x1ee3b, - 0x1ee42, 0x1ee42, - 0x1ee47, 0x1ee47, - 0x1ee49, 0x1ee49, - 0x1ee4b, 0x1ee4b, - 0x1ee4d, 0x1ee4f, - 0x1ee51, 0x1ee52, - 0x1ee54, 0x1ee54, - 0x1ee57, 0x1ee57, - 0x1ee59, 0x1ee59, - 0x1ee5b, 0x1ee5b, - 0x1ee5d, 0x1ee5d, - 0x1ee5f, 0x1ee5f, - 0x1ee61, 0x1ee62, - 0x1ee64, 0x1ee64, - 0x1ee67, 0x1ee6a, - 0x1ee6c, 0x1ee72, - 0x1ee74, 0x1ee77, - 0x1ee79, 0x1ee7c, - 0x1ee7e, 0x1ee7e, - 0x1ee80, 0x1ee89, - 0x1ee8b, 0x1ee9b, - 0x1eea1, 0x1eea3, - 0x1eea5, 0x1eea9, - 0x1eeab, 0x1eebb, - 0x1eef0, 0x1eef1, - 0x1f000, 0x1f02b, - 0x1f030, 0x1f093, - 0x1f0a0, 0x1f0ae, - 0x1f0b1, 0x1f0bf, - 0x1f0c1, 0x1f0cf, - 0x1f0d1, 0x1f0f5, - 0x1f100, 0x1f10c, - 0x1f110, 0x1f12e, - 0x1f130, 0x1f16b, - 0x1f170, 0x1f1ac, - 0x1f1e6, 0x1f202, - 0x1f210, 0x1f23b, - 0x1f240, 0x1f248, - 0x1f250, 0x1f251, - 0x1f300, 0x1f6d2, - 0x1f6e0, 0x1f6ec, - 0x1f6f0, 0x1f6f6, - 0x1f700, 0x1f773, - 0x1f780, 0x1f7d4, - 0x1f800, 0x1f80b, - 0x1f810, 0x1f847, - 0x1f850, 0x1f859, - 0x1f860, 0x1f887, - 0x1f890, 0x1f8ad, - 0x1f910, 0x1f91e, - 0x1f920, 0x1f927, - 0x1f930, 0x1f930, - 0x1f933, 0x1f93e, - 0x1f940, 0x1f94b, - 0x1f950, 0x1f95e, - 0x1f980, 0x1f991, - 0x1f9c0, 0x1f9c0, - 0x20000, 0x2a6d6, - 0x2a700, 0x2b734, - 0x2b740, 0x2b81d, - 0x2b820, 0x2cea1, - 0x2f800, 0x2fa1d, - 0xe0001, 0xe0001, - 0xe0020, 0xe007f, - 0xe0100, 0xe01ef, - 0xf0000, 0xffffd, - 0x100000, 0x10fffd, -}; /* CR_Graph */ - -/* 'Lower': [[:Lower:]] */ -static const OnigCodePoint CR_Lower[] = { - 640, - 0x0061, 0x007a, - 0x00aa, 0x00aa, - 0x00b5, 0x00b5, - 0x00ba, 0x00ba, - 0x00df, 0x00f6, - 0x00f8, 0x00ff, - 0x0101, 0x0101, - 0x0103, 0x0103, - 0x0105, 0x0105, - 0x0107, 0x0107, - 0x0109, 0x0109, - 0x010b, 0x010b, - 0x010d, 0x010d, - 0x010f, 0x010f, - 0x0111, 0x0111, - 0x0113, 0x0113, - 0x0115, 0x0115, - 0x0117, 0x0117, - 0x0119, 0x0119, - 0x011b, 0x011b, - 0x011d, 0x011d, - 0x011f, 0x011f, - 0x0121, 0x0121, - 0x0123, 0x0123, - 0x0125, 0x0125, - 0x0127, 0x0127, - 0x0129, 0x0129, - 0x012b, 0x012b, - 0x012d, 0x012d, - 0x012f, 0x012f, - 0x0131, 0x0131, - 0x0133, 0x0133, - 0x0135, 0x0135, - 0x0137, 0x0138, - 0x013a, 0x013a, - 0x013c, 0x013c, - 0x013e, 0x013e, - 0x0140, 0x0140, - 0x0142, 0x0142, - 0x0144, 0x0144, - 0x0146, 0x0146, - 0x0148, 0x0149, - 0x014b, 0x014b, - 0x014d, 0x014d, - 0x014f, 0x014f, - 0x0151, 0x0151, - 0x0153, 0x0153, - 0x0155, 0x0155, - 0x0157, 0x0157, - 0x0159, 0x0159, - 0x015b, 0x015b, - 0x015d, 0x015d, - 0x015f, 0x015f, - 0x0161, 0x0161, - 0x0163, 0x0163, - 0x0165, 0x0165, - 0x0167, 0x0167, - 0x0169, 0x0169, - 0x016b, 0x016b, - 0x016d, 0x016d, - 0x016f, 0x016f, - 0x0171, 0x0171, - 0x0173, 0x0173, - 0x0175, 0x0175, - 0x0177, 0x0177, - 0x017a, 0x017a, - 0x017c, 0x017c, - 0x017e, 0x0180, - 0x0183, 0x0183, - 0x0185, 0x0185, - 0x0188, 0x0188, - 0x018c, 0x018d, - 0x0192, 0x0192, - 0x0195, 0x0195, - 0x0199, 0x019b, - 0x019e, 0x019e, - 0x01a1, 0x01a1, - 0x01a3, 0x01a3, - 0x01a5, 0x01a5, - 0x01a8, 0x01a8, - 0x01aa, 0x01ab, - 0x01ad, 0x01ad, - 0x01b0, 0x01b0, - 0x01b4, 0x01b4, - 0x01b6, 0x01b6, - 0x01b9, 0x01ba, - 0x01bd, 0x01bf, - 0x01c6, 0x01c6, - 0x01c9, 0x01c9, - 0x01cc, 0x01cc, - 0x01ce, 0x01ce, - 0x01d0, 0x01d0, - 0x01d2, 0x01d2, - 0x01d4, 0x01d4, - 0x01d6, 0x01d6, - 0x01d8, 0x01d8, - 0x01da, 0x01da, - 0x01dc, 0x01dd, - 0x01df, 0x01df, - 0x01e1, 0x01e1, - 0x01e3, 0x01e3, - 0x01e5, 0x01e5, - 0x01e7, 0x01e7, - 0x01e9, 0x01e9, - 0x01eb, 0x01eb, - 0x01ed, 0x01ed, - 0x01ef, 0x01f0, - 0x01f3, 0x01f3, - 0x01f5, 0x01f5, - 0x01f9, 0x01f9, - 0x01fb, 0x01fb, - 0x01fd, 0x01fd, - 0x01ff, 0x01ff, - 0x0201, 0x0201, - 0x0203, 0x0203, - 0x0205, 0x0205, - 0x0207, 0x0207, - 0x0209, 0x0209, - 0x020b, 0x020b, - 0x020d, 0x020d, - 0x020f, 0x020f, - 0x0211, 0x0211, - 0x0213, 0x0213, - 0x0215, 0x0215, - 0x0217, 0x0217, - 0x0219, 0x0219, - 0x021b, 0x021b, - 0x021d, 0x021d, - 0x021f, 0x021f, - 0x0221, 0x0221, - 0x0223, 0x0223, - 0x0225, 0x0225, - 0x0227, 0x0227, - 0x0229, 0x0229, - 0x022b, 0x022b, - 0x022d, 0x022d, - 0x022f, 0x022f, - 0x0231, 0x0231, - 0x0233, 0x0239, - 0x023c, 0x023c, - 0x023f, 0x0240, - 0x0242, 0x0242, - 0x0247, 0x0247, - 0x0249, 0x0249, - 0x024b, 0x024b, - 0x024d, 0x024d, - 0x024f, 0x0293, - 0x0295, 0x02b8, - 0x02c0, 0x02c1, - 0x02e0, 0x02e4, - 0x0345, 0x0345, - 0x0371, 0x0371, - 0x0373, 0x0373, - 0x0377, 0x0377, - 0x037a, 0x037d, - 0x0390, 0x0390, - 0x03ac, 0x03ce, - 0x03d0, 0x03d1, - 0x03d5, 0x03d7, - 0x03d9, 0x03d9, - 0x03db, 0x03db, - 0x03dd, 0x03dd, - 0x03df, 0x03df, - 0x03e1, 0x03e1, - 0x03e3, 0x03e3, - 0x03e5, 0x03e5, - 0x03e7, 0x03e7, - 0x03e9, 0x03e9, - 0x03eb, 0x03eb, - 0x03ed, 0x03ed, - 0x03ef, 0x03f3, - 0x03f5, 0x03f5, - 0x03f8, 0x03f8, - 0x03fb, 0x03fc, - 0x0430, 0x045f, - 0x0461, 0x0461, - 0x0463, 0x0463, - 0x0465, 0x0465, - 0x0467, 0x0467, - 0x0469, 0x0469, - 0x046b, 0x046b, - 0x046d, 0x046d, - 0x046f, 0x046f, - 0x0471, 0x0471, - 0x0473, 0x0473, - 0x0475, 0x0475, - 0x0477, 0x0477, - 0x0479, 0x0479, - 0x047b, 0x047b, - 0x047d, 0x047d, - 0x047f, 0x047f, - 0x0481, 0x0481, - 0x048b, 0x048b, - 0x048d, 0x048d, - 0x048f, 0x048f, - 0x0491, 0x0491, - 0x0493, 0x0493, - 0x0495, 0x0495, - 0x0497, 0x0497, - 0x0499, 0x0499, - 0x049b, 0x049b, - 0x049d, 0x049d, - 0x049f, 0x049f, - 0x04a1, 0x04a1, - 0x04a3, 0x04a3, - 0x04a5, 0x04a5, - 0x04a7, 0x04a7, - 0x04a9, 0x04a9, - 0x04ab, 0x04ab, - 0x04ad, 0x04ad, - 0x04af, 0x04af, - 0x04b1, 0x04b1, - 0x04b3, 0x04b3, - 0x04b5, 0x04b5, - 0x04b7, 0x04b7, - 0x04b9, 0x04b9, - 0x04bb, 0x04bb, - 0x04bd, 0x04bd, - 0x04bf, 0x04bf, - 0x04c2, 0x04c2, - 0x04c4, 0x04c4, - 0x04c6, 0x04c6, - 0x04c8, 0x04c8, - 0x04ca, 0x04ca, - 0x04cc, 0x04cc, - 0x04ce, 0x04cf, - 0x04d1, 0x04d1, - 0x04d3, 0x04d3, - 0x04d5, 0x04d5, - 0x04d7, 0x04d7, - 0x04d9, 0x04d9, - 0x04db, 0x04db, - 0x04dd, 0x04dd, - 0x04df, 0x04df, - 0x04e1, 0x04e1, - 0x04e3, 0x04e3, - 0x04e5, 0x04e5, - 0x04e7, 0x04e7, - 0x04e9, 0x04e9, - 0x04eb, 0x04eb, - 0x04ed, 0x04ed, - 0x04ef, 0x04ef, - 0x04f1, 0x04f1, - 0x04f3, 0x04f3, - 0x04f5, 0x04f5, - 0x04f7, 0x04f7, - 0x04f9, 0x04f9, - 0x04fb, 0x04fb, - 0x04fd, 0x04fd, - 0x04ff, 0x04ff, - 0x0501, 0x0501, - 0x0503, 0x0503, - 0x0505, 0x0505, - 0x0507, 0x0507, - 0x0509, 0x0509, - 0x050b, 0x050b, - 0x050d, 0x050d, - 0x050f, 0x050f, - 0x0511, 0x0511, - 0x0513, 0x0513, - 0x0515, 0x0515, - 0x0517, 0x0517, - 0x0519, 0x0519, - 0x051b, 0x051b, - 0x051d, 0x051d, - 0x051f, 0x051f, - 0x0521, 0x0521, - 0x0523, 0x0523, - 0x0525, 0x0525, - 0x0527, 0x0527, - 0x0529, 0x0529, - 0x052b, 0x052b, - 0x052d, 0x052d, - 0x052f, 0x052f, - 0x0561, 0x0587, - 0x13f8, 0x13fd, - 0x1c80, 0x1c88, - 0x1d00, 0x1dbf, - 0x1e01, 0x1e01, - 0x1e03, 0x1e03, - 0x1e05, 0x1e05, - 0x1e07, 0x1e07, - 0x1e09, 0x1e09, - 0x1e0b, 0x1e0b, - 0x1e0d, 0x1e0d, - 0x1e0f, 0x1e0f, - 0x1e11, 0x1e11, - 0x1e13, 0x1e13, - 0x1e15, 0x1e15, - 0x1e17, 0x1e17, - 0x1e19, 0x1e19, - 0x1e1b, 0x1e1b, - 0x1e1d, 0x1e1d, - 0x1e1f, 0x1e1f, - 0x1e21, 0x1e21, - 0x1e23, 0x1e23, - 0x1e25, 0x1e25, - 0x1e27, 0x1e27, - 0x1e29, 0x1e29, - 0x1e2b, 0x1e2b, - 0x1e2d, 0x1e2d, - 0x1e2f, 0x1e2f, - 0x1e31, 0x1e31, - 0x1e33, 0x1e33, - 0x1e35, 0x1e35, - 0x1e37, 0x1e37, - 0x1e39, 0x1e39, - 0x1e3b, 0x1e3b, - 0x1e3d, 0x1e3d, - 0x1e3f, 0x1e3f, - 0x1e41, 0x1e41, - 0x1e43, 0x1e43, - 0x1e45, 0x1e45, - 0x1e47, 0x1e47, - 0x1e49, 0x1e49, - 0x1e4b, 0x1e4b, - 0x1e4d, 0x1e4d, - 0x1e4f, 0x1e4f, - 0x1e51, 0x1e51, - 0x1e53, 0x1e53, - 0x1e55, 0x1e55, - 0x1e57, 0x1e57, - 0x1e59, 0x1e59, - 0x1e5b, 0x1e5b, - 0x1e5d, 0x1e5d, - 0x1e5f, 0x1e5f, - 0x1e61, 0x1e61, - 0x1e63, 0x1e63, - 0x1e65, 0x1e65, - 0x1e67, 0x1e67, - 0x1e69, 0x1e69, - 0x1e6b, 0x1e6b, - 0x1e6d, 0x1e6d, - 0x1e6f, 0x1e6f, - 0x1e71, 0x1e71, - 0x1e73, 0x1e73, - 0x1e75, 0x1e75, - 0x1e77, 0x1e77, - 0x1e79, 0x1e79, - 0x1e7b, 0x1e7b, - 0x1e7d, 0x1e7d, - 0x1e7f, 0x1e7f, - 0x1e81, 0x1e81, - 0x1e83, 0x1e83, - 0x1e85, 0x1e85, - 0x1e87, 0x1e87, - 0x1e89, 0x1e89, - 0x1e8b, 0x1e8b, - 0x1e8d, 0x1e8d, - 0x1e8f, 0x1e8f, - 0x1e91, 0x1e91, - 0x1e93, 0x1e93, - 0x1e95, 0x1e9d, - 0x1e9f, 0x1e9f, - 0x1ea1, 0x1ea1, - 0x1ea3, 0x1ea3, - 0x1ea5, 0x1ea5, - 0x1ea7, 0x1ea7, - 0x1ea9, 0x1ea9, - 0x1eab, 0x1eab, - 0x1ead, 0x1ead, - 0x1eaf, 0x1eaf, - 0x1eb1, 0x1eb1, - 0x1eb3, 0x1eb3, - 0x1eb5, 0x1eb5, - 0x1eb7, 0x1eb7, - 0x1eb9, 0x1eb9, - 0x1ebb, 0x1ebb, - 0x1ebd, 0x1ebd, - 0x1ebf, 0x1ebf, - 0x1ec1, 0x1ec1, - 0x1ec3, 0x1ec3, - 0x1ec5, 0x1ec5, - 0x1ec7, 0x1ec7, - 0x1ec9, 0x1ec9, - 0x1ecb, 0x1ecb, - 0x1ecd, 0x1ecd, - 0x1ecf, 0x1ecf, - 0x1ed1, 0x1ed1, - 0x1ed3, 0x1ed3, - 0x1ed5, 0x1ed5, - 0x1ed7, 0x1ed7, - 0x1ed9, 0x1ed9, - 0x1edb, 0x1edb, - 0x1edd, 0x1edd, - 0x1edf, 0x1edf, - 0x1ee1, 0x1ee1, - 0x1ee3, 0x1ee3, - 0x1ee5, 0x1ee5, - 0x1ee7, 0x1ee7, - 0x1ee9, 0x1ee9, - 0x1eeb, 0x1eeb, - 0x1eed, 0x1eed, - 0x1eef, 0x1eef, - 0x1ef1, 0x1ef1, - 0x1ef3, 0x1ef3, - 0x1ef5, 0x1ef5, - 0x1ef7, 0x1ef7, - 0x1ef9, 0x1ef9, - 0x1efb, 0x1efb, - 0x1efd, 0x1efd, - 0x1eff, 0x1f07, - 0x1f10, 0x1f15, - 0x1f20, 0x1f27, - 0x1f30, 0x1f37, - 0x1f40, 0x1f45, - 0x1f50, 0x1f57, - 0x1f60, 0x1f67, - 0x1f70, 0x1f7d, - 0x1f80, 0x1f87, - 0x1f90, 0x1f97, - 0x1fa0, 0x1fa7, - 0x1fb0, 0x1fb4, - 0x1fb6, 0x1fb7, - 0x1fbe, 0x1fbe, - 0x1fc2, 0x1fc4, - 0x1fc6, 0x1fc7, - 0x1fd0, 0x1fd3, - 0x1fd6, 0x1fd7, - 0x1fe0, 0x1fe7, - 0x1ff2, 0x1ff4, - 0x1ff6, 0x1ff7, - 0x2071, 0x2071, - 0x207f, 0x207f, - 0x2090, 0x209c, - 0x210a, 0x210a, - 0x210e, 0x210f, - 0x2113, 0x2113, - 0x212f, 0x212f, - 0x2134, 0x2134, - 0x2139, 0x2139, - 0x213c, 0x213d, - 0x2146, 0x2149, - 0x214e, 0x214e, - 0x2170, 0x217f, - 0x2184, 0x2184, - 0x24d0, 0x24e9, - 0x2c30, 0x2c5e, - 0x2c61, 0x2c61, - 0x2c65, 0x2c66, - 0x2c68, 0x2c68, - 0x2c6a, 0x2c6a, - 0x2c6c, 0x2c6c, - 0x2c71, 0x2c71, - 0x2c73, 0x2c74, - 0x2c76, 0x2c7d, - 0x2c81, 0x2c81, - 0x2c83, 0x2c83, - 0x2c85, 0x2c85, - 0x2c87, 0x2c87, - 0x2c89, 0x2c89, - 0x2c8b, 0x2c8b, - 0x2c8d, 0x2c8d, - 0x2c8f, 0x2c8f, - 0x2c91, 0x2c91, - 0x2c93, 0x2c93, - 0x2c95, 0x2c95, - 0x2c97, 0x2c97, - 0x2c99, 0x2c99, - 0x2c9b, 0x2c9b, - 0x2c9d, 0x2c9d, - 0x2c9f, 0x2c9f, - 0x2ca1, 0x2ca1, - 0x2ca3, 0x2ca3, - 0x2ca5, 0x2ca5, - 0x2ca7, 0x2ca7, - 0x2ca9, 0x2ca9, - 0x2cab, 0x2cab, - 0x2cad, 0x2cad, - 0x2caf, 0x2caf, - 0x2cb1, 0x2cb1, - 0x2cb3, 0x2cb3, - 0x2cb5, 0x2cb5, - 0x2cb7, 0x2cb7, - 0x2cb9, 0x2cb9, - 0x2cbb, 0x2cbb, - 0x2cbd, 0x2cbd, - 0x2cbf, 0x2cbf, - 0x2cc1, 0x2cc1, - 0x2cc3, 0x2cc3, - 0x2cc5, 0x2cc5, - 0x2cc7, 0x2cc7, - 0x2cc9, 0x2cc9, - 0x2ccb, 0x2ccb, - 0x2ccd, 0x2ccd, - 0x2ccf, 0x2ccf, - 0x2cd1, 0x2cd1, - 0x2cd3, 0x2cd3, - 0x2cd5, 0x2cd5, - 0x2cd7, 0x2cd7, - 0x2cd9, 0x2cd9, - 0x2cdb, 0x2cdb, - 0x2cdd, 0x2cdd, - 0x2cdf, 0x2cdf, - 0x2ce1, 0x2ce1, - 0x2ce3, 0x2ce4, - 0x2cec, 0x2cec, - 0x2cee, 0x2cee, - 0x2cf3, 0x2cf3, - 0x2d00, 0x2d25, - 0x2d27, 0x2d27, - 0x2d2d, 0x2d2d, - 0xa641, 0xa641, - 0xa643, 0xa643, - 0xa645, 0xa645, - 0xa647, 0xa647, - 0xa649, 0xa649, - 0xa64b, 0xa64b, - 0xa64d, 0xa64d, - 0xa64f, 0xa64f, - 0xa651, 0xa651, - 0xa653, 0xa653, - 0xa655, 0xa655, - 0xa657, 0xa657, - 0xa659, 0xa659, - 0xa65b, 0xa65b, - 0xa65d, 0xa65d, - 0xa65f, 0xa65f, - 0xa661, 0xa661, - 0xa663, 0xa663, - 0xa665, 0xa665, - 0xa667, 0xa667, - 0xa669, 0xa669, - 0xa66b, 0xa66b, - 0xa66d, 0xa66d, - 0xa681, 0xa681, - 0xa683, 0xa683, - 0xa685, 0xa685, - 0xa687, 0xa687, - 0xa689, 0xa689, - 0xa68b, 0xa68b, - 0xa68d, 0xa68d, - 0xa68f, 0xa68f, - 0xa691, 0xa691, - 0xa693, 0xa693, - 0xa695, 0xa695, - 0xa697, 0xa697, - 0xa699, 0xa699, - 0xa69b, 0xa69d, - 0xa723, 0xa723, - 0xa725, 0xa725, - 0xa727, 0xa727, - 0xa729, 0xa729, - 0xa72b, 0xa72b, - 0xa72d, 0xa72d, - 0xa72f, 0xa731, - 0xa733, 0xa733, - 0xa735, 0xa735, - 0xa737, 0xa737, - 0xa739, 0xa739, - 0xa73b, 0xa73b, - 0xa73d, 0xa73d, - 0xa73f, 0xa73f, - 0xa741, 0xa741, - 0xa743, 0xa743, - 0xa745, 0xa745, - 0xa747, 0xa747, - 0xa749, 0xa749, - 0xa74b, 0xa74b, - 0xa74d, 0xa74d, - 0xa74f, 0xa74f, - 0xa751, 0xa751, - 0xa753, 0xa753, - 0xa755, 0xa755, - 0xa757, 0xa757, - 0xa759, 0xa759, - 0xa75b, 0xa75b, - 0xa75d, 0xa75d, - 0xa75f, 0xa75f, - 0xa761, 0xa761, - 0xa763, 0xa763, - 0xa765, 0xa765, - 0xa767, 0xa767, - 0xa769, 0xa769, - 0xa76b, 0xa76b, - 0xa76d, 0xa76d, - 0xa76f, 0xa778, - 0xa77a, 0xa77a, - 0xa77c, 0xa77c, - 0xa77f, 0xa77f, - 0xa781, 0xa781, - 0xa783, 0xa783, - 0xa785, 0xa785, - 0xa787, 0xa787, - 0xa78c, 0xa78c, - 0xa78e, 0xa78e, - 0xa791, 0xa791, - 0xa793, 0xa795, - 0xa797, 0xa797, - 0xa799, 0xa799, - 0xa79b, 0xa79b, - 0xa79d, 0xa79d, - 0xa79f, 0xa79f, - 0xa7a1, 0xa7a1, - 0xa7a3, 0xa7a3, - 0xa7a5, 0xa7a5, - 0xa7a7, 0xa7a7, - 0xa7a9, 0xa7a9, - 0xa7b5, 0xa7b5, - 0xa7b7, 0xa7b7, - 0xa7f8, 0xa7fa, - 0xab30, 0xab5a, - 0xab5c, 0xab65, - 0xab70, 0xabbf, - 0xfb00, 0xfb06, - 0xfb13, 0xfb17, - 0xff41, 0xff5a, - 0x10428, 0x1044f, - 0x104d8, 0x104fb, - 0x10cc0, 0x10cf2, - 0x118c0, 0x118df, - 0x1d41a, 0x1d433, - 0x1d44e, 0x1d454, - 0x1d456, 0x1d467, - 0x1d482, 0x1d49b, - 0x1d4b6, 0x1d4b9, - 0x1d4bb, 0x1d4bb, - 0x1d4bd, 0x1d4c3, - 0x1d4c5, 0x1d4cf, - 0x1d4ea, 0x1d503, - 0x1d51e, 0x1d537, - 0x1d552, 0x1d56b, - 0x1d586, 0x1d59f, - 0x1d5ba, 0x1d5d3, - 0x1d5ee, 0x1d607, - 0x1d622, 0x1d63b, - 0x1d656, 0x1d66f, - 0x1d68a, 0x1d6a5, - 0x1d6c2, 0x1d6da, - 0x1d6dc, 0x1d6e1, - 0x1d6fc, 0x1d714, - 0x1d716, 0x1d71b, - 0x1d736, 0x1d74e, - 0x1d750, 0x1d755, - 0x1d770, 0x1d788, - 0x1d78a, 0x1d78f, - 0x1d7aa, 0x1d7c2, - 0x1d7c4, 0x1d7c9, - 0x1d7cb, 0x1d7cb, - 0x1e922, 0x1e943, -}; /* CR_Lower */ - -/* 'Print': [[:Print:]] */ -static const OnigCodePoint CR_Print[] = { - 640, - 0x0020, 0x007e, - 0x00a0, 0x0377, - 0x037a, 0x037f, - 0x0384, 0x038a, - 0x038c, 0x038c, - 0x038e, 0x03a1, - 0x03a3, 0x052f, - 0x0531, 0x0556, - 0x0559, 0x055f, - 0x0561, 0x0587, - 0x0589, 0x058a, - 0x058d, 0x058f, - 0x0591, 0x05c7, - 0x05d0, 0x05ea, - 0x05f0, 0x05f4, - 0x0600, 0x061c, - 0x061e, 0x070d, - 0x070f, 0x074a, - 0x074d, 0x07b1, - 0x07c0, 0x07fa, - 0x0800, 0x082d, - 0x0830, 0x083e, - 0x0840, 0x085b, - 0x085e, 0x085e, - 0x08a0, 0x08b4, - 0x08b6, 0x08bd, - 0x08d4, 0x0983, - 0x0985, 0x098c, - 0x098f, 0x0990, - 0x0993, 0x09a8, - 0x09aa, 0x09b0, - 0x09b2, 0x09b2, - 0x09b6, 0x09b9, - 0x09bc, 0x09c4, - 0x09c7, 0x09c8, - 0x09cb, 0x09ce, - 0x09d7, 0x09d7, - 0x09dc, 0x09dd, - 0x09df, 0x09e3, - 0x09e6, 0x09fb, - 0x0a01, 0x0a03, - 0x0a05, 0x0a0a, - 0x0a0f, 0x0a10, - 0x0a13, 0x0a28, - 0x0a2a, 0x0a30, - 0x0a32, 0x0a33, - 0x0a35, 0x0a36, - 0x0a38, 0x0a39, - 0x0a3c, 0x0a3c, - 0x0a3e, 0x0a42, - 0x0a47, 0x0a48, - 0x0a4b, 0x0a4d, - 0x0a51, 0x0a51, - 0x0a59, 0x0a5c, - 0x0a5e, 0x0a5e, - 0x0a66, 0x0a75, - 0x0a81, 0x0a83, - 0x0a85, 0x0a8d, - 0x0a8f, 0x0a91, - 0x0a93, 0x0aa8, - 0x0aaa, 0x0ab0, - 0x0ab2, 0x0ab3, - 0x0ab5, 0x0ab9, - 0x0abc, 0x0ac5, - 0x0ac7, 0x0ac9, - 0x0acb, 0x0acd, - 0x0ad0, 0x0ad0, - 0x0ae0, 0x0ae3, - 0x0ae6, 0x0af1, - 0x0af9, 0x0af9, - 0x0b01, 0x0b03, - 0x0b05, 0x0b0c, - 0x0b0f, 0x0b10, - 0x0b13, 0x0b28, - 0x0b2a, 0x0b30, - 0x0b32, 0x0b33, - 0x0b35, 0x0b39, - 0x0b3c, 0x0b44, - 0x0b47, 0x0b48, - 0x0b4b, 0x0b4d, - 0x0b56, 0x0b57, - 0x0b5c, 0x0b5d, - 0x0b5f, 0x0b63, - 0x0b66, 0x0b77, - 0x0b82, 0x0b83, - 0x0b85, 0x0b8a, - 0x0b8e, 0x0b90, - 0x0b92, 0x0b95, - 0x0b99, 0x0b9a, - 0x0b9c, 0x0b9c, - 0x0b9e, 0x0b9f, - 0x0ba3, 0x0ba4, - 0x0ba8, 0x0baa, - 0x0bae, 0x0bb9, - 0x0bbe, 0x0bc2, - 0x0bc6, 0x0bc8, - 0x0bca, 0x0bcd, - 0x0bd0, 0x0bd0, - 0x0bd7, 0x0bd7, - 0x0be6, 0x0bfa, - 0x0c00, 0x0c03, - 0x0c05, 0x0c0c, - 0x0c0e, 0x0c10, - 0x0c12, 0x0c28, - 0x0c2a, 0x0c39, - 0x0c3d, 0x0c44, - 0x0c46, 0x0c48, - 0x0c4a, 0x0c4d, - 0x0c55, 0x0c56, - 0x0c58, 0x0c5a, - 0x0c60, 0x0c63, - 0x0c66, 0x0c6f, - 0x0c78, 0x0c83, - 0x0c85, 0x0c8c, - 0x0c8e, 0x0c90, - 0x0c92, 0x0ca8, - 0x0caa, 0x0cb3, - 0x0cb5, 0x0cb9, - 0x0cbc, 0x0cc4, - 0x0cc6, 0x0cc8, - 0x0cca, 0x0ccd, - 0x0cd5, 0x0cd6, - 0x0cde, 0x0cde, - 0x0ce0, 0x0ce3, - 0x0ce6, 0x0cef, - 0x0cf1, 0x0cf2, - 0x0d01, 0x0d03, - 0x0d05, 0x0d0c, - 0x0d0e, 0x0d10, - 0x0d12, 0x0d3a, - 0x0d3d, 0x0d44, - 0x0d46, 0x0d48, - 0x0d4a, 0x0d4f, - 0x0d54, 0x0d63, - 0x0d66, 0x0d7f, - 0x0d82, 0x0d83, - 0x0d85, 0x0d96, - 0x0d9a, 0x0db1, - 0x0db3, 0x0dbb, - 0x0dbd, 0x0dbd, - 0x0dc0, 0x0dc6, - 0x0dca, 0x0dca, - 0x0dcf, 0x0dd4, - 0x0dd6, 0x0dd6, - 0x0dd8, 0x0ddf, - 0x0de6, 0x0def, - 0x0df2, 0x0df4, - 0x0e01, 0x0e3a, - 0x0e3f, 0x0e5b, - 0x0e81, 0x0e82, - 0x0e84, 0x0e84, - 0x0e87, 0x0e88, - 0x0e8a, 0x0e8a, - 0x0e8d, 0x0e8d, - 0x0e94, 0x0e97, - 0x0e99, 0x0e9f, - 0x0ea1, 0x0ea3, - 0x0ea5, 0x0ea5, - 0x0ea7, 0x0ea7, - 0x0eaa, 0x0eab, - 0x0ead, 0x0eb9, - 0x0ebb, 0x0ebd, - 0x0ec0, 0x0ec4, - 0x0ec6, 0x0ec6, - 0x0ec8, 0x0ecd, - 0x0ed0, 0x0ed9, - 0x0edc, 0x0edf, - 0x0f00, 0x0f47, - 0x0f49, 0x0f6c, - 0x0f71, 0x0f97, - 0x0f99, 0x0fbc, - 0x0fbe, 0x0fcc, - 0x0fce, 0x0fda, - 0x1000, 0x10c5, - 0x10c7, 0x10c7, - 0x10cd, 0x10cd, - 0x10d0, 0x1248, - 0x124a, 0x124d, - 0x1250, 0x1256, - 0x1258, 0x1258, - 0x125a, 0x125d, - 0x1260, 0x1288, - 0x128a, 0x128d, - 0x1290, 0x12b0, - 0x12b2, 0x12b5, - 0x12b8, 0x12be, - 0x12c0, 0x12c0, - 0x12c2, 0x12c5, - 0x12c8, 0x12d6, - 0x12d8, 0x1310, - 0x1312, 0x1315, - 0x1318, 0x135a, - 0x135d, 0x137c, - 0x1380, 0x1399, - 0x13a0, 0x13f5, - 0x13f8, 0x13fd, - 0x1400, 0x169c, - 0x16a0, 0x16f8, - 0x1700, 0x170c, - 0x170e, 0x1714, - 0x1720, 0x1736, - 0x1740, 0x1753, - 0x1760, 0x176c, - 0x176e, 0x1770, - 0x1772, 0x1773, - 0x1780, 0x17dd, - 0x17e0, 0x17e9, - 0x17f0, 0x17f9, - 0x1800, 0x180e, - 0x1810, 0x1819, - 0x1820, 0x1877, - 0x1880, 0x18aa, - 0x18b0, 0x18f5, - 0x1900, 0x191e, - 0x1920, 0x192b, - 0x1930, 0x193b, - 0x1940, 0x1940, - 0x1944, 0x196d, - 0x1970, 0x1974, - 0x1980, 0x19ab, - 0x19b0, 0x19c9, - 0x19d0, 0x19da, - 0x19de, 0x1a1b, - 0x1a1e, 0x1a5e, - 0x1a60, 0x1a7c, - 0x1a7f, 0x1a89, - 0x1a90, 0x1a99, - 0x1aa0, 0x1aad, - 0x1ab0, 0x1abe, - 0x1b00, 0x1b4b, - 0x1b50, 0x1b7c, - 0x1b80, 0x1bf3, - 0x1bfc, 0x1c37, - 0x1c3b, 0x1c49, - 0x1c4d, 0x1c88, - 0x1cc0, 0x1cc7, - 0x1cd0, 0x1cf6, - 0x1cf8, 0x1cf9, - 0x1d00, 0x1df5, - 0x1dfb, 0x1f15, - 0x1f18, 0x1f1d, - 0x1f20, 0x1f45, - 0x1f48, 0x1f4d, - 0x1f50, 0x1f57, - 0x1f59, 0x1f59, - 0x1f5b, 0x1f5b, - 0x1f5d, 0x1f5d, - 0x1f5f, 0x1f7d, - 0x1f80, 0x1fb4, - 0x1fb6, 0x1fc4, - 0x1fc6, 0x1fd3, - 0x1fd6, 0x1fdb, - 0x1fdd, 0x1fef, - 0x1ff2, 0x1ff4, - 0x1ff6, 0x1ffe, - 0x2000, 0x2027, - 0x202a, 0x2064, - 0x2066, 0x2071, - 0x2074, 0x208e, - 0x2090, 0x209c, - 0x20a0, 0x20be, - 0x20d0, 0x20f0, - 0x2100, 0x218b, - 0x2190, 0x23fe, - 0x2400, 0x2426, - 0x2440, 0x244a, - 0x2460, 0x2b73, - 0x2b76, 0x2b95, - 0x2b98, 0x2bb9, - 0x2bbd, 0x2bc8, - 0x2bca, 0x2bd1, - 0x2bec, 0x2bef, - 0x2c00, 0x2c2e, - 0x2c30, 0x2c5e, - 0x2c60, 0x2cf3, - 0x2cf9, 0x2d25, - 0x2d27, 0x2d27, - 0x2d2d, 0x2d2d, - 0x2d30, 0x2d67, - 0x2d6f, 0x2d70, - 0x2d7f, 0x2d96, - 0x2da0, 0x2da6, - 0x2da8, 0x2dae, - 0x2db0, 0x2db6, - 0x2db8, 0x2dbe, - 0x2dc0, 0x2dc6, - 0x2dc8, 0x2dce, - 0x2dd0, 0x2dd6, - 0x2dd8, 0x2dde, - 0x2de0, 0x2e44, - 0x2e80, 0x2e99, - 0x2e9b, 0x2ef3, - 0x2f00, 0x2fd5, - 0x2ff0, 0x2ffb, - 0x3000, 0x303f, - 0x3041, 0x3096, - 0x3099, 0x30ff, - 0x3105, 0x312d, - 0x3131, 0x318e, - 0x3190, 0x31ba, - 0x31c0, 0x31e3, - 0x31f0, 0x321e, - 0x3220, 0x32fe, - 0x3300, 0x4db5, - 0x4dc0, 0x9fd5, - 0xa000, 0xa48c, - 0xa490, 0xa4c6, - 0xa4d0, 0xa62b, - 0xa640, 0xa6f7, - 0xa700, 0xa7ae, - 0xa7b0, 0xa7b7, - 0xa7f7, 0xa82b, - 0xa830, 0xa839, - 0xa840, 0xa877, - 0xa880, 0xa8c5, - 0xa8ce, 0xa8d9, - 0xa8e0, 0xa8fd, - 0xa900, 0xa953, - 0xa95f, 0xa97c, - 0xa980, 0xa9cd, - 0xa9cf, 0xa9d9, - 0xa9de, 0xa9fe, - 0xaa00, 0xaa36, - 0xaa40, 0xaa4d, - 0xaa50, 0xaa59, - 0xaa5c, 0xaac2, - 0xaadb, 0xaaf6, - 0xab01, 0xab06, - 0xab09, 0xab0e, - 0xab11, 0xab16, - 0xab20, 0xab26, - 0xab28, 0xab2e, - 0xab30, 0xab65, - 0xab70, 0xabed, - 0xabf0, 0xabf9, - 0xac00, 0xd7a3, - 0xd7b0, 0xd7c6, - 0xd7cb, 0xd7fb, - 0xe000, 0xfa6d, - 0xfa70, 0xfad9, - 0xfb00, 0xfb06, - 0xfb13, 0xfb17, - 0xfb1d, 0xfb36, - 0xfb38, 0xfb3c, - 0xfb3e, 0xfb3e, - 0xfb40, 0xfb41, - 0xfb43, 0xfb44, - 0xfb46, 0xfbc1, - 0xfbd3, 0xfd3f, - 0xfd50, 0xfd8f, - 0xfd92, 0xfdc7, - 0xfdf0, 0xfdfd, - 0xfe00, 0xfe19, - 0xfe20, 0xfe52, - 0xfe54, 0xfe66, - 0xfe68, 0xfe6b, - 0xfe70, 0xfe74, - 0xfe76, 0xfefc, - 0xfeff, 0xfeff, - 0xff01, 0xffbe, - 0xffc2, 0xffc7, - 0xffca, 0xffcf, - 0xffd2, 0xffd7, - 0xffda, 0xffdc, - 0xffe0, 0xffe6, - 0xffe8, 0xffee, - 0xfff9, 0xfffd, - 0x10000, 0x1000b, - 0x1000d, 0x10026, - 0x10028, 0x1003a, - 0x1003c, 0x1003d, - 0x1003f, 0x1004d, - 0x10050, 0x1005d, - 0x10080, 0x100fa, - 0x10100, 0x10102, - 0x10107, 0x10133, - 0x10137, 0x1018e, - 0x10190, 0x1019b, - 0x101a0, 0x101a0, - 0x101d0, 0x101fd, - 0x10280, 0x1029c, - 0x102a0, 0x102d0, - 0x102e0, 0x102fb, - 0x10300, 0x10323, - 0x10330, 0x1034a, - 0x10350, 0x1037a, - 0x10380, 0x1039d, - 0x1039f, 0x103c3, - 0x103c8, 0x103d5, - 0x10400, 0x1049d, - 0x104a0, 0x104a9, - 0x104b0, 0x104d3, - 0x104d8, 0x104fb, - 0x10500, 0x10527, - 0x10530, 0x10563, - 0x1056f, 0x1056f, - 0x10600, 0x10736, - 0x10740, 0x10755, - 0x10760, 0x10767, - 0x10800, 0x10805, - 0x10808, 0x10808, - 0x1080a, 0x10835, - 0x10837, 0x10838, - 0x1083c, 0x1083c, - 0x1083f, 0x10855, - 0x10857, 0x1089e, - 0x108a7, 0x108af, - 0x108e0, 0x108f2, - 0x108f4, 0x108f5, - 0x108fb, 0x1091b, - 0x1091f, 0x10939, - 0x1093f, 0x1093f, - 0x10980, 0x109b7, - 0x109bc, 0x109cf, - 0x109d2, 0x10a03, - 0x10a05, 0x10a06, - 0x10a0c, 0x10a13, - 0x10a15, 0x10a17, - 0x10a19, 0x10a33, - 0x10a38, 0x10a3a, - 0x10a3f, 0x10a47, - 0x10a50, 0x10a58, - 0x10a60, 0x10a9f, - 0x10ac0, 0x10ae6, - 0x10aeb, 0x10af6, - 0x10b00, 0x10b35, - 0x10b39, 0x10b55, - 0x10b58, 0x10b72, - 0x10b78, 0x10b91, - 0x10b99, 0x10b9c, - 0x10ba9, 0x10baf, - 0x10c00, 0x10c48, - 0x10c80, 0x10cb2, - 0x10cc0, 0x10cf2, - 0x10cfa, 0x10cff, - 0x10e60, 0x10e7e, - 0x11000, 0x1104d, - 0x11052, 0x1106f, - 0x1107f, 0x110c1, - 0x110d0, 0x110e8, - 0x110f0, 0x110f9, - 0x11100, 0x11134, - 0x11136, 0x11143, - 0x11150, 0x11176, - 0x11180, 0x111cd, - 0x111d0, 0x111df, - 0x111e1, 0x111f4, - 0x11200, 0x11211, - 0x11213, 0x1123e, - 0x11280, 0x11286, - 0x11288, 0x11288, - 0x1128a, 0x1128d, - 0x1128f, 0x1129d, - 0x1129f, 0x112a9, - 0x112b0, 0x112ea, - 0x112f0, 0x112f9, - 0x11300, 0x11303, - 0x11305, 0x1130c, - 0x1130f, 0x11310, - 0x11313, 0x11328, - 0x1132a, 0x11330, - 0x11332, 0x11333, - 0x11335, 0x11339, - 0x1133c, 0x11344, - 0x11347, 0x11348, - 0x1134b, 0x1134d, - 0x11350, 0x11350, - 0x11357, 0x11357, - 0x1135d, 0x11363, - 0x11366, 0x1136c, - 0x11370, 0x11374, - 0x11400, 0x11459, - 0x1145b, 0x1145b, - 0x1145d, 0x1145d, - 0x11480, 0x114c7, - 0x114d0, 0x114d9, - 0x11580, 0x115b5, - 0x115b8, 0x115dd, - 0x11600, 0x11644, - 0x11650, 0x11659, - 0x11660, 0x1166c, - 0x11680, 0x116b7, - 0x116c0, 0x116c9, - 0x11700, 0x11719, - 0x1171d, 0x1172b, - 0x11730, 0x1173f, - 0x118a0, 0x118f2, - 0x118ff, 0x118ff, - 0x11ac0, 0x11af8, - 0x11c00, 0x11c08, - 0x11c0a, 0x11c36, - 0x11c38, 0x11c45, - 0x11c50, 0x11c6c, - 0x11c70, 0x11c8f, - 0x11c92, 0x11ca7, - 0x11ca9, 0x11cb6, - 0x12000, 0x12399, - 0x12400, 0x1246e, - 0x12470, 0x12474, - 0x12480, 0x12543, - 0x13000, 0x1342e, - 0x14400, 0x14646, - 0x16800, 0x16a38, - 0x16a40, 0x16a5e, - 0x16a60, 0x16a69, - 0x16a6e, 0x16a6f, - 0x16ad0, 0x16aed, - 0x16af0, 0x16af5, - 0x16b00, 0x16b45, - 0x16b50, 0x16b59, - 0x16b5b, 0x16b61, - 0x16b63, 0x16b77, - 0x16b7d, 0x16b8f, - 0x16f00, 0x16f44, - 0x16f50, 0x16f7e, - 0x16f8f, 0x16f9f, - 0x16fe0, 0x16fe0, - 0x17000, 0x187ec, - 0x18800, 0x18af2, - 0x1b000, 0x1b001, - 0x1bc00, 0x1bc6a, - 0x1bc70, 0x1bc7c, - 0x1bc80, 0x1bc88, - 0x1bc90, 0x1bc99, - 0x1bc9c, 0x1bca3, - 0x1d000, 0x1d0f5, - 0x1d100, 0x1d126, - 0x1d129, 0x1d1e8, - 0x1d200, 0x1d245, - 0x1d300, 0x1d356, - 0x1d360, 0x1d371, - 0x1d400, 0x1d454, - 0x1d456, 0x1d49c, - 0x1d49e, 0x1d49f, - 0x1d4a2, 0x1d4a2, - 0x1d4a5, 0x1d4a6, - 0x1d4a9, 0x1d4ac, - 0x1d4ae, 0x1d4b9, - 0x1d4bb, 0x1d4bb, - 0x1d4bd, 0x1d4c3, - 0x1d4c5, 0x1d505, - 0x1d507, 0x1d50a, - 0x1d50d, 0x1d514, - 0x1d516, 0x1d51c, - 0x1d51e, 0x1d539, - 0x1d53b, 0x1d53e, - 0x1d540, 0x1d544, - 0x1d546, 0x1d546, - 0x1d54a, 0x1d550, - 0x1d552, 0x1d6a5, - 0x1d6a8, 0x1d7cb, - 0x1d7ce, 0x1da8b, - 0x1da9b, 0x1da9f, - 0x1daa1, 0x1daaf, - 0x1e000, 0x1e006, - 0x1e008, 0x1e018, - 0x1e01b, 0x1e021, - 0x1e023, 0x1e024, - 0x1e026, 0x1e02a, - 0x1e800, 0x1e8c4, - 0x1e8c7, 0x1e8d6, - 0x1e900, 0x1e94a, - 0x1e950, 0x1e959, - 0x1e95e, 0x1e95f, - 0x1ee00, 0x1ee03, - 0x1ee05, 0x1ee1f, - 0x1ee21, 0x1ee22, - 0x1ee24, 0x1ee24, - 0x1ee27, 0x1ee27, - 0x1ee29, 0x1ee32, - 0x1ee34, 0x1ee37, - 0x1ee39, 0x1ee39, - 0x1ee3b, 0x1ee3b, - 0x1ee42, 0x1ee42, - 0x1ee47, 0x1ee47, - 0x1ee49, 0x1ee49, - 0x1ee4b, 0x1ee4b, - 0x1ee4d, 0x1ee4f, - 0x1ee51, 0x1ee52, - 0x1ee54, 0x1ee54, - 0x1ee57, 0x1ee57, - 0x1ee59, 0x1ee59, - 0x1ee5b, 0x1ee5b, - 0x1ee5d, 0x1ee5d, - 0x1ee5f, 0x1ee5f, - 0x1ee61, 0x1ee62, - 0x1ee64, 0x1ee64, - 0x1ee67, 0x1ee6a, - 0x1ee6c, 0x1ee72, - 0x1ee74, 0x1ee77, - 0x1ee79, 0x1ee7c, - 0x1ee7e, 0x1ee7e, - 0x1ee80, 0x1ee89, - 0x1ee8b, 0x1ee9b, - 0x1eea1, 0x1eea3, - 0x1eea5, 0x1eea9, - 0x1eeab, 0x1eebb, - 0x1eef0, 0x1eef1, - 0x1f000, 0x1f02b, - 0x1f030, 0x1f093, - 0x1f0a0, 0x1f0ae, - 0x1f0b1, 0x1f0bf, - 0x1f0c1, 0x1f0cf, - 0x1f0d1, 0x1f0f5, - 0x1f100, 0x1f10c, - 0x1f110, 0x1f12e, - 0x1f130, 0x1f16b, - 0x1f170, 0x1f1ac, - 0x1f1e6, 0x1f202, - 0x1f210, 0x1f23b, - 0x1f240, 0x1f248, - 0x1f250, 0x1f251, - 0x1f300, 0x1f6d2, - 0x1f6e0, 0x1f6ec, - 0x1f6f0, 0x1f6f6, - 0x1f700, 0x1f773, - 0x1f780, 0x1f7d4, - 0x1f800, 0x1f80b, - 0x1f810, 0x1f847, - 0x1f850, 0x1f859, - 0x1f860, 0x1f887, - 0x1f890, 0x1f8ad, - 0x1f910, 0x1f91e, - 0x1f920, 0x1f927, - 0x1f930, 0x1f930, - 0x1f933, 0x1f93e, - 0x1f940, 0x1f94b, - 0x1f950, 0x1f95e, - 0x1f980, 0x1f991, - 0x1f9c0, 0x1f9c0, - 0x20000, 0x2a6d6, - 0x2a700, 0x2b734, - 0x2b740, 0x2b81d, - 0x2b820, 0x2cea1, - 0x2f800, 0x2fa1d, - 0xe0001, 0xe0001, - 0xe0020, 0xe007f, - 0xe0100, 0xe01ef, - 0xf0000, 0xffffd, - 0x100000, 0x10fffd, -}; /* CR_Print */ - -/* 'XPosixPunct': [[:Punct:]] */ -static const OnigCodePoint CR_XPosixPunct[] = { - 163, - 0x0021, 0x002f, - 0x003a, 0x0040, - 0x005b, 0x0060, - 0x007b, 0x007e, - 0x00a1, 0x00a1, - 0x00a7, 0x00a7, - 0x00ab, 0x00ab, - 0x00b6, 0x00b7, - 0x00bb, 0x00bb, - 0x00bf, 0x00bf, - 0x037e, 0x037e, - 0x0387, 0x0387, - 0x055a, 0x055f, - 0x0589, 0x058a, - 0x05be, 0x05be, - 0x05c0, 0x05c0, - 0x05c3, 0x05c3, - 0x05c6, 0x05c6, - 0x05f3, 0x05f4, - 0x0609, 0x060a, - 0x060c, 0x060d, - 0x061b, 0x061b, - 0x061e, 0x061f, - 0x066a, 0x066d, - 0x06d4, 0x06d4, - 0x0700, 0x070d, - 0x07f7, 0x07f9, - 0x0830, 0x083e, - 0x085e, 0x085e, - 0x0964, 0x0965, - 0x0970, 0x0970, - 0x0af0, 0x0af0, - 0x0df4, 0x0df4, - 0x0e4f, 0x0e4f, - 0x0e5a, 0x0e5b, - 0x0f04, 0x0f12, - 0x0f14, 0x0f14, - 0x0f3a, 0x0f3d, - 0x0f85, 0x0f85, - 0x0fd0, 0x0fd4, - 0x0fd9, 0x0fda, - 0x104a, 0x104f, - 0x10fb, 0x10fb, - 0x1360, 0x1368, - 0x1400, 0x1400, - 0x166d, 0x166e, - 0x169b, 0x169c, - 0x16eb, 0x16ed, - 0x1735, 0x1736, - 0x17d4, 0x17d6, - 0x17d8, 0x17da, - 0x1800, 0x180a, - 0x1944, 0x1945, - 0x1a1e, 0x1a1f, - 0x1aa0, 0x1aa6, - 0x1aa8, 0x1aad, - 0x1b5a, 0x1b60, - 0x1bfc, 0x1bff, - 0x1c3b, 0x1c3f, - 0x1c7e, 0x1c7f, - 0x1cc0, 0x1cc7, - 0x1cd3, 0x1cd3, - 0x2010, 0x2027, - 0x2030, 0x2043, - 0x2045, 0x2051, - 0x2053, 0x205e, - 0x207d, 0x207e, - 0x208d, 0x208e, - 0x2308, 0x230b, - 0x2329, 0x232a, - 0x2768, 0x2775, - 0x27c5, 0x27c6, - 0x27e6, 0x27ef, - 0x2983, 0x2998, - 0x29d8, 0x29db, - 0x29fc, 0x29fd, - 0x2cf9, 0x2cfc, - 0x2cfe, 0x2cff, - 0x2d70, 0x2d70, - 0x2e00, 0x2e2e, - 0x2e30, 0x2e44, - 0x3001, 0x3003, - 0x3008, 0x3011, - 0x3014, 0x301f, - 0x3030, 0x3030, - 0x303d, 0x303d, - 0x30a0, 0x30a0, - 0x30fb, 0x30fb, - 0xa4fe, 0xa4ff, - 0xa60d, 0xa60f, - 0xa673, 0xa673, - 0xa67e, 0xa67e, - 0xa6f2, 0xa6f7, - 0xa874, 0xa877, - 0xa8ce, 0xa8cf, - 0xa8f8, 0xa8fa, - 0xa8fc, 0xa8fc, - 0xa92e, 0xa92f, - 0xa95f, 0xa95f, - 0xa9c1, 0xa9cd, - 0xa9de, 0xa9df, - 0xaa5c, 0xaa5f, - 0xaade, 0xaadf, - 0xaaf0, 0xaaf1, - 0xabeb, 0xabeb, - 0xfd3e, 0xfd3f, - 0xfe10, 0xfe19, - 0xfe30, 0xfe52, - 0xfe54, 0xfe61, - 0xfe63, 0xfe63, - 0xfe68, 0xfe68, - 0xfe6a, 0xfe6b, - 0xff01, 0xff03, - 0xff05, 0xff0a, - 0xff0c, 0xff0f, - 0xff1a, 0xff1b, - 0xff1f, 0xff20, - 0xff3b, 0xff3d, - 0xff3f, 0xff3f, - 0xff5b, 0xff5b, - 0xff5d, 0xff5d, - 0xff5f, 0xff65, - 0x10100, 0x10102, - 0x1039f, 0x1039f, - 0x103d0, 0x103d0, - 0x1056f, 0x1056f, - 0x10857, 0x10857, - 0x1091f, 0x1091f, - 0x1093f, 0x1093f, - 0x10a50, 0x10a58, - 0x10a7f, 0x10a7f, - 0x10af0, 0x10af6, - 0x10b39, 0x10b3f, - 0x10b99, 0x10b9c, - 0x11047, 0x1104d, - 0x110bb, 0x110bc, - 0x110be, 0x110c1, - 0x11140, 0x11143, - 0x11174, 0x11175, - 0x111c5, 0x111c9, - 0x111cd, 0x111cd, - 0x111db, 0x111db, - 0x111dd, 0x111df, - 0x11238, 0x1123d, - 0x112a9, 0x112a9, - 0x1144b, 0x1144f, - 0x1145b, 0x1145b, - 0x1145d, 0x1145d, - 0x114c6, 0x114c6, - 0x115c1, 0x115d7, - 0x11641, 0x11643, - 0x11660, 0x1166c, - 0x1173c, 0x1173e, - 0x11c41, 0x11c45, - 0x11c70, 0x11c71, - 0x12470, 0x12474, - 0x16a6e, 0x16a6f, - 0x16af5, 0x16af5, - 0x16b37, 0x16b3b, - 0x16b44, 0x16b44, - 0x1bc9f, 0x1bc9f, - 0x1da87, 0x1da8b, - 0x1e95e, 0x1e95f, -}; /* CR_XPosixPunct */ - -/* 'Space': [[:Space:]] */ -static const OnigCodePoint CR_Space[] = { - 10, - 0x0009, 0x000d, - 0x0020, 0x0020, - 0x0085, 0x0085, - 0x00a0, 0x00a0, - 0x1680, 0x1680, - 0x2000, 0x200a, - 0x2028, 0x2029, - 0x202f, 0x202f, - 0x205f, 0x205f, - 0x3000, 0x3000, -}; /* CR_Space */ - -/* 'Upper': [[:Upper:]] */ -static const OnigCodePoint CR_Upper[] = { - 632, - 0x0041, 0x005a, - 0x00c0, 0x00d6, - 0x00d8, 0x00de, - 0x0100, 0x0100, - 0x0102, 0x0102, - 0x0104, 0x0104, - 0x0106, 0x0106, - 0x0108, 0x0108, - 0x010a, 0x010a, - 0x010c, 0x010c, - 0x010e, 0x010e, - 0x0110, 0x0110, - 0x0112, 0x0112, - 0x0114, 0x0114, - 0x0116, 0x0116, - 0x0118, 0x0118, - 0x011a, 0x011a, - 0x011c, 0x011c, - 0x011e, 0x011e, - 0x0120, 0x0120, - 0x0122, 0x0122, - 0x0124, 0x0124, - 0x0126, 0x0126, - 0x0128, 0x0128, - 0x012a, 0x012a, - 0x012c, 0x012c, - 0x012e, 0x012e, - 0x0130, 0x0130, - 0x0132, 0x0132, - 0x0134, 0x0134, - 0x0136, 0x0136, - 0x0139, 0x0139, - 0x013b, 0x013b, - 0x013d, 0x013d, - 0x013f, 0x013f, - 0x0141, 0x0141, - 0x0143, 0x0143, - 0x0145, 0x0145, - 0x0147, 0x0147, - 0x014a, 0x014a, - 0x014c, 0x014c, - 0x014e, 0x014e, - 0x0150, 0x0150, - 0x0152, 0x0152, - 0x0154, 0x0154, - 0x0156, 0x0156, - 0x0158, 0x0158, - 0x015a, 0x015a, - 0x015c, 0x015c, - 0x015e, 0x015e, - 0x0160, 0x0160, - 0x0162, 0x0162, - 0x0164, 0x0164, - 0x0166, 0x0166, - 0x0168, 0x0168, - 0x016a, 0x016a, - 0x016c, 0x016c, - 0x016e, 0x016e, - 0x0170, 0x0170, - 0x0172, 0x0172, - 0x0174, 0x0174, - 0x0176, 0x0176, - 0x0178, 0x0179, - 0x017b, 0x017b, - 0x017d, 0x017d, - 0x0181, 0x0182, - 0x0184, 0x0184, - 0x0186, 0x0187, - 0x0189, 0x018b, - 0x018e, 0x0191, - 0x0193, 0x0194, - 0x0196, 0x0198, - 0x019c, 0x019d, - 0x019f, 0x01a0, - 0x01a2, 0x01a2, - 0x01a4, 0x01a4, - 0x01a6, 0x01a7, - 0x01a9, 0x01a9, - 0x01ac, 0x01ac, - 0x01ae, 0x01af, - 0x01b1, 0x01b3, - 0x01b5, 0x01b5, - 0x01b7, 0x01b8, - 0x01bc, 0x01bc, - 0x01c4, 0x01c4, - 0x01c7, 0x01c7, - 0x01ca, 0x01ca, - 0x01cd, 0x01cd, - 0x01cf, 0x01cf, - 0x01d1, 0x01d1, - 0x01d3, 0x01d3, - 0x01d5, 0x01d5, - 0x01d7, 0x01d7, - 0x01d9, 0x01d9, - 0x01db, 0x01db, - 0x01de, 0x01de, - 0x01e0, 0x01e0, - 0x01e2, 0x01e2, - 0x01e4, 0x01e4, - 0x01e6, 0x01e6, - 0x01e8, 0x01e8, - 0x01ea, 0x01ea, - 0x01ec, 0x01ec, - 0x01ee, 0x01ee, - 0x01f1, 0x01f1, - 0x01f4, 0x01f4, - 0x01f6, 0x01f8, - 0x01fa, 0x01fa, - 0x01fc, 0x01fc, - 0x01fe, 0x01fe, - 0x0200, 0x0200, - 0x0202, 0x0202, - 0x0204, 0x0204, - 0x0206, 0x0206, - 0x0208, 0x0208, - 0x020a, 0x020a, - 0x020c, 0x020c, - 0x020e, 0x020e, - 0x0210, 0x0210, - 0x0212, 0x0212, - 0x0214, 0x0214, - 0x0216, 0x0216, - 0x0218, 0x0218, - 0x021a, 0x021a, - 0x021c, 0x021c, - 0x021e, 0x021e, - 0x0220, 0x0220, - 0x0222, 0x0222, - 0x0224, 0x0224, - 0x0226, 0x0226, - 0x0228, 0x0228, - 0x022a, 0x022a, - 0x022c, 0x022c, - 0x022e, 0x022e, - 0x0230, 0x0230, - 0x0232, 0x0232, - 0x023a, 0x023b, - 0x023d, 0x023e, - 0x0241, 0x0241, - 0x0243, 0x0246, - 0x0248, 0x0248, - 0x024a, 0x024a, - 0x024c, 0x024c, - 0x024e, 0x024e, - 0x0370, 0x0370, - 0x0372, 0x0372, - 0x0376, 0x0376, - 0x037f, 0x037f, - 0x0386, 0x0386, - 0x0388, 0x038a, - 0x038c, 0x038c, - 0x038e, 0x038f, - 0x0391, 0x03a1, - 0x03a3, 0x03ab, - 0x03cf, 0x03cf, - 0x03d2, 0x03d4, - 0x03d8, 0x03d8, - 0x03da, 0x03da, - 0x03dc, 0x03dc, - 0x03de, 0x03de, - 0x03e0, 0x03e0, - 0x03e2, 0x03e2, - 0x03e4, 0x03e4, - 0x03e6, 0x03e6, - 0x03e8, 0x03e8, - 0x03ea, 0x03ea, - 0x03ec, 0x03ec, - 0x03ee, 0x03ee, - 0x03f4, 0x03f4, - 0x03f7, 0x03f7, - 0x03f9, 0x03fa, - 0x03fd, 0x042f, - 0x0460, 0x0460, - 0x0462, 0x0462, - 0x0464, 0x0464, - 0x0466, 0x0466, - 0x0468, 0x0468, - 0x046a, 0x046a, - 0x046c, 0x046c, - 0x046e, 0x046e, - 0x0470, 0x0470, - 0x0472, 0x0472, - 0x0474, 0x0474, - 0x0476, 0x0476, - 0x0478, 0x0478, - 0x047a, 0x047a, - 0x047c, 0x047c, - 0x047e, 0x047e, - 0x0480, 0x0480, - 0x048a, 0x048a, - 0x048c, 0x048c, - 0x048e, 0x048e, - 0x0490, 0x0490, - 0x0492, 0x0492, - 0x0494, 0x0494, - 0x0496, 0x0496, - 0x0498, 0x0498, - 0x049a, 0x049a, - 0x049c, 0x049c, - 0x049e, 0x049e, - 0x04a0, 0x04a0, - 0x04a2, 0x04a2, - 0x04a4, 0x04a4, - 0x04a6, 0x04a6, - 0x04a8, 0x04a8, - 0x04aa, 0x04aa, - 0x04ac, 0x04ac, - 0x04ae, 0x04ae, - 0x04b0, 0x04b0, - 0x04b2, 0x04b2, - 0x04b4, 0x04b4, - 0x04b6, 0x04b6, - 0x04b8, 0x04b8, - 0x04ba, 0x04ba, - 0x04bc, 0x04bc, - 0x04be, 0x04be, - 0x04c0, 0x04c1, - 0x04c3, 0x04c3, - 0x04c5, 0x04c5, - 0x04c7, 0x04c7, - 0x04c9, 0x04c9, - 0x04cb, 0x04cb, - 0x04cd, 0x04cd, - 0x04d0, 0x04d0, - 0x04d2, 0x04d2, - 0x04d4, 0x04d4, - 0x04d6, 0x04d6, - 0x04d8, 0x04d8, - 0x04da, 0x04da, - 0x04dc, 0x04dc, - 0x04de, 0x04de, - 0x04e0, 0x04e0, - 0x04e2, 0x04e2, - 0x04e4, 0x04e4, - 0x04e6, 0x04e6, - 0x04e8, 0x04e8, - 0x04ea, 0x04ea, - 0x04ec, 0x04ec, - 0x04ee, 0x04ee, - 0x04f0, 0x04f0, - 0x04f2, 0x04f2, - 0x04f4, 0x04f4, - 0x04f6, 0x04f6, - 0x04f8, 0x04f8, - 0x04fa, 0x04fa, - 0x04fc, 0x04fc, - 0x04fe, 0x04fe, - 0x0500, 0x0500, - 0x0502, 0x0502, - 0x0504, 0x0504, - 0x0506, 0x0506, - 0x0508, 0x0508, - 0x050a, 0x050a, - 0x050c, 0x050c, - 0x050e, 0x050e, - 0x0510, 0x0510, - 0x0512, 0x0512, - 0x0514, 0x0514, - 0x0516, 0x0516, - 0x0518, 0x0518, - 0x051a, 0x051a, - 0x051c, 0x051c, - 0x051e, 0x051e, - 0x0520, 0x0520, - 0x0522, 0x0522, - 0x0524, 0x0524, - 0x0526, 0x0526, - 0x0528, 0x0528, - 0x052a, 0x052a, - 0x052c, 0x052c, - 0x052e, 0x052e, - 0x0531, 0x0556, - 0x10a0, 0x10c5, - 0x10c7, 0x10c7, - 0x10cd, 0x10cd, - 0x13a0, 0x13f5, - 0x1e00, 0x1e00, - 0x1e02, 0x1e02, - 0x1e04, 0x1e04, - 0x1e06, 0x1e06, - 0x1e08, 0x1e08, - 0x1e0a, 0x1e0a, - 0x1e0c, 0x1e0c, - 0x1e0e, 0x1e0e, - 0x1e10, 0x1e10, - 0x1e12, 0x1e12, - 0x1e14, 0x1e14, - 0x1e16, 0x1e16, - 0x1e18, 0x1e18, - 0x1e1a, 0x1e1a, - 0x1e1c, 0x1e1c, - 0x1e1e, 0x1e1e, - 0x1e20, 0x1e20, - 0x1e22, 0x1e22, - 0x1e24, 0x1e24, - 0x1e26, 0x1e26, - 0x1e28, 0x1e28, - 0x1e2a, 0x1e2a, - 0x1e2c, 0x1e2c, - 0x1e2e, 0x1e2e, - 0x1e30, 0x1e30, - 0x1e32, 0x1e32, - 0x1e34, 0x1e34, - 0x1e36, 0x1e36, - 0x1e38, 0x1e38, - 0x1e3a, 0x1e3a, - 0x1e3c, 0x1e3c, - 0x1e3e, 0x1e3e, - 0x1e40, 0x1e40, - 0x1e42, 0x1e42, - 0x1e44, 0x1e44, - 0x1e46, 0x1e46, - 0x1e48, 0x1e48, - 0x1e4a, 0x1e4a, - 0x1e4c, 0x1e4c, - 0x1e4e, 0x1e4e, - 0x1e50, 0x1e50, - 0x1e52, 0x1e52, - 0x1e54, 0x1e54, - 0x1e56, 0x1e56, - 0x1e58, 0x1e58, - 0x1e5a, 0x1e5a, - 0x1e5c, 0x1e5c, - 0x1e5e, 0x1e5e, - 0x1e60, 0x1e60, - 0x1e62, 0x1e62, - 0x1e64, 0x1e64, - 0x1e66, 0x1e66, - 0x1e68, 0x1e68, - 0x1e6a, 0x1e6a, - 0x1e6c, 0x1e6c, - 0x1e6e, 0x1e6e, - 0x1e70, 0x1e70, - 0x1e72, 0x1e72, - 0x1e74, 0x1e74, - 0x1e76, 0x1e76, - 0x1e78, 0x1e78, - 0x1e7a, 0x1e7a, - 0x1e7c, 0x1e7c, - 0x1e7e, 0x1e7e, - 0x1e80, 0x1e80, - 0x1e82, 0x1e82, - 0x1e84, 0x1e84, - 0x1e86, 0x1e86, - 0x1e88, 0x1e88, - 0x1e8a, 0x1e8a, - 0x1e8c, 0x1e8c, - 0x1e8e, 0x1e8e, - 0x1e90, 0x1e90, - 0x1e92, 0x1e92, - 0x1e94, 0x1e94, - 0x1e9e, 0x1e9e, - 0x1ea0, 0x1ea0, - 0x1ea2, 0x1ea2, - 0x1ea4, 0x1ea4, - 0x1ea6, 0x1ea6, - 0x1ea8, 0x1ea8, - 0x1eaa, 0x1eaa, - 0x1eac, 0x1eac, - 0x1eae, 0x1eae, - 0x1eb0, 0x1eb0, - 0x1eb2, 0x1eb2, - 0x1eb4, 0x1eb4, - 0x1eb6, 0x1eb6, - 0x1eb8, 0x1eb8, - 0x1eba, 0x1eba, - 0x1ebc, 0x1ebc, - 0x1ebe, 0x1ebe, - 0x1ec0, 0x1ec0, - 0x1ec2, 0x1ec2, - 0x1ec4, 0x1ec4, - 0x1ec6, 0x1ec6, - 0x1ec8, 0x1ec8, - 0x1eca, 0x1eca, - 0x1ecc, 0x1ecc, - 0x1ece, 0x1ece, - 0x1ed0, 0x1ed0, - 0x1ed2, 0x1ed2, - 0x1ed4, 0x1ed4, - 0x1ed6, 0x1ed6, - 0x1ed8, 0x1ed8, - 0x1eda, 0x1eda, - 0x1edc, 0x1edc, - 0x1ede, 0x1ede, - 0x1ee0, 0x1ee0, - 0x1ee2, 0x1ee2, - 0x1ee4, 0x1ee4, - 0x1ee6, 0x1ee6, - 0x1ee8, 0x1ee8, - 0x1eea, 0x1eea, - 0x1eec, 0x1eec, - 0x1eee, 0x1eee, - 0x1ef0, 0x1ef0, - 0x1ef2, 0x1ef2, - 0x1ef4, 0x1ef4, - 0x1ef6, 0x1ef6, - 0x1ef8, 0x1ef8, - 0x1efa, 0x1efa, - 0x1efc, 0x1efc, - 0x1efe, 0x1efe, - 0x1f08, 0x1f0f, - 0x1f18, 0x1f1d, - 0x1f28, 0x1f2f, - 0x1f38, 0x1f3f, - 0x1f48, 0x1f4d, - 0x1f59, 0x1f59, - 0x1f5b, 0x1f5b, - 0x1f5d, 0x1f5d, - 0x1f5f, 0x1f5f, - 0x1f68, 0x1f6f, - 0x1fb8, 0x1fbb, - 0x1fc8, 0x1fcb, - 0x1fd8, 0x1fdb, - 0x1fe8, 0x1fec, - 0x1ff8, 0x1ffb, - 0x2102, 0x2102, - 0x2107, 0x2107, - 0x210b, 0x210d, - 0x2110, 0x2112, - 0x2115, 0x2115, - 0x2119, 0x211d, - 0x2124, 0x2124, - 0x2126, 0x2126, - 0x2128, 0x2128, - 0x212a, 0x212d, - 0x2130, 0x2133, - 0x213e, 0x213f, - 0x2145, 0x2145, - 0x2160, 0x216f, - 0x2183, 0x2183, - 0x24b6, 0x24cf, - 0x2c00, 0x2c2e, - 0x2c60, 0x2c60, - 0x2c62, 0x2c64, - 0x2c67, 0x2c67, - 0x2c69, 0x2c69, - 0x2c6b, 0x2c6b, - 0x2c6d, 0x2c70, - 0x2c72, 0x2c72, - 0x2c75, 0x2c75, - 0x2c7e, 0x2c80, - 0x2c82, 0x2c82, - 0x2c84, 0x2c84, - 0x2c86, 0x2c86, - 0x2c88, 0x2c88, - 0x2c8a, 0x2c8a, - 0x2c8c, 0x2c8c, - 0x2c8e, 0x2c8e, - 0x2c90, 0x2c90, - 0x2c92, 0x2c92, - 0x2c94, 0x2c94, - 0x2c96, 0x2c96, - 0x2c98, 0x2c98, - 0x2c9a, 0x2c9a, - 0x2c9c, 0x2c9c, - 0x2c9e, 0x2c9e, - 0x2ca0, 0x2ca0, - 0x2ca2, 0x2ca2, - 0x2ca4, 0x2ca4, - 0x2ca6, 0x2ca6, - 0x2ca8, 0x2ca8, - 0x2caa, 0x2caa, - 0x2cac, 0x2cac, - 0x2cae, 0x2cae, - 0x2cb0, 0x2cb0, - 0x2cb2, 0x2cb2, - 0x2cb4, 0x2cb4, - 0x2cb6, 0x2cb6, - 0x2cb8, 0x2cb8, - 0x2cba, 0x2cba, - 0x2cbc, 0x2cbc, - 0x2cbe, 0x2cbe, - 0x2cc0, 0x2cc0, - 0x2cc2, 0x2cc2, - 0x2cc4, 0x2cc4, - 0x2cc6, 0x2cc6, - 0x2cc8, 0x2cc8, - 0x2cca, 0x2cca, - 0x2ccc, 0x2ccc, - 0x2cce, 0x2cce, - 0x2cd0, 0x2cd0, - 0x2cd2, 0x2cd2, - 0x2cd4, 0x2cd4, - 0x2cd6, 0x2cd6, - 0x2cd8, 0x2cd8, - 0x2cda, 0x2cda, - 0x2cdc, 0x2cdc, - 0x2cde, 0x2cde, - 0x2ce0, 0x2ce0, - 0x2ce2, 0x2ce2, - 0x2ceb, 0x2ceb, - 0x2ced, 0x2ced, - 0x2cf2, 0x2cf2, - 0xa640, 0xa640, - 0xa642, 0xa642, - 0xa644, 0xa644, - 0xa646, 0xa646, - 0xa648, 0xa648, - 0xa64a, 0xa64a, - 0xa64c, 0xa64c, - 0xa64e, 0xa64e, - 0xa650, 0xa650, - 0xa652, 0xa652, - 0xa654, 0xa654, - 0xa656, 0xa656, - 0xa658, 0xa658, - 0xa65a, 0xa65a, - 0xa65c, 0xa65c, - 0xa65e, 0xa65e, - 0xa660, 0xa660, - 0xa662, 0xa662, - 0xa664, 0xa664, - 0xa666, 0xa666, - 0xa668, 0xa668, - 0xa66a, 0xa66a, - 0xa66c, 0xa66c, - 0xa680, 0xa680, - 0xa682, 0xa682, - 0xa684, 0xa684, - 0xa686, 0xa686, - 0xa688, 0xa688, - 0xa68a, 0xa68a, - 0xa68c, 0xa68c, - 0xa68e, 0xa68e, - 0xa690, 0xa690, - 0xa692, 0xa692, - 0xa694, 0xa694, - 0xa696, 0xa696, - 0xa698, 0xa698, - 0xa69a, 0xa69a, - 0xa722, 0xa722, - 0xa724, 0xa724, - 0xa726, 0xa726, - 0xa728, 0xa728, - 0xa72a, 0xa72a, - 0xa72c, 0xa72c, - 0xa72e, 0xa72e, - 0xa732, 0xa732, - 0xa734, 0xa734, - 0xa736, 0xa736, - 0xa738, 0xa738, - 0xa73a, 0xa73a, - 0xa73c, 0xa73c, - 0xa73e, 0xa73e, - 0xa740, 0xa740, - 0xa742, 0xa742, - 0xa744, 0xa744, - 0xa746, 0xa746, - 0xa748, 0xa748, - 0xa74a, 0xa74a, - 0xa74c, 0xa74c, - 0xa74e, 0xa74e, - 0xa750, 0xa750, - 0xa752, 0xa752, - 0xa754, 0xa754, - 0xa756, 0xa756, - 0xa758, 0xa758, - 0xa75a, 0xa75a, - 0xa75c, 0xa75c, - 0xa75e, 0xa75e, - 0xa760, 0xa760, - 0xa762, 0xa762, - 0xa764, 0xa764, - 0xa766, 0xa766, - 0xa768, 0xa768, - 0xa76a, 0xa76a, - 0xa76c, 0xa76c, - 0xa76e, 0xa76e, - 0xa779, 0xa779, - 0xa77b, 0xa77b, - 0xa77d, 0xa77e, - 0xa780, 0xa780, - 0xa782, 0xa782, - 0xa784, 0xa784, - 0xa786, 0xa786, - 0xa78b, 0xa78b, - 0xa78d, 0xa78d, - 0xa790, 0xa790, - 0xa792, 0xa792, - 0xa796, 0xa796, - 0xa798, 0xa798, - 0xa79a, 0xa79a, - 0xa79c, 0xa79c, - 0xa79e, 0xa79e, - 0xa7a0, 0xa7a0, - 0xa7a2, 0xa7a2, - 0xa7a4, 0xa7a4, - 0xa7a6, 0xa7a6, - 0xa7a8, 0xa7a8, - 0xa7aa, 0xa7ae, - 0xa7b0, 0xa7b4, - 0xa7b6, 0xa7b6, - 0xff21, 0xff3a, - 0x10400, 0x10427, - 0x104b0, 0x104d3, - 0x10c80, 0x10cb2, - 0x118a0, 0x118bf, - 0x1d400, 0x1d419, - 0x1d434, 0x1d44d, - 0x1d468, 0x1d481, - 0x1d49c, 0x1d49c, - 0x1d49e, 0x1d49f, - 0x1d4a2, 0x1d4a2, - 0x1d4a5, 0x1d4a6, - 0x1d4a9, 0x1d4ac, - 0x1d4ae, 0x1d4b5, - 0x1d4d0, 0x1d4e9, - 0x1d504, 0x1d505, - 0x1d507, 0x1d50a, - 0x1d50d, 0x1d514, - 0x1d516, 0x1d51c, - 0x1d538, 0x1d539, - 0x1d53b, 0x1d53e, - 0x1d540, 0x1d544, - 0x1d546, 0x1d546, - 0x1d54a, 0x1d550, - 0x1d56c, 0x1d585, - 0x1d5a0, 0x1d5b9, - 0x1d5d4, 0x1d5ed, - 0x1d608, 0x1d621, - 0x1d63c, 0x1d655, - 0x1d670, 0x1d689, - 0x1d6a8, 0x1d6c0, - 0x1d6e2, 0x1d6fa, - 0x1d71c, 0x1d734, - 0x1d756, 0x1d76e, - 0x1d790, 0x1d7a8, - 0x1d7ca, 0x1d7ca, - 0x1e900, 0x1e921, - 0x1f130, 0x1f149, - 0x1f150, 0x1f169, - 0x1f170, 0x1f189, -}; /* CR_Upper */ - -/* 'XDigit': [[:XDigit:]] */ -static const OnigCodePoint CR_XDigit[] = { - 3, - 0x0030, 0x0039, - 0x0041, 0x0046, - 0x0061, 0x0066, -}; /* CR_XDigit */ - -/* 'Word': [[:Word:]] */ -static const OnigCodePoint CR_Word[] = { - 679, - 0x0030, 0x0039, - 0x0041, 0x005a, - 0x005f, 0x005f, - 0x0061, 0x007a, - 0x00aa, 0x00aa, - 0x00b5, 0x00b5, - 0x00ba, 0x00ba, - 0x00c0, 0x00d6, - 0x00d8, 0x00f6, - 0x00f8, 0x02c1, - 0x02c6, 0x02d1, - 0x02e0, 0x02e4, - 0x02ec, 0x02ec, - 0x02ee, 0x02ee, - 0x0300, 0x0374, - 0x0376, 0x0377, - 0x037a, 0x037d, - 0x037f, 0x037f, - 0x0386, 0x0386, - 0x0388, 0x038a, - 0x038c, 0x038c, - 0x038e, 0x03a1, - 0x03a3, 0x03f5, - 0x03f7, 0x0481, - 0x0483, 0x052f, - 0x0531, 0x0556, - 0x0559, 0x0559, - 0x0561, 0x0587, - 0x0591, 0x05bd, - 0x05bf, 0x05bf, - 0x05c1, 0x05c2, - 0x05c4, 0x05c5, - 0x05c7, 0x05c7, - 0x05d0, 0x05ea, - 0x05f0, 0x05f2, - 0x0610, 0x061a, - 0x0620, 0x0669, - 0x066e, 0x06d3, - 0x06d5, 0x06dc, - 0x06df, 0x06e8, - 0x06ea, 0x06fc, - 0x06ff, 0x06ff, - 0x0710, 0x074a, - 0x074d, 0x07b1, - 0x07c0, 0x07f5, - 0x07fa, 0x07fa, - 0x0800, 0x082d, - 0x0840, 0x085b, - 0x08a0, 0x08b4, - 0x08b6, 0x08bd, - 0x08d4, 0x08e1, - 0x08e3, 0x0963, - 0x0966, 0x096f, - 0x0971, 0x0983, - 0x0985, 0x098c, - 0x098f, 0x0990, - 0x0993, 0x09a8, - 0x09aa, 0x09b0, - 0x09b2, 0x09b2, - 0x09b6, 0x09b9, - 0x09bc, 0x09c4, - 0x09c7, 0x09c8, - 0x09cb, 0x09ce, - 0x09d7, 0x09d7, - 0x09dc, 0x09dd, - 0x09df, 0x09e3, - 0x09e6, 0x09f1, - 0x0a01, 0x0a03, - 0x0a05, 0x0a0a, - 0x0a0f, 0x0a10, - 0x0a13, 0x0a28, - 0x0a2a, 0x0a30, - 0x0a32, 0x0a33, - 0x0a35, 0x0a36, - 0x0a38, 0x0a39, - 0x0a3c, 0x0a3c, - 0x0a3e, 0x0a42, - 0x0a47, 0x0a48, - 0x0a4b, 0x0a4d, - 0x0a51, 0x0a51, - 0x0a59, 0x0a5c, - 0x0a5e, 0x0a5e, - 0x0a66, 0x0a75, - 0x0a81, 0x0a83, - 0x0a85, 0x0a8d, - 0x0a8f, 0x0a91, - 0x0a93, 0x0aa8, - 0x0aaa, 0x0ab0, - 0x0ab2, 0x0ab3, - 0x0ab5, 0x0ab9, - 0x0abc, 0x0ac5, - 0x0ac7, 0x0ac9, - 0x0acb, 0x0acd, - 0x0ad0, 0x0ad0, - 0x0ae0, 0x0ae3, - 0x0ae6, 0x0aef, - 0x0af9, 0x0af9, - 0x0b01, 0x0b03, - 0x0b05, 0x0b0c, - 0x0b0f, 0x0b10, - 0x0b13, 0x0b28, - 0x0b2a, 0x0b30, - 0x0b32, 0x0b33, - 0x0b35, 0x0b39, - 0x0b3c, 0x0b44, - 0x0b47, 0x0b48, - 0x0b4b, 0x0b4d, - 0x0b56, 0x0b57, - 0x0b5c, 0x0b5d, - 0x0b5f, 0x0b63, - 0x0b66, 0x0b6f, - 0x0b71, 0x0b71, - 0x0b82, 0x0b83, - 0x0b85, 0x0b8a, - 0x0b8e, 0x0b90, - 0x0b92, 0x0b95, - 0x0b99, 0x0b9a, - 0x0b9c, 0x0b9c, - 0x0b9e, 0x0b9f, - 0x0ba3, 0x0ba4, - 0x0ba8, 0x0baa, - 0x0bae, 0x0bb9, - 0x0bbe, 0x0bc2, - 0x0bc6, 0x0bc8, - 0x0bca, 0x0bcd, - 0x0bd0, 0x0bd0, - 0x0bd7, 0x0bd7, - 0x0be6, 0x0bef, - 0x0c00, 0x0c03, - 0x0c05, 0x0c0c, - 0x0c0e, 0x0c10, - 0x0c12, 0x0c28, - 0x0c2a, 0x0c39, - 0x0c3d, 0x0c44, - 0x0c46, 0x0c48, - 0x0c4a, 0x0c4d, - 0x0c55, 0x0c56, - 0x0c58, 0x0c5a, - 0x0c60, 0x0c63, - 0x0c66, 0x0c6f, - 0x0c80, 0x0c83, - 0x0c85, 0x0c8c, - 0x0c8e, 0x0c90, - 0x0c92, 0x0ca8, - 0x0caa, 0x0cb3, - 0x0cb5, 0x0cb9, - 0x0cbc, 0x0cc4, - 0x0cc6, 0x0cc8, - 0x0cca, 0x0ccd, - 0x0cd5, 0x0cd6, - 0x0cde, 0x0cde, - 0x0ce0, 0x0ce3, - 0x0ce6, 0x0cef, - 0x0cf1, 0x0cf2, - 0x0d01, 0x0d03, - 0x0d05, 0x0d0c, - 0x0d0e, 0x0d10, - 0x0d12, 0x0d3a, - 0x0d3d, 0x0d44, - 0x0d46, 0x0d48, - 0x0d4a, 0x0d4e, - 0x0d54, 0x0d57, - 0x0d5f, 0x0d63, - 0x0d66, 0x0d6f, - 0x0d7a, 0x0d7f, - 0x0d82, 0x0d83, - 0x0d85, 0x0d96, - 0x0d9a, 0x0db1, - 0x0db3, 0x0dbb, - 0x0dbd, 0x0dbd, - 0x0dc0, 0x0dc6, - 0x0dca, 0x0dca, - 0x0dcf, 0x0dd4, - 0x0dd6, 0x0dd6, - 0x0dd8, 0x0ddf, - 0x0de6, 0x0def, - 0x0df2, 0x0df3, - 0x0e01, 0x0e3a, - 0x0e40, 0x0e4e, - 0x0e50, 0x0e59, - 0x0e81, 0x0e82, - 0x0e84, 0x0e84, - 0x0e87, 0x0e88, - 0x0e8a, 0x0e8a, - 0x0e8d, 0x0e8d, - 0x0e94, 0x0e97, - 0x0e99, 0x0e9f, - 0x0ea1, 0x0ea3, - 0x0ea5, 0x0ea5, - 0x0ea7, 0x0ea7, - 0x0eaa, 0x0eab, - 0x0ead, 0x0eb9, - 0x0ebb, 0x0ebd, - 0x0ec0, 0x0ec4, - 0x0ec6, 0x0ec6, - 0x0ec8, 0x0ecd, - 0x0ed0, 0x0ed9, - 0x0edc, 0x0edf, - 0x0f00, 0x0f00, - 0x0f18, 0x0f19, - 0x0f20, 0x0f29, - 0x0f35, 0x0f35, - 0x0f37, 0x0f37, - 0x0f39, 0x0f39, - 0x0f3e, 0x0f47, - 0x0f49, 0x0f6c, - 0x0f71, 0x0f84, - 0x0f86, 0x0f97, - 0x0f99, 0x0fbc, - 0x0fc6, 0x0fc6, - 0x1000, 0x1049, - 0x1050, 0x109d, - 0x10a0, 0x10c5, - 0x10c7, 0x10c7, - 0x10cd, 0x10cd, - 0x10d0, 0x10fa, - 0x10fc, 0x1248, - 0x124a, 0x124d, - 0x1250, 0x1256, - 0x1258, 0x1258, - 0x125a, 0x125d, - 0x1260, 0x1288, - 0x128a, 0x128d, - 0x1290, 0x12b0, - 0x12b2, 0x12b5, - 0x12b8, 0x12be, - 0x12c0, 0x12c0, - 0x12c2, 0x12c5, - 0x12c8, 0x12d6, - 0x12d8, 0x1310, - 0x1312, 0x1315, - 0x1318, 0x135a, - 0x135d, 0x135f, - 0x1380, 0x138f, - 0x13a0, 0x13f5, - 0x13f8, 0x13fd, - 0x1401, 0x166c, - 0x166f, 0x167f, - 0x1681, 0x169a, - 0x16a0, 0x16ea, - 0x16ee, 0x16f8, - 0x1700, 0x170c, - 0x170e, 0x1714, - 0x1720, 0x1734, - 0x1740, 0x1753, - 0x1760, 0x176c, - 0x176e, 0x1770, - 0x1772, 0x1773, - 0x1780, 0x17d3, - 0x17d7, 0x17d7, - 0x17dc, 0x17dd, - 0x17e0, 0x17e9, - 0x180b, 0x180d, - 0x1810, 0x1819, - 0x1820, 0x1877, - 0x1880, 0x18aa, - 0x18b0, 0x18f5, - 0x1900, 0x191e, - 0x1920, 0x192b, - 0x1930, 0x193b, - 0x1946, 0x196d, - 0x1970, 0x1974, - 0x1980, 0x19ab, - 0x19b0, 0x19c9, - 0x19d0, 0x19d9, - 0x1a00, 0x1a1b, - 0x1a20, 0x1a5e, - 0x1a60, 0x1a7c, - 0x1a7f, 0x1a89, - 0x1a90, 0x1a99, - 0x1aa7, 0x1aa7, - 0x1ab0, 0x1abe, - 0x1b00, 0x1b4b, - 0x1b50, 0x1b59, - 0x1b6b, 0x1b73, - 0x1b80, 0x1bf3, - 0x1c00, 0x1c37, - 0x1c40, 0x1c49, - 0x1c4d, 0x1c7d, - 0x1c80, 0x1c88, - 0x1cd0, 0x1cd2, - 0x1cd4, 0x1cf6, - 0x1cf8, 0x1cf9, - 0x1d00, 0x1df5, - 0x1dfb, 0x1f15, - 0x1f18, 0x1f1d, - 0x1f20, 0x1f45, - 0x1f48, 0x1f4d, - 0x1f50, 0x1f57, - 0x1f59, 0x1f59, - 0x1f5b, 0x1f5b, - 0x1f5d, 0x1f5d, - 0x1f5f, 0x1f7d, - 0x1f80, 0x1fb4, - 0x1fb6, 0x1fbc, - 0x1fbe, 0x1fbe, - 0x1fc2, 0x1fc4, - 0x1fc6, 0x1fcc, - 0x1fd0, 0x1fd3, - 0x1fd6, 0x1fdb, - 0x1fe0, 0x1fec, - 0x1ff2, 0x1ff4, - 0x1ff6, 0x1ffc, - 0x203f, 0x2040, - 0x2054, 0x2054, - 0x2071, 0x2071, - 0x207f, 0x207f, - 0x2090, 0x209c, - 0x20d0, 0x20f0, - 0x2102, 0x2102, - 0x2107, 0x2107, - 0x210a, 0x2113, - 0x2115, 0x2115, - 0x2119, 0x211d, - 0x2124, 0x2124, - 0x2126, 0x2126, - 0x2128, 0x2128, - 0x212a, 0x212d, - 0x212f, 0x2139, - 0x213c, 0x213f, - 0x2145, 0x2149, - 0x214e, 0x214e, - 0x2160, 0x2188, - 0x24b6, 0x24e9, - 0x2c00, 0x2c2e, - 0x2c30, 0x2c5e, - 0x2c60, 0x2ce4, - 0x2ceb, 0x2cf3, - 0x2d00, 0x2d25, - 0x2d27, 0x2d27, - 0x2d2d, 0x2d2d, - 0x2d30, 0x2d67, - 0x2d6f, 0x2d6f, - 0x2d7f, 0x2d96, - 0x2da0, 0x2da6, - 0x2da8, 0x2dae, - 0x2db0, 0x2db6, - 0x2db8, 0x2dbe, - 0x2dc0, 0x2dc6, - 0x2dc8, 0x2dce, - 0x2dd0, 0x2dd6, - 0x2dd8, 0x2dde, - 0x2de0, 0x2dff, - 0x2e2f, 0x2e2f, - 0x3005, 0x3007, - 0x3021, 0x302f, - 0x3031, 0x3035, - 0x3038, 0x303c, - 0x3041, 0x3096, - 0x3099, 0x309a, - 0x309d, 0x309f, - 0x30a1, 0x30fa, - 0x30fc, 0x30ff, - 0x3105, 0x312d, - 0x3131, 0x318e, - 0x31a0, 0x31ba, - 0x31f0, 0x31ff, - 0x3400, 0x4db5, - 0x4e00, 0x9fd5, - 0xa000, 0xa48c, - 0xa4d0, 0xa4fd, - 0xa500, 0xa60c, - 0xa610, 0xa62b, - 0xa640, 0xa672, - 0xa674, 0xa67d, - 0xa67f, 0xa6f1, - 0xa717, 0xa71f, - 0xa722, 0xa788, - 0xa78b, 0xa7ae, - 0xa7b0, 0xa7b7, - 0xa7f7, 0xa827, - 0xa840, 0xa873, - 0xa880, 0xa8c5, - 0xa8d0, 0xa8d9, - 0xa8e0, 0xa8f7, - 0xa8fb, 0xa8fb, - 0xa8fd, 0xa8fd, - 0xa900, 0xa92d, - 0xa930, 0xa953, - 0xa960, 0xa97c, - 0xa980, 0xa9c0, - 0xa9cf, 0xa9d9, - 0xa9e0, 0xa9fe, - 0xaa00, 0xaa36, - 0xaa40, 0xaa4d, - 0xaa50, 0xaa59, - 0xaa60, 0xaa76, - 0xaa7a, 0xaac2, - 0xaadb, 0xaadd, - 0xaae0, 0xaaef, - 0xaaf2, 0xaaf6, - 0xab01, 0xab06, - 0xab09, 0xab0e, - 0xab11, 0xab16, - 0xab20, 0xab26, - 0xab28, 0xab2e, - 0xab30, 0xab5a, - 0xab5c, 0xab65, - 0xab70, 0xabea, - 0xabec, 0xabed, - 0xabf0, 0xabf9, - 0xac00, 0xd7a3, - 0xd7b0, 0xd7c6, - 0xd7cb, 0xd7fb, - 0xf900, 0xfa6d, - 0xfa70, 0xfad9, - 0xfb00, 0xfb06, - 0xfb13, 0xfb17, - 0xfb1d, 0xfb28, - 0xfb2a, 0xfb36, - 0xfb38, 0xfb3c, - 0xfb3e, 0xfb3e, - 0xfb40, 0xfb41, - 0xfb43, 0xfb44, - 0xfb46, 0xfbb1, - 0xfbd3, 0xfd3d, - 0xfd50, 0xfd8f, - 0xfd92, 0xfdc7, - 0xfdf0, 0xfdfb, - 0xfe00, 0xfe0f, - 0xfe20, 0xfe2f, - 0xfe33, 0xfe34, - 0xfe4d, 0xfe4f, - 0xfe70, 0xfe74, - 0xfe76, 0xfefc, - 0xff10, 0xff19, - 0xff21, 0xff3a, - 0xff3f, 0xff3f, - 0xff41, 0xff5a, - 0xff66, 0xffbe, - 0xffc2, 0xffc7, - 0xffca, 0xffcf, - 0xffd2, 0xffd7, - 0xffda, 0xffdc, - 0x10000, 0x1000b, - 0x1000d, 0x10026, - 0x10028, 0x1003a, - 0x1003c, 0x1003d, - 0x1003f, 0x1004d, - 0x10050, 0x1005d, - 0x10080, 0x100fa, - 0x10140, 0x10174, - 0x101fd, 0x101fd, - 0x10280, 0x1029c, - 0x102a0, 0x102d0, - 0x102e0, 0x102e0, - 0x10300, 0x1031f, - 0x10330, 0x1034a, - 0x10350, 0x1037a, - 0x10380, 0x1039d, - 0x103a0, 0x103c3, - 0x103c8, 0x103cf, - 0x103d1, 0x103d5, - 0x10400, 0x1049d, - 0x104a0, 0x104a9, - 0x104b0, 0x104d3, - 0x104d8, 0x104fb, - 0x10500, 0x10527, - 0x10530, 0x10563, - 0x10600, 0x10736, - 0x10740, 0x10755, - 0x10760, 0x10767, - 0x10800, 0x10805, - 0x10808, 0x10808, - 0x1080a, 0x10835, - 0x10837, 0x10838, - 0x1083c, 0x1083c, - 0x1083f, 0x10855, - 0x10860, 0x10876, - 0x10880, 0x1089e, - 0x108e0, 0x108f2, - 0x108f4, 0x108f5, - 0x10900, 0x10915, - 0x10920, 0x10939, - 0x10980, 0x109b7, - 0x109be, 0x109bf, - 0x10a00, 0x10a03, - 0x10a05, 0x10a06, - 0x10a0c, 0x10a13, - 0x10a15, 0x10a17, - 0x10a19, 0x10a33, - 0x10a38, 0x10a3a, - 0x10a3f, 0x10a3f, - 0x10a60, 0x10a7c, - 0x10a80, 0x10a9c, - 0x10ac0, 0x10ac7, - 0x10ac9, 0x10ae6, - 0x10b00, 0x10b35, - 0x10b40, 0x10b55, - 0x10b60, 0x10b72, - 0x10b80, 0x10b91, - 0x10c00, 0x10c48, - 0x10c80, 0x10cb2, - 0x10cc0, 0x10cf2, - 0x11000, 0x11046, - 0x11066, 0x1106f, - 0x1107f, 0x110ba, - 0x110d0, 0x110e8, - 0x110f0, 0x110f9, - 0x11100, 0x11134, - 0x11136, 0x1113f, - 0x11150, 0x11173, - 0x11176, 0x11176, - 0x11180, 0x111c4, - 0x111ca, 0x111cc, - 0x111d0, 0x111da, - 0x111dc, 0x111dc, - 0x11200, 0x11211, - 0x11213, 0x11237, - 0x1123e, 0x1123e, - 0x11280, 0x11286, - 0x11288, 0x11288, - 0x1128a, 0x1128d, - 0x1128f, 0x1129d, - 0x1129f, 0x112a8, - 0x112b0, 0x112ea, - 0x112f0, 0x112f9, - 0x11300, 0x11303, - 0x11305, 0x1130c, - 0x1130f, 0x11310, - 0x11313, 0x11328, - 0x1132a, 0x11330, - 0x11332, 0x11333, - 0x11335, 0x11339, - 0x1133c, 0x11344, - 0x11347, 0x11348, - 0x1134b, 0x1134d, - 0x11350, 0x11350, - 0x11357, 0x11357, - 0x1135d, 0x11363, - 0x11366, 0x1136c, - 0x11370, 0x11374, - 0x11400, 0x1144a, - 0x11450, 0x11459, - 0x11480, 0x114c5, - 0x114c7, 0x114c7, - 0x114d0, 0x114d9, - 0x11580, 0x115b5, - 0x115b8, 0x115c0, - 0x115d8, 0x115dd, - 0x11600, 0x11640, - 0x11644, 0x11644, - 0x11650, 0x11659, - 0x11680, 0x116b7, - 0x116c0, 0x116c9, - 0x11700, 0x11719, - 0x1171d, 0x1172b, - 0x11730, 0x11739, - 0x118a0, 0x118e9, - 0x118ff, 0x118ff, - 0x11ac0, 0x11af8, - 0x11c00, 0x11c08, - 0x11c0a, 0x11c36, - 0x11c38, 0x11c40, - 0x11c50, 0x11c59, - 0x11c72, 0x11c8f, - 0x11c92, 0x11ca7, - 0x11ca9, 0x11cb6, - 0x12000, 0x12399, - 0x12400, 0x1246e, - 0x12480, 0x12543, - 0x13000, 0x1342e, - 0x14400, 0x14646, - 0x16800, 0x16a38, - 0x16a40, 0x16a5e, - 0x16a60, 0x16a69, - 0x16ad0, 0x16aed, - 0x16af0, 0x16af4, - 0x16b00, 0x16b36, - 0x16b40, 0x16b43, - 0x16b50, 0x16b59, - 0x16b63, 0x16b77, - 0x16b7d, 0x16b8f, - 0x16f00, 0x16f44, - 0x16f50, 0x16f7e, - 0x16f8f, 0x16f9f, - 0x16fe0, 0x16fe0, - 0x17000, 0x187ec, - 0x18800, 0x18af2, - 0x1b000, 0x1b001, - 0x1bc00, 0x1bc6a, - 0x1bc70, 0x1bc7c, - 0x1bc80, 0x1bc88, - 0x1bc90, 0x1bc99, - 0x1bc9d, 0x1bc9e, - 0x1d165, 0x1d169, - 0x1d16d, 0x1d172, - 0x1d17b, 0x1d182, - 0x1d185, 0x1d18b, - 0x1d1aa, 0x1d1ad, - 0x1d242, 0x1d244, - 0x1d400, 0x1d454, - 0x1d456, 0x1d49c, - 0x1d49e, 0x1d49f, - 0x1d4a2, 0x1d4a2, - 0x1d4a5, 0x1d4a6, - 0x1d4a9, 0x1d4ac, - 0x1d4ae, 0x1d4b9, - 0x1d4bb, 0x1d4bb, - 0x1d4bd, 0x1d4c3, - 0x1d4c5, 0x1d505, - 0x1d507, 0x1d50a, - 0x1d50d, 0x1d514, - 0x1d516, 0x1d51c, - 0x1d51e, 0x1d539, - 0x1d53b, 0x1d53e, - 0x1d540, 0x1d544, - 0x1d546, 0x1d546, - 0x1d54a, 0x1d550, - 0x1d552, 0x1d6a5, - 0x1d6a8, 0x1d6c0, - 0x1d6c2, 0x1d6da, - 0x1d6dc, 0x1d6fa, - 0x1d6fc, 0x1d714, - 0x1d716, 0x1d734, - 0x1d736, 0x1d74e, - 0x1d750, 0x1d76e, - 0x1d770, 0x1d788, - 0x1d78a, 0x1d7a8, - 0x1d7aa, 0x1d7c2, - 0x1d7c4, 0x1d7cb, - 0x1d7ce, 0x1d7ff, - 0x1da00, 0x1da36, - 0x1da3b, 0x1da6c, - 0x1da75, 0x1da75, - 0x1da84, 0x1da84, - 0x1da9b, 0x1da9f, - 0x1daa1, 0x1daaf, - 0x1e000, 0x1e006, - 0x1e008, 0x1e018, - 0x1e01b, 0x1e021, - 0x1e023, 0x1e024, - 0x1e026, 0x1e02a, - 0x1e800, 0x1e8c4, - 0x1e8d0, 0x1e8d6, - 0x1e900, 0x1e94a, - 0x1e950, 0x1e959, - 0x1ee00, 0x1ee03, - 0x1ee05, 0x1ee1f, - 0x1ee21, 0x1ee22, - 0x1ee24, 0x1ee24, - 0x1ee27, 0x1ee27, - 0x1ee29, 0x1ee32, - 0x1ee34, 0x1ee37, - 0x1ee39, 0x1ee39, - 0x1ee3b, 0x1ee3b, - 0x1ee42, 0x1ee42, - 0x1ee47, 0x1ee47, - 0x1ee49, 0x1ee49, - 0x1ee4b, 0x1ee4b, - 0x1ee4d, 0x1ee4f, - 0x1ee51, 0x1ee52, - 0x1ee54, 0x1ee54, - 0x1ee57, 0x1ee57, - 0x1ee59, 0x1ee59, - 0x1ee5b, 0x1ee5b, - 0x1ee5d, 0x1ee5d, - 0x1ee5f, 0x1ee5f, - 0x1ee61, 0x1ee62, - 0x1ee64, 0x1ee64, - 0x1ee67, 0x1ee6a, - 0x1ee6c, 0x1ee72, - 0x1ee74, 0x1ee77, - 0x1ee79, 0x1ee7c, - 0x1ee7e, 0x1ee7e, - 0x1ee80, 0x1ee89, - 0x1ee8b, 0x1ee9b, - 0x1eea1, 0x1eea3, - 0x1eea5, 0x1eea9, - 0x1eeab, 0x1eebb, - 0x1f130, 0x1f149, - 0x1f150, 0x1f169, - 0x1f170, 0x1f189, - 0x20000, 0x2a6d6, - 0x2a700, 0x2b734, - 0x2b740, 0x2b81d, - 0x2b820, 0x2cea1, - 0x2f800, 0x2fa1d, - 0xe0100, 0xe01ef, -}; /* CR_Word */ - -/* 'Alnum': [[:Alnum:]] */ -static const OnigCodePoint CR_Alnum[] = { - 678, - 0x0030, 0x0039, - 0x0041, 0x005a, - 0x0061, 0x007a, - 0x00aa, 0x00aa, - 0x00b5, 0x00b5, - 0x00ba, 0x00ba, - 0x00c0, 0x00d6, - 0x00d8, 0x00f6, - 0x00f8, 0x02c1, - 0x02c6, 0x02d1, - 0x02e0, 0x02e4, - 0x02ec, 0x02ec, - 0x02ee, 0x02ee, - 0x0345, 0x0345, - 0x0370, 0x0374, - 0x0376, 0x0377, - 0x037a, 0x037d, - 0x037f, 0x037f, - 0x0386, 0x0386, - 0x0388, 0x038a, - 0x038c, 0x038c, - 0x038e, 0x03a1, - 0x03a3, 0x03f5, - 0x03f7, 0x0481, - 0x048a, 0x052f, - 0x0531, 0x0556, - 0x0559, 0x0559, - 0x0561, 0x0587, - 0x05b0, 0x05bd, - 0x05bf, 0x05bf, - 0x05c1, 0x05c2, - 0x05c4, 0x05c5, - 0x05c7, 0x05c7, - 0x05d0, 0x05ea, - 0x05f0, 0x05f2, - 0x0610, 0x061a, - 0x0620, 0x0657, - 0x0659, 0x0669, - 0x066e, 0x06d3, - 0x06d5, 0x06dc, - 0x06e1, 0x06e8, - 0x06ed, 0x06fc, - 0x06ff, 0x06ff, - 0x0710, 0x073f, - 0x074d, 0x07b1, - 0x07c0, 0x07ea, - 0x07f4, 0x07f5, - 0x07fa, 0x07fa, - 0x0800, 0x0817, - 0x081a, 0x082c, - 0x0840, 0x0858, - 0x08a0, 0x08b4, - 0x08b6, 0x08bd, - 0x08d4, 0x08df, - 0x08e3, 0x08e9, - 0x08f0, 0x093b, - 0x093d, 0x094c, - 0x094e, 0x0950, - 0x0955, 0x0963, - 0x0966, 0x096f, - 0x0971, 0x0983, - 0x0985, 0x098c, - 0x098f, 0x0990, - 0x0993, 0x09a8, - 0x09aa, 0x09b0, - 0x09b2, 0x09b2, - 0x09b6, 0x09b9, - 0x09bd, 0x09c4, - 0x09c7, 0x09c8, - 0x09cb, 0x09cc, - 0x09ce, 0x09ce, - 0x09d7, 0x09d7, - 0x09dc, 0x09dd, - 0x09df, 0x09e3, - 0x09e6, 0x09f1, - 0x0a01, 0x0a03, - 0x0a05, 0x0a0a, - 0x0a0f, 0x0a10, - 0x0a13, 0x0a28, - 0x0a2a, 0x0a30, - 0x0a32, 0x0a33, - 0x0a35, 0x0a36, - 0x0a38, 0x0a39, - 0x0a3e, 0x0a42, - 0x0a47, 0x0a48, - 0x0a4b, 0x0a4c, - 0x0a51, 0x0a51, - 0x0a59, 0x0a5c, - 0x0a5e, 0x0a5e, - 0x0a66, 0x0a75, - 0x0a81, 0x0a83, - 0x0a85, 0x0a8d, - 0x0a8f, 0x0a91, - 0x0a93, 0x0aa8, - 0x0aaa, 0x0ab0, - 0x0ab2, 0x0ab3, - 0x0ab5, 0x0ab9, - 0x0abd, 0x0ac5, - 0x0ac7, 0x0ac9, - 0x0acb, 0x0acc, - 0x0ad0, 0x0ad0, - 0x0ae0, 0x0ae3, - 0x0ae6, 0x0aef, - 0x0af9, 0x0af9, - 0x0b01, 0x0b03, - 0x0b05, 0x0b0c, - 0x0b0f, 0x0b10, - 0x0b13, 0x0b28, - 0x0b2a, 0x0b30, - 0x0b32, 0x0b33, - 0x0b35, 0x0b39, - 0x0b3d, 0x0b44, - 0x0b47, 0x0b48, - 0x0b4b, 0x0b4c, - 0x0b56, 0x0b57, - 0x0b5c, 0x0b5d, - 0x0b5f, 0x0b63, - 0x0b66, 0x0b6f, - 0x0b71, 0x0b71, - 0x0b82, 0x0b83, - 0x0b85, 0x0b8a, - 0x0b8e, 0x0b90, - 0x0b92, 0x0b95, - 0x0b99, 0x0b9a, - 0x0b9c, 0x0b9c, - 0x0b9e, 0x0b9f, - 0x0ba3, 0x0ba4, - 0x0ba8, 0x0baa, - 0x0bae, 0x0bb9, - 0x0bbe, 0x0bc2, - 0x0bc6, 0x0bc8, - 0x0bca, 0x0bcc, - 0x0bd0, 0x0bd0, - 0x0bd7, 0x0bd7, - 0x0be6, 0x0bef, - 0x0c00, 0x0c03, - 0x0c05, 0x0c0c, - 0x0c0e, 0x0c10, - 0x0c12, 0x0c28, - 0x0c2a, 0x0c39, - 0x0c3d, 0x0c44, - 0x0c46, 0x0c48, - 0x0c4a, 0x0c4c, - 0x0c55, 0x0c56, - 0x0c58, 0x0c5a, - 0x0c60, 0x0c63, - 0x0c66, 0x0c6f, - 0x0c80, 0x0c83, - 0x0c85, 0x0c8c, - 0x0c8e, 0x0c90, - 0x0c92, 0x0ca8, - 0x0caa, 0x0cb3, - 0x0cb5, 0x0cb9, - 0x0cbd, 0x0cc4, - 0x0cc6, 0x0cc8, - 0x0cca, 0x0ccc, - 0x0cd5, 0x0cd6, - 0x0cde, 0x0cde, - 0x0ce0, 0x0ce3, - 0x0ce6, 0x0cef, - 0x0cf1, 0x0cf2, - 0x0d01, 0x0d03, - 0x0d05, 0x0d0c, - 0x0d0e, 0x0d10, - 0x0d12, 0x0d3a, - 0x0d3d, 0x0d44, - 0x0d46, 0x0d48, - 0x0d4a, 0x0d4c, - 0x0d4e, 0x0d4e, - 0x0d54, 0x0d57, - 0x0d5f, 0x0d63, - 0x0d66, 0x0d6f, - 0x0d7a, 0x0d7f, - 0x0d82, 0x0d83, - 0x0d85, 0x0d96, - 0x0d9a, 0x0db1, - 0x0db3, 0x0dbb, - 0x0dbd, 0x0dbd, - 0x0dc0, 0x0dc6, - 0x0dcf, 0x0dd4, - 0x0dd6, 0x0dd6, - 0x0dd8, 0x0ddf, - 0x0de6, 0x0def, - 0x0df2, 0x0df3, - 0x0e01, 0x0e3a, - 0x0e40, 0x0e46, - 0x0e4d, 0x0e4d, - 0x0e50, 0x0e59, - 0x0e81, 0x0e82, - 0x0e84, 0x0e84, - 0x0e87, 0x0e88, - 0x0e8a, 0x0e8a, - 0x0e8d, 0x0e8d, - 0x0e94, 0x0e97, - 0x0e99, 0x0e9f, - 0x0ea1, 0x0ea3, - 0x0ea5, 0x0ea5, - 0x0ea7, 0x0ea7, - 0x0eaa, 0x0eab, - 0x0ead, 0x0eb9, - 0x0ebb, 0x0ebd, - 0x0ec0, 0x0ec4, - 0x0ec6, 0x0ec6, - 0x0ecd, 0x0ecd, - 0x0ed0, 0x0ed9, - 0x0edc, 0x0edf, - 0x0f00, 0x0f00, - 0x0f20, 0x0f29, - 0x0f40, 0x0f47, - 0x0f49, 0x0f6c, - 0x0f71, 0x0f81, - 0x0f88, 0x0f97, - 0x0f99, 0x0fbc, - 0x1000, 0x1036, - 0x1038, 0x1038, - 0x103b, 0x1049, - 0x1050, 0x1062, - 0x1065, 0x1068, - 0x106e, 0x1086, - 0x108e, 0x108e, - 0x1090, 0x1099, - 0x109c, 0x109d, - 0x10a0, 0x10c5, - 0x10c7, 0x10c7, - 0x10cd, 0x10cd, - 0x10d0, 0x10fa, - 0x10fc, 0x1248, - 0x124a, 0x124d, - 0x1250, 0x1256, - 0x1258, 0x1258, - 0x125a, 0x125d, - 0x1260, 0x1288, - 0x128a, 0x128d, - 0x1290, 0x12b0, - 0x12b2, 0x12b5, - 0x12b8, 0x12be, - 0x12c0, 0x12c0, - 0x12c2, 0x12c5, - 0x12c8, 0x12d6, - 0x12d8, 0x1310, - 0x1312, 0x1315, - 0x1318, 0x135a, - 0x135f, 0x135f, - 0x1380, 0x138f, - 0x13a0, 0x13f5, - 0x13f8, 0x13fd, - 0x1401, 0x166c, - 0x166f, 0x167f, - 0x1681, 0x169a, - 0x16a0, 0x16ea, - 0x16ee, 0x16f8, - 0x1700, 0x170c, - 0x170e, 0x1713, - 0x1720, 0x1733, - 0x1740, 0x1753, - 0x1760, 0x176c, - 0x176e, 0x1770, - 0x1772, 0x1773, - 0x1780, 0x17b3, - 0x17b6, 0x17c8, - 0x17d7, 0x17d7, - 0x17dc, 0x17dc, - 0x17e0, 0x17e9, - 0x1810, 0x1819, - 0x1820, 0x1877, - 0x1880, 0x18aa, - 0x18b0, 0x18f5, - 0x1900, 0x191e, - 0x1920, 0x192b, - 0x1930, 0x1938, - 0x1946, 0x196d, - 0x1970, 0x1974, - 0x1980, 0x19ab, - 0x19b0, 0x19c9, - 0x19d0, 0x19d9, - 0x1a00, 0x1a1b, - 0x1a20, 0x1a5e, - 0x1a61, 0x1a74, - 0x1a80, 0x1a89, - 0x1a90, 0x1a99, - 0x1aa7, 0x1aa7, - 0x1b00, 0x1b33, - 0x1b35, 0x1b43, - 0x1b45, 0x1b4b, - 0x1b50, 0x1b59, - 0x1b80, 0x1ba9, - 0x1bac, 0x1be5, - 0x1be7, 0x1bf1, - 0x1c00, 0x1c35, - 0x1c40, 0x1c49, - 0x1c4d, 0x1c7d, - 0x1c80, 0x1c88, - 0x1ce9, 0x1cec, - 0x1cee, 0x1cf3, - 0x1cf5, 0x1cf6, - 0x1d00, 0x1dbf, - 0x1de7, 0x1df4, - 0x1e00, 0x1f15, - 0x1f18, 0x1f1d, - 0x1f20, 0x1f45, - 0x1f48, 0x1f4d, - 0x1f50, 0x1f57, - 0x1f59, 0x1f59, - 0x1f5b, 0x1f5b, - 0x1f5d, 0x1f5d, - 0x1f5f, 0x1f7d, - 0x1f80, 0x1fb4, - 0x1fb6, 0x1fbc, - 0x1fbe, 0x1fbe, - 0x1fc2, 0x1fc4, - 0x1fc6, 0x1fcc, - 0x1fd0, 0x1fd3, - 0x1fd6, 0x1fdb, - 0x1fe0, 0x1fec, - 0x1ff2, 0x1ff4, - 0x1ff6, 0x1ffc, - 0x2071, 0x2071, - 0x207f, 0x207f, - 0x2090, 0x209c, - 0x2102, 0x2102, - 0x2107, 0x2107, - 0x210a, 0x2113, - 0x2115, 0x2115, - 0x2119, 0x211d, - 0x2124, 0x2124, - 0x2126, 0x2126, - 0x2128, 0x2128, - 0x212a, 0x212d, - 0x212f, 0x2139, - 0x213c, 0x213f, - 0x2145, 0x2149, - 0x214e, 0x214e, - 0x2160, 0x2188, - 0x24b6, 0x24e9, - 0x2c00, 0x2c2e, - 0x2c30, 0x2c5e, - 0x2c60, 0x2ce4, - 0x2ceb, 0x2cee, - 0x2cf2, 0x2cf3, - 0x2d00, 0x2d25, - 0x2d27, 0x2d27, - 0x2d2d, 0x2d2d, - 0x2d30, 0x2d67, - 0x2d6f, 0x2d6f, - 0x2d80, 0x2d96, - 0x2da0, 0x2da6, - 0x2da8, 0x2dae, - 0x2db0, 0x2db6, - 0x2db8, 0x2dbe, - 0x2dc0, 0x2dc6, - 0x2dc8, 0x2dce, - 0x2dd0, 0x2dd6, - 0x2dd8, 0x2dde, - 0x2de0, 0x2dff, - 0x2e2f, 0x2e2f, - 0x3005, 0x3007, - 0x3021, 0x3029, - 0x3031, 0x3035, - 0x3038, 0x303c, - 0x3041, 0x3096, - 0x309d, 0x309f, - 0x30a1, 0x30fa, - 0x30fc, 0x30ff, - 0x3105, 0x312d, - 0x3131, 0x318e, - 0x31a0, 0x31ba, - 0x31f0, 0x31ff, - 0x3400, 0x4db5, - 0x4e00, 0x9fd5, - 0xa000, 0xa48c, - 0xa4d0, 0xa4fd, - 0xa500, 0xa60c, - 0xa610, 0xa62b, - 0xa640, 0xa66e, - 0xa674, 0xa67b, - 0xa67f, 0xa6ef, - 0xa717, 0xa71f, - 0xa722, 0xa788, - 0xa78b, 0xa7ae, - 0xa7b0, 0xa7b7, - 0xa7f7, 0xa801, - 0xa803, 0xa805, - 0xa807, 0xa80a, - 0xa80c, 0xa827, - 0xa840, 0xa873, - 0xa880, 0xa8c3, - 0xa8c5, 0xa8c5, - 0xa8d0, 0xa8d9, - 0xa8f2, 0xa8f7, - 0xa8fb, 0xa8fb, - 0xa8fd, 0xa8fd, - 0xa900, 0xa92a, - 0xa930, 0xa952, - 0xa960, 0xa97c, - 0xa980, 0xa9b2, - 0xa9b4, 0xa9bf, - 0xa9cf, 0xa9d9, - 0xa9e0, 0xa9e4, - 0xa9e6, 0xa9fe, - 0xaa00, 0xaa36, - 0xaa40, 0xaa4d, - 0xaa50, 0xaa59, - 0xaa60, 0xaa76, - 0xaa7a, 0xaa7a, - 0xaa7e, 0xaabe, - 0xaac0, 0xaac0, - 0xaac2, 0xaac2, - 0xaadb, 0xaadd, - 0xaae0, 0xaaef, - 0xaaf2, 0xaaf5, - 0xab01, 0xab06, - 0xab09, 0xab0e, - 0xab11, 0xab16, - 0xab20, 0xab26, - 0xab28, 0xab2e, - 0xab30, 0xab5a, - 0xab5c, 0xab65, - 0xab70, 0xabea, - 0xabf0, 0xabf9, - 0xac00, 0xd7a3, - 0xd7b0, 0xd7c6, - 0xd7cb, 0xd7fb, - 0xf900, 0xfa6d, - 0xfa70, 0xfad9, - 0xfb00, 0xfb06, - 0xfb13, 0xfb17, - 0xfb1d, 0xfb28, - 0xfb2a, 0xfb36, - 0xfb38, 0xfb3c, - 0xfb3e, 0xfb3e, - 0xfb40, 0xfb41, - 0xfb43, 0xfb44, - 0xfb46, 0xfbb1, - 0xfbd3, 0xfd3d, - 0xfd50, 0xfd8f, - 0xfd92, 0xfdc7, - 0xfdf0, 0xfdfb, - 0xfe70, 0xfe74, - 0xfe76, 0xfefc, - 0xff10, 0xff19, - 0xff21, 0xff3a, - 0xff41, 0xff5a, - 0xff66, 0xffbe, - 0xffc2, 0xffc7, - 0xffca, 0xffcf, - 0xffd2, 0xffd7, - 0xffda, 0xffdc, - 0x10000, 0x1000b, - 0x1000d, 0x10026, - 0x10028, 0x1003a, - 0x1003c, 0x1003d, - 0x1003f, 0x1004d, - 0x10050, 0x1005d, - 0x10080, 0x100fa, - 0x10140, 0x10174, - 0x10280, 0x1029c, - 0x102a0, 0x102d0, - 0x10300, 0x1031f, - 0x10330, 0x1034a, - 0x10350, 0x1037a, - 0x10380, 0x1039d, - 0x103a0, 0x103c3, - 0x103c8, 0x103cf, - 0x103d1, 0x103d5, - 0x10400, 0x1049d, - 0x104a0, 0x104a9, - 0x104b0, 0x104d3, - 0x104d8, 0x104fb, - 0x10500, 0x10527, - 0x10530, 0x10563, - 0x10600, 0x10736, - 0x10740, 0x10755, - 0x10760, 0x10767, - 0x10800, 0x10805, - 0x10808, 0x10808, - 0x1080a, 0x10835, - 0x10837, 0x10838, - 0x1083c, 0x1083c, - 0x1083f, 0x10855, - 0x10860, 0x10876, - 0x10880, 0x1089e, - 0x108e0, 0x108f2, - 0x108f4, 0x108f5, - 0x10900, 0x10915, - 0x10920, 0x10939, - 0x10980, 0x109b7, - 0x109be, 0x109bf, - 0x10a00, 0x10a03, - 0x10a05, 0x10a06, - 0x10a0c, 0x10a13, - 0x10a15, 0x10a17, - 0x10a19, 0x10a33, - 0x10a60, 0x10a7c, - 0x10a80, 0x10a9c, - 0x10ac0, 0x10ac7, - 0x10ac9, 0x10ae4, - 0x10b00, 0x10b35, - 0x10b40, 0x10b55, - 0x10b60, 0x10b72, - 0x10b80, 0x10b91, - 0x10c00, 0x10c48, - 0x10c80, 0x10cb2, - 0x10cc0, 0x10cf2, - 0x11000, 0x11045, - 0x11066, 0x1106f, - 0x11082, 0x110b8, - 0x110d0, 0x110e8, - 0x110f0, 0x110f9, - 0x11100, 0x11132, - 0x11136, 0x1113f, - 0x11150, 0x11172, - 0x11176, 0x11176, - 0x11180, 0x111bf, - 0x111c1, 0x111c4, - 0x111d0, 0x111da, - 0x111dc, 0x111dc, - 0x11200, 0x11211, - 0x11213, 0x11234, - 0x11237, 0x11237, - 0x1123e, 0x1123e, - 0x11280, 0x11286, - 0x11288, 0x11288, - 0x1128a, 0x1128d, - 0x1128f, 0x1129d, - 0x1129f, 0x112a8, - 0x112b0, 0x112e8, - 0x112f0, 0x112f9, - 0x11300, 0x11303, - 0x11305, 0x1130c, - 0x1130f, 0x11310, - 0x11313, 0x11328, - 0x1132a, 0x11330, - 0x11332, 0x11333, - 0x11335, 0x11339, - 0x1133d, 0x11344, - 0x11347, 0x11348, - 0x1134b, 0x1134c, - 0x11350, 0x11350, - 0x11357, 0x11357, - 0x1135d, 0x11363, - 0x11400, 0x11441, - 0x11443, 0x11445, - 0x11447, 0x1144a, - 0x11450, 0x11459, - 0x11480, 0x114c1, - 0x114c4, 0x114c5, - 0x114c7, 0x114c7, - 0x114d0, 0x114d9, - 0x11580, 0x115b5, - 0x115b8, 0x115be, - 0x115d8, 0x115dd, - 0x11600, 0x1163e, - 0x11640, 0x11640, - 0x11644, 0x11644, - 0x11650, 0x11659, - 0x11680, 0x116b5, - 0x116c0, 0x116c9, - 0x11700, 0x11719, - 0x1171d, 0x1172a, - 0x11730, 0x11739, - 0x118a0, 0x118e9, - 0x118ff, 0x118ff, - 0x11ac0, 0x11af8, - 0x11c00, 0x11c08, - 0x11c0a, 0x11c36, - 0x11c38, 0x11c3e, - 0x11c40, 0x11c40, - 0x11c50, 0x11c59, - 0x11c72, 0x11c8f, - 0x11c92, 0x11ca7, - 0x11ca9, 0x11cb6, - 0x12000, 0x12399, - 0x12400, 0x1246e, - 0x12480, 0x12543, - 0x13000, 0x1342e, - 0x14400, 0x14646, - 0x16800, 0x16a38, - 0x16a40, 0x16a5e, - 0x16a60, 0x16a69, - 0x16ad0, 0x16aed, - 0x16b00, 0x16b36, - 0x16b40, 0x16b43, - 0x16b50, 0x16b59, - 0x16b63, 0x16b77, - 0x16b7d, 0x16b8f, - 0x16f00, 0x16f44, - 0x16f50, 0x16f7e, - 0x16f93, 0x16f9f, - 0x16fe0, 0x16fe0, - 0x17000, 0x187ec, - 0x18800, 0x18af2, - 0x1b000, 0x1b001, - 0x1bc00, 0x1bc6a, - 0x1bc70, 0x1bc7c, - 0x1bc80, 0x1bc88, - 0x1bc90, 0x1bc99, - 0x1bc9e, 0x1bc9e, - 0x1d400, 0x1d454, - 0x1d456, 0x1d49c, - 0x1d49e, 0x1d49f, - 0x1d4a2, 0x1d4a2, - 0x1d4a5, 0x1d4a6, - 0x1d4a9, 0x1d4ac, - 0x1d4ae, 0x1d4b9, - 0x1d4bb, 0x1d4bb, - 0x1d4bd, 0x1d4c3, - 0x1d4c5, 0x1d505, - 0x1d507, 0x1d50a, - 0x1d50d, 0x1d514, - 0x1d516, 0x1d51c, - 0x1d51e, 0x1d539, - 0x1d53b, 0x1d53e, - 0x1d540, 0x1d544, - 0x1d546, 0x1d546, - 0x1d54a, 0x1d550, - 0x1d552, 0x1d6a5, - 0x1d6a8, 0x1d6c0, - 0x1d6c2, 0x1d6da, - 0x1d6dc, 0x1d6fa, - 0x1d6fc, 0x1d714, - 0x1d716, 0x1d734, - 0x1d736, 0x1d74e, - 0x1d750, 0x1d76e, - 0x1d770, 0x1d788, - 0x1d78a, 0x1d7a8, - 0x1d7aa, 0x1d7c2, - 0x1d7c4, 0x1d7cb, - 0x1d7ce, 0x1d7ff, - 0x1e000, 0x1e006, - 0x1e008, 0x1e018, - 0x1e01b, 0x1e021, - 0x1e023, 0x1e024, - 0x1e026, 0x1e02a, - 0x1e800, 0x1e8c4, - 0x1e900, 0x1e943, - 0x1e947, 0x1e947, - 0x1e950, 0x1e959, - 0x1ee00, 0x1ee03, - 0x1ee05, 0x1ee1f, - 0x1ee21, 0x1ee22, - 0x1ee24, 0x1ee24, - 0x1ee27, 0x1ee27, - 0x1ee29, 0x1ee32, - 0x1ee34, 0x1ee37, - 0x1ee39, 0x1ee39, - 0x1ee3b, 0x1ee3b, - 0x1ee42, 0x1ee42, - 0x1ee47, 0x1ee47, - 0x1ee49, 0x1ee49, - 0x1ee4b, 0x1ee4b, - 0x1ee4d, 0x1ee4f, - 0x1ee51, 0x1ee52, - 0x1ee54, 0x1ee54, - 0x1ee57, 0x1ee57, - 0x1ee59, 0x1ee59, - 0x1ee5b, 0x1ee5b, - 0x1ee5d, 0x1ee5d, - 0x1ee5f, 0x1ee5f, - 0x1ee61, 0x1ee62, - 0x1ee64, 0x1ee64, - 0x1ee67, 0x1ee6a, - 0x1ee6c, 0x1ee72, - 0x1ee74, 0x1ee77, - 0x1ee79, 0x1ee7c, - 0x1ee7e, 0x1ee7e, - 0x1ee80, 0x1ee89, - 0x1ee8b, 0x1ee9b, - 0x1eea1, 0x1eea3, - 0x1eea5, 0x1eea9, - 0x1eeab, 0x1eebb, - 0x1f130, 0x1f149, - 0x1f150, 0x1f169, - 0x1f170, 0x1f189, - 0x20000, 0x2a6d6, - 0x2a700, 0x2b734, - 0x2b740, 0x2b81d, - 0x2b820, 0x2cea1, - 0x2f800, 0x2fa1d, -}; /* CR_Alnum */ - -/* 'ASCII': [[:ASCII:]] */ -static const OnigCodePoint CR_ASCII[] = { - 1, - 0x0000, 0x007f, -}; /* CR_ASCII */ - -/* 'Punct' */ -static const OnigCodePoint CR_Punct[] = { - 168, - 0x0021, 0x0023, - 0x0025, 0x002a, - 0x002c, 0x002f, - 0x003a, 0x003b, - 0x003f, 0x0040, - 0x005b, 0x005d, - 0x005f, 0x005f, - 0x007b, 0x007b, - 0x007d, 0x007d, - 0x00a1, 0x00a1, - 0x00a7, 0x00a7, - 0x00ab, 0x00ab, - 0x00b6, 0x00b7, - 0x00bb, 0x00bb, - 0x00bf, 0x00bf, - 0x037e, 0x037e, - 0x0387, 0x0387, - 0x055a, 0x055f, - 0x0589, 0x058a, - 0x05be, 0x05be, - 0x05c0, 0x05c0, - 0x05c3, 0x05c3, - 0x05c6, 0x05c6, - 0x05f3, 0x05f4, - 0x0609, 0x060a, - 0x060c, 0x060d, - 0x061b, 0x061b, - 0x061e, 0x061f, - 0x066a, 0x066d, - 0x06d4, 0x06d4, - 0x0700, 0x070d, - 0x07f7, 0x07f9, - 0x0830, 0x083e, - 0x085e, 0x085e, - 0x0964, 0x0965, - 0x0970, 0x0970, - 0x0af0, 0x0af0, - 0x0df4, 0x0df4, - 0x0e4f, 0x0e4f, - 0x0e5a, 0x0e5b, - 0x0f04, 0x0f12, - 0x0f14, 0x0f14, - 0x0f3a, 0x0f3d, - 0x0f85, 0x0f85, - 0x0fd0, 0x0fd4, - 0x0fd9, 0x0fda, - 0x104a, 0x104f, - 0x10fb, 0x10fb, - 0x1360, 0x1368, - 0x1400, 0x1400, - 0x166d, 0x166e, - 0x169b, 0x169c, - 0x16eb, 0x16ed, - 0x1735, 0x1736, - 0x17d4, 0x17d6, - 0x17d8, 0x17da, - 0x1800, 0x180a, - 0x1944, 0x1945, - 0x1a1e, 0x1a1f, - 0x1aa0, 0x1aa6, - 0x1aa8, 0x1aad, - 0x1b5a, 0x1b60, - 0x1bfc, 0x1bff, - 0x1c3b, 0x1c3f, - 0x1c7e, 0x1c7f, - 0x1cc0, 0x1cc7, - 0x1cd3, 0x1cd3, - 0x2010, 0x2027, - 0x2030, 0x2043, - 0x2045, 0x2051, - 0x2053, 0x205e, - 0x207d, 0x207e, - 0x208d, 0x208e, - 0x2308, 0x230b, - 0x2329, 0x232a, - 0x2768, 0x2775, - 0x27c5, 0x27c6, - 0x27e6, 0x27ef, - 0x2983, 0x2998, - 0x29d8, 0x29db, - 0x29fc, 0x29fd, - 0x2cf9, 0x2cfc, - 0x2cfe, 0x2cff, - 0x2d70, 0x2d70, - 0x2e00, 0x2e2e, - 0x2e30, 0x2e44, - 0x3001, 0x3003, - 0x3008, 0x3011, - 0x3014, 0x301f, - 0x3030, 0x3030, - 0x303d, 0x303d, - 0x30a0, 0x30a0, - 0x30fb, 0x30fb, - 0xa4fe, 0xa4ff, - 0xa60d, 0xa60f, - 0xa673, 0xa673, - 0xa67e, 0xa67e, - 0xa6f2, 0xa6f7, - 0xa874, 0xa877, - 0xa8ce, 0xa8cf, - 0xa8f8, 0xa8fa, - 0xa8fc, 0xa8fc, - 0xa92e, 0xa92f, - 0xa95f, 0xa95f, - 0xa9c1, 0xa9cd, - 0xa9de, 0xa9df, - 0xaa5c, 0xaa5f, - 0xaade, 0xaadf, - 0xaaf0, 0xaaf1, - 0xabeb, 0xabeb, - 0xfd3e, 0xfd3f, - 0xfe10, 0xfe19, - 0xfe30, 0xfe52, - 0xfe54, 0xfe61, - 0xfe63, 0xfe63, - 0xfe68, 0xfe68, - 0xfe6a, 0xfe6b, - 0xff01, 0xff03, - 0xff05, 0xff0a, - 0xff0c, 0xff0f, - 0xff1a, 0xff1b, - 0xff1f, 0xff20, - 0xff3b, 0xff3d, - 0xff3f, 0xff3f, - 0xff5b, 0xff5b, - 0xff5d, 0xff5d, - 0xff5f, 0xff65, - 0x10100, 0x10102, - 0x1039f, 0x1039f, - 0x103d0, 0x103d0, - 0x1056f, 0x1056f, - 0x10857, 0x10857, - 0x1091f, 0x1091f, - 0x1093f, 0x1093f, - 0x10a50, 0x10a58, - 0x10a7f, 0x10a7f, - 0x10af0, 0x10af6, - 0x10b39, 0x10b3f, - 0x10b99, 0x10b9c, - 0x11047, 0x1104d, - 0x110bb, 0x110bc, - 0x110be, 0x110c1, - 0x11140, 0x11143, - 0x11174, 0x11175, - 0x111c5, 0x111c9, - 0x111cd, 0x111cd, - 0x111db, 0x111db, - 0x111dd, 0x111df, - 0x11238, 0x1123d, - 0x112a9, 0x112a9, - 0x1144b, 0x1144f, - 0x1145b, 0x1145b, - 0x1145d, 0x1145d, - 0x114c6, 0x114c6, - 0x115c1, 0x115d7, - 0x11641, 0x11643, - 0x11660, 0x1166c, - 0x1173c, 0x1173e, - 0x11c41, 0x11c45, - 0x11c70, 0x11c71, - 0x12470, 0x12474, - 0x16a6e, 0x16a6f, - 0x16af5, 0x16af5, - 0x16b37, 0x16b3b, - 0x16b44, 0x16b44, - 0x1bc9f, 0x1bc9f, - 0x1da87, 0x1da8b, - 0x1e95e, 0x1e95f, -}; /* CR_Punct */ - -#ifdef USE_UNICODE_PROPERTIES -/* 'Any': - */ -static const OnigCodePoint CR_Any[] = { - 1, - 0x0000, 0x10ffff, -}; /* CR_Any */ - -/* 'Assigned': - */ -static const OnigCodePoint CR_Assigned[] = { - 638, - 0x0000, 0x0377, - 0x037a, 0x037f, - 0x0384, 0x038a, - 0x038c, 0x038c, - 0x038e, 0x03a1, - 0x03a3, 0x052f, - 0x0531, 0x0556, - 0x0559, 0x055f, - 0x0561, 0x0587, - 0x0589, 0x058a, - 0x058d, 0x058f, - 0x0591, 0x05c7, - 0x05d0, 0x05ea, - 0x05f0, 0x05f4, - 0x0600, 0x061c, - 0x061e, 0x070d, - 0x070f, 0x074a, - 0x074d, 0x07b1, - 0x07c0, 0x07fa, - 0x0800, 0x082d, - 0x0830, 0x083e, - 0x0840, 0x085b, - 0x085e, 0x085e, - 0x08a0, 0x08b4, - 0x08b6, 0x08bd, - 0x08d4, 0x0983, - 0x0985, 0x098c, - 0x098f, 0x0990, - 0x0993, 0x09a8, - 0x09aa, 0x09b0, - 0x09b2, 0x09b2, - 0x09b6, 0x09b9, - 0x09bc, 0x09c4, - 0x09c7, 0x09c8, - 0x09cb, 0x09ce, - 0x09d7, 0x09d7, - 0x09dc, 0x09dd, - 0x09df, 0x09e3, - 0x09e6, 0x09fb, - 0x0a01, 0x0a03, - 0x0a05, 0x0a0a, - 0x0a0f, 0x0a10, - 0x0a13, 0x0a28, - 0x0a2a, 0x0a30, - 0x0a32, 0x0a33, - 0x0a35, 0x0a36, - 0x0a38, 0x0a39, - 0x0a3c, 0x0a3c, - 0x0a3e, 0x0a42, - 0x0a47, 0x0a48, - 0x0a4b, 0x0a4d, - 0x0a51, 0x0a51, - 0x0a59, 0x0a5c, - 0x0a5e, 0x0a5e, - 0x0a66, 0x0a75, - 0x0a81, 0x0a83, - 0x0a85, 0x0a8d, - 0x0a8f, 0x0a91, - 0x0a93, 0x0aa8, - 0x0aaa, 0x0ab0, - 0x0ab2, 0x0ab3, - 0x0ab5, 0x0ab9, - 0x0abc, 0x0ac5, - 0x0ac7, 0x0ac9, - 0x0acb, 0x0acd, - 0x0ad0, 0x0ad0, - 0x0ae0, 0x0ae3, - 0x0ae6, 0x0af1, - 0x0af9, 0x0af9, - 0x0b01, 0x0b03, - 0x0b05, 0x0b0c, - 0x0b0f, 0x0b10, - 0x0b13, 0x0b28, - 0x0b2a, 0x0b30, - 0x0b32, 0x0b33, - 0x0b35, 0x0b39, - 0x0b3c, 0x0b44, - 0x0b47, 0x0b48, - 0x0b4b, 0x0b4d, - 0x0b56, 0x0b57, - 0x0b5c, 0x0b5d, - 0x0b5f, 0x0b63, - 0x0b66, 0x0b77, - 0x0b82, 0x0b83, - 0x0b85, 0x0b8a, - 0x0b8e, 0x0b90, - 0x0b92, 0x0b95, - 0x0b99, 0x0b9a, - 0x0b9c, 0x0b9c, - 0x0b9e, 0x0b9f, - 0x0ba3, 0x0ba4, - 0x0ba8, 0x0baa, - 0x0bae, 0x0bb9, - 0x0bbe, 0x0bc2, - 0x0bc6, 0x0bc8, - 0x0bca, 0x0bcd, - 0x0bd0, 0x0bd0, - 0x0bd7, 0x0bd7, - 0x0be6, 0x0bfa, - 0x0c00, 0x0c03, - 0x0c05, 0x0c0c, - 0x0c0e, 0x0c10, - 0x0c12, 0x0c28, - 0x0c2a, 0x0c39, - 0x0c3d, 0x0c44, - 0x0c46, 0x0c48, - 0x0c4a, 0x0c4d, - 0x0c55, 0x0c56, - 0x0c58, 0x0c5a, - 0x0c60, 0x0c63, - 0x0c66, 0x0c6f, - 0x0c78, 0x0c83, - 0x0c85, 0x0c8c, - 0x0c8e, 0x0c90, - 0x0c92, 0x0ca8, - 0x0caa, 0x0cb3, - 0x0cb5, 0x0cb9, - 0x0cbc, 0x0cc4, - 0x0cc6, 0x0cc8, - 0x0cca, 0x0ccd, - 0x0cd5, 0x0cd6, - 0x0cde, 0x0cde, - 0x0ce0, 0x0ce3, - 0x0ce6, 0x0cef, - 0x0cf1, 0x0cf2, - 0x0d01, 0x0d03, - 0x0d05, 0x0d0c, - 0x0d0e, 0x0d10, - 0x0d12, 0x0d3a, - 0x0d3d, 0x0d44, - 0x0d46, 0x0d48, - 0x0d4a, 0x0d4f, - 0x0d54, 0x0d63, - 0x0d66, 0x0d7f, - 0x0d82, 0x0d83, - 0x0d85, 0x0d96, - 0x0d9a, 0x0db1, - 0x0db3, 0x0dbb, - 0x0dbd, 0x0dbd, - 0x0dc0, 0x0dc6, - 0x0dca, 0x0dca, - 0x0dcf, 0x0dd4, - 0x0dd6, 0x0dd6, - 0x0dd8, 0x0ddf, - 0x0de6, 0x0def, - 0x0df2, 0x0df4, - 0x0e01, 0x0e3a, - 0x0e3f, 0x0e5b, - 0x0e81, 0x0e82, - 0x0e84, 0x0e84, - 0x0e87, 0x0e88, - 0x0e8a, 0x0e8a, - 0x0e8d, 0x0e8d, - 0x0e94, 0x0e97, - 0x0e99, 0x0e9f, - 0x0ea1, 0x0ea3, - 0x0ea5, 0x0ea5, - 0x0ea7, 0x0ea7, - 0x0eaa, 0x0eab, - 0x0ead, 0x0eb9, - 0x0ebb, 0x0ebd, - 0x0ec0, 0x0ec4, - 0x0ec6, 0x0ec6, - 0x0ec8, 0x0ecd, - 0x0ed0, 0x0ed9, - 0x0edc, 0x0edf, - 0x0f00, 0x0f47, - 0x0f49, 0x0f6c, - 0x0f71, 0x0f97, - 0x0f99, 0x0fbc, - 0x0fbe, 0x0fcc, - 0x0fce, 0x0fda, - 0x1000, 0x10c5, - 0x10c7, 0x10c7, - 0x10cd, 0x10cd, - 0x10d0, 0x1248, - 0x124a, 0x124d, - 0x1250, 0x1256, - 0x1258, 0x1258, - 0x125a, 0x125d, - 0x1260, 0x1288, - 0x128a, 0x128d, - 0x1290, 0x12b0, - 0x12b2, 0x12b5, - 0x12b8, 0x12be, - 0x12c0, 0x12c0, - 0x12c2, 0x12c5, - 0x12c8, 0x12d6, - 0x12d8, 0x1310, - 0x1312, 0x1315, - 0x1318, 0x135a, - 0x135d, 0x137c, - 0x1380, 0x1399, - 0x13a0, 0x13f5, - 0x13f8, 0x13fd, - 0x1400, 0x169c, - 0x16a0, 0x16f8, - 0x1700, 0x170c, - 0x170e, 0x1714, - 0x1720, 0x1736, - 0x1740, 0x1753, - 0x1760, 0x176c, - 0x176e, 0x1770, - 0x1772, 0x1773, - 0x1780, 0x17dd, - 0x17e0, 0x17e9, - 0x17f0, 0x17f9, - 0x1800, 0x180e, - 0x1810, 0x1819, - 0x1820, 0x1877, - 0x1880, 0x18aa, - 0x18b0, 0x18f5, - 0x1900, 0x191e, - 0x1920, 0x192b, - 0x1930, 0x193b, - 0x1940, 0x1940, - 0x1944, 0x196d, - 0x1970, 0x1974, - 0x1980, 0x19ab, - 0x19b0, 0x19c9, - 0x19d0, 0x19da, - 0x19de, 0x1a1b, - 0x1a1e, 0x1a5e, - 0x1a60, 0x1a7c, - 0x1a7f, 0x1a89, - 0x1a90, 0x1a99, - 0x1aa0, 0x1aad, - 0x1ab0, 0x1abe, - 0x1b00, 0x1b4b, - 0x1b50, 0x1b7c, - 0x1b80, 0x1bf3, - 0x1bfc, 0x1c37, - 0x1c3b, 0x1c49, - 0x1c4d, 0x1c88, - 0x1cc0, 0x1cc7, - 0x1cd0, 0x1cf6, - 0x1cf8, 0x1cf9, - 0x1d00, 0x1df5, - 0x1dfb, 0x1f15, - 0x1f18, 0x1f1d, - 0x1f20, 0x1f45, - 0x1f48, 0x1f4d, - 0x1f50, 0x1f57, - 0x1f59, 0x1f59, - 0x1f5b, 0x1f5b, - 0x1f5d, 0x1f5d, - 0x1f5f, 0x1f7d, - 0x1f80, 0x1fb4, - 0x1fb6, 0x1fc4, - 0x1fc6, 0x1fd3, - 0x1fd6, 0x1fdb, - 0x1fdd, 0x1fef, - 0x1ff2, 0x1ff4, - 0x1ff6, 0x1ffe, - 0x2000, 0x2064, - 0x2066, 0x2071, - 0x2074, 0x208e, - 0x2090, 0x209c, - 0x20a0, 0x20be, - 0x20d0, 0x20f0, - 0x2100, 0x218b, - 0x2190, 0x23fe, - 0x2400, 0x2426, - 0x2440, 0x244a, - 0x2460, 0x2b73, - 0x2b76, 0x2b95, - 0x2b98, 0x2bb9, - 0x2bbd, 0x2bc8, - 0x2bca, 0x2bd1, - 0x2bec, 0x2bef, - 0x2c00, 0x2c2e, - 0x2c30, 0x2c5e, - 0x2c60, 0x2cf3, - 0x2cf9, 0x2d25, - 0x2d27, 0x2d27, - 0x2d2d, 0x2d2d, - 0x2d30, 0x2d67, - 0x2d6f, 0x2d70, - 0x2d7f, 0x2d96, - 0x2da0, 0x2da6, - 0x2da8, 0x2dae, - 0x2db0, 0x2db6, - 0x2db8, 0x2dbe, - 0x2dc0, 0x2dc6, - 0x2dc8, 0x2dce, - 0x2dd0, 0x2dd6, - 0x2dd8, 0x2dde, - 0x2de0, 0x2e44, - 0x2e80, 0x2e99, - 0x2e9b, 0x2ef3, - 0x2f00, 0x2fd5, - 0x2ff0, 0x2ffb, - 0x3000, 0x303f, - 0x3041, 0x3096, - 0x3099, 0x30ff, - 0x3105, 0x312d, - 0x3131, 0x318e, - 0x3190, 0x31ba, - 0x31c0, 0x31e3, - 0x31f0, 0x321e, - 0x3220, 0x32fe, - 0x3300, 0x4db5, - 0x4dc0, 0x9fd5, - 0xa000, 0xa48c, - 0xa490, 0xa4c6, - 0xa4d0, 0xa62b, - 0xa640, 0xa6f7, - 0xa700, 0xa7ae, - 0xa7b0, 0xa7b7, - 0xa7f7, 0xa82b, - 0xa830, 0xa839, - 0xa840, 0xa877, - 0xa880, 0xa8c5, - 0xa8ce, 0xa8d9, - 0xa8e0, 0xa8fd, - 0xa900, 0xa953, - 0xa95f, 0xa97c, - 0xa980, 0xa9cd, - 0xa9cf, 0xa9d9, - 0xa9de, 0xa9fe, - 0xaa00, 0xaa36, - 0xaa40, 0xaa4d, - 0xaa50, 0xaa59, - 0xaa5c, 0xaac2, - 0xaadb, 0xaaf6, - 0xab01, 0xab06, - 0xab09, 0xab0e, - 0xab11, 0xab16, - 0xab20, 0xab26, - 0xab28, 0xab2e, - 0xab30, 0xab65, - 0xab70, 0xabed, - 0xabf0, 0xabf9, - 0xac00, 0xd7a3, - 0xd7b0, 0xd7c6, - 0xd7cb, 0xd7fb, - 0xd800, 0xfa6d, - 0xfa70, 0xfad9, - 0xfb00, 0xfb06, - 0xfb13, 0xfb17, - 0xfb1d, 0xfb36, - 0xfb38, 0xfb3c, - 0xfb3e, 0xfb3e, - 0xfb40, 0xfb41, - 0xfb43, 0xfb44, - 0xfb46, 0xfbc1, - 0xfbd3, 0xfd3f, - 0xfd50, 0xfd8f, - 0xfd92, 0xfdc7, - 0xfdf0, 0xfdfd, - 0xfe00, 0xfe19, - 0xfe20, 0xfe52, - 0xfe54, 0xfe66, - 0xfe68, 0xfe6b, - 0xfe70, 0xfe74, - 0xfe76, 0xfefc, - 0xfeff, 0xfeff, - 0xff01, 0xffbe, - 0xffc2, 0xffc7, - 0xffca, 0xffcf, - 0xffd2, 0xffd7, - 0xffda, 0xffdc, - 0xffe0, 0xffe6, - 0xffe8, 0xffee, - 0xfff9, 0xfffd, - 0x10000, 0x1000b, - 0x1000d, 0x10026, - 0x10028, 0x1003a, - 0x1003c, 0x1003d, - 0x1003f, 0x1004d, - 0x10050, 0x1005d, - 0x10080, 0x100fa, - 0x10100, 0x10102, - 0x10107, 0x10133, - 0x10137, 0x1018e, - 0x10190, 0x1019b, - 0x101a0, 0x101a0, - 0x101d0, 0x101fd, - 0x10280, 0x1029c, - 0x102a0, 0x102d0, - 0x102e0, 0x102fb, - 0x10300, 0x10323, - 0x10330, 0x1034a, - 0x10350, 0x1037a, - 0x10380, 0x1039d, - 0x1039f, 0x103c3, - 0x103c8, 0x103d5, - 0x10400, 0x1049d, - 0x104a0, 0x104a9, - 0x104b0, 0x104d3, - 0x104d8, 0x104fb, - 0x10500, 0x10527, - 0x10530, 0x10563, - 0x1056f, 0x1056f, - 0x10600, 0x10736, - 0x10740, 0x10755, - 0x10760, 0x10767, - 0x10800, 0x10805, - 0x10808, 0x10808, - 0x1080a, 0x10835, - 0x10837, 0x10838, - 0x1083c, 0x1083c, - 0x1083f, 0x10855, - 0x10857, 0x1089e, - 0x108a7, 0x108af, - 0x108e0, 0x108f2, - 0x108f4, 0x108f5, - 0x108fb, 0x1091b, - 0x1091f, 0x10939, - 0x1093f, 0x1093f, - 0x10980, 0x109b7, - 0x109bc, 0x109cf, - 0x109d2, 0x10a03, - 0x10a05, 0x10a06, - 0x10a0c, 0x10a13, - 0x10a15, 0x10a17, - 0x10a19, 0x10a33, - 0x10a38, 0x10a3a, - 0x10a3f, 0x10a47, - 0x10a50, 0x10a58, - 0x10a60, 0x10a9f, - 0x10ac0, 0x10ae6, - 0x10aeb, 0x10af6, - 0x10b00, 0x10b35, - 0x10b39, 0x10b55, - 0x10b58, 0x10b72, - 0x10b78, 0x10b91, - 0x10b99, 0x10b9c, - 0x10ba9, 0x10baf, - 0x10c00, 0x10c48, - 0x10c80, 0x10cb2, - 0x10cc0, 0x10cf2, - 0x10cfa, 0x10cff, - 0x10e60, 0x10e7e, - 0x11000, 0x1104d, - 0x11052, 0x1106f, - 0x1107f, 0x110c1, - 0x110d0, 0x110e8, - 0x110f0, 0x110f9, - 0x11100, 0x11134, - 0x11136, 0x11143, - 0x11150, 0x11176, - 0x11180, 0x111cd, - 0x111d0, 0x111df, - 0x111e1, 0x111f4, - 0x11200, 0x11211, - 0x11213, 0x1123e, - 0x11280, 0x11286, - 0x11288, 0x11288, - 0x1128a, 0x1128d, - 0x1128f, 0x1129d, - 0x1129f, 0x112a9, - 0x112b0, 0x112ea, - 0x112f0, 0x112f9, - 0x11300, 0x11303, - 0x11305, 0x1130c, - 0x1130f, 0x11310, - 0x11313, 0x11328, - 0x1132a, 0x11330, - 0x11332, 0x11333, - 0x11335, 0x11339, - 0x1133c, 0x11344, - 0x11347, 0x11348, - 0x1134b, 0x1134d, - 0x11350, 0x11350, - 0x11357, 0x11357, - 0x1135d, 0x11363, - 0x11366, 0x1136c, - 0x11370, 0x11374, - 0x11400, 0x11459, - 0x1145b, 0x1145b, - 0x1145d, 0x1145d, - 0x11480, 0x114c7, - 0x114d0, 0x114d9, - 0x11580, 0x115b5, - 0x115b8, 0x115dd, - 0x11600, 0x11644, - 0x11650, 0x11659, - 0x11660, 0x1166c, - 0x11680, 0x116b7, - 0x116c0, 0x116c9, - 0x11700, 0x11719, - 0x1171d, 0x1172b, - 0x11730, 0x1173f, - 0x118a0, 0x118f2, - 0x118ff, 0x118ff, - 0x11ac0, 0x11af8, - 0x11c00, 0x11c08, - 0x11c0a, 0x11c36, - 0x11c38, 0x11c45, - 0x11c50, 0x11c6c, - 0x11c70, 0x11c8f, - 0x11c92, 0x11ca7, - 0x11ca9, 0x11cb6, - 0x12000, 0x12399, - 0x12400, 0x1246e, - 0x12470, 0x12474, - 0x12480, 0x12543, - 0x13000, 0x1342e, - 0x14400, 0x14646, - 0x16800, 0x16a38, - 0x16a40, 0x16a5e, - 0x16a60, 0x16a69, - 0x16a6e, 0x16a6f, - 0x16ad0, 0x16aed, - 0x16af0, 0x16af5, - 0x16b00, 0x16b45, - 0x16b50, 0x16b59, - 0x16b5b, 0x16b61, - 0x16b63, 0x16b77, - 0x16b7d, 0x16b8f, - 0x16f00, 0x16f44, - 0x16f50, 0x16f7e, - 0x16f8f, 0x16f9f, - 0x16fe0, 0x16fe0, - 0x17000, 0x187ec, - 0x18800, 0x18af2, - 0x1b000, 0x1b001, - 0x1bc00, 0x1bc6a, - 0x1bc70, 0x1bc7c, - 0x1bc80, 0x1bc88, - 0x1bc90, 0x1bc99, - 0x1bc9c, 0x1bca3, - 0x1d000, 0x1d0f5, - 0x1d100, 0x1d126, - 0x1d129, 0x1d1e8, - 0x1d200, 0x1d245, - 0x1d300, 0x1d356, - 0x1d360, 0x1d371, - 0x1d400, 0x1d454, - 0x1d456, 0x1d49c, - 0x1d49e, 0x1d49f, - 0x1d4a2, 0x1d4a2, - 0x1d4a5, 0x1d4a6, - 0x1d4a9, 0x1d4ac, - 0x1d4ae, 0x1d4b9, - 0x1d4bb, 0x1d4bb, - 0x1d4bd, 0x1d4c3, - 0x1d4c5, 0x1d505, - 0x1d507, 0x1d50a, - 0x1d50d, 0x1d514, - 0x1d516, 0x1d51c, - 0x1d51e, 0x1d539, - 0x1d53b, 0x1d53e, - 0x1d540, 0x1d544, - 0x1d546, 0x1d546, - 0x1d54a, 0x1d550, - 0x1d552, 0x1d6a5, - 0x1d6a8, 0x1d7cb, - 0x1d7ce, 0x1da8b, - 0x1da9b, 0x1da9f, - 0x1daa1, 0x1daaf, - 0x1e000, 0x1e006, - 0x1e008, 0x1e018, - 0x1e01b, 0x1e021, - 0x1e023, 0x1e024, - 0x1e026, 0x1e02a, - 0x1e800, 0x1e8c4, - 0x1e8c7, 0x1e8d6, - 0x1e900, 0x1e94a, - 0x1e950, 0x1e959, - 0x1e95e, 0x1e95f, - 0x1ee00, 0x1ee03, - 0x1ee05, 0x1ee1f, - 0x1ee21, 0x1ee22, - 0x1ee24, 0x1ee24, - 0x1ee27, 0x1ee27, - 0x1ee29, 0x1ee32, - 0x1ee34, 0x1ee37, - 0x1ee39, 0x1ee39, - 0x1ee3b, 0x1ee3b, - 0x1ee42, 0x1ee42, - 0x1ee47, 0x1ee47, - 0x1ee49, 0x1ee49, - 0x1ee4b, 0x1ee4b, - 0x1ee4d, 0x1ee4f, - 0x1ee51, 0x1ee52, - 0x1ee54, 0x1ee54, - 0x1ee57, 0x1ee57, - 0x1ee59, 0x1ee59, - 0x1ee5b, 0x1ee5b, - 0x1ee5d, 0x1ee5d, - 0x1ee5f, 0x1ee5f, - 0x1ee61, 0x1ee62, - 0x1ee64, 0x1ee64, - 0x1ee67, 0x1ee6a, - 0x1ee6c, 0x1ee72, - 0x1ee74, 0x1ee77, - 0x1ee79, 0x1ee7c, - 0x1ee7e, 0x1ee7e, - 0x1ee80, 0x1ee89, - 0x1ee8b, 0x1ee9b, - 0x1eea1, 0x1eea3, - 0x1eea5, 0x1eea9, - 0x1eeab, 0x1eebb, - 0x1eef0, 0x1eef1, - 0x1f000, 0x1f02b, - 0x1f030, 0x1f093, - 0x1f0a0, 0x1f0ae, - 0x1f0b1, 0x1f0bf, - 0x1f0c1, 0x1f0cf, - 0x1f0d1, 0x1f0f5, - 0x1f100, 0x1f10c, - 0x1f110, 0x1f12e, - 0x1f130, 0x1f16b, - 0x1f170, 0x1f1ac, - 0x1f1e6, 0x1f202, - 0x1f210, 0x1f23b, - 0x1f240, 0x1f248, - 0x1f250, 0x1f251, - 0x1f300, 0x1f6d2, - 0x1f6e0, 0x1f6ec, - 0x1f6f0, 0x1f6f6, - 0x1f700, 0x1f773, - 0x1f780, 0x1f7d4, - 0x1f800, 0x1f80b, - 0x1f810, 0x1f847, - 0x1f850, 0x1f859, - 0x1f860, 0x1f887, - 0x1f890, 0x1f8ad, - 0x1f910, 0x1f91e, - 0x1f920, 0x1f927, - 0x1f930, 0x1f930, - 0x1f933, 0x1f93e, - 0x1f940, 0x1f94b, - 0x1f950, 0x1f95e, - 0x1f980, 0x1f991, - 0x1f9c0, 0x1f9c0, - 0x20000, 0x2a6d6, - 0x2a700, 0x2b734, - 0x2b740, 0x2b81d, - 0x2b820, 0x2cea1, - 0x2f800, 0x2fa1d, - 0xe0001, 0xe0001, - 0xe0020, 0xe007f, - 0xe0100, 0xe01ef, - 0xf0000, 0xffffd, - 0x100000, 0x10fffd, -}; /* CR_Assigned */ - -/* 'C': Major Category */ -static const OnigCodePoint CR_C[] = { - 642, - 0x0000, 0x001f, - 0x007f, 0x009f, - 0x00ad, 0x00ad, - 0x0378, 0x0379, - 0x0380, 0x0383, - 0x038b, 0x038b, - 0x038d, 0x038d, - 0x03a2, 0x03a2, - 0x0530, 0x0530, - 0x0557, 0x0558, - 0x0560, 0x0560, - 0x0588, 0x0588, - 0x058b, 0x058c, - 0x0590, 0x0590, - 0x05c8, 0x05cf, - 0x05eb, 0x05ef, - 0x05f5, 0x0605, - 0x061c, 0x061d, - 0x06dd, 0x06dd, - 0x070e, 0x070f, - 0x074b, 0x074c, - 0x07b2, 0x07bf, - 0x07fb, 0x07ff, - 0x082e, 0x082f, - 0x083f, 0x083f, - 0x085c, 0x085d, - 0x085f, 0x089f, - 0x08b5, 0x08b5, - 0x08be, 0x08d3, - 0x08e2, 0x08e2, - 0x0984, 0x0984, - 0x098d, 0x098e, - 0x0991, 0x0992, - 0x09a9, 0x09a9, - 0x09b1, 0x09b1, - 0x09b3, 0x09b5, - 0x09ba, 0x09bb, - 0x09c5, 0x09c6, - 0x09c9, 0x09ca, - 0x09cf, 0x09d6, - 0x09d8, 0x09db, - 0x09de, 0x09de, - 0x09e4, 0x09e5, - 0x09fc, 0x0a00, - 0x0a04, 0x0a04, - 0x0a0b, 0x0a0e, - 0x0a11, 0x0a12, - 0x0a29, 0x0a29, - 0x0a31, 0x0a31, - 0x0a34, 0x0a34, - 0x0a37, 0x0a37, - 0x0a3a, 0x0a3b, - 0x0a3d, 0x0a3d, - 0x0a43, 0x0a46, - 0x0a49, 0x0a4a, - 0x0a4e, 0x0a50, - 0x0a52, 0x0a58, - 0x0a5d, 0x0a5d, - 0x0a5f, 0x0a65, - 0x0a76, 0x0a80, - 0x0a84, 0x0a84, - 0x0a8e, 0x0a8e, - 0x0a92, 0x0a92, - 0x0aa9, 0x0aa9, - 0x0ab1, 0x0ab1, - 0x0ab4, 0x0ab4, - 0x0aba, 0x0abb, - 0x0ac6, 0x0ac6, - 0x0aca, 0x0aca, - 0x0ace, 0x0acf, - 0x0ad1, 0x0adf, - 0x0ae4, 0x0ae5, - 0x0af2, 0x0af8, - 0x0afa, 0x0b00, - 0x0b04, 0x0b04, - 0x0b0d, 0x0b0e, - 0x0b11, 0x0b12, - 0x0b29, 0x0b29, - 0x0b31, 0x0b31, - 0x0b34, 0x0b34, - 0x0b3a, 0x0b3b, - 0x0b45, 0x0b46, - 0x0b49, 0x0b4a, - 0x0b4e, 0x0b55, - 0x0b58, 0x0b5b, - 0x0b5e, 0x0b5e, - 0x0b64, 0x0b65, - 0x0b78, 0x0b81, - 0x0b84, 0x0b84, - 0x0b8b, 0x0b8d, - 0x0b91, 0x0b91, - 0x0b96, 0x0b98, - 0x0b9b, 0x0b9b, - 0x0b9d, 0x0b9d, - 0x0ba0, 0x0ba2, - 0x0ba5, 0x0ba7, - 0x0bab, 0x0bad, - 0x0bba, 0x0bbd, - 0x0bc3, 0x0bc5, - 0x0bc9, 0x0bc9, - 0x0bce, 0x0bcf, - 0x0bd1, 0x0bd6, - 0x0bd8, 0x0be5, - 0x0bfb, 0x0bff, - 0x0c04, 0x0c04, - 0x0c0d, 0x0c0d, - 0x0c11, 0x0c11, - 0x0c29, 0x0c29, - 0x0c3a, 0x0c3c, - 0x0c45, 0x0c45, - 0x0c49, 0x0c49, - 0x0c4e, 0x0c54, - 0x0c57, 0x0c57, - 0x0c5b, 0x0c5f, - 0x0c64, 0x0c65, - 0x0c70, 0x0c77, - 0x0c84, 0x0c84, - 0x0c8d, 0x0c8d, - 0x0c91, 0x0c91, - 0x0ca9, 0x0ca9, - 0x0cb4, 0x0cb4, - 0x0cba, 0x0cbb, - 0x0cc5, 0x0cc5, - 0x0cc9, 0x0cc9, - 0x0cce, 0x0cd4, - 0x0cd7, 0x0cdd, - 0x0cdf, 0x0cdf, - 0x0ce4, 0x0ce5, - 0x0cf0, 0x0cf0, - 0x0cf3, 0x0d00, - 0x0d04, 0x0d04, - 0x0d0d, 0x0d0d, - 0x0d11, 0x0d11, - 0x0d3b, 0x0d3c, - 0x0d45, 0x0d45, - 0x0d49, 0x0d49, - 0x0d50, 0x0d53, - 0x0d64, 0x0d65, - 0x0d80, 0x0d81, - 0x0d84, 0x0d84, - 0x0d97, 0x0d99, - 0x0db2, 0x0db2, - 0x0dbc, 0x0dbc, - 0x0dbe, 0x0dbf, - 0x0dc7, 0x0dc9, - 0x0dcb, 0x0dce, - 0x0dd5, 0x0dd5, - 0x0dd7, 0x0dd7, - 0x0de0, 0x0de5, - 0x0df0, 0x0df1, - 0x0df5, 0x0e00, - 0x0e3b, 0x0e3e, - 0x0e5c, 0x0e80, - 0x0e83, 0x0e83, - 0x0e85, 0x0e86, - 0x0e89, 0x0e89, - 0x0e8b, 0x0e8c, - 0x0e8e, 0x0e93, - 0x0e98, 0x0e98, - 0x0ea0, 0x0ea0, - 0x0ea4, 0x0ea4, - 0x0ea6, 0x0ea6, - 0x0ea8, 0x0ea9, - 0x0eac, 0x0eac, - 0x0eba, 0x0eba, - 0x0ebe, 0x0ebf, - 0x0ec5, 0x0ec5, - 0x0ec7, 0x0ec7, - 0x0ece, 0x0ecf, - 0x0eda, 0x0edb, - 0x0ee0, 0x0eff, - 0x0f48, 0x0f48, - 0x0f6d, 0x0f70, - 0x0f98, 0x0f98, - 0x0fbd, 0x0fbd, - 0x0fcd, 0x0fcd, - 0x0fdb, 0x0fff, - 0x10c6, 0x10c6, - 0x10c8, 0x10cc, - 0x10ce, 0x10cf, - 0x1249, 0x1249, - 0x124e, 0x124f, - 0x1257, 0x1257, - 0x1259, 0x1259, - 0x125e, 0x125f, - 0x1289, 0x1289, - 0x128e, 0x128f, - 0x12b1, 0x12b1, - 0x12b6, 0x12b7, - 0x12bf, 0x12bf, - 0x12c1, 0x12c1, - 0x12c6, 0x12c7, - 0x12d7, 0x12d7, - 0x1311, 0x1311, - 0x1316, 0x1317, - 0x135b, 0x135c, - 0x137d, 0x137f, - 0x139a, 0x139f, - 0x13f6, 0x13f7, - 0x13fe, 0x13ff, - 0x169d, 0x169f, - 0x16f9, 0x16ff, - 0x170d, 0x170d, - 0x1715, 0x171f, - 0x1737, 0x173f, - 0x1754, 0x175f, - 0x176d, 0x176d, - 0x1771, 0x1771, - 0x1774, 0x177f, - 0x17de, 0x17df, - 0x17ea, 0x17ef, - 0x17fa, 0x17ff, - 0x180e, 0x180f, - 0x181a, 0x181f, - 0x1878, 0x187f, - 0x18ab, 0x18af, - 0x18f6, 0x18ff, - 0x191f, 0x191f, - 0x192c, 0x192f, - 0x193c, 0x193f, - 0x1941, 0x1943, - 0x196e, 0x196f, - 0x1975, 0x197f, - 0x19ac, 0x19af, - 0x19ca, 0x19cf, - 0x19db, 0x19dd, - 0x1a1c, 0x1a1d, - 0x1a5f, 0x1a5f, - 0x1a7d, 0x1a7e, - 0x1a8a, 0x1a8f, - 0x1a9a, 0x1a9f, - 0x1aae, 0x1aaf, - 0x1abf, 0x1aff, - 0x1b4c, 0x1b4f, - 0x1b7d, 0x1b7f, - 0x1bf4, 0x1bfb, - 0x1c38, 0x1c3a, - 0x1c4a, 0x1c4c, - 0x1c89, 0x1cbf, - 0x1cc8, 0x1ccf, - 0x1cf7, 0x1cf7, - 0x1cfa, 0x1cff, - 0x1df6, 0x1dfa, - 0x1f16, 0x1f17, - 0x1f1e, 0x1f1f, - 0x1f46, 0x1f47, - 0x1f4e, 0x1f4f, - 0x1f58, 0x1f58, - 0x1f5a, 0x1f5a, - 0x1f5c, 0x1f5c, - 0x1f5e, 0x1f5e, - 0x1f7e, 0x1f7f, - 0x1fb5, 0x1fb5, - 0x1fc5, 0x1fc5, - 0x1fd4, 0x1fd5, - 0x1fdc, 0x1fdc, - 0x1ff0, 0x1ff1, - 0x1ff5, 0x1ff5, - 0x1fff, 0x1fff, - 0x200b, 0x200f, - 0x202a, 0x202e, - 0x2060, 0x206f, - 0x2072, 0x2073, - 0x208f, 0x208f, - 0x209d, 0x209f, - 0x20bf, 0x20cf, - 0x20f1, 0x20ff, - 0x218c, 0x218f, - 0x23ff, 0x23ff, - 0x2427, 0x243f, - 0x244b, 0x245f, - 0x2b74, 0x2b75, - 0x2b96, 0x2b97, - 0x2bba, 0x2bbc, - 0x2bc9, 0x2bc9, - 0x2bd2, 0x2beb, - 0x2bf0, 0x2bff, - 0x2c2f, 0x2c2f, - 0x2c5f, 0x2c5f, - 0x2cf4, 0x2cf8, - 0x2d26, 0x2d26, - 0x2d28, 0x2d2c, - 0x2d2e, 0x2d2f, - 0x2d68, 0x2d6e, - 0x2d71, 0x2d7e, - 0x2d97, 0x2d9f, - 0x2da7, 0x2da7, - 0x2daf, 0x2daf, - 0x2db7, 0x2db7, - 0x2dbf, 0x2dbf, - 0x2dc7, 0x2dc7, - 0x2dcf, 0x2dcf, - 0x2dd7, 0x2dd7, - 0x2ddf, 0x2ddf, - 0x2e45, 0x2e7f, - 0x2e9a, 0x2e9a, - 0x2ef4, 0x2eff, - 0x2fd6, 0x2fef, - 0x2ffc, 0x2fff, - 0x3040, 0x3040, - 0x3097, 0x3098, - 0x3100, 0x3104, - 0x312e, 0x3130, - 0x318f, 0x318f, - 0x31bb, 0x31bf, - 0x31e4, 0x31ef, - 0x321f, 0x321f, - 0x32ff, 0x32ff, - 0x4db6, 0x4dbf, - 0x9fd6, 0x9fff, - 0xa48d, 0xa48f, - 0xa4c7, 0xa4cf, - 0xa62c, 0xa63f, - 0xa6f8, 0xa6ff, - 0xa7af, 0xa7af, - 0xa7b8, 0xa7f6, - 0xa82c, 0xa82f, - 0xa83a, 0xa83f, - 0xa878, 0xa87f, - 0xa8c6, 0xa8cd, - 0xa8da, 0xa8df, - 0xa8fe, 0xa8ff, - 0xa954, 0xa95e, - 0xa97d, 0xa97f, - 0xa9ce, 0xa9ce, - 0xa9da, 0xa9dd, - 0xa9ff, 0xa9ff, - 0xaa37, 0xaa3f, - 0xaa4e, 0xaa4f, - 0xaa5a, 0xaa5b, - 0xaac3, 0xaada, - 0xaaf7, 0xab00, - 0xab07, 0xab08, - 0xab0f, 0xab10, - 0xab17, 0xab1f, - 0xab27, 0xab27, - 0xab2f, 0xab2f, - 0xab66, 0xab6f, - 0xabee, 0xabef, - 0xabfa, 0xabff, - 0xd7a4, 0xd7af, - 0xd7c7, 0xd7ca, - 0xd7fc, 0xf8ff, - 0xfa6e, 0xfa6f, - 0xfada, 0xfaff, - 0xfb07, 0xfb12, - 0xfb18, 0xfb1c, - 0xfb37, 0xfb37, - 0xfb3d, 0xfb3d, - 0xfb3f, 0xfb3f, - 0xfb42, 0xfb42, - 0xfb45, 0xfb45, - 0xfbc2, 0xfbd2, - 0xfd40, 0xfd4f, - 0xfd90, 0xfd91, - 0xfdc8, 0xfdef, - 0xfdfe, 0xfdff, - 0xfe1a, 0xfe1f, - 0xfe53, 0xfe53, - 0xfe67, 0xfe67, - 0xfe6c, 0xfe6f, - 0xfe75, 0xfe75, - 0xfefd, 0xff00, - 0xffbf, 0xffc1, - 0xffc8, 0xffc9, - 0xffd0, 0xffd1, - 0xffd8, 0xffd9, - 0xffdd, 0xffdf, - 0xffe7, 0xffe7, - 0xffef, 0xfffb, - 0xfffe, 0xffff, - 0x1000c, 0x1000c, - 0x10027, 0x10027, - 0x1003b, 0x1003b, - 0x1003e, 0x1003e, - 0x1004e, 0x1004f, - 0x1005e, 0x1007f, - 0x100fb, 0x100ff, - 0x10103, 0x10106, - 0x10134, 0x10136, - 0x1018f, 0x1018f, - 0x1019c, 0x1019f, - 0x101a1, 0x101cf, - 0x101fe, 0x1027f, - 0x1029d, 0x1029f, - 0x102d1, 0x102df, - 0x102fc, 0x102ff, - 0x10324, 0x1032f, - 0x1034b, 0x1034f, - 0x1037b, 0x1037f, - 0x1039e, 0x1039e, - 0x103c4, 0x103c7, - 0x103d6, 0x103ff, - 0x1049e, 0x1049f, - 0x104aa, 0x104af, - 0x104d4, 0x104d7, - 0x104fc, 0x104ff, - 0x10528, 0x1052f, - 0x10564, 0x1056e, - 0x10570, 0x105ff, - 0x10737, 0x1073f, - 0x10756, 0x1075f, - 0x10768, 0x107ff, - 0x10806, 0x10807, - 0x10809, 0x10809, - 0x10836, 0x10836, - 0x10839, 0x1083b, - 0x1083d, 0x1083e, - 0x10856, 0x10856, - 0x1089f, 0x108a6, - 0x108b0, 0x108df, - 0x108f3, 0x108f3, - 0x108f6, 0x108fa, - 0x1091c, 0x1091e, - 0x1093a, 0x1093e, - 0x10940, 0x1097f, - 0x109b8, 0x109bb, - 0x109d0, 0x109d1, - 0x10a04, 0x10a04, - 0x10a07, 0x10a0b, - 0x10a14, 0x10a14, - 0x10a18, 0x10a18, - 0x10a34, 0x10a37, - 0x10a3b, 0x10a3e, - 0x10a48, 0x10a4f, - 0x10a59, 0x10a5f, - 0x10aa0, 0x10abf, - 0x10ae7, 0x10aea, - 0x10af7, 0x10aff, - 0x10b36, 0x10b38, - 0x10b56, 0x10b57, - 0x10b73, 0x10b77, - 0x10b92, 0x10b98, - 0x10b9d, 0x10ba8, - 0x10bb0, 0x10bff, - 0x10c49, 0x10c7f, - 0x10cb3, 0x10cbf, - 0x10cf3, 0x10cf9, - 0x10d00, 0x10e5f, - 0x10e7f, 0x10fff, - 0x1104e, 0x11051, - 0x11070, 0x1107e, - 0x110bd, 0x110bd, - 0x110c2, 0x110cf, - 0x110e9, 0x110ef, - 0x110fa, 0x110ff, - 0x11135, 0x11135, - 0x11144, 0x1114f, - 0x11177, 0x1117f, - 0x111ce, 0x111cf, - 0x111e0, 0x111e0, - 0x111f5, 0x111ff, - 0x11212, 0x11212, - 0x1123f, 0x1127f, - 0x11287, 0x11287, - 0x11289, 0x11289, - 0x1128e, 0x1128e, - 0x1129e, 0x1129e, - 0x112aa, 0x112af, - 0x112eb, 0x112ef, - 0x112fa, 0x112ff, - 0x11304, 0x11304, - 0x1130d, 0x1130e, - 0x11311, 0x11312, - 0x11329, 0x11329, - 0x11331, 0x11331, - 0x11334, 0x11334, - 0x1133a, 0x1133b, - 0x11345, 0x11346, - 0x11349, 0x1134a, - 0x1134e, 0x1134f, - 0x11351, 0x11356, - 0x11358, 0x1135c, - 0x11364, 0x11365, - 0x1136d, 0x1136f, - 0x11375, 0x113ff, - 0x1145a, 0x1145a, - 0x1145c, 0x1145c, - 0x1145e, 0x1147f, - 0x114c8, 0x114cf, - 0x114da, 0x1157f, - 0x115b6, 0x115b7, - 0x115de, 0x115ff, - 0x11645, 0x1164f, - 0x1165a, 0x1165f, - 0x1166d, 0x1167f, - 0x116b8, 0x116bf, - 0x116ca, 0x116ff, - 0x1171a, 0x1171c, - 0x1172c, 0x1172f, - 0x11740, 0x1189f, - 0x118f3, 0x118fe, - 0x11900, 0x11abf, - 0x11af9, 0x11bff, - 0x11c09, 0x11c09, - 0x11c37, 0x11c37, - 0x11c46, 0x11c4f, - 0x11c6d, 0x11c6f, - 0x11c90, 0x11c91, - 0x11ca8, 0x11ca8, - 0x11cb7, 0x11fff, - 0x1239a, 0x123ff, - 0x1246f, 0x1246f, - 0x12475, 0x1247f, - 0x12544, 0x12fff, - 0x1342f, 0x143ff, - 0x14647, 0x167ff, - 0x16a39, 0x16a3f, - 0x16a5f, 0x16a5f, - 0x16a6a, 0x16a6d, - 0x16a70, 0x16acf, - 0x16aee, 0x16aef, - 0x16af6, 0x16aff, - 0x16b46, 0x16b4f, - 0x16b5a, 0x16b5a, - 0x16b62, 0x16b62, - 0x16b78, 0x16b7c, - 0x16b90, 0x16eff, - 0x16f45, 0x16f4f, - 0x16f7f, 0x16f8e, - 0x16fa0, 0x16fdf, - 0x16fe1, 0x16fff, - 0x187ed, 0x187ff, - 0x18af3, 0x1afff, - 0x1b002, 0x1bbff, - 0x1bc6b, 0x1bc6f, - 0x1bc7d, 0x1bc7f, - 0x1bc89, 0x1bc8f, - 0x1bc9a, 0x1bc9b, - 0x1bca0, 0x1cfff, - 0x1d0f6, 0x1d0ff, - 0x1d127, 0x1d128, - 0x1d173, 0x1d17a, - 0x1d1e9, 0x1d1ff, - 0x1d246, 0x1d2ff, - 0x1d357, 0x1d35f, - 0x1d372, 0x1d3ff, - 0x1d455, 0x1d455, - 0x1d49d, 0x1d49d, - 0x1d4a0, 0x1d4a1, - 0x1d4a3, 0x1d4a4, - 0x1d4a7, 0x1d4a8, - 0x1d4ad, 0x1d4ad, - 0x1d4ba, 0x1d4ba, - 0x1d4bc, 0x1d4bc, - 0x1d4c4, 0x1d4c4, - 0x1d506, 0x1d506, - 0x1d50b, 0x1d50c, - 0x1d515, 0x1d515, - 0x1d51d, 0x1d51d, - 0x1d53a, 0x1d53a, - 0x1d53f, 0x1d53f, - 0x1d545, 0x1d545, - 0x1d547, 0x1d549, - 0x1d551, 0x1d551, - 0x1d6a6, 0x1d6a7, - 0x1d7cc, 0x1d7cd, - 0x1da8c, 0x1da9a, - 0x1daa0, 0x1daa0, - 0x1dab0, 0x1dfff, - 0x1e007, 0x1e007, - 0x1e019, 0x1e01a, - 0x1e022, 0x1e022, - 0x1e025, 0x1e025, - 0x1e02b, 0x1e7ff, - 0x1e8c5, 0x1e8c6, - 0x1e8d7, 0x1e8ff, - 0x1e94b, 0x1e94f, - 0x1e95a, 0x1e95d, - 0x1e960, 0x1edff, - 0x1ee04, 0x1ee04, - 0x1ee20, 0x1ee20, - 0x1ee23, 0x1ee23, - 0x1ee25, 0x1ee26, - 0x1ee28, 0x1ee28, - 0x1ee33, 0x1ee33, - 0x1ee38, 0x1ee38, - 0x1ee3a, 0x1ee3a, - 0x1ee3c, 0x1ee41, - 0x1ee43, 0x1ee46, - 0x1ee48, 0x1ee48, - 0x1ee4a, 0x1ee4a, - 0x1ee4c, 0x1ee4c, - 0x1ee50, 0x1ee50, - 0x1ee53, 0x1ee53, - 0x1ee55, 0x1ee56, - 0x1ee58, 0x1ee58, - 0x1ee5a, 0x1ee5a, - 0x1ee5c, 0x1ee5c, - 0x1ee5e, 0x1ee5e, - 0x1ee60, 0x1ee60, - 0x1ee63, 0x1ee63, - 0x1ee65, 0x1ee66, - 0x1ee6b, 0x1ee6b, - 0x1ee73, 0x1ee73, - 0x1ee78, 0x1ee78, - 0x1ee7d, 0x1ee7d, - 0x1ee7f, 0x1ee7f, - 0x1ee8a, 0x1ee8a, - 0x1ee9c, 0x1eea0, - 0x1eea4, 0x1eea4, - 0x1eeaa, 0x1eeaa, - 0x1eebc, 0x1eeef, - 0x1eef2, 0x1efff, - 0x1f02c, 0x1f02f, - 0x1f094, 0x1f09f, - 0x1f0af, 0x1f0b0, - 0x1f0c0, 0x1f0c0, - 0x1f0d0, 0x1f0d0, - 0x1f0f6, 0x1f0ff, - 0x1f10d, 0x1f10f, - 0x1f12f, 0x1f12f, - 0x1f16c, 0x1f16f, - 0x1f1ad, 0x1f1e5, - 0x1f203, 0x1f20f, - 0x1f23c, 0x1f23f, - 0x1f249, 0x1f24f, - 0x1f252, 0x1f2ff, - 0x1f6d3, 0x1f6df, - 0x1f6ed, 0x1f6ef, - 0x1f6f7, 0x1f6ff, - 0x1f774, 0x1f77f, - 0x1f7d5, 0x1f7ff, - 0x1f80c, 0x1f80f, - 0x1f848, 0x1f84f, - 0x1f85a, 0x1f85f, - 0x1f888, 0x1f88f, - 0x1f8ae, 0x1f90f, - 0x1f91f, 0x1f91f, - 0x1f928, 0x1f92f, - 0x1f931, 0x1f932, - 0x1f93f, 0x1f93f, - 0x1f94c, 0x1f94f, - 0x1f95f, 0x1f97f, - 0x1f992, 0x1f9bf, - 0x1f9c1, 0x1ffff, - 0x2a6d7, 0x2a6ff, - 0x2b735, 0x2b73f, - 0x2b81e, 0x2b81f, - 0x2cea2, 0x2f7ff, - 0x2fa1e, 0xe00ff, - 0xe01f0, 0x10ffff, -}; /* CR_C */ - -/* 'Cc': General Category */ -#define CR_Cc CR_Cntrl - -/* 'Cf': General Category */ -static const OnigCodePoint CR_Cf[] = { - 18, - 0x00ad, 0x00ad, - 0x0600, 0x0605, - 0x061c, 0x061c, - 0x06dd, 0x06dd, - 0x070f, 0x070f, - 0x08e2, 0x08e2, - 0x180e, 0x180e, - 0x200b, 0x200f, - 0x202a, 0x202e, - 0x2060, 0x2064, - 0x2066, 0x206f, - 0xfeff, 0xfeff, - 0xfff9, 0xfffb, - 0x110bd, 0x110bd, - 0x1bca0, 0x1bca3, - 0x1d173, 0x1d17a, - 0xe0001, 0xe0001, - 0xe0020, 0xe007f, -}; /* CR_Cf */ - -/* 'Cn': General Category */ -static const OnigCodePoint CR_Cn[] = { - 638, - 0x0378, 0x0379, - 0x0380, 0x0383, - 0x038b, 0x038b, - 0x038d, 0x038d, - 0x03a2, 0x03a2, - 0x0530, 0x0530, - 0x0557, 0x0558, - 0x0560, 0x0560, - 0x0588, 0x0588, - 0x058b, 0x058c, - 0x0590, 0x0590, - 0x05c8, 0x05cf, - 0x05eb, 0x05ef, - 0x05f5, 0x05ff, - 0x061d, 0x061d, - 0x070e, 0x070e, - 0x074b, 0x074c, - 0x07b2, 0x07bf, - 0x07fb, 0x07ff, - 0x082e, 0x082f, - 0x083f, 0x083f, - 0x085c, 0x085d, - 0x085f, 0x089f, - 0x08b5, 0x08b5, - 0x08be, 0x08d3, - 0x0984, 0x0984, - 0x098d, 0x098e, - 0x0991, 0x0992, - 0x09a9, 0x09a9, - 0x09b1, 0x09b1, - 0x09b3, 0x09b5, - 0x09ba, 0x09bb, - 0x09c5, 0x09c6, - 0x09c9, 0x09ca, - 0x09cf, 0x09d6, - 0x09d8, 0x09db, - 0x09de, 0x09de, - 0x09e4, 0x09e5, - 0x09fc, 0x0a00, - 0x0a04, 0x0a04, - 0x0a0b, 0x0a0e, - 0x0a11, 0x0a12, - 0x0a29, 0x0a29, - 0x0a31, 0x0a31, - 0x0a34, 0x0a34, - 0x0a37, 0x0a37, - 0x0a3a, 0x0a3b, - 0x0a3d, 0x0a3d, - 0x0a43, 0x0a46, - 0x0a49, 0x0a4a, - 0x0a4e, 0x0a50, - 0x0a52, 0x0a58, - 0x0a5d, 0x0a5d, - 0x0a5f, 0x0a65, - 0x0a76, 0x0a80, - 0x0a84, 0x0a84, - 0x0a8e, 0x0a8e, - 0x0a92, 0x0a92, - 0x0aa9, 0x0aa9, - 0x0ab1, 0x0ab1, - 0x0ab4, 0x0ab4, - 0x0aba, 0x0abb, - 0x0ac6, 0x0ac6, - 0x0aca, 0x0aca, - 0x0ace, 0x0acf, - 0x0ad1, 0x0adf, - 0x0ae4, 0x0ae5, - 0x0af2, 0x0af8, - 0x0afa, 0x0b00, - 0x0b04, 0x0b04, - 0x0b0d, 0x0b0e, - 0x0b11, 0x0b12, - 0x0b29, 0x0b29, - 0x0b31, 0x0b31, - 0x0b34, 0x0b34, - 0x0b3a, 0x0b3b, - 0x0b45, 0x0b46, - 0x0b49, 0x0b4a, - 0x0b4e, 0x0b55, - 0x0b58, 0x0b5b, - 0x0b5e, 0x0b5e, - 0x0b64, 0x0b65, - 0x0b78, 0x0b81, - 0x0b84, 0x0b84, - 0x0b8b, 0x0b8d, - 0x0b91, 0x0b91, - 0x0b96, 0x0b98, - 0x0b9b, 0x0b9b, - 0x0b9d, 0x0b9d, - 0x0ba0, 0x0ba2, - 0x0ba5, 0x0ba7, - 0x0bab, 0x0bad, - 0x0bba, 0x0bbd, - 0x0bc3, 0x0bc5, - 0x0bc9, 0x0bc9, - 0x0bce, 0x0bcf, - 0x0bd1, 0x0bd6, - 0x0bd8, 0x0be5, - 0x0bfb, 0x0bff, - 0x0c04, 0x0c04, - 0x0c0d, 0x0c0d, - 0x0c11, 0x0c11, - 0x0c29, 0x0c29, - 0x0c3a, 0x0c3c, - 0x0c45, 0x0c45, - 0x0c49, 0x0c49, - 0x0c4e, 0x0c54, - 0x0c57, 0x0c57, - 0x0c5b, 0x0c5f, - 0x0c64, 0x0c65, - 0x0c70, 0x0c77, - 0x0c84, 0x0c84, - 0x0c8d, 0x0c8d, - 0x0c91, 0x0c91, - 0x0ca9, 0x0ca9, - 0x0cb4, 0x0cb4, - 0x0cba, 0x0cbb, - 0x0cc5, 0x0cc5, - 0x0cc9, 0x0cc9, - 0x0cce, 0x0cd4, - 0x0cd7, 0x0cdd, - 0x0cdf, 0x0cdf, - 0x0ce4, 0x0ce5, - 0x0cf0, 0x0cf0, - 0x0cf3, 0x0d00, - 0x0d04, 0x0d04, - 0x0d0d, 0x0d0d, - 0x0d11, 0x0d11, - 0x0d3b, 0x0d3c, - 0x0d45, 0x0d45, - 0x0d49, 0x0d49, - 0x0d50, 0x0d53, - 0x0d64, 0x0d65, - 0x0d80, 0x0d81, - 0x0d84, 0x0d84, - 0x0d97, 0x0d99, - 0x0db2, 0x0db2, - 0x0dbc, 0x0dbc, - 0x0dbe, 0x0dbf, - 0x0dc7, 0x0dc9, - 0x0dcb, 0x0dce, - 0x0dd5, 0x0dd5, - 0x0dd7, 0x0dd7, - 0x0de0, 0x0de5, - 0x0df0, 0x0df1, - 0x0df5, 0x0e00, - 0x0e3b, 0x0e3e, - 0x0e5c, 0x0e80, - 0x0e83, 0x0e83, - 0x0e85, 0x0e86, - 0x0e89, 0x0e89, - 0x0e8b, 0x0e8c, - 0x0e8e, 0x0e93, - 0x0e98, 0x0e98, - 0x0ea0, 0x0ea0, - 0x0ea4, 0x0ea4, - 0x0ea6, 0x0ea6, - 0x0ea8, 0x0ea9, - 0x0eac, 0x0eac, - 0x0eba, 0x0eba, - 0x0ebe, 0x0ebf, - 0x0ec5, 0x0ec5, - 0x0ec7, 0x0ec7, - 0x0ece, 0x0ecf, - 0x0eda, 0x0edb, - 0x0ee0, 0x0eff, - 0x0f48, 0x0f48, - 0x0f6d, 0x0f70, - 0x0f98, 0x0f98, - 0x0fbd, 0x0fbd, - 0x0fcd, 0x0fcd, - 0x0fdb, 0x0fff, - 0x10c6, 0x10c6, - 0x10c8, 0x10cc, - 0x10ce, 0x10cf, - 0x1249, 0x1249, - 0x124e, 0x124f, - 0x1257, 0x1257, - 0x1259, 0x1259, - 0x125e, 0x125f, - 0x1289, 0x1289, - 0x128e, 0x128f, - 0x12b1, 0x12b1, - 0x12b6, 0x12b7, - 0x12bf, 0x12bf, - 0x12c1, 0x12c1, - 0x12c6, 0x12c7, - 0x12d7, 0x12d7, - 0x1311, 0x1311, - 0x1316, 0x1317, - 0x135b, 0x135c, - 0x137d, 0x137f, - 0x139a, 0x139f, - 0x13f6, 0x13f7, - 0x13fe, 0x13ff, - 0x169d, 0x169f, - 0x16f9, 0x16ff, - 0x170d, 0x170d, - 0x1715, 0x171f, - 0x1737, 0x173f, - 0x1754, 0x175f, - 0x176d, 0x176d, - 0x1771, 0x1771, - 0x1774, 0x177f, - 0x17de, 0x17df, - 0x17ea, 0x17ef, - 0x17fa, 0x17ff, - 0x180f, 0x180f, - 0x181a, 0x181f, - 0x1878, 0x187f, - 0x18ab, 0x18af, - 0x18f6, 0x18ff, - 0x191f, 0x191f, - 0x192c, 0x192f, - 0x193c, 0x193f, - 0x1941, 0x1943, - 0x196e, 0x196f, - 0x1975, 0x197f, - 0x19ac, 0x19af, - 0x19ca, 0x19cf, - 0x19db, 0x19dd, - 0x1a1c, 0x1a1d, - 0x1a5f, 0x1a5f, - 0x1a7d, 0x1a7e, - 0x1a8a, 0x1a8f, - 0x1a9a, 0x1a9f, - 0x1aae, 0x1aaf, - 0x1abf, 0x1aff, - 0x1b4c, 0x1b4f, - 0x1b7d, 0x1b7f, - 0x1bf4, 0x1bfb, - 0x1c38, 0x1c3a, - 0x1c4a, 0x1c4c, - 0x1c89, 0x1cbf, - 0x1cc8, 0x1ccf, - 0x1cf7, 0x1cf7, - 0x1cfa, 0x1cff, - 0x1df6, 0x1dfa, - 0x1f16, 0x1f17, - 0x1f1e, 0x1f1f, - 0x1f46, 0x1f47, - 0x1f4e, 0x1f4f, - 0x1f58, 0x1f58, - 0x1f5a, 0x1f5a, - 0x1f5c, 0x1f5c, - 0x1f5e, 0x1f5e, - 0x1f7e, 0x1f7f, - 0x1fb5, 0x1fb5, - 0x1fc5, 0x1fc5, - 0x1fd4, 0x1fd5, - 0x1fdc, 0x1fdc, - 0x1ff0, 0x1ff1, - 0x1ff5, 0x1ff5, - 0x1fff, 0x1fff, - 0x2065, 0x2065, - 0x2072, 0x2073, - 0x208f, 0x208f, - 0x209d, 0x209f, - 0x20bf, 0x20cf, - 0x20f1, 0x20ff, - 0x218c, 0x218f, - 0x23ff, 0x23ff, - 0x2427, 0x243f, - 0x244b, 0x245f, - 0x2b74, 0x2b75, - 0x2b96, 0x2b97, - 0x2bba, 0x2bbc, - 0x2bc9, 0x2bc9, - 0x2bd2, 0x2beb, - 0x2bf0, 0x2bff, - 0x2c2f, 0x2c2f, - 0x2c5f, 0x2c5f, - 0x2cf4, 0x2cf8, - 0x2d26, 0x2d26, - 0x2d28, 0x2d2c, - 0x2d2e, 0x2d2f, - 0x2d68, 0x2d6e, - 0x2d71, 0x2d7e, - 0x2d97, 0x2d9f, - 0x2da7, 0x2da7, - 0x2daf, 0x2daf, - 0x2db7, 0x2db7, - 0x2dbf, 0x2dbf, - 0x2dc7, 0x2dc7, - 0x2dcf, 0x2dcf, - 0x2dd7, 0x2dd7, - 0x2ddf, 0x2ddf, - 0x2e45, 0x2e7f, - 0x2e9a, 0x2e9a, - 0x2ef4, 0x2eff, - 0x2fd6, 0x2fef, - 0x2ffc, 0x2fff, - 0x3040, 0x3040, - 0x3097, 0x3098, - 0x3100, 0x3104, - 0x312e, 0x3130, - 0x318f, 0x318f, - 0x31bb, 0x31bf, - 0x31e4, 0x31ef, - 0x321f, 0x321f, - 0x32ff, 0x32ff, - 0x4db6, 0x4dbf, - 0x9fd6, 0x9fff, - 0xa48d, 0xa48f, - 0xa4c7, 0xa4cf, - 0xa62c, 0xa63f, - 0xa6f8, 0xa6ff, - 0xa7af, 0xa7af, - 0xa7b8, 0xa7f6, - 0xa82c, 0xa82f, - 0xa83a, 0xa83f, - 0xa878, 0xa87f, - 0xa8c6, 0xa8cd, - 0xa8da, 0xa8df, - 0xa8fe, 0xa8ff, - 0xa954, 0xa95e, - 0xa97d, 0xa97f, - 0xa9ce, 0xa9ce, - 0xa9da, 0xa9dd, - 0xa9ff, 0xa9ff, - 0xaa37, 0xaa3f, - 0xaa4e, 0xaa4f, - 0xaa5a, 0xaa5b, - 0xaac3, 0xaada, - 0xaaf7, 0xab00, - 0xab07, 0xab08, - 0xab0f, 0xab10, - 0xab17, 0xab1f, - 0xab27, 0xab27, - 0xab2f, 0xab2f, - 0xab66, 0xab6f, - 0xabee, 0xabef, - 0xabfa, 0xabff, - 0xd7a4, 0xd7af, - 0xd7c7, 0xd7ca, - 0xd7fc, 0xd7ff, - 0xfa6e, 0xfa6f, - 0xfada, 0xfaff, - 0xfb07, 0xfb12, - 0xfb18, 0xfb1c, - 0xfb37, 0xfb37, - 0xfb3d, 0xfb3d, - 0xfb3f, 0xfb3f, - 0xfb42, 0xfb42, - 0xfb45, 0xfb45, - 0xfbc2, 0xfbd2, - 0xfd40, 0xfd4f, - 0xfd90, 0xfd91, - 0xfdc8, 0xfdef, - 0xfdfe, 0xfdff, - 0xfe1a, 0xfe1f, - 0xfe53, 0xfe53, - 0xfe67, 0xfe67, - 0xfe6c, 0xfe6f, - 0xfe75, 0xfe75, - 0xfefd, 0xfefe, - 0xff00, 0xff00, - 0xffbf, 0xffc1, - 0xffc8, 0xffc9, - 0xffd0, 0xffd1, - 0xffd8, 0xffd9, - 0xffdd, 0xffdf, - 0xffe7, 0xffe7, - 0xffef, 0xfff8, - 0xfffe, 0xffff, - 0x1000c, 0x1000c, - 0x10027, 0x10027, - 0x1003b, 0x1003b, - 0x1003e, 0x1003e, - 0x1004e, 0x1004f, - 0x1005e, 0x1007f, - 0x100fb, 0x100ff, - 0x10103, 0x10106, - 0x10134, 0x10136, - 0x1018f, 0x1018f, - 0x1019c, 0x1019f, - 0x101a1, 0x101cf, - 0x101fe, 0x1027f, - 0x1029d, 0x1029f, - 0x102d1, 0x102df, - 0x102fc, 0x102ff, - 0x10324, 0x1032f, - 0x1034b, 0x1034f, - 0x1037b, 0x1037f, - 0x1039e, 0x1039e, - 0x103c4, 0x103c7, - 0x103d6, 0x103ff, - 0x1049e, 0x1049f, - 0x104aa, 0x104af, - 0x104d4, 0x104d7, - 0x104fc, 0x104ff, - 0x10528, 0x1052f, - 0x10564, 0x1056e, - 0x10570, 0x105ff, - 0x10737, 0x1073f, - 0x10756, 0x1075f, - 0x10768, 0x107ff, - 0x10806, 0x10807, - 0x10809, 0x10809, - 0x10836, 0x10836, - 0x10839, 0x1083b, - 0x1083d, 0x1083e, - 0x10856, 0x10856, - 0x1089f, 0x108a6, - 0x108b0, 0x108df, - 0x108f3, 0x108f3, - 0x108f6, 0x108fa, - 0x1091c, 0x1091e, - 0x1093a, 0x1093e, - 0x10940, 0x1097f, - 0x109b8, 0x109bb, - 0x109d0, 0x109d1, - 0x10a04, 0x10a04, - 0x10a07, 0x10a0b, - 0x10a14, 0x10a14, - 0x10a18, 0x10a18, - 0x10a34, 0x10a37, - 0x10a3b, 0x10a3e, - 0x10a48, 0x10a4f, - 0x10a59, 0x10a5f, - 0x10aa0, 0x10abf, - 0x10ae7, 0x10aea, - 0x10af7, 0x10aff, - 0x10b36, 0x10b38, - 0x10b56, 0x10b57, - 0x10b73, 0x10b77, - 0x10b92, 0x10b98, - 0x10b9d, 0x10ba8, - 0x10bb0, 0x10bff, - 0x10c49, 0x10c7f, - 0x10cb3, 0x10cbf, - 0x10cf3, 0x10cf9, - 0x10d00, 0x10e5f, - 0x10e7f, 0x10fff, - 0x1104e, 0x11051, - 0x11070, 0x1107e, - 0x110c2, 0x110cf, - 0x110e9, 0x110ef, - 0x110fa, 0x110ff, - 0x11135, 0x11135, - 0x11144, 0x1114f, - 0x11177, 0x1117f, - 0x111ce, 0x111cf, - 0x111e0, 0x111e0, - 0x111f5, 0x111ff, - 0x11212, 0x11212, - 0x1123f, 0x1127f, - 0x11287, 0x11287, - 0x11289, 0x11289, - 0x1128e, 0x1128e, - 0x1129e, 0x1129e, - 0x112aa, 0x112af, - 0x112eb, 0x112ef, - 0x112fa, 0x112ff, - 0x11304, 0x11304, - 0x1130d, 0x1130e, - 0x11311, 0x11312, - 0x11329, 0x11329, - 0x11331, 0x11331, - 0x11334, 0x11334, - 0x1133a, 0x1133b, - 0x11345, 0x11346, - 0x11349, 0x1134a, - 0x1134e, 0x1134f, - 0x11351, 0x11356, - 0x11358, 0x1135c, - 0x11364, 0x11365, - 0x1136d, 0x1136f, - 0x11375, 0x113ff, - 0x1145a, 0x1145a, - 0x1145c, 0x1145c, - 0x1145e, 0x1147f, - 0x114c8, 0x114cf, - 0x114da, 0x1157f, - 0x115b6, 0x115b7, - 0x115de, 0x115ff, - 0x11645, 0x1164f, - 0x1165a, 0x1165f, - 0x1166d, 0x1167f, - 0x116b8, 0x116bf, - 0x116ca, 0x116ff, - 0x1171a, 0x1171c, - 0x1172c, 0x1172f, - 0x11740, 0x1189f, - 0x118f3, 0x118fe, - 0x11900, 0x11abf, - 0x11af9, 0x11bff, - 0x11c09, 0x11c09, - 0x11c37, 0x11c37, - 0x11c46, 0x11c4f, - 0x11c6d, 0x11c6f, - 0x11c90, 0x11c91, - 0x11ca8, 0x11ca8, - 0x11cb7, 0x11fff, - 0x1239a, 0x123ff, - 0x1246f, 0x1246f, - 0x12475, 0x1247f, - 0x12544, 0x12fff, - 0x1342f, 0x143ff, - 0x14647, 0x167ff, - 0x16a39, 0x16a3f, - 0x16a5f, 0x16a5f, - 0x16a6a, 0x16a6d, - 0x16a70, 0x16acf, - 0x16aee, 0x16aef, - 0x16af6, 0x16aff, - 0x16b46, 0x16b4f, - 0x16b5a, 0x16b5a, - 0x16b62, 0x16b62, - 0x16b78, 0x16b7c, - 0x16b90, 0x16eff, - 0x16f45, 0x16f4f, - 0x16f7f, 0x16f8e, - 0x16fa0, 0x16fdf, - 0x16fe1, 0x16fff, - 0x187ed, 0x187ff, - 0x18af3, 0x1afff, - 0x1b002, 0x1bbff, - 0x1bc6b, 0x1bc6f, - 0x1bc7d, 0x1bc7f, - 0x1bc89, 0x1bc8f, - 0x1bc9a, 0x1bc9b, - 0x1bca4, 0x1cfff, - 0x1d0f6, 0x1d0ff, - 0x1d127, 0x1d128, - 0x1d1e9, 0x1d1ff, - 0x1d246, 0x1d2ff, - 0x1d357, 0x1d35f, - 0x1d372, 0x1d3ff, - 0x1d455, 0x1d455, - 0x1d49d, 0x1d49d, - 0x1d4a0, 0x1d4a1, - 0x1d4a3, 0x1d4a4, - 0x1d4a7, 0x1d4a8, - 0x1d4ad, 0x1d4ad, - 0x1d4ba, 0x1d4ba, - 0x1d4bc, 0x1d4bc, - 0x1d4c4, 0x1d4c4, - 0x1d506, 0x1d506, - 0x1d50b, 0x1d50c, - 0x1d515, 0x1d515, - 0x1d51d, 0x1d51d, - 0x1d53a, 0x1d53a, - 0x1d53f, 0x1d53f, - 0x1d545, 0x1d545, - 0x1d547, 0x1d549, - 0x1d551, 0x1d551, - 0x1d6a6, 0x1d6a7, - 0x1d7cc, 0x1d7cd, - 0x1da8c, 0x1da9a, - 0x1daa0, 0x1daa0, - 0x1dab0, 0x1dfff, - 0x1e007, 0x1e007, - 0x1e019, 0x1e01a, - 0x1e022, 0x1e022, - 0x1e025, 0x1e025, - 0x1e02b, 0x1e7ff, - 0x1e8c5, 0x1e8c6, - 0x1e8d7, 0x1e8ff, - 0x1e94b, 0x1e94f, - 0x1e95a, 0x1e95d, - 0x1e960, 0x1edff, - 0x1ee04, 0x1ee04, - 0x1ee20, 0x1ee20, - 0x1ee23, 0x1ee23, - 0x1ee25, 0x1ee26, - 0x1ee28, 0x1ee28, - 0x1ee33, 0x1ee33, - 0x1ee38, 0x1ee38, - 0x1ee3a, 0x1ee3a, - 0x1ee3c, 0x1ee41, - 0x1ee43, 0x1ee46, - 0x1ee48, 0x1ee48, - 0x1ee4a, 0x1ee4a, - 0x1ee4c, 0x1ee4c, - 0x1ee50, 0x1ee50, - 0x1ee53, 0x1ee53, - 0x1ee55, 0x1ee56, - 0x1ee58, 0x1ee58, - 0x1ee5a, 0x1ee5a, - 0x1ee5c, 0x1ee5c, - 0x1ee5e, 0x1ee5e, - 0x1ee60, 0x1ee60, - 0x1ee63, 0x1ee63, - 0x1ee65, 0x1ee66, - 0x1ee6b, 0x1ee6b, - 0x1ee73, 0x1ee73, - 0x1ee78, 0x1ee78, - 0x1ee7d, 0x1ee7d, - 0x1ee7f, 0x1ee7f, - 0x1ee8a, 0x1ee8a, - 0x1ee9c, 0x1eea0, - 0x1eea4, 0x1eea4, - 0x1eeaa, 0x1eeaa, - 0x1eebc, 0x1eeef, - 0x1eef2, 0x1efff, - 0x1f02c, 0x1f02f, - 0x1f094, 0x1f09f, - 0x1f0af, 0x1f0b0, - 0x1f0c0, 0x1f0c0, - 0x1f0d0, 0x1f0d0, - 0x1f0f6, 0x1f0ff, - 0x1f10d, 0x1f10f, - 0x1f12f, 0x1f12f, - 0x1f16c, 0x1f16f, - 0x1f1ad, 0x1f1e5, - 0x1f203, 0x1f20f, - 0x1f23c, 0x1f23f, - 0x1f249, 0x1f24f, - 0x1f252, 0x1f2ff, - 0x1f6d3, 0x1f6df, - 0x1f6ed, 0x1f6ef, - 0x1f6f7, 0x1f6ff, - 0x1f774, 0x1f77f, - 0x1f7d5, 0x1f7ff, - 0x1f80c, 0x1f80f, - 0x1f848, 0x1f84f, - 0x1f85a, 0x1f85f, - 0x1f888, 0x1f88f, - 0x1f8ae, 0x1f90f, - 0x1f91f, 0x1f91f, - 0x1f928, 0x1f92f, - 0x1f931, 0x1f932, - 0x1f93f, 0x1f93f, - 0x1f94c, 0x1f94f, - 0x1f95f, 0x1f97f, - 0x1f992, 0x1f9bf, - 0x1f9c1, 0x1ffff, - 0x2a6d7, 0x2a6ff, - 0x2b735, 0x2b73f, - 0x2b81e, 0x2b81f, - 0x2cea2, 0x2f7ff, - 0x2fa1e, 0xe0000, - 0xe0002, 0xe001f, - 0xe0080, 0xe00ff, - 0xe01f0, 0xeffff, - 0xffffe, 0xfffff, - 0x10fffe, 0x10ffff, -}; /* CR_Cn */ - -/* 'Co': General Category */ -static const OnigCodePoint CR_Co[] = { - 3, - 0xe000, 0xf8ff, - 0xf0000, 0xffffd, - 0x100000, 0x10fffd, -}; /* CR_Co */ - -/* 'Cs': General Category */ -static const OnigCodePoint CR_Cs[] = { - 1, - 0xd800, 0xdfff, -}; /* CR_Cs */ - -/* 'L': Major Category */ -static const OnigCodePoint CR_L[] = { - 571, - 0x0041, 0x005a, - 0x0061, 0x007a, - 0x00aa, 0x00aa, - 0x00b5, 0x00b5, - 0x00ba, 0x00ba, - 0x00c0, 0x00d6, - 0x00d8, 0x00f6, - 0x00f8, 0x02c1, - 0x02c6, 0x02d1, - 0x02e0, 0x02e4, - 0x02ec, 0x02ec, - 0x02ee, 0x02ee, - 0x0370, 0x0374, - 0x0376, 0x0377, - 0x037a, 0x037d, - 0x037f, 0x037f, - 0x0386, 0x0386, - 0x0388, 0x038a, - 0x038c, 0x038c, - 0x038e, 0x03a1, - 0x03a3, 0x03f5, - 0x03f7, 0x0481, - 0x048a, 0x052f, - 0x0531, 0x0556, - 0x0559, 0x0559, - 0x0561, 0x0587, - 0x05d0, 0x05ea, - 0x05f0, 0x05f2, - 0x0620, 0x064a, - 0x066e, 0x066f, - 0x0671, 0x06d3, - 0x06d5, 0x06d5, - 0x06e5, 0x06e6, - 0x06ee, 0x06ef, - 0x06fa, 0x06fc, - 0x06ff, 0x06ff, - 0x0710, 0x0710, - 0x0712, 0x072f, - 0x074d, 0x07a5, - 0x07b1, 0x07b1, - 0x07ca, 0x07ea, - 0x07f4, 0x07f5, - 0x07fa, 0x07fa, - 0x0800, 0x0815, - 0x081a, 0x081a, - 0x0824, 0x0824, - 0x0828, 0x0828, - 0x0840, 0x0858, - 0x08a0, 0x08b4, - 0x08b6, 0x08bd, - 0x0904, 0x0939, - 0x093d, 0x093d, - 0x0950, 0x0950, - 0x0958, 0x0961, - 0x0971, 0x0980, - 0x0985, 0x098c, - 0x098f, 0x0990, - 0x0993, 0x09a8, - 0x09aa, 0x09b0, - 0x09b2, 0x09b2, - 0x09b6, 0x09b9, - 0x09bd, 0x09bd, - 0x09ce, 0x09ce, - 0x09dc, 0x09dd, - 0x09df, 0x09e1, - 0x09f0, 0x09f1, - 0x0a05, 0x0a0a, - 0x0a0f, 0x0a10, - 0x0a13, 0x0a28, - 0x0a2a, 0x0a30, - 0x0a32, 0x0a33, - 0x0a35, 0x0a36, - 0x0a38, 0x0a39, - 0x0a59, 0x0a5c, - 0x0a5e, 0x0a5e, - 0x0a72, 0x0a74, - 0x0a85, 0x0a8d, - 0x0a8f, 0x0a91, - 0x0a93, 0x0aa8, - 0x0aaa, 0x0ab0, - 0x0ab2, 0x0ab3, - 0x0ab5, 0x0ab9, - 0x0abd, 0x0abd, - 0x0ad0, 0x0ad0, - 0x0ae0, 0x0ae1, - 0x0af9, 0x0af9, - 0x0b05, 0x0b0c, - 0x0b0f, 0x0b10, - 0x0b13, 0x0b28, - 0x0b2a, 0x0b30, - 0x0b32, 0x0b33, - 0x0b35, 0x0b39, - 0x0b3d, 0x0b3d, - 0x0b5c, 0x0b5d, - 0x0b5f, 0x0b61, - 0x0b71, 0x0b71, - 0x0b83, 0x0b83, - 0x0b85, 0x0b8a, - 0x0b8e, 0x0b90, - 0x0b92, 0x0b95, - 0x0b99, 0x0b9a, - 0x0b9c, 0x0b9c, - 0x0b9e, 0x0b9f, - 0x0ba3, 0x0ba4, - 0x0ba8, 0x0baa, - 0x0bae, 0x0bb9, - 0x0bd0, 0x0bd0, - 0x0c05, 0x0c0c, - 0x0c0e, 0x0c10, - 0x0c12, 0x0c28, - 0x0c2a, 0x0c39, - 0x0c3d, 0x0c3d, - 0x0c58, 0x0c5a, - 0x0c60, 0x0c61, - 0x0c80, 0x0c80, - 0x0c85, 0x0c8c, - 0x0c8e, 0x0c90, - 0x0c92, 0x0ca8, - 0x0caa, 0x0cb3, - 0x0cb5, 0x0cb9, - 0x0cbd, 0x0cbd, - 0x0cde, 0x0cde, - 0x0ce0, 0x0ce1, - 0x0cf1, 0x0cf2, - 0x0d05, 0x0d0c, - 0x0d0e, 0x0d10, - 0x0d12, 0x0d3a, - 0x0d3d, 0x0d3d, - 0x0d4e, 0x0d4e, - 0x0d54, 0x0d56, - 0x0d5f, 0x0d61, - 0x0d7a, 0x0d7f, - 0x0d85, 0x0d96, - 0x0d9a, 0x0db1, - 0x0db3, 0x0dbb, - 0x0dbd, 0x0dbd, - 0x0dc0, 0x0dc6, - 0x0e01, 0x0e30, - 0x0e32, 0x0e33, - 0x0e40, 0x0e46, - 0x0e81, 0x0e82, - 0x0e84, 0x0e84, - 0x0e87, 0x0e88, - 0x0e8a, 0x0e8a, - 0x0e8d, 0x0e8d, - 0x0e94, 0x0e97, - 0x0e99, 0x0e9f, - 0x0ea1, 0x0ea3, - 0x0ea5, 0x0ea5, - 0x0ea7, 0x0ea7, - 0x0eaa, 0x0eab, - 0x0ead, 0x0eb0, - 0x0eb2, 0x0eb3, - 0x0ebd, 0x0ebd, - 0x0ec0, 0x0ec4, - 0x0ec6, 0x0ec6, - 0x0edc, 0x0edf, - 0x0f00, 0x0f00, - 0x0f40, 0x0f47, - 0x0f49, 0x0f6c, - 0x0f88, 0x0f8c, - 0x1000, 0x102a, - 0x103f, 0x103f, - 0x1050, 0x1055, - 0x105a, 0x105d, - 0x1061, 0x1061, - 0x1065, 0x1066, - 0x106e, 0x1070, - 0x1075, 0x1081, - 0x108e, 0x108e, - 0x10a0, 0x10c5, - 0x10c7, 0x10c7, - 0x10cd, 0x10cd, - 0x10d0, 0x10fa, - 0x10fc, 0x1248, - 0x124a, 0x124d, - 0x1250, 0x1256, - 0x1258, 0x1258, - 0x125a, 0x125d, - 0x1260, 0x1288, - 0x128a, 0x128d, - 0x1290, 0x12b0, - 0x12b2, 0x12b5, - 0x12b8, 0x12be, - 0x12c0, 0x12c0, - 0x12c2, 0x12c5, - 0x12c8, 0x12d6, - 0x12d8, 0x1310, - 0x1312, 0x1315, - 0x1318, 0x135a, - 0x1380, 0x138f, - 0x13a0, 0x13f5, - 0x13f8, 0x13fd, - 0x1401, 0x166c, - 0x166f, 0x167f, - 0x1681, 0x169a, - 0x16a0, 0x16ea, - 0x16f1, 0x16f8, - 0x1700, 0x170c, - 0x170e, 0x1711, - 0x1720, 0x1731, - 0x1740, 0x1751, - 0x1760, 0x176c, - 0x176e, 0x1770, - 0x1780, 0x17b3, - 0x17d7, 0x17d7, - 0x17dc, 0x17dc, - 0x1820, 0x1877, - 0x1880, 0x1884, - 0x1887, 0x18a8, - 0x18aa, 0x18aa, - 0x18b0, 0x18f5, - 0x1900, 0x191e, - 0x1950, 0x196d, - 0x1970, 0x1974, - 0x1980, 0x19ab, - 0x19b0, 0x19c9, - 0x1a00, 0x1a16, - 0x1a20, 0x1a54, - 0x1aa7, 0x1aa7, - 0x1b05, 0x1b33, - 0x1b45, 0x1b4b, - 0x1b83, 0x1ba0, - 0x1bae, 0x1baf, - 0x1bba, 0x1be5, - 0x1c00, 0x1c23, - 0x1c4d, 0x1c4f, - 0x1c5a, 0x1c7d, - 0x1c80, 0x1c88, - 0x1ce9, 0x1cec, - 0x1cee, 0x1cf1, - 0x1cf5, 0x1cf6, - 0x1d00, 0x1dbf, - 0x1e00, 0x1f15, - 0x1f18, 0x1f1d, - 0x1f20, 0x1f45, - 0x1f48, 0x1f4d, - 0x1f50, 0x1f57, - 0x1f59, 0x1f59, - 0x1f5b, 0x1f5b, - 0x1f5d, 0x1f5d, - 0x1f5f, 0x1f7d, - 0x1f80, 0x1fb4, - 0x1fb6, 0x1fbc, - 0x1fbe, 0x1fbe, - 0x1fc2, 0x1fc4, - 0x1fc6, 0x1fcc, - 0x1fd0, 0x1fd3, - 0x1fd6, 0x1fdb, - 0x1fe0, 0x1fec, - 0x1ff2, 0x1ff4, - 0x1ff6, 0x1ffc, - 0x2071, 0x2071, - 0x207f, 0x207f, - 0x2090, 0x209c, - 0x2102, 0x2102, - 0x2107, 0x2107, - 0x210a, 0x2113, - 0x2115, 0x2115, - 0x2119, 0x211d, - 0x2124, 0x2124, - 0x2126, 0x2126, - 0x2128, 0x2128, - 0x212a, 0x212d, - 0x212f, 0x2139, - 0x213c, 0x213f, - 0x2145, 0x2149, - 0x214e, 0x214e, - 0x2183, 0x2184, - 0x2c00, 0x2c2e, - 0x2c30, 0x2c5e, - 0x2c60, 0x2ce4, - 0x2ceb, 0x2cee, - 0x2cf2, 0x2cf3, - 0x2d00, 0x2d25, - 0x2d27, 0x2d27, - 0x2d2d, 0x2d2d, - 0x2d30, 0x2d67, - 0x2d6f, 0x2d6f, - 0x2d80, 0x2d96, - 0x2da0, 0x2da6, - 0x2da8, 0x2dae, - 0x2db0, 0x2db6, - 0x2db8, 0x2dbe, - 0x2dc0, 0x2dc6, - 0x2dc8, 0x2dce, - 0x2dd0, 0x2dd6, - 0x2dd8, 0x2dde, - 0x2e2f, 0x2e2f, - 0x3005, 0x3006, - 0x3031, 0x3035, - 0x303b, 0x303c, - 0x3041, 0x3096, - 0x309d, 0x309f, - 0x30a1, 0x30fa, - 0x30fc, 0x30ff, - 0x3105, 0x312d, - 0x3131, 0x318e, - 0x31a0, 0x31ba, - 0x31f0, 0x31ff, - 0x3400, 0x4db5, - 0x4e00, 0x9fd5, - 0xa000, 0xa48c, - 0xa4d0, 0xa4fd, - 0xa500, 0xa60c, - 0xa610, 0xa61f, - 0xa62a, 0xa62b, - 0xa640, 0xa66e, - 0xa67f, 0xa69d, - 0xa6a0, 0xa6e5, - 0xa717, 0xa71f, - 0xa722, 0xa788, - 0xa78b, 0xa7ae, - 0xa7b0, 0xa7b7, - 0xa7f7, 0xa801, - 0xa803, 0xa805, - 0xa807, 0xa80a, - 0xa80c, 0xa822, - 0xa840, 0xa873, - 0xa882, 0xa8b3, - 0xa8f2, 0xa8f7, - 0xa8fb, 0xa8fb, - 0xa8fd, 0xa8fd, - 0xa90a, 0xa925, - 0xa930, 0xa946, - 0xa960, 0xa97c, - 0xa984, 0xa9b2, - 0xa9cf, 0xa9cf, - 0xa9e0, 0xa9e4, - 0xa9e6, 0xa9ef, - 0xa9fa, 0xa9fe, - 0xaa00, 0xaa28, - 0xaa40, 0xaa42, - 0xaa44, 0xaa4b, - 0xaa60, 0xaa76, - 0xaa7a, 0xaa7a, - 0xaa7e, 0xaaaf, - 0xaab1, 0xaab1, - 0xaab5, 0xaab6, - 0xaab9, 0xaabd, - 0xaac0, 0xaac0, - 0xaac2, 0xaac2, - 0xaadb, 0xaadd, - 0xaae0, 0xaaea, - 0xaaf2, 0xaaf4, - 0xab01, 0xab06, - 0xab09, 0xab0e, - 0xab11, 0xab16, - 0xab20, 0xab26, - 0xab28, 0xab2e, - 0xab30, 0xab5a, - 0xab5c, 0xab65, - 0xab70, 0xabe2, - 0xac00, 0xd7a3, - 0xd7b0, 0xd7c6, - 0xd7cb, 0xd7fb, - 0xf900, 0xfa6d, - 0xfa70, 0xfad9, - 0xfb00, 0xfb06, - 0xfb13, 0xfb17, - 0xfb1d, 0xfb1d, - 0xfb1f, 0xfb28, - 0xfb2a, 0xfb36, - 0xfb38, 0xfb3c, - 0xfb3e, 0xfb3e, - 0xfb40, 0xfb41, - 0xfb43, 0xfb44, - 0xfb46, 0xfbb1, - 0xfbd3, 0xfd3d, - 0xfd50, 0xfd8f, - 0xfd92, 0xfdc7, - 0xfdf0, 0xfdfb, - 0xfe70, 0xfe74, - 0xfe76, 0xfefc, - 0xff21, 0xff3a, - 0xff41, 0xff5a, - 0xff66, 0xffbe, - 0xffc2, 0xffc7, - 0xffca, 0xffcf, - 0xffd2, 0xffd7, - 0xffda, 0xffdc, - 0x10000, 0x1000b, - 0x1000d, 0x10026, - 0x10028, 0x1003a, - 0x1003c, 0x1003d, - 0x1003f, 0x1004d, - 0x10050, 0x1005d, - 0x10080, 0x100fa, - 0x10280, 0x1029c, - 0x102a0, 0x102d0, - 0x10300, 0x1031f, - 0x10330, 0x10340, - 0x10342, 0x10349, - 0x10350, 0x10375, - 0x10380, 0x1039d, - 0x103a0, 0x103c3, - 0x103c8, 0x103cf, - 0x10400, 0x1049d, - 0x104b0, 0x104d3, - 0x104d8, 0x104fb, - 0x10500, 0x10527, - 0x10530, 0x10563, - 0x10600, 0x10736, - 0x10740, 0x10755, - 0x10760, 0x10767, - 0x10800, 0x10805, - 0x10808, 0x10808, - 0x1080a, 0x10835, - 0x10837, 0x10838, - 0x1083c, 0x1083c, - 0x1083f, 0x10855, - 0x10860, 0x10876, - 0x10880, 0x1089e, - 0x108e0, 0x108f2, - 0x108f4, 0x108f5, - 0x10900, 0x10915, - 0x10920, 0x10939, - 0x10980, 0x109b7, - 0x109be, 0x109bf, - 0x10a00, 0x10a00, - 0x10a10, 0x10a13, - 0x10a15, 0x10a17, - 0x10a19, 0x10a33, - 0x10a60, 0x10a7c, - 0x10a80, 0x10a9c, - 0x10ac0, 0x10ac7, - 0x10ac9, 0x10ae4, - 0x10b00, 0x10b35, - 0x10b40, 0x10b55, - 0x10b60, 0x10b72, - 0x10b80, 0x10b91, - 0x10c00, 0x10c48, - 0x10c80, 0x10cb2, - 0x10cc0, 0x10cf2, - 0x11003, 0x11037, - 0x11083, 0x110af, - 0x110d0, 0x110e8, - 0x11103, 0x11126, - 0x11150, 0x11172, - 0x11176, 0x11176, - 0x11183, 0x111b2, - 0x111c1, 0x111c4, - 0x111da, 0x111da, - 0x111dc, 0x111dc, - 0x11200, 0x11211, - 0x11213, 0x1122b, - 0x11280, 0x11286, - 0x11288, 0x11288, - 0x1128a, 0x1128d, - 0x1128f, 0x1129d, - 0x1129f, 0x112a8, - 0x112b0, 0x112de, - 0x11305, 0x1130c, - 0x1130f, 0x11310, - 0x11313, 0x11328, - 0x1132a, 0x11330, - 0x11332, 0x11333, - 0x11335, 0x11339, - 0x1133d, 0x1133d, - 0x11350, 0x11350, - 0x1135d, 0x11361, - 0x11400, 0x11434, - 0x11447, 0x1144a, - 0x11480, 0x114af, - 0x114c4, 0x114c5, - 0x114c7, 0x114c7, - 0x11580, 0x115ae, - 0x115d8, 0x115db, - 0x11600, 0x1162f, - 0x11644, 0x11644, - 0x11680, 0x116aa, - 0x11700, 0x11719, - 0x118a0, 0x118df, - 0x118ff, 0x118ff, - 0x11ac0, 0x11af8, - 0x11c00, 0x11c08, - 0x11c0a, 0x11c2e, - 0x11c40, 0x11c40, - 0x11c72, 0x11c8f, - 0x12000, 0x12399, - 0x12480, 0x12543, - 0x13000, 0x1342e, - 0x14400, 0x14646, - 0x16800, 0x16a38, - 0x16a40, 0x16a5e, - 0x16ad0, 0x16aed, - 0x16b00, 0x16b2f, - 0x16b40, 0x16b43, - 0x16b63, 0x16b77, - 0x16b7d, 0x16b8f, - 0x16f00, 0x16f44, - 0x16f50, 0x16f50, - 0x16f93, 0x16f9f, - 0x16fe0, 0x16fe0, - 0x17000, 0x187ec, - 0x18800, 0x18af2, - 0x1b000, 0x1b001, - 0x1bc00, 0x1bc6a, - 0x1bc70, 0x1bc7c, - 0x1bc80, 0x1bc88, - 0x1bc90, 0x1bc99, - 0x1d400, 0x1d454, - 0x1d456, 0x1d49c, - 0x1d49e, 0x1d49f, - 0x1d4a2, 0x1d4a2, - 0x1d4a5, 0x1d4a6, - 0x1d4a9, 0x1d4ac, - 0x1d4ae, 0x1d4b9, - 0x1d4bb, 0x1d4bb, - 0x1d4bd, 0x1d4c3, - 0x1d4c5, 0x1d505, - 0x1d507, 0x1d50a, - 0x1d50d, 0x1d514, - 0x1d516, 0x1d51c, - 0x1d51e, 0x1d539, - 0x1d53b, 0x1d53e, - 0x1d540, 0x1d544, - 0x1d546, 0x1d546, - 0x1d54a, 0x1d550, - 0x1d552, 0x1d6a5, - 0x1d6a8, 0x1d6c0, - 0x1d6c2, 0x1d6da, - 0x1d6dc, 0x1d6fa, - 0x1d6fc, 0x1d714, - 0x1d716, 0x1d734, - 0x1d736, 0x1d74e, - 0x1d750, 0x1d76e, - 0x1d770, 0x1d788, - 0x1d78a, 0x1d7a8, - 0x1d7aa, 0x1d7c2, - 0x1d7c4, 0x1d7cb, - 0x1e800, 0x1e8c4, - 0x1e900, 0x1e943, - 0x1ee00, 0x1ee03, - 0x1ee05, 0x1ee1f, - 0x1ee21, 0x1ee22, - 0x1ee24, 0x1ee24, - 0x1ee27, 0x1ee27, - 0x1ee29, 0x1ee32, - 0x1ee34, 0x1ee37, - 0x1ee39, 0x1ee39, - 0x1ee3b, 0x1ee3b, - 0x1ee42, 0x1ee42, - 0x1ee47, 0x1ee47, - 0x1ee49, 0x1ee49, - 0x1ee4b, 0x1ee4b, - 0x1ee4d, 0x1ee4f, - 0x1ee51, 0x1ee52, - 0x1ee54, 0x1ee54, - 0x1ee57, 0x1ee57, - 0x1ee59, 0x1ee59, - 0x1ee5b, 0x1ee5b, - 0x1ee5d, 0x1ee5d, - 0x1ee5f, 0x1ee5f, - 0x1ee61, 0x1ee62, - 0x1ee64, 0x1ee64, - 0x1ee67, 0x1ee6a, - 0x1ee6c, 0x1ee72, - 0x1ee74, 0x1ee77, - 0x1ee79, 0x1ee7c, - 0x1ee7e, 0x1ee7e, - 0x1ee80, 0x1ee89, - 0x1ee8b, 0x1ee9b, - 0x1eea1, 0x1eea3, - 0x1eea5, 0x1eea9, - 0x1eeab, 0x1eebb, - 0x20000, 0x2a6d6, - 0x2a700, 0x2b734, - 0x2b740, 0x2b81d, - 0x2b820, 0x2cea1, - 0x2f800, 0x2fa1d, -}; /* CR_L */ - -/* 'LC': General Category */ -static const OnigCodePoint CR_LC[] = { - 126, - 0x0041, 0x005a, - 0x0061, 0x007a, - 0x00b5, 0x00b5, - 0x00c0, 0x00d6, - 0x00d8, 0x00f6, - 0x00f8, 0x01ba, - 0x01bc, 0x01bf, - 0x01c4, 0x0293, - 0x0295, 0x02af, - 0x0370, 0x0373, - 0x0376, 0x0377, - 0x037b, 0x037d, - 0x037f, 0x037f, - 0x0386, 0x0386, - 0x0388, 0x038a, - 0x038c, 0x038c, - 0x038e, 0x03a1, - 0x03a3, 0x03f5, - 0x03f7, 0x0481, - 0x048a, 0x052f, - 0x0531, 0x0556, - 0x0561, 0x0587, - 0x10a0, 0x10c5, - 0x10c7, 0x10c7, - 0x10cd, 0x10cd, - 0x13a0, 0x13f5, - 0x13f8, 0x13fd, - 0x1c80, 0x1c88, - 0x1d00, 0x1d2b, - 0x1d6b, 0x1d77, - 0x1d79, 0x1d9a, - 0x1e00, 0x1f15, - 0x1f18, 0x1f1d, - 0x1f20, 0x1f45, - 0x1f48, 0x1f4d, - 0x1f50, 0x1f57, - 0x1f59, 0x1f59, - 0x1f5b, 0x1f5b, - 0x1f5d, 0x1f5d, - 0x1f5f, 0x1f7d, - 0x1f80, 0x1fb4, - 0x1fb6, 0x1fbc, - 0x1fbe, 0x1fbe, - 0x1fc2, 0x1fc4, - 0x1fc6, 0x1fcc, - 0x1fd0, 0x1fd3, - 0x1fd6, 0x1fdb, - 0x1fe0, 0x1fec, - 0x1ff2, 0x1ff4, - 0x1ff6, 0x1ffc, - 0x2102, 0x2102, - 0x2107, 0x2107, - 0x210a, 0x2113, - 0x2115, 0x2115, - 0x2119, 0x211d, - 0x2124, 0x2124, - 0x2126, 0x2126, - 0x2128, 0x2128, - 0x212a, 0x212d, - 0x212f, 0x2134, - 0x2139, 0x2139, - 0x213c, 0x213f, - 0x2145, 0x2149, - 0x214e, 0x214e, - 0x2183, 0x2184, - 0x2c00, 0x2c2e, - 0x2c30, 0x2c5e, - 0x2c60, 0x2c7b, - 0x2c7e, 0x2ce4, - 0x2ceb, 0x2cee, - 0x2cf2, 0x2cf3, - 0x2d00, 0x2d25, - 0x2d27, 0x2d27, - 0x2d2d, 0x2d2d, - 0xa640, 0xa66d, - 0xa680, 0xa69b, - 0xa722, 0xa76f, - 0xa771, 0xa787, - 0xa78b, 0xa78e, - 0xa790, 0xa7ae, - 0xa7b0, 0xa7b7, - 0xa7fa, 0xa7fa, - 0xab30, 0xab5a, - 0xab60, 0xab65, - 0xab70, 0xabbf, - 0xfb00, 0xfb06, - 0xfb13, 0xfb17, - 0xff21, 0xff3a, - 0xff41, 0xff5a, - 0x10400, 0x1044f, - 0x104b0, 0x104d3, - 0x104d8, 0x104fb, - 0x10c80, 0x10cb2, - 0x10cc0, 0x10cf2, - 0x118a0, 0x118df, - 0x1d400, 0x1d454, - 0x1d456, 0x1d49c, - 0x1d49e, 0x1d49f, - 0x1d4a2, 0x1d4a2, - 0x1d4a5, 0x1d4a6, - 0x1d4a9, 0x1d4ac, - 0x1d4ae, 0x1d4b9, - 0x1d4bb, 0x1d4bb, - 0x1d4bd, 0x1d4c3, - 0x1d4c5, 0x1d505, - 0x1d507, 0x1d50a, - 0x1d50d, 0x1d514, - 0x1d516, 0x1d51c, - 0x1d51e, 0x1d539, - 0x1d53b, 0x1d53e, - 0x1d540, 0x1d544, - 0x1d546, 0x1d546, - 0x1d54a, 0x1d550, - 0x1d552, 0x1d6a5, - 0x1d6a8, 0x1d6c0, - 0x1d6c2, 0x1d6da, - 0x1d6dc, 0x1d6fa, - 0x1d6fc, 0x1d714, - 0x1d716, 0x1d734, - 0x1d736, 0x1d74e, - 0x1d750, 0x1d76e, - 0x1d770, 0x1d788, - 0x1d78a, 0x1d7a8, - 0x1d7aa, 0x1d7c2, - 0x1d7c4, 0x1d7cb, - 0x1e900, 0x1e943, -}; /* CR_LC */ - -/* 'Ll': General Category */ -static const OnigCodePoint CR_Ll[] = { - 633, - 0x0061, 0x007a, - 0x00b5, 0x00b5, - 0x00df, 0x00f6, - 0x00f8, 0x00ff, - 0x0101, 0x0101, - 0x0103, 0x0103, - 0x0105, 0x0105, - 0x0107, 0x0107, - 0x0109, 0x0109, - 0x010b, 0x010b, - 0x010d, 0x010d, - 0x010f, 0x010f, - 0x0111, 0x0111, - 0x0113, 0x0113, - 0x0115, 0x0115, - 0x0117, 0x0117, - 0x0119, 0x0119, - 0x011b, 0x011b, - 0x011d, 0x011d, - 0x011f, 0x011f, - 0x0121, 0x0121, - 0x0123, 0x0123, - 0x0125, 0x0125, - 0x0127, 0x0127, - 0x0129, 0x0129, - 0x012b, 0x012b, - 0x012d, 0x012d, - 0x012f, 0x012f, - 0x0131, 0x0131, - 0x0133, 0x0133, - 0x0135, 0x0135, - 0x0137, 0x0138, - 0x013a, 0x013a, - 0x013c, 0x013c, - 0x013e, 0x013e, - 0x0140, 0x0140, - 0x0142, 0x0142, - 0x0144, 0x0144, - 0x0146, 0x0146, - 0x0148, 0x0149, - 0x014b, 0x014b, - 0x014d, 0x014d, - 0x014f, 0x014f, - 0x0151, 0x0151, - 0x0153, 0x0153, - 0x0155, 0x0155, - 0x0157, 0x0157, - 0x0159, 0x0159, - 0x015b, 0x015b, - 0x015d, 0x015d, - 0x015f, 0x015f, - 0x0161, 0x0161, - 0x0163, 0x0163, - 0x0165, 0x0165, - 0x0167, 0x0167, - 0x0169, 0x0169, - 0x016b, 0x016b, - 0x016d, 0x016d, - 0x016f, 0x016f, - 0x0171, 0x0171, - 0x0173, 0x0173, - 0x0175, 0x0175, - 0x0177, 0x0177, - 0x017a, 0x017a, - 0x017c, 0x017c, - 0x017e, 0x0180, - 0x0183, 0x0183, - 0x0185, 0x0185, - 0x0188, 0x0188, - 0x018c, 0x018d, - 0x0192, 0x0192, - 0x0195, 0x0195, - 0x0199, 0x019b, - 0x019e, 0x019e, - 0x01a1, 0x01a1, - 0x01a3, 0x01a3, - 0x01a5, 0x01a5, - 0x01a8, 0x01a8, - 0x01aa, 0x01ab, - 0x01ad, 0x01ad, - 0x01b0, 0x01b0, - 0x01b4, 0x01b4, - 0x01b6, 0x01b6, - 0x01b9, 0x01ba, - 0x01bd, 0x01bf, - 0x01c6, 0x01c6, - 0x01c9, 0x01c9, - 0x01cc, 0x01cc, - 0x01ce, 0x01ce, - 0x01d0, 0x01d0, - 0x01d2, 0x01d2, - 0x01d4, 0x01d4, - 0x01d6, 0x01d6, - 0x01d8, 0x01d8, - 0x01da, 0x01da, - 0x01dc, 0x01dd, - 0x01df, 0x01df, - 0x01e1, 0x01e1, - 0x01e3, 0x01e3, - 0x01e5, 0x01e5, - 0x01e7, 0x01e7, - 0x01e9, 0x01e9, - 0x01eb, 0x01eb, - 0x01ed, 0x01ed, - 0x01ef, 0x01f0, - 0x01f3, 0x01f3, - 0x01f5, 0x01f5, - 0x01f9, 0x01f9, - 0x01fb, 0x01fb, - 0x01fd, 0x01fd, - 0x01ff, 0x01ff, - 0x0201, 0x0201, - 0x0203, 0x0203, - 0x0205, 0x0205, - 0x0207, 0x0207, - 0x0209, 0x0209, - 0x020b, 0x020b, - 0x020d, 0x020d, - 0x020f, 0x020f, - 0x0211, 0x0211, - 0x0213, 0x0213, - 0x0215, 0x0215, - 0x0217, 0x0217, - 0x0219, 0x0219, - 0x021b, 0x021b, - 0x021d, 0x021d, - 0x021f, 0x021f, - 0x0221, 0x0221, - 0x0223, 0x0223, - 0x0225, 0x0225, - 0x0227, 0x0227, - 0x0229, 0x0229, - 0x022b, 0x022b, - 0x022d, 0x022d, - 0x022f, 0x022f, - 0x0231, 0x0231, - 0x0233, 0x0239, - 0x023c, 0x023c, - 0x023f, 0x0240, - 0x0242, 0x0242, - 0x0247, 0x0247, - 0x0249, 0x0249, - 0x024b, 0x024b, - 0x024d, 0x024d, - 0x024f, 0x0293, - 0x0295, 0x02af, - 0x0371, 0x0371, - 0x0373, 0x0373, - 0x0377, 0x0377, - 0x037b, 0x037d, - 0x0390, 0x0390, - 0x03ac, 0x03ce, - 0x03d0, 0x03d1, - 0x03d5, 0x03d7, - 0x03d9, 0x03d9, - 0x03db, 0x03db, - 0x03dd, 0x03dd, - 0x03df, 0x03df, - 0x03e1, 0x03e1, - 0x03e3, 0x03e3, - 0x03e5, 0x03e5, - 0x03e7, 0x03e7, - 0x03e9, 0x03e9, - 0x03eb, 0x03eb, - 0x03ed, 0x03ed, - 0x03ef, 0x03f3, - 0x03f5, 0x03f5, - 0x03f8, 0x03f8, - 0x03fb, 0x03fc, - 0x0430, 0x045f, - 0x0461, 0x0461, - 0x0463, 0x0463, - 0x0465, 0x0465, - 0x0467, 0x0467, - 0x0469, 0x0469, - 0x046b, 0x046b, - 0x046d, 0x046d, - 0x046f, 0x046f, - 0x0471, 0x0471, - 0x0473, 0x0473, - 0x0475, 0x0475, - 0x0477, 0x0477, - 0x0479, 0x0479, - 0x047b, 0x047b, - 0x047d, 0x047d, - 0x047f, 0x047f, - 0x0481, 0x0481, - 0x048b, 0x048b, - 0x048d, 0x048d, - 0x048f, 0x048f, - 0x0491, 0x0491, - 0x0493, 0x0493, - 0x0495, 0x0495, - 0x0497, 0x0497, - 0x0499, 0x0499, - 0x049b, 0x049b, - 0x049d, 0x049d, - 0x049f, 0x049f, - 0x04a1, 0x04a1, - 0x04a3, 0x04a3, - 0x04a5, 0x04a5, - 0x04a7, 0x04a7, - 0x04a9, 0x04a9, - 0x04ab, 0x04ab, - 0x04ad, 0x04ad, - 0x04af, 0x04af, - 0x04b1, 0x04b1, - 0x04b3, 0x04b3, - 0x04b5, 0x04b5, - 0x04b7, 0x04b7, - 0x04b9, 0x04b9, - 0x04bb, 0x04bb, - 0x04bd, 0x04bd, - 0x04bf, 0x04bf, - 0x04c2, 0x04c2, - 0x04c4, 0x04c4, - 0x04c6, 0x04c6, - 0x04c8, 0x04c8, - 0x04ca, 0x04ca, - 0x04cc, 0x04cc, - 0x04ce, 0x04cf, - 0x04d1, 0x04d1, - 0x04d3, 0x04d3, - 0x04d5, 0x04d5, - 0x04d7, 0x04d7, - 0x04d9, 0x04d9, - 0x04db, 0x04db, - 0x04dd, 0x04dd, - 0x04df, 0x04df, - 0x04e1, 0x04e1, - 0x04e3, 0x04e3, - 0x04e5, 0x04e5, - 0x04e7, 0x04e7, - 0x04e9, 0x04e9, - 0x04eb, 0x04eb, - 0x04ed, 0x04ed, - 0x04ef, 0x04ef, - 0x04f1, 0x04f1, - 0x04f3, 0x04f3, - 0x04f5, 0x04f5, - 0x04f7, 0x04f7, - 0x04f9, 0x04f9, - 0x04fb, 0x04fb, - 0x04fd, 0x04fd, - 0x04ff, 0x04ff, - 0x0501, 0x0501, - 0x0503, 0x0503, - 0x0505, 0x0505, - 0x0507, 0x0507, - 0x0509, 0x0509, - 0x050b, 0x050b, - 0x050d, 0x050d, - 0x050f, 0x050f, - 0x0511, 0x0511, - 0x0513, 0x0513, - 0x0515, 0x0515, - 0x0517, 0x0517, - 0x0519, 0x0519, - 0x051b, 0x051b, - 0x051d, 0x051d, - 0x051f, 0x051f, - 0x0521, 0x0521, - 0x0523, 0x0523, - 0x0525, 0x0525, - 0x0527, 0x0527, - 0x0529, 0x0529, - 0x052b, 0x052b, - 0x052d, 0x052d, - 0x052f, 0x052f, - 0x0561, 0x0587, - 0x13f8, 0x13fd, - 0x1c80, 0x1c88, - 0x1d00, 0x1d2b, - 0x1d6b, 0x1d77, - 0x1d79, 0x1d9a, - 0x1e01, 0x1e01, - 0x1e03, 0x1e03, - 0x1e05, 0x1e05, - 0x1e07, 0x1e07, - 0x1e09, 0x1e09, - 0x1e0b, 0x1e0b, - 0x1e0d, 0x1e0d, - 0x1e0f, 0x1e0f, - 0x1e11, 0x1e11, - 0x1e13, 0x1e13, - 0x1e15, 0x1e15, - 0x1e17, 0x1e17, - 0x1e19, 0x1e19, - 0x1e1b, 0x1e1b, - 0x1e1d, 0x1e1d, - 0x1e1f, 0x1e1f, - 0x1e21, 0x1e21, - 0x1e23, 0x1e23, - 0x1e25, 0x1e25, - 0x1e27, 0x1e27, - 0x1e29, 0x1e29, - 0x1e2b, 0x1e2b, - 0x1e2d, 0x1e2d, - 0x1e2f, 0x1e2f, - 0x1e31, 0x1e31, - 0x1e33, 0x1e33, - 0x1e35, 0x1e35, - 0x1e37, 0x1e37, - 0x1e39, 0x1e39, - 0x1e3b, 0x1e3b, - 0x1e3d, 0x1e3d, - 0x1e3f, 0x1e3f, - 0x1e41, 0x1e41, - 0x1e43, 0x1e43, - 0x1e45, 0x1e45, - 0x1e47, 0x1e47, - 0x1e49, 0x1e49, - 0x1e4b, 0x1e4b, - 0x1e4d, 0x1e4d, - 0x1e4f, 0x1e4f, - 0x1e51, 0x1e51, - 0x1e53, 0x1e53, - 0x1e55, 0x1e55, - 0x1e57, 0x1e57, - 0x1e59, 0x1e59, - 0x1e5b, 0x1e5b, - 0x1e5d, 0x1e5d, - 0x1e5f, 0x1e5f, - 0x1e61, 0x1e61, - 0x1e63, 0x1e63, - 0x1e65, 0x1e65, - 0x1e67, 0x1e67, - 0x1e69, 0x1e69, - 0x1e6b, 0x1e6b, - 0x1e6d, 0x1e6d, - 0x1e6f, 0x1e6f, - 0x1e71, 0x1e71, - 0x1e73, 0x1e73, - 0x1e75, 0x1e75, - 0x1e77, 0x1e77, - 0x1e79, 0x1e79, - 0x1e7b, 0x1e7b, - 0x1e7d, 0x1e7d, - 0x1e7f, 0x1e7f, - 0x1e81, 0x1e81, - 0x1e83, 0x1e83, - 0x1e85, 0x1e85, - 0x1e87, 0x1e87, - 0x1e89, 0x1e89, - 0x1e8b, 0x1e8b, - 0x1e8d, 0x1e8d, - 0x1e8f, 0x1e8f, - 0x1e91, 0x1e91, - 0x1e93, 0x1e93, - 0x1e95, 0x1e9d, - 0x1e9f, 0x1e9f, - 0x1ea1, 0x1ea1, - 0x1ea3, 0x1ea3, - 0x1ea5, 0x1ea5, - 0x1ea7, 0x1ea7, - 0x1ea9, 0x1ea9, - 0x1eab, 0x1eab, - 0x1ead, 0x1ead, - 0x1eaf, 0x1eaf, - 0x1eb1, 0x1eb1, - 0x1eb3, 0x1eb3, - 0x1eb5, 0x1eb5, - 0x1eb7, 0x1eb7, - 0x1eb9, 0x1eb9, - 0x1ebb, 0x1ebb, - 0x1ebd, 0x1ebd, - 0x1ebf, 0x1ebf, - 0x1ec1, 0x1ec1, - 0x1ec3, 0x1ec3, - 0x1ec5, 0x1ec5, - 0x1ec7, 0x1ec7, - 0x1ec9, 0x1ec9, - 0x1ecb, 0x1ecb, - 0x1ecd, 0x1ecd, - 0x1ecf, 0x1ecf, - 0x1ed1, 0x1ed1, - 0x1ed3, 0x1ed3, - 0x1ed5, 0x1ed5, - 0x1ed7, 0x1ed7, - 0x1ed9, 0x1ed9, - 0x1edb, 0x1edb, - 0x1edd, 0x1edd, - 0x1edf, 0x1edf, - 0x1ee1, 0x1ee1, - 0x1ee3, 0x1ee3, - 0x1ee5, 0x1ee5, - 0x1ee7, 0x1ee7, - 0x1ee9, 0x1ee9, - 0x1eeb, 0x1eeb, - 0x1eed, 0x1eed, - 0x1eef, 0x1eef, - 0x1ef1, 0x1ef1, - 0x1ef3, 0x1ef3, - 0x1ef5, 0x1ef5, - 0x1ef7, 0x1ef7, - 0x1ef9, 0x1ef9, - 0x1efb, 0x1efb, - 0x1efd, 0x1efd, - 0x1eff, 0x1f07, - 0x1f10, 0x1f15, - 0x1f20, 0x1f27, - 0x1f30, 0x1f37, - 0x1f40, 0x1f45, - 0x1f50, 0x1f57, - 0x1f60, 0x1f67, - 0x1f70, 0x1f7d, - 0x1f80, 0x1f87, - 0x1f90, 0x1f97, - 0x1fa0, 0x1fa7, - 0x1fb0, 0x1fb4, - 0x1fb6, 0x1fb7, - 0x1fbe, 0x1fbe, - 0x1fc2, 0x1fc4, - 0x1fc6, 0x1fc7, - 0x1fd0, 0x1fd3, - 0x1fd6, 0x1fd7, - 0x1fe0, 0x1fe7, - 0x1ff2, 0x1ff4, - 0x1ff6, 0x1ff7, - 0x210a, 0x210a, - 0x210e, 0x210f, - 0x2113, 0x2113, - 0x212f, 0x212f, - 0x2134, 0x2134, - 0x2139, 0x2139, - 0x213c, 0x213d, - 0x2146, 0x2149, - 0x214e, 0x214e, - 0x2184, 0x2184, - 0x2c30, 0x2c5e, - 0x2c61, 0x2c61, - 0x2c65, 0x2c66, - 0x2c68, 0x2c68, - 0x2c6a, 0x2c6a, - 0x2c6c, 0x2c6c, - 0x2c71, 0x2c71, - 0x2c73, 0x2c74, - 0x2c76, 0x2c7b, - 0x2c81, 0x2c81, - 0x2c83, 0x2c83, - 0x2c85, 0x2c85, - 0x2c87, 0x2c87, - 0x2c89, 0x2c89, - 0x2c8b, 0x2c8b, - 0x2c8d, 0x2c8d, - 0x2c8f, 0x2c8f, - 0x2c91, 0x2c91, - 0x2c93, 0x2c93, - 0x2c95, 0x2c95, - 0x2c97, 0x2c97, - 0x2c99, 0x2c99, - 0x2c9b, 0x2c9b, - 0x2c9d, 0x2c9d, - 0x2c9f, 0x2c9f, - 0x2ca1, 0x2ca1, - 0x2ca3, 0x2ca3, - 0x2ca5, 0x2ca5, - 0x2ca7, 0x2ca7, - 0x2ca9, 0x2ca9, - 0x2cab, 0x2cab, - 0x2cad, 0x2cad, - 0x2caf, 0x2caf, - 0x2cb1, 0x2cb1, - 0x2cb3, 0x2cb3, - 0x2cb5, 0x2cb5, - 0x2cb7, 0x2cb7, - 0x2cb9, 0x2cb9, - 0x2cbb, 0x2cbb, - 0x2cbd, 0x2cbd, - 0x2cbf, 0x2cbf, - 0x2cc1, 0x2cc1, - 0x2cc3, 0x2cc3, - 0x2cc5, 0x2cc5, - 0x2cc7, 0x2cc7, - 0x2cc9, 0x2cc9, - 0x2ccb, 0x2ccb, - 0x2ccd, 0x2ccd, - 0x2ccf, 0x2ccf, - 0x2cd1, 0x2cd1, - 0x2cd3, 0x2cd3, - 0x2cd5, 0x2cd5, - 0x2cd7, 0x2cd7, - 0x2cd9, 0x2cd9, - 0x2cdb, 0x2cdb, - 0x2cdd, 0x2cdd, - 0x2cdf, 0x2cdf, - 0x2ce1, 0x2ce1, - 0x2ce3, 0x2ce4, - 0x2cec, 0x2cec, - 0x2cee, 0x2cee, - 0x2cf3, 0x2cf3, - 0x2d00, 0x2d25, - 0x2d27, 0x2d27, - 0x2d2d, 0x2d2d, - 0xa641, 0xa641, - 0xa643, 0xa643, - 0xa645, 0xa645, - 0xa647, 0xa647, - 0xa649, 0xa649, - 0xa64b, 0xa64b, - 0xa64d, 0xa64d, - 0xa64f, 0xa64f, - 0xa651, 0xa651, - 0xa653, 0xa653, - 0xa655, 0xa655, - 0xa657, 0xa657, - 0xa659, 0xa659, - 0xa65b, 0xa65b, - 0xa65d, 0xa65d, - 0xa65f, 0xa65f, - 0xa661, 0xa661, - 0xa663, 0xa663, - 0xa665, 0xa665, - 0xa667, 0xa667, - 0xa669, 0xa669, - 0xa66b, 0xa66b, - 0xa66d, 0xa66d, - 0xa681, 0xa681, - 0xa683, 0xa683, - 0xa685, 0xa685, - 0xa687, 0xa687, - 0xa689, 0xa689, - 0xa68b, 0xa68b, - 0xa68d, 0xa68d, - 0xa68f, 0xa68f, - 0xa691, 0xa691, - 0xa693, 0xa693, - 0xa695, 0xa695, - 0xa697, 0xa697, - 0xa699, 0xa699, - 0xa69b, 0xa69b, - 0xa723, 0xa723, - 0xa725, 0xa725, - 0xa727, 0xa727, - 0xa729, 0xa729, - 0xa72b, 0xa72b, - 0xa72d, 0xa72d, - 0xa72f, 0xa731, - 0xa733, 0xa733, - 0xa735, 0xa735, - 0xa737, 0xa737, - 0xa739, 0xa739, - 0xa73b, 0xa73b, - 0xa73d, 0xa73d, - 0xa73f, 0xa73f, - 0xa741, 0xa741, - 0xa743, 0xa743, - 0xa745, 0xa745, - 0xa747, 0xa747, - 0xa749, 0xa749, - 0xa74b, 0xa74b, - 0xa74d, 0xa74d, - 0xa74f, 0xa74f, - 0xa751, 0xa751, - 0xa753, 0xa753, - 0xa755, 0xa755, - 0xa757, 0xa757, - 0xa759, 0xa759, - 0xa75b, 0xa75b, - 0xa75d, 0xa75d, - 0xa75f, 0xa75f, - 0xa761, 0xa761, - 0xa763, 0xa763, - 0xa765, 0xa765, - 0xa767, 0xa767, - 0xa769, 0xa769, - 0xa76b, 0xa76b, - 0xa76d, 0xa76d, - 0xa76f, 0xa76f, - 0xa771, 0xa778, - 0xa77a, 0xa77a, - 0xa77c, 0xa77c, - 0xa77f, 0xa77f, - 0xa781, 0xa781, - 0xa783, 0xa783, - 0xa785, 0xa785, - 0xa787, 0xa787, - 0xa78c, 0xa78c, - 0xa78e, 0xa78e, - 0xa791, 0xa791, - 0xa793, 0xa795, - 0xa797, 0xa797, - 0xa799, 0xa799, - 0xa79b, 0xa79b, - 0xa79d, 0xa79d, - 0xa79f, 0xa79f, - 0xa7a1, 0xa7a1, - 0xa7a3, 0xa7a3, - 0xa7a5, 0xa7a5, - 0xa7a7, 0xa7a7, - 0xa7a9, 0xa7a9, - 0xa7b5, 0xa7b5, - 0xa7b7, 0xa7b7, - 0xa7fa, 0xa7fa, - 0xab30, 0xab5a, - 0xab60, 0xab65, - 0xab70, 0xabbf, - 0xfb00, 0xfb06, - 0xfb13, 0xfb17, - 0xff41, 0xff5a, - 0x10428, 0x1044f, - 0x104d8, 0x104fb, - 0x10cc0, 0x10cf2, - 0x118c0, 0x118df, - 0x1d41a, 0x1d433, - 0x1d44e, 0x1d454, - 0x1d456, 0x1d467, - 0x1d482, 0x1d49b, - 0x1d4b6, 0x1d4b9, - 0x1d4bb, 0x1d4bb, - 0x1d4bd, 0x1d4c3, - 0x1d4c5, 0x1d4cf, - 0x1d4ea, 0x1d503, - 0x1d51e, 0x1d537, - 0x1d552, 0x1d56b, - 0x1d586, 0x1d59f, - 0x1d5ba, 0x1d5d3, - 0x1d5ee, 0x1d607, - 0x1d622, 0x1d63b, - 0x1d656, 0x1d66f, - 0x1d68a, 0x1d6a5, - 0x1d6c2, 0x1d6da, - 0x1d6dc, 0x1d6e1, - 0x1d6fc, 0x1d714, - 0x1d716, 0x1d71b, - 0x1d736, 0x1d74e, - 0x1d750, 0x1d755, - 0x1d770, 0x1d788, - 0x1d78a, 0x1d78f, - 0x1d7aa, 0x1d7c2, - 0x1d7c4, 0x1d7c9, - 0x1d7cb, 0x1d7cb, - 0x1e922, 0x1e943, -}; /* CR_Ll */ - -/* 'Lm': General Category */ -static const OnigCodePoint CR_Lm[] = { - 57, - 0x02b0, 0x02c1, - 0x02c6, 0x02d1, - 0x02e0, 0x02e4, - 0x02ec, 0x02ec, - 0x02ee, 0x02ee, - 0x0374, 0x0374, - 0x037a, 0x037a, - 0x0559, 0x0559, - 0x0640, 0x0640, - 0x06e5, 0x06e6, - 0x07f4, 0x07f5, - 0x07fa, 0x07fa, - 0x081a, 0x081a, - 0x0824, 0x0824, - 0x0828, 0x0828, - 0x0971, 0x0971, - 0x0e46, 0x0e46, - 0x0ec6, 0x0ec6, - 0x10fc, 0x10fc, - 0x17d7, 0x17d7, - 0x1843, 0x1843, - 0x1aa7, 0x1aa7, - 0x1c78, 0x1c7d, - 0x1d2c, 0x1d6a, - 0x1d78, 0x1d78, - 0x1d9b, 0x1dbf, - 0x2071, 0x2071, - 0x207f, 0x207f, - 0x2090, 0x209c, - 0x2c7c, 0x2c7d, - 0x2d6f, 0x2d6f, - 0x2e2f, 0x2e2f, - 0x3005, 0x3005, - 0x3031, 0x3035, - 0x303b, 0x303b, - 0x309d, 0x309e, - 0x30fc, 0x30fe, - 0xa015, 0xa015, - 0xa4f8, 0xa4fd, - 0xa60c, 0xa60c, - 0xa67f, 0xa67f, - 0xa69c, 0xa69d, - 0xa717, 0xa71f, - 0xa770, 0xa770, - 0xa788, 0xa788, - 0xa7f8, 0xa7f9, - 0xa9cf, 0xa9cf, - 0xa9e6, 0xa9e6, - 0xaa70, 0xaa70, - 0xaadd, 0xaadd, - 0xaaf3, 0xaaf4, - 0xab5c, 0xab5f, - 0xff70, 0xff70, - 0xff9e, 0xff9f, - 0x16b40, 0x16b43, - 0x16f93, 0x16f9f, - 0x16fe0, 0x16fe0, -}; /* CR_Lm */ - -/* 'Lo': General Category */ -static const OnigCodePoint CR_Lo[] = { - 445, - 0x00aa, 0x00aa, - 0x00ba, 0x00ba, - 0x01bb, 0x01bb, - 0x01c0, 0x01c3, - 0x0294, 0x0294, - 0x05d0, 0x05ea, - 0x05f0, 0x05f2, - 0x0620, 0x063f, - 0x0641, 0x064a, - 0x066e, 0x066f, - 0x0671, 0x06d3, - 0x06d5, 0x06d5, - 0x06ee, 0x06ef, - 0x06fa, 0x06fc, - 0x06ff, 0x06ff, - 0x0710, 0x0710, - 0x0712, 0x072f, - 0x074d, 0x07a5, - 0x07b1, 0x07b1, - 0x07ca, 0x07ea, - 0x0800, 0x0815, - 0x0840, 0x0858, - 0x08a0, 0x08b4, - 0x08b6, 0x08bd, - 0x0904, 0x0939, - 0x093d, 0x093d, - 0x0950, 0x0950, - 0x0958, 0x0961, - 0x0972, 0x0980, - 0x0985, 0x098c, - 0x098f, 0x0990, - 0x0993, 0x09a8, - 0x09aa, 0x09b0, - 0x09b2, 0x09b2, - 0x09b6, 0x09b9, - 0x09bd, 0x09bd, - 0x09ce, 0x09ce, - 0x09dc, 0x09dd, - 0x09df, 0x09e1, - 0x09f0, 0x09f1, - 0x0a05, 0x0a0a, - 0x0a0f, 0x0a10, - 0x0a13, 0x0a28, - 0x0a2a, 0x0a30, - 0x0a32, 0x0a33, - 0x0a35, 0x0a36, - 0x0a38, 0x0a39, - 0x0a59, 0x0a5c, - 0x0a5e, 0x0a5e, - 0x0a72, 0x0a74, - 0x0a85, 0x0a8d, - 0x0a8f, 0x0a91, - 0x0a93, 0x0aa8, - 0x0aaa, 0x0ab0, - 0x0ab2, 0x0ab3, - 0x0ab5, 0x0ab9, - 0x0abd, 0x0abd, - 0x0ad0, 0x0ad0, - 0x0ae0, 0x0ae1, - 0x0af9, 0x0af9, - 0x0b05, 0x0b0c, - 0x0b0f, 0x0b10, - 0x0b13, 0x0b28, - 0x0b2a, 0x0b30, - 0x0b32, 0x0b33, - 0x0b35, 0x0b39, - 0x0b3d, 0x0b3d, - 0x0b5c, 0x0b5d, - 0x0b5f, 0x0b61, - 0x0b71, 0x0b71, - 0x0b83, 0x0b83, - 0x0b85, 0x0b8a, - 0x0b8e, 0x0b90, - 0x0b92, 0x0b95, - 0x0b99, 0x0b9a, - 0x0b9c, 0x0b9c, - 0x0b9e, 0x0b9f, - 0x0ba3, 0x0ba4, - 0x0ba8, 0x0baa, - 0x0bae, 0x0bb9, - 0x0bd0, 0x0bd0, - 0x0c05, 0x0c0c, - 0x0c0e, 0x0c10, - 0x0c12, 0x0c28, - 0x0c2a, 0x0c39, - 0x0c3d, 0x0c3d, - 0x0c58, 0x0c5a, - 0x0c60, 0x0c61, - 0x0c80, 0x0c80, - 0x0c85, 0x0c8c, - 0x0c8e, 0x0c90, - 0x0c92, 0x0ca8, - 0x0caa, 0x0cb3, - 0x0cb5, 0x0cb9, - 0x0cbd, 0x0cbd, - 0x0cde, 0x0cde, - 0x0ce0, 0x0ce1, - 0x0cf1, 0x0cf2, - 0x0d05, 0x0d0c, - 0x0d0e, 0x0d10, - 0x0d12, 0x0d3a, - 0x0d3d, 0x0d3d, - 0x0d4e, 0x0d4e, - 0x0d54, 0x0d56, - 0x0d5f, 0x0d61, - 0x0d7a, 0x0d7f, - 0x0d85, 0x0d96, - 0x0d9a, 0x0db1, - 0x0db3, 0x0dbb, - 0x0dbd, 0x0dbd, - 0x0dc0, 0x0dc6, - 0x0e01, 0x0e30, - 0x0e32, 0x0e33, - 0x0e40, 0x0e45, - 0x0e81, 0x0e82, - 0x0e84, 0x0e84, - 0x0e87, 0x0e88, - 0x0e8a, 0x0e8a, - 0x0e8d, 0x0e8d, - 0x0e94, 0x0e97, - 0x0e99, 0x0e9f, - 0x0ea1, 0x0ea3, - 0x0ea5, 0x0ea5, - 0x0ea7, 0x0ea7, - 0x0eaa, 0x0eab, - 0x0ead, 0x0eb0, - 0x0eb2, 0x0eb3, - 0x0ebd, 0x0ebd, - 0x0ec0, 0x0ec4, - 0x0edc, 0x0edf, - 0x0f00, 0x0f00, - 0x0f40, 0x0f47, - 0x0f49, 0x0f6c, - 0x0f88, 0x0f8c, - 0x1000, 0x102a, - 0x103f, 0x103f, - 0x1050, 0x1055, - 0x105a, 0x105d, - 0x1061, 0x1061, - 0x1065, 0x1066, - 0x106e, 0x1070, - 0x1075, 0x1081, - 0x108e, 0x108e, - 0x10d0, 0x10fa, - 0x10fd, 0x1248, - 0x124a, 0x124d, - 0x1250, 0x1256, - 0x1258, 0x1258, - 0x125a, 0x125d, - 0x1260, 0x1288, - 0x128a, 0x128d, - 0x1290, 0x12b0, - 0x12b2, 0x12b5, - 0x12b8, 0x12be, - 0x12c0, 0x12c0, - 0x12c2, 0x12c5, - 0x12c8, 0x12d6, - 0x12d8, 0x1310, - 0x1312, 0x1315, - 0x1318, 0x135a, - 0x1380, 0x138f, - 0x1401, 0x166c, - 0x166f, 0x167f, - 0x1681, 0x169a, - 0x16a0, 0x16ea, - 0x16f1, 0x16f8, - 0x1700, 0x170c, - 0x170e, 0x1711, - 0x1720, 0x1731, - 0x1740, 0x1751, - 0x1760, 0x176c, - 0x176e, 0x1770, - 0x1780, 0x17b3, - 0x17dc, 0x17dc, - 0x1820, 0x1842, - 0x1844, 0x1877, - 0x1880, 0x1884, - 0x1887, 0x18a8, - 0x18aa, 0x18aa, - 0x18b0, 0x18f5, - 0x1900, 0x191e, - 0x1950, 0x196d, - 0x1970, 0x1974, - 0x1980, 0x19ab, - 0x19b0, 0x19c9, - 0x1a00, 0x1a16, - 0x1a20, 0x1a54, - 0x1b05, 0x1b33, - 0x1b45, 0x1b4b, - 0x1b83, 0x1ba0, - 0x1bae, 0x1baf, - 0x1bba, 0x1be5, - 0x1c00, 0x1c23, - 0x1c4d, 0x1c4f, - 0x1c5a, 0x1c77, - 0x1ce9, 0x1cec, - 0x1cee, 0x1cf1, - 0x1cf5, 0x1cf6, - 0x2135, 0x2138, - 0x2d30, 0x2d67, - 0x2d80, 0x2d96, - 0x2da0, 0x2da6, - 0x2da8, 0x2dae, - 0x2db0, 0x2db6, - 0x2db8, 0x2dbe, - 0x2dc0, 0x2dc6, - 0x2dc8, 0x2dce, - 0x2dd0, 0x2dd6, - 0x2dd8, 0x2dde, - 0x3006, 0x3006, - 0x303c, 0x303c, - 0x3041, 0x3096, - 0x309f, 0x309f, - 0x30a1, 0x30fa, - 0x30ff, 0x30ff, - 0x3105, 0x312d, - 0x3131, 0x318e, - 0x31a0, 0x31ba, - 0x31f0, 0x31ff, - 0x3400, 0x4db5, - 0x4e00, 0x9fd5, - 0xa000, 0xa014, - 0xa016, 0xa48c, - 0xa4d0, 0xa4f7, - 0xa500, 0xa60b, - 0xa610, 0xa61f, - 0xa62a, 0xa62b, - 0xa66e, 0xa66e, - 0xa6a0, 0xa6e5, - 0xa78f, 0xa78f, - 0xa7f7, 0xa7f7, - 0xa7fb, 0xa801, - 0xa803, 0xa805, - 0xa807, 0xa80a, - 0xa80c, 0xa822, - 0xa840, 0xa873, - 0xa882, 0xa8b3, - 0xa8f2, 0xa8f7, - 0xa8fb, 0xa8fb, - 0xa8fd, 0xa8fd, - 0xa90a, 0xa925, - 0xa930, 0xa946, - 0xa960, 0xa97c, - 0xa984, 0xa9b2, - 0xa9e0, 0xa9e4, - 0xa9e7, 0xa9ef, - 0xa9fa, 0xa9fe, - 0xaa00, 0xaa28, - 0xaa40, 0xaa42, - 0xaa44, 0xaa4b, - 0xaa60, 0xaa6f, - 0xaa71, 0xaa76, - 0xaa7a, 0xaa7a, - 0xaa7e, 0xaaaf, - 0xaab1, 0xaab1, - 0xaab5, 0xaab6, - 0xaab9, 0xaabd, - 0xaac0, 0xaac0, - 0xaac2, 0xaac2, - 0xaadb, 0xaadc, - 0xaae0, 0xaaea, - 0xaaf2, 0xaaf2, - 0xab01, 0xab06, - 0xab09, 0xab0e, - 0xab11, 0xab16, - 0xab20, 0xab26, - 0xab28, 0xab2e, - 0xabc0, 0xabe2, - 0xac00, 0xd7a3, - 0xd7b0, 0xd7c6, - 0xd7cb, 0xd7fb, - 0xf900, 0xfa6d, - 0xfa70, 0xfad9, - 0xfb1d, 0xfb1d, - 0xfb1f, 0xfb28, - 0xfb2a, 0xfb36, - 0xfb38, 0xfb3c, - 0xfb3e, 0xfb3e, - 0xfb40, 0xfb41, - 0xfb43, 0xfb44, - 0xfb46, 0xfbb1, - 0xfbd3, 0xfd3d, - 0xfd50, 0xfd8f, - 0xfd92, 0xfdc7, - 0xfdf0, 0xfdfb, - 0xfe70, 0xfe74, - 0xfe76, 0xfefc, - 0xff66, 0xff6f, - 0xff71, 0xff9d, - 0xffa0, 0xffbe, - 0xffc2, 0xffc7, - 0xffca, 0xffcf, - 0xffd2, 0xffd7, - 0xffda, 0xffdc, - 0x10000, 0x1000b, - 0x1000d, 0x10026, - 0x10028, 0x1003a, - 0x1003c, 0x1003d, - 0x1003f, 0x1004d, - 0x10050, 0x1005d, - 0x10080, 0x100fa, - 0x10280, 0x1029c, - 0x102a0, 0x102d0, - 0x10300, 0x1031f, - 0x10330, 0x10340, - 0x10342, 0x10349, - 0x10350, 0x10375, - 0x10380, 0x1039d, - 0x103a0, 0x103c3, - 0x103c8, 0x103cf, - 0x10450, 0x1049d, - 0x10500, 0x10527, - 0x10530, 0x10563, - 0x10600, 0x10736, - 0x10740, 0x10755, - 0x10760, 0x10767, - 0x10800, 0x10805, - 0x10808, 0x10808, - 0x1080a, 0x10835, - 0x10837, 0x10838, - 0x1083c, 0x1083c, - 0x1083f, 0x10855, - 0x10860, 0x10876, - 0x10880, 0x1089e, - 0x108e0, 0x108f2, - 0x108f4, 0x108f5, - 0x10900, 0x10915, - 0x10920, 0x10939, - 0x10980, 0x109b7, - 0x109be, 0x109bf, - 0x10a00, 0x10a00, - 0x10a10, 0x10a13, - 0x10a15, 0x10a17, - 0x10a19, 0x10a33, - 0x10a60, 0x10a7c, - 0x10a80, 0x10a9c, - 0x10ac0, 0x10ac7, - 0x10ac9, 0x10ae4, - 0x10b00, 0x10b35, - 0x10b40, 0x10b55, - 0x10b60, 0x10b72, - 0x10b80, 0x10b91, - 0x10c00, 0x10c48, - 0x11003, 0x11037, - 0x11083, 0x110af, - 0x110d0, 0x110e8, - 0x11103, 0x11126, - 0x11150, 0x11172, - 0x11176, 0x11176, - 0x11183, 0x111b2, - 0x111c1, 0x111c4, - 0x111da, 0x111da, - 0x111dc, 0x111dc, - 0x11200, 0x11211, - 0x11213, 0x1122b, - 0x11280, 0x11286, - 0x11288, 0x11288, - 0x1128a, 0x1128d, - 0x1128f, 0x1129d, - 0x1129f, 0x112a8, - 0x112b0, 0x112de, - 0x11305, 0x1130c, - 0x1130f, 0x11310, - 0x11313, 0x11328, - 0x1132a, 0x11330, - 0x11332, 0x11333, - 0x11335, 0x11339, - 0x1133d, 0x1133d, - 0x11350, 0x11350, - 0x1135d, 0x11361, - 0x11400, 0x11434, - 0x11447, 0x1144a, - 0x11480, 0x114af, - 0x114c4, 0x114c5, - 0x114c7, 0x114c7, - 0x11580, 0x115ae, - 0x115d8, 0x115db, - 0x11600, 0x1162f, - 0x11644, 0x11644, - 0x11680, 0x116aa, - 0x11700, 0x11719, - 0x118ff, 0x118ff, - 0x11ac0, 0x11af8, - 0x11c00, 0x11c08, - 0x11c0a, 0x11c2e, - 0x11c40, 0x11c40, - 0x11c72, 0x11c8f, - 0x12000, 0x12399, - 0x12480, 0x12543, - 0x13000, 0x1342e, - 0x14400, 0x14646, - 0x16800, 0x16a38, - 0x16a40, 0x16a5e, - 0x16ad0, 0x16aed, - 0x16b00, 0x16b2f, - 0x16b63, 0x16b77, - 0x16b7d, 0x16b8f, - 0x16f00, 0x16f44, - 0x16f50, 0x16f50, - 0x17000, 0x187ec, - 0x18800, 0x18af2, - 0x1b000, 0x1b001, - 0x1bc00, 0x1bc6a, - 0x1bc70, 0x1bc7c, - 0x1bc80, 0x1bc88, - 0x1bc90, 0x1bc99, - 0x1e800, 0x1e8c4, - 0x1ee00, 0x1ee03, - 0x1ee05, 0x1ee1f, - 0x1ee21, 0x1ee22, - 0x1ee24, 0x1ee24, - 0x1ee27, 0x1ee27, - 0x1ee29, 0x1ee32, - 0x1ee34, 0x1ee37, - 0x1ee39, 0x1ee39, - 0x1ee3b, 0x1ee3b, - 0x1ee42, 0x1ee42, - 0x1ee47, 0x1ee47, - 0x1ee49, 0x1ee49, - 0x1ee4b, 0x1ee4b, - 0x1ee4d, 0x1ee4f, - 0x1ee51, 0x1ee52, - 0x1ee54, 0x1ee54, - 0x1ee57, 0x1ee57, - 0x1ee59, 0x1ee59, - 0x1ee5b, 0x1ee5b, - 0x1ee5d, 0x1ee5d, - 0x1ee5f, 0x1ee5f, - 0x1ee61, 0x1ee62, - 0x1ee64, 0x1ee64, - 0x1ee67, 0x1ee6a, - 0x1ee6c, 0x1ee72, - 0x1ee74, 0x1ee77, - 0x1ee79, 0x1ee7c, - 0x1ee7e, 0x1ee7e, - 0x1ee80, 0x1ee89, - 0x1ee8b, 0x1ee9b, - 0x1eea1, 0x1eea3, - 0x1eea5, 0x1eea9, - 0x1eeab, 0x1eebb, - 0x20000, 0x2a6d6, - 0x2a700, 0x2b734, - 0x2b740, 0x2b81d, - 0x2b820, 0x2cea1, - 0x2f800, 0x2fa1d, -}; /* CR_Lo */ - -/* 'Lt': General Category */ -static const OnigCodePoint CR_Lt[] = { - 10, - 0x01c5, 0x01c5, - 0x01c8, 0x01c8, - 0x01cb, 0x01cb, - 0x01f2, 0x01f2, - 0x1f88, 0x1f8f, - 0x1f98, 0x1f9f, - 0x1fa8, 0x1faf, - 0x1fbc, 0x1fbc, - 0x1fcc, 0x1fcc, - 0x1ffc, 0x1ffc, -}; /* CR_Lt */ - -/* 'Lu': General Category */ -static const OnigCodePoint CR_Lu[] = { - 627, - 0x0041, 0x005a, - 0x00c0, 0x00d6, - 0x00d8, 0x00de, - 0x0100, 0x0100, - 0x0102, 0x0102, - 0x0104, 0x0104, - 0x0106, 0x0106, - 0x0108, 0x0108, - 0x010a, 0x010a, - 0x010c, 0x010c, - 0x010e, 0x010e, - 0x0110, 0x0110, - 0x0112, 0x0112, - 0x0114, 0x0114, - 0x0116, 0x0116, - 0x0118, 0x0118, - 0x011a, 0x011a, - 0x011c, 0x011c, - 0x011e, 0x011e, - 0x0120, 0x0120, - 0x0122, 0x0122, - 0x0124, 0x0124, - 0x0126, 0x0126, - 0x0128, 0x0128, - 0x012a, 0x012a, - 0x012c, 0x012c, - 0x012e, 0x012e, - 0x0130, 0x0130, - 0x0132, 0x0132, - 0x0134, 0x0134, - 0x0136, 0x0136, - 0x0139, 0x0139, - 0x013b, 0x013b, - 0x013d, 0x013d, - 0x013f, 0x013f, - 0x0141, 0x0141, - 0x0143, 0x0143, - 0x0145, 0x0145, - 0x0147, 0x0147, - 0x014a, 0x014a, - 0x014c, 0x014c, - 0x014e, 0x014e, - 0x0150, 0x0150, - 0x0152, 0x0152, - 0x0154, 0x0154, - 0x0156, 0x0156, - 0x0158, 0x0158, - 0x015a, 0x015a, - 0x015c, 0x015c, - 0x015e, 0x015e, - 0x0160, 0x0160, - 0x0162, 0x0162, - 0x0164, 0x0164, - 0x0166, 0x0166, - 0x0168, 0x0168, - 0x016a, 0x016a, - 0x016c, 0x016c, - 0x016e, 0x016e, - 0x0170, 0x0170, - 0x0172, 0x0172, - 0x0174, 0x0174, - 0x0176, 0x0176, - 0x0178, 0x0179, - 0x017b, 0x017b, - 0x017d, 0x017d, - 0x0181, 0x0182, - 0x0184, 0x0184, - 0x0186, 0x0187, - 0x0189, 0x018b, - 0x018e, 0x0191, - 0x0193, 0x0194, - 0x0196, 0x0198, - 0x019c, 0x019d, - 0x019f, 0x01a0, - 0x01a2, 0x01a2, - 0x01a4, 0x01a4, - 0x01a6, 0x01a7, - 0x01a9, 0x01a9, - 0x01ac, 0x01ac, - 0x01ae, 0x01af, - 0x01b1, 0x01b3, - 0x01b5, 0x01b5, - 0x01b7, 0x01b8, - 0x01bc, 0x01bc, - 0x01c4, 0x01c4, - 0x01c7, 0x01c7, - 0x01ca, 0x01ca, - 0x01cd, 0x01cd, - 0x01cf, 0x01cf, - 0x01d1, 0x01d1, - 0x01d3, 0x01d3, - 0x01d5, 0x01d5, - 0x01d7, 0x01d7, - 0x01d9, 0x01d9, - 0x01db, 0x01db, - 0x01de, 0x01de, - 0x01e0, 0x01e0, - 0x01e2, 0x01e2, - 0x01e4, 0x01e4, - 0x01e6, 0x01e6, - 0x01e8, 0x01e8, - 0x01ea, 0x01ea, - 0x01ec, 0x01ec, - 0x01ee, 0x01ee, - 0x01f1, 0x01f1, - 0x01f4, 0x01f4, - 0x01f6, 0x01f8, - 0x01fa, 0x01fa, - 0x01fc, 0x01fc, - 0x01fe, 0x01fe, - 0x0200, 0x0200, - 0x0202, 0x0202, - 0x0204, 0x0204, - 0x0206, 0x0206, - 0x0208, 0x0208, - 0x020a, 0x020a, - 0x020c, 0x020c, - 0x020e, 0x020e, - 0x0210, 0x0210, - 0x0212, 0x0212, - 0x0214, 0x0214, - 0x0216, 0x0216, - 0x0218, 0x0218, - 0x021a, 0x021a, - 0x021c, 0x021c, - 0x021e, 0x021e, - 0x0220, 0x0220, - 0x0222, 0x0222, - 0x0224, 0x0224, - 0x0226, 0x0226, - 0x0228, 0x0228, - 0x022a, 0x022a, - 0x022c, 0x022c, - 0x022e, 0x022e, - 0x0230, 0x0230, - 0x0232, 0x0232, - 0x023a, 0x023b, - 0x023d, 0x023e, - 0x0241, 0x0241, - 0x0243, 0x0246, - 0x0248, 0x0248, - 0x024a, 0x024a, - 0x024c, 0x024c, - 0x024e, 0x024e, - 0x0370, 0x0370, - 0x0372, 0x0372, - 0x0376, 0x0376, - 0x037f, 0x037f, - 0x0386, 0x0386, - 0x0388, 0x038a, - 0x038c, 0x038c, - 0x038e, 0x038f, - 0x0391, 0x03a1, - 0x03a3, 0x03ab, - 0x03cf, 0x03cf, - 0x03d2, 0x03d4, - 0x03d8, 0x03d8, - 0x03da, 0x03da, - 0x03dc, 0x03dc, - 0x03de, 0x03de, - 0x03e0, 0x03e0, - 0x03e2, 0x03e2, - 0x03e4, 0x03e4, - 0x03e6, 0x03e6, - 0x03e8, 0x03e8, - 0x03ea, 0x03ea, - 0x03ec, 0x03ec, - 0x03ee, 0x03ee, - 0x03f4, 0x03f4, - 0x03f7, 0x03f7, - 0x03f9, 0x03fa, - 0x03fd, 0x042f, - 0x0460, 0x0460, - 0x0462, 0x0462, - 0x0464, 0x0464, - 0x0466, 0x0466, - 0x0468, 0x0468, - 0x046a, 0x046a, - 0x046c, 0x046c, - 0x046e, 0x046e, - 0x0470, 0x0470, - 0x0472, 0x0472, - 0x0474, 0x0474, - 0x0476, 0x0476, - 0x0478, 0x0478, - 0x047a, 0x047a, - 0x047c, 0x047c, - 0x047e, 0x047e, - 0x0480, 0x0480, - 0x048a, 0x048a, - 0x048c, 0x048c, - 0x048e, 0x048e, - 0x0490, 0x0490, - 0x0492, 0x0492, - 0x0494, 0x0494, - 0x0496, 0x0496, - 0x0498, 0x0498, - 0x049a, 0x049a, - 0x049c, 0x049c, - 0x049e, 0x049e, - 0x04a0, 0x04a0, - 0x04a2, 0x04a2, - 0x04a4, 0x04a4, - 0x04a6, 0x04a6, - 0x04a8, 0x04a8, - 0x04aa, 0x04aa, - 0x04ac, 0x04ac, - 0x04ae, 0x04ae, - 0x04b0, 0x04b0, - 0x04b2, 0x04b2, - 0x04b4, 0x04b4, - 0x04b6, 0x04b6, - 0x04b8, 0x04b8, - 0x04ba, 0x04ba, - 0x04bc, 0x04bc, - 0x04be, 0x04be, - 0x04c0, 0x04c1, - 0x04c3, 0x04c3, - 0x04c5, 0x04c5, - 0x04c7, 0x04c7, - 0x04c9, 0x04c9, - 0x04cb, 0x04cb, - 0x04cd, 0x04cd, - 0x04d0, 0x04d0, - 0x04d2, 0x04d2, - 0x04d4, 0x04d4, - 0x04d6, 0x04d6, - 0x04d8, 0x04d8, - 0x04da, 0x04da, - 0x04dc, 0x04dc, - 0x04de, 0x04de, - 0x04e0, 0x04e0, - 0x04e2, 0x04e2, - 0x04e4, 0x04e4, - 0x04e6, 0x04e6, - 0x04e8, 0x04e8, - 0x04ea, 0x04ea, - 0x04ec, 0x04ec, - 0x04ee, 0x04ee, - 0x04f0, 0x04f0, - 0x04f2, 0x04f2, - 0x04f4, 0x04f4, - 0x04f6, 0x04f6, - 0x04f8, 0x04f8, - 0x04fa, 0x04fa, - 0x04fc, 0x04fc, - 0x04fe, 0x04fe, - 0x0500, 0x0500, - 0x0502, 0x0502, - 0x0504, 0x0504, - 0x0506, 0x0506, - 0x0508, 0x0508, - 0x050a, 0x050a, - 0x050c, 0x050c, - 0x050e, 0x050e, - 0x0510, 0x0510, - 0x0512, 0x0512, - 0x0514, 0x0514, - 0x0516, 0x0516, - 0x0518, 0x0518, - 0x051a, 0x051a, - 0x051c, 0x051c, - 0x051e, 0x051e, - 0x0520, 0x0520, - 0x0522, 0x0522, - 0x0524, 0x0524, - 0x0526, 0x0526, - 0x0528, 0x0528, - 0x052a, 0x052a, - 0x052c, 0x052c, - 0x052e, 0x052e, - 0x0531, 0x0556, - 0x10a0, 0x10c5, - 0x10c7, 0x10c7, - 0x10cd, 0x10cd, - 0x13a0, 0x13f5, - 0x1e00, 0x1e00, - 0x1e02, 0x1e02, - 0x1e04, 0x1e04, - 0x1e06, 0x1e06, - 0x1e08, 0x1e08, - 0x1e0a, 0x1e0a, - 0x1e0c, 0x1e0c, - 0x1e0e, 0x1e0e, - 0x1e10, 0x1e10, - 0x1e12, 0x1e12, - 0x1e14, 0x1e14, - 0x1e16, 0x1e16, - 0x1e18, 0x1e18, - 0x1e1a, 0x1e1a, - 0x1e1c, 0x1e1c, - 0x1e1e, 0x1e1e, - 0x1e20, 0x1e20, - 0x1e22, 0x1e22, - 0x1e24, 0x1e24, - 0x1e26, 0x1e26, - 0x1e28, 0x1e28, - 0x1e2a, 0x1e2a, - 0x1e2c, 0x1e2c, - 0x1e2e, 0x1e2e, - 0x1e30, 0x1e30, - 0x1e32, 0x1e32, - 0x1e34, 0x1e34, - 0x1e36, 0x1e36, - 0x1e38, 0x1e38, - 0x1e3a, 0x1e3a, - 0x1e3c, 0x1e3c, - 0x1e3e, 0x1e3e, - 0x1e40, 0x1e40, - 0x1e42, 0x1e42, - 0x1e44, 0x1e44, - 0x1e46, 0x1e46, - 0x1e48, 0x1e48, - 0x1e4a, 0x1e4a, - 0x1e4c, 0x1e4c, - 0x1e4e, 0x1e4e, - 0x1e50, 0x1e50, - 0x1e52, 0x1e52, - 0x1e54, 0x1e54, - 0x1e56, 0x1e56, - 0x1e58, 0x1e58, - 0x1e5a, 0x1e5a, - 0x1e5c, 0x1e5c, - 0x1e5e, 0x1e5e, - 0x1e60, 0x1e60, - 0x1e62, 0x1e62, - 0x1e64, 0x1e64, - 0x1e66, 0x1e66, - 0x1e68, 0x1e68, - 0x1e6a, 0x1e6a, - 0x1e6c, 0x1e6c, - 0x1e6e, 0x1e6e, - 0x1e70, 0x1e70, - 0x1e72, 0x1e72, - 0x1e74, 0x1e74, - 0x1e76, 0x1e76, - 0x1e78, 0x1e78, - 0x1e7a, 0x1e7a, - 0x1e7c, 0x1e7c, - 0x1e7e, 0x1e7e, - 0x1e80, 0x1e80, - 0x1e82, 0x1e82, - 0x1e84, 0x1e84, - 0x1e86, 0x1e86, - 0x1e88, 0x1e88, - 0x1e8a, 0x1e8a, - 0x1e8c, 0x1e8c, - 0x1e8e, 0x1e8e, - 0x1e90, 0x1e90, - 0x1e92, 0x1e92, - 0x1e94, 0x1e94, - 0x1e9e, 0x1e9e, - 0x1ea0, 0x1ea0, - 0x1ea2, 0x1ea2, - 0x1ea4, 0x1ea4, - 0x1ea6, 0x1ea6, - 0x1ea8, 0x1ea8, - 0x1eaa, 0x1eaa, - 0x1eac, 0x1eac, - 0x1eae, 0x1eae, - 0x1eb0, 0x1eb0, - 0x1eb2, 0x1eb2, - 0x1eb4, 0x1eb4, - 0x1eb6, 0x1eb6, - 0x1eb8, 0x1eb8, - 0x1eba, 0x1eba, - 0x1ebc, 0x1ebc, - 0x1ebe, 0x1ebe, - 0x1ec0, 0x1ec0, - 0x1ec2, 0x1ec2, - 0x1ec4, 0x1ec4, - 0x1ec6, 0x1ec6, - 0x1ec8, 0x1ec8, - 0x1eca, 0x1eca, - 0x1ecc, 0x1ecc, - 0x1ece, 0x1ece, - 0x1ed0, 0x1ed0, - 0x1ed2, 0x1ed2, - 0x1ed4, 0x1ed4, - 0x1ed6, 0x1ed6, - 0x1ed8, 0x1ed8, - 0x1eda, 0x1eda, - 0x1edc, 0x1edc, - 0x1ede, 0x1ede, - 0x1ee0, 0x1ee0, - 0x1ee2, 0x1ee2, - 0x1ee4, 0x1ee4, - 0x1ee6, 0x1ee6, - 0x1ee8, 0x1ee8, - 0x1eea, 0x1eea, - 0x1eec, 0x1eec, - 0x1eee, 0x1eee, - 0x1ef0, 0x1ef0, - 0x1ef2, 0x1ef2, - 0x1ef4, 0x1ef4, - 0x1ef6, 0x1ef6, - 0x1ef8, 0x1ef8, - 0x1efa, 0x1efa, - 0x1efc, 0x1efc, - 0x1efe, 0x1efe, - 0x1f08, 0x1f0f, - 0x1f18, 0x1f1d, - 0x1f28, 0x1f2f, - 0x1f38, 0x1f3f, - 0x1f48, 0x1f4d, - 0x1f59, 0x1f59, - 0x1f5b, 0x1f5b, - 0x1f5d, 0x1f5d, - 0x1f5f, 0x1f5f, - 0x1f68, 0x1f6f, - 0x1fb8, 0x1fbb, - 0x1fc8, 0x1fcb, - 0x1fd8, 0x1fdb, - 0x1fe8, 0x1fec, - 0x1ff8, 0x1ffb, - 0x2102, 0x2102, - 0x2107, 0x2107, - 0x210b, 0x210d, - 0x2110, 0x2112, - 0x2115, 0x2115, - 0x2119, 0x211d, - 0x2124, 0x2124, - 0x2126, 0x2126, - 0x2128, 0x2128, - 0x212a, 0x212d, - 0x2130, 0x2133, - 0x213e, 0x213f, - 0x2145, 0x2145, - 0x2183, 0x2183, - 0x2c00, 0x2c2e, - 0x2c60, 0x2c60, - 0x2c62, 0x2c64, - 0x2c67, 0x2c67, - 0x2c69, 0x2c69, - 0x2c6b, 0x2c6b, - 0x2c6d, 0x2c70, - 0x2c72, 0x2c72, - 0x2c75, 0x2c75, - 0x2c7e, 0x2c80, - 0x2c82, 0x2c82, - 0x2c84, 0x2c84, - 0x2c86, 0x2c86, - 0x2c88, 0x2c88, - 0x2c8a, 0x2c8a, - 0x2c8c, 0x2c8c, - 0x2c8e, 0x2c8e, - 0x2c90, 0x2c90, - 0x2c92, 0x2c92, - 0x2c94, 0x2c94, - 0x2c96, 0x2c96, - 0x2c98, 0x2c98, - 0x2c9a, 0x2c9a, - 0x2c9c, 0x2c9c, - 0x2c9e, 0x2c9e, - 0x2ca0, 0x2ca0, - 0x2ca2, 0x2ca2, - 0x2ca4, 0x2ca4, - 0x2ca6, 0x2ca6, - 0x2ca8, 0x2ca8, - 0x2caa, 0x2caa, - 0x2cac, 0x2cac, - 0x2cae, 0x2cae, - 0x2cb0, 0x2cb0, - 0x2cb2, 0x2cb2, - 0x2cb4, 0x2cb4, - 0x2cb6, 0x2cb6, - 0x2cb8, 0x2cb8, - 0x2cba, 0x2cba, - 0x2cbc, 0x2cbc, - 0x2cbe, 0x2cbe, - 0x2cc0, 0x2cc0, - 0x2cc2, 0x2cc2, - 0x2cc4, 0x2cc4, - 0x2cc6, 0x2cc6, - 0x2cc8, 0x2cc8, - 0x2cca, 0x2cca, - 0x2ccc, 0x2ccc, - 0x2cce, 0x2cce, - 0x2cd0, 0x2cd0, - 0x2cd2, 0x2cd2, - 0x2cd4, 0x2cd4, - 0x2cd6, 0x2cd6, - 0x2cd8, 0x2cd8, - 0x2cda, 0x2cda, - 0x2cdc, 0x2cdc, - 0x2cde, 0x2cde, - 0x2ce0, 0x2ce0, - 0x2ce2, 0x2ce2, - 0x2ceb, 0x2ceb, - 0x2ced, 0x2ced, - 0x2cf2, 0x2cf2, - 0xa640, 0xa640, - 0xa642, 0xa642, - 0xa644, 0xa644, - 0xa646, 0xa646, - 0xa648, 0xa648, - 0xa64a, 0xa64a, - 0xa64c, 0xa64c, - 0xa64e, 0xa64e, - 0xa650, 0xa650, - 0xa652, 0xa652, - 0xa654, 0xa654, - 0xa656, 0xa656, - 0xa658, 0xa658, - 0xa65a, 0xa65a, - 0xa65c, 0xa65c, - 0xa65e, 0xa65e, - 0xa660, 0xa660, - 0xa662, 0xa662, - 0xa664, 0xa664, - 0xa666, 0xa666, - 0xa668, 0xa668, - 0xa66a, 0xa66a, - 0xa66c, 0xa66c, - 0xa680, 0xa680, - 0xa682, 0xa682, - 0xa684, 0xa684, - 0xa686, 0xa686, - 0xa688, 0xa688, - 0xa68a, 0xa68a, - 0xa68c, 0xa68c, - 0xa68e, 0xa68e, - 0xa690, 0xa690, - 0xa692, 0xa692, - 0xa694, 0xa694, - 0xa696, 0xa696, - 0xa698, 0xa698, - 0xa69a, 0xa69a, - 0xa722, 0xa722, - 0xa724, 0xa724, - 0xa726, 0xa726, - 0xa728, 0xa728, - 0xa72a, 0xa72a, - 0xa72c, 0xa72c, - 0xa72e, 0xa72e, - 0xa732, 0xa732, - 0xa734, 0xa734, - 0xa736, 0xa736, - 0xa738, 0xa738, - 0xa73a, 0xa73a, - 0xa73c, 0xa73c, - 0xa73e, 0xa73e, - 0xa740, 0xa740, - 0xa742, 0xa742, - 0xa744, 0xa744, - 0xa746, 0xa746, - 0xa748, 0xa748, - 0xa74a, 0xa74a, - 0xa74c, 0xa74c, - 0xa74e, 0xa74e, - 0xa750, 0xa750, - 0xa752, 0xa752, - 0xa754, 0xa754, - 0xa756, 0xa756, - 0xa758, 0xa758, - 0xa75a, 0xa75a, - 0xa75c, 0xa75c, - 0xa75e, 0xa75e, - 0xa760, 0xa760, - 0xa762, 0xa762, - 0xa764, 0xa764, - 0xa766, 0xa766, - 0xa768, 0xa768, - 0xa76a, 0xa76a, - 0xa76c, 0xa76c, - 0xa76e, 0xa76e, - 0xa779, 0xa779, - 0xa77b, 0xa77b, - 0xa77d, 0xa77e, - 0xa780, 0xa780, - 0xa782, 0xa782, - 0xa784, 0xa784, - 0xa786, 0xa786, - 0xa78b, 0xa78b, - 0xa78d, 0xa78d, - 0xa790, 0xa790, - 0xa792, 0xa792, - 0xa796, 0xa796, - 0xa798, 0xa798, - 0xa79a, 0xa79a, - 0xa79c, 0xa79c, - 0xa79e, 0xa79e, - 0xa7a0, 0xa7a0, - 0xa7a2, 0xa7a2, - 0xa7a4, 0xa7a4, - 0xa7a6, 0xa7a6, - 0xa7a8, 0xa7a8, - 0xa7aa, 0xa7ae, - 0xa7b0, 0xa7b4, - 0xa7b6, 0xa7b6, - 0xff21, 0xff3a, - 0x10400, 0x10427, - 0x104b0, 0x104d3, - 0x10c80, 0x10cb2, - 0x118a0, 0x118bf, - 0x1d400, 0x1d419, - 0x1d434, 0x1d44d, - 0x1d468, 0x1d481, - 0x1d49c, 0x1d49c, - 0x1d49e, 0x1d49f, - 0x1d4a2, 0x1d4a2, - 0x1d4a5, 0x1d4a6, - 0x1d4a9, 0x1d4ac, - 0x1d4ae, 0x1d4b5, - 0x1d4d0, 0x1d4e9, - 0x1d504, 0x1d505, - 0x1d507, 0x1d50a, - 0x1d50d, 0x1d514, - 0x1d516, 0x1d51c, - 0x1d538, 0x1d539, - 0x1d53b, 0x1d53e, - 0x1d540, 0x1d544, - 0x1d546, 0x1d546, - 0x1d54a, 0x1d550, - 0x1d56c, 0x1d585, - 0x1d5a0, 0x1d5b9, - 0x1d5d4, 0x1d5ed, - 0x1d608, 0x1d621, - 0x1d63c, 0x1d655, - 0x1d670, 0x1d689, - 0x1d6a8, 0x1d6c0, - 0x1d6e2, 0x1d6fa, - 0x1d71c, 0x1d734, - 0x1d756, 0x1d76e, - 0x1d790, 0x1d7a8, - 0x1d7ca, 0x1d7ca, - 0x1e900, 0x1e921, -}; /* CR_Lu */ - -/* 'M': Major Category */ -static const OnigCodePoint CR_M[] = { - 250, - 0x0300, 0x036f, - 0x0483, 0x0489, - 0x0591, 0x05bd, - 0x05bf, 0x05bf, - 0x05c1, 0x05c2, - 0x05c4, 0x05c5, - 0x05c7, 0x05c7, - 0x0610, 0x061a, - 0x064b, 0x065f, - 0x0670, 0x0670, - 0x06d6, 0x06dc, - 0x06df, 0x06e4, - 0x06e7, 0x06e8, - 0x06ea, 0x06ed, - 0x0711, 0x0711, - 0x0730, 0x074a, - 0x07a6, 0x07b0, - 0x07eb, 0x07f3, - 0x0816, 0x0819, - 0x081b, 0x0823, - 0x0825, 0x0827, - 0x0829, 0x082d, - 0x0859, 0x085b, - 0x08d4, 0x08e1, - 0x08e3, 0x0903, - 0x093a, 0x093c, - 0x093e, 0x094f, - 0x0951, 0x0957, - 0x0962, 0x0963, - 0x0981, 0x0983, - 0x09bc, 0x09bc, - 0x09be, 0x09c4, - 0x09c7, 0x09c8, - 0x09cb, 0x09cd, - 0x09d7, 0x09d7, - 0x09e2, 0x09e3, - 0x0a01, 0x0a03, - 0x0a3c, 0x0a3c, - 0x0a3e, 0x0a42, - 0x0a47, 0x0a48, - 0x0a4b, 0x0a4d, - 0x0a51, 0x0a51, - 0x0a70, 0x0a71, - 0x0a75, 0x0a75, - 0x0a81, 0x0a83, - 0x0abc, 0x0abc, - 0x0abe, 0x0ac5, - 0x0ac7, 0x0ac9, - 0x0acb, 0x0acd, - 0x0ae2, 0x0ae3, - 0x0b01, 0x0b03, - 0x0b3c, 0x0b3c, - 0x0b3e, 0x0b44, - 0x0b47, 0x0b48, - 0x0b4b, 0x0b4d, - 0x0b56, 0x0b57, - 0x0b62, 0x0b63, - 0x0b82, 0x0b82, - 0x0bbe, 0x0bc2, - 0x0bc6, 0x0bc8, - 0x0bca, 0x0bcd, - 0x0bd7, 0x0bd7, - 0x0c00, 0x0c03, - 0x0c3e, 0x0c44, - 0x0c46, 0x0c48, - 0x0c4a, 0x0c4d, - 0x0c55, 0x0c56, - 0x0c62, 0x0c63, - 0x0c81, 0x0c83, - 0x0cbc, 0x0cbc, - 0x0cbe, 0x0cc4, - 0x0cc6, 0x0cc8, - 0x0cca, 0x0ccd, - 0x0cd5, 0x0cd6, - 0x0ce2, 0x0ce3, - 0x0d01, 0x0d03, - 0x0d3e, 0x0d44, - 0x0d46, 0x0d48, - 0x0d4a, 0x0d4d, - 0x0d57, 0x0d57, - 0x0d62, 0x0d63, - 0x0d82, 0x0d83, - 0x0dca, 0x0dca, - 0x0dcf, 0x0dd4, - 0x0dd6, 0x0dd6, - 0x0dd8, 0x0ddf, - 0x0df2, 0x0df3, - 0x0e31, 0x0e31, - 0x0e34, 0x0e3a, - 0x0e47, 0x0e4e, - 0x0eb1, 0x0eb1, - 0x0eb4, 0x0eb9, - 0x0ebb, 0x0ebc, - 0x0ec8, 0x0ecd, - 0x0f18, 0x0f19, - 0x0f35, 0x0f35, - 0x0f37, 0x0f37, - 0x0f39, 0x0f39, - 0x0f3e, 0x0f3f, - 0x0f71, 0x0f84, - 0x0f86, 0x0f87, - 0x0f8d, 0x0f97, - 0x0f99, 0x0fbc, - 0x0fc6, 0x0fc6, - 0x102b, 0x103e, - 0x1056, 0x1059, - 0x105e, 0x1060, - 0x1062, 0x1064, - 0x1067, 0x106d, - 0x1071, 0x1074, - 0x1082, 0x108d, - 0x108f, 0x108f, - 0x109a, 0x109d, - 0x135d, 0x135f, - 0x1712, 0x1714, - 0x1732, 0x1734, - 0x1752, 0x1753, - 0x1772, 0x1773, - 0x17b4, 0x17d3, - 0x17dd, 0x17dd, - 0x180b, 0x180d, - 0x1885, 0x1886, - 0x18a9, 0x18a9, - 0x1920, 0x192b, - 0x1930, 0x193b, - 0x1a17, 0x1a1b, - 0x1a55, 0x1a5e, - 0x1a60, 0x1a7c, - 0x1a7f, 0x1a7f, - 0x1ab0, 0x1abe, - 0x1b00, 0x1b04, - 0x1b34, 0x1b44, - 0x1b6b, 0x1b73, - 0x1b80, 0x1b82, - 0x1ba1, 0x1bad, - 0x1be6, 0x1bf3, - 0x1c24, 0x1c37, - 0x1cd0, 0x1cd2, - 0x1cd4, 0x1ce8, - 0x1ced, 0x1ced, - 0x1cf2, 0x1cf4, - 0x1cf8, 0x1cf9, - 0x1dc0, 0x1df5, - 0x1dfb, 0x1dff, - 0x20d0, 0x20f0, - 0x2cef, 0x2cf1, - 0x2d7f, 0x2d7f, - 0x2de0, 0x2dff, - 0x302a, 0x302f, - 0x3099, 0x309a, - 0xa66f, 0xa672, - 0xa674, 0xa67d, - 0xa69e, 0xa69f, - 0xa6f0, 0xa6f1, - 0xa802, 0xa802, - 0xa806, 0xa806, - 0xa80b, 0xa80b, - 0xa823, 0xa827, - 0xa880, 0xa881, - 0xa8b4, 0xa8c5, - 0xa8e0, 0xa8f1, - 0xa926, 0xa92d, - 0xa947, 0xa953, - 0xa980, 0xa983, - 0xa9b3, 0xa9c0, - 0xa9e5, 0xa9e5, - 0xaa29, 0xaa36, - 0xaa43, 0xaa43, - 0xaa4c, 0xaa4d, - 0xaa7b, 0xaa7d, - 0xaab0, 0xaab0, - 0xaab2, 0xaab4, - 0xaab7, 0xaab8, - 0xaabe, 0xaabf, - 0xaac1, 0xaac1, - 0xaaeb, 0xaaef, - 0xaaf5, 0xaaf6, - 0xabe3, 0xabea, - 0xabec, 0xabed, - 0xfb1e, 0xfb1e, - 0xfe00, 0xfe0f, - 0xfe20, 0xfe2f, - 0x101fd, 0x101fd, - 0x102e0, 0x102e0, - 0x10376, 0x1037a, - 0x10a01, 0x10a03, - 0x10a05, 0x10a06, - 0x10a0c, 0x10a0f, - 0x10a38, 0x10a3a, - 0x10a3f, 0x10a3f, - 0x10ae5, 0x10ae6, - 0x11000, 0x11002, - 0x11038, 0x11046, - 0x1107f, 0x11082, - 0x110b0, 0x110ba, - 0x11100, 0x11102, - 0x11127, 0x11134, - 0x11173, 0x11173, - 0x11180, 0x11182, - 0x111b3, 0x111c0, - 0x111ca, 0x111cc, - 0x1122c, 0x11237, - 0x1123e, 0x1123e, - 0x112df, 0x112ea, - 0x11300, 0x11303, - 0x1133c, 0x1133c, - 0x1133e, 0x11344, - 0x11347, 0x11348, - 0x1134b, 0x1134d, - 0x11357, 0x11357, - 0x11362, 0x11363, - 0x11366, 0x1136c, - 0x11370, 0x11374, - 0x11435, 0x11446, - 0x114b0, 0x114c3, - 0x115af, 0x115b5, - 0x115b8, 0x115c0, - 0x115dc, 0x115dd, - 0x11630, 0x11640, - 0x116ab, 0x116b7, - 0x1171d, 0x1172b, - 0x11c2f, 0x11c36, - 0x11c38, 0x11c3f, - 0x11c92, 0x11ca7, - 0x11ca9, 0x11cb6, - 0x16af0, 0x16af4, - 0x16b30, 0x16b36, - 0x16f51, 0x16f7e, - 0x16f8f, 0x16f92, - 0x1bc9d, 0x1bc9e, - 0x1d165, 0x1d169, - 0x1d16d, 0x1d172, - 0x1d17b, 0x1d182, - 0x1d185, 0x1d18b, - 0x1d1aa, 0x1d1ad, - 0x1d242, 0x1d244, - 0x1da00, 0x1da36, - 0x1da3b, 0x1da6c, - 0x1da75, 0x1da75, - 0x1da84, 0x1da84, - 0x1da9b, 0x1da9f, - 0x1daa1, 0x1daaf, - 0x1e000, 0x1e006, - 0x1e008, 0x1e018, - 0x1e01b, 0x1e021, - 0x1e023, 0x1e024, - 0x1e026, 0x1e02a, - 0x1e8d0, 0x1e8d6, - 0x1e944, 0x1e94a, - 0xe0100, 0xe01ef, -}; /* CR_M */ - -/* 'Mc': General Category */ -static const OnigCodePoint CR_Mc[] = { - 155, - 0x0903, 0x0903, - 0x093b, 0x093b, - 0x093e, 0x0940, - 0x0949, 0x094c, - 0x094e, 0x094f, - 0x0982, 0x0983, - 0x09be, 0x09c0, - 0x09c7, 0x09c8, - 0x09cb, 0x09cc, - 0x09d7, 0x09d7, - 0x0a03, 0x0a03, - 0x0a3e, 0x0a40, - 0x0a83, 0x0a83, - 0x0abe, 0x0ac0, - 0x0ac9, 0x0ac9, - 0x0acb, 0x0acc, - 0x0b02, 0x0b03, - 0x0b3e, 0x0b3e, - 0x0b40, 0x0b40, - 0x0b47, 0x0b48, - 0x0b4b, 0x0b4c, - 0x0b57, 0x0b57, - 0x0bbe, 0x0bbf, - 0x0bc1, 0x0bc2, - 0x0bc6, 0x0bc8, - 0x0bca, 0x0bcc, - 0x0bd7, 0x0bd7, - 0x0c01, 0x0c03, - 0x0c41, 0x0c44, - 0x0c82, 0x0c83, - 0x0cbe, 0x0cbe, - 0x0cc0, 0x0cc4, - 0x0cc7, 0x0cc8, - 0x0cca, 0x0ccb, - 0x0cd5, 0x0cd6, - 0x0d02, 0x0d03, - 0x0d3e, 0x0d40, - 0x0d46, 0x0d48, - 0x0d4a, 0x0d4c, - 0x0d57, 0x0d57, - 0x0d82, 0x0d83, - 0x0dcf, 0x0dd1, - 0x0dd8, 0x0ddf, - 0x0df2, 0x0df3, - 0x0f3e, 0x0f3f, - 0x0f7f, 0x0f7f, - 0x102b, 0x102c, - 0x1031, 0x1031, - 0x1038, 0x1038, - 0x103b, 0x103c, - 0x1056, 0x1057, - 0x1062, 0x1064, - 0x1067, 0x106d, - 0x1083, 0x1084, - 0x1087, 0x108c, - 0x108f, 0x108f, - 0x109a, 0x109c, - 0x17b6, 0x17b6, - 0x17be, 0x17c5, - 0x17c7, 0x17c8, - 0x1923, 0x1926, - 0x1929, 0x192b, - 0x1930, 0x1931, - 0x1933, 0x1938, - 0x1a19, 0x1a1a, - 0x1a55, 0x1a55, - 0x1a57, 0x1a57, - 0x1a61, 0x1a61, - 0x1a63, 0x1a64, - 0x1a6d, 0x1a72, - 0x1b04, 0x1b04, - 0x1b35, 0x1b35, - 0x1b3b, 0x1b3b, - 0x1b3d, 0x1b41, - 0x1b43, 0x1b44, - 0x1b82, 0x1b82, - 0x1ba1, 0x1ba1, - 0x1ba6, 0x1ba7, - 0x1baa, 0x1baa, - 0x1be7, 0x1be7, - 0x1bea, 0x1bec, - 0x1bee, 0x1bee, - 0x1bf2, 0x1bf3, - 0x1c24, 0x1c2b, - 0x1c34, 0x1c35, - 0x1ce1, 0x1ce1, - 0x1cf2, 0x1cf3, - 0x302e, 0x302f, - 0xa823, 0xa824, - 0xa827, 0xa827, - 0xa880, 0xa881, - 0xa8b4, 0xa8c3, - 0xa952, 0xa953, - 0xa983, 0xa983, - 0xa9b4, 0xa9b5, - 0xa9ba, 0xa9bb, - 0xa9bd, 0xa9c0, - 0xaa2f, 0xaa30, - 0xaa33, 0xaa34, - 0xaa4d, 0xaa4d, - 0xaa7b, 0xaa7b, - 0xaa7d, 0xaa7d, - 0xaaeb, 0xaaeb, - 0xaaee, 0xaaef, - 0xaaf5, 0xaaf5, - 0xabe3, 0xabe4, - 0xabe6, 0xabe7, - 0xabe9, 0xabea, - 0xabec, 0xabec, - 0x11000, 0x11000, - 0x11002, 0x11002, - 0x11082, 0x11082, - 0x110b0, 0x110b2, - 0x110b7, 0x110b8, - 0x1112c, 0x1112c, - 0x11182, 0x11182, - 0x111b3, 0x111b5, - 0x111bf, 0x111c0, - 0x1122c, 0x1122e, - 0x11232, 0x11233, - 0x11235, 0x11235, - 0x112e0, 0x112e2, - 0x11302, 0x11303, - 0x1133e, 0x1133f, - 0x11341, 0x11344, - 0x11347, 0x11348, - 0x1134b, 0x1134d, - 0x11357, 0x11357, - 0x11362, 0x11363, - 0x11435, 0x11437, - 0x11440, 0x11441, - 0x11445, 0x11445, - 0x114b0, 0x114b2, - 0x114b9, 0x114b9, - 0x114bb, 0x114be, - 0x114c1, 0x114c1, - 0x115af, 0x115b1, - 0x115b8, 0x115bb, - 0x115be, 0x115be, - 0x11630, 0x11632, - 0x1163b, 0x1163c, - 0x1163e, 0x1163e, - 0x116ac, 0x116ac, - 0x116ae, 0x116af, - 0x116b6, 0x116b6, - 0x11720, 0x11721, - 0x11726, 0x11726, - 0x11c2f, 0x11c2f, - 0x11c3e, 0x11c3e, - 0x11ca9, 0x11ca9, - 0x11cb1, 0x11cb1, - 0x11cb4, 0x11cb4, - 0x16f51, 0x16f7e, - 0x1d165, 0x1d166, - 0x1d16d, 0x1d172, -}; /* CR_Mc */ - -/* 'Me': General Category */ -static const OnigCodePoint CR_Me[] = { - 5, - 0x0488, 0x0489, - 0x1abe, 0x1abe, - 0x20dd, 0x20e0, - 0x20e2, 0x20e4, - 0xa670, 0xa672, -}; /* CR_Me */ - -/* 'Mn': General Category */ -static const OnigCodePoint CR_Mn[] = { - 285, - 0x0300, 0x036f, - 0x0483, 0x0487, - 0x0591, 0x05bd, - 0x05bf, 0x05bf, - 0x05c1, 0x05c2, - 0x05c4, 0x05c5, - 0x05c7, 0x05c7, - 0x0610, 0x061a, - 0x064b, 0x065f, - 0x0670, 0x0670, - 0x06d6, 0x06dc, - 0x06df, 0x06e4, - 0x06e7, 0x06e8, - 0x06ea, 0x06ed, - 0x0711, 0x0711, - 0x0730, 0x074a, - 0x07a6, 0x07b0, - 0x07eb, 0x07f3, - 0x0816, 0x0819, - 0x081b, 0x0823, - 0x0825, 0x0827, - 0x0829, 0x082d, - 0x0859, 0x085b, - 0x08d4, 0x08e1, - 0x08e3, 0x0902, - 0x093a, 0x093a, - 0x093c, 0x093c, - 0x0941, 0x0948, - 0x094d, 0x094d, - 0x0951, 0x0957, - 0x0962, 0x0963, - 0x0981, 0x0981, - 0x09bc, 0x09bc, - 0x09c1, 0x09c4, - 0x09cd, 0x09cd, - 0x09e2, 0x09e3, - 0x0a01, 0x0a02, - 0x0a3c, 0x0a3c, - 0x0a41, 0x0a42, - 0x0a47, 0x0a48, - 0x0a4b, 0x0a4d, - 0x0a51, 0x0a51, - 0x0a70, 0x0a71, - 0x0a75, 0x0a75, - 0x0a81, 0x0a82, - 0x0abc, 0x0abc, - 0x0ac1, 0x0ac5, - 0x0ac7, 0x0ac8, - 0x0acd, 0x0acd, - 0x0ae2, 0x0ae3, - 0x0b01, 0x0b01, - 0x0b3c, 0x0b3c, - 0x0b3f, 0x0b3f, - 0x0b41, 0x0b44, - 0x0b4d, 0x0b4d, - 0x0b56, 0x0b56, - 0x0b62, 0x0b63, - 0x0b82, 0x0b82, - 0x0bc0, 0x0bc0, - 0x0bcd, 0x0bcd, - 0x0c00, 0x0c00, - 0x0c3e, 0x0c40, - 0x0c46, 0x0c48, - 0x0c4a, 0x0c4d, - 0x0c55, 0x0c56, - 0x0c62, 0x0c63, - 0x0c81, 0x0c81, - 0x0cbc, 0x0cbc, - 0x0cbf, 0x0cbf, - 0x0cc6, 0x0cc6, - 0x0ccc, 0x0ccd, - 0x0ce2, 0x0ce3, - 0x0d01, 0x0d01, - 0x0d41, 0x0d44, - 0x0d4d, 0x0d4d, - 0x0d62, 0x0d63, - 0x0dca, 0x0dca, - 0x0dd2, 0x0dd4, - 0x0dd6, 0x0dd6, - 0x0e31, 0x0e31, - 0x0e34, 0x0e3a, - 0x0e47, 0x0e4e, - 0x0eb1, 0x0eb1, - 0x0eb4, 0x0eb9, - 0x0ebb, 0x0ebc, - 0x0ec8, 0x0ecd, - 0x0f18, 0x0f19, - 0x0f35, 0x0f35, - 0x0f37, 0x0f37, - 0x0f39, 0x0f39, - 0x0f71, 0x0f7e, - 0x0f80, 0x0f84, - 0x0f86, 0x0f87, - 0x0f8d, 0x0f97, - 0x0f99, 0x0fbc, - 0x0fc6, 0x0fc6, - 0x102d, 0x1030, - 0x1032, 0x1037, - 0x1039, 0x103a, - 0x103d, 0x103e, - 0x1058, 0x1059, - 0x105e, 0x1060, - 0x1071, 0x1074, - 0x1082, 0x1082, - 0x1085, 0x1086, - 0x108d, 0x108d, - 0x109d, 0x109d, - 0x135d, 0x135f, - 0x1712, 0x1714, - 0x1732, 0x1734, - 0x1752, 0x1753, - 0x1772, 0x1773, - 0x17b4, 0x17b5, - 0x17b7, 0x17bd, - 0x17c6, 0x17c6, - 0x17c9, 0x17d3, - 0x17dd, 0x17dd, - 0x180b, 0x180d, - 0x1885, 0x1886, - 0x18a9, 0x18a9, - 0x1920, 0x1922, - 0x1927, 0x1928, - 0x1932, 0x1932, - 0x1939, 0x193b, - 0x1a17, 0x1a18, - 0x1a1b, 0x1a1b, - 0x1a56, 0x1a56, - 0x1a58, 0x1a5e, - 0x1a60, 0x1a60, - 0x1a62, 0x1a62, - 0x1a65, 0x1a6c, - 0x1a73, 0x1a7c, - 0x1a7f, 0x1a7f, - 0x1ab0, 0x1abd, - 0x1b00, 0x1b03, - 0x1b34, 0x1b34, - 0x1b36, 0x1b3a, - 0x1b3c, 0x1b3c, - 0x1b42, 0x1b42, - 0x1b6b, 0x1b73, - 0x1b80, 0x1b81, - 0x1ba2, 0x1ba5, - 0x1ba8, 0x1ba9, - 0x1bab, 0x1bad, - 0x1be6, 0x1be6, - 0x1be8, 0x1be9, - 0x1bed, 0x1bed, - 0x1bef, 0x1bf1, - 0x1c2c, 0x1c33, - 0x1c36, 0x1c37, - 0x1cd0, 0x1cd2, - 0x1cd4, 0x1ce0, - 0x1ce2, 0x1ce8, - 0x1ced, 0x1ced, - 0x1cf4, 0x1cf4, - 0x1cf8, 0x1cf9, - 0x1dc0, 0x1df5, - 0x1dfb, 0x1dff, - 0x20d0, 0x20dc, - 0x20e1, 0x20e1, - 0x20e5, 0x20f0, - 0x2cef, 0x2cf1, - 0x2d7f, 0x2d7f, - 0x2de0, 0x2dff, - 0x302a, 0x302d, - 0x3099, 0x309a, - 0xa66f, 0xa66f, - 0xa674, 0xa67d, - 0xa69e, 0xa69f, - 0xa6f0, 0xa6f1, - 0xa802, 0xa802, - 0xa806, 0xa806, - 0xa80b, 0xa80b, - 0xa825, 0xa826, - 0xa8c4, 0xa8c5, - 0xa8e0, 0xa8f1, - 0xa926, 0xa92d, - 0xa947, 0xa951, - 0xa980, 0xa982, - 0xa9b3, 0xa9b3, - 0xa9b6, 0xa9b9, - 0xa9bc, 0xa9bc, - 0xa9e5, 0xa9e5, - 0xaa29, 0xaa2e, - 0xaa31, 0xaa32, - 0xaa35, 0xaa36, - 0xaa43, 0xaa43, - 0xaa4c, 0xaa4c, - 0xaa7c, 0xaa7c, - 0xaab0, 0xaab0, - 0xaab2, 0xaab4, - 0xaab7, 0xaab8, - 0xaabe, 0xaabf, - 0xaac1, 0xaac1, - 0xaaec, 0xaaed, - 0xaaf6, 0xaaf6, - 0xabe5, 0xabe5, - 0xabe8, 0xabe8, - 0xabed, 0xabed, - 0xfb1e, 0xfb1e, - 0xfe00, 0xfe0f, - 0xfe20, 0xfe2f, - 0x101fd, 0x101fd, - 0x102e0, 0x102e0, - 0x10376, 0x1037a, - 0x10a01, 0x10a03, - 0x10a05, 0x10a06, - 0x10a0c, 0x10a0f, - 0x10a38, 0x10a3a, - 0x10a3f, 0x10a3f, - 0x10ae5, 0x10ae6, - 0x11001, 0x11001, - 0x11038, 0x11046, - 0x1107f, 0x11081, - 0x110b3, 0x110b6, - 0x110b9, 0x110ba, - 0x11100, 0x11102, - 0x11127, 0x1112b, - 0x1112d, 0x11134, - 0x11173, 0x11173, - 0x11180, 0x11181, - 0x111b6, 0x111be, - 0x111ca, 0x111cc, - 0x1122f, 0x11231, - 0x11234, 0x11234, - 0x11236, 0x11237, - 0x1123e, 0x1123e, - 0x112df, 0x112df, - 0x112e3, 0x112ea, - 0x11300, 0x11301, - 0x1133c, 0x1133c, - 0x11340, 0x11340, - 0x11366, 0x1136c, - 0x11370, 0x11374, - 0x11438, 0x1143f, - 0x11442, 0x11444, - 0x11446, 0x11446, - 0x114b3, 0x114b8, - 0x114ba, 0x114ba, - 0x114bf, 0x114c0, - 0x114c2, 0x114c3, - 0x115b2, 0x115b5, - 0x115bc, 0x115bd, - 0x115bf, 0x115c0, - 0x115dc, 0x115dd, - 0x11633, 0x1163a, - 0x1163d, 0x1163d, - 0x1163f, 0x11640, - 0x116ab, 0x116ab, - 0x116ad, 0x116ad, - 0x116b0, 0x116b5, - 0x116b7, 0x116b7, - 0x1171d, 0x1171f, - 0x11722, 0x11725, - 0x11727, 0x1172b, - 0x11c30, 0x11c36, - 0x11c38, 0x11c3d, - 0x11c3f, 0x11c3f, - 0x11c92, 0x11ca7, - 0x11caa, 0x11cb0, - 0x11cb2, 0x11cb3, - 0x11cb5, 0x11cb6, - 0x16af0, 0x16af4, - 0x16b30, 0x16b36, - 0x16f8f, 0x16f92, - 0x1bc9d, 0x1bc9e, - 0x1d167, 0x1d169, - 0x1d17b, 0x1d182, - 0x1d185, 0x1d18b, - 0x1d1aa, 0x1d1ad, - 0x1d242, 0x1d244, - 0x1da00, 0x1da36, - 0x1da3b, 0x1da6c, - 0x1da75, 0x1da75, - 0x1da84, 0x1da84, - 0x1da9b, 0x1da9f, - 0x1daa1, 0x1daaf, - 0x1e000, 0x1e006, - 0x1e008, 0x1e018, - 0x1e01b, 0x1e021, - 0x1e023, 0x1e024, - 0x1e026, 0x1e02a, - 0x1e8d0, 0x1e8d6, - 0x1e944, 0x1e94a, - 0xe0100, 0xe01ef, -}; /* CR_Mn */ - -/* 'N': Major Category */ -static const OnigCodePoint CR_N[] = { - 115, - 0x0030, 0x0039, - 0x00b2, 0x00b3, - 0x00b9, 0x00b9, - 0x00bc, 0x00be, - 0x0660, 0x0669, - 0x06f0, 0x06f9, - 0x07c0, 0x07c9, - 0x0966, 0x096f, - 0x09e6, 0x09ef, - 0x09f4, 0x09f9, - 0x0a66, 0x0a6f, - 0x0ae6, 0x0aef, - 0x0b66, 0x0b6f, - 0x0b72, 0x0b77, - 0x0be6, 0x0bf2, - 0x0c66, 0x0c6f, - 0x0c78, 0x0c7e, - 0x0ce6, 0x0cef, - 0x0d58, 0x0d5e, - 0x0d66, 0x0d78, - 0x0de6, 0x0def, - 0x0e50, 0x0e59, - 0x0ed0, 0x0ed9, - 0x0f20, 0x0f33, - 0x1040, 0x1049, - 0x1090, 0x1099, - 0x1369, 0x137c, - 0x16ee, 0x16f0, - 0x17e0, 0x17e9, - 0x17f0, 0x17f9, - 0x1810, 0x1819, - 0x1946, 0x194f, - 0x19d0, 0x19da, - 0x1a80, 0x1a89, - 0x1a90, 0x1a99, - 0x1b50, 0x1b59, - 0x1bb0, 0x1bb9, - 0x1c40, 0x1c49, - 0x1c50, 0x1c59, - 0x2070, 0x2070, - 0x2074, 0x2079, - 0x2080, 0x2089, - 0x2150, 0x2182, - 0x2185, 0x2189, - 0x2460, 0x249b, - 0x24ea, 0x24ff, - 0x2776, 0x2793, - 0x2cfd, 0x2cfd, - 0x3007, 0x3007, - 0x3021, 0x3029, - 0x3038, 0x303a, - 0x3192, 0x3195, - 0x3220, 0x3229, - 0x3248, 0x324f, - 0x3251, 0x325f, - 0x3280, 0x3289, - 0x32b1, 0x32bf, - 0xa620, 0xa629, - 0xa6e6, 0xa6ef, - 0xa830, 0xa835, - 0xa8d0, 0xa8d9, - 0xa900, 0xa909, - 0xa9d0, 0xa9d9, - 0xa9f0, 0xa9f9, - 0xaa50, 0xaa59, - 0xabf0, 0xabf9, - 0xff10, 0xff19, - 0x10107, 0x10133, - 0x10140, 0x10178, - 0x1018a, 0x1018b, - 0x102e1, 0x102fb, - 0x10320, 0x10323, - 0x10341, 0x10341, - 0x1034a, 0x1034a, - 0x103d1, 0x103d5, - 0x104a0, 0x104a9, - 0x10858, 0x1085f, - 0x10879, 0x1087f, - 0x108a7, 0x108af, - 0x108fb, 0x108ff, - 0x10916, 0x1091b, - 0x109bc, 0x109bd, - 0x109c0, 0x109cf, - 0x109d2, 0x109ff, - 0x10a40, 0x10a47, - 0x10a7d, 0x10a7e, - 0x10a9d, 0x10a9f, - 0x10aeb, 0x10aef, - 0x10b58, 0x10b5f, - 0x10b78, 0x10b7f, - 0x10ba9, 0x10baf, - 0x10cfa, 0x10cff, - 0x10e60, 0x10e7e, - 0x11052, 0x1106f, - 0x110f0, 0x110f9, - 0x11136, 0x1113f, - 0x111d0, 0x111d9, - 0x111e1, 0x111f4, - 0x112f0, 0x112f9, - 0x11450, 0x11459, - 0x114d0, 0x114d9, - 0x11650, 0x11659, - 0x116c0, 0x116c9, - 0x11730, 0x1173b, - 0x118e0, 0x118f2, - 0x11c50, 0x11c6c, - 0x12400, 0x1246e, - 0x16a60, 0x16a69, - 0x16b50, 0x16b59, - 0x16b5b, 0x16b61, - 0x1d360, 0x1d371, - 0x1d7ce, 0x1d7ff, - 0x1e8c7, 0x1e8cf, - 0x1e950, 0x1e959, - 0x1f100, 0x1f10c, -}; /* CR_N */ - -/* 'Nd': General Category */ -#define CR_Nd CR_Digit - -/* 'Nl': General Category */ -static const OnigCodePoint CR_Nl[] = { - 12, - 0x16ee, 0x16f0, - 0x2160, 0x2182, - 0x2185, 0x2188, - 0x3007, 0x3007, - 0x3021, 0x3029, - 0x3038, 0x303a, - 0xa6e6, 0xa6ef, - 0x10140, 0x10174, - 0x10341, 0x10341, - 0x1034a, 0x1034a, - 0x103d1, 0x103d5, - 0x12400, 0x1246e, -}; /* CR_Nl */ - -/* 'No': General Category */ -static const OnigCodePoint CR_No[] = { - 60, - 0x00b2, 0x00b3, - 0x00b9, 0x00b9, - 0x00bc, 0x00be, - 0x09f4, 0x09f9, - 0x0b72, 0x0b77, - 0x0bf0, 0x0bf2, - 0x0c78, 0x0c7e, - 0x0d58, 0x0d5e, - 0x0d70, 0x0d78, - 0x0f2a, 0x0f33, - 0x1369, 0x137c, - 0x17f0, 0x17f9, - 0x19da, 0x19da, - 0x2070, 0x2070, - 0x2074, 0x2079, - 0x2080, 0x2089, - 0x2150, 0x215f, - 0x2189, 0x2189, - 0x2460, 0x249b, - 0x24ea, 0x24ff, - 0x2776, 0x2793, - 0x2cfd, 0x2cfd, - 0x3192, 0x3195, - 0x3220, 0x3229, - 0x3248, 0x324f, - 0x3251, 0x325f, - 0x3280, 0x3289, - 0x32b1, 0x32bf, - 0xa830, 0xa835, - 0x10107, 0x10133, - 0x10175, 0x10178, - 0x1018a, 0x1018b, - 0x102e1, 0x102fb, - 0x10320, 0x10323, - 0x10858, 0x1085f, - 0x10879, 0x1087f, - 0x108a7, 0x108af, - 0x108fb, 0x108ff, - 0x10916, 0x1091b, - 0x109bc, 0x109bd, - 0x109c0, 0x109cf, - 0x109d2, 0x109ff, - 0x10a40, 0x10a47, - 0x10a7d, 0x10a7e, - 0x10a9d, 0x10a9f, - 0x10aeb, 0x10aef, - 0x10b58, 0x10b5f, - 0x10b78, 0x10b7f, - 0x10ba9, 0x10baf, - 0x10cfa, 0x10cff, - 0x10e60, 0x10e7e, - 0x11052, 0x11065, - 0x111e1, 0x111f4, - 0x1173a, 0x1173b, - 0x118ea, 0x118f2, - 0x11c5a, 0x11c6c, - 0x16b5b, 0x16b61, - 0x1d360, 0x1d371, - 0x1e8c7, 0x1e8cf, - 0x1f100, 0x1f10c, -}; /* CR_No */ - -/* 'P': Major Category */ -#define CR_P CR_Punct - -/* 'Pc': General Category */ -static const OnigCodePoint CR_Pc[] = { - 6, - 0x005f, 0x005f, - 0x203f, 0x2040, - 0x2054, 0x2054, - 0xfe33, 0xfe34, - 0xfe4d, 0xfe4f, - 0xff3f, 0xff3f, -}; /* CR_Pc */ - -/* 'Pd': General Category */ -static const OnigCodePoint CR_Pd[] = { - 17, - 0x002d, 0x002d, - 0x058a, 0x058a, - 0x05be, 0x05be, - 0x1400, 0x1400, - 0x1806, 0x1806, - 0x2010, 0x2015, - 0x2e17, 0x2e17, - 0x2e1a, 0x2e1a, - 0x2e3a, 0x2e3b, - 0x2e40, 0x2e40, - 0x301c, 0x301c, - 0x3030, 0x3030, - 0x30a0, 0x30a0, - 0xfe31, 0xfe32, - 0xfe58, 0xfe58, - 0xfe63, 0xfe63, - 0xff0d, 0xff0d, -}; /* CR_Pd */ - -/* 'Pe': General Category */ -static const OnigCodePoint CR_Pe[] = { - 72, - 0x0029, 0x0029, - 0x005d, 0x005d, - 0x007d, 0x007d, - 0x0f3b, 0x0f3b, - 0x0f3d, 0x0f3d, - 0x169c, 0x169c, - 0x2046, 0x2046, - 0x207e, 0x207e, - 0x208e, 0x208e, - 0x2309, 0x2309, - 0x230b, 0x230b, - 0x232a, 0x232a, - 0x2769, 0x2769, - 0x276b, 0x276b, - 0x276d, 0x276d, - 0x276f, 0x276f, - 0x2771, 0x2771, - 0x2773, 0x2773, - 0x2775, 0x2775, - 0x27c6, 0x27c6, - 0x27e7, 0x27e7, - 0x27e9, 0x27e9, - 0x27eb, 0x27eb, - 0x27ed, 0x27ed, - 0x27ef, 0x27ef, - 0x2984, 0x2984, - 0x2986, 0x2986, - 0x2988, 0x2988, - 0x298a, 0x298a, - 0x298c, 0x298c, - 0x298e, 0x298e, - 0x2990, 0x2990, - 0x2992, 0x2992, - 0x2994, 0x2994, - 0x2996, 0x2996, - 0x2998, 0x2998, - 0x29d9, 0x29d9, - 0x29db, 0x29db, - 0x29fd, 0x29fd, - 0x2e23, 0x2e23, - 0x2e25, 0x2e25, - 0x2e27, 0x2e27, - 0x2e29, 0x2e29, - 0x3009, 0x3009, - 0x300b, 0x300b, - 0x300d, 0x300d, - 0x300f, 0x300f, - 0x3011, 0x3011, - 0x3015, 0x3015, - 0x3017, 0x3017, - 0x3019, 0x3019, - 0x301b, 0x301b, - 0x301e, 0x301f, - 0xfd3e, 0xfd3e, - 0xfe18, 0xfe18, - 0xfe36, 0xfe36, - 0xfe38, 0xfe38, - 0xfe3a, 0xfe3a, - 0xfe3c, 0xfe3c, - 0xfe3e, 0xfe3e, - 0xfe40, 0xfe40, - 0xfe42, 0xfe42, - 0xfe44, 0xfe44, - 0xfe48, 0xfe48, - 0xfe5a, 0xfe5a, - 0xfe5c, 0xfe5c, - 0xfe5e, 0xfe5e, - 0xff09, 0xff09, - 0xff3d, 0xff3d, - 0xff5d, 0xff5d, - 0xff60, 0xff60, - 0xff63, 0xff63, -}; /* CR_Pe */ - -/* 'Pf': General Category */ -static const OnigCodePoint CR_Pf[] = { - 10, - 0x00bb, 0x00bb, - 0x2019, 0x2019, - 0x201d, 0x201d, - 0x203a, 0x203a, - 0x2e03, 0x2e03, - 0x2e05, 0x2e05, - 0x2e0a, 0x2e0a, - 0x2e0d, 0x2e0d, - 0x2e1d, 0x2e1d, - 0x2e21, 0x2e21, -}; /* CR_Pf */ - -/* 'Pi': General Category */ -static const OnigCodePoint CR_Pi[] = { - 11, - 0x00ab, 0x00ab, - 0x2018, 0x2018, - 0x201b, 0x201c, - 0x201f, 0x201f, - 0x2039, 0x2039, - 0x2e02, 0x2e02, - 0x2e04, 0x2e04, - 0x2e09, 0x2e09, - 0x2e0c, 0x2e0c, - 0x2e1c, 0x2e1c, - 0x2e20, 0x2e20, -}; /* CR_Pi */ - -/* 'Po': General Category */ -static const OnigCodePoint CR_Po[] = { - 165, - 0x0021, 0x0023, - 0x0025, 0x0027, - 0x002a, 0x002a, - 0x002c, 0x002c, - 0x002e, 0x002f, - 0x003a, 0x003b, - 0x003f, 0x0040, - 0x005c, 0x005c, - 0x00a1, 0x00a1, - 0x00a7, 0x00a7, - 0x00b6, 0x00b7, - 0x00bf, 0x00bf, - 0x037e, 0x037e, - 0x0387, 0x0387, - 0x055a, 0x055f, - 0x0589, 0x0589, - 0x05c0, 0x05c0, - 0x05c3, 0x05c3, - 0x05c6, 0x05c6, - 0x05f3, 0x05f4, - 0x0609, 0x060a, - 0x060c, 0x060d, - 0x061b, 0x061b, - 0x061e, 0x061f, - 0x066a, 0x066d, - 0x06d4, 0x06d4, - 0x0700, 0x070d, - 0x07f7, 0x07f9, - 0x0830, 0x083e, - 0x085e, 0x085e, - 0x0964, 0x0965, - 0x0970, 0x0970, - 0x0af0, 0x0af0, - 0x0df4, 0x0df4, - 0x0e4f, 0x0e4f, - 0x0e5a, 0x0e5b, - 0x0f04, 0x0f12, - 0x0f14, 0x0f14, - 0x0f85, 0x0f85, - 0x0fd0, 0x0fd4, - 0x0fd9, 0x0fda, - 0x104a, 0x104f, - 0x10fb, 0x10fb, - 0x1360, 0x1368, - 0x166d, 0x166e, - 0x16eb, 0x16ed, - 0x1735, 0x1736, - 0x17d4, 0x17d6, - 0x17d8, 0x17da, - 0x1800, 0x1805, - 0x1807, 0x180a, - 0x1944, 0x1945, - 0x1a1e, 0x1a1f, - 0x1aa0, 0x1aa6, - 0x1aa8, 0x1aad, - 0x1b5a, 0x1b60, - 0x1bfc, 0x1bff, - 0x1c3b, 0x1c3f, - 0x1c7e, 0x1c7f, - 0x1cc0, 0x1cc7, - 0x1cd3, 0x1cd3, - 0x2016, 0x2017, - 0x2020, 0x2027, - 0x2030, 0x2038, - 0x203b, 0x203e, - 0x2041, 0x2043, - 0x2047, 0x2051, - 0x2053, 0x2053, - 0x2055, 0x205e, - 0x2cf9, 0x2cfc, - 0x2cfe, 0x2cff, - 0x2d70, 0x2d70, - 0x2e00, 0x2e01, - 0x2e06, 0x2e08, - 0x2e0b, 0x2e0b, - 0x2e0e, 0x2e16, - 0x2e18, 0x2e19, - 0x2e1b, 0x2e1b, - 0x2e1e, 0x2e1f, - 0x2e2a, 0x2e2e, - 0x2e30, 0x2e39, - 0x2e3c, 0x2e3f, - 0x2e41, 0x2e41, - 0x2e43, 0x2e44, - 0x3001, 0x3003, - 0x303d, 0x303d, - 0x30fb, 0x30fb, - 0xa4fe, 0xa4ff, - 0xa60d, 0xa60f, - 0xa673, 0xa673, - 0xa67e, 0xa67e, - 0xa6f2, 0xa6f7, - 0xa874, 0xa877, - 0xa8ce, 0xa8cf, - 0xa8f8, 0xa8fa, - 0xa8fc, 0xa8fc, - 0xa92e, 0xa92f, - 0xa95f, 0xa95f, - 0xa9c1, 0xa9cd, - 0xa9de, 0xa9df, - 0xaa5c, 0xaa5f, - 0xaade, 0xaadf, - 0xaaf0, 0xaaf1, - 0xabeb, 0xabeb, - 0xfe10, 0xfe16, - 0xfe19, 0xfe19, - 0xfe30, 0xfe30, - 0xfe45, 0xfe46, - 0xfe49, 0xfe4c, - 0xfe50, 0xfe52, - 0xfe54, 0xfe57, - 0xfe5f, 0xfe61, - 0xfe68, 0xfe68, - 0xfe6a, 0xfe6b, - 0xff01, 0xff03, - 0xff05, 0xff07, - 0xff0a, 0xff0a, - 0xff0c, 0xff0c, - 0xff0e, 0xff0f, - 0xff1a, 0xff1b, - 0xff1f, 0xff20, - 0xff3c, 0xff3c, - 0xff61, 0xff61, - 0xff64, 0xff65, - 0x10100, 0x10102, - 0x1039f, 0x1039f, - 0x103d0, 0x103d0, - 0x1056f, 0x1056f, - 0x10857, 0x10857, - 0x1091f, 0x1091f, - 0x1093f, 0x1093f, - 0x10a50, 0x10a58, - 0x10a7f, 0x10a7f, - 0x10af0, 0x10af6, - 0x10b39, 0x10b3f, - 0x10b99, 0x10b9c, - 0x11047, 0x1104d, - 0x110bb, 0x110bc, - 0x110be, 0x110c1, - 0x11140, 0x11143, - 0x11174, 0x11175, - 0x111c5, 0x111c9, - 0x111cd, 0x111cd, - 0x111db, 0x111db, - 0x111dd, 0x111df, - 0x11238, 0x1123d, - 0x112a9, 0x112a9, - 0x1144b, 0x1144f, - 0x1145b, 0x1145b, - 0x1145d, 0x1145d, - 0x114c6, 0x114c6, - 0x115c1, 0x115d7, - 0x11641, 0x11643, - 0x11660, 0x1166c, - 0x1173c, 0x1173e, - 0x11c41, 0x11c45, - 0x11c70, 0x11c71, - 0x12470, 0x12474, - 0x16a6e, 0x16a6f, - 0x16af5, 0x16af5, - 0x16b37, 0x16b3b, - 0x16b44, 0x16b44, - 0x1bc9f, 0x1bc9f, - 0x1da87, 0x1da8b, - 0x1e95e, 0x1e95f, -}; /* CR_Po */ - -/* 'Ps': General Category */ -static const OnigCodePoint CR_Ps[] = { - 75, - 0x0028, 0x0028, - 0x005b, 0x005b, - 0x007b, 0x007b, - 0x0f3a, 0x0f3a, - 0x0f3c, 0x0f3c, - 0x169b, 0x169b, - 0x201a, 0x201a, - 0x201e, 0x201e, - 0x2045, 0x2045, - 0x207d, 0x207d, - 0x208d, 0x208d, - 0x2308, 0x2308, - 0x230a, 0x230a, - 0x2329, 0x2329, - 0x2768, 0x2768, - 0x276a, 0x276a, - 0x276c, 0x276c, - 0x276e, 0x276e, - 0x2770, 0x2770, - 0x2772, 0x2772, - 0x2774, 0x2774, - 0x27c5, 0x27c5, - 0x27e6, 0x27e6, - 0x27e8, 0x27e8, - 0x27ea, 0x27ea, - 0x27ec, 0x27ec, - 0x27ee, 0x27ee, - 0x2983, 0x2983, - 0x2985, 0x2985, - 0x2987, 0x2987, - 0x2989, 0x2989, - 0x298b, 0x298b, - 0x298d, 0x298d, - 0x298f, 0x298f, - 0x2991, 0x2991, - 0x2993, 0x2993, - 0x2995, 0x2995, - 0x2997, 0x2997, - 0x29d8, 0x29d8, - 0x29da, 0x29da, - 0x29fc, 0x29fc, - 0x2e22, 0x2e22, - 0x2e24, 0x2e24, - 0x2e26, 0x2e26, - 0x2e28, 0x2e28, - 0x2e42, 0x2e42, - 0x3008, 0x3008, - 0x300a, 0x300a, - 0x300c, 0x300c, - 0x300e, 0x300e, - 0x3010, 0x3010, - 0x3014, 0x3014, - 0x3016, 0x3016, - 0x3018, 0x3018, - 0x301a, 0x301a, - 0x301d, 0x301d, - 0xfd3f, 0xfd3f, - 0xfe17, 0xfe17, - 0xfe35, 0xfe35, - 0xfe37, 0xfe37, - 0xfe39, 0xfe39, - 0xfe3b, 0xfe3b, - 0xfe3d, 0xfe3d, - 0xfe3f, 0xfe3f, - 0xfe41, 0xfe41, - 0xfe43, 0xfe43, - 0xfe47, 0xfe47, - 0xfe59, 0xfe59, - 0xfe5b, 0xfe5b, - 0xfe5d, 0xfe5d, - 0xff08, 0xff08, - 0xff3b, 0xff3b, - 0xff5b, 0xff5b, - 0xff5f, 0xff5f, - 0xff62, 0xff62, -}; /* CR_Ps */ - -/* 'S': Major Category */ -static const OnigCodePoint CR_S[] = { - 218, - 0x0024, 0x0024, - 0x002b, 0x002b, - 0x003c, 0x003e, - 0x005e, 0x005e, - 0x0060, 0x0060, - 0x007c, 0x007c, - 0x007e, 0x007e, - 0x00a2, 0x00a6, - 0x00a8, 0x00a9, - 0x00ac, 0x00ac, - 0x00ae, 0x00b1, - 0x00b4, 0x00b4, - 0x00b8, 0x00b8, - 0x00d7, 0x00d7, - 0x00f7, 0x00f7, - 0x02c2, 0x02c5, - 0x02d2, 0x02df, - 0x02e5, 0x02eb, - 0x02ed, 0x02ed, - 0x02ef, 0x02ff, - 0x0375, 0x0375, - 0x0384, 0x0385, - 0x03f6, 0x03f6, - 0x0482, 0x0482, - 0x058d, 0x058f, - 0x0606, 0x0608, - 0x060b, 0x060b, - 0x060e, 0x060f, - 0x06de, 0x06de, - 0x06e9, 0x06e9, - 0x06fd, 0x06fe, - 0x07f6, 0x07f6, - 0x09f2, 0x09f3, - 0x09fa, 0x09fb, - 0x0af1, 0x0af1, - 0x0b70, 0x0b70, - 0x0bf3, 0x0bfa, - 0x0c7f, 0x0c7f, - 0x0d4f, 0x0d4f, - 0x0d79, 0x0d79, - 0x0e3f, 0x0e3f, - 0x0f01, 0x0f03, - 0x0f13, 0x0f13, - 0x0f15, 0x0f17, - 0x0f1a, 0x0f1f, - 0x0f34, 0x0f34, - 0x0f36, 0x0f36, - 0x0f38, 0x0f38, - 0x0fbe, 0x0fc5, - 0x0fc7, 0x0fcc, - 0x0fce, 0x0fcf, - 0x0fd5, 0x0fd8, - 0x109e, 0x109f, - 0x1390, 0x1399, - 0x17db, 0x17db, - 0x1940, 0x1940, - 0x19de, 0x19ff, - 0x1b61, 0x1b6a, - 0x1b74, 0x1b7c, - 0x1fbd, 0x1fbd, - 0x1fbf, 0x1fc1, - 0x1fcd, 0x1fcf, - 0x1fdd, 0x1fdf, - 0x1fed, 0x1fef, - 0x1ffd, 0x1ffe, - 0x2044, 0x2044, - 0x2052, 0x2052, - 0x207a, 0x207c, - 0x208a, 0x208c, - 0x20a0, 0x20be, - 0x2100, 0x2101, - 0x2103, 0x2106, - 0x2108, 0x2109, - 0x2114, 0x2114, - 0x2116, 0x2118, - 0x211e, 0x2123, - 0x2125, 0x2125, - 0x2127, 0x2127, - 0x2129, 0x2129, - 0x212e, 0x212e, - 0x213a, 0x213b, - 0x2140, 0x2144, - 0x214a, 0x214d, - 0x214f, 0x214f, - 0x218a, 0x218b, - 0x2190, 0x2307, - 0x230c, 0x2328, - 0x232b, 0x23fe, - 0x2400, 0x2426, - 0x2440, 0x244a, - 0x249c, 0x24e9, - 0x2500, 0x2767, - 0x2794, 0x27c4, - 0x27c7, 0x27e5, - 0x27f0, 0x2982, - 0x2999, 0x29d7, - 0x29dc, 0x29fb, - 0x29fe, 0x2b73, - 0x2b76, 0x2b95, - 0x2b98, 0x2bb9, - 0x2bbd, 0x2bc8, - 0x2bca, 0x2bd1, - 0x2bec, 0x2bef, - 0x2ce5, 0x2cea, - 0x2e80, 0x2e99, - 0x2e9b, 0x2ef3, - 0x2f00, 0x2fd5, - 0x2ff0, 0x2ffb, - 0x3004, 0x3004, - 0x3012, 0x3013, - 0x3020, 0x3020, - 0x3036, 0x3037, - 0x303e, 0x303f, - 0x309b, 0x309c, - 0x3190, 0x3191, - 0x3196, 0x319f, - 0x31c0, 0x31e3, - 0x3200, 0x321e, - 0x322a, 0x3247, - 0x3250, 0x3250, - 0x3260, 0x327f, - 0x328a, 0x32b0, - 0x32c0, 0x32fe, - 0x3300, 0x33ff, - 0x4dc0, 0x4dff, - 0xa490, 0xa4c6, - 0xa700, 0xa716, - 0xa720, 0xa721, - 0xa789, 0xa78a, - 0xa828, 0xa82b, - 0xa836, 0xa839, - 0xaa77, 0xaa79, - 0xab5b, 0xab5b, - 0xfb29, 0xfb29, - 0xfbb2, 0xfbc1, - 0xfdfc, 0xfdfd, - 0xfe62, 0xfe62, - 0xfe64, 0xfe66, - 0xfe69, 0xfe69, - 0xff04, 0xff04, - 0xff0b, 0xff0b, - 0xff1c, 0xff1e, - 0xff3e, 0xff3e, - 0xff40, 0xff40, - 0xff5c, 0xff5c, - 0xff5e, 0xff5e, - 0xffe0, 0xffe6, - 0xffe8, 0xffee, - 0xfffc, 0xfffd, - 0x10137, 0x1013f, - 0x10179, 0x10189, - 0x1018c, 0x1018e, - 0x10190, 0x1019b, - 0x101a0, 0x101a0, - 0x101d0, 0x101fc, - 0x10877, 0x10878, - 0x10ac8, 0x10ac8, - 0x1173f, 0x1173f, - 0x16b3c, 0x16b3f, - 0x16b45, 0x16b45, - 0x1bc9c, 0x1bc9c, - 0x1d000, 0x1d0f5, - 0x1d100, 0x1d126, - 0x1d129, 0x1d164, - 0x1d16a, 0x1d16c, - 0x1d183, 0x1d184, - 0x1d18c, 0x1d1a9, - 0x1d1ae, 0x1d1e8, - 0x1d200, 0x1d241, - 0x1d245, 0x1d245, - 0x1d300, 0x1d356, - 0x1d6c1, 0x1d6c1, - 0x1d6db, 0x1d6db, - 0x1d6fb, 0x1d6fb, - 0x1d715, 0x1d715, - 0x1d735, 0x1d735, - 0x1d74f, 0x1d74f, - 0x1d76f, 0x1d76f, - 0x1d789, 0x1d789, - 0x1d7a9, 0x1d7a9, - 0x1d7c3, 0x1d7c3, - 0x1d800, 0x1d9ff, - 0x1da37, 0x1da3a, - 0x1da6d, 0x1da74, - 0x1da76, 0x1da83, - 0x1da85, 0x1da86, - 0x1eef0, 0x1eef1, - 0x1f000, 0x1f02b, - 0x1f030, 0x1f093, - 0x1f0a0, 0x1f0ae, - 0x1f0b1, 0x1f0bf, - 0x1f0c1, 0x1f0cf, - 0x1f0d1, 0x1f0f5, - 0x1f110, 0x1f12e, - 0x1f130, 0x1f16b, - 0x1f170, 0x1f1ac, - 0x1f1e6, 0x1f202, - 0x1f210, 0x1f23b, - 0x1f240, 0x1f248, - 0x1f250, 0x1f251, - 0x1f300, 0x1f6d2, - 0x1f6e0, 0x1f6ec, - 0x1f6f0, 0x1f6f6, - 0x1f700, 0x1f773, - 0x1f780, 0x1f7d4, - 0x1f800, 0x1f80b, - 0x1f810, 0x1f847, - 0x1f850, 0x1f859, - 0x1f860, 0x1f887, - 0x1f890, 0x1f8ad, - 0x1f910, 0x1f91e, - 0x1f920, 0x1f927, - 0x1f930, 0x1f930, - 0x1f933, 0x1f93e, - 0x1f940, 0x1f94b, - 0x1f950, 0x1f95e, - 0x1f980, 0x1f991, - 0x1f9c0, 0x1f9c0, -}; /* CR_S */ - -/* 'Sc': General Category */ -static const OnigCodePoint CR_Sc[] = { - 17, - 0x0024, 0x0024, - 0x00a2, 0x00a5, - 0x058f, 0x058f, - 0x060b, 0x060b, - 0x09f2, 0x09f3, - 0x09fb, 0x09fb, - 0x0af1, 0x0af1, - 0x0bf9, 0x0bf9, - 0x0e3f, 0x0e3f, - 0x17db, 0x17db, - 0x20a0, 0x20be, - 0xa838, 0xa838, - 0xfdfc, 0xfdfc, - 0xfe69, 0xfe69, - 0xff04, 0xff04, - 0xffe0, 0xffe1, - 0xffe5, 0xffe6, -}; /* CR_Sc */ - -/* 'Sk': General Category */ -static const OnigCodePoint CR_Sk[] = { - 29, - 0x005e, 0x005e, - 0x0060, 0x0060, - 0x00a8, 0x00a8, - 0x00af, 0x00af, - 0x00b4, 0x00b4, - 0x00b8, 0x00b8, - 0x02c2, 0x02c5, - 0x02d2, 0x02df, - 0x02e5, 0x02eb, - 0x02ed, 0x02ed, - 0x02ef, 0x02ff, - 0x0375, 0x0375, - 0x0384, 0x0385, - 0x1fbd, 0x1fbd, - 0x1fbf, 0x1fc1, - 0x1fcd, 0x1fcf, - 0x1fdd, 0x1fdf, - 0x1fed, 0x1fef, - 0x1ffd, 0x1ffe, - 0x309b, 0x309c, - 0xa700, 0xa716, - 0xa720, 0xa721, - 0xa789, 0xa78a, - 0xab5b, 0xab5b, - 0xfbb2, 0xfbc1, - 0xff3e, 0xff3e, - 0xff40, 0xff40, - 0xffe3, 0xffe3, - 0x1f3fb, 0x1f3ff, -}; /* CR_Sk */ - -/* 'Sm': General Category */ -static const OnigCodePoint CR_Sm[] = { - 64, - 0x002b, 0x002b, - 0x003c, 0x003e, - 0x007c, 0x007c, - 0x007e, 0x007e, - 0x00ac, 0x00ac, - 0x00b1, 0x00b1, - 0x00d7, 0x00d7, - 0x00f7, 0x00f7, - 0x03f6, 0x03f6, - 0x0606, 0x0608, - 0x2044, 0x2044, - 0x2052, 0x2052, - 0x207a, 0x207c, - 0x208a, 0x208c, - 0x2118, 0x2118, - 0x2140, 0x2144, - 0x214b, 0x214b, - 0x2190, 0x2194, - 0x219a, 0x219b, - 0x21a0, 0x21a0, - 0x21a3, 0x21a3, - 0x21a6, 0x21a6, - 0x21ae, 0x21ae, - 0x21ce, 0x21cf, - 0x21d2, 0x21d2, - 0x21d4, 0x21d4, - 0x21f4, 0x22ff, - 0x2320, 0x2321, - 0x237c, 0x237c, - 0x239b, 0x23b3, - 0x23dc, 0x23e1, - 0x25b7, 0x25b7, - 0x25c1, 0x25c1, - 0x25f8, 0x25ff, - 0x266f, 0x266f, - 0x27c0, 0x27c4, - 0x27c7, 0x27e5, - 0x27f0, 0x27ff, - 0x2900, 0x2982, - 0x2999, 0x29d7, - 0x29dc, 0x29fb, - 0x29fe, 0x2aff, - 0x2b30, 0x2b44, - 0x2b47, 0x2b4c, - 0xfb29, 0xfb29, - 0xfe62, 0xfe62, - 0xfe64, 0xfe66, - 0xff0b, 0xff0b, - 0xff1c, 0xff1e, - 0xff5c, 0xff5c, - 0xff5e, 0xff5e, - 0xffe2, 0xffe2, - 0xffe9, 0xffec, - 0x1d6c1, 0x1d6c1, - 0x1d6db, 0x1d6db, - 0x1d6fb, 0x1d6fb, - 0x1d715, 0x1d715, - 0x1d735, 0x1d735, - 0x1d74f, 0x1d74f, - 0x1d76f, 0x1d76f, - 0x1d789, 0x1d789, - 0x1d7a9, 0x1d7a9, - 0x1d7c3, 0x1d7c3, - 0x1eef0, 0x1eef1, -}; /* CR_Sm */ - -/* 'So': General Category */ -static const OnigCodePoint CR_So[] = { - 174, - 0x00a6, 0x00a6, - 0x00a9, 0x00a9, - 0x00ae, 0x00ae, - 0x00b0, 0x00b0, - 0x0482, 0x0482, - 0x058d, 0x058e, - 0x060e, 0x060f, - 0x06de, 0x06de, - 0x06e9, 0x06e9, - 0x06fd, 0x06fe, - 0x07f6, 0x07f6, - 0x09fa, 0x09fa, - 0x0b70, 0x0b70, - 0x0bf3, 0x0bf8, - 0x0bfa, 0x0bfa, - 0x0c7f, 0x0c7f, - 0x0d4f, 0x0d4f, - 0x0d79, 0x0d79, - 0x0f01, 0x0f03, - 0x0f13, 0x0f13, - 0x0f15, 0x0f17, - 0x0f1a, 0x0f1f, - 0x0f34, 0x0f34, - 0x0f36, 0x0f36, - 0x0f38, 0x0f38, - 0x0fbe, 0x0fc5, - 0x0fc7, 0x0fcc, - 0x0fce, 0x0fcf, - 0x0fd5, 0x0fd8, - 0x109e, 0x109f, - 0x1390, 0x1399, - 0x1940, 0x1940, - 0x19de, 0x19ff, - 0x1b61, 0x1b6a, - 0x1b74, 0x1b7c, - 0x2100, 0x2101, - 0x2103, 0x2106, - 0x2108, 0x2109, - 0x2114, 0x2114, - 0x2116, 0x2117, - 0x211e, 0x2123, - 0x2125, 0x2125, - 0x2127, 0x2127, - 0x2129, 0x2129, - 0x212e, 0x212e, - 0x213a, 0x213b, - 0x214a, 0x214a, - 0x214c, 0x214d, - 0x214f, 0x214f, - 0x218a, 0x218b, - 0x2195, 0x2199, - 0x219c, 0x219f, - 0x21a1, 0x21a2, - 0x21a4, 0x21a5, - 0x21a7, 0x21ad, - 0x21af, 0x21cd, - 0x21d0, 0x21d1, - 0x21d3, 0x21d3, - 0x21d5, 0x21f3, - 0x2300, 0x2307, - 0x230c, 0x231f, - 0x2322, 0x2328, - 0x232b, 0x237b, - 0x237d, 0x239a, - 0x23b4, 0x23db, - 0x23e2, 0x23fe, - 0x2400, 0x2426, - 0x2440, 0x244a, - 0x249c, 0x24e9, - 0x2500, 0x25b6, - 0x25b8, 0x25c0, - 0x25c2, 0x25f7, - 0x2600, 0x266e, - 0x2670, 0x2767, - 0x2794, 0x27bf, - 0x2800, 0x28ff, - 0x2b00, 0x2b2f, - 0x2b45, 0x2b46, - 0x2b4d, 0x2b73, - 0x2b76, 0x2b95, - 0x2b98, 0x2bb9, - 0x2bbd, 0x2bc8, - 0x2bca, 0x2bd1, - 0x2bec, 0x2bef, - 0x2ce5, 0x2cea, - 0x2e80, 0x2e99, - 0x2e9b, 0x2ef3, - 0x2f00, 0x2fd5, - 0x2ff0, 0x2ffb, - 0x3004, 0x3004, - 0x3012, 0x3013, - 0x3020, 0x3020, - 0x3036, 0x3037, - 0x303e, 0x303f, - 0x3190, 0x3191, - 0x3196, 0x319f, - 0x31c0, 0x31e3, - 0x3200, 0x321e, - 0x322a, 0x3247, - 0x3250, 0x3250, - 0x3260, 0x327f, - 0x328a, 0x32b0, - 0x32c0, 0x32fe, - 0x3300, 0x33ff, - 0x4dc0, 0x4dff, - 0xa490, 0xa4c6, - 0xa828, 0xa82b, - 0xa836, 0xa837, - 0xa839, 0xa839, - 0xaa77, 0xaa79, - 0xfdfd, 0xfdfd, - 0xffe4, 0xffe4, - 0xffe8, 0xffe8, - 0xffed, 0xffee, - 0xfffc, 0xfffd, - 0x10137, 0x1013f, - 0x10179, 0x10189, - 0x1018c, 0x1018e, - 0x10190, 0x1019b, - 0x101a0, 0x101a0, - 0x101d0, 0x101fc, - 0x10877, 0x10878, - 0x10ac8, 0x10ac8, - 0x1173f, 0x1173f, - 0x16b3c, 0x16b3f, - 0x16b45, 0x16b45, - 0x1bc9c, 0x1bc9c, - 0x1d000, 0x1d0f5, - 0x1d100, 0x1d126, - 0x1d129, 0x1d164, - 0x1d16a, 0x1d16c, - 0x1d183, 0x1d184, - 0x1d18c, 0x1d1a9, - 0x1d1ae, 0x1d1e8, - 0x1d200, 0x1d241, - 0x1d245, 0x1d245, - 0x1d300, 0x1d356, - 0x1d800, 0x1d9ff, - 0x1da37, 0x1da3a, - 0x1da6d, 0x1da74, - 0x1da76, 0x1da83, - 0x1da85, 0x1da86, - 0x1f000, 0x1f02b, - 0x1f030, 0x1f093, - 0x1f0a0, 0x1f0ae, - 0x1f0b1, 0x1f0bf, - 0x1f0c1, 0x1f0cf, - 0x1f0d1, 0x1f0f5, - 0x1f110, 0x1f12e, - 0x1f130, 0x1f16b, - 0x1f170, 0x1f1ac, - 0x1f1e6, 0x1f202, - 0x1f210, 0x1f23b, - 0x1f240, 0x1f248, - 0x1f250, 0x1f251, - 0x1f300, 0x1f3fa, - 0x1f400, 0x1f6d2, - 0x1f6e0, 0x1f6ec, - 0x1f6f0, 0x1f6f6, - 0x1f700, 0x1f773, - 0x1f780, 0x1f7d4, - 0x1f800, 0x1f80b, - 0x1f810, 0x1f847, - 0x1f850, 0x1f859, - 0x1f860, 0x1f887, - 0x1f890, 0x1f8ad, - 0x1f910, 0x1f91e, - 0x1f920, 0x1f927, - 0x1f930, 0x1f930, - 0x1f933, 0x1f93e, - 0x1f940, 0x1f94b, - 0x1f950, 0x1f95e, - 0x1f980, 0x1f991, - 0x1f9c0, 0x1f9c0, -}; /* CR_So */ - -/* 'Z': Major Category */ -static const OnigCodePoint CR_Z[] = { - 8, - 0x0020, 0x0020, - 0x00a0, 0x00a0, - 0x1680, 0x1680, - 0x2000, 0x200a, - 0x2028, 0x2029, - 0x202f, 0x202f, - 0x205f, 0x205f, - 0x3000, 0x3000, -}; /* CR_Z */ - -/* 'Zl': General Category */ -static const OnigCodePoint CR_Zl[] = { - 1, - 0x2028, 0x2028, -}; /* CR_Zl */ - -/* 'Zp': General Category */ -static const OnigCodePoint CR_Zp[] = { - 1, - 0x2029, 0x2029, -}; /* CR_Zp */ - -/* 'Zs': General Category */ -static const OnigCodePoint CR_Zs[] = { - 7, - 0x0020, 0x0020, - 0x00a0, 0x00a0, - 0x1680, 0x1680, - 0x2000, 0x200a, - 0x202f, 0x202f, - 0x205f, 0x205f, - 0x3000, 0x3000, -}; /* CR_Zs */ - -/* 'Math': Derived Property */ -static const OnigCodePoint CR_Math[] = { - 138, - 0x002b, 0x002b, - 0x003c, 0x003e, - 0x005e, 0x005e, - 0x007c, 0x007c, - 0x007e, 0x007e, - 0x00ac, 0x00ac, - 0x00b1, 0x00b1, - 0x00d7, 0x00d7, - 0x00f7, 0x00f7, - 0x03d0, 0x03d2, - 0x03d5, 0x03d5, - 0x03f0, 0x03f1, - 0x03f4, 0x03f6, - 0x0606, 0x0608, - 0x2016, 0x2016, - 0x2032, 0x2034, - 0x2040, 0x2040, - 0x2044, 0x2044, - 0x2052, 0x2052, - 0x2061, 0x2064, - 0x207a, 0x207e, - 0x208a, 0x208e, - 0x20d0, 0x20dc, - 0x20e1, 0x20e1, - 0x20e5, 0x20e6, - 0x20eb, 0x20ef, - 0x2102, 0x2102, - 0x2107, 0x2107, - 0x210a, 0x2113, - 0x2115, 0x2115, - 0x2118, 0x211d, - 0x2124, 0x2124, - 0x2128, 0x2129, - 0x212c, 0x212d, - 0x212f, 0x2131, - 0x2133, 0x2138, - 0x213c, 0x2149, - 0x214b, 0x214b, - 0x2190, 0x21a7, - 0x21a9, 0x21ae, - 0x21b0, 0x21b1, - 0x21b6, 0x21b7, - 0x21bc, 0x21db, - 0x21dd, 0x21dd, - 0x21e4, 0x21e5, - 0x21f4, 0x22ff, - 0x2308, 0x230b, - 0x2320, 0x2321, - 0x237c, 0x237c, - 0x239b, 0x23b5, - 0x23b7, 0x23b7, - 0x23d0, 0x23d0, - 0x23dc, 0x23e2, - 0x25a0, 0x25a1, - 0x25ae, 0x25b7, - 0x25bc, 0x25c1, - 0x25c6, 0x25c7, - 0x25ca, 0x25cb, - 0x25cf, 0x25d3, - 0x25e2, 0x25e2, - 0x25e4, 0x25e4, - 0x25e7, 0x25ec, - 0x25f8, 0x25ff, - 0x2605, 0x2606, - 0x2640, 0x2640, - 0x2642, 0x2642, - 0x2660, 0x2663, - 0x266d, 0x266f, - 0x27c0, 0x27ff, - 0x2900, 0x2aff, - 0x2b30, 0x2b44, - 0x2b47, 0x2b4c, - 0xfb29, 0xfb29, - 0xfe61, 0xfe66, - 0xfe68, 0xfe68, - 0xff0b, 0xff0b, - 0xff1c, 0xff1e, - 0xff3c, 0xff3c, - 0xff3e, 0xff3e, - 0xff5c, 0xff5c, - 0xff5e, 0xff5e, - 0xffe2, 0xffe2, - 0xffe9, 0xffec, - 0x1d400, 0x1d454, - 0x1d456, 0x1d49c, - 0x1d49e, 0x1d49f, - 0x1d4a2, 0x1d4a2, - 0x1d4a5, 0x1d4a6, - 0x1d4a9, 0x1d4ac, - 0x1d4ae, 0x1d4b9, - 0x1d4bb, 0x1d4bb, - 0x1d4bd, 0x1d4c3, - 0x1d4c5, 0x1d505, - 0x1d507, 0x1d50a, - 0x1d50d, 0x1d514, - 0x1d516, 0x1d51c, - 0x1d51e, 0x1d539, - 0x1d53b, 0x1d53e, - 0x1d540, 0x1d544, - 0x1d546, 0x1d546, - 0x1d54a, 0x1d550, - 0x1d552, 0x1d6a5, - 0x1d6a8, 0x1d7cb, - 0x1d7ce, 0x1d7ff, - 0x1ee00, 0x1ee03, - 0x1ee05, 0x1ee1f, - 0x1ee21, 0x1ee22, - 0x1ee24, 0x1ee24, - 0x1ee27, 0x1ee27, - 0x1ee29, 0x1ee32, - 0x1ee34, 0x1ee37, - 0x1ee39, 0x1ee39, - 0x1ee3b, 0x1ee3b, - 0x1ee42, 0x1ee42, - 0x1ee47, 0x1ee47, - 0x1ee49, 0x1ee49, - 0x1ee4b, 0x1ee4b, - 0x1ee4d, 0x1ee4f, - 0x1ee51, 0x1ee52, - 0x1ee54, 0x1ee54, - 0x1ee57, 0x1ee57, - 0x1ee59, 0x1ee59, - 0x1ee5b, 0x1ee5b, - 0x1ee5d, 0x1ee5d, - 0x1ee5f, 0x1ee5f, - 0x1ee61, 0x1ee62, - 0x1ee64, 0x1ee64, - 0x1ee67, 0x1ee6a, - 0x1ee6c, 0x1ee72, - 0x1ee74, 0x1ee77, - 0x1ee79, 0x1ee7c, - 0x1ee7e, 0x1ee7e, - 0x1ee80, 0x1ee89, - 0x1ee8b, 0x1ee9b, - 0x1eea1, 0x1eea3, - 0x1eea5, 0x1eea9, - 0x1eeab, 0x1eebb, - 0x1eef0, 0x1eef1, -}; /* CR_Math */ - -/* 'Alphabetic': Derived Property */ -#define CR_Alphabetic CR_Alpha - -/* 'Lowercase': Derived Property */ -#define CR_Lowercase CR_Lower - -/* 'Uppercase': Derived Property */ -#define CR_Uppercase CR_Upper - -/* 'Cased': Derived Property */ -static const OnigCodePoint CR_Cased[] = { - 135, - 0x0041, 0x005a, - 0x0061, 0x007a, - 0x00aa, 0x00aa, - 0x00b5, 0x00b5, - 0x00ba, 0x00ba, - 0x00c0, 0x00d6, - 0x00d8, 0x00f6, - 0x00f8, 0x01ba, - 0x01bc, 0x01bf, - 0x01c4, 0x0293, - 0x0295, 0x02b8, - 0x02c0, 0x02c1, - 0x02e0, 0x02e4, - 0x0345, 0x0345, - 0x0370, 0x0373, - 0x0376, 0x0377, - 0x037a, 0x037d, - 0x037f, 0x037f, - 0x0386, 0x0386, - 0x0388, 0x038a, - 0x038c, 0x038c, - 0x038e, 0x03a1, - 0x03a3, 0x03f5, - 0x03f7, 0x0481, - 0x048a, 0x052f, - 0x0531, 0x0556, - 0x0561, 0x0587, - 0x10a0, 0x10c5, - 0x10c7, 0x10c7, - 0x10cd, 0x10cd, - 0x13a0, 0x13f5, - 0x13f8, 0x13fd, - 0x1c80, 0x1c88, - 0x1d00, 0x1dbf, - 0x1e00, 0x1f15, - 0x1f18, 0x1f1d, - 0x1f20, 0x1f45, - 0x1f48, 0x1f4d, - 0x1f50, 0x1f57, - 0x1f59, 0x1f59, - 0x1f5b, 0x1f5b, - 0x1f5d, 0x1f5d, - 0x1f5f, 0x1f7d, - 0x1f80, 0x1fb4, - 0x1fb6, 0x1fbc, - 0x1fbe, 0x1fbe, - 0x1fc2, 0x1fc4, - 0x1fc6, 0x1fcc, - 0x1fd0, 0x1fd3, - 0x1fd6, 0x1fdb, - 0x1fe0, 0x1fec, - 0x1ff2, 0x1ff4, - 0x1ff6, 0x1ffc, - 0x2071, 0x2071, - 0x207f, 0x207f, - 0x2090, 0x209c, - 0x2102, 0x2102, - 0x2107, 0x2107, - 0x210a, 0x2113, - 0x2115, 0x2115, - 0x2119, 0x211d, - 0x2124, 0x2124, - 0x2126, 0x2126, - 0x2128, 0x2128, - 0x212a, 0x212d, - 0x212f, 0x2134, - 0x2139, 0x2139, - 0x213c, 0x213f, - 0x2145, 0x2149, - 0x214e, 0x214e, - 0x2160, 0x217f, - 0x2183, 0x2184, - 0x24b6, 0x24e9, - 0x2c00, 0x2c2e, - 0x2c30, 0x2c5e, - 0x2c60, 0x2ce4, - 0x2ceb, 0x2cee, - 0x2cf2, 0x2cf3, - 0x2d00, 0x2d25, - 0x2d27, 0x2d27, - 0x2d2d, 0x2d2d, - 0xa640, 0xa66d, - 0xa680, 0xa69d, - 0xa722, 0xa787, - 0xa78b, 0xa78e, - 0xa790, 0xa7ae, - 0xa7b0, 0xa7b7, - 0xa7f8, 0xa7fa, - 0xab30, 0xab5a, - 0xab5c, 0xab65, - 0xab70, 0xabbf, - 0xfb00, 0xfb06, - 0xfb13, 0xfb17, - 0xff21, 0xff3a, - 0xff41, 0xff5a, - 0x10400, 0x1044f, - 0x104b0, 0x104d3, - 0x104d8, 0x104fb, - 0x10c80, 0x10cb2, - 0x10cc0, 0x10cf2, - 0x118a0, 0x118df, - 0x1d400, 0x1d454, - 0x1d456, 0x1d49c, - 0x1d49e, 0x1d49f, - 0x1d4a2, 0x1d4a2, - 0x1d4a5, 0x1d4a6, - 0x1d4a9, 0x1d4ac, - 0x1d4ae, 0x1d4b9, - 0x1d4bb, 0x1d4bb, - 0x1d4bd, 0x1d4c3, - 0x1d4c5, 0x1d505, - 0x1d507, 0x1d50a, - 0x1d50d, 0x1d514, - 0x1d516, 0x1d51c, - 0x1d51e, 0x1d539, - 0x1d53b, 0x1d53e, - 0x1d540, 0x1d544, - 0x1d546, 0x1d546, - 0x1d54a, 0x1d550, - 0x1d552, 0x1d6a5, - 0x1d6a8, 0x1d6c0, - 0x1d6c2, 0x1d6da, - 0x1d6dc, 0x1d6fa, - 0x1d6fc, 0x1d714, - 0x1d716, 0x1d734, - 0x1d736, 0x1d74e, - 0x1d750, 0x1d76e, - 0x1d770, 0x1d788, - 0x1d78a, 0x1d7a8, - 0x1d7aa, 0x1d7c2, - 0x1d7c4, 0x1d7cb, - 0x1e900, 0x1e943, - 0x1f130, 0x1f149, - 0x1f150, 0x1f169, - 0x1f170, 0x1f189, -}; /* CR_Cased */ - -/* 'Case_Ignorable': Derived Property */ -static const OnigCodePoint CR_Case_Ignorable[] = { - 365, - 0x0027, 0x0027, - 0x002e, 0x002e, - 0x003a, 0x003a, - 0x005e, 0x005e, - 0x0060, 0x0060, - 0x00a8, 0x00a8, - 0x00ad, 0x00ad, - 0x00af, 0x00af, - 0x00b4, 0x00b4, - 0x00b7, 0x00b8, - 0x02b0, 0x036f, - 0x0374, 0x0375, - 0x037a, 0x037a, - 0x0384, 0x0385, - 0x0387, 0x0387, - 0x0483, 0x0489, - 0x0559, 0x0559, - 0x0591, 0x05bd, - 0x05bf, 0x05bf, - 0x05c1, 0x05c2, - 0x05c4, 0x05c5, - 0x05c7, 0x05c7, - 0x05f4, 0x05f4, - 0x0600, 0x0605, - 0x0610, 0x061a, - 0x061c, 0x061c, - 0x0640, 0x0640, - 0x064b, 0x065f, - 0x0670, 0x0670, - 0x06d6, 0x06dd, - 0x06df, 0x06e8, - 0x06ea, 0x06ed, - 0x070f, 0x070f, - 0x0711, 0x0711, - 0x0730, 0x074a, - 0x07a6, 0x07b0, - 0x07eb, 0x07f5, - 0x07fa, 0x07fa, - 0x0816, 0x082d, - 0x0859, 0x085b, - 0x08d4, 0x0902, - 0x093a, 0x093a, - 0x093c, 0x093c, - 0x0941, 0x0948, - 0x094d, 0x094d, - 0x0951, 0x0957, - 0x0962, 0x0963, - 0x0971, 0x0971, - 0x0981, 0x0981, - 0x09bc, 0x09bc, - 0x09c1, 0x09c4, - 0x09cd, 0x09cd, - 0x09e2, 0x09e3, - 0x0a01, 0x0a02, - 0x0a3c, 0x0a3c, - 0x0a41, 0x0a42, - 0x0a47, 0x0a48, - 0x0a4b, 0x0a4d, - 0x0a51, 0x0a51, - 0x0a70, 0x0a71, - 0x0a75, 0x0a75, - 0x0a81, 0x0a82, - 0x0abc, 0x0abc, - 0x0ac1, 0x0ac5, - 0x0ac7, 0x0ac8, - 0x0acd, 0x0acd, - 0x0ae2, 0x0ae3, - 0x0b01, 0x0b01, - 0x0b3c, 0x0b3c, - 0x0b3f, 0x0b3f, - 0x0b41, 0x0b44, - 0x0b4d, 0x0b4d, - 0x0b56, 0x0b56, - 0x0b62, 0x0b63, - 0x0b82, 0x0b82, - 0x0bc0, 0x0bc0, - 0x0bcd, 0x0bcd, - 0x0c00, 0x0c00, - 0x0c3e, 0x0c40, - 0x0c46, 0x0c48, - 0x0c4a, 0x0c4d, - 0x0c55, 0x0c56, - 0x0c62, 0x0c63, - 0x0c81, 0x0c81, - 0x0cbc, 0x0cbc, - 0x0cbf, 0x0cbf, - 0x0cc6, 0x0cc6, - 0x0ccc, 0x0ccd, - 0x0ce2, 0x0ce3, - 0x0d01, 0x0d01, - 0x0d41, 0x0d44, - 0x0d4d, 0x0d4d, - 0x0d62, 0x0d63, - 0x0dca, 0x0dca, - 0x0dd2, 0x0dd4, - 0x0dd6, 0x0dd6, - 0x0e31, 0x0e31, - 0x0e34, 0x0e3a, - 0x0e46, 0x0e4e, - 0x0eb1, 0x0eb1, - 0x0eb4, 0x0eb9, - 0x0ebb, 0x0ebc, - 0x0ec6, 0x0ec6, - 0x0ec8, 0x0ecd, - 0x0f18, 0x0f19, - 0x0f35, 0x0f35, - 0x0f37, 0x0f37, - 0x0f39, 0x0f39, - 0x0f71, 0x0f7e, - 0x0f80, 0x0f84, - 0x0f86, 0x0f87, - 0x0f8d, 0x0f97, - 0x0f99, 0x0fbc, - 0x0fc6, 0x0fc6, - 0x102d, 0x1030, - 0x1032, 0x1037, - 0x1039, 0x103a, - 0x103d, 0x103e, - 0x1058, 0x1059, - 0x105e, 0x1060, - 0x1071, 0x1074, - 0x1082, 0x1082, - 0x1085, 0x1086, - 0x108d, 0x108d, - 0x109d, 0x109d, - 0x10fc, 0x10fc, - 0x135d, 0x135f, - 0x1712, 0x1714, - 0x1732, 0x1734, - 0x1752, 0x1753, - 0x1772, 0x1773, - 0x17b4, 0x17b5, - 0x17b7, 0x17bd, - 0x17c6, 0x17c6, - 0x17c9, 0x17d3, - 0x17d7, 0x17d7, - 0x17dd, 0x17dd, - 0x180b, 0x180e, - 0x1843, 0x1843, - 0x1885, 0x1886, - 0x18a9, 0x18a9, - 0x1920, 0x1922, - 0x1927, 0x1928, - 0x1932, 0x1932, - 0x1939, 0x193b, - 0x1a17, 0x1a18, - 0x1a1b, 0x1a1b, - 0x1a56, 0x1a56, - 0x1a58, 0x1a5e, - 0x1a60, 0x1a60, - 0x1a62, 0x1a62, - 0x1a65, 0x1a6c, - 0x1a73, 0x1a7c, - 0x1a7f, 0x1a7f, - 0x1aa7, 0x1aa7, - 0x1ab0, 0x1abe, - 0x1b00, 0x1b03, - 0x1b34, 0x1b34, - 0x1b36, 0x1b3a, - 0x1b3c, 0x1b3c, - 0x1b42, 0x1b42, - 0x1b6b, 0x1b73, - 0x1b80, 0x1b81, - 0x1ba2, 0x1ba5, - 0x1ba8, 0x1ba9, - 0x1bab, 0x1bad, - 0x1be6, 0x1be6, - 0x1be8, 0x1be9, - 0x1bed, 0x1bed, - 0x1bef, 0x1bf1, - 0x1c2c, 0x1c33, - 0x1c36, 0x1c37, - 0x1c78, 0x1c7d, - 0x1cd0, 0x1cd2, - 0x1cd4, 0x1ce0, - 0x1ce2, 0x1ce8, - 0x1ced, 0x1ced, - 0x1cf4, 0x1cf4, - 0x1cf8, 0x1cf9, - 0x1d2c, 0x1d6a, - 0x1d78, 0x1d78, - 0x1d9b, 0x1df5, - 0x1dfb, 0x1dff, - 0x1fbd, 0x1fbd, - 0x1fbf, 0x1fc1, - 0x1fcd, 0x1fcf, - 0x1fdd, 0x1fdf, - 0x1fed, 0x1fef, - 0x1ffd, 0x1ffe, - 0x200b, 0x200f, - 0x2018, 0x2019, - 0x2024, 0x2024, - 0x2027, 0x2027, - 0x202a, 0x202e, - 0x2060, 0x2064, - 0x2066, 0x206f, - 0x2071, 0x2071, - 0x207f, 0x207f, - 0x2090, 0x209c, - 0x20d0, 0x20f0, - 0x2c7c, 0x2c7d, - 0x2cef, 0x2cf1, - 0x2d6f, 0x2d6f, - 0x2d7f, 0x2d7f, - 0x2de0, 0x2dff, - 0x2e2f, 0x2e2f, - 0x3005, 0x3005, - 0x302a, 0x302d, - 0x3031, 0x3035, - 0x303b, 0x303b, - 0x3099, 0x309e, - 0x30fc, 0x30fe, - 0xa015, 0xa015, - 0xa4f8, 0xa4fd, - 0xa60c, 0xa60c, - 0xa66f, 0xa672, - 0xa674, 0xa67d, - 0xa67f, 0xa67f, - 0xa69c, 0xa69f, - 0xa6f0, 0xa6f1, - 0xa700, 0xa721, - 0xa770, 0xa770, - 0xa788, 0xa78a, - 0xa7f8, 0xa7f9, - 0xa802, 0xa802, - 0xa806, 0xa806, - 0xa80b, 0xa80b, - 0xa825, 0xa826, - 0xa8c4, 0xa8c5, - 0xa8e0, 0xa8f1, - 0xa926, 0xa92d, - 0xa947, 0xa951, - 0xa980, 0xa982, - 0xa9b3, 0xa9b3, - 0xa9b6, 0xa9b9, - 0xa9bc, 0xa9bc, - 0xa9cf, 0xa9cf, - 0xa9e5, 0xa9e6, - 0xaa29, 0xaa2e, - 0xaa31, 0xaa32, - 0xaa35, 0xaa36, - 0xaa43, 0xaa43, - 0xaa4c, 0xaa4c, - 0xaa70, 0xaa70, - 0xaa7c, 0xaa7c, - 0xaab0, 0xaab0, - 0xaab2, 0xaab4, - 0xaab7, 0xaab8, - 0xaabe, 0xaabf, - 0xaac1, 0xaac1, - 0xaadd, 0xaadd, - 0xaaec, 0xaaed, - 0xaaf3, 0xaaf4, - 0xaaf6, 0xaaf6, - 0xab5b, 0xab5f, - 0xabe5, 0xabe5, - 0xabe8, 0xabe8, - 0xabed, 0xabed, - 0xfb1e, 0xfb1e, - 0xfbb2, 0xfbc1, - 0xfe00, 0xfe0f, - 0xfe13, 0xfe13, - 0xfe20, 0xfe2f, - 0xfe52, 0xfe52, - 0xfe55, 0xfe55, - 0xfeff, 0xfeff, - 0xff07, 0xff07, - 0xff0e, 0xff0e, - 0xff1a, 0xff1a, - 0xff3e, 0xff3e, - 0xff40, 0xff40, - 0xff70, 0xff70, - 0xff9e, 0xff9f, - 0xffe3, 0xffe3, - 0xfff9, 0xfffb, - 0x101fd, 0x101fd, - 0x102e0, 0x102e0, - 0x10376, 0x1037a, - 0x10a01, 0x10a03, - 0x10a05, 0x10a06, - 0x10a0c, 0x10a0f, - 0x10a38, 0x10a3a, - 0x10a3f, 0x10a3f, - 0x10ae5, 0x10ae6, - 0x11001, 0x11001, - 0x11038, 0x11046, - 0x1107f, 0x11081, - 0x110b3, 0x110b6, - 0x110b9, 0x110ba, - 0x110bd, 0x110bd, - 0x11100, 0x11102, - 0x11127, 0x1112b, - 0x1112d, 0x11134, - 0x11173, 0x11173, - 0x11180, 0x11181, - 0x111b6, 0x111be, - 0x111ca, 0x111cc, - 0x1122f, 0x11231, - 0x11234, 0x11234, - 0x11236, 0x11237, - 0x1123e, 0x1123e, - 0x112df, 0x112df, - 0x112e3, 0x112ea, - 0x11300, 0x11301, - 0x1133c, 0x1133c, - 0x11340, 0x11340, - 0x11366, 0x1136c, - 0x11370, 0x11374, - 0x11438, 0x1143f, - 0x11442, 0x11444, - 0x11446, 0x11446, - 0x114b3, 0x114b8, - 0x114ba, 0x114ba, - 0x114bf, 0x114c0, - 0x114c2, 0x114c3, - 0x115b2, 0x115b5, - 0x115bc, 0x115bd, - 0x115bf, 0x115c0, - 0x115dc, 0x115dd, - 0x11633, 0x1163a, - 0x1163d, 0x1163d, - 0x1163f, 0x11640, - 0x116ab, 0x116ab, - 0x116ad, 0x116ad, - 0x116b0, 0x116b5, - 0x116b7, 0x116b7, - 0x1171d, 0x1171f, - 0x11722, 0x11725, - 0x11727, 0x1172b, - 0x11c30, 0x11c36, - 0x11c38, 0x11c3d, - 0x11c3f, 0x11c3f, - 0x11c92, 0x11ca7, - 0x11caa, 0x11cb0, - 0x11cb2, 0x11cb3, - 0x11cb5, 0x11cb6, - 0x16af0, 0x16af4, - 0x16b30, 0x16b36, - 0x16b40, 0x16b43, - 0x16f8f, 0x16f9f, - 0x16fe0, 0x16fe0, - 0x1bc9d, 0x1bc9e, - 0x1bca0, 0x1bca3, - 0x1d167, 0x1d169, - 0x1d173, 0x1d182, - 0x1d185, 0x1d18b, - 0x1d1aa, 0x1d1ad, - 0x1d242, 0x1d244, - 0x1da00, 0x1da36, - 0x1da3b, 0x1da6c, - 0x1da75, 0x1da75, - 0x1da84, 0x1da84, - 0x1da9b, 0x1da9f, - 0x1daa1, 0x1daaf, - 0x1e000, 0x1e006, - 0x1e008, 0x1e018, - 0x1e01b, 0x1e021, - 0x1e023, 0x1e024, - 0x1e026, 0x1e02a, - 0x1e8d0, 0x1e8d6, - 0x1e944, 0x1e94a, - 0x1f3fb, 0x1f3ff, - 0xe0001, 0xe0001, - 0xe0020, 0xe007f, - 0xe0100, 0xe01ef, -}; /* CR_Case_Ignorable */ - -/* 'Changes_When_Lowercased': Derived Property */ -static const OnigCodePoint CR_Changes_When_Lowercased[] = { - 590, - 0x0041, 0x005a, - 0x00c0, 0x00d6, - 0x00d8, 0x00de, - 0x0100, 0x0100, - 0x0102, 0x0102, - 0x0104, 0x0104, - 0x0106, 0x0106, - 0x0108, 0x0108, - 0x010a, 0x010a, - 0x010c, 0x010c, - 0x010e, 0x010e, - 0x0110, 0x0110, - 0x0112, 0x0112, - 0x0114, 0x0114, - 0x0116, 0x0116, - 0x0118, 0x0118, - 0x011a, 0x011a, - 0x011c, 0x011c, - 0x011e, 0x011e, - 0x0120, 0x0120, - 0x0122, 0x0122, - 0x0124, 0x0124, - 0x0126, 0x0126, - 0x0128, 0x0128, - 0x012a, 0x012a, - 0x012c, 0x012c, - 0x012e, 0x012e, - 0x0130, 0x0130, - 0x0132, 0x0132, - 0x0134, 0x0134, - 0x0136, 0x0136, - 0x0139, 0x0139, - 0x013b, 0x013b, - 0x013d, 0x013d, - 0x013f, 0x013f, - 0x0141, 0x0141, - 0x0143, 0x0143, - 0x0145, 0x0145, - 0x0147, 0x0147, - 0x014a, 0x014a, - 0x014c, 0x014c, - 0x014e, 0x014e, - 0x0150, 0x0150, - 0x0152, 0x0152, - 0x0154, 0x0154, - 0x0156, 0x0156, - 0x0158, 0x0158, - 0x015a, 0x015a, - 0x015c, 0x015c, - 0x015e, 0x015e, - 0x0160, 0x0160, - 0x0162, 0x0162, - 0x0164, 0x0164, - 0x0166, 0x0166, - 0x0168, 0x0168, - 0x016a, 0x016a, - 0x016c, 0x016c, - 0x016e, 0x016e, - 0x0170, 0x0170, - 0x0172, 0x0172, - 0x0174, 0x0174, - 0x0176, 0x0176, - 0x0178, 0x0179, - 0x017b, 0x017b, - 0x017d, 0x017d, - 0x0181, 0x0182, - 0x0184, 0x0184, - 0x0186, 0x0187, - 0x0189, 0x018b, - 0x018e, 0x0191, - 0x0193, 0x0194, - 0x0196, 0x0198, - 0x019c, 0x019d, - 0x019f, 0x01a0, - 0x01a2, 0x01a2, - 0x01a4, 0x01a4, - 0x01a6, 0x01a7, - 0x01a9, 0x01a9, - 0x01ac, 0x01ac, - 0x01ae, 0x01af, - 0x01b1, 0x01b3, - 0x01b5, 0x01b5, - 0x01b7, 0x01b8, - 0x01bc, 0x01bc, - 0x01c4, 0x01c5, - 0x01c7, 0x01c8, - 0x01ca, 0x01cb, - 0x01cd, 0x01cd, - 0x01cf, 0x01cf, - 0x01d1, 0x01d1, - 0x01d3, 0x01d3, - 0x01d5, 0x01d5, - 0x01d7, 0x01d7, - 0x01d9, 0x01d9, - 0x01db, 0x01db, - 0x01de, 0x01de, - 0x01e0, 0x01e0, - 0x01e2, 0x01e2, - 0x01e4, 0x01e4, - 0x01e6, 0x01e6, - 0x01e8, 0x01e8, - 0x01ea, 0x01ea, - 0x01ec, 0x01ec, - 0x01ee, 0x01ee, - 0x01f1, 0x01f2, - 0x01f4, 0x01f4, - 0x01f6, 0x01f8, - 0x01fa, 0x01fa, - 0x01fc, 0x01fc, - 0x01fe, 0x01fe, - 0x0200, 0x0200, - 0x0202, 0x0202, - 0x0204, 0x0204, - 0x0206, 0x0206, - 0x0208, 0x0208, - 0x020a, 0x020a, - 0x020c, 0x020c, - 0x020e, 0x020e, - 0x0210, 0x0210, - 0x0212, 0x0212, - 0x0214, 0x0214, - 0x0216, 0x0216, - 0x0218, 0x0218, - 0x021a, 0x021a, - 0x021c, 0x021c, - 0x021e, 0x021e, - 0x0220, 0x0220, - 0x0222, 0x0222, - 0x0224, 0x0224, - 0x0226, 0x0226, - 0x0228, 0x0228, - 0x022a, 0x022a, - 0x022c, 0x022c, - 0x022e, 0x022e, - 0x0230, 0x0230, - 0x0232, 0x0232, - 0x023a, 0x023b, - 0x023d, 0x023e, - 0x0241, 0x0241, - 0x0243, 0x0246, - 0x0248, 0x0248, - 0x024a, 0x024a, - 0x024c, 0x024c, - 0x024e, 0x024e, - 0x0370, 0x0370, - 0x0372, 0x0372, - 0x0376, 0x0376, - 0x037f, 0x037f, - 0x0386, 0x0386, - 0x0388, 0x038a, - 0x038c, 0x038c, - 0x038e, 0x038f, - 0x0391, 0x03a1, - 0x03a3, 0x03ab, - 0x03cf, 0x03cf, - 0x03d8, 0x03d8, - 0x03da, 0x03da, - 0x03dc, 0x03dc, - 0x03de, 0x03de, - 0x03e0, 0x03e0, - 0x03e2, 0x03e2, - 0x03e4, 0x03e4, - 0x03e6, 0x03e6, - 0x03e8, 0x03e8, - 0x03ea, 0x03ea, - 0x03ec, 0x03ec, - 0x03ee, 0x03ee, - 0x03f4, 0x03f4, - 0x03f7, 0x03f7, - 0x03f9, 0x03fa, - 0x03fd, 0x042f, - 0x0460, 0x0460, - 0x0462, 0x0462, - 0x0464, 0x0464, - 0x0466, 0x0466, - 0x0468, 0x0468, - 0x046a, 0x046a, - 0x046c, 0x046c, - 0x046e, 0x046e, - 0x0470, 0x0470, - 0x0472, 0x0472, - 0x0474, 0x0474, - 0x0476, 0x0476, - 0x0478, 0x0478, - 0x047a, 0x047a, - 0x047c, 0x047c, - 0x047e, 0x047e, - 0x0480, 0x0480, - 0x048a, 0x048a, - 0x048c, 0x048c, - 0x048e, 0x048e, - 0x0490, 0x0490, - 0x0492, 0x0492, - 0x0494, 0x0494, - 0x0496, 0x0496, - 0x0498, 0x0498, - 0x049a, 0x049a, - 0x049c, 0x049c, - 0x049e, 0x049e, - 0x04a0, 0x04a0, - 0x04a2, 0x04a2, - 0x04a4, 0x04a4, - 0x04a6, 0x04a6, - 0x04a8, 0x04a8, - 0x04aa, 0x04aa, - 0x04ac, 0x04ac, - 0x04ae, 0x04ae, - 0x04b0, 0x04b0, - 0x04b2, 0x04b2, - 0x04b4, 0x04b4, - 0x04b6, 0x04b6, - 0x04b8, 0x04b8, - 0x04ba, 0x04ba, - 0x04bc, 0x04bc, - 0x04be, 0x04be, - 0x04c0, 0x04c1, - 0x04c3, 0x04c3, - 0x04c5, 0x04c5, - 0x04c7, 0x04c7, - 0x04c9, 0x04c9, - 0x04cb, 0x04cb, - 0x04cd, 0x04cd, - 0x04d0, 0x04d0, - 0x04d2, 0x04d2, - 0x04d4, 0x04d4, - 0x04d6, 0x04d6, - 0x04d8, 0x04d8, - 0x04da, 0x04da, - 0x04dc, 0x04dc, - 0x04de, 0x04de, - 0x04e0, 0x04e0, - 0x04e2, 0x04e2, - 0x04e4, 0x04e4, - 0x04e6, 0x04e6, - 0x04e8, 0x04e8, - 0x04ea, 0x04ea, - 0x04ec, 0x04ec, - 0x04ee, 0x04ee, - 0x04f0, 0x04f0, - 0x04f2, 0x04f2, - 0x04f4, 0x04f4, - 0x04f6, 0x04f6, - 0x04f8, 0x04f8, - 0x04fa, 0x04fa, - 0x04fc, 0x04fc, - 0x04fe, 0x04fe, - 0x0500, 0x0500, - 0x0502, 0x0502, - 0x0504, 0x0504, - 0x0506, 0x0506, - 0x0508, 0x0508, - 0x050a, 0x050a, - 0x050c, 0x050c, - 0x050e, 0x050e, - 0x0510, 0x0510, - 0x0512, 0x0512, - 0x0514, 0x0514, - 0x0516, 0x0516, - 0x0518, 0x0518, - 0x051a, 0x051a, - 0x051c, 0x051c, - 0x051e, 0x051e, - 0x0520, 0x0520, - 0x0522, 0x0522, - 0x0524, 0x0524, - 0x0526, 0x0526, - 0x0528, 0x0528, - 0x052a, 0x052a, - 0x052c, 0x052c, - 0x052e, 0x052e, - 0x0531, 0x0556, - 0x10a0, 0x10c5, - 0x10c7, 0x10c7, - 0x10cd, 0x10cd, - 0x13a0, 0x13f5, - 0x1e00, 0x1e00, - 0x1e02, 0x1e02, - 0x1e04, 0x1e04, - 0x1e06, 0x1e06, - 0x1e08, 0x1e08, - 0x1e0a, 0x1e0a, - 0x1e0c, 0x1e0c, - 0x1e0e, 0x1e0e, - 0x1e10, 0x1e10, - 0x1e12, 0x1e12, - 0x1e14, 0x1e14, - 0x1e16, 0x1e16, - 0x1e18, 0x1e18, - 0x1e1a, 0x1e1a, - 0x1e1c, 0x1e1c, - 0x1e1e, 0x1e1e, - 0x1e20, 0x1e20, - 0x1e22, 0x1e22, - 0x1e24, 0x1e24, - 0x1e26, 0x1e26, - 0x1e28, 0x1e28, - 0x1e2a, 0x1e2a, - 0x1e2c, 0x1e2c, - 0x1e2e, 0x1e2e, - 0x1e30, 0x1e30, - 0x1e32, 0x1e32, - 0x1e34, 0x1e34, - 0x1e36, 0x1e36, - 0x1e38, 0x1e38, - 0x1e3a, 0x1e3a, - 0x1e3c, 0x1e3c, - 0x1e3e, 0x1e3e, - 0x1e40, 0x1e40, - 0x1e42, 0x1e42, - 0x1e44, 0x1e44, - 0x1e46, 0x1e46, - 0x1e48, 0x1e48, - 0x1e4a, 0x1e4a, - 0x1e4c, 0x1e4c, - 0x1e4e, 0x1e4e, - 0x1e50, 0x1e50, - 0x1e52, 0x1e52, - 0x1e54, 0x1e54, - 0x1e56, 0x1e56, - 0x1e58, 0x1e58, - 0x1e5a, 0x1e5a, - 0x1e5c, 0x1e5c, - 0x1e5e, 0x1e5e, - 0x1e60, 0x1e60, - 0x1e62, 0x1e62, - 0x1e64, 0x1e64, - 0x1e66, 0x1e66, - 0x1e68, 0x1e68, - 0x1e6a, 0x1e6a, - 0x1e6c, 0x1e6c, - 0x1e6e, 0x1e6e, - 0x1e70, 0x1e70, - 0x1e72, 0x1e72, - 0x1e74, 0x1e74, - 0x1e76, 0x1e76, - 0x1e78, 0x1e78, - 0x1e7a, 0x1e7a, - 0x1e7c, 0x1e7c, - 0x1e7e, 0x1e7e, - 0x1e80, 0x1e80, - 0x1e82, 0x1e82, - 0x1e84, 0x1e84, - 0x1e86, 0x1e86, - 0x1e88, 0x1e88, - 0x1e8a, 0x1e8a, - 0x1e8c, 0x1e8c, - 0x1e8e, 0x1e8e, - 0x1e90, 0x1e90, - 0x1e92, 0x1e92, - 0x1e94, 0x1e94, - 0x1e9e, 0x1e9e, - 0x1ea0, 0x1ea0, - 0x1ea2, 0x1ea2, - 0x1ea4, 0x1ea4, - 0x1ea6, 0x1ea6, - 0x1ea8, 0x1ea8, - 0x1eaa, 0x1eaa, - 0x1eac, 0x1eac, - 0x1eae, 0x1eae, - 0x1eb0, 0x1eb0, - 0x1eb2, 0x1eb2, - 0x1eb4, 0x1eb4, - 0x1eb6, 0x1eb6, - 0x1eb8, 0x1eb8, - 0x1eba, 0x1eba, - 0x1ebc, 0x1ebc, - 0x1ebe, 0x1ebe, - 0x1ec0, 0x1ec0, - 0x1ec2, 0x1ec2, - 0x1ec4, 0x1ec4, - 0x1ec6, 0x1ec6, - 0x1ec8, 0x1ec8, - 0x1eca, 0x1eca, - 0x1ecc, 0x1ecc, - 0x1ece, 0x1ece, - 0x1ed0, 0x1ed0, - 0x1ed2, 0x1ed2, - 0x1ed4, 0x1ed4, - 0x1ed6, 0x1ed6, - 0x1ed8, 0x1ed8, - 0x1eda, 0x1eda, - 0x1edc, 0x1edc, - 0x1ede, 0x1ede, - 0x1ee0, 0x1ee0, - 0x1ee2, 0x1ee2, - 0x1ee4, 0x1ee4, - 0x1ee6, 0x1ee6, - 0x1ee8, 0x1ee8, - 0x1eea, 0x1eea, - 0x1eec, 0x1eec, - 0x1eee, 0x1eee, - 0x1ef0, 0x1ef0, - 0x1ef2, 0x1ef2, - 0x1ef4, 0x1ef4, - 0x1ef6, 0x1ef6, - 0x1ef8, 0x1ef8, - 0x1efa, 0x1efa, - 0x1efc, 0x1efc, - 0x1efe, 0x1efe, - 0x1f08, 0x1f0f, - 0x1f18, 0x1f1d, - 0x1f28, 0x1f2f, - 0x1f38, 0x1f3f, - 0x1f48, 0x1f4d, - 0x1f59, 0x1f59, - 0x1f5b, 0x1f5b, - 0x1f5d, 0x1f5d, - 0x1f5f, 0x1f5f, - 0x1f68, 0x1f6f, - 0x1f88, 0x1f8f, - 0x1f98, 0x1f9f, - 0x1fa8, 0x1faf, - 0x1fb8, 0x1fbc, - 0x1fc8, 0x1fcc, - 0x1fd8, 0x1fdb, - 0x1fe8, 0x1fec, - 0x1ff8, 0x1ffc, - 0x2126, 0x2126, - 0x212a, 0x212b, - 0x2132, 0x2132, - 0x2160, 0x216f, - 0x2183, 0x2183, - 0x24b6, 0x24cf, - 0x2c00, 0x2c2e, - 0x2c60, 0x2c60, - 0x2c62, 0x2c64, - 0x2c67, 0x2c67, - 0x2c69, 0x2c69, - 0x2c6b, 0x2c6b, - 0x2c6d, 0x2c70, - 0x2c72, 0x2c72, - 0x2c75, 0x2c75, - 0x2c7e, 0x2c80, - 0x2c82, 0x2c82, - 0x2c84, 0x2c84, - 0x2c86, 0x2c86, - 0x2c88, 0x2c88, - 0x2c8a, 0x2c8a, - 0x2c8c, 0x2c8c, - 0x2c8e, 0x2c8e, - 0x2c90, 0x2c90, - 0x2c92, 0x2c92, - 0x2c94, 0x2c94, - 0x2c96, 0x2c96, - 0x2c98, 0x2c98, - 0x2c9a, 0x2c9a, - 0x2c9c, 0x2c9c, - 0x2c9e, 0x2c9e, - 0x2ca0, 0x2ca0, - 0x2ca2, 0x2ca2, - 0x2ca4, 0x2ca4, - 0x2ca6, 0x2ca6, - 0x2ca8, 0x2ca8, - 0x2caa, 0x2caa, - 0x2cac, 0x2cac, - 0x2cae, 0x2cae, - 0x2cb0, 0x2cb0, - 0x2cb2, 0x2cb2, - 0x2cb4, 0x2cb4, - 0x2cb6, 0x2cb6, - 0x2cb8, 0x2cb8, - 0x2cba, 0x2cba, - 0x2cbc, 0x2cbc, - 0x2cbe, 0x2cbe, - 0x2cc0, 0x2cc0, - 0x2cc2, 0x2cc2, - 0x2cc4, 0x2cc4, - 0x2cc6, 0x2cc6, - 0x2cc8, 0x2cc8, - 0x2cca, 0x2cca, - 0x2ccc, 0x2ccc, - 0x2cce, 0x2cce, - 0x2cd0, 0x2cd0, - 0x2cd2, 0x2cd2, - 0x2cd4, 0x2cd4, - 0x2cd6, 0x2cd6, - 0x2cd8, 0x2cd8, - 0x2cda, 0x2cda, - 0x2cdc, 0x2cdc, - 0x2cde, 0x2cde, - 0x2ce0, 0x2ce0, - 0x2ce2, 0x2ce2, - 0x2ceb, 0x2ceb, - 0x2ced, 0x2ced, - 0x2cf2, 0x2cf2, - 0xa640, 0xa640, - 0xa642, 0xa642, - 0xa644, 0xa644, - 0xa646, 0xa646, - 0xa648, 0xa648, - 0xa64a, 0xa64a, - 0xa64c, 0xa64c, - 0xa64e, 0xa64e, - 0xa650, 0xa650, - 0xa652, 0xa652, - 0xa654, 0xa654, - 0xa656, 0xa656, - 0xa658, 0xa658, - 0xa65a, 0xa65a, - 0xa65c, 0xa65c, - 0xa65e, 0xa65e, - 0xa660, 0xa660, - 0xa662, 0xa662, - 0xa664, 0xa664, - 0xa666, 0xa666, - 0xa668, 0xa668, - 0xa66a, 0xa66a, - 0xa66c, 0xa66c, - 0xa680, 0xa680, - 0xa682, 0xa682, - 0xa684, 0xa684, - 0xa686, 0xa686, - 0xa688, 0xa688, - 0xa68a, 0xa68a, - 0xa68c, 0xa68c, - 0xa68e, 0xa68e, - 0xa690, 0xa690, - 0xa692, 0xa692, - 0xa694, 0xa694, - 0xa696, 0xa696, - 0xa698, 0xa698, - 0xa69a, 0xa69a, - 0xa722, 0xa722, - 0xa724, 0xa724, - 0xa726, 0xa726, - 0xa728, 0xa728, - 0xa72a, 0xa72a, - 0xa72c, 0xa72c, - 0xa72e, 0xa72e, - 0xa732, 0xa732, - 0xa734, 0xa734, - 0xa736, 0xa736, - 0xa738, 0xa738, - 0xa73a, 0xa73a, - 0xa73c, 0xa73c, - 0xa73e, 0xa73e, - 0xa740, 0xa740, - 0xa742, 0xa742, - 0xa744, 0xa744, - 0xa746, 0xa746, - 0xa748, 0xa748, - 0xa74a, 0xa74a, - 0xa74c, 0xa74c, - 0xa74e, 0xa74e, - 0xa750, 0xa750, - 0xa752, 0xa752, - 0xa754, 0xa754, - 0xa756, 0xa756, - 0xa758, 0xa758, - 0xa75a, 0xa75a, - 0xa75c, 0xa75c, - 0xa75e, 0xa75e, - 0xa760, 0xa760, - 0xa762, 0xa762, - 0xa764, 0xa764, - 0xa766, 0xa766, - 0xa768, 0xa768, - 0xa76a, 0xa76a, - 0xa76c, 0xa76c, - 0xa76e, 0xa76e, - 0xa779, 0xa779, - 0xa77b, 0xa77b, - 0xa77d, 0xa77e, - 0xa780, 0xa780, - 0xa782, 0xa782, - 0xa784, 0xa784, - 0xa786, 0xa786, - 0xa78b, 0xa78b, - 0xa78d, 0xa78d, - 0xa790, 0xa790, - 0xa792, 0xa792, - 0xa796, 0xa796, - 0xa798, 0xa798, - 0xa79a, 0xa79a, - 0xa79c, 0xa79c, - 0xa79e, 0xa79e, - 0xa7a0, 0xa7a0, - 0xa7a2, 0xa7a2, - 0xa7a4, 0xa7a4, - 0xa7a6, 0xa7a6, - 0xa7a8, 0xa7a8, - 0xa7aa, 0xa7ae, - 0xa7b0, 0xa7b4, - 0xa7b6, 0xa7b6, - 0xff21, 0xff3a, - 0x10400, 0x10427, - 0x104b0, 0x104d3, - 0x10c80, 0x10cb2, - 0x118a0, 0x118bf, - 0x1e900, 0x1e921, -}; /* CR_Changes_When_Lowercased */ - -/* 'Changes_When_Uppercased': Derived Property */ -static const OnigCodePoint CR_Changes_When_Uppercased[] = { - 607, - 0x0061, 0x007a, - 0x00b5, 0x00b5, - 0x00df, 0x00f6, - 0x00f8, 0x00ff, - 0x0101, 0x0101, - 0x0103, 0x0103, - 0x0105, 0x0105, - 0x0107, 0x0107, - 0x0109, 0x0109, - 0x010b, 0x010b, - 0x010d, 0x010d, - 0x010f, 0x010f, - 0x0111, 0x0111, - 0x0113, 0x0113, - 0x0115, 0x0115, - 0x0117, 0x0117, - 0x0119, 0x0119, - 0x011b, 0x011b, - 0x011d, 0x011d, - 0x011f, 0x011f, - 0x0121, 0x0121, - 0x0123, 0x0123, - 0x0125, 0x0125, - 0x0127, 0x0127, - 0x0129, 0x0129, - 0x012b, 0x012b, - 0x012d, 0x012d, - 0x012f, 0x012f, - 0x0131, 0x0131, - 0x0133, 0x0133, - 0x0135, 0x0135, - 0x0137, 0x0137, - 0x013a, 0x013a, - 0x013c, 0x013c, - 0x013e, 0x013e, - 0x0140, 0x0140, - 0x0142, 0x0142, - 0x0144, 0x0144, - 0x0146, 0x0146, - 0x0148, 0x0149, - 0x014b, 0x014b, - 0x014d, 0x014d, - 0x014f, 0x014f, - 0x0151, 0x0151, - 0x0153, 0x0153, - 0x0155, 0x0155, - 0x0157, 0x0157, - 0x0159, 0x0159, - 0x015b, 0x015b, - 0x015d, 0x015d, - 0x015f, 0x015f, - 0x0161, 0x0161, - 0x0163, 0x0163, - 0x0165, 0x0165, - 0x0167, 0x0167, - 0x0169, 0x0169, - 0x016b, 0x016b, - 0x016d, 0x016d, - 0x016f, 0x016f, - 0x0171, 0x0171, - 0x0173, 0x0173, - 0x0175, 0x0175, - 0x0177, 0x0177, - 0x017a, 0x017a, - 0x017c, 0x017c, - 0x017e, 0x0180, - 0x0183, 0x0183, - 0x0185, 0x0185, - 0x0188, 0x0188, - 0x018c, 0x018c, - 0x0192, 0x0192, - 0x0195, 0x0195, - 0x0199, 0x019a, - 0x019e, 0x019e, - 0x01a1, 0x01a1, - 0x01a3, 0x01a3, - 0x01a5, 0x01a5, - 0x01a8, 0x01a8, - 0x01ad, 0x01ad, - 0x01b0, 0x01b0, - 0x01b4, 0x01b4, - 0x01b6, 0x01b6, - 0x01b9, 0x01b9, - 0x01bd, 0x01bd, - 0x01bf, 0x01bf, - 0x01c5, 0x01c6, - 0x01c8, 0x01c9, - 0x01cb, 0x01cc, - 0x01ce, 0x01ce, - 0x01d0, 0x01d0, - 0x01d2, 0x01d2, - 0x01d4, 0x01d4, - 0x01d6, 0x01d6, - 0x01d8, 0x01d8, - 0x01da, 0x01da, - 0x01dc, 0x01dd, - 0x01df, 0x01df, - 0x01e1, 0x01e1, - 0x01e3, 0x01e3, - 0x01e5, 0x01e5, - 0x01e7, 0x01e7, - 0x01e9, 0x01e9, - 0x01eb, 0x01eb, - 0x01ed, 0x01ed, - 0x01ef, 0x01f0, - 0x01f2, 0x01f3, - 0x01f5, 0x01f5, - 0x01f9, 0x01f9, - 0x01fb, 0x01fb, - 0x01fd, 0x01fd, - 0x01ff, 0x01ff, - 0x0201, 0x0201, - 0x0203, 0x0203, - 0x0205, 0x0205, - 0x0207, 0x0207, - 0x0209, 0x0209, - 0x020b, 0x020b, - 0x020d, 0x020d, - 0x020f, 0x020f, - 0x0211, 0x0211, - 0x0213, 0x0213, - 0x0215, 0x0215, - 0x0217, 0x0217, - 0x0219, 0x0219, - 0x021b, 0x021b, - 0x021d, 0x021d, - 0x021f, 0x021f, - 0x0223, 0x0223, - 0x0225, 0x0225, - 0x0227, 0x0227, - 0x0229, 0x0229, - 0x022b, 0x022b, - 0x022d, 0x022d, - 0x022f, 0x022f, - 0x0231, 0x0231, - 0x0233, 0x0233, - 0x023c, 0x023c, - 0x023f, 0x0240, - 0x0242, 0x0242, - 0x0247, 0x0247, - 0x0249, 0x0249, - 0x024b, 0x024b, - 0x024d, 0x024d, - 0x024f, 0x0254, - 0x0256, 0x0257, - 0x0259, 0x0259, - 0x025b, 0x025c, - 0x0260, 0x0261, - 0x0263, 0x0263, - 0x0265, 0x0266, - 0x0268, 0x026c, - 0x026f, 0x026f, - 0x0271, 0x0272, - 0x0275, 0x0275, - 0x027d, 0x027d, - 0x0280, 0x0280, - 0x0283, 0x0283, - 0x0287, 0x028c, - 0x0292, 0x0292, - 0x029d, 0x029e, - 0x0345, 0x0345, - 0x0371, 0x0371, - 0x0373, 0x0373, - 0x0377, 0x0377, - 0x037b, 0x037d, - 0x0390, 0x0390, - 0x03ac, 0x03ce, - 0x03d0, 0x03d1, - 0x03d5, 0x03d7, - 0x03d9, 0x03d9, - 0x03db, 0x03db, - 0x03dd, 0x03dd, - 0x03df, 0x03df, - 0x03e1, 0x03e1, - 0x03e3, 0x03e3, - 0x03e5, 0x03e5, - 0x03e7, 0x03e7, - 0x03e9, 0x03e9, - 0x03eb, 0x03eb, - 0x03ed, 0x03ed, - 0x03ef, 0x03f3, - 0x03f5, 0x03f5, - 0x03f8, 0x03f8, - 0x03fb, 0x03fb, - 0x0430, 0x045f, - 0x0461, 0x0461, - 0x0463, 0x0463, - 0x0465, 0x0465, - 0x0467, 0x0467, - 0x0469, 0x0469, - 0x046b, 0x046b, - 0x046d, 0x046d, - 0x046f, 0x046f, - 0x0471, 0x0471, - 0x0473, 0x0473, - 0x0475, 0x0475, - 0x0477, 0x0477, - 0x0479, 0x0479, - 0x047b, 0x047b, - 0x047d, 0x047d, - 0x047f, 0x047f, - 0x0481, 0x0481, - 0x048b, 0x048b, - 0x048d, 0x048d, - 0x048f, 0x048f, - 0x0491, 0x0491, - 0x0493, 0x0493, - 0x0495, 0x0495, - 0x0497, 0x0497, - 0x0499, 0x0499, - 0x049b, 0x049b, - 0x049d, 0x049d, - 0x049f, 0x049f, - 0x04a1, 0x04a1, - 0x04a3, 0x04a3, - 0x04a5, 0x04a5, - 0x04a7, 0x04a7, - 0x04a9, 0x04a9, - 0x04ab, 0x04ab, - 0x04ad, 0x04ad, - 0x04af, 0x04af, - 0x04b1, 0x04b1, - 0x04b3, 0x04b3, - 0x04b5, 0x04b5, - 0x04b7, 0x04b7, - 0x04b9, 0x04b9, - 0x04bb, 0x04bb, - 0x04bd, 0x04bd, - 0x04bf, 0x04bf, - 0x04c2, 0x04c2, - 0x04c4, 0x04c4, - 0x04c6, 0x04c6, - 0x04c8, 0x04c8, - 0x04ca, 0x04ca, - 0x04cc, 0x04cc, - 0x04ce, 0x04cf, - 0x04d1, 0x04d1, - 0x04d3, 0x04d3, - 0x04d5, 0x04d5, - 0x04d7, 0x04d7, - 0x04d9, 0x04d9, - 0x04db, 0x04db, - 0x04dd, 0x04dd, - 0x04df, 0x04df, - 0x04e1, 0x04e1, - 0x04e3, 0x04e3, - 0x04e5, 0x04e5, - 0x04e7, 0x04e7, - 0x04e9, 0x04e9, - 0x04eb, 0x04eb, - 0x04ed, 0x04ed, - 0x04ef, 0x04ef, - 0x04f1, 0x04f1, - 0x04f3, 0x04f3, - 0x04f5, 0x04f5, - 0x04f7, 0x04f7, - 0x04f9, 0x04f9, - 0x04fb, 0x04fb, - 0x04fd, 0x04fd, - 0x04ff, 0x04ff, - 0x0501, 0x0501, - 0x0503, 0x0503, - 0x0505, 0x0505, - 0x0507, 0x0507, - 0x0509, 0x0509, - 0x050b, 0x050b, - 0x050d, 0x050d, - 0x050f, 0x050f, - 0x0511, 0x0511, - 0x0513, 0x0513, - 0x0515, 0x0515, - 0x0517, 0x0517, - 0x0519, 0x0519, - 0x051b, 0x051b, - 0x051d, 0x051d, - 0x051f, 0x051f, - 0x0521, 0x0521, - 0x0523, 0x0523, - 0x0525, 0x0525, - 0x0527, 0x0527, - 0x0529, 0x0529, - 0x052b, 0x052b, - 0x052d, 0x052d, - 0x052f, 0x052f, - 0x0561, 0x0587, - 0x13f8, 0x13fd, - 0x1c80, 0x1c88, - 0x1d79, 0x1d79, - 0x1d7d, 0x1d7d, - 0x1e01, 0x1e01, - 0x1e03, 0x1e03, - 0x1e05, 0x1e05, - 0x1e07, 0x1e07, - 0x1e09, 0x1e09, - 0x1e0b, 0x1e0b, - 0x1e0d, 0x1e0d, - 0x1e0f, 0x1e0f, - 0x1e11, 0x1e11, - 0x1e13, 0x1e13, - 0x1e15, 0x1e15, - 0x1e17, 0x1e17, - 0x1e19, 0x1e19, - 0x1e1b, 0x1e1b, - 0x1e1d, 0x1e1d, - 0x1e1f, 0x1e1f, - 0x1e21, 0x1e21, - 0x1e23, 0x1e23, - 0x1e25, 0x1e25, - 0x1e27, 0x1e27, - 0x1e29, 0x1e29, - 0x1e2b, 0x1e2b, - 0x1e2d, 0x1e2d, - 0x1e2f, 0x1e2f, - 0x1e31, 0x1e31, - 0x1e33, 0x1e33, - 0x1e35, 0x1e35, - 0x1e37, 0x1e37, - 0x1e39, 0x1e39, - 0x1e3b, 0x1e3b, - 0x1e3d, 0x1e3d, - 0x1e3f, 0x1e3f, - 0x1e41, 0x1e41, - 0x1e43, 0x1e43, - 0x1e45, 0x1e45, - 0x1e47, 0x1e47, - 0x1e49, 0x1e49, - 0x1e4b, 0x1e4b, - 0x1e4d, 0x1e4d, - 0x1e4f, 0x1e4f, - 0x1e51, 0x1e51, - 0x1e53, 0x1e53, - 0x1e55, 0x1e55, - 0x1e57, 0x1e57, - 0x1e59, 0x1e59, - 0x1e5b, 0x1e5b, - 0x1e5d, 0x1e5d, - 0x1e5f, 0x1e5f, - 0x1e61, 0x1e61, - 0x1e63, 0x1e63, - 0x1e65, 0x1e65, - 0x1e67, 0x1e67, - 0x1e69, 0x1e69, - 0x1e6b, 0x1e6b, - 0x1e6d, 0x1e6d, - 0x1e6f, 0x1e6f, - 0x1e71, 0x1e71, - 0x1e73, 0x1e73, - 0x1e75, 0x1e75, - 0x1e77, 0x1e77, - 0x1e79, 0x1e79, - 0x1e7b, 0x1e7b, - 0x1e7d, 0x1e7d, - 0x1e7f, 0x1e7f, - 0x1e81, 0x1e81, - 0x1e83, 0x1e83, - 0x1e85, 0x1e85, - 0x1e87, 0x1e87, - 0x1e89, 0x1e89, - 0x1e8b, 0x1e8b, - 0x1e8d, 0x1e8d, - 0x1e8f, 0x1e8f, - 0x1e91, 0x1e91, - 0x1e93, 0x1e93, - 0x1e95, 0x1e9b, - 0x1ea1, 0x1ea1, - 0x1ea3, 0x1ea3, - 0x1ea5, 0x1ea5, - 0x1ea7, 0x1ea7, - 0x1ea9, 0x1ea9, - 0x1eab, 0x1eab, - 0x1ead, 0x1ead, - 0x1eaf, 0x1eaf, - 0x1eb1, 0x1eb1, - 0x1eb3, 0x1eb3, - 0x1eb5, 0x1eb5, - 0x1eb7, 0x1eb7, - 0x1eb9, 0x1eb9, - 0x1ebb, 0x1ebb, - 0x1ebd, 0x1ebd, - 0x1ebf, 0x1ebf, - 0x1ec1, 0x1ec1, - 0x1ec3, 0x1ec3, - 0x1ec5, 0x1ec5, - 0x1ec7, 0x1ec7, - 0x1ec9, 0x1ec9, - 0x1ecb, 0x1ecb, - 0x1ecd, 0x1ecd, - 0x1ecf, 0x1ecf, - 0x1ed1, 0x1ed1, - 0x1ed3, 0x1ed3, - 0x1ed5, 0x1ed5, - 0x1ed7, 0x1ed7, - 0x1ed9, 0x1ed9, - 0x1edb, 0x1edb, - 0x1edd, 0x1edd, - 0x1edf, 0x1edf, - 0x1ee1, 0x1ee1, - 0x1ee3, 0x1ee3, - 0x1ee5, 0x1ee5, - 0x1ee7, 0x1ee7, - 0x1ee9, 0x1ee9, - 0x1eeb, 0x1eeb, - 0x1eed, 0x1eed, - 0x1eef, 0x1eef, - 0x1ef1, 0x1ef1, - 0x1ef3, 0x1ef3, - 0x1ef5, 0x1ef5, - 0x1ef7, 0x1ef7, - 0x1ef9, 0x1ef9, - 0x1efb, 0x1efb, - 0x1efd, 0x1efd, - 0x1eff, 0x1f07, - 0x1f10, 0x1f15, - 0x1f20, 0x1f27, - 0x1f30, 0x1f37, - 0x1f40, 0x1f45, - 0x1f50, 0x1f57, - 0x1f60, 0x1f67, - 0x1f70, 0x1f7d, - 0x1f80, 0x1fb4, - 0x1fb6, 0x1fb7, - 0x1fbc, 0x1fbc, - 0x1fbe, 0x1fbe, - 0x1fc2, 0x1fc4, - 0x1fc6, 0x1fc7, - 0x1fcc, 0x1fcc, - 0x1fd0, 0x1fd3, - 0x1fd6, 0x1fd7, - 0x1fe0, 0x1fe7, - 0x1ff2, 0x1ff4, - 0x1ff6, 0x1ff7, - 0x1ffc, 0x1ffc, - 0x214e, 0x214e, - 0x2170, 0x217f, - 0x2184, 0x2184, - 0x24d0, 0x24e9, - 0x2c30, 0x2c5e, - 0x2c61, 0x2c61, - 0x2c65, 0x2c66, - 0x2c68, 0x2c68, - 0x2c6a, 0x2c6a, - 0x2c6c, 0x2c6c, - 0x2c73, 0x2c73, - 0x2c76, 0x2c76, - 0x2c81, 0x2c81, - 0x2c83, 0x2c83, - 0x2c85, 0x2c85, - 0x2c87, 0x2c87, - 0x2c89, 0x2c89, - 0x2c8b, 0x2c8b, - 0x2c8d, 0x2c8d, - 0x2c8f, 0x2c8f, - 0x2c91, 0x2c91, - 0x2c93, 0x2c93, - 0x2c95, 0x2c95, - 0x2c97, 0x2c97, - 0x2c99, 0x2c99, - 0x2c9b, 0x2c9b, - 0x2c9d, 0x2c9d, - 0x2c9f, 0x2c9f, - 0x2ca1, 0x2ca1, - 0x2ca3, 0x2ca3, - 0x2ca5, 0x2ca5, - 0x2ca7, 0x2ca7, - 0x2ca9, 0x2ca9, - 0x2cab, 0x2cab, - 0x2cad, 0x2cad, - 0x2caf, 0x2caf, - 0x2cb1, 0x2cb1, - 0x2cb3, 0x2cb3, - 0x2cb5, 0x2cb5, - 0x2cb7, 0x2cb7, - 0x2cb9, 0x2cb9, - 0x2cbb, 0x2cbb, - 0x2cbd, 0x2cbd, - 0x2cbf, 0x2cbf, - 0x2cc1, 0x2cc1, - 0x2cc3, 0x2cc3, - 0x2cc5, 0x2cc5, - 0x2cc7, 0x2cc7, - 0x2cc9, 0x2cc9, - 0x2ccb, 0x2ccb, - 0x2ccd, 0x2ccd, - 0x2ccf, 0x2ccf, - 0x2cd1, 0x2cd1, - 0x2cd3, 0x2cd3, - 0x2cd5, 0x2cd5, - 0x2cd7, 0x2cd7, - 0x2cd9, 0x2cd9, - 0x2cdb, 0x2cdb, - 0x2cdd, 0x2cdd, - 0x2cdf, 0x2cdf, - 0x2ce1, 0x2ce1, - 0x2ce3, 0x2ce3, - 0x2cec, 0x2cec, - 0x2cee, 0x2cee, - 0x2cf3, 0x2cf3, - 0x2d00, 0x2d25, - 0x2d27, 0x2d27, - 0x2d2d, 0x2d2d, - 0xa641, 0xa641, - 0xa643, 0xa643, - 0xa645, 0xa645, - 0xa647, 0xa647, - 0xa649, 0xa649, - 0xa64b, 0xa64b, - 0xa64d, 0xa64d, - 0xa64f, 0xa64f, - 0xa651, 0xa651, - 0xa653, 0xa653, - 0xa655, 0xa655, - 0xa657, 0xa657, - 0xa659, 0xa659, - 0xa65b, 0xa65b, - 0xa65d, 0xa65d, - 0xa65f, 0xa65f, - 0xa661, 0xa661, - 0xa663, 0xa663, - 0xa665, 0xa665, - 0xa667, 0xa667, - 0xa669, 0xa669, - 0xa66b, 0xa66b, - 0xa66d, 0xa66d, - 0xa681, 0xa681, - 0xa683, 0xa683, - 0xa685, 0xa685, - 0xa687, 0xa687, - 0xa689, 0xa689, - 0xa68b, 0xa68b, - 0xa68d, 0xa68d, - 0xa68f, 0xa68f, - 0xa691, 0xa691, - 0xa693, 0xa693, - 0xa695, 0xa695, - 0xa697, 0xa697, - 0xa699, 0xa699, - 0xa69b, 0xa69b, - 0xa723, 0xa723, - 0xa725, 0xa725, - 0xa727, 0xa727, - 0xa729, 0xa729, - 0xa72b, 0xa72b, - 0xa72d, 0xa72d, - 0xa72f, 0xa72f, - 0xa733, 0xa733, - 0xa735, 0xa735, - 0xa737, 0xa737, - 0xa739, 0xa739, - 0xa73b, 0xa73b, - 0xa73d, 0xa73d, - 0xa73f, 0xa73f, - 0xa741, 0xa741, - 0xa743, 0xa743, - 0xa745, 0xa745, - 0xa747, 0xa747, - 0xa749, 0xa749, - 0xa74b, 0xa74b, - 0xa74d, 0xa74d, - 0xa74f, 0xa74f, - 0xa751, 0xa751, - 0xa753, 0xa753, - 0xa755, 0xa755, - 0xa757, 0xa757, - 0xa759, 0xa759, - 0xa75b, 0xa75b, - 0xa75d, 0xa75d, - 0xa75f, 0xa75f, - 0xa761, 0xa761, - 0xa763, 0xa763, - 0xa765, 0xa765, - 0xa767, 0xa767, - 0xa769, 0xa769, - 0xa76b, 0xa76b, - 0xa76d, 0xa76d, - 0xa76f, 0xa76f, - 0xa77a, 0xa77a, - 0xa77c, 0xa77c, - 0xa77f, 0xa77f, - 0xa781, 0xa781, - 0xa783, 0xa783, - 0xa785, 0xa785, - 0xa787, 0xa787, - 0xa78c, 0xa78c, - 0xa791, 0xa791, - 0xa793, 0xa793, - 0xa797, 0xa797, - 0xa799, 0xa799, - 0xa79b, 0xa79b, - 0xa79d, 0xa79d, - 0xa79f, 0xa79f, - 0xa7a1, 0xa7a1, - 0xa7a3, 0xa7a3, - 0xa7a5, 0xa7a5, - 0xa7a7, 0xa7a7, - 0xa7a9, 0xa7a9, - 0xa7b5, 0xa7b5, - 0xa7b7, 0xa7b7, - 0xab53, 0xab53, - 0xab70, 0xabbf, - 0xfb00, 0xfb06, - 0xfb13, 0xfb17, - 0xff41, 0xff5a, - 0x10428, 0x1044f, - 0x104d8, 0x104fb, - 0x10cc0, 0x10cf2, - 0x118c0, 0x118df, - 0x1e922, 0x1e943, -}; /* CR_Changes_When_Uppercased */ - -/* 'Changes_When_Titlecased': Derived Property */ -static const OnigCodePoint CR_Changes_When_Titlecased[] = { - 608, - 0x0061, 0x007a, - 0x00b5, 0x00b5, - 0x00df, 0x00f6, - 0x00f8, 0x00ff, - 0x0101, 0x0101, - 0x0103, 0x0103, - 0x0105, 0x0105, - 0x0107, 0x0107, - 0x0109, 0x0109, - 0x010b, 0x010b, - 0x010d, 0x010d, - 0x010f, 0x010f, - 0x0111, 0x0111, - 0x0113, 0x0113, - 0x0115, 0x0115, - 0x0117, 0x0117, - 0x0119, 0x0119, - 0x011b, 0x011b, - 0x011d, 0x011d, - 0x011f, 0x011f, - 0x0121, 0x0121, - 0x0123, 0x0123, - 0x0125, 0x0125, - 0x0127, 0x0127, - 0x0129, 0x0129, - 0x012b, 0x012b, - 0x012d, 0x012d, - 0x012f, 0x012f, - 0x0131, 0x0131, - 0x0133, 0x0133, - 0x0135, 0x0135, - 0x0137, 0x0137, - 0x013a, 0x013a, - 0x013c, 0x013c, - 0x013e, 0x013e, - 0x0140, 0x0140, - 0x0142, 0x0142, - 0x0144, 0x0144, - 0x0146, 0x0146, - 0x0148, 0x0149, - 0x014b, 0x014b, - 0x014d, 0x014d, - 0x014f, 0x014f, - 0x0151, 0x0151, - 0x0153, 0x0153, - 0x0155, 0x0155, - 0x0157, 0x0157, - 0x0159, 0x0159, - 0x015b, 0x015b, - 0x015d, 0x015d, - 0x015f, 0x015f, - 0x0161, 0x0161, - 0x0163, 0x0163, - 0x0165, 0x0165, - 0x0167, 0x0167, - 0x0169, 0x0169, - 0x016b, 0x016b, - 0x016d, 0x016d, - 0x016f, 0x016f, - 0x0171, 0x0171, - 0x0173, 0x0173, - 0x0175, 0x0175, - 0x0177, 0x0177, - 0x017a, 0x017a, - 0x017c, 0x017c, - 0x017e, 0x0180, - 0x0183, 0x0183, - 0x0185, 0x0185, - 0x0188, 0x0188, - 0x018c, 0x018c, - 0x0192, 0x0192, - 0x0195, 0x0195, - 0x0199, 0x019a, - 0x019e, 0x019e, - 0x01a1, 0x01a1, - 0x01a3, 0x01a3, - 0x01a5, 0x01a5, - 0x01a8, 0x01a8, - 0x01ad, 0x01ad, - 0x01b0, 0x01b0, - 0x01b4, 0x01b4, - 0x01b6, 0x01b6, - 0x01b9, 0x01b9, - 0x01bd, 0x01bd, - 0x01bf, 0x01bf, - 0x01c4, 0x01c4, - 0x01c6, 0x01c7, - 0x01c9, 0x01ca, - 0x01cc, 0x01cc, - 0x01ce, 0x01ce, - 0x01d0, 0x01d0, - 0x01d2, 0x01d2, - 0x01d4, 0x01d4, - 0x01d6, 0x01d6, - 0x01d8, 0x01d8, - 0x01da, 0x01da, - 0x01dc, 0x01dd, - 0x01df, 0x01df, - 0x01e1, 0x01e1, - 0x01e3, 0x01e3, - 0x01e5, 0x01e5, - 0x01e7, 0x01e7, - 0x01e9, 0x01e9, - 0x01eb, 0x01eb, - 0x01ed, 0x01ed, - 0x01ef, 0x01f1, - 0x01f3, 0x01f3, - 0x01f5, 0x01f5, - 0x01f9, 0x01f9, - 0x01fb, 0x01fb, - 0x01fd, 0x01fd, - 0x01ff, 0x01ff, - 0x0201, 0x0201, - 0x0203, 0x0203, - 0x0205, 0x0205, - 0x0207, 0x0207, - 0x0209, 0x0209, - 0x020b, 0x020b, - 0x020d, 0x020d, - 0x020f, 0x020f, - 0x0211, 0x0211, - 0x0213, 0x0213, - 0x0215, 0x0215, - 0x0217, 0x0217, - 0x0219, 0x0219, - 0x021b, 0x021b, - 0x021d, 0x021d, - 0x021f, 0x021f, - 0x0223, 0x0223, - 0x0225, 0x0225, - 0x0227, 0x0227, - 0x0229, 0x0229, - 0x022b, 0x022b, - 0x022d, 0x022d, - 0x022f, 0x022f, - 0x0231, 0x0231, - 0x0233, 0x0233, - 0x023c, 0x023c, - 0x023f, 0x0240, - 0x0242, 0x0242, - 0x0247, 0x0247, - 0x0249, 0x0249, - 0x024b, 0x024b, - 0x024d, 0x024d, - 0x024f, 0x0254, - 0x0256, 0x0257, - 0x0259, 0x0259, - 0x025b, 0x025c, - 0x0260, 0x0261, - 0x0263, 0x0263, - 0x0265, 0x0266, - 0x0268, 0x026c, - 0x026f, 0x026f, - 0x0271, 0x0272, - 0x0275, 0x0275, - 0x027d, 0x027d, - 0x0280, 0x0280, - 0x0283, 0x0283, - 0x0287, 0x028c, - 0x0292, 0x0292, - 0x029d, 0x029e, - 0x0345, 0x0345, - 0x0371, 0x0371, - 0x0373, 0x0373, - 0x0377, 0x0377, - 0x037b, 0x037d, - 0x0390, 0x0390, - 0x03ac, 0x03ce, - 0x03d0, 0x03d1, - 0x03d5, 0x03d7, - 0x03d9, 0x03d9, - 0x03db, 0x03db, - 0x03dd, 0x03dd, - 0x03df, 0x03df, - 0x03e1, 0x03e1, - 0x03e3, 0x03e3, - 0x03e5, 0x03e5, - 0x03e7, 0x03e7, - 0x03e9, 0x03e9, - 0x03eb, 0x03eb, - 0x03ed, 0x03ed, - 0x03ef, 0x03f3, - 0x03f5, 0x03f5, - 0x03f8, 0x03f8, - 0x03fb, 0x03fb, - 0x0430, 0x045f, - 0x0461, 0x0461, - 0x0463, 0x0463, - 0x0465, 0x0465, - 0x0467, 0x0467, - 0x0469, 0x0469, - 0x046b, 0x046b, - 0x046d, 0x046d, - 0x046f, 0x046f, - 0x0471, 0x0471, - 0x0473, 0x0473, - 0x0475, 0x0475, - 0x0477, 0x0477, - 0x0479, 0x0479, - 0x047b, 0x047b, - 0x047d, 0x047d, - 0x047f, 0x047f, - 0x0481, 0x0481, - 0x048b, 0x048b, - 0x048d, 0x048d, - 0x048f, 0x048f, - 0x0491, 0x0491, - 0x0493, 0x0493, - 0x0495, 0x0495, - 0x0497, 0x0497, - 0x0499, 0x0499, - 0x049b, 0x049b, - 0x049d, 0x049d, - 0x049f, 0x049f, - 0x04a1, 0x04a1, - 0x04a3, 0x04a3, - 0x04a5, 0x04a5, - 0x04a7, 0x04a7, - 0x04a9, 0x04a9, - 0x04ab, 0x04ab, - 0x04ad, 0x04ad, - 0x04af, 0x04af, - 0x04b1, 0x04b1, - 0x04b3, 0x04b3, - 0x04b5, 0x04b5, - 0x04b7, 0x04b7, - 0x04b9, 0x04b9, - 0x04bb, 0x04bb, - 0x04bd, 0x04bd, - 0x04bf, 0x04bf, - 0x04c2, 0x04c2, - 0x04c4, 0x04c4, - 0x04c6, 0x04c6, - 0x04c8, 0x04c8, - 0x04ca, 0x04ca, - 0x04cc, 0x04cc, - 0x04ce, 0x04cf, - 0x04d1, 0x04d1, - 0x04d3, 0x04d3, - 0x04d5, 0x04d5, - 0x04d7, 0x04d7, - 0x04d9, 0x04d9, - 0x04db, 0x04db, - 0x04dd, 0x04dd, - 0x04df, 0x04df, - 0x04e1, 0x04e1, - 0x04e3, 0x04e3, - 0x04e5, 0x04e5, - 0x04e7, 0x04e7, - 0x04e9, 0x04e9, - 0x04eb, 0x04eb, - 0x04ed, 0x04ed, - 0x04ef, 0x04ef, - 0x04f1, 0x04f1, - 0x04f3, 0x04f3, - 0x04f5, 0x04f5, - 0x04f7, 0x04f7, - 0x04f9, 0x04f9, - 0x04fb, 0x04fb, - 0x04fd, 0x04fd, - 0x04ff, 0x04ff, - 0x0501, 0x0501, - 0x0503, 0x0503, - 0x0505, 0x0505, - 0x0507, 0x0507, - 0x0509, 0x0509, - 0x050b, 0x050b, - 0x050d, 0x050d, - 0x050f, 0x050f, - 0x0511, 0x0511, - 0x0513, 0x0513, - 0x0515, 0x0515, - 0x0517, 0x0517, - 0x0519, 0x0519, - 0x051b, 0x051b, - 0x051d, 0x051d, - 0x051f, 0x051f, - 0x0521, 0x0521, - 0x0523, 0x0523, - 0x0525, 0x0525, - 0x0527, 0x0527, - 0x0529, 0x0529, - 0x052b, 0x052b, - 0x052d, 0x052d, - 0x052f, 0x052f, - 0x0561, 0x0587, - 0x13f8, 0x13fd, - 0x1c80, 0x1c88, - 0x1d79, 0x1d79, - 0x1d7d, 0x1d7d, - 0x1e01, 0x1e01, - 0x1e03, 0x1e03, - 0x1e05, 0x1e05, - 0x1e07, 0x1e07, - 0x1e09, 0x1e09, - 0x1e0b, 0x1e0b, - 0x1e0d, 0x1e0d, - 0x1e0f, 0x1e0f, - 0x1e11, 0x1e11, - 0x1e13, 0x1e13, - 0x1e15, 0x1e15, - 0x1e17, 0x1e17, - 0x1e19, 0x1e19, - 0x1e1b, 0x1e1b, - 0x1e1d, 0x1e1d, - 0x1e1f, 0x1e1f, - 0x1e21, 0x1e21, - 0x1e23, 0x1e23, - 0x1e25, 0x1e25, - 0x1e27, 0x1e27, - 0x1e29, 0x1e29, - 0x1e2b, 0x1e2b, - 0x1e2d, 0x1e2d, - 0x1e2f, 0x1e2f, - 0x1e31, 0x1e31, - 0x1e33, 0x1e33, - 0x1e35, 0x1e35, - 0x1e37, 0x1e37, - 0x1e39, 0x1e39, - 0x1e3b, 0x1e3b, - 0x1e3d, 0x1e3d, - 0x1e3f, 0x1e3f, - 0x1e41, 0x1e41, - 0x1e43, 0x1e43, - 0x1e45, 0x1e45, - 0x1e47, 0x1e47, - 0x1e49, 0x1e49, - 0x1e4b, 0x1e4b, - 0x1e4d, 0x1e4d, - 0x1e4f, 0x1e4f, - 0x1e51, 0x1e51, - 0x1e53, 0x1e53, - 0x1e55, 0x1e55, - 0x1e57, 0x1e57, - 0x1e59, 0x1e59, - 0x1e5b, 0x1e5b, - 0x1e5d, 0x1e5d, - 0x1e5f, 0x1e5f, - 0x1e61, 0x1e61, - 0x1e63, 0x1e63, - 0x1e65, 0x1e65, - 0x1e67, 0x1e67, - 0x1e69, 0x1e69, - 0x1e6b, 0x1e6b, - 0x1e6d, 0x1e6d, - 0x1e6f, 0x1e6f, - 0x1e71, 0x1e71, - 0x1e73, 0x1e73, - 0x1e75, 0x1e75, - 0x1e77, 0x1e77, - 0x1e79, 0x1e79, - 0x1e7b, 0x1e7b, - 0x1e7d, 0x1e7d, - 0x1e7f, 0x1e7f, - 0x1e81, 0x1e81, - 0x1e83, 0x1e83, - 0x1e85, 0x1e85, - 0x1e87, 0x1e87, - 0x1e89, 0x1e89, - 0x1e8b, 0x1e8b, - 0x1e8d, 0x1e8d, - 0x1e8f, 0x1e8f, - 0x1e91, 0x1e91, - 0x1e93, 0x1e93, - 0x1e95, 0x1e9b, - 0x1ea1, 0x1ea1, - 0x1ea3, 0x1ea3, - 0x1ea5, 0x1ea5, - 0x1ea7, 0x1ea7, - 0x1ea9, 0x1ea9, - 0x1eab, 0x1eab, - 0x1ead, 0x1ead, - 0x1eaf, 0x1eaf, - 0x1eb1, 0x1eb1, - 0x1eb3, 0x1eb3, - 0x1eb5, 0x1eb5, - 0x1eb7, 0x1eb7, - 0x1eb9, 0x1eb9, - 0x1ebb, 0x1ebb, - 0x1ebd, 0x1ebd, - 0x1ebf, 0x1ebf, - 0x1ec1, 0x1ec1, - 0x1ec3, 0x1ec3, - 0x1ec5, 0x1ec5, - 0x1ec7, 0x1ec7, - 0x1ec9, 0x1ec9, - 0x1ecb, 0x1ecb, - 0x1ecd, 0x1ecd, - 0x1ecf, 0x1ecf, - 0x1ed1, 0x1ed1, - 0x1ed3, 0x1ed3, - 0x1ed5, 0x1ed5, - 0x1ed7, 0x1ed7, - 0x1ed9, 0x1ed9, - 0x1edb, 0x1edb, - 0x1edd, 0x1edd, - 0x1edf, 0x1edf, - 0x1ee1, 0x1ee1, - 0x1ee3, 0x1ee3, - 0x1ee5, 0x1ee5, - 0x1ee7, 0x1ee7, - 0x1ee9, 0x1ee9, - 0x1eeb, 0x1eeb, - 0x1eed, 0x1eed, - 0x1eef, 0x1eef, - 0x1ef1, 0x1ef1, - 0x1ef3, 0x1ef3, - 0x1ef5, 0x1ef5, - 0x1ef7, 0x1ef7, - 0x1ef9, 0x1ef9, - 0x1efb, 0x1efb, - 0x1efd, 0x1efd, - 0x1eff, 0x1f07, - 0x1f10, 0x1f15, - 0x1f20, 0x1f27, - 0x1f30, 0x1f37, - 0x1f40, 0x1f45, - 0x1f50, 0x1f57, - 0x1f60, 0x1f67, - 0x1f70, 0x1f7d, - 0x1f80, 0x1f87, - 0x1f90, 0x1f97, - 0x1fa0, 0x1fa7, - 0x1fb0, 0x1fb4, - 0x1fb6, 0x1fb7, - 0x1fbe, 0x1fbe, - 0x1fc2, 0x1fc4, - 0x1fc6, 0x1fc7, - 0x1fd0, 0x1fd3, - 0x1fd6, 0x1fd7, - 0x1fe0, 0x1fe7, - 0x1ff2, 0x1ff4, - 0x1ff6, 0x1ff7, - 0x214e, 0x214e, - 0x2170, 0x217f, - 0x2184, 0x2184, - 0x24d0, 0x24e9, - 0x2c30, 0x2c5e, - 0x2c61, 0x2c61, - 0x2c65, 0x2c66, - 0x2c68, 0x2c68, - 0x2c6a, 0x2c6a, - 0x2c6c, 0x2c6c, - 0x2c73, 0x2c73, - 0x2c76, 0x2c76, - 0x2c81, 0x2c81, - 0x2c83, 0x2c83, - 0x2c85, 0x2c85, - 0x2c87, 0x2c87, - 0x2c89, 0x2c89, - 0x2c8b, 0x2c8b, - 0x2c8d, 0x2c8d, - 0x2c8f, 0x2c8f, - 0x2c91, 0x2c91, - 0x2c93, 0x2c93, - 0x2c95, 0x2c95, - 0x2c97, 0x2c97, - 0x2c99, 0x2c99, - 0x2c9b, 0x2c9b, - 0x2c9d, 0x2c9d, - 0x2c9f, 0x2c9f, - 0x2ca1, 0x2ca1, - 0x2ca3, 0x2ca3, - 0x2ca5, 0x2ca5, - 0x2ca7, 0x2ca7, - 0x2ca9, 0x2ca9, - 0x2cab, 0x2cab, - 0x2cad, 0x2cad, - 0x2caf, 0x2caf, - 0x2cb1, 0x2cb1, - 0x2cb3, 0x2cb3, - 0x2cb5, 0x2cb5, - 0x2cb7, 0x2cb7, - 0x2cb9, 0x2cb9, - 0x2cbb, 0x2cbb, - 0x2cbd, 0x2cbd, - 0x2cbf, 0x2cbf, - 0x2cc1, 0x2cc1, - 0x2cc3, 0x2cc3, - 0x2cc5, 0x2cc5, - 0x2cc7, 0x2cc7, - 0x2cc9, 0x2cc9, - 0x2ccb, 0x2ccb, - 0x2ccd, 0x2ccd, - 0x2ccf, 0x2ccf, - 0x2cd1, 0x2cd1, - 0x2cd3, 0x2cd3, - 0x2cd5, 0x2cd5, - 0x2cd7, 0x2cd7, - 0x2cd9, 0x2cd9, - 0x2cdb, 0x2cdb, - 0x2cdd, 0x2cdd, - 0x2cdf, 0x2cdf, - 0x2ce1, 0x2ce1, - 0x2ce3, 0x2ce3, - 0x2cec, 0x2cec, - 0x2cee, 0x2cee, - 0x2cf3, 0x2cf3, - 0x2d00, 0x2d25, - 0x2d27, 0x2d27, - 0x2d2d, 0x2d2d, - 0xa641, 0xa641, - 0xa643, 0xa643, - 0xa645, 0xa645, - 0xa647, 0xa647, - 0xa649, 0xa649, - 0xa64b, 0xa64b, - 0xa64d, 0xa64d, - 0xa64f, 0xa64f, - 0xa651, 0xa651, - 0xa653, 0xa653, - 0xa655, 0xa655, - 0xa657, 0xa657, - 0xa659, 0xa659, - 0xa65b, 0xa65b, - 0xa65d, 0xa65d, - 0xa65f, 0xa65f, - 0xa661, 0xa661, - 0xa663, 0xa663, - 0xa665, 0xa665, - 0xa667, 0xa667, - 0xa669, 0xa669, - 0xa66b, 0xa66b, - 0xa66d, 0xa66d, - 0xa681, 0xa681, - 0xa683, 0xa683, - 0xa685, 0xa685, - 0xa687, 0xa687, - 0xa689, 0xa689, - 0xa68b, 0xa68b, - 0xa68d, 0xa68d, - 0xa68f, 0xa68f, - 0xa691, 0xa691, - 0xa693, 0xa693, - 0xa695, 0xa695, - 0xa697, 0xa697, - 0xa699, 0xa699, - 0xa69b, 0xa69b, - 0xa723, 0xa723, - 0xa725, 0xa725, - 0xa727, 0xa727, - 0xa729, 0xa729, - 0xa72b, 0xa72b, - 0xa72d, 0xa72d, - 0xa72f, 0xa72f, - 0xa733, 0xa733, - 0xa735, 0xa735, - 0xa737, 0xa737, - 0xa739, 0xa739, - 0xa73b, 0xa73b, - 0xa73d, 0xa73d, - 0xa73f, 0xa73f, - 0xa741, 0xa741, - 0xa743, 0xa743, - 0xa745, 0xa745, - 0xa747, 0xa747, - 0xa749, 0xa749, - 0xa74b, 0xa74b, - 0xa74d, 0xa74d, - 0xa74f, 0xa74f, - 0xa751, 0xa751, - 0xa753, 0xa753, - 0xa755, 0xa755, - 0xa757, 0xa757, - 0xa759, 0xa759, - 0xa75b, 0xa75b, - 0xa75d, 0xa75d, - 0xa75f, 0xa75f, - 0xa761, 0xa761, - 0xa763, 0xa763, - 0xa765, 0xa765, - 0xa767, 0xa767, - 0xa769, 0xa769, - 0xa76b, 0xa76b, - 0xa76d, 0xa76d, - 0xa76f, 0xa76f, - 0xa77a, 0xa77a, - 0xa77c, 0xa77c, - 0xa77f, 0xa77f, - 0xa781, 0xa781, - 0xa783, 0xa783, - 0xa785, 0xa785, - 0xa787, 0xa787, - 0xa78c, 0xa78c, - 0xa791, 0xa791, - 0xa793, 0xa793, - 0xa797, 0xa797, - 0xa799, 0xa799, - 0xa79b, 0xa79b, - 0xa79d, 0xa79d, - 0xa79f, 0xa79f, - 0xa7a1, 0xa7a1, - 0xa7a3, 0xa7a3, - 0xa7a5, 0xa7a5, - 0xa7a7, 0xa7a7, - 0xa7a9, 0xa7a9, - 0xa7b5, 0xa7b5, - 0xa7b7, 0xa7b7, - 0xab53, 0xab53, - 0xab70, 0xabbf, - 0xfb00, 0xfb06, - 0xfb13, 0xfb17, - 0xff41, 0xff5a, - 0x10428, 0x1044f, - 0x104d8, 0x104fb, - 0x10cc0, 0x10cf2, - 0x118c0, 0x118df, - 0x1e922, 0x1e943, -}; /* CR_Changes_When_Titlecased */ - -/* 'Changes_When_Casefolded': Derived Property */ -static const OnigCodePoint CR_Changes_When_Casefolded[] = { - 603, - 0x0041, 0x005a, - 0x00b5, 0x00b5, - 0x00c0, 0x00d6, - 0x00d8, 0x00df, - 0x0100, 0x0100, - 0x0102, 0x0102, - 0x0104, 0x0104, - 0x0106, 0x0106, - 0x0108, 0x0108, - 0x010a, 0x010a, - 0x010c, 0x010c, - 0x010e, 0x010e, - 0x0110, 0x0110, - 0x0112, 0x0112, - 0x0114, 0x0114, - 0x0116, 0x0116, - 0x0118, 0x0118, - 0x011a, 0x011a, - 0x011c, 0x011c, - 0x011e, 0x011e, - 0x0120, 0x0120, - 0x0122, 0x0122, - 0x0124, 0x0124, - 0x0126, 0x0126, - 0x0128, 0x0128, - 0x012a, 0x012a, - 0x012c, 0x012c, - 0x012e, 0x012e, - 0x0130, 0x0130, - 0x0132, 0x0132, - 0x0134, 0x0134, - 0x0136, 0x0136, - 0x0139, 0x0139, - 0x013b, 0x013b, - 0x013d, 0x013d, - 0x013f, 0x013f, - 0x0141, 0x0141, - 0x0143, 0x0143, - 0x0145, 0x0145, - 0x0147, 0x0147, - 0x0149, 0x014a, - 0x014c, 0x014c, - 0x014e, 0x014e, - 0x0150, 0x0150, - 0x0152, 0x0152, - 0x0154, 0x0154, - 0x0156, 0x0156, - 0x0158, 0x0158, - 0x015a, 0x015a, - 0x015c, 0x015c, - 0x015e, 0x015e, - 0x0160, 0x0160, - 0x0162, 0x0162, - 0x0164, 0x0164, - 0x0166, 0x0166, - 0x0168, 0x0168, - 0x016a, 0x016a, - 0x016c, 0x016c, - 0x016e, 0x016e, - 0x0170, 0x0170, - 0x0172, 0x0172, - 0x0174, 0x0174, - 0x0176, 0x0176, - 0x0178, 0x0179, - 0x017b, 0x017b, - 0x017d, 0x017d, - 0x017f, 0x017f, - 0x0181, 0x0182, - 0x0184, 0x0184, - 0x0186, 0x0187, - 0x0189, 0x018b, - 0x018e, 0x0191, - 0x0193, 0x0194, - 0x0196, 0x0198, - 0x019c, 0x019d, - 0x019f, 0x01a0, - 0x01a2, 0x01a2, - 0x01a4, 0x01a4, - 0x01a6, 0x01a7, - 0x01a9, 0x01a9, - 0x01ac, 0x01ac, - 0x01ae, 0x01af, - 0x01b1, 0x01b3, - 0x01b5, 0x01b5, - 0x01b7, 0x01b8, - 0x01bc, 0x01bc, - 0x01c4, 0x01c5, - 0x01c7, 0x01c8, - 0x01ca, 0x01cb, - 0x01cd, 0x01cd, - 0x01cf, 0x01cf, - 0x01d1, 0x01d1, - 0x01d3, 0x01d3, - 0x01d5, 0x01d5, - 0x01d7, 0x01d7, - 0x01d9, 0x01d9, - 0x01db, 0x01db, - 0x01de, 0x01de, - 0x01e0, 0x01e0, - 0x01e2, 0x01e2, - 0x01e4, 0x01e4, - 0x01e6, 0x01e6, - 0x01e8, 0x01e8, - 0x01ea, 0x01ea, - 0x01ec, 0x01ec, - 0x01ee, 0x01ee, - 0x01f1, 0x01f2, - 0x01f4, 0x01f4, - 0x01f6, 0x01f8, - 0x01fa, 0x01fa, - 0x01fc, 0x01fc, - 0x01fe, 0x01fe, - 0x0200, 0x0200, - 0x0202, 0x0202, - 0x0204, 0x0204, - 0x0206, 0x0206, - 0x0208, 0x0208, - 0x020a, 0x020a, - 0x020c, 0x020c, - 0x020e, 0x020e, - 0x0210, 0x0210, - 0x0212, 0x0212, - 0x0214, 0x0214, - 0x0216, 0x0216, - 0x0218, 0x0218, - 0x021a, 0x021a, - 0x021c, 0x021c, - 0x021e, 0x021e, - 0x0220, 0x0220, - 0x0222, 0x0222, - 0x0224, 0x0224, - 0x0226, 0x0226, - 0x0228, 0x0228, - 0x022a, 0x022a, - 0x022c, 0x022c, - 0x022e, 0x022e, - 0x0230, 0x0230, - 0x0232, 0x0232, - 0x023a, 0x023b, - 0x023d, 0x023e, - 0x0241, 0x0241, - 0x0243, 0x0246, - 0x0248, 0x0248, - 0x024a, 0x024a, - 0x024c, 0x024c, - 0x024e, 0x024e, - 0x0345, 0x0345, - 0x0370, 0x0370, - 0x0372, 0x0372, - 0x0376, 0x0376, - 0x037f, 0x037f, - 0x0386, 0x0386, - 0x0388, 0x038a, - 0x038c, 0x038c, - 0x038e, 0x038f, - 0x0391, 0x03a1, - 0x03a3, 0x03ab, - 0x03c2, 0x03c2, - 0x03cf, 0x03d1, - 0x03d5, 0x03d6, - 0x03d8, 0x03d8, - 0x03da, 0x03da, - 0x03dc, 0x03dc, - 0x03de, 0x03de, - 0x03e0, 0x03e0, - 0x03e2, 0x03e2, - 0x03e4, 0x03e4, - 0x03e6, 0x03e6, - 0x03e8, 0x03e8, - 0x03ea, 0x03ea, - 0x03ec, 0x03ec, - 0x03ee, 0x03ee, - 0x03f0, 0x03f1, - 0x03f4, 0x03f5, - 0x03f7, 0x03f7, - 0x03f9, 0x03fa, - 0x03fd, 0x042f, - 0x0460, 0x0460, - 0x0462, 0x0462, - 0x0464, 0x0464, - 0x0466, 0x0466, - 0x0468, 0x0468, - 0x046a, 0x046a, - 0x046c, 0x046c, - 0x046e, 0x046e, - 0x0470, 0x0470, - 0x0472, 0x0472, - 0x0474, 0x0474, - 0x0476, 0x0476, - 0x0478, 0x0478, - 0x047a, 0x047a, - 0x047c, 0x047c, - 0x047e, 0x047e, - 0x0480, 0x0480, - 0x048a, 0x048a, - 0x048c, 0x048c, - 0x048e, 0x048e, - 0x0490, 0x0490, - 0x0492, 0x0492, - 0x0494, 0x0494, - 0x0496, 0x0496, - 0x0498, 0x0498, - 0x049a, 0x049a, - 0x049c, 0x049c, - 0x049e, 0x049e, - 0x04a0, 0x04a0, - 0x04a2, 0x04a2, - 0x04a4, 0x04a4, - 0x04a6, 0x04a6, - 0x04a8, 0x04a8, - 0x04aa, 0x04aa, - 0x04ac, 0x04ac, - 0x04ae, 0x04ae, - 0x04b0, 0x04b0, - 0x04b2, 0x04b2, - 0x04b4, 0x04b4, - 0x04b6, 0x04b6, - 0x04b8, 0x04b8, - 0x04ba, 0x04ba, - 0x04bc, 0x04bc, - 0x04be, 0x04be, - 0x04c0, 0x04c1, - 0x04c3, 0x04c3, - 0x04c5, 0x04c5, - 0x04c7, 0x04c7, - 0x04c9, 0x04c9, - 0x04cb, 0x04cb, - 0x04cd, 0x04cd, - 0x04d0, 0x04d0, - 0x04d2, 0x04d2, - 0x04d4, 0x04d4, - 0x04d6, 0x04d6, - 0x04d8, 0x04d8, - 0x04da, 0x04da, - 0x04dc, 0x04dc, - 0x04de, 0x04de, - 0x04e0, 0x04e0, - 0x04e2, 0x04e2, - 0x04e4, 0x04e4, - 0x04e6, 0x04e6, - 0x04e8, 0x04e8, - 0x04ea, 0x04ea, - 0x04ec, 0x04ec, - 0x04ee, 0x04ee, - 0x04f0, 0x04f0, - 0x04f2, 0x04f2, - 0x04f4, 0x04f4, - 0x04f6, 0x04f6, - 0x04f8, 0x04f8, - 0x04fa, 0x04fa, - 0x04fc, 0x04fc, - 0x04fe, 0x04fe, - 0x0500, 0x0500, - 0x0502, 0x0502, - 0x0504, 0x0504, - 0x0506, 0x0506, - 0x0508, 0x0508, - 0x050a, 0x050a, - 0x050c, 0x050c, - 0x050e, 0x050e, - 0x0510, 0x0510, - 0x0512, 0x0512, - 0x0514, 0x0514, - 0x0516, 0x0516, - 0x0518, 0x0518, - 0x051a, 0x051a, - 0x051c, 0x051c, - 0x051e, 0x051e, - 0x0520, 0x0520, - 0x0522, 0x0522, - 0x0524, 0x0524, - 0x0526, 0x0526, - 0x0528, 0x0528, - 0x052a, 0x052a, - 0x052c, 0x052c, - 0x052e, 0x052e, - 0x0531, 0x0556, - 0x0587, 0x0587, - 0x10a0, 0x10c5, - 0x10c7, 0x10c7, - 0x10cd, 0x10cd, - 0x13f8, 0x13fd, - 0x1c80, 0x1c88, - 0x1e00, 0x1e00, - 0x1e02, 0x1e02, - 0x1e04, 0x1e04, - 0x1e06, 0x1e06, - 0x1e08, 0x1e08, - 0x1e0a, 0x1e0a, - 0x1e0c, 0x1e0c, - 0x1e0e, 0x1e0e, - 0x1e10, 0x1e10, - 0x1e12, 0x1e12, - 0x1e14, 0x1e14, - 0x1e16, 0x1e16, - 0x1e18, 0x1e18, - 0x1e1a, 0x1e1a, - 0x1e1c, 0x1e1c, - 0x1e1e, 0x1e1e, - 0x1e20, 0x1e20, - 0x1e22, 0x1e22, - 0x1e24, 0x1e24, - 0x1e26, 0x1e26, - 0x1e28, 0x1e28, - 0x1e2a, 0x1e2a, - 0x1e2c, 0x1e2c, - 0x1e2e, 0x1e2e, - 0x1e30, 0x1e30, - 0x1e32, 0x1e32, - 0x1e34, 0x1e34, - 0x1e36, 0x1e36, - 0x1e38, 0x1e38, - 0x1e3a, 0x1e3a, - 0x1e3c, 0x1e3c, - 0x1e3e, 0x1e3e, - 0x1e40, 0x1e40, - 0x1e42, 0x1e42, - 0x1e44, 0x1e44, - 0x1e46, 0x1e46, - 0x1e48, 0x1e48, - 0x1e4a, 0x1e4a, - 0x1e4c, 0x1e4c, - 0x1e4e, 0x1e4e, - 0x1e50, 0x1e50, - 0x1e52, 0x1e52, - 0x1e54, 0x1e54, - 0x1e56, 0x1e56, - 0x1e58, 0x1e58, - 0x1e5a, 0x1e5a, - 0x1e5c, 0x1e5c, - 0x1e5e, 0x1e5e, - 0x1e60, 0x1e60, - 0x1e62, 0x1e62, - 0x1e64, 0x1e64, - 0x1e66, 0x1e66, - 0x1e68, 0x1e68, - 0x1e6a, 0x1e6a, - 0x1e6c, 0x1e6c, - 0x1e6e, 0x1e6e, - 0x1e70, 0x1e70, - 0x1e72, 0x1e72, - 0x1e74, 0x1e74, - 0x1e76, 0x1e76, - 0x1e78, 0x1e78, - 0x1e7a, 0x1e7a, - 0x1e7c, 0x1e7c, - 0x1e7e, 0x1e7e, - 0x1e80, 0x1e80, - 0x1e82, 0x1e82, - 0x1e84, 0x1e84, - 0x1e86, 0x1e86, - 0x1e88, 0x1e88, - 0x1e8a, 0x1e8a, - 0x1e8c, 0x1e8c, - 0x1e8e, 0x1e8e, - 0x1e90, 0x1e90, - 0x1e92, 0x1e92, - 0x1e94, 0x1e94, - 0x1e9a, 0x1e9b, - 0x1e9e, 0x1e9e, - 0x1ea0, 0x1ea0, - 0x1ea2, 0x1ea2, - 0x1ea4, 0x1ea4, - 0x1ea6, 0x1ea6, - 0x1ea8, 0x1ea8, - 0x1eaa, 0x1eaa, - 0x1eac, 0x1eac, - 0x1eae, 0x1eae, - 0x1eb0, 0x1eb0, - 0x1eb2, 0x1eb2, - 0x1eb4, 0x1eb4, - 0x1eb6, 0x1eb6, - 0x1eb8, 0x1eb8, - 0x1eba, 0x1eba, - 0x1ebc, 0x1ebc, - 0x1ebe, 0x1ebe, - 0x1ec0, 0x1ec0, - 0x1ec2, 0x1ec2, - 0x1ec4, 0x1ec4, - 0x1ec6, 0x1ec6, - 0x1ec8, 0x1ec8, - 0x1eca, 0x1eca, - 0x1ecc, 0x1ecc, - 0x1ece, 0x1ece, - 0x1ed0, 0x1ed0, - 0x1ed2, 0x1ed2, - 0x1ed4, 0x1ed4, - 0x1ed6, 0x1ed6, - 0x1ed8, 0x1ed8, - 0x1eda, 0x1eda, - 0x1edc, 0x1edc, - 0x1ede, 0x1ede, - 0x1ee0, 0x1ee0, - 0x1ee2, 0x1ee2, - 0x1ee4, 0x1ee4, - 0x1ee6, 0x1ee6, - 0x1ee8, 0x1ee8, - 0x1eea, 0x1eea, - 0x1eec, 0x1eec, - 0x1eee, 0x1eee, - 0x1ef0, 0x1ef0, - 0x1ef2, 0x1ef2, - 0x1ef4, 0x1ef4, - 0x1ef6, 0x1ef6, - 0x1ef8, 0x1ef8, - 0x1efa, 0x1efa, - 0x1efc, 0x1efc, - 0x1efe, 0x1efe, - 0x1f08, 0x1f0f, - 0x1f18, 0x1f1d, - 0x1f28, 0x1f2f, - 0x1f38, 0x1f3f, - 0x1f48, 0x1f4d, - 0x1f59, 0x1f59, - 0x1f5b, 0x1f5b, - 0x1f5d, 0x1f5d, - 0x1f5f, 0x1f5f, - 0x1f68, 0x1f6f, - 0x1f80, 0x1faf, - 0x1fb2, 0x1fb4, - 0x1fb7, 0x1fbc, - 0x1fc2, 0x1fc4, - 0x1fc7, 0x1fcc, - 0x1fd8, 0x1fdb, - 0x1fe8, 0x1fec, - 0x1ff2, 0x1ff4, - 0x1ff7, 0x1ffc, - 0x2126, 0x2126, - 0x212a, 0x212b, - 0x2132, 0x2132, - 0x2160, 0x216f, - 0x2183, 0x2183, - 0x24b6, 0x24cf, - 0x2c00, 0x2c2e, - 0x2c60, 0x2c60, - 0x2c62, 0x2c64, - 0x2c67, 0x2c67, - 0x2c69, 0x2c69, - 0x2c6b, 0x2c6b, - 0x2c6d, 0x2c70, - 0x2c72, 0x2c72, - 0x2c75, 0x2c75, - 0x2c7e, 0x2c80, - 0x2c82, 0x2c82, - 0x2c84, 0x2c84, - 0x2c86, 0x2c86, - 0x2c88, 0x2c88, - 0x2c8a, 0x2c8a, - 0x2c8c, 0x2c8c, - 0x2c8e, 0x2c8e, - 0x2c90, 0x2c90, - 0x2c92, 0x2c92, - 0x2c94, 0x2c94, - 0x2c96, 0x2c96, - 0x2c98, 0x2c98, - 0x2c9a, 0x2c9a, - 0x2c9c, 0x2c9c, - 0x2c9e, 0x2c9e, - 0x2ca0, 0x2ca0, - 0x2ca2, 0x2ca2, - 0x2ca4, 0x2ca4, - 0x2ca6, 0x2ca6, - 0x2ca8, 0x2ca8, - 0x2caa, 0x2caa, - 0x2cac, 0x2cac, - 0x2cae, 0x2cae, - 0x2cb0, 0x2cb0, - 0x2cb2, 0x2cb2, - 0x2cb4, 0x2cb4, - 0x2cb6, 0x2cb6, - 0x2cb8, 0x2cb8, - 0x2cba, 0x2cba, - 0x2cbc, 0x2cbc, - 0x2cbe, 0x2cbe, - 0x2cc0, 0x2cc0, - 0x2cc2, 0x2cc2, - 0x2cc4, 0x2cc4, - 0x2cc6, 0x2cc6, - 0x2cc8, 0x2cc8, - 0x2cca, 0x2cca, - 0x2ccc, 0x2ccc, - 0x2cce, 0x2cce, - 0x2cd0, 0x2cd0, - 0x2cd2, 0x2cd2, - 0x2cd4, 0x2cd4, - 0x2cd6, 0x2cd6, - 0x2cd8, 0x2cd8, - 0x2cda, 0x2cda, - 0x2cdc, 0x2cdc, - 0x2cde, 0x2cde, - 0x2ce0, 0x2ce0, - 0x2ce2, 0x2ce2, - 0x2ceb, 0x2ceb, - 0x2ced, 0x2ced, - 0x2cf2, 0x2cf2, - 0xa640, 0xa640, - 0xa642, 0xa642, - 0xa644, 0xa644, - 0xa646, 0xa646, - 0xa648, 0xa648, - 0xa64a, 0xa64a, - 0xa64c, 0xa64c, - 0xa64e, 0xa64e, - 0xa650, 0xa650, - 0xa652, 0xa652, - 0xa654, 0xa654, - 0xa656, 0xa656, - 0xa658, 0xa658, - 0xa65a, 0xa65a, - 0xa65c, 0xa65c, - 0xa65e, 0xa65e, - 0xa660, 0xa660, - 0xa662, 0xa662, - 0xa664, 0xa664, - 0xa666, 0xa666, - 0xa668, 0xa668, - 0xa66a, 0xa66a, - 0xa66c, 0xa66c, - 0xa680, 0xa680, - 0xa682, 0xa682, - 0xa684, 0xa684, - 0xa686, 0xa686, - 0xa688, 0xa688, - 0xa68a, 0xa68a, - 0xa68c, 0xa68c, - 0xa68e, 0xa68e, - 0xa690, 0xa690, - 0xa692, 0xa692, - 0xa694, 0xa694, - 0xa696, 0xa696, - 0xa698, 0xa698, - 0xa69a, 0xa69a, - 0xa722, 0xa722, - 0xa724, 0xa724, - 0xa726, 0xa726, - 0xa728, 0xa728, - 0xa72a, 0xa72a, - 0xa72c, 0xa72c, - 0xa72e, 0xa72e, - 0xa732, 0xa732, - 0xa734, 0xa734, - 0xa736, 0xa736, - 0xa738, 0xa738, - 0xa73a, 0xa73a, - 0xa73c, 0xa73c, - 0xa73e, 0xa73e, - 0xa740, 0xa740, - 0xa742, 0xa742, - 0xa744, 0xa744, - 0xa746, 0xa746, - 0xa748, 0xa748, - 0xa74a, 0xa74a, - 0xa74c, 0xa74c, - 0xa74e, 0xa74e, - 0xa750, 0xa750, - 0xa752, 0xa752, - 0xa754, 0xa754, - 0xa756, 0xa756, - 0xa758, 0xa758, - 0xa75a, 0xa75a, - 0xa75c, 0xa75c, - 0xa75e, 0xa75e, - 0xa760, 0xa760, - 0xa762, 0xa762, - 0xa764, 0xa764, - 0xa766, 0xa766, - 0xa768, 0xa768, - 0xa76a, 0xa76a, - 0xa76c, 0xa76c, - 0xa76e, 0xa76e, - 0xa779, 0xa779, - 0xa77b, 0xa77b, - 0xa77d, 0xa77e, - 0xa780, 0xa780, - 0xa782, 0xa782, - 0xa784, 0xa784, - 0xa786, 0xa786, - 0xa78b, 0xa78b, - 0xa78d, 0xa78d, - 0xa790, 0xa790, - 0xa792, 0xa792, - 0xa796, 0xa796, - 0xa798, 0xa798, - 0xa79a, 0xa79a, - 0xa79c, 0xa79c, - 0xa79e, 0xa79e, - 0xa7a0, 0xa7a0, - 0xa7a2, 0xa7a2, - 0xa7a4, 0xa7a4, - 0xa7a6, 0xa7a6, - 0xa7a8, 0xa7a8, - 0xa7aa, 0xa7ae, - 0xa7b0, 0xa7b4, - 0xa7b6, 0xa7b6, - 0xab70, 0xabbf, - 0xfb00, 0xfb06, - 0xfb13, 0xfb17, - 0xff21, 0xff3a, - 0x10400, 0x10427, - 0x104b0, 0x104d3, - 0x10c80, 0x10cb2, - 0x118a0, 0x118bf, - 0x1e900, 0x1e921, -}; /* CR_Changes_When_Casefolded */ - -/* 'Changes_When_Casemapped': Derived Property */ -static const OnigCodePoint CR_Changes_When_Casemapped[] = { - 116, - 0x0041, 0x005a, - 0x0061, 0x007a, - 0x00b5, 0x00b5, - 0x00c0, 0x00d6, - 0x00d8, 0x00f6, - 0x00f8, 0x0137, - 0x0139, 0x018c, - 0x018e, 0x019a, - 0x019c, 0x01a9, - 0x01ac, 0x01b9, - 0x01bc, 0x01bd, - 0x01bf, 0x01bf, - 0x01c4, 0x0220, - 0x0222, 0x0233, - 0x023a, 0x0254, - 0x0256, 0x0257, - 0x0259, 0x0259, - 0x025b, 0x025c, - 0x0260, 0x0261, - 0x0263, 0x0263, - 0x0265, 0x0266, - 0x0268, 0x026c, - 0x026f, 0x026f, - 0x0271, 0x0272, - 0x0275, 0x0275, - 0x027d, 0x027d, - 0x0280, 0x0280, - 0x0283, 0x0283, - 0x0287, 0x028c, - 0x0292, 0x0292, - 0x029d, 0x029e, - 0x0345, 0x0345, - 0x0370, 0x0373, - 0x0376, 0x0377, - 0x037b, 0x037d, - 0x037f, 0x037f, - 0x0386, 0x0386, - 0x0388, 0x038a, - 0x038c, 0x038c, - 0x038e, 0x03a1, - 0x03a3, 0x03d1, - 0x03d5, 0x03f5, - 0x03f7, 0x03fb, - 0x03fd, 0x0481, - 0x048a, 0x052f, - 0x0531, 0x0556, - 0x0561, 0x0587, - 0x10a0, 0x10c5, - 0x10c7, 0x10c7, - 0x10cd, 0x10cd, - 0x13a0, 0x13f5, - 0x13f8, 0x13fd, - 0x1c80, 0x1c88, - 0x1d79, 0x1d79, - 0x1d7d, 0x1d7d, - 0x1e00, 0x1e9b, - 0x1e9e, 0x1e9e, - 0x1ea0, 0x1f15, - 0x1f18, 0x1f1d, - 0x1f20, 0x1f45, - 0x1f48, 0x1f4d, - 0x1f50, 0x1f57, - 0x1f59, 0x1f59, - 0x1f5b, 0x1f5b, - 0x1f5d, 0x1f5d, - 0x1f5f, 0x1f7d, - 0x1f80, 0x1fb4, - 0x1fb6, 0x1fbc, - 0x1fbe, 0x1fbe, - 0x1fc2, 0x1fc4, - 0x1fc6, 0x1fcc, - 0x1fd0, 0x1fd3, - 0x1fd6, 0x1fdb, - 0x1fe0, 0x1fec, - 0x1ff2, 0x1ff4, - 0x1ff6, 0x1ffc, - 0x2126, 0x2126, - 0x212a, 0x212b, - 0x2132, 0x2132, - 0x214e, 0x214e, - 0x2160, 0x217f, - 0x2183, 0x2184, - 0x24b6, 0x24e9, - 0x2c00, 0x2c2e, - 0x2c30, 0x2c5e, - 0x2c60, 0x2c70, - 0x2c72, 0x2c73, - 0x2c75, 0x2c76, - 0x2c7e, 0x2ce3, - 0x2ceb, 0x2cee, - 0x2cf2, 0x2cf3, - 0x2d00, 0x2d25, - 0x2d27, 0x2d27, - 0x2d2d, 0x2d2d, - 0xa640, 0xa66d, - 0xa680, 0xa69b, - 0xa722, 0xa72f, - 0xa732, 0xa76f, - 0xa779, 0xa787, - 0xa78b, 0xa78d, - 0xa790, 0xa793, - 0xa796, 0xa7ae, - 0xa7b0, 0xa7b7, - 0xab53, 0xab53, - 0xab70, 0xabbf, - 0xfb00, 0xfb06, - 0xfb13, 0xfb17, - 0xff21, 0xff3a, - 0xff41, 0xff5a, - 0x10400, 0x1044f, - 0x104b0, 0x104d3, - 0x104d8, 0x104fb, - 0x10c80, 0x10cb2, - 0x10cc0, 0x10cf2, - 0x118a0, 0x118df, - 0x1e900, 0x1e943, -}; /* CR_Changes_When_Casemapped */ - -/* 'ID_Start': Derived Property */ -static const OnigCodePoint CR_ID_Start[] = { - 571, - 0x0041, 0x005a, - 0x0061, 0x007a, - 0x00aa, 0x00aa, - 0x00b5, 0x00b5, - 0x00ba, 0x00ba, - 0x00c0, 0x00d6, - 0x00d8, 0x00f6, - 0x00f8, 0x02c1, - 0x02c6, 0x02d1, - 0x02e0, 0x02e4, - 0x02ec, 0x02ec, - 0x02ee, 0x02ee, - 0x0370, 0x0374, - 0x0376, 0x0377, - 0x037a, 0x037d, - 0x037f, 0x037f, - 0x0386, 0x0386, - 0x0388, 0x038a, - 0x038c, 0x038c, - 0x038e, 0x03a1, - 0x03a3, 0x03f5, - 0x03f7, 0x0481, - 0x048a, 0x052f, - 0x0531, 0x0556, - 0x0559, 0x0559, - 0x0561, 0x0587, - 0x05d0, 0x05ea, - 0x05f0, 0x05f2, - 0x0620, 0x064a, - 0x066e, 0x066f, - 0x0671, 0x06d3, - 0x06d5, 0x06d5, - 0x06e5, 0x06e6, - 0x06ee, 0x06ef, - 0x06fa, 0x06fc, - 0x06ff, 0x06ff, - 0x0710, 0x0710, - 0x0712, 0x072f, - 0x074d, 0x07a5, - 0x07b1, 0x07b1, - 0x07ca, 0x07ea, - 0x07f4, 0x07f5, - 0x07fa, 0x07fa, - 0x0800, 0x0815, - 0x081a, 0x081a, - 0x0824, 0x0824, - 0x0828, 0x0828, - 0x0840, 0x0858, - 0x08a0, 0x08b4, - 0x08b6, 0x08bd, - 0x0904, 0x0939, - 0x093d, 0x093d, - 0x0950, 0x0950, - 0x0958, 0x0961, - 0x0971, 0x0980, - 0x0985, 0x098c, - 0x098f, 0x0990, - 0x0993, 0x09a8, - 0x09aa, 0x09b0, - 0x09b2, 0x09b2, - 0x09b6, 0x09b9, - 0x09bd, 0x09bd, - 0x09ce, 0x09ce, - 0x09dc, 0x09dd, - 0x09df, 0x09e1, - 0x09f0, 0x09f1, - 0x0a05, 0x0a0a, - 0x0a0f, 0x0a10, - 0x0a13, 0x0a28, - 0x0a2a, 0x0a30, - 0x0a32, 0x0a33, - 0x0a35, 0x0a36, - 0x0a38, 0x0a39, - 0x0a59, 0x0a5c, - 0x0a5e, 0x0a5e, - 0x0a72, 0x0a74, - 0x0a85, 0x0a8d, - 0x0a8f, 0x0a91, - 0x0a93, 0x0aa8, - 0x0aaa, 0x0ab0, - 0x0ab2, 0x0ab3, - 0x0ab5, 0x0ab9, - 0x0abd, 0x0abd, - 0x0ad0, 0x0ad0, - 0x0ae0, 0x0ae1, - 0x0af9, 0x0af9, - 0x0b05, 0x0b0c, - 0x0b0f, 0x0b10, - 0x0b13, 0x0b28, - 0x0b2a, 0x0b30, - 0x0b32, 0x0b33, - 0x0b35, 0x0b39, - 0x0b3d, 0x0b3d, - 0x0b5c, 0x0b5d, - 0x0b5f, 0x0b61, - 0x0b71, 0x0b71, - 0x0b83, 0x0b83, - 0x0b85, 0x0b8a, - 0x0b8e, 0x0b90, - 0x0b92, 0x0b95, - 0x0b99, 0x0b9a, - 0x0b9c, 0x0b9c, - 0x0b9e, 0x0b9f, - 0x0ba3, 0x0ba4, - 0x0ba8, 0x0baa, - 0x0bae, 0x0bb9, - 0x0bd0, 0x0bd0, - 0x0c05, 0x0c0c, - 0x0c0e, 0x0c10, - 0x0c12, 0x0c28, - 0x0c2a, 0x0c39, - 0x0c3d, 0x0c3d, - 0x0c58, 0x0c5a, - 0x0c60, 0x0c61, - 0x0c80, 0x0c80, - 0x0c85, 0x0c8c, - 0x0c8e, 0x0c90, - 0x0c92, 0x0ca8, - 0x0caa, 0x0cb3, - 0x0cb5, 0x0cb9, - 0x0cbd, 0x0cbd, - 0x0cde, 0x0cde, - 0x0ce0, 0x0ce1, - 0x0cf1, 0x0cf2, - 0x0d05, 0x0d0c, - 0x0d0e, 0x0d10, - 0x0d12, 0x0d3a, - 0x0d3d, 0x0d3d, - 0x0d4e, 0x0d4e, - 0x0d54, 0x0d56, - 0x0d5f, 0x0d61, - 0x0d7a, 0x0d7f, - 0x0d85, 0x0d96, - 0x0d9a, 0x0db1, - 0x0db3, 0x0dbb, - 0x0dbd, 0x0dbd, - 0x0dc0, 0x0dc6, - 0x0e01, 0x0e30, - 0x0e32, 0x0e33, - 0x0e40, 0x0e46, - 0x0e81, 0x0e82, - 0x0e84, 0x0e84, - 0x0e87, 0x0e88, - 0x0e8a, 0x0e8a, - 0x0e8d, 0x0e8d, - 0x0e94, 0x0e97, - 0x0e99, 0x0e9f, - 0x0ea1, 0x0ea3, - 0x0ea5, 0x0ea5, - 0x0ea7, 0x0ea7, - 0x0eaa, 0x0eab, - 0x0ead, 0x0eb0, - 0x0eb2, 0x0eb3, - 0x0ebd, 0x0ebd, - 0x0ec0, 0x0ec4, - 0x0ec6, 0x0ec6, - 0x0edc, 0x0edf, - 0x0f00, 0x0f00, - 0x0f40, 0x0f47, - 0x0f49, 0x0f6c, - 0x0f88, 0x0f8c, - 0x1000, 0x102a, - 0x103f, 0x103f, - 0x1050, 0x1055, - 0x105a, 0x105d, - 0x1061, 0x1061, - 0x1065, 0x1066, - 0x106e, 0x1070, - 0x1075, 0x1081, - 0x108e, 0x108e, - 0x10a0, 0x10c5, - 0x10c7, 0x10c7, - 0x10cd, 0x10cd, - 0x10d0, 0x10fa, - 0x10fc, 0x1248, - 0x124a, 0x124d, - 0x1250, 0x1256, - 0x1258, 0x1258, - 0x125a, 0x125d, - 0x1260, 0x1288, - 0x128a, 0x128d, - 0x1290, 0x12b0, - 0x12b2, 0x12b5, - 0x12b8, 0x12be, - 0x12c0, 0x12c0, - 0x12c2, 0x12c5, - 0x12c8, 0x12d6, - 0x12d8, 0x1310, - 0x1312, 0x1315, - 0x1318, 0x135a, - 0x1380, 0x138f, - 0x13a0, 0x13f5, - 0x13f8, 0x13fd, - 0x1401, 0x166c, - 0x166f, 0x167f, - 0x1681, 0x169a, - 0x16a0, 0x16ea, - 0x16ee, 0x16f8, - 0x1700, 0x170c, - 0x170e, 0x1711, - 0x1720, 0x1731, - 0x1740, 0x1751, - 0x1760, 0x176c, - 0x176e, 0x1770, - 0x1780, 0x17b3, - 0x17d7, 0x17d7, - 0x17dc, 0x17dc, - 0x1820, 0x1877, - 0x1880, 0x18a8, - 0x18aa, 0x18aa, - 0x18b0, 0x18f5, - 0x1900, 0x191e, - 0x1950, 0x196d, - 0x1970, 0x1974, - 0x1980, 0x19ab, - 0x19b0, 0x19c9, - 0x1a00, 0x1a16, - 0x1a20, 0x1a54, - 0x1aa7, 0x1aa7, - 0x1b05, 0x1b33, - 0x1b45, 0x1b4b, - 0x1b83, 0x1ba0, - 0x1bae, 0x1baf, - 0x1bba, 0x1be5, - 0x1c00, 0x1c23, - 0x1c4d, 0x1c4f, - 0x1c5a, 0x1c7d, - 0x1c80, 0x1c88, - 0x1ce9, 0x1cec, - 0x1cee, 0x1cf1, - 0x1cf5, 0x1cf6, - 0x1d00, 0x1dbf, - 0x1e00, 0x1f15, - 0x1f18, 0x1f1d, - 0x1f20, 0x1f45, - 0x1f48, 0x1f4d, - 0x1f50, 0x1f57, - 0x1f59, 0x1f59, - 0x1f5b, 0x1f5b, - 0x1f5d, 0x1f5d, - 0x1f5f, 0x1f7d, - 0x1f80, 0x1fb4, - 0x1fb6, 0x1fbc, - 0x1fbe, 0x1fbe, - 0x1fc2, 0x1fc4, - 0x1fc6, 0x1fcc, - 0x1fd0, 0x1fd3, - 0x1fd6, 0x1fdb, - 0x1fe0, 0x1fec, - 0x1ff2, 0x1ff4, - 0x1ff6, 0x1ffc, - 0x2071, 0x2071, - 0x207f, 0x207f, - 0x2090, 0x209c, - 0x2102, 0x2102, - 0x2107, 0x2107, - 0x210a, 0x2113, - 0x2115, 0x2115, - 0x2118, 0x211d, - 0x2124, 0x2124, - 0x2126, 0x2126, - 0x2128, 0x2128, - 0x212a, 0x2139, - 0x213c, 0x213f, - 0x2145, 0x2149, - 0x214e, 0x214e, - 0x2160, 0x2188, - 0x2c00, 0x2c2e, - 0x2c30, 0x2c5e, - 0x2c60, 0x2ce4, - 0x2ceb, 0x2cee, - 0x2cf2, 0x2cf3, - 0x2d00, 0x2d25, - 0x2d27, 0x2d27, - 0x2d2d, 0x2d2d, - 0x2d30, 0x2d67, - 0x2d6f, 0x2d6f, - 0x2d80, 0x2d96, - 0x2da0, 0x2da6, - 0x2da8, 0x2dae, - 0x2db0, 0x2db6, - 0x2db8, 0x2dbe, - 0x2dc0, 0x2dc6, - 0x2dc8, 0x2dce, - 0x2dd0, 0x2dd6, - 0x2dd8, 0x2dde, - 0x3005, 0x3007, - 0x3021, 0x3029, - 0x3031, 0x3035, - 0x3038, 0x303c, - 0x3041, 0x3096, - 0x309b, 0x309f, - 0x30a1, 0x30fa, - 0x30fc, 0x30ff, - 0x3105, 0x312d, - 0x3131, 0x318e, - 0x31a0, 0x31ba, - 0x31f0, 0x31ff, - 0x3400, 0x4db5, - 0x4e00, 0x9fd5, - 0xa000, 0xa48c, - 0xa4d0, 0xa4fd, - 0xa500, 0xa60c, - 0xa610, 0xa61f, - 0xa62a, 0xa62b, - 0xa640, 0xa66e, - 0xa67f, 0xa69d, - 0xa6a0, 0xa6ef, - 0xa717, 0xa71f, - 0xa722, 0xa788, - 0xa78b, 0xa7ae, - 0xa7b0, 0xa7b7, - 0xa7f7, 0xa801, - 0xa803, 0xa805, - 0xa807, 0xa80a, - 0xa80c, 0xa822, - 0xa840, 0xa873, - 0xa882, 0xa8b3, - 0xa8f2, 0xa8f7, - 0xa8fb, 0xa8fb, - 0xa8fd, 0xa8fd, - 0xa90a, 0xa925, - 0xa930, 0xa946, - 0xa960, 0xa97c, - 0xa984, 0xa9b2, - 0xa9cf, 0xa9cf, - 0xa9e0, 0xa9e4, - 0xa9e6, 0xa9ef, - 0xa9fa, 0xa9fe, - 0xaa00, 0xaa28, - 0xaa40, 0xaa42, - 0xaa44, 0xaa4b, - 0xaa60, 0xaa76, - 0xaa7a, 0xaa7a, - 0xaa7e, 0xaaaf, - 0xaab1, 0xaab1, - 0xaab5, 0xaab6, - 0xaab9, 0xaabd, - 0xaac0, 0xaac0, - 0xaac2, 0xaac2, - 0xaadb, 0xaadd, - 0xaae0, 0xaaea, - 0xaaf2, 0xaaf4, - 0xab01, 0xab06, - 0xab09, 0xab0e, - 0xab11, 0xab16, - 0xab20, 0xab26, - 0xab28, 0xab2e, - 0xab30, 0xab5a, - 0xab5c, 0xab65, - 0xab70, 0xabe2, - 0xac00, 0xd7a3, - 0xd7b0, 0xd7c6, - 0xd7cb, 0xd7fb, - 0xf900, 0xfa6d, - 0xfa70, 0xfad9, - 0xfb00, 0xfb06, - 0xfb13, 0xfb17, - 0xfb1d, 0xfb1d, - 0xfb1f, 0xfb28, - 0xfb2a, 0xfb36, - 0xfb38, 0xfb3c, - 0xfb3e, 0xfb3e, - 0xfb40, 0xfb41, - 0xfb43, 0xfb44, - 0xfb46, 0xfbb1, - 0xfbd3, 0xfd3d, - 0xfd50, 0xfd8f, - 0xfd92, 0xfdc7, - 0xfdf0, 0xfdfb, - 0xfe70, 0xfe74, - 0xfe76, 0xfefc, - 0xff21, 0xff3a, - 0xff41, 0xff5a, - 0xff66, 0xffbe, - 0xffc2, 0xffc7, - 0xffca, 0xffcf, - 0xffd2, 0xffd7, - 0xffda, 0xffdc, - 0x10000, 0x1000b, - 0x1000d, 0x10026, - 0x10028, 0x1003a, - 0x1003c, 0x1003d, - 0x1003f, 0x1004d, - 0x10050, 0x1005d, - 0x10080, 0x100fa, - 0x10140, 0x10174, - 0x10280, 0x1029c, - 0x102a0, 0x102d0, - 0x10300, 0x1031f, - 0x10330, 0x1034a, - 0x10350, 0x10375, - 0x10380, 0x1039d, - 0x103a0, 0x103c3, - 0x103c8, 0x103cf, - 0x103d1, 0x103d5, - 0x10400, 0x1049d, - 0x104b0, 0x104d3, - 0x104d8, 0x104fb, - 0x10500, 0x10527, - 0x10530, 0x10563, - 0x10600, 0x10736, - 0x10740, 0x10755, - 0x10760, 0x10767, - 0x10800, 0x10805, - 0x10808, 0x10808, - 0x1080a, 0x10835, - 0x10837, 0x10838, - 0x1083c, 0x1083c, - 0x1083f, 0x10855, - 0x10860, 0x10876, - 0x10880, 0x1089e, - 0x108e0, 0x108f2, - 0x108f4, 0x108f5, - 0x10900, 0x10915, - 0x10920, 0x10939, - 0x10980, 0x109b7, - 0x109be, 0x109bf, - 0x10a00, 0x10a00, - 0x10a10, 0x10a13, - 0x10a15, 0x10a17, - 0x10a19, 0x10a33, - 0x10a60, 0x10a7c, - 0x10a80, 0x10a9c, - 0x10ac0, 0x10ac7, - 0x10ac9, 0x10ae4, - 0x10b00, 0x10b35, - 0x10b40, 0x10b55, - 0x10b60, 0x10b72, - 0x10b80, 0x10b91, - 0x10c00, 0x10c48, - 0x10c80, 0x10cb2, - 0x10cc0, 0x10cf2, - 0x11003, 0x11037, - 0x11083, 0x110af, - 0x110d0, 0x110e8, - 0x11103, 0x11126, - 0x11150, 0x11172, - 0x11176, 0x11176, - 0x11183, 0x111b2, - 0x111c1, 0x111c4, - 0x111da, 0x111da, - 0x111dc, 0x111dc, - 0x11200, 0x11211, - 0x11213, 0x1122b, - 0x11280, 0x11286, - 0x11288, 0x11288, - 0x1128a, 0x1128d, - 0x1128f, 0x1129d, - 0x1129f, 0x112a8, - 0x112b0, 0x112de, - 0x11305, 0x1130c, - 0x1130f, 0x11310, - 0x11313, 0x11328, - 0x1132a, 0x11330, - 0x11332, 0x11333, - 0x11335, 0x11339, - 0x1133d, 0x1133d, - 0x11350, 0x11350, - 0x1135d, 0x11361, - 0x11400, 0x11434, - 0x11447, 0x1144a, - 0x11480, 0x114af, - 0x114c4, 0x114c5, - 0x114c7, 0x114c7, - 0x11580, 0x115ae, - 0x115d8, 0x115db, - 0x11600, 0x1162f, - 0x11644, 0x11644, - 0x11680, 0x116aa, - 0x11700, 0x11719, - 0x118a0, 0x118df, - 0x118ff, 0x118ff, - 0x11ac0, 0x11af8, - 0x11c00, 0x11c08, - 0x11c0a, 0x11c2e, - 0x11c40, 0x11c40, - 0x11c72, 0x11c8f, - 0x12000, 0x12399, - 0x12400, 0x1246e, - 0x12480, 0x12543, - 0x13000, 0x1342e, - 0x14400, 0x14646, - 0x16800, 0x16a38, - 0x16a40, 0x16a5e, - 0x16ad0, 0x16aed, - 0x16b00, 0x16b2f, - 0x16b40, 0x16b43, - 0x16b63, 0x16b77, - 0x16b7d, 0x16b8f, - 0x16f00, 0x16f44, - 0x16f50, 0x16f50, - 0x16f93, 0x16f9f, - 0x16fe0, 0x16fe0, - 0x17000, 0x187ec, - 0x18800, 0x18af2, - 0x1b000, 0x1b001, - 0x1bc00, 0x1bc6a, - 0x1bc70, 0x1bc7c, - 0x1bc80, 0x1bc88, - 0x1bc90, 0x1bc99, - 0x1d400, 0x1d454, - 0x1d456, 0x1d49c, - 0x1d49e, 0x1d49f, - 0x1d4a2, 0x1d4a2, - 0x1d4a5, 0x1d4a6, - 0x1d4a9, 0x1d4ac, - 0x1d4ae, 0x1d4b9, - 0x1d4bb, 0x1d4bb, - 0x1d4bd, 0x1d4c3, - 0x1d4c5, 0x1d505, - 0x1d507, 0x1d50a, - 0x1d50d, 0x1d514, - 0x1d516, 0x1d51c, - 0x1d51e, 0x1d539, - 0x1d53b, 0x1d53e, - 0x1d540, 0x1d544, - 0x1d546, 0x1d546, - 0x1d54a, 0x1d550, - 0x1d552, 0x1d6a5, - 0x1d6a8, 0x1d6c0, - 0x1d6c2, 0x1d6da, - 0x1d6dc, 0x1d6fa, - 0x1d6fc, 0x1d714, - 0x1d716, 0x1d734, - 0x1d736, 0x1d74e, - 0x1d750, 0x1d76e, - 0x1d770, 0x1d788, - 0x1d78a, 0x1d7a8, - 0x1d7aa, 0x1d7c2, - 0x1d7c4, 0x1d7cb, - 0x1e800, 0x1e8c4, - 0x1e900, 0x1e943, - 0x1ee00, 0x1ee03, - 0x1ee05, 0x1ee1f, - 0x1ee21, 0x1ee22, - 0x1ee24, 0x1ee24, - 0x1ee27, 0x1ee27, - 0x1ee29, 0x1ee32, - 0x1ee34, 0x1ee37, - 0x1ee39, 0x1ee39, - 0x1ee3b, 0x1ee3b, - 0x1ee42, 0x1ee42, - 0x1ee47, 0x1ee47, - 0x1ee49, 0x1ee49, - 0x1ee4b, 0x1ee4b, - 0x1ee4d, 0x1ee4f, - 0x1ee51, 0x1ee52, - 0x1ee54, 0x1ee54, - 0x1ee57, 0x1ee57, - 0x1ee59, 0x1ee59, - 0x1ee5b, 0x1ee5b, - 0x1ee5d, 0x1ee5d, - 0x1ee5f, 0x1ee5f, - 0x1ee61, 0x1ee62, - 0x1ee64, 0x1ee64, - 0x1ee67, 0x1ee6a, - 0x1ee6c, 0x1ee72, - 0x1ee74, 0x1ee77, - 0x1ee79, 0x1ee7c, - 0x1ee7e, 0x1ee7e, - 0x1ee80, 0x1ee89, - 0x1ee8b, 0x1ee9b, - 0x1eea1, 0x1eea3, - 0x1eea5, 0x1eea9, - 0x1eeab, 0x1eebb, - 0x20000, 0x2a6d6, - 0x2a700, 0x2b734, - 0x2b740, 0x2b81d, - 0x2b820, 0x2cea1, - 0x2f800, 0x2fa1d, -}; /* CR_ID_Start */ - -/* 'ID_Continue': Derived Property */ -static const OnigCodePoint CR_ID_Continue[] = { - 676, - 0x0030, 0x0039, - 0x0041, 0x005a, - 0x005f, 0x005f, - 0x0061, 0x007a, - 0x00aa, 0x00aa, - 0x00b5, 0x00b5, - 0x00b7, 0x00b7, - 0x00ba, 0x00ba, - 0x00c0, 0x00d6, - 0x00d8, 0x00f6, - 0x00f8, 0x02c1, - 0x02c6, 0x02d1, - 0x02e0, 0x02e4, - 0x02ec, 0x02ec, - 0x02ee, 0x02ee, - 0x0300, 0x0374, - 0x0376, 0x0377, - 0x037a, 0x037d, - 0x037f, 0x037f, - 0x0386, 0x038a, - 0x038c, 0x038c, - 0x038e, 0x03a1, - 0x03a3, 0x03f5, - 0x03f7, 0x0481, - 0x0483, 0x0487, - 0x048a, 0x052f, - 0x0531, 0x0556, - 0x0559, 0x0559, - 0x0561, 0x0587, - 0x0591, 0x05bd, - 0x05bf, 0x05bf, - 0x05c1, 0x05c2, - 0x05c4, 0x05c5, - 0x05c7, 0x05c7, - 0x05d0, 0x05ea, - 0x05f0, 0x05f2, - 0x0610, 0x061a, - 0x0620, 0x0669, - 0x066e, 0x06d3, - 0x06d5, 0x06dc, - 0x06df, 0x06e8, - 0x06ea, 0x06fc, - 0x06ff, 0x06ff, - 0x0710, 0x074a, - 0x074d, 0x07b1, - 0x07c0, 0x07f5, - 0x07fa, 0x07fa, - 0x0800, 0x082d, - 0x0840, 0x085b, - 0x08a0, 0x08b4, - 0x08b6, 0x08bd, - 0x08d4, 0x08e1, - 0x08e3, 0x0963, - 0x0966, 0x096f, - 0x0971, 0x0983, - 0x0985, 0x098c, - 0x098f, 0x0990, - 0x0993, 0x09a8, - 0x09aa, 0x09b0, - 0x09b2, 0x09b2, - 0x09b6, 0x09b9, - 0x09bc, 0x09c4, - 0x09c7, 0x09c8, - 0x09cb, 0x09ce, - 0x09d7, 0x09d7, - 0x09dc, 0x09dd, - 0x09df, 0x09e3, - 0x09e6, 0x09f1, - 0x0a01, 0x0a03, - 0x0a05, 0x0a0a, - 0x0a0f, 0x0a10, - 0x0a13, 0x0a28, - 0x0a2a, 0x0a30, - 0x0a32, 0x0a33, - 0x0a35, 0x0a36, - 0x0a38, 0x0a39, - 0x0a3c, 0x0a3c, - 0x0a3e, 0x0a42, - 0x0a47, 0x0a48, - 0x0a4b, 0x0a4d, - 0x0a51, 0x0a51, - 0x0a59, 0x0a5c, - 0x0a5e, 0x0a5e, - 0x0a66, 0x0a75, - 0x0a81, 0x0a83, - 0x0a85, 0x0a8d, - 0x0a8f, 0x0a91, - 0x0a93, 0x0aa8, - 0x0aaa, 0x0ab0, - 0x0ab2, 0x0ab3, - 0x0ab5, 0x0ab9, - 0x0abc, 0x0ac5, - 0x0ac7, 0x0ac9, - 0x0acb, 0x0acd, - 0x0ad0, 0x0ad0, - 0x0ae0, 0x0ae3, - 0x0ae6, 0x0aef, - 0x0af9, 0x0af9, - 0x0b01, 0x0b03, - 0x0b05, 0x0b0c, - 0x0b0f, 0x0b10, - 0x0b13, 0x0b28, - 0x0b2a, 0x0b30, - 0x0b32, 0x0b33, - 0x0b35, 0x0b39, - 0x0b3c, 0x0b44, - 0x0b47, 0x0b48, - 0x0b4b, 0x0b4d, - 0x0b56, 0x0b57, - 0x0b5c, 0x0b5d, - 0x0b5f, 0x0b63, - 0x0b66, 0x0b6f, - 0x0b71, 0x0b71, - 0x0b82, 0x0b83, - 0x0b85, 0x0b8a, - 0x0b8e, 0x0b90, - 0x0b92, 0x0b95, - 0x0b99, 0x0b9a, - 0x0b9c, 0x0b9c, - 0x0b9e, 0x0b9f, - 0x0ba3, 0x0ba4, - 0x0ba8, 0x0baa, - 0x0bae, 0x0bb9, - 0x0bbe, 0x0bc2, - 0x0bc6, 0x0bc8, - 0x0bca, 0x0bcd, - 0x0bd0, 0x0bd0, - 0x0bd7, 0x0bd7, - 0x0be6, 0x0bef, - 0x0c00, 0x0c03, - 0x0c05, 0x0c0c, - 0x0c0e, 0x0c10, - 0x0c12, 0x0c28, - 0x0c2a, 0x0c39, - 0x0c3d, 0x0c44, - 0x0c46, 0x0c48, - 0x0c4a, 0x0c4d, - 0x0c55, 0x0c56, - 0x0c58, 0x0c5a, - 0x0c60, 0x0c63, - 0x0c66, 0x0c6f, - 0x0c80, 0x0c83, - 0x0c85, 0x0c8c, - 0x0c8e, 0x0c90, - 0x0c92, 0x0ca8, - 0x0caa, 0x0cb3, - 0x0cb5, 0x0cb9, - 0x0cbc, 0x0cc4, - 0x0cc6, 0x0cc8, - 0x0cca, 0x0ccd, - 0x0cd5, 0x0cd6, - 0x0cde, 0x0cde, - 0x0ce0, 0x0ce3, - 0x0ce6, 0x0cef, - 0x0cf1, 0x0cf2, - 0x0d01, 0x0d03, - 0x0d05, 0x0d0c, - 0x0d0e, 0x0d10, - 0x0d12, 0x0d3a, - 0x0d3d, 0x0d44, - 0x0d46, 0x0d48, - 0x0d4a, 0x0d4e, - 0x0d54, 0x0d57, - 0x0d5f, 0x0d63, - 0x0d66, 0x0d6f, - 0x0d7a, 0x0d7f, - 0x0d82, 0x0d83, - 0x0d85, 0x0d96, - 0x0d9a, 0x0db1, - 0x0db3, 0x0dbb, - 0x0dbd, 0x0dbd, - 0x0dc0, 0x0dc6, - 0x0dca, 0x0dca, - 0x0dcf, 0x0dd4, - 0x0dd6, 0x0dd6, - 0x0dd8, 0x0ddf, - 0x0de6, 0x0def, - 0x0df2, 0x0df3, - 0x0e01, 0x0e3a, - 0x0e40, 0x0e4e, - 0x0e50, 0x0e59, - 0x0e81, 0x0e82, - 0x0e84, 0x0e84, - 0x0e87, 0x0e88, - 0x0e8a, 0x0e8a, - 0x0e8d, 0x0e8d, - 0x0e94, 0x0e97, - 0x0e99, 0x0e9f, - 0x0ea1, 0x0ea3, - 0x0ea5, 0x0ea5, - 0x0ea7, 0x0ea7, - 0x0eaa, 0x0eab, - 0x0ead, 0x0eb9, - 0x0ebb, 0x0ebd, - 0x0ec0, 0x0ec4, - 0x0ec6, 0x0ec6, - 0x0ec8, 0x0ecd, - 0x0ed0, 0x0ed9, - 0x0edc, 0x0edf, - 0x0f00, 0x0f00, - 0x0f18, 0x0f19, - 0x0f20, 0x0f29, - 0x0f35, 0x0f35, - 0x0f37, 0x0f37, - 0x0f39, 0x0f39, - 0x0f3e, 0x0f47, - 0x0f49, 0x0f6c, - 0x0f71, 0x0f84, - 0x0f86, 0x0f97, - 0x0f99, 0x0fbc, - 0x0fc6, 0x0fc6, - 0x1000, 0x1049, - 0x1050, 0x109d, - 0x10a0, 0x10c5, - 0x10c7, 0x10c7, - 0x10cd, 0x10cd, - 0x10d0, 0x10fa, - 0x10fc, 0x1248, - 0x124a, 0x124d, - 0x1250, 0x1256, - 0x1258, 0x1258, - 0x125a, 0x125d, - 0x1260, 0x1288, - 0x128a, 0x128d, - 0x1290, 0x12b0, - 0x12b2, 0x12b5, - 0x12b8, 0x12be, - 0x12c0, 0x12c0, - 0x12c2, 0x12c5, - 0x12c8, 0x12d6, - 0x12d8, 0x1310, - 0x1312, 0x1315, - 0x1318, 0x135a, - 0x135d, 0x135f, - 0x1369, 0x1371, - 0x1380, 0x138f, - 0x13a0, 0x13f5, - 0x13f8, 0x13fd, - 0x1401, 0x166c, - 0x166f, 0x167f, - 0x1681, 0x169a, - 0x16a0, 0x16ea, - 0x16ee, 0x16f8, - 0x1700, 0x170c, - 0x170e, 0x1714, - 0x1720, 0x1734, - 0x1740, 0x1753, - 0x1760, 0x176c, - 0x176e, 0x1770, - 0x1772, 0x1773, - 0x1780, 0x17d3, - 0x17d7, 0x17d7, - 0x17dc, 0x17dd, - 0x17e0, 0x17e9, - 0x180b, 0x180d, - 0x1810, 0x1819, - 0x1820, 0x1877, - 0x1880, 0x18aa, - 0x18b0, 0x18f5, - 0x1900, 0x191e, - 0x1920, 0x192b, - 0x1930, 0x193b, - 0x1946, 0x196d, - 0x1970, 0x1974, - 0x1980, 0x19ab, - 0x19b0, 0x19c9, - 0x19d0, 0x19da, - 0x1a00, 0x1a1b, - 0x1a20, 0x1a5e, - 0x1a60, 0x1a7c, - 0x1a7f, 0x1a89, - 0x1a90, 0x1a99, - 0x1aa7, 0x1aa7, - 0x1ab0, 0x1abd, - 0x1b00, 0x1b4b, - 0x1b50, 0x1b59, - 0x1b6b, 0x1b73, - 0x1b80, 0x1bf3, - 0x1c00, 0x1c37, - 0x1c40, 0x1c49, - 0x1c4d, 0x1c7d, - 0x1c80, 0x1c88, - 0x1cd0, 0x1cd2, - 0x1cd4, 0x1cf6, - 0x1cf8, 0x1cf9, - 0x1d00, 0x1df5, - 0x1dfb, 0x1f15, - 0x1f18, 0x1f1d, - 0x1f20, 0x1f45, - 0x1f48, 0x1f4d, - 0x1f50, 0x1f57, - 0x1f59, 0x1f59, - 0x1f5b, 0x1f5b, - 0x1f5d, 0x1f5d, - 0x1f5f, 0x1f7d, - 0x1f80, 0x1fb4, - 0x1fb6, 0x1fbc, - 0x1fbe, 0x1fbe, - 0x1fc2, 0x1fc4, - 0x1fc6, 0x1fcc, - 0x1fd0, 0x1fd3, - 0x1fd6, 0x1fdb, - 0x1fe0, 0x1fec, - 0x1ff2, 0x1ff4, - 0x1ff6, 0x1ffc, - 0x203f, 0x2040, - 0x2054, 0x2054, - 0x2071, 0x2071, - 0x207f, 0x207f, - 0x2090, 0x209c, - 0x20d0, 0x20dc, - 0x20e1, 0x20e1, - 0x20e5, 0x20f0, - 0x2102, 0x2102, - 0x2107, 0x2107, - 0x210a, 0x2113, - 0x2115, 0x2115, - 0x2118, 0x211d, - 0x2124, 0x2124, - 0x2126, 0x2126, - 0x2128, 0x2128, - 0x212a, 0x2139, - 0x213c, 0x213f, - 0x2145, 0x2149, - 0x214e, 0x214e, - 0x2160, 0x2188, - 0x2c00, 0x2c2e, - 0x2c30, 0x2c5e, - 0x2c60, 0x2ce4, - 0x2ceb, 0x2cf3, - 0x2d00, 0x2d25, - 0x2d27, 0x2d27, - 0x2d2d, 0x2d2d, - 0x2d30, 0x2d67, - 0x2d6f, 0x2d6f, - 0x2d7f, 0x2d96, - 0x2da0, 0x2da6, - 0x2da8, 0x2dae, - 0x2db0, 0x2db6, - 0x2db8, 0x2dbe, - 0x2dc0, 0x2dc6, - 0x2dc8, 0x2dce, - 0x2dd0, 0x2dd6, - 0x2dd8, 0x2dde, - 0x2de0, 0x2dff, - 0x3005, 0x3007, - 0x3021, 0x302f, - 0x3031, 0x3035, - 0x3038, 0x303c, - 0x3041, 0x3096, - 0x3099, 0x309f, - 0x30a1, 0x30fa, - 0x30fc, 0x30ff, - 0x3105, 0x312d, - 0x3131, 0x318e, - 0x31a0, 0x31ba, - 0x31f0, 0x31ff, - 0x3400, 0x4db5, - 0x4e00, 0x9fd5, - 0xa000, 0xa48c, - 0xa4d0, 0xa4fd, - 0xa500, 0xa60c, - 0xa610, 0xa62b, - 0xa640, 0xa66f, - 0xa674, 0xa67d, - 0xa67f, 0xa6f1, - 0xa717, 0xa71f, - 0xa722, 0xa788, - 0xa78b, 0xa7ae, - 0xa7b0, 0xa7b7, - 0xa7f7, 0xa827, - 0xa840, 0xa873, - 0xa880, 0xa8c5, - 0xa8d0, 0xa8d9, - 0xa8e0, 0xa8f7, - 0xa8fb, 0xa8fb, - 0xa8fd, 0xa8fd, - 0xa900, 0xa92d, - 0xa930, 0xa953, - 0xa960, 0xa97c, - 0xa980, 0xa9c0, - 0xa9cf, 0xa9d9, - 0xa9e0, 0xa9fe, - 0xaa00, 0xaa36, - 0xaa40, 0xaa4d, - 0xaa50, 0xaa59, - 0xaa60, 0xaa76, - 0xaa7a, 0xaac2, - 0xaadb, 0xaadd, - 0xaae0, 0xaaef, - 0xaaf2, 0xaaf6, - 0xab01, 0xab06, - 0xab09, 0xab0e, - 0xab11, 0xab16, - 0xab20, 0xab26, - 0xab28, 0xab2e, - 0xab30, 0xab5a, - 0xab5c, 0xab65, - 0xab70, 0xabea, - 0xabec, 0xabed, - 0xabf0, 0xabf9, - 0xac00, 0xd7a3, - 0xd7b0, 0xd7c6, - 0xd7cb, 0xd7fb, - 0xf900, 0xfa6d, - 0xfa70, 0xfad9, - 0xfb00, 0xfb06, - 0xfb13, 0xfb17, - 0xfb1d, 0xfb28, - 0xfb2a, 0xfb36, - 0xfb38, 0xfb3c, - 0xfb3e, 0xfb3e, - 0xfb40, 0xfb41, - 0xfb43, 0xfb44, - 0xfb46, 0xfbb1, - 0xfbd3, 0xfd3d, - 0xfd50, 0xfd8f, - 0xfd92, 0xfdc7, - 0xfdf0, 0xfdfb, - 0xfe00, 0xfe0f, - 0xfe20, 0xfe2f, - 0xfe33, 0xfe34, - 0xfe4d, 0xfe4f, - 0xfe70, 0xfe74, - 0xfe76, 0xfefc, - 0xff10, 0xff19, - 0xff21, 0xff3a, - 0xff3f, 0xff3f, - 0xff41, 0xff5a, - 0xff66, 0xffbe, - 0xffc2, 0xffc7, - 0xffca, 0xffcf, - 0xffd2, 0xffd7, - 0xffda, 0xffdc, - 0x10000, 0x1000b, - 0x1000d, 0x10026, - 0x10028, 0x1003a, - 0x1003c, 0x1003d, - 0x1003f, 0x1004d, - 0x10050, 0x1005d, - 0x10080, 0x100fa, - 0x10140, 0x10174, - 0x101fd, 0x101fd, - 0x10280, 0x1029c, - 0x102a0, 0x102d0, - 0x102e0, 0x102e0, - 0x10300, 0x1031f, - 0x10330, 0x1034a, - 0x10350, 0x1037a, - 0x10380, 0x1039d, - 0x103a0, 0x103c3, - 0x103c8, 0x103cf, - 0x103d1, 0x103d5, - 0x10400, 0x1049d, - 0x104a0, 0x104a9, - 0x104b0, 0x104d3, - 0x104d8, 0x104fb, - 0x10500, 0x10527, - 0x10530, 0x10563, - 0x10600, 0x10736, - 0x10740, 0x10755, - 0x10760, 0x10767, - 0x10800, 0x10805, - 0x10808, 0x10808, - 0x1080a, 0x10835, - 0x10837, 0x10838, - 0x1083c, 0x1083c, - 0x1083f, 0x10855, - 0x10860, 0x10876, - 0x10880, 0x1089e, - 0x108e0, 0x108f2, - 0x108f4, 0x108f5, - 0x10900, 0x10915, - 0x10920, 0x10939, - 0x10980, 0x109b7, - 0x109be, 0x109bf, - 0x10a00, 0x10a03, - 0x10a05, 0x10a06, - 0x10a0c, 0x10a13, - 0x10a15, 0x10a17, - 0x10a19, 0x10a33, - 0x10a38, 0x10a3a, - 0x10a3f, 0x10a3f, - 0x10a60, 0x10a7c, - 0x10a80, 0x10a9c, - 0x10ac0, 0x10ac7, - 0x10ac9, 0x10ae6, - 0x10b00, 0x10b35, - 0x10b40, 0x10b55, - 0x10b60, 0x10b72, - 0x10b80, 0x10b91, - 0x10c00, 0x10c48, - 0x10c80, 0x10cb2, - 0x10cc0, 0x10cf2, - 0x11000, 0x11046, - 0x11066, 0x1106f, - 0x1107f, 0x110ba, - 0x110d0, 0x110e8, - 0x110f0, 0x110f9, - 0x11100, 0x11134, - 0x11136, 0x1113f, - 0x11150, 0x11173, - 0x11176, 0x11176, - 0x11180, 0x111c4, - 0x111ca, 0x111cc, - 0x111d0, 0x111da, - 0x111dc, 0x111dc, - 0x11200, 0x11211, - 0x11213, 0x11237, - 0x1123e, 0x1123e, - 0x11280, 0x11286, - 0x11288, 0x11288, - 0x1128a, 0x1128d, - 0x1128f, 0x1129d, - 0x1129f, 0x112a8, - 0x112b0, 0x112ea, - 0x112f0, 0x112f9, - 0x11300, 0x11303, - 0x11305, 0x1130c, - 0x1130f, 0x11310, - 0x11313, 0x11328, - 0x1132a, 0x11330, - 0x11332, 0x11333, - 0x11335, 0x11339, - 0x1133c, 0x11344, - 0x11347, 0x11348, - 0x1134b, 0x1134d, - 0x11350, 0x11350, - 0x11357, 0x11357, - 0x1135d, 0x11363, - 0x11366, 0x1136c, - 0x11370, 0x11374, - 0x11400, 0x1144a, - 0x11450, 0x11459, - 0x11480, 0x114c5, - 0x114c7, 0x114c7, - 0x114d0, 0x114d9, - 0x11580, 0x115b5, - 0x115b8, 0x115c0, - 0x115d8, 0x115dd, - 0x11600, 0x11640, - 0x11644, 0x11644, - 0x11650, 0x11659, - 0x11680, 0x116b7, - 0x116c0, 0x116c9, - 0x11700, 0x11719, - 0x1171d, 0x1172b, - 0x11730, 0x11739, - 0x118a0, 0x118e9, - 0x118ff, 0x118ff, - 0x11ac0, 0x11af8, - 0x11c00, 0x11c08, - 0x11c0a, 0x11c36, - 0x11c38, 0x11c40, - 0x11c50, 0x11c59, - 0x11c72, 0x11c8f, - 0x11c92, 0x11ca7, - 0x11ca9, 0x11cb6, - 0x12000, 0x12399, - 0x12400, 0x1246e, - 0x12480, 0x12543, - 0x13000, 0x1342e, - 0x14400, 0x14646, - 0x16800, 0x16a38, - 0x16a40, 0x16a5e, - 0x16a60, 0x16a69, - 0x16ad0, 0x16aed, - 0x16af0, 0x16af4, - 0x16b00, 0x16b36, - 0x16b40, 0x16b43, - 0x16b50, 0x16b59, - 0x16b63, 0x16b77, - 0x16b7d, 0x16b8f, - 0x16f00, 0x16f44, - 0x16f50, 0x16f7e, - 0x16f8f, 0x16f9f, - 0x16fe0, 0x16fe0, - 0x17000, 0x187ec, - 0x18800, 0x18af2, - 0x1b000, 0x1b001, - 0x1bc00, 0x1bc6a, - 0x1bc70, 0x1bc7c, - 0x1bc80, 0x1bc88, - 0x1bc90, 0x1bc99, - 0x1bc9d, 0x1bc9e, - 0x1d165, 0x1d169, - 0x1d16d, 0x1d172, - 0x1d17b, 0x1d182, - 0x1d185, 0x1d18b, - 0x1d1aa, 0x1d1ad, - 0x1d242, 0x1d244, - 0x1d400, 0x1d454, - 0x1d456, 0x1d49c, - 0x1d49e, 0x1d49f, - 0x1d4a2, 0x1d4a2, - 0x1d4a5, 0x1d4a6, - 0x1d4a9, 0x1d4ac, - 0x1d4ae, 0x1d4b9, - 0x1d4bb, 0x1d4bb, - 0x1d4bd, 0x1d4c3, - 0x1d4c5, 0x1d505, - 0x1d507, 0x1d50a, - 0x1d50d, 0x1d514, - 0x1d516, 0x1d51c, - 0x1d51e, 0x1d539, - 0x1d53b, 0x1d53e, - 0x1d540, 0x1d544, - 0x1d546, 0x1d546, - 0x1d54a, 0x1d550, - 0x1d552, 0x1d6a5, - 0x1d6a8, 0x1d6c0, - 0x1d6c2, 0x1d6da, - 0x1d6dc, 0x1d6fa, - 0x1d6fc, 0x1d714, - 0x1d716, 0x1d734, - 0x1d736, 0x1d74e, - 0x1d750, 0x1d76e, - 0x1d770, 0x1d788, - 0x1d78a, 0x1d7a8, - 0x1d7aa, 0x1d7c2, - 0x1d7c4, 0x1d7cb, - 0x1d7ce, 0x1d7ff, - 0x1da00, 0x1da36, - 0x1da3b, 0x1da6c, - 0x1da75, 0x1da75, - 0x1da84, 0x1da84, - 0x1da9b, 0x1da9f, - 0x1daa1, 0x1daaf, - 0x1e000, 0x1e006, - 0x1e008, 0x1e018, - 0x1e01b, 0x1e021, - 0x1e023, 0x1e024, - 0x1e026, 0x1e02a, - 0x1e800, 0x1e8c4, - 0x1e8d0, 0x1e8d6, - 0x1e900, 0x1e94a, - 0x1e950, 0x1e959, - 0x1ee00, 0x1ee03, - 0x1ee05, 0x1ee1f, - 0x1ee21, 0x1ee22, - 0x1ee24, 0x1ee24, - 0x1ee27, 0x1ee27, - 0x1ee29, 0x1ee32, - 0x1ee34, 0x1ee37, - 0x1ee39, 0x1ee39, - 0x1ee3b, 0x1ee3b, - 0x1ee42, 0x1ee42, - 0x1ee47, 0x1ee47, - 0x1ee49, 0x1ee49, - 0x1ee4b, 0x1ee4b, - 0x1ee4d, 0x1ee4f, - 0x1ee51, 0x1ee52, - 0x1ee54, 0x1ee54, - 0x1ee57, 0x1ee57, - 0x1ee59, 0x1ee59, - 0x1ee5b, 0x1ee5b, - 0x1ee5d, 0x1ee5d, - 0x1ee5f, 0x1ee5f, - 0x1ee61, 0x1ee62, - 0x1ee64, 0x1ee64, - 0x1ee67, 0x1ee6a, - 0x1ee6c, 0x1ee72, - 0x1ee74, 0x1ee77, - 0x1ee79, 0x1ee7c, - 0x1ee7e, 0x1ee7e, - 0x1ee80, 0x1ee89, - 0x1ee8b, 0x1ee9b, - 0x1eea1, 0x1eea3, - 0x1eea5, 0x1eea9, - 0x1eeab, 0x1eebb, - 0x20000, 0x2a6d6, - 0x2a700, 0x2b734, - 0x2b740, 0x2b81d, - 0x2b820, 0x2cea1, - 0x2f800, 0x2fa1d, - 0xe0100, 0xe01ef, -}; /* CR_ID_Continue */ - -/* 'XID_Start': Derived Property */ -static const OnigCodePoint CR_XID_Start[] = { - 578, - 0x0041, 0x005a, - 0x0061, 0x007a, - 0x00aa, 0x00aa, - 0x00b5, 0x00b5, - 0x00ba, 0x00ba, - 0x00c0, 0x00d6, - 0x00d8, 0x00f6, - 0x00f8, 0x02c1, - 0x02c6, 0x02d1, - 0x02e0, 0x02e4, - 0x02ec, 0x02ec, - 0x02ee, 0x02ee, - 0x0370, 0x0374, - 0x0376, 0x0377, - 0x037b, 0x037d, - 0x037f, 0x037f, - 0x0386, 0x0386, - 0x0388, 0x038a, - 0x038c, 0x038c, - 0x038e, 0x03a1, - 0x03a3, 0x03f5, - 0x03f7, 0x0481, - 0x048a, 0x052f, - 0x0531, 0x0556, - 0x0559, 0x0559, - 0x0561, 0x0587, - 0x05d0, 0x05ea, - 0x05f0, 0x05f2, - 0x0620, 0x064a, - 0x066e, 0x066f, - 0x0671, 0x06d3, - 0x06d5, 0x06d5, - 0x06e5, 0x06e6, - 0x06ee, 0x06ef, - 0x06fa, 0x06fc, - 0x06ff, 0x06ff, - 0x0710, 0x0710, - 0x0712, 0x072f, - 0x074d, 0x07a5, - 0x07b1, 0x07b1, - 0x07ca, 0x07ea, - 0x07f4, 0x07f5, - 0x07fa, 0x07fa, - 0x0800, 0x0815, - 0x081a, 0x081a, - 0x0824, 0x0824, - 0x0828, 0x0828, - 0x0840, 0x0858, - 0x08a0, 0x08b4, - 0x08b6, 0x08bd, - 0x0904, 0x0939, - 0x093d, 0x093d, - 0x0950, 0x0950, - 0x0958, 0x0961, - 0x0971, 0x0980, - 0x0985, 0x098c, - 0x098f, 0x0990, - 0x0993, 0x09a8, - 0x09aa, 0x09b0, - 0x09b2, 0x09b2, - 0x09b6, 0x09b9, - 0x09bd, 0x09bd, - 0x09ce, 0x09ce, - 0x09dc, 0x09dd, - 0x09df, 0x09e1, - 0x09f0, 0x09f1, - 0x0a05, 0x0a0a, - 0x0a0f, 0x0a10, - 0x0a13, 0x0a28, - 0x0a2a, 0x0a30, - 0x0a32, 0x0a33, - 0x0a35, 0x0a36, - 0x0a38, 0x0a39, - 0x0a59, 0x0a5c, - 0x0a5e, 0x0a5e, - 0x0a72, 0x0a74, - 0x0a85, 0x0a8d, - 0x0a8f, 0x0a91, - 0x0a93, 0x0aa8, - 0x0aaa, 0x0ab0, - 0x0ab2, 0x0ab3, - 0x0ab5, 0x0ab9, - 0x0abd, 0x0abd, - 0x0ad0, 0x0ad0, - 0x0ae0, 0x0ae1, - 0x0af9, 0x0af9, - 0x0b05, 0x0b0c, - 0x0b0f, 0x0b10, - 0x0b13, 0x0b28, - 0x0b2a, 0x0b30, - 0x0b32, 0x0b33, - 0x0b35, 0x0b39, - 0x0b3d, 0x0b3d, - 0x0b5c, 0x0b5d, - 0x0b5f, 0x0b61, - 0x0b71, 0x0b71, - 0x0b83, 0x0b83, - 0x0b85, 0x0b8a, - 0x0b8e, 0x0b90, - 0x0b92, 0x0b95, - 0x0b99, 0x0b9a, - 0x0b9c, 0x0b9c, - 0x0b9e, 0x0b9f, - 0x0ba3, 0x0ba4, - 0x0ba8, 0x0baa, - 0x0bae, 0x0bb9, - 0x0bd0, 0x0bd0, - 0x0c05, 0x0c0c, - 0x0c0e, 0x0c10, - 0x0c12, 0x0c28, - 0x0c2a, 0x0c39, - 0x0c3d, 0x0c3d, - 0x0c58, 0x0c5a, - 0x0c60, 0x0c61, - 0x0c80, 0x0c80, - 0x0c85, 0x0c8c, - 0x0c8e, 0x0c90, - 0x0c92, 0x0ca8, - 0x0caa, 0x0cb3, - 0x0cb5, 0x0cb9, - 0x0cbd, 0x0cbd, - 0x0cde, 0x0cde, - 0x0ce0, 0x0ce1, - 0x0cf1, 0x0cf2, - 0x0d05, 0x0d0c, - 0x0d0e, 0x0d10, - 0x0d12, 0x0d3a, - 0x0d3d, 0x0d3d, - 0x0d4e, 0x0d4e, - 0x0d54, 0x0d56, - 0x0d5f, 0x0d61, - 0x0d7a, 0x0d7f, - 0x0d85, 0x0d96, - 0x0d9a, 0x0db1, - 0x0db3, 0x0dbb, - 0x0dbd, 0x0dbd, - 0x0dc0, 0x0dc6, - 0x0e01, 0x0e30, - 0x0e32, 0x0e32, - 0x0e40, 0x0e46, - 0x0e81, 0x0e82, - 0x0e84, 0x0e84, - 0x0e87, 0x0e88, - 0x0e8a, 0x0e8a, - 0x0e8d, 0x0e8d, - 0x0e94, 0x0e97, - 0x0e99, 0x0e9f, - 0x0ea1, 0x0ea3, - 0x0ea5, 0x0ea5, - 0x0ea7, 0x0ea7, - 0x0eaa, 0x0eab, - 0x0ead, 0x0eb0, - 0x0eb2, 0x0eb2, - 0x0ebd, 0x0ebd, - 0x0ec0, 0x0ec4, - 0x0ec6, 0x0ec6, - 0x0edc, 0x0edf, - 0x0f00, 0x0f00, - 0x0f40, 0x0f47, - 0x0f49, 0x0f6c, - 0x0f88, 0x0f8c, - 0x1000, 0x102a, - 0x103f, 0x103f, - 0x1050, 0x1055, - 0x105a, 0x105d, - 0x1061, 0x1061, - 0x1065, 0x1066, - 0x106e, 0x1070, - 0x1075, 0x1081, - 0x108e, 0x108e, - 0x10a0, 0x10c5, - 0x10c7, 0x10c7, - 0x10cd, 0x10cd, - 0x10d0, 0x10fa, - 0x10fc, 0x1248, - 0x124a, 0x124d, - 0x1250, 0x1256, - 0x1258, 0x1258, - 0x125a, 0x125d, - 0x1260, 0x1288, - 0x128a, 0x128d, - 0x1290, 0x12b0, - 0x12b2, 0x12b5, - 0x12b8, 0x12be, - 0x12c0, 0x12c0, - 0x12c2, 0x12c5, - 0x12c8, 0x12d6, - 0x12d8, 0x1310, - 0x1312, 0x1315, - 0x1318, 0x135a, - 0x1380, 0x138f, - 0x13a0, 0x13f5, - 0x13f8, 0x13fd, - 0x1401, 0x166c, - 0x166f, 0x167f, - 0x1681, 0x169a, - 0x16a0, 0x16ea, - 0x16ee, 0x16f8, - 0x1700, 0x170c, - 0x170e, 0x1711, - 0x1720, 0x1731, - 0x1740, 0x1751, - 0x1760, 0x176c, - 0x176e, 0x1770, - 0x1780, 0x17b3, - 0x17d7, 0x17d7, - 0x17dc, 0x17dc, - 0x1820, 0x1877, - 0x1880, 0x18a8, - 0x18aa, 0x18aa, - 0x18b0, 0x18f5, - 0x1900, 0x191e, - 0x1950, 0x196d, - 0x1970, 0x1974, - 0x1980, 0x19ab, - 0x19b0, 0x19c9, - 0x1a00, 0x1a16, - 0x1a20, 0x1a54, - 0x1aa7, 0x1aa7, - 0x1b05, 0x1b33, - 0x1b45, 0x1b4b, - 0x1b83, 0x1ba0, - 0x1bae, 0x1baf, - 0x1bba, 0x1be5, - 0x1c00, 0x1c23, - 0x1c4d, 0x1c4f, - 0x1c5a, 0x1c7d, - 0x1c80, 0x1c88, - 0x1ce9, 0x1cec, - 0x1cee, 0x1cf1, - 0x1cf5, 0x1cf6, - 0x1d00, 0x1dbf, - 0x1e00, 0x1f15, - 0x1f18, 0x1f1d, - 0x1f20, 0x1f45, - 0x1f48, 0x1f4d, - 0x1f50, 0x1f57, - 0x1f59, 0x1f59, - 0x1f5b, 0x1f5b, - 0x1f5d, 0x1f5d, - 0x1f5f, 0x1f7d, - 0x1f80, 0x1fb4, - 0x1fb6, 0x1fbc, - 0x1fbe, 0x1fbe, - 0x1fc2, 0x1fc4, - 0x1fc6, 0x1fcc, - 0x1fd0, 0x1fd3, - 0x1fd6, 0x1fdb, - 0x1fe0, 0x1fec, - 0x1ff2, 0x1ff4, - 0x1ff6, 0x1ffc, - 0x2071, 0x2071, - 0x207f, 0x207f, - 0x2090, 0x209c, - 0x2102, 0x2102, - 0x2107, 0x2107, - 0x210a, 0x2113, - 0x2115, 0x2115, - 0x2118, 0x211d, - 0x2124, 0x2124, - 0x2126, 0x2126, - 0x2128, 0x2128, - 0x212a, 0x2139, - 0x213c, 0x213f, - 0x2145, 0x2149, - 0x214e, 0x214e, - 0x2160, 0x2188, - 0x2c00, 0x2c2e, - 0x2c30, 0x2c5e, - 0x2c60, 0x2ce4, - 0x2ceb, 0x2cee, - 0x2cf2, 0x2cf3, - 0x2d00, 0x2d25, - 0x2d27, 0x2d27, - 0x2d2d, 0x2d2d, - 0x2d30, 0x2d67, - 0x2d6f, 0x2d6f, - 0x2d80, 0x2d96, - 0x2da0, 0x2da6, - 0x2da8, 0x2dae, - 0x2db0, 0x2db6, - 0x2db8, 0x2dbe, - 0x2dc0, 0x2dc6, - 0x2dc8, 0x2dce, - 0x2dd0, 0x2dd6, - 0x2dd8, 0x2dde, - 0x3005, 0x3007, - 0x3021, 0x3029, - 0x3031, 0x3035, - 0x3038, 0x303c, - 0x3041, 0x3096, - 0x309d, 0x309f, - 0x30a1, 0x30fa, - 0x30fc, 0x30ff, - 0x3105, 0x312d, - 0x3131, 0x318e, - 0x31a0, 0x31ba, - 0x31f0, 0x31ff, - 0x3400, 0x4db5, - 0x4e00, 0x9fd5, - 0xa000, 0xa48c, - 0xa4d0, 0xa4fd, - 0xa500, 0xa60c, - 0xa610, 0xa61f, - 0xa62a, 0xa62b, - 0xa640, 0xa66e, - 0xa67f, 0xa69d, - 0xa6a0, 0xa6ef, - 0xa717, 0xa71f, - 0xa722, 0xa788, - 0xa78b, 0xa7ae, - 0xa7b0, 0xa7b7, - 0xa7f7, 0xa801, - 0xa803, 0xa805, - 0xa807, 0xa80a, - 0xa80c, 0xa822, - 0xa840, 0xa873, - 0xa882, 0xa8b3, - 0xa8f2, 0xa8f7, - 0xa8fb, 0xa8fb, - 0xa8fd, 0xa8fd, - 0xa90a, 0xa925, - 0xa930, 0xa946, - 0xa960, 0xa97c, - 0xa984, 0xa9b2, - 0xa9cf, 0xa9cf, - 0xa9e0, 0xa9e4, - 0xa9e6, 0xa9ef, - 0xa9fa, 0xa9fe, - 0xaa00, 0xaa28, - 0xaa40, 0xaa42, - 0xaa44, 0xaa4b, - 0xaa60, 0xaa76, - 0xaa7a, 0xaa7a, - 0xaa7e, 0xaaaf, - 0xaab1, 0xaab1, - 0xaab5, 0xaab6, - 0xaab9, 0xaabd, - 0xaac0, 0xaac0, - 0xaac2, 0xaac2, - 0xaadb, 0xaadd, - 0xaae0, 0xaaea, - 0xaaf2, 0xaaf4, - 0xab01, 0xab06, - 0xab09, 0xab0e, - 0xab11, 0xab16, - 0xab20, 0xab26, - 0xab28, 0xab2e, - 0xab30, 0xab5a, - 0xab5c, 0xab65, - 0xab70, 0xabe2, - 0xac00, 0xd7a3, - 0xd7b0, 0xd7c6, - 0xd7cb, 0xd7fb, - 0xf900, 0xfa6d, - 0xfa70, 0xfad9, - 0xfb00, 0xfb06, - 0xfb13, 0xfb17, - 0xfb1d, 0xfb1d, - 0xfb1f, 0xfb28, - 0xfb2a, 0xfb36, - 0xfb38, 0xfb3c, - 0xfb3e, 0xfb3e, - 0xfb40, 0xfb41, - 0xfb43, 0xfb44, - 0xfb46, 0xfbb1, - 0xfbd3, 0xfc5d, - 0xfc64, 0xfd3d, - 0xfd50, 0xfd8f, - 0xfd92, 0xfdc7, - 0xfdf0, 0xfdf9, - 0xfe71, 0xfe71, - 0xfe73, 0xfe73, - 0xfe77, 0xfe77, - 0xfe79, 0xfe79, - 0xfe7b, 0xfe7b, - 0xfe7d, 0xfe7d, - 0xfe7f, 0xfefc, - 0xff21, 0xff3a, - 0xff41, 0xff5a, - 0xff66, 0xff9d, - 0xffa0, 0xffbe, - 0xffc2, 0xffc7, - 0xffca, 0xffcf, - 0xffd2, 0xffd7, - 0xffda, 0xffdc, - 0x10000, 0x1000b, - 0x1000d, 0x10026, - 0x10028, 0x1003a, - 0x1003c, 0x1003d, - 0x1003f, 0x1004d, - 0x10050, 0x1005d, - 0x10080, 0x100fa, - 0x10140, 0x10174, - 0x10280, 0x1029c, - 0x102a0, 0x102d0, - 0x10300, 0x1031f, - 0x10330, 0x1034a, - 0x10350, 0x10375, - 0x10380, 0x1039d, - 0x103a0, 0x103c3, - 0x103c8, 0x103cf, - 0x103d1, 0x103d5, - 0x10400, 0x1049d, - 0x104b0, 0x104d3, - 0x104d8, 0x104fb, - 0x10500, 0x10527, - 0x10530, 0x10563, - 0x10600, 0x10736, - 0x10740, 0x10755, - 0x10760, 0x10767, - 0x10800, 0x10805, - 0x10808, 0x10808, - 0x1080a, 0x10835, - 0x10837, 0x10838, - 0x1083c, 0x1083c, - 0x1083f, 0x10855, - 0x10860, 0x10876, - 0x10880, 0x1089e, - 0x108e0, 0x108f2, - 0x108f4, 0x108f5, - 0x10900, 0x10915, - 0x10920, 0x10939, - 0x10980, 0x109b7, - 0x109be, 0x109bf, - 0x10a00, 0x10a00, - 0x10a10, 0x10a13, - 0x10a15, 0x10a17, - 0x10a19, 0x10a33, - 0x10a60, 0x10a7c, - 0x10a80, 0x10a9c, - 0x10ac0, 0x10ac7, - 0x10ac9, 0x10ae4, - 0x10b00, 0x10b35, - 0x10b40, 0x10b55, - 0x10b60, 0x10b72, - 0x10b80, 0x10b91, - 0x10c00, 0x10c48, - 0x10c80, 0x10cb2, - 0x10cc0, 0x10cf2, - 0x11003, 0x11037, - 0x11083, 0x110af, - 0x110d0, 0x110e8, - 0x11103, 0x11126, - 0x11150, 0x11172, - 0x11176, 0x11176, - 0x11183, 0x111b2, - 0x111c1, 0x111c4, - 0x111da, 0x111da, - 0x111dc, 0x111dc, - 0x11200, 0x11211, - 0x11213, 0x1122b, - 0x11280, 0x11286, - 0x11288, 0x11288, - 0x1128a, 0x1128d, - 0x1128f, 0x1129d, - 0x1129f, 0x112a8, - 0x112b0, 0x112de, - 0x11305, 0x1130c, - 0x1130f, 0x11310, - 0x11313, 0x11328, - 0x1132a, 0x11330, - 0x11332, 0x11333, - 0x11335, 0x11339, - 0x1133d, 0x1133d, - 0x11350, 0x11350, - 0x1135d, 0x11361, - 0x11400, 0x11434, - 0x11447, 0x1144a, - 0x11480, 0x114af, - 0x114c4, 0x114c5, - 0x114c7, 0x114c7, - 0x11580, 0x115ae, - 0x115d8, 0x115db, - 0x11600, 0x1162f, - 0x11644, 0x11644, - 0x11680, 0x116aa, - 0x11700, 0x11719, - 0x118a0, 0x118df, - 0x118ff, 0x118ff, - 0x11ac0, 0x11af8, - 0x11c00, 0x11c08, - 0x11c0a, 0x11c2e, - 0x11c40, 0x11c40, - 0x11c72, 0x11c8f, - 0x12000, 0x12399, - 0x12400, 0x1246e, - 0x12480, 0x12543, - 0x13000, 0x1342e, - 0x14400, 0x14646, - 0x16800, 0x16a38, - 0x16a40, 0x16a5e, - 0x16ad0, 0x16aed, - 0x16b00, 0x16b2f, - 0x16b40, 0x16b43, - 0x16b63, 0x16b77, - 0x16b7d, 0x16b8f, - 0x16f00, 0x16f44, - 0x16f50, 0x16f50, - 0x16f93, 0x16f9f, - 0x16fe0, 0x16fe0, - 0x17000, 0x187ec, - 0x18800, 0x18af2, - 0x1b000, 0x1b001, - 0x1bc00, 0x1bc6a, - 0x1bc70, 0x1bc7c, - 0x1bc80, 0x1bc88, - 0x1bc90, 0x1bc99, - 0x1d400, 0x1d454, - 0x1d456, 0x1d49c, - 0x1d49e, 0x1d49f, - 0x1d4a2, 0x1d4a2, - 0x1d4a5, 0x1d4a6, - 0x1d4a9, 0x1d4ac, - 0x1d4ae, 0x1d4b9, - 0x1d4bb, 0x1d4bb, - 0x1d4bd, 0x1d4c3, - 0x1d4c5, 0x1d505, - 0x1d507, 0x1d50a, - 0x1d50d, 0x1d514, - 0x1d516, 0x1d51c, - 0x1d51e, 0x1d539, - 0x1d53b, 0x1d53e, - 0x1d540, 0x1d544, - 0x1d546, 0x1d546, - 0x1d54a, 0x1d550, - 0x1d552, 0x1d6a5, - 0x1d6a8, 0x1d6c0, - 0x1d6c2, 0x1d6da, - 0x1d6dc, 0x1d6fa, - 0x1d6fc, 0x1d714, - 0x1d716, 0x1d734, - 0x1d736, 0x1d74e, - 0x1d750, 0x1d76e, - 0x1d770, 0x1d788, - 0x1d78a, 0x1d7a8, - 0x1d7aa, 0x1d7c2, - 0x1d7c4, 0x1d7cb, - 0x1e800, 0x1e8c4, - 0x1e900, 0x1e943, - 0x1ee00, 0x1ee03, - 0x1ee05, 0x1ee1f, - 0x1ee21, 0x1ee22, - 0x1ee24, 0x1ee24, - 0x1ee27, 0x1ee27, - 0x1ee29, 0x1ee32, - 0x1ee34, 0x1ee37, - 0x1ee39, 0x1ee39, - 0x1ee3b, 0x1ee3b, - 0x1ee42, 0x1ee42, - 0x1ee47, 0x1ee47, - 0x1ee49, 0x1ee49, - 0x1ee4b, 0x1ee4b, - 0x1ee4d, 0x1ee4f, - 0x1ee51, 0x1ee52, - 0x1ee54, 0x1ee54, - 0x1ee57, 0x1ee57, - 0x1ee59, 0x1ee59, - 0x1ee5b, 0x1ee5b, - 0x1ee5d, 0x1ee5d, - 0x1ee5f, 0x1ee5f, - 0x1ee61, 0x1ee62, - 0x1ee64, 0x1ee64, - 0x1ee67, 0x1ee6a, - 0x1ee6c, 0x1ee72, - 0x1ee74, 0x1ee77, - 0x1ee79, 0x1ee7c, - 0x1ee7e, 0x1ee7e, - 0x1ee80, 0x1ee89, - 0x1ee8b, 0x1ee9b, - 0x1eea1, 0x1eea3, - 0x1eea5, 0x1eea9, - 0x1eeab, 0x1eebb, - 0x20000, 0x2a6d6, - 0x2a700, 0x2b734, - 0x2b740, 0x2b81d, - 0x2b820, 0x2cea1, - 0x2f800, 0x2fa1d, -}; /* CR_XID_Start */ - -/* 'XID_Continue': Derived Property */ -static const OnigCodePoint CR_XID_Continue[] = { - 683, - 0x0030, 0x0039, - 0x0041, 0x005a, - 0x005f, 0x005f, - 0x0061, 0x007a, - 0x00aa, 0x00aa, - 0x00b5, 0x00b5, - 0x00b7, 0x00b7, - 0x00ba, 0x00ba, - 0x00c0, 0x00d6, - 0x00d8, 0x00f6, - 0x00f8, 0x02c1, - 0x02c6, 0x02d1, - 0x02e0, 0x02e4, - 0x02ec, 0x02ec, - 0x02ee, 0x02ee, - 0x0300, 0x0374, - 0x0376, 0x0377, - 0x037b, 0x037d, - 0x037f, 0x037f, - 0x0386, 0x038a, - 0x038c, 0x038c, - 0x038e, 0x03a1, - 0x03a3, 0x03f5, - 0x03f7, 0x0481, - 0x0483, 0x0487, - 0x048a, 0x052f, - 0x0531, 0x0556, - 0x0559, 0x0559, - 0x0561, 0x0587, - 0x0591, 0x05bd, - 0x05bf, 0x05bf, - 0x05c1, 0x05c2, - 0x05c4, 0x05c5, - 0x05c7, 0x05c7, - 0x05d0, 0x05ea, - 0x05f0, 0x05f2, - 0x0610, 0x061a, - 0x0620, 0x0669, - 0x066e, 0x06d3, - 0x06d5, 0x06dc, - 0x06df, 0x06e8, - 0x06ea, 0x06fc, - 0x06ff, 0x06ff, - 0x0710, 0x074a, - 0x074d, 0x07b1, - 0x07c0, 0x07f5, - 0x07fa, 0x07fa, - 0x0800, 0x082d, - 0x0840, 0x085b, - 0x08a0, 0x08b4, - 0x08b6, 0x08bd, - 0x08d4, 0x08e1, - 0x08e3, 0x0963, - 0x0966, 0x096f, - 0x0971, 0x0983, - 0x0985, 0x098c, - 0x098f, 0x0990, - 0x0993, 0x09a8, - 0x09aa, 0x09b0, - 0x09b2, 0x09b2, - 0x09b6, 0x09b9, - 0x09bc, 0x09c4, - 0x09c7, 0x09c8, - 0x09cb, 0x09ce, - 0x09d7, 0x09d7, - 0x09dc, 0x09dd, - 0x09df, 0x09e3, - 0x09e6, 0x09f1, - 0x0a01, 0x0a03, - 0x0a05, 0x0a0a, - 0x0a0f, 0x0a10, - 0x0a13, 0x0a28, - 0x0a2a, 0x0a30, - 0x0a32, 0x0a33, - 0x0a35, 0x0a36, - 0x0a38, 0x0a39, - 0x0a3c, 0x0a3c, - 0x0a3e, 0x0a42, - 0x0a47, 0x0a48, - 0x0a4b, 0x0a4d, - 0x0a51, 0x0a51, - 0x0a59, 0x0a5c, - 0x0a5e, 0x0a5e, - 0x0a66, 0x0a75, - 0x0a81, 0x0a83, - 0x0a85, 0x0a8d, - 0x0a8f, 0x0a91, - 0x0a93, 0x0aa8, - 0x0aaa, 0x0ab0, - 0x0ab2, 0x0ab3, - 0x0ab5, 0x0ab9, - 0x0abc, 0x0ac5, - 0x0ac7, 0x0ac9, - 0x0acb, 0x0acd, - 0x0ad0, 0x0ad0, - 0x0ae0, 0x0ae3, - 0x0ae6, 0x0aef, - 0x0af9, 0x0af9, - 0x0b01, 0x0b03, - 0x0b05, 0x0b0c, - 0x0b0f, 0x0b10, - 0x0b13, 0x0b28, - 0x0b2a, 0x0b30, - 0x0b32, 0x0b33, - 0x0b35, 0x0b39, - 0x0b3c, 0x0b44, - 0x0b47, 0x0b48, - 0x0b4b, 0x0b4d, - 0x0b56, 0x0b57, - 0x0b5c, 0x0b5d, - 0x0b5f, 0x0b63, - 0x0b66, 0x0b6f, - 0x0b71, 0x0b71, - 0x0b82, 0x0b83, - 0x0b85, 0x0b8a, - 0x0b8e, 0x0b90, - 0x0b92, 0x0b95, - 0x0b99, 0x0b9a, - 0x0b9c, 0x0b9c, - 0x0b9e, 0x0b9f, - 0x0ba3, 0x0ba4, - 0x0ba8, 0x0baa, - 0x0bae, 0x0bb9, - 0x0bbe, 0x0bc2, - 0x0bc6, 0x0bc8, - 0x0bca, 0x0bcd, - 0x0bd0, 0x0bd0, - 0x0bd7, 0x0bd7, - 0x0be6, 0x0bef, - 0x0c00, 0x0c03, - 0x0c05, 0x0c0c, - 0x0c0e, 0x0c10, - 0x0c12, 0x0c28, - 0x0c2a, 0x0c39, - 0x0c3d, 0x0c44, - 0x0c46, 0x0c48, - 0x0c4a, 0x0c4d, - 0x0c55, 0x0c56, - 0x0c58, 0x0c5a, - 0x0c60, 0x0c63, - 0x0c66, 0x0c6f, - 0x0c80, 0x0c83, - 0x0c85, 0x0c8c, - 0x0c8e, 0x0c90, - 0x0c92, 0x0ca8, - 0x0caa, 0x0cb3, - 0x0cb5, 0x0cb9, - 0x0cbc, 0x0cc4, - 0x0cc6, 0x0cc8, - 0x0cca, 0x0ccd, - 0x0cd5, 0x0cd6, - 0x0cde, 0x0cde, - 0x0ce0, 0x0ce3, - 0x0ce6, 0x0cef, - 0x0cf1, 0x0cf2, - 0x0d01, 0x0d03, - 0x0d05, 0x0d0c, - 0x0d0e, 0x0d10, - 0x0d12, 0x0d3a, - 0x0d3d, 0x0d44, - 0x0d46, 0x0d48, - 0x0d4a, 0x0d4e, - 0x0d54, 0x0d57, - 0x0d5f, 0x0d63, - 0x0d66, 0x0d6f, - 0x0d7a, 0x0d7f, - 0x0d82, 0x0d83, - 0x0d85, 0x0d96, - 0x0d9a, 0x0db1, - 0x0db3, 0x0dbb, - 0x0dbd, 0x0dbd, - 0x0dc0, 0x0dc6, - 0x0dca, 0x0dca, - 0x0dcf, 0x0dd4, - 0x0dd6, 0x0dd6, - 0x0dd8, 0x0ddf, - 0x0de6, 0x0def, - 0x0df2, 0x0df3, - 0x0e01, 0x0e3a, - 0x0e40, 0x0e4e, - 0x0e50, 0x0e59, - 0x0e81, 0x0e82, - 0x0e84, 0x0e84, - 0x0e87, 0x0e88, - 0x0e8a, 0x0e8a, - 0x0e8d, 0x0e8d, - 0x0e94, 0x0e97, - 0x0e99, 0x0e9f, - 0x0ea1, 0x0ea3, - 0x0ea5, 0x0ea5, - 0x0ea7, 0x0ea7, - 0x0eaa, 0x0eab, - 0x0ead, 0x0eb9, - 0x0ebb, 0x0ebd, - 0x0ec0, 0x0ec4, - 0x0ec6, 0x0ec6, - 0x0ec8, 0x0ecd, - 0x0ed0, 0x0ed9, - 0x0edc, 0x0edf, - 0x0f00, 0x0f00, - 0x0f18, 0x0f19, - 0x0f20, 0x0f29, - 0x0f35, 0x0f35, - 0x0f37, 0x0f37, - 0x0f39, 0x0f39, - 0x0f3e, 0x0f47, - 0x0f49, 0x0f6c, - 0x0f71, 0x0f84, - 0x0f86, 0x0f97, - 0x0f99, 0x0fbc, - 0x0fc6, 0x0fc6, - 0x1000, 0x1049, - 0x1050, 0x109d, - 0x10a0, 0x10c5, - 0x10c7, 0x10c7, - 0x10cd, 0x10cd, - 0x10d0, 0x10fa, - 0x10fc, 0x1248, - 0x124a, 0x124d, - 0x1250, 0x1256, - 0x1258, 0x1258, - 0x125a, 0x125d, - 0x1260, 0x1288, - 0x128a, 0x128d, - 0x1290, 0x12b0, - 0x12b2, 0x12b5, - 0x12b8, 0x12be, - 0x12c0, 0x12c0, - 0x12c2, 0x12c5, - 0x12c8, 0x12d6, - 0x12d8, 0x1310, - 0x1312, 0x1315, - 0x1318, 0x135a, - 0x135d, 0x135f, - 0x1369, 0x1371, - 0x1380, 0x138f, - 0x13a0, 0x13f5, - 0x13f8, 0x13fd, - 0x1401, 0x166c, - 0x166f, 0x167f, - 0x1681, 0x169a, - 0x16a0, 0x16ea, - 0x16ee, 0x16f8, - 0x1700, 0x170c, - 0x170e, 0x1714, - 0x1720, 0x1734, - 0x1740, 0x1753, - 0x1760, 0x176c, - 0x176e, 0x1770, - 0x1772, 0x1773, - 0x1780, 0x17d3, - 0x17d7, 0x17d7, - 0x17dc, 0x17dd, - 0x17e0, 0x17e9, - 0x180b, 0x180d, - 0x1810, 0x1819, - 0x1820, 0x1877, - 0x1880, 0x18aa, - 0x18b0, 0x18f5, - 0x1900, 0x191e, - 0x1920, 0x192b, - 0x1930, 0x193b, - 0x1946, 0x196d, - 0x1970, 0x1974, - 0x1980, 0x19ab, - 0x19b0, 0x19c9, - 0x19d0, 0x19da, - 0x1a00, 0x1a1b, - 0x1a20, 0x1a5e, - 0x1a60, 0x1a7c, - 0x1a7f, 0x1a89, - 0x1a90, 0x1a99, - 0x1aa7, 0x1aa7, - 0x1ab0, 0x1abd, - 0x1b00, 0x1b4b, - 0x1b50, 0x1b59, - 0x1b6b, 0x1b73, - 0x1b80, 0x1bf3, - 0x1c00, 0x1c37, - 0x1c40, 0x1c49, - 0x1c4d, 0x1c7d, - 0x1c80, 0x1c88, - 0x1cd0, 0x1cd2, - 0x1cd4, 0x1cf6, - 0x1cf8, 0x1cf9, - 0x1d00, 0x1df5, - 0x1dfb, 0x1f15, - 0x1f18, 0x1f1d, - 0x1f20, 0x1f45, - 0x1f48, 0x1f4d, - 0x1f50, 0x1f57, - 0x1f59, 0x1f59, - 0x1f5b, 0x1f5b, - 0x1f5d, 0x1f5d, - 0x1f5f, 0x1f7d, - 0x1f80, 0x1fb4, - 0x1fb6, 0x1fbc, - 0x1fbe, 0x1fbe, - 0x1fc2, 0x1fc4, - 0x1fc6, 0x1fcc, - 0x1fd0, 0x1fd3, - 0x1fd6, 0x1fdb, - 0x1fe0, 0x1fec, - 0x1ff2, 0x1ff4, - 0x1ff6, 0x1ffc, - 0x203f, 0x2040, - 0x2054, 0x2054, - 0x2071, 0x2071, - 0x207f, 0x207f, - 0x2090, 0x209c, - 0x20d0, 0x20dc, - 0x20e1, 0x20e1, - 0x20e5, 0x20f0, - 0x2102, 0x2102, - 0x2107, 0x2107, - 0x210a, 0x2113, - 0x2115, 0x2115, - 0x2118, 0x211d, - 0x2124, 0x2124, - 0x2126, 0x2126, - 0x2128, 0x2128, - 0x212a, 0x2139, - 0x213c, 0x213f, - 0x2145, 0x2149, - 0x214e, 0x214e, - 0x2160, 0x2188, - 0x2c00, 0x2c2e, - 0x2c30, 0x2c5e, - 0x2c60, 0x2ce4, - 0x2ceb, 0x2cf3, - 0x2d00, 0x2d25, - 0x2d27, 0x2d27, - 0x2d2d, 0x2d2d, - 0x2d30, 0x2d67, - 0x2d6f, 0x2d6f, - 0x2d7f, 0x2d96, - 0x2da0, 0x2da6, - 0x2da8, 0x2dae, - 0x2db0, 0x2db6, - 0x2db8, 0x2dbe, - 0x2dc0, 0x2dc6, - 0x2dc8, 0x2dce, - 0x2dd0, 0x2dd6, - 0x2dd8, 0x2dde, - 0x2de0, 0x2dff, - 0x3005, 0x3007, - 0x3021, 0x302f, - 0x3031, 0x3035, - 0x3038, 0x303c, - 0x3041, 0x3096, - 0x3099, 0x309a, - 0x309d, 0x309f, - 0x30a1, 0x30fa, - 0x30fc, 0x30ff, - 0x3105, 0x312d, - 0x3131, 0x318e, - 0x31a0, 0x31ba, - 0x31f0, 0x31ff, - 0x3400, 0x4db5, - 0x4e00, 0x9fd5, - 0xa000, 0xa48c, - 0xa4d0, 0xa4fd, - 0xa500, 0xa60c, - 0xa610, 0xa62b, - 0xa640, 0xa66f, - 0xa674, 0xa67d, - 0xa67f, 0xa6f1, - 0xa717, 0xa71f, - 0xa722, 0xa788, - 0xa78b, 0xa7ae, - 0xa7b0, 0xa7b7, - 0xa7f7, 0xa827, - 0xa840, 0xa873, - 0xa880, 0xa8c5, - 0xa8d0, 0xa8d9, - 0xa8e0, 0xa8f7, - 0xa8fb, 0xa8fb, - 0xa8fd, 0xa8fd, - 0xa900, 0xa92d, - 0xa930, 0xa953, - 0xa960, 0xa97c, - 0xa980, 0xa9c0, - 0xa9cf, 0xa9d9, - 0xa9e0, 0xa9fe, - 0xaa00, 0xaa36, - 0xaa40, 0xaa4d, - 0xaa50, 0xaa59, - 0xaa60, 0xaa76, - 0xaa7a, 0xaac2, - 0xaadb, 0xaadd, - 0xaae0, 0xaaef, - 0xaaf2, 0xaaf6, - 0xab01, 0xab06, - 0xab09, 0xab0e, - 0xab11, 0xab16, - 0xab20, 0xab26, - 0xab28, 0xab2e, - 0xab30, 0xab5a, - 0xab5c, 0xab65, - 0xab70, 0xabea, - 0xabec, 0xabed, - 0xabf0, 0xabf9, - 0xac00, 0xd7a3, - 0xd7b0, 0xd7c6, - 0xd7cb, 0xd7fb, - 0xf900, 0xfa6d, - 0xfa70, 0xfad9, - 0xfb00, 0xfb06, - 0xfb13, 0xfb17, - 0xfb1d, 0xfb28, - 0xfb2a, 0xfb36, - 0xfb38, 0xfb3c, - 0xfb3e, 0xfb3e, - 0xfb40, 0xfb41, - 0xfb43, 0xfb44, - 0xfb46, 0xfbb1, - 0xfbd3, 0xfc5d, - 0xfc64, 0xfd3d, - 0xfd50, 0xfd8f, - 0xfd92, 0xfdc7, - 0xfdf0, 0xfdf9, - 0xfe00, 0xfe0f, - 0xfe20, 0xfe2f, - 0xfe33, 0xfe34, - 0xfe4d, 0xfe4f, - 0xfe71, 0xfe71, - 0xfe73, 0xfe73, - 0xfe77, 0xfe77, - 0xfe79, 0xfe79, - 0xfe7b, 0xfe7b, - 0xfe7d, 0xfe7d, - 0xfe7f, 0xfefc, - 0xff10, 0xff19, - 0xff21, 0xff3a, - 0xff3f, 0xff3f, - 0xff41, 0xff5a, - 0xff66, 0xffbe, - 0xffc2, 0xffc7, - 0xffca, 0xffcf, - 0xffd2, 0xffd7, - 0xffda, 0xffdc, - 0x10000, 0x1000b, - 0x1000d, 0x10026, - 0x10028, 0x1003a, - 0x1003c, 0x1003d, - 0x1003f, 0x1004d, - 0x10050, 0x1005d, - 0x10080, 0x100fa, - 0x10140, 0x10174, - 0x101fd, 0x101fd, - 0x10280, 0x1029c, - 0x102a0, 0x102d0, - 0x102e0, 0x102e0, - 0x10300, 0x1031f, - 0x10330, 0x1034a, - 0x10350, 0x1037a, - 0x10380, 0x1039d, - 0x103a0, 0x103c3, - 0x103c8, 0x103cf, - 0x103d1, 0x103d5, - 0x10400, 0x1049d, - 0x104a0, 0x104a9, - 0x104b0, 0x104d3, - 0x104d8, 0x104fb, - 0x10500, 0x10527, - 0x10530, 0x10563, - 0x10600, 0x10736, - 0x10740, 0x10755, - 0x10760, 0x10767, - 0x10800, 0x10805, - 0x10808, 0x10808, - 0x1080a, 0x10835, - 0x10837, 0x10838, - 0x1083c, 0x1083c, - 0x1083f, 0x10855, - 0x10860, 0x10876, - 0x10880, 0x1089e, - 0x108e0, 0x108f2, - 0x108f4, 0x108f5, - 0x10900, 0x10915, - 0x10920, 0x10939, - 0x10980, 0x109b7, - 0x109be, 0x109bf, - 0x10a00, 0x10a03, - 0x10a05, 0x10a06, - 0x10a0c, 0x10a13, - 0x10a15, 0x10a17, - 0x10a19, 0x10a33, - 0x10a38, 0x10a3a, - 0x10a3f, 0x10a3f, - 0x10a60, 0x10a7c, - 0x10a80, 0x10a9c, - 0x10ac0, 0x10ac7, - 0x10ac9, 0x10ae6, - 0x10b00, 0x10b35, - 0x10b40, 0x10b55, - 0x10b60, 0x10b72, - 0x10b80, 0x10b91, - 0x10c00, 0x10c48, - 0x10c80, 0x10cb2, - 0x10cc0, 0x10cf2, - 0x11000, 0x11046, - 0x11066, 0x1106f, - 0x1107f, 0x110ba, - 0x110d0, 0x110e8, - 0x110f0, 0x110f9, - 0x11100, 0x11134, - 0x11136, 0x1113f, - 0x11150, 0x11173, - 0x11176, 0x11176, - 0x11180, 0x111c4, - 0x111ca, 0x111cc, - 0x111d0, 0x111da, - 0x111dc, 0x111dc, - 0x11200, 0x11211, - 0x11213, 0x11237, - 0x1123e, 0x1123e, - 0x11280, 0x11286, - 0x11288, 0x11288, - 0x1128a, 0x1128d, - 0x1128f, 0x1129d, - 0x1129f, 0x112a8, - 0x112b0, 0x112ea, - 0x112f0, 0x112f9, - 0x11300, 0x11303, - 0x11305, 0x1130c, - 0x1130f, 0x11310, - 0x11313, 0x11328, - 0x1132a, 0x11330, - 0x11332, 0x11333, - 0x11335, 0x11339, - 0x1133c, 0x11344, - 0x11347, 0x11348, - 0x1134b, 0x1134d, - 0x11350, 0x11350, - 0x11357, 0x11357, - 0x1135d, 0x11363, - 0x11366, 0x1136c, - 0x11370, 0x11374, - 0x11400, 0x1144a, - 0x11450, 0x11459, - 0x11480, 0x114c5, - 0x114c7, 0x114c7, - 0x114d0, 0x114d9, - 0x11580, 0x115b5, - 0x115b8, 0x115c0, - 0x115d8, 0x115dd, - 0x11600, 0x11640, - 0x11644, 0x11644, - 0x11650, 0x11659, - 0x11680, 0x116b7, - 0x116c0, 0x116c9, - 0x11700, 0x11719, - 0x1171d, 0x1172b, - 0x11730, 0x11739, - 0x118a0, 0x118e9, - 0x118ff, 0x118ff, - 0x11ac0, 0x11af8, - 0x11c00, 0x11c08, - 0x11c0a, 0x11c36, - 0x11c38, 0x11c40, - 0x11c50, 0x11c59, - 0x11c72, 0x11c8f, - 0x11c92, 0x11ca7, - 0x11ca9, 0x11cb6, - 0x12000, 0x12399, - 0x12400, 0x1246e, - 0x12480, 0x12543, - 0x13000, 0x1342e, - 0x14400, 0x14646, - 0x16800, 0x16a38, - 0x16a40, 0x16a5e, - 0x16a60, 0x16a69, - 0x16ad0, 0x16aed, - 0x16af0, 0x16af4, - 0x16b00, 0x16b36, - 0x16b40, 0x16b43, - 0x16b50, 0x16b59, - 0x16b63, 0x16b77, - 0x16b7d, 0x16b8f, - 0x16f00, 0x16f44, - 0x16f50, 0x16f7e, - 0x16f8f, 0x16f9f, - 0x16fe0, 0x16fe0, - 0x17000, 0x187ec, - 0x18800, 0x18af2, - 0x1b000, 0x1b001, - 0x1bc00, 0x1bc6a, - 0x1bc70, 0x1bc7c, - 0x1bc80, 0x1bc88, - 0x1bc90, 0x1bc99, - 0x1bc9d, 0x1bc9e, - 0x1d165, 0x1d169, - 0x1d16d, 0x1d172, - 0x1d17b, 0x1d182, - 0x1d185, 0x1d18b, - 0x1d1aa, 0x1d1ad, - 0x1d242, 0x1d244, - 0x1d400, 0x1d454, - 0x1d456, 0x1d49c, - 0x1d49e, 0x1d49f, - 0x1d4a2, 0x1d4a2, - 0x1d4a5, 0x1d4a6, - 0x1d4a9, 0x1d4ac, - 0x1d4ae, 0x1d4b9, - 0x1d4bb, 0x1d4bb, - 0x1d4bd, 0x1d4c3, - 0x1d4c5, 0x1d505, - 0x1d507, 0x1d50a, - 0x1d50d, 0x1d514, - 0x1d516, 0x1d51c, - 0x1d51e, 0x1d539, - 0x1d53b, 0x1d53e, - 0x1d540, 0x1d544, - 0x1d546, 0x1d546, - 0x1d54a, 0x1d550, - 0x1d552, 0x1d6a5, - 0x1d6a8, 0x1d6c0, - 0x1d6c2, 0x1d6da, - 0x1d6dc, 0x1d6fa, - 0x1d6fc, 0x1d714, - 0x1d716, 0x1d734, - 0x1d736, 0x1d74e, - 0x1d750, 0x1d76e, - 0x1d770, 0x1d788, - 0x1d78a, 0x1d7a8, - 0x1d7aa, 0x1d7c2, - 0x1d7c4, 0x1d7cb, - 0x1d7ce, 0x1d7ff, - 0x1da00, 0x1da36, - 0x1da3b, 0x1da6c, - 0x1da75, 0x1da75, - 0x1da84, 0x1da84, - 0x1da9b, 0x1da9f, - 0x1daa1, 0x1daaf, - 0x1e000, 0x1e006, - 0x1e008, 0x1e018, - 0x1e01b, 0x1e021, - 0x1e023, 0x1e024, - 0x1e026, 0x1e02a, - 0x1e800, 0x1e8c4, - 0x1e8d0, 0x1e8d6, - 0x1e900, 0x1e94a, - 0x1e950, 0x1e959, - 0x1ee00, 0x1ee03, - 0x1ee05, 0x1ee1f, - 0x1ee21, 0x1ee22, - 0x1ee24, 0x1ee24, - 0x1ee27, 0x1ee27, - 0x1ee29, 0x1ee32, - 0x1ee34, 0x1ee37, - 0x1ee39, 0x1ee39, - 0x1ee3b, 0x1ee3b, - 0x1ee42, 0x1ee42, - 0x1ee47, 0x1ee47, - 0x1ee49, 0x1ee49, - 0x1ee4b, 0x1ee4b, - 0x1ee4d, 0x1ee4f, - 0x1ee51, 0x1ee52, - 0x1ee54, 0x1ee54, - 0x1ee57, 0x1ee57, - 0x1ee59, 0x1ee59, - 0x1ee5b, 0x1ee5b, - 0x1ee5d, 0x1ee5d, - 0x1ee5f, 0x1ee5f, - 0x1ee61, 0x1ee62, - 0x1ee64, 0x1ee64, - 0x1ee67, 0x1ee6a, - 0x1ee6c, 0x1ee72, - 0x1ee74, 0x1ee77, - 0x1ee79, 0x1ee7c, - 0x1ee7e, 0x1ee7e, - 0x1ee80, 0x1ee89, - 0x1ee8b, 0x1ee9b, - 0x1eea1, 0x1eea3, - 0x1eea5, 0x1eea9, - 0x1eeab, 0x1eebb, - 0x20000, 0x2a6d6, - 0x2a700, 0x2b734, - 0x2b740, 0x2b81d, - 0x2b820, 0x2cea1, - 0x2f800, 0x2fa1d, - 0xe0100, 0xe01ef, -}; /* CR_XID_Continue */ - -/* 'Default_Ignorable_Code_Point': Derived Property */ -static const OnigCodePoint CR_Default_Ignorable_Code_Point[] = { - 17, - 0x00ad, 0x00ad, - 0x034f, 0x034f, - 0x061c, 0x061c, - 0x115f, 0x1160, - 0x17b4, 0x17b5, - 0x180b, 0x180e, - 0x200b, 0x200f, - 0x202a, 0x202e, - 0x2060, 0x206f, - 0x3164, 0x3164, - 0xfe00, 0xfe0f, - 0xfeff, 0xfeff, - 0xffa0, 0xffa0, - 0xfff0, 0xfff8, - 0x1bca0, 0x1bca3, - 0x1d173, 0x1d17a, - 0xe0000, 0xe0fff, -}; /* CR_Default_Ignorable_Code_Point */ - -/* 'Grapheme_Extend': Derived Property */ -static const OnigCodePoint CR_Grapheme_Extend[] = { - 303, - 0x0300, 0x036f, - 0x0483, 0x0489, - 0x0591, 0x05bd, - 0x05bf, 0x05bf, - 0x05c1, 0x05c2, - 0x05c4, 0x05c5, - 0x05c7, 0x05c7, - 0x0610, 0x061a, - 0x064b, 0x065f, - 0x0670, 0x0670, - 0x06d6, 0x06dc, - 0x06df, 0x06e4, - 0x06e7, 0x06e8, - 0x06ea, 0x06ed, - 0x0711, 0x0711, - 0x0730, 0x074a, - 0x07a6, 0x07b0, - 0x07eb, 0x07f3, - 0x0816, 0x0819, - 0x081b, 0x0823, - 0x0825, 0x0827, - 0x0829, 0x082d, - 0x0859, 0x085b, - 0x08d4, 0x08e1, - 0x08e3, 0x0902, - 0x093a, 0x093a, - 0x093c, 0x093c, - 0x0941, 0x0948, - 0x094d, 0x094d, - 0x0951, 0x0957, - 0x0962, 0x0963, - 0x0981, 0x0981, - 0x09bc, 0x09bc, - 0x09be, 0x09be, - 0x09c1, 0x09c4, - 0x09cd, 0x09cd, - 0x09d7, 0x09d7, - 0x09e2, 0x09e3, - 0x0a01, 0x0a02, - 0x0a3c, 0x0a3c, - 0x0a41, 0x0a42, - 0x0a47, 0x0a48, - 0x0a4b, 0x0a4d, - 0x0a51, 0x0a51, - 0x0a70, 0x0a71, - 0x0a75, 0x0a75, - 0x0a81, 0x0a82, - 0x0abc, 0x0abc, - 0x0ac1, 0x0ac5, - 0x0ac7, 0x0ac8, - 0x0acd, 0x0acd, - 0x0ae2, 0x0ae3, - 0x0b01, 0x0b01, - 0x0b3c, 0x0b3c, - 0x0b3e, 0x0b3f, - 0x0b41, 0x0b44, - 0x0b4d, 0x0b4d, - 0x0b56, 0x0b57, - 0x0b62, 0x0b63, - 0x0b82, 0x0b82, - 0x0bbe, 0x0bbe, - 0x0bc0, 0x0bc0, - 0x0bcd, 0x0bcd, - 0x0bd7, 0x0bd7, - 0x0c00, 0x0c00, - 0x0c3e, 0x0c40, - 0x0c46, 0x0c48, - 0x0c4a, 0x0c4d, - 0x0c55, 0x0c56, - 0x0c62, 0x0c63, - 0x0c81, 0x0c81, - 0x0cbc, 0x0cbc, - 0x0cbf, 0x0cbf, - 0x0cc2, 0x0cc2, - 0x0cc6, 0x0cc6, - 0x0ccc, 0x0ccd, - 0x0cd5, 0x0cd6, - 0x0ce2, 0x0ce3, - 0x0d01, 0x0d01, - 0x0d3e, 0x0d3e, - 0x0d41, 0x0d44, - 0x0d4d, 0x0d4d, - 0x0d57, 0x0d57, - 0x0d62, 0x0d63, - 0x0dca, 0x0dca, - 0x0dcf, 0x0dcf, - 0x0dd2, 0x0dd4, - 0x0dd6, 0x0dd6, - 0x0ddf, 0x0ddf, - 0x0e31, 0x0e31, - 0x0e34, 0x0e3a, - 0x0e47, 0x0e4e, - 0x0eb1, 0x0eb1, - 0x0eb4, 0x0eb9, - 0x0ebb, 0x0ebc, - 0x0ec8, 0x0ecd, - 0x0f18, 0x0f19, - 0x0f35, 0x0f35, - 0x0f37, 0x0f37, - 0x0f39, 0x0f39, - 0x0f71, 0x0f7e, - 0x0f80, 0x0f84, - 0x0f86, 0x0f87, - 0x0f8d, 0x0f97, - 0x0f99, 0x0fbc, - 0x0fc6, 0x0fc6, - 0x102d, 0x1030, - 0x1032, 0x1037, - 0x1039, 0x103a, - 0x103d, 0x103e, - 0x1058, 0x1059, - 0x105e, 0x1060, - 0x1071, 0x1074, - 0x1082, 0x1082, - 0x1085, 0x1086, - 0x108d, 0x108d, - 0x109d, 0x109d, - 0x135d, 0x135f, - 0x1712, 0x1714, - 0x1732, 0x1734, - 0x1752, 0x1753, - 0x1772, 0x1773, - 0x17b4, 0x17b5, - 0x17b7, 0x17bd, - 0x17c6, 0x17c6, - 0x17c9, 0x17d3, - 0x17dd, 0x17dd, - 0x180b, 0x180d, - 0x1885, 0x1886, - 0x18a9, 0x18a9, - 0x1920, 0x1922, - 0x1927, 0x1928, - 0x1932, 0x1932, - 0x1939, 0x193b, - 0x1a17, 0x1a18, - 0x1a1b, 0x1a1b, - 0x1a56, 0x1a56, - 0x1a58, 0x1a5e, - 0x1a60, 0x1a60, - 0x1a62, 0x1a62, - 0x1a65, 0x1a6c, - 0x1a73, 0x1a7c, - 0x1a7f, 0x1a7f, - 0x1ab0, 0x1abe, - 0x1b00, 0x1b03, - 0x1b34, 0x1b34, - 0x1b36, 0x1b3a, - 0x1b3c, 0x1b3c, - 0x1b42, 0x1b42, - 0x1b6b, 0x1b73, - 0x1b80, 0x1b81, - 0x1ba2, 0x1ba5, - 0x1ba8, 0x1ba9, - 0x1bab, 0x1bad, - 0x1be6, 0x1be6, - 0x1be8, 0x1be9, - 0x1bed, 0x1bed, - 0x1bef, 0x1bf1, - 0x1c2c, 0x1c33, - 0x1c36, 0x1c37, - 0x1cd0, 0x1cd2, - 0x1cd4, 0x1ce0, - 0x1ce2, 0x1ce8, - 0x1ced, 0x1ced, - 0x1cf4, 0x1cf4, - 0x1cf8, 0x1cf9, - 0x1dc0, 0x1df5, - 0x1dfb, 0x1dff, - 0x200c, 0x200c, - 0x20d0, 0x20f0, - 0x2cef, 0x2cf1, - 0x2d7f, 0x2d7f, - 0x2de0, 0x2dff, - 0x302a, 0x302f, - 0x3099, 0x309a, - 0xa66f, 0xa672, - 0xa674, 0xa67d, - 0xa69e, 0xa69f, - 0xa6f0, 0xa6f1, - 0xa802, 0xa802, - 0xa806, 0xa806, - 0xa80b, 0xa80b, - 0xa825, 0xa826, - 0xa8c4, 0xa8c5, - 0xa8e0, 0xa8f1, - 0xa926, 0xa92d, - 0xa947, 0xa951, - 0xa980, 0xa982, - 0xa9b3, 0xa9b3, - 0xa9b6, 0xa9b9, - 0xa9bc, 0xa9bc, - 0xa9e5, 0xa9e5, - 0xaa29, 0xaa2e, - 0xaa31, 0xaa32, - 0xaa35, 0xaa36, - 0xaa43, 0xaa43, - 0xaa4c, 0xaa4c, - 0xaa7c, 0xaa7c, - 0xaab0, 0xaab0, - 0xaab2, 0xaab4, - 0xaab7, 0xaab8, - 0xaabe, 0xaabf, - 0xaac1, 0xaac1, - 0xaaec, 0xaaed, - 0xaaf6, 0xaaf6, - 0xabe5, 0xabe5, - 0xabe8, 0xabe8, - 0xabed, 0xabed, - 0xfb1e, 0xfb1e, - 0xfe00, 0xfe0f, - 0xfe20, 0xfe2f, - 0xff9e, 0xff9f, - 0x101fd, 0x101fd, - 0x102e0, 0x102e0, - 0x10376, 0x1037a, - 0x10a01, 0x10a03, - 0x10a05, 0x10a06, - 0x10a0c, 0x10a0f, - 0x10a38, 0x10a3a, - 0x10a3f, 0x10a3f, - 0x10ae5, 0x10ae6, - 0x11001, 0x11001, - 0x11038, 0x11046, - 0x1107f, 0x11081, - 0x110b3, 0x110b6, - 0x110b9, 0x110ba, - 0x11100, 0x11102, - 0x11127, 0x1112b, - 0x1112d, 0x11134, - 0x11173, 0x11173, - 0x11180, 0x11181, - 0x111b6, 0x111be, - 0x111ca, 0x111cc, - 0x1122f, 0x11231, - 0x11234, 0x11234, - 0x11236, 0x11237, - 0x1123e, 0x1123e, - 0x112df, 0x112df, - 0x112e3, 0x112ea, - 0x11300, 0x11301, - 0x1133c, 0x1133c, - 0x1133e, 0x1133e, - 0x11340, 0x11340, - 0x11357, 0x11357, - 0x11366, 0x1136c, - 0x11370, 0x11374, - 0x11438, 0x1143f, - 0x11442, 0x11444, - 0x11446, 0x11446, - 0x114b0, 0x114b0, - 0x114b3, 0x114b8, - 0x114ba, 0x114ba, - 0x114bd, 0x114bd, - 0x114bf, 0x114c0, - 0x114c2, 0x114c3, - 0x115af, 0x115af, - 0x115b2, 0x115b5, - 0x115bc, 0x115bd, - 0x115bf, 0x115c0, - 0x115dc, 0x115dd, - 0x11633, 0x1163a, - 0x1163d, 0x1163d, - 0x1163f, 0x11640, - 0x116ab, 0x116ab, - 0x116ad, 0x116ad, - 0x116b0, 0x116b5, - 0x116b7, 0x116b7, - 0x1171d, 0x1171f, - 0x11722, 0x11725, - 0x11727, 0x1172b, - 0x11c30, 0x11c36, - 0x11c38, 0x11c3d, - 0x11c3f, 0x11c3f, - 0x11c92, 0x11ca7, - 0x11caa, 0x11cb0, - 0x11cb2, 0x11cb3, - 0x11cb5, 0x11cb6, - 0x16af0, 0x16af4, - 0x16b30, 0x16b36, - 0x16f8f, 0x16f92, - 0x1bc9d, 0x1bc9e, - 0x1d165, 0x1d165, - 0x1d167, 0x1d169, - 0x1d16e, 0x1d172, - 0x1d17b, 0x1d182, - 0x1d185, 0x1d18b, - 0x1d1aa, 0x1d1ad, - 0x1d242, 0x1d244, - 0x1da00, 0x1da36, - 0x1da3b, 0x1da6c, - 0x1da75, 0x1da75, - 0x1da84, 0x1da84, - 0x1da9b, 0x1da9f, - 0x1daa1, 0x1daaf, - 0x1e000, 0x1e006, - 0x1e008, 0x1e018, - 0x1e01b, 0x1e021, - 0x1e023, 0x1e024, - 0x1e026, 0x1e02a, - 0x1e8d0, 0x1e8d6, - 0x1e944, 0x1e94a, - 0xe0020, 0xe007f, - 0xe0100, 0xe01ef, -}; /* CR_Grapheme_Extend */ - -/* 'Grapheme_Base': Derived Property */ -static const OnigCodePoint CR_Grapheme_Base[] = { - 772, - 0x0020, 0x007e, - 0x00a0, 0x00ac, - 0x00ae, 0x02ff, - 0x0370, 0x0377, - 0x037a, 0x037f, - 0x0384, 0x038a, - 0x038c, 0x038c, - 0x038e, 0x03a1, - 0x03a3, 0x0482, - 0x048a, 0x052f, - 0x0531, 0x0556, - 0x0559, 0x055f, - 0x0561, 0x0587, - 0x0589, 0x058a, - 0x058d, 0x058f, - 0x05be, 0x05be, - 0x05c0, 0x05c0, - 0x05c3, 0x05c3, - 0x05c6, 0x05c6, - 0x05d0, 0x05ea, - 0x05f0, 0x05f4, - 0x0606, 0x060f, - 0x061b, 0x061b, - 0x061e, 0x064a, - 0x0660, 0x066f, - 0x0671, 0x06d5, - 0x06de, 0x06de, - 0x06e5, 0x06e6, - 0x06e9, 0x06e9, - 0x06ee, 0x070d, - 0x0710, 0x0710, - 0x0712, 0x072f, - 0x074d, 0x07a5, - 0x07b1, 0x07b1, - 0x07c0, 0x07ea, - 0x07f4, 0x07fa, - 0x0800, 0x0815, - 0x081a, 0x081a, - 0x0824, 0x0824, - 0x0828, 0x0828, - 0x0830, 0x083e, - 0x0840, 0x0858, - 0x085e, 0x085e, - 0x08a0, 0x08b4, - 0x08b6, 0x08bd, - 0x0903, 0x0939, - 0x093b, 0x093b, - 0x093d, 0x0940, - 0x0949, 0x094c, - 0x094e, 0x0950, - 0x0958, 0x0961, - 0x0964, 0x0980, - 0x0982, 0x0983, - 0x0985, 0x098c, - 0x098f, 0x0990, - 0x0993, 0x09a8, - 0x09aa, 0x09b0, - 0x09b2, 0x09b2, - 0x09b6, 0x09b9, - 0x09bd, 0x09bd, - 0x09bf, 0x09c0, - 0x09c7, 0x09c8, - 0x09cb, 0x09cc, - 0x09ce, 0x09ce, - 0x09dc, 0x09dd, - 0x09df, 0x09e1, - 0x09e6, 0x09fb, - 0x0a03, 0x0a03, - 0x0a05, 0x0a0a, - 0x0a0f, 0x0a10, - 0x0a13, 0x0a28, - 0x0a2a, 0x0a30, - 0x0a32, 0x0a33, - 0x0a35, 0x0a36, - 0x0a38, 0x0a39, - 0x0a3e, 0x0a40, - 0x0a59, 0x0a5c, - 0x0a5e, 0x0a5e, - 0x0a66, 0x0a6f, - 0x0a72, 0x0a74, - 0x0a83, 0x0a83, - 0x0a85, 0x0a8d, - 0x0a8f, 0x0a91, - 0x0a93, 0x0aa8, - 0x0aaa, 0x0ab0, - 0x0ab2, 0x0ab3, - 0x0ab5, 0x0ab9, - 0x0abd, 0x0ac0, - 0x0ac9, 0x0ac9, - 0x0acb, 0x0acc, - 0x0ad0, 0x0ad0, - 0x0ae0, 0x0ae1, - 0x0ae6, 0x0af1, - 0x0af9, 0x0af9, - 0x0b02, 0x0b03, - 0x0b05, 0x0b0c, - 0x0b0f, 0x0b10, - 0x0b13, 0x0b28, - 0x0b2a, 0x0b30, - 0x0b32, 0x0b33, - 0x0b35, 0x0b39, - 0x0b3d, 0x0b3d, - 0x0b40, 0x0b40, - 0x0b47, 0x0b48, - 0x0b4b, 0x0b4c, - 0x0b5c, 0x0b5d, - 0x0b5f, 0x0b61, - 0x0b66, 0x0b77, - 0x0b83, 0x0b83, - 0x0b85, 0x0b8a, - 0x0b8e, 0x0b90, - 0x0b92, 0x0b95, - 0x0b99, 0x0b9a, - 0x0b9c, 0x0b9c, - 0x0b9e, 0x0b9f, - 0x0ba3, 0x0ba4, - 0x0ba8, 0x0baa, - 0x0bae, 0x0bb9, - 0x0bbf, 0x0bbf, - 0x0bc1, 0x0bc2, - 0x0bc6, 0x0bc8, - 0x0bca, 0x0bcc, - 0x0bd0, 0x0bd0, - 0x0be6, 0x0bfa, - 0x0c01, 0x0c03, - 0x0c05, 0x0c0c, - 0x0c0e, 0x0c10, - 0x0c12, 0x0c28, - 0x0c2a, 0x0c39, - 0x0c3d, 0x0c3d, - 0x0c41, 0x0c44, - 0x0c58, 0x0c5a, - 0x0c60, 0x0c61, - 0x0c66, 0x0c6f, - 0x0c78, 0x0c80, - 0x0c82, 0x0c83, - 0x0c85, 0x0c8c, - 0x0c8e, 0x0c90, - 0x0c92, 0x0ca8, - 0x0caa, 0x0cb3, - 0x0cb5, 0x0cb9, - 0x0cbd, 0x0cbe, - 0x0cc0, 0x0cc1, - 0x0cc3, 0x0cc4, - 0x0cc7, 0x0cc8, - 0x0cca, 0x0ccb, - 0x0cde, 0x0cde, - 0x0ce0, 0x0ce1, - 0x0ce6, 0x0cef, - 0x0cf1, 0x0cf2, - 0x0d02, 0x0d03, - 0x0d05, 0x0d0c, - 0x0d0e, 0x0d10, - 0x0d12, 0x0d3a, - 0x0d3d, 0x0d3d, - 0x0d3f, 0x0d40, - 0x0d46, 0x0d48, - 0x0d4a, 0x0d4c, - 0x0d4e, 0x0d4f, - 0x0d54, 0x0d56, - 0x0d58, 0x0d61, - 0x0d66, 0x0d7f, - 0x0d82, 0x0d83, - 0x0d85, 0x0d96, - 0x0d9a, 0x0db1, - 0x0db3, 0x0dbb, - 0x0dbd, 0x0dbd, - 0x0dc0, 0x0dc6, - 0x0dd0, 0x0dd1, - 0x0dd8, 0x0dde, - 0x0de6, 0x0def, - 0x0df2, 0x0df4, - 0x0e01, 0x0e30, - 0x0e32, 0x0e33, - 0x0e3f, 0x0e46, - 0x0e4f, 0x0e5b, - 0x0e81, 0x0e82, - 0x0e84, 0x0e84, - 0x0e87, 0x0e88, - 0x0e8a, 0x0e8a, - 0x0e8d, 0x0e8d, - 0x0e94, 0x0e97, - 0x0e99, 0x0e9f, - 0x0ea1, 0x0ea3, - 0x0ea5, 0x0ea5, - 0x0ea7, 0x0ea7, - 0x0eaa, 0x0eab, - 0x0ead, 0x0eb0, - 0x0eb2, 0x0eb3, - 0x0ebd, 0x0ebd, - 0x0ec0, 0x0ec4, - 0x0ec6, 0x0ec6, - 0x0ed0, 0x0ed9, - 0x0edc, 0x0edf, - 0x0f00, 0x0f17, - 0x0f1a, 0x0f34, - 0x0f36, 0x0f36, - 0x0f38, 0x0f38, - 0x0f3a, 0x0f47, - 0x0f49, 0x0f6c, - 0x0f7f, 0x0f7f, - 0x0f85, 0x0f85, - 0x0f88, 0x0f8c, - 0x0fbe, 0x0fc5, - 0x0fc7, 0x0fcc, - 0x0fce, 0x0fda, - 0x1000, 0x102c, - 0x1031, 0x1031, - 0x1038, 0x1038, - 0x103b, 0x103c, - 0x103f, 0x1057, - 0x105a, 0x105d, - 0x1061, 0x1070, - 0x1075, 0x1081, - 0x1083, 0x1084, - 0x1087, 0x108c, - 0x108e, 0x109c, - 0x109e, 0x10c5, - 0x10c7, 0x10c7, - 0x10cd, 0x10cd, - 0x10d0, 0x1248, - 0x124a, 0x124d, - 0x1250, 0x1256, - 0x1258, 0x1258, - 0x125a, 0x125d, - 0x1260, 0x1288, - 0x128a, 0x128d, - 0x1290, 0x12b0, - 0x12b2, 0x12b5, - 0x12b8, 0x12be, - 0x12c0, 0x12c0, - 0x12c2, 0x12c5, - 0x12c8, 0x12d6, - 0x12d8, 0x1310, - 0x1312, 0x1315, - 0x1318, 0x135a, - 0x1360, 0x137c, - 0x1380, 0x1399, - 0x13a0, 0x13f5, - 0x13f8, 0x13fd, - 0x1400, 0x169c, - 0x16a0, 0x16f8, - 0x1700, 0x170c, - 0x170e, 0x1711, - 0x1720, 0x1731, - 0x1735, 0x1736, - 0x1740, 0x1751, - 0x1760, 0x176c, - 0x176e, 0x1770, - 0x1780, 0x17b3, - 0x17b6, 0x17b6, - 0x17be, 0x17c5, - 0x17c7, 0x17c8, - 0x17d4, 0x17dc, - 0x17e0, 0x17e9, - 0x17f0, 0x17f9, - 0x1800, 0x180a, - 0x1810, 0x1819, - 0x1820, 0x1877, - 0x1880, 0x1884, - 0x1887, 0x18a8, - 0x18aa, 0x18aa, - 0x18b0, 0x18f5, - 0x1900, 0x191e, - 0x1923, 0x1926, - 0x1929, 0x192b, - 0x1930, 0x1931, - 0x1933, 0x1938, - 0x1940, 0x1940, - 0x1944, 0x196d, - 0x1970, 0x1974, - 0x1980, 0x19ab, - 0x19b0, 0x19c9, - 0x19d0, 0x19da, - 0x19de, 0x1a16, - 0x1a19, 0x1a1a, - 0x1a1e, 0x1a55, - 0x1a57, 0x1a57, - 0x1a61, 0x1a61, - 0x1a63, 0x1a64, - 0x1a6d, 0x1a72, - 0x1a80, 0x1a89, - 0x1a90, 0x1a99, - 0x1aa0, 0x1aad, - 0x1b04, 0x1b33, - 0x1b35, 0x1b35, - 0x1b3b, 0x1b3b, - 0x1b3d, 0x1b41, - 0x1b43, 0x1b4b, - 0x1b50, 0x1b6a, - 0x1b74, 0x1b7c, - 0x1b82, 0x1ba1, - 0x1ba6, 0x1ba7, - 0x1baa, 0x1baa, - 0x1bae, 0x1be5, - 0x1be7, 0x1be7, - 0x1bea, 0x1bec, - 0x1bee, 0x1bee, - 0x1bf2, 0x1bf3, - 0x1bfc, 0x1c2b, - 0x1c34, 0x1c35, - 0x1c3b, 0x1c49, - 0x1c4d, 0x1c88, - 0x1cc0, 0x1cc7, - 0x1cd3, 0x1cd3, - 0x1ce1, 0x1ce1, - 0x1ce9, 0x1cec, - 0x1cee, 0x1cf3, - 0x1cf5, 0x1cf6, - 0x1d00, 0x1dbf, - 0x1e00, 0x1f15, - 0x1f18, 0x1f1d, - 0x1f20, 0x1f45, - 0x1f48, 0x1f4d, - 0x1f50, 0x1f57, - 0x1f59, 0x1f59, - 0x1f5b, 0x1f5b, - 0x1f5d, 0x1f5d, - 0x1f5f, 0x1f7d, - 0x1f80, 0x1fb4, - 0x1fb6, 0x1fc4, - 0x1fc6, 0x1fd3, - 0x1fd6, 0x1fdb, - 0x1fdd, 0x1fef, - 0x1ff2, 0x1ff4, - 0x1ff6, 0x1ffe, - 0x2000, 0x200a, - 0x2010, 0x2027, - 0x202f, 0x205f, - 0x2070, 0x2071, - 0x2074, 0x208e, - 0x2090, 0x209c, - 0x20a0, 0x20be, - 0x2100, 0x218b, - 0x2190, 0x23fe, - 0x2400, 0x2426, - 0x2440, 0x244a, - 0x2460, 0x2b73, - 0x2b76, 0x2b95, - 0x2b98, 0x2bb9, - 0x2bbd, 0x2bc8, - 0x2bca, 0x2bd1, - 0x2bec, 0x2bef, - 0x2c00, 0x2c2e, - 0x2c30, 0x2c5e, - 0x2c60, 0x2cee, - 0x2cf2, 0x2cf3, - 0x2cf9, 0x2d25, - 0x2d27, 0x2d27, - 0x2d2d, 0x2d2d, - 0x2d30, 0x2d67, - 0x2d6f, 0x2d70, - 0x2d80, 0x2d96, - 0x2da0, 0x2da6, - 0x2da8, 0x2dae, - 0x2db0, 0x2db6, - 0x2db8, 0x2dbe, - 0x2dc0, 0x2dc6, - 0x2dc8, 0x2dce, - 0x2dd0, 0x2dd6, - 0x2dd8, 0x2dde, - 0x2e00, 0x2e44, - 0x2e80, 0x2e99, - 0x2e9b, 0x2ef3, - 0x2f00, 0x2fd5, - 0x2ff0, 0x2ffb, - 0x3000, 0x3029, - 0x3030, 0x303f, - 0x3041, 0x3096, - 0x309b, 0x30ff, - 0x3105, 0x312d, - 0x3131, 0x318e, - 0x3190, 0x31ba, - 0x31c0, 0x31e3, - 0x31f0, 0x321e, - 0x3220, 0x32fe, - 0x3300, 0x4db5, - 0x4dc0, 0x9fd5, - 0xa000, 0xa48c, - 0xa490, 0xa4c6, - 0xa4d0, 0xa62b, - 0xa640, 0xa66e, - 0xa673, 0xa673, - 0xa67e, 0xa69d, - 0xa6a0, 0xa6ef, - 0xa6f2, 0xa6f7, - 0xa700, 0xa7ae, - 0xa7b0, 0xa7b7, - 0xa7f7, 0xa801, - 0xa803, 0xa805, - 0xa807, 0xa80a, - 0xa80c, 0xa824, - 0xa827, 0xa82b, - 0xa830, 0xa839, - 0xa840, 0xa877, - 0xa880, 0xa8c3, - 0xa8ce, 0xa8d9, - 0xa8f2, 0xa8fd, - 0xa900, 0xa925, - 0xa92e, 0xa946, - 0xa952, 0xa953, - 0xa95f, 0xa97c, - 0xa983, 0xa9b2, - 0xa9b4, 0xa9b5, - 0xa9ba, 0xa9bb, - 0xa9bd, 0xa9cd, - 0xa9cf, 0xa9d9, - 0xa9de, 0xa9e4, - 0xa9e6, 0xa9fe, - 0xaa00, 0xaa28, - 0xaa2f, 0xaa30, - 0xaa33, 0xaa34, - 0xaa40, 0xaa42, - 0xaa44, 0xaa4b, - 0xaa4d, 0xaa4d, - 0xaa50, 0xaa59, - 0xaa5c, 0xaa7b, - 0xaa7d, 0xaaaf, - 0xaab1, 0xaab1, - 0xaab5, 0xaab6, - 0xaab9, 0xaabd, - 0xaac0, 0xaac0, - 0xaac2, 0xaac2, - 0xaadb, 0xaaeb, - 0xaaee, 0xaaf5, - 0xab01, 0xab06, - 0xab09, 0xab0e, - 0xab11, 0xab16, - 0xab20, 0xab26, - 0xab28, 0xab2e, - 0xab30, 0xab65, - 0xab70, 0xabe4, - 0xabe6, 0xabe7, - 0xabe9, 0xabec, - 0xabf0, 0xabf9, - 0xac00, 0xd7a3, - 0xd7b0, 0xd7c6, - 0xd7cb, 0xd7fb, - 0xf900, 0xfa6d, - 0xfa70, 0xfad9, - 0xfb00, 0xfb06, - 0xfb13, 0xfb17, - 0xfb1d, 0xfb1d, - 0xfb1f, 0xfb36, - 0xfb38, 0xfb3c, - 0xfb3e, 0xfb3e, - 0xfb40, 0xfb41, - 0xfb43, 0xfb44, - 0xfb46, 0xfbc1, - 0xfbd3, 0xfd3f, - 0xfd50, 0xfd8f, - 0xfd92, 0xfdc7, - 0xfdf0, 0xfdfd, - 0xfe10, 0xfe19, - 0xfe30, 0xfe52, - 0xfe54, 0xfe66, - 0xfe68, 0xfe6b, - 0xfe70, 0xfe74, - 0xfe76, 0xfefc, - 0xff01, 0xff9d, - 0xffa0, 0xffbe, - 0xffc2, 0xffc7, - 0xffca, 0xffcf, - 0xffd2, 0xffd7, - 0xffda, 0xffdc, - 0xffe0, 0xffe6, - 0xffe8, 0xffee, - 0xfffc, 0xfffd, - 0x10000, 0x1000b, - 0x1000d, 0x10026, - 0x10028, 0x1003a, - 0x1003c, 0x1003d, - 0x1003f, 0x1004d, - 0x10050, 0x1005d, - 0x10080, 0x100fa, - 0x10100, 0x10102, - 0x10107, 0x10133, - 0x10137, 0x1018e, - 0x10190, 0x1019b, - 0x101a0, 0x101a0, - 0x101d0, 0x101fc, - 0x10280, 0x1029c, - 0x102a0, 0x102d0, - 0x102e1, 0x102fb, - 0x10300, 0x10323, - 0x10330, 0x1034a, - 0x10350, 0x10375, - 0x10380, 0x1039d, - 0x1039f, 0x103c3, - 0x103c8, 0x103d5, - 0x10400, 0x1049d, - 0x104a0, 0x104a9, - 0x104b0, 0x104d3, - 0x104d8, 0x104fb, - 0x10500, 0x10527, - 0x10530, 0x10563, - 0x1056f, 0x1056f, - 0x10600, 0x10736, - 0x10740, 0x10755, - 0x10760, 0x10767, - 0x10800, 0x10805, - 0x10808, 0x10808, - 0x1080a, 0x10835, - 0x10837, 0x10838, - 0x1083c, 0x1083c, - 0x1083f, 0x10855, - 0x10857, 0x1089e, - 0x108a7, 0x108af, - 0x108e0, 0x108f2, - 0x108f4, 0x108f5, - 0x108fb, 0x1091b, - 0x1091f, 0x10939, - 0x1093f, 0x1093f, - 0x10980, 0x109b7, - 0x109bc, 0x109cf, - 0x109d2, 0x10a00, - 0x10a10, 0x10a13, - 0x10a15, 0x10a17, - 0x10a19, 0x10a33, - 0x10a40, 0x10a47, - 0x10a50, 0x10a58, - 0x10a60, 0x10a9f, - 0x10ac0, 0x10ae4, - 0x10aeb, 0x10af6, - 0x10b00, 0x10b35, - 0x10b39, 0x10b55, - 0x10b58, 0x10b72, - 0x10b78, 0x10b91, - 0x10b99, 0x10b9c, - 0x10ba9, 0x10baf, - 0x10c00, 0x10c48, - 0x10c80, 0x10cb2, - 0x10cc0, 0x10cf2, - 0x10cfa, 0x10cff, - 0x10e60, 0x10e7e, - 0x11000, 0x11000, - 0x11002, 0x11037, - 0x11047, 0x1104d, - 0x11052, 0x1106f, - 0x11082, 0x110b2, - 0x110b7, 0x110b8, - 0x110bb, 0x110bc, - 0x110be, 0x110c1, - 0x110d0, 0x110e8, - 0x110f0, 0x110f9, - 0x11103, 0x11126, - 0x1112c, 0x1112c, - 0x11136, 0x11143, - 0x11150, 0x11172, - 0x11174, 0x11176, - 0x11182, 0x111b5, - 0x111bf, 0x111c9, - 0x111cd, 0x111cd, - 0x111d0, 0x111df, - 0x111e1, 0x111f4, - 0x11200, 0x11211, - 0x11213, 0x1122e, - 0x11232, 0x11233, - 0x11235, 0x11235, - 0x11238, 0x1123d, - 0x11280, 0x11286, - 0x11288, 0x11288, - 0x1128a, 0x1128d, - 0x1128f, 0x1129d, - 0x1129f, 0x112a9, - 0x112b0, 0x112de, - 0x112e0, 0x112e2, - 0x112f0, 0x112f9, - 0x11302, 0x11303, - 0x11305, 0x1130c, - 0x1130f, 0x11310, - 0x11313, 0x11328, - 0x1132a, 0x11330, - 0x11332, 0x11333, - 0x11335, 0x11339, - 0x1133d, 0x1133d, - 0x1133f, 0x1133f, - 0x11341, 0x11344, - 0x11347, 0x11348, - 0x1134b, 0x1134d, - 0x11350, 0x11350, - 0x1135d, 0x11363, - 0x11400, 0x11437, - 0x11440, 0x11441, - 0x11445, 0x11445, - 0x11447, 0x11459, - 0x1145b, 0x1145b, - 0x1145d, 0x1145d, - 0x11480, 0x114af, - 0x114b1, 0x114b2, - 0x114b9, 0x114b9, - 0x114bb, 0x114bc, - 0x114be, 0x114be, - 0x114c1, 0x114c1, - 0x114c4, 0x114c7, - 0x114d0, 0x114d9, - 0x11580, 0x115ae, - 0x115b0, 0x115b1, - 0x115b8, 0x115bb, - 0x115be, 0x115be, - 0x115c1, 0x115db, - 0x11600, 0x11632, - 0x1163b, 0x1163c, - 0x1163e, 0x1163e, - 0x11641, 0x11644, - 0x11650, 0x11659, - 0x11660, 0x1166c, - 0x11680, 0x116aa, - 0x116ac, 0x116ac, - 0x116ae, 0x116af, - 0x116b6, 0x116b6, - 0x116c0, 0x116c9, - 0x11700, 0x11719, - 0x11720, 0x11721, - 0x11726, 0x11726, - 0x11730, 0x1173f, - 0x118a0, 0x118f2, - 0x118ff, 0x118ff, - 0x11ac0, 0x11af8, - 0x11c00, 0x11c08, - 0x11c0a, 0x11c2f, - 0x11c3e, 0x11c3e, - 0x11c40, 0x11c45, - 0x11c50, 0x11c6c, - 0x11c70, 0x11c8f, - 0x11ca9, 0x11ca9, - 0x11cb1, 0x11cb1, - 0x11cb4, 0x11cb4, - 0x12000, 0x12399, - 0x12400, 0x1246e, - 0x12470, 0x12474, - 0x12480, 0x12543, - 0x13000, 0x1342e, - 0x14400, 0x14646, - 0x16800, 0x16a38, - 0x16a40, 0x16a5e, - 0x16a60, 0x16a69, - 0x16a6e, 0x16a6f, - 0x16ad0, 0x16aed, - 0x16af5, 0x16af5, - 0x16b00, 0x16b2f, - 0x16b37, 0x16b45, - 0x16b50, 0x16b59, - 0x16b5b, 0x16b61, - 0x16b63, 0x16b77, - 0x16b7d, 0x16b8f, - 0x16f00, 0x16f44, - 0x16f50, 0x16f7e, - 0x16f93, 0x16f9f, - 0x16fe0, 0x16fe0, - 0x17000, 0x187ec, - 0x18800, 0x18af2, - 0x1b000, 0x1b001, - 0x1bc00, 0x1bc6a, - 0x1bc70, 0x1bc7c, - 0x1bc80, 0x1bc88, - 0x1bc90, 0x1bc99, - 0x1bc9c, 0x1bc9c, - 0x1bc9f, 0x1bc9f, - 0x1d000, 0x1d0f5, - 0x1d100, 0x1d126, - 0x1d129, 0x1d164, - 0x1d166, 0x1d166, - 0x1d16a, 0x1d16d, - 0x1d183, 0x1d184, - 0x1d18c, 0x1d1a9, - 0x1d1ae, 0x1d1e8, - 0x1d200, 0x1d241, - 0x1d245, 0x1d245, - 0x1d300, 0x1d356, - 0x1d360, 0x1d371, - 0x1d400, 0x1d454, - 0x1d456, 0x1d49c, - 0x1d49e, 0x1d49f, - 0x1d4a2, 0x1d4a2, - 0x1d4a5, 0x1d4a6, - 0x1d4a9, 0x1d4ac, - 0x1d4ae, 0x1d4b9, - 0x1d4bb, 0x1d4bb, - 0x1d4bd, 0x1d4c3, - 0x1d4c5, 0x1d505, - 0x1d507, 0x1d50a, - 0x1d50d, 0x1d514, - 0x1d516, 0x1d51c, - 0x1d51e, 0x1d539, - 0x1d53b, 0x1d53e, - 0x1d540, 0x1d544, - 0x1d546, 0x1d546, - 0x1d54a, 0x1d550, - 0x1d552, 0x1d6a5, - 0x1d6a8, 0x1d7cb, - 0x1d7ce, 0x1d9ff, - 0x1da37, 0x1da3a, - 0x1da6d, 0x1da74, - 0x1da76, 0x1da83, - 0x1da85, 0x1da8b, - 0x1e800, 0x1e8c4, - 0x1e8c7, 0x1e8cf, - 0x1e900, 0x1e943, - 0x1e950, 0x1e959, - 0x1e95e, 0x1e95f, - 0x1ee00, 0x1ee03, - 0x1ee05, 0x1ee1f, - 0x1ee21, 0x1ee22, - 0x1ee24, 0x1ee24, - 0x1ee27, 0x1ee27, - 0x1ee29, 0x1ee32, - 0x1ee34, 0x1ee37, - 0x1ee39, 0x1ee39, - 0x1ee3b, 0x1ee3b, - 0x1ee42, 0x1ee42, - 0x1ee47, 0x1ee47, - 0x1ee49, 0x1ee49, - 0x1ee4b, 0x1ee4b, - 0x1ee4d, 0x1ee4f, - 0x1ee51, 0x1ee52, - 0x1ee54, 0x1ee54, - 0x1ee57, 0x1ee57, - 0x1ee59, 0x1ee59, - 0x1ee5b, 0x1ee5b, - 0x1ee5d, 0x1ee5d, - 0x1ee5f, 0x1ee5f, - 0x1ee61, 0x1ee62, - 0x1ee64, 0x1ee64, - 0x1ee67, 0x1ee6a, - 0x1ee6c, 0x1ee72, - 0x1ee74, 0x1ee77, - 0x1ee79, 0x1ee7c, - 0x1ee7e, 0x1ee7e, - 0x1ee80, 0x1ee89, - 0x1ee8b, 0x1ee9b, - 0x1eea1, 0x1eea3, - 0x1eea5, 0x1eea9, - 0x1eeab, 0x1eebb, - 0x1eef0, 0x1eef1, - 0x1f000, 0x1f02b, - 0x1f030, 0x1f093, - 0x1f0a0, 0x1f0ae, - 0x1f0b1, 0x1f0bf, - 0x1f0c1, 0x1f0cf, - 0x1f0d1, 0x1f0f5, - 0x1f100, 0x1f10c, - 0x1f110, 0x1f12e, - 0x1f130, 0x1f16b, - 0x1f170, 0x1f1ac, - 0x1f1e6, 0x1f202, - 0x1f210, 0x1f23b, - 0x1f240, 0x1f248, - 0x1f250, 0x1f251, - 0x1f300, 0x1f6d2, - 0x1f6e0, 0x1f6ec, - 0x1f6f0, 0x1f6f6, - 0x1f700, 0x1f773, - 0x1f780, 0x1f7d4, - 0x1f800, 0x1f80b, - 0x1f810, 0x1f847, - 0x1f850, 0x1f859, - 0x1f860, 0x1f887, - 0x1f890, 0x1f8ad, - 0x1f910, 0x1f91e, - 0x1f920, 0x1f927, - 0x1f930, 0x1f930, - 0x1f933, 0x1f93e, - 0x1f940, 0x1f94b, - 0x1f950, 0x1f95e, - 0x1f980, 0x1f991, - 0x1f9c0, 0x1f9c0, - 0x20000, 0x2a6d6, - 0x2a700, 0x2b734, - 0x2b740, 0x2b81d, - 0x2b820, 0x2cea1, - 0x2f800, 0x2fa1d, -}; /* CR_Grapheme_Base */ - -/* 'Grapheme_Link': Derived Property */ -static const OnigCodePoint CR_Grapheme_Link[] = { - 43, - 0x094d, 0x094d, - 0x09cd, 0x09cd, - 0x0a4d, 0x0a4d, - 0x0acd, 0x0acd, - 0x0b4d, 0x0b4d, - 0x0bcd, 0x0bcd, - 0x0c4d, 0x0c4d, - 0x0ccd, 0x0ccd, - 0x0d4d, 0x0d4d, - 0x0dca, 0x0dca, - 0x0e3a, 0x0e3a, - 0x0f84, 0x0f84, - 0x1039, 0x103a, - 0x1714, 0x1714, - 0x1734, 0x1734, - 0x17d2, 0x17d2, - 0x1a60, 0x1a60, - 0x1b44, 0x1b44, - 0x1baa, 0x1bab, - 0x1bf2, 0x1bf3, - 0x2d7f, 0x2d7f, - 0xa806, 0xa806, - 0xa8c4, 0xa8c4, - 0xa953, 0xa953, - 0xa9c0, 0xa9c0, - 0xaaf6, 0xaaf6, - 0xabed, 0xabed, - 0x10a3f, 0x10a3f, - 0x11046, 0x11046, - 0x1107f, 0x1107f, - 0x110b9, 0x110b9, - 0x11133, 0x11134, - 0x111c0, 0x111c0, - 0x11235, 0x11235, - 0x112ea, 0x112ea, - 0x1134d, 0x1134d, - 0x11442, 0x11442, - 0x114c2, 0x114c2, - 0x115bf, 0x115bf, - 0x1163f, 0x1163f, - 0x116b6, 0x116b6, - 0x1172b, 0x1172b, - 0x11c3f, 0x11c3f, -}; /* CR_Grapheme_Link */ - -/* 'Common': Script */ -static const OnigCodePoint CR_Common[] = { - 165, - 0x0000, 0x0040, - 0x005b, 0x0060, - 0x007b, 0x00a9, - 0x00ab, 0x00b9, - 0x00bb, 0x00bf, - 0x00d7, 0x00d7, - 0x00f7, 0x00f7, - 0x02b9, 0x02df, - 0x02e5, 0x02e9, - 0x02ec, 0x02ff, - 0x0374, 0x0374, - 0x037e, 0x037e, - 0x0385, 0x0385, - 0x0387, 0x0387, - 0x0589, 0x0589, - 0x0605, 0x0605, - 0x060c, 0x060c, - 0x061b, 0x061c, - 0x061f, 0x061f, - 0x0640, 0x0640, - 0x06dd, 0x06dd, - 0x08e2, 0x08e2, - 0x0964, 0x0965, - 0x0e3f, 0x0e3f, - 0x0fd5, 0x0fd8, - 0x10fb, 0x10fb, - 0x16eb, 0x16ed, - 0x1735, 0x1736, - 0x1802, 0x1803, - 0x1805, 0x1805, - 0x1cd3, 0x1cd3, - 0x1ce1, 0x1ce1, - 0x1ce9, 0x1cec, - 0x1cee, 0x1cf3, - 0x1cf5, 0x1cf6, - 0x2000, 0x200b, - 0x200e, 0x2064, - 0x2066, 0x2070, - 0x2074, 0x207e, - 0x2080, 0x208e, - 0x20a0, 0x20be, - 0x2100, 0x2125, - 0x2127, 0x2129, - 0x212c, 0x2131, - 0x2133, 0x214d, - 0x214f, 0x215f, - 0x2189, 0x218b, - 0x2190, 0x23fe, - 0x2400, 0x2426, - 0x2440, 0x244a, - 0x2460, 0x27ff, - 0x2900, 0x2b73, - 0x2b76, 0x2b95, - 0x2b98, 0x2bb9, - 0x2bbd, 0x2bc8, - 0x2bca, 0x2bd1, - 0x2bec, 0x2bef, - 0x2e00, 0x2e44, - 0x2ff0, 0x2ffb, - 0x3000, 0x3004, - 0x3006, 0x3006, - 0x3008, 0x3020, - 0x3030, 0x3037, - 0x303c, 0x303f, - 0x309b, 0x309c, - 0x30a0, 0x30a0, - 0x30fb, 0x30fc, - 0x3190, 0x319f, - 0x31c0, 0x31e3, - 0x3220, 0x325f, - 0x327f, 0x32cf, - 0x3358, 0x33ff, - 0x4dc0, 0x4dff, - 0xa700, 0xa721, - 0xa788, 0xa78a, - 0xa830, 0xa839, - 0xa92e, 0xa92e, - 0xa9cf, 0xa9cf, - 0xab5b, 0xab5b, - 0xfd3e, 0xfd3f, - 0xfe10, 0xfe19, - 0xfe30, 0xfe52, - 0xfe54, 0xfe66, - 0xfe68, 0xfe6b, - 0xfeff, 0xfeff, - 0xff01, 0xff20, - 0xff3b, 0xff40, - 0xff5b, 0xff65, - 0xff70, 0xff70, - 0xff9e, 0xff9f, - 0xffe0, 0xffe6, - 0xffe8, 0xffee, - 0xfff9, 0xfffd, - 0x10100, 0x10102, - 0x10107, 0x10133, - 0x10137, 0x1013f, - 0x10190, 0x1019b, - 0x101d0, 0x101fc, - 0x102e1, 0x102fb, - 0x1bca0, 0x1bca3, - 0x1d000, 0x1d0f5, - 0x1d100, 0x1d126, - 0x1d129, 0x1d166, - 0x1d16a, 0x1d17a, - 0x1d183, 0x1d184, - 0x1d18c, 0x1d1a9, - 0x1d1ae, 0x1d1e8, - 0x1d300, 0x1d356, - 0x1d360, 0x1d371, - 0x1d400, 0x1d454, - 0x1d456, 0x1d49c, - 0x1d49e, 0x1d49f, - 0x1d4a2, 0x1d4a2, - 0x1d4a5, 0x1d4a6, - 0x1d4a9, 0x1d4ac, - 0x1d4ae, 0x1d4b9, - 0x1d4bb, 0x1d4bb, - 0x1d4bd, 0x1d4c3, - 0x1d4c5, 0x1d505, - 0x1d507, 0x1d50a, - 0x1d50d, 0x1d514, - 0x1d516, 0x1d51c, - 0x1d51e, 0x1d539, - 0x1d53b, 0x1d53e, - 0x1d540, 0x1d544, - 0x1d546, 0x1d546, - 0x1d54a, 0x1d550, - 0x1d552, 0x1d6a5, - 0x1d6a8, 0x1d7cb, - 0x1d7ce, 0x1d7ff, - 0x1f000, 0x1f02b, - 0x1f030, 0x1f093, - 0x1f0a0, 0x1f0ae, - 0x1f0b1, 0x1f0bf, - 0x1f0c1, 0x1f0cf, - 0x1f0d1, 0x1f0f5, - 0x1f100, 0x1f10c, - 0x1f110, 0x1f12e, - 0x1f130, 0x1f16b, - 0x1f170, 0x1f1ac, - 0x1f1e6, 0x1f1ff, - 0x1f201, 0x1f202, - 0x1f210, 0x1f23b, - 0x1f240, 0x1f248, - 0x1f250, 0x1f251, - 0x1f300, 0x1f6d2, - 0x1f6e0, 0x1f6ec, - 0x1f6f0, 0x1f6f6, - 0x1f700, 0x1f773, - 0x1f780, 0x1f7d4, - 0x1f800, 0x1f80b, - 0x1f810, 0x1f847, - 0x1f850, 0x1f859, - 0x1f860, 0x1f887, - 0x1f890, 0x1f8ad, - 0x1f910, 0x1f91e, - 0x1f920, 0x1f927, - 0x1f930, 0x1f930, - 0x1f933, 0x1f93e, - 0x1f940, 0x1f94b, - 0x1f950, 0x1f95e, - 0x1f980, 0x1f991, - 0x1f9c0, 0x1f9c0, - 0xe0001, 0xe0001, - 0xe0020, 0xe007f, -}; /* CR_Common */ - -/* 'Latin': Script */ -static const OnigCodePoint CR_Latin[] = { - 31, - 0x0041, 0x005a, - 0x0061, 0x007a, - 0x00aa, 0x00aa, - 0x00ba, 0x00ba, - 0x00c0, 0x00d6, - 0x00d8, 0x00f6, - 0x00f8, 0x02b8, - 0x02e0, 0x02e4, - 0x1d00, 0x1d25, - 0x1d2c, 0x1d5c, - 0x1d62, 0x1d65, - 0x1d6b, 0x1d77, - 0x1d79, 0x1dbe, - 0x1e00, 0x1eff, - 0x2071, 0x2071, - 0x207f, 0x207f, - 0x2090, 0x209c, - 0x212a, 0x212b, - 0x2132, 0x2132, - 0x214e, 0x214e, - 0x2160, 0x2188, - 0x2c60, 0x2c7f, - 0xa722, 0xa787, - 0xa78b, 0xa7ae, - 0xa7b0, 0xa7b7, - 0xa7f7, 0xa7ff, - 0xab30, 0xab5a, - 0xab5c, 0xab64, - 0xfb00, 0xfb06, - 0xff21, 0xff3a, - 0xff41, 0xff5a, -}; /* CR_Latin */ - -/* 'Greek': Script */ -static const OnigCodePoint CR_Greek[] = { - 36, - 0x0370, 0x0373, - 0x0375, 0x0377, - 0x037a, 0x037d, - 0x037f, 0x037f, - 0x0384, 0x0384, - 0x0386, 0x0386, - 0x0388, 0x038a, - 0x038c, 0x038c, - 0x038e, 0x03a1, - 0x03a3, 0x03e1, - 0x03f0, 0x03ff, - 0x1d26, 0x1d2a, - 0x1d5d, 0x1d61, - 0x1d66, 0x1d6a, - 0x1dbf, 0x1dbf, - 0x1f00, 0x1f15, - 0x1f18, 0x1f1d, - 0x1f20, 0x1f45, - 0x1f48, 0x1f4d, - 0x1f50, 0x1f57, - 0x1f59, 0x1f59, - 0x1f5b, 0x1f5b, - 0x1f5d, 0x1f5d, - 0x1f5f, 0x1f7d, - 0x1f80, 0x1fb4, - 0x1fb6, 0x1fc4, - 0x1fc6, 0x1fd3, - 0x1fd6, 0x1fdb, - 0x1fdd, 0x1fef, - 0x1ff2, 0x1ff4, - 0x1ff6, 0x1ffe, - 0x2126, 0x2126, - 0xab65, 0xab65, - 0x10140, 0x1018e, - 0x101a0, 0x101a0, - 0x1d200, 0x1d245, -}; /* CR_Greek */ - -/* 'Cyrillic': Script */ -static const OnigCodePoint CR_Cyrillic[] = { - 8, - 0x0400, 0x0484, - 0x0487, 0x052f, - 0x1c80, 0x1c88, - 0x1d2b, 0x1d2b, - 0x1d78, 0x1d78, - 0x2de0, 0x2dff, - 0xa640, 0xa69f, - 0xfe2e, 0xfe2f, -}; /* CR_Cyrillic */ - -/* 'Armenian': Script */ -static const OnigCodePoint CR_Armenian[] = { - 6, - 0x0531, 0x0556, - 0x0559, 0x055f, - 0x0561, 0x0587, - 0x058a, 0x058a, - 0x058d, 0x058f, - 0xfb13, 0xfb17, -}; /* CR_Armenian */ - -/* 'Hebrew': Script */ -static const OnigCodePoint CR_Hebrew[] = { - 9, - 0x0591, 0x05c7, - 0x05d0, 0x05ea, - 0x05f0, 0x05f4, - 0xfb1d, 0xfb36, - 0xfb38, 0xfb3c, - 0xfb3e, 0xfb3e, - 0xfb40, 0xfb41, - 0xfb43, 0xfb44, - 0xfb46, 0xfb4f, -}; /* CR_Hebrew */ - -/* 'Arabic': Script */ -static const OnigCodePoint CR_Arabic[] = { - 56, - 0x0600, 0x0604, - 0x0606, 0x060b, - 0x060d, 0x061a, - 0x061e, 0x061e, - 0x0620, 0x063f, - 0x0641, 0x064a, - 0x0656, 0x066f, - 0x0671, 0x06dc, - 0x06de, 0x06ff, - 0x0750, 0x077f, - 0x08a0, 0x08b4, - 0x08b6, 0x08bd, - 0x08d4, 0x08e1, - 0x08e3, 0x08ff, - 0xfb50, 0xfbc1, - 0xfbd3, 0xfd3d, - 0xfd50, 0xfd8f, - 0xfd92, 0xfdc7, - 0xfdf0, 0xfdfd, - 0xfe70, 0xfe74, - 0xfe76, 0xfefc, - 0x10e60, 0x10e7e, - 0x1ee00, 0x1ee03, - 0x1ee05, 0x1ee1f, - 0x1ee21, 0x1ee22, - 0x1ee24, 0x1ee24, - 0x1ee27, 0x1ee27, - 0x1ee29, 0x1ee32, - 0x1ee34, 0x1ee37, - 0x1ee39, 0x1ee39, - 0x1ee3b, 0x1ee3b, - 0x1ee42, 0x1ee42, - 0x1ee47, 0x1ee47, - 0x1ee49, 0x1ee49, - 0x1ee4b, 0x1ee4b, - 0x1ee4d, 0x1ee4f, - 0x1ee51, 0x1ee52, - 0x1ee54, 0x1ee54, - 0x1ee57, 0x1ee57, - 0x1ee59, 0x1ee59, - 0x1ee5b, 0x1ee5b, - 0x1ee5d, 0x1ee5d, - 0x1ee5f, 0x1ee5f, - 0x1ee61, 0x1ee62, - 0x1ee64, 0x1ee64, - 0x1ee67, 0x1ee6a, - 0x1ee6c, 0x1ee72, - 0x1ee74, 0x1ee77, - 0x1ee79, 0x1ee7c, - 0x1ee7e, 0x1ee7e, - 0x1ee80, 0x1ee89, - 0x1ee8b, 0x1ee9b, - 0x1eea1, 0x1eea3, - 0x1eea5, 0x1eea9, - 0x1eeab, 0x1eebb, - 0x1eef0, 0x1eef1, -}; /* CR_Arabic */ - -/* 'Syriac': Script */ -static const OnigCodePoint CR_Syriac[] = { - 3, - 0x0700, 0x070d, - 0x070f, 0x074a, - 0x074d, 0x074f, -}; /* CR_Syriac */ - -/* 'Thaana': Script */ -static const OnigCodePoint CR_Thaana[] = { - 1, - 0x0780, 0x07b1, -}; /* CR_Thaana */ - -/* 'Devanagari': Script */ -static const OnigCodePoint CR_Devanagari[] = { - 4, - 0x0900, 0x0950, - 0x0953, 0x0963, - 0x0966, 0x097f, - 0xa8e0, 0xa8fd, -}; /* CR_Devanagari */ - -/* 'Bengali': Script */ -static const OnigCodePoint CR_Bengali[] = { - 14, - 0x0980, 0x0983, - 0x0985, 0x098c, - 0x098f, 0x0990, - 0x0993, 0x09a8, - 0x09aa, 0x09b0, - 0x09b2, 0x09b2, - 0x09b6, 0x09b9, - 0x09bc, 0x09c4, - 0x09c7, 0x09c8, - 0x09cb, 0x09ce, - 0x09d7, 0x09d7, - 0x09dc, 0x09dd, - 0x09df, 0x09e3, - 0x09e6, 0x09fb, -}; /* CR_Bengali */ - -/* 'Gurmukhi': Script */ -static const OnigCodePoint CR_Gurmukhi[] = { - 16, - 0x0a01, 0x0a03, - 0x0a05, 0x0a0a, - 0x0a0f, 0x0a10, - 0x0a13, 0x0a28, - 0x0a2a, 0x0a30, - 0x0a32, 0x0a33, - 0x0a35, 0x0a36, - 0x0a38, 0x0a39, - 0x0a3c, 0x0a3c, - 0x0a3e, 0x0a42, - 0x0a47, 0x0a48, - 0x0a4b, 0x0a4d, - 0x0a51, 0x0a51, - 0x0a59, 0x0a5c, - 0x0a5e, 0x0a5e, - 0x0a66, 0x0a75, -}; /* CR_Gurmukhi */ - -/* 'Gujarati': Script */ -static const OnigCodePoint CR_Gujarati[] = { - 14, - 0x0a81, 0x0a83, - 0x0a85, 0x0a8d, - 0x0a8f, 0x0a91, - 0x0a93, 0x0aa8, - 0x0aaa, 0x0ab0, - 0x0ab2, 0x0ab3, - 0x0ab5, 0x0ab9, - 0x0abc, 0x0ac5, - 0x0ac7, 0x0ac9, - 0x0acb, 0x0acd, - 0x0ad0, 0x0ad0, - 0x0ae0, 0x0ae3, - 0x0ae6, 0x0af1, - 0x0af9, 0x0af9, -}; /* CR_Gujarati */ - -/* 'Oriya': Script */ -static const OnigCodePoint CR_Oriya[] = { - 14, - 0x0b01, 0x0b03, - 0x0b05, 0x0b0c, - 0x0b0f, 0x0b10, - 0x0b13, 0x0b28, - 0x0b2a, 0x0b30, - 0x0b32, 0x0b33, - 0x0b35, 0x0b39, - 0x0b3c, 0x0b44, - 0x0b47, 0x0b48, - 0x0b4b, 0x0b4d, - 0x0b56, 0x0b57, - 0x0b5c, 0x0b5d, - 0x0b5f, 0x0b63, - 0x0b66, 0x0b77, -}; /* CR_Oriya */ - -/* 'Tamil': Script */ -static const OnigCodePoint CR_Tamil[] = { - 16, - 0x0b82, 0x0b83, - 0x0b85, 0x0b8a, - 0x0b8e, 0x0b90, - 0x0b92, 0x0b95, - 0x0b99, 0x0b9a, - 0x0b9c, 0x0b9c, - 0x0b9e, 0x0b9f, - 0x0ba3, 0x0ba4, - 0x0ba8, 0x0baa, - 0x0bae, 0x0bb9, - 0x0bbe, 0x0bc2, - 0x0bc6, 0x0bc8, - 0x0bca, 0x0bcd, - 0x0bd0, 0x0bd0, - 0x0bd7, 0x0bd7, - 0x0be6, 0x0bfa, -}; /* CR_Tamil */ - -/* 'Telugu': Script */ -static const OnigCodePoint CR_Telugu[] = { - 13, - 0x0c00, 0x0c03, - 0x0c05, 0x0c0c, - 0x0c0e, 0x0c10, - 0x0c12, 0x0c28, - 0x0c2a, 0x0c39, - 0x0c3d, 0x0c44, - 0x0c46, 0x0c48, - 0x0c4a, 0x0c4d, - 0x0c55, 0x0c56, - 0x0c58, 0x0c5a, - 0x0c60, 0x0c63, - 0x0c66, 0x0c6f, - 0x0c78, 0x0c7f, -}; /* CR_Telugu */ - -/* 'Kannada': Script */ -static const OnigCodePoint CR_Kannada[] = { - 14, - 0x0c80, 0x0c83, - 0x0c85, 0x0c8c, - 0x0c8e, 0x0c90, - 0x0c92, 0x0ca8, - 0x0caa, 0x0cb3, - 0x0cb5, 0x0cb9, - 0x0cbc, 0x0cc4, - 0x0cc6, 0x0cc8, - 0x0cca, 0x0ccd, - 0x0cd5, 0x0cd6, - 0x0cde, 0x0cde, - 0x0ce0, 0x0ce3, - 0x0ce6, 0x0cef, - 0x0cf1, 0x0cf2, -}; /* CR_Kannada */ - -/* 'Malayalam': Script */ -static const OnigCodePoint CR_Malayalam[] = { - 9, - 0x0d01, 0x0d03, - 0x0d05, 0x0d0c, - 0x0d0e, 0x0d10, - 0x0d12, 0x0d3a, - 0x0d3d, 0x0d44, - 0x0d46, 0x0d48, - 0x0d4a, 0x0d4f, - 0x0d54, 0x0d63, - 0x0d66, 0x0d7f, -}; /* CR_Malayalam */ - -/* 'Sinhala': Script */ -static const OnigCodePoint CR_Sinhala[] = { - 13, - 0x0d82, 0x0d83, - 0x0d85, 0x0d96, - 0x0d9a, 0x0db1, - 0x0db3, 0x0dbb, - 0x0dbd, 0x0dbd, - 0x0dc0, 0x0dc6, - 0x0dca, 0x0dca, - 0x0dcf, 0x0dd4, - 0x0dd6, 0x0dd6, - 0x0dd8, 0x0ddf, - 0x0de6, 0x0def, - 0x0df2, 0x0df4, - 0x111e1, 0x111f4, -}; /* CR_Sinhala */ - -/* 'Thai': Script */ -static const OnigCodePoint CR_Thai[] = { - 2, - 0x0e01, 0x0e3a, - 0x0e40, 0x0e5b, -}; /* CR_Thai */ - -/* 'Lao': Script */ -static const OnigCodePoint CR_Lao[] = { - 18, - 0x0e81, 0x0e82, - 0x0e84, 0x0e84, - 0x0e87, 0x0e88, - 0x0e8a, 0x0e8a, - 0x0e8d, 0x0e8d, - 0x0e94, 0x0e97, - 0x0e99, 0x0e9f, - 0x0ea1, 0x0ea3, - 0x0ea5, 0x0ea5, - 0x0ea7, 0x0ea7, - 0x0eaa, 0x0eab, - 0x0ead, 0x0eb9, - 0x0ebb, 0x0ebd, - 0x0ec0, 0x0ec4, - 0x0ec6, 0x0ec6, - 0x0ec8, 0x0ecd, - 0x0ed0, 0x0ed9, - 0x0edc, 0x0edf, -}; /* CR_Lao */ - -/* 'Tibetan': Script */ -static const OnigCodePoint CR_Tibetan[] = { - 7, - 0x0f00, 0x0f47, - 0x0f49, 0x0f6c, - 0x0f71, 0x0f97, - 0x0f99, 0x0fbc, - 0x0fbe, 0x0fcc, - 0x0fce, 0x0fd4, - 0x0fd9, 0x0fda, -}; /* CR_Tibetan */ - -/* 'Myanmar': Script */ -static const OnigCodePoint CR_Myanmar[] = { - 3, - 0x1000, 0x109f, - 0xa9e0, 0xa9fe, - 0xaa60, 0xaa7f, -}; /* CR_Myanmar */ - -/* 'Georgian': Script */ -static const OnigCodePoint CR_Georgian[] = { - 8, - 0x10a0, 0x10c5, - 0x10c7, 0x10c7, - 0x10cd, 0x10cd, - 0x10d0, 0x10fa, - 0x10fc, 0x10ff, - 0x2d00, 0x2d25, - 0x2d27, 0x2d27, - 0x2d2d, 0x2d2d, -}; /* CR_Georgian */ - -/* 'Hangul': Script */ -static const OnigCodePoint CR_Hangul[] = { - 14, - 0x1100, 0x11ff, - 0x302e, 0x302f, - 0x3131, 0x318e, - 0x3200, 0x321e, - 0x3260, 0x327e, - 0xa960, 0xa97c, - 0xac00, 0xd7a3, - 0xd7b0, 0xd7c6, - 0xd7cb, 0xd7fb, - 0xffa0, 0xffbe, - 0xffc2, 0xffc7, - 0xffca, 0xffcf, - 0xffd2, 0xffd7, - 0xffda, 0xffdc, -}; /* CR_Hangul */ - -/* 'Ethiopic': Script */ -static const OnigCodePoint CR_Ethiopic[] = { - 32, - 0x1200, 0x1248, - 0x124a, 0x124d, - 0x1250, 0x1256, - 0x1258, 0x1258, - 0x125a, 0x125d, - 0x1260, 0x1288, - 0x128a, 0x128d, - 0x1290, 0x12b0, - 0x12b2, 0x12b5, - 0x12b8, 0x12be, - 0x12c0, 0x12c0, - 0x12c2, 0x12c5, - 0x12c8, 0x12d6, - 0x12d8, 0x1310, - 0x1312, 0x1315, - 0x1318, 0x135a, - 0x135d, 0x137c, - 0x1380, 0x1399, - 0x2d80, 0x2d96, - 0x2da0, 0x2da6, - 0x2da8, 0x2dae, - 0x2db0, 0x2db6, - 0x2db8, 0x2dbe, - 0x2dc0, 0x2dc6, - 0x2dc8, 0x2dce, - 0x2dd0, 0x2dd6, - 0x2dd8, 0x2dde, - 0xab01, 0xab06, - 0xab09, 0xab0e, - 0xab11, 0xab16, - 0xab20, 0xab26, - 0xab28, 0xab2e, -}; /* CR_Ethiopic */ - -/* 'Cherokee': Script */ -static const OnigCodePoint CR_Cherokee[] = { - 3, - 0x13a0, 0x13f5, - 0x13f8, 0x13fd, - 0xab70, 0xabbf, -}; /* CR_Cherokee */ - -/* 'Canadian_Aboriginal': Script */ -static const OnigCodePoint CR_Canadian_Aboriginal[] = { - 2, - 0x1400, 0x167f, - 0x18b0, 0x18f5, -}; /* CR_Canadian_Aboriginal */ - -/* 'Ogham': Script */ -static const OnigCodePoint CR_Ogham[] = { - 1, - 0x1680, 0x169c, -}; /* CR_Ogham */ - -/* 'Runic': Script */ -static const OnigCodePoint CR_Runic[] = { - 2, - 0x16a0, 0x16ea, - 0x16ee, 0x16f8, -}; /* CR_Runic */ - -/* 'Khmer': Script */ -static const OnigCodePoint CR_Khmer[] = { - 4, - 0x1780, 0x17dd, - 0x17e0, 0x17e9, - 0x17f0, 0x17f9, - 0x19e0, 0x19ff, -}; /* CR_Khmer */ - -/* 'Mongolian': Script */ -static const OnigCodePoint CR_Mongolian[] = { - 7, - 0x1800, 0x1801, - 0x1804, 0x1804, - 0x1806, 0x180e, - 0x1810, 0x1819, - 0x1820, 0x1877, - 0x1880, 0x18aa, - 0x11660, 0x1166c, -}; /* CR_Mongolian */ - -/* 'Hiragana': Script */ -static const OnigCodePoint CR_Hiragana[] = { - 4, - 0x3041, 0x3096, - 0x309d, 0x309f, - 0x1b001, 0x1b001, - 0x1f200, 0x1f200, -}; /* CR_Hiragana */ - -/* 'Katakana': Script */ -static const OnigCodePoint CR_Katakana[] = { - 8, - 0x30a1, 0x30fa, - 0x30fd, 0x30ff, - 0x31f0, 0x31ff, - 0x32d0, 0x32fe, - 0x3300, 0x3357, - 0xff66, 0xff6f, - 0xff71, 0xff9d, - 0x1b000, 0x1b000, -}; /* CR_Katakana */ - -/* 'Bopomofo': Script */ -static const OnigCodePoint CR_Bopomofo[] = { - 3, - 0x02ea, 0x02eb, - 0x3105, 0x312d, - 0x31a0, 0x31ba, -}; /* CR_Bopomofo */ - -/* 'Han': Script */ -static const OnigCodePoint CR_Han[] = { - 16, - 0x2e80, 0x2e99, - 0x2e9b, 0x2ef3, - 0x2f00, 0x2fd5, - 0x3005, 0x3005, - 0x3007, 0x3007, - 0x3021, 0x3029, - 0x3038, 0x303b, - 0x3400, 0x4db5, - 0x4e00, 0x9fd5, - 0xf900, 0xfa6d, - 0xfa70, 0xfad9, - 0x20000, 0x2a6d6, - 0x2a700, 0x2b734, - 0x2b740, 0x2b81d, - 0x2b820, 0x2cea1, - 0x2f800, 0x2fa1d, -}; /* CR_Han */ - -/* 'Yi': Script */ -static const OnigCodePoint CR_Yi[] = { - 2, - 0xa000, 0xa48c, - 0xa490, 0xa4c6, -}; /* CR_Yi */ - -/* 'Old_Italic': Script */ -static const OnigCodePoint CR_Old_Italic[] = { - 1, - 0x10300, 0x10323, -}; /* CR_Old_Italic */ - -/* 'Gothic': Script */ -static const OnigCodePoint CR_Gothic[] = { - 1, - 0x10330, 0x1034a, -}; /* CR_Gothic */ - -/* 'Deseret': Script */ -static const OnigCodePoint CR_Deseret[] = { - 1, - 0x10400, 0x1044f, -}; /* CR_Deseret */ - -/* 'Inherited': Script */ -static const OnigCodePoint CR_Inherited[] = { - 27, - 0x0300, 0x036f, - 0x0485, 0x0486, - 0x064b, 0x0655, - 0x0670, 0x0670, - 0x0951, 0x0952, - 0x1ab0, 0x1abe, - 0x1cd0, 0x1cd2, - 0x1cd4, 0x1ce0, - 0x1ce2, 0x1ce8, - 0x1ced, 0x1ced, - 0x1cf4, 0x1cf4, - 0x1cf8, 0x1cf9, - 0x1dc0, 0x1df5, - 0x1dfb, 0x1dff, - 0x200c, 0x200d, - 0x20d0, 0x20f0, - 0x302a, 0x302d, - 0x3099, 0x309a, - 0xfe00, 0xfe0f, - 0xfe20, 0xfe2d, - 0x101fd, 0x101fd, - 0x102e0, 0x102e0, - 0x1d167, 0x1d169, - 0x1d17b, 0x1d182, - 0x1d185, 0x1d18b, - 0x1d1aa, 0x1d1ad, - 0xe0100, 0xe01ef, -}; /* CR_Inherited */ - -/* 'Tagalog': Script */ -static const OnigCodePoint CR_Tagalog[] = { - 2, - 0x1700, 0x170c, - 0x170e, 0x1714, -}; /* CR_Tagalog */ - -/* 'Hanunoo': Script */ -static const OnigCodePoint CR_Hanunoo[] = { - 1, - 0x1720, 0x1734, -}; /* CR_Hanunoo */ - -/* 'Buhid': Script */ -static const OnigCodePoint CR_Buhid[] = { - 1, - 0x1740, 0x1753, -}; /* CR_Buhid */ - -/* 'Tagbanwa': Script */ -static const OnigCodePoint CR_Tagbanwa[] = { - 3, - 0x1760, 0x176c, - 0x176e, 0x1770, - 0x1772, 0x1773, -}; /* CR_Tagbanwa */ - -/* 'Limbu': Script */ -static const OnigCodePoint CR_Limbu[] = { - 5, - 0x1900, 0x191e, - 0x1920, 0x192b, - 0x1930, 0x193b, - 0x1940, 0x1940, - 0x1944, 0x194f, -}; /* CR_Limbu */ - -/* 'Tai_Le': Script */ -static const OnigCodePoint CR_Tai_Le[] = { - 2, - 0x1950, 0x196d, - 0x1970, 0x1974, -}; /* CR_Tai_Le */ - -/* 'Linear_B': Script */ -static const OnigCodePoint CR_Linear_B[] = { - 7, - 0x10000, 0x1000b, - 0x1000d, 0x10026, - 0x10028, 0x1003a, - 0x1003c, 0x1003d, - 0x1003f, 0x1004d, - 0x10050, 0x1005d, - 0x10080, 0x100fa, -}; /* CR_Linear_B */ - -/* 'Ugaritic': Script */ -static const OnigCodePoint CR_Ugaritic[] = { - 2, - 0x10380, 0x1039d, - 0x1039f, 0x1039f, -}; /* CR_Ugaritic */ - -/* 'Shavian': Script */ -static const OnigCodePoint CR_Shavian[] = { - 1, - 0x10450, 0x1047f, -}; /* CR_Shavian */ - -/* 'Osmanya': Script */ -static const OnigCodePoint CR_Osmanya[] = { - 2, - 0x10480, 0x1049d, - 0x104a0, 0x104a9, -}; /* CR_Osmanya */ - -/* 'Cypriot': Script */ -static const OnigCodePoint CR_Cypriot[] = { - 6, - 0x10800, 0x10805, - 0x10808, 0x10808, - 0x1080a, 0x10835, - 0x10837, 0x10838, - 0x1083c, 0x1083c, - 0x1083f, 0x1083f, -}; /* CR_Cypriot */ - -/* 'Braille': Script */ -static const OnigCodePoint CR_Braille[] = { - 1, - 0x2800, 0x28ff, -}; /* CR_Braille */ - -/* 'Buginese': Script */ -static const OnigCodePoint CR_Buginese[] = { - 2, - 0x1a00, 0x1a1b, - 0x1a1e, 0x1a1f, -}; /* CR_Buginese */ - -/* 'Coptic': Script */ -static const OnigCodePoint CR_Coptic[] = { - 3, - 0x03e2, 0x03ef, - 0x2c80, 0x2cf3, - 0x2cf9, 0x2cff, -}; /* CR_Coptic */ - -/* 'New_Tai_Lue': Script */ -static const OnigCodePoint CR_New_Tai_Lue[] = { - 4, - 0x1980, 0x19ab, - 0x19b0, 0x19c9, - 0x19d0, 0x19da, - 0x19de, 0x19df, -}; /* CR_New_Tai_Lue */ - -/* 'Glagolitic': Script */ -static const OnigCodePoint CR_Glagolitic[] = { - 7, - 0x2c00, 0x2c2e, - 0x2c30, 0x2c5e, - 0x1e000, 0x1e006, - 0x1e008, 0x1e018, - 0x1e01b, 0x1e021, - 0x1e023, 0x1e024, - 0x1e026, 0x1e02a, -}; /* CR_Glagolitic */ - -/* 'Tifinagh': Script */ -static const OnigCodePoint CR_Tifinagh[] = { - 3, - 0x2d30, 0x2d67, - 0x2d6f, 0x2d70, - 0x2d7f, 0x2d7f, -}; /* CR_Tifinagh */ - -/* 'Syloti_Nagri': Script */ -static const OnigCodePoint CR_Syloti_Nagri[] = { - 1, - 0xa800, 0xa82b, -}; /* CR_Syloti_Nagri */ - -/* 'Old_Persian': Script */ -static const OnigCodePoint CR_Old_Persian[] = { - 2, - 0x103a0, 0x103c3, - 0x103c8, 0x103d5, -}; /* CR_Old_Persian */ - -/* 'Kharoshthi': Script */ -static const OnigCodePoint CR_Kharoshthi[] = { - 8, - 0x10a00, 0x10a03, - 0x10a05, 0x10a06, - 0x10a0c, 0x10a13, - 0x10a15, 0x10a17, - 0x10a19, 0x10a33, - 0x10a38, 0x10a3a, - 0x10a3f, 0x10a47, - 0x10a50, 0x10a58, -}; /* CR_Kharoshthi */ - -/* 'Balinese': Script */ -static const OnigCodePoint CR_Balinese[] = { - 2, - 0x1b00, 0x1b4b, - 0x1b50, 0x1b7c, -}; /* CR_Balinese */ - -/* 'Cuneiform': Script */ -static const OnigCodePoint CR_Cuneiform[] = { - 4, - 0x12000, 0x12399, - 0x12400, 0x1246e, - 0x12470, 0x12474, - 0x12480, 0x12543, -}; /* CR_Cuneiform */ - -/* 'Phoenician': Script */ -static const OnigCodePoint CR_Phoenician[] = { - 2, - 0x10900, 0x1091b, - 0x1091f, 0x1091f, -}; /* CR_Phoenician */ - -/* 'Phags_Pa': Script */ -static const OnigCodePoint CR_Phags_Pa[] = { - 1, - 0xa840, 0xa877, -}; /* CR_Phags_Pa */ - -/* 'Nko': Script */ -static const OnigCodePoint CR_Nko[] = { - 1, - 0x07c0, 0x07fa, -}; /* CR_Nko */ - -/* 'Sundanese': Script */ -static const OnigCodePoint CR_Sundanese[] = { - 2, - 0x1b80, 0x1bbf, - 0x1cc0, 0x1cc7, -}; /* CR_Sundanese */ - -/* 'Lepcha': Script */ -static const OnigCodePoint CR_Lepcha[] = { - 3, - 0x1c00, 0x1c37, - 0x1c3b, 0x1c49, - 0x1c4d, 0x1c4f, -}; /* CR_Lepcha */ - -/* 'Ol_Chiki': Script */ -static const OnigCodePoint CR_Ol_Chiki[] = { - 1, - 0x1c50, 0x1c7f, -}; /* CR_Ol_Chiki */ - -/* 'Vai': Script */ -static const OnigCodePoint CR_Vai[] = { - 1, - 0xa500, 0xa62b, -}; /* CR_Vai */ - -/* 'Saurashtra': Script */ -static const OnigCodePoint CR_Saurashtra[] = { - 2, - 0xa880, 0xa8c5, - 0xa8ce, 0xa8d9, -}; /* CR_Saurashtra */ - -/* 'Kayah_Li': Script */ -static const OnigCodePoint CR_Kayah_Li[] = { - 2, - 0xa900, 0xa92d, - 0xa92f, 0xa92f, -}; /* CR_Kayah_Li */ - -/* 'Rejang': Script */ -static const OnigCodePoint CR_Rejang[] = { - 2, - 0xa930, 0xa953, - 0xa95f, 0xa95f, -}; /* CR_Rejang */ - -/* 'Lycian': Script */ -static const OnigCodePoint CR_Lycian[] = { - 1, - 0x10280, 0x1029c, -}; /* CR_Lycian */ - -/* 'Carian': Script */ -static const OnigCodePoint CR_Carian[] = { - 1, - 0x102a0, 0x102d0, -}; /* CR_Carian */ - -/* 'Lydian': Script */ -static const OnigCodePoint CR_Lydian[] = { - 2, - 0x10920, 0x10939, - 0x1093f, 0x1093f, -}; /* CR_Lydian */ - -/* 'Cham': Script */ -static const OnigCodePoint CR_Cham[] = { - 4, - 0xaa00, 0xaa36, - 0xaa40, 0xaa4d, - 0xaa50, 0xaa59, - 0xaa5c, 0xaa5f, -}; /* CR_Cham */ - -/* 'Tai_Tham': Script */ -static const OnigCodePoint CR_Tai_Tham[] = { - 5, - 0x1a20, 0x1a5e, - 0x1a60, 0x1a7c, - 0x1a7f, 0x1a89, - 0x1a90, 0x1a99, - 0x1aa0, 0x1aad, -}; /* CR_Tai_Tham */ - -/* 'Tai_Viet': Script */ -static const OnigCodePoint CR_Tai_Viet[] = { - 2, - 0xaa80, 0xaac2, - 0xaadb, 0xaadf, -}; /* CR_Tai_Viet */ - -/* 'Avestan': Script */ -static const OnigCodePoint CR_Avestan[] = { - 2, - 0x10b00, 0x10b35, - 0x10b39, 0x10b3f, -}; /* CR_Avestan */ - -/* 'Egyptian_Hieroglyphs': Script */ -static const OnigCodePoint CR_Egyptian_Hieroglyphs[] = { - 1, - 0x13000, 0x1342e, -}; /* CR_Egyptian_Hieroglyphs */ - -/* 'Samaritan': Script */ -static const OnigCodePoint CR_Samaritan[] = { - 2, - 0x0800, 0x082d, - 0x0830, 0x083e, -}; /* CR_Samaritan */ - -/* 'Lisu': Script */ -static const OnigCodePoint CR_Lisu[] = { - 1, - 0xa4d0, 0xa4ff, -}; /* CR_Lisu */ - -/* 'Bamum': Script */ -static const OnigCodePoint CR_Bamum[] = { - 2, - 0xa6a0, 0xa6f7, - 0x16800, 0x16a38, -}; /* CR_Bamum */ - -/* 'Javanese': Script */ -static const OnigCodePoint CR_Javanese[] = { - 3, - 0xa980, 0xa9cd, - 0xa9d0, 0xa9d9, - 0xa9de, 0xa9df, -}; /* CR_Javanese */ - -/* 'Meetei_Mayek': Script */ -static const OnigCodePoint CR_Meetei_Mayek[] = { - 3, - 0xaae0, 0xaaf6, - 0xabc0, 0xabed, - 0xabf0, 0xabf9, -}; /* CR_Meetei_Mayek */ - -/* 'Imperial_Aramaic': Script */ -static const OnigCodePoint CR_Imperial_Aramaic[] = { - 2, - 0x10840, 0x10855, - 0x10857, 0x1085f, -}; /* CR_Imperial_Aramaic */ - -/* 'Old_South_Arabian': Script */ -static const OnigCodePoint CR_Old_South_Arabian[] = { - 1, - 0x10a60, 0x10a7f, -}; /* CR_Old_South_Arabian */ - -/* 'Inscriptional_Parthian': Script */ -static const OnigCodePoint CR_Inscriptional_Parthian[] = { - 2, - 0x10b40, 0x10b55, - 0x10b58, 0x10b5f, -}; /* CR_Inscriptional_Parthian */ - -/* 'Inscriptional_Pahlavi': Script */ -static const OnigCodePoint CR_Inscriptional_Pahlavi[] = { - 2, - 0x10b60, 0x10b72, - 0x10b78, 0x10b7f, -}; /* CR_Inscriptional_Pahlavi */ - -/* 'Old_Turkic': Script */ -static const OnigCodePoint CR_Old_Turkic[] = { - 1, - 0x10c00, 0x10c48, -}; /* CR_Old_Turkic */ - -/* 'Kaithi': Script */ -static const OnigCodePoint CR_Kaithi[] = { - 1, - 0x11080, 0x110c1, -}; /* CR_Kaithi */ - -/* 'Batak': Script */ -static const OnigCodePoint CR_Batak[] = { - 2, - 0x1bc0, 0x1bf3, - 0x1bfc, 0x1bff, -}; /* CR_Batak */ - -/* 'Brahmi': Script */ -static const OnigCodePoint CR_Brahmi[] = { - 3, - 0x11000, 0x1104d, - 0x11052, 0x1106f, - 0x1107f, 0x1107f, -}; /* CR_Brahmi */ - -/* 'Mandaic': Script */ -static const OnigCodePoint CR_Mandaic[] = { - 2, - 0x0840, 0x085b, - 0x085e, 0x085e, -}; /* CR_Mandaic */ - -/* 'Chakma': Script */ -static const OnigCodePoint CR_Chakma[] = { - 2, - 0x11100, 0x11134, - 0x11136, 0x11143, -}; /* CR_Chakma */ - -/* 'Meroitic_Cursive': Script */ -static const OnigCodePoint CR_Meroitic_Cursive[] = { - 3, - 0x109a0, 0x109b7, - 0x109bc, 0x109cf, - 0x109d2, 0x109ff, -}; /* CR_Meroitic_Cursive */ - -/* 'Meroitic_Hieroglyphs': Script */ -static const OnigCodePoint CR_Meroitic_Hieroglyphs[] = { - 1, - 0x10980, 0x1099f, -}; /* CR_Meroitic_Hieroglyphs */ - -/* 'Miao': Script */ -static const OnigCodePoint CR_Miao[] = { - 3, - 0x16f00, 0x16f44, - 0x16f50, 0x16f7e, - 0x16f8f, 0x16f9f, -}; /* CR_Miao */ - -/* 'Sharada': Script */ -static const OnigCodePoint CR_Sharada[] = { - 2, - 0x11180, 0x111cd, - 0x111d0, 0x111df, -}; /* CR_Sharada */ - -/* 'Sora_Sompeng': Script */ -static const OnigCodePoint CR_Sora_Sompeng[] = { - 2, - 0x110d0, 0x110e8, - 0x110f0, 0x110f9, -}; /* CR_Sora_Sompeng */ - -/* 'Takri': Script */ -static const OnigCodePoint CR_Takri[] = { - 2, - 0x11680, 0x116b7, - 0x116c0, 0x116c9, -}; /* CR_Takri */ - -/* 'Caucasian_Albanian': Script */ -static const OnigCodePoint CR_Caucasian_Albanian[] = { - 2, - 0x10530, 0x10563, - 0x1056f, 0x1056f, -}; /* CR_Caucasian_Albanian */ - -/* 'Bassa_Vah': Script */ -static const OnigCodePoint CR_Bassa_Vah[] = { - 2, - 0x16ad0, 0x16aed, - 0x16af0, 0x16af5, -}; /* CR_Bassa_Vah */ - -/* 'Duployan': Script */ -static const OnigCodePoint CR_Duployan[] = { - 5, - 0x1bc00, 0x1bc6a, - 0x1bc70, 0x1bc7c, - 0x1bc80, 0x1bc88, - 0x1bc90, 0x1bc99, - 0x1bc9c, 0x1bc9f, -}; /* CR_Duployan */ - -/* 'Elbasan': Script */ -static const OnigCodePoint CR_Elbasan[] = { - 1, - 0x10500, 0x10527, -}; /* CR_Elbasan */ - -/* 'Grantha': Script */ -static const OnigCodePoint CR_Grantha[] = { - 15, - 0x11300, 0x11303, - 0x11305, 0x1130c, - 0x1130f, 0x11310, - 0x11313, 0x11328, - 0x1132a, 0x11330, - 0x11332, 0x11333, - 0x11335, 0x11339, - 0x1133c, 0x11344, - 0x11347, 0x11348, - 0x1134b, 0x1134d, - 0x11350, 0x11350, - 0x11357, 0x11357, - 0x1135d, 0x11363, - 0x11366, 0x1136c, - 0x11370, 0x11374, -}; /* CR_Grantha */ - -/* 'Pahawh_Hmong': Script */ -static const OnigCodePoint CR_Pahawh_Hmong[] = { - 5, - 0x16b00, 0x16b45, - 0x16b50, 0x16b59, - 0x16b5b, 0x16b61, - 0x16b63, 0x16b77, - 0x16b7d, 0x16b8f, -}; /* CR_Pahawh_Hmong */ - -/* 'Khojki': Script */ -static const OnigCodePoint CR_Khojki[] = { - 2, - 0x11200, 0x11211, - 0x11213, 0x1123e, -}; /* CR_Khojki */ - -/* 'Linear_A': Script */ -static const OnigCodePoint CR_Linear_A[] = { - 3, - 0x10600, 0x10736, - 0x10740, 0x10755, - 0x10760, 0x10767, -}; /* CR_Linear_A */ - -/* 'Mahajani': Script */ -static const OnigCodePoint CR_Mahajani[] = { - 1, - 0x11150, 0x11176, -}; /* CR_Mahajani */ - -/* 'Manichaean': Script */ -static const OnigCodePoint CR_Manichaean[] = { - 2, - 0x10ac0, 0x10ae6, - 0x10aeb, 0x10af6, -}; /* CR_Manichaean */ - -/* 'Mende_Kikakui': Script */ -static const OnigCodePoint CR_Mende_Kikakui[] = { - 2, - 0x1e800, 0x1e8c4, - 0x1e8c7, 0x1e8d6, -}; /* CR_Mende_Kikakui */ - -/* 'Modi': Script */ -static const OnigCodePoint CR_Modi[] = { - 2, - 0x11600, 0x11644, - 0x11650, 0x11659, -}; /* CR_Modi */ - -/* 'Mro': Script */ -static const OnigCodePoint CR_Mro[] = { - 3, - 0x16a40, 0x16a5e, - 0x16a60, 0x16a69, - 0x16a6e, 0x16a6f, -}; /* CR_Mro */ - -/* 'Old_North_Arabian': Script */ -static const OnigCodePoint CR_Old_North_Arabian[] = { - 1, - 0x10a80, 0x10a9f, -}; /* CR_Old_North_Arabian */ - -/* 'Nabataean': Script */ -static const OnigCodePoint CR_Nabataean[] = { - 2, - 0x10880, 0x1089e, - 0x108a7, 0x108af, -}; /* CR_Nabataean */ - -/* 'Palmyrene': Script */ -static const OnigCodePoint CR_Palmyrene[] = { - 1, - 0x10860, 0x1087f, -}; /* CR_Palmyrene */ - -/* 'Pau_Cin_Hau': Script */ -static const OnigCodePoint CR_Pau_Cin_Hau[] = { - 1, - 0x11ac0, 0x11af8, -}; /* CR_Pau_Cin_Hau */ - -/* 'Old_Permic': Script */ -static const OnigCodePoint CR_Old_Permic[] = { - 1, - 0x10350, 0x1037a, -}; /* CR_Old_Permic */ - -/* 'Psalter_Pahlavi': Script */ -static const OnigCodePoint CR_Psalter_Pahlavi[] = { - 3, - 0x10b80, 0x10b91, - 0x10b99, 0x10b9c, - 0x10ba9, 0x10baf, -}; /* CR_Psalter_Pahlavi */ - -/* 'Siddham': Script */ -static const OnigCodePoint CR_Siddham[] = { - 2, - 0x11580, 0x115b5, - 0x115b8, 0x115dd, -}; /* CR_Siddham */ - -/* 'Khudawadi': Script */ -static const OnigCodePoint CR_Khudawadi[] = { - 2, - 0x112b0, 0x112ea, - 0x112f0, 0x112f9, -}; /* CR_Khudawadi */ - -/* 'Tirhuta': Script */ -static const OnigCodePoint CR_Tirhuta[] = { - 2, - 0x11480, 0x114c7, - 0x114d0, 0x114d9, -}; /* CR_Tirhuta */ - -/* 'Warang_Citi': Script */ -static const OnigCodePoint CR_Warang_Citi[] = { - 2, - 0x118a0, 0x118f2, - 0x118ff, 0x118ff, -}; /* CR_Warang_Citi */ - -/* 'Ahom': Script */ -static const OnigCodePoint CR_Ahom[] = { - 3, - 0x11700, 0x11719, - 0x1171d, 0x1172b, - 0x11730, 0x1173f, -}; /* CR_Ahom */ - -/* 'Anatolian_Hieroglyphs': Script */ -static const OnigCodePoint CR_Anatolian_Hieroglyphs[] = { - 1, - 0x14400, 0x14646, -}; /* CR_Anatolian_Hieroglyphs */ - -/* 'Hatran': Script */ -static const OnigCodePoint CR_Hatran[] = { - 3, - 0x108e0, 0x108f2, - 0x108f4, 0x108f5, - 0x108fb, 0x108ff, -}; /* CR_Hatran */ - -/* 'Multani': Script */ -static const OnigCodePoint CR_Multani[] = { - 5, - 0x11280, 0x11286, - 0x11288, 0x11288, - 0x1128a, 0x1128d, - 0x1128f, 0x1129d, - 0x1129f, 0x112a9, -}; /* CR_Multani */ - -/* 'Old_Hungarian': Script */ -static const OnigCodePoint CR_Old_Hungarian[] = { - 3, - 0x10c80, 0x10cb2, - 0x10cc0, 0x10cf2, - 0x10cfa, 0x10cff, -}; /* CR_Old_Hungarian */ - -/* 'SignWriting': Script */ -static const OnigCodePoint CR_SignWriting[] = { - 3, - 0x1d800, 0x1da8b, - 0x1da9b, 0x1da9f, - 0x1daa1, 0x1daaf, -}; /* CR_SignWriting */ - -/* 'Adlam': Script */ -static const OnigCodePoint CR_Adlam[] = { - 3, - 0x1e900, 0x1e94a, - 0x1e950, 0x1e959, - 0x1e95e, 0x1e95f, -}; /* CR_Adlam */ - -/* 'Bhaiksuki': Script */ -static const OnigCodePoint CR_Bhaiksuki[] = { - 4, - 0x11c00, 0x11c08, - 0x11c0a, 0x11c36, - 0x11c38, 0x11c45, - 0x11c50, 0x11c6c, -}; /* CR_Bhaiksuki */ - -/* 'Marchen': Script */ -static const OnigCodePoint CR_Marchen[] = { - 3, - 0x11c70, 0x11c8f, - 0x11c92, 0x11ca7, - 0x11ca9, 0x11cb6, -}; /* CR_Marchen */ - -/* 'Newa': Script */ -static const OnigCodePoint CR_Newa[] = { - 3, - 0x11400, 0x11459, - 0x1145b, 0x1145b, - 0x1145d, 0x1145d, -}; /* CR_Newa */ - -/* 'Osage': Script */ -static const OnigCodePoint CR_Osage[] = { - 2, - 0x104b0, 0x104d3, - 0x104d8, 0x104fb, -}; /* CR_Osage */ - -/* 'Tangut': Script */ -static const OnigCodePoint CR_Tangut[] = { - 3, - 0x16fe0, 0x16fe0, - 0x17000, 0x187ec, - 0x18800, 0x18af2, -}; /* CR_Tangut */ - -/* 'White_Space': Binary Property */ -#define CR_White_Space CR_Space - -/* 'Bidi_Control': Binary Property */ -static const OnigCodePoint CR_Bidi_Control[] = { - 4, - 0x061c, 0x061c, - 0x200e, 0x200f, - 0x202a, 0x202e, - 0x2066, 0x2069, -}; /* CR_Bidi_Control */ - -/* 'Join_Control': Binary Property */ -static const OnigCodePoint CR_Join_Control[] = { - 1, - 0x200c, 0x200d, -}; /* CR_Join_Control */ - -/* 'Dash': Binary Property */ -static const OnigCodePoint CR_Dash[] = { - 21, - 0x002d, 0x002d, - 0x058a, 0x058a, - 0x05be, 0x05be, - 0x1400, 0x1400, - 0x1806, 0x1806, - 0x2010, 0x2015, - 0x2053, 0x2053, - 0x207b, 0x207b, - 0x208b, 0x208b, - 0x2212, 0x2212, - 0x2e17, 0x2e17, - 0x2e1a, 0x2e1a, - 0x2e3a, 0x2e3b, - 0x2e40, 0x2e40, - 0x301c, 0x301c, - 0x3030, 0x3030, - 0x30a0, 0x30a0, - 0xfe31, 0xfe32, - 0xfe58, 0xfe58, - 0xfe63, 0xfe63, - 0xff0d, 0xff0d, -}; /* CR_Dash */ - -/* 'Hyphen': Binary Property */ -static const OnigCodePoint CR_Hyphen[] = { - 10, - 0x002d, 0x002d, - 0x00ad, 0x00ad, - 0x058a, 0x058a, - 0x1806, 0x1806, - 0x2010, 0x2011, - 0x2e17, 0x2e17, - 0x30fb, 0x30fb, - 0xfe63, 0xfe63, - 0xff0d, 0xff0d, - 0xff65, 0xff65, -}; /* CR_Hyphen */ - -/* 'Quotation_Mark': Binary Property */ -static const OnigCodePoint CR_Quotation_Mark[] = { - 13, - 0x0022, 0x0022, - 0x0027, 0x0027, - 0x00ab, 0x00ab, - 0x00bb, 0x00bb, - 0x2018, 0x201f, - 0x2039, 0x203a, - 0x2e42, 0x2e42, - 0x300c, 0x300f, - 0x301d, 0x301f, - 0xfe41, 0xfe44, - 0xff02, 0xff02, - 0xff07, 0xff07, - 0xff62, 0xff63, -}; /* CR_Quotation_Mark */ - -/* 'Terminal_Punctuation': Binary Property */ -static const OnigCodePoint CR_Terminal_Punctuation[] = { - 94, - 0x0021, 0x0021, - 0x002c, 0x002c, - 0x002e, 0x002e, - 0x003a, 0x003b, - 0x003f, 0x003f, - 0x037e, 0x037e, - 0x0387, 0x0387, - 0x0589, 0x0589, - 0x05c3, 0x05c3, - 0x060c, 0x060c, - 0x061b, 0x061b, - 0x061f, 0x061f, - 0x06d4, 0x06d4, - 0x0700, 0x070a, - 0x070c, 0x070c, - 0x07f8, 0x07f9, - 0x0830, 0x083e, - 0x085e, 0x085e, - 0x0964, 0x0965, - 0x0e5a, 0x0e5b, - 0x0f08, 0x0f08, - 0x0f0d, 0x0f12, - 0x104a, 0x104b, - 0x1361, 0x1368, - 0x166d, 0x166e, - 0x16eb, 0x16ed, - 0x1735, 0x1736, - 0x17d4, 0x17d6, - 0x17da, 0x17da, - 0x1802, 0x1805, - 0x1808, 0x1809, - 0x1944, 0x1945, - 0x1aa8, 0x1aab, - 0x1b5a, 0x1b5b, - 0x1b5d, 0x1b5f, - 0x1c3b, 0x1c3f, - 0x1c7e, 0x1c7f, - 0x203c, 0x203d, - 0x2047, 0x2049, - 0x2e2e, 0x2e2e, - 0x2e3c, 0x2e3c, - 0x2e41, 0x2e41, - 0x3001, 0x3002, - 0xa4fe, 0xa4ff, - 0xa60d, 0xa60f, - 0xa6f3, 0xa6f7, - 0xa876, 0xa877, - 0xa8ce, 0xa8cf, - 0xa92f, 0xa92f, - 0xa9c7, 0xa9c9, - 0xaa5d, 0xaa5f, - 0xaadf, 0xaadf, - 0xaaf0, 0xaaf1, - 0xabeb, 0xabeb, - 0xfe50, 0xfe52, - 0xfe54, 0xfe57, - 0xff01, 0xff01, - 0xff0c, 0xff0c, - 0xff0e, 0xff0e, - 0xff1a, 0xff1b, - 0xff1f, 0xff1f, - 0xff61, 0xff61, - 0xff64, 0xff64, - 0x1039f, 0x1039f, - 0x103d0, 0x103d0, - 0x10857, 0x10857, - 0x1091f, 0x1091f, - 0x10a56, 0x10a57, - 0x10af0, 0x10af5, - 0x10b3a, 0x10b3f, - 0x10b99, 0x10b9c, - 0x11047, 0x1104d, - 0x110be, 0x110c1, - 0x11141, 0x11143, - 0x111c5, 0x111c6, - 0x111cd, 0x111cd, - 0x111de, 0x111df, - 0x11238, 0x1123c, - 0x112a9, 0x112a9, - 0x1144b, 0x1144d, - 0x1145b, 0x1145b, - 0x115c2, 0x115c5, - 0x115c9, 0x115d7, - 0x11641, 0x11642, - 0x1173c, 0x1173e, - 0x11c41, 0x11c43, - 0x11c71, 0x11c71, - 0x12470, 0x12474, - 0x16a6e, 0x16a6f, - 0x16af5, 0x16af5, - 0x16b37, 0x16b39, - 0x16b44, 0x16b44, - 0x1bc9f, 0x1bc9f, - 0x1da87, 0x1da8a, -}; /* CR_Terminal_Punctuation */ - -/* 'Other_Math': Binary Property */ -static const OnigCodePoint CR_Other_Math[] = { - 134, - 0x005e, 0x005e, - 0x03d0, 0x03d2, - 0x03d5, 0x03d5, - 0x03f0, 0x03f1, - 0x03f4, 0x03f5, - 0x2016, 0x2016, - 0x2032, 0x2034, - 0x2040, 0x2040, - 0x2061, 0x2064, - 0x207d, 0x207e, - 0x208d, 0x208e, - 0x20d0, 0x20dc, - 0x20e1, 0x20e1, - 0x20e5, 0x20e6, - 0x20eb, 0x20ef, - 0x2102, 0x2102, - 0x2107, 0x2107, - 0x210a, 0x2113, - 0x2115, 0x2115, - 0x2119, 0x211d, - 0x2124, 0x2124, - 0x2128, 0x2129, - 0x212c, 0x212d, - 0x212f, 0x2131, - 0x2133, 0x2138, - 0x213c, 0x213f, - 0x2145, 0x2149, - 0x2195, 0x2199, - 0x219c, 0x219f, - 0x21a1, 0x21a2, - 0x21a4, 0x21a5, - 0x21a7, 0x21a7, - 0x21a9, 0x21ad, - 0x21b0, 0x21b1, - 0x21b6, 0x21b7, - 0x21bc, 0x21cd, - 0x21d0, 0x21d1, - 0x21d3, 0x21d3, - 0x21d5, 0x21db, - 0x21dd, 0x21dd, - 0x21e4, 0x21e5, - 0x2308, 0x230b, - 0x23b4, 0x23b5, - 0x23b7, 0x23b7, - 0x23d0, 0x23d0, - 0x23e2, 0x23e2, - 0x25a0, 0x25a1, - 0x25ae, 0x25b6, - 0x25bc, 0x25c0, - 0x25c6, 0x25c7, - 0x25ca, 0x25cb, - 0x25cf, 0x25d3, - 0x25e2, 0x25e2, - 0x25e4, 0x25e4, - 0x25e7, 0x25ec, - 0x2605, 0x2606, - 0x2640, 0x2640, - 0x2642, 0x2642, - 0x2660, 0x2663, - 0x266d, 0x266e, - 0x27c5, 0x27c6, - 0x27e6, 0x27ef, - 0x2983, 0x2998, - 0x29d8, 0x29db, - 0x29fc, 0x29fd, - 0xfe61, 0xfe61, - 0xfe63, 0xfe63, - 0xfe68, 0xfe68, - 0xff3c, 0xff3c, - 0xff3e, 0xff3e, - 0x1d400, 0x1d454, - 0x1d456, 0x1d49c, - 0x1d49e, 0x1d49f, - 0x1d4a2, 0x1d4a2, - 0x1d4a5, 0x1d4a6, - 0x1d4a9, 0x1d4ac, - 0x1d4ae, 0x1d4b9, - 0x1d4bb, 0x1d4bb, - 0x1d4bd, 0x1d4c3, - 0x1d4c5, 0x1d505, - 0x1d507, 0x1d50a, - 0x1d50d, 0x1d514, - 0x1d516, 0x1d51c, - 0x1d51e, 0x1d539, - 0x1d53b, 0x1d53e, - 0x1d540, 0x1d544, - 0x1d546, 0x1d546, - 0x1d54a, 0x1d550, - 0x1d552, 0x1d6a5, - 0x1d6a8, 0x1d6c0, - 0x1d6c2, 0x1d6da, - 0x1d6dc, 0x1d6fa, - 0x1d6fc, 0x1d714, - 0x1d716, 0x1d734, - 0x1d736, 0x1d74e, - 0x1d750, 0x1d76e, - 0x1d770, 0x1d788, - 0x1d78a, 0x1d7a8, - 0x1d7aa, 0x1d7c2, - 0x1d7c4, 0x1d7cb, - 0x1d7ce, 0x1d7ff, - 0x1ee00, 0x1ee03, - 0x1ee05, 0x1ee1f, - 0x1ee21, 0x1ee22, - 0x1ee24, 0x1ee24, - 0x1ee27, 0x1ee27, - 0x1ee29, 0x1ee32, - 0x1ee34, 0x1ee37, - 0x1ee39, 0x1ee39, - 0x1ee3b, 0x1ee3b, - 0x1ee42, 0x1ee42, - 0x1ee47, 0x1ee47, - 0x1ee49, 0x1ee49, - 0x1ee4b, 0x1ee4b, - 0x1ee4d, 0x1ee4f, - 0x1ee51, 0x1ee52, - 0x1ee54, 0x1ee54, - 0x1ee57, 0x1ee57, - 0x1ee59, 0x1ee59, - 0x1ee5b, 0x1ee5b, - 0x1ee5d, 0x1ee5d, - 0x1ee5f, 0x1ee5f, - 0x1ee61, 0x1ee62, - 0x1ee64, 0x1ee64, - 0x1ee67, 0x1ee6a, - 0x1ee6c, 0x1ee72, - 0x1ee74, 0x1ee77, - 0x1ee79, 0x1ee7c, - 0x1ee7e, 0x1ee7e, - 0x1ee80, 0x1ee89, - 0x1ee8b, 0x1ee9b, - 0x1eea1, 0x1eea3, - 0x1eea5, 0x1eea9, - 0x1eeab, 0x1eebb, -}; /* CR_Other_Math */ - -/* 'Hex_Digit': Binary Property */ -static const OnigCodePoint CR_Hex_Digit[] = { - 6, - 0x0030, 0x0039, - 0x0041, 0x0046, - 0x0061, 0x0066, - 0xff10, 0xff19, - 0xff21, 0xff26, - 0xff41, 0xff46, -}; /* CR_Hex_Digit */ - -/* 'ASCII_Hex_Digit': Binary Property */ -#define CR_ASCII_Hex_Digit CR_XDigit - -/* 'Other_Alphabetic': Binary Property */ -static const OnigCodePoint CR_Other_Alphabetic[] = { - 194, - 0x0345, 0x0345, - 0x05b0, 0x05bd, - 0x05bf, 0x05bf, - 0x05c1, 0x05c2, - 0x05c4, 0x05c5, - 0x05c7, 0x05c7, - 0x0610, 0x061a, - 0x064b, 0x0657, - 0x0659, 0x065f, - 0x0670, 0x0670, - 0x06d6, 0x06dc, - 0x06e1, 0x06e4, - 0x06e7, 0x06e8, - 0x06ed, 0x06ed, - 0x0711, 0x0711, - 0x0730, 0x073f, - 0x07a6, 0x07b0, - 0x0816, 0x0817, - 0x081b, 0x0823, - 0x0825, 0x0827, - 0x0829, 0x082c, - 0x08d4, 0x08df, - 0x08e3, 0x08e9, - 0x08f0, 0x0903, - 0x093a, 0x093b, - 0x093e, 0x094c, - 0x094e, 0x094f, - 0x0955, 0x0957, - 0x0962, 0x0963, - 0x0981, 0x0983, - 0x09be, 0x09c4, - 0x09c7, 0x09c8, - 0x09cb, 0x09cc, - 0x09d7, 0x09d7, - 0x09e2, 0x09e3, - 0x0a01, 0x0a03, - 0x0a3e, 0x0a42, - 0x0a47, 0x0a48, - 0x0a4b, 0x0a4c, - 0x0a51, 0x0a51, - 0x0a70, 0x0a71, - 0x0a75, 0x0a75, - 0x0a81, 0x0a83, - 0x0abe, 0x0ac5, - 0x0ac7, 0x0ac9, - 0x0acb, 0x0acc, - 0x0ae2, 0x0ae3, - 0x0b01, 0x0b03, - 0x0b3e, 0x0b44, - 0x0b47, 0x0b48, - 0x0b4b, 0x0b4c, - 0x0b56, 0x0b57, - 0x0b62, 0x0b63, - 0x0b82, 0x0b82, - 0x0bbe, 0x0bc2, - 0x0bc6, 0x0bc8, - 0x0bca, 0x0bcc, - 0x0bd7, 0x0bd7, - 0x0c00, 0x0c03, - 0x0c3e, 0x0c44, - 0x0c46, 0x0c48, - 0x0c4a, 0x0c4c, - 0x0c55, 0x0c56, - 0x0c62, 0x0c63, - 0x0c81, 0x0c83, - 0x0cbe, 0x0cc4, - 0x0cc6, 0x0cc8, - 0x0cca, 0x0ccc, - 0x0cd5, 0x0cd6, - 0x0ce2, 0x0ce3, - 0x0d01, 0x0d03, - 0x0d3e, 0x0d44, - 0x0d46, 0x0d48, - 0x0d4a, 0x0d4c, - 0x0d57, 0x0d57, - 0x0d62, 0x0d63, - 0x0d82, 0x0d83, - 0x0dcf, 0x0dd4, - 0x0dd6, 0x0dd6, - 0x0dd8, 0x0ddf, - 0x0df2, 0x0df3, - 0x0e31, 0x0e31, - 0x0e34, 0x0e3a, - 0x0e4d, 0x0e4d, - 0x0eb1, 0x0eb1, - 0x0eb4, 0x0eb9, - 0x0ebb, 0x0ebc, - 0x0ecd, 0x0ecd, - 0x0f71, 0x0f81, - 0x0f8d, 0x0f97, - 0x0f99, 0x0fbc, - 0x102b, 0x1036, - 0x1038, 0x1038, - 0x103b, 0x103e, - 0x1056, 0x1059, - 0x105e, 0x1060, - 0x1062, 0x1062, - 0x1067, 0x1068, - 0x1071, 0x1074, - 0x1082, 0x1086, - 0x109c, 0x109d, - 0x135f, 0x135f, - 0x1712, 0x1713, - 0x1732, 0x1733, - 0x1752, 0x1753, - 0x1772, 0x1773, - 0x17b6, 0x17c8, - 0x1885, 0x1886, - 0x18a9, 0x18a9, - 0x1920, 0x192b, - 0x1930, 0x1938, - 0x1a17, 0x1a1b, - 0x1a55, 0x1a5e, - 0x1a61, 0x1a74, - 0x1b00, 0x1b04, - 0x1b35, 0x1b43, - 0x1b80, 0x1b82, - 0x1ba1, 0x1ba9, - 0x1bac, 0x1bad, - 0x1be7, 0x1bf1, - 0x1c24, 0x1c35, - 0x1cf2, 0x1cf3, - 0x1de7, 0x1df4, - 0x24b6, 0x24e9, - 0x2de0, 0x2dff, - 0xa674, 0xa67b, - 0xa69e, 0xa69f, - 0xa823, 0xa827, - 0xa880, 0xa881, - 0xa8b4, 0xa8c3, - 0xa8c5, 0xa8c5, - 0xa926, 0xa92a, - 0xa947, 0xa952, - 0xa980, 0xa983, - 0xa9b4, 0xa9bf, - 0xaa29, 0xaa36, - 0xaa43, 0xaa43, - 0xaa4c, 0xaa4d, - 0xaab0, 0xaab0, - 0xaab2, 0xaab4, - 0xaab7, 0xaab8, - 0xaabe, 0xaabe, - 0xaaeb, 0xaaef, - 0xaaf5, 0xaaf5, - 0xabe3, 0xabea, - 0xfb1e, 0xfb1e, - 0x10376, 0x1037a, - 0x10a01, 0x10a03, - 0x10a05, 0x10a06, - 0x10a0c, 0x10a0f, - 0x11000, 0x11002, - 0x11038, 0x11045, - 0x11082, 0x11082, - 0x110b0, 0x110b8, - 0x11100, 0x11102, - 0x11127, 0x11132, - 0x11180, 0x11182, - 0x111b3, 0x111bf, - 0x1122c, 0x11234, - 0x11237, 0x11237, - 0x1123e, 0x1123e, - 0x112df, 0x112e8, - 0x11300, 0x11303, - 0x1133e, 0x11344, - 0x11347, 0x11348, - 0x1134b, 0x1134c, - 0x11357, 0x11357, - 0x11362, 0x11363, - 0x11435, 0x11441, - 0x11443, 0x11445, - 0x114b0, 0x114c1, - 0x115af, 0x115b5, - 0x115b8, 0x115be, - 0x115dc, 0x115dd, - 0x11630, 0x1163e, - 0x11640, 0x11640, - 0x116ab, 0x116b5, - 0x1171d, 0x1172a, - 0x11c2f, 0x11c36, - 0x11c38, 0x11c3e, - 0x11c92, 0x11ca7, - 0x11ca9, 0x11cb6, - 0x16b30, 0x16b36, - 0x16f51, 0x16f7e, - 0x1bc9e, 0x1bc9e, - 0x1e000, 0x1e006, - 0x1e008, 0x1e018, - 0x1e01b, 0x1e021, - 0x1e023, 0x1e024, - 0x1e026, 0x1e02a, - 0x1e947, 0x1e947, - 0x1f130, 0x1f149, - 0x1f150, 0x1f169, - 0x1f170, 0x1f189, -}; /* CR_Other_Alphabetic */ - -/* 'Ideographic': Binary Property */ -static const OnigCodePoint CR_Ideographic[] = { - 14, - 0x3006, 0x3007, - 0x3021, 0x3029, - 0x3038, 0x303a, - 0x3400, 0x4db5, - 0x4e00, 0x9fd5, - 0xf900, 0xfa6d, - 0xfa70, 0xfad9, - 0x17000, 0x187ec, - 0x18800, 0x18af2, - 0x20000, 0x2a6d6, - 0x2a700, 0x2b734, - 0x2b740, 0x2b81d, - 0x2b820, 0x2cea1, - 0x2f800, 0x2fa1d, -}; /* CR_Ideographic */ - -/* 'Diacritic': Binary Property */ -static const OnigCodePoint CR_Diacritic[] = { - 152, - 0x005e, 0x005e, - 0x0060, 0x0060, - 0x00a8, 0x00a8, - 0x00af, 0x00af, - 0x00b4, 0x00b4, - 0x00b7, 0x00b8, - 0x02b0, 0x034e, - 0x0350, 0x0357, - 0x035d, 0x0362, - 0x0374, 0x0375, - 0x037a, 0x037a, - 0x0384, 0x0385, - 0x0483, 0x0487, - 0x0559, 0x0559, - 0x0591, 0x05a1, - 0x05a3, 0x05bd, - 0x05bf, 0x05bf, - 0x05c1, 0x05c2, - 0x05c4, 0x05c4, - 0x064b, 0x0652, - 0x0657, 0x0658, - 0x06df, 0x06e0, - 0x06e5, 0x06e6, - 0x06ea, 0x06ec, - 0x0730, 0x074a, - 0x07a6, 0x07b0, - 0x07eb, 0x07f5, - 0x0818, 0x0819, - 0x08e3, 0x08fe, - 0x093c, 0x093c, - 0x094d, 0x094d, - 0x0951, 0x0954, - 0x0971, 0x0971, - 0x09bc, 0x09bc, - 0x09cd, 0x09cd, - 0x0a3c, 0x0a3c, - 0x0a4d, 0x0a4d, - 0x0abc, 0x0abc, - 0x0acd, 0x0acd, - 0x0b3c, 0x0b3c, - 0x0b4d, 0x0b4d, - 0x0bcd, 0x0bcd, - 0x0c4d, 0x0c4d, - 0x0cbc, 0x0cbc, - 0x0ccd, 0x0ccd, - 0x0d4d, 0x0d4d, - 0x0dca, 0x0dca, - 0x0e47, 0x0e4c, - 0x0e4e, 0x0e4e, - 0x0ec8, 0x0ecc, - 0x0f18, 0x0f19, - 0x0f35, 0x0f35, - 0x0f37, 0x0f37, - 0x0f39, 0x0f39, - 0x0f3e, 0x0f3f, - 0x0f82, 0x0f84, - 0x0f86, 0x0f87, - 0x0fc6, 0x0fc6, - 0x1037, 0x1037, - 0x1039, 0x103a, - 0x1087, 0x108d, - 0x108f, 0x108f, - 0x109a, 0x109b, - 0x17c9, 0x17d3, - 0x17dd, 0x17dd, - 0x1939, 0x193b, - 0x1a75, 0x1a7c, - 0x1a7f, 0x1a7f, - 0x1ab0, 0x1abd, - 0x1b34, 0x1b34, - 0x1b44, 0x1b44, - 0x1b6b, 0x1b73, - 0x1baa, 0x1bab, - 0x1c36, 0x1c37, - 0x1c78, 0x1c7d, - 0x1cd0, 0x1ce8, - 0x1ced, 0x1ced, - 0x1cf4, 0x1cf4, - 0x1cf8, 0x1cf9, - 0x1d2c, 0x1d6a, - 0x1dc4, 0x1dcf, - 0x1df5, 0x1df5, - 0x1dfd, 0x1dff, - 0x1fbd, 0x1fbd, - 0x1fbf, 0x1fc1, - 0x1fcd, 0x1fcf, - 0x1fdd, 0x1fdf, - 0x1fed, 0x1fef, - 0x1ffd, 0x1ffe, - 0x2cef, 0x2cf1, - 0x2e2f, 0x2e2f, - 0x302a, 0x302f, - 0x3099, 0x309c, - 0x30fc, 0x30fc, - 0xa66f, 0xa66f, - 0xa67c, 0xa67d, - 0xa67f, 0xa67f, - 0xa69c, 0xa69d, - 0xa6f0, 0xa6f1, - 0xa717, 0xa721, - 0xa788, 0xa788, - 0xa7f8, 0xa7f9, - 0xa8c4, 0xa8c4, - 0xa8e0, 0xa8f1, - 0xa92b, 0xa92e, - 0xa953, 0xa953, - 0xa9b3, 0xa9b3, - 0xa9c0, 0xa9c0, - 0xa9e5, 0xa9e5, - 0xaa7b, 0xaa7d, - 0xaabf, 0xaac2, - 0xaaf6, 0xaaf6, - 0xab5b, 0xab5f, - 0xabec, 0xabed, - 0xfb1e, 0xfb1e, - 0xfe20, 0xfe2f, - 0xff3e, 0xff3e, - 0xff40, 0xff40, - 0xff70, 0xff70, - 0xff9e, 0xff9f, - 0xffe3, 0xffe3, - 0x102e0, 0x102e0, - 0x10ae5, 0x10ae6, - 0x110b9, 0x110ba, - 0x11133, 0x11134, - 0x11173, 0x11173, - 0x111c0, 0x111c0, - 0x111ca, 0x111cc, - 0x11235, 0x11236, - 0x112e9, 0x112ea, - 0x1133c, 0x1133c, - 0x1134d, 0x1134d, - 0x11366, 0x1136c, - 0x11370, 0x11374, - 0x11442, 0x11442, - 0x11446, 0x11446, - 0x114c2, 0x114c3, - 0x115bf, 0x115c0, - 0x1163f, 0x1163f, - 0x116b6, 0x116b7, - 0x1172b, 0x1172b, - 0x11c3f, 0x11c3f, - 0x16af0, 0x16af4, - 0x16f8f, 0x16f9f, - 0x1d167, 0x1d169, - 0x1d16d, 0x1d172, - 0x1d17b, 0x1d182, - 0x1d185, 0x1d18b, - 0x1d1aa, 0x1d1ad, - 0x1e8d0, 0x1e8d6, - 0x1e944, 0x1e946, - 0x1e948, 0x1e94a, -}; /* CR_Diacritic */ - -/* 'Extender': Binary Property */ -static const OnigCodePoint CR_Extender[] = { - 28, - 0x00b7, 0x00b7, - 0x02d0, 0x02d1, - 0x0640, 0x0640, - 0x07fa, 0x07fa, - 0x0e46, 0x0e46, - 0x0ec6, 0x0ec6, - 0x180a, 0x180a, - 0x1843, 0x1843, - 0x1aa7, 0x1aa7, - 0x1c36, 0x1c36, - 0x1c7b, 0x1c7b, - 0x3005, 0x3005, - 0x3031, 0x3035, - 0x309d, 0x309e, - 0x30fc, 0x30fe, - 0xa015, 0xa015, - 0xa60c, 0xa60c, - 0xa9cf, 0xa9cf, - 0xa9e6, 0xa9e6, - 0xaa70, 0xaa70, - 0xaadd, 0xaadd, - 0xaaf3, 0xaaf4, - 0xff70, 0xff70, - 0x1135d, 0x1135d, - 0x115c6, 0x115c8, - 0x16b42, 0x16b43, - 0x16fe0, 0x16fe0, - 0x1e944, 0x1e946, -}; /* CR_Extender */ - -/* 'Other_Lowercase': Binary Property */ -static const OnigCodePoint CR_Other_Lowercase[] = { - 20, - 0x00aa, 0x00aa, - 0x00ba, 0x00ba, - 0x02b0, 0x02b8, - 0x02c0, 0x02c1, - 0x02e0, 0x02e4, - 0x0345, 0x0345, - 0x037a, 0x037a, - 0x1d2c, 0x1d6a, - 0x1d78, 0x1d78, - 0x1d9b, 0x1dbf, - 0x2071, 0x2071, - 0x207f, 0x207f, - 0x2090, 0x209c, - 0x2170, 0x217f, - 0x24d0, 0x24e9, - 0x2c7c, 0x2c7d, - 0xa69c, 0xa69d, - 0xa770, 0xa770, - 0xa7f8, 0xa7f9, - 0xab5c, 0xab5f, -}; /* CR_Other_Lowercase */ - -/* 'Other_Uppercase': Binary Property */ -static const OnigCodePoint CR_Other_Uppercase[] = { - 5, - 0x2160, 0x216f, - 0x24b6, 0x24cf, - 0x1f130, 0x1f149, - 0x1f150, 0x1f169, - 0x1f170, 0x1f189, -}; /* CR_Other_Uppercase */ - -/* 'Noncharacter_Code_Point': Binary Property */ -static const OnigCodePoint CR_Noncharacter_Code_Point[] = { - 18, - 0xfdd0, 0xfdef, - 0xfffe, 0xffff, - 0x1fffe, 0x1ffff, - 0x2fffe, 0x2ffff, - 0x3fffe, 0x3ffff, - 0x4fffe, 0x4ffff, - 0x5fffe, 0x5ffff, - 0x6fffe, 0x6ffff, - 0x7fffe, 0x7ffff, - 0x8fffe, 0x8ffff, - 0x9fffe, 0x9ffff, - 0xafffe, 0xaffff, - 0xbfffe, 0xbffff, - 0xcfffe, 0xcffff, - 0xdfffe, 0xdffff, - 0xefffe, 0xeffff, - 0xffffe, 0xfffff, - 0x10fffe, 0x10ffff, -}; /* CR_Noncharacter_Code_Point */ - -/* 'Other_Grapheme_Extend': Binary Property */ -static const OnigCodePoint CR_Other_Grapheme_Extend[] = { - 23, - 0x09be, 0x09be, - 0x09d7, 0x09d7, - 0x0b3e, 0x0b3e, - 0x0b57, 0x0b57, - 0x0bbe, 0x0bbe, - 0x0bd7, 0x0bd7, - 0x0cc2, 0x0cc2, - 0x0cd5, 0x0cd6, - 0x0d3e, 0x0d3e, - 0x0d57, 0x0d57, - 0x0dcf, 0x0dcf, - 0x0ddf, 0x0ddf, - 0x200c, 0x200c, - 0x302e, 0x302f, - 0xff9e, 0xff9f, - 0x1133e, 0x1133e, - 0x11357, 0x11357, - 0x114b0, 0x114b0, - 0x114bd, 0x114bd, - 0x115af, 0x115af, - 0x1d165, 0x1d165, - 0x1d16e, 0x1d172, - 0xe0020, 0xe007f, -}; /* CR_Other_Grapheme_Extend */ - -/* 'IDS_Binary_Operator': Binary Property */ -static const OnigCodePoint CR_IDS_Binary_Operator[] = { - 2, - 0x2ff0, 0x2ff1, - 0x2ff4, 0x2ffb, -}; /* CR_IDS_Binary_Operator */ - -/* 'IDS_Trinary_Operator': Binary Property */ -static const OnigCodePoint CR_IDS_Trinary_Operator[] = { - 1, - 0x2ff2, 0x2ff3, -}; /* CR_IDS_Trinary_Operator */ - -/* 'Radical': Binary Property */ -static const OnigCodePoint CR_Radical[] = { - 3, - 0x2e80, 0x2e99, - 0x2e9b, 0x2ef3, - 0x2f00, 0x2fd5, -}; /* CR_Radical */ - -/* 'Unified_Ideograph': Binary Property */ -static const OnigCodePoint CR_Unified_Ideograph[] = { - 13, - 0x3400, 0x4db5, - 0x4e00, 0x9fd5, - 0xfa0e, 0xfa0f, - 0xfa11, 0xfa11, - 0xfa13, 0xfa14, - 0xfa1f, 0xfa1f, - 0xfa21, 0xfa21, - 0xfa23, 0xfa24, - 0xfa27, 0xfa29, - 0x20000, 0x2a6d6, - 0x2a700, 0x2b734, - 0x2b740, 0x2b81d, - 0x2b820, 0x2cea1, -}; /* CR_Unified_Ideograph */ - -/* 'Other_Default_Ignorable_Code_Point': Binary Property */ -static const OnigCodePoint CR_Other_Default_Ignorable_Code_Point[] = { - 11, - 0x034f, 0x034f, - 0x115f, 0x1160, - 0x17b4, 0x17b5, - 0x2065, 0x2065, - 0x3164, 0x3164, - 0xffa0, 0xffa0, - 0xfff0, 0xfff8, - 0xe0000, 0xe0000, - 0xe0002, 0xe001f, - 0xe0080, 0xe00ff, - 0xe01f0, 0xe0fff, -}; /* CR_Other_Default_Ignorable_Code_Point */ - -/* 'Deprecated': Binary Property */ -static const OnigCodePoint CR_Deprecated[] = { - 8, - 0x0149, 0x0149, - 0x0673, 0x0673, - 0x0f77, 0x0f77, - 0x0f79, 0x0f79, - 0x17a3, 0x17a4, - 0x206a, 0x206f, - 0x2329, 0x232a, - 0xe0001, 0xe0001, -}; /* CR_Deprecated */ - -/* 'Soft_Dotted': Binary Property */ -static const OnigCodePoint CR_Soft_Dotted[] = { - 31, - 0x0069, 0x006a, - 0x012f, 0x012f, - 0x0249, 0x0249, - 0x0268, 0x0268, - 0x029d, 0x029d, - 0x02b2, 0x02b2, - 0x03f3, 0x03f3, - 0x0456, 0x0456, - 0x0458, 0x0458, - 0x1d62, 0x1d62, - 0x1d96, 0x1d96, - 0x1da4, 0x1da4, - 0x1da8, 0x1da8, - 0x1e2d, 0x1e2d, - 0x1ecb, 0x1ecb, - 0x2071, 0x2071, - 0x2148, 0x2149, - 0x2c7c, 0x2c7c, - 0x1d422, 0x1d423, - 0x1d456, 0x1d457, - 0x1d48a, 0x1d48b, - 0x1d4be, 0x1d4bf, - 0x1d4f2, 0x1d4f3, - 0x1d526, 0x1d527, - 0x1d55a, 0x1d55b, - 0x1d58e, 0x1d58f, - 0x1d5c2, 0x1d5c3, - 0x1d5f6, 0x1d5f7, - 0x1d62a, 0x1d62b, - 0x1d65e, 0x1d65f, - 0x1d692, 0x1d693, -}; /* CR_Soft_Dotted */ - -/* 'Logical_Order_Exception': Binary Property */ -static const OnigCodePoint CR_Logical_Order_Exception[] = { - 7, - 0x0e40, 0x0e44, - 0x0ec0, 0x0ec4, - 0x19b5, 0x19b7, - 0x19ba, 0x19ba, - 0xaab5, 0xaab6, - 0xaab9, 0xaab9, - 0xaabb, 0xaabc, -}; /* CR_Logical_Order_Exception */ - -/* 'Other_ID_Start': Binary Property */ -static const OnigCodePoint CR_Other_ID_Start[] = { - 4, - 0x1885, 0x1886, - 0x2118, 0x2118, - 0x212e, 0x212e, - 0x309b, 0x309c, -}; /* CR_Other_ID_Start */ - -/* 'Other_ID_Continue': Binary Property */ -static const OnigCodePoint CR_Other_ID_Continue[] = { - 4, - 0x00b7, 0x00b7, - 0x0387, 0x0387, - 0x1369, 0x1371, - 0x19da, 0x19da, -}; /* CR_Other_ID_Continue */ - -/* 'Sentence_Terminal': Binary Property */ -static const OnigCodePoint CR_Sentence_Terminal[] = { - 66, - 0x0021, 0x0021, - 0x002e, 0x002e, - 0x003f, 0x003f, - 0x0589, 0x0589, - 0x061f, 0x061f, - 0x06d4, 0x06d4, - 0x0700, 0x0702, - 0x07f9, 0x07f9, - 0x0964, 0x0965, - 0x104a, 0x104b, - 0x1362, 0x1362, - 0x1367, 0x1368, - 0x166e, 0x166e, - 0x1735, 0x1736, - 0x1803, 0x1803, - 0x1809, 0x1809, - 0x1944, 0x1945, - 0x1aa8, 0x1aab, - 0x1b5a, 0x1b5b, - 0x1b5e, 0x1b5f, - 0x1c3b, 0x1c3c, - 0x1c7e, 0x1c7f, - 0x203c, 0x203d, - 0x2047, 0x2049, - 0x2e2e, 0x2e2e, - 0x2e3c, 0x2e3c, - 0x3002, 0x3002, - 0xa4ff, 0xa4ff, - 0xa60e, 0xa60f, - 0xa6f3, 0xa6f3, - 0xa6f7, 0xa6f7, - 0xa876, 0xa877, - 0xa8ce, 0xa8cf, - 0xa92f, 0xa92f, - 0xa9c8, 0xa9c9, - 0xaa5d, 0xaa5f, - 0xaaf0, 0xaaf1, - 0xabeb, 0xabeb, - 0xfe52, 0xfe52, - 0xfe56, 0xfe57, - 0xff01, 0xff01, - 0xff0e, 0xff0e, - 0xff1f, 0xff1f, - 0xff61, 0xff61, - 0x10a56, 0x10a57, - 0x11047, 0x11048, - 0x110be, 0x110c1, - 0x11141, 0x11143, - 0x111c5, 0x111c6, - 0x111cd, 0x111cd, - 0x111de, 0x111df, - 0x11238, 0x11239, - 0x1123b, 0x1123c, - 0x112a9, 0x112a9, - 0x1144b, 0x1144c, - 0x115c2, 0x115c3, - 0x115c9, 0x115d7, - 0x11641, 0x11642, - 0x1173c, 0x1173e, - 0x11c41, 0x11c42, - 0x16a6e, 0x16a6f, - 0x16af5, 0x16af5, - 0x16b37, 0x16b38, - 0x16b44, 0x16b44, - 0x1bc9f, 0x1bc9f, - 0x1da88, 0x1da88, -}; /* CR_Sentence_Terminal */ - -/* 'Variation_Selector': Binary Property */ -static const OnigCodePoint CR_Variation_Selector[] = { - 3, - 0x180b, 0x180d, - 0xfe00, 0xfe0f, - 0xe0100, 0xe01ef, -}; /* CR_Variation_Selector */ - -/* 'Pattern_White_Space': Binary Property */ -static const OnigCodePoint CR_Pattern_White_Space[] = { - 5, - 0x0009, 0x000d, - 0x0020, 0x0020, - 0x0085, 0x0085, - 0x200e, 0x200f, - 0x2028, 0x2029, -}; /* CR_Pattern_White_Space */ - -/* 'Pattern_Syntax': Binary Property */ -static const OnigCodePoint CR_Pattern_Syntax[] = { - 28, - 0x0021, 0x002f, - 0x003a, 0x0040, - 0x005b, 0x005e, - 0x0060, 0x0060, - 0x007b, 0x007e, - 0x00a1, 0x00a7, - 0x00a9, 0x00a9, - 0x00ab, 0x00ac, - 0x00ae, 0x00ae, - 0x00b0, 0x00b1, - 0x00b6, 0x00b6, - 0x00bb, 0x00bb, - 0x00bf, 0x00bf, - 0x00d7, 0x00d7, - 0x00f7, 0x00f7, - 0x2010, 0x2027, - 0x2030, 0x203e, - 0x2041, 0x2053, - 0x2055, 0x205e, - 0x2190, 0x245f, - 0x2500, 0x2775, - 0x2794, 0x2bff, - 0x2e00, 0x2e7f, - 0x3001, 0x3003, - 0x3008, 0x3020, - 0x3030, 0x3030, - 0xfd3e, 0xfd3f, - 0xfe45, 0xfe46, -}; /* CR_Pattern_Syntax */ - -/* 'Prepended_Concatenation_Mark': Binary Property */ -static const OnigCodePoint CR_Prepended_Concatenation_Mark[] = { - 5, - 0x0600, 0x0605, - 0x06dd, 0x06dd, - 0x070f, 0x070f, - 0x08e2, 0x08e2, - 0x110bd, 0x110bd, -}; /* CR_Prepended_Concatenation_Mark */ - -/* 'Unknown': Script */ -static const OnigCodePoint CR_Unknown[] = { - 636, - 0x0378, 0x0379, - 0x0380, 0x0383, - 0x038b, 0x038b, - 0x038d, 0x038d, - 0x03a2, 0x03a2, - 0x0530, 0x0530, - 0x0557, 0x0558, - 0x0560, 0x0560, - 0x0588, 0x0588, - 0x058b, 0x058c, - 0x0590, 0x0590, - 0x05c8, 0x05cf, - 0x05eb, 0x05ef, - 0x05f5, 0x05ff, - 0x061d, 0x061d, - 0x070e, 0x070e, - 0x074b, 0x074c, - 0x07b2, 0x07bf, - 0x07fb, 0x07ff, - 0x082e, 0x082f, - 0x083f, 0x083f, - 0x085c, 0x085d, - 0x085f, 0x089f, - 0x08b5, 0x08b5, - 0x08be, 0x08d3, - 0x0984, 0x0984, - 0x098d, 0x098e, - 0x0991, 0x0992, - 0x09a9, 0x09a9, - 0x09b1, 0x09b1, - 0x09b3, 0x09b5, - 0x09ba, 0x09bb, - 0x09c5, 0x09c6, - 0x09c9, 0x09ca, - 0x09cf, 0x09d6, - 0x09d8, 0x09db, - 0x09de, 0x09de, - 0x09e4, 0x09e5, - 0x09fc, 0x0a00, - 0x0a04, 0x0a04, - 0x0a0b, 0x0a0e, - 0x0a11, 0x0a12, - 0x0a29, 0x0a29, - 0x0a31, 0x0a31, - 0x0a34, 0x0a34, - 0x0a37, 0x0a37, - 0x0a3a, 0x0a3b, - 0x0a3d, 0x0a3d, - 0x0a43, 0x0a46, - 0x0a49, 0x0a4a, - 0x0a4e, 0x0a50, - 0x0a52, 0x0a58, - 0x0a5d, 0x0a5d, - 0x0a5f, 0x0a65, - 0x0a76, 0x0a80, - 0x0a84, 0x0a84, - 0x0a8e, 0x0a8e, - 0x0a92, 0x0a92, - 0x0aa9, 0x0aa9, - 0x0ab1, 0x0ab1, - 0x0ab4, 0x0ab4, - 0x0aba, 0x0abb, - 0x0ac6, 0x0ac6, - 0x0aca, 0x0aca, - 0x0ace, 0x0acf, - 0x0ad1, 0x0adf, - 0x0ae4, 0x0ae5, - 0x0af2, 0x0af8, - 0x0afa, 0x0b00, - 0x0b04, 0x0b04, - 0x0b0d, 0x0b0e, - 0x0b11, 0x0b12, - 0x0b29, 0x0b29, - 0x0b31, 0x0b31, - 0x0b34, 0x0b34, - 0x0b3a, 0x0b3b, - 0x0b45, 0x0b46, - 0x0b49, 0x0b4a, - 0x0b4e, 0x0b55, - 0x0b58, 0x0b5b, - 0x0b5e, 0x0b5e, - 0x0b64, 0x0b65, - 0x0b78, 0x0b81, - 0x0b84, 0x0b84, - 0x0b8b, 0x0b8d, - 0x0b91, 0x0b91, - 0x0b96, 0x0b98, - 0x0b9b, 0x0b9b, - 0x0b9d, 0x0b9d, - 0x0ba0, 0x0ba2, - 0x0ba5, 0x0ba7, - 0x0bab, 0x0bad, - 0x0bba, 0x0bbd, - 0x0bc3, 0x0bc5, - 0x0bc9, 0x0bc9, - 0x0bce, 0x0bcf, - 0x0bd1, 0x0bd6, - 0x0bd8, 0x0be5, - 0x0bfb, 0x0bff, - 0x0c04, 0x0c04, - 0x0c0d, 0x0c0d, - 0x0c11, 0x0c11, - 0x0c29, 0x0c29, - 0x0c3a, 0x0c3c, - 0x0c45, 0x0c45, - 0x0c49, 0x0c49, - 0x0c4e, 0x0c54, - 0x0c57, 0x0c57, - 0x0c5b, 0x0c5f, - 0x0c64, 0x0c65, - 0x0c70, 0x0c77, - 0x0c84, 0x0c84, - 0x0c8d, 0x0c8d, - 0x0c91, 0x0c91, - 0x0ca9, 0x0ca9, - 0x0cb4, 0x0cb4, - 0x0cba, 0x0cbb, - 0x0cc5, 0x0cc5, - 0x0cc9, 0x0cc9, - 0x0cce, 0x0cd4, - 0x0cd7, 0x0cdd, - 0x0cdf, 0x0cdf, - 0x0ce4, 0x0ce5, - 0x0cf0, 0x0cf0, - 0x0cf3, 0x0d00, - 0x0d04, 0x0d04, - 0x0d0d, 0x0d0d, - 0x0d11, 0x0d11, - 0x0d3b, 0x0d3c, - 0x0d45, 0x0d45, - 0x0d49, 0x0d49, - 0x0d50, 0x0d53, - 0x0d64, 0x0d65, - 0x0d80, 0x0d81, - 0x0d84, 0x0d84, - 0x0d97, 0x0d99, - 0x0db2, 0x0db2, - 0x0dbc, 0x0dbc, - 0x0dbe, 0x0dbf, - 0x0dc7, 0x0dc9, - 0x0dcb, 0x0dce, - 0x0dd5, 0x0dd5, - 0x0dd7, 0x0dd7, - 0x0de0, 0x0de5, - 0x0df0, 0x0df1, - 0x0df5, 0x0e00, - 0x0e3b, 0x0e3e, - 0x0e5c, 0x0e80, - 0x0e83, 0x0e83, - 0x0e85, 0x0e86, - 0x0e89, 0x0e89, - 0x0e8b, 0x0e8c, - 0x0e8e, 0x0e93, - 0x0e98, 0x0e98, - 0x0ea0, 0x0ea0, - 0x0ea4, 0x0ea4, - 0x0ea6, 0x0ea6, - 0x0ea8, 0x0ea9, - 0x0eac, 0x0eac, - 0x0eba, 0x0eba, - 0x0ebe, 0x0ebf, - 0x0ec5, 0x0ec5, - 0x0ec7, 0x0ec7, - 0x0ece, 0x0ecf, - 0x0eda, 0x0edb, - 0x0ee0, 0x0eff, - 0x0f48, 0x0f48, - 0x0f6d, 0x0f70, - 0x0f98, 0x0f98, - 0x0fbd, 0x0fbd, - 0x0fcd, 0x0fcd, - 0x0fdb, 0x0fff, - 0x10c6, 0x10c6, - 0x10c8, 0x10cc, - 0x10ce, 0x10cf, - 0x1249, 0x1249, - 0x124e, 0x124f, - 0x1257, 0x1257, - 0x1259, 0x1259, - 0x125e, 0x125f, - 0x1289, 0x1289, - 0x128e, 0x128f, - 0x12b1, 0x12b1, - 0x12b6, 0x12b7, - 0x12bf, 0x12bf, - 0x12c1, 0x12c1, - 0x12c6, 0x12c7, - 0x12d7, 0x12d7, - 0x1311, 0x1311, - 0x1316, 0x1317, - 0x135b, 0x135c, - 0x137d, 0x137f, - 0x139a, 0x139f, - 0x13f6, 0x13f7, - 0x13fe, 0x13ff, - 0x169d, 0x169f, - 0x16f9, 0x16ff, - 0x170d, 0x170d, - 0x1715, 0x171f, - 0x1737, 0x173f, - 0x1754, 0x175f, - 0x176d, 0x176d, - 0x1771, 0x1771, - 0x1774, 0x177f, - 0x17de, 0x17df, - 0x17ea, 0x17ef, - 0x17fa, 0x17ff, - 0x180f, 0x180f, - 0x181a, 0x181f, - 0x1878, 0x187f, - 0x18ab, 0x18af, - 0x18f6, 0x18ff, - 0x191f, 0x191f, - 0x192c, 0x192f, - 0x193c, 0x193f, - 0x1941, 0x1943, - 0x196e, 0x196f, - 0x1975, 0x197f, - 0x19ac, 0x19af, - 0x19ca, 0x19cf, - 0x19db, 0x19dd, - 0x1a1c, 0x1a1d, - 0x1a5f, 0x1a5f, - 0x1a7d, 0x1a7e, - 0x1a8a, 0x1a8f, - 0x1a9a, 0x1a9f, - 0x1aae, 0x1aaf, - 0x1abf, 0x1aff, - 0x1b4c, 0x1b4f, - 0x1b7d, 0x1b7f, - 0x1bf4, 0x1bfb, - 0x1c38, 0x1c3a, - 0x1c4a, 0x1c4c, - 0x1c89, 0x1cbf, - 0x1cc8, 0x1ccf, - 0x1cf7, 0x1cf7, - 0x1cfa, 0x1cff, - 0x1df6, 0x1dfa, - 0x1f16, 0x1f17, - 0x1f1e, 0x1f1f, - 0x1f46, 0x1f47, - 0x1f4e, 0x1f4f, - 0x1f58, 0x1f58, - 0x1f5a, 0x1f5a, - 0x1f5c, 0x1f5c, - 0x1f5e, 0x1f5e, - 0x1f7e, 0x1f7f, - 0x1fb5, 0x1fb5, - 0x1fc5, 0x1fc5, - 0x1fd4, 0x1fd5, - 0x1fdc, 0x1fdc, - 0x1ff0, 0x1ff1, - 0x1ff5, 0x1ff5, - 0x1fff, 0x1fff, - 0x2065, 0x2065, - 0x2072, 0x2073, - 0x208f, 0x208f, - 0x209d, 0x209f, - 0x20bf, 0x20cf, - 0x20f1, 0x20ff, - 0x218c, 0x218f, - 0x23ff, 0x23ff, - 0x2427, 0x243f, - 0x244b, 0x245f, - 0x2b74, 0x2b75, - 0x2b96, 0x2b97, - 0x2bba, 0x2bbc, - 0x2bc9, 0x2bc9, - 0x2bd2, 0x2beb, - 0x2bf0, 0x2bff, - 0x2c2f, 0x2c2f, - 0x2c5f, 0x2c5f, - 0x2cf4, 0x2cf8, - 0x2d26, 0x2d26, - 0x2d28, 0x2d2c, - 0x2d2e, 0x2d2f, - 0x2d68, 0x2d6e, - 0x2d71, 0x2d7e, - 0x2d97, 0x2d9f, - 0x2da7, 0x2da7, - 0x2daf, 0x2daf, - 0x2db7, 0x2db7, - 0x2dbf, 0x2dbf, - 0x2dc7, 0x2dc7, - 0x2dcf, 0x2dcf, - 0x2dd7, 0x2dd7, - 0x2ddf, 0x2ddf, - 0x2e45, 0x2e7f, - 0x2e9a, 0x2e9a, - 0x2ef4, 0x2eff, - 0x2fd6, 0x2fef, - 0x2ffc, 0x2fff, - 0x3040, 0x3040, - 0x3097, 0x3098, - 0x3100, 0x3104, - 0x312e, 0x3130, - 0x318f, 0x318f, - 0x31bb, 0x31bf, - 0x31e4, 0x31ef, - 0x321f, 0x321f, - 0x32ff, 0x32ff, - 0x4db6, 0x4dbf, - 0x9fd6, 0x9fff, - 0xa48d, 0xa48f, - 0xa4c7, 0xa4cf, - 0xa62c, 0xa63f, - 0xa6f8, 0xa6ff, - 0xa7af, 0xa7af, - 0xa7b8, 0xa7f6, - 0xa82c, 0xa82f, - 0xa83a, 0xa83f, - 0xa878, 0xa87f, - 0xa8c6, 0xa8cd, - 0xa8da, 0xa8df, - 0xa8fe, 0xa8ff, - 0xa954, 0xa95e, - 0xa97d, 0xa97f, - 0xa9ce, 0xa9ce, - 0xa9da, 0xa9dd, - 0xa9ff, 0xa9ff, - 0xaa37, 0xaa3f, - 0xaa4e, 0xaa4f, - 0xaa5a, 0xaa5b, - 0xaac3, 0xaada, - 0xaaf7, 0xab00, - 0xab07, 0xab08, - 0xab0f, 0xab10, - 0xab17, 0xab1f, - 0xab27, 0xab27, - 0xab2f, 0xab2f, - 0xab66, 0xab6f, - 0xabee, 0xabef, - 0xabfa, 0xabff, - 0xd7a4, 0xd7af, - 0xd7c7, 0xd7ca, - 0xd7fc, 0xf8ff, - 0xfa6e, 0xfa6f, - 0xfada, 0xfaff, - 0xfb07, 0xfb12, - 0xfb18, 0xfb1c, - 0xfb37, 0xfb37, - 0xfb3d, 0xfb3d, - 0xfb3f, 0xfb3f, - 0xfb42, 0xfb42, - 0xfb45, 0xfb45, - 0xfbc2, 0xfbd2, - 0xfd40, 0xfd4f, - 0xfd90, 0xfd91, - 0xfdc8, 0xfdef, - 0xfdfe, 0xfdff, - 0xfe1a, 0xfe1f, - 0xfe53, 0xfe53, - 0xfe67, 0xfe67, - 0xfe6c, 0xfe6f, - 0xfe75, 0xfe75, - 0xfefd, 0xfefe, - 0xff00, 0xff00, - 0xffbf, 0xffc1, - 0xffc8, 0xffc9, - 0xffd0, 0xffd1, - 0xffd8, 0xffd9, - 0xffdd, 0xffdf, - 0xffe7, 0xffe7, - 0xffef, 0xfff8, - 0xfffe, 0xffff, - 0x1000c, 0x1000c, - 0x10027, 0x10027, - 0x1003b, 0x1003b, - 0x1003e, 0x1003e, - 0x1004e, 0x1004f, - 0x1005e, 0x1007f, - 0x100fb, 0x100ff, - 0x10103, 0x10106, - 0x10134, 0x10136, - 0x1018f, 0x1018f, - 0x1019c, 0x1019f, - 0x101a1, 0x101cf, - 0x101fe, 0x1027f, - 0x1029d, 0x1029f, - 0x102d1, 0x102df, - 0x102fc, 0x102ff, - 0x10324, 0x1032f, - 0x1034b, 0x1034f, - 0x1037b, 0x1037f, - 0x1039e, 0x1039e, - 0x103c4, 0x103c7, - 0x103d6, 0x103ff, - 0x1049e, 0x1049f, - 0x104aa, 0x104af, - 0x104d4, 0x104d7, - 0x104fc, 0x104ff, - 0x10528, 0x1052f, - 0x10564, 0x1056e, - 0x10570, 0x105ff, - 0x10737, 0x1073f, - 0x10756, 0x1075f, - 0x10768, 0x107ff, - 0x10806, 0x10807, - 0x10809, 0x10809, - 0x10836, 0x10836, - 0x10839, 0x1083b, - 0x1083d, 0x1083e, - 0x10856, 0x10856, - 0x1089f, 0x108a6, - 0x108b0, 0x108df, - 0x108f3, 0x108f3, - 0x108f6, 0x108fa, - 0x1091c, 0x1091e, - 0x1093a, 0x1093e, - 0x10940, 0x1097f, - 0x109b8, 0x109bb, - 0x109d0, 0x109d1, - 0x10a04, 0x10a04, - 0x10a07, 0x10a0b, - 0x10a14, 0x10a14, - 0x10a18, 0x10a18, - 0x10a34, 0x10a37, - 0x10a3b, 0x10a3e, - 0x10a48, 0x10a4f, - 0x10a59, 0x10a5f, - 0x10aa0, 0x10abf, - 0x10ae7, 0x10aea, - 0x10af7, 0x10aff, - 0x10b36, 0x10b38, - 0x10b56, 0x10b57, - 0x10b73, 0x10b77, - 0x10b92, 0x10b98, - 0x10b9d, 0x10ba8, - 0x10bb0, 0x10bff, - 0x10c49, 0x10c7f, - 0x10cb3, 0x10cbf, - 0x10cf3, 0x10cf9, - 0x10d00, 0x10e5f, - 0x10e7f, 0x10fff, - 0x1104e, 0x11051, - 0x11070, 0x1107e, - 0x110c2, 0x110cf, - 0x110e9, 0x110ef, - 0x110fa, 0x110ff, - 0x11135, 0x11135, - 0x11144, 0x1114f, - 0x11177, 0x1117f, - 0x111ce, 0x111cf, - 0x111e0, 0x111e0, - 0x111f5, 0x111ff, - 0x11212, 0x11212, - 0x1123f, 0x1127f, - 0x11287, 0x11287, - 0x11289, 0x11289, - 0x1128e, 0x1128e, - 0x1129e, 0x1129e, - 0x112aa, 0x112af, - 0x112eb, 0x112ef, - 0x112fa, 0x112ff, - 0x11304, 0x11304, - 0x1130d, 0x1130e, - 0x11311, 0x11312, - 0x11329, 0x11329, - 0x11331, 0x11331, - 0x11334, 0x11334, - 0x1133a, 0x1133b, - 0x11345, 0x11346, - 0x11349, 0x1134a, - 0x1134e, 0x1134f, - 0x11351, 0x11356, - 0x11358, 0x1135c, - 0x11364, 0x11365, - 0x1136d, 0x1136f, - 0x11375, 0x113ff, - 0x1145a, 0x1145a, - 0x1145c, 0x1145c, - 0x1145e, 0x1147f, - 0x114c8, 0x114cf, - 0x114da, 0x1157f, - 0x115b6, 0x115b7, - 0x115de, 0x115ff, - 0x11645, 0x1164f, - 0x1165a, 0x1165f, - 0x1166d, 0x1167f, - 0x116b8, 0x116bf, - 0x116ca, 0x116ff, - 0x1171a, 0x1171c, - 0x1172c, 0x1172f, - 0x11740, 0x1189f, - 0x118f3, 0x118fe, - 0x11900, 0x11abf, - 0x11af9, 0x11bff, - 0x11c09, 0x11c09, - 0x11c37, 0x11c37, - 0x11c46, 0x11c4f, - 0x11c6d, 0x11c6f, - 0x11c90, 0x11c91, - 0x11ca8, 0x11ca8, - 0x11cb7, 0x11fff, - 0x1239a, 0x123ff, - 0x1246f, 0x1246f, - 0x12475, 0x1247f, - 0x12544, 0x12fff, - 0x1342f, 0x143ff, - 0x14647, 0x167ff, - 0x16a39, 0x16a3f, - 0x16a5f, 0x16a5f, - 0x16a6a, 0x16a6d, - 0x16a70, 0x16acf, - 0x16aee, 0x16aef, - 0x16af6, 0x16aff, - 0x16b46, 0x16b4f, - 0x16b5a, 0x16b5a, - 0x16b62, 0x16b62, - 0x16b78, 0x16b7c, - 0x16b90, 0x16eff, - 0x16f45, 0x16f4f, - 0x16f7f, 0x16f8e, - 0x16fa0, 0x16fdf, - 0x16fe1, 0x16fff, - 0x187ed, 0x187ff, - 0x18af3, 0x1afff, - 0x1b002, 0x1bbff, - 0x1bc6b, 0x1bc6f, - 0x1bc7d, 0x1bc7f, - 0x1bc89, 0x1bc8f, - 0x1bc9a, 0x1bc9b, - 0x1bca4, 0x1cfff, - 0x1d0f6, 0x1d0ff, - 0x1d127, 0x1d128, - 0x1d1e9, 0x1d1ff, - 0x1d246, 0x1d2ff, - 0x1d357, 0x1d35f, - 0x1d372, 0x1d3ff, - 0x1d455, 0x1d455, - 0x1d49d, 0x1d49d, - 0x1d4a0, 0x1d4a1, - 0x1d4a3, 0x1d4a4, - 0x1d4a7, 0x1d4a8, - 0x1d4ad, 0x1d4ad, - 0x1d4ba, 0x1d4ba, - 0x1d4bc, 0x1d4bc, - 0x1d4c4, 0x1d4c4, - 0x1d506, 0x1d506, - 0x1d50b, 0x1d50c, - 0x1d515, 0x1d515, - 0x1d51d, 0x1d51d, - 0x1d53a, 0x1d53a, - 0x1d53f, 0x1d53f, - 0x1d545, 0x1d545, - 0x1d547, 0x1d549, - 0x1d551, 0x1d551, - 0x1d6a6, 0x1d6a7, - 0x1d7cc, 0x1d7cd, - 0x1da8c, 0x1da9a, - 0x1daa0, 0x1daa0, - 0x1dab0, 0x1dfff, - 0x1e007, 0x1e007, - 0x1e019, 0x1e01a, - 0x1e022, 0x1e022, - 0x1e025, 0x1e025, - 0x1e02b, 0x1e7ff, - 0x1e8c5, 0x1e8c6, - 0x1e8d7, 0x1e8ff, - 0x1e94b, 0x1e94f, - 0x1e95a, 0x1e95d, - 0x1e960, 0x1edff, - 0x1ee04, 0x1ee04, - 0x1ee20, 0x1ee20, - 0x1ee23, 0x1ee23, - 0x1ee25, 0x1ee26, - 0x1ee28, 0x1ee28, - 0x1ee33, 0x1ee33, - 0x1ee38, 0x1ee38, - 0x1ee3a, 0x1ee3a, - 0x1ee3c, 0x1ee41, - 0x1ee43, 0x1ee46, - 0x1ee48, 0x1ee48, - 0x1ee4a, 0x1ee4a, - 0x1ee4c, 0x1ee4c, - 0x1ee50, 0x1ee50, - 0x1ee53, 0x1ee53, - 0x1ee55, 0x1ee56, - 0x1ee58, 0x1ee58, - 0x1ee5a, 0x1ee5a, - 0x1ee5c, 0x1ee5c, - 0x1ee5e, 0x1ee5e, - 0x1ee60, 0x1ee60, - 0x1ee63, 0x1ee63, - 0x1ee65, 0x1ee66, - 0x1ee6b, 0x1ee6b, - 0x1ee73, 0x1ee73, - 0x1ee78, 0x1ee78, - 0x1ee7d, 0x1ee7d, - 0x1ee7f, 0x1ee7f, - 0x1ee8a, 0x1ee8a, - 0x1ee9c, 0x1eea0, - 0x1eea4, 0x1eea4, - 0x1eeaa, 0x1eeaa, - 0x1eebc, 0x1eeef, - 0x1eef2, 0x1efff, - 0x1f02c, 0x1f02f, - 0x1f094, 0x1f09f, - 0x1f0af, 0x1f0b0, - 0x1f0c0, 0x1f0c0, - 0x1f0d0, 0x1f0d0, - 0x1f0f6, 0x1f0ff, - 0x1f10d, 0x1f10f, - 0x1f12f, 0x1f12f, - 0x1f16c, 0x1f16f, - 0x1f1ad, 0x1f1e5, - 0x1f203, 0x1f20f, - 0x1f23c, 0x1f23f, - 0x1f249, 0x1f24f, - 0x1f252, 0x1f2ff, - 0x1f6d3, 0x1f6df, - 0x1f6ed, 0x1f6ef, - 0x1f6f7, 0x1f6ff, - 0x1f774, 0x1f77f, - 0x1f7d5, 0x1f7ff, - 0x1f80c, 0x1f80f, - 0x1f848, 0x1f84f, - 0x1f85a, 0x1f85f, - 0x1f888, 0x1f88f, - 0x1f8ae, 0x1f90f, - 0x1f91f, 0x1f91f, - 0x1f928, 0x1f92f, - 0x1f931, 0x1f932, - 0x1f93f, 0x1f93f, - 0x1f94c, 0x1f94f, - 0x1f95f, 0x1f97f, - 0x1f992, 0x1f9bf, - 0x1f9c1, 0x1ffff, - 0x2a6d7, 0x2a6ff, - 0x2b735, 0x2b73f, - 0x2b81e, 0x2b81f, - 0x2cea2, 0x2f7ff, - 0x2fa1e, 0xe0000, - 0xe0002, 0xe001f, - 0xe0080, 0xe00ff, - 0xe01f0, 0x10ffff, -}; /* CR_Unknown */ - -#ifdef USE_UNICODE_AGE_PROPERTIES -/* 'Age_1_1': Derived Age 1.1 */ -static const OnigCodePoint CR_Age_1_1[] = { - 288, - 0x0000, 0x01f5, - 0x01fa, 0x0217, - 0x0250, 0x02a8, - 0x02b0, 0x02de, - 0x02e0, 0x02e9, - 0x0300, 0x0345, - 0x0360, 0x0361, - 0x0374, 0x0375, - 0x037a, 0x037a, - 0x037e, 0x037e, - 0x0384, 0x038a, - 0x038c, 0x038c, - 0x038e, 0x03a1, - 0x03a3, 0x03ce, - 0x03d0, 0x03d6, - 0x03da, 0x03da, - 0x03dc, 0x03dc, - 0x03de, 0x03de, - 0x03e0, 0x03e0, - 0x03e2, 0x03f3, - 0x0401, 0x040c, - 0x040e, 0x044f, - 0x0451, 0x045c, - 0x045e, 0x0486, - 0x0490, 0x04c4, - 0x04c7, 0x04c8, - 0x04cb, 0x04cc, - 0x04d0, 0x04eb, - 0x04ee, 0x04f5, - 0x04f8, 0x04f9, - 0x0531, 0x0556, - 0x0559, 0x055f, - 0x0561, 0x0587, - 0x0589, 0x0589, - 0x05b0, 0x05b9, - 0x05bb, 0x05c3, - 0x05d0, 0x05ea, - 0x05f0, 0x05f4, - 0x060c, 0x060c, - 0x061b, 0x061b, - 0x061f, 0x061f, - 0x0621, 0x063a, - 0x0640, 0x0652, - 0x0660, 0x066d, - 0x0670, 0x06b7, - 0x06ba, 0x06be, - 0x06c0, 0x06ce, - 0x06d0, 0x06ed, - 0x06f0, 0x06f9, - 0x0901, 0x0903, - 0x0905, 0x0939, - 0x093c, 0x094d, - 0x0950, 0x0954, - 0x0958, 0x0970, - 0x0981, 0x0983, - 0x0985, 0x098c, - 0x098f, 0x0990, - 0x0993, 0x09a8, - 0x09aa, 0x09b0, - 0x09b2, 0x09b2, - 0x09b6, 0x09b9, - 0x09bc, 0x09bc, - 0x09be, 0x09c4, - 0x09c7, 0x09c8, - 0x09cb, 0x09cd, - 0x09d7, 0x09d7, - 0x09dc, 0x09dd, - 0x09df, 0x09e3, - 0x09e6, 0x09fa, - 0x0a02, 0x0a02, - 0x0a05, 0x0a0a, - 0x0a0f, 0x0a10, - 0x0a13, 0x0a28, - 0x0a2a, 0x0a30, - 0x0a32, 0x0a33, - 0x0a35, 0x0a36, - 0x0a38, 0x0a39, - 0x0a3c, 0x0a3c, - 0x0a3e, 0x0a42, - 0x0a47, 0x0a48, - 0x0a4b, 0x0a4d, - 0x0a59, 0x0a5c, - 0x0a5e, 0x0a5e, - 0x0a66, 0x0a74, - 0x0a81, 0x0a83, - 0x0a85, 0x0a8b, - 0x0a8d, 0x0a8d, - 0x0a8f, 0x0a91, - 0x0a93, 0x0aa8, - 0x0aaa, 0x0ab0, - 0x0ab2, 0x0ab3, - 0x0ab5, 0x0ab9, - 0x0abc, 0x0ac5, - 0x0ac7, 0x0ac9, - 0x0acb, 0x0acd, - 0x0ad0, 0x0ad0, - 0x0ae0, 0x0ae0, - 0x0ae6, 0x0aef, - 0x0b01, 0x0b03, - 0x0b05, 0x0b0c, - 0x0b0f, 0x0b10, - 0x0b13, 0x0b28, - 0x0b2a, 0x0b30, - 0x0b32, 0x0b33, - 0x0b36, 0x0b39, - 0x0b3c, 0x0b43, - 0x0b47, 0x0b48, - 0x0b4b, 0x0b4d, - 0x0b56, 0x0b57, - 0x0b5c, 0x0b5d, - 0x0b5f, 0x0b61, - 0x0b66, 0x0b70, - 0x0b82, 0x0b83, - 0x0b85, 0x0b8a, - 0x0b8e, 0x0b90, - 0x0b92, 0x0b95, - 0x0b99, 0x0b9a, - 0x0b9c, 0x0b9c, - 0x0b9e, 0x0b9f, - 0x0ba3, 0x0ba4, - 0x0ba8, 0x0baa, - 0x0bae, 0x0bb5, - 0x0bb7, 0x0bb9, - 0x0bbe, 0x0bc2, - 0x0bc6, 0x0bc8, - 0x0bca, 0x0bcd, - 0x0bd7, 0x0bd7, - 0x0be7, 0x0bf2, - 0x0c01, 0x0c03, - 0x0c05, 0x0c0c, - 0x0c0e, 0x0c10, - 0x0c12, 0x0c28, - 0x0c2a, 0x0c33, - 0x0c35, 0x0c39, - 0x0c3e, 0x0c44, - 0x0c46, 0x0c48, - 0x0c4a, 0x0c4d, - 0x0c55, 0x0c56, - 0x0c60, 0x0c61, - 0x0c66, 0x0c6f, - 0x0c82, 0x0c83, - 0x0c85, 0x0c8c, - 0x0c8e, 0x0c90, - 0x0c92, 0x0ca8, - 0x0caa, 0x0cb3, - 0x0cb5, 0x0cb9, - 0x0cbe, 0x0cc4, - 0x0cc6, 0x0cc8, - 0x0cca, 0x0ccd, - 0x0cd5, 0x0cd6, - 0x0cde, 0x0cde, - 0x0ce0, 0x0ce1, - 0x0ce6, 0x0cef, - 0x0d02, 0x0d03, - 0x0d05, 0x0d0c, - 0x0d0e, 0x0d10, - 0x0d12, 0x0d28, - 0x0d2a, 0x0d39, - 0x0d3e, 0x0d43, - 0x0d46, 0x0d48, - 0x0d4a, 0x0d4d, - 0x0d57, 0x0d57, - 0x0d60, 0x0d61, - 0x0d66, 0x0d6f, - 0x0e01, 0x0e3a, - 0x0e3f, 0x0e5b, - 0x0e81, 0x0e82, - 0x0e84, 0x0e84, - 0x0e87, 0x0e88, - 0x0e8a, 0x0e8a, - 0x0e8d, 0x0e8d, - 0x0e94, 0x0e97, - 0x0e99, 0x0e9f, - 0x0ea1, 0x0ea3, - 0x0ea5, 0x0ea5, - 0x0ea7, 0x0ea7, - 0x0eaa, 0x0eab, - 0x0ead, 0x0eb9, - 0x0ebb, 0x0ebd, - 0x0ec0, 0x0ec4, - 0x0ec6, 0x0ec6, - 0x0ec8, 0x0ecd, - 0x0ed0, 0x0ed9, - 0x0edc, 0x0edd, - 0x10a0, 0x10c5, - 0x10d0, 0x10f6, - 0x10fb, 0x10fb, - 0x1100, 0x1159, - 0x115f, 0x11a2, - 0x11a8, 0x11f9, - 0x1e00, 0x1e9a, - 0x1ea0, 0x1ef9, - 0x1f00, 0x1f15, - 0x1f18, 0x1f1d, - 0x1f20, 0x1f45, - 0x1f48, 0x1f4d, - 0x1f50, 0x1f57, - 0x1f59, 0x1f59, - 0x1f5b, 0x1f5b, - 0x1f5d, 0x1f5d, - 0x1f5f, 0x1f7d, - 0x1f80, 0x1fb4, - 0x1fb6, 0x1fc4, - 0x1fc6, 0x1fd3, - 0x1fd6, 0x1fdb, - 0x1fdd, 0x1fef, - 0x1ff2, 0x1ff4, - 0x1ff6, 0x1ffe, - 0x2000, 0x202e, - 0x2030, 0x2046, - 0x206a, 0x2070, - 0x2074, 0x208e, - 0x20a0, 0x20aa, - 0x20d0, 0x20e1, - 0x2100, 0x2138, - 0x2153, 0x2182, - 0x2190, 0x21ea, - 0x2200, 0x22f1, - 0x2300, 0x2300, - 0x2302, 0x237a, - 0x2400, 0x2424, - 0x2440, 0x244a, - 0x2460, 0x24ea, - 0x2500, 0x2595, - 0x25a0, 0x25ef, - 0x2600, 0x2613, - 0x261a, 0x266f, - 0x2701, 0x2704, - 0x2706, 0x2709, - 0x270c, 0x2727, - 0x2729, 0x274b, - 0x274d, 0x274d, - 0x274f, 0x2752, - 0x2756, 0x2756, - 0x2758, 0x275e, - 0x2761, 0x2767, - 0x2776, 0x2794, - 0x2798, 0x27af, - 0x27b1, 0x27be, - 0x3000, 0x3037, - 0x303f, 0x303f, - 0x3041, 0x3094, - 0x3099, 0x309e, - 0x30a1, 0x30fe, - 0x3105, 0x312c, - 0x3131, 0x318e, - 0x3190, 0x319f, - 0x3200, 0x321c, - 0x3220, 0x3243, - 0x3260, 0x327b, - 0x327f, 0x32b0, - 0x32c0, 0x32cb, - 0x32d0, 0x32fe, - 0x3300, 0x3376, - 0x337b, 0x33dd, - 0x33e0, 0x33fe, - 0x4e00, 0x9fa5, - 0xe000, 0xfa2d, - 0xfb00, 0xfb06, - 0xfb13, 0xfb17, - 0xfb1e, 0xfb36, - 0xfb38, 0xfb3c, - 0xfb3e, 0xfb3e, - 0xfb40, 0xfb41, - 0xfb43, 0xfb44, - 0xfb46, 0xfbb1, - 0xfbd3, 0xfd3f, - 0xfd50, 0xfd8f, - 0xfd92, 0xfdc7, - 0xfdf0, 0xfdfb, - 0xfe20, 0xfe23, - 0xfe30, 0xfe44, - 0xfe49, 0xfe52, - 0xfe54, 0xfe66, - 0xfe68, 0xfe6b, - 0xfe70, 0xfe72, - 0xfe74, 0xfe74, - 0xfe76, 0xfefc, - 0xfeff, 0xfeff, - 0xff01, 0xff5e, - 0xff61, 0xffbe, - 0xffc2, 0xffc7, - 0xffca, 0xffcf, - 0xffd2, 0xffd7, - 0xffda, 0xffdc, - 0xffe0, 0xffe6, - 0xffe8, 0xffee, - 0xfffd, 0xffff, -}; /* CR_Age_1_1 */ - -/* 'Age_2_0': Derived Age 2.0 */ -static const OnigCodePoint CR_Age_2_0[] = { - 312, - 0x0000, 0x01f5, - 0x01fa, 0x0217, - 0x0250, 0x02a8, - 0x02b0, 0x02de, - 0x02e0, 0x02e9, - 0x0300, 0x0345, - 0x0360, 0x0361, - 0x0374, 0x0375, - 0x037a, 0x037a, - 0x037e, 0x037e, - 0x0384, 0x038a, - 0x038c, 0x038c, - 0x038e, 0x03a1, - 0x03a3, 0x03ce, - 0x03d0, 0x03d6, - 0x03da, 0x03da, - 0x03dc, 0x03dc, - 0x03de, 0x03de, - 0x03e0, 0x03e0, - 0x03e2, 0x03f3, - 0x0401, 0x040c, - 0x040e, 0x044f, - 0x0451, 0x045c, - 0x045e, 0x0486, - 0x0490, 0x04c4, - 0x04c7, 0x04c8, - 0x04cb, 0x04cc, - 0x04d0, 0x04eb, - 0x04ee, 0x04f5, - 0x04f8, 0x04f9, - 0x0531, 0x0556, - 0x0559, 0x055f, - 0x0561, 0x0587, - 0x0589, 0x0589, - 0x0591, 0x05a1, - 0x05a3, 0x05b9, - 0x05bb, 0x05c4, - 0x05d0, 0x05ea, - 0x05f0, 0x05f4, - 0x060c, 0x060c, - 0x061b, 0x061b, - 0x061f, 0x061f, - 0x0621, 0x063a, - 0x0640, 0x0652, - 0x0660, 0x066d, - 0x0670, 0x06b7, - 0x06ba, 0x06be, - 0x06c0, 0x06ce, - 0x06d0, 0x06ed, - 0x06f0, 0x06f9, - 0x0901, 0x0903, - 0x0905, 0x0939, - 0x093c, 0x094d, - 0x0950, 0x0954, - 0x0958, 0x0970, - 0x0981, 0x0983, - 0x0985, 0x098c, - 0x098f, 0x0990, - 0x0993, 0x09a8, - 0x09aa, 0x09b0, - 0x09b2, 0x09b2, - 0x09b6, 0x09b9, - 0x09bc, 0x09bc, - 0x09be, 0x09c4, - 0x09c7, 0x09c8, - 0x09cb, 0x09cd, - 0x09d7, 0x09d7, - 0x09dc, 0x09dd, - 0x09df, 0x09e3, - 0x09e6, 0x09fa, - 0x0a02, 0x0a02, - 0x0a05, 0x0a0a, - 0x0a0f, 0x0a10, - 0x0a13, 0x0a28, - 0x0a2a, 0x0a30, - 0x0a32, 0x0a33, - 0x0a35, 0x0a36, - 0x0a38, 0x0a39, - 0x0a3c, 0x0a3c, - 0x0a3e, 0x0a42, - 0x0a47, 0x0a48, - 0x0a4b, 0x0a4d, - 0x0a59, 0x0a5c, - 0x0a5e, 0x0a5e, - 0x0a66, 0x0a74, - 0x0a81, 0x0a83, - 0x0a85, 0x0a8b, - 0x0a8d, 0x0a8d, - 0x0a8f, 0x0a91, - 0x0a93, 0x0aa8, - 0x0aaa, 0x0ab0, - 0x0ab2, 0x0ab3, - 0x0ab5, 0x0ab9, - 0x0abc, 0x0ac5, - 0x0ac7, 0x0ac9, - 0x0acb, 0x0acd, - 0x0ad0, 0x0ad0, - 0x0ae0, 0x0ae0, - 0x0ae6, 0x0aef, - 0x0b01, 0x0b03, - 0x0b05, 0x0b0c, - 0x0b0f, 0x0b10, - 0x0b13, 0x0b28, - 0x0b2a, 0x0b30, - 0x0b32, 0x0b33, - 0x0b36, 0x0b39, - 0x0b3c, 0x0b43, - 0x0b47, 0x0b48, - 0x0b4b, 0x0b4d, - 0x0b56, 0x0b57, - 0x0b5c, 0x0b5d, - 0x0b5f, 0x0b61, - 0x0b66, 0x0b70, - 0x0b82, 0x0b83, - 0x0b85, 0x0b8a, - 0x0b8e, 0x0b90, - 0x0b92, 0x0b95, - 0x0b99, 0x0b9a, - 0x0b9c, 0x0b9c, - 0x0b9e, 0x0b9f, - 0x0ba3, 0x0ba4, - 0x0ba8, 0x0baa, - 0x0bae, 0x0bb5, - 0x0bb7, 0x0bb9, - 0x0bbe, 0x0bc2, - 0x0bc6, 0x0bc8, - 0x0bca, 0x0bcd, - 0x0bd7, 0x0bd7, - 0x0be7, 0x0bf2, - 0x0c01, 0x0c03, - 0x0c05, 0x0c0c, - 0x0c0e, 0x0c10, - 0x0c12, 0x0c28, - 0x0c2a, 0x0c33, - 0x0c35, 0x0c39, - 0x0c3e, 0x0c44, - 0x0c46, 0x0c48, - 0x0c4a, 0x0c4d, - 0x0c55, 0x0c56, - 0x0c60, 0x0c61, - 0x0c66, 0x0c6f, - 0x0c82, 0x0c83, - 0x0c85, 0x0c8c, - 0x0c8e, 0x0c90, - 0x0c92, 0x0ca8, - 0x0caa, 0x0cb3, - 0x0cb5, 0x0cb9, - 0x0cbe, 0x0cc4, - 0x0cc6, 0x0cc8, - 0x0cca, 0x0ccd, - 0x0cd5, 0x0cd6, - 0x0cde, 0x0cde, - 0x0ce0, 0x0ce1, - 0x0ce6, 0x0cef, - 0x0d02, 0x0d03, - 0x0d05, 0x0d0c, - 0x0d0e, 0x0d10, - 0x0d12, 0x0d28, - 0x0d2a, 0x0d39, - 0x0d3e, 0x0d43, - 0x0d46, 0x0d48, - 0x0d4a, 0x0d4d, - 0x0d57, 0x0d57, - 0x0d60, 0x0d61, - 0x0d66, 0x0d6f, - 0x0e01, 0x0e3a, - 0x0e3f, 0x0e5b, - 0x0e81, 0x0e82, - 0x0e84, 0x0e84, - 0x0e87, 0x0e88, - 0x0e8a, 0x0e8a, - 0x0e8d, 0x0e8d, - 0x0e94, 0x0e97, - 0x0e99, 0x0e9f, - 0x0ea1, 0x0ea3, - 0x0ea5, 0x0ea5, - 0x0ea7, 0x0ea7, - 0x0eaa, 0x0eab, - 0x0ead, 0x0eb9, - 0x0ebb, 0x0ebd, - 0x0ec0, 0x0ec4, - 0x0ec6, 0x0ec6, - 0x0ec8, 0x0ecd, - 0x0ed0, 0x0ed9, - 0x0edc, 0x0edd, - 0x0f00, 0x0f47, - 0x0f49, 0x0f69, - 0x0f71, 0x0f8b, - 0x0f90, 0x0f95, - 0x0f97, 0x0f97, - 0x0f99, 0x0fad, - 0x0fb1, 0x0fb7, - 0x0fb9, 0x0fb9, - 0x10a0, 0x10c5, - 0x10d0, 0x10f6, - 0x10fb, 0x10fb, - 0x1100, 0x1159, - 0x115f, 0x11a2, - 0x11a8, 0x11f9, - 0x1e00, 0x1e9b, - 0x1ea0, 0x1ef9, - 0x1f00, 0x1f15, - 0x1f18, 0x1f1d, - 0x1f20, 0x1f45, - 0x1f48, 0x1f4d, - 0x1f50, 0x1f57, - 0x1f59, 0x1f59, - 0x1f5b, 0x1f5b, - 0x1f5d, 0x1f5d, - 0x1f5f, 0x1f7d, - 0x1f80, 0x1fb4, - 0x1fb6, 0x1fc4, - 0x1fc6, 0x1fd3, - 0x1fd6, 0x1fdb, - 0x1fdd, 0x1fef, - 0x1ff2, 0x1ff4, - 0x1ff6, 0x1ffe, - 0x2000, 0x202e, - 0x2030, 0x2046, - 0x206a, 0x2070, - 0x2074, 0x208e, - 0x20a0, 0x20ab, - 0x20d0, 0x20e1, - 0x2100, 0x2138, - 0x2153, 0x2182, - 0x2190, 0x21ea, - 0x2200, 0x22f1, - 0x2300, 0x2300, - 0x2302, 0x237a, - 0x2400, 0x2424, - 0x2440, 0x244a, - 0x2460, 0x24ea, - 0x2500, 0x2595, - 0x25a0, 0x25ef, - 0x2600, 0x2613, - 0x261a, 0x266f, - 0x2701, 0x2704, - 0x2706, 0x2709, - 0x270c, 0x2727, - 0x2729, 0x274b, - 0x274d, 0x274d, - 0x274f, 0x2752, - 0x2756, 0x2756, - 0x2758, 0x275e, - 0x2761, 0x2767, - 0x2776, 0x2794, - 0x2798, 0x27af, - 0x27b1, 0x27be, - 0x3000, 0x3037, - 0x303f, 0x303f, - 0x3041, 0x3094, - 0x3099, 0x309e, - 0x30a1, 0x30fe, - 0x3105, 0x312c, - 0x3131, 0x318e, - 0x3190, 0x319f, - 0x3200, 0x321c, - 0x3220, 0x3243, - 0x3260, 0x327b, - 0x327f, 0x32b0, - 0x32c0, 0x32cb, - 0x32d0, 0x32fe, - 0x3300, 0x3376, - 0x337b, 0x33dd, - 0x33e0, 0x33fe, - 0x4e00, 0x9fa5, - 0xac00, 0xd7a3, - 0xd800, 0xfa2d, - 0xfb00, 0xfb06, - 0xfb13, 0xfb17, - 0xfb1e, 0xfb36, - 0xfb38, 0xfb3c, - 0xfb3e, 0xfb3e, - 0xfb40, 0xfb41, - 0xfb43, 0xfb44, - 0xfb46, 0xfbb1, - 0xfbd3, 0xfd3f, - 0xfd50, 0xfd8f, - 0xfd92, 0xfdc7, - 0xfdf0, 0xfdfb, - 0xfe20, 0xfe23, - 0xfe30, 0xfe44, - 0xfe49, 0xfe52, - 0xfe54, 0xfe66, - 0xfe68, 0xfe6b, - 0xfe70, 0xfe72, - 0xfe74, 0xfe74, - 0xfe76, 0xfefc, - 0xfeff, 0xfeff, - 0xff01, 0xff5e, - 0xff61, 0xffbe, - 0xffc2, 0xffc7, - 0xffca, 0xffcf, - 0xffd2, 0xffd7, - 0xffda, 0xffdc, - 0xffe0, 0xffe6, - 0xffe8, 0xffee, - 0xfffd, 0xffff, - 0x1fffe, 0x1ffff, - 0x2fffe, 0x2ffff, - 0x3fffe, 0x3ffff, - 0x4fffe, 0x4ffff, - 0x5fffe, 0x5ffff, - 0x6fffe, 0x6ffff, - 0x7fffe, 0x7ffff, - 0x8fffe, 0x8ffff, - 0x9fffe, 0x9ffff, - 0xafffe, 0xaffff, - 0xbfffe, 0xbffff, - 0xcfffe, 0xcffff, - 0xdfffe, 0xdffff, - 0xefffe, 0x10ffff, -}; /* CR_Age_2_0 */ - -/* 'Age_2_1': Derived Age 2.1 */ -static const OnigCodePoint CR_Age_2_1[] = { - 312, - 0x0000, 0x01f5, - 0x01fa, 0x0217, - 0x0250, 0x02a8, - 0x02b0, 0x02de, - 0x02e0, 0x02e9, - 0x0300, 0x0345, - 0x0360, 0x0361, - 0x0374, 0x0375, - 0x037a, 0x037a, - 0x037e, 0x037e, - 0x0384, 0x038a, - 0x038c, 0x038c, - 0x038e, 0x03a1, - 0x03a3, 0x03ce, - 0x03d0, 0x03d6, - 0x03da, 0x03da, - 0x03dc, 0x03dc, - 0x03de, 0x03de, - 0x03e0, 0x03e0, - 0x03e2, 0x03f3, - 0x0401, 0x040c, - 0x040e, 0x044f, - 0x0451, 0x045c, - 0x045e, 0x0486, - 0x0490, 0x04c4, - 0x04c7, 0x04c8, - 0x04cb, 0x04cc, - 0x04d0, 0x04eb, - 0x04ee, 0x04f5, - 0x04f8, 0x04f9, - 0x0531, 0x0556, - 0x0559, 0x055f, - 0x0561, 0x0587, - 0x0589, 0x0589, - 0x0591, 0x05a1, - 0x05a3, 0x05b9, - 0x05bb, 0x05c4, - 0x05d0, 0x05ea, - 0x05f0, 0x05f4, - 0x060c, 0x060c, - 0x061b, 0x061b, - 0x061f, 0x061f, - 0x0621, 0x063a, - 0x0640, 0x0652, - 0x0660, 0x066d, - 0x0670, 0x06b7, - 0x06ba, 0x06be, - 0x06c0, 0x06ce, - 0x06d0, 0x06ed, - 0x06f0, 0x06f9, - 0x0901, 0x0903, - 0x0905, 0x0939, - 0x093c, 0x094d, - 0x0950, 0x0954, - 0x0958, 0x0970, - 0x0981, 0x0983, - 0x0985, 0x098c, - 0x098f, 0x0990, - 0x0993, 0x09a8, - 0x09aa, 0x09b0, - 0x09b2, 0x09b2, - 0x09b6, 0x09b9, - 0x09bc, 0x09bc, - 0x09be, 0x09c4, - 0x09c7, 0x09c8, - 0x09cb, 0x09cd, - 0x09d7, 0x09d7, - 0x09dc, 0x09dd, - 0x09df, 0x09e3, - 0x09e6, 0x09fa, - 0x0a02, 0x0a02, - 0x0a05, 0x0a0a, - 0x0a0f, 0x0a10, - 0x0a13, 0x0a28, - 0x0a2a, 0x0a30, - 0x0a32, 0x0a33, - 0x0a35, 0x0a36, - 0x0a38, 0x0a39, - 0x0a3c, 0x0a3c, - 0x0a3e, 0x0a42, - 0x0a47, 0x0a48, - 0x0a4b, 0x0a4d, - 0x0a59, 0x0a5c, - 0x0a5e, 0x0a5e, - 0x0a66, 0x0a74, - 0x0a81, 0x0a83, - 0x0a85, 0x0a8b, - 0x0a8d, 0x0a8d, - 0x0a8f, 0x0a91, - 0x0a93, 0x0aa8, - 0x0aaa, 0x0ab0, - 0x0ab2, 0x0ab3, - 0x0ab5, 0x0ab9, - 0x0abc, 0x0ac5, - 0x0ac7, 0x0ac9, - 0x0acb, 0x0acd, - 0x0ad0, 0x0ad0, - 0x0ae0, 0x0ae0, - 0x0ae6, 0x0aef, - 0x0b01, 0x0b03, - 0x0b05, 0x0b0c, - 0x0b0f, 0x0b10, - 0x0b13, 0x0b28, - 0x0b2a, 0x0b30, - 0x0b32, 0x0b33, - 0x0b36, 0x0b39, - 0x0b3c, 0x0b43, - 0x0b47, 0x0b48, - 0x0b4b, 0x0b4d, - 0x0b56, 0x0b57, - 0x0b5c, 0x0b5d, - 0x0b5f, 0x0b61, - 0x0b66, 0x0b70, - 0x0b82, 0x0b83, - 0x0b85, 0x0b8a, - 0x0b8e, 0x0b90, - 0x0b92, 0x0b95, - 0x0b99, 0x0b9a, - 0x0b9c, 0x0b9c, - 0x0b9e, 0x0b9f, - 0x0ba3, 0x0ba4, - 0x0ba8, 0x0baa, - 0x0bae, 0x0bb5, - 0x0bb7, 0x0bb9, - 0x0bbe, 0x0bc2, - 0x0bc6, 0x0bc8, - 0x0bca, 0x0bcd, - 0x0bd7, 0x0bd7, - 0x0be7, 0x0bf2, - 0x0c01, 0x0c03, - 0x0c05, 0x0c0c, - 0x0c0e, 0x0c10, - 0x0c12, 0x0c28, - 0x0c2a, 0x0c33, - 0x0c35, 0x0c39, - 0x0c3e, 0x0c44, - 0x0c46, 0x0c48, - 0x0c4a, 0x0c4d, - 0x0c55, 0x0c56, - 0x0c60, 0x0c61, - 0x0c66, 0x0c6f, - 0x0c82, 0x0c83, - 0x0c85, 0x0c8c, - 0x0c8e, 0x0c90, - 0x0c92, 0x0ca8, - 0x0caa, 0x0cb3, - 0x0cb5, 0x0cb9, - 0x0cbe, 0x0cc4, - 0x0cc6, 0x0cc8, - 0x0cca, 0x0ccd, - 0x0cd5, 0x0cd6, - 0x0cde, 0x0cde, - 0x0ce0, 0x0ce1, - 0x0ce6, 0x0cef, - 0x0d02, 0x0d03, - 0x0d05, 0x0d0c, - 0x0d0e, 0x0d10, - 0x0d12, 0x0d28, - 0x0d2a, 0x0d39, - 0x0d3e, 0x0d43, - 0x0d46, 0x0d48, - 0x0d4a, 0x0d4d, - 0x0d57, 0x0d57, - 0x0d60, 0x0d61, - 0x0d66, 0x0d6f, - 0x0e01, 0x0e3a, - 0x0e3f, 0x0e5b, - 0x0e81, 0x0e82, - 0x0e84, 0x0e84, - 0x0e87, 0x0e88, - 0x0e8a, 0x0e8a, - 0x0e8d, 0x0e8d, - 0x0e94, 0x0e97, - 0x0e99, 0x0e9f, - 0x0ea1, 0x0ea3, - 0x0ea5, 0x0ea5, - 0x0ea7, 0x0ea7, - 0x0eaa, 0x0eab, - 0x0ead, 0x0eb9, - 0x0ebb, 0x0ebd, - 0x0ec0, 0x0ec4, - 0x0ec6, 0x0ec6, - 0x0ec8, 0x0ecd, - 0x0ed0, 0x0ed9, - 0x0edc, 0x0edd, - 0x0f00, 0x0f47, - 0x0f49, 0x0f69, - 0x0f71, 0x0f8b, - 0x0f90, 0x0f95, - 0x0f97, 0x0f97, - 0x0f99, 0x0fad, - 0x0fb1, 0x0fb7, - 0x0fb9, 0x0fb9, - 0x10a0, 0x10c5, - 0x10d0, 0x10f6, - 0x10fb, 0x10fb, - 0x1100, 0x1159, - 0x115f, 0x11a2, - 0x11a8, 0x11f9, - 0x1e00, 0x1e9b, - 0x1ea0, 0x1ef9, - 0x1f00, 0x1f15, - 0x1f18, 0x1f1d, - 0x1f20, 0x1f45, - 0x1f48, 0x1f4d, - 0x1f50, 0x1f57, - 0x1f59, 0x1f59, - 0x1f5b, 0x1f5b, - 0x1f5d, 0x1f5d, - 0x1f5f, 0x1f7d, - 0x1f80, 0x1fb4, - 0x1fb6, 0x1fc4, - 0x1fc6, 0x1fd3, - 0x1fd6, 0x1fdb, - 0x1fdd, 0x1fef, - 0x1ff2, 0x1ff4, - 0x1ff6, 0x1ffe, - 0x2000, 0x202e, - 0x2030, 0x2046, - 0x206a, 0x2070, - 0x2074, 0x208e, - 0x20a0, 0x20ac, - 0x20d0, 0x20e1, - 0x2100, 0x2138, - 0x2153, 0x2182, - 0x2190, 0x21ea, - 0x2200, 0x22f1, - 0x2300, 0x2300, - 0x2302, 0x237a, - 0x2400, 0x2424, - 0x2440, 0x244a, - 0x2460, 0x24ea, - 0x2500, 0x2595, - 0x25a0, 0x25ef, - 0x2600, 0x2613, - 0x261a, 0x266f, - 0x2701, 0x2704, - 0x2706, 0x2709, - 0x270c, 0x2727, - 0x2729, 0x274b, - 0x274d, 0x274d, - 0x274f, 0x2752, - 0x2756, 0x2756, - 0x2758, 0x275e, - 0x2761, 0x2767, - 0x2776, 0x2794, - 0x2798, 0x27af, - 0x27b1, 0x27be, - 0x3000, 0x3037, - 0x303f, 0x303f, - 0x3041, 0x3094, - 0x3099, 0x309e, - 0x30a1, 0x30fe, - 0x3105, 0x312c, - 0x3131, 0x318e, - 0x3190, 0x319f, - 0x3200, 0x321c, - 0x3220, 0x3243, - 0x3260, 0x327b, - 0x327f, 0x32b0, - 0x32c0, 0x32cb, - 0x32d0, 0x32fe, - 0x3300, 0x3376, - 0x337b, 0x33dd, - 0x33e0, 0x33fe, - 0x4e00, 0x9fa5, - 0xac00, 0xd7a3, - 0xd800, 0xfa2d, - 0xfb00, 0xfb06, - 0xfb13, 0xfb17, - 0xfb1e, 0xfb36, - 0xfb38, 0xfb3c, - 0xfb3e, 0xfb3e, - 0xfb40, 0xfb41, - 0xfb43, 0xfb44, - 0xfb46, 0xfbb1, - 0xfbd3, 0xfd3f, - 0xfd50, 0xfd8f, - 0xfd92, 0xfdc7, - 0xfdf0, 0xfdfb, - 0xfe20, 0xfe23, - 0xfe30, 0xfe44, - 0xfe49, 0xfe52, - 0xfe54, 0xfe66, - 0xfe68, 0xfe6b, - 0xfe70, 0xfe72, - 0xfe74, 0xfe74, - 0xfe76, 0xfefc, - 0xfeff, 0xfeff, - 0xff01, 0xff5e, - 0xff61, 0xffbe, - 0xffc2, 0xffc7, - 0xffca, 0xffcf, - 0xffd2, 0xffd7, - 0xffda, 0xffdc, - 0xffe0, 0xffe6, - 0xffe8, 0xffee, - 0xfffc, 0xffff, - 0x1fffe, 0x1ffff, - 0x2fffe, 0x2ffff, - 0x3fffe, 0x3ffff, - 0x4fffe, 0x4ffff, - 0x5fffe, 0x5ffff, - 0x6fffe, 0x6ffff, - 0x7fffe, 0x7ffff, - 0x8fffe, 0x8ffff, - 0x9fffe, 0x9ffff, - 0xafffe, 0xaffff, - 0xbfffe, 0xbffff, - 0xcfffe, 0xcffff, - 0xdfffe, 0xdffff, - 0xefffe, 0x10ffff, -}; /* CR_Age_2_1 */ - -/* 'Age_3_0': Derived Age 3.0 */ -static const OnigCodePoint CR_Age_3_0[] = { - 369, - 0x0000, 0x021f, - 0x0222, 0x0233, - 0x0250, 0x02ad, - 0x02b0, 0x02ee, - 0x0300, 0x034e, - 0x0360, 0x0362, - 0x0374, 0x0375, - 0x037a, 0x037a, - 0x037e, 0x037e, - 0x0384, 0x038a, - 0x038c, 0x038c, - 0x038e, 0x03a1, - 0x03a3, 0x03ce, - 0x03d0, 0x03d7, - 0x03da, 0x03f3, - 0x0400, 0x0486, - 0x0488, 0x0489, - 0x048c, 0x04c4, - 0x04c7, 0x04c8, - 0x04cb, 0x04cc, - 0x04d0, 0x04f5, - 0x04f8, 0x04f9, - 0x0531, 0x0556, - 0x0559, 0x055f, - 0x0561, 0x0587, - 0x0589, 0x058a, - 0x0591, 0x05a1, - 0x05a3, 0x05b9, - 0x05bb, 0x05c4, - 0x05d0, 0x05ea, - 0x05f0, 0x05f4, - 0x060c, 0x060c, - 0x061b, 0x061b, - 0x061f, 0x061f, - 0x0621, 0x063a, - 0x0640, 0x0655, - 0x0660, 0x066d, - 0x0670, 0x06ed, - 0x06f0, 0x06fe, - 0x0700, 0x070d, - 0x070f, 0x072c, - 0x0730, 0x074a, - 0x0780, 0x07b0, - 0x0901, 0x0903, - 0x0905, 0x0939, - 0x093c, 0x094d, - 0x0950, 0x0954, - 0x0958, 0x0970, - 0x0981, 0x0983, - 0x0985, 0x098c, - 0x098f, 0x0990, - 0x0993, 0x09a8, - 0x09aa, 0x09b0, - 0x09b2, 0x09b2, - 0x09b6, 0x09b9, - 0x09bc, 0x09bc, - 0x09be, 0x09c4, - 0x09c7, 0x09c8, - 0x09cb, 0x09cd, - 0x09d7, 0x09d7, - 0x09dc, 0x09dd, - 0x09df, 0x09e3, - 0x09e6, 0x09fa, - 0x0a02, 0x0a02, - 0x0a05, 0x0a0a, - 0x0a0f, 0x0a10, - 0x0a13, 0x0a28, - 0x0a2a, 0x0a30, - 0x0a32, 0x0a33, - 0x0a35, 0x0a36, - 0x0a38, 0x0a39, - 0x0a3c, 0x0a3c, - 0x0a3e, 0x0a42, - 0x0a47, 0x0a48, - 0x0a4b, 0x0a4d, - 0x0a59, 0x0a5c, - 0x0a5e, 0x0a5e, - 0x0a66, 0x0a74, - 0x0a81, 0x0a83, - 0x0a85, 0x0a8b, - 0x0a8d, 0x0a8d, - 0x0a8f, 0x0a91, - 0x0a93, 0x0aa8, - 0x0aaa, 0x0ab0, - 0x0ab2, 0x0ab3, - 0x0ab5, 0x0ab9, - 0x0abc, 0x0ac5, - 0x0ac7, 0x0ac9, - 0x0acb, 0x0acd, - 0x0ad0, 0x0ad0, - 0x0ae0, 0x0ae0, - 0x0ae6, 0x0aef, - 0x0b01, 0x0b03, - 0x0b05, 0x0b0c, - 0x0b0f, 0x0b10, - 0x0b13, 0x0b28, - 0x0b2a, 0x0b30, - 0x0b32, 0x0b33, - 0x0b36, 0x0b39, - 0x0b3c, 0x0b43, - 0x0b47, 0x0b48, - 0x0b4b, 0x0b4d, - 0x0b56, 0x0b57, - 0x0b5c, 0x0b5d, - 0x0b5f, 0x0b61, - 0x0b66, 0x0b70, - 0x0b82, 0x0b83, - 0x0b85, 0x0b8a, - 0x0b8e, 0x0b90, - 0x0b92, 0x0b95, - 0x0b99, 0x0b9a, - 0x0b9c, 0x0b9c, - 0x0b9e, 0x0b9f, - 0x0ba3, 0x0ba4, - 0x0ba8, 0x0baa, - 0x0bae, 0x0bb5, - 0x0bb7, 0x0bb9, - 0x0bbe, 0x0bc2, - 0x0bc6, 0x0bc8, - 0x0bca, 0x0bcd, - 0x0bd7, 0x0bd7, - 0x0be7, 0x0bf2, - 0x0c01, 0x0c03, - 0x0c05, 0x0c0c, - 0x0c0e, 0x0c10, - 0x0c12, 0x0c28, - 0x0c2a, 0x0c33, - 0x0c35, 0x0c39, - 0x0c3e, 0x0c44, - 0x0c46, 0x0c48, - 0x0c4a, 0x0c4d, - 0x0c55, 0x0c56, - 0x0c60, 0x0c61, - 0x0c66, 0x0c6f, - 0x0c82, 0x0c83, - 0x0c85, 0x0c8c, - 0x0c8e, 0x0c90, - 0x0c92, 0x0ca8, - 0x0caa, 0x0cb3, - 0x0cb5, 0x0cb9, - 0x0cbe, 0x0cc4, - 0x0cc6, 0x0cc8, - 0x0cca, 0x0ccd, - 0x0cd5, 0x0cd6, - 0x0cde, 0x0cde, - 0x0ce0, 0x0ce1, - 0x0ce6, 0x0cef, - 0x0d02, 0x0d03, - 0x0d05, 0x0d0c, - 0x0d0e, 0x0d10, - 0x0d12, 0x0d28, - 0x0d2a, 0x0d39, - 0x0d3e, 0x0d43, - 0x0d46, 0x0d48, - 0x0d4a, 0x0d4d, - 0x0d57, 0x0d57, - 0x0d60, 0x0d61, - 0x0d66, 0x0d6f, - 0x0d82, 0x0d83, - 0x0d85, 0x0d96, - 0x0d9a, 0x0db1, - 0x0db3, 0x0dbb, - 0x0dbd, 0x0dbd, - 0x0dc0, 0x0dc6, - 0x0dca, 0x0dca, - 0x0dcf, 0x0dd4, - 0x0dd6, 0x0dd6, - 0x0dd8, 0x0ddf, - 0x0df2, 0x0df4, - 0x0e01, 0x0e3a, - 0x0e3f, 0x0e5b, - 0x0e81, 0x0e82, - 0x0e84, 0x0e84, - 0x0e87, 0x0e88, - 0x0e8a, 0x0e8a, - 0x0e8d, 0x0e8d, - 0x0e94, 0x0e97, - 0x0e99, 0x0e9f, - 0x0ea1, 0x0ea3, - 0x0ea5, 0x0ea5, - 0x0ea7, 0x0ea7, - 0x0eaa, 0x0eab, - 0x0ead, 0x0eb9, - 0x0ebb, 0x0ebd, - 0x0ec0, 0x0ec4, - 0x0ec6, 0x0ec6, - 0x0ec8, 0x0ecd, - 0x0ed0, 0x0ed9, - 0x0edc, 0x0edd, - 0x0f00, 0x0f47, - 0x0f49, 0x0f6a, - 0x0f71, 0x0f8b, - 0x0f90, 0x0f97, - 0x0f99, 0x0fbc, - 0x0fbe, 0x0fcc, - 0x0fcf, 0x0fcf, - 0x1000, 0x1021, - 0x1023, 0x1027, - 0x1029, 0x102a, - 0x102c, 0x1032, - 0x1036, 0x1039, - 0x1040, 0x1059, - 0x10a0, 0x10c5, - 0x10d0, 0x10f6, - 0x10fb, 0x10fb, - 0x1100, 0x1159, - 0x115f, 0x11a2, - 0x11a8, 0x11f9, - 0x1200, 0x1206, - 0x1208, 0x1246, - 0x1248, 0x1248, - 0x124a, 0x124d, - 0x1250, 0x1256, - 0x1258, 0x1258, - 0x125a, 0x125d, - 0x1260, 0x1286, - 0x1288, 0x1288, - 0x128a, 0x128d, - 0x1290, 0x12ae, - 0x12b0, 0x12b0, - 0x12b2, 0x12b5, - 0x12b8, 0x12be, - 0x12c0, 0x12c0, - 0x12c2, 0x12c5, - 0x12c8, 0x12ce, - 0x12d0, 0x12d6, - 0x12d8, 0x12ee, - 0x12f0, 0x130e, - 0x1310, 0x1310, - 0x1312, 0x1315, - 0x1318, 0x131e, - 0x1320, 0x1346, - 0x1348, 0x135a, - 0x1361, 0x137c, - 0x13a0, 0x13f4, - 0x1401, 0x1676, - 0x1680, 0x169c, - 0x16a0, 0x16f0, - 0x1780, 0x17dc, - 0x17e0, 0x17e9, - 0x1800, 0x180e, - 0x1810, 0x1819, - 0x1820, 0x1877, - 0x1880, 0x18a9, - 0x1e00, 0x1e9b, - 0x1ea0, 0x1ef9, - 0x1f00, 0x1f15, - 0x1f18, 0x1f1d, - 0x1f20, 0x1f45, - 0x1f48, 0x1f4d, - 0x1f50, 0x1f57, - 0x1f59, 0x1f59, - 0x1f5b, 0x1f5b, - 0x1f5d, 0x1f5d, - 0x1f5f, 0x1f7d, - 0x1f80, 0x1fb4, - 0x1fb6, 0x1fc4, - 0x1fc6, 0x1fd3, - 0x1fd6, 0x1fdb, - 0x1fdd, 0x1fef, - 0x1ff2, 0x1ff4, - 0x1ff6, 0x1ffe, - 0x2000, 0x2046, - 0x2048, 0x204d, - 0x206a, 0x2070, - 0x2074, 0x208e, - 0x20a0, 0x20af, - 0x20d0, 0x20e3, - 0x2100, 0x213a, - 0x2153, 0x2183, - 0x2190, 0x21f3, - 0x2200, 0x22f1, - 0x2300, 0x237b, - 0x237d, 0x239a, - 0x2400, 0x2426, - 0x2440, 0x244a, - 0x2460, 0x24ea, - 0x2500, 0x2595, - 0x25a0, 0x25f7, - 0x2600, 0x2613, - 0x2619, 0x2671, - 0x2701, 0x2704, - 0x2706, 0x2709, - 0x270c, 0x2727, - 0x2729, 0x274b, - 0x274d, 0x274d, - 0x274f, 0x2752, - 0x2756, 0x2756, - 0x2758, 0x275e, - 0x2761, 0x2767, - 0x2776, 0x2794, - 0x2798, 0x27af, - 0x27b1, 0x27be, - 0x2800, 0x28ff, - 0x2e80, 0x2e99, - 0x2e9b, 0x2ef3, - 0x2f00, 0x2fd5, - 0x2ff0, 0x2ffb, - 0x3000, 0x303a, - 0x303e, 0x303f, - 0x3041, 0x3094, - 0x3099, 0x309e, - 0x30a1, 0x30fe, - 0x3105, 0x312c, - 0x3131, 0x318e, - 0x3190, 0x31b7, - 0x3200, 0x321c, - 0x3220, 0x3243, - 0x3260, 0x327b, - 0x327f, 0x32b0, - 0x32c0, 0x32cb, - 0x32d0, 0x32fe, - 0x3300, 0x3376, - 0x337b, 0x33dd, - 0x33e0, 0x33fe, - 0x3400, 0x4db5, - 0x4e00, 0x9fa5, - 0xa000, 0xa48c, - 0xa490, 0xa4a1, - 0xa4a4, 0xa4b3, - 0xa4b5, 0xa4c0, - 0xa4c2, 0xa4c4, - 0xa4c6, 0xa4c6, - 0xac00, 0xd7a3, - 0xd800, 0xfa2d, - 0xfb00, 0xfb06, - 0xfb13, 0xfb17, - 0xfb1d, 0xfb36, - 0xfb38, 0xfb3c, - 0xfb3e, 0xfb3e, - 0xfb40, 0xfb41, - 0xfb43, 0xfb44, - 0xfb46, 0xfbb1, - 0xfbd3, 0xfd3f, - 0xfd50, 0xfd8f, - 0xfd92, 0xfdc7, - 0xfdf0, 0xfdfb, - 0xfe20, 0xfe23, - 0xfe30, 0xfe44, - 0xfe49, 0xfe52, - 0xfe54, 0xfe66, - 0xfe68, 0xfe6b, - 0xfe70, 0xfe72, - 0xfe74, 0xfe74, - 0xfe76, 0xfefc, - 0xfeff, 0xfeff, - 0xff01, 0xff5e, - 0xff61, 0xffbe, - 0xffc2, 0xffc7, - 0xffca, 0xffcf, - 0xffd2, 0xffd7, - 0xffda, 0xffdc, - 0xffe0, 0xffe6, - 0xffe8, 0xffee, - 0xfff9, 0xffff, - 0x1fffe, 0x1ffff, - 0x2fffe, 0x2ffff, - 0x3fffe, 0x3ffff, - 0x4fffe, 0x4ffff, - 0x5fffe, 0x5ffff, - 0x6fffe, 0x6ffff, - 0x7fffe, 0x7ffff, - 0x8fffe, 0x8ffff, - 0x9fffe, 0x9ffff, - 0xafffe, 0xaffff, - 0xbfffe, 0xbffff, - 0xcfffe, 0xcffff, - 0xdfffe, 0xdffff, - 0xefffe, 0x10ffff, -}; /* CR_Age_3_0 */ - -/* 'Age_3_1': Derived Age 3.1 */ -static const OnigCodePoint CR_Age_3_1[] = { - 402, - 0x0000, 0x021f, - 0x0222, 0x0233, - 0x0250, 0x02ad, - 0x02b0, 0x02ee, - 0x0300, 0x034e, - 0x0360, 0x0362, - 0x0374, 0x0375, - 0x037a, 0x037a, - 0x037e, 0x037e, - 0x0384, 0x038a, - 0x038c, 0x038c, - 0x038e, 0x03a1, - 0x03a3, 0x03ce, - 0x03d0, 0x03d7, - 0x03da, 0x03f5, - 0x0400, 0x0486, - 0x0488, 0x0489, - 0x048c, 0x04c4, - 0x04c7, 0x04c8, - 0x04cb, 0x04cc, - 0x04d0, 0x04f5, - 0x04f8, 0x04f9, - 0x0531, 0x0556, - 0x0559, 0x055f, - 0x0561, 0x0587, - 0x0589, 0x058a, - 0x0591, 0x05a1, - 0x05a3, 0x05b9, - 0x05bb, 0x05c4, - 0x05d0, 0x05ea, - 0x05f0, 0x05f4, - 0x060c, 0x060c, - 0x061b, 0x061b, - 0x061f, 0x061f, - 0x0621, 0x063a, - 0x0640, 0x0655, - 0x0660, 0x066d, - 0x0670, 0x06ed, - 0x06f0, 0x06fe, - 0x0700, 0x070d, - 0x070f, 0x072c, - 0x0730, 0x074a, - 0x0780, 0x07b0, - 0x0901, 0x0903, - 0x0905, 0x0939, - 0x093c, 0x094d, - 0x0950, 0x0954, - 0x0958, 0x0970, - 0x0981, 0x0983, - 0x0985, 0x098c, - 0x098f, 0x0990, - 0x0993, 0x09a8, - 0x09aa, 0x09b0, - 0x09b2, 0x09b2, - 0x09b6, 0x09b9, - 0x09bc, 0x09bc, - 0x09be, 0x09c4, - 0x09c7, 0x09c8, - 0x09cb, 0x09cd, - 0x09d7, 0x09d7, - 0x09dc, 0x09dd, - 0x09df, 0x09e3, - 0x09e6, 0x09fa, - 0x0a02, 0x0a02, - 0x0a05, 0x0a0a, - 0x0a0f, 0x0a10, - 0x0a13, 0x0a28, - 0x0a2a, 0x0a30, - 0x0a32, 0x0a33, - 0x0a35, 0x0a36, - 0x0a38, 0x0a39, - 0x0a3c, 0x0a3c, - 0x0a3e, 0x0a42, - 0x0a47, 0x0a48, - 0x0a4b, 0x0a4d, - 0x0a59, 0x0a5c, - 0x0a5e, 0x0a5e, - 0x0a66, 0x0a74, - 0x0a81, 0x0a83, - 0x0a85, 0x0a8b, - 0x0a8d, 0x0a8d, - 0x0a8f, 0x0a91, - 0x0a93, 0x0aa8, - 0x0aaa, 0x0ab0, - 0x0ab2, 0x0ab3, - 0x0ab5, 0x0ab9, - 0x0abc, 0x0ac5, - 0x0ac7, 0x0ac9, - 0x0acb, 0x0acd, - 0x0ad0, 0x0ad0, - 0x0ae0, 0x0ae0, - 0x0ae6, 0x0aef, - 0x0b01, 0x0b03, - 0x0b05, 0x0b0c, - 0x0b0f, 0x0b10, - 0x0b13, 0x0b28, - 0x0b2a, 0x0b30, - 0x0b32, 0x0b33, - 0x0b36, 0x0b39, - 0x0b3c, 0x0b43, - 0x0b47, 0x0b48, - 0x0b4b, 0x0b4d, - 0x0b56, 0x0b57, - 0x0b5c, 0x0b5d, - 0x0b5f, 0x0b61, - 0x0b66, 0x0b70, - 0x0b82, 0x0b83, - 0x0b85, 0x0b8a, - 0x0b8e, 0x0b90, - 0x0b92, 0x0b95, - 0x0b99, 0x0b9a, - 0x0b9c, 0x0b9c, - 0x0b9e, 0x0b9f, - 0x0ba3, 0x0ba4, - 0x0ba8, 0x0baa, - 0x0bae, 0x0bb5, - 0x0bb7, 0x0bb9, - 0x0bbe, 0x0bc2, - 0x0bc6, 0x0bc8, - 0x0bca, 0x0bcd, - 0x0bd7, 0x0bd7, - 0x0be7, 0x0bf2, - 0x0c01, 0x0c03, - 0x0c05, 0x0c0c, - 0x0c0e, 0x0c10, - 0x0c12, 0x0c28, - 0x0c2a, 0x0c33, - 0x0c35, 0x0c39, - 0x0c3e, 0x0c44, - 0x0c46, 0x0c48, - 0x0c4a, 0x0c4d, - 0x0c55, 0x0c56, - 0x0c60, 0x0c61, - 0x0c66, 0x0c6f, - 0x0c82, 0x0c83, - 0x0c85, 0x0c8c, - 0x0c8e, 0x0c90, - 0x0c92, 0x0ca8, - 0x0caa, 0x0cb3, - 0x0cb5, 0x0cb9, - 0x0cbe, 0x0cc4, - 0x0cc6, 0x0cc8, - 0x0cca, 0x0ccd, - 0x0cd5, 0x0cd6, - 0x0cde, 0x0cde, - 0x0ce0, 0x0ce1, - 0x0ce6, 0x0cef, - 0x0d02, 0x0d03, - 0x0d05, 0x0d0c, - 0x0d0e, 0x0d10, - 0x0d12, 0x0d28, - 0x0d2a, 0x0d39, - 0x0d3e, 0x0d43, - 0x0d46, 0x0d48, - 0x0d4a, 0x0d4d, - 0x0d57, 0x0d57, - 0x0d60, 0x0d61, - 0x0d66, 0x0d6f, - 0x0d82, 0x0d83, - 0x0d85, 0x0d96, - 0x0d9a, 0x0db1, - 0x0db3, 0x0dbb, - 0x0dbd, 0x0dbd, - 0x0dc0, 0x0dc6, - 0x0dca, 0x0dca, - 0x0dcf, 0x0dd4, - 0x0dd6, 0x0dd6, - 0x0dd8, 0x0ddf, - 0x0df2, 0x0df4, - 0x0e01, 0x0e3a, - 0x0e3f, 0x0e5b, - 0x0e81, 0x0e82, - 0x0e84, 0x0e84, - 0x0e87, 0x0e88, - 0x0e8a, 0x0e8a, - 0x0e8d, 0x0e8d, - 0x0e94, 0x0e97, - 0x0e99, 0x0e9f, - 0x0ea1, 0x0ea3, - 0x0ea5, 0x0ea5, - 0x0ea7, 0x0ea7, - 0x0eaa, 0x0eab, - 0x0ead, 0x0eb9, - 0x0ebb, 0x0ebd, - 0x0ec0, 0x0ec4, - 0x0ec6, 0x0ec6, - 0x0ec8, 0x0ecd, - 0x0ed0, 0x0ed9, - 0x0edc, 0x0edd, - 0x0f00, 0x0f47, - 0x0f49, 0x0f6a, - 0x0f71, 0x0f8b, - 0x0f90, 0x0f97, - 0x0f99, 0x0fbc, - 0x0fbe, 0x0fcc, - 0x0fcf, 0x0fcf, - 0x1000, 0x1021, - 0x1023, 0x1027, - 0x1029, 0x102a, - 0x102c, 0x1032, - 0x1036, 0x1039, - 0x1040, 0x1059, - 0x10a0, 0x10c5, - 0x10d0, 0x10f6, - 0x10fb, 0x10fb, - 0x1100, 0x1159, - 0x115f, 0x11a2, - 0x11a8, 0x11f9, - 0x1200, 0x1206, - 0x1208, 0x1246, - 0x1248, 0x1248, - 0x124a, 0x124d, - 0x1250, 0x1256, - 0x1258, 0x1258, - 0x125a, 0x125d, - 0x1260, 0x1286, - 0x1288, 0x1288, - 0x128a, 0x128d, - 0x1290, 0x12ae, - 0x12b0, 0x12b0, - 0x12b2, 0x12b5, - 0x12b8, 0x12be, - 0x12c0, 0x12c0, - 0x12c2, 0x12c5, - 0x12c8, 0x12ce, - 0x12d0, 0x12d6, - 0x12d8, 0x12ee, - 0x12f0, 0x130e, - 0x1310, 0x1310, - 0x1312, 0x1315, - 0x1318, 0x131e, - 0x1320, 0x1346, - 0x1348, 0x135a, - 0x1361, 0x137c, - 0x13a0, 0x13f4, - 0x1401, 0x1676, - 0x1680, 0x169c, - 0x16a0, 0x16f0, - 0x1780, 0x17dc, - 0x17e0, 0x17e9, - 0x1800, 0x180e, - 0x1810, 0x1819, - 0x1820, 0x1877, - 0x1880, 0x18a9, - 0x1e00, 0x1e9b, - 0x1ea0, 0x1ef9, - 0x1f00, 0x1f15, - 0x1f18, 0x1f1d, - 0x1f20, 0x1f45, - 0x1f48, 0x1f4d, - 0x1f50, 0x1f57, - 0x1f59, 0x1f59, - 0x1f5b, 0x1f5b, - 0x1f5d, 0x1f5d, - 0x1f5f, 0x1f7d, - 0x1f80, 0x1fb4, - 0x1fb6, 0x1fc4, - 0x1fc6, 0x1fd3, - 0x1fd6, 0x1fdb, - 0x1fdd, 0x1fef, - 0x1ff2, 0x1ff4, - 0x1ff6, 0x1ffe, - 0x2000, 0x2046, - 0x2048, 0x204d, - 0x206a, 0x2070, - 0x2074, 0x208e, - 0x20a0, 0x20af, - 0x20d0, 0x20e3, - 0x2100, 0x213a, - 0x2153, 0x2183, - 0x2190, 0x21f3, - 0x2200, 0x22f1, - 0x2300, 0x237b, - 0x237d, 0x239a, - 0x2400, 0x2426, - 0x2440, 0x244a, - 0x2460, 0x24ea, - 0x2500, 0x2595, - 0x25a0, 0x25f7, - 0x2600, 0x2613, - 0x2619, 0x2671, - 0x2701, 0x2704, - 0x2706, 0x2709, - 0x270c, 0x2727, - 0x2729, 0x274b, - 0x274d, 0x274d, - 0x274f, 0x2752, - 0x2756, 0x2756, - 0x2758, 0x275e, - 0x2761, 0x2767, - 0x2776, 0x2794, - 0x2798, 0x27af, - 0x27b1, 0x27be, - 0x2800, 0x28ff, - 0x2e80, 0x2e99, - 0x2e9b, 0x2ef3, - 0x2f00, 0x2fd5, - 0x2ff0, 0x2ffb, - 0x3000, 0x303a, - 0x303e, 0x303f, - 0x3041, 0x3094, - 0x3099, 0x309e, - 0x30a1, 0x30fe, - 0x3105, 0x312c, - 0x3131, 0x318e, - 0x3190, 0x31b7, - 0x3200, 0x321c, - 0x3220, 0x3243, - 0x3260, 0x327b, - 0x327f, 0x32b0, - 0x32c0, 0x32cb, - 0x32d0, 0x32fe, - 0x3300, 0x3376, - 0x337b, 0x33dd, - 0x33e0, 0x33fe, - 0x3400, 0x4db5, - 0x4e00, 0x9fa5, - 0xa000, 0xa48c, - 0xa490, 0xa4a1, - 0xa4a4, 0xa4b3, - 0xa4b5, 0xa4c0, - 0xa4c2, 0xa4c4, - 0xa4c6, 0xa4c6, - 0xac00, 0xd7a3, - 0xd800, 0xfa2d, - 0xfb00, 0xfb06, - 0xfb13, 0xfb17, - 0xfb1d, 0xfb36, - 0xfb38, 0xfb3c, - 0xfb3e, 0xfb3e, - 0xfb40, 0xfb41, - 0xfb43, 0xfb44, - 0xfb46, 0xfbb1, - 0xfbd3, 0xfd3f, - 0xfd50, 0xfd8f, - 0xfd92, 0xfdc7, - 0xfdd0, 0xfdfb, - 0xfe20, 0xfe23, - 0xfe30, 0xfe44, - 0xfe49, 0xfe52, - 0xfe54, 0xfe66, - 0xfe68, 0xfe6b, - 0xfe70, 0xfe72, - 0xfe74, 0xfe74, - 0xfe76, 0xfefc, - 0xfeff, 0xfeff, - 0xff01, 0xff5e, - 0xff61, 0xffbe, - 0xffc2, 0xffc7, - 0xffca, 0xffcf, - 0xffd2, 0xffd7, - 0xffda, 0xffdc, - 0xffe0, 0xffe6, - 0xffe8, 0xffee, - 0xfff9, 0xffff, - 0x10300, 0x1031e, - 0x10320, 0x10323, - 0x10330, 0x1034a, - 0x10400, 0x10425, - 0x10428, 0x1044d, - 0x1d000, 0x1d0f5, - 0x1d100, 0x1d126, - 0x1d12a, 0x1d1dd, - 0x1d400, 0x1d454, - 0x1d456, 0x1d49c, - 0x1d49e, 0x1d49f, - 0x1d4a2, 0x1d4a2, - 0x1d4a5, 0x1d4a6, - 0x1d4a9, 0x1d4ac, - 0x1d4ae, 0x1d4b9, - 0x1d4bb, 0x1d4bb, - 0x1d4bd, 0x1d4c0, - 0x1d4c2, 0x1d4c3, - 0x1d4c5, 0x1d505, - 0x1d507, 0x1d50a, - 0x1d50d, 0x1d514, - 0x1d516, 0x1d51c, - 0x1d51e, 0x1d539, - 0x1d53b, 0x1d53e, - 0x1d540, 0x1d544, - 0x1d546, 0x1d546, - 0x1d54a, 0x1d550, - 0x1d552, 0x1d6a3, - 0x1d6a8, 0x1d7c9, - 0x1d7ce, 0x1d7ff, - 0x1fffe, 0x2a6d6, - 0x2f800, 0x2fa1d, - 0x2fffe, 0x2ffff, - 0x3fffe, 0x3ffff, - 0x4fffe, 0x4ffff, - 0x5fffe, 0x5ffff, - 0x6fffe, 0x6ffff, - 0x7fffe, 0x7ffff, - 0x8fffe, 0x8ffff, - 0x9fffe, 0x9ffff, - 0xafffe, 0xaffff, - 0xbfffe, 0xbffff, - 0xcfffe, 0xcffff, - 0xdfffe, 0xdffff, - 0xe0001, 0xe0001, - 0xe0020, 0xe007f, - 0xefffe, 0x10ffff, -}; /* CR_Age_3_1 */ - -/* 'Age_3_2': Derived Age 3.2 */ -static const OnigCodePoint CR_Age_3_2[] = { - 397, - 0x0000, 0x0220, - 0x0222, 0x0233, - 0x0250, 0x02ad, - 0x02b0, 0x02ee, - 0x0300, 0x034f, - 0x0360, 0x036f, - 0x0374, 0x0375, - 0x037a, 0x037a, - 0x037e, 0x037e, - 0x0384, 0x038a, - 0x038c, 0x038c, - 0x038e, 0x03a1, - 0x03a3, 0x03ce, - 0x03d0, 0x03f6, - 0x0400, 0x0486, - 0x0488, 0x04ce, - 0x04d0, 0x04f5, - 0x04f8, 0x04f9, - 0x0500, 0x050f, - 0x0531, 0x0556, - 0x0559, 0x055f, - 0x0561, 0x0587, - 0x0589, 0x058a, - 0x0591, 0x05a1, - 0x05a3, 0x05b9, - 0x05bb, 0x05c4, - 0x05d0, 0x05ea, - 0x05f0, 0x05f4, - 0x060c, 0x060c, - 0x061b, 0x061b, - 0x061f, 0x061f, - 0x0621, 0x063a, - 0x0640, 0x0655, - 0x0660, 0x06ed, - 0x06f0, 0x06fe, - 0x0700, 0x070d, - 0x070f, 0x072c, - 0x0730, 0x074a, - 0x0780, 0x07b1, - 0x0901, 0x0903, - 0x0905, 0x0939, - 0x093c, 0x094d, - 0x0950, 0x0954, - 0x0958, 0x0970, - 0x0981, 0x0983, - 0x0985, 0x098c, - 0x098f, 0x0990, - 0x0993, 0x09a8, - 0x09aa, 0x09b0, - 0x09b2, 0x09b2, - 0x09b6, 0x09b9, - 0x09bc, 0x09bc, - 0x09be, 0x09c4, - 0x09c7, 0x09c8, - 0x09cb, 0x09cd, - 0x09d7, 0x09d7, - 0x09dc, 0x09dd, - 0x09df, 0x09e3, - 0x09e6, 0x09fa, - 0x0a02, 0x0a02, - 0x0a05, 0x0a0a, - 0x0a0f, 0x0a10, - 0x0a13, 0x0a28, - 0x0a2a, 0x0a30, - 0x0a32, 0x0a33, - 0x0a35, 0x0a36, - 0x0a38, 0x0a39, - 0x0a3c, 0x0a3c, - 0x0a3e, 0x0a42, - 0x0a47, 0x0a48, - 0x0a4b, 0x0a4d, - 0x0a59, 0x0a5c, - 0x0a5e, 0x0a5e, - 0x0a66, 0x0a74, - 0x0a81, 0x0a83, - 0x0a85, 0x0a8b, - 0x0a8d, 0x0a8d, - 0x0a8f, 0x0a91, - 0x0a93, 0x0aa8, - 0x0aaa, 0x0ab0, - 0x0ab2, 0x0ab3, - 0x0ab5, 0x0ab9, - 0x0abc, 0x0ac5, - 0x0ac7, 0x0ac9, - 0x0acb, 0x0acd, - 0x0ad0, 0x0ad0, - 0x0ae0, 0x0ae0, - 0x0ae6, 0x0aef, - 0x0b01, 0x0b03, - 0x0b05, 0x0b0c, - 0x0b0f, 0x0b10, - 0x0b13, 0x0b28, - 0x0b2a, 0x0b30, - 0x0b32, 0x0b33, - 0x0b36, 0x0b39, - 0x0b3c, 0x0b43, - 0x0b47, 0x0b48, - 0x0b4b, 0x0b4d, - 0x0b56, 0x0b57, - 0x0b5c, 0x0b5d, - 0x0b5f, 0x0b61, - 0x0b66, 0x0b70, - 0x0b82, 0x0b83, - 0x0b85, 0x0b8a, - 0x0b8e, 0x0b90, - 0x0b92, 0x0b95, - 0x0b99, 0x0b9a, - 0x0b9c, 0x0b9c, - 0x0b9e, 0x0b9f, - 0x0ba3, 0x0ba4, - 0x0ba8, 0x0baa, - 0x0bae, 0x0bb5, - 0x0bb7, 0x0bb9, - 0x0bbe, 0x0bc2, - 0x0bc6, 0x0bc8, - 0x0bca, 0x0bcd, - 0x0bd7, 0x0bd7, - 0x0be7, 0x0bf2, - 0x0c01, 0x0c03, - 0x0c05, 0x0c0c, - 0x0c0e, 0x0c10, - 0x0c12, 0x0c28, - 0x0c2a, 0x0c33, - 0x0c35, 0x0c39, - 0x0c3e, 0x0c44, - 0x0c46, 0x0c48, - 0x0c4a, 0x0c4d, - 0x0c55, 0x0c56, - 0x0c60, 0x0c61, - 0x0c66, 0x0c6f, - 0x0c82, 0x0c83, - 0x0c85, 0x0c8c, - 0x0c8e, 0x0c90, - 0x0c92, 0x0ca8, - 0x0caa, 0x0cb3, - 0x0cb5, 0x0cb9, - 0x0cbe, 0x0cc4, - 0x0cc6, 0x0cc8, - 0x0cca, 0x0ccd, - 0x0cd5, 0x0cd6, - 0x0cde, 0x0cde, - 0x0ce0, 0x0ce1, - 0x0ce6, 0x0cef, - 0x0d02, 0x0d03, - 0x0d05, 0x0d0c, - 0x0d0e, 0x0d10, - 0x0d12, 0x0d28, - 0x0d2a, 0x0d39, - 0x0d3e, 0x0d43, - 0x0d46, 0x0d48, - 0x0d4a, 0x0d4d, - 0x0d57, 0x0d57, - 0x0d60, 0x0d61, - 0x0d66, 0x0d6f, - 0x0d82, 0x0d83, - 0x0d85, 0x0d96, - 0x0d9a, 0x0db1, - 0x0db3, 0x0dbb, - 0x0dbd, 0x0dbd, - 0x0dc0, 0x0dc6, - 0x0dca, 0x0dca, - 0x0dcf, 0x0dd4, - 0x0dd6, 0x0dd6, - 0x0dd8, 0x0ddf, - 0x0df2, 0x0df4, - 0x0e01, 0x0e3a, - 0x0e3f, 0x0e5b, - 0x0e81, 0x0e82, - 0x0e84, 0x0e84, - 0x0e87, 0x0e88, - 0x0e8a, 0x0e8a, - 0x0e8d, 0x0e8d, - 0x0e94, 0x0e97, - 0x0e99, 0x0e9f, - 0x0ea1, 0x0ea3, - 0x0ea5, 0x0ea5, - 0x0ea7, 0x0ea7, - 0x0eaa, 0x0eab, - 0x0ead, 0x0eb9, - 0x0ebb, 0x0ebd, - 0x0ec0, 0x0ec4, - 0x0ec6, 0x0ec6, - 0x0ec8, 0x0ecd, - 0x0ed0, 0x0ed9, - 0x0edc, 0x0edd, - 0x0f00, 0x0f47, - 0x0f49, 0x0f6a, - 0x0f71, 0x0f8b, - 0x0f90, 0x0f97, - 0x0f99, 0x0fbc, - 0x0fbe, 0x0fcc, - 0x0fcf, 0x0fcf, - 0x1000, 0x1021, - 0x1023, 0x1027, - 0x1029, 0x102a, - 0x102c, 0x1032, - 0x1036, 0x1039, - 0x1040, 0x1059, - 0x10a0, 0x10c5, - 0x10d0, 0x10f8, - 0x10fb, 0x10fb, - 0x1100, 0x1159, - 0x115f, 0x11a2, - 0x11a8, 0x11f9, - 0x1200, 0x1206, - 0x1208, 0x1246, - 0x1248, 0x1248, - 0x124a, 0x124d, - 0x1250, 0x1256, - 0x1258, 0x1258, - 0x125a, 0x125d, - 0x1260, 0x1286, - 0x1288, 0x1288, - 0x128a, 0x128d, - 0x1290, 0x12ae, - 0x12b0, 0x12b0, - 0x12b2, 0x12b5, - 0x12b8, 0x12be, - 0x12c0, 0x12c0, - 0x12c2, 0x12c5, - 0x12c8, 0x12ce, - 0x12d0, 0x12d6, - 0x12d8, 0x12ee, - 0x12f0, 0x130e, - 0x1310, 0x1310, - 0x1312, 0x1315, - 0x1318, 0x131e, - 0x1320, 0x1346, - 0x1348, 0x135a, - 0x1361, 0x137c, - 0x13a0, 0x13f4, - 0x1401, 0x1676, - 0x1680, 0x169c, - 0x16a0, 0x16f0, - 0x1700, 0x170c, - 0x170e, 0x1714, - 0x1720, 0x1736, - 0x1740, 0x1753, - 0x1760, 0x176c, - 0x176e, 0x1770, - 0x1772, 0x1773, - 0x1780, 0x17dc, - 0x17e0, 0x17e9, - 0x1800, 0x180e, - 0x1810, 0x1819, - 0x1820, 0x1877, - 0x1880, 0x18a9, - 0x1e00, 0x1e9b, - 0x1ea0, 0x1ef9, - 0x1f00, 0x1f15, - 0x1f18, 0x1f1d, - 0x1f20, 0x1f45, - 0x1f48, 0x1f4d, - 0x1f50, 0x1f57, - 0x1f59, 0x1f59, - 0x1f5b, 0x1f5b, - 0x1f5d, 0x1f5d, - 0x1f5f, 0x1f7d, - 0x1f80, 0x1fb4, - 0x1fb6, 0x1fc4, - 0x1fc6, 0x1fd3, - 0x1fd6, 0x1fdb, - 0x1fdd, 0x1fef, - 0x1ff2, 0x1ff4, - 0x1ff6, 0x1ffe, - 0x2000, 0x2052, - 0x2057, 0x2057, - 0x205f, 0x2063, - 0x206a, 0x2071, - 0x2074, 0x208e, - 0x20a0, 0x20b1, - 0x20d0, 0x20ea, - 0x2100, 0x213a, - 0x213d, 0x214b, - 0x2153, 0x2183, - 0x2190, 0x23ce, - 0x2400, 0x2426, - 0x2440, 0x244a, - 0x2460, 0x24fe, - 0x2500, 0x2613, - 0x2616, 0x2617, - 0x2619, 0x267d, - 0x2680, 0x2689, - 0x2701, 0x2704, - 0x2706, 0x2709, - 0x270c, 0x2727, - 0x2729, 0x274b, - 0x274d, 0x274d, - 0x274f, 0x2752, - 0x2756, 0x2756, - 0x2758, 0x275e, - 0x2761, 0x2794, - 0x2798, 0x27af, - 0x27b1, 0x27be, - 0x27d0, 0x27eb, - 0x27f0, 0x2aff, - 0x2e80, 0x2e99, - 0x2e9b, 0x2ef3, - 0x2f00, 0x2fd5, - 0x2ff0, 0x2ffb, - 0x3000, 0x303f, - 0x3041, 0x3096, - 0x3099, 0x30ff, - 0x3105, 0x312c, - 0x3131, 0x318e, - 0x3190, 0x31b7, - 0x31f0, 0x321c, - 0x3220, 0x3243, - 0x3251, 0x327b, - 0x327f, 0x32cb, - 0x32d0, 0x32fe, - 0x3300, 0x3376, - 0x337b, 0x33dd, - 0x33e0, 0x33fe, - 0x3400, 0x4db5, - 0x4e00, 0x9fa5, - 0xa000, 0xa48c, - 0xa490, 0xa4c6, - 0xac00, 0xd7a3, - 0xd800, 0xfa2d, - 0xfa30, 0xfa6a, - 0xfb00, 0xfb06, - 0xfb13, 0xfb17, - 0xfb1d, 0xfb36, - 0xfb38, 0xfb3c, - 0xfb3e, 0xfb3e, - 0xfb40, 0xfb41, - 0xfb43, 0xfb44, - 0xfb46, 0xfbb1, - 0xfbd3, 0xfd3f, - 0xfd50, 0xfd8f, - 0xfd92, 0xfdc7, - 0xfdd0, 0xfdfc, - 0xfe00, 0xfe0f, - 0xfe20, 0xfe23, - 0xfe30, 0xfe46, - 0xfe49, 0xfe52, - 0xfe54, 0xfe66, - 0xfe68, 0xfe6b, - 0xfe70, 0xfe74, - 0xfe76, 0xfefc, - 0xfeff, 0xfeff, - 0xff01, 0xffbe, - 0xffc2, 0xffc7, - 0xffca, 0xffcf, - 0xffd2, 0xffd7, - 0xffda, 0xffdc, - 0xffe0, 0xffe6, - 0xffe8, 0xffee, - 0xfff9, 0xffff, - 0x10300, 0x1031e, - 0x10320, 0x10323, - 0x10330, 0x1034a, - 0x10400, 0x10425, - 0x10428, 0x1044d, - 0x1d000, 0x1d0f5, - 0x1d100, 0x1d126, - 0x1d12a, 0x1d1dd, - 0x1d400, 0x1d454, - 0x1d456, 0x1d49c, - 0x1d49e, 0x1d49f, - 0x1d4a2, 0x1d4a2, - 0x1d4a5, 0x1d4a6, - 0x1d4a9, 0x1d4ac, - 0x1d4ae, 0x1d4b9, - 0x1d4bb, 0x1d4bb, - 0x1d4bd, 0x1d4c0, - 0x1d4c2, 0x1d4c3, - 0x1d4c5, 0x1d505, - 0x1d507, 0x1d50a, - 0x1d50d, 0x1d514, - 0x1d516, 0x1d51c, - 0x1d51e, 0x1d539, - 0x1d53b, 0x1d53e, - 0x1d540, 0x1d544, - 0x1d546, 0x1d546, - 0x1d54a, 0x1d550, - 0x1d552, 0x1d6a3, - 0x1d6a8, 0x1d7c9, - 0x1d7ce, 0x1d7ff, - 0x1fffe, 0x2a6d6, - 0x2f800, 0x2fa1d, - 0x2fffe, 0x2ffff, - 0x3fffe, 0x3ffff, - 0x4fffe, 0x4ffff, - 0x5fffe, 0x5ffff, - 0x6fffe, 0x6ffff, - 0x7fffe, 0x7ffff, - 0x8fffe, 0x8ffff, - 0x9fffe, 0x9ffff, - 0xafffe, 0xaffff, - 0xbfffe, 0xbffff, - 0xcfffe, 0xcffff, - 0xdfffe, 0xdffff, - 0xe0001, 0xe0001, - 0xe0020, 0xe007f, - 0xefffe, 0x10ffff, -}; /* CR_Age_3_2 */ - -/* 'Age_4_0': Derived Age 4.0 */ -static const OnigCodePoint CR_Age_4_0[] = { - 412, - 0x0000, 0x0236, - 0x0250, 0x0357, - 0x035d, 0x036f, - 0x0374, 0x0375, - 0x037a, 0x037a, - 0x037e, 0x037e, - 0x0384, 0x038a, - 0x038c, 0x038c, - 0x038e, 0x03a1, - 0x03a3, 0x03ce, - 0x03d0, 0x03fb, - 0x0400, 0x0486, - 0x0488, 0x04ce, - 0x04d0, 0x04f5, - 0x04f8, 0x04f9, - 0x0500, 0x050f, - 0x0531, 0x0556, - 0x0559, 0x055f, - 0x0561, 0x0587, - 0x0589, 0x058a, - 0x0591, 0x05a1, - 0x05a3, 0x05b9, - 0x05bb, 0x05c4, - 0x05d0, 0x05ea, - 0x05f0, 0x05f4, - 0x0600, 0x0603, - 0x060c, 0x0615, - 0x061b, 0x061b, - 0x061f, 0x061f, - 0x0621, 0x063a, - 0x0640, 0x0658, - 0x0660, 0x070d, - 0x070f, 0x074a, - 0x074d, 0x074f, - 0x0780, 0x07b1, - 0x0901, 0x0939, - 0x093c, 0x094d, - 0x0950, 0x0954, - 0x0958, 0x0970, - 0x0981, 0x0983, - 0x0985, 0x098c, - 0x098f, 0x0990, - 0x0993, 0x09a8, - 0x09aa, 0x09b0, - 0x09b2, 0x09b2, - 0x09b6, 0x09b9, - 0x09bc, 0x09c4, - 0x09c7, 0x09c8, - 0x09cb, 0x09cd, - 0x09d7, 0x09d7, - 0x09dc, 0x09dd, - 0x09df, 0x09e3, - 0x09e6, 0x09fa, - 0x0a01, 0x0a03, - 0x0a05, 0x0a0a, - 0x0a0f, 0x0a10, - 0x0a13, 0x0a28, - 0x0a2a, 0x0a30, - 0x0a32, 0x0a33, - 0x0a35, 0x0a36, - 0x0a38, 0x0a39, - 0x0a3c, 0x0a3c, - 0x0a3e, 0x0a42, - 0x0a47, 0x0a48, - 0x0a4b, 0x0a4d, - 0x0a59, 0x0a5c, - 0x0a5e, 0x0a5e, - 0x0a66, 0x0a74, - 0x0a81, 0x0a83, - 0x0a85, 0x0a8d, - 0x0a8f, 0x0a91, - 0x0a93, 0x0aa8, - 0x0aaa, 0x0ab0, - 0x0ab2, 0x0ab3, - 0x0ab5, 0x0ab9, - 0x0abc, 0x0ac5, - 0x0ac7, 0x0ac9, - 0x0acb, 0x0acd, - 0x0ad0, 0x0ad0, - 0x0ae0, 0x0ae3, - 0x0ae6, 0x0aef, - 0x0af1, 0x0af1, - 0x0b01, 0x0b03, - 0x0b05, 0x0b0c, - 0x0b0f, 0x0b10, - 0x0b13, 0x0b28, - 0x0b2a, 0x0b30, - 0x0b32, 0x0b33, - 0x0b35, 0x0b39, - 0x0b3c, 0x0b43, - 0x0b47, 0x0b48, - 0x0b4b, 0x0b4d, - 0x0b56, 0x0b57, - 0x0b5c, 0x0b5d, - 0x0b5f, 0x0b61, - 0x0b66, 0x0b71, - 0x0b82, 0x0b83, - 0x0b85, 0x0b8a, - 0x0b8e, 0x0b90, - 0x0b92, 0x0b95, - 0x0b99, 0x0b9a, - 0x0b9c, 0x0b9c, - 0x0b9e, 0x0b9f, - 0x0ba3, 0x0ba4, - 0x0ba8, 0x0baa, - 0x0bae, 0x0bb5, - 0x0bb7, 0x0bb9, - 0x0bbe, 0x0bc2, - 0x0bc6, 0x0bc8, - 0x0bca, 0x0bcd, - 0x0bd7, 0x0bd7, - 0x0be7, 0x0bfa, - 0x0c01, 0x0c03, - 0x0c05, 0x0c0c, - 0x0c0e, 0x0c10, - 0x0c12, 0x0c28, - 0x0c2a, 0x0c33, - 0x0c35, 0x0c39, - 0x0c3e, 0x0c44, - 0x0c46, 0x0c48, - 0x0c4a, 0x0c4d, - 0x0c55, 0x0c56, - 0x0c60, 0x0c61, - 0x0c66, 0x0c6f, - 0x0c82, 0x0c83, - 0x0c85, 0x0c8c, - 0x0c8e, 0x0c90, - 0x0c92, 0x0ca8, - 0x0caa, 0x0cb3, - 0x0cb5, 0x0cb9, - 0x0cbc, 0x0cc4, - 0x0cc6, 0x0cc8, - 0x0cca, 0x0ccd, - 0x0cd5, 0x0cd6, - 0x0cde, 0x0cde, - 0x0ce0, 0x0ce1, - 0x0ce6, 0x0cef, - 0x0d02, 0x0d03, - 0x0d05, 0x0d0c, - 0x0d0e, 0x0d10, - 0x0d12, 0x0d28, - 0x0d2a, 0x0d39, - 0x0d3e, 0x0d43, - 0x0d46, 0x0d48, - 0x0d4a, 0x0d4d, - 0x0d57, 0x0d57, - 0x0d60, 0x0d61, - 0x0d66, 0x0d6f, - 0x0d82, 0x0d83, - 0x0d85, 0x0d96, - 0x0d9a, 0x0db1, - 0x0db3, 0x0dbb, - 0x0dbd, 0x0dbd, - 0x0dc0, 0x0dc6, - 0x0dca, 0x0dca, - 0x0dcf, 0x0dd4, - 0x0dd6, 0x0dd6, - 0x0dd8, 0x0ddf, - 0x0df2, 0x0df4, - 0x0e01, 0x0e3a, - 0x0e3f, 0x0e5b, - 0x0e81, 0x0e82, - 0x0e84, 0x0e84, - 0x0e87, 0x0e88, - 0x0e8a, 0x0e8a, - 0x0e8d, 0x0e8d, - 0x0e94, 0x0e97, - 0x0e99, 0x0e9f, - 0x0ea1, 0x0ea3, - 0x0ea5, 0x0ea5, - 0x0ea7, 0x0ea7, - 0x0eaa, 0x0eab, - 0x0ead, 0x0eb9, - 0x0ebb, 0x0ebd, - 0x0ec0, 0x0ec4, - 0x0ec6, 0x0ec6, - 0x0ec8, 0x0ecd, - 0x0ed0, 0x0ed9, - 0x0edc, 0x0edd, - 0x0f00, 0x0f47, - 0x0f49, 0x0f6a, - 0x0f71, 0x0f8b, - 0x0f90, 0x0f97, - 0x0f99, 0x0fbc, - 0x0fbe, 0x0fcc, - 0x0fcf, 0x0fcf, - 0x1000, 0x1021, - 0x1023, 0x1027, - 0x1029, 0x102a, - 0x102c, 0x1032, - 0x1036, 0x1039, - 0x1040, 0x1059, - 0x10a0, 0x10c5, - 0x10d0, 0x10f8, - 0x10fb, 0x10fb, - 0x1100, 0x1159, - 0x115f, 0x11a2, - 0x11a8, 0x11f9, - 0x1200, 0x1206, - 0x1208, 0x1246, - 0x1248, 0x1248, - 0x124a, 0x124d, - 0x1250, 0x1256, - 0x1258, 0x1258, - 0x125a, 0x125d, - 0x1260, 0x1286, - 0x1288, 0x1288, - 0x128a, 0x128d, - 0x1290, 0x12ae, - 0x12b0, 0x12b0, - 0x12b2, 0x12b5, - 0x12b8, 0x12be, - 0x12c0, 0x12c0, - 0x12c2, 0x12c5, - 0x12c8, 0x12ce, - 0x12d0, 0x12d6, - 0x12d8, 0x12ee, - 0x12f0, 0x130e, - 0x1310, 0x1310, - 0x1312, 0x1315, - 0x1318, 0x131e, - 0x1320, 0x1346, - 0x1348, 0x135a, - 0x1361, 0x137c, - 0x13a0, 0x13f4, - 0x1401, 0x1676, - 0x1680, 0x169c, - 0x16a0, 0x16f0, - 0x1700, 0x170c, - 0x170e, 0x1714, - 0x1720, 0x1736, - 0x1740, 0x1753, - 0x1760, 0x176c, - 0x176e, 0x1770, - 0x1772, 0x1773, - 0x1780, 0x17dd, - 0x17e0, 0x17e9, - 0x17f0, 0x17f9, - 0x1800, 0x180e, - 0x1810, 0x1819, - 0x1820, 0x1877, - 0x1880, 0x18a9, - 0x1900, 0x191c, - 0x1920, 0x192b, - 0x1930, 0x193b, - 0x1940, 0x1940, - 0x1944, 0x196d, - 0x1970, 0x1974, - 0x19e0, 0x19ff, - 0x1d00, 0x1d6b, - 0x1e00, 0x1e9b, - 0x1ea0, 0x1ef9, - 0x1f00, 0x1f15, - 0x1f18, 0x1f1d, - 0x1f20, 0x1f45, - 0x1f48, 0x1f4d, - 0x1f50, 0x1f57, - 0x1f59, 0x1f59, - 0x1f5b, 0x1f5b, - 0x1f5d, 0x1f5d, - 0x1f5f, 0x1f7d, - 0x1f80, 0x1fb4, - 0x1fb6, 0x1fc4, - 0x1fc6, 0x1fd3, - 0x1fd6, 0x1fdb, - 0x1fdd, 0x1fef, - 0x1ff2, 0x1ff4, - 0x1ff6, 0x1ffe, - 0x2000, 0x2054, - 0x2057, 0x2057, - 0x205f, 0x2063, - 0x206a, 0x2071, - 0x2074, 0x208e, - 0x20a0, 0x20b1, - 0x20d0, 0x20ea, - 0x2100, 0x213b, - 0x213d, 0x214b, - 0x2153, 0x2183, - 0x2190, 0x23d0, - 0x2400, 0x2426, - 0x2440, 0x244a, - 0x2460, 0x2617, - 0x2619, 0x267d, - 0x2680, 0x2691, - 0x26a0, 0x26a1, - 0x2701, 0x2704, - 0x2706, 0x2709, - 0x270c, 0x2727, - 0x2729, 0x274b, - 0x274d, 0x274d, - 0x274f, 0x2752, - 0x2756, 0x2756, - 0x2758, 0x275e, - 0x2761, 0x2794, - 0x2798, 0x27af, - 0x27b1, 0x27be, - 0x27d0, 0x27eb, - 0x27f0, 0x2b0d, - 0x2e80, 0x2e99, - 0x2e9b, 0x2ef3, - 0x2f00, 0x2fd5, - 0x2ff0, 0x2ffb, - 0x3000, 0x303f, - 0x3041, 0x3096, - 0x3099, 0x30ff, - 0x3105, 0x312c, - 0x3131, 0x318e, - 0x3190, 0x31b7, - 0x31f0, 0x321e, - 0x3220, 0x3243, - 0x3250, 0x327d, - 0x327f, 0x32fe, - 0x3300, 0x4db5, - 0x4dc0, 0x9fa5, - 0xa000, 0xa48c, - 0xa490, 0xa4c6, - 0xac00, 0xd7a3, - 0xd800, 0xfa2d, - 0xfa30, 0xfa6a, - 0xfb00, 0xfb06, - 0xfb13, 0xfb17, - 0xfb1d, 0xfb36, - 0xfb38, 0xfb3c, - 0xfb3e, 0xfb3e, - 0xfb40, 0xfb41, - 0xfb43, 0xfb44, - 0xfb46, 0xfbb1, - 0xfbd3, 0xfd3f, - 0xfd50, 0xfd8f, - 0xfd92, 0xfdc7, - 0xfdd0, 0xfdfd, - 0xfe00, 0xfe0f, - 0xfe20, 0xfe23, - 0xfe30, 0xfe52, - 0xfe54, 0xfe66, - 0xfe68, 0xfe6b, - 0xfe70, 0xfe74, - 0xfe76, 0xfefc, - 0xfeff, 0xfeff, - 0xff01, 0xffbe, - 0xffc2, 0xffc7, - 0xffca, 0xffcf, - 0xffd2, 0xffd7, - 0xffda, 0xffdc, - 0xffe0, 0xffe6, - 0xffe8, 0xffee, - 0xfff9, 0x1000b, - 0x1000d, 0x10026, - 0x10028, 0x1003a, - 0x1003c, 0x1003d, - 0x1003f, 0x1004d, - 0x10050, 0x1005d, - 0x10080, 0x100fa, - 0x10100, 0x10102, - 0x10107, 0x10133, - 0x10137, 0x1013f, - 0x10300, 0x1031e, - 0x10320, 0x10323, - 0x10330, 0x1034a, - 0x10380, 0x1039d, - 0x1039f, 0x1039f, - 0x10400, 0x1049d, - 0x104a0, 0x104a9, - 0x10800, 0x10805, - 0x10808, 0x10808, - 0x1080a, 0x10835, - 0x10837, 0x10838, - 0x1083c, 0x1083c, - 0x1083f, 0x1083f, - 0x1d000, 0x1d0f5, - 0x1d100, 0x1d126, - 0x1d12a, 0x1d1dd, - 0x1d300, 0x1d356, - 0x1d400, 0x1d454, - 0x1d456, 0x1d49c, - 0x1d49e, 0x1d49f, - 0x1d4a2, 0x1d4a2, - 0x1d4a5, 0x1d4a6, - 0x1d4a9, 0x1d4ac, - 0x1d4ae, 0x1d4b9, - 0x1d4bb, 0x1d4bb, - 0x1d4bd, 0x1d4c3, - 0x1d4c5, 0x1d505, - 0x1d507, 0x1d50a, - 0x1d50d, 0x1d514, - 0x1d516, 0x1d51c, - 0x1d51e, 0x1d539, - 0x1d53b, 0x1d53e, - 0x1d540, 0x1d544, - 0x1d546, 0x1d546, - 0x1d54a, 0x1d550, - 0x1d552, 0x1d6a3, - 0x1d6a8, 0x1d7c9, - 0x1d7ce, 0x1d7ff, - 0x1fffe, 0x2a6d6, - 0x2f800, 0x2fa1d, - 0x2fffe, 0x2ffff, - 0x3fffe, 0x3ffff, - 0x4fffe, 0x4ffff, - 0x5fffe, 0x5ffff, - 0x6fffe, 0x6ffff, - 0x7fffe, 0x7ffff, - 0x8fffe, 0x8ffff, - 0x9fffe, 0x9ffff, - 0xafffe, 0xaffff, - 0xbfffe, 0xbffff, - 0xcfffe, 0xcffff, - 0xdfffe, 0xdffff, - 0xe0001, 0xe0001, - 0xe0020, 0xe007f, - 0xe0100, 0xe01ef, - 0xefffe, 0x10ffff, -}; /* CR_Age_4_0 */ - -/* 'Age_4_1': Derived Age 4.1 */ -static const OnigCodePoint CR_Age_4_1[] = { - 430, - 0x0000, 0x0241, - 0x0250, 0x036f, - 0x0374, 0x0375, - 0x037a, 0x037a, - 0x037e, 0x037e, - 0x0384, 0x038a, - 0x038c, 0x038c, - 0x038e, 0x03a1, - 0x03a3, 0x03ce, - 0x03d0, 0x0486, - 0x0488, 0x04ce, - 0x04d0, 0x04f9, - 0x0500, 0x050f, - 0x0531, 0x0556, - 0x0559, 0x055f, - 0x0561, 0x0587, - 0x0589, 0x058a, - 0x0591, 0x05b9, - 0x05bb, 0x05c7, - 0x05d0, 0x05ea, - 0x05f0, 0x05f4, - 0x0600, 0x0603, - 0x060b, 0x0615, - 0x061b, 0x061b, - 0x061e, 0x061f, - 0x0621, 0x063a, - 0x0640, 0x065e, - 0x0660, 0x070d, - 0x070f, 0x074a, - 0x074d, 0x076d, - 0x0780, 0x07b1, - 0x0901, 0x0939, - 0x093c, 0x094d, - 0x0950, 0x0954, - 0x0958, 0x0970, - 0x097d, 0x097d, - 0x0981, 0x0983, - 0x0985, 0x098c, - 0x098f, 0x0990, - 0x0993, 0x09a8, - 0x09aa, 0x09b0, - 0x09b2, 0x09b2, - 0x09b6, 0x09b9, - 0x09bc, 0x09c4, - 0x09c7, 0x09c8, - 0x09cb, 0x09ce, - 0x09d7, 0x09d7, - 0x09dc, 0x09dd, - 0x09df, 0x09e3, - 0x09e6, 0x09fa, - 0x0a01, 0x0a03, - 0x0a05, 0x0a0a, - 0x0a0f, 0x0a10, - 0x0a13, 0x0a28, - 0x0a2a, 0x0a30, - 0x0a32, 0x0a33, - 0x0a35, 0x0a36, - 0x0a38, 0x0a39, - 0x0a3c, 0x0a3c, - 0x0a3e, 0x0a42, - 0x0a47, 0x0a48, - 0x0a4b, 0x0a4d, - 0x0a59, 0x0a5c, - 0x0a5e, 0x0a5e, - 0x0a66, 0x0a74, - 0x0a81, 0x0a83, - 0x0a85, 0x0a8d, - 0x0a8f, 0x0a91, - 0x0a93, 0x0aa8, - 0x0aaa, 0x0ab0, - 0x0ab2, 0x0ab3, - 0x0ab5, 0x0ab9, - 0x0abc, 0x0ac5, - 0x0ac7, 0x0ac9, - 0x0acb, 0x0acd, - 0x0ad0, 0x0ad0, - 0x0ae0, 0x0ae3, - 0x0ae6, 0x0aef, - 0x0af1, 0x0af1, - 0x0b01, 0x0b03, - 0x0b05, 0x0b0c, - 0x0b0f, 0x0b10, - 0x0b13, 0x0b28, - 0x0b2a, 0x0b30, - 0x0b32, 0x0b33, - 0x0b35, 0x0b39, - 0x0b3c, 0x0b43, - 0x0b47, 0x0b48, - 0x0b4b, 0x0b4d, - 0x0b56, 0x0b57, - 0x0b5c, 0x0b5d, - 0x0b5f, 0x0b61, - 0x0b66, 0x0b71, - 0x0b82, 0x0b83, - 0x0b85, 0x0b8a, - 0x0b8e, 0x0b90, - 0x0b92, 0x0b95, - 0x0b99, 0x0b9a, - 0x0b9c, 0x0b9c, - 0x0b9e, 0x0b9f, - 0x0ba3, 0x0ba4, - 0x0ba8, 0x0baa, - 0x0bae, 0x0bb9, - 0x0bbe, 0x0bc2, - 0x0bc6, 0x0bc8, - 0x0bca, 0x0bcd, - 0x0bd7, 0x0bd7, - 0x0be6, 0x0bfa, - 0x0c01, 0x0c03, - 0x0c05, 0x0c0c, - 0x0c0e, 0x0c10, - 0x0c12, 0x0c28, - 0x0c2a, 0x0c33, - 0x0c35, 0x0c39, - 0x0c3e, 0x0c44, - 0x0c46, 0x0c48, - 0x0c4a, 0x0c4d, - 0x0c55, 0x0c56, - 0x0c60, 0x0c61, - 0x0c66, 0x0c6f, - 0x0c82, 0x0c83, - 0x0c85, 0x0c8c, - 0x0c8e, 0x0c90, - 0x0c92, 0x0ca8, - 0x0caa, 0x0cb3, - 0x0cb5, 0x0cb9, - 0x0cbc, 0x0cc4, - 0x0cc6, 0x0cc8, - 0x0cca, 0x0ccd, - 0x0cd5, 0x0cd6, - 0x0cde, 0x0cde, - 0x0ce0, 0x0ce1, - 0x0ce6, 0x0cef, - 0x0d02, 0x0d03, - 0x0d05, 0x0d0c, - 0x0d0e, 0x0d10, - 0x0d12, 0x0d28, - 0x0d2a, 0x0d39, - 0x0d3e, 0x0d43, - 0x0d46, 0x0d48, - 0x0d4a, 0x0d4d, - 0x0d57, 0x0d57, - 0x0d60, 0x0d61, - 0x0d66, 0x0d6f, - 0x0d82, 0x0d83, - 0x0d85, 0x0d96, - 0x0d9a, 0x0db1, - 0x0db3, 0x0dbb, - 0x0dbd, 0x0dbd, - 0x0dc0, 0x0dc6, - 0x0dca, 0x0dca, - 0x0dcf, 0x0dd4, - 0x0dd6, 0x0dd6, - 0x0dd8, 0x0ddf, - 0x0df2, 0x0df4, - 0x0e01, 0x0e3a, - 0x0e3f, 0x0e5b, - 0x0e81, 0x0e82, - 0x0e84, 0x0e84, - 0x0e87, 0x0e88, - 0x0e8a, 0x0e8a, - 0x0e8d, 0x0e8d, - 0x0e94, 0x0e97, - 0x0e99, 0x0e9f, - 0x0ea1, 0x0ea3, - 0x0ea5, 0x0ea5, - 0x0ea7, 0x0ea7, - 0x0eaa, 0x0eab, - 0x0ead, 0x0eb9, - 0x0ebb, 0x0ebd, - 0x0ec0, 0x0ec4, - 0x0ec6, 0x0ec6, - 0x0ec8, 0x0ecd, - 0x0ed0, 0x0ed9, - 0x0edc, 0x0edd, - 0x0f00, 0x0f47, - 0x0f49, 0x0f6a, - 0x0f71, 0x0f8b, - 0x0f90, 0x0f97, - 0x0f99, 0x0fbc, - 0x0fbe, 0x0fcc, - 0x0fcf, 0x0fd1, - 0x1000, 0x1021, - 0x1023, 0x1027, - 0x1029, 0x102a, - 0x102c, 0x1032, - 0x1036, 0x1039, - 0x1040, 0x1059, - 0x10a0, 0x10c5, - 0x10d0, 0x10fc, - 0x1100, 0x1159, - 0x115f, 0x11a2, - 0x11a8, 0x11f9, - 0x1200, 0x1248, - 0x124a, 0x124d, - 0x1250, 0x1256, - 0x1258, 0x1258, - 0x125a, 0x125d, - 0x1260, 0x1288, - 0x128a, 0x128d, - 0x1290, 0x12b0, - 0x12b2, 0x12b5, - 0x12b8, 0x12be, - 0x12c0, 0x12c0, - 0x12c2, 0x12c5, - 0x12c8, 0x12d6, - 0x12d8, 0x1310, - 0x1312, 0x1315, - 0x1318, 0x135a, - 0x135f, 0x137c, - 0x1380, 0x1399, - 0x13a0, 0x13f4, - 0x1401, 0x1676, - 0x1680, 0x169c, - 0x16a0, 0x16f0, - 0x1700, 0x170c, - 0x170e, 0x1714, - 0x1720, 0x1736, - 0x1740, 0x1753, - 0x1760, 0x176c, - 0x176e, 0x1770, - 0x1772, 0x1773, - 0x1780, 0x17dd, - 0x17e0, 0x17e9, - 0x17f0, 0x17f9, - 0x1800, 0x180e, - 0x1810, 0x1819, - 0x1820, 0x1877, - 0x1880, 0x18a9, - 0x1900, 0x191c, - 0x1920, 0x192b, - 0x1930, 0x193b, - 0x1940, 0x1940, - 0x1944, 0x196d, - 0x1970, 0x1974, - 0x1980, 0x19a9, - 0x19b0, 0x19c9, - 0x19d0, 0x19d9, - 0x19de, 0x1a1b, - 0x1a1e, 0x1a1f, - 0x1d00, 0x1dc3, - 0x1e00, 0x1e9b, - 0x1ea0, 0x1ef9, - 0x1f00, 0x1f15, - 0x1f18, 0x1f1d, - 0x1f20, 0x1f45, - 0x1f48, 0x1f4d, - 0x1f50, 0x1f57, - 0x1f59, 0x1f59, - 0x1f5b, 0x1f5b, - 0x1f5d, 0x1f5d, - 0x1f5f, 0x1f7d, - 0x1f80, 0x1fb4, - 0x1fb6, 0x1fc4, - 0x1fc6, 0x1fd3, - 0x1fd6, 0x1fdb, - 0x1fdd, 0x1fef, - 0x1ff2, 0x1ff4, - 0x1ff6, 0x1ffe, - 0x2000, 0x2063, - 0x206a, 0x2071, - 0x2074, 0x208e, - 0x2090, 0x2094, - 0x20a0, 0x20b5, - 0x20d0, 0x20eb, - 0x2100, 0x214c, - 0x2153, 0x2183, - 0x2190, 0x23db, - 0x2400, 0x2426, - 0x2440, 0x244a, - 0x2460, 0x269c, - 0x26a0, 0x26b1, - 0x2701, 0x2704, - 0x2706, 0x2709, - 0x270c, 0x2727, - 0x2729, 0x274b, - 0x274d, 0x274d, - 0x274f, 0x2752, - 0x2756, 0x2756, - 0x2758, 0x275e, - 0x2761, 0x2794, - 0x2798, 0x27af, - 0x27b1, 0x27be, - 0x27c0, 0x27c6, - 0x27d0, 0x27eb, - 0x27f0, 0x2b13, - 0x2c00, 0x2c2e, - 0x2c30, 0x2c5e, - 0x2c80, 0x2cea, - 0x2cf9, 0x2d25, - 0x2d30, 0x2d65, - 0x2d6f, 0x2d6f, - 0x2d80, 0x2d96, - 0x2da0, 0x2da6, - 0x2da8, 0x2dae, - 0x2db0, 0x2db6, - 0x2db8, 0x2dbe, - 0x2dc0, 0x2dc6, - 0x2dc8, 0x2dce, - 0x2dd0, 0x2dd6, - 0x2dd8, 0x2dde, - 0x2e00, 0x2e17, - 0x2e1c, 0x2e1d, - 0x2e80, 0x2e99, - 0x2e9b, 0x2ef3, - 0x2f00, 0x2fd5, - 0x2ff0, 0x2ffb, - 0x3000, 0x303f, - 0x3041, 0x3096, - 0x3099, 0x30ff, - 0x3105, 0x312c, - 0x3131, 0x318e, - 0x3190, 0x31b7, - 0x31c0, 0x31cf, - 0x31f0, 0x321e, - 0x3220, 0x3243, - 0x3250, 0x32fe, - 0x3300, 0x4db5, - 0x4dc0, 0x9fbb, - 0xa000, 0xa48c, - 0xa490, 0xa4c6, - 0xa700, 0xa716, - 0xa800, 0xa82b, - 0xac00, 0xd7a3, - 0xd800, 0xfa2d, - 0xfa30, 0xfa6a, - 0xfa70, 0xfad9, - 0xfb00, 0xfb06, - 0xfb13, 0xfb17, - 0xfb1d, 0xfb36, - 0xfb38, 0xfb3c, - 0xfb3e, 0xfb3e, - 0xfb40, 0xfb41, - 0xfb43, 0xfb44, - 0xfb46, 0xfbb1, - 0xfbd3, 0xfd3f, - 0xfd50, 0xfd8f, - 0xfd92, 0xfdc7, - 0xfdd0, 0xfdfd, - 0xfe00, 0xfe19, - 0xfe20, 0xfe23, - 0xfe30, 0xfe52, - 0xfe54, 0xfe66, - 0xfe68, 0xfe6b, - 0xfe70, 0xfe74, - 0xfe76, 0xfefc, - 0xfeff, 0xfeff, - 0xff01, 0xffbe, - 0xffc2, 0xffc7, - 0xffca, 0xffcf, - 0xffd2, 0xffd7, - 0xffda, 0xffdc, - 0xffe0, 0xffe6, - 0xffe8, 0xffee, - 0xfff9, 0x1000b, - 0x1000d, 0x10026, - 0x10028, 0x1003a, - 0x1003c, 0x1003d, - 0x1003f, 0x1004d, - 0x10050, 0x1005d, - 0x10080, 0x100fa, - 0x10100, 0x10102, - 0x10107, 0x10133, - 0x10137, 0x1018a, - 0x10300, 0x1031e, - 0x10320, 0x10323, - 0x10330, 0x1034a, - 0x10380, 0x1039d, - 0x1039f, 0x103c3, - 0x103c8, 0x103d5, - 0x10400, 0x1049d, - 0x104a0, 0x104a9, - 0x10800, 0x10805, - 0x10808, 0x10808, - 0x1080a, 0x10835, - 0x10837, 0x10838, - 0x1083c, 0x1083c, - 0x1083f, 0x1083f, - 0x10a00, 0x10a03, - 0x10a05, 0x10a06, - 0x10a0c, 0x10a13, - 0x10a15, 0x10a17, - 0x10a19, 0x10a33, - 0x10a38, 0x10a3a, - 0x10a3f, 0x10a47, - 0x10a50, 0x10a58, - 0x1d000, 0x1d0f5, - 0x1d100, 0x1d126, - 0x1d12a, 0x1d1dd, - 0x1d200, 0x1d245, - 0x1d300, 0x1d356, - 0x1d400, 0x1d454, - 0x1d456, 0x1d49c, - 0x1d49e, 0x1d49f, - 0x1d4a2, 0x1d4a2, - 0x1d4a5, 0x1d4a6, - 0x1d4a9, 0x1d4ac, - 0x1d4ae, 0x1d4b9, - 0x1d4bb, 0x1d4bb, - 0x1d4bd, 0x1d4c3, - 0x1d4c5, 0x1d505, - 0x1d507, 0x1d50a, - 0x1d50d, 0x1d514, - 0x1d516, 0x1d51c, - 0x1d51e, 0x1d539, - 0x1d53b, 0x1d53e, - 0x1d540, 0x1d544, - 0x1d546, 0x1d546, - 0x1d54a, 0x1d550, - 0x1d552, 0x1d6a5, - 0x1d6a8, 0x1d7c9, - 0x1d7ce, 0x1d7ff, - 0x1fffe, 0x2a6d6, - 0x2f800, 0x2fa1d, - 0x2fffe, 0x2ffff, - 0x3fffe, 0x3ffff, - 0x4fffe, 0x4ffff, - 0x5fffe, 0x5ffff, - 0x6fffe, 0x6ffff, - 0x7fffe, 0x7ffff, - 0x8fffe, 0x8ffff, - 0x9fffe, 0x9ffff, - 0xafffe, 0xaffff, - 0xbfffe, 0xbffff, - 0xcfffe, 0xcffff, - 0xdfffe, 0xdffff, - 0xe0001, 0xe0001, - 0xe0020, 0xe007f, - 0xe0100, 0xe01ef, - 0xefffe, 0x10ffff, -}; /* CR_Age_4_1 */ - -/* 'Age_5_0': Derived Age 5.0 */ -static const OnigCodePoint CR_Age_5_0[] = { - 440, - 0x0000, 0x036f, - 0x0374, 0x0375, - 0x037a, 0x037e, - 0x0384, 0x038a, - 0x038c, 0x038c, - 0x038e, 0x03a1, - 0x03a3, 0x03ce, - 0x03d0, 0x0486, - 0x0488, 0x0513, - 0x0531, 0x0556, - 0x0559, 0x055f, - 0x0561, 0x0587, - 0x0589, 0x058a, - 0x0591, 0x05c7, - 0x05d0, 0x05ea, - 0x05f0, 0x05f4, - 0x0600, 0x0603, - 0x060b, 0x0615, - 0x061b, 0x061b, - 0x061e, 0x061f, - 0x0621, 0x063a, - 0x0640, 0x065e, - 0x0660, 0x070d, - 0x070f, 0x074a, - 0x074d, 0x076d, - 0x0780, 0x07b1, - 0x07c0, 0x07fa, - 0x0901, 0x0939, - 0x093c, 0x094d, - 0x0950, 0x0954, - 0x0958, 0x0970, - 0x097b, 0x097f, - 0x0981, 0x0983, - 0x0985, 0x098c, - 0x098f, 0x0990, - 0x0993, 0x09a8, - 0x09aa, 0x09b0, - 0x09b2, 0x09b2, - 0x09b6, 0x09b9, - 0x09bc, 0x09c4, - 0x09c7, 0x09c8, - 0x09cb, 0x09ce, - 0x09d7, 0x09d7, - 0x09dc, 0x09dd, - 0x09df, 0x09e3, - 0x09e6, 0x09fa, - 0x0a01, 0x0a03, - 0x0a05, 0x0a0a, - 0x0a0f, 0x0a10, - 0x0a13, 0x0a28, - 0x0a2a, 0x0a30, - 0x0a32, 0x0a33, - 0x0a35, 0x0a36, - 0x0a38, 0x0a39, - 0x0a3c, 0x0a3c, - 0x0a3e, 0x0a42, - 0x0a47, 0x0a48, - 0x0a4b, 0x0a4d, - 0x0a59, 0x0a5c, - 0x0a5e, 0x0a5e, - 0x0a66, 0x0a74, - 0x0a81, 0x0a83, - 0x0a85, 0x0a8d, - 0x0a8f, 0x0a91, - 0x0a93, 0x0aa8, - 0x0aaa, 0x0ab0, - 0x0ab2, 0x0ab3, - 0x0ab5, 0x0ab9, - 0x0abc, 0x0ac5, - 0x0ac7, 0x0ac9, - 0x0acb, 0x0acd, - 0x0ad0, 0x0ad0, - 0x0ae0, 0x0ae3, - 0x0ae6, 0x0aef, - 0x0af1, 0x0af1, - 0x0b01, 0x0b03, - 0x0b05, 0x0b0c, - 0x0b0f, 0x0b10, - 0x0b13, 0x0b28, - 0x0b2a, 0x0b30, - 0x0b32, 0x0b33, - 0x0b35, 0x0b39, - 0x0b3c, 0x0b43, - 0x0b47, 0x0b48, - 0x0b4b, 0x0b4d, - 0x0b56, 0x0b57, - 0x0b5c, 0x0b5d, - 0x0b5f, 0x0b61, - 0x0b66, 0x0b71, - 0x0b82, 0x0b83, - 0x0b85, 0x0b8a, - 0x0b8e, 0x0b90, - 0x0b92, 0x0b95, - 0x0b99, 0x0b9a, - 0x0b9c, 0x0b9c, - 0x0b9e, 0x0b9f, - 0x0ba3, 0x0ba4, - 0x0ba8, 0x0baa, - 0x0bae, 0x0bb9, - 0x0bbe, 0x0bc2, - 0x0bc6, 0x0bc8, - 0x0bca, 0x0bcd, - 0x0bd7, 0x0bd7, - 0x0be6, 0x0bfa, - 0x0c01, 0x0c03, - 0x0c05, 0x0c0c, - 0x0c0e, 0x0c10, - 0x0c12, 0x0c28, - 0x0c2a, 0x0c33, - 0x0c35, 0x0c39, - 0x0c3e, 0x0c44, - 0x0c46, 0x0c48, - 0x0c4a, 0x0c4d, - 0x0c55, 0x0c56, - 0x0c60, 0x0c61, - 0x0c66, 0x0c6f, - 0x0c82, 0x0c83, - 0x0c85, 0x0c8c, - 0x0c8e, 0x0c90, - 0x0c92, 0x0ca8, - 0x0caa, 0x0cb3, - 0x0cb5, 0x0cb9, - 0x0cbc, 0x0cc4, - 0x0cc6, 0x0cc8, - 0x0cca, 0x0ccd, - 0x0cd5, 0x0cd6, - 0x0cde, 0x0cde, - 0x0ce0, 0x0ce3, - 0x0ce6, 0x0cef, - 0x0cf1, 0x0cf2, - 0x0d02, 0x0d03, - 0x0d05, 0x0d0c, - 0x0d0e, 0x0d10, - 0x0d12, 0x0d28, - 0x0d2a, 0x0d39, - 0x0d3e, 0x0d43, - 0x0d46, 0x0d48, - 0x0d4a, 0x0d4d, - 0x0d57, 0x0d57, - 0x0d60, 0x0d61, - 0x0d66, 0x0d6f, - 0x0d82, 0x0d83, - 0x0d85, 0x0d96, - 0x0d9a, 0x0db1, - 0x0db3, 0x0dbb, - 0x0dbd, 0x0dbd, - 0x0dc0, 0x0dc6, - 0x0dca, 0x0dca, - 0x0dcf, 0x0dd4, - 0x0dd6, 0x0dd6, - 0x0dd8, 0x0ddf, - 0x0df2, 0x0df4, - 0x0e01, 0x0e3a, - 0x0e3f, 0x0e5b, - 0x0e81, 0x0e82, - 0x0e84, 0x0e84, - 0x0e87, 0x0e88, - 0x0e8a, 0x0e8a, - 0x0e8d, 0x0e8d, - 0x0e94, 0x0e97, - 0x0e99, 0x0e9f, - 0x0ea1, 0x0ea3, - 0x0ea5, 0x0ea5, - 0x0ea7, 0x0ea7, - 0x0eaa, 0x0eab, - 0x0ead, 0x0eb9, - 0x0ebb, 0x0ebd, - 0x0ec0, 0x0ec4, - 0x0ec6, 0x0ec6, - 0x0ec8, 0x0ecd, - 0x0ed0, 0x0ed9, - 0x0edc, 0x0edd, - 0x0f00, 0x0f47, - 0x0f49, 0x0f6a, - 0x0f71, 0x0f8b, - 0x0f90, 0x0f97, - 0x0f99, 0x0fbc, - 0x0fbe, 0x0fcc, - 0x0fcf, 0x0fd1, - 0x1000, 0x1021, - 0x1023, 0x1027, - 0x1029, 0x102a, - 0x102c, 0x1032, - 0x1036, 0x1039, - 0x1040, 0x1059, - 0x10a0, 0x10c5, - 0x10d0, 0x10fc, - 0x1100, 0x1159, - 0x115f, 0x11a2, - 0x11a8, 0x11f9, - 0x1200, 0x1248, - 0x124a, 0x124d, - 0x1250, 0x1256, - 0x1258, 0x1258, - 0x125a, 0x125d, - 0x1260, 0x1288, - 0x128a, 0x128d, - 0x1290, 0x12b0, - 0x12b2, 0x12b5, - 0x12b8, 0x12be, - 0x12c0, 0x12c0, - 0x12c2, 0x12c5, - 0x12c8, 0x12d6, - 0x12d8, 0x1310, - 0x1312, 0x1315, - 0x1318, 0x135a, - 0x135f, 0x137c, - 0x1380, 0x1399, - 0x13a0, 0x13f4, - 0x1401, 0x1676, - 0x1680, 0x169c, - 0x16a0, 0x16f0, - 0x1700, 0x170c, - 0x170e, 0x1714, - 0x1720, 0x1736, - 0x1740, 0x1753, - 0x1760, 0x176c, - 0x176e, 0x1770, - 0x1772, 0x1773, - 0x1780, 0x17dd, - 0x17e0, 0x17e9, - 0x17f0, 0x17f9, - 0x1800, 0x180e, - 0x1810, 0x1819, - 0x1820, 0x1877, - 0x1880, 0x18a9, - 0x1900, 0x191c, - 0x1920, 0x192b, - 0x1930, 0x193b, - 0x1940, 0x1940, - 0x1944, 0x196d, - 0x1970, 0x1974, - 0x1980, 0x19a9, - 0x19b0, 0x19c9, - 0x19d0, 0x19d9, - 0x19de, 0x1a1b, - 0x1a1e, 0x1a1f, - 0x1b00, 0x1b4b, - 0x1b50, 0x1b7c, - 0x1d00, 0x1dca, - 0x1dfe, 0x1e9b, - 0x1ea0, 0x1ef9, - 0x1f00, 0x1f15, - 0x1f18, 0x1f1d, - 0x1f20, 0x1f45, - 0x1f48, 0x1f4d, - 0x1f50, 0x1f57, - 0x1f59, 0x1f59, - 0x1f5b, 0x1f5b, - 0x1f5d, 0x1f5d, - 0x1f5f, 0x1f7d, - 0x1f80, 0x1fb4, - 0x1fb6, 0x1fc4, - 0x1fc6, 0x1fd3, - 0x1fd6, 0x1fdb, - 0x1fdd, 0x1fef, - 0x1ff2, 0x1ff4, - 0x1ff6, 0x1ffe, - 0x2000, 0x2063, - 0x206a, 0x2071, - 0x2074, 0x208e, - 0x2090, 0x2094, - 0x20a0, 0x20b5, - 0x20d0, 0x20ef, - 0x2100, 0x214e, - 0x2153, 0x2184, - 0x2190, 0x23e7, - 0x2400, 0x2426, - 0x2440, 0x244a, - 0x2460, 0x269c, - 0x26a0, 0x26b2, - 0x2701, 0x2704, - 0x2706, 0x2709, - 0x270c, 0x2727, - 0x2729, 0x274b, - 0x274d, 0x274d, - 0x274f, 0x2752, - 0x2756, 0x2756, - 0x2758, 0x275e, - 0x2761, 0x2794, - 0x2798, 0x27af, - 0x27b1, 0x27be, - 0x27c0, 0x27ca, - 0x27d0, 0x27eb, - 0x27f0, 0x2b1a, - 0x2b20, 0x2b23, - 0x2c00, 0x2c2e, - 0x2c30, 0x2c5e, - 0x2c60, 0x2c6c, - 0x2c74, 0x2c77, - 0x2c80, 0x2cea, - 0x2cf9, 0x2d25, - 0x2d30, 0x2d65, - 0x2d6f, 0x2d6f, - 0x2d80, 0x2d96, - 0x2da0, 0x2da6, - 0x2da8, 0x2dae, - 0x2db0, 0x2db6, - 0x2db8, 0x2dbe, - 0x2dc0, 0x2dc6, - 0x2dc8, 0x2dce, - 0x2dd0, 0x2dd6, - 0x2dd8, 0x2dde, - 0x2e00, 0x2e17, - 0x2e1c, 0x2e1d, - 0x2e80, 0x2e99, - 0x2e9b, 0x2ef3, - 0x2f00, 0x2fd5, - 0x2ff0, 0x2ffb, - 0x3000, 0x303f, - 0x3041, 0x3096, - 0x3099, 0x30ff, - 0x3105, 0x312c, - 0x3131, 0x318e, - 0x3190, 0x31b7, - 0x31c0, 0x31cf, - 0x31f0, 0x321e, - 0x3220, 0x3243, - 0x3250, 0x32fe, - 0x3300, 0x4db5, - 0x4dc0, 0x9fbb, - 0xa000, 0xa48c, - 0xa490, 0xa4c6, - 0xa700, 0xa71a, - 0xa720, 0xa721, - 0xa800, 0xa82b, - 0xa840, 0xa877, - 0xac00, 0xd7a3, - 0xd800, 0xfa2d, - 0xfa30, 0xfa6a, - 0xfa70, 0xfad9, - 0xfb00, 0xfb06, - 0xfb13, 0xfb17, - 0xfb1d, 0xfb36, - 0xfb38, 0xfb3c, - 0xfb3e, 0xfb3e, - 0xfb40, 0xfb41, - 0xfb43, 0xfb44, - 0xfb46, 0xfbb1, - 0xfbd3, 0xfd3f, - 0xfd50, 0xfd8f, - 0xfd92, 0xfdc7, - 0xfdd0, 0xfdfd, - 0xfe00, 0xfe19, - 0xfe20, 0xfe23, - 0xfe30, 0xfe52, - 0xfe54, 0xfe66, - 0xfe68, 0xfe6b, - 0xfe70, 0xfe74, - 0xfe76, 0xfefc, - 0xfeff, 0xfeff, - 0xff01, 0xffbe, - 0xffc2, 0xffc7, - 0xffca, 0xffcf, - 0xffd2, 0xffd7, - 0xffda, 0xffdc, - 0xffe0, 0xffe6, - 0xffe8, 0xffee, - 0xfff9, 0x1000b, - 0x1000d, 0x10026, - 0x10028, 0x1003a, - 0x1003c, 0x1003d, - 0x1003f, 0x1004d, - 0x10050, 0x1005d, - 0x10080, 0x100fa, - 0x10100, 0x10102, - 0x10107, 0x10133, - 0x10137, 0x1018a, - 0x10300, 0x1031e, - 0x10320, 0x10323, - 0x10330, 0x1034a, - 0x10380, 0x1039d, - 0x1039f, 0x103c3, - 0x103c8, 0x103d5, - 0x10400, 0x1049d, - 0x104a0, 0x104a9, - 0x10800, 0x10805, - 0x10808, 0x10808, - 0x1080a, 0x10835, - 0x10837, 0x10838, - 0x1083c, 0x1083c, - 0x1083f, 0x1083f, - 0x10900, 0x10919, - 0x1091f, 0x1091f, - 0x10a00, 0x10a03, - 0x10a05, 0x10a06, - 0x10a0c, 0x10a13, - 0x10a15, 0x10a17, - 0x10a19, 0x10a33, - 0x10a38, 0x10a3a, - 0x10a3f, 0x10a47, - 0x10a50, 0x10a58, - 0x12000, 0x1236e, - 0x12400, 0x12462, - 0x12470, 0x12473, - 0x1d000, 0x1d0f5, - 0x1d100, 0x1d126, - 0x1d12a, 0x1d1dd, - 0x1d200, 0x1d245, - 0x1d300, 0x1d356, - 0x1d360, 0x1d371, - 0x1d400, 0x1d454, - 0x1d456, 0x1d49c, - 0x1d49e, 0x1d49f, - 0x1d4a2, 0x1d4a2, - 0x1d4a5, 0x1d4a6, - 0x1d4a9, 0x1d4ac, - 0x1d4ae, 0x1d4b9, - 0x1d4bb, 0x1d4bb, - 0x1d4bd, 0x1d4c3, - 0x1d4c5, 0x1d505, - 0x1d507, 0x1d50a, - 0x1d50d, 0x1d514, - 0x1d516, 0x1d51c, - 0x1d51e, 0x1d539, - 0x1d53b, 0x1d53e, - 0x1d540, 0x1d544, - 0x1d546, 0x1d546, - 0x1d54a, 0x1d550, - 0x1d552, 0x1d6a5, - 0x1d6a8, 0x1d7cb, - 0x1d7ce, 0x1d7ff, - 0x1fffe, 0x2a6d6, - 0x2f800, 0x2fa1d, - 0x2fffe, 0x2ffff, - 0x3fffe, 0x3ffff, - 0x4fffe, 0x4ffff, - 0x5fffe, 0x5ffff, - 0x6fffe, 0x6ffff, - 0x7fffe, 0x7ffff, - 0x8fffe, 0x8ffff, - 0x9fffe, 0x9ffff, - 0xafffe, 0xaffff, - 0xbfffe, 0xbffff, - 0xcfffe, 0xcffff, - 0xdfffe, 0xdffff, - 0xe0001, 0xe0001, - 0xe0020, 0xe007f, - 0xe0100, 0xe01ef, - 0xefffe, 0x10ffff, -}; /* CR_Age_5_0 */ - -/* 'Age_5_1': Derived Age 5.1 */ -static const OnigCodePoint CR_Age_5_1[] = { - 455, - 0x0000, 0x0377, - 0x037a, 0x037e, - 0x0384, 0x038a, - 0x038c, 0x038c, - 0x038e, 0x03a1, - 0x03a3, 0x0523, - 0x0531, 0x0556, - 0x0559, 0x055f, - 0x0561, 0x0587, - 0x0589, 0x058a, - 0x0591, 0x05c7, - 0x05d0, 0x05ea, - 0x05f0, 0x05f4, - 0x0600, 0x0603, - 0x0606, 0x061b, - 0x061e, 0x061f, - 0x0621, 0x065e, - 0x0660, 0x070d, - 0x070f, 0x074a, - 0x074d, 0x07b1, - 0x07c0, 0x07fa, - 0x0901, 0x0939, - 0x093c, 0x094d, - 0x0950, 0x0954, - 0x0958, 0x0972, - 0x097b, 0x097f, - 0x0981, 0x0983, - 0x0985, 0x098c, - 0x098f, 0x0990, - 0x0993, 0x09a8, - 0x09aa, 0x09b0, - 0x09b2, 0x09b2, - 0x09b6, 0x09b9, - 0x09bc, 0x09c4, - 0x09c7, 0x09c8, - 0x09cb, 0x09ce, - 0x09d7, 0x09d7, - 0x09dc, 0x09dd, - 0x09df, 0x09e3, - 0x09e6, 0x09fa, - 0x0a01, 0x0a03, - 0x0a05, 0x0a0a, - 0x0a0f, 0x0a10, - 0x0a13, 0x0a28, - 0x0a2a, 0x0a30, - 0x0a32, 0x0a33, - 0x0a35, 0x0a36, - 0x0a38, 0x0a39, - 0x0a3c, 0x0a3c, - 0x0a3e, 0x0a42, - 0x0a47, 0x0a48, - 0x0a4b, 0x0a4d, - 0x0a51, 0x0a51, - 0x0a59, 0x0a5c, - 0x0a5e, 0x0a5e, - 0x0a66, 0x0a75, - 0x0a81, 0x0a83, - 0x0a85, 0x0a8d, - 0x0a8f, 0x0a91, - 0x0a93, 0x0aa8, - 0x0aaa, 0x0ab0, - 0x0ab2, 0x0ab3, - 0x0ab5, 0x0ab9, - 0x0abc, 0x0ac5, - 0x0ac7, 0x0ac9, - 0x0acb, 0x0acd, - 0x0ad0, 0x0ad0, - 0x0ae0, 0x0ae3, - 0x0ae6, 0x0aef, - 0x0af1, 0x0af1, - 0x0b01, 0x0b03, - 0x0b05, 0x0b0c, - 0x0b0f, 0x0b10, - 0x0b13, 0x0b28, - 0x0b2a, 0x0b30, - 0x0b32, 0x0b33, - 0x0b35, 0x0b39, - 0x0b3c, 0x0b44, - 0x0b47, 0x0b48, - 0x0b4b, 0x0b4d, - 0x0b56, 0x0b57, - 0x0b5c, 0x0b5d, - 0x0b5f, 0x0b63, - 0x0b66, 0x0b71, - 0x0b82, 0x0b83, - 0x0b85, 0x0b8a, - 0x0b8e, 0x0b90, - 0x0b92, 0x0b95, - 0x0b99, 0x0b9a, - 0x0b9c, 0x0b9c, - 0x0b9e, 0x0b9f, - 0x0ba3, 0x0ba4, - 0x0ba8, 0x0baa, - 0x0bae, 0x0bb9, - 0x0bbe, 0x0bc2, - 0x0bc6, 0x0bc8, - 0x0bca, 0x0bcd, - 0x0bd0, 0x0bd0, - 0x0bd7, 0x0bd7, - 0x0be6, 0x0bfa, - 0x0c01, 0x0c03, - 0x0c05, 0x0c0c, - 0x0c0e, 0x0c10, - 0x0c12, 0x0c28, - 0x0c2a, 0x0c33, - 0x0c35, 0x0c39, - 0x0c3d, 0x0c44, - 0x0c46, 0x0c48, - 0x0c4a, 0x0c4d, - 0x0c55, 0x0c56, - 0x0c58, 0x0c59, - 0x0c60, 0x0c63, - 0x0c66, 0x0c6f, - 0x0c78, 0x0c7f, - 0x0c82, 0x0c83, - 0x0c85, 0x0c8c, - 0x0c8e, 0x0c90, - 0x0c92, 0x0ca8, - 0x0caa, 0x0cb3, - 0x0cb5, 0x0cb9, - 0x0cbc, 0x0cc4, - 0x0cc6, 0x0cc8, - 0x0cca, 0x0ccd, - 0x0cd5, 0x0cd6, - 0x0cde, 0x0cde, - 0x0ce0, 0x0ce3, - 0x0ce6, 0x0cef, - 0x0cf1, 0x0cf2, - 0x0d02, 0x0d03, - 0x0d05, 0x0d0c, - 0x0d0e, 0x0d10, - 0x0d12, 0x0d28, - 0x0d2a, 0x0d39, - 0x0d3d, 0x0d44, - 0x0d46, 0x0d48, - 0x0d4a, 0x0d4d, - 0x0d57, 0x0d57, - 0x0d60, 0x0d63, - 0x0d66, 0x0d75, - 0x0d79, 0x0d7f, - 0x0d82, 0x0d83, - 0x0d85, 0x0d96, - 0x0d9a, 0x0db1, - 0x0db3, 0x0dbb, - 0x0dbd, 0x0dbd, - 0x0dc0, 0x0dc6, - 0x0dca, 0x0dca, - 0x0dcf, 0x0dd4, - 0x0dd6, 0x0dd6, - 0x0dd8, 0x0ddf, - 0x0df2, 0x0df4, - 0x0e01, 0x0e3a, - 0x0e3f, 0x0e5b, - 0x0e81, 0x0e82, - 0x0e84, 0x0e84, - 0x0e87, 0x0e88, - 0x0e8a, 0x0e8a, - 0x0e8d, 0x0e8d, - 0x0e94, 0x0e97, - 0x0e99, 0x0e9f, - 0x0ea1, 0x0ea3, - 0x0ea5, 0x0ea5, - 0x0ea7, 0x0ea7, - 0x0eaa, 0x0eab, - 0x0ead, 0x0eb9, - 0x0ebb, 0x0ebd, - 0x0ec0, 0x0ec4, - 0x0ec6, 0x0ec6, - 0x0ec8, 0x0ecd, - 0x0ed0, 0x0ed9, - 0x0edc, 0x0edd, - 0x0f00, 0x0f47, - 0x0f49, 0x0f6c, - 0x0f71, 0x0f8b, - 0x0f90, 0x0f97, - 0x0f99, 0x0fbc, - 0x0fbe, 0x0fcc, - 0x0fce, 0x0fd4, - 0x1000, 0x1099, - 0x109e, 0x10c5, - 0x10d0, 0x10fc, - 0x1100, 0x1159, - 0x115f, 0x11a2, - 0x11a8, 0x11f9, - 0x1200, 0x1248, - 0x124a, 0x124d, - 0x1250, 0x1256, - 0x1258, 0x1258, - 0x125a, 0x125d, - 0x1260, 0x1288, - 0x128a, 0x128d, - 0x1290, 0x12b0, - 0x12b2, 0x12b5, - 0x12b8, 0x12be, - 0x12c0, 0x12c0, - 0x12c2, 0x12c5, - 0x12c8, 0x12d6, - 0x12d8, 0x1310, - 0x1312, 0x1315, - 0x1318, 0x135a, - 0x135f, 0x137c, - 0x1380, 0x1399, - 0x13a0, 0x13f4, - 0x1401, 0x1676, - 0x1680, 0x169c, - 0x16a0, 0x16f0, - 0x1700, 0x170c, - 0x170e, 0x1714, - 0x1720, 0x1736, - 0x1740, 0x1753, - 0x1760, 0x176c, - 0x176e, 0x1770, - 0x1772, 0x1773, - 0x1780, 0x17dd, - 0x17e0, 0x17e9, - 0x17f0, 0x17f9, - 0x1800, 0x180e, - 0x1810, 0x1819, - 0x1820, 0x1877, - 0x1880, 0x18aa, - 0x1900, 0x191c, - 0x1920, 0x192b, - 0x1930, 0x193b, - 0x1940, 0x1940, - 0x1944, 0x196d, - 0x1970, 0x1974, - 0x1980, 0x19a9, - 0x19b0, 0x19c9, - 0x19d0, 0x19d9, - 0x19de, 0x1a1b, - 0x1a1e, 0x1a1f, - 0x1b00, 0x1b4b, - 0x1b50, 0x1b7c, - 0x1b80, 0x1baa, - 0x1bae, 0x1bb9, - 0x1c00, 0x1c37, - 0x1c3b, 0x1c49, - 0x1c4d, 0x1c7f, - 0x1d00, 0x1de6, - 0x1dfe, 0x1f15, - 0x1f18, 0x1f1d, - 0x1f20, 0x1f45, - 0x1f48, 0x1f4d, - 0x1f50, 0x1f57, - 0x1f59, 0x1f59, - 0x1f5b, 0x1f5b, - 0x1f5d, 0x1f5d, - 0x1f5f, 0x1f7d, - 0x1f80, 0x1fb4, - 0x1fb6, 0x1fc4, - 0x1fc6, 0x1fd3, - 0x1fd6, 0x1fdb, - 0x1fdd, 0x1fef, - 0x1ff2, 0x1ff4, - 0x1ff6, 0x1ffe, - 0x2000, 0x2064, - 0x206a, 0x2071, - 0x2074, 0x208e, - 0x2090, 0x2094, - 0x20a0, 0x20b5, - 0x20d0, 0x20f0, - 0x2100, 0x214f, - 0x2153, 0x2188, - 0x2190, 0x23e7, - 0x2400, 0x2426, - 0x2440, 0x244a, - 0x2460, 0x269d, - 0x26a0, 0x26bc, - 0x26c0, 0x26c3, - 0x2701, 0x2704, - 0x2706, 0x2709, - 0x270c, 0x2727, - 0x2729, 0x274b, - 0x274d, 0x274d, - 0x274f, 0x2752, - 0x2756, 0x2756, - 0x2758, 0x275e, - 0x2761, 0x2794, - 0x2798, 0x27af, - 0x27b1, 0x27be, - 0x27c0, 0x27ca, - 0x27cc, 0x27cc, - 0x27d0, 0x2b4c, - 0x2b50, 0x2b54, - 0x2c00, 0x2c2e, - 0x2c30, 0x2c5e, - 0x2c60, 0x2c6f, - 0x2c71, 0x2c7d, - 0x2c80, 0x2cea, - 0x2cf9, 0x2d25, - 0x2d30, 0x2d65, - 0x2d6f, 0x2d6f, - 0x2d80, 0x2d96, - 0x2da0, 0x2da6, - 0x2da8, 0x2dae, - 0x2db0, 0x2db6, - 0x2db8, 0x2dbe, - 0x2dc0, 0x2dc6, - 0x2dc8, 0x2dce, - 0x2dd0, 0x2dd6, - 0x2dd8, 0x2dde, - 0x2de0, 0x2e30, - 0x2e80, 0x2e99, - 0x2e9b, 0x2ef3, - 0x2f00, 0x2fd5, - 0x2ff0, 0x2ffb, - 0x3000, 0x303f, - 0x3041, 0x3096, - 0x3099, 0x30ff, - 0x3105, 0x312d, - 0x3131, 0x318e, - 0x3190, 0x31b7, - 0x31c0, 0x31e3, - 0x31f0, 0x321e, - 0x3220, 0x3243, - 0x3250, 0x32fe, - 0x3300, 0x4db5, - 0x4dc0, 0x9fc3, - 0xa000, 0xa48c, - 0xa490, 0xa4c6, - 0xa500, 0xa62b, - 0xa640, 0xa65f, - 0xa662, 0xa673, - 0xa67c, 0xa697, - 0xa700, 0xa78c, - 0xa7fb, 0xa82b, - 0xa840, 0xa877, - 0xa880, 0xa8c4, - 0xa8ce, 0xa8d9, - 0xa900, 0xa953, - 0xa95f, 0xa95f, - 0xaa00, 0xaa36, - 0xaa40, 0xaa4d, - 0xaa50, 0xaa59, - 0xaa5c, 0xaa5f, - 0xac00, 0xd7a3, - 0xd800, 0xfa2d, - 0xfa30, 0xfa6a, - 0xfa70, 0xfad9, - 0xfb00, 0xfb06, - 0xfb13, 0xfb17, - 0xfb1d, 0xfb36, - 0xfb38, 0xfb3c, - 0xfb3e, 0xfb3e, - 0xfb40, 0xfb41, - 0xfb43, 0xfb44, - 0xfb46, 0xfbb1, - 0xfbd3, 0xfd3f, - 0xfd50, 0xfd8f, - 0xfd92, 0xfdc7, - 0xfdd0, 0xfdfd, - 0xfe00, 0xfe19, - 0xfe20, 0xfe26, - 0xfe30, 0xfe52, - 0xfe54, 0xfe66, - 0xfe68, 0xfe6b, - 0xfe70, 0xfe74, - 0xfe76, 0xfefc, - 0xfeff, 0xfeff, - 0xff01, 0xffbe, - 0xffc2, 0xffc7, - 0xffca, 0xffcf, - 0xffd2, 0xffd7, - 0xffda, 0xffdc, - 0xffe0, 0xffe6, - 0xffe8, 0xffee, - 0xfff9, 0x1000b, - 0x1000d, 0x10026, - 0x10028, 0x1003a, - 0x1003c, 0x1003d, - 0x1003f, 0x1004d, - 0x10050, 0x1005d, - 0x10080, 0x100fa, - 0x10100, 0x10102, - 0x10107, 0x10133, - 0x10137, 0x1018a, - 0x10190, 0x1019b, - 0x101d0, 0x101fd, - 0x10280, 0x1029c, - 0x102a0, 0x102d0, - 0x10300, 0x1031e, - 0x10320, 0x10323, - 0x10330, 0x1034a, - 0x10380, 0x1039d, - 0x1039f, 0x103c3, - 0x103c8, 0x103d5, - 0x10400, 0x1049d, - 0x104a0, 0x104a9, - 0x10800, 0x10805, - 0x10808, 0x10808, - 0x1080a, 0x10835, - 0x10837, 0x10838, - 0x1083c, 0x1083c, - 0x1083f, 0x1083f, - 0x10900, 0x10919, - 0x1091f, 0x10939, - 0x1093f, 0x1093f, - 0x10a00, 0x10a03, - 0x10a05, 0x10a06, - 0x10a0c, 0x10a13, - 0x10a15, 0x10a17, - 0x10a19, 0x10a33, - 0x10a38, 0x10a3a, - 0x10a3f, 0x10a47, - 0x10a50, 0x10a58, - 0x12000, 0x1236e, - 0x12400, 0x12462, - 0x12470, 0x12473, - 0x1d000, 0x1d0f5, - 0x1d100, 0x1d126, - 0x1d129, 0x1d1dd, - 0x1d200, 0x1d245, - 0x1d300, 0x1d356, - 0x1d360, 0x1d371, - 0x1d400, 0x1d454, - 0x1d456, 0x1d49c, - 0x1d49e, 0x1d49f, - 0x1d4a2, 0x1d4a2, - 0x1d4a5, 0x1d4a6, - 0x1d4a9, 0x1d4ac, - 0x1d4ae, 0x1d4b9, - 0x1d4bb, 0x1d4bb, - 0x1d4bd, 0x1d4c3, - 0x1d4c5, 0x1d505, - 0x1d507, 0x1d50a, - 0x1d50d, 0x1d514, - 0x1d516, 0x1d51c, - 0x1d51e, 0x1d539, - 0x1d53b, 0x1d53e, - 0x1d540, 0x1d544, - 0x1d546, 0x1d546, - 0x1d54a, 0x1d550, - 0x1d552, 0x1d6a5, - 0x1d6a8, 0x1d7cb, - 0x1d7ce, 0x1d7ff, - 0x1f000, 0x1f02b, - 0x1f030, 0x1f093, - 0x1fffe, 0x2a6d6, - 0x2f800, 0x2fa1d, - 0x2fffe, 0x2ffff, - 0x3fffe, 0x3ffff, - 0x4fffe, 0x4ffff, - 0x5fffe, 0x5ffff, - 0x6fffe, 0x6ffff, - 0x7fffe, 0x7ffff, - 0x8fffe, 0x8ffff, - 0x9fffe, 0x9ffff, - 0xafffe, 0xaffff, - 0xbfffe, 0xbffff, - 0xcfffe, 0xcffff, - 0xdfffe, 0xdffff, - 0xe0001, 0xe0001, - 0xe0020, 0xe007f, - 0xe0100, 0xe01ef, - 0xefffe, 0x10ffff, -}; /* CR_Age_5_1 */ - -/* 'Age_5_2': Derived Age 5.2 */ -static const OnigCodePoint CR_Age_5_2[] = { - 495, - 0x0000, 0x0377, - 0x037a, 0x037e, - 0x0384, 0x038a, - 0x038c, 0x038c, - 0x038e, 0x03a1, - 0x03a3, 0x0525, - 0x0531, 0x0556, - 0x0559, 0x055f, - 0x0561, 0x0587, - 0x0589, 0x058a, - 0x0591, 0x05c7, - 0x05d0, 0x05ea, - 0x05f0, 0x05f4, - 0x0600, 0x0603, - 0x0606, 0x061b, - 0x061e, 0x061f, - 0x0621, 0x065e, - 0x0660, 0x070d, - 0x070f, 0x074a, - 0x074d, 0x07b1, - 0x07c0, 0x07fa, - 0x0800, 0x082d, - 0x0830, 0x083e, - 0x0900, 0x0939, - 0x093c, 0x094e, - 0x0950, 0x0955, - 0x0958, 0x0972, - 0x0979, 0x097f, - 0x0981, 0x0983, - 0x0985, 0x098c, - 0x098f, 0x0990, - 0x0993, 0x09a8, - 0x09aa, 0x09b0, - 0x09b2, 0x09b2, - 0x09b6, 0x09b9, - 0x09bc, 0x09c4, - 0x09c7, 0x09c8, - 0x09cb, 0x09ce, - 0x09d7, 0x09d7, - 0x09dc, 0x09dd, - 0x09df, 0x09e3, - 0x09e6, 0x09fb, - 0x0a01, 0x0a03, - 0x0a05, 0x0a0a, - 0x0a0f, 0x0a10, - 0x0a13, 0x0a28, - 0x0a2a, 0x0a30, - 0x0a32, 0x0a33, - 0x0a35, 0x0a36, - 0x0a38, 0x0a39, - 0x0a3c, 0x0a3c, - 0x0a3e, 0x0a42, - 0x0a47, 0x0a48, - 0x0a4b, 0x0a4d, - 0x0a51, 0x0a51, - 0x0a59, 0x0a5c, - 0x0a5e, 0x0a5e, - 0x0a66, 0x0a75, - 0x0a81, 0x0a83, - 0x0a85, 0x0a8d, - 0x0a8f, 0x0a91, - 0x0a93, 0x0aa8, - 0x0aaa, 0x0ab0, - 0x0ab2, 0x0ab3, - 0x0ab5, 0x0ab9, - 0x0abc, 0x0ac5, - 0x0ac7, 0x0ac9, - 0x0acb, 0x0acd, - 0x0ad0, 0x0ad0, - 0x0ae0, 0x0ae3, - 0x0ae6, 0x0aef, - 0x0af1, 0x0af1, - 0x0b01, 0x0b03, - 0x0b05, 0x0b0c, - 0x0b0f, 0x0b10, - 0x0b13, 0x0b28, - 0x0b2a, 0x0b30, - 0x0b32, 0x0b33, - 0x0b35, 0x0b39, - 0x0b3c, 0x0b44, - 0x0b47, 0x0b48, - 0x0b4b, 0x0b4d, - 0x0b56, 0x0b57, - 0x0b5c, 0x0b5d, - 0x0b5f, 0x0b63, - 0x0b66, 0x0b71, - 0x0b82, 0x0b83, - 0x0b85, 0x0b8a, - 0x0b8e, 0x0b90, - 0x0b92, 0x0b95, - 0x0b99, 0x0b9a, - 0x0b9c, 0x0b9c, - 0x0b9e, 0x0b9f, - 0x0ba3, 0x0ba4, - 0x0ba8, 0x0baa, - 0x0bae, 0x0bb9, - 0x0bbe, 0x0bc2, - 0x0bc6, 0x0bc8, - 0x0bca, 0x0bcd, - 0x0bd0, 0x0bd0, - 0x0bd7, 0x0bd7, - 0x0be6, 0x0bfa, - 0x0c01, 0x0c03, - 0x0c05, 0x0c0c, - 0x0c0e, 0x0c10, - 0x0c12, 0x0c28, - 0x0c2a, 0x0c33, - 0x0c35, 0x0c39, - 0x0c3d, 0x0c44, - 0x0c46, 0x0c48, - 0x0c4a, 0x0c4d, - 0x0c55, 0x0c56, - 0x0c58, 0x0c59, - 0x0c60, 0x0c63, - 0x0c66, 0x0c6f, - 0x0c78, 0x0c7f, - 0x0c82, 0x0c83, - 0x0c85, 0x0c8c, - 0x0c8e, 0x0c90, - 0x0c92, 0x0ca8, - 0x0caa, 0x0cb3, - 0x0cb5, 0x0cb9, - 0x0cbc, 0x0cc4, - 0x0cc6, 0x0cc8, - 0x0cca, 0x0ccd, - 0x0cd5, 0x0cd6, - 0x0cde, 0x0cde, - 0x0ce0, 0x0ce3, - 0x0ce6, 0x0cef, - 0x0cf1, 0x0cf2, - 0x0d02, 0x0d03, - 0x0d05, 0x0d0c, - 0x0d0e, 0x0d10, - 0x0d12, 0x0d28, - 0x0d2a, 0x0d39, - 0x0d3d, 0x0d44, - 0x0d46, 0x0d48, - 0x0d4a, 0x0d4d, - 0x0d57, 0x0d57, - 0x0d60, 0x0d63, - 0x0d66, 0x0d75, - 0x0d79, 0x0d7f, - 0x0d82, 0x0d83, - 0x0d85, 0x0d96, - 0x0d9a, 0x0db1, - 0x0db3, 0x0dbb, - 0x0dbd, 0x0dbd, - 0x0dc0, 0x0dc6, - 0x0dca, 0x0dca, - 0x0dcf, 0x0dd4, - 0x0dd6, 0x0dd6, - 0x0dd8, 0x0ddf, - 0x0df2, 0x0df4, - 0x0e01, 0x0e3a, - 0x0e3f, 0x0e5b, - 0x0e81, 0x0e82, - 0x0e84, 0x0e84, - 0x0e87, 0x0e88, - 0x0e8a, 0x0e8a, - 0x0e8d, 0x0e8d, - 0x0e94, 0x0e97, - 0x0e99, 0x0e9f, - 0x0ea1, 0x0ea3, - 0x0ea5, 0x0ea5, - 0x0ea7, 0x0ea7, - 0x0eaa, 0x0eab, - 0x0ead, 0x0eb9, - 0x0ebb, 0x0ebd, - 0x0ec0, 0x0ec4, - 0x0ec6, 0x0ec6, - 0x0ec8, 0x0ecd, - 0x0ed0, 0x0ed9, - 0x0edc, 0x0edd, - 0x0f00, 0x0f47, - 0x0f49, 0x0f6c, - 0x0f71, 0x0f8b, - 0x0f90, 0x0f97, - 0x0f99, 0x0fbc, - 0x0fbe, 0x0fcc, - 0x0fce, 0x0fd8, - 0x1000, 0x10c5, - 0x10d0, 0x10fc, - 0x1100, 0x1248, - 0x124a, 0x124d, - 0x1250, 0x1256, - 0x1258, 0x1258, - 0x125a, 0x125d, - 0x1260, 0x1288, - 0x128a, 0x128d, - 0x1290, 0x12b0, - 0x12b2, 0x12b5, - 0x12b8, 0x12be, - 0x12c0, 0x12c0, - 0x12c2, 0x12c5, - 0x12c8, 0x12d6, - 0x12d8, 0x1310, - 0x1312, 0x1315, - 0x1318, 0x135a, - 0x135f, 0x137c, - 0x1380, 0x1399, - 0x13a0, 0x13f4, - 0x1400, 0x169c, - 0x16a0, 0x16f0, - 0x1700, 0x170c, - 0x170e, 0x1714, - 0x1720, 0x1736, - 0x1740, 0x1753, - 0x1760, 0x176c, - 0x176e, 0x1770, - 0x1772, 0x1773, - 0x1780, 0x17dd, - 0x17e0, 0x17e9, - 0x17f0, 0x17f9, - 0x1800, 0x180e, - 0x1810, 0x1819, - 0x1820, 0x1877, - 0x1880, 0x18aa, - 0x18b0, 0x18f5, - 0x1900, 0x191c, - 0x1920, 0x192b, - 0x1930, 0x193b, - 0x1940, 0x1940, - 0x1944, 0x196d, - 0x1970, 0x1974, - 0x1980, 0x19ab, - 0x19b0, 0x19c9, - 0x19d0, 0x19da, - 0x19de, 0x1a1b, - 0x1a1e, 0x1a5e, - 0x1a60, 0x1a7c, - 0x1a7f, 0x1a89, - 0x1a90, 0x1a99, - 0x1aa0, 0x1aad, - 0x1b00, 0x1b4b, - 0x1b50, 0x1b7c, - 0x1b80, 0x1baa, - 0x1bae, 0x1bb9, - 0x1c00, 0x1c37, - 0x1c3b, 0x1c49, - 0x1c4d, 0x1c7f, - 0x1cd0, 0x1cf2, - 0x1d00, 0x1de6, - 0x1dfd, 0x1f15, - 0x1f18, 0x1f1d, - 0x1f20, 0x1f45, - 0x1f48, 0x1f4d, - 0x1f50, 0x1f57, - 0x1f59, 0x1f59, - 0x1f5b, 0x1f5b, - 0x1f5d, 0x1f5d, - 0x1f5f, 0x1f7d, - 0x1f80, 0x1fb4, - 0x1fb6, 0x1fc4, - 0x1fc6, 0x1fd3, - 0x1fd6, 0x1fdb, - 0x1fdd, 0x1fef, - 0x1ff2, 0x1ff4, - 0x1ff6, 0x1ffe, - 0x2000, 0x2064, - 0x206a, 0x2071, - 0x2074, 0x208e, - 0x2090, 0x2094, - 0x20a0, 0x20b8, - 0x20d0, 0x20f0, - 0x2100, 0x2189, - 0x2190, 0x23e8, - 0x2400, 0x2426, - 0x2440, 0x244a, - 0x2460, 0x26cd, - 0x26cf, 0x26e1, - 0x26e3, 0x26e3, - 0x26e8, 0x26ff, - 0x2701, 0x2704, - 0x2706, 0x2709, - 0x270c, 0x2727, - 0x2729, 0x274b, - 0x274d, 0x274d, - 0x274f, 0x2752, - 0x2756, 0x275e, - 0x2761, 0x2794, - 0x2798, 0x27af, - 0x27b1, 0x27be, - 0x27c0, 0x27ca, - 0x27cc, 0x27cc, - 0x27d0, 0x2b4c, - 0x2b50, 0x2b59, - 0x2c00, 0x2c2e, - 0x2c30, 0x2c5e, - 0x2c60, 0x2cf1, - 0x2cf9, 0x2d25, - 0x2d30, 0x2d65, - 0x2d6f, 0x2d6f, - 0x2d80, 0x2d96, - 0x2da0, 0x2da6, - 0x2da8, 0x2dae, - 0x2db0, 0x2db6, - 0x2db8, 0x2dbe, - 0x2dc0, 0x2dc6, - 0x2dc8, 0x2dce, - 0x2dd0, 0x2dd6, - 0x2dd8, 0x2dde, - 0x2de0, 0x2e31, - 0x2e80, 0x2e99, - 0x2e9b, 0x2ef3, - 0x2f00, 0x2fd5, - 0x2ff0, 0x2ffb, - 0x3000, 0x303f, - 0x3041, 0x3096, - 0x3099, 0x30ff, - 0x3105, 0x312d, - 0x3131, 0x318e, - 0x3190, 0x31b7, - 0x31c0, 0x31e3, - 0x31f0, 0x321e, - 0x3220, 0x32fe, - 0x3300, 0x4db5, - 0x4dc0, 0x9fcb, - 0xa000, 0xa48c, - 0xa490, 0xa4c6, - 0xa4d0, 0xa62b, - 0xa640, 0xa65f, - 0xa662, 0xa673, - 0xa67c, 0xa697, - 0xa6a0, 0xa6f7, - 0xa700, 0xa78c, - 0xa7fb, 0xa82b, - 0xa830, 0xa839, - 0xa840, 0xa877, - 0xa880, 0xa8c4, - 0xa8ce, 0xa8d9, - 0xa8e0, 0xa8fb, - 0xa900, 0xa953, - 0xa95f, 0xa97c, - 0xa980, 0xa9cd, - 0xa9cf, 0xa9d9, - 0xa9de, 0xa9df, - 0xaa00, 0xaa36, - 0xaa40, 0xaa4d, - 0xaa50, 0xaa59, - 0xaa5c, 0xaa7b, - 0xaa80, 0xaac2, - 0xaadb, 0xaadf, - 0xabc0, 0xabed, - 0xabf0, 0xabf9, - 0xac00, 0xd7a3, - 0xd7b0, 0xd7c6, - 0xd7cb, 0xd7fb, - 0xd800, 0xfa2d, - 0xfa30, 0xfa6d, - 0xfa70, 0xfad9, - 0xfb00, 0xfb06, - 0xfb13, 0xfb17, - 0xfb1d, 0xfb36, - 0xfb38, 0xfb3c, - 0xfb3e, 0xfb3e, - 0xfb40, 0xfb41, - 0xfb43, 0xfb44, - 0xfb46, 0xfbb1, - 0xfbd3, 0xfd3f, - 0xfd50, 0xfd8f, - 0xfd92, 0xfdc7, - 0xfdd0, 0xfdfd, - 0xfe00, 0xfe19, - 0xfe20, 0xfe26, - 0xfe30, 0xfe52, - 0xfe54, 0xfe66, - 0xfe68, 0xfe6b, - 0xfe70, 0xfe74, - 0xfe76, 0xfefc, - 0xfeff, 0xfeff, - 0xff01, 0xffbe, - 0xffc2, 0xffc7, - 0xffca, 0xffcf, - 0xffd2, 0xffd7, - 0xffda, 0xffdc, - 0xffe0, 0xffe6, - 0xffe8, 0xffee, - 0xfff9, 0x1000b, - 0x1000d, 0x10026, - 0x10028, 0x1003a, - 0x1003c, 0x1003d, - 0x1003f, 0x1004d, - 0x10050, 0x1005d, - 0x10080, 0x100fa, - 0x10100, 0x10102, - 0x10107, 0x10133, - 0x10137, 0x1018a, - 0x10190, 0x1019b, - 0x101d0, 0x101fd, - 0x10280, 0x1029c, - 0x102a0, 0x102d0, - 0x10300, 0x1031e, - 0x10320, 0x10323, - 0x10330, 0x1034a, - 0x10380, 0x1039d, - 0x1039f, 0x103c3, - 0x103c8, 0x103d5, - 0x10400, 0x1049d, - 0x104a0, 0x104a9, - 0x10800, 0x10805, - 0x10808, 0x10808, - 0x1080a, 0x10835, - 0x10837, 0x10838, - 0x1083c, 0x1083c, - 0x1083f, 0x10855, - 0x10857, 0x1085f, - 0x10900, 0x1091b, - 0x1091f, 0x10939, - 0x1093f, 0x1093f, - 0x10a00, 0x10a03, - 0x10a05, 0x10a06, - 0x10a0c, 0x10a13, - 0x10a15, 0x10a17, - 0x10a19, 0x10a33, - 0x10a38, 0x10a3a, - 0x10a3f, 0x10a47, - 0x10a50, 0x10a58, - 0x10a60, 0x10a7f, - 0x10b00, 0x10b35, - 0x10b39, 0x10b55, - 0x10b58, 0x10b72, - 0x10b78, 0x10b7f, - 0x10c00, 0x10c48, - 0x10e60, 0x10e7e, - 0x11080, 0x110c1, - 0x12000, 0x1236e, - 0x12400, 0x12462, - 0x12470, 0x12473, - 0x13000, 0x1342e, - 0x1d000, 0x1d0f5, - 0x1d100, 0x1d126, - 0x1d129, 0x1d1dd, - 0x1d200, 0x1d245, - 0x1d300, 0x1d356, - 0x1d360, 0x1d371, - 0x1d400, 0x1d454, - 0x1d456, 0x1d49c, - 0x1d49e, 0x1d49f, - 0x1d4a2, 0x1d4a2, - 0x1d4a5, 0x1d4a6, - 0x1d4a9, 0x1d4ac, - 0x1d4ae, 0x1d4b9, - 0x1d4bb, 0x1d4bb, - 0x1d4bd, 0x1d4c3, - 0x1d4c5, 0x1d505, - 0x1d507, 0x1d50a, - 0x1d50d, 0x1d514, - 0x1d516, 0x1d51c, - 0x1d51e, 0x1d539, - 0x1d53b, 0x1d53e, - 0x1d540, 0x1d544, - 0x1d546, 0x1d546, - 0x1d54a, 0x1d550, - 0x1d552, 0x1d6a5, - 0x1d6a8, 0x1d7cb, - 0x1d7ce, 0x1d7ff, - 0x1f000, 0x1f02b, - 0x1f030, 0x1f093, - 0x1f100, 0x1f10a, - 0x1f110, 0x1f12e, - 0x1f131, 0x1f131, - 0x1f13d, 0x1f13d, - 0x1f13f, 0x1f13f, - 0x1f142, 0x1f142, - 0x1f146, 0x1f146, - 0x1f14a, 0x1f14e, - 0x1f157, 0x1f157, - 0x1f15f, 0x1f15f, - 0x1f179, 0x1f179, - 0x1f17b, 0x1f17c, - 0x1f17f, 0x1f17f, - 0x1f18a, 0x1f18d, - 0x1f190, 0x1f190, - 0x1f200, 0x1f200, - 0x1f210, 0x1f231, - 0x1f240, 0x1f248, - 0x1fffe, 0x2a6d6, - 0x2a700, 0x2b734, - 0x2f800, 0x2fa1d, - 0x2fffe, 0x2ffff, - 0x3fffe, 0x3ffff, - 0x4fffe, 0x4ffff, - 0x5fffe, 0x5ffff, - 0x6fffe, 0x6ffff, - 0x7fffe, 0x7ffff, - 0x8fffe, 0x8ffff, - 0x9fffe, 0x9ffff, - 0xafffe, 0xaffff, - 0xbfffe, 0xbffff, - 0xcfffe, 0xcffff, - 0xdfffe, 0xdffff, - 0xe0001, 0xe0001, - 0xe0020, 0xe007f, - 0xe0100, 0xe01ef, - 0xefffe, 0x10ffff, -}; /* CR_Age_5_2 */ - -/* 'Age_6_0': Derived Age 6.0 */ -static const OnigCodePoint CR_Age_6_0[] = { - 511, - 0x0000, 0x0377, - 0x037a, 0x037e, - 0x0384, 0x038a, - 0x038c, 0x038c, - 0x038e, 0x03a1, - 0x03a3, 0x0527, - 0x0531, 0x0556, - 0x0559, 0x055f, - 0x0561, 0x0587, - 0x0589, 0x058a, - 0x0591, 0x05c7, - 0x05d0, 0x05ea, - 0x05f0, 0x05f4, - 0x0600, 0x0603, - 0x0606, 0x061b, - 0x061e, 0x070d, - 0x070f, 0x074a, - 0x074d, 0x07b1, - 0x07c0, 0x07fa, - 0x0800, 0x082d, - 0x0830, 0x083e, - 0x0840, 0x085b, - 0x085e, 0x085e, - 0x0900, 0x0977, - 0x0979, 0x097f, - 0x0981, 0x0983, - 0x0985, 0x098c, - 0x098f, 0x0990, - 0x0993, 0x09a8, - 0x09aa, 0x09b0, - 0x09b2, 0x09b2, - 0x09b6, 0x09b9, - 0x09bc, 0x09c4, - 0x09c7, 0x09c8, - 0x09cb, 0x09ce, - 0x09d7, 0x09d7, - 0x09dc, 0x09dd, - 0x09df, 0x09e3, - 0x09e6, 0x09fb, - 0x0a01, 0x0a03, - 0x0a05, 0x0a0a, - 0x0a0f, 0x0a10, - 0x0a13, 0x0a28, - 0x0a2a, 0x0a30, - 0x0a32, 0x0a33, - 0x0a35, 0x0a36, - 0x0a38, 0x0a39, - 0x0a3c, 0x0a3c, - 0x0a3e, 0x0a42, - 0x0a47, 0x0a48, - 0x0a4b, 0x0a4d, - 0x0a51, 0x0a51, - 0x0a59, 0x0a5c, - 0x0a5e, 0x0a5e, - 0x0a66, 0x0a75, - 0x0a81, 0x0a83, - 0x0a85, 0x0a8d, - 0x0a8f, 0x0a91, - 0x0a93, 0x0aa8, - 0x0aaa, 0x0ab0, - 0x0ab2, 0x0ab3, - 0x0ab5, 0x0ab9, - 0x0abc, 0x0ac5, - 0x0ac7, 0x0ac9, - 0x0acb, 0x0acd, - 0x0ad0, 0x0ad0, - 0x0ae0, 0x0ae3, - 0x0ae6, 0x0aef, - 0x0af1, 0x0af1, - 0x0b01, 0x0b03, - 0x0b05, 0x0b0c, - 0x0b0f, 0x0b10, - 0x0b13, 0x0b28, - 0x0b2a, 0x0b30, - 0x0b32, 0x0b33, - 0x0b35, 0x0b39, - 0x0b3c, 0x0b44, - 0x0b47, 0x0b48, - 0x0b4b, 0x0b4d, - 0x0b56, 0x0b57, - 0x0b5c, 0x0b5d, - 0x0b5f, 0x0b63, - 0x0b66, 0x0b77, - 0x0b82, 0x0b83, - 0x0b85, 0x0b8a, - 0x0b8e, 0x0b90, - 0x0b92, 0x0b95, - 0x0b99, 0x0b9a, - 0x0b9c, 0x0b9c, - 0x0b9e, 0x0b9f, - 0x0ba3, 0x0ba4, - 0x0ba8, 0x0baa, - 0x0bae, 0x0bb9, - 0x0bbe, 0x0bc2, - 0x0bc6, 0x0bc8, - 0x0bca, 0x0bcd, - 0x0bd0, 0x0bd0, - 0x0bd7, 0x0bd7, - 0x0be6, 0x0bfa, - 0x0c01, 0x0c03, - 0x0c05, 0x0c0c, - 0x0c0e, 0x0c10, - 0x0c12, 0x0c28, - 0x0c2a, 0x0c33, - 0x0c35, 0x0c39, - 0x0c3d, 0x0c44, - 0x0c46, 0x0c48, - 0x0c4a, 0x0c4d, - 0x0c55, 0x0c56, - 0x0c58, 0x0c59, - 0x0c60, 0x0c63, - 0x0c66, 0x0c6f, - 0x0c78, 0x0c7f, - 0x0c82, 0x0c83, - 0x0c85, 0x0c8c, - 0x0c8e, 0x0c90, - 0x0c92, 0x0ca8, - 0x0caa, 0x0cb3, - 0x0cb5, 0x0cb9, - 0x0cbc, 0x0cc4, - 0x0cc6, 0x0cc8, - 0x0cca, 0x0ccd, - 0x0cd5, 0x0cd6, - 0x0cde, 0x0cde, - 0x0ce0, 0x0ce3, - 0x0ce6, 0x0cef, - 0x0cf1, 0x0cf2, - 0x0d02, 0x0d03, - 0x0d05, 0x0d0c, - 0x0d0e, 0x0d10, - 0x0d12, 0x0d3a, - 0x0d3d, 0x0d44, - 0x0d46, 0x0d48, - 0x0d4a, 0x0d4e, - 0x0d57, 0x0d57, - 0x0d60, 0x0d63, - 0x0d66, 0x0d75, - 0x0d79, 0x0d7f, - 0x0d82, 0x0d83, - 0x0d85, 0x0d96, - 0x0d9a, 0x0db1, - 0x0db3, 0x0dbb, - 0x0dbd, 0x0dbd, - 0x0dc0, 0x0dc6, - 0x0dca, 0x0dca, - 0x0dcf, 0x0dd4, - 0x0dd6, 0x0dd6, - 0x0dd8, 0x0ddf, - 0x0df2, 0x0df4, - 0x0e01, 0x0e3a, - 0x0e3f, 0x0e5b, - 0x0e81, 0x0e82, - 0x0e84, 0x0e84, - 0x0e87, 0x0e88, - 0x0e8a, 0x0e8a, - 0x0e8d, 0x0e8d, - 0x0e94, 0x0e97, - 0x0e99, 0x0e9f, - 0x0ea1, 0x0ea3, - 0x0ea5, 0x0ea5, - 0x0ea7, 0x0ea7, - 0x0eaa, 0x0eab, - 0x0ead, 0x0eb9, - 0x0ebb, 0x0ebd, - 0x0ec0, 0x0ec4, - 0x0ec6, 0x0ec6, - 0x0ec8, 0x0ecd, - 0x0ed0, 0x0ed9, - 0x0edc, 0x0edd, - 0x0f00, 0x0f47, - 0x0f49, 0x0f6c, - 0x0f71, 0x0f97, - 0x0f99, 0x0fbc, - 0x0fbe, 0x0fcc, - 0x0fce, 0x0fda, - 0x1000, 0x10c5, - 0x10d0, 0x10fc, - 0x1100, 0x1248, - 0x124a, 0x124d, - 0x1250, 0x1256, - 0x1258, 0x1258, - 0x125a, 0x125d, - 0x1260, 0x1288, - 0x128a, 0x128d, - 0x1290, 0x12b0, - 0x12b2, 0x12b5, - 0x12b8, 0x12be, - 0x12c0, 0x12c0, - 0x12c2, 0x12c5, - 0x12c8, 0x12d6, - 0x12d8, 0x1310, - 0x1312, 0x1315, - 0x1318, 0x135a, - 0x135d, 0x137c, - 0x1380, 0x1399, - 0x13a0, 0x13f4, - 0x1400, 0x169c, - 0x16a0, 0x16f0, - 0x1700, 0x170c, - 0x170e, 0x1714, - 0x1720, 0x1736, - 0x1740, 0x1753, - 0x1760, 0x176c, - 0x176e, 0x1770, - 0x1772, 0x1773, - 0x1780, 0x17dd, - 0x17e0, 0x17e9, - 0x17f0, 0x17f9, - 0x1800, 0x180e, - 0x1810, 0x1819, - 0x1820, 0x1877, - 0x1880, 0x18aa, - 0x18b0, 0x18f5, - 0x1900, 0x191c, - 0x1920, 0x192b, - 0x1930, 0x193b, - 0x1940, 0x1940, - 0x1944, 0x196d, - 0x1970, 0x1974, - 0x1980, 0x19ab, - 0x19b0, 0x19c9, - 0x19d0, 0x19da, - 0x19de, 0x1a1b, - 0x1a1e, 0x1a5e, - 0x1a60, 0x1a7c, - 0x1a7f, 0x1a89, - 0x1a90, 0x1a99, - 0x1aa0, 0x1aad, - 0x1b00, 0x1b4b, - 0x1b50, 0x1b7c, - 0x1b80, 0x1baa, - 0x1bae, 0x1bb9, - 0x1bc0, 0x1bf3, - 0x1bfc, 0x1c37, - 0x1c3b, 0x1c49, - 0x1c4d, 0x1c7f, - 0x1cd0, 0x1cf2, - 0x1d00, 0x1de6, - 0x1dfc, 0x1f15, - 0x1f18, 0x1f1d, - 0x1f20, 0x1f45, - 0x1f48, 0x1f4d, - 0x1f50, 0x1f57, - 0x1f59, 0x1f59, - 0x1f5b, 0x1f5b, - 0x1f5d, 0x1f5d, - 0x1f5f, 0x1f7d, - 0x1f80, 0x1fb4, - 0x1fb6, 0x1fc4, - 0x1fc6, 0x1fd3, - 0x1fd6, 0x1fdb, - 0x1fdd, 0x1fef, - 0x1ff2, 0x1ff4, - 0x1ff6, 0x1ffe, - 0x2000, 0x2064, - 0x206a, 0x2071, - 0x2074, 0x208e, - 0x2090, 0x209c, - 0x20a0, 0x20b9, - 0x20d0, 0x20f0, - 0x2100, 0x2189, - 0x2190, 0x23f3, - 0x2400, 0x2426, - 0x2440, 0x244a, - 0x2460, 0x26ff, - 0x2701, 0x27ca, - 0x27cc, 0x27cc, - 0x27ce, 0x2b4c, - 0x2b50, 0x2b59, - 0x2c00, 0x2c2e, - 0x2c30, 0x2c5e, - 0x2c60, 0x2cf1, - 0x2cf9, 0x2d25, - 0x2d30, 0x2d65, - 0x2d6f, 0x2d70, - 0x2d7f, 0x2d96, - 0x2da0, 0x2da6, - 0x2da8, 0x2dae, - 0x2db0, 0x2db6, - 0x2db8, 0x2dbe, - 0x2dc0, 0x2dc6, - 0x2dc8, 0x2dce, - 0x2dd0, 0x2dd6, - 0x2dd8, 0x2dde, - 0x2de0, 0x2e31, - 0x2e80, 0x2e99, - 0x2e9b, 0x2ef3, - 0x2f00, 0x2fd5, - 0x2ff0, 0x2ffb, - 0x3000, 0x303f, - 0x3041, 0x3096, - 0x3099, 0x30ff, - 0x3105, 0x312d, - 0x3131, 0x318e, - 0x3190, 0x31ba, - 0x31c0, 0x31e3, - 0x31f0, 0x321e, - 0x3220, 0x32fe, - 0x3300, 0x4db5, - 0x4dc0, 0x9fcb, - 0xa000, 0xa48c, - 0xa490, 0xa4c6, - 0xa4d0, 0xa62b, - 0xa640, 0xa673, - 0xa67c, 0xa697, - 0xa6a0, 0xa6f7, - 0xa700, 0xa78e, - 0xa790, 0xa791, - 0xa7a0, 0xa7a9, - 0xa7fa, 0xa82b, - 0xa830, 0xa839, - 0xa840, 0xa877, - 0xa880, 0xa8c4, - 0xa8ce, 0xa8d9, - 0xa8e0, 0xa8fb, - 0xa900, 0xa953, - 0xa95f, 0xa97c, - 0xa980, 0xa9cd, - 0xa9cf, 0xa9d9, - 0xa9de, 0xa9df, - 0xaa00, 0xaa36, - 0xaa40, 0xaa4d, - 0xaa50, 0xaa59, - 0xaa5c, 0xaa7b, - 0xaa80, 0xaac2, - 0xaadb, 0xaadf, - 0xab01, 0xab06, - 0xab09, 0xab0e, - 0xab11, 0xab16, - 0xab20, 0xab26, - 0xab28, 0xab2e, - 0xabc0, 0xabed, - 0xabf0, 0xabf9, - 0xac00, 0xd7a3, - 0xd7b0, 0xd7c6, - 0xd7cb, 0xd7fb, - 0xd800, 0xfa2d, - 0xfa30, 0xfa6d, - 0xfa70, 0xfad9, - 0xfb00, 0xfb06, - 0xfb13, 0xfb17, - 0xfb1d, 0xfb36, - 0xfb38, 0xfb3c, - 0xfb3e, 0xfb3e, - 0xfb40, 0xfb41, - 0xfb43, 0xfb44, - 0xfb46, 0xfbc1, - 0xfbd3, 0xfd3f, - 0xfd50, 0xfd8f, - 0xfd92, 0xfdc7, - 0xfdd0, 0xfdfd, - 0xfe00, 0xfe19, - 0xfe20, 0xfe26, - 0xfe30, 0xfe52, - 0xfe54, 0xfe66, - 0xfe68, 0xfe6b, - 0xfe70, 0xfe74, - 0xfe76, 0xfefc, - 0xfeff, 0xfeff, - 0xff01, 0xffbe, - 0xffc2, 0xffc7, - 0xffca, 0xffcf, - 0xffd2, 0xffd7, - 0xffda, 0xffdc, - 0xffe0, 0xffe6, - 0xffe8, 0xffee, - 0xfff9, 0x1000b, - 0x1000d, 0x10026, - 0x10028, 0x1003a, - 0x1003c, 0x1003d, - 0x1003f, 0x1004d, - 0x10050, 0x1005d, - 0x10080, 0x100fa, - 0x10100, 0x10102, - 0x10107, 0x10133, - 0x10137, 0x1018a, - 0x10190, 0x1019b, - 0x101d0, 0x101fd, - 0x10280, 0x1029c, - 0x102a0, 0x102d0, - 0x10300, 0x1031e, - 0x10320, 0x10323, - 0x10330, 0x1034a, - 0x10380, 0x1039d, - 0x1039f, 0x103c3, - 0x103c8, 0x103d5, - 0x10400, 0x1049d, - 0x104a0, 0x104a9, - 0x10800, 0x10805, - 0x10808, 0x10808, - 0x1080a, 0x10835, - 0x10837, 0x10838, - 0x1083c, 0x1083c, - 0x1083f, 0x10855, - 0x10857, 0x1085f, - 0x10900, 0x1091b, - 0x1091f, 0x10939, - 0x1093f, 0x1093f, - 0x10a00, 0x10a03, - 0x10a05, 0x10a06, - 0x10a0c, 0x10a13, - 0x10a15, 0x10a17, - 0x10a19, 0x10a33, - 0x10a38, 0x10a3a, - 0x10a3f, 0x10a47, - 0x10a50, 0x10a58, - 0x10a60, 0x10a7f, - 0x10b00, 0x10b35, - 0x10b39, 0x10b55, - 0x10b58, 0x10b72, - 0x10b78, 0x10b7f, - 0x10c00, 0x10c48, - 0x10e60, 0x10e7e, - 0x11000, 0x1104d, - 0x11052, 0x1106f, - 0x11080, 0x110c1, - 0x12000, 0x1236e, - 0x12400, 0x12462, - 0x12470, 0x12473, - 0x13000, 0x1342e, - 0x16800, 0x16a38, - 0x1b000, 0x1b001, - 0x1d000, 0x1d0f5, - 0x1d100, 0x1d126, - 0x1d129, 0x1d1dd, - 0x1d200, 0x1d245, - 0x1d300, 0x1d356, - 0x1d360, 0x1d371, - 0x1d400, 0x1d454, - 0x1d456, 0x1d49c, - 0x1d49e, 0x1d49f, - 0x1d4a2, 0x1d4a2, - 0x1d4a5, 0x1d4a6, - 0x1d4a9, 0x1d4ac, - 0x1d4ae, 0x1d4b9, - 0x1d4bb, 0x1d4bb, - 0x1d4bd, 0x1d4c3, - 0x1d4c5, 0x1d505, - 0x1d507, 0x1d50a, - 0x1d50d, 0x1d514, - 0x1d516, 0x1d51c, - 0x1d51e, 0x1d539, - 0x1d53b, 0x1d53e, - 0x1d540, 0x1d544, - 0x1d546, 0x1d546, - 0x1d54a, 0x1d550, - 0x1d552, 0x1d6a5, - 0x1d6a8, 0x1d7cb, - 0x1d7ce, 0x1d7ff, - 0x1f000, 0x1f02b, - 0x1f030, 0x1f093, - 0x1f0a0, 0x1f0ae, - 0x1f0b1, 0x1f0be, - 0x1f0c1, 0x1f0cf, - 0x1f0d1, 0x1f0df, - 0x1f100, 0x1f10a, - 0x1f110, 0x1f12e, - 0x1f130, 0x1f169, - 0x1f170, 0x1f19a, - 0x1f1e6, 0x1f202, - 0x1f210, 0x1f23a, - 0x1f240, 0x1f248, - 0x1f250, 0x1f251, - 0x1f300, 0x1f320, - 0x1f330, 0x1f335, - 0x1f337, 0x1f37c, - 0x1f380, 0x1f393, - 0x1f3a0, 0x1f3c4, - 0x1f3c6, 0x1f3ca, - 0x1f3e0, 0x1f3f0, - 0x1f400, 0x1f43e, - 0x1f440, 0x1f440, - 0x1f442, 0x1f4f7, - 0x1f4f9, 0x1f4fc, - 0x1f500, 0x1f53d, - 0x1f550, 0x1f567, - 0x1f5fb, 0x1f5ff, - 0x1f601, 0x1f610, - 0x1f612, 0x1f614, - 0x1f616, 0x1f616, - 0x1f618, 0x1f618, - 0x1f61a, 0x1f61a, - 0x1f61c, 0x1f61e, - 0x1f620, 0x1f625, - 0x1f628, 0x1f62b, - 0x1f62d, 0x1f62d, - 0x1f630, 0x1f633, - 0x1f635, 0x1f640, - 0x1f645, 0x1f64f, - 0x1f680, 0x1f6c5, - 0x1f700, 0x1f773, - 0x1fffe, 0x2a6d6, - 0x2a700, 0x2b734, - 0x2b740, 0x2b81d, - 0x2f800, 0x2fa1d, - 0x2fffe, 0x2ffff, - 0x3fffe, 0x3ffff, - 0x4fffe, 0x4ffff, - 0x5fffe, 0x5ffff, - 0x6fffe, 0x6ffff, - 0x7fffe, 0x7ffff, - 0x8fffe, 0x8ffff, - 0x9fffe, 0x9ffff, - 0xafffe, 0xaffff, - 0xbfffe, 0xbffff, - 0xcfffe, 0xcffff, - 0xdfffe, 0xdffff, - 0xe0001, 0xe0001, - 0xe0020, 0xe007f, - 0xe0100, 0xe01ef, - 0xefffe, 0x10ffff, -}; /* CR_Age_6_0 */ - -/* 'Age_6_1': Derived Age 6.1 */ -static const OnigCodePoint CR_Age_6_1[] = { - 549, - 0x0000, 0x0377, - 0x037a, 0x037e, - 0x0384, 0x038a, - 0x038c, 0x038c, - 0x038e, 0x03a1, - 0x03a3, 0x0527, - 0x0531, 0x0556, - 0x0559, 0x055f, - 0x0561, 0x0587, - 0x0589, 0x058a, - 0x058f, 0x058f, - 0x0591, 0x05c7, - 0x05d0, 0x05ea, - 0x05f0, 0x05f4, - 0x0600, 0x0604, - 0x0606, 0x061b, - 0x061e, 0x070d, - 0x070f, 0x074a, - 0x074d, 0x07b1, - 0x07c0, 0x07fa, - 0x0800, 0x082d, - 0x0830, 0x083e, - 0x0840, 0x085b, - 0x085e, 0x085e, - 0x08a0, 0x08a0, - 0x08a2, 0x08ac, - 0x08e4, 0x08fe, - 0x0900, 0x0977, - 0x0979, 0x097f, - 0x0981, 0x0983, - 0x0985, 0x098c, - 0x098f, 0x0990, - 0x0993, 0x09a8, - 0x09aa, 0x09b0, - 0x09b2, 0x09b2, - 0x09b6, 0x09b9, - 0x09bc, 0x09c4, - 0x09c7, 0x09c8, - 0x09cb, 0x09ce, - 0x09d7, 0x09d7, - 0x09dc, 0x09dd, - 0x09df, 0x09e3, - 0x09e6, 0x09fb, - 0x0a01, 0x0a03, - 0x0a05, 0x0a0a, - 0x0a0f, 0x0a10, - 0x0a13, 0x0a28, - 0x0a2a, 0x0a30, - 0x0a32, 0x0a33, - 0x0a35, 0x0a36, - 0x0a38, 0x0a39, - 0x0a3c, 0x0a3c, - 0x0a3e, 0x0a42, - 0x0a47, 0x0a48, - 0x0a4b, 0x0a4d, - 0x0a51, 0x0a51, - 0x0a59, 0x0a5c, - 0x0a5e, 0x0a5e, - 0x0a66, 0x0a75, - 0x0a81, 0x0a83, - 0x0a85, 0x0a8d, - 0x0a8f, 0x0a91, - 0x0a93, 0x0aa8, - 0x0aaa, 0x0ab0, - 0x0ab2, 0x0ab3, - 0x0ab5, 0x0ab9, - 0x0abc, 0x0ac5, - 0x0ac7, 0x0ac9, - 0x0acb, 0x0acd, - 0x0ad0, 0x0ad0, - 0x0ae0, 0x0ae3, - 0x0ae6, 0x0af1, - 0x0b01, 0x0b03, - 0x0b05, 0x0b0c, - 0x0b0f, 0x0b10, - 0x0b13, 0x0b28, - 0x0b2a, 0x0b30, - 0x0b32, 0x0b33, - 0x0b35, 0x0b39, - 0x0b3c, 0x0b44, - 0x0b47, 0x0b48, - 0x0b4b, 0x0b4d, - 0x0b56, 0x0b57, - 0x0b5c, 0x0b5d, - 0x0b5f, 0x0b63, - 0x0b66, 0x0b77, - 0x0b82, 0x0b83, - 0x0b85, 0x0b8a, - 0x0b8e, 0x0b90, - 0x0b92, 0x0b95, - 0x0b99, 0x0b9a, - 0x0b9c, 0x0b9c, - 0x0b9e, 0x0b9f, - 0x0ba3, 0x0ba4, - 0x0ba8, 0x0baa, - 0x0bae, 0x0bb9, - 0x0bbe, 0x0bc2, - 0x0bc6, 0x0bc8, - 0x0bca, 0x0bcd, - 0x0bd0, 0x0bd0, - 0x0bd7, 0x0bd7, - 0x0be6, 0x0bfa, - 0x0c01, 0x0c03, - 0x0c05, 0x0c0c, - 0x0c0e, 0x0c10, - 0x0c12, 0x0c28, - 0x0c2a, 0x0c33, - 0x0c35, 0x0c39, - 0x0c3d, 0x0c44, - 0x0c46, 0x0c48, - 0x0c4a, 0x0c4d, - 0x0c55, 0x0c56, - 0x0c58, 0x0c59, - 0x0c60, 0x0c63, - 0x0c66, 0x0c6f, - 0x0c78, 0x0c7f, - 0x0c82, 0x0c83, - 0x0c85, 0x0c8c, - 0x0c8e, 0x0c90, - 0x0c92, 0x0ca8, - 0x0caa, 0x0cb3, - 0x0cb5, 0x0cb9, - 0x0cbc, 0x0cc4, - 0x0cc6, 0x0cc8, - 0x0cca, 0x0ccd, - 0x0cd5, 0x0cd6, - 0x0cde, 0x0cde, - 0x0ce0, 0x0ce3, - 0x0ce6, 0x0cef, - 0x0cf1, 0x0cf2, - 0x0d02, 0x0d03, - 0x0d05, 0x0d0c, - 0x0d0e, 0x0d10, - 0x0d12, 0x0d3a, - 0x0d3d, 0x0d44, - 0x0d46, 0x0d48, - 0x0d4a, 0x0d4e, - 0x0d57, 0x0d57, - 0x0d60, 0x0d63, - 0x0d66, 0x0d75, - 0x0d79, 0x0d7f, - 0x0d82, 0x0d83, - 0x0d85, 0x0d96, - 0x0d9a, 0x0db1, - 0x0db3, 0x0dbb, - 0x0dbd, 0x0dbd, - 0x0dc0, 0x0dc6, - 0x0dca, 0x0dca, - 0x0dcf, 0x0dd4, - 0x0dd6, 0x0dd6, - 0x0dd8, 0x0ddf, - 0x0df2, 0x0df4, - 0x0e01, 0x0e3a, - 0x0e3f, 0x0e5b, - 0x0e81, 0x0e82, - 0x0e84, 0x0e84, - 0x0e87, 0x0e88, - 0x0e8a, 0x0e8a, - 0x0e8d, 0x0e8d, - 0x0e94, 0x0e97, - 0x0e99, 0x0e9f, - 0x0ea1, 0x0ea3, - 0x0ea5, 0x0ea5, - 0x0ea7, 0x0ea7, - 0x0eaa, 0x0eab, - 0x0ead, 0x0eb9, - 0x0ebb, 0x0ebd, - 0x0ec0, 0x0ec4, - 0x0ec6, 0x0ec6, - 0x0ec8, 0x0ecd, - 0x0ed0, 0x0ed9, - 0x0edc, 0x0edf, - 0x0f00, 0x0f47, - 0x0f49, 0x0f6c, - 0x0f71, 0x0f97, - 0x0f99, 0x0fbc, - 0x0fbe, 0x0fcc, - 0x0fce, 0x0fda, - 0x1000, 0x10c5, - 0x10c7, 0x10c7, - 0x10cd, 0x10cd, - 0x10d0, 0x1248, - 0x124a, 0x124d, - 0x1250, 0x1256, - 0x1258, 0x1258, - 0x125a, 0x125d, - 0x1260, 0x1288, - 0x128a, 0x128d, - 0x1290, 0x12b0, - 0x12b2, 0x12b5, - 0x12b8, 0x12be, - 0x12c0, 0x12c0, - 0x12c2, 0x12c5, - 0x12c8, 0x12d6, - 0x12d8, 0x1310, - 0x1312, 0x1315, - 0x1318, 0x135a, - 0x135d, 0x137c, - 0x1380, 0x1399, - 0x13a0, 0x13f4, - 0x1400, 0x169c, - 0x16a0, 0x16f0, - 0x1700, 0x170c, - 0x170e, 0x1714, - 0x1720, 0x1736, - 0x1740, 0x1753, - 0x1760, 0x176c, - 0x176e, 0x1770, - 0x1772, 0x1773, - 0x1780, 0x17dd, - 0x17e0, 0x17e9, - 0x17f0, 0x17f9, - 0x1800, 0x180e, - 0x1810, 0x1819, - 0x1820, 0x1877, - 0x1880, 0x18aa, - 0x18b0, 0x18f5, - 0x1900, 0x191c, - 0x1920, 0x192b, - 0x1930, 0x193b, - 0x1940, 0x1940, - 0x1944, 0x196d, - 0x1970, 0x1974, - 0x1980, 0x19ab, - 0x19b0, 0x19c9, - 0x19d0, 0x19da, - 0x19de, 0x1a1b, - 0x1a1e, 0x1a5e, - 0x1a60, 0x1a7c, - 0x1a7f, 0x1a89, - 0x1a90, 0x1a99, - 0x1aa0, 0x1aad, - 0x1b00, 0x1b4b, - 0x1b50, 0x1b7c, - 0x1b80, 0x1bf3, - 0x1bfc, 0x1c37, - 0x1c3b, 0x1c49, - 0x1c4d, 0x1c7f, - 0x1cc0, 0x1cc7, - 0x1cd0, 0x1cf6, - 0x1d00, 0x1de6, - 0x1dfc, 0x1f15, - 0x1f18, 0x1f1d, - 0x1f20, 0x1f45, - 0x1f48, 0x1f4d, - 0x1f50, 0x1f57, - 0x1f59, 0x1f59, - 0x1f5b, 0x1f5b, - 0x1f5d, 0x1f5d, - 0x1f5f, 0x1f7d, - 0x1f80, 0x1fb4, - 0x1fb6, 0x1fc4, - 0x1fc6, 0x1fd3, - 0x1fd6, 0x1fdb, - 0x1fdd, 0x1fef, - 0x1ff2, 0x1ff4, - 0x1ff6, 0x1ffe, - 0x2000, 0x2064, - 0x206a, 0x2071, - 0x2074, 0x208e, - 0x2090, 0x209c, - 0x20a0, 0x20b9, - 0x20d0, 0x20f0, - 0x2100, 0x2189, - 0x2190, 0x23f3, - 0x2400, 0x2426, - 0x2440, 0x244a, - 0x2460, 0x26ff, - 0x2701, 0x2b4c, - 0x2b50, 0x2b59, - 0x2c00, 0x2c2e, - 0x2c30, 0x2c5e, - 0x2c60, 0x2cf3, - 0x2cf9, 0x2d25, - 0x2d27, 0x2d27, - 0x2d2d, 0x2d2d, - 0x2d30, 0x2d67, - 0x2d6f, 0x2d70, - 0x2d7f, 0x2d96, - 0x2da0, 0x2da6, - 0x2da8, 0x2dae, - 0x2db0, 0x2db6, - 0x2db8, 0x2dbe, - 0x2dc0, 0x2dc6, - 0x2dc8, 0x2dce, - 0x2dd0, 0x2dd6, - 0x2dd8, 0x2dde, - 0x2de0, 0x2e3b, - 0x2e80, 0x2e99, - 0x2e9b, 0x2ef3, - 0x2f00, 0x2fd5, - 0x2ff0, 0x2ffb, - 0x3000, 0x303f, - 0x3041, 0x3096, - 0x3099, 0x30ff, - 0x3105, 0x312d, - 0x3131, 0x318e, - 0x3190, 0x31ba, - 0x31c0, 0x31e3, - 0x31f0, 0x321e, - 0x3220, 0x32fe, - 0x3300, 0x4db5, - 0x4dc0, 0x9fcc, - 0xa000, 0xa48c, - 0xa490, 0xa4c6, - 0xa4d0, 0xa62b, - 0xa640, 0xa697, - 0xa69f, 0xa6f7, - 0xa700, 0xa78e, - 0xa790, 0xa793, - 0xa7a0, 0xa7aa, - 0xa7f8, 0xa82b, - 0xa830, 0xa839, - 0xa840, 0xa877, - 0xa880, 0xa8c4, - 0xa8ce, 0xa8d9, - 0xa8e0, 0xa8fb, - 0xa900, 0xa953, - 0xa95f, 0xa97c, - 0xa980, 0xa9cd, - 0xa9cf, 0xa9d9, - 0xa9de, 0xa9df, - 0xaa00, 0xaa36, - 0xaa40, 0xaa4d, - 0xaa50, 0xaa59, - 0xaa5c, 0xaa7b, - 0xaa80, 0xaac2, - 0xaadb, 0xaaf6, - 0xab01, 0xab06, - 0xab09, 0xab0e, - 0xab11, 0xab16, - 0xab20, 0xab26, - 0xab28, 0xab2e, - 0xabc0, 0xabed, - 0xabf0, 0xabf9, - 0xac00, 0xd7a3, - 0xd7b0, 0xd7c6, - 0xd7cb, 0xd7fb, - 0xd800, 0xfa6d, - 0xfa70, 0xfad9, - 0xfb00, 0xfb06, - 0xfb13, 0xfb17, - 0xfb1d, 0xfb36, - 0xfb38, 0xfb3c, - 0xfb3e, 0xfb3e, - 0xfb40, 0xfb41, - 0xfb43, 0xfb44, - 0xfb46, 0xfbc1, - 0xfbd3, 0xfd3f, - 0xfd50, 0xfd8f, - 0xfd92, 0xfdc7, - 0xfdd0, 0xfdfd, - 0xfe00, 0xfe19, - 0xfe20, 0xfe26, - 0xfe30, 0xfe52, - 0xfe54, 0xfe66, - 0xfe68, 0xfe6b, - 0xfe70, 0xfe74, - 0xfe76, 0xfefc, - 0xfeff, 0xfeff, - 0xff01, 0xffbe, - 0xffc2, 0xffc7, - 0xffca, 0xffcf, - 0xffd2, 0xffd7, - 0xffda, 0xffdc, - 0xffe0, 0xffe6, - 0xffe8, 0xffee, - 0xfff9, 0x1000b, - 0x1000d, 0x10026, - 0x10028, 0x1003a, - 0x1003c, 0x1003d, - 0x1003f, 0x1004d, - 0x10050, 0x1005d, - 0x10080, 0x100fa, - 0x10100, 0x10102, - 0x10107, 0x10133, - 0x10137, 0x1018a, - 0x10190, 0x1019b, - 0x101d0, 0x101fd, - 0x10280, 0x1029c, - 0x102a0, 0x102d0, - 0x10300, 0x1031e, - 0x10320, 0x10323, - 0x10330, 0x1034a, - 0x10380, 0x1039d, - 0x1039f, 0x103c3, - 0x103c8, 0x103d5, - 0x10400, 0x1049d, - 0x104a0, 0x104a9, - 0x10800, 0x10805, - 0x10808, 0x10808, - 0x1080a, 0x10835, - 0x10837, 0x10838, - 0x1083c, 0x1083c, - 0x1083f, 0x10855, - 0x10857, 0x1085f, - 0x10900, 0x1091b, - 0x1091f, 0x10939, - 0x1093f, 0x1093f, - 0x10980, 0x109b7, - 0x109be, 0x109bf, - 0x10a00, 0x10a03, - 0x10a05, 0x10a06, - 0x10a0c, 0x10a13, - 0x10a15, 0x10a17, - 0x10a19, 0x10a33, - 0x10a38, 0x10a3a, - 0x10a3f, 0x10a47, - 0x10a50, 0x10a58, - 0x10a60, 0x10a7f, - 0x10b00, 0x10b35, - 0x10b39, 0x10b55, - 0x10b58, 0x10b72, - 0x10b78, 0x10b7f, - 0x10c00, 0x10c48, - 0x10e60, 0x10e7e, - 0x11000, 0x1104d, - 0x11052, 0x1106f, - 0x11080, 0x110c1, - 0x110d0, 0x110e8, - 0x110f0, 0x110f9, - 0x11100, 0x11134, - 0x11136, 0x11143, - 0x11180, 0x111c8, - 0x111d0, 0x111d9, - 0x11680, 0x116b7, - 0x116c0, 0x116c9, - 0x12000, 0x1236e, - 0x12400, 0x12462, - 0x12470, 0x12473, - 0x13000, 0x1342e, - 0x16800, 0x16a38, - 0x16f00, 0x16f44, - 0x16f50, 0x16f7e, - 0x16f8f, 0x16f9f, - 0x1b000, 0x1b001, - 0x1d000, 0x1d0f5, - 0x1d100, 0x1d126, - 0x1d129, 0x1d1dd, - 0x1d200, 0x1d245, - 0x1d300, 0x1d356, - 0x1d360, 0x1d371, - 0x1d400, 0x1d454, - 0x1d456, 0x1d49c, - 0x1d49e, 0x1d49f, - 0x1d4a2, 0x1d4a2, - 0x1d4a5, 0x1d4a6, - 0x1d4a9, 0x1d4ac, - 0x1d4ae, 0x1d4b9, - 0x1d4bb, 0x1d4bb, - 0x1d4bd, 0x1d4c3, - 0x1d4c5, 0x1d505, - 0x1d507, 0x1d50a, - 0x1d50d, 0x1d514, - 0x1d516, 0x1d51c, - 0x1d51e, 0x1d539, - 0x1d53b, 0x1d53e, - 0x1d540, 0x1d544, - 0x1d546, 0x1d546, - 0x1d54a, 0x1d550, - 0x1d552, 0x1d6a5, - 0x1d6a8, 0x1d7cb, - 0x1d7ce, 0x1d7ff, - 0x1ee00, 0x1ee03, - 0x1ee05, 0x1ee1f, - 0x1ee21, 0x1ee22, - 0x1ee24, 0x1ee24, - 0x1ee27, 0x1ee27, - 0x1ee29, 0x1ee32, - 0x1ee34, 0x1ee37, - 0x1ee39, 0x1ee39, - 0x1ee3b, 0x1ee3b, - 0x1ee42, 0x1ee42, - 0x1ee47, 0x1ee47, - 0x1ee49, 0x1ee49, - 0x1ee4b, 0x1ee4b, - 0x1ee4d, 0x1ee4f, - 0x1ee51, 0x1ee52, - 0x1ee54, 0x1ee54, - 0x1ee57, 0x1ee57, - 0x1ee59, 0x1ee59, - 0x1ee5b, 0x1ee5b, - 0x1ee5d, 0x1ee5d, - 0x1ee5f, 0x1ee5f, - 0x1ee61, 0x1ee62, - 0x1ee64, 0x1ee64, - 0x1ee67, 0x1ee6a, - 0x1ee6c, 0x1ee72, - 0x1ee74, 0x1ee77, - 0x1ee79, 0x1ee7c, - 0x1ee7e, 0x1ee7e, - 0x1ee80, 0x1ee89, - 0x1ee8b, 0x1ee9b, - 0x1eea1, 0x1eea3, - 0x1eea5, 0x1eea9, - 0x1eeab, 0x1eebb, - 0x1eef0, 0x1eef1, - 0x1f000, 0x1f02b, - 0x1f030, 0x1f093, - 0x1f0a0, 0x1f0ae, - 0x1f0b1, 0x1f0be, - 0x1f0c1, 0x1f0cf, - 0x1f0d1, 0x1f0df, - 0x1f100, 0x1f10a, - 0x1f110, 0x1f12e, - 0x1f130, 0x1f16b, - 0x1f170, 0x1f19a, - 0x1f1e6, 0x1f202, - 0x1f210, 0x1f23a, - 0x1f240, 0x1f248, - 0x1f250, 0x1f251, - 0x1f300, 0x1f320, - 0x1f330, 0x1f335, - 0x1f337, 0x1f37c, - 0x1f380, 0x1f393, - 0x1f3a0, 0x1f3c4, - 0x1f3c6, 0x1f3ca, - 0x1f3e0, 0x1f3f0, - 0x1f400, 0x1f43e, - 0x1f440, 0x1f440, - 0x1f442, 0x1f4f7, - 0x1f4f9, 0x1f4fc, - 0x1f500, 0x1f53d, - 0x1f540, 0x1f543, - 0x1f550, 0x1f567, - 0x1f5fb, 0x1f640, - 0x1f645, 0x1f64f, - 0x1f680, 0x1f6c5, - 0x1f700, 0x1f773, - 0x1fffe, 0x2a6d6, - 0x2a700, 0x2b734, - 0x2b740, 0x2b81d, - 0x2f800, 0x2fa1d, - 0x2fffe, 0x2ffff, - 0x3fffe, 0x3ffff, - 0x4fffe, 0x4ffff, - 0x5fffe, 0x5ffff, - 0x6fffe, 0x6ffff, - 0x7fffe, 0x7ffff, - 0x8fffe, 0x8ffff, - 0x9fffe, 0x9ffff, - 0xafffe, 0xaffff, - 0xbfffe, 0xbffff, - 0xcfffe, 0xcffff, - 0xdfffe, 0xdffff, - 0xe0001, 0xe0001, - 0xe0020, 0xe007f, - 0xe0100, 0xe01ef, - 0xefffe, 0x10ffff, -}; /* CR_Age_6_1 */ - -/* 'Age_6_2': Derived Age 6.2 */ -static const OnigCodePoint CR_Age_6_2[] = { - 549, - 0x0000, 0x0377, - 0x037a, 0x037e, - 0x0384, 0x038a, - 0x038c, 0x038c, - 0x038e, 0x03a1, - 0x03a3, 0x0527, - 0x0531, 0x0556, - 0x0559, 0x055f, - 0x0561, 0x0587, - 0x0589, 0x058a, - 0x058f, 0x058f, - 0x0591, 0x05c7, - 0x05d0, 0x05ea, - 0x05f0, 0x05f4, - 0x0600, 0x0604, - 0x0606, 0x061b, - 0x061e, 0x070d, - 0x070f, 0x074a, - 0x074d, 0x07b1, - 0x07c0, 0x07fa, - 0x0800, 0x082d, - 0x0830, 0x083e, - 0x0840, 0x085b, - 0x085e, 0x085e, - 0x08a0, 0x08a0, - 0x08a2, 0x08ac, - 0x08e4, 0x08fe, - 0x0900, 0x0977, - 0x0979, 0x097f, - 0x0981, 0x0983, - 0x0985, 0x098c, - 0x098f, 0x0990, - 0x0993, 0x09a8, - 0x09aa, 0x09b0, - 0x09b2, 0x09b2, - 0x09b6, 0x09b9, - 0x09bc, 0x09c4, - 0x09c7, 0x09c8, - 0x09cb, 0x09ce, - 0x09d7, 0x09d7, - 0x09dc, 0x09dd, - 0x09df, 0x09e3, - 0x09e6, 0x09fb, - 0x0a01, 0x0a03, - 0x0a05, 0x0a0a, - 0x0a0f, 0x0a10, - 0x0a13, 0x0a28, - 0x0a2a, 0x0a30, - 0x0a32, 0x0a33, - 0x0a35, 0x0a36, - 0x0a38, 0x0a39, - 0x0a3c, 0x0a3c, - 0x0a3e, 0x0a42, - 0x0a47, 0x0a48, - 0x0a4b, 0x0a4d, - 0x0a51, 0x0a51, - 0x0a59, 0x0a5c, - 0x0a5e, 0x0a5e, - 0x0a66, 0x0a75, - 0x0a81, 0x0a83, - 0x0a85, 0x0a8d, - 0x0a8f, 0x0a91, - 0x0a93, 0x0aa8, - 0x0aaa, 0x0ab0, - 0x0ab2, 0x0ab3, - 0x0ab5, 0x0ab9, - 0x0abc, 0x0ac5, - 0x0ac7, 0x0ac9, - 0x0acb, 0x0acd, - 0x0ad0, 0x0ad0, - 0x0ae0, 0x0ae3, - 0x0ae6, 0x0af1, - 0x0b01, 0x0b03, - 0x0b05, 0x0b0c, - 0x0b0f, 0x0b10, - 0x0b13, 0x0b28, - 0x0b2a, 0x0b30, - 0x0b32, 0x0b33, - 0x0b35, 0x0b39, - 0x0b3c, 0x0b44, - 0x0b47, 0x0b48, - 0x0b4b, 0x0b4d, - 0x0b56, 0x0b57, - 0x0b5c, 0x0b5d, - 0x0b5f, 0x0b63, - 0x0b66, 0x0b77, - 0x0b82, 0x0b83, - 0x0b85, 0x0b8a, - 0x0b8e, 0x0b90, - 0x0b92, 0x0b95, - 0x0b99, 0x0b9a, - 0x0b9c, 0x0b9c, - 0x0b9e, 0x0b9f, - 0x0ba3, 0x0ba4, - 0x0ba8, 0x0baa, - 0x0bae, 0x0bb9, - 0x0bbe, 0x0bc2, - 0x0bc6, 0x0bc8, - 0x0bca, 0x0bcd, - 0x0bd0, 0x0bd0, - 0x0bd7, 0x0bd7, - 0x0be6, 0x0bfa, - 0x0c01, 0x0c03, - 0x0c05, 0x0c0c, - 0x0c0e, 0x0c10, - 0x0c12, 0x0c28, - 0x0c2a, 0x0c33, - 0x0c35, 0x0c39, - 0x0c3d, 0x0c44, - 0x0c46, 0x0c48, - 0x0c4a, 0x0c4d, - 0x0c55, 0x0c56, - 0x0c58, 0x0c59, - 0x0c60, 0x0c63, - 0x0c66, 0x0c6f, - 0x0c78, 0x0c7f, - 0x0c82, 0x0c83, - 0x0c85, 0x0c8c, - 0x0c8e, 0x0c90, - 0x0c92, 0x0ca8, - 0x0caa, 0x0cb3, - 0x0cb5, 0x0cb9, - 0x0cbc, 0x0cc4, - 0x0cc6, 0x0cc8, - 0x0cca, 0x0ccd, - 0x0cd5, 0x0cd6, - 0x0cde, 0x0cde, - 0x0ce0, 0x0ce3, - 0x0ce6, 0x0cef, - 0x0cf1, 0x0cf2, - 0x0d02, 0x0d03, - 0x0d05, 0x0d0c, - 0x0d0e, 0x0d10, - 0x0d12, 0x0d3a, - 0x0d3d, 0x0d44, - 0x0d46, 0x0d48, - 0x0d4a, 0x0d4e, - 0x0d57, 0x0d57, - 0x0d60, 0x0d63, - 0x0d66, 0x0d75, - 0x0d79, 0x0d7f, - 0x0d82, 0x0d83, - 0x0d85, 0x0d96, - 0x0d9a, 0x0db1, - 0x0db3, 0x0dbb, - 0x0dbd, 0x0dbd, - 0x0dc0, 0x0dc6, - 0x0dca, 0x0dca, - 0x0dcf, 0x0dd4, - 0x0dd6, 0x0dd6, - 0x0dd8, 0x0ddf, - 0x0df2, 0x0df4, - 0x0e01, 0x0e3a, - 0x0e3f, 0x0e5b, - 0x0e81, 0x0e82, - 0x0e84, 0x0e84, - 0x0e87, 0x0e88, - 0x0e8a, 0x0e8a, - 0x0e8d, 0x0e8d, - 0x0e94, 0x0e97, - 0x0e99, 0x0e9f, - 0x0ea1, 0x0ea3, - 0x0ea5, 0x0ea5, - 0x0ea7, 0x0ea7, - 0x0eaa, 0x0eab, - 0x0ead, 0x0eb9, - 0x0ebb, 0x0ebd, - 0x0ec0, 0x0ec4, - 0x0ec6, 0x0ec6, - 0x0ec8, 0x0ecd, - 0x0ed0, 0x0ed9, - 0x0edc, 0x0edf, - 0x0f00, 0x0f47, - 0x0f49, 0x0f6c, - 0x0f71, 0x0f97, - 0x0f99, 0x0fbc, - 0x0fbe, 0x0fcc, - 0x0fce, 0x0fda, - 0x1000, 0x10c5, - 0x10c7, 0x10c7, - 0x10cd, 0x10cd, - 0x10d0, 0x1248, - 0x124a, 0x124d, - 0x1250, 0x1256, - 0x1258, 0x1258, - 0x125a, 0x125d, - 0x1260, 0x1288, - 0x128a, 0x128d, - 0x1290, 0x12b0, - 0x12b2, 0x12b5, - 0x12b8, 0x12be, - 0x12c0, 0x12c0, - 0x12c2, 0x12c5, - 0x12c8, 0x12d6, - 0x12d8, 0x1310, - 0x1312, 0x1315, - 0x1318, 0x135a, - 0x135d, 0x137c, - 0x1380, 0x1399, - 0x13a0, 0x13f4, - 0x1400, 0x169c, - 0x16a0, 0x16f0, - 0x1700, 0x170c, - 0x170e, 0x1714, - 0x1720, 0x1736, - 0x1740, 0x1753, - 0x1760, 0x176c, - 0x176e, 0x1770, - 0x1772, 0x1773, - 0x1780, 0x17dd, - 0x17e0, 0x17e9, - 0x17f0, 0x17f9, - 0x1800, 0x180e, - 0x1810, 0x1819, - 0x1820, 0x1877, - 0x1880, 0x18aa, - 0x18b0, 0x18f5, - 0x1900, 0x191c, - 0x1920, 0x192b, - 0x1930, 0x193b, - 0x1940, 0x1940, - 0x1944, 0x196d, - 0x1970, 0x1974, - 0x1980, 0x19ab, - 0x19b0, 0x19c9, - 0x19d0, 0x19da, - 0x19de, 0x1a1b, - 0x1a1e, 0x1a5e, - 0x1a60, 0x1a7c, - 0x1a7f, 0x1a89, - 0x1a90, 0x1a99, - 0x1aa0, 0x1aad, - 0x1b00, 0x1b4b, - 0x1b50, 0x1b7c, - 0x1b80, 0x1bf3, - 0x1bfc, 0x1c37, - 0x1c3b, 0x1c49, - 0x1c4d, 0x1c7f, - 0x1cc0, 0x1cc7, - 0x1cd0, 0x1cf6, - 0x1d00, 0x1de6, - 0x1dfc, 0x1f15, - 0x1f18, 0x1f1d, - 0x1f20, 0x1f45, - 0x1f48, 0x1f4d, - 0x1f50, 0x1f57, - 0x1f59, 0x1f59, - 0x1f5b, 0x1f5b, - 0x1f5d, 0x1f5d, - 0x1f5f, 0x1f7d, - 0x1f80, 0x1fb4, - 0x1fb6, 0x1fc4, - 0x1fc6, 0x1fd3, - 0x1fd6, 0x1fdb, - 0x1fdd, 0x1fef, - 0x1ff2, 0x1ff4, - 0x1ff6, 0x1ffe, - 0x2000, 0x2064, - 0x206a, 0x2071, - 0x2074, 0x208e, - 0x2090, 0x209c, - 0x20a0, 0x20ba, - 0x20d0, 0x20f0, - 0x2100, 0x2189, - 0x2190, 0x23f3, - 0x2400, 0x2426, - 0x2440, 0x244a, - 0x2460, 0x26ff, - 0x2701, 0x2b4c, - 0x2b50, 0x2b59, - 0x2c00, 0x2c2e, - 0x2c30, 0x2c5e, - 0x2c60, 0x2cf3, - 0x2cf9, 0x2d25, - 0x2d27, 0x2d27, - 0x2d2d, 0x2d2d, - 0x2d30, 0x2d67, - 0x2d6f, 0x2d70, - 0x2d7f, 0x2d96, - 0x2da0, 0x2da6, - 0x2da8, 0x2dae, - 0x2db0, 0x2db6, - 0x2db8, 0x2dbe, - 0x2dc0, 0x2dc6, - 0x2dc8, 0x2dce, - 0x2dd0, 0x2dd6, - 0x2dd8, 0x2dde, - 0x2de0, 0x2e3b, - 0x2e80, 0x2e99, - 0x2e9b, 0x2ef3, - 0x2f00, 0x2fd5, - 0x2ff0, 0x2ffb, - 0x3000, 0x303f, - 0x3041, 0x3096, - 0x3099, 0x30ff, - 0x3105, 0x312d, - 0x3131, 0x318e, - 0x3190, 0x31ba, - 0x31c0, 0x31e3, - 0x31f0, 0x321e, - 0x3220, 0x32fe, - 0x3300, 0x4db5, - 0x4dc0, 0x9fcc, - 0xa000, 0xa48c, - 0xa490, 0xa4c6, - 0xa4d0, 0xa62b, - 0xa640, 0xa697, - 0xa69f, 0xa6f7, - 0xa700, 0xa78e, - 0xa790, 0xa793, - 0xa7a0, 0xa7aa, - 0xa7f8, 0xa82b, - 0xa830, 0xa839, - 0xa840, 0xa877, - 0xa880, 0xa8c4, - 0xa8ce, 0xa8d9, - 0xa8e0, 0xa8fb, - 0xa900, 0xa953, - 0xa95f, 0xa97c, - 0xa980, 0xa9cd, - 0xa9cf, 0xa9d9, - 0xa9de, 0xa9df, - 0xaa00, 0xaa36, - 0xaa40, 0xaa4d, - 0xaa50, 0xaa59, - 0xaa5c, 0xaa7b, - 0xaa80, 0xaac2, - 0xaadb, 0xaaf6, - 0xab01, 0xab06, - 0xab09, 0xab0e, - 0xab11, 0xab16, - 0xab20, 0xab26, - 0xab28, 0xab2e, - 0xabc0, 0xabed, - 0xabf0, 0xabf9, - 0xac00, 0xd7a3, - 0xd7b0, 0xd7c6, - 0xd7cb, 0xd7fb, - 0xd800, 0xfa6d, - 0xfa70, 0xfad9, - 0xfb00, 0xfb06, - 0xfb13, 0xfb17, - 0xfb1d, 0xfb36, - 0xfb38, 0xfb3c, - 0xfb3e, 0xfb3e, - 0xfb40, 0xfb41, - 0xfb43, 0xfb44, - 0xfb46, 0xfbc1, - 0xfbd3, 0xfd3f, - 0xfd50, 0xfd8f, - 0xfd92, 0xfdc7, - 0xfdd0, 0xfdfd, - 0xfe00, 0xfe19, - 0xfe20, 0xfe26, - 0xfe30, 0xfe52, - 0xfe54, 0xfe66, - 0xfe68, 0xfe6b, - 0xfe70, 0xfe74, - 0xfe76, 0xfefc, - 0xfeff, 0xfeff, - 0xff01, 0xffbe, - 0xffc2, 0xffc7, - 0xffca, 0xffcf, - 0xffd2, 0xffd7, - 0xffda, 0xffdc, - 0xffe0, 0xffe6, - 0xffe8, 0xffee, - 0xfff9, 0x1000b, - 0x1000d, 0x10026, - 0x10028, 0x1003a, - 0x1003c, 0x1003d, - 0x1003f, 0x1004d, - 0x10050, 0x1005d, - 0x10080, 0x100fa, - 0x10100, 0x10102, - 0x10107, 0x10133, - 0x10137, 0x1018a, - 0x10190, 0x1019b, - 0x101d0, 0x101fd, - 0x10280, 0x1029c, - 0x102a0, 0x102d0, - 0x10300, 0x1031e, - 0x10320, 0x10323, - 0x10330, 0x1034a, - 0x10380, 0x1039d, - 0x1039f, 0x103c3, - 0x103c8, 0x103d5, - 0x10400, 0x1049d, - 0x104a0, 0x104a9, - 0x10800, 0x10805, - 0x10808, 0x10808, - 0x1080a, 0x10835, - 0x10837, 0x10838, - 0x1083c, 0x1083c, - 0x1083f, 0x10855, - 0x10857, 0x1085f, - 0x10900, 0x1091b, - 0x1091f, 0x10939, - 0x1093f, 0x1093f, - 0x10980, 0x109b7, - 0x109be, 0x109bf, - 0x10a00, 0x10a03, - 0x10a05, 0x10a06, - 0x10a0c, 0x10a13, - 0x10a15, 0x10a17, - 0x10a19, 0x10a33, - 0x10a38, 0x10a3a, - 0x10a3f, 0x10a47, - 0x10a50, 0x10a58, - 0x10a60, 0x10a7f, - 0x10b00, 0x10b35, - 0x10b39, 0x10b55, - 0x10b58, 0x10b72, - 0x10b78, 0x10b7f, - 0x10c00, 0x10c48, - 0x10e60, 0x10e7e, - 0x11000, 0x1104d, - 0x11052, 0x1106f, - 0x11080, 0x110c1, - 0x110d0, 0x110e8, - 0x110f0, 0x110f9, - 0x11100, 0x11134, - 0x11136, 0x11143, - 0x11180, 0x111c8, - 0x111d0, 0x111d9, - 0x11680, 0x116b7, - 0x116c0, 0x116c9, - 0x12000, 0x1236e, - 0x12400, 0x12462, - 0x12470, 0x12473, - 0x13000, 0x1342e, - 0x16800, 0x16a38, - 0x16f00, 0x16f44, - 0x16f50, 0x16f7e, - 0x16f8f, 0x16f9f, - 0x1b000, 0x1b001, - 0x1d000, 0x1d0f5, - 0x1d100, 0x1d126, - 0x1d129, 0x1d1dd, - 0x1d200, 0x1d245, - 0x1d300, 0x1d356, - 0x1d360, 0x1d371, - 0x1d400, 0x1d454, - 0x1d456, 0x1d49c, - 0x1d49e, 0x1d49f, - 0x1d4a2, 0x1d4a2, - 0x1d4a5, 0x1d4a6, - 0x1d4a9, 0x1d4ac, - 0x1d4ae, 0x1d4b9, - 0x1d4bb, 0x1d4bb, - 0x1d4bd, 0x1d4c3, - 0x1d4c5, 0x1d505, - 0x1d507, 0x1d50a, - 0x1d50d, 0x1d514, - 0x1d516, 0x1d51c, - 0x1d51e, 0x1d539, - 0x1d53b, 0x1d53e, - 0x1d540, 0x1d544, - 0x1d546, 0x1d546, - 0x1d54a, 0x1d550, - 0x1d552, 0x1d6a5, - 0x1d6a8, 0x1d7cb, - 0x1d7ce, 0x1d7ff, - 0x1ee00, 0x1ee03, - 0x1ee05, 0x1ee1f, - 0x1ee21, 0x1ee22, - 0x1ee24, 0x1ee24, - 0x1ee27, 0x1ee27, - 0x1ee29, 0x1ee32, - 0x1ee34, 0x1ee37, - 0x1ee39, 0x1ee39, - 0x1ee3b, 0x1ee3b, - 0x1ee42, 0x1ee42, - 0x1ee47, 0x1ee47, - 0x1ee49, 0x1ee49, - 0x1ee4b, 0x1ee4b, - 0x1ee4d, 0x1ee4f, - 0x1ee51, 0x1ee52, - 0x1ee54, 0x1ee54, - 0x1ee57, 0x1ee57, - 0x1ee59, 0x1ee59, - 0x1ee5b, 0x1ee5b, - 0x1ee5d, 0x1ee5d, - 0x1ee5f, 0x1ee5f, - 0x1ee61, 0x1ee62, - 0x1ee64, 0x1ee64, - 0x1ee67, 0x1ee6a, - 0x1ee6c, 0x1ee72, - 0x1ee74, 0x1ee77, - 0x1ee79, 0x1ee7c, - 0x1ee7e, 0x1ee7e, - 0x1ee80, 0x1ee89, - 0x1ee8b, 0x1ee9b, - 0x1eea1, 0x1eea3, - 0x1eea5, 0x1eea9, - 0x1eeab, 0x1eebb, - 0x1eef0, 0x1eef1, - 0x1f000, 0x1f02b, - 0x1f030, 0x1f093, - 0x1f0a0, 0x1f0ae, - 0x1f0b1, 0x1f0be, - 0x1f0c1, 0x1f0cf, - 0x1f0d1, 0x1f0df, - 0x1f100, 0x1f10a, - 0x1f110, 0x1f12e, - 0x1f130, 0x1f16b, - 0x1f170, 0x1f19a, - 0x1f1e6, 0x1f202, - 0x1f210, 0x1f23a, - 0x1f240, 0x1f248, - 0x1f250, 0x1f251, - 0x1f300, 0x1f320, - 0x1f330, 0x1f335, - 0x1f337, 0x1f37c, - 0x1f380, 0x1f393, - 0x1f3a0, 0x1f3c4, - 0x1f3c6, 0x1f3ca, - 0x1f3e0, 0x1f3f0, - 0x1f400, 0x1f43e, - 0x1f440, 0x1f440, - 0x1f442, 0x1f4f7, - 0x1f4f9, 0x1f4fc, - 0x1f500, 0x1f53d, - 0x1f540, 0x1f543, - 0x1f550, 0x1f567, - 0x1f5fb, 0x1f640, - 0x1f645, 0x1f64f, - 0x1f680, 0x1f6c5, - 0x1f700, 0x1f773, - 0x1fffe, 0x2a6d6, - 0x2a700, 0x2b734, - 0x2b740, 0x2b81d, - 0x2f800, 0x2fa1d, - 0x2fffe, 0x2ffff, - 0x3fffe, 0x3ffff, - 0x4fffe, 0x4ffff, - 0x5fffe, 0x5ffff, - 0x6fffe, 0x6ffff, - 0x7fffe, 0x7ffff, - 0x8fffe, 0x8ffff, - 0x9fffe, 0x9ffff, - 0xafffe, 0xaffff, - 0xbfffe, 0xbffff, - 0xcfffe, 0xcffff, - 0xdfffe, 0xdffff, - 0xe0001, 0xe0001, - 0xe0020, 0xe007f, - 0xe0100, 0xe01ef, - 0xefffe, 0x10ffff, -}; /* CR_Age_6_2 */ - -/* 'Age_6_3': Derived Age 6.3 */ -static const OnigCodePoint CR_Age_6_3[] = { - 549, - 0x0000, 0x0377, - 0x037a, 0x037e, - 0x0384, 0x038a, - 0x038c, 0x038c, - 0x038e, 0x03a1, - 0x03a3, 0x0527, - 0x0531, 0x0556, - 0x0559, 0x055f, - 0x0561, 0x0587, - 0x0589, 0x058a, - 0x058f, 0x058f, - 0x0591, 0x05c7, - 0x05d0, 0x05ea, - 0x05f0, 0x05f4, - 0x0600, 0x0604, - 0x0606, 0x061c, - 0x061e, 0x070d, - 0x070f, 0x074a, - 0x074d, 0x07b1, - 0x07c0, 0x07fa, - 0x0800, 0x082d, - 0x0830, 0x083e, - 0x0840, 0x085b, - 0x085e, 0x085e, - 0x08a0, 0x08a0, - 0x08a2, 0x08ac, - 0x08e4, 0x08fe, - 0x0900, 0x0977, - 0x0979, 0x097f, - 0x0981, 0x0983, - 0x0985, 0x098c, - 0x098f, 0x0990, - 0x0993, 0x09a8, - 0x09aa, 0x09b0, - 0x09b2, 0x09b2, - 0x09b6, 0x09b9, - 0x09bc, 0x09c4, - 0x09c7, 0x09c8, - 0x09cb, 0x09ce, - 0x09d7, 0x09d7, - 0x09dc, 0x09dd, - 0x09df, 0x09e3, - 0x09e6, 0x09fb, - 0x0a01, 0x0a03, - 0x0a05, 0x0a0a, - 0x0a0f, 0x0a10, - 0x0a13, 0x0a28, - 0x0a2a, 0x0a30, - 0x0a32, 0x0a33, - 0x0a35, 0x0a36, - 0x0a38, 0x0a39, - 0x0a3c, 0x0a3c, - 0x0a3e, 0x0a42, - 0x0a47, 0x0a48, - 0x0a4b, 0x0a4d, - 0x0a51, 0x0a51, - 0x0a59, 0x0a5c, - 0x0a5e, 0x0a5e, - 0x0a66, 0x0a75, - 0x0a81, 0x0a83, - 0x0a85, 0x0a8d, - 0x0a8f, 0x0a91, - 0x0a93, 0x0aa8, - 0x0aaa, 0x0ab0, - 0x0ab2, 0x0ab3, - 0x0ab5, 0x0ab9, - 0x0abc, 0x0ac5, - 0x0ac7, 0x0ac9, - 0x0acb, 0x0acd, - 0x0ad0, 0x0ad0, - 0x0ae0, 0x0ae3, - 0x0ae6, 0x0af1, - 0x0b01, 0x0b03, - 0x0b05, 0x0b0c, - 0x0b0f, 0x0b10, - 0x0b13, 0x0b28, - 0x0b2a, 0x0b30, - 0x0b32, 0x0b33, - 0x0b35, 0x0b39, - 0x0b3c, 0x0b44, - 0x0b47, 0x0b48, - 0x0b4b, 0x0b4d, - 0x0b56, 0x0b57, - 0x0b5c, 0x0b5d, - 0x0b5f, 0x0b63, - 0x0b66, 0x0b77, - 0x0b82, 0x0b83, - 0x0b85, 0x0b8a, - 0x0b8e, 0x0b90, - 0x0b92, 0x0b95, - 0x0b99, 0x0b9a, - 0x0b9c, 0x0b9c, - 0x0b9e, 0x0b9f, - 0x0ba3, 0x0ba4, - 0x0ba8, 0x0baa, - 0x0bae, 0x0bb9, - 0x0bbe, 0x0bc2, - 0x0bc6, 0x0bc8, - 0x0bca, 0x0bcd, - 0x0bd0, 0x0bd0, - 0x0bd7, 0x0bd7, - 0x0be6, 0x0bfa, - 0x0c01, 0x0c03, - 0x0c05, 0x0c0c, - 0x0c0e, 0x0c10, - 0x0c12, 0x0c28, - 0x0c2a, 0x0c33, - 0x0c35, 0x0c39, - 0x0c3d, 0x0c44, - 0x0c46, 0x0c48, - 0x0c4a, 0x0c4d, - 0x0c55, 0x0c56, - 0x0c58, 0x0c59, - 0x0c60, 0x0c63, - 0x0c66, 0x0c6f, - 0x0c78, 0x0c7f, - 0x0c82, 0x0c83, - 0x0c85, 0x0c8c, - 0x0c8e, 0x0c90, - 0x0c92, 0x0ca8, - 0x0caa, 0x0cb3, - 0x0cb5, 0x0cb9, - 0x0cbc, 0x0cc4, - 0x0cc6, 0x0cc8, - 0x0cca, 0x0ccd, - 0x0cd5, 0x0cd6, - 0x0cde, 0x0cde, - 0x0ce0, 0x0ce3, - 0x0ce6, 0x0cef, - 0x0cf1, 0x0cf2, - 0x0d02, 0x0d03, - 0x0d05, 0x0d0c, - 0x0d0e, 0x0d10, - 0x0d12, 0x0d3a, - 0x0d3d, 0x0d44, - 0x0d46, 0x0d48, - 0x0d4a, 0x0d4e, - 0x0d57, 0x0d57, - 0x0d60, 0x0d63, - 0x0d66, 0x0d75, - 0x0d79, 0x0d7f, - 0x0d82, 0x0d83, - 0x0d85, 0x0d96, - 0x0d9a, 0x0db1, - 0x0db3, 0x0dbb, - 0x0dbd, 0x0dbd, - 0x0dc0, 0x0dc6, - 0x0dca, 0x0dca, - 0x0dcf, 0x0dd4, - 0x0dd6, 0x0dd6, - 0x0dd8, 0x0ddf, - 0x0df2, 0x0df4, - 0x0e01, 0x0e3a, - 0x0e3f, 0x0e5b, - 0x0e81, 0x0e82, - 0x0e84, 0x0e84, - 0x0e87, 0x0e88, - 0x0e8a, 0x0e8a, - 0x0e8d, 0x0e8d, - 0x0e94, 0x0e97, - 0x0e99, 0x0e9f, - 0x0ea1, 0x0ea3, - 0x0ea5, 0x0ea5, - 0x0ea7, 0x0ea7, - 0x0eaa, 0x0eab, - 0x0ead, 0x0eb9, - 0x0ebb, 0x0ebd, - 0x0ec0, 0x0ec4, - 0x0ec6, 0x0ec6, - 0x0ec8, 0x0ecd, - 0x0ed0, 0x0ed9, - 0x0edc, 0x0edf, - 0x0f00, 0x0f47, - 0x0f49, 0x0f6c, - 0x0f71, 0x0f97, - 0x0f99, 0x0fbc, - 0x0fbe, 0x0fcc, - 0x0fce, 0x0fda, - 0x1000, 0x10c5, - 0x10c7, 0x10c7, - 0x10cd, 0x10cd, - 0x10d0, 0x1248, - 0x124a, 0x124d, - 0x1250, 0x1256, - 0x1258, 0x1258, - 0x125a, 0x125d, - 0x1260, 0x1288, - 0x128a, 0x128d, - 0x1290, 0x12b0, - 0x12b2, 0x12b5, - 0x12b8, 0x12be, - 0x12c0, 0x12c0, - 0x12c2, 0x12c5, - 0x12c8, 0x12d6, - 0x12d8, 0x1310, - 0x1312, 0x1315, - 0x1318, 0x135a, - 0x135d, 0x137c, - 0x1380, 0x1399, - 0x13a0, 0x13f4, - 0x1400, 0x169c, - 0x16a0, 0x16f0, - 0x1700, 0x170c, - 0x170e, 0x1714, - 0x1720, 0x1736, - 0x1740, 0x1753, - 0x1760, 0x176c, - 0x176e, 0x1770, - 0x1772, 0x1773, - 0x1780, 0x17dd, - 0x17e0, 0x17e9, - 0x17f0, 0x17f9, - 0x1800, 0x180e, - 0x1810, 0x1819, - 0x1820, 0x1877, - 0x1880, 0x18aa, - 0x18b0, 0x18f5, - 0x1900, 0x191c, - 0x1920, 0x192b, - 0x1930, 0x193b, - 0x1940, 0x1940, - 0x1944, 0x196d, - 0x1970, 0x1974, - 0x1980, 0x19ab, - 0x19b0, 0x19c9, - 0x19d0, 0x19da, - 0x19de, 0x1a1b, - 0x1a1e, 0x1a5e, - 0x1a60, 0x1a7c, - 0x1a7f, 0x1a89, - 0x1a90, 0x1a99, - 0x1aa0, 0x1aad, - 0x1b00, 0x1b4b, - 0x1b50, 0x1b7c, - 0x1b80, 0x1bf3, - 0x1bfc, 0x1c37, - 0x1c3b, 0x1c49, - 0x1c4d, 0x1c7f, - 0x1cc0, 0x1cc7, - 0x1cd0, 0x1cf6, - 0x1d00, 0x1de6, - 0x1dfc, 0x1f15, - 0x1f18, 0x1f1d, - 0x1f20, 0x1f45, - 0x1f48, 0x1f4d, - 0x1f50, 0x1f57, - 0x1f59, 0x1f59, - 0x1f5b, 0x1f5b, - 0x1f5d, 0x1f5d, - 0x1f5f, 0x1f7d, - 0x1f80, 0x1fb4, - 0x1fb6, 0x1fc4, - 0x1fc6, 0x1fd3, - 0x1fd6, 0x1fdb, - 0x1fdd, 0x1fef, - 0x1ff2, 0x1ff4, - 0x1ff6, 0x1ffe, - 0x2000, 0x2064, - 0x2066, 0x2071, - 0x2074, 0x208e, - 0x2090, 0x209c, - 0x20a0, 0x20ba, - 0x20d0, 0x20f0, - 0x2100, 0x2189, - 0x2190, 0x23f3, - 0x2400, 0x2426, - 0x2440, 0x244a, - 0x2460, 0x26ff, - 0x2701, 0x2b4c, - 0x2b50, 0x2b59, - 0x2c00, 0x2c2e, - 0x2c30, 0x2c5e, - 0x2c60, 0x2cf3, - 0x2cf9, 0x2d25, - 0x2d27, 0x2d27, - 0x2d2d, 0x2d2d, - 0x2d30, 0x2d67, - 0x2d6f, 0x2d70, - 0x2d7f, 0x2d96, - 0x2da0, 0x2da6, - 0x2da8, 0x2dae, - 0x2db0, 0x2db6, - 0x2db8, 0x2dbe, - 0x2dc0, 0x2dc6, - 0x2dc8, 0x2dce, - 0x2dd0, 0x2dd6, - 0x2dd8, 0x2dde, - 0x2de0, 0x2e3b, - 0x2e80, 0x2e99, - 0x2e9b, 0x2ef3, - 0x2f00, 0x2fd5, - 0x2ff0, 0x2ffb, - 0x3000, 0x303f, - 0x3041, 0x3096, - 0x3099, 0x30ff, - 0x3105, 0x312d, - 0x3131, 0x318e, - 0x3190, 0x31ba, - 0x31c0, 0x31e3, - 0x31f0, 0x321e, - 0x3220, 0x32fe, - 0x3300, 0x4db5, - 0x4dc0, 0x9fcc, - 0xa000, 0xa48c, - 0xa490, 0xa4c6, - 0xa4d0, 0xa62b, - 0xa640, 0xa697, - 0xa69f, 0xa6f7, - 0xa700, 0xa78e, - 0xa790, 0xa793, - 0xa7a0, 0xa7aa, - 0xa7f8, 0xa82b, - 0xa830, 0xa839, - 0xa840, 0xa877, - 0xa880, 0xa8c4, - 0xa8ce, 0xa8d9, - 0xa8e0, 0xa8fb, - 0xa900, 0xa953, - 0xa95f, 0xa97c, - 0xa980, 0xa9cd, - 0xa9cf, 0xa9d9, - 0xa9de, 0xa9df, - 0xaa00, 0xaa36, - 0xaa40, 0xaa4d, - 0xaa50, 0xaa59, - 0xaa5c, 0xaa7b, - 0xaa80, 0xaac2, - 0xaadb, 0xaaf6, - 0xab01, 0xab06, - 0xab09, 0xab0e, - 0xab11, 0xab16, - 0xab20, 0xab26, - 0xab28, 0xab2e, - 0xabc0, 0xabed, - 0xabf0, 0xabf9, - 0xac00, 0xd7a3, - 0xd7b0, 0xd7c6, - 0xd7cb, 0xd7fb, - 0xd800, 0xfa6d, - 0xfa70, 0xfad9, - 0xfb00, 0xfb06, - 0xfb13, 0xfb17, - 0xfb1d, 0xfb36, - 0xfb38, 0xfb3c, - 0xfb3e, 0xfb3e, - 0xfb40, 0xfb41, - 0xfb43, 0xfb44, - 0xfb46, 0xfbc1, - 0xfbd3, 0xfd3f, - 0xfd50, 0xfd8f, - 0xfd92, 0xfdc7, - 0xfdd0, 0xfdfd, - 0xfe00, 0xfe19, - 0xfe20, 0xfe26, - 0xfe30, 0xfe52, - 0xfe54, 0xfe66, - 0xfe68, 0xfe6b, - 0xfe70, 0xfe74, - 0xfe76, 0xfefc, - 0xfeff, 0xfeff, - 0xff01, 0xffbe, - 0xffc2, 0xffc7, - 0xffca, 0xffcf, - 0xffd2, 0xffd7, - 0xffda, 0xffdc, - 0xffe0, 0xffe6, - 0xffe8, 0xffee, - 0xfff9, 0x1000b, - 0x1000d, 0x10026, - 0x10028, 0x1003a, - 0x1003c, 0x1003d, - 0x1003f, 0x1004d, - 0x10050, 0x1005d, - 0x10080, 0x100fa, - 0x10100, 0x10102, - 0x10107, 0x10133, - 0x10137, 0x1018a, - 0x10190, 0x1019b, - 0x101d0, 0x101fd, - 0x10280, 0x1029c, - 0x102a0, 0x102d0, - 0x10300, 0x1031e, - 0x10320, 0x10323, - 0x10330, 0x1034a, - 0x10380, 0x1039d, - 0x1039f, 0x103c3, - 0x103c8, 0x103d5, - 0x10400, 0x1049d, - 0x104a0, 0x104a9, - 0x10800, 0x10805, - 0x10808, 0x10808, - 0x1080a, 0x10835, - 0x10837, 0x10838, - 0x1083c, 0x1083c, - 0x1083f, 0x10855, - 0x10857, 0x1085f, - 0x10900, 0x1091b, - 0x1091f, 0x10939, - 0x1093f, 0x1093f, - 0x10980, 0x109b7, - 0x109be, 0x109bf, - 0x10a00, 0x10a03, - 0x10a05, 0x10a06, - 0x10a0c, 0x10a13, - 0x10a15, 0x10a17, - 0x10a19, 0x10a33, - 0x10a38, 0x10a3a, - 0x10a3f, 0x10a47, - 0x10a50, 0x10a58, - 0x10a60, 0x10a7f, - 0x10b00, 0x10b35, - 0x10b39, 0x10b55, - 0x10b58, 0x10b72, - 0x10b78, 0x10b7f, - 0x10c00, 0x10c48, - 0x10e60, 0x10e7e, - 0x11000, 0x1104d, - 0x11052, 0x1106f, - 0x11080, 0x110c1, - 0x110d0, 0x110e8, - 0x110f0, 0x110f9, - 0x11100, 0x11134, - 0x11136, 0x11143, - 0x11180, 0x111c8, - 0x111d0, 0x111d9, - 0x11680, 0x116b7, - 0x116c0, 0x116c9, - 0x12000, 0x1236e, - 0x12400, 0x12462, - 0x12470, 0x12473, - 0x13000, 0x1342e, - 0x16800, 0x16a38, - 0x16f00, 0x16f44, - 0x16f50, 0x16f7e, - 0x16f8f, 0x16f9f, - 0x1b000, 0x1b001, - 0x1d000, 0x1d0f5, - 0x1d100, 0x1d126, - 0x1d129, 0x1d1dd, - 0x1d200, 0x1d245, - 0x1d300, 0x1d356, - 0x1d360, 0x1d371, - 0x1d400, 0x1d454, - 0x1d456, 0x1d49c, - 0x1d49e, 0x1d49f, - 0x1d4a2, 0x1d4a2, - 0x1d4a5, 0x1d4a6, - 0x1d4a9, 0x1d4ac, - 0x1d4ae, 0x1d4b9, - 0x1d4bb, 0x1d4bb, - 0x1d4bd, 0x1d4c3, - 0x1d4c5, 0x1d505, - 0x1d507, 0x1d50a, - 0x1d50d, 0x1d514, - 0x1d516, 0x1d51c, - 0x1d51e, 0x1d539, - 0x1d53b, 0x1d53e, - 0x1d540, 0x1d544, - 0x1d546, 0x1d546, - 0x1d54a, 0x1d550, - 0x1d552, 0x1d6a5, - 0x1d6a8, 0x1d7cb, - 0x1d7ce, 0x1d7ff, - 0x1ee00, 0x1ee03, - 0x1ee05, 0x1ee1f, - 0x1ee21, 0x1ee22, - 0x1ee24, 0x1ee24, - 0x1ee27, 0x1ee27, - 0x1ee29, 0x1ee32, - 0x1ee34, 0x1ee37, - 0x1ee39, 0x1ee39, - 0x1ee3b, 0x1ee3b, - 0x1ee42, 0x1ee42, - 0x1ee47, 0x1ee47, - 0x1ee49, 0x1ee49, - 0x1ee4b, 0x1ee4b, - 0x1ee4d, 0x1ee4f, - 0x1ee51, 0x1ee52, - 0x1ee54, 0x1ee54, - 0x1ee57, 0x1ee57, - 0x1ee59, 0x1ee59, - 0x1ee5b, 0x1ee5b, - 0x1ee5d, 0x1ee5d, - 0x1ee5f, 0x1ee5f, - 0x1ee61, 0x1ee62, - 0x1ee64, 0x1ee64, - 0x1ee67, 0x1ee6a, - 0x1ee6c, 0x1ee72, - 0x1ee74, 0x1ee77, - 0x1ee79, 0x1ee7c, - 0x1ee7e, 0x1ee7e, - 0x1ee80, 0x1ee89, - 0x1ee8b, 0x1ee9b, - 0x1eea1, 0x1eea3, - 0x1eea5, 0x1eea9, - 0x1eeab, 0x1eebb, - 0x1eef0, 0x1eef1, - 0x1f000, 0x1f02b, - 0x1f030, 0x1f093, - 0x1f0a0, 0x1f0ae, - 0x1f0b1, 0x1f0be, - 0x1f0c1, 0x1f0cf, - 0x1f0d1, 0x1f0df, - 0x1f100, 0x1f10a, - 0x1f110, 0x1f12e, - 0x1f130, 0x1f16b, - 0x1f170, 0x1f19a, - 0x1f1e6, 0x1f202, - 0x1f210, 0x1f23a, - 0x1f240, 0x1f248, - 0x1f250, 0x1f251, - 0x1f300, 0x1f320, - 0x1f330, 0x1f335, - 0x1f337, 0x1f37c, - 0x1f380, 0x1f393, - 0x1f3a0, 0x1f3c4, - 0x1f3c6, 0x1f3ca, - 0x1f3e0, 0x1f3f0, - 0x1f400, 0x1f43e, - 0x1f440, 0x1f440, - 0x1f442, 0x1f4f7, - 0x1f4f9, 0x1f4fc, - 0x1f500, 0x1f53d, - 0x1f540, 0x1f543, - 0x1f550, 0x1f567, - 0x1f5fb, 0x1f640, - 0x1f645, 0x1f64f, - 0x1f680, 0x1f6c5, - 0x1f700, 0x1f773, - 0x1fffe, 0x2a6d6, - 0x2a700, 0x2b734, - 0x2b740, 0x2b81d, - 0x2f800, 0x2fa1d, - 0x2fffe, 0x2ffff, - 0x3fffe, 0x3ffff, - 0x4fffe, 0x4ffff, - 0x5fffe, 0x5ffff, - 0x6fffe, 0x6ffff, - 0x7fffe, 0x7ffff, - 0x8fffe, 0x8ffff, - 0x9fffe, 0x9ffff, - 0xafffe, 0xaffff, - 0xbfffe, 0xbffff, - 0xcfffe, 0xcffff, - 0xdfffe, 0xdffff, - 0xe0001, 0xe0001, - 0xe0020, 0xe007f, - 0xe0100, 0xe01ef, - 0xefffe, 0x10ffff, -}; /* CR_Age_6_3 */ - -/* 'Age_7_0': Derived Age 7.0 */ -static const OnigCodePoint CR_Age_7_0[] = { - 610, - 0x0000, 0x0377, - 0x037a, 0x037f, - 0x0384, 0x038a, - 0x038c, 0x038c, - 0x038e, 0x03a1, - 0x03a3, 0x052f, - 0x0531, 0x0556, - 0x0559, 0x055f, - 0x0561, 0x0587, - 0x0589, 0x058a, - 0x058d, 0x058f, - 0x0591, 0x05c7, - 0x05d0, 0x05ea, - 0x05f0, 0x05f4, - 0x0600, 0x061c, - 0x061e, 0x070d, - 0x070f, 0x074a, - 0x074d, 0x07b1, - 0x07c0, 0x07fa, - 0x0800, 0x082d, - 0x0830, 0x083e, - 0x0840, 0x085b, - 0x085e, 0x085e, - 0x08a0, 0x08b2, - 0x08e4, 0x0983, - 0x0985, 0x098c, - 0x098f, 0x0990, - 0x0993, 0x09a8, - 0x09aa, 0x09b0, - 0x09b2, 0x09b2, - 0x09b6, 0x09b9, - 0x09bc, 0x09c4, - 0x09c7, 0x09c8, - 0x09cb, 0x09ce, - 0x09d7, 0x09d7, - 0x09dc, 0x09dd, - 0x09df, 0x09e3, - 0x09e6, 0x09fb, - 0x0a01, 0x0a03, - 0x0a05, 0x0a0a, - 0x0a0f, 0x0a10, - 0x0a13, 0x0a28, - 0x0a2a, 0x0a30, - 0x0a32, 0x0a33, - 0x0a35, 0x0a36, - 0x0a38, 0x0a39, - 0x0a3c, 0x0a3c, - 0x0a3e, 0x0a42, - 0x0a47, 0x0a48, - 0x0a4b, 0x0a4d, - 0x0a51, 0x0a51, - 0x0a59, 0x0a5c, - 0x0a5e, 0x0a5e, - 0x0a66, 0x0a75, - 0x0a81, 0x0a83, - 0x0a85, 0x0a8d, - 0x0a8f, 0x0a91, - 0x0a93, 0x0aa8, - 0x0aaa, 0x0ab0, - 0x0ab2, 0x0ab3, - 0x0ab5, 0x0ab9, - 0x0abc, 0x0ac5, - 0x0ac7, 0x0ac9, - 0x0acb, 0x0acd, - 0x0ad0, 0x0ad0, - 0x0ae0, 0x0ae3, - 0x0ae6, 0x0af1, - 0x0b01, 0x0b03, - 0x0b05, 0x0b0c, - 0x0b0f, 0x0b10, - 0x0b13, 0x0b28, - 0x0b2a, 0x0b30, - 0x0b32, 0x0b33, - 0x0b35, 0x0b39, - 0x0b3c, 0x0b44, - 0x0b47, 0x0b48, - 0x0b4b, 0x0b4d, - 0x0b56, 0x0b57, - 0x0b5c, 0x0b5d, - 0x0b5f, 0x0b63, - 0x0b66, 0x0b77, - 0x0b82, 0x0b83, - 0x0b85, 0x0b8a, - 0x0b8e, 0x0b90, - 0x0b92, 0x0b95, - 0x0b99, 0x0b9a, - 0x0b9c, 0x0b9c, - 0x0b9e, 0x0b9f, - 0x0ba3, 0x0ba4, - 0x0ba8, 0x0baa, - 0x0bae, 0x0bb9, - 0x0bbe, 0x0bc2, - 0x0bc6, 0x0bc8, - 0x0bca, 0x0bcd, - 0x0bd0, 0x0bd0, - 0x0bd7, 0x0bd7, - 0x0be6, 0x0bfa, - 0x0c00, 0x0c03, - 0x0c05, 0x0c0c, - 0x0c0e, 0x0c10, - 0x0c12, 0x0c28, - 0x0c2a, 0x0c39, - 0x0c3d, 0x0c44, - 0x0c46, 0x0c48, - 0x0c4a, 0x0c4d, - 0x0c55, 0x0c56, - 0x0c58, 0x0c59, - 0x0c60, 0x0c63, - 0x0c66, 0x0c6f, - 0x0c78, 0x0c7f, - 0x0c81, 0x0c83, - 0x0c85, 0x0c8c, - 0x0c8e, 0x0c90, - 0x0c92, 0x0ca8, - 0x0caa, 0x0cb3, - 0x0cb5, 0x0cb9, - 0x0cbc, 0x0cc4, - 0x0cc6, 0x0cc8, - 0x0cca, 0x0ccd, - 0x0cd5, 0x0cd6, - 0x0cde, 0x0cde, - 0x0ce0, 0x0ce3, - 0x0ce6, 0x0cef, - 0x0cf1, 0x0cf2, - 0x0d01, 0x0d03, - 0x0d05, 0x0d0c, - 0x0d0e, 0x0d10, - 0x0d12, 0x0d3a, - 0x0d3d, 0x0d44, - 0x0d46, 0x0d48, - 0x0d4a, 0x0d4e, - 0x0d57, 0x0d57, - 0x0d60, 0x0d63, - 0x0d66, 0x0d75, - 0x0d79, 0x0d7f, - 0x0d82, 0x0d83, - 0x0d85, 0x0d96, - 0x0d9a, 0x0db1, - 0x0db3, 0x0dbb, - 0x0dbd, 0x0dbd, - 0x0dc0, 0x0dc6, - 0x0dca, 0x0dca, - 0x0dcf, 0x0dd4, - 0x0dd6, 0x0dd6, - 0x0dd8, 0x0ddf, - 0x0de6, 0x0def, - 0x0df2, 0x0df4, - 0x0e01, 0x0e3a, - 0x0e3f, 0x0e5b, - 0x0e81, 0x0e82, - 0x0e84, 0x0e84, - 0x0e87, 0x0e88, - 0x0e8a, 0x0e8a, - 0x0e8d, 0x0e8d, - 0x0e94, 0x0e97, - 0x0e99, 0x0e9f, - 0x0ea1, 0x0ea3, - 0x0ea5, 0x0ea5, - 0x0ea7, 0x0ea7, - 0x0eaa, 0x0eab, - 0x0ead, 0x0eb9, - 0x0ebb, 0x0ebd, - 0x0ec0, 0x0ec4, - 0x0ec6, 0x0ec6, - 0x0ec8, 0x0ecd, - 0x0ed0, 0x0ed9, - 0x0edc, 0x0edf, - 0x0f00, 0x0f47, - 0x0f49, 0x0f6c, - 0x0f71, 0x0f97, - 0x0f99, 0x0fbc, - 0x0fbe, 0x0fcc, - 0x0fce, 0x0fda, - 0x1000, 0x10c5, - 0x10c7, 0x10c7, - 0x10cd, 0x10cd, - 0x10d0, 0x1248, - 0x124a, 0x124d, - 0x1250, 0x1256, - 0x1258, 0x1258, - 0x125a, 0x125d, - 0x1260, 0x1288, - 0x128a, 0x128d, - 0x1290, 0x12b0, - 0x12b2, 0x12b5, - 0x12b8, 0x12be, - 0x12c0, 0x12c0, - 0x12c2, 0x12c5, - 0x12c8, 0x12d6, - 0x12d8, 0x1310, - 0x1312, 0x1315, - 0x1318, 0x135a, - 0x135d, 0x137c, - 0x1380, 0x1399, - 0x13a0, 0x13f4, - 0x1400, 0x169c, - 0x16a0, 0x16f8, - 0x1700, 0x170c, - 0x170e, 0x1714, - 0x1720, 0x1736, - 0x1740, 0x1753, - 0x1760, 0x176c, - 0x176e, 0x1770, - 0x1772, 0x1773, - 0x1780, 0x17dd, - 0x17e0, 0x17e9, - 0x17f0, 0x17f9, - 0x1800, 0x180e, - 0x1810, 0x1819, - 0x1820, 0x1877, - 0x1880, 0x18aa, - 0x18b0, 0x18f5, - 0x1900, 0x191e, - 0x1920, 0x192b, - 0x1930, 0x193b, - 0x1940, 0x1940, - 0x1944, 0x196d, - 0x1970, 0x1974, - 0x1980, 0x19ab, - 0x19b0, 0x19c9, - 0x19d0, 0x19da, - 0x19de, 0x1a1b, - 0x1a1e, 0x1a5e, - 0x1a60, 0x1a7c, - 0x1a7f, 0x1a89, - 0x1a90, 0x1a99, - 0x1aa0, 0x1aad, - 0x1ab0, 0x1abe, - 0x1b00, 0x1b4b, - 0x1b50, 0x1b7c, - 0x1b80, 0x1bf3, - 0x1bfc, 0x1c37, - 0x1c3b, 0x1c49, - 0x1c4d, 0x1c7f, - 0x1cc0, 0x1cc7, - 0x1cd0, 0x1cf6, - 0x1cf8, 0x1cf9, - 0x1d00, 0x1df5, - 0x1dfc, 0x1f15, - 0x1f18, 0x1f1d, - 0x1f20, 0x1f45, - 0x1f48, 0x1f4d, - 0x1f50, 0x1f57, - 0x1f59, 0x1f59, - 0x1f5b, 0x1f5b, - 0x1f5d, 0x1f5d, - 0x1f5f, 0x1f7d, - 0x1f80, 0x1fb4, - 0x1fb6, 0x1fc4, - 0x1fc6, 0x1fd3, - 0x1fd6, 0x1fdb, - 0x1fdd, 0x1fef, - 0x1ff2, 0x1ff4, - 0x1ff6, 0x1ffe, - 0x2000, 0x2064, - 0x2066, 0x2071, - 0x2074, 0x208e, - 0x2090, 0x209c, - 0x20a0, 0x20bd, - 0x20d0, 0x20f0, - 0x2100, 0x2189, - 0x2190, 0x23fa, - 0x2400, 0x2426, - 0x2440, 0x244a, - 0x2460, 0x2b73, - 0x2b76, 0x2b95, - 0x2b98, 0x2bb9, - 0x2bbd, 0x2bc8, - 0x2bca, 0x2bd1, - 0x2c00, 0x2c2e, - 0x2c30, 0x2c5e, - 0x2c60, 0x2cf3, - 0x2cf9, 0x2d25, - 0x2d27, 0x2d27, - 0x2d2d, 0x2d2d, - 0x2d30, 0x2d67, - 0x2d6f, 0x2d70, - 0x2d7f, 0x2d96, - 0x2da0, 0x2da6, - 0x2da8, 0x2dae, - 0x2db0, 0x2db6, - 0x2db8, 0x2dbe, - 0x2dc0, 0x2dc6, - 0x2dc8, 0x2dce, - 0x2dd0, 0x2dd6, - 0x2dd8, 0x2dde, - 0x2de0, 0x2e42, - 0x2e80, 0x2e99, - 0x2e9b, 0x2ef3, - 0x2f00, 0x2fd5, - 0x2ff0, 0x2ffb, - 0x3000, 0x303f, - 0x3041, 0x3096, - 0x3099, 0x30ff, - 0x3105, 0x312d, - 0x3131, 0x318e, - 0x3190, 0x31ba, - 0x31c0, 0x31e3, - 0x31f0, 0x321e, - 0x3220, 0x32fe, - 0x3300, 0x4db5, - 0x4dc0, 0x9fcc, - 0xa000, 0xa48c, - 0xa490, 0xa4c6, - 0xa4d0, 0xa62b, - 0xa640, 0xa69d, - 0xa69f, 0xa6f7, - 0xa700, 0xa78e, - 0xa790, 0xa7ad, - 0xa7b0, 0xa7b1, - 0xa7f7, 0xa82b, - 0xa830, 0xa839, - 0xa840, 0xa877, - 0xa880, 0xa8c4, - 0xa8ce, 0xa8d9, - 0xa8e0, 0xa8fb, - 0xa900, 0xa953, - 0xa95f, 0xa97c, - 0xa980, 0xa9cd, - 0xa9cf, 0xa9d9, - 0xa9de, 0xa9fe, - 0xaa00, 0xaa36, - 0xaa40, 0xaa4d, - 0xaa50, 0xaa59, - 0xaa5c, 0xaac2, - 0xaadb, 0xaaf6, - 0xab01, 0xab06, - 0xab09, 0xab0e, - 0xab11, 0xab16, - 0xab20, 0xab26, - 0xab28, 0xab2e, - 0xab30, 0xab5f, - 0xab64, 0xab65, - 0xabc0, 0xabed, - 0xabf0, 0xabf9, - 0xac00, 0xd7a3, - 0xd7b0, 0xd7c6, - 0xd7cb, 0xd7fb, - 0xd800, 0xfa6d, - 0xfa70, 0xfad9, - 0xfb00, 0xfb06, - 0xfb13, 0xfb17, - 0xfb1d, 0xfb36, - 0xfb38, 0xfb3c, - 0xfb3e, 0xfb3e, - 0xfb40, 0xfb41, - 0xfb43, 0xfb44, - 0xfb46, 0xfbc1, - 0xfbd3, 0xfd3f, - 0xfd50, 0xfd8f, - 0xfd92, 0xfdc7, - 0xfdd0, 0xfdfd, - 0xfe00, 0xfe19, - 0xfe20, 0xfe2d, - 0xfe30, 0xfe52, - 0xfe54, 0xfe66, - 0xfe68, 0xfe6b, - 0xfe70, 0xfe74, - 0xfe76, 0xfefc, - 0xfeff, 0xfeff, - 0xff01, 0xffbe, - 0xffc2, 0xffc7, - 0xffca, 0xffcf, - 0xffd2, 0xffd7, - 0xffda, 0xffdc, - 0xffe0, 0xffe6, - 0xffe8, 0xffee, - 0xfff9, 0x1000b, - 0x1000d, 0x10026, - 0x10028, 0x1003a, - 0x1003c, 0x1003d, - 0x1003f, 0x1004d, - 0x10050, 0x1005d, - 0x10080, 0x100fa, - 0x10100, 0x10102, - 0x10107, 0x10133, - 0x10137, 0x1018c, - 0x10190, 0x1019b, - 0x101a0, 0x101a0, - 0x101d0, 0x101fd, - 0x10280, 0x1029c, - 0x102a0, 0x102d0, - 0x102e0, 0x102fb, - 0x10300, 0x10323, - 0x10330, 0x1034a, - 0x10350, 0x1037a, - 0x10380, 0x1039d, - 0x1039f, 0x103c3, - 0x103c8, 0x103d5, - 0x10400, 0x1049d, - 0x104a0, 0x104a9, - 0x10500, 0x10527, - 0x10530, 0x10563, - 0x1056f, 0x1056f, - 0x10600, 0x10736, - 0x10740, 0x10755, - 0x10760, 0x10767, - 0x10800, 0x10805, - 0x10808, 0x10808, - 0x1080a, 0x10835, - 0x10837, 0x10838, - 0x1083c, 0x1083c, - 0x1083f, 0x10855, - 0x10857, 0x1089e, - 0x108a7, 0x108af, - 0x10900, 0x1091b, - 0x1091f, 0x10939, - 0x1093f, 0x1093f, - 0x10980, 0x109b7, - 0x109be, 0x109bf, - 0x10a00, 0x10a03, - 0x10a05, 0x10a06, - 0x10a0c, 0x10a13, - 0x10a15, 0x10a17, - 0x10a19, 0x10a33, - 0x10a38, 0x10a3a, - 0x10a3f, 0x10a47, - 0x10a50, 0x10a58, - 0x10a60, 0x10a9f, - 0x10ac0, 0x10ae6, - 0x10aeb, 0x10af6, - 0x10b00, 0x10b35, - 0x10b39, 0x10b55, - 0x10b58, 0x10b72, - 0x10b78, 0x10b91, - 0x10b99, 0x10b9c, - 0x10ba9, 0x10baf, - 0x10c00, 0x10c48, - 0x10e60, 0x10e7e, - 0x11000, 0x1104d, - 0x11052, 0x1106f, - 0x1107f, 0x110c1, - 0x110d0, 0x110e8, - 0x110f0, 0x110f9, - 0x11100, 0x11134, - 0x11136, 0x11143, - 0x11150, 0x11176, - 0x11180, 0x111c8, - 0x111cd, 0x111cd, - 0x111d0, 0x111da, - 0x111e1, 0x111f4, - 0x11200, 0x11211, - 0x11213, 0x1123d, - 0x112b0, 0x112ea, - 0x112f0, 0x112f9, - 0x11301, 0x11303, - 0x11305, 0x1130c, - 0x1130f, 0x11310, - 0x11313, 0x11328, - 0x1132a, 0x11330, - 0x11332, 0x11333, - 0x11335, 0x11339, - 0x1133c, 0x11344, - 0x11347, 0x11348, - 0x1134b, 0x1134d, - 0x11357, 0x11357, - 0x1135d, 0x11363, - 0x11366, 0x1136c, - 0x11370, 0x11374, - 0x11480, 0x114c7, - 0x114d0, 0x114d9, - 0x11580, 0x115b5, - 0x115b8, 0x115c9, - 0x11600, 0x11644, - 0x11650, 0x11659, - 0x11680, 0x116b7, - 0x116c0, 0x116c9, - 0x118a0, 0x118f2, - 0x118ff, 0x118ff, - 0x11ac0, 0x11af8, - 0x12000, 0x12398, - 0x12400, 0x1246e, - 0x12470, 0x12474, - 0x13000, 0x1342e, - 0x16800, 0x16a38, - 0x16a40, 0x16a5e, - 0x16a60, 0x16a69, - 0x16a6e, 0x16a6f, - 0x16ad0, 0x16aed, - 0x16af0, 0x16af5, - 0x16b00, 0x16b45, - 0x16b50, 0x16b59, - 0x16b5b, 0x16b61, - 0x16b63, 0x16b77, - 0x16b7d, 0x16b8f, - 0x16f00, 0x16f44, - 0x16f50, 0x16f7e, - 0x16f8f, 0x16f9f, - 0x1b000, 0x1b001, - 0x1bc00, 0x1bc6a, - 0x1bc70, 0x1bc7c, - 0x1bc80, 0x1bc88, - 0x1bc90, 0x1bc99, - 0x1bc9c, 0x1bca3, - 0x1d000, 0x1d0f5, - 0x1d100, 0x1d126, - 0x1d129, 0x1d1dd, - 0x1d200, 0x1d245, - 0x1d300, 0x1d356, - 0x1d360, 0x1d371, - 0x1d400, 0x1d454, - 0x1d456, 0x1d49c, - 0x1d49e, 0x1d49f, - 0x1d4a2, 0x1d4a2, - 0x1d4a5, 0x1d4a6, - 0x1d4a9, 0x1d4ac, - 0x1d4ae, 0x1d4b9, - 0x1d4bb, 0x1d4bb, - 0x1d4bd, 0x1d4c3, - 0x1d4c5, 0x1d505, - 0x1d507, 0x1d50a, - 0x1d50d, 0x1d514, - 0x1d516, 0x1d51c, - 0x1d51e, 0x1d539, - 0x1d53b, 0x1d53e, - 0x1d540, 0x1d544, - 0x1d546, 0x1d546, - 0x1d54a, 0x1d550, - 0x1d552, 0x1d6a5, - 0x1d6a8, 0x1d7cb, - 0x1d7ce, 0x1d7ff, - 0x1e800, 0x1e8c4, - 0x1e8c7, 0x1e8d6, - 0x1ee00, 0x1ee03, - 0x1ee05, 0x1ee1f, - 0x1ee21, 0x1ee22, - 0x1ee24, 0x1ee24, - 0x1ee27, 0x1ee27, - 0x1ee29, 0x1ee32, - 0x1ee34, 0x1ee37, - 0x1ee39, 0x1ee39, - 0x1ee3b, 0x1ee3b, - 0x1ee42, 0x1ee42, - 0x1ee47, 0x1ee47, - 0x1ee49, 0x1ee49, - 0x1ee4b, 0x1ee4b, - 0x1ee4d, 0x1ee4f, - 0x1ee51, 0x1ee52, - 0x1ee54, 0x1ee54, - 0x1ee57, 0x1ee57, - 0x1ee59, 0x1ee59, - 0x1ee5b, 0x1ee5b, - 0x1ee5d, 0x1ee5d, - 0x1ee5f, 0x1ee5f, - 0x1ee61, 0x1ee62, - 0x1ee64, 0x1ee64, - 0x1ee67, 0x1ee6a, - 0x1ee6c, 0x1ee72, - 0x1ee74, 0x1ee77, - 0x1ee79, 0x1ee7c, - 0x1ee7e, 0x1ee7e, - 0x1ee80, 0x1ee89, - 0x1ee8b, 0x1ee9b, - 0x1eea1, 0x1eea3, - 0x1eea5, 0x1eea9, - 0x1eeab, 0x1eebb, - 0x1eef0, 0x1eef1, - 0x1f000, 0x1f02b, - 0x1f030, 0x1f093, - 0x1f0a0, 0x1f0ae, - 0x1f0b1, 0x1f0bf, - 0x1f0c1, 0x1f0cf, - 0x1f0d1, 0x1f0f5, - 0x1f100, 0x1f10c, - 0x1f110, 0x1f12e, - 0x1f130, 0x1f16b, - 0x1f170, 0x1f19a, - 0x1f1e6, 0x1f202, - 0x1f210, 0x1f23a, - 0x1f240, 0x1f248, - 0x1f250, 0x1f251, - 0x1f300, 0x1f32c, - 0x1f330, 0x1f37d, - 0x1f380, 0x1f3ce, - 0x1f3d4, 0x1f3f7, - 0x1f400, 0x1f4fe, - 0x1f500, 0x1f54a, - 0x1f550, 0x1f579, - 0x1f57b, 0x1f5a3, - 0x1f5a5, 0x1f642, - 0x1f645, 0x1f6cf, - 0x1f6e0, 0x1f6ec, - 0x1f6f0, 0x1f6f3, - 0x1f700, 0x1f773, - 0x1f780, 0x1f7d4, - 0x1f800, 0x1f80b, - 0x1f810, 0x1f847, - 0x1f850, 0x1f859, - 0x1f860, 0x1f887, - 0x1f890, 0x1f8ad, - 0x1fffe, 0x2a6d6, - 0x2a700, 0x2b734, - 0x2b740, 0x2b81d, - 0x2f800, 0x2fa1d, - 0x2fffe, 0x2ffff, - 0x3fffe, 0x3ffff, - 0x4fffe, 0x4ffff, - 0x5fffe, 0x5ffff, - 0x6fffe, 0x6ffff, - 0x7fffe, 0x7ffff, - 0x8fffe, 0x8ffff, - 0x9fffe, 0x9ffff, - 0xafffe, 0xaffff, - 0xbfffe, 0xbffff, - 0xcfffe, 0xcffff, - 0xdfffe, 0xdffff, - 0xe0001, 0xe0001, - 0xe0020, 0xe007f, - 0xe0100, 0xe01ef, - 0xefffe, 0x10ffff, -}; /* CR_Age_7_0 */ - -/* 'Age_8_0': Derived Age 8.0 */ -static const OnigCodePoint CR_Age_8_0[] = { - 623, - 0x0000, 0x0377, - 0x037a, 0x037f, - 0x0384, 0x038a, - 0x038c, 0x038c, - 0x038e, 0x03a1, - 0x03a3, 0x052f, - 0x0531, 0x0556, - 0x0559, 0x055f, - 0x0561, 0x0587, - 0x0589, 0x058a, - 0x058d, 0x058f, - 0x0591, 0x05c7, - 0x05d0, 0x05ea, - 0x05f0, 0x05f4, - 0x0600, 0x061c, - 0x061e, 0x070d, - 0x070f, 0x074a, - 0x074d, 0x07b1, - 0x07c0, 0x07fa, - 0x0800, 0x082d, - 0x0830, 0x083e, - 0x0840, 0x085b, - 0x085e, 0x085e, - 0x08a0, 0x08b4, - 0x08e3, 0x0983, - 0x0985, 0x098c, - 0x098f, 0x0990, - 0x0993, 0x09a8, - 0x09aa, 0x09b0, - 0x09b2, 0x09b2, - 0x09b6, 0x09b9, - 0x09bc, 0x09c4, - 0x09c7, 0x09c8, - 0x09cb, 0x09ce, - 0x09d7, 0x09d7, - 0x09dc, 0x09dd, - 0x09df, 0x09e3, - 0x09e6, 0x09fb, - 0x0a01, 0x0a03, - 0x0a05, 0x0a0a, - 0x0a0f, 0x0a10, - 0x0a13, 0x0a28, - 0x0a2a, 0x0a30, - 0x0a32, 0x0a33, - 0x0a35, 0x0a36, - 0x0a38, 0x0a39, - 0x0a3c, 0x0a3c, - 0x0a3e, 0x0a42, - 0x0a47, 0x0a48, - 0x0a4b, 0x0a4d, - 0x0a51, 0x0a51, - 0x0a59, 0x0a5c, - 0x0a5e, 0x0a5e, - 0x0a66, 0x0a75, - 0x0a81, 0x0a83, - 0x0a85, 0x0a8d, - 0x0a8f, 0x0a91, - 0x0a93, 0x0aa8, - 0x0aaa, 0x0ab0, - 0x0ab2, 0x0ab3, - 0x0ab5, 0x0ab9, - 0x0abc, 0x0ac5, - 0x0ac7, 0x0ac9, - 0x0acb, 0x0acd, - 0x0ad0, 0x0ad0, - 0x0ae0, 0x0ae3, - 0x0ae6, 0x0af1, - 0x0af9, 0x0af9, - 0x0b01, 0x0b03, - 0x0b05, 0x0b0c, - 0x0b0f, 0x0b10, - 0x0b13, 0x0b28, - 0x0b2a, 0x0b30, - 0x0b32, 0x0b33, - 0x0b35, 0x0b39, - 0x0b3c, 0x0b44, - 0x0b47, 0x0b48, - 0x0b4b, 0x0b4d, - 0x0b56, 0x0b57, - 0x0b5c, 0x0b5d, - 0x0b5f, 0x0b63, - 0x0b66, 0x0b77, - 0x0b82, 0x0b83, - 0x0b85, 0x0b8a, - 0x0b8e, 0x0b90, - 0x0b92, 0x0b95, - 0x0b99, 0x0b9a, - 0x0b9c, 0x0b9c, - 0x0b9e, 0x0b9f, - 0x0ba3, 0x0ba4, - 0x0ba8, 0x0baa, - 0x0bae, 0x0bb9, - 0x0bbe, 0x0bc2, - 0x0bc6, 0x0bc8, - 0x0bca, 0x0bcd, - 0x0bd0, 0x0bd0, - 0x0bd7, 0x0bd7, - 0x0be6, 0x0bfa, - 0x0c00, 0x0c03, - 0x0c05, 0x0c0c, - 0x0c0e, 0x0c10, - 0x0c12, 0x0c28, - 0x0c2a, 0x0c39, - 0x0c3d, 0x0c44, - 0x0c46, 0x0c48, - 0x0c4a, 0x0c4d, - 0x0c55, 0x0c56, - 0x0c58, 0x0c5a, - 0x0c60, 0x0c63, - 0x0c66, 0x0c6f, - 0x0c78, 0x0c7f, - 0x0c81, 0x0c83, - 0x0c85, 0x0c8c, - 0x0c8e, 0x0c90, - 0x0c92, 0x0ca8, - 0x0caa, 0x0cb3, - 0x0cb5, 0x0cb9, - 0x0cbc, 0x0cc4, - 0x0cc6, 0x0cc8, - 0x0cca, 0x0ccd, - 0x0cd5, 0x0cd6, - 0x0cde, 0x0cde, - 0x0ce0, 0x0ce3, - 0x0ce6, 0x0cef, - 0x0cf1, 0x0cf2, - 0x0d01, 0x0d03, - 0x0d05, 0x0d0c, - 0x0d0e, 0x0d10, - 0x0d12, 0x0d3a, - 0x0d3d, 0x0d44, - 0x0d46, 0x0d48, - 0x0d4a, 0x0d4e, - 0x0d57, 0x0d57, - 0x0d5f, 0x0d63, - 0x0d66, 0x0d75, - 0x0d79, 0x0d7f, - 0x0d82, 0x0d83, - 0x0d85, 0x0d96, - 0x0d9a, 0x0db1, - 0x0db3, 0x0dbb, - 0x0dbd, 0x0dbd, - 0x0dc0, 0x0dc6, - 0x0dca, 0x0dca, - 0x0dcf, 0x0dd4, - 0x0dd6, 0x0dd6, - 0x0dd8, 0x0ddf, - 0x0de6, 0x0def, - 0x0df2, 0x0df4, - 0x0e01, 0x0e3a, - 0x0e3f, 0x0e5b, - 0x0e81, 0x0e82, - 0x0e84, 0x0e84, - 0x0e87, 0x0e88, - 0x0e8a, 0x0e8a, - 0x0e8d, 0x0e8d, - 0x0e94, 0x0e97, - 0x0e99, 0x0e9f, - 0x0ea1, 0x0ea3, - 0x0ea5, 0x0ea5, - 0x0ea7, 0x0ea7, - 0x0eaa, 0x0eab, - 0x0ead, 0x0eb9, - 0x0ebb, 0x0ebd, - 0x0ec0, 0x0ec4, - 0x0ec6, 0x0ec6, - 0x0ec8, 0x0ecd, - 0x0ed0, 0x0ed9, - 0x0edc, 0x0edf, - 0x0f00, 0x0f47, - 0x0f49, 0x0f6c, - 0x0f71, 0x0f97, - 0x0f99, 0x0fbc, - 0x0fbe, 0x0fcc, - 0x0fce, 0x0fda, - 0x1000, 0x10c5, - 0x10c7, 0x10c7, - 0x10cd, 0x10cd, - 0x10d0, 0x1248, - 0x124a, 0x124d, - 0x1250, 0x1256, - 0x1258, 0x1258, - 0x125a, 0x125d, - 0x1260, 0x1288, - 0x128a, 0x128d, - 0x1290, 0x12b0, - 0x12b2, 0x12b5, - 0x12b8, 0x12be, - 0x12c0, 0x12c0, - 0x12c2, 0x12c5, - 0x12c8, 0x12d6, - 0x12d8, 0x1310, - 0x1312, 0x1315, - 0x1318, 0x135a, - 0x135d, 0x137c, - 0x1380, 0x1399, - 0x13a0, 0x13f5, - 0x13f8, 0x13fd, - 0x1400, 0x169c, - 0x16a0, 0x16f8, - 0x1700, 0x170c, - 0x170e, 0x1714, - 0x1720, 0x1736, - 0x1740, 0x1753, - 0x1760, 0x176c, - 0x176e, 0x1770, - 0x1772, 0x1773, - 0x1780, 0x17dd, - 0x17e0, 0x17e9, - 0x17f0, 0x17f9, - 0x1800, 0x180e, - 0x1810, 0x1819, - 0x1820, 0x1877, - 0x1880, 0x18aa, - 0x18b0, 0x18f5, - 0x1900, 0x191e, - 0x1920, 0x192b, - 0x1930, 0x193b, - 0x1940, 0x1940, - 0x1944, 0x196d, - 0x1970, 0x1974, - 0x1980, 0x19ab, - 0x19b0, 0x19c9, - 0x19d0, 0x19da, - 0x19de, 0x1a1b, - 0x1a1e, 0x1a5e, - 0x1a60, 0x1a7c, - 0x1a7f, 0x1a89, - 0x1a90, 0x1a99, - 0x1aa0, 0x1aad, - 0x1ab0, 0x1abe, - 0x1b00, 0x1b4b, - 0x1b50, 0x1b7c, - 0x1b80, 0x1bf3, - 0x1bfc, 0x1c37, - 0x1c3b, 0x1c49, - 0x1c4d, 0x1c7f, - 0x1cc0, 0x1cc7, - 0x1cd0, 0x1cf6, - 0x1cf8, 0x1cf9, - 0x1d00, 0x1df5, - 0x1dfc, 0x1f15, - 0x1f18, 0x1f1d, - 0x1f20, 0x1f45, - 0x1f48, 0x1f4d, - 0x1f50, 0x1f57, - 0x1f59, 0x1f59, - 0x1f5b, 0x1f5b, - 0x1f5d, 0x1f5d, - 0x1f5f, 0x1f7d, - 0x1f80, 0x1fb4, - 0x1fb6, 0x1fc4, - 0x1fc6, 0x1fd3, - 0x1fd6, 0x1fdb, - 0x1fdd, 0x1fef, - 0x1ff2, 0x1ff4, - 0x1ff6, 0x1ffe, - 0x2000, 0x2064, - 0x2066, 0x2071, - 0x2074, 0x208e, - 0x2090, 0x209c, - 0x20a0, 0x20be, - 0x20d0, 0x20f0, - 0x2100, 0x218b, - 0x2190, 0x23fa, - 0x2400, 0x2426, - 0x2440, 0x244a, - 0x2460, 0x2b73, - 0x2b76, 0x2b95, - 0x2b98, 0x2bb9, - 0x2bbd, 0x2bc8, - 0x2bca, 0x2bd1, - 0x2bec, 0x2bef, - 0x2c00, 0x2c2e, - 0x2c30, 0x2c5e, - 0x2c60, 0x2cf3, - 0x2cf9, 0x2d25, - 0x2d27, 0x2d27, - 0x2d2d, 0x2d2d, - 0x2d30, 0x2d67, - 0x2d6f, 0x2d70, - 0x2d7f, 0x2d96, - 0x2da0, 0x2da6, - 0x2da8, 0x2dae, - 0x2db0, 0x2db6, - 0x2db8, 0x2dbe, - 0x2dc0, 0x2dc6, - 0x2dc8, 0x2dce, - 0x2dd0, 0x2dd6, - 0x2dd8, 0x2dde, - 0x2de0, 0x2e42, - 0x2e80, 0x2e99, - 0x2e9b, 0x2ef3, - 0x2f00, 0x2fd5, - 0x2ff0, 0x2ffb, - 0x3000, 0x303f, - 0x3041, 0x3096, - 0x3099, 0x30ff, - 0x3105, 0x312d, - 0x3131, 0x318e, - 0x3190, 0x31ba, - 0x31c0, 0x31e3, - 0x31f0, 0x321e, - 0x3220, 0x32fe, - 0x3300, 0x4db5, - 0x4dc0, 0x9fd5, - 0xa000, 0xa48c, - 0xa490, 0xa4c6, - 0xa4d0, 0xa62b, - 0xa640, 0xa6f7, - 0xa700, 0xa7ad, - 0xa7b0, 0xa7b7, - 0xa7f7, 0xa82b, - 0xa830, 0xa839, - 0xa840, 0xa877, - 0xa880, 0xa8c4, - 0xa8ce, 0xa8d9, - 0xa8e0, 0xa8fd, - 0xa900, 0xa953, - 0xa95f, 0xa97c, - 0xa980, 0xa9cd, - 0xa9cf, 0xa9d9, - 0xa9de, 0xa9fe, - 0xaa00, 0xaa36, - 0xaa40, 0xaa4d, - 0xaa50, 0xaa59, - 0xaa5c, 0xaac2, - 0xaadb, 0xaaf6, - 0xab01, 0xab06, - 0xab09, 0xab0e, - 0xab11, 0xab16, - 0xab20, 0xab26, - 0xab28, 0xab2e, - 0xab30, 0xab65, - 0xab70, 0xabed, - 0xabf0, 0xabf9, - 0xac00, 0xd7a3, - 0xd7b0, 0xd7c6, - 0xd7cb, 0xd7fb, - 0xd800, 0xfa6d, - 0xfa70, 0xfad9, - 0xfb00, 0xfb06, - 0xfb13, 0xfb17, - 0xfb1d, 0xfb36, - 0xfb38, 0xfb3c, - 0xfb3e, 0xfb3e, - 0xfb40, 0xfb41, - 0xfb43, 0xfb44, - 0xfb46, 0xfbc1, - 0xfbd3, 0xfd3f, - 0xfd50, 0xfd8f, - 0xfd92, 0xfdc7, - 0xfdd0, 0xfdfd, - 0xfe00, 0xfe19, - 0xfe20, 0xfe52, - 0xfe54, 0xfe66, - 0xfe68, 0xfe6b, - 0xfe70, 0xfe74, - 0xfe76, 0xfefc, - 0xfeff, 0xfeff, - 0xff01, 0xffbe, - 0xffc2, 0xffc7, - 0xffca, 0xffcf, - 0xffd2, 0xffd7, - 0xffda, 0xffdc, - 0xffe0, 0xffe6, - 0xffe8, 0xffee, - 0xfff9, 0x1000b, - 0x1000d, 0x10026, - 0x10028, 0x1003a, - 0x1003c, 0x1003d, - 0x1003f, 0x1004d, - 0x10050, 0x1005d, - 0x10080, 0x100fa, - 0x10100, 0x10102, - 0x10107, 0x10133, - 0x10137, 0x1018c, - 0x10190, 0x1019b, - 0x101a0, 0x101a0, - 0x101d0, 0x101fd, - 0x10280, 0x1029c, - 0x102a0, 0x102d0, - 0x102e0, 0x102fb, - 0x10300, 0x10323, - 0x10330, 0x1034a, - 0x10350, 0x1037a, - 0x10380, 0x1039d, - 0x1039f, 0x103c3, - 0x103c8, 0x103d5, - 0x10400, 0x1049d, - 0x104a0, 0x104a9, - 0x10500, 0x10527, - 0x10530, 0x10563, - 0x1056f, 0x1056f, - 0x10600, 0x10736, - 0x10740, 0x10755, - 0x10760, 0x10767, - 0x10800, 0x10805, - 0x10808, 0x10808, - 0x1080a, 0x10835, - 0x10837, 0x10838, - 0x1083c, 0x1083c, - 0x1083f, 0x10855, - 0x10857, 0x1089e, - 0x108a7, 0x108af, - 0x108e0, 0x108f2, - 0x108f4, 0x108f5, - 0x108fb, 0x1091b, - 0x1091f, 0x10939, - 0x1093f, 0x1093f, - 0x10980, 0x109b7, - 0x109bc, 0x109cf, - 0x109d2, 0x10a03, - 0x10a05, 0x10a06, - 0x10a0c, 0x10a13, - 0x10a15, 0x10a17, - 0x10a19, 0x10a33, - 0x10a38, 0x10a3a, - 0x10a3f, 0x10a47, - 0x10a50, 0x10a58, - 0x10a60, 0x10a9f, - 0x10ac0, 0x10ae6, - 0x10aeb, 0x10af6, - 0x10b00, 0x10b35, - 0x10b39, 0x10b55, - 0x10b58, 0x10b72, - 0x10b78, 0x10b91, - 0x10b99, 0x10b9c, - 0x10ba9, 0x10baf, - 0x10c00, 0x10c48, - 0x10c80, 0x10cb2, - 0x10cc0, 0x10cf2, - 0x10cfa, 0x10cff, - 0x10e60, 0x10e7e, - 0x11000, 0x1104d, - 0x11052, 0x1106f, - 0x1107f, 0x110c1, - 0x110d0, 0x110e8, - 0x110f0, 0x110f9, - 0x11100, 0x11134, - 0x11136, 0x11143, - 0x11150, 0x11176, - 0x11180, 0x111cd, - 0x111d0, 0x111df, - 0x111e1, 0x111f4, - 0x11200, 0x11211, - 0x11213, 0x1123d, - 0x11280, 0x11286, - 0x11288, 0x11288, - 0x1128a, 0x1128d, - 0x1128f, 0x1129d, - 0x1129f, 0x112a9, - 0x112b0, 0x112ea, - 0x112f0, 0x112f9, - 0x11300, 0x11303, - 0x11305, 0x1130c, - 0x1130f, 0x11310, - 0x11313, 0x11328, - 0x1132a, 0x11330, - 0x11332, 0x11333, - 0x11335, 0x11339, - 0x1133c, 0x11344, - 0x11347, 0x11348, - 0x1134b, 0x1134d, - 0x11350, 0x11350, - 0x11357, 0x11357, - 0x1135d, 0x11363, - 0x11366, 0x1136c, - 0x11370, 0x11374, - 0x11480, 0x114c7, - 0x114d0, 0x114d9, - 0x11580, 0x115b5, - 0x115b8, 0x115dd, - 0x11600, 0x11644, - 0x11650, 0x11659, - 0x11680, 0x116b7, - 0x116c0, 0x116c9, - 0x11700, 0x11719, - 0x1171d, 0x1172b, - 0x11730, 0x1173f, - 0x118a0, 0x118f2, - 0x118ff, 0x118ff, - 0x11ac0, 0x11af8, - 0x12000, 0x12399, - 0x12400, 0x1246e, - 0x12470, 0x12474, - 0x12480, 0x12543, - 0x13000, 0x1342e, - 0x14400, 0x14646, - 0x16800, 0x16a38, - 0x16a40, 0x16a5e, - 0x16a60, 0x16a69, - 0x16a6e, 0x16a6f, - 0x16ad0, 0x16aed, - 0x16af0, 0x16af5, - 0x16b00, 0x16b45, - 0x16b50, 0x16b59, - 0x16b5b, 0x16b61, - 0x16b63, 0x16b77, - 0x16b7d, 0x16b8f, - 0x16f00, 0x16f44, - 0x16f50, 0x16f7e, - 0x16f8f, 0x16f9f, - 0x1b000, 0x1b001, - 0x1bc00, 0x1bc6a, - 0x1bc70, 0x1bc7c, - 0x1bc80, 0x1bc88, - 0x1bc90, 0x1bc99, - 0x1bc9c, 0x1bca3, - 0x1d000, 0x1d0f5, - 0x1d100, 0x1d126, - 0x1d129, 0x1d1e8, - 0x1d200, 0x1d245, - 0x1d300, 0x1d356, - 0x1d360, 0x1d371, - 0x1d400, 0x1d454, - 0x1d456, 0x1d49c, - 0x1d49e, 0x1d49f, - 0x1d4a2, 0x1d4a2, - 0x1d4a5, 0x1d4a6, - 0x1d4a9, 0x1d4ac, - 0x1d4ae, 0x1d4b9, - 0x1d4bb, 0x1d4bb, - 0x1d4bd, 0x1d4c3, - 0x1d4c5, 0x1d505, - 0x1d507, 0x1d50a, - 0x1d50d, 0x1d514, - 0x1d516, 0x1d51c, - 0x1d51e, 0x1d539, - 0x1d53b, 0x1d53e, - 0x1d540, 0x1d544, - 0x1d546, 0x1d546, - 0x1d54a, 0x1d550, - 0x1d552, 0x1d6a5, - 0x1d6a8, 0x1d7cb, - 0x1d7ce, 0x1da8b, - 0x1da9b, 0x1da9f, - 0x1daa1, 0x1daaf, - 0x1e800, 0x1e8c4, - 0x1e8c7, 0x1e8d6, - 0x1ee00, 0x1ee03, - 0x1ee05, 0x1ee1f, - 0x1ee21, 0x1ee22, - 0x1ee24, 0x1ee24, - 0x1ee27, 0x1ee27, - 0x1ee29, 0x1ee32, - 0x1ee34, 0x1ee37, - 0x1ee39, 0x1ee39, - 0x1ee3b, 0x1ee3b, - 0x1ee42, 0x1ee42, - 0x1ee47, 0x1ee47, - 0x1ee49, 0x1ee49, - 0x1ee4b, 0x1ee4b, - 0x1ee4d, 0x1ee4f, - 0x1ee51, 0x1ee52, - 0x1ee54, 0x1ee54, - 0x1ee57, 0x1ee57, - 0x1ee59, 0x1ee59, - 0x1ee5b, 0x1ee5b, - 0x1ee5d, 0x1ee5d, - 0x1ee5f, 0x1ee5f, - 0x1ee61, 0x1ee62, - 0x1ee64, 0x1ee64, - 0x1ee67, 0x1ee6a, - 0x1ee6c, 0x1ee72, - 0x1ee74, 0x1ee77, - 0x1ee79, 0x1ee7c, - 0x1ee7e, 0x1ee7e, - 0x1ee80, 0x1ee89, - 0x1ee8b, 0x1ee9b, - 0x1eea1, 0x1eea3, - 0x1eea5, 0x1eea9, - 0x1eeab, 0x1eebb, - 0x1eef0, 0x1eef1, - 0x1f000, 0x1f02b, - 0x1f030, 0x1f093, - 0x1f0a0, 0x1f0ae, - 0x1f0b1, 0x1f0bf, - 0x1f0c1, 0x1f0cf, - 0x1f0d1, 0x1f0f5, - 0x1f100, 0x1f10c, - 0x1f110, 0x1f12e, - 0x1f130, 0x1f16b, - 0x1f170, 0x1f19a, - 0x1f1e6, 0x1f202, - 0x1f210, 0x1f23a, - 0x1f240, 0x1f248, - 0x1f250, 0x1f251, - 0x1f300, 0x1f579, - 0x1f57b, 0x1f5a3, - 0x1f5a5, 0x1f6d0, - 0x1f6e0, 0x1f6ec, - 0x1f6f0, 0x1f6f3, - 0x1f700, 0x1f773, - 0x1f780, 0x1f7d4, - 0x1f800, 0x1f80b, - 0x1f810, 0x1f847, - 0x1f850, 0x1f859, - 0x1f860, 0x1f887, - 0x1f890, 0x1f8ad, - 0x1f910, 0x1f918, - 0x1f980, 0x1f984, - 0x1f9c0, 0x1f9c0, - 0x1fffe, 0x2a6d6, - 0x2a700, 0x2b734, - 0x2b740, 0x2b81d, - 0x2b820, 0x2cea1, - 0x2f800, 0x2fa1d, - 0x2fffe, 0x2ffff, - 0x3fffe, 0x3ffff, - 0x4fffe, 0x4ffff, - 0x5fffe, 0x5ffff, - 0x6fffe, 0x6ffff, - 0x7fffe, 0x7ffff, - 0x8fffe, 0x8ffff, - 0x9fffe, 0x9ffff, - 0xafffe, 0xaffff, - 0xbfffe, 0xbffff, - 0xcfffe, 0xcffff, - 0xdfffe, 0xdffff, - 0xe0001, 0xe0001, - 0xe0020, 0xe007f, - 0xe0100, 0xe01ef, - 0xefffe, 0x10ffff, -}; /* CR_Age_8_0 */ - -/* 'Age_9_0': Derived Age 9.0 */ -static const OnigCodePoint CR_Age_9_0[] = { - 648, - 0x0000, 0x0377, - 0x037a, 0x037f, - 0x0384, 0x038a, - 0x038c, 0x038c, - 0x038e, 0x03a1, - 0x03a3, 0x052f, - 0x0531, 0x0556, - 0x0559, 0x055f, - 0x0561, 0x0587, - 0x0589, 0x058a, - 0x058d, 0x058f, - 0x0591, 0x05c7, - 0x05d0, 0x05ea, - 0x05f0, 0x05f4, - 0x0600, 0x061c, - 0x061e, 0x070d, - 0x070f, 0x074a, - 0x074d, 0x07b1, - 0x07c0, 0x07fa, - 0x0800, 0x082d, - 0x0830, 0x083e, - 0x0840, 0x085b, - 0x085e, 0x085e, - 0x08a0, 0x08b4, - 0x08b6, 0x08bd, - 0x08d4, 0x0983, - 0x0985, 0x098c, - 0x098f, 0x0990, - 0x0993, 0x09a8, - 0x09aa, 0x09b0, - 0x09b2, 0x09b2, - 0x09b6, 0x09b9, - 0x09bc, 0x09c4, - 0x09c7, 0x09c8, - 0x09cb, 0x09ce, - 0x09d7, 0x09d7, - 0x09dc, 0x09dd, - 0x09df, 0x09e3, - 0x09e6, 0x09fb, - 0x0a01, 0x0a03, - 0x0a05, 0x0a0a, - 0x0a0f, 0x0a10, - 0x0a13, 0x0a28, - 0x0a2a, 0x0a30, - 0x0a32, 0x0a33, - 0x0a35, 0x0a36, - 0x0a38, 0x0a39, - 0x0a3c, 0x0a3c, - 0x0a3e, 0x0a42, - 0x0a47, 0x0a48, - 0x0a4b, 0x0a4d, - 0x0a51, 0x0a51, - 0x0a59, 0x0a5c, - 0x0a5e, 0x0a5e, - 0x0a66, 0x0a75, - 0x0a81, 0x0a83, - 0x0a85, 0x0a8d, - 0x0a8f, 0x0a91, - 0x0a93, 0x0aa8, - 0x0aaa, 0x0ab0, - 0x0ab2, 0x0ab3, - 0x0ab5, 0x0ab9, - 0x0abc, 0x0ac5, - 0x0ac7, 0x0ac9, - 0x0acb, 0x0acd, - 0x0ad0, 0x0ad0, - 0x0ae0, 0x0ae3, - 0x0ae6, 0x0af1, - 0x0af9, 0x0af9, - 0x0b01, 0x0b03, - 0x0b05, 0x0b0c, - 0x0b0f, 0x0b10, - 0x0b13, 0x0b28, - 0x0b2a, 0x0b30, - 0x0b32, 0x0b33, - 0x0b35, 0x0b39, - 0x0b3c, 0x0b44, - 0x0b47, 0x0b48, - 0x0b4b, 0x0b4d, - 0x0b56, 0x0b57, - 0x0b5c, 0x0b5d, - 0x0b5f, 0x0b63, - 0x0b66, 0x0b77, - 0x0b82, 0x0b83, - 0x0b85, 0x0b8a, - 0x0b8e, 0x0b90, - 0x0b92, 0x0b95, - 0x0b99, 0x0b9a, - 0x0b9c, 0x0b9c, - 0x0b9e, 0x0b9f, - 0x0ba3, 0x0ba4, - 0x0ba8, 0x0baa, - 0x0bae, 0x0bb9, - 0x0bbe, 0x0bc2, - 0x0bc6, 0x0bc8, - 0x0bca, 0x0bcd, - 0x0bd0, 0x0bd0, - 0x0bd7, 0x0bd7, - 0x0be6, 0x0bfa, - 0x0c00, 0x0c03, - 0x0c05, 0x0c0c, - 0x0c0e, 0x0c10, - 0x0c12, 0x0c28, - 0x0c2a, 0x0c39, - 0x0c3d, 0x0c44, - 0x0c46, 0x0c48, - 0x0c4a, 0x0c4d, - 0x0c55, 0x0c56, - 0x0c58, 0x0c5a, - 0x0c60, 0x0c63, - 0x0c66, 0x0c6f, - 0x0c78, 0x0c83, - 0x0c85, 0x0c8c, - 0x0c8e, 0x0c90, - 0x0c92, 0x0ca8, - 0x0caa, 0x0cb3, - 0x0cb5, 0x0cb9, - 0x0cbc, 0x0cc4, - 0x0cc6, 0x0cc8, - 0x0cca, 0x0ccd, - 0x0cd5, 0x0cd6, - 0x0cde, 0x0cde, - 0x0ce0, 0x0ce3, - 0x0ce6, 0x0cef, - 0x0cf1, 0x0cf2, - 0x0d01, 0x0d03, - 0x0d05, 0x0d0c, - 0x0d0e, 0x0d10, - 0x0d12, 0x0d3a, - 0x0d3d, 0x0d44, - 0x0d46, 0x0d48, - 0x0d4a, 0x0d4f, - 0x0d54, 0x0d63, - 0x0d66, 0x0d7f, - 0x0d82, 0x0d83, - 0x0d85, 0x0d96, - 0x0d9a, 0x0db1, - 0x0db3, 0x0dbb, - 0x0dbd, 0x0dbd, - 0x0dc0, 0x0dc6, - 0x0dca, 0x0dca, - 0x0dcf, 0x0dd4, - 0x0dd6, 0x0dd6, - 0x0dd8, 0x0ddf, - 0x0de6, 0x0def, - 0x0df2, 0x0df4, - 0x0e01, 0x0e3a, - 0x0e3f, 0x0e5b, - 0x0e81, 0x0e82, - 0x0e84, 0x0e84, - 0x0e87, 0x0e88, - 0x0e8a, 0x0e8a, - 0x0e8d, 0x0e8d, - 0x0e94, 0x0e97, - 0x0e99, 0x0e9f, - 0x0ea1, 0x0ea3, - 0x0ea5, 0x0ea5, - 0x0ea7, 0x0ea7, - 0x0eaa, 0x0eab, - 0x0ead, 0x0eb9, - 0x0ebb, 0x0ebd, - 0x0ec0, 0x0ec4, - 0x0ec6, 0x0ec6, - 0x0ec8, 0x0ecd, - 0x0ed0, 0x0ed9, - 0x0edc, 0x0edf, - 0x0f00, 0x0f47, - 0x0f49, 0x0f6c, - 0x0f71, 0x0f97, - 0x0f99, 0x0fbc, - 0x0fbe, 0x0fcc, - 0x0fce, 0x0fda, - 0x1000, 0x10c5, - 0x10c7, 0x10c7, - 0x10cd, 0x10cd, - 0x10d0, 0x1248, - 0x124a, 0x124d, - 0x1250, 0x1256, - 0x1258, 0x1258, - 0x125a, 0x125d, - 0x1260, 0x1288, - 0x128a, 0x128d, - 0x1290, 0x12b0, - 0x12b2, 0x12b5, - 0x12b8, 0x12be, - 0x12c0, 0x12c0, - 0x12c2, 0x12c5, - 0x12c8, 0x12d6, - 0x12d8, 0x1310, - 0x1312, 0x1315, - 0x1318, 0x135a, - 0x135d, 0x137c, - 0x1380, 0x1399, - 0x13a0, 0x13f5, - 0x13f8, 0x13fd, - 0x1400, 0x169c, - 0x16a0, 0x16f8, - 0x1700, 0x170c, - 0x170e, 0x1714, - 0x1720, 0x1736, - 0x1740, 0x1753, - 0x1760, 0x176c, - 0x176e, 0x1770, - 0x1772, 0x1773, - 0x1780, 0x17dd, - 0x17e0, 0x17e9, - 0x17f0, 0x17f9, - 0x1800, 0x180e, - 0x1810, 0x1819, - 0x1820, 0x1877, - 0x1880, 0x18aa, - 0x18b0, 0x18f5, - 0x1900, 0x191e, - 0x1920, 0x192b, - 0x1930, 0x193b, - 0x1940, 0x1940, - 0x1944, 0x196d, - 0x1970, 0x1974, - 0x1980, 0x19ab, - 0x19b0, 0x19c9, - 0x19d0, 0x19da, - 0x19de, 0x1a1b, - 0x1a1e, 0x1a5e, - 0x1a60, 0x1a7c, - 0x1a7f, 0x1a89, - 0x1a90, 0x1a99, - 0x1aa0, 0x1aad, - 0x1ab0, 0x1abe, - 0x1b00, 0x1b4b, - 0x1b50, 0x1b7c, - 0x1b80, 0x1bf3, - 0x1bfc, 0x1c37, - 0x1c3b, 0x1c49, - 0x1c4d, 0x1c88, - 0x1cc0, 0x1cc7, - 0x1cd0, 0x1cf6, - 0x1cf8, 0x1cf9, - 0x1d00, 0x1df5, - 0x1dfb, 0x1f15, - 0x1f18, 0x1f1d, - 0x1f20, 0x1f45, - 0x1f48, 0x1f4d, - 0x1f50, 0x1f57, - 0x1f59, 0x1f59, - 0x1f5b, 0x1f5b, - 0x1f5d, 0x1f5d, - 0x1f5f, 0x1f7d, - 0x1f80, 0x1fb4, - 0x1fb6, 0x1fc4, - 0x1fc6, 0x1fd3, - 0x1fd6, 0x1fdb, - 0x1fdd, 0x1fef, - 0x1ff2, 0x1ff4, - 0x1ff6, 0x1ffe, - 0x2000, 0x2064, - 0x2066, 0x2071, - 0x2074, 0x208e, - 0x2090, 0x209c, - 0x20a0, 0x20be, - 0x20d0, 0x20f0, - 0x2100, 0x218b, - 0x2190, 0x23fe, - 0x2400, 0x2426, - 0x2440, 0x244a, - 0x2460, 0x2b73, - 0x2b76, 0x2b95, - 0x2b98, 0x2bb9, - 0x2bbd, 0x2bc8, - 0x2bca, 0x2bd1, - 0x2bec, 0x2bef, - 0x2c00, 0x2c2e, - 0x2c30, 0x2c5e, - 0x2c60, 0x2cf3, - 0x2cf9, 0x2d25, - 0x2d27, 0x2d27, - 0x2d2d, 0x2d2d, - 0x2d30, 0x2d67, - 0x2d6f, 0x2d70, - 0x2d7f, 0x2d96, - 0x2da0, 0x2da6, - 0x2da8, 0x2dae, - 0x2db0, 0x2db6, - 0x2db8, 0x2dbe, - 0x2dc0, 0x2dc6, - 0x2dc8, 0x2dce, - 0x2dd0, 0x2dd6, - 0x2dd8, 0x2dde, - 0x2de0, 0x2e44, - 0x2e80, 0x2e99, - 0x2e9b, 0x2ef3, - 0x2f00, 0x2fd5, - 0x2ff0, 0x2ffb, - 0x3000, 0x303f, - 0x3041, 0x3096, - 0x3099, 0x30ff, - 0x3105, 0x312d, - 0x3131, 0x318e, - 0x3190, 0x31ba, - 0x31c0, 0x31e3, - 0x31f0, 0x321e, - 0x3220, 0x32fe, - 0x3300, 0x4db5, - 0x4dc0, 0x9fd5, - 0xa000, 0xa48c, - 0xa490, 0xa4c6, - 0xa4d0, 0xa62b, - 0xa640, 0xa6f7, - 0xa700, 0xa7ae, - 0xa7b0, 0xa7b7, - 0xa7f7, 0xa82b, - 0xa830, 0xa839, - 0xa840, 0xa877, - 0xa880, 0xa8c5, - 0xa8ce, 0xa8d9, - 0xa8e0, 0xa8fd, - 0xa900, 0xa953, - 0xa95f, 0xa97c, - 0xa980, 0xa9cd, - 0xa9cf, 0xa9d9, - 0xa9de, 0xa9fe, - 0xaa00, 0xaa36, - 0xaa40, 0xaa4d, - 0xaa50, 0xaa59, - 0xaa5c, 0xaac2, - 0xaadb, 0xaaf6, - 0xab01, 0xab06, - 0xab09, 0xab0e, - 0xab11, 0xab16, - 0xab20, 0xab26, - 0xab28, 0xab2e, - 0xab30, 0xab65, - 0xab70, 0xabed, - 0xabf0, 0xabf9, - 0xac00, 0xd7a3, - 0xd7b0, 0xd7c6, - 0xd7cb, 0xd7fb, - 0xd800, 0xfa6d, - 0xfa70, 0xfad9, - 0xfb00, 0xfb06, - 0xfb13, 0xfb17, - 0xfb1d, 0xfb36, - 0xfb38, 0xfb3c, - 0xfb3e, 0xfb3e, - 0xfb40, 0xfb41, - 0xfb43, 0xfb44, - 0xfb46, 0xfbc1, - 0xfbd3, 0xfd3f, - 0xfd50, 0xfd8f, - 0xfd92, 0xfdc7, - 0xfdd0, 0xfdfd, - 0xfe00, 0xfe19, - 0xfe20, 0xfe52, - 0xfe54, 0xfe66, - 0xfe68, 0xfe6b, - 0xfe70, 0xfe74, - 0xfe76, 0xfefc, - 0xfeff, 0xfeff, - 0xff01, 0xffbe, - 0xffc2, 0xffc7, - 0xffca, 0xffcf, - 0xffd2, 0xffd7, - 0xffda, 0xffdc, - 0xffe0, 0xffe6, - 0xffe8, 0xffee, - 0xfff9, 0x1000b, - 0x1000d, 0x10026, - 0x10028, 0x1003a, - 0x1003c, 0x1003d, - 0x1003f, 0x1004d, - 0x10050, 0x1005d, - 0x10080, 0x100fa, - 0x10100, 0x10102, - 0x10107, 0x10133, - 0x10137, 0x1018e, - 0x10190, 0x1019b, - 0x101a0, 0x101a0, - 0x101d0, 0x101fd, - 0x10280, 0x1029c, - 0x102a0, 0x102d0, - 0x102e0, 0x102fb, - 0x10300, 0x10323, - 0x10330, 0x1034a, - 0x10350, 0x1037a, - 0x10380, 0x1039d, - 0x1039f, 0x103c3, - 0x103c8, 0x103d5, - 0x10400, 0x1049d, - 0x104a0, 0x104a9, - 0x104b0, 0x104d3, - 0x104d8, 0x104fb, - 0x10500, 0x10527, - 0x10530, 0x10563, - 0x1056f, 0x1056f, - 0x10600, 0x10736, - 0x10740, 0x10755, - 0x10760, 0x10767, - 0x10800, 0x10805, - 0x10808, 0x10808, - 0x1080a, 0x10835, - 0x10837, 0x10838, - 0x1083c, 0x1083c, - 0x1083f, 0x10855, - 0x10857, 0x1089e, - 0x108a7, 0x108af, - 0x108e0, 0x108f2, - 0x108f4, 0x108f5, - 0x108fb, 0x1091b, - 0x1091f, 0x10939, - 0x1093f, 0x1093f, - 0x10980, 0x109b7, - 0x109bc, 0x109cf, - 0x109d2, 0x10a03, - 0x10a05, 0x10a06, - 0x10a0c, 0x10a13, - 0x10a15, 0x10a17, - 0x10a19, 0x10a33, - 0x10a38, 0x10a3a, - 0x10a3f, 0x10a47, - 0x10a50, 0x10a58, - 0x10a60, 0x10a9f, - 0x10ac0, 0x10ae6, - 0x10aeb, 0x10af6, - 0x10b00, 0x10b35, - 0x10b39, 0x10b55, - 0x10b58, 0x10b72, - 0x10b78, 0x10b91, - 0x10b99, 0x10b9c, - 0x10ba9, 0x10baf, - 0x10c00, 0x10c48, - 0x10c80, 0x10cb2, - 0x10cc0, 0x10cf2, - 0x10cfa, 0x10cff, - 0x10e60, 0x10e7e, - 0x11000, 0x1104d, - 0x11052, 0x1106f, - 0x1107f, 0x110c1, - 0x110d0, 0x110e8, - 0x110f0, 0x110f9, - 0x11100, 0x11134, - 0x11136, 0x11143, - 0x11150, 0x11176, - 0x11180, 0x111cd, - 0x111d0, 0x111df, - 0x111e1, 0x111f4, - 0x11200, 0x11211, - 0x11213, 0x1123e, - 0x11280, 0x11286, - 0x11288, 0x11288, - 0x1128a, 0x1128d, - 0x1128f, 0x1129d, - 0x1129f, 0x112a9, - 0x112b0, 0x112ea, - 0x112f0, 0x112f9, - 0x11300, 0x11303, - 0x11305, 0x1130c, - 0x1130f, 0x11310, - 0x11313, 0x11328, - 0x1132a, 0x11330, - 0x11332, 0x11333, - 0x11335, 0x11339, - 0x1133c, 0x11344, - 0x11347, 0x11348, - 0x1134b, 0x1134d, - 0x11350, 0x11350, - 0x11357, 0x11357, - 0x1135d, 0x11363, - 0x11366, 0x1136c, - 0x11370, 0x11374, - 0x11400, 0x11459, - 0x1145b, 0x1145b, - 0x1145d, 0x1145d, - 0x11480, 0x114c7, - 0x114d0, 0x114d9, - 0x11580, 0x115b5, - 0x115b8, 0x115dd, - 0x11600, 0x11644, - 0x11650, 0x11659, - 0x11660, 0x1166c, - 0x11680, 0x116b7, - 0x116c0, 0x116c9, - 0x11700, 0x11719, - 0x1171d, 0x1172b, - 0x11730, 0x1173f, - 0x118a0, 0x118f2, - 0x118ff, 0x118ff, - 0x11ac0, 0x11af8, - 0x11c00, 0x11c08, - 0x11c0a, 0x11c36, - 0x11c38, 0x11c45, - 0x11c50, 0x11c6c, - 0x11c70, 0x11c8f, - 0x11c92, 0x11ca7, - 0x11ca9, 0x11cb6, - 0x12000, 0x12399, - 0x12400, 0x1246e, - 0x12470, 0x12474, - 0x12480, 0x12543, - 0x13000, 0x1342e, - 0x14400, 0x14646, - 0x16800, 0x16a38, - 0x16a40, 0x16a5e, - 0x16a60, 0x16a69, - 0x16a6e, 0x16a6f, - 0x16ad0, 0x16aed, - 0x16af0, 0x16af5, - 0x16b00, 0x16b45, - 0x16b50, 0x16b59, - 0x16b5b, 0x16b61, - 0x16b63, 0x16b77, - 0x16b7d, 0x16b8f, - 0x16f00, 0x16f44, - 0x16f50, 0x16f7e, - 0x16f8f, 0x16f9f, - 0x16fe0, 0x16fe0, - 0x17000, 0x187ec, - 0x18800, 0x18af2, - 0x1b000, 0x1b001, - 0x1bc00, 0x1bc6a, - 0x1bc70, 0x1bc7c, - 0x1bc80, 0x1bc88, - 0x1bc90, 0x1bc99, - 0x1bc9c, 0x1bca3, - 0x1d000, 0x1d0f5, - 0x1d100, 0x1d126, - 0x1d129, 0x1d1e8, - 0x1d200, 0x1d245, - 0x1d300, 0x1d356, - 0x1d360, 0x1d371, - 0x1d400, 0x1d454, - 0x1d456, 0x1d49c, - 0x1d49e, 0x1d49f, - 0x1d4a2, 0x1d4a2, - 0x1d4a5, 0x1d4a6, - 0x1d4a9, 0x1d4ac, - 0x1d4ae, 0x1d4b9, - 0x1d4bb, 0x1d4bb, - 0x1d4bd, 0x1d4c3, - 0x1d4c5, 0x1d505, - 0x1d507, 0x1d50a, - 0x1d50d, 0x1d514, - 0x1d516, 0x1d51c, - 0x1d51e, 0x1d539, - 0x1d53b, 0x1d53e, - 0x1d540, 0x1d544, - 0x1d546, 0x1d546, - 0x1d54a, 0x1d550, - 0x1d552, 0x1d6a5, - 0x1d6a8, 0x1d7cb, - 0x1d7ce, 0x1da8b, - 0x1da9b, 0x1da9f, - 0x1daa1, 0x1daaf, - 0x1e000, 0x1e006, - 0x1e008, 0x1e018, - 0x1e01b, 0x1e021, - 0x1e023, 0x1e024, - 0x1e026, 0x1e02a, - 0x1e800, 0x1e8c4, - 0x1e8c7, 0x1e8d6, - 0x1e900, 0x1e94a, - 0x1e950, 0x1e959, - 0x1e95e, 0x1e95f, - 0x1ee00, 0x1ee03, - 0x1ee05, 0x1ee1f, - 0x1ee21, 0x1ee22, - 0x1ee24, 0x1ee24, - 0x1ee27, 0x1ee27, - 0x1ee29, 0x1ee32, - 0x1ee34, 0x1ee37, - 0x1ee39, 0x1ee39, - 0x1ee3b, 0x1ee3b, - 0x1ee42, 0x1ee42, - 0x1ee47, 0x1ee47, - 0x1ee49, 0x1ee49, - 0x1ee4b, 0x1ee4b, - 0x1ee4d, 0x1ee4f, - 0x1ee51, 0x1ee52, - 0x1ee54, 0x1ee54, - 0x1ee57, 0x1ee57, - 0x1ee59, 0x1ee59, - 0x1ee5b, 0x1ee5b, - 0x1ee5d, 0x1ee5d, - 0x1ee5f, 0x1ee5f, - 0x1ee61, 0x1ee62, - 0x1ee64, 0x1ee64, - 0x1ee67, 0x1ee6a, - 0x1ee6c, 0x1ee72, - 0x1ee74, 0x1ee77, - 0x1ee79, 0x1ee7c, - 0x1ee7e, 0x1ee7e, - 0x1ee80, 0x1ee89, - 0x1ee8b, 0x1ee9b, - 0x1eea1, 0x1eea3, - 0x1eea5, 0x1eea9, - 0x1eeab, 0x1eebb, - 0x1eef0, 0x1eef1, - 0x1f000, 0x1f02b, - 0x1f030, 0x1f093, - 0x1f0a0, 0x1f0ae, - 0x1f0b1, 0x1f0bf, - 0x1f0c1, 0x1f0cf, - 0x1f0d1, 0x1f0f5, - 0x1f100, 0x1f10c, - 0x1f110, 0x1f12e, - 0x1f130, 0x1f16b, - 0x1f170, 0x1f1ac, - 0x1f1e6, 0x1f202, - 0x1f210, 0x1f23b, - 0x1f240, 0x1f248, - 0x1f250, 0x1f251, - 0x1f300, 0x1f6d2, - 0x1f6e0, 0x1f6ec, - 0x1f6f0, 0x1f6f6, - 0x1f700, 0x1f773, - 0x1f780, 0x1f7d4, - 0x1f800, 0x1f80b, - 0x1f810, 0x1f847, - 0x1f850, 0x1f859, - 0x1f860, 0x1f887, - 0x1f890, 0x1f8ad, - 0x1f910, 0x1f91e, - 0x1f920, 0x1f927, - 0x1f930, 0x1f930, - 0x1f933, 0x1f93e, - 0x1f940, 0x1f94b, - 0x1f950, 0x1f95e, - 0x1f980, 0x1f991, - 0x1f9c0, 0x1f9c0, - 0x1fffe, 0x2a6d6, - 0x2a700, 0x2b734, - 0x2b740, 0x2b81d, - 0x2b820, 0x2cea1, - 0x2f800, 0x2fa1d, - 0x2fffe, 0x2ffff, - 0x3fffe, 0x3ffff, - 0x4fffe, 0x4ffff, - 0x5fffe, 0x5ffff, - 0x6fffe, 0x6ffff, - 0x7fffe, 0x7ffff, - 0x8fffe, 0x8ffff, - 0x9fffe, 0x9ffff, - 0xafffe, 0xaffff, - 0xbfffe, 0xbffff, - 0xcfffe, 0xcffff, - 0xdfffe, 0xdffff, - 0xe0001, 0xe0001, - 0xe0020, 0xe007f, - 0xe0100, 0xe01ef, - 0xefffe, 0x10ffff, -}; /* CR_Age_9_0 */ - -#endif /* USE_UNICODE_AGE_PROPERTIES */ -/* 'Grapheme_Cluster_Break_Prepend': Grapheme_Cluster_Break=Prepend */ -static const OnigCodePoint CR_Grapheme_Cluster_Break_Prepend[] = { - 7, - 0x0600, 0x0605, - 0x06dd, 0x06dd, - 0x070f, 0x070f, - 0x08e2, 0x08e2, - 0x0d4e, 0x0d4e, - 0x110bd, 0x110bd, - 0x111c2, 0x111c3, -}; /* CR_Grapheme_Cluster_Break_Prepend */ - -/* 'Grapheme_Cluster_Break_CR': Grapheme_Cluster_Break=CR */ -static const OnigCodePoint CR_Grapheme_Cluster_Break_CR[] = { - 1, - 0x000d, 0x000d, -}; /* CR_Grapheme_Cluster_Break_CR */ - -/* 'Grapheme_Cluster_Break_LF': Grapheme_Cluster_Break=LF */ -#define CR_Grapheme_Cluster_Break_LF CR_NEWLINE - -/* 'Grapheme_Cluster_Break_Control': Grapheme_Cluster_Break=Control */ -static const OnigCodePoint CR_Grapheme_Cluster_Break_Control[] = { - 19, - 0x0000, 0x0009, - 0x000b, 0x000c, - 0x000e, 0x001f, - 0x007f, 0x009f, - 0x00ad, 0x00ad, - 0x061c, 0x061c, - 0x180e, 0x180e, - 0x200b, 0x200b, - 0x200e, 0x200f, - 0x2028, 0x202e, - 0x2060, 0x206f, - 0xd800, 0xdfff, - 0xfeff, 0xfeff, - 0xfff0, 0xfffb, - 0x1bca0, 0x1bca3, - 0x1d173, 0x1d17a, - 0xe0000, 0xe001f, - 0xe0080, 0xe00ff, - 0xe01f0, 0xe0fff, -}; /* CR_Grapheme_Cluster_Break_Control */ - -/* 'Grapheme_Cluster_Break_Extend': Grapheme_Cluster_Break=Extend */ -#define CR_Grapheme_Cluster_Break_Extend CR_Grapheme_Extend - -/* 'Grapheme_Cluster_Break_Regional_Indicator': Grapheme_Cluster_Break=Regional_Indicator */ -static const OnigCodePoint CR_Grapheme_Cluster_Break_Regional_Indicator[] = { - 1, - 0x1f1e6, 0x1f1ff, -}; /* CR_Grapheme_Cluster_Break_Regional_Indicator */ - -/* 'Grapheme_Cluster_Break_SpacingMark': Grapheme_Cluster_Break=SpacingMark */ -static const OnigCodePoint CR_Grapheme_Cluster_Break_SpacingMark[] = { - 140, - 0x0903, 0x0903, - 0x093b, 0x093b, - 0x093e, 0x0940, - 0x0949, 0x094c, - 0x094e, 0x094f, - 0x0982, 0x0983, - 0x09bf, 0x09c0, - 0x09c7, 0x09c8, - 0x09cb, 0x09cc, - 0x0a03, 0x0a03, - 0x0a3e, 0x0a40, - 0x0a83, 0x0a83, - 0x0abe, 0x0ac0, - 0x0ac9, 0x0ac9, - 0x0acb, 0x0acc, - 0x0b02, 0x0b03, - 0x0b40, 0x0b40, - 0x0b47, 0x0b48, - 0x0b4b, 0x0b4c, - 0x0bbf, 0x0bbf, - 0x0bc1, 0x0bc2, - 0x0bc6, 0x0bc8, - 0x0bca, 0x0bcc, - 0x0c01, 0x0c03, - 0x0c41, 0x0c44, - 0x0c82, 0x0c83, - 0x0cbe, 0x0cbe, - 0x0cc0, 0x0cc1, - 0x0cc3, 0x0cc4, - 0x0cc7, 0x0cc8, - 0x0cca, 0x0ccb, - 0x0d02, 0x0d03, - 0x0d3f, 0x0d40, - 0x0d46, 0x0d48, - 0x0d4a, 0x0d4c, - 0x0d82, 0x0d83, - 0x0dd0, 0x0dd1, - 0x0dd8, 0x0dde, - 0x0df2, 0x0df3, - 0x0e33, 0x0e33, - 0x0eb3, 0x0eb3, - 0x0f3e, 0x0f3f, - 0x0f7f, 0x0f7f, - 0x1031, 0x1031, - 0x103b, 0x103c, - 0x1056, 0x1057, - 0x1084, 0x1084, - 0x17b6, 0x17b6, - 0x17be, 0x17c5, - 0x17c7, 0x17c8, - 0x1923, 0x1926, - 0x1929, 0x192b, - 0x1930, 0x1931, - 0x1933, 0x1938, - 0x1a19, 0x1a1a, - 0x1a55, 0x1a55, - 0x1a57, 0x1a57, - 0x1a6d, 0x1a72, - 0x1b04, 0x1b04, - 0x1b35, 0x1b35, - 0x1b3b, 0x1b3b, - 0x1b3d, 0x1b41, - 0x1b43, 0x1b44, - 0x1b82, 0x1b82, - 0x1ba1, 0x1ba1, - 0x1ba6, 0x1ba7, - 0x1baa, 0x1baa, - 0x1be7, 0x1be7, - 0x1bea, 0x1bec, - 0x1bee, 0x1bee, - 0x1bf2, 0x1bf3, - 0x1c24, 0x1c2b, - 0x1c34, 0x1c35, - 0x1ce1, 0x1ce1, - 0x1cf2, 0x1cf3, - 0xa823, 0xa824, - 0xa827, 0xa827, - 0xa880, 0xa881, - 0xa8b4, 0xa8c3, - 0xa952, 0xa953, - 0xa983, 0xa983, - 0xa9b4, 0xa9b5, - 0xa9ba, 0xa9bb, - 0xa9bd, 0xa9c0, - 0xaa2f, 0xaa30, - 0xaa33, 0xaa34, - 0xaa4d, 0xaa4d, - 0xaaeb, 0xaaeb, - 0xaaee, 0xaaef, - 0xaaf5, 0xaaf5, - 0xabe3, 0xabe4, - 0xabe6, 0xabe7, - 0xabe9, 0xabea, - 0xabec, 0xabec, - 0x11000, 0x11000, - 0x11002, 0x11002, - 0x11082, 0x11082, - 0x110b0, 0x110b2, - 0x110b7, 0x110b8, - 0x1112c, 0x1112c, - 0x11182, 0x11182, - 0x111b3, 0x111b5, - 0x111bf, 0x111c0, - 0x1122c, 0x1122e, - 0x11232, 0x11233, - 0x11235, 0x11235, - 0x112e0, 0x112e2, - 0x11302, 0x11303, - 0x1133f, 0x1133f, - 0x11341, 0x11344, - 0x11347, 0x11348, - 0x1134b, 0x1134d, - 0x11362, 0x11363, - 0x11435, 0x11437, - 0x11440, 0x11441, - 0x11445, 0x11445, - 0x114b1, 0x114b2, - 0x114b9, 0x114b9, - 0x114bb, 0x114bc, - 0x114be, 0x114be, - 0x114c1, 0x114c1, - 0x115b0, 0x115b1, - 0x115b8, 0x115bb, - 0x115be, 0x115be, - 0x11630, 0x11632, - 0x1163b, 0x1163c, - 0x1163e, 0x1163e, - 0x116ac, 0x116ac, - 0x116ae, 0x116af, - 0x116b6, 0x116b6, - 0x11720, 0x11721, - 0x11726, 0x11726, - 0x11c2f, 0x11c2f, - 0x11c3e, 0x11c3e, - 0x11ca9, 0x11ca9, - 0x11cb1, 0x11cb1, - 0x11cb4, 0x11cb4, - 0x16f51, 0x16f7e, - 0x1d166, 0x1d166, - 0x1d16d, 0x1d16d, -}; /* CR_Grapheme_Cluster_Break_SpacingMark */ - -/* 'Grapheme_Cluster_Break_L': Grapheme_Cluster_Break=L */ -static const OnigCodePoint CR_Grapheme_Cluster_Break_L[] = { - 2, - 0x1100, 0x115f, - 0xa960, 0xa97c, -}; /* CR_Grapheme_Cluster_Break_L */ - -/* 'Grapheme_Cluster_Break_V': Grapheme_Cluster_Break=V */ -static const OnigCodePoint CR_Grapheme_Cluster_Break_V[] = { - 2, - 0x1160, 0x11a7, - 0xd7b0, 0xd7c6, -}; /* CR_Grapheme_Cluster_Break_V */ - -/* 'Grapheme_Cluster_Break_T': Grapheme_Cluster_Break=T */ -static const OnigCodePoint CR_Grapheme_Cluster_Break_T[] = { - 2, - 0x11a8, 0x11ff, - 0xd7cb, 0xd7fb, -}; /* CR_Grapheme_Cluster_Break_T */ - -/* 'Grapheme_Cluster_Break_LV': Grapheme_Cluster_Break=LV */ -static const OnigCodePoint CR_Grapheme_Cluster_Break_LV[] = { - 399, - 0xac00, 0xac00, - 0xac1c, 0xac1c, - 0xac38, 0xac38, - 0xac54, 0xac54, - 0xac70, 0xac70, - 0xac8c, 0xac8c, - 0xaca8, 0xaca8, - 0xacc4, 0xacc4, - 0xace0, 0xace0, - 0xacfc, 0xacfc, - 0xad18, 0xad18, - 0xad34, 0xad34, - 0xad50, 0xad50, - 0xad6c, 0xad6c, - 0xad88, 0xad88, - 0xada4, 0xada4, - 0xadc0, 0xadc0, - 0xaddc, 0xaddc, - 0xadf8, 0xadf8, - 0xae14, 0xae14, - 0xae30, 0xae30, - 0xae4c, 0xae4c, - 0xae68, 0xae68, - 0xae84, 0xae84, - 0xaea0, 0xaea0, - 0xaebc, 0xaebc, - 0xaed8, 0xaed8, - 0xaef4, 0xaef4, - 0xaf10, 0xaf10, - 0xaf2c, 0xaf2c, - 0xaf48, 0xaf48, - 0xaf64, 0xaf64, - 0xaf80, 0xaf80, - 0xaf9c, 0xaf9c, - 0xafb8, 0xafb8, - 0xafd4, 0xafd4, - 0xaff0, 0xaff0, - 0xb00c, 0xb00c, - 0xb028, 0xb028, - 0xb044, 0xb044, - 0xb060, 0xb060, - 0xb07c, 0xb07c, - 0xb098, 0xb098, - 0xb0b4, 0xb0b4, - 0xb0d0, 0xb0d0, - 0xb0ec, 0xb0ec, - 0xb108, 0xb108, - 0xb124, 0xb124, - 0xb140, 0xb140, - 0xb15c, 0xb15c, - 0xb178, 0xb178, - 0xb194, 0xb194, - 0xb1b0, 0xb1b0, - 0xb1cc, 0xb1cc, - 0xb1e8, 0xb1e8, - 0xb204, 0xb204, - 0xb220, 0xb220, - 0xb23c, 0xb23c, - 0xb258, 0xb258, - 0xb274, 0xb274, - 0xb290, 0xb290, - 0xb2ac, 0xb2ac, - 0xb2c8, 0xb2c8, - 0xb2e4, 0xb2e4, - 0xb300, 0xb300, - 0xb31c, 0xb31c, - 0xb338, 0xb338, - 0xb354, 0xb354, - 0xb370, 0xb370, - 0xb38c, 0xb38c, - 0xb3a8, 0xb3a8, - 0xb3c4, 0xb3c4, - 0xb3e0, 0xb3e0, - 0xb3fc, 0xb3fc, - 0xb418, 0xb418, - 0xb434, 0xb434, - 0xb450, 0xb450, - 0xb46c, 0xb46c, - 0xb488, 0xb488, - 0xb4a4, 0xb4a4, - 0xb4c0, 0xb4c0, - 0xb4dc, 0xb4dc, - 0xb4f8, 0xb4f8, - 0xb514, 0xb514, - 0xb530, 0xb530, - 0xb54c, 0xb54c, - 0xb568, 0xb568, - 0xb584, 0xb584, - 0xb5a0, 0xb5a0, - 0xb5bc, 0xb5bc, - 0xb5d8, 0xb5d8, - 0xb5f4, 0xb5f4, - 0xb610, 0xb610, - 0xb62c, 0xb62c, - 0xb648, 0xb648, - 0xb664, 0xb664, - 0xb680, 0xb680, - 0xb69c, 0xb69c, - 0xb6b8, 0xb6b8, - 0xb6d4, 0xb6d4, - 0xb6f0, 0xb6f0, - 0xb70c, 0xb70c, - 0xb728, 0xb728, - 0xb744, 0xb744, - 0xb760, 0xb760, - 0xb77c, 0xb77c, - 0xb798, 0xb798, - 0xb7b4, 0xb7b4, - 0xb7d0, 0xb7d0, - 0xb7ec, 0xb7ec, - 0xb808, 0xb808, - 0xb824, 0xb824, - 0xb840, 0xb840, - 0xb85c, 0xb85c, - 0xb878, 0xb878, - 0xb894, 0xb894, - 0xb8b0, 0xb8b0, - 0xb8cc, 0xb8cc, - 0xb8e8, 0xb8e8, - 0xb904, 0xb904, - 0xb920, 0xb920, - 0xb93c, 0xb93c, - 0xb958, 0xb958, - 0xb974, 0xb974, - 0xb990, 0xb990, - 0xb9ac, 0xb9ac, - 0xb9c8, 0xb9c8, - 0xb9e4, 0xb9e4, - 0xba00, 0xba00, - 0xba1c, 0xba1c, - 0xba38, 0xba38, - 0xba54, 0xba54, - 0xba70, 0xba70, - 0xba8c, 0xba8c, - 0xbaa8, 0xbaa8, - 0xbac4, 0xbac4, - 0xbae0, 0xbae0, - 0xbafc, 0xbafc, - 0xbb18, 0xbb18, - 0xbb34, 0xbb34, - 0xbb50, 0xbb50, - 0xbb6c, 0xbb6c, - 0xbb88, 0xbb88, - 0xbba4, 0xbba4, - 0xbbc0, 0xbbc0, - 0xbbdc, 0xbbdc, - 0xbbf8, 0xbbf8, - 0xbc14, 0xbc14, - 0xbc30, 0xbc30, - 0xbc4c, 0xbc4c, - 0xbc68, 0xbc68, - 0xbc84, 0xbc84, - 0xbca0, 0xbca0, - 0xbcbc, 0xbcbc, - 0xbcd8, 0xbcd8, - 0xbcf4, 0xbcf4, - 0xbd10, 0xbd10, - 0xbd2c, 0xbd2c, - 0xbd48, 0xbd48, - 0xbd64, 0xbd64, - 0xbd80, 0xbd80, - 0xbd9c, 0xbd9c, - 0xbdb8, 0xbdb8, - 0xbdd4, 0xbdd4, - 0xbdf0, 0xbdf0, - 0xbe0c, 0xbe0c, - 0xbe28, 0xbe28, - 0xbe44, 0xbe44, - 0xbe60, 0xbe60, - 0xbe7c, 0xbe7c, - 0xbe98, 0xbe98, - 0xbeb4, 0xbeb4, - 0xbed0, 0xbed0, - 0xbeec, 0xbeec, - 0xbf08, 0xbf08, - 0xbf24, 0xbf24, - 0xbf40, 0xbf40, - 0xbf5c, 0xbf5c, - 0xbf78, 0xbf78, - 0xbf94, 0xbf94, - 0xbfb0, 0xbfb0, - 0xbfcc, 0xbfcc, - 0xbfe8, 0xbfe8, - 0xc004, 0xc004, - 0xc020, 0xc020, - 0xc03c, 0xc03c, - 0xc058, 0xc058, - 0xc074, 0xc074, - 0xc090, 0xc090, - 0xc0ac, 0xc0ac, - 0xc0c8, 0xc0c8, - 0xc0e4, 0xc0e4, - 0xc100, 0xc100, - 0xc11c, 0xc11c, - 0xc138, 0xc138, - 0xc154, 0xc154, - 0xc170, 0xc170, - 0xc18c, 0xc18c, - 0xc1a8, 0xc1a8, - 0xc1c4, 0xc1c4, - 0xc1e0, 0xc1e0, - 0xc1fc, 0xc1fc, - 0xc218, 0xc218, - 0xc234, 0xc234, - 0xc250, 0xc250, - 0xc26c, 0xc26c, - 0xc288, 0xc288, - 0xc2a4, 0xc2a4, - 0xc2c0, 0xc2c0, - 0xc2dc, 0xc2dc, - 0xc2f8, 0xc2f8, - 0xc314, 0xc314, - 0xc330, 0xc330, - 0xc34c, 0xc34c, - 0xc368, 0xc368, - 0xc384, 0xc384, - 0xc3a0, 0xc3a0, - 0xc3bc, 0xc3bc, - 0xc3d8, 0xc3d8, - 0xc3f4, 0xc3f4, - 0xc410, 0xc410, - 0xc42c, 0xc42c, - 0xc448, 0xc448, - 0xc464, 0xc464, - 0xc480, 0xc480, - 0xc49c, 0xc49c, - 0xc4b8, 0xc4b8, - 0xc4d4, 0xc4d4, - 0xc4f0, 0xc4f0, - 0xc50c, 0xc50c, - 0xc528, 0xc528, - 0xc544, 0xc544, - 0xc560, 0xc560, - 0xc57c, 0xc57c, - 0xc598, 0xc598, - 0xc5b4, 0xc5b4, - 0xc5d0, 0xc5d0, - 0xc5ec, 0xc5ec, - 0xc608, 0xc608, - 0xc624, 0xc624, - 0xc640, 0xc640, - 0xc65c, 0xc65c, - 0xc678, 0xc678, - 0xc694, 0xc694, - 0xc6b0, 0xc6b0, - 0xc6cc, 0xc6cc, - 0xc6e8, 0xc6e8, - 0xc704, 0xc704, - 0xc720, 0xc720, - 0xc73c, 0xc73c, - 0xc758, 0xc758, - 0xc774, 0xc774, - 0xc790, 0xc790, - 0xc7ac, 0xc7ac, - 0xc7c8, 0xc7c8, - 0xc7e4, 0xc7e4, - 0xc800, 0xc800, - 0xc81c, 0xc81c, - 0xc838, 0xc838, - 0xc854, 0xc854, - 0xc870, 0xc870, - 0xc88c, 0xc88c, - 0xc8a8, 0xc8a8, - 0xc8c4, 0xc8c4, - 0xc8e0, 0xc8e0, - 0xc8fc, 0xc8fc, - 0xc918, 0xc918, - 0xc934, 0xc934, - 0xc950, 0xc950, - 0xc96c, 0xc96c, - 0xc988, 0xc988, - 0xc9a4, 0xc9a4, - 0xc9c0, 0xc9c0, - 0xc9dc, 0xc9dc, - 0xc9f8, 0xc9f8, - 0xca14, 0xca14, - 0xca30, 0xca30, - 0xca4c, 0xca4c, - 0xca68, 0xca68, - 0xca84, 0xca84, - 0xcaa0, 0xcaa0, - 0xcabc, 0xcabc, - 0xcad8, 0xcad8, - 0xcaf4, 0xcaf4, - 0xcb10, 0xcb10, - 0xcb2c, 0xcb2c, - 0xcb48, 0xcb48, - 0xcb64, 0xcb64, - 0xcb80, 0xcb80, - 0xcb9c, 0xcb9c, - 0xcbb8, 0xcbb8, - 0xcbd4, 0xcbd4, - 0xcbf0, 0xcbf0, - 0xcc0c, 0xcc0c, - 0xcc28, 0xcc28, - 0xcc44, 0xcc44, - 0xcc60, 0xcc60, - 0xcc7c, 0xcc7c, - 0xcc98, 0xcc98, - 0xccb4, 0xccb4, - 0xccd0, 0xccd0, - 0xccec, 0xccec, - 0xcd08, 0xcd08, - 0xcd24, 0xcd24, - 0xcd40, 0xcd40, - 0xcd5c, 0xcd5c, - 0xcd78, 0xcd78, - 0xcd94, 0xcd94, - 0xcdb0, 0xcdb0, - 0xcdcc, 0xcdcc, - 0xcde8, 0xcde8, - 0xce04, 0xce04, - 0xce20, 0xce20, - 0xce3c, 0xce3c, - 0xce58, 0xce58, - 0xce74, 0xce74, - 0xce90, 0xce90, - 0xceac, 0xceac, - 0xcec8, 0xcec8, - 0xcee4, 0xcee4, - 0xcf00, 0xcf00, - 0xcf1c, 0xcf1c, - 0xcf38, 0xcf38, - 0xcf54, 0xcf54, - 0xcf70, 0xcf70, - 0xcf8c, 0xcf8c, - 0xcfa8, 0xcfa8, - 0xcfc4, 0xcfc4, - 0xcfe0, 0xcfe0, - 0xcffc, 0xcffc, - 0xd018, 0xd018, - 0xd034, 0xd034, - 0xd050, 0xd050, - 0xd06c, 0xd06c, - 0xd088, 0xd088, - 0xd0a4, 0xd0a4, - 0xd0c0, 0xd0c0, - 0xd0dc, 0xd0dc, - 0xd0f8, 0xd0f8, - 0xd114, 0xd114, - 0xd130, 0xd130, - 0xd14c, 0xd14c, - 0xd168, 0xd168, - 0xd184, 0xd184, - 0xd1a0, 0xd1a0, - 0xd1bc, 0xd1bc, - 0xd1d8, 0xd1d8, - 0xd1f4, 0xd1f4, - 0xd210, 0xd210, - 0xd22c, 0xd22c, - 0xd248, 0xd248, - 0xd264, 0xd264, - 0xd280, 0xd280, - 0xd29c, 0xd29c, - 0xd2b8, 0xd2b8, - 0xd2d4, 0xd2d4, - 0xd2f0, 0xd2f0, - 0xd30c, 0xd30c, - 0xd328, 0xd328, - 0xd344, 0xd344, - 0xd360, 0xd360, - 0xd37c, 0xd37c, - 0xd398, 0xd398, - 0xd3b4, 0xd3b4, - 0xd3d0, 0xd3d0, - 0xd3ec, 0xd3ec, - 0xd408, 0xd408, - 0xd424, 0xd424, - 0xd440, 0xd440, - 0xd45c, 0xd45c, - 0xd478, 0xd478, - 0xd494, 0xd494, - 0xd4b0, 0xd4b0, - 0xd4cc, 0xd4cc, - 0xd4e8, 0xd4e8, - 0xd504, 0xd504, - 0xd520, 0xd520, - 0xd53c, 0xd53c, - 0xd558, 0xd558, - 0xd574, 0xd574, - 0xd590, 0xd590, - 0xd5ac, 0xd5ac, - 0xd5c8, 0xd5c8, - 0xd5e4, 0xd5e4, - 0xd600, 0xd600, - 0xd61c, 0xd61c, - 0xd638, 0xd638, - 0xd654, 0xd654, - 0xd670, 0xd670, - 0xd68c, 0xd68c, - 0xd6a8, 0xd6a8, - 0xd6c4, 0xd6c4, - 0xd6e0, 0xd6e0, - 0xd6fc, 0xd6fc, - 0xd718, 0xd718, - 0xd734, 0xd734, - 0xd750, 0xd750, - 0xd76c, 0xd76c, - 0xd788, 0xd788, -}; /* CR_Grapheme_Cluster_Break_LV */ - -/* 'Grapheme_Cluster_Break_LVT': Grapheme_Cluster_Break=LVT */ -static const OnigCodePoint CR_Grapheme_Cluster_Break_LVT[] = { - 399, - 0xac01, 0xac1b, - 0xac1d, 0xac37, - 0xac39, 0xac53, - 0xac55, 0xac6f, - 0xac71, 0xac8b, - 0xac8d, 0xaca7, - 0xaca9, 0xacc3, - 0xacc5, 0xacdf, - 0xace1, 0xacfb, - 0xacfd, 0xad17, - 0xad19, 0xad33, - 0xad35, 0xad4f, - 0xad51, 0xad6b, - 0xad6d, 0xad87, - 0xad89, 0xada3, - 0xada5, 0xadbf, - 0xadc1, 0xaddb, - 0xaddd, 0xadf7, - 0xadf9, 0xae13, - 0xae15, 0xae2f, - 0xae31, 0xae4b, - 0xae4d, 0xae67, - 0xae69, 0xae83, - 0xae85, 0xae9f, - 0xaea1, 0xaebb, - 0xaebd, 0xaed7, - 0xaed9, 0xaef3, - 0xaef5, 0xaf0f, - 0xaf11, 0xaf2b, - 0xaf2d, 0xaf47, - 0xaf49, 0xaf63, - 0xaf65, 0xaf7f, - 0xaf81, 0xaf9b, - 0xaf9d, 0xafb7, - 0xafb9, 0xafd3, - 0xafd5, 0xafef, - 0xaff1, 0xb00b, - 0xb00d, 0xb027, - 0xb029, 0xb043, - 0xb045, 0xb05f, - 0xb061, 0xb07b, - 0xb07d, 0xb097, - 0xb099, 0xb0b3, - 0xb0b5, 0xb0cf, - 0xb0d1, 0xb0eb, - 0xb0ed, 0xb107, - 0xb109, 0xb123, - 0xb125, 0xb13f, - 0xb141, 0xb15b, - 0xb15d, 0xb177, - 0xb179, 0xb193, - 0xb195, 0xb1af, - 0xb1b1, 0xb1cb, - 0xb1cd, 0xb1e7, - 0xb1e9, 0xb203, - 0xb205, 0xb21f, - 0xb221, 0xb23b, - 0xb23d, 0xb257, - 0xb259, 0xb273, - 0xb275, 0xb28f, - 0xb291, 0xb2ab, - 0xb2ad, 0xb2c7, - 0xb2c9, 0xb2e3, - 0xb2e5, 0xb2ff, - 0xb301, 0xb31b, - 0xb31d, 0xb337, - 0xb339, 0xb353, - 0xb355, 0xb36f, - 0xb371, 0xb38b, - 0xb38d, 0xb3a7, - 0xb3a9, 0xb3c3, - 0xb3c5, 0xb3df, - 0xb3e1, 0xb3fb, - 0xb3fd, 0xb417, - 0xb419, 0xb433, - 0xb435, 0xb44f, - 0xb451, 0xb46b, - 0xb46d, 0xb487, - 0xb489, 0xb4a3, - 0xb4a5, 0xb4bf, - 0xb4c1, 0xb4db, - 0xb4dd, 0xb4f7, - 0xb4f9, 0xb513, - 0xb515, 0xb52f, - 0xb531, 0xb54b, - 0xb54d, 0xb567, - 0xb569, 0xb583, - 0xb585, 0xb59f, - 0xb5a1, 0xb5bb, - 0xb5bd, 0xb5d7, - 0xb5d9, 0xb5f3, - 0xb5f5, 0xb60f, - 0xb611, 0xb62b, - 0xb62d, 0xb647, - 0xb649, 0xb663, - 0xb665, 0xb67f, - 0xb681, 0xb69b, - 0xb69d, 0xb6b7, - 0xb6b9, 0xb6d3, - 0xb6d5, 0xb6ef, - 0xb6f1, 0xb70b, - 0xb70d, 0xb727, - 0xb729, 0xb743, - 0xb745, 0xb75f, - 0xb761, 0xb77b, - 0xb77d, 0xb797, - 0xb799, 0xb7b3, - 0xb7b5, 0xb7cf, - 0xb7d1, 0xb7eb, - 0xb7ed, 0xb807, - 0xb809, 0xb823, - 0xb825, 0xb83f, - 0xb841, 0xb85b, - 0xb85d, 0xb877, - 0xb879, 0xb893, - 0xb895, 0xb8af, - 0xb8b1, 0xb8cb, - 0xb8cd, 0xb8e7, - 0xb8e9, 0xb903, - 0xb905, 0xb91f, - 0xb921, 0xb93b, - 0xb93d, 0xb957, - 0xb959, 0xb973, - 0xb975, 0xb98f, - 0xb991, 0xb9ab, - 0xb9ad, 0xb9c7, - 0xb9c9, 0xb9e3, - 0xb9e5, 0xb9ff, - 0xba01, 0xba1b, - 0xba1d, 0xba37, - 0xba39, 0xba53, - 0xba55, 0xba6f, - 0xba71, 0xba8b, - 0xba8d, 0xbaa7, - 0xbaa9, 0xbac3, - 0xbac5, 0xbadf, - 0xbae1, 0xbafb, - 0xbafd, 0xbb17, - 0xbb19, 0xbb33, - 0xbb35, 0xbb4f, - 0xbb51, 0xbb6b, - 0xbb6d, 0xbb87, - 0xbb89, 0xbba3, - 0xbba5, 0xbbbf, - 0xbbc1, 0xbbdb, - 0xbbdd, 0xbbf7, - 0xbbf9, 0xbc13, - 0xbc15, 0xbc2f, - 0xbc31, 0xbc4b, - 0xbc4d, 0xbc67, - 0xbc69, 0xbc83, - 0xbc85, 0xbc9f, - 0xbca1, 0xbcbb, - 0xbcbd, 0xbcd7, - 0xbcd9, 0xbcf3, - 0xbcf5, 0xbd0f, - 0xbd11, 0xbd2b, - 0xbd2d, 0xbd47, - 0xbd49, 0xbd63, - 0xbd65, 0xbd7f, - 0xbd81, 0xbd9b, - 0xbd9d, 0xbdb7, - 0xbdb9, 0xbdd3, - 0xbdd5, 0xbdef, - 0xbdf1, 0xbe0b, - 0xbe0d, 0xbe27, - 0xbe29, 0xbe43, - 0xbe45, 0xbe5f, - 0xbe61, 0xbe7b, - 0xbe7d, 0xbe97, - 0xbe99, 0xbeb3, - 0xbeb5, 0xbecf, - 0xbed1, 0xbeeb, - 0xbeed, 0xbf07, - 0xbf09, 0xbf23, - 0xbf25, 0xbf3f, - 0xbf41, 0xbf5b, - 0xbf5d, 0xbf77, - 0xbf79, 0xbf93, - 0xbf95, 0xbfaf, - 0xbfb1, 0xbfcb, - 0xbfcd, 0xbfe7, - 0xbfe9, 0xc003, - 0xc005, 0xc01f, - 0xc021, 0xc03b, - 0xc03d, 0xc057, - 0xc059, 0xc073, - 0xc075, 0xc08f, - 0xc091, 0xc0ab, - 0xc0ad, 0xc0c7, - 0xc0c9, 0xc0e3, - 0xc0e5, 0xc0ff, - 0xc101, 0xc11b, - 0xc11d, 0xc137, - 0xc139, 0xc153, - 0xc155, 0xc16f, - 0xc171, 0xc18b, - 0xc18d, 0xc1a7, - 0xc1a9, 0xc1c3, - 0xc1c5, 0xc1df, - 0xc1e1, 0xc1fb, - 0xc1fd, 0xc217, - 0xc219, 0xc233, - 0xc235, 0xc24f, - 0xc251, 0xc26b, - 0xc26d, 0xc287, - 0xc289, 0xc2a3, - 0xc2a5, 0xc2bf, - 0xc2c1, 0xc2db, - 0xc2dd, 0xc2f7, - 0xc2f9, 0xc313, - 0xc315, 0xc32f, - 0xc331, 0xc34b, - 0xc34d, 0xc367, - 0xc369, 0xc383, - 0xc385, 0xc39f, - 0xc3a1, 0xc3bb, - 0xc3bd, 0xc3d7, - 0xc3d9, 0xc3f3, - 0xc3f5, 0xc40f, - 0xc411, 0xc42b, - 0xc42d, 0xc447, - 0xc449, 0xc463, - 0xc465, 0xc47f, - 0xc481, 0xc49b, - 0xc49d, 0xc4b7, - 0xc4b9, 0xc4d3, - 0xc4d5, 0xc4ef, - 0xc4f1, 0xc50b, - 0xc50d, 0xc527, - 0xc529, 0xc543, - 0xc545, 0xc55f, - 0xc561, 0xc57b, - 0xc57d, 0xc597, - 0xc599, 0xc5b3, - 0xc5b5, 0xc5cf, - 0xc5d1, 0xc5eb, - 0xc5ed, 0xc607, - 0xc609, 0xc623, - 0xc625, 0xc63f, - 0xc641, 0xc65b, - 0xc65d, 0xc677, - 0xc679, 0xc693, - 0xc695, 0xc6af, - 0xc6b1, 0xc6cb, - 0xc6cd, 0xc6e7, - 0xc6e9, 0xc703, - 0xc705, 0xc71f, - 0xc721, 0xc73b, - 0xc73d, 0xc757, - 0xc759, 0xc773, - 0xc775, 0xc78f, - 0xc791, 0xc7ab, - 0xc7ad, 0xc7c7, - 0xc7c9, 0xc7e3, - 0xc7e5, 0xc7ff, - 0xc801, 0xc81b, - 0xc81d, 0xc837, - 0xc839, 0xc853, - 0xc855, 0xc86f, - 0xc871, 0xc88b, - 0xc88d, 0xc8a7, - 0xc8a9, 0xc8c3, - 0xc8c5, 0xc8df, - 0xc8e1, 0xc8fb, - 0xc8fd, 0xc917, - 0xc919, 0xc933, - 0xc935, 0xc94f, - 0xc951, 0xc96b, - 0xc96d, 0xc987, - 0xc989, 0xc9a3, - 0xc9a5, 0xc9bf, - 0xc9c1, 0xc9db, - 0xc9dd, 0xc9f7, - 0xc9f9, 0xca13, - 0xca15, 0xca2f, - 0xca31, 0xca4b, - 0xca4d, 0xca67, - 0xca69, 0xca83, - 0xca85, 0xca9f, - 0xcaa1, 0xcabb, - 0xcabd, 0xcad7, - 0xcad9, 0xcaf3, - 0xcaf5, 0xcb0f, - 0xcb11, 0xcb2b, - 0xcb2d, 0xcb47, - 0xcb49, 0xcb63, - 0xcb65, 0xcb7f, - 0xcb81, 0xcb9b, - 0xcb9d, 0xcbb7, - 0xcbb9, 0xcbd3, - 0xcbd5, 0xcbef, - 0xcbf1, 0xcc0b, - 0xcc0d, 0xcc27, - 0xcc29, 0xcc43, - 0xcc45, 0xcc5f, - 0xcc61, 0xcc7b, - 0xcc7d, 0xcc97, - 0xcc99, 0xccb3, - 0xccb5, 0xcccf, - 0xccd1, 0xcceb, - 0xcced, 0xcd07, - 0xcd09, 0xcd23, - 0xcd25, 0xcd3f, - 0xcd41, 0xcd5b, - 0xcd5d, 0xcd77, - 0xcd79, 0xcd93, - 0xcd95, 0xcdaf, - 0xcdb1, 0xcdcb, - 0xcdcd, 0xcde7, - 0xcde9, 0xce03, - 0xce05, 0xce1f, - 0xce21, 0xce3b, - 0xce3d, 0xce57, - 0xce59, 0xce73, - 0xce75, 0xce8f, - 0xce91, 0xceab, - 0xcead, 0xcec7, - 0xcec9, 0xcee3, - 0xcee5, 0xceff, - 0xcf01, 0xcf1b, - 0xcf1d, 0xcf37, - 0xcf39, 0xcf53, - 0xcf55, 0xcf6f, - 0xcf71, 0xcf8b, - 0xcf8d, 0xcfa7, - 0xcfa9, 0xcfc3, - 0xcfc5, 0xcfdf, - 0xcfe1, 0xcffb, - 0xcffd, 0xd017, - 0xd019, 0xd033, - 0xd035, 0xd04f, - 0xd051, 0xd06b, - 0xd06d, 0xd087, - 0xd089, 0xd0a3, - 0xd0a5, 0xd0bf, - 0xd0c1, 0xd0db, - 0xd0dd, 0xd0f7, - 0xd0f9, 0xd113, - 0xd115, 0xd12f, - 0xd131, 0xd14b, - 0xd14d, 0xd167, - 0xd169, 0xd183, - 0xd185, 0xd19f, - 0xd1a1, 0xd1bb, - 0xd1bd, 0xd1d7, - 0xd1d9, 0xd1f3, - 0xd1f5, 0xd20f, - 0xd211, 0xd22b, - 0xd22d, 0xd247, - 0xd249, 0xd263, - 0xd265, 0xd27f, - 0xd281, 0xd29b, - 0xd29d, 0xd2b7, - 0xd2b9, 0xd2d3, - 0xd2d5, 0xd2ef, - 0xd2f1, 0xd30b, - 0xd30d, 0xd327, - 0xd329, 0xd343, - 0xd345, 0xd35f, - 0xd361, 0xd37b, - 0xd37d, 0xd397, - 0xd399, 0xd3b3, - 0xd3b5, 0xd3cf, - 0xd3d1, 0xd3eb, - 0xd3ed, 0xd407, - 0xd409, 0xd423, - 0xd425, 0xd43f, - 0xd441, 0xd45b, - 0xd45d, 0xd477, - 0xd479, 0xd493, - 0xd495, 0xd4af, - 0xd4b1, 0xd4cb, - 0xd4cd, 0xd4e7, - 0xd4e9, 0xd503, - 0xd505, 0xd51f, - 0xd521, 0xd53b, - 0xd53d, 0xd557, - 0xd559, 0xd573, - 0xd575, 0xd58f, - 0xd591, 0xd5ab, - 0xd5ad, 0xd5c7, - 0xd5c9, 0xd5e3, - 0xd5e5, 0xd5ff, - 0xd601, 0xd61b, - 0xd61d, 0xd637, - 0xd639, 0xd653, - 0xd655, 0xd66f, - 0xd671, 0xd68b, - 0xd68d, 0xd6a7, - 0xd6a9, 0xd6c3, - 0xd6c5, 0xd6df, - 0xd6e1, 0xd6fb, - 0xd6fd, 0xd717, - 0xd719, 0xd733, - 0xd735, 0xd74f, - 0xd751, 0xd76b, - 0xd76d, 0xd787, - 0xd789, 0xd7a3, -}; /* CR_Grapheme_Cluster_Break_LVT */ - -/* 'Grapheme_Cluster_Break_E_Base': Grapheme_Cluster_Break=E_Base */ -static const OnigCodePoint CR_Grapheme_Cluster_Break_E_Base[] = { - 28, - 0x261d, 0x261d, - 0x26f9, 0x26f9, - 0x270a, 0x270d, - 0x1f385, 0x1f385, - 0x1f3c3, 0x1f3c4, - 0x1f3ca, 0x1f3cb, - 0x1f442, 0x1f443, - 0x1f446, 0x1f450, - 0x1f46e, 0x1f46e, - 0x1f470, 0x1f478, - 0x1f47c, 0x1f47c, - 0x1f481, 0x1f483, - 0x1f485, 0x1f487, - 0x1f4aa, 0x1f4aa, - 0x1f575, 0x1f575, - 0x1f57a, 0x1f57a, - 0x1f590, 0x1f590, - 0x1f595, 0x1f596, - 0x1f645, 0x1f647, - 0x1f64b, 0x1f64f, - 0x1f6a3, 0x1f6a3, - 0x1f6b4, 0x1f6b6, - 0x1f6c0, 0x1f6c0, - 0x1f918, 0x1f91e, - 0x1f926, 0x1f926, - 0x1f930, 0x1f930, - 0x1f933, 0x1f939, - 0x1f93c, 0x1f93e, -}; /* CR_Grapheme_Cluster_Break_E_Base */ - -/* 'Grapheme_Cluster_Break_E_Modifier': Grapheme_Cluster_Break=E_Modifier */ -static const OnigCodePoint CR_Grapheme_Cluster_Break_E_Modifier[] = { - 1, - 0x1f3fb, 0x1f3ff, -}; /* CR_Grapheme_Cluster_Break_E_Modifier */ - -/* 'Grapheme_Cluster_Break_ZWJ': Grapheme_Cluster_Break=ZWJ */ -static const OnigCodePoint CR_Grapheme_Cluster_Break_ZWJ[] = { - 1, - 0x200d, 0x200d, -}; /* CR_Grapheme_Cluster_Break_ZWJ */ - -/* 'Grapheme_Cluster_Break_Glue_After_Zwj': Grapheme_Cluster_Break=Glue_After_Zwj */ -static const OnigCodePoint CR_Grapheme_Cluster_Break_Glue_After_Zwj[] = { - 3, - 0x2764, 0x2764, - 0x1f48b, 0x1f48b, - 0x1f5e8, 0x1f5e8, -}; /* CR_Grapheme_Cluster_Break_Glue_After_Zwj */ - -/* 'Grapheme_Cluster_Break_E_Base_GAZ': Grapheme_Cluster_Break=E_Base_GAZ */ -static const OnigCodePoint CR_Grapheme_Cluster_Break_E_Base_GAZ[] = { - 1, - 0x1f466, 0x1f469, -}; /* CR_Grapheme_Cluster_Break_E_Base_GAZ */ - -/* 'In_Basic_Latin': Block */ -#define CR_In_Basic_Latin CR_ASCII - -/* 'In_Latin_1_Supplement': Block */ -static const OnigCodePoint CR_In_Latin_1_Supplement[] = { - 1, - 0x0080, 0x00ff, -}; /* CR_In_Latin_1_Supplement */ - -/* 'In_Latin_Extended_A': Block */ -static const OnigCodePoint CR_In_Latin_Extended_A[] = { - 1, - 0x0100, 0x017f, -}; /* CR_In_Latin_Extended_A */ - -/* 'In_Latin_Extended_B': Block */ -static const OnigCodePoint CR_In_Latin_Extended_B[] = { - 1, - 0x0180, 0x024f, -}; /* CR_In_Latin_Extended_B */ - -/* 'In_IPA_Extensions': Block */ -static const OnigCodePoint CR_In_IPA_Extensions[] = { - 1, - 0x0250, 0x02af, -}; /* CR_In_IPA_Extensions */ - -/* 'In_Spacing_Modifier_Letters': Block */ -static const OnigCodePoint CR_In_Spacing_Modifier_Letters[] = { - 1, - 0x02b0, 0x02ff, -}; /* CR_In_Spacing_Modifier_Letters */ - -/* 'In_Combining_Diacritical_Marks': Block */ -static const OnigCodePoint CR_In_Combining_Diacritical_Marks[] = { - 1, - 0x0300, 0x036f, -}; /* CR_In_Combining_Diacritical_Marks */ - -/* 'In_Greek_and_Coptic': Block */ -static const OnigCodePoint CR_In_Greek_and_Coptic[] = { - 1, - 0x0370, 0x03ff, -}; /* CR_In_Greek_and_Coptic */ - -/* 'In_Cyrillic': Block */ -static const OnigCodePoint CR_In_Cyrillic[] = { - 1, - 0x0400, 0x04ff, -}; /* CR_In_Cyrillic */ - -/* 'In_Cyrillic_Supplement': Block */ -static const OnigCodePoint CR_In_Cyrillic_Supplement[] = { - 1, - 0x0500, 0x052f, -}; /* CR_In_Cyrillic_Supplement */ - -/* 'In_Armenian': Block */ -static const OnigCodePoint CR_In_Armenian[] = { - 1, - 0x0530, 0x058f, -}; /* CR_In_Armenian */ - -/* 'In_Hebrew': Block */ -static const OnigCodePoint CR_In_Hebrew[] = { - 1, - 0x0590, 0x05ff, -}; /* CR_In_Hebrew */ - -/* 'In_Arabic': Block */ -static const OnigCodePoint CR_In_Arabic[] = { - 1, - 0x0600, 0x06ff, -}; /* CR_In_Arabic */ - -/* 'In_Syriac': Block */ -static const OnigCodePoint CR_In_Syriac[] = { - 1, - 0x0700, 0x074f, -}; /* CR_In_Syriac */ - -/* 'In_Arabic_Supplement': Block */ -static const OnigCodePoint CR_In_Arabic_Supplement[] = { - 1, - 0x0750, 0x077f, -}; /* CR_In_Arabic_Supplement */ - -/* 'In_Thaana': Block */ -static const OnigCodePoint CR_In_Thaana[] = { - 1, - 0x0780, 0x07bf, -}; /* CR_In_Thaana */ - -/* 'In_NKo': Block */ -static const OnigCodePoint CR_In_NKo[] = { - 1, - 0x07c0, 0x07ff, -}; /* CR_In_NKo */ - -/* 'In_Samaritan': Block */ -static const OnigCodePoint CR_In_Samaritan[] = { - 1, - 0x0800, 0x083f, -}; /* CR_In_Samaritan */ - -/* 'In_Mandaic': Block */ -static const OnigCodePoint CR_In_Mandaic[] = { - 1, - 0x0840, 0x085f, -}; /* CR_In_Mandaic */ - -/* 'In_Arabic_Extended_A': Block */ -static const OnigCodePoint CR_In_Arabic_Extended_A[] = { - 1, - 0x08a0, 0x08ff, -}; /* CR_In_Arabic_Extended_A */ - -/* 'In_Devanagari': Block */ -static const OnigCodePoint CR_In_Devanagari[] = { - 1, - 0x0900, 0x097f, -}; /* CR_In_Devanagari */ - -/* 'In_Bengali': Block */ -static const OnigCodePoint CR_In_Bengali[] = { - 1, - 0x0980, 0x09ff, -}; /* CR_In_Bengali */ - -/* 'In_Gurmukhi': Block */ -static const OnigCodePoint CR_In_Gurmukhi[] = { - 1, - 0x0a00, 0x0a7f, -}; /* CR_In_Gurmukhi */ - -/* 'In_Gujarati': Block */ -static const OnigCodePoint CR_In_Gujarati[] = { - 1, - 0x0a80, 0x0aff, -}; /* CR_In_Gujarati */ - -/* 'In_Oriya': Block */ -static const OnigCodePoint CR_In_Oriya[] = { - 1, - 0x0b00, 0x0b7f, -}; /* CR_In_Oriya */ - -/* 'In_Tamil': Block */ -static const OnigCodePoint CR_In_Tamil[] = { - 1, - 0x0b80, 0x0bff, -}; /* CR_In_Tamil */ - -/* 'In_Telugu': Block */ -static const OnigCodePoint CR_In_Telugu[] = { - 1, - 0x0c00, 0x0c7f, -}; /* CR_In_Telugu */ - -/* 'In_Kannada': Block */ -static const OnigCodePoint CR_In_Kannada[] = { - 1, - 0x0c80, 0x0cff, -}; /* CR_In_Kannada */ - -/* 'In_Malayalam': Block */ -static const OnigCodePoint CR_In_Malayalam[] = { - 1, - 0x0d00, 0x0d7f, -}; /* CR_In_Malayalam */ - -/* 'In_Sinhala': Block */ -static const OnigCodePoint CR_In_Sinhala[] = { - 1, - 0x0d80, 0x0dff, -}; /* CR_In_Sinhala */ - -/* 'In_Thai': Block */ -static const OnigCodePoint CR_In_Thai[] = { - 1, - 0x0e00, 0x0e7f, -}; /* CR_In_Thai */ - -/* 'In_Lao': Block */ -static const OnigCodePoint CR_In_Lao[] = { - 1, - 0x0e80, 0x0eff, -}; /* CR_In_Lao */ - -/* 'In_Tibetan': Block */ -static const OnigCodePoint CR_In_Tibetan[] = { - 1, - 0x0f00, 0x0fff, -}; /* CR_In_Tibetan */ - -/* 'In_Myanmar': Block */ -static const OnigCodePoint CR_In_Myanmar[] = { - 1, - 0x1000, 0x109f, -}; /* CR_In_Myanmar */ - -/* 'In_Georgian': Block */ -static const OnigCodePoint CR_In_Georgian[] = { - 1, - 0x10a0, 0x10ff, -}; /* CR_In_Georgian */ - -/* 'In_Hangul_Jamo': Block */ -static const OnigCodePoint CR_In_Hangul_Jamo[] = { - 1, - 0x1100, 0x11ff, -}; /* CR_In_Hangul_Jamo */ - -/* 'In_Ethiopic': Block */ -static const OnigCodePoint CR_In_Ethiopic[] = { - 1, - 0x1200, 0x137f, -}; /* CR_In_Ethiopic */ - -/* 'In_Ethiopic_Supplement': Block */ -static const OnigCodePoint CR_In_Ethiopic_Supplement[] = { - 1, - 0x1380, 0x139f, -}; /* CR_In_Ethiopic_Supplement */ - -/* 'In_Cherokee': Block */ -static const OnigCodePoint CR_In_Cherokee[] = { - 1, - 0x13a0, 0x13ff, -}; /* CR_In_Cherokee */ - -/* 'In_Unified_Canadian_Aboriginal_Syllabics': Block */ -static const OnigCodePoint CR_In_Unified_Canadian_Aboriginal_Syllabics[] = { - 1, - 0x1400, 0x167f, -}; /* CR_In_Unified_Canadian_Aboriginal_Syllabics */ - -/* 'In_Ogham': Block */ -static const OnigCodePoint CR_In_Ogham[] = { - 1, - 0x1680, 0x169f, -}; /* CR_In_Ogham */ - -/* 'In_Runic': Block */ -static const OnigCodePoint CR_In_Runic[] = { - 1, - 0x16a0, 0x16ff, -}; /* CR_In_Runic */ - -/* 'In_Tagalog': Block */ -static const OnigCodePoint CR_In_Tagalog[] = { - 1, - 0x1700, 0x171f, -}; /* CR_In_Tagalog */ - -/* 'In_Hanunoo': Block */ -static const OnigCodePoint CR_In_Hanunoo[] = { - 1, - 0x1720, 0x173f, -}; /* CR_In_Hanunoo */ - -/* 'In_Buhid': Block */ -static const OnigCodePoint CR_In_Buhid[] = { - 1, - 0x1740, 0x175f, -}; /* CR_In_Buhid */ - -/* 'In_Tagbanwa': Block */ -static const OnigCodePoint CR_In_Tagbanwa[] = { - 1, - 0x1760, 0x177f, -}; /* CR_In_Tagbanwa */ - -/* 'In_Khmer': Block */ -static const OnigCodePoint CR_In_Khmer[] = { - 1, - 0x1780, 0x17ff, -}; /* CR_In_Khmer */ - -/* 'In_Mongolian': Block */ -static const OnigCodePoint CR_In_Mongolian[] = { - 1, - 0x1800, 0x18af, -}; /* CR_In_Mongolian */ - -/* 'In_Unified_Canadian_Aboriginal_Syllabics_Extended': Block */ -static const OnigCodePoint CR_In_Unified_Canadian_Aboriginal_Syllabics_Extended[] = { - 1, - 0x18b0, 0x18ff, -}; /* CR_In_Unified_Canadian_Aboriginal_Syllabics_Extended */ - -/* 'In_Limbu': Block */ -static const OnigCodePoint CR_In_Limbu[] = { - 1, - 0x1900, 0x194f, -}; /* CR_In_Limbu */ - -/* 'In_Tai_Le': Block */ -static const OnigCodePoint CR_In_Tai_Le[] = { - 1, - 0x1950, 0x197f, -}; /* CR_In_Tai_Le */ - -/* 'In_New_Tai_Lue': Block */ -static const OnigCodePoint CR_In_New_Tai_Lue[] = { - 1, - 0x1980, 0x19df, -}; /* CR_In_New_Tai_Lue */ - -/* 'In_Khmer_Symbols': Block */ -static const OnigCodePoint CR_In_Khmer_Symbols[] = { - 1, - 0x19e0, 0x19ff, -}; /* CR_In_Khmer_Symbols */ - -/* 'In_Buginese': Block */ -static const OnigCodePoint CR_In_Buginese[] = { - 1, - 0x1a00, 0x1a1f, -}; /* CR_In_Buginese */ - -/* 'In_Tai_Tham': Block */ -static const OnigCodePoint CR_In_Tai_Tham[] = { - 1, - 0x1a20, 0x1aaf, -}; /* CR_In_Tai_Tham */ - -/* 'In_Combining_Diacritical_Marks_Extended': Block */ -static const OnigCodePoint CR_In_Combining_Diacritical_Marks_Extended[] = { - 1, - 0x1ab0, 0x1aff, -}; /* CR_In_Combining_Diacritical_Marks_Extended */ - -/* 'In_Balinese': Block */ -static const OnigCodePoint CR_In_Balinese[] = { - 1, - 0x1b00, 0x1b7f, -}; /* CR_In_Balinese */ - -/* 'In_Sundanese': Block */ -static const OnigCodePoint CR_In_Sundanese[] = { - 1, - 0x1b80, 0x1bbf, -}; /* CR_In_Sundanese */ - -/* 'In_Batak': Block */ -static const OnigCodePoint CR_In_Batak[] = { - 1, - 0x1bc0, 0x1bff, -}; /* CR_In_Batak */ - -/* 'In_Lepcha': Block */ -static const OnigCodePoint CR_In_Lepcha[] = { - 1, - 0x1c00, 0x1c4f, -}; /* CR_In_Lepcha */ - -/* 'In_Ol_Chiki': Block */ -#define CR_In_Ol_Chiki CR_Ol_Chiki - -/* 'In_Cyrillic_Extended_C': Block */ -static const OnigCodePoint CR_In_Cyrillic_Extended_C[] = { - 1, - 0x1c80, 0x1c8f, -}; /* CR_In_Cyrillic_Extended_C */ - -/* 'In_Sundanese_Supplement': Block */ -static const OnigCodePoint CR_In_Sundanese_Supplement[] = { - 1, - 0x1cc0, 0x1ccf, -}; /* CR_In_Sundanese_Supplement */ - -/* 'In_Vedic_Extensions': Block */ -static const OnigCodePoint CR_In_Vedic_Extensions[] = { - 1, - 0x1cd0, 0x1cff, -}; /* CR_In_Vedic_Extensions */ - -/* 'In_Phonetic_Extensions': Block */ -static const OnigCodePoint CR_In_Phonetic_Extensions[] = { - 1, - 0x1d00, 0x1d7f, -}; /* CR_In_Phonetic_Extensions */ - -/* 'In_Phonetic_Extensions_Supplement': Block */ -static const OnigCodePoint CR_In_Phonetic_Extensions_Supplement[] = { - 1, - 0x1d80, 0x1dbf, -}; /* CR_In_Phonetic_Extensions_Supplement */ - -/* 'In_Combining_Diacritical_Marks_Supplement': Block */ -static const OnigCodePoint CR_In_Combining_Diacritical_Marks_Supplement[] = { - 1, - 0x1dc0, 0x1dff, -}; /* CR_In_Combining_Diacritical_Marks_Supplement */ - -/* 'In_Latin_Extended_Additional': Block */ -static const OnigCodePoint CR_In_Latin_Extended_Additional[] = { - 1, - 0x1e00, 0x1eff, -}; /* CR_In_Latin_Extended_Additional */ - -/* 'In_Greek_Extended': Block */ -static const OnigCodePoint CR_In_Greek_Extended[] = { - 1, - 0x1f00, 0x1fff, -}; /* CR_In_Greek_Extended */ - -/* 'In_General_Punctuation': Block */ -static const OnigCodePoint CR_In_General_Punctuation[] = { - 1, - 0x2000, 0x206f, -}; /* CR_In_General_Punctuation */ - -/* 'In_Superscripts_and_Subscripts': Block */ -static const OnigCodePoint CR_In_Superscripts_and_Subscripts[] = { - 1, - 0x2070, 0x209f, -}; /* CR_In_Superscripts_and_Subscripts */ - -/* 'In_Currency_Symbols': Block */ -static const OnigCodePoint CR_In_Currency_Symbols[] = { - 1, - 0x20a0, 0x20cf, -}; /* CR_In_Currency_Symbols */ - -/* 'In_Combining_Diacritical_Marks_for_Symbols': Block */ -static const OnigCodePoint CR_In_Combining_Diacritical_Marks_for_Symbols[] = { - 1, - 0x20d0, 0x20ff, -}; /* CR_In_Combining_Diacritical_Marks_for_Symbols */ - -/* 'In_Letterlike_Symbols': Block */ -static const OnigCodePoint CR_In_Letterlike_Symbols[] = { - 1, - 0x2100, 0x214f, -}; /* CR_In_Letterlike_Symbols */ - -/* 'In_Number_Forms': Block */ -static const OnigCodePoint CR_In_Number_Forms[] = { - 1, - 0x2150, 0x218f, -}; /* CR_In_Number_Forms */ - -/* 'In_Arrows': Block */ -static const OnigCodePoint CR_In_Arrows[] = { - 1, - 0x2190, 0x21ff, -}; /* CR_In_Arrows */ - -/* 'In_Mathematical_Operators': Block */ -static const OnigCodePoint CR_In_Mathematical_Operators[] = { - 1, - 0x2200, 0x22ff, -}; /* CR_In_Mathematical_Operators */ - -/* 'In_Miscellaneous_Technical': Block */ -static const OnigCodePoint CR_In_Miscellaneous_Technical[] = { - 1, - 0x2300, 0x23ff, -}; /* CR_In_Miscellaneous_Technical */ - -/* 'In_Control_Pictures': Block */ -static const OnigCodePoint CR_In_Control_Pictures[] = { - 1, - 0x2400, 0x243f, -}; /* CR_In_Control_Pictures */ - -/* 'In_Optical_Character_Recognition': Block */ -static const OnigCodePoint CR_In_Optical_Character_Recognition[] = { - 1, - 0x2440, 0x245f, -}; /* CR_In_Optical_Character_Recognition */ - -/* 'In_Enclosed_Alphanumerics': Block */ -static const OnigCodePoint CR_In_Enclosed_Alphanumerics[] = { - 1, - 0x2460, 0x24ff, -}; /* CR_In_Enclosed_Alphanumerics */ - -/* 'In_Box_Drawing': Block */ -static const OnigCodePoint CR_In_Box_Drawing[] = { - 1, - 0x2500, 0x257f, -}; /* CR_In_Box_Drawing */ - -/* 'In_Block_Elements': Block */ -static const OnigCodePoint CR_In_Block_Elements[] = { - 1, - 0x2580, 0x259f, -}; /* CR_In_Block_Elements */ - -/* 'In_Geometric_Shapes': Block */ -static const OnigCodePoint CR_In_Geometric_Shapes[] = { - 1, - 0x25a0, 0x25ff, -}; /* CR_In_Geometric_Shapes */ - -/* 'In_Miscellaneous_Symbols': Block */ -static const OnigCodePoint CR_In_Miscellaneous_Symbols[] = { - 1, - 0x2600, 0x26ff, -}; /* CR_In_Miscellaneous_Symbols */ - -/* 'In_Dingbats': Block */ -static const OnigCodePoint CR_In_Dingbats[] = { - 1, - 0x2700, 0x27bf, -}; /* CR_In_Dingbats */ - -/* 'In_Miscellaneous_Mathematical_Symbols_A': Block */ -static const OnigCodePoint CR_In_Miscellaneous_Mathematical_Symbols_A[] = { - 1, - 0x27c0, 0x27ef, -}; /* CR_In_Miscellaneous_Mathematical_Symbols_A */ - -/* 'In_Supplemental_Arrows_A': Block */ -static const OnigCodePoint CR_In_Supplemental_Arrows_A[] = { - 1, - 0x27f0, 0x27ff, -}; /* CR_In_Supplemental_Arrows_A */ - -/* 'In_Braille_Patterns': Block */ -#define CR_In_Braille_Patterns CR_Braille - -/* 'In_Supplemental_Arrows_B': Block */ -static const OnigCodePoint CR_In_Supplemental_Arrows_B[] = { - 1, - 0x2900, 0x297f, -}; /* CR_In_Supplemental_Arrows_B */ - -/* 'In_Miscellaneous_Mathematical_Symbols_B': Block */ -static const OnigCodePoint CR_In_Miscellaneous_Mathematical_Symbols_B[] = { - 1, - 0x2980, 0x29ff, -}; /* CR_In_Miscellaneous_Mathematical_Symbols_B */ - -/* 'In_Supplemental_Mathematical_Operators': Block */ -static const OnigCodePoint CR_In_Supplemental_Mathematical_Operators[] = { - 1, - 0x2a00, 0x2aff, -}; /* CR_In_Supplemental_Mathematical_Operators */ - -/* 'In_Miscellaneous_Symbols_and_Arrows': Block */ -static const OnigCodePoint CR_In_Miscellaneous_Symbols_and_Arrows[] = { - 1, - 0x2b00, 0x2bff, -}; /* CR_In_Miscellaneous_Symbols_and_Arrows */ - -/* 'In_Glagolitic': Block */ -static const OnigCodePoint CR_In_Glagolitic[] = { - 1, - 0x2c00, 0x2c5f, -}; /* CR_In_Glagolitic */ - -/* 'In_Latin_Extended_C': Block */ -static const OnigCodePoint CR_In_Latin_Extended_C[] = { - 1, - 0x2c60, 0x2c7f, -}; /* CR_In_Latin_Extended_C */ - -/* 'In_Coptic': Block */ -static const OnigCodePoint CR_In_Coptic[] = { - 1, - 0x2c80, 0x2cff, -}; /* CR_In_Coptic */ - -/* 'In_Georgian_Supplement': Block */ -static const OnigCodePoint CR_In_Georgian_Supplement[] = { - 1, - 0x2d00, 0x2d2f, -}; /* CR_In_Georgian_Supplement */ - -/* 'In_Tifinagh': Block */ -static const OnigCodePoint CR_In_Tifinagh[] = { - 1, - 0x2d30, 0x2d7f, -}; /* CR_In_Tifinagh */ - -/* 'In_Ethiopic_Extended': Block */ -static const OnigCodePoint CR_In_Ethiopic_Extended[] = { - 1, - 0x2d80, 0x2ddf, -}; /* CR_In_Ethiopic_Extended */ - -/* 'In_Cyrillic_Extended_A': Block */ -static const OnigCodePoint CR_In_Cyrillic_Extended_A[] = { - 1, - 0x2de0, 0x2dff, -}; /* CR_In_Cyrillic_Extended_A */ - -/* 'In_Supplemental_Punctuation': Block */ -static const OnigCodePoint CR_In_Supplemental_Punctuation[] = { - 1, - 0x2e00, 0x2e7f, -}; /* CR_In_Supplemental_Punctuation */ - -/* 'In_CJK_Radicals_Supplement': Block */ -static const OnigCodePoint CR_In_CJK_Radicals_Supplement[] = { - 1, - 0x2e80, 0x2eff, -}; /* CR_In_CJK_Radicals_Supplement */ - -/* 'In_Kangxi_Radicals': Block */ -static const OnigCodePoint CR_In_Kangxi_Radicals[] = { - 1, - 0x2f00, 0x2fdf, -}; /* CR_In_Kangxi_Radicals */ - -/* 'In_Ideographic_Description_Characters': Block */ -static const OnigCodePoint CR_In_Ideographic_Description_Characters[] = { - 1, - 0x2ff0, 0x2fff, -}; /* CR_In_Ideographic_Description_Characters */ - -/* 'In_CJK_Symbols_and_Punctuation': Block */ -static const OnigCodePoint CR_In_CJK_Symbols_and_Punctuation[] = { - 1, - 0x3000, 0x303f, -}; /* CR_In_CJK_Symbols_and_Punctuation */ - -/* 'In_Hiragana': Block */ -static const OnigCodePoint CR_In_Hiragana[] = { - 1, - 0x3040, 0x309f, -}; /* CR_In_Hiragana */ - -/* 'In_Katakana': Block */ -static const OnigCodePoint CR_In_Katakana[] = { - 1, - 0x30a0, 0x30ff, -}; /* CR_In_Katakana */ - -/* 'In_Bopomofo': Block */ -static const OnigCodePoint CR_In_Bopomofo[] = { - 1, - 0x3100, 0x312f, -}; /* CR_In_Bopomofo */ - -/* 'In_Hangul_Compatibility_Jamo': Block */ -static const OnigCodePoint CR_In_Hangul_Compatibility_Jamo[] = { - 1, - 0x3130, 0x318f, -}; /* CR_In_Hangul_Compatibility_Jamo */ - -/* 'In_Kanbun': Block */ -static const OnigCodePoint CR_In_Kanbun[] = { - 1, - 0x3190, 0x319f, -}; /* CR_In_Kanbun */ - -/* 'In_Bopomofo_Extended': Block */ -static const OnigCodePoint CR_In_Bopomofo_Extended[] = { - 1, - 0x31a0, 0x31bf, -}; /* CR_In_Bopomofo_Extended */ - -/* 'In_CJK_Strokes': Block */ -static const OnigCodePoint CR_In_CJK_Strokes[] = { - 1, - 0x31c0, 0x31ef, -}; /* CR_In_CJK_Strokes */ - -/* 'In_Katakana_Phonetic_Extensions': Block */ -static const OnigCodePoint CR_In_Katakana_Phonetic_Extensions[] = { - 1, - 0x31f0, 0x31ff, -}; /* CR_In_Katakana_Phonetic_Extensions */ - -/* 'In_Enclosed_CJK_Letters_and_Months': Block */ -static const OnigCodePoint CR_In_Enclosed_CJK_Letters_and_Months[] = { - 1, - 0x3200, 0x32ff, -}; /* CR_In_Enclosed_CJK_Letters_and_Months */ - -/* 'In_CJK_Compatibility': Block */ -static const OnigCodePoint CR_In_CJK_Compatibility[] = { - 1, - 0x3300, 0x33ff, -}; /* CR_In_CJK_Compatibility */ - -/* 'In_CJK_Unified_Ideographs_Extension_A': Block */ -static const OnigCodePoint CR_In_CJK_Unified_Ideographs_Extension_A[] = { - 1, - 0x3400, 0x4dbf, -}; /* CR_In_CJK_Unified_Ideographs_Extension_A */ - -/* 'In_Yijing_Hexagram_Symbols': Block */ -static const OnigCodePoint CR_In_Yijing_Hexagram_Symbols[] = { - 1, - 0x4dc0, 0x4dff, -}; /* CR_In_Yijing_Hexagram_Symbols */ - -/* 'In_CJK_Unified_Ideographs': Block */ -static const OnigCodePoint CR_In_CJK_Unified_Ideographs[] = { - 1, - 0x4e00, 0x9fff, -}; /* CR_In_CJK_Unified_Ideographs */ - -/* 'In_Yi_Syllables': Block */ -static const OnigCodePoint CR_In_Yi_Syllables[] = { - 1, - 0xa000, 0xa48f, -}; /* CR_In_Yi_Syllables */ - -/* 'In_Yi_Radicals': Block */ -static const OnigCodePoint CR_In_Yi_Radicals[] = { - 1, - 0xa490, 0xa4cf, -}; /* CR_In_Yi_Radicals */ - -/* 'In_Lisu': Block */ -#define CR_In_Lisu CR_Lisu - -/* 'In_Vai': Block */ -static const OnigCodePoint CR_In_Vai[] = { - 1, - 0xa500, 0xa63f, -}; /* CR_In_Vai */ - -/* 'In_Cyrillic_Extended_B': Block */ -static const OnigCodePoint CR_In_Cyrillic_Extended_B[] = { - 1, - 0xa640, 0xa69f, -}; /* CR_In_Cyrillic_Extended_B */ - -/* 'In_Bamum': Block */ -static const OnigCodePoint CR_In_Bamum[] = { - 1, - 0xa6a0, 0xa6ff, -}; /* CR_In_Bamum */ - -/* 'In_Modifier_Tone_Letters': Block */ -static const OnigCodePoint CR_In_Modifier_Tone_Letters[] = { - 1, - 0xa700, 0xa71f, -}; /* CR_In_Modifier_Tone_Letters */ - -/* 'In_Latin_Extended_D': Block */ -static const OnigCodePoint CR_In_Latin_Extended_D[] = { - 1, - 0xa720, 0xa7ff, -}; /* CR_In_Latin_Extended_D */ - -/* 'In_Syloti_Nagri': Block */ -static const OnigCodePoint CR_In_Syloti_Nagri[] = { - 1, - 0xa800, 0xa82f, -}; /* CR_In_Syloti_Nagri */ - -/* 'In_Common_Indic_Number_Forms': Block */ -static const OnigCodePoint CR_In_Common_Indic_Number_Forms[] = { - 1, - 0xa830, 0xa83f, -}; /* CR_In_Common_Indic_Number_Forms */ - -/* 'In_Phags_pa': Block */ -static const OnigCodePoint CR_In_Phags_pa[] = { - 1, - 0xa840, 0xa87f, -}; /* CR_In_Phags_pa */ - -/* 'In_Saurashtra': Block */ -static const OnigCodePoint CR_In_Saurashtra[] = { - 1, - 0xa880, 0xa8df, -}; /* CR_In_Saurashtra */ - -/* 'In_Devanagari_Extended': Block */ -static const OnigCodePoint CR_In_Devanagari_Extended[] = { - 1, - 0xa8e0, 0xa8ff, -}; /* CR_In_Devanagari_Extended */ - -/* 'In_Kayah_Li': Block */ -static const OnigCodePoint CR_In_Kayah_Li[] = { - 1, - 0xa900, 0xa92f, -}; /* CR_In_Kayah_Li */ - -/* 'In_Rejang': Block */ -static const OnigCodePoint CR_In_Rejang[] = { - 1, - 0xa930, 0xa95f, -}; /* CR_In_Rejang */ - -/* 'In_Hangul_Jamo_Extended_A': Block */ -static const OnigCodePoint CR_In_Hangul_Jamo_Extended_A[] = { - 1, - 0xa960, 0xa97f, -}; /* CR_In_Hangul_Jamo_Extended_A */ - -/* 'In_Javanese': Block */ -static const OnigCodePoint CR_In_Javanese[] = { - 1, - 0xa980, 0xa9df, -}; /* CR_In_Javanese */ - -/* 'In_Myanmar_Extended_B': Block */ -static const OnigCodePoint CR_In_Myanmar_Extended_B[] = { - 1, - 0xa9e0, 0xa9ff, -}; /* CR_In_Myanmar_Extended_B */ - -/* 'In_Cham': Block */ -static const OnigCodePoint CR_In_Cham[] = { - 1, - 0xaa00, 0xaa5f, -}; /* CR_In_Cham */ - -/* 'In_Myanmar_Extended_A': Block */ -static const OnigCodePoint CR_In_Myanmar_Extended_A[] = { - 1, - 0xaa60, 0xaa7f, -}; /* CR_In_Myanmar_Extended_A */ - -/* 'In_Tai_Viet': Block */ -static const OnigCodePoint CR_In_Tai_Viet[] = { - 1, - 0xaa80, 0xaadf, -}; /* CR_In_Tai_Viet */ - -/* 'In_Meetei_Mayek_Extensions': Block */ -static const OnigCodePoint CR_In_Meetei_Mayek_Extensions[] = { - 1, - 0xaae0, 0xaaff, -}; /* CR_In_Meetei_Mayek_Extensions */ - -/* 'In_Ethiopic_Extended_A': Block */ -static const OnigCodePoint CR_In_Ethiopic_Extended_A[] = { - 1, - 0xab00, 0xab2f, -}; /* CR_In_Ethiopic_Extended_A */ - -/* 'In_Latin_Extended_E': Block */ -static const OnigCodePoint CR_In_Latin_Extended_E[] = { - 1, - 0xab30, 0xab6f, -}; /* CR_In_Latin_Extended_E */ - -/* 'In_Cherokee_Supplement': Block */ -static const OnigCodePoint CR_In_Cherokee_Supplement[] = { - 1, - 0xab70, 0xabbf, -}; /* CR_In_Cherokee_Supplement */ - -/* 'In_Meetei_Mayek': Block */ -static const OnigCodePoint CR_In_Meetei_Mayek[] = { - 1, - 0xabc0, 0xabff, -}; /* CR_In_Meetei_Mayek */ - -/* 'In_Hangul_Syllables': Block */ -static const OnigCodePoint CR_In_Hangul_Syllables[] = { - 1, - 0xac00, 0xd7af, -}; /* CR_In_Hangul_Syllables */ - -/* 'In_Hangul_Jamo_Extended_B': Block */ -static const OnigCodePoint CR_In_Hangul_Jamo_Extended_B[] = { - 1, - 0xd7b0, 0xd7ff, -}; /* CR_In_Hangul_Jamo_Extended_B */ - -/* 'In_High_Surrogates': Block */ -static const OnigCodePoint CR_In_High_Surrogates[] = { - 1, - 0xd800, 0xdb7f, -}; /* CR_In_High_Surrogates */ - -/* 'In_High_Private_Use_Surrogates': Block */ -static const OnigCodePoint CR_In_High_Private_Use_Surrogates[] = { - 1, - 0xdb80, 0xdbff, -}; /* CR_In_High_Private_Use_Surrogates */ - -/* 'In_Low_Surrogates': Block */ -static const OnigCodePoint CR_In_Low_Surrogates[] = { - 1, - 0xdc00, 0xdfff, -}; /* CR_In_Low_Surrogates */ - -/* 'In_Private_Use_Area': Block */ -static const OnigCodePoint CR_In_Private_Use_Area[] = { - 1, - 0xe000, 0xf8ff, -}; /* CR_In_Private_Use_Area */ - -/* 'In_CJK_Compatibility_Ideographs': Block */ -static const OnigCodePoint CR_In_CJK_Compatibility_Ideographs[] = { - 1, - 0xf900, 0xfaff, -}; /* CR_In_CJK_Compatibility_Ideographs */ - -/* 'In_Alphabetic_Presentation_Forms': Block */ -static const OnigCodePoint CR_In_Alphabetic_Presentation_Forms[] = { - 1, - 0xfb00, 0xfb4f, -}; /* CR_In_Alphabetic_Presentation_Forms */ - -/* 'In_Arabic_Presentation_Forms_A': Block */ -static const OnigCodePoint CR_In_Arabic_Presentation_Forms_A[] = { - 1, - 0xfb50, 0xfdff, -}; /* CR_In_Arabic_Presentation_Forms_A */ - -/* 'In_Variation_Selectors': Block */ -static const OnigCodePoint CR_In_Variation_Selectors[] = { - 1, - 0xfe00, 0xfe0f, -}; /* CR_In_Variation_Selectors */ - -/* 'In_Vertical_Forms': Block */ -static const OnigCodePoint CR_In_Vertical_Forms[] = { - 1, - 0xfe10, 0xfe1f, -}; /* CR_In_Vertical_Forms */ - -/* 'In_Combining_Half_Marks': Block */ -static const OnigCodePoint CR_In_Combining_Half_Marks[] = { - 1, - 0xfe20, 0xfe2f, -}; /* CR_In_Combining_Half_Marks */ - -/* 'In_CJK_Compatibility_Forms': Block */ -static const OnigCodePoint CR_In_CJK_Compatibility_Forms[] = { - 1, - 0xfe30, 0xfe4f, -}; /* CR_In_CJK_Compatibility_Forms */ - -/* 'In_Small_Form_Variants': Block */ -static const OnigCodePoint CR_In_Small_Form_Variants[] = { - 1, - 0xfe50, 0xfe6f, -}; /* CR_In_Small_Form_Variants */ - -/* 'In_Arabic_Presentation_Forms_B': Block */ -static const OnigCodePoint CR_In_Arabic_Presentation_Forms_B[] = { - 1, - 0xfe70, 0xfeff, -}; /* CR_In_Arabic_Presentation_Forms_B */ - -/* 'In_Halfwidth_and_Fullwidth_Forms': Block */ -static const OnigCodePoint CR_In_Halfwidth_and_Fullwidth_Forms[] = { - 1, - 0xff00, 0xffef, -}; /* CR_In_Halfwidth_and_Fullwidth_Forms */ - -/* 'In_Specials': Block */ -static const OnigCodePoint CR_In_Specials[] = { - 1, - 0xfff0, 0xffff, -}; /* CR_In_Specials */ - -/* 'In_Linear_B_Syllabary': Block */ -static const OnigCodePoint CR_In_Linear_B_Syllabary[] = { - 1, - 0x10000, 0x1007f, -}; /* CR_In_Linear_B_Syllabary */ - -/* 'In_Linear_B_Ideograms': Block */ -static const OnigCodePoint CR_In_Linear_B_Ideograms[] = { - 1, - 0x10080, 0x100ff, -}; /* CR_In_Linear_B_Ideograms */ - -/* 'In_Aegean_Numbers': Block */ -static const OnigCodePoint CR_In_Aegean_Numbers[] = { - 1, - 0x10100, 0x1013f, -}; /* CR_In_Aegean_Numbers */ - -/* 'In_Ancient_Greek_Numbers': Block */ -static const OnigCodePoint CR_In_Ancient_Greek_Numbers[] = { - 1, - 0x10140, 0x1018f, -}; /* CR_In_Ancient_Greek_Numbers */ - -/* 'In_Ancient_Symbols': Block */ -static const OnigCodePoint CR_In_Ancient_Symbols[] = { - 1, - 0x10190, 0x101cf, -}; /* CR_In_Ancient_Symbols */ - -/* 'In_Phaistos_Disc': Block */ -static const OnigCodePoint CR_In_Phaistos_Disc[] = { - 1, - 0x101d0, 0x101ff, -}; /* CR_In_Phaistos_Disc */ - -/* 'In_Lycian': Block */ -static const OnigCodePoint CR_In_Lycian[] = { - 1, - 0x10280, 0x1029f, -}; /* CR_In_Lycian */ - -/* 'In_Carian': Block */ -static const OnigCodePoint CR_In_Carian[] = { - 1, - 0x102a0, 0x102df, -}; /* CR_In_Carian */ - -/* 'In_Coptic_Epact_Numbers': Block */ -static const OnigCodePoint CR_In_Coptic_Epact_Numbers[] = { - 1, - 0x102e0, 0x102ff, -}; /* CR_In_Coptic_Epact_Numbers */ - -/* 'In_Old_Italic': Block */ -static const OnigCodePoint CR_In_Old_Italic[] = { - 1, - 0x10300, 0x1032f, -}; /* CR_In_Old_Italic */ - -/* 'In_Gothic': Block */ -static const OnigCodePoint CR_In_Gothic[] = { - 1, - 0x10330, 0x1034f, -}; /* CR_In_Gothic */ - -/* 'In_Old_Permic': Block */ -static const OnigCodePoint CR_In_Old_Permic[] = { - 1, - 0x10350, 0x1037f, -}; /* CR_In_Old_Permic */ - -/* 'In_Ugaritic': Block */ -static const OnigCodePoint CR_In_Ugaritic[] = { - 1, - 0x10380, 0x1039f, -}; /* CR_In_Ugaritic */ - -/* 'In_Old_Persian': Block */ -static const OnigCodePoint CR_In_Old_Persian[] = { - 1, - 0x103a0, 0x103df, -}; /* CR_In_Old_Persian */ - -/* 'In_Deseret': Block */ -#define CR_In_Deseret CR_Deseret - -/* 'In_Shavian': Block */ -#define CR_In_Shavian CR_Shavian - -/* 'In_Osmanya': Block */ -static const OnigCodePoint CR_In_Osmanya[] = { - 1, - 0x10480, 0x104af, -}; /* CR_In_Osmanya */ - -/* 'In_Osage': Block */ -static const OnigCodePoint CR_In_Osage[] = { - 1, - 0x104b0, 0x104ff, -}; /* CR_In_Osage */ - -/* 'In_Elbasan': Block */ -static const OnigCodePoint CR_In_Elbasan[] = { - 1, - 0x10500, 0x1052f, -}; /* CR_In_Elbasan */ - -/* 'In_Caucasian_Albanian': Block */ -static const OnigCodePoint CR_In_Caucasian_Albanian[] = { - 1, - 0x10530, 0x1056f, -}; /* CR_In_Caucasian_Albanian */ - -/* 'In_Linear_A': Block */ -static const OnigCodePoint CR_In_Linear_A[] = { - 1, - 0x10600, 0x1077f, -}; /* CR_In_Linear_A */ - -/* 'In_Cypriot_Syllabary': Block */ -static const OnigCodePoint CR_In_Cypriot_Syllabary[] = { - 1, - 0x10800, 0x1083f, -}; /* CR_In_Cypriot_Syllabary */ - -/* 'In_Imperial_Aramaic': Block */ -static const OnigCodePoint CR_In_Imperial_Aramaic[] = { - 1, - 0x10840, 0x1085f, -}; /* CR_In_Imperial_Aramaic */ - -/* 'In_Palmyrene': Block */ -#define CR_In_Palmyrene CR_Palmyrene - -/* 'In_Nabataean': Block */ -static const OnigCodePoint CR_In_Nabataean[] = { - 1, - 0x10880, 0x108af, -}; /* CR_In_Nabataean */ - -/* 'In_Hatran': Block */ -static const OnigCodePoint CR_In_Hatran[] = { - 1, - 0x108e0, 0x108ff, -}; /* CR_In_Hatran */ - -/* 'In_Phoenician': Block */ -static const OnigCodePoint CR_In_Phoenician[] = { - 1, - 0x10900, 0x1091f, -}; /* CR_In_Phoenician */ - -/* 'In_Lydian': Block */ -static const OnigCodePoint CR_In_Lydian[] = { - 1, - 0x10920, 0x1093f, -}; /* CR_In_Lydian */ - -/* 'In_Meroitic_Hieroglyphs': Block */ -#define CR_In_Meroitic_Hieroglyphs CR_Meroitic_Hieroglyphs - -/* 'In_Meroitic_Cursive': Block */ -static const OnigCodePoint CR_In_Meroitic_Cursive[] = { - 1, - 0x109a0, 0x109ff, -}; /* CR_In_Meroitic_Cursive */ - -/* 'In_Kharoshthi': Block */ -static const OnigCodePoint CR_In_Kharoshthi[] = { - 1, - 0x10a00, 0x10a5f, -}; /* CR_In_Kharoshthi */ - -/* 'In_Old_South_Arabian': Block */ -#define CR_In_Old_South_Arabian CR_Old_South_Arabian - -/* 'In_Old_North_Arabian': Block */ -#define CR_In_Old_North_Arabian CR_Old_North_Arabian - -/* 'In_Manichaean': Block */ -static const OnigCodePoint CR_In_Manichaean[] = { - 1, - 0x10ac0, 0x10aff, -}; /* CR_In_Manichaean */ - -/* 'In_Avestan': Block */ -static const OnigCodePoint CR_In_Avestan[] = { - 1, - 0x10b00, 0x10b3f, -}; /* CR_In_Avestan */ - -/* 'In_Inscriptional_Parthian': Block */ -static const OnigCodePoint CR_In_Inscriptional_Parthian[] = { - 1, - 0x10b40, 0x10b5f, -}; /* CR_In_Inscriptional_Parthian */ - -/* 'In_Inscriptional_Pahlavi': Block */ -static const OnigCodePoint CR_In_Inscriptional_Pahlavi[] = { - 1, - 0x10b60, 0x10b7f, -}; /* CR_In_Inscriptional_Pahlavi */ - -/* 'In_Psalter_Pahlavi': Block */ -static const OnigCodePoint CR_In_Psalter_Pahlavi[] = { - 1, - 0x10b80, 0x10baf, -}; /* CR_In_Psalter_Pahlavi */ - -/* 'In_Old_Turkic': Block */ -static const OnigCodePoint CR_In_Old_Turkic[] = { - 1, - 0x10c00, 0x10c4f, -}; /* CR_In_Old_Turkic */ - -/* 'In_Old_Hungarian': Block */ -static const OnigCodePoint CR_In_Old_Hungarian[] = { - 1, - 0x10c80, 0x10cff, -}; /* CR_In_Old_Hungarian */ - -/* 'In_Rumi_Numeral_Symbols': Block */ -static const OnigCodePoint CR_In_Rumi_Numeral_Symbols[] = { - 1, - 0x10e60, 0x10e7f, -}; /* CR_In_Rumi_Numeral_Symbols */ - -/* 'In_Brahmi': Block */ -static const OnigCodePoint CR_In_Brahmi[] = { - 1, - 0x11000, 0x1107f, -}; /* CR_In_Brahmi */ - -/* 'In_Kaithi': Block */ -static const OnigCodePoint CR_In_Kaithi[] = { - 1, - 0x11080, 0x110cf, -}; /* CR_In_Kaithi */ - -/* 'In_Sora_Sompeng': Block */ -static const OnigCodePoint CR_In_Sora_Sompeng[] = { - 1, - 0x110d0, 0x110ff, -}; /* CR_In_Sora_Sompeng */ - -/* 'In_Chakma': Block */ -static const OnigCodePoint CR_In_Chakma[] = { - 1, - 0x11100, 0x1114f, -}; /* CR_In_Chakma */ - -/* 'In_Mahajani': Block */ -static const OnigCodePoint CR_In_Mahajani[] = { - 1, - 0x11150, 0x1117f, -}; /* CR_In_Mahajani */ - -/* 'In_Sharada': Block */ -static const OnigCodePoint CR_In_Sharada[] = { - 1, - 0x11180, 0x111df, -}; /* CR_In_Sharada */ - -/* 'In_Sinhala_Archaic_Numbers': Block */ -static const OnigCodePoint CR_In_Sinhala_Archaic_Numbers[] = { - 1, - 0x111e0, 0x111ff, -}; /* CR_In_Sinhala_Archaic_Numbers */ - -/* 'In_Khojki': Block */ -static const OnigCodePoint CR_In_Khojki[] = { - 1, - 0x11200, 0x1124f, -}; /* CR_In_Khojki */ - -/* 'In_Multani': Block */ -static const OnigCodePoint CR_In_Multani[] = { - 1, - 0x11280, 0x112af, -}; /* CR_In_Multani */ - -/* 'In_Khudawadi': Block */ -static const OnigCodePoint CR_In_Khudawadi[] = { - 1, - 0x112b0, 0x112ff, -}; /* CR_In_Khudawadi */ - -/* 'In_Grantha': Block */ -static const OnigCodePoint CR_In_Grantha[] = { - 1, - 0x11300, 0x1137f, -}; /* CR_In_Grantha */ - -/* 'In_Newa': Block */ -static const OnigCodePoint CR_In_Newa[] = { - 1, - 0x11400, 0x1147f, -}; /* CR_In_Newa */ - -/* 'In_Tirhuta': Block */ -static const OnigCodePoint CR_In_Tirhuta[] = { - 1, - 0x11480, 0x114df, -}; /* CR_In_Tirhuta */ - -/* 'In_Siddham': Block */ -static const OnigCodePoint CR_In_Siddham[] = { - 1, - 0x11580, 0x115ff, -}; /* CR_In_Siddham */ - -/* 'In_Modi': Block */ -static const OnigCodePoint CR_In_Modi[] = { - 1, - 0x11600, 0x1165f, -}; /* CR_In_Modi */ - -/* 'In_Mongolian_Supplement': Block */ -static const OnigCodePoint CR_In_Mongolian_Supplement[] = { - 1, - 0x11660, 0x1167f, -}; /* CR_In_Mongolian_Supplement */ - -/* 'In_Takri': Block */ -static const OnigCodePoint CR_In_Takri[] = { - 1, - 0x11680, 0x116cf, -}; /* CR_In_Takri */ - -/* 'In_Ahom': Block */ -static const OnigCodePoint CR_In_Ahom[] = { - 1, - 0x11700, 0x1173f, -}; /* CR_In_Ahom */ - -/* 'In_Warang_Citi': Block */ -static const OnigCodePoint CR_In_Warang_Citi[] = { - 1, - 0x118a0, 0x118ff, -}; /* CR_In_Warang_Citi */ - -/* 'In_Pau_Cin_Hau': Block */ -static const OnigCodePoint CR_In_Pau_Cin_Hau[] = { - 1, - 0x11ac0, 0x11aff, -}; /* CR_In_Pau_Cin_Hau */ - -/* 'In_Bhaiksuki': Block */ -static const OnigCodePoint CR_In_Bhaiksuki[] = { - 1, - 0x11c00, 0x11c6f, -}; /* CR_In_Bhaiksuki */ - -/* 'In_Marchen': Block */ -static const OnigCodePoint CR_In_Marchen[] = { - 1, - 0x11c70, 0x11cbf, -}; /* CR_In_Marchen */ - -/* 'In_Cuneiform': Block */ -static const OnigCodePoint CR_In_Cuneiform[] = { - 1, - 0x12000, 0x123ff, -}; /* CR_In_Cuneiform */ - -/* 'In_Cuneiform_Numbers_and_Punctuation': Block */ -static const OnigCodePoint CR_In_Cuneiform_Numbers_and_Punctuation[] = { - 1, - 0x12400, 0x1247f, -}; /* CR_In_Cuneiform_Numbers_and_Punctuation */ - -/* 'In_Early_Dynastic_Cuneiform': Block */ -static const OnigCodePoint CR_In_Early_Dynastic_Cuneiform[] = { - 1, - 0x12480, 0x1254f, -}; /* CR_In_Early_Dynastic_Cuneiform */ - -/* 'In_Egyptian_Hieroglyphs': Block */ -static const OnigCodePoint CR_In_Egyptian_Hieroglyphs[] = { - 1, - 0x13000, 0x1342f, -}; /* CR_In_Egyptian_Hieroglyphs */ - -/* 'In_Anatolian_Hieroglyphs': Block */ -static const OnigCodePoint CR_In_Anatolian_Hieroglyphs[] = { - 1, - 0x14400, 0x1467f, -}; /* CR_In_Anatolian_Hieroglyphs */ - -/* 'In_Bamum_Supplement': Block */ -static const OnigCodePoint CR_In_Bamum_Supplement[] = { - 1, - 0x16800, 0x16a3f, -}; /* CR_In_Bamum_Supplement */ - -/* 'In_Mro': Block */ -static const OnigCodePoint CR_In_Mro[] = { - 1, - 0x16a40, 0x16a6f, -}; /* CR_In_Mro */ - -/* 'In_Bassa_Vah': Block */ -static const OnigCodePoint CR_In_Bassa_Vah[] = { - 1, - 0x16ad0, 0x16aff, -}; /* CR_In_Bassa_Vah */ - -/* 'In_Pahawh_Hmong': Block */ -static const OnigCodePoint CR_In_Pahawh_Hmong[] = { - 1, - 0x16b00, 0x16b8f, -}; /* CR_In_Pahawh_Hmong */ - -/* 'In_Miao': Block */ -static const OnigCodePoint CR_In_Miao[] = { - 1, - 0x16f00, 0x16f9f, -}; /* CR_In_Miao */ - -/* 'In_Ideographic_Symbols_and_Punctuation': Block */ -static const OnigCodePoint CR_In_Ideographic_Symbols_and_Punctuation[] = { - 1, - 0x16fe0, 0x16fff, -}; /* CR_In_Ideographic_Symbols_and_Punctuation */ - -/* 'In_Tangut': Block */ -static const OnigCodePoint CR_In_Tangut[] = { - 1, - 0x17000, 0x187ff, -}; /* CR_In_Tangut */ - -/* 'In_Tangut_Components': Block */ -static const OnigCodePoint CR_In_Tangut_Components[] = { - 1, - 0x18800, 0x18aff, -}; /* CR_In_Tangut_Components */ - -/* 'In_Kana_Supplement': Block */ -static const OnigCodePoint CR_In_Kana_Supplement[] = { - 1, - 0x1b000, 0x1b0ff, -}; /* CR_In_Kana_Supplement */ - -/* 'In_Duployan': Block */ -static const OnigCodePoint CR_In_Duployan[] = { - 1, - 0x1bc00, 0x1bc9f, -}; /* CR_In_Duployan */ - -/* 'In_Shorthand_Format_Controls': Block */ -static const OnigCodePoint CR_In_Shorthand_Format_Controls[] = { - 1, - 0x1bca0, 0x1bcaf, -}; /* CR_In_Shorthand_Format_Controls */ - -/* 'In_Byzantine_Musical_Symbols': Block */ -static const OnigCodePoint CR_In_Byzantine_Musical_Symbols[] = { - 1, - 0x1d000, 0x1d0ff, -}; /* CR_In_Byzantine_Musical_Symbols */ - -/* 'In_Musical_Symbols': Block */ -static const OnigCodePoint CR_In_Musical_Symbols[] = { - 1, - 0x1d100, 0x1d1ff, -}; /* CR_In_Musical_Symbols */ - -/* 'In_Ancient_Greek_Musical_Notation': Block */ -static const OnigCodePoint CR_In_Ancient_Greek_Musical_Notation[] = { - 1, - 0x1d200, 0x1d24f, -}; /* CR_In_Ancient_Greek_Musical_Notation */ - -/* 'In_Tai_Xuan_Jing_Symbols': Block */ -static const OnigCodePoint CR_In_Tai_Xuan_Jing_Symbols[] = { - 1, - 0x1d300, 0x1d35f, -}; /* CR_In_Tai_Xuan_Jing_Symbols */ - -/* 'In_Counting_Rod_Numerals': Block */ -static const OnigCodePoint CR_In_Counting_Rod_Numerals[] = { - 1, - 0x1d360, 0x1d37f, -}; /* CR_In_Counting_Rod_Numerals */ - -/* 'In_Mathematical_Alphanumeric_Symbols': Block */ -static const OnigCodePoint CR_In_Mathematical_Alphanumeric_Symbols[] = { - 1, - 0x1d400, 0x1d7ff, -}; /* CR_In_Mathematical_Alphanumeric_Symbols */ - -/* 'In_Sutton_SignWriting': Block */ -static const OnigCodePoint CR_In_Sutton_SignWriting[] = { - 1, - 0x1d800, 0x1daaf, -}; /* CR_In_Sutton_SignWriting */ - -/* 'In_Glagolitic_Supplement': Block */ -static const OnigCodePoint CR_In_Glagolitic_Supplement[] = { - 1, - 0x1e000, 0x1e02f, -}; /* CR_In_Glagolitic_Supplement */ - -/* 'In_Mende_Kikakui': Block */ -static const OnigCodePoint CR_In_Mende_Kikakui[] = { - 1, - 0x1e800, 0x1e8df, -}; /* CR_In_Mende_Kikakui */ - -/* 'In_Adlam': Block */ -static const OnigCodePoint CR_In_Adlam[] = { - 1, - 0x1e900, 0x1e95f, -}; /* CR_In_Adlam */ - -/* 'In_Arabic_Mathematical_Alphabetic_Symbols': Block */ -static const OnigCodePoint CR_In_Arabic_Mathematical_Alphabetic_Symbols[] = { - 1, - 0x1ee00, 0x1eeff, -}; /* CR_In_Arabic_Mathematical_Alphabetic_Symbols */ - -/* 'In_Mahjong_Tiles': Block */ -static const OnigCodePoint CR_In_Mahjong_Tiles[] = { - 1, - 0x1f000, 0x1f02f, -}; /* CR_In_Mahjong_Tiles */ - -/* 'In_Domino_Tiles': Block */ -static const OnigCodePoint CR_In_Domino_Tiles[] = { - 1, - 0x1f030, 0x1f09f, -}; /* CR_In_Domino_Tiles */ - -/* 'In_Playing_Cards': Block */ -static const OnigCodePoint CR_In_Playing_Cards[] = { - 1, - 0x1f0a0, 0x1f0ff, -}; /* CR_In_Playing_Cards */ - -/* 'In_Enclosed_Alphanumeric_Supplement': Block */ -static const OnigCodePoint CR_In_Enclosed_Alphanumeric_Supplement[] = { - 1, - 0x1f100, 0x1f1ff, -}; /* CR_In_Enclosed_Alphanumeric_Supplement */ - -/* 'In_Enclosed_Ideographic_Supplement': Block */ -static const OnigCodePoint CR_In_Enclosed_Ideographic_Supplement[] = { - 1, - 0x1f200, 0x1f2ff, -}; /* CR_In_Enclosed_Ideographic_Supplement */ - -/* 'In_Miscellaneous_Symbols_and_Pictographs': Block */ -static const OnigCodePoint CR_In_Miscellaneous_Symbols_and_Pictographs[] = { - 1, - 0x1f300, 0x1f5ff, -}; /* CR_In_Miscellaneous_Symbols_and_Pictographs */ - -/* 'In_Emoticons': Block */ -static const OnigCodePoint CR_In_Emoticons[] = { - 1, - 0x1f600, 0x1f64f, -}; /* CR_In_Emoticons */ - -/* 'In_Ornamental_Dingbats': Block */ -static const OnigCodePoint CR_In_Ornamental_Dingbats[] = { - 1, - 0x1f650, 0x1f67f, -}; /* CR_In_Ornamental_Dingbats */ - -/* 'In_Transport_and_Map_Symbols': Block */ -static const OnigCodePoint CR_In_Transport_and_Map_Symbols[] = { - 1, - 0x1f680, 0x1f6ff, -}; /* CR_In_Transport_and_Map_Symbols */ - -/* 'In_Alchemical_Symbols': Block */ -static const OnigCodePoint CR_In_Alchemical_Symbols[] = { - 1, - 0x1f700, 0x1f77f, -}; /* CR_In_Alchemical_Symbols */ - -/* 'In_Geometric_Shapes_Extended': Block */ -static const OnigCodePoint CR_In_Geometric_Shapes_Extended[] = { - 1, - 0x1f780, 0x1f7ff, -}; /* CR_In_Geometric_Shapes_Extended */ - -/* 'In_Supplemental_Arrows_C': Block */ -static const OnigCodePoint CR_In_Supplemental_Arrows_C[] = { - 1, - 0x1f800, 0x1f8ff, -}; /* CR_In_Supplemental_Arrows_C */ - -/* 'In_Supplemental_Symbols_and_Pictographs': Block */ -static const OnigCodePoint CR_In_Supplemental_Symbols_and_Pictographs[] = { - 1, - 0x1f900, 0x1f9ff, -}; /* CR_In_Supplemental_Symbols_and_Pictographs */ - -/* 'In_CJK_Unified_Ideographs_Extension_B': Block */ -static const OnigCodePoint CR_In_CJK_Unified_Ideographs_Extension_B[] = { - 1, - 0x20000, 0x2a6df, -}; /* CR_In_CJK_Unified_Ideographs_Extension_B */ - -/* 'In_CJK_Unified_Ideographs_Extension_C': Block */ -static const OnigCodePoint CR_In_CJK_Unified_Ideographs_Extension_C[] = { - 1, - 0x2a700, 0x2b73f, -}; /* CR_In_CJK_Unified_Ideographs_Extension_C */ - -/* 'In_CJK_Unified_Ideographs_Extension_D': Block */ -static const OnigCodePoint CR_In_CJK_Unified_Ideographs_Extension_D[] = { - 1, - 0x2b740, 0x2b81f, -}; /* CR_In_CJK_Unified_Ideographs_Extension_D */ - -/* 'In_CJK_Unified_Ideographs_Extension_E': Block */ -static const OnigCodePoint CR_In_CJK_Unified_Ideographs_Extension_E[] = { - 1, - 0x2b820, 0x2ceaf, -}; /* CR_In_CJK_Unified_Ideographs_Extension_E */ - -/* 'In_CJK_Compatibility_Ideographs_Supplement': Block */ -static const OnigCodePoint CR_In_CJK_Compatibility_Ideographs_Supplement[] = { - 1, - 0x2f800, 0x2fa1f, -}; /* CR_In_CJK_Compatibility_Ideographs_Supplement */ - -/* 'In_Tags': Block */ -static const OnigCodePoint CR_In_Tags[] = { - 1, - 0xe0000, 0xe007f, -}; /* CR_In_Tags */ - -/* 'In_Variation_Selectors_Supplement': Block */ -static const OnigCodePoint CR_In_Variation_Selectors_Supplement[] = { - 1, - 0xe0100, 0xe01ef, -}; /* CR_In_Variation_Selectors_Supplement */ - -/* 'In_Supplementary_Private_Use_Area_A': Block */ -static const OnigCodePoint CR_In_Supplementary_Private_Use_Area_A[] = { - 1, - 0xf0000, 0xfffff, -}; /* CR_In_Supplementary_Private_Use_Area_A */ - -/* 'In_Supplementary_Private_Use_Area_B': Block */ -static const OnigCodePoint CR_In_Supplementary_Private_Use_Area_B[] = { - 1, - 0x100000, 0x10ffff, -}; /* CR_In_Supplementary_Private_Use_Area_B */ - -/* 'In_No_Block': Block */ -static const OnigCodePoint CR_In_No_Block[] = { - 44, - 0x0860, 0x089f, - 0x1c90, 0x1cbf, - 0x2fe0, 0x2fef, - 0x10200, 0x1027f, - 0x103e0, 0x103ff, - 0x10570, 0x105ff, - 0x10780, 0x107ff, - 0x108b0, 0x108df, - 0x10940, 0x1097f, - 0x10aa0, 0x10abf, - 0x10bb0, 0x10bff, - 0x10c50, 0x10c7f, - 0x10d00, 0x10e5f, - 0x10e80, 0x10fff, - 0x11250, 0x1127f, - 0x11380, 0x113ff, - 0x114e0, 0x1157f, - 0x116d0, 0x116ff, - 0x11740, 0x1189f, - 0x11900, 0x11abf, - 0x11b00, 0x11bff, - 0x11cc0, 0x11fff, - 0x12550, 0x12fff, - 0x13430, 0x143ff, - 0x14680, 0x167ff, - 0x16a70, 0x16acf, - 0x16b90, 0x16eff, - 0x16fa0, 0x16fdf, - 0x18b00, 0x1afff, - 0x1b100, 0x1bbff, - 0x1bcb0, 0x1cfff, - 0x1d250, 0x1d2ff, - 0x1d380, 0x1d3ff, - 0x1dab0, 0x1dfff, - 0x1e030, 0x1e7ff, - 0x1e8e0, 0x1e8ff, - 0x1e960, 0x1edff, - 0x1ef00, 0x1efff, - 0x1fa00, 0x1ffff, - 0x2a6e0, 0x2a6ff, - 0x2ceb0, 0x2f7ff, - 0x2fa20, 0xdffff, - 0xe0080, 0xe00ff, - 0xe01f0, 0xeffff, -}; /* CR_In_No_Block */ - -#endif /* USE_UNICODE_PROPERTIES */ -static const OnigCodePoint* const CodeRanges[] = { - CR_NEWLINE, - CR_Alpha, - CR_Blank, - CR_Cntrl, - CR_Digit, - CR_Graph, - CR_Lower, - CR_Print, - CR_XPosixPunct, - CR_Space, - CR_Upper, - CR_XDigit, - CR_Word, - CR_Alnum, - CR_ASCII, - CR_Punct, -#ifdef USE_UNICODE_PROPERTIES - CR_Any, - CR_Assigned, - CR_C, - CR_Cc, - CR_Cf, - CR_Cn, - CR_Co, - CR_Cs, - CR_L, - CR_LC, - CR_Ll, - CR_Lm, - CR_Lo, - CR_Lt, - CR_Lu, - CR_M, - CR_Mc, - CR_Me, - CR_Mn, - CR_N, - CR_Nd, - CR_Nl, - CR_No, - CR_P, - CR_Pc, - CR_Pd, - CR_Pe, - CR_Pf, - CR_Pi, - CR_Po, - CR_Ps, - CR_S, - CR_Sc, - CR_Sk, - CR_Sm, - CR_So, - CR_Z, - CR_Zl, - CR_Zp, - CR_Zs, - CR_Math, - CR_Alphabetic, - CR_Lowercase, - CR_Uppercase, - CR_Cased, - CR_Case_Ignorable, - CR_Changes_When_Lowercased, - CR_Changes_When_Uppercased, - CR_Changes_When_Titlecased, - CR_Changes_When_Casefolded, - CR_Changes_When_Casemapped, - CR_ID_Start, - CR_ID_Continue, - CR_XID_Start, - CR_XID_Continue, - CR_Default_Ignorable_Code_Point, - CR_Grapheme_Extend, - CR_Grapheme_Base, - CR_Grapheme_Link, - CR_Common, - CR_Latin, - CR_Greek, - CR_Cyrillic, - CR_Armenian, - CR_Hebrew, - CR_Arabic, - CR_Syriac, - CR_Thaana, - CR_Devanagari, - CR_Bengali, - CR_Gurmukhi, - CR_Gujarati, - CR_Oriya, - CR_Tamil, - CR_Telugu, - CR_Kannada, - CR_Malayalam, - CR_Sinhala, - CR_Thai, - CR_Lao, - CR_Tibetan, - CR_Myanmar, - CR_Georgian, - CR_Hangul, - CR_Ethiopic, - CR_Cherokee, - CR_Canadian_Aboriginal, - CR_Ogham, - CR_Runic, - CR_Khmer, - CR_Mongolian, - CR_Hiragana, - CR_Katakana, - CR_Bopomofo, - CR_Han, - CR_Yi, - CR_Old_Italic, - CR_Gothic, - CR_Deseret, - CR_Inherited, - CR_Tagalog, - CR_Hanunoo, - CR_Buhid, - CR_Tagbanwa, - CR_Limbu, - CR_Tai_Le, - CR_Linear_B, - CR_Ugaritic, - CR_Shavian, - CR_Osmanya, - CR_Cypriot, - CR_Braille, - CR_Buginese, - CR_Coptic, - CR_New_Tai_Lue, - CR_Glagolitic, - CR_Tifinagh, - CR_Syloti_Nagri, - CR_Old_Persian, - CR_Kharoshthi, - CR_Balinese, - CR_Cuneiform, - CR_Phoenician, - CR_Phags_Pa, - CR_Nko, - CR_Sundanese, - CR_Lepcha, - CR_Ol_Chiki, - CR_Vai, - CR_Saurashtra, - CR_Kayah_Li, - CR_Rejang, - CR_Lycian, - CR_Carian, - CR_Lydian, - CR_Cham, - CR_Tai_Tham, - CR_Tai_Viet, - CR_Avestan, - CR_Egyptian_Hieroglyphs, - CR_Samaritan, - CR_Lisu, - CR_Bamum, - CR_Javanese, - CR_Meetei_Mayek, - CR_Imperial_Aramaic, - CR_Old_South_Arabian, - CR_Inscriptional_Parthian, - CR_Inscriptional_Pahlavi, - CR_Old_Turkic, - CR_Kaithi, - CR_Batak, - CR_Brahmi, - CR_Mandaic, - CR_Chakma, - CR_Meroitic_Cursive, - CR_Meroitic_Hieroglyphs, - CR_Miao, - CR_Sharada, - CR_Sora_Sompeng, - CR_Takri, - CR_Caucasian_Albanian, - CR_Bassa_Vah, - CR_Duployan, - CR_Elbasan, - CR_Grantha, - CR_Pahawh_Hmong, - CR_Khojki, - CR_Linear_A, - CR_Mahajani, - CR_Manichaean, - CR_Mende_Kikakui, - CR_Modi, - CR_Mro, - CR_Old_North_Arabian, - CR_Nabataean, - CR_Palmyrene, - CR_Pau_Cin_Hau, - CR_Old_Permic, - CR_Psalter_Pahlavi, - CR_Siddham, - CR_Khudawadi, - CR_Tirhuta, - CR_Warang_Citi, - CR_Ahom, - CR_Anatolian_Hieroglyphs, - CR_Hatran, - CR_Multani, - CR_Old_Hungarian, - CR_SignWriting, - CR_Adlam, - CR_Bhaiksuki, - CR_Marchen, - CR_Newa, - CR_Osage, - CR_Tangut, - CR_White_Space, - CR_Bidi_Control, - CR_Join_Control, - CR_Dash, - CR_Hyphen, - CR_Quotation_Mark, - CR_Terminal_Punctuation, - CR_Other_Math, - CR_Hex_Digit, - CR_ASCII_Hex_Digit, - CR_Other_Alphabetic, - CR_Ideographic, - CR_Diacritic, - CR_Extender, - CR_Other_Lowercase, - CR_Other_Uppercase, - CR_Noncharacter_Code_Point, - CR_Other_Grapheme_Extend, - CR_IDS_Binary_Operator, - CR_IDS_Trinary_Operator, - CR_Radical, - CR_Unified_Ideograph, - CR_Other_Default_Ignorable_Code_Point, - CR_Deprecated, - CR_Soft_Dotted, - CR_Logical_Order_Exception, - CR_Other_ID_Start, - CR_Other_ID_Continue, - CR_Sentence_Terminal, - CR_Variation_Selector, - CR_Pattern_White_Space, - CR_Pattern_Syntax, - CR_Prepended_Concatenation_Mark, - CR_Unknown, -#ifdef USE_UNICODE_AGE_PROPERTIES - CR_Age_1_1, - CR_Age_2_0, - CR_Age_2_1, - CR_Age_3_0, - CR_Age_3_1, - CR_Age_3_2, - CR_Age_4_0, - CR_Age_4_1, - CR_Age_5_0, - CR_Age_5_1, - CR_Age_5_2, - CR_Age_6_0, - CR_Age_6_1, - CR_Age_6_2, - CR_Age_6_3, - CR_Age_7_0, - CR_Age_8_0, - CR_Age_9_0, -#endif /* USE_UNICODE_AGE_PROPERTIES */ - CR_Grapheme_Cluster_Break_Prepend, - CR_Grapheme_Cluster_Break_CR, - CR_Grapheme_Cluster_Break_LF, - CR_Grapheme_Cluster_Break_Control, - CR_Grapheme_Cluster_Break_Extend, - CR_Grapheme_Cluster_Break_Regional_Indicator, - CR_Grapheme_Cluster_Break_SpacingMark, - CR_Grapheme_Cluster_Break_L, - CR_Grapheme_Cluster_Break_V, - CR_Grapheme_Cluster_Break_T, - CR_Grapheme_Cluster_Break_LV, - CR_Grapheme_Cluster_Break_LVT, - CR_Grapheme_Cluster_Break_E_Base, - CR_Grapheme_Cluster_Break_E_Modifier, - CR_Grapheme_Cluster_Break_ZWJ, - CR_Grapheme_Cluster_Break_Glue_After_Zwj, - CR_Grapheme_Cluster_Break_E_Base_GAZ, - CR_In_Basic_Latin, - CR_In_Latin_1_Supplement, - CR_In_Latin_Extended_A, - CR_In_Latin_Extended_B, - CR_In_IPA_Extensions, - CR_In_Spacing_Modifier_Letters, - CR_In_Combining_Diacritical_Marks, - CR_In_Greek_and_Coptic, - CR_In_Cyrillic, - CR_In_Cyrillic_Supplement, - CR_In_Armenian, - CR_In_Hebrew, - CR_In_Arabic, - CR_In_Syriac, - CR_In_Arabic_Supplement, - CR_In_Thaana, - CR_In_NKo, - CR_In_Samaritan, - CR_In_Mandaic, - CR_In_Arabic_Extended_A, - CR_In_Devanagari, - CR_In_Bengali, - CR_In_Gurmukhi, - CR_In_Gujarati, - CR_In_Oriya, - CR_In_Tamil, - CR_In_Telugu, - CR_In_Kannada, - CR_In_Malayalam, - CR_In_Sinhala, - CR_In_Thai, - CR_In_Lao, - CR_In_Tibetan, - CR_In_Myanmar, - CR_In_Georgian, - CR_In_Hangul_Jamo, - CR_In_Ethiopic, - CR_In_Ethiopic_Supplement, - CR_In_Cherokee, - CR_In_Unified_Canadian_Aboriginal_Syllabics, - CR_In_Ogham, - CR_In_Runic, - CR_In_Tagalog, - CR_In_Hanunoo, - CR_In_Buhid, - CR_In_Tagbanwa, - CR_In_Khmer, - CR_In_Mongolian, - CR_In_Unified_Canadian_Aboriginal_Syllabics_Extended, - CR_In_Limbu, - CR_In_Tai_Le, - CR_In_New_Tai_Lue, - CR_In_Khmer_Symbols, - CR_In_Buginese, - CR_In_Tai_Tham, - CR_In_Combining_Diacritical_Marks_Extended, - CR_In_Balinese, - CR_In_Sundanese, - CR_In_Batak, - CR_In_Lepcha, - CR_In_Ol_Chiki, - CR_In_Cyrillic_Extended_C, - CR_In_Sundanese_Supplement, - CR_In_Vedic_Extensions, - CR_In_Phonetic_Extensions, - CR_In_Phonetic_Extensions_Supplement, - CR_In_Combining_Diacritical_Marks_Supplement, - CR_In_Latin_Extended_Additional, - CR_In_Greek_Extended, - CR_In_General_Punctuation, - CR_In_Superscripts_and_Subscripts, - CR_In_Currency_Symbols, - CR_In_Combining_Diacritical_Marks_for_Symbols, - CR_In_Letterlike_Symbols, - CR_In_Number_Forms, - CR_In_Arrows, - CR_In_Mathematical_Operators, - CR_In_Miscellaneous_Technical, - CR_In_Control_Pictures, - CR_In_Optical_Character_Recognition, - CR_In_Enclosed_Alphanumerics, - CR_In_Box_Drawing, - CR_In_Block_Elements, - CR_In_Geometric_Shapes, - CR_In_Miscellaneous_Symbols, - CR_In_Dingbats, - CR_In_Miscellaneous_Mathematical_Symbols_A, - CR_In_Supplemental_Arrows_A, - CR_In_Braille_Patterns, - CR_In_Supplemental_Arrows_B, - CR_In_Miscellaneous_Mathematical_Symbols_B, - CR_In_Supplemental_Mathematical_Operators, - CR_In_Miscellaneous_Symbols_and_Arrows, - CR_In_Glagolitic, - CR_In_Latin_Extended_C, - CR_In_Coptic, - CR_In_Georgian_Supplement, - CR_In_Tifinagh, - CR_In_Ethiopic_Extended, - CR_In_Cyrillic_Extended_A, - CR_In_Supplemental_Punctuation, - CR_In_CJK_Radicals_Supplement, - CR_In_Kangxi_Radicals, - CR_In_Ideographic_Description_Characters, - CR_In_CJK_Symbols_and_Punctuation, - CR_In_Hiragana, - CR_In_Katakana, - CR_In_Bopomofo, - CR_In_Hangul_Compatibility_Jamo, - CR_In_Kanbun, - CR_In_Bopomofo_Extended, - CR_In_CJK_Strokes, - CR_In_Katakana_Phonetic_Extensions, - CR_In_Enclosed_CJK_Letters_and_Months, - CR_In_CJK_Compatibility, - CR_In_CJK_Unified_Ideographs_Extension_A, - CR_In_Yijing_Hexagram_Symbols, - CR_In_CJK_Unified_Ideographs, - CR_In_Yi_Syllables, - CR_In_Yi_Radicals, - CR_In_Lisu, - CR_In_Vai, - CR_In_Cyrillic_Extended_B, - CR_In_Bamum, - CR_In_Modifier_Tone_Letters, - CR_In_Latin_Extended_D, - CR_In_Syloti_Nagri, - CR_In_Common_Indic_Number_Forms, - CR_In_Phags_pa, - CR_In_Saurashtra, - CR_In_Devanagari_Extended, - CR_In_Kayah_Li, - CR_In_Rejang, - CR_In_Hangul_Jamo_Extended_A, - CR_In_Javanese, - CR_In_Myanmar_Extended_B, - CR_In_Cham, - CR_In_Myanmar_Extended_A, - CR_In_Tai_Viet, - CR_In_Meetei_Mayek_Extensions, - CR_In_Ethiopic_Extended_A, - CR_In_Latin_Extended_E, - CR_In_Cherokee_Supplement, - CR_In_Meetei_Mayek, - CR_In_Hangul_Syllables, - CR_In_Hangul_Jamo_Extended_B, - CR_In_High_Surrogates, - CR_In_High_Private_Use_Surrogates, - CR_In_Low_Surrogates, - CR_In_Private_Use_Area, - CR_In_CJK_Compatibility_Ideographs, - CR_In_Alphabetic_Presentation_Forms, - CR_In_Arabic_Presentation_Forms_A, - CR_In_Variation_Selectors, - CR_In_Vertical_Forms, - CR_In_Combining_Half_Marks, - CR_In_CJK_Compatibility_Forms, - CR_In_Small_Form_Variants, - CR_In_Arabic_Presentation_Forms_B, - CR_In_Halfwidth_and_Fullwidth_Forms, - CR_In_Specials, - CR_In_Linear_B_Syllabary, - CR_In_Linear_B_Ideograms, - CR_In_Aegean_Numbers, - CR_In_Ancient_Greek_Numbers, - CR_In_Ancient_Symbols, - CR_In_Phaistos_Disc, - CR_In_Lycian, - CR_In_Carian, - CR_In_Coptic_Epact_Numbers, - CR_In_Old_Italic, - CR_In_Gothic, - CR_In_Old_Permic, - CR_In_Ugaritic, - CR_In_Old_Persian, - CR_In_Deseret, - CR_In_Shavian, - CR_In_Osmanya, - CR_In_Osage, - CR_In_Elbasan, - CR_In_Caucasian_Albanian, - CR_In_Linear_A, - CR_In_Cypriot_Syllabary, - CR_In_Imperial_Aramaic, - CR_In_Palmyrene, - CR_In_Nabataean, - CR_In_Hatran, - CR_In_Phoenician, - CR_In_Lydian, - CR_In_Meroitic_Hieroglyphs, - CR_In_Meroitic_Cursive, - CR_In_Kharoshthi, - CR_In_Old_South_Arabian, - CR_In_Old_North_Arabian, - CR_In_Manichaean, - CR_In_Avestan, - CR_In_Inscriptional_Parthian, - CR_In_Inscriptional_Pahlavi, - CR_In_Psalter_Pahlavi, - CR_In_Old_Turkic, - CR_In_Old_Hungarian, - CR_In_Rumi_Numeral_Symbols, - CR_In_Brahmi, - CR_In_Kaithi, - CR_In_Sora_Sompeng, - CR_In_Chakma, - CR_In_Mahajani, - CR_In_Sharada, - CR_In_Sinhala_Archaic_Numbers, - CR_In_Khojki, - CR_In_Multani, - CR_In_Khudawadi, - CR_In_Grantha, - CR_In_Newa, - CR_In_Tirhuta, - CR_In_Siddham, - CR_In_Modi, - CR_In_Mongolian_Supplement, - CR_In_Takri, - CR_In_Ahom, - CR_In_Warang_Citi, - CR_In_Pau_Cin_Hau, - CR_In_Bhaiksuki, - CR_In_Marchen, - CR_In_Cuneiform, - CR_In_Cuneiform_Numbers_and_Punctuation, - CR_In_Early_Dynastic_Cuneiform, - CR_In_Egyptian_Hieroglyphs, - CR_In_Anatolian_Hieroglyphs, - CR_In_Bamum_Supplement, - CR_In_Mro, - CR_In_Bassa_Vah, - CR_In_Pahawh_Hmong, - CR_In_Miao, - CR_In_Ideographic_Symbols_and_Punctuation, - CR_In_Tangut, - CR_In_Tangut_Components, - CR_In_Kana_Supplement, - CR_In_Duployan, - CR_In_Shorthand_Format_Controls, - CR_In_Byzantine_Musical_Symbols, - CR_In_Musical_Symbols, - CR_In_Ancient_Greek_Musical_Notation, - CR_In_Tai_Xuan_Jing_Symbols, - CR_In_Counting_Rod_Numerals, - CR_In_Mathematical_Alphanumeric_Symbols, - CR_In_Sutton_SignWriting, - CR_In_Glagolitic_Supplement, - CR_In_Mende_Kikakui, - CR_In_Adlam, - CR_In_Arabic_Mathematical_Alphabetic_Symbols, - CR_In_Mahjong_Tiles, - CR_In_Domino_Tiles, - CR_In_Playing_Cards, - CR_In_Enclosed_Alphanumeric_Supplement, - CR_In_Enclosed_Ideographic_Supplement, - CR_In_Miscellaneous_Symbols_and_Pictographs, - CR_In_Emoticons, - CR_In_Ornamental_Dingbats, - CR_In_Transport_and_Map_Symbols, - CR_In_Alchemical_Symbols, - CR_In_Geometric_Shapes_Extended, - CR_In_Supplemental_Arrows_C, - CR_In_Supplemental_Symbols_and_Pictographs, - CR_In_CJK_Unified_Ideographs_Extension_B, - CR_In_CJK_Unified_Ideographs_Extension_C, - CR_In_CJK_Unified_Ideographs_Extension_D, - CR_In_CJK_Unified_Ideographs_Extension_E, - CR_In_CJK_Compatibility_Ideographs_Supplement, - CR_In_Tags, - CR_In_Variation_Selectors_Supplement, - CR_In_Supplementary_Private_Use_Area_A, - CR_In_Supplementary_Private_Use_Area_B, - CR_In_No_Block, -#endif /* USE_UNICODE_PROPERTIES */ -}; -struct uniname2ctype_struct { - short name; - unsigned short ctype; -}; -#define uniname2ctype_offset(str) offsetof(struct uniname2ctype_pool_t, uniname2ctype_pool_##str) - -static const struct uniname2ctype_struct *uniname2ctype_p(const char *, unsigned int); - -#ifndef USE_UNICODE_PROPERTIES -#define TOTAL_KEYWORDS 15 -#define MIN_WORD_LENGTH 4 -#define MAX_WORD_LENGTH 11 -#define MIN_HASH_VALUE 6 -#define MAX_HASH_VALUE 20 -/* maximum key range = 15, duplicates = 0 */ -#else /* USE_UNICODE_PROPERTIES */ -#ifndef USE_UNICODE_AGE_PROPERTIES -#define TOTAL_KEYWORDS 753 -#else /* USE_UNICODE_AGE_PROPERTIES */ -#define TOTAL_KEYWORDS 771 -#endif /* USE_UNICODE_AGE_PROPERTIES */ -#define MIN_WORD_LENGTH 1 -#define MAX_WORD_LENGTH 44 -#define MIN_HASH_VALUE 3 -#define MAX_HASH_VALUE 5275 -/* maximum key range = 5273, duplicates = 0 */ -#endif /* USE_UNICODE_PROPERTIES */ - -#if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__cplusplus) || defined(__GNUC_STDC_INLINE__) -inline -#elif defined(__GNUC__) -__inline -#endif -static unsigned int -uniname2ctype_hash (str, len) - register const char *str; - register unsigned int len; -{ -#ifndef USE_UNICODE_PROPERTIES - static const unsigned char asso_values[] = -#else /* USE_UNICODE_PROPERTIES */ - static const unsigned short asso_values[] = -#endif /* USE_UNICODE_PROPERTIES */ - { -#ifndef USE_UNICODE_PROPERTIES - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 3, 12, 5, - 4, 21, 21, 10, 21, 1, 21, 21, 11, 21, - 2, 1, 1, 21, 1, 7, 4, 6, 21, 1, - 4, 21, 21, 21, 21, 21, 21, 21 -#else /* USE_UNICODE_PROPERTIES */ - 5276, 5276, 5276, 5276, 5276, 5276, 5276, 5276, 5276, 5276, - 5276, 5276, 5276, 5276, 5276, 5276, 5276, 5276, 5276, 5276, - 5276, 5276, 5276, 5276, 5276, 5276, 5276, 5276, 5276, 5276, - 5276, 5276, 5276, 5276, 5276, 5276, 5276, 5276, 5276, 5276, -#ifndef USE_UNICODE_AGE_PROPERTIES - 5276, 5276, 5276, 5276, 5276, 5276, 5276, 5276, 5276, 5276, - 5276, 5276, 5276, 5276, 5276, 5276, 5276, 5276, 5276, 5276, -#else /* USE_UNICODE_AGE_PROPERTIES */ - 5276, 5276, 5276, 5276, 5276, 5276, 1, 5276, 8, 1, - 2, 11, 25, 22, 7, 19, 14, 13, 5276, 5276, -#endif /* USE_UNICODE_AGE_PROPERTIES */ - 5276, 5276, 5276, 5276, 5276, 5276, 5276, 5276, 5276, 5276, - 5276, 5276, 5276, 5276, 5276, 5276, 5276, 5276, 5276, 5276, - 5276, 5276, 5276, 5276, 5276, 5276, 5276, 5276, 5276, 5276, - 5276, 5276, 5276, 5276, 5276, 5276, 5276, 13, 1100, 20, - 497, 25, 315, 494, 322, 4, 279, 1693, 169, 7, - 1, 267, 1336, 2, 214, 40, 92, 1301, 615, 434, - 494, 1306, 17, 5276, 5276, 5276, 5276, 5276 -#endif /* USE_UNICODE_PROPERTIES */ - }; -#ifndef USE_UNICODE_PROPERTIES - return len + asso_values[(unsigned char)str[2]] + asso_values[(unsigned char)str[0]]; -#else /* USE_UNICODE_PROPERTIES */ - register int hval = len; - - switch (hval) - { - default: - hval += asso_values[(unsigned char)str[15]]; - /*FALLTHROUGH*/ - case 15: - case 14: - case 13: - case 12: - hval += asso_values[(unsigned char)str[11]]; - /*FALLTHROUGH*/ - case 11: - case 10: - case 9: - case 8: - case 7: - case 6: - hval += asso_values[(unsigned char)str[5]]; - /*FALLTHROUGH*/ - case 5: - hval += asso_values[(unsigned char)str[4]]; - /*FALLTHROUGH*/ - case 4: - case 3: - hval += asso_values[(unsigned char)str[2]]; - /*FALLTHROUGH*/ - case 2: - hval += asso_values[(unsigned char)str[1]]; - /*FALLTHROUGH*/ - case 1: - hval += asso_values[(unsigned char)str[0]]; - break; - } - return hval + asso_values[(unsigned char)str[len - 1]]; -#endif /* USE_UNICODE_PROPERTIES */ -} - -struct uniname2ctype_pool_t - { -#ifndef USE_UNICODE_PROPERTIES - char uniname2ctype_pool_str6[sizeof("word")]; - char uniname2ctype_pool_str7[sizeof("print")]; - char uniname2ctype_pool_str8[sizeof("punct")]; - char uniname2ctype_pool_str9[sizeof("alpha")]; - char uniname2ctype_pool_str10[sizeof("alnum")]; - char uniname2ctype_pool_str11[sizeof("xdigit")]; - char uniname2ctype_pool_str12[sizeof("upper")]; - char uniname2ctype_pool_str13[sizeof("ascii")]; - char uniname2ctype_pool_str14[sizeof("cntrl")]; - char uniname2ctype_pool_str15[sizeof("space")]; - char uniname2ctype_pool_str16[sizeof("xposixpunct")]; - char uniname2ctype_pool_str17[sizeof("lower")]; - char uniname2ctype_pool_str18[sizeof("graph")]; - char uniname2ctype_pool_str19[sizeof("digit")]; - char uniname2ctype_pool_str20[sizeof("blank")]; -#else /* USE_UNICODE_PROPERTIES */ - char uniname2ctype_pool_str3[sizeof("n")]; - char uniname2ctype_pool_str11[sizeof("mn")]; - char uniname2ctype_pool_str15[sizeof("m")]; - char uniname2ctype_pool_str24[sizeof("cn")]; - char uniname2ctype_pool_str29[sizeof("mani")]; - char uniname2ctype_pool_str30[sizeof("ci")]; - char uniname2ctype_pool_str31[sizeof("inmanichaean")]; - char uniname2ctype_pool_str35[sizeof("z")]; - char uniname2ctype_pool_str36[sizeof("qaai")]; - char uniname2ctype_pool_str41[sizeof("c")]; - char uniname2ctype_pool_str49[sizeof("mc")]; - char uniname2ctype_pool_str52[sizeof("qaac")]; - char uniname2ctype_pool_str56[sizeof("sm")]; - char uniname2ctype_pool_str58[sizeof("incham")]; - char uniname2ctype_pool_str59[sizeof("me")]; - char uniname2ctype_pool_str61[sizeof("inarmenian")]; - char uniname2ctype_pool_str62[sizeof("cc")]; - char uniname2ctype_pool_str65[sizeof("mandaic")]; - char uniname2ctype_pool_str69[sizeof("incuneiform")]; - char uniname2ctype_pool_str72[sizeof("zzzz")]; - char uniname2ctype_pool_str77[sizeof("insamaritan")]; - char uniname2ctype_pool_str78[sizeof("cans")]; - char uniname2ctype_pool_str81[sizeof("s")]; - char uniname2ctype_pool_str82[sizeof("sc")]; - char uniname2ctype_pool_str86[sizeof("ascii")]; - char uniname2ctype_pool_str93[sizeof("inavestan")]; - char uniname2ctype_pool_str99[sizeof("zs")]; - char uniname2ctype_pool_str102[sizeof("cs")]; - char uniname2ctype_pool_str106[sizeof("inipaextensions")]; - char uniname2ctype_pool_str110[sizeof("incuneiformnumbersandpunctuation")]; - char uniname2ctype_pool_str114[sizeof("incommonindicnumberforms")]; - char uniname2ctype_pool_str124[sizeof("inthai")]; - char uniname2ctype_pool_str132[sizeof("mtei")]; - char uniname2ctype_pool_str140[sizeof("inspecials")]; - char uniname2ctype_pool_str141[sizeof("initialpunctuation")]; - char uniname2ctype_pool_str144[sizeof("inthaana")]; - char uniname2ctype_pool_str145[sizeof("inancientsymbols")]; - char uniname2ctype_pool_str152[sizeof("inmiscellaneousmathematicalsymbolsa")]; - char uniname2ctype_pool_str159[sizeof("inmusicalsymbols")]; - char uniname2ctype_pool_str164[sizeof("taile")]; - char uniname2ctype_pool_str174[sizeof("inmyanmarextendeda")]; - char uniname2ctype_pool_str176[sizeof("sterm")]; - char uniname2ctype_pool_str185[sizeof("lm")]; - char uniname2ctype_pool_str191[sizeof("lina")]; - char uniname2ctype_pool_str199[sizeof("inmiscellaneoussymbols")]; - char uniname2ctype_pool_str200[sizeof("lana")]; - char uniname2ctype_pool_str201[sizeof("intransportandmapsymbols")]; - char uniname2ctype_pool_str202[sizeof("alnum")]; - char uniname2ctype_pool_str207[sizeof("inlycian")]; - char uniname2ctype_pool_str208[sizeof("inmiscellaneoussymbolsandarrows")]; - char uniname2ctype_pool_str209[sizeof("intaitham")]; - char uniname2ctype_pool_str211[sizeof("lc")]; - char uniname2ctype_pool_str212[sizeof("inmalayalam")]; - char uniname2ctype_pool_str213[sizeof("inmiscellaneoussymbolsandpictographs")]; - char uniname2ctype_pool_str214[sizeof("inadlam")]; - char uniname2ctype_pool_str220[sizeof("incontrolpictures")]; - char uniname2ctype_pool_str222[sizeof("inlineara")]; - char uniname2ctype_pool_str237[sizeof("taiviet")]; - char uniname2ctype_pool_str239[sizeof("armn")]; - char uniname2ctype_pool_str242[sizeof("armi")]; - char uniname2ctype_pool_str247[sizeof("sinhala")]; - char uniname2ctype_pool_str248[sizeof("armenian")]; - char uniname2ctype_pool_str249[sizeof("inmyanmar")]; - char uniname2ctype_pool_str251[sizeof("inrunic")]; - char uniname2ctype_pool_str252[sizeof("incarian")]; - char uniname2ctype_pool_str255[sizeof("cari")]; - char uniname2ctype_pool_str256[sizeof("inmarchen")]; - char uniname2ctype_pool_str258[sizeof("marc")]; - char uniname2ctype_pool_str268[sizeof("carian")]; - char uniname2ctype_pool_str270[sizeof("merc")]; - char uniname2ctype_pool_str273[sizeof("incyrillic")]; - char uniname2ctype_pool_str278[sizeof("samr")]; - char uniname2ctype_pool_str279[sizeof("latn")]; - char uniname2ctype_pool_str281[sizeof("latin")]; - char uniname2ctype_pool_str282[sizeof("ital")]; - char uniname2ctype_pool_str284[sizeof("intamil")]; - char uniname2ctype_pool_str285[sizeof("taml")]; - char uniname2ctype_pool_str286[sizeof("inmultani")]; - char uniname2ctype_pool_str288[sizeof("samaritan")]; - char uniname2ctype_pool_str290[sizeof("arabic")]; - char uniname2ctype_pool_str291[sizeof("insyriac")]; - char uniname2ctype_pool_str294[sizeof("insharada")]; - char uniname2ctype_pool_str295[sizeof("miao")]; - char uniname2ctype_pool_str296[sizeof("inlinearbideograms")]; - char uniname2ctype_pool_str299[sizeof("incherokee")]; - char uniname2ctype_pool_str302[sizeof("intaile")]; - char uniname2ctype_pool_str303[sizeof("tale")]; - char uniname2ctype_pool_str305[sizeof("inahom")]; - char uniname2ctype_pool_str309[sizeof("inmeeteimayekextensions")]; - char uniname2ctype_pool_str310[sizeof("inruminumeralsymbols")]; - char uniname2ctype_pool_str313[sizeof("inlatinextendeda")]; - char uniname2ctype_pool_str314[sizeof("inosmanya")]; - char uniname2ctype_pool_str327[sizeof("inlatinextendedc")]; - char uniname2ctype_pool_str331[sizeof("osma")]; - char uniname2ctype_pool_str337[sizeof("inlatinextendede")]; - char uniname2ctype_pool_str339[sizeof("l")]; - char uniname2ctype_pool_str340[sizeof("han")]; - char uniname2ctype_pool_str341[sizeof("nl")]; - char uniname2ctype_pool_str342[sizeof("term")]; - char uniname2ctype_pool_str344[sizeof("hani")]; - char uniname2ctype_pool_str347[sizeof("inideographicsymbolsandpunctuation")]; - char uniname2ctype_pool_str348[sizeof("zinh")]; - char uniname2ctype_pool_str355[sizeof("lt")]; - char uniname2ctype_pool_str357[sizeof("zl")]; - char uniname2ctype_pool_str361[sizeof("inmahajani")]; - char uniname2ctype_pool_str366[sizeof("cham")]; - char uniname2ctype_pool_str368[sizeof("connectorpunctuation")]; - char uniname2ctype_pool_str371[sizeof("sinh")]; - char uniname2ctype_pool_str374[sizeof("manichaean")]; - char uniname2ctype_pool_str375[sizeof("osage")]; - char uniname2ctype_pool_str382[sizeof("inmiscellaneoustechnical")]; - char uniname2ctype_pool_str386[sizeof("inethiopic")]; - char uniname2ctype_pool_str390[sizeof("insinhala")]; - char uniname2ctype_pool_str394[sizeof("chakma")]; - char uniname2ctype_pool_str400[sizeof("shavian")]; - char uniname2ctype_pool_str419[sizeof("inideographicdescriptioncharacters")]; - char uniname2ctype_pool_str421[sizeof("lineara")]; - char uniname2ctype_pool_str422[sizeof("meroiticcursive")]; - char uniname2ctype_pool_str435[sizeof("thai")]; - char uniname2ctype_pool_str438[sizeof("math")]; - char uniname2ctype_pool_str440[sizeof("inemoticons")]; - char uniname2ctype_pool_str444[sizeof("thaa")]; - char uniname2ctype_pool_str447[sizeof("ethi")]; - char uniname2ctype_pool_str448[sizeof("hatran")]; - char uniname2ctype_pool_str452[sizeof("inenclosedalphanumerics")]; - char uniname2ctype_pool_str453[sizeof("sentenceterminal")]; - char uniname2ctype_pool_str455[sizeof("tamil")]; - char uniname2ctype_pool_str456[sizeof("cntrl")]; - char uniname2ctype_pool_str458[sizeof("taitham")]; - char uniname2ctype_pool_str460[sizeof("thaana")]; - char uniname2ctype_pool_str468[sizeof("terminalpunctuation")]; - char uniname2ctype_pool_str471[sizeof("insinhalaarchaicnumbers")]; - char uniname2ctype_pool_str472[sizeof("innewa")]; - char uniname2ctype_pool_str477[sizeof("newa")]; - char uniname2ctype_pool_str478[sizeof("inlatinextendedadditional")]; - char uniname2ctype_pool_str485[sizeof("cwcm")]; - char uniname2ctype_pool_str489[sizeof("loe")]; - char uniname2ctype_pool_str503[sizeof("inopticalcharacterrecognition")]; - char uniname2ctype_pool_str504[sizeof("inearlydynasticcuneiform")]; - char uniname2ctype_pool_str507[sizeof("di")]; - char uniname2ctype_pool_str508[sizeof("asciihexdigit")]; - char uniname2ctype_pool_str509[sizeof("ll")]; - char uniname2ctype_pool_str511[sizeof("newtailue")]; - char uniname2ctype_pool_str512[sizeof("inscriptionalparthian")]; - char uniname2ctype_pool_str513[sizeof("inenclosedalphanumericsupplement")]; - char uniname2ctype_pool_str516[sizeof("oriya")]; - char uniname2ctype_pool_str517[sizeof("mero")]; - char uniname2ctype_pool_str519[sizeof("inmongolian")]; - char uniname2ctype_pool_str522[sizeof("mand")]; - char uniname2ctype_pool_str523[sizeof("inmodi")]; - char uniname2ctype_pool_str530[sizeof("dia")]; - char uniname2ctype_pool_str534[sizeof("mend")]; - char uniname2ctype_pool_str535[sizeof("ingrantha")]; - char uniname2ctype_pool_str537[sizeof("no")]; - char uniname2ctype_pool_str538[sizeof("sora")]; - char uniname2ctype_pool_str539[sizeof("inmandaic")]; -#ifdef USE_UNICODE_AGE_PROPERTIES - char uniname2ctype_pool_str542[sizeof("age=1.1")]; - char uniname2ctype_pool_str543[sizeof("age=2.1")]; -#endif /* USE_UNICODE_AGE_PROPERTIES */ - char uniname2ctype_pool_str544[sizeof("idc")]; - char uniname2ctype_pool_str545[sizeof("innko")]; - char uniname2ctype_pool_str546[sizeof("sind")]; - char uniname2ctype_pool_str547[sizeof("inarrows")]; -#ifdef USE_UNICODE_AGE_PROPERTIES - char uniname2ctype_pool_str548[sizeof("age=6.1")]; - char uniname2ctype_pool_str549[sizeof("age=6.2")]; - char uniname2ctype_pool_str550[sizeof("age=2.0")]; -#endif /* USE_UNICODE_AGE_PROPERTIES */ - char uniname2ctype_pool_str551[sizeof("inmro")]; -#ifdef USE_UNICODE_AGE_PROPERTIES - char uniname2ctype_pool_str552[sizeof("age=3.1")]; - char uniname2ctype_pool_str553[sizeof("age=3.2")]; -#endif /* USE_UNICODE_AGE_PROPERTIES */ - char uniname2ctype_pool_str554[sizeof("titlecaseletter")]; -#ifdef USE_UNICODE_AGE_PROPERTIES - char uniname2ctype_pool_str555[sizeof("age=6.0")]; -#endif /* USE_UNICODE_AGE_PROPERTIES */ - char uniname2ctype_pool_str556[sizeof("co")]; - char uniname2ctype_pool_str557[sizeof("hira")]; -#ifdef USE_UNICODE_AGE_PROPERTIES - char uniname2ctype_pool_str558[sizeof("age=6.3")]; - char uniname2ctype_pool_str559[sizeof("age=3.0")]; -#endif /* USE_UNICODE_AGE_PROPERTIES */ - char uniname2ctype_pool_str560[sizeof("ingeneralpunctuation")]; -#ifdef USE_UNICODE_AGE_PROPERTIES - char uniname2ctype_pool_str561[sizeof("age=9.0")]; - char uniname2ctype_pool_str562[sizeof("age=8.0")]; - char uniname2ctype_pool_str563[sizeof("age=5.1")]; - char uniname2ctype_pool_str564[sizeof("age=5.2")]; -#endif /* USE_UNICODE_AGE_PROPERTIES */ - char uniname2ctype_pool_str565[sizeof("inmiao")]; -#ifdef USE_UNICODE_AGE_PROPERTIES - char uniname2ctype_pool_str566[sizeof("age=4.1")]; - char uniname2ctype_pool_str567[sizeof("age=7.0")]; -#endif /* USE_UNICODE_AGE_PROPERTIES */ - char uniname2ctype_pool_str568[sizeof("innewtailue")]; - char uniname2ctype_pool_str569[sizeof("common")]; -#ifdef USE_UNICODE_AGE_PROPERTIES - char uniname2ctype_pool_str570[sizeof("age=5.0")]; - char uniname2ctype_pool_str573[sizeof("age=4.0")]; -#endif /* USE_UNICODE_AGE_PROPERTIES */ - char uniname2ctype_pool_str576[sizeof("so")]; - char uniname2ctype_pool_str577[sizeof("inhiragana")]; - char uniname2ctype_pool_str579[sizeof("insundanese")]; - char uniname2ctype_pool_str584[sizeof("ids")]; - char uniname2ctype_pool_str585[sizeof("cher")]; - char uniname2ctype_pool_str589[sizeof("marchen")]; - char uniname2ctype_pool_str591[sizeof("indominotiles")]; - char uniname2ctype_pool_str595[sizeof("joinc")]; - char uniname2ctype_pool_str604[sizeof("tang")]; - char uniname2ctype_pool_str607[sizeof("hano")]; - char uniname2ctype_pool_str613[sizeof("ahom")]; - char uniname2ctype_pool_str621[sizeof("inogham")]; - char uniname2ctype_pool_str622[sizeof("inscriptionalpahlavi")]; - char uniname2ctype_pool_str625[sizeof("mahj")]; - char uniname2ctype_pool_str627[sizeof("inolchiki")]; - char uniname2ctype_pool_str633[sizeof("invai")]; - char uniname2ctype_pool_str634[sizeof("tagbanwa")]; - char uniname2ctype_pool_str636[sizeof("tirh")]; - char uniname2ctype_pool_str637[sizeof("idst")]; - char uniname2ctype_pool_str639[sizeof("vai")]; - char uniname2ctype_pool_str640[sizeof("vaii")]; - char uniname2ctype_pool_str641[sizeof("cwt")]; - char uniname2ctype_pool_str642[sizeof("inhatran")]; - char uniname2ctype_pool_str645[sizeof("hatr")]; - char uniname2ctype_pool_str646[sizeof("mahajani")]; - char uniname2ctype_pool_str649[sizeof("idcontinue")]; - char uniname2ctype_pool_str652[sizeof("cf")]; - char uniname2ctype_pool_str655[sizeof("intirhuta")]; - char uniname2ctype_pool_str659[sizeof("inenclosedcjklettersandmonths")]; - char uniname2ctype_pool_str663[sizeof("intaixuanjingsymbols")]; - char uniname2ctype_pool_str664[sizeof("inspacingmodifierletters")]; - char uniname2ctype_pool_str668[sizeof("indeseret")]; - char uniname2ctype_pool_str677[sizeof("intags")]; - char uniname2ctype_pool_str678[sizeof("wara")]; - char uniname2ctype_pool_str683[sizeof("inshavian")]; - char uniname2ctype_pool_str684[sizeof("inlydian")]; - char uniname2ctype_pool_str686[sizeof("inwarangciti")]; - char uniname2ctype_pool_str688[sizeof("inmathematicalalphanumericsymbols")]; - char uniname2ctype_pool_str690[sizeof("adlm")]; - char uniname2ctype_pool_str692[sizeof("intangut")]; - char uniname2ctype_pool_str697[sizeof("vs")]; - char uniname2ctype_pool_str698[sizeof("adlam")]; - char uniname2ctype_pool_str705[sizeof("lo")]; - char uniname2ctype_pool_str706[sizeof("ext")]; - char uniname2ctype_pool_str712[sizeof("insylotinagri")]; - char uniname2ctype_pool_str713[sizeof("inlao")]; - char uniname2ctype_pool_str716[sizeof("inlowsurrogates")]; - char uniname2ctype_pool_str717[sizeof("anatolianhieroglyphs")]; - char uniname2ctype_pool_str719[sizeof("lao")]; - char uniname2ctype_pool_str720[sizeof("laoo")]; - char uniname2ctype_pool_str721[sizeof("mongolian")]; - char uniname2ctype_pool_str726[sizeof("gran")]; - char uniname2ctype_pool_str733[sizeof("lineseparator")]; - char uniname2ctype_pool_str734[sizeof("ingurmukhi")]; - char uniname2ctype_pool_str745[sizeof("letter")]; - char uniname2ctype_pool_str748[sizeof("intifinagh")]; - char uniname2ctype_pool_str755[sizeof("tifinagh")]; - char uniname2ctype_pool_str758[sizeof("mro")]; - char uniname2ctype_pool_str759[sizeof("mroo")]; - char uniname2ctype_pool_str761[sizeof("diacritic")]; - char uniname2ctype_pool_str764[sizeof("avst")]; - char uniname2ctype_pool_str766[sizeof("avestan")]; - char uniname2ctype_pool_str773[sizeof("mong")]; - char uniname2ctype_pool_str774[sizeof("inanatolianhieroglyphs")]; - char uniname2ctype_pool_str775[sizeof("odi")]; - char uniname2ctype_pool_str776[sizeof("nchar")]; - char uniname2ctype_pool_str778[sizeof("caseignorable")]; - char uniname2ctype_pool_str779[sizeof("modi")]; - char uniname2ctype_pool_str780[sizeof("insorasompeng")]; - char uniname2ctype_pool_str785[sizeof("ogam")]; - char uniname2ctype_pool_str792[sizeof("oidc")]; - char uniname2ctype_pool_str793[sizeof("cwcf")]; - char uniname2ctype_pool_str795[sizeof("cwl")]; - char uniname2ctype_pool_str797[sizeof("ideo")]; - char uniname2ctype_pool_str803[sizeof("oalpha")]; - char uniname2ctype_pool_str804[sizeof("inolditalic")]; - char uniname2ctype_pool_str805[sizeof("ingujarati")]; - char uniname2ctype_pool_str811[sizeof("inosage")]; - char uniname2ctype_pool_str812[sizeof("oids")]; - char uniname2ctype_pool_str813[sizeof("shaw")]; - char uniname2ctype_pool_str814[sizeof("decimalnumber")]; - char uniname2ctype_pool_str816[sizeof("tavt")]; - char uniname2ctype_pool_str817[sizeof("intaiviet")]; - char uniname2ctype_pool_str828[sizeof("hmng")]; - char uniname2ctype_pool_str829[sizeof("inmongoliansupplement")]; - char uniname2ctype_pool_str830[sizeof("osge")]; - char uniname2ctype_pool_str834[sizeof("hang")]; - char uniname2ctype_pool_str835[sizeof("insuttonsignwriting")]; - char uniname2ctype_pool_str836[sizeof("inmahjongtiles")]; - char uniname2ctype_pool_str847[sizeof("dsrt")]; - char uniname2ctype_pool_str858[sizeof("ahex")]; - char uniname2ctype_pool_str860[sizeof("whitespace")]; - char uniname2ctype_pool_str865[sizeof("insundanesesupplement")]; - char uniname2ctype_pool_str866[sizeof("inmodifiertoneletters")]; - char uniname2ctype_pool_str867[sizeof("idstart")]; - char uniname2ctype_pool_str872[sizeof("ingreekandcoptic")]; - char uniname2ctype_pool_str876[sizeof("dash")]; - char uniname2ctype_pool_str878[sizeof("hanunoo")]; - char uniname2ctype_pool_str890[sizeof("siddham")]; - char uniname2ctype_pool_str892[sizeof("inoldturkic")]; - char uniname2ctype_pool_str895[sizeof("ingeometricshapes")]; - char uniname2ctype_pool_str900[sizeof("deseret")]; - char uniname2ctype_pool_str903[sizeof("gothic")]; - char uniname2ctype_pool_str905[sizeof("sharada")]; - char uniname2ctype_pool_str906[sizeof("tfng")]; - char uniname2ctype_pool_str914[sizeof("insmallformvariants")]; - char uniname2ctype_pool_str919[sizeof("inshorthandformatcontrols")]; - char uniname2ctype_pool_str922[sizeof("grext")]; - char uniname2ctype_pool_str924[sizeof("java")]; - char uniname2ctype_pool_str933[sizeof("radical")]; - char uniname2ctype_pool_str936[sizeof("omath")]; - char uniname2ctype_pool_str937[sizeof("canadianaboriginal")]; - char uniname2ctype_pool_str941[sizeof("ingothic")]; - char uniname2ctype_pool_str943[sizeof("otheridcontinue")]; - char uniname2ctype_pool_str945[sizeof("control")]; - char uniname2ctype_pool_str947[sizeof("injavanese")]; - char uniname2ctype_pool_str956[sizeof("noncharactercodepoint")]; - char uniname2ctype_pool_str958[sizeof("invariationselectors")]; - char uniname2ctype_pool_str964[sizeof("casedletter")]; - char uniname2ctype_pool_str965[sizeof("letternumber")]; - char uniname2ctype_pool_str966[sizeof("javanese")]; - char uniname2ctype_pool_str968[sizeof("otheralphabetic")]; - char uniname2ctype_pool_str973[sizeof("sgnw")]; - char uniname2ctype_pool_str991[sizeof("ingeorgian")]; - char uniname2ctype_pool_str992[sizeof("rjng")]; - char uniname2ctype_pool_str997[sizeof("nd")]; - char uniname2ctype_pool_str999[sizeof("format")]; - char uniname2ctype_pool_str1004[sizeof("geor")]; - char uniname2ctype_pool_str1009[sizeof("inornamentaldingbats")]; - char uniname2ctype_pool_str1013[sizeof("inrejang")]; - char uniname2ctype_pool_str1015[sizeof("inoldnortharabian")]; - char uniname2ctype_pool_str1017[sizeof("joincontrol")]; - char uniname2ctype_pool_str1019[sizeof("xidc")]; - char uniname2ctype_pool_str1020[sizeof("invariationselectorssupplement")]; - char uniname2ctype_pool_str1036[sizeof("sd")]; - char uniname2ctype_pool_str1039[sizeof("xids")]; - char uniname2ctype_pool_str1042[sizeof("sidd")]; - char uniname2ctype_pool_str1047[sizeof("indingbats")]; - char uniname2ctype_pool_str1051[sizeof("inherited")]; - char uniname2ctype_pool_str1052[sizeof("inmeroitichieroglyphs")]; - char uniname2ctype_pool_str1053[sizeof("inenclosedideographicsupplement")]; - char uniname2ctype_pool_str1054[sizeof("inoldsoutharabian")]; - char uniname2ctype_pool_str1055[sizeof("insiddham")]; - char uniname2ctype_pool_str1058[sizeof("inglagolitic")]; - char uniname2ctype_pool_str1062[sizeof("ingreekextended")]; - char uniname2ctype_pool_str1067[sizeof("olditalic")]; - char uniname2ctype_pool_str1068[sizeof("hiragana")]; - char uniname2ctype_pool_str1069[sizeof("idsbinaryoperator")]; - char uniname2ctype_pool_str1072[sizeof("cased")]; - char uniname2ctype_pool_str1073[sizeof("inhangulsyllables")]; - char uniname2ctype_pool_str1077[sizeof("shrd")]; - char uniname2ctype_pool_str1093[sizeof("assigned")]; - char uniname2ctype_pool_str1095[sizeof("otheridstart")]; - char uniname2ctype_pool_str1102[sizeof("ogham")]; - char uniname2ctype_pool_str1107[sizeof("intagalog")]; - char uniname2ctype_pool_str1110[sizeof("inoldhungarian")]; - char uniname2ctype_pool_str1114[sizeof("other")]; - char uniname2ctype_pool_str1115[sizeof("othersymbol")]; - char uniname2ctype_pool_str1116[sizeof("otherlowercase")]; - char uniname2ctype_pool_str1121[sizeof("othernumber")]; - char uniname2ctype_pool_str1130[sizeof("graphemebase")]; - char uniname2ctype_pool_str1131[sizeof("innabataean")]; - char uniname2ctype_pool_str1137[sizeof("inbhaiksuki")]; - char uniname2ctype_pool_str1138[sizeof("lowercase")]; - char uniname2ctype_pool_str1139[sizeof("bamum")]; - char uniname2ctype_pool_str1142[sizeof("glagolitic")]; - char uniname2ctype_pool_str1148[sizeof("inhanguljamoextendeda")]; - char uniname2ctype_pool_str1150[sizeof("indevanagari")]; - char uniname2ctype_pool_str1153[sizeof("inelbasan")]; - char uniname2ctype_pool_str1154[sizeof("deva")]; - char uniname2ctype_pool_str1155[sizeof("grantha")]; - char uniname2ctype_pool_str1159[sizeof("inarabic")]; - char uniname2ctype_pool_str1162[sizeof("olower")]; - char uniname2ctype_pool_str1163[sizeof("inbasiclatin")]; - char uniname2ctype_pool_str1165[sizeof("devanagari")]; - char uniname2ctype_pool_str1170[sizeof("warangciti")]; - char uniname2ctype_pool_str1173[sizeof("innumberforms")]; - char uniname2ctype_pool_str1174[sizeof("glag")]; - char uniname2ctype_pool_str1179[sizeof("goth")]; - char uniname2ctype_pool_str1180[sizeof("invedicextensions")]; - char uniname2ctype_pool_str1183[sizeof("oldpersian")]; - char uniname2ctype_pool_str1184[sizeof("digit")]; - char uniname2ctype_pool_str1189[sizeof("xdigit")]; - char uniname2ctype_pool_str1197[sizeof("bass")]; - char uniname2ctype_pool_str1200[sizeof("xidstart")]; - char uniname2ctype_pool_str1201[sizeof("oldpermic")]; - char uniname2ctype_pool_str1210[sizeof("nbat")]; - char uniname2ctype_pool_str1223[sizeof("inarabicpresentationformsa")]; - char uniname2ctype_pool_str1224[sizeof("logicalorderexception")]; - char uniname2ctype_pool_str1227[sizeof("inbyzantinemusicalsymbols")]; - char uniname2ctype_pool_str1229[sizeof("nabataean")]; - char uniname2ctype_pool_str1232[sizeof("intibetan")]; - char uniname2ctype_pool_str1233[sizeof("othermath")]; - char uniname2ctype_pool_str1239[sizeof("inmiscellaneousmathematicalsymbolsb")]; - char uniname2ctype_pool_str1248[sizeof("inverticalforms")]; - char uniname2ctype_pool_str1253[sizeof("tglg")]; - char uniname2ctype_pool_str1261[sizeof("inmyanmarextendedb")]; - char uniname2ctype_pool_str1265[sizeof("ideographic")]; - char uniname2ctype_pool_str1266[sizeof("incyrillicextendeda")]; - char uniname2ctype_pool_str1272[sizeof("inbraillepatterns")]; - char uniname2ctype_pool_str1273[sizeof("incyrillicextendedc")]; - char uniname2ctype_pool_str1278[sizeof("linb")]; - char uniname2ctype_pool_str1281[sizeof("inlatinextendedd")]; - char uniname2ctype_pool_str1284[sizeof("limb")]; - char uniname2ctype_pool_str1289[sizeof("otherletter")]; - char uniname2ctype_pool_str1290[sizeof("bali")]; - char uniname2ctype_pool_str1292[sizeof("tibt")]; - char uniname2ctype_pool_str1293[sizeof("georgian")]; - char uniname2ctype_pool_str1299[sizeof("xidcontinue")]; - char uniname2ctype_pool_str1303[sizeof("lower")]; - char uniname2ctype_pool_str1309[sizeof("tibetan")]; - char uniname2ctype_pool_str1311[sizeof("elba")]; - char uniname2ctype_pool_str1313[sizeof("inbalinese")]; - char uniname2ctype_pool_str1316[sizeof("yi")]; - char uniname2ctype_pool_str1319[sizeof("bengali")]; - char uniname2ctype_pool_str1322[sizeof("yiii")]; - char uniname2ctype_pool_str1326[sizeof("inhighprivateusesurrogates")]; - char uniname2ctype_pool_str1331[sizeof("extender")]; - char uniname2ctype_pool_str1332[sizeof("narb")]; - char uniname2ctype_pool_str1333[sizeof("sorasompeng")]; - char uniname2ctype_pool_str1335[sizeof("brai")]; - char uniname2ctype_pool_str1338[sizeof("hex")]; - char uniname2ctype_pool_str1341[sizeof("balinese")]; - char uniname2ctype_pool_str1344[sizeof("arab")]; - char uniname2ctype_pool_str1346[sizeof("pi")]; - char uniname2ctype_pool_str1348[sizeof("brahmi")]; - char uniname2ctype_pool_str1355[sizeof("elbasan")]; - char uniname2ctype_pool_str1360[sizeof("ingeometricshapesextended")]; - char uniname2ctype_pool_str1368[sizeof("inhanguljamo")]; - char uniname2ctype_pool_str1370[sizeof("graph")]; - char uniname2ctype_pool_str1371[sizeof("sarb")]; - char uniname2ctype_pool_str1373[sizeof("pcm")]; - char uniname2ctype_pool_str1378[sizeof("pc")]; - char uniname2ctype_pool_str1379[sizeof("inethiopicextendeda")]; - char uniname2ctype_pool_str1380[sizeof("incaucasianalbanian")]; - char uniname2ctype_pool_str1388[sizeof("pe")]; - char uniname2ctype_pool_str1390[sizeof("sundanese")]; - char uniname2ctype_pool_str1396[sizeof("inphaistosdisc")]; - char uniname2ctype_pool_str1398[sizeof("inancientgreekmusicalnotation")]; - char uniname2ctype_pool_str1410[sizeof("modifierletter")]; - char uniname2ctype_pool_str1416[sizeof("word")]; - char uniname2ctype_pool_str1418[sizeof("ps")]; - char uniname2ctype_pool_str1419[sizeof("changeswhencasemapped")]; - char uniname2ctype_pool_str1425[sizeof("lowercaseletter")]; - char uniname2ctype_pool_str1429[sizeof("inancientgreeknumbers")]; - char uniname2ctype_pool_str1430[sizeof("saurashtra")]; - char uniname2ctype_pool_str1439[sizeof("hexdigit")]; - char uniname2ctype_pool_str1444[sizeof("space")]; - char uniname2ctype_pool_str1452[sizeof("inbrahmi")]; - char uniname2ctype_pool_str1472[sizeof("inblockelements")]; - char uniname2ctype_pool_str1481[sizeof("incoptic")]; - char uniname2ctype_pool_str1493[sizeof("mlym")]; - char uniname2ctype_pool_str1502[sizeof("multani")]; - char uniname2ctype_pool_str1503[sizeof("lyci")]; - char uniname2ctype_pool_str1508[sizeof("linearb")]; - char uniname2ctype_pool_str1509[sizeof("changeswhentitlecased")]; - char uniname2ctype_pool_str1513[sizeof("rejang")]; - char uniname2ctype_pool_str1516[sizeof("lycian")]; - char uniname2ctype_pool_str1517[sizeof("inbassavah")]; - char uniname2ctype_pool_str1518[sizeof("lisu")]; - char uniname2ctype_pool_str1521[sizeof("incombininghalfmarks")]; - char uniname2ctype_pool_str1524[sizeof("malayalam")]; - char uniname2ctype_pool_str1526[sizeof("patws")]; - char uniname2ctype_pool_str1529[sizeof("palm")]; - char uniname2ctype_pool_str1536[sizeof("tagalog")]; - char uniname2ctype_pool_str1537[sizeof("psalterpahlavi")]; - char uniname2ctype_pool_str1538[sizeof("mymr")]; - char uniname2ctype_pool_str1540[sizeof("incopticepactnumbers")]; - char uniname2ctype_pool_str1542[sizeof("inletterlikesymbols")]; - char uniname2ctype_pool_str1549[sizeof("alpha")]; - char uniname2ctype_pool_str1551[sizeof("inlepcha")]; - char uniname2ctype_pool_str1553[sizeof("inpalmyrene")]; - char uniname2ctype_pool_str1554[sizeof("lepc")]; - char uniname2ctype_pool_str1561[sizeof("runic")]; - char uniname2ctype_pool_str1563[sizeof("inugaritic")]; - char uniname2ctype_pool_str1567[sizeof("myanmar")]; - char uniname2ctype_pool_str1572[sizeof("saur")]; - char uniname2ctype_pool_str1573[sizeof("mult")]; - char uniname2ctype_pool_str1579[sizeof("talu")]; - char uniname2ctype_pool_str1584[sizeof("syrc")]; - char uniname2ctype_pool_str1586[sizeof("perm")]; - char uniname2ctype_pool_str1591[sizeof("telu")]; - char uniname2ctype_pool_str1597[sizeof("tangut")]; - char uniname2ctype_pool_str1598[sizeof("insaurashtra")]; - char uniname2ctype_pool_str1602[sizeof("inoriya")]; - char uniname2ctype_pool_str1604[sizeof("graphemeextend")]; - char uniname2ctype_pool_str1607[sizeof("imperialaramaic")]; - char uniname2ctype_pool_str1613[sizeof("inbengali")]; - char uniname2ctype_pool_str1614[sizeof("variationselector")]; - char uniname2ctype_pool_str1619[sizeof("syriac")]; - char uniname2ctype_pool_str1622[sizeof("inarabicmathematicalalphabeticsymbols")]; - char uniname2ctype_pool_str1624[sizeof("beng")]; - char uniname2ctype_pool_str1625[sizeof("inimperialaramaic")]; - char uniname2ctype_pool_str1626[sizeof("sylotinagri")]; - char uniname2ctype_pool_str1630[sizeof("inyiradicals")]; - char uniname2ctype_pool_str1637[sizeof("mathsymbol")]; - char uniname2ctype_pool_str1638[sizeof("inbuginese")]; - char uniname2ctype_pool_str1641[sizeof("osmanya")]; - char uniname2ctype_pool_str1645[sizeof("idsb")]; - char uniname2ctype_pool_str1646[sizeof("bidic")]; - char uniname2ctype_pool_str1647[sizeof("inphoenician")]; - char uniname2ctype_pool_str1650[sizeof("prti")]; - char uniname2ctype_pool_str1653[sizeof("brah")]; - char uniname2ctype_pool_str1657[sizeof("cuneiform")]; - char uniname2ctype_pool_str1659[sizeof("ogrext")]; - char uniname2ctype_pool_str1662[sizeof("incountingrodnumerals")]; - char uniname2ctype_pool_str1665[sizeof("hebr")]; - char uniname2ctype_pool_str1666[sizeof("cprt")]; - char uniname2ctype_pool_str1673[sizeof("coptic")]; - char uniname2ctype_pool_str1676[sizeof("indevanagariextended")]; - char uniname2ctype_pool_str1677[sizeof("inyijinghexagramsymbols")]; - char uniname2ctype_pool_str1681[sizeof("incyrillicsupplement")]; - char uniname2ctype_pool_str1683[sizeof("inarabicextendeda")]; - char uniname2ctype_pool_str1688[sizeof("inalchemicalsymbols")]; - char uniname2ctype_pool_str1691[sizeof("signwriting")]; - char uniname2ctype_pool_str1692[sizeof("inaegeannumbers")]; - char uniname2ctype_pool_str1694[sizeof("privateuse")]; - char uniname2ctype_pool_str1696[sizeof("ininscriptionalparthian")]; - char uniname2ctype_pool_str1697[sizeof("braille")]; - char uniname2ctype_pool_str1698[sizeof("ininscriptionalpahlavi")]; - char uniname2ctype_pool_str1702[sizeof("incherokeesupplement")]; - char uniname2ctype_pool_str1703[sizeof("tagb")]; - char uniname2ctype_pool_str1706[sizeof("inlinearbsyllabary")]; - char uniname2ctype_pool_str1713[sizeof("cyrl")]; - char uniname2ctype_pool_str1714[sizeof("intagbanwa")]; - char uniname2ctype_pool_str1715[sizeof("inunifiedcanadianaboriginalsyllabics")]; - char uniname2ctype_pool_str1719[sizeof("copt")]; - char uniname2ctype_pool_str1722[sizeof("inkannada")]; - char uniname2ctype_pool_str1723[sizeof("tirhuta")]; - char uniname2ctype_pool_str1724[sizeof("kana")]; - char uniname2ctype_pool_str1727[sizeof("changeswhencasefolded")]; - char uniname2ctype_pool_str1733[sizeof("inhighsurrogates")]; - char uniname2ctype_pool_str1734[sizeof("runr")]; - char uniname2ctype_pool_str1737[sizeof("cakm")]; - char uniname2ctype_pool_str1741[sizeof("inlatin1supplement")]; - char uniname2ctype_pool_str1743[sizeof("print")]; - char uniname2ctype_pool_str1752[sizeof("inchakma")]; - char uniname2ctype_pool_str1767[sizeof("patternwhitespace")]; - char uniname2ctype_pool_str1768[sizeof("number")]; - char uniname2ctype_pool_str1771[sizeof("mendekikakui")]; - char uniname2ctype_pool_str1774[sizeof("spaceseparator")]; - char uniname2ctype_pool_str1775[sizeof("changeswhenlowercased")]; - char uniname2ctype_pool_str1786[sizeof("sylo")]; - char uniname2ctype_pool_str1790[sizeof("meeteimayek")]; - char uniname2ctype_pool_str1794[sizeof("inethiopicsupplement")]; - char uniname2ctype_pool_str1804[sizeof("orya")]; - char uniname2ctype_pool_str1805[sizeof("inalphabeticpresentationforms")]; - char uniname2ctype_pool_str1806[sizeof("inkaithi")]; - char uniname2ctype_pool_str1809[sizeof("incjkcompatibilityforms")]; - char uniname2ctype_pool_str1811[sizeof("takri")]; - char uniname2ctype_pool_str1814[sizeof("incjkcompatibilityideographs")]; - char uniname2ctype_pool_str1826[sizeof("inkatakana")]; - char uniname2ctype_pool_str1835[sizeof("phli")]; - char uniname2ctype_pool_str1843[sizeof("sund")]; - char uniname2ctype_pool_str1845[sizeof("inmathematicaloperators")]; - char uniname2ctype_pool_str1848[sizeof("closepunctuation")]; - char uniname2ctype_pool_str1850[sizeof("incjkstrokes")]; - char uniname2ctype_pool_str1851[sizeof("separator")]; - char uniname2ctype_pool_str1856[sizeof("finalpunctuation")]; - char uniname2ctype_pool_str1860[sizeof("inmeeteimayek")]; - char uniname2ctype_pool_str1862[sizeof("inethiopicextended")]; - char uniname2ctype_pool_str1866[sizeof("unassigned")]; - char uniname2ctype_pool_str1869[sizeof("inpsalterpahlavi")]; - char uniname2ctype_pool_str1870[sizeof("inphagspa")]; - char uniname2ctype_pool_str1872[sizeof("po")]; - char uniname2ctype_pool_str1873[sizeof("otherdefaultignorablecodepoint")]; - char uniname2ctype_pool_str1876[sizeof("incjkcompatibilityideographssupplement")]; - char uniname2ctype_pool_str1883[sizeof("kali")]; - char uniname2ctype_pool_str1884[sizeof("lepcha")]; - char uniname2ctype_pool_str1886[sizeof("wspace")]; - char uniname2ctype_pool_str1893[sizeof("softdotted")]; - char uniname2ctype_pool_str1904[sizeof("grbase")]; - char uniname2ctype_pool_str1905[sizeof("inhanunoo")]; - char uniname2ctype_pool_str1906[sizeof("cyrillic")]; - char uniname2ctype_pool_str1910[sizeof("incombiningdiacriticalmarks")]; - char uniname2ctype_pool_str1920[sizeof("incombiningdiacriticalmarksforsymbols")]; - char uniname2ctype_pool_str1921[sizeof("meroitichieroglyphs")]; - char uniname2ctype_pool_str1931[sizeof("mark")]; - char uniname2ctype_pool_str1932[sizeof("ugaritic")]; - char uniname2ctype_pool_str1933[sizeof("aghb")]; - char uniname2ctype_pool_str1935[sizeof("inbuhid")]; - char uniname2ctype_pool_str1937[sizeof("inkanasupplement")]; - char uniname2ctype_pool_str1941[sizeof("phoenician")]; - char uniname2ctype_pool_str1945[sizeof("inkharoshthi")]; - char uniname2ctype_pool_str1951[sizeof("inkhmer")]; - char uniname2ctype_pool_str1964[sizeof("symbol")]; - char uniname2ctype_pool_str1968[sizeof("pf")]; - char uniname2ctype_pool_str1972[sizeof("incombiningdiacriticalmarkssupplement")]; - char uniname2ctype_pool_str1980[sizeof("lydi")]; - char uniname2ctype_pool_str1981[sizeof("hangul")]; - char uniname2ctype_pool_str1985[sizeof("incurrencysymbols")]; - char uniname2ctype_pool_str1987[sizeof("intangutcomponents")]; - char uniname2ctype_pool_str1993[sizeof("lydian")]; - char uniname2ctype_pool_str2004[sizeof("othergraphemeextend")]; - char uniname2ctype_pool_str2015[sizeof("intakri")]; - char uniname2ctype_pool_str2016[sizeof("takr")]; - char uniname2ctype_pool_str2018[sizeof("induployan")]; - char uniname2ctype_pool_str2026[sizeof("ugar")]; - char uniname2ctype_pool_str2027[sizeof("inprivateusearea")]; - char uniname2ctype_pool_str2046[sizeof("kaithi")]; - char uniname2ctype_pool_str2051[sizeof("inkhmersymbols")]; - char uniname2ctype_pool_str2068[sizeof("bidicontrol")]; - char uniname2ctype_pool_str2070[sizeof("ethiopic")]; - char uniname2ctype_pool_str2083[sizeof("inhebrew")]; - char uniname2ctype_pool_str2111[sizeof("bassavah")]; - char uniname2ctype_pool_str2115[sizeof("kthi")]; - char uniname2ctype_pool_str2119[sizeof("inoldpersian")]; - char uniname2ctype_pool_str2122[sizeof("hung")]; - char uniname2ctype_pool_str2126[sizeof("xpeo")]; - char uniname2ctype_pool_str2136[sizeof("inoldpermic")]; - char uniname2ctype_pool_str2153[sizeof("olck")]; - char uniname2ctype_pool_str2157[sizeof("phnx")]; - char uniname2ctype_pool_str2164[sizeof("olchiki")]; - char uniname2ctype_pool_str2169[sizeof("phag")]; - char uniname2ctype_pool_str2180[sizeof("inunifiedcanadianaboriginalsyllabicsextended")]; - char uniname2ctype_pool_str2184[sizeof("inpahawhhmong")]; - char uniname2ctype_pool_str2193[sizeof("inhalfwidthandfullwidthforms")]; - char uniname2ctype_pool_str2200[sizeof("patternsyntax")]; - char uniname2ctype_pool_str2203[sizeof("inphoneticextensions")]; - char uniname2ctype_pool_str2208[sizeof("knda")]; - char uniname2ctype_pool_str2219[sizeof("combiningmark")]; - char uniname2ctype_pool_str2220[sizeof("plrd")]; - char uniname2ctype_pool_str2221[sizeof("inmendekikakui")]; - char uniname2ctype_pool_str2230[sizeof("hluw")]; - char uniname2ctype_pool_str2231[sizeof("nko")]; - char uniname2ctype_pool_str2232[sizeof("nkoo")]; - char uniname2ctype_pool_str2235[sizeof("inhanguljamoextendedb")]; - char uniname2ctype_pool_str2237[sizeof("kannada")]; - char uniname2ctype_pool_str2240[sizeof("khmr")]; - char uniname2ctype_pool_str2246[sizeof("khar")]; - char uniname2ctype_pool_str2248[sizeof("otheruppercase")]; - char uniname2ctype_pool_str2249[sizeof("oldhungarian")]; - char uniname2ctype_pool_str2254[sizeof("graphemeclusterbreak=ebasegaz")]; - char uniname2ctype_pool_str2256[sizeof("inkhojki")]; - char uniname2ctype_pool_str2259[sizeof("graphemeclusterbreak=ebase")]; - char uniname2ctype_pool_str2262[sizeof("otherpunctuation")]; - char uniname2ctype_pool_str2265[sizeof("inphoneticextensionssupplement")]; - char uniname2ctype_pool_str2273[sizeof("enclosingmark")]; - char uniname2ctype_pool_str2285[sizeof("inkatakanaphoneticextensions")]; - char uniname2ctype_pool_str2292[sizeof("gujr")]; - char uniname2ctype_pool_str2293[sizeof("inkangxiradicals")]; - char uniname2ctype_pool_str2310[sizeof("inarabicpresentationformsb")]; - char uniname2ctype_pool_str2313[sizeof("gujarati")]; - char uniname2ctype_pool_str2322[sizeof("graphemeclusterbreak=t")]; - char uniname2ctype_pool_str2324[sizeof("graphemeclusterbreak=lvt")]; - char uniname2ctype_pool_str2332[sizeof("pd")]; - char uniname2ctype_pool_str2333[sizeof("xsux")]; - char uniname2ctype_pool_str2341[sizeof("uideo")]; - char uniname2ctype_pool_str2346[sizeof("hebrew")]; - char uniname2ctype_pool_str2349[sizeof("kharoshthi")]; - char uniname2ctype_pool_str2350[sizeof("surrogate")]; - char uniname2ctype_pool_str2353[sizeof("incyrillicextendedb")]; - char uniname2ctype_pool_str2360[sizeof("cherokee")]; - char uniname2ctype_pool_str2373[sizeof("modifiersymbol")]; - char uniname2ctype_pool_str2375[sizeof("incombiningdiacriticalmarksextended")]; - char uniname2ctype_pool_str2399[sizeof("graphemeclusterbreak=l")]; - char uniname2ctype_pool_str2405[sizeof("graphemeclusterbreak=control")]; - char uniname2ctype_pool_str2410[sizeof("deprecated")]; - char uniname2ctype_pool_str2418[sizeof("ingeorgiansupplement")]; - char uniname2ctype_pool_str2419[sizeof("idstrinaryoperator")]; - char uniname2ctype_pool_str2425[sizeof("bamu")]; - char uniname2ctype_pool_str2427[sizeof("inbamum")]; - char uniname2ctype_pool_str2430[sizeof("grek")]; - char uniname2ctype_pool_str2445[sizeof("graphemeclusterbreak=cr")]; - char uniname2ctype_pool_str2451[sizeof("inmeroiticcursive")]; - char uniname2ctype_pool_str2452[sizeof("graphemeclusterbreak=emodifier")]; - char uniname2ctype_pool_str2455[sizeof("khmer")]; - char uniname2ctype_pool_str2460[sizeof("graphemeclusterbreak=regionalindicator")]; - char uniname2ctype_pool_str2476[sizeof("inglagoliticsupplement")]; - char uniname2ctype_pool_str2477[sizeof("oldturkic")]; - char uniname2ctype_pool_str2487[sizeof("inlatinextendedb")]; - char uniname2ctype_pool_str2489[sizeof("unifiedideograph")]; - char uniname2ctype_pool_str2500[sizeof("orkh")]; - char uniname2ctype_pool_str2511[sizeof("graphemeclusterbreak=zwj")]; - char uniname2ctype_pool_str2518[sizeof("caucasianalbanian")]; - char uniname2ctype_pool_str2520[sizeof("graphemeclusterbreak=glueafterzwj")]; - char uniname2ctype_pool_str2530[sizeof("oldnortharabian")]; - char uniname2ctype_pool_str2546[sizeof("graphemeclusterbreak=lf")]; - char uniname2ctype_pool_str2565[sizeof("khoj")]; - char uniname2ctype_pool_str2589[sizeof("inlimbu")]; - char uniname2ctype_pool_str2602[sizeof("inarabicsupplement")]; - char uniname2ctype_pool_str2629[sizeof("any")]; - char uniname2ctype_pool_str2661[sizeof("alphabetic")]; - char uniname2ctype_pool_str2663[sizeof("defaultignorablecodepoint")]; - char uniname2ctype_pool_str2673[sizeof("p")]; - char uniname2ctype_pool_str2674[sizeof("pauc")]; - char uniname2ctype_pool_str2691[sizeof("zp")]; - char uniname2ctype_pool_str2692[sizeof("inbamumsupplement")]; - char uniname2ctype_pool_str2698[sizeof("xposixpunct")]; - char uniname2ctype_pool_str2732[sizeof("graphemeclusterbreak=extend")]; - char uniname2ctype_pool_str2733[sizeof("graphemeclusterbreak=prepend")]; - char uniname2ctype_pool_str2735[sizeof("inyisyllables")]; - char uniname2ctype_pool_str2755[sizeof("patsyn")]; - char uniname2ctype_pool_str2773[sizeof("lu")]; - char uniname2ctype_pool_str2787[sizeof("limbu")]; - char uniname2ctype_pool_str2808[sizeof("inkanbun")]; - char uniname2ctype_pool_str2810[sizeof("insuperscriptsandsubscripts")]; - char uniname2ctype_pool_str2822[sizeof("inlisu")]; - char uniname2ctype_pool_str2827[sizeof("punct")]; - char uniname2ctype_pool_str2844[sizeof("currencysymbol")]; - char uniname2ctype_pool_str2845[sizeof("graphemeclusterbreak=v")]; - char uniname2ctype_pool_str2846[sizeof("graphemeclusterbreak=lv")]; - char uniname2ctype_pool_str2876[sizeof("intelugu")]; - char uniname2ctype_pool_str2897[sizeof("insupplementalmathematicaloperators")]; - char uniname2ctype_pool_str2902[sizeof("batk")]; - char uniname2ctype_pool_str2903[sizeof("bugi")]; - char uniname2ctype_pool_str2907[sizeof("changeswhenuppercased")]; - char uniname2ctype_pool_str2910[sizeof("inbatak")]; - char uniname2ctype_pool_str2928[sizeof("inplayingcards")]; - char uniname2ctype_pool_str2932[sizeof("pahawhhmong")]; - char uniname2ctype_pool_str2954[sizeof("buginese")]; - char uniname2ctype_pool_str2974[sizeof("bopo")]; - char uniname2ctype_pool_str2977[sizeof("innoblock")]; - char uniname2ctype_pool_str2985[sizeof("inbopomofo")]; - char uniname2ctype_pool_str2997[sizeof("hyphen")]; - char uniname2ctype_pool_str3030[sizeof("inkayahli")]; - char uniname2ctype_pool_str3032[sizeof("cypriot")]; - char uniname2ctype_pool_str3057[sizeof("insupplementalarrowsa")]; - char uniname2ctype_pool_str3059[sizeof("cwu")]; - char uniname2ctype_pool_str3064[sizeof("insupplementalarrowsc")]; - char uniname2ctype_pool_str3067[sizeof("phagspa")]; - char uniname2ctype_pool_str3070[sizeof("incjkcompatibility")]; - char uniname2ctype_pool_str3072[sizeof("palmyrene")]; - char uniname2ctype_pool_str3081[sizeof("incypriotsyllabary")]; - char uniname2ctype_pool_str3096[sizeof("inboxdrawing")]; - char uniname2ctype_pool_str3098[sizeof("spacingmark")]; - char uniname2ctype_pool_str3159[sizeof("bhks")]; - char uniname2ctype_pool_str3161[sizeof("incjksymbolsandpunctuation")]; - char uniname2ctype_pool_str3165[sizeof("egyp")]; - char uniname2ctype_pool_str3167[sizeof("phlp")]; - char uniname2ctype_pool_str3181[sizeof("bhaiksuki")]; - char uniname2ctype_pool_str3197[sizeof("dep")]; - char uniname2ctype_pool_str3224[sizeof("buhd")]; - char uniname2ctype_pool_str3231[sizeof("inegyptianhieroglyphs")]; - char uniname2ctype_pool_str3252[sizeof("bopomofo")]; - char uniname2ctype_pool_str3295[sizeof("dashpunctuation")]; - char uniname2ctype_pool_str3307[sizeof("dupl")]; - char uniname2ctype_pool_str3314[sizeof("guru")]; - char uniname2ctype_pool_str3338[sizeof("nonspacingmark")]; - char uniname2ctype_pool_str3346[sizeof("prependedconcatenationmark")]; - char uniname2ctype_pool_str3363[sizeof("oupper")]; - char uniname2ctype_pool_str3388[sizeof("telugu")]; - char uniname2ctype_pool_str3413[sizeof("qmark")]; - char uniname2ctype_pool_str3428[sizeof("sk")]; - char uniname2ctype_pool_str3500[sizeof("egyptianhieroglyphs")]; - char uniname2ctype_pool_str3511[sizeof("inkhudawadi")]; - char uniname2ctype_pool_str3514[sizeof("kayahli")]; - char uniname2ctype_pool_str3525[sizeof("katakana")]; - char uniname2ctype_pool_str3550[sizeof("inhangulcompatibilityjamo")]; - char uniname2ctype_pool_str3552[sizeof("incjkradicalssupplement")]; - char uniname2ctype_pool_str3595[sizeof("quotationmark")]; - char uniname2ctype_pool_str3617[sizeof("oldsoutharabian")]; - char uniname2ctype_pool_str3704[sizeof("unknown")]; - char uniname2ctype_pool_str3722[sizeof("buhid")]; - char uniname2ctype_pool_str3776[sizeof("khudawadi")]; - char uniname2ctype_pool_str3828[sizeof("incjkunifiedideographsextensiona")]; - char uniname2ctype_pool_str3835[sizeof("incjkunifiedideographsextensionc")]; - char uniname2ctype_pool_str3840[sizeof("incjkunifiedideographsextensione")]; - char uniname2ctype_pool_str3845[sizeof("incjkunifiedideographs")]; - char uniname2ctype_pool_str3931[sizeof("paragraphseparator")]; - char uniname2ctype_pool_str3933[sizeof("graphemeclusterbreak=spacingmark")]; - char uniname2ctype_pool_str3939[sizeof("zyyy")]; - char uniname2ctype_pool_str3965[sizeof("paucinhau")]; - char uniname2ctype_pool_str3974[sizeof("inpaucinhau")]; - char uniname2ctype_pool_str3989[sizeof("khojki")]; - char uniname2ctype_pool_str4043[sizeof("punctuation")]; - char uniname2ctype_pool_str4124[sizeof("greek")]; - char uniname2ctype_pool_str4136[sizeof("insupplementalpunctuation")]; - char uniname2ctype_pool_str4144[sizeof("insupplementalarrowsb")]; - char uniname2ctype_pool_str4188[sizeof("insupplementaryprivateuseareaa")]; - char uniname2ctype_pool_str4190[sizeof("insupplementalsymbolsandpictographs")]; - char uniname2ctype_pool_str4214[sizeof("inbopomofoextended")]; - char uniname2ctype_pool_str4241[sizeof("uppercase")]; - char uniname2ctype_pool_str4270[sizeof("grlink")]; - char uniname2ctype_pool_str4312[sizeof("incjkunifiedideographsextensiond")]; - char uniname2ctype_pool_str4373[sizeof("openpunctuation")]; - char uniname2ctype_pool_str4406[sizeof("upper")]; - char uniname2ctype_pool_str4466[sizeof("graphemelink")]; - char uniname2ctype_pool_str4528[sizeof("uppercaseletter")]; - char uniname2ctype_pool_str4596[sizeof("batak")]; - char uniname2ctype_pool_str4673[sizeof("blank")]; - char uniname2ctype_pool_str4716[sizeof("duployan")]; - char uniname2ctype_pool_str4915[sizeof("incjkunifiedideographsextensionb")]; - char uniname2ctype_pool_str5015[sizeof("gurmukhi")]; - char uniname2ctype_pool_str5275[sizeof("insupplementaryprivateuseareab")]; -#endif /* USE_UNICODE_PROPERTIES */ - }; -static const struct uniname2ctype_pool_t uniname2ctype_pool_contents = - { -#ifndef USE_UNICODE_PROPERTIES - "word", - "print", - "punct", - "alpha", - "alnum", - "xdigit", - "upper", -#else /* USE_UNICODE_PROPERTIES */ - "n", - "mn", - "m", - "cn", - "mani", - "ci", - "inmanichaean", - "z", - "qaai", - "c", - "mc", - "qaac", - "sm", - "incham", - "me", - "inarmenian", - "cc", - "mandaic", - "incuneiform", - "zzzz", - "insamaritan", - "cans", - "s", - "sc", -#endif /* USE_UNICODE_PROPERTIES */ - "ascii", -#ifdef USE_UNICODE_PROPERTIES - "inavestan", - "zs", - "cs", - "inipaextensions", - "incuneiformnumbersandpunctuation", - "incommonindicnumberforms", - "inthai", - "mtei", - "inspecials", - "initialpunctuation", - "inthaana", - "inancientsymbols", - "inmiscellaneousmathematicalsymbolsa", - "inmusicalsymbols", - "taile", - "inmyanmarextendeda", - "sterm", - "lm", - "lina", - "inmiscellaneoussymbols", - "lana", - "intransportandmapsymbols", - "alnum", - "inlycian", - "inmiscellaneoussymbolsandarrows", - "intaitham", - "lc", - "inmalayalam", - "inmiscellaneoussymbolsandpictographs", - "inadlam", - "incontrolpictures", - "inlineara", - "taiviet", - "armn", - "armi", - "sinhala", - "armenian", - "inmyanmar", - "inrunic", - "incarian", - "cari", - "inmarchen", - "marc", - "carian", - "merc", - "incyrillic", - "samr", - "latn", - "latin", - "ital", - "intamil", - "taml", - "inmultani", - "samaritan", - "arabic", - "insyriac", - "insharada", - "miao", - "inlinearbideograms", - "incherokee", - "intaile", - "tale", - "inahom", - "inmeeteimayekextensions", - "inruminumeralsymbols", - "inlatinextendeda", - "inosmanya", - "inlatinextendedc", - "osma", - "inlatinextendede", - "l", - "han", - "nl", - "term", - "hani", - "inideographicsymbolsandpunctuation", - "zinh", - "lt", - "zl", - "inmahajani", - "cham", - "connectorpunctuation", - "sinh", - "manichaean", - "osage", - "inmiscellaneoustechnical", - "inethiopic", - "insinhala", - "chakma", - "shavian", - "inideographicdescriptioncharacters", - "lineara", - "meroiticcursive", - "thai", - "math", - "inemoticons", - "thaa", - "ethi", - "hatran", - "inenclosedalphanumerics", - "sentenceterminal", - "tamil", -#endif /* USE_UNICODE_PROPERTIES */ - "cntrl", -#ifndef USE_UNICODE_PROPERTIES - "space", - "xposixpunct", -#else /* USE_UNICODE_PROPERTIES */ - "taitham", - "thaana", - "terminalpunctuation", - "insinhalaarchaicnumbers", - "innewa", - "newa", - "inlatinextendedadditional", - "cwcm", - "loe", - "inopticalcharacterrecognition", - "inearlydynasticcuneiform", - "di", - "asciihexdigit", - "ll", - "newtailue", - "inscriptionalparthian", - "inenclosedalphanumericsupplement", - "oriya", - "mero", - "inmongolian", - "mand", - "inmodi", - "dia", - "mend", - "ingrantha", - "no", - "sora", - "inmandaic", -#ifdef USE_UNICODE_AGE_PROPERTIES - "age=1.1", - "age=2.1", -#endif /* USE_UNICODE_AGE_PROPERTIES */ - "idc", - "innko", - "sind", - "inarrows", -#ifdef USE_UNICODE_AGE_PROPERTIES - "age=6.1", - "age=6.2", - "age=2.0", -#endif /* USE_UNICODE_AGE_PROPERTIES */ - "inmro", -#ifdef USE_UNICODE_AGE_PROPERTIES - "age=3.1", - "age=3.2", -#endif /* USE_UNICODE_AGE_PROPERTIES */ - "titlecaseletter", -#ifdef USE_UNICODE_AGE_PROPERTIES - "age=6.0", -#endif /* USE_UNICODE_AGE_PROPERTIES */ - "co", - "hira", -#ifdef USE_UNICODE_AGE_PROPERTIES - "age=6.3", - "age=3.0", -#endif /* USE_UNICODE_AGE_PROPERTIES */ - "ingeneralpunctuation", -#ifdef USE_UNICODE_AGE_PROPERTIES - "age=9.0", - "age=8.0", - "age=5.1", - "age=5.2", -#endif /* USE_UNICODE_AGE_PROPERTIES */ - "inmiao", -#ifdef USE_UNICODE_AGE_PROPERTIES - "age=4.1", - "age=7.0", -#endif /* USE_UNICODE_AGE_PROPERTIES */ - "innewtailue", - "common", -#ifdef USE_UNICODE_AGE_PROPERTIES - "age=5.0", - "age=4.0", -#endif /* USE_UNICODE_AGE_PROPERTIES */ - "so", - "inhiragana", - "insundanese", - "ids", - "cher", - "marchen", - "indominotiles", - "joinc", - "tang", - "hano", - "ahom", - "inogham", - "inscriptionalpahlavi", - "mahj", - "inolchiki", - "invai", - "tagbanwa", - "tirh", - "idst", - "vai", - "vaii", - "cwt", - "inhatran", - "hatr", - "mahajani", - "idcontinue", - "cf", - "intirhuta", - "inenclosedcjklettersandmonths", - "intaixuanjingsymbols", - "inspacingmodifierletters", - "indeseret", - "intags", - "wara", - "inshavian", - "inlydian", - "inwarangciti", - "inmathematicalalphanumericsymbols", - "adlm", - "intangut", - "vs", - "adlam", - "lo", - "ext", - "insylotinagri", - "inlao", - "inlowsurrogates", - "anatolianhieroglyphs", - "lao", - "laoo", - "mongolian", - "gran", - "lineseparator", - "ingurmukhi", - "letter", - "intifinagh", - "tifinagh", - "mro", - "mroo", - "diacritic", - "avst", - "avestan", - "mong", - "inanatolianhieroglyphs", - "odi", - "nchar", - "caseignorable", - "modi", - "insorasompeng", - "ogam", - "oidc", - "cwcf", - "cwl", - "ideo", - "oalpha", - "inolditalic", - "ingujarati", - "inosage", - "oids", - "shaw", - "decimalnumber", - "tavt", - "intaiviet", - "hmng", - "inmongoliansupplement", - "osge", - "hang", - "insuttonsignwriting", - "inmahjongtiles", - "dsrt", - "ahex", - "whitespace", - "insundanesesupplement", - "inmodifiertoneletters", - "idstart", - "ingreekandcoptic", - "dash", - "hanunoo", - "siddham", - "inoldturkic", - "ingeometricshapes", - "deseret", - "gothic", - "sharada", - "tfng", - "insmallformvariants", - "inshorthandformatcontrols", - "grext", - "java", - "radical", - "omath", - "canadianaboriginal", - "ingothic", - "otheridcontinue", - "control", - "injavanese", - "noncharactercodepoint", - "invariationselectors", - "casedletter", - "letternumber", - "javanese", - "otheralphabetic", - "sgnw", - "ingeorgian", - "rjng", - "nd", - "format", - "geor", - "inornamentaldingbats", - "inrejang", - "inoldnortharabian", - "joincontrol", - "xidc", - "invariationselectorssupplement", - "sd", - "xids", - "sidd", - "indingbats", - "inherited", - "inmeroitichieroglyphs", - "inenclosedideographicsupplement", - "inoldsoutharabian", - "insiddham", - "inglagolitic", - "ingreekextended", - "olditalic", - "hiragana", - "idsbinaryoperator", - "cased", - "inhangulsyllables", - "shrd", - "assigned", - "otheridstart", - "ogham", - "intagalog", - "inoldhungarian", - "other", - "othersymbol", - "otherlowercase", - "othernumber", - "graphemebase", - "innabataean", - "inbhaiksuki", - "lowercase", - "bamum", - "glagolitic", - "inhanguljamoextendeda", - "indevanagari", - "inelbasan", - "deva", - "grantha", - "inarabic", - "olower", - "inbasiclatin", - "devanagari", - "warangciti", - "innumberforms", - "glag", - "goth", - "invedicextensions", - "oldpersian", - "digit", - "xdigit", - "bass", - "xidstart", - "oldpermic", - "nbat", - "inarabicpresentationformsa", - "logicalorderexception", - "inbyzantinemusicalsymbols", - "nabataean", - "intibetan", - "othermath", - "inmiscellaneousmathematicalsymbolsb", - "inverticalforms", - "tglg", - "inmyanmarextendedb", - "ideographic", - "incyrillicextendeda", - "inbraillepatterns", - "incyrillicextendedc", - "linb", - "inlatinextendedd", - "limb", - "otherletter", - "bali", - "tibt", - "georgian", - "xidcontinue", -#endif /* USE_UNICODE_PROPERTIES */ - "lower", -#ifdef USE_UNICODE_PROPERTIES - "tibetan", - "elba", - "inbalinese", - "yi", - "bengali", - "yiii", - "inhighprivateusesurrogates", - "extender", - "narb", - "sorasompeng", - "brai", - "hex", - "balinese", - "arab", - "pi", - "brahmi", - "elbasan", - "ingeometricshapesextended", - "inhanguljamo", -#endif /* USE_UNICODE_PROPERTIES */ - "graph", -#ifndef USE_UNICODE_PROPERTIES - "digit", - "blank" -#else /* USE_UNICODE_PROPERTIES */ - "sarb", - "pcm", - "pc", - "inethiopicextendeda", - "incaucasianalbanian", - "pe", - "sundanese", - "inphaistosdisc", - "inancientgreekmusicalnotation", - "modifierletter", - "word", - "ps", - "changeswhencasemapped", - "lowercaseletter", - "inancientgreeknumbers", - "saurashtra", - "hexdigit", - "space", - "inbrahmi", - "inblockelements", - "incoptic", - "mlym", - "multani", - "lyci", - "linearb", - "changeswhentitlecased", - "rejang", - "lycian", - "inbassavah", - "lisu", - "incombininghalfmarks", - "malayalam", - "patws", - "palm", - "tagalog", - "psalterpahlavi", - "mymr", - "incopticepactnumbers", - "inletterlikesymbols", - "alpha", - "inlepcha", - "inpalmyrene", - "lepc", - "runic", - "inugaritic", - "myanmar", - "saur", - "mult", - "talu", - "syrc", - "perm", - "telu", - "tangut", - "insaurashtra", - "inoriya", - "graphemeextend", - "imperialaramaic", - "inbengali", - "variationselector", - "syriac", - "inarabicmathematicalalphabeticsymbols", - "beng", - "inimperialaramaic", - "sylotinagri", - "inyiradicals", - "mathsymbol", - "inbuginese", - "osmanya", - "idsb", - "bidic", - "inphoenician", - "prti", - "brah", - "cuneiform", - "ogrext", - "incountingrodnumerals", - "hebr", - "cprt", - "coptic", - "indevanagariextended", - "inyijinghexagramsymbols", - "incyrillicsupplement", - "inarabicextendeda", - "inalchemicalsymbols", - "signwriting", - "inaegeannumbers", - "privateuse", - "ininscriptionalparthian", - "braille", - "ininscriptionalpahlavi", - "incherokeesupplement", - "tagb", - "inlinearbsyllabary", - "cyrl", - "intagbanwa", - "inunifiedcanadianaboriginalsyllabics", - "copt", - "inkannada", - "tirhuta", - "kana", - "changeswhencasefolded", - "inhighsurrogates", - "runr", - "cakm", - "inlatin1supplement", - "print", - "inchakma", - "patternwhitespace", - "number", - "mendekikakui", - "spaceseparator", - "changeswhenlowercased", - "sylo", - "meeteimayek", - "inethiopicsupplement", - "orya", - "inalphabeticpresentationforms", - "inkaithi", - "incjkcompatibilityforms", - "takri", - "incjkcompatibilityideographs", - "inkatakana", - "phli", - "sund", - "inmathematicaloperators", - "closepunctuation", - "incjkstrokes", - "separator", - "finalpunctuation", - "inmeeteimayek", - "inethiopicextended", - "unassigned", - "inpsalterpahlavi", - "inphagspa", - "po", - "otherdefaultignorablecodepoint", - "incjkcompatibilityideographssupplement", - "kali", - "lepcha", - "wspace", - "softdotted", - "grbase", - "inhanunoo", - "cyrillic", - "incombiningdiacriticalmarks", - "incombiningdiacriticalmarksforsymbols", - "meroitichieroglyphs", - "mark", - "ugaritic", - "aghb", - "inbuhid", - "inkanasupplement", - "phoenician", - "inkharoshthi", - "inkhmer", - "symbol", - "pf", - "incombiningdiacriticalmarkssupplement", - "lydi", - "hangul", - "incurrencysymbols", - "intangutcomponents", - "lydian", - "othergraphemeextend", - "intakri", - "takr", - "induployan", - "ugar", - "inprivateusearea", - "kaithi", - "inkhmersymbols", - "bidicontrol", - "ethiopic", - "inhebrew", - "bassavah", - "kthi", - "inoldpersian", - "hung", - "xpeo", - "inoldpermic", - "olck", - "phnx", - "olchiki", - "phag", - "inunifiedcanadianaboriginalsyllabicsextended", - "inpahawhhmong", - "inhalfwidthandfullwidthforms", - "patternsyntax", - "inphoneticextensions", - "knda", - "combiningmark", - "plrd", - "inmendekikakui", - "hluw", - "nko", - "nkoo", - "inhanguljamoextendedb", - "kannada", - "khmr", - "khar", - "otheruppercase", - "oldhungarian", - "graphemeclusterbreak=ebasegaz", - "inkhojki", - "graphemeclusterbreak=ebase", - "otherpunctuation", - "inphoneticextensionssupplement", - "enclosingmark", - "inkatakanaphoneticextensions", - "gujr", - "inkangxiradicals", - "inarabicpresentationformsb", - "gujarati", - "graphemeclusterbreak=t", - "graphemeclusterbreak=lvt", - "pd", - "xsux", - "uideo", - "hebrew", - "kharoshthi", - "surrogate", - "incyrillicextendedb", - "cherokee", - "modifiersymbol", - "incombiningdiacriticalmarksextended", - "graphemeclusterbreak=l", - "graphemeclusterbreak=control", - "deprecated", - "ingeorgiansupplement", - "idstrinaryoperator", - "bamu", - "inbamum", - "grek", - "graphemeclusterbreak=cr", - "inmeroiticcursive", - "graphemeclusterbreak=emodifier", - "khmer", - "graphemeclusterbreak=regionalindicator", - "inglagoliticsupplement", - "oldturkic", - "inlatinextendedb", - "unifiedideograph", - "orkh", - "graphemeclusterbreak=zwj", - "caucasianalbanian", - "graphemeclusterbreak=glueafterzwj", - "oldnortharabian", - "graphemeclusterbreak=lf", - "khoj", - "inlimbu", - "inarabicsupplement", - "any", - "alphabetic", - "defaultignorablecodepoint", - "p", - "pauc", - "zp", - "inbamumsupplement", - "xposixpunct", - "graphemeclusterbreak=extend", - "graphemeclusterbreak=prepend", - "inyisyllables", - "patsyn", - "lu", - "limbu", - "inkanbun", - "insuperscriptsandsubscripts", - "inlisu", - "punct", - "currencysymbol", - "graphemeclusterbreak=v", - "graphemeclusterbreak=lv", - "intelugu", - "insupplementalmathematicaloperators", - "batk", - "bugi", - "changeswhenuppercased", - "inbatak", - "inplayingcards", - "pahawhhmong", - "buginese", - "bopo", - "innoblock", - "inbopomofo", - "hyphen", - "inkayahli", - "cypriot", - "insupplementalarrowsa", - "cwu", - "insupplementalarrowsc", - "phagspa", - "incjkcompatibility", - "palmyrene", - "incypriotsyllabary", - "inboxdrawing", - "spacingmark", - "bhks", - "incjksymbolsandpunctuation", - "egyp", - "phlp", - "bhaiksuki", - "dep", - "buhd", - "inegyptianhieroglyphs", - "bopomofo", - "dashpunctuation", - "dupl", - "guru", - "nonspacingmark", - "prependedconcatenationmark", - "oupper", - "telugu", - "qmark", - "sk", - "egyptianhieroglyphs", - "inkhudawadi", - "kayahli", - "katakana", - "inhangulcompatibilityjamo", - "incjkradicalssupplement", - "quotationmark", - "oldsoutharabian", - "unknown", - "buhid", - "khudawadi", - "incjkunifiedideographsextensiona", - "incjkunifiedideographsextensionc", - "incjkunifiedideographsextensione", - "incjkunifiedideographs", - "paragraphseparator", - "graphemeclusterbreak=spacingmark", - "zyyy", - "paucinhau", - "inpaucinhau", - "khojki", - "punctuation", - "greek", - "insupplementalpunctuation", - "insupplementalarrowsb", - "insupplementaryprivateuseareaa", - "insupplementalsymbolsandpictographs", - "inbopomofoextended", - "uppercase", - "grlink", - "incjkunifiedideographsextensiond", - "openpunctuation", - "upper", - "graphemelink", - "uppercaseletter", - "batak", - "blank", - "duployan", - "incjkunifiedideographsextensionb", - "gurmukhi", - "insupplementaryprivateuseareab" -#endif /* USE_UNICODE_PROPERTIES */ - }; -#define uniname2ctype_pool ((const char *) &uniname2ctype_pool_contents) -#ifdef __GNUC__ -__inline -#if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__ -__attribute__ ((__gnu_inline__)) -#endif -#endif -const struct uniname2ctype_struct * -uniname2ctype_p (str, len) - register const char *str; - register unsigned int len; -{ - static const struct uniname2ctype_struct wordlist[] = - { -#ifdef USE_UNICODE_PROPERTIES - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str3), 35}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str11), 34}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str15), 31}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str24), 21}, - {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str29), 186}, - {uniname2ctype_offset(str30), 61}, - {uniname2ctype_offset(str31), 475}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str35), 52}, - {uniname2ctype_offset(str36), 115}, - {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str41), 18}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str49), 32}, - {-1}, {-1}, - {uniname2ctype_offset(str52), 129}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str56), 50}, - {-1}, - {uniname2ctype_offset(str58), 417}, - {uniname2ctype_offset(str59), 33}, - {-1}, - {uniname2ctype_offset(str61), 291}, - {uniname2ctype_offset(str62), 19}, - {-1}, {-1}, - {uniname2ctype_offset(str65), 169}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str69), 505}, - {-1}, {-1}, - {uniname2ctype_offset(str72), 245}, - {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str77), 298}, - {uniname2ctype_offset(str78), 102}, - {-1}, {-1}, - {uniname2ctype_offset(str81), 47}, - {uniname2ctype_offset(str82), 48}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str86), 14}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str93), 476}, - {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str99), 55}, - {-1}, {-1}, - {uniname2ctype_offset(str102), 23}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str106), 285}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str110), 506}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str114), 408}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str124), 311}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str132), 160}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str140), 441}, - {uniname2ctype_offset(str141), 44}, - {-1}, {-1}, - {uniname2ctype_offset(str144), 296}, - {uniname2ctype_offset(str145), 446}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str152), 367}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str159), 522}, - {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str164), 121}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str174), 418}, - {-1}, - {uniname2ctype_offset(str176), 240}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str185), 27}, - {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str191), 184}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str199), 365}, - {uniname2ctype_offset(str200), 152}, - {uniname2ctype_offset(str201), 540}, - {uniname2ctype_offset(str202), 13}, - {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str207), 448}, - {uniname2ctype_offset(str208), 373}, - {uniname2ctype_offset(str209), 335}, - {-1}, - {uniname2ctype_offset(str211), 25}, - {uniname2ctype_offset(str212), 309}, - {uniname2ctype_offset(str213), 537}, - {uniname2ctype_offset(str214), 530}, - {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str220), 359}, - {-1}, - {uniname2ctype_offset(str222), 462}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str237), 153}, - {-1}, - {uniname2ctype_offset(str239), 79}, - {-1}, {-1}, - {uniname2ctype_offset(str242), 161}, - {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str247), 93}, - {uniname2ctype_offset(str248), 79}, - {uniname2ctype_offset(str249), 314}, - {-1}, - {uniname2ctype_offset(str251), 322}, - {uniname2ctype_offset(str252), 449}, - {-1}, {-1}, - {uniname2ctype_offset(str255), 149}, - {uniname2ctype_offset(str256), 504}, - {-1}, - {uniname2ctype_offset(str258), 208}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str268), 149}, - {-1}, - {uniname2ctype_offset(str270), 171}, - {-1}, {-1}, - {uniname2ctype_offset(str273), 289}, - {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str278), 156}, - {uniname2ctype_offset(str279), 76}, - {-1}, - {uniname2ctype_offset(str281), 76}, - {uniname2ctype_offset(str282), 112}, - {-1}, - {uniname2ctype_offset(str284), 306}, - {uniname2ctype_offset(str285), 89}, - {uniname2ctype_offset(str286), 491}, - {-1}, - {uniname2ctype_offset(str288), 156}, - {-1}, - {uniname2ctype_offset(str290), 81}, - {uniname2ctype_offset(str291), 294}, - {-1}, {-1}, - {uniname2ctype_offset(str294), 488}, - {uniname2ctype_offset(str295), 173}, - {uniname2ctype_offset(str296), 443}, - {-1}, {-1}, - {uniname2ctype_offset(str299), 319}, - {-1}, {-1}, - {uniname2ctype_offset(str302), 331}, - {uniname2ctype_offset(str303), 121}, - {-1}, - {uniname2ctype_offset(str305), 500}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str309), 420}, - {uniname2ctype_offset(str310), 482}, - {-1}, {-1}, - {uniname2ctype_offset(str313), 283}, - {uniname2ctype_offset(str314), 458}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str327), 375}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str331), 125}, - {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str337), 422}, - {-1}, - {uniname2ctype_offset(str339), 24}, - {uniname2ctype_offset(str340), 110}, - {uniname2ctype_offset(str341), 37}, - {uniname2ctype_offset(str342), 218}, - {-1}, - {uniname2ctype_offset(str344), 110}, - {-1}, {-1}, - {uniname2ctype_offset(str347), 515}, - {uniname2ctype_offset(str348), 115}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str355), 29}, - {-1}, - {uniname2ctype_offset(str357), 53}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str361), 487}, - {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str366), 151}, - {-1}, - {uniname2ctype_offset(str368), 40}, - {-1}, {-1}, - {uniname2ctype_offset(str371), 93}, - {-1}, {-1}, - {uniname2ctype_offset(str374), 186}, - {uniname2ctype_offset(str375), 210}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str382), 358}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str386), 317}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str390), 310}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str394), 170}, - {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str400), 124}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str419), 384}, - {-1}, - {uniname2ctype_offset(str421), 184}, - {uniname2ctype_offset(str422), 171}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str435), 94}, - {-1}, {-1}, - {uniname2ctype_offset(str438), 56}, - {-1}, - {uniname2ctype_offset(str440), 538}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str444), 83}, - {-1}, {-1}, - {uniname2ctype_offset(str447), 100}, - {uniname2ctype_offset(str448), 202}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str452), 361}, - {uniname2ctype_offset(str453), 240}, - {-1}, - {uniname2ctype_offset(str455), 89}, - {uniname2ctype_offset(str456), 3}, - {-1}, - {uniname2ctype_offset(str458), 152}, - {-1}, - {uniname2ctype_offset(str460), 83}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str468), 218}, - {-1}, {-1}, - {uniname2ctype_offset(str471), 489}, - {uniname2ctype_offset(str472), 494}, - {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str477), 209}, - {uniname2ctype_offset(str478), 348}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str485), 66}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str489), 237}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str503), 360}, - {uniname2ctype_offset(str504), 507}, - {-1}, {-1}, - {uniname2ctype_offset(str507), 71}, - {uniname2ctype_offset(str508), 221}, - {uniname2ctype_offset(str509), 26}, - {-1}, - {uniname2ctype_offset(str511), 130}, - {uniname2ctype_offset(str512), 163}, - {uniname2ctype_offset(str513), 535}, - {-1}, {-1}, - {uniname2ctype_offset(str516), 88}, - {uniname2ctype_offset(str517), 172}, - {-1}, - {uniname2ctype_offset(str519), 328}, - {-1}, {-1}, - {uniname2ctype_offset(str522), 169}, - {uniname2ctype_offset(str523), 497}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str530), 224}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str534), 187}, - {uniname2ctype_offset(str535), 493}, - {-1}, - {uniname2ctype_offset(str537), 38}, - {uniname2ctype_offset(str538), 175}, - {uniname2ctype_offset(str539), 299}, -#ifndef USE_UNICODE_AGE_PROPERTIES - {-1}, {-1}, {-1}, {-1}, -#else /* USE_UNICODE_AGE_PROPERTIES */ - {-1}, {-1}, - {uniname2ctype_offset(str542), 246}, - {uniname2ctype_offset(str543), 248}, -#endif /* USE_UNICODE_AGE_PROPERTIES */ - {uniname2ctype_offset(str544), 68}, - {uniname2ctype_offset(str545), 297}, - {uniname2ctype_offset(str546), 197}, - {uniname2ctype_offset(str547), 356}, -#ifndef USE_UNICODE_AGE_PROPERTIES - {-1}, {-1}, {-1}, -#else /* USE_UNICODE_AGE_PROPERTIES */ - {uniname2ctype_offset(str548), 258}, - {uniname2ctype_offset(str549), 259}, - {uniname2ctype_offset(str550), 247}, -#endif /* USE_UNICODE_AGE_PROPERTIES */ - {uniname2ctype_offset(str551), 511}, -#ifndef USE_UNICODE_AGE_PROPERTIES - {-1}, {-1}, -#else /* USE_UNICODE_AGE_PROPERTIES */ - {uniname2ctype_offset(str552), 250}, - {uniname2ctype_offset(str553), 251}, -#endif /* USE_UNICODE_AGE_PROPERTIES */ - {uniname2ctype_offset(str554), 29}, -#ifndef USE_UNICODE_AGE_PROPERTIES - {-1}, -#else /* USE_UNICODE_AGE_PROPERTIES */ - {uniname2ctype_offset(str555), 257}, -#endif /* USE_UNICODE_AGE_PROPERTIES */ - {uniname2ctype_offset(str556), 22}, - {uniname2ctype_offset(str557), 107}, -#ifndef USE_UNICODE_AGE_PROPERTIES - {-1}, {-1}, -#else /* USE_UNICODE_AGE_PROPERTIES */ - {uniname2ctype_offset(str558), 260}, - {uniname2ctype_offset(str559), 249}, -#endif /* USE_UNICODE_AGE_PROPERTIES */ - {uniname2ctype_offset(str560), 350}, -#ifndef USE_UNICODE_AGE_PROPERTIES - {-1}, {-1}, {-1}, {-1}, -#else /* USE_UNICODE_AGE_PROPERTIES */ - {uniname2ctype_offset(str561), 263}, - {uniname2ctype_offset(str562), 262}, - {uniname2ctype_offset(str563), 255}, - {uniname2ctype_offset(str564), 256}, -#endif /* USE_UNICODE_AGE_PROPERTIES */ - {uniname2ctype_offset(str565), 514}, -#ifndef USE_UNICODE_AGE_PROPERTIES - {-1}, {-1}, -#else /* USE_UNICODE_AGE_PROPERTIES */ - {uniname2ctype_offset(str566), 253}, - {uniname2ctype_offset(str567), 261}, -#endif /* USE_UNICODE_AGE_PROPERTIES */ - {uniname2ctype_offset(str568), 332}, - {uniname2ctype_offset(str569), 75}, -#ifndef USE_UNICODE_AGE_PROPERTIES - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#else /* USE_UNICODE_AGE_PROPERTIES */ - {uniname2ctype_offset(str570), 254}, - {-1}, {-1}, - {uniname2ctype_offset(str573), 252}, - {-1}, {-1}, -#endif /* USE_UNICODE_AGE_PROPERTIES */ - {uniname2ctype_offset(str576), 51}, - {uniname2ctype_offset(str577), 386}, - {-1}, - {uniname2ctype_offset(str579), 338}, - {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str584), 67}, - {uniname2ctype_offset(str585), 101}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str589), 208}, - {-1}, - {uniname2ctype_offset(str591), 533}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str595), 214}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str604), 211}, - {-1}, {-1}, - {uniname2ctype_offset(str607), 117}, - {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str613), 200}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str621), 321}, - {uniname2ctype_offset(str622), 164}, - {-1}, {-1}, - {uniname2ctype_offset(str625), 185}, - {-1}, - {uniname2ctype_offset(str627), 341}, - {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str633), 402}, - {uniname2ctype_offset(str634), 119}, - {-1}, - {uniname2ctype_offset(str636), 198}, - {uniname2ctype_offset(str637), 231}, - {-1}, - {uniname2ctype_offset(str639), 144}, - {uniname2ctype_offset(str640), 144}, - {uniname2ctype_offset(str641), 64}, - {uniname2ctype_offset(str642), 467}, - {-1}, {-1}, - {uniname2ctype_offset(str645), 202}, - {uniname2ctype_offset(str646), 185}, - {-1}, {-1}, - {uniname2ctype_offset(str649), 68}, - {-1}, {-1}, - {uniname2ctype_offset(str652), 20}, - {-1}, {-1}, - {uniname2ctype_offset(str655), 495}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str659), 394}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str663), 524}, - {uniname2ctype_offset(str664), 286}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str668), 456}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str677), 550}, - {uniname2ctype_offset(str678), 199}, - {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str683), 457}, - {uniname2ctype_offset(str684), 469}, - {-1}, - {uniname2ctype_offset(str686), 501}, - {-1}, - {uniname2ctype_offset(str688), 526}, - {-1}, - {uniname2ctype_offset(str690), 206}, - {-1}, - {uniname2ctype_offset(str692), 516}, - {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str697), 241}, - {uniname2ctype_offset(str698), 206}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str705), 28}, - {uniname2ctype_offset(str706), 225}, - {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str712), 407}, - {uniname2ctype_offset(str713), 312}, - {-1}, {-1}, - {uniname2ctype_offset(str716), 429}, - {uniname2ctype_offset(str717), 201}, - {-1}, - {uniname2ctype_offset(str719), 95}, - {uniname2ctype_offset(str720), 95}, - {uniname2ctype_offset(str721), 106}, - {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str726), 181}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str733), 53}, - {uniname2ctype_offset(str734), 303}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, - {uniname2ctype_offset(str745), 24}, - {-1}, {-1}, - {uniname2ctype_offset(str748), 378}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str755), 132}, - {-1}, {-1}, - {uniname2ctype_offset(str758), 189}, - {uniname2ctype_offset(str759), 189}, - {-1}, - {uniname2ctype_offset(str761), 224}, - {-1}, {-1}, - {uniname2ctype_offset(str764), 154}, - {-1}, - {uniname2ctype_offset(str766), 154}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str773), 106}, - {uniname2ctype_offset(str774), 509}, - {uniname2ctype_offset(str775), 234}, - {uniname2ctype_offset(str776), 228}, - {-1}, - {uniname2ctype_offset(str778), 61}, - {uniname2ctype_offset(str779), 188}, - {uniname2ctype_offset(str780), 485}, - {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str785), 103}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str792), 239}, - {uniname2ctype_offset(str793), 65}, - {-1}, - {uniname2ctype_offset(str795), 62}, - {-1}, - {uniname2ctype_offset(str797), 223}, - {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str803), 222}, - {uniname2ctype_offset(str804), 451}, - {uniname2ctype_offset(str805), 304}, - {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str811), 459}, - {uniname2ctype_offset(str812), 238}, - {uniname2ctype_offset(str813), 124}, - {uniname2ctype_offset(str814), 36}, - {-1}, - {uniname2ctype_offset(str816), 153}, - {uniname2ctype_offset(str817), 419}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, - {uniname2ctype_offset(str828), 182}, - {uniname2ctype_offset(str829), 498}, - {uniname2ctype_offset(str830), 210}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str834), 99}, - {uniname2ctype_offset(str835), 527}, - {uniname2ctype_offset(str836), 532}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, - {uniname2ctype_offset(str847), 114}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, - {uniname2ctype_offset(str858), 221}, - {-1}, - {uniname2ctype_offset(str860), 212}, - {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str865), 343}, - {uniname2ctype_offset(str866), 405}, - {uniname2ctype_offset(str867), 67}, - {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str872), 288}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str876), 215}, - {-1}, - {uniname2ctype_offset(str878), 117}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, - {uniname2ctype_offset(str890), 196}, - {-1}, - {uniname2ctype_offset(str892), 480}, - {-1}, {-1}, - {uniname2ctype_offset(str895), 364}, - {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str900), 114}, - {-1}, {-1}, - {uniname2ctype_offset(str903), 113}, - {-1}, - {uniname2ctype_offset(str905), 174}, - {uniname2ctype_offset(str906), 132}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str914), 438}, - {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str919), 520}, - {-1}, {-1}, - {uniname2ctype_offset(str922), 72}, - {-1}, - {uniname2ctype_offset(str924), 159}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str933), 232}, - {-1}, {-1}, - {uniname2ctype_offset(str936), 219}, - {uniname2ctype_offset(str937), 102}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str941), 452}, - {-1}, - {uniname2ctype_offset(str943), 239}, - {-1}, - {uniname2ctype_offset(str945), 19}, - {-1}, - {uniname2ctype_offset(str947), 415}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str956), 228}, - {-1}, - {uniname2ctype_offset(str958), 434}, - {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str964), 25}, - {uniname2ctype_offset(str965), 37}, - {uniname2ctype_offset(str966), 159}, - {-1}, - {uniname2ctype_offset(str968), 222}, - {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str973), 205}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str991), 315}, - {uniname2ctype_offset(str992), 147}, - {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str997), 36}, - {-1}, - {uniname2ctype_offset(str999), 20}, - {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1004), 98}, - {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1009), 539}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1013), 413}, - {-1}, - {uniname2ctype_offset(str1015), 474}, - {-1}, - {uniname2ctype_offset(str1017), 214}, - {-1}, - {uniname2ctype_offset(str1019), 70}, - {uniname2ctype_offset(str1020), 551}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1036), 236}, - {-1}, {-1}, - {uniname2ctype_offset(str1039), 69}, - {-1}, {-1}, - {uniname2ctype_offset(str1042), 196}, - {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1047), 366}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1051), 115}, - {uniname2ctype_offset(str1052), 470}, - {uniname2ctype_offset(str1053), 536}, - {uniname2ctype_offset(str1054), 473}, - {uniname2ctype_offset(str1055), 496}, - {-1}, {-1}, - {uniname2ctype_offset(str1058), 374}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1062), 349}, - {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1067), 112}, - {uniname2ctype_offset(str1068), 107}, - {uniname2ctype_offset(str1069), 230}, - {-1}, {-1}, - {uniname2ctype_offset(str1072), 60}, - {uniname2ctype_offset(str1073), 425}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1077), 174}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1093), 17}, - {-1}, - {uniname2ctype_offset(str1095), 238}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1102), 103}, - {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1107), 323}, - {-1}, {-1}, - {uniname2ctype_offset(str1110), 481}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1114), 18}, - {uniname2ctype_offset(str1115), 51}, - {uniname2ctype_offset(str1116), 226}, - {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1121), 38}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1130), 73}, - {uniname2ctype_offset(str1131), 466}, - {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1137), 503}, - {uniname2ctype_offset(str1138), 58}, - {uniname2ctype_offset(str1139), 158}, - {-1}, {-1}, - {uniname2ctype_offset(str1142), 131}, - {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1148), 414}, - {-1}, - {uniname2ctype_offset(str1150), 301}, - {-1}, {-1}, - {uniname2ctype_offset(str1153), 460}, - {uniname2ctype_offset(str1154), 84}, - {uniname2ctype_offset(str1155), 181}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1159), 293}, - {-1}, {-1}, - {uniname2ctype_offset(str1162), 226}, - {uniname2ctype_offset(str1163), 281}, - {-1}, - {uniname2ctype_offset(str1165), 84}, - {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1170), 199}, - {-1}, {-1}, - {uniname2ctype_offset(str1173), 355}, - {uniname2ctype_offset(str1174), 131}, - {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1179), 113}, - {uniname2ctype_offset(str1180), 344}, - {-1}, {-1}, - {uniname2ctype_offset(str1183), 134}, - {uniname2ctype_offset(str1184), 4}, - {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1189), 11}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1197), 178}, - {-1}, {-1}, - {uniname2ctype_offset(str1200), 69}, - {uniname2ctype_offset(str1201), 194}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1210), 191}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1223), 433}, - {uniname2ctype_offset(str1224), 237}, - {-1}, {-1}, - {uniname2ctype_offset(str1227), 521}, - {-1}, - {uniname2ctype_offset(str1229), 191}, - {-1}, {-1}, - {uniname2ctype_offset(str1232), 313}, - {uniname2ctype_offset(str1233), 219}, - {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1239), 371}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1248), 435}, - {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1253), 116}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1261), 416}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1265), 223}, - {uniname2ctype_offset(str1266), 380}, - {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1272), 369}, - {uniname2ctype_offset(str1273), 342}, - {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1278), 122}, - {-1}, {-1}, - {uniname2ctype_offset(str1281), 406}, - {-1}, {-1}, - {uniname2ctype_offset(str1284), 120}, - {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1289), 28}, - {uniname2ctype_offset(str1290), 136}, - {-1}, - {uniname2ctype_offset(str1292), 96}, - {uniname2ctype_offset(str1293), 98}, - {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1299), 70}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1303), 6}, - {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1309), 96}, - {-1}, - {uniname2ctype_offset(str1311), 180}, - {-1}, - {uniname2ctype_offset(str1313), 337}, - {-1}, {-1}, - {uniname2ctype_offset(str1316), 111}, - {-1}, {-1}, - {uniname2ctype_offset(str1319), 85}, - {-1}, {-1}, - {uniname2ctype_offset(str1322), 111}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1326), 428}, - {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1331), 225}, - {uniname2ctype_offset(str1332), 190}, - {uniname2ctype_offset(str1333), 175}, - {-1}, - {uniname2ctype_offset(str1335), 127}, - {-1}, {-1}, - {uniname2ctype_offset(str1338), 220}, - {-1}, {-1}, - {uniname2ctype_offset(str1341), 136}, - {-1}, {-1}, - {uniname2ctype_offset(str1344), 81}, - {-1}, - {uniname2ctype_offset(str1346), 44}, - {-1}, - {uniname2ctype_offset(str1348), 168}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1355), 180}, - {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1360), 542}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1368), 316}, - {-1}, - {uniname2ctype_offset(str1370), 5}, - {uniname2ctype_offset(str1371), 162}, - {-1}, - {uniname2ctype_offset(str1373), 244}, - {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1378), 40}, - {uniname2ctype_offset(str1379), 421}, - {uniname2ctype_offset(str1380), 461}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1388), 42}, - {-1}, - {uniname2ctype_offset(str1390), 141}, - {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1396), 447}, - {-1}, - {uniname2ctype_offset(str1398), 523}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, - {uniname2ctype_offset(str1410), 27}, - {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1416), 12}, - {-1}, - {uniname2ctype_offset(str1418), 46}, - {uniname2ctype_offset(str1419), 66}, - {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1425), 26}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1429), 445}, - {uniname2ctype_offset(str1430), 145}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1439), 220}, - {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1444), 9}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1452), 483}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, - {uniname2ctype_offset(str1472), 363}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1481), 376}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, - {uniname2ctype_offset(str1493), 92}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1502), 203}, - {uniname2ctype_offset(str1503), 148}, - {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1508), 122}, - {uniname2ctype_offset(str1509), 64}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1513), 147}, - {-1}, {-1}, - {uniname2ctype_offset(str1516), 148}, - {uniname2ctype_offset(str1517), 512}, - {uniname2ctype_offset(str1518), 157}, - {-1}, {-1}, - {uniname2ctype_offset(str1521), 436}, - {-1}, {-1}, - {uniname2ctype_offset(str1524), 92}, - {-1}, - {uniname2ctype_offset(str1526), 242}, - {-1}, {-1}, - {uniname2ctype_offset(str1529), 192}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1536), 116}, - {uniname2ctype_offset(str1537), 195}, - {uniname2ctype_offset(str1538), 97}, - {-1}, - {uniname2ctype_offset(str1540), 450}, - {-1}, - {uniname2ctype_offset(str1542), 354}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1549), 1}, - {-1}, - {uniname2ctype_offset(str1551), 340}, - {-1}, - {uniname2ctype_offset(str1553), 465}, - {uniname2ctype_offset(str1554), 142}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1561), 104}, - {-1}, - {uniname2ctype_offset(str1563), 454}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1567), 97}, - {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1572), 145}, - {uniname2ctype_offset(str1573), 203}, - {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1579), 130}, - {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1584), 82}, - {-1}, - {uniname2ctype_offset(str1586), 194}, - {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1591), 90}, - {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1597), 211}, - {uniname2ctype_offset(str1598), 410}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1602), 305}, - {-1}, - {uniname2ctype_offset(str1604), 72}, - {-1}, {-1}, - {uniname2ctype_offset(str1607), 161}, - {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1613), 302}, - {uniname2ctype_offset(str1614), 241}, - {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1619), 82}, - {-1}, {-1}, - {uniname2ctype_offset(str1622), 531}, - {-1}, - {uniname2ctype_offset(str1624), 85}, - {uniname2ctype_offset(str1625), 464}, - {uniname2ctype_offset(str1626), 133}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1630), 400}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1637), 50}, - {uniname2ctype_offset(str1638), 334}, - {-1}, {-1}, - {uniname2ctype_offset(str1641), 125}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1645), 230}, - {uniname2ctype_offset(str1646), 213}, - {uniname2ctype_offset(str1647), 468}, - {-1}, {-1}, - {uniname2ctype_offset(str1650), 163}, - {-1}, {-1}, - {uniname2ctype_offset(str1653), 168}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1657), 137}, - {-1}, - {uniname2ctype_offset(str1659), 229}, - {-1}, {-1}, - {uniname2ctype_offset(str1662), 525}, - {-1}, {-1}, - {uniname2ctype_offset(str1665), 80}, - {uniname2ctype_offset(str1666), 126}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1673), 129}, - {-1}, {-1}, - {uniname2ctype_offset(str1676), 411}, - {uniname2ctype_offset(str1677), 397}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1681), 290}, - {-1}, - {uniname2ctype_offset(str1683), 300}, - {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1688), 541}, - {-1}, {-1}, - {uniname2ctype_offset(str1691), 205}, - {uniname2ctype_offset(str1692), 444}, - {-1}, - {uniname2ctype_offset(str1694), 22}, - {-1}, - {uniname2ctype_offset(str1696), 477}, - {uniname2ctype_offset(str1697), 127}, - {uniname2ctype_offset(str1698), 478}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1702), 423}, - {uniname2ctype_offset(str1703), 119}, - {-1}, {-1}, - {uniname2ctype_offset(str1706), 442}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1713), 78}, - {uniname2ctype_offset(str1714), 326}, - {uniname2ctype_offset(str1715), 320}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1719), 129}, - {-1}, {-1}, - {uniname2ctype_offset(str1722), 308}, - {uniname2ctype_offset(str1723), 198}, - {uniname2ctype_offset(str1724), 108}, - {-1}, {-1}, - {uniname2ctype_offset(str1727), 65}, - {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1733), 427}, - {uniname2ctype_offset(str1734), 104}, - {-1}, {-1}, - {uniname2ctype_offset(str1737), 170}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1741), 282}, - {-1}, - {uniname2ctype_offset(str1743), 7}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1752), 486}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1767), 242}, - {uniname2ctype_offset(str1768), 35}, - {-1}, {-1}, - {uniname2ctype_offset(str1771), 187}, - {-1}, {-1}, - {uniname2ctype_offset(str1774), 55}, - {uniname2ctype_offset(str1775), 62}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, - {uniname2ctype_offset(str1786), 133}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1790), 160}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1794), 318}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1804), 88}, - {uniname2ctype_offset(str1805), 432}, - {uniname2ctype_offset(str1806), 484}, - {-1}, {-1}, - {uniname2ctype_offset(str1809), 437}, - {-1}, - {uniname2ctype_offset(str1811), 176}, - {-1}, {-1}, - {uniname2ctype_offset(str1814), 431}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, - {uniname2ctype_offset(str1826), 387}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1835), 164}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1843), 141}, - {-1}, - {uniname2ctype_offset(str1845), 357}, - {-1}, {-1}, - {uniname2ctype_offset(str1848), 42}, - {-1}, - {uniname2ctype_offset(str1850), 392}, - {uniname2ctype_offset(str1851), 52}, - {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1856), 43}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1860), 424}, - {-1}, - {uniname2ctype_offset(str1862), 379}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1866), 21}, - {-1}, {-1}, - {uniname2ctype_offset(str1869), 479}, - {uniname2ctype_offset(str1870), 409}, - {-1}, - {uniname2ctype_offset(str1872), 45}, - {uniname2ctype_offset(str1873), 234}, - {-1}, {-1}, - {uniname2ctype_offset(str1876), 549}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1883), 146}, - {uniname2ctype_offset(str1884), 142}, - {-1}, - {uniname2ctype_offset(str1886), 212}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1893), 236}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, - {uniname2ctype_offset(str1904), 73}, - {uniname2ctype_offset(str1905), 324}, - {uniname2ctype_offset(str1906), 78}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1910), 287}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1920), 353}, - {uniname2ctype_offset(str1921), 172}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1931), 31}, - {uniname2ctype_offset(str1932), 123}, - {uniname2ctype_offset(str1933), 177}, - {-1}, - {uniname2ctype_offset(str1935), 325}, - {-1}, - {uniname2ctype_offset(str1937), 518}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1941), 138}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1945), 472}, - {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1951), 327}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1964), 47}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1968), 43}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1972), 347}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1980), 150}, - {uniname2ctype_offset(str1981), 99}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1985), 352}, - {-1}, - {uniname2ctype_offset(str1987), 517}, - {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str1993), 150}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, - {uniname2ctype_offset(str2004), 229}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, - {uniname2ctype_offset(str2015), 499}, - {uniname2ctype_offset(str2016), 176}, - {-1}, - {uniname2ctype_offset(str2018), 519}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str2026), 123}, - {uniname2ctype_offset(str2027), 430}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str2046), 166}, - {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str2051), 333}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str2068), 213}, - {-1}, - {uniname2ctype_offset(str2070), 100}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str2083), 292}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str2111), 178}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str2115), 166}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str2119), 455}, - {-1}, {-1}, - {uniname2ctype_offset(str2122), 204}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str2126), 134}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str2136), 453}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str2153), 143}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str2157), 138}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str2164), 143}, - {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str2169), 139}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, - {uniname2ctype_offset(str2180), 329}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str2184), 513}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str2193), 440}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str2200), 243}, - {-1}, {-1}, - {uniname2ctype_offset(str2203), 345}, - {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str2208), 91}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, - {uniname2ctype_offset(str2219), 31}, - {uniname2ctype_offset(str2220), 173}, - {uniname2ctype_offset(str2221), 529}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str2230), 201}, - {uniname2ctype_offset(str2231), 140}, - {uniname2ctype_offset(str2232), 140}, - {-1}, {-1}, - {uniname2ctype_offset(str2235), 426}, - {-1}, - {uniname2ctype_offset(str2237), 91}, - {-1}, {-1}, - {uniname2ctype_offset(str2240), 105}, - {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str2246), 135}, - {-1}, - {uniname2ctype_offset(str2248), 227}, - {uniname2ctype_offset(str2249), 204}, - {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str2254), 280}, - {-1}, - {uniname2ctype_offset(str2256), 490}, - {-1}, {-1}, - {uniname2ctype_offset(str2259), 276}, - {-1}, {-1}, - {uniname2ctype_offset(str2262), 45}, - {-1}, {-1}, - {uniname2ctype_offset(str2265), 346}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str2273), 33}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, - {uniname2ctype_offset(str2285), 393}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str2292), 87}, - {uniname2ctype_offset(str2293), 383}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str2310), 439}, - {-1}, {-1}, - {uniname2ctype_offset(str2313), 87}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str2322), 273}, - {-1}, - {uniname2ctype_offset(str2324), 275}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str2332), 41}, - {uniname2ctype_offset(str2333), 137}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str2341), 233}, - {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str2346), 80}, - {-1}, {-1}, - {uniname2ctype_offset(str2349), 135}, - {uniname2ctype_offset(str2350), 23}, - {-1}, {-1}, - {uniname2ctype_offset(str2353), 403}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str2360), 101}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str2373), 49}, - {-1}, - {uniname2ctype_offset(str2375), 336}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str2399), 271}, - {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str2405), 267}, - {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str2410), 235}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str2418), 377}, - {uniname2ctype_offset(str2419), 231}, - {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str2425), 158}, - {-1}, - {uniname2ctype_offset(str2427), 404}, - {-1}, {-1}, - {uniname2ctype_offset(str2430), 77}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str2445), 265}, - {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str2451), 471}, - {uniname2ctype_offset(str2452), 277}, - {-1}, {-1}, - {uniname2ctype_offset(str2455), 105}, - {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str2460), 269}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str2476), 528}, - {uniname2ctype_offset(str2477), 165}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str2487), 284}, - {-1}, - {uniname2ctype_offset(str2489), 233}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, - {uniname2ctype_offset(str2500), 165}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, - {uniname2ctype_offset(str2511), 278}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str2518), 177}, - {-1}, - {uniname2ctype_offset(str2520), 279}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str2530), 190}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str2546), 266}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str2565), 183}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str2589), 330}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str2602), 295}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str2629), 16}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str2661), 57}, - {-1}, - {uniname2ctype_offset(str2663), 71}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str2673), 39}, - {uniname2ctype_offset(str2674), 193}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str2691), 54}, - {uniname2ctype_offset(str2692), 510}, - {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str2698), 8}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str2732), 268}, - {uniname2ctype_offset(str2733), 264}, - {-1}, - {uniname2ctype_offset(str2735), 399}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, - {uniname2ctype_offset(str2755), 243}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str2773), 30}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str2787), 120}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, - {uniname2ctype_offset(str2808), 390}, - {-1}, - {uniname2ctype_offset(str2810), 351}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, - {uniname2ctype_offset(str2822), 401}, - {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str2827), 15}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str2844), 48}, - {uniname2ctype_offset(str2845), 272}, - {uniname2ctype_offset(str2846), 274}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, - {uniname2ctype_offset(str2876), 307}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, - {uniname2ctype_offset(str2897), 372}, - {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str2902), 167}, - {uniname2ctype_offset(str2903), 128}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str2907), 63}, - {-1}, {-1}, - {uniname2ctype_offset(str2910), 339}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str2928), 534}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str2932), 182}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str2954), 128}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, - {uniname2ctype_offset(str2974), 109}, - {-1}, {-1}, - {uniname2ctype_offset(str2977), 554}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str2985), 388}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, - {uniname2ctype_offset(str2997), 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}, {-1}, {-1}, - {uniname2ctype_offset(str3030), 412}, - {-1}, - {uniname2ctype_offset(str3032), 126}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str3057), 368}, - {-1}, - {uniname2ctype_offset(str3059), 63}, - {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str3064), 543}, - {-1}, {-1}, - {uniname2ctype_offset(str3067), 139}, - {-1}, {-1}, - {uniname2ctype_offset(str3070), 395}, - {-1}, - {uniname2ctype_offset(str3072), 192}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str3081), 463}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str3096), 362}, - {-1}, - {uniname2ctype_offset(str3098), 32}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str3159), 207}, - {-1}, - {uniname2ctype_offset(str3161), 385}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str3165), 155}, - {-1}, - {uniname2ctype_offset(str3167), 195}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str3181), 207}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str3197), 235}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str3224), 118}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str3231), 508}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, - {uniname2ctype_offset(str3252), 109}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str3295), 41}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, - {uniname2ctype_offset(str3307), 179}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str3314), 86}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str3338), 34}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str3346), 244}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str3363), 227}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str3388), 90}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str3413), 217}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str3428), 49}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str3500), 155}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, - {uniname2ctype_offset(str3511), 492}, - {-1}, {-1}, - {uniname2ctype_offset(str3514), 146}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, - {uniname2ctype_offset(str3525), 108}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str3550), 389}, - {-1}, - {uniname2ctype_offset(str3552), 382}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str3595), 217}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, - {uniname2ctype_offset(str3617), 162}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str3704), 245}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str3722), 118}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str3776), 197}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str3828), 396}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str3835), 546}, - {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str3840), 548}, - {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str3845), 398}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str3931), 54}, - {-1}, - {uniname2ctype_offset(str3933), 270}, - {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str3939), 75}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str3965), 193}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str3974), 502}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str3989), 183}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str4043), 39}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str4124), 77}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, - {uniname2ctype_offset(str4136), 381}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str4144), 370}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str4188), 552}, - {-1}, - {uniname2ctype_offset(str4190), 544}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str4214), 391}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str4241), 59}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, - {uniname2ctype_offset(str4270), 74}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str4312), 547}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str4373), 46}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str4406), 10}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str4466), 74}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str4528), 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}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str4596), 167}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str4673), 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}, -#endif /* USE_UNICODE_PROPERTIES */ - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#ifndef USE_UNICODE_PROPERTIES - {uniname2ctype_offset(str6), 12}, - {uniname2ctype_offset(str7), 7}, - {uniname2ctype_offset(str8), 15}, - {uniname2ctype_offset(str9), 1}, - {uniname2ctype_offset(str10), 13}, - {uniname2ctype_offset(str11), 11}, - {uniname2ctype_offset(str12), 10}, - {uniname2ctype_offset(str13), 14}, - {uniname2ctype_offset(str14), 3}, - {uniname2ctype_offset(str15), 9}, - {uniname2ctype_offset(str16), 8}, - {uniname2ctype_offset(str17), 6}, - {uniname2ctype_offset(str18), 5}, - {uniname2ctype_offset(str19), 4}, - {uniname2ctype_offset(str20), 2} -#else /* USE_UNICODE_PROPERTIES */ - {uniname2ctype_offset(str4716), 179}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str4915), 545}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str5015), 86}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {uniname2ctype_offset(str5275), 553} -#endif /* USE_UNICODE_PROPERTIES */ - }; - - if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) - { - register int key = uniname2ctype_hash (str, len); - - if (key <= MAX_HASH_VALUE && key >= 0) - { - register int o = wordlist[key].name; - if (o >= 0) - { - register const char *s = o + uniname2ctype_pool; - - if (*str == *s && !strncmp (str + 1, s + 1, len - 1) && s[len] == '\0') - return &wordlist[key]; - } - } - } - return 0; -} - -static int -uniname2ctype(const UChar *name, unsigned int len) -{ - const struct uniname2ctype_struct *p = uniname2ctype_p((const char *)name, len); - if (p) return p->ctype; - return -1; -} -#if defined ONIG_UNICODE_VERSION_STRING && !( \ - ONIG_UNICODE_VERSION_MAJOR == 9 && \ - ONIG_UNICODE_VERSION_MINOR == 0 && \ - ONIG_UNICODE_VERSION_TEENY == 0 && \ - 1) -# error ONIG_UNICODE_VERSION_STRING mismatch -#endif -#define ONIG_UNICODE_VERSION_STRING "9.0.0" -#define ONIG_UNICODE_VERSION_MAJOR 9 -#define ONIG_UNICODE_VERSION_MINOR 0 -#define ONIG_UNICODE_VERSION_TEENY 0 diff --git a/vendor/onig/enc/us_ascii.c b/vendor/onig/enc/us_ascii.c deleted file mode 100644 index 08f9072..0000000 --- a/vendor/onig/enc/us_ascii.c +++ /dev/null @@ -1,41 +0,0 @@ -#include "regenc.h" -#ifdef RUBY -# include "encindex.h" -#endif - -#ifndef ENCINDEX_US_ASCII -# define ENCINDEX_US_ASCII 0 -#endif - -static int -us_ascii_mbc_enc_len(const UChar* p, const UChar* e, OnigEncoding enc) -{ - if (*p & 0x80) - return ONIGENC_CONSTRUCT_MBCLEN_INVALID(); - return ONIGENC_CONSTRUCT_MBCLEN_CHARFOUND(1); -} - -OnigEncodingDefine(us_ascii, US_ASCII) = { - us_ascii_mbc_enc_len, - "US-ASCII",/* name */ - 1, /* max byte length */ - 1, /* min byte length */ - onigenc_is_mbc_newline_0x0a, - onigenc_single_byte_mbc_to_code, - onigenc_single_byte_code_to_mbclen, - onigenc_single_byte_code_to_mbc, - onigenc_ascii_mbc_case_fold, - onigenc_ascii_apply_all_case_fold, - onigenc_ascii_get_case_fold_codes_by_str, - onigenc_minimum_property_name_to_ctype, - onigenc_ascii_is_code_ctype, - onigenc_not_support_get_ctype_code_range, - onigenc_single_byte_left_adjust_char_head, - onigenc_always_true_is_allowed_reverse_match, - onigenc_single_byte_ascii_only_case_map, - ENCINDEX_US_ASCII, - ONIGENC_FLAG_NONE, -}; -ENC_ALIAS("ASCII", "US-ASCII") -ENC_ALIAS("ANSI_X3.4-1968", "US-ASCII") -ENC_ALIAS("646", "US-ASCII") diff --git a/vendor/onig/enc/utf_8.c b/vendor/onig/enc/utf_8.c deleted file mode 100644 index 3dad2f7..0000000 --- a/vendor/onig/enc/utf_8.c +++ /dev/null @@ -1,449 +0,0 @@ -/********************************************************************** - utf_8.c - Oniguruma (regular expression library) -**********************************************************************/ -/*- - * Copyright (c) 2002-2007 K.Kosako - * 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. - */ - -#include "regenc.h" -#ifdef RUBY -# include "encindex.h" -#endif - -#ifndef ENCINDEX_UTF_8 -# define ENCINDEX_UTF_8 0 -#endif - -#define USE_INVALID_CODE_SCHEME - -#ifdef USE_INVALID_CODE_SCHEME -/* virtual codepoint values for invalid encoding byte 0xfe and 0xff */ -# define INVALID_CODE_FE 0xfffffffe -# define INVALID_CODE_FF 0xffffffff -#endif -#define VALID_CODE_LIMIT 0x0010ffff - -#define utf8_islead(c) ((UChar )((c) & 0xc0) != 0x80) - -static const int EncLen_UTF8[] = { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 4, 4, 4, 4, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 -}; - -typedef enum { - FAILURE = -2, - ACCEPT, - S0, S1, S2, S3, - S4, S5, S6, S7 -} state_t; -#define A ACCEPT -#define F FAILURE -static const signed char trans[][0x100] = { - { /* S0 0 1 2 3 4 5 6 7 8 9 a b c d e f */ - /* 0 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 1 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 2 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 3 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 4 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 5 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 6 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 7 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* a */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* b */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* c */ F, F, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* d */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* e */ 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, 3, - /* f */ 5, 6, 6, 6, 7, F, F, F, F, F, F, F, F, F, F, F - }, - { /* S1 0 1 2 3 4 5 6 7 8 9 a b c d e f */ - /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 8 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 9 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* a */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* b */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* c */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* d */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* e */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* f */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F - }, - { /* S2 0 1 2 3 4 5 6 7 8 9 a b c d e f */ - /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* a */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* b */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* c */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* d */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* e */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* f */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F - }, - { /* S3 0 1 2 3 4 5 6 7 8 9 a b c d e f */ - /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 8 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* 9 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* a */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* b */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* c */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* d */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* e */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* f */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F - }, - { /* S4 0 1 2 3 4 5 6 7 8 9 a b c d e f */ - /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 8 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* 9 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* a */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* b */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* c */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* d */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* e */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* f */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F - }, - { /* S5 0 1 2 3 4 5 6 7 8 9 a b c d e f */ - /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 9 */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - /* a */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - /* b */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - /* c */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* d */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* e */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* f */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F - }, - { /* S6 0 1 2 3 4 5 6 7 8 9 a b c d e f */ - /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 8 */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - /* 9 */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - /* a */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - /* b */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - /* c */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* d */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* e */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* f */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F - }, - { /* S7 0 1 2 3 4 5 6 7 8 9 a b c d e f */ - /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 8 */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* a */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* b */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* c */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* d */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* e */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* f */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F - }, -}; -#undef A -#undef F - -static int -mbc_enc_len(const UChar* p, const UChar* e, OnigEncoding enc ARG_UNUSED) -{ - int firstbyte = *p++; - state_t s; - s = trans[0][firstbyte]; - if (s < 0) return s == ACCEPT ? ONIGENC_CONSTRUCT_MBCLEN_CHARFOUND(1) : - ONIGENC_CONSTRUCT_MBCLEN_INVALID(); - - if (p == e) return ONIGENC_CONSTRUCT_MBCLEN_NEEDMORE(EncLen_UTF8[firstbyte]-1); - s = trans[s][*p++]; - if (s < 0) return s == ACCEPT ? ONIGENC_CONSTRUCT_MBCLEN_CHARFOUND(2) : - ONIGENC_CONSTRUCT_MBCLEN_INVALID(); - - if (p == e) return ONIGENC_CONSTRUCT_MBCLEN_NEEDMORE(EncLen_UTF8[firstbyte]-2); - s = trans[s][*p++]; - if (s < 0) return s == ACCEPT ? ONIGENC_CONSTRUCT_MBCLEN_CHARFOUND(3) : - ONIGENC_CONSTRUCT_MBCLEN_INVALID(); - - if (p == e) return ONIGENC_CONSTRUCT_MBCLEN_NEEDMORE(EncLen_UTF8[firstbyte]-3); - s = trans[s][*p++]; - return s == ACCEPT ? ONIGENC_CONSTRUCT_MBCLEN_CHARFOUND(4) : - ONIGENC_CONSTRUCT_MBCLEN_INVALID(); -} - -static int -is_mbc_newline(const UChar* p, const UChar* end, OnigEncoding enc) -{ - if (p < end) { - if (*p == 0x0a) return 1; - -#ifdef USE_UNICODE_ALL_LINE_TERMINATORS - if (*p == 0x0b || *p == 0x0c || *p == 0x0d) return 1; - if (p + 1 < end) { - if (*(p+1) == 0x85 && *p == 0xc2) /* U+0085 */ - return 1; - if (p + 2 < end) { - if ((*(p+2) == 0xa8 || *(p+2) == 0xa9) - && *(p+1) == 0x80 && *p == 0xe2) /* U+2028, U+2029 */ - return 1; - } - } -#endif - } - - return 0; -} - -static OnigCodePoint -mbc_to_code(const UChar* p, const UChar* end, OnigEncoding enc) -{ - int c, len; - OnigCodePoint n; - - len = mbc_enc_len(p, end, enc); - c = *p++; - if (len > 1) { - len--; - n = c & ((1 << (6 - len)) - 1); - while (len--) { - c = *p++; - n = (n << 6) | (c & ((1 << 6) - 1)); - } - return n; - } - else { -#ifdef USE_INVALID_CODE_SCHEME - if (c > 0xfd) { - return ((c == 0xfe) ? INVALID_CODE_FE : INVALID_CODE_FF); - } -#endif - return (OnigCodePoint )c; - } -} - -static int -code_to_mbclen(OnigCodePoint code, OnigEncoding enc ARG_UNUSED) -{ - if ((code & 0xffffff80) == 0) return 1; - else if ((code & 0xfffff800) == 0) return 2; - else if ((code & 0xffff0000) == 0) return 3; - else if (code <= VALID_CODE_LIMIT) return 4; -#ifdef USE_INVALID_CODE_SCHEME - else if (code == INVALID_CODE_FE) return 1; - else if (code == INVALID_CODE_FF) return 1; -#endif - else - return ONIGERR_TOO_BIG_WIDE_CHAR_VALUE; -} - -static int -code_to_mbc(OnigCodePoint code, UChar *buf, OnigEncoding enc ARG_UNUSED) -{ -#define UTF8_TRAILS(code, shift) (UChar )((((code) >> (shift)) & 0x3f) | 0x80) -#define UTF8_TRAIL0(code) (UChar )(((code) & 0x3f) | 0x80) - - if ((code & 0xffffff80) == 0) { - *buf = (UChar )code; - return 1; - } - else { - UChar *p = buf; - - if ((code & 0xfffff800) == 0) { - *p++ = (UChar )(((code>>6)& 0x1f) | 0xc0); - } - else if ((code & 0xffff0000) == 0) { - *p++ = (UChar )(((code>>12) & 0x0f) | 0xe0); - *p++ = UTF8_TRAILS(code, 6); - } - else if (code <= VALID_CODE_LIMIT) { - *p++ = (UChar )(((code>>18) & 0x07) | 0xf0); - *p++ = UTF8_TRAILS(code, 12); - *p++ = UTF8_TRAILS(code, 6); - } -#ifdef USE_INVALID_CODE_SCHEME - else if (code == INVALID_CODE_FE) { - *p = 0xfe; - return 1; - } - else if (code == INVALID_CODE_FF) { - *p = 0xff; - return 1; - } -#endif - else { - return ONIGERR_TOO_BIG_WIDE_CHAR_VALUE; - } - - *p++ = UTF8_TRAIL0(code); - return (int )(p - buf); - } -} - -static int -mbc_case_fold(OnigCaseFoldType flag, const UChar** pp, - const UChar* end, UChar* fold, OnigEncoding enc) -{ - const UChar* p = *pp; - - if (ONIGENC_IS_MBC_ASCII(p)) { -#ifdef USE_UNICODE_CASE_FOLD_TURKISH_AZERI - if ((flag & ONIGENC_CASE_FOLD_TURKISH_AZERI) != 0) { - if (*p == 0x49) { - *fold++ = 0xc4; - *fold = 0xb1; - (*pp)++; - return 2; - } - } -#endif - - *fold = ONIGENC_ASCII_CODE_TO_LOWER_CASE(*p); - (*pp)++; - return 1; /* return byte length of converted char to lower */ - } - else { - return onigenc_unicode_mbc_case_fold(enc, flag, pp, end, fold); - } -} - - -static int -get_ctype_code_range(OnigCtype ctype, OnigCodePoint *sb_out, - const OnigCodePoint* ranges[], OnigEncoding enc ARG_UNUSED) -{ - *sb_out = 0x80; - return onigenc_unicode_ctype_code_range(ctype, ranges); -} - - -static UChar* -left_adjust_char_head(const UChar* start, const UChar* s, const UChar* end, OnigEncoding enc ARG_UNUSED) -{ - const UChar *p; - - if (s <= start) return (UChar* )s; - p = s; - - while (!utf8_islead(*p) && p > start) p--; - return (UChar* )p; -} - -static int -get_case_fold_codes_by_str(OnigCaseFoldType flag, - const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[], - OnigEncoding enc) -{ - return onigenc_unicode_get_case_fold_codes_by_str(enc, flag, p, end, items); -} - -OnigEncodingDefine(utf_8, UTF_8) = { - mbc_enc_len, - "UTF-8", /* name */ - 6, /* max byte length */ - 1, /* min byte length */ - is_mbc_newline, - mbc_to_code, - code_to_mbclen, - code_to_mbc, - mbc_case_fold, - onigenc_unicode_apply_all_case_fold, - get_case_fold_codes_by_str, - onigenc_unicode_property_name_to_ctype, - onigenc_unicode_is_code_ctype, - get_ctype_code_range, - left_adjust_char_head, - onigenc_always_true_is_allowed_reverse_match, - onigenc_unicode_case_map, - ENCINDEX_UTF_8, - ONIGENC_FLAG_UNICODE, -}; -ENC_ALIAS("CP65001", "UTF-8") - -/* - * Name: UTF8-MAC - * Link: http://developer.apple.com/documentation/MacOSX/Conceptual/BPFileSystem/BPFileSystem.html - * Link: http://developer.apple.com/qa/qa2001/qa1235.html - * Link: http://developer.apple.com/jp/qa/qa2001/qa1235.html - * Link: http://www.gnu.org/software/emacs/NEWS.23.2 - */ -ENC_REPLICATE("UTF8-MAC", "UTF-8") -ENC_ALIAS("UTF-8-MAC", "UTF8-MAC") -ENC_ALIAS("UTF-8-HFS", "UTF8-MAC") /* Emacs 23.2 */ diff --git a/vendor/onig/enc/windows_1250.c b/vendor/onig/enc/windows_1250.c deleted file mode 100644 index d2cf7b1..0000000 --- a/vendor/onig/enc/windows_1250.c +++ /dev/null @@ -1,271 +0,0 @@ -/********************************************************************** - windows_1250.c - Oniguruma (regular expression library) -**********************************************************************/ -/*- - * Copyright (c) 2006-2007 Byte - * K.Kosako - * 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. - */ - -#include "regenc.h" -#include "iso_8859.h" - -#define ENC_CP1250_TO_LOWER_CASE(c) EncCP1250_ToLowerCaseTable[c] -#define ENC_IS_CP1250_CTYPE(code,ctype) \ - ((EncCP1250_CtypeTable[code] & CTYPE_TO_BIT(ctype)) != 0) - -static const UChar EncCP1250_ToLowerCaseTable[256] = { - '\000', '\001', '\002', '\003', '\004', '\005', '\006', '\007', - '\010', '\011', '\012', '\013', '\014', '\015', '\016', '\017', - '\020', '\021', '\022', '\023', '\024', '\025', '\026', '\027', - '\030', '\031', '\032', '\033', '\034', '\035', '\036', '\037', - '\040', '\041', '\042', '\043', '\044', '\045', '\046', '\047', - '\050', '\051', '\052', '\053', '\054', '\055', '\056', '\057', - '\060', '\061', '\062', '\063', '\064', '\065', '\066', '\067', - '\070', '\071', '\072', '\073', '\074', '\075', '\076', '\077', - '\100', '\141', '\142', '\143', '\144', '\145', '\146', '\147', - '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157', - '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167', - '\170', '\171', '\172', '\133', '\134', '\135', '\136', '\137', - '\140', '\141', '\142', '\143', '\144', '\145', '\146', '\147', - '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157', - '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167', - '\170', '\171', '\172', '\173', '\174', '\175', '\176', '\177', - '\200', '\201', '\202', '\203', '\204', '\205', '\206', '\207', - '\210', '\211', '\232', '\213', '\234', '\235', '\236', '\237', - '\220', '\221', '\222', '\223', '\224', '\225', '\226', '\227', - '\230', '\231', '\232', '\233', '\234', '\235', '\236', '\237', - '\240', '\241', '\242', '\263', '\244', '\271', '\246', '\247', - '\250', '\251', '\272', '\253', '\254', '\255', '\256', '\277', - '\260', '\261', '\262', '\263', '\264', '\265', '\266', '\267', - '\270', '\271', '\272', '\273', '\276', '\275', '\276', '\277', - '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347', - '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357', - '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\367', - '\370', '\371', '\372', '\373', '\374', '\375', '\376', '\337', - '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347', - '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357', - '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\367', - '\370', '\371', '\372', '\373', '\374', '\375', '\376', '\377', -}; - -static const unsigned short EncCP1250_CtypeTable[256] = { - 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, - 0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008, - 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, - 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, - 0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, - 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, - 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, - 0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, - 0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2, - 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, - 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, - 0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0, - 0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2, - 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, - 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, - 0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008, - 0x00a0, 0x0000, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,/* 8 */ - 0x0008, 0x0008, 0x34a2, 0x0008, 0x34a2, 0x34a2, 0x34a2, 0x34a2, - 0x0000, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,/* 9 */ - 0x0008, 0x0008, 0x30e2, 0x0008, 0x30e2, 0x30e2, 0x30e2, 0x30e2, - 0x0284, 0x01a0, 0x00a0, 0x34a2, 0x00a0, 0x34a2, 0x00a0, 0x00a0,/* A */ - 0x00a0, 0x00a0, 0x34a2, 0x01a0, 0x00a0, 0x01a0, 0x00a0, 0x34a2, - 0x00a0, 0x00a0, 0x10a0, 0x30e2, 0x00a0, 0x30e2, 0x00a0, 0x01a0,/* B */ - 0x00a0, 0x30e2, 0x30e2, 0x01a0, 0x34a2, 0x10a0, 0x30e2, 0x30e2, - 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2,/* C */ - 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, - 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x00a0,/* D */ - 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x30e2, - 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2,/* E */ - 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, - 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x00a0,/* F */ - 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x00a0, -}; - -static int -cp1250_mbc_case_fold(OnigCaseFoldType flag ARG_UNUSED, - const UChar** pp, const UChar* end ARG_UNUSED, UChar* lower, OnigEncoding enc ARG_UNUSED) -{ - const UChar* p = *pp; - - *lower = ENC_CP1250_TO_LOWER_CASE(*p); - (*pp)++; - return 1; -} - -static int -cp1250_is_code_ctype(OnigCodePoint code, unsigned int ctype, OnigEncoding enc ARG_UNUSED) -{ - if (code < 256) - return ENC_IS_CP1250_CTYPE(code, ctype); - else - return FALSE; -} - -static const OnigPairCaseFoldCodes CaseFoldMap[] = { - { 0x8a, 0x9a }, - { 0x8c, 0x9c }, - { 0x8d, 0x9d }, - { 0x8e, 0x9e }, - { 0x8f, 0x9f }, - - { 0xa3, 0xb3 }, - { 0xa5, 0xb9 }, - { 0xaa, 0xba }, - { 0xaf, 0xbf }, - - { 0xbc, 0xbe }, - - { 0xc0, 0xe0 }, - { 0xc1, 0xe1 }, - { 0xc2, 0xe2 }, - { 0xc3, 0xe3 }, - { 0xc4, 0xe4 }, - { 0xc5, 0xe5 }, - { 0xc6, 0xe6 }, - { 0xc7, 0xe7 }, - { 0xc8, 0xe8 }, - { 0xc9, 0xe9 }, - { 0xca, 0xea }, - { 0xcb, 0xeb }, - { 0xcc, 0xec }, - { 0xcd, 0xed }, - { 0xce, 0xee }, - { 0xcf, 0xef }, - - { 0xd0, 0xf0 }, - { 0xd1, 0xf1 }, - { 0xd2, 0xf2 }, - { 0xd3, 0xf3 }, - { 0xd4, 0xf4 }, - { 0xd5, 0xf5 }, - { 0xd6, 0xf6 }, - { 0xd8, 0xf8 }, - { 0xd9, 0xf9 }, - { 0xda, 0xfa }, - { 0xdb, 0xfb }, - { 0xdc, 0xfc }, - { 0xdd, 0xfd }, - { 0xde, 0xfe }, -}; - -static int -cp1250_apply_all_case_fold(OnigCaseFoldType flag, - OnigApplyAllCaseFoldFunc f, void* arg, OnigEncoding enc ARG_UNUSED) -{ - return onigenc_apply_all_case_fold_with_map( - sizeof(CaseFoldMap)/sizeof(OnigPairCaseFoldCodes), CaseFoldMap, 1, - flag, f, arg); -} - -static int -cp1250_get_case_fold_codes_by_str(OnigCaseFoldType flag, - const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[], OnigEncoding enc ARG_UNUSED) -{ - return onigenc_get_case_fold_codes_by_str_with_map( - sizeof(CaseFoldMap)/sizeof(OnigPairCaseFoldCodes), CaseFoldMap, 1, - flag, p, end, items); -} - -static int -case_map(OnigCaseFoldType* flagP, const OnigUChar** pp, - const OnigUChar* end, OnigUChar* to, OnigUChar* to_end, - const struct OnigEncodingTypeST* enc) -{ - OnigCodePoint code; - OnigUChar *to_start = to; - OnigCaseFoldType flags = *flagP; - - while (*pp < end && to < to_end) { - code = *(*pp)++; - if (code == SHARP_s) { - if (flags & ONIGENC_CASE_UPCASE) { - flags |= ONIGENC_CASE_MODIFIED; - *to++ = 'S'; - code = (flags & ONIGENC_CASE_TITLECASE) ? 's' : 'S'; - } - else if (flags & ONIGENC_CASE_FOLD) { - flags |= ONIGENC_CASE_MODIFIED; - *to++ = 's'; - code = 's'; - } - } - else if ((EncCP1250_CtypeTable[code] & BIT_CTYPE_UPPER) - && (flags & (ONIGENC_CASE_DOWNCASE | ONIGENC_CASE_FOLD))) { - flags |= ONIGENC_CASE_MODIFIED; - code = ENC_CP1250_TO_LOWER_CASE(code); - } - else if (code == 0xB5) - ; - else if ((EncCP1250_CtypeTable[code]&BIT_CTYPE_LOWER) - && (flags & ONIGENC_CASE_UPCASE)) { - flags |= ONIGENC_CASE_MODIFIED; - if (code == 0xB9) - code = 0xA5; - else if (code == 0xBE) - code = 0xBC; - else if (code >= 0x8A && code <= 0xBF && code!=0xB9) - code -= 0x10; - else - code -= 0x20; - } - *to++ = code; - if (flags & ONIGENC_CASE_TITLECASE) /* switch from titlecase to lowercase for capitalize */ - flags ^= (ONIGENC_CASE_UPCASE | ONIGENC_CASE_DOWNCASE | ONIGENC_CASE_TITLECASE); - } - *flagP = flags; - return (int )(to - to_start); -} - -OnigEncodingDefine(windows_1250, Windows_1250) = { - onigenc_single_byte_mbc_enc_len, - "Windows-1250", /* name */ - 1, /* max enc length */ - 1, /* min enc length */ - onigenc_is_mbc_newline_0x0a, - onigenc_single_byte_mbc_to_code, - onigenc_single_byte_code_to_mbclen, - onigenc_single_byte_code_to_mbc, - cp1250_mbc_case_fold, - cp1250_apply_all_case_fold, - cp1250_get_case_fold_codes_by_str, - onigenc_minimum_property_name_to_ctype, - cp1250_is_code_ctype, - onigenc_not_support_get_ctype_code_range, - onigenc_single_byte_left_adjust_char_head, - onigenc_always_true_is_allowed_reverse_match, - case_map, - 0, - ONIGENC_FLAG_NONE, -}; -/* - * Name: windows-1250 - * MIBenum: 2251 - * Link: http://www.iana.org/assignments/character-sets - * Link: http://www.microsoft.com/globaldev/reference/sbcs/1250.mspx - * Link: http://en.wikipedia.org/wiki/Windows-1250 - */ -ENC_ALIAS("CP1250", "Windows-1250") diff --git a/vendor/onig/enc/windows_1252.c b/vendor/onig/enc/windows_1252.c deleted file mode 100644 index 5f90c15..0000000 --- a/vendor/onig/enc/windows_1252.c +++ /dev/null @@ -1,260 +0,0 @@ -/********************************************************************** - windows_1252.c - Oniguruma (regular expression library) -**********************************************************************/ -/*- - * Copyright (c) 2006-2007 Byte - * K.Kosako - * 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. - */ - -#include "regenc.h" -#include "iso_8859.h" - -#define ENC_CP1252_TO_LOWER_CASE(c) EncCP1252_ToLowerCaseTable[c] -#define ENC_IS_CP1252_CTYPE(code,ctype) \ - ((EncCP1252_CtypeTable[code] & CTYPE_TO_BIT(ctype)) != 0) - -static const UChar EncCP1252_ToLowerCaseTable[256] = { - '\000', '\001', '\002', '\003', '\004', '\005', '\006', '\007', - '\010', '\011', '\012', '\013', '\014', '\015', '\016', '\017', - '\020', '\021', '\022', '\023', '\024', '\025', '\026', '\027', - '\030', '\031', '\032', '\033', '\034', '\035', '\036', '\037', - '\040', '\041', '\042', '\043', '\044', '\045', '\046', '\047', - '\050', '\051', '\052', '\053', '\054', '\055', '\056', '\057', - '\060', '\061', '\062', '\063', '\064', '\065', '\066', '\067', - '\070', '\071', '\072', '\073', '\074', '\075', '\076', '\077', - '\100', '\141', '\142', '\143', '\144', '\145', '\146', '\147', - '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157', - '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167', - '\170', '\171', '\172', '\133', '\134', '\135', '\136', '\137', - '\140', '\141', '\142', '\143', '\144', '\145', '\146', '\147', - '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157', - '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167', - '\170', '\171', '\172', '\173', '\174', '\175', '\176', '\177', - '\200', '\201', '\202', '\203', '\204', '\205', '\206', '\207', - '\210', '\211', '\232', '\213', '\234', '\215', '\236', '\217', - '\220', '\221', '\222', '\223', '\224', '\225', '\226', '\227', - '\230', '\231', '\232', '\233', '\234', '\235', '\236', '\377', - '\240', '\241', '\242', '\243', '\244', '\245', '\246', '\247', - '\250', '\251', '\252', '\253', '\254', '\255', '\256', '\277', - '\260', '\261', '\262', '\263', '\264', '\265', '\266', '\267', - '\270', '\271', '\272', '\273', '\274', '\275', '\276', '\277', - '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347', - '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357', - '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\367', - '\370', '\371', '\372', '\373', '\374', '\375', '\376', '\337', - '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347', - '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357', - '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\367', - '\370', '\371', '\372', '\373', '\374', '\375', '\376', '\377', -}; - -static const unsigned short EncCP1252_CtypeTable[256] = { - 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, - 0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008, - 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, - 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, - 0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, - 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, - 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, - 0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, - 0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2, - 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, - 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, - 0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0, - 0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2, - 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, - 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, - 0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008, - 0x00a0, 0x0000, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, - 0x0008, 0x0008, 0x34a2, 0x0008, 0x34a2, 0x0000, 0x34a2, 0x0000, - 0x0000, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, - 0x0008, 0x0008, 0x30e2, 0x0008, 0x30e2, 0x0000, 0x30e2, 0x34a2, - 0x0284, 0x01a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, - 0x00a0, 0x00a0, 0x30e2, 0x01a0, 0x00a0, 0x01a0, 0x00a0, 0x00a0, - 0x00a0, 0x00a0, 0x10a0, 0x10a0, 0x00a0, 0x30e2, 0x00a0, 0x01a0, - 0x00a0, 0x10a0, 0x30e2, 0x01a0, 0x10a0, 0x10a0, 0x10a0, 0x01a0, - 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, - 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, - 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x00a0, - 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x30e2, - 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, - 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, - 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x00a0, - 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, -}; - -static int -cp1252_mbc_case_fold(OnigCaseFoldType flag ARG_UNUSED, - const UChar** pp, const UChar* end ARG_UNUSED, UChar* lower, OnigEncoding enc ARG_UNUSED) -{ - const UChar* p = *pp; - - *lower = ENC_CP1252_TO_LOWER_CASE(*p); - (*pp)++; - return 1; -} -static int -cp1252_is_code_ctype(OnigCodePoint code, unsigned int ctype, OnigEncoding enc ARG_UNUSED) -{ - if (code < 256) - return ENC_IS_CP1252_CTYPE(code, ctype); - else - return FALSE; -} - -static const OnigPairCaseFoldCodes CaseFoldMap[] = { - { 0x8a, 0x9a }, - { 0x8c, 0x9c }, - { 0x8e, 0x9e }, - { 0x9f, 0xff }, - - { 0xc0, 0xe0 }, - { 0xc1, 0xe1 }, - { 0xc2, 0xe2 }, - { 0xc3, 0xe3 }, - { 0xc4, 0xe4 }, - { 0xc5, 0xe5 }, - { 0xc6, 0xe6 }, - { 0xc7, 0xe7 }, - { 0xc8, 0xe8 }, - { 0xc9, 0xe9 }, - { 0xca, 0xea }, - { 0xcb, 0xeb }, - { 0xcc, 0xec }, - { 0xcd, 0xed }, - { 0xce, 0xee }, - { 0xcf, 0xef }, - - { 0xd0, 0xf0 }, - { 0xd1, 0xf1 }, - { 0xd2, 0xf2 }, - { 0xd3, 0xf3 }, - { 0xd4, 0xf4 }, - { 0xd5, 0xf5 }, - { 0xd6, 0xf6 }, - { 0xd8, 0xf8 }, - { 0xd9, 0xf9 }, - { 0xda, 0xfa }, - { 0xdb, 0xfb }, - { 0xdc, 0xfc }, - { 0xdd, 0xfd }, - { 0xde, 0xfe }, -}; - -static int -cp1252_apply_all_case_fold(OnigCaseFoldType flag, - OnigApplyAllCaseFoldFunc f, void* arg, OnigEncoding enc ARG_UNUSED) -{ - return onigenc_apply_all_case_fold_with_map( - sizeof(CaseFoldMap)/sizeof(OnigPairCaseFoldCodes), CaseFoldMap, 1, - flag, f, arg); -} - -static int -cp1252_get_case_fold_codes_by_str(OnigCaseFoldType flag, - const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[], OnigEncoding enc ARG_UNUSED) -{ - return onigenc_get_case_fold_codes_by_str_with_map( - sizeof(CaseFoldMap)/sizeof(OnigPairCaseFoldCodes), CaseFoldMap, 1, - flag, p, end, items); -} - -static int -case_map(OnigCaseFoldType* flagP, const OnigUChar** pp, - const OnigUChar* end, OnigUChar* to, OnigUChar* to_end, - const struct OnigEncodingTypeST* enc) -{ - OnigCodePoint code; - OnigUChar *to_start = to; - OnigCaseFoldType flags = *flagP; - - while (*pp < end && to < to_end) { - code = *(*pp)++; - if (code == SHARP_s) { - if (flags & ONIGENC_CASE_UPCASE) { - flags |= ONIGENC_CASE_MODIFIED; - *to++ = 'S'; - code = (flags & ONIGENC_CASE_TITLECASE) ? 's' : 'S'; - } - else if (flags & ONIGENC_CASE_FOLD) { - flags |= ONIGENC_CASE_MODIFIED; - *to++ = 's'; - code = 's'; - } - } - else if ((EncCP1252_CtypeTable[code] & BIT_CTYPE_UPPER) - && (flags & (ONIGENC_CASE_DOWNCASE | ONIGENC_CASE_FOLD))) { - flags |= ONIGENC_CASE_MODIFIED; - code = ENC_CP1252_TO_LOWER_CASE(code); - } - else if (code == 0x83 || code == 0xAA || code == 0xBA || code == 0xB5) - ; - else if ((EncCP1252_CtypeTable[code]&BIT_CTYPE_LOWER) - && (flags & ONIGENC_CASE_UPCASE)) { - flags |= ONIGENC_CASE_MODIFIED; - if (code == 0x9A || code == 0x9C || code == 0x9E) - code -= 0x10; - else if (code == 0xFF) - code -= 0x60; - else - code -= 0x20; - } - *to++ = code; - if (flags & ONIGENC_CASE_TITLECASE) /* switch from titlecase to lowercase for capitalize */ - flags ^= (ONIGENC_CASE_UPCASE | ONIGENC_CASE_DOWNCASE | ONIGENC_CASE_TITLECASE); - } - *flagP = flags; - return (int )(to - to_start); -} - -OnigEncodingDefine(windows_1252, Windows_1252) = { - onigenc_single_byte_mbc_enc_len, - "Windows-1252", /* name */ - 1, /* max enc length */ - 1, /* min enc length */ - onigenc_is_mbc_newline_0x0a, - onigenc_single_byte_mbc_to_code, - onigenc_single_byte_code_to_mbclen, - onigenc_single_byte_code_to_mbc, - cp1252_mbc_case_fold, - cp1252_apply_all_case_fold, - cp1252_get_case_fold_codes_by_str, - onigenc_minimum_property_name_to_ctype, - cp1252_is_code_ctype, - onigenc_not_support_get_ctype_code_range, - onigenc_single_byte_left_adjust_char_head, - onigenc_always_true_is_allowed_reverse_match, - case_map, - 0, - ONIGENC_FLAG_NONE, -}; -/* - * Name: windows-1252 - * MIBenum: 2251 - * Link: http://www.iana.org/assignments/character-sets - * Link: http://www.microsoft.com/globaldev/reference/sbcs/1252.mspx - * Link: http://en.wikipedia.org/wiki/Windows-1252 - */ -ENC_ALIAS("CP1252", "Windows-1252") diff --git a/vendor/onig/enc/windows_1253.c b/vendor/onig/enc/windows_1253.c deleted file mode 100644 index 9e9c63a..0000000 --- a/vendor/onig/enc/windows_1253.c +++ /dev/null @@ -1,297 +0,0 @@ -/********************************************************************** - windows_1253.c - Oniguruma (regular expression library) -**********************************************************************/ -/*- - * Copyright (c) 2002-2007 K.Kosako - * 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. - */ - -/* - * Name: windows-1253 - * MIBenum: 2253 - * Link: http://www.iana.org/assignments/character-sets - * Link: http://www.microsoft.com/globaldev/reference/sbcs/1253.mspx - * Link: http://en.wikipedia.org/wiki/Windows-1253 - */ - -#include "regenc.h" - -#define ENC_CP1253_TO_LOWER_CASE(c) EncCP1253_ToLowerCaseTable[c] -#define ENC_IS_CP1253_CTYPE(code,ctype) \ - ((EncCP1253_CtypeTable[code] & CTYPE_TO_BIT(ctype)) != 0) - -static const UChar EncCP1253_ToLowerCaseTable[256] = { - '\000', '\001', '\002', '\003', '\004', '\005', '\006', '\007', - '\010', '\011', '\012', '\013', '\014', '\015', '\016', '\017', - '\020', '\021', '\022', '\023', '\024', '\025', '\026', '\027', - '\030', '\031', '\032', '\033', '\034', '\035', '\036', '\037', - '\040', '\041', '\042', '\043', '\044', '\045', '\046', '\047', - '\050', '\051', '\052', '\053', '\054', '\055', '\056', '\057', - '\060', '\061', '\062', '\063', '\064', '\065', '\066', '\067', - '\070', '\071', '\072', '\073', '\074', '\075', '\076', '\077', - '\100', '\141', '\142', '\143', '\144', '\145', '\146', '\147', - '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157', - '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167', - '\170', '\171', '\172', '\133', '\134', '\135', '\136', '\137', - '\140', '\141', '\142', '\143', '\144', '\145', '\146', '\147', - '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157', - '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167', - '\170', '\171', '\172', '\173', '\174', '\175', '\176', '\177', - '\200', '\201', '\202', '\203', '\204', '\205', '\206', '\207', - '\210', '\211', '\212', '\213', '\214', '\215', '\216', '\217', - '\220', '\221', '\222', '\223', '\224', '\225', '\226', '\227', - '\230', '\231', '\232', '\233', '\234', '\235', '\236', '\237', - '\240', '\241', '\334', '\243', '\244', '\245', '\246', '\247', - '\250', '\251', '\252', '\253', '\254', '\255', '\256', '\257', - '\260', '\261', '\262', '\263', '\264', '\354', '\334', '\267', - '\335', '\336', '\337', '\273', '\374', '\275', '\375', '\376', - '\300', '\341', '\342', '\343', '\344', '\345', '\346', '\347', - '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357', - '\360', '\361', '\322', '\363', '\364', '\365', '\366', '\367', - '\370', '\371', '\372', '\373', '\334', '\335', '\336', '\337', - '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347', - '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357', - '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\367', - '\370', '\371', '\372', '\373', '\374', '\375', '\376', '\377' -}; - -static const unsigned short EncCP1253_CtypeTable[256] = { - 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, - 0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008, - 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, - 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, - 0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, - 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, - 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, - 0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, - 0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2, - 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, - 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, - 0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0, - 0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2, - 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, - 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, - 0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008, - 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, - 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, - 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, - 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, - 0x0284, 0x01a0, 0x34a2, 0x00a0, 0x0000, 0x0000, 0x00a0, 0x00a0, - 0x00a0, 0x00a0, 0x0000, 0x01a0, 0x00a0, 0x01a0, 0x0000, 0x01a0, - 0x00a0, 0x00a0, 0x10a0, 0x10a0, 0x00a0, 0x30e2, 0x34a2, 0x01a0, - 0x34a2, 0x34a2, 0x34a2, 0x01a0, 0x34a2, 0x10a0, 0x34a2, 0x34a2, - 0x30e2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, - 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, - 0x34a2, 0x34a2, 0x0000, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, - 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, - 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, - 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, - 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, - 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x0000 -}; - -static int -mbc_case_fold(OnigCaseFoldType flag, - const UChar** pp, const UChar* end ARG_UNUSED, UChar* lower, - OnigEncoding enc ARG_UNUSED) -{ - const UChar* p = *pp; - - *lower = ENC_CP1253_TO_LOWER_CASE(*p); - (*pp)++; - return 1; -} - -#if 0 -static int -is_mbc_ambiguous(OnigCaseFoldType flag, - const UChar** pp, const UChar* end) -{ - int v; - const UChar* p = *pp; - - (*pp)++; - v = (EncCP1253_CtypeTable[*p] & (BIT_CTYPE_UPPER | BIT_CTYPE_LOWER)); - if ((v | BIT_CTYPE_LOWER) != 0) { - if (*p == 0xc0 || *p == 0xe0) - return FALSE; - else - return TRUE; - } - - return (v != 0 ? TRUE : FALSE); -} -#endif - -static int -is_code_ctype(OnigCodePoint code, unsigned int ctype, OnigEncoding enc ARG_UNUSED) -{ - if (code < 256) - return ENC_IS_CP1253_CTYPE(code, ctype); - else - return FALSE; -} - -static const OnigPairCaseFoldCodes CaseFoldMap[] = { - { 0xb6, 0xdc }, - { 0xb8, 0xdd }, - { 0xb9, 0xde }, - { 0xba, 0xdf }, - { 0xbc, 0xfc }, - { 0xbe, 0xfd }, - { 0xbf, 0xfe }, - - { 0xc1, 0xe1 }, - { 0xc2, 0xe2 }, - { 0xc3, 0xe3 }, - { 0xc4, 0xe4 }, - { 0xc5, 0xe5 }, - { 0xc6, 0xe6 }, - { 0xc7, 0xe7 }, - { 0xc8, 0xe8 }, - { 0xc9, 0xe9 }, - { 0xca, 0xea }, - { 0xcb, 0xeb }, - { 0xcc, 0xec }, - { 0xcd, 0xed }, - { 0xce, 0xee }, - { 0xcf, 0xef }, - - { 0xd0, 0xf0 }, - { 0xd1, 0xf1 }, - { 0xd2, 0xf2 }, - { 0xd3, 0xf3 }, - { 0xd4, 0xf4 }, - { 0xd5, 0xf5 }, - { 0xd6, 0xf6 }, - { 0xd7, 0xf7 }, - { 0xd8, 0xf8 }, - { 0xd9, 0xf9 }, - { 0xda, 0xfa }, - { 0xdb, 0xfb } -}; - -static int -apply_all_case_fold(OnigCaseFoldType flag, - OnigApplyAllCaseFoldFunc f, void* arg, - OnigEncoding enc ARG_UNUSED) -{ - return onigenc_apply_all_case_fold_with_map( - numberof(CaseFoldMap), CaseFoldMap, 0, - flag, f, arg); -} - -static int -get_case_fold_codes_by_str(OnigCaseFoldType flag, - const OnigUChar* p, const OnigUChar* end, - OnigCaseFoldCodeItem items[], - OnigEncoding enc ARG_UNUSED) -{ - return onigenc_get_case_fold_codes_by_str_with_map( - numberof(CaseFoldMap), CaseFoldMap, 0, - flag, p, end, items); -} - -static int -case_map(OnigCaseFoldType* flagP, const OnigUChar** pp, - const OnigUChar* end, OnigUChar* to, OnigUChar* to_end, - const struct OnigEncodingTypeST* enc) -{ - OnigCodePoint code; - OnigUChar *to_start = to; - OnigCaseFoldType flags = *flagP; - - while (*pp < end && to < to_end) { - code = *(*pp)++; - if (code == 0xF2) { - if (flags & ONIGENC_CASE_UPCASE) { - flags |= ONIGENC_CASE_MODIFIED; - code = 0xD3; - } - else if (flags & ONIGENC_CASE_FOLD) { - flags |= ONIGENC_CASE_MODIFIED; - code = 0xF3; - } - } - else if (code == 0xB5) { - if (flags & ONIGENC_CASE_UPCASE) { - flags |= ONIGENC_CASE_MODIFIED; - code = 0xCC; - } - else if (flags & ONIGENC_CASE_FOLD) { - flags |= ONIGENC_CASE_MODIFIED; - code = 0xEC; - } - } - else if (code == 0xC0 || code == 0xE0 || code == 0xB6) - ; - else if ((EncCP1253_CtypeTable[code] & BIT_CTYPE_UPPER) - && (flags & (ONIGENC_CASE_DOWNCASE | ONIGENC_CASE_FOLD))) { - flags |= ONIGENC_CASE_MODIFIED; - code = ENC_CP1253_TO_LOWER_CASE(code); - } - else if ((EncCP1253_CtypeTable[code] & BIT_CTYPE_LOWER) - && (flags & ONIGENC_CASE_UPCASE)) { - flags |= ONIGENC_CASE_MODIFIED; - if (code == 0xDC) - code = 0xA2; - else if (code >= 0xDD && code <= 0xDF) - code -= 0x25; - else if (code == 0xFC) - code = 0xBC; - else if (code == 0xFD || code == 0xFE) - code -= 0x3F; - else - code -= 0x20; - } - *to++ = code; - if (flags & ONIGENC_CASE_TITLECASE) /* switch from titlecase to lowercase for capitalize */ - flags ^= (ONIGENC_CASE_UPCASE | ONIGENC_CASE_DOWNCASE | ONIGENC_CASE_TITLECASE); - } - *flagP = flags; - return (int )(to - to_start); -} - -OnigEncodingDefine(windows_1253, Windows_1253) = { - onigenc_single_byte_mbc_enc_len, - "Windows-1253", /* name */ - 1, /* max enc length */ - 1, /* min enc length */ - onigenc_is_mbc_newline_0x0a, - onigenc_single_byte_mbc_to_code, - onigenc_single_byte_code_to_mbclen, - onigenc_single_byte_code_to_mbc, - mbc_case_fold, - apply_all_case_fold, - get_case_fold_codes_by_str, - onigenc_minimum_property_name_to_ctype, - is_code_ctype, - onigenc_not_support_get_ctype_code_range, - onigenc_single_byte_left_adjust_char_head, - onigenc_always_true_is_allowed_reverse_match, - case_map, - 0, - ONIGENC_FLAG_NONE, -}; -ENC_ALIAS("CP1253", "Windows-1253") diff --git a/vendor/onig/enc/windows_1254.c b/vendor/onig/enc/windows_1254.c deleted file mode 100644 index 9ae6697..0000000 --- a/vendor/onig/enc/windows_1254.c +++ /dev/null @@ -1,302 +0,0 @@ -/********************************************************************** - windows_1254.c - Oniguruma (regular expression library) -**********************************************************************/ -/*- - * Copyright (c) 2002-2007 K.Kosako - * 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. - */ - -/* - * Name: windows-1254 - * MIBenum: 2254 - * Link: http://www.iana.org/assignments/character-sets - * Link: http://www.microsoft.com/globaldev/reference/sbcs/1254.mspx - * Link: http://en.wikipedia.org/wiki/Windows-1254 - */ - -#include "regenc.h" -#include "iso_8859.h" - -#define ENC_CP1254_TO_LOWER_CASE(c) EncCP1254_ToLowerCaseTable[c] -#define ENC_IS_CP1254_CTYPE(code,ctype) \ - ((EncCP1254_CtypeTable[code] & CTYPE_TO_BIT(ctype)) != 0) - -static const UChar EncCP1254_ToLowerCaseTable[256] = { - '\000', '\001', '\002', '\003', '\004', '\005', '\006', '\007', - '\010', '\011', '\012', '\013', '\014', '\015', '\016', '\017', - '\020', '\021', '\022', '\023', '\024', '\025', '\026', '\027', - '\030', '\031', '\032', '\033', '\034', '\035', '\036', '\037', - '\040', '\041', '\042', '\043', '\044', '\045', '\046', '\047', - '\050', '\051', '\052', '\053', '\054', '\055', '\056', '\057', - '\060', '\061', '\062', '\063', '\064', '\065', '\066', '\067', - '\070', '\071', '\072', '\073', '\074', '\075', '\076', '\077', - '\100', '\141', '\142', '\143', '\144', '\145', '\146', '\147', - '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157', - '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167', - '\170', '\171', '\172', '\133', '\134', '\135', '\136', '\137', - '\140', '\141', '\142', '\143', '\144', '\145', '\146', '\147', - '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157', - '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167', - '\170', '\171', '\172', '\173', '\174', '\175', '\176', '\177', - '\200', '\201', '\202', '\203', '\204', '\205', '\206', '\207', - '\210', '\211', '\232', '\213', '\234', '\215', '\216', '\217', - '\220', '\221', '\222', '\223', '\224', '\225', '\226', '\227', - '\230', '\231', '\232', '\233', '\234', '\235', '\236', '\377', - '\240', '\241', '\242', '\243', '\244', '\245', '\246', '\247', - '\250', '\251', '\252', '\253', '\254', '\255', '\256', '\257', - '\260', '\261', '\262', '\263', '\264', '\265', '\266', '\267', - '\270', '\271', '\272', '\273', '\274', '\275', '\276', '\277', - '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347', - '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357', - '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\327', - '\370', '\371', '\372', '\373', '\374', '\151', '\376', '\337', - '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347', - '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357', - '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\367', - '\370', '\371', '\372', '\373', '\374', '\375', '\376', '\377' -}; - -static const unsigned short EncCP1254_CtypeTable[256] = { - 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, - 0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008, - 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, - 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, - 0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, - 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, - 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, - 0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, - 0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2, - 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, - 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, - 0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0, - 0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2, - 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, - 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, - 0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008, - 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, - 0x0008, 0x0008, 0x34a2, 0x0008, 0x34a2, 0x0008, 0x0008, 0x0008, - 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, - 0x0008, 0x0008, 0x30e2, 0x0008, 0x30e2, 0x0008, 0x0008, 0x34a2, - 0x0284, 0x01a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, - 0x00a0, 0x00a0, 0x30e2, 0x01a0, 0x00a0, 0x01a0, 0x00a0, 0x00a0, - 0x00a0, 0x00a0, 0x10a0, 0x10a0, 0x00a0, 0x30e2, 0x00a0, 0x01a0, - 0x00a0, 0x10a0, 0x30e2, 0x01a0, 0x10a0, 0x10a0, 0x10a0, 0x01a0, - 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, - 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, - 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x00a0, - 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x30e2, - 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, - 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, - 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x00a0, - 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2 -}; - -static int -mbc_case_fold(OnigCaseFoldType flag, - const UChar** pp, const UChar* end ARG_UNUSED, UChar* lower, - OnigEncoding enc ARG_UNUSED) -{ - const UChar* p = *pp; - - if (*p == SHARP_s && (flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { - *lower++ = 's'; - *lower = 's'; - (*pp)++; - return 2; - } - - *lower = ENC_CP1254_TO_LOWER_CASE(*p); - (*pp)++; - return 1; -} - -#if 0 -static int -is_mbc_ambiguous(OnigCaseFoldType flag, const UChar** pp, const UChar* end) -{ - int v; - const UChar* p = *pp; - - if (*p == SHARP_s && (flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { - (*pp)++; - return TRUE; - } - - (*pp)++; - v = (EncCP1254_CtypeTable[*p] & (BIT_CTYPE_UPPER | BIT_CTYPE_LOWER)); - if ((v | BIT_CTYPE_LOWER) != 0) { - /* 0xdf etc.. are lower case letter, but can't convert. */ - if (*p >= 0xaa && *p <= 0xba) - return FALSE; - else - return TRUE; - } - - return (v != 0 ? TRUE : FALSE); -} -#endif - -static int -is_code_ctype(OnigCodePoint code, unsigned int ctype, OnigEncoding enc ARG_UNUSED) -{ - if (code < 256) - return ENC_IS_CP1254_CTYPE(code, ctype); - else - return FALSE; -} - -static const OnigPairCaseFoldCodes CaseFoldMap[] = { - { 0xc0, 0xe0 }, - { 0xc1, 0xe1 }, - { 0xc2, 0xe2 }, - { 0xc3, 0xe3 }, - { 0xc4, 0xe4 }, - { 0xc5, 0xe5 }, - { 0xc6, 0xe6 }, - { 0xc7, 0xe7 }, - { 0xc8, 0xe8 }, - { 0xc9, 0xe9 }, - { 0xca, 0xea }, - { 0xcb, 0xeb }, - { 0xcc, 0xec }, - { 0xcd, 0xed }, - { 0xce, 0xee }, - { 0xcf, 0xef }, - - { 0xd0, 0xf0 }, - { 0xd1, 0xf1 }, - { 0xd2, 0xf2 }, - { 0xd3, 0xf3 }, - { 0xd4, 0xf4 }, - { 0xd5, 0xf5 }, - { 0xd6, 0xf6 }, - { 0xd8, 0xf8 }, - { 0xd9, 0xf9 }, - { 0xda, 0xfa }, - { 0xdb, 0xfb }, - { 0xdc, 0xfc }, - { 0xdd, 0xfd }, - { 0xde, 0xfe } -}; - -static int -apply_all_case_fold(OnigCaseFoldType flag, - OnigApplyAllCaseFoldFunc f, void* arg, - OnigEncoding enc ARG_UNUSED) -{ - return onigenc_apply_all_case_fold_with_map( - numberof(CaseFoldMap), CaseFoldMap, 1, - flag, f, arg); -} - -static int -get_case_fold_codes_by_str(OnigCaseFoldType flag, - const OnigUChar* p, const OnigUChar* end, - OnigCaseFoldCodeItem items[], - OnigEncoding enc ARG_UNUSED) -{ - return onigenc_get_case_fold_codes_by_str_with_map( - numberof(CaseFoldMap), CaseFoldMap, 1, - flag, p, end, items); -} - -#define DOTLESS_i (0xFD) -#define I_WITH_DOT_ABOVE (0xDD) -static int -case_map(OnigCaseFoldType* flagP, const OnigUChar** pp, - const OnigUChar* end, OnigUChar* to, OnigUChar* to_end, - const struct OnigEncodingTypeST* enc) -{ - OnigCodePoint code; - OnigUChar *to_start = to; - OnigCaseFoldType flags = *flagP; - - while (*pp < end && to < to_end) { - code = *(*pp)++; - if (code == SHARP_s) { - if (flags & ONIGENC_CASE_UPCASE) { - flags |= ONIGENC_CASE_MODIFIED; - *to++ = 'S'; - code = (flags & ONIGENC_CASE_TITLECASE) ? 's' : 'S'; - } - else if (flags & ONIGENC_CASE_FOLD) { - flags |= ONIGENC_CASE_MODIFIED; - *to++ = 's'; - code = 's'; - } - } - else if ((EncCP1254_CtypeTable[code] & BIT_CTYPE_UPPER) - && (flags & (ONIGENC_CASE_DOWNCASE | ONIGENC_CASE_FOLD))) { - flags |= ONIGENC_CASE_MODIFIED; - if (code == 'I') - code = flags & ONIGENC_CASE_FOLD_TURKISH_AZERI ? DOTLESS_i : 'i'; - else - code = ENC_CP1254_TO_LOWER_CASE(code); - } - else if (code == 0x83 || code == 0xAA || code == 0xBA || code == 0xB5) - ; - else if ((EncCP1254_CtypeTable[code] & BIT_CTYPE_LOWER) - && (flags & ONIGENC_CASE_UPCASE)) { - flags |= ONIGENC_CASE_MODIFIED; - if (code == 'i') - code = flags & ONIGENC_CASE_FOLD_TURKISH_AZERI ? I_WITH_DOT_ABOVE : 'I'; - else if (code == DOTLESS_i) - code = 'I'; - else if (code == 0x9A || code == 0x9C || code == 0x9E) - code -= 0x10; - else if (code == 0xFF) - code -= 0x60; - else - code -= 0x20; - } - *to++ = code; - if (flags & ONIGENC_CASE_TITLECASE) /* switch from titlecase to lowercase for capitalize */ - flags ^= (ONIGENC_CASE_UPCASE | ONIGENC_CASE_DOWNCASE | ONIGENC_CASE_TITLECASE); - } - *flagP = flags; - return (int )(to - to_start); -} - -OnigEncodingDefine(windows_1254, Windows_1254) = { - onigenc_single_byte_mbc_enc_len, - "Windows-1254", /* name */ - 1, /* max enc length */ - 1, /* min enc length */ - onigenc_is_mbc_newline_0x0a, - onigenc_single_byte_mbc_to_code, - onigenc_single_byte_code_to_mbclen, - onigenc_single_byte_code_to_mbc, - mbc_case_fold, - apply_all_case_fold, - get_case_fold_codes_by_str, - onigenc_minimum_property_name_to_ctype, - is_code_ctype, - onigenc_not_support_get_ctype_code_range, - onigenc_single_byte_left_adjust_char_head, - onigenc_always_true_is_allowed_reverse_match, - case_map, - 0, - ONIGENC_FLAG_NONE, -}; -ENC_ALIAS("CP1254", "Windows-1254") diff --git a/vendor/onig/enc/windows_1257.c b/vendor/onig/enc/windows_1257.c deleted file mode 100644 index 936a94a..0000000 --- a/vendor/onig/enc/windows_1257.c +++ /dev/null @@ -1,304 +0,0 @@ -/********************************************************************** - windows_1257.c - Oniguruma (regular expression library) -**********************************************************************/ -/*- - * Copyright (c) 2002-2007 K.Kosako - * 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. - */ - -#include "regenc.h" -#include "iso_8859.h" - -/* - * Name: windows-1257 - * MIBenum: 2257 - * Link: http://www.iana.org/assignments/character-sets - * Link: http://www.microsoft.com/globaldev/reference/sbcs/1257.mspx - * Link: http://en.wikipedia.org/wiki/Windows-1257 - */ - -#define ENC_CP1252_TO_LOWER_CASE(c) EncCP1252_ToLowerCaseTable[c] -#define ENC_IS_CP1252_CTYPE(code,ctype) \ - ((EncCP1252_CtypeTable[code] & CTYPE_TO_BIT(ctype)) != 0) - -static const UChar EncCP1252_ToLowerCaseTable[256] = { - '\000', '\001', '\002', '\003', '\004', '\005', '\006', '\007', - '\010', '\011', '\012', '\013', '\014', '\015', '\016', '\017', - '\020', '\021', '\022', '\023', '\024', '\025', '\026', '\027', - '\030', '\031', '\032', '\033', '\034', '\035', '\036', '\037', - '\040', '\041', '\042', '\043', '\044', '\045', '\046', '\047', - '\050', '\051', '\052', '\053', '\054', '\055', '\056', '\057', - '\060', '\061', '\062', '\063', '\064', '\065', '\066', '\067', - '\070', '\071', '\072', '\073', '\074', '\075', '\076', '\077', - '\100', '\141', '\142', '\143', '\144', '\145', '\146', '\147', - '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157', - '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167', - '\170', '\171', '\172', '\133', '\134', '\135', '\136', '\137', - '\140', '\141', '\142', '\143', '\144', '\145', '\146', '\147', - '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157', - '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167', - '\170', '\171', '\172', '\173', '\174', '\175', '\176', '\177', - '\200', '\201', '\202', '\203', '\204', '\205', '\206', '\207', - '\210', '\211', '\212', '\213', '\214', '\215', '\216', '\217', - '\220', '\221', '\222', '\223', '\224', '\225', '\226', '\227', - '\230', '\231', '\232', '\233', '\234', '\235', '\236', '\237', - '\240', '\241', '\242', '\243', '\244', '\245', '\246', '\247', - '\270', '\251', '\272', '\253', '\254', '\255', '\256', '\277', - '\260', '\261', '\262', '\263', '\264', '\265', '\266', '\267', - '\270', '\271', '\272', '\273', '\274', '\275', '\276', '\277', - '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347', - '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357', - '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\327', - '\370', '\371', '\372', '\373', '\374', '\375', '\376', '\337', - '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347', - '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357', - '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\367', - '\370', '\371', '\372', '\373', '\374', '\375', '\376', '\377' -}; - -static const unsigned short EncCP1252_CtypeTable[256] = { - 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, - 0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008, - 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, - 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, - 0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, - 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, - 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, - 0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, - 0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2, - 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, - 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, - 0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0, - 0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2, - 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, - 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, - 0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008, - 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, - 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, - 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, - 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, - 0x0284, 0x01a0, 0x00a0, 0x00a0, 0x00a0, 0x01a0, 0x00a0, 0x00a0, - 0x34a2, 0x00a0, 0x34a2, 0x01a0, 0x00a0, 0x01a0, 0x00a0, 0x34a2, - 0x00a0, 0x00a0, 0x10a0, 0x10a0, 0x01a0, 0x30e2, 0x00a0, 0x01a0, - 0x30e2, 0x10a0, 0x30e2, 0x01a0, 0x10a0, 0x10a0, 0x10a0, 0x30e2, - 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, - 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, - 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x00a0, - 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x30e2, - 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, - 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, - 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x00a0, - 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x01a0 -}; - -static int -mbc_case_fold(OnigCaseFoldType flag, - const UChar** pp, const UChar* end ARG_UNUSED, - UChar* lower, OnigEncoding enc ARG_UNUSED) -{ - const UChar* p = *pp; - - if (*p == SHARP_s && (flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { - *lower++ = 's'; - *lower = 's'; - (*pp)++; - return 2; - } - - *lower = ENC_CP1252_TO_LOWER_CASE(*p); - (*pp)++; - return 1; -} - -#if 0 -static int -is_mbc_ambiguous(OnigCaseFoldType flag, const UChar** pp, const UChar* end) -{ - int v; - const UChar* p = *pp; - - if (*p == SHARP_s && (flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { - (*pp)++; - return TRUE; - } - - (*pp)++; - v = (EncCP1252_CtypeTable[*p] & (BIT_CTYPE_UPPER | BIT_CTYPE_LOWER)); - if ((v | BIT_CTYPE_LOWER) != 0) { - /* 0xdf, 0xb5 are lower case letter, but can't convert. */ - if (*p == 0xb5) - return FALSE; - else - return TRUE; - } - - return (v != 0 ? TRUE : FALSE); -} -#endif - -static int -is_code_ctype(OnigCodePoint code, unsigned int ctype, OnigEncoding enc ARG_UNUSED) -{ - if (code < 256) - return ENC_IS_CP1252_CTYPE(code, ctype); - else - return FALSE; -} - -static const OnigPairCaseFoldCodes CaseFoldMap[] = { - { 0xa8, 0xb8 }, - { 0xaa, 0xba }, - { 0xaf, 0xbf }, - - { 0xc0, 0xe0 }, - { 0xc1, 0xe1 }, - { 0xc2, 0xe2 }, - { 0xc3, 0xe3 }, - { 0xc4, 0xe4 }, - { 0xc5, 0xe5 }, - { 0xc6, 0xe6 }, - { 0xc7, 0xe7 }, - { 0xc8, 0xe8 }, - { 0xc9, 0xe9 }, - { 0xca, 0xea }, - { 0xcb, 0xeb }, - { 0xcc, 0xec }, - { 0xcd, 0xed }, - { 0xce, 0xee }, - { 0xcf, 0xef }, - - { 0xd0, 0xf0 }, - { 0xd1, 0xf1 }, - { 0xd2, 0xf2 }, - { 0xd3, 0xf3 }, - { 0xd4, 0xf4 }, - { 0xd5, 0xf5 }, - { 0xd6, 0xf6 }, - { 0xd8, 0xf8 }, - { 0xd9, 0xf9 }, - { 0xda, 0xfa }, - { 0xdb, 0xfb }, - { 0xdc, 0xfc }, - { 0xdd, 0xfd }, - { 0xde, 0xfe } -}; - -static int -apply_all_case_fold(OnigCaseFoldType flag, - OnigApplyAllCaseFoldFunc f, void* arg, - OnigEncoding enc ARG_UNUSED) -{ - return onigenc_apply_all_case_fold_with_map( - numberof(CaseFoldMap), CaseFoldMap, 1, - flag, f, arg); -} - -static int -get_case_fold_codes_by_str(OnigCaseFoldType flag, - const OnigUChar* p, const OnigUChar* end, - OnigCaseFoldCodeItem items[], - OnigEncoding enc ARG_UNUSED) -{ - return onigenc_get_case_fold_codes_by_str_with_map( - numberof(CaseFoldMap), CaseFoldMap, 1, - flag, p, end, items); -} - -#define DOTLESS_i (0xB9) -#define I_WITH_DOT_ABOVE (0xA9) -static int -case_map(OnigCaseFoldType* flagP, const OnigUChar** pp, - const OnigUChar* end, OnigUChar* to, OnigUChar* to_end, - const struct OnigEncodingTypeST* enc) -{ - OnigCodePoint code; - OnigUChar *to_start = to; - OnigCaseFoldType flags = *flagP; - - while (*pp < end && to < to_end) { - code = *(*pp)++; - if (code == SHARP_s) { - if (flags & ONIGENC_CASE_UPCASE) { - flags |= ONIGENC_CASE_MODIFIED; - *to++ = 'S'; - code = (flags & ONIGENC_CASE_TITLECASE) ? 's' : 'S'; - } - else if (flags & ONIGENC_CASE_FOLD) { - flags |= ONIGENC_CASE_MODIFIED; - *to++ = 's'; - code = 's'; - } - } - else if (code == 0xB5) - ; - else if ((EncCP1252_CtypeTable[code] & BIT_CTYPE_UPPER) - && (flags & (ONIGENC_CASE_DOWNCASE | ONIGENC_CASE_FOLD))) { - flags |= ONIGENC_CASE_MODIFIED; - if (code == 'I') - code = flags & ONIGENC_CASE_FOLD_TURKISH_AZERI ? DOTLESS_i : 'i'; - else - code = ENC_CP1252_TO_LOWER_CASE(code); - } - else if ((EncCP1252_CtypeTable[code]&BIT_CTYPE_LOWER) - && (flags & ONIGENC_CASE_UPCASE)) { - flags |= ONIGENC_CASE_MODIFIED; - if (code == 'i') - code = flags & ONIGENC_CASE_FOLD_TURKISH_AZERI ? I_WITH_DOT_ABOVE : 'I'; - else if (code == DOTLESS_i) - code = 'I'; - else if (code >= 0xB0 && code <= 0xBF) - code -= 0x10; - else - code -= 0x20; - } - *to++ = code; - if (flags & ONIGENC_CASE_TITLECASE) /* switch from titlecase to lowercase for capitalize */ - flags ^= (ONIGENC_CASE_UPCASE | ONIGENC_CASE_DOWNCASE | ONIGENC_CASE_TITLECASE); - } - *flagP = flags; - return (int )(to - to_start); -} - -OnigEncodingDefine(windows_1257, Windows_1257) = { - onigenc_single_byte_mbc_enc_len, - "Windows-1257", /* name */ - 1, /* max enc length */ - 1, /* min enc length */ - onigenc_is_mbc_newline_0x0a, - onigenc_single_byte_mbc_to_code, - onigenc_single_byte_code_to_mbclen, - onigenc_single_byte_code_to_mbc, - mbc_case_fold, - apply_all_case_fold, - get_case_fold_codes_by_str, - onigenc_minimum_property_name_to_ctype, - is_code_ctype, - onigenc_not_support_get_ctype_code_range, - onigenc_single_byte_left_adjust_char_head, - onigenc_always_true_is_allowed_reverse_match, - case_map, - 0, - ONIGENC_FLAG_NONE, -}; -ENC_ALIAS("CP1257", "Windows-1257") diff --git a/vendor/onig/enc/windows_31j.c b/vendor/onig/enc/windows_31j.c deleted file mode 100644 index e3a468f..0000000 --- a/vendor/onig/enc/windows_31j.c +++ /dev/null @@ -1,81 +0,0 @@ -/********************************************************************** - windows_31j.c - Onigmo (Oniguruma-mod) (regular expression library) -**********************************************************************/ -/*- - * Copyright (c) 2002-2009 K.Kosako - * Copyright (c) 2011 K.Takata - * 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 ENC_CP932 -#include "shift_jis.h" - -OnigEncodingDefine(windows_31j, Windows_31J) = { - mbc_enc_len, - "Windows-31J", /* name */ - 2, /* max byte length */ - 1, /* min byte length */ - onigenc_is_mbc_newline_0x0a, - mbc_to_code, - code_to_mbclen, - code_to_mbc, - mbc_case_fold, - apply_all_case_fold, - get_case_fold_codes_by_str, - property_name_to_ctype, - is_code_ctype, - get_ctype_code_range, - left_adjust_char_head, - is_allowed_reverse_match, - onigenc_ascii_only_case_map, - 0, - ONIGENC_FLAG_NONE, -}; -/* - * Name: Windows-31J - * MIBenum: 2024 - * Link: http://www.iana.org/assignments/character-sets - * Link: http://www.microsoft.com/globaldev/reference/dbcs/932.mspx - * Link: http://ja.wikipedia.org/wiki/Windows-31J - * Link: http://source.icu-project.org/repos/icu/data/trunk/charset/data/ucm/windows-932-2000.ucm - * - * Windows Standard Character Set and its mapping to Unicode by Microsoft. - * Since 1.9.3, SJIS is the alias of Windows-31J because its character - * set is usually this one even if its mapping may differ. - */ -ENC_ALIAS("CP932", "Windows-31J") -ENC_ALIAS("csWindows31J", "Windows-31J") /* IANA. IE6 don't accept Windows-31J but csWindows31J. */ -ENC_ALIAS("SJIS", "Windows-31J") - -/* - * Name: PCK - * Link: http://download.oracle.com/docs/cd/E19253-01/819-0606/x-2chn0/index.html - * Link: http://download.oracle.com/docs/cd/E19253-01/819-0606/appb-pckwarn-1/index.html - * - * Solaris's SJIS variant. Its set is Windows Standard Character Set; it - * consists JIS X 0201 Latin (US-ASCII), JIS X 0201 Katakana, JIS X 0208, NEC - * special characters, NEC-selected IBM extended characters, and IBM extended - * characters. Solaris's iconv seems to use SJIS-open. - */ -ENC_ALIAS("PCK", "Windows-31J") diff --git a/vendor/onig/ltmain.sh b/vendor/onig/ltmain.sh deleted file mode 100644 index 8a65ad3..0000000 --- a/vendor/onig/ltmain.sh +++ /dev/null @@ -1,11150 +0,0 @@ -#! /bin/sh -## DO NOT EDIT - This file generated from /usr/src/ports/libtool/libtool-2.4.6-4.x86_64/src/libtool-2.4.6/build-aux/ltmain.in -## by inline-source v2014-01-03.01 - -# libtool (GNU libtool) 2.4.6 -# Provide generalized library-building support services. -# Written by Gordon Matzigkeit , 1996 - -# Copyright (C) 1996-2015 Free Software Foundation, Inc. -# This is free software; see the source for copying conditions. There is NO -# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -# GNU Libtool is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# As a special exception to the GNU General Public License, -# if you distribute this file as part of a program or library that -# is built using GNU Libtool, you may include this file under the -# same distribution terms that you use for the rest of that program. -# -# GNU Libtool is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - - -PROGRAM=libtool -PACKAGE=libtool -VERSION=2.4.6 -package_revision=2.4.6 - - -## ------ ## -## Usage. ## -## ------ ## - -# Run './libtool --help' for help with using this script from the -# command line. - - -## ------------------------------- ## -## User overridable command paths. ## -## ------------------------------- ## - -# After configure completes, it has a better idea of some of the -# shell tools we need than the defaults used by the functions shared -# with bootstrap, so set those here where they can still be over- -# ridden by the user, but otherwise take precedence. - -: ${AUTOCONF="autoconf"} -: ${AUTOMAKE="automake"} - - -## -------------------------- ## -## Source external libraries. ## -## -------------------------- ## - -# Much of our low-level functionality needs to be sourced from external -# libraries, which are installed to $pkgauxdir. - -# Set a version string for this script. -scriptversion=2015-01-20.17; # UTC - -# General shell script boiler plate, and helper functions. -# Written by Gary V. Vaughan, 2004 - -# Copyright (C) 2004-2015 Free Software Foundation, Inc. -# This is free software; see the source for copying conditions. There is NO -# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or -# (at your option) any later version. - -# As a special exception to the GNU General Public License, if you distribute -# this file as part of a program or library that is built using GNU Libtool, -# you may include this file under the same distribution terms that you use -# for the rest of that program. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNES FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -# Please report bugs or propose patches to gary@gnu.org. - - -## ------ ## -## Usage. ## -## ------ ## - -# Evaluate this file near the top of your script to gain access to -# the functions and variables defined here: -# -# . `echo "$0" | ${SED-sed} 's|[^/]*$||'`/build-aux/funclib.sh -# -# If you need to override any of the default environment variable -# settings, do that before evaluating this file. - - -## -------------------- ## -## Shell normalisation. ## -## -------------------- ## - -# Some shells need a little help to be as Bourne compatible as possible. -# Before doing anything else, make sure all that help has been provided! - -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac -fi - -# NLS nuisances: We save the old values in case they are required later. -_G_user_locale= -_G_safe_locale= -for _G_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES -do - eval "if test set = \"\${$_G_var+set}\"; then - save_$_G_var=\$$_G_var - $_G_var=C - export $_G_var - _G_user_locale=\"$_G_var=\\\$save_\$_G_var; \$_G_user_locale\" - _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\" - fi" -done - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -# Make sure IFS has a sensible default -sp=' ' -nl=' -' -IFS="$sp $nl" - -# There are apparently some retarded systems that use ';' as a PATH separator! -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - - -## ------------------------- ## -## Locate command utilities. ## -## ------------------------- ## - - -# func_executable_p FILE -# ---------------------- -# Check that FILE is an executable regular file. -func_executable_p () -{ - test -f "$1" && test -x "$1" -} - - -# func_path_progs PROGS_LIST CHECK_FUNC [PATH] -# -------------------------------------------- -# Search for either a program that responds to --version with output -# containing "GNU", or else returned by CHECK_FUNC otherwise, by -# trying all the directories in PATH with each of the elements of -# PROGS_LIST. -# -# CHECK_FUNC should accept the path to a candidate program, and -# set $func_check_prog_result if it truncates its output less than -# $_G_path_prog_max characters. -func_path_progs () -{ - _G_progs_list=$1 - _G_check_func=$2 - _G_PATH=${3-"$PATH"} - - _G_path_prog_max=0 - _G_path_prog_found=false - _G_save_IFS=$IFS; IFS=${PATH_SEPARATOR-:} - for _G_dir in $_G_PATH; do - IFS=$_G_save_IFS - test -z "$_G_dir" && _G_dir=. - for _G_prog_name in $_G_progs_list; do - for _exeext in '' .EXE; do - _G_path_prog=$_G_dir/$_G_prog_name$_exeext - func_executable_p "$_G_path_prog" || continue - case `"$_G_path_prog" --version 2>&1` in - *GNU*) func_path_progs_result=$_G_path_prog _G_path_prog_found=: ;; - *) $_G_check_func $_G_path_prog - func_path_progs_result=$func_check_prog_result - ;; - esac - $_G_path_prog_found && break 3 - done - done - done - IFS=$_G_save_IFS - test -z "$func_path_progs_result" && { - echo "no acceptable sed could be found in \$PATH" >&2 - exit 1 - } -} - - -# We want to be able to use the functions in this file before configure -# has figured out where the best binaries are kept, which means we have -# to search for them ourselves - except when the results are already set -# where we skip the searches. - -# Unless the user overrides by setting SED, search the path for either GNU -# sed, or the sed that truncates its output the least. -test -z "$SED" && { - _G_sed_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ - for _G_i in 1 2 3 4 5 6 7; do - _G_sed_script=$_G_sed_script$nl$_G_sed_script - done - echo "$_G_sed_script" 2>/dev/null | sed 99q >conftest.sed - _G_sed_script= - - func_check_prog_sed () - { - _G_path_prog=$1 - - _G_count=0 - printf 0123456789 >conftest.in - while : - do - cat conftest.in conftest.in >conftest.tmp - mv conftest.tmp conftest.in - cp conftest.in conftest.nl - echo '' >> conftest.nl - "$_G_path_prog" -f conftest.sed conftest.out 2>/dev/null || break - diff conftest.out conftest.nl >/dev/null 2>&1 || break - _G_count=`expr $_G_count + 1` - if test "$_G_count" -gt "$_G_path_prog_max"; then - # Best one so far, save it but keep looking for a better one - func_check_prog_result=$_G_path_prog - _G_path_prog_max=$_G_count - fi - # 10*(2^10) chars as input seems more than enough - test 10 -lt "$_G_count" && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out - } - - func_path_progs "sed gsed" func_check_prog_sed $PATH:/usr/xpg4/bin - rm -f conftest.sed - SED=$func_path_progs_result -} - - -# Unless the user overrides by setting GREP, search the path for either GNU -# grep, or the grep that truncates its output the least. -test -z "$GREP" && { - func_check_prog_grep () - { - _G_path_prog=$1 - - _G_count=0 - _G_path_prog_max=0 - printf 0123456789 >conftest.in - while : - do - cat conftest.in conftest.in >conftest.tmp - mv conftest.tmp conftest.in - cp conftest.in conftest.nl - echo 'GREP' >> conftest.nl - "$_G_path_prog" -e 'GREP$' -e '-(cannot match)-' conftest.out 2>/dev/null || break - diff conftest.out conftest.nl >/dev/null 2>&1 || break - _G_count=`expr $_G_count + 1` - if test "$_G_count" -gt "$_G_path_prog_max"; then - # Best one so far, save it but keep looking for a better one - func_check_prog_result=$_G_path_prog - _G_path_prog_max=$_G_count - fi - # 10*(2^10) chars as input seems more than enough - test 10 -lt "$_G_count" && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out - } - - func_path_progs "grep ggrep" func_check_prog_grep $PATH:/usr/xpg4/bin - GREP=$func_path_progs_result -} - - -## ------------------------------- ## -## User overridable command paths. ## -## ------------------------------- ## - -# All uppercase variable names are used for environment variables. These -# variables can be overridden by the user before calling a script that -# uses them if a suitable command of that name is not already available -# in the command search PATH. - -: ${CP="cp -f"} -: ${ECHO="printf %s\n"} -: ${EGREP="$GREP -E"} -: ${FGREP="$GREP -F"} -: ${LN_S="ln -s"} -: ${MAKE="make"} -: ${MKDIR="mkdir"} -: ${MV="mv -f"} -: ${RM="rm -f"} -: ${SHELL="${CONFIG_SHELL-/bin/sh}"} - - -## -------------------- ## -## Useful sed snippets. ## -## -------------------- ## - -sed_dirname='s|/[^/]*$||' -sed_basename='s|^.*/||' - -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -sed_quote_subst='s|\([`"$\\]\)|\\\1|g' - -# Same as above, but do not quote variable references. -sed_double_quote_subst='s/\(["`\\]\)/\\\1/g' - -# Sed substitution that turns a string into a regex matching for the -# string literally. -sed_make_literal_regex='s|[].[^$\\*\/]|\\&|g' - -# Sed substitution that converts a w32 file name or path -# that contains forward slashes, into one that contains -# (escaped) backslashes. A very naive implementation. -sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' - -# Re-'\' parameter expansions in output of sed_double_quote_subst that -# were '\'-ed in input to the same. If an odd number of '\' preceded a -# '$' in input to sed_double_quote_subst, that '$' was protected from -# expansion. Since each input '\' is now two '\'s, look for any number -# of runs of four '\'s followed by two '\'s and then a '$'. '\' that '$'. -_G_bs='\\' -_G_bs2='\\\\' -_G_bs4='\\\\\\\\' -_G_dollar='\$' -sed_double_backslash="\ - s/$_G_bs4/&\\ -/g - s/^$_G_bs2$_G_dollar/$_G_bs&/ - s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g - s/\n//g" - - -## ----------------- ## -## Global variables. ## -## ----------------- ## - -# Except for the global variables explicitly listed below, the following -# functions in the '^func_' namespace, and the '^require_' namespace -# variables initialised in the 'Resource management' section, sourcing -# this file will not pollute your global namespace with anything -# else. There's no portable way to scope variables in Bourne shell -# though, so actually running these functions will sometimes place -# results into a variable named after the function, and often use -# temporary variables in the '^_G_' namespace. If you are careful to -# avoid using those namespaces casually in your sourcing script, things -# should continue to work as you expect. And, of course, you can freely -# overwrite any of the functions or variables defined here before -# calling anything to customize them. - -EXIT_SUCCESS=0 -EXIT_FAILURE=1 -EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. -EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. - -# Allow overriding, eg assuming that you follow the convention of -# putting '$debug_cmd' at the start of all your functions, you can get -# bash to show function call trace with: -# -# debug_cmd='eval echo "${FUNCNAME[0]} $*" >&2' bash your-script-name -debug_cmd=${debug_cmd-":"} -exit_cmd=: - -# By convention, finish your script with: -# -# exit $exit_status -# -# so that you can set exit_status to non-zero if you want to indicate -# something went wrong during execution without actually bailing out at -# the point of failure. -exit_status=$EXIT_SUCCESS - -# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh -# is ksh but when the shell is invoked as "sh" and the current value of -# the _XPG environment variable is not equal to 1 (one), the special -# positional parameter $0, within a function call, is the name of the -# function. -progpath=$0 - -# The name of this program. -progname=`$ECHO "$progpath" |$SED "$sed_basename"` - -# Make sure we have an absolute progpath for reexecution: -case $progpath in - [\\/]*|[A-Za-z]:\\*) ;; - *[\\/]*) - progdir=`$ECHO "$progpath" |$SED "$sed_dirname"` - progdir=`cd "$progdir" && pwd` - progpath=$progdir/$progname - ;; - *) - _G_IFS=$IFS - IFS=${PATH_SEPARATOR-:} - for progdir in $PATH; do - IFS=$_G_IFS - test -x "$progdir/$progname" && break - done - IFS=$_G_IFS - test -n "$progdir" || progdir=`pwd` - progpath=$progdir/$progname - ;; -esac - - -## ----------------- ## -## Standard options. ## -## ----------------- ## - -# The following options affect the operation of the functions defined -# below, and should be set appropriately depending on run-time para- -# meters passed on the command line. - -opt_dry_run=false -opt_quiet=false -opt_verbose=false - -# Categories 'all' and 'none' are always available. Append any others -# you will pass as the first argument to func_warning from your own -# code. -warning_categories= - -# By default, display warnings according to 'opt_warning_types'. Set -# 'warning_func' to ':' to elide all warnings, or func_fatal_error to -# treat the next displayed warning as a fatal error. -warning_func=func_warn_and_continue - -# Set to 'all' to display all warnings, 'none' to suppress all -# warnings, or a space delimited list of some subset of -# 'warning_categories' to display only the listed warnings. -opt_warning_types=all - - -## -------------------- ## -## Resource management. ## -## -------------------- ## - -# This section contains definitions for functions that each ensure a -# particular resource (a file, or a non-empty configuration variable for -# example) is available, and if appropriate to extract default values -# from pertinent package files. Call them using their associated -# 'require_*' variable to ensure that they are executed, at most, once. -# -# It's entirely deliberate that calling these functions can set -# variables that don't obey the namespace limitations obeyed by the rest -# of this file, in order that that they be as useful as possible to -# callers. - - -# require_term_colors -# ------------------- -# Allow display of bold text on terminals that support it. -require_term_colors=func_require_term_colors -func_require_term_colors () -{ - $debug_cmd - - test -t 1 && { - # COLORTERM and USE_ANSI_COLORS environment variables take - # precedence, because most terminfo databases neglect to describe - # whether color sequences are supported. - test -n "${COLORTERM+set}" && : ${USE_ANSI_COLORS="1"} - - if test 1 = "$USE_ANSI_COLORS"; then - # Standard ANSI escape sequences - tc_reset='' - tc_bold=''; tc_standout='' - tc_red=''; tc_green='' - tc_blue=''; tc_cyan='' - else - # Otherwise trust the terminfo database after all. - test -n "`tput sgr0 2>/dev/null`" && { - tc_reset=`tput sgr0` - test -n "`tput bold 2>/dev/null`" && tc_bold=`tput bold` - tc_standout=$tc_bold - test -n "`tput smso 2>/dev/null`" && tc_standout=`tput smso` - test -n "`tput setaf 1 2>/dev/null`" && tc_red=`tput setaf 1` - test -n "`tput setaf 2 2>/dev/null`" && tc_green=`tput setaf 2` - test -n "`tput setaf 4 2>/dev/null`" && tc_blue=`tput setaf 4` - test -n "`tput setaf 5 2>/dev/null`" && tc_cyan=`tput setaf 5` - } - fi - } - - require_term_colors=: -} - - -## ----------------- ## -## Function library. ## -## ----------------- ## - -# This section contains a variety of useful functions to call in your -# scripts. Take note of the portable wrappers for features provided by -# some modern shells, which will fall back to slower equivalents on -# less featureful shells. - - -# func_append VAR VALUE -# --------------------- -# Append VALUE onto the existing contents of VAR. - - # We should try to minimise forks, especially on Windows where they are - # unreasonably slow, so skip the feature probes when bash or zsh are - # being used: - if test set = "${BASH_VERSION+set}${ZSH_VERSION+set}"; then - : ${_G_HAVE_ARITH_OP="yes"} - : ${_G_HAVE_XSI_OPS="yes"} - # The += operator was introduced in bash 3.1 - case $BASH_VERSION in - [12].* | 3.0 | 3.0*) ;; - *) - : ${_G_HAVE_PLUSEQ_OP="yes"} - ;; - esac - fi - - # _G_HAVE_PLUSEQ_OP - # Can be empty, in which case the shell is probed, "yes" if += is - # useable or anything else if it does not work. - test -z "$_G_HAVE_PLUSEQ_OP" \ - && (eval 'x=a; x+=" b"; test "a b" = "$x"') 2>/dev/null \ - && _G_HAVE_PLUSEQ_OP=yes - -if test yes = "$_G_HAVE_PLUSEQ_OP" -then - # This is an XSI compatible shell, allowing a faster implementation... - eval 'func_append () - { - $debug_cmd - - eval "$1+=\$2" - }' -else - # ...otherwise fall back to using expr, which is often a shell builtin. - func_append () - { - $debug_cmd - - eval "$1=\$$1\$2" - } -fi - - -# func_append_quoted VAR VALUE -# ---------------------------- -# Quote VALUE and append to the end of shell variable VAR, separated -# by a space. -if test yes = "$_G_HAVE_PLUSEQ_OP"; then - eval 'func_append_quoted () - { - $debug_cmd - - func_quote_for_eval "$2" - eval "$1+=\\ \$func_quote_for_eval_result" - }' -else - func_append_quoted () - { - $debug_cmd - - func_quote_for_eval "$2" - eval "$1=\$$1\\ \$func_quote_for_eval_result" - } -fi - - -# func_append_uniq VAR VALUE -# -------------------------- -# Append unique VALUE onto the existing contents of VAR, assuming -# entries are delimited by the first character of VALUE. For example: -# -# func_append_uniq options " --another-option option-argument" -# -# will only append to $options if " --another-option option-argument " -# is not already present somewhere in $options already (note spaces at -# each end implied by leading space in second argument). -func_append_uniq () -{ - $debug_cmd - - eval _G_current_value='`$ECHO $'$1'`' - _G_delim=`expr "$2" : '\(.\)'` - - case $_G_delim$_G_current_value$_G_delim in - *"$2$_G_delim"*) ;; - *) func_append "$@" ;; - esac -} - - -# func_arith TERM... -# ------------------ -# Set func_arith_result to the result of evaluating TERMs. - test -z "$_G_HAVE_ARITH_OP" \ - && (eval 'test 2 = $(( 1 + 1 ))') 2>/dev/null \ - && _G_HAVE_ARITH_OP=yes - -if test yes = "$_G_HAVE_ARITH_OP"; then - eval 'func_arith () - { - $debug_cmd - - func_arith_result=$(( $* )) - }' -else - func_arith () - { - $debug_cmd - - func_arith_result=`expr "$@"` - } -fi - - -# func_basename FILE -# ------------------ -# Set func_basename_result to FILE with everything up to and including -# the last / stripped. -if test yes = "$_G_HAVE_XSI_OPS"; then - # If this shell supports suffix pattern removal, then use it to avoid - # forking. Hide the definitions single quotes in case the shell chokes - # on unsupported syntax... - _b='func_basename_result=${1##*/}' - _d='case $1 in - */*) func_dirname_result=${1%/*}$2 ;; - * ) func_dirname_result=$3 ;; - esac' - -else - # ...otherwise fall back to using sed. - _b='func_basename_result=`$ECHO "$1" |$SED "$sed_basename"`' - _d='func_dirname_result=`$ECHO "$1" |$SED "$sed_dirname"` - if test "X$func_dirname_result" = "X$1"; then - func_dirname_result=$3 - else - func_append func_dirname_result "$2" - fi' -fi - -eval 'func_basename () -{ - $debug_cmd - - '"$_b"' -}' - - -# func_dirname FILE APPEND NONDIR_REPLACEMENT -# ------------------------------------------- -# Compute the dirname of FILE. If nonempty, add APPEND to the result, -# otherwise set result to NONDIR_REPLACEMENT. -eval 'func_dirname () -{ - $debug_cmd - - '"$_d"' -}' - - -# func_dirname_and_basename FILE APPEND NONDIR_REPLACEMENT -# -------------------------------------------------------- -# Perform func_basename and func_dirname in a single function -# call: -# dirname: Compute the dirname of FILE. If nonempty, -# add APPEND to the result, otherwise set result -# to NONDIR_REPLACEMENT. -# value returned in "$func_dirname_result" -# basename: Compute filename of FILE. -# value retuned in "$func_basename_result" -# For efficiency, we do not delegate to the functions above but instead -# duplicate the functionality here. -eval 'func_dirname_and_basename () -{ - $debug_cmd - - '"$_b"' - '"$_d"' -}' - - -# func_echo ARG... -# ---------------- -# Echo program name prefixed message. -func_echo () -{ - $debug_cmd - - _G_message=$* - - func_echo_IFS=$IFS - IFS=$nl - for _G_line in $_G_message; do - IFS=$func_echo_IFS - $ECHO "$progname: $_G_line" - done - IFS=$func_echo_IFS -} - - -# func_echo_all ARG... -# -------------------- -# Invoke $ECHO with all args, space-separated. -func_echo_all () -{ - $ECHO "$*" -} - - -# func_echo_infix_1 INFIX ARG... -# ------------------------------ -# Echo program name, followed by INFIX on the first line, with any -# additional lines not showing INFIX. -func_echo_infix_1 () -{ - $debug_cmd - - $require_term_colors - - _G_infix=$1; shift - _G_indent=$_G_infix - _G_prefix="$progname: $_G_infix: " - _G_message=$* - - # Strip color escape sequences before counting printable length - for _G_tc in "$tc_reset" "$tc_bold" "$tc_standout" "$tc_red" "$tc_green" "$tc_blue" "$tc_cyan" - do - test -n "$_G_tc" && { - _G_esc_tc=`$ECHO "$_G_tc" | $SED "$sed_make_literal_regex"` - _G_indent=`$ECHO "$_G_indent" | $SED "s|$_G_esc_tc||g"` - } - done - _G_indent="$progname: "`echo "$_G_indent" | $SED 's|.| |g'`" " ## exclude from sc_prohibit_nested_quotes - - func_echo_infix_1_IFS=$IFS - IFS=$nl - for _G_line in $_G_message; do - IFS=$func_echo_infix_1_IFS - $ECHO "$_G_prefix$tc_bold$_G_line$tc_reset" >&2 - _G_prefix=$_G_indent - done - IFS=$func_echo_infix_1_IFS -} - - -# func_error ARG... -# ----------------- -# Echo program name prefixed message to standard error. -func_error () -{ - $debug_cmd - - $require_term_colors - - func_echo_infix_1 " $tc_standout${tc_red}error$tc_reset" "$*" >&2 -} - - -# func_fatal_error ARG... -# ----------------------- -# Echo program name prefixed message to standard error, and exit. -func_fatal_error () -{ - $debug_cmd - - func_error "$*" - exit $EXIT_FAILURE -} - - -# func_grep EXPRESSION FILENAME -# ----------------------------- -# Check whether EXPRESSION matches any line of FILENAME, without output. -func_grep () -{ - $debug_cmd - - $GREP "$1" "$2" >/dev/null 2>&1 -} - - -# func_len STRING -# --------------- -# Set func_len_result to the length of STRING. STRING may not -# start with a hyphen. - test -z "$_G_HAVE_XSI_OPS" \ - && (eval 'x=a/b/c; - test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ - && _G_HAVE_XSI_OPS=yes - -if test yes = "$_G_HAVE_XSI_OPS"; then - eval 'func_len () - { - $debug_cmd - - func_len_result=${#1} - }' -else - func_len () - { - $debug_cmd - - func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` - } -fi - - -# func_mkdir_p DIRECTORY-PATH -# --------------------------- -# Make sure the entire path to DIRECTORY-PATH is available. -func_mkdir_p () -{ - $debug_cmd - - _G_directory_path=$1 - _G_dir_list= - - if test -n "$_G_directory_path" && test : != "$opt_dry_run"; then - - # Protect directory names starting with '-' - case $_G_directory_path in - -*) _G_directory_path=./$_G_directory_path ;; - esac - - # While some portion of DIR does not yet exist... - while test ! -d "$_G_directory_path"; do - # ...make a list in topmost first order. Use a colon delimited - # list incase some portion of path contains whitespace. - _G_dir_list=$_G_directory_path:$_G_dir_list - - # If the last portion added has no slash in it, the list is done - case $_G_directory_path in */*) ;; *) break ;; esac - - # ...otherwise throw away the child directory and loop - _G_directory_path=`$ECHO "$_G_directory_path" | $SED -e "$sed_dirname"` - done - _G_dir_list=`$ECHO "$_G_dir_list" | $SED 's|:*$||'` - - func_mkdir_p_IFS=$IFS; IFS=: - for _G_dir in $_G_dir_list; do - IFS=$func_mkdir_p_IFS - # mkdir can fail with a 'File exist' error if two processes - # try to create one of the directories concurrently. Don't - # stop in that case! - $MKDIR "$_G_dir" 2>/dev/null || : - done - IFS=$func_mkdir_p_IFS - - # Bail out if we (or some other process) failed to create a directory. - test -d "$_G_directory_path" || \ - func_fatal_error "Failed to create '$1'" - fi -} - - -# func_mktempdir [BASENAME] -# ------------------------- -# Make a temporary directory that won't clash with other running -# libtool processes, and avoids race conditions if possible. If -# given, BASENAME is the basename for that directory. -func_mktempdir () -{ - $debug_cmd - - _G_template=${TMPDIR-/tmp}/${1-$progname} - - if test : = "$opt_dry_run"; then - # Return a directory name, but don't create it in dry-run mode - _G_tmpdir=$_G_template-$$ - else - - # If mktemp works, use that first and foremost - _G_tmpdir=`mktemp -d "$_G_template-XXXXXXXX" 2>/dev/null` - - if test ! -d "$_G_tmpdir"; then - # Failing that, at least try and use $RANDOM to avoid a race - _G_tmpdir=$_G_template-${RANDOM-0}$$ - - func_mktempdir_umask=`umask` - umask 0077 - $MKDIR "$_G_tmpdir" - umask $func_mktempdir_umask - fi - - # If we're not in dry-run mode, bomb out on failure - test -d "$_G_tmpdir" || \ - func_fatal_error "cannot create temporary directory '$_G_tmpdir'" - fi - - $ECHO "$_G_tmpdir" -} - - -# func_normal_abspath PATH -# ------------------------ -# Remove doubled-up and trailing slashes, "." path components, -# and cancel out any ".." path components in PATH after making -# it an absolute path. -func_normal_abspath () -{ - $debug_cmd - - # These SED scripts presuppose an absolute path with a trailing slash. - _G_pathcar='s|^/\([^/]*\).*$|\1|' - _G_pathcdr='s|^/[^/]*||' - _G_removedotparts=':dotsl - s|/\./|/|g - t dotsl - s|/\.$|/|' - _G_collapseslashes='s|/\{1,\}|/|g' - _G_finalslash='s|/*$|/|' - - # Start from root dir and reassemble the path. - func_normal_abspath_result= - func_normal_abspath_tpath=$1 - func_normal_abspath_altnamespace= - case $func_normal_abspath_tpath in - "") - # Empty path, that just means $cwd. - func_stripname '' '/' "`pwd`" - func_normal_abspath_result=$func_stripname_result - return - ;; - # The next three entries are used to spot a run of precisely - # two leading slashes without using negated character classes; - # we take advantage of case's first-match behaviour. - ///*) - # Unusual form of absolute path, do nothing. - ;; - //*) - # Not necessarily an ordinary path; POSIX reserves leading '//' - # and for example Cygwin uses it to access remote file shares - # over CIFS/SMB, so we conserve a leading double slash if found. - func_normal_abspath_altnamespace=/ - ;; - /*) - # Absolute path, do nothing. - ;; - *) - # Relative path, prepend $cwd. - func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath - ;; - esac - - # Cancel out all the simple stuff to save iterations. We also want - # the path to end with a slash for ease of parsing, so make sure - # there is one (and only one) here. - func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ - -e "$_G_removedotparts" -e "$_G_collapseslashes" -e "$_G_finalslash"` - while :; do - # Processed it all yet? - if test / = "$func_normal_abspath_tpath"; then - # If we ascended to the root using ".." the result may be empty now. - if test -z "$func_normal_abspath_result"; then - func_normal_abspath_result=/ - fi - break - fi - func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ - -e "$_G_pathcar"` - func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ - -e "$_G_pathcdr"` - # Figure out what to do with it - case $func_normal_abspath_tcomponent in - "") - # Trailing empty path component, ignore it. - ;; - ..) - # Parent dir; strip last assembled component from result. - func_dirname "$func_normal_abspath_result" - func_normal_abspath_result=$func_dirname_result - ;; - *) - # Actual path component, append it. - func_append func_normal_abspath_result "/$func_normal_abspath_tcomponent" - ;; - esac - done - # Restore leading double-slash if one was found on entry. - func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result -} - - -# func_notquiet ARG... -# -------------------- -# Echo program name prefixed message only when not in quiet mode. -func_notquiet () -{ - $debug_cmd - - $opt_quiet || func_echo ${1+"$@"} - - # A bug in bash halts the script if the last line of a function - # fails when set -e is in force, so we need another command to - # work around that: - : -} - - -# func_relative_path SRCDIR DSTDIR -# -------------------------------- -# Set func_relative_path_result to the relative path from SRCDIR to DSTDIR. -func_relative_path () -{ - $debug_cmd - - func_relative_path_result= - func_normal_abspath "$1" - func_relative_path_tlibdir=$func_normal_abspath_result - func_normal_abspath "$2" - func_relative_path_tbindir=$func_normal_abspath_result - - # Ascend the tree starting from libdir - while :; do - # check if we have found a prefix of bindir - case $func_relative_path_tbindir in - $func_relative_path_tlibdir) - # found an exact match - func_relative_path_tcancelled= - break - ;; - $func_relative_path_tlibdir*) - # found a matching prefix - func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" - func_relative_path_tcancelled=$func_stripname_result - if test -z "$func_relative_path_result"; then - func_relative_path_result=. - fi - break - ;; - *) - func_dirname $func_relative_path_tlibdir - func_relative_path_tlibdir=$func_dirname_result - if test -z "$func_relative_path_tlibdir"; then - # Have to descend all the way to the root! - func_relative_path_result=../$func_relative_path_result - func_relative_path_tcancelled=$func_relative_path_tbindir - break - fi - func_relative_path_result=../$func_relative_path_result - ;; - esac - done - - # Now calculate path; take care to avoid doubling-up slashes. - func_stripname '' '/' "$func_relative_path_result" - func_relative_path_result=$func_stripname_result - func_stripname '/' '/' "$func_relative_path_tcancelled" - if test -n "$func_stripname_result"; then - func_append func_relative_path_result "/$func_stripname_result" - fi - - # Normalisation. If bindir is libdir, return '.' else relative path. - if test -n "$func_relative_path_result"; then - func_stripname './' '' "$func_relative_path_result" - func_relative_path_result=$func_stripname_result - fi - - test -n "$func_relative_path_result" || func_relative_path_result=. - - : -} - - -# func_quote_for_eval ARG... -# -------------------------- -# Aesthetically quote ARGs to be evaled later. -# This function returns two values: -# i) func_quote_for_eval_result -# double-quoted, suitable for a subsequent eval -# ii) func_quote_for_eval_unquoted_result -# has all characters that are still active within double -# quotes backslashified. -func_quote_for_eval () -{ - $debug_cmd - - func_quote_for_eval_unquoted_result= - func_quote_for_eval_result= - while test 0 -lt $#; do - case $1 in - *[\\\`\"\$]*) - _G_unquoted_arg=`printf '%s\n' "$1" |$SED "$sed_quote_subst"` ;; - *) - _G_unquoted_arg=$1 ;; - esac - if test -n "$func_quote_for_eval_unquoted_result"; then - func_append func_quote_for_eval_unquoted_result " $_G_unquoted_arg" - else - func_append func_quote_for_eval_unquoted_result "$_G_unquoted_arg" - fi - - case $_G_unquoted_arg in - # Double-quote args containing shell metacharacters to delay - # word splitting, command substitution and variable expansion - # for a subsequent eval. - # Many Bourne shells cannot handle close brackets correctly - # in scan sets, so we specify it separately. - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - _G_quoted_arg=\"$_G_unquoted_arg\" - ;; - *) - _G_quoted_arg=$_G_unquoted_arg - ;; - esac - - if test -n "$func_quote_for_eval_result"; then - func_append func_quote_for_eval_result " $_G_quoted_arg" - else - func_append func_quote_for_eval_result "$_G_quoted_arg" - fi - shift - done -} - - -# func_quote_for_expand ARG -# ------------------------- -# Aesthetically quote ARG to be evaled later; same as above, -# but do not quote variable references. -func_quote_for_expand () -{ - $debug_cmd - - case $1 in - *[\\\`\"]*) - _G_arg=`$ECHO "$1" | $SED \ - -e "$sed_double_quote_subst" -e "$sed_double_backslash"` ;; - *) - _G_arg=$1 ;; - esac - - case $_G_arg in - # Double-quote args containing shell metacharacters to delay - # word splitting and command substitution for a subsequent eval. - # Many Bourne shells cannot handle close brackets correctly - # in scan sets, so we specify it separately. - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - _G_arg=\"$_G_arg\" - ;; - esac - - func_quote_for_expand_result=$_G_arg -} - - -# func_stripname PREFIX SUFFIX NAME -# --------------------------------- -# strip PREFIX and SUFFIX from NAME, and store in func_stripname_result. -# PREFIX and SUFFIX must not contain globbing or regex special -# characters, hashes, percent signs, but SUFFIX may contain a leading -# dot (in which case that matches only a dot). -if test yes = "$_G_HAVE_XSI_OPS"; then - eval 'func_stripname () - { - $debug_cmd - - # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are - # positional parameters, so assign one to ordinary variable first. - func_stripname_result=$3 - func_stripname_result=${func_stripname_result#"$1"} - func_stripname_result=${func_stripname_result%"$2"} - }' -else - func_stripname () - { - $debug_cmd - - case $2 in - .*) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%\\\\$2\$%%"`;; - *) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%$2\$%%"`;; - esac - } -fi - - -# func_show_eval CMD [FAIL_EXP] -# ----------------------------- -# Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is -# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP -# is given, then evaluate it. -func_show_eval () -{ - $debug_cmd - - _G_cmd=$1 - _G_fail_exp=${2-':'} - - func_quote_for_expand "$_G_cmd" - eval "func_notquiet $func_quote_for_expand_result" - - $opt_dry_run || { - eval "$_G_cmd" - _G_status=$? - if test 0 -ne "$_G_status"; then - eval "(exit $_G_status); $_G_fail_exp" - fi - } -} - - -# func_show_eval_locale CMD [FAIL_EXP] -# ------------------------------------ -# Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is -# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP -# is given, then evaluate it. Use the saved locale for evaluation. -func_show_eval_locale () -{ - $debug_cmd - - _G_cmd=$1 - _G_fail_exp=${2-':'} - - $opt_quiet || { - func_quote_for_expand "$_G_cmd" - eval "func_echo $func_quote_for_expand_result" - } - - $opt_dry_run || { - eval "$_G_user_locale - $_G_cmd" - _G_status=$? - eval "$_G_safe_locale" - if test 0 -ne "$_G_status"; then - eval "(exit $_G_status); $_G_fail_exp" - fi - } -} - - -# func_tr_sh -# ---------- -# Turn $1 into a string suitable for a shell variable name. -# Result is stored in $func_tr_sh_result. All characters -# not in the set a-zA-Z0-9_ are replaced with '_'. Further, -# if $1 begins with a digit, a '_' is prepended as well. -func_tr_sh () -{ - $debug_cmd - - case $1 in - [0-9]* | *[!a-zA-Z0-9_]*) - func_tr_sh_result=`$ECHO "$1" | $SED -e 's/^\([0-9]\)/_\1/' -e 's/[^a-zA-Z0-9_]/_/g'` - ;; - * ) - func_tr_sh_result=$1 - ;; - esac -} - - -# func_verbose ARG... -# ------------------- -# Echo program name prefixed message in verbose mode only. -func_verbose () -{ - $debug_cmd - - $opt_verbose && func_echo "$*" - - : -} - - -# func_warn_and_continue ARG... -# ----------------------------- -# Echo program name prefixed warning message to standard error. -func_warn_and_continue () -{ - $debug_cmd - - $require_term_colors - - func_echo_infix_1 "${tc_red}warning$tc_reset" "$*" >&2 -} - - -# func_warning CATEGORY ARG... -# ---------------------------- -# Echo program name prefixed warning message to standard error. Warning -# messages can be filtered according to CATEGORY, where this function -# elides messages where CATEGORY is not listed in the global variable -# 'opt_warning_types'. -func_warning () -{ - $debug_cmd - - # CATEGORY must be in the warning_categories list! - case " $warning_categories " in - *" $1 "*) ;; - *) func_internal_error "invalid warning category '$1'" ;; - esac - - _G_category=$1 - shift - - case " $opt_warning_types " in - *" $_G_category "*) $warning_func ${1+"$@"} ;; - esac -} - - -# func_sort_ver VER1 VER2 -# ----------------------- -# 'sort -V' is not generally available. -# Note this deviates from the version comparison in automake -# in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a -# but this should suffice as we won't be specifying old -# version formats or redundant trailing .0 in bootstrap.conf. -# If we did want full compatibility then we should probably -# use m4_version_compare from autoconf. -func_sort_ver () -{ - $debug_cmd - - printf '%s\n%s\n' "$1" "$2" \ - | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n -k 5,5n -k 6,6n -k 7,7n -k 8,8n -k 9,9n -} - -# func_lt_ver PREV CURR -# --------------------- -# Return true if PREV and CURR are in the correct order according to -# func_sort_ver, otherwise false. Use it like this: -# -# func_lt_ver "$prev_ver" "$proposed_ver" || func_fatal_error "..." -func_lt_ver () -{ - $debug_cmd - - test "x$1" = x`func_sort_ver "$1" "$2" | $SED 1q` -} - - -# Local variables: -# mode: shell-script -# sh-indentation: 2 -# eval: (add-hook 'before-save-hook 'time-stamp) -# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" -# time-stamp-time-zone: "UTC" -# End: -#! /bin/sh - -# Set a version string for this script. -scriptversion=2014-01-07.03; # UTC - -# A portable, pluggable option parser for Bourne shell. -# Written by Gary V. Vaughan, 2010 - -# Copyright (C) 2010-2015 Free Software Foundation, Inc. -# This is free software; see the source for copying conditions. There is NO -# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -# Please report bugs or propose patches to gary@gnu.org. - - -## ------ ## -## Usage. ## -## ------ ## - -# This file is a library for parsing options in your shell scripts along -# with assorted other useful supporting features that you can make use -# of too. -# -# For the simplest scripts you might need only: -# -# #!/bin/sh -# . relative/path/to/funclib.sh -# . relative/path/to/options-parser -# scriptversion=1.0 -# func_options ${1+"$@"} -# eval set dummy "$func_options_result"; shift -# ...rest of your script... -# -# In order for the '--version' option to work, you will need to have a -# suitably formatted comment like the one at the top of this file -# starting with '# Written by ' and ending with '# warranty; '. -# -# For '-h' and '--help' to work, you will also need a one line -# description of your script's purpose in a comment directly above the -# '# Written by ' line, like the one at the top of this file. -# -# The default options also support '--debug', which will turn on shell -# execution tracing (see the comment above debug_cmd below for another -# use), and '--verbose' and the func_verbose function to allow your script -# to display verbose messages only when your user has specified -# '--verbose'. -# -# After sourcing this file, you can plug processing for additional -# options by amending the variables from the 'Configuration' section -# below, and following the instructions in the 'Option parsing' -# section further down. - -## -------------- ## -## Configuration. ## -## -------------- ## - -# You should override these variables in your script after sourcing this -# file so that they reflect the customisations you have added to the -# option parser. - -# The usage line for option parsing errors and the start of '-h' and -# '--help' output messages. You can embed shell variables for delayed -# expansion at the time the message is displayed, but you will need to -# quote other shell meta-characters carefully to prevent them being -# expanded when the contents are evaled. -usage='$progpath [OPTION]...' - -# Short help message in response to '-h' and '--help'. Add to this or -# override it after sourcing this library to reflect the full set of -# options your script accepts. -usage_message="\ - --debug enable verbose shell tracing - -W, --warnings=CATEGORY - report the warnings falling in CATEGORY [all] - -v, --verbose verbosely report processing - --version print version information and exit - -h, --help print short or long help message and exit -" - -# Additional text appended to 'usage_message' in response to '--help'. -long_help_message=" -Warning categories include: - 'all' show all warnings - 'none' turn off all the warnings - 'error' warnings are treated as fatal errors" - -# Help message printed before fatal option parsing errors. -fatal_help="Try '\$progname --help' for more information." - - - -## ------------------------- ## -## Hook function management. ## -## ------------------------- ## - -# This section contains functions for adding, removing, and running hooks -# to the main code. A hook is just a named list of of function, that can -# be run in order later on. - -# func_hookable FUNC_NAME -# ----------------------- -# Declare that FUNC_NAME will run hooks added with -# 'func_add_hook FUNC_NAME ...'. -func_hookable () -{ - $debug_cmd - - func_append hookable_fns " $1" -} - - -# func_add_hook FUNC_NAME HOOK_FUNC -# --------------------------------- -# Request that FUNC_NAME call HOOK_FUNC before it returns. FUNC_NAME must -# first have been declared "hookable" by a call to 'func_hookable'. -func_add_hook () -{ - $debug_cmd - - case " $hookable_fns " in - *" $1 "*) ;; - *) func_fatal_error "'$1' does not accept hook functions." ;; - esac - - eval func_append ${1}_hooks '" $2"' -} - - -# func_remove_hook FUNC_NAME HOOK_FUNC -# ------------------------------------ -# Remove HOOK_FUNC from the list of functions called by FUNC_NAME. -func_remove_hook () -{ - $debug_cmd - - eval ${1}_hooks='`$ECHO "\$'$1'_hooks" |$SED "s| '$2'||"`' -} - - -# func_run_hooks FUNC_NAME [ARG]... -# --------------------------------- -# Run all hook functions registered to FUNC_NAME. -# It is assumed that the list of hook functions contains nothing more -# than a whitespace-delimited list of legal shell function names, and -# no effort is wasted trying to catch shell meta-characters or preserve -# whitespace. -func_run_hooks () -{ - $debug_cmd - - case " $hookable_fns " in - *" $1 "*) ;; - *) func_fatal_error "'$1' does not support hook funcions.n" ;; - esac - - eval _G_hook_fns=\$$1_hooks; shift - - for _G_hook in $_G_hook_fns; do - eval $_G_hook '"$@"' - - # store returned options list back into positional - # parameters for next 'cmd' execution. - eval _G_hook_result=\$${_G_hook}_result - eval set dummy "$_G_hook_result"; shift - done - - func_quote_for_eval ${1+"$@"} - func_run_hooks_result=$func_quote_for_eval_result -} - - - -## --------------- ## -## Option parsing. ## -## --------------- ## - -# In order to add your own option parsing hooks, you must accept the -# full positional parameter list in your hook function, remove any -# options that you action, and then pass back the remaining unprocessed -# options in '_result', escaped suitably for -# 'eval'. Like this: -# -# my_options_prep () -# { -# $debug_cmd -# -# # Extend the existing usage message. -# usage_message=$usage_message' -# -s, --silent don'\''t print informational messages -# ' -# -# func_quote_for_eval ${1+"$@"} -# my_options_prep_result=$func_quote_for_eval_result -# } -# func_add_hook func_options_prep my_options_prep -# -# -# my_silent_option () -# { -# $debug_cmd -# -# # Note that for efficiency, we parse as many options as we can -# # recognise in a loop before passing the remainder back to the -# # caller on the first unrecognised argument we encounter. -# while test $# -gt 0; do -# opt=$1; shift -# case $opt in -# --silent|-s) opt_silent=: ;; -# # Separate non-argument short options: -# -s*) func_split_short_opt "$_G_opt" -# set dummy "$func_split_short_opt_name" \ -# "-$func_split_short_opt_arg" ${1+"$@"} -# shift -# ;; -# *) set dummy "$_G_opt" "$*"; shift; break ;; -# esac -# done -# -# func_quote_for_eval ${1+"$@"} -# my_silent_option_result=$func_quote_for_eval_result -# } -# func_add_hook func_parse_options my_silent_option -# -# -# my_option_validation () -# { -# $debug_cmd -# -# $opt_silent && $opt_verbose && func_fatal_help "\ -# '--silent' and '--verbose' options are mutually exclusive." -# -# func_quote_for_eval ${1+"$@"} -# my_option_validation_result=$func_quote_for_eval_result -# } -# func_add_hook func_validate_options my_option_validation -# -# You'll alse need to manually amend $usage_message to reflect the extra -# options you parse. It's preferable to append if you can, so that -# multiple option parsing hooks can be added safely. - - -# func_options [ARG]... -# --------------------- -# All the functions called inside func_options are hookable. See the -# individual implementations for details. -func_hookable func_options -func_options () -{ - $debug_cmd - - func_options_prep ${1+"$@"} - eval func_parse_options \ - ${func_options_prep_result+"$func_options_prep_result"} - eval func_validate_options \ - ${func_parse_options_result+"$func_parse_options_result"} - - eval func_run_hooks func_options \ - ${func_validate_options_result+"$func_validate_options_result"} - - # save modified positional parameters for caller - func_options_result=$func_run_hooks_result -} - - -# func_options_prep [ARG]... -# -------------------------- -# All initialisations required before starting the option parse loop. -# Note that when calling hook functions, we pass through the list of -# positional parameters. If a hook function modifies that list, and -# needs to propogate that back to rest of this script, then the complete -# modified list must be put in 'func_run_hooks_result' before -# returning. -func_hookable func_options_prep -func_options_prep () -{ - $debug_cmd - - # Option defaults: - opt_verbose=false - opt_warning_types= - - func_run_hooks func_options_prep ${1+"$@"} - - # save modified positional parameters for caller - func_options_prep_result=$func_run_hooks_result -} - - -# func_parse_options [ARG]... -# --------------------------- -# The main option parsing loop. -func_hookable func_parse_options -func_parse_options () -{ - $debug_cmd - - func_parse_options_result= - - # this just eases exit handling - while test $# -gt 0; do - # Defer to hook functions for initial option parsing, so they - # get priority in the event of reusing an option name. - func_run_hooks func_parse_options ${1+"$@"} - - # Adjust func_parse_options positional parameters to match - eval set dummy "$func_run_hooks_result"; shift - - # Break out of the loop if we already parsed every option. - test $# -gt 0 || break - - _G_opt=$1 - shift - case $_G_opt in - --debug|-x) debug_cmd='set -x' - func_echo "enabling shell trace mode" - $debug_cmd - ;; - - --no-warnings|--no-warning|--no-warn) - set dummy --warnings none ${1+"$@"} - shift - ;; - - --warnings|--warning|-W) - test $# = 0 && func_missing_arg $_G_opt && break - case " $warning_categories $1" in - *" $1 "*) - # trailing space prevents matching last $1 above - func_append_uniq opt_warning_types " $1" - ;; - *all) - opt_warning_types=$warning_categories - ;; - *none) - opt_warning_types=none - warning_func=: - ;; - *error) - opt_warning_types=$warning_categories - warning_func=func_fatal_error - ;; - *) - func_fatal_error \ - "unsupported warning category: '$1'" - ;; - esac - shift - ;; - - --verbose|-v) opt_verbose=: ;; - --version) func_version ;; - -\?|-h) func_usage ;; - --help) func_help ;; - - # Separate optargs to long options (plugins may need this): - --*=*) func_split_equals "$_G_opt" - set dummy "$func_split_equals_lhs" \ - "$func_split_equals_rhs" ${1+"$@"} - shift - ;; - - # Separate optargs to short options: - -W*) - func_split_short_opt "$_G_opt" - set dummy "$func_split_short_opt_name" \ - "$func_split_short_opt_arg" ${1+"$@"} - shift - ;; - - # Separate non-argument short options: - -\?*|-h*|-v*|-x*) - func_split_short_opt "$_G_opt" - set dummy "$func_split_short_opt_name" \ - "-$func_split_short_opt_arg" ${1+"$@"} - shift - ;; - - --) break ;; - -*) func_fatal_help "unrecognised option: '$_G_opt'" ;; - *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; - esac - done - - # save modified positional parameters for caller - func_quote_for_eval ${1+"$@"} - func_parse_options_result=$func_quote_for_eval_result -} - - -# func_validate_options [ARG]... -# ------------------------------ -# Perform any sanity checks on option settings and/or unconsumed -# arguments. -func_hookable func_validate_options -func_validate_options () -{ - $debug_cmd - - # Display all warnings if -W was not given. - test -n "$opt_warning_types" || opt_warning_types=" $warning_categories" - - func_run_hooks func_validate_options ${1+"$@"} - - # Bail if the options were screwed! - $exit_cmd $EXIT_FAILURE - - # save modified positional parameters for caller - func_validate_options_result=$func_run_hooks_result -} - - - -## ----------------- ## -## Helper functions. ## -## ----------------- ## - -# This section contains the helper functions used by the rest of the -# hookable option parser framework in ascii-betical order. - - -# func_fatal_help ARG... -# ---------------------- -# Echo program name prefixed message to standard error, followed by -# a help hint, and exit. -func_fatal_help () -{ - $debug_cmd - - eval \$ECHO \""Usage: $usage"\" - eval \$ECHO \""$fatal_help"\" - func_error ${1+"$@"} - exit $EXIT_FAILURE -} - - -# func_help -# --------- -# Echo long help message to standard output and exit. -func_help () -{ - $debug_cmd - - func_usage_message - $ECHO "$long_help_message" - exit 0 -} - - -# func_missing_arg ARGNAME -# ------------------------ -# Echo program name prefixed message to standard error and set global -# exit_cmd. -func_missing_arg () -{ - $debug_cmd - - func_error "Missing argument for '$1'." - exit_cmd=exit -} - - -# func_split_equals STRING -# ------------------------ -# Set func_split_equals_lhs and func_split_equals_rhs shell variables after -# splitting STRING at the '=' sign. -test -z "$_G_HAVE_XSI_OPS" \ - && (eval 'x=a/b/c; - test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ - && _G_HAVE_XSI_OPS=yes - -if test yes = "$_G_HAVE_XSI_OPS" -then - # This is an XSI compatible shell, allowing a faster implementation... - eval 'func_split_equals () - { - $debug_cmd - - func_split_equals_lhs=${1%%=*} - func_split_equals_rhs=${1#*=} - test "x$func_split_equals_lhs" = "x$1" \ - && func_split_equals_rhs= - }' -else - # ...otherwise fall back to using expr, which is often a shell builtin. - func_split_equals () - { - $debug_cmd - - func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'` - func_split_equals_rhs= - test "x$func_split_equals_lhs" = "x$1" \ - || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'` - } -fi #func_split_equals - - -# func_split_short_opt SHORTOPT -# ----------------------------- -# Set func_split_short_opt_name and func_split_short_opt_arg shell -# variables after splitting SHORTOPT after the 2nd character. -if test yes = "$_G_HAVE_XSI_OPS" -then - # This is an XSI compatible shell, allowing a faster implementation... - eval 'func_split_short_opt () - { - $debug_cmd - - func_split_short_opt_arg=${1#??} - func_split_short_opt_name=${1%"$func_split_short_opt_arg"} - }' -else - # ...otherwise fall back to using expr, which is often a shell builtin. - func_split_short_opt () - { - $debug_cmd - - func_split_short_opt_name=`expr "x$1" : 'x-\(.\)'` - func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'` - } -fi #func_split_short_opt - - -# func_usage -# ---------- -# Echo short help message to standard output and exit. -func_usage () -{ - $debug_cmd - - func_usage_message - $ECHO "Run '$progname --help |${PAGER-more}' for full usage" - exit 0 -} - - -# func_usage_message -# ------------------ -# Echo short help message to standard output. -func_usage_message () -{ - $debug_cmd - - eval \$ECHO \""Usage: $usage"\" - echo - $SED -n 's|^# || - /^Written by/{ - x;p;x - } - h - /^Written by/q' < "$progpath" - echo - eval \$ECHO \""$usage_message"\" -} - - -# func_version -# ------------ -# Echo version message to standard output and exit. -func_version () -{ - $debug_cmd - - printf '%s\n' "$progname $scriptversion" - $SED -n ' - /(C)/!b go - :more - /\./!{ - N - s|\n# | | - b more - } - :go - /^# Written by /,/# warranty; / { - s|^# || - s|^# *$|| - s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2| - p - } - /^# Written by / { - s|^# || - p - } - /^warranty; /q' < "$progpath" - - exit $? -} - - -# Local variables: -# mode: shell-script -# sh-indentation: 2 -# eval: (add-hook 'before-save-hook 'time-stamp) -# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" -# time-stamp-time-zone: "UTC" -# End: - -# Set a version string. -scriptversion='(GNU libtool) 2.4.6' - - -# func_echo ARG... -# ---------------- -# Libtool also displays the current mode in messages, so override -# funclib.sh func_echo with this custom definition. -func_echo () -{ - $debug_cmd - - _G_message=$* - - func_echo_IFS=$IFS - IFS=$nl - for _G_line in $_G_message; do - IFS=$func_echo_IFS - $ECHO "$progname${opt_mode+: $opt_mode}: $_G_line" - done - IFS=$func_echo_IFS -} - - -# func_warning ARG... -# ------------------- -# Libtool warnings are not categorized, so override funclib.sh -# func_warning with this simpler definition. -func_warning () -{ - $debug_cmd - - $warning_func ${1+"$@"} -} - - -## ---------------- ## -## Options parsing. ## -## ---------------- ## - -# Hook in the functions to make sure our own options are parsed during -# the option parsing loop. - -usage='$progpath [OPTION]... [MODE-ARG]...' - -# Short help message in response to '-h'. -usage_message="Options: - --config show all configuration variables - --debug enable verbose shell tracing - -n, --dry-run display commands without modifying any files - --features display basic configuration information and exit - --mode=MODE use operation mode MODE - --no-warnings equivalent to '-Wnone' - --preserve-dup-deps don't remove duplicate dependency libraries - --quiet, --silent don't print informational messages - --tag=TAG use configuration variables from tag TAG - -v, --verbose print more informational messages than default - --version print version information - -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] - -h, --help, --help-all print short, long, or detailed help message -" - -# Additional text appended to 'usage_message' in response to '--help'. -func_help () -{ - $debug_cmd - - func_usage_message - $ECHO "$long_help_message - -MODE must be one of the following: - - clean remove files from the build directory - compile compile a source file into a libtool object - execute automatically set library path, then run a program - finish complete the installation of libtool libraries - install install libraries or executables - link create a library or an executable - uninstall remove libraries from an installed directory - -MODE-ARGS vary depending on the MODE. When passed as first option, -'--mode=MODE' may be abbreviated as 'MODE' or a unique abbreviation of that. -Try '$progname --help --mode=MODE' for a more detailed description of MODE. - -When reporting a bug, please describe a test case to reproduce it and -include the following information: - - host-triplet: $host - shell: $SHELL - compiler: $LTCC - compiler flags: $LTCFLAGS - linker: $LD (gnu? $with_gnu_ld) - version: $progname (GNU libtool) 2.4.6 - automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q` - autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q` - -Report bugs to . -GNU libtool home page: . -General help using GNU software: ." - exit 0 -} - - -# func_lo2o OBJECT-NAME -# --------------------- -# Transform OBJECT-NAME from a '.lo' suffix to the platform specific -# object suffix. - -lo2o=s/\\.lo\$/.$objext/ -o2lo=s/\\.$objext\$/.lo/ - -if test yes = "$_G_HAVE_XSI_OPS"; then - eval 'func_lo2o () - { - case $1 in - *.lo) func_lo2o_result=${1%.lo}.$objext ;; - * ) func_lo2o_result=$1 ;; - esac - }' - - # func_xform LIBOBJ-OR-SOURCE - # --------------------------- - # Transform LIBOBJ-OR-SOURCE from a '.o' or '.c' (or otherwise) - # suffix to a '.lo' libtool-object suffix. - eval 'func_xform () - { - func_xform_result=${1%.*}.lo - }' -else - # ...otherwise fall back to using sed. - func_lo2o () - { - func_lo2o_result=`$ECHO "$1" | $SED "$lo2o"` - } - - func_xform () - { - func_xform_result=`$ECHO "$1" | $SED 's|\.[^.]*$|.lo|'` - } -fi - - -# func_fatal_configuration ARG... -# ------------------------------- -# Echo program name prefixed message to standard error, followed by -# a configuration failure hint, and exit. -func_fatal_configuration () -{ - func__fatal_error ${1+"$@"} \ - "See the $PACKAGE documentation for more information." \ - "Fatal configuration error." -} - - -# func_config -# ----------- -# Display the configuration for all the tags in this script. -func_config () -{ - re_begincf='^# ### BEGIN LIBTOOL' - re_endcf='^# ### END LIBTOOL' - - # Default configuration. - $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" - - # Now print the configurations for the tags. - for tagname in $taglist; do - $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" - done - - exit $? -} - - -# func_features -# ------------- -# Display the features supported by this script. -func_features () -{ - echo "host: $host" - if test yes = "$build_libtool_libs"; then - echo "enable shared libraries" - else - echo "disable shared libraries" - fi - if test yes = "$build_old_libs"; then - echo "enable static libraries" - else - echo "disable static libraries" - fi - - exit $? -} - - -# func_enable_tag TAGNAME -# ----------------------- -# Verify that TAGNAME is valid, and either flag an error and exit, or -# enable the TAGNAME tag. We also add TAGNAME to the global $taglist -# variable here. -func_enable_tag () -{ - # Global variable: - tagname=$1 - - re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" - re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" - sed_extractcf=/$re_begincf/,/$re_endcf/p - - # Validate tagname. - case $tagname in - *[!-_A-Za-z0-9,/]*) - func_fatal_error "invalid tag name: $tagname" - ;; - esac - - # Don't test for the "default" C tag, as we know it's - # there but not specially marked. - case $tagname in - CC) ;; - *) - if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then - taglist="$taglist $tagname" - - # Evaluate the configuration. Be careful to quote the path - # and the sed script, to avoid splitting on whitespace, but - # also don't use non-portable quotes within backquotes within - # quotes we have to do it in 2 steps: - extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` - eval "$extractedcf" - else - func_error "ignoring unknown tag $tagname" - fi - ;; - esac -} - - -# func_check_version_match -# ------------------------ -# Ensure that we are using m4 macros, and libtool script from the same -# release of libtool. -func_check_version_match () -{ - if test "$package_revision" != "$macro_revision"; then - if test "$VERSION" != "$macro_version"; then - if test -z "$macro_version"; then - cat >&2 <<_LT_EOF -$progname: Version mismatch error. This is $PACKAGE $VERSION, but the -$progname: definition of this LT_INIT comes from an older release. -$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION -$progname: and run autoconf again. -_LT_EOF - else - cat >&2 <<_LT_EOF -$progname: Version mismatch error. This is $PACKAGE $VERSION, but the -$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. -$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION -$progname: and run autoconf again. -_LT_EOF - fi - else - cat >&2 <<_LT_EOF -$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, -$progname: but the definition of this LT_INIT comes from revision $macro_revision. -$progname: You should recreate aclocal.m4 with macros from revision $package_revision -$progname: of $PACKAGE $VERSION and run autoconf again. -_LT_EOF - fi - - exit $EXIT_MISMATCH - fi -} - - -# libtool_options_prep [ARG]... -# ----------------------------- -# Preparation for options parsed by libtool. -libtool_options_prep () -{ - $debug_mode - - # Option defaults: - opt_config=false - opt_dlopen= - opt_dry_run=false - opt_help=false - opt_mode= - opt_preserve_dup_deps=false - opt_quiet=false - - nonopt= - preserve_args= - - # Shorthand for --mode=foo, only valid as the first argument - case $1 in - clean|clea|cle|cl) - shift; set dummy --mode clean ${1+"$@"}; shift - ;; - compile|compil|compi|comp|com|co|c) - shift; set dummy --mode compile ${1+"$@"}; shift - ;; - execute|execut|execu|exec|exe|ex|e) - shift; set dummy --mode execute ${1+"$@"}; shift - ;; - finish|finis|fini|fin|fi|f) - shift; set dummy --mode finish ${1+"$@"}; shift - ;; - install|instal|insta|inst|ins|in|i) - shift; set dummy --mode install ${1+"$@"}; shift - ;; - link|lin|li|l) - shift; set dummy --mode link ${1+"$@"}; shift - ;; - uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) - shift; set dummy --mode uninstall ${1+"$@"}; shift - ;; - esac - - # Pass back the list of options. - func_quote_for_eval ${1+"$@"} - libtool_options_prep_result=$func_quote_for_eval_result -} -func_add_hook func_options_prep libtool_options_prep - - -# libtool_parse_options [ARG]... -# --------------------------------- -# Provide handling for libtool specific options. -libtool_parse_options () -{ - $debug_cmd - - # Perform our own loop to consume as many options as possible in - # each iteration. - while test $# -gt 0; do - _G_opt=$1 - shift - case $_G_opt in - --dry-run|--dryrun|-n) - opt_dry_run=: - ;; - - --config) func_config ;; - - --dlopen|-dlopen) - opt_dlopen="${opt_dlopen+$opt_dlopen -}$1" - shift - ;; - - --preserve-dup-deps) - opt_preserve_dup_deps=: ;; - - --features) func_features ;; - - --finish) set dummy --mode finish ${1+"$@"}; shift ;; - - --help) opt_help=: ;; - - --help-all) opt_help=': help-all' ;; - - --mode) test $# = 0 && func_missing_arg $_G_opt && break - opt_mode=$1 - case $1 in - # Valid mode arguments: - clean|compile|execute|finish|install|link|relink|uninstall) ;; - - # Catch anything else as an error - *) func_error "invalid argument for $_G_opt" - exit_cmd=exit - break - ;; - esac - shift - ;; - - --no-silent|--no-quiet) - opt_quiet=false - func_append preserve_args " $_G_opt" - ;; - - --no-warnings|--no-warning|--no-warn) - opt_warning=false - func_append preserve_args " $_G_opt" - ;; - - --no-verbose) - opt_verbose=false - func_append preserve_args " $_G_opt" - ;; - - --silent|--quiet) - opt_quiet=: - opt_verbose=false - func_append preserve_args " $_G_opt" - ;; - - --tag) test $# = 0 && func_missing_arg $_G_opt && break - opt_tag=$1 - func_append preserve_args " $_G_opt $1" - func_enable_tag "$1" - shift - ;; - - --verbose|-v) opt_quiet=false - opt_verbose=: - func_append preserve_args " $_G_opt" - ;; - - # An option not handled by this hook function: - *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; - esac - done - - - # save modified positional parameters for caller - func_quote_for_eval ${1+"$@"} - libtool_parse_options_result=$func_quote_for_eval_result -} -func_add_hook func_parse_options libtool_parse_options - - - -# libtool_validate_options [ARG]... -# --------------------------------- -# Perform any sanity checks on option settings and/or unconsumed -# arguments. -libtool_validate_options () -{ - # save first non-option argument - if test 0 -lt $#; then - nonopt=$1 - shift - fi - - # preserve --debug - test : = "$debug_cmd" || func_append preserve_args " --debug" - - case $host in - # Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452 - # see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788 - *cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2* | *os2*) - # don't eliminate duplications in $postdeps and $predeps - opt_duplicate_compiler_generated_deps=: - ;; - *) - opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps - ;; - esac - - $opt_help || { - # Sanity checks first: - func_check_version_match - - test yes != "$build_libtool_libs" \ - && test yes != "$build_old_libs" \ - && func_fatal_configuration "not configured to build any kind of library" - - # Darwin sucks - eval std_shrext=\"$shrext_cmds\" - - # Only execute mode is allowed to have -dlopen flags. - if test -n "$opt_dlopen" && test execute != "$opt_mode"; then - func_error "unrecognized option '-dlopen'" - $ECHO "$help" 1>&2 - exit $EXIT_FAILURE - fi - - # Change the help message to a mode-specific one. - generic_help=$help - help="Try '$progname --help --mode=$opt_mode' for more information." - } - - # Pass back the unparsed argument list - func_quote_for_eval ${1+"$@"} - libtool_validate_options_result=$func_quote_for_eval_result -} -func_add_hook func_validate_options libtool_validate_options - - -# Process options as early as possible so that --help and --version -# can return quickly. -func_options ${1+"$@"} -eval set dummy "$func_options_result"; shift - - - -## ----------- ## -## Main. ## -## ----------- ## - -magic='%%%MAGIC variable%%%' -magic_exe='%%%MAGIC EXE variable%%%' - -# Global variables. -extracted_archives= -extracted_serial=0 - -# If this variable is set in any of the actions, the command in it -# will be execed at the end. This prevents here-documents from being -# left over by shells. -exec_cmd= - - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -$1 -_LTECHO_EOF' -} - -# func_generated_by_libtool -# True iff stdin has been generated by Libtool. This function is only -# a basic sanity check; it will hardly flush out determined imposters. -func_generated_by_libtool_p () -{ - $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 -} - -# func_lalib_p file -# True iff FILE is a libtool '.la' library or '.lo' object file. -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_lalib_p () -{ - test -f "$1" && - $SED -e 4q "$1" 2>/dev/null | func_generated_by_libtool_p -} - -# func_lalib_unsafe_p file -# True iff FILE is a libtool '.la' library or '.lo' object file. -# This function implements the same check as func_lalib_p without -# resorting to external programs. To this end, it redirects stdin and -# closes it afterwards, without saving the original file descriptor. -# As a safety measure, use it only where a negative result would be -# fatal anyway. Works if 'file' does not exist. -func_lalib_unsafe_p () -{ - lalib_p=no - if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then - for lalib_p_l in 1 2 3 4 - do - read lalib_p_line - case $lalib_p_line in - \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; - esac - done - exec 0<&5 5<&- - fi - test yes = "$lalib_p" -} - -# func_ltwrapper_script_p file -# True iff FILE is a libtool wrapper script -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_ltwrapper_script_p () -{ - test -f "$1" && - $lt_truncate_bin < "$1" 2>/dev/null | func_generated_by_libtool_p -} - -# func_ltwrapper_executable_p file -# True iff FILE is a libtool wrapper executable -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_ltwrapper_executable_p () -{ - func_ltwrapper_exec_suffix= - case $1 in - *.exe) ;; - *) func_ltwrapper_exec_suffix=.exe ;; - esac - $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 -} - -# func_ltwrapper_scriptname file -# Assumes file is an ltwrapper_executable -# uses $file to determine the appropriate filename for a -# temporary ltwrapper_script. -func_ltwrapper_scriptname () -{ - func_dirname_and_basename "$1" "" "." - func_stripname '' '.exe' "$func_basename_result" - func_ltwrapper_scriptname_result=$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper -} - -# func_ltwrapper_p file -# True iff FILE is a libtool wrapper script or wrapper executable -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_ltwrapper_p () -{ - func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" -} - - -# func_execute_cmds commands fail_cmd -# Execute tilde-delimited COMMANDS. -# If FAIL_CMD is given, eval that upon failure. -# FAIL_CMD may read-access the current command in variable CMD! -func_execute_cmds () -{ - $debug_cmd - - save_ifs=$IFS; IFS='~' - for cmd in $1; do - IFS=$sp$nl - eval cmd=\"$cmd\" - IFS=$save_ifs - func_show_eval "$cmd" "${2-:}" - done - IFS=$save_ifs -} - - -# func_source file -# Source FILE, adding directory component if necessary. -# Note that it is not necessary on cygwin/mingw to append a dot to -# FILE even if both FILE and FILE.exe exist: automatic-append-.exe -# behavior happens only for exec(3), not for open(2)! Also, sourcing -# 'FILE.' does not work on cygwin managed mounts. -func_source () -{ - $debug_cmd - - case $1 in - */* | *\\*) . "$1" ;; - *) . "./$1" ;; - esac -} - - -# func_resolve_sysroot PATH -# Replace a leading = in PATH with a sysroot. Store the result into -# func_resolve_sysroot_result -func_resolve_sysroot () -{ - func_resolve_sysroot_result=$1 - case $func_resolve_sysroot_result in - =*) - func_stripname '=' '' "$func_resolve_sysroot_result" - func_resolve_sysroot_result=$lt_sysroot$func_stripname_result - ;; - esac -} - -# func_replace_sysroot PATH -# If PATH begins with the sysroot, replace it with = and -# store the result into func_replace_sysroot_result. -func_replace_sysroot () -{ - case $lt_sysroot:$1 in - ?*:"$lt_sysroot"*) - func_stripname "$lt_sysroot" '' "$1" - func_replace_sysroot_result='='$func_stripname_result - ;; - *) - # Including no sysroot. - func_replace_sysroot_result=$1 - ;; - esac -} - -# func_infer_tag arg -# Infer tagged configuration to use if any are available and -# if one wasn't chosen via the "--tag" command line option. -# Only attempt this if the compiler in the base compile -# command doesn't match the default compiler. -# arg is usually of the form 'gcc ...' -func_infer_tag () -{ - $debug_cmd - - if test -n "$available_tags" && test -z "$tagname"; then - CC_quoted= - for arg in $CC; do - func_append_quoted CC_quoted "$arg" - done - CC_expanded=`func_echo_all $CC` - CC_quoted_expanded=`func_echo_all $CC_quoted` - case $@ in - # Blanks in the command may have been stripped by the calling shell, - # but not from the CC environment variable when configure was run. - " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ - " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; - # Blanks at the start of $base_compile will cause this to fail - # if we don't check for them as well. - *) - for z in $available_tags; do - if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then - # Evaluate the configuration. - eval "`$SED -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" - CC_quoted= - for arg in $CC; do - # Double-quote args containing other shell metacharacters. - func_append_quoted CC_quoted "$arg" - done - CC_expanded=`func_echo_all $CC` - CC_quoted_expanded=`func_echo_all $CC_quoted` - case "$@ " in - " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ - " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) - # The compiler in the base compile command matches - # the one in the tagged configuration. - # Assume this is the tagged configuration we want. - tagname=$z - break - ;; - esac - fi - done - # If $tagname still isn't set, then no tagged configuration - # was found and let the user know that the "--tag" command - # line option must be used. - if test -z "$tagname"; then - func_echo "unable to infer tagged configuration" - func_fatal_error "specify a tag with '--tag'" -# else -# func_verbose "using $tagname tagged configuration" - fi - ;; - esac - fi -} - - - -# func_write_libtool_object output_name pic_name nonpic_name -# Create a libtool object file (analogous to a ".la" file), -# but don't create it if we're doing a dry run. -func_write_libtool_object () -{ - write_libobj=$1 - if test yes = "$build_libtool_libs"; then - write_lobj=\'$2\' - else - write_lobj=none - fi - - if test yes = "$build_old_libs"; then - write_oldobj=\'$3\' - else - write_oldobj=none - fi - - $opt_dry_run || { - cat >${write_libobj}T </dev/null` - if test "$?" -eq 0 && test -n "$func_convert_core_file_wine_to_w32_tmp"; then - func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | - $SED -e "$sed_naive_backslashify"` - else - func_convert_core_file_wine_to_w32_result= - fi - fi -} -# end: func_convert_core_file_wine_to_w32 - - -# func_convert_core_path_wine_to_w32 ARG -# Helper function used by path conversion functions when $build is *nix, and -# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly -# configured wine environment available, with the winepath program in $build's -# $PATH. Assumes ARG has no leading or trailing path separator characters. -# -# ARG is path to be converted from $build format to win32. -# Result is available in $func_convert_core_path_wine_to_w32_result. -# Unconvertible file (directory) names in ARG are skipped; if no directory names -# are convertible, then the result may be empty. -func_convert_core_path_wine_to_w32 () -{ - $debug_cmd - - # unfortunately, winepath doesn't convert paths, only file names - func_convert_core_path_wine_to_w32_result= - if test -n "$1"; then - oldIFS=$IFS - IFS=: - for func_convert_core_path_wine_to_w32_f in $1; do - IFS=$oldIFS - func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" - if test -n "$func_convert_core_file_wine_to_w32_result"; then - if test -z "$func_convert_core_path_wine_to_w32_result"; then - func_convert_core_path_wine_to_w32_result=$func_convert_core_file_wine_to_w32_result - else - func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" - fi - fi - done - IFS=$oldIFS - fi -} -# end: func_convert_core_path_wine_to_w32 - - -# func_cygpath ARGS... -# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when -# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) -# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or -# (2), returns the Cygwin file name or path in func_cygpath_result (input -# file name or path is assumed to be in w32 format, as previously converted -# from $build's *nix or MSYS format). In case (3), returns the w32 file name -# or path in func_cygpath_result (input file name or path is assumed to be in -# Cygwin format). Returns an empty string on error. -# -# ARGS are passed to cygpath, with the last one being the file name or path to -# be converted. -# -# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH -# environment variable; do not put it in $PATH. -func_cygpath () -{ - $debug_cmd - - if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then - func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` - if test "$?" -ne 0; then - # on failure, ensure result is empty - func_cygpath_result= - fi - else - func_cygpath_result= - func_error "LT_CYGPATH is empty or specifies non-existent file: '$LT_CYGPATH'" - fi -} -#end: func_cygpath - - -# func_convert_core_msys_to_w32 ARG -# Convert file name or path ARG from MSYS format to w32 format. Return -# result in func_convert_core_msys_to_w32_result. -func_convert_core_msys_to_w32 () -{ - $debug_cmd - - # awkward: cmd appends spaces to result - func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | - $SED -e 's/[ ]*$//' -e "$sed_naive_backslashify"` -} -#end: func_convert_core_msys_to_w32 - - -# func_convert_file_check ARG1 ARG2 -# Verify that ARG1 (a file name in $build format) was converted to $host -# format in ARG2. Otherwise, emit an error message, but continue (resetting -# func_to_host_file_result to ARG1). -func_convert_file_check () -{ - $debug_cmd - - if test -z "$2" && test -n "$1"; then - func_error "Could not determine host file name corresponding to" - func_error " '$1'" - func_error "Continuing, but uninstalled executables may not work." - # Fallback: - func_to_host_file_result=$1 - fi -} -# end func_convert_file_check - - -# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH -# Verify that FROM_PATH (a path in $build format) was converted to $host -# format in TO_PATH. Otherwise, emit an error message, but continue, resetting -# func_to_host_file_result to a simplistic fallback value (see below). -func_convert_path_check () -{ - $debug_cmd - - if test -z "$4" && test -n "$3"; then - func_error "Could not determine the host path corresponding to" - func_error " '$3'" - func_error "Continuing, but uninstalled executables may not work." - # Fallback. This is a deliberately simplistic "conversion" and - # should not be "improved". See libtool.info. - if test "x$1" != "x$2"; then - lt_replace_pathsep_chars="s|$1|$2|g" - func_to_host_path_result=`echo "$3" | - $SED -e "$lt_replace_pathsep_chars"` - else - func_to_host_path_result=$3 - fi - fi -} -# end func_convert_path_check - - -# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG -# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT -# and appending REPL if ORIG matches BACKPAT. -func_convert_path_front_back_pathsep () -{ - $debug_cmd - - case $4 in - $1 ) func_to_host_path_result=$3$func_to_host_path_result - ;; - esac - case $4 in - $2 ) func_append func_to_host_path_result "$3" - ;; - esac -} -# end func_convert_path_front_back_pathsep - - -################################################## -# $build to $host FILE NAME CONVERSION FUNCTIONS # -################################################## -# invoked via '$to_host_file_cmd ARG' -# -# In each case, ARG is the path to be converted from $build to $host format. -# Result will be available in $func_to_host_file_result. - - -# func_to_host_file ARG -# Converts the file name ARG from $build format to $host format. Return result -# in func_to_host_file_result. -func_to_host_file () -{ - $debug_cmd - - $to_host_file_cmd "$1" -} -# end func_to_host_file - - -# func_to_tool_file ARG LAZY -# converts the file name ARG from $build format to toolchain format. Return -# result in func_to_tool_file_result. If the conversion in use is listed -# in (the comma separated) LAZY, no conversion takes place. -func_to_tool_file () -{ - $debug_cmd - - case ,$2, in - *,"$to_tool_file_cmd",*) - func_to_tool_file_result=$1 - ;; - *) - $to_tool_file_cmd "$1" - func_to_tool_file_result=$func_to_host_file_result - ;; - esac -} -# end func_to_tool_file - - -# func_convert_file_noop ARG -# Copy ARG to func_to_host_file_result. -func_convert_file_noop () -{ - func_to_host_file_result=$1 -} -# end func_convert_file_noop - - -# func_convert_file_msys_to_w32 ARG -# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic -# conversion to w32 is not available inside the cwrapper. Returns result in -# func_to_host_file_result. -func_convert_file_msys_to_w32 () -{ - $debug_cmd - - func_to_host_file_result=$1 - if test -n "$1"; then - func_convert_core_msys_to_w32 "$1" - func_to_host_file_result=$func_convert_core_msys_to_w32_result - fi - func_convert_file_check "$1" "$func_to_host_file_result" -} -# end func_convert_file_msys_to_w32 - - -# func_convert_file_cygwin_to_w32 ARG -# Convert file name ARG from Cygwin to w32 format. Returns result in -# func_to_host_file_result. -func_convert_file_cygwin_to_w32 () -{ - $debug_cmd - - func_to_host_file_result=$1 - if test -n "$1"; then - # because $build is cygwin, we call "the" cygpath in $PATH; no need to use - # LT_CYGPATH in this case. - func_to_host_file_result=`cygpath -m "$1"` - fi - func_convert_file_check "$1" "$func_to_host_file_result" -} -# end func_convert_file_cygwin_to_w32 - - -# func_convert_file_nix_to_w32 ARG -# Convert file name ARG from *nix to w32 format. Requires a wine environment -# and a working winepath. Returns result in func_to_host_file_result. -func_convert_file_nix_to_w32 () -{ - $debug_cmd - - func_to_host_file_result=$1 - if test -n "$1"; then - func_convert_core_file_wine_to_w32 "$1" - func_to_host_file_result=$func_convert_core_file_wine_to_w32_result - fi - func_convert_file_check "$1" "$func_to_host_file_result" -} -# end func_convert_file_nix_to_w32 - - -# func_convert_file_msys_to_cygwin ARG -# Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. -# Returns result in func_to_host_file_result. -func_convert_file_msys_to_cygwin () -{ - $debug_cmd - - func_to_host_file_result=$1 - if test -n "$1"; then - func_convert_core_msys_to_w32 "$1" - func_cygpath -u "$func_convert_core_msys_to_w32_result" - func_to_host_file_result=$func_cygpath_result - fi - func_convert_file_check "$1" "$func_to_host_file_result" -} -# end func_convert_file_msys_to_cygwin - - -# func_convert_file_nix_to_cygwin ARG -# Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed -# in a wine environment, working winepath, and LT_CYGPATH set. Returns result -# in func_to_host_file_result. -func_convert_file_nix_to_cygwin () -{ - $debug_cmd - - func_to_host_file_result=$1 - if test -n "$1"; then - # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. - func_convert_core_file_wine_to_w32 "$1" - func_cygpath -u "$func_convert_core_file_wine_to_w32_result" - func_to_host_file_result=$func_cygpath_result - fi - func_convert_file_check "$1" "$func_to_host_file_result" -} -# end func_convert_file_nix_to_cygwin - - -############################################# -# $build to $host PATH CONVERSION FUNCTIONS # -############################################# -# invoked via '$to_host_path_cmd ARG' -# -# In each case, ARG is the path to be converted from $build to $host format. -# The result will be available in $func_to_host_path_result. -# -# Path separators are also converted from $build format to $host format. If -# ARG begins or ends with a path separator character, it is preserved (but -# converted to $host format) on output. -# -# All path conversion functions are named using the following convention: -# file name conversion function : func_convert_file_X_to_Y () -# path conversion function : func_convert_path_X_to_Y () -# where, for any given $build/$host combination the 'X_to_Y' value is the -# same. If conversion functions are added for new $build/$host combinations, -# the two new functions must follow this pattern, or func_init_to_host_path_cmd -# will break. - - -# func_init_to_host_path_cmd -# Ensures that function "pointer" variable $to_host_path_cmd is set to the -# appropriate value, based on the value of $to_host_file_cmd. -to_host_path_cmd= -func_init_to_host_path_cmd () -{ - $debug_cmd - - if test -z "$to_host_path_cmd"; then - func_stripname 'func_convert_file_' '' "$to_host_file_cmd" - to_host_path_cmd=func_convert_path_$func_stripname_result - fi -} - - -# func_to_host_path ARG -# Converts the path ARG from $build format to $host format. Return result -# in func_to_host_path_result. -func_to_host_path () -{ - $debug_cmd - - func_init_to_host_path_cmd - $to_host_path_cmd "$1" -} -# end func_to_host_path - - -# func_convert_path_noop ARG -# Copy ARG to func_to_host_path_result. -func_convert_path_noop () -{ - func_to_host_path_result=$1 -} -# end func_convert_path_noop - - -# func_convert_path_msys_to_w32 ARG -# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic -# conversion to w32 is not available inside the cwrapper. Returns result in -# func_to_host_path_result. -func_convert_path_msys_to_w32 () -{ - $debug_cmd - - func_to_host_path_result=$1 - if test -n "$1"; then - # Remove leading and trailing path separator characters from ARG. MSYS - # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; - # and winepath ignores them completely. - func_stripname : : "$1" - func_to_host_path_tmp1=$func_stripname_result - func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" - func_to_host_path_result=$func_convert_core_msys_to_w32_result - func_convert_path_check : ";" \ - "$func_to_host_path_tmp1" "$func_to_host_path_result" - func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" - fi -} -# end func_convert_path_msys_to_w32 - - -# func_convert_path_cygwin_to_w32 ARG -# Convert path ARG from Cygwin to w32 format. Returns result in -# func_to_host_file_result. -func_convert_path_cygwin_to_w32 () -{ - $debug_cmd - - func_to_host_path_result=$1 - if test -n "$1"; then - # See func_convert_path_msys_to_w32: - func_stripname : : "$1" - func_to_host_path_tmp1=$func_stripname_result - func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` - func_convert_path_check : ";" \ - "$func_to_host_path_tmp1" "$func_to_host_path_result" - func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" - fi -} -# end func_convert_path_cygwin_to_w32 - - -# func_convert_path_nix_to_w32 ARG -# Convert path ARG from *nix to w32 format. Requires a wine environment and -# a working winepath. Returns result in func_to_host_file_result. -func_convert_path_nix_to_w32 () -{ - $debug_cmd - - func_to_host_path_result=$1 - if test -n "$1"; then - # See func_convert_path_msys_to_w32: - func_stripname : : "$1" - func_to_host_path_tmp1=$func_stripname_result - func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" - func_to_host_path_result=$func_convert_core_path_wine_to_w32_result - func_convert_path_check : ";" \ - "$func_to_host_path_tmp1" "$func_to_host_path_result" - func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" - fi -} -# end func_convert_path_nix_to_w32 - - -# func_convert_path_msys_to_cygwin ARG -# Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. -# Returns result in func_to_host_file_result. -func_convert_path_msys_to_cygwin () -{ - $debug_cmd - - func_to_host_path_result=$1 - if test -n "$1"; then - # See func_convert_path_msys_to_w32: - func_stripname : : "$1" - func_to_host_path_tmp1=$func_stripname_result - func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" - func_cygpath -u -p "$func_convert_core_msys_to_w32_result" - func_to_host_path_result=$func_cygpath_result - func_convert_path_check : : \ - "$func_to_host_path_tmp1" "$func_to_host_path_result" - func_convert_path_front_back_pathsep ":*" "*:" : "$1" - fi -} -# end func_convert_path_msys_to_cygwin - - -# func_convert_path_nix_to_cygwin ARG -# Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a -# a wine environment, working winepath, and LT_CYGPATH set. Returns result in -# func_to_host_file_result. -func_convert_path_nix_to_cygwin () -{ - $debug_cmd - - func_to_host_path_result=$1 - if test -n "$1"; then - # Remove leading and trailing path separator characters from - # ARG. msys behavior is inconsistent here, cygpath turns them - # into '.;' and ';.', and winepath ignores them completely. - func_stripname : : "$1" - func_to_host_path_tmp1=$func_stripname_result - func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" - func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" - func_to_host_path_result=$func_cygpath_result - func_convert_path_check : : \ - "$func_to_host_path_tmp1" "$func_to_host_path_result" - func_convert_path_front_back_pathsep ":*" "*:" : "$1" - fi -} -# end func_convert_path_nix_to_cygwin - - -# func_dll_def_p FILE -# True iff FILE is a Windows DLL '.def' file. -# Keep in sync with _LT_DLL_DEF_P in libtool.m4 -func_dll_def_p () -{ - $debug_cmd - - func_dll_def_p_tmp=`$SED -n \ - -e 's/^[ ]*//' \ - -e '/^\(;.*\)*$/d' \ - -e 's/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p' \ - -e q \ - "$1"` - test DEF = "$func_dll_def_p_tmp" -} - - -# func_mode_compile arg... -func_mode_compile () -{ - $debug_cmd - - # Get the compilation command and the source file. - base_compile= - srcfile=$nonopt # always keep a non-empty value in "srcfile" - suppress_opt=yes - suppress_output= - arg_mode=normal - libobj= - later= - pie_flag= - - for arg - do - case $arg_mode in - arg ) - # do not "continue". Instead, add this to base_compile - lastarg=$arg - arg_mode=normal - ;; - - target ) - libobj=$arg - arg_mode=normal - continue - ;; - - normal ) - # Accept any command-line options. - case $arg in - -o) - test -n "$libobj" && \ - func_fatal_error "you cannot specify '-o' more than once" - arg_mode=target - continue - ;; - - -pie | -fpie | -fPIE) - func_append pie_flag " $arg" - continue - ;; - - -shared | -static | -prefer-pic | -prefer-non-pic) - func_append later " $arg" - continue - ;; - - -no-suppress) - suppress_opt=no - continue - ;; - - -Xcompiler) - arg_mode=arg # the next one goes into the "base_compile" arg list - continue # The current "srcfile" will either be retained or - ;; # replaced later. I would guess that would be a bug. - - -Wc,*) - func_stripname '-Wc,' '' "$arg" - args=$func_stripname_result - lastarg= - save_ifs=$IFS; IFS=, - for arg in $args; do - IFS=$save_ifs - func_append_quoted lastarg "$arg" - done - IFS=$save_ifs - func_stripname ' ' '' "$lastarg" - lastarg=$func_stripname_result - - # Add the arguments to base_compile. - func_append base_compile " $lastarg" - continue - ;; - - *) - # Accept the current argument as the source file. - # The previous "srcfile" becomes the current argument. - # - lastarg=$srcfile - srcfile=$arg - ;; - esac # case $arg - ;; - esac # case $arg_mode - - # Aesthetically quote the previous argument. - func_append_quoted base_compile "$lastarg" - done # for arg - - case $arg_mode in - arg) - func_fatal_error "you must specify an argument for -Xcompile" - ;; - target) - func_fatal_error "you must specify a target with '-o'" - ;; - *) - # Get the name of the library object. - test -z "$libobj" && { - func_basename "$srcfile" - libobj=$func_basename_result - } - ;; - esac - - # Recognize several different file suffixes. - # If the user specifies -o file.o, it is replaced with file.lo - case $libobj in - *.[cCFSifmso] | \ - *.ada | *.adb | *.ads | *.asm | \ - *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ - *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) - func_xform "$libobj" - libobj=$func_xform_result - ;; - esac - - case $libobj in - *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; - *) - func_fatal_error "cannot determine name of library object from '$libobj'" - ;; - esac - - func_infer_tag $base_compile - - for arg in $later; do - case $arg in - -shared) - test yes = "$build_libtool_libs" \ - || func_fatal_configuration "cannot build a shared library" - build_old_libs=no - continue - ;; - - -static) - build_libtool_libs=no - build_old_libs=yes - continue - ;; - - -prefer-pic) - pic_mode=yes - continue - ;; - - -prefer-non-pic) - pic_mode=no - continue - ;; - esac - done - - func_quote_for_eval "$libobj" - test "X$libobj" != "X$func_quote_for_eval_result" \ - && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ - && func_warning "libobj name '$libobj' may not contain shell special characters." - func_dirname_and_basename "$obj" "/" "" - objname=$func_basename_result - xdir=$func_dirname_result - lobj=$xdir$objdir/$objname - - test -z "$base_compile" && \ - func_fatal_help "you must specify a compilation command" - - # Delete any leftover library objects. - if test yes = "$build_old_libs"; then - removelist="$obj $lobj $libobj ${libobj}T" - else - removelist="$lobj $libobj ${libobj}T" - fi - - # On Cygwin there's no "real" PIC flag so we must build both object types - case $host_os in - cygwin* | mingw* | pw32* | os2* | cegcc*) - pic_mode=default - ;; - esac - if test no = "$pic_mode" && test pass_all != "$deplibs_check_method"; then - # non-PIC code in shared libraries is not supported - pic_mode=default - fi - - # Calculate the filename of the output object if compiler does - # not support -o with -c - if test no = "$compiler_c_o"; then - output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.$objext - lockfile=$output_obj.lock - else - output_obj= - need_locks=no - lockfile= - fi - - # Lock this critical section if it is needed - # We use this script file to make the link, it avoids creating a new file - if test yes = "$need_locks"; then - until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do - func_echo "Waiting for $lockfile to be removed" - sleep 2 - done - elif test warn = "$need_locks"; then - if test -f "$lockfile"; then - $ECHO "\ -*** ERROR, $lockfile exists and contains: -`cat $lockfile 2>/dev/null` - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support '-c' and '-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $opt_dry_run || $RM $removelist - exit $EXIT_FAILURE - fi - func_append removelist " $output_obj" - $ECHO "$srcfile" > "$lockfile" - fi - - $opt_dry_run || $RM $removelist - func_append removelist " $lockfile" - trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 - - func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 - srcfile=$func_to_tool_file_result - func_quote_for_eval "$srcfile" - qsrcfile=$func_quote_for_eval_result - - # Only build a PIC object if we are building libtool libraries. - if test yes = "$build_libtool_libs"; then - # Without this assignment, base_compile gets emptied. - fbsd_hideous_sh_bug=$base_compile - - if test no != "$pic_mode"; then - command="$base_compile $qsrcfile $pic_flag" - else - # Don't build PIC code - command="$base_compile $qsrcfile" - fi - - func_mkdir_p "$xdir$objdir" - - if test -z "$output_obj"; then - # Place PIC objects in $objdir - func_append command " -o $lobj" - fi - - func_show_eval_locale "$command" \ - 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' - - if test warn = "$need_locks" && - test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then - $ECHO "\ -*** ERROR, $lockfile contains: -`cat $lockfile 2>/dev/null` - -but it should contain: -$srcfile - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support '-c' and '-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $opt_dry_run || $RM $removelist - exit $EXIT_FAILURE - fi - - # Just move the object if needed, then go on to compile the next one - if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then - func_show_eval '$MV "$output_obj" "$lobj"' \ - 'error=$?; $opt_dry_run || $RM $removelist; exit $error' - fi - - # Allow error messages only from the first compilation. - if test yes = "$suppress_opt"; then - suppress_output=' >/dev/null 2>&1' - fi - fi - - # Only build a position-dependent object if we build old libraries. - if test yes = "$build_old_libs"; then - if test yes != "$pic_mode"; then - # Don't build PIC code - command="$base_compile $qsrcfile$pie_flag" - else - command="$base_compile $qsrcfile $pic_flag" - fi - if test yes = "$compiler_c_o"; then - func_append command " -o $obj" - fi - - # Suppress compiler output if we already did a PIC compilation. - func_append command "$suppress_output" - func_show_eval_locale "$command" \ - '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' - - if test warn = "$need_locks" && - test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then - $ECHO "\ -*** ERROR, $lockfile contains: -`cat $lockfile 2>/dev/null` - -but it should contain: -$srcfile - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support '-c' and '-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $opt_dry_run || $RM $removelist - exit $EXIT_FAILURE - fi - - # Just move the object if needed - if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then - func_show_eval '$MV "$output_obj" "$obj"' \ - 'error=$?; $opt_dry_run || $RM $removelist; exit $error' - fi - fi - - $opt_dry_run || { - func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" - - # Unlock the critical section if it was locked - if test no != "$need_locks"; then - removelist=$lockfile - $RM "$lockfile" - fi - } - - exit $EXIT_SUCCESS -} - -$opt_help || { - test compile = "$opt_mode" && func_mode_compile ${1+"$@"} -} - -func_mode_help () -{ - # We need to display help for each of the modes. - case $opt_mode in - "") - # Generic help is extracted from the usage comments - # at the start of this file. - func_help - ;; - - clean) - $ECHO \ -"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... - -Remove files from the build directory. - -RM is the name of the program to use to delete files associated with each FILE -(typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed -to RM. - -If FILE is a libtool library, object or program, all the files associated -with it are deleted. Otherwise, only FILE itself is deleted using RM." - ;; - - compile) - $ECHO \ -"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE - -Compile a source file into a libtool library object. - -This mode accepts the following additional options: - - -o OUTPUT-FILE set the output file name to OUTPUT-FILE - -no-suppress do not suppress compiler output for multiple passes - -prefer-pic try to build PIC objects only - -prefer-non-pic try to build non-PIC objects only - -shared do not build a '.o' file suitable for static linking - -static only build a '.o' file suitable for static linking - -Wc,FLAG pass FLAG directly to the compiler - -COMPILE-COMMAND is a command to be used in creating a 'standard' object file -from the given SOURCEFILE. - -The output file name is determined by removing the directory component from -SOURCEFILE, then substituting the C source code suffix '.c' with the -library object suffix, '.lo'." - ;; - - execute) - $ECHO \ -"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... - -Automatically set library path, then run a program. - -This mode accepts the following additional options: - - -dlopen FILE add the directory containing FILE to the library path - -This mode sets the library path environment variable according to '-dlopen' -flags. - -If any of the ARGS are libtool executable wrappers, then they are translated -into their corresponding uninstalled binary, and any of their required library -directories are added to the library path. - -Then, COMMAND is executed, with ARGS as arguments." - ;; - - finish) - $ECHO \ -"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... - -Complete the installation of libtool libraries. - -Each LIBDIR is a directory that contains libtool libraries. - -The commands that this mode executes may require superuser privileges. Use -the '--dry-run' option if you just want to see what would be executed." - ;; - - install) - $ECHO \ -"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... - -Install executables or libraries. - -INSTALL-COMMAND is the installation command. The first component should be -either the 'install' or 'cp' program. - -The following components of INSTALL-COMMAND are treated specially: - - -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation - -The rest of the components are interpreted as arguments to that command (only -BSD-compatible install options are recognized)." - ;; - - link) - $ECHO \ -"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... - -Link object files or libraries together to form another library, or to -create an executable program. - -LINK-COMMAND is a command using the C compiler that you would use to create -a program from several object files. - -The following components of LINK-COMMAND are treated specially: - - -all-static do not do any dynamic linking at all - -avoid-version do not add a version suffix if possible - -bindir BINDIR specify path to binaries directory (for systems where - libraries must be found in the PATH setting at runtime) - -dlopen FILE '-dlpreopen' FILE if it cannot be dlopened at runtime - -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols - -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) - -export-symbols SYMFILE - try to export only the symbols listed in SYMFILE - -export-symbols-regex REGEX - try to export only the symbols matching REGEX - -LLIBDIR search LIBDIR for required installed libraries - -lNAME OUTPUT-FILE requires the installed library libNAME - -module build a library that can dlopened - -no-fast-install disable the fast-install mode - -no-install link a not-installable executable - -no-undefined declare that a library does not refer to external symbols - -o OUTPUT-FILE create OUTPUT-FILE from the specified objects - -objectlist FILE use a list of object files found in FILE to specify objects - -os2dllname NAME force a short DLL name on OS/2 (no effect on other OSes) - -precious-files-regex REGEX - don't remove output files matching REGEX - -release RELEASE specify package release information - -rpath LIBDIR the created library will eventually be installed in LIBDIR - -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries - -shared only do dynamic linking of libtool libraries - -shrext SUFFIX override the standard shared library file extension - -static do not do any dynamic linking of uninstalled libtool libraries - -static-libtool-libs - do not do any dynamic linking of libtool libraries - -version-info CURRENT[:REVISION[:AGE]] - specify library version info [each variable defaults to 0] - -weak LIBNAME declare that the target provides the LIBNAME interface - -Wc,FLAG - -Xcompiler FLAG pass linker-specific FLAG directly to the compiler - -Wl,FLAG - -Xlinker FLAG pass linker-specific FLAG directly to the linker - -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) - -All other options (arguments beginning with '-') are ignored. - -Every other argument is treated as a filename. Files ending in '.la' are -treated as uninstalled libtool libraries, other files are standard or library -object files. - -If the OUTPUT-FILE ends in '.la', then a libtool library is created, -only library objects ('.lo' files) may be specified, and '-rpath' is -required, except when creating a convenience library. - -If OUTPUT-FILE ends in '.a' or '.lib', then a standard library is created -using 'ar' and 'ranlib', or on Windows using 'lib'. - -If OUTPUT-FILE ends in '.lo' or '.$objext', then a reloadable object file -is created, otherwise an executable program is created." - ;; - - uninstall) - $ECHO \ -"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... - -Remove libraries from an installation directory. - -RM is the name of the program to use to delete files associated with each FILE -(typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed -to RM. - -If FILE is a libtool library, all the files associated with it are deleted. -Otherwise, only FILE itself is deleted using RM." - ;; - - *) - func_fatal_help "invalid operation mode '$opt_mode'" - ;; - esac - - echo - $ECHO "Try '$progname --help' for more information about other modes." -} - -# Now that we've collected a possible --mode arg, show help if necessary -if $opt_help; then - if test : = "$opt_help"; then - func_mode_help - else - { - func_help noexit - for opt_mode in compile link execute install finish uninstall clean; do - func_mode_help - done - } | $SED -n '1p; 2,$s/^Usage:/ or: /p' - { - func_help noexit - for opt_mode in compile link execute install finish uninstall clean; do - echo - func_mode_help - done - } | - $SED '1d - /^When reporting/,/^Report/{ - H - d - } - $x - /information about other modes/d - /more detailed .*MODE/d - s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' - fi - exit $? -fi - - -# func_mode_execute arg... -func_mode_execute () -{ - $debug_cmd - - # The first argument is the command name. - cmd=$nonopt - test -z "$cmd" && \ - func_fatal_help "you must specify a COMMAND" - - # Handle -dlopen flags immediately. - for file in $opt_dlopen; do - test -f "$file" \ - || func_fatal_help "'$file' is not a file" - - dir= - case $file in - *.la) - func_resolve_sysroot "$file" - file=$func_resolve_sysroot_result - - # Check to see that this really is a libtool archive. - func_lalib_unsafe_p "$file" \ - || func_fatal_help "'$lib' is not a valid libtool archive" - - # Read the libtool library. - dlname= - library_names= - func_source "$file" - - # Skip this library if it cannot be dlopened. - if test -z "$dlname"; then - # Warn if it was a shared library. - test -n "$library_names" && \ - func_warning "'$file' was not linked with '-export-dynamic'" - continue - fi - - func_dirname "$file" "" "." - dir=$func_dirname_result - - if test -f "$dir/$objdir/$dlname"; then - func_append dir "/$objdir" - else - if test ! -f "$dir/$dlname"; then - func_fatal_error "cannot find '$dlname' in '$dir' or '$dir/$objdir'" - fi - fi - ;; - - *.lo) - # Just add the directory containing the .lo file. - func_dirname "$file" "" "." - dir=$func_dirname_result - ;; - - *) - func_warning "'-dlopen' is ignored for non-libtool libraries and objects" - continue - ;; - esac - - # Get the absolute pathname. - absdir=`cd "$dir" && pwd` - test -n "$absdir" && dir=$absdir - - # Now add the directory to shlibpath_var. - if eval "test -z \"\$$shlibpath_var\""; then - eval "$shlibpath_var=\"\$dir\"" - else - eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" - fi - done - - # This variable tells wrapper scripts just to set shlibpath_var - # rather than running their programs. - libtool_execute_magic=$magic - - # Check if any of the arguments is a wrapper script. - args= - for file - do - case $file in - -* | *.la | *.lo ) ;; - *) - # Do a test to see if this is really a libtool program. - if func_ltwrapper_script_p "$file"; then - func_source "$file" - # Transform arg to wrapped name. - file=$progdir/$program - elif func_ltwrapper_executable_p "$file"; then - func_ltwrapper_scriptname "$file" - func_source "$func_ltwrapper_scriptname_result" - # Transform arg to wrapped name. - file=$progdir/$program - fi - ;; - esac - # Quote arguments (to preserve shell metacharacters). - func_append_quoted args "$file" - done - - if $opt_dry_run; then - # Display what would be done. - if test -n "$shlibpath_var"; then - eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" - echo "export $shlibpath_var" - fi - $ECHO "$cmd$args" - exit $EXIT_SUCCESS - else - if test -n "$shlibpath_var"; then - # Export the shlibpath_var. - eval "export $shlibpath_var" - fi - - # Restore saved environment variables - for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES - do - eval "if test \"\${save_$lt_var+set}\" = set; then - $lt_var=\$save_$lt_var; export $lt_var - else - $lt_unset $lt_var - fi" - done - - # Now prepare to actually exec the command. - exec_cmd=\$cmd$args - fi -} - -test execute = "$opt_mode" && func_mode_execute ${1+"$@"} - - -# func_mode_finish arg... -func_mode_finish () -{ - $debug_cmd - - libs= - libdirs= - admincmds= - - for opt in "$nonopt" ${1+"$@"} - do - if test -d "$opt"; then - func_append libdirs " $opt" - - elif test -f "$opt"; then - if func_lalib_unsafe_p "$opt"; then - func_append libs " $opt" - else - func_warning "'$opt' is not a valid libtool archive" - fi - - else - func_fatal_error "invalid argument '$opt'" - fi - done - - if test -n "$libs"; then - if test -n "$lt_sysroot"; then - sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` - sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" - else - sysroot_cmd= - fi - - # Remove sysroot references - if $opt_dry_run; then - for lib in $libs; do - echo "removing references to $lt_sysroot and '=' prefixes from $lib" - done - else - tmpdir=`func_mktempdir` - for lib in $libs; do - $SED -e "$sysroot_cmd s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ - > $tmpdir/tmp-la - mv -f $tmpdir/tmp-la $lib - done - ${RM}r "$tmpdir" - fi - fi - - if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then - for libdir in $libdirs; do - if test -n "$finish_cmds"; then - # Do each command in the finish commands. - func_execute_cmds "$finish_cmds" 'admincmds="$admincmds -'"$cmd"'"' - fi - if test -n "$finish_eval"; then - # Do the single finish_eval. - eval cmds=\"$finish_eval\" - $opt_dry_run || eval "$cmds" || func_append admincmds " - $cmds" - fi - done - fi - - # Exit here if they wanted silent mode. - $opt_quiet && exit $EXIT_SUCCESS - - if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then - echo "----------------------------------------------------------------------" - echo "Libraries have been installed in:" - for libdir in $libdirs; do - $ECHO " $libdir" - done - echo - echo "If you ever happen to want to link against installed libraries" - echo "in a given directory, LIBDIR, you must either use libtool, and" - echo "specify the full pathname of the library, or use the '-LLIBDIR'" - echo "flag during linking and do at least one of the following:" - if test -n "$shlibpath_var"; then - echo " - add LIBDIR to the '$shlibpath_var' environment variable" - echo " during execution" - fi - if test -n "$runpath_var"; then - echo " - add LIBDIR to the '$runpath_var' environment variable" - echo " during linking" - fi - if test -n "$hardcode_libdir_flag_spec"; then - libdir=LIBDIR - eval flag=\"$hardcode_libdir_flag_spec\" - - $ECHO " - use the '$flag' linker flag" - fi - if test -n "$admincmds"; then - $ECHO " - have your system administrator run these commands:$admincmds" - fi - if test -f /etc/ld.so.conf; then - echo " - have your system administrator add LIBDIR to '/etc/ld.so.conf'" - fi - echo - - echo "See any operating system documentation about shared libraries for" - case $host in - solaris2.[6789]|solaris2.1[0-9]) - echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" - echo "pages." - ;; - *) - echo "more information, such as the ld(1) and ld.so(8) manual pages." - ;; - esac - echo "----------------------------------------------------------------------" - fi - exit $EXIT_SUCCESS -} - -test finish = "$opt_mode" && func_mode_finish ${1+"$@"} - - -# func_mode_install arg... -func_mode_install () -{ - $debug_cmd - - # There may be an optional sh(1) argument at the beginning of - # install_prog (especially on Windows NT). - if test "$SHELL" = "$nonopt" || test /bin/sh = "$nonopt" || - # Allow the use of GNU shtool's install command. - case $nonopt in *shtool*) :;; *) false;; esac - then - # Aesthetically quote it. - func_quote_for_eval "$nonopt" - install_prog="$func_quote_for_eval_result " - arg=$1 - shift - else - install_prog= - arg=$nonopt - fi - - # The real first argument should be the name of the installation program. - # Aesthetically quote it. - func_quote_for_eval "$arg" - func_append install_prog "$func_quote_for_eval_result" - install_shared_prog=$install_prog - case " $install_prog " in - *[\\\ /]cp\ *) install_cp=: ;; - *) install_cp=false ;; - esac - - # We need to accept at least all the BSD install flags. - dest= - files= - opts= - prev= - install_type= - isdir=false - stripme= - no_mode=: - for arg - do - arg2= - if test -n "$dest"; then - func_append files " $dest" - dest=$arg - continue - fi - - case $arg in - -d) isdir=: ;; - -f) - if $install_cp; then :; else - prev=$arg - fi - ;; - -g | -m | -o) - prev=$arg - ;; - -s) - stripme=" -s" - continue - ;; - -*) - ;; - *) - # If the previous option needed an argument, then skip it. - if test -n "$prev"; then - if test X-m = "X$prev" && test -n "$install_override_mode"; then - arg2=$install_override_mode - no_mode=false - fi - prev= - else - dest=$arg - continue - fi - ;; - esac - - # Aesthetically quote the argument. - func_quote_for_eval "$arg" - func_append install_prog " $func_quote_for_eval_result" - if test -n "$arg2"; then - func_quote_for_eval "$arg2" - fi - func_append install_shared_prog " $func_quote_for_eval_result" - done - - test -z "$install_prog" && \ - func_fatal_help "you must specify an install program" - - test -n "$prev" && \ - func_fatal_help "the '$prev' option requires an argument" - - if test -n "$install_override_mode" && $no_mode; then - if $install_cp; then :; else - func_quote_for_eval "$install_override_mode" - func_append install_shared_prog " -m $func_quote_for_eval_result" - fi - fi - - if test -z "$files"; then - if test -z "$dest"; then - func_fatal_help "no file or destination specified" - else - func_fatal_help "you must specify a destination" - fi - fi - - # Strip any trailing slash from the destination. - func_stripname '' '/' "$dest" - dest=$func_stripname_result - - # Check to see that the destination is a directory. - test -d "$dest" && isdir=: - if $isdir; then - destdir=$dest - destname= - else - func_dirname_and_basename "$dest" "" "." - destdir=$func_dirname_result - destname=$func_basename_result - - # Not a directory, so check to see that there is only one file specified. - set dummy $files; shift - test "$#" -gt 1 && \ - func_fatal_help "'$dest' is not a directory" - fi - case $destdir in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - for file in $files; do - case $file in - *.lo) ;; - *) - func_fatal_help "'$destdir' must be an absolute directory name" - ;; - esac - done - ;; - esac - - # This variable tells wrapper scripts just to set variables rather - # than running their programs. - libtool_install_magic=$magic - - staticlibs= - future_libdirs= - current_libdirs= - for file in $files; do - - # Do each installation. - case $file in - *.$libext) - # Do the static libraries later. - func_append staticlibs " $file" - ;; - - *.la) - func_resolve_sysroot "$file" - file=$func_resolve_sysroot_result - - # Check to see that this really is a libtool archive. - func_lalib_unsafe_p "$file" \ - || func_fatal_help "'$file' is not a valid libtool archive" - - library_names= - old_library= - relink_command= - func_source "$file" - - # Add the libdir to current_libdirs if it is the destination. - if test "X$destdir" = "X$libdir"; then - case "$current_libdirs " in - *" $libdir "*) ;; - *) func_append current_libdirs " $libdir" ;; - esac - else - # Note the libdir as a future libdir. - case "$future_libdirs " in - *" $libdir "*) ;; - *) func_append future_libdirs " $libdir" ;; - esac - fi - - func_dirname "$file" "/" "" - dir=$func_dirname_result - func_append dir "$objdir" - - if test -n "$relink_command"; then - # Determine the prefix the user has applied to our future dir. - inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` - - # Don't allow the user to place us outside of our expected - # location b/c this prevents finding dependent libraries that - # are installed to the same prefix. - # At present, this check doesn't affect windows .dll's that - # are installed into $libdir/../bin (currently, that works fine) - # but it's something to keep an eye on. - test "$inst_prefix_dir" = "$destdir" && \ - func_fatal_error "error: cannot install '$file' to a directory not ending in $libdir" - - if test -n "$inst_prefix_dir"; then - # Stick the inst_prefix_dir data into the link command. - relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` - else - relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` - fi - - func_warning "relinking '$file'" - func_show_eval "$relink_command" \ - 'func_fatal_error "error: relink '\''$file'\'' with the above command before installing it"' - fi - - # See the names of the shared library. - set dummy $library_names; shift - if test -n "$1"; then - realname=$1 - shift - - srcname=$realname - test -n "$relink_command" && srcname=${realname}T - - # Install the shared library and build the symlinks. - func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ - 'exit $?' - tstripme=$stripme - case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - case $realname in - *.dll.a) - tstripme= - ;; - esac - ;; - os2*) - case $realname in - *_dll.a) - tstripme= - ;; - esac - ;; - esac - if test -n "$tstripme" && test -n "$striplib"; then - func_show_eval "$striplib $destdir/$realname" 'exit $?' - fi - - if test "$#" -gt 0; then - # Delete the old symlinks, and create new ones. - # Try 'ln -sf' first, because the 'ln' binary might depend on - # the symlink we replace! Solaris /bin/ln does not understand -f, - # so we also need to try rm && ln -s. - for linkname - do - test "$linkname" != "$realname" \ - && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" - done - fi - - # Do each command in the postinstall commands. - lib=$destdir/$realname - func_execute_cmds "$postinstall_cmds" 'exit $?' - fi - - # Install the pseudo-library for information purposes. - func_basename "$file" - name=$func_basename_result - instname=$dir/${name}i - func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' - - # Maybe install the static library, too. - test -n "$old_library" && func_append staticlibs " $dir/$old_library" - ;; - - *.lo) - # Install (i.e. copy) a libtool object. - - # Figure out destination file name, if it wasn't already specified. - if test -n "$destname"; then - destfile=$destdir/$destname - else - func_basename "$file" - destfile=$func_basename_result - destfile=$destdir/$destfile - fi - - # Deduce the name of the destination old-style object file. - case $destfile in - *.lo) - func_lo2o "$destfile" - staticdest=$func_lo2o_result - ;; - *.$objext) - staticdest=$destfile - destfile= - ;; - *) - func_fatal_help "cannot copy a libtool object to '$destfile'" - ;; - esac - - # Install the libtool object if requested. - test -n "$destfile" && \ - func_show_eval "$install_prog $file $destfile" 'exit $?' - - # Install the old object if enabled. - if test yes = "$build_old_libs"; then - # Deduce the name of the old-style object file. - func_lo2o "$file" - staticobj=$func_lo2o_result - func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' - fi - exit $EXIT_SUCCESS - ;; - - *) - # Figure out destination file name, if it wasn't already specified. - if test -n "$destname"; then - destfile=$destdir/$destname - else - func_basename "$file" - destfile=$func_basename_result - destfile=$destdir/$destfile - fi - - # If the file is missing, and there is a .exe on the end, strip it - # because it is most likely a libtool script we actually want to - # install - stripped_ext= - case $file in - *.exe) - if test ! -f "$file"; then - func_stripname '' '.exe' "$file" - file=$func_stripname_result - stripped_ext=.exe - fi - ;; - esac - - # Do a test to see if this is really a libtool program. - case $host in - *cygwin* | *mingw*) - if func_ltwrapper_executable_p "$file"; then - func_ltwrapper_scriptname "$file" - wrapper=$func_ltwrapper_scriptname_result - else - func_stripname '' '.exe' "$file" - wrapper=$func_stripname_result - fi - ;; - *) - wrapper=$file - ;; - esac - if func_ltwrapper_script_p "$wrapper"; then - notinst_deplibs= - relink_command= - - func_source "$wrapper" - - # Check the variables that should have been set. - test -z "$generated_by_libtool_version" && \ - func_fatal_error "invalid libtool wrapper script '$wrapper'" - - finalize=: - for lib in $notinst_deplibs; do - # Check to see that each library is installed. - libdir= - if test -f "$lib"; then - func_source "$lib" - fi - libfile=$libdir/`$ECHO "$lib" | $SED 's%^.*/%%g'` - if test -n "$libdir" && test ! -f "$libfile"; then - func_warning "'$lib' has not been installed in '$libdir'" - finalize=false - fi - done - - relink_command= - func_source "$wrapper" - - outputname= - if test no = "$fast_install" && test -n "$relink_command"; then - $opt_dry_run || { - if $finalize; then - tmpdir=`func_mktempdir` - func_basename "$file$stripped_ext" - file=$func_basename_result - outputname=$tmpdir/$file - # Replace the output file specification. - relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` - - $opt_quiet || { - func_quote_for_expand "$relink_command" - eval "func_echo $func_quote_for_expand_result" - } - if eval "$relink_command"; then : - else - func_error "error: relink '$file' with the above command before installing it" - $opt_dry_run || ${RM}r "$tmpdir" - continue - fi - file=$outputname - else - func_warning "cannot relink '$file'" - fi - } - else - # Install the binary that we compiled earlier. - file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` - fi - fi - - # remove .exe since cygwin /usr/bin/install will append another - # one anyway - case $install_prog,$host in - */usr/bin/install*,*cygwin*) - case $file:$destfile in - *.exe:*.exe) - # this is ok - ;; - *.exe:*) - destfile=$destfile.exe - ;; - *:*.exe) - func_stripname '' '.exe' "$destfile" - destfile=$func_stripname_result - ;; - esac - ;; - esac - func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' - $opt_dry_run || if test -n "$outputname"; then - ${RM}r "$tmpdir" - fi - ;; - esac - done - - for file in $staticlibs; do - func_basename "$file" - name=$func_basename_result - - # Set up the ranlib parameters. - oldlib=$destdir/$name - func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 - tool_oldlib=$func_to_tool_file_result - - func_show_eval "$install_prog \$file \$oldlib" 'exit $?' - - if test -n "$stripme" && test -n "$old_striplib"; then - func_show_eval "$old_striplib $tool_oldlib" 'exit $?' - fi - - # Do each command in the postinstall commands. - func_execute_cmds "$old_postinstall_cmds" 'exit $?' - done - - test -n "$future_libdirs" && \ - func_warning "remember to run '$progname --finish$future_libdirs'" - - if test -n "$current_libdirs"; then - # Maybe just do a dry run. - $opt_dry_run && current_libdirs=" -n$current_libdirs" - exec_cmd='$SHELL "$progpath" $preserve_args --finish$current_libdirs' - else - exit $EXIT_SUCCESS - fi -} - -test install = "$opt_mode" && func_mode_install ${1+"$@"} - - -# func_generate_dlsyms outputname originator pic_p -# Extract symbols from dlprefiles and create ${outputname}S.o with -# a dlpreopen symbol table. -func_generate_dlsyms () -{ - $debug_cmd - - my_outputname=$1 - my_originator=$2 - my_pic_p=${3-false} - my_prefix=`$ECHO "$my_originator" | $SED 's%[^a-zA-Z0-9]%_%g'` - my_dlsyms= - - if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then - if test -n "$NM" && test -n "$global_symbol_pipe"; then - my_dlsyms=${my_outputname}S.c - else - func_error "not configured to extract global symbols from dlpreopened files" - fi - fi - - if test -n "$my_dlsyms"; then - case $my_dlsyms in - "") ;; - *.c) - # Discover the nlist of each of the dlfiles. - nlist=$output_objdir/$my_outputname.nm - - func_show_eval "$RM $nlist ${nlist}S ${nlist}T" - - # Parse the name list into a source file. - func_verbose "creating $output_objdir/$my_dlsyms" - - $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ -/* $my_dlsyms - symbol resolution table for '$my_outputname' dlsym emulation. */ -/* Generated by $PROGRAM (GNU $PACKAGE) $VERSION */ - -#ifdef __cplusplus -extern \"C\" { -#endif - -#if defined __GNUC__ && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) -#pragma GCC diagnostic ignored \"-Wstrict-prototypes\" -#endif - -/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE -/* DATA imports from DLLs on WIN32 can't be const, because runtime - relocations are performed -- see ld's documentation on pseudo-relocs. */ -# define LT_DLSYM_CONST -#elif defined __osf__ -/* This system does not cope well with relocations in const data. */ -# define LT_DLSYM_CONST -#else -# define LT_DLSYM_CONST const -#endif - -#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) - -/* External symbol declarations for the compiler. */\ -" - - if test yes = "$dlself"; then - func_verbose "generating symbol list for '$output'" - - $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" - - # Add our own program objects to the symbol list. - progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` - for progfile in $progfiles; do - func_to_tool_file "$progfile" func_convert_file_msys_to_w32 - func_verbose "extracting global C symbols from '$func_to_tool_file_result'" - $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" - done - - if test -n "$exclude_expsyms"; then - $opt_dry_run || { - eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' - eval '$MV "$nlist"T "$nlist"' - } - fi - - if test -n "$export_symbols_regex"; then - $opt_dry_run || { - eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' - eval '$MV "$nlist"T "$nlist"' - } - fi - - # Prepare the list of exported symbols - if test -z "$export_symbols"; then - export_symbols=$output_objdir/$outputname.exp - $opt_dry_run || { - $RM $export_symbols - eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' - case $host in - *cygwin* | *mingw* | *cegcc* ) - eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' - eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' - ;; - esac - } - else - $opt_dry_run || { - eval "$SED -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' - eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' - eval '$MV "$nlist"T "$nlist"' - case $host in - *cygwin* | *mingw* | *cegcc* ) - eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' - eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' - ;; - esac - } - fi - fi - - for dlprefile in $dlprefiles; do - func_verbose "extracting global C symbols from '$dlprefile'" - func_basename "$dlprefile" - name=$func_basename_result - case $host in - *cygwin* | *mingw* | *cegcc* ) - # if an import library, we need to obtain dlname - if func_win32_import_lib_p "$dlprefile"; then - func_tr_sh "$dlprefile" - eval "curr_lafile=\$libfile_$func_tr_sh_result" - dlprefile_dlbasename= - if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then - # Use subshell, to avoid clobbering current variable values - dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` - if test -n "$dlprefile_dlname"; then - func_basename "$dlprefile_dlname" - dlprefile_dlbasename=$func_basename_result - else - # no lafile. user explicitly requested -dlpreopen . - $sharedlib_from_linklib_cmd "$dlprefile" - dlprefile_dlbasename=$sharedlib_from_linklib_result - fi - fi - $opt_dry_run || { - if test -n "$dlprefile_dlbasename"; then - eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' - else - func_warning "Could not compute DLL name from $name" - eval '$ECHO ": $name " >> "$nlist"' - fi - func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 - eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | - $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" - } - else # not an import lib - $opt_dry_run || { - eval '$ECHO ": $name " >> "$nlist"' - func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 - eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" - } - fi - ;; - *) - $opt_dry_run || { - eval '$ECHO ": $name " >> "$nlist"' - func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 - eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" - } - ;; - esac - done - - $opt_dry_run || { - # Make sure we have at least an empty file. - test -f "$nlist" || : > "$nlist" - - if test -n "$exclude_expsyms"; then - $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T - $MV "$nlist"T "$nlist" - fi - - # Try sorting and uniquifying the output. - if $GREP -v "^: " < "$nlist" | - if sort -k 3 /dev/null 2>&1; then - sort -k 3 - else - sort +2 - fi | - uniq > "$nlist"S; then - : - else - $GREP -v "^: " < "$nlist" > "$nlist"S - fi - - if test -f "$nlist"S; then - eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' - else - echo '/* NONE */' >> "$output_objdir/$my_dlsyms" - fi - - func_show_eval '$RM "${nlist}I"' - if test -n "$global_symbol_to_import"; then - eval "$global_symbol_to_import"' < "$nlist"S > "$nlist"I' - fi - - echo >> "$output_objdir/$my_dlsyms" "\ - -/* The mapping between symbol names and symbols. */ -typedef struct { - const char *name; - void *address; -} lt_dlsymlist; -extern LT_DLSYM_CONST lt_dlsymlist -lt_${my_prefix}_LTX_preloaded_symbols[];\ -" - - if test -s "$nlist"I; then - echo >> "$output_objdir/$my_dlsyms" "\ -static void lt_syminit(void) -{ - LT_DLSYM_CONST lt_dlsymlist *symbol = lt_${my_prefix}_LTX_preloaded_symbols; - for (; symbol->name; ++symbol) - {" - $SED 's/.*/ if (STREQ (symbol->name, \"&\")) symbol->address = (void *) \&&;/' < "$nlist"I >> "$output_objdir/$my_dlsyms" - echo >> "$output_objdir/$my_dlsyms" "\ - } -}" - fi - echo >> "$output_objdir/$my_dlsyms" "\ -LT_DLSYM_CONST lt_dlsymlist -lt_${my_prefix}_LTX_preloaded_symbols[] = -{ {\"$my_originator\", (void *) 0}," - - if test -s "$nlist"I; then - echo >> "$output_objdir/$my_dlsyms" "\ - {\"@INIT@\", (void *) <_syminit}," - fi - - case $need_lib_prefix in - no) - eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" - ;; - *) - eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" - ;; - esac - echo >> "$output_objdir/$my_dlsyms" "\ - {0, (void *) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt_${my_prefix}_LTX_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif\ -" - } # !$opt_dry_run - - pic_flag_for_symtable= - case "$compile_command " in - *" -static "*) ;; - *) - case $host in - # compiling the symbol table file with pic_flag works around - # a FreeBSD bug that causes programs to crash when -lm is - # linked before any other PIC object. But we must not use - # pic_flag when linking with -static. The problem exists in - # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. - *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) - pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; - *-*-hpux*) - pic_flag_for_symtable=" $pic_flag" ;; - *) - $my_pic_p && pic_flag_for_symtable=" $pic_flag" - ;; - esac - ;; - esac - symtab_cflags= - for arg in $LTCFLAGS; do - case $arg in - -pie | -fpie | -fPIE) ;; - *) func_append symtab_cflags " $arg" ;; - esac - done - - # Now compile the dynamic symbol file. - func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' - - # Clean up the generated files. - func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T" "${nlist}I"' - - # Transform the symbol file into the correct name. - symfileobj=$output_objdir/${my_outputname}S.$objext - case $host in - *cygwin* | *mingw* | *cegcc* ) - if test -f "$output_objdir/$my_outputname.def"; then - compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` - finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` - else - compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` - finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` - fi - ;; - *) - compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` - finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` - ;; - esac - ;; - *) - func_fatal_error "unknown suffix for '$my_dlsyms'" - ;; - esac - else - # We keep going just in case the user didn't refer to - # lt_preloaded_symbols. The linker will fail if global_symbol_pipe - # really was required. - - # Nullify the symbol file. - compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` - finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` - fi -} - -# func_cygming_gnu_implib_p ARG -# This predicate returns with zero status (TRUE) if -# ARG is a GNU/binutils-style import library. Returns -# with nonzero status (FALSE) otherwise. -func_cygming_gnu_implib_p () -{ - $debug_cmd - - func_to_tool_file "$1" func_convert_file_msys_to_w32 - func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` - test -n "$func_cygming_gnu_implib_tmp" -} - -# func_cygming_ms_implib_p ARG -# This predicate returns with zero status (TRUE) if -# ARG is an MS-style import library. Returns -# with nonzero status (FALSE) otherwise. -func_cygming_ms_implib_p () -{ - $debug_cmd - - func_to_tool_file "$1" func_convert_file_msys_to_w32 - func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` - test -n "$func_cygming_ms_implib_tmp" -} - -# func_win32_libid arg -# return the library type of file 'arg' -# -# Need a lot of goo to handle *both* DLLs and import libs -# Has to be a shell function in order to 'eat' the argument -# that is supplied when $file_magic_command is called. -# Despite the name, also deal with 64 bit binaries. -func_win32_libid () -{ - $debug_cmd - - win32_libid_type=unknown - win32_fileres=`file -L $1 2>/dev/null` - case $win32_fileres in - *ar\ archive\ import\ library*) # definitely import - win32_libid_type="x86 archive import" - ;; - *ar\ archive*) # could be an import, or static - # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. - if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | - $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then - case $nm_interface in - "MS dumpbin") - if func_cygming_ms_implib_p "$1" || - func_cygming_gnu_implib_p "$1" - then - win32_nmres=import - else - win32_nmres= - fi - ;; - *) - func_to_tool_file "$1" func_convert_file_msys_to_w32 - win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | - $SED -n -e ' - 1,100{ - / I /{ - s|.*|import| - p - q - } - }'` - ;; - esac - case $win32_nmres in - import*) win32_libid_type="x86 archive import";; - *) win32_libid_type="x86 archive static";; - esac - fi - ;; - *DLL*) - win32_libid_type="x86 DLL" - ;; - *executable*) # but shell scripts are "executable" too... - case $win32_fileres in - *MS\ Windows\ PE\ Intel*) - win32_libid_type="x86 DLL" - ;; - esac - ;; - esac - $ECHO "$win32_libid_type" -} - -# func_cygming_dll_for_implib ARG -# -# Platform-specific function to extract the -# name of the DLL associated with the specified -# import library ARG. -# Invoked by eval'ing the libtool variable -# $sharedlib_from_linklib_cmd -# Result is available in the variable -# $sharedlib_from_linklib_result -func_cygming_dll_for_implib () -{ - $debug_cmd - - sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` -} - -# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs -# -# The is the core of a fallback implementation of a -# platform-specific function to extract the name of the -# DLL associated with the specified import library LIBNAME. -# -# SECTION_NAME is either .idata$6 or .idata$7, depending -# on the platform and compiler that created the implib. -# -# Echos the name of the DLL associated with the -# specified import library. -func_cygming_dll_for_implib_fallback_core () -{ - $debug_cmd - - match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` - $OBJDUMP -s --section "$1" "$2" 2>/dev/null | - $SED '/^Contents of section '"$match_literal"':/{ - # Place marker at beginning of archive member dllname section - s/.*/====MARK====/ - p - d - } - # These lines can sometimes be longer than 43 characters, but - # are always uninteresting - /:[ ]*file format pe[i]\{,1\}-/d - /^In archive [^:]*:/d - # Ensure marker is printed - /^====MARK====/p - # Remove all lines with less than 43 characters - /^.\{43\}/!d - # From remaining lines, remove first 43 characters - s/^.\{43\}//' | - $SED -n ' - # Join marker and all lines until next marker into a single line - /^====MARK====/ b para - H - $ b para - b - :para - x - s/\n//g - # Remove the marker - s/^====MARK====// - # Remove trailing dots and whitespace - s/[\. \t]*$// - # Print - /./p' | - # we now have a list, one entry per line, of the stringified - # contents of the appropriate section of all members of the - # archive that possess that section. Heuristic: eliminate - # all those that have a first or second character that is - # a '.' (that is, objdump's representation of an unprintable - # character.) This should work for all archives with less than - # 0x302f exports -- but will fail for DLLs whose name actually - # begins with a literal '.' or a single character followed by - # a '.'. - # - # Of those that remain, print the first one. - $SED -e '/^\./d;/^.\./d;q' -} - -# func_cygming_dll_for_implib_fallback ARG -# Platform-specific function to extract the -# name of the DLL associated with the specified -# import library ARG. -# -# This fallback implementation is for use when $DLLTOOL -# does not support the --identify-strict option. -# Invoked by eval'ing the libtool variable -# $sharedlib_from_linklib_cmd -# Result is available in the variable -# $sharedlib_from_linklib_result -func_cygming_dll_for_implib_fallback () -{ - $debug_cmd - - if func_cygming_gnu_implib_p "$1"; then - # binutils import library - sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` - elif func_cygming_ms_implib_p "$1"; then - # ms-generated import library - sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` - else - # unknown - sharedlib_from_linklib_result= - fi -} - - -# func_extract_an_archive dir oldlib -func_extract_an_archive () -{ - $debug_cmd - - f_ex_an_ar_dir=$1; shift - f_ex_an_ar_oldlib=$1 - if test yes = "$lock_old_archive_extraction"; then - lockfile=$f_ex_an_ar_oldlib.lock - until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do - func_echo "Waiting for $lockfile to be removed" - sleep 2 - done - fi - func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ - 'stat=$?; rm -f "$lockfile"; exit $stat' - if test yes = "$lock_old_archive_extraction"; then - $opt_dry_run || rm -f "$lockfile" - fi - if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then - : - else - func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" - fi -} - - -# func_extract_archives gentop oldlib ... -func_extract_archives () -{ - $debug_cmd - - my_gentop=$1; shift - my_oldlibs=${1+"$@"} - my_oldobjs= - my_xlib= - my_xabs= - my_xdir= - - for my_xlib in $my_oldlibs; do - # Extract the objects. - case $my_xlib in - [\\/]* | [A-Za-z]:[\\/]*) my_xabs=$my_xlib ;; - *) my_xabs=`pwd`"/$my_xlib" ;; - esac - func_basename "$my_xlib" - my_xlib=$func_basename_result - my_xlib_u=$my_xlib - while :; do - case " $extracted_archives " in - *" $my_xlib_u "*) - func_arith $extracted_serial + 1 - extracted_serial=$func_arith_result - my_xlib_u=lt$extracted_serial-$my_xlib ;; - *) break ;; - esac - done - extracted_archives="$extracted_archives $my_xlib_u" - my_xdir=$my_gentop/$my_xlib_u - - func_mkdir_p "$my_xdir" - - case $host in - *-darwin*) - func_verbose "Extracting $my_xabs" - # Do not bother doing anything if just a dry run - $opt_dry_run || { - darwin_orig_dir=`pwd` - cd $my_xdir || exit $? - darwin_archive=$my_xabs - darwin_curdir=`pwd` - func_basename "$darwin_archive" - darwin_base_archive=$func_basename_result - darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` - if test -n "$darwin_arches"; then - darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` - darwin_arch= - func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" - for darwin_arch in $darwin_arches; do - func_mkdir_p "unfat-$$/$darwin_base_archive-$darwin_arch" - $LIPO -thin $darwin_arch -output "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" "$darwin_archive" - cd "unfat-$$/$darwin_base_archive-$darwin_arch" - func_extract_an_archive "`pwd`" "$darwin_base_archive" - cd "$darwin_curdir" - $RM "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" - done # $darwin_arches - ## Okay now we've a bunch of thin objects, gotta fatten them up :) - darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$sed_basename" | sort -u` - darwin_file= - darwin_files= - for darwin_file in $darwin_filelist; do - darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` - $LIPO -create -output "$darwin_file" $darwin_files - done # $darwin_filelist - $RM -rf unfat-$$ - cd "$darwin_orig_dir" - else - cd $darwin_orig_dir - func_extract_an_archive "$my_xdir" "$my_xabs" - fi # $darwin_arches - } # !$opt_dry_run - ;; - *) - func_extract_an_archive "$my_xdir" "$my_xabs" - ;; - esac - my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` - done - - func_extract_archives_result=$my_oldobjs -} - - -# func_emit_wrapper [arg=no] -# -# Emit a libtool wrapper script on stdout. -# Don't directly open a file because we may want to -# incorporate the script contents within a cygwin/mingw -# wrapper executable. Must ONLY be called from within -# func_mode_link because it depends on a number of variables -# set therein. -# -# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR -# variable will take. If 'yes', then the emitted script -# will assume that the directory where it is stored is -# the $objdir directory. This is a cygwin/mingw-specific -# behavior. -func_emit_wrapper () -{ - func_emit_wrapper_arg1=${1-no} - - $ECHO "\ -#! $SHELL - -# $output - temporary wrapper script for $objdir/$outputname -# Generated by $PROGRAM (GNU $PACKAGE) $VERSION -# -# The $output program cannot be directly executed until all the libtool -# libraries that it depends on are installed. -# -# This wrapper script should never be moved out of the build directory. -# If it is, it will not operate correctly. - -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -sed_quote_subst='$sed_quote_subst' - -# Be Bourne compatible -if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which - # is contrary to our usage. Disable this feature. - alias -g '\${1+\"\$@\"}'='\"\$@\"' - setopt NO_GLOB_SUBST -else - case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac -fi -BIN_SH=xpg4; export BIN_SH # for Tru64 -DUALCASE=1; export DUALCASE # for MKS sh - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -relink_command=\"$relink_command\" - -# This environment variable determines our operation mode. -if test \"\$libtool_install_magic\" = \"$magic\"; then - # install mode needs the following variables: - generated_by_libtool_version='$macro_version' - notinst_deplibs='$notinst_deplibs' -else - # When we are sourced in execute mode, \$file and \$ECHO are already set. - if test \"\$libtool_execute_magic\" != \"$magic\"; then - file=\"\$0\"" - - qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` - $ECHO "\ - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -\$1 -_LTECHO_EOF' -} - ECHO=\"$qECHO\" - fi - -# Very basic option parsing. These options are (a) specific to -# the libtool wrapper, (b) are identical between the wrapper -# /script/ and the wrapper /executable/ that is used only on -# windows platforms, and (c) all begin with the string "--lt-" -# (application programs are unlikely to have options that match -# this pattern). -# -# There are only two supported options: --lt-debug and -# --lt-dump-script. There is, deliberately, no --lt-help. -# -# The first argument to this parsing function should be the -# script's $0 value, followed by "$@". -lt_option_debug= -func_parse_lt_options () -{ - lt_script_arg0=\$0 - shift - for lt_opt - do - case \"\$lt_opt\" in - --lt-debug) lt_option_debug=1 ;; - --lt-dump-script) - lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` - test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. - lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` - cat \"\$lt_dump_D/\$lt_dump_F\" - exit 0 - ;; - --lt-*) - \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 - exit 1 - ;; - esac - done - - # Print the debug banner immediately: - if test -n \"\$lt_option_debug\"; then - echo \"$outputname:$output:\$LINENO: libtool wrapper (GNU $PACKAGE) $VERSION\" 1>&2 - fi -} - -# Used when --lt-debug. Prints its arguments to stdout -# (redirection is the responsibility of the caller) -func_lt_dump_args () -{ - lt_dump_args_N=1; - for lt_arg - do - \$ECHO \"$outputname:$output:\$LINENO: newargv[\$lt_dump_args_N]: \$lt_arg\" - lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` - done -} - -# Core function for launching the target application -func_exec_program_core () -{ -" - case $host in - # Backslashes separate directories on plain windows - *-*-mingw | *-*-os2* | *-cegcc*) - $ECHO "\ - if test -n \"\$lt_option_debug\"; then - \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir\\\\\$program\" 1>&2 - func_lt_dump_args \${1+\"\$@\"} 1>&2 - fi - exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} -" - ;; - - *) - $ECHO "\ - if test -n \"\$lt_option_debug\"; then - \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir/\$program\" 1>&2 - func_lt_dump_args \${1+\"\$@\"} 1>&2 - fi - exec \"\$progdir/\$program\" \${1+\"\$@\"} -" - ;; - esac - $ECHO "\ - \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 - exit 1 -} - -# A function to encapsulate launching the target application -# Strips options in the --lt-* namespace from \$@ and -# launches target application with the remaining arguments. -func_exec_program () -{ - case \" \$* \" in - *\\ --lt-*) - for lt_wr_arg - do - case \$lt_wr_arg in - --lt-*) ;; - *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; - esac - shift - done ;; - esac - func_exec_program_core \${1+\"\$@\"} -} - - # Parse options - func_parse_lt_options \"\$0\" \${1+\"\$@\"} - - # Find the directory that this script lives in. - thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` - test \"x\$thisdir\" = \"x\$file\" && thisdir=. - - # Follow symbolic links until we get to the real thisdir. - file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` - while test -n \"\$file\"; do - destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` - - # If there was a directory component, then change thisdir. - if test \"x\$destdir\" != \"x\$file\"; then - case \"\$destdir\" in - [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; - *) thisdir=\"\$thisdir/\$destdir\" ;; - esac - fi - - file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` - file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` - done - - # Usually 'no', except on cygwin/mingw when embedded into - # the cwrapper. - WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 - if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then - # special case for '.' - if test \"\$thisdir\" = \".\"; then - thisdir=\`pwd\` - fi - # remove .libs from thisdir - case \"\$thisdir\" in - *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; - $objdir ) thisdir=. ;; - esac - fi - - # Try to get the absolute directory name. - absdir=\`cd \"\$thisdir\" && pwd\` - test -n \"\$absdir\" && thisdir=\"\$absdir\" -" - - if test yes = "$fast_install"; then - $ECHO "\ - program=lt-'$outputname'$exeext - progdir=\"\$thisdir/$objdir\" - - if test ! -f \"\$progdir/\$program\" || - { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | $SED 1q\`; \\ - test \"X\$file\" != \"X\$progdir/\$program\"; }; then - - file=\"\$\$-\$program\" - - if test ! -d \"\$progdir\"; then - $MKDIR \"\$progdir\" - else - $RM \"\$progdir/\$file\" - fi" - - $ECHO "\ - - # relink executable if necessary - if test -n \"\$relink_command\"; then - if relink_command_output=\`eval \$relink_command 2>&1\`; then : - else - \$ECHO \"\$relink_command_output\" >&2 - $RM \"\$progdir/\$file\" - exit 1 - fi - fi - - $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || - { $RM \"\$progdir/\$program\"; - $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } - $RM \"\$progdir/\$file\" - fi" - else - $ECHO "\ - program='$outputname' - progdir=\"\$thisdir/$objdir\" -" - fi - - $ECHO "\ - - if test -f \"\$progdir/\$program\"; then" - - # fixup the dll searchpath if we need to. - # - # Fix the DLL searchpath if we need to. Do this before prepending - # to shlibpath, because on Windows, both are PATH and uninstalled - # libraries must come first. - if test -n "$dllsearchpath"; then - $ECHO "\ - # Add the dll search path components to the executable PATH - PATH=$dllsearchpath:\$PATH -" - fi - - # Export our shlibpath_var if we have one. - if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then - $ECHO "\ - # Add our own library path to $shlibpath_var - $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" - - # Some systems cannot cope with colon-terminated $shlibpath_var - # The second colon is a workaround for a bug in BeOS R4 sed - $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` - - export $shlibpath_var -" - fi - - $ECHO "\ - if test \"\$libtool_execute_magic\" != \"$magic\"; then - # Run the actual program with our arguments. - func_exec_program \${1+\"\$@\"} - fi - else - # The program doesn't exist. - \$ECHO \"\$0: error: '\$progdir/\$program' does not exist\" 1>&2 - \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 - \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 - exit 1 - fi -fi\ -" -} - - -# func_emit_cwrapperexe_src -# emit the source code for a wrapper executable on stdout -# Must ONLY be called from within func_mode_link because -# it depends on a number of variable set therein. -func_emit_cwrapperexe_src () -{ - cat < -#include -#ifdef _MSC_VER -# include -# include -# include -#else -# include -# include -# ifdef __CYGWIN__ -# include -# endif -#endif -#include -#include -#include -#include -#include -#include -#include -#include - -#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) - -/* declarations of non-ANSI functions */ -#if defined __MINGW32__ -# ifdef __STRICT_ANSI__ -int _putenv (const char *); -# endif -#elif defined __CYGWIN__ -# ifdef __STRICT_ANSI__ -char *realpath (const char *, char *); -int putenv (char *); -int setenv (const char *, const char *, int); -# endif -/* #elif defined other_platform || defined ... */ -#endif - -/* portability defines, excluding path handling macros */ -#if defined _MSC_VER -# define setmode _setmode -# define stat _stat -# define chmod _chmod -# define getcwd _getcwd -# define putenv _putenv -# define S_IXUSR _S_IEXEC -#elif defined __MINGW32__ -# define setmode _setmode -# define stat _stat -# define chmod _chmod -# define getcwd _getcwd -# define putenv _putenv -#elif defined __CYGWIN__ -# define HAVE_SETENV -# define FOPEN_WB "wb" -/* #elif defined other platforms ... */ -#endif - -#if defined PATH_MAX -# define LT_PATHMAX PATH_MAX -#elif defined MAXPATHLEN -# define LT_PATHMAX MAXPATHLEN -#else -# define LT_PATHMAX 1024 -#endif - -#ifndef S_IXOTH -# define S_IXOTH 0 -#endif -#ifndef S_IXGRP -# define S_IXGRP 0 -#endif - -/* path handling portability macros */ -#ifndef DIR_SEPARATOR -# define DIR_SEPARATOR '/' -# define PATH_SEPARATOR ':' -#endif - -#if defined _WIN32 || defined __MSDOS__ || defined __DJGPP__ || \ - defined __OS2__ -# define HAVE_DOS_BASED_FILE_SYSTEM -# define FOPEN_WB "wb" -# ifndef DIR_SEPARATOR_2 -# define DIR_SEPARATOR_2 '\\' -# endif -# ifndef PATH_SEPARATOR_2 -# define PATH_SEPARATOR_2 ';' -# endif -#endif - -#ifndef DIR_SEPARATOR_2 -# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) -#else /* DIR_SEPARATOR_2 */ -# define IS_DIR_SEPARATOR(ch) \ - (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) -#endif /* DIR_SEPARATOR_2 */ - -#ifndef PATH_SEPARATOR_2 -# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) -#else /* PATH_SEPARATOR_2 */ -# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) -#endif /* PATH_SEPARATOR_2 */ - -#ifndef FOPEN_WB -# define FOPEN_WB "w" -#endif -#ifndef _O_BINARY -# define _O_BINARY 0 -#endif - -#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) -#define XFREE(stale) do { \ - if (stale) { free (stale); stale = 0; } \ -} while (0) - -#if defined LT_DEBUGWRAPPER -static int lt_debug = 1; -#else -static int lt_debug = 0; -#endif - -const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ - -void *xmalloc (size_t num); -char *xstrdup (const char *string); -const char *base_name (const char *name); -char *find_executable (const char *wrapper); -char *chase_symlinks (const char *pathspec); -int make_executable (const char *path); -int check_executable (const char *path); -char *strendzap (char *str, const char *pat); -void lt_debugprintf (const char *file, int line, const char *fmt, ...); -void lt_fatal (const char *file, int line, const char *message, ...); -static const char *nonnull (const char *s); -static const char *nonempty (const char *s); -void lt_setenv (const char *name, const char *value); -char *lt_extend_str (const char *orig_value, const char *add, int to_end); -void lt_update_exe_path (const char *name, const char *value); -void lt_update_lib_path (const char *name, const char *value); -char **prepare_spawn (char **argv); -void lt_dump_script (FILE *f); -EOF - - cat <= 0) - && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) - return 1; - else - return 0; -} - -int -make_executable (const char *path) -{ - int rval = 0; - struct stat st; - - lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", - nonempty (path)); - if ((!path) || (!*path)) - return 0; - - if (stat (path, &st) >= 0) - { - rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); - } - return rval; -} - -/* Searches for the full path of the wrapper. Returns - newly allocated full path name if found, NULL otherwise - Does not chase symlinks, even on platforms that support them. -*/ -char * -find_executable (const char *wrapper) -{ - int has_slash = 0; - const char *p; - const char *p_next; - /* static buffer for getcwd */ - char tmp[LT_PATHMAX + 1]; - size_t tmp_len; - char *concat_name; - - lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", - nonempty (wrapper)); - - if ((wrapper == NULL) || (*wrapper == '\0')) - return NULL; - - /* Absolute path? */ -#if defined HAVE_DOS_BASED_FILE_SYSTEM - if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') - { - concat_name = xstrdup (wrapper); - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - } - else - { -#endif - if (IS_DIR_SEPARATOR (wrapper[0])) - { - concat_name = xstrdup (wrapper); - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - } -#if defined HAVE_DOS_BASED_FILE_SYSTEM - } -#endif - - for (p = wrapper; *p; p++) - if (*p == '/') - { - has_slash = 1; - break; - } - if (!has_slash) - { - /* no slashes; search PATH */ - const char *path = getenv ("PATH"); - if (path != NULL) - { - for (p = path; *p; p = p_next) - { - const char *q; - size_t p_len; - for (q = p; *q; q++) - if (IS_PATH_SEPARATOR (*q)) - break; - p_len = (size_t) (q - p); - p_next = (*q == '\0' ? q : q + 1); - if (p_len == 0) - { - /* empty path: current directory */ - if (getcwd (tmp, LT_PATHMAX) == NULL) - lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", - nonnull (strerror (errno))); - tmp_len = strlen (tmp); - concat_name = - XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); - memcpy (concat_name, tmp, tmp_len); - concat_name[tmp_len] = '/'; - strcpy (concat_name + tmp_len + 1, wrapper); - } - else - { - concat_name = - XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); - memcpy (concat_name, p, p_len); - concat_name[p_len] = '/'; - strcpy (concat_name + p_len + 1, wrapper); - } - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - } - } - /* not found in PATH; assume curdir */ - } - /* Relative path | not found in path: prepend cwd */ - if (getcwd (tmp, LT_PATHMAX) == NULL) - lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", - nonnull (strerror (errno))); - tmp_len = strlen (tmp); - concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); - memcpy (concat_name, tmp, tmp_len); - concat_name[tmp_len] = '/'; - strcpy (concat_name + tmp_len + 1, wrapper); - - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - return NULL; -} - -char * -chase_symlinks (const char *pathspec) -{ -#ifndef S_ISLNK - return xstrdup (pathspec); -#else - char buf[LT_PATHMAX]; - struct stat s; - char *tmp_pathspec = xstrdup (pathspec); - char *p; - int has_symlinks = 0; - while (strlen (tmp_pathspec) && !has_symlinks) - { - lt_debugprintf (__FILE__, __LINE__, - "checking path component for symlinks: %s\n", - tmp_pathspec); - if (lstat (tmp_pathspec, &s) == 0) - { - if (S_ISLNK (s.st_mode) != 0) - { - has_symlinks = 1; - break; - } - - /* search backwards for last DIR_SEPARATOR */ - p = tmp_pathspec + strlen (tmp_pathspec) - 1; - while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) - p--; - if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) - { - /* no more DIR_SEPARATORS left */ - break; - } - *p = '\0'; - } - else - { - lt_fatal (__FILE__, __LINE__, - "error accessing file \"%s\": %s", - tmp_pathspec, nonnull (strerror (errno))); - } - } - XFREE (tmp_pathspec); - - if (!has_symlinks) - { - return xstrdup (pathspec); - } - - tmp_pathspec = realpath (pathspec, buf); - if (tmp_pathspec == 0) - { - lt_fatal (__FILE__, __LINE__, - "could not follow symlinks for %s", pathspec); - } - return xstrdup (tmp_pathspec); -#endif -} - -char * -strendzap (char *str, const char *pat) -{ - size_t len, patlen; - - assert (str != NULL); - assert (pat != NULL); - - len = strlen (str); - patlen = strlen (pat); - - if (patlen <= len) - { - str += len - patlen; - if (STREQ (str, pat)) - *str = '\0'; - } - return str; -} - -void -lt_debugprintf (const char *file, int line, const char *fmt, ...) -{ - va_list args; - if (lt_debug) - { - (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); - va_start (args, fmt); - (void) vfprintf (stderr, fmt, args); - va_end (args); - } -} - -static void -lt_error_core (int exit_status, const char *file, - int line, const char *mode, - const char *message, va_list ap) -{ - fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); - vfprintf (stderr, message, ap); - fprintf (stderr, ".\n"); - - if (exit_status >= 0) - exit (exit_status); -} - -void -lt_fatal (const char *file, int line, const char *message, ...) -{ - va_list ap; - va_start (ap, message); - lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); - va_end (ap); -} - -static const char * -nonnull (const char *s) -{ - return s ? s : "(null)"; -} - -static const char * -nonempty (const char *s) -{ - return (s && !*s) ? "(empty)" : nonnull (s); -} - -void -lt_setenv (const char *name, const char *value) -{ - lt_debugprintf (__FILE__, __LINE__, - "(lt_setenv) setting '%s' to '%s'\n", - nonnull (name), nonnull (value)); - { -#ifdef HAVE_SETENV - /* always make a copy, for consistency with !HAVE_SETENV */ - char *str = xstrdup (value); - setenv (name, str, 1); -#else - size_t len = strlen (name) + 1 + strlen (value) + 1; - char *str = XMALLOC (char, len); - sprintf (str, "%s=%s", name, value); - if (putenv (str) != EXIT_SUCCESS) - { - XFREE (str); - } -#endif - } -} - -char * -lt_extend_str (const char *orig_value, const char *add, int to_end) -{ - char *new_value; - if (orig_value && *orig_value) - { - size_t orig_value_len = strlen (orig_value); - size_t add_len = strlen (add); - new_value = XMALLOC (char, add_len + orig_value_len + 1); - if (to_end) - { - strcpy (new_value, orig_value); - strcpy (new_value + orig_value_len, add); - } - else - { - strcpy (new_value, add); - strcpy (new_value + add_len, orig_value); - } - } - else - { - new_value = xstrdup (add); - } - return new_value; -} - -void -lt_update_exe_path (const char *name, const char *value) -{ - lt_debugprintf (__FILE__, __LINE__, - "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", - nonnull (name), nonnull (value)); - - if (name && *name && value && *value) - { - char *new_value = lt_extend_str (getenv (name), value, 0); - /* some systems can't cope with a ':'-terminated path #' */ - size_t len = strlen (new_value); - while ((len > 0) && IS_PATH_SEPARATOR (new_value[len-1])) - { - new_value[--len] = '\0'; - } - lt_setenv (name, new_value); - XFREE (new_value); - } -} - -void -lt_update_lib_path (const char *name, const char *value) -{ - lt_debugprintf (__FILE__, __LINE__, - "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", - nonnull (name), nonnull (value)); - - if (name && *name && value && *value) - { - char *new_value = lt_extend_str (getenv (name), value, 0); - lt_setenv (name, new_value); - XFREE (new_value); - } -} - -EOF - case $host_os in - mingw*) - cat <<"EOF" - -/* Prepares an argument vector before calling spawn(). - Note that spawn() does not by itself call the command interpreter - (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : - ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); - GetVersionEx(&v); - v.dwPlatformId == VER_PLATFORM_WIN32_NT; - }) ? "cmd.exe" : "command.com"). - Instead it simply concatenates the arguments, separated by ' ', and calls - CreateProcess(). We must quote the arguments since Win32 CreateProcess() - interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a - special way: - - Space and tab are interpreted as delimiters. They are not treated as - delimiters if they are surrounded by double quotes: "...". - - Unescaped double quotes are removed from the input. Their only effect is - that within double quotes, space and tab are treated like normal - characters. - - Backslashes not followed by double quotes are not special. - - But 2*n+1 backslashes followed by a double quote become - n backslashes followed by a double quote (n >= 0): - \" -> " - \\\" -> \" - \\\\\" -> \\" - */ -#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" -#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" -char ** -prepare_spawn (char **argv) -{ - size_t argc; - char **new_argv; - size_t i; - - /* Count number of arguments. */ - for (argc = 0; argv[argc] != NULL; argc++) - ; - - /* Allocate new argument vector. */ - new_argv = XMALLOC (char *, argc + 1); - - /* Put quoted arguments into the new argument vector. */ - for (i = 0; i < argc; i++) - { - const char *string = argv[i]; - - if (string[0] == '\0') - new_argv[i] = xstrdup ("\"\""); - else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) - { - int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); - size_t length; - unsigned int backslashes; - const char *s; - char *quoted_string; - char *p; - - length = 0; - backslashes = 0; - if (quote_around) - length++; - for (s = string; *s != '\0'; s++) - { - char c = *s; - if (c == '"') - length += backslashes + 1; - length++; - if (c == '\\') - backslashes++; - else - backslashes = 0; - } - if (quote_around) - length += backslashes + 1; - - quoted_string = XMALLOC (char, length + 1); - - p = quoted_string; - backslashes = 0; - if (quote_around) - *p++ = '"'; - for (s = string; *s != '\0'; s++) - { - char c = *s; - if (c == '"') - { - unsigned int j; - for (j = backslashes + 1; j > 0; j--) - *p++ = '\\'; - } - *p++ = c; - if (c == '\\') - backslashes++; - else - backslashes = 0; - } - if (quote_around) - { - unsigned int j; - for (j = backslashes; j > 0; j--) - *p++ = '\\'; - *p++ = '"'; - } - *p = '\0'; - - new_argv[i] = quoted_string; - } - else - new_argv[i] = (char *) string; - } - new_argv[argc] = NULL; - - return new_argv; -} -EOF - ;; - esac - - cat <<"EOF" -void lt_dump_script (FILE* f) -{ -EOF - func_emit_wrapper yes | - $SED -n -e ' -s/^\(.\{79\}\)\(..*\)/\1\ -\2/ -h -s/\([\\"]\)/\\\1/g -s/$/\\n/ -s/\([^\n]*\).*/ fputs ("\1", f);/p -g -D' - cat <<"EOF" -} -EOF -} -# end: func_emit_cwrapperexe_src - -# func_win32_import_lib_p ARG -# True if ARG is an import lib, as indicated by $file_magic_cmd -func_win32_import_lib_p () -{ - $debug_cmd - - case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in - *import*) : ;; - *) false ;; - esac -} - -# func_suncc_cstd_abi -# !!ONLY CALL THIS FOR SUN CC AFTER $compile_command IS FULLY EXPANDED!! -# Several compiler flags select an ABI that is incompatible with the -# Cstd library. Avoid specifying it if any are in CXXFLAGS. -func_suncc_cstd_abi () -{ - $debug_cmd - - case " $compile_command " in - *" -compat=g "*|*\ -std=c++[0-9][0-9]\ *|*" -library=stdcxx4 "*|*" -library=stlport4 "*) - suncc_use_cstd_abi=no - ;; - *) - suncc_use_cstd_abi=yes - ;; - esac -} - -# func_mode_link arg... -func_mode_link () -{ - $debug_cmd - - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) - # It is impossible to link a dll without this setting, and - # we shouldn't force the makefile maintainer to figure out - # what system we are compiling for in order to pass an extra - # flag for every libtool invocation. - # allow_undefined=no - - # FIXME: Unfortunately, there are problems with the above when trying - # to make a dll that has undefined symbols, in which case not - # even a static library is built. For now, we need to specify - # -no-undefined on the libtool link line when we can be certain - # that all symbols are satisfied, otherwise we get a static library. - allow_undefined=yes - ;; - *) - allow_undefined=yes - ;; - esac - libtool_args=$nonopt - base_compile="$nonopt $@" - compile_command=$nonopt - finalize_command=$nonopt - - compile_rpath= - finalize_rpath= - compile_shlibpath= - finalize_shlibpath= - convenience= - old_convenience= - deplibs= - old_deplibs= - compiler_flags= - linker_flags= - dllsearchpath= - lib_search_path=`pwd` - inst_prefix_dir= - new_inherited_linker_flags= - - avoid_version=no - bindir= - dlfiles= - dlprefiles= - dlself=no - export_dynamic=no - export_symbols= - export_symbols_regex= - generated= - libobjs= - ltlibs= - module=no - no_install=no - objs= - os2dllname= - non_pic_objects= - precious_files_regex= - prefer_static_libs=no - preload=false - prev= - prevarg= - release= - rpath= - xrpath= - perm_rpath= - temp_rpath= - thread_safe=no - vinfo= - vinfo_number=no - weak_libs= - single_module=$wl-single_module - func_infer_tag $base_compile - - # We need to know -static, to get the right output filenames. - for arg - do - case $arg in - -shared) - test yes != "$build_libtool_libs" \ - && func_fatal_configuration "cannot build a shared library" - build_old_libs=no - break - ;; - -all-static | -static | -static-libtool-libs) - case $arg in - -all-static) - if test yes = "$build_libtool_libs" && test -z "$link_static_flag"; then - func_warning "complete static linking is impossible in this configuration" - fi - if test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - prefer_static_libs=yes - ;; - -static) - if test -z "$pic_flag" && test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - prefer_static_libs=built - ;; - -static-libtool-libs) - if test -z "$pic_flag" && test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - prefer_static_libs=yes - ;; - esac - build_libtool_libs=no - build_old_libs=yes - break - ;; - esac - done - - # See if our shared archives depend on static archives. - test -n "$old_archive_from_new_cmds" && build_old_libs=yes - - # Go through the arguments, transforming them on the way. - while test "$#" -gt 0; do - arg=$1 - shift - func_quote_for_eval "$arg" - qarg=$func_quote_for_eval_unquoted_result - func_append libtool_args " $func_quote_for_eval_result" - - # If the previous option needs an argument, assign it. - if test -n "$prev"; then - case $prev in - output) - func_append compile_command " @OUTPUT@" - func_append finalize_command " @OUTPUT@" - ;; - esac - - case $prev in - bindir) - bindir=$arg - prev= - continue - ;; - dlfiles|dlprefiles) - $preload || { - # Add the symbol object into the linking commands. - func_append compile_command " @SYMFILE@" - func_append finalize_command " @SYMFILE@" - preload=: - } - case $arg in - *.la | *.lo) ;; # We handle these cases below. - force) - if test no = "$dlself"; then - dlself=needless - export_dynamic=yes - fi - prev= - continue - ;; - self) - if test dlprefiles = "$prev"; then - dlself=yes - elif test dlfiles = "$prev" && test yes != "$dlopen_self"; then - dlself=yes - else - dlself=needless - export_dynamic=yes - fi - prev= - continue - ;; - *) - if test dlfiles = "$prev"; then - func_append dlfiles " $arg" - else - func_append dlprefiles " $arg" - fi - prev= - continue - ;; - esac - ;; - expsyms) - export_symbols=$arg - test -f "$arg" \ - || func_fatal_error "symbol file '$arg' does not exist" - prev= - continue - ;; - expsyms_regex) - export_symbols_regex=$arg - prev= - continue - ;; - framework) - case $host in - *-*-darwin*) - case "$deplibs " in - *" $qarg.ltframework "*) ;; - *) func_append deplibs " $qarg.ltframework" # this is fixed later - ;; - esac - ;; - esac - prev= - continue - ;; - inst_prefix) - inst_prefix_dir=$arg - prev= - continue - ;; - mllvm) - # Clang does not use LLVM to link, so we can simply discard any - # '-mllvm $arg' options when doing the link step. - prev= - continue - ;; - objectlist) - if test -f "$arg"; then - save_arg=$arg - moreargs= - for fil in `cat "$save_arg"` - do -# func_append moreargs " $fil" - arg=$fil - # A libtool-controlled object. - - # Check to see that this really is a libtool object. - if func_lalib_unsafe_p "$arg"; then - pic_object= - non_pic_object= - - # Read the .lo file - func_source "$arg" - - if test -z "$pic_object" || - test -z "$non_pic_object" || - test none = "$pic_object" && - test none = "$non_pic_object"; then - func_fatal_error "cannot find name of object for '$arg'" - fi - - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir=$func_dirname_result - - if test none != "$pic_object"; then - # Prepend the subdirectory the object is found in. - pic_object=$xdir$pic_object - - if test dlfiles = "$prev"; then - if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then - func_append dlfiles " $pic_object" - prev= - continue - else - # If libtool objects are unsupported, then we need to preload. - prev=dlprefiles - fi - fi - - # CHECK ME: I think I busted this. -Ossama - if test dlprefiles = "$prev"; then - # Preload the old-style object. - func_append dlprefiles " $pic_object" - prev= - fi - - # A PIC object. - func_append libobjs " $pic_object" - arg=$pic_object - fi - - # Non-PIC object. - if test none != "$non_pic_object"; then - # Prepend the subdirectory the object is found in. - non_pic_object=$xdir$non_pic_object - - # A standard non-PIC object - func_append non_pic_objects " $non_pic_object" - if test -z "$pic_object" || test none = "$pic_object"; then - arg=$non_pic_object - fi - else - # If the PIC object exists, use it instead. - # $xdir was prepended to $pic_object above. - non_pic_object=$pic_object - func_append non_pic_objects " $non_pic_object" - fi - else - # Only an error if not doing a dry-run. - if $opt_dry_run; then - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir=$func_dirname_result - - func_lo2o "$arg" - pic_object=$xdir$objdir/$func_lo2o_result - non_pic_object=$xdir$func_lo2o_result - func_append libobjs " $pic_object" - func_append non_pic_objects " $non_pic_object" - else - func_fatal_error "'$arg' is not a valid libtool object" - fi - fi - done - else - func_fatal_error "link input file '$arg' does not exist" - fi - arg=$save_arg - prev= - continue - ;; - os2dllname) - os2dllname=$arg - prev= - continue - ;; - precious_regex) - precious_files_regex=$arg - prev= - continue - ;; - release) - release=-$arg - prev= - continue - ;; - rpath | xrpath) - # We need an absolute path. - case $arg in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - func_fatal_error "only absolute run-paths are allowed" - ;; - esac - if test rpath = "$prev"; then - case "$rpath " in - *" $arg "*) ;; - *) func_append rpath " $arg" ;; - esac - else - case "$xrpath " in - *" $arg "*) ;; - *) func_append xrpath " $arg" ;; - esac - fi - prev= - continue - ;; - shrext) - shrext_cmds=$arg - prev= - continue - ;; - weak) - func_append weak_libs " $arg" - prev= - continue - ;; - xcclinker) - func_append linker_flags " $qarg" - func_append compiler_flags " $qarg" - prev= - func_append compile_command " $qarg" - func_append finalize_command " $qarg" - continue - ;; - xcompiler) - func_append compiler_flags " $qarg" - prev= - func_append compile_command " $qarg" - func_append finalize_command " $qarg" - continue - ;; - xlinker) - func_append linker_flags " $qarg" - func_append compiler_flags " $wl$qarg" - prev= - func_append compile_command " $wl$qarg" - func_append finalize_command " $wl$qarg" - continue - ;; - *) - eval "$prev=\"\$arg\"" - prev= - continue - ;; - esac - fi # test -n "$prev" - - prevarg=$arg - - case $arg in - -all-static) - if test -n "$link_static_flag"; then - # See comment for -static flag below, for more details. - func_append compile_command " $link_static_flag" - func_append finalize_command " $link_static_flag" - fi - continue - ;; - - -allow-undefined) - # FIXME: remove this flag sometime in the future. - func_fatal_error "'-allow-undefined' must not be used because it is the default" - ;; - - -avoid-version) - avoid_version=yes - continue - ;; - - -bindir) - prev=bindir - continue - ;; - - -dlopen) - prev=dlfiles - continue - ;; - - -dlpreopen) - prev=dlprefiles - continue - ;; - - -export-dynamic) - export_dynamic=yes - continue - ;; - - -export-symbols | -export-symbols-regex) - if test -n "$export_symbols" || test -n "$export_symbols_regex"; then - func_fatal_error "more than one -exported-symbols argument is not allowed" - fi - if test X-export-symbols = "X$arg"; then - prev=expsyms - else - prev=expsyms_regex - fi - continue - ;; - - -framework) - prev=framework - continue - ;; - - -inst-prefix-dir) - prev=inst_prefix - continue - ;; - - # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* - # so, if we see these flags be careful not to treat them like -L - -L[A-Z][A-Z]*:*) - case $with_gcc/$host in - no/*-*-irix* | /*-*-irix*) - func_append compile_command " $arg" - func_append finalize_command " $arg" - ;; - esac - continue - ;; - - -L*) - func_stripname "-L" '' "$arg" - if test -z "$func_stripname_result"; then - if test "$#" -gt 0; then - func_fatal_error "require no space between '-L' and '$1'" - else - func_fatal_error "need path for '-L' option" - fi - fi - func_resolve_sysroot "$func_stripname_result" - dir=$func_resolve_sysroot_result - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - absdir=`cd "$dir" && pwd` - test -z "$absdir" && \ - func_fatal_error "cannot determine absolute directory name of '$dir'" - dir=$absdir - ;; - esac - case "$deplibs " in - *" -L$dir "* | *" $arg "*) - # Will only happen for absolute or sysroot arguments - ;; - *) - # Preserve sysroot, but never include relative directories - case $dir in - [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; - *) func_append deplibs " -L$dir" ;; - esac - func_append lib_search_path " $dir" - ;; - esac - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) - testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` - case :$dllsearchpath: in - *":$dir:"*) ;; - ::) dllsearchpath=$dir;; - *) func_append dllsearchpath ":$dir";; - esac - case :$dllsearchpath: in - *":$testbindir:"*) ;; - ::) dllsearchpath=$testbindir;; - *) func_append dllsearchpath ":$testbindir";; - esac - ;; - esac - continue - ;; - - -l*) - if test X-lc = "X$arg" || test X-lm = "X$arg"; then - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) - # These systems don't actually have a C or math library (as such) - continue - ;; - *-*-os2*) - # These systems don't actually have a C library (as such) - test X-lc = "X$arg" && continue - ;; - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) - # Do not include libc due to us having libc/libc_r. - test X-lc = "X$arg" && continue - ;; - *-*-rhapsody* | *-*-darwin1.[012]) - # Rhapsody C and math libraries are in the System framework - func_append deplibs " System.ltframework" - continue - ;; - *-*-sco3.2v5* | *-*-sco5v6*) - # Causes problems with __ctype - test X-lc = "X$arg" && continue - ;; - *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) - # Compiler inserts libc in the correct place for threads to work - test X-lc = "X$arg" && continue - ;; - esac - elif test X-lc_r = "X$arg"; then - case $host in - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) - # Do not include libc_r directly, use -pthread flag. - continue - ;; - esac - fi - func_append deplibs " $arg" - continue - ;; - - -mllvm) - prev=mllvm - continue - ;; - - -module) - module=yes - continue - ;; - - # Tru64 UNIX uses -model [arg] to determine the layout of C++ - # classes, name mangling, and exception handling. - # Darwin uses the -arch flag to determine output architecture. - -model|-arch|-isysroot|--sysroot) - func_append compiler_flags " $arg" - func_append compile_command " $arg" - func_append finalize_command " $arg" - prev=xcompiler - continue - ;; - - -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ - |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) - func_append compiler_flags " $arg" - func_append compile_command " $arg" - func_append finalize_command " $arg" - case "$new_inherited_linker_flags " in - *" $arg "*) ;; - * ) func_append new_inherited_linker_flags " $arg" ;; - esac - continue - ;; - - -multi_module) - single_module=$wl-multi_module - continue - ;; - - -no-fast-install) - fast_install=no - continue - ;; - - -no-install) - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) - # The PATH hackery in wrapper scripts is required on Windows - # and Darwin in order for the loader to find any dlls it needs. - func_warning "'-no-install' is ignored for $host" - func_warning "assuming '-no-fast-install' instead" - fast_install=no - ;; - *) no_install=yes ;; - esac - continue - ;; - - -no-undefined) - allow_undefined=no - continue - ;; - - -objectlist) - prev=objectlist - continue - ;; - - -os2dllname) - prev=os2dllname - continue - ;; - - -o) prev=output ;; - - -precious-files-regex) - prev=precious_regex - continue - ;; - - -release) - prev=release - continue - ;; - - -rpath) - prev=rpath - continue - ;; - - -R) - prev=xrpath - continue - ;; - - -R*) - func_stripname '-R' '' "$arg" - dir=$func_stripname_result - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) ;; - =*) - func_stripname '=' '' "$dir" - dir=$lt_sysroot$func_stripname_result - ;; - *) - func_fatal_error "only absolute run-paths are allowed" - ;; - esac - case "$xrpath " in - *" $dir "*) ;; - *) func_append xrpath " $dir" ;; - esac - continue - ;; - - -shared) - # The effects of -shared are defined in a previous loop. - continue - ;; - - -shrext) - prev=shrext - continue - ;; - - -static | -static-libtool-libs) - # The effects of -static are defined in a previous loop. - # We used to do the same as -all-static on platforms that - # didn't have a PIC flag, but the assumption that the effects - # would be equivalent was wrong. It would break on at least - # Digital Unix and AIX. - continue - ;; - - -thread-safe) - thread_safe=yes - continue - ;; - - -version-info) - prev=vinfo - continue - ;; - - -version-number) - prev=vinfo - vinfo_number=yes - continue - ;; - - -weak) - prev=weak - continue - ;; - - -Wc,*) - func_stripname '-Wc,' '' "$arg" - args=$func_stripname_result - arg= - save_ifs=$IFS; IFS=, - for flag in $args; do - IFS=$save_ifs - func_quote_for_eval "$flag" - func_append arg " $func_quote_for_eval_result" - func_append compiler_flags " $func_quote_for_eval_result" - done - IFS=$save_ifs - func_stripname ' ' '' "$arg" - arg=$func_stripname_result - ;; - - -Wl,*) - func_stripname '-Wl,' '' "$arg" - args=$func_stripname_result - arg= - save_ifs=$IFS; IFS=, - for flag in $args; do - IFS=$save_ifs - func_quote_for_eval "$flag" - func_append arg " $wl$func_quote_for_eval_result" - func_append compiler_flags " $wl$func_quote_for_eval_result" - func_append linker_flags " $func_quote_for_eval_result" - done - IFS=$save_ifs - func_stripname ' ' '' "$arg" - arg=$func_stripname_result - ;; - - -Xcompiler) - prev=xcompiler - continue - ;; - - -Xlinker) - prev=xlinker - continue - ;; - - -XCClinker) - prev=xcclinker - continue - ;; - - # -msg_* for osf cc - -msg_*) - func_quote_for_eval "$arg" - arg=$func_quote_for_eval_result - ;; - - # Flags to be passed through unchanged, with rationale: - # -64, -mips[0-9] enable 64-bit mode for the SGI compiler - # -r[0-9][0-9]* specify processor for the SGI compiler - # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler - # +DA*, +DD* enable 64-bit mode for the HP compiler - # -q* compiler args for the IBM compiler - # -m*, -t[45]*, -txscale* architecture-specific flags for GCC - # -F/path path to uninstalled frameworks, gcc on darwin - # -p, -pg, --coverage, -fprofile-* profiling flags for GCC - # -fstack-protector* stack protector flags for GCC - # @file GCC response files - # -tp=* Portland pgcc target processor selection - # --sysroot=* for sysroot support - # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization - # -stdlib=* select c++ std lib with clang - -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ - -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ - -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \ - -fopenacc|-fopenmp|-ftree-parallelize-loops=*|-fcilkplus|-fgnu-tm| \ - -ffast-math|-funsafe-math-optimizations|-fvtable-verify*| \ - -shared-libgcc|-static-libgcc|-static-libgfortran|-static-libstdc++) - func_quote_for_eval "$arg" - arg=$func_quote_for_eval_result - func_append compile_command " $arg" - func_append finalize_command " $arg" - func_append compiler_flags " $arg" - continue - ;; - - -Z*) - if test os2 = "`expr $host : '.*\(os2\)'`"; then - # OS/2 uses -Zxxx to specify OS/2-specific options - compiler_flags="$compiler_flags $arg" - func_append compile_command " $arg" - func_append finalize_command " $arg" - case $arg in - -Zlinker | -Zstack) - prev=xcompiler - ;; - esac - continue - else - # Otherwise treat like 'Some other compiler flag' below - func_quote_for_eval "$arg" - arg=$func_quote_for_eval_result - fi - ;; - - # Some other compiler flag. - -* | +*) - func_quote_for_eval "$arg" - arg=$func_quote_for_eval_result - ;; - - *.$objext) - # A standard object. - func_append objs " $arg" - ;; - - *.lo) - # A libtool-controlled object. - - # Check to see that this really is a libtool object. - if func_lalib_unsafe_p "$arg"; then - pic_object= - non_pic_object= - - # Read the .lo file - func_source "$arg" - - if test -z "$pic_object" || - test -z "$non_pic_object" || - test none = "$pic_object" && - test none = "$non_pic_object"; then - func_fatal_error "cannot find name of object for '$arg'" - fi - - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir=$func_dirname_result - - test none = "$pic_object" || { - # Prepend the subdirectory the object is found in. - pic_object=$xdir$pic_object - - if test dlfiles = "$prev"; then - if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then - func_append dlfiles " $pic_object" - prev= - continue - else - # If libtool objects are unsupported, then we need to preload. - prev=dlprefiles - fi - fi - - # CHECK ME: I think I busted this. -Ossama - if test dlprefiles = "$prev"; then - # Preload the old-style object. - func_append dlprefiles " $pic_object" - prev= - fi - - # A PIC object. - func_append libobjs " $pic_object" - arg=$pic_object - } - - # Non-PIC object. - if test none != "$non_pic_object"; then - # Prepend the subdirectory the object is found in. - non_pic_object=$xdir$non_pic_object - - # A standard non-PIC object - func_append non_pic_objects " $non_pic_object" - if test -z "$pic_object" || test none = "$pic_object"; then - arg=$non_pic_object - fi - else - # If the PIC object exists, use it instead. - # $xdir was prepended to $pic_object above. - non_pic_object=$pic_object - func_append non_pic_objects " $non_pic_object" - fi - else - # Only an error if not doing a dry-run. - if $opt_dry_run; then - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir=$func_dirname_result - - func_lo2o "$arg" - pic_object=$xdir$objdir/$func_lo2o_result - non_pic_object=$xdir$func_lo2o_result - func_append libobjs " $pic_object" - func_append non_pic_objects " $non_pic_object" - else - func_fatal_error "'$arg' is not a valid libtool object" - fi - fi - ;; - - *.$libext) - # An archive. - func_append deplibs " $arg" - func_append old_deplibs " $arg" - continue - ;; - - *.la) - # A libtool-controlled library. - - func_resolve_sysroot "$arg" - if test dlfiles = "$prev"; then - # This library was specified with -dlopen. - func_append dlfiles " $func_resolve_sysroot_result" - prev= - elif test dlprefiles = "$prev"; then - # The library was specified with -dlpreopen. - func_append dlprefiles " $func_resolve_sysroot_result" - prev= - else - func_append deplibs " $func_resolve_sysroot_result" - fi - continue - ;; - - # Some other compiler argument. - *) - # Unknown arguments in both finalize_command and compile_command need - # to be aesthetically quoted because they are evaled later. - func_quote_for_eval "$arg" - arg=$func_quote_for_eval_result - ;; - esac # arg - - # Now actually substitute the argument into the commands. - if test -n "$arg"; then - func_append compile_command " $arg" - func_append finalize_command " $arg" - fi - done # argument parsing loop - - test -n "$prev" && \ - func_fatal_help "the '$prevarg' option requires an argument" - - if test yes = "$export_dynamic" && test -n "$export_dynamic_flag_spec"; then - eval arg=\"$export_dynamic_flag_spec\" - func_append compile_command " $arg" - func_append finalize_command " $arg" - fi - - oldlibs= - # calculate the name of the file, without its directory - func_basename "$output" - outputname=$func_basename_result - libobjs_save=$libobjs - - if test -n "$shlibpath_var"; then - # get the directories listed in $shlibpath_var - eval shlib_search_path=\`\$ECHO \"\$$shlibpath_var\" \| \$SED \'s/:/ /g\'\` - else - shlib_search_path= - fi - eval sys_lib_search_path=\"$sys_lib_search_path_spec\" - eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" - - # Definition is injected by LT_CONFIG during libtool generation. - func_munge_path_list sys_lib_dlsearch_path "$LT_SYS_LIBRARY_PATH" - - func_dirname "$output" "/" "" - output_objdir=$func_dirname_result$objdir - func_to_tool_file "$output_objdir/" - tool_output_objdir=$func_to_tool_file_result - # Create the object directory. - func_mkdir_p "$output_objdir" - - # Determine the type of output - case $output in - "") - func_fatal_help "you must specify an output file" - ;; - *.$libext) linkmode=oldlib ;; - *.lo | *.$objext) linkmode=obj ;; - *.la) linkmode=lib ;; - *) linkmode=prog ;; # Anything else should be a program. - esac - - specialdeplibs= - - libs= - # Find all interdependent deplibs by searching for libraries - # that are linked more than once (e.g. -la -lb -la) - for deplib in $deplibs; do - if $opt_preserve_dup_deps; then - case "$libs " in - *" $deplib "*) func_append specialdeplibs " $deplib" ;; - esac - fi - func_append libs " $deplib" - done - - if test lib = "$linkmode"; then - libs="$predeps $libs $compiler_lib_search_path $postdeps" - - # Compute libraries that are listed more than once in $predeps - # $postdeps and mark them as special (i.e., whose duplicates are - # not to be eliminated). - pre_post_deps= - if $opt_duplicate_compiler_generated_deps; then - for pre_post_dep in $predeps $postdeps; do - case "$pre_post_deps " in - *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; - esac - func_append pre_post_deps " $pre_post_dep" - done - fi - pre_post_deps= - fi - - deplibs= - newdependency_libs= - newlib_search_path= - need_relink=no # whether we're linking any uninstalled libtool libraries - notinst_deplibs= # not-installed libtool libraries - notinst_path= # paths that contain not-installed libtool libraries - - case $linkmode in - lib) - passes="conv dlpreopen link" - for file in $dlfiles $dlprefiles; do - case $file in - *.la) ;; - *) - func_fatal_help "libraries can '-dlopen' only libtool libraries: $file" - ;; - esac - done - ;; - prog) - compile_deplibs= - finalize_deplibs= - alldeplibs=false - newdlfiles= - newdlprefiles= - passes="conv scan dlopen dlpreopen link" - ;; - *) passes="conv" - ;; - esac - - for pass in $passes; do - # The preopen pass in lib mode reverses $deplibs; put it back here - # so that -L comes before libs that need it for instance... - if test lib,link = "$linkmode,$pass"; then - ## FIXME: Find the place where the list is rebuilt in the wrong - ## order, and fix it there properly - tmp_deplibs= - for deplib in $deplibs; do - tmp_deplibs="$deplib $tmp_deplibs" - done - deplibs=$tmp_deplibs - fi - - if test lib,link = "$linkmode,$pass" || - test prog,scan = "$linkmode,$pass"; then - libs=$deplibs - deplibs= - fi - if test prog = "$linkmode"; then - case $pass in - dlopen) libs=$dlfiles ;; - dlpreopen) libs=$dlprefiles ;; - link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; - esac - fi - if test lib,dlpreopen = "$linkmode,$pass"; then - # Collect and forward deplibs of preopened libtool libs - for lib in $dlprefiles; do - # Ignore non-libtool-libs - dependency_libs= - func_resolve_sysroot "$lib" - case $lib in - *.la) func_source "$func_resolve_sysroot_result" ;; - esac - - # Collect preopened libtool deplibs, except any this library - # has declared as weak libs - for deplib in $dependency_libs; do - func_basename "$deplib" - deplib_base=$func_basename_result - case " $weak_libs " in - *" $deplib_base "*) ;; - *) func_append deplibs " $deplib" ;; - esac - done - done - libs=$dlprefiles - fi - if test dlopen = "$pass"; then - # Collect dlpreopened libraries - save_deplibs=$deplibs - deplibs= - fi - - for deplib in $libs; do - lib= - found=false - case $deplib in - -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ - |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) - if test prog,link = "$linkmode,$pass"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - func_append compiler_flags " $deplib" - if test lib = "$linkmode"; then - case "$new_inherited_linker_flags " in - *" $deplib "*) ;; - * ) func_append new_inherited_linker_flags " $deplib" ;; - esac - fi - fi - continue - ;; - -l*) - if test lib != "$linkmode" && test prog != "$linkmode"; then - func_warning "'-l' is ignored for archives/objects" - continue - fi - func_stripname '-l' '' "$deplib" - name=$func_stripname_result - if test lib = "$linkmode"; then - searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" - else - searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" - fi - for searchdir in $searchdirs; do - for search_ext in .la $std_shrext .so .a; do - # Search the libtool library - lib=$searchdir/lib$name$search_ext - if test -f "$lib"; then - if test .la = "$search_ext"; then - found=: - else - found=false - fi - break 2 - fi - done - done - if $found; then - # deplib is a libtool library - # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, - # We need to do some special things here, and not later. - if test yes = "$allow_libtool_libs_with_static_runtimes"; then - case " $predeps $postdeps " in - *" $deplib "*) - if func_lalib_p "$lib"; then - library_names= - old_library= - func_source "$lib" - for l in $old_library $library_names; do - ll=$l - done - if test "X$ll" = "X$old_library"; then # only static version available - found=false - func_dirname "$lib" "" "." - ladir=$func_dirname_result - lib=$ladir/$old_library - if test prog,link = "$linkmode,$pass"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" - fi - continue - fi - fi - ;; - *) ;; - esac - fi - else - # deplib doesn't seem to be a libtool library - if test prog,link = "$linkmode,$pass"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" - fi - continue - fi - ;; # -l - *.ltframework) - if test prog,link = "$linkmode,$pass"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - if test lib = "$linkmode"; then - case "$new_inherited_linker_flags " in - *" $deplib "*) ;; - * ) func_append new_inherited_linker_flags " $deplib" ;; - esac - fi - fi - continue - ;; - -L*) - case $linkmode in - lib) - deplibs="$deplib $deplibs" - test conv = "$pass" && continue - newdependency_libs="$deplib $newdependency_libs" - func_stripname '-L' '' "$deplib" - func_resolve_sysroot "$func_stripname_result" - func_append newlib_search_path " $func_resolve_sysroot_result" - ;; - prog) - if test conv = "$pass"; then - deplibs="$deplib $deplibs" - continue - fi - if test scan = "$pass"; then - deplibs="$deplib $deplibs" - else - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - fi - func_stripname '-L' '' "$deplib" - func_resolve_sysroot "$func_stripname_result" - func_append newlib_search_path " $func_resolve_sysroot_result" - ;; - *) - func_warning "'-L' is ignored for archives/objects" - ;; - esac # linkmode - continue - ;; # -L - -R*) - if test link = "$pass"; then - func_stripname '-R' '' "$deplib" - func_resolve_sysroot "$func_stripname_result" - dir=$func_resolve_sysroot_result - # Make sure the xrpath contains only unique directories. - case "$xrpath " in - *" $dir "*) ;; - *) func_append xrpath " $dir" ;; - esac - fi - deplibs="$deplib $deplibs" - continue - ;; - *.la) - func_resolve_sysroot "$deplib" - lib=$func_resolve_sysroot_result - ;; - *.$libext) - if test conv = "$pass"; then - deplibs="$deplib $deplibs" - continue - fi - case $linkmode in - lib) - # Linking convenience modules into shared libraries is allowed, - # but linking other static libraries is non-portable. - case " $dlpreconveniencelibs " in - *" $deplib "*) ;; - *) - valid_a_lib=false - case $deplibs_check_method in - match_pattern*) - set dummy $deplibs_check_method; shift - match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` - if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ - | $EGREP "$match_pattern_regex" > /dev/null; then - valid_a_lib=: - fi - ;; - pass_all) - valid_a_lib=: - ;; - esac - if $valid_a_lib; then - echo - $ECHO "*** Warning: Linking the shared library $output against the" - $ECHO "*** static library $deplib is not portable!" - deplibs="$deplib $deplibs" - else - echo - $ECHO "*** Warning: Trying to link with static lib archive $deplib." - echo "*** I have the capability to make that library automatically link in when" - echo "*** you link to this library. But I can only do this if you have a" - echo "*** shared version of the library, which you do not appear to have" - echo "*** because the file extensions .$libext of this argument makes me believe" - echo "*** that it is just a static archive that I should not use here." - fi - ;; - esac - continue - ;; - prog) - if test link != "$pass"; then - deplibs="$deplib $deplibs" - else - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - fi - continue - ;; - esac # linkmode - ;; # *.$libext - *.lo | *.$objext) - if test conv = "$pass"; then - deplibs="$deplib $deplibs" - elif test prog = "$linkmode"; then - if test dlpreopen = "$pass" || test yes != "$dlopen_support" || test no = "$build_libtool_libs"; then - # If there is no dlopen support or we're linking statically, - # we need to preload. - func_append newdlprefiles " $deplib" - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - func_append newdlfiles " $deplib" - fi - fi - continue - ;; - %DEPLIBS%) - alldeplibs=: - continue - ;; - esac # case $deplib - - $found || test -f "$lib" \ - || func_fatal_error "cannot find the library '$lib' or unhandled argument '$deplib'" - - # Check to see that this really is a libtool archive. - func_lalib_unsafe_p "$lib" \ - || func_fatal_error "'$lib' is not a valid libtool archive" - - func_dirname "$lib" "" "." - ladir=$func_dirname_result - - dlname= - dlopen= - dlpreopen= - libdir= - library_names= - old_library= - inherited_linker_flags= - # If the library was installed with an old release of libtool, - # it will not redefine variables installed, or shouldnotlink - installed=yes - shouldnotlink=no - avoidtemprpath= - - - # Read the .la file - func_source "$lib" - - # Convert "-framework foo" to "foo.ltframework" - if test -n "$inherited_linker_flags"; then - tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` - for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do - case " $new_inherited_linker_flags " in - *" $tmp_inherited_linker_flag "*) ;; - *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; - esac - done - fi - dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - if test lib,link = "$linkmode,$pass" || - test prog,scan = "$linkmode,$pass" || - { test prog != "$linkmode" && test lib != "$linkmode"; }; then - test -n "$dlopen" && func_append dlfiles " $dlopen" - test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" - fi - - if test conv = "$pass"; then - # Only check for convenience libraries - deplibs="$lib $deplibs" - if test -z "$libdir"; then - if test -z "$old_library"; then - func_fatal_error "cannot find name of link library for '$lib'" - fi - # It is a libtool convenience library, so add in its objects. - func_append convenience " $ladir/$objdir/$old_library" - func_append old_convenience " $ladir/$objdir/$old_library" - elif test prog != "$linkmode" && test lib != "$linkmode"; then - func_fatal_error "'$lib' is not a convenience library" - fi - tmp_libs= - for deplib in $dependency_libs; do - deplibs="$deplib $deplibs" - if $opt_preserve_dup_deps; then - case "$tmp_libs " in - *" $deplib "*) func_append specialdeplibs " $deplib" ;; - esac - fi - func_append tmp_libs " $deplib" - done - continue - fi # $pass = conv - - - # Get the name of the library we link against. - linklib= - if test -n "$old_library" && - { test yes = "$prefer_static_libs" || - test built,no = "$prefer_static_libs,$installed"; }; then - linklib=$old_library - else - for l in $old_library $library_names; do - linklib=$l - done - fi - if test -z "$linklib"; then - func_fatal_error "cannot find name of link library for '$lib'" - fi - - # This library was specified with -dlopen. - if test dlopen = "$pass"; then - test -z "$libdir" \ - && func_fatal_error "cannot -dlopen a convenience library: '$lib'" - if test -z "$dlname" || - test yes != "$dlopen_support" || - test no = "$build_libtool_libs" - then - # If there is no dlname, no dlopen support or we're linking - # statically, we need to preload. We also need to preload any - # dependent libraries so libltdl's deplib preloader doesn't - # bomb out in the load deplibs phase. - func_append dlprefiles " $lib $dependency_libs" - else - func_append newdlfiles " $lib" - fi - continue - fi # $pass = dlopen - - # We need an absolute path. - case $ladir in - [\\/]* | [A-Za-z]:[\\/]*) abs_ladir=$ladir ;; - *) - abs_ladir=`cd "$ladir" && pwd` - if test -z "$abs_ladir"; then - func_warning "cannot determine absolute directory name of '$ladir'" - func_warning "passing it literally to the linker, although it might fail" - abs_ladir=$ladir - fi - ;; - esac - func_basename "$lib" - laname=$func_basename_result - - # Find the relevant object directory and library name. - if test yes = "$installed"; then - if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then - func_warning "library '$lib' was moved." - dir=$ladir - absdir=$abs_ladir - libdir=$abs_ladir - else - dir=$lt_sysroot$libdir - absdir=$lt_sysroot$libdir - fi - test yes = "$hardcode_automatic" && avoidtemprpath=yes - else - if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then - dir=$ladir - absdir=$abs_ladir - # Remove this search path later - func_append notinst_path " $abs_ladir" - else - dir=$ladir/$objdir - absdir=$abs_ladir/$objdir - # Remove this search path later - func_append notinst_path " $abs_ladir" - fi - fi # $installed = yes - func_stripname 'lib' '.la' "$laname" - name=$func_stripname_result - - # This library was specified with -dlpreopen. - if test dlpreopen = "$pass"; then - if test -z "$libdir" && test prog = "$linkmode"; then - func_fatal_error "only libraries may -dlpreopen a convenience library: '$lib'" - fi - case $host in - # special handling for platforms with PE-DLLs. - *cygwin* | *mingw* | *cegcc* ) - # Linker will automatically link against shared library if both - # static and shared are present. Therefore, ensure we extract - # symbols from the import library if a shared library is present - # (otherwise, the dlopen module name will be incorrect). We do - # this by putting the import library name into $newdlprefiles. - # We recover the dlopen module name by 'saving' the la file - # name in a special purpose variable, and (later) extracting the - # dlname from the la file. - if test -n "$dlname"; then - func_tr_sh "$dir/$linklib" - eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" - func_append newdlprefiles " $dir/$linklib" - else - func_append newdlprefiles " $dir/$old_library" - # Keep a list of preopened convenience libraries to check - # that they are being used correctly in the link pass. - test -z "$libdir" && \ - func_append dlpreconveniencelibs " $dir/$old_library" - fi - ;; - * ) - # Prefer using a static library (so that no silly _DYNAMIC symbols - # are required to link). - if test -n "$old_library"; then - func_append newdlprefiles " $dir/$old_library" - # Keep a list of preopened convenience libraries to check - # that they are being used correctly in the link pass. - test -z "$libdir" && \ - func_append dlpreconveniencelibs " $dir/$old_library" - # Otherwise, use the dlname, so that lt_dlopen finds it. - elif test -n "$dlname"; then - func_append newdlprefiles " $dir/$dlname" - else - func_append newdlprefiles " $dir/$linklib" - fi - ;; - esac - fi # $pass = dlpreopen - - if test -z "$libdir"; then - # Link the convenience library - if test lib = "$linkmode"; then - deplibs="$dir/$old_library $deplibs" - elif test prog,link = "$linkmode,$pass"; then - compile_deplibs="$dir/$old_library $compile_deplibs" - finalize_deplibs="$dir/$old_library $finalize_deplibs" - else - deplibs="$lib $deplibs" # used for prog,scan pass - fi - continue - fi - - - if test prog = "$linkmode" && test link != "$pass"; then - func_append newlib_search_path " $ladir" - deplibs="$lib $deplibs" - - linkalldeplibs=false - if test no != "$link_all_deplibs" || test -z "$library_names" || - test no = "$build_libtool_libs"; then - linkalldeplibs=: - fi - - tmp_libs= - for deplib in $dependency_libs; do - case $deplib in - -L*) func_stripname '-L' '' "$deplib" - func_resolve_sysroot "$func_stripname_result" - func_append newlib_search_path " $func_resolve_sysroot_result" - ;; - esac - # Need to link against all dependency_libs? - if $linkalldeplibs; then - deplibs="$deplib $deplibs" - else - # Need to hardcode shared library paths - # or/and link against static libraries - newdependency_libs="$deplib $newdependency_libs" - fi - if $opt_preserve_dup_deps; then - case "$tmp_libs " in - *" $deplib "*) func_append specialdeplibs " $deplib" ;; - esac - fi - func_append tmp_libs " $deplib" - done # for deplib - continue - fi # $linkmode = prog... - - if test prog,link = "$linkmode,$pass"; then - if test -n "$library_names" && - { { test no = "$prefer_static_libs" || - test built,yes = "$prefer_static_libs,$installed"; } || - test -z "$old_library"; }; then - # We need to hardcode the library path - if test -n "$shlibpath_var" && test -z "$avoidtemprpath"; then - # Make sure the rpath contains only unique directories. - case $temp_rpath: in - *"$absdir:"*) ;; - *) func_append temp_rpath "$absdir:" ;; - esac - fi - - # Hardcode the library path. - # Skip directories that are in the system default run-time - # search path. - case " $sys_lib_dlsearch_path " in - *" $absdir "*) ;; - *) - case "$compile_rpath " in - *" $absdir "*) ;; - *) func_append compile_rpath " $absdir" ;; - esac - ;; - esac - case " $sys_lib_dlsearch_path " in - *" $libdir "*) ;; - *) - case "$finalize_rpath " in - *" $libdir "*) ;; - *) func_append finalize_rpath " $libdir" ;; - esac - ;; - esac - fi # $linkmode,$pass = prog,link... - - if $alldeplibs && - { test pass_all = "$deplibs_check_method" || - { test yes = "$build_libtool_libs" && - test -n "$library_names"; }; }; then - # We only need to search for static libraries - continue - fi - fi - - link_static=no # Whether the deplib will be linked statically - use_static_libs=$prefer_static_libs - if test built = "$use_static_libs" && test yes = "$installed"; then - use_static_libs=no - fi - if test -n "$library_names" && - { test no = "$use_static_libs" || test -z "$old_library"; }; then - case $host in - *cygwin* | *mingw* | *cegcc* | *os2*) - # No point in relinking DLLs because paths are not encoded - func_append notinst_deplibs " $lib" - need_relink=no - ;; - *) - if test no = "$installed"; then - func_append notinst_deplibs " $lib" - need_relink=yes - fi - ;; - esac - # This is a shared library - - # Warn about portability, can't link against -module's on some - # systems (darwin). Don't bleat about dlopened modules though! - dlopenmodule= - for dlpremoduletest in $dlprefiles; do - if test "X$dlpremoduletest" = "X$lib"; then - dlopenmodule=$dlpremoduletest - break - fi - done - if test -z "$dlopenmodule" && test yes = "$shouldnotlink" && test link = "$pass"; then - echo - if test prog = "$linkmode"; then - $ECHO "*** Warning: Linking the executable $output against the loadable module" - else - $ECHO "*** Warning: Linking the shared library $output against the loadable module" - fi - $ECHO "*** $linklib is not portable!" - fi - if test lib = "$linkmode" && - test yes = "$hardcode_into_libs"; then - # Hardcode the library path. - # Skip directories that are in the system default run-time - # search path. - case " $sys_lib_dlsearch_path " in - *" $absdir "*) ;; - *) - case "$compile_rpath " in - *" $absdir "*) ;; - *) func_append compile_rpath " $absdir" ;; - esac - ;; - esac - case " $sys_lib_dlsearch_path " in - *" $libdir "*) ;; - *) - case "$finalize_rpath " in - *" $libdir "*) ;; - *) func_append finalize_rpath " $libdir" ;; - esac - ;; - esac - fi - - if test -n "$old_archive_from_expsyms_cmds"; then - # figure out the soname - set dummy $library_names - shift - realname=$1 - shift - libname=`eval "\\$ECHO \"$libname_spec\""` - # use dlname if we got it. it's perfectly good, no? - if test -n "$dlname"; then - soname=$dlname - elif test -n "$soname_spec"; then - # bleh windows - case $host in - *cygwin* | mingw* | *cegcc* | *os2*) - func_arith $current - $age - major=$func_arith_result - versuffix=-$major - ;; - esac - eval soname=\"$soname_spec\" - else - soname=$realname - fi - - # Make a new name for the extract_expsyms_cmds to use - soroot=$soname - func_basename "$soroot" - soname=$func_basename_result - func_stripname 'lib' '.dll' "$soname" - newlib=libimp-$func_stripname_result.a - - # If the library has no export list, then create one now - if test -f "$output_objdir/$soname-def"; then : - else - func_verbose "extracting exported symbol list from '$soname'" - func_execute_cmds "$extract_expsyms_cmds" 'exit $?' - fi - - # Create $newlib - if test -f "$output_objdir/$newlib"; then :; else - func_verbose "generating import library for '$soname'" - func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' - fi - # make sure the library variables are pointing to the new library - dir=$output_objdir - linklib=$newlib - fi # test -n "$old_archive_from_expsyms_cmds" - - if test prog = "$linkmode" || test relink != "$opt_mode"; then - add_shlibpath= - add_dir= - add= - lib_linked=yes - case $hardcode_action in - immediate | unsupported) - if test no = "$hardcode_direct"; then - add=$dir/$linklib - case $host in - *-*-sco3.2v5.0.[024]*) add_dir=-L$dir ;; - *-*-sysv4*uw2*) add_dir=-L$dir ;; - *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ - *-*-unixware7*) add_dir=-L$dir ;; - *-*-darwin* ) - # if the lib is a (non-dlopened) module then we cannot - # link against it, someone is ignoring the earlier warnings - if /usr/bin/file -L $add 2> /dev/null | - $GREP ": [^:]* bundle" >/dev/null; then - if test "X$dlopenmodule" != "X$lib"; then - $ECHO "*** Warning: lib $linklib is a module, not a shared library" - if test -z "$old_library"; then - echo - echo "*** And there doesn't seem to be a static archive available" - echo "*** The link will probably fail, sorry" - else - add=$dir/$old_library - fi - elif test -n "$old_library"; then - add=$dir/$old_library - fi - fi - esac - elif test no = "$hardcode_minus_L"; then - case $host in - *-*-sunos*) add_shlibpath=$dir ;; - esac - add_dir=-L$dir - add=-l$name - elif test no = "$hardcode_shlibpath_var"; then - add_shlibpath=$dir - add=-l$name - else - lib_linked=no - fi - ;; - relink) - if test yes = "$hardcode_direct" && - test no = "$hardcode_direct_absolute"; then - add=$dir/$linklib - elif test yes = "$hardcode_minus_L"; then - add_dir=-L$absdir - # Try looking first in the location we're being installed to. - if test -n "$inst_prefix_dir"; then - case $libdir in - [\\/]*) - func_append add_dir " -L$inst_prefix_dir$libdir" - ;; - esac - fi - add=-l$name - elif test yes = "$hardcode_shlibpath_var"; then - add_shlibpath=$dir - add=-l$name - else - lib_linked=no - fi - ;; - *) lib_linked=no ;; - esac - - if test yes != "$lib_linked"; then - func_fatal_configuration "unsupported hardcode properties" - fi - - if test -n "$add_shlibpath"; then - case :$compile_shlibpath: in - *":$add_shlibpath:"*) ;; - *) func_append compile_shlibpath "$add_shlibpath:" ;; - esac - fi - if test prog = "$linkmode"; then - test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" - test -n "$add" && compile_deplibs="$add $compile_deplibs" - else - test -n "$add_dir" && deplibs="$add_dir $deplibs" - test -n "$add" && deplibs="$add $deplibs" - if test yes != "$hardcode_direct" && - test yes != "$hardcode_minus_L" && - test yes = "$hardcode_shlibpath_var"; then - case :$finalize_shlibpath: in - *":$libdir:"*) ;; - *) func_append finalize_shlibpath "$libdir:" ;; - esac - fi - fi - fi - - if test prog = "$linkmode" || test relink = "$opt_mode"; then - add_shlibpath= - add_dir= - add= - # Finalize command for both is simple: just hardcode it. - if test yes = "$hardcode_direct" && - test no = "$hardcode_direct_absolute"; then - add=$libdir/$linklib - elif test yes = "$hardcode_minus_L"; then - add_dir=-L$libdir - add=-l$name - elif test yes = "$hardcode_shlibpath_var"; then - case :$finalize_shlibpath: in - *":$libdir:"*) ;; - *) func_append finalize_shlibpath "$libdir:" ;; - esac - add=-l$name - elif test yes = "$hardcode_automatic"; then - if test -n "$inst_prefix_dir" && - test -f "$inst_prefix_dir$libdir/$linklib"; then - add=$inst_prefix_dir$libdir/$linklib - else - add=$libdir/$linklib - fi - else - # We cannot seem to hardcode it, guess we'll fake it. - add_dir=-L$libdir - # Try looking first in the location we're being installed to. - if test -n "$inst_prefix_dir"; then - case $libdir in - [\\/]*) - func_append add_dir " -L$inst_prefix_dir$libdir" - ;; - esac - fi - add=-l$name - fi - - if test prog = "$linkmode"; then - test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" - test -n "$add" && finalize_deplibs="$add $finalize_deplibs" - else - test -n "$add_dir" && deplibs="$add_dir $deplibs" - test -n "$add" && deplibs="$add $deplibs" - fi - fi - elif test prog = "$linkmode"; then - # Here we assume that one of hardcode_direct or hardcode_minus_L - # is not unsupported. This is valid on all known static and - # shared platforms. - if test unsupported != "$hardcode_direct"; then - test -n "$old_library" && linklib=$old_library - compile_deplibs="$dir/$linklib $compile_deplibs" - finalize_deplibs="$dir/$linklib $finalize_deplibs" - else - compile_deplibs="-l$name -L$dir $compile_deplibs" - finalize_deplibs="-l$name -L$dir $finalize_deplibs" - fi - elif test yes = "$build_libtool_libs"; then - # Not a shared library - if test pass_all != "$deplibs_check_method"; then - # We're trying link a shared library against a static one - # but the system doesn't support it. - - # Just print a warning and add the library to dependency_libs so - # that the program can be linked against the static library. - echo - $ECHO "*** Warning: This system cannot link to static lib archive $lib." - echo "*** I have the capability to make that library automatically link in when" - echo "*** you link to this library. But I can only do this if you have a" - echo "*** shared version of the library, which you do not appear to have." - if test yes = "$module"; then - echo "*** But as you try to build a module library, libtool will still create " - echo "*** a static module, that should work as long as the dlopening application" - echo "*** is linked with the -dlopen flag to resolve symbols at runtime." - if test -z "$global_symbol_pipe"; then - echo - echo "*** However, this would only work if libtool was able to extract symbol" - echo "*** lists from a program, using 'nm' or equivalent, but libtool could" - echo "*** not find such a program. So, this module is probably useless." - echo "*** 'nm' from GNU binutils and a full rebuild may help." - fi - if test no = "$build_old_libs"; then - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - fi - else - deplibs="$dir/$old_library $deplibs" - link_static=yes - fi - fi # link shared/static library? - - if test lib = "$linkmode"; then - if test -n "$dependency_libs" && - { test yes != "$hardcode_into_libs" || - test yes = "$build_old_libs" || - test yes = "$link_static"; }; then - # Extract -R from dependency_libs - temp_deplibs= - for libdir in $dependency_libs; do - case $libdir in - -R*) func_stripname '-R' '' "$libdir" - temp_xrpath=$func_stripname_result - case " $xrpath " in - *" $temp_xrpath "*) ;; - *) func_append xrpath " $temp_xrpath";; - esac;; - *) func_append temp_deplibs " $libdir";; - esac - done - dependency_libs=$temp_deplibs - fi - - func_append newlib_search_path " $absdir" - # Link against this library - test no = "$link_static" && newdependency_libs="$abs_ladir/$laname $newdependency_libs" - # ... and its dependency_libs - tmp_libs= - for deplib in $dependency_libs; do - newdependency_libs="$deplib $newdependency_libs" - case $deplib in - -L*) func_stripname '-L' '' "$deplib" - func_resolve_sysroot "$func_stripname_result";; - *) func_resolve_sysroot "$deplib" ;; - esac - if $opt_preserve_dup_deps; then - case "$tmp_libs " in - *" $func_resolve_sysroot_result "*) - func_append specialdeplibs " $func_resolve_sysroot_result" ;; - esac - fi - func_append tmp_libs " $func_resolve_sysroot_result" - done - - if test no != "$link_all_deplibs"; then - # Add the search paths of all dependency libraries - for deplib in $dependency_libs; do - path= - case $deplib in - -L*) path=$deplib ;; - *.la) - func_resolve_sysroot "$deplib" - deplib=$func_resolve_sysroot_result - func_dirname "$deplib" "" "." - dir=$func_dirname_result - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) absdir=$dir ;; - *) - absdir=`cd "$dir" && pwd` - if test -z "$absdir"; then - func_warning "cannot determine absolute directory name of '$dir'" - absdir=$dir - fi - ;; - esac - if $GREP "^installed=no" $deplib > /dev/null; then - case $host in - *-*-darwin*) - depdepl= - eval deplibrary_names=`$SED -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` - if test -n "$deplibrary_names"; then - for tmp in $deplibrary_names; do - depdepl=$tmp - done - if test -f "$absdir/$objdir/$depdepl"; then - depdepl=$absdir/$objdir/$depdepl - darwin_install_name=`$OTOOL -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` - if test -z "$darwin_install_name"; then - darwin_install_name=`$OTOOL64 -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` - fi - func_append compiler_flags " $wl-dylib_file $wl$darwin_install_name:$depdepl" - func_append linker_flags " -dylib_file $darwin_install_name:$depdepl" - path= - fi - fi - ;; - *) - path=-L$absdir/$objdir - ;; - esac - else - eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` - test -z "$libdir" && \ - func_fatal_error "'$deplib' is not a valid libtool archive" - test "$absdir" != "$libdir" && \ - func_warning "'$deplib' seems to be moved" - - path=-L$absdir - fi - ;; - esac - case " $deplibs " in - *" $path "*) ;; - *) deplibs="$path $deplibs" ;; - esac - done - fi # link_all_deplibs != no - fi # linkmode = lib - done # for deplib in $libs - if test link = "$pass"; then - if test prog = "$linkmode"; then - compile_deplibs="$new_inherited_linker_flags $compile_deplibs" - finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" - else - compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - fi - fi - dependency_libs=$newdependency_libs - if test dlpreopen = "$pass"; then - # Link the dlpreopened libraries before other libraries - for deplib in $save_deplibs; do - deplibs="$deplib $deplibs" - done - fi - if test dlopen != "$pass"; then - test conv = "$pass" || { - # Make sure lib_search_path contains only unique directories. - lib_search_path= - for dir in $newlib_search_path; do - case "$lib_search_path " in - *" $dir "*) ;; - *) func_append lib_search_path " $dir" ;; - esac - done - newlib_search_path= - } - - if test prog,link = "$linkmode,$pass"; then - vars="compile_deplibs finalize_deplibs" - else - vars=deplibs - fi - for var in $vars dependency_libs; do - # Add libraries to $var in reverse order - eval tmp_libs=\"\$$var\" - new_libs= - for deplib in $tmp_libs; do - # FIXME: Pedantically, this is the right thing to do, so - # that some nasty dependency loop isn't accidentally - # broken: - #new_libs="$deplib $new_libs" - # Pragmatically, this seems to cause very few problems in - # practice: - case $deplib in - -L*) new_libs="$deplib $new_libs" ;; - -R*) ;; - *) - # And here is the reason: when a library appears more - # than once as an explicit dependence of a library, or - # is implicitly linked in more than once by the - # compiler, it is considered special, and multiple - # occurrences thereof are not removed. Compare this - # with having the same library being listed as a - # dependency of multiple other libraries: in this case, - # we know (pedantically, we assume) the library does not - # need to be listed more than once, so we keep only the - # last copy. This is not always right, but it is rare - # enough that we require users that really mean to play - # such unportable linking tricks to link the library - # using -Wl,-lname, so that libtool does not consider it - # for duplicate removal. - case " $specialdeplibs " in - *" $deplib "*) new_libs="$deplib $new_libs" ;; - *) - case " $new_libs " in - *" $deplib "*) ;; - *) new_libs="$deplib $new_libs" ;; - esac - ;; - esac - ;; - esac - done - tmp_libs= - for deplib in $new_libs; do - case $deplib in - -L*) - case " $tmp_libs " in - *" $deplib "*) ;; - *) func_append tmp_libs " $deplib" ;; - esac - ;; - *) func_append tmp_libs " $deplib" ;; - esac - done - eval $var=\"$tmp_libs\" - done # for var - fi - - # Add Sun CC postdeps if required: - test CXX = "$tagname" && { - case $host_os in - linux*) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) # Sun C++ 5.9 - func_suncc_cstd_abi - - if test no != "$suncc_use_cstd_abi"; then - func_append postdeps ' -library=Cstd -library=Crun' - fi - ;; - esac - ;; - - solaris*) - func_cc_basename "$CC" - case $func_cc_basename_result in - CC* | sunCC*) - func_suncc_cstd_abi - - if test no != "$suncc_use_cstd_abi"; then - func_append postdeps ' -library=Cstd -library=Crun' - fi - ;; - esac - ;; - esac - } - - # Last step: remove runtime libs from dependency_libs - # (they stay in deplibs) - tmp_libs= - for i in $dependency_libs; do - case " $predeps $postdeps $compiler_lib_search_path " in - *" $i "*) - i= - ;; - esac - if test -n "$i"; then - func_append tmp_libs " $i" - fi - done - dependency_libs=$tmp_libs - done # for pass - if test prog = "$linkmode"; then - dlfiles=$newdlfiles - fi - if test prog = "$linkmode" || test lib = "$linkmode"; then - dlprefiles=$newdlprefiles - fi - - case $linkmode in - oldlib) - if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then - func_warning "'-dlopen' is ignored for archives" - fi - - case " $deplibs" in - *\ -l* | *\ -L*) - func_warning "'-l' and '-L' are ignored for archives" ;; - esac - - test -n "$rpath" && \ - func_warning "'-rpath' is ignored for archives" - - test -n "$xrpath" && \ - func_warning "'-R' is ignored for archives" - - test -n "$vinfo" && \ - func_warning "'-version-info/-version-number' is ignored for archives" - - test -n "$release" && \ - func_warning "'-release' is ignored for archives" - - test -n "$export_symbols$export_symbols_regex" && \ - func_warning "'-export-symbols' is ignored for archives" - - # Now set the variables for building old libraries. - build_libtool_libs=no - oldlibs=$output - func_append objs "$old_deplibs" - ;; - - lib) - # Make sure we only generate libraries of the form 'libNAME.la'. - case $outputname in - lib*) - func_stripname 'lib' '.la' "$outputname" - name=$func_stripname_result - eval shared_ext=\"$shrext_cmds\" - eval libname=\"$libname_spec\" - ;; - *) - test no = "$module" \ - && func_fatal_help "libtool library '$output' must begin with 'lib'" - - if test no != "$need_lib_prefix"; then - # Add the "lib" prefix for modules if required - func_stripname '' '.la' "$outputname" - name=$func_stripname_result - eval shared_ext=\"$shrext_cmds\" - eval libname=\"$libname_spec\" - else - func_stripname '' '.la' "$outputname" - libname=$func_stripname_result - fi - ;; - esac - - if test -n "$objs"; then - if test pass_all != "$deplibs_check_method"; then - func_fatal_error "cannot build libtool library '$output' from non-libtool objects on this host:$objs" - else - echo - $ECHO "*** Warning: Linking the shared library $output against the non-libtool" - $ECHO "*** objects $objs is not portable!" - func_append libobjs " $objs" - fi - fi - - test no = "$dlself" \ - || func_warning "'-dlopen self' is ignored for libtool libraries" - - set dummy $rpath - shift - test 1 -lt "$#" \ - && func_warning "ignoring multiple '-rpath's for a libtool library" - - install_libdir=$1 - - oldlibs= - if test -z "$rpath"; then - if test yes = "$build_libtool_libs"; then - # Building a libtool convenience library. - # Some compilers have problems with a '.al' extension so - # convenience libraries should have the same extension an - # archive normally would. - oldlibs="$output_objdir/$libname.$libext $oldlibs" - build_libtool_libs=convenience - build_old_libs=yes - fi - - test -n "$vinfo" && \ - func_warning "'-version-info/-version-number' is ignored for convenience libraries" - - test -n "$release" && \ - func_warning "'-release' is ignored for convenience libraries" - else - - # Parse the version information argument. - save_ifs=$IFS; IFS=: - set dummy $vinfo 0 0 0 - shift - IFS=$save_ifs - - test -n "$7" && \ - func_fatal_help "too many parameters to '-version-info'" - - # convert absolute version numbers to libtool ages - # this retains compatibility with .la files and attempts - # to make the code below a bit more comprehensible - - case $vinfo_number in - yes) - number_major=$1 - number_minor=$2 - number_revision=$3 - # - # There are really only two kinds -- those that - # use the current revision as the major version - # and those that subtract age and use age as - # a minor version. But, then there is irix - # that has an extra 1 added just for fun - # - case $version_type in - # correct linux to gnu/linux during the next big refactor - darwin|freebsd-elf|linux|osf|windows|none) - func_arith $number_major + $number_minor - current=$func_arith_result - age=$number_minor - revision=$number_revision - ;; - freebsd-aout|qnx|sunos) - current=$number_major - revision=$number_minor - age=0 - ;; - irix|nonstopux) - func_arith $number_major + $number_minor - current=$func_arith_result - age=$number_minor - revision=$number_minor - lt_irix_increment=no - ;; - esac - ;; - no) - current=$1 - revision=$2 - age=$3 - ;; - esac - - # Check that each of the things are valid numbers. - case $current in - 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; - *) - func_error "CURRENT '$current' must be a nonnegative integer" - func_fatal_error "'$vinfo' is not valid version information" - ;; - esac - - case $revision in - 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; - *) - func_error "REVISION '$revision' must be a nonnegative integer" - func_fatal_error "'$vinfo' is not valid version information" - ;; - esac - - case $age in - 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; - *) - func_error "AGE '$age' must be a nonnegative integer" - func_fatal_error "'$vinfo' is not valid version information" - ;; - esac - - if test "$age" -gt "$current"; then - func_error "AGE '$age' is greater than the current interface number '$current'" - func_fatal_error "'$vinfo' is not valid version information" - fi - - # Calculate the version variables. - major= - versuffix= - verstring= - case $version_type in - none) ;; - - darwin) - # Like Linux, but with the current version available in - # verstring for coding it into the library header - func_arith $current - $age - major=.$func_arith_result - versuffix=$major.$age.$revision - # Darwin ld doesn't like 0 for these options... - func_arith $current + 1 - minor_current=$func_arith_result - xlcverstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" - verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" - # On Darwin other compilers - case $CC in - nagfor*) - verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" - ;; - *) - verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" - ;; - esac - ;; - - freebsd-aout) - major=.$current - versuffix=.$current.$revision - ;; - - freebsd-elf) - func_arith $current - $age - major=.$func_arith_result - versuffix=$major.$age.$revision - ;; - - irix | nonstopux) - if test no = "$lt_irix_increment"; then - func_arith $current - $age - else - func_arith $current - $age + 1 - fi - major=$func_arith_result - - case $version_type in - nonstopux) verstring_prefix=nonstopux ;; - *) verstring_prefix=sgi ;; - esac - verstring=$verstring_prefix$major.$revision - - # Add in all the interfaces that we are compatible with. - loop=$revision - while test 0 -ne "$loop"; do - func_arith $revision - $loop - iface=$func_arith_result - func_arith $loop - 1 - loop=$func_arith_result - verstring=$verstring_prefix$major.$iface:$verstring - done - - # Before this point, $major must not contain '.'. - major=.$major - versuffix=$major.$revision - ;; - - linux) # correct to gnu/linux during the next big refactor - func_arith $current - $age - major=.$func_arith_result - versuffix=$major.$age.$revision - ;; - - osf) - func_arith $current - $age - major=.$func_arith_result - versuffix=.$current.$age.$revision - verstring=$current.$age.$revision - - # Add in all the interfaces that we are compatible with. - loop=$age - while test 0 -ne "$loop"; do - func_arith $current - $loop - iface=$func_arith_result - func_arith $loop - 1 - loop=$func_arith_result - verstring=$verstring:$iface.0 - done - - # Make executables depend on our current version. - func_append verstring ":$current.0" - ;; - - qnx) - major=.$current - versuffix=.$current - ;; - - sco) - major=.$current - versuffix=.$current - ;; - - sunos) - major=.$current - versuffix=.$current.$revision - ;; - - windows) - # Use '-' rather than '.', since we only want one - # extension on DOS 8.3 file systems. - func_arith $current - $age - major=$func_arith_result - versuffix=-$major - ;; - - *) - func_fatal_configuration "unknown library version type '$version_type'" - ;; - esac - - # Clear the version info if we defaulted, and they specified a release. - if test -z "$vinfo" && test -n "$release"; then - major= - case $version_type in - darwin) - # we can't check for "0.0" in archive_cmds due to quoting - # problems, so we reset it completely - verstring= - ;; - *) - verstring=0.0 - ;; - esac - if test no = "$need_version"; then - versuffix= - else - versuffix=.0.0 - fi - fi - - # Remove version info from name if versioning should be avoided - if test yes,no = "$avoid_version,$need_version"; then - major= - versuffix= - verstring= - fi - - # Check to see if the archive will have undefined symbols. - if test yes = "$allow_undefined"; then - if test unsupported = "$allow_undefined_flag"; then - if test yes = "$build_old_libs"; then - func_warning "undefined symbols not allowed in $host shared libraries; building static only" - build_libtool_libs=no - else - func_fatal_error "can't build $host shared library unless -no-undefined is specified" - fi - fi - else - # Don't allow undefined symbols. - allow_undefined_flag=$no_undefined_flag - fi - - fi - - func_generate_dlsyms "$libname" "$libname" : - func_append libobjs " $symfileobj" - test " " = "$libobjs" && libobjs= - - if test relink != "$opt_mode"; then - # Remove our outputs, but don't remove object files since they - # may have been created when compiling PIC objects. - removelist= - tempremovelist=`$ECHO "$output_objdir/*"` - for p in $tempremovelist; do - case $p in - *.$objext | *.gcno) - ;; - $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/$libname$release.*) - if test -n "$precious_files_regex"; then - if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 - then - continue - fi - fi - func_append removelist " $p" - ;; - *) ;; - esac - done - test -n "$removelist" && \ - func_show_eval "${RM}r \$removelist" - fi - - # Now set the variables for building old libraries. - if test yes = "$build_old_libs" && test convenience != "$build_libtool_libs"; then - func_append oldlibs " $output_objdir/$libname.$libext" - - # Transform .lo files to .o files. - oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; $lo2o" | $NL2SP` - fi - - # Eliminate all temporary directories. - #for path in $notinst_path; do - # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` - # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` - # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` - #done - - if test -n "$xrpath"; then - # If the user specified any rpath flags, then add them. - temp_xrpath= - for libdir in $xrpath; do - func_replace_sysroot "$libdir" - func_append temp_xrpath " -R$func_replace_sysroot_result" - case "$finalize_rpath " in - *" $libdir "*) ;; - *) func_append finalize_rpath " $libdir" ;; - esac - done - if test yes != "$hardcode_into_libs" || test yes = "$build_old_libs"; then - dependency_libs="$temp_xrpath $dependency_libs" - fi - fi - - # Make sure dlfiles contains only unique files that won't be dlpreopened - old_dlfiles=$dlfiles - dlfiles= - for lib in $old_dlfiles; do - case " $dlprefiles $dlfiles " in - *" $lib "*) ;; - *) func_append dlfiles " $lib" ;; - esac - done - - # Make sure dlprefiles contains only unique files - old_dlprefiles=$dlprefiles - dlprefiles= - for lib in $old_dlprefiles; do - case "$dlprefiles " in - *" $lib "*) ;; - *) func_append dlprefiles " $lib" ;; - esac - done - - if test yes = "$build_libtool_libs"; then - if test -n "$rpath"; then - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) - # these systems don't actually have a c library (as such)! - ;; - *-*-rhapsody* | *-*-darwin1.[012]) - # Rhapsody C library is in the System framework - func_append deplibs " System.ltframework" - ;; - *-*-netbsd*) - # Don't link with libc until the a.out ld.so is fixed. - ;; - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) - # Do not include libc due to us having libc/libc_r. - ;; - *-*-sco3.2v5* | *-*-sco5v6*) - # Causes problems with __ctype - ;; - *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) - # Compiler inserts libc in the correct place for threads to work - ;; - *) - # Add libc to deplibs on all other systems if necessary. - if test yes = "$build_libtool_need_lc"; then - func_append deplibs " -lc" - fi - ;; - esac - fi - - # Transform deplibs into only deplibs that can be linked in shared. - name_save=$name - libname_save=$libname - release_save=$release - versuffix_save=$versuffix - major_save=$major - # I'm not sure if I'm treating the release correctly. I think - # release should show up in the -l (ie -lgmp5) so we don't want to - # add it in twice. Is that correct? - release= - versuffix= - major= - newdeplibs= - droppeddeps=no - case $deplibs_check_method in - pass_all) - # Don't check for shared/static. Everything works. - # This might be a little naive. We might want to check - # whether the library exists or not. But this is on - # osf3 & osf4 and I'm not really sure... Just - # implementing what was already the behavior. - newdeplibs=$deplibs - ;; - test_compile) - # This code stresses the "libraries are programs" paradigm to its - # limits. Maybe even breaks it. We compile a program, linking it - # against the deplibs as a proxy for the library. Then we can check - # whether they linked in statically or dynamically with ldd. - $opt_dry_run || $RM conftest.c - cat > conftest.c </dev/null` - $nocaseglob - else - potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` - fi - for potent_lib in $potential_libs; do - # Follow soft links. - if ls -lLd "$potent_lib" 2>/dev/null | - $GREP " -> " >/dev/null; then - continue - fi - # The statement above tries to avoid entering an - # endless loop below, in case of cyclic links. - # We might still enter an endless loop, since a link - # loop can be closed while we follow links, - # but so what? - potlib=$potent_lib - while test -h "$potlib" 2>/dev/null; do - potliblink=`ls -ld $potlib | $SED 's/.* -> //'` - case $potliblink in - [\\/]* | [A-Za-z]:[\\/]*) potlib=$potliblink;; - *) potlib=`$ECHO "$potlib" | $SED 's|[^/]*$||'`"$potliblink";; - esac - done - if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | - $SED -e 10q | - $EGREP "$file_magic_regex" > /dev/null; then - func_append newdeplibs " $a_deplib" - a_deplib= - break 2 - fi - done - done - fi - if test -n "$a_deplib"; then - droppeddeps=yes - echo - $ECHO "*** Warning: linker path does not have real file for library $a_deplib." - echo "*** I have the capability to make that library automatically link in when" - echo "*** you link to this library. But I can only do this if you have a" - echo "*** shared version of the library, which you do not appear to have" - echo "*** because I did check the linker path looking for a file starting" - if test -z "$potlib"; then - $ECHO "*** with $libname but no candidates were found. (...for file magic test)" - else - $ECHO "*** with $libname and none of the candidates passed a file format test" - $ECHO "*** using a file magic. Last file checked: $potlib" - fi - fi - ;; - *) - # Add a -L argument. - func_append newdeplibs " $a_deplib" - ;; - esac - done # Gone through all deplibs. - ;; - match_pattern*) - set dummy $deplibs_check_method; shift - match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` - for a_deplib in $deplibs; do - case $a_deplib in - -l*) - func_stripname -l '' "$a_deplib" - name=$func_stripname_result - if test yes = "$allow_libtool_libs_with_static_runtimes"; then - case " $predeps $postdeps " in - *" $a_deplib "*) - func_append newdeplibs " $a_deplib" - a_deplib= - ;; - esac - fi - if test -n "$a_deplib"; then - libname=`eval "\\$ECHO \"$libname_spec\""` - for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do - potential_libs=`ls $i/$libname[.-]* 2>/dev/null` - for potent_lib in $potential_libs; do - potlib=$potent_lib # see symlink-check above in file_magic test - if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ - $EGREP "$match_pattern_regex" > /dev/null; then - func_append newdeplibs " $a_deplib" - a_deplib= - break 2 - fi - done - done - fi - if test -n "$a_deplib"; then - droppeddeps=yes - echo - $ECHO "*** Warning: linker path does not have real file for library $a_deplib." - echo "*** I have the capability to make that library automatically link in when" - echo "*** you link to this library. But I can only do this if you have a" - echo "*** shared version of the library, which you do not appear to have" - echo "*** because I did check the linker path looking for a file starting" - if test -z "$potlib"; then - $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" - else - $ECHO "*** with $libname and none of the candidates passed a file format test" - $ECHO "*** using a regex pattern. Last file checked: $potlib" - fi - fi - ;; - *) - # Add a -L argument. - func_append newdeplibs " $a_deplib" - ;; - esac - done # Gone through all deplibs. - ;; - none | unknown | *) - newdeplibs= - tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` - if test yes = "$allow_libtool_libs_with_static_runtimes"; then - for i in $predeps $postdeps; do - # can't use Xsed below, because $i might contain '/' - tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s|$i||"` - done - fi - case $tmp_deplibs in - *[!\ \ ]*) - echo - if test none = "$deplibs_check_method"; then - echo "*** Warning: inter-library dependencies are not supported in this platform." - else - echo "*** Warning: inter-library dependencies are not known to be supported." - fi - echo "*** All declared inter-library dependencies are being dropped." - droppeddeps=yes - ;; - esac - ;; - esac - versuffix=$versuffix_save - major=$major_save - release=$release_save - libname=$libname_save - name=$name_save - - case $host in - *-*-rhapsody* | *-*-darwin1.[012]) - # On Rhapsody replace the C library with the System framework - newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` - ;; - esac - - if test yes = "$droppeddeps"; then - if test yes = "$module"; then - echo - echo "*** Warning: libtool could not satisfy all declared inter-library" - $ECHO "*** dependencies of module $libname. Therefore, libtool will create" - echo "*** a static module, that should work as long as the dlopening" - echo "*** application is linked with the -dlopen flag." - if test -z "$global_symbol_pipe"; then - echo - echo "*** However, this would only work if libtool was able to extract symbol" - echo "*** lists from a program, using 'nm' or equivalent, but libtool could" - echo "*** not find such a program. So, this module is probably useless." - echo "*** 'nm' from GNU binutils and a full rebuild may help." - fi - if test no = "$build_old_libs"; then - oldlibs=$output_objdir/$libname.$libext - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - else - echo "*** The inter-library dependencies that have been dropped here will be" - echo "*** automatically added whenever a program is linked with this library" - echo "*** or is declared to -dlopen it." - - if test no = "$allow_undefined"; then - echo - echo "*** Since this library must not contain undefined symbols," - echo "*** because either the platform does not support them or" - echo "*** it was explicitly requested with -no-undefined," - echo "*** libtool will only create a static version of it." - if test no = "$build_old_libs"; then - oldlibs=$output_objdir/$libname.$libext - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - fi - fi - fi - # Done checking deplibs! - deplibs=$newdeplibs - fi - # Time to change all our "foo.ltframework" stuff back to "-framework foo" - case $host in - *-*-darwin*) - newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - ;; - esac - - # move library search paths that coincide with paths to not yet - # installed libraries to the beginning of the library search list - new_libs= - for path in $notinst_path; do - case " $new_libs " in - *" -L$path/$objdir "*) ;; - *) - case " $deplibs " in - *" -L$path/$objdir "*) - func_append new_libs " -L$path/$objdir" ;; - esac - ;; - esac - done - for deplib in $deplibs; do - case $deplib in - -L*) - case " $new_libs " in - *" $deplib "*) ;; - *) func_append new_libs " $deplib" ;; - esac - ;; - *) func_append new_libs " $deplib" ;; - esac - done - deplibs=$new_libs - - # All the library-specific variables (install_libdir is set above). - library_names= - old_library= - dlname= - - # Test again, we may have decided not to build it any more - if test yes = "$build_libtool_libs"; then - # Remove $wl instances when linking with ld. - # FIXME: should test the right _cmds variable. - case $archive_cmds in - *\$LD\ *) wl= ;; - esac - if test yes = "$hardcode_into_libs"; then - # Hardcode the library paths - hardcode_libdirs= - dep_rpath= - rpath=$finalize_rpath - test relink = "$opt_mode" || rpath=$compile_rpath$rpath - for libdir in $rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - func_replace_sysroot "$libdir" - libdir=$func_replace_sysroot_result - if test -z "$hardcode_libdirs"; then - hardcode_libdirs=$libdir - else - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - func_append dep_rpath " $flag" - fi - elif test -n "$runpath_var"; then - case "$perm_rpath " in - *" $libdir "*) ;; - *) func_append perm_rpath " $libdir" ;; - esac - fi - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir=$hardcode_libdirs - eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" - fi - if test -n "$runpath_var" && test -n "$perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $perm_rpath; do - func_append rpath "$dir:" - done - eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" - fi - test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" - fi - - shlibpath=$finalize_shlibpath - test relink = "$opt_mode" || shlibpath=$compile_shlibpath$shlibpath - if test -n "$shlibpath"; then - eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" - fi - - # Get the real and link names of the library. - eval shared_ext=\"$shrext_cmds\" - eval library_names=\"$library_names_spec\" - set dummy $library_names - shift - realname=$1 - shift - - if test -n "$soname_spec"; then - eval soname=\"$soname_spec\" - else - soname=$realname - fi - if test -z "$dlname"; then - dlname=$soname - fi - - lib=$output_objdir/$realname - linknames= - for link - do - func_append linknames " $link" - done - - # Use standard objects if they are pic - test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` - test "X$libobjs" = "X " && libobjs= - - delfiles= - if test -n "$export_symbols" && test -n "$include_expsyms"; then - $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" - export_symbols=$output_objdir/$libname.uexp - func_append delfiles " $export_symbols" - fi - - orig_export_symbols= - case $host_os in - cygwin* | mingw* | cegcc*) - if test -n "$export_symbols" && test -z "$export_symbols_regex"; then - # exporting using user supplied symfile - func_dll_def_p "$export_symbols" || { - # and it's NOT already a .def file. Must figure out - # which of the given symbols are data symbols and tag - # them as such. So, trigger use of export_symbols_cmds. - # export_symbols gets reassigned inside the "prepare - # the list of exported symbols" if statement, so the - # include_expsyms logic still works. - orig_export_symbols=$export_symbols - export_symbols= - always_export_symbols=yes - } - fi - ;; - esac - - # Prepare the list of exported symbols - if test -z "$export_symbols"; then - if test yes = "$always_export_symbols" || test -n "$export_symbols_regex"; then - func_verbose "generating symbol list for '$libname.la'" - export_symbols=$output_objdir/$libname.exp - $opt_dry_run || $RM $export_symbols - cmds=$export_symbols_cmds - save_ifs=$IFS; IFS='~' - for cmd1 in $cmds; do - IFS=$save_ifs - # Take the normal branch if the nm_file_list_spec branch - # doesn't work or if tool conversion is not needed. - case $nm_file_list_spec~$to_tool_file_cmd in - *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) - try_normal_branch=yes - eval cmd=\"$cmd1\" - func_len " $cmd" - len=$func_len_result - ;; - *) - try_normal_branch=no - ;; - esac - if test yes = "$try_normal_branch" \ - && { test "$len" -lt "$max_cmd_len" \ - || test "$max_cmd_len" -le -1; } - then - func_show_eval "$cmd" 'exit $?' - skipped_export=false - elif test -n "$nm_file_list_spec"; then - func_basename "$output" - output_la=$func_basename_result - save_libobjs=$libobjs - save_output=$output - output=$output_objdir/$output_la.nm - func_to_tool_file "$output" - libobjs=$nm_file_list_spec$func_to_tool_file_result - func_append delfiles " $output" - func_verbose "creating $NM input file list: $output" - for obj in $save_libobjs; do - func_to_tool_file "$obj" - $ECHO "$func_to_tool_file_result" - done > "$output" - eval cmd=\"$cmd1\" - func_show_eval "$cmd" 'exit $?' - output=$save_output - libobjs=$save_libobjs - skipped_export=false - else - # The command line is too long to execute in one step. - func_verbose "using reloadable object file for export list..." - skipped_export=: - # Break out early, otherwise skipped_export may be - # set to false by a later but shorter cmd. - break - fi - done - IFS=$save_ifs - if test -n "$export_symbols_regex" && test : != "$skipped_export"; then - func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' - func_show_eval '$MV "${export_symbols}T" "$export_symbols"' - fi - fi - fi - - if test -n "$export_symbols" && test -n "$include_expsyms"; then - tmp_export_symbols=$export_symbols - test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols - $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' - fi - - if test : != "$skipped_export" && test -n "$orig_export_symbols"; then - # The given exports_symbols file has to be filtered, so filter it. - func_verbose "filter symbol list for '$libname.la' to tag DATA exports" - # FIXME: $output_objdir/$libname.filter potentially contains lots of - # 's' commands, which not all seds can handle. GNU sed should be fine - # though. Also, the filter scales superlinearly with the number of - # global variables. join(1) would be nice here, but unfortunately - # isn't a blessed tool. - $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter - func_append delfiles " $export_symbols $output_objdir/$libname.filter" - export_symbols=$output_objdir/$libname.def - $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols - fi - - tmp_deplibs= - for test_deplib in $deplibs; do - case " $convenience " in - *" $test_deplib "*) ;; - *) - func_append tmp_deplibs " $test_deplib" - ;; - esac - done - deplibs=$tmp_deplibs - - if test -n "$convenience"; then - if test -n "$whole_archive_flag_spec" && - test yes = "$compiler_needs_object" && - test -z "$libobjs"; then - # extract the archives, so we have objects to list. - # TODO: could optimize this to just extract one archive. - whole_archive_flag_spec= - fi - if test -n "$whole_archive_flag_spec"; then - save_libobjs=$libobjs - eval libobjs=\"\$libobjs $whole_archive_flag_spec\" - test "X$libobjs" = "X " && libobjs= - else - gentop=$output_objdir/${outputname}x - func_append generated " $gentop" - - func_extract_archives $gentop $convenience - func_append libobjs " $func_extract_archives_result" - test "X$libobjs" = "X " && libobjs= - fi - fi - - if test yes = "$thread_safe" && test -n "$thread_safe_flag_spec"; then - eval flag=\"$thread_safe_flag_spec\" - func_append linker_flags " $flag" - fi - - # Make a backup of the uninstalled library when relinking - if test relink = "$opt_mode"; then - $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? - fi - - # Do each of the archive commands. - if test yes = "$module" && test -n "$module_cmds"; then - if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then - eval test_cmds=\"$module_expsym_cmds\" - cmds=$module_expsym_cmds - else - eval test_cmds=\"$module_cmds\" - cmds=$module_cmds - fi - else - if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then - eval test_cmds=\"$archive_expsym_cmds\" - cmds=$archive_expsym_cmds - else - eval test_cmds=\"$archive_cmds\" - cmds=$archive_cmds - fi - fi - - if test : != "$skipped_export" && - func_len " $test_cmds" && - len=$func_len_result && - test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then - : - else - # The command line is too long to link in one step, link piecewise - # or, if using GNU ld and skipped_export is not :, use a linker - # script. - - # Save the value of $output and $libobjs because we want to - # use them later. If we have whole_archive_flag_spec, we - # want to use save_libobjs as it was before - # whole_archive_flag_spec was expanded, because we can't - # assume the linker understands whole_archive_flag_spec. - # This may have to be revisited, in case too many - # convenience libraries get linked in and end up exceeding - # the spec. - if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then - save_libobjs=$libobjs - fi - save_output=$output - func_basename "$output" - output_la=$func_basename_result - - # Clear the reloadable object creation command queue and - # initialize k to one. - test_cmds= - concat_cmds= - objlist= - last_robj= - k=1 - - if test -n "$save_libobjs" && test : != "$skipped_export" && test yes = "$with_gnu_ld"; then - output=$output_objdir/$output_la.lnkscript - func_verbose "creating GNU ld script: $output" - echo 'INPUT (' > $output - for obj in $save_libobjs - do - func_to_tool_file "$obj" - $ECHO "$func_to_tool_file_result" >> $output - done - echo ')' >> $output - func_append delfiles " $output" - func_to_tool_file "$output" - output=$func_to_tool_file_result - elif test -n "$save_libobjs" && test : != "$skipped_export" && test -n "$file_list_spec"; then - output=$output_objdir/$output_la.lnk - func_verbose "creating linker input file list: $output" - : > $output - set x $save_libobjs - shift - firstobj= - if test yes = "$compiler_needs_object"; then - firstobj="$1 " - shift - fi - for obj - do - func_to_tool_file "$obj" - $ECHO "$func_to_tool_file_result" >> $output - done - func_append delfiles " $output" - func_to_tool_file "$output" - output=$firstobj\"$file_list_spec$func_to_tool_file_result\" - else - if test -n "$save_libobjs"; then - func_verbose "creating reloadable object files..." - output=$output_objdir/$output_la-$k.$objext - eval test_cmds=\"$reload_cmds\" - func_len " $test_cmds" - len0=$func_len_result - len=$len0 - - # Loop over the list of objects to be linked. - for obj in $save_libobjs - do - func_len " $obj" - func_arith $len + $func_len_result - len=$func_arith_result - if test -z "$objlist" || - test "$len" -lt "$max_cmd_len"; then - func_append objlist " $obj" - else - # The command $test_cmds is almost too long, add a - # command to the queue. - if test 1 -eq "$k"; then - # The first file doesn't have a previous command to add. - reload_objs=$objlist - eval concat_cmds=\"$reload_cmds\" - else - # All subsequent reloadable object files will link in - # the last one created. - reload_objs="$objlist $last_robj" - eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" - fi - last_robj=$output_objdir/$output_la-$k.$objext - func_arith $k + 1 - k=$func_arith_result - output=$output_objdir/$output_la-$k.$objext - objlist=" $obj" - func_len " $last_robj" - func_arith $len0 + $func_len_result - len=$func_arith_result - fi - done - # Handle the remaining objects by creating one last - # reloadable object file. All subsequent reloadable object - # files will link in the last one created. - test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - reload_objs="$objlist $last_robj" - eval concat_cmds=\"\$concat_cmds$reload_cmds\" - if test -n "$last_robj"; then - eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" - fi - func_append delfiles " $output" - - else - output= - fi - - ${skipped_export-false} && { - func_verbose "generating symbol list for '$libname.la'" - export_symbols=$output_objdir/$libname.exp - $opt_dry_run || $RM $export_symbols - libobjs=$output - # Append the command to create the export file. - test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" - if test -n "$last_robj"; then - eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" - fi - } - - test -n "$save_libobjs" && - func_verbose "creating a temporary reloadable object file: $output" - - # Loop through the commands generated above and execute them. - save_ifs=$IFS; IFS='~' - for cmd in $concat_cmds; do - IFS=$save_ifs - $opt_quiet || { - func_quote_for_expand "$cmd" - eval "func_echo $func_quote_for_expand_result" - } - $opt_dry_run || eval "$cmd" || { - lt_exit=$? - - # Restore the uninstalled library and exit - if test relink = "$opt_mode"; then - ( cd "$output_objdir" && \ - $RM "${realname}T" && \ - $MV "${realname}U" "$realname" ) - fi - - exit $lt_exit - } - done - IFS=$save_ifs - - if test -n "$export_symbols_regex" && ${skipped_export-false}; then - func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' - func_show_eval '$MV "${export_symbols}T" "$export_symbols"' - fi - fi - - ${skipped_export-false} && { - if test -n "$export_symbols" && test -n "$include_expsyms"; then - tmp_export_symbols=$export_symbols - test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols - $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' - fi - - if test -n "$orig_export_symbols"; then - # The given exports_symbols file has to be filtered, so filter it. - func_verbose "filter symbol list for '$libname.la' to tag DATA exports" - # FIXME: $output_objdir/$libname.filter potentially contains lots of - # 's' commands, which not all seds can handle. GNU sed should be fine - # though. Also, the filter scales superlinearly with the number of - # global variables. join(1) would be nice here, but unfortunately - # isn't a blessed tool. - $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter - func_append delfiles " $export_symbols $output_objdir/$libname.filter" - export_symbols=$output_objdir/$libname.def - $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols - fi - } - - libobjs=$output - # Restore the value of output. - output=$save_output - - if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then - eval libobjs=\"\$libobjs $whole_archive_flag_spec\" - test "X$libobjs" = "X " && libobjs= - fi - # Expand the library linking commands again to reset the - # value of $libobjs for piecewise linking. - - # Do each of the archive commands. - if test yes = "$module" && test -n "$module_cmds"; then - if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then - cmds=$module_expsym_cmds - else - cmds=$module_cmds - fi - else - if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then - cmds=$archive_expsym_cmds - else - cmds=$archive_cmds - fi - fi - fi - - if test -n "$delfiles"; then - # Append the command to remove temporary files to $cmds. - eval cmds=\"\$cmds~\$RM $delfiles\" - fi - - # Add any objects from preloaded convenience libraries - if test -n "$dlprefiles"; then - gentop=$output_objdir/${outputname}x - func_append generated " $gentop" - - func_extract_archives $gentop $dlprefiles - func_append libobjs " $func_extract_archives_result" - test "X$libobjs" = "X " && libobjs= - fi - - save_ifs=$IFS; IFS='~' - for cmd in $cmds; do - IFS=$sp$nl - eval cmd=\"$cmd\" - IFS=$save_ifs - $opt_quiet || { - func_quote_for_expand "$cmd" - eval "func_echo $func_quote_for_expand_result" - } - $opt_dry_run || eval "$cmd" || { - lt_exit=$? - - # Restore the uninstalled library and exit - if test relink = "$opt_mode"; then - ( cd "$output_objdir" && \ - $RM "${realname}T" && \ - $MV "${realname}U" "$realname" ) - fi - - exit $lt_exit - } - done - IFS=$save_ifs - - # Restore the uninstalled library and exit - if test relink = "$opt_mode"; then - $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? - - if test -n "$convenience"; then - if test -z "$whole_archive_flag_spec"; then - func_show_eval '${RM}r "$gentop"' - fi - fi - - exit $EXIT_SUCCESS - fi - - # Create links to the real library. - for linkname in $linknames; do - if test "$realname" != "$linkname"; then - func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' - fi - done - - # If -module or -export-dynamic was specified, set the dlname. - if test yes = "$module" || test yes = "$export_dynamic"; then - # On all known operating systems, these are identical. - dlname=$soname - fi - fi - ;; - - obj) - if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then - func_warning "'-dlopen' is ignored for objects" - fi - - case " $deplibs" in - *\ -l* | *\ -L*) - func_warning "'-l' and '-L' are ignored for objects" ;; - esac - - test -n "$rpath" && \ - func_warning "'-rpath' is ignored for objects" - - test -n "$xrpath" && \ - func_warning "'-R' is ignored for objects" - - test -n "$vinfo" && \ - func_warning "'-version-info' is ignored for objects" - - test -n "$release" && \ - func_warning "'-release' is ignored for objects" - - case $output in - *.lo) - test -n "$objs$old_deplibs" && \ - func_fatal_error "cannot build library object '$output' from non-libtool objects" - - libobj=$output - func_lo2o "$libobj" - obj=$func_lo2o_result - ;; - *) - libobj= - obj=$output - ;; - esac - - # Delete the old objects. - $opt_dry_run || $RM $obj $libobj - - # Objects from convenience libraries. This assumes - # single-version convenience libraries. Whenever we create - # different ones for PIC/non-PIC, this we'll have to duplicate - # the extraction. - reload_conv_objs= - gentop= - # if reload_cmds runs $LD directly, get rid of -Wl from - # whole_archive_flag_spec and hope we can get by with turning comma - # into space. - case $reload_cmds in - *\$LD[\ \$]*) wl= ;; - esac - if test -n "$convenience"; then - if test -n "$whole_archive_flag_spec"; then - eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" - test -n "$wl" || tmp_whole_archive_flags=`$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` - reload_conv_objs=$reload_objs\ $tmp_whole_archive_flags - else - gentop=$output_objdir/${obj}x - func_append generated " $gentop" - - func_extract_archives $gentop $convenience - reload_conv_objs="$reload_objs $func_extract_archives_result" - fi - fi - - # If we're not building shared, we need to use non_pic_objs - test yes = "$build_libtool_libs" || libobjs=$non_pic_objects - - # Create the old-style object. - reload_objs=$objs$old_deplibs' '`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; /\.lib$/d; $lo2o" | $NL2SP`' '$reload_conv_objs - - output=$obj - func_execute_cmds "$reload_cmds" 'exit $?' - - # Exit if we aren't doing a library object file. - if test -z "$libobj"; then - if test -n "$gentop"; then - func_show_eval '${RM}r "$gentop"' - fi - - exit $EXIT_SUCCESS - fi - - test yes = "$build_libtool_libs" || { - if test -n "$gentop"; then - func_show_eval '${RM}r "$gentop"' - fi - - # Create an invalid libtool object if no PIC, so that we don't - # accidentally link it into a program. - # $show "echo timestamp > $libobj" - # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? - exit $EXIT_SUCCESS - } - - if test -n "$pic_flag" || test default != "$pic_mode"; then - # Only do commands if we really have different PIC objects. - reload_objs="$libobjs $reload_conv_objs" - output=$libobj - func_execute_cmds "$reload_cmds" 'exit $?' - fi - - if test -n "$gentop"; then - func_show_eval '${RM}r "$gentop"' - fi - - exit $EXIT_SUCCESS - ;; - - prog) - case $host in - *cygwin*) func_stripname '' '.exe' "$output" - output=$func_stripname_result.exe;; - esac - test -n "$vinfo" && \ - func_warning "'-version-info' is ignored for programs" - - test -n "$release" && \ - func_warning "'-release' is ignored for programs" - - $preload \ - && test unknown,unknown,unknown = "$dlopen_support,$dlopen_self,$dlopen_self_static" \ - && func_warning "'LT_INIT([dlopen])' not used. Assuming no dlopen support." - - case $host in - *-*-rhapsody* | *-*-darwin1.[012]) - # On Rhapsody replace the C library is the System framework - compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` - finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` - ;; - esac - - case $host in - *-*-darwin*) - # Don't allow lazy linking, it breaks C++ global constructors - # But is supposedly fixed on 10.4 or later (yay!). - if test CXX = "$tagname"; then - case ${MACOSX_DEPLOYMENT_TARGET-10.0} in - 10.[0123]) - func_append compile_command " $wl-bind_at_load" - func_append finalize_command " $wl-bind_at_load" - ;; - esac - fi - # Time to change all our "foo.ltframework" stuff back to "-framework foo" - compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - ;; - esac - - - # move library search paths that coincide with paths to not yet - # installed libraries to the beginning of the library search list - new_libs= - for path in $notinst_path; do - case " $new_libs " in - *" -L$path/$objdir "*) ;; - *) - case " $compile_deplibs " in - *" -L$path/$objdir "*) - func_append new_libs " -L$path/$objdir" ;; - esac - ;; - esac - done - for deplib in $compile_deplibs; do - case $deplib in - -L*) - case " $new_libs " in - *" $deplib "*) ;; - *) func_append new_libs " $deplib" ;; - esac - ;; - *) func_append new_libs " $deplib" ;; - esac - done - compile_deplibs=$new_libs - - - func_append compile_command " $compile_deplibs" - func_append finalize_command " $finalize_deplibs" - - if test -n "$rpath$xrpath"; then - # If the user specified any rpath flags, then add them. - for libdir in $rpath $xrpath; do - # This is the magic to use -rpath. - case "$finalize_rpath " in - *" $libdir "*) ;; - *) func_append finalize_rpath " $libdir" ;; - esac - done - fi - - # Now hardcode the library paths - rpath= - hardcode_libdirs= - for libdir in $compile_rpath $finalize_rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then - hardcode_libdirs=$libdir - else - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - func_append rpath " $flag" - fi - elif test -n "$runpath_var"; then - case "$perm_rpath " in - *" $libdir "*) ;; - *) func_append perm_rpath " $libdir" ;; - esac - fi - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) - testbindir=`$ECHO "$libdir" | $SED -e 's*/lib$*/bin*'` - case :$dllsearchpath: in - *":$libdir:"*) ;; - ::) dllsearchpath=$libdir;; - *) func_append dllsearchpath ":$libdir";; - esac - case :$dllsearchpath: in - *":$testbindir:"*) ;; - ::) dllsearchpath=$testbindir;; - *) func_append dllsearchpath ":$testbindir";; - esac - ;; - esac - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir=$hardcode_libdirs - eval rpath=\" $hardcode_libdir_flag_spec\" - fi - compile_rpath=$rpath - - rpath= - hardcode_libdirs= - for libdir in $finalize_rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then - hardcode_libdirs=$libdir - else - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - func_append rpath " $flag" - fi - elif test -n "$runpath_var"; then - case "$finalize_perm_rpath " in - *" $libdir "*) ;; - *) func_append finalize_perm_rpath " $libdir" ;; - esac - fi - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir=$hardcode_libdirs - eval rpath=\" $hardcode_libdir_flag_spec\" - fi - finalize_rpath=$rpath - - if test -n "$libobjs" && test yes = "$build_old_libs"; then - # Transform all the library objects into standard objects. - compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` - finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` - fi - - func_generate_dlsyms "$outputname" "@PROGRAM@" false - - # template prelinking step - if test -n "$prelink_cmds"; then - func_execute_cmds "$prelink_cmds" 'exit $?' - fi - - wrappers_required=: - case $host in - *cegcc* | *mingw32ce*) - # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. - wrappers_required=false - ;; - *cygwin* | *mingw* ) - test yes = "$build_libtool_libs" || wrappers_required=false - ;; - *) - if test no = "$need_relink" || test yes != "$build_libtool_libs"; then - wrappers_required=false - fi - ;; - esac - $wrappers_required || { - # Replace the output file specification. - compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` - link_command=$compile_command$compile_rpath - - # We have no uninstalled library dependencies, so finalize right now. - exit_status=0 - func_show_eval "$link_command" 'exit_status=$?' - - if test -n "$postlink_cmds"; then - func_to_tool_file "$output" - postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` - func_execute_cmds "$postlink_cmds" 'exit $?' - fi - - # Delete the generated files. - if test -f "$output_objdir/${outputname}S.$objext"; then - func_show_eval '$RM "$output_objdir/${outputname}S.$objext"' - fi - - exit $exit_status - } - - if test -n "$compile_shlibpath$finalize_shlibpath"; then - compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" - fi - if test -n "$finalize_shlibpath"; then - finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" - fi - - compile_var= - finalize_var= - if test -n "$runpath_var"; then - if test -n "$perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $perm_rpath; do - func_append rpath "$dir:" - done - compile_var="$runpath_var=\"$rpath\$$runpath_var\" " - fi - if test -n "$finalize_perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $finalize_perm_rpath; do - func_append rpath "$dir:" - done - finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " - fi - fi - - if test yes = "$no_install"; then - # We don't need to create a wrapper script. - link_command=$compile_var$compile_command$compile_rpath - # Replace the output file specification. - link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` - # Delete the old output file. - $opt_dry_run || $RM $output - # Link the executable and exit - func_show_eval "$link_command" 'exit $?' - - if test -n "$postlink_cmds"; then - func_to_tool_file "$output" - postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` - func_execute_cmds "$postlink_cmds" 'exit $?' - fi - - exit $EXIT_SUCCESS - fi - - case $hardcode_action,$fast_install in - relink,*) - # Fast installation is not supported - link_command=$compile_var$compile_command$compile_rpath - relink_command=$finalize_var$finalize_command$finalize_rpath - - func_warning "this platform does not like uninstalled shared libraries" - func_warning "'$output' will be relinked during installation" - ;; - *,yes) - link_command=$finalize_var$compile_command$finalize_rpath - relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` - ;; - *,no) - link_command=$compile_var$compile_command$compile_rpath - relink_command=$finalize_var$finalize_command$finalize_rpath - ;; - *,needless) - link_command=$finalize_var$compile_command$finalize_rpath - relink_command= - ;; - esac - - # Replace the output file specification. - link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` - - # Delete the old output files. - $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname - - func_show_eval "$link_command" 'exit $?' - - if test -n "$postlink_cmds"; then - func_to_tool_file "$output_objdir/$outputname" - postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` - func_execute_cmds "$postlink_cmds" 'exit $?' - fi - - # Now create the wrapper script. - func_verbose "creating $output" - - # Quote the relink command for shipping. - if test -n "$relink_command"; then - # Preserve any variables that may affect compiler behavior - for var in $variables_saved_for_relink; do - if eval test -z \"\${$var+set}\"; then - relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" - elif eval var_value=\$$var; test -z "$var_value"; then - relink_command="$var=; export $var; $relink_command" - else - func_quote_for_eval "$var_value" - relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" - fi - done - relink_command="(cd `pwd`; $relink_command)" - relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` - fi - - # Only actually do things if not in dry run mode. - $opt_dry_run || { - # win32 will think the script is a binary if it has - # a .exe suffix, so we strip it off here. - case $output in - *.exe) func_stripname '' '.exe' "$output" - output=$func_stripname_result ;; - esac - # test for cygwin because mv fails w/o .exe extensions - case $host in - *cygwin*) - exeext=.exe - func_stripname '' '.exe' "$outputname" - outputname=$func_stripname_result ;; - *) exeext= ;; - esac - case $host in - *cygwin* | *mingw* ) - func_dirname_and_basename "$output" "" "." - output_name=$func_basename_result - output_path=$func_dirname_result - cwrappersource=$output_path/$objdir/lt-$output_name.c - cwrapper=$output_path/$output_name.exe - $RM $cwrappersource $cwrapper - trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 - - func_emit_cwrapperexe_src > $cwrappersource - - # The wrapper executable is built using the $host compiler, - # because it contains $host paths and files. If cross- - # compiling, it, like the target executable, must be - # executed on the $host or under an emulation environment. - $opt_dry_run || { - $LTCC $LTCFLAGS -o $cwrapper $cwrappersource - $STRIP $cwrapper - } - - # Now, create the wrapper script for func_source use: - func_ltwrapper_scriptname $cwrapper - $RM $func_ltwrapper_scriptname_result - trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 - $opt_dry_run || { - # note: this script will not be executed, so do not chmod. - if test "x$build" = "x$host"; then - $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result - else - func_emit_wrapper no > $func_ltwrapper_scriptname_result - fi - } - ;; - * ) - $RM $output - trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 - - func_emit_wrapper no > $output - chmod +x $output - ;; - esac - } - exit $EXIT_SUCCESS - ;; - esac - - # See if we need to build an old-fashioned archive. - for oldlib in $oldlibs; do - - case $build_libtool_libs in - convenience) - oldobjs="$libobjs_save $symfileobj" - addlibs=$convenience - build_libtool_libs=no - ;; - module) - oldobjs=$libobjs_save - addlibs=$old_convenience - build_libtool_libs=no - ;; - *) - oldobjs="$old_deplibs $non_pic_objects" - $preload && test -f "$symfileobj" \ - && func_append oldobjs " $symfileobj" - addlibs=$old_convenience - ;; - esac - - if test -n "$addlibs"; then - gentop=$output_objdir/${outputname}x - func_append generated " $gentop" - - func_extract_archives $gentop $addlibs - func_append oldobjs " $func_extract_archives_result" - fi - - # Do each command in the archive commands. - if test -n "$old_archive_from_new_cmds" && test yes = "$build_libtool_libs"; then - cmds=$old_archive_from_new_cmds - else - - # Add any objects from preloaded convenience libraries - if test -n "$dlprefiles"; then - gentop=$output_objdir/${outputname}x - func_append generated " $gentop" - - func_extract_archives $gentop $dlprefiles - func_append oldobjs " $func_extract_archives_result" - fi - - # POSIX demands no paths to be encoded in archives. We have - # to avoid creating archives with duplicate basenames if we - # might have to extract them afterwards, e.g., when creating a - # static archive out of a convenience library, or when linking - # the entirety of a libtool archive into another (currently - # not supported by libtool). - if (for obj in $oldobjs - do - func_basename "$obj" - $ECHO "$func_basename_result" - done | sort | sort -uc >/dev/null 2>&1); then - : - else - echo "copying selected object files to avoid basename conflicts..." - gentop=$output_objdir/${outputname}x - func_append generated " $gentop" - func_mkdir_p "$gentop" - save_oldobjs=$oldobjs - oldobjs= - counter=1 - for obj in $save_oldobjs - do - func_basename "$obj" - objbase=$func_basename_result - case " $oldobjs " in - " ") oldobjs=$obj ;; - *[\ /]"$objbase "*) - while :; do - # Make sure we don't pick an alternate name that also - # overlaps. - newobj=lt$counter-$objbase - func_arith $counter + 1 - counter=$func_arith_result - case " $oldobjs " in - *[\ /]"$newobj "*) ;; - *) if test ! -f "$gentop/$newobj"; then break; fi ;; - esac - done - func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" - func_append oldobjs " $gentop/$newobj" - ;; - *) func_append oldobjs " $obj" ;; - esac - done - fi - func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 - tool_oldlib=$func_to_tool_file_result - eval cmds=\"$old_archive_cmds\" - - func_len " $cmds" - len=$func_len_result - if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then - cmds=$old_archive_cmds - elif test -n "$archiver_list_spec"; then - func_verbose "using command file archive linking..." - for obj in $oldobjs - do - func_to_tool_file "$obj" - $ECHO "$func_to_tool_file_result" - done > $output_objdir/$libname.libcmd - func_to_tool_file "$output_objdir/$libname.libcmd" - oldobjs=" $archiver_list_spec$func_to_tool_file_result" - cmds=$old_archive_cmds - else - # the command line is too long to link in one step, link in parts - func_verbose "using piecewise archive linking..." - save_RANLIB=$RANLIB - RANLIB=: - objlist= - concat_cmds= - save_oldobjs=$oldobjs - oldobjs= - # Is there a better way of finding the last object in the list? - for obj in $save_oldobjs - do - last_oldobj=$obj - done - eval test_cmds=\"$old_archive_cmds\" - func_len " $test_cmds" - len0=$func_len_result - len=$len0 - for obj in $save_oldobjs - do - func_len " $obj" - func_arith $len + $func_len_result - len=$func_arith_result - func_append objlist " $obj" - if test "$len" -lt "$max_cmd_len"; then - : - else - # the above command should be used before it gets too long - oldobjs=$objlist - if test "$obj" = "$last_oldobj"; then - RANLIB=$save_RANLIB - fi - test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - eval concat_cmds=\"\$concat_cmds$old_archive_cmds\" - objlist= - len=$len0 - fi - done - RANLIB=$save_RANLIB - oldobjs=$objlist - if test -z "$oldobjs"; then - eval cmds=\"\$concat_cmds\" - else - eval cmds=\"\$concat_cmds~\$old_archive_cmds\" - fi - fi - fi - func_execute_cmds "$cmds" 'exit $?' - done - - test -n "$generated" && \ - func_show_eval "${RM}r$generated" - - # Now create the libtool archive. - case $output in - *.la) - old_library= - test yes = "$build_old_libs" && old_library=$libname.$libext - func_verbose "creating $output" - - # Preserve any variables that may affect compiler behavior - for var in $variables_saved_for_relink; do - if eval test -z \"\${$var+set}\"; then - relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" - elif eval var_value=\$$var; test -z "$var_value"; then - relink_command="$var=; export $var; $relink_command" - else - func_quote_for_eval "$var_value" - relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" - fi - done - # Quote the link command for shipping. - relink_command="(cd `pwd`; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" - relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` - if test yes = "$hardcode_automatic"; then - relink_command= - fi - - # Only create the output if not a dry run. - $opt_dry_run || { - for installed in no yes; do - if test yes = "$installed"; then - if test -z "$install_libdir"; then - break - fi - output=$output_objdir/${outputname}i - # Replace all uninstalled libtool libraries with the installed ones - newdependency_libs= - for deplib in $dependency_libs; do - case $deplib in - *.la) - func_basename "$deplib" - name=$func_basename_result - func_resolve_sysroot "$deplib" - eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` - test -z "$libdir" && \ - func_fatal_error "'$deplib' is not a valid libtool archive" - func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" - ;; - -L*) - func_stripname -L '' "$deplib" - func_replace_sysroot "$func_stripname_result" - func_append newdependency_libs " -L$func_replace_sysroot_result" - ;; - -R*) - func_stripname -R '' "$deplib" - func_replace_sysroot "$func_stripname_result" - func_append newdependency_libs " -R$func_replace_sysroot_result" - ;; - *) func_append newdependency_libs " $deplib" ;; - esac - done - dependency_libs=$newdependency_libs - newdlfiles= - - for lib in $dlfiles; do - case $lib in - *.la) - func_basename "$lib" - name=$func_basename_result - eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` - test -z "$libdir" && \ - func_fatal_error "'$lib' is not a valid libtool archive" - func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" - ;; - *) func_append newdlfiles " $lib" ;; - esac - done - dlfiles=$newdlfiles - newdlprefiles= - for lib in $dlprefiles; do - case $lib in - *.la) - # Only pass preopened files to the pseudo-archive (for - # eventual linking with the app. that links it) if we - # didn't already link the preopened objects directly into - # the library: - func_basename "$lib" - name=$func_basename_result - eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` - test -z "$libdir" && \ - func_fatal_error "'$lib' is not a valid libtool archive" - func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" - ;; - esac - done - dlprefiles=$newdlprefiles - else - newdlfiles= - for lib in $dlfiles; do - case $lib in - [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; - *) abs=`pwd`"/$lib" ;; - esac - func_append newdlfiles " $abs" - done - dlfiles=$newdlfiles - newdlprefiles= - for lib in $dlprefiles; do - case $lib in - [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; - *) abs=`pwd`"/$lib" ;; - esac - func_append newdlprefiles " $abs" - done - dlprefiles=$newdlprefiles - fi - $RM $output - # place dlname in correct position for cygwin - # In fact, it would be nice if we could use this code for all target - # systems that can't hard-code library paths into their executables - # and that have no shared library path variable independent of PATH, - # but it turns out we can't easily determine that from inspecting - # libtool variables, so we have to hard-code the OSs to which it - # applies here; at the moment, that means platforms that use the PE - # object format with DLL files. See the long comment at the top of - # tests/bindir.at for full details. - tdlname=$dlname - case $host,$output,$installed,$module,$dlname in - *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) - # If a -bindir argument was supplied, place the dll there. - if test -n "$bindir"; then - func_relative_path "$install_libdir" "$bindir" - tdlname=$func_relative_path_result/$dlname - else - # Otherwise fall back on heuristic. - tdlname=../bin/$dlname - fi - ;; - esac - $ECHO > $output "\ -# $outputname - a libtool library file -# Generated by $PROGRAM (GNU $PACKAGE) $VERSION -# -# Please DO NOT delete this file! -# It is necessary for linking the library. - -# The name that we can dlopen(3). -dlname='$tdlname' - -# Names of this library. -library_names='$library_names' - -# The name of the static archive. -old_library='$old_library' - -# Linker flags that cannot go in dependency_libs. -inherited_linker_flags='$new_inherited_linker_flags' - -# Libraries that this one depends upon. -dependency_libs='$dependency_libs' - -# Names of additional weak libraries provided by this library -weak_library_names='$weak_libs' - -# Version information for $libname. -current=$current -age=$age -revision=$revision - -# Is this an already installed library? -installed=$installed - -# Should we warn about portability when linking against -modules? -shouldnotlink=$module - -# Files to dlopen/dlpreopen -dlopen='$dlfiles' -dlpreopen='$dlprefiles' - -# Directory that this library needs to be installed in: -libdir='$install_libdir'" - if test no,yes = "$installed,$need_relink"; then - $ECHO >> $output "\ -relink_command=\"$relink_command\"" - fi - done - } - - # Do a symbolic link so that the libtool archive can be found in - # LD_LIBRARY_PATH before the program is installed. - func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' - ;; - esac - exit $EXIT_SUCCESS -} - -if test link = "$opt_mode" || test relink = "$opt_mode"; then - func_mode_link ${1+"$@"} -fi - - -# func_mode_uninstall arg... -func_mode_uninstall () -{ - $debug_cmd - - RM=$nonopt - files= - rmforce=false - exit_status=0 - - # This variable tells wrapper scripts just to set variables rather - # than running their programs. - libtool_install_magic=$magic - - for arg - do - case $arg in - -f) func_append RM " $arg"; rmforce=: ;; - -*) func_append RM " $arg" ;; - *) func_append files " $arg" ;; - esac - done - - test -z "$RM" && \ - func_fatal_help "you must specify an RM program" - - rmdirs= - - for file in $files; do - func_dirname "$file" "" "." - dir=$func_dirname_result - if test . = "$dir"; then - odir=$objdir - else - odir=$dir/$objdir - fi - func_basename "$file" - name=$func_basename_result - test uninstall = "$opt_mode" && odir=$dir - - # Remember odir for removal later, being careful to avoid duplicates - if test clean = "$opt_mode"; then - case " $rmdirs " in - *" $odir "*) ;; - *) func_append rmdirs " $odir" ;; - esac - fi - - # Don't error if the file doesn't exist and rm -f was used. - if { test -L "$file"; } >/dev/null 2>&1 || - { test -h "$file"; } >/dev/null 2>&1 || - test -f "$file"; then - : - elif test -d "$file"; then - exit_status=1 - continue - elif $rmforce; then - continue - fi - - rmfiles=$file - - case $name in - *.la) - # Possibly a libtool archive, so verify it. - if func_lalib_p "$file"; then - func_source $dir/$name - - # Delete the libtool libraries and symlinks. - for n in $library_names; do - func_append rmfiles " $odir/$n" - done - test -n "$old_library" && func_append rmfiles " $odir/$old_library" - - case $opt_mode in - clean) - case " $library_names " in - *" $dlname "*) ;; - *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; - esac - test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" - ;; - uninstall) - if test -n "$library_names"; then - # Do each command in the postuninstall commands. - func_execute_cmds "$postuninstall_cmds" '$rmforce || exit_status=1' - fi - - if test -n "$old_library"; then - # Do each command in the old_postuninstall commands. - func_execute_cmds "$old_postuninstall_cmds" '$rmforce || exit_status=1' - fi - # FIXME: should reinstall the best remaining shared library. - ;; - esac - fi - ;; - - *.lo) - # Possibly a libtool object, so verify it. - if func_lalib_p "$file"; then - - # Read the .lo file - func_source $dir/$name - - # Add PIC object to the list of files to remove. - if test -n "$pic_object" && test none != "$pic_object"; then - func_append rmfiles " $dir/$pic_object" - fi - - # Add non-PIC object to the list of files to remove. - if test -n "$non_pic_object" && test none != "$non_pic_object"; then - func_append rmfiles " $dir/$non_pic_object" - fi - fi - ;; - - *) - if test clean = "$opt_mode"; then - noexename=$name - case $file in - *.exe) - func_stripname '' '.exe' "$file" - file=$func_stripname_result - func_stripname '' '.exe' "$name" - noexename=$func_stripname_result - # $file with .exe has already been added to rmfiles, - # add $file without .exe - func_append rmfiles " $file" - ;; - esac - # Do a test to see if this is a libtool program. - if func_ltwrapper_p "$file"; then - if func_ltwrapper_executable_p "$file"; then - func_ltwrapper_scriptname "$file" - relink_command= - func_source $func_ltwrapper_scriptname_result - func_append rmfiles " $func_ltwrapper_scriptname_result" - else - relink_command= - func_source $dir/$noexename - fi - - # note $name still contains .exe if it was in $file originally - # as does the version of $file that was added into $rmfiles - func_append rmfiles " $odir/$name $odir/${name}S.$objext" - if test yes = "$fast_install" && test -n "$relink_command"; then - func_append rmfiles " $odir/lt-$name" - fi - if test "X$noexename" != "X$name"; then - func_append rmfiles " $odir/lt-$noexename.c" - fi - fi - fi - ;; - esac - func_show_eval "$RM $rmfiles" 'exit_status=1' - done - - # Try to remove the $objdir's in the directories where we deleted files - for dir in $rmdirs; do - if test -d "$dir"; then - func_show_eval "rmdir $dir >/dev/null 2>&1" - fi - done - - exit $exit_status -} - -if test uninstall = "$opt_mode" || test clean = "$opt_mode"; then - func_mode_uninstall ${1+"$@"} -fi - -test -z "$opt_mode" && { - help=$generic_help - func_fatal_help "you must specify a MODE" -} - -test -z "$exec_cmd" && \ - func_fatal_help "invalid operation mode '$opt_mode'" - -if test -n "$exec_cmd"; then - eval exec "$exec_cmd" - exit $EXIT_FAILURE -fi - -exit $exit_status - - -# The TAGs below are defined such that we never get into a situation -# where we disable both kinds of libraries. Given conflicting -# choices, we go for a static library, that is the most portable, -# since we can't tell whether shared libraries were disabled because -# the user asked for that or because the platform doesn't support -# them. This is particularly important on AIX, because we don't -# support having both static and shared libraries enabled at the same -# time on that platform, so we default to a shared-only configuration. -# If a disable-shared tag is given, we'll fallback to a static-only -# configuration. But we'll never go from static-only to shared-only. - -# ### BEGIN LIBTOOL TAG CONFIG: disable-shared -build_libtool_libs=no -build_old_libs=yes -# ### END LIBTOOL TAG CONFIG: disable-shared - -# ### BEGIN LIBTOOL TAG CONFIG: disable-static -build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` -# ### END LIBTOOL TAG CONFIG: disable-static - -# Local Variables: -# mode:shell-script -# sh-indentation:2 -# End: diff --git a/vendor/onig/m4/libtool.m4 b/vendor/onig/m4/libtool.m4 deleted file mode 100644 index a3bc337..0000000 --- a/vendor/onig/m4/libtool.m4 +++ /dev/null @@ -1,8369 +0,0 @@ -# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- -# -# Copyright (C) 1996-2001, 2003-2015 Free Software Foundation, Inc. -# Written by Gordon Matzigkeit, 1996 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -m4_define([_LT_COPYING], [dnl -# Copyright (C) 2014 Free Software Foundation, Inc. -# This is free software; see the source for copying conditions. There is NO -# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -# GNU Libtool is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of of the License, or -# (at your option) any later version. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program or library that is built -# using GNU Libtool, you may include this file under the same -# distribution terms that you use for the rest of that program. -# -# GNU Libtool is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -]) - -# serial 58 LT_INIT - - -# LT_PREREQ(VERSION) -# ------------------ -# Complain and exit if this libtool version is less that VERSION. -m4_defun([LT_PREREQ], -[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, - [m4_default([$3], - [m4_fatal([Libtool version $1 or higher is required], - 63)])], - [$2])]) - - -# _LT_CHECK_BUILDDIR -# ------------------ -# Complain if the absolute build directory name contains unusual characters -m4_defun([_LT_CHECK_BUILDDIR], -[case `pwd` in - *\ * | *\ *) - AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; -esac -]) - - -# LT_INIT([OPTIONS]) -# ------------------ -AC_DEFUN([LT_INIT], -[AC_PREREQ([2.62])dnl We use AC_PATH_PROGS_FEATURE_CHECK -AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl -AC_BEFORE([$0], [LT_LANG])dnl -AC_BEFORE([$0], [LT_OUTPUT])dnl -AC_BEFORE([$0], [LTDL_INIT])dnl -m4_require([_LT_CHECK_BUILDDIR])dnl - -dnl Autoconf doesn't catch unexpanded LT_ macros by default: -m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl -m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl -dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 -dnl unless we require an AC_DEFUNed macro: -AC_REQUIRE([LTOPTIONS_VERSION])dnl -AC_REQUIRE([LTSUGAR_VERSION])dnl -AC_REQUIRE([LTVERSION_VERSION])dnl -AC_REQUIRE([LTOBSOLETE_VERSION])dnl -m4_require([_LT_PROG_LTMAIN])dnl - -_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) - -dnl Parse OPTIONS -_LT_SET_OPTIONS([$0], [$1]) - -# This can be used to rebuild libtool when needed -LIBTOOL_DEPS=$ltmain - -# Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' -AC_SUBST(LIBTOOL)dnl - -_LT_SETUP - -# Only expand once: -m4_define([LT_INIT]) -])# LT_INIT - -# Old names: -AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) -AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_PROG_LIBTOOL], []) -dnl AC_DEFUN([AM_PROG_LIBTOOL], []) - - -# _LT_PREPARE_CC_BASENAME -# ----------------------- -m4_defun([_LT_PREPARE_CC_BASENAME], [ -# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. -func_cc_basename () -{ - for cc_temp in @S|@*""; do - case $cc_temp in - compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; - distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; - \-*) ;; - *) break;; - esac - done - func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` -} -])# _LT_PREPARE_CC_BASENAME - - -# _LT_CC_BASENAME(CC) -# ------------------- -# It would be clearer to call AC_REQUIREs from _LT_PREPARE_CC_BASENAME, -# but that macro is also expanded into generated libtool script, which -# arranges for $SED and $ECHO to be set by different means. -m4_defun([_LT_CC_BASENAME], -[m4_require([_LT_PREPARE_CC_BASENAME])dnl -AC_REQUIRE([_LT_DECL_SED])dnl -AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl -func_cc_basename $1 -cc_basename=$func_cc_basename_result -]) - - -# _LT_FILEUTILS_DEFAULTS -# ---------------------- -# It is okay to use these file commands and assume they have been set -# sensibly after 'm4_require([_LT_FILEUTILS_DEFAULTS])'. -m4_defun([_LT_FILEUTILS_DEFAULTS], -[: ${CP="cp -f"} -: ${MV="mv -f"} -: ${RM="rm -f"} -])# _LT_FILEUTILS_DEFAULTS - - -# _LT_SETUP -# --------- -m4_defun([_LT_SETUP], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl -AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl - -_LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl -dnl -_LT_DECL([], [host_alias], [0], [The host system])dnl -_LT_DECL([], [host], [0])dnl -_LT_DECL([], [host_os], [0])dnl -dnl -_LT_DECL([], [build_alias], [0], [The build system])dnl -_LT_DECL([], [build], [0])dnl -_LT_DECL([], [build_os], [0])dnl -dnl -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([LT_PATH_LD])dnl -AC_REQUIRE([LT_PATH_NM])dnl -dnl -AC_REQUIRE([AC_PROG_LN_S])dnl -test -z "$LN_S" && LN_S="ln -s" -_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl -dnl -AC_REQUIRE([LT_CMD_MAX_LEN])dnl -_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl -_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl -dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_CHECK_SHELL_FEATURES])dnl -m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl -m4_require([_LT_CMD_RELOAD])dnl -m4_require([_LT_CHECK_MAGIC_METHOD])dnl -m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl -m4_require([_LT_CMD_OLD_ARCHIVE])dnl -m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl -m4_require([_LT_WITH_SYSROOT])dnl -m4_require([_LT_CMD_TRUNCATE])dnl - -_LT_CONFIG_LIBTOOL_INIT([ -# See if we are running on zsh, and set the options that allow our -# commands through without removal of \ escapes INIT. -if test -n "\${ZSH_VERSION+set}"; then - setopt NO_GLOB_SUBST -fi -]) -if test -n "${ZSH_VERSION+set}"; then - setopt NO_GLOB_SUBST -fi - -_LT_CHECK_OBJDIR - -m4_require([_LT_TAG_COMPILER])dnl - -case $host_os in -aix3*) - # AIX sometimes has problems with the GCC collect2 program. For some - # reason, if we set the COLLECT_NAMES environment variable, the problems - # vanish in a puff of smoke. - if test set != "${COLLECT_NAMES+set}"; then - COLLECT_NAMES= - export COLLECT_NAMES - fi - ;; -esac - -# Global variables: -ofile=libtool -can_build_shared=yes - -# All known linkers require a '.a' archive for static linking (except MSVC, -# which needs '.lib'). -libext=a - -with_gnu_ld=$lt_cv_prog_gnu_ld - -old_CC=$CC -old_CFLAGS=$CFLAGS - -# Set sane defaults for various variables -test -z "$CC" && CC=cc -test -z "$LTCC" && LTCC=$CC -test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS -test -z "$LD" && LD=ld -test -z "$ac_objext" && ac_objext=o - -_LT_CC_BASENAME([$compiler]) - -# Only perform the check for file, if the check method requires it -test -z "$MAGIC_CMD" && MAGIC_CMD=file -case $deplibs_check_method in -file_magic*) - if test "$file_magic_cmd" = '$MAGIC_CMD'; then - _LT_PATH_MAGIC - fi - ;; -esac - -# Use C for the default configuration in the libtool script -LT_SUPPORTED_TAG([CC]) -_LT_LANG_C_CONFIG -_LT_LANG_DEFAULT_CONFIG -_LT_CONFIG_COMMANDS -])# _LT_SETUP - - -# _LT_PREPARE_SED_QUOTE_VARS -# -------------------------- -# Define a few sed substitution that help us do robust quoting. -m4_defun([_LT_PREPARE_SED_QUOTE_VARS], -[# Backslashify metacharacters that are still active within -# double-quoted strings. -sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' - -# Same as above, but do not quote variable references. -double_quote_subst='s/\([["`\\]]\)/\\\1/g' - -# Sed substitution to delay expansion of an escaped shell variable in a -# double_quote_subst'ed string. -delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' - -# Sed substitution to delay expansion of an escaped single quote. -delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' - -# Sed substitution to avoid accidental globbing in evaled expressions -no_glob_subst='s/\*/\\\*/g' -]) - -# _LT_PROG_LTMAIN -# --------------- -# Note that this code is called both from 'configure', and 'config.status' -# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, -# 'config.status' has no value for ac_aux_dir unless we are using Automake, -# so we pass a copy along to make sure it has a sensible value anyway. -m4_defun([_LT_PROG_LTMAIN], -[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl -_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) -ltmain=$ac_aux_dir/ltmain.sh -])# _LT_PROG_LTMAIN - - -## ------------------------------------- ## -## Accumulate code for creating libtool. ## -## ------------------------------------- ## - -# So that we can recreate a full libtool script including additional -# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS -# in macros and then make a single call at the end using the 'libtool' -# label. - - -# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) -# ---------------------------------------- -# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. -m4_define([_LT_CONFIG_LIBTOOL_INIT], -[m4_ifval([$1], - [m4_append([_LT_OUTPUT_LIBTOOL_INIT], - [$1 -])])]) - -# Initialize. -m4_define([_LT_OUTPUT_LIBTOOL_INIT]) - - -# _LT_CONFIG_LIBTOOL([COMMANDS]) -# ------------------------------ -# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. -m4_define([_LT_CONFIG_LIBTOOL], -[m4_ifval([$1], - [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], - [$1 -])])]) - -# Initialize. -m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) - - -# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) -# ----------------------------------------------------- -m4_defun([_LT_CONFIG_SAVE_COMMANDS], -[_LT_CONFIG_LIBTOOL([$1]) -_LT_CONFIG_LIBTOOL_INIT([$2]) -]) - - -# _LT_FORMAT_COMMENT([COMMENT]) -# ----------------------------- -# Add leading comment marks to the start of each line, and a trailing -# full-stop to the whole comment if one is not present already. -m4_define([_LT_FORMAT_COMMENT], -[m4_ifval([$1], [ -m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], - [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) -)]) - - - -## ------------------------ ## -## FIXME: Eliminate VARNAME ## -## ------------------------ ## - - -# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) -# ------------------------------------------------------------------- -# CONFIGNAME is the name given to the value in the libtool script. -# VARNAME is the (base) name used in the configure script. -# VALUE may be 0, 1 or 2 for a computed quote escaped value based on -# VARNAME. Any other value will be used directly. -m4_define([_LT_DECL], -[lt_if_append_uniq([lt_decl_varnames], [$2], [, ], - [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], - [m4_ifval([$1], [$1], [$2])]) - lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) - m4_ifval([$4], - [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) - lt_dict_add_subkey([lt_decl_dict], [$2], - [tagged?], [m4_ifval([$5], [yes], [no])])]) -]) - - -# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) -# -------------------------------------------------------- -m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) - - -# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) -# ------------------------------------------------ -m4_define([lt_decl_tag_varnames], -[_lt_decl_filter([tagged?], [yes], $@)]) - - -# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) -# --------------------------------------------------------- -m4_define([_lt_decl_filter], -[m4_case([$#], - [0], [m4_fatal([$0: too few arguments: $#])], - [1], [m4_fatal([$0: too few arguments: $#: $1])], - [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], - [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], - [lt_dict_filter([lt_decl_dict], $@)])[]dnl -]) - - -# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) -# -------------------------------------------------- -m4_define([lt_decl_quote_varnames], -[_lt_decl_filter([value], [1], $@)]) - - -# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) -# --------------------------------------------------- -m4_define([lt_decl_dquote_varnames], -[_lt_decl_filter([value], [2], $@)]) - - -# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) -# --------------------------------------------------- -m4_define([lt_decl_varnames_tagged], -[m4_assert([$# <= 2])dnl -_$0(m4_quote(m4_default([$1], [[, ]])), - m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), - m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) -m4_define([_lt_decl_varnames_tagged], -[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) - - -# lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) -# ------------------------------------------------ -m4_define([lt_decl_all_varnames], -[_$0(m4_quote(m4_default([$1], [[, ]])), - m4_if([$2], [], - m4_quote(lt_decl_varnames), - m4_quote(m4_shift($@))))[]dnl -]) -m4_define([_lt_decl_all_varnames], -[lt_join($@, lt_decl_varnames_tagged([$1], - lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl -]) - - -# _LT_CONFIG_STATUS_DECLARE([VARNAME]) -# ------------------------------------ -# Quote a variable value, and forward it to 'config.status' so that its -# declaration there will have the same value as in 'configure'. VARNAME -# must have a single quote delimited value for this to work. -m4_define([_LT_CONFIG_STATUS_DECLARE], -[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) - - -# _LT_CONFIG_STATUS_DECLARATIONS -# ------------------------------ -# We delimit libtool config variables with single quotes, so when -# we write them to config.status, we have to be sure to quote all -# embedded single quotes properly. In configure, this macro expands -# each variable declared with _LT_DECL (and _LT_TAGDECL) into: -# -# ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' -m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], -[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), - [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) - - -# _LT_LIBTOOL_TAGS -# ---------------- -# Output comment and list of tags supported by the script -m4_defun([_LT_LIBTOOL_TAGS], -[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl -available_tags='_LT_TAGS'dnl -]) - - -# _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) -# ----------------------------------- -# Extract the dictionary values for VARNAME (optionally with TAG) and -# expand to a commented shell variable setting: -# -# # Some comment about what VAR is for. -# visible_name=$lt_internal_name -m4_define([_LT_LIBTOOL_DECLARE], -[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], - [description])))[]dnl -m4_pushdef([_libtool_name], - m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl -m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), - [0], [_libtool_name=[$]$1], - [1], [_libtool_name=$lt_[]$1], - [2], [_libtool_name=$lt_[]$1], - [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl -m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl -]) - - -# _LT_LIBTOOL_CONFIG_VARS -# ----------------------- -# Produce commented declarations of non-tagged libtool config variables -# suitable for insertion in the LIBTOOL CONFIG section of the 'libtool' -# script. Tagged libtool config variables (even for the LIBTOOL CONFIG -# section) are produced by _LT_LIBTOOL_TAG_VARS. -m4_defun([_LT_LIBTOOL_CONFIG_VARS], -[m4_foreach([_lt_var], - m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), - [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) - - -# _LT_LIBTOOL_TAG_VARS(TAG) -# ------------------------- -m4_define([_LT_LIBTOOL_TAG_VARS], -[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), - [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) - - -# _LT_TAGVAR(VARNAME, [TAGNAME]) -# ------------------------------ -m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) - - -# _LT_CONFIG_COMMANDS -# ------------------- -# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of -# variables for single and double quote escaping we saved from calls -# to _LT_DECL, we can put quote escaped variables declarations -# into 'config.status', and then the shell code to quote escape them in -# for loops in 'config.status'. Finally, any additional code accumulated -# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. -m4_defun([_LT_CONFIG_COMMANDS], -[AC_PROVIDE_IFELSE([LT_OUTPUT], - dnl If the libtool generation code has been placed in $CONFIG_LT, - dnl instead of duplicating it all over again into config.status, - dnl then we will have config.status run $CONFIG_LT later, so it - dnl needs to know what name is stored there: - [AC_CONFIG_COMMANDS([libtool], - [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], - dnl If the libtool generation code is destined for config.status, - dnl expand the accumulated commands and init code now: - [AC_CONFIG_COMMANDS([libtool], - [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) -])#_LT_CONFIG_COMMANDS - - -# Initialize. -m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], -[ - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -sed_quote_subst='$sed_quote_subst' -double_quote_subst='$double_quote_subst' -delay_variable_subst='$delay_variable_subst' -_LT_CONFIG_STATUS_DECLARATIONS -LTCC='$LTCC' -LTCFLAGS='$LTCFLAGS' -compiler='$compiler_DEFAULT' - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -\$[]1 -_LTECHO_EOF' -} - -# Quote evaled strings. -for var in lt_decl_all_varnames([[ \ -]], lt_decl_quote_varnames); do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[[\\\\\\\`\\"\\\$]]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -# Double-quote double-evaled strings. -for var in lt_decl_all_varnames([[ \ -]], lt_decl_dquote_varnames); do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[[\\\\\\\`\\"\\\$]]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -_LT_OUTPUT_LIBTOOL_INIT -]) - -# _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) -# ------------------------------------ -# Generate a child script FILE with all initialization necessary to -# reuse the environment learned by the parent script, and make the -# file executable. If COMMENT is supplied, it is inserted after the -# '#!' sequence but before initialization text begins. After this -# macro, additional text can be appended to FILE to form the body of -# the child script. The macro ends with non-zero status if the -# file could not be fully written (such as if the disk is full). -m4_ifdef([AS_INIT_GENERATED], -[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], -[m4_defun([_LT_GENERATED_FILE_INIT], -[m4_require([AS_PREPARE])]dnl -[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl -[lt_write_fail=0 -cat >$1 <<_ASEOF || lt_write_fail=1 -#! $SHELL -# Generated by $as_me. -$2 -SHELL=\${CONFIG_SHELL-$SHELL} -export SHELL -_ASEOF -cat >>$1 <<\_ASEOF || lt_write_fail=1 -AS_SHELL_SANITIZE -_AS_PREPARE -exec AS_MESSAGE_FD>&1 -_ASEOF -test 0 = "$lt_write_fail" && chmod +x $1[]dnl -m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT - -# LT_OUTPUT -# --------- -# This macro allows early generation of the libtool script (before -# AC_OUTPUT is called), incase it is used in configure for compilation -# tests. -AC_DEFUN([LT_OUTPUT], -[: ${CONFIG_LT=./config.lt} -AC_MSG_NOTICE([creating $CONFIG_LT]) -_LT_GENERATED_FILE_INIT(["$CONFIG_LT"], -[# Run this file to recreate a libtool stub with the current configuration.]) - -cat >>"$CONFIG_LT" <<\_LTEOF -lt_cl_silent=false -exec AS_MESSAGE_LOG_FD>>config.log -{ - echo - AS_BOX([Running $as_me.]) -} >&AS_MESSAGE_LOG_FD - -lt_cl_help="\ -'$as_me' creates a local libtool stub from the current configuration, -for use in further configure time tests before the real libtool is -generated. - -Usage: $[0] [[OPTIONS]] - - -h, --help print this help, then exit - -V, --version print version number, then exit - -q, --quiet do not print progress messages - -d, --debug don't remove temporary files - -Report bugs to ." - -lt_cl_version="\ -m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl -m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) -configured by $[0], generated by m4_PACKAGE_STRING. - -Copyright (C) 2011 Free Software Foundation, Inc. -This config.lt script is free software; the Free Software Foundation -gives unlimited permision to copy, distribute and modify it." - -while test 0 != $[#] -do - case $[1] in - --version | --v* | -V ) - echo "$lt_cl_version"; exit 0 ;; - --help | --h* | -h ) - echo "$lt_cl_help"; exit 0 ;; - --debug | --d* | -d ) - debug=: ;; - --quiet | --q* | --silent | --s* | -q ) - lt_cl_silent=: ;; - - -*) AC_MSG_ERROR([unrecognized option: $[1] -Try '$[0] --help' for more information.]) ;; - - *) AC_MSG_ERROR([unrecognized argument: $[1] -Try '$[0] --help' for more information.]) ;; - esac - shift -done - -if $lt_cl_silent; then - exec AS_MESSAGE_FD>/dev/null -fi -_LTEOF - -cat >>"$CONFIG_LT" <<_LTEOF -_LT_OUTPUT_LIBTOOL_COMMANDS_INIT -_LTEOF - -cat >>"$CONFIG_LT" <<\_LTEOF -AC_MSG_NOTICE([creating $ofile]) -_LT_OUTPUT_LIBTOOL_COMMANDS -AS_EXIT(0) -_LTEOF -chmod +x "$CONFIG_LT" - -# configure is writing to config.log, but config.lt does its own redirection, -# appending to config.log, which fails on DOS, as config.log is still kept -# open by configure. Here we exec the FD to /dev/null, effectively closing -# config.log, so it can be properly (re)opened and appended to by config.lt. -lt_cl_success=: -test yes = "$silent" && - lt_config_lt_args="$lt_config_lt_args --quiet" -exec AS_MESSAGE_LOG_FD>/dev/null -$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false -exec AS_MESSAGE_LOG_FD>>config.log -$lt_cl_success || AS_EXIT(1) -])# LT_OUTPUT - - -# _LT_CONFIG(TAG) -# --------------- -# If TAG is the built-in tag, create an initial libtool script with a -# default configuration from the untagged config vars. Otherwise add code -# to config.status for appending the configuration named by TAG from the -# matching tagged config vars. -m4_defun([_LT_CONFIG], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -_LT_CONFIG_SAVE_COMMANDS([ - m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl - m4_if(_LT_TAG, [C], [ - # See if we are running on zsh, and set the options that allow our - # commands through without removal of \ escapes. - if test -n "${ZSH_VERSION+set}"; then - setopt NO_GLOB_SUBST - fi - - cfgfile=${ofile}T - trap "$RM \"$cfgfile\"; exit 1" 1 2 15 - $RM "$cfgfile" - - cat <<_LT_EOF >> "$cfgfile" -#! $SHELL -# Generated automatically by $as_me ($PACKAGE) $VERSION -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -# NOTE: Changes made to this file will be lost: look at ltmain.sh. - -# Provide generalized library-building support services. -# Written by Gordon Matzigkeit, 1996 - -_LT_COPYING -_LT_LIBTOOL_TAGS - -# Configured defaults for sys_lib_dlsearch_path munging. -: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} - -# ### BEGIN LIBTOOL CONFIG -_LT_LIBTOOL_CONFIG_VARS -_LT_LIBTOOL_TAG_VARS -# ### END LIBTOOL CONFIG - -_LT_EOF - - cat <<'_LT_EOF' >> "$cfgfile" - -# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE - -_LT_PREPARE_MUNGE_PATH_LIST -_LT_PREPARE_CC_BASENAME - -# ### END FUNCTIONS SHARED WITH CONFIGURE - -_LT_EOF - - case $host_os in - aix3*) - cat <<\_LT_EOF >> "$cfgfile" -# AIX sometimes has problems with the GCC collect2 program. For some -# reason, if we set the COLLECT_NAMES environment variable, the problems -# vanish in a puff of smoke. -if test set != "${COLLECT_NAMES+set}"; then - COLLECT_NAMES= - export COLLECT_NAMES -fi -_LT_EOF - ;; - esac - - _LT_PROG_LTMAIN - - # We use sed instead of cat because bash on DJGPP gets confused if - # if finds mixed CR/LF and LF-only lines. Since sed operates in - # text mode, it properly converts lines to CR/LF. This bash problem - # is reportedly fixed, but why not run on old versions too? - sed '$q' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) - - mv -f "$cfgfile" "$ofile" || - (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") - chmod +x "$ofile" -], -[cat <<_LT_EOF >> "$ofile" - -dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded -dnl in a comment (ie after a #). -# ### BEGIN LIBTOOL TAG CONFIG: $1 -_LT_LIBTOOL_TAG_VARS(_LT_TAG) -# ### END LIBTOOL TAG CONFIG: $1 -_LT_EOF -])dnl /m4_if -], -[m4_if([$1], [], [ - PACKAGE='$PACKAGE' - VERSION='$VERSION' - RM='$RM' - ofile='$ofile'], []) -])dnl /_LT_CONFIG_SAVE_COMMANDS -])# _LT_CONFIG - - -# LT_SUPPORTED_TAG(TAG) -# --------------------- -# Trace this macro to discover what tags are supported by the libtool -# --tag option, using: -# autoconf --trace 'LT_SUPPORTED_TAG:$1' -AC_DEFUN([LT_SUPPORTED_TAG], []) - - -# C support is built-in for now -m4_define([_LT_LANG_C_enabled], []) -m4_define([_LT_TAGS], []) - - -# LT_LANG(LANG) -# ------------- -# Enable libtool support for the given language if not already enabled. -AC_DEFUN([LT_LANG], -[AC_BEFORE([$0], [LT_OUTPUT])dnl -m4_case([$1], - [C], [_LT_LANG(C)], - [C++], [_LT_LANG(CXX)], - [Go], [_LT_LANG(GO)], - [Java], [_LT_LANG(GCJ)], - [Fortran 77], [_LT_LANG(F77)], - [Fortran], [_LT_LANG(FC)], - [Windows Resource], [_LT_LANG(RC)], - [m4_ifdef([_LT_LANG_]$1[_CONFIG], - [_LT_LANG($1)], - [m4_fatal([$0: unsupported language: "$1"])])])dnl -])# LT_LANG - - -# _LT_LANG(LANGNAME) -# ------------------ -m4_defun([_LT_LANG], -[m4_ifdef([_LT_LANG_]$1[_enabled], [], - [LT_SUPPORTED_TAG([$1])dnl - m4_append([_LT_TAGS], [$1 ])dnl - m4_define([_LT_LANG_]$1[_enabled], [])dnl - _LT_LANG_$1_CONFIG($1)])dnl -])# _LT_LANG - - -m4_ifndef([AC_PROG_GO], [ -############################################################ -# NOTE: This macro has been submitted for inclusion into # -# GNU Autoconf as AC_PROG_GO. When it is available in # -# a released version of Autoconf we should remove this # -# macro and use it instead. # -############################################################ -m4_defun([AC_PROG_GO], -[AC_LANG_PUSH(Go)dnl -AC_ARG_VAR([GOC], [Go compiler command])dnl -AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl -_AC_ARG_VAR_LDFLAGS()dnl -AC_CHECK_TOOL(GOC, gccgo) -if test -z "$GOC"; then - if test -n "$ac_tool_prefix"; then - AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo]) - fi -fi -if test -z "$GOC"; then - AC_CHECK_PROG(GOC, gccgo, gccgo, false) -fi -])#m4_defun -])#m4_ifndef - - -# _LT_LANG_DEFAULT_CONFIG -# ----------------------- -m4_defun([_LT_LANG_DEFAULT_CONFIG], -[AC_PROVIDE_IFELSE([AC_PROG_CXX], - [LT_LANG(CXX)], - [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) - -AC_PROVIDE_IFELSE([AC_PROG_F77], - [LT_LANG(F77)], - [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) - -AC_PROVIDE_IFELSE([AC_PROG_FC], - [LT_LANG(FC)], - [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) - -dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal -dnl pulling things in needlessly. -AC_PROVIDE_IFELSE([AC_PROG_GCJ], - [LT_LANG(GCJ)], - [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], - [LT_LANG(GCJ)], - [AC_PROVIDE_IFELSE([LT_PROG_GCJ], - [LT_LANG(GCJ)], - [m4_ifdef([AC_PROG_GCJ], - [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) - m4_ifdef([A][M_PROG_GCJ], - [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) - m4_ifdef([LT_PROG_GCJ], - [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) - -AC_PROVIDE_IFELSE([AC_PROG_GO], - [LT_LANG(GO)], - [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])]) - -AC_PROVIDE_IFELSE([LT_PROG_RC], - [LT_LANG(RC)], - [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) -])# _LT_LANG_DEFAULT_CONFIG - -# Obsolete macros: -AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) -AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) -AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) -AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) -AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_CXX], []) -dnl AC_DEFUN([AC_LIBTOOL_F77], []) -dnl AC_DEFUN([AC_LIBTOOL_FC], []) -dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) -dnl AC_DEFUN([AC_LIBTOOL_RC], []) - - -# _LT_TAG_COMPILER -# ---------------- -m4_defun([_LT_TAG_COMPILER], -[AC_REQUIRE([AC_PROG_CC])dnl - -_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl -_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl -_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl -_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC -])# _LT_TAG_COMPILER - - -# _LT_COMPILER_BOILERPLATE -# ------------------------ -# Check for compiler boilerplate output or warnings with -# the simple compiler test code. -m4_defun([_LT_COMPILER_BOILERPLATE], -[m4_require([_LT_DECL_SED])dnl -ac_outfile=conftest.$ac_objext -echo "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$RM conftest* -])# _LT_COMPILER_BOILERPLATE - - -# _LT_LINKER_BOILERPLATE -# ---------------------- -# Check for linker boilerplate output or warnings with -# the simple link test code. -m4_defun([_LT_LINKER_BOILERPLATE], -[m4_require([_LT_DECL_SED])dnl -ac_outfile=conftest.$ac_objext -echo "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$RM -r conftest* -])# _LT_LINKER_BOILERPLATE - -# _LT_REQUIRED_DARWIN_CHECKS -# ------------------------- -m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ - case $host_os in - rhapsody* | darwin*) - AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) - AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) - AC_CHECK_TOOL([LIPO], [lipo], [:]) - AC_CHECK_TOOL([OTOOL], [otool], [:]) - AC_CHECK_TOOL([OTOOL64], [otool64], [:]) - _LT_DECL([], [DSYMUTIL], [1], - [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) - _LT_DECL([], [NMEDIT], [1], - [Tool to change global to local symbols on Mac OS X]) - _LT_DECL([], [LIPO], [1], - [Tool to manipulate fat objects and archives on Mac OS X]) - _LT_DECL([], [OTOOL], [1], - [ldd/readelf like tool for Mach-O binaries on Mac OS X]) - _LT_DECL([], [OTOOL64], [1], - [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) - - AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], - [lt_cv_apple_cc_single_mod=no - if test -z "$LT_MULTI_MODULE"; then - # By default we will add the -single_module flag. You can override - # by either setting the environment variable LT_MULTI_MODULE - # non-empty at configure time, or by adding -multi_module to the - # link flags. - rm -rf libconftest.dylib* - echo "int foo(void){return 1;}" > conftest.c - echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ --dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD - $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ - -dynamiclib -Wl,-single_module conftest.c 2>conftest.err - _lt_result=$? - # If there is a non-empty error log, and "single_module" - # appears in it, assume the flag caused a linker warning - if test -s conftest.err && $GREP single_module conftest.err; then - cat conftest.err >&AS_MESSAGE_LOG_FD - # Otherwise, if the output was created with a 0 exit code from - # the compiler, it worked. - elif test -f libconftest.dylib && test 0 = "$_lt_result"; then - lt_cv_apple_cc_single_mod=yes - else - cat conftest.err >&AS_MESSAGE_LOG_FD - fi - rm -rf libconftest.dylib* - rm -f conftest.* - fi]) - - AC_CACHE_CHECK([for -exported_symbols_list linker flag], - [lt_cv_ld_exported_symbols_list], - [lt_cv_ld_exported_symbols_list=no - save_LDFLAGS=$LDFLAGS - echo "_main" > conftest.sym - LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" - AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], - [lt_cv_ld_exported_symbols_list=yes], - [lt_cv_ld_exported_symbols_list=no]) - LDFLAGS=$save_LDFLAGS - ]) - - AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], - [lt_cv_ld_force_load=no - cat > conftest.c << _LT_EOF -int forced_loaded() { return 2;} -_LT_EOF - echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD - $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD - echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD - $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD - echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD - $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD - cat > conftest.c << _LT_EOF -int main() { return 0;} -_LT_EOF - echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD - $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err - _lt_result=$? - if test -s conftest.err && $GREP force_load conftest.err; then - cat conftest.err >&AS_MESSAGE_LOG_FD - elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then - lt_cv_ld_force_load=yes - else - cat conftest.err >&AS_MESSAGE_LOG_FD - fi - rm -f conftest.err libconftest.a conftest conftest.c - rm -rf conftest.dSYM - ]) - case $host_os in - rhapsody* | darwin1.[[012]]) - _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; - darwin1.*) - _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; - darwin*) # darwin 5.x on - # if running on 10.5 or later, the deployment target defaults - # to the OS version, if on x86, and 10.4, the deployment - # target defaults to 10.4. Don't you love it? - case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in - 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) - _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; - 10.[[012]][[,.]]*) - _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; - 10.*) - _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; - esac - ;; - esac - if test yes = "$lt_cv_apple_cc_single_mod"; then - _lt_dar_single_mod='$single_module' - fi - if test yes = "$lt_cv_ld_exported_symbols_list"; then - _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' - else - _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' - fi - if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then - _lt_dsymutil='~$DSYMUTIL $lib || :' - else - _lt_dsymutil= - fi - ;; - esac -]) - - -# _LT_DARWIN_LINKER_FEATURES([TAG]) -# --------------------------------- -# Checks for linker and compiler features on darwin -m4_defun([_LT_DARWIN_LINKER_FEATURES], -[ - m4_require([_LT_REQUIRED_DARWIN_CHECKS]) - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_automatic, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - if test yes = "$lt_cv_ld_force_load"; then - _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' - m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], - [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) - else - _LT_TAGVAR(whole_archive_flag_spec, $1)='' - fi - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(allow_undefined_flag, $1)=$_lt_dar_allow_undefined - case $cc_basename in - ifort*|nagfor*) _lt_dar_can_shared=yes ;; - *) _lt_dar_can_shared=$GCC ;; - esac - if test yes = "$_lt_dar_can_shared"; then - output_verbose_link_cmd=func_echo_all - _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" - _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" - _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" - _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" - m4_if([$1], [CXX], -[ if test yes != "$lt_cv_apple_cc_single_mod"; then - _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil" - _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil" - fi -],[]) - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi -]) - -# _LT_SYS_MODULE_PATH_AIX([TAGNAME]) -# ---------------------------------- -# Links a minimal program and checks the executable -# for the system default hardcoded library path. In most cases, -# this is /usr/lib:/lib, but when the MPI compilers are used -# the location of the communication and MPI libs are included too. -# If we don't find anything, use the default library path according -# to the aix ld manual. -# Store the results from the different compilers for each TAGNAME. -# Allow to override them for all tags through lt_cv_aix_libpath. -m4_defun([_LT_SYS_MODULE_PATH_AIX], -[m4_require([_LT_DECL_SED])dnl -if test set = "${lt_cv_aix_libpath+set}"; then - aix_libpath=$lt_cv_aix_libpath -else - AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], - [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ - lt_aix_libpath_sed='[ - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }]' - _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then - _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi],[]) - if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then - _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=/usr/lib:/lib - fi - ]) - aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) -fi -])# _LT_SYS_MODULE_PATH_AIX - - -# _LT_SHELL_INIT(ARG) -# ------------------- -m4_define([_LT_SHELL_INIT], -[m4_divert_text([M4SH-INIT], [$1 -])])# _LT_SHELL_INIT - - - -# _LT_PROG_ECHO_BACKSLASH -# ----------------------- -# Find how we can fake an echo command that does not interpret backslash. -# In particular, with Autoconf 2.60 or later we add some code to the start -# of the generated configure script that will find a shell with a builtin -# printf (that we can use as an echo command). -m4_defun([_LT_PROG_ECHO_BACKSLASH], -[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO - -AC_MSG_CHECKING([how to print strings]) -# Test print first, because it will be a builtin if present. -if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ - test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='print -r --' -elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='printf %s\n' -else - # Use this function as a fallback that always works. - func_fallback_echo () - { - eval 'cat <<_LTECHO_EOF -$[]1 -_LTECHO_EOF' - } - ECHO='func_fallback_echo' -fi - -# func_echo_all arg... -# Invoke $ECHO with all args, space-separated. -func_echo_all () -{ - $ECHO "$*" -} - -case $ECHO in - printf*) AC_MSG_RESULT([printf]) ;; - print*) AC_MSG_RESULT([print -r]) ;; - *) AC_MSG_RESULT([cat]) ;; -esac - -m4_ifdef([_AS_DETECT_SUGGESTED], -[_AS_DETECT_SUGGESTED([ - test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( - ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' - ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO - ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO - PATH=/empty FPATH=/empty; export PATH FPATH - test "X`printf %s $ECHO`" = "X$ECHO" \ - || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) - -_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) -_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) -])# _LT_PROG_ECHO_BACKSLASH - - -# _LT_WITH_SYSROOT -# ---------------- -AC_DEFUN([_LT_WITH_SYSROOT], -[AC_MSG_CHECKING([for sysroot]) -AC_ARG_WITH([sysroot], -[AS_HELP_STRING([--with-sysroot@<:@=DIR@:>@], - [Search for dependent libraries within DIR (or the compiler's sysroot - if not specified).])], -[], [with_sysroot=no]) - -dnl lt_sysroot will always be passed unquoted. We quote it here -dnl in case the user passed a directory name. -lt_sysroot= -case $with_sysroot in #( - yes) - if test yes = "$GCC"; then - lt_sysroot=`$CC --print-sysroot 2>/dev/null` - fi - ;; #( - /*) - lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` - ;; #( - no|'') - ;; #( - *) - AC_MSG_RESULT([$with_sysroot]) - AC_MSG_ERROR([The sysroot must be an absolute path.]) - ;; -esac - - AC_MSG_RESULT([${lt_sysroot:-no}]) -_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl -[dependent libraries, and where our libraries should be installed.])]) - -# _LT_ENABLE_LOCK -# --------------- -m4_defun([_LT_ENABLE_LOCK], -[AC_ARG_ENABLE([libtool-lock], - [AS_HELP_STRING([--disable-libtool-lock], - [avoid locking (might break parallel builds)])]) -test no = "$enable_libtool_lock" || enable_libtool_lock=yes - -# Some flags need to be propagated to the compiler or linker for good -# libtool support. -case $host in -ia64-*-hpux*) - # Find out what ABI is being produced by ac_compile, and set mode - # options accordingly. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.$ac_objext` in - *ELF-32*) - HPUX_IA64_MODE=32 - ;; - *ELF-64*) - HPUX_IA64_MODE=64 - ;; - esac - fi - rm -rf conftest* - ;; -*-*-irix6*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. - echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - if test yes = "$lt_cv_prog_gnu_ld"; then - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -melf32bsmip" - ;; - *N32*) - LD="${LD-ld} -melf32bmipn32" - ;; - *64-bit*) - LD="${LD-ld} -melf64bmip" - ;; - esac - else - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -32" - ;; - *N32*) - LD="${LD-ld} -n32" - ;; - *64-bit*) - LD="${LD-ld} -64" - ;; - esac - fi - fi - rm -rf conftest* - ;; - -mips64*-*linux*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. - echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - emul=elf - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - emul="${emul}32" - ;; - *64-bit*) - emul="${emul}64" - ;; - esac - case `/usr/bin/file conftest.$ac_objext` in - *MSB*) - emul="${emul}btsmip" - ;; - *LSB*) - emul="${emul}ltsmip" - ;; - esac - case `/usr/bin/file conftest.$ac_objext` in - *N32*) - emul="${emul}n32" - ;; - esac - LD="${LD-ld} -m $emul" - fi - rm -rf conftest* - ;; - -x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ -s390*-*linux*|s390*-*tpf*|sparc*-*linux*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. Note that the listed cases only cover the - # situations where additional linker options are needed (such as when - # doing 32-bit compilation for a host where ld defaults to 64-bit, or - # vice versa); the common cases where no linker options are needed do - # not appear in the list. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.o` in - *32-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_i386_fbsd" - ;; - x86_64-*linux*) - case `/usr/bin/file conftest.o` in - *x86-64*) - LD="${LD-ld} -m elf32_x86_64" - ;; - *) - LD="${LD-ld} -m elf_i386" - ;; - esac - ;; - powerpc64le-*linux*) - LD="${LD-ld} -m elf32lppclinux" - ;; - powerpc64-*linux*) - LD="${LD-ld} -m elf32ppclinux" - ;; - s390x-*linux*) - LD="${LD-ld} -m elf_s390" - ;; - sparc64-*linux*) - LD="${LD-ld} -m elf32_sparc" - ;; - esac - ;; - *64-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_x86_64_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_x86_64" - ;; - powerpcle-*linux*) - LD="${LD-ld} -m elf64lppc" - ;; - powerpc-*linux*) - LD="${LD-ld} -m elf64ppc" - ;; - s390*-*linux*|s390*-*tpf*) - LD="${LD-ld} -m elf64_s390" - ;; - sparc*-*linux*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; - -*-*-sco3.2v5*) - # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS=$CFLAGS - CFLAGS="$CFLAGS -belf" - AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, - [AC_LANG_PUSH(C) - AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) - AC_LANG_POP]) - if test yes != "$lt_cv_cc_needs_belf"; then - # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS=$SAVE_CFLAGS - fi - ;; -*-*solaris*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.o` in - *64-bit*) - case $lt_cv_prog_gnu_ld in - yes*) - case $host in - i?86-*-solaris*|x86_64-*-solaris*) - LD="${LD-ld} -m elf_x86_64" - ;; - sparc*-*-solaris*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - # GNU ld 2.21 introduced _sol2 emulations. Use them if available. - if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then - LD=${LD-ld}_sol2 - fi - ;; - *) - if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then - LD="${LD-ld} -64" - fi - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; -esac - -need_locks=$enable_libtool_lock -])# _LT_ENABLE_LOCK - - -# _LT_PROG_AR -# ----------- -m4_defun([_LT_PROG_AR], -[AC_CHECK_TOOLS(AR, [ar], false) -: ${AR=ar} -: ${AR_FLAGS=cru} -_LT_DECL([], [AR], [1], [The archiver]) -_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) - -AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], - [lt_cv_ar_at_file=no - AC_COMPILE_IFELSE([AC_LANG_PROGRAM], - [echo conftest.$ac_objext > conftest.lst - lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' - AC_TRY_EVAL([lt_ar_try]) - if test 0 -eq "$ac_status"; then - # Ensure the archiver fails upon bogus file names. - rm -f conftest.$ac_objext libconftest.a - AC_TRY_EVAL([lt_ar_try]) - if test 0 -ne "$ac_status"; then - lt_cv_ar_at_file=@ - fi - fi - rm -f conftest.* libconftest.a - ]) - ]) - -if test no = "$lt_cv_ar_at_file"; then - archiver_list_spec= -else - archiver_list_spec=$lt_cv_ar_at_file -fi -_LT_DECL([], [archiver_list_spec], [1], - [How to feed a file listing to the archiver]) -])# _LT_PROG_AR - - -# _LT_CMD_OLD_ARCHIVE -# ------------------- -m4_defun([_LT_CMD_OLD_ARCHIVE], -[_LT_PROG_AR - -AC_CHECK_TOOL(STRIP, strip, :) -test -z "$STRIP" && STRIP=: -_LT_DECL([], [STRIP], [1], [A symbol stripping program]) - -AC_CHECK_TOOL(RANLIB, ranlib, :) -test -z "$RANLIB" && RANLIB=: -_LT_DECL([], [RANLIB], [1], - [Commands used to install an old-style archive]) - -# Determine commands to create old-style static archives. -old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' -old_postinstall_cmds='chmod 644 $oldlib' -old_postuninstall_cmds= - -if test -n "$RANLIB"; then - case $host_os in - bitrig* | openbsd*) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" - ;; - *) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" - ;; - esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" -fi - -case $host_os in - darwin*) - lock_old_archive_extraction=yes ;; - *) - lock_old_archive_extraction=no ;; -esac -_LT_DECL([], [old_postinstall_cmds], [2]) -_LT_DECL([], [old_postuninstall_cmds], [2]) -_LT_TAGDECL([], [old_archive_cmds], [2], - [Commands used to build an old-style archive]) -_LT_DECL([], [lock_old_archive_extraction], [0], - [Whether to use a lock for old archive extraction]) -])# _LT_CMD_OLD_ARCHIVE - - -# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, -# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) -# ---------------------------------------------------------------- -# Check whether the given compiler option works -AC_DEFUN([_LT_COMPILER_OPTION], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_SED])dnl -AC_CACHE_CHECK([$1], [$2], - [$2=no - m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$3" ## exclude from sc_useless_quotes_in_assignment - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&AS_MESSAGE_LOG_FD - echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - $2=yes - fi - fi - $RM conftest* -]) - -if test yes = "[$]$2"; then - m4_if([$5], , :, [$5]) -else - m4_if([$6], , :, [$6]) -fi -])# _LT_COMPILER_OPTION - -# Old name: -AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) - - -# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, -# [ACTION-SUCCESS], [ACTION-FAILURE]) -# ---------------------------------------------------- -# Check whether the given linker option works -AC_DEFUN([_LT_LINKER_OPTION], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_SED])dnl -AC_CACHE_CHECK([$1], [$2], - [$2=no - save_LDFLAGS=$LDFLAGS - LDFLAGS="$LDFLAGS $3" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&AS_MESSAGE_LOG_FD - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - $2=yes - fi - else - $2=yes - fi - fi - $RM -r conftest* - LDFLAGS=$save_LDFLAGS -]) - -if test yes = "[$]$2"; then - m4_if([$4], , :, [$4]) -else - m4_if([$5], , :, [$5]) -fi -])# _LT_LINKER_OPTION - -# Old name: -AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) - - -# LT_CMD_MAX_LEN -#--------------- -AC_DEFUN([LT_CMD_MAX_LEN], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -# find the maximum length of command line arguments -AC_MSG_CHECKING([the maximum length of command line arguments]) -AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl - i=0 - teststring=ABCD - - case $build_os in - msdosdjgpp*) - # On DJGPP, this test can blow up pretty badly due to problems in libc - # (any single argument exceeding 2000 bytes causes a buffer overrun - # during glob expansion). Even if it were fixed, the result of this - # check would be larger than it should be. - lt_cv_sys_max_cmd_len=12288; # 12K is about right - ;; - - gnu*) - # Under GNU Hurd, this test is not required because there is - # no limit to the length of command line arguments. - # Libtool will interpret -1 as no limit whatsoever - lt_cv_sys_max_cmd_len=-1; - ;; - - cygwin* | mingw* | cegcc*) - # On Win9x/ME, this test blows up -- it succeeds, but takes - # about 5 minutes as the teststring grows exponentially. - # Worse, since 9x/ME are not pre-emptively multitasking, - # you end up with a "frozen" computer, even though with patience - # the test eventually succeeds (with a max line length of 256k). - # Instead, let's just punt: use the minimum linelength reported by - # all of the supported platforms: 8192 (on NT/2K/XP). - lt_cv_sys_max_cmd_len=8192; - ;; - - mint*) - # On MiNT this can take a long time and run out of memory. - lt_cv_sys_max_cmd_len=8192; - ;; - - amigaos*) - # On AmigaOS with pdksh, this test takes hours, literally. - # So we just punt and use a minimum line length of 8192. - lt_cv_sys_max_cmd_len=8192; - ;; - - bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) - # This has been around since 386BSD, at least. Likely further. - if test -x /sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` - elif test -x /usr/sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` - else - lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs - fi - # And add a safety zone - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - ;; - - interix*) - # We know the value 262144 and hardcode it with a safety zone (like BSD) - lt_cv_sys_max_cmd_len=196608 - ;; - - os2*) - # The test takes a long time on OS/2. - lt_cv_sys_max_cmd_len=8192 - ;; - - osf*) - # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure - # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not - # nice to cause kernel panics so lets avoid the loop below. - # First set a reasonable default. - lt_cv_sys_max_cmd_len=16384 - # - if test -x /sbin/sysconfig; then - case `/sbin/sysconfig -q proc exec_disable_arg_limit` in - *1*) lt_cv_sys_max_cmd_len=-1 ;; - esac - fi - ;; - sco3.2v5*) - lt_cv_sys_max_cmd_len=102400 - ;; - sysv5* | sco5v6* | sysv4.2uw2*) - kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` - if test -n "$kargmax"; then - lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` - else - lt_cv_sys_max_cmd_len=32768 - fi - ;; - *) - lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` - if test -n "$lt_cv_sys_max_cmd_len" && \ - test undefined != "$lt_cv_sys_max_cmd_len"; then - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - else - # Make teststring a little bigger before we do anything with it. - # a 1K string should be a reasonable start. - for i in 1 2 3 4 5 6 7 8; do - teststring=$teststring$teststring - done - SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} - # If test is not a shell built-in, we'll probably end up computing a - # maximum length that is only half of the actual maximum length, but - # we can't tell. - while { test X`env echo "$teststring$teststring" 2>/dev/null` \ - = "X$teststring$teststring"; } >/dev/null 2>&1 && - test 17 != "$i" # 1/2 MB should be enough - do - i=`expr $i + 1` - teststring=$teststring$teststring - done - # Only check the string length outside the loop. - lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` - teststring= - # Add a significant safety factor because C++ compilers can tack on - # massive amounts of additional arguments before passing them to the - # linker. It appears as though 1/2 is a usable value. - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` - fi - ;; - esac -]) -if test -n "$lt_cv_sys_max_cmd_len"; then - AC_MSG_RESULT($lt_cv_sys_max_cmd_len) -else - AC_MSG_RESULT(none) -fi -max_cmd_len=$lt_cv_sys_max_cmd_len -_LT_DECL([], [max_cmd_len], [0], - [What is the maximum length of a command?]) -])# LT_CMD_MAX_LEN - -# Old name: -AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) - - -# _LT_HEADER_DLFCN -# ---------------- -m4_defun([_LT_HEADER_DLFCN], -[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl -])# _LT_HEADER_DLFCN - - -# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, -# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) -# ---------------------------------------------------------------- -m4_defun([_LT_TRY_DLOPEN_SELF], -[m4_require([_LT_HEADER_DLFCN])dnl -if test yes = "$cross_compiling"; then : - [$4] -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -[#line $LINENO "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include -#endif - -#include - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -/* When -fvisibility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -int fnord () __attribute__((visibility("default"))); -#endif - -int fnord () { return 42; } -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else - { - if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -}] -_LT_EOF - if AC_TRY_EVAL(ac_link) && test -s "conftest$ac_exeext" 2>/dev/null; then - (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) $1 ;; - x$lt_dlneed_uscore) $2 ;; - x$lt_dlunknown|x*) $3 ;; - esac - else : - # compilation failed - $3 - fi -fi -rm -fr conftest* -])# _LT_TRY_DLOPEN_SELF - - -# LT_SYS_DLOPEN_SELF -# ------------------ -AC_DEFUN([LT_SYS_DLOPEN_SELF], -[m4_require([_LT_HEADER_DLFCN])dnl -if test yes != "$enable_dlopen"; then - enable_dlopen=unknown - enable_dlopen_self=unknown - enable_dlopen_self_static=unknown -else - lt_cv_dlopen=no - lt_cv_dlopen_libs= - - case $host_os in - beos*) - lt_cv_dlopen=load_add_on - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ;; - - mingw* | pw32* | cegcc*) - lt_cv_dlopen=LoadLibrary - lt_cv_dlopen_libs= - ;; - - cygwin*) - lt_cv_dlopen=dlopen - lt_cv_dlopen_libs= - ;; - - darwin*) - # if libdl is installed we need to link against it - AC_CHECK_LIB([dl], [dlopen], - [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl],[ - lt_cv_dlopen=dyld - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ]) - ;; - - tpf*) - # Don't try to run any link tests for TPF. We know it's impossible - # because TPF is a cross-compiler, and we know how we open DSOs. - lt_cv_dlopen=dlopen - lt_cv_dlopen_libs= - lt_cv_dlopen_self=no - ;; - - *) - AC_CHECK_FUNC([shl_load], - [lt_cv_dlopen=shl_load], - [AC_CHECK_LIB([dld], [shl_load], - [lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld], - [AC_CHECK_FUNC([dlopen], - [lt_cv_dlopen=dlopen], - [AC_CHECK_LIB([dl], [dlopen], - [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl], - [AC_CHECK_LIB([svld], [dlopen], - [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld], - [AC_CHECK_LIB([dld], [dld_link], - [lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld]) - ]) - ]) - ]) - ]) - ]) - ;; - esac - - if test no = "$lt_cv_dlopen"; then - enable_dlopen=no - else - enable_dlopen=yes - fi - - case $lt_cv_dlopen in - dlopen) - save_CPPFLAGS=$CPPFLAGS - test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - - save_LDFLAGS=$LDFLAGS - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - - save_LIBS=$LIBS - LIBS="$lt_cv_dlopen_libs $LIBS" - - AC_CACHE_CHECK([whether a program can dlopen itself], - lt_cv_dlopen_self, [dnl - _LT_TRY_DLOPEN_SELF( - lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, - lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) - ]) - - if test yes = "$lt_cv_dlopen_self"; then - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" - AC_CACHE_CHECK([whether a statically linked program can dlopen itself], - lt_cv_dlopen_self_static, [dnl - _LT_TRY_DLOPEN_SELF( - lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, - lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) - ]) - fi - - CPPFLAGS=$save_CPPFLAGS - LDFLAGS=$save_LDFLAGS - LIBS=$save_LIBS - ;; - esac - - case $lt_cv_dlopen_self in - yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; - *) enable_dlopen_self=unknown ;; - esac - - case $lt_cv_dlopen_self_static in - yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; - *) enable_dlopen_self_static=unknown ;; - esac -fi -_LT_DECL([dlopen_support], [enable_dlopen], [0], - [Whether dlopen is supported]) -_LT_DECL([dlopen_self], [enable_dlopen_self], [0], - [Whether dlopen of programs is supported]) -_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], - [Whether dlopen of statically linked programs is supported]) -])# LT_SYS_DLOPEN_SELF - -# Old name: -AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) - - -# _LT_COMPILER_C_O([TAGNAME]) -# --------------------------- -# Check to see if options -c and -o are simultaneously supported by compiler. -# This macro does not hard code the compiler like AC_PROG_CC_C_O. -m4_defun([_LT_COMPILER_C_O], -[m4_require([_LT_DECL_SED])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_TAG_COMPILER])dnl -AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], - [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], - [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&AS_MESSAGE_LOG_FD - echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes - fi - fi - chmod u+w . 2>&AS_MESSAGE_LOG_FD - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* -]) -_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], - [Does compiler simultaneously support -c and -o options?]) -])# _LT_COMPILER_C_O - - -# _LT_COMPILER_FILE_LOCKS([TAGNAME]) -# ---------------------------------- -# Check to see if we can do hard links to lock some files if needed -m4_defun([_LT_COMPILER_FILE_LOCKS], -[m4_require([_LT_ENABLE_LOCK])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -_LT_COMPILER_C_O([$1]) - -hard_links=nottested -if test no = "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" && test no != "$need_locks"; then - # do not overwrite the value of need_locks provided by the user - AC_MSG_CHECKING([if we can lock with hard links]) - hard_links=yes - $RM conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - AC_MSG_RESULT([$hard_links]) - if test no = "$hard_links"; then - AC_MSG_WARN(['$CC' does not support '-c -o', so 'make -j' may be unsafe]) - need_locks=warn - fi -else - need_locks=no -fi -_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) -])# _LT_COMPILER_FILE_LOCKS - - -# _LT_CHECK_OBJDIR -# ---------------- -m4_defun([_LT_CHECK_OBJDIR], -[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], -[rm -f .libs 2>/dev/null -mkdir .libs 2>/dev/null -if test -d .libs; then - lt_cv_objdir=.libs -else - # MS-DOS does not allow filenames that begin with a dot. - lt_cv_objdir=_libs -fi -rmdir .libs 2>/dev/null]) -objdir=$lt_cv_objdir -_LT_DECL([], [objdir], [0], - [The name of the directory that contains temporary libtool files])dnl -m4_pattern_allow([LT_OBJDIR])dnl -AC_DEFINE_UNQUOTED([LT_OBJDIR], "$lt_cv_objdir/", - [Define to the sub-directory where libtool stores uninstalled libraries.]) -])# _LT_CHECK_OBJDIR - - -# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) -# -------------------------------------- -# Check hardcoding attributes. -m4_defun([_LT_LINKER_HARDCODE_LIBPATH], -[AC_MSG_CHECKING([how to hardcode library paths into programs]) -_LT_TAGVAR(hardcode_action, $1)= -if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || - test -n "$_LT_TAGVAR(runpath_var, $1)" || - test yes = "$_LT_TAGVAR(hardcode_automatic, $1)"; then - - # We can hardcode non-existent directories. - if test no != "$_LT_TAGVAR(hardcode_direct, $1)" && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" && - test no != "$_LT_TAGVAR(hardcode_minus_L, $1)"; then - # Linking always hardcodes the temporary library directory. - _LT_TAGVAR(hardcode_action, $1)=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - _LT_TAGVAR(hardcode_action, $1)=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - _LT_TAGVAR(hardcode_action, $1)=unsupported -fi -AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) - -if test relink = "$_LT_TAGVAR(hardcode_action, $1)" || - test yes = "$_LT_TAGVAR(inherit_rpath, $1)"; then - # Fast installation is not supported - enable_fast_install=no -elif test yes = "$shlibpath_overrides_runpath" || - test no = "$enable_shared"; then - # Fast installation is not necessary - enable_fast_install=needless -fi -_LT_TAGDECL([], [hardcode_action], [0], - [How to hardcode a shared library path into an executable]) -])# _LT_LINKER_HARDCODE_LIBPATH - - -# _LT_CMD_STRIPLIB -# ---------------- -m4_defun([_LT_CMD_STRIPLIB], -[m4_require([_LT_DECL_EGREP]) -striplib= -old_striplib= -AC_MSG_CHECKING([whether stripping libraries is possible]) -if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - AC_MSG_RESULT([yes]) -else -# FIXME - insert some real tests, host_os isn't really good enough - case $host_os in - darwin*) - if test -n "$STRIP"; then - striplib="$STRIP -x" - old_striplib="$STRIP -S" - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - fi - ;; - *) - AC_MSG_RESULT([no]) - ;; - esac -fi -_LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) -_LT_DECL([], [striplib], [1]) -])# _LT_CMD_STRIPLIB - - -# _LT_PREPARE_MUNGE_PATH_LIST -# --------------------------- -# Make sure func_munge_path_list() is defined correctly. -m4_defun([_LT_PREPARE_MUNGE_PATH_LIST], -[[# func_munge_path_list VARIABLE PATH -# ----------------------------------- -# VARIABLE is name of variable containing _space_ separated list of -# directories to be munged by the contents of PATH, which is string -# having a format: -# "DIR[:DIR]:" -# string "DIR[ DIR]" will be prepended to VARIABLE -# ":DIR[:DIR]" -# string "DIR[ DIR]" will be appended to VARIABLE -# "DIRP[:DIRP]::[DIRA:]DIRA" -# string "DIRP[ DIRP]" will be prepended to VARIABLE and string -# "DIRA[ DIRA]" will be appended to VARIABLE -# "DIR[:DIR]" -# VARIABLE will be replaced by "DIR[ DIR]" -func_munge_path_list () -{ - case x@S|@2 in - x) - ;; - *:) - eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'` \@S|@@S|@1\" - ;; - x:*) - eval @S|@1=\"\@S|@@S|@1 `$ECHO @S|@2 | $SED 's/:/ /g'`\" - ;; - *::*) - eval @S|@1=\"\@S|@@S|@1\ `$ECHO @S|@2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" - eval @S|@1=\"`$ECHO @S|@2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \@S|@@S|@1\" - ;; - *) - eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'`\" - ;; - esac -} -]])# _LT_PREPARE_PATH_LIST - - -# _LT_SYS_DYNAMIC_LINKER([TAG]) -# ----------------------------- -# PORTME Fill in your ld.so characteristics -m4_defun([_LT_SYS_DYNAMIC_LINKER], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_OBJDUMP])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_CHECK_SHELL_FEATURES])dnl -m4_require([_LT_PREPARE_MUNGE_PATH_LIST])dnl -AC_MSG_CHECKING([dynamic linker characteristics]) -m4_if([$1], - [], [ -if test yes = "$GCC"; then - case $host_os in - darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; - *) lt_awk_arg='/^libraries:/' ;; - esac - case $host_os in - mingw* | cegcc*) lt_sed_strip_eq='s|=\([[A-Za-z]]:\)|\1|g' ;; - *) lt_sed_strip_eq='s|=/|/|g' ;; - esac - lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` - case $lt_search_path_spec in - *\;*) - # if the path contains ";" then we assume it to be the separator - # otherwise default to the standard path separator (i.e. ":") - it is - # assumed that no part of a normal pathname contains ";" but that should - # okay in the real world where ";" in dirpaths is itself problematic. - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` - ;; - *) - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` - ;; - esac - # Ok, now we have the path, separated by spaces, we can step through it - # and add multilib dir if necessary... - lt_tmp_lt_search_path_spec= - lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` - # ...but if some path component already ends with the multilib dir we assume - # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). - case "$lt_multi_os_dir; $lt_search_path_spec " in - "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) - lt_multi_os_dir= - ;; - esac - for lt_sys_path in $lt_search_path_spec; do - if test -d "$lt_sys_path$lt_multi_os_dir"; then - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" - elif test -n "$lt_multi_os_dir"; then - test -d "$lt_sys_path" && \ - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" - fi - done - lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' -BEGIN {RS = " "; FS = "/|\n";} { - lt_foo = ""; - lt_count = 0; - for (lt_i = NF; lt_i > 0; lt_i--) { - if ($lt_i != "" && $lt_i != ".") { - if ($lt_i == "..") { - lt_count++; - } else { - if (lt_count == 0) { - lt_foo = "/" $lt_i lt_foo; - } else { - lt_count--; - } - } - } - } - if (lt_foo != "") { lt_freq[[lt_foo]]++; } - if (lt_freq[[lt_foo]] == 1) { print lt_foo; } -}'` - # AWK program above erroneously prepends '/' to C:/dos/paths - # for these hosts. - case $host_os in - mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ - $SED 's|/\([[A-Za-z]]:\)|\1|g'` ;; - esac - sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` -else - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -fi]) -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=.so -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - -AC_ARG_VAR([LT_SYS_LIBRARY_PATH], -[User-defined run-time library search path.]) - -case $host_os in -aix3*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='$libname$release$shared_ext$major' - ;; - -aix[[4-9]]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test ia64 = "$host_cpu"; then - # AIX 5 supports IA64 - library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line '#! .'. This would cause the generated library to - # depend on '.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[[01]] | aix4.[[01]].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # Using Import Files as archive members, it is possible to support - # filename-based versioning of shared library archives on AIX. While - # this would work for both with and without runtime linking, it will - # prevent static linking of such archives. So we do filename-based - # shared library versioning with .so extension only, which is used - # when both runtime linking and shared linking is enabled. - # Unfortunately, runtime linking may impact performance, so we do - # not want this to be the default eventually. Also, we use the - # versioned .so libs for executables only if there is the -brtl - # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. - # To allow for filename-based versioning support, we need to create - # libNAME.so.V as an archive file, containing: - # *) an Import File, referring to the versioned filename of the - # archive as well as the shared archive member, telling the - # bitwidth (32 or 64) of that shared object, and providing the - # list of exported symbols of that shared object, eventually - # decorated with the 'weak' keyword - # *) the shared object with the F_LOADONLY flag set, to really avoid - # it being seen by the linker. - # At run time we better use the real file rather than another symlink, - # but for link time we create the symlink libNAME.so -> libNAME.so.V - - case $with_aix_soname,$aix_use_runtimelinking in - # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - aix,yes) # traditional libtool - dynamic_linker='AIX unversionable lib.so' - # If using run time linking (on AIX 4.2 or later) use lib.so - # instead of lib.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - ;; - aix,no) # traditional AIX only - dynamic_linker='AIX lib.a[(]lib.so.V[)]' - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='$libname$release.a $libname.a' - soname_spec='$libname$release$shared_ext$major' - ;; - svr4,*) # full svr4 only - dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)]" - library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' - # We do not specify a path in Import Files, so LIBPATH fires. - shlibpath_overrides_runpath=yes - ;; - *,yes) # both, prefer svr4 - dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)], lib.a[(]lib.so.V[)]" - library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' - # unpreferred sharedlib libNAME.a needs extra handling - postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' - postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' - # We do not specify a path in Import Files, so LIBPATH fires. - shlibpath_overrides_runpath=yes - ;; - *,no) # both, prefer aix - dynamic_linker="AIX lib.a[(]lib.so.V[)], lib.so.V[(]$shared_archive_member_spec.o[)]" - library_names_spec='$libname$release.a $libname.a' - soname_spec='$libname$release$shared_ext$major' - # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling - postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' - postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' - ;; - esac - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - case $host_cpu in - powerpc) - # Since July 2007 AmigaOS4 officially supports .so libraries. - # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - ;; - m68k) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' - ;; - esac - ;; - -beos*) - library_names_spec='$libname$shared_ext' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi[[45]]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | mingw* | pw32* | cegcc*) - version_type=windows - shrext_cmds=.dll - need_version=no - need_lib_prefix=no - - case $GCC,$cc_basename in - yes,*) - # gcc - library_names_spec='$libname.dll.a' - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \$file`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - - case $host_os in - cygwin*) - # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' -m4_if([$1], [],[ - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) - ;; - mingw* | cegcc*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' - ;; - pw32*) - # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' - ;; - esac - dynamic_linker='Win32 ld.exe' - ;; - - *,cl*) - # Native MSVC - libname_spec='$name' - soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' - library_names_spec='$libname.dll.lib' - - case $build_os in - mingw*) - sys_lib_search_path_spec= - lt_save_ifs=$IFS - IFS=';' - for lt_path in $LIB - do - IFS=$lt_save_ifs - # Let DOS variable expansion print the short 8.3 style file name. - lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` - sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" - done - IFS=$lt_save_ifs - # Convert to MSYS style. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` - ;; - cygwin*) - # Convert to unix form, then to dos form, then back to unix form - # but this time dos style (no spaces!) so that the unix form looks - # like /cygdrive/c/PROGRA~1:/cygdr... - sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` - sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` - sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - ;; - *) - sys_lib_search_path_spec=$LIB - if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then - # It is most probably a Windows format PATH. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi - # FIXME: find the short name or the path components, as spaces are - # common. (e.g. "Program Files" -> "PROGRA~1") - ;; - esac - - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \$file`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - dynamic_linker='Win32 link.exe' - ;; - - *) - # Assume MSVC wrapper - library_names_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext $libname.lib' - dynamic_linker='Win32 ld.exe' - ;; - esac - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' - soname_spec='$libname$release$major$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' -m4_if([$1], [],[ - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - -dgux*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -freebsd* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - if test -x /usr/bin/objformat; then - objformat=`/usr/bin/objformat` - else - case $host_os in - freebsd[[23]].*) objformat=aout ;; - *) objformat=elf ;; - esac - fi - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2.*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[[01]]* | freebsdelf3.[[01]]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ - freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - *) # from 4.6 on, and DragonFly - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - esac - ;; - -haiku*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - dynamic_linker="$host_os runtime_loader" - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LIBRARY_PATH - shlibpath_overrides_runpath=no - sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' - hardcode_into_libs=yes - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case $host_cpu in - ia64*) - shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - if test 32 = "$HPUX_IA64_MODE"; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - sys_lib_dlsearch_path_spec=/usr/lib/hpux32 - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - sys_lib_dlsearch_path_spec=/usr/lib/hpux64 - fi - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555, ... - postinstall_cmds='chmod 555 $lib' - # or fails outright, so override atomically: - install_override_mode=555 - ;; - -interix[[3-9]]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test yes = "$lt_cv_prog_gnu_ld"; then - version_type=linux # correct to gnu/linux during the next big refactor - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='$libname$release$shared_ext$major' - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" - sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -linux*android*) - version_type=none # Android doesn't support versioned libraries. - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext' - soname_spec='$libname$release$shared_ext' - finish_cmds= - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - dynamic_linker='Android linker' - # Don't embed -rpath directories since the linker doesn't support them. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - ;; - -# This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - - # Some binutils ld are patched to set DT_RUNPATH - AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], - [lt_cv_shlibpath_overrides_runpath=no - save_LDFLAGS=$LDFLAGS - save_libdir=$libdir - eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ - LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" - AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], - [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], - [lt_cv_shlibpath_overrides_runpath=yes])]) - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir - ]) - shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - # Ideally, we could use ldconfig to report *all* directores which are - # searched for libraries, however this is still not possible. Aside from not - # being certain /sbin/ldconfig is available, command - # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, - # even though it is searched at run-time. Try to do the best guess by - # appending ld.so.conf contents (and includes) to the search path. - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -*nto* | *qnx*) - version_type=qnx - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='ldqnx.so' - ;; - -openbsd* | bitrig*) - version_type=sunos - sys_lib_dlsearch_path_spec=/usr/lib - need_lib_prefix=no - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then - need_version=no - else - need_version=yes - fi - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -os2*) - libname_spec='$name' - version_type=windows - shrext_cmds=.dll - need_version=no - need_lib_prefix=no - # OS/2 can only load a DLL with a base name of 8 characters or less. - soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; - v=$($ECHO $release$versuffix | tr -d .-); - n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); - $ECHO $n$v`$shared_ext' - library_names_spec='${libname}_dll.$libext' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=BEGINLIBPATH - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - postinstall_cmds='base_file=`basename \$file`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='$libname$release$shared_ext$major' - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - -rdos*) - dynamic_linker=no - ;; - -solaris*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test yes = "$with_gnu_ld"; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.3*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec; then - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' - soname_spec='$libname$shared_ext.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=sco - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - if test yes = "$with_gnu_ld"; then - sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' - else - sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - case $host_os in - sco3.2v5*) - sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" - ;; - esac - fi - sys_lib_dlsearch_path_spec='/usr/lib' - ;; - -tpf*) - # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -uts4*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -AC_MSG_RESULT([$dynamic_linker]) -test no = "$dynamic_linker" && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test yes = "$GCC"; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then - sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec -fi - -if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then - sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec -fi - -# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... -configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec - -# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code -func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" - -# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool -configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH - -_LT_DECL([], [variables_saved_for_relink], [1], - [Variables whose values should be saved in libtool wrapper scripts and - restored at link time]) -_LT_DECL([], [need_lib_prefix], [0], - [Do we need the "lib" prefix for modules?]) -_LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) -_LT_DECL([], [version_type], [0], [Library versioning type]) -_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) -_LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) -_LT_DECL([], [shlibpath_overrides_runpath], [0], - [Is shlibpath searched before the hard-coded library search path?]) -_LT_DECL([], [libname_spec], [1], [Format of library name prefix]) -_LT_DECL([], [library_names_spec], [1], - [[List of archive names. First name is the real one, the rest are links. - The last name is the one that the linker finds with -lNAME]]) -_LT_DECL([], [soname_spec], [1], - [[The coded name of the library, if different from the real name]]) -_LT_DECL([], [install_override_mode], [1], - [Permission mode override for installation of shared libraries]) -_LT_DECL([], [postinstall_cmds], [2], - [Command to use after installation of a shared archive]) -_LT_DECL([], [postuninstall_cmds], [2], - [Command to use after uninstallation of a shared archive]) -_LT_DECL([], [finish_cmds], [2], - [Commands used to finish a libtool library installation in a directory]) -_LT_DECL([], [finish_eval], [1], - [[As "finish_cmds", except a single script fragment to be evaled but - not shown]]) -_LT_DECL([], [hardcode_into_libs], [0], - [Whether we should hardcode library paths into libraries]) -_LT_DECL([], [sys_lib_search_path_spec], [2], - [Compile-time system search path for libraries]) -_LT_DECL([sys_lib_dlsearch_path_spec], [configure_time_dlsearch_path], [2], - [Detected run-time system search path for libraries]) -_LT_DECL([], [configure_time_lt_sys_library_path], [2], - [Explicit LT_SYS_LIBRARY_PATH set during ./configure time]) -])# _LT_SYS_DYNAMIC_LINKER - - -# _LT_PATH_TOOL_PREFIX(TOOL) -# -------------------------- -# find a file program that can recognize shared library -AC_DEFUN([_LT_PATH_TOOL_PREFIX], -[m4_require([_LT_DECL_EGREP])dnl -AC_MSG_CHECKING([for $1]) -AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, -[case $MAGIC_CMD in -[[\\/*] | ?:[\\/]*]) - lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD=$MAGIC_CMD - lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR -dnl $ac_dummy forces splitting on constant user-supplied paths. -dnl POSIX.2 word splitting is done only on the output of word expansions, -dnl not every word. This closes a longstanding sh security hole. - ac_dummy="m4_if([$2], , $PATH, [$2])" - for ac_dir in $ac_dummy; do - IFS=$lt_save_ifs - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$1"; then - lt_cv_path_MAGIC_CMD=$ac_dir/"$1" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD=$lt_cv_path_MAGIC_CMD - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<_LT_EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS=$lt_save_ifs - MAGIC_CMD=$lt_save_MAGIC_CMD - ;; -esac]) -MAGIC_CMD=$lt_cv_path_MAGIC_CMD -if test -n "$MAGIC_CMD"; then - AC_MSG_RESULT($MAGIC_CMD) -else - AC_MSG_RESULT(no) -fi -_LT_DECL([], [MAGIC_CMD], [0], - [Used to examine libraries when file_magic_cmd begins with "file"])dnl -])# _LT_PATH_TOOL_PREFIX - -# Old name: -AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) - - -# _LT_PATH_MAGIC -# -------------- -# find a file program that can recognize a shared library -m4_defun([_LT_PATH_MAGIC], -[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) -if test -z "$lt_cv_path_MAGIC_CMD"; then - if test -n "$ac_tool_prefix"; then - _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) - else - MAGIC_CMD=: - fi -fi -])# _LT_PATH_MAGIC - - -# LT_PATH_LD -# ---------- -# find the pathname to the GNU or non-GNU linker -AC_DEFUN([LT_PATH_LD], -[AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_PROG_ECHO_BACKSLASH])dnl - -AC_ARG_WITH([gnu-ld], - [AS_HELP_STRING([--with-gnu-ld], - [assume the C compiler uses GNU ld @<:@default=no@:>@])], - [test no = "$withval" || with_gnu_ld=yes], - [with_gnu_ld=no])dnl - -ac_prog=ld -if test yes = "$GCC"; then - # Check if gcc -print-prog-name=ld gives a path. - AC_MSG_CHECKING([for ld used by $CC]) - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return, which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [[\\/]]* | ?:[[\\/]]*) - re_direlt='/[[^/]][[^/]]*/\.\./' - # Canonicalize the pathname of ld - ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` - while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do - ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` - done - test -z "$LD" && LD=$ac_prog - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test yes = "$with_gnu_ld"; then - AC_MSG_CHECKING([for GNU ld]) -else - AC_MSG_CHECKING([for non-GNU ld]) -fi -AC_CACHE_VAL(lt_cv_path_LD, -[if test -z "$LD"; then - lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS=$lt_save_ifs - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD=$ac_dir/$ac_prog - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some variants of GNU ld only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 &1 conftest.i -cat conftest.i conftest.i >conftest2.i -: ${lt_DD:=$DD} -AC_PATH_PROGS_FEATURE_CHECK([lt_DD], [dd], -[if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then - cmp -s conftest.i conftest.out \ - && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: -fi]) -rm -f conftest.i conftest2.i conftest.out]) -])# _LT_PATH_DD - - -# _LT_CMD_TRUNCATE -# ---------------- -# find command to truncate a binary pipe -m4_defun([_LT_CMD_TRUNCATE], -[m4_require([_LT_PATH_DD]) -AC_CACHE_CHECK([how to truncate binary pipes], [lt_cv_truncate_bin], -[printf 0123456789abcdef0123456789abcdef >conftest.i -cat conftest.i conftest.i >conftest2.i -lt_cv_truncate_bin= -if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then - cmp -s conftest.i conftest.out \ - && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" -fi -rm -f conftest.i conftest2.i conftest.out -test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q"]) -_LT_DECL([lt_truncate_bin], [lt_cv_truncate_bin], [1], - [Command to truncate a binary pipe]) -])# _LT_CMD_TRUNCATE - - -# _LT_CHECK_MAGIC_METHOD -# ---------------------- -# how to check for library dependencies -# -- PORTME fill in with the dynamic library characteristics -m4_defun([_LT_CHECK_MAGIC_METHOD], -[m4_require([_LT_DECL_EGREP]) -m4_require([_LT_DECL_OBJDUMP]) -AC_CACHE_CHECK([how to recognize dependent libraries], -lt_cv_deplibs_check_method, -[lt_cv_file_magic_cmd='$MAGIC_CMD' -lt_cv_file_magic_test_file= -lt_cv_deplibs_check_method='unknown' -# Need to set the preceding variable on all platforms that support -# interlibrary dependencies. -# 'none' -- dependencies not supported. -# 'unknown' -- same as none, but documents that we really don't know. -# 'pass_all' -- all dependencies passed with no checks. -# 'test_compile' -- check by making test program. -# 'file_magic [[regex]]' -- check by looking for files in library path -# that responds to the $file_magic_cmd with a given extended regex. -# If you have 'file' or equivalent on your system and you're not sure -# whether 'pass_all' will *always* work, you probably want this one. - -case $host_os in -aix[[4-9]]*) - lt_cv_deplibs_check_method=pass_all - ;; - -beos*) - lt_cv_deplibs_check_method=pass_all - ;; - -bsdi[[45]]*) - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)' - lt_cv_file_magic_cmd='/usr/bin/file -L' - lt_cv_file_magic_test_file=/shlib/libc.so - ;; - -cygwin*) - # func_win32_libid is a shell function defined in ltmain.sh - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - ;; - -mingw* | pw32*) - # Base MSYS/MinGW do not provide the 'file' command needed by - # func_win32_libid shell function, so use a weaker test based on 'objdump', - # unless we find 'file', for example because we are cross-compiling. - if ( file / ) >/dev/null 2>&1; then - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - else - # Keep this pattern in sync with the one in func_win32_libid. - lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' - lt_cv_file_magic_cmd='$OBJDUMP -f' - fi - ;; - -cegcc*) - # use the weaker test based on 'objdump'. See mingw*. - lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' - lt_cv_file_magic_cmd='$OBJDUMP -f' - ;; - -darwin* | rhapsody*) - lt_cv_deplibs_check_method=pass_all - ;; - -freebsd* | dragonfly*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - case $host_cpu in - i*86 ) - # Not sure whether the presence of OpenBSD here was a mistake. - # Let's accept both of them until this is cleared up. - lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` - ;; - esac - else - lt_cv_deplibs_check_method=pass_all - fi - ;; - -haiku*) - lt_cv_deplibs_check_method=pass_all - ;; - -hpux10.20* | hpux11*) - lt_cv_file_magic_cmd=/usr/bin/file - case $host_cpu in - ia64*) - lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' - lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so - ;; - hppa*64*) - [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] - lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl - ;; - *) - lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' - lt_cv_file_magic_test_file=/usr/lib/libc.sl - ;; - esac - ;; - -interix[[3-9]]*) - # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' - ;; - -irix5* | irix6* | nonstopux*) - case $LD in - *-32|*"-32 ") libmagic=32-bit;; - *-n32|*"-n32 ") libmagic=N32;; - *-64|*"-64 ") libmagic=64-bit;; - *) libmagic=never-match;; - esac - lt_cv_deplibs_check_method=pass_all - ;; - -# This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' - fi - ;; - -newos6*) - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=/usr/lib/libnls.so - ;; - -*nto* | *qnx*) - lt_cv_deplibs_check_method=pass_all - ;; - -openbsd* | bitrig*) - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' - fi - ;; - -osf3* | osf4* | osf5*) - lt_cv_deplibs_check_method=pass_all - ;; - -rdos*) - lt_cv_deplibs_check_method=pass_all - ;; - -solaris*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv4 | sysv4.3*) - case $host_vendor in - motorola) - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` - ;; - ncr) - lt_cv_deplibs_check_method=pass_all - ;; - sequent) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' - ;; - sni) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" - lt_cv_file_magic_test_file=/lib/libc.so - ;; - siemens) - lt_cv_deplibs_check_method=pass_all - ;; - pc) - lt_cv_deplibs_check_method=pass_all - ;; - esac - ;; - -tpf*) - lt_cv_deplibs_check_method=pass_all - ;; -os2*) - lt_cv_deplibs_check_method=pass_all - ;; -esac -]) - -file_magic_glob= -want_nocaseglob=no -if test "$build" = "$host"; then - case $host_os in - mingw* | pw32*) - if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then - want_nocaseglob=yes - else - file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` - fi - ;; - esac -fi - -file_magic_cmd=$lt_cv_file_magic_cmd -deplibs_check_method=$lt_cv_deplibs_check_method -test -z "$deplibs_check_method" && deplibs_check_method=unknown - -_LT_DECL([], [deplibs_check_method], [1], - [Method to check whether dependent libraries are shared objects]) -_LT_DECL([], [file_magic_cmd], [1], - [Command to use when deplibs_check_method = "file_magic"]) -_LT_DECL([], [file_magic_glob], [1], - [How to find potential files when deplibs_check_method = "file_magic"]) -_LT_DECL([], [want_nocaseglob], [1], - [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) -])# _LT_CHECK_MAGIC_METHOD - - -# LT_PATH_NM -# ---------- -# find the pathname to a BSD- or MS-compatible name lister -AC_DEFUN([LT_PATH_NM], -[AC_REQUIRE([AC_PROG_CC])dnl -AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, -[if test -n "$NM"; then - # Let the user override the test. - lt_cv_path_NM=$NM -else - lt_nm_to_check=${ac_tool_prefix}nm - if test -n "$ac_tool_prefix" && test "$build" = "$host"; then - lt_nm_to_check="$lt_nm_to_check nm" - fi - for lt_tmp_nm in $lt_nm_to_check; do - lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR - for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do - IFS=$lt_save_ifs - test -z "$ac_dir" && ac_dir=. - tmp_nm=$ac_dir/$lt_tmp_nm - if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then - # Check to see if the nm accepts a BSD-compat flag. - # Adding the 'sed 1q' prevents false positives on HP-UX, which says: - # nm: unknown option "B" ignored - # Tru64's nm complains that /dev/null is an invalid object file - # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty - case $build_os in - mingw*) lt_bad_file=conftest.nm/nofile ;; - *) lt_bad_file=/dev/null ;; - esac - case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in - *$lt_bad_file* | *'Invalid file or object type'*) - lt_cv_path_NM="$tmp_nm -B" - break 2 - ;; - *) - case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in - */dev/null*) - lt_cv_path_NM="$tmp_nm -p" - break 2 - ;; - *) - lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but - continue # so that we can try to find one that supports BSD flags - ;; - esac - ;; - esac - fi - done - IFS=$lt_save_ifs - done - : ${lt_cv_path_NM=no} -fi]) -if test no != "$lt_cv_path_NM"; then - NM=$lt_cv_path_NM -else - # Didn't find any BSD compatible name lister, look for dumpbin. - if test -n "$DUMPBIN"; then : - # Let the user override the test. - else - AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) - case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in - *COFF*) - DUMPBIN="$DUMPBIN -symbols -headers" - ;; - *) - DUMPBIN=: - ;; - esac - fi - AC_SUBST([DUMPBIN]) - if test : != "$DUMPBIN"; then - NM=$DUMPBIN - fi -fi -test -z "$NM" && NM=nm -AC_SUBST([NM]) -_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl - -AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], - [lt_cv_nm_interface="BSD nm" - echo "int some_variable = 0;" > conftest.$ac_ext - (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$ac_compile" 2>conftest.err) - cat conftest.err >&AS_MESSAGE_LOG_FD - (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) - (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) - cat conftest.err >&AS_MESSAGE_LOG_FD - (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) - cat conftest.out >&AS_MESSAGE_LOG_FD - if $GREP 'External.*some_variable' conftest.out > /dev/null; then - lt_cv_nm_interface="MS dumpbin" - fi - rm -f conftest*]) -])# LT_PATH_NM - -# Old names: -AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) -AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AM_PROG_NM], []) -dnl AC_DEFUN([AC_PROG_NM], []) - -# _LT_CHECK_SHAREDLIB_FROM_LINKLIB -# -------------------------------- -# how to determine the name of the shared library -# associated with a specific link library. -# -- PORTME fill in with the dynamic library characteristics -m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], -[m4_require([_LT_DECL_EGREP]) -m4_require([_LT_DECL_OBJDUMP]) -m4_require([_LT_DECL_DLLTOOL]) -AC_CACHE_CHECK([how to associate runtime and link libraries], -lt_cv_sharedlib_from_linklib_cmd, -[lt_cv_sharedlib_from_linklib_cmd='unknown' - -case $host_os in -cygwin* | mingw* | pw32* | cegcc*) - # two different shell functions defined in ltmain.sh; - # decide which one to use based on capabilities of $DLLTOOL - case `$DLLTOOL --help 2>&1` in - *--identify-strict*) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib - ;; - *) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback - ;; - esac - ;; -*) - # fallback: assume linklib IS sharedlib - lt_cv_sharedlib_from_linklib_cmd=$ECHO - ;; -esac -]) -sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd -test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO - -_LT_DECL([], [sharedlib_from_linklib_cmd], [1], - [Command to associate shared and link libraries]) -])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB - - -# _LT_PATH_MANIFEST_TOOL -# ---------------------- -# locate the manifest tool -m4_defun([_LT_PATH_MANIFEST_TOOL], -[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) -test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt -AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], - [lt_cv_path_mainfest_tool=no - echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD - $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out - cat conftest.err >&AS_MESSAGE_LOG_FD - if $GREP 'Manifest Tool' conftest.out > /dev/null; then - lt_cv_path_mainfest_tool=yes - fi - rm -f conftest*]) -if test yes != "$lt_cv_path_mainfest_tool"; then - MANIFEST_TOOL=: -fi -_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl -])# _LT_PATH_MANIFEST_TOOL - - -# _LT_DLL_DEF_P([FILE]) -# --------------------- -# True iff FILE is a Windows DLL '.def' file. -# Keep in sync with func_dll_def_p in the libtool script -AC_DEFUN([_LT_DLL_DEF_P], -[dnl - test DEF = "`$SED -n dnl - -e '\''s/^[[ ]]*//'\'' dnl Strip leading whitespace - -e '\''/^\(;.*\)*$/d'\'' dnl Delete empty lines and comments - -e '\''s/^\(EXPORTS\|LIBRARY\)\([[ ]].*\)*$/DEF/p'\'' dnl - -e q dnl Only consider the first "real" line - $1`" dnl -])# _LT_DLL_DEF_P - - -# LT_LIB_M -# -------- -# check for math library -AC_DEFUN([LT_LIB_M], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -LIBM= -case $host in -*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) - # These system don't have libm, or don't need it - ;; -*-ncr-sysv4.3*) - AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM=-lmw) - AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") - ;; -*) - AC_CHECK_LIB(m, cos, LIBM=-lm) - ;; -esac -AC_SUBST([LIBM]) -])# LT_LIB_M - -# Old name: -AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_CHECK_LIBM], []) - - -# _LT_COMPILER_NO_RTTI([TAGNAME]) -# ------------------------------- -m4_defun([_LT_COMPILER_NO_RTTI], -[m4_require([_LT_TAG_COMPILER])dnl - -_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= - -if test yes = "$GCC"; then - case $cc_basename in - nvcc*) - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; - *) - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; - esac - - _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], - lt_cv_prog_compiler_rtti_exceptions, - [-fno-rtti -fno-exceptions], [], - [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) -fi -_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], - [Compiler flag to turn off builtin functions]) -])# _LT_COMPILER_NO_RTTI - - -# _LT_CMD_GLOBAL_SYMBOLS -# ---------------------- -m4_defun([_LT_CMD_GLOBAL_SYMBOLS], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([AC_PROG_AWK])dnl -AC_REQUIRE([LT_PATH_NM])dnl -AC_REQUIRE([LT_PATH_LD])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_TAG_COMPILER])dnl - -# Check for command to grab the raw symbol name followed by C symbol from nm. -AC_MSG_CHECKING([command to parse $NM output from $compiler object]) -AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], -[ -# These are sane defaults that work on at least a few old systems. -# [They come from Ultrix. What could be older than Ultrix?!! ;)] - -# Character class describing NM global symbol codes. -symcode='[[BCDEGRST]]' - -# Regexp to match symbols that can be accessed directly from C. -sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' - -# Define system-specific variables. -case $host_os in -aix*) - symcode='[[BCDT]]' - ;; -cygwin* | mingw* | pw32* | cegcc*) - symcode='[[ABCDGISTW]]' - ;; -hpux*) - if test ia64 = "$host_cpu"; then - symcode='[[ABCDEGRST]]' - fi - ;; -irix* | nonstopux*) - symcode='[[BCDEGRST]]' - ;; -osf*) - symcode='[[BCDEGQRST]]' - ;; -solaris*) - symcode='[[BDRT]]' - ;; -sco3.2v5*) - symcode='[[DT]]' - ;; -sysv4.2uw2*) - symcode='[[DT]]' - ;; -sysv5* | sco5v6* | unixware* | OpenUNIX*) - symcode='[[ABDT]]' - ;; -sysv4) - symcode='[[DFNSTU]]' - ;; -esac - -# If we're using GNU nm, then use its standard symbol codes. -case `$NM -V 2>&1` in -*GNU* | *'with BFD'*) - symcode='[[ABCDGIRSTW]]' ;; -esac - -if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Gets list of data symbols to import. - lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" - # Adjust the below global symbol transforms to fixup imported variables. - lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" - lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" - lt_c_name_lib_hook="\ - -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ - -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" -else - # Disable hooks by default. - lt_cv_sys_global_symbol_to_import= - lt_cdecl_hook= - lt_c_name_hook= - lt_c_name_lib_hook= -fi - -# Transform an extracted symbol line into a proper C declaration. -# Some systems (esp. on ia64) link data and code symbols differently, -# so use this general approach. -lt_cv_sys_global_symbol_to_cdecl="sed -n"\ -$lt_cdecl_hook\ -" -e 's/^T .* \(.*\)$/extern int \1();/p'"\ -" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" - -# Transform an extracted symbol line into symbol name and symbol address -lt_cv_sys_global_symbol_to_c_name_address="sed -n"\ -$lt_c_name_hook\ -" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ -" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" - -# Transform an extracted symbol line into symbol name with lib prefix and -# symbol address. -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ -$lt_c_name_lib_hook\ -" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ -" -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ -" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" - -# Handle CRLF in mingw tool chain -opt_cr= -case $build_os in -mingw*) - opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp - ;; -esac - -# Try without a prefix underscore, then with it. -for ac_symprfx in "" "_"; do - - # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. - symxfrm="\\1 $ac_symprfx\\2 \\2" - - # Write the raw and C identifiers. - if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Fake it for dumpbin and say T for any non-static function, - # D for any global variable and I for any imported variable. - # Also find C++ and __fastcall symbols from MSVC++, - # which start with @ or ?. - lt_cv_sys_global_symbol_pipe="$AWK ['"\ -" {last_section=section; section=\$ 3};"\ -" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ -" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ -" /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ -" /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ -" /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ -" \$ 0!~/External *\|/{next};"\ -" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ -" {if(hide[section]) next};"\ -" {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ -" {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ -" s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ -" s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ -" ' prfx=^$ac_symprfx]" - else - lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" - fi - lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" - - # Check to see that the pipe works correctly. - pipe_works=no - - rm -f conftest* - cat > conftest.$ac_ext <<_LT_EOF -#ifdef __cplusplus -extern "C" { -#endif -char nm_test_var; -void nm_test_func(void); -void nm_test_func(void){} -#ifdef __cplusplus -} -#endif -int main(){nm_test_var='a';nm_test_func();return(0);} -_LT_EOF - - if AC_TRY_EVAL(ac_compile); then - # Now try to grab the symbols. - nlist=conftest.nm - if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then - # Try sorting and uniquifying the output. - if sort "$nlist" | uniq > "$nlist"T; then - mv -f "$nlist"T "$nlist" - else - rm -f "$nlist"T - fi - - # Make sure that we snagged all the symbols we need. - if $GREP ' nm_test_var$' "$nlist" >/dev/null; then - if $GREP ' nm_test_func$' "$nlist" >/dev/null; then - cat <<_LT_EOF > conftest.$ac_ext -/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE -/* DATA imports from DLLs on WIN32 can't be const, because runtime - relocations are performed -- see ld's documentation on pseudo-relocs. */ -# define LT@&t@_DLSYM_CONST -#elif defined __osf__ -/* This system does not cope well with relocations in const data. */ -# define LT@&t@_DLSYM_CONST -#else -# define LT@&t@_DLSYM_CONST const -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -_LT_EOF - # Now generate the symbol file. - eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' - - cat <<_LT_EOF >> conftest.$ac_ext - -/* The mapping between symbol names and symbols. */ -LT@&t@_DLSYM_CONST struct { - const char *name; - void *address; -} -lt__PROGRAM__LTX_preloaded_symbols[[]] = -{ - { "@PROGRAM@", (void *) 0 }, -_LT_EOF - $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext - cat <<\_LT_EOF >> conftest.$ac_ext - {0, (void *) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt__PROGRAM__LTX_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif -_LT_EOF - # Now try linking the two files. - mv conftest.$ac_objext conftstm.$ac_objext - lt_globsym_save_LIBS=$LIBS - lt_globsym_save_CFLAGS=$CFLAGS - LIBS=conftstm.$ac_objext - CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" - if AC_TRY_EVAL(ac_link) && test -s conftest$ac_exeext; then - pipe_works=yes - fi - LIBS=$lt_globsym_save_LIBS - CFLAGS=$lt_globsym_save_CFLAGS - else - echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD - fi - else - echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD - fi - else - echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD - fi - else - echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD - cat conftest.$ac_ext >&5 - fi - rm -rf conftest* conftst* - - # Do not use the global_symbol_pipe unless it works. - if test yes = "$pipe_works"; then - break - else - lt_cv_sys_global_symbol_pipe= - fi -done -]) -if test -z "$lt_cv_sys_global_symbol_pipe"; then - lt_cv_sys_global_symbol_to_cdecl= -fi -if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then - AC_MSG_RESULT(failed) -else - AC_MSG_RESULT(ok) -fi - -# Response file support. -if test "$lt_cv_nm_interface" = "MS dumpbin"; then - nm_file_list_spec='@' -elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then - nm_file_list_spec='@' -fi - -_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], - [Take the output of nm and produce a listing of raw symbols and C names]) -_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], - [Transform the output of nm in a proper C declaration]) -_LT_DECL([global_symbol_to_import], [lt_cv_sys_global_symbol_to_import], [1], - [Transform the output of nm into a list of symbols to manually relocate]) -_LT_DECL([global_symbol_to_c_name_address], - [lt_cv_sys_global_symbol_to_c_name_address], [1], - [Transform the output of nm in a C name address pair]) -_LT_DECL([global_symbol_to_c_name_address_lib_prefix], - [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], - [Transform the output of nm in a C name address pair when lib prefix is needed]) -_LT_DECL([nm_interface], [lt_cv_nm_interface], [1], - [The name lister interface]) -_LT_DECL([], [nm_file_list_spec], [1], - [Specify filename containing input files for $NM]) -]) # _LT_CMD_GLOBAL_SYMBOLS - - -# _LT_COMPILER_PIC([TAGNAME]) -# --------------------------- -m4_defun([_LT_COMPILER_PIC], -[m4_require([_LT_TAG_COMPILER])dnl -_LT_TAGVAR(lt_prog_compiler_wl, $1)= -_LT_TAGVAR(lt_prog_compiler_pic, $1)= -_LT_TAGVAR(lt_prog_compiler_static, $1)= - -m4_if([$1], [CXX], [ - # C++ specific cases for pic, static, wl, etc. - if test yes = "$GXX"; then - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test ia64 = "$host_cpu"; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the '-m68020' flag to GCC prevents building anything better, - # like '-m68040'. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - mingw* | cygwin* | os2* | pw32* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - case $host_os in - os2*) - _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' - ;; - esac - ;; - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' - ;; - *djgpp*) - # DJGPP does not support shared libraries at all - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - ;; - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - _LT_TAGVAR(lt_prog_compiler_static, $1)= - ;; - interix[[3-9]]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - sysv4*MP*) - if test -d /usr/nec; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic - fi - ;; - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - else - case $host_os in - aix[[4-9]]*) - # All AIX code is PIC. - if test ia64 = "$host_cpu"; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - else - _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' - fi - ;; - chorus*) - case $cc_basename in - cxch68*) - # Green Hills C++ Compiler - # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" - ;; - esac - ;; - mingw* | cygwin* | os2* | pw32* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - ;; - dgux*) - case $cc_basename in - ec++*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - ;; - ghcx*) - # Green Hills C++ Compiler - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - *) - ;; - esac - ;; - freebsd* | dragonfly*) - # FreeBSD uses GNU C++ - ;; - hpux9* | hpux10* | hpux11*) - case $cc_basename in - CC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' - if test ia64 != "$host_cpu"; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - fi - ;; - aCC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - ;; - esac - ;; - *) - ;; - esac - ;; - interix*) - # This is c89, which is MS Visual C++ (no shared libs) - # Anyone wants to do a port? - ;; - irix5* | irix6* | nonstopux*) - case $cc_basename in - CC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - # CC pic flag -KPIC is the default. - ;; - *) - ;; - esac - ;; - linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - case $cc_basename in - KCC*) - # KAI C++ Compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - ecpc* ) - # old Intel C++ for x86_64, which still supported -KPIC. - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - icpc* ) - # Intel C++, used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - cxx*) - # Compaq C++ - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) - # IBM XL 8.0, 9.0 on PPC and BlueGene - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - ;; - esac - ;; - esac - ;; - lynxos*) - ;; - m88k*) - ;; - mvs*) - case $cc_basename in - cxx*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' - ;; - *) - ;; - esac - ;; - netbsd*) - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' - ;; - RCC*) - # Rational C++ 2.4.1 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - cxx*) - # Digital/Compaq C++ - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - *) - ;; - esac - ;; - psos*) - ;; - solaris*) - case $cc_basename in - CC* | sunCC*) - # Sun C++ 4.2, 5.x and Centerline C++ - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - ;; - gcx*) - # Green Hills C++ Compiler - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - ;; - *) - ;; - esac - ;; - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - lcc*) - # Lucid - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - *) - ;; - esac - ;; - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - case $cc_basename in - CC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - esac - ;; - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - ;; - *) - ;; - esac - ;; - vxworks*) - ;; - *) - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - esac - fi -], -[ - if test yes = "$GCC"; then - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test ia64 = "$host_cpu"; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the '-m68020' flag to GCC prevents building anything better, - # like '-m68040'. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - case $host_os in - os2*) - _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' - ;; - esac - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' - ;; - - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - _LT_TAGVAR(lt_prog_compiler_static, $1)= - ;; - - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - # +Z the default - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - ;; - - interix[[3-9]]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - - msdosdjgpp*) - # Just because we use GCC doesn't mean we suddenly get shared libraries - # on systems that don't support them. - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - enable_shared=no - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic - fi - ;; - - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - - case $cc_basename in - nvcc*) # Cuda Compiler Driver 2.2 - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' - if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)" - fi - ;; - esac - else - # PORTME Check for flag to pass linker flags through the system compiler. - case $host_os in - aix*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - if test ia64 = "$host_cpu"; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - else - _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' - fi - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' - case $cc_basename in - nagfor*) - # NAG Fortran compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - esac - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - case $host_os in - os2*) - _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' - ;; - esac - ;; - - hpux9* | hpux10* | hpux11*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - ;; - esac - # Is there a better lt_prog_compiler_static that works with the bundled CC? - _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' - ;; - - irix5* | irix6* | nonstopux*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # PIC (with -KPIC) is the default. - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - case $cc_basename in - # old Intel for x86_64, which still supported -KPIC. - ecc*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - # icc used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - icc* | ifort*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - # Lahey Fortran 8.1. - lf95*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' - _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' - ;; - nagfor*) - # NAG Fortran compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - tcc*) - # Fabrice Bellard et al's Tiny C Compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group compilers (*not* the Pentium gcc compiler, - # which looks to be a dead project) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - ccc*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # All Alpha code is PIC. - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - xl* | bgxl* | bgf* | mpixl*) - # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) - # Sun Fortran 8.3 passes all unrecognized flags to the linker - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='' - ;; - *Sun\ F* | *Sun*Fortran*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - ;; - *Sun\ C*) - # Sun C 5.9 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - ;; - *Intel*\ [[CF]]*Compiler*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - *Portland\ Group*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - esac - ;; - esac - ;; - - newsos6) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - - osf3* | osf4* | osf5*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # All OSF/1 code is PIC. - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - rdos*) - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - solaris*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - case $cc_basename in - f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; - *) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; - esac - ;; - - sunos4*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - sysv4 | sysv4.2uw2* | sysv4.3*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - unicos*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - - uts4*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - *) - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - esac - fi -]) -case $host_os in - # For platforms that do not support PIC, -DPIC is meaningless: - *djgpp*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" - ;; -esac - -AC_CACHE_CHECK([for $compiler option to produce PIC], - [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], - [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) -_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) - -# -# Check to make sure the PIC flag actually works. -# -if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then - _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], - [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], - [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], - [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in - "" | " "*) ;; - *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; - esac], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) -fi -_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], - [Additional compiler flags for building library objects]) - -_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], - [How to pass a linker flag through the compiler]) -# -# Check to make sure the static flag actually works. -# -wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" -_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], - _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), - $lt_tmp_static_flag, - [], - [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) -_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], - [Compiler flag to prevent dynamic linking]) -])# _LT_COMPILER_PIC - - -# _LT_LINKER_SHLIBS([TAGNAME]) -# ---------------------------- -# See if the linker supports building shared libraries. -m4_defun([_LT_LINKER_SHLIBS], -[AC_REQUIRE([LT_PATH_LD])dnl -AC_REQUIRE([LT_PATH_NM])dnl -m4_require([_LT_PATH_MANIFEST_TOOL])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl -m4_require([_LT_TAG_COMPILER])dnl -AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) -m4_if([$1], [CXX], [ - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] - case $host_os in - aix[[4-9]]*) - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to GNU nm, but means don't demangle to AIX nm. - # Without the "-l" option, or with the "-B" option, AIX nm treats - # weak defined symbols like other global defined symbols, whereas - # GNU nm marks them as "W". - # While the 'weak' keyword is ignored in the Export File, we need - # it in the Import File for the 'aix-soname' feature, so we have - # to replace the "-B" option with "-P" for AIX nm. - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' - else - _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' - fi - ;; - pw32*) - _LT_TAGVAR(export_symbols_cmds, $1)=$ltdll_cmds - ;; - cygwin* | mingw* | cegcc*) - case $cc_basename in - cl*) - _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' - ;; - *) - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' - _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] - ;; - esac - ;; - *) - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - ;; - esac -], [ - runpath_var= - _LT_TAGVAR(allow_undefined_flag, $1)= - _LT_TAGVAR(always_export_symbols, $1)=no - _LT_TAGVAR(archive_cmds, $1)= - _LT_TAGVAR(archive_expsym_cmds, $1)= - _LT_TAGVAR(compiler_needs_object, $1)=no - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - _LT_TAGVAR(export_dynamic_flag_spec, $1)= - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - _LT_TAGVAR(hardcode_automatic, $1)=no - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_TAGVAR(hardcode_libdir_separator, $1)= - _LT_TAGVAR(hardcode_minus_L, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - _LT_TAGVAR(inherit_rpath, $1)=no - _LT_TAGVAR(link_all_deplibs, $1)=unknown - _LT_TAGVAR(module_cmds, $1)= - _LT_TAGVAR(module_expsym_cmds, $1)= - _LT_TAGVAR(old_archive_from_new_cmds, $1)= - _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= - _LT_TAGVAR(thread_safe_flag_spec, $1)= - _LT_TAGVAR(whole_archive_flag_spec, $1)= - # include_expsyms should be a list of space-separated symbols to be *always* - # included in the symbol list - _LT_TAGVAR(include_expsyms, $1)= - # exclude_expsyms can be an extended regexp of symbols to exclude - # it will be wrapped by ' (' and ')$', so one must not match beginning or - # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', - # as well as any symbol that contains 'd'. - _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] - # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out - # platforms (ab)use it in PIC code, but their linkers get confused if - # the symbol is explicitly referenced. Since portable code cannot - # rely on this symbol name, it's probably fine to never include it in - # preloaded symbol tables. - # Exclude shared library initialization/finalization symbols. -dnl Note also adjust exclude_expsyms for C++ above. - extract_expsyms_cmds= - - case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - # FIXME: the MSVC++ port hasn't been tested in a loooong time - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - if test yes != "$GCC"; then - with_gnu_ld=no - fi - ;; - interix*) - # we just hope/assume this is gcc and not c89 (= MSVC++) - with_gnu_ld=yes - ;; - openbsd* | bitrig*) - with_gnu_ld=no - ;; - esac - - _LT_TAGVAR(ld_shlibs, $1)=yes - - # On some targets, GNU ld is compatible enough with the native linker - # that we're better off using the native interface for both. - lt_use_gnu_ld_interface=no - if test yes = "$with_gnu_ld"; then - case $host_os in - aix*) - # The AIX port of GNU ld has always aspired to compatibility - # with the native linker. However, as the warning in the GNU ld - # block says, versions before 2.19.5* couldn't really create working - # shared libraries, regardless of the interface used. - case `$LD -v 2>&1` in - *\ \(GNU\ Binutils\)\ 2.19.5*) ;; - *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; - *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - fi - - if test yes = "$lt_use_gnu_ld_interface"; then - # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='$wl' - - # Set some defaults for GNU ld with shared library support. These - # are reset later if shared libraries are not supported. Putting them - # here allows them to be overridden if necessary. - runpath_var=LD_RUN_PATH - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then - _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)= - fi - supports_anon_versioning=no - case `$LD -v | $SED -e 's/([^)]\+)\s\+//' 2>&1` in - *GNU\ gold*) supports_anon_versioning=yes ;; - *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 - *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... - *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... - *\ 2.11.*) ;; # other 2.11 versions - *) supports_anon_versioning=yes ;; - esac - - # See if GNU ld supports shared libraries. - case $host_os in - aix[[3-9]]*) - # On AIX/PPC, the GNU linker is very broken - if test ia64 != "$host_cpu"; then - _LT_TAGVAR(ld_shlibs, $1)=no - cat <<_LT_EOF 1>&2 - -*** Warning: the GNU linker, at least up to release 2.19, is reported -*** to be unable to reliably create shared libraries on AIX. -*** Therefore, libtool is disabling shared libraries support. If you -*** really care for shared libraries, you may want to install binutils -*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. -*** You will then need to restart the configuration process. - -_LT_EOF - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='' - ;; - m68k) - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, - # as there is no search path for DLLs. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=no - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' - _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file, use it as - # is; otherwise, prepend EXPORTS... - _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - haiku*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - os2*) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - shrext_cmds=.dll - _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - prefix_cmds="$SED"~ - if test EXPORTS = "`$SED 1q $export_symbols`"; then - prefix_cmds="$prefix_cmds -e 1d"; - fi~ - prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ - cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - ;; - - interix[[3-9]]*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - - gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) - tmp_diet=no - if test linux-dietlibc = "$host_os"; then - case $cc_basename in - diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) - esac - fi - if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ - && test no = "$tmp_diet" - then - tmp_addflag=' $pic_flag' - tmp_sharedflag='-shared' - case $cc_basename,$host_cpu in - pgcc*) # Portland Group C compiler - _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' - tmp_addflag=' $pic_flag' - ;; - pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group f77 and f90 compilers - _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' - tmp_addflag=' $pic_flag -Mnomain' ;; - ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 - tmp_addflag=' -i_dynamic' ;; - efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 - tmp_addflag=' -i_dynamic -nofor_main' ;; - ifc* | ifort*) # Intel Fortran compiler - tmp_addflag=' -nofor_main' ;; - lf95*) # Lahey Fortran 8.1 - _LT_TAGVAR(whole_archive_flag_spec, $1)= - tmp_sharedflag='--shared' ;; - nagfor*) # NAGFOR 5.3 - tmp_sharedflag='-Wl,-shared' ;; - xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) - tmp_sharedflag='-qmkshrobj' - tmp_addflag= ;; - nvcc*) # Cuda Compiler Driver 2.2 - _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' - _LT_TAGVAR(compiler_needs_object, $1)=yes - ;; - esac - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) # Sun C 5.9 - _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' - _LT_TAGVAR(compiler_needs_object, $1)=yes - tmp_sharedflag='-G' ;; - *Sun\ F*) # Sun Fortran 8.3 - tmp_sharedflag='-G' ;; - esac - _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - - if test yes = "$supports_anon_versioning"; then - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' - fi - - case $cc_basename in - tcc*) - _LT_TAGVAR(export_dynamic_flag_spec, $1)='-rdynamic' - ;; - xlf* | bgf* | bgxlf* | mpixlf*) - # IBM XL Fortran 10.1 on PPC cannot create shared libs itself - _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' - _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' - if test yes = "$supports_anon_versioning"; then - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' - fi - ;; - esac - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' - wlarc= - else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - fi - ;; - - solaris*) - if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then - _LT_TAGVAR(ld_shlibs, $1)=no - cat <<_LT_EOF 1>&2 - -*** Warning: The releases 2.8.* of the GNU linker cannot reliably -*** create shared libraries on Solaris systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.9.1 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) - case `$LD -v 2>&1` in - *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) - _LT_TAGVAR(ld_shlibs, $1)=no - cat <<_LT_EOF 1>&2 - -*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot -*** reliably create shared libraries on SCO systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.16.91.0.3 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - ;; - *) - # For security reasons, it is highly recommended that you always - # use absolute paths for naming shared libraries, and exclude the - # DT_RUNPATH tag from executables and libraries. But doing so - # requires that you compile everything twice, which is a pain. - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - sunos4*) - _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' - wlarc= - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - - if test no = "$_LT_TAGVAR(ld_shlibs, $1)"; then - runpath_var= - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_TAGVAR(export_dynamic_flag_spec, $1)= - _LT_TAGVAR(whole_archive_flag_spec, $1)= - fi - else - # PORTME fill in a description of your system's linker (not GNU ld) - case $host_os in - aix3*) - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=yes - _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' - # Note: this linker hardcodes the directories in LIBPATH if there - # are no directories specified by -L. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - _LT_TAGVAR(hardcode_direct, $1)=unsupported - fi - ;; - - aix[[4-9]]*) - if test ia64 = "$host_cpu"; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag= - else - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to GNU nm, but means don't demangle to AIX nm. - # Without the "-l" option, or with the "-B" option, AIX nm treats - # weak defined symbols like other global defined symbols, whereas - # GNU nm marks them as "W". - # While the 'weak' keyword is ignored in the Export File, we need - # it in the Import File for the 'aix-soname' feature, so we have - # to replace the "-B" option with "-P" for AIX nm. - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' - else - _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' - fi - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # have runtime linking enabled, and use it for executables. - # For shared libraries, we enable/disable runtime linking - # depending on the kind of the shared library created - - # when "with_aix_soname,aix_use_runtimelinking" is: - # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables - # "aix,yes" lib.so shared, rtl:yes, for executables - # lib.a static archive - # "both,no" lib.so.V(shr.o) shared, rtl:yes - # lib.a(lib.so.V) shared, rtl:no, for executables - # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables - # lib.a(lib.so.V) shared, rtl:no - # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables - # lib.a static archive - case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) - for ld_flag in $LDFLAGS; do - if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then - aix_use_runtimelinking=yes - break - fi - done - if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then - # With aix-soname=svr4, we create the lib.so.V shared archives only, - # so we don't have lib.a shared libs to link our executables. - # We have to force runtime linking in this case. - aix_use_runtimelinking=yes - LDFLAGS="$LDFLAGS -Wl,-brtl" - fi - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - _LT_TAGVAR(archive_cmds, $1)='' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='$wl-f,' - case $with_aix_soname,$aix_use_runtimelinking in - aix,*) ;; # traditional, no import file - svr4,* | *,yes) # use import file - # The Import File defines what to hardcode. - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=no - ;; - esac - - if test yes = "$GCC"; then - case $host_os in aix4.[[012]]|aix4.[[012]].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`$CC -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - _LT_TAGVAR(hardcode_direct, $1)=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)= - fi - ;; - esac - shared_flag='-shared' - if test yes = "$aix_use_runtimelinking"; then - shared_flag="$shared_flag "'$wl-G' - fi - # Need to ensure runtime linking is disabled for the traditional - # shared library, or the linker may eventually find shared libraries - # /with/ Import File - we do not want to mix them. - shared_flag_aix='-shared' - shared_flag_svr4='-shared $wl-G' - else - # not using gcc - if test ia64 = "$host_cpu"; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test yes = "$aix_use_runtimelinking"; then - shared_flag='$wl-G' - else - shared_flag='$wl-bM:SRE' - fi - shared_flag_aix='$wl-bM:SRE' - shared_flag_svr4='$wl-G' - fi - fi - - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to export. - _LT_TAGVAR(always_export_symbols, $1)=yes - if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(allow_undefined_flag, $1)='-berok' - # Determine the default libpath from the value encoded in an - # empty executable. - _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag - else - if test ia64 = "$host_cpu"; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' - _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' - _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' - if test yes = "$with_gnu_ld"; then - # We only use this code for GNU lds that support --whole-archive. - _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' - # -brtl affects multiple linker settings, -berok does not and is overridden later - compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' - if test svr4 != "$with_aix_soname"; then - # This is similar to how AIX traditionally builds its shared libraries. - _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' - fi - if test aix != "$with_aix_soname"; then - _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' - else - # used by -dlpreopen to get the symbols - _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' - fi - _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' - fi - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='' - ;; - m68k) - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - ;; - - bsdi[[45]]*) - _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - case $cc_basename in - cl*) - # Native MSVC - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='@' - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=.dll - # FIXME: Setting linknames here is a bad hack. - _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' - _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then - cp "$export_symbols" "$output_objdir/$soname.def"; - echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; - else - $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' - # The linker will not automatically build a static lib if we build a DLL. - # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' - # Don't use ranlib - _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' - _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile=$lt_outputfile.exe - lt_tool_outputfile=$lt_tool_outputfile.exe - ;; - esac~ - if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' - ;; - *) - # Assume MSVC wrapper - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=.dll - # FIXME: Setting linknames here is a bad hack. - _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' - # The linker will automatically build a .lib file if we build a DLL. - _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' - # FIXME: Should let the user specify the lib program. - _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - ;; - esac - ;; - - darwin* | rhapsody*) - _LT_DARWIN_LINKER_FEATURES($1) - ;; - - dgux*) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor - # support. Future versions do this automatically, but an explicit c++rt0.o - # does not break anything, and helps significantly (at the cost of a little - # extra space). - freebsd2.2*) - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2.*) - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd* | dragonfly*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - hpux9*) - if test yes = "$GCC"; then - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' - else - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(hardcode_direct, $1)=yes - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' - ;; - - hpux10*) - if test yes,no = "$GCC,$with_gnu_ld"; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' - fi - if test no = "$with_gnu_ld"; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - fi - ;; - - hpux11*) - if test yes,no = "$GCC,$with_gnu_ld"; then - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - else - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - m4_if($1, [], [ - # Older versions of the 11.00 compiler do not understand -b yet - # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) - _LT_LINKER_OPTION([if $CC understands -b], - _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], - [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], - [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], - [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) - ;; - esac - fi - if test no = "$with_gnu_ld"; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - case $host_cpu in - hppa*64*|ia64*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - *) - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - fi - ;; - - irix5* | irix6* | nonstopux*) - if test yes = "$GCC"; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' - # Try to use the -exported_symbol ld option, if it does not - # work, assume that -exports_file does not work either and - # implicitly export all symbols. - # This should be the same for all languages, so no per-tag cache variable. - AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], - [lt_cv_irix_exported_symbol], - [save_LDFLAGS=$LDFLAGS - LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" - AC_LINK_IFELSE( - [AC_LANG_SOURCE( - [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], - [C++], [[int foo (void) { return 0; }]], - [Fortran 77], [[ - subroutine foo - end]], - [Fortran], [[ - subroutine foo - end]])])], - [lt_cv_irix_exported_symbol=yes], - [lt_cv_irix_exported_symbol=no]) - LDFLAGS=$save_LDFLAGS]) - if test yes = "$lt_cv_irix_exported_symbol"; then - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' - fi - else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)='no' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(inherit_rpath, $1)=yes - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - linux*) - case $cc_basename in - tcc*) - # Fabrice Bellard et al's Tiny C Compiler - _LT_TAGVAR(ld_shlibs, $1)=yes - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out - else - _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - newsos6) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *nto* | *qnx*) - ;; - - openbsd* | bitrig*) - if test -f /usr/libexec/ld.so; then - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' - else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' - fi - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - os2*) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - shrext_cmds=.dll - _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - prefix_cmds="$SED"~ - if test EXPORTS = "`$SED 1q $export_symbols`"; then - prefix_cmds="$prefix_cmds -e 1d"; - fi~ - prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ - cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - ;; - - osf3*) - if test yes = "$GCC"; then - _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' - else - _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)='no' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - - osf4* | osf5*) # as osf3* with the addition of -msym flag - if test yes = "$GCC"; then - _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' - else - _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ - $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' - - # Both c and cxx compiler support -rpath directly - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)='no' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - - solaris*) - _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' - if test yes = "$GCC"; then - wlarc='$wl' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - else - case `$CC -V 2>&1` in - *"Compilers 5.0"*) - wlarc='' - _LT_TAGVAR(archive_cmds, $1)='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' - ;; - *) - wlarc='$wl' - _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - ;; - esac - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands '-z linker_flag'. GCC discards it without '$wl', - # but is careful enough not to reorder. - # Supported since Solaris 2.6 (maybe 2.5.1?) - if test yes = "$GCC"; then - _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' - fi - ;; - esac - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - sunos4*) - if test sequent = "$host_vendor"; then - # Use $CC to link under sequent, because it throws in some extra .o - # files that make .init and .fini sections work. - _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - sysv4) - case $host_vendor in - sni) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? - ;; - siemens) - ## LD is ld it makes a PLAMLIB - ## CC just makes a GrossModule. - _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' - _LT_TAGVAR(hardcode_direct, $1)=no - ;; - motorola) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie - ;; - esac - runpath_var='LD_RUN_PATH' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - sysv4.3*) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - _LT_TAGVAR(ld_shlibs, $1)=yes - fi - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) - _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var='LD_RUN_PATH' - - if test yes = "$GCC"; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We CANNOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' - _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' - runpath_var='LD_RUN_PATH' - - if test yes = "$GCC"; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - uts4*) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *) - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - - if test sni = "$host_vendor"; then - case $host in - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Blargedynsym' - ;; - esac - fi - fi -]) -AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) -test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no - -_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld - -_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl -_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl -_LT_DECL([], [extract_expsyms_cmds], [2], - [The commands to extract the exported symbol list from a shared archive]) - -# -# Do we need to explicitly link libc? -# -case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in -x|xyes) - # Assume -lc should be added - _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - - if test yes,yes = "$GCC,$enable_shared"; then - case $_LT_TAGVAR(archive_cmds, $1) in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - AC_CACHE_CHECK([whether -lc should be explicitly linked in], - [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), - [$RM conftest* - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - if AC_TRY_EVAL(ac_compile) 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) - pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) - _LT_TAGVAR(allow_undefined_flag, $1)= - if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) - then - lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no - else - lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes - fi - _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $RM conftest* - ]) - _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) - ;; - esac - fi - ;; -esac - -_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], - [Whether or not to add -lc for building shared libraries]) -_LT_TAGDECL([allow_libtool_libs_with_static_runtimes], - [enable_shared_with_static_runtimes], [0], - [Whether or not to disallow shared libs when runtime libs are static]) -_LT_TAGDECL([], [export_dynamic_flag_spec], [1], - [Compiler flag to allow reflexive dlopens]) -_LT_TAGDECL([], [whole_archive_flag_spec], [1], - [Compiler flag to generate shared objects directly from archives]) -_LT_TAGDECL([], [compiler_needs_object], [1], - [Whether the compiler copes with passing no objects directly]) -_LT_TAGDECL([], [old_archive_from_new_cmds], [2], - [Create an old-style archive from a shared archive]) -_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], - [Create a temporary old-style archive to link instead of a shared archive]) -_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) -_LT_TAGDECL([], [archive_expsym_cmds], [2]) -_LT_TAGDECL([], [module_cmds], [2], - [Commands used to build a loadable module if different from building - a shared archive.]) -_LT_TAGDECL([], [module_expsym_cmds], [2]) -_LT_TAGDECL([], [with_gnu_ld], [1], - [Whether we are building with GNU ld or not]) -_LT_TAGDECL([], [allow_undefined_flag], [1], - [Flag that allows shared libraries with undefined symbols to be built]) -_LT_TAGDECL([], [no_undefined_flag], [1], - [Flag that enforces no undefined symbols]) -_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], - [Flag to hardcode $libdir into a binary during linking. - This must work even if $libdir does not exist]) -_LT_TAGDECL([], [hardcode_libdir_separator], [1], - [Whether we need a single "-rpath" flag with a separated argument]) -_LT_TAGDECL([], [hardcode_direct], [0], - [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes - DIR into the resulting binary]) -_LT_TAGDECL([], [hardcode_direct_absolute], [0], - [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes - DIR into the resulting binary and the resulting library dependency is - "absolute", i.e impossible to change by setting $shlibpath_var if the - library is relocated]) -_LT_TAGDECL([], [hardcode_minus_L], [0], - [Set to "yes" if using the -LDIR flag during linking hardcodes DIR - into the resulting binary]) -_LT_TAGDECL([], [hardcode_shlibpath_var], [0], - [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR - into the resulting binary]) -_LT_TAGDECL([], [hardcode_automatic], [0], - [Set to "yes" if building a shared library automatically hardcodes DIR - into the library and all subsequent libraries and executables linked - against it]) -_LT_TAGDECL([], [inherit_rpath], [0], - [Set to yes if linker adds runtime paths of dependent libraries - to runtime path list]) -_LT_TAGDECL([], [link_all_deplibs], [0], - [Whether libtool must link a program against all its dependency libraries]) -_LT_TAGDECL([], [always_export_symbols], [0], - [Set to "yes" if exported symbols are required]) -_LT_TAGDECL([], [export_symbols_cmds], [2], - [The commands to list exported symbols]) -_LT_TAGDECL([], [exclude_expsyms], [1], - [Symbols that should not be listed in the preloaded symbols]) -_LT_TAGDECL([], [include_expsyms], [1], - [Symbols that must always be exported]) -_LT_TAGDECL([], [prelink_cmds], [2], - [Commands necessary for linking programs (against libraries) with templates]) -_LT_TAGDECL([], [postlink_cmds], [2], - [Commands necessary for finishing linking programs]) -_LT_TAGDECL([], [file_list_spec], [1], - [Specify filename containing input files]) -dnl FIXME: Not yet implemented -dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], -dnl [Compiler flag to generate thread safe objects]) -])# _LT_LINKER_SHLIBS - - -# _LT_LANG_C_CONFIG([TAG]) -# ------------------------ -# Ensure that the configuration variables for a C compiler are suitably -# defined. These variables are subsequently used by _LT_CONFIG to write -# the compiler configuration to 'libtool'. -m4_defun([_LT_LANG_C_CONFIG], -[m4_require([_LT_DECL_EGREP])dnl -lt_save_CC=$CC -AC_LANG_PUSH(C) - -# Source file extension for C test sources. -ac_ext=c - -# Object file extension for compiled C test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="int some_variable = 0;" - -# Code to be used in simple link tests -lt_simple_link_test_code='int main(){return(0);}' - -_LT_TAG_COMPILER -# Save the default compiler, since it gets overwritten when the other -# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. -compiler_DEFAULT=$CC - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -## CAVEAT EMPTOR: -## There is no encapsulation within the following macros, do not change -## the running order or otherwise move them around unless you know exactly -## what you are doing... -if test -n "$compiler"; then - _LT_COMPILER_NO_RTTI($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - LT_SYS_DLOPEN_SELF - _LT_CMD_STRIPLIB - - # Report what library types will actually be built - AC_MSG_CHECKING([if libtool supports shared libraries]) - AC_MSG_RESULT([$can_build_shared]) - - AC_MSG_CHECKING([whether to build shared libraries]) - test no = "$can_build_shared" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test yes = "$enable_shared" && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - - aix[[4-9]]*) - if test ia64 != "$host_cpu"; then - case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in - yes,aix,yes) ;; # shared object as lib.so file only - yes,svr4,*) ;; # shared object as lib.so archive member only - yes,*) enable_static=no ;; # shared object in lib.a archive as well - esac - fi - ;; - esac - AC_MSG_RESULT([$enable_shared]) - - AC_MSG_CHECKING([whether to build static libraries]) - # Make sure either enable_shared or enable_static is yes. - test yes = "$enable_shared" || enable_static=yes - AC_MSG_RESULT([$enable_static]) - - _LT_CONFIG($1) -fi -AC_LANG_POP -CC=$lt_save_CC -])# _LT_LANG_C_CONFIG - - -# _LT_LANG_CXX_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for a C++ compiler are suitably -# defined. These variables are subsequently used by _LT_CONFIG to write -# the compiler configuration to 'libtool'. -m4_defun([_LT_LANG_CXX_CONFIG], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_PATH_MANIFEST_TOOL])dnl -if test -n "$CXX" && ( test no != "$CXX" && - ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) || - (test g++ != "$CXX"))); then - AC_PROG_CXXCPP -else - _lt_caught_CXX_error=yes -fi - -AC_LANG_PUSH(C++) -_LT_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_TAGVAR(allow_undefined_flag, $1)= -_LT_TAGVAR(always_export_symbols, $1)=no -_LT_TAGVAR(archive_expsym_cmds, $1)= -_LT_TAGVAR(compiler_needs_object, $1)=no -_LT_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_TAGVAR(hardcode_direct, $1)=no -_LT_TAGVAR(hardcode_direct_absolute, $1)=no -_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_separator, $1)= -_LT_TAGVAR(hardcode_minus_L, $1)=no -_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported -_LT_TAGVAR(hardcode_automatic, $1)=no -_LT_TAGVAR(inherit_rpath, $1)=no -_LT_TAGVAR(module_cmds, $1)= -_LT_TAGVAR(module_expsym_cmds, $1)= -_LT_TAGVAR(link_all_deplibs, $1)=unknown -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds -_LT_TAGVAR(no_undefined_flag, $1)= -_LT_TAGVAR(whole_archive_flag_spec, $1)= -_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - -# Source file extension for C++ test sources. -ac_ext=cpp - -# Object file extension for compiled C++ test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# No sense in running all these tests if we already determined that -# the CXX compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test yes != "$_lt_caught_CXX_error"; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="int some_variable = 0;" - - # Code to be used in simple link tests - lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' - - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - _LT_TAG_COMPILER - - # save warnings/boilerplate of simple test code - _LT_COMPILER_BOILERPLATE - _LT_LINKER_BOILERPLATE - - # Allow CC to be a program name with arguments. - lt_save_CC=$CC - lt_save_CFLAGS=$CFLAGS - lt_save_LD=$LD - lt_save_GCC=$GCC - GCC=$GXX - lt_save_with_gnu_ld=$with_gnu_ld - lt_save_path_LD=$lt_cv_path_LD - if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then - lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx - else - $as_unset lt_cv_prog_gnu_ld - fi - if test -n "${lt_cv_path_LDCXX+set}"; then - lt_cv_path_LD=$lt_cv_path_LDCXX - else - $as_unset lt_cv_path_LD - fi - test -z "${LDCXX+set}" || LD=$LDCXX - CC=${CXX-"c++"} - CFLAGS=$CXXFLAGS - compiler=$CC - _LT_TAGVAR(compiler, $1)=$CC - _LT_CC_BASENAME([$compiler]) - - if test -n "$compiler"; then - # We don't want -fno-exception when compiling C++ code, so set the - # no_builtin_flag separately - if test yes = "$GXX"; then - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' - else - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= - fi - - if test yes = "$GXX"; then - # Set up default GNU C++ configuration - - LT_PATH_LD - - # Check if GNU C++ uses GNU ld as the underlying linker, since the - # archiving commands below assume that GNU ld is being used. - if test yes = "$with_gnu_ld"; then - _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' - - # If archive_cmds runs LD, not CC, wlarc should be empty - # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to - # investigate it a little bit more. (MM) - wlarc='$wl' - - # ancient GNU ld didn't support --whole-archive et. al. - if eval "`$CC -print-prog-name=ld` --help 2>&1" | - $GREP 'no-whole-archive' > /dev/null; then - _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)= - fi - else - with_gnu_ld=no - wlarc= - - # A generic and very simple default shared library creation - # command for GNU C++ for the case where it uses the native - # linker, instead of GNU ld. If possible, this setting should - # overridden to take advantage of the native linker features on - # the platform it is being used on. - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - fi - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - - else - GXX=no - with_gnu_ld=no - wlarc= - fi - - # PORTME: fill in a description of your system's C++ link characteristics - AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) - _LT_TAGVAR(ld_shlibs, $1)=yes - case $host_os in - aix3*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - aix[[4-9]]*) - if test ia64 = "$host_cpu"; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag= - else - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # have runtime linking enabled, and use it for executables. - # For shared libraries, we enable/disable runtime linking - # depending on the kind of the shared library created - - # when "with_aix_soname,aix_use_runtimelinking" is: - # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables - # "aix,yes" lib.so shared, rtl:yes, for executables - # lib.a static archive - # "both,no" lib.so.V(shr.o) shared, rtl:yes - # lib.a(lib.so.V) shared, rtl:no, for executables - # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables - # lib.a(lib.so.V) shared, rtl:no - # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables - # lib.a static archive - case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) - for ld_flag in $LDFLAGS; do - case $ld_flag in - *-brtl*) - aix_use_runtimelinking=yes - break - ;; - esac - done - if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then - # With aix-soname=svr4, we create the lib.so.V shared archives only, - # so we don't have lib.a shared libs to link our executables. - # We have to force runtime linking in this case. - aix_use_runtimelinking=yes - LDFLAGS="$LDFLAGS -Wl,-brtl" - fi - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - _LT_TAGVAR(archive_cmds, $1)='' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='$wl-f,' - case $with_aix_soname,$aix_use_runtimelinking in - aix,*) ;; # no import file - svr4,* | *,yes) # use import file - # The Import File defines what to hardcode. - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=no - ;; - esac - - if test yes = "$GXX"; then - case $host_os in aix4.[[012]]|aix4.[[012]].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`$CC -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - _LT_TAGVAR(hardcode_direct, $1)=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)= - fi - esac - shared_flag='-shared' - if test yes = "$aix_use_runtimelinking"; then - shared_flag=$shared_flag' $wl-G' - fi - # Need to ensure runtime linking is disabled for the traditional - # shared library, or the linker may eventually find shared libraries - # /with/ Import File - we do not want to mix them. - shared_flag_aix='-shared' - shared_flag_svr4='-shared $wl-G' - else - # not using gcc - if test ia64 = "$host_cpu"; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test yes = "$aix_use_runtimelinking"; then - shared_flag='$wl-G' - else - shared_flag='$wl-bM:SRE' - fi - shared_flag_aix='$wl-bM:SRE' - shared_flag_svr4='$wl-G' - fi - fi - - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to - # export. - _LT_TAGVAR(always_export_symbols, $1)=yes - if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - # The "-G" linker flag allows undefined symbols. - _LT_TAGVAR(no_undefined_flag, $1)='-bernotok' - # Determine the default libpath from the value encoded in an empty - # executable. - _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" - - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag - else - if test ia64 = "$host_cpu"; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' - _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' - _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' - if test yes = "$with_gnu_ld"; then - # We only use this code for GNU lds that support --whole-archive. - _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' - # -brtl affects multiple linker settings, -berok does not and is overridden later - compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' - if test svr4 != "$with_aix_soname"; then - # This is similar to how AIX traditionally builds its shared - # libraries. Need -bnortl late, we may have -brtl in LDFLAGS. - _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' - fi - if test aix != "$with_aix_soname"; then - _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' - else - # used by -dlpreopen to get the symbols - _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' - fi - _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' - fi - fi - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - chorus*) - case $cc_basename in - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - cygwin* | mingw* | pw32* | cegcc*) - case $GXX,$cc_basename in - ,cl* | no,cl*) - # Native MSVC - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='@' - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=.dll - # FIXME: Setting linknames here is a bad hack. - _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' - _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then - cp "$export_symbols" "$output_objdir/$soname.def"; - echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; - else - $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' - # The linker will not automatically build a static lib if we build a DLL. - # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - # Don't use ranlib - _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' - _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile=$lt_outputfile.exe - lt_tool_outputfile=$lt_tool_outputfile.exe - ;; - esac~ - func_to_tool_file "$lt_outputfile"~ - if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' - ;; - *) - # g++ - # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, - # as there is no search path for DLLs. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=no - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file, use it as - # is; otherwise, prepend EXPORTS... - _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - darwin* | rhapsody*) - _LT_DARWIN_LINKER_FEATURES($1) - ;; - - os2*) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - shrext_cmds=.dll - _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - prefix_cmds="$SED"~ - if test EXPORTS = "`$SED 1q $export_symbols`"; then - prefix_cmds="$prefix_cmds -e 1d"; - fi~ - prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ - cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - ;; - - dgux*) - case $cc_basename in - ec++*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - ghcx*) - # Green Hills C++ Compiler - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - freebsd2.*) - # C++ shared libraries reported to be fairly broken before - # switch to ELF - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - freebsd-elf*) - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - ;; - - freebsd* | dragonfly*) - # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF - # conventions - _LT_TAGVAR(ld_shlibs, $1)=yes - ;; - - haiku*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - hpux9*) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, - # but as the default - # location of the library. - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - aCC*) - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test yes = "$GXX"; then - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' - else - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - hpux10*|hpux11*) - if test no = "$with_gnu_ld"; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - case $host_cpu in - hppa*64*|ia64*) - ;; - *) - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' - ;; - esac - fi - case $host_cpu in - hppa*64*|ia64*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - *) - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, - # but as the default - # location of the library. - ;; - esac - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - aCC*) - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test yes = "$GXX"; then - if test no = "$with_gnu_ld"; then - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - fi - else - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - interix[[3-9]]*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - irix5* | irix6*) - case $cc_basename in - CC*) - # SGI C++ - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' - - # Archives containing C++ object files must be created using - # "CC -ar", where "CC" is the IRIX C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' - ;; - *) - if test yes = "$GXX"; then - if test no = "$with_gnu_ld"; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' - else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib' - fi - fi - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - esac - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(inherit_rpath, $1)=yes - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' - - # Archives containing C++ object files must be created using - # "CC -Bstatic", where "CC" is the KAI C++ compiler. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' - ;; - icpc* | ecpc* ) - # Intel C++ - with_gnu_ld=yes - # version 8.0 and above of icpc choke on multiply defined symbols - # if we add $predep_objects and $postdep_objects, however 7.1 and - # earlier do not add the objects themselves. - case `$CC -V 2>&1` in - *"Version 7."*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - ;; - *) # Version 8.0 or newer - tmp_idyn= - case $host_cpu in - ia64*) tmp_idyn=' -i_dynamic';; - esac - _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - ;; - esac - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' - _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - case `$CC -V` in - *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) - _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ - compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' - _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ - $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ - $RANLIB $oldlib' - _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - ;; - *) # Version 6 and above use weak symbols - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - ;; - esac - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl--rpath $wl$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' - _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' - ;; - cxx*) - # Compaq C++ - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib $wl-retain-symbols-file $wl$export_symbols' - - runpath_var=LD_RUN_PATH - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' - ;; - xl* | mpixl* | bgxl*) - # IBM XL 8.0 on PPC, with GNU ld - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' - _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - if test yes = "$supports_anon_versioning"; then - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' - fi - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' - _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' - _LT_TAGVAR(compiler_needs_object, $1)=yes - - # Not sure whether something based on - # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 - # would be better. - output_verbose_link_cmd='func_echo_all' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' - ;; - esac - ;; - esac - ;; - - lynxos*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - m88k*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - mvs*) - case $cc_basename in - cxx*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' - wlarc= - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - fi - # Workaround some broken pre-1.5 toolchains - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' - ;; - - *nto* | *qnx*) - _LT_TAGVAR(ld_shlibs, $1)=yes - ;; - - openbsd* | bitrig*) - if test -f /usr/libexec/ld.so; then - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' - _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' - fi - output_verbose_link_cmd=func_echo_all - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Archives containing C++ object files must be created using - # the KAI C++ compiler. - case $host in - osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; - *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; - esac - ;; - RCC*) - # Rational C++ 2.4.1 - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - cxx*) - case $host in - osf3*) - _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' - ;; - *) - _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ - echo "-hidden">> $lib.exp~ - $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~ - $RM $lib.exp' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - ;; - esac - - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test yes,no = "$GXX,$with_gnu_ld"; then - _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' - case $host in - osf3*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' - ;; - esac - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - - else - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - psos*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - lcc*) - # Lucid - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - solaris*) - case $cc_basename in - CC* | sunCC*) - # Sun C++ 4.2, 5.x and Centerline C++ - _LT_TAGVAR(archive_cmds_need_lc,$1)=yes - _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' - _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands '-z linker_flag'. - # Supported since Solaris 2.6 (maybe 2.5.1?) - _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' - ;; - esac - _LT_TAGVAR(link_all_deplibs, $1)=yes - - output_verbose_link_cmd='func_echo_all' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' - ;; - gcx*) - # Green Hills C++ Compiler - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' - - # The C++ compiler must be used to create the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' - ;; - *) - # GNU C++ compiler with Solaris linker - if test yes,no = "$GXX,$with_gnu_ld"; then - _LT_TAGVAR(no_undefined_flag, $1)=' $wl-z ${wl}defs' - if $CC --version | $GREP -v '^2\.7' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - else - # g++ 2.7 appears to require '-G' NOT '-shared' on this - # platform. - _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - fi - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $wl$libdir' - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' - ;; - esac - fi - ;; - esac - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) - _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We CANNOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' - _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ - '"$_LT_TAGVAR(old_archive_cmds, $1)" - _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ - '"$_LT_TAGVAR(reload_cmds, $1)" - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - vxworks*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - - AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) - test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no - - _LT_TAGVAR(GCC, $1)=$GXX - _LT_TAGVAR(LD, $1)=$LD - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - _LT_SYS_HIDDEN_LIBDEPS($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) - fi # test -n "$compiler" - - CC=$lt_save_CC - CFLAGS=$lt_save_CFLAGS - LDCXX=$LD - LD=$lt_save_LD - GCC=$lt_save_GCC - with_gnu_ld=$lt_save_with_gnu_ld - lt_cv_path_LDCXX=$lt_cv_path_LD - lt_cv_path_LD=$lt_save_path_LD - lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld - lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld -fi # test yes != "$_lt_caught_CXX_error" - -AC_LANG_POP -])# _LT_LANG_CXX_CONFIG - - -# _LT_FUNC_STRIPNAME_CNF -# ---------------------- -# func_stripname_cnf prefix suffix name -# strip PREFIX and SUFFIX off of NAME. -# PREFIX and SUFFIX must not contain globbing or regex special -# characters, hashes, percent signs, but SUFFIX may contain a leading -# dot (in which case that matches only a dot). -# -# This function is identical to the (non-XSI) version of func_stripname, -# except this one can be used by m4 code that may be executed by configure, -# rather than the libtool script. -m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl -AC_REQUIRE([_LT_DECL_SED]) -AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) -func_stripname_cnf () -{ - case @S|@2 in - .*) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%\\\\@S|@2\$%%"`;; - *) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%@S|@2\$%%"`;; - esac -} # func_stripname_cnf -])# _LT_FUNC_STRIPNAME_CNF - - -# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) -# --------------------------------- -# Figure out "hidden" library dependencies from verbose -# compiler output when linking a shared library. -# Parse the compiler output and extract the necessary -# objects, libraries and library flags. -m4_defun([_LT_SYS_HIDDEN_LIBDEPS], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl -# Dependencies to place before and after the object being linked: -_LT_TAGVAR(predep_objects, $1)= -_LT_TAGVAR(postdep_objects, $1)= -_LT_TAGVAR(predeps, $1)= -_LT_TAGVAR(postdeps, $1)= -_LT_TAGVAR(compiler_lib_search_path, $1)= - -dnl we can't use the lt_simple_compile_test_code here, -dnl because it contains code intended for an executable, -dnl not a library. It's possible we should let each -dnl tag define a new lt_????_link_test_code variable, -dnl but it's only used here... -m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF -int a; -void foo (void) { a = 0; } -_LT_EOF -], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF -class Foo -{ -public: - Foo (void) { a = 0; } -private: - int a; -}; -_LT_EOF -], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF - subroutine foo - implicit none - integer*4 a - a=0 - return - end -_LT_EOF -], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF - subroutine foo - implicit none - integer a - a=0 - return - end -_LT_EOF -], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF -public class foo { - private int a; - public void bar (void) { - a = 0; - } -}; -_LT_EOF -], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF -package foo -func foo() { -} -_LT_EOF -]) - -_lt_libdeps_save_CFLAGS=$CFLAGS -case "$CC $CFLAGS " in #( -*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; -*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; -*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; -esac - -dnl Parse the compiler output and extract the necessary -dnl objects, libraries and library flags. -if AC_TRY_EVAL(ac_compile); then - # Parse the compiler output and extract the necessary - # objects, libraries and library flags. - - # Sentinel used to keep track of whether or not we are before - # the conftest object file. - pre_test_object_deps_done=no - - for p in `eval "$output_verbose_link_cmd"`; do - case $prev$p in - - -L* | -R* | -l*) - # Some compilers place space between "-{L,R}" and the path. - # Remove the space. - if test x-L = "$p" || - test x-R = "$p"; then - prev=$p - continue - fi - - # Expand the sysroot to ease extracting the directories later. - if test -z "$prev"; then - case $p in - -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; - -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; - -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; - esac - fi - case $p in - =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; - esac - if test no = "$pre_test_object_deps_done"; then - case $prev in - -L | -R) - # Internal compiler library paths should come after those - # provided the user. The postdeps already come after the - # user supplied libs so there is no need to process them. - if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then - _LT_TAGVAR(compiler_lib_search_path, $1)=$prev$p - else - _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} $prev$p" - fi - ;; - # The "-l" case would never come before the object being - # linked, so don't bother handling this case. - esac - else - if test -z "$_LT_TAGVAR(postdeps, $1)"; then - _LT_TAGVAR(postdeps, $1)=$prev$p - else - _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} $prev$p" - fi - fi - prev= - ;; - - *.lto.$objext) ;; # Ignore GCC LTO objects - *.$objext) - # This assumes that the test object file only shows up - # once in the compiler output. - if test "$p" = "conftest.$objext"; then - pre_test_object_deps_done=yes - continue - fi - - if test no = "$pre_test_object_deps_done"; then - if test -z "$_LT_TAGVAR(predep_objects, $1)"; then - _LT_TAGVAR(predep_objects, $1)=$p - else - _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" - fi - else - if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then - _LT_TAGVAR(postdep_objects, $1)=$p - else - _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" - fi - fi - ;; - - *) ;; # Ignore the rest. - - esac - done - - # Clean up. - rm -f a.out a.exe -else - echo "libtool.m4: error: problem compiling $1 test program" -fi - -$RM -f confest.$objext -CFLAGS=$_lt_libdeps_save_CFLAGS - -# PORTME: override above test on systems where it is broken -m4_if([$1], [CXX], -[case $host_os in -interix[[3-9]]*) - # Interix 3.5 installs completely hosed .la files for C++, so rather than - # hack all around it, let's just trust "g++" to DTRT. - _LT_TAGVAR(predep_objects,$1)= - _LT_TAGVAR(postdep_objects,$1)= - _LT_TAGVAR(postdeps,$1)= - ;; -esac -]) - -case " $_LT_TAGVAR(postdeps, $1) " in -*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; -esac - _LT_TAGVAR(compiler_lib_search_dirs, $1)= -if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then - _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | $SED -e 's! -L! !g' -e 's!^ !!'` -fi -_LT_TAGDECL([], [compiler_lib_search_dirs], [1], - [The directories searched by this compiler when creating a shared library]) -_LT_TAGDECL([], [predep_objects], [1], - [Dependencies to place before and after the objects being linked to - create a shared library]) -_LT_TAGDECL([], [postdep_objects], [1]) -_LT_TAGDECL([], [predeps], [1]) -_LT_TAGDECL([], [postdeps], [1]) -_LT_TAGDECL([], [compiler_lib_search_path], [1], - [The library search path used internally by the compiler when linking - a shared library]) -])# _LT_SYS_HIDDEN_LIBDEPS - - -# _LT_LANG_F77_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for a Fortran 77 compiler are -# suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to 'libtool'. -m4_defun([_LT_LANG_F77_CONFIG], -[AC_LANG_PUSH(Fortran 77) -if test -z "$F77" || test no = "$F77"; then - _lt_disable_F77=yes -fi - -_LT_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_TAGVAR(allow_undefined_flag, $1)= -_LT_TAGVAR(always_export_symbols, $1)=no -_LT_TAGVAR(archive_expsym_cmds, $1)= -_LT_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_TAGVAR(hardcode_direct, $1)=no -_LT_TAGVAR(hardcode_direct_absolute, $1)=no -_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_separator, $1)= -_LT_TAGVAR(hardcode_minus_L, $1)=no -_LT_TAGVAR(hardcode_automatic, $1)=no -_LT_TAGVAR(inherit_rpath, $1)=no -_LT_TAGVAR(module_cmds, $1)= -_LT_TAGVAR(module_expsym_cmds, $1)= -_LT_TAGVAR(link_all_deplibs, $1)=unknown -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds -_LT_TAGVAR(no_undefined_flag, $1)= -_LT_TAGVAR(whole_archive_flag_spec, $1)= -_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - -# Source file extension for f77 test sources. -ac_ext=f - -# Object file extension for compiled f77 test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# No sense in running all these tests if we already determined that -# the F77 compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test yes != "$_lt_disable_F77"; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="\ - subroutine t - return - end -" - - # Code to be used in simple link tests - lt_simple_link_test_code="\ - program t - end -" - - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - _LT_TAG_COMPILER - - # save warnings/boilerplate of simple test code - _LT_COMPILER_BOILERPLATE - _LT_LINKER_BOILERPLATE - - # Allow CC to be a program name with arguments. - lt_save_CC=$CC - lt_save_GCC=$GCC - lt_save_CFLAGS=$CFLAGS - CC=${F77-"f77"} - CFLAGS=$FFLAGS - compiler=$CC - _LT_TAGVAR(compiler, $1)=$CC - _LT_CC_BASENAME([$compiler]) - GCC=$G77 - if test -n "$compiler"; then - AC_MSG_CHECKING([if libtool supports shared libraries]) - AC_MSG_RESULT([$can_build_shared]) - - AC_MSG_CHECKING([whether to build shared libraries]) - test no = "$can_build_shared" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test yes = "$enable_shared" && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - aix[[4-9]]*) - if test ia64 != "$host_cpu"; then - case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in - yes,aix,yes) ;; # shared object as lib.so file only - yes,svr4,*) ;; # shared object as lib.so archive member only - yes,*) enable_static=no ;; # shared object in lib.a archive as well - esac - fi - ;; - esac - AC_MSG_RESULT([$enable_shared]) - - AC_MSG_CHECKING([whether to build static libraries]) - # Make sure either enable_shared or enable_static is yes. - test yes = "$enable_shared" || enable_static=yes - AC_MSG_RESULT([$enable_static]) - - _LT_TAGVAR(GCC, $1)=$G77 - _LT_TAGVAR(LD, $1)=$LD - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) - fi # test -n "$compiler" - - GCC=$lt_save_GCC - CC=$lt_save_CC - CFLAGS=$lt_save_CFLAGS -fi # test yes != "$_lt_disable_F77" - -AC_LANG_POP -])# _LT_LANG_F77_CONFIG - - -# _LT_LANG_FC_CONFIG([TAG]) -# ------------------------- -# Ensure that the configuration variables for a Fortran compiler are -# suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to 'libtool'. -m4_defun([_LT_LANG_FC_CONFIG], -[AC_LANG_PUSH(Fortran) - -if test -z "$FC" || test no = "$FC"; then - _lt_disable_FC=yes -fi - -_LT_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_TAGVAR(allow_undefined_flag, $1)= -_LT_TAGVAR(always_export_symbols, $1)=no -_LT_TAGVAR(archive_expsym_cmds, $1)= -_LT_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_TAGVAR(hardcode_direct, $1)=no -_LT_TAGVAR(hardcode_direct_absolute, $1)=no -_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_separator, $1)= -_LT_TAGVAR(hardcode_minus_L, $1)=no -_LT_TAGVAR(hardcode_automatic, $1)=no -_LT_TAGVAR(inherit_rpath, $1)=no -_LT_TAGVAR(module_cmds, $1)= -_LT_TAGVAR(module_expsym_cmds, $1)= -_LT_TAGVAR(link_all_deplibs, $1)=unknown -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds -_LT_TAGVAR(no_undefined_flag, $1)= -_LT_TAGVAR(whole_archive_flag_spec, $1)= -_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - -# Source file extension for fc test sources. -ac_ext=${ac_fc_srcext-f} - -# Object file extension for compiled fc test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# No sense in running all these tests if we already determined that -# the FC compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test yes != "$_lt_disable_FC"; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="\ - subroutine t - return - end -" - - # Code to be used in simple link tests - lt_simple_link_test_code="\ - program t - end -" - - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - _LT_TAG_COMPILER - - # save warnings/boilerplate of simple test code - _LT_COMPILER_BOILERPLATE - _LT_LINKER_BOILERPLATE - - # Allow CC to be a program name with arguments. - lt_save_CC=$CC - lt_save_GCC=$GCC - lt_save_CFLAGS=$CFLAGS - CC=${FC-"f95"} - CFLAGS=$FCFLAGS - compiler=$CC - GCC=$ac_cv_fc_compiler_gnu - - _LT_TAGVAR(compiler, $1)=$CC - _LT_CC_BASENAME([$compiler]) - - if test -n "$compiler"; then - AC_MSG_CHECKING([if libtool supports shared libraries]) - AC_MSG_RESULT([$can_build_shared]) - - AC_MSG_CHECKING([whether to build shared libraries]) - test no = "$can_build_shared" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test yes = "$enable_shared" && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - aix[[4-9]]*) - if test ia64 != "$host_cpu"; then - case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in - yes,aix,yes) ;; # shared object as lib.so file only - yes,svr4,*) ;; # shared object as lib.so archive member only - yes,*) enable_static=no ;; # shared object in lib.a archive as well - esac - fi - ;; - esac - AC_MSG_RESULT([$enable_shared]) - - AC_MSG_CHECKING([whether to build static libraries]) - # Make sure either enable_shared or enable_static is yes. - test yes = "$enable_shared" || enable_static=yes - AC_MSG_RESULT([$enable_static]) - - _LT_TAGVAR(GCC, $1)=$ac_cv_fc_compiler_gnu - _LT_TAGVAR(LD, $1)=$LD - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - _LT_SYS_HIDDEN_LIBDEPS($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) - fi # test -n "$compiler" - - GCC=$lt_save_GCC - CC=$lt_save_CC - CFLAGS=$lt_save_CFLAGS -fi # test yes != "$_lt_disable_FC" - -AC_LANG_POP -])# _LT_LANG_FC_CONFIG - - -# _LT_LANG_GCJ_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for the GNU Java Compiler compiler -# are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to 'libtool'. -m4_defun([_LT_LANG_GCJ_CONFIG], -[AC_REQUIRE([LT_PROG_GCJ])dnl -AC_LANG_SAVE - -# Source file extension for Java test sources. -ac_ext=java - -# Object file extension for compiled Java test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="class foo {}" - -# Code to be used in simple link tests -lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_LT_TAG_COMPILER - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -# Allow CC to be a program name with arguments. -lt_save_CC=$CC -lt_save_CFLAGS=$CFLAGS -lt_save_GCC=$GCC -GCC=yes -CC=${GCJ-"gcj"} -CFLAGS=$GCJFLAGS -compiler=$CC -_LT_TAGVAR(compiler, $1)=$CC -_LT_TAGVAR(LD, $1)=$LD -_LT_CC_BASENAME([$compiler]) - -# GCJ did not exist at the time GCC didn't implicitly link libc in. -_LT_TAGVAR(archive_cmds_need_lc, $1)=no - -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds - -## CAVEAT EMPTOR: -## There is no encapsulation within the following macros, do not change -## the running order or otherwise move them around unless you know exactly -## what you are doing... -if test -n "$compiler"; then - _LT_COMPILER_NO_RTTI($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) -fi - -AC_LANG_RESTORE - -GCC=$lt_save_GCC -CC=$lt_save_CC -CFLAGS=$lt_save_CFLAGS -])# _LT_LANG_GCJ_CONFIG - - -# _LT_LANG_GO_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for the GNU Go compiler -# are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to 'libtool'. -m4_defun([_LT_LANG_GO_CONFIG], -[AC_REQUIRE([LT_PROG_GO])dnl -AC_LANG_SAVE - -# Source file extension for Go test sources. -ac_ext=go - -# Object file extension for compiled Go test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="package main; func main() { }" - -# Code to be used in simple link tests -lt_simple_link_test_code='package main; func main() { }' - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_LT_TAG_COMPILER - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -# Allow CC to be a program name with arguments. -lt_save_CC=$CC -lt_save_CFLAGS=$CFLAGS -lt_save_GCC=$GCC -GCC=yes -CC=${GOC-"gccgo"} -CFLAGS=$GOFLAGS -compiler=$CC -_LT_TAGVAR(compiler, $1)=$CC -_LT_TAGVAR(LD, $1)=$LD -_LT_CC_BASENAME([$compiler]) - -# Go did not exist at the time GCC didn't implicitly link libc in. -_LT_TAGVAR(archive_cmds_need_lc, $1)=no - -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds - -## CAVEAT EMPTOR: -## There is no encapsulation within the following macros, do not change -## the running order or otherwise move them around unless you know exactly -## what you are doing... -if test -n "$compiler"; then - _LT_COMPILER_NO_RTTI($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) -fi - -AC_LANG_RESTORE - -GCC=$lt_save_GCC -CC=$lt_save_CC -CFLAGS=$lt_save_CFLAGS -])# _LT_LANG_GO_CONFIG - - -# _LT_LANG_RC_CONFIG([TAG]) -# ------------------------- -# Ensure that the configuration variables for the Windows resource compiler -# are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to 'libtool'. -m4_defun([_LT_LANG_RC_CONFIG], -[AC_REQUIRE([LT_PROG_RC])dnl -AC_LANG_SAVE - -# Source file extension for RC test sources. -ac_ext=rc - -# Object file extension for compiled RC test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' - -# Code to be used in simple link tests -lt_simple_link_test_code=$lt_simple_compile_test_code - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_LT_TAG_COMPILER - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -# Allow CC to be a program name with arguments. -lt_save_CC=$CC -lt_save_CFLAGS=$CFLAGS -lt_save_GCC=$GCC -GCC= -CC=${RC-"windres"} -CFLAGS= -compiler=$CC -_LT_TAGVAR(compiler, $1)=$CC -_LT_CC_BASENAME([$compiler]) -_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes - -if test -n "$compiler"; then - : - _LT_CONFIG($1) -fi - -GCC=$lt_save_GCC -AC_LANG_RESTORE -CC=$lt_save_CC -CFLAGS=$lt_save_CFLAGS -])# _LT_LANG_RC_CONFIG - - -# LT_PROG_GCJ -# ----------- -AC_DEFUN([LT_PROG_GCJ], -[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], - [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], - [AC_CHECK_TOOL(GCJ, gcj,) - test set = "${GCJFLAGS+set}" || GCJFLAGS="-g -O2" - AC_SUBST(GCJFLAGS)])])[]dnl -]) - -# Old name: -AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([LT_AC_PROG_GCJ], []) - - -# LT_PROG_GO -# ---------- -AC_DEFUN([LT_PROG_GO], -[AC_CHECK_TOOL(GOC, gccgo,) -]) - - -# LT_PROG_RC -# ---------- -AC_DEFUN([LT_PROG_RC], -[AC_CHECK_TOOL(RC, windres,) -]) - -# Old name: -AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([LT_AC_PROG_RC], []) - - -# _LT_DECL_EGREP -# -------------- -# If we don't have a new enough Autoconf to choose the best grep -# available, choose the one first in the user's PATH. -m4_defun([_LT_DECL_EGREP], -[AC_REQUIRE([AC_PROG_EGREP])dnl -AC_REQUIRE([AC_PROG_FGREP])dnl -test -z "$GREP" && GREP=grep -_LT_DECL([], [GREP], [1], [A grep program that handles long lines]) -_LT_DECL([], [EGREP], [1], [An ERE matcher]) -_LT_DECL([], [FGREP], [1], [A literal string matcher]) -dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too -AC_SUBST([GREP]) -]) - - -# _LT_DECL_OBJDUMP -# -------------- -# If we don't have a new enough Autoconf to choose the best objdump -# available, choose the one first in the user's PATH. -m4_defun([_LT_DECL_OBJDUMP], -[AC_CHECK_TOOL(OBJDUMP, objdump, false) -test -z "$OBJDUMP" && OBJDUMP=objdump -_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) -AC_SUBST([OBJDUMP]) -]) - -# _LT_DECL_DLLTOOL -# ---------------- -# Ensure DLLTOOL variable is set. -m4_defun([_LT_DECL_DLLTOOL], -[AC_CHECK_TOOL(DLLTOOL, dlltool, false) -test -z "$DLLTOOL" && DLLTOOL=dlltool -_LT_DECL([], [DLLTOOL], [1], [DLL creation program]) -AC_SUBST([DLLTOOL]) -]) - -# _LT_DECL_SED -# ------------ -# Check for a fully-functional sed program, that truncates -# as few characters as possible. Prefer GNU sed if found. -m4_defun([_LT_DECL_SED], -[AC_PROG_SED -test -z "$SED" && SED=sed -Xsed="$SED -e 1s/^X//" -_LT_DECL([], [SED], [1], [A sed program that does not truncate output]) -_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], - [Sed that helps us avoid accidentally triggering echo(1) options like -n]) -])# _LT_DECL_SED - -m4_ifndef([AC_PROG_SED], [ -############################################################ -# NOTE: This macro has been submitted for inclusion into # -# GNU Autoconf as AC_PROG_SED. When it is available in # -# a released version of Autoconf we should remove this # -# macro and use it instead. # -############################################################ - -m4_defun([AC_PROG_SED], -[AC_MSG_CHECKING([for a sed that does not truncate output]) -AC_CACHE_VAL(lt_cv_path_SED, -[# Loop through the user's path and test for sed and gsed. -# Then use that list of sed's as ones to test for truncation. -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for lt_ac_prog in sed gsed; do - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then - lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" - fi - done - done -done -IFS=$as_save_IFS -lt_ac_max=0 -lt_ac_count=0 -# Add /usr/xpg4/bin/sed as it is typically found on Solaris -# along with /bin/sed that truncates output. -for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do - test ! -f "$lt_ac_sed" && continue - cat /dev/null > conftest.in - lt_ac_count=0 - echo $ECHO_N "0123456789$ECHO_C" >conftest.in - # Check for GNU sed and select it if it is found. - if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then - lt_cv_path_SED=$lt_ac_sed - break - fi - while true; do - cat conftest.in conftest.in >conftest.tmp - mv conftest.tmp conftest.in - cp conftest.in conftest.nl - echo >>conftest.nl - $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break - cmp -s conftest.out conftest.nl || break - # 10000 chars as input seems more than enough - test 10 -lt "$lt_ac_count" && break - lt_ac_count=`expr $lt_ac_count + 1` - if test "$lt_ac_count" -gt "$lt_ac_max"; then - lt_ac_max=$lt_ac_count - lt_cv_path_SED=$lt_ac_sed - fi - done -done -]) -SED=$lt_cv_path_SED -AC_SUBST([SED]) -AC_MSG_RESULT([$SED]) -])#AC_PROG_SED -])#m4_ifndef - -# Old name: -AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([LT_AC_PROG_SED], []) - - -# _LT_CHECK_SHELL_FEATURES -# ------------------------ -# Find out whether the shell is Bourne or XSI compatible, -# or has some other useful features. -m4_defun([_LT_CHECK_SHELL_FEATURES], -[if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - lt_unset=unset -else - lt_unset=false -fi -_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl - -# test EBCDIC or ASCII -case `echo X|tr X '\101'` in - A) # ASCII based system - # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr - lt_SP2NL='tr \040 \012' - lt_NL2SP='tr \015\012 \040\040' - ;; - *) # EBCDIC based system - lt_SP2NL='tr \100 \n' - lt_NL2SP='tr \r\n \100\100' - ;; -esac -_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl -_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl -])# _LT_CHECK_SHELL_FEATURES - - -# _LT_PATH_CONVERSION_FUNCTIONS -# ----------------------------- -# Determine what file name conversion functions should be used by -# func_to_host_file (and, implicitly, by func_to_host_path). These are needed -# for certain cross-compile configurations and native mingw. -m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -AC_MSG_CHECKING([how to convert $build file names to $host format]) -AC_CACHE_VAL(lt_cv_to_host_file_cmd, -[case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 - ;; - *-*-cygwin* ) - lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 - ;; - esac - ;; - *-*-cygwin* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin - ;; - *-*-cygwin* ) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin - ;; - esac - ;; - * ) # unhandled hosts (and "normal" native builds) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; -esac -]) -to_host_file_cmd=$lt_cv_to_host_file_cmd -AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) -_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], - [0], [convert $build file names to $host format])dnl - -AC_MSG_CHECKING([how to convert $build file names to toolchain format]) -AC_CACHE_VAL(lt_cv_to_tool_file_cmd, -[#assume ordinary cross tools, or native build. -lt_cv_to_tool_file_cmd=func_convert_file_noop -case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 - ;; - esac - ;; -esac -]) -to_tool_file_cmd=$lt_cv_to_tool_file_cmd -AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) -_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], - [0], [convert $build files to toolchain format])dnl -])# _LT_PATH_CONVERSION_FUNCTIONS diff --git a/vendor/onig/m4/ltoptions.m4 b/vendor/onig/m4/ltoptions.m4 deleted file mode 100644 index 94b0829..0000000 --- a/vendor/onig/m4/ltoptions.m4 +++ /dev/null @@ -1,437 +0,0 @@ -# Helper functions for option handling. -*- Autoconf -*- -# -# Copyright (C) 2004-2005, 2007-2009, 2011-2015 Free Software -# Foundation, Inc. -# Written by Gary V. Vaughan, 2004 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# serial 8 ltoptions.m4 - -# This is to help aclocal find these macros, as it can't see m4_define. -AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) - - -# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) -# ------------------------------------------ -m4_define([_LT_MANGLE_OPTION], -[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) - - -# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) -# --------------------------------------- -# Set option OPTION-NAME for macro MACRO-NAME, and if there is a -# matching handler defined, dispatch to it. Other OPTION-NAMEs are -# saved as a flag. -m4_define([_LT_SET_OPTION], -[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl -m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), - _LT_MANGLE_DEFUN([$1], [$2]), - [m4_warning([Unknown $1 option '$2'])])[]dnl -]) - - -# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) -# ------------------------------------------------------------ -# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. -m4_define([_LT_IF_OPTION], -[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) - - -# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) -# ------------------------------------------------------- -# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME -# are set. -m4_define([_LT_UNLESS_OPTIONS], -[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), - [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), - [m4_define([$0_found])])])[]dnl -m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 -])[]dnl -]) - - -# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) -# ---------------------------------------- -# OPTION-LIST is a space-separated list of Libtool options associated -# with MACRO-NAME. If any OPTION has a matching handler declared with -# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about -# the unknown option and exit. -m4_defun([_LT_SET_OPTIONS], -[# Set options -m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), - [_LT_SET_OPTION([$1], _LT_Option)]) - -m4_if([$1],[LT_INIT],[ - dnl - dnl Simply set some default values (i.e off) if boolean options were not - dnl specified: - _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no - ]) - _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no - ]) - dnl - dnl If no reference was made to various pairs of opposing options, then - dnl we run the default mode handler for the pair. For example, if neither - dnl 'shared' nor 'disable-shared' was passed, we enable building of shared - dnl archives by default: - _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) - _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) - _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) - _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], - [_LT_ENABLE_FAST_INSTALL]) - _LT_UNLESS_OPTIONS([LT_INIT], [aix-soname=aix aix-soname=both aix-soname=svr4], - [_LT_WITH_AIX_SONAME([aix])]) - ]) -])# _LT_SET_OPTIONS - - -## --------------------------------- ## -## Macros to handle LT_INIT options. ## -## --------------------------------- ## - -# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) -# ----------------------------------------- -m4_define([_LT_MANGLE_DEFUN], -[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) - - -# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) -# ----------------------------------------------- -m4_define([LT_OPTION_DEFINE], -[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl -])# LT_OPTION_DEFINE - - -# dlopen -# ------ -LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes -]) - -AU_DEFUN([AC_LIBTOOL_DLOPEN], -[_LT_SET_OPTION([LT_INIT], [dlopen]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the 'dlopen' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) - - -# win32-dll -# --------- -# Declare package support for building win32 dll's. -LT_OPTION_DEFINE([LT_INIT], [win32-dll], -[enable_win32_dll=yes - -case $host in -*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) - AC_CHECK_TOOL(AS, as, false) - AC_CHECK_TOOL(DLLTOOL, dlltool, false) - AC_CHECK_TOOL(OBJDUMP, objdump, false) - ;; -esac - -test -z "$AS" && AS=as -_LT_DECL([], [AS], [1], [Assembler program])dnl - -test -z "$DLLTOOL" && DLLTOOL=dlltool -_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl - -test -z "$OBJDUMP" && OBJDUMP=objdump -_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl -])# win32-dll - -AU_DEFUN([AC_LIBTOOL_WIN32_DLL], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -_LT_SET_OPTION([LT_INIT], [win32-dll]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the 'win32-dll' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) - - -# _LT_ENABLE_SHARED([DEFAULT]) -# ---------------------------- -# implement the --enable-shared flag, and supports the 'shared' and -# 'disable-shared' LT_INIT options. -# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. -m4_define([_LT_ENABLE_SHARED], -[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl -AC_ARG_ENABLE([shared], - [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], - [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_shared=yes ;; - no) enable_shared=no ;; - *) - enable_shared=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, - for pkg in $enableval; do - IFS=$lt_save_ifs - if test "X$pkg" = "X$p"; then - enable_shared=yes - fi - done - IFS=$lt_save_ifs - ;; - esac], - [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) - - _LT_DECL([build_libtool_libs], [enable_shared], [0], - [Whether or not to build shared libraries]) -])# _LT_ENABLE_SHARED - -LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) -LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) - -# Old names: -AC_DEFUN([AC_ENABLE_SHARED], -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) -]) - -AC_DEFUN([AC_DISABLE_SHARED], -[_LT_SET_OPTION([LT_INIT], [disable-shared]) -]) - -AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) -AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AM_ENABLE_SHARED], []) -dnl AC_DEFUN([AM_DISABLE_SHARED], []) - - - -# _LT_ENABLE_STATIC([DEFAULT]) -# ---------------------------- -# implement the --enable-static flag, and support the 'static' and -# 'disable-static' LT_INIT options. -# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. -m4_define([_LT_ENABLE_STATIC], -[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl -AC_ARG_ENABLE([static], - [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], - [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_static=yes ;; - no) enable_static=no ;; - *) - enable_static=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, - for pkg in $enableval; do - IFS=$lt_save_ifs - if test "X$pkg" = "X$p"; then - enable_static=yes - fi - done - IFS=$lt_save_ifs - ;; - esac], - [enable_static=]_LT_ENABLE_STATIC_DEFAULT) - - _LT_DECL([build_old_libs], [enable_static], [0], - [Whether or not to build static libraries]) -])# _LT_ENABLE_STATIC - -LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) -LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) - -# Old names: -AC_DEFUN([AC_ENABLE_STATIC], -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) -]) - -AC_DEFUN([AC_DISABLE_STATIC], -[_LT_SET_OPTION([LT_INIT], [disable-static]) -]) - -AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) -AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AM_ENABLE_STATIC], []) -dnl AC_DEFUN([AM_DISABLE_STATIC], []) - - - -# _LT_ENABLE_FAST_INSTALL([DEFAULT]) -# ---------------------------------- -# implement the --enable-fast-install flag, and support the 'fast-install' -# and 'disable-fast-install' LT_INIT options. -# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. -m4_define([_LT_ENABLE_FAST_INSTALL], -[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl -AC_ARG_ENABLE([fast-install], - [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], - [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_fast_install=yes ;; - no) enable_fast_install=no ;; - *) - enable_fast_install=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, - for pkg in $enableval; do - IFS=$lt_save_ifs - if test "X$pkg" = "X$p"; then - enable_fast_install=yes - fi - done - IFS=$lt_save_ifs - ;; - esac], - [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) - -_LT_DECL([fast_install], [enable_fast_install], [0], - [Whether or not to optimize for fast installation])dnl -])# _LT_ENABLE_FAST_INSTALL - -LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) -LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) - -# Old names: -AU_DEFUN([AC_ENABLE_FAST_INSTALL], -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you put -the 'fast-install' option into LT_INIT's first parameter.]) -]) - -AU_DEFUN([AC_DISABLE_FAST_INSTALL], -[_LT_SET_OPTION([LT_INIT], [disable-fast-install]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you put -the 'disable-fast-install' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) -dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) - - -# _LT_WITH_AIX_SONAME([DEFAULT]) -# ---------------------------------- -# implement the --with-aix-soname flag, and support the `aix-soname=aix' -# and `aix-soname=both' and `aix-soname=svr4' LT_INIT options. DEFAULT -# is either `aix', `both' or `svr4'. If omitted, it defaults to `aix'. -m4_define([_LT_WITH_AIX_SONAME], -[m4_define([_LT_WITH_AIX_SONAME_DEFAULT], [m4_if($1, svr4, svr4, m4_if($1, both, both, aix))])dnl -shared_archive_member_spec= -case $host,$enable_shared in -power*-*-aix[[5-9]]*,yes) - AC_MSG_CHECKING([which variant of shared library versioning to provide]) - AC_ARG_WITH([aix-soname], - [AS_HELP_STRING([--with-aix-soname=aix|svr4|both], - [shared library versioning (aka "SONAME") variant to provide on AIX, @<:@default=]_LT_WITH_AIX_SONAME_DEFAULT[@:>@.])], - [case $withval in - aix|svr4|both) - ;; - *) - AC_MSG_ERROR([Unknown argument to --with-aix-soname]) - ;; - esac - lt_cv_with_aix_soname=$with_aix_soname], - [AC_CACHE_VAL([lt_cv_with_aix_soname], - [lt_cv_with_aix_soname=]_LT_WITH_AIX_SONAME_DEFAULT) - with_aix_soname=$lt_cv_with_aix_soname]) - AC_MSG_RESULT([$with_aix_soname]) - if test aix != "$with_aix_soname"; then - # For the AIX way of multilib, we name the shared archive member - # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', - # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. - # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, - # the AIX toolchain works better with OBJECT_MODE set (default 32). - if test 64 = "${OBJECT_MODE-32}"; then - shared_archive_member_spec=shr_64 - else - shared_archive_member_spec=shr - fi - fi - ;; -*) - with_aix_soname=aix - ;; -esac - -_LT_DECL([], [shared_archive_member_spec], [0], - [Shared archive member basename, for filename based shared library versioning on AIX])dnl -])# _LT_WITH_AIX_SONAME - -LT_OPTION_DEFINE([LT_INIT], [aix-soname=aix], [_LT_WITH_AIX_SONAME([aix])]) -LT_OPTION_DEFINE([LT_INIT], [aix-soname=both], [_LT_WITH_AIX_SONAME([both])]) -LT_OPTION_DEFINE([LT_INIT], [aix-soname=svr4], [_LT_WITH_AIX_SONAME([svr4])]) - - -# _LT_WITH_PIC([MODE]) -# -------------------- -# implement the --with-pic flag, and support the 'pic-only' and 'no-pic' -# LT_INIT options. -# MODE is either 'yes' or 'no'. If omitted, it defaults to 'both'. -m4_define([_LT_WITH_PIC], -[AC_ARG_WITH([pic], - [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@], - [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], - [lt_p=${PACKAGE-default} - case $withval in - yes|no) pic_mode=$withval ;; - *) - pic_mode=default - # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, - for lt_pkg in $withval; do - IFS=$lt_save_ifs - if test "X$lt_pkg" = "X$lt_p"; then - pic_mode=yes - fi - done - IFS=$lt_save_ifs - ;; - esac], - [pic_mode=m4_default([$1], [default])]) - -_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl -])# _LT_WITH_PIC - -LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) -LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) - -# Old name: -AU_DEFUN([AC_LIBTOOL_PICMODE], -[_LT_SET_OPTION([LT_INIT], [pic-only]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the 'pic-only' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) - -## ----------------- ## -## LTDL_INIT Options ## -## ----------------- ## - -m4_define([_LTDL_MODE], []) -LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], - [m4_define([_LTDL_MODE], [nonrecursive])]) -LT_OPTION_DEFINE([LTDL_INIT], [recursive], - [m4_define([_LTDL_MODE], [recursive])]) -LT_OPTION_DEFINE([LTDL_INIT], [subproject], - [m4_define([_LTDL_MODE], [subproject])]) - -m4_define([_LTDL_TYPE], []) -LT_OPTION_DEFINE([LTDL_INIT], [installable], - [m4_define([_LTDL_TYPE], [installable])]) -LT_OPTION_DEFINE([LTDL_INIT], [convenience], - [m4_define([_LTDL_TYPE], [convenience])]) diff --git a/vendor/onig/m4/ltsugar.m4 b/vendor/onig/m4/ltsugar.m4 deleted file mode 100644 index 48bc934..0000000 --- a/vendor/onig/m4/ltsugar.m4 +++ /dev/null @@ -1,124 +0,0 @@ -# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- -# -# Copyright (C) 2004-2005, 2007-2008, 2011-2015 Free Software -# Foundation, Inc. -# Written by Gary V. Vaughan, 2004 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# serial 6 ltsugar.m4 - -# This is to help aclocal find these macros, as it can't see m4_define. -AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) - - -# lt_join(SEP, ARG1, [ARG2...]) -# ----------------------------- -# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their -# associated separator. -# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier -# versions in m4sugar had bugs. -m4_define([lt_join], -[m4_if([$#], [1], [], - [$#], [2], [[$2]], - [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) -m4_define([_lt_join], -[m4_if([$#$2], [2], [], - [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) - - -# lt_car(LIST) -# lt_cdr(LIST) -# ------------ -# Manipulate m4 lists. -# These macros are necessary as long as will still need to support -# Autoconf-2.59, which quotes differently. -m4_define([lt_car], [[$1]]) -m4_define([lt_cdr], -[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], - [$#], 1, [], - [m4_dquote(m4_shift($@))])]) -m4_define([lt_unquote], $1) - - -# lt_append(MACRO-NAME, STRING, [SEPARATOR]) -# ------------------------------------------ -# Redefine MACRO-NAME to hold its former content plus 'SEPARATOR''STRING'. -# Note that neither SEPARATOR nor STRING are expanded; they are appended -# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). -# No SEPARATOR is output if MACRO-NAME was previously undefined (different -# than defined and empty). -# -# This macro is needed until we can rely on Autoconf 2.62, since earlier -# versions of m4sugar mistakenly expanded SEPARATOR but not STRING. -m4_define([lt_append], -[m4_define([$1], - m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) - - - -# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) -# ---------------------------------------------------------- -# Produce a SEP delimited list of all paired combinations of elements of -# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list -# has the form PREFIXmINFIXSUFFIXn. -# Needed until we can rely on m4_combine added in Autoconf 2.62. -m4_define([lt_combine], -[m4_if(m4_eval([$# > 3]), [1], - [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl -[[m4_foreach([_Lt_prefix], [$2], - [m4_foreach([_Lt_suffix], - ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, - [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) - - -# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) -# ----------------------------------------------------------------------- -# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited -# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. -m4_define([lt_if_append_uniq], -[m4_ifdef([$1], - [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], - [lt_append([$1], [$2], [$3])$4], - [$5])], - [lt_append([$1], [$2], [$3])$4])]) - - -# lt_dict_add(DICT, KEY, VALUE) -# ----------------------------- -m4_define([lt_dict_add], -[m4_define([$1($2)], [$3])]) - - -# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) -# -------------------------------------------- -m4_define([lt_dict_add_subkey], -[m4_define([$1($2:$3)], [$4])]) - - -# lt_dict_fetch(DICT, KEY, [SUBKEY]) -# ---------------------------------- -m4_define([lt_dict_fetch], -[m4_ifval([$3], - m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), - m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) - - -# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) -# ----------------------------------------------------------------- -m4_define([lt_if_dict_fetch], -[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], - [$5], - [$6])]) - - -# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) -# -------------------------------------------------------------- -m4_define([lt_dict_filter], -[m4_if([$5], [], [], - [lt_join(m4_quote(m4_default([$4], [[, ]])), - lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), - [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl -]) diff --git a/vendor/onig/m4/ltversion.m4 b/vendor/onig/m4/ltversion.m4 deleted file mode 100644 index fa04b52..0000000 --- a/vendor/onig/m4/ltversion.m4 +++ /dev/null @@ -1,23 +0,0 @@ -# ltversion.m4 -- version numbers -*- Autoconf -*- -# -# Copyright (C) 2004, 2011-2015 Free Software Foundation, Inc. -# Written by Scott James Remnant, 2004 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# @configure_input@ - -# serial 4179 ltversion.m4 -# This file is part of GNU Libtool - -m4_define([LT_PACKAGE_VERSION], [2.4.6]) -m4_define([LT_PACKAGE_REVISION], [2.4.6]) - -AC_DEFUN([LTVERSION_VERSION], -[macro_version='2.4.6' -macro_revision='2.4.6' -_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) -_LT_DECL(, macro_revision, 0) -]) diff --git a/vendor/onig/m4/lt~obsolete.m4 b/vendor/onig/m4/lt~obsolete.m4 deleted file mode 100644 index c6b26f8..0000000 --- a/vendor/onig/m4/lt~obsolete.m4 +++ /dev/null @@ -1,99 +0,0 @@ -# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- -# -# Copyright (C) 2004-2005, 2007, 2009, 2011-2015 Free Software -# Foundation, Inc. -# Written by Scott James Remnant, 2004. -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# serial 5 lt~obsolete.m4 - -# These exist entirely to fool aclocal when bootstrapping libtool. -# -# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN), -# which have later been changed to m4_define as they aren't part of the -# exported API, or moved to Autoconf or Automake where they belong. -# -# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN -# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us -# using a macro with the same name in our local m4/libtool.m4 it'll -# pull the old libtool.m4 in (it doesn't see our shiny new m4_define -# and doesn't know about Autoconf macros at all.) -# -# So we provide this file, which has a silly filename so it's always -# included after everything else. This provides aclocal with the -# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything -# because those macros already exist, or will be overwritten later. -# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. -# -# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. -# Yes, that means every name once taken will need to remain here until -# we give up compatibility with versions before 1.7, at which point -# we need to keep only those names which we still refer to. - -# This is to help aclocal find these macros, as it can't see m4_define. -AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) - -m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) -m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) -m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) -m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) -m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) -m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) -m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) -m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) -m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) -m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) -m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) -m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) -m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) -m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) -m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) -m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) -m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) -m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) -m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) -m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) -m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) -m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) -m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) -m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) -m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) -m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) -m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) -m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) -m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) -m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) -m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) -m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) -m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) -m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) -m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) -m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) -m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) -m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) -m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) -m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) -m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) -m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) -m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) -m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) -m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) -m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) -m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) -m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) -m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) -m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) -m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) -m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) -m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) -m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) -m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) -m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) -m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) diff --git a/vendor/onig/missing b/vendor/onig/missing deleted file mode 100755 index 86a8fc3..0000000 --- a/vendor/onig/missing +++ /dev/null @@ -1,331 +0,0 @@ -#! /bin/sh -# Common stub for a few missing GNU programs while installing. - -scriptversion=2012-01-06.13; # UTC - -# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006, -# 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. -# Originally by Fran,cois Pinard , 1996. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -if test $# -eq 0; then - echo 1>&2 "Try \`$0 --help' for more information" - exit 1 -fi - -run=: -sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p' -sed_minuso='s/.* -o \([^ ]*\).*/\1/p' - -# In the cases where this matters, `missing' is being run in the -# srcdir already. -if test -f configure.ac; then - configure_ac=configure.ac -else - configure_ac=configure.in -fi - -msg="missing on your system" - -case $1 in ---run) - # Try to run requested program, and just exit if it succeeds. - run= - shift - "$@" && exit 0 - # Exit code 63 means version mismatch. This often happens - # when the user try to use an ancient version of a tool on - # a file that requires a minimum version. In this case we - # we should proceed has if the program had been absent, or - # if --run hadn't been passed. - if test $? = 63; then - run=: - msg="probably too old" - fi - ;; - - -h|--h|--he|--hel|--help) - echo "\ -$0 [OPTION]... PROGRAM [ARGUMENT]... - -Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an -error status if there is no known handling for PROGRAM. - -Options: - -h, --help display this help and exit - -v, --version output version information and exit - --run try to run the given command, and emulate it if it fails - -Supported PROGRAM values: - aclocal touch file \`aclocal.m4' - autoconf touch file \`configure' - autoheader touch file \`config.h.in' - autom4te touch the output file, or create a stub one - automake touch all \`Makefile.in' files - bison create \`y.tab.[ch]', if possible, from existing .[ch] - flex create \`lex.yy.c', if possible, from existing .c - help2man touch the output file - lex create \`lex.yy.c', if possible, from existing .c - makeinfo touch the output file - yacc create \`y.tab.[ch]', if possible, from existing .[ch] - -Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and -\`g' are ignored when checking the name. - -Send bug reports to ." - exit $? - ;; - - -v|--v|--ve|--ver|--vers|--versi|--versio|--version) - echo "missing $scriptversion (GNU Automake)" - exit $? - ;; - - -*) - echo 1>&2 "$0: Unknown \`$1' option" - echo 1>&2 "Try \`$0 --help' for more information" - exit 1 - ;; - -esac - -# normalize program name to check for. -program=`echo "$1" | sed ' - s/^gnu-//; t - s/^gnu//; t - s/^g//; t'` - -# Now exit if we have it, but it failed. Also exit now if we -# don't have it and --version was passed (most likely to detect -# the program). This is about non-GNU programs, so use $1 not -# $program. -case $1 in - lex*|yacc*) - # Not GNU programs, they don't have --version. - ;; - - *) - if test -z "$run" && ($1 --version) > /dev/null 2>&1; then - # We have it, but it failed. - exit 1 - elif test "x$2" = "x--version" || test "x$2" = "x--help"; then - # Could not run --version or --help. This is probably someone - # running `$TOOL --version' or `$TOOL --help' to check whether - # $TOOL exists and not knowing $TOOL uses missing. - exit 1 - fi - ;; -esac - -# If it does not exist, or fails to run (possibly an outdated version), -# try to emulate it. -case $program in - aclocal*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`acinclude.m4' or \`${configure_ac}'. You might want - to install the \`Automake' and \`Perl' packages. Grab them from - any GNU archive site." - touch aclocal.m4 - ;; - - autoconf*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`${configure_ac}'. You might want to install the - \`Autoconf' and \`GNU m4' packages. Grab them from any GNU - archive site." - touch configure - ;; - - autoheader*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`acconfig.h' or \`${configure_ac}'. You might want - to install the \`Autoconf' and \`GNU m4' packages. Grab them - from any GNU archive site." - files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` - test -z "$files" && files="config.h" - touch_files= - for f in $files; do - case $f in - *:*) touch_files="$touch_files "`echo "$f" | - sed -e 's/^[^:]*://' -e 's/:.*//'`;; - *) touch_files="$touch_files $f.in";; - esac - done - touch $touch_files - ;; - - automake*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. - You might want to install the \`Automake' and \`Perl' packages. - Grab them from any GNU archive site." - find . -type f -name Makefile.am -print | - sed 's/\.am$/.in/' | - while read f; do touch "$f"; done - ;; - - autom4te*) - echo 1>&2 "\ -WARNING: \`$1' is needed, but is $msg. - You might have modified some files without having the - proper tools for further handling them. - You can get \`$1' as part of \`Autoconf' from any GNU - archive site." - - file=`echo "$*" | sed -n "$sed_output"` - test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` - if test -f "$file"; then - touch $file - else - test -z "$file" || exec >$file - echo "#! /bin/sh" - echo "# Created by GNU Automake missing as a replacement of" - echo "# $ $@" - echo "exit 0" - chmod +x $file - exit 1 - fi - ;; - - bison*|yacc*) - echo 1>&2 "\ -WARNING: \`$1' $msg. You should only need it if - you modified a \`.y' file. You may need the \`Bison' package - in order for those modifications to take effect. You can get - \`Bison' from any GNU archive site." - rm -f y.tab.c y.tab.h - if test $# -ne 1; then - eval LASTARG=\${$#} - case $LASTARG in - *.y) - SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` - if test -f "$SRCFILE"; then - cp "$SRCFILE" y.tab.c - fi - SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` - if test -f "$SRCFILE"; then - cp "$SRCFILE" y.tab.h - fi - ;; - esac - fi - if test ! -f y.tab.h; then - echo >y.tab.h - fi - if test ! -f y.tab.c; then - echo 'main() { return 0; }' >y.tab.c - fi - ;; - - lex*|flex*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified a \`.l' file. You may need the \`Flex' package - in order for those modifications to take effect. You can get - \`Flex' from any GNU archive site." - rm -f lex.yy.c - if test $# -ne 1; then - eval LASTARG=\${$#} - case $LASTARG in - *.l) - SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` - if test -f "$SRCFILE"; then - cp "$SRCFILE" lex.yy.c - fi - ;; - esac - fi - if test ! -f lex.yy.c; then - echo 'main() { return 0; }' >lex.yy.c - fi - ;; - - help2man*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified a dependency of a manual page. You may need the - \`Help2man' package in order for those modifications to take - effect. You can get \`Help2man' from any GNU archive site." - - file=`echo "$*" | sed -n "$sed_output"` - test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` - if test -f "$file"; then - touch $file - else - test -z "$file" || exec >$file - echo ".ab help2man is required to generate this page" - exit $? - fi - ;; - - makeinfo*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified a \`.texi' or \`.texinfo' file, or any other file - indirectly affecting the aspect of the manual. The spurious - call might also be the consequence of using a buggy \`make' (AIX, - DU, IRIX). You might want to install the \`Texinfo' package or - the \`GNU make' package. Grab either from any GNU archive site." - # The file to touch is that specified with -o ... - file=`echo "$*" | sed -n "$sed_output"` - test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` - if test -z "$file"; then - # ... or it is the one specified with @setfilename ... - infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` - file=`sed -n ' - /^@setfilename/{ - s/.* \([^ ]*\) *$/\1/ - p - q - }' $infile` - # ... or it is derived from the source name (dir/f.texi becomes f.info) - test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info - fi - # If the file does not exist, the user really needs makeinfo; - # let's fail without touching anything. - test -f $file || exit 1 - touch $file - ;; - - *) - echo 1>&2 "\ -WARNING: \`$1' is needed, and is $msg. - You might have modified some files without having the - proper tools for further handling them. Check the \`README' file, - it often tells you about the needed prerequisites for installing - this package. You may also peek at any GNU archive site, in case - some other package would contain this missing \`$1' program." - exit 1 - ;; -esac - -exit 0 - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" -# time-stamp-end: "; # UTC" -# End: diff --git a/vendor/onig/onig.pri b/vendor/onig/onig.pri deleted file mode 100644 index 134e72b..0000000 --- a/vendor/onig/onig.pri +++ /dev/null @@ -1,90 +0,0 @@ -!win32:system($$PWD/configure) -INCLUDEPATH += $$PWD -INCLUDEPATH += $$PWD/enc/unicode - -SOURCES += $$PWD/regcomp.c \ - $$PWD/regenc.c \ - $$PWD/regerror.c \ - $$PWD/regexec.c \ - $$PWD/regext.c \ - $$PWD/reggnu.c \ - $$PWD/regparse.c \ - $$PWD/regposerr.c \ - $$PWD/regposix.c \ - $$PWD/regsyntax.c \ - $$PWD/regtrav.c \ - $$PWD/regversion.c \ - $$PWD/st.c \ - $$PWD/enc/ascii.c \ - $$PWD/enc/big5.c \ - $$PWD/enc/cp949.c \ - $$PWD/enc/emacs_mule.c \ - $$PWD/enc/euc_jp.c \ - $$PWD/enc/euc_kr.c \ - $$PWD/enc/euc_tw.c \ - $$PWD/enc/gb18030.c \ - $$PWD/enc/gbk.c \ - $$PWD/enc/iso_8859.h \ - $$PWD/enc/iso_8859_1.c \ - $$PWD/enc/iso_8859_10.c \ - $$PWD/enc/iso_8859_11.c \ - $$PWD/enc/iso_8859_13.c \ - $$PWD/enc/iso_8859_14.c \ - $$PWD/enc/iso_8859_15.c \ - $$PWD/enc/iso_8859_16.c \ - $$PWD/enc/iso_8859_2.c \ - $$PWD/enc/iso_8859_3.c \ - $$PWD/enc/iso_8859_4.c \ - $$PWD/enc/iso_8859_5.c \ - $$PWD/enc/iso_8859_6.c \ - $$PWD/enc/iso_8859_7.c \ - $$PWD/enc/iso_8859_8.c \ - $$PWD/enc/iso_8859_9.c \ - $$PWD/enc/koi8_r.c \ - $$PWD/enc/koi8_u.c \ - $$PWD/enc/shift_jis.c \ - $$PWD/enc/unicode.c \ - $$PWD/enc/us_ascii.c \ - $$PWD/enc/utf_16be.c \ - $$PWD/enc/utf_16le.c \ - $$PWD/enc/utf_32be.c \ - $$PWD/enc/utf_32le.c \ - $$PWD/enc/utf_8.c \ - $$PWD/enc/windows_1250.c \ - $$PWD/enc/windows_1251.c \ - $$PWD/enc/windows_1252.c \ - $$PWD/enc/windows_1253.c \ - $$PWD/enc/windows_1254.c \ - $$PWD/enc/windows_1257.c \ - $$PWD/enc/windows_31j.c - - -## Temporary diabled windows_31j encoding (see: https://github.com/edbee/edbee-lib/issues/9) - - -# $$PWD/testc.c \ -# $$PWD/testu.c \ -# $$PWD/win32/testc.c -# $$PWD/enc/gb2312.c \ -# $$PWD/enc/mktable.c \ - - -HEADERS += $$PWD/config.h \ - $$PWD/enc/unicode/casefold.h \ - $$PWD/onigmo.h \ - $$PWD/onigmognu.h \ - $$PWD/onigmoposix.h \ - $$PWD/regenc.h \ - $$PWD/regint.h \ - $$PWD/regparse.h \ - $$PWD/st.h \ - $$PWD/win32/config.h \ - $$PWD/config-onig-edbee.h - - - -###################################################################### -# Automatically generated by qmake (2.01a) Wed Jan 23 20:33:59 2013 -###################################################################### - -# Input diff --git a/vendor/onig/onig.pro b/vendor/onig/onig.pro deleted file mode 100644 index 0257498..0000000 --- a/vendor/onig/onig.pro +++ /dev/null @@ -1,67 +0,0 @@ -###################################################################### -# Automatically generated by qmake (2.01a) Wed Jan 23 20:33:59 2013 -###################################################################### - -TEMPLATE = app -TARGET = -DEPENDPATH += . enc win32 -INCLUDEPATH += . - -# Input -HEADERS += config.h \ - oniggnu.h \ - onigposix.h \ - oniguruma.h \ - regenc.h \ - regint.h \ - regparse.h \ - st.h \ - win32/config.h -SOURCES += regcomp.c \ - regenc.c \ - regerror.c \ - regexec.c \ - regext.c \ - reggnu.c \ - regparse.c \ - regposerr.c \ - regposix.c \ - regsyntax.c \ - regtrav.c \ - regversion.c \ - st.c \ - testc.c \ - testu.c \ - enc/ascii.c \ - enc/big5.c \ - enc/cp1251.c \ - enc/euc_jp.c \ - enc/euc_kr.c \ - enc/euc_tw.c \ - enc/gb18030.c \ - enc/iso8859_1.c \ - enc/iso8859_10.c \ - enc/iso8859_11.c \ - enc/iso8859_13.c \ - enc/iso8859_14.c \ - enc/iso8859_15.c \ - enc/iso8859_16.c \ - enc/iso8859_2.c \ - enc/iso8859_3.c \ - enc/iso8859_4.c \ - enc/iso8859_5.c \ - enc/iso8859_6.c \ - enc/iso8859_7.c \ - enc/iso8859_8.c \ - enc/iso8859_9.c \ - enc/koi8.c \ - enc/koi8_r.c \ - enc/mktable.c \ - enc/sjis.c \ - enc/unicode.c \ - enc/utf16_be.c \ - enc/utf16_le.c \ - enc/utf32_be.c \ - enc/utf32_le.c \ - enc/utf8.c \ - win32/testc.c diff --git a/vendor/onig/onig.xcodeproj/project.pbxproj b/vendor/onig/onig.xcodeproj/project.pbxproj deleted file mode 100644 index 1ead3e8..0000000 --- a/vendor/onig/onig.xcodeproj/project.pbxproj +++ /dev/null @@ -1,1384 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - D7BA7D76DAB5DD13389D6332 = { - buildActionMask = 2147483647; - files = ( - ); - generatedFileNames = ( - ); - isa = PBXShellScriptBuildPhase; - name = "Qt Qmake"; - neededFileNames = ( - ); - shellPath = "/bin/sh"; - shellScript = "make\ -C\ /Users/rick/bit/prj/compare/src/vendor/onig\ -f\ \'onig.xcodeproj/qt_makeqmake.mak\'"; - }; - 45A3B531E1A3DD993ADD3125 = { - isa = PBXFileReference; - name = "regcomp.c"; - path = "regcomp.c"; - refType = 4; - sourceTree = "SOURCE_ROOT"; - }; - A14CD0C98448AA103A28B989 = { - fileRef = "45A3B531E1A3DD993ADD3125"; - isa = PBXBuildFile; - settings = { - ATTRIBUTES = ( - ); - }; - }; - 0125A2B1F80C4E0DCB8AE0FF = { - isa = PBXFileReference; - name = "regenc.c"; - path = "regenc.c"; - refType = 4; - sourceTree = "SOURCE_ROOT"; - }; - AD8875711B94E66D3436369E = { - fileRef = "0125A2B1F80C4E0DCB8AE0FF"; - isa = PBXBuildFile; - settings = { - ATTRIBUTES = ( - ); - }; - }; - 6FE48441EC9A3AA9DAAD6586 = { - isa = PBXFileReference; - name = "regerror.c"; - path = "regerror.c"; - refType = 4; - sourceTree = "SOURCE_ROOT"; - }; - C4D8A8F084600EE43E260635 = { - fileRef = "6FE48441EC9A3AA9DAAD6586"; - isa = PBXBuildFile; - settings = { - ATTRIBUTES = ( - ); - }; - }; - EADAB6E9EA2E2F1D404DF17D = { - isa = PBXFileReference; - name = "regexec.c"; - path = "regexec.c"; - refType = 4; - sourceTree = "SOURCE_ROOT"; - }; - 10D5FEE3F1464F0A19D30B72 = { - fileRef = "EADAB6E9EA2E2F1D404DF17D"; - isa = PBXBuildFile; - settings = { - ATTRIBUTES = ( - ); - }; - }; - 2AE87BE2DAE39B1811496335 = { - isa = PBXFileReference; - name = "regext.c"; - path = "regext.c"; - refType = 4; - sourceTree = "SOURCE_ROOT"; - }; - 2DAA8557ABEC39A18D55AD64 = { - fileRef = "2AE87BE2DAE39B1811496335"; - isa = PBXBuildFile; - settings = { - ATTRIBUTES = ( - ); - }; - }; - EFC47CEEAB84064E42E0A366 = { - isa = PBXFileReference; - name = "reggnu.c"; - path = "reggnu.c"; - refType = 4; - sourceTree = "SOURCE_ROOT"; - }; - 3DF8206800884E30C6CFBA38 = { - fileRef = "EFC47CEEAB84064E42E0A366"; - isa = PBXBuildFile; - settings = { - ATTRIBUTES = ( - ); - }; - }; - A05CBE34D16476E409CA74C5 = { - isa = PBXFileReference; - name = "regparse.c"; - path = "regparse.c"; - refType = 4; - sourceTree = "SOURCE_ROOT"; - }; - 5A0B6E73244B9151669A353D = { - fileRef = "A05CBE34D16476E409CA74C5"; - isa = PBXBuildFile; - settings = { - ATTRIBUTES = ( - ); - }; - }; - 4A7B253CD25D7611D02A69E2 = { - isa = PBXFileReference; - name = "regposerr.c"; - path = "regposerr.c"; - refType = 4; - sourceTree = "SOURCE_ROOT"; - }; - 809BE57B3EDD72B3508441E9 = { - fileRef = "4A7B253CD25D7611D02A69E2"; - isa = PBXBuildFile; - settings = { - ATTRIBUTES = ( - ); - }; - }; - B363F2540CFB9049FDD64DF9 = { - isa = PBXFileReference; - name = "regposix.c"; - path = "regposix.c"; - refType = 4; - sourceTree = "SOURCE_ROOT"; - }; - 9C8B131FA4EBB715E63E24AE = { - fileRef = "B363F2540CFB9049FDD64DF9"; - isa = PBXBuildFile; - settings = { - ATTRIBUTES = ( - ); - }; - }; - F1F8BA8FD83099467398EE71 = { - isa = PBXFileReference; - name = "regsyntax.c"; - path = "regsyntax.c"; - refType = 4; - sourceTree = "SOURCE_ROOT"; - }; - FA55922880E907B2E241436D = { - fileRef = "F1F8BA8FD83099467398EE71"; - isa = PBXBuildFile; - settings = { - ATTRIBUTES = ( - ); - }; - }; - 52D0CCBECBF2BD50F580181D = { - isa = PBXFileReference; - name = "regtrav.c"; - path = "regtrav.c"; - refType = 4; - sourceTree = "SOURCE_ROOT"; - }; - BBAF4062F90DB909220E6864 = { - fileRef = "52D0CCBECBF2BD50F580181D"; - isa = PBXBuildFile; - settings = { - ATTRIBUTES = ( - ); - }; - }; - 4AC74F5A71FF4FF04D64B027 = { - isa = PBXFileReference; - name = "regversion.c"; - path = "regversion.c"; - refType = 4; - sourceTree = "SOURCE_ROOT"; - }; - 2ED7809978D2C58080C00BF7 = { - fileRef = "4AC74F5A71FF4FF04D64B027"; - isa = PBXBuildFile; - settings = { - ATTRIBUTES = ( - ); - }; - }; - 7875E170ADA1A2B62A8C8798 = { - isa = PBXFileReference; - name = "st.c"; - path = "st.c"; - refType = 4; - sourceTree = "SOURCE_ROOT"; - }; - 867C776EB81CD557E7FDE8EA = { - fileRef = "7875E170ADA1A2B62A8C8798"; - isa = PBXBuildFile; - settings = { - ATTRIBUTES = ( - ); - }; - }; - D0D31F40E09615ABA8EA0EEE = { - isa = PBXFileReference; - name = "testc.c"; - path = "testc.c"; - refType = 4; - sourceTree = "SOURCE_ROOT"; - }; - 1DA4FBD0A7EA06786F484181 = { - fileRef = "D0D31F40E09615ABA8EA0EEE"; - isa = PBXBuildFile; - settings = { - ATTRIBUTES = ( - ); - }; - }; - 6EFF105266156A788611A107 = { - isa = PBXFileReference; - name = "testu.c"; - path = "testu.c"; - refType = 4; - sourceTree = "SOURCE_ROOT"; - }; - 92312AC9E4C7EE90584EF9B3 = { - fileRef = "6EFF105266156A788611A107"; - isa = PBXBuildFile; - settings = { - ATTRIBUTES = ( - ); - }; - }; - 01D1D4737A1609807EEC6323 = { - isa = PBXFileReference; - name = "ascii.c"; - path = "enc/ascii.c"; - refType = 4; - sourceTree = "SOURCE_ROOT"; - }; - AD99EFB77D80649A7AD07414 = { - fileRef = "01D1D4737A1609807EEC6323"; - isa = PBXBuildFile; - settings = { - ATTRIBUTES = ( - ); - }; - }; - 8A5CE5A2F0109864325EE936 = { - isa = PBXFileReference; - name = "big5.c"; - path = "enc/big5.c"; - refType = 4; - sourceTree = "SOURCE_ROOT"; - }; - C1E6E097D79769394623CDA2 = { - fileRef = "8A5CE5A2F0109864325EE936"; - isa = PBXBuildFile; - settings = { - ATTRIBUTES = ( - ); - }; - }; - 237988C4CFAA8A390CE6CD09 = { - isa = PBXFileReference; - name = "cp1251.c"; - path = "enc/cp1251.c"; - refType = 4; - sourceTree = "SOURCE_ROOT"; - }; - DB3D0B300CA0968E876B661A = { - fileRef = "237988C4CFAA8A390CE6CD09"; - isa = PBXBuildFile; - settings = { - ATTRIBUTES = ( - ); - }; - }; - 6D584F6591197182AB045974 = { - isa = PBXFileReference; - name = "euc_jp.c"; - path = "enc/euc_jp.c"; - refType = 4; - sourceTree = "SOURCE_ROOT"; - }; - D104CC2E2D1F8E607A424717 = { - fileRef = "6D584F6591197182AB045974"; - isa = PBXBuildFile; - settings = { - ATTRIBUTES = ( - ); - }; - }; - 3634380D2562B6D376460530 = { - isa = PBXFileReference; - name = "euc_kr.c"; - path = "enc/euc_kr.c"; - refType = 4; - sourceTree = "SOURCE_ROOT"; - }; - F0C93E60E271D771ACC59DD4 = { - fileRef = "3634380D2562B6D376460530"; - isa = PBXBuildFile; - settings = { - ATTRIBUTES = ( - ); - }; - }; - C2F874DB54D5DAE2510463F8 = { - isa = PBXFileReference; - name = "euc_tw.c"; - path = "enc/euc_tw.c"; - refType = 4; - sourceTree = "SOURCE_ROOT"; - }; - 201AEDEB948305AAADB1CD74 = { - fileRef = "C2F874DB54D5DAE2510463F8"; - isa = PBXBuildFile; - settings = { - ATTRIBUTES = ( - ); - }; - }; - 6E8C0DA9E7161926BCED070D = { - isa = PBXFileReference; - name = "gb18030.c"; - path = "enc/gb18030.c"; - refType = 4; - sourceTree = "SOURCE_ROOT"; - }; - DDA182C9017D8C9E833E8F30 = { - fileRef = "6E8C0DA9E7161926BCED070D"; - isa = PBXBuildFile; - settings = { - ATTRIBUTES = ( - ); - }; - }; - CF26CC5676C5C376F3C07F76 = { - isa = PBXFileReference; - name = "iso8859_1.c"; - path = "enc/iso8859_1.c"; - refType = 4; - sourceTree = "SOURCE_ROOT"; - }; - AAF062E6A672D3B82B8B6B9F = { - fileRef = "CF26CC5676C5C376F3C07F76"; - isa = PBXBuildFile; - settings = { - ATTRIBUTES = ( - ); - }; - }; - E85DDEF2771671A8E6853D7D = { - isa = PBXFileReference; - name = "iso8859_10.c"; - path = "enc/iso8859_10.c"; - refType = 4; - sourceTree = "SOURCE_ROOT"; - }; - 4828C0848688847E75C667BF = { - fileRef = "E85DDEF2771671A8E6853D7D"; - isa = PBXBuildFile; - settings = { - ATTRIBUTES = ( - ); - }; - }; - F3407363A9E293F0F54769F5 = { - isa = PBXFileReference; - name = "iso8859_11.c"; - path = "enc/iso8859_11.c"; - refType = 4; - sourceTree = "SOURCE_ROOT"; - }; - 54464B92F6CA479657E3A4B0 = { - fileRef = "F3407363A9E293F0F54769F5"; - isa = PBXBuildFile; - settings = { - ATTRIBUTES = ( - ); - }; - }; - 3A9FCA92A8A69DB5B4B34F8C = { - isa = PBXFileReference; - name = "iso8859_13.c"; - path = "enc/iso8859_13.c"; - refType = 4; - sourceTree = "SOURCE_ROOT"; - }; - 2EC2F2218022BA4E175FD18D = { - fileRef = "3A9FCA92A8A69DB5B4B34F8C"; - isa = PBXBuildFile; - settings = { - ATTRIBUTES = ( - ); - }; - }; - C1C56D9576862FAD78C5D192 = { - isa = PBXFileReference; - name = "iso8859_14.c"; - path = "enc/iso8859_14.c"; - refType = 4; - sourceTree = "SOURCE_ROOT"; - }; - 8975DDF36B2D4673C3917F65 = { - fileRef = "C1C56D9576862FAD78C5D192"; - isa = PBXBuildFile; - settings = { - ATTRIBUTES = ( - ); - }; - }; - CF57BC380E358CFC0011750B = { - isa = PBXFileReference; - name = "iso8859_15.c"; - path = "enc/iso8859_15.c"; - refType = 4; - sourceTree = "SOURCE_ROOT"; - }; - 720DB52247832495CE52686E = { - fileRef = "CF57BC380E358CFC0011750B"; - isa = PBXBuildFile; - settings = { - ATTRIBUTES = ( - ); - }; - }; - CB1A8356DD6D92978A131F65 = { - isa = PBXFileReference; - name = "iso8859_16.c"; - path = "enc/iso8859_16.c"; - refType = 4; - sourceTree = "SOURCE_ROOT"; - }; - 673F365E152F029005883820 = { - fileRef = "CB1A8356DD6D92978A131F65"; - isa = PBXBuildFile; - settings = { - ATTRIBUTES = ( - ); - }; - }; - AC8996CB4AA7ED741BA2B653 = { - isa = PBXFileReference; - name = "iso8859_2.c"; - path = "enc/iso8859_2.c"; - refType = 4; - sourceTree = "SOURCE_ROOT"; - }; - 5003134D918C64258ECF669F = { - fileRef = "AC8996CB4AA7ED741BA2B653"; - isa = PBXBuildFile; - settings = { - ATTRIBUTES = ( - ); - }; - }; - F9C940DAC156872F63AA7041 = { - isa = PBXFileReference; - name = "iso8859_3.c"; - path = "enc/iso8859_3.c"; - refType = 4; - sourceTree = "SOURCE_ROOT"; - }; - 61D8B44D5669A898245EC094 = { - fileRef = "F9C940DAC156872F63AA7041"; - isa = PBXBuildFile; - settings = { - ATTRIBUTES = ( - ); - }; - }; - 0AB9A6BF72A34F015452AB0C = { - isa = PBXFileReference; - name = "iso8859_4.c"; - path = "enc/iso8859_4.c"; - refType = 4; - sourceTree = "SOURCE_ROOT"; - }; - 735CDD263CEA47F27D7DCD16 = { - fileRef = "0AB9A6BF72A34F015452AB0C"; - isa = PBXBuildFile; - settings = { - ATTRIBUTES = ( - ); - }; - }; - 17EECA3A78C84BD7DEFF2959 = { - isa = PBXFileReference; - name = "iso8859_5.c"; - path = "enc/iso8859_5.c"; - refType = 4; - sourceTree = "SOURCE_ROOT"; - }; - 257978C3248C04762ED04B7C = { - fileRef = "17EECA3A78C84BD7DEFF2959"; - isa = PBXBuildFile; - settings = { - ATTRIBUTES = ( - ); - }; - }; - 6CBD23D222678945E76FF01B = { - isa = PBXFileReference; - name = "iso8859_6.c"; - path = "enc/iso8859_6.c"; - refType = 4; - sourceTree = "SOURCE_ROOT"; - }; - 912DBEC0790272635D97D41D = { - fileRef = "6CBD23D222678945E76FF01B"; - isa = PBXBuildFile; - settings = { - ATTRIBUTES = ( - ); - }; - }; - 5A39D0158A73207018EE9B7C = { - isa = PBXFileReference; - name = "iso8859_7.c"; - path = "enc/iso8859_7.c"; - refType = 4; - sourceTree = "SOURCE_ROOT"; - }; - 9850C2D8798C8B3CBCCADBAB = { - fileRef = "5A39D0158A73207018EE9B7C"; - isa = PBXBuildFile; - settings = { - ATTRIBUTES = ( - ); - }; - }; - F3B8B01B3CCEB76C9FCC3B0B = { - isa = PBXFileReference; - name = "iso8859_8.c"; - path = "enc/iso8859_8.c"; - refType = 4; - sourceTree = "SOURCE_ROOT"; - }; - 219260A83700502EE0CAAA4C = { - fileRef = "F3B8B01B3CCEB76C9FCC3B0B"; - isa = PBXBuildFile; - settings = { - ATTRIBUTES = ( - ); - }; - }; - 76D203D70E7F39CBCE6EE0E7 = { - isa = PBXFileReference; - name = "iso8859_9.c"; - path = "enc/iso8859_9.c"; - refType = 4; - sourceTree = "SOURCE_ROOT"; - }; - 6A7309E55B65AFD0CD7DC0F5 = { - fileRef = "76D203D70E7F39CBCE6EE0E7"; - isa = PBXBuildFile; - settings = { - ATTRIBUTES = ( - ); - }; - }; - DF6584F6CF2273808EC5E49E = { - isa = PBXFileReference; - name = "koi8.c"; - path = "enc/koi8.c"; - refType = 4; - sourceTree = "SOURCE_ROOT"; - }; - 5EB6E6DA07EB534BEB2D9504 = { - fileRef = "DF6584F6CF2273808EC5E49E"; - isa = PBXBuildFile; - settings = { - ATTRIBUTES = ( - ); - }; - }; - F7FAE504DF29FBF0CA5B6521 = { - isa = PBXFileReference; - name = "koi8_r.c"; - path = "enc/koi8_r.c"; - refType = 4; - sourceTree = "SOURCE_ROOT"; - }; - 7CD61C95360AC027FDD53741 = { - fileRef = "F7FAE504DF29FBF0CA5B6521"; - isa = PBXBuildFile; - settings = { - ATTRIBUTES = ( - ); - }; - }; - 243D71CCC4582184046AE82C = { - isa = PBXFileReference; - name = "mktable.c"; - path = "enc/mktable.c"; - refType = 4; - sourceTree = "SOURCE_ROOT"; - }; - A61637435AD8545BA3070D50 = { - fileRef = "243D71CCC4582184046AE82C"; - isa = PBXBuildFile; - settings = { - ATTRIBUTES = ( - ); - }; - }; - 6E648DE7F70123147B40AEE2 = { - isa = PBXFileReference; - name = "sjis.c"; - path = "enc/sjis.c"; - refType = 4; - sourceTree = "SOURCE_ROOT"; - }; - 3DD2BB989AD6F95E08842C77 = { - fileRef = "6E648DE7F70123147B40AEE2"; - isa = PBXBuildFile; - settings = { - ATTRIBUTES = ( - ); - }; - }; - 3D9C222367DA37768FF1B7F0 = { - isa = PBXFileReference; - name = "unicode.c"; - path = "enc/unicode.c"; - refType = 4; - sourceTree = "SOURCE_ROOT"; - }; - 0B84F102C5C551AE10631B3F = { - fileRef = "3D9C222367DA37768FF1B7F0"; - isa = PBXBuildFile; - settings = { - ATTRIBUTES = ( - ); - }; - }; - 85AF7D48F51C3AF95449EA56 = { - isa = PBXFileReference; - name = "utf16_be.c"; - path = "enc/utf16_be.c"; - refType = 4; - sourceTree = "SOURCE_ROOT"; - }; - 6002E9EE91B7CD53D7F6C1D9 = { - fileRef = "85AF7D48F51C3AF95449EA56"; - isa = PBXBuildFile; - settings = { - ATTRIBUTES = ( - ); - }; - }; - A22E8CB605AA62E4B18A79DC = { - isa = PBXFileReference; - name = "utf16_le.c"; - path = "enc/utf16_le.c"; - refType = 4; - sourceTree = "SOURCE_ROOT"; - }; - EF423018A81BFDA3184E3AB4 = { - fileRef = "A22E8CB605AA62E4B18A79DC"; - isa = PBXBuildFile; - settings = { - ATTRIBUTES = ( - ); - }; - }; - E8C480A8383B4DD3B2869498 = { - isa = PBXFileReference; - name = "utf32_be.c"; - path = "enc/utf32_be.c"; - refType = 4; - sourceTree = "SOURCE_ROOT"; - }; - 4318E871A6CC21C2E4313050 = { - fileRef = "E8C480A8383B4DD3B2869498"; - isa = PBXBuildFile; - settings = { - ATTRIBUTES = ( - ); - }; - }; - 808D2B53FCCE3316AA4360DB = { - isa = PBXFileReference; - name = "utf32_le.c"; - path = "enc/utf32_le.c"; - refType = 4; - sourceTree = "SOURCE_ROOT"; - }; - AEC876C331C7E3034F2FA9E1 = { - fileRef = "808D2B53FCCE3316AA4360DB"; - isa = PBXBuildFile; - settings = { - ATTRIBUTES = ( - ); - }; - }; - 3D0809782296D6CDCF6889DD = { - isa = PBXFileReference; - name = "utf8.c"; - path = "enc/utf8.c"; - refType = 4; - sourceTree = "SOURCE_ROOT"; - }; - 29EB19309BCEBA1C34787309 = { - fileRef = "3D0809782296D6CDCF6889DD"; - isa = PBXBuildFile; - settings = { - ATTRIBUTES = ( - ); - }; - }; - 5B10297D6DF772D0F1087188 = { - isa = PBXFileReference; - name = "testc.c"; - path = "win32/testc.c"; - refType = 4; - sourceTree = "SOURCE_ROOT"; - }; - 606EE73ADEB7964B2CE2111A = { - fileRef = "5B10297D6DF772D0F1087188"; - isa = PBXBuildFile; - settings = { - ATTRIBUTES = ( - ); - }; - }; - 98BA56D25D28991FE5FB1F3F = { - isa = PBXFileReference; - name = "config.h"; - path = "config.h"; - refType = 4; - sourceTree = "SOURCE_ROOT"; - }; - 8C82976484E62ED4E39611B7 = { - isa = PBXFileReference; - name = "oniggnu.h"; - path = "oniggnu.h"; - refType = 4; - sourceTree = "SOURCE_ROOT"; - }; - 3B5FF5276711BA050B53A038 = { - isa = PBXFileReference; - name = "onigposix.h"; - path = "onigposix.h"; - refType = 4; - sourceTree = "SOURCE_ROOT"; - }; - 07A74D6291F537EAE0A14967 = { - isa = PBXFileReference; - name = "oniguruma.h"; - path = "oniguruma.h"; - refType = 4; - sourceTree = "SOURCE_ROOT"; - }; - 79115FC57CC527574480E346 = { - isa = PBXFileReference; - name = "regenc.h"; - path = "regenc.h"; - refType = 4; - sourceTree = "SOURCE_ROOT"; - }; - 77D09AB910B276FAEF72857C = { - isa = PBXFileReference; - name = "regint.h"; - path = "regint.h"; - refType = 4; - sourceTree = "SOURCE_ROOT"; - }; - E42DEAB312FEC56B23213E59 = { - isa = PBXFileReference; - name = "regparse.h"; - path = "regparse.h"; - refType = 4; - sourceTree = "SOURCE_ROOT"; - }; - BE3127FCBB3EABE77C363A99 = { - isa = PBXFileReference; - name = "st.h"; - path = "st.h"; - refType = 4; - sourceTree = "SOURCE_ROOT"; - }; - 77A474F3ED00EC7D4B3A59E1 = { - isa = PBXFileReference; - name = "config.h"; - path = "win32/config.h"; - refType = 4; - sourceTree = "SOURCE_ROOT"; - }; - 522C3E5E36A9ACE7FAA73B6A = { - isa = PBXFileReference; - name = "onig.pro"; - path = "onig.pro"; - refType = 4; - sourceTree = "SOURCE_ROOT"; - }; - 883D7615C4D2DE3FA1218F12 = { - isa = PBXGroup; - children = ( - "98BA56D25D28991FE5FB1F3F", - "8C82976484E62ED4E39611B7", - "3B5FF5276711BA050B53A038", - "07A74D6291F537EAE0A14967", - "79115FC57CC527574480E346", - "77D09AB910B276FAEF72857C", - "E42DEAB312FEC56B23213E59", - "BE3127FCBB3EABE77C363A99", - "8C91CE79D88D1019A4127FDB"); - name = "Headers"; - refType = 4; - sourceTree = ""; - }; - 8C91CE79D88D1019A4127FDB = { - isa = PBXGroup; - children = ( - "77A474F3ED00EC7D4B3A59E1"); - name = "win32"; - refType = 4; - sourceTree = ""; - }; - 217CE2FA1DE975F3FA453FAE = { - isa = PBXGroup; - children = ( - "01D1D4737A1609807EEC6323", - "8A5CE5A2F0109864325EE936", - "237988C4CFAA8A390CE6CD09", - "6D584F6591197182AB045974", - "3634380D2562B6D376460530", - "C2F874DB54D5DAE2510463F8", - "6E8C0DA9E7161926BCED070D", - "CF26CC5676C5C376F3C07F76", - "E85DDEF2771671A8E6853D7D", - "F3407363A9E293F0F54769F5", - "3A9FCA92A8A69DB5B4B34F8C", - "C1C56D9576862FAD78C5D192", - "CF57BC380E358CFC0011750B", - "CB1A8356DD6D92978A131F65", - "AC8996CB4AA7ED741BA2B653", - "F9C940DAC156872F63AA7041", - "0AB9A6BF72A34F015452AB0C", - "17EECA3A78C84BD7DEFF2959", - "6CBD23D222678945E76FF01B", - "5A39D0158A73207018EE9B7C", - "F3B8B01B3CCEB76C9FCC3B0B", - "76D203D70E7F39CBCE6EE0E7", - "DF6584F6CF2273808EC5E49E", - "F7FAE504DF29FBF0CA5B6521", - "243D71CCC4582184046AE82C", - "6E648DE7F70123147B40AEE2", - "3D9C222367DA37768FF1B7F0", - "85AF7D48F51C3AF95449EA56", - "A22E8CB605AA62E4B18A79DC", - "E8C480A8383B4DD3B2869498", - "808D2B53FCCE3316AA4360DB", - "3D0809782296D6CDCF6889DD"); - name = "enc"; - refType = 4; - sourceTree = ""; - }; - 8CC886E18A608BFA3302186C = { - isa = PBXGroup; - children = ( - "5B10297D6DF772D0F1087188"); - name = "win32"; - refType = 4; - sourceTree = ""; - }; - FB61758D0F0FDA4BA867C3D5 = { - isa = PBXGroup; - children = ( - "45A3B531E1A3DD993ADD3125", - "0125A2B1F80C4E0DCB8AE0FF", - "6FE48441EC9A3AA9DAAD6586", - "EADAB6E9EA2E2F1D404DF17D", - "2AE87BE2DAE39B1811496335", - "EFC47CEEAB84064E42E0A366", - "A05CBE34D16476E409CA74C5", - "4A7B253CD25D7611D02A69E2", - "B363F2540CFB9049FDD64DF9", - "F1F8BA8FD83099467398EE71", - "52D0CCBECBF2BD50F580181D", - "4AC74F5A71FF4FF04D64B027", - "7875E170ADA1A2B62A8C8798", - "D0D31F40E09615ABA8EA0EEE", - "6EFF105266156A788611A107", - "217CE2FA1DE975F3FA453FAE", - "8CC886E18A608BFA3302186C"); - name = "Sources"; - refType = 4; - sourceTree = ""; - }; - 7CABE3C80E79AD2B307756D2 = { - isa = PBXGroup; - children = ( - "522C3E5E36A9ACE7FAA73B6A"); - name = "Sources [qmake]"; - refType = 4; - sourceTree = ""; - }; - A0A52A2ADF7A1E2A99738674 = { - buildActionMask = 2147483647; - files = ( - ); - generatedFileNames = ( - "A14CD0C98448AA103A28B989", - "AD8875711B94E66D3436369E", - "C4D8A8F084600EE43E260635", - "10D5FEE3F1464F0A19D30B72", - "2DAA8557ABEC39A18D55AD64", - "3DF8206800884E30C6CFBA38", - "5A0B6E73244B9151669A353D", - "809BE57B3EDD72B3508441E9", - "9C8B131FA4EBB715E63E24AE", - "FA55922880E907B2E241436D", - "BBAF4062F90DB909220E6864", - "2ED7809978D2C58080C00BF7", - "867C776EB81CD557E7FDE8EA", - "1DA4FBD0A7EA06786F484181", - "92312AC9E4C7EE90584EF9B3", - "AD99EFB77D80649A7AD07414", - "C1E6E097D79769394623CDA2", - "DB3D0B300CA0968E876B661A", - "D104CC2E2D1F8E607A424717", - "F0C93E60E271D771ACC59DD4", - "201AEDEB948305AAADB1CD74", - "DDA182C9017D8C9E833E8F30", - "AAF062E6A672D3B82B8B6B9F", - "4828C0848688847E75C667BF", - "54464B92F6CA479657E3A4B0", - "2EC2F2218022BA4E175FD18D", - "8975DDF36B2D4673C3917F65", - "720DB52247832495CE52686E", - "673F365E152F029005883820", - "5003134D918C64258ECF669F", - "61D8B44D5669A898245EC094", - "735CDD263CEA47F27D7DCD16", - "257978C3248C04762ED04B7C", - "912DBEC0790272635D97D41D", - "9850C2D8798C8B3CBCCADBAB", - "219260A83700502EE0CAAA4C", - "6A7309E55B65AFD0CD7DC0F5", - "5EB6E6DA07EB534BEB2D9504", - "7CD61C95360AC027FDD53741", - "A61637435AD8545BA3070D50", - "3DD2BB989AD6F95E08842C77", - "0B84F102C5C551AE10631B3F", - "6002E9EE91B7CD53D7F6C1D9", - "EF423018A81BFDA3184E3AB4", - "4318E871A6CC21C2E4313050", - "AEC876C331C7E3034F2FA9E1", - "29EB19309BCEBA1C34787309", - "606EE73ADEB7964B2CE2111A"); - isa = PBXShellScriptBuildPhase; - name = "Qt Preprocessors"; - neededFileNames = ( - "A14CD0C98448AA103A28B989", - "AD8875711B94E66D3436369E", - "C4D8A8F084600EE43E260635", - "10D5FEE3F1464F0A19D30B72", - "2DAA8557ABEC39A18D55AD64", - "3DF8206800884E30C6CFBA38", - "5A0B6E73244B9151669A353D", - "809BE57B3EDD72B3508441E9", - "9C8B131FA4EBB715E63E24AE", - "FA55922880E907B2E241436D", - "BBAF4062F90DB909220E6864", - "2ED7809978D2C58080C00BF7", - "867C776EB81CD557E7FDE8EA", - "1DA4FBD0A7EA06786F484181", - "92312AC9E4C7EE90584EF9B3", - "AD99EFB77D80649A7AD07414", - "C1E6E097D79769394623CDA2", - "DB3D0B300CA0968E876B661A", - "D104CC2E2D1F8E607A424717", - "F0C93E60E271D771ACC59DD4", - "201AEDEB948305AAADB1CD74", - "DDA182C9017D8C9E833E8F30", - "AAF062E6A672D3B82B8B6B9F", - "4828C0848688847E75C667BF", - "54464B92F6CA479657E3A4B0", - "2EC2F2218022BA4E175FD18D", - "8975DDF36B2D4673C3917F65", - "720DB52247832495CE52686E", - "673F365E152F029005883820", - "5003134D918C64258ECF669F", - "61D8B44D5669A898245EC094", - "735CDD263CEA47F27D7DCD16", - "257978C3248C04762ED04B7C", - "912DBEC0790272635D97D41D", - "9850C2D8798C8B3CBCCADBAB", - "219260A83700502EE0CAAA4C", - "6A7309E55B65AFD0CD7DC0F5", - "5EB6E6DA07EB534BEB2D9504", - "7CD61C95360AC027FDD53741", - "A61637435AD8545BA3070D50", - "3DD2BB989AD6F95E08842C77", - "0B84F102C5C551AE10631B3F", - "6002E9EE91B7CD53D7F6C1D9", - "EF423018A81BFDA3184E3AB4", - "4318E871A6CC21C2E4313050", - "AEC876C331C7E3034F2FA9E1", - "29EB19309BCEBA1C34787309", - "606EE73ADEB7964B2CE2111A"); - shellPath = "/bin/sh"; - shellScript = "make\ -C\ /Users/rick/bit/prj/compare/src/vendor/onig\ -f\ \'onig.xcodeproj/qt_preprocess.mak\'"; - }; - C29B8785722055ED95EF7B57 = { - buildActionMask = 2147483647; - files = ( - "A14CD0C98448AA103A28B989", - "AD8875711B94E66D3436369E", - "C4D8A8F084600EE43E260635", - "10D5FEE3F1464F0A19D30B72", - "2DAA8557ABEC39A18D55AD64", - "3DF8206800884E30C6CFBA38", - "5A0B6E73244B9151669A353D", - "809BE57B3EDD72B3508441E9", - "9C8B131FA4EBB715E63E24AE", - "FA55922880E907B2E241436D", - "BBAF4062F90DB909220E6864", - "2ED7809978D2C58080C00BF7", - "867C776EB81CD557E7FDE8EA", - "1DA4FBD0A7EA06786F484181", - "92312AC9E4C7EE90584EF9B3", - "AD99EFB77D80649A7AD07414", - "C1E6E097D79769394623CDA2", - "DB3D0B300CA0968E876B661A", - "D104CC2E2D1F8E607A424717", - "F0C93E60E271D771ACC59DD4", - "201AEDEB948305AAADB1CD74", - "DDA182C9017D8C9E833E8F30", - "AAF062E6A672D3B82B8B6B9F", - "4828C0848688847E75C667BF", - "54464B92F6CA479657E3A4B0", - "2EC2F2218022BA4E175FD18D", - "8975DDF36B2D4673C3917F65", - "720DB52247832495CE52686E", - "673F365E152F029005883820", - "5003134D918C64258ECF669F", - "61D8B44D5669A898245EC094", - "735CDD263CEA47F27D7DCD16", - "257978C3248C04762ED04B7C", - "912DBEC0790272635D97D41D", - "9850C2D8798C8B3CBCCADBAB", - "219260A83700502EE0CAAA4C", - "6A7309E55B65AFD0CD7DC0F5", - "5EB6E6DA07EB534BEB2D9504", - "7CD61C95360AC027FDD53741", - "A61637435AD8545BA3070D50", - "3DD2BB989AD6F95E08842C77", - "0B84F102C5C551AE10631B3F", - "6002E9EE91B7CD53D7F6C1D9", - "EF423018A81BFDA3184E3AB4", - "4318E871A6CC21C2E4313050", - "AEC876C331C7E3034F2FA9E1", - "29EB19309BCEBA1C34787309", - "606EE73ADEB7964B2CE2111A"); - isa = PBXSourcesBuildPhase; - name = "Build Sources"; - }; - 9B36DA7E32F0304E780E7972 = { - isa = PBXFrameworkReference; - name = "QtGui.framework"; - path = "/Library/Frameworks/QtGui.framework"; - refType = 0; - sourceTree = ""; - }; - 501667F26B3C1FF6767A7C12 = { - fileRef = "9B36DA7E32F0304E780E7972"; - isa = PBXBuildFile; - settings = { - }; - }; - 7BC2E65A5E699A5E5D834CA2 = { - isa = PBXFrameworkReference; - name = "QtCore.framework"; - path = "/Library/Frameworks/QtCore.framework"; - refType = 0; - sourceTree = ""; - }; - 069D05B0128AE5DC7EE31738 = { - fileRef = "7BC2E65A5E699A5E5D834CA2"; - isa = PBXBuildFile; - settings = { - }; - }; - ED1E82605DD74B483AF3C982 = { - children = ( - "9B36DA7E32F0304E780E7972", - "7BC2E65A5E699A5E5D834CA2"); - isa = PBXGroup; - name = "External Frameworks and Libraries"; - path = ""; - refType = 4; - sourceTree = ""; - }; - 2A1043669E6E5A7426EA502A = { - buildActionMask = 2147483647; - files = ( - "501667F26B3C1FF6767A7C12", - "069D05B0128AE5DC7EE31738"); - isa = PBXFrameworksBuildPhase; - name = "Frameworks & Libraries"; - }; - 3787F99312C85FF0073FD7BA = { - buildActionMask = 2147483647; - files = ( - ); - isa = PBXResourcesBuildPhase; - name = "Bundle Resources"; - }; - 05596AB53D8D521C69802C27 = { - children = ( - "FB61758D0F0FDA4BA867C3D5", - "883D7615C4D2DE3FA1218F12", - "7CABE3C80E79AD2B307756D2", - "ED1E82605DD74B483AF3C982"); - isa = PBXGroup; - name = "onig"; - path = ""; - refType = 4; - sourceTree = ""; - }; - D76F688573FD7E50230F12FB = { - isa = PBXFileReference; - explicitFileType = "wrapper.application"; - path = "onig.app"; - refType = 3; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 068F80C7519D0528FB08E821 = { - children = ( - "D76F688573FD7E50230F12FB"); - isa = PBXGroup; - name = "Products"; - refType = 4; - }; - FFA26564C089E4FFFD2340B2 = { - buildPhases = ( - "D7BA7D76DAB5DD13389D6332", - "A0A52A2ADF7A1E2A99738674", - "C29B8785722055ED95EF7B57", - "2A1043669E6E5A7426EA502A", - "3787F99312C85FF0073FD7BA"); - buildSettings = { - CC = "/usr/bin/gcc"; - CPLUSPLUS = "/usr/bin/g++"; - LEXFLAGS = ""; - YACCFLAGS = "-d"; - OTHER_REZFLAGS = ""; - SECTORDER_FLAGS = ""; - WARNING_CFLAGS = ""; - PREBINDING = NO; - INFOPLIST_FILE = "Info.plist"; - BUILD_ROOT = "/Users/rick/bit/prj/compare/src/vendor/onig"; - OTHER_LDFLAGS = ( - "-headerpad_max_install_names", - "-L/Library/Frameworks", - "-F/Library/Frameworks"); - DYLIB_CURRENT_VERSION = "1.0.0"; - DYLIB_COMPATIBILITY_VERSION = "1.0"; - MACOSX_DEPLOYMENT_TARGET = "10.4"; - PRODUCT_NAME = "onig"; - }; - conditionalBuildSettings = { - }; - dependencies = ( - ); - productReference = "D76F688573FD7E50230F12FB"; - shouldUseHeadermap = 1; - buildConfigurationList = 17B3380A4D6A7D415E7F2E1E; - isa = PBXNativeTarget; - productType = "com.apple.product-type.application"; - productSettingsXML = " - - - - NSPrincipalClass - NSApplication - CFBundleIconFile - - CFBundlePackageType - APPL - CFBundleGetInfoString - Created by Qt/QMake - CFBundleSignature - ???? - CFBundleExecutable - onig - CFBundleIdentifier - com.yourcompany.onig - NOTE - This file was generated by Qt/QMake. - - -"; - name = "onig"; - productName = "onig"; - startupPath = "<>"; - }; - 4B72B24813252891014BCF61 = { - isa = XCBuildConfiguration; - buildSettings = { - COPY_PHASE_STRIP = "NO"; - GCC_GENERATE_DEBUGGING_SYMBOLS = "YES"; - GCC_OPTIMIZATION_LEVEL = "0"; - PRODUCT_NAME = "onig"; - HEADER_SEARCH_PATHS = ( - "/Library/Frameworks/QtCore.framework/Versions/4/Headers", - "/usr/include/QtCore", - "/Library/Frameworks/QtGui.framework/Versions/4/Headers", - "/usr/include/QtGui", - "/usr/include", - ".", - ".", - "/usr/local/include", - "/System/Library/Frameworks/CarbonCore.framework/Headers", - "/usr/local/Qt4.8/mkspecs/macx-xcode"); - LIBRARY_SEARCH_PATHS = ( - "/Library/Frameworks"); - FRAMEWORK_SEARCH_PATHS = ( - "/Library/Frameworks", - "/Library/Frameworks"); - INFOPLIST_FILE = "Info.plist"; - OTHER_CFLAGS = ( - "-pipe", - "-g", - "-Wall", - "-W", - "-DQT_GUI_LIB", - "-DQT_CORE_LIB", - "-DQT_SHARED"); - OTHER_CPLUSPLUSFLAGS = ( - "-pipe", - "-g", - "-Wall", - "-W", - "-DQT_GUI_LIB", - "-DQT_CORE_LIB", - "-DQT_SHARED"); - OTHER_LDFLAGS = ( - "-headerpad_max_install_names", - "-L/Library/Frameworks", - "-F/Library/Frameworks"); - ARCHS = "x86_64"; - }; - name = "Debug"; - }; - BEC09A62E69C3553534FF35E = { - isa = XCBuildConfiguration; - buildSettings = { - COPY_PHASE_STRIP = "NO"; - GCC_GENERATE_DEBUGGING_SYMBOLS = "YES"; - GCC_OPTIMIZATION_LEVEL = "0"; - PRODUCT_NAME = "onig"; - PRODUCT_NAME = "onig"; - }; - name = "Debug"; - }; - 2C641C3335766025DD51B7BD = { - buildRules = ( - ); - buildSettings = { - COPY_PHASE_STRIP = "NO"; - GCC_GENERATE_DEBUGGING_SYMBOLS = "YES"; - GCC_OPTIMIZATION_LEVEL = "0"; - PRODUCT_NAME = "onig"; - }; - isa = "PBXBuildStyle"; - name = "Debug"; - }; - D70590BEB531B51029F711BB = { - isa = XCBuildConfiguration; - buildSettings = { - COPY_PHASE_STRIP = "YES"; - GCC_GENERATE_DEBUGGING_SYMBOLS = "NO"; - PRODUCT_NAME = "onig"; - HEADER_SEARCH_PATHS = ( - "/Library/Frameworks/QtCore.framework/Versions/4/Headers", - "/usr/include/QtCore", - "/Library/Frameworks/QtGui.framework/Versions/4/Headers", - "/usr/include/QtGui", - "/usr/include", - ".", - ".", - "/usr/local/include", - "/System/Library/Frameworks/CarbonCore.framework/Headers", - "/usr/local/Qt4.8/mkspecs/macx-xcode"); - LIBRARY_SEARCH_PATHS = ( - "/Library/Frameworks"); - FRAMEWORK_SEARCH_PATHS = ( - "/Library/Frameworks", - "/Library/Frameworks"); - INFOPLIST_FILE = "Info.plist"; - OTHER_CFLAGS = ( - "-pipe", - "-g", - "-Wall", - "-W", - "-DQT_GUI_LIB", - "-DQT_CORE_LIB", - "-DQT_SHARED"); - OTHER_CPLUSPLUSFLAGS = ( - "-pipe", - "-g", - "-Wall", - "-W", - "-DQT_GUI_LIB", - "-DQT_CORE_LIB", - "-DQT_SHARED"); - OTHER_LDFLAGS = ( - "-headerpad_max_install_names", - "-L/Library/Frameworks", - "-F/Library/Frameworks"); - ARCHS = "x86_64"; - }; - name = "Release"; - }; - 8C7174830A1E4DCBA0332EC1 = { - isa = XCBuildConfiguration; - buildSettings = { - COPY_PHASE_STRIP = "YES"; - GCC_GENERATE_DEBUGGING_SYMBOLS = "NO"; - PRODUCT_NAME = "onig"; - PRODUCT_NAME = "onig"; - }; - name = "Release"; - }; - 26DE8D2AEA4B3714B41E931F = { - buildRules = ( - ); - buildSettings = { - COPY_PHASE_STRIP = "YES"; - GCC_GENERATE_DEBUGGING_SYMBOLS = "NO"; - PRODUCT_NAME = "onig"; - }; - isa = "PBXBuildStyle"; - name = "Release"; - }; - CC82A9286117DFED018F418F = { - isa = XCConfigurationList; - buildConfigurations = ( - "4B72B24813252891014BCF61", - "D70590BEB531B51029F711BB"); - defaultConfigurationIsVisible = 0; - defaultConfigurationIsName = "Debug"; - }; - 17B3380A4D6A7D415E7F2E1E = { - isa = XCConfigurationList; - buildConfigurations = ( - "BEC09A62E69C3553534FF35E", - "8C7174830A1E4DCBA0332EC1"); - defaultConfigurationIsVisible = 0; - defaultConfigurationIsName = "Debug"; - }; - 91B15E841AA80083484172DE = { - buildStyles = ( - "2C641C3335766025DD51B7BD", - "26DE8D2AEA4B3714B41E931F"); - hasScannedForEncodings = 1; - isa = PBXProject; - mainGroup = "05596AB53D8D521C69802C27"; - buildConfigurationList = "CC82A9286117DFED018F418F"; - projectDirPath = ""; - targets = ( - "FFA26564C089E4FFFD2340B2"); - }; - }; - rootObject = "91B15E841AA80083484172DE"; -} diff --git a/vendor/onig/onig.xcodeproj/qt_makeqmake.mak b/vendor/onig/onig.xcodeproj/qt_makeqmake.mak deleted file mode 100644 index 309d5bb..0000000 --- a/vendor/onig/onig.xcodeproj/qt_makeqmake.mak +++ /dev/null @@ -1,77 +0,0 @@ -############################################################################# -# Makefile for building: onig.app/Contents/MacOS/onig -# Generated by qmake (2.01a) (Qt 4.8.4) on: Wed Jan 23 20:34:27 2013 -# Project: onig.pro -# Template: app -# Command: /usr/bin/qmake -o onig.xcodeproj/project.pbxproj onig.pro -############################################################################# - -QMAKE = /usr/bin/qmake -onig.xcodeproj/project.pbxproj: onig.pro /usr/local/Qt4.8/mkspecs/macx-xcode/qmake.conf /usr/local/Qt4.8/mkspecs/common/unix.conf \ - /usr/local/Qt4.8/mkspecs/common/mac.conf \ - /usr/local/Qt4.8/mkspecs/common/gcc-base.conf \ - /usr/local/Qt4.8/mkspecs/common/gcc-base-macx.conf \ - /usr/local/Qt4.8/mkspecs/common/g++-base.conf \ - /usr/local/Qt4.8/mkspecs/common/g++-macx.conf \ - /usr/local/Qt4.8/mkspecs/qconfig.pri \ - /usr/local/Qt4.8/mkspecs/modules/qt_webkit_version.pri \ - /usr/local/Qt4.8/mkspecs/features/qt_functions.prf \ - /usr/local/Qt4.8/mkspecs/features/qt_config.prf \ - /usr/local/Qt4.8/mkspecs/features/exclusive_builds.prf \ - /usr/local/Qt4.8/mkspecs/features/default_pre.prf \ - /usr/local/Qt4.8/mkspecs/features/mac/default_pre.prf \ - /usr/local/Qt4.8/mkspecs/features/mac/dwarf2.prf \ - /usr/local/Qt4.8/mkspecs/features/debug.prf \ - /usr/local/Qt4.8/mkspecs/features/default_post.prf \ - /usr/local/Qt4.8/mkspecs/features/mac/default_post.prf \ - /usr/local/Qt4.8/mkspecs/features/mac/x86_64.prf \ - /usr/local/Qt4.8/mkspecs/features/mac/objective_c.prf \ - /usr/local/Qt4.8/mkspecs/features/warn_on.prf \ - /usr/local/Qt4.8/mkspecs/features/qt.prf \ - /usr/local/Qt4.8/mkspecs/features/unix/thread.prf \ - /usr/local/Qt4.8/mkspecs/features/moc.prf \ - /usr/local/Qt4.8/mkspecs/features/mac/rez.prf \ - /usr/local/Qt4.8/mkspecs/features/mac/sdk.prf \ - /usr/local/Qt4.8/mkspecs/features/resources.prf \ - /usr/local/Qt4.8/mkspecs/features/uic.prf \ - /usr/local/Qt4.8/mkspecs/features/yacc.prf \ - /usr/local/Qt4.8/mkspecs/features/lex.prf \ - /usr/local/Qt4.8/mkspecs/features/include_source_dir.prf \ - /Library/Frameworks/QtGui.framework/QtGui.prl \ - /Library/Frameworks/QtCore.framework/QtCore.prl - $(QMAKE) -o onig.xcodeproj/project.pbxproj onig.pro -/usr/local/Qt4.8/mkspecs/common/unix.conf: -/usr/local/Qt4.8/mkspecs/common/mac.conf: -/usr/local/Qt4.8/mkspecs/common/gcc-base.conf: -/usr/local/Qt4.8/mkspecs/common/gcc-base-macx.conf: -/usr/local/Qt4.8/mkspecs/common/g++-base.conf: -/usr/local/Qt4.8/mkspecs/common/g++-macx.conf: -/usr/local/Qt4.8/mkspecs/qconfig.pri: -/usr/local/Qt4.8/mkspecs/modules/qt_webkit_version.pri: -/usr/local/Qt4.8/mkspecs/features/qt_functions.prf: -/usr/local/Qt4.8/mkspecs/features/qt_config.prf: -/usr/local/Qt4.8/mkspecs/features/exclusive_builds.prf: -/usr/local/Qt4.8/mkspecs/features/default_pre.prf: -/usr/local/Qt4.8/mkspecs/features/mac/default_pre.prf: -/usr/local/Qt4.8/mkspecs/features/mac/dwarf2.prf: -/usr/local/Qt4.8/mkspecs/features/debug.prf: -/usr/local/Qt4.8/mkspecs/features/default_post.prf: -/usr/local/Qt4.8/mkspecs/features/mac/default_post.prf: -/usr/local/Qt4.8/mkspecs/features/mac/x86_64.prf: -/usr/local/Qt4.8/mkspecs/features/mac/objective_c.prf: -/usr/local/Qt4.8/mkspecs/features/warn_on.prf: -/usr/local/Qt4.8/mkspecs/features/qt.prf: -/usr/local/Qt4.8/mkspecs/features/unix/thread.prf: -/usr/local/Qt4.8/mkspecs/features/moc.prf: -/usr/local/Qt4.8/mkspecs/features/mac/rez.prf: -/usr/local/Qt4.8/mkspecs/features/mac/sdk.prf: -/usr/local/Qt4.8/mkspecs/features/resources.prf: -/usr/local/Qt4.8/mkspecs/features/uic.prf: -/usr/local/Qt4.8/mkspecs/features/yacc.prf: -/usr/local/Qt4.8/mkspecs/features/lex.prf: -/usr/local/Qt4.8/mkspecs/features/include_source_dir.prf: -/Library/Frameworks/QtGui.framework/QtGui.prl: -/Library/Frameworks/QtCore.framework/QtCore.prl: -qmake: FORCE - @$(QMAKE) -o onig.xcodeproj/project.pbxproj onig.pro - diff --git a/vendor/onig/onig.xcodeproj/qt_preprocess.mak b/vendor/onig/onig.xcodeproj/qt_preprocess.mak deleted file mode 100644 index 6995af6..0000000 --- a/vendor/onig/onig.xcodeproj/qt_preprocess.mak +++ /dev/null @@ -1,55 +0,0 @@ -############################################################################# -# Makefile for building: onig.app/Contents/MacOS/onig -# Generated by qmake (2.01a) (Qt 4.8.4) on: Wed Jan 23 20:34:27 2013 -# Project: onig.pro -# Template: app -# Command: /usr/bin/qmake -o onig.xcodeproj/project.pbxproj onig.pro -############################################################################# - -MOC = /Developer/Tools/Qt/moc -UIC = /Developer/Tools/Qt/uic -LEX = flex -LEXFLAGS = -YACC = yacc -YACCFLAGS = -d -DEFINES = -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -INCPATH = -I/usr/local/Qt4.8/mkspecs/macx-xcode -I. -I/Library/Frameworks/QtCore.framework/Versions/4/Headers -I/usr/include/QtCore -I/Library/Frameworks/QtGui.framework/Versions/4/Headers -I/usr/include/QtGui -I/usr/include -I. -I. -I/usr/local/include -I/System/Library/Frameworks/CarbonCore.framework/Headers -F/Library/Frameworks -DEL_FILE = rm -f -MOVE = mv -f - -IMAGES = -PARSERS = -preprocess: $(PARSERS) compilers -clean preprocess_clean: parser_clean compiler_clean - -parser_clean: -check: first - -mocclean: compiler_moc_header_clean compiler_moc_source_clean - -mocables: compiler_moc_header_make_all compiler_moc_source_make_all - -compilers: -compiler_objective_c_make_all: -compiler_objective_c_clean: -compiler_moc_header_make_all: -compiler_moc_header_clean: -compiler_rcc_make_all: -compiler_rcc_clean: -compiler_image_collection_make_all: qmake_image_collection.cpp -compiler_image_collection_clean: - -$(DEL_FILE) qmake_image_collection.cpp -compiler_moc_source_make_all: -compiler_moc_source_clean: -compiler_rez_source_make_all: -compiler_rez_source_clean: -compiler_uic_make_all: -compiler_uic_clean: -compiler_yacc_decl_make_all: -compiler_yacc_decl_clean: -compiler_yacc_impl_make_all: -compiler_yacc_impl_clean: -compiler_lex_make_all: -compiler_lex_clean: -compiler_clean: - diff --git a/vendor/onig/onigmo.h b/vendor/onig/onigmo.h deleted file mode 100644 index 99afcf6..0000000 --- a/vendor/onig/onigmo.h +++ /dev/null @@ -1,935 +0,0 @@ -#ifndef ONIGMO_H -#define ONIGMO_H -/********************************************************************** - onigmo.h - Onigmo (Oniguruma-mod) (regular expression library) -**********************************************************************/ -/*- - * Copyright (c) 2002-2009 K.Kosako - * Copyright (c) 2011-2017 K.Takata - * 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. - */ - -#ifdef __cplusplus -extern "C" { -# if 0 -} /* satisfy cc-mode */ -# endif -#endif - -#define ONIGMO_VERSION_MAJOR 6 -#define ONIGMO_VERSION_MINOR 1 -#define ONIGMO_VERSION_TEENY 2 - -#ifndef ONIG_EXTERN -# ifdef RUBY_EXTERN -# define ONIG_EXTERN RUBY_EXTERN -# else -# if defined(_WIN32) && !defined(__GNUC__) -# if defined(EXPORT) || defined(RUBY_EXPORT) -# define ONIG_EXTERN extern __declspec(dllexport) -# else -# define ONIG_EXTERN extern __declspec(dllimport) -# endif -# endif -# endif -#endif - -#ifndef ONIG_EXTERN -# define ONIG_EXTERN extern -#endif - -#ifndef RUBY -# ifndef RUBY_SYMBOL_EXPORT_BEGIN -# define RUBY_SYMBOL_EXPORT_BEGIN -# define RUBY_SYMBOL_EXPORT_END -# endif -#endif - -RUBY_SYMBOL_EXPORT_BEGIN - -#include /* for size_t */ - -/* PART: character encoding */ - -#ifndef ONIG_ESCAPE_UCHAR_COLLISION -# define UChar OnigUChar -#endif - -typedef unsigned char OnigUChar; -typedef unsigned int OnigCodePoint; -typedef unsigned int OnigCtype; -typedef size_t OnigDistance; -typedef ptrdiff_t OnigPosition; - -#define ONIG_INFINITE_DISTANCE ~((OnigDistance )0) - -/* - * Onig casefold/case mapping flags and related definitions - * - * Subfields (starting with 0 at LSB): - * 0-2: Code point count in casefold.h - * 3-12: Index into SpecialCaseMapping array in casefold.h - * 13-22: Case folding/mapping flags - */ -typedef unsigned int OnigCaseFoldType; /* case fold flag */ - -ONIG_EXTERN OnigCaseFoldType OnigDefaultCaseFoldFlag; - -/* bits for actual code point count; 3 bits is more than enough, currently only 2 used */ -#define OnigCodePointMaskWidth 3 -#define OnigCodePointMask ((1< Unicode:0x1ffc */ - -/* code range */ -#define ONIGENC_CODE_RANGE_NUM(range) ((int )range[0]) -#define ONIGENC_CODE_RANGE_FROM(range,i) range[((i)*2) + 1] -#define ONIGENC_CODE_RANGE_TO(range,i) range[((i)*2) + 2] - -typedef struct { - int byte_len; /* argument(original) character(s) byte length */ - int code_len; /* number of code */ - OnigCodePoint code[ONIGENC_MAX_COMP_CASE_FOLD_CODE_LEN]; -} OnigCaseFoldCodeItem; - -typedef struct { - OnigCodePoint esc; - OnigCodePoint anychar; - OnigCodePoint anytime; - OnigCodePoint zero_or_one_time; - OnigCodePoint one_or_more_time; - OnigCodePoint anychar_anytime; -} OnigMetaCharTableType; - -typedef int (*OnigApplyAllCaseFoldFunc)(OnigCodePoint from, OnigCodePoint* to, int to_len, void* arg); - -typedef struct OnigEncodingTypeST { - int (*precise_mbc_enc_len)(const OnigUChar* p,const OnigUChar* e, const struct OnigEncodingTypeST* enc); - const char* name; - int max_enc_len; - int min_enc_len; - int (*is_mbc_newline)(const OnigUChar* p, const OnigUChar* end, const struct OnigEncodingTypeST* enc); - OnigCodePoint (*mbc_to_code)(const OnigUChar* p, const OnigUChar* end, const struct OnigEncodingTypeST* enc); - int (*code_to_mbclen)(OnigCodePoint code, const struct OnigEncodingTypeST* enc); - int (*code_to_mbc)(OnigCodePoint code, OnigUChar *buf, const struct OnigEncodingTypeST* enc); - int (*mbc_case_fold)(OnigCaseFoldType flag, const OnigUChar** pp, const OnigUChar* end, OnigUChar* to, const struct OnigEncodingTypeST* enc); - int (*apply_all_case_fold)(OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg, const struct OnigEncodingTypeST* enc); - int (*get_case_fold_codes_by_str)(OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem acs[], const struct OnigEncodingTypeST* enc); - int (*property_name_to_ctype)(const struct OnigEncodingTypeST* enc, const OnigUChar* p, const OnigUChar* end); - int (*is_code_ctype)(OnigCodePoint code, OnigCtype ctype, const struct OnigEncodingTypeST* enc); - int (*get_ctype_code_range)(OnigCtype ctype, OnigCodePoint* sb_out, const OnigCodePoint* ranges[], const struct OnigEncodingTypeST* enc); - OnigUChar* (*left_adjust_char_head)(const OnigUChar* start, const OnigUChar* p, const OnigUChar* end, const struct OnigEncodingTypeST* enc); - int (*is_allowed_reverse_match)(const OnigUChar* p, const OnigUChar* end, const struct OnigEncodingTypeST* enc); - int (*case_map)(OnigCaseFoldType* flagP, const OnigUChar** pp, const OnigUChar* end, OnigUChar* to, OnigUChar* to_end, const struct OnigEncodingTypeST* enc); - int ruby_encoding_index; - unsigned int flags; -} OnigEncodingType; - -typedef const OnigEncodingType* OnigEncoding; - -ONIG_EXTERN const OnigEncodingType OnigEncodingASCII; -#ifndef RUBY -ONIG_EXTERN const OnigEncodingType OnigEncodingISO_8859_1; -ONIG_EXTERN const OnigEncodingType OnigEncodingISO_8859_2; -ONIG_EXTERN const OnigEncodingType OnigEncodingISO_8859_3; -ONIG_EXTERN const OnigEncodingType OnigEncodingISO_8859_4; -ONIG_EXTERN const OnigEncodingType OnigEncodingISO_8859_5; -ONIG_EXTERN const OnigEncodingType OnigEncodingISO_8859_6; -ONIG_EXTERN const OnigEncodingType OnigEncodingISO_8859_7; -ONIG_EXTERN const OnigEncodingType OnigEncodingISO_8859_8; -ONIG_EXTERN const OnigEncodingType OnigEncodingISO_8859_9; -ONIG_EXTERN const OnigEncodingType OnigEncodingISO_8859_10; -ONIG_EXTERN const OnigEncodingType OnigEncodingISO_8859_11; -ONIG_EXTERN const OnigEncodingType OnigEncodingISO_8859_13; -ONIG_EXTERN const OnigEncodingType OnigEncodingISO_8859_14; -ONIG_EXTERN const OnigEncodingType OnigEncodingISO_8859_15; -ONIG_EXTERN const OnigEncodingType OnigEncodingISO_8859_16; -ONIG_EXTERN const OnigEncodingType OnigEncodingUTF_8; -ONIG_EXTERN const OnigEncodingType OnigEncodingUTF_16BE; -ONIG_EXTERN const OnigEncodingType OnigEncodingUTF_16LE; -ONIG_EXTERN const OnigEncodingType OnigEncodingUTF_32BE; -ONIG_EXTERN const OnigEncodingType OnigEncodingUTF_32LE; -ONIG_EXTERN const OnigEncodingType OnigEncodingEUC_JP; -ONIG_EXTERN const OnigEncodingType OnigEncodingEUC_TW; -ONIG_EXTERN const OnigEncodingType OnigEncodingEUC_KR; -ONIG_EXTERN const OnigEncodingType OnigEncodingEUC_CN; -ONIG_EXTERN const OnigEncodingType OnigEncodingShift_JIS; -ONIG_EXTERN const OnigEncodingType OnigEncodingWindows_31J; -/* ONIG_EXTERN const OnigEncodingType OnigEncodingKOI8; */ -ONIG_EXTERN const OnigEncodingType OnigEncodingKOI8_R; -ONIG_EXTERN const OnigEncodingType OnigEncodingKOI8_U; -ONIG_EXTERN const OnigEncodingType OnigEncodingWindows_1250; -ONIG_EXTERN const OnigEncodingType OnigEncodingWindows_1251; -ONIG_EXTERN const OnigEncodingType OnigEncodingWindows_1252; -ONIG_EXTERN const OnigEncodingType OnigEncodingWindows_1253; -ONIG_EXTERN const OnigEncodingType OnigEncodingWindows_1254; -ONIG_EXTERN const OnigEncodingType OnigEncodingWindows_1257; -ONIG_EXTERN const OnigEncodingType OnigEncodingBIG5; -ONIG_EXTERN const OnigEncodingType OnigEncodingGB18030; -#endif /* RUBY */ - -#define ONIG_ENCODING_ASCII (&OnigEncodingASCII) -#ifndef RUBY -# define ONIG_ENCODING_ISO_8859_1 (&OnigEncodingISO_8859_1) -# define ONIG_ENCODING_ISO_8859_2 (&OnigEncodingISO_8859_2) -# define ONIG_ENCODING_ISO_8859_3 (&OnigEncodingISO_8859_3) -# define ONIG_ENCODING_ISO_8859_4 (&OnigEncodingISO_8859_4) -# define ONIG_ENCODING_ISO_8859_5 (&OnigEncodingISO_8859_5) -# define ONIG_ENCODING_ISO_8859_6 (&OnigEncodingISO_8859_6) -# define ONIG_ENCODING_ISO_8859_7 (&OnigEncodingISO_8859_7) -# define ONIG_ENCODING_ISO_8859_8 (&OnigEncodingISO_8859_8) -# define ONIG_ENCODING_ISO_8859_9 (&OnigEncodingISO_8859_9) -# define ONIG_ENCODING_ISO_8859_10 (&OnigEncodingISO_8859_10) -# define ONIG_ENCODING_ISO_8859_11 (&OnigEncodingISO_8859_11) -# define ONIG_ENCODING_ISO_8859_13 (&OnigEncodingISO_8859_13) -# define ONIG_ENCODING_ISO_8859_14 (&OnigEncodingISO_8859_14) -# define ONIG_ENCODING_ISO_8859_15 (&OnigEncodingISO_8859_15) -# define ONIG_ENCODING_ISO_8859_16 (&OnigEncodingISO_8859_16) -# define ONIG_ENCODING_UTF_8 (&OnigEncodingUTF_8) -# define ONIG_ENCODING_UTF_16BE (&OnigEncodingUTF_16BE) -# define ONIG_ENCODING_UTF_16LE (&OnigEncodingUTF_16LE) -# define ONIG_ENCODING_UTF_32BE (&OnigEncodingUTF_32BE) -# define ONIG_ENCODING_UTF_32LE (&OnigEncodingUTF_32LE) -# define ONIG_ENCODING_EUC_JP (&OnigEncodingEUC_JP) -# define ONIG_ENCODING_EUC_TW (&OnigEncodingEUC_TW) -# define ONIG_ENCODING_EUC_KR (&OnigEncodingEUC_KR) -# define ONIG_ENCODING_EUC_CN (&OnigEncodingEUC_CN) -# define ONIG_ENCODING_SHIFT_JIS (&OnigEncodingShift_JIS) -# define ONIG_ENCODING_WINDOWS_31J (&OnigEncodingWindows_31J) -/* # define ONIG_ENCODING_KOI8 (&OnigEncodingKOI8) */ -# define ONIG_ENCODING_KOI8_R (&OnigEncodingKOI8_R) -# define ONIG_ENCODING_KOI8_U (&OnigEncodingKOI8_U) -# define ONIG_ENCODING_WINDOWS_1250 (&OnigEncodingWindows_1250) -# define ONIG_ENCODING_WINDOWS_1251 (&OnigEncodingWindows_1251) -# define ONIG_ENCODING_WINDOWS_1252 (&OnigEncodingWindows_1252) -# define ONIG_ENCODING_WINDOWS_1253 (&OnigEncodingWindows_1253) -# define ONIG_ENCODING_WINDOWS_1254 (&OnigEncodingWindows_1254) -# define ONIG_ENCODING_WINDOWS_1257 (&OnigEncodingWindows_1257) -# define ONIG_ENCODING_BIG5 (&OnigEncodingBIG5) -# define ONIG_ENCODING_GB18030 (&OnigEncodingGB18030) - -/* old names */ -# define ONIG_ENCODING_SJIS ONIG_ENCODING_SHIFT_JIS -# define ONIG_ENCODING_CP932 ONIG_ENCODING_WINDOWS_31J -# define ONIG_ENCODING_CP1250 ONIG_ENCODING_WINDOWS_1250 -# define ONIG_ENCODING_CP1251 ONIG_ENCODING_WINDOWS_1251 -# define ONIG_ENCODING_CP1252 ONIG_ENCODING_WINDOWS_1252 -# define ONIG_ENCODING_CP1253 ONIG_ENCODING_WINDOWS_1253 -# define ONIG_ENCODING_CP1254 ONIG_ENCODING_WINDOWS_1254 -# define ONIG_ENCODING_CP1257 ONIG_ENCODING_WINDOWS_1257 -# define ONIG_ENCODING_UTF8 ONIG_ENCODING_UTF_8 -# define ONIG_ENCODING_UTF16_BE ONIG_ENCODING_UTF_16BE -# define ONIG_ENCODING_UTF16_LE ONIG_ENCODING_UTF_16LE -# define ONIG_ENCODING_UTF32_BE ONIG_ENCODING_UTF_32BE -# define ONIG_ENCODING_UTF32_LE ONIG_ENCODING_UTF_32LE -#endif /* RUBY */ - -#define ONIG_ENCODING_UNDEF ((OnigEncoding )0) - -/* this declaration needs to be here because it is used in string.c in Ruby */ -ONIG_EXTERN -int onigenc_ascii_only_case_map(OnigCaseFoldType* flagP, const OnigUChar** pp, const OnigUChar* end, OnigUChar* to, OnigUChar* to_end, const struct OnigEncodingTypeST* enc); - - -/* work size */ -#define ONIGENC_CODE_TO_MBC_MAXLEN 7 -#define ONIGENC_MBC_CASE_FOLD_MAXLEN 18 -/* 18: 6(max-byte) * 3(case-fold chars) */ - -/* character types */ -#define ONIGENC_CTYPE_NEWLINE 0 -#define ONIGENC_CTYPE_ALPHA 1 -#define ONIGENC_CTYPE_BLANK 2 -#define ONIGENC_CTYPE_CNTRL 3 -#define ONIGENC_CTYPE_DIGIT 4 -#define ONIGENC_CTYPE_GRAPH 5 -#define ONIGENC_CTYPE_LOWER 6 -#define ONIGENC_CTYPE_PRINT 7 -#define ONIGENC_CTYPE_PUNCT 8 -#define ONIGENC_CTYPE_SPACE 9 -#define ONIGENC_CTYPE_UPPER 10 -#define ONIGENC_CTYPE_XDIGIT 11 -#define ONIGENC_CTYPE_WORD 12 -#define ONIGENC_CTYPE_ALNUM 13 /* alpha || digit */ -#define ONIGENC_CTYPE_ASCII 14 -#define ONIGENC_MAX_STD_CTYPE ONIGENC_CTYPE_ASCII - -/* flags */ -#define ONIGENC_FLAG_NONE 0U -#define ONIGENC_FLAG_UNICODE 1U - -#define onig_enc_len(enc,p,e) ONIGENC_MBC_ENC_LEN(enc, p, e) - -#define ONIGENC_IS_UNDEF(enc) ((enc) == ONIG_ENCODING_UNDEF) -#define ONIGENC_IS_SINGLEBYTE(enc) (ONIGENC_MBC_MAXLEN(enc) == 1) -#define ONIGENC_IS_MBC_HEAD(enc,p,e) (ONIGENC_MBC_ENC_LEN(enc,p,e) != 1) -#define ONIGENC_IS_MBC_ASCII(p) (*(p) < 128) -#define ONIGENC_IS_CODE_ASCII(code) ((code) < 128) -#define ONIGENC_IS_MBC_WORD(enc,s,end) \ - ONIGENC_IS_CODE_WORD(enc,ONIGENC_MBC_TO_CODE(enc,s,end)) -#define ONIGENC_IS_MBC_ASCII_WORD(enc,s,end) \ - onigenc_ascii_is_code_ctype( \ - ONIGENC_MBC_TO_CODE(enc,s,end),ONIGENC_CTYPE_WORD,enc) -#define ONIGENC_IS_UNICODE(enc) ((enc)->flags & ONIGENC_FLAG_UNICODE) - - -#define ONIGENC_NAME(enc) ((enc)->name) - -#define ONIGENC_MBC_CASE_FOLD(enc,flag,pp,end,buf) \ - (enc)->mbc_case_fold(flag,(const OnigUChar** )pp,end,buf,enc) -#define ONIGENC_IS_ALLOWED_REVERSE_MATCH(enc,s,end) \ - (enc)->is_allowed_reverse_match(s,end,enc) -#define ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc,start,s,end) \ - (enc)->left_adjust_char_head(start, s, end, enc) -#define ONIGENC_APPLY_ALL_CASE_FOLD(enc,case_fold_flag,f,arg) \ - (enc)->apply_all_case_fold(case_fold_flag,f,arg,enc) -#define ONIGENC_GET_CASE_FOLD_CODES_BY_STR(enc,case_fold_flag,p,end,acs) \ - (enc)->get_case_fold_codes_by_str(case_fold_flag,p,end,acs,enc) -#define ONIGENC_STEP_BACK(enc,start,s,end,n) \ - onigenc_step_back((enc),(start),(s),(end),(n)) - -#define ONIGENC_CONSTRUCT_MBCLEN_CHARFOUND(n) (n) -#define ONIGENC_MBCLEN_CHARFOUND_P(r) (0 < (r)) -#define ONIGENC_MBCLEN_CHARFOUND_LEN(r) (r) - -#define ONIGENC_CONSTRUCT_MBCLEN_INVALID() (-1) -#define ONIGENC_MBCLEN_INVALID_P(r) ((r) == -1) - -#define ONIGENC_CONSTRUCT_MBCLEN_NEEDMORE(n) (-1-(n)) -#define ONIGENC_MBCLEN_NEEDMORE_P(r) ((r) < -1) -#define ONIGENC_MBCLEN_NEEDMORE_LEN(r) (-1-(r)) - -#define ONIGENC_PRECISE_MBC_ENC_LEN(enc,p,e) (enc)->precise_mbc_enc_len(p,e,enc) - -ONIG_EXTERN -int onigenc_mbclen_approximate(const OnigUChar* p,const OnigUChar* e, const struct OnigEncodingTypeST* enc); - -#define ONIGENC_MBC_ENC_LEN(enc,p,e) onigenc_mbclen_approximate(p,e,enc) -#define ONIGENC_MBC_MAXLEN(enc) ((enc)->max_enc_len) -#define ONIGENC_MBC_MAXLEN_DIST(enc) ONIGENC_MBC_MAXLEN(enc) -#define ONIGENC_MBC_MINLEN(enc) ((enc)->min_enc_len) -#define ONIGENC_IS_MBC_NEWLINE(enc,p,end) (enc)->is_mbc_newline((p),(end),enc) -#define ONIGENC_MBC_TO_CODE(enc,p,end) (enc)->mbc_to_code((p),(end),enc) -#define ONIGENC_CODE_TO_MBCLEN(enc,code) (enc)->code_to_mbclen(code,enc) -#define ONIGENC_CODE_TO_MBC(enc,code,buf) (enc)->code_to_mbc(code,buf,enc) -#define ONIGENC_PROPERTY_NAME_TO_CTYPE(enc,p,end) \ - (enc)->property_name_to_ctype(enc,p,end) - -#define ONIGENC_IS_CODE_CTYPE(enc,code,ctype) (enc)->is_code_ctype(code,ctype,enc) - -#define ONIGENC_IS_CODE_NEWLINE(enc,code) \ - ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_NEWLINE) -#define ONIGENC_IS_CODE_GRAPH(enc,code) \ - ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_GRAPH) -#define ONIGENC_IS_CODE_PRINT(enc,code) \ - ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_PRINT) -#define ONIGENC_IS_CODE_ALNUM(enc,code) \ - ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_ALNUM) -#define ONIGENC_IS_CODE_ALPHA(enc,code) \ - ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_ALPHA) -#define ONIGENC_IS_CODE_LOWER(enc,code) \ - ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_LOWER) -#define ONIGENC_IS_CODE_UPPER(enc,code) \ - ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_UPPER) -#define ONIGENC_IS_CODE_CNTRL(enc,code) \ - ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_CNTRL) -#define ONIGENC_IS_CODE_PUNCT(enc,code) \ - ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_PUNCT) -#define ONIGENC_IS_CODE_SPACE(enc,code) \ - ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_SPACE) -#define ONIGENC_IS_CODE_BLANK(enc,code) \ - ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_BLANK) -#define ONIGENC_IS_CODE_DIGIT(enc,code) \ - ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_DIGIT) -#define ONIGENC_IS_CODE_XDIGIT(enc,code) \ - ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_XDIGIT) -#define ONIGENC_IS_CODE_WORD(enc,code) \ - ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_WORD) - -#define ONIGENC_GET_CTYPE_CODE_RANGE(enc,ctype,sbout,ranges) \ - (enc)->get_ctype_code_range(ctype,sbout,ranges,enc) - -ONIG_EXTERN -OnigUChar* onigenc_step_back(OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end, int n); - - -/* encoding API */ -ONIG_EXTERN -int onigenc_init(void); -ONIG_EXTERN -int onigenc_set_default_encoding(OnigEncoding enc); -ONIG_EXTERN -OnigEncoding onigenc_get_default_encoding(void); -ONIG_EXTERN -OnigUChar* onigenc_get_right_adjust_char_head_with_prev(OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end, const OnigUChar** prev); -ONIG_EXTERN -OnigUChar* onigenc_get_prev_char_head(OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end); -ONIG_EXTERN -OnigUChar* onigenc_get_left_adjust_char_head(OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end); -ONIG_EXTERN -OnigUChar* onigenc_get_right_adjust_char_head(OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end); -ONIG_EXTERN -int onigenc_strlen(OnigEncoding enc, const OnigUChar* p, const OnigUChar* end); -ONIG_EXTERN -int onigenc_strlen_null(OnigEncoding enc, const OnigUChar* p); -ONIG_EXTERN -int onigenc_str_bytelen_null(OnigEncoding enc, const OnigUChar* p); - - - -/* PART: regular expression */ - -/* config parameters */ -#define ONIG_NREGION 10 -#define ONIG_MAX_CAPTURE_GROUP_NUM 32767 -#define ONIG_MAX_BACKREF_NUM 1000 -#define ONIG_MAX_REPEAT_NUM 100000 -#define ONIG_MAX_MULTI_BYTE_RANGES_NUM 10000 -/* constants */ -#define ONIG_MAX_ERROR_MESSAGE_LEN 90 - -typedef unsigned int OnigOptionType; - -#define ONIG_OPTION_DEFAULT ONIG_OPTION_NONE - -/* options */ -#define ONIG_OPTION_NONE 0U -#define ONIG_OPTION_IGNORECASE 1U -#define ONIG_OPTION_EXTEND (ONIG_OPTION_IGNORECASE << 1) -#define ONIG_OPTION_MULTILINE (ONIG_OPTION_EXTEND << 1) -#define ONIG_OPTION_DOTALL ONIG_OPTION_MULTILINE -#define ONIG_OPTION_SINGLELINE (ONIG_OPTION_MULTILINE << 1) -#define ONIG_OPTION_FIND_LONGEST (ONIG_OPTION_SINGLELINE << 1) -#define ONIG_OPTION_FIND_NOT_EMPTY (ONIG_OPTION_FIND_LONGEST << 1) -#define ONIG_OPTION_NEGATE_SINGLELINE (ONIG_OPTION_FIND_NOT_EMPTY << 1) -#define ONIG_OPTION_DONT_CAPTURE_GROUP (ONIG_OPTION_NEGATE_SINGLELINE << 1) -#define ONIG_OPTION_CAPTURE_GROUP (ONIG_OPTION_DONT_CAPTURE_GROUP << 1) -/* options (search time) */ -#define ONIG_OPTION_NOTBOL (ONIG_OPTION_CAPTURE_GROUP << 1) -#define ONIG_OPTION_NOTEOL (ONIG_OPTION_NOTBOL << 1) -#define ONIG_OPTION_NOTBOS (ONIG_OPTION_NOTEOL << 1) -#define ONIG_OPTION_NOTEOS (ONIG_OPTION_NOTBOS << 1) -/* options (ctype range) */ -#define ONIG_OPTION_ASCII_RANGE (ONIG_OPTION_NOTEOS << 1) -#define ONIG_OPTION_POSIX_BRACKET_ALL_RANGE (ONIG_OPTION_ASCII_RANGE << 1) -#define ONIG_OPTION_WORD_BOUND_ALL_RANGE (ONIG_OPTION_POSIX_BRACKET_ALL_RANGE << 1) -/* options (newline) */ -#define ONIG_OPTION_NEWLINE_CRLF (ONIG_OPTION_WORD_BOUND_ALL_RANGE << 1) -#define ONIG_OPTION_MAXBIT ONIG_OPTION_NEWLINE_CRLF /* limit */ - -#define ONIG_OPTION_ON(options,regopt) ((options) |= (regopt)) -#define ONIG_OPTION_OFF(options,regopt) ((options) &= ~(regopt)) -#define ONIG_IS_OPTION_ON(options,option) ((options) & (option)) - -/* syntax */ -typedef struct { - unsigned int op; - unsigned int op2; - unsigned int behavior; - OnigOptionType options; /* default option */ - OnigMetaCharTableType meta_char_table; -} OnigSyntaxType; - -ONIG_EXTERN const OnigSyntaxType OnigSyntaxASIS; -ONIG_EXTERN const OnigSyntaxType OnigSyntaxPosixBasic; -ONIG_EXTERN const OnigSyntaxType OnigSyntaxPosixExtended; -ONIG_EXTERN const OnigSyntaxType OnigSyntaxEmacs; -ONIG_EXTERN const OnigSyntaxType OnigSyntaxGrep; -ONIG_EXTERN const OnigSyntaxType OnigSyntaxGnuRegex; -ONIG_EXTERN const OnigSyntaxType OnigSyntaxJava; -ONIG_EXTERN const OnigSyntaxType OnigSyntaxPerl58; -ONIG_EXTERN const OnigSyntaxType OnigSyntaxPerl58_NG; -ONIG_EXTERN const OnigSyntaxType OnigSyntaxPerl; -ONIG_EXTERN const OnigSyntaxType OnigSyntaxRuby; -ONIG_EXTERN const OnigSyntaxType OnigSyntaxPython; - -/* predefined syntaxes (see regsyntax.c) */ -#define ONIG_SYNTAX_ASIS (&OnigSyntaxASIS) -#define ONIG_SYNTAX_POSIX_BASIC (&OnigSyntaxPosixBasic) -#define ONIG_SYNTAX_POSIX_EXTENDED (&OnigSyntaxPosixExtended) -#define ONIG_SYNTAX_EMACS (&OnigSyntaxEmacs) -#define ONIG_SYNTAX_GREP (&OnigSyntaxGrep) -#define ONIG_SYNTAX_GNU_REGEX (&OnigSyntaxGnuRegex) -#define ONIG_SYNTAX_JAVA (&OnigSyntaxJava) -#define ONIG_SYNTAX_PERL58 (&OnigSyntaxPerl58) -#define ONIG_SYNTAX_PERL58_NG (&OnigSyntaxPerl58_NG) -#define ONIG_SYNTAX_PERL (&OnigSyntaxPerl) -#define ONIG_SYNTAX_RUBY (&OnigSyntaxRuby) -#define ONIG_SYNTAX_PYTHON (&OnigSyntaxPython) - -/* default syntax */ -ONIG_EXTERN const OnigSyntaxType* OnigDefaultSyntax; -#define ONIG_SYNTAX_DEFAULT OnigDefaultSyntax - -/* syntax (operators) */ -#define ONIG_SYN_OP_VARIABLE_META_CHARACTERS (1U<<0) -#define ONIG_SYN_OP_DOT_ANYCHAR (1U<<1) /* . */ -#define ONIG_SYN_OP_ASTERISK_ZERO_INF (1U<<2) /* * */ -#define ONIG_SYN_OP_ESC_ASTERISK_ZERO_INF (1U<<3) -#define ONIG_SYN_OP_PLUS_ONE_INF (1U<<4) /* + */ -#define ONIG_SYN_OP_ESC_PLUS_ONE_INF (1U<<5) -#define ONIG_SYN_OP_QMARK_ZERO_ONE (1U<<6) /* ? */ -#define ONIG_SYN_OP_ESC_QMARK_ZERO_ONE (1U<<7) -#define ONIG_SYN_OP_BRACE_INTERVAL (1U<<8) /* {lower,upper} */ -#define ONIG_SYN_OP_ESC_BRACE_INTERVAL (1U<<9) /* \{lower,upper\} */ -#define ONIG_SYN_OP_VBAR_ALT (1U<<10) /* | */ -#define ONIG_SYN_OP_ESC_VBAR_ALT (1U<<11) /* \| */ -#define ONIG_SYN_OP_LPAREN_SUBEXP (1U<<12) /* (...) */ -#define ONIG_SYN_OP_ESC_LPAREN_SUBEXP (1U<<13) /* \(...\) */ -#define ONIG_SYN_OP_ESC_AZ_BUF_ANCHOR (1U<<14) /* \A, \Z, \z */ -#define ONIG_SYN_OP_ESC_CAPITAL_G_BEGIN_ANCHOR (1U<<15) /* \G */ -#define ONIG_SYN_OP_DECIMAL_BACKREF (1U<<16) /* \num */ -#define ONIG_SYN_OP_BRACKET_CC (1U<<17) /* [...] */ -#define ONIG_SYN_OP_ESC_W_WORD (1U<<18) /* \w, \W */ -#define ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END (1U<<19) /* \<. \> */ -#define ONIG_SYN_OP_ESC_B_WORD_BOUND (1U<<20) /* \b, \B */ -#define ONIG_SYN_OP_ESC_S_WHITE_SPACE (1U<<21) /* \s, \S */ -#define ONIG_SYN_OP_ESC_D_DIGIT (1U<<22) /* \d, \D */ -#define ONIG_SYN_OP_LINE_ANCHOR (1U<<23) /* ^, $ */ -#define ONIG_SYN_OP_POSIX_BRACKET (1U<<24) /* [:xxxx:] */ -#define ONIG_SYN_OP_QMARK_NON_GREEDY (1U<<25) /* ??,*?,+?,{n,m}? */ -#define ONIG_SYN_OP_ESC_CONTROL_CHARS (1U<<26) /* \n,\r,\t,\a ... */ -#define ONIG_SYN_OP_ESC_C_CONTROL (1U<<27) /* \cx */ -#define ONIG_SYN_OP_ESC_OCTAL3 (1U<<28) /* \OOO */ -#define ONIG_SYN_OP_ESC_X_HEX2 (1U<<29) /* \xHH */ -#define ONIG_SYN_OP_ESC_X_BRACE_HEX8 (1U<<30) /* \x{7HHHHHHH} */ -#define ONIG_SYN_OP_ESC_O_BRACE_OCTAL (1U<<31) /* \o{OOO} */ - -#define ONIG_SYN_OP2_ESC_CAPITAL_Q_QUOTE (1U<<0) /* \Q...\E */ -#define ONIG_SYN_OP2_QMARK_GROUP_EFFECT (1U<<1) /* (?...) */ -#define ONIG_SYN_OP2_OPTION_PERL (1U<<2) /* (?imsxadlu), (?-imsx), (?^imsxalu) */ -#define ONIG_SYN_OP2_OPTION_RUBY (1U<<3) /* (?imxadu), (?-imx) */ -#define ONIG_SYN_OP2_PLUS_POSSESSIVE_REPEAT (1U<<4) /* ?+,*+,++ */ -#define ONIG_SYN_OP2_PLUS_POSSESSIVE_INTERVAL (1U<<5) /* {n,m}+ */ -#define ONIG_SYN_OP2_CCLASS_SET_OP (1U<<6) /* [...&&..[..]..] */ -#define ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP (1U<<7) /* (?...) */ -#define ONIG_SYN_OP2_ESC_K_NAMED_BACKREF (1U<<8) /* \k */ -#define ONIG_SYN_OP2_ESC_G_SUBEXP_CALL (1U<<9) /* \g, \g */ -#define ONIG_SYN_OP2_ATMARK_CAPTURE_HISTORY (1U<<10) /* (?@..),(?@..) */ -#define ONIG_SYN_OP2_ESC_CAPITAL_C_BAR_CONTROL (1U<<11) /* \C-x */ -#define ONIG_SYN_OP2_ESC_CAPITAL_M_BAR_META (1U<<12) /* \M-x */ -#define ONIG_SYN_OP2_ESC_V_VTAB (1U<<13) /* \v as VTAB */ -#define ONIG_SYN_OP2_ESC_U_HEX4 (1U<<14) /* \uHHHH */ -#define ONIG_SYN_OP2_ESC_GNU_BUF_ANCHOR (1U<<15) /* \`, \' */ -#define ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY (1U<<16) /* \p{...}, \P{...} */ -#define ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT (1U<<17) /* \p{^..}, \P{^..} */ -/* #define ONIG_SYN_OP2_CHAR_PROPERTY_PREFIX_IS (1U<<18) */ -#define ONIG_SYN_OP2_ESC_H_XDIGIT (1U<<19) /* \h, \H */ -#define ONIG_SYN_OP2_INEFFECTIVE_ESCAPE (1U<<20) /* \ */ -#define ONIG_SYN_OP2_ESC_CAPITAL_R_LINEBREAK (1U<<21) /* \R as (?>\x0D\x0A|[\x0A-\x0D\x{85}\x{2028}\x{2029}]) */ -#define ONIG_SYN_OP2_ESC_CAPITAL_X_EXTENDED_GRAPHEME_CLUSTER (1U<<22) /* \X */ -#define ONIG_SYN_OP2_ESC_V_VERTICAL_WHITESPACE (1U<<23) /* \v, \V -- Perl */ /* NOTIMPL */ -#define ONIG_SYN_OP2_ESC_H_HORIZONTAL_WHITESPACE (1U<<24) /* \h, \H -- Perl */ /* NOTIMPL */ -#define ONIG_SYN_OP2_ESC_CAPITAL_K_KEEP (1U<<25) /* \K */ -#define ONIG_SYN_OP2_ESC_G_BRACE_BACKREF (1U<<26) /* \g{name}, \g{n} */ -#define ONIG_SYN_OP2_QMARK_SUBEXP_CALL (1U<<27) /* (?&name), (?n), (?R), (?0) */ -#define ONIG_SYN_OP2_QMARK_VBAR_BRANCH_RESET (1U<<28) /* (?|...) */ /* NOTIMPL */ -#define ONIG_SYN_OP2_QMARK_LPAREN_CONDITION (1U<<29) /* (?(cond)yes...|no...) */ -#define ONIG_SYN_OP2_QMARK_CAPITAL_P_NAMED_GROUP (1U<<30) /* (?P...), (?P=name), (?P>name) -- Python/PCRE */ -#define ONIG_SYN_OP2_QMARK_TILDE_ABSENT (1U<<31) /* (?~...) */ -/* #define ONIG_SYN_OP2_OPTION_JAVA (1U< {0,n} */ -#define ONIG_SYN_STRICT_CHECK_BACKREF (1U<<5) /* /(\1)/,/\1()/ ..*/ -#define ONIG_SYN_DIFFERENT_LEN_ALT_LOOK_BEHIND (1U<<6) /* (?<=a|bc) */ -#define ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP (1U<<7) /* see doc/RE */ -#define ONIG_SYN_ALLOW_MULTIPLEX_DEFINITION_NAME (1U<<8) /* (?)(?) */ -#define ONIG_SYN_FIXED_INTERVAL_IS_GREEDY_ONLY (1U<<9) /* a{n}?=(?:a{n})? */ -#define ONIG_SYN_ALLOW_MULTIPLEX_DEFINITION_NAME_CALL (1U<<10) /* (?)(?)(?&x) */ -#define ONIG_SYN_USE_LEFT_MOST_NAMED_GROUP (1U<<11) /* (?)(?)\k */ - -/* syntax (behavior) in char class [...] */ -#define ONIG_SYN_NOT_NEWLINE_IN_NEGATIVE_CC (1U<<20) /* [^...] */ -#define ONIG_SYN_BACKSLASH_ESCAPE_IN_CC (1U<<21) /* [..\w..] etc.. */ -#define ONIG_SYN_ALLOW_EMPTY_RANGE_IN_CC (1U<<22) -#define ONIG_SYN_ALLOW_DOUBLE_RANGE_OP_IN_CC (1U<<23) /* [0-9-a]=[0-9\-a] */ -/* syntax (behavior) warning */ -#define ONIG_SYN_WARN_CC_OP_NOT_ESCAPED (1U<<24) /* [,-,] */ -#define ONIG_SYN_WARN_REDUNDANT_NESTED_REPEAT (1U<<25) /* (?:a*)+ */ -#define ONIG_SYN_WARN_CC_DUP (1U<<26) /* [aa] */ - -/* meta character specifiers (onig_set_meta_char()) */ -#define ONIG_META_CHAR_ESCAPE 0 -#define ONIG_META_CHAR_ANYCHAR 1 -#define ONIG_META_CHAR_ANYTIME 2 -#define ONIG_META_CHAR_ZERO_OR_ONE_TIME 3 -#define ONIG_META_CHAR_ONE_OR_MORE_TIME 4 -#define ONIG_META_CHAR_ANYCHAR_ANYTIME 5 - -#define ONIG_INEFFECTIVE_META_CHAR 0 - -/* error codes */ -#define ONIG_IS_PATTERN_ERROR(ecode) ((ecode) <= -100 && (ecode) > -1000) -/* normal return */ -#define ONIG_NORMAL 0 -#define ONIG_MISMATCH -1 -#define ONIG_NO_SUPPORT_CONFIG -2 - -/* internal error */ -#define ONIGERR_MEMORY -5 -#define ONIGERR_TYPE_BUG -6 -#define ONIGERR_PARSER_BUG -11 -#define ONIGERR_STACK_BUG -12 -#define ONIGERR_UNDEFINED_BYTECODE -13 -#define ONIGERR_UNEXPECTED_BYTECODE -14 -#define ONIGERR_MATCH_STACK_LIMIT_OVER -15 -#define ONIGERR_PARSE_DEPTH_LIMIT_OVER -16 -#define ONIGERR_DEFAULT_ENCODING_IS_NOT_SET -21 -#define ONIGERR_SPECIFIED_ENCODING_CANT_CONVERT_TO_WIDE_CHAR -22 -/* general error */ -#define ONIGERR_INVALID_ARGUMENT -30 -/* syntax error */ -#define ONIGERR_END_PATTERN_AT_LEFT_BRACE -100 -#define ONIGERR_END_PATTERN_AT_LEFT_BRACKET -101 -#define ONIGERR_EMPTY_CHAR_CLASS -102 -#define ONIGERR_PREMATURE_END_OF_CHAR_CLASS -103 -#define ONIGERR_END_PATTERN_AT_ESCAPE -104 -#define ONIGERR_END_PATTERN_AT_META -105 -#define ONIGERR_END_PATTERN_AT_CONTROL -106 -#define ONIGERR_META_CODE_SYNTAX -108 -#define ONIGERR_CONTROL_CODE_SYNTAX -109 -#define ONIGERR_CHAR_CLASS_VALUE_AT_END_OF_RANGE -110 -#define ONIGERR_CHAR_CLASS_VALUE_AT_START_OF_RANGE -111 -#define ONIGERR_UNMATCHED_RANGE_SPECIFIER_IN_CHAR_CLASS -112 -#define ONIGERR_TARGET_OF_REPEAT_OPERATOR_NOT_SPECIFIED -113 -#define ONIGERR_TARGET_OF_REPEAT_OPERATOR_INVALID -114 -#define ONIGERR_NESTED_REPEAT_OPERATOR -115 -#define ONIGERR_UNMATCHED_CLOSE_PARENTHESIS -116 -#define ONIGERR_END_PATTERN_WITH_UNMATCHED_PARENTHESIS -117 -#define ONIGERR_END_PATTERN_IN_GROUP -118 -#define ONIGERR_UNDEFINED_GROUP_OPTION -119 -#define ONIGERR_INVALID_POSIX_BRACKET_TYPE -121 -#define ONIGERR_INVALID_LOOK_BEHIND_PATTERN -122 -#define ONIGERR_INVALID_REPEAT_RANGE_PATTERN -123 -#define ONIGERR_INVALID_CONDITION_PATTERN -124 -/* values error (syntax error) */ -#define ONIGERR_TOO_BIG_NUMBER -200 -#define ONIGERR_TOO_BIG_NUMBER_FOR_REPEAT_RANGE -201 -#define ONIGERR_UPPER_SMALLER_THAN_LOWER_IN_REPEAT_RANGE -202 -#define ONIGERR_EMPTY_RANGE_IN_CHAR_CLASS -203 -#define ONIGERR_MISMATCH_CODE_LENGTH_IN_CLASS_RANGE -204 -#define ONIGERR_TOO_MANY_MULTI_BYTE_RANGES -205 -#define ONIGERR_TOO_SHORT_MULTI_BYTE_STRING -206 -#define ONIGERR_TOO_BIG_BACKREF_NUMBER -207 -#define ONIGERR_INVALID_BACKREF -208 -#define ONIGERR_NUMBERED_BACKREF_OR_CALL_NOT_ALLOWED -209 -#define ONIGERR_TOO_MANY_CAPTURE_GROUPS -210 -#define ONIGERR_TOO_SHORT_DIGITS -211 -#define ONIGERR_TOO_LONG_WIDE_CHAR_VALUE -212 -#define ONIGERR_EMPTY_GROUP_NAME -214 -#define ONIGERR_INVALID_GROUP_NAME -215 -#define ONIGERR_INVALID_CHAR_IN_GROUP_NAME -216 -#define ONIGERR_UNDEFINED_NAME_REFERENCE -217 -#define ONIGERR_UNDEFINED_GROUP_REFERENCE -218 -#define ONIGERR_MULTIPLEX_DEFINED_NAME -219 -#define ONIGERR_MULTIPLEX_DEFINITION_NAME_CALL -220 -#define ONIGERR_NEVER_ENDING_RECURSION -221 -#define ONIGERR_GROUP_NUMBER_OVER_FOR_CAPTURE_HISTORY -222 -#define ONIGERR_INVALID_CHAR_PROPERTY_NAME -223 -#define ONIGERR_INVALID_CODE_POINT_VALUE -400 -#define ONIGERR_INVALID_WIDE_CHAR_VALUE -400 -#define ONIGERR_TOO_BIG_WIDE_CHAR_VALUE -401 -#define ONIGERR_NOT_SUPPORTED_ENCODING_COMBINATION -402 -#define ONIGERR_INVALID_COMBINATION_OF_OPTIONS -403 - -/* errors related to thread */ -/* #define ONIGERR_OVER_THREAD_PASS_LIMIT_COUNT -1001 */ - - -/* must be smaller than BIT_STATUS_BITS_NUM (unsigned int * 8) */ -#define ONIG_MAX_CAPTURE_HISTORY_GROUP 31 -#define ONIG_IS_CAPTURE_HISTORY_GROUP(r, i) \ - ((i) <= ONIG_MAX_CAPTURE_HISTORY_GROUP && (r)->list && (r)->list[i]) - -typedef struct OnigCaptureTreeNodeStruct { - int group; /* group number */ - OnigPosition beg; - OnigPosition end; - int allocated; - int num_childs; - struct OnigCaptureTreeNodeStruct** childs; -} OnigCaptureTreeNode; - -/* match result region type */ -struct re_registers { - int allocated; - int num_regs; - OnigPosition* beg; - OnigPosition* end; - /* extended */ - OnigCaptureTreeNode* history_root; /* capture history tree root */ -}; - -/* capture tree traverse */ -#define ONIG_TRAVERSE_CALLBACK_AT_FIRST 1 -#define ONIG_TRAVERSE_CALLBACK_AT_LAST 2 -#define ONIG_TRAVERSE_CALLBACK_AT_BOTH \ - ( ONIG_TRAVERSE_CALLBACK_AT_FIRST | ONIG_TRAVERSE_CALLBACK_AT_LAST ) - - -#define ONIG_REGION_NOTPOS -1 - -typedef struct re_registers OnigRegion; - -typedef struct { - OnigEncoding enc; - OnigUChar* par; - OnigUChar* par_end; -} OnigErrorInfo; - -typedef struct { - int lower; - int upper; -} OnigRepeatRange; - -typedef void (*OnigWarnFunc)(const char* s); -extern void onig_null_warn(const char* s); -#define ONIG_NULL_WARN onig_null_warn - -#define ONIG_CHAR_TABLE_SIZE 256 - -typedef struct re_pattern_buffer { - /* common members of BBuf(bytes-buffer) */ - unsigned char* p; /* compiled pattern */ - unsigned int used; /* used space for p */ - unsigned int alloc; /* allocated space for p */ - - int num_mem; /* used memory(...) num counted from 1 */ - int num_repeat; /* OP_REPEAT/OP_REPEAT_NG id-counter */ - int num_null_check; /* OP_NULL_CHECK_START/END id counter */ - int num_comb_exp_check; /* combination explosion check */ - int num_call; /* number of subexp call */ - unsigned int capture_history; /* (?@...) flag (1-31) */ - unsigned int bt_mem_start; /* need backtrack flag */ - unsigned int bt_mem_end; /* need backtrack flag */ - int stack_pop_level; - int repeat_range_alloc; - - OnigOptionType options; - - OnigRepeatRange* repeat_range; - - OnigEncoding enc; - const OnigSyntaxType* syntax; - void* name_table; - OnigCaseFoldType case_fold_flag; - - /* optimization info (string search, char-map and anchors) */ - int optimize; /* optimize flag */ - int threshold_len; /* search str-length for apply optimize */ - int anchor; /* BEGIN_BUF, BEGIN_POS, (SEMI_)END_BUF */ - OnigDistance anchor_dmin; /* (SEMI_)END_BUF anchor distance */ - OnigDistance anchor_dmax; /* (SEMI_)END_BUF anchor distance */ - int sub_anchor; /* start-anchor for exact or map */ - unsigned char *exact; - unsigned char *exact_end; - unsigned char map[ONIG_CHAR_TABLE_SIZE]; /* used as BM skip or char-map */ - int *int_map; /* BM skip for exact_len > 255 */ - int *int_map_backward; /* BM skip for backward search */ - OnigDistance dmin; /* min-distance of exact or map */ - OnigDistance dmax; /* max-distance of exact or map */ - - /* regex_t link chain */ - struct re_pattern_buffer* chain; /* escape compile-conflict */ -} OnigRegexType; - -typedef OnigRegexType* OnigRegex; - -#ifndef ONIG_ESCAPE_REGEX_T_COLLISION -typedef OnigRegexType regex_t; -#endif - - -typedef struct { - int num_of_elements; - OnigEncoding pattern_enc; - OnigEncoding target_enc; - const OnigSyntaxType* syntax; - OnigOptionType option; - OnigCaseFoldType case_fold_flag; -} OnigCompileInfo; - -/* Oniguruma Native API */ -ONIG_EXTERN -int onig_initialize(OnigEncoding encodings[], int n); -ONIG_EXTERN -int onig_init(void); -ONIG_EXTERN -int onig_error_code_to_str(OnigUChar* s, OnigPosition err_code, ...); -ONIG_EXTERN -void onig_set_warn_func(OnigWarnFunc f); -ONIG_EXTERN -void onig_set_verb_warn_func(OnigWarnFunc f); -ONIG_EXTERN -int onig_new(OnigRegex*, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigOptionType option, OnigEncoding enc, const OnigSyntaxType* syntax, OnigErrorInfo* einfo); -ONIG_EXTERN -int onig_reg_init(OnigRegex reg, OnigOptionType option, OnigCaseFoldType case_fold_flag, OnigEncoding enc, const OnigSyntaxType* syntax); -ONIG_EXTERN -int onig_new_without_alloc(OnigRegex, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigOptionType option, OnigEncoding enc, const OnigSyntaxType* syntax, OnigErrorInfo* einfo); -ONIG_EXTERN -int onig_new_deluxe(OnigRegex* reg, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigCompileInfo* ci, OnigErrorInfo* einfo); -ONIG_EXTERN -void onig_free(OnigRegex); -ONIG_EXTERN -void onig_free_body(OnigRegex); -ONIG_EXTERN -OnigPosition onig_scan(OnigRegex reg, const OnigUChar* str, const OnigUChar* end, OnigRegion* region, OnigOptionType option, int (*scan_callback)(OnigPosition, OnigPosition, OnigRegion*, void*), void* callback_arg); -ONIG_EXTERN -OnigPosition onig_search(OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* start, const OnigUChar* range, OnigRegion* region, OnigOptionType option); -ONIG_EXTERN -OnigPosition onig_search_gpos(OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* global_pos, const OnigUChar* start, const OnigUChar* range, OnigRegion* region, OnigOptionType option); -ONIG_EXTERN -OnigPosition onig_match(OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* at, OnigRegion* region, OnigOptionType option); -ONIG_EXTERN -OnigRegion* onig_region_new(void); -ONIG_EXTERN -void onig_region_init(OnigRegion* region); -ONIG_EXTERN -void onig_region_free(OnigRegion* region, int free_self); -ONIG_EXTERN -void onig_region_copy(OnigRegion* to, const OnigRegion* from); -ONIG_EXTERN -void onig_region_clear(OnigRegion* region); -ONIG_EXTERN -int onig_region_resize(OnigRegion* region, int n); -ONIG_EXTERN -int onig_region_set(OnigRegion* region, int at, int beg, int end); -ONIG_EXTERN -int onig_name_to_group_numbers(OnigRegex reg, const OnigUChar* name, const OnigUChar* name_end, int** nums); -ONIG_EXTERN -int onig_name_to_backref_number(OnigRegex reg, const OnigUChar* name, const OnigUChar* name_end, const OnigRegion *region); -ONIG_EXTERN -int onig_foreach_name(OnigRegex reg, int (*func)(const OnigUChar*, const OnigUChar*,int,int*,OnigRegex,void*), void* arg); -ONIG_EXTERN -int onig_number_of_names(const OnigRegexType *reg); -ONIG_EXTERN -int onig_number_of_captures(const OnigRegexType *reg); -ONIG_EXTERN -int onig_number_of_capture_histories(const OnigRegexType *reg); -ONIG_EXTERN -OnigCaptureTreeNode* onig_get_capture_tree(OnigRegion* region); -ONIG_EXTERN -int onig_capture_tree_traverse(OnigRegion* region, int at, int(*callback_func)(int,OnigPosition,OnigPosition,int,int,void*), void* arg); -ONIG_EXTERN -int onig_noname_group_capture_is_active(const OnigRegexType *reg); -ONIG_EXTERN -OnigEncoding onig_get_encoding(const OnigRegexType *reg); -ONIG_EXTERN -OnigOptionType onig_get_options(const OnigRegexType *reg); -ONIG_EXTERN -OnigCaseFoldType onig_get_case_fold_flag(const OnigRegexType *reg); -ONIG_EXTERN -const OnigSyntaxType* onig_get_syntax(const OnigRegexType *reg); -ONIG_EXTERN -int onig_set_default_syntax(const OnigSyntaxType* syntax); -ONIG_EXTERN -void onig_copy_syntax(OnigSyntaxType* to, const OnigSyntaxType* from); -ONIG_EXTERN -unsigned int onig_get_syntax_op(const OnigSyntaxType* syntax); -ONIG_EXTERN -unsigned int onig_get_syntax_op2(const OnigSyntaxType* syntax); -ONIG_EXTERN -unsigned int onig_get_syntax_behavior(const OnigSyntaxType* syntax); -ONIG_EXTERN -OnigOptionType onig_get_syntax_options(const OnigSyntaxType* syntax); -ONIG_EXTERN -void onig_set_syntax_op(OnigSyntaxType* syntax, unsigned int op); -ONIG_EXTERN -void onig_set_syntax_op2(OnigSyntaxType* syntax, unsigned int op2); -ONIG_EXTERN -void onig_set_syntax_behavior(OnigSyntaxType* syntax, unsigned int behavior); -ONIG_EXTERN -void onig_set_syntax_options(OnigSyntaxType* syntax, OnigOptionType options); -ONIG_EXTERN -int onig_set_meta_char(OnigSyntaxType* syntax, unsigned int what, OnigCodePoint code); -ONIG_EXTERN -void onig_copy_encoding(OnigEncodingType *to, OnigEncoding from); -ONIG_EXTERN -OnigCaseFoldType onig_get_default_case_fold_flag(void); -ONIG_EXTERN -int onig_set_default_case_fold_flag(OnigCaseFoldType case_fold_flag); -ONIG_EXTERN -unsigned int onig_get_match_stack_limit_size(void); -ONIG_EXTERN -int onig_set_match_stack_limit_size(unsigned int size); -ONIG_EXTERN -unsigned int onig_get_parse_depth_limit(void); -ONIG_EXTERN -int onig_set_parse_depth_limit(unsigned int depth); -ONIG_EXTERN -int onig_end(void); -ONIG_EXTERN -const char* onig_version(void); -ONIG_EXTERN -const char* onig_copyright(void); - -RUBY_SYMBOL_EXPORT_END - -#ifdef __cplusplus -# if 0 -{ /* satisfy cc-mode */ -# endif -} -#endif - -#endif /* ONIGMO_H */ diff --git a/vendor/onig/onigmo.py b/vendor/onig/onigmo.py deleted file mode 100644 index 79439b2..0000000 --- a/vendor/onig/onigmo.py +++ /dev/null @@ -1,627 +0,0 @@ -# -*- coding: utf-8 -*- - -"""Using Onigmo (Oniguruma-mod) regular expression library. - -This is a low level wrapper for Onigmo regular expression DLL/shared object. -(This module does not support static link library.) -This provides almost same API as the original C API, so the API is not -object oriented. - -Onigmo DLL (onigmo.dll, libonigmo.so, etc.) must be placed in the -default search path. The default search path depends on the system. -""" - -import ctypes -import os -import sys - -#__all__ = ["onig_new", "onig_free", -# "onig_search", "onig_match", -# "onig_region_new", "onig_region_free", -# "onig_version", "onig_copyright"] - -# -# Onigmo API version -# (Must be synchronized with LTVERSION in configure.ac.) -# -_onig_api_version = 6 - -# -# Type Definitions -# - -OnigCodePoint = ctypes.c_uint - -class OnigRegexType(ctypes.Structure): - _fields_ = [ - ] -regex_t = OnigRegexType -OnigRegex = ctypes.POINTER(OnigRegexType) - -try: - # Python 2.7 - _c_ssize_t = ctypes.c_ssize_t -except AttributeError: - # Python 2.6 - if ctypes.sizeof(ctypes.c_int) == ctypes.sizeof(ctypes.c_void_p): - _c_ssize_t = ctypes.c_int - elif ctypes.sizeof(ctypes.c_long) == ctypes.sizeof(ctypes.c_void_p): - _c_ssize_t = ctypes.c_long - elif ctypes.sizeof(ctypes.c_longlong) == ctypes.sizeof(ctypes.c_void_p): - _c_ssize_t = ctypes.c_longlong - -class OnigRegion(ctypes.Structure): - _fields_ = [ - ("allocated", ctypes.c_int), - ("num_regs", ctypes.c_int), - ("beg", ctypes.POINTER(_c_ssize_t)), - ("end", ctypes.POINTER(_c_ssize_t)), - ("history_root",ctypes.c_void_p), - ] -re_registers = OnigRegion - -OnigOptionType = ctypes.c_int - -class OnigEncodingType(ctypes.Structure): - _fields_ = [ - ("mbc_enc_len", ctypes.c_void_p), - ("name", ctypes.c_char_p), - ("max_enc_len", ctypes.c_int), - ("min_enc_len", ctypes.c_int), - ("is_mbc_newline", ctypes.c_void_p), - ("mbc_to_code", ctypes.c_void_p), - ("code_to_mbclen", ctypes.c_void_p), - ("code_to_mbc", ctypes.c_void_p), - ("mbc_case_fold", ctypes.c_void_p), - ("apply_all_case_fold", ctypes.c_void_p), - ("get_case_fold_codes_by_str", ctypes.c_void_p), - ("property_name_to_ctype", ctypes.c_void_p), - ("is_code_ctype", ctypes.c_void_p), - ("get_ctype_code_range", ctypes.c_void_p), - ("left_adjust_char_head", ctypes.c_void_p), - ("is_allowed_reverse_match",ctypes.c_void_p), - ("case_map", ctypes.c_void_p), - ("ruby_encoding_index", ctypes.c_int), - ("flags", ctypes.c_int), - ] -OnigEncoding = ctypes.POINTER(OnigEncodingType) - -class OnigMetaCharTableType(ctypes.Structure): - _fields_ = [ - ("esc", OnigCodePoint), - ("anychar", OnigCodePoint), - ("anytime", OnigCodePoint), - ("zero_or_one_time",OnigCodePoint), - ("one_or_one_time", OnigCodePoint), - ("anychar_anytime", OnigCodePoint), - ] - -class OnigSyntaxType(ctypes.Structure): - _fields_ = [ - ("op", ctypes.c_uint), - ("op2", ctypes.c_uint), - ("behavior", ctypes.c_uint), - ("options", OnigOptionType), - ("meta_char_table", OnigMetaCharTableType), - ] - -class OnigErrorInfo(ctypes.Structure): - _fields_ = [ - ("enc", OnigEncoding), - ("par", ctypes.c_char_p), - ("par_end", ctypes.c_char_p), - ] - - -# load the DLL or the shared library - -if os.name in ("nt", "ce"): - # Win32 - _libname = "onigmo.dll" - try: - libonig = ctypes.cdll.LoadLibrary(_libname) - except OSError: - # Sometimes MinGW version has a prefix "lib". - _libname = "libonigmo.dll" - try: - libonig = ctypes.cdll.LoadLibrary(_libname) - except OSError: - # Sometimes MinGW version has the API version. - _libname = "libonigmo-%d.dll" % _onig_api_version - libonig = ctypes.cdll.LoadLibrary(_libname) -elif sys.platform == "cygwin": - # Cygwin - _libname = "cygonigmo-%d.dll" % _onig_api_version - libonig = ctypes.cdll.LoadLibrary(_libname) -elif sys.platform == "msys": - # MSYS/MSYS2 - _libname = "msys-onigmo-%d.dll" % _onig_api_version - libonig = ctypes.cdll.LoadLibrary(_libname) -elif sys.platform == "darwin": - # Mac - _libname = "libonigmo.dylib" - libonig = ctypes.cdll.LoadLibrary(_libname) -else: - # Unix - _libname = "libonigmo.so" - libonig = ctypes.cdll.LoadLibrary(_libname) - -# -# Encodings -# -def _load_encoding(enc): - return ctypes.pointer(OnigEncodingType.in_dll(libonig, enc)) - -ONIG_ENCODING_ASCII = _load_encoding("OnigEncodingASCII") -ONIG_ENCODING_ISO_8859_1 = _load_encoding("OnigEncodingISO_8859_1") -ONIG_ENCODING_ISO_8859_2 = _load_encoding("OnigEncodingISO_8859_2") -ONIG_ENCODING_ISO_8859_3 = _load_encoding("OnigEncodingISO_8859_3") -ONIG_ENCODING_ISO_8859_4 = _load_encoding("OnigEncodingISO_8859_4") -ONIG_ENCODING_ISO_8859_5 = _load_encoding("OnigEncodingISO_8859_5") -ONIG_ENCODING_ISO_8859_6 = _load_encoding("OnigEncodingISO_8859_6") -ONIG_ENCODING_ISO_8859_7 = _load_encoding("OnigEncodingISO_8859_7") -ONIG_ENCODING_ISO_8859_8 = _load_encoding("OnigEncodingISO_8859_8") -ONIG_ENCODING_ISO_8859_9 = _load_encoding("OnigEncodingISO_8859_9") -ONIG_ENCODING_ISO_8859_10 = _load_encoding("OnigEncodingISO_8859_10") -ONIG_ENCODING_ISO_8859_11 = _load_encoding("OnigEncodingISO_8859_11") -ONIG_ENCODING_ISO_8859_13 = _load_encoding("OnigEncodingISO_8859_13") -ONIG_ENCODING_ISO_8859_14 = _load_encoding("OnigEncodingISO_8859_14") -ONIG_ENCODING_ISO_8859_15 = _load_encoding("OnigEncodingISO_8859_15") -ONIG_ENCODING_ISO_8859_16 = _load_encoding("OnigEncodingISO_8859_16") -ONIG_ENCODING_UTF_8 = _load_encoding("OnigEncodingUTF_8") -ONIG_ENCODING_UTF_16LE = _load_encoding("OnigEncodingUTF_16LE") -ONIG_ENCODING_UTF_16BE = _load_encoding("OnigEncodingUTF_16BE") -ONIG_ENCODING_UTF_32LE = _load_encoding("OnigEncodingUTF_32LE") -ONIG_ENCODING_UTF_32BE = _load_encoding("OnigEncodingUTF_32BE") -ONIG_ENCODING_UTF8 = ONIG_ENCODING_UTF_8 -ONIG_ENCODING_UTF16_LE = ONIG_ENCODING_UTF_16LE -ONIG_ENCODING_UTF16_BE = ONIG_ENCODING_UTF_16BE -ONIG_ENCODING_UTF32_LE = ONIG_ENCODING_UTF_32LE -ONIG_ENCODING_UTF32_BE = ONIG_ENCODING_UTF_32BE -ONIG_ENCODING_EUC_JP = _load_encoding("OnigEncodingEUC_JP") -ONIG_ENCODING_EUC_TW = _load_encoding("OnigEncodingEUC_TW") -ONIG_ENCODING_EUC_KR = _load_encoding("OnigEncodingEUC_KR") -ONIG_ENCODING_EUC_CN = _load_encoding("OnigEncodingEUC_CN") -ONIG_ENCODING_SHIFT_JIS = _load_encoding("OnigEncodingShift_JIS") -ONIG_ENCODING_WINDOWS_31J = _load_encoding("OnigEncodingWindows_31J") -ONIG_ENCODING_SJIS = ONIG_ENCODING_SHIFT_JIS -ONIG_ENCODING_CP932 = ONIG_ENCODING_WINDOWS_31J -#ONIG_ENCODING_KOI8 = _load_encoding("OnigEncodingKOI8") -ONIG_ENCODING_KOI8_R = _load_encoding("OnigEncodingKOI8_R") -ONIG_ENCODING_KOI8_U = _load_encoding("OnigEncodingKOI8_U") -ONIG_ENCODING_WINDOWS_1250 = _load_encoding("OnigEncodingWindows_1250") -ONIG_ENCODING_WINDOWS_1251 = _load_encoding("OnigEncodingWindows_1251") -ONIG_ENCODING_WINDOWS_1252 = _load_encoding("OnigEncodingWindows_1252") -ONIG_ENCODING_WINDOWS_1253 = _load_encoding("OnigEncodingWindows_1253") -ONIG_ENCODING_WINDOWS_1254 = _load_encoding("OnigEncodingWindows_1254") -ONIG_ENCODING_WINDOWS_1257 = _load_encoding("OnigEncodingWindows_1257") -ONIG_ENCODING_CP1250 = ONIG_ENCODING_WINDOWS_1250 -ONIG_ENCODING_CP1251 = ONIG_ENCODING_WINDOWS_1251 -ONIG_ENCODING_CP1252 = ONIG_ENCODING_WINDOWS_1252 -ONIG_ENCODING_CP1253 = ONIG_ENCODING_WINDOWS_1253 -ONIG_ENCODING_CP1254 = ONIG_ENCODING_WINDOWS_1254 -ONIG_ENCODING_CP1257 = ONIG_ENCODING_WINDOWS_1257 -ONIG_ENCODING_BIG5 = _load_encoding("OnigEncodingBIG5") -ONIG_ENCODING_GB18030 = _load_encoding("OnigEncodingGB18030") - -#ONIG_ENCODING_UNDEF = None - - -# -# Syntaxes -# -def _load_syntax(syn): - return ctypes.pointer(OnigSyntaxType.in_dll(libonig, syn)) - -ONIG_SYNTAX_ASIS = _load_syntax("OnigSyntaxASIS") -ONIG_SYNTAX_POSIX_BASIC = _load_syntax("OnigSyntaxPosixBasic") -ONIG_SYNTAX_POSIX_EXTENDED = _load_syntax("OnigSyntaxPosixExtended") -ONIG_SYNTAX_EMACS = _load_syntax("OnigSyntaxEmacs") -ONIG_SYNTAX_GREP = _load_syntax("OnigSyntaxGrep") -ONIG_SYNTAX_GNU_REGEX = _load_syntax("OnigSyntaxGnuRegex") -ONIG_SYNTAX_JAVA = _load_syntax("OnigSyntaxJava") -ONIG_SYNTAX_PERL = _load_syntax("OnigSyntaxPerl") -ONIG_SYNTAX_PERL58 = _load_syntax("OnigSyntaxPerl58") -ONIG_SYNTAX_PERL58_NG = _load_syntax("OnigSyntaxPerl58_NG") -ONIG_SYNTAX_RUBY = _load_syntax("OnigSyntaxRuby") -ONIG_SYNTAX_PYTHON = _load_syntax("OnigSyntaxPython") - -ONIG_SYNTAX_DEFAULT = ctypes.POINTER(OnigSyntaxType).in_dll( - libonig, "OnigDefaultSyntax") - - -# -# Constants -# - -ONIG_MAX_ERROR_MESSAGE_LEN = 90 - -# options -ONIG_OPTION_NONE = 0 -ONIG_OPTION_IGNORECASE = 1 -ONIG_OPTION_EXTEND = (ONIG_OPTION_IGNORECASE << 1) -ONIG_OPTION_MULTILINE = (ONIG_OPTION_EXTEND << 1) -ONIG_OPTION_DOTALL = ONIG_OPTION_MULTILINE -ONIG_OPTION_SINGLELINE = (ONIG_OPTION_MULTILINE << 1) -ONIG_OPTION_FIND_LONGEST = (ONIG_OPTION_SINGLELINE << 1) -ONIG_OPTION_FIND_NOT_EMPTY = (ONIG_OPTION_FIND_LONGEST << 1) -ONIG_OPTION_NEGATE_SINGLELINE = (ONIG_OPTION_FIND_NOT_EMPTY << 1) -ONIG_OPTION_DONT_CAPTURE_GROUP = (ONIG_OPTION_NEGATE_SINGLELINE << 1) -ONIG_OPTION_CAPTURE_GROUP = (ONIG_OPTION_DONT_CAPTURE_GROUP << 1) -# options (search time) -ONIG_OPTION_NOTBOL = (ONIG_OPTION_CAPTURE_GROUP << 1) -ONIG_OPTION_NOTEOL = (ONIG_OPTION_NOTBOL << 1) -ONIG_OPTION_NOTBOS = (ONIG_OPTION_NOTEOL << 1) -ONIG_OPTION_NOTEOS = (ONIG_OPTION_NOTBOS << 1) -# options (ctype range) -ONIG_OPTION_ASCII_RANGE = (ONIG_OPTION_NOTEOS << 1) -ONIG_OPTION_POSIX_BRACKET_ALL_RANGE = (ONIG_OPTION_ASCII_RANGE << 1) -ONIG_OPTION_WORD_BOUND_ALL_RANGE = (ONIG_OPTION_POSIX_BRACKET_ALL_RANGE << 1) -# options (newline) -ONIG_OPTION_NEWLINE_CRLF = (ONIG_OPTION_WORD_BOUND_ALL_RANGE << 1) - -ONIG_OPTION_DEFAULT = ONIG_OPTION_NONE - - -# syntax (operators) -ONIG_SYN_OP_VARIABLE_META_CHARACTERS = (1<<0) -ONIG_SYN_OP_DOT_ANYCHAR = (1<<1) -ONIG_SYN_OP_ASTERISK_ZERO_INF = (1<<2) -ONIG_SYN_OP_ESC_ASTERISK_ZERO_INF = (1<<3) -ONIG_SYN_OP_PLUS_ONE_INF = (1<<4) -ONIG_SYN_OP_ESC_PLUS_ONE_INF = (1<<5) -ONIG_SYN_OP_QMARK_ZERO_ONE = (1<<6) -ONIG_SYN_OP_ESC_QMARK_ZERO_ONE = (1<<7) -ONIG_SYN_OP_BRACE_INTERVAL = (1<<8) -ONIG_SYN_OP_ESC_BRACE_INTERVAL = (1<<9) -ONIG_SYN_OP_VBAR_ALT = (1<<10) -ONIG_SYN_OP_ESC_VBAR_ALT = (1<<11) -ONIG_SYN_OP_LPAREN_SUBEXP = (1<<12) -ONIG_SYN_OP_ESC_LPAREN_SUBEXP = (1<<13) -ONIG_SYN_OP_ESC_AZ_BUF_ANCHOR = (1<<14) -ONIG_SYN_OP_ESC_CAPITAL_G_BEGIN_ANCHOR = (1<<15) -ONIG_SYN_OP_DECIMAL_BACKREF = (1<<16) -ONIG_SYN_OP_BRACKET_CC = (1<<17) -ONIG_SYN_OP_ESC_W_WORD = (1<<18) -ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END = (1<<19) -ONIG_SYN_OP_ESC_B_WORD_BOUND = (1<<20) -ONIG_SYN_OP_ESC_S_WHITE_SPACE = (1<<21) -ONIG_SYN_OP_ESC_D_DIGIT = (1<<22) -ONIG_SYN_OP_LINE_ANCHOR = (1<<23) -ONIG_SYN_OP_POSIX_BRACKET = (1<<24) -ONIG_SYN_OP_QMARK_NON_GREEDY = (1<<25) -ONIG_SYN_OP_ESC_CONTROL_CHARS = (1<<26) -ONIG_SYN_OP_ESC_C_CONTROL = (1<<27) -ONIG_SYN_OP_ESC_OCTAL3 = (1<<28) -ONIG_SYN_OP_ESC_X_HEX2 = (1<<29) -ONIG_SYN_OP_ESC_X_BRACE_HEX8 = (1<<30) -ONIG_SYN_OP_ESC_O_BRACE_OCTAL = (1<<31) - -ONIG_SYN_OP2_ESC_CAPITAL_Q_QUOTE = (1<<0) -ONIG_SYN_OP2_QMARK_GROUP_EFFECT = (1<<1) -ONIG_SYN_OP2_OPTION_PERL = (1<<2) -ONIG_SYN_OP2_OPTION_RUBY = (1<<3) -ONIG_SYN_OP2_PLUS_POSSESSIVE_REPEAT = (1<<4) -ONIG_SYN_OP2_PLUS_POSSESSIVE_INTERVAL = (1<<5) -ONIG_SYN_OP2_CCLASS_SET_OP = (1<<6) -ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP = (1<<7) -ONIG_SYN_OP2_ESC_K_NAMED_BACKREF = (1<<8) -ONIG_SYN_OP2_ESC_G_SUBEXP_CALL = (1<<9) -ONIG_SYN_OP2_ATMARK_CAPTURE_HISTORY = (1<<10) -ONIG_SYN_OP2_ESC_CAPITAL_C_BAR_CONTROL = (1<<11) -ONIG_SYN_OP2_ESC_CAPITAL_M_BAR_META = (1<<12) -ONIG_SYN_OP2_ESC_V_VTAB = (1<<13) -ONIG_SYN_OP2_ESC_U_HEX4 = (1<<14) -ONIG_SYN_OP2_ESC_GNU_BUF_ANCHOR = (1<<15) -ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY = (1<<16) -ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT = (1<<17) -#ONIG_SYN_OP2_CHAR_PROPERTY_PREFIX_IS = (1<<18) -ONIG_SYN_OP2_ESC_H_XDIGIT = (1<<19) -ONIG_SYN_OP2_INEFFECTIVE_ESCAPE = (1<<20) -ONIG_SYN_OP2_ESC_CAPITAL_R_LINEBREAK = (1<<21) -ONIG_SYN_OP2_ESC_CAPITAL_X_EXTENDED_GRAPHEME_CLUSTER = (1<<22) -ONIG_SYN_OP2_ESC_V_VERTICAL_WHITESPACE = (1<<23) -ONIG_SYN_OP2_ESC_H_HORIZONTAL_WHITESPACE = (1<<24) -ONIG_SYN_OP2_ESC_CAPITAL_K_KEEP = (1<<25) -ONIG_SYN_OP2_ESC_G_BRACE_BACKREF = (1<<26) -ONIG_SYN_OP2_QMARK_SUBEXP_CALL = (1<<27) -ONIG_SYN_OP2_QMARK_VBAR_BRANCH_RESET = (1<<28) -ONIG_SYN_OP2_QMARK_LPAREN_CONDITION = (1<<29) -ONIG_SYN_OP2_QMARK_CAPITAL_P_NAMED_GROUP = (1<<30) -ONIG_SYN_OP2_OPTION_JAVA = (1<<31) - -# syntax (behavior) -ONIG_SYN_CONTEXT_INDEP_ANCHORS = (1<<31) -ONIG_SYN_CONTEXT_INDEP_REPEAT_OPS = (1<<0) -ONIG_SYN_CONTEXT_INVALID_REPEAT_OPS = (1<<1) -ONIG_SYN_ALLOW_UNMATCHED_CLOSE_SUBEXP = (1<<2) -ONIG_SYN_ALLOW_INVALID_INTERVAL = (1<<3) -ONIG_SYN_ALLOW_INTERVAL_LOW_ABBREV = (1<<4) -ONIG_SYN_STRICT_CHECK_BACKREF = (1<<5) -ONIG_SYN_DIFFERENT_LEN_ALT_LOOK_BEHIND = (1<<6) -ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP = (1<<7) -ONIG_SYN_ALLOW_MULTIPLEX_DEFINITION_NAME = (1<<8) -ONIG_SYN_FIXED_INTERVAL_IS_GREEDY_ONLY = (1<<9) -ONIG_SYN_ALLOW_MULTIPLEX_DEFINITION_NAME_CALL = (1<<10) -ONIG_SYN_USE_LEFT_MOST_NAMED_GROUP = (1<<11) - -# (behavior) in char class [...] -ONIG_SYN_NOT_NEWLINE_IN_NEGATIVE_CC = (1<<20) -ONIG_SYN_BACKSLASH_ESCAPE_IN_CC = (1<<21) -ONIG_SYN_ALLOW_EMPTY_RANGE_IN_CC = (1<<22) -ONIG_SYN_ALLOW_DOUBLE_RANGE_OP_IN_CC = (1<<23) -# syntax (behavior) warning -ONIG_SYN_WARN_CC_OP_NOT_ESCAPED = (1<<24) -ONIG_SYN_WARN_REDUNDANT_NESTED_REPEAT = (1<<25) -ONIG_SYN_WARN_CC_DUP = (1<<26) - -# meta character specifiers (onig_set_meta_char()) -ONIG_META_CHAR_ESCAPE = 0 -ONIG_META_CHAR_ANYCHAR = 1 -ONIG_META_CHAR_ANYTIME = 2 -ONIG_META_CHAR_ZERO_OR_ONE_TIME = 3 -ONIG_META_CHAR_ONE_OR_MORE_TIME = 4 -ONIG_META_CHAR_ANYCHAR_ANYTIME = 5 - -ONIG_INEFFECTIVE_META_CHAR = 0 - - -# error codes -def ONIG_IS_PATTERN_ERROR(ecode): - return ((ecode) <= -100 and (ecode) > -1000) -# normal return -ONIG_NORMAL = 0 -ONIG_MISMATCH = -1 -ONIG_NO_SUPPORT_CONFIG = -2 -# internal error -ONIGERR_MEMORY = -5 -ONIGERR_TYPE_BUG = -6 -ONIGERR_PARSER_BUG = -11 -ONIGERR_STACK_BUG = -12 -ONIGERR_UNDEFINED_BYTECODE = -13 -ONIGERR_UNEXPECTED_BYTECODE = -14 -ONIGERR_MATCH_STACK_LIMIT_OVER = -15 -ONIGERR_PARSE_DEPTH_LIMIT_OVER = -16 -ONIGERR_DEFAULT_ENCODING_IS_NOT_SET = -21 -ONIGERR_SPECIFIED_ENCODING_CANT_CONVERT_TO_WIDE_CHAR = -22 -# general error -ONIGERR_INVALID_ARGUMENT = -30 -# syntax error -ONIGERR_END_PATTERN_AT_LEFT_BRACE = -100 -ONIGERR_END_PATTERN_AT_LEFT_BRACKET = -101 -ONIGERR_EMPTY_CHAR_CLASS = -102 -ONIGERR_PREMATURE_END_OF_CHAR_CLASS = -103 -ONIGERR_END_PATTERN_AT_ESCAPE = -104 -ONIGERR_END_PATTERN_AT_META = -105 -ONIGERR_END_PATTERN_AT_CONTROL = -106 -ONIGERR_META_CODE_SYNTAX = -108 -ONIGERR_CONTROL_CODE_SYNTAX = -109 -ONIGERR_CHAR_CLASS_VALUE_AT_END_OF_RANGE = -110 -ONIGERR_CHAR_CLASS_VALUE_AT_START_OF_RANGE = -111 -ONIGERR_UNMATCHED_RANGE_SPECIFIER_IN_CHAR_CLASS = -112 -ONIGERR_TARGET_OF_REPEAT_OPERATOR_NOT_SPECIFIED = -113 -ONIGERR_TARGET_OF_REPEAT_OPERATOR_INVALID = -114 -ONIGERR_NESTED_REPEAT_OPERATOR = -115 -ONIGERR_UNMATCHED_CLOSE_PARENTHESIS = -116 -ONIGERR_END_PATTERN_WITH_UNMATCHED_PARENTHESIS = -117 -ONIGERR_END_PATTERN_IN_GROUP = -118 -ONIGERR_UNDEFINED_GROUP_OPTION = -119 -ONIGERR_INVALID_POSIX_BRACKET_TYPE = -121 -ONIGERR_INVALID_LOOK_BEHIND_PATTERN = -122 -ONIGERR_INVALID_REPEAT_RANGE_PATTERN = -123 -ONIGERR_INVALID_CONDITION_PATTERN = -124 -# values error (syntax error) -ONIGERR_TOO_BIG_NUMBER = -200 -ONIGERR_TOO_BIG_NUMBER_FOR_REPEAT_RANGE = -201 -ONIGERR_UPPER_SMALLER_THAN_LOWER_IN_REPEAT_RANGE = -202 -ONIGERR_EMPTY_RANGE_IN_CHAR_CLASS = -203 -ONIGERR_MISMATCH_CODE_LENGTH_IN_CLASS_RANGE = -204 -ONIGERR_TOO_MANY_MULTI_BYTE_RANGES = -205 -ONIGERR_TOO_SHORT_MULTI_BYTE_STRING = -206 -ONIGERR_TOO_BIG_BACKREF_NUMBER = -207 -ONIGERR_INVALID_BACKREF = -208 -ONIGERR_NUMBERED_BACKREF_OR_CALL_NOT_ALLOWED = -209 -ONIGERR_TOO_MANY_CAPTURE_GROUPS = -210 -ONIGERR_TOO_SHORT_DIGITS = -211 -ONIGERR_TOO_LONG_WIDE_CHAR_VALUE = -212 -ONIGERR_EMPTY_GROUP_NAME = -214 -ONIGERR_INVALID_GROUP_NAME = -215 -ONIGERR_INVALID_CHAR_IN_GROUP_NAME = -216 -ONIGERR_UNDEFINED_NAME_REFERENCE = -217 -ONIGERR_UNDEFINED_GROUP_REFERENCE = -218 -ONIGERR_MULTIPLEX_DEFINED_NAME = -219 -ONIGERR_MULTIPLEX_DEFINITION_NAME_CALL = -220 -ONIGERR_NEVER_ENDING_RECURSION = -221 -ONIGERR_GROUP_NUMBER_OVER_FOR_CAPTURE_HISTORY = -222 -ONIGERR_INVALID_CHAR_PROPERTY_NAME = -223 -ONIGERR_INVALID_CODE_POINT_VALUE = -400 -ONIGERR_INVALID_WIDE_CHAR_VALUE = -400 -ONIGERR_TOO_BIG_WIDE_CHAR_VALUE = -401 -ONIGERR_NOT_SUPPORTED_ENCODING_COMBINATION = -402 -ONIGERR_INVALID_COMBINATION_OF_OPTIONS = -403 - -# errors related to thread -#ONIGERR_OVER_THREAD_PASS_LIMIT_COUNT = -1001 - - -OnigWarnFunc = ctypes.CFUNCTYPE(None, ctypes.c_char_p) - -# -# Onigmo APIs -# - -# onig_init -onig_init = libonig.onig_init - -# onig_error_code_to_str -libonig.onig_error_code_to_str.argtypes = [ctypes.c_char_p, _c_ssize_t, - ctypes.POINTER(OnigErrorInfo)] -def onig_error_code_to_str(err_buf, err_code, err_info=None): - return libonig.onig_error_code_to_str(err_buf, err_code, err_info) - -# onig_set_warn_func -libonig.onig_set_warn_func.argtypes = [OnigWarnFunc] -onig_set_warn_func = libonig.onig_set_warn_func - -# onig_set_verb_warn_func -libonig.onig_set_verb_warn_func.argtypes = [OnigWarnFunc] -onig_set_verb_warn_func = libonig.onig_set_verb_warn_func - -# onig_new -libonig.onig_new.argtypes = [ctypes.POINTER(OnigRegex), - ctypes.c_void_p, ctypes.c_void_p, - OnigOptionType, OnigEncoding, ctypes.POINTER(OnigSyntaxType), - ctypes.POINTER(OnigErrorInfo)] -onig_new = libonig.onig_new - -# onig_reg_init -# onig_new_without_alloc -# onig_new_deluxe - -# onig_free -libonig.onig_free.argtypes = [OnigRegex] -onig_free = libonig.onig_free - -# onig_free_body - -# onig_search -libonig.onig_search.argtypes = [OnigRegex, - ctypes.c_void_p, ctypes.c_void_p, ctypes.c_void_p, ctypes.c_void_p, - ctypes.POINTER(OnigRegion), OnigOptionType] -libonig.onig_search.restype = _c_ssize_t -onig_search = libonig.onig_search - -# onig_search_gpos -libonig.onig_search_gpos.argtypes = [OnigRegex, - ctypes.c_void_p, ctypes.c_void_p, ctypes.c_void_p, ctypes.c_void_p, - ctypes.c_void_p, - ctypes.POINTER(OnigRegion), OnigOptionType] -libonig.onig_search_gpos.restype = _c_ssize_t -onig_search_gpos = libonig.onig_search_gpos - -# onig_match -libonig.onig_match.argtypes = [OnigRegex, - ctypes.c_void_p, ctypes.c_void_p, ctypes.c_void_p, - ctypes.POINTER(OnigRegion), OnigOptionType] -libonig.onig_match.restype = _c_ssize_t -onig_match = libonig.onig_match - -# onig_region_new -libonig.onig_region_new.argtypes = [] -libonig.onig_region_new.restype = ctypes.POINTER(OnigRegion) -onig_region_new = libonig.onig_region_new - -# onig_region_init - -# onig_region_free -libonig.onig_region_free.argtypes = [ctypes.POINTER(OnigRegion), ctypes.c_int] -onig_region_free = libonig.onig_region_free - -# onig_region_copy -# onig_region_clear -# onig_region_resize -# onig_region_set -# onig_name_to_group_numbers -# onig_name_to_backref_number -# onig_foreach_name -# onig_number_of_names -# onig_number_of_captures -# onig_number_of_capture_histories -# onig_get_capture_tree -# onig_capture_tree_traverse -# onig_noname_group_capture_is_active -# onig_get_encoding -# onig_get_options -# onig_get_case_fold_flag -# onig_get_syntax - -# onig_set_default_syntax -libonig.onig_set_default_syntax.argtypes = [ctypes.POINTER(OnigSyntaxType)] -libonig.onig_set_default_syntax.restype = ctypes.c_int -onig_set_default_syntax = libonig.onig_set_default_syntax - -# onig_copy_syntax -libonig.onig_copy_syntax.argtypes = [ctypes.POINTER(OnigSyntaxType), - ctypes.POINTER(OnigSyntaxType)] -onig_copy_syntax = libonig.onig_copy_syntax - -# onig_get_syntax_op -libonig.onig_get_syntax_op.argtypes = [ctypes.POINTER(OnigSyntaxType)] -libonig.onig_get_syntax_op.restype = ctypes.c_int -onig_get_syntax_op = libonig.onig_get_syntax_op - -# onig_get_syntax_op2 -libonig.onig_get_syntax_op2.argtypes = [ctypes.POINTER(OnigSyntaxType)] -libonig.onig_get_syntax_op2.restype = ctypes.c_int -onig_get_syntax_op2 = libonig.onig_get_syntax_op2 - -# onig_get_syntax_behavior -libonig.onig_get_syntax_behavior.argtypes = [ctypes.POINTER(OnigSyntaxType)] -libonig.onig_get_syntax_behavior.restype = ctypes.c_int -onig_get_syntax_behavior = libonig.onig_get_syntax_behavior - -# onig_get_syntax_options -libonig.onig_get_syntax_options.argtypes = [ctypes.POINTER(OnigSyntaxType)] -libonig.onig_get_syntax_options.restype = ctypes.c_int -onig_get_syntax_options = libonig.onig_get_syntax_options - -# onig_set_syntax_op -libonig.onig_set_syntax_op.argtypes = [ctypes.POINTER(OnigSyntaxType), - ctypes.c_int] -onig_set_syntax_op = libonig.onig_set_syntax_op - -# onig_set_syntax_op2 -libonig.onig_set_syntax_op2.argtypes = [ctypes.POINTER(OnigSyntaxType), - ctypes.c_int] -onig_set_syntax_op2 = libonig.onig_set_syntax_op2 - -# onig_set_syntax_behavior -libonig.onig_set_syntax_behavior.argtypes = [ctypes.POINTER(OnigSyntaxType), - ctypes.c_int] -onig_set_syntax_behavior = libonig.onig_set_syntax_behavior - -# onig_set_syntax_options -libonig.onig_set_syntax_options.argtypes = [ctypes.POINTER(OnigSyntaxType), - ctypes.c_int] -onig_set_syntax_options = libonig.onig_set_syntax_options - -# onig_set_meta_char -# onig_copy_encoding -# onig_get_default_case_fold_flag -# onig_set_default_case_fold_flag - -# onig_get_match_stack_limit_size -libonig.onig_get_match_stack_limit_size.argtypes = [] -libonig.onig_get_match_stack_limit_size.restype = ctypes.c_int -onig_get_match_stack_limit_size = libonig.onig_get_match_stack_limit_size - -# onig_set_match_stack_limit_size -libonig.onig_set_match_stack_limit_size.argtypes = [ctypes.c_int] -libonig.onig_set_match_stack_limit_size.restype = ctypes.c_int -onig_set_match_stack_limit_size = libonig.onig_set_match_stack_limit_size - -# onig_get_parse_depth_limit -libonig.onig_get_parse_depth_limit.argtypes = [] -libonig.onig_get_parse_depth_limit.restype = ctypes.c_int -onig_get_parse_depth_limit = libonig.onig_get_parse_depth_limit - -# onig_set_parse_depth_limit -libonig.onig_set_parse_depth_limit.argtypes = [ctypes.c_int] -libonig.onig_set_parse_depth_limit.restype = ctypes.c_int -onig_set_parse_depth_limit = libonig.onig_set_parse_depth_limit - -# onig_end -libonig.onig_end.argtypes = [] -onig_end = libonig.onig_end - -# onig_version -libonig.onig_version.argtypes = [] -libonig.onig_version.restype = ctypes.c_char_p -def onig_version(): - return libonig.onig_version().decode() - -# onig_copyright -libonig.onig_copyright.argtypes = [] -libonig.onig_copyright.restype = ctypes.c_char_p -def onig_copyright(): - return libonig.onig_copyright().decode() diff --git a/vendor/onig/regcomp.c b/vendor/onig/regcomp.c deleted file mode 100644 index 59b1f40..0000000 --- a/vendor/onig/regcomp.c +++ /dev/null @@ -1,6740 +0,0 @@ -/********************************************************************** - regcomp.c - Onigmo (Oniguruma-mod) (regular expression library) -**********************************************************************/ -/*- - * Copyright (c) 2002-2013 K.Kosako - * Copyright (c) 2011-2016 K.Takata - * 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. - */ - -#include "regparse.h" - -OnigCaseFoldType OnigDefaultCaseFoldFlag = ONIGENC_CASE_FOLD_MIN; - -extern OnigCaseFoldType -onig_get_default_case_fold_flag(void) -{ - return OnigDefaultCaseFoldFlag; -} - -extern int -onig_set_default_case_fold_flag(OnigCaseFoldType case_fold_flag) -{ - OnigDefaultCaseFoldFlag = case_fold_flag; - return 0; -} - - -#ifndef PLATFORM_UNALIGNED_WORD_ACCESS -static unsigned char PadBuf[WORD_ALIGNMENT_SIZE]; -#endif - -#if 0 -static UChar* -str_dup(UChar* s, UChar* end) -{ - ptrdiff_t len = end - s; - - if (len > 0) { - UChar* r = (UChar* )xmalloc(len + 1); - CHECK_NULL_RETURN(r); - xmemcpy(r, s, len); - r[len] = (UChar )0; - return r; - } - else return NULL; -} -#endif - -static void -swap_node(Node* a, Node* b) -{ - Node c; - c = *a; *a = *b; *b = c; - - if (NTYPE(a) == NT_STR) { - StrNode* sn = NSTR(a); - if (sn->capa == 0) { - size_t len = sn->end - sn->s; - sn->s = sn->buf; - sn->end = sn->s + len; - } - } - - if (NTYPE(b) == NT_STR) { - StrNode* sn = NSTR(b); - if (sn->capa == 0) { - size_t len = sn->end - sn->s; - sn->s = sn->buf; - sn->end = sn->s + len; - } - } -} - -static OnigDistance -distance_add(OnigDistance d1, OnigDistance d2) -{ - if (d1 == ONIG_INFINITE_DISTANCE || d2 == ONIG_INFINITE_DISTANCE) - return ONIG_INFINITE_DISTANCE; - else { - if (d1 <= ONIG_INFINITE_DISTANCE - d2) return d1 + d2; - else return ONIG_INFINITE_DISTANCE; - } -} - -static OnigDistance -distance_multiply(OnigDistance d, int m) -{ - if (m == 0) return 0; - - if (d < ONIG_INFINITE_DISTANCE / m) - return d * m; - else - return ONIG_INFINITE_DISTANCE; -} - -static int -bitset_is_empty(BitSetRef bs) -{ - int i; - for (i = 0; i < BITSET_SIZE; i++) { - if (bs[i] != 0) return 0; - } - return 1; -} - -#ifdef ONIG_DEBUG -static int -bitset_on_num(BitSetRef bs) -{ - int i, n; - - n = 0; - for (i = 0; i < SINGLE_BYTE_SIZE; i++) { - if (BITSET_AT(bs, i)) n++; - } - return n; -} -#endif - -extern int -onig_bbuf_init(BBuf* buf, OnigDistance size) -{ - if (size <= 0) { - size = 0; - buf->p = NULL; - } - else { - buf->p = (UChar* )xmalloc(size); - if (IS_NULL(buf->p)) return(ONIGERR_MEMORY); - } - - buf->alloc = (unsigned int )size; - buf->used = 0; - return 0; -} - - -#ifdef USE_SUBEXP_CALL - -static int -unset_addr_list_init(UnsetAddrList* uslist, int size) -{ - UnsetAddr* p; - - p = (UnsetAddr* )xmalloc(sizeof(UnsetAddr)* size); - CHECK_NULL_RETURN_MEMERR(p); - uslist->num = 0; - uslist->alloc = size; - uslist->us = p; - return 0; -} - -static void -unset_addr_list_end(UnsetAddrList* uslist) -{ - if (IS_NOT_NULL(uslist->us)) - xfree(uslist->us); -} - -static int -unset_addr_list_add(UnsetAddrList* uslist, int offset, struct _Node* node) -{ - UnsetAddr* p; - int size; - - if (uslist->num >= uslist->alloc) { - size = uslist->alloc * 2; - p = (UnsetAddr* )xrealloc(uslist->us, sizeof(UnsetAddr) * size); - CHECK_NULL_RETURN_MEMERR(p); - uslist->alloc = size; - uslist->us = p; - } - - uslist->us[uslist->num].offset = offset; - uslist->us[uslist->num].target = node; - uslist->num++; - return 0; -} -#endif /* USE_SUBEXP_CALL */ - - -static int -add_opcode(regex_t* reg, int opcode) -{ - BBUF_ADD1(reg, opcode); - return 0; -} - -#ifdef USE_COMBINATION_EXPLOSION_CHECK -static int -add_state_check_num(regex_t* reg, int num) -{ - StateCheckNumType n = (StateCheckNumType )num; - - BBUF_ADD(reg, &n, SIZE_STATE_CHECK_NUM); - return 0; -} -#endif - -static int -add_rel_addr(regex_t* reg, int addr) -{ - RelAddrType ra = (RelAddrType )addr; - - BBUF_ADD(reg, &ra, SIZE_RELADDR); - return 0; -} - -static int -add_abs_addr(regex_t* reg, int addr) -{ - AbsAddrType ra = (AbsAddrType )addr; - - BBUF_ADD(reg, &ra, SIZE_ABSADDR); - return 0; -} - -static int -add_length(regex_t* reg, OnigDistance len) -{ - LengthType l = (LengthType )len; - - BBUF_ADD(reg, &l, SIZE_LENGTH); - return 0; -} - -static int -add_mem_num(regex_t* reg, int num) -{ - MemNumType n = (MemNumType )num; - - BBUF_ADD(reg, &n, SIZE_MEMNUM); - return 0; -} - -#if 0 -static int -add_pointer(regex_t* reg, void* addr) -{ - PointerType ptr = (PointerType )addr; - - BBUF_ADD(reg, &ptr, SIZE_POINTER); - return 0; -} -#endif - -static int -add_option(regex_t* reg, OnigOptionType option) -{ - BBUF_ADD(reg, &option, SIZE_OPTION); - return 0; -} - -static int -add_opcode_rel_addr(regex_t* reg, int opcode, int addr) -{ - int r; - - r = add_opcode(reg, opcode); - if (r) return r; - r = add_rel_addr(reg, addr); - return r; -} - -static int -add_bytes(regex_t* reg, UChar* bytes, OnigDistance len) -{ - BBUF_ADD(reg, bytes, len); - return 0; -} - -static int -add_bitset(regex_t* reg, BitSetRef bs) -{ - BBUF_ADD(reg, bs, SIZE_BITSET); - return 0; -} - -static int -add_opcode_option(regex_t* reg, int opcode, OnigOptionType option) -{ - int r; - - r = add_opcode(reg, opcode); - if (r) return r; - r = add_option(reg, option); - return r; -} - -static int compile_length_tree(Node* node, regex_t* reg); -static int compile_tree(Node* node, regex_t* reg); - - -#define IS_NEED_STR_LEN_OP_EXACT(op) \ - ((op) == OP_EXACTN || (op) == OP_EXACTMB2N ||\ - (op) == OP_EXACTMB3N || (op) == OP_EXACTMBN || (op) == OP_EXACTN_IC) - -static int -select_str_opcode(int mb_len, OnigDistance byte_len, int ignore_case) -{ - int op; - OnigDistance str_len = (byte_len + mb_len - 1) / mb_len; - - if (ignore_case) { - switch (str_len) { - case 1: op = OP_EXACT1_IC; break; - default: op = OP_EXACTN_IC; break; - } - } - else { - switch (mb_len) { - case 1: - switch (str_len) { - case 1: op = OP_EXACT1; break; - case 2: op = OP_EXACT2; break; - case 3: op = OP_EXACT3; break; - case 4: op = OP_EXACT4; break; - case 5: op = OP_EXACT5; break; - default: op = OP_EXACTN; break; - } - break; - - case 2: - switch (str_len) { - case 1: op = OP_EXACTMB2N1; break; - case 2: op = OP_EXACTMB2N2; break; - case 3: op = OP_EXACTMB2N3; break; - default: op = OP_EXACTMB2N; break; - } - break; - - case 3: - op = OP_EXACTMB3N; - break; - - default: - op = OP_EXACTMBN; - break; - } - } - return op; -} - -static int -compile_tree_empty_check(Node* node, regex_t* reg, int empty_info) -{ - int r; - int saved_num_null_check = reg->num_null_check; - - if (empty_info != 0) { - r = add_opcode(reg, OP_NULL_CHECK_START); - if (r) return r; - r = add_mem_num(reg, reg->num_null_check); /* NULL CHECK ID */ - if (r) return r; - reg->num_null_check++; - } - - r = compile_tree(node, reg); - if (r) return r; - - if (empty_info != 0) { - if (empty_info == NQ_TARGET_IS_EMPTY) - r = add_opcode(reg, OP_NULL_CHECK_END); - else if (empty_info == NQ_TARGET_IS_EMPTY_MEM) - r = add_opcode(reg, OP_NULL_CHECK_END_MEMST); - else if (empty_info == NQ_TARGET_IS_EMPTY_REC) - r = add_opcode(reg, OP_NULL_CHECK_END_MEMST_PUSH); - - if (r) return r; - r = add_mem_num(reg, saved_num_null_check); /* NULL CHECK ID */ - } - return r; -} - -#ifdef USE_SUBEXP_CALL -static int -compile_call(CallNode* node, regex_t* reg) -{ - int r; - - r = add_opcode(reg, OP_CALL); - if (r) return r; - r = unset_addr_list_add(node->unset_addr_list, BBUF_GET_OFFSET_POS(reg), - node->target); - if (r) return r; - r = add_abs_addr(reg, 0 /*dummy addr.*/); - return r; -} -#endif - -static int -compile_tree_n_times(Node* node, int n, regex_t* reg) -{ - int i, r; - - for (i = 0; i < n; i++) { - r = compile_tree(node, reg); - if (r) return r; - } - return 0; -} - -static int -add_compile_string_length(UChar* s ARG_UNUSED, int mb_len, OnigDistance byte_len, - regex_t* reg ARG_UNUSED, int ignore_case) -{ - int len; - int op = select_str_opcode(mb_len, byte_len, ignore_case); - - len = SIZE_OPCODE; - - if (op == OP_EXACTMBN) len += SIZE_LENGTH; - if (IS_NEED_STR_LEN_OP_EXACT(op)) - len += SIZE_LENGTH; - - len += (int )byte_len; - return len; -} - -static int -add_compile_string(UChar* s, int mb_len, OnigDistance byte_len, - regex_t* reg, int ignore_case) -{ - int op = select_str_opcode(mb_len, byte_len, ignore_case); - add_opcode(reg, op); - - if (op == OP_EXACTMBN) - add_length(reg, mb_len); - - if (IS_NEED_STR_LEN_OP_EXACT(op)) { - if (op == OP_EXACTN_IC) - add_length(reg, byte_len); - else - add_length(reg, byte_len / mb_len); - } - - add_bytes(reg, s, byte_len); - return 0; -} - - -static int -compile_length_string_node(Node* node, regex_t* reg) -{ - int rlen, r, len, prev_len, blen, ambig; - OnigEncoding enc = reg->enc; - UChar *p, *prev; - StrNode* sn; - - sn = NSTR(node); - if (sn->end <= sn->s) - return 0; - - ambig = NSTRING_IS_AMBIG(node); - - p = prev = sn->s; - prev_len = enclen(enc, p, sn->end); - p += prev_len; - blen = prev_len; - rlen = 0; - - for (; p < sn->end; ) { - len = enclen(enc, p, sn->end); - if (len == prev_len || ambig) { - blen += len; - } - else { - r = add_compile_string_length(prev, prev_len, blen, reg, ambig); - rlen += r; - prev = p; - blen = len; - prev_len = len; - } - p += len; - } - r = add_compile_string_length(prev, prev_len, blen, reg, ambig); - rlen += r; - return rlen; -} - -static int -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); -} - -static int -compile_string_node(Node* node, regex_t* reg) -{ - int r, len, prev_len, blen, ambig; - OnigEncoding enc = reg->enc; - UChar *p, *prev, *end; - StrNode* sn; - - sn = NSTR(node); - if (sn->end <= sn->s) - return 0; - - end = sn->end; - ambig = NSTRING_IS_AMBIG(node); - - p = prev = sn->s; - prev_len = enclen(enc, p, end); - p += prev_len; - blen = prev_len; - - for (; p < end; ) { - len = enclen(enc, p, end); - if (len == prev_len || ambig) { - blen += len; - } - else { - r = add_compile_string(prev, prev_len, blen, reg, ambig); - if (r) return r; - - prev = p; - blen = len; - prev_len = len; - } - - p += len; - } - return add_compile_string(prev, prev_len, blen, reg, ambig); -} - -static int -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); -} - -static int -add_multi_byte_cclass(BBuf* mbuf, regex_t* reg) -{ -#ifdef PLATFORM_UNALIGNED_WORD_ACCESS - add_length(reg, mbuf->used); - return add_bytes(reg, mbuf->p, mbuf->used); -#else - int r, pad_size; - UChar* p = BBUF_GET_ADD_ADDRESS(reg) + SIZE_LENGTH; - - GET_ALIGNMENT_PAD_SIZE(p, pad_size); - add_length(reg, mbuf->used + (WORD_ALIGNMENT_SIZE - 1)); - if (pad_size != 0) add_bytes(reg, PadBuf, pad_size); - - r = add_bytes(reg, mbuf->p, mbuf->used); - - /* padding for return value from compile_length_cclass_node() to be fix. */ - pad_size = (WORD_ALIGNMENT_SIZE - 1) - pad_size; - if (pad_size != 0) add_bytes(reg, PadBuf, pad_size); - return r; -#endif -} - -static int -compile_length_cclass_node(CClassNode* cc, regex_t* reg) -{ - int len; - - if (IS_NULL(cc->mbuf)) { - len = SIZE_OPCODE + SIZE_BITSET; - } - else { - if (ONIGENC_MBC_MINLEN(reg->enc) > 1 || bitset_is_empty(cc->bs)) { - len = SIZE_OPCODE; - } - else { - len = SIZE_OPCODE + SIZE_BITSET; - } -#ifdef PLATFORM_UNALIGNED_WORD_ACCESS - len += SIZE_LENGTH + cc->mbuf->used; -#else - len += SIZE_LENGTH + cc->mbuf->used + (WORD_ALIGNMENT_SIZE - 1); -#endif - } - - return len; -} - -static int -compile_cclass_node(CClassNode* cc, regex_t* reg) -{ - int r; - - if (IS_NULL(cc->mbuf)) { - if (IS_NCCLASS_NOT(cc)) - add_opcode(reg, OP_CCLASS_NOT); - else - add_opcode(reg, OP_CCLASS); - - r = add_bitset(reg, cc->bs); - } - else { - if (ONIGENC_MBC_MINLEN(reg->enc) > 1 || bitset_is_empty(cc->bs)) { - if (IS_NCCLASS_NOT(cc)) - add_opcode(reg, OP_CCLASS_MB_NOT); - else - add_opcode(reg, OP_CCLASS_MB); - - r = add_multi_byte_cclass(cc->mbuf, reg); - } - else { - if (IS_NCCLASS_NOT(cc)) - add_opcode(reg, OP_CCLASS_MIX_NOT); - else - add_opcode(reg, OP_CCLASS_MIX); - - r = add_bitset(reg, cc->bs); - if (r) return r; - r = add_multi_byte_cclass(cc->mbuf, reg); - } - } - - return r; -} - -static int -entry_repeat_range(regex_t* reg, int id, int lower, int upper) -{ -#define REPEAT_RANGE_ALLOC 4 - - OnigRepeatRange* p; - - if (reg->repeat_range_alloc == 0) { - p = (OnigRepeatRange* )xmalloc(sizeof(OnigRepeatRange) * REPEAT_RANGE_ALLOC); - CHECK_NULL_RETURN_MEMERR(p); - reg->repeat_range = p; - reg->repeat_range_alloc = REPEAT_RANGE_ALLOC; - } - else if (reg->repeat_range_alloc <= id) { - int n; - n = reg->repeat_range_alloc + REPEAT_RANGE_ALLOC; - p = (OnigRepeatRange* )xrealloc(reg->repeat_range, - sizeof(OnigRepeatRange) * n); - CHECK_NULL_RETURN_MEMERR(p); - reg->repeat_range = p; - reg->repeat_range_alloc = n; - } - else { - p = reg->repeat_range; - } - - p[id].lower = lower; - p[id].upper = (IS_REPEAT_INFINITE(upper) ? 0x7fffffff : upper); - return 0; -} - -static int -compile_range_repeat_node(QtfrNode* qn, int target_len, int empty_info, - regex_t* reg) -{ - int r; - int num_repeat = reg->num_repeat; - - r = add_opcode(reg, qn->greedy ? OP_REPEAT : OP_REPEAT_NG); - if (r) return r; - r = add_mem_num(reg, num_repeat); /* OP_REPEAT ID */ - reg->num_repeat++; - if (r) return r; - r = add_rel_addr(reg, target_len + SIZE_OP_REPEAT_INC); - if (r) return r; - - r = entry_repeat_range(reg, num_repeat, qn->lower, qn->upper); - if (r) return r; - - r = compile_tree_empty_check(qn->target, reg, empty_info); - if (r) return r; - - if ( -#ifdef USE_SUBEXP_CALL - reg->num_call > 0 || -#endif - IS_QUANTIFIER_IN_REPEAT(qn)) { - r = add_opcode(reg, qn->greedy ? OP_REPEAT_INC_SG : OP_REPEAT_INC_NG_SG); - } - else { - r = add_opcode(reg, qn->greedy ? OP_REPEAT_INC : OP_REPEAT_INC_NG); - } - if (r) return r; - r = add_mem_num(reg, num_repeat); /* OP_REPEAT ID */ - return r; -} - -static int -is_anychar_star_quantifier(QtfrNode* qn) -{ - if (qn->greedy && IS_REPEAT_INFINITE(qn->upper) && - NTYPE(qn->target) == NT_CANY) - return 1; - else - return 0; -} - -#define QUANTIFIER_EXPAND_LIMIT_SIZE 50 -#define CKN_ON (ckn > 0) - -#ifdef USE_COMBINATION_EXPLOSION_CHECK - -static int -compile_length_quantifier_node(QtfrNode* qn, regex_t* reg) -{ - int len, mod_tlen, cklen; - int ckn; - int infinite = IS_REPEAT_INFINITE(qn->upper); - int empty_info = qn->target_empty_info; - int tlen = compile_length_tree(qn->target, reg); - - if (tlen < 0) return tlen; - - ckn = ((reg->num_comb_exp_check > 0) ? qn->comb_exp_check_num : 0); - - cklen = (CKN_ON ? SIZE_STATE_CHECK_NUM: 0); - - /* anychar repeat */ - if (NTYPE(qn->target) == NT_CANY) { - if (qn->greedy && infinite) { - if (IS_NOT_NULL(qn->next_head_exact) && !CKN_ON) - return SIZE_OP_ANYCHAR_STAR_PEEK_NEXT + tlen * qn->lower + cklen; - else - return SIZE_OP_ANYCHAR_STAR + tlen * qn->lower + cklen; - } - } - - if (empty_info != 0) - mod_tlen = tlen + (SIZE_OP_NULL_CHECK_START + SIZE_OP_NULL_CHECK_END); - else - mod_tlen = tlen; - - if (infinite && qn->lower <= 1) { - if (qn->greedy) { - if (qn->lower == 1) - len = SIZE_OP_JUMP; - else - len = 0; - - len += SIZE_OP_PUSH + cklen + mod_tlen + SIZE_OP_JUMP; - } - else { - if (qn->lower == 0) - len = SIZE_OP_JUMP; - else - len = 0; - - len += mod_tlen + SIZE_OP_PUSH + cklen; - } - } - else if (qn->upper == 0) { - if (qn->is_refered != 0) /* /(?..){0}/ */ - len = SIZE_OP_JUMP + tlen; - else - len = 0; - } - else if (qn->upper == 1 && qn->greedy) { - if (qn->lower == 0) { - if (CKN_ON) { - len = SIZE_OP_STATE_CHECK_PUSH + tlen; - } - else { - len = SIZE_OP_PUSH + tlen; - } - } - else { - len = tlen; - } - } - else if (!qn->greedy && qn->upper == 1 && qn->lower == 0) { /* '??' */ - len = SIZE_OP_PUSH + cklen + SIZE_OP_JUMP + tlen; - } - else { - len = SIZE_OP_REPEAT_INC - + mod_tlen + SIZE_OPCODE + SIZE_RELADDR + SIZE_MEMNUM; - if (CKN_ON) - len += SIZE_OP_STATE_CHECK; - } - - return len; -} - -static int -compile_quantifier_node(QtfrNode* qn, regex_t* reg) -{ - int r, mod_tlen; - int ckn; - int infinite = IS_REPEAT_INFINITE(qn->upper); - int empty_info = qn->target_empty_info; - int tlen = compile_length_tree(qn->target, reg); - - if (tlen < 0) return tlen; - - ckn = ((reg->num_comb_exp_check > 0) ? qn->comb_exp_check_num : 0); - - if (is_anychar_star_quantifier(qn)) { - r = compile_tree_n_times(qn->target, qn->lower, reg); - if (r) return r; - if (IS_NOT_NULL(qn->next_head_exact) && !CKN_ON) { - if (IS_MULTILINE(reg->options)) - r = add_opcode(reg, OP_ANYCHAR_ML_STAR_PEEK_NEXT); - else - r = add_opcode(reg, OP_ANYCHAR_STAR_PEEK_NEXT); - if (r) return r; - if (CKN_ON) { - r = add_state_check_num(reg, ckn); - if (r) return r; - } - - return add_bytes(reg, NSTR(qn->next_head_exact)->s, 1); - } - else { - if (IS_MULTILINE(reg->options)) { - r = add_opcode(reg, (CKN_ON ? - OP_STATE_CHECK_ANYCHAR_ML_STAR - : OP_ANYCHAR_ML_STAR)); - } - else { - r = add_opcode(reg, (CKN_ON ? - OP_STATE_CHECK_ANYCHAR_STAR - : OP_ANYCHAR_STAR)); - } - if (r) return r; - if (CKN_ON) - r = add_state_check_num(reg, ckn); - - return r; - } - } - - if (empty_info != 0) - mod_tlen = tlen + (SIZE_OP_NULL_CHECK_START + SIZE_OP_NULL_CHECK_END); - else - mod_tlen = tlen; - - if (infinite && qn->lower <= 1) { - if (qn->greedy) { - if (qn->lower == 1) { - r = add_opcode_rel_addr(reg, OP_JUMP, - (CKN_ON ? SIZE_OP_STATE_CHECK_PUSH : SIZE_OP_PUSH)); - if (r) return r; - } - - if (CKN_ON) { - r = add_opcode(reg, OP_STATE_CHECK_PUSH); - if (r) return r; - r = add_state_check_num(reg, ckn); - if (r) return r; - r = add_rel_addr(reg, mod_tlen + SIZE_OP_JUMP); - } - else { - r = add_opcode_rel_addr(reg, OP_PUSH, mod_tlen + SIZE_OP_JUMP); - } - if (r) return r; - r = compile_tree_empty_check(qn->target, reg, empty_info); - if (r) return r; - r = add_opcode_rel_addr(reg, OP_JUMP, - -(mod_tlen + (int )SIZE_OP_JUMP - + (int )(CKN_ON ? SIZE_OP_STATE_CHECK_PUSH : SIZE_OP_PUSH))); - } - else { - if (qn->lower == 0) { - r = add_opcode_rel_addr(reg, OP_JUMP, mod_tlen); - if (r) return r; - } - r = compile_tree_empty_check(qn->target, reg, empty_info); - if (r) return r; - if (CKN_ON) { - r = add_opcode(reg, OP_STATE_CHECK_PUSH_OR_JUMP); - if (r) return r; - r = add_state_check_num(reg, ckn); - if (r) return r; - r = add_rel_addr(reg, - -(mod_tlen + (int )SIZE_OP_STATE_CHECK_PUSH_OR_JUMP)); - } - else - r = add_opcode_rel_addr(reg, OP_PUSH, -(mod_tlen + (int )SIZE_OP_PUSH)); - } - } - else if (qn->upper == 0) { - if (qn->is_refered != 0) { /* /(?..){0}/ */ - r = add_opcode_rel_addr(reg, OP_JUMP, tlen); - if (r) return r; - r = compile_tree(qn->target, reg); - } - else - r = 0; - } - else if (qn->upper == 1 && qn->greedy) { - if (qn->lower == 0) { - if (CKN_ON) { - r = add_opcode(reg, OP_STATE_CHECK_PUSH); - if (r) return r; - r = add_state_check_num(reg, ckn); - if (r) return r; - r = add_rel_addr(reg, tlen); - } - else { - r = add_opcode_rel_addr(reg, OP_PUSH, tlen); - } - if (r) return r; - } - - r = compile_tree(qn->target, reg); - } - else if (!qn->greedy && qn->upper == 1 && qn->lower == 0) { /* '??' */ - if (CKN_ON) { - r = add_opcode(reg, OP_STATE_CHECK_PUSH); - if (r) return r; - r = add_state_check_num(reg, ckn); - if (r) return r; - r = add_rel_addr(reg, SIZE_OP_JUMP); - } - else { - r = add_opcode_rel_addr(reg, OP_PUSH, SIZE_OP_JUMP); - } - - if (r) return r; - r = add_opcode_rel_addr(reg, OP_JUMP, tlen); - if (r) return r; - r = compile_tree(qn->target, reg); - } - else { - r = compile_range_repeat_node(qn, mod_tlen, empty_info, reg); - if (CKN_ON) { - if (r) return r; - r = add_opcode(reg, OP_STATE_CHECK); - if (r) return r; - r = add_state_check_num(reg, ckn); - } - } - return r; -} - -#else /* USE_COMBINATION_EXPLOSION_CHECK */ - -static int -compile_length_quantifier_node(QtfrNode* qn, regex_t* reg) -{ - int len, mod_tlen; - int infinite = IS_REPEAT_INFINITE(qn->upper); - int empty_info = qn->target_empty_info; - int tlen = compile_length_tree(qn->target, reg); - - if (tlen < 0) return tlen; - - /* anychar repeat */ - if (NTYPE(qn->target) == NT_CANY) { - if (qn->greedy && infinite) { - if (IS_NOT_NULL(qn->next_head_exact)) - return SIZE_OP_ANYCHAR_STAR_PEEK_NEXT + tlen * qn->lower; - else - return SIZE_OP_ANYCHAR_STAR + tlen * qn->lower; - } - } - - if (empty_info != 0) - mod_tlen = tlen + (SIZE_OP_NULL_CHECK_START + SIZE_OP_NULL_CHECK_END); - else - mod_tlen = tlen; - - if (infinite && - (qn->lower <= 1 || tlen * qn->lower <= QUANTIFIER_EXPAND_LIMIT_SIZE)) { - if (qn->lower == 1 && tlen > QUANTIFIER_EXPAND_LIMIT_SIZE) { - len = SIZE_OP_JUMP; - } - else { - len = tlen * qn->lower; - } - - if (qn->greedy) { -#ifdef USE_OP_PUSH_OR_JUMP_EXACT - if (IS_NOT_NULL(qn->head_exact)) - len += SIZE_OP_PUSH_OR_JUMP_EXACT1 + mod_tlen + SIZE_OP_JUMP; - else -#endif - if (IS_NOT_NULL(qn->next_head_exact)) - len += SIZE_OP_PUSH_IF_PEEK_NEXT + mod_tlen + SIZE_OP_JUMP; - else - len += SIZE_OP_PUSH + mod_tlen + SIZE_OP_JUMP; - } - else - len += SIZE_OP_JUMP + mod_tlen + SIZE_OP_PUSH; - } - else if (qn->upper == 0 && qn->is_refered != 0) { /* /(?..){0}/ */ - len = SIZE_OP_JUMP + tlen; - } - else if (!infinite && qn->greedy && - (qn->upper == 1 || (tlen + SIZE_OP_PUSH) * qn->upper - <= QUANTIFIER_EXPAND_LIMIT_SIZE)) { - len = tlen * qn->lower; - len += (SIZE_OP_PUSH + tlen) * (qn->upper - qn->lower); - } - else if (!qn->greedy && qn->upper == 1 && qn->lower == 0) { /* '??' */ - len = SIZE_OP_PUSH + SIZE_OP_JUMP + tlen; - } - else { - len = SIZE_OP_REPEAT_INC - + mod_tlen + SIZE_OPCODE + SIZE_RELADDR + SIZE_MEMNUM; - } - - return len; -} - -static int -compile_quantifier_node(QtfrNode* qn, regex_t* reg) -{ - int i, r, mod_tlen; - int infinite = IS_REPEAT_INFINITE(qn->upper); - int empty_info = qn->target_empty_info; - int tlen = compile_length_tree(qn->target, reg); - - if (tlen < 0) return tlen; - - if (is_anychar_star_quantifier(qn)) { - r = compile_tree_n_times(qn->target, qn->lower, reg); - if (r) return r; - if (IS_NOT_NULL(qn->next_head_exact)) { - if (IS_MULTILINE(reg->options)) - r = add_opcode(reg, OP_ANYCHAR_ML_STAR_PEEK_NEXT); - else - r = add_opcode(reg, OP_ANYCHAR_STAR_PEEK_NEXT); - if (r) return r; - return add_bytes(reg, NSTR(qn->next_head_exact)->s, 1); - } - else { - if (IS_MULTILINE(reg->options)) - return add_opcode(reg, OP_ANYCHAR_ML_STAR); - else - return add_opcode(reg, OP_ANYCHAR_STAR); - } - } - - if (empty_info != 0) - mod_tlen = tlen + (SIZE_OP_NULL_CHECK_START + SIZE_OP_NULL_CHECK_END); - else - mod_tlen = tlen; - - if (infinite && - (qn->lower <= 1 || tlen * qn->lower <= QUANTIFIER_EXPAND_LIMIT_SIZE)) { - if (qn->lower == 1 && tlen > QUANTIFIER_EXPAND_LIMIT_SIZE) { - if (qn->greedy) { -#ifdef USE_OP_PUSH_OR_JUMP_EXACT - if (IS_NOT_NULL(qn->head_exact)) - r = add_opcode_rel_addr(reg, OP_JUMP, SIZE_OP_PUSH_OR_JUMP_EXACT1); - else -#endif - if (IS_NOT_NULL(qn->next_head_exact)) - r = add_opcode_rel_addr(reg, OP_JUMP, SIZE_OP_PUSH_IF_PEEK_NEXT); - else - r = add_opcode_rel_addr(reg, OP_JUMP, SIZE_OP_PUSH); - } - else { - r = add_opcode_rel_addr(reg, OP_JUMP, SIZE_OP_JUMP); - } - if (r) return r; - } - else { - r = compile_tree_n_times(qn->target, qn->lower, reg); - if (r) return r; - } - - if (qn->greedy) { -#ifdef USE_OP_PUSH_OR_JUMP_EXACT - if (IS_NOT_NULL(qn->head_exact)) { - r = add_opcode_rel_addr(reg, OP_PUSH_OR_JUMP_EXACT1, - mod_tlen + SIZE_OP_JUMP); - if (r) return r; - add_bytes(reg, NSTR(qn->head_exact)->s, 1); - r = compile_tree_empty_check(qn->target, reg, empty_info); - if (r) return r; - r = add_opcode_rel_addr(reg, OP_JUMP, - -(mod_tlen + (int )SIZE_OP_JUMP + (int )SIZE_OP_PUSH_OR_JUMP_EXACT1)); - } - else -#endif - if (IS_NOT_NULL(qn->next_head_exact)) { - r = add_opcode_rel_addr(reg, OP_PUSH_IF_PEEK_NEXT, - mod_tlen + SIZE_OP_JUMP); - if (r) return r; - add_bytes(reg, NSTR(qn->next_head_exact)->s, 1); - r = compile_tree_empty_check(qn->target, reg, empty_info); - if (r) return r; - r = add_opcode_rel_addr(reg, OP_JUMP, - -(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); - if (r) return r; - r = compile_tree_empty_check(qn->target, reg, empty_info); - if (r) return r; - r = add_opcode_rel_addr(reg, OP_JUMP, - -(mod_tlen + (int )SIZE_OP_JUMP + (int )SIZE_OP_PUSH)); - } - } - else { - r = add_opcode_rel_addr(reg, OP_JUMP, mod_tlen); - if (r) return r; - r = compile_tree_empty_check(qn->target, reg, empty_info); - if (r) return r; - r = add_opcode_rel_addr(reg, OP_PUSH, -(mod_tlen + (int )SIZE_OP_PUSH)); - } - } - else if (qn->upper == 0 && qn->is_refered != 0) { /* /(?..){0}/ */ - r = add_opcode_rel_addr(reg, OP_JUMP, tlen); - if (r) return r; - r = compile_tree(qn->target, reg); - } - else if (!infinite && qn->greedy && - (qn->upper == 1 || (tlen + SIZE_OP_PUSH) * qn->upper - <= QUANTIFIER_EXPAND_LIMIT_SIZE)) { - int n = qn->upper - qn->lower; - - r = compile_tree_n_times(qn->target, qn->lower, reg); - if (r) return r; - - for (i = 0; i < n; i++) { - r = add_opcode_rel_addr(reg, OP_PUSH, - (n - i) * tlen + (n - i - 1) * SIZE_OP_PUSH); - if (r) return r; - r = compile_tree(qn->target, reg); - if (r) return r; - } - } - else if (!qn->greedy && qn->upper == 1 && qn->lower == 0) { /* '??' */ - r = add_opcode_rel_addr(reg, OP_PUSH, SIZE_OP_JUMP); - if (r) return r; - r = add_opcode_rel_addr(reg, OP_JUMP, tlen); - if (r) return r; - r = compile_tree(qn->target, reg); - } - else { - r = compile_range_repeat_node(qn, mod_tlen, empty_info, reg); - } - return r; -} -#endif /* USE_COMBINATION_EXPLOSION_CHECK */ - -static int -compile_length_option_node(EncloseNode* node, regex_t* reg) -{ - int tlen; - OnigOptionType prev = reg->options; - - reg->options = node->option; - tlen = compile_length_tree(node->target, reg); - reg->options = prev; - - if (tlen < 0) return tlen; - - if (IS_DYNAMIC_OPTION(prev ^ node->option)) { - return SIZE_OP_SET_OPTION_PUSH + SIZE_OP_SET_OPTION + SIZE_OP_FAIL - + tlen + SIZE_OP_SET_OPTION; - } - else - return tlen; -} - -static int -compile_option_node(EncloseNode* node, regex_t* reg) -{ - int r; - OnigOptionType prev = reg->options; - - if (IS_DYNAMIC_OPTION(prev ^ node->option)) { - r = add_opcode_option(reg, OP_SET_OPTION_PUSH, node->option); - if (r) return r; - r = add_opcode_option(reg, OP_SET_OPTION, prev); - if (r) return r; - r = add_opcode(reg, OP_FAIL); - if (r) return r; - } - - reg->options = node->option; - r = compile_tree(node->target, reg); - reg->options = prev; - - if (IS_DYNAMIC_OPTION(prev ^ node->option)) { - if (r) return r; - r = add_opcode_option(reg, OP_SET_OPTION, prev); - } - return r; -} - -static int -compile_length_enclose_node(EncloseNode* node, regex_t* reg) -{ - int len; - int tlen; - - if (node->type == ENCLOSE_OPTION) - return compile_length_option_node(node, reg); - - if (node->target) { - tlen = compile_length_tree(node->target, reg); - if (tlen < 0) return tlen; - } - else - tlen = 0; - - switch (node->type) { - case ENCLOSE_MEMORY: -#ifdef USE_SUBEXP_CALL - if (IS_ENCLOSE_CALLED(node)) { - len = SIZE_OP_MEMORY_START_PUSH + tlen - + SIZE_OP_CALL + SIZE_OP_JUMP + SIZE_OP_RETURN; - if (BIT_STATUS_AT(reg->bt_mem_end, node->regnum)) - len += (IS_ENCLOSE_RECURSION(node) - ? SIZE_OP_MEMORY_END_PUSH_REC : SIZE_OP_MEMORY_END_PUSH); - else - len += (IS_ENCLOSE_RECURSION(node) - ? SIZE_OP_MEMORY_END_REC : SIZE_OP_MEMORY_END); - } - else if (IS_ENCLOSE_RECURSION(node)) { - len = SIZE_OP_MEMORY_START_PUSH; - len += tlen + (BIT_STATUS_AT(reg->bt_mem_end, node->regnum) - ? SIZE_OP_MEMORY_END_PUSH_REC : SIZE_OP_MEMORY_END_REC); - } - else -#endif - { - if (BIT_STATUS_AT(reg->bt_mem_start, node->regnum)) - len = SIZE_OP_MEMORY_START_PUSH; - else - len = SIZE_OP_MEMORY_START; - - len += tlen + (BIT_STATUS_AT(reg->bt_mem_end, node->regnum) - ? SIZE_OP_MEMORY_END_PUSH : SIZE_OP_MEMORY_END); - } - break; - - case ENCLOSE_STOP_BACKTRACK: - if (IS_ENCLOSE_STOP_BT_SIMPLE_REPEAT(node)) { - QtfrNode* qn = NQTFR(node->target); - tlen = compile_length_tree(qn->target, reg); - if (tlen < 0) return tlen; - - len = tlen * qn->lower - + SIZE_OP_PUSH + tlen + SIZE_OP_POP + SIZE_OP_JUMP; - } - else { - len = SIZE_OP_PUSH_STOP_BT + tlen + SIZE_OP_POP_STOP_BT; - } - break; - - case ENCLOSE_CONDITION: - len = SIZE_OP_CONDITION; - if (NTYPE(node->target) == NT_ALT) { - Node* x = node->target; - - tlen = compile_length_tree(NCAR(x), reg); /* yes-node */ - if (tlen < 0) return tlen; - len += tlen + SIZE_OP_JUMP; - if (NCDR(x) == NULL) return ONIGERR_PARSER_BUG; - x = NCDR(x); - tlen = compile_length_tree(NCAR(x), reg); /* no-node */ - if (tlen < 0) return tlen; - len += tlen; - if (NCDR(x) != NULL) return ONIGERR_INVALID_CONDITION_PATTERN; - } - else { - return ONIGERR_PARSER_BUG; - } - break; - - case ENCLOSE_ABSENT: - len = SIZE_OP_PUSH_ABSENT_POS + SIZE_OP_ABSENT + tlen + SIZE_OP_ABSENT_END; - break; - - default: - return ONIGERR_TYPE_BUG; - break; - } - - return len; -} - -static int get_char_length_tree(Node* node, regex_t* reg, int* len); - -static int -compile_enclose_node(EncloseNode* node, regex_t* reg) -{ - int r, len; - - if (node->type == ENCLOSE_OPTION) - return compile_option_node(node, reg); - - switch (node->type) { - case ENCLOSE_MEMORY: -#ifdef USE_SUBEXP_CALL - if (IS_ENCLOSE_CALLED(node)) { - r = add_opcode(reg, OP_CALL); - if (r) return r; - node->call_addr = BBUF_GET_OFFSET_POS(reg) + SIZE_ABSADDR + SIZE_OP_JUMP; - node->state |= NST_ADDR_FIXED; - r = add_abs_addr(reg, (int )node->call_addr); - if (r) return r; - len = compile_length_tree(node->target, reg); - len += (SIZE_OP_MEMORY_START_PUSH + SIZE_OP_RETURN); - if (BIT_STATUS_AT(reg->bt_mem_end, node->regnum)) - len += (IS_ENCLOSE_RECURSION(node) - ? SIZE_OP_MEMORY_END_PUSH_REC : SIZE_OP_MEMORY_END_PUSH); - else - len += (IS_ENCLOSE_RECURSION(node) - ? SIZE_OP_MEMORY_END_REC : SIZE_OP_MEMORY_END); - - r = add_opcode_rel_addr(reg, OP_JUMP, len); - if (r) return r; - } -#endif - if (BIT_STATUS_AT(reg->bt_mem_start, node->regnum)) - r = add_opcode(reg, OP_MEMORY_START_PUSH); - else - r = add_opcode(reg, OP_MEMORY_START); - if (r) return r; - r = add_mem_num(reg, node->regnum); - if (r) return r; - r = compile_tree(node->target, reg); - if (r) return r; -#ifdef USE_SUBEXP_CALL - if (IS_ENCLOSE_CALLED(node)) { - if (BIT_STATUS_AT(reg->bt_mem_end, node->regnum)) - r = add_opcode(reg, (IS_ENCLOSE_RECURSION(node) - ? OP_MEMORY_END_PUSH_REC : OP_MEMORY_END_PUSH)); - else - r = add_opcode(reg, (IS_ENCLOSE_RECURSION(node) - ? OP_MEMORY_END_REC : OP_MEMORY_END)); - - if (r) return r; - r = add_mem_num(reg, node->regnum); - if (r) return r; - r = add_opcode(reg, OP_RETURN); - } - else if (IS_ENCLOSE_RECURSION(node)) { - if (BIT_STATUS_AT(reg->bt_mem_end, node->regnum)) - r = add_opcode(reg, OP_MEMORY_END_PUSH_REC); - else - r = add_opcode(reg, OP_MEMORY_END_REC); - if (r) return r; - r = add_mem_num(reg, node->regnum); - } - else -#endif - { - if (BIT_STATUS_AT(reg->bt_mem_end, node->regnum)) - r = add_opcode(reg, OP_MEMORY_END_PUSH); - else - r = add_opcode(reg, OP_MEMORY_END); - if (r) return r; - r = add_mem_num(reg, node->regnum); - } - break; - - case ENCLOSE_STOP_BACKTRACK: - if (IS_ENCLOSE_STOP_BT_SIMPLE_REPEAT(node)) { - QtfrNode* qn = NQTFR(node->target); - r = compile_tree_n_times(qn->target, qn->lower, reg); - if (r) return r; - - len = compile_length_tree(qn->target, reg); - if (len < 0) return len; - - r = add_opcode_rel_addr(reg, OP_PUSH, len + SIZE_OP_POP + SIZE_OP_JUMP); - if (r) return r; - r = compile_tree(qn->target, reg); - if (r) return r; - r = add_opcode(reg, OP_POP); - if (r) return r; - r = add_opcode_rel_addr(reg, OP_JUMP, - -((int )SIZE_OP_PUSH + len + (int )SIZE_OP_POP + (int )SIZE_OP_JUMP)); - } - else { - r = add_opcode(reg, OP_PUSH_STOP_BT); - if (r) return r; - r = compile_tree(node->target, reg); - if (r) return r; - r = add_opcode(reg, OP_POP_STOP_BT); - } - break; - - case ENCLOSE_CONDITION: - r = add_opcode(reg, OP_CONDITION); - if (r) return r; - r = add_mem_num(reg, node->regnum); - if (r) return r; - - if (NTYPE(node->target) == NT_ALT) { - Node* x = node->target; - int len2; - - len = compile_length_tree(NCAR(x), reg); /* yes-node */ - if (len < 0) return len; - if (NCDR(x) == NULL) return ONIGERR_PARSER_BUG; - x = NCDR(x); - len2 = compile_length_tree(NCAR(x), reg); /* no-node */ - if (len2 < 0) return len2; - if (NCDR(x) != NULL) return ONIGERR_INVALID_CONDITION_PATTERN; - - x = node->target; - r = add_rel_addr(reg, len + SIZE_OP_JUMP); - if (r) return r; - r = compile_tree(NCAR(x), reg); /* yes-node */ - if (r) return r; - r = add_opcode_rel_addr(reg, OP_JUMP, len2); - if (r) return r; - x = NCDR(x); - r = compile_tree(NCAR(x), reg); /* no-node */ - } - else { - return ONIGERR_PARSER_BUG; - } - break; - - case ENCLOSE_ABSENT: - len = compile_length_tree(node->target, reg); - if (len < 0) return len; - - r = add_opcode(reg, OP_PUSH_ABSENT_POS); - if (r) return r; - r = add_opcode_rel_addr(reg, OP_ABSENT, len + SIZE_OP_ABSENT_END); - if (r) return r; - r = compile_tree(node->target, reg); - if (r) return r; - r = add_opcode(reg, OP_ABSENT_END); - break; - - default: - return ONIGERR_TYPE_BUG; - break; - } - - return r; -} - -static int -compile_length_anchor_node(AnchorNode* node, regex_t* reg) -{ - int len; - int tlen = 0; - - if (node->target) { - tlen = compile_length_tree(node->target, reg); - if (tlen < 0) return tlen; - } - - switch (node->type) { - case ANCHOR_PREC_READ: - len = SIZE_OP_PUSH_POS + tlen + SIZE_OP_POP_POS; - break; - case ANCHOR_PREC_READ_NOT: - len = SIZE_OP_PUSH_POS_NOT + tlen + SIZE_OP_FAIL_POS; - 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; - break; - - default: - len = SIZE_OPCODE; - break; - } - - return len; -} - -static int -compile_anchor_node(AnchorNode* node, regex_t* reg) -{ - int r, len; - - switch (node->type) { - case ANCHOR_BEGIN_BUF: r = add_opcode(reg, OP_BEGIN_BUF); break; - case ANCHOR_END_BUF: r = add_opcode(reg, OP_END_BUF); break; - case ANCHOR_BEGIN_LINE: r = add_opcode(reg, OP_BEGIN_LINE); break; - case ANCHOR_END_LINE: r = add_opcode(reg, OP_END_LINE); break; - case ANCHOR_SEMI_END_BUF: r = add_opcode(reg, OP_SEMI_END_BUF); break; - case ANCHOR_BEGIN_POSITION: r = add_opcode(reg, OP_BEGIN_POSITION); break; - - case ANCHOR_WORD_BOUND: - if (node->ascii_range) r = add_opcode(reg, OP_ASCII_WORD_BOUND); - else r = add_opcode(reg, OP_WORD_BOUND); - break; - case ANCHOR_NOT_WORD_BOUND: - if (node->ascii_range) r = add_opcode(reg, OP_NOT_ASCII_WORD_BOUND); - else r = add_opcode(reg, OP_NOT_WORD_BOUND); - break; -#ifdef USE_WORD_BEGIN_END - case ANCHOR_WORD_BEGIN: - if (node->ascii_range) r = add_opcode(reg, OP_ASCII_WORD_BEGIN); - else r = add_opcode(reg, OP_WORD_BEGIN); - break; - case ANCHOR_WORD_END: - if (node->ascii_range) r = add_opcode(reg, OP_ASCII_WORD_END); - else r = add_opcode(reg, OP_WORD_END); - break; -#endif - case ANCHOR_KEEP: r = add_opcode(reg, OP_KEEP); break; - - case ANCHOR_PREC_READ: - r = add_opcode(reg, OP_PUSH_POS); - if (r) return r; - r = compile_tree(node->target, reg); - if (r) return r; - r = add_opcode(reg, OP_POP_POS); - break; - - case ANCHOR_PREC_READ_NOT: - len = compile_length_tree(node->target, reg); - if (len < 0) return len; - r = add_opcode_rel_addr(reg, OP_PUSH_POS_NOT, len + SIZE_OP_FAIL_POS); - if (r) return r; - r = compile_tree(node->target, reg); - if (r) return r; - r = add_opcode(reg, OP_FAIL_POS); - break; - - case ANCHOR_LOOK_BEHIND: - { - int n; - r = add_opcode(reg, OP_LOOK_BEHIND); - if (r) return r; - if (node->char_len < 0) { - r = get_char_length_tree(node->target, reg, &n); - if (r) return ONIGERR_INVALID_LOOK_BEHIND_PATTERN; - } - else - n = node->char_len; - r = add_length(reg, n); - if (r) return r; - r = compile_tree(node->target, reg); - } - break; - - case ANCHOR_LOOK_BEHIND_NOT: - { - int n; - len = compile_length_tree(node->target, reg); - r = add_opcode_rel_addr(reg, OP_PUSH_LOOK_BEHIND_NOT, - len + SIZE_OP_FAIL_LOOK_BEHIND_NOT); - if (r) return r; - if (node->char_len < 0) { - r = get_char_length_tree(node->target, reg, &n); - if (r) return ONIGERR_INVALID_LOOK_BEHIND_PATTERN; - } - else - n = node->char_len; - r = add_length(reg, n); - if (r) return r; - r = compile_tree(node->target, reg); - if (r) return r; - r = add_opcode(reg, OP_FAIL_LOOK_BEHIND_NOT); - } - break; - - default: - return ONIGERR_TYPE_BUG; - break; - } - - return r; -} - -static int -compile_length_tree(Node* node, regex_t* reg) -{ - int len, type, r; - - type = NTYPE(node); - switch (type) { - case NT_LIST: - len = 0; - do { - r = compile_length_tree(NCAR(node), reg); - if (r < 0) return r; - len += r; - } while (IS_NOT_NULL(node = NCDR(node))); - r = len; - break; - - case NT_ALT: - { - int n = 0; - len = 0; - do { - r = compile_length_tree(NCAR(node), reg); - if (r < 0) return r; - len += r; - n++; - } while (IS_NOT_NULL(node = NCDR(node))); - r = len; - r += (SIZE_OP_PUSH + SIZE_OP_JUMP) * (n - 1); - } - break; - - case NT_STR: - if (NSTRING_IS_RAW(node)) - r = compile_length_string_raw_node(NSTR(node), reg); - else - r = compile_length_string_node(node, reg); - break; - - case NT_CCLASS: - r = compile_length_cclass_node(NCCLASS(node), reg); - break; - - case NT_CTYPE: - case NT_CANY: - r = SIZE_OPCODE; - break; - - case NT_BREF: - { - BRefNode* br = NBREF(node); - -#ifdef USE_BACKREF_WITH_LEVEL - if (IS_BACKREF_NEST_LEVEL(br)) { - r = SIZE_OPCODE + SIZE_OPTION + SIZE_LENGTH + - SIZE_LENGTH + (SIZE_MEMNUM * br->back_num); - } - else -#endif - if (br->back_num == 1) { - r = ((!IS_IGNORECASE(reg->options) && br->back_static[0] <= 2) - ? SIZE_OPCODE : (SIZE_OPCODE + SIZE_MEMNUM)); - } - else { - r = SIZE_OPCODE + SIZE_LENGTH + (SIZE_MEMNUM * br->back_num); - } - } - break; - -#ifdef USE_SUBEXP_CALL - case NT_CALL: - r = SIZE_OP_CALL; - break; -#endif - - case NT_QTFR: - r = compile_length_quantifier_node(NQTFR(node), reg); - break; - - case NT_ENCLOSE: - r = compile_length_enclose_node(NENCLOSE(node), reg); - break; - - case NT_ANCHOR: - r = compile_length_anchor_node(NANCHOR(node), reg); - break; - - default: - return ONIGERR_TYPE_BUG; - break; - } - - return r; -} - -static int -compile_tree(Node* node, regex_t* reg) -{ - int n, type, len, pos, r = 0; - - type = NTYPE(node); - switch (type) { - case NT_LIST: - do { - r = compile_tree(NCAR(node), reg); - } while (r == 0 && IS_NOT_NULL(node = NCDR(node))); - break; - - case NT_ALT: - { - Node* x = node; - len = 0; - do { - len += compile_length_tree(NCAR(x), reg); - if (NCDR(x) != NULL) { - len += SIZE_OP_PUSH + SIZE_OP_JUMP; - } - } while (IS_NOT_NULL(x = NCDR(x))); - pos = reg->used + len; /* goal position */ - - do { - len = compile_length_tree(NCAR(node), reg); - if (IS_NOT_NULL(NCDR(node))) { - r = add_opcode_rel_addr(reg, OP_PUSH, len + SIZE_OP_JUMP); - if (r) break; - } - r = compile_tree(NCAR(node), reg); - if (r) break; - if (IS_NOT_NULL(NCDR(node))) { - len = pos - (reg->used + SIZE_OP_JUMP); - r = add_opcode_rel_addr(reg, OP_JUMP, len); - if (r) break; - } - } while (IS_NOT_NULL(node = NCDR(node))); - } - break; - - case NT_STR: - if (NSTRING_IS_RAW(node)) - r = compile_string_raw_node(NSTR(node), reg); - else - r = compile_string_node(node, reg); - break; - - case NT_CCLASS: - r = compile_cclass_node(NCCLASS(node), reg); - break; - - case NT_CTYPE: - { - int op; - - switch (NCTYPE(node)->ctype) { - case ONIGENC_CTYPE_WORD: - if (NCTYPE(node)->ascii_range != 0) { - if (NCTYPE(node)->not != 0) op = OP_NOT_ASCII_WORD; - else op = OP_ASCII_WORD; - } - else { - if (NCTYPE(node)->not != 0) op = OP_NOT_WORD; - else op = OP_WORD; - } - break; - default: - return ONIGERR_TYPE_BUG; - break; - } - r = add_opcode(reg, op); - } - break; - - case NT_CANY: - if (IS_MULTILINE(reg->options)) - r = add_opcode(reg, OP_ANYCHAR_ML); - else - r = add_opcode(reg, OP_ANYCHAR); - break; - - case NT_BREF: - { - BRefNode* br = NBREF(node); - -#ifdef USE_BACKREF_WITH_LEVEL - if (IS_BACKREF_NEST_LEVEL(br)) { - r = add_opcode(reg, OP_BACKREF_WITH_LEVEL); - if (r) return r; - r = add_option(reg, (reg->options & ONIG_OPTION_IGNORECASE)); - if (r) return r; - r = add_length(reg, br->nest_level); - if (r) return r; - - goto add_bacref_mems; - } - else -#endif - if (br->back_num == 1) { - n = br->back_static[0]; - if (IS_IGNORECASE(reg->options)) { - r = add_opcode(reg, OP_BACKREFN_IC); - if (r) return r; - r = add_mem_num(reg, n); - } - else { - switch (n) { - case 1: r = add_opcode(reg, OP_BACKREF1); break; - case 2: r = add_opcode(reg, OP_BACKREF2); break; - default: - r = add_opcode(reg, OP_BACKREFN); - if (r) return r; - r = add_mem_num(reg, n); - break; - } - } - } - else { - int i; - int* p; - - if (IS_IGNORECASE(reg->options)) { - r = add_opcode(reg, OP_BACKREF_MULTI_IC); - } - else { - r = add_opcode(reg, OP_BACKREF_MULTI); - } - if (r) return r; - -#ifdef USE_BACKREF_WITH_LEVEL - add_bacref_mems: -#endif - r = add_length(reg, br->back_num); - if (r) return r; - p = BACKREFS_P(br); - for (i = br->back_num - 1; i >= 0; i--) { - r = add_mem_num(reg, p[i]); - if (r) return r; - } - } - } - break; - -#ifdef USE_SUBEXP_CALL - case NT_CALL: - r = compile_call(NCALL(node), reg); - break; -#endif - - case NT_QTFR: - r = compile_quantifier_node(NQTFR(node), reg); - break; - - case NT_ENCLOSE: - r = compile_enclose_node(NENCLOSE(node), reg); - break; - - case NT_ANCHOR: - r = compile_anchor_node(NANCHOR(node), reg); - break; - - default: -#ifdef ONIG_DEBUG - fprintf(stderr, "compile_tree: undefined node type %d\n", NTYPE(node)); -#endif - break; - } - - return r; -} - -#ifdef USE_NAMED_GROUP - -static int -noname_disable_map(Node** plink, GroupNumRemap* map, int* counter) -{ - int r = 0; - Node* node = *plink; - - switch (NTYPE(node)) { - case NT_LIST: - case NT_ALT: - do { - r = noname_disable_map(&(NCAR(node)), map, counter); - } while (r == 0 && IS_NOT_NULL(node = NCDR(node))); - break; - - case NT_QTFR: - { - Node** ptarget = &(NQTFR(node)->target); - Node* old = *ptarget; - r = noname_disable_map(ptarget, map, counter); - if (*ptarget != old && NTYPE(*ptarget) == NT_QTFR) { - onig_reduce_nested_quantifier(node, *ptarget); - } - } - break; - - case NT_ENCLOSE: - { - EncloseNode* en = NENCLOSE(node); - if (en->type == ENCLOSE_MEMORY) { - if (IS_ENCLOSE_NAMED_GROUP(en)) { - (*counter)++; - map[en->regnum].new_val = *counter; - en->regnum = *counter; - } - else if (en->regnum != 0) { - *plink = en->target; - en->target = NULL_NODE; - onig_node_free(node); - r = noname_disable_map(plink, map, counter); - break; - } - } - r = noname_disable_map(&(en->target), map, counter); - } - break; - - case NT_ANCHOR: - if (NANCHOR(node)->target) - r = noname_disable_map(&(NANCHOR(node)->target), map, counter); - break; - - default: - break; - } - - return r; -} - -static int -renumber_node_backref(Node* node, GroupNumRemap* map) -{ - int i, pos, n, old_num; - int *backs; - BRefNode* bn = NBREF(node); - - if (! IS_BACKREF_NAME_REF(bn)) - return ONIGERR_NUMBERED_BACKREF_OR_CALL_NOT_ALLOWED; - - old_num = bn->back_num; - if (IS_NULL(bn->back_dynamic)) - backs = bn->back_static; - else - backs = bn->back_dynamic; - - for (i = 0, pos = 0; i < old_num; i++) { - n = map[backs[i]].new_val; - if (n > 0) { - backs[pos] = n; - pos++; - } - } - - bn->back_num = pos; - return 0; -} - -static int -renumber_by_map(Node* node, GroupNumRemap* map) -{ - int r = 0; - - switch (NTYPE(node)) { - case NT_LIST: - case NT_ALT: - do { - r = renumber_by_map(NCAR(node), map); - } while (r == 0 && IS_NOT_NULL(node = NCDR(node))); - break; - case NT_QTFR: - r = renumber_by_map(NQTFR(node)->target, map); - break; - case NT_ENCLOSE: - { - EncloseNode* en = NENCLOSE(node); - if (en->type == ENCLOSE_CONDITION) - en->regnum = map[en->regnum].new_val; - r = renumber_by_map(en->target, map); - } - break; - - case NT_BREF: - r = renumber_node_backref(node, map); - break; - - case NT_ANCHOR: - if (NANCHOR(node)->target) - r = renumber_by_map(NANCHOR(node)->target, map); - break; - - default: - break; - } - - return r; -} - -static int -numbered_ref_check(Node* node) -{ - int r = 0; - - switch (NTYPE(node)) { - case NT_LIST: - case NT_ALT: - do { - r = numbered_ref_check(NCAR(node)); - } while (r == 0 && IS_NOT_NULL(node = NCDR(node))); - break; - case NT_QTFR: - r = numbered_ref_check(NQTFR(node)->target); - break; - case NT_ENCLOSE: - r = numbered_ref_check(NENCLOSE(node)->target); - break; - - case NT_BREF: - if (! IS_BACKREF_NAME_REF(NBREF(node))) - return ONIGERR_NUMBERED_BACKREF_OR_CALL_NOT_ALLOWED; - break; - - case NT_ANCHOR: - if (NANCHOR(node)->target) - r = numbered_ref_check(NANCHOR(node)->target); - break; - - default: - break; - } - - return r; -} - -static int -disable_noname_group_capture(Node** root, regex_t* reg, ScanEnv* env) -{ - int r, i, pos, counter; - BitStatusType loc; - GroupNumRemap* map; - - map = (GroupNumRemap* )xalloca(sizeof(GroupNumRemap) * (env->num_mem + 1)); - CHECK_NULL_RETURN_MEMERR(map); - for (i = 1; i <= env->num_mem; i++) { - map[i].new_val = 0; - } - counter = 0; - r = noname_disable_map(root, map, &counter); - if (r != 0) return r; - - r = renumber_by_map(*root, map); - if (r != 0) return r; - - for (i = 1, pos = 1; i <= env->num_mem; i++) { - if (map[i].new_val > 0) { - SCANENV_MEM_NODES(env)[pos] = SCANENV_MEM_NODES(env)[i]; - pos++; - } - } - - loc = env->capture_history; - BIT_STATUS_CLEAR(env->capture_history); - for (i = 1; i <= ONIG_MAX_CAPTURE_HISTORY_GROUP; i++) { - if (BIT_STATUS_AT(loc, i)) { - BIT_STATUS_ON_AT_SIMPLE(env->capture_history, map[i].new_val); - } - } - - env->num_mem = env->num_named; - reg->num_mem = env->num_named; - - return onig_renumber_name_table(reg, map); -} -#endif /* USE_NAMED_GROUP */ - -#ifdef USE_SUBEXP_CALL -static int -unset_addr_list_fix(UnsetAddrList* uslist, regex_t* reg) -{ - int i, offset; - EncloseNode* en; - AbsAddrType addr; - - for (i = 0; i < uslist->num; i++) { - en = NENCLOSE(uslist->us[i].target); - if (! IS_ENCLOSE_ADDR_FIXED(en)) return ONIGERR_PARSER_BUG; - addr = en->call_addr; - offset = uslist->us[i].offset; - - BBUF_WRITE(reg, offset, &addr, SIZE_ABSADDR); - } - return 0; -} -#endif - -#ifdef USE_MONOMANIAC_CHECK_CAPTURES_IN_ENDLESS_REPEAT -static int -quantifiers_memory_node_info(Node* node) -{ - int r = 0; - - switch (NTYPE(node)) { - case NT_LIST: - case NT_ALT: - { - int v; - do { - v = quantifiers_memory_node_info(NCAR(node)); - if (v > r) r = v; - } while (v >= 0 && IS_NOT_NULL(node = NCDR(node))); - } - break; - -# ifdef USE_SUBEXP_CALL - case NT_CALL: - if (IS_CALL_RECURSION(NCALL(node))) { - return NQ_TARGET_IS_EMPTY_REC; /* tiny version */ - } - else - r = quantifiers_memory_node_info(NCALL(node)->target); - break; -# endif - - case NT_QTFR: - { - QtfrNode* qn = NQTFR(node); - if (qn->upper != 0) { - r = quantifiers_memory_node_info(qn->target); - } - } - break; - - case NT_ENCLOSE: - { - EncloseNode* en = NENCLOSE(node); - switch (en->type) { - case ENCLOSE_MEMORY: - return NQ_TARGET_IS_EMPTY_MEM; - break; - - case ENCLOSE_OPTION: - case ENCLOSE_STOP_BACKTRACK: - case ENCLOSE_CONDITION: - case ENCLOSE_ABSENT: - r = quantifiers_memory_node_info(en->target); - break; - default: - break; - } - } - break; - - case NT_BREF: - case NT_STR: - case NT_CTYPE: - case NT_CCLASS: - case NT_CANY: - case NT_ANCHOR: - default: - break; - } - - return r; -} -#endif /* USE_MONOMANIAC_CHECK_CAPTURES_IN_ENDLESS_REPEAT */ - -static int -get_min_match_length(Node* node, OnigDistance *min, ScanEnv* env) -{ - OnigDistance tmin; - int r = 0; - - *min = 0; - switch (NTYPE(node)) { - case NT_BREF: - { - int i; - int* backs; - Node** nodes = SCANENV_MEM_NODES(env); - BRefNode* br = NBREF(node); - if (br->state & NST_RECURSION) break; - - backs = BACKREFS_P(br); - if (backs[0] > env->num_mem) return ONIGERR_INVALID_BACKREF; - r = get_min_match_length(nodes[backs[0]], min, env); - if (r != 0) break; - for (i = 1; i < br->back_num; i++) { - if (backs[i] > env->num_mem) return ONIGERR_INVALID_BACKREF; - r = get_min_match_length(nodes[backs[i]], &tmin, env); - if (r != 0) break; - if (*min > tmin) *min = tmin; - } - } - break; - -#ifdef USE_SUBEXP_CALL - case NT_CALL: - if (IS_CALL_RECURSION(NCALL(node))) { - EncloseNode* en = NENCLOSE(NCALL(node)->target); - if (IS_ENCLOSE_MIN_FIXED(en)) - *min = en->min_len; - } - else - r = get_min_match_length(NCALL(node)->target, min, env); - break; -#endif - - case NT_LIST: - do { - r = get_min_match_length(NCAR(node), &tmin, env); - if (r == 0) *min += tmin; - } while (r == 0 && IS_NOT_NULL(node = NCDR(node))); - break; - - case NT_ALT: - { - Node *x, *y; - y = node; - do { - x = NCAR(y); - r = get_min_match_length(x, &tmin, env); - if (r != 0) break; - if (y == node) *min = tmin; - else if (*min > tmin) *min = tmin; - } while (r == 0 && IS_NOT_NULL(y = NCDR(y))); - } - break; - - case NT_STR: - { - StrNode* sn = NSTR(node); - *min = sn->end - sn->s; - } - break; - - case NT_CTYPE: - *min = 1; - break; - - case NT_CCLASS: - case NT_CANY: - *min = 1; - break; - - case NT_QTFR: - { - QtfrNode* qn = NQTFR(node); - - if (qn->lower > 0) { - r = get_min_match_length(qn->target, min, env); - if (r == 0) - *min = distance_multiply(*min, qn->lower); - } - } - break; - - case NT_ENCLOSE: - { - EncloseNode* en = NENCLOSE(node); - switch (en->type) { - case ENCLOSE_MEMORY: - if (IS_ENCLOSE_MIN_FIXED(en)) - *min = en->min_len; - else { - if (IS_ENCLOSE_MARK1(NENCLOSE(node))) - *min = 0; /* recursive */ - else { - SET_ENCLOSE_STATUS(node, NST_MARK1); - r = get_min_match_length(en->target, min, env); - CLEAR_ENCLOSE_STATUS(node, NST_MARK1); - if (r == 0) { - en->min_len = *min; - SET_ENCLOSE_STATUS(node, NST_MIN_FIXED); - } - } - } - break; - - case ENCLOSE_OPTION: - case ENCLOSE_STOP_BACKTRACK: - case ENCLOSE_CONDITION: - r = get_min_match_length(en->target, min, env); - break; - - case ENCLOSE_ABSENT: - break; - } - } - break; - - case NT_ANCHOR: - default: - break; - } - - return r; -} - -static int -get_max_match_length(Node* node, OnigDistance *max, ScanEnv* env) -{ - OnigDistance tmax; - int r = 0; - - *max = 0; - switch (NTYPE(node)) { - case NT_LIST: - do { - r = get_max_match_length(NCAR(node), &tmax, env); - if (r == 0) - *max = distance_add(*max, tmax); - } while (r == 0 && IS_NOT_NULL(node = NCDR(node))); - break; - - case NT_ALT: - do { - r = get_max_match_length(NCAR(node), &tmax, env); - if (r == 0 && *max < tmax) *max = tmax; - } while (r == 0 && IS_NOT_NULL(node = NCDR(node))); - break; - - case NT_STR: - { - StrNode* sn = NSTR(node); - *max = sn->end - sn->s; - } - break; - - case NT_CTYPE: - *max = ONIGENC_MBC_MAXLEN_DIST(env->enc); - break; - - case NT_CCLASS: - case NT_CANY: - *max = ONIGENC_MBC_MAXLEN_DIST(env->enc); - break; - - case NT_BREF: - { - int i; - int* backs; - Node** nodes = SCANENV_MEM_NODES(env); - BRefNode* br = NBREF(node); - if (br->state & NST_RECURSION) { - *max = ONIG_INFINITE_DISTANCE; - break; - } - backs = BACKREFS_P(br); - for (i = 0; i < br->back_num; i++) { - if (backs[i] > env->num_mem) return ONIGERR_INVALID_BACKREF; - r = get_max_match_length(nodes[backs[i]], &tmax, env); - if (r != 0) break; - if (*max < tmax) *max = tmax; - } - } - break; - -#ifdef USE_SUBEXP_CALL - case NT_CALL: - if (! IS_CALL_RECURSION(NCALL(node))) - r = get_max_match_length(NCALL(node)->target, max, env); - else - *max = ONIG_INFINITE_DISTANCE; - break; -#endif - - case NT_QTFR: - { - QtfrNode* qn = NQTFR(node); - - if (qn->upper != 0) { - r = get_max_match_length(qn->target, max, env); - if (r == 0 && *max != 0) { - if (! IS_REPEAT_INFINITE(qn->upper)) - *max = distance_multiply(*max, qn->upper); - else - *max = ONIG_INFINITE_DISTANCE; - } - } - } - break; - - case NT_ENCLOSE: - { - EncloseNode* en = NENCLOSE(node); - switch (en->type) { - case ENCLOSE_MEMORY: - if (IS_ENCLOSE_MAX_FIXED(en)) - *max = en->max_len; - else { - if (IS_ENCLOSE_MARK1(NENCLOSE(node))) - *max = ONIG_INFINITE_DISTANCE; - else { - SET_ENCLOSE_STATUS(node, NST_MARK1); - r = get_max_match_length(en->target, max, env); - CLEAR_ENCLOSE_STATUS(node, NST_MARK1); - if (r == 0) { - en->max_len = *max; - SET_ENCLOSE_STATUS(node, NST_MAX_FIXED); - } - } - } - break; - - case ENCLOSE_OPTION: - case ENCLOSE_STOP_BACKTRACK: - case ENCLOSE_CONDITION: - r = get_max_match_length(en->target, max, env); - break; - - case ENCLOSE_ABSENT: - break; - } - } - break; - - case NT_ANCHOR: - default: - break; - } - - return r; -} - -#define GET_CHAR_LEN_VARLEN -1 -#define GET_CHAR_LEN_TOP_ALT_VARLEN -2 - -/* fixed size pattern node only */ -static int -get_char_length_tree1(Node* node, regex_t* reg, int* len, int level) -{ - int tlen; - int r = 0; - - level++; - *len = 0; - switch (NTYPE(node)) { - case NT_LIST: - do { - r = get_char_length_tree1(NCAR(node), reg, &tlen, level); - if (r == 0) - *len = (int )distance_add(*len, tlen); - } while (r == 0 && IS_NOT_NULL(node = NCDR(node))); - break; - - case NT_ALT: - { - int tlen2; - int varlen = 0; - - r = get_char_length_tree1(NCAR(node), reg, &tlen, level); - while (r == 0 && IS_NOT_NULL(node = NCDR(node))) { - r = get_char_length_tree1(NCAR(node), reg, &tlen2, level); - if (r == 0) { - if (tlen != tlen2) - varlen = 1; - } - } - if (r == 0) { - if (varlen != 0) { - if (level == 1) - r = GET_CHAR_LEN_TOP_ALT_VARLEN; - else - r = GET_CHAR_LEN_VARLEN; - } - else - *len = tlen; - } - } - break; - - case NT_STR: - { - StrNode* sn = NSTR(node); - UChar *s = sn->s; - while (s < sn->end) { - s += enclen(reg->enc, s, sn->end); - (*len)++; - } - } - break; - - case NT_QTFR: - { - QtfrNode* qn = NQTFR(node); - if (qn->lower == qn->upper) { - r = get_char_length_tree1(qn->target, reg, &tlen, level); - if (r == 0) - *len = (int )distance_multiply(tlen, qn->lower); - } - else - r = GET_CHAR_LEN_VARLEN; - } - break; - -#ifdef USE_SUBEXP_CALL - case NT_CALL: - if (! IS_CALL_RECURSION(NCALL(node))) - r = get_char_length_tree1(NCALL(node)->target, reg, len, level); - else - r = GET_CHAR_LEN_VARLEN; - break; -#endif - - case NT_CTYPE: - *len = 1; - break; - - case NT_CCLASS: - case NT_CANY: - *len = 1; - break; - - case NT_ENCLOSE: - { - EncloseNode* en = NENCLOSE(node); - switch (en->type) { - case ENCLOSE_MEMORY: -#ifdef USE_SUBEXP_CALL - if (IS_ENCLOSE_CLEN_FIXED(en)) - *len = en->char_len; - else { - r = get_char_length_tree1(en->target, reg, len, level); - if (r == 0) { - en->char_len = *len; - SET_ENCLOSE_STATUS(node, NST_CLEN_FIXED); - } - } - break; -#endif - case ENCLOSE_OPTION: - case ENCLOSE_STOP_BACKTRACK: - case ENCLOSE_CONDITION: - r = get_char_length_tree1(en->target, reg, len, level); - break; - case ENCLOSE_ABSENT: - default: - break; - } - } - break; - - case NT_ANCHOR: - break; - - default: - r = GET_CHAR_LEN_VARLEN; - break; - } - - return r; -} - -static int -get_char_length_tree(Node* node, regex_t* reg, int* len) -{ - return get_char_length_tree1(node, reg, len, 0); -} - -/* x is not included y ==> 1 : 0 */ -static int -is_not_included(Node* x, Node* y, regex_t* reg) -{ - int i; - OnigDistance len; - OnigCodePoint code; - UChar *p; - int ytype; - - retry: - ytype = NTYPE(y); - switch (NTYPE(x)) { - case NT_CTYPE: - { - switch (ytype) { - case NT_CTYPE: - if (NCTYPE(y)->ctype == NCTYPE(x)->ctype && - NCTYPE(y)->not != NCTYPE(x)->not && - NCTYPE(y)->ascii_range == NCTYPE(x)->ascii_range) - return 1; - else - return 0; - break; - - case NT_CCLASS: - swap: - { - Node* tmp; - tmp = x; x = y; y = tmp; - goto retry; - } - break; - - case NT_STR: - goto swap; - break; - - default: - break; - } - } - break; - - case NT_CCLASS: - { - CClassNode* xc = NCCLASS(x); - switch (ytype) { - case NT_CTYPE: - switch (NCTYPE(y)->ctype) { - case ONIGENC_CTYPE_WORD: - if (NCTYPE(y)->not == 0) { - if (IS_NULL(xc->mbuf) && !IS_NCCLASS_NOT(xc)) { - for (i = 0; i < SINGLE_BYTE_SIZE; i++) { - if (BITSET_AT(xc->bs, i)) { - if (NCTYPE(y)->ascii_range) { - if (IS_CODE_SB_WORD(reg->enc, i)) return 0; - } - else { - if (ONIGENC_IS_CODE_WORD(reg->enc, i)) return 0; - } - } - } - return 1; - } - return 0; - } - else { - if (IS_NOT_NULL(xc->mbuf)) return 0; - for (i = 0; i < SINGLE_BYTE_SIZE; i++) { - int is_word; - if (NCTYPE(y)->ascii_range) - is_word = IS_CODE_SB_WORD(reg->enc, i); - else - is_word = ONIGENC_IS_CODE_WORD(reg->enc, i); - if (! is_word) { - if (!IS_NCCLASS_NOT(xc)) { - if (BITSET_AT(xc->bs, i)) - return 0; - } - else { - if (! BITSET_AT(xc->bs, i)) - return 0; - } - } - } - return 1; - } - break; - - default: - break; - } - break; - - case NT_CCLASS: - { - int v; - CClassNode* yc = NCCLASS(y); - - 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))) { - v = BITSET_AT(yc->bs, i); - if ((v != 0 && !IS_NCCLASS_NOT(yc)) || - (v == 0 && IS_NCCLASS_NOT(yc))) - return 0; - } - } - if ((IS_NULL(xc->mbuf) && !IS_NCCLASS_NOT(xc)) || - (IS_NULL(yc->mbuf) && !IS_NCCLASS_NOT(yc))) - return 1; - return 0; - } - break; - - case NT_STR: - goto swap; - break; - - default: - break; - } - } - break; - - case NT_STR: - { - StrNode* xs = NSTR(x); - if (NSTRING_LEN(x) == 0) - break; - - switch (ytype) { - case NT_CTYPE: - switch (NCTYPE(y)->ctype) { - case ONIGENC_CTYPE_WORD: - if (NCTYPE(y)->ascii_range) { - if (ONIGENC_IS_MBC_ASCII_WORD(reg->enc, xs->s, xs->end)) - return NCTYPE(y)->not; - else - return !(NCTYPE(y)->not); - } - else { - if (ONIGENC_IS_MBC_WORD(reg->enc, xs->s, xs->end)) - return NCTYPE(y)->not; - else - return !(NCTYPE(y)->not); - } - break; - default: - break; - } - break; - - case NT_CCLASS: - { - CClassNode* cc = NCCLASS(y); - - code = ONIGENC_MBC_TO_CODE(reg->enc, xs->s, - xs->s + ONIGENC_MBC_MAXLEN(reg->enc)); - return (onig_is_code_in_cc(reg->enc, code, cc) != 0 ? 0 : 1); - } - break; - - case NT_STR: - { - UChar *q; - StrNode* ys = NSTR(y); - len = NSTRING_LEN(x); - if (len > NSTRING_LEN(y)) len = NSTRING_LEN(y); - if (NSTRING_IS_AMBIG(x) || NSTRING_IS_AMBIG(y)) { - /* tiny version */ - return 0; - } - else { - for (i = 0, p = ys->s, q = xs->s; (OnigDistance )i < len; i++, p++, q++) { - if (*p != *q) return 1; - } - } - } - break; - - default: - break; - } - } - break; - - default: - break; - } - - return 0; -} - -static Node* -get_head_value_node(Node* node, int exact, regex_t* reg) -{ - Node* n = NULL_NODE; - - switch (NTYPE(node)) { - case NT_BREF: - case NT_ALT: - case NT_CANY: -#ifdef USE_SUBEXP_CALL - case NT_CALL: -#endif - break; - - case NT_CTYPE: - case NT_CCLASS: - if (exact == 0) { - n = node; - } - break; - - case NT_LIST: - n = get_head_value_node(NCAR(node), exact, reg); - break; - - case NT_STR: - { - StrNode* sn = NSTR(node); - - if (sn->end <= sn->s) - break; - - if (exact != 0 && - !NSTRING_IS_RAW(node) && IS_IGNORECASE(reg->options)) { - } - else { - n = node; - } - } - break; - - case NT_QTFR: - { - QtfrNode* qn = NQTFR(node); - if (qn->lower > 0) { -#ifdef USE_OP_PUSH_OR_JUMP_EXACT - if (IS_NOT_NULL(qn->head_exact)) - n = qn->head_exact; - else -#endif - n = get_head_value_node(qn->target, exact, reg); - } - } - break; - - case NT_ENCLOSE: - { - EncloseNode* en = NENCLOSE(node); - switch (en->type) { - case ENCLOSE_OPTION: - { - OnigOptionType options = reg->options; - - reg->options = NENCLOSE(node)->option; - n = get_head_value_node(NENCLOSE(node)->target, exact, reg); - reg->options = options; - } - break; - - case ENCLOSE_MEMORY: - case ENCLOSE_STOP_BACKTRACK: - case ENCLOSE_CONDITION: - n = get_head_value_node(en->target, exact, reg); - break; - - case ENCLOSE_ABSENT: - break; - } - } - break; - - case NT_ANCHOR: - if (NANCHOR(node)->type == ANCHOR_PREC_READ) - n = get_head_value_node(NANCHOR(node)->target, exact, reg); - break; - - default: - break; - } - - return n; -} - -static int -check_type_tree(Node* node, int type_mask, int enclose_mask, int anchor_mask) -{ - int type, r = 0; - - type = NTYPE(node); - if ((NTYPE2BIT(type) & type_mask) == 0) - return 1; - - switch (type) { - case NT_LIST: - case NT_ALT: - do { - r = check_type_tree(NCAR(node), type_mask, enclose_mask, - anchor_mask); - } while (r == 0 && IS_NOT_NULL(node = NCDR(node))); - break; - - case NT_QTFR: - r = check_type_tree(NQTFR(node)->target, type_mask, enclose_mask, - anchor_mask); - break; - - case NT_ENCLOSE: - { - EncloseNode* en = NENCLOSE(node); - if ((en->type & enclose_mask) == 0) - return 1; - - r = check_type_tree(en->target, type_mask, enclose_mask, anchor_mask); - } - break; - - case NT_ANCHOR: - type = NANCHOR(node)->type; - if ((type & anchor_mask) == 0) - return 1; - - if (NANCHOR(node)->target) - r = check_type_tree(NANCHOR(node)->target, - type_mask, enclose_mask, anchor_mask); - break; - - default: - break; - } - return r; -} - -#ifdef USE_SUBEXP_CALL - -# define RECURSION_EXIST 1 -# define RECURSION_INFINITE 2 - -static int -subexp_inf_recursive_check(Node* node, ScanEnv* env, int head) -{ - int type; - int r = 0; - - type = NTYPE(node); - switch (type) { - case NT_LIST: - { - Node *x; - OnigDistance min; - int ret; - - x = node; - do { - ret = subexp_inf_recursive_check(NCAR(x), env, head); - if (ret < 0 || ret == RECURSION_INFINITE) return ret; - r |= ret; - if (head) { - ret = get_min_match_length(NCAR(x), &min, env); - if (ret != 0) return ret; - if (min != 0) head = 0; - } - } while (IS_NOT_NULL(x = NCDR(x))); - } - break; - - case NT_ALT: - { - int ret; - r = RECURSION_EXIST; - do { - ret = subexp_inf_recursive_check(NCAR(node), env, head); - if (ret < 0 || ret == RECURSION_INFINITE) return ret; - r &= ret; - } while (IS_NOT_NULL(node = NCDR(node))); - } - break; - - case NT_QTFR: - r = subexp_inf_recursive_check(NQTFR(node)->target, env, head); - if (r == RECURSION_EXIST) { - if (NQTFR(node)->lower == 0) r = 0; - } - break; - - case NT_ANCHOR: - { - AnchorNode* an = NANCHOR(node); - switch (an->type) { - case ANCHOR_PREC_READ: - case ANCHOR_PREC_READ_NOT: - case ANCHOR_LOOK_BEHIND: - case ANCHOR_LOOK_BEHIND_NOT: - r = subexp_inf_recursive_check(an->target, env, head); - break; - } - } - break; - - case NT_CALL: - r = subexp_inf_recursive_check(NCALL(node)->target, env, head); - break; - - case NT_ENCLOSE: - if (IS_ENCLOSE_MARK2(NENCLOSE(node))) - return 0; - else if (IS_ENCLOSE_MARK1(NENCLOSE(node))) - return (head == 0 ? RECURSION_EXIST : RECURSION_INFINITE); - else { - SET_ENCLOSE_STATUS(node, NST_MARK2); - r = subexp_inf_recursive_check(NENCLOSE(node)->target, env, head); - CLEAR_ENCLOSE_STATUS(node, NST_MARK2); - } - break; - - default: - break; - } - - return r; -} - -static int -subexp_inf_recursive_check_trav(Node* node, ScanEnv* env) -{ - int type; - int r = 0; - - type = NTYPE(node); - switch (type) { - case NT_LIST: - case NT_ALT: - do { - r = subexp_inf_recursive_check_trav(NCAR(node), env); - } while (r == 0 && IS_NOT_NULL(node = NCDR(node))); - break; - - case NT_QTFR: - r = subexp_inf_recursive_check_trav(NQTFR(node)->target, env); - break; - - case NT_ANCHOR: - { - AnchorNode* an = NANCHOR(node); - switch (an->type) { - case ANCHOR_PREC_READ: - case ANCHOR_PREC_READ_NOT: - case ANCHOR_LOOK_BEHIND: - case ANCHOR_LOOK_BEHIND_NOT: - r = subexp_inf_recursive_check_trav(an->target, env); - break; - } - } - break; - - case NT_ENCLOSE: - { - EncloseNode* en = NENCLOSE(node); - - if (IS_ENCLOSE_RECURSION(en)) { - SET_ENCLOSE_STATUS(node, NST_MARK1); - r = subexp_inf_recursive_check(en->target, env, 1); - if (r > 0) return ONIGERR_NEVER_ENDING_RECURSION; - CLEAR_ENCLOSE_STATUS(node, NST_MARK1); - } - r = subexp_inf_recursive_check_trav(en->target, env); - } - - break; - - default: - break; - } - - return r; -} - -static int -subexp_recursive_check(Node* node) -{ - int r = 0; - - switch (NTYPE(node)) { - case NT_LIST: - case NT_ALT: - do { - r |= subexp_recursive_check(NCAR(node)); - } while (IS_NOT_NULL(node = NCDR(node))); - break; - - case NT_QTFR: - r = subexp_recursive_check(NQTFR(node)->target); - break; - - case NT_ANCHOR: - { - AnchorNode* an = NANCHOR(node); - switch (an->type) { - case ANCHOR_PREC_READ: - case ANCHOR_PREC_READ_NOT: - case ANCHOR_LOOK_BEHIND: - case ANCHOR_LOOK_BEHIND_NOT: - r = subexp_recursive_check(an->target); - break; - } - } - break; - - case NT_CALL: - r = subexp_recursive_check(NCALL(node)->target); - if (r != 0) SET_CALL_RECURSION(node); - break; - - case NT_ENCLOSE: - if (IS_ENCLOSE_MARK2(NENCLOSE(node))) - return 0; - else if (IS_ENCLOSE_MARK1(NENCLOSE(node))) - return 1; /* recursion */ - else { - SET_ENCLOSE_STATUS(node, NST_MARK2); - r = subexp_recursive_check(NENCLOSE(node)->target); - CLEAR_ENCLOSE_STATUS(node, NST_MARK2); - } - break; - - default: - break; - } - - return r; -} - - -static int -subexp_recursive_check_trav(Node* node, ScanEnv* env) -{ -# define FOUND_CALLED_NODE 1 - - int type; - int r = 0; - - type = NTYPE(node); - switch (type) { - case NT_LIST: - case NT_ALT: - { - int ret; - do { - ret = subexp_recursive_check_trav(NCAR(node), env); - if (ret == FOUND_CALLED_NODE) r = FOUND_CALLED_NODE; - else if (ret < 0) return ret; - } while (IS_NOT_NULL(node = NCDR(node))); - } - break; - - case NT_QTFR: - r = subexp_recursive_check_trav(NQTFR(node)->target, env); - if (NQTFR(node)->upper == 0) { - if (r == FOUND_CALLED_NODE) - NQTFR(node)->is_refered = 1; - } - break; - - case NT_ANCHOR: - { - AnchorNode* an = NANCHOR(node); - switch (an->type) { - case ANCHOR_PREC_READ: - case ANCHOR_PREC_READ_NOT: - case ANCHOR_LOOK_BEHIND: - case ANCHOR_LOOK_BEHIND_NOT: - r = subexp_recursive_check_trav(an->target, env); - break; - } - } - break; - - case NT_ENCLOSE: - { - EncloseNode* en = NENCLOSE(node); - - if (! IS_ENCLOSE_RECURSION(en)) { - if (IS_ENCLOSE_CALLED(en)) { - SET_ENCLOSE_STATUS(node, NST_MARK1); - r = subexp_recursive_check(en->target); - if (r != 0) SET_ENCLOSE_STATUS(node, NST_RECURSION); - CLEAR_ENCLOSE_STATUS(node, NST_MARK1); - } - } - r = subexp_recursive_check_trav(en->target, env); - if (IS_ENCLOSE_CALLED(en)) - r |= FOUND_CALLED_NODE; - } - break; - - default: - break; - } - - return r; -} - -static int -setup_subexp_call(Node* node, ScanEnv* env) -{ - int type; - int r = 0; - - type = NTYPE(node); - switch (type) { - case NT_LIST: - do { - r = setup_subexp_call(NCAR(node), env); - } while (r == 0 && IS_NOT_NULL(node = NCDR(node))); - break; - - case NT_ALT: - do { - r = setup_subexp_call(NCAR(node), env); - } while (r == 0 && IS_NOT_NULL(node = NCDR(node))); - break; - - case NT_QTFR: - r = setup_subexp_call(NQTFR(node)->target, env); - break; - case NT_ENCLOSE: - r = setup_subexp_call(NENCLOSE(node)->target, env); - break; - - case NT_CALL: - { - CallNode* cn = NCALL(node); - Node** nodes = SCANENV_MEM_NODES(env); - - if (cn->group_num != 0) { - int gnum = cn->group_num; - -# ifdef USE_NAMED_GROUP - if (env->num_named > 0 && - IS_SYNTAX_BV(env->syntax, ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP) && - !ONIG_IS_OPTION_ON(env->option, ONIG_OPTION_CAPTURE_GROUP)) { - return ONIGERR_NUMBERED_BACKREF_OR_CALL_NOT_ALLOWED; - } -# endif - if (gnum > env->num_mem) { - onig_scan_env_set_error_string(env, - ONIGERR_UNDEFINED_GROUP_REFERENCE, cn->name, cn->name_end); - return ONIGERR_UNDEFINED_GROUP_REFERENCE; - } - -# ifdef USE_NAMED_GROUP - set_call_attr: -# endif - cn->target = nodes[cn->group_num]; - if (IS_NULL(cn->target)) { - onig_scan_env_set_error_string(env, - ONIGERR_UNDEFINED_NAME_REFERENCE, cn->name, cn->name_end); - return ONIGERR_UNDEFINED_NAME_REFERENCE; - } - SET_ENCLOSE_STATUS(cn->target, NST_CALLED); - BIT_STATUS_ON_AT(env->bt_mem_start, cn->group_num); - cn->unset_addr_list = env->unset_addr_list; - } -# ifdef USE_NAMED_GROUP -# ifdef USE_PERL_SUBEXP_CALL - else if (cn->name == cn->name_end) { - goto set_call_attr; - } -# endif - else { - int *refs; - - int n = onig_name_to_group_numbers(env->reg, cn->name, cn->name_end, - &refs); - if (n <= 0) { - onig_scan_env_set_error_string(env, - ONIGERR_UNDEFINED_NAME_REFERENCE, cn->name, cn->name_end); - return ONIGERR_UNDEFINED_NAME_REFERENCE; - } - else if (n > 1 && - ! IS_SYNTAX_BV(env->syntax, ONIG_SYN_ALLOW_MULTIPLEX_DEFINITION_NAME_CALL)) { - onig_scan_env_set_error_string(env, - ONIGERR_MULTIPLEX_DEFINITION_NAME_CALL, cn->name, cn->name_end); - return ONIGERR_MULTIPLEX_DEFINITION_NAME_CALL; - } - else { - cn->group_num = refs[0]; - goto set_call_attr; - } - } -# endif - } - break; - - case NT_ANCHOR: - { - AnchorNode* an = NANCHOR(node); - - switch (an->type) { - case ANCHOR_PREC_READ: - case ANCHOR_PREC_READ_NOT: - case ANCHOR_LOOK_BEHIND: - case ANCHOR_LOOK_BEHIND_NOT: - r = setup_subexp_call(an->target, env); - break; - } - } - break; - - default: - break; - } - - return r; -} -#endif - -/* divide different length alternatives in look-behind. - (?<=A|B) ==> (?<=A)|(?<=B) - (? (?type; - - head = an->target; - np = NCAR(head); - swap_node(node, head); - NCAR(node) = head; - NANCHOR(head)->target = np; - - np = node; - while ((np = NCDR(np)) != NULL_NODE) { - insert_node = onig_node_new_anchor(anc_type); - CHECK_NULL_RETURN_MEMERR(insert_node); - NANCHOR(insert_node)->target = NCAR(np); - NCAR(np) = insert_node; - } - - if (anc_type == ANCHOR_LOOK_BEHIND_NOT) { - np = node; - do { - SET_NTYPE(np, NT_LIST); /* alt -> list */ - } while ((np = NCDR(np)) != NULL_NODE); - } - return 0; -} - -static int -setup_look_behind(Node* node, regex_t* reg, ScanEnv* env) -{ - int r, len; - AnchorNode* an = NANCHOR(node); - - r = get_char_length_tree(an->target, reg, &len); - if (r == 0) - an->char_len = len; - else if (r == GET_CHAR_LEN_VARLEN) - r = ONIGERR_INVALID_LOOK_BEHIND_PATTERN; - else if (r == GET_CHAR_LEN_TOP_ALT_VARLEN) { - if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_DIFFERENT_LEN_ALT_LOOK_BEHIND)) - r = divide_look_behind_alternatives(node); - else - r = ONIGERR_INVALID_LOOK_BEHIND_PATTERN; - } - - return r; -} - -static int -next_setup(Node* node, Node* next_node, regex_t* reg) -{ - int type; - - retry: - type = NTYPE(node); - if (type == NT_QTFR) { - QtfrNode* qn = NQTFR(node); - if (qn->greedy && IS_REPEAT_INFINITE(qn->upper)) { -#ifdef USE_QTFR_PEEK_NEXT - Node* n = get_head_value_node(next_node, 1, reg); - /* '\0': for UTF-16BE etc... */ - if (IS_NOT_NULL(n) && NSTR(n)->s[0] != '\0') { - qn->next_head_exact = n; - } -#endif - /* automatic possessification a*b ==> (?>a*)b */ - if (qn->lower <= 1) { - int ttype = NTYPE(qn->target); - if (IS_NODE_TYPE_SIMPLE(ttype)) { - Node *x, *y; - x = get_head_value_node(qn->target, 0, reg); - if (IS_NOT_NULL(x)) { - y = get_head_value_node(next_node, 0, reg); - if (IS_NOT_NULL(y) && is_not_included(x, y, reg)) { - Node* en = onig_node_new_enclose(ENCLOSE_STOP_BACKTRACK); - CHECK_NULL_RETURN_MEMERR(en); - SET_ENCLOSE_STATUS(en, NST_STOP_BT_SIMPLE_REPEAT); - swap_node(node, en); - NENCLOSE(node)->target = en; - } - } - } - } - } - } - else if (type == NT_ENCLOSE) { - EncloseNode* en = NENCLOSE(node); - if (en->type == ENCLOSE_MEMORY) { - node = en->target; - goto retry; - } - } - return 0; -} - - -static int -update_string_node_case_fold(regex_t* reg, Node *node) -{ - UChar *p, *end, buf[ONIGENC_MBC_CASE_FOLD_MAXLEN]; - UChar *sbuf, *ebuf, *sp; - int r, i, len; - OnigDistance sbuf_size; - StrNode* sn = NSTR(node); - - end = sn->end; - sbuf_size = (end - sn->s) * 2; - sbuf = (UChar* )xmalloc(sbuf_size); - CHECK_NULL_RETURN_MEMERR(sbuf); - ebuf = sbuf + sbuf_size; - - sp = sbuf; - p = sn->s; - while (p < end) { - len = ONIGENC_MBC_CASE_FOLD(reg->enc, reg->case_fold_flag, &p, end, buf); - for (i = 0; i < len; i++) { - if (sp >= ebuf) { - UChar* p = (UChar* )xrealloc(sbuf, sbuf_size * 2); - if (IS_NULL(p)) { - xfree(sbuf); - return ONIGERR_MEMORY; - } - sbuf = p; - sp = sbuf + sbuf_size; - sbuf_size *= 2; - ebuf = sbuf + sbuf_size; - } - - *sp++ = buf[i]; - } - } - - r = onig_node_str_set(node, sbuf, sp); - - xfree(sbuf); - return r; -} - -static int -expand_case_fold_make_rem_string(Node** rnode, UChar *s, UChar *end, - regex_t* reg) -{ - int r; - Node *node; - - node = onig_node_new_str(s, end); - if (IS_NULL(node)) return ONIGERR_MEMORY; - - r = update_string_node_case_fold(reg, node); - if (r != 0) { - onig_node_free(node); - return r; - } - - NSTRING_SET_AMBIG(node); - NSTRING_SET_DONT_GET_OPT_INFO(node); - *rnode = node; - return 0; -} - -static int -is_case_fold_variable_len(int item_num, OnigCaseFoldCodeItem items[], - int slen) -{ - int i; - - for (i = 0; i < item_num; i++) { - if (items[i].byte_len != slen) { - return 1; - } - if (items[i].code_len != 1) { - return 1; - } - } - return 0; -} - -static int -expand_case_fold_string_alt(int item_num, OnigCaseFoldCodeItem items[], - UChar *p, int slen, UChar *end, - regex_t* reg, Node **rnode) -{ - int r, i, j, len, varlen; - Node *anode, *var_anode, *snode, *xnode, *an; - UChar buf[ONIGENC_CODE_TO_MBC_MAXLEN]; - - *rnode = var_anode = NULL_NODE; - - varlen = 0; - for (i = 0; i < item_num; i++) { - if (items[i].byte_len != slen) { - varlen = 1; - break; - } - } - - if (varlen != 0) { - *rnode = var_anode = onig_node_new_alt(NULL_NODE, NULL_NODE); - if (IS_NULL(var_anode)) return ONIGERR_MEMORY; - - xnode = onig_node_new_list(NULL, NULL); - if (IS_NULL(xnode)) goto mem_err; - NCAR(var_anode) = xnode; - - anode = onig_node_new_alt(NULL_NODE, NULL_NODE); - if (IS_NULL(anode)) goto mem_err; - NCAR(xnode) = anode; - } - else { - *rnode = anode = onig_node_new_alt(NULL_NODE, NULL_NODE); - if (IS_NULL(anode)) return ONIGERR_MEMORY; - } - - snode = onig_node_new_str(p, p + slen); - if (IS_NULL(snode)) goto mem_err; - - NCAR(anode) = snode; - - for (i = 0; i < item_num; i++) { - snode = onig_node_new_str(NULL, NULL); - if (IS_NULL(snode)) goto mem_err; - - for (j = 0; j < items[i].code_len; j++) { - len = ONIGENC_CODE_TO_MBC(reg->enc, items[i].code[j], buf); - if (len < 0) { - r = len; - goto mem_err2; - } - - r = onig_node_str_cat(snode, buf, buf + len); - if (r != 0) goto mem_err2; - } - - an = onig_node_new_alt(NULL_NODE, NULL_NODE); - if (IS_NULL(an)) { - goto mem_err2; - } - - if (items[i].byte_len != slen) { - Node *rem; - UChar *q = p + items[i].byte_len; - - if (q < end) { - r = expand_case_fold_make_rem_string(&rem, q, end, reg); - if (r != 0) { - onig_node_free(an); - goto mem_err2; - } - - xnode = onig_node_list_add(NULL_NODE, snode); - if (IS_NULL(xnode)) { - onig_node_free(an); - onig_node_free(rem); - goto mem_err2; - } - if (IS_NULL(onig_node_list_add(xnode, rem))) { - onig_node_free(an); - onig_node_free(xnode); - onig_node_free(rem); - goto mem_err; - } - - NCAR(an) = xnode; - } - else { - NCAR(an) = snode; - } - - NCDR(var_anode) = an; - var_anode = an; - } - else { - NCAR(an) = snode; - NCDR(anode) = an; - anode = an; - } - } - - return varlen; - - mem_err2: - onig_node_free(snode); - - mem_err: - onig_node_free(*rnode); - - return ONIGERR_MEMORY; -} - -static int -expand_case_fold_string(Node* node, regex_t* reg) -{ -#define THRESHOLD_CASE_FOLD_ALT_FOR_EXPANSION 8 - - int r, n, len, alt_num; - int varlen = 0; - UChar *start, *end, *p; - Node *top_root, *root, *snode, *prev_node; - OnigCaseFoldCodeItem items[ONIGENC_GET_CASE_FOLD_CODES_MAX_NUM]; - StrNode* sn = NSTR(node); - - if (NSTRING_IS_AMBIG(node)) return 0; - - start = sn->s; - end = sn->end; - if (start >= end) return 0; - - r = 0; - top_root = root = prev_node = snode = NULL_NODE; - 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); - if (n < 0) { - r = n; - goto err; - } - - len = enclen(reg->enc, p, end); - - varlen = is_case_fold_variable_len(n, items, len); - if (n == 0 || varlen == 0) { - if (IS_NULL(snode)) { - if (IS_NULL(root) && IS_NOT_NULL(prev_node)) { - top_root = root = onig_node_list_add(NULL_NODE, prev_node); - if (IS_NULL(root)) { - onig_node_free(prev_node); - goto mem_err; - } - } - - prev_node = snode = onig_node_new_str(NULL, NULL); - if (IS_NULL(snode)) goto mem_err; - if (IS_NOT_NULL(root)) { - if (IS_NULL(onig_node_list_add(root, snode))) { - onig_node_free(snode); - goto mem_err; - } - } - } - - r = onig_node_str_cat(snode, p, p + len); - if (r != 0) goto err; - } - else { - alt_num *= (n + 1); - if (alt_num > THRESHOLD_CASE_FOLD_ALT_FOR_EXPANSION) break; - - if (IS_NOT_NULL(snode)) { - r = update_string_node_case_fold(reg, snode); - if (r == 0) { - NSTRING_SET_AMBIG(snode); - } - } - if (IS_NULL(root) && IS_NOT_NULL(prev_node)) { - top_root = root = onig_node_list_add(NULL_NODE, prev_node); - if (IS_NULL(root)) { - onig_node_free(prev_node); - goto mem_err; - } - } - - r = expand_case_fold_string_alt(n, items, p, len, end, reg, &prev_node); - if (r < 0) goto mem_err; - if (r == 1) { - if (IS_NULL(root)) { - top_root = prev_node; - } - else { - if (IS_NULL(onig_node_list_add(root, prev_node))) { - onig_node_free(prev_node); - goto mem_err; - } - } - - root = NCAR(prev_node); - } - else { /* r == 0 */ - if (IS_NOT_NULL(root)) { - if (IS_NULL(onig_node_list_add(root, prev_node))) { - onig_node_free(prev_node); - goto mem_err; - } - } - } - - snode = NULL_NODE; - } - - p += len; - } - if (IS_NOT_NULL(snode)) { - r = update_string_node_case_fold(reg, snode); - if (r == 0) { - NSTRING_SET_AMBIG(snode); - } - } - - if (p < end) { - Node *srem; - - r = expand_case_fold_make_rem_string(&srem, p, end, reg); - if (r != 0) goto mem_err; - - if (IS_NOT_NULL(prev_node) && IS_NULL(root)) { - top_root = root = onig_node_list_add(NULL_NODE, prev_node); - if (IS_NULL(root)) { - onig_node_free(srem); - onig_node_free(prev_node); - goto mem_err; - } - } - - if (IS_NULL(root)) { - prev_node = srem; - } - else { - if (IS_NULL(onig_node_list_add(root, srem))) { - onig_node_free(srem); - goto mem_err; - } - } - } - - /* ending */ - top_root = (IS_NOT_NULL(top_root) ? top_root : prev_node); - swap_node(node, top_root); - onig_node_free(top_root); - return 0; - - mem_err: - r = ONIGERR_MEMORY; - - err: - onig_node_free(top_root); - return r; -} - - -#ifdef USE_COMBINATION_EXPLOSION_CHECK - -# define CEC_THRES_NUM_BIG_REPEAT 512 -# define CEC_INFINITE_NUM 0x7fffffff - -# define CEC_IN_INFINITE_REPEAT (1<<0) -# define CEC_IN_FINITE_REPEAT (1<<1) -# define CEC_CONT_BIG_REPEAT (1<<2) - -static int -setup_comb_exp_check(Node* node, int state, ScanEnv* env) -{ - int type; - int r = state; - - type = NTYPE(node); - switch (type) { - case NT_LIST: - { - Node* prev = NULL_NODE; - do { - r = setup_comb_exp_check(NCAR(node), r, env); - prev = NCAR(node); - } while (r >= 0 && IS_NOT_NULL(node = NCDR(node))); - } - break; - - case NT_ALT: - { - int ret; - do { - ret = setup_comb_exp_check(NCAR(node), state, env); - r |= ret; - } while (ret >= 0 && IS_NOT_NULL(node = NCDR(node))); - } - break; - - case NT_QTFR: - { - int child_state = state; - int add_state = 0; - QtfrNode* qn = NQTFR(node); - Node* target = qn->target; - int var_num; - - if (! IS_REPEAT_INFINITE(qn->upper)) { - if (qn->upper > 1) { - /* {0,1}, {1,1} are allowed */ - child_state |= CEC_IN_FINITE_REPEAT; - - /* check (a*){n,m}, (a+){n,m} => (a*){n,n}, (a+){n,n} */ - if (env->backrefed_mem == 0) { - if (NTYPE(qn->target) == NT_ENCLOSE) { - EncloseNode* en = NENCLOSE(qn->target); - if (en->type == ENCLOSE_MEMORY) { - if (NTYPE(en->target) == NT_QTFR) { - QtfrNode* q = NQTFR(en->target); - if (IS_REPEAT_INFINITE(q->upper) - && q->greedy == qn->greedy) { - qn->upper = (qn->lower == 0 ? 1 : qn->lower); - if (qn->upper == 1) - child_state = state; - } - } - } - } - } - } - } - - if (state & CEC_IN_FINITE_REPEAT) { - qn->comb_exp_check_num = -1; - } - else { - if (IS_REPEAT_INFINITE(qn->upper)) { - var_num = CEC_INFINITE_NUM; - child_state |= CEC_IN_INFINITE_REPEAT; - } - else { - var_num = qn->upper - qn->lower; - } - - if (var_num >= CEC_THRES_NUM_BIG_REPEAT) - add_state |= CEC_CONT_BIG_REPEAT; - - if (((state & CEC_IN_INFINITE_REPEAT) != 0 && var_num != 0) || - ((state & CEC_CONT_BIG_REPEAT) != 0 && - var_num >= CEC_THRES_NUM_BIG_REPEAT)) { - if (qn->comb_exp_check_num == 0) { - env->num_comb_exp_check++; - qn->comb_exp_check_num = env->num_comb_exp_check; - if (env->curr_max_regnum > env->comb_exp_max_regnum) - env->comb_exp_max_regnum = env->curr_max_regnum; - } - } - } - - r = setup_comb_exp_check(target, child_state, env); - r |= add_state; - } - break; - - case NT_ENCLOSE: - { - EncloseNode* en = NENCLOSE(node); - - switch (en->type) { - case ENCLOSE_MEMORY: - { - if (env->curr_max_regnum < en->regnum) - env->curr_max_regnum = en->regnum; - - r = setup_comb_exp_check(en->target, state, env); - } - break; - - default: - r = setup_comb_exp_check(en->target, state, env); - break; - } - } - break; - -# ifdef USE_SUBEXP_CALL - case NT_CALL: - if (IS_CALL_RECURSION(NCALL(node))) - env->has_recursion = 1; - else - r = setup_comb_exp_check(NCALL(node)->target, state, env); - break; -# endif - - default: - break; - } - - return r; -} -#endif - -#define IN_ALT (1<<0) -#define IN_NOT (1<<1) -#define IN_REPEAT (1<<2) -#define IN_VAR_REPEAT (1<<3) -#define IN_CALL (1<<4) -#define IN_RECCALL (1<<5) - -/* setup_tree does the following work. - 1. check empty loop. (set qn->target_empty_info) - 2. expand ignore-case in char class. - 3. set memory status bit flags. (reg->mem_stats) - 4. set qn->head_exact for [push, exact] -> [push_or_jump_exact1, exact]. - 5. find invalid patterns in look-behind. - 6. expand repeated string. - */ -static int -setup_tree(Node* node, regex_t* reg, int state, ScanEnv* env) -{ - int type; - int r = 0; - -restart: - type = NTYPE(node); - switch (type) { - case NT_LIST: - { - Node* prev = NULL_NODE; - do { - r = setup_tree(NCAR(node), reg, state, env); - if (IS_NOT_NULL(prev) && r == 0) { - r = next_setup(prev, NCAR(node), reg); - } - prev = NCAR(node); - } while (r == 0 && IS_NOT_NULL(node = NCDR(node))); - } - break; - - case NT_ALT: - do { - r = setup_tree(NCAR(node), reg, (state | IN_ALT), env); - } while (r == 0 && IS_NOT_NULL(node = NCDR(node))); - break; - - case NT_CCLASS: - break; - - case NT_STR: - if (IS_IGNORECASE(reg->options) && !NSTRING_IS_RAW(node)) { - r = expand_case_fold_string(node, reg); - } - break; - - case NT_CTYPE: - case NT_CANY: - break; - -#ifdef USE_SUBEXP_CALL - case NT_CALL: - break; -#endif - - case NT_BREF: - { - int i; - int* p; - Node** nodes = SCANENV_MEM_NODES(env); - BRefNode* br = NBREF(node); - p = BACKREFS_P(br); - for (i = 0; i < br->back_num; i++) { - if (p[i] > env->num_mem) return ONIGERR_INVALID_BACKREF; - BIT_STATUS_ON_AT(env->backrefed_mem, p[i]); - BIT_STATUS_ON_AT(env->bt_mem_start, p[i]); -#ifdef USE_BACKREF_WITH_LEVEL - if (IS_BACKREF_NEST_LEVEL(br)) { - BIT_STATUS_ON_AT(env->bt_mem_end, p[i]); - } -#endif - SET_ENCLOSE_STATUS(nodes[p[i]], NST_MEM_BACKREFED); - } - } - break; - - case NT_QTFR: - { - OnigDistance d; - QtfrNode* qn = NQTFR(node); - Node* target = qn->target; - - if ((state & IN_REPEAT) != 0) { - qn->state |= NST_IN_REPEAT; - } - - if (IS_REPEAT_INFINITE(qn->upper) || qn->upper >= 1) { - r = get_min_match_length(target, &d, env); - if (r) break; - if (d == 0) { - qn->target_empty_info = NQ_TARGET_IS_EMPTY; -#ifdef USE_MONOMANIAC_CHECK_CAPTURES_IN_ENDLESS_REPEAT - r = quantifiers_memory_node_info(target); - if (r < 0) break; - if (r > 0) { - qn->target_empty_info = r; - } -#endif -#if 0 - r = get_max_match_length(target, &d, env); - if (r == 0 && d == 0) { - /* ()* ==> ()?, ()+ ==> () */ - qn->upper = 1; - if (qn->lower > 1) qn->lower = 1; - if (NTYPE(target) == NT_STR) { - qn->upper = qn->lower = 0; /* /(?:)+/ ==> // */ - } - } -#endif - } - } - - state |= IN_REPEAT; - if (qn->lower != qn->upper) - state |= IN_VAR_REPEAT; - r = setup_tree(target, reg, state, env); - if (r) break; - - /* expand string */ -#define EXPAND_STRING_MAX_LENGTH 100 - if (NTYPE(target) == NT_STR) { - if (qn->lower > 1) { - int i, n = qn->lower; - OnigDistance len = NSTRING_LEN(target); - StrNode* sn = NSTR(target); - Node* np; - - np = onig_node_new_str(sn->s, sn->end); - if (IS_NULL(np)) return ONIGERR_MEMORY; - NSTR(np)->flag = sn->flag; - - for (i = 1; i < n && (i+1) * len <= EXPAND_STRING_MAX_LENGTH; i++) { - r = onig_node_str_cat(np, sn->s, sn->end); - if (r) { - onig_node_free(np); - return r; - } - } - if (i < qn->upper || IS_REPEAT_INFINITE(qn->upper)) { - Node *np1, *np2; - - qn->lower -= i; - if (! IS_REPEAT_INFINITE(qn->upper)) - qn->upper -= i; - - np1 = onig_node_new_list(np, NULL); - if (IS_NULL(np1)) { - onig_node_free(np); - return ONIGERR_MEMORY; - } - swap_node(np1, node); - np2 = onig_node_list_add(node, np1); - if (IS_NULL(np2)) { - onig_node_free(np1); - return ONIGERR_MEMORY; - } - } - else { - swap_node(np, node); - onig_node_free(np); - } - break; /* break case NT_QTFR: */ - } - } - -#ifdef USE_OP_PUSH_OR_JUMP_EXACT - if (qn->greedy && (qn->target_empty_info != 0)) { - if (NTYPE(target) == NT_QTFR) { - QtfrNode* tqn = NQTFR(target); - if (IS_NOT_NULL(tqn->head_exact)) { - qn->head_exact = tqn->head_exact; - tqn->head_exact = NULL; - } - } - else { - qn->head_exact = get_head_value_node(qn->target, 1, reg); - } - } -#endif - } - break; - - case NT_ENCLOSE: - { - EncloseNode* en = NENCLOSE(node); - - switch (en->type) { - case ENCLOSE_OPTION: - { - OnigOptionType options = reg->options; - reg->options = NENCLOSE(node)->option; - r = setup_tree(NENCLOSE(node)->target, reg, state, env); - reg->options = options; - } - break; - - case ENCLOSE_MEMORY: - if ((state & (IN_ALT | IN_NOT | IN_VAR_REPEAT | IN_CALL)) != 0) { - BIT_STATUS_ON_AT(env->bt_mem_start, en->regnum); - /* SET_ENCLOSE_STATUS(node, NST_MEM_IN_ALT_NOT); */ - } - if (IS_ENCLOSE_CALLED(en)) - state |= IN_CALL; - if (IS_ENCLOSE_RECURSION(en)) - state |= IN_RECCALL; - else if ((state & IN_RECCALL) != 0) - SET_CALL_RECURSION(node); - r = setup_tree(en->target, reg, state, env); - break; - - case ENCLOSE_STOP_BACKTRACK: - { - Node* target = en->target; - r = setup_tree(target, reg, state, env); - if (NTYPE(target) == NT_QTFR) { - QtfrNode* tqn = NQTFR(target); - if (IS_REPEAT_INFINITE(tqn->upper) && tqn->lower <= 1 && - tqn->greedy != 0) { /* (?>a*), a*+ etc... */ - int qtype = NTYPE(tqn->target); - if (IS_NODE_TYPE_SIMPLE(qtype)) - SET_ENCLOSE_STATUS(node, NST_STOP_BT_SIMPLE_REPEAT); - } - } - } - break; - - case ENCLOSE_CONDITION: -#ifdef USE_NAMED_GROUP - if (! IS_ENCLOSE_NAME_REF(NENCLOSE(node)) && - env->num_named > 0 && - IS_SYNTAX_BV(env->syntax, ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP) && - !ONIG_IS_OPTION_ON(env->option, ONIG_OPTION_CAPTURE_GROUP)) { - return ONIGERR_NUMBERED_BACKREF_OR_CALL_NOT_ALLOWED; - } -#endif - if (NENCLOSE(node)->regnum > env->num_mem) - return ONIGERR_INVALID_BACKREF; - r = setup_tree(NENCLOSE(node)->target, reg, state, env); - break; - - case ENCLOSE_ABSENT: - r = setup_tree(NENCLOSE(node)->target, reg, state, env); - break; - } - } - break; - - case NT_ANCHOR: - { - AnchorNode* an = NANCHOR(node); - - switch (an->type) { - case ANCHOR_PREC_READ: - r = setup_tree(an->target, reg, state, env); - break; - case ANCHOR_PREC_READ_NOT: - r = setup_tree(an->target, reg, (state | IN_NOT), env); - break; - -/* allowed node types in look-behind */ -#define ALLOWED_TYPE_IN_LB \ - ( BIT_NT_LIST | BIT_NT_ALT | BIT_NT_STR | BIT_NT_CCLASS | BIT_NT_CTYPE | \ - BIT_NT_CANY | BIT_NT_ANCHOR | BIT_NT_ENCLOSE | BIT_NT_QTFR | BIT_NT_CALL ) - -#define ALLOWED_ENCLOSE_IN_LB ( ENCLOSE_MEMORY | ENCLOSE_OPTION ) -#define ALLOWED_ENCLOSE_IN_LB_NOT ENCLOSE_OPTION - -#define ALLOWED_ANCHOR_IN_LB \ -( ANCHOR_LOOK_BEHIND | ANCHOR_LOOK_BEHIND_NOT | ANCHOR_BEGIN_LINE | \ - ANCHOR_END_LINE | ANCHOR_BEGIN_BUF | ANCHOR_BEGIN_POSITION | ANCHOR_KEEP | \ - ANCHOR_WORD_BOUND | ANCHOR_NOT_WORD_BOUND | \ - ANCHOR_WORD_BEGIN | ANCHOR_WORD_END ) -#define ALLOWED_ANCHOR_IN_LB_NOT \ -( ANCHOR_LOOK_BEHIND | ANCHOR_LOOK_BEHIND_NOT | ANCHOR_BEGIN_LINE | \ - ANCHOR_END_LINE | ANCHOR_BEGIN_BUF | ANCHOR_BEGIN_POSITION | ANCHOR_KEEP | \ - ANCHOR_WORD_BOUND | ANCHOR_NOT_WORD_BOUND | \ - ANCHOR_WORD_BEGIN | ANCHOR_WORD_END ) - - case ANCHOR_LOOK_BEHIND: - { - r = check_type_tree(an->target, ALLOWED_TYPE_IN_LB, - ALLOWED_ENCLOSE_IN_LB, ALLOWED_ANCHOR_IN_LB); - if (r < 0) return r; - if (r > 0) return ONIGERR_INVALID_LOOK_BEHIND_PATTERN; - if (NTYPE(node) != NT_ANCHOR) goto restart; - r = setup_tree(an->target, reg, state, env); - if (r != 0) return r; - r = setup_look_behind(node, reg, env); - } - break; - - case ANCHOR_LOOK_BEHIND_NOT: - { - r = check_type_tree(an->target, ALLOWED_TYPE_IN_LB, - ALLOWED_ENCLOSE_IN_LB_NOT, ALLOWED_ANCHOR_IN_LB_NOT); - if (r < 0) return r; - if (r > 0) return ONIGERR_INVALID_LOOK_BEHIND_PATTERN; - if (NTYPE(node) != NT_ANCHOR) goto restart; - r = setup_tree(an->target, reg, (state | IN_NOT), env); - if (r != 0) return r; - r = setup_look_behind(node, reg, env); - } - break; - } - } - break; - - default: - break; - } - - return r; -} - -#ifndef USE_SUNDAY_QUICK_SEARCH -/* set skip map for Boyer-Moore search */ -static int -set_bm_skip(UChar* s, UChar* end, regex_t* reg, - UChar skip[], int** int_skip, int ignore_case) -{ - OnigDistance i, len; - int clen, flen, n, j, k; - UChar *p, buf[ONIGENC_GET_CASE_FOLD_CODES_MAX_NUM][ONIGENC_MBC_CASE_FOLD_MAXLEN]; - OnigCaseFoldCodeItem items[ONIGENC_GET_CASE_FOLD_CODES_MAX_NUM]; - OnigEncoding enc = reg->enc; - - len = end - s; - if (len < ONIG_CHAR_TABLE_SIZE) { - for (i = 0; i < ONIG_CHAR_TABLE_SIZE; i++) skip[i] = (UChar )len; - - n = 0; - for (i = 0; i < len - 1; i += clen) { - p = s + i; - if (ignore_case) - n = ONIGENC_GET_CASE_FOLD_CODES_BY_STR(enc, reg->case_fold_flag, - p, end, items); - clen = enclen(enc, p, end); - if (p + clen > end) - clen = (int )(end - p); - - for (j = 0; j < n; j++) { - if ((items[j].code_len != 1) || (items[j].byte_len != clen)) - return 1; /* different length isn't supported. */ - flen = ONIGENC_CODE_TO_MBC(enc, items[j].code[0], buf[j]); - if (flen != clen) - return 1; /* different length isn't supported. */ - } - for (j = 0; j < clen; j++) { - skip[s[i + j]] = (UChar )(len - 1 - i - j); - for (k = 0; k < n; k++) { - skip[buf[k][j]] = (UChar )(len - 1 - i - j); - } - } - } - } - else { -# if OPT_EXACT_MAXLEN < ONIG_CHAR_TABLE_SIZE - /* This should not happen. */ - return ONIGERR_TYPE_BUG; -# else - if (IS_NULL(*int_skip)) { - *int_skip = (int* )xmalloc(sizeof(int) * ONIG_CHAR_TABLE_SIZE); - if (IS_NULL(*int_skip)) return ONIGERR_MEMORY; - } - for (i = 0; i < ONIG_CHAR_TABLE_SIZE; i++) (*int_skip)[i] = (int )len; - - n = 0; - for (i = 0; i < len - 1; i += clen) { - p = s + i; - if (ignore_case) - n = ONIGENC_GET_CASE_FOLD_CODES_BY_STR(enc, reg->case_fold_flag, - p, end, items); - clen = enclen(enc, p, end); - if (p + clen > end) - clen = (int )(end - p); - - for (j = 0; j < n; j++) { - if ((items[j].code_len != 1) || (items[j].byte_len != clen)) - return 1; /* different length isn't supported. */ - flen = ONIGENC_CODE_TO_MBC(enc, items[j].code[0], buf[j]); - if (flen != clen) - return 1; /* different length isn't supported. */ - } - for (j = 0; j < clen; j++) { - (*int_skip)[s[i + j]] = (int )(len - 1 - i - j); - for (k = 0; k < n; k++) { - (*int_skip)[buf[k][j]] = (int )(len - 1 - i - j); - } - } - } -# endif - } - return 0; -} - -#else /* USE_SUNDAY_QUICK_SEARCH */ - -/* set skip map for Sunday's quick search */ -static int -set_bm_skip(UChar* s, UChar* end, regex_t* reg, - UChar skip[], int** int_skip, int ignore_case) -{ - OnigDistance i, len; - int clen, flen, n, j, k; - UChar *p, buf[ONIGENC_GET_CASE_FOLD_CODES_MAX_NUM][ONIGENC_MBC_CASE_FOLD_MAXLEN]; - OnigCaseFoldCodeItem items[ONIGENC_GET_CASE_FOLD_CODES_MAX_NUM]; - OnigEncoding enc = reg->enc; - - len = end - s; - if (len < ONIG_CHAR_TABLE_SIZE) { - for (i = 0; i < ONIG_CHAR_TABLE_SIZE; i++) skip[i] = (UChar )(len + 1); - - n = 0; - for (i = 0; i < len; i += clen) { - p = s + i; - if (ignore_case) - n = ONIGENC_GET_CASE_FOLD_CODES_BY_STR(enc, reg->case_fold_flag, - p, end, items); - clen = enclen(enc, p, end); - if (p + clen > end) - clen = (int )(end - p); - - for (j = 0; j < n; j++) { - if ((items[j].code_len != 1) || (items[j].byte_len != clen)) - return 1; /* different length isn't supported. */ - flen = ONIGENC_CODE_TO_MBC(enc, items[j].code[0], buf[j]); - if (flen != clen) - return 1; /* different length isn't supported. */ - } - for (j = 0; j < clen; j++) { - skip[s[i + j]] = (UChar )(len - i - j); - for (k = 0; k < n; k++) { - skip[buf[k][j]] = (UChar )(len - i - j); - } - } - } - } - else { -# if OPT_EXACT_MAXLEN < ONIG_CHAR_TABLE_SIZE - /* This should not happen. */ - return ONIGERR_TYPE_BUG; -# else - if (IS_NULL(*int_skip)) { - *int_skip = (int* )xmalloc(sizeof(int) * ONIG_CHAR_TABLE_SIZE); - if (IS_NULL(*int_skip)) return ONIGERR_MEMORY; - } - for (i = 0; i < ONIG_CHAR_TABLE_SIZE; i++) (*int_skip)[i] = (int )(len + 1); - - n = 0; - for (i = 0; i < len; i += clen) { - p = s + i; - if (ignore_case) - n = ONIGENC_GET_CASE_FOLD_CODES_BY_STR(enc, reg->case_fold_flag, - p, end, items); - clen = enclen(enc, p, end); - if (p + clen > end) - clen = (int )(end - p); - - for (j = 0; j < n; j++) { - if ((items[j].code_len != 1) || (items[j].byte_len != clen)) - return 1; /* different length isn't supported. */ - flen = ONIGENC_CODE_TO_MBC(enc, items[j].code[0], buf[j]); - if (flen != clen) - return 1; /* different length isn't supported. */ - } - for (j = 0; j < clen; j++) { - (*int_skip)[s[i + j]] = (int )(len - i - j); - for (k = 0; k < n; k++) { - (*int_skip)[buf[k][j]] = (int )(len - i - j); - } - } - } -# endif - } - return 0; -} -#endif /* USE_SUNDAY_QUICK_SEARCH */ - -typedef struct { - OnigDistance min; /* min byte length */ - OnigDistance max; /* max byte length */ -} MinMaxLen; - -typedef struct { - MinMaxLen mmd; - OnigEncoding enc; - OnigOptionType options; - OnigCaseFoldType case_fold_flag; - ScanEnv* scan_env; -} OptEnv; - -typedef struct { - int left_anchor; - int right_anchor; -} OptAncInfo; - -typedef struct { - MinMaxLen mmd; /* info position */ - OptAncInfo anc; - - int reach_end; - int ignore_case; /* -1: unset, 0: case sensitive, 1: ignore case */ - int len; - UChar s[OPT_EXACT_MAXLEN]; -} OptExactInfo; - -typedef struct { - MinMaxLen mmd; /* info position */ - OptAncInfo anc; - - int value; /* weighted value */ - UChar map[ONIG_CHAR_TABLE_SIZE]; -} OptMapInfo; - -typedef struct { - MinMaxLen len; - - OptAncInfo anc; - OptExactInfo exb; /* boundary */ - OptExactInfo exm; /* middle */ - OptExactInfo expr; /* prec read (?=...) */ - - OptMapInfo map; /* boundary */ -} NodeOptInfo; - - -static int -map_position_value(OnigEncoding enc, int i) -{ - static const short int ByteValTable[] = { - 5, 1, 1, 1, 1, 1, 1, 1, 1, 10, 10, 1, 1, 10, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 12, 4, 7, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, - 5, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 6, 5, 5, 5, - 5, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 1 - }; - - if (i < numberof(ByteValTable)) { - if (i == 0 && ONIGENC_MBC_MINLEN(enc) > 1) - return 20; - else - return (int )ByteValTable[i]; - } - else - return 4; /* Take it easy. */ -} - -static int -distance_value(MinMaxLen* mm) -{ - /* 1000 / (min-max-dist + 1) */ - static const short int dist_vals[] = { - 1000, 500, 333, 250, 200, 167, 143, 125, 111, 100, - 91, 83, 77, 71, 67, 63, 59, 56, 53, 50, - 48, 45, 43, 42, 40, 38, 37, 36, 34, 33, - 32, 31, 30, 29, 29, 28, 27, 26, 26, 25, - 24, 24, 23, 23, 22, 22, 21, 21, 20, 20, - 20, 19, 19, 19, 18, 18, 18, 17, 17, 17, - 16, 16, 16, 16, 15, 15, 15, 15, 14, 14, - 14, 14, 14, 14, 13, 13, 13, 13, 13, 13, - 12, 12, 12, 12, 12, 12, 11, 11, 11, 11, - 11, 11, 11, 11, 11, 10, 10, 10, 10, 10 - }; - - OnigDistance d; - - if (mm->max == ONIG_INFINITE_DISTANCE) return 0; - - d = mm->max - mm->min; - if (d < numberof(dist_vals)) - /* return dist_vals[d] * 16 / (mm->min + 12); */ - return (int )dist_vals[d]; - else - return 1; -} - -static int -comp_distance_value(MinMaxLen* d1, MinMaxLen* d2, int v1, int v2) -{ - if (v2 <= 0) return -1; - if (v1 <= 0) return 1; - - v1 *= distance_value(d1); - v2 *= distance_value(d2); - - if (v2 > v1) return 1; - if (v2 < v1) return -1; - - if (d2->min < d1->min) return 1; - if (d2->min > d1->min) return -1; - return 0; -} - -static int -is_equal_mml(MinMaxLen* a, MinMaxLen* b) -{ - return (a->min == b->min && a->max == b->max) ? 1 : 0; -} - - -static void -set_mml(MinMaxLen* mml, OnigDistance min, OnigDistance max) -{ - mml->min = min; - mml->max = max; -} - -static void -clear_mml(MinMaxLen* mml) -{ - mml->min = mml->max = 0; -} - -static void -copy_mml(MinMaxLen* to, MinMaxLen* from) -{ - to->min = from->min; - to->max = from->max; -} - -static void -add_mml(MinMaxLen* to, MinMaxLen* from) -{ - to->min = distance_add(to->min, from->min); - to->max = distance_add(to->max, from->max); -} - -#if 0 -static void -add_len_mml(MinMaxLen* to, OnigDistance 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) -{ - if (to->min > from->min) to->min = from->min; - if (to->max < from->max) to->max = from->max; -} - -static void -copy_opt_env(OptEnv* to, OptEnv* from) -{ - *to = *from; -} - -static void -clear_opt_anc_info(OptAncInfo* anc) -{ - anc->left_anchor = 0; - anc->right_anchor = 0; -} - -static void -copy_opt_anc_info(OptAncInfo* to, OptAncInfo* from) -{ - *to = *from; -} - -static void -concat_opt_anc_info(OptAncInfo* to, OptAncInfo* left, OptAncInfo* right, - OnigDistance left_len, OnigDistance right_len) -{ - clear_opt_anc_info(to); - - to->left_anchor = left->left_anchor; - if (left_len == 0) { - to->left_anchor |= right->left_anchor; - } - - to->right_anchor = right->right_anchor; - if (right_len == 0) { - to->right_anchor |= left->right_anchor; - } - else { - to->right_anchor |= (left->right_anchor & ANCHOR_PREC_READ_NOT); - } -} - -static int -is_left_anchor(int anc) -{ - 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; - - return 1; -} - -static int -is_set_opt_anc_info(OptAncInfo* to, int anc) -{ - if ((to->left_anchor & anc) != 0) return 1; - - return ((to->right_anchor & anc) != 0 ? 1 : 0); -} - -static void -add_opt_anc_info(OptAncInfo* to, int anc) -{ - if (is_left_anchor(anc)) - to->left_anchor |= anc; - else - to->right_anchor |= anc; -} - -static void -remove_opt_anc_info(OptAncInfo* to, int anc) -{ - if (is_left_anchor(anc)) - to->left_anchor &= ~anc; - else - to->right_anchor &= ~anc; -} - -static void -alt_merge_opt_anc_info(OptAncInfo* to, OptAncInfo* add) -{ - to->left_anchor &= add->left_anchor; - to->right_anchor &= add->right_anchor; -} - -static int -is_full_opt_exact_info(OptExactInfo* ex) -{ - return (ex->len >= OPT_EXACT_MAXLEN ? 1 : 0); -} - -static void -clear_opt_exact_info(OptExactInfo* ex) -{ - clear_mml(&ex->mmd); - clear_opt_anc_info(&ex->anc); - ex->reach_end = 0; - ex->ignore_case = -1; /* unset */ - ex->len = 0; - ex->s[0] = '\0'; -} - -static void -copy_opt_exact_info(OptExactInfo* to, OptExactInfo* from) -{ - *to = *from; -} - -static void -concat_opt_exact_info(OptExactInfo* to, OptExactInfo* add, OnigEncoding enc) -{ - int i, j, len; - UChar *p, *end; - OptAncInfo tanc; - - if (to->ignore_case < 0) - to->ignore_case = add->ignore_case; - else if (to->ignore_case != add->ignore_case) - return ; /* avoid */ - - p = add->s; - end = p + add->len; - for (i = to->len; p < end; ) { - len = enclen(enc, p, end); - if (i + len > OPT_EXACT_MAXLEN) break; - for (j = 0; j < len && p < end; j++) - to->s[i++] = *p++; - } - - to->len = i; - 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; - 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) -{ - int i, j, len; - UChar *p; - - for (i = to->len, p = s; p < end && i < OPT_EXACT_MAXLEN; ) { - len = enclen(enc, p, end); - if (i + len > OPT_EXACT_MAXLEN) break; - for (j = 0; j < len && p < end; j++) - to->s[i++] = *p++; - } - - to->len = i; -} - -static void -alt_merge_opt_exact_info(OptExactInfo* to, OptExactInfo* add, OptEnv* env) -{ - int i, j, len; - - if (add->len == 0 || to->len == 0) { - clear_opt_exact_info(to); - return ; - } - - if (! is_equal_mml(&to->mmd, &add->mmd)) { - clear_opt_exact_info(to); - return ; - } - - for (i = 0; i < to->len && i < add->len; ) { - if (to->s[i] != add->s[i]) break; - len = enclen(env->enc, to->s + i, to->s + to->len); - - for (j = 1; j < len; j++) { - if (to->s[i+j] != add->s[i+j]) break; - } - if (j < len) break; - i += len; - } - - if (! add->reach_end || i < add->len || i < to->len) { - to->reach_end = 0; - } - to->len = i; - if (to->ignore_case < 0) - to->ignore_case = add->ignore_case; - else if (add->ignore_case >= 0) - to->ignore_case |= add->ignore_case; - - alt_merge_opt_anc_info(&to->anc, &add->anc); - if (! to->reach_end) to->anc.right_anchor = 0; -} - -static void -select_opt_exact_info(OnigEncoding enc, OptExactInfo* now, OptExactInfo* alt) -{ - int v1, v2; - - v1 = now->len; - v2 = alt->len; - - if (v2 == 0) { - return ; - } - else if (v1 == 0) { - copy_opt_exact_info(now, alt); - return ; - } - else if (v1 <= 2 && v2 <= 2) { - /* ByteValTable[x] is big value --> low price */ - v2 = map_position_value(enc, now->s[0]); - v1 = map_position_value(enc, alt->s[0]); - - if (now->len > 1) v1 += 5; - if (alt->len > 1) v2 += 5; - } - - if (now->ignore_case <= 0) v1 *= 2; - if (alt->ignore_case <= 0) v2 *= 2; - - if (comp_distance_value(&now->mmd, &alt->mmd, v1, v2) > 0) - copy_opt_exact_info(now, alt); -} - -static void -clear_opt_map_info(OptMapInfo* map) -{ - static const OptMapInfo clean_info = { - {0, 0}, {0, 0}, 0, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - } - }; - - xmemcpy(map, &clean_info, sizeof(OptMapInfo)); -} - -static void -copy_opt_map_info(OptMapInfo* to, OptMapInfo* from) -{ - *to = *from; -} - -static void -add_char_opt_map_info(OptMapInfo* map, UChar c, OnigEncoding enc) -{ - if (map->map[c] == 0) { - map->map[c] = 1; - map->value += map_position_value(enc, c); - } -} - -static int -add_char_amb_opt_map_info(OptMapInfo* 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); - - 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); - if (n < 0) return n; - - 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); - } - - return 0; -} - -static void -select_opt_map_info(OptMapInfo* now, OptMapInfo* alt) -{ - const int z = 1<<15; /* 32768: something big value */ - - int v1, v2; - - if (alt->value == 0) return ; - if (now->value == 0) { - copy_opt_map_info(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); -} - -static int -comp_opt_exact_or_map_info(OptExactInfo* e, OptMapInfo* m) -{ -#define COMP_EM_BASE 20 - int ve, vm; - - if (m->value <= 0) return -1; - - ve = COMP_EM_BASE * e->len * (e->ignore_case > 0 ? 1 : 2); - vm = COMP_EM_BASE * 5 * 2 / m->value; - return comp_distance_value(&e->mmd, &m->mmd, ve, vm); -} - -static void -alt_merge_opt_map_info(OnigEncoding enc, OptMapInfo* to, OptMapInfo* 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); - return ; - } - - alt_merge_mml(&to->mmd, &add->mmd); - - val = 0; - for (i = 0; i < ONIG_CHAR_TABLE_SIZE; i++) { - if (add->map[i]) - to->map[i] = 1; - - if (to->map[i]) - val += map_position_value(enc, i); - } - to->value = val; - - alt_merge_opt_anc_info(&to->anc, &add->anc); -} - -static void -set_bound_node_opt_info(NodeOptInfo* opt, MinMaxLen* mmd) -{ - copy_mml(&(opt->exb.mmd), mmd); - copy_mml(&(opt->expr.mmd), mmd); - copy_mml(&(opt->map.mmd), mmd); -} - -static void -clear_node_opt_info(NodeOptInfo* 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); -} - -static void -copy_node_opt_info(NodeOptInfo* to, NodeOptInfo* from) -{ - *to = *from; -} - -static void -concat_left_node_opt_info(OnigEncoding enc, NodeOptInfo* to, NodeOptInfo* add) -{ - int exb_reach, exm_reach; - OptAncInfo 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); - 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; - } - - exb_reach = to->exb.reach_end; - exm_reach = to->exm.reach_end; - - if (add->len.max != 0) - to->exb.reach_end = to->exm.reach_end = 0; - - if (add->exb.len > 0) { - if (exb_reach) { - concat_opt_exact_info(&to->exb, &add->exb, enc); - clear_opt_exact_info(&add->exb); - } - else if (exm_reach) { - concat_opt_exact_info(&to->exm, &add->exb, enc); - clear_opt_exact_info(&add->exb); - } - } - select_opt_exact_info(enc, &to->exm, &add->exb); - select_opt_exact_info(enc, &to->exm, &add->exm); - - if (to->expr.len > 0) { - if (add->len.max > 0) { - if (to->expr.len > (int )add->len.max) - to->expr.len = (int )add->len.max; - - if (to->expr.mmd.max == 0) - select_opt_exact_info(enc, &to->exb, &to->expr); - else - select_opt_exact_info(enc, &to->exm, &to->expr); - } - } - else if (add->expr.len > 0) { - copy_opt_exact_info(&to->expr, &add->expr); - } - - select_opt_map_info(&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_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_mml(&to->len, &add->len); -} - - -#define MAX_NODE_OPT_INFO_REF_COUNT 5 - -static int -optimize_node_left(Node* node, NodeOptInfo* opt, OptEnv* env) -{ - int type; - int r = 0; - - clear_node_opt_info(opt); - set_bound_node_opt_info(opt, &env->mmd); - - type = NTYPE(node); - switch (type) { - case NT_LIST: - { - OptEnv nenv; - NodeOptInfo nopt; - Node* nd = node; - - copy_opt_env(&nenv, env); - do { - r = optimize_node_left(NCAR(nd), &nopt, &nenv); - if (r == 0) { - add_mml(&nenv.mmd, &nopt.len); - concat_left_node_opt_info(env->enc, opt, &nopt); - } - } while (r == 0 && IS_NOT_NULL(nd = NCDR(nd))); - } - break; - - case NT_ALT: - { - NodeOptInfo nopt; - Node* nd = node; - - do { - r = optimize_node_left(NCAR(nd), &nopt, env); - if (r == 0) { - if (nd == node) copy_node_opt_info(opt, &nopt); - else alt_merge_node_opt_info(opt, &nopt, env); - } - } while ((r == 0) && IS_NOT_NULL(nd = NCDR(nd))); - } - break; - - case NT_STR: - { - StrNode* sn = NSTR(node); - OnigDistance slen = sn->end - sn->s; - int is_raw = NSTRING_IS_RAW(node); - - if (! NSTRING_IS_AMBIG(node)) { - concat_opt_exact_info_str(&opt->exb, sn->s, sn->end, - is_raw, env->enc); - opt->exb.ignore_case = 0; - if (slen > 0) { - add_char_opt_map_info(&opt->map, *(sn->s), env->enc); - } - set_mml(&opt->len, slen, slen); - } - else { - OnigDistance max; - - if (NSTRING_IS_DONT_GET_OPT_INFO(node)) { - int n = onigenc_strlen(env->enc, sn->s, sn->end); - max = ONIGENC_MBC_MAXLEN_DIST(env->enc) * n; - } - else { - concat_opt_exact_info_str(&opt->exb, sn->s, sn->end, - is_raw, env->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); - if (r != 0) break; - } - - max = slen; - } - - set_mml(&opt->len, slen, max); - } - - if ((OnigDistance )opt->exb.len == slen) - opt->exb.reach_end = 1; - } - break; - - case NT_CCLASS: - { - int i, z; - CClassNode* cc = NCCLASS(node); - - /* no need to check ignore case. (set in setup_tree()) */ - - if (IS_NOT_NULL(cc->mbuf) || IS_NCCLASS_NOT(cc)) { - OnigDistance min = ONIGENC_MBC_MINLEN(env->enc); - OnigDistance max = ONIGENC_MBC_MAXLEN_DIST(env->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); - } - } - set_mml(&opt->len, 1, 1); - } - } - break; - - case NT_CTYPE: - { - int i, min, max; - int maxcode; - - max = ONIGENC_MBC_MAXLEN_DIST(env->enc); - - if (max == 1) { - min = 1; - - maxcode = NCTYPE(node)->ascii_range ? 0x80 : SINGLE_BYTE_SIZE; - switch (NCTYPE(node)->ctype) { - case ONIGENC_CTYPE_WORD: - if (NCTYPE(node)->not != 0) { - for (i = 0; i < SINGLE_BYTE_SIZE; i++) { - if (! ONIGENC_IS_CODE_WORD(env->enc, i) || i >= maxcode) { - add_char_opt_map_info(&opt->map, (UChar )i, env->enc); - } - } - } - else { - for (i = 0; i < maxcode; i++) { - if (ONIGENC_IS_CODE_WORD(env->enc, i)) { - add_char_opt_map_info(&opt->map, (UChar )i, env->enc); - } - } - } - break; - } - } - else { - min = ONIGENC_MBC_MINLEN(env->enc); - } - set_mml(&opt->len, min, max); - } - break; - - case NT_CANY: - { - OnigDistance min = ONIGENC_MBC_MINLEN(env->enc); - OnigDistance max = ONIGENC_MBC_MAXLEN_DIST(env->enc); - set_mml(&opt->len, min, max); - } - break; - - case NT_ANCHOR: - switch (NANCHOR(node)->type) { - case ANCHOR_BEGIN_BUF: - case ANCHOR_BEGIN_POSITION: - case ANCHOR_BEGIN_LINE: - case ANCHOR_END_BUF: - case ANCHOR_SEMI_END_BUF: - case ANCHOR_END_LINE: - case ANCHOR_LOOK_BEHIND: /* just for (?<=x).* */ - case ANCHOR_PREC_READ_NOT: /* just for (?!x).* */ - add_opt_anc_info(&opt->anc, NANCHOR(node)->type); - break; - - case ANCHOR_PREC_READ: - { - NodeOptInfo nopt; - - r = optimize_node_left(NANCHOR(node)->target, &nopt, env); - if (r == 0) { - if (nopt.exb.len > 0) - copy_opt_exact_info(&opt->expr, &nopt.exb); - else if (nopt.exm.len > 0) - copy_opt_exact_info(&opt->expr, &nopt.exm); - - opt->expr.reach_end = 0; - - if (nopt.map.value > 0) - copy_opt_map_info(&opt->map, &nopt.map); - } - } - break; - - case ANCHOR_LOOK_BEHIND_NOT: - break; - } - break; - - case NT_BREF: - { - int i; - int* backs; - OnigDistance min, max, tmin, tmax; - Node** nodes = SCANENV_MEM_NODES(env->scan_env); - BRefNode* br = NBREF(node); - - if (br->state & NST_RECURSION) { - set_mml(&opt->len, 0, ONIG_INFINITE_DISTANCE); - break; - } - backs = BACKREFS_P(br); - r = get_min_match_length(nodes[backs[0]], &min, env->scan_env); - if (r != 0) break; - r = get_max_match_length(nodes[backs[0]], &max, env->scan_env); - if (r != 0) break; - for (i = 1; i < br->back_num; i++) { - r = get_min_match_length(nodes[backs[i]], &tmin, env->scan_env); - if (r != 0) break; - r = get_max_match_length(nodes[backs[i]], &tmax, env->scan_env); - if (r != 0) break; - if (min > tmin) min = tmin; - if (max < tmax) max = tmax; - } - if (r == 0) set_mml(&opt->len, min, max); - } - break; - -#ifdef USE_SUBEXP_CALL - case NT_CALL: - if (IS_CALL_RECURSION(NCALL(node))) - set_mml(&opt->len, 0, ONIG_INFINITE_DISTANCE); - else { - OnigOptionType save = env->options; - env->options = NENCLOSE(NCALL(node)->target)->option; - r = optimize_node_left(NCALL(node)->target, opt, env); - env->options = save; - } - break; -#endif - - case NT_QTFR: - { - int i; - OnigDistance min, max; - NodeOptInfo nopt; - QtfrNode* qn = NQTFR(node); - - r = optimize_node_left(qn->target, &nopt, env); - if (r) break; - - if (/*qn->lower == 0 &&*/ IS_REPEAT_INFINITE(qn->upper)) { - if (env->mmd.max == 0 && - NTYPE(qn->target) == NT_CANY && qn->greedy) { - if (IS_MULTILINE(env->options)) - /* implicit anchor: /.*a/ ==> /\A.*a/ */ - add_opt_anc_info(&opt->anc, ANCHOR_ANYCHAR_STAR_ML); - else - add_opt_anc_info(&opt->anc, ANCHOR_ANYCHAR_STAR); - } - } - else { - if (qn->lower > 0) { - 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; - } - } - } - - if (qn->lower != qn->upper) { - opt->exb.reach_end = 0; - opt->exm.reach_end = 0; - } - if (qn->lower > 1) - opt->exm.reach_end = 0; - } - } - - min = distance_multiply(nopt.len.min, qn->lower); - if (IS_REPEAT_INFINITE(qn->upper)) - max = (nopt.len.max > 0 ? ONIG_INFINITE_DISTANCE : 0); - else - max = distance_multiply(nopt.len.max, qn->upper); - - set_mml(&opt->len, min, max); - } - break; - - case NT_ENCLOSE: - { - EncloseNode* en = NENCLOSE(node); - - switch (en->type) { - case ENCLOSE_OPTION: - { - OnigOptionType save = env->options; - - env->options = en->option; - r = optimize_node_left(en->target, opt, env); - env->options = save; - } - break; - - case ENCLOSE_MEMORY: -#ifdef USE_SUBEXP_CALL - en->opt_count++; - if (en->opt_count > MAX_NODE_OPT_INFO_REF_COUNT) { - OnigDistance min, max; - - min = 0; - max = ONIG_INFINITE_DISTANCE; - if (IS_ENCLOSE_MIN_FIXED(en)) min = en->min_len; - if (IS_ENCLOSE_MAX_FIXED(en)) max = en->max_len; - set_mml(&opt->len, min, max); - } - else -#endif - { - r = optimize_node_left(en->target, opt, env); - - if (is_set_opt_anc_info(&opt->anc, ANCHOR_ANYCHAR_STAR_MASK)) { - if (BIT_STATUS_AT(env->scan_env->backrefed_mem, en->regnum)) - remove_opt_anc_info(&opt->anc, ANCHOR_ANYCHAR_STAR_MASK); - } - } - break; - - case ENCLOSE_STOP_BACKTRACK: - case ENCLOSE_CONDITION: - r = optimize_node_left(en->target, opt, env); - break; - - case ENCLOSE_ABSENT: - set_mml(&opt->len, 0, ONIG_INFINITE_DISTANCE); - break; - } - } - break; - - default: -#ifdef ONIG_DEBUG - fprintf(stderr, "optimize_node_left: undefined node type %d\n", - NTYPE(node)); -#endif - r = ONIGERR_TYPE_BUG; - break; - } - - return r; -} - -static int -set_optimize_exact_info(regex_t* reg, OptExactInfo* e) -{ - int r; - int allow_reverse; - - if (e->len == 0) return 0; - - reg->exact = (UChar* )xmalloc(e->len); - CHECK_NULL_RETURN_MEMERR(reg->exact); - xmemcpy(reg->exact, e->s, e->len); - reg->exact_end = reg->exact + e->len; - - allow_reverse = - ONIGENC_IS_ALLOWED_REVERSE_MATCH(reg->enc, reg->exact, reg->exact_end); - - if (e->ignore_case > 0) { - if (e->len >= 3 || (e->len >= 2 && allow_reverse)) { - r = set_bm_skip(reg->exact, reg->exact_end, reg, - reg->map, &(reg->int_map), 1); - if (r == 0) { - reg->optimize = (allow_reverse != 0 - ? ONIG_OPTIMIZE_EXACT_BM_IC : ONIG_OPTIMIZE_EXACT_BM_NOT_REV_IC); - } - else { - reg->optimize = ONIG_OPTIMIZE_EXACT_IC; - } - } - else { - reg->optimize = ONIG_OPTIMIZE_EXACT_IC; - } - } - else { - if (e->len >= 3 || (e->len >= 2 && allow_reverse)) { - r = set_bm_skip(reg->exact, reg->exact_end, reg, - reg->map, &(reg->int_map), 0); - if (r == 0) { - reg->optimize = (allow_reverse != 0 - ? ONIG_OPTIMIZE_EXACT_BM : ONIG_OPTIMIZE_EXACT_BM_NOT_REV); - } - else { - reg->optimize = ONIG_OPTIMIZE_EXACT; - } - } - else { - reg->optimize = ONIG_OPTIMIZE_EXACT; - } - } - - reg->dmin = e->mmd.min; - reg->dmax = e->mmd.max; - - if (reg->dmin != ONIG_INFINITE_DISTANCE) { - reg->threshold_len = (int )(reg->dmin + (reg->exact_end - reg->exact)); - } - - return 0; -} - -static void -set_optimize_map_info(regex_t* reg, OptMapInfo* m) -{ - int i; - - for (i = 0; i < ONIG_CHAR_TABLE_SIZE; i++) - reg->map[i] = m->map[i]; - - reg->optimize = ONIG_OPTIMIZE_MAP; - reg->dmin = m->mmd.min; - reg->dmax = m->mmd.max; - - if (reg->dmin != ONIG_INFINITE_DISTANCE) { - reg->threshold_len = (int )(reg->dmin + 1); - } -} - -static void -set_sub_anchor(regex_t* reg, OptAncInfo* anc) -{ - reg->sub_anchor |= anc->left_anchor & ANCHOR_BEGIN_LINE; - reg->sub_anchor |= anc->right_anchor & ANCHOR_END_LINE; -} - -#if defined(ONIG_DEBUG_COMPILE) || defined(ONIG_DEBUG_MATCH) -static void print_optimize_info(FILE* f, regex_t* reg); -#endif - -static int -set_optimize_info_from_tree(Node* node, regex_t* reg, ScanEnv* scan_env) -{ - - int r; - NodeOptInfo opt; - OptEnv env; - - env.enc = reg->enc; - env.options = reg->options; - env.case_fold_flag = reg->case_fold_flag; - env.scan_env = scan_env; - clear_mml(&env.mmd); - - r = optimize_node_left(node, &opt, &env); - if (r) return r; - - reg->anchor = opt.anc.left_anchor & (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) - reg->anchor &= ~ANCHOR_ANYCHAR_STAR_ML; - - reg->anchor |= opt.anc.right_anchor & (ANCHOR_END_BUF | ANCHOR_SEMI_END_BUF | - ANCHOR_PREC_READ_NOT); - - if (reg->anchor & (ANCHOR_END_BUF | ANCHOR_SEMI_END_BUF)) { - reg->anchor_dmin = opt.len.min; - reg->anchor_dmax = opt.len.max; - } - - 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) { - goto set_map; - } - else { - r = set_optimize_exact_info(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_sub_anchor(reg, &opt.map.anc); - } - else { - reg->sub_anchor |= opt.anc.left_anchor & ANCHOR_BEGIN_LINE; - if (opt.len.max == 0) - reg->sub_anchor |= opt.anc.right_anchor & ANCHOR_END_LINE; - } - -#if defined(ONIG_DEBUG_COMPILE) || defined(ONIG_DEBUG_MATCH) - print_optimize_info(stderr, reg); -#endif - return r; -} - -static void -clear_optimize_info(regex_t* reg) -{ - reg->optimize = ONIG_OPTIMIZE_NONE; - reg->anchor = 0; - reg->anchor_dmin = 0; - reg->anchor_dmax = 0; - reg->sub_anchor = 0; - reg->exact_end = (UChar* )NULL; - reg->threshold_len = 0; - if (IS_NOT_NULL(reg->exact)) { - xfree(reg->exact); - reg->exact = (UChar* )NULL; - } -} - -#ifdef ONIG_DEBUG - -static void print_enc_string(FILE* fp, OnigEncoding enc, - const UChar *s, const UChar *end) -{ - fprintf(fp, "\nPATTERN: /"); - - if (ONIGENC_MBC_MINLEN(enc) > 1) { - const UChar *p; - OnigCodePoint code; - - p = s; - while (p < end) { - code = ONIGENC_MBC_TO_CODE(enc, p, end); - if (code >= 0x80) { - fprintf(fp, " 0x%04x ", (int )code); - } - else { - fputc((int )code, fp); - } - - p += enclen(enc, p, end); - } - } - else { - while (s < end) { - fputc((int )*s, fp); - s++; - } - } - - fprintf(fp, "/ (%s)\n", enc->name); -} -#endif /* ONIG_DEBUG */ - -#if defined(ONIG_DEBUG_COMPILE) || defined(ONIG_DEBUG_MATCH) -static void -print_distance_range(FILE* f, OnigDistance a, OnigDistance b) -{ - if (a == ONIG_INFINITE_DISTANCE) - fputs("inf", f); - else - fprintf(f, "(%"PRIuPTR")", a); - - fputs("-", f); - - if (b == ONIG_INFINITE_DISTANCE) - fputs("inf", f); - else - fprintf(f, "(%"PRIuPTR")", b); -} - -static void -print_anchor(FILE* f, int anchor) -{ - int q = 0; - - fprintf(f, "["); - - if (anchor & ANCHOR_BEGIN_BUF) { - fprintf(f, "begin-buf"); - q = 1; - } - if (anchor & ANCHOR_BEGIN_LINE) { - if (q) fprintf(f, ", "); - q = 1; - fprintf(f, "begin-line"); - } - if (anchor & ANCHOR_BEGIN_POSITION) { - if (q) fprintf(f, ", "); - q = 1; - fprintf(f, "begin-pos"); - } - if (anchor & ANCHOR_END_BUF) { - if (q) fprintf(f, ", "); - q = 1; - fprintf(f, "end-buf"); - } - if (anchor & ANCHOR_SEMI_END_BUF) { - if (q) fprintf(f, ", "); - q = 1; - fprintf(f, "semi-end-buf"); - } - if (anchor & ANCHOR_END_LINE) { - if (q) fprintf(f, ", "); - q = 1; - fprintf(f, "end-line"); - } - if (anchor & ANCHOR_ANYCHAR_STAR) { - if (q) fprintf(f, ", "); - q = 1; - fprintf(f, "anychar-star"); - } - if (anchor & ANCHOR_ANYCHAR_STAR_ML) { - if (q) fprintf(f, ", "); - fprintf(f, "anychar-star-ml"); - } - - fprintf(f, "]"); -} - -static void -print_optimize_info(FILE* f, regex_t* reg) -{ - static const char* on[] = { "NONE", "EXACT", "EXACT_BM", "EXACT_BM_NOT_REV", - "EXACT_IC", "MAP", - "EXACT_BM_IC", "EXACT_BM_NOT_REV_IC" }; - - fprintf(f, "optimize: %s\n", on[reg->optimize]); - fprintf(f, " anchor: "); print_anchor(f, reg->anchor); - if ((reg->anchor & ANCHOR_END_BUF_MASK) != 0) - print_distance_range(f, reg->anchor_dmin, reg->anchor_dmax); - fprintf(f, "\n"); - - if (reg->optimize) { - fprintf(f, " sub anchor: "); print_anchor(f, reg->sub_anchor); - fprintf(f, "\n"); - } - fprintf(f, "\n"); - - if (reg->exact) { - UChar *p; - fprintf(f, "exact: ["); - for (p = reg->exact; p < reg->exact_end; p++) { - fputc(*p, f); - } - fprintf(f, "]: length: %"PRIdPTR"\n", (reg->exact_end - reg->exact)); - } - else if (reg->optimize & ONIG_OPTIMIZE_MAP) { - int c, i, n = 0; - - for (i = 0; i < ONIG_CHAR_TABLE_SIZE; i++) - if (reg->map[i]) n++; - - fprintf(f, "map: n=%d\n", n); - if (n > 0) { - c = 0; - fputc('[', f); - for (i = 0; i < ONIG_CHAR_TABLE_SIZE; i++) { - if (reg->map[i] != 0) { - if (c > 0) fputs(", ", f); - c++; - if (ONIGENC_MBC_MAXLEN(reg->enc) == 1 && - ONIGENC_IS_CODE_PRINT(reg->enc, (OnigCodePoint )i)) - fputc(i, f); - else - fprintf(f, "%d", i); - } - } - fprintf(f, "]\n"); - } - } -} -#endif /* ONIG_DEBUG_COMPILE || ONIG_DEBUG_MATCH */ - - -extern void -onig_free_body(regex_t* reg) -{ - if (IS_NOT_NULL(reg)) { - if (IS_NOT_NULL(reg->p)) xfree(reg->p); - if (IS_NOT_NULL(reg->exact)) xfree(reg->exact); - if (IS_NOT_NULL(reg->int_map)) xfree(reg->int_map); - if (IS_NOT_NULL(reg->int_map_backward)) xfree(reg->int_map_backward); - if (IS_NOT_NULL(reg->repeat_range)) xfree(reg->repeat_range); - if (IS_NOT_NULL(reg->chain)) onig_free(reg->chain); - -#ifdef USE_NAMED_GROUP - onig_names_free(reg); -#endif - } -} - -extern void -onig_free(regex_t* reg) -{ - if (IS_NOT_NULL(reg)) { - onig_free_body(reg); - xfree(reg); - } -} - -#ifdef RUBY -size_t -onig_memsize(const regex_t *reg) -{ - size_t size = sizeof(regex_t); - if (IS_NULL(reg)) return 0; - if (IS_NOT_NULL(reg->p)) size += reg->alloc; - if (IS_NOT_NULL(reg->exact)) size += reg->exact_end - reg->exact; - if (IS_NOT_NULL(reg->int_map)) size += sizeof(int) * ONIG_CHAR_TABLE_SIZE; - if (IS_NOT_NULL(reg->int_map_backward)) size += sizeof(int) * ONIG_CHAR_TABLE_SIZE; - if (IS_NOT_NULL(reg->repeat_range)) size += reg->repeat_range_alloc * sizeof(OnigRepeatRange); - if (IS_NOT_NULL(reg->chain)) size += onig_memsize(reg->chain); - - return size; -} - -size_t -onig_region_memsize(const OnigRegion *regs) -{ - size_t size = sizeof(*regs); - if (IS_NULL(regs)) return 0; - size += regs->allocated * (sizeof(*regs->beg) + sizeof(*regs->end)); - return size; -} -#endif - -#define REGEX_TRANSFER(to,from) do {\ - onig_free_body(to);\ - xmemcpy(to, from, sizeof(regex_t));\ - xfree(from);\ -} while (0) - -#if 0 -extern void -onig_transfer(regex_t* to, regex_t* from) -{ - REGEX_TRANSFER(to, from); -} -#endif - -#ifdef ONIG_DEBUG_COMPILE -static void print_compiled_byte_code_list(FILE* f, regex_t* reg); -#endif -#ifdef ONIG_DEBUG_PARSE_TREE -static void print_tree(FILE* f, Node* node); -#endif - -#ifdef RUBY -extern int -onig_compile(regex_t* reg, const UChar* pattern, const UChar* pattern_end, - OnigErrorInfo* einfo) -{ - return onig_compile_ruby(reg, pattern, pattern_end, einfo, NULL, 0); -} -#endif - -#ifdef RUBY -extern int -onig_compile_ruby(regex_t* reg, const UChar* pattern, const UChar* pattern_end, - OnigErrorInfo* einfo, const char *sourcefile, int sourceline) -#else -extern int -onig_compile(regex_t* reg, const UChar* pattern, const UChar* pattern_end, - OnigErrorInfo* einfo) -#endif -{ -#define COMPILE_INIT_SIZE 20 - - int r; - OnigDistance init_size; - Node* root; - ScanEnv scan_env = {0}; -#ifdef USE_SUBEXP_CALL - UnsetAddrList uslist; -#endif - - if (IS_NOT_NULL(einfo)) einfo->par = (UChar* )NULL; - -#ifdef RUBY - scan_env.sourcefile = sourcefile; - scan_env.sourceline = sourceline; -#endif - -#ifdef ONIG_DEBUG - print_enc_string(stderr, reg->enc, pattern, pattern_end); -#endif - - if (reg->alloc == 0) { - init_size = (pattern_end - pattern) * 2; - if (init_size <= 0) init_size = COMPILE_INIT_SIZE; - r = BBUF_INIT(reg, init_size); - if (r != 0) goto end; - } - else - reg->used = 0; - - reg->num_mem = 0; - reg->num_repeat = 0; - reg->num_null_check = 0; - reg->repeat_range_alloc = 0; - reg->repeat_range = (OnigRepeatRange* )NULL; -#ifdef USE_COMBINATION_EXPLOSION_CHECK - reg->num_comb_exp_check = 0; -#endif - - r = onig_parse_make_tree(&root, pattern, pattern_end, reg, &scan_env); - if (r != 0) goto err; - -#ifdef ONIG_DEBUG_PARSE_TREE -# if 0 - fprintf(stderr, "ORIGINAL PARSE TREE:\n"); - print_tree(stderr, root); -# endif -#endif - -#ifdef USE_NAMED_GROUP - /* mixed use named group and no-named group */ - if (scan_env.num_named > 0 && - IS_SYNTAX_BV(scan_env.syntax, ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP) && - !ONIG_IS_OPTION_ON(reg->options, ONIG_OPTION_CAPTURE_GROUP)) { - if (scan_env.num_named != scan_env.num_mem) - r = disable_noname_group_capture(&root, reg, &scan_env); - else - r = numbered_ref_check(root); - - if (r != 0) goto err; - } -#endif - -#ifdef USE_SUBEXP_CALL - if (scan_env.num_call > 0) { - r = unset_addr_list_init(&uslist, scan_env.num_call); - if (r != 0) goto err; - scan_env.unset_addr_list = &uslist; - r = setup_subexp_call(root, &scan_env); - if (r != 0) goto err_unset; - r = subexp_recursive_check_trav(root, &scan_env); - if (r < 0) goto err_unset; - r = subexp_inf_recursive_check_trav(root, &scan_env); - if (r != 0) goto err_unset; - - reg->num_call = scan_env.num_call; - } - else - reg->num_call = 0; -#endif - - r = setup_tree(root, reg, 0, &scan_env); - if (r != 0) goto err_unset; - -#ifdef ONIG_DEBUG_PARSE_TREE - print_tree(stderr, root); -#endif - - reg->capture_history = scan_env.capture_history; - reg->bt_mem_start = scan_env.bt_mem_start; - reg->bt_mem_start |= reg->capture_history; - if (IS_FIND_CONDITION(reg->options)) - BIT_STATUS_ON_ALL(reg->bt_mem_end); - else { - reg->bt_mem_end = scan_env.bt_mem_end; - reg->bt_mem_end |= reg->capture_history; - } - -#ifdef USE_COMBINATION_EXPLOSION_CHECK - if (scan_env.backrefed_mem == 0 -# ifdef USE_SUBEXP_CALL - || scan_env.num_call == 0 -# endif - ) { - setup_comb_exp_check(root, 0, &scan_env); -# ifdef USE_SUBEXP_CALL - if (scan_env.has_recursion != 0) { - scan_env.num_comb_exp_check = 0; - } - else -# endif - if (scan_env.comb_exp_max_regnum > 0) { - int i; - for (i = 1; i <= scan_env.comb_exp_max_regnum; i++) { - if (BIT_STATUS_AT(scan_env.backrefed_mem, i) != 0) { - scan_env.num_comb_exp_check = 0; - break; - } - } - } - } - - reg->num_comb_exp_check = scan_env.num_comb_exp_check; -#endif - - clear_optimize_info(reg); -#ifndef ONIG_DONT_OPTIMIZE - r = set_optimize_info_from_tree(root, reg, &scan_env); - if (r != 0) goto err_unset; -#endif - - if (IS_NOT_NULL(scan_env.mem_nodes_dynamic)) { - xfree(scan_env.mem_nodes_dynamic); - scan_env.mem_nodes_dynamic = (Node** )NULL; - } - - r = compile_tree(root, reg); - if (r == 0) { - r = add_opcode(reg, OP_END); -#ifdef USE_SUBEXP_CALL - if (scan_env.num_call > 0) { - r = unset_addr_list_fix(&uslist, reg); - unset_addr_list_end(&uslist); - if (r) goto err; - } -#endif - - if ((reg->num_repeat != 0) || (reg->bt_mem_end != 0)) - reg->stack_pop_level = STACK_POP_LEVEL_ALL; - else { - if (reg->bt_mem_start != 0) - reg->stack_pop_level = STACK_POP_LEVEL_MEM_START; - else - reg->stack_pop_level = STACK_POP_LEVEL_FREE; - } - } -#ifdef USE_SUBEXP_CALL - else if (scan_env.num_call > 0) { - unset_addr_list_end(&uslist); - } -#endif - onig_node_free(root); - -#ifdef ONIG_DEBUG_COMPILE -# ifdef USE_NAMED_GROUP - onig_print_names(stderr, reg); -# endif - print_compiled_byte_code_list(stderr, reg); -#endif - - end: - return r; - - err_unset: -#ifdef USE_SUBEXP_CALL - if (scan_env.num_call > 0) { - unset_addr_list_end(&uslist); - } -#endif - err: - if (IS_NOT_NULL(scan_env.error)) { - if (IS_NOT_NULL(einfo)) { - einfo->enc = scan_env.enc; - einfo->par = scan_env.error; - einfo->par_end = scan_env.error_end; - } - } - - onig_node_free(root); - if (IS_NOT_NULL(scan_env.mem_nodes_dynamic)) - xfree(scan_env.mem_nodes_dynamic); - return r; -} - -static int onig_inited = 0; - -extern int -onig_reg_init(regex_t* reg, OnigOptionType option, - OnigCaseFoldType case_fold_flag, - OnigEncoding enc, const OnigSyntaxType* syntax) -{ - if (! onig_inited) - onig_init(); - - if (IS_NULL(reg)) - return ONIGERR_INVALID_ARGUMENT; - - if (ONIGENC_IS_UNDEF(enc)) - return ONIGERR_DEFAULT_ENCODING_IS_NOT_SET; - - if ((option & (ONIG_OPTION_DONT_CAPTURE_GROUP|ONIG_OPTION_CAPTURE_GROUP)) - == (ONIG_OPTION_DONT_CAPTURE_GROUP|ONIG_OPTION_CAPTURE_GROUP)) { - return ONIGERR_INVALID_COMBINATION_OF_OPTIONS; - } - - if ((option & ONIG_OPTION_NEGATE_SINGLELINE) != 0) { - option |= syntax->options; - option &= ~ONIG_OPTION_SINGLELINE; - } - else - option |= syntax->options; - - (reg)->enc = enc; - (reg)->options = option; - (reg)->syntax = syntax; - (reg)->optimize = 0; - (reg)->exact = (UChar* )NULL; - (reg)->int_map = (int* )NULL; - (reg)->int_map_backward = (int* )NULL; - (reg)->chain = (regex_t* )NULL; - - (reg)->p = (UChar* )NULL; - (reg)->alloc = 0; - (reg)->used = 0; - (reg)->name_table = (void* )NULL; - - (reg)->case_fold_flag = case_fold_flag; - return 0; -} - -extern int -onig_new_without_alloc(regex_t* reg, const UChar* pattern, - const UChar* pattern_end, OnigOptionType option, OnigEncoding enc, - const OnigSyntaxType* syntax, OnigErrorInfo* einfo) -{ - int r; - - r = onig_reg_init(reg, option, ONIGENC_CASE_FOLD_DEFAULT, enc, syntax); - if (r) return r; - - r = onig_compile(reg, pattern, pattern_end, einfo); - return r; -} - -extern int -onig_new(regex_t** reg, const UChar* pattern, const UChar* pattern_end, - OnigOptionType option, OnigEncoding enc, const OnigSyntaxType* syntax, - OnigErrorInfo* einfo) -{ - int r; - - *reg = (regex_t* )xmalloc(sizeof(regex_t)); - if (IS_NULL(*reg)) return ONIGERR_MEMORY; - - r = onig_reg_init(*reg, option, ONIGENC_CASE_FOLD_DEFAULT, enc, syntax); - if (r) goto err; - - r = onig_compile(*reg, pattern, pattern_end, einfo); - if (r) { - err: - onig_free(*reg); - *reg = NULL; - } - return r; -} - -extern int -onig_initialize(OnigEncoding encodings[] ARG_UNUSED, int n ARG_UNUSED) -{ - return onig_init(); -} - -extern int -onig_init(void) -{ - if (onig_inited != 0) - return 0; - - onig_inited = 1; - -#if defined(ONIG_DEBUG_MEMLEAK) && defined(_MSC_VER) - _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); -#endif - - onigenc_init(); - /* onigenc_set_default_caseconv_table((UChar* )0); */ - -#ifdef ONIG_DEBUG_STATISTICS - onig_statistics_init(); -#endif - - return 0; -} - - -static OnigEndCallListItemType* EndCallTop; - -extern void onig_add_end_call(void (*func)(void)) -{ - OnigEndCallListItemType* item; - - item = (OnigEndCallListItemType* )xmalloc(sizeof(*item)); - if (item == 0) return ; - - item->next = EndCallTop; - item->func = func; - - EndCallTop = item; -} - -static void -exec_end_call_list(void) -{ - OnigEndCallListItemType* prev; - void (*func)(void); - - while (EndCallTop != 0) { - func = EndCallTop->func; - (*func)(); - - prev = EndCallTop; - EndCallTop = EndCallTop->next; - xfree(prev); - } -} - -extern int -onig_end(void) -{ - exec_end_call_list(); - -#ifdef ONIG_DEBUG_STATISTICS - onig_print_statistics(stderr); -#endif - -#if defined(ONIG_DEBUG_MEMLEAK) && defined(_MSC_VER) - _CrtDumpMemoryLeaks(); -#endif - - onig_inited = 0; - - return 0; -} - -extern int -onig_is_in_code_range(const UChar* p, OnigCodePoint code) -{ - OnigCodePoint n, *data; - OnigCodePoint low, high, x; - - GET_CODE_POINT(n, p); - data = (OnigCodePoint* )p; - data++; - - for (low = 0, high = n; low < high; ) { - x = (low + high) >> 1; - if (code > data[x * 2 + 1]) - low = x + 1; - else - high = x; - } - - return ((low < n && code >= data[low * 2]) ? 1 : 0); -} - -extern int -onig_is_code_in_cc_len(int elen, OnigCodePoint code, CClassNode* cc) -{ - int found; - - if (elen > 1 || (code >= SINGLE_BYTE_SIZE)) { - if (IS_NULL(cc->mbuf)) { - found = 0; - } - else { - found = (onig_is_in_code_range(cc->mbuf->p, code) != 0 ? 1 : 0); - } - } - else { - found = (BITSET_AT(cc->bs, code) == 0 ? 0 : 1); - } - - if (IS_NCCLASS_NOT(cc)) - return !found; - else - return found; -} - -extern int -onig_is_code_in_cc(OnigEncoding enc, OnigCodePoint code, CClassNode* cc) -{ - int len; - - if (ONIGENC_MBC_MINLEN(enc) > 1) { - len = 2; - } - else { - len = ONIGENC_CODE_TO_MBCLEN(enc, code); - } - return onig_is_code_in_cc_len(len, code, cc); -} - - -#ifdef ONIG_DEBUG - -/* arguments type */ -# define ARG_SPECIAL -1 -# define ARG_NON 0 -# define ARG_RELADDR 1 -# define ARG_ABSADDR 2 -# define ARG_LENGTH 3 -# define ARG_MEMNUM 4 -# define ARG_OPTION 5 -# define ARG_STATE_CHECK 6 - -OnigOpInfoType OnigOpInfo[] = { - { OP_FINISH, "finish", ARG_NON }, - { OP_END, "end", ARG_NON }, - { OP_EXACT1, "exact1", ARG_SPECIAL }, - { OP_EXACT2, "exact2", ARG_SPECIAL }, - { OP_EXACT3, "exact3", ARG_SPECIAL }, - { OP_EXACT4, "exact4", ARG_SPECIAL }, - { OP_EXACT5, "exact5", ARG_SPECIAL }, - { OP_EXACTN, "exactn", ARG_SPECIAL }, - { OP_EXACTMB2N1, "exactmb2-n1", ARG_SPECIAL }, - { OP_EXACTMB2N2, "exactmb2-n2", ARG_SPECIAL }, - { OP_EXACTMB2N3, "exactmb2-n3", ARG_SPECIAL }, - { OP_EXACTMB2N, "exactmb2-n", ARG_SPECIAL }, - { OP_EXACTMB3N, "exactmb3n" , ARG_SPECIAL }, - { OP_EXACTMBN, "exactmbn", ARG_SPECIAL }, - { OP_EXACT1_IC, "exact1-ic", ARG_SPECIAL }, - { OP_EXACTN_IC, "exactn-ic", ARG_SPECIAL }, - { OP_CCLASS, "cclass", ARG_SPECIAL }, - { OP_CCLASS_MB, "cclass-mb", ARG_SPECIAL }, - { OP_CCLASS_MIX, "cclass-mix", ARG_SPECIAL }, - { OP_CCLASS_NOT, "cclass-not", ARG_SPECIAL }, - { OP_CCLASS_MB_NOT, "cclass-mb-not", ARG_SPECIAL }, - { OP_CCLASS_MIX_NOT, "cclass-mix-not", ARG_SPECIAL }, - { OP_ANYCHAR, "anychar", ARG_NON }, - { OP_ANYCHAR_ML, "anychar-ml", ARG_NON }, - { OP_ANYCHAR_STAR, "anychar*", ARG_NON }, - { OP_ANYCHAR_ML_STAR, "anychar-ml*", ARG_NON }, - { OP_ANYCHAR_STAR_PEEK_NEXT, "anychar*-peek-next", ARG_SPECIAL }, - { OP_ANYCHAR_ML_STAR_PEEK_NEXT, "anychar-ml*-peek-next", ARG_SPECIAL }, - { OP_WORD, "word", ARG_NON }, - { OP_NOT_WORD, "not-word", ARG_NON }, - { OP_WORD_BOUND, "word-bound", ARG_NON }, - { OP_NOT_WORD_BOUND, "not-word-bound", ARG_NON }, - { OP_WORD_BEGIN, "word-begin", ARG_NON }, - { OP_WORD_END, "word-end", ARG_NON }, - { OP_ASCII_WORD, "ascii-word", ARG_NON }, - { OP_NOT_ASCII_WORD, "not-ascii-word", ARG_NON }, - { OP_ASCII_WORD_BOUND, "ascii-word-bound", ARG_NON }, - { OP_NOT_ASCII_WORD_BOUND,"not-ascii-word-bound", ARG_NON }, - { OP_ASCII_WORD_BEGIN, "ascii-word-begin", ARG_NON }, - { OP_ASCII_WORD_END, "ascii-word-end", ARG_NON }, - { OP_BEGIN_BUF, "begin-buf", ARG_NON }, - { OP_END_BUF, "end-buf", ARG_NON }, - { OP_BEGIN_LINE, "begin-line", ARG_NON }, - { OP_END_LINE, "end-line", ARG_NON }, - { OP_SEMI_END_BUF, "semi-end-buf", ARG_NON }, - { OP_BEGIN_POSITION, "begin-position", ARG_NON }, - { OP_BACKREF1, "backref1", ARG_NON }, - { OP_BACKREF2, "backref2", ARG_NON }, - { OP_BACKREFN, "backrefn", ARG_MEMNUM }, - { OP_BACKREFN_IC, "backrefn-ic", ARG_SPECIAL }, - { OP_BACKREF_MULTI, "backref_multi", ARG_SPECIAL }, - { OP_BACKREF_MULTI_IC, "backref_multi-ic", ARG_SPECIAL }, - { OP_BACKREF_WITH_LEVEL, "backref_at_level", ARG_SPECIAL }, - { OP_MEMORY_START_PUSH, "mem-start-push", ARG_MEMNUM }, - { OP_MEMORY_START, "mem-start", ARG_MEMNUM }, - { OP_MEMORY_END_PUSH, "mem-end-push", ARG_MEMNUM }, - { OP_MEMORY_END_PUSH_REC, "mem-end-push-rec", ARG_MEMNUM }, - { OP_MEMORY_END, "mem-end", ARG_MEMNUM }, - { OP_MEMORY_END_REC, "mem-end-rec", ARG_MEMNUM }, - { OP_SET_OPTION_PUSH, "set-option-push", ARG_OPTION }, - { OP_SET_OPTION, "set-option", ARG_OPTION }, - { OP_KEEP, "keep", ARG_NON }, - { OP_FAIL, "fail", ARG_NON }, - { OP_JUMP, "jump", ARG_RELADDR }, - { OP_PUSH, "push", ARG_RELADDR }, - { OP_POP, "pop", ARG_NON }, - { OP_PUSH_OR_JUMP_EXACT1, "push-or-jump-e1", ARG_SPECIAL }, - { OP_PUSH_IF_PEEK_NEXT, "push-if-peek-next", ARG_SPECIAL }, - { OP_REPEAT, "repeat", ARG_SPECIAL }, - { OP_REPEAT_NG, "repeat-ng", ARG_SPECIAL }, - { OP_REPEAT_INC, "repeat-inc", ARG_MEMNUM }, - { OP_REPEAT_INC_NG, "repeat-inc-ng", ARG_MEMNUM }, - { OP_REPEAT_INC_SG, "repeat-inc-sg", ARG_MEMNUM }, - { OP_REPEAT_INC_NG_SG, "repeat-inc-ng-sg", ARG_MEMNUM }, - { OP_NULL_CHECK_START, "null-check-start", ARG_MEMNUM }, - { OP_NULL_CHECK_END, "null-check-end", ARG_MEMNUM }, - { OP_NULL_CHECK_END_MEMST,"null-check-end-memst", ARG_MEMNUM }, - { OP_NULL_CHECK_END_MEMST_PUSH,"null-check-end-memst-push", ARG_MEMNUM }, - { OP_PUSH_POS, "push-pos", ARG_NON }, - { OP_POP_POS, "pop-pos", ARG_NON }, - { OP_PUSH_POS_NOT, "push-pos-not", ARG_RELADDR }, - { OP_FAIL_POS, "fail-pos", ARG_NON }, - { OP_PUSH_STOP_BT, "push-stop-bt", ARG_NON }, - { OP_POP_STOP_BT, "pop-stop-bt", 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_PUSH_ABSENT_POS, "push-absent-pos", ARG_NON }, - { OP_ABSENT, "absent", ARG_RELADDR }, - { OP_ABSENT_END, "absent-end", ARG_NON }, - { OP_CALL, "call", ARG_ABSADDR }, - { OP_RETURN, "return", ARG_NON }, - { OP_CONDITION, "condition", ARG_SPECIAL }, - { OP_STATE_CHECK_PUSH, "state-check-push", ARG_SPECIAL }, - { OP_STATE_CHECK_PUSH_OR_JUMP, "state-check-push-or-jump", ARG_SPECIAL }, - { OP_STATE_CHECK, "state-check", ARG_STATE_CHECK }, - { OP_STATE_CHECK_ANYCHAR_STAR, "state-check-anychar*", ARG_STATE_CHECK }, - { OP_STATE_CHECK_ANYCHAR_ML_STAR, - "state-check-anychar-ml*", ARG_STATE_CHECK }, - { -1, "", ARG_NON } -}; - -static const char* -op2name(int opcode) -{ - int i; - - for (i = 0; OnigOpInfo[i].opcode >= 0; i++) { - if (opcode == OnigOpInfo[i].opcode) - return OnigOpInfo[i].name; - } - return ""; -} - -static int -op2arg_type(int opcode) -{ - int i; - - for (i = 0; OnigOpInfo[i].opcode >= 0; i++) { - if (opcode == OnigOpInfo[i].opcode) - return OnigOpInfo[i].arg_type; - } - return ARG_SPECIAL; -} - -# ifdef ONIG_DEBUG_PARSE_TREE -static void -Indent(FILE* f, int indent) -{ - int i; - for (i = 0; i < indent; i++) putc(' ', f); -} -# endif /* ONIG_DEBUG_PARSE_TREE */ - -static void -p_string(FILE* f, ptrdiff_t len, UChar* s) -{ - fputs(":", f); - while (len-- > 0) { fputc(*s++, f); } -} - -static void -p_len_string(FILE* f, LengthType len, int mb_len, UChar* s) -{ - int x = len * mb_len; - - fprintf(f, ":%d:", len); - while (x-- > 0) { fputc(*s++, f); } -} - -extern void -onig_print_compiled_byte_code(FILE* f, UChar* bp, UChar* bpend, UChar** nextp, - OnigEncoding enc) -{ - int i, n, arg_type; - RelAddrType addr; - LengthType len; - MemNumType mem; - StateCheckNumType scn; - OnigCodePoint code; - UChar *q; - - fprintf(f, "[%s", op2name(*bp)); - arg_type = op2arg_type(*bp); - if (arg_type != ARG_SPECIAL) { - bp++; - switch (arg_type) { - case ARG_NON: - break; - case ARG_RELADDR: - GET_RELADDR_INC(addr, bp); - fprintf(f, ":(%s%d)", (addr >= 0) ? "+" : "", addr); - break; - case ARG_ABSADDR: - GET_ABSADDR_INC(addr, bp); - fprintf(f, ":(%d)", addr); - break; - case ARG_LENGTH: - GET_LENGTH_INC(len, bp); - fprintf(f, ":%d", len); - break; - case ARG_MEMNUM: - mem = *((MemNumType* )bp); - bp += SIZE_MEMNUM; - fprintf(f, ":%d", mem); - break; - case ARG_OPTION: - { - OnigOptionType option = *((OnigOptionType* )bp); - bp += SIZE_OPTION; - fprintf(f, ":%d", option); - } - break; - - case ARG_STATE_CHECK: - scn = *((StateCheckNumType* )bp); - bp += SIZE_STATE_CHECK_NUM; - fprintf(f, ":%d", scn); - break; - } - } - else { - switch (*bp++) { - case OP_EXACT1: - case OP_ANYCHAR_STAR_PEEK_NEXT: - case OP_ANYCHAR_ML_STAR_PEEK_NEXT: - p_string(f, 1, bp++); break; - case OP_EXACT2: - p_string(f, 2, bp); bp += 2; break; - case OP_EXACT3: - p_string(f, 3, bp); bp += 3; break; - case OP_EXACT4: - p_string(f, 4, bp); bp += 4; break; - case OP_EXACT5: - p_string(f, 5, bp); bp += 5; break; - case OP_EXACTN: - GET_LENGTH_INC(len, bp); - p_len_string(f, len, 1, bp); - bp += len; - break; - - case OP_EXACTMB2N1: - p_string(f, 2, bp); bp += 2; break; - case OP_EXACTMB2N2: - p_string(f, 4, bp); bp += 4; break; - case OP_EXACTMB2N3: - p_string(f, 6, bp); bp += 6; break; - case OP_EXACTMB2N: - GET_LENGTH_INC(len, bp); - p_len_string(f, len, 2, bp); - bp += len * 2; - break; - case OP_EXACTMB3N: - GET_LENGTH_INC(len, bp); - p_len_string(f, len, 3, bp); - bp += len * 3; - break; - case OP_EXACTMBN: - { - int mb_len; - - GET_LENGTH_INC(mb_len, bp); - GET_LENGTH_INC(len, bp); - fprintf(f, ":%d:%d:", mb_len, len); - n = len * mb_len; - while (n-- > 0) { fputc(*bp++, f); } - } - break; - - case OP_EXACT1_IC: - len = enclen(enc, bp, bpend); - p_string(f, len, bp); - bp += len; - break; - case OP_EXACTN_IC: - GET_LENGTH_INC(len, bp); - p_len_string(f, len, 1, bp); - bp += len; - break; - - case OP_CCLASS: - n = bitset_on_num((BitSetRef )bp); - bp += SIZE_BITSET; - fprintf(f, ":%d", n); - break; - - case OP_CCLASS_NOT: - n = bitset_on_num((BitSetRef )bp); - bp += SIZE_BITSET; - fprintf(f, ":%d", n); - break; - - case OP_CCLASS_MB: - case OP_CCLASS_MB_NOT: - GET_LENGTH_INC(len, bp); - q = bp; -# ifndef PLATFORM_UNALIGNED_WORD_ACCESS - ALIGNMENT_RIGHT(q); -# endif - GET_CODE_POINT(code, q); - bp += len; - fprintf(f, ":%d:%d", (int )code, len); - break; - - case OP_CCLASS_MIX: - case OP_CCLASS_MIX_NOT: - n = bitset_on_num((BitSetRef )bp); - bp += SIZE_BITSET; - GET_LENGTH_INC(len, bp); - q = bp; -# ifndef PLATFORM_UNALIGNED_WORD_ACCESS - ALIGNMENT_RIGHT(q); -# endif - GET_CODE_POINT(code, q); - bp += len; - fprintf(f, ":%d:%d:%d", n, (int )code, len); - break; - - case OP_BACKREFN_IC: - mem = *((MemNumType* )bp); - bp += SIZE_MEMNUM; - fprintf(f, ":%d", mem); - break; - - case OP_BACKREF_MULTI_IC: - case OP_BACKREF_MULTI: - fputs(" ", f); - GET_LENGTH_INC(len, bp); - for (i = 0; i < len; i++) { - GET_MEMNUM_INC(mem, bp); - if (i > 0) fputs(", ", f); - fprintf(f, "%d", mem); - } - break; - - case OP_BACKREF_WITH_LEVEL: - { - OnigOptionType option; - LengthType level; - - GET_OPTION_INC(option, bp); - fprintf(f, ":%d", option); - GET_LENGTH_INC(level, bp); - fprintf(f, ":%d", level); - - fputs(" ", f); - GET_LENGTH_INC(len, bp); - for (i = 0; i < len; i++) { - GET_MEMNUM_INC(mem, bp); - if (i > 0) fputs(", ", f); - fprintf(f, "%d", mem); - } - } - break; - - case OP_REPEAT: - case OP_REPEAT_NG: - { - mem = *((MemNumType* )bp); - bp += SIZE_MEMNUM; - addr = *((RelAddrType* )bp); - bp += SIZE_RELADDR; - fprintf(f, ":%d:%d", mem, addr); - } - break; - - case OP_PUSH_OR_JUMP_EXACT1: - case OP_PUSH_IF_PEEK_NEXT: - addr = *((RelAddrType* )bp); - bp += SIZE_RELADDR; - fprintf(f, ":(%s%d)", (addr >= 0) ? "+" : "", addr); - p_string(f, 1, bp); - bp += 1; - break; - - case OP_LOOK_BEHIND: - GET_LENGTH_INC(len, bp); - fprintf(f, ":%d", len); - break; - - case OP_PUSH_LOOK_BEHIND_NOT: - GET_RELADDR_INC(addr, bp); - GET_LENGTH_INC(len, bp); - fprintf(f, ":%d:(%s%d)", len, (addr >= 0) ? "+" : "", addr); - break; - - case OP_STATE_CHECK_PUSH: - case OP_STATE_CHECK_PUSH_OR_JUMP: - scn = *((StateCheckNumType* )bp); - bp += SIZE_STATE_CHECK_NUM; - addr = *((RelAddrType* )bp); - bp += SIZE_RELADDR; - fprintf(f, ":%d:(%s%d)", scn, (addr >= 0) ? "+" : "", addr); - break; - - case OP_CONDITION: - GET_MEMNUM_INC(mem, bp); - GET_RELADDR_INC(addr, bp); - fprintf(f, ":%d:(%s%d)", mem, (addr >= 0) ? "+" : "", addr); - break; - - default: - fprintf(stderr, "onig_print_compiled_byte_code: undefined code %d\n", - bp[-1]); - } - } - fputs("]", f); - if (nextp) *nextp = bp; -} - -# ifdef ONIG_DEBUG_COMPILE -static void -print_compiled_byte_code_list(FILE* f, regex_t* reg) -{ - int ncode; - UChar* bp = reg->p; - UChar* end = reg->p + reg->used; - - fprintf(f, "code length: %d", reg->used); - - ncode = -1; - while (bp < end) { - ncode++; - if (ncode % 5 == 0) - fprintf(f, "\n%ld:", bp - reg->p); - else - fprintf(f, " %ld:", bp - reg->p); - onig_print_compiled_byte_code(f, bp, end, &bp, reg->enc); - } - - fprintf(f, "\n"); -} -# endif /* ONIG_DEBUG_COMPILE */ - -# ifdef ONIG_DEBUG_PARSE_TREE -static void -print_indent_tree(FILE* f, Node* node, int indent) -{ - int i, type, container_p = 0; - int add = 3; - UChar* p; - - Indent(f, indent); - if (IS_NULL(node)) { - fprintf(f, "ERROR: null node!!!\n"); - exit (0); - } - - type = NTYPE(node); - switch (type) { - case NT_LIST: - case NT_ALT: - if (NTYPE(node) == NT_LIST) - fprintf(f, "\n", (intptr_t )node); - else - fprintf(f, "\n", (intptr_t )node); - - print_indent_tree(f, NCAR(node), indent + add); - while (IS_NOT_NULL(node = NCDR(node))) { - if (NTYPE(node) != type) { - fprintf(f, "ERROR: list/alt right is not a cons. %d\n", NTYPE(node)); - exit(0); - } - print_indent_tree(f, NCAR(node), indent + add); - } - break; - - case NT_STR: - fprintf(f, "", - (NSTRING_IS_RAW(node) ? "-raw" : ""), (intptr_t )node); - for (p = NSTR(node)->s; p < NSTR(node)->end; p++) { - if (*p >= 0x20 && *p < 0x7f) - fputc(*p, f); - else { - fprintf(f, " 0x%02x", *p); - } - } - break; - - case NT_CCLASS: - fprintf(f, "", (intptr_t )node); - if (IS_NCCLASS_NOT(NCCLASS(node))) fputs("not ", f); - if (NCCLASS(node)->mbuf) { - BBuf* bbuf = NCCLASS(node)->mbuf; - OnigCodePoint* data = (OnigCodePoint* )bbuf->p; - OnigCodePoint* end = (OnigCodePoint* )(bbuf->p + bbuf->used); - fprintf(f, "%d", *data++); - for (; data < end; data+=2) { - fprintf(f, ","); - fprintf(f, "%04x-%04x", data[0], data[1]); - } - } - break; - - case NT_CTYPE: - fprintf(f, " ", (intptr_t )node); - switch (NCTYPE(node)->ctype) { - case ONIGENC_CTYPE_WORD: - if (NCTYPE(node)->not != 0) - fputs("not word", f); - else - fputs("word", f); - break; - - default: - fprintf(f, "ERROR: undefined ctype.\n"); - exit(0); - } - break; - - case NT_CANY: - fprintf(f, "", (intptr_t )node); - break; - - case NT_ANCHOR: - fprintf(f, " ", (intptr_t )node); - switch (NANCHOR(node)->type) { - case ANCHOR_BEGIN_BUF: fputs("begin buf", f); break; - case ANCHOR_END_BUF: fputs("end buf", f); break; - case ANCHOR_BEGIN_LINE: fputs("begin line", f); break; - case ANCHOR_END_LINE: fputs("end line", f); break; - case ANCHOR_SEMI_END_BUF: fputs("semi end buf", f); break; - case ANCHOR_BEGIN_POSITION: fputs("begin position", f); break; - - case ANCHOR_WORD_BOUND: fputs("word bound", f); break; - case ANCHOR_NOT_WORD_BOUND: fputs("not word bound", f); break; -# ifdef USE_WORD_BEGIN_END - case ANCHOR_WORD_BEGIN: fputs("word begin", f); break; - case ANCHOR_WORD_END: fputs("word end", f); break; -# endif - case ANCHOR_PREC_READ: fputs("prec read", f); container_p = TRUE; break; - case ANCHOR_PREC_READ_NOT: fputs("prec read not", f); container_p = TRUE; break; - case ANCHOR_LOOK_BEHIND: fputs("look_behind", f); container_p = TRUE; break; - case ANCHOR_LOOK_BEHIND_NOT: fputs("look_behind_not",f); container_p = TRUE; break; - case ANCHOR_KEEP: fputs("keep",f); break; - - default: - fprintf(f, "ERROR: undefined anchor type.\n"); - break; - } - break; - - case NT_BREF: - { - int* p; - BRefNode* br = NBREF(node); - p = BACKREFS_P(br); - fprintf(f, "", (intptr_t )node); - for (i = 0; i < br->back_num; i++) { - if (i > 0) fputs(", ", f); - fprintf(f, "%d", p[i]); - } - } - break; - -# ifdef USE_SUBEXP_CALL - case NT_CALL: - { - CallNode* cn = NCALL(node); - fprintf(f, "", (intptr_t )node); - p_string(f, cn->name_end - cn->name, cn->name); - } - break; -# endif - - case NT_QTFR: - fprintf(f, "{%d,%d}%s\n", (intptr_t )node, - NQTFR(node)->lower, NQTFR(node)->upper, - (NQTFR(node)->greedy ? "" : "?")); - print_indent_tree(f, NQTFR(node)->target, indent + add); - break; - - case NT_ENCLOSE: - fprintf(f, " ", (intptr_t )node); - switch (NENCLOSE(node)->type) { - case ENCLOSE_OPTION: - fprintf(f, "option:%d", NENCLOSE(node)->option); - break; - case ENCLOSE_MEMORY: - fprintf(f, "memory:%d", NENCLOSE(node)->regnum); - break; - case ENCLOSE_STOP_BACKTRACK: - fprintf(f, "stop-bt"); - break; - case ENCLOSE_CONDITION: - fprintf(f, "condition:%d", NENCLOSE(node)->regnum); - break; - case ENCLOSE_ABSENT: - fprintf(f, "absent"); - break; - - default: - break; - } - fprintf(f, "\n"); - print_indent_tree(f, NENCLOSE(node)->target, indent + add); - break; - - default: - fprintf(f, "print_indent_tree: undefined node type %d\n", NTYPE(node)); - break; - } - - if (type != NT_LIST && type != NT_ALT && type != NT_QTFR && - type != NT_ENCLOSE) - fprintf(f, "\n"); - - if (container_p) print_indent_tree(f, NANCHOR(node)->target, indent + add); - - fflush(f); -} - -static void -print_tree(FILE* f, Node* node) -{ - print_indent_tree(f, node, 0); -} -# endif /* ONIG_DEBUG_PARSE_TREE */ -#endif /* ONIG_DEBUG */ diff --git a/vendor/onig/regenc.h b/vendor/onig/regenc.h deleted file mode 100644 index 969e114..0000000 --- a/vendor/onig/regenc.h +++ /dev/null @@ -1,254 +0,0 @@ -#ifndef ONIGMO_REGENC_H -#define ONIGMO_REGENC_H -/********************************************************************** - regenc.h - Onigmo (Oniguruma-mod) (regular expression library) -**********************************************************************/ -/*- - * Copyright (c) 2002-2008 K.Kosako - * Copyright (c) 2011-2016 K.Takata - * 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. - */ - -#if !defined(RUBY) && (defined(RUBY_EXPORT) || defined(ONIG_ENC_REGISTER)) -# define RUBY -#endif -#ifdef RUBY -# ifndef ONIGMO_REGINT_H -# ifndef RUBY_EXTERN -# include "ruby/config.h" -# include "ruby/defines.h" -# endif -# endif -#else /* RUBY */ -# ifndef PACKAGE -/* PACKAGE is defined in config.h */ -# include "config.h" -# endif -#endif /* RUBY */ - -#ifdef ONIG_ESCAPE_UCHAR_COLLISION -# undef ONIG_ESCAPE_UCHAR_COLLISION -#endif - -#ifdef RUBY -# include "ruby/onigmo.h" -#else -# include "onigmo.h" -#endif - -RUBY_SYMBOL_EXPORT_BEGIN - -typedef struct { - OnigCodePoint from; - OnigCodePoint to; -} OnigPairCaseFoldCodes; - - -#ifndef NULL -# define NULL ((void* )0) -#endif - -#ifndef TRUE -# define TRUE 1 -#endif - -#ifndef FALSE -# define FALSE 0 -#endif - -#ifndef ARG_UNUSED -# if defined(__GNUC__) -# define ARG_UNUSED __attribute__ ((unused)) -# else -# define ARG_UNUSED -# endif -#endif - -#define ONIG_IS_NULL(p) (((void*)(p)) == (void*)0) -#define ONIG_IS_NOT_NULL(p) (((void*)(p)) != (void*)0) -#define ONIG_CHECK_NULL_RETURN(p) if (ONIG_IS_NULL(p)) return NULL -#define ONIG_CHECK_NULL_RETURN_VAL(p,val) if (ONIG_IS_NULL(p)) return (val) - -#define enclen(enc,p,e) ((enc->max_enc_len == enc->min_enc_len) ? enc->min_enc_len : ONIGENC_MBC_ENC_LEN(enc,p,e)) - -/* character types bit flag */ -#define BIT_CTYPE_NEWLINE (1<< ONIGENC_CTYPE_NEWLINE) -#define BIT_CTYPE_ALPHA (1<< ONIGENC_CTYPE_ALPHA) -#define BIT_CTYPE_BLANK (1<< ONIGENC_CTYPE_BLANK) -#define BIT_CTYPE_CNTRL (1<< ONIGENC_CTYPE_CNTRL) -#define BIT_CTYPE_DIGIT (1<< ONIGENC_CTYPE_DIGIT) -#define BIT_CTYPE_GRAPH (1<< ONIGENC_CTYPE_GRAPH) -#define BIT_CTYPE_LOWER (1<< ONIGENC_CTYPE_LOWER) -#define BIT_CTYPE_PRINT (1<< ONIGENC_CTYPE_PRINT) -#define BIT_CTYPE_PUNCT (1<< ONIGENC_CTYPE_PUNCT) -#define BIT_CTYPE_SPACE (1<< ONIGENC_CTYPE_SPACE) -#define BIT_CTYPE_UPPER (1<< ONIGENC_CTYPE_UPPER) -#define BIT_CTYPE_XDIGIT (1<< ONIGENC_CTYPE_XDIGIT) -#define BIT_CTYPE_WORD (1<< ONIGENC_CTYPE_WORD) -#define BIT_CTYPE_ALNUM (1<< ONIGENC_CTYPE_ALNUM) -#define BIT_CTYPE_ASCII (1<< ONIGENC_CTYPE_ASCII) - -#define CTYPE_TO_BIT(ctype) (1<<(ctype)) -#define CTYPE_IS_WORD_GRAPH_PRINT(ctype) \ - ((ctype) == ONIGENC_CTYPE_WORD || (ctype) == ONIGENC_CTYPE_GRAPH ||\ - (ctype) == ONIGENC_CTYPE_PRINT) - - -typedef struct { - short int len; - const UChar name[6]; - int ctype; -} PosixBracketEntryType; - -#define POSIX_BRACKET_ENTRY_INIT(name, ctype) \ - {(short int )(sizeof(name) - 1), (name), (ctype)} - -#ifndef numberof -# define numberof(array) (int )(sizeof(array) / sizeof((array)[0])) -#endif - - -#define USE_CRNL_AS_LINE_TERMINATOR -#define USE_UNICODE_PROPERTIES -#define USE_UNICODE_AGE_PROPERTIES -/* #define USE_UNICODE_CASE_FOLD_TURKISH_AZERI */ -/* #define USE_UNICODE_ALL_LINE_TERMINATORS */ /* see Unicode.org UTS #18 */ - - -#define ONIG_ENCODING_INIT_DEFAULT ONIG_ENCODING_ASCII - -/* for encoding system implementation (internal) */ -ONIG_EXTERN int onigenc_ascii_apply_all_case_fold(OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg, OnigEncoding enc); -ONIG_EXTERN int onigenc_ascii_get_case_fold_codes_by_str(OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[], OnigEncoding enc); -ONIG_EXTERN int onigenc_apply_all_case_fold_with_map(int map_size, const OnigPairCaseFoldCodes map[], int ess_tsett_flag, OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg); -ONIG_EXTERN int onigenc_get_case_fold_codes_by_str_with_map(int map_size, const OnigPairCaseFoldCodes map[], int ess_tsett_flag, OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]); -ONIG_EXTERN int onigenc_not_support_get_ctype_code_range(OnigCtype ctype, OnigCodePoint* sb_out, const OnigCodePoint* ranges[], OnigEncoding enc); -ONIG_EXTERN int onigenc_is_mbc_newline_0x0a(const UChar* p, const UChar* end, OnigEncoding enc); -ONIG_EXTERN int onigenc_single_byte_ascii_only_case_map(OnigCaseFoldType* flagP, const OnigUChar** pp, const OnigUChar* end, OnigUChar* to, OnigUChar* to_end, const struct OnigEncodingTypeST* enc); - - -/* methods for single byte encoding */ -ONIG_EXTERN int onigenc_ascii_mbc_case_fold(OnigCaseFoldType flag, const UChar** p, const UChar* end, UChar* lower, OnigEncoding enc); -ONIG_EXTERN int onigenc_single_byte_mbc_enc_len(const UChar* p, const UChar* e, OnigEncoding enc); -ONIG_EXTERN OnigCodePoint onigenc_single_byte_mbc_to_code(const UChar* p, const UChar* end, OnigEncoding enc); -ONIG_EXTERN int onigenc_single_byte_code_to_mbclen(OnigCodePoint code, OnigEncoding enc); -ONIG_EXTERN int onigenc_single_byte_code_to_mbc(OnigCodePoint code, UChar *buf, OnigEncoding enc); -ONIG_EXTERN UChar* onigenc_single_byte_left_adjust_char_head(const UChar* start, const UChar* s, const OnigUChar* end, OnigEncoding enc); -ONIG_EXTERN int onigenc_always_true_is_allowed_reverse_match(const UChar* s, const UChar* end, OnigEncoding enc); -ONIG_EXTERN int onigenc_always_false_is_allowed_reverse_match(const UChar* s, const UChar* end, OnigEncoding enc); -ONIG_EXTERN int onigenc_ascii_is_code_ctype(OnigCodePoint code, unsigned int ctype, OnigEncoding enc); - -/* methods for multi byte encoding */ -ONIG_EXTERN OnigCodePoint onigenc_mbn_mbc_to_code(OnigEncoding enc, const UChar* p, const UChar* end); -ONIG_EXTERN int onigenc_mbn_mbc_case_fold(OnigEncoding enc, OnigCaseFoldType flag, const UChar** p, const UChar* end, UChar* lower); -ONIG_EXTERN int onigenc_mb2_code_to_mbclen(OnigCodePoint code, OnigEncoding enc); -ONIG_EXTERN int onigenc_mb2_code_to_mbc(OnigEncoding enc, OnigCodePoint code, UChar *buf); -ONIG_EXTERN int onigenc_minimum_property_name_to_ctype(OnigEncoding enc, const UChar* p, const UChar* end); -ONIG_EXTERN int onigenc_unicode_property_name_to_ctype(OnigEncoding enc, const UChar* p, const UChar* end); -ONIG_EXTERN int onigenc_mb2_is_code_ctype(OnigEncoding enc, OnigCodePoint code, unsigned int ctype); -ONIG_EXTERN int onigenc_mb4_code_to_mbclen(OnigCodePoint code, OnigEncoding enc); -ONIG_EXTERN int onigenc_mb4_code_to_mbc(OnigEncoding enc, OnigCodePoint code, UChar *buf); -ONIG_EXTERN int onigenc_mb4_is_code_ctype(OnigEncoding enc, OnigCodePoint code, unsigned int ctype); - -ONIG_EXTERN int onigenc_unicode_case_map(OnigCaseFoldType* flagP, const OnigUChar** pp, const OnigUChar* end, OnigUChar* to, OnigUChar* to_end, const struct OnigEncodingTypeST* enc); - - -/* in enc/unicode.c */ -ONIG_EXTERN int onigenc_unicode_is_code_ctype(OnigCodePoint code, unsigned int ctype, OnigEncoding enc); -ONIG_EXTERN int onigenc_utf16_32_get_ctype_code_range(OnigCtype ctype, OnigCodePoint *sb_out, const OnigCodePoint* ranges[], OnigEncoding enc); -ONIG_EXTERN int onigenc_unicode_ctype_code_range(int ctype, const OnigCodePoint* ranges[]); -ONIG_EXTERN int onigenc_unicode_get_case_fold_codes_by_str(OnigEncoding enc, OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]); -ONIG_EXTERN int onigenc_unicode_mbc_case_fold(OnigEncoding enc, OnigCaseFoldType flag, const UChar** pp, const UChar* end, UChar* fold); -ONIG_EXTERN int onigenc_unicode_apply_all_case_fold(OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg, OnigEncoding enc); - - -#define UTF16_IS_SURROGATE_FIRST(c) (((c) & 0xfc) == 0xd8) -#define UTF16_IS_SURROGATE_SECOND(c) (((c) & 0xfc) == 0xdc) -#define UTF16_IS_SURROGATE(c) (((c) & 0xf8) == 0xd8) -#define UNICODE_VALID_CODEPOINT_P(c) ( \ - ((c) <= 0x10ffff) && \ - !((c) < 0x10000 && UTF16_IS_SURROGATE((c) >> 8))) - -#define ONIGENC_ISO_8859_1_TO_LOWER_CASE(c) \ - OnigEncISO_8859_1_ToLowerCaseTable[c] -#define ONIGENC_ISO_8859_1_TO_UPPER_CASE(c) \ - OnigEncISO_8859_1_ToUpperCaseTable[c] - -ONIG_EXTERN const UChar OnigEncISO_8859_1_ToLowerCaseTable[]; -ONIG_EXTERN const UChar OnigEncISO_8859_1_ToUpperCaseTable[]; - -ONIG_EXTERN int -onigenc_with_ascii_strncmp(OnigEncoding enc, const UChar* p, const UChar* end, const UChar* sascii /* ascii */, int n); -ONIG_EXTERN int -onigenc_with_ascii_strnicmp(OnigEncoding enc, const UChar* p, const UChar* end, const UChar* sascii /* ascii */, int n); -ONIG_EXTERN UChar* -onigenc_step(OnigEncoding enc, const UChar* p, const UChar* end, int n); - -/* defined in regexec.c, but used in enc/xxx.c */ -extern int onig_is_in_code_range(const UChar* p, OnigCodePoint code); - -ONIG_EXTERN OnigEncoding OnigEncDefaultCharEncoding; -ONIG_EXTERN const UChar OnigEncAsciiToLowerCaseTable[]; -ONIG_EXTERN const UChar OnigEncAsciiToUpperCaseTable[]; -ONIG_EXTERN const unsigned short OnigEncAsciiCtypeTable[]; - -#define ONIGENC_IS_ASCII_CODE(code) ((code) < 0x80) -#define ONIGENC_ASCII_CODE_TO_LOWER_CASE(c) OnigEncAsciiToLowerCaseTable[c] -#define ONIGENC_ASCII_CODE_TO_UPPER_CASE(c) OnigEncAsciiToUpperCaseTable[c] -#define ONIGENC_IS_ASCII_CODE_CTYPE(code,ctype) \ - ((OnigEncAsciiCtypeTable[code] & CTYPE_TO_BIT(ctype)) != 0) -#define ONIGENC_IS_ASCII_CODE_CASE_AMBIG(code) \ - (ONIGENC_IS_ASCII_CODE_CTYPE(code, ONIGENC_CTYPE_UPPER) ||\ - ONIGENC_IS_ASCII_CODE_CTYPE(code, ONIGENC_CTYPE_LOWER)) - -/* Check if the code is in the range. (from <= code && code <= to) */ -#define ONIGENC_IS_IN_RANGE(code, from, to) \ - ((OnigCodePoint )((code) - (from)) <= (OnigCodePoint )((to) - (from))) - - -#ifdef ONIG_ENC_REGISTER -extern int ONIG_ENC_REGISTER(const char *, OnigEncoding); -# define OnigEncodingName(n) encoding_##n -# define OnigEncodingDeclare(n) static const OnigEncodingType OnigEncodingName(n) -# define OnigEncodingDefine(f,n) \ - OnigEncodingDeclare(n); \ - void Init_##f(void) { \ - ONIG_ENC_REGISTER(OnigEncodingName(n).name, \ - &OnigEncodingName(n)); \ - } \ - OnigEncodingDeclare(n) -#else -# define OnigEncodingName(n) OnigEncoding##n -# define OnigEncodingDeclare(n) const OnigEncodingType OnigEncodingName(n) -# define OnigEncodingDefine(f,n) OnigEncodingDeclare(n) -#endif - -/* macros for define replica encoding and encoding alias */ -#define ENC_REPLICATE(name, orig) -#define ENC_ALIAS(name, orig) -#define ENC_DUMMY(name) - -RUBY_SYMBOL_EXPORT_END - -#endif /* ONIGMO_REGENC_H */ diff --git a/vendor/onig/regexec.c b/vendor/onig/regexec.c deleted file mode 100644 index 9e5f559..0000000 --- a/vendor/onig/regexec.c +++ /dev/null @@ -1,4613 +0,0 @@ -/********************************************************************** - regexec.c - Onigmo (Oniguruma-mod) (regular expression library) -**********************************************************************/ -/*- - * Copyright (c) 2002-2008 K.Kosako - * Copyright (c) 2011-2016 K.Takata - * 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. - */ - -#include "regint.h" - -#ifdef RUBY -# undef USE_MATCH_RANGE_MUST_BE_INSIDE_OF_SPECIFIED_RANGE -#else -# define USE_MATCH_RANGE_MUST_BE_INSIDE_OF_SPECIFIED_RANGE -#endif - -#ifndef USE_TOKEN_THREADED_VM -# ifdef __GNUC__ -# define USE_TOKEN_THREADED_VM 1 -# else -# define USE_TOKEN_THREADED_VM 0 -# endif -#endif - -#ifdef RUBY -# define ENC_DUMMY_FLAG (1<<24) -static inline int -rb_enc_asciicompat(OnigEncoding enc) -{ - return ONIGENC_MBC_MINLEN(enc)==1 && !((enc)->ruby_encoding_index & ENC_DUMMY_FLAG); -} -# undef ONIGENC_IS_MBC_ASCII_WORD -# define ONIGENC_IS_MBC_ASCII_WORD(enc,s,end) \ - (rb_enc_asciicompat(enc) ? (ISALNUM(*s) || *s=='_') : \ - onigenc_ascii_is_code_ctype( \ - ONIGENC_MBC_TO_CODE(enc,s,end),ONIGENC_CTYPE_WORD,enc)) -#endif /* RUBY */ - -#ifdef USE_CRNL_AS_LINE_TERMINATOR -# define ONIGENC_IS_MBC_CRNL(enc,p,end) \ - (ONIGENC_MBC_TO_CODE(enc,p,end) == 13 && \ - ONIGENC_MBC_TO_CODE(enc,(p+enclen(enc,p,end)),end) == 10) -# define ONIGENC_IS_MBC_NEWLINE_EX(enc,p,start,end,option,check_prev) \ - is_mbc_newline_ex((enc),(p),(start),(end),(option),(check_prev)) -static int -is_mbc_newline_ex(OnigEncoding enc, const UChar *p, const UChar *start, - const UChar *end, OnigOptionType option, int check_prev) -{ - if (IS_NEWLINE_CRLF(option)) { - if (ONIGENC_MBC_TO_CODE(enc, p, end) == 0x0a) { - if (check_prev) { - const UChar *prev = onigenc_get_prev_char_head(enc, start, p, end); - if ((prev != NULL) && ONIGENC_MBC_TO_CODE(enc, prev, end) == 0x0d) - return 0; - else - return 1; - } - else - return 1; - } - else { - const UChar *pnext = p + enclen(enc, p, end); - if (pnext < end && - ONIGENC_MBC_TO_CODE(enc, p, end) == 0x0d && - ONIGENC_MBC_TO_CODE(enc, pnext, end) == 0x0a) - return 1; - if (ONIGENC_IS_MBC_NEWLINE(enc, p, end)) - return 1; - return 0; - } - } - else { - return ONIGENC_IS_MBC_NEWLINE(enc, p, end); - } -} -#else /* USE_CRNL_AS_LINE_TERMINATOR */ -# define ONIGENC_IS_MBC_NEWLINE_EX(enc,p,start,end,option,check_prev) \ - ONIGENC_IS_MBC_NEWLINE((enc), (p), (end)) -#endif /* USE_CRNL_AS_LINE_TERMINATOR */ - -#ifdef USE_CAPTURE_HISTORY -static void history_tree_free(OnigCaptureTreeNode* node); - -static void -history_tree_clear(OnigCaptureTreeNode* node) -{ - int i; - - if (IS_NOT_NULL(node)) { - for (i = 0; i < node->num_childs; i++) { - if (IS_NOT_NULL(node->childs[i])) { - history_tree_free(node->childs[i]); - } - } - for (i = 0; i < node->allocated; i++) { - node->childs[i] = (OnigCaptureTreeNode* )0; - } - node->num_childs = 0; - node->beg = ONIG_REGION_NOTPOS; - node->end = ONIG_REGION_NOTPOS; - node->group = -1; - xfree(node->childs); - node->childs = (OnigCaptureTreeNode** )0; - } -} - -static void -history_tree_free(OnigCaptureTreeNode* node) -{ - history_tree_clear(node); - xfree(node); -} - -static void -history_root_free(OnigRegion* r) -{ - if (IS_NOT_NULL(r->history_root)) { - history_tree_free(r->history_root); - r->history_root = (OnigCaptureTreeNode* )0; - } -} - -static OnigCaptureTreeNode* -history_node_new(void) -{ - OnigCaptureTreeNode* node; - - node = (OnigCaptureTreeNode* )xmalloc(sizeof(OnigCaptureTreeNode)); - CHECK_NULL_RETURN(node); - node->childs = (OnigCaptureTreeNode** )0; - node->allocated = 0; - node->num_childs = 0; - node->group = -1; - node->beg = ONIG_REGION_NOTPOS; - node->end = ONIG_REGION_NOTPOS; - - return node; -} - -static int -history_tree_add_child(OnigCaptureTreeNode* parent, OnigCaptureTreeNode* child) -{ -# define HISTORY_TREE_INIT_ALLOC_SIZE 8 - - if (parent->num_childs >= parent->allocated) { - int n, i; - - if (IS_NULL(parent->childs)) { - n = HISTORY_TREE_INIT_ALLOC_SIZE; - parent->childs = - (OnigCaptureTreeNode** )xmalloc(sizeof(OnigCaptureTreeNode*) * n); - CHECK_NULL_RETURN_MEMERR(parent->childs); - } - else { - OnigCaptureTreeNode** tmp; - n = parent->allocated * 2; - tmp = - (OnigCaptureTreeNode** )xrealloc(parent->childs, - sizeof(OnigCaptureTreeNode*) * n); - if (tmp == 0) { - history_tree_clear(parent); - return ONIGERR_MEMORY; - } - parent->childs = tmp; - } - for (i = parent->allocated; i < n; i++) { - parent->childs[i] = (OnigCaptureTreeNode* )0; - } - parent->allocated = n; - } - - parent->childs[parent->num_childs] = child; - parent->num_childs++; - return 0; -} - -static OnigCaptureTreeNode* -history_tree_clone(OnigCaptureTreeNode* node) -{ - int i, r; - OnigCaptureTreeNode *clone, *child; - - clone = history_node_new(); - CHECK_NULL_RETURN(clone); - - clone->beg = node->beg; - clone->end = node->end; - for (i = 0; i < node->num_childs; i++) { - child = history_tree_clone(node->childs[i]); - if (IS_NULL(child)) { - history_tree_free(clone); - return (OnigCaptureTreeNode* )0; - } - r = history_tree_add_child(clone, child); - if (r != 0) { - history_tree_free(child); - history_tree_free(clone); - return (OnigCaptureTreeNode* )0; - } - } - - return clone; -} - -extern OnigCaptureTreeNode* -onig_get_capture_tree(OnigRegion* region) -{ - return region->history_root; -} -#endif /* USE_CAPTURE_HISTORY */ - -extern void -onig_region_clear(OnigRegion* region) -{ - int i; - - for (i = 0; i < region->num_regs; i++) { - region->beg[i] = region->end[i] = ONIG_REGION_NOTPOS; - } -#ifdef USE_CAPTURE_HISTORY - history_root_free(region); -#endif -} - -extern int -onig_region_resize(OnigRegion* region, int n) -{ - region->num_regs = n; - - if (n < ONIG_NREGION) - n = ONIG_NREGION; - - if (region->allocated == 0) { - region->beg = (OnigPosition* )xmalloc(n * sizeof(OnigPosition)); - if (region->beg == 0) - return ONIGERR_MEMORY; - - region->end = (OnigPosition* )xmalloc(n * sizeof(OnigPosition)); - if (region->end == 0) { - xfree(region->beg); - return ONIGERR_MEMORY; - } - - region->allocated = n; - } - else if (region->allocated < n) { - OnigPosition *tmp; - - region->allocated = 0; - tmp = (OnigPosition* )xrealloc(region->beg, n * sizeof(OnigPosition)); - if (tmp == 0) { - xfree(region->beg); - xfree(region->end); - return ONIGERR_MEMORY; - } - region->beg = tmp; - tmp = (OnigPosition* )xrealloc(region->end, n * sizeof(OnigPosition)); - if (tmp == 0) { - xfree(region->beg); - xfree(region->end); - return ONIGERR_MEMORY; - } - region->end = tmp; - - region->allocated = n; - } - - return 0; -} - -static int -onig_region_resize_clear(OnigRegion* region, int n) -{ - int r; - - r = onig_region_resize(region, n); - if (r != 0) return r; - onig_region_clear(region); - return 0; -} - -extern int -onig_region_set(OnigRegion* region, int at, int beg, int end) -{ - if (at < 0) return ONIGERR_INVALID_ARGUMENT; - - if (at >= region->allocated) { - int r = onig_region_resize(region, at + 1); - if (r < 0) return r; - } - - region->beg[at] = beg; - region->end[at] = end; - return 0; -} - -extern void -onig_region_init(OnigRegion* region) -{ - region->num_regs = 0; - region->allocated = 0; - region->beg = (OnigPosition* )0; - region->end = (OnigPosition* )0; - region->history_root = (OnigCaptureTreeNode* )0; -} - -extern OnigRegion* -onig_region_new(void) -{ - OnigRegion* r; - - r = (OnigRegion* )xmalloc(sizeof(OnigRegion)); - if (r) - onig_region_init(r); - return r; -} - -extern void -onig_region_free(OnigRegion* r, int free_self) -{ - if (r) { - if (r->allocated > 0) { - if (r->beg) xfree(r->beg); - if (r->end) xfree(r->end); - r->allocated = 0; - } -#ifdef USE_CAPTURE_HISTORY - history_root_free(r); -#endif - if (free_self) xfree(r); - } -} - -extern void -onig_region_copy(OnigRegion* to, const OnigRegion* from) -{ -#define RREGC_SIZE (sizeof(int) * from->num_regs) - int i, r; - - if (to == from) return; - - r = onig_region_resize(to, from->num_regs); - if (r) return; - - for (i = 0; i < from->num_regs; i++) { - to->beg[i] = from->beg[i]; - to->end[i] = from->end[i]; - } - to->num_regs = from->num_regs; - -#ifdef USE_CAPTURE_HISTORY - history_root_free(to); - - if (IS_NOT_NULL(from->history_root)) { - to->history_root = history_tree_clone(from->history_root); - } -#endif -} - - -/** stack **/ -#define INVALID_STACK_INDEX -1 - -/* stack type */ -/* used by normal-POP */ -#define STK_ALT 0x0001 -#define STK_LOOK_BEHIND_NOT 0x0002 -#define STK_POS_NOT 0x0003 -/* handled by normal-POP */ -#define STK_MEM_START 0x0100 -#define STK_MEM_END 0x8200 -#define STK_REPEAT_INC 0x0300 -#define STK_STATE_CHECK_MARK 0x1000 -/* avoided by normal-POP */ -#define STK_NULL_CHECK_START 0x3000 -#define STK_NULL_CHECK_END 0x5000 /* for recursive call */ -#define STK_MEM_END_MARK 0x8400 -#define STK_POS 0x0500 /* used when POP-POS */ -#define STK_STOP_BT 0x0600 /* mark for "(?>...)" */ -#define STK_REPEAT 0x0700 -#define STK_CALL_FRAME 0x0800 -#define STK_RETURN 0x0900 -#define STK_VOID 0x0a00 /* for fill a blank */ -#define STK_ABSENT_POS 0x0b00 /* for absent */ -#define STK_ABSENT 0x0c00 /* absent inner loop marker */ - -/* stack type check mask */ -#define STK_MASK_POP_USED 0x00ff -#define STK_MASK_TO_VOID_TARGET 0x10ff -#define STK_MASK_MEM_END_OR_MARK 0x8000 /* MEM_END or MEM_END_MARK */ - -#ifdef USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE -# define MATCH_ARG_INIT(msa, arg_option, arg_region, arg_start, arg_gpos) do {\ - (msa).stack_p = (void* )0;\ - (msa).options = (arg_option);\ - (msa).region = (arg_region);\ - (msa).start = (arg_start);\ - (msa).gpos = (arg_gpos);\ - (msa).best_len = ONIG_MISMATCH;\ -} while(0) -#else -# define MATCH_ARG_INIT(msa, arg_option, arg_region, arg_start, arg_gpos) do {\ - (msa).stack_p = (void* )0;\ - (msa).options = (arg_option);\ - (msa).region = (arg_region);\ - (msa).start = (arg_start);\ - (msa).gpos = (arg_gpos);\ -} while(0) -#endif - -#ifdef USE_COMBINATION_EXPLOSION_CHECK - -# define STATE_CHECK_BUFF_MALLOC_THRESHOLD_SIZE 16 - -# 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;\ - if (size > 0 && offset < size && size < STATE_CHECK_BUFF_MAX_SIZE) {\ - if (size >= STATE_CHECK_BUFF_MALLOC_THRESHOLD_SIZE) {\ - (msa).state_check_buff = (void* )xmalloc(size);\ - CHECK_NULL_RETURN_MEMERR((msa).state_check_buff);\ - }\ - else \ - (msa).state_check_buff = (void* )xalloca(size);\ - xmemset(((char* )((msa).state_check_buff)+(offset)), 0, \ - (size_t )(size - (offset))); \ - (msa).state_check_buff_size = size;\ - }\ - else {\ - (msa).state_check_buff = (void* )0;\ - (msa).state_check_buff_size = 0;\ - }\ - }\ - else {\ - (msa).state_check_buff = (void* )0;\ - (msa).state_check_buff_size = 0;\ - }\ - } while(0) - -# define MATCH_ARG_FREE(msa) do {\ - if ((msa).stack_p) xfree((msa).stack_p);\ - if ((msa).state_check_buff_size >= STATE_CHECK_BUFF_MALLOC_THRESHOLD_SIZE) { \ - if ((msa).state_check_buff) xfree((msa).state_check_buff);\ - }\ -} while(0) -#else /* USE_COMBINATION_EXPLOSION_CHECK */ -# define MATCH_ARG_FREE(msa) if ((msa).stack_p) xfree((msa).stack_p) -#endif /* USE_COMBINATION_EXPLOSION_CHECK */ - - - -#define MAX_PTR_NUM 100 - -#define STACK_INIT(alloc_addr, heap_addr, ptr_num, stack_num) do {\ - if (ptr_num > MAX_PTR_NUM) {\ - alloc_addr = (char* )xmalloc(sizeof(OnigStackIndex) * (ptr_num));\ - heap_addr = alloc_addr;\ - if (msa->stack_p) {\ - stk_alloc = (OnigStackType* )(msa->stack_p);\ - stk_base = stk_alloc;\ - stk = stk_base;\ - stk_end = stk_base + msa->stack_n;\ - } else {\ - stk_alloc = (OnigStackType* )xalloca(sizeof(OnigStackType) * (stack_num));\ - stk_base = stk_alloc;\ - stk = stk_base;\ - stk_end = stk_base + (stack_num);\ - }\ - } else if (msa->stack_p) {\ - alloc_addr = (char* )xalloca(sizeof(OnigStackIndex) * (ptr_num));\ - heap_addr = NULL;\ - stk_alloc = (OnigStackType* )(msa->stack_p);\ - stk_base = stk_alloc;\ - stk = stk_base;\ - stk_end = stk_base + msa->stack_n;\ - }\ - else {\ - alloc_addr = (char* )xalloca(sizeof(OnigStackIndex) * (ptr_num)\ - + sizeof(OnigStackType) * (stack_num));\ - heap_addr = NULL;\ - stk_alloc = (OnigStackType* )(alloc_addr + sizeof(OnigStackIndex) * (ptr_num));\ - stk_base = stk_alloc;\ - stk = stk_base;\ - stk_end = stk_base + (stack_num);\ - }\ -} while(0) - -#define STACK_SAVE do{\ - if (stk_base != stk_alloc) {\ - msa->stack_p = stk_base;\ - msa->stack_n = stk_end - stk_base; /* TODO: check overflow */\ - };\ -} while(0) - -static unsigned int MatchStackLimitSize = DEFAULT_MATCH_STACK_LIMIT_SIZE; - -extern unsigned int -onig_get_match_stack_limit_size(void) -{ - return MatchStackLimitSize; -} - -extern int -onig_set_match_stack_limit_size(unsigned int size) -{ - MatchStackLimitSize = size; - return 0; -} - -static int -stack_double(OnigStackType** arg_stk_base, OnigStackType** arg_stk_end, - OnigStackType** arg_stk, OnigStackType* stk_alloc, OnigMatchArg* msa) -{ - size_t n; - OnigStackType *x, *stk_base, *stk_end, *stk; - - stk_base = *arg_stk_base; - stk_end = *arg_stk_end; - stk = *arg_stk; - - n = stk_end - stk_base; - if (stk_base == stk_alloc && IS_NULL(msa->stack_p)) { - x = (OnigStackType* )xmalloc(sizeof(OnigStackType) * n * 2); - if (IS_NULL(x)) { - STACK_SAVE; - return ONIGERR_MEMORY; - } - xmemcpy(x, stk_base, n * sizeof(OnigStackType)); - n *= 2; - } - else { - unsigned int limit_size = MatchStackLimitSize; - n *= 2; - if (limit_size != 0 && n > limit_size) { - if ((unsigned int )(stk_end - stk_base) == limit_size) - return ONIGERR_MATCH_STACK_LIMIT_OVER; - else - n = limit_size; - } - x = (OnigStackType* )xrealloc(stk_base, sizeof(OnigStackType) * n); - if (IS_NULL(x)) { - STACK_SAVE; - return ONIGERR_MEMORY; - } - } - *arg_stk = x + (stk - stk_base); - *arg_stk_base = x; - *arg_stk_end = x + n; - return 0; -} - -#define STACK_ENSURE(n) do {\ - if (stk_end - stk < (n)) {\ - int r = stack_double(&stk_base, &stk_end, &stk, stk_alloc, msa);\ - if (r != 0) {\ - STACK_SAVE;\ - if (xmalloc_base) xfree(xmalloc_base);\ - return r;\ - }\ - }\ -} while(0) - -#define STACK_AT(index) (stk_base + (index)) -#define GET_STACK_INDEX(stk) ((stk) - stk_base) - -#define STACK_PUSH_TYPE(stack_type) do {\ - STACK_ENSURE(1);\ - stk->type = (stack_type);\ - STACK_INC;\ -} while(0) - -#define IS_TO_VOID_TARGET(stk) (((stk)->type & STK_MASK_TO_VOID_TARGET) != 0) - -#ifdef USE_COMBINATION_EXPLOSION_CHECK -# define STATE_CHECK_POS(s,snum) \ - (((s) - str) * num_comb_exp_check + ((snum) - 1)) -# define STATE_CHECK_VAL(v,snum) do {\ - if (state_check_buff != NULL) {\ - int x = STATE_CHECK_POS(s,snum);\ - (v) = state_check_buff[x/8] & (1<<(x%8));\ - }\ - else (v) = 0;\ -} while(0) - - -# 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)); \ - } - -# define STACK_PUSH(stack_type,pat,s,sprev,keep) do {\ - STACK_ENSURE(1);\ - stk->type = (stack_type);\ - stk->u.state.pcode = (pat);\ - stk->u.state.pstr = (s);\ - stk->u.state.pstr_prev = (sprev);\ - stk->u.state.state_check = 0;\ - stk->u.state.pkeep = (keep);\ - STACK_INC;\ -} while(0) - -# define STACK_PUSH_ENSURED(stack_type,pat) do {\ - stk->type = (stack_type);\ - stk->u.state.pcode = (pat);\ - stk->u.state.state_check = 0;\ - STACK_INC;\ -} while(0) - -# define STACK_PUSH_ALT_WITH_STATE_CHECK(pat,s,sprev,snum,keep) do {\ - STACK_ENSURE(1);\ - stk->type = STK_ALT;\ - stk->u.state.pcode = (pat);\ - stk->u.state.pstr = (s);\ - stk->u.state.pstr_prev = (sprev);\ - stk->u.state.state_check = ((state_check_buff != NULL) ? (snum) : 0);\ - stk->u.state.pkeep = (keep);\ - STACK_INC;\ -} while(0) - -# define STACK_PUSH_STATE_CHECK(s,snum) do {\ - if (state_check_buff != NULL) {\ - STACK_ENSURE(1);\ - stk->type = STK_STATE_CHECK_MARK;\ - stk->u.state.pstr = (s);\ - stk->u.state.state_check = (snum);\ - STACK_INC;\ - }\ -} while(0) - -#else /* USE_COMBINATION_EXPLOSION_CHECK */ - -# define ELSE_IF_STATE_CHECK_MARK(stk) - -# define STACK_PUSH(stack_type,pat,s,sprev,keep) do {\ - STACK_ENSURE(1);\ - stk->type = (stack_type);\ - stk->u.state.pcode = (pat);\ - stk->u.state.pstr = (s);\ - stk->u.state.pstr_prev = (sprev);\ - stk->u.state.pkeep = (keep);\ - STACK_INC;\ -} while(0) - -# define STACK_PUSH_ENSURED(stack_type,pat) do {\ - stk->type = (stack_type);\ - stk->u.state.pcode = (pat);\ - STACK_INC;\ -} while(0) -#endif /* USE_COMBINATION_EXPLOSION_CHECK */ - -#define STACK_PUSH_ALT(pat,s,sprev,keep) STACK_PUSH(STK_ALT,pat,s,sprev,keep) -#define STACK_PUSH_POS(s,sprev,keep) STACK_PUSH(STK_POS,NULL_UCHARP,s,sprev,keep) -#define STACK_PUSH_POS_NOT(pat,s,sprev,keep) STACK_PUSH(STK_POS_NOT,pat,s,sprev,keep) -#define STACK_PUSH_ABSENT STACK_PUSH_TYPE(STK_ABSENT) -#define STACK_PUSH_STOP_BT STACK_PUSH_TYPE(STK_STOP_BT) -#define STACK_PUSH_LOOK_BEHIND_NOT(pat,s,sprev,keep) \ - STACK_PUSH(STK_LOOK_BEHIND_NOT,pat,s,sprev,keep) - -#define STACK_PUSH_REPEAT(id, pat) do {\ - STACK_ENSURE(1);\ - stk->type = STK_REPEAT;\ - stk->u.repeat.num = (id);\ - stk->u.repeat.pcode = (pat);\ - stk->u.repeat.count = 0;\ - STACK_INC;\ -} while(0) - -#define STACK_PUSH_REPEAT_INC(sindex) do {\ - STACK_ENSURE(1);\ - stk->type = STK_REPEAT_INC;\ - stk->u.repeat_inc.si = (sindex);\ - STACK_INC;\ -} while(0) - -#define STACK_PUSH_MEM_START(mnum, s) do {\ - STACK_ENSURE(1);\ - stk->type = STK_MEM_START;\ - stk->u.mem.num = (mnum);\ - stk->u.mem.pstr = (s);\ - stk->u.mem.start = mem_start_stk[mnum];\ - stk->u.mem.end = mem_end_stk[mnum];\ - mem_start_stk[mnum] = GET_STACK_INDEX(stk);\ - mem_end_stk[mnum] = INVALID_STACK_INDEX;\ - STACK_INC;\ -} while(0) - -#define STACK_PUSH_MEM_END(mnum, s) do {\ - STACK_ENSURE(1);\ - stk->type = STK_MEM_END;\ - stk->u.mem.num = (mnum);\ - stk->u.mem.pstr = (s);\ - stk->u.mem.start = mem_start_stk[mnum];\ - stk->u.mem.end = mem_end_stk[mnum];\ - mem_end_stk[mnum] = GET_STACK_INDEX(stk);\ - STACK_INC;\ -} while(0) - -#define STACK_PUSH_MEM_END_MARK(mnum) do {\ - STACK_ENSURE(1);\ - stk->type = STK_MEM_END_MARK;\ - stk->u.mem.num = (mnum);\ - STACK_INC;\ -} while(0) - -#define STACK_GET_MEM_START(mnum, k) do {\ - int level = 0;\ - k = stk;\ - while (k > stk_base) {\ - k--;\ - if ((k->type & STK_MASK_MEM_END_OR_MARK) != 0 \ - && k->u.mem.num == (mnum)) {\ - level++;\ - }\ - else if (k->type == STK_MEM_START && k->u.mem.num == (mnum)) {\ - if (level == 0) break;\ - level--;\ - }\ - }\ -} while(0) - -#define STACK_GET_MEM_RANGE(k, mnum, start, end) do {\ - int level = 0;\ - while (k < stk) {\ - if (k->type == STK_MEM_START && k->u.mem.num == (mnum)) {\ - if (level == 0) (start) = k->u.mem.pstr;\ - level++;\ - }\ - else if (k->type == STK_MEM_END && k->u.mem.num == (mnum)) {\ - level--;\ - if (level == 0) {\ - (end) = k->u.mem.pstr;\ - break;\ - }\ - }\ - k++;\ - }\ -} while(0) - -#define STACK_PUSH_NULL_CHECK_START(cnum, s) do {\ - STACK_ENSURE(1);\ - stk->type = STK_NULL_CHECK_START;\ - stk->u.null_check.num = (cnum);\ - stk->u.null_check.pstr = (s);\ - STACK_INC;\ -} while(0) - -#define STACK_PUSH_NULL_CHECK_END(cnum) do {\ - STACK_ENSURE(1);\ - stk->type = STK_NULL_CHECK_END;\ - stk->u.null_check.num = (cnum);\ - STACK_INC;\ -} while(0) - -#define STACK_PUSH_CALL_FRAME(pat) do {\ - STACK_ENSURE(1);\ - stk->type = STK_CALL_FRAME;\ - stk->u.call_frame.ret_addr = (pat);\ - STACK_INC;\ -} while(0) - -#define STACK_PUSH_RETURN do {\ - STACK_ENSURE(1);\ - stk->type = STK_RETURN;\ - STACK_INC;\ -} while(0) - -#define STACK_PUSH_ABSENT_POS(start, end) do {\ - STACK_ENSURE(1);\ - stk->type = STK_ABSENT_POS;\ - stk->u.absent_pos.abs_pstr = (start);\ - stk->u.absent_pos.end_pstr = (end);\ - STACK_INC;\ -} while(0) - - -#ifdef ONIG_DEBUG -# define STACK_BASE_CHECK(p, at) \ - if ((p) < stk_base) {\ - fprintf(stderr, "at %s\n", at);\ - goto stack_error;\ - } -#else -# define STACK_BASE_CHECK(p, at) -#endif - -#define STACK_POP_ONE do {\ - stk--;\ - STACK_BASE_CHECK(stk, "STACK_POP_ONE"); \ -} while(0) - -#define STACK_POP do {\ - switch (pop_level) {\ - case STACK_POP_LEVEL_FREE:\ - while (1) {\ - stk--;\ - STACK_BASE_CHECK(stk, "STACK_POP"); \ - if ((stk->type & STK_MASK_POP_USED) != 0) break;\ - ELSE_IF_STATE_CHECK_MARK(stk);\ - }\ - break;\ - case STACK_POP_LEVEL_MEM_START:\ - while (1) {\ - stk--;\ - 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;\ - }\ - ELSE_IF_STATE_CHECK_MARK(stk);\ - }\ - break;\ - default:\ - while (1) {\ - stk--;\ - 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;\ - }\ - 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;\ - }\ - ELSE_IF_STATE_CHECK_MARK(stk);\ - }\ - break;\ - }\ -} while(0) - -#define STACK_POP_TIL_POS_NOT do {\ - while (1) {\ - stk--;\ - STACK_BASE_CHECK(stk, "STACK_POP_TIL_POS_NOT"); \ - if (stk->type == STK_POS_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;\ - }\ - 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;\ - }\ - ELSE_IF_STATE_CHECK_MARK(stk);\ - }\ -} while(0) - -#define STACK_POP_TIL_LOOK_BEHIND_NOT do {\ - while (1) {\ - stk--;\ - STACK_BASE_CHECK(stk, "STACK_POP_TIL_LOOK_BEHIND_NOT"); \ - if (stk->type == STK_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;\ - }\ - 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;\ - }\ - ELSE_IF_STATE_CHECK_MARK(stk);\ - }\ -} while(0) - -#define STACK_POP_TIL_ABSENT do {\ - while (1) {\ - stk--;\ - STACK_BASE_CHECK(stk, "STACK_POP_TIL_ABSENT"); \ - if (stk->type == STK_ABSENT) 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;\ - }\ - 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;\ - }\ - ELSE_IF_STATE_CHECK_MARK(stk);\ - }\ -} while(0) - -#define STACK_POP_ABSENT_POS(start, end) do {\ - stk--;\ - STACK_BASE_CHECK(stk, "STACK_POP_ABSENT_POS"); \ - (start) = stk->u.absent_pos.abs_pstr;\ - (end) = stk->u.absent_pos.end_pstr;\ -} while(0) - -#define STACK_POS_END(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_BT_END do {\ - OnigStackType *k = stk;\ - while (1) {\ - k--;\ - STACK_BASE_CHECK(k, "STACK_STOP_BT_END"); \ - if (IS_TO_VOID_TARGET(k)) {\ - k->type = STK_VOID;\ - }\ - else if (k->type == STK_STOP_BT) {\ - k->type = STK_VOID;\ - break;\ - }\ - }\ -} while(0) - -#define STACK_NULL_CHECK(isnull,id,s) do {\ - OnigStackType* k = stk;\ - while (1) {\ - k--;\ - STACK_BASE_CHECK(k, "STACK_NULL_CHECK"); \ - if (k->type == STK_NULL_CHECK_START) {\ - if (k->u.null_check.num == (id)) {\ - (isnull) = (k->u.null_check.pstr == (s));\ - break;\ - }\ - }\ - }\ -} while(0) - -#define STACK_NULL_CHECK_REC(isnull,id,s) do {\ - int level = 0;\ - OnigStackType* k = stk;\ - while (1) {\ - k--;\ - STACK_BASE_CHECK(k, "STACK_NULL_CHECK_REC"); \ - if (k->type == STK_NULL_CHECK_START) {\ - if (k->u.null_check.num == (id)) {\ - if (level == 0) {\ - (isnull) = (k->u.null_check.pstr == (s));\ - break;\ - }\ - else level--;\ - }\ - }\ - else if (k->type == STK_NULL_CHECK_END) {\ - level++;\ - }\ - }\ -} while(0) - -#define STACK_NULL_CHECK_MEMST(isnull,id,s,reg) do {\ - OnigStackType* k = stk;\ - while (1) {\ - k--;\ - STACK_BASE_CHECK(k, "STACK_NULL_CHECK_MEMST"); \ - if (k->type == STK_NULL_CHECK_START) {\ - if (k->u.null_check.num == (id)) {\ - if (k->u.null_check.pstr != (s)) {\ - (isnull) = 0;\ - break;\ - }\ - else {\ - UChar* endp;\ - (isnull) = 1;\ - while (k < stk) {\ - if (k->type == STK_MEM_START) {\ - if (k->u.mem.end == INVALID_STACK_INDEX) {\ - (isnull) = 0; break;\ - }\ - if (BIT_STATUS_AT(reg->bt_mem_end, k->u.mem.num))\ - endp = STACK_AT(k->u.mem.end)->u.mem.pstr;\ - else\ - endp = (UChar* )k->u.mem.end;\ - if (STACK_AT(k->u.mem.start)->u.mem.pstr != endp) {\ - (isnull) = 0; break;\ - }\ - else if (endp != s) {\ - (isnull) = -1; /* empty, but position changed */ \ - }\ - }\ - k++;\ - }\ - break;\ - }\ - }\ - }\ - }\ -} while(0) - -#define STACK_NULL_CHECK_MEMST_REC(isnull,id,s,reg) do {\ - int level = 0;\ - OnigStackType* k = stk;\ - while (1) {\ - k--;\ - STACK_BASE_CHECK(k, "STACK_NULL_CHECK_MEMST_REC"); \ - if (k->type == STK_NULL_CHECK_START) {\ - if (k->u.null_check.num == (id)) {\ - if (level == 0) {\ - if (k->u.null_check.pstr != (s)) {\ - (isnull) = 0;\ - break;\ - }\ - else {\ - UChar* endp;\ - (isnull) = 1;\ - while (k < stk) {\ - if (k->type == STK_MEM_START) {\ - if (k->u.mem.end == INVALID_STACK_INDEX) {\ - (isnull) = 0; break;\ - }\ - if (BIT_STATUS_AT(reg->bt_mem_end, k->u.mem.num))\ - endp = STACK_AT(k->u.mem.end)->u.mem.pstr;\ - else\ - endp = (UChar* )k->u.mem.end;\ - if (STACK_AT(k->u.mem.start)->u.mem.pstr != endp) {\ - (isnull) = 0; break;\ - }\ - else if (endp != s) {\ - (isnull) = -1; /* empty, but position changed */ \ - }\ - }\ - k++;\ - }\ - break;\ - }\ - }\ - else {\ - level--;\ - }\ - }\ - }\ - else if (k->type == STK_NULL_CHECK_END) {\ - if (k->u.null_check.num == (id)) level++;\ - }\ - }\ -} while(0) - -#define STACK_GET_REPEAT(id, k) do {\ - int level = 0;\ - k = stk;\ - while (1) {\ - k--;\ - STACK_BASE_CHECK(k, "STACK_GET_REPEAT"); \ - if (k->type == STK_REPEAT) {\ - if (level == 0) {\ - if (k->u.repeat.num == (id)) {\ - break;\ - }\ - }\ - }\ - else if (k->type == STK_CALL_FRAME) level--;\ - else if (k->type == STK_RETURN) level++;\ - }\ -} while(0) - -#define STACK_RETURN(addr) do {\ - int level = 0;\ - OnigStackType* k = stk;\ - while (1) {\ - k--;\ - STACK_BASE_CHECK(k, "STACK_RETURN"); \ - if (k->type == STK_CALL_FRAME) {\ - if (level == 0) {\ - (addr) = k->u.call_frame.ret_addr;\ - break;\ - }\ - else level--;\ - }\ - else if (k->type == STK_RETURN)\ - level++;\ - }\ -} while(0) - - -#define STRING_CMP(s1,s2,len) do {\ - while (len-- > 0) {\ - if (*s1++ != *s2++) goto fail;\ - }\ -} while(0) - -#define STRING_CMP_IC(case_fold_flag,s1,ps2,len,text_end) do {\ - if (string_cmp_ic(encode, case_fold_flag, s1, ps2, len, text_end) == 0) \ - goto fail; \ -} while(0) - -static int string_cmp_ic(OnigEncoding enc, int case_fold_flag, - UChar* s1, UChar** ps2, OnigDistance mblen, const UChar* text_end) -{ - UChar buf1[ONIGENC_MBC_CASE_FOLD_MAXLEN]; - UChar buf2[ONIGENC_MBC_CASE_FOLD_MAXLEN]; - UChar *p1, *p2, *end1, *s2; - int len1, len2; - - s2 = *ps2; - end1 = s1 + mblen; - while (s1 < end1) { - len1 = ONIGENC_MBC_CASE_FOLD(enc, case_fold_flag, &s1, text_end, buf1); - len2 = ONIGENC_MBC_CASE_FOLD(enc, case_fold_flag, &s2, text_end, buf2); - if (len1 != len2) return 0; - p1 = buf1; - p2 = buf2; - while (len1-- > 0) { - if (*p1 != *p2) return 0; - p1++; - p2++; - } - } - - *ps2 = s2; - return 1; -} - -#define STRING_CMP_VALUE(s1,s2,len,is_fail) do {\ - is_fail = 0;\ - while (len-- > 0) {\ - if (*s1++ != *s2++) {\ - is_fail = 1; break;\ - }\ - }\ -} while(0) - -#define STRING_CMP_VALUE_IC(case_fold_flag,s1,ps2,len,text_end,is_fail) do {\ - if (string_cmp_ic(encode, case_fold_flag, s1, ps2, len, text_end) == 0) \ - is_fail = 1; \ - else \ - is_fail = 0; \ -} while(0) - - -#define IS_EMPTY_STR (str == end) -#define ON_STR_BEGIN(s) ((s) == str) -#define ON_STR_END(s) ((s) == end) -#ifdef USE_MATCH_RANGE_MUST_BE_INSIDE_OF_SPECIFIED_RANGE -# define DATA_ENSURE_CHECK1 (s < right_range) -# define DATA_ENSURE_CHECK(n) (s + (n) <= right_range) -# define DATA_ENSURE(n) if (s + (n) > right_range) goto fail -# define ABSENT_END_POS right_range -#else -# define DATA_ENSURE_CHECK1 (s < end) -# define DATA_ENSURE_CHECK(n) (s + (n) <= end) -# define DATA_ENSURE(n) if (s + (n) > end) goto fail -# define ABSENT_END_POS end -#endif /* USE_MATCH_RANGE_MUST_BE_INSIDE_OF_SPECIFIED_RANGE */ - - -#ifdef USE_CAPTURE_HISTORY -static int -make_capture_history_tree(OnigCaptureTreeNode* node, OnigStackType** kp, - OnigStackType* stk_top, UChar* str, regex_t* reg) -{ - int n, r; - OnigCaptureTreeNode* child; - OnigStackType* k = *kp; - - while (k < stk_top) { - if (k->type == STK_MEM_START) { - n = k->u.mem.num; - if (n <= ONIG_MAX_CAPTURE_HISTORY_GROUP && - BIT_STATUS_AT(reg->capture_history, n) != 0) { - child = history_node_new(); - CHECK_NULL_RETURN_MEMERR(child); - child->group = n; - child->beg = k->u.mem.pstr - str; - r = history_tree_add_child(node, child); - if (r != 0) { - history_tree_free(child); - return r; - } - *kp = (k + 1); - r = make_capture_history_tree(child, kp, stk_top, str, reg); - if (r != 0) return r; - - k = *kp; - child->end = k->u.mem.pstr - str; - } - } - else if (k->type == STK_MEM_END) { - if (k->u.mem.num == node->group) { - node->end = k->u.mem.pstr - str; - *kp = k; - return 0; - } - } - k++; - } - - return 1; /* 1: root node ending. */ -} -#endif /* USE_CAPTURE_HISTORY */ - -#ifdef USE_BACKREF_WITH_LEVEL -static int mem_is_in_memp(int mem, int num, UChar* memp) -{ - int i; - MemNumType m; - - for (i = 0; i < num; i++) { - GET_MEMNUM_INC(m, memp); - if (mem == (int )m) return 1; - } - return 0; -} - -static int backref_match_at_nested_level(regex_t* reg, - OnigStackType* top, OnigStackType* 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; - OnigStackType* k; - - level = 0; - k = top; - k--; - while (k >= stk_base) { - if (k->type == STK_CALL_FRAME) { - level--; - } - else if (k->type == STK_RETURN) { - level++; - } - else if (level == nest) { - if (k->type == STK_MEM_START) { - if (mem_is_in_memp(k->u.mem.num, mem_num, memp)) { - pstart = k->u.mem.pstr; - if (pend != NULL_UCHARP) { - if (pend - pstart > send - *s) return 0; /* or goto next_mem; */ - p = pstart; - ss = *s; - - if (ignore_case != 0) { - if (string_cmp_ic(reg->enc, case_fold_flag, - pstart, &ss, pend - pstart, send) == 0) - return 0; /* or goto next_mem; */ - } - else { - while (p < pend) { - if (*p++ != *ss++) return 0; /* or goto next_mem; */ - } - } - - *s = ss; - return 1; - } - } - } - else if (k->type == STK_MEM_END) { - if (mem_is_in_memp(k->u.mem.num, mem_num, memp)) { - pend = k->u.mem.pstr; - } - } - } - k--; - } - - return 0; -} -#endif /* USE_BACKREF_WITH_LEVEL */ - - -#ifdef ONIG_DEBUG_STATISTICS - -# ifdef _WIN32 -# include -static LARGE_INTEGER ts, te, freq; -# define GETTIME(t) QueryPerformanceCounter(&(t)) -# define TIMEDIFF(te,ts) (unsigned long )(((te).QuadPart - (ts).QuadPart) \ - * 1000000 / freq.QuadPart) -# else /* _WIN32 */ - -# define USE_TIMEOFDAY - -# ifdef USE_TIMEOFDAY -# ifdef HAVE_SYS_TIME_H -# include -# endif -# ifdef HAVE_UNISTD_H -# include -# endif -static struct timeval ts, te; -# define GETTIME(t) gettimeofday(&(t), (struct timezone* )0) -# define TIMEDIFF(te,ts) (((te).tv_usec - (ts).tv_usec) + \ - (((te).tv_sec - (ts).tv_sec)*1000000)) -# else /* USE_TIMEOFDAY */ -# ifdef HAVE_SYS_TIMES_H -# include -# endif -static struct tms ts, te; -# define GETTIME(t) times(&(t)) -# define TIMEDIFF(te,ts) ((te).tms_utime - (ts).tms_utime) -# endif /* USE_TIMEOFDAY */ - -# endif /* _WIN32 */ - -static int OpCounter[256]; -static int OpPrevCounter[256]; -static unsigned long OpTime[256]; -static int OpCurr = OP_FINISH; -static int OpPrevTarget = OP_FAIL; -static int MaxStackDepth = 0; - -# define MOP_IN(opcode) do {\ - if (opcode == OpPrevTarget) OpPrevCounter[OpCurr]++;\ - OpCurr = opcode;\ - OpCounter[opcode]++;\ - GETTIME(ts);\ -} while(0) - -# define MOP_OUT do {\ - GETTIME(te);\ - OpTime[OpCurr] += TIMEDIFF(te, ts);\ -} while(0) - -extern void -onig_statistics_init(void) -{ - int i; - for (i = 0; i < 256; i++) { - OpCounter[i] = OpPrevCounter[i] = 0; OpTime[i] = 0; - } - MaxStackDepth = 0; -# ifdef _WIN32 - QueryPerformanceFrequency(&freq); -# endif -} - -extern void -onig_print_statistics(FILE* f) -{ - int i; - fprintf(f, " count prev time\n"); - for (i = 0; OnigOpInfo[i].opcode >= 0; i++) { - fprintf(f, "%8d: %8d: %10lu: %s\n", - OpCounter[i], OpPrevCounter[i], OpTime[i], OnigOpInfo[i].name); - } - fprintf(f, "\nmax stack depth: %d\n", MaxStackDepth); -} - -# define STACK_INC do {\ - stk++;\ - if (stk - stk_base > MaxStackDepth) \ - MaxStackDepth = stk - stk_base;\ -} while(0) - -#else /* ONIG_DEBUG_STATISTICS */ -# define STACK_INC stk++ - -# define MOP_IN(opcode) -# define MOP_OUT -#endif /* ONIG_DEBUG_STATISTICS */ - - -#ifdef ONIG_DEBUG_MATCH -static char * -stack_type_str(int stack_type) -{ - switch (stack_type) { - case STK_ALT: return "Alt "; - case STK_LOOK_BEHIND_NOT: return "LBNot "; - case STK_POS_NOT: return "PosNot"; - case STK_MEM_START: return "MemS "; - case STK_MEM_END: return "MemE "; - case STK_REPEAT_INC: return "RepInc"; - case STK_STATE_CHECK_MARK: return "StChMk"; - case STK_NULL_CHECK_START: return "NulChS"; - case STK_NULL_CHECK_END: return "NulChE"; - case STK_MEM_END_MARK: return "MemEMk"; - case STK_POS: return "Pos "; - case STK_STOP_BT: return "StopBt"; - case STK_REPEAT: return "Rep "; - case STK_CALL_FRAME: return "Call "; - case STK_RETURN: return "Ret "; - case STK_VOID: return "Void "; - case STK_ABSENT_POS: return "AbsPos"; - case STK_ABSENT: return "Absent"; - default: return " "; - } -} -#endif - -/* match data(str - end) from position (sstart). */ -/* if sstart == str then set sprev to NULL. */ -static OnigPosition -match_at(regex_t* reg, const UChar* str, const UChar* end, -#ifdef USE_MATCH_RANGE_MUST_BE_INSIDE_OF_SPECIFIED_RANGE - const UChar* right_range, -#endif - const UChar* sstart, UChar* sprev, OnigMatchArg* msa) -{ - static const UChar FinishCode[] = { OP_FINISH }; - - int i, num_mem, pop_level; - ptrdiff_t n, best_len; - LengthType tlen, tlen2; - MemNumType mem; - RelAddrType addr; - OnigOptionType option = reg->options; - OnigEncoding encode = reg->enc; - OnigCaseFoldType case_fold_flag = reg->case_fold_flag; - UChar *s, *q, *sbegin; - UChar *p = reg->p; - UChar *pkeep; - char *alloca_base; - char *xmalloc_base = NULL; - OnigStackType *stk_alloc, *stk_base, *stk, *stk_end; - OnigStackType *stkp; /* used as any purpose. */ - OnigStackIndex si; - OnigStackIndex *repeat_stk; - OnigStackIndex *mem_start_stk, *mem_end_stk; -#ifdef USE_COMBINATION_EXPLOSION_CHECK - int scv; - unsigned char* state_check_buff = msa->state_check_buff; - int num_comb_exp_check = reg->num_comb_exp_check; -#endif - -#if USE_TOKEN_THREADED_VM -# define OP_OFFSET 1 -# define VM_LOOP JUMP; -# define VM_LOOP_END -# define CASE(x) L_##x: sbegin = s; OPCODE_EXEC_HOOK; -# define DEFAULT L_DEFAULT: -# define NEXT sprev = sbegin; JUMP -# define JUMP goto *oplabels[*p++] - - static const void *oplabels[] = { - &&L_OP_FINISH, /* matching process terminator (no more alternative) */ - &&L_OP_END, /* pattern code terminator (success end) */ - - &&L_OP_EXACT1, /* single byte, N = 1 */ - &&L_OP_EXACT2, /* single byte, N = 2 */ - &&L_OP_EXACT3, /* single byte, N = 3 */ - &&L_OP_EXACT4, /* single byte, N = 4 */ - &&L_OP_EXACT5, /* single byte, N = 5 */ - &&L_OP_EXACTN, /* single byte */ - &&L_OP_EXACTMB2N1, /* mb-length = 2 N = 1 */ - &&L_OP_EXACTMB2N2, /* mb-length = 2 N = 2 */ - &&L_OP_EXACTMB2N3, /* mb-length = 2 N = 3 */ - &&L_OP_EXACTMB2N, /* mb-length = 2 */ - &&L_OP_EXACTMB3N, /* mb-length = 3 */ - &&L_OP_EXACTMBN, /* other length */ - - &&L_OP_EXACT1_IC, /* single byte, N = 1, ignore case */ - &&L_OP_EXACTN_IC, /* single byte, ignore case */ - - &&L_OP_CCLASS, - &&L_OP_CCLASS_MB, - &&L_OP_CCLASS_MIX, - &&L_OP_CCLASS_NOT, - &&L_OP_CCLASS_MB_NOT, - &&L_OP_CCLASS_MIX_NOT, - - &&L_OP_ANYCHAR, /* "." */ - &&L_OP_ANYCHAR_ML, /* "." multi-line */ - &&L_OP_ANYCHAR_STAR, /* ".*" */ - &&L_OP_ANYCHAR_ML_STAR, /* ".*" multi-line */ - &&L_OP_ANYCHAR_STAR_PEEK_NEXT, - &&L_OP_ANYCHAR_ML_STAR_PEEK_NEXT, - - &&L_OP_WORD, - &&L_OP_NOT_WORD, - &&L_OP_WORD_BOUND, - &&L_OP_NOT_WORD_BOUND, -# ifdef USE_WORD_BEGIN_END - &&L_OP_WORD_BEGIN, - &&L_OP_WORD_END, -# else - &&L_DEFAULT, - &&L_DEFAULT, -# endif - &&L_OP_ASCII_WORD, - &&L_OP_NOT_ASCII_WORD, - &&L_OP_ASCII_WORD_BOUND, - &&L_OP_NOT_ASCII_WORD_BOUND, -# ifdef USE_WORD_BEGIN_END - &&L_OP_ASCII_WORD_BEGIN, - &&L_OP_ASCII_WORD_END, -# else - &&L_DEFAULT, - &&L_DEFAULT, -# endif - - &&L_OP_BEGIN_BUF, - &&L_OP_END_BUF, - &&L_OP_BEGIN_LINE, - &&L_OP_END_LINE, - &&L_OP_SEMI_END_BUF, - &&L_OP_BEGIN_POSITION, - - &&L_OP_BACKREF1, - &&L_OP_BACKREF2, - &&L_OP_BACKREFN, - &&L_OP_BACKREFN_IC, - &&L_OP_BACKREF_MULTI, - &&L_OP_BACKREF_MULTI_IC, -# ifdef USE_BACKREF_WITH_LEVEL - &&L_OP_BACKREF_WITH_LEVEL, /* \k, \k */ -# else - &&L_DEFAULT, -# endif - &&L_OP_MEMORY_START, - &&L_OP_MEMORY_START_PUSH, /* push back-tracker to stack */ - &&L_OP_MEMORY_END_PUSH, /* push back-tracker to stack */ -# ifdef USE_SUBEXP_CALL - &&L_OP_MEMORY_END_PUSH_REC, /* push back-tracker to stack */ -# else - &&L_DEFAULT, -# endif - &&L_OP_MEMORY_END, -# ifdef USE_SUBEXP_CALL - &&L_OP_MEMORY_END_REC, /* push marker to stack */ -# else - &&L_DEFAULT, -# endif - - &&L_OP_KEEP, - - &&L_OP_FAIL, /* pop stack and move */ - &&L_OP_JUMP, - &&L_OP_PUSH, - &&L_OP_POP, -# ifdef USE_OP_PUSH_OR_JUMP_EXACT - &&L_OP_PUSH_OR_JUMP_EXACT1, /* if match exact then push, else jump. */ -# else - &&L_DEFAULT, -# endif - &&L_OP_PUSH_IF_PEEK_NEXT, /* if match exact then push, else none. */ - &&L_OP_REPEAT, /* {n,m} */ - &&L_OP_REPEAT_NG, /* {n,m}? (non greedy) */ - &&L_OP_REPEAT_INC, - &&L_OP_REPEAT_INC_NG, /* non greedy */ - &&L_OP_REPEAT_INC_SG, /* search and get in stack */ - &&L_OP_REPEAT_INC_NG_SG, /* search and get in stack (non greedy) */ - &&L_OP_NULL_CHECK_START, /* null loop checker start */ - &&L_OP_NULL_CHECK_END, /* null loop checker end */ -# ifdef USE_MONOMANIAC_CHECK_CAPTURES_IN_ENDLESS_REPEAT - &&L_OP_NULL_CHECK_END_MEMST, /* null loop checker end (with capture status) */ -# else - &&L_DEFAULT, -# endif -# ifdef USE_SUBEXP_CALL - &&L_OP_NULL_CHECK_END_MEMST_PUSH, /* with capture status and push check-end */ -# else - &&L_DEFAULT, -# endif - - &&L_OP_PUSH_POS, /* (?=...) start */ - &&L_OP_POP_POS, /* (?=...) end */ - &&L_OP_PUSH_POS_NOT, /* (?!...) start */ - &&L_OP_FAIL_POS, /* (?!...) end */ - &&L_OP_PUSH_STOP_BT, /* (?>...) start */ - &&L_OP_POP_STOP_BT, /* (?>...) end */ - &&L_OP_LOOK_BEHIND, /* (?<=...) start (no needs end opcode) */ - &&L_OP_PUSH_LOOK_BEHIND_NOT, /* (? */ - &&L_OP_RETURN, -# else - &&L_DEFAULT, - &&L_DEFAULT, -# endif - &&L_OP_CONDITION, - -# ifdef USE_COMBINATION_EXPLOSION_CHECK - &&L_OP_STATE_CHECK_PUSH, /* combination explosion check and push */ - &&L_OP_STATE_CHECK_PUSH_OR_JUMP, /* check ok -> push, else jump */ - &&L_OP_STATE_CHECK, /* check only */ -# else - &&L_DEFAULT, - &&L_DEFAULT, - &&L_DEFAULT, -# endif -# ifdef USE_COMBINATION_EXPLOSION_CHECK - &&L_OP_STATE_CHECK_ANYCHAR_STAR, - &&L_OP_STATE_CHECK_ANYCHAR_ML_STAR, -# else - &&L_DEFAULT, - &&L_DEFAULT, -# endif - /* no need: IS_DYNAMIC_OPTION() == 0 */ -# if 0 /* no need: IS_DYNAMIC_OPTION() == 0 */ - &&L_OP_SET_OPTION_PUSH, /* set option and push recover option */ - &&L_OP_SET_OPTION /* set option */ -# else - &&L_DEFAULT, - &&L_DEFAULT -# endif - }; -#else /* USE_TOKEN_THREADED_VM */ - -# define OP_OFFSET 0 -# define VM_LOOP \ - while (1) { \ - OPCODE_EXEC_HOOK; \ - sbegin = s; \ - switch (*p++) { -# define VM_LOOP_END } sprev = sbegin; } -# define CASE(x) case x: -# define DEFAULT default: -# define NEXT break -# define JUMP continue; break -#endif /* USE_TOKEN_THREADED_VM */ - - -#ifdef USE_SUBEXP_CALL -/* Stack #0 is used to store the pattern itself and used for (?R), \g<0>, - etc. Additional space is required. */ -# define ADD_NUMMEM 1 -#else -/* Stack #0 not is used. */ -# define ADD_NUMMEM 0 -#endif - - n = reg->num_repeat + (reg->num_mem + ADD_NUMMEM) * 2; - - STACK_INIT(alloca_base, xmalloc_base, n, INIT_MATCH_STACK_SIZE); - pop_level = reg->stack_pop_level; - num_mem = reg->num_mem; - repeat_stk = (OnigStackIndex* )alloca_base; - - mem_start_stk = (OnigStackIndex* )(repeat_stk + reg->num_repeat); - mem_end_stk = mem_start_stk + (num_mem + ADD_NUMMEM); - { - OnigStackIndex *pp = mem_start_stk; - for (; pp < repeat_stk + n; pp += 2) { - pp[0] = INVALID_STACK_INDEX; - pp[1] = INVALID_STACK_INDEX; - } - } -#ifndef USE_SUBEXP_CALL - mem_start_stk--; /* for index start from 1, - mem_start_stk[1]..mem_start_stk[num_mem] */ - mem_end_stk--; /* for index start from 1, - mem_end_stk[1]..mem_end_stk[num_mem] */ -#endif - -#ifdef ONIG_DEBUG_MATCH - fprintf(stderr, "match_at: str: %"PRIuPTR" (%p), end: %"PRIuPTR" (%p), start: %"PRIuPTR" (%p), sprev: %"PRIuPTR" (%p)\n", - (uintptr_t )str, str, (uintptr_t )end, end, (uintptr_t )sstart, sstart, (uintptr_t )sprev, sprev); - fprintf(stderr, "size: %d, start offset: %d\n", - (int )(end - str), (int )(sstart - str)); - fprintf(stderr, "\n ofs> str stk:type addr:opcode\n"); -#endif - - STACK_PUSH_ENSURED(STK_ALT, (UChar* )FinishCode); /* bottom stack */ - best_len = ONIG_MISMATCH; - s = (UChar* )sstart; - pkeep = (UChar* )sstart; - - -#ifdef ONIG_DEBUG_MATCH -# define OPCODE_EXEC_HOOK \ - if (s) { \ - UChar *op, *q, *bp, buf[50]; \ - int len; \ - op = p - OP_OFFSET; \ - fprintf(stderr, "%4"PRIdPTR"> \"", (*op == OP_FINISH) ? (ptrdiff_t )-1 : s - str); \ - bp = buf; \ - q = s; \ - if (*op != OP_FINISH) { /* s may not be a valid pointer if OP_FINISH. */ \ - for (i = 0; i < 7 && q < end; i++) { \ - len = enclen(encode, q, end); \ - while (len-- > 0) *bp++ = *q++; \ - } \ - if (q < end) { xmemcpy(bp, "...", 3); bp += 3; } \ - } \ - xmemcpy(bp, "\"", 1); bp += 1; \ - *bp = 0; \ - fputs((char* )buf, stderr); \ - for (i = 0; i < 20 - (bp - buf); i++) fputc(' ', stderr); \ - fprintf(stderr, "%4"PRIdPTR":%s %4"PRIdPTR":", \ - stk - stk_base - 1, \ - (stk > stk_base) ? stack_type_str(stk[-1].type) : " ", \ - (op == FinishCode) ? (ptrdiff_t )-1 : op - reg->p); \ - onig_print_compiled_byte_code(stderr, op, reg->p+reg->used, NULL, encode); \ - fprintf(stderr, "\n"); \ - } -#else -# define OPCODE_EXEC_HOOK ((void) 0) -#endif - - - VM_LOOP { - CASE(OP_END) MOP_IN(OP_END); - n = s - sstart; - if (n > best_len) { - OnigRegion* region; -#ifdef USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE - if (IS_FIND_LONGEST(option)) { - if (n > msa->best_len) { - msa->best_len = n; - msa->best_s = (UChar* )sstart; - } - else - goto end_best_len; - } -#endif - best_len = n; - region = msa->region; - if (region) { - region->beg[0] = ((pkeep > s) ? s : pkeep) - str; - region->end[0] = s - str; - for (i = 1; i <= num_mem; i++) { - if (mem_end_stk[i] != INVALID_STACK_INDEX) { - if (BIT_STATUS_AT(reg->bt_mem_start, i)) - region->beg[i] = STACK_AT(mem_start_stk[i])->u.mem.pstr - str; - else - region->beg[i] = (UChar* )((void* )mem_start_stk[i]) - str; - - region->end[i] = (BIT_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; - } - } - -#ifdef USE_CAPTURE_HISTORY - if (reg->capture_history != 0) { - int r; - OnigCaptureTreeNode* node; - - if (IS_NULL(region->history_root)) { - region->history_root = node = history_node_new(); - CHECK_NULL_RETURN_MEMERR(node); - } - else { - node = region->history_root; - history_tree_clear(node); - } - - node->group = 0; - node->beg = ((pkeep > s) ? s : pkeep) - str; - node->end = s - str; - - stkp = stk_base; - r = make_capture_history_tree(region->history_root, &stkp, - stk, (UChar* )str, reg); - if (r < 0) { - best_len = r; /* error code */ - goto finish; - } - } -#endif /* USE_CAPTURE_HISTORY */ - } /* if (region) */ - } /* n > best_len */ - -#ifdef USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE - end_best_len: -#endif - MOP_OUT; - - if (IS_FIND_CONDITION(option)) { - if (IS_FIND_NOT_EMPTY(option) && s == sstart) { - best_len = ONIG_MISMATCH; - goto fail; /* for retry */ - } - if (IS_FIND_LONGEST(option) && DATA_ENSURE_CHECK1) { - goto fail; /* for retry */ - } - } - - /* default behavior: return first-matching result. */ - goto finish; - NEXT; - - CASE(OP_EXACT1) MOP_IN(OP_EXACT1); -#if 0 - DATA_ENSURE(1); - if (*p != *s) goto fail; - p++; s++; -#endif - if (*p != *s++) goto fail; - DATA_ENSURE(0); - p++; - MOP_OUT; - NEXT; - - CASE(OP_EXACT1_IC) MOP_IN(OP_EXACT1_IC); - { - int len; - UChar *q, lowbuf[ONIGENC_MBC_CASE_FOLD_MAXLEN]; - - DATA_ENSURE(1); - len = ONIGENC_MBC_CASE_FOLD(encode, - /* DISABLE_CASE_FOLD_MULTI_CHAR(case_fold_flag), */ - case_fold_flag, - &s, end, lowbuf); - DATA_ENSURE(0); - q = lowbuf; - while (len-- > 0) { - if (*p != *q) { - goto fail; - } - p++; q++; - } - } - MOP_OUT; - NEXT; - - CASE(OP_EXACT2) MOP_IN(OP_EXACT2); - DATA_ENSURE(2); - if (*p != *s) goto fail; - p++; s++; - if (*p != *s) goto fail; - sprev = s; - p++; s++; - MOP_OUT; - JUMP; - - CASE(OP_EXACT3) MOP_IN(OP_EXACT3); - DATA_ENSURE(3); - if (*p != *s) goto fail; - p++; s++; - if (*p != *s) goto fail; - p++; s++; - if (*p != *s) goto fail; - sprev = s; - p++; s++; - MOP_OUT; - JUMP; - - CASE(OP_EXACT4) MOP_IN(OP_EXACT4); - DATA_ENSURE(4); - if (*p != *s) goto fail; - p++; s++; - if (*p != *s) goto fail; - p++; s++; - if (*p != *s) goto fail; - p++; s++; - if (*p != *s) goto fail; - sprev = s; - p++; s++; - MOP_OUT; - JUMP; - - CASE(OP_EXACT5) MOP_IN(OP_EXACT5); - DATA_ENSURE(5); - if (*p != *s) goto fail; - p++; s++; - if (*p != *s) goto fail; - p++; s++; - if (*p != *s) goto fail; - p++; s++; - if (*p != *s) goto fail; - p++; s++; - if (*p != *s) goto fail; - sprev = s; - p++; s++; - MOP_OUT; - JUMP; - - CASE(OP_EXACTN) MOP_IN(OP_EXACTN); - GET_LENGTH_INC(tlen, p); - DATA_ENSURE(tlen); - while (tlen-- > 0) { - if (*p++ != *s++) goto fail; - } - sprev = s - 1; - MOP_OUT; - JUMP; - - CASE(OP_EXACTN_IC) MOP_IN(OP_EXACTN_IC); - { - int len; - UChar *q, *endp, lowbuf[ONIGENC_MBC_CASE_FOLD_MAXLEN]; - - GET_LENGTH_INC(tlen, p); - endp = p + tlen; - - while (p < endp) { - sprev = s; - DATA_ENSURE(1); - len = ONIGENC_MBC_CASE_FOLD(encode, - /* DISABLE_CASE_FOLD_MULTI_CHAR(case_fold_flag), */ - case_fold_flag, - &s, end, lowbuf); - DATA_ENSURE(0); - q = lowbuf; - while (len-- > 0) { - if (*p != *q) goto fail; - p++; q++; - } - } - } - - MOP_OUT; - JUMP; - - CASE(OP_EXACTMB2N1) MOP_IN(OP_EXACTMB2N1); - DATA_ENSURE(2); - if (*p != *s) goto fail; - p++; s++; - if (*p != *s) goto fail; - p++; s++; - MOP_OUT; - NEXT; - - CASE(OP_EXACTMB2N2) MOP_IN(OP_EXACTMB2N2); - DATA_ENSURE(4); - if (*p != *s) goto fail; - p++; s++; - if (*p != *s) goto fail; - p++; s++; - sprev = s; - if (*p != *s) goto fail; - p++; s++; - if (*p != *s) goto fail; - p++; s++; - MOP_OUT; - JUMP; - - CASE(OP_EXACTMB2N3) MOP_IN(OP_EXACTMB2N3); - DATA_ENSURE(6); - if (*p != *s) goto fail; - p++; s++; - if (*p != *s) goto fail; - p++; s++; - if (*p != *s) goto fail; - p++; s++; - if (*p != *s) goto fail; - p++; s++; - sprev = s; - if (*p != *s) goto fail; - p++; s++; - if (*p != *s) goto fail; - p++; s++; - MOP_OUT; - JUMP; - - CASE(OP_EXACTMB2N) MOP_IN(OP_EXACTMB2N); - GET_LENGTH_INC(tlen, p); - DATA_ENSURE(tlen * 2); - while (tlen-- > 0) { - if (*p != *s) goto fail; - p++; s++; - if (*p != *s) goto fail; - p++; s++; - } - sprev = s - 2; - MOP_OUT; - JUMP; - - CASE(OP_EXACTMB3N) MOP_IN(OP_EXACTMB3N); - GET_LENGTH_INC(tlen, p); - DATA_ENSURE(tlen * 3); - while (tlen-- > 0) { - if (*p != *s) goto fail; - p++; s++; - if (*p != *s) goto fail; - p++; s++; - if (*p != *s) goto fail; - p++; s++; - } - sprev = s - 3; - MOP_OUT; - JUMP; - - CASE(OP_EXACTMBN) MOP_IN(OP_EXACTMBN); - GET_LENGTH_INC(tlen, p); /* mb-len */ - GET_LENGTH_INC(tlen2, p); /* string len */ - tlen2 *= tlen; - DATA_ENSURE(tlen2); - while (tlen2-- > 0) { - if (*p != *s) goto fail; - p++; s++; - } - sprev = s - tlen; - MOP_OUT; - JUMP; - - CASE(OP_CCLASS) MOP_IN(OP_CCLASS); - DATA_ENSURE(1); - if (BITSET_AT(((BitSetRef )p), *s) == 0) goto fail; - p += SIZE_BITSET; - s += enclen(encode, s, end); /* OP_CCLASS can match mb-code. \D, \S */ - MOP_OUT; - NEXT; - - CASE(OP_CCLASS_MB) MOP_IN(OP_CCLASS_MB); - if (! ONIGENC_IS_MBC_HEAD(encode, s, end)) goto fail; - - cclass_mb: - GET_LENGTH_INC(tlen, p); - { - OnigCodePoint code; - UChar *ss; - int mb_len; - - DATA_ENSURE(1); - mb_len = enclen(encode, s, end); - DATA_ENSURE(mb_len); - ss = s; - s += mb_len; - code = ONIGENC_MBC_TO_CODE(encode, ss, s); - -#ifdef PLATFORM_UNALIGNED_WORD_ACCESS - if (! onig_is_in_code_range(p, code)) goto fail; -#else - q = p; - ALIGNMENT_RIGHT(q); - if (! onig_is_in_code_range(q, code)) goto fail; -#endif - } - p += tlen; - MOP_OUT; - NEXT; - - CASE(OP_CCLASS_MIX) MOP_IN(OP_CCLASS_MIX); - DATA_ENSURE(1); - if (ONIGENC_IS_MBC_HEAD(encode, s, end)) { - p += SIZE_BITSET; - goto cclass_mb; - } - else { - if (BITSET_AT(((BitSetRef )p), *s) == 0) - goto fail; - - p += SIZE_BITSET; - GET_LENGTH_INC(tlen, p); - p += tlen; - s++; - } - MOP_OUT; - NEXT; - - CASE(OP_CCLASS_NOT) MOP_IN(OP_CCLASS_NOT); - DATA_ENSURE(1); - if (BITSET_AT(((BitSetRef )p), *s) != 0) goto fail; - p += SIZE_BITSET; - s += enclen(encode, s, end); - MOP_OUT; - NEXT; - - CASE(OP_CCLASS_MB_NOT) MOP_IN(OP_CCLASS_MB_NOT); - DATA_ENSURE(1); - if (! ONIGENC_IS_MBC_HEAD(encode, s, end)) { - s++; - GET_LENGTH_INC(tlen, p); - p += tlen; - goto cc_mb_not_success; - } - - cclass_mb_not: - GET_LENGTH_INC(tlen, p); - { - OnigCodePoint code; - UChar *ss; - int mb_len = enclen(encode, s, end); - - if (! DATA_ENSURE_CHECK(mb_len)) { - DATA_ENSURE(1); - s = (UChar* )end; - p += tlen; - goto cc_mb_not_success; - } - - ss = s; - s += mb_len; - code = ONIGENC_MBC_TO_CODE(encode, ss, s); - -#ifdef PLATFORM_UNALIGNED_WORD_ACCESS - if (onig_is_in_code_range(p, code)) goto fail; -#else - q = p; - ALIGNMENT_RIGHT(q); - if (onig_is_in_code_range(q, code)) goto fail; -#endif - } - p += tlen; - - cc_mb_not_success: - MOP_OUT; - NEXT; - - CASE(OP_CCLASS_MIX_NOT) MOP_IN(OP_CCLASS_MIX_NOT); - DATA_ENSURE(1); - if (ONIGENC_IS_MBC_HEAD(encode, s, end)) { - p += SIZE_BITSET; - goto cclass_mb_not; - } - else { - if (BITSET_AT(((BitSetRef )p), *s) != 0) - goto fail; - - p += SIZE_BITSET; - GET_LENGTH_INC(tlen, p); - p += tlen; - s++; - } - MOP_OUT; - NEXT; - - CASE(OP_ANYCHAR) MOP_IN(OP_ANYCHAR); - DATA_ENSURE(1); - n = enclen(encode, s, end); - DATA_ENSURE(n); - if (ONIGENC_IS_MBC_NEWLINE_EX(encode, s, str, end, option, 0)) goto fail; - s += n; - MOP_OUT; - NEXT; - - CASE(OP_ANYCHAR_ML) MOP_IN(OP_ANYCHAR_ML); - DATA_ENSURE(1); - n = enclen(encode, s, end); - DATA_ENSURE(n); - s += n; - MOP_OUT; - NEXT; - - CASE(OP_ANYCHAR_STAR) MOP_IN(OP_ANYCHAR_STAR); - while (DATA_ENSURE_CHECK1) { - STACK_PUSH_ALT(p, s, sprev, pkeep); - n = enclen(encode, s, end); - DATA_ENSURE(n); - if (ONIGENC_IS_MBC_NEWLINE_EX(encode, s, str, end, option, 0)) goto fail; - sprev = s; - s += n; - } - MOP_OUT; - NEXT; - - CASE(OP_ANYCHAR_ML_STAR) MOP_IN(OP_ANYCHAR_ML_STAR); - while (DATA_ENSURE_CHECK1) { - STACK_PUSH_ALT(p, s, sprev, pkeep); - n = enclen(encode, s, end); - if (n > 1) { - DATA_ENSURE(n); - sprev = s; - s += n; - } - else { - sprev = s; - s++; - } - } - MOP_OUT; - NEXT; - - CASE(OP_ANYCHAR_STAR_PEEK_NEXT) MOP_IN(OP_ANYCHAR_STAR_PEEK_NEXT); - while (DATA_ENSURE_CHECK1) { - if (*p == *s) { - STACK_PUSH_ALT(p + 1, s, sprev, pkeep); - } - n = enclen(encode, s, end); - DATA_ENSURE(n); - if (ONIGENC_IS_MBC_NEWLINE_EX(encode, s, str, end, option, 0)) goto fail; - sprev = s; - s += n; - } - p++; - MOP_OUT; - NEXT; - - CASE(OP_ANYCHAR_ML_STAR_PEEK_NEXT)MOP_IN(OP_ANYCHAR_ML_STAR_PEEK_NEXT); - while (DATA_ENSURE_CHECK1) { - if (*p == *s) { - STACK_PUSH_ALT(p + 1, s, sprev, pkeep); - } - n = enclen(encode, s, end); - if (n > 1) { - DATA_ENSURE(n); - sprev = s; - s += n; - } - else { - sprev = s; - s++; - } - } - p++; - MOP_OUT; - NEXT; - -#ifdef USE_COMBINATION_EXPLOSION_CHECK - CASE(OP_STATE_CHECK_ANYCHAR_STAR) MOP_IN(OP_STATE_CHECK_ANYCHAR_STAR); - GET_STATE_CHECK_NUM_INC(mem, p); - while (DATA_ENSURE_CHECK1) { - STATE_CHECK_VAL(scv, mem); - if (scv) goto fail; - - STACK_PUSH_ALT_WITH_STATE_CHECK(p, s, sprev, mem, pkeep); - n = enclen(encode, s, end); - DATA_ENSURE(n); - if (ONIGENC_IS_MBC_NEWLINE_EX(encode, s, str, end, option, 0)) goto fail; - sprev = s; - s += n; - } - MOP_OUT; - NEXT; - - CASE(OP_STATE_CHECK_ANYCHAR_ML_STAR) - MOP_IN(OP_STATE_CHECK_ANYCHAR_ML_STAR); - - GET_STATE_CHECK_NUM_INC(mem, p); - while (DATA_ENSURE_CHECK1) { - STATE_CHECK_VAL(scv, mem); - if (scv) goto fail; - - STACK_PUSH_ALT_WITH_STATE_CHECK(p, s, sprev, mem, pkeep); - n = enclen(encode, s, end); - if (n > 1) { - DATA_ENSURE(n); - sprev = s; - s += n; - } - else { - sprev = s; - s++; - } - } - MOP_OUT; - NEXT; -#endif /* USE_COMBINATION_EXPLOSION_CHECK */ - - CASE(OP_WORD) MOP_IN(OP_WORD); - DATA_ENSURE(1); - if (! ONIGENC_IS_MBC_WORD(encode, s, end)) - goto fail; - - s += enclen(encode, s, end); - MOP_OUT; - NEXT; - - CASE(OP_ASCII_WORD) MOP_IN(OP_ASCII_WORD); - DATA_ENSURE(1); - if (! ONIGENC_IS_MBC_ASCII_WORD(encode, s, end)) - goto fail; - - s += enclen(encode, s, end); - MOP_OUT; - NEXT; - - CASE(OP_NOT_WORD) MOP_IN(OP_NOT_WORD); - DATA_ENSURE(1); - if (ONIGENC_IS_MBC_WORD(encode, s, end)) - goto fail; - - s += enclen(encode, s, end); - MOP_OUT; - NEXT; - - CASE(OP_NOT_ASCII_WORD) MOP_IN(OP_NOT_ASCII_WORD); - DATA_ENSURE(1); - if (ONIGENC_IS_MBC_ASCII_WORD(encode, s, end)) - goto fail; - - s += enclen(encode, s, end); - MOP_OUT; - NEXT; - - CASE(OP_WORD_BOUND) MOP_IN(OP_WORD_BOUND); - if (ON_STR_BEGIN(s)) { - DATA_ENSURE(1); - if (! ONIGENC_IS_MBC_WORD(encode, s, end)) - goto fail; - } - else if (ON_STR_END(s)) { - if (! ONIGENC_IS_MBC_WORD(encode, sprev, end)) - goto fail; - } - else { - if (ONIGENC_IS_MBC_WORD(encode, s, end) - == ONIGENC_IS_MBC_WORD(encode, sprev, end)) - goto fail; - } - MOP_OUT; - JUMP; - - CASE(OP_ASCII_WORD_BOUND) MOP_IN(OP_ASCII_WORD_BOUND); - if (ON_STR_BEGIN(s)) { - DATA_ENSURE(1); - if (! ONIGENC_IS_MBC_ASCII_WORD(encode, s, end)) - goto fail; - } - else if (ON_STR_END(s)) { - if (! ONIGENC_IS_MBC_ASCII_WORD(encode, sprev, end)) - goto fail; - } - else { - if (ONIGENC_IS_MBC_ASCII_WORD(encode, s, end) - == ONIGENC_IS_MBC_ASCII_WORD(encode, sprev, end)) - goto fail; - } - MOP_OUT; - JUMP; - - CASE(OP_NOT_WORD_BOUND) MOP_IN(OP_NOT_WORD_BOUND); - if (ON_STR_BEGIN(s)) { - if (DATA_ENSURE_CHECK1 && ONIGENC_IS_MBC_WORD(encode, s, end)) - goto fail; - } - else if (ON_STR_END(s)) { - if (ONIGENC_IS_MBC_WORD(encode, sprev, end)) - goto fail; - } - else { - if (ONIGENC_IS_MBC_WORD(encode, s, end) - != ONIGENC_IS_MBC_WORD(encode, sprev, end)) - goto fail; - } - MOP_OUT; - JUMP; - - CASE(OP_NOT_ASCII_WORD_BOUND) MOP_IN(OP_NOT_ASCII_WORD_BOUND); - if (ON_STR_BEGIN(s)) { - if (DATA_ENSURE_CHECK1 && ONIGENC_IS_MBC_ASCII_WORD(encode, s, end)) - goto fail; - } - else if (ON_STR_END(s)) { - if (ONIGENC_IS_MBC_ASCII_WORD(encode, sprev, end)) - goto fail; - } - else { - if (ONIGENC_IS_MBC_ASCII_WORD(encode, s, end) - != ONIGENC_IS_MBC_ASCII_WORD(encode, sprev, end)) - goto fail; - } - MOP_OUT; - JUMP; - -#ifdef USE_WORD_BEGIN_END - CASE(OP_WORD_BEGIN) MOP_IN(OP_WORD_BEGIN); - if (DATA_ENSURE_CHECK1 && ONIGENC_IS_MBC_WORD(encode, s, end)) { - if (ON_STR_BEGIN(s) || !ONIGENC_IS_MBC_WORD(encode, sprev, end)) { - MOP_OUT; - JUMP; - } - } - goto fail; - NEXT; - - CASE(OP_ASCII_WORD_BEGIN) MOP_IN(OP_ASCII_WORD_BEGIN); - if (DATA_ENSURE_CHECK1 && ONIGENC_IS_MBC_ASCII_WORD(encode, s, end)) { - if (ON_STR_BEGIN(s) || !ONIGENC_IS_MBC_ASCII_WORD(encode, sprev, end)) { - MOP_OUT; - JUMP; - } - } - goto fail; - NEXT; - - CASE(OP_WORD_END) MOP_IN(OP_WORD_END); - if (!ON_STR_BEGIN(s) && ONIGENC_IS_MBC_WORD(encode, sprev, end)) { - if (ON_STR_END(s) || !ONIGENC_IS_MBC_WORD(encode, s, end)) { - MOP_OUT; - JUMP; - } - } - goto fail; - NEXT; - - CASE(OP_ASCII_WORD_END) MOP_IN(OP_ASCII_WORD_END); - if (!ON_STR_BEGIN(s) && ONIGENC_IS_MBC_ASCII_WORD(encode, sprev, end)) { - if (ON_STR_END(s) || !ONIGENC_IS_MBC_ASCII_WORD(encode, s, end)) { - MOP_OUT; - JUMP; - } - } - goto fail; - NEXT; -#endif - - CASE(OP_BEGIN_BUF) MOP_IN(OP_BEGIN_BUF); - if (! ON_STR_BEGIN(s)) goto fail; - if (IS_NOTBOS(msa->options)) goto fail; - - MOP_OUT; - JUMP; - - CASE(OP_END_BUF) MOP_IN(OP_END_BUF); - if (! ON_STR_END(s)) goto fail; - if (IS_NOTEOS(msa->options)) goto fail; - - MOP_OUT; - JUMP; - - CASE(OP_BEGIN_LINE) MOP_IN(OP_BEGIN_LINE); - if (ON_STR_BEGIN(s)) { - if (IS_NOTBOL(msa->options)) goto fail; - MOP_OUT; - JUMP; - } - else if (ONIGENC_IS_MBC_NEWLINE(encode, sprev, end) -#ifdef USE_CRNL_AS_LINE_TERMINATOR - && !(IS_NEWLINE_CRLF(option) - && ONIGENC_IS_MBC_CRNL(encode, sprev, end)) -#endif - && !ON_STR_END(s)) { - MOP_OUT; - JUMP; - } - goto fail; - NEXT; - - CASE(OP_END_LINE) MOP_IN(OP_END_LINE); - if (ON_STR_END(s)) { -#ifndef USE_NEWLINE_AT_END_OF_STRING_HAS_EMPTY_LINE - if (IS_EMPTY_STR || !ONIGENC_IS_MBC_NEWLINE_EX(encode, sprev, str, end, option, 1)) { -#endif - if (IS_NOTEOL(msa->options)) goto fail; - MOP_OUT; - JUMP; -#ifndef USE_NEWLINE_AT_END_OF_STRING_HAS_EMPTY_LINE - } -#endif - } - else if (ONIGENC_IS_MBC_NEWLINE_EX(encode, s, str, end, option, 1)) { - MOP_OUT; - JUMP; - } - goto fail; - NEXT; - - CASE(OP_SEMI_END_BUF) MOP_IN(OP_SEMI_END_BUF); - if (ON_STR_END(s)) { -#ifndef USE_NEWLINE_AT_END_OF_STRING_HAS_EMPTY_LINE - if (IS_EMPTY_STR || !ONIGENC_IS_MBC_NEWLINE_EX(encode, sprev, str, end, option, 1)) { -#endif - if (IS_NOTEOL(msa->options)) goto fail; - MOP_OUT; - JUMP; -#ifndef USE_NEWLINE_AT_END_OF_STRING_HAS_EMPTY_LINE - } -#endif - } - else if (ONIGENC_IS_MBC_NEWLINE_EX(encode, s, str, end, option, 1)) { - UChar* ss = s + enclen(encode, s, end); - if (ON_STR_END(ss)) { - MOP_OUT; - JUMP; - } -#ifdef USE_CRNL_AS_LINE_TERMINATOR - else if (IS_NEWLINE_CRLF(option) - && ONIGENC_IS_MBC_CRNL(encode, s, end)) { - ss += enclen(encode, ss, end); - if (ON_STR_END(ss)) { - MOP_OUT; - JUMP; - } - } -#endif - } - goto fail; - NEXT; - - CASE(OP_BEGIN_POSITION) MOP_IN(OP_BEGIN_POSITION); - if (s != msa->gpos) - goto fail; - - MOP_OUT; - JUMP; - - CASE(OP_MEMORY_START_PUSH) MOP_IN(OP_MEMORY_START_PUSH); - GET_MEMNUM_INC(mem, p); - STACK_PUSH_MEM_START(mem, s); - MOP_OUT; - JUMP; - - CASE(OP_MEMORY_START) MOP_IN(OP_MEMORY_START); - GET_MEMNUM_INC(mem, p); - mem_start_stk[mem] = (OnigStackIndex )((void* )s); - MOP_OUT; - JUMP; - - CASE(OP_MEMORY_END_PUSH) MOP_IN(OP_MEMORY_END_PUSH); - GET_MEMNUM_INC(mem, p); - STACK_PUSH_MEM_END(mem, s); - MOP_OUT; - JUMP; - - CASE(OP_MEMORY_END) MOP_IN(OP_MEMORY_END); - GET_MEMNUM_INC(mem, p); - mem_end_stk[mem] = (OnigStackIndex )((void* )s); - MOP_OUT; - JUMP; - - CASE(OP_KEEP) MOP_IN(OP_KEEP); - pkeep = s; - MOP_OUT; - JUMP; - -#ifdef USE_SUBEXP_CALL - CASE(OP_MEMORY_END_PUSH_REC) MOP_IN(OP_MEMORY_END_PUSH_REC); - GET_MEMNUM_INC(mem, p); - STACK_GET_MEM_START(mem, stkp); /* should be before push mem-end. */ - STACK_PUSH_MEM_END(mem, s); - mem_start_stk[mem] = GET_STACK_INDEX(stkp); - MOP_OUT; - JUMP; - - CASE(OP_MEMORY_END_REC) MOP_IN(OP_MEMORY_END_REC); - GET_MEMNUM_INC(mem, p); - mem_end_stk[mem] = (OnigStackIndex )((void* )s); - STACK_GET_MEM_START(mem, stkp); - - if (BIT_STATUS_AT(reg->bt_mem_start, mem)) - mem_start_stk[mem] = GET_STACK_INDEX(stkp); - else - mem_start_stk[mem] = (OnigStackIndex )((void* )stkp->u.mem.pstr); - - STACK_PUSH_MEM_END_MARK(mem); - MOP_OUT; - JUMP; -#endif - - CASE(OP_BACKREF1) MOP_IN(OP_BACKREF1); - mem = 1; - goto backref; - NEXT; - - CASE(OP_BACKREF2) MOP_IN(OP_BACKREF2); - mem = 2; - goto backref; - NEXT; - - CASE(OP_BACKREFN) MOP_IN(OP_BACKREFN); - GET_MEMNUM_INC(mem, p); - backref: - { - int len; - UChar *pstart, *pend; - - /* if you want to remove following line, - you should check in parse and compile time. */ - if (mem > num_mem) goto fail; - if (mem_end_stk[mem] == INVALID_STACK_INDEX) goto fail; - if (mem_start_stk[mem] == INVALID_STACK_INDEX) goto fail; - - if (BIT_STATUS_AT(reg->bt_mem_start, mem)) - pstart = STACK_AT(mem_start_stk[mem])->u.mem.pstr; - else - pstart = (UChar* )((void* )mem_start_stk[mem]); - - pend = (BIT_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; - DATA_ENSURE(n); - sprev = s; - STRING_CMP(pstart, s, n); - while (sprev + (len = enclen(encode, sprev, end)) < s) - sprev += len; - - MOP_OUT; - JUMP; - } - - CASE(OP_BACKREFN_IC) MOP_IN(OP_BACKREFN_IC); - GET_MEMNUM_INC(mem, p); - { - int len; - UChar *pstart, *pend; - - /* if you want to remove following line, - you should check in parse and compile time. */ - if (mem > num_mem) goto fail; - if (mem_end_stk[mem] == INVALID_STACK_INDEX) goto fail; - if (mem_start_stk[mem] == INVALID_STACK_INDEX) goto fail; - - if (BIT_STATUS_AT(reg->bt_mem_start, mem)) - pstart = STACK_AT(mem_start_stk[mem])->u.mem.pstr; - else - pstart = (UChar* )((void* )mem_start_stk[mem]); - - pend = (BIT_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; - DATA_ENSURE(n); - sprev = s; - STRING_CMP_IC(case_fold_flag, pstart, &s, (int)n, end); - while (sprev + (len = enclen(encode, sprev, end)) < s) - sprev += len; - - MOP_OUT; - JUMP; - } - NEXT; - - CASE(OP_BACKREF_MULTI) MOP_IN(OP_BACKREF_MULTI); - { - int len, is_fail; - UChar *pstart, *pend, *swork; - - GET_LENGTH_INC(tlen, p); - for (i = 0; i < tlen; i++) { - GET_MEMNUM_INC(mem, p); - - if (mem_end_stk[mem] == INVALID_STACK_INDEX) continue; - if (mem_start_stk[mem] == INVALID_STACK_INDEX) continue; - - if (BIT_STATUS_AT(reg->bt_mem_start, mem)) - pstart = STACK_AT(mem_start_stk[mem])->u.mem.pstr; - else - pstart = (UChar* )((void* )mem_start_stk[mem]); - - pend = (BIT_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; - DATA_ENSURE(n); - sprev = s; - swork = s; - STRING_CMP_VALUE(pstart, swork, n, is_fail); - if (is_fail) continue; - s = swork; - while (sprev + (len = enclen(encode, sprev, end)) < s) - sprev += len; - - p += (SIZE_MEMNUM * (tlen - i - 1)); - break; /* success */ - } - if (i == tlen) goto fail; - MOP_OUT; - JUMP; - } - NEXT; - - CASE(OP_BACKREF_MULTI_IC) MOP_IN(OP_BACKREF_MULTI_IC); - { - int len, is_fail; - UChar *pstart, *pend, *swork; - - GET_LENGTH_INC(tlen, p); - for (i = 0; i < tlen; i++) { - GET_MEMNUM_INC(mem, p); - - if (mem_end_stk[mem] == INVALID_STACK_INDEX) continue; - if (mem_start_stk[mem] == INVALID_STACK_INDEX) continue; - - if (BIT_STATUS_AT(reg->bt_mem_start, mem)) - pstart = STACK_AT(mem_start_stk[mem])->u.mem.pstr; - else - pstart = (UChar* )((void* )mem_start_stk[mem]); - - pend = (BIT_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; - DATA_ENSURE(n); - sprev = s; - swork = s; - STRING_CMP_VALUE_IC(case_fold_flag, pstart, &swork, n, end, is_fail); - if (is_fail) continue; - s = swork; - while (sprev + (len = enclen(encode, sprev, end)) < s) - sprev += len; - - p += (SIZE_MEMNUM * (tlen - i - 1)); - break; /* success */ - } - if (i == tlen) goto fail; - MOP_OUT; - JUMP; - } - -#ifdef USE_BACKREF_WITH_LEVEL - CASE(OP_BACKREF_WITH_LEVEL) - { - int len; - OnigOptionType ic; - LengthType level; - - GET_OPTION_INC(ic, p); - GET_LENGTH_INC(level, p); - GET_LENGTH_INC(tlen, p); - - sprev = s; - if (backref_match_at_nested_level(reg, stk, stk_base, ic, - case_fold_flag, (int )level, (int )tlen, p, &s, end)) { - while (sprev + (len = enclen(encode, sprev, end)) < s) - sprev += len; - - p += (SIZE_MEMNUM * tlen); - } - else - goto fail; - - MOP_OUT; - JUMP; - } - -#endif - -#if 0 /* no need: IS_DYNAMIC_OPTION() == 0 */ - CASE(OP_SET_OPTION_PUSH) MOP_IN(OP_SET_OPTION_PUSH); - GET_OPTION_INC(option, p); - STACK_PUSH_ALT(p, s, sprev, pkeep); - p += SIZE_OP_SET_OPTION + SIZE_OP_FAIL; - MOP_OUT; - JUMP; - - CASE(OP_SET_OPTION) MOP_IN(OP_SET_OPTION); - GET_OPTION_INC(option, p); - MOP_OUT; - JUMP; -#endif - - CASE(OP_NULL_CHECK_START) MOP_IN(OP_NULL_CHECK_START); - GET_MEMNUM_INC(mem, p); /* mem: null check id */ - STACK_PUSH_NULL_CHECK_START(mem, s); - MOP_OUT; - JUMP; - - CASE(OP_NULL_CHECK_END) MOP_IN(OP_NULL_CHECK_END); - { - int isnull; - - GET_MEMNUM_INC(mem, p); /* mem: null check id */ - STACK_NULL_CHECK(isnull, mem, s); - if (isnull) { -#ifdef ONIG_DEBUG_MATCH - fprintf(stderr, "NULL_CHECK_END: skip id:%d, s:%"PRIuPTR" (%p)\n", - (int )mem, (uintptr_t )s, s); -#endif - null_check_found: - /* empty loop founded, skip next instruction */ - switch (*p++) { - case OP_JUMP: - case OP_PUSH: - p += SIZE_RELADDR; - break; - case OP_REPEAT_INC: - case OP_REPEAT_INC_NG: - case OP_REPEAT_INC_SG: - case OP_REPEAT_INC_NG_SG: - p += SIZE_MEMNUM; - break; - default: - goto unexpected_bytecode_error; - break; - } - } - } - MOP_OUT; - JUMP; - -#ifdef USE_MONOMANIAC_CHECK_CAPTURES_IN_ENDLESS_REPEAT - CASE(OP_NULL_CHECK_END_MEMST) MOP_IN(OP_NULL_CHECK_END_MEMST); - { - int isnull; - - GET_MEMNUM_INC(mem, p); /* mem: null check id */ - STACK_NULL_CHECK_MEMST(isnull, mem, s, reg); - if (isnull) { -# ifdef ONIG_DEBUG_MATCH - fprintf(stderr, "NULL_CHECK_END_MEMST: skip id:%d, s:%"PRIuPTR" (%p)\n", - (int )mem, (uintptr_t )s, s); -# endif - if (isnull == -1) goto fail; - goto null_check_found; - } - } - MOP_OUT; - JUMP; -#endif - -#ifdef USE_SUBEXP_CALL - CASE(OP_NULL_CHECK_END_MEMST_PUSH) - MOP_IN(OP_NULL_CHECK_END_MEMST_PUSH); - { - int isnull; - - GET_MEMNUM_INC(mem, p); /* mem: null check id */ -# ifdef USE_MONOMANIAC_CHECK_CAPTURES_IN_ENDLESS_REPEAT - STACK_NULL_CHECK_MEMST_REC(isnull, mem, s, reg); -# else - STACK_NULL_CHECK_REC(isnull, mem, s); -# endif - if (isnull) { -# ifdef ONIG_DEBUG_MATCH - fprintf(stderr, "NULL_CHECK_END_MEMST_PUSH: skip id:%d, s:%"PRIuPTR" (%p)\n", - (int )mem, (uintptr_t )s, s); -# endif - if (isnull == -1) goto fail; - goto null_check_found; - } - else { - STACK_PUSH_NULL_CHECK_END(mem); - } - } - MOP_OUT; - JUMP; -#endif - - CASE(OP_JUMP) MOP_IN(OP_JUMP); - GET_RELADDR_INC(addr, p); - p += addr; - MOP_OUT; - CHECK_INTERRUPT_IN_MATCH_AT; - JUMP; - - CASE(OP_PUSH) MOP_IN(OP_PUSH); - GET_RELADDR_INC(addr, p); - STACK_PUSH_ALT(p + addr, s, sprev, pkeep); - MOP_OUT; - JUMP; - -#ifdef USE_COMBINATION_EXPLOSION_CHECK - CASE(OP_STATE_CHECK_PUSH) MOP_IN(OP_STATE_CHECK_PUSH); - GET_STATE_CHECK_NUM_INC(mem, p); - STATE_CHECK_VAL(scv, mem); - if (scv) goto fail; - - GET_RELADDR_INC(addr, p); - STACK_PUSH_ALT_WITH_STATE_CHECK(p + addr, s, sprev, mem, pkeep); - MOP_OUT; - JUMP; - - CASE(OP_STATE_CHECK_PUSH_OR_JUMP) MOP_IN(OP_STATE_CHECK_PUSH_OR_JUMP); - GET_STATE_CHECK_NUM_INC(mem, p); - GET_RELADDR_INC(addr, p); - STATE_CHECK_VAL(scv, mem); - if (scv) { - p += addr; - } - else { - STACK_PUSH_ALT_WITH_STATE_CHECK(p + addr, s, sprev, mem, pkeep); - } - MOP_OUT; - JUMP; - - CASE(OP_STATE_CHECK) MOP_IN(OP_STATE_CHECK); - GET_STATE_CHECK_NUM_INC(mem, p); - STATE_CHECK_VAL(scv, mem); - if (scv) goto fail; - - STACK_PUSH_STATE_CHECK(s, mem); - MOP_OUT; - JUMP; -#endif /* USE_COMBINATION_EXPLOSION_CHECK */ - - CASE(OP_POP) MOP_IN(OP_POP); - STACK_POP_ONE; - MOP_OUT; - JUMP; - -#ifdef USE_OP_PUSH_OR_JUMP_EXACT - CASE(OP_PUSH_OR_JUMP_EXACT1) MOP_IN(OP_PUSH_OR_JUMP_EXACT1); - GET_RELADDR_INC(addr, p); - if (*p == *s && DATA_ENSURE_CHECK1) { - p++; - STACK_PUSH_ALT(p + addr, s, sprev, pkeep); - MOP_OUT; - JUMP; - } - p += (addr + 1); - MOP_OUT; - JUMP; -#endif - - CASE(OP_PUSH_IF_PEEK_NEXT) MOP_IN(OP_PUSH_IF_PEEK_NEXT); - GET_RELADDR_INC(addr, p); - if (*p == *s) { - p++; - STACK_PUSH_ALT(p + addr, s, sprev, pkeep); - MOP_OUT; - JUMP; - } - p++; - MOP_OUT; - JUMP; - - CASE(OP_REPEAT) MOP_IN(OP_REPEAT); - { - GET_MEMNUM_INC(mem, p); /* mem: OP_REPEAT ID */ - GET_RELADDR_INC(addr, p); - - STACK_ENSURE(1); - repeat_stk[mem] = GET_STACK_INDEX(stk); - STACK_PUSH_REPEAT(mem, p); - - if (reg->repeat_range[mem].lower == 0) { - STACK_PUSH_ALT(p + addr, s, sprev, pkeep); - } - } - MOP_OUT; - JUMP; - - CASE(OP_REPEAT_NG) MOP_IN(OP_REPEAT_NG); - { - GET_MEMNUM_INC(mem, p); /* mem: OP_REPEAT ID */ - GET_RELADDR_INC(addr, p); - - STACK_ENSURE(1); - repeat_stk[mem] = GET_STACK_INDEX(stk); - STACK_PUSH_REPEAT(mem, p); - - if (reg->repeat_range[mem].lower == 0) { - STACK_PUSH_ALT(p, s, sprev, pkeep); - p += addr; - } - } - MOP_OUT; - JUMP; - - CASE(OP_REPEAT_INC) MOP_IN(OP_REPEAT_INC); - GET_MEMNUM_INC(mem, p); /* mem: OP_REPEAT ID */ - si = repeat_stk[mem]; - stkp = STACK_AT(si); - - repeat_inc: - stkp->u.repeat.count++; - if (stkp->u.repeat.count >= reg->repeat_range[mem].upper) { - /* end of repeat. Nothing to do. */ - } - else if (stkp->u.repeat.count >= reg->repeat_range[mem].lower) { - STACK_PUSH_ALT(p, s, sprev, pkeep); - p = STACK_AT(si)->u.repeat.pcode; /* Don't use stkp after PUSH. */ - } - else { - p = stkp->u.repeat.pcode; - } - STACK_PUSH_REPEAT_INC(si); - MOP_OUT; - CHECK_INTERRUPT_IN_MATCH_AT; - JUMP; - - CASE(OP_REPEAT_INC_SG) MOP_IN(OP_REPEAT_INC_SG); - GET_MEMNUM_INC(mem, p); /* mem: OP_REPEAT ID */ - STACK_GET_REPEAT(mem, stkp); - si = GET_STACK_INDEX(stkp); - goto repeat_inc; - NEXT; - - CASE(OP_REPEAT_INC_NG) MOP_IN(OP_REPEAT_INC_NG); - GET_MEMNUM_INC(mem, p); /* mem: OP_REPEAT ID */ - si = repeat_stk[mem]; - stkp = STACK_AT(si); - - repeat_inc_ng: - stkp->u.repeat.count++; - if (stkp->u.repeat.count < reg->repeat_range[mem].upper) { - if (stkp->u.repeat.count >= reg->repeat_range[mem].lower) { - UChar* pcode = stkp->u.repeat.pcode; - - STACK_PUSH_REPEAT_INC(si); - STACK_PUSH_ALT(pcode, s, sprev, pkeep); - } - else { - p = stkp->u.repeat.pcode; - STACK_PUSH_REPEAT_INC(si); - } - } - else if (stkp->u.repeat.count == reg->repeat_range[mem].upper) { - STACK_PUSH_REPEAT_INC(si); - } - MOP_OUT; - CHECK_INTERRUPT_IN_MATCH_AT; - JUMP; - - CASE(OP_REPEAT_INC_NG_SG) MOP_IN(OP_REPEAT_INC_NG_SG); - GET_MEMNUM_INC(mem, p); /* mem: OP_REPEAT ID */ - STACK_GET_REPEAT(mem, stkp); - si = GET_STACK_INDEX(stkp); - goto repeat_inc_ng; - NEXT; - - CASE(OP_PUSH_POS) MOP_IN(OP_PUSH_POS); - STACK_PUSH_POS(s, sprev, pkeep); - MOP_OUT; - JUMP; - - CASE(OP_POP_POS) MOP_IN(OP_POP_POS); - { - STACK_POS_END(stkp); - s = stkp->u.state.pstr; - sprev = stkp->u.state.pstr_prev; - } - MOP_OUT; - JUMP; - - CASE(OP_PUSH_POS_NOT) MOP_IN(OP_PUSH_POS_NOT); - GET_RELADDR_INC(addr, p); - STACK_PUSH_POS_NOT(p + addr, s, sprev, pkeep); - MOP_OUT; - JUMP; - - CASE(OP_FAIL_POS) MOP_IN(OP_FAIL_POS); - STACK_POP_TIL_POS_NOT; - goto fail; - NEXT; - - CASE(OP_PUSH_STOP_BT) MOP_IN(OP_PUSH_STOP_BT); - STACK_PUSH_STOP_BT; - MOP_OUT; - JUMP; - - CASE(OP_POP_STOP_BT) MOP_IN(OP_POP_STOP_BT); - STACK_STOP_BT_END; - MOP_OUT; - JUMP; - - CASE(OP_LOOK_BEHIND) MOP_IN(OP_LOOK_BEHIND); - GET_LENGTH_INC(tlen, p); - s = (UChar* )ONIGENC_STEP_BACK(encode, str, s, end, (int )tlen); - if (IS_NULL(s)) goto fail; - sprev = (UChar* )onigenc_get_prev_char_head(encode, str, s, end); - MOP_OUT; - JUMP; - - CASE(OP_PUSH_LOOK_BEHIND_NOT) MOP_IN(OP_PUSH_LOOK_BEHIND_NOT); - GET_RELADDR_INC(addr, p); - GET_LENGTH_INC(tlen, p); - q = (UChar* )ONIGENC_STEP_BACK(encode, str, s, end, (int )tlen); - if (IS_NULL(q)) { - /* too short case -> success. ex. /(? aend) && (s > absent)) { - /* An empty match occurred in (?~...) at the start point. - * Never match. */ - STACK_POP; - goto fail; - } - else if ((s >= aend) && (s > absent)) { - if (s > aend) { - /* Only one (or less) character matched in the last iteration. - * This is not a possible point. */ - goto fail; - } - /* All possible points were found. Try matching after (?~...). */ - DATA_ENSURE(0); - p += addr; - } - else { - STACK_PUSH_ALT(p + addr, s, sprev, pkeep); /* Push possible point. */ - n = enclen(encode, s, end); - STACK_PUSH_ABSENT_POS(absent, ABSENT_END_POS); /* Save the original pos. */ - STACK_PUSH_ALT(selfp, s + n, s, pkeep); /* Next iteration. */ - STACK_PUSH_ABSENT; - ABSENT_END_POS = aend; - } - } - MOP_OUT; - JUMP; - - CASE(OP_ABSENT_END) MOP_IN(OP_ABSENT_END); - /* The pattern inside (?~...) was matched. - * Set the end-pos temporary and go to next iteration. */ - if (sprev < ABSENT_END_POS) - ABSENT_END_POS = sprev; -#ifdef ONIG_DEBUG_MATCH - fprintf(stderr, "ABSENT_END: end:%p\n", ABSENT_END_POS); -#endif - STACK_POP_TIL_ABSENT; - goto fail; - NEXT; - -#ifdef USE_SUBEXP_CALL - CASE(OP_CALL) MOP_IN(OP_CALL); - GET_ABSADDR_INC(addr, p); - STACK_PUSH_CALL_FRAME(p); - p = reg->p + addr; - MOP_OUT; - JUMP; - - CASE(OP_RETURN) MOP_IN(OP_RETURN); - STACK_RETURN(p); - STACK_PUSH_RETURN; - MOP_OUT; - JUMP; -#endif - - CASE(OP_CONDITION) MOP_IN(OP_CONDITION); - GET_MEMNUM_INC(mem, p); - GET_RELADDR_INC(addr, p); - if ((mem > num_mem) || - (mem_end_stk[mem] == INVALID_STACK_INDEX) || - (mem_start_stk[mem] == INVALID_STACK_INDEX)) { - p += addr; - } - MOP_OUT; - JUMP; - - CASE(OP_FINISH) - goto finish; - NEXT; - - CASE(OP_FAIL) - if (0) { - /* fall */ - fail: - MOP_OUT; - } - MOP_IN(OP_FAIL); - STACK_POP; - p = stk->u.state.pcode; - s = stk->u.state.pstr; - sprev = stk->u.state.pstr_prev; - pkeep = stk->u.state.pkeep; - -#ifdef USE_COMBINATION_EXPLOSION_CHECK - if (stk->u.state.state_check != 0) { - stk->type = STK_STATE_CHECK_MARK; - stk++; - } -#endif - - MOP_OUT; - JUMP; - - DEFAULT - goto bytecode_error; - } VM_LOOP_END - - finish: - STACK_SAVE; - if (xmalloc_base) xfree(xmalloc_base); - return best_len; - -#ifdef ONIG_DEBUG - stack_error: - STACK_SAVE; - if (xmalloc_base) xfree(xmalloc_base); - return ONIGERR_STACK_BUG; -#endif - - bytecode_error: - STACK_SAVE; - if (xmalloc_base) xfree(xmalloc_base); - return ONIGERR_UNDEFINED_BYTECODE; - - unexpected_bytecode_error: - STACK_SAVE; - if (xmalloc_base) xfree(xmalloc_base); - return ONIGERR_UNEXPECTED_BYTECODE; -} - - -static UChar* -slow_search(OnigEncoding enc, UChar* target, UChar* target_end, - const UChar* text, const UChar* text_end, UChar* text_range) -{ - UChar *t, *p, *s, *end; - - end = (UChar* )text_end; - end -= target_end - target - 1; - if (end > text_range) - end = text_range; - - s = (UChar* )text; - - if (enc->max_enc_len == enc->min_enc_len) { - int n = enc->max_enc_len; - - while (s < end) { - if (*s == *target) { - p = s + 1; - t = target + 1; - if (target_end == t || memcmp(t, p, target_end - t) == 0) - return s; - } - s += n; - } - return (UChar* )NULL; - } - while (s < end) { - if (*s == *target) { - p = s + 1; - t = target + 1; - if (target_end == t || memcmp(t, p, target_end - t) == 0) - return s; - } - s += enclen(enc, s, text_end); - } - - return (UChar* )NULL; -} - -static int -str_lower_case_match(OnigEncoding enc, int case_fold_flag, - const UChar* t, const UChar* tend, - const UChar* p, const UChar* end) -{ - int lowlen; - UChar *q, lowbuf[ONIGENC_MBC_CASE_FOLD_MAXLEN]; - - while (t < tend) { - lowlen = ONIGENC_MBC_CASE_FOLD(enc, case_fold_flag, &p, end, lowbuf); - q = lowbuf; - while (lowlen > 0) { - if (*t++ != *q++) return 0; - lowlen--; - } - } - - return 1; -} - -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 *s, *end; - - end = (UChar* )text_end; - end -= target_end - target - 1; - if (end > text_range) - end = text_range; - - s = (UChar* )text; - - while (s < end) { - if (str_lower_case_match(enc, case_fold_flag, target, target_end, - s, text_end)) - return s; - - s += enclen(enc, s, text_end); - } - - return (UChar* )NULL; -} - -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) -{ - UChar *t, *p, *s; - - s = (UChar* )text_end; - s -= (target_end - target); - if (s > text_start) - s = (UChar* )text_start; - else - s = ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc, adjust_text, s, text_end); - - while (s >= text) { - if (*s == *target) { - p = s + 1; - t = target + 1; - while (t < target_end) { - if (*t != *p++) - break; - t++; - } - if (t == target_end) - return s; - } - s = (UChar* )onigenc_get_prev_char_head(enc, adjust_text, s, text_end); - } - - return (UChar* )NULL; -} - -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 *s; - - s = (UChar* )text_end; - s -= (target_end - target); - if (s > text_start) - s = (UChar* )text_start; - else - s = ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc, adjust_text, s, text_end); - - while (s >= text) { - if (str_lower_case_match(enc, case_fold_flag, - target, target_end, s, text_end)) - return s; - - s = (UChar* )onigenc_get_prev_char_head(enc, adjust_text, s, text_end); - } - - return (UChar* )NULL; -} - -#ifndef USE_SUNDAY_QUICK_SEARCH -/* Boyer-Moore-Horspool search applied to a multibyte string */ -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 *s, *se, *t, *p, *end; - const UChar *tail; - ptrdiff_t skip, tlen1; - -# ifdef ONIG_DEBUG_SEARCH - fprintf(stderr, "bm_search_notrev: text: %"PRIuPTR" (%p), text_end: %"PRIuPTR" (%p), text_range: %"PRIuPTR" (%p)\n", - (uintptr_t )text, text, (uintptr_t )text_end, text_end, (uintptr_t )text_range, text_range); -# endif - - tail = target_end - 1; - tlen1 = tail - target; - end = text_range; - if (end + tlen1 > text_end) - end = text_end - tlen1; - - s = text; - - if (IS_NULL(reg->int_map)) { - while (s < end) { - p = se = s + tlen1; - t = tail; - while (*p == *t) { - if (t == target) return (UChar* )s; - p--; t--; - } - skip = reg->map[*se]; - t = s; - do { - s += enclen(reg->enc, s, end); - } while ((s - t) < skip && s < end); - } - } - else { -# if OPT_EXACT_MAXLEN >= ONIG_CHAR_TABLE_SIZE - while (s < end) { - p = se = s + tlen1; - t = tail; - while (*p == *t) { - if (t == target) return (UChar* )s; - p--; t--; - } - skip = reg->int_map[*se]; - t = s; - do { - s += enclen(reg->enc, s, end); - } while ((s - t) < skip && s < end); - } -# endif - } - - return (UChar* )NULL; -} - -/* Boyer-Moore-Horspool search */ -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 *s, *t, *p, *end; - const UChar *tail; - -# ifdef ONIG_DEBUG_SEARCH - fprintf(stderr, "bm_search: text: %"PRIuPTR" (%p), text_end: %"PRIuPTR" (%p), text_range: %"PRIuPTR" (%p)\n", - (uintptr_t )text, text, (uintptr_t )text_end, text_end, (uintptr_t )text_range, text_range); -# endif - - end = text_range + (target_end - target) - 1; - if (end > text_end) - end = text_end; - - tail = target_end - 1; - s = text + (target_end - target) - 1; - if (IS_NULL(reg->int_map)) { - while (s < end) { - p = s; - t = tail; -# ifdef ONIG_DEBUG_SEARCH - fprintf(stderr, "bm_search_loop: pos: %"PRIdPTR" %s\n", - (intptr_t )(s - text), s); -# endif - while (*p == *t) { - if (t == target) return (UChar* )p; - p--; t--; - } - s += reg->map[*s]; - } - } - else { /* see int_map[] */ -# if OPT_EXACT_MAXLEN >= ONIG_CHAR_TABLE_SIZE - while (s < end) { - p = s; - t = tail; - while (*p == *t) { - if (t == target) return (UChar* )p; - p--; t--; - } - s += reg->int_map[*s]; - } -# endif - } - return (UChar* )NULL; -} - -/* Boyer-Moore-Horspool search applied to a multibyte string (ignore case) */ -static UChar* -bm_search_notrev_ic(regex_t* reg, const UChar* target, const UChar* target_end, - const UChar* text, const UChar* text_end, - const UChar* text_range) -{ - const UChar *s, *se, *t, *end; - const UChar *tail; - ptrdiff_t skip, tlen1; - OnigEncoding enc = reg->enc; - int case_fold_flag = reg->case_fold_flag; - -# ifdef ONIG_DEBUG_SEARCH - fprintf(stderr, "bm_search_notrev_ic: text: %d (%p), text_end: %d (%p), text_range: %d (%p)\n", - (int )text, text, (int )text_end, text_end, (int )text_range, text_range); -# endif - - tail = target_end - 1; - tlen1 = tail - target; - end = text_range; - if (end + tlen1 > text_end) - end = text_end - tlen1; - - s = text; - - if (IS_NULL(reg->int_map)) { - while (s < end) { - se = s + tlen1; - if (str_lower_case_match(enc, case_fold_flag, target, target_end, - s, se + 1)) - return (UChar* )s; - skip = reg->map[*se]; - t = s; - do { - s += enclen(reg->enc, s, end); - } while ((s - t) < skip && s < end); - } - } - else { -# if OPT_EXACT_MAXLEN >= ONIG_CHAR_TABLE_SIZE - while (s < end) { - se = s + tlen1; - if (str_lower_case_match(enc, case_fold_flag, target, target_end, - s, se + 1)) - return (UChar* )s; - skip = reg->int_map[*se]; - t = s; - do { - s += enclen(reg->enc, s, end); - } while ((s - t) < skip && s < end); - } -# endif - } - - return (UChar* )NULL; -} - -/* Boyer-Moore-Horspool search (ignore case) */ -static UChar* -bm_search_ic(regex_t* reg, const UChar* target, const UChar* target_end, - const UChar* text, const UChar* text_end, const UChar* text_range) -{ - const UChar *s, *p, *end; - const UChar *tail; - OnigEncoding enc = reg->enc; - int case_fold_flag = reg->case_fold_flag; - -# ifdef ONIG_DEBUG_SEARCH - fprintf(stderr, "bm_search_ic: text: %d (%p), text_end: %d (%p), text_range: %d (%p)\n", - (int )text, text, (int )text_end, text_end, (int )text_range, text_range); -# endif - - end = text_range + (target_end - target) - 1; - if (end > text_end) - end = text_end; - - tail = target_end - 1; - s = text + (target_end - target) - 1; - if (IS_NULL(reg->int_map)) { - while (s < end) { - p = s - (target_end - target) + 1; - if (str_lower_case_match(enc, case_fold_flag, target, target_end, - p, s + 1)) - return (UChar* )p; - s += reg->map[*s]; - } - } - else { /* see int_map[] */ -# if OPT_EXACT_MAXLEN >= ONIG_CHAR_TABLE_SIZE - while (s < end) { - p = s - (target_end - target) + 1; - if (str_lower_case_match(enc, case_fold_flag, target, target_end, - p, s + 1)) - return (UChar* )p; - s += reg->int_map[*s]; - } -# endif - } - return (UChar* )NULL; -} - -#else /* USE_SUNDAY_QUICK_SEARCH */ - -/* Sunday's quick search applied to a multibyte string */ -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 *s, *se, *t, *p, *end; - const UChar *tail; - ptrdiff_t skip, tlen1; - OnigEncoding enc = reg->enc; - -# ifdef ONIG_DEBUG_SEARCH - fprintf(stderr, "bm_search_notrev: text: %"PRIuPTR" (%p), text_end: %"PRIuPTR" (%p), text_range: %"PRIuPTR" (%p)\n", - (uintptr_t )text, text, (uintptr_t )text_end, text_end, (uintptr_t )text_range, text_range); -# endif - - tail = target_end - 1; - tlen1 = tail - target; - end = text_range; - if (end + tlen1 > text_end) - end = text_end - tlen1; - - s = text; - - if (IS_NULL(reg->int_map)) { - while (s < end) { - p = se = s + tlen1; - t = tail; - while (*p == *t) { - if (t == target) return (UChar* )s; - p--; t--; - } - if (s + 1 >= end) break; - skip = reg->map[se[1]]; - t = s; - do { - s += enclen(enc, s, end); - } while ((s - t) < skip && s < end); - } - } - else { -# if OPT_EXACT_MAXLEN >= ONIG_CHAR_TABLE_SIZE - while (s < end) { - p = se = s + tlen1; - t = tail; - while (*p == *t) { - if (t == target) return (UChar* )s; - p--; t--; - } - if (s + 1 >= end) break; - skip = reg->int_map[se[1]]; - t = s; - do { - s += enclen(enc, s, end); - } while ((s - t) < skip && s < end); - } -# endif - } - - return (UChar* )NULL; -} - -/* Sunday's quick search */ -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 *s, *t, *p, *end; - const UChar *tail; - ptrdiff_t tlen1; - -# ifdef ONIG_DEBUG_SEARCH - fprintf(stderr, "bm_search: text: %"PRIuPTR" (%p), text_end: %"PRIuPTR" (%p), text_range: %"PRIuPTR" (%p)\n", - (uintptr_t )text, text, (uintptr_t )text_end, text_end, (uintptr_t )text_range, text_range); -# endif - - tail = target_end - 1; - tlen1 = tail - target; - end = text_range + tlen1; - if (end > text_end) - end = text_end; - - s = text + tlen1; - if (IS_NULL(reg->int_map)) { - while (s < end) { - p = s; - t = tail; - while (*p == *t) { - if (t == target) return (UChar* )p; - p--; t--; - } - if (s + 1 >= end) break; - s += reg->map[s[1]]; - } - } - else { /* see int_map[] */ -# if OPT_EXACT_MAXLEN >= ONIG_CHAR_TABLE_SIZE - while (s < end) { - p = s; - t = tail; - while (*p == *t) { - if (t == target) return (UChar* )p; - p--; t--; - } - if (s + 1 >= end) break; - s += reg->int_map[s[1]]; - } -# endif - } - return (UChar* )NULL; -} - -/* Sunday's quick search applied to a multibyte string (ignore case) */ -static UChar* -bm_search_notrev_ic(regex_t* reg, const UChar* target, const UChar* target_end, - const UChar* text, const UChar* text_end, - const UChar* text_range) -{ - const UChar *s, *se, *t, *end; - const UChar *tail; - ptrdiff_t skip, tlen1; - OnigEncoding enc = reg->enc; - int case_fold_flag = reg->case_fold_flag; - -# ifdef ONIG_DEBUG_SEARCH - fprintf(stderr, "bm_search_notrev_ic: text: %"PRIuPTR" (%p), text_end: %"PRIuPTR" (%p), text_range: %"PRIuPTR" (%p)\n", - (uintptr_t )text, text, (uintptr_t )text_end, text_end, (uintptr_t )text_range, text_range); -# endif - - tail = target_end - 1; - tlen1 = tail - target; - end = text_range; - if (end + tlen1 > text_end) - end = text_end - tlen1; - - s = text; - - if (IS_NULL(reg->int_map)) { - while (s < end) { - se = s + tlen1; - if (str_lower_case_match(enc, case_fold_flag, target, target_end, - s, se + 1)) - return (UChar* )s; - if (s + 1 >= end) break; - skip = reg->map[se[1]]; - t = s; - do { - s += enclen(enc, s, end); - } while ((s - t) < skip && s < end); - } - } - else { -# if OPT_EXACT_MAXLEN >= ONIG_CHAR_TABLE_SIZE - while (s < end) { - se = s + tlen1; - if (str_lower_case_match(enc, case_fold_flag, target, target_end, - s, se + 1)) - return (UChar* )s; - if (s + 1 >= end) break; - skip = reg->int_map[se[1]]; - t = s; - do { - s += enclen(enc, s, end); - } while ((s - t) < skip && s < end); - } -# endif - } - - return (UChar* )NULL; -} - -/* Sunday's quick search (ignore case) */ -static UChar* -bm_search_ic(regex_t* reg, const UChar* target, const UChar* target_end, - const UChar* text, const UChar* text_end, const UChar* text_range) -{ - const UChar *s, *p, *end; - const UChar *tail; - ptrdiff_t tlen1; - OnigEncoding enc = reg->enc; - int case_fold_flag = reg->case_fold_flag; - -# ifdef ONIG_DEBUG_SEARCH - fprintf(stderr, "bm_search_ic: text: %"PRIuPTR" (%p), text_end: %"PRIuPTR" (%p), text_range: %"PRIuPTR" (%p)\n", - (uintptr_t )text, text, (uintptr_t )text_end, text_end, (uintptr_t )text_range, text_range); -# endif - - tail = target_end - 1; - tlen1 = tail - target; - end = text_range + tlen1; - if (end > text_end) - end = text_end; - - s = text + tlen1; - if (IS_NULL(reg->int_map)) { - while (s < end) { - p = s - tlen1; - if (str_lower_case_match(enc, case_fold_flag, target, target_end, - p, s + 1)) - return (UChar* )p; - if (s + 1 >= end) break; - s += reg->map[s[1]]; - } - } - else { /* see int_map[] */ -# if OPT_EXACT_MAXLEN >= ONIG_CHAR_TABLE_SIZE - while (s < end) { - p = s - tlen1; - if (str_lower_case_match(enc, case_fold_flag, target, target_end, - p, s + 1)) - return (UChar* )p; - if (s + 1 >= end) break; - s += reg->int_map[s[1]]; - } -# endif - } - return (UChar* )NULL; -} -#endif /* USE_SUNDAY_QUICK_SEARCH */ - -#ifdef USE_INT_MAP_BACKWARD -static int -set_bm_backward_skip(UChar* s, UChar* end, OnigEncoding enc ARG_UNUSED, - int** skip) -{ - int i, len; - - if (IS_NULL(*skip)) { - *skip = (int* )xmalloc(sizeof(int) * ONIG_CHAR_TABLE_SIZE); - if (IS_NULL(*skip)) return ONIGERR_MEMORY; - } - - len = (int )(end - s); - for (i = 0; i < ONIG_CHAR_TABLE_SIZE; i++) - (*skip)[i] = len; - - for (i = len - 1; i > 0; i--) - (*skip)[s[i]] = i; - - return 0; -} - -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 *s, *t, *p; - - s = text_end - (target_end - target); - if (text_start < s) - s = text_start; - else - s = ONIGENC_LEFT_ADJUST_CHAR_HEAD(reg->enc, adjust_text, s, text_end); - - while (s >= text) { - p = s; - t = target; - while (t < target_end && *p == *t) { - p++; t++; - } - if (t == target_end) - return (UChar* )s; - - s -= reg->int_map_backward[*s]; - s = ONIGENC_LEFT_ADJUST_CHAR_HEAD(reg->enc, adjust_text, s, text_end); - } - - return (UChar* )NULL; -} -#endif - -static UChar* -map_search(OnigEncoding enc, UChar map[], - const UChar* text, const UChar* text_range, const UChar* text_end) -{ - const UChar *s = text; - - while (s < text_range) { - if (map[*s]) return (UChar* )s; - - s += enclen(enc, s, text_end); - } - return (UChar* )NULL; -} - -static UChar* -map_search_backward(OnigEncoding enc, UChar map[], - const UChar* text, const UChar* adjust_text, - const UChar* text_start, const UChar* text_end) -{ - const UChar *s = text_start; - - while (s >= text) { - if (map[*s]) return (UChar* )s; - - s = onigenc_get_prev_char_head(enc, adjust_text, s, text_end); - } - return (UChar* )NULL; -} - -extern OnigPosition -onig_match(regex_t* reg, const UChar* str, const UChar* end, const UChar* at, OnigRegion* region, - OnigOptionType option) -{ - ptrdiff_t r; - UChar *prev; - OnigMatchArg msa; - - MATCH_ARG_INIT(msa, option, region, at, at); -#ifdef USE_COMBINATION_EXPLOSION_CHECK - { - int offset = at - str; - STATE_CHECK_BUFF_INIT(msa, end - str, offset, reg->num_comb_exp_check); - } -#endif - - if (region) { - r = onig_region_resize_clear(region, reg->num_mem + 1); - } - else - r = 0; - - if (r == 0) { - prev = (UChar* )onigenc_get_prev_char_head(reg->enc, str, at, end); - r = match_at(reg, str, end, -#ifdef USE_MATCH_RANGE_MUST_BE_INSIDE_OF_SPECIFIED_RANGE - end, -#endif - at, prev, &msa); - } - - MATCH_ARG_FREE(msa); - return r; -} - -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 *p, *pprev = (UChar* )NULL; - -#ifdef ONIG_DEBUG_SEARCH - fprintf(stderr, "forward_search_range: str: %"PRIuPTR" (%p), end: %"PRIuPTR" (%p), s: %"PRIuPTR" (%p), range: %"PRIuPTR" (%p)\n", - (uintptr_t )str, str, (uintptr_t )end, end, (uintptr_t )s, s, (uintptr_t )range, range); -#endif - - p = s; - if (reg->dmin > 0) { - if (ONIGENC_IS_SINGLEBYTE(reg->enc)) { - p += reg->dmin; - } - else { - UChar *q = p + reg->dmin; - while (p < q) p += enclen(reg->enc, p, end); - } - } - - retry: - switch (reg->optimize) { - case ONIG_OPTIMIZE_EXACT: - p = slow_search(reg->enc, reg->exact, reg->exact_end, p, end, range); - break; - case ONIG_OPTIMIZE_EXACT_IC: - p = slow_search_ic(reg->enc, reg->case_fold_flag, - reg->exact, reg->exact_end, p, end, range); - break; - - case ONIG_OPTIMIZE_EXACT_BM: - p = bm_search(reg, reg->exact, reg->exact_end, p, end, range); - break; - - case ONIG_OPTIMIZE_EXACT_BM_NOT_REV: - p = bm_search_notrev(reg, reg->exact, reg->exact_end, p, end, range); - break; - - case ONIG_OPTIMIZE_EXACT_BM_IC: - p = bm_search_ic(reg, reg->exact, reg->exact_end, p, end, range); - break; - - case ONIG_OPTIMIZE_EXACT_BM_NOT_REV_IC: - p = bm_search_notrev_ic(reg, reg->exact, reg->exact_end, p, end, range); - break; - - case ONIG_OPTIMIZE_MAP: - p = map_search(reg->enc, reg->map, p, range, end); - break; - } - - if (p && p < range) { - if (p - reg->dmin < s) { - retry_gate: - pprev = p; - p += enclen(reg->enc, p, end); - goto retry; - } - - if (reg->sub_anchor) { - UChar* prev; - - switch (reg->sub_anchor) { - case ANCHOR_BEGIN_LINE: - if (!ON_STR_BEGIN(p)) { - prev = onigenc_get_prev_char_head(reg->enc, - (pprev ? pprev : str), p, end); - if (!ONIGENC_IS_MBC_NEWLINE_EX(reg->enc, prev, str, end, reg->options, 0)) - goto retry_gate; - } - break; - - case ANCHOR_END_LINE: - if (ON_STR_END(p)) { -#ifndef USE_NEWLINE_AT_END_OF_STRING_HAS_EMPTY_LINE - prev = (UChar* )onigenc_get_prev_char_head(reg->enc, - (pprev ? pprev : str), p); - if (prev && ONIGENC_IS_MBC_NEWLINE_EX(reg->enc, prev, str, end, reg->options, 1)) - goto retry_gate; -#endif - } - else if (! ONIGENC_IS_MBC_NEWLINE_EX(reg->enc, p, str, end, reg->options, 1)) - goto retry_gate; - break; - } - } - - if (reg->dmax == 0) { - *low = p; - if (low_prev) { - if (*low > s) - *low_prev = onigenc_get_prev_char_head(reg->enc, s, p, end); - else - *low_prev = onigenc_get_prev_char_head(reg->enc, - (pprev ? pprev : str), p, end); - } - } - else { - if (reg->dmax != ONIG_INFINITE_DISTANCE) { - *low = p - reg->dmax; - if (*low > s) { - *low = onigenc_get_right_adjust_char_head_with_prev(reg->enc, s, - *low, end, (const UChar** )low_prev); - if (low_prev && IS_NULL(*low_prev)) - *low_prev = onigenc_get_prev_char_head(reg->enc, - (pprev ? pprev : s), *low, end); - } - else { - if (low_prev) - *low_prev = onigenc_get_prev_char_head(reg->enc, - (pprev ? pprev : str), *low, end); - } - } - } - /* no needs to adjust *high, *high is used as range check only */ - *high = p - reg->dmin; - -#ifdef ONIG_DEBUG_SEARCH - fprintf(stderr, - "forward_search_range success: low: %"PRIdPTR", high: %"PRIdPTR", dmin: %"PRIdPTR", dmax: %"PRIdPTR"\n", - *low - str, *high - str, reg->dmin, reg->dmax); -#endif - return 1; /* success */ - } - - return 0; /* fail */ -} - -#define BM_BACKWARD_SEARCH_LENGTH_THRESHOLD 100 - -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 *p; - - range += reg->dmin; - p = s; - - retry: - switch (reg->optimize) { - case ONIG_OPTIMIZE_EXACT: - exact_method: - p = slow_search_backward(reg->enc, reg->exact, reg->exact_end, - range, adjrange, end, p); - break; - - case ONIG_OPTIMIZE_EXACT_IC: - case ONIG_OPTIMIZE_EXACT_BM_IC: - case ONIG_OPTIMIZE_EXACT_BM_NOT_REV_IC: - p = slow_search_backward_ic(reg->enc, reg->case_fold_flag, - reg->exact, reg->exact_end, - range, adjrange, end, p); - break; - - case ONIG_OPTIMIZE_EXACT_BM: - case ONIG_OPTIMIZE_EXACT_BM_NOT_REV: -#ifdef USE_INT_MAP_BACKWARD - if (IS_NULL(reg->int_map_backward)) { - int r; - if (s - range < BM_BACKWARD_SEARCH_LENGTH_THRESHOLD) - goto exact_method; - - r = set_bm_backward_skip(reg->exact, reg->exact_end, reg->enc, - &(reg->int_map_backward)); - if (r) return r; - } - p = bm_search_backward(reg, reg->exact, reg->exact_end, range, adjrange, - end, p); -#else - goto exact_method; -#endif - break; - - case ONIG_OPTIMIZE_MAP: - p = map_search_backward(reg->enc, reg->map, range, adjrange, p, end); - break; - } - - if (p) { - if (reg->sub_anchor) { - UChar* prev; - - switch (reg->sub_anchor) { - case ANCHOR_BEGIN_LINE: - if (!ON_STR_BEGIN(p)) { - prev = onigenc_get_prev_char_head(reg->enc, str, p, end); - if (!ONIGENC_IS_MBC_NEWLINE_EX(reg->enc, prev, str, end, reg->options, 0)) { - p = prev; - goto retry; - } - } - break; - - case ANCHOR_END_LINE: - if (ON_STR_END(p)) { -#ifndef USE_NEWLINE_AT_END_OF_STRING_HAS_EMPTY_LINE - prev = onigenc_get_prev_char_head(reg->enc, adjrange, p); - if (IS_NULL(prev)) goto fail; - if (ONIGENC_IS_MBC_NEWLINE_EX(reg->enc, prev, str, end, reg->options, 1)) { - p = prev; - goto retry; - } -#endif - } - else if (! ONIGENC_IS_MBC_NEWLINE_EX(reg->enc, p, str, end, reg->options, 1)) { - p = onigenc_get_prev_char_head(reg->enc, adjrange, p, end); - if (IS_NULL(p)) goto fail; - goto retry; - } - break; - } - } - - /* no needs to adjust *high, *high is used as range check only */ - if (reg->dmax != ONIG_INFINITE_DISTANCE) { - *low = p - reg->dmax; - *high = p - reg->dmin; - *high = onigenc_get_right_adjust_char_head(reg->enc, adjrange, *high, end); - } - -#ifdef ONIG_DEBUG_SEARCH - fprintf(stderr, "backward_search_range: low: %d, high: %d\n", - (int )(*low - str), (int )(*high - str)); -#endif - return 1; /* success */ - } - - fail: -#ifdef ONIG_DEBUG_SEARCH - fprintf(stderr, "backward_search_range: fail.\n"); -#endif - return 0; /* fail */ -} - - -extern OnigPosition -onig_search(regex_t* reg, const UChar* str, const UChar* end, - const UChar* start, const UChar* range, OnigRegion* region, OnigOptionType option) -{ - return onig_search_gpos(reg, str, end, start, start, range, region, option); -} - -extern OnigPosition -onig_search_gpos(regex_t* reg, const UChar* str, const UChar* end, - const UChar* global_pos, - const UChar* start, const UChar* range, OnigRegion* region, OnigOptionType option) -{ - ptrdiff_t r; - UChar *s, *prev; - OnigMatchArg msa; -#ifdef USE_MATCH_RANGE_MUST_BE_INSIDE_OF_SPECIFIED_RANGE - const UChar *orig_start = start; - const UChar *orig_range = range; -#endif - -#ifdef ONIG_DEBUG_SEARCH - fprintf(stderr, - "onig_search (entry point): str: %"PRIuPTR" (%p), end: %"PRIuPTR", start: %"PRIuPTR", range: %"PRIuPTR"\n", - (uintptr_t )str, str, end - str, start - str, range - str); -#endif - - if (region) { - r = onig_region_resize_clear(region, reg->num_mem + 1); - if (r) goto finish_no_msa; - } - - if (start > end || start < str) goto mismatch_no_msa; - - -#ifdef USE_MATCH_RANGE_MUST_BE_INSIDE_OF_SPECIFIED_RANGE -# ifdef USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE -# define MATCH_AND_RETURN_CHECK(upper_range) \ - r = match_at(reg, str, end, (upper_range), s, prev, &msa); \ - if (r != ONIG_MISMATCH) {\ - if (r >= 0) {\ - if (! IS_FIND_LONGEST(reg->options)) {\ - goto match;\ - }\ - }\ - else goto finish; /* error */ \ - } -# else -# define MATCH_AND_RETURN_CHECK(upper_range) \ - r = match_at(reg, str, end, (upper_range), s, prev, &msa); \ - if (r != ONIG_MISMATCH) {\ - if (r >= 0) {\ - goto match;\ - }\ - else goto finish; /* error */ \ - } -# endif /* USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE */ -#else -# ifdef USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE -# define MATCH_AND_RETURN_CHECK(none) \ - r = match_at(reg, str, end, s, prev, &msa);\ - if (r != ONIG_MISMATCH) {\ - if (r >= 0) {\ - if (! IS_FIND_LONGEST(reg->options)) {\ - goto match;\ - }\ - }\ - else goto finish; /* error */ \ - } -# else -# define MATCH_AND_RETURN_CHECK(none) \ - r = match_at(reg, str, end, s, prev, &msa);\ - if (r != ONIG_MISMATCH) {\ - if (r >= 0) {\ - goto match;\ - }\ - else goto finish; /* error */ \ - } -# endif /* USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE */ -#endif /* USE_MATCH_RANGE_MUST_BE_INSIDE_OF_SPECIFIED_RANGE */ - - - /* anchor optimize: resume search range */ - if (reg->anchor != 0 && str < end) { - UChar *min_semi_end, *max_semi_end; - - if (reg->anchor & ANCHOR_BEGIN_POSITION) { - /* search start-position only */ - begin_position: - if (range > start) - { - if (global_pos > start) - { - if (global_pos < range) - range = global_pos + 1; - } - else - range = start + 1; - } - else - range = start; - } - else if (reg->anchor & ANCHOR_BEGIN_BUF) { - /* search str-position only */ - if (range > start) { - if (start != str) goto mismatch_no_msa; - range = str + 1; - } - else { - if (range <= str) { - start = str; - range = str; - } - else - goto mismatch_no_msa; - } - } - else if (reg->anchor & ANCHOR_END_BUF) { - min_semi_end = max_semi_end = (UChar* )end; - - end_buf: - if ((OnigDistance )(max_semi_end - str) < reg->anchor_dmin) - goto mismatch_no_msa; - - if (range > start) { - if ((OnigDistance )(min_semi_end - start) > reg->anchor_dmax) { - start = min_semi_end - reg->anchor_dmax; - if (start < end) - start = onigenc_get_right_adjust_char_head(reg->enc, str, start, end); - } - if ((OnigDistance )(max_semi_end - (range - 1)) < reg->anchor_dmin) { - range = max_semi_end - reg->anchor_dmin + 1; - } - - if (start > range) goto mismatch_no_msa; - /* If start == range, match with empty at end. - Backward search is used. */ - } - else { - if ((OnigDistance )(min_semi_end - range) > reg->anchor_dmax) { - range = min_semi_end - reg->anchor_dmax; - } - if ((OnigDistance )(max_semi_end - start) < reg->anchor_dmin) { - start = max_semi_end - reg->anchor_dmin; - start = ONIGENC_LEFT_ADJUST_CHAR_HEAD(reg->enc, str, start, end); - } - if (range > start) goto mismatch_no_msa; - } - } - else if (reg->anchor & ANCHOR_SEMI_END_BUF) { - UChar* pre_end = ONIGENC_STEP_BACK(reg->enc, str, end, end, 1); - - max_semi_end = (UChar* )end; - if (ONIGENC_IS_MBC_NEWLINE(reg->enc, pre_end, end)) { - min_semi_end = pre_end; - -#ifdef USE_CRNL_AS_LINE_TERMINATOR - pre_end = ONIGENC_STEP_BACK(reg->enc, str, pre_end, end, 1); - if (IS_NOT_NULL(pre_end) && - IS_NEWLINE_CRLF(reg->options) && - ONIGENC_IS_MBC_CRNL(reg->enc, pre_end, end)) { - min_semi_end = pre_end; - } -#endif - if (min_semi_end > str && start <= min_semi_end) { - goto end_buf; - } - } - else { - min_semi_end = (UChar* )end; - goto end_buf; - } - } - else if ((reg->anchor & ANCHOR_ANYCHAR_STAR_ML)) { - goto begin_position; - } - } - else if (str == end) { /* empty string */ - static const UChar address_for_empty_string[] = ""; - -#ifdef ONIG_DEBUG_SEARCH - fprintf(stderr, "onig_search: empty string.\n"); -#endif - - if (reg->threshold_len == 0) { - start = end = str = address_for_empty_string; - s = (UChar* )start; - prev = (UChar* )NULL; - - MATCH_ARG_INIT(msa, option, region, start, start); -#ifdef USE_COMBINATION_EXPLOSION_CHECK - msa.state_check_buff = (void* )0; - msa.state_check_buff_size = 0; /* NO NEED, for valgrind */ -#endif - MATCH_AND_RETURN_CHECK(end); - goto mismatch; - } - goto mismatch_no_msa; - } - -#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)); -#endif - - MATCH_ARG_INIT(msa, option, region, start, global_pos); -#ifdef USE_COMBINATION_EXPLOSION_CHECK - { - int offset = (MIN(start, range) - str); - STATE_CHECK_BUFF_INIT(msa, end - str, offset, reg->num_comb_exp_check); - } -#endif - - s = (UChar* )start; - if (range > start) { /* forward search */ - if (s > str) - prev = onigenc_get_prev_char_head(reg->enc, str, s, end); - else - prev = (UChar* )NULL; - - if (reg->optimize != ONIG_OPTIMIZE_NONE) { - UChar *sch_range, *low, *high, *low_prev; - - sch_range = (UChar* )range; - if (reg->dmax != 0) { - if (reg->dmax == ONIG_INFINITE_DISTANCE) - sch_range = (UChar* )end; - else { - sch_range += reg->dmax; - if (sch_range > end) sch_range = (UChar* )end; - } - } - - if ((end - start) < reg->threshold_len) - goto mismatch; - - if (reg->dmax != ONIG_INFINITE_DISTANCE) { - do { - if (! forward_search_range(reg, str, end, s, sch_range, - &low, &high, &low_prev)) goto mismatch; - if (s < low) { - s = low; - prev = low_prev; - } - while (s <= high) { - MATCH_AND_RETURN_CHECK(orig_range); - prev = s; - s += enclen(reg->enc, s, end); - } - } while (s < range); - goto mismatch; - } - else { /* check only. */ - if (! forward_search_range(reg, str, end, s, sch_range, - &low, &high, (UChar** )NULL)) goto mismatch; - - if ((reg->anchor & ANCHOR_ANYCHAR_STAR) != 0) { - do { - MATCH_AND_RETURN_CHECK(orig_range); - prev = s; - s += enclen(reg->enc, s, end); - - if ((reg->anchor & (ANCHOR_LOOK_BEHIND | ANCHOR_PREC_READ_NOT)) == 0) { - while (!ONIGENC_IS_MBC_NEWLINE_EX(reg->enc, prev, str, end, reg->options, 0) - && s < range) { - prev = s; - s += enclen(reg->enc, s, end); - } - } - } while (s < range); - goto mismatch; - } - } - } - - do { - MATCH_AND_RETURN_CHECK(orig_range); - prev = s; - s += enclen(reg->enc, s, end); - } while (s < range); - - if (s == range) { /* because empty match with /$/. */ - MATCH_AND_RETURN_CHECK(orig_range); - } - } - else { /* backward search */ - if (reg->optimize != ONIG_OPTIMIZE_NONE) { - UChar *low, *high, *adjrange, *sch_start; - - if (range < end) - adjrange = ONIGENC_LEFT_ADJUST_CHAR_HEAD(reg->enc, str, range, end); - else - adjrange = (UChar* )end; - - if (reg->dmax != ONIG_INFINITE_DISTANCE && - (end - range) >= reg->threshold_len) { - do { - sch_start = s + reg->dmax; - if (sch_start > end) sch_start = (UChar* )end; - if (backward_search_range(reg, str, end, sch_start, range, adjrange, - &low, &high) <= 0) - goto mismatch; - - if (s > high) - s = high; - - while (s >= low) { - prev = onigenc_get_prev_char_head(reg->enc, str, s, end); - MATCH_AND_RETURN_CHECK(orig_start); - s = prev; - } - } while (s >= range); - goto mismatch; - } - else { /* check only. */ - if ((end - range) < reg->threshold_len) goto mismatch; - - sch_start = s; - if (reg->dmax != 0) { - if (reg->dmax == ONIG_INFINITE_DISTANCE) - sch_start = (UChar* )end; - else { - sch_start += reg->dmax; - if (sch_start > end) sch_start = (UChar* )end; - else - sch_start = ONIGENC_LEFT_ADJUST_CHAR_HEAD(reg->enc, - start, sch_start, end); - } - } - if (backward_search_range(reg, str, end, sch_start, range, adjrange, - &low, &high) <= 0) goto mismatch; - } - } - - do { - prev = onigenc_get_prev_char_head(reg->enc, str, s, end); - MATCH_AND_RETURN_CHECK(orig_start); - s = prev; - } while (s >= range); - } - - mismatch: -#ifdef USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE - if (IS_FIND_LONGEST(reg->options)) { - if (msa.best_len >= 0) { - s = msa.best_s; - goto match; - } - } -#endif - r = ONIG_MISMATCH; - - finish: - MATCH_ARG_FREE(msa); - - /* If result is mismatch and no FIND_NOT_EMPTY option, - then the region is not set in match_at(). */ - if (IS_FIND_NOT_EMPTY(reg->options) && region) { - onig_region_clear(region); - } - -#ifdef ONIG_DEBUG - if (r != ONIG_MISMATCH) - fprintf(stderr, "onig_search: error %"PRIdPTRDIFF"\n", r); -#endif - return r; - - mismatch_no_msa: - r = ONIG_MISMATCH; - finish_no_msa: -#ifdef ONIG_DEBUG - if (r != ONIG_MISMATCH) - fprintf(stderr, "onig_search: error %"PRIdPTRDIFF"\n", r); -#endif - return r; - - match: - MATCH_ARG_FREE(msa); - return s - str; -} - -extern OnigPosition -onig_scan(regex_t* reg, const UChar* str, const UChar* end, - OnigRegion* region, OnigOptionType option, - int (*scan_callback)(OnigPosition, OnigPosition, OnigRegion*, void*), - void* callback_arg) -{ - OnigPosition r; - OnigPosition n; - int rs; - const UChar* start; - - n = 0; - start = str; - while (1) { - r = onig_search(reg, str, end, start, end, region, option); - if (r >= 0) { - rs = scan_callback(n, r, region, callback_arg); - n++; - if (rs != 0) - return rs; - - if (region->end[0] == start - str) - start++; - else - start = str + region->end[0]; - - if (start > end) - break; - } - else if (r == ONIG_MISMATCH) { - break; - } - else { /* error */ - return r; - } - } - - return n; -} - -extern OnigEncoding -onig_get_encoding(const regex_t* reg) -{ - return reg->enc; -} - -extern OnigOptionType -onig_get_options(const regex_t* reg) -{ - return reg->options; -} - -extern OnigCaseFoldType -onig_get_case_fold_flag(const regex_t* reg) -{ - return reg->case_fold_flag; -} - -extern const OnigSyntaxType* -onig_get_syntax(const regex_t* reg) -{ - return reg->syntax; -} - -extern int -onig_number_of_captures(const regex_t* reg) -{ - return reg->num_mem; -} - -extern int -onig_number_of_capture_histories(const regex_t* reg) -{ -#ifdef USE_CAPTURE_HISTORY - int i, n; - - n = 0; - for (i = 0; i <= ONIG_MAX_CAPTURE_HISTORY_GROUP; i++) { - if (BIT_STATUS_AT(reg->capture_history, i) != 0) - n++; - } - return n; -#else - return 0; -#endif -} - -extern void -onig_copy_encoding(OnigEncodingType *to, OnigEncoding from) -{ - *to = *from; -} - diff --git a/vendor/onig/regint.h b/vendor/onig/regint.h deleted file mode 100644 index a2f5bbb..0000000 --- a/vendor/onig/regint.h +++ /dev/null @@ -1,938 +0,0 @@ -#ifndef ONIGMO_REGINT_H -#define ONIGMO_REGINT_H -/********************************************************************** - regint.h - Onigmo (Oniguruma-mod) (regular expression library) -**********************************************************************/ -/*- - * Copyright (c) 2002-2013 K.Kosako - * Copyright (c) 2011-2016 K.Takata - * 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. - */ - -/* for debug */ -/* #define ONIG_DEBUG_PARSE_TREE */ -/* #define ONIG_DEBUG_COMPILE */ -/* #define ONIG_DEBUG_SEARCH */ -/* #define ONIG_DEBUG_MATCH */ -/* #define ONIG_DEBUG_MEMLEAK */ -/* #define ONIG_DONT_OPTIMIZE */ - -/* for byte-code statistical data. */ -/* #define ONIG_DEBUG_STATISTICS */ - -#if defined(ONIG_DEBUG_PARSE_TREE) || defined(ONIG_DEBUG_MATCH) || \ - defined(ONIG_DEBUG_SEARCH) || defined(ONIG_DEBUG_COMPILE) || \ - defined(ONIG_DEBUG_STATISTICS) || defined(ONIG_DEBUG_MEMLEAK) -# ifndef ONIG_DEBUG -# define ONIG_DEBUG -# endif -#endif - -#ifndef UNALIGNED_WORD_ACCESS -# if defined(__i386) || defined(__i386__) || defined(_M_IX86) || \ - defined(__x86_64) || defined(__x86_64__) || defined(_M_AMD64) || \ - defined(__powerpc64__) || \ - defined(__mc68020__) -# define UNALIGNED_WORD_ACCESS 1 -# else -# define UNALIGNED_WORD_ACCESS 0 -# endif -#endif - -#if UNALIGNED_WORD_ACCESS -# define PLATFORM_UNALIGNED_WORD_ACCESS -#endif - -/* config */ -/* spec. config */ -#define USE_NAMED_GROUP -#define USE_SUBEXP_CALL -#define USE_PERL_SUBEXP_CALL -#define USE_CAPITAL_P_NAMED_GROUP -#define USE_BACKREF_WITH_LEVEL /* \k, \k */ -#define USE_MONOMANIAC_CHECK_CAPTURES_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 */ -#define USE_NO_INVALID_QUANTIFIER - -/* internal config */ -/* #define USE_OP_PUSH_OR_JUMP_EXACT */ -#define USE_QTFR_PEEK_NEXT -#define USE_ST_LIBRARY -#define USE_SUNDAY_QUICK_SEARCH - -#define INIT_MATCH_STACK_SIZE 160 -#define DEFAULT_MATCH_STACK_LIMIT_SIZE 0 /* unlimited */ -#define DEFAULT_PARSE_DEPTH_LIMIT 4096 - -#define OPT_EXACT_MAXLEN 24 - -/* check config */ -#if defined(USE_PERL_SUBEXP_CALL) || defined(USE_CAPITAL_P_NAMED_GROUP) -# if !defined(USE_NAMED_GROUP) || !defined(USE_SUBEXP_CALL) -# error USE_NAMED_GROUP and USE_SUBEXP_CALL must be defined. -# endif -#endif - -#if defined(__GNUC__) -# define ARG_UNUSED __attribute__ ((unused)) -#else -# define ARG_UNUSED -#endif - -#if !defined(RUBY) && defined(RUBY_EXPORT) -# define RUBY -#endif -#ifdef RUBY -# ifndef RUBY_DEFINES_H -# include "ruby/ruby.h" -# undef xmalloc -# undef xrealloc -# undef xcalloc -# undef xfree -# endif -#else /* RUBY */ -# include "config.h" -# if SIZEOF_LONG_LONG > 0 -# define LONG_LONG long long -# endif -#endif /* RUBY */ - -#include - -/* */ -/* escape other system UChar definition */ -#ifdef ONIG_ESCAPE_UCHAR_COLLISION -# undef ONIG_ESCAPE_UCHAR_COLLISION -#endif - -#define USE_WORD_BEGIN_END /* "\<": word-begin, "\>": word-end */ -#ifdef RUBY -# undef USE_CAPTURE_HISTORY -#else -# define USE_CAPTURE_HISTORY -#endif -#define USE_VARIABLE_META_CHARS -#define USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE -/* #define USE_COMBINATION_EXPLOSION_CHECK */ /* (X*)* */ - - -#ifndef xmalloc -# define xmalloc malloc -# define xrealloc realloc -# define xcalloc calloc -# define xfree free -#endif - -#ifdef RUBY - -# define CHECK_INTERRUPT_IN_MATCH_AT rb_thread_check_ints() -# define onig_st_init_table st_init_table -# define onig_st_init_table_with_size st_init_table_with_size -# define onig_st_init_numtable st_init_numtable -# define onig_st_init_numtable_with_size st_init_numtable_with_size -# define onig_st_init_strtable st_init_strtable -# define onig_st_init_strtable_with_size st_init_strtable_with_size -# define onig_st_delete st_delete -# define onig_st_delete_safe st_delete_safe -# define onig_st_insert st_insert -# define onig_st_lookup st_lookup -# define onig_st_foreach st_foreach -# define onig_st_add_direct st_add_direct -# define onig_st_free_table st_free_table -# define onig_st_cleanup_safe st_cleanup_safe -# define onig_st_copy st_copy -# define onig_st_nothing_key_clone st_nothing_key_clone -# define onig_st_nothing_key_free st_nothing_key_free -# define onig_st_is_member st_is_member - -# define USE_UPPER_CASE_TABLE -#else /* RUBY */ - -# define CHECK_INTERRUPT_IN_MATCH_AT - -# define st_init_table onig_st_init_table -# define st_init_table_with_size onig_st_init_table_with_size -# define st_init_numtable onig_st_init_numtable -# define st_init_numtable_with_size onig_st_init_numtable_with_size -# define st_init_strtable onig_st_init_strtable -# define st_init_strtable_with_size onig_st_init_strtable_with_size -# define st_delete onig_st_delete -# define st_delete_safe onig_st_delete_safe -# define st_insert onig_st_insert -# define st_lookup onig_st_lookup -# define st_foreach onig_st_foreach -# define st_add_direct onig_st_add_direct -# define st_free_table onig_st_free_table -# define st_cleanup_safe onig_st_cleanup_safe -# define st_copy onig_st_copy -# define st_nothing_key_clone onig_st_nothing_key_clone -# define st_nothing_key_free onig_st_nothing_key_free -/* */ -# define onig_st_is_member st_is_member - -#endif /* RUBY */ - -#define STATE_CHECK_STRING_THRESHOLD_LEN 7 -#define STATE_CHECK_BUFF_MAX_SIZE 0x4000 - -#define xmemset memset -#define xmemcpy memcpy -#define xmemmove memmove - -#if ((defined(RUBY_MSVCRT_VERSION) && RUBY_MSVCRT_VERSION >= 90) \ - || (!defined(RUBY_MSVCRT_VERSION) && defined(_WIN32))) \ - && !defined(__GNUC__) -# define xalloca _alloca -# define xvsnprintf(buf,size,fmt,args) _vsnprintf_s(buf,size,_TRUNCATE,fmt,args) -# define xsnprintf sprintf_s -# define xstrcat(dest,src,size) strcat_s(dest,size,src) -#else -# define xalloca alloca -# define xvsnprintf vsnprintf -# define xsnprintf snprintf -# define xstrcat(dest,src,size) strcat(dest,src) -#endif - -#if defined(ONIG_DEBUG_MEMLEAK) && defined(_MSC_VER) -# define _CRTDBG_MAP_ALLOC -# include -# include -#endif - -#include - -#if defined(HAVE_ALLOCA_H) && (defined(_AIX) || !defined(__GNUC__)) -# include -#endif - -#include - -#include -#ifdef HAVE_SYS_TYPES_H -# include -#endif - -#ifdef HAVE_STDINT_H -# include -#endif - -#ifdef HAVE_INTTYPES_H -# include -#endif - -#include - -#ifdef _WIN32 -# include /* for alloca() */ -#endif - -#ifdef ONIG_DEBUG -# include -#endif - -#ifdef _WIN32 -# if defined(_MSC_VER) && (_MSC_VER < 1300) -# ifndef _INTPTR_T_DEFINED -# define _INTPTR_T_DEFINED -typedef int intptr_t; -# endif -# ifndef _UINTPTR_T_DEFINED -# define _UINTPTR_T_DEFINED -typedef unsigned int uintptr_t; -# endif -# endif -#endif /* _WIN32 */ - -#ifndef PRIdPTR -# ifdef _WIN64 -# define PRIdPTR "I64d" -# define PRIuPTR "I64u" -# define PRIxPTR "I64x" -# else -# define PRIdPTR "ld" -# define PRIuPTR "lu" -# define PRIxPTR "lx" -# endif -#endif - -#ifndef PRIdPTRDIFF -# define PRIdPTRDIFF PRIdPTR -#endif - -#include "regenc.h" - -RUBY_SYMBOL_EXPORT_BEGIN - -#ifdef MIN -# undef MIN -#endif -#ifdef MAX -# undef MAX -#endif -#define MIN(a,b) (((a)>(b))?(b):(a)) -#define MAX(a,b) (((a)<(b))?(b):(a)) - -#define IS_NULL(p) (((void*)(p)) == (void*)0) -#define IS_NOT_NULL(p) (((void*)(p)) != (void*)0) -#define CHECK_NULL_RETURN(p) if (IS_NULL(p)) return NULL -#define CHECK_NULL_RETURN_MEMERR(p) if (IS_NULL(p)) return ONIGERR_MEMORY -#define NULL_UCHARP ((UChar* )0) - -#define ONIG_LAST_CODE_POINT (~((OnigCodePoint )0)) - -#ifdef PLATFORM_UNALIGNED_WORD_ACCESS - -# define PLATFORM_GET_INC(val,p,type) do{\ - val = *(type* )p;\ - (p) += sizeof(type);\ -} while(0) - -#else - -# define PLATFORM_GET_INC(val,p,type) do{\ - xmemcpy(&val, (p), sizeof(type));\ - (p) += sizeof(type);\ -} while(0) - -/* sizeof(OnigCodePoint) */ -# define WORD_ALIGNMENT_SIZE SIZEOF_LONG - -# define GET_ALIGNMENT_PAD_SIZE(addr,pad_size) do {\ - (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) -= ((uintptr_t )(addr) % WORD_ALIGNMENT_SIZE);\ -} while (0) - -#endif /* PLATFORM_UNALIGNED_WORD_ACCESS */ - -/* stack pop level */ -#define STACK_POP_LEVEL_FREE 0 -#define STACK_POP_LEVEL_MEM_START 1 -#define STACK_POP_LEVEL_ALL 2 - -/* optimize flags */ -#define ONIG_OPTIMIZE_NONE 0 -#define ONIG_OPTIMIZE_EXACT 1 /* Slow Search */ -#define ONIG_OPTIMIZE_EXACT_BM 2 /* Boyer Moore Search */ -#define ONIG_OPTIMIZE_EXACT_BM_NOT_REV 3 /* BM (applied to a multibyte string) */ -#define ONIG_OPTIMIZE_EXACT_IC 4 /* Slow Search (ignore case) */ -#define ONIG_OPTIMIZE_MAP 5 /* char map */ -#define ONIG_OPTIMIZE_EXACT_BM_IC 6 /* BM (ignore case) */ -#define ONIG_OPTIMIZE_EXACT_BM_NOT_REV_IC 7 /* BM (applied to a multibyte string) (ignore case) */ - -/* bit status */ -typedef unsigned int BitStatusType; - -#define BIT_STATUS_BITS_NUM (sizeof(BitStatusType) * 8) -#define BIT_STATUS_CLEAR(stats) (stats) = 0 -#define BIT_STATUS_ON_ALL(stats) (stats) = ~((BitStatusType )0) -#define BIT_STATUS_AT(stats,n) \ - ((n) < (int )BIT_STATUS_BITS_NUM ? ((stats) & ((BitStatusType )1 << n)) : ((stats) & 1)) - -#define BIT_STATUS_ON_AT(stats,n) do {\ - if ((n) < (int )BIT_STATUS_BITS_NUM)\ - (stats) |= (1 << (n));\ - else\ - (stats) |= 1;\ -} while (0) - -#define BIT_STATUS_ON_AT_SIMPLE(stats,n) do {\ - if ((n) < (int )BIT_STATUS_BITS_NUM)\ - (stats) |= (1 << (n));\ -} while (0) - - -#define INT_MAX_LIMIT ((1UL << (SIZEOF_INT * 8 - 1)) - 1) - -#define DIGITVAL(code) ((code) - '0') -#define ODIGITVAL(code) DIGITVAL(code) -#define XDIGITVAL(enc,code) \ - (ONIGENC_IS_CODE_DIGIT(enc,code) ? DIGITVAL(code) \ - : (ONIGENC_IS_CODE_UPPER(enc,code) ? (code) - 'A' + 10 : (code) - 'a' + 10)) - -#define IS_SINGLELINE(option) ((option) & ONIG_OPTION_SINGLELINE) -#define IS_MULTILINE(option) ((option) & ONIG_OPTION_MULTILINE) -#define IS_IGNORECASE(option) ((option) & ONIG_OPTION_IGNORECASE) -#define IS_EXTEND(option) ((option) & ONIG_OPTION_EXTEND) -#define IS_FIND_LONGEST(option) ((option) & ONIG_OPTION_FIND_LONGEST) -#define IS_FIND_NOT_EMPTY(option) ((option) & ONIG_OPTION_FIND_NOT_EMPTY) -#define IS_FIND_CONDITION(option) ((option) & \ - (ONIG_OPTION_FIND_LONGEST | ONIG_OPTION_FIND_NOT_EMPTY)) -#define IS_NOTBOL(option) ((option) & ONIG_OPTION_NOTBOL) -#define IS_NOTEOL(option) ((option) & ONIG_OPTION_NOTEOL) -#define IS_NOTBOS(option) ((option) & ONIG_OPTION_NOTBOS) -#define IS_NOTEOS(option) ((option) & ONIG_OPTION_NOTEOS) -#define IS_ASCII_RANGE(option) ((option) & ONIG_OPTION_ASCII_RANGE) -#define IS_POSIX_BRACKET_ALL_RANGE(option) ((option) & ONIG_OPTION_POSIX_BRACKET_ALL_RANGE) -#define IS_WORD_BOUND_ALL_RANGE(option) ((option) & ONIG_OPTION_WORD_BOUND_ALL_RANGE) -#define IS_NEWLINE_CRLF(option) ((option) & ONIG_OPTION_NEWLINE_CRLF) - -/* OP_SET_OPTION is required for these options. -#define IS_DYNAMIC_OPTION(option) \ - (((option) & (ONIG_OPTION_MULTILINE | ONIG_OPTION_IGNORECASE)) != 0) -*/ -/* ignore-case and multibyte status are included in compiled code. */ -#define IS_DYNAMIC_OPTION(option) 0 - -#define DISABLE_CASE_FOLD_MULTI_CHAR(case_fold_flag) \ - ((case_fold_flag) & ~INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) - -#define REPEAT_INFINITE -1 -#define IS_REPEAT_INFINITE(n) ((n) == REPEAT_INFINITE) - -/* bitset */ -#define BITS_PER_BYTE 8 -#define SINGLE_BYTE_SIZE (1 << BITS_PER_BYTE) -#define BITS_IN_ROOM ((int )sizeof(Bits) * BITS_PER_BYTE) -#define BITSET_SIZE (SINGLE_BYTE_SIZE / BITS_IN_ROOM) - -#ifdef PLATFORM_UNALIGNED_WORD_ACCESS -typedef unsigned int Bits; -#else -typedef unsigned char Bits; -#endif -typedef Bits BitSet[BITSET_SIZE]; -typedef Bits* BitSetRef; - -#define SIZE_BITSET (int )sizeof(BitSet) - -#define BITSET_CLEAR(bs) do {\ - int i;\ - for (i = 0; i < BITSET_SIZE; i++) { (bs)[i] = 0; } \ -} while (0) - -#define BS_ROOM(bs,pos) (bs)[(int )(pos) / BITS_IN_ROOM] -#define BS_BIT(pos) (1U << ((int )(pos) % BITS_IN_ROOM)) - -#define BITSET_AT(bs, pos) (BS_ROOM(bs,pos) & BS_BIT(pos)) -#define BITSET_SET_BIT(bs, pos) BS_ROOM(bs,pos) |= BS_BIT(pos) -#define BITSET_CLEAR_BIT(bs, pos) BS_ROOM(bs,pos) &= ~(BS_BIT(pos)) -#define BITSET_INVERT_BIT(bs, pos) BS_ROOM(bs,pos) ^= BS_BIT(pos) - -/* bytes buffer */ -typedef struct _BBuf { - UChar* p; - unsigned int used; - unsigned int alloc; -} BBuf; - -#define BBUF_INIT(buf,size) onig_bbuf_init((BBuf* )(buf), (size)) - -#define BBUF_SIZE_INC(buf,inc) do{\ - UChar *tmp;\ - (buf)->alloc += (inc);\ - tmp = (UChar* )xrealloc((buf)->p, (buf)->alloc);\ - if (IS_NULL(tmp)) return(ONIGERR_MEMORY);\ - (buf)->p = tmp;\ -} while (0) - -#define BBUF_EXPAND(buf,low) do{\ - UChar *tmp;\ - do { (buf)->alloc *= 2; } while ((buf)->alloc < (unsigned int )low);\ - tmp = (UChar* )xrealloc((buf)->p, (buf)->alloc);\ - if (IS_NULL(tmp)) return(ONIGERR_MEMORY);\ - (buf)->p = tmp;\ -} while (0) - -#define BBUF_ENSURE_SIZE(buf,size) do{\ - unsigned int new_alloc = (buf)->alloc;\ - while (new_alloc < (unsigned int )(size)) { new_alloc *= 2; }\ - if ((buf)->alloc != new_alloc) {\ - UChar *tmp;\ - tmp = (UChar* )xrealloc((buf)->p, new_alloc);\ - if (IS_NULL(tmp)) return(ONIGERR_MEMORY);\ - (buf)->p = tmp;\ - (buf)->alloc = new_alloc;\ - }\ -} while (0) - -#define BBUF_WRITE(buf,pos,bytes,n) do{\ - int used = (pos) + (int )(n);\ - if ((buf)->alloc < (unsigned int )used) BBUF_EXPAND((buf),used);\ - xmemcpy((buf)->p + (pos), (bytes), (n));\ - if ((buf)->used < (unsigned int )used) (buf)->used = used;\ -} while (0) - -#define BBUF_WRITE1(buf,pos,byte) do{\ - int used = (pos) + 1;\ - if ((buf)->alloc < (unsigned int )used) BBUF_EXPAND((buf),used);\ - (buf)->p[(pos)] = (UChar )(byte);\ - if ((buf)->used < (unsigned int )used) (buf)->used = used;\ -} while (0) - -#define BBUF_ADD(buf,bytes,n) BBUF_WRITE((buf),(buf)->used,(bytes),(n)) -#define BBUF_ADD1(buf,byte) BBUF_WRITE1((buf),(buf)->used,(byte)) -#define BBUF_GET_ADD_ADDRESS(buf) ((buf)->p + (buf)->used) -#define BBUF_GET_OFFSET_POS(buf) ((buf)->used) - -/* from < to */ -#define BBUF_MOVE_RIGHT(buf,from,to,n) do {\ - if ((unsigned int )((to)+(n)) > (buf)->alloc) BBUF_EXPAND((buf),(to) + (n));\ - xmemmove((buf)->p + (to), (buf)->p + (from), (n));\ - if ((unsigned int )((to)+(n)) > (buf)->used) (buf)->used = (to) + (n);\ -} while (0) - -/* from > to */ -#define BBUF_MOVE_LEFT(buf,from,to,n) do {\ - xmemmove((buf)->p + (to), (buf)->p + (from), (n));\ -} while (0) - -/* from > to */ -#define BBUF_MOVE_LEFT_REDUCE(buf,from,to) do {\ - xmemmove((buf)->p + (to), (buf)->p + (from), (buf)->used - (from));\ - (buf)->used -= (from - to);\ -} while (0) - -#define BBUF_INSERT(buf,pos,bytes,n) do {\ - if (pos >= (buf)->used) {\ - BBUF_WRITE(buf,pos,bytes,n);\ - }\ - else {\ - BBUF_MOVE_RIGHT((buf),(pos),(pos) + (n),((buf)->used - (pos)));\ - xmemcpy((buf)->p + (pos), (bytes), (n));\ - }\ -} while (0) - -#define BBUF_GET_BYTE(buf, pos) (buf)->p[(pos)] - - -#define ANCHOR_BEGIN_BUF (1<<0) -#define ANCHOR_BEGIN_LINE (1<<1) -#define ANCHOR_BEGIN_POSITION (1<<2) -#define ANCHOR_END_BUF (1<<3) -#define ANCHOR_SEMI_END_BUF (1<<4) -#define ANCHOR_END_LINE (1<<5) - -#define ANCHOR_WORD_BOUND (1<<6) -#define ANCHOR_NOT_WORD_BOUND (1<<7) -#define ANCHOR_WORD_BEGIN (1<<8) -#define ANCHOR_WORD_END (1<<9) -#define ANCHOR_PREC_READ (1<<10) -#define ANCHOR_PREC_READ_NOT (1<<11) -#define ANCHOR_LOOK_BEHIND (1<<12) -#define ANCHOR_LOOK_BEHIND_NOT (1<<13) - -#define ANCHOR_ANYCHAR_STAR (1<<14) /* ".*" optimize info */ -#define ANCHOR_ANYCHAR_STAR_ML (1<<15) /* ".*" optimize info (multi-line) */ - -#define ANCHOR_KEEP (1<<16) - -/* operation code */ -enum OpCode { - OP_FINISH = 0, /* matching process terminator (no more alternative) */ - OP_END = 1, /* pattern code terminator (success end) */ - - OP_EXACT1 = 2, /* single byte, N = 1 */ - OP_EXACT2, /* single byte, N = 2 */ - OP_EXACT3, /* single byte, N = 3 */ - OP_EXACT4, /* single byte, N = 4 */ - OP_EXACT5, /* single byte, N = 5 */ - OP_EXACTN, /* single byte */ - OP_EXACTMB2N1, /* mb-length = 2 N = 1 */ - OP_EXACTMB2N2, /* mb-length = 2 N = 2 */ - OP_EXACTMB2N3, /* mb-length = 2 N = 3 */ - OP_EXACTMB2N, /* mb-length = 2 */ - OP_EXACTMB3N, /* mb-length = 3 */ - OP_EXACTMBN, /* other length */ - - OP_EXACT1_IC, /* single byte, N = 1, ignore case */ - OP_EXACTN_IC, /* single byte, ignore case */ - - OP_CCLASS, - OP_CCLASS_MB, - OP_CCLASS_MIX, - OP_CCLASS_NOT, - OP_CCLASS_MB_NOT, - OP_CCLASS_MIX_NOT, - - OP_ANYCHAR, /* "." */ - OP_ANYCHAR_ML, /* "." multi-line */ - OP_ANYCHAR_STAR, /* ".*" */ - OP_ANYCHAR_ML_STAR, /* ".*" multi-line */ - OP_ANYCHAR_STAR_PEEK_NEXT, - OP_ANYCHAR_ML_STAR_PEEK_NEXT, - - OP_WORD, - OP_NOT_WORD, - OP_WORD_BOUND, - OP_NOT_WORD_BOUND, - OP_WORD_BEGIN, - OP_WORD_END, - - OP_ASCII_WORD, - OP_NOT_ASCII_WORD, - OP_ASCII_WORD_BOUND, - OP_NOT_ASCII_WORD_BOUND, - OP_ASCII_WORD_BEGIN, - OP_ASCII_WORD_END, - - OP_BEGIN_BUF, - OP_END_BUF, - OP_BEGIN_LINE, - OP_END_LINE, - OP_SEMI_END_BUF, - OP_BEGIN_POSITION, - - OP_BACKREF1, - OP_BACKREF2, - OP_BACKREFN, - OP_BACKREFN_IC, - OP_BACKREF_MULTI, - OP_BACKREF_MULTI_IC, - OP_BACKREF_WITH_LEVEL, /* \k, \k */ - - OP_MEMORY_START, - OP_MEMORY_START_PUSH, /* push back-tracker to stack */ - OP_MEMORY_END_PUSH, /* push back-tracker to stack */ - OP_MEMORY_END_PUSH_REC, /* push back-tracker to stack */ - OP_MEMORY_END, - OP_MEMORY_END_REC, /* push marker to stack */ - - OP_KEEP, - - OP_FAIL, /* pop stack and move */ - OP_JUMP, - OP_PUSH, - OP_POP, - OP_PUSH_OR_JUMP_EXACT1, /* if match exact then push, else jump. */ - OP_PUSH_IF_PEEK_NEXT, /* if match exact then push, else none. */ - OP_REPEAT, /* {n,m} */ - OP_REPEAT_NG, /* {n,m}? (non greedy) */ - OP_REPEAT_INC, - OP_REPEAT_INC_NG, /* non greedy */ - OP_REPEAT_INC_SG, /* search and get in stack */ - OP_REPEAT_INC_NG_SG, /* search and get in stack (non greedy) */ - OP_NULL_CHECK_START, /* null loop checker start */ - OP_NULL_CHECK_END, /* null loop checker end */ - OP_NULL_CHECK_END_MEMST, /* null loop checker end (with capture status) */ - OP_NULL_CHECK_END_MEMST_PUSH, /* with capture status and push check-end */ - - OP_PUSH_POS, /* (?=...) start */ - OP_POP_POS, /* (?=...) end */ - OP_PUSH_POS_NOT, /* (?!...) start */ - OP_FAIL_POS, /* (?!...) end */ - OP_PUSH_STOP_BT, /* (?>...) start */ - OP_POP_STOP_BT, /* (?>...) end */ - OP_LOOK_BEHIND, /* (?<=...) start (no needs end opcode) */ - OP_PUSH_LOOK_BEHIND_NOT, /* (? */ - OP_RETURN, - - OP_CONDITION, - - OP_STATE_CHECK_PUSH, /* combination explosion check and push */ - OP_STATE_CHECK_PUSH_OR_JUMP, /* check ok -> push, else jump */ - OP_STATE_CHECK, /* check only */ - OP_STATE_CHECK_ANYCHAR_STAR, - OP_STATE_CHECK_ANYCHAR_ML_STAR, - - /* no need: IS_DYNAMIC_OPTION() == 0 */ - OP_SET_OPTION_PUSH, /* set option and push recover option */ - OP_SET_OPTION /* set option */ -}; - -typedef int RelAddrType; -typedef int AbsAddrType; -typedef int LengthType; -typedef int RepeatNumType; -typedef short int MemNumType; -typedef short int StateCheckNumType; -typedef void* PointerType; - -#define SIZE_OPCODE 1 -#define SIZE_RELADDR (int )sizeof(RelAddrType) -#define SIZE_ABSADDR (int )sizeof(AbsAddrType) -#define SIZE_LENGTH (int )sizeof(LengthType) -#define SIZE_MEMNUM (int )sizeof(MemNumType) -#define SIZE_STATE_CHECK_NUM (int )sizeof(StateCheckNumType) -#define SIZE_REPEATNUM (int )sizeof(RepeatNumType) -#define SIZE_OPTION (int )sizeof(OnigOptionType) -#define SIZE_CODE_POINT (int )sizeof(OnigCodePoint) -#define SIZE_POINTER (int )sizeof(PointerType) - - -#define GET_RELADDR_INC(addr,p) PLATFORM_GET_INC(addr, p, RelAddrType) -#define GET_ABSADDR_INC(addr,p) PLATFORM_GET_INC(addr, p, AbsAddrType) -#define GET_LENGTH_INC(len,p) PLATFORM_GET_INC(len, p, LengthType) -#define GET_MEMNUM_INC(num,p) PLATFORM_GET_INC(num, p, MemNumType) -#define GET_REPEATNUM_INC(num,p) PLATFORM_GET_INC(num, p, RepeatNumType) -#define GET_OPTION_INC(option,p) PLATFORM_GET_INC(option, p, OnigOptionType) -#define GET_POINTER_INC(ptr,p) PLATFORM_GET_INC(ptr, p, PointerType) -#define GET_STATE_CHECK_NUM_INC(num,p) PLATFORM_GET_INC(num, p, StateCheckNumType) - -/* code point's address must be aligned address. */ -#define GET_CODE_POINT(code,p) code = *((OnigCodePoint* )(p)) -#define GET_BYTE_INC(byte,p) do{\ - byte = *(p);\ - (p)++;\ -} while(0) - - -/* op-code + arg size */ -#define SIZE_OP_ANYCHAR_STAR SIZE_OPCODE -#define SIZE_OP_ANYCHAR_STAR_PEEK_NEXT (SIZE_OPCODE + 1) -#define SIZE_OP_JUMP (SIZE_OPCODE + SIZE_RELADDR) -#define SIZE_OP_PUSH (SIZE_OPCODE + SIZE_RELADDR) -#define SIZE_OP_POP SIZE_OPCODE -#define SIZE_OP_PUSH_OR_JUMP_EXACT1 (SIZE_OPCODE + SIZE_RELADDR + 1) -#define SIZE_OP_PUSH_IF_PEEK_NEXT (SIZE_OPCODE + SIZE_RELADDR + 1) -#define SIZE_OP_REPEAT_INC (SIZE_OPCODE + SIZE_MEMNUM) -#define SIZE_OP_REPEAT_INC_NG (SIZE_OPCODE + SIZE_MEMNUM) -#define SIZE_OP_PUSH_POS SIZE_OPCODE -#define SIZE_OP_PUSH_POS_NOT (SIZE_OPCODE + SIZE_RELADDR) -#define SIZE_OP_POP_POS SIZE_OPCODE -#define SIZE_OP_FAIL_POS 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 -#define SIZE_OP_MEMORY_START (SIZE_OPCODE + SIZE_MEMNUM) -#define SIZE_OP_MEMORY_START_PUSH (SIZE_OPCODE + SIZE_MEMNUM) -#define SIZE_OP_MEMORY_END_PUSH (SIZE_OPCODE + SIZE_MEMNUM) -#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_NULL_CHECK_START (SIZE_OPCODE + SIZE_MEMNUM) -#define SIZE_OP_NULL_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_CALL (SIZE_OPCODE + SIZE_ABSADDR) -#define SIZE_OP_RETURN SIZE_OPCODE -#define SIZE_OP_CONDITION (SIZE_OPCODE + SIZE_MEMNUM + SIZE_RELADDR) -#define SIZE_OP_PUSH_ABSENT_POS SIZE_OPCODE -#define SIZE_OP_ABSENT (SIZE_OPCODE + SIZE_RELADDR) -#define SIZE_OP_ABSENT_END SIZE_OPCODE - -#ifdef USE_COMBINATION_EXPLOSION_CHECK -# define SIZE_OP_STATE_CHECK (SIZE_OPCODE + SIZE_STATE_CHECK_NUM) -# define SIZE_OP_STATE_CHECK_PUSH (SIZE_OPCODE + SIZE_STATE_CHECK_NUM + SIZE_RELADDR) -# define SIZE_OP_STATE_CHECK_PUSH_OR_JUMP (SIZE_OPCODE + SIZE_STATE_CHECK_NUM + SIZE_RELADDR) -# define SIZE_OP_STATE_CHECK_ANYCHAR_STAR (SIZE_OPCODE + SIZE_STATE_CHECK_NUM) -#endif - -#define MC_ESC(syn) (syn)->meta_char_table.esc -#define MC_ANYCHAR(syn) (syn)->meta_char_table.anychar -#define MC_ANYTIME(syn) (syn)->meta_char_table.anytime -#define MC_ZERO_OR_ONE_TIME(syn) (syn)->meta_char_table.zero_or_one_time -#define MC_ONE_OR_MORE_TIME(syn) (syn)->meta_char_table.one_or_more_time -#define MC_ANYCHAR_ANYTIME(syn) (syn)->meta_char_table.anychar_anytime - -#define IS_MC_ESC_CODE(code, syn) \ - ((code) == MC_ESC(syn) && \ - !IS_SYNTAX_OP2((syn), ONIG_SYN_OP2_INEFFECTIVE_ESCAPE)) - - -#define SYN_POSIX_COMMON_OP \ - ( ONIG_SYN_OP_DOT_ANYCHAR | ONIG_SYN_OP_POSIX_BRACKET | \ - ONIG_SYN_OP_DECIMAL_BACKREF | \ - ONIG_SYN_OP_BRACKET_CC | ONIG_SYN_OP_ASTERISK_ZERO_INF | \ - ONIG_SYN_OP_LINE_ANCHOR | \ - ONIG_SYN_OP_ESC_CONTROL_CHARS ) - -#define SYN_GNU_REGEX_OP \ - ( ONIG_SYN_OP_DOT_ANYCHAR | ONIG_SYN_OP_BRACKET_CC | \ - ONIG_SYN_OP_POSIX_BRACKET | ONIG_SYN_OP_DECIMAL_BACKREF | \ - ONIG_SYN_OP_BRACE_INTERVAL | ONIG_SYN_OP_LPAREN_SUBEXP | \ - ONIG_SYN_OP_VBAR_ALT | \ - ONIG_SYN_OP_ASTERISK_ZERO_INF | ONIG_SYN_OP_PLUS_ONE_INF | \ - ONIG_SYN_OP_QMARK_ZERO_ONE | \ - ONIG_SYN_OP_ESC_AZ_BUF_ANCHOR | ONIG_SYN_OP_ESC_CAPITAL_G_BEGIN_ANCHOR | \ - ONIG_SYN_OP_ESC_W_WORD | \ - ONIG_SYN_OP_ESC_B_WORD_BOUND | ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END | \ - ONIG_SYN_OP_ESC_S_WHITE_SPACE | ONIG_SYN_OP_ESC_D_DIGIT | \ - ONIG_SYN_OP_LINE_ANCHOR ) - -#define SYN_GNU_REGEX_BV \ - ( ONIG_SYN_CONTEXT_INDEP_ANCHORS | ONIG_SYN_CONTEXT_INDEP_REPEAT_OPS | \ - ONIG_SYN_CONTEXT_INVALID_REPEAT_OPS | ONIG_SYN_ALLOW_INVALID_INTERVAL | \ - ONIG_SYN_BACKSLASH_ESCAPE_IN_CC | ONIG_SYN_ALLOW_DOUBLE_RANGE_OP_IN_CC ) - - -#define NCCLASS_FLAGS(cc) ((cc)->flags) -#define NCCLASS_FLAG_SET(cc,flag) (NCCLASS_FLAGS(cc) |= (flag)) -#define NCCLASS_FLAG_CLEAR(cc,flag) (NCCLASS_FLAGS(cc) &= ~(flag)) -#define IS_NCCLASS_FLAG_ON(cc,flag) ((NCCLASS_FLAGS(cc) & (flag)) != 0) - -/* cclass node */ -#define FLAG_NCCLASS_NOT (1<<0) - -#define NCCLASS_SET_NOT(nd) NCCLASS_FLAG_SET(nd, FLAG_NCCLASS_NOT) -#define NCCLASS_CLEAR_NOT(nd) NCCLASS_FLAG_CLEAR(nd, FLAG_NCCLASS_NOT) -#define IS_NCCLASS_NOT(nd) IS_NCCLASS_FLAG_ON(nd, FLAG_NCCLASS_NOT) - -typedef struct { - int type; - /* struct _Node* next; */ - /* unsigned int flags; */ -} NodeBase; - -typedef struct { - NodeBase base; - unsigned int flags; - BitSet bs; - BBuf* mbuf; /* multi-byte info or NULL */ -} CClassNode; - -typedef intptr_t OnigStackIndex; - -typedef struct _OnigStackType { - unsigned int type; - union { - struct { - UChar *pcode; /* byte code position */ - UChar *pstr; /* string position */ - UChar *pstr_prev; /* previous char position of pstr */ -#ifdef USE_COMBINATION_EXPLOSION_CHECK - unsigned int state_check; -#endif - UChar *pkeep; /* keep pattern position */ - } state; - 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 { - OnigStackIndex 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 */ - OnigStackIndex start; /* prev. info (for backtrack "(...)*" ) */ - OnigStackIndex end; /* prev. info (for backtrack "(...)*" ) */ - } mem; - struct { - int num; /* null check id */ - UChar *pstr; /* start position */ - } null_check; -#ifdef USE_SUBEXP_CALL - struct { - UChar *ret_addr; /* byte code position */ - int num; /* null check id */ - UChar *pstr; /* string position */ - } call_frame; -#endif - struct { - UChar *abs_pstr; /* absent start position */ - const UChar *end_pstr; /* end position */ - } absent_pos; - } u; -} OnigStackType; - -typedef struct { - void* stack_p; - size_t stack_n; - OnigOptionType options; - OnigRegion* region; - const UChar* start; /* search start position */ - const UChar* gpos; /* global position (for \G: BEGIN_POSITION) */ -#ifdef USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE - OnigPosition best_len; /* for ONIG_OPTION_FIND_LONGEST */ - UChar* best_s; -#endif -#ifdef USE_COMBINATION_EXPLOSION_CHECK - void* state_check_buff; - int state_check_buff_size; -#endif -} OnigMatchArg; - - -#define IS_CODE_SB_WORD(enc,code) \ - (ONIGENC_IS_CODE_ASCII(code) && ONIGENC_IS_CODE_WORD(enc,code)) - -typedef struct OnigEndCallListItem { - struct OnigEndCallListItem* next; - void (*func)(void); -} OnigEndCallListItemType; - -extern void onig_add_end_call(void (*func)(void)); - - -#ifdef ONIG_DEBUG - -typedef struct { - short int opcode; - const char* name; - short int arg_type; -} OnigOpInfoType; - -extern OnigOpInfoType OnigOpInfo[]; - - -extern void onig_print_compiled_byte_code(FILE* f, UChar* bp, UChar* bpend, UChar** nextp, OnigEncoding enc); - -# ifdef ONIG_DEBUG_STATISTICS -extern void onig_statistics_init(void); -extern void onig_print_statistics(FILE* f); -# endif -#endif - -extern UChar* onig_error_code_to_format(OnigPosition code); -extern void onig_vsnprintf_with_pattern(UChar buf[], int bufsize, OnigEncoding enc, UChar* pat, UChar* pat_end, const UChar *fmt, va_list args); -extern void onig_snprintf_with_pattern(UChar buf[], int bufsize, OnigEncoding enc, UChar* pat, UChar* pat_end, const UChar *fmt, ...); -extern int onig_bbuf_init(BBuf* buf, OnigDistance size); -extern int onig_compile(regex_t* reg, const UChar* pattern, const UChar* pattern_end, OnigErrorInfo* einfo); -#ifdef RUBY -extern int onig_compile_ruby(regex_t* reg, const UChar* pattern, const UChar* pattern_end, OnigErrorInfo* einfo, const char *sourcefile, int sourceline); -#endif -extern void onig_transfer(regex_t* to, regex_t* from); -extern int onig_is_code_in_cc(OnigEncoding enc, OnigCodePoint code, CClassNode* cc); -extern int onig_is_code_in_cc_len(int enclen, OnigCodePoint code, CClassNode* cc); - -/* strend hash */ -typedef void hash_table_type; -#ifdef RUBY -# include "ruby/st.h" -#else -# include "st.h" -#endif -typedef st_data_t hash_data_type; - -extern hash_table_type* onig_st_init_strend_table_with_size(st_index_t size); -extern int onig_st_lookup_strend(hash_table_type* table, const UChar* str_key, const UChar* end_key, hash_data_type *value); -extern int onig_st_insert_strend(hash_table_type* table, const UChar* str_key, const UChar* end_key, hash_data_type value); - -#ifdef RUBY -extern size_t onig_memsize(const regex_t *reg); -extern size_t onig_region_memsize(const struct re_registers *regs); -#endif - -RUBY_SYMBOL_EXPORT_END - -#endif /* ONIGMO_REGINT_H */ diff --git a/vendor/onig/regparse.c b/vendor/onig/regparse.c deleted file mode 100644 index 1e0dfd9..0000000 --- a/vendor/onig/regparse.c +++ /dev/null @@ -1,7045 +0,0 @@ -/********************************************************************** - regparse.c - Onigmo (Oniguruma-mod) (regular expression library) -**********************************************************************/ -/*- - * Copyright (c) 2002-2008 K.Kosako - * Copyright (c) 2011-2016 K.Takata - * 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. - */ - -#include "regparse.h" -#include - -#define WARN_BUFSIZE 256 - -#define CASE_FOLD_IS_APPLIED_INSIDE_NEGATIVE_CCLASS - - -const 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_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_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 | -#ifndef RUBY - ONIG_SYN_OP2_ESC_U_HEX4 | -#endif - ONIG_SYN_OP2_ESC_CAPITAL_X_EXTENDED_GRAPHEME_CLUSTER | - ONIG_SYN_OP2_QMARK_LPAREN_CONDITION | - ONIG_SYN_OP2_ESC_CAPITAL_R_LINEBREAK | - ONIG_SYN_OP2_ESC_CAPITAL_K_KEEP | - ONIG_SYN_OP2_QMARK_TILDE_ABSENT ) - , ( 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_CC_DUP | - ONIG_SYN_WARN_REDUNDANT_NESTED_REPEAT ) - , ( ONIG_OPTION_ASCII_RANGE | ONIG_OPTION_POSIX_BRACKET_ALL_RANGE | - ONIG_OPTION_WORD_BOUND_ALL_RANGE ) - , - { - (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 */ - } -}; - -const OnigSyntaxType* OnigDefaultSyntax = ONIG_SYNTAX_RUBY; - -extern void onig_null_warn(const char* s ARG_UNUSED) { } - -#ifdef DEFAULT_WARN_FUNCTION -static OnigWarnFunc onig_warn = (OnigWarnFunc )DEFAULT_WARN_FUNCTION; -#else -static OnigWarnFunc onig_warn = onig_null_warn; -#endif - -#ifdef DEFAULT_VERB_WARN_FUNCTION -static OnigWarnFunc onig_verb_warn = (OnigWarnFunc )DEFAULT_VERB_WARN_FUNCTION; -#else -static OnigWarnFunc onig_verb_warn = onig_null_warn; -#endif - -extern void onig_set_warn_func(OnigWarnFunc f) -{ - onig_warn = f; -} - -extern void onig_set_verb_warn_func(OnigWarnFunc f) -{ - onig_verb_warn = f; -} - -static void CC_DUP_WARN(ScanEnv *env); - - -static unsigned int ParseDepthLimit = DEFAULT_PARSE_DEPTH_LIMIT; - -extern unsigned int -onig_get_parse_depth_limit(void) -{ - return ParseDepthLimit; -} - -extern int -onig_set_parse_depth_limit(unsigned int depth) -{ - if (depth == 0) - ParseDepthLimit = DEFAULT_PARSE_DEPTH_LIMIT; - else - ParseDepthLimit = depth; - return 0; -} - - -static void -bbuf_free(BBuf* bbuf) -{ - if (IS_NOT_NULL(bbuf)) { - if (IS_NOT_NULL(bbuf->p)) xfree(bbuf->p); - xfree(bbuf); - } -} - -static int -bbuf_clone(BBuf** rto, BBuf* from) -{ - int r; - BBuf *to; - - *rto = to = (BBuf* )xmalloc(sizeof(BBuf)); - CHECK_NULL_RETURN_MEMERR(to); - r = BBUF_INIT(to, from->alloc); - if (r != 0) return r; - to->used = from->used; - xmemcpy(to->p, from->p, from->used); - return 0; -} - -#define BACKREF_REL_TO_ABS(rel_no, env) \ - ((env)->num_mem + 1 + (rel_no)) - -#define ONOFF(v,f,negative) (negative) ? ((v) &= ~(f)) : ((v) |= (f)) - -#define MBCODE_START_POS(enc) \ - (OnigCodePoint )(ONIGENC_MBC_MINLEN(enc) > 1 ? 0 : 0x80) - -#define SET_ALL_MULTI_BYTE_RANGE(enc, pbuf) \ - add_code_range_to_buf(pbuf, env, MBCODE_START_POS(enc), ONIG_LAST_CODE_POINT) - -#define ADD_ALL_MULTI_BYTE_RANGE(enc, mbuf) do {\ - if (! ONIGENC_IS_SINGLEBYTE(enc)) {\ - r = SET_ALL_MULTI_BYTE_RANGE(enc, &(mbuf));\ - if (r) return r;\ - }\ -} while (0) - - -#define BITSET_SET_BIT_CHKDUP(bs, pos) do { \ - if (BITSET_AT(bs, pos)) CC_DUP_WARN(env); \ - BS_ROOM(bs, pos) |= BS_BIT(pos); \ -} while (0) - -#define BITSET_IS_EMPTY(bs,empty) do {\ - int i;\ - empty = 1;\ - for (i = 0; i < BITSET_SIZE; i++) {\ - if ((bs)[i] != 0) {\ - empty = 0; break;\ - }\ - }\ -} while (0) - -static void -bitset_set_range(ScanEnv *env, BitSetRef bs, int from, int to) -{ - int i; - for (i = from; i <= to && i < SINGLE_BYTE_SIZE; i++) { - BITSET_SET_BIT_CHKDUP(bs, i); - } -} - -#if 0 -static void -bitset_set_all(BitSetRef bs) -{ - int i; - for (i = 0; i < BITSET_SIZE; i++) { bs[i] = ~((Bits )0); } -} -#endif - -static void -bitset_invert(BitSetRef bs) -{ - int i; - for (i = 0; i < BITSET_SIZE; i++) { bs[i] = ~(bs[i]); } -} - -static void -bitset_invert_to(BitSetRef from, BitSetRef to) -{ - int i; - for (i = 0; i < BITSET_SIZE; i++) { to[i] = ~(from[i]); } -} - -static void -bitset_and(BitSetRef dest, BitSetRef bs) -{ - int i; - for (i = 0; i < BITSET_SIZE; i++) { dest[i] &= bs[i]; } -} - -static void -bitset_or(BitSetRef dest, BitSetRef bs) -{ - int i; - for (i = 0; i < BITSET_SIZE; i++) { dest[i] |= bs[i]; } -} - -static void -bitset_copy(BitSetRef dest, BitSetRef bs) -{ - int i; - for (i = 0; i < BITSET_SIZE; i++) { dest[i] = bs[i]; } -} - -#if defined(USE_NAMED_GROUP) && !defined(USE_ST_LIBRARY) -extern int -onig_strncmp(const UChar* s1, const UChar* s2, int n) -{ - int x; - - while (n-- > 0) { - x = *s2++ - *s1++; - if (x) return x; - } - return 0; -} -#endif - -extern void -onig_strcpy(UChar* dest, const UChar* src, const UChar* end) -{ - ptrdiff_t len = end - src; - if (len > 0) { - xmemcpy(dest, src, len); - dest[len] = (UChar )0; - } -} - -#ifdef USE_NAMED_GROUP -static UChar* -strdup_with_null(OnigEncoding enc, UChar* s, UChar* end) -{ - ptrdiff_t slen; - int term_len, i; - UChar *r; - - slen = end - s; - term_len = ONIGENC_MBC_MINLEN(enc); - - r = (UChar* )xmalloc(slen + term_len); - CHECK_NULL_RETURN(r); - xmemcpy(r, s, slen); - - for (i = 0; i < term_len; i++) - r[slen + i] = (UChar )0; - - return r; -} -#endif - -/* scan pattern methods */ -#define PEND_VALUE 0 - -#ifdef __GNUC__ -/* get rid of Wunused-but-set-variable and Wuninitialized */ -# define PFETCH_READY UChar* pfetch_prev = NULL; (void)pfetch_prev -#else -# define PFETCH_READY UChar* pfetch_prev -#endif -#define PEND (p < end ? 0 : 1) -#define PUNFETCH p = pfetch_prev -#define PINC do { \ - pfetch_prev = p; \ - p += enclen(enc, p, end); \ -} while (0) -#define PFETCH(c) do { \ - c = ((enc->max_enc_len == 1) ? *p : ONIGENC_MBC_TO_CODE(enc, p, end)); \ - pfetch_prev = p; \ - p += enclen(enc, p, end); \ -} while (0) - -#define PINC_S do { \ - p += enclen(enc, p, end); \ -} while (0) -#define PFETCH_S(c) do { \ - c = ((enc->max_enc_len == 1) ? *p : ONIGENC_MBC_TO_CODE(enc, p, end)); \ - p += enclen(enc, p, end); \ -} while (0) - -#define PPEEK (p < end ? ONIGENC_MBC_TO_CODE(enc, p, end) : PEND_VALUE) -#define PPEEK_IS(c) (PPEEK == (OnigCodePoint )c) - -static UChar* -strcat_capa(UChar* dest, UChar* dest_end, const UChar* src, const UChar* src_end, - size_t capa) -{ - UChar* r; - - if (dest) - r = (UChar* )xrealloc(dest, capa + 1); - else - r = (UChar* )xmalloc(capa + 1); - - CHECK_NULL_RETURN(r); - onig_strcpy(r + (dest_end - dest), src, src_end); - return r; -} - -/* dest on static area */ -static UChar* -strcat_capa_from_static(UChar* dest, UChar* dest_end, - const UChar* src, const UChar* src_end, size_t capa) -{ - UChar* r; - - r = (UChar* )xmalloc(capa + 1); - CHECK_NULL_RETURN(r); - onig_strcpy(r, dest, dest_end); - onig_strcpy(r + (dest_end - dest), src, src_end); - return r; -} - - -#ifdef USE_ST_LIBRARY - -# ifdef RUBY -# include "ruby/st.h" -# else -# include "st.h" -# endif - -typedef struct { - const UChar* s; - const UChar* end; -} st_str_end_key; - -static int -str_end_cmp(st_data_t xp, st_data_t yp) -{ - const st_str_end_key *x, *y; - const UChar *p, *q; - int c; - - x = (const st_str_end_key *)xp; - y = (const st_str_end_key *)yp; - if ((x->end - x->s) != (y->end - y->s)) - return 1; - - p = x->s; - q = y->s; - while (p < x->end) { - c = (int )*p - (int )*q; - if (c != 0) return c; - - p++; q++; - } - - return 0; -} - -static st_index_t -str_end_hash(st_data_t xp) -{ - const st_str_end_key *x = (const st_str_end_key *)xp; - const UChar *p; - st_index_t val = 0; - - p = x->s; - while (p < x->end) { - val = val * 997 + (int )*p++; - } - - return val + (val >> 5); -} - -extern hash_table_type* -onig_st_init_strend_table_with_size(st_index_t size) -{ - static const struct st_hash_type hashType = { - str_end_cmp, - str_end_hash, - }; - - return (hash_table_type* ) - onig_st_init_table_with_size(&hashType, size); -} - -extern int -onig_st_lookup_strend(hash_table_type* table, const UChar* str_key, - const UChar* end_key, hash_data_type *value) -{ - st_str_end_key key; - - key.s = (UChar* )str_key; - key.end = (UChar* )end_key; - - return onig_st_lookup(table, (st_data_t )(&key), value); -} - -extern int -onig_st_insert_strend(hash_table_type* table, const UChar* str_key, - const UChar* end_key, hash_data_type value) -{ - st_str_end_key* key; - int result; - - key = (st_str_end_key* )xmalloc(sizeof(st_str_end_key)); - key->s = (UChar* )str_key; - key->end = (UChar* )end_key; - result = onig_st_insert(table, (st_data_t )key, value); - if (result) { - xfree(key); - } - return result; -} - -#endif /* USE_ST_LIBRARY */ - - -#ifdef USE_NAMED_GROUP - -# define INIT_NAME_BACKREFS_ALLOC_NUM 8 - -typedef struct { - UChar* name; - size_t name_len; /* byte length */ - int back_num; /* number of backrefs */ - int back_alloc; - int back_ref1; - int* back_refs; -} NameEntry; - -# ifdef USE_ST_LIBRARY - -typedef st_table NameTable; -typedef st_data_t HashDataType; /* 1.6 st.h doesn't define st_data_t type */ - -# ifdef ONIG_DEBUG -static int -i_print_name_entry(UChar* key, NameEntry* e, void* arg) -{ - int i; - FILE* fp = (FILE* )arg; - - fprintf(fp, "%s: ", e->name); - if (e->back_num == 0) - fputs("-", fp); - else if (e->back_num == 1) - fprintf(fp, "%d", e->back_ref1); - else { - for (i = 0; i < e->back_num; i++) { - if (i > 0) fprintf(fp, ", "); - fprintf(fp, "%d", e->back_refs[i]); - } - } - fputs("\n", fp); - return ST_CONTINUE; -} - -extern int -onig_print_names(FILE* fp, regex_t* reg) -{ - NameTable* t = (NameTable* )reg->name_table; - - if (IS_NOT_NULL(t)) { - fprintf(fp, "name table\n"); - onig_st_foreach(t, i_print_name_entry, (HashDataType )fp); - fputs("\n", fp); - } - return 0; -} -# endif /* ONIG_DEBUG */ - -static int -i_free_name_entry(UChar* key, NameEntry* e, void* arg ARG_UNUSED) -{ - xfree(e->name); - if (IS_NOT_NULL(e->back_refs)) xfree(e->back_refs); - xfree(key); - xfree(e); - return ST_DELETE; -} - -static int -names_clear(regex_t* reg) -{ - NameTable* t = (NameTable* )reg->name_table; - - if (IS_NOT_NULL(t)) { - onig_st_foreach(t, i_free_name_entry, 0); - } - return 0; -} - -extern int -onig_names_free(regex_t* reg) -{ - int r; - NameTable* t; - - r = names_clear(reg); - if (r) return r; - - t = (NameTable* )reg->name_table; - if (IS_NOT_NULL(t)) onig_st_free_table(t); - reg->name_table = (void* )NULL; - return 0; -} - -static NameEntry* -name_find(regex_t* reg, const UChar* name, const UChar* name_end) -{ - NameEntry* e; - NameTable* t = (NameTable* )reg->name_table; - - e = (NameEntry* )NULL; - if (IS_NOT_NULL(t)) { - onig_st_lookup_strend(t, name, name_end, (HashDataType* )((void* )(&e))); - } - return e; -} - -typedef struct { - int (*func)(const UChar*, const UChar*,int,int*,regex_t*,void*); - regex_t* reg; - void* arg; - int ret; - OnigEncoding enc; -} INamesArg; - -static int -i_names(UChar* key ARG_UNUSED, NameEntry* e, INamesArg* arg) -{ - int r = (*(arg->func))(e->name, - e->name + e->name_len, - e->back_num, - (e->back_num > 1 ? e->back_refs : &(e->back_ref1)), - arg->reg, arg->arg); - if (r != 0) { - arg->ret = r; - return ST_STOP; - } - return ST_CONTINUE; -} - -extern int -onig_foreach_name(regex_t* reg, - int (*func)(const UChar*, const UChar*,int,int*,regex_t*,void*), void* arg) -{ - INamesArg narg; - NameTable* t = (NameTable* )reg->name_table; - - narg.ret = 0; - if (IS_NOT_NULL(t)) { - narg.func = func; - narg.reg = reg; - narg.arg = arg; - narg.enc = reg->enc; /* should be pattern encoding. */ - onig_st_foreach(t, i_names, (HashDataType )&narg); - } - return narg.ret; -} - -static int -i_renumber_name(UChar* key ARG_UNUSED, NameEntry* e, GroupNumRemap* map) -{ - int i; - - if (e->back_num > 1) { - for (i = 0; i < e->back_num; i++) { - e->back_refs[i] = map[e->back_refs[i]].new_val; - } - } - else if (e->back_num == 1) { - e->back_ref1 = map[e->back_ref1].new_val; - } - - return ST_CONTINUE; -} - -extern int -onig_renumber_name_table(regex_t* reg, GroupNumRemap* map) -{ - NameTable* t = (NameTable* )reg->name_table; - - if (IS_NOT_NULL(t)) { - onig_st_foreach(t, i_renumber_name, (HashDataType )map); - } - return 0; -} - - -extern int -onig_number_of_names(const regex_t* reg) -{ - NameTable* t = (NameTable* )reg->name_table; - - if (IS_NOT_NULL(t)) - return (int )t->num_entries; - else - return 0; -} - -# else /* USE_ST_LIBRARY */ - -# define INIT_NAMES_ALLOC_NUM 8 - -typedef struct { - NameEntry* e; - int num; - int alloc; -} NameTable; - -# ifdef ONIG_DEBUG -extern int -onig_print_names(FILE* fp, regex_t* reg) -{ - int i, j; - NameEntry* e; - NameTable* t = (NameTable* )reg->name_table; - - if (IS_NOT_NULL(t) && t->num > 0) { - fprintf(fp, "name table\n"); - for (i = 0; i < t->num; i++) { - e = &(t->e[i]); - fprintf(fp, "%s: ", e->name); - if (e->back_num == 0) { - fputs("-", fp); - } - else if (e->back_num == 1) { - fprintf(fp, "%d", e->back_ref1); - } - else { - for (j = 0; j < e->back_num; j++) { - if (j > 0) fprintf(fp, ", "); - fprintf(fp, "%d", e->back_refs[j]); - } - } - fputs("\n", fp); - } - fputs("\n", fp); - } - return 0; -} -# endif - -static int -names_clear(regex_t* reg) -{ - int i; - NameEntry* e; - NameTable* t = (NameTable* )reg->name_table; - - if (IS_NOT_NULL(t)) { - for (i = 0; i < t->num; i++) { - e = &(t->e[i]); - if (IS_NOT_NULL(e->name)) { - xfree(e->name); - e->name = NULL; - e->name_len = 0; - e->back_num = 0; - e->back_alloc = 0; - if (IS_NOT_NULL(e->back_refs)) xfree(e->back_refs); - e->back_refs = (int* )NULL; - } - } - if (IS_NOT_NULL(t->e)) { - xfree(t->e); - t->e = NULL; - } - t->num = 0; - } - return 0; -} - -extern int -onig_names_free(regex_t* reg) -{ - int r; - NameTable* t; - - r = names_clear(reg); - if (r) return r; - - t = (NameTable* )reg->name_table; - if (IS_NOT_NULL(t)) xfree(t); - reg->name_table = NULL; - return 0; -} - -static NameEntry* -name_find(regex_t* reg, const UChar* name, const UChar* name_end) -{ - int i, len; - NameEntry* e; - NameTable* t = (NameTable* )reg->name_table; - - if (IS_NOT_NULL(t)) { - len = name_end - name; - for (i = 0; i < t->num; i++) { - e = &(t->e[i]); - if (len == e->name_len && onig_strncmp(name, e->name, len) == 0) - return e; - } - } - return (NameEntry* )NULL; -} - -extern int -onig_foreach_name(regex_t* reg, - int (*func)(const UChar*, const UChar*,int,int*,regex_t*,void*), void* arg) -{ - int i, r; - NameEntry* e; - NameTable* t = (NameTable* )reg->name_table; - - if (IS_NOT_NULL(t)) { - for (i = 0; i < t->num; i++) { - e = &(t->e[i]); - r = (*func)(e->name, e->name + e->name_len, e->back_num, - (e->back_num > 1 ? e->back_refs : &(e->back_ref1)), - reg, arg); - if (r != 0) return r; - } - } - return 0; -} - -extern int -onig_number_of_names(const regex_t* reg) -{ - NameTable* t = (NameTable* )reg->name_table; - - if (IS_NOT_NULL(t)) - return t->num; - else - return 0; -} - -# endif /* else USE_ST_LIBRARY */ - -static int -name_add(regex_t* reg, UChar* name, UChar* name_end, int backref, ScanEnv* env) -{ - int alloc; - NameEntry* e; - NameTable* t = (NameTable* )reg->name_table; - - if (name_end - name <= 0) - return ONIGERR_EMPTY_GROUP_NAME; - - e = name_find(reg, name, name_end); - if (IS_NULL(e)) { -# ifdef USE_ST_LIBRARY - if (IS_NULL(t)) { - t = onig_st_init_strend_table_with_size(5); - reg->name_table = (void* )t; - } - e = (NameEntry* )xmalloc(sizeof(NameEntry)); - CHECK_NULL_RETURN_MEMERR(e); - - e->name = strdup_with_null(reg->enc, name, name_end); - if (IS_NULL(e->name)) { - xfree(e); - return ONIGERR_MEMORY; - } - onig_st_insert_strend(t, e->name, (e->name + (name_end - name)), - (HashDataType )e); - - e->name_len = name_end - name; - e->back_num = 0; - e->back_alloc = 0; - e->back_refs = (int* )NULL; - -# else - - if (IS_NULL(t)) { - alloc = INIT_NAMES_ALLOC_NUM; - t = (NameTable* )xmalloc(sizeof(NameTable)); - CHECK_NULL_RETURN_MEMERR(t); - t->e = NULL; - t->alloc = 0; - t->num = 0; - - t->e = (NameEntry* )xmalloc(sizeof(NameEntry) * alloc); - if (IS_NULL(t->e)) { - xfree(t); - return ONIGERR_MEMORY; - } - t->alloc = alloc; - reg->name_table = t; - goto clear; - } - else if (t->num == t->alloc) { - int i; - NameEntry* p; - - alloc = t->alloc * 2; - p = (NameEntry* )xrealloc(t->e, sizeof(NameEntry) * alloc); - CHECK_NULL_RETURN_MEMERR(p); - t->e = p; - t->alloc = alloc; - - clear: - for (i = t->num; i < t->alloc; i++) { - t->e[i].name = NULL; - t->e[i].name_len = 0; - t->e[i].back_num = 0; - t->e[i].back_alloc = 0; - t->e[i].back_refs = (int* )NULL; - } - } - e = &(t->e[t->num]); - t->num++; - e->name = strdup_with_null(reg->enc, name, name_end); - if (IS_NULL(e->name)) return ONIGERR_MEMORY; - e->name_len = name_end - name; -# endif - } - - if (e->back_num >= 1 && - ! IS_SYNTAX_BV(env->syntax, ONIG_SYN_ALLOW_MULTIPLEX_DEFINITION_NAME)) { - onig_scan_env_set_error_string(env, ONIGERR_MULTIPLEX_DEFINED_NAME, - name, name_end); - return ONIGERR_MULTIPLEX_DEFINED_NAME; - } - - e->back_num++; - if (e->back_num == 1) { - e->back_ref1 = backref; - } - else { - if (e->back_num == 2) { - alloc = INIT_NAME_BACKREFS_ALLOC_NUM; - e->back_refs = (int* )xmalloc(sizeof(int) * alloc); - CHECK_NULL_RETURN_MEMERR(e->back_refs); - e->back_alloc = alloc; - e->back_refs[0] = e->back_ref1; - e->back_refs[1] = backref; - } - else { - if (e->back_num > e->back_alloc) { - int* p; - alloc = e->back_alloc * 2; - p = (int* )xrealloc(e->back_refs, sizeof(int) * alloc); - CHECK_NULL_RETURN_MEMERR(p); - e->back_refs = p; - e->back_alloc = alloc; - } - e->back_refs[e->back_num - 1] = backref; - } - } - - return 0; -} - -extern int -onig_name_to_group_numbers(regex_t* reg, const UChar* name, - const UChar* name_end, int** nums) -{ - NameEntry* e = name_find(reg, name, name_end); - - if (IS_NULL(e)) return ONIGERR_UNDEFINED_NAME_REFERENCE; - - switch (e->back_num) { - case 0: - *nums = 0; - break; - case 1: - *nums = &(e->back_ref1); - break; - default: - *nums = e->back_refs; - break; - } - return e->back_num; -} - -extern int -onig_name_to_backref_number(regex_t* reg, const UChar* name, - const UChar* name_end, const OnigRegion *region) -{ - int i, n, *nums; - - n = onig_name_to_group_numbers(reg, name, name_end, &nums); - if (n < 0) - return n; - else if (n == 0) - return ONIGERR_PARSER_BUG; - else if (n == 1) - return nums[0]; - else { - if (IS_NOT_NULL(region)) { - for (i = n - 1; i >= 0; i--) { - if (region->beg[nums[i]] != ONIG_REGION_NOTPOS) - return nums[i]; - } - } - return nums[n - 1]; - } -} - -#else /* USE_NAMED_GROUP */ - -extern int -onig_name_to_group_numbers(regex_t* reg, const UChar* name, - const UChar* name_end, int** nums) -{ - return ONIG_NO_SUPPORT_CONFIG; -} - -extern int -onig_name_to_backref_number(regex_t* reg, const UChar* name, - const UChar* name_end, const OnigRegion* region) -{ - return ONIG_NO_SUPPORT_CONFIG; -} - -extern int -onig_foreach_name(regex_t* reg, - int (*func)(const UChar*, const UChar*,int,int*,regex_t*,void*), void* arg) -{ - return ONIG_NO_SUPPORT_CONFIG; -} - -extern int -onig_number_of_names(const regex_t* reg) -{ - return 0; -} -#endif /* else USE_NAMED_GROUP */ - -extern int -onig_noname_group_capture_is_active(const regex_t* reg) -{ - if (ONIG_IS_OPTION_ON(reg->options, ONIG_OPTION_DONT_CAPTURE_GROUP)) - return 0; - -#ifdef USE_NAMED_GROUP - if (onig_number_of_names(reg) > 0 && - IS_SYNTAX_BV(reg->syntax, ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP) && - !ONIG_IS_OPTION_ON(reg->options, ONIG_OPTION_CAPTURE_GROUP)) { - return 0; - } -#endif - - return 1; -} - - -#define INIT_SCANENV_MEMNODES_ALLOC_SIZE 16 - -static void -scan_env_clear(ScanEnv* env) -{ - int i; - - BIT_STATUS_CLEAR(env->capture_history); - BIT_STATUS_CLEAR(env->bt_mem_start); - BIT_STATUS_CLEAR(env->bt_mem_end); - BIT_STATUS_CLEAR(env->backrefed_mem); - env->error = (UChar* )NULL; - env->error_end = (UChar* )NULL; - env->num_call = 0; - env->num_mem = 0; -#ifdef USE_NAMED_GROUP - env->num_named = 0; -#endif - env->mem_alloc = 0; - env->mem_nodes_dynamic = (Node** )NULL; - - for (i = 0; i < SCANENV_MEMNODES_SIZE; i++) - env->mem_nodes_static[i] = NULL_NODE; - -#ifdef USE_COMBINATION_EXPLOSION_CHECK - env->num_comb_exp_check = 0; - env->comb_exp_max_regnum = 0; - env->curr_max_regnum = 0; - env->has_recursion = 0; -#endif - env->parse_depth = 0; - env->warnings_flag = 0; -} - -static int -scan_env_add_mem_entry(ScanEnv* env) -{ - int i, need, alloc; - Node** p; - - need = env->num_mem + 1; - if (need > ONIG_MAX_CAPTURE_GROUP_NUM) - return ONIGERR_TOO_MANY_CAPTURE_GROUPS; - if (need >= SCANENV_MEMNODES_SIZE) { - if (env->mem_alloc <= need) { - if (IS_NULL(env->mem_nodes_dynamic)) { - alloc = INIT_SCANENV_MEMNODES_ALLOC_SIZE; - p = (Node** )xmalloc(sizeof(Node*) * alloc); - CHECK_NULL_RETURN_MEMERR(p); - xmemcpy(p, env->mem_nodes_static, - sizeof(Node*) * SCANENV_MEMNODES_SIZE); - } - else { - alloc = env->mem_alloc * 2; - p = (Node** )xrealloc(env->mem_nodes_dynamic, sizeof(Node*) * alloc); - CHECK_NULL_RETURN_MEMERR(p); - } - - for (i = env->num_mem + 1; i < alloc; i++) - p[i] = NULL_NODE; - - env->mem_nodes_dynamic = p; - env->mem_alloc = alloc; - } - } - - env->num_mem++; - return env->num_mem; -} - -static int -scan_env_set_mem_node(ScanEnv* env, int num, Node* node) -{ - if (env->num_mem >= num) - SCANENV_MEM_NODES(env)[num] = node; - else - return ONIGERR_PARSER_BUG; - return 0; -} - - -extern void -onig_node_free(Node* node) -{ - start: - if (IS_NULL(node)) return ; - - switch (NTYPE(node)) { - case NT_STR: - if (NSTR(node)->capa != 0 && - IS_NOT_NULL(NSTR(node)->s) && NSTR(node)->s != NSTR(node)->buf) { - xfree(NSTR(node)->s); - } - break; - - case NT_LIST: - case NT_ALT: - onig_node_free(NCAR(node)); - { - Node* next_node = NCDR(node); - - xfree(node); - node = next_node; - goto start; - } - break; - - case NT_CCLASS: - { - CClassNode* cc = NCCLASS(node); - - if (cc->mbuf) - bbuf_free(cc->mbuf); - } - break; - - case NT_QTFR: - if (NQTFR(node)->target) - onig_node_free(NQTFR(node)->target); - break; - - case NT_ENCLOSE: - if (NENCLOSE(node)->target) - onig_node_free(NENCLOSE(node)->target); - break; - - case NT_BREF: - if (IS_NOT_NULL(NBREF(node)->back_dynamic)) - xfree(NBREF(node)->back_dynamic); - break; - - case NT_ANCHOR: - if (NANCHOR(node)->target) - onig_node_free(NANCHOR(node)->target); - break; - } - - xfree(node); -} - -static Node* -node_new(void) -{ - Node* node; - - node = (Node* )xmalloc(sizeof(Node)); - /* xmemset(node, 0, sizeof(Node)); */ - return node; -} - -static void -initialize_cclass(CClassNode* cc) -{ - BITSET_CLEAR(cc->bs); - /* cc->base.flags = 0; */ - cc->flags = 0; - cc->mbuf = NULL; -} - -static Node* -node_new_cclass(void) -{ - Node* node = node_new(); - CHECK_NULL_RETURN(node); - - SET_NTYPE(node, NT_CCLASS); - initialize_cclass(NCCLASS(node)); - return node; -} - -static Node* -node_new_ctype(int type, int not, int ascii_range) -{ - Node* node = node_new(); - CHECK_NULL_RETURN(node); - - SET_NTYPE(node, NT_CTYPE); - NCTYPE(node)->ctype = type; - NCTYPE(node)->not = not; - NCTYPE(node)->ascii_range = ascii_range; - return node; -} - -static Node* -node_new_anychar(void) -{ - Node* node = node_new(); - CHECK_NULL_RETURN(node); - - SET_NTYPE(node, NT_CANY); - return node; -} - -static Node* -node_new_list(Node* left, Node* right) -{ - Node* node = node_new(); - CHECK_NULL_RETURN(node); - - SET_NTYPE(node, NT_LIST); - NCAR(node) = left; - NCDR(node) = right; - return node; -} - -extern Node* -onig_node_new_list(Node* left, Node* right) -{ - return node_new_list(left, right); -} - -extern Node* -onig_node_list_add(Node* list, Node* x) -{ - Node *n; - - n = onig_node_new_list(x, NULL); - if (IS_NULL(n)) return NULL_NODE; - - if (IS_NOT_NULL(list)) { - while (IS_NOT_NULL(NCDR(list))) - list = NCDR(list); - - NCDR(list) = n; - } - - return n; -} - -extern Node* -onig_node_new_alt(Node* left, Node* right) -{ - Node* node = node_new(); - CHECK_NULL_RETURN(node); - - SET_NTYPE(node, NT_ALT); - NCAR(node) = left; - NCDR(node) = right; - return node; -} - -extern Node* -onig_node_new_anchor(int type) -{ - Node* node = node_new(); - CHECK_NULL_RETURN(node); - - SET_NTYPE(node, NT_ANCHOR); - NANCHOR(node)->type = type; - NANCHOR(node)->target = NULL; - NANCHOR(node)->char_len = -1; - NANCHOR(node)->ascii_range = 0; - return node; -} - -static Node* -node_new_backref(int back_num, int* backrefs, int by_name, -#ifdef USE_BACKREF_WITH_LEVEL - int exist_level, int nest_level, -#endif - ScanEnv* env) -{ - int i; - Node* node = node_new(); - - CHECK_NULL_RETURN(node); - - SET_NTYPE(node, NT_BREF); - NBREF(node)->state = 0; - NBREF(node)->back_num = back_num; - NBREF(node)->back_dynamic = (int* )NULL; - if (by_name != 0) - NBREF(node)->state |= NST_NAME_REF; - -#ifdef USE_BACKREF_WITH_LEVEL - if (exist_level != 0) { - NBREF(node)->state |= NST_NEST_LEVEL; - NBREF(node)->nest_level = nest_level; - } -#endif - - for (i = 0; i < back_num; i++) { - if (backrefs[i] <= env->num_mem && - IS_NULL(SCANENV_MEM_NODES(env)[backrefs[i]])) { - NBREF(node)->state |= NST_RECURSION; /* /...(\1).../ */ - break; - } - } - - if (back_num <= NODE_BACKREFS_SIZE) { - for (i = 0; i < back_num; i++) - NBREF(node)->back_static[i] = backrefs[i]; - } - else { - int* p = (int* )xmalloc(sizeof(int) * back_num); - if (IS_NULL(p)) { - onig_node_free(node); - return NULL; - } - NBREF(node)->back_dynamic = p; - for (i = 0; i < back_num; i++) - p[i] = backrefs[i]; - } - return node; -} - -#ifdef USE_SUBEXP_CALL -static Node* -node_new_call(UChar* name, UChar* name_end, int gnum) -{ - Node* node = node_new(); - CHECK_NULL_RETURN(node); - - SET_NTYPE(node, NT_CALL); - NCALL(node)->state = 0; - NCALL(node)->target = NULL_NODE; - NCALL(node)->name = name; - NCALL(node)->name_end = name_end; - NCALL(node)->group_num = gnum; /* call by number if gnum != 0 */ - return node; -} -#endif - -static Node* -node_new_quantifier(int lower, int upper, int by_number) -{ - Node* node = node_new(); - CHECK_NULL_RETURN(node); - - SET_NTYPE(node, NT_QTFR); - NQTFR(node)->state = 0; - NQTFR(node)->target = NULL; - NQTFR(node)->lower = lower; - NQTFR(node)->upper = upper; - NQTFR(node)->greedy = 1; - NQTFR(node)->target_empty_info = NQ_TARGET_ISNOT_EMPTY; - NQTFR(node)->head_exact = NULL_NODE; - NQTFR(node)->next_head_exact = NULL_NODE; - NQTFR(node)->is_refered = 0; - if (by_number != 0) - NQTFR(node)->state |= NST_BY_NUMBER; - -#ifdef USE_COMBINATION_EXPLOSION_CHECK - NQTFR(node)->comb_exp_check_num = 0; -#endif - - return node; -} - -static Node* -node_new_enclose(int type) -{ - Node* node = node_new(); - CHECK_NULL_RETURN(node); - - SET_NTYPE(node, NT_ENCLOSE); - NENCLOSE(node)->type = type; - NENCLOSE(node)->state = 0; - NENCLOSE(node)->regnum = 0; - NENCLOSE(node)->option = 0; - NENCLOSE(node)->target = NULL; - NENCLOSE(node)->call_addr = -1; - NENCLOSE(node)->opt_count = 0; - return node; -} - -extern Node* -onig_node_new_enclose(int type) -{ - return node_new_enclose(type); -} - -static Node* -node_new_enclose_memory(OnigOptionType option, int is_named) -{ - Node* node = node_new_enclose(ENCLOSE_MEMORY); - CHECK_NULL_RETURN(node); - if (is_named != 0) - SET_ENCLOSE_STATUS(node, NST_NAMED_GROUP); - -#ifdef USE_SUBEXP_CALL - NENCLOSE(node)->option = option; -#endif - return node; -} - -static Node* -node_new_option(OnigOptionType option) -{ - Node* node = node_new_enclose(ENCLOSE_OPTION); - CHECK_NULL_RETURN(node); - NENCLOSE(node)->option = option; - return node; -} - -extern int -onig_node_str_cat(Node* node, const UChar* s, const UChar* end) -{ - ptrdiff_t addlen = end - s; - - if (addlen > 0) { - ptrdiff_t len = NSTR(node)->end - NSTR(node)->s; - - if (NSTR(node)->capa > 0 || (len + addlen > NODE_STR_BUF_SIZE - 1)) { - UChar* p; - ptrdiff_t capa = len + addlen + NODE_STR_MARGIN; - - if (capa <= NSTR(node)->capa) { - onig_strcpy(NSTR(node)->s + len, s, end); - } - else { - if (NSTR(node)->s == NSTR(node)->buf) - p = strcat_capa_from_static(NSTR(node)->s, NSTR(node)->end, - s, end, capa); - else - p = strcat_capa(NSTR(node)->s, NSTR(node)->end, s, end, capa); - - CHECK_NULL_RETURN_MEMERR(p); - NSTR(node)->s = p; - NSTR(node)->capa = (int )capa; - } - } - else { - onig_strcpy(NSTR(node)->s + len, s, end); - } - NSTR(node)->end = NSTR(node)->s + len + addlen; - } - - return 0; -} - -extern int -onig_node_str_set(Node* node, const UChar* s, const UChar* end) -{ - onig_node_str_clear(node); - return onig_node_str_cat(node, s, end); -} - -static int -node_str_cat_char(Node* node, UChar c) -{ - UChar s[1]; - - s[0] = c; - return onig_node_str_cat(node, s, s + 1); -} - -static int -node_str_cat_codepoint(Node* node, OnigEncoding enc, OnigCodePoint c) -{ - UChar buf[ONIGENC_CODE_TO_MBC_MAXLEN]; - int num = ONIGENC_CODE_TO_MBC(enc, c, buf); - if (num < 0) return num; - return onig_node_str_cat(node, buf, buf + num); -} - -#if 0 -extern void -onig_node_conv_to_str_node(Node* node, int flag) -{ - SET_NTYPE(node, NT_STR); - NSTR(node)->flag = flag; - NSTR(node)->capa = 0; - NSTR(node)->s = NSTR(node)->buf; - NSTR(node)->end = NSTR(node)->buf; -} -#endif - -extern void -onig_node_str_clear(Node* node) -{ - if (NSTR(node)->capa != 0 && - IS_NOT_NULL(NSTR(node)->s) && NSTR(node)->s != NSTR(node)->buf) { - xfree(NSTR(node)->s); - } - - NSTR(node)->capa = 0; - NSTR(node)->flag = 0; - NSTR(node)->s = NSTR(node)->buf; - NSTR(node)->end = NSTR(node)->buf; -} - -static Node* -node_new_str(const UChar* s, const UChar* end) -{ - Node* node = node_new(); - CHECK_NULL_RETURN(node); - - SET_NTYPE(node, NT_STR); - NSTR(node)->capa = 0; - NSTR(node)->flag = 0; - NSTR(node)->s = NSTR(node)->buf; - NSTR(node)->end = NSTR(node)->buf; - if (onig_node_str_cat(node, s, end)) { - onig_node_free(node); - return NULL; - } - return node; -} - -extern Node* -onig_node_new_str(const UChar* s, const UChar* end) -{ - return node_new_str(s, end); -} - -static Node* -node_new_str_raw(UChar* s, UChar* end) -{ - Node* node = node_new_str(s, end); - if (IS_NOT_NULL(node)) - NSTRING_SET_RAW(node); - return node; -} - -static Node* -node_new_empty(void) -{ - return node_new_str(NULL, NULL); -} - -static Node* -node_new_str_raw_char(UChar c) -{ - UChar p[1]; - - p[0] = c; - return node_new_str_raw(p, p + 1); -} - -static Node* -str_node_split_last_char(StrNode* sn, OnigEncoding enc) -{ - const UChar *p; - Node* n = NULL_NODE; - - if (sn->end > sn->s) { - p = onigenc_get_prev_char_head(enc, sn->s, sn->end, sn->end); - if (p && p > sn->s) { /* can be split. */ - n = node_new_str(p, sn->end); - if (IS_NOT_NULL(n) && (sn->flag & NSTR_RAW) != 0) - NSTRING_SET_RAW(n); - sn->end = (UChar* )p; - } - } - return n; -} - -static int -str_node_can_be_split(StrNode* sn, OnigEncoding enc) -{ - if (sn->end > sn->s) { - return ((enclen(enc, sn->s, sn->end) < sn->end - sn->s) ? 1 : 0); - } - return 0; -} - -#ifdef USE_PAD_TO_SHORT_BYTE_CHAR -static int -node_str_head_pad(StrNode* sn, int num, UChar val) -{ - UChar buf[NODE_STR_BUF_SIZE]; - int i, len; - - len = sn->end - sn->s; - onig_strcpy(buf, sn->s, sn->end); - onig_strcpy(&(sn->s[num]), buf, buf + len); - sn->end += num; - - for (i = 0; i < num; i++) { - sn->s[i] = val; - } -} -#endif - -extern int -onig_scan_unsigned_number(UChar** src, const UChar* end, OnigEncoding enc) -{ - unsigned int num, val; - OnigCodePoint c; - UChar* p = *src; - PFETCH_READY; - - num = 0; - while (!PEND) { - PFETCH(c); - if (ONIGENC_IS_CODE_DIGIT(enc, c)) { - val = (unsigned int )DIGITVAL(c); - if ((INT_MAX_LIMIT - val) / 10UL < num) - return -1; /* overflow */ - - num = num * 10 + val; - } - else { - PUNFETCH; - break; - } - } - *src = p; - return num; -} - -static int -scan_unsigned_hexadecimal_number(UChar** src, UChar* end, int minlen, - int maxlen, OnigEncoding enc) -{ - OnigCodePoint c; - unsigned int num, val; - int restlen; - UChar* p = *src; - PFETCH_READY; - - restlen = maxlen - minlen; - num = 0; - while (!PEND && maxlen-- != 0) { - PFETCH(c); - if (ONIGENC_IS_CODE_XDIGIT(enc, c)) { - val = (unsigned int )XDIGITVAL(enc,c); - if ((INT_MAX_LIMIT - val) / 16UL < num) - return -1; /* overflow */ - - num = (num << 4) + XDIGITVAL(enc,c); - } - else { - PUNFETCH; - maxlen++; - break; - } - } - if (maxlen > restlen) - return -2; /* not enough digits */ - *src = p; - return num; -} - -static int -scan_unsigned_octal_number(UChar** src, UChar* end, int maxlen, - OnigEncoding enc) -{ - OnigCodePoint c; - unsigned int num, val; - UChar* p = *src; - PFETCH_READY; - - num = 0; - while (!PEND && maxlen-- != 0) { - PFETCH(c); - if (ONIGENC_IS_CODE_DIGIT(enc, c) && c < '8') { - val = ODIGITVAL(c); - if ((INT_MAX_LIMIT - val) / 8UL < num) - return -1; /* overflow */ - - num = (num << 3) + val; - } - else { - PUNFETCH; - break; - } - } - *src = p; - return num; -} - - -#define BBUF_WRITE_CODE_POINT(bbuf,pos,code) \ - BBUF_WRITE(bbuf, pos, &(code), SIZE_CODE_POINT) - -/* data format: - [n][from-1][to-1][from-2][to-2] ... [from-n][to-n] - (all data size is OnigCodePoint) - */ -static int -new_code_range(BBuf** pbuf) -{ -#define INIT_MULTI_BYTE_RANGE_SIZE (SIZE_CODE_POINT * 5) - int r; - OnigCodePoint n; - BBuf* bbuf; - - bbuf = *pbuf = (BBuf* )xmalloc(sizeof(BBuf)); - CHECK_NULL_RETURN_MEMERR(*pbuf); - r = BBUF_INIT(*pbuf, INIT_MULTI_BYTE_RANGE_SIZE); - if (r) return r; - - n = 0; - BBUF_WRITE_CODE_POINT(bbuf, 0, n); - return 0; -} - -static int -add_code_range_to_buf0(BBuf** pbuf, ScanEnv* env, OnigCodePoint from, OnigCodePoint to, - int checkdup) -{ - int r, inc_n, pos; - OnigCodePoint low, high, bound, x; - OnigCodePoint n, *data; - BBuf* bbuf; - - if (from > to) { - n = from; from = to; to = n; - } - - if (IS_NULL(*pbuf)) { - r = new_code_range(pbuf); - if (r) return r; - bbuf = *pbuf; - n = 0; - } - else { - bbuf = *pbuf; - GET_CODE_POINT(n, bbuf->p); - } - data = (OnigCodePoint* )(bbuf->p); - data++; - - bound = (from == 0) ? 0 : n; - for (low = 0; low < bound; ) { - x = (low + bound) >> 1; - if (from - 1 > data[x*2 + 1]) - low = x + 1; - else - bound = x; - } - - high = (to == ONIG_LAST_CODE_POINT) ? n : low; - for (bound = n; high < bound; ) { - x = (high + bound) >> 1; - if (to + 1 >= data[x*2]) - high = x + 1; - else - bound = x; - } - /* data[(low-1)*2+1] << from <= data[low*2] - * data[(high-1)*2+1] <= to << data[high*2] - */ - - inc_n = low + 1 - high; - if (n + inc_n > ONIG_MAX_MULTI_BYTE_RANGES_NUM) - return ONIGERR_TOO_MANY_MULTI_BYTE_RANGES; - - if (inc_n != 1) { - if (checkdup && from <= data[low*2+1] - && (data[low*2] <= from || data[low*2+1] <= to)) - CC_DUP_WARN(env); - if (from > data[low*2]) - from = data[low*2]; - if (to < data[(high - 1)*2 + 1]) - to = data[(high - 1)*2 + 1]; - } - - if (inc_n != 0) { - int from_pos = SIZE_CODE_POINT * (1 + high * 2); - int to_pos = SIZE_CODE_POINT * (1 + (low + 1) * 2); - - if (inc_n > 0) { - if (high < n) { - int size = (n - high) * 2 * SIZE_CODE_POINT; - BBUF_MOVE_RIGHT(bbuf, from_pos, to_pos, size); - } - } - else { - BBUF_MOVE_LEFT_REDUCE(bbuf, from_pos, to_pos); - } - } - - pos = SIZE_CODE_POINT * (1 + low * 2); - BBUF_ENSURE_SIZE(bbuf, pos + SIZE_CODE_POINT * 2); - BBUF_WRITE_CODE_POINT(bbuf, pos, from); - BBUF_WRITE_CODE_POINT(bbuf, pos + SIZE_CODE_POINT, to); - n += inc_n; - BBUF_WRITE_CODE_POINT(bbuf, 0, n); - - return 0; -} - -static int -add_code_range_to_buf(BBuf** pbuf, ScanEnv* env, OnigCodePoint from, OnigCodePoint to) -{ - return add_code_range_to_buf0(pbuf, env, from, to, 1); -} - -static int -add_code_range0(BBuf** pbuf, ScanEnv* env, OnigCodePoint from, OnigCodePoint to, int checkdup) -{ - if (from > to) { - if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_ALLOW_EMPTY_RANGE_IN_CC)) - return 0; - else - return ONIGERR_EMPTY_RANGE_IN_CHAR_CLASS; - } - - return add_code_range_to_buf0(pbuf, env, from, to, checkdup); -} - -static int -add_code_range(BBuf** pbuf, ScanEnv* env, OnigCodePoint from, OnigCodePoint to) -{ - return add_code_range0(pbuf, env, from, to, 1); -} - -static int -not_code_range_buf(OnigEncoding enc, BBuf* bbuf, BBuf** pbuf, ScanEnv* env) -{ - int r, i, n; - OnigCodePoint pre, from, *data, to = 0; - - *pbuf = (BBuf* )NULL; - if (IS_NULL(bbuf)) { - set_all: - return SET_ALL_MULTI_BYTE_RANGE(enc, pbuf); - } - - data = (OnigCodePoint* )(bbuf->p); - GET_CODE_POINT(n, data); - data++; - if (n <= 0) goto set_all; - - r = 0; - pre = MBCODE_START_POS(enc); - for (i = 0; i < n; i++) { - from = data[i*2]; - to = data[i*2+1]; - if (pre <= from - 1) { - r = add_code_range_to_buf(pbuf, env, pre, from - 1); - if (r != 0) return r; - } - if (to == ONIG_LAST_CODE_POINT) break; - pre = to + 1; - } - if (to < ONIG_LAST_CODE_POINT) { - r = add_code_range_to_buf(pbuf, env, to + 1, ONIG_LAST_CODE_POINT); - } - return r; -} - -#define SWAP_BBUF_NOT(bbuf1, not1, bbuf2, not2) do {\ - BBuf *tbuf; \ - int tnot; \ - tnot = not1; not1 = not2; not2 = tnot; \ - tbuf = bbuf1; bbuf1 = bbuf2; bbuf2 = tbuf; \ -} while (0) - -static int -or_code_range_buf(OnigEncoding enc, BBuf* bbuf1, int not1, - BBuf* bbuf2, int not2, BBuf** pbuf, ScanEnv* env) -{ - int r; - OnigCodePoint i, n1, *data1; - OnigCodePoint from, to; - - *pbuf = (BBuf* )NULL; - if (IS_NULL(bbuf1) && IS_NULL(bbuf2)) { - if (not1 != 0 || not2 != 0) - return SET_ALL_MULTI_BYTE_RANGE(enc, pbuf); - return 0; - } - - r = 0; - if (IS_NULL(bbuf2)) - SWAP_BBUF_NOT(bbuf1, not1, bbuf2, not2); - - if (IS_NULL(bbuf1)) { - if (not1 != 0) { - return SET_ALL_MULTI_BYTE_RANGE(enc, pbuf); - } - else { - if (not2 == 0) { - return bbuf_clone(pbuf, bbuf2); - } - else { - return not_code_range_buf(enc, bbuf2, pbuf, env); - } - } - } - - if (not1 != 0) - SWAP_BBUF_NOT(bbuf1, not1, bbuf2, not2); - - data1 = (OnigCodePoint* )(bbuf1->p); - GET_CODE_POINT(n1, data1); - data1++; - - if (not2 == 0 && not1 == 0) { /* 1 OR 2 */ - r = bbuf_clone(pbuf, bbuf2); - } - else if (not1 == 0) { /* 1 OR (not 2) */ - r = not_code_range_buf(enc, bbuf2, pbuf, env); - } - if (r != 0) return r; - - for (i = 0; i < n1; i++) { - from = data1[i*2]; - to = data1[i*2+1]; - r = add_code_range_to_buf(pbuf, env, from, to); - if (r != 0) return r; - } - return 0; -} - -static int -and_code_range1(BBuf** pbuf, ScanEnv* env, OnigCodePoint from1, OnigCodePoint to1, - OnigCodePoint* data, int n) -{ - int i, r; - OnigCodePoint from2, to2; - - for (i = 0; i < n; i++) { - from2 = data[i*2]; - to2 = data[i*2+1]; - if (from2 < from1) { - if (to2 < from1) continue; - else { - from1 = to2 + 1; - } - } - else if (from2 <= to1) { - if (to2 < to1) { - if (from1 <= from2 - 1) { - r = add_code_range_to_buf(pbuf, env, from1, from2-1); - if (r != 0) return r; - } - from1 = to2 + 1; - } - else { - to1 = from2 - 1; - } - } - else { - from1 = from2; - } - if (from1 > to1) break; - } - if (from1 <= to1) { - r = add_code_range_to_buf(pbuf, env, from1, to1); - if (r != 0) return r; - } - return 0; -} - -static int -and_code_range_buf(BBuf* bbuf1, int not1, BBuf* bbuf2, int not2, BBuf** pbuf, ScanEnv* env) -{ - int r; - OnigCodePoint i, j, n1, n2, *data1, *data2; - OnigCodePoint from, to, from1, to1, from2, to2; - - *pbuf = (BBuf* )NULL; - if (IS_NULL(bbuf1)) { - if (not1 != 0 && IS_NOT_NULL(bbuf2)) /* not1 != 0 -> not2 == 0 */ - return bbuf_clone(pbuf, bbuf2); - return 0; - } - else if (IS_NULL(bbuf2)) { - if (not2 != 0) - return bbuf_clone(pbuf, bbuf1); - return 0; - } - - if (not1 != 0) - SWAP_BBUF_NOT(bbuf1, not1, bbuf2, not2); - - data1 = (OnigCodePoint* )(bbuf1->p); - data2 = (OnigCodePoint* )(bbuf2->p); - GET_CODE_POINT(n1, data1); - GET_CODE_POINT(n2, data2); - data1++; - data2++; - - if (not2 == 0 && not1 == 0) { /* 1 AND 2 */ - for (i = 0; i < n1; i++) { - from1 = data1[i*2]; - to1 = data1[i*2+1]; - for (j = 0; j < n2; j++) { - from2 = data2[j*2]; - to2 = data2[j*2+1]; - if (from2 > to1) break; - if (to2 < from1) continue; - from = MAX(from1, from2); - to = MIN(to1, to2); - r = add_code_range_to_buf(pbuf, env, from, to); - if (r != 0) return r; - } - } - } - else if (not1 == 0) { /* 1 AND (not 2) */ - for (i = 0; i < n1; i++) { - from1 = data1[i*2]; - to1 = data1[i*2+1]; - r = and_code_range1(pbuf, env, from1, to1, data2, n2); - if (r != 0) return r; - } - } - - return 0; -} - -static int -and_cclass(CClassNode* dest, CClassNode* cc, ScanEnv* env) -{ - OnigEncoding enc = env->enc; - int r, not1, not2; - BBuf *buf1, *buf2, *pbuf = 0; - BitSetRef bsr1, bsr2; - BitSet bs1, bs2; - - not1 = IS_NCCLASS_NOT(dest); - bsr1 = dest->bs; - buf1 = dest->mbuf; - not2 = IS_NCCLASS_NOT(cc); - bsr2 = cc->bs; - buf2 = cc->mbuf; - - if (not1 != 0) { - bitset_invert_to(bsr1, bs1); - bsr1 = bs1; - } - if (not2 != 0) { - bitset_invert_to(bsr2, bs2); - bsr2 = bs2; - } - bitset_and(bsr1, bsr2); - if (bsr1 != dest->bs) { - bitset_copy(dest->bs, bsr1); - bsr1 = dest->bs; - } - if (not1 != 0) { - bitset_invert(dest->bs); - } - - if (! ONIGENC_IS_SINGLEBYTE(enc)) { - if (not1 != 0 && not2 != 0) { - r = or_code_range_buf(enc, buf1, 0, buf2, 0, &pbuf, env); - } - else { - r = and_code_range_buf(buf1, not1, buf2, not2, &pbuf, env); - if (r == 0 && not1 != 0) { - BBuf *tbuf = 0; - r = not_code_range_buf(enc, pbuf, &tbuf, env); - bbuf_free(pbuf); - pbuf = tbuf; - } - } - if (r != 0) { - bbuf_free(pbuf); - return r; - } - - dest->mbuf = pbuf; - bbuf_free(buf1); - return r; - } - return 0; -} - -static int -or_cclass(CClassNode* dest, CClassNode* cc, ScanEnv* env) -{ - OnigEncoding enc = env->enc; - int r, not1, not2; - BBuf *buf1, *buf2, *pbuf = 0; - BitSetRef bsr1, bsr2; - BitSet bs1, bs2; - - not1 = IS_NCCLASS_NOT(dest); - bsr1 = dest->bs; - buf1 = dest->mbuf; - not2 = IS_NCCLASS_NOT(cc); - bsr2 = cc->bs; - buf2 = cc->mbuf; - - if (not1 != 0) { - bitset_invert_to(bsr1, bs1); - bsr1 = bs1; - } - if (not2 != 0) { - bitset_invert_to(bsr2, bs2); - bsr2 = bs2; - } - bitset_or(bsr1, bsr2); - if (bsr1 != dest->bs) { - bitset_copy(dest->bs, bsr1); - bsr1 = dest->bs; - } - if (not1 != 0) { - bitset_invert(dest->bs); - } - - if (! ONIGENC_IS_SINGLEBYTE(enc)) { - if (not1 != 0 && not2 != 0) { - r = and_code_range_buf(buf1, 0, buf2, 0, &pbuf, env); - } - else { - r = or_code_range_buf(enc, buf1, not1, buf2, not2, &pbuf, env); - if (r == 0 && not1 != 0) { - BBuf *tbuf = 0; - r = not_code_range_buf(enc, pbuf, &tbuf, env); - bbuf_free(pbuf); - pbuf = tbuf; - } - } - if (r != 0) { - bbuf_free(pbuf); - return r; - } - - dest->mbuf = pbuf; - bbuf_free(buf1); - return r; - } - else - return 0; -} - -static void UNKNOWN_ESC_WARN(ScanEnv *env, int c); - -static OnigCodePoint -conv_backslash_value(OnigCodePoint c, ScanEnv* env) -{ - if (IS_SYNTAX_OP(env->syntax, ONIG_SYN_OP_ESC_CONTROL_CHARS)) { - switch (c) { - case 'n': return '\n'; - case 't': return '\t'; - case 'r': return '\r'; - case 'f': return '\f'; - case 'a': return '\007'; - case 'b': return '\010'; - case 'e': return '\033'; - case 'v': - if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_ESC_V_VTAB)) - return '\v'; - break; - - default: - if (('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z')) - UNKNOWN_ESC_WARN(env, c); - break; - } - } - return c; -} - -#ifdef USE_NO_INVALID_QUANTIFIER -# define is_invalid_quantifier_target(node) 0 -#else -static int -is_invalid_quantifier_target(Node* node) -{ - switch (NTYPE(node)) { - case NT_ANCHOR: - return 1; - break; - - case NT_ENCLOSE: - /* allow enclosed elements */ - /* return is_invalid_quantifier_target(NENCLOSE(node)->target); */ - break; - - case NT_LIST: - do { - if (! is_invalid_quantifier_target(NCAR(node))) return 0; - } while (IS_NOT_NULL(node = NCDR(node))); - return 0; - break; - - case NT_ALT: - do { - if (is_invalid_quantifier_target(NCAR(node))) return 1; - } while (IS_NOT_NULL(node = NCDR(node))); - break; - - default: - break; - } - return 0; -} -#endif - -/* ?:0, *:1, +:2, ??:3, *?:4, +?:5 */ -static int -popular_quantifier_num(QtfrNode* q) -{ - if (q->greedy) { - if (q->lower == 0) { - if (q->upper == 1) return 0; - else if (IS_REPEAT_INFINITE(q->upper)) return 1; - } - else if (q->lower == 1) { - if (IS_REPEAT_INFINITE(q->upper)) return 2; - } - } - else { - if (q->lower == 0) { - if (q->upper == 1) return 3; - else if (IS_REPEAT_INFINITE(q->upper)) return 4; - } - else if (q->lower == 1) { - if (IS_REPEAT_INFINITE(q->upper)) return 5; - } - } - return -1; -} - - -enum ReduceType { - RQ_ASIS = 0, /* as is */ - RQ_DEL = 1, /* delete parent */ - RQ_A, /* to '*' */ - RQ_AQ, /* to '*?' */ - RQ_QQ, /* to '??' */ - RQ_P_QQ, /* to '+)??' */ - RQ_PQ_Q /* to '+?)?' */ -}; - -static enum ReduceType const ReduceTypeTable[6][6] = { -/* '?', '*', '+', '??', '*?', '+?' p / c */ - {RQ_DEL, RQ_A, RQ_A, RQ_QQ, RQ_AQ, RQ_ASIS}, /* '?' */ - {RQ_DEL, RQ_DEL, RQ_DEL, RQ_P_QQ, RQ_P_QQ, RQ_DEL}, /* '*' */ - {RQ_A, RQ_A, RQ_DEL, RQ_ASIS, RQ_P_QQ, RQ_DEL}, /* '+' */ - {RQ_DEL, RQ_AQ, RQ_AQ, RQ_DEL, RQ_AQ, RQ_AQ}, /* '??' */ - {RQ_DEL, RQ_DEL, RQ_DEL, RQ_DEL, RQ_DEL, RQ_DEL}, /* '*?' */ - {RQ_ASIS, RQ_PQ_Q, RQ_DEL, RQ_AQ, RQ_AQ, RQ_DEL} /* '+?' */ -}; - -extern void -onig_reduce_nested_quantifier(Node* pnode, Node* cnode) -{ - int pnum, cnum; - QtfrNode *p, *c; - - p = NQTFR(pnode); - c = NQTFR(cnode); - pnum = popular_quantifier_num(p); - cnum = popular_quantifier_num(c); - if (pnum < 0 || cnum < 0) return ; - - switch (ReduceTypeTable[cnum][pnum]) { - case RQ_DEL: - *pnode = *cnode; - break; - case RQ_A: - p->target = c->target; - p->lower = 0; p->upper = REPEAT_INFINITE; p->greedy = 1; - break; - case RQ_AQ: - p->target = c->target; - p->lower = 0; p->upper = REPEAT_INFINITE; p->greedy = 0; - break; - case RQ_QQ: - p->target = c->target; - p->lower = 0; p->upper = 1; p->greedy = 0; - break; - case RQ_P_QQ: - p->target = cnode; - p->lower = 0; p->upper = 1; p->greedy = 0; - c->lower = 1; c->upper = REPEAT_INFINITE; c->greedy = 1; - return ; - break; - case RQ_PQ_Q: - p->target = cnode; - p->lower = 0; p->upper = 1; p->greedy = 1; - c->lower = 1; c->upper = REPEAT_INFINITE; c->greedy = 0; - return ; - break; - case RQ_ASIS: - p->target = cnode; - return ; - break; - } - - c->target = NULL_NODE; - onig_node_free(cnode); -} - - -enum TokenSyms { - TK_EOT = 0, /* end of token */ - TK_RAW_BYTE = 1, - TK_CHAR, - TK_STRING, - TK_CODE_POINT, - TK_ANYCHAR, - TK_CHAR_TYPE, - TK_BACKREF, - TK_CALL, - TK_ANCHOR, - TK_OP_REPEAT, - TK_INTERVAL, - TK_ANYCHAR_ANYTIME, /* SQL '%' == .* */ - TK_ALT, - TK_SUBEXP_OPEN, - TK_SUBEXP_CLOSE, - TK_CC_OPEN, - TK_QUOTE_OPEN, - TK_CHAR_PROPERTY, /* \p{...}, \P{...} */ - TK_LINEBREAK, - TK_EXTENDED_GRAPHEME_CLUSTER, - TK_KEEP, - /* in cc */ - TK_CC_CLOSE, - TK_CC_RANGE, - TK_POSIX_BRACKET_OPEN, - TK_CC_AND, /* && */ - TK_CC_CC_OPEN /* [ */ -}; - -typedef struct { - enum TokenSyms type; - int escaped; - int base; /* is number: 8, 16 (used in [....]) */ - UChar* backp; - union { - UChar* s; - int c; - OnigCodePoint code; - struct { - int subtype; - int ascii_range; - } anchor; - struct { - int lower; - int upper; - int greedy; - int possessive; - } repeat; - struct { - int num; - int ref1; - int* refs; - int by_name; -#ifdef USE_BACKREF_WITH_LEVEL - int exist_level; - int level; /* \k */ -#endif - } backref; - struct { - UChar* name; - UChar* name_end; - int gnum; - int rel; - } call; - struct { - int ctype; - int not; - } prop; - } u; -} OnigToken; - - -static int -fetch_range_quantifier(UChar** src, UChar* end, OnigToken* tok, ScanEnv* env) -{ - int low, up, syn_allow, non_low = 0; - int r = 0; - OnigCodePoint c; - OnigEncoding enc = env->enc; - UChar* p = *src; - PFETCH_READY; - - syn_allow = IS_SYNTAX_BV(env->syntax, ONIG_SYN_ALLOW_INVALID_INTERVAL); - - if (PEND) { - if (syn_allow) - return 1; /* "....{" : OK! */ - else - return ONIGERR_END_PATTERN_AT_LEFT_BRACE; /* "....{" syntax error */ - } - - if (! syn_allow) { - c = PPEEK; - if (c == ')' || c == '(' || c == '|') { - return ONIGERR_END_PATTERN_AT_LEFT_BRACE; - } - } - - low = onig_scan_unsigned_number(&p, end, env->enc); - if (low < 0) return ONIGERR_TOO_BIG_NUMBER_FOR_REPEAT_RANGE; - if (low > ONIG_MAX_REPEAT_NUM) - return ONIGERR_TOO_BIG_NUMBER_FOR_REPEAT_RANGE; - - if (p == *src) { /* can't read low */ - if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_ALLOW_INTERVAL_LOW_ABBREV)) { - /* allow {,n} as {0,n} */ - low = 0; - non_low = 1; - } - else - goto invalid; - } - - if (PEND) goto invalid; - PFETCH(c); - if (c == ',') { - UChar* prev = p; - up = onig_scan_unsigned_number(&p, end, env->enc); - if (up < 0) return ONIGERR_TOO_BIG_NUMBER_FOR_REPEAT_RANGE; - if (up > ONIG_MAX_REPEAT_NUM) - return ONIGERR_TOO_BIG_NUMBER_FOR_REPEAT_RANGE; - - if (p == prev) { - if (non_low != 0) - goto invalid; - up = REPEAT_INFINITE; /* {n,} : {n,infinite} */ - } - } - else { - if (non_low != 0) - goto invalid; - - PUNFETCH; - up = low; /* {n} : exact n times */ - r = 2; /* fixed */ - } - - if (PEND) goto invalid; - PFETCH(c); - if (IS_SYNTAX_OP(env->syntax, ONIG_SYN_OP_ESC_BRACE_INTERVAL)) { - if (c != MC_ESC(env->syntax)) goto invalid; - if (PEND) goto invalid; - PFETCH(c); - } - if (c != '}') goto invalid; - - if (!IS_REPEAT_INFINITE(up) && low > up) { - return ONIGERR_UPPER_SMALLER_THAN_LOWER_IN_REPEAT_RANGE; - } - - tok->type = TK_INTERVAL; - tok->u.repeat.lower = low; - tok->u.repeat.upper = up; - *src = p; - return r; /* 0: normal {n,m}, 2: fixed {n} */ - - invalid: - if (syn_allow) - return 1; /* OK */ - else - return ONIGERR_INVALID_REPEAT_RANGE_PATTERN; -} - -/* \M-, \C-, \c, or \... */ -static int -fetch_escaped_value(UChar** src, UChar* end, ScanEnv* env, OnigCodePoint* val) -{ - int v; - OnigCodePoint c; - OnigEncoding enc = env->enc; - UChar* p = *src; - - if (PEND) return ONIGERR_END_PATTERN_AT_ESCAPE; - - PFETCH_S(c); - switch (c) { - case 'M': - if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_ESC_CAPITAL_M_BAR_META)) { - if (PEND) return ONIGERR_END_PATTERN_AT_META; - PFETCH_S(c); - if (c != '-') return ONIGERR_META_CODE_SYNTAX; - if (PEND) return ONIGERR_END_PATTERN_AT_META; - PFETCH_S(c); - if (c == MC_ESC(env->syntax)) { - v = fetch_escaped_value(&p, end, env, &c); - if (v < 0) return v; - } - c = ((c & 0xff) | 0x80); - } - else - goto backslash; - break; - - case 'C': - if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_ESC_CAPITAL_C_BAR_CONTROL)) { - if (PEND) return ONIGERR_END_PATTERN_AT_CONTROL; - PFETCH_S(c); - if (c != '-') return ONIGERR_CONTROL_CODE_SYNTAX; - goto control; - } - else - goto backslash; - - case 'c': - if (IS_SYNTAX_OP(env->syntax, ONIG_SYN_OP_ESC_C_CONTROL)) { - control: - if (PEND) return ONIGERR_END_PATTERN_AT_CONTROL; - PFETCH_S(c); - if (c == '?') { - c = 0177; - } - else { - if (c == MC_ESC(env->syntax)) { - v = fetch_escaped_value(&p, end, env, &c); - if (v < 0) return v; - } - c &= 0x9f; - } - break; - } - /* fall through */ - - default: - { - backslash: - c = conv_backslash_value(c, env); - } - break; - } - - *src = p; - *val = c; - return 0; -} - -static int fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env); - -static OnigCodePoint -get_name_end_code_point(OnigCodePoint start) -{ - switch (start) { - case '<': return (OnigCodePoint )'>'; break; - case '\'': return (OnigCodePoint )'\''; break; - case '(': return (OnigCodePoint )')'; break; - case '{': return (OnigCodePoint )'}'; break; - default: - break; - } - - return (OnigCodePoint )0; -} - -#ifdef USE_NAMED_GROUP -# ifdef RUBY -# define ONIGENC_IS_CODE_NAME(enc, c) TRUE -# else -# define ONIGENC_IS_CODE_NAME(enc, c) ONIGENC_IS_CODE_WORD(enc, c) -# endif - -# ifdef USE_BACKREF_WITH_LEVEL -/* - \k, \k - \k, \k - \k<-num+n>, \k<-num-n> -*/ -static int -fetch_name_with_level(OnigCodePoint start_code, UChar** src, UChar* end, - UChar** rname_end, ScanEnv* env, - int* rback_num, int* rlevel) -{ - int r, sign, is_num, exist_level; - OnigCodePoint end_code; - OnigCodePoint c = 0; - OnigEncoding enc = env->enc; - UChar *name_end; - UChar *pnum_head; - UChar *p = *src; - PFETCH_READY; - - *rback_num = 0; - is_num = exist_level = 0; - sign = 1; - pnum_head = *src; - - end_code = get_name_end_code_point(start_code); - - name_end = end; - r = 0; - if (PEND) { - return ONIGERR_EMPTY_GROUP_NAME; - } - else { - PFETCH(c); - if (c == end_code) - return ONIGERR_EMPTY_GROUP_NAME; - - if (ONIGENC_IS_CODE_DIGIT(enc, c)) { - is_num = 1; - } - else if (c == '-') { - is_num = 2; - sign = -1; - pnum_head = p; - } - else if (!ONIGENC_IS_CODE_NAME(enc, c)) { - r = ONIGERR_INVALID_CHAR_IN_GROUP_NAME; - } - } - - while (!PEND) { - name_end = p; - PFETCH(c); - if (c == end_code || c == ')' || c == '+' || c == '-') { - if (is_num == 2) r = ONIGERR_INVALID_GROUP_NAME; - break; - } - - if (is_num != 0) { - if (ONIGENC_IS_CODE_DIGIT(enc, c)) { - is_num = 1; - } - else { - r = ONIGERR_INVALID_GROUP_NAME; - is_num = 0; - } - } - else if (!ONIGENC_IS_CODE_NAME(enc, c)) { - r = ONIGERR_INVALID_CHAR_IN_GROUP_NAME; - } - } - - if (r == 0 && c != end_code) { - if (c == '+' || c == '-') { - int level; - int flag = (c == '-' ? -1 : 1); - - if (PEND) { - r = ONIGERR_INVALID_CHAR_IN_GROUP_NAME; - goto end; - } - PFETCH(c); - if (! ONIGENC_IS_CODE_DIGIT(enc, c)) goto err; - PUNFETCH; - level = onig_scan_unsigned_number(&p, end, enc); - if (level < 0) return ONIGERR_TOO_BIG_NUMBER; - *rlevel = (level * flag); - exist_level = 1; - - if (!PEND) { - PFETCH(c); - if (c == end_code) - goto end; - } - } - - err: - r = ONIGERR_INVALID_GROUP_NAME; - name_end = end; - } - - end: - if (r == 0) { - if (is_num != 0) { - *rback_num = onig_scan_unsigned_number(&pnum_head, name_end, enc); - if (*rback_num < 0) return ONIGERR_TOO_BIG_NUMBER; - else if (*rback_num == 0) goto err; - - *rback_num *= sign; - } - - *rname_end = name_end; - *src = p; - return (exist_level ? 1 : 0); - } - else { - onig_scan_env_set_error_string(env, r, *src, name_end); - return r; - } -} -# endif /* USE_BACKREF_WITH_LEVEL */ - -/* - ref: 0 -> define name (don't allow number name) - 1 -> reference name (allow number name) -*/ -static int -fetch_name(OnigCodePoint start_code, UChar** src, UChar* end, - UChar** rname_end, ScanEnv* env, int* rback_num, int ref) -{ - int r, is_num, sign; - OnigCodePoint end_code; - OnigCodePoint c = 0; - OnigEncoding enc = env->enc; - UChar *name_end; - UChar *pnum_head; - UChar *p = *src; - - *rback_num = 0; - - end_code = get_name_end_code_point(start_code); - - name_end = end; - pnum_head = *src; - r = 0; - is_num = 0; - sign = 1; - if (PEND) { - return ONIGERR_EMPTY_GROUP_NAME; - } - else { - PFETCH_S(c); - if (c == end_code) - return ONIGERR_EMPTY_GROUP_NAME; - - if (ONIGENC_IS_CODE_DIGIT(enc, c)) { - if (ref == 1) - is_num = 1; - else { - r = ONIGERR_INVALID_GROUP_NAME; - is_num = 0; - } - } - else if (c == '-') { - if (ref == 1) { - is_num = 2; - sign = -1; - pnum_head = p; - } - else { - r = ONIGERR_INVALID_GROUP_NAME; - is_num = 0; - } - } - else if (!ONIGENC_IS_CODE_NAME(enc, c)) { - r = ONIGERR_INVALID_CHAR_IN_GROUP_NAME; - } - } - - if (r == 0) { - while (!PEND) { - name_end = p; - PFETCH_S(c); - if (c == end_code || c == ')') { - if (is_num == 2) { - r = ONIGERR_INVALID_GROUP_NAME; - goto teardown; - } - break; - } - - if (is_num != 0) { - if (ONIGENC_IS_CODE_DIGIT(enc, c)) { - is_num = 1; - } - else { - if (!ONIGENC_IS_CODE_WORD(enc, c)) - r = ONIGERR_INVALID_CHAR_IN_GROUP_NAME; - else - r = ONIGERR_INVALID_GROUP_NAME; - goto teardown; - } - } - else { - if (!ONIGENC_IS_CODE_NAME(enc, c)) { - r = ONIGERR_INVALID_CHAR_IN_GROUP_NAME; - goto teardown; - } - } - } - - if (c != end_code) { - r = ONIGERR_INVALID_GROUP_NAME; - name_end = end; - goto err; - } - - if (is_num != 0) { - *rback_num = onig_scan_unsigned_number(&pnum_head, name_end, enc); - if (*rback_num < 0) return ONIGERR_TOO_BIG_NUMBER; - else if (*rback_num == 0) { - r = ONIGERR_INVALID_GROUP_NAME; - goto err; - } - - *rback_num *= sign; - } - - *rname_end = name_end; - *src = p; - return 0; - } - else { -teardown: - while (!PEND) { - name_end = p; - PFETCH_S(c); - if (c == end_code || c == ')') - break; - } - if (PEND) - name_end = end; - - err: - onig_scan_env_set_error_string(env, r, *src, name_end); - return r; - } -} -#else -static int -fetch_name(OnigCodePoint start_code, UChar** src, UChar* end, - UChar** rname_end, ScanEnv* env, int* rback_num, int ref) -{ - int r, is_num, sign; - OnigCodePoint end_code; - OnigCodePoint c = 0; - UChar *name_end; - OnigEncoding enc = env->enc; - UChar *pnum_head; - UChar *p = *src; - PFETCH_READY; - - *rback_num = 0; - - end_code = get_name_end_code_point(start_code); - - *rname_end = name_end = end; - r = 0; - pnum_head = *src; - is_num = 0; - sign = 1; - - if (PEND) { - return ONIGERR_EMPTY_GROUP_NAME; - } - else { - PFETCH(c); - if (c == end_code) - return ONIGERR_EMPTY_GROUP_NAME; - - if (ONIGENC_IS_CODE_DIGIT(enc, c)) { - is_num = 1; - } - else if (c == '-') { - is_num = 2; - sign = -1; - pnum_head = p; - } - else { - r = ONIGERR_INVALID_CHAR_IN_GROUP_NAME; - } - } - - while (!PEND) { - name_end = p; - - PFETCH(c); - if (c == end_code || c == ')') break; - if (! ONIGENC_IS_CODE_DIGIT(enc, c)) - r = ONIGERR_INVALID_CHAR_IN_GROUP_NAME; - } - if (r == 0 && c != end_code) { - r = ONIGERR_INVALID_GROUP_NAME; - name_end = end; - } - - if (r == 0) { - *rback_num = onig_scan_unsigned_number(&pnum_head, name_end, enc); - if (*rback_num < 0) return ONIGERR_TOO_BIG_NUMBER; - else if (*rback_num == 0) { - r = ONIGERR_INVALID_GROUP_NAME; - goto err; - } - *rback_num *= sign; - - *rname_end = name_end; - *src = p; - return 0; - } - else { - err: - onig_scan_env_set_error_string(env, r, *src, name_end); - return r; - } -} -#endif /* USE_NAMED_GROUP */ - - -static void -onig_syntax_warn(ScanEnv *env, const char *fmt, ...) -{ - va_list args; - UChar buf[WARN_BUFSIZE]; - va_start(args, fmt); - onig_vsnprintf_with_pattern(buf, WARN_BUFSIZE, env->enc, - env->pattern, env->pattern_end, - (const UChar *)fmt, args); - va_end(args); -#ifdef RUBY - if (env->sourcefile == NULL) - rb_warn("%s", (char *)buf); - else - rb_compile_warn(env->sourcefile, env->sourceline, "%s", (char *)buf); -#else - (*onig_warn)((char* )buf); -#endif -} - -static void -CC_ESC_WARN(ScanEnv *env, UChar *c) -{ - if (onig_warn == onig_null_warn) return ; - - if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_WARN_CC_OP_NOT_ESCAPED) && - IS_SYNTAX_BV(env->syntax, ONIG_SYN_BACKSLASH_ESCAPE_IN_CC)) { - onig_syntax_warn(env, "character class has '%s' without escape", c); - } -} - -static void -CLOSE_BRACKET_WITHOUT_ESC_WARN(ScanEnv* env, UChar* c) -{ - if (onig_warn == onig_null_warn) return ; - - if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_WARN_CC_OP_NOT_ESCAPED)) { - onig_syntax_warn(env, "regular expression has '%s' without escape", c); - } -} - -#ifndef RTEST -# define RTEST(v) 1 -#endif - -static void -CC_DUP_WARN(ScanEnv *env) -{ - if (onig_warn == onig_null_warn || !RTEST(ruby_verbose)) return ; - - if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_WARN_CC_DUP) && - !(env->warnings_flag & ONIG_SYN_WARN_CC_DUP)) { - env->warnings_flag |= ONIG_SYN_WARN_CC_DUP; - onig_syntax_warn(env, "character class has duplicated range"); - } -} - -static void -UNKNOWN_ESC_WARN(ScanEnv *env, int c) -{ - if (onig_warn == onig_null_warn || !RTEST(ruby_verbose)) return ; - onig_syntax_warn(env, "Unknown escape \\%c is ignored", c); -} - -static UChar* -find_str_position(OnigCodePoint s[], int n, UChar* from, UChar* to, - UChar **next, OnigEncoding enc) -{ - int i; - OnigCodePoint x; - UChar *q; - UChar *p = from; - - while (p < to) { - x = ONIGENC_MBC_TO_CODE(enc, p, to); - q = p + enclen(enc, p, to); - if (x == s[0]) { - for (i = 1; i < n && q < to; i++) { - x = ONIGENC_MBC_TO_CODE(enc, q, to); - if (x != s[i]) break; - q += enclen(enc, q, to); - } - if (i >= n) { - if (IS_NOT_NULL(next)) - *next = q; - return p; - } - } - p = q; - } - return NULL_UCHARP; -} - -static int -str_exist_check_with_esc(OnigCodePoint s[], int n, UChar* from, UChar* to, - OnigCodePoint bad, OnigEncoding enc, const OnigSyntaxType* syn) -{ - int i, in_esc; - OnigCodePoint x; - UChar *q; - UChar *p = from; - - in_esc = 0; - while (p < to) { - if (in_esc) { - in_esc = 0; - p += enclen(enc, p, to); - } - else { - x = ONIGENC_MBC_TO_CODE(enc, p, to); - q = p + enclen(enc, p, to); - if (x == s[0]) { - for (i = 1; i < n && q < to; i++) { - x = ONIGENC_MBC_TO_CODE(enc, q, to); - if (x != s[i]) break; - q += enclen(enc, q, to); - } - if (i >= n) return 1; - p += enclen(enc, p, to); - } - else { - x = ONIGENC_MBC_TO_CODE(enc, p, to); - if (x == bad) return 0; - else if (x == MC_ESC(syn)) in_esc = 1; - p = q; - } - } - } - return 0; -} - -static int -fetch_token_in_cc(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env) -{ - int num; - OnigCodePoint c, c2; - const OnigSyntaxType* syn = env->syntax; - OnigEncoding enc = env->enc; - UChar* prev; - UChar* p = *src; - PFETCH_READY; - - if (PEND) { - tok->type = TK_EOT; - return tok->type; - } - - PFETCH(c); - tok->type = TK_CHAR; - tok->base = 0; - tok->u.c = c; - tok->escaped = 0; - - if (c == ']') { - tok->type = TK_CC_CLOSE; - } - else if (c == '-') { - tok->type = TK_CC_RANGE; - } - else if (c == MC_ESC(syn)) { - if (! IS_SYNTAX_BV(syn, ONIG_SYN_BACKSLASH_ESCAPE_IN_CC)) - goto end; - - if (PEND) return ONIGERR_END_PATTERN_AT_ESCAPE; - - PFETCH(c); - tok->escaped = 1; - tok->u.c = c; - switch (c) { - case 'w': - tok->type = TK_CHAR_TYPE; - tok->u.prop.ctype = ONIGENC_CTYPE_WORD; - tok->u.prop.not = 0; - break; - case 'W': - tok->type = TK_CHAR_TYPE; - tok->u.prop.ctype = ONIGENC_CTYPE_WORD; - tok->u.prop.not = 1; - break; - case 'd': - tok->type = TK_CHAR_TYPE; - tok->u.prop.ctype = ONIGENC_CTYPE_DIGIT; - tok->u.prop.not = 0; - break; - case 'D': - tok->type = TK_CHAR_TYPE; - tok->u.prop.ctype = ONIGENC_CTYPE_DIGIT; - tok->u.prop.not = 1; - break; - case 's': - tok->type = TK_CHAR_TYPE; - tok->u.prop.ctype = ONIGENC_CTYPE_SPACE; - tok->u.prop.not = 0; - break; - case 'S': - tok->type = TK_CHAR_TYPE; - tok->u.prop.ctype = ONIGENC_CTYPE_SPACE; - tok->u.prop.not = 1; - break; - case 'h': - if (! IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_H_XDIGIT)) break; - tok->type = TK_CHAR_TYPE; - tok->u.prop.ctype = ONIGENC_CTYPE_XDIGIT; - tok->u.prop.not = 0; - break; - case 'H': - if (! IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_H_XDIGIT)) break; - tok->type = TK_CHAR_TYPE; - tok->u.prop.ctype = ONIGENC_CTYPE_XDIGIT; - tok->u.prop.not = 1; - break; - - case 'p': - case 'P': - if (PEND) break; - - c2 = PPEEK; - if (c2 == '{' && - IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY)) { - PINC; - tok->type = TK_CHAR_PROPERTY; - tok->u.prop.not = (c == 'P' ? 1 : 0); - - if (!PEND && IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT)) { - PFETCH(c2); - if (c2 == '^') { - tok->u.prop.not = (tok->u.prop.not == 0 ? 1 : 0); - } - else - PUNFETCH; - } - } - else { - onig_syntax_warn(env, "invalid Unicode Property \\%c", c); - } - break; - - case 'x': - if (PEND) break; - - prev = p; - if (PPEEK_IS('{') && IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_X_BRACE_HEX8)) { - PINC; - num = scan_unsigned_hexadecimal_number(&p, end, 0, 8, enc); - if (num < 0) return ONIGERR_TOO_BIG_WIDE_CHAR_VALUE; - if (!PEND) { - c2 = PPEEK; - if (ONIGENC_IS_CODE_XDIGIT(enc, c2)) - return ONIGERR_TOO_LONG_WIDE_CHAR_VALUE; - } - - if (p > prev + enclen(enc, prev, end) && !PEND && (PPEEK_IS('}'))) { - PINC; - tok->type = TK_CODE_POINT; - tok->base = 16; - tok->u.code = (OnigCodePoint )num; - } - else { - /* can't read nothing or invalid format */ - p = prev; - } - } - else if (IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_X_HEX2)) { - num = scan_unsigned_hexadecimal_number(&p, end, 0, 2, enc); - if (num < 0) return ONIGERR_TOO_BIG_NUMBER; - if (p == prev) { /* can't read nothing. */ - num = 0; /* but, it's not error */ - } - tok->type = TK_RAW_BYTE; - tok->base = 16; - tok->u.c = num; - } - break; - - case 'u': - if (PEND) break; - - prev = p; - if (IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_U_HEX4)) { - num = scan_unsigned_hexadecimal_number(&p, end, 4, 4, enc); - if (num < -1) return ONIGERR_TOO_SHORT_DIGITS; - else if (num < 0) return ONIGERR_TOO_BIG_NUMBER; - if (p == prev) { /* can't read nothing. */ - num = 0; /* but, it's not error */ - } - tok->type = TK_CODE_POINT; - tok->base = 16; - tok->u.code = (OnigCodePoint )num; - } - break; - - case 'o': - if (PEND) break; - - prev = p; - if (PPEEK_IS('{') && IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_O_BRACE_OCTAL)) { - PINC; - num = scan_unsigned_octal_number(&p, end, 11, enc); - if (num < 0) return ONIGERR_TOO_BIG_WIDE_CHAR_VALUE; - if (!PEND) { - c2 = PPEEK; - if (ONIGENC_IS_CODE_DIGIT(enc, c2) && c2 < '8') - return ONIGERR_TOO_LONG_WIDE_CHAR_VALUE; - } - - if (p > prev + enclen(enc, prev, end) && !PEND && (PPEEK_IS('}'))) { - PINC; - tok->type = TK_CODE_POINT; - tok->base = 8; - tok->u.code = (OnigCodePoint )num; - } - else { - /* can't read nothing or invalid format */ - p = prev; - } - } - break; - - case '0': - case '1': case '2': case '3': case '4': case '5': case '6': case '7': - if (IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_OCTAL3)) { - PUNFETCH; - prev = p; - num = scan_unsigned_octal_number(&p, end, 3, enc); - if (num < 0 || 0xff < num) return ONIGERR_TOO_BIG_NUMBER; - if (p == prev) { /* can't read nothing. */ - num = 0; /* but, it's not error */ - } - tok->type = TK_RAW_BYTE; - tok->base = 8; - tok->u.c = num; - } - break; - - default: - PUNFETCH; - num = fetch_escaped_value(&p, end, env, &c2); - if (num < 0) return num; - if ((OnigCodePoint )tok->u.c != c2) { - tok->u.code = (OnigCodePoint )c2; - tok->type = TK_CODE_POINT; - } - break; - } - } - else if (c == '[') { - if (IS_SYNTAX_OP(syn, ONIG_SYN_OP_POSIX_BRACKET) && (PPEEK_IS(':'))) { - OnigCodePoint send[] = { (OnigCodePoint )':', (OnigCodePoint )']' }; - tok->backp = p; /* point at '[' is read */ - PINC; - if (str_exist_check_with_esc(send, 2, p, end, - (OnigCodePoint )']', enc, syn)) { - tok->type = TK_POSIX_BRACKET_OPEN; - } - else { - PUNFETCH; - goto cc_in_cc; - } - } - else { - cc_in_cc: - if (IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_CCLASS_SET_OP)) { - tok->type = TK_CC_CC_OPEN; - } - else { - CC_ESC_WARN(env, (UChar* )"["); - } - } - } - else if (c == '&') { - if (IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_CCLASS_SET_OP) && - !PEND && (PPEEK_IS('&'))) { - PINC; - tok->type = TK_CC_AND; - } - } - - end: - *src = p; - return tok->type; -} - -#ifdef USE_NAMED_GROUP -static int -fetch_named_backref_token(OnigCodePoint c, OnigToken* tok, UChar** src, - UChar* end, ScanEnv* env) -{ - int r, num; - const OnigSyntaxType* syn = env->syntax; - UChar* prev; - UChar* p = *src; - UChar* name_end; - int* backs; - int back_num; - - prev = p; - -# ifdef USE_BACKREF_WITH_LEVEL - name_end = NULL_UCHARP; /* no need. escape gcc warning. */ - r = fetch_name_with_level(c, &p, end, &name_end, - env, &back_num, &tok->u.backref.level); - if (r == 1) tok->u.backref.exist_level = 1; - else tok->u.backref.exist_level = 0; -# else - r = fetch_name(&p, end, &name_end, env, &back_num, 1); -# endif - if (r < 0) return r; - - if (back_num != 0) { - if (back_num < 0) { - back_num = BACKREF_REL_TO_ABS(back_num, env); - if (back_num <= 0) - return ONIGERR_INVALID_BACKREF; - } - - if (IS_SYNTAX_BV(syn, ONIG_SYN_STRICT_CHECK_BACKREF)) { - if (back_num > env->num_mem || - IS_NULL(SCANENV_MEM_NODES(env)[back_num])) - return ONIGERR_INVALID_BACKREF; - } - tok->type = TK_BACKREF; - tok->u.backref.by_name = 0; - tok->u.backref.num = 1; - tok->u.backref.ref1 = back_num; - } - else { - num = onig_name_to_group_numbers(env->reg, prev, name_end, &backs); - if (num <= 0) { - onig_scan_env_set_error_string(env, - ONIGERR_UNDEFINED_NAME_REFERENCE, prev, name_end); - return ONIGERR_UNDEFINED_NAME_REFERENCE; - } - if (IS_SYNTAX_BV(syn, ONIG_SYN_STRICT_CHECK_BACKREF)) { - int i; - for (i = 0; i < num; i++) { - if (backs[i] > env->num_mem || - IS_NULL(SCANENV_MEM_NODES(env)[backs[i]])) - return ONIGERR_INVALID_BACKREF; - } - } - - tok->type = TK_BACKREF; - tok->u.backref.by_name = 1; - if (num == 1 || IS_SYNTAX_BV(syn, ONIG_SYN_USE_LEFT_MOST_NAMED_GROUP)) { - tok->u.backref.num = 1; - tok->u.backref.ref1 = backs[0]; - } - else { - tok->u.backref.num = num; - tok->u.backref.refs = backs; - } - } - *src = p; - return 0; -} -#endif - -static int -fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env) -{ - int r, num; - OnigCodePoint c; - OnigEncoding enc = env->enc; - const OnigSyntaxType* syn = env->syntax; - UChar* prev; - UChar* p = *src; - PFETCH_READY; - - start: - if (PEND) { - tok->type = TK_EOT; - return tok->type; - } - - tok->type = TK_STRING; - tok->base = 0; - tok->backp = p; - - PFETCH(c); - if (IS_MC_ESC_CODE(c, syn)) { - if (PEND) return ONIGERR_END_PATTERN_AT_ESCAPE; - - tok->backp = p; - PFETCH(c); - - tok->u.c = c; - tok->escaped = 1; - switch (c) { - case '*': - if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_ASTERISK_ZERO_INF)) break; - tok->type = TK_OP_REPEAT; - tok->u.repeat.lower = 0; - tok->u.repeat.upper = REPEAT_INFINITE; - goto greedy_check; - break; - - case '+': - if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_PLUS_ONE_INF)) break; - tok->type = TK_OP_REPEAT; - tok->u.repeat.lower = 1; - tok->u.repeat.upper = REPEAT_INFINITE; - goto greedy_check; - break; - - case '?': - if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_QMARK_ZERO_ONE)) break; - tok->type = TK_OP_REPEAT; - tok->u.repeat.lower = 0; - tok->u.repeat.upper = 1; - greedy_check: - if (!PEND && PPEEK_IS('?') && - IS_SYNTAX_OP(syn, ONIG_SYN_OP_QMARK_NON_GREEDY)) { - PFETCH(c); - tok->u.repeat.greedy = 0; - tok->u.repeat.possessive = 0; - } - else { - possessive_check: - if (!PEND && PPEEK_IS('+') && - ((IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_PLUS_POSSESSIVE_REPEAT) && - tok->type != TK_INTERVAL) || - (IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_PLUS_POSSESSIVE_INTERVAL) && - tok->type == TK_INTERVAL))) { - PFETCH(c); - tok->u.repeat.greedy = 1; - tok->u.repeat.possessive = 1; - } - else { - tok->u.repeat.greedy = 1; - tok->u.repeat.possessive = 0; - } - } - break; - - case '{': - if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_BRACE_INTERVAL)) break; - r = fetch_range_quantifier(&p, end, tok, env); - if (r < 0) return r; /* error */ - if (r == 0) goto greedy_check; - else if (r == 2) { /* {n} */ - if (IS_SYNTAX_BV(syn, ONIG_SYN_FIXED_INTERVAL_IS_GREEDY_ONLY)) - goto possessive_check; - - goto greedy_check; - } - /* r == 1 : normal char */ - break; - - case '|': - if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_VBAR_ALT)) break; - tok->type = TK_ALT; - break; - - case '(': - if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_LPAREN_SUBEXP)) break; - tok->type = TK_SUBEXP_OPEN; - break; - - case ')': - if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_LPAREN_SUBEXP)) break; - tok->type = TK_SUBEXP_CLOSE; - break; - - case 'w': - if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_W_WORD)) break; - tok->type = TK_CHAR_TYPE; - tok->u.prop.ctype = ONIGENC_CTYPE_WORD; - tok->u.prop.not = 0; - break; - - case 'W': - if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_W_WORD)) break; - tok->type = TK_CHAR_TYPE; - tok->u.prop.ctype = ONIGENC_CTYPE_WORD; - tok->u.prop.not = 1; - break; - - case 'b': - if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_B_WORD_BOUND)) break; - tok->type = TK_ANCHOR; - tok->u.anchor.subtype = ANCHOR_WORD_BOUND; - tok->u.anchor.ascii_range = IS_ASCII_RANGE(env->option) - && ! IS_WORD_BOUND_ALL_RANGE(env->option); - break; - - case 'B': - if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_B_WORD_BOUND)) break; - tok->type = TK_ANCHOR; - tok->u.anchor.subtype = ANCHOR_NOT_WORD_BOUND; - tok->u.anchor.ascii_range = IS_ASCII_RANGE(env->option) - && ! IS_WORD_BOUND_ALL_RANGE(env->option); - break; - -#ifdef USE_WORD_BEGIN_END - case '<': - if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END)) break; - tok->type = TK_ANCHOR; - tok->u.anchor.subtype = ANCHOR_WORD_BEGIN; - tok->u.anchor.ascii_range = IS_ASCII_RANGE(env->option); - break; - - case '>': - if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END)) break; - tok->type = TK_ANCHOR; - tok->u.anchor.subtype = ANCHOR_WORD_END; - tok->u.anchor.ascii_range = IS_ASCII_RANGE(env->option); - break; -#endif - - case 's': - if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_S_WHITE_SPACE)) break; - tok->type = TK_CHAR_TYPE; - tok->u.prop.ctype = ONIGENC_CTYPE_SPACE; - tok->u.prop.not = 0; - break; - - case 'S': - if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_S_WHITE_SPACE)) break; - tok->type = TK_CHAR_TYPE; - tok->u.prop.ctype = ONIGENC_CTYPE_SPACE; - tok->u.prop.not = 1; - break; - - case 'd': - if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_D_DIGIT)) break; - tok->type = TK_CHAR_TYPE; - tok->u.prop.ctype = ONIGENC_CTYPE_DIGIT; - tok->u.prop.not = 0; - break; - - case 'D': - if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_D_DIGIT)) break; - tok->type = TK_CHAR_TYPE; - tok->u.prop.ctype = ONIGENC_CTYPE_DIGIT; - tok->u.prop.not = 1; - break; - - case 'h': - if (! IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_H_XDIGIT)) break; - tok->type = TK_CHAR_TYPE; - tok->u.prop.ctype = ONIGENC_CTYPE_XDIGIT; - tok->u.prop.not = 0; - break; - - case 'H': - if (! IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_H_XDIGIT)) break; - tok->type = TK_CHAR_TYPE; - tok->u.prop.ctype = ONIGENC_CTYPE_XDIGIT; - tok->u.prop.not = 1; - break; - - case 'A': - if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_AZ_BUF_ANCHOR)) break; - begin_buf: - tok->type = TK_ANCHOR; - tok->u.anchor.subtype = ANCHOR_BEGIN_BUF; - break; - - case 'Z': - if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_AZ_BUF_ANCHOR)) break; - tok->type = TK_ANCHOR; - tok->u.anchor.subtype = ANCHOR_SEMI_END_BUF; - break; - - case 'z': - if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_AZ_BUF_ANCHOR)) break; - end_buf: - tok->type = TK_ANCHOR; - tok->u.anchor.subtype = ANCHOR_END_BUF; - break; - - case 'G': - if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_CAPITAL_G_BEGIN_ANCHOR)) break; - tok->type = TK_ANCHOR; - tok->u.anchor.subtype = ANCHOR_BEGIN_POSITION; - break; - - case '`': - if (! IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_GNU_BUF_ANCHOR)) break; - goto begin_buf; - break; - - case '\'': - if (! IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_GNU_BUF_ANCHOR)) break; - goto end_buf; - break; - - case 'x': - if (PEND) break; - - prev = p; - if (PPEEK_IS('{') && IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_X_BRACE_HEX8)) { - PINC; - num = scan_unsigned_hexadecimal_number(&p, end, 0, 8, enc); - if (num < 0) return ONIGERR_TOO_BIG_WIDE_CHAR_VALUE; - if (!PEND) { - if (ONIGENC_IS_CODE_XDIGIT(enc, PPEEK)) - return ONIGERR_TOO_LONG_WIDE_CHAR_VALUE; - } - - if ((p > prev + enclen(enc, prev, end)) && !PEND && PPEEK_IS('}')) { - PINC; - tok->type = TK_CODE_POINT; - tok->u.code = (OnigCodePoint )num; - } - else { - /* can't read nothing or invalid format */ - p = prev; - } - } - else if (IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_X_HEX2)) { - num = scan_unsigned_hexadecimal_number(&p, end, 0, 2, enc); - if (num < 0) return ONIGERR_TOO_BIG_NUMBER; - if (p == prev) { /* can't read nothing. */ - num = 0; /* but, it's not error */ - } - tok->type = TK_RAW_BYTE; - tok->base = 16; - tok->u.c = num; - } - break; - - case 'u': - if (PEND) break; - - prev = p; - if (IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_U_HEX4)) { - num = scan_unsigned_hexadecimal_number(&p, end, 4, 4, enc); - if (num < -1) return ONIGERR_TOO_SHORT_DIGITS; - else if (num < 0) return ONIGERR_TOO_BIG_NUMBER; - if (p == prev) { /* can't read nothing. */ - num = 0; /* but, it's not error */ - } - tok->type = TK_CODE_POINT; - tok->base = 16; - tok->u.code = (OnigCodePoint )num; - } - break; - - case 'o': - if (PEND) break; - - prev = p; - if (PPEEK_IS('{') && IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_O_BRACE_OCTAL)) { - PINC; - num = scan_unsigned_octal_number(&p, end, 11, enc); - if (num < 0) return ONIGERR_TOO_BIG_WIDE_CHAR_VALUE; - if (!PEND) { - OnigCodePoint c = PPEEK; - if (ONIGENC_IS_CODE_DIGIT(enc, c) && c < '8') - return ONIGERR_TOO_LONG_WIDE_CHAR_VALUE; - } - - if ((p > prev + enclen(enc, prev, end)) && !PEND && PPEEK_IS('}')) { - PINC; - tok->type = TK_CODE_POINT; - tok->u.code = (OnigCodePoint )num; - } - else { - /* can't read nothing or invalid format */ - p = prev; - } - } - break; - - case '1': case '2': case '3': case '4': - case '5': case '6': case '7': case '8': case '9': - PUNFETCH; - prev = p; - num = onig_scan_unsigned_number(&p, end, enc); - if (num < 0 || num > ONIG_MAX_BACKREF_NUM) { - goto skip_backref; - } - - if (IS_SYNTAX_OP(syn, ONIG_SYN_OP_DECIMAL_BACKREF) && - (num <= env->num_mem || num <= 9)) { /* This spec. from GNU regex */ - if (IS_SYNTAX_BV(syn, ONIG_SYN_STRICT_CHECK_BACKREF)) { - if (num > env->num_mem || IS_NULL(SCANENV_MEM_NODES(env)[num])) - return ONIGERR_INVALID_BACKREF; - } - - tok->type = TK_BACKREF; - tok->u.backref.num = 1; - tok->u.backref.ref1 = num; - tok->u.backref.by_name = 0; -#ifdef USE_BACKREF_WITH_LEVEL - tok->u.backref.exist_level = 0; -#endif - break; - } - - skip_backref: - if (c == '8' || c == '9') { - /* normal char */ - p = prev; PINC; - break; - } - - p = prev; - /* fall through */ - case '0': - if (IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_OCTAL3)) { - prev = p; - num = scan_unsigned_octal_number(&p, end, (c == '0' ? 2:3), enc); - if (num < 0) return ONIGERR_TOO_BIG_NUMBER; - if (p == prev) { /* can't read nothing. */ - num = 0; /* but, it's not error */ - } - tok->type = TK_RAW_BYTE; - tok->base = 8; - tok->u.c = num; - } - else if (c != '0') { - PINC; - } - break; - -#ifdef USE_NAMED_GROUP - case 'k': - if (!PEND && IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_K_NAMED_BACKREF)) { - PFETCH(c); - if (c == '<' || c == '\'') { - r = fetch_named_backref_token(c, tok, &p, end, env); - if (r < 0) return r; - } - else { - PUNFETCH; - onig_syntax_warn(env, "invalid back reference"); - } - } - break; -#endif - -#if defined(USE_SUBEXP_CALL) || defined(USE_NAMED_GROUP) - case 'g': -# ifdef USE_NAMED_GROUP - if (!PEND && IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_G_BRACE_BACKREF)) { - PFETCH(c); - if (c == '{') { - r = fetch_named_backref_token(c, tok, &p, end, env); - if (r < 0) return r; - } - else - PUNFETCH; - } -# endif -# ifdef USE_SUBEXP_CALL - if (!PEND && IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_G_SUBEXP_CALL)) { - PFETCH(c); - if (c == '<' || c == '\'') { - int gnum = -1, rel = 0; - UChar* name_end; - OnigCodePoint cnext; - - cnext = PPEEK; - if (cnext == '0') { - PINC; - if (PPEEK_IS(get_name_end_code_point(c))) { /* \g<0>, \g'0' */ - PINC; - name_end = p; - gnum = 0; - } - } - else if (cnext == '+') { - PINC; - rel = 1; - } - prev = p; - if (gnum < 0) { - r = fetch_name((OnigCodePoint )c, &p, end, &name_end, env, &gnum, 1); - if (r < 0) return r; - } - - tok->type = TK_CALL; - tok->u.call.name = prev; - tok->u.call.name_end = name_end; - tok->u.call.gnum = gnum; - tok->u.call.rel = rel; - } - else { - onig_syntax_warn(env, "invalid subexp call"); - PUNFETCH; - } - } -# endif - break; -#endif - - case 'Q': - if (IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_CAPITAL_Q_QUOTE)) { - tok->type = TK_QUOTE_OPEN; - } - break; - - case 'p': - case 'P': - if (PPEEK_IS('{') && - IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY)) { - PINC; - tok->type = TK_CHAR_PROPERTY; - tok->u.prop.not = (c == 'P' ? 1 : 0); - - if (!PEND && IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT)) { - PFETCH(c); - if (c == '^') { - tok->u.prop.not = (tok->u.prop.not == 0 ? 1 : 0); - } - else - PUNFETCH; - } - } - else { - onig_syntax_warn(env, "invalid Unicode Property \\%c", c); - } - break; - - case 'R': - if (IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_CAPITAL_R_LINEBREAK)) { - tok->type = TK_LINEBREAK; - } - break; - - case 'X': - if (IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_CAPITAL_X_EXTENDED_GRAPHEME_CLUSTER)) { - tok->type = TK_EXTENDED_GRAPHEME_CLUSTER; - } - break; - - case 'K': - if (IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_CAPITAL_K_KEEP)) { - tok->type = TK_KEEP; - } - break; - - default: - { - OnigCodePoint c2; - - PUNFETCH; - num = fetch_escaped_value(&p, end, env, &c2); - if (num < 0) return num; - /* set_raw: */ - if ((OnigCodePoint )tok->u.c != c2) { - tok->type = TK_CODE_POINT; - tok->u.code = (OnigCodePoint )c2; - } - else { /* string */ - p = tok->backp + enclen(enc, tok->backp, end); - } - } - break; - } - } - else { - tok->u.c = c; - tok->escaped = 0; - -#ifdef USE_VARIABLE_META_CHARS - if ((c != ONIG_INEFFECTIVE_META_CHAR) && - IS_SYNTAX_OP(syn, ONIG_SYN_OP_VARIABLE_META_CHARACTERS)) { - if (c == MC_ANYCHAR(syn)) - goto any_char; - else if (c == MC_ANYTIME(syn)) - goto anytime; - else if (c == MC_ZERO_OR_ONE_TIME(syn)) - goto zero_or_one_time; - else if (c == MC_ONE_OR_MORE_TIME(syn)) - goto one_or_more_time; - else if (c == MC_ANYCHAR_ANYTIME(syn)) { - tok->type = TK_ANYCHAR_ANYTIME; - goto out; - } - } -#endif - - switch (c) { - case '.': - if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_DOT_ANYCHAR)) break; -#ifdef USE_VARIABLE_META_CHARS - any_char: -#endif - tok->type = TK_ANYCHAR; - break; - - case '*': - if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ASTERISK_ZERO_INF)) break; -#ifdef USE_VARIABLE_META_CHARS - anytime: -#endif - tok->type = TK_OP_REPEAT; - tok->u.repeat.lower = 0; - tok->u.repeat.upper = REPEAT_INFINITE; - goto greedy_check; - break; - - case '+': - if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_PLUS_ONE_INF)) break; -#ifdef USE_VARIABLE_META_CHARS - one_or_more_time: -#endif - tok->type = TK_OP_REPEAT; - tok->u.repeat.lower = 1; - tok->u.repeat.upper = REPEAT_INFINITE; - goto greedy_check; - break; - - case '?': - if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_QMARK_ZERO_ONE)) break; -#ifdef USE_VARIABLE_META_CHARS - zero_or_one_time: -#endif - tok->type = TK_OP_REPEAT; - tok->u.repeat.lower = 0; - tok->u.repeat.upper = 1; - goto greedy_check; - break; - - case '{': - if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_BRACE_INTERVAL)) break; - r = fetch_range_quantifier(&p, end, tok, env); - if (r < 0) return r; /* error */ - if (r == 0) goto greedy_check; - else if (r == 2) { /* {n} */ - if (IS_SYNTAX_BV(syn, ONIG_SYN_FIXED_INTERVAL_IS_GREEDY_ONLY)) - goto possessive_check; - - goto greedy_check; - } - /* r == 1 : normal char */ - break; - - case '|': - if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_VBAR_ALT)) break; - tok->type = TK_ALT; - break; - - case '(': - if (PPEEK_IS('?') && - IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_QMARK_GROUP_EFFECT)) { - PINC; - if (PPEEK_IS('#')) { - 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; - } - } - goto start; - } -#ifdef USE_PERL_SUBEXP_CALL - /* (?&name), (?n), (?R), (?0), (?+n), (?-n) */ - c = PPEEK; - if ((c == '&' || c == 'R' || ONIGENC_IS_CODE_DIGIT(enc, c)) && - IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_QMARK_SUBEXP_CALL)) { - /* (?&name), (?n), (?R), (?0) */ - int gnum; - UChar *name; - UChar *name_end; - - if (c == 'R' || c == '0') { - PINC; /* skip 'R' / '0' */ - if (!PPEEK_IS(')')) return ONIGERR_INVALID_GROUP_NAME; - PINC; /* skip ')' */ - name_end = name = p; - gnum = 0; - } - else { - int numref = 1; - if (c == '&') { /* (?&name) */ - PINC; - numref = 0; /* don't allow number name */ - } - name = p; - r = fetch_name((OnigCodePoint )'(', &p, end, &name_end, env, &gnum, numref); - if (r < 0) return r; - } - - tok->type = TK_CALL; - tok->u.call.name = name; - tok->u.call.name_end = name_end; - tok->u.call.gnum = gnum; - tok->u.call.rel = 0; - break; - } - else if ((c == '-' || c == '+') && - IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_QMARK_SUBEXP_CALL)) { - /* (?+n), (?-n) */ - int gnum; - UChar *name; - UChar *name_end; - OnigCodePoint cnext; - PFETCH_READY; - - PINC; /* skip '-' / '+' */ - cnext = PPEEK; - if (ONIGENC_IS_CODE_DIGIT(enc, cnext)) { - if (c == '-') PUNFETCH; - name = p; - r = fetch_name((OnigCodePoint )'(', &p, end, &name_end, env, &gnum, 1); - if (r < 0) return r; - - tok->type = TK_CALL; - tok->u.call.name = name; - tok->u.call.name_end = name_end; - tok->u.call.gnum = gnum; - tok->u.call.rel = 1; - break; - } - } -#endif /* USE_PERL_SUBEXP_CALL */ -#ifdef USE_CAPITAL_P_NAMED_GROUP - if (PPEEK_IS('P') && - IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_QMARK_CAPITAL_P_NAMED_GROUP)) { - int gnum; - UChar *name; - UChar *name_end; - PFETCH_READY; - - PINC; /* skip 'P' */ - if (PEND) return ONIGERR_UNDEFINED_GROUP_OPTION; - PFETCH(c); - if (c == '=') { /* (?P=name): backref */ - r = fetch_named_backref_token((OnigCodePoint )'(', tok, &p, end, env); - if (r < 0) return r; - break; - } - else if (c == '>') { /* (?P>name): subexp call */ - name = p; - r = fetch_name((OnigCodePoint )'(', &p, end, &name_end, env, &gnum, 0); - if (r < 0) return r; - - tok->type = TK_CALL; - tok->u.call.name = name; - tok->u.call.name_end = name_end; - tok->u.call.gnum = gnum; - tok->u.call.rel = 0; - break; - } - } -#endif /* USE_CAPITAL_P_NAMED_GROUP */ - PUNFETCH; - } - - if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_LPAREN_SUBEXP)) break; - tok->type = TK_SUBEXP_OPEN; - break; - - case ')': - if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_LPAREN_SUBEXP)) break; - tok->type = TK_SUBEXP_CLOSE; - break; - - case '^': - if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_LINE_ANCHOR)) break; - tok->type = TK_ANCHOR; - tok->u.anchor.subtype = (IS_SINGLELINE(env->option) - ? 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.anchor.subtype = (IS_SINGLELINE(env->option) - ? ANCHOR_SEMI_END_BUF : ANCHOR_END_LINE); - break; - - case '[': - if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_BRACKET_CC)) break; - tok->type = TK_CC_OPEN; - break; - - case ']': - if (*src > env->pattern) /* /].../ is allowed. */ - CLOSE_BRACKET_WITHOUT_ESC_WARN(env, (UChar* )"]"); - break; - - case '#': - if (IS_EXTEND(env->option)) { - while (!PEND) { - PFETCH(c); - if (ONIGENC_IS_CODE_NEWLINE(enc, c)) - break; - } - goto start; - break; - } - break; - - case ' ': case '\t': case '\n': case '\r': case '\f': - if (IS_EXTEND(env->option)) - goto start; - break; - - default: - /* string */ - break; - } - } - -#ifdef USE_VARIABLE_META_CHARS - out: -#endif - *src = p; - return tok->type; -} - -static int -add_ctype_to_cc_by_range(CClassNode* cc, int ctype ARG_UNUSED, int not, - ScanEnv* env, - OnigCodePoint sb_out, const OnigCodePoint mbr[]) -{ - int i, r; - OnigCodePoint j; - - int n = ONIGENC_CODE_RANGE_NUM(mbr); - - if (not == 0) { - for (i = 0; i < n; i++) { - for (j = ONIGENC_CODE_RANGE_FROM(mbr, i); - j <= ONIGENC_CODE_RANGE_TO(mbr, i); j++) { - if (j >= sb_out) { - if (j > ONIGENC_CODE_RANGE_FROM(mbr, i)) { - r = add_code_range_to_buf(&(cc->mbuf), env, j, - ONIGENC_CODE_RANGE_TO(mbr, i)); - if (r != 0) return r; - i++; - } - - goto sb_end; - } - BITSET_SET_BIT_CHKDUP(cc->bs, j); - } - } - - sb_end: - for ( ; i < n; i++) { - r = add_code_range_to_buf(&(cc->mbuf), env, - ONIGENC_CODE_RANGE_FROM(mbr, i), - ONIGENC_CODE_RANGE_TO(mbr, i)); - if (r != 0) return r; - } - } - else { - OnigCodePoint prev = 0; - - for (i = 0; i < n; i++) { - for (j = prev; - j < ONIGENC_CODE_RANGE_FROM(mbr, i); j++) { - if (j >= sb_out) { - goto sb_end2; - } - BITSET_SET_BIT_CHKDUP(cc->bs, j); - } - prev = ONIGENC_CODE_RANGE_TO(mbr, i) + 1; - } - for (j = prev; j < sb_out; j++) { - BITSET_SET_BIT_CHKDUP(cc->bs, j); - } - - sb_end2: - prev = sb_out; - - for (i = 0; i < n; i++) { - if (prev < ONIGENC_CODE_RANGE_FROM(mbr, i)) { - r = add_code_range_to_buf(&(cc->mbuf), env, prev, - ONIGENC_CODE_RANGE_FROM(mbr, i) - 1); - if (r != 0) return r; - } - prev = ONIGENC_CODE_RANGE_TO(mbr, i) + 1; - } - if (prev < 0x7fffffff) { - r = add_code_range_to_buf(&(cc->mbuf), env, prev, 0x7fffffff); - if (r != 0) return r; - } - } - - return 0; -} - -static int -add_ctype_to_cc(CClassNode* cc, int ctype, int not, int ascii_range, ScanEnv* env) -{ - int maxcode; - int c, r; - const OnigCodePoint *ranges; - OnigCodePoint sb_out; - OnigEncoding enc = env->enc; - - r = ONIGENC_GET_CTYPE_CODE_RANGE(enc, ctype, &sb_out, &ranges); - if (r == 0) { - if (ascii_range) { - CClassNode ccwork; - initialize_cclass(&ccwork); - r = add_ctype_to_cc_by_range(&ccwork, ctype, not, env, sb_out, - ranges); - if (r == 0) { - if (not) { - r = add_code_range_to_buf0(&(ccwork.mbuf), env, 0x80, ONIG_LAST_CODE_POINT, FALSE); - } - else { - CClassNode ccascii; - initialize_cclass(&ccascii); - if (ONIGENC_MBC_MINLEN(env->enc) > 1) { - r = add_code_range(&(ccascii.mbuf), env, 0x00, 0x7F); - } - else { - bitset_set_range(env, ccascii.bs, 0x00, 0x7F); - r = 0; - } - if (r == 0) { - r = and_cclass(&ccwork, &ccascii, env); - } - if (IS_NOT_NULL(ccascii.mbuf)) bbuf_free(ccascii.mbuf); - } - if (r == 0) { - r = or_cclass(cc, &ccwork, env); - } - if (IS_NOT_NULL(ccwork.mbuf)) bbuf_free(ccwork.mbuf); - } - } - else { - r = add_ctype_to_cc_by_range(cc, ctype, not, env, sb_out, ranges); - } - return r; - } - else if (r != ONIG_NO_SUPPORT_CONFIG) { - return r; - } - - maxcode = ascii_range ? 0x80 : SINGLE_BYTE_SIZE; - r = 0; - switch (ctype) { - case ONIGENC_CTYPE_ALPHA: - case ONIGENC_CTYPE_BLANK: - case ONIGENC_CTYPE_CNTRL: - case ONIGENC_CTYPE_DIGIT: - case ONIGENC_CTYPE_LOWER: - case ONIGENC_CTYPE_PUNCT: - case ONIGENC_CTYPE_SPACE: - case ONIGENC_CTYPE_UPPER: - case ONIGENC_CTYPE_XDIGIT: - case ONIGENC_CTYPE_ASCII: - case ONIGENC_CTYPE_ALNUM: - if (not != 0) { - for (c = 0; c < SINGLE_BYTE_SIZE; c++) { - if (! ONIGENC_IS_CODE_CTYPE(enc, (OnigCodePoint )c, ctype)) - BITSET_SET_BIT_CHKDUP(cc->bs, c); - } - ADD_ALL_MULTI_BYTE_RANGE(enc, cc->mbuf); - } - else { - for (c = 0; c < SINGLE_BYTE_SIZE; c++) { - if (ONIGENC_IS_CODE_CTYPE(enc, (OnigCodePoint )c, ctype)) - BITSET_SET_BIT_CHKDUP(cc->bs, c); - } - } - break; - - case ONIGENC_CTYPE_GRAPH: - case ONIGENC_CTYPE_PRINT: - if (not != 0) { - for (c = 0; c < SINGLE_BYTE_SIZE; c++) { - if (! ONIGENC_IS_CODE_CTYPE(enc, (OnigCodePoint )c, ctype) - || c >= maxcode) - BITSET_SET_BIT_CHKDUP(cc->bs, c); - } - if (ascii_range) - ADD_ALL_MULTI_BYTE_RANGE(enc, cc->mbuf); - } - else { - for (c = 0; c < maxcode; c++) { - if (ONIGENC_IS_CODE_CTYPE(enc, (OnigCodePoint )c, ctype)) - BITSET_SET_BIT_CHKDUP(cc->bs, c); - } - if (! ascii_range) - ADD_ALL_MULTI_BYTE_RANGE(enc, cc->mbuf); - } - break; - - case ONIGENC_CTYPE_WORD: - if (not == 0) { - for (c = 0; c < maxcode; c++) { - if (ONIGENC_IS_CODE_WORD(enc, c)) BITSET_SET_BIT_CHKDUP(cc->bs, c); - } - if (! ascii_range) - ADD_ALL_MULTI_BYTE_RANGE(enc, cc->mbuf); - } - else { - for (c = 0; c < SINGLE_BYTE_SIZE; c++) { - if ((ONIGENC_CODE_TO_MBCLEN(enc, c) > 0) /* check invalid code point */ - && (! ONIGENC_IS_CODE_WORD(enc, c) || c >= maxcode)) - BITSET_SET_BIT_CHKDUP(cc->bs, c); - } - if (ascii_range) - ADD_ALL_MULTI_BYTE_RANGE(enc, cc->mbuf); - } - break; - - default: - return ONIGERR_PARSER_BUG; - break; - } - - return r; -} - -static int -parse_posix_bracket(CClassNode* cc, CClassNode* asc_cc, - UChar** src, UChar* end, ScanEnv* env) -{ -#define POSIX_BRACKET_CHECK_LIMIT_LENGTH 20 -#define POSIX_BRACKET_NAME_MIN_LEN 4 - - static const PosixBracketEntryType PBS[] = { - POSIX_BRACKET_ENTRY_INIT("alnum", ONIGENC_CTYPE_ALNUM), - POSIX_BRACKET_ENTRY_INIT("alpha", ONIGENC_CTYPE_ALPHA), - POSIX_BRACKET_ENTRY_INIT("blank", ONIGENC_CTYPE_BLANK), - POSIX_BRACKET_ENTRY_INIT("cntrl", ONIGENC_CTYPE_CNTRL), - POSIX_BRACKET_ENTRY_INIT("digit", ONIGENC_CTYPE_DIGIT), - POSIX_BRACKET_ENTRY_INIT("graph", ONIGENC_CTYPE_GRAPH), - POSIX_BRACKET_ENTRY_INIT("lower", ONIGENC_CTYPE_LOWER), - POSIX_BRACKET_ENTRY_INIT("print", ONIGENC_CTYPE_PRINT), - POSIX_BRACKET_ENTRY_INIT("punct", ONIGENC_CTYPE_PUNCT), - POSIX_BRACKET_ENTRY_INIT("space", ONIGENC_CTYPE_SPACE), - POSIX_BRACKET_ENTRY_INIT("upper", ONIGENC_CTYPE_UPPER), - POSIX_BRACKET_ENTRY_INIT("xdigit", ONIGENC_CTYPE_XDIGIT), - POSIX_BRACKET_ENTRY_INIT("ascii", ONIGENC_CTYPE_ASCII), - POSIX_BRACKET_ENTRY_INIT("word", ONIGENC_CTYPE_WORD), - }; - - const PosixBracketEntryType *pb; - int not, i, r; - int ascii_range; - OnigCodePoint c; - OnigEncoding enc = env->enc; - UChar *p = *src; - - if (PPEEK_IS('^')) { - PINC_S; - not = 1; - } - else - not = 0; - - if (onigenc_strlen(enc, p, end) < POSIX_BRACKET_NAME_MIN_LEN + 3) - goto not_posix_bracket; - - ascii_range = IS_ASCII_RANGE(env->option) && - ! IS_POSIX_BRACKET_ALL_RANGE(env->option); - for (pb = PBS; pb < PBS + numberof(PBS); pb++) { - if (onigenc_with_ascii_strncmp(enc, p, end, pb->name, pb->len) == 0) { - p = (UChar* )onigenc_step(enc, p, end, pb->len); - if (onigenc_with_ascii_strncmp(enc, p, end, (UChar* )":]", 2) != 0) - return ONIGERR_INVALID_POSIX_BRACKET_TYPE; - - r = add_ctype_to_cc(cc, pb->ctype, not, ascii_range, env); - if (r != 0) return r; - - if (IS_NOT_NULL(asc_cc)) { - if (pb->ctype != ONIGENC_CTYPE_WORD && - pb->ctype != ONIGENC_CTYPE_ASCII && - !ascii_range) - r = add_ctype_to_cc(asc_cc, pb->ctype, not, ascii_range, env); - if (r != 0) return r; - } - - PINC_S; PINC_S; - *src = p; - return 0; - } - } - - not_posix_bracket: - c = 0; - i = 0; - while (!PEND && ((c = PPEEK) != ':') && c != ']') { - PINC_S; - if (++i > POSIX_BRACKET_CHECK_LIMIT_LENGTH) break; - } - if (c == ':' && ! PEND) { - PINC_S; - if (! PEND) { - PFETCH_S(c); - if (c == ']') - return ONIGERR_INVALID_POSIX_BRACKET_TYPE; - } - } - - return 1; /* 1: is not POSIX bracket, but no error. */ -} - -static int -fetch_char_property_to_ctype(UChar** src, UChar* end, ScanEnv* env) -{ - int r; - OnigCodePoint c; - OnigEncoding enc = env->enc; - UChar *prev, *start, *p = *src; - - r = 0; - start = prev = p; - - while (!PEND) { - prev = p; - PFETCH_S(c); - if (c == '}') { - r = ONIGENC_PROPERTY_NAME_TO_CTYPE(enc, start, prev); - if (r < 0) break; - - *src = p; - return r; - } - else if (c == '(' || c == ')' || c == '{' || c == '|') { - r = ONIGERR_INVALID_CHAR_PROPERTY_NAME; - break; - } - } - - onig_scan_env_set_error_string(env, r, *src, prev); - return r; -} - -static int cclass_case_fold(Node** np, CClassNode* cc, CClassNode* asc_cc, ScanEnv* env); - -static int -parse_char_property(Node** np, OnigToken* tok, UChar** src, UChar* end, - ScanEnv* env) -{ - int r, ctype; - CClassNode* cc; - - ctype = fetch_char_property_to_ctype(src, end, env); - if (ctype < 0) return ctype; - - *np = node_new_cclass(); - CHECK_NULL_RETURN_MEMERR(*np); - cc = NCCLASS(*np); - r = add_ctype_to_cc(cc, ctype, 0, 0, env); - if (r != 0) return r; - if (tok->u.prop.not != 0) NCCLASS_SET_NOT(cc); - - if (IS_IGNORECASE(env->option)) { - if (ctype != ONIGENC_CTYPE_ASCII) - r = cclass_case_fold(np, cc, cc, env); - } - return r; -} - - -enum CCSTATE { - CCS_VALUE, - CCS_RANGE, - CCS_COMPLETE, - CCS_START -}; - -enum CCVALTYPE { - CCV_SB, - CCV_CODE_POINT, - CCV_CLASS -}; - -static int -next_state_class(CClassNode* cc, CClassNode* asc_cc, - OnigCodePoint* vs, enum CCVALTYPE* type, - enum CCSTATE* state, ScanEnv* env) -{ - int r; - - if (*state == CCS_RANGE) - return ONIGERR_CHAR_CLASS_VALUE_AT_END_OF_RANGE; - - if (*state == CCS_VALUE && *type != CCV_CLASS) { - if (*type == CCV_SB) { - BITSET_SET_BIT_CHKDUP(cc->bs, (int )(*vs)); - if (IS_NOT_NULL(asc_cc)) - BITSET_SET_BIT(asc_cc->bs, (int )(*vs)); - } - else if (*type == CCV_CODE_POINT) { - r = add_code_range(&(cc->mbuf), env, *vs, *vs); - if (r < 0) return r; - if (IS_NOT_NULL(asc_cc)) { - r = add_code_range0(&(asc_cc->mbuf), env, *vs, *vs, 0); - if (r < 0) return r; - } - } - } - - *state = CCS_VALUE; - *type = CCV_CLASS; - return 0; -} - -static int -next_state_val(CClassNode* cc, CClassNode* asc_cc, - OnigCodePoint *vs, OnigCodePoint v, - int* vs_israw, int v_israw, - enum CCVALTYPE intype, enum CCVALTYPE* type, - enum CCSTATE* state, ScanEnv* env) -{ - int r; - - switch (*state) { - case CCS_VALUE: - if (*type == CCV_SB) { - BITSET_SET_BIT_CHKDUP(cc->bs, (int )(*vs)); - if (IS_NOT_NULL(asc_cc)) - BITSET_SET_BIT(asc_cc->bs, (int )(*vs)); - } - else if (*type == CCV_CODE_POINT) { - r = add_code_range(&(cc->mbuf), env, *vs, *vs); - if (r < 0) return r; - if (IS_NOT_NULL(asc_cc)) { - r = add_code_range0(&(asc_cc->mbuf), env, *vs, *vs, 0); - if (r < 0) return r; - } - } - break; - - case CCS_RANGE: - if (intype == *type) { - if (intype == CCV_SB) { - if (*vs > 0xff || v > 0xff) - return ONIGERR_INVALID_CODE_POINT_VALUE; - - if (*vs > v) { - if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_ALLOW_EMPTY_RANGE_IN_CC)) - goto ccs_range_end; - else - return ONIGERR_EMPTY_RANGE_IN_CHAR_CLASS; - } - bitset_set_range(env, cc->bs, (int )*vs, (int )v); - if (IS_NOT_NULL(asc_cc)) - bitset_set_range(env, asc_cc->bs, (int )*vs, (int )v); - } - else { - r = add_code_range(&(cc->mbuf), env, *vs, v); - if (r < 0) return r; - if (IS_NOT_NULL(asc_cc)) { - r = add_code_range0(&(asc_cc->mbuf), env, *vs, v, 0); - if (r < 0) return r; - } - } - } - else { -#if 0 - if (intype == CCV_CODE_POINT && *type == CCV_SB) { -#endif - if (*vs > v) { - if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_ALLOW_EMPTY_RANGE_IN_CC)) - goto ccs_range_end; - else - return ONIGERR_EMPTY_RANGE_IN_CHAR_CLASS; - } - bitset_set_range(env, cc->bs, (int )*vs, (int )(v < 0xff ? v : 0xff)); - r = add_code_range(&(cc->mbuf), env, (OnigCodePoint )*vs, v); - if (r < 0) return r; - if (IS_NOT_NULL(asc_cc)) { - bitset_set_range(env, asc_cc->bs, (int )*vs, (int )(v < 0xff ? v : 0xff)); - r = add_code_range0(&(asc_cc->mbuf), env, (OnigCodePoint )*vs, v, 0); - if (r < 0) return r; - } -#if 0 - } - else - return ONIGERR_MISMATCH_CODE_LENGTH_IN_CLASS_RANGE; -#endif - } - ccs_range_end: - *state = CCS_COMPLETE; - break; - - case CCS_COMPLETE: - case CCS_START: - *state = CCS_VALUE; - break; - - default: - break; - } - - *vs_israw = v_israw; - *vs = v; - *type = intype; - return 0; -} - -static int -code_exist_check(OnigCodePoint c, UChar* from, UChar* end, int ignore_escaped, - ScanEnv* env) -{ - int in_esc; - OnigCodePoint code; - OnigEncoding enc = env->enc; - UChar* p = from; - - in_esc = 0; - while (! PEND) { - if (ignore_escaped && in_esc) { - in_esc = 0; - } - else { - PFETCH_S(code); - if (code == c) return 1; - if (code == MC_ESC(env->syntax)) in_esc = 1; - } - } - return 0; -} - -static int -parse_char_class(Node** np, Node** asc_np, OnigToken* tok, UChar** src, UChar* end, - ScanEnv* env) -{ - int r, neg, len, fetched, and_start; - OnigCodePoint v, vs; - UChar *p; - Node* node; - Node* asc_node; - CClassNode *cc, *prev_cc; - CClassNode *asc_cc, *asc_prev_cc; - CClassNode work_cc, asc_work_cc; - - enum CCSTATE state; - enum CCVALTYPE val_type, in_type; - int val_israw, in_israw; - - *np = *asc_np = NULL_NODE; - env->parse_depth++; - if (env->parse_depth > ParseDepthLimit) - return ONIGERR_PARSE_DEPTH_LIMIT_OVER; - prev_cc = asc_prev_cc = (CClassNode* )NULL; - r = fetch_token_in_cc(tok, src, end, env); - if (r == TK_CHAR && tok->u.c == '^' && tok->escaped == 0) { - neg = 1; - r = fetch_token_in_cc(tok, src, end, env); - } - else { - neg = 0; - } - - if (r < 0) return r; - if (r == TK_CC_CLOSE) { - if (! code_exist_check((OnigCodePoint )']', - *src, env->pattern_end, 1, env)) - return ONIGERR_EMPTY_CHAR_CLASS; - - CC_ESC_WARN(env, (UChar* )"]"); - r = tok->type = TK_CHAR; /* allow []...] */ - } - - *np = node = node_new_cclass(); - CHECK_NULL_RETURN_MEMERR(node); - cc = NCCLASS(node); - - if (IS_IGNORECASE(env->option)) { - *asc_np = asc_node = node_new_cclass(); - CHECK_NULL_RETURN_MEMERR(asc_node); - asc_cc = NCCLASS(asc_node); - } - else { - asc_node = NULL_NODE; - asc_cc = NULL; - } - - and_start = 0; - state = CCS_START; - p = *src; - while (r != TK_CC_CLOSE) { - fetched = 0; - switch (r) { - case TK_CHAR: - if ((tok->u.code >= SINGLE_BYTE_SIZE) || - (len = ONIGENC_CODE_TO_MBCLEN(env->enc, tok->u.c)) > 1) { - in_type = CCV_CODE_POINT; - } - else if (len < 0) { - r = len; - goto err; - } - else { - sb_char: - in_type = CCV_SB; - } - v = (OnigCodePoint )tok->u.c; - in_israw = 0; - goto val_entry2; - break; - - case TK_RAW_BYTE: - /* tok->base != 0 : octal or hexadec. */ - if (! ONIGENC_IS_SINGLEBYTE(env->enc) && tok->base != 0) { - UChar buf[ONIGENC_CODE_TO_MBC_MAXLEN]; - UChar* bufe = buf + ONIGENC_CODE_TO_MBC_MAXLEN; - UChar* psave = p; - int i, base = tok->base; - - buf[0] = (UChar )tok->u.c; - for (i = 1; i < ONIGENC_MBC_MAXLEN(env->enc); i++) { - r = fetch_token_in_cc(tok, &p, end, env); - if (r < 0) goto err; - if (r != TK_RAW_BYTE || tok->base != base) { - fetched = 1; - break; - } - buf[i] = (UChar )tok->u.c; - } - - if (i < ONIGENC_MBC_MINLEN(env->enc)) { - r = ONIGERR_TOO_SHORT_MULTI_BYTE_STRING; - goto err; - } - - len = enclen(env->enc, buf, buf + i); - if (i < len) { - r = ONIGERR_TOO_SHORT_MULTI_BYTE_STRING; - goto err; - } - else if (i > len) { /* fetch back */ - p = psave; - for (i = 1; i < len; i++) { - (void)fetch_token_in_cc(tok, &p, end, env); - /* no need to check the retun value (already checked above) */ - } - fetched = 0; - } - - if (i == 1) { - v = (OnigCodePoint )buf[0]; - goto raw_single; - } - else { - v = ONIGENC_MBC_TO_CODE(env->enc, buf, bufe); - in_type = CCV_CODE_POINT; - } - } - else { - v = (OnigCodePoint )tok->u.c; - raw_single: - in_type = CCV_SB; - } - in_israw = 1; - goto val_entry2; - break; - - case TK_CODE_POINT: - v = tok->u.code; - in_israw = 1; - val_entry: - len = ONIGENC_CODE_TO_MBCLEN(env->enc, v); - if (len < 0) { - r = len; - goto err; - } - in_type = (len == 1 ? CCV_SB : CCV_CODE_POINT); - val_entry2: - r = next_state_val(cc, asc_cc, &vs, v, &val_israw, in_israw, in_type, &val_type, - &state, env); - if (r != 0) goto err; - break; - - case TK_POSIX_BRACKET_OPEN: - r = parse_posix_bracket(cc, asc_cc, &p, end, env); - if (r < 0) goto err; - if (r == 1) { /* is not POSIX bracket */ - CC_ESC_WARN(env, (UChar* )"["); - p = tok->backp; - v = (OnigCodePoint )tok->u.c; - in_israw = 0; - goto val_entry; - } - goto next_class; - break; - - case TK_CHAR_TYPE: - r = add_ctype_to_cc(cc, tok->u.prop.ctype, tok->u.prop.not, - IS_ASCII_RANGE(env->option), env); - if (r != 0) return r; - if (IS_NOT_NULL(asc_cc)) { - if (tok->u.prop.ctype != ONIGENC_CTYPE_WORD) - r = add_ctype_to_cc(asc_cc, tok->u.prop.ctype, tok->u.prop.not, - IS_ASCII_RANGE(env->option), env); - if (r != 0) return r; - } - - next_class: - r = next_state_class(cc, asc_cc, &vs, &val_type, &state, env); - if (r != 0) goto err; - break; - - case TK_CHAR_PROPERTY: - { - int ctype; - - ctype = fetch_char_property_to_ctype(&p, end, env); - if (ctype < 0) return ctype; - r = add_ctype_to_cc(cc, ctype, tok->u.prop.not, 0, env); - if (r != 0) return r; - if (IS_NOT_NULL(asc_cc)) { - if (ctype != ONIGENC_CTYPE_ASCII) - r = add_ctype_to_cc(asc_cc, ctype, tok->u.prop.not, 0, env); - if (r != 0) return r; - } - goto next_class; - } - break; - - case TK_CC_RANGE: - if (state == CCS_VALUE) { - r = fetch_token_in_cc(tok, &p, end, env); - if (r < 0) goto err; - fetched = 1; - if (r == TK_CC_CLOSE) { /* allow [x-] */ - range_end_val: - v = (OnigCodePoint )'-'; - in_israw = 0; - goto val_entry; - } - else if (r == TK_CC_AND) { - CC_ESC_WARN(env, (UChar* )"-"); - goto range_end_val; - } - state = CCS_RANGE; - } - else if (state == CCS_START) { - /* [-xa] is allowed */ - v = (OnigCodePoint )tok->u.c; - in_israw = 0; - - r = fetch_token_in_cc(tok, &p, end, env); - if (r < 0) goto err; - fetched = 1; - /* [--x] or [a&&-x] is warned. */ - if (r == TK_CC_RANGE || and_start != 0) - CC_ESC_WARN(env, (UChar* )"-"); - - goto val_entry; - } - else if (state == CCS_RANGE) { - CC_ESC_WARN(env, (UChar* )"-"); - goto sb_char; /* [!--x] is allowed */ - } - else { /* CCS_COMPLETE */ - r = fetch_token_in_cc(tok, &p, end, env); - if (r < 0) goto err; - fetched = 1; - if (r == TK_CC_CLOSE) goto range_end_val; /* allow [a-b-] */ - else if (r == TK_CC_AND) { - 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] */ - } - r = ONIGERR_UNMATCHED_RANGE_SPECIFIER_IN_CHAR_CLASS; - goto err; - } - break; - - case TK_CC_CC_OPEN: /* [ */ - { - Node *anode, *aasc_node; - CClassNode* acc; - - r = parse_char_class(&anode, &aasc_node, tok, &p, end, env); - if (r == 0) { - acc = NCCLASS(anode); - r = or_cclass(cc, acc, env); - } - if (r == 0 && IS_NOT_NULL(aasc_node)) { - acc = NCCLASS(aasc_node); - r = or_cclass(asc_cc, acc, env); - } - onig_node_free(anode); - onig_node_free(aasc_node); - if (r != 0) goto err; - } - break; - - case TK_CC_AND: /* && */ - { - if (state == CCS_VALUE) { - r = next_state_val(cc, asc_cc, &vs, 0, &val_israw, 0, val_type, - &val_type, &state, env); - if (r != 0) goto err; - } - /* initialize local variables */ - and_start = 1; - state = CCS_START; - - if (IS_NOT_NULL(prev_cc)) { - r = and_cclass(prev_cc, cc, env); - if (r != 0) goto err; - bbuf_free(cc->mbuf); - if (IS_NOT_NULL(asc_cc)) { - r = and_cclass(asc_prev_cc, asc_cc, env); - if (r != 0) goto err; - bbuf_free(asc_cc->mbuf); - } - } - else { - prev_cc = cc; - cc = &work_cc; - if (IS_NOT_NULL(asc_cc)) { - asc_prev_cc = asc_cc; - asc_cc = &asc_work_cc; - } - } - initialize_cclass(cc); - if (IS_NOT_NULL(asc_cc)) - initialize_cclass(asc_cc); - } - break; - - case TK_EOT: - r = ONIGERR_PREMATURE_END_OF_CHAR_CLASS; - goto err; - break; - default: - r = ONIGERR_PARSER_BUG; - goto err; - break; - } - - if (fetched) - r = tok->type; - else { - r = fetch_token_in_cc(tok, &p, end, env); - if (r < 0) goto err; - } - } - - if (state == CCS_VALUE) { - r = next_state_val(cc, asc_cc, &vs, 0, &val_israw, 0, val_type, - &val_type, &state, env); - if (r != 0) goto err; - } - - if (IS_NOT_NULL(prev_cc)) { - r = and_cclass(prev_cc, cc, env); - if (r != 0) goto err; - bbuf_free(cc->mbuf); - cc = prev_cc; - if (IS_NOT_NULL(asc_cc)) { - r = and_cclass(asc_prev_cc, asc_cc, env); - if (r != 0) goto err; - bbuf_free(asc_cc->mbuf); - asc_cc = asc_prev_cc; - } - } - - if (neg != 0) { - NCCLASS_SET_NOT(cc); - if (IS_NOT_NULL(asc_cc)) - NCCLASS_SET_NOT(asc_cc); - } - else { - NCCLASS_CLEAR_NOT(cc); - if (IS_NOT_NULL(asc_cc)) - NCCLASS_CLEAR_NOT(asc_cc); - } - if (IS_NCCLASS_NOT(cc) && - IS_SYNTAX_BV(env->syntax, ONIG_SYN_NOT_NEWLINE_IN_NEGATIVE_CC)) { - int is_empty; - - is_empty = (IS_NULL(cc->mbuf) ? 1 : 0); - if (is_empty != 0) - BITSET_IS_EMPTY(cc->bs, is_empty); - - if (is_empty == 0) { -#define NEWLINE_CODE 0x0a - - if (ONIGENC_IS_CODE_NEWLINE(env->enc, NEWLINE_CODE)) { - if (ONIGENC_CODE_TO_MBCLEN(env->enc, NEWLINE_CODE) == 1) - BITSET_SET_BIT_CHKDUP(cc->bs, NEWLINE_CODE); - else { - r = add_code_range(&(cc->mbuf), env, NEWLINE_CODE, NEWLINE_CODE); - if (r < 0) goto err; - } - } - } - } - *src = p; - env->parse_depth--; - return 0; - - err: - if (cc != NCCLASS(*np)) - bbuf_free(cc->mbuf); - if (IS_NOT_NULL(asc_cc) && (asc_cc != NCCLASS(*asc_np))) - bbuf_free(asc_cc->mbuf); - return r; -} - -static int parse_subexp(Node** top, OnigToken* tok, int term, - UChar** src, UChar* end, ScanEnv* env); - -static int -parse_enclose(Node** np, OnigToken* tok, int term, UChar** src, UChar* end, - ScanEnv* env) -{ - int r = 0, num; - Node *target, *work1 = NULL, *work2 = NULL; - OnigOptionType option; - OnigCodePoint c; - OnigEncoding enc = env->enc; - -#ifdef USE_NAMED_GROUP - int list_capture; -#endif - - UChar* p = *src; - PFETCH_READY; - - *np = NULL; - if (PEND) return ONIGERR_END_PATTERN_WITH_UNMATCHED_PARENTHESIS; - - option = env->option; - if (PPEEK_IS('?') && - IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_QMARK_GROUP_EFFECT)) { - PINC; - if (PEND) return ONIGERR_END_PATTERN_IN_GROUP; - - PFETCH(c); - switch (c) { - case ':': /* (?:...) grouping only */ - group: - r = fetch_token(tok, &p, end, env); - if (r < 0) return r; - r = parse_subexp(np, tok, term, &p, end, env); - if (r < 0) return r; - *src = p; - return 1; /* group */ - break; - - case '=': - *np = onig_node_new_anchor(ANCHOR_PREC_READ); - break; - case '!': /* preceding read */ - *np = onig_node_new_anchor(ANCHOR_PREC_READ_NOT); - break; - case '>': /* (?>...) stop backtrack */ - *np = node_new_enclose(ENCLOSE_STOP_BACKTRACK); - break; - case '~': /* (?~...) absent operator */ - if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_QMARK_TILDE_ABSENT)) { - *np = node_new_enclose(ENCLOSE_ABSENT); - } - else { - return ONIGERR_UNDEFINED_GROUP_OPTION; - } - break; - -#ifdef USE_NAMED_GROUP - case '\'': - if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP)) { - goto named_group1; - } - else - return ONIGERR_UNDEFINED_GROUP_OPTION; - break; - -# ifdef USE_CAPITAL_P_NAMED_GROUP - case 'P': /* (?P...) */ - if (!PEND && - IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_QMARK_CAPITAL_P_NAMED_GROUP)) { - PFETCH(c); - if (c == '<') goto named_group1; - } - return ONIGERR_UNDEFINED_GROUP_OPTION; - break; -# endif -#endif - - case '<': /* look behind (?<=...), (?...) */ - if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP)) { - UChar *name; - UChar *name_end; - - PUNFETCH; - c = '<'; - - named_group1: - list_capture = 0; - -# ifdef USE_CAPTURE_HISTORY - named_group2: -# endif - name = p; - r = fetch_name((OnigCodePoint )c, &p, end, &name_end, env, &num, 0); - if (r < 0) return r; - - num = scan_env_add_mem_entry(env); - if (num < 0) return num; - if (list_capture != 0 && num >= (int )BIT_STATUS_BITS_NUM) - return ONIGERR_GROUP_NUMBER_OVER_FOR_CAPTURE_HISTORY; - - r = name_add(env->reg, name, name_end, num, env); - if (r != 0) return r; - *np = node_new_enclose_memory(env->option, 1); - CHECK_NULL_RETURN_MEMERR(*np); - NENCLOSE(*np)->regnum = num; - if (list_capture != 0) - BIT_STATUS_ON_AT_SIMPLE(env->capture_history, num); - env->num_named++; - } - else { - return ONIGERR_UNDEFINED_GROUP_OPTION; - } - } -#else - else { - return ONIGERR_UNDEFINED_GROUP_OPTION; - } -#endif - break; - -#ifdef USE_CAPTURE_HISTORY - case '@': - if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_ATMARK_CAPTURE_HISTORY)) { -# ifdef USE_NAMED_GROUP - if (!PEND && - IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP)) { - PFETCH(c); - if (c == '<' || c == '\'') { - list_capture = 1; - goto named_group2; /* (?@...) */ - } - PUNFETCH; - } -# endif - *np = node_new_enclose_memory(env->option, 0); - CHECK_NULL_RETURN_MEMERR(*np); - num = scan_env_add_mem_entry(env); - if (num < 0) return num; - if (num >= (int )BIT_STATUS_BITS_NUM) - return ONIGERR_GROUP_NUMBER_OVER_FOR_CAPTURE_HISTORY; - - NENCLOSE(*np)->regnum = num; - BIT_STATUS_ON_AT_SIMPLE(env->capture_history, num); - } - else { - return ONIGERR_UNDEFINED_GROUP_OPTION; - } - break; -#endif /* USE_CAPTURE_HISTORY */ - - case '(': /* conditional expression: (?(cond)yes), (?(cond)yes|no) */ - if (!PEND && - IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_QMARK_LPAREN_CONDITION)) { - UChar *name = NULL; - UChar *name_end; - PFETCH(c); - if (ONIGENC_IS_CODE_DIGIT(enc, c)) { /* (n) */ - PUNFETCH; - r = fetch_name((OnigCodePoint )'(', &p, end, &name_end, env, &num, 1); - if (r < 0) return r; -#if 0 - /* Relative number is not currently supported. (same as Perl) */ - if (num < 0) { - num = BACKREF_REL_TO_ABS(num, env); - if (num <= 0) - return ONIGERR_INVALID_BACKREF; - } -#endif - if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_STRICT_CHECK_BACKREF)) { - if (num > env->num_mem || - IS_NULL(SCANENV_MEM_NODES(env)[num])) - return ONIGERR_INVALID_BACKREF; - } - } -#ifdef USE_NAMED_GROUP - else if (c == '<' || c == '\'') { /* (), ('name') */ - name = p; - r = fetch_named_backref_token(c, tok, &p, end, env); - if (r < 0) return r; - if (!PPEEK_IS(')')) return ONIGERR_UNDEFINED_GROUP_OPTION; - PINC; - - if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_USE_LEFT_MOST_NAMED_GROUP)) { - num = tok->u.backref.ref1; - } - else { - /* FIXME: - * Use left most named group for now. This is the same as Perl. - * However this should use the same strategy as normal back- - * references on Ruby syntax; search right to left. */ - int len = tok->u.backref.num; - num = len > 1 ? tok->u.backref.refs[0] : tok->u.backref.ref1; - } - } -#endif - else - return ONIGERR_INVALID_CONDITION_PATTERN; - *np = node_new_enclose(ENCLOSE_CONDITION); - CHECK_NULL_RETURN_MEMERR(*np); - NENCLOSE(*np)->regnum = num; - if (IS_NOT_NULL(name)) NENCLOSE(*np)->state |= NST_NAME_REF; - } - else - return ONIGERR_UNDEFINED_GROUP_OPTION; - break; - -#if 0 - case '|': /* branch reset: (?|...) */ - if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_QMARK_VBAR_BRANCH_RESET)) { - /* TODO */ - } - else - return ONIGERR_UNDEFINED_GROUP_OPTION; - break; -#endif - - case '^': /* loads default options */ - if (!PEND && IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_OPTION_PERL)) { - /* d-imsx */ - ONOFF(option, ONIG_OPTION_ASCII_RANGE, 1); - ONOFF(option, ONIG_OPTION_IGNORECASE, 1); - ONOFF(option, ONIG_OPTION_SINGLELINE, 0); - ONOFF(option, ONIG_OPTION_MULTILINE, 1); - ONOFF(option, ONIG_OPTION_EXTEND, 1); - PFETCH(c); - } -#if 0 - else if (!PEND && IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_OPTION_RUBY)) { - /* d-imx */ - ONOFF(option, ONIG_OPTION_ASCII_RANGE, 0); - ONOFF(option, ONIG_OPTION_POSIX_BRACKET_ALL_RANGE, 0); - ONOFF(option, ONIG_OPTION_WORD_BOUND_ALL_RANGE, 0); - ONOFF(option, ONIG_OPTION_IGNORECASE, 1); - ONOFF(option, ONIG_OPTION_MULTILINE, 1); - ONOFF(option, ONIG_OPTION_EXTEND, 1); - PFETCH(c); - } -#endif - else { - return ONIGERR_UNDEFINED_GROUP_OPTION; - } - /* fall through */ -#ifdef USE_POSIXLINE_OPTION - case 'p': -#endif - case '-': case 'i': case 'm': case 's': case 'x': - case 'a': case 'd': case 'l': case 'u': - { - int neg = 0; - - while (1) { - switch (c) { - case ':': - case ')': - break; - - case '-': neg = 1; break; - case 'x': ONOFF(option, ONIG_OPTION_EXTEND, neg); break; - case 'i': ONOFF(option, ONIG_OPTION_IGNORECASE, neg); break; - case 's': - if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_OPTION_PERL)) { - ONOFF(option, ONIG_OPTION_MULTILINE, neg); - } - else - return ONIGERR_UNDEFINED_GROUP_OPTION; - break; - - case 'm': - if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_OPTION_PERL)) { - ONOFF(option, ONIG_OPTION_SINGLELINE, (neg == 0 ? 1 : 0)); - } - else if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_OPTION_RUBY)) { - ONOFF(option, ONIG_OPTION_MULTILINE, neg); - } - else - return ONIGERR_UNDEFINED_GROUP_OPTION; - break; -#ifdef USE_POSIXLINE_OPTION - case 'p': - ONOFF(option, ONIG_OPTION_MULTILINE|ONIG_OPTION_SINGLELINE, neg); - break; -#endif - - case 'a': /* limits \d, \s, \w and POSIX brackets to ASCII range */ - if ((IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_OPTION_PERL) || - IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_OPTION_RUBY)) && - (neg == 0)) { - ONOFF(option, ONIG_OPTION_ASCII_RANGE, 0); - ONOFF(option, ONIG_OPTION_POSIX_BRACKET_ALL_RANGE, 1); - ONOFF(option, ONIG_OPTION_WORD_BOUND_ALL_RANGE, 1); - } - else - return ONIGERR_UNDEFINED_GROUP_OPTION; - break; - - case 'u': - if ((IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_OPTION_PERL) || - IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_OPTION_RUBY)) && - (neg == 0)) { - ONOFF(option, ONIG_OPTION_ASCII_RANGE, 1); - ONOFF(option, ONIG_OPTION_POSIX_BRACKET_ALL_RANGE, 1); - ONOFF(option, ONIG_OPTION_WORD_BOUND_ALL_RANGE, 1); - } - else - return ONIGERR_UNDEFINED_GROUP_OPTION; - break; - - case 'd': - if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_OPTION_PERL) && - (neg == 0)) { - ONOFF(option, ONIG_OPTION_ASCII_RANGE, 1); - } - else if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_OPTION_RUBY) && - (neg == 0)) { - ONOFF(option, ONIG_OPTION_ASCII_RANGE, 0); - ONOFF(option, ONIG_OPTION_POSIX_BRACKET_ALL_RANGE, 0); - ONOFF(option, ONIG_OPTION_WORD_BOUND_ALL_RANGE, 0); - } - else - return ONIGERR_UNDEFINED_GROUP_OPTION; - break; - - case 'l': - if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_OPTION_PERL) && (neg == 0)) { - ONOFF(option, ONIG_OPTION_ASCII_RANGE, 1); - } - else - return ONIGERR_UNDEFINED_GROUP_OPTION; - break; - - default: - return ONIGERR_UNDEFINED_GROUP_OPTION; - } - - if (c == ')') { - *np = node_new_option(option); - CHECK_NULL_RETURN_MEMERR(*np); - *src = p; - return 2; /* option only */ - } - else if (c == ':') { - OnigOptionType prev = env->option; - - env->option = option; - r = fetch_token(tok, &p, end, env); - if (r < 0) { - env->option = prev; - return r; - } - r = parse_subexp(&target, tok, term, &p, end, env); - env->option = prev; - if (r < 0) return r; - *np = node_new_option(option); - CHECK_NULL_RETURN_MEMERR(*np); - NENCLOSE(*np)->target = target; - *src = p; - return 0; - } - - if (PEND) return ONIGERR_END_PATTERN_IN_GROUP; - PFETCH(c); - } - } - break; - - default: - return ONIGERR_UNDEFINED_GROUP_OPTION; - } - } - else { - if (ONIG_IS_OPTION_ON(env->option, ONIG_OPTION_DONT_CAPTURE_GROUP)) - goto group; - - *np = node_new_enclose_memory(env->option, 0); - CHECK_NULL_RETURN_MEMERR(*np); - num = scan_env_add_mem_entry(env); - if (num < 0) return num; - NENCLOSE(*np)->regnum = num; - } - - CHECK_NULL_RETURN_MEMERR(*np); - r = fetch_token(tok, &p, end, env); - if (r < 0) return r; - r = parse_subexp(&target, tok, term, &p, end, env); - if (r < 0) { - onig_node_free(target); - return r; - } - - if (NTYPE(*np) == NT_ANCHOR) - NANCHOR(*np)->target = target; - else { - NENCLOSE(*np)->target = target; - if (NENCLOSE(*np)->type == ENCLOSE_MEMORY) { - /* Don't move this to previous of parse_subexp() */ - r = scan_env_set_mem_node(env, NENCLOSE(*np)->regnum, *np); - if (r != 0) return r; - } - else if (NENCLOSE(*np)->type == ENCLOSE_CONDITION) { - if (NTYPE(target) != NT_ALT) { - /* convert (?(cond)yes) to (?(cond)yes|empty) */ - work1 = node_new_empty(); - if (IS_NULL(work1)) goto err; - work2 = onig_node_new_alt(work1, NULL_NODE); - if (IS_NULL(work2)) goto err; - work1 = onig_node_new_alt(target, work2); - if (IS_NULL(work1)) goto err; - NENCLOSE(*np)->target = work1; - } - } - } - - *src = p; - return 0; - - err: - onig_node_free(work1); - onig_node_free(work2); - onig_node_free(*np); - *np = NULL; - return ONIGERR_MEMORY; -} - -static const char* const PopularQStr[] = { - "?", "*", "+", "??", "*?", "+?" -}; - -static const char* const ReduceQStr[] = { - "", "", "*", "*?", "??", "+ and ??", "+? and ?" -}; - -static int -set_quantifier(Node* qnode, Node* target, int group, ScanEnv* env) -{ - QtfrNode* qn; - - qn = NQTFR(qnode); - if (qn->lower == 1 && qn->upper == 1) { - return 1; - } - - switch (NTYPE(target)) { - case NT_STR: - if (! group) { - StrNode* sn = NSTR(target); - if (str_node_can_be_split(sn, env->enc)) { - Node* n = str_node_split_last_char(sn, env->enc); - if (IS_NOT_NULL(n)) { - qn->target = n; - return 2; - } - } - } - break; - - case NT_QTFR: - { /* check redundant double repeat. */ - /* verbose warn (?:.?)? etc... but not warn (.?)? etc... */ - QtfrNode* qnt = NQTFR(target); - int nestq_num = popular_quantifier_num(qn); - int targetq_num = popular_quantifier_num(qnt); - -#ifdef USE_WARNING_REDUNDANT_NESTED_REPEAT_OPERATOR - if (nestq_num >= 0 && targetq_num >= 0 && - IS_SYNTAX_BV(env->syntax, ONIG_SYN_WARN_REDUNDANT_NESTED_REPEAT)) { - switch (ReduceTypeTable[targetq_num][nestq_num]) { - case RQ_ASIS: - break; - - case RQ_DEL: - if (onig_warn != onig_null_warn) { - onig_syntax_warn(env, "regular expression has redundant nested repeat operator '%s'", - PopularQStr[targetq_num]); - } - goto warn_exit; - break; - - default: - if (onig_warn != onig_null_warn) { - onig_syntax_warn(env, "nested repeat operator '%s' and '%s' was replaced with '%s' in regular expression", - PopularQStr[targetq_num], PopularQStr[nestq_num], - ReduceQStr[ReduceTypeTable[targetq_num][nestq_num]]); - } - goto warn_exit; - break; - } - } - - warn_exit: -#endif - if (targetq_num >= 0) { - if (nestq_num >= 0) { - onig_reduce_nested_quantifier(qnode, target); - goto q_exit; - } - else if (targetq_num == 1 || targetq_num == 2) { /* * or + */ - /* (?:a*){n,m}, (?:a+){n,m} => (?:a*){n,n}, (?:a+){n,n} */ - if (! IS_REPEAT_INFINITE(qn->upper) && qn->upper > 1 && qn->greedy) { - qn->upper = (qn->lower == 0 ? 1 : qn->lower); - } - } - } - } - break; - - default: - break; - } - - qn->target = target; - q_exit: - return 0; -} - - -#ifndef CASE_FOLD_IS_APPLIED_INSIDE_NEGATIVE_CCLASS -static int -clear_not_flag_cclass(CClassNode* cc, OnigEncoding enc) -{ - BBuf *tbuf; - int r; - - if (IS_NCCLASS_NOT(cc)) { - bitset_invert(cc->bs); - - if (! ONIGENC_IS_SINGLEBYTE(enc)) { - r = not_code_range_buf(enc, cc->mbuf, &tbuf); - if (r != 0) return r; - - bbuf_free(cc->mbuf); - cc->mbuf = tbuf; - } - - NCCLASS_CLEAR_NOT(cc); - } - - return 0; -} -#endif /* CASE_FOLD_IS_APPLIED_INSIDE_NEGATIVE_CCLASS */ - -typedef struct { - ScanEnv* env; - CClassNode* cc; - CClassNode* asc_cc; - Node* alt_root; - Node** ptail; -} IApplyCaseFoldArg; - -static int -i_apply_case_fold(OnigCodePoint from, OnigCodePoint to[], - int to_len, void* arg) -{ - IApplyCaseFoldArg* iarg; - ScanEnv* env; - CClassNode* cc; - CClassNode* asc_cc; - BitSetRef bs; - int add_flag, r; - - iarg = (IApplyCaseFoldArg* )arg; - env = iarg->env; - cc = iarg->cc; - asc_cc = iarg->asc_cc; - bs = cc->bs; - - if (IS_NULL(asc_cc)) { - add_flag = 0; - } - else if (ONIGENC_IS_ASCII_CODE(from) == ONIGENC_IS_ASCII_CODE(*to)) { - add_flag = 1; - } - else { - add_flag = onig_is_code_in_cc(env->enc, from, asc_cc); - if (IS_NCCLASS_NOT(asc_cc)) - add_flag = !add_flag; - } - - if (to_len == 1) { - int is_in = onig_is_code_in_cc(env->enc, from, cc); -#ifdef CASE_FOLD_IS_APPLIED_INSIDE_NEGATIVE_CCLASS - if ((is_in != 0 && !IS_NCCLASS_NOT(cc)) || - (is_in == 0 && IS_NCCLASS_NOT(cc))) { - if (add_flag) { - if (ONIGENC_MBC_MINLEN(env->enc) > 1 || *to >= SINGLE_BYTE_SIZE) { - r = add_code_range0(&(cc->mbuf), env, *to, *to, 0); - if (r < 0) return r; - } - else { - BITSET_SET_BIT(bs, *to); - } - } - } -#else - if (is_in != 0) { - if (add_flag) { - if (ONIGENC_MBC_MINLEN(env->enc) > 1 || *to >= SINGLE_BYTE_SIZE) { - if (IS_NCCLASS_NOT(cc)) clear_not_flag_cclass(cc, env->enc); - r = add_code_range0(&(cc->mbuf), env, *to, *to, 0); - if (r < 0) return r; - } - else { - if (IS_NCCLASS_NOT(cc)) { - BITSET_CLEAR_BIT(bs, *to); - } - else { - BITSET_SET_BIT(bs, *to); - } - } - } - } -#endif /* CASE_FOLD_IS_APPLIED_INSIDE_NEGATIVE_CCLASS */ - } - else { - int r, i, len; - UChar buf[ONIGENC_CODE_TO_MBC_MAXLEN]; - Node *snode = NULL_NODE; - - if (onig_is_code_in_cc(env->enc, from, cc) -#ifdef CASE_FOLD_IS_APPLIED_INSIDE_NEGATIVE_CCLASS - && !IS_NCCLASS_NOT(cc) -#endif - ) { - for (i = 0; i < to_len; i++) { - len = ONIGENC_CODE_TO_MBC(env->enc, to[i], buf); - if (i == 0) { - snode = onig_node_new_str(buf, buf + len); - CHECK_NULL_RETURN_MEMERR(snode); - - /* char-class expanded multi-char only - compare with string folded at match time. */ - NSTRING_SET_AMBIG(snode); - } - else { - r = onig_node_str_cat(snode, buf, buf + len); - if (r < 0) { - onig_node_free(snode); - return r; - } - } - } - - *(iarg->ptail) = onig_node_new_alt(snode, NULL_NODE); - CHECK_NULL_RETURN_MEMERR(*(iarg->ptail)); - iarg->ptail = &(NCDR((*(iarg->ptail)))); - } - } - - return 0; -} - -static int -cclass_case_fold(Node** np, CClassNode* cc, CClassNode* asc_cc, ScanEnv* env) -{ - int r; - IApplyCaseFoldArg iarg; - - iarg.env = env; - iarg.cc = cc; - iarg.asc_cc = asc_cc; - iarg.alt_root = NULL_NODE; - iarg.ptail = &(iarg.alt_root); - - r = ONIGENC_APPLY_ALL_CASE_FOLD(env->enc, env->case_fold_flag, - i_apply_case_fold, &iarg); - if (r != 0) { - onig_node_free(iarg.alt_root); - return r; - } - if (IS_NOT_NULL(iarg.alt_root)) { - Node* work = onig_node_new_alt(*np, iarg.alt_root); - if (IS_NULL(work)) { - onig_node_free(iarg.alt_root); - return ONIGERR_MEMORY; - } - *np = work; - } - return r; -} - -static int -node_linebreak(Node** np, ScanEnv* env) -{ - /* same as (?>\x0D\x0A|[\x0A-\x0D\x{85}\x{2028}\x{2029}]) */ - Node* left = NULL; - Node* right = NULL; - Node* target1 = NULL; - Node* target2 = NULL; - CClassNode* cc; - int num1, num2, r; - UChar buf[ONIGENC_CODE_TO_MBC_MAXLEN * 2]; - - /* \x0D\x0A */ - num1 = ONIGENC_CODE_TO_MBC(env->enc, 0x0D, buf); - if (num1 < 0) return num1; - num2 = ONIGENC_CODE_TO_MBC(env->enc, 0x0A, buf + num1); - if (num2 < 0) return num2; - left = node_new_str_raw(buf, buf + num1 + num2); - if (IS_NULL(left)) goto err; - - /* [\x0A-\x0D] or [\x0A-\x0D\x{85}\x{2028}\x{2029}] */ - right = node_new_cclass(); - if (IS_NULL(right)) goto err; - cc = NCCLASS(right); - if (ONIGENC_MBC_MINLEN(env->enc) > 1) { - r = add_code_range(&(cc->mbuf), env, 0x0A, 0x0D); - if (r != 0) goto err; - } - else { - bitset_set_range(env, cc->bs, 0x0A, 0x0D); - } - - /* TODO: move this block to enc/unicode.c */ - if (ONIGENC_IS_UNICODE(env->enc)) { - /* UTF-8, UTF-16BE/LE, UTF-32BE/LE */ - r = add_code_range(&(cc->mbuf), env, 0x85, 0x85); - if (r != 0) goto err; - r = add_code_range(&(cc->mbuf), env, 0x2028, 0x2029); - if (r != 0) goto err; - } - - /* ...|... */ - target1 = onig_node_new_alt(right, NULL_NODE); - if (IS_NULL(target1)) goto err; - right = NULL; - target2 = onig_node_new_alt(left, target1); - if (IS_NULL(target2)) goto err; - left = NULL; - target1 = NULL; - - /* (?>...) */ - *np = node_new_enclose(ENCLOSE_STOP_BACKTRACK); - if (IS_NULL(*np)) goto err; - NENCLOSE(*np)->target = target2; - return ONIG_NORMAL; - - err: - onig_node_free(left); - onig_node_free(right); - onig_node_free(target1); - onig_node_free(target2); - return ONIGERR_MEMORY; -} - -static int -propname2ctype(ScanEnv* env, const char* propname) -{ - UChar* name = (UChar* )propname; - int ctype = env->enc->property_name_to_ctype(ONIG_ENCODING_ASCII, - name, name + strlen(propname)); - return ctype; -} - -static int -node_extended_grapheme_cluster(Node** np, ScanEnv* env) -{ - Node* tmp = NULL; - Node* np1 = NULL; - Node* list = NULL; - Node* list2 = NULL; - Node* alt = NULL; - Node* alt2 = NULL; - BBuf *pbuf1 = NULL; - int r = 0; - int num1; - UChar buf[ONIGENC_CODE_TO_MBC_MAXLEN * 2]; - OnigOptionType option; - -#ifdef USE_UNICODE_PROPERTIES - if (ONIGENC_IS_UNICODE(env->enc)) { - /* UTF-8, UTF-16BE/LE, UTF-32BE/LE */ - CClassNode* cc; - OnigCodePoint sb_out = (ONIGENC_MBC_MINLEN(env->enc) > 1) ? 0x00 : 0x80; - int extend = propname2ctype(env, "Grapheme_Cluster_Break=Extend"); - - /* Prepend* - * ( RI-sequence | Hangul-Syllable | !Control ) - * ( Grapheme_Extend | SpacingMark )* */ - - /* ( Grapheme_Extend | SpacingMark )* */ - np1 = node_new_cclass(); - if (IS_NULL(np1)) goto err; - cc = NCCLASS(np1); - r = add_ctype_to_cc(cc, extend, 0, 0, env); - if (r != 0) goto err; - r = add_ctype_to_cc(cc, propname2ctype(env, "Grapheme_Cluster_Break=SpacingMark"), 0, 0, env); - if (r != 0) goto err; - r = add_code_range(&(cc->mbuf), env, 0x200D, 0x200D); - if (r != 0) goto err; - - tmp = node_new_quantifier(0, REPEAT_INFINITE, 0); - if (IS_NULL(tmp)) goto err; - NQTFR(tmp)->target = np1; - np1 = tmp; - - tmp = node_new_list(np1, NULL_NODE); - if (IS_NULL(tmp)) goto err; - list = tmp; - np1 = NULL; - - /* ( RI-sequence | Hangul-Syllable | !Control ) */ - /* !Control */ - np1 = node_new_cclass(); - if (IS_NULL(np1)) goto err; - cc = NCCLASS(np1); - r = add_ctype_to_cc(cc, propname2ctype(env, "Grapheme_Cluster_Break=Control"), 1, 0, env); - if (r != 0) goto err; - if (ONIGENC_MBC_MINLEN(env->enc) > 1) { - BBuf *pbuf2 = NULL; - r = add_code_range(&pbuf1, env, 0x0a, 0x0a); - if (r != 0) goto err; - r = add_code_range(&pbuf1, env, 0x0d, 0x0d); - if (r != 0) goto err; - r = and_code_range_buf(cc->mbuf, 0, pbuf1, 1, &pbuf2, env); - if (r != 0) { - bbuf_free(pbuf2); - goto err; - } - bbuf_free(pbuf1); - pbuf1 = NULL; - bbuf_free(cc->mbuf); - cc->mbuf = pbuf2; - } - else { - BITSET_CLEAR_BIT(cc->bs, 0x0a); - BITSET_CLEAR_BIT(cc->bs, 0x0d); - } - - tmp = onig_node_new_alt(np1, NULL_NODE); - if (IS_NULL(tmp)) goto err; - alt = tmp; - np1 = NULL; - - /* Hangul-Syllable - * := L* V+ T* - * | L* LV V* T* - * | L* LVT T* - * | L+ - * | T+ */ - - /* T+ */ - np1 = node_new_cclass(); - if (IS_NULL(np1)) goto err; - cc = NCCLASS(np1); - r = add_ctype_to_cc(cc, propname2ctype(env, "Grapheme_Cluster_Break=T"), 0, 0, env); - if (r != 0) goto err; - - tmp = node_new_quantifier(1, REPEAT_INFINITE, 0); - if (IS_NULL(tmp)) goto err; - NQTFR(tmp)->target = np1; - np1 = tmp; - - tmp = onig_node_new_alt(np1, alt); - if (IS_NULL(tmp)) goto err; - alt = tmp; - np1 = NULL; - - /* L+ */ - np1 = node_new_cclass(); - if (IS_NULL(np1)) goto err; - cc = NCCLASS(np1); - r = add_ctype_to_cc(cc, propname2ctype(env, "Grapheme_Cluster_Break=L"), 0, 0, env); - if (r != 0) goto err; - - tmp = node_new_quantifier(1, REPEAT_INFINITE, 0); - if (IS_NULL(tmp)) goto err; - NQTFR(tmp)->target = np1; - np1 = tmp; - - tmp = onig_node_new_alt(np1, alt); - if (IS_NULL(tmp)) goto err; - alt = tmp; - np1 = NULL; - - /* L* LVT T* */ - np1 = node_new_cclass(); - if (IS_NULL(np1)) goto err; - cc = NCCLASS(np1); - r = add_ctype_to_cc(cc, propname2ctype(env, "Grapheme_Cluster_Break=T"), 0, 0, env); - if (r != 0) goto err; - - tmp = node_new_quantifier(0, REPEAT_INFINITE, 0); - if (IS_NULL(tmp)) goto err; - NQTFR(tmp)->target = np1; - np1 = tmp; - - tmp = node_new_list(np1, NULL_NODE); - if (IS_NULL(tmp)) goto err; - list2 = tmp; - np1 = NULL; - - np1 = node_new_cclass(); - if (IS_NULL(np1)) goto err; - cc = NCCLASS(np1); - r = add_ctype_to_cc(cc, propname2ctype(env, "Grapheme_Cluster_Break=LVT"), 0, 0, env); - if (r != 0) goto err; - - tmp = node_new_list(np1, list2); - if (IS_NULL(tmp)) goto err; - list2 = tmp; - np1 = NULL; - - np1 = node_new_cclass(); - if (IS_NULL(np1)) goto err; - cc = NCCLASS(np1); - r = add_ctype_to_cc(cc, propname2ctype(env, "Grapheme_Cluster_Break=L"), 0, 0, env); - if (r != 0) goto err; - - tmp = node_new_quantifier(0, REPEAT_INFINITE, 0); - if (IS_NULL(tmp)) goto err; - NQTFR(tmp)->target = np1; - np1 = tmp; - - tmp = node_new_list(np1, list2); - if (IS_NULL(tmp)) goto err; - list2 = tmp; - np1 = NULL; - - tmp = onig_node_new_alt(list2, alt); - if (IS_NULL(tmp)) goto err; - alt = tmp; - list2 = NULL; - - /* L* LV V* T* */ - np1 = node_new_cclass(); - if (IS_NULL(np1)) goto err; - cc = NCCLASS(np1); - r = add_ctype_to_cc(cc, propname2ctype(env, "Grapheme_Cluster_Break=T"), 0, 0, env); - if (r != 0) goto err; - - tmp = node_new_quantifier(0, REPEAT_INFINITE, 0); - if (IS_NULL(tmp)) goto err; - NQTFR(tmp)->target = np1; - np1 = tmp; - - tmp = node_new_list(np1, NULL_NODE); - if (IS_NULL(tmp)) goto err; - list2 = tmp; - np1 = NULL; - - np1 = node_new_cclass(); - if (IS_NULL(np1)) goto err; - cc = NCCLASS(np1); - r = add_ctype_to_cc(cc, propname2ctype(env, "Grapheme_Cluster_Break=V"), 0, 0, env); - if (r != 0) goto err; - - tmp = node_new_quantifier(0, REPEAT_INFINITE, 0); - if (IS_NULL(tmp)) goto err; - NQTFR(tmp)->target = np1; - np1 = tmp; - - tmp = node_new_list(np1, list2); - if (IS_NULL(tmp)) goto err; - list2 = tmp; - np1 = NULL; - - np1 = node_new_cclass(); - if (IS_NULL(np1)) goto err; - cc = NCCLASS(np1); - r = add_ctype_to_cc(cc, propname2ctype(env, "Grapheme_Cluster_Break=LV"), 0, 0, env); - if (r != 0) goto err; - - tmp = node_new_list(np1, list2); - if (IS_NULL(tmp)) goto err; - list2 = tmp; - np1 = NULL; - - np1 = node_new_cclass(); - if (IS_NULL(np1)) goto err; - cc = NCCLASS(np1); - r = add_ctype_to_cc(cc, propname2ctype(env, "Grapheme_Cluster_Break=L"), 0, 0, env); - if (r != 0) goto err; - - tmp = node_new_quantifier(0, REPEAT_INFINITE, 0); - if (IS_NULL(tmp)) goto err; - NQTFR(tmp)->target = np1; - np1 = tmp; - - tmp = node_new_list(np1, list2); - if (IS_NULL(tmp)) goto err; - list2 = tmp; - np1 = NULL; - - tmp = onig_node_new_alt(list2, alt); - if (IS_NULL(tmp)) goto err; - alt = tmp; - list2 = NULL; - - /* L* V+ T* */ - np1 = node_new_cclass(); - if (IS_NULL(np1)) goto err; - cc = NCCLASS(np1); - r = add_ctype_to_cc(cc, propname2ctype(env, "Grapheme_Cluster_Break=T"), 0, 0, env); - if (r != 0) goto err; - - tmp = node_new_quantifier(0, REPEAT_INFINITE, 0); - if (IS_NULL(tmp)) goto err; - NQTFR(tmp)->target = np1; - np1 = tmp; - - tmp = node_new_list(np1, NULL_NODE); - if (IS_NULL(tmp)) goto err; - list2 = tmp; - np1 = NULL; - - np1 = node_new_cclass(); - if (IS_NULL(np1)) goto err; - cc = NCCLASS(np1); - r = add_ctype_to_cc(cc, propname2ctype(env, "Grapheme_Cluster_Break=V"), 0, 0, env); - if (r != 0) goto err; - - tmp = node_new_quantifier(1, REPEAT_INFINITE, 0); - if (IS_NULL(tmp)) goto err; - NQTFR(tmp)->target = np1; - np1 = tmp; - - tmp = node_new_list(np1, list2); - if (IS_NULL(tmp)) goto err; - list2 = tmp; - np1 = NULL; - - np1 = node_new_cclass(); - if (IS_NULL(np1)) goto err; - cc = NCCLASS(np1); - r = add_ctype_to_cc(cc, propname2ctype(env, "Grapheme_Cluster_Break=L"), 0, 0, env); - if (r != 0) goto err; - - tmp = node_new_quantifier(0, REPEAT_INFINITE, 0); - if (IS_NULL(tmp)) goto err; - NQTFR(tmp)->target = np1; - np1 = tmp; - - tmp = node_new_list(np1, list2); - if (IS_NULL(tmp)) goto err; - list2 = tmp; - np1 = NULL; - - tmp = onig_node_new_alt(list2, alt); - if (IS_NULL(tmp)) goto err; - alt = tmp; - list2 = NULL; - - /* Emoji sequence := (E_Base | EBG) Extend* E_Modifier? - * (ZWJ (Glue_After_Zwj | EBG Extend* E_Modifier?) )* */ - - /* ZWJ (Glue_After_Zwj | E_Base_GAZ Extend* E_Modifier?) */ - np1 = node_new_cclass(); - if (IS_NULL(np1)) goto err; - cc = NCCLASS(np1); - r = add_ctype_to_cc(cc, propname2ctype(env, "Grapheme_Cluster_Break=E_Modifier"), 0, 0, env); - if (r != 0) goto err; - - tmp = node_new_quantifier(0, 1, 0); - if (IS_NULL(tmp)) goto err; - NQTFR(tmp)->target = np1; - np1 = tmp; - - tmp = node_new_list(np1, NULL_NODE); - if (IS_NULL(tmp)) goto err; - list2 = tmp; - np1 = NULL; - - np1 = node_new_cclass(); - if (IS_NULL(np1)) goto err; - cc = NCCLASS(np1); - r = add_ctype_to_cc(cc, extend, 0, 0, env); - if (r != 0) goto err; - - tmp = node_new_quantifier(0, REPEAT_INFINITE, 0); - if (IS_NULL(tmp)) goto err; - NQTFR(tmp)->target = np1; - np1 = tmp; - - tmp = node_new_list(np1, list2); - if (IS_NULL(tmp)) goto err; - list2 = tmp; - np1 = NULL; - - np1 = node_new_cclass(); - if (IS_NULL(np1)) goto err; - cc = NCCLASS(np1); - r = add_ctype_to_cc(cc, propname2ctype(env, "Grapheme_Cluster_Break=E_Base_GAZ"), 0, 0, env); - if (r != 0) goto err; - - tmp = node_new_list(np1, list2); - if (IS_NULL(tmp)) goto err; - list2 = tmp; - np1 = NULL; - - tmp = onig_node_new_alt(list2, NULL_NODE); - if (IS_NULL(tmp)) goto err; - alt2 = tmp; - list2 = NULL; - - /* Glue_After_Zwj */ - np1 = node_new_cclass(); - if (IS_NULL(np1)) goto err; - cc = NCCLASS(np1); - r = add_ctype_to_cc(cc, extend, 0, 0, env); - if (r != 0) goto err; - - tmp = node_new_quantifier(0, REPEAT_INFINITE, 0); - if (IS_NULL(tmp)) goto err; - NQTFR(tmp)->target = np1; - np1 = tmp; - - tmp = node_new_list(np1, NULL_NODE); - if (IS_NULL(tmp)) goto err; - list2 = tmp; - np1 = NULL; - - np1 = node_new_cclass(); - if (IS_NULL(np1)) goto err; - cc = NCCLASS(np1); - { - static const OnigCodePoint ranges[] = { - 13, - 0x1F308, 0x1F308, - 0x1F33E, 0x1F33E, - 0x1F373, 0x1F373, - 0x1F393, 0x1F393, - 0x1F3A4, 0x1F3A4, - 0x1F3A8, 0x1F3A8, - 0x1F3EB, 0x1F3EB, - 0x1F3ED, 0x1F3ED, - 0x1F4BB, 0x1F4BC, - 0x1F527, 0x1F527, - 0x1F52C, 0x1F52C, - 0x1F680, 0x1F680, - 0x1F692, 0x1F692, - }; - r = add_ctype_to_cc_by_range(cc, -1, 0, env, sb_out, ranges); - if (r != 0) goto err; - } - r = add_ctype_to_cc(cc, propname2ctype(env, "Grapheme_Cluster_Break=Glue_After_Zwj"), 0, 0, env); - if (r != 0) goto err; - - tmp = node_new_list(np1, list2); - if (IS_NULL(tmp)) goto err; - list2 = tmp; - np1 = NULL; - - tmp = onig_node_new_alt(list2, alt2); - if (IS_NULL(tmp)) goto err; - alt2 = tmp; - list2 = NULL; - - /* Emoji variation sequence - * http://unicode.org/Public/emoji/4.0/emoji-zwj-sequences.txt - */ - r = ONIGENC_CODE_TO_MBC(env->enc, 0xfe0f, buf); - if (r < 0) goto err; - np1 = node_new_str_raw(buf, buf + r); - if (IS_NULL(np1)) goto err; - - tmp = node_new_quantifier(0, 1, 0); - if (IS_NULL(tmp)) goto err; - NQTFR(tmp)->target = np1; - np1 = tmp; - - tmp = node_new_list(np1, NULL_NODE); - if (IS_NULL(tmp)) goto err; - list2 = tmp; - np1 = NULL; - - np1 = node_new_cclass(); - if (IS_NULL(np1)) goto err; - cc = NCCLASS(np1); - { - static const OnigCodePoint ranges[] = { - 4, - 0x2640, 0x2640, - 0x2642, 0x2642, - 0x2695, 0x2696, - 0x2708, 0x2708, - }; - r = add_ctype_to_cc_by_range(cc, -1, 0, env, sb_out, ranges); - if (r != 0) goto err; - } - - tmp = node_new_list(np1, list2); - if (IS_NULL(tmp)) goto err; - list2 = tmp; - np1 = NULL; - - tmp = onig_node_new_alt(list2, alt2); - if (IS_NULL(tmp)) goto err; - alt2 = tmp; - list2 = NULL; - - tmp = node_new_list(alt2, NULL_NODE); - if (IS_NULL(tmp)) goto err; - list2 = tmp; - alt2 = NULL; - - /* ZWJ */ - r = ONIGENC_CODE_TO_MBC(env->enc, 0x200D, buf); - if (r < 0) goto err; - np1 = node_new_str_raw(buf, buf + r); - if (IS_NULL(np1)) goto err; - - tmp = node_new_list(np1, list2); - if (IS_NULL(tmp)) goto err; - list2 = tmp; - np1 = NULL; - - tmp = node_new_quantifier(0, REPEAT_INFINITE, 0); - if (IS_NULL(tmp)) goto err; - NQTFR(tmp)->target = list2; - np1 = tmp; - list2 = NULL; - - tmp = node_new_list(np1, NULL_NODE); - if (IS_NULL(tmp)) goto err; - list2 = tmp; - np1 = NULL; - - /* E_Modifier? */ - np1 = node_new_cclass(); - if (IS_NULL(np1)) goto err; - cc = NCCLASS(np1); - r = add_ctype_to_cc(cc, propname2ctype(env, "Grapheme_Cluster_Break=E_Modifier"), 0, 0, env); - if (r != 0) goto err; - - tmp = node_new_quantifier(0, 1, 0); - if (IS_NULL(tmp)) goto err; - NQTFR(tmp)->target = np1; - np1 = tmp; - - tmp = node_new_list(np1, list2); - if (IS_NULL(tmp)) goto err; - list2 = tmp; - np1 = NULL; - - /* Extend* */ - np1 = node_new_cclass(); - if (IS_NULL(np1)) goto err; - cc = NCCLASS(np1); - r = add_ctype_to_cc(cc, extend, 0, 0, env); - if (r != 0) goto err; - - tmp = node_new_quantifier(0, REPEAT_INFINITE, 0); - if (IS_NULL(tmp)) goto err; - NQTFR(tmp)->target = np1; - np1 = tmp; - - tmp = node_new_list(np1, list2); - if (IS_NULL(tmp)) goto err; - list2 = tmp; - np1 = NULL; - - /* (E_Base | EBG) */ - np1 = node_new_cclass(); - if (IS_NULL(np1)) goto err; - cc = NCCLASS(np1); - { - static const OnigCodePoint ranges[] = { - 8, - 0x1F3C2, 0x1F3C2, - 0x1F3C7, 0x1F3C7, - 0x1F3CC, 0x1F3CC, - 0x1F3F3, 0x1F3F3, - 0x1F441, 0x1F441, - 0x1F46F, 0x1F46F, - 0x1F574, 0x1F574, - 0x1F6CC, 0x1F6CC, - }; - r = add_ctype_to_cc_by_range(cc, -1, 0, env, sb_out, ranges); - if (r != 0) goto err; - } - r = add_ctype_to_cc(cc, propname2ctype(env, "Grapheme_Cluster_Break=E_Base"), 0, 0, env); - if (r != 0) goto err; - r = add_ctype_to_cc(cc, propname2ctype(env, "Grapheme_Cluster_Break=E_Base_GAZ"), 0, 0, env); - if (r != 0) goto err; - - tmp = node_new_list(np1, list2); - if (IS_NULL(tmp)) goto err; - list2 = tmp; - np1 = NULL; - - tmp = onig_node_new_alt(list2, alt); - if (IS_NULL(tmp)) goto err; - alt = tmp; - list2 = NULL; - - /* ZWJ (E_Base_GAZ | Glue_After_Zwj) E_Modifier? */ - /* a sequence starting with ZWJ seems artificial, but GraphemeBreakTest - * has such examples. - * http://www.unicode.org/Public/9.0.0/ucd/auxiliary/GraphemeBreakTest.html - */ - np1 = node_new_cclass(); - if (IS_NULL(np1)) goto err; - cc = NCCLASS(np1); - r = add_ctype_to_cc(cc, propname2ctype(env, "Grapheme_Cluster_Break=E_Modifier"), 0, 0, env); - if (r != 0) goto err; - - tmp = node_new_quantifier(0, 1, 0); - if (IS_NULL(tmp)) goto err; - NQTFR(tmp)->target = np1; - np1 = tmp; - - tmp = node_new_list(np1, NULL_NODE); - if (IS_NULL(tmp)) goto err; - list2 = tmp; - np1 = NULL; - - np1 = node_new_cclass(); - if (IS_NULL(np1)) goto err; - cc = NCCLASS(np1); - r = add_ctype_to_cc(cc, propname2ctype(env, "Grapheme_Cluster_Break=Glue_After_Zwj"), 0, 0, env); - if (r != 0) goto err; - r = add_ctype_to_cc(cc, propname2ctype(env, "Grapheme_Cluster_Break=E_Base_GAZ"), 0, 0, env); - if (r != 0) goto err; - - tmp = node_new_list(np1, list2); - if (IS_NULL(tmp)) goto err; - list2 = tmp; - np1 = NULL; - - r = ONIGENC_CODE_TO_MBC(env->enc, 0x200D, buf); - if (r < 0) goto err; - np1 = node_new_str_raw(buf, buf + r); - if (IS_NULL(np1)) goto err; - - tmp = node_new_list(np1, list2); - if (IS_NULL(tmp)) goto err; - list2 = tmp; - np1 = NULL; - - tmp = onig_node_new_alt(list2, alt); - if (IS_NULL(tmp)) goto err; - alt = tmp; - list2 = NULL; - - /* RI-Sequence := Regional_Indicator{2} */ - np1 = node_new_cclass(); - if (IS_NULL(np1)) goto err; - cc = NCCLASS(np1); - r = add_code_range(&(cc->mbuf), env, 0x1F1E6, 0x1F1FF); - if (r != 0) goto err; - - tmp = node_new_quantifier(2, 2, 0); - if (IS_NULL(tmp)) goto err; - NQTFR(tmp)->target = np1; - np1 = tmp; - - tmp = node_new_list(np1, list2); - if (IS_NULL(tmp)) goto err; - list2 = tmp; - np1 = NULL; - - tmp = onig_node_new_alt(list2, alt); - if (IS_NULL(tmp)) goto err; - alt = tmp; - list2 = NULL; - - tmp = node_new_list(alt, list); - if (IS_NULL(tmp)) goto err; - list = tmp; - alt = NULL; - - /* Prepend* */ - np1 = node_new_cclass(); - if (IS_NULL(np1)) goto err; - cc = NCCLASS(np1); - r = add_ctype_to_cc(cc, propname2ctype(env, "Grapheme_Cluster_Break=Prepend"), 0, 0, env); - if (r != 0) goto err; - - tmp = node_new_quantifier(0, REPEAT_INFINITE, 0); - if (IS_NULL(tmp)) goto err; - NQTFR(tmp)->target = np1; - np1 = tmp; - - tmp = node_new_list(np1, list); - if (IS_NULL(tmp)) goto err; - list = tmp; - np1 = NULL; - - /* PerlSyntax: (?s:.), RubySyntax: (?m:.) */ - np1 = node_new_anychar(); - if (IS_NULL(np1)) goto err; - - option = env->option; - ONOFF(option, ONIG_OPTION_MULTILINE, 0); - tmp = node_new_option(option); - if (IS_NULL(tmp)) goto err; - NENCLOSE(tmp)->target = np1; - np1 = tmp; - - tmp = onig_node_new_alt(np1, NULL_NODE); - if (IS_NULL(tmp)) goto err; - alt = tmp; - np1 = NULL; - - /* Prepend+ */ - r = ONIGENC_CODE_TO_MBC(env->enc, 0x200D, buf); - if (r < 0) goto err; - np1 = node_new_str_raw(buf, buf + r); - if (IS_NULL(np1)) goto err; - - tmp = node_new_quantifier(0, 1, 0); - if (IS_NULL(tmp)) goto err; - NQTFR(tmp)->target = np1; - np1 = tmp; - - tmp = node_new_list(np1, NULL_NODE); - if (IS_NULL(tmp)) goto err; - list2 = tmp; - np1 = NULL; - - np1 = node_new_cclass(); - if (IS_NULL(np1)) goto err; - cc = NCCLASS(np1); - r = add_ctype_to_cc(cc, propname2ctype(env, "Grapheme_Cluster_Break=Prepend"), 0, 0, env); - if (r != 0) goto err; - - tmp = node_new_quantifier(1, REPEAT_INFINITE, 0); - if (IS_NULL(tmp)) goto err; - NQTFR(tmp)->target = np1; - np1 = tmp; - - tmp = node_new_list(np1, list2); - if (IS_NULL(tmp)) goto err; - list2 = tmp; - np1 = NULL; - - tmp = onig_node_new_alt(list2, alt); - if (IS_NULL(tmp)) goto err; - alt = tmp; - list2 = NULL; - - tmp = onig_node_new_alt(list, alt); - if (IS_NULL(tmp)) goto err; - alt = tmp; - list = NULL; - } - else -#endif /* USE_UNICODE_PROPERTIES */ - { - /* PerlSyntax: (?s:.), RubySyntax: (?m:.) */ - np1 = node_new_anychar(); - if (IS_NULL(np1)) goto err; - - option = env->option; - ONOFF(option, ONIG_OPTION_MULTILINE, 0); - tmp = node_new_option(option); - if (IS_NULL(tmp)) goto err; - NENCLOSE(tmp)->target = np1; - np1 = tmp; - - alt = onig_node_new_alt(np1, NULL_NODE); - if (IS_NULL(alt)) goto err; - np1 = NULL; - } - - /* \x0D\x0A */ - r = ONIGENC_CODE_TO_MBC(env->enc, 0x0D, buf); - if (r < 0) goto err; - num1 = r; - r = ONIGENC_CODE_TO_MBC(env->enc, 0x0A, buf + num1); - if (r < 0) goto err; - np1 = node_new_str_raw(buf, buf + num1 + r); - if (IS_NULL(np1)) goto err; - - tmp = onig_node_new_alt(np1, alt); - if (IS_NULL(tmp)) goto err; - alt = tmp; - np1 = NULL; - - /* (?>\x0D\x0A|...) */ - tmp = node_new_enclose(ENCLOSE_STOP_BACKTRACK); - if (IS_NULL(tmp)) goto err; - NENCLOSE(tmp)->target = alt; - np1 = tmp; - -#ifdef USE_UNICODE_PROPERTIES - if (ONIGENC_IS_UNICODE(env->enc)) { - /* Don't ignore case. */ - option = env->option; - ONOFF(option, ONIG_OPTION_IGNORECASE, 1); - *np = node_new_option(option); - if (IS_NULL(*np)) goto err; - NENCLOSE(*np)->target = np1; - } - else -#endif - { - *np = np1; - } - return ONIG_NORMAL; - - err: - onig_node_free(np1); - onig_node_free(list); - onig_node_free(list2); - onig_node_free(alt); - onig_node_free(alt2); - bbuf_free(pbuf1); - return (r == 0) ? ONIGERR_MEMORY : r; -} - -static int -countbits(unsigned int bits) -{ - bits = (bits & 0x55555555) + ((bits >> 1) & 0x55555555); - bits = (bits & 0x33333333) + ((bits >> 2) & 0x33333333); - bits = (bits & 0x0f0f0f0f) + ((bits >> 4) & 0x0f0f0f0f); - bits = (bits & 0x00ff00ff) + ((bits >> 8) & 0x00ff00ff); - return (bits & 0x0000ffff) + ((bits >>16) & 0x0000ffff); -} - -static int -is_onechar_cclass(CClassNode* cc, OnigCodePoint* code) -{ - const OnigCodePoint not_found = ONIG_LAST_CODE_POINT; - OnigCodePoint c = not_found; - int i; - BBuf *bbuf = cc->mbuf; - - if (IS_NCCLASS_NOT(cc)) return 0; - - /* check bbuf */ - if (IS_NOT_NULL(bbuf)) { - OnigCodePoint n, *data; - GET_CODE_POINT(n, bbuf->p); - data = (OnigCodePoint* )(bbuf->p) + 1; - if ((n == 1) && (data[0] == data[1])) { - /* only one char found in the bbuf, save the code point. */ - c = data[0]; - if (((c < SINGLE_BYTE_SIZE) && BITSET_AT(cc->bs, c))) { - /* skip if c is included in the bitset */ - c = not_found; - } - } - else { - return 0; /* the bbuf contains multiple chars */ - } - } - - /* check bitset */ - for (i = 0; i < BITSET_SIZE; i++) { - Bits b1 = cc->bs[i]; - if (b1 != 0) { - if (((b1 & (b1 - 1)) == 0) && (c == not_found)) { - c = BITS_IN_ROOM * i + countbits(b1 - 1); - } else { - return 0; /* the character class contains multiple chars */ - } - } - } - - if (c != not_found) { - *code = c; - return 1; - } - - /* the character class contains no char. */ - return 0; -} - - -static int -parse_exp(Node** np, OnigToken* tok, int term, - UChar** src, UChar* end, ScanEnv* env) -{ - int r, len, group = 0; - Node* qn; - Node** targetp; - - *np = NULL; - if (tok->type == (enum TokenSyms )term) - goto end_of_token; - - switch (tok->type) { - case TK_ALT: - case TK_EOT: - end_of_token: - *np = node_new_empty(); - return tok->type; - break; - - case TK_SUBEXP_OPEN: - r = parse_enclose(np, tok, TK_SUBEXP_CLOSE, src, end, env); - if (r < 0) return r; - if (r == 1) group = 1; - else if (r == 2) { /* option only */ - Node* target; - OnigOptionType prev = env->option; - - env->option = NENCLOSE(*np)->option; - r = fetch_token(tok, src, end, env); - if (r < 0) { - env->option = prev; - return r; - } - r = parse_subexp(&target, tok, term, src, end, env); - env->option = prev; - if (r < 0) { - onig_node_free(target); - return r; - } - NENCLOSE(*np)->target = target; - return tok->type; - } - break; - - case TK_SUBEXP_CLOSE: - if (! IS_SYNTAX_BV(env->syntax, ONIG_SYN_ALLOW_UNMATCHED_CLOSE_SUBEXP)) - return ONIGERR_UNMATCHED_CLOSE_PARENTHESIS; - - if (tok->escaped) goto tk_raw_byte; - else goto tk_byte; - break; - - case TK_LINEBREAK: - r = node_linebreak(np, env); - if (r < 0) return r; - break; - - case TK_EXTENDED_GRAPHEME_CLUSTER: - r = node_extended_grapheme_cluster(np, env); - if (r < 0) return r; - break; - - case TK_KEEP: - *np = onig_node_new_anchor(ANCHOR_KEEP); - CHECK_NULL_RETURN_MEMERR(*np); - break; - - case TK_STRING: - tk_byte: - { - *np = node_new_str(tok->backp, *src); - CHECK_NULL_RETURN_MEMERR(*np); - - string_loop: - while (1) { - r = fetch_token(tok, src, end, env); - if (r < 0) return r; - if (r == TK_STRING) { - r = onig_node_str_cat(*np, tok->backp, *src); - } -#ifndef NUMBERED_CHAR_IS_NOT_CASE_AMBIG - else if (r == TK_CODE_POINT) { - r = node_str_cat_codepoint(*np, env->enc, tok->u.code); - } -#endif - else { - break; - } - if (r < 0) return r; - } - - string_end: - targetp = np; - goto repeat; - } - break; - - case TK_RAW_BYTE: - tk_raw_byte: - { - *np = node_new_str_raw_char((UChar )tok->u.c); - CHECK_NULL_RETURN_MEMERR(*np); - len = 1; - while (1) { - if (len >= ONIGENC_MBC_MINLEN(env->enc)) { - if (len == enclen(env->enc, NSTR(*np)->s, NSTR(*np)->end)) { - r = fetch_token(tok, src, end, env); - NSTRING_CLEAR_RAW(*np); - goto string_end; - } - } - - r = fetch_token(tok, src, end, env); - if (r < 0) return r; - if (r != TK_RAW_BYTE) { - /* Don't use this, it is wrong for little endian encodings. */ -#ifdef USE_PAD_TO_SHORT_BYTE_CHAR - int rem; - if (len < ONIGENC_MBC_MINLEN(env->enc)) { - rem = ONIGENC_MBC_MINLEN(env->enc) - len; - (void )node_str_head_pad(NSTR(*np), rem, (UChar )0); - if (len + rem == enclen(env->enc, NSTR(*np)->s)) { - NSTRING_CLEAR_RAW(*np); - goto string_end; - } - } -#endif - return ONIGERR_TOO_SHORT_MULTI_BYTE_STRING; - } - - r = node_str_cat_char(*np, (UChar )tok->u.c); - if (r < 0) return r; - - len++; - } - } - break; - - case TK_CODE_POINT: - { - *np = node_new_empty(); - CHECK_NULL_RETURN_MEMERR(*np); - r = node_str_cat_codepoint(*np, env->enc, tok->u.code); - if (r != 0) return r; -#ifdef NUMBERED_CHAR_IS_NOT_CASE_AMBIG - NSTRING_SET_RAW(*np); -#else - goto string_loop; -#endif - } - break; - - case TK_QUOTE_OPEN: - { - OnigCodePoint end_op[2]; - UChar *qstart, *qend, *nextp; - - end_op[0] = (OnigCodePoint )MC_ESC(env->syntax); - end_op[1] = (OnigCodePoint )'E'; - qstart = *src; - qend = find_str_position(end_op, 2, qstart, end, &nextp, env->enc); - if (IS_NULL(qend)) { - nextp = qend = end; - } - *np = node_new_str(qstart, qend); - CHECK_NULL_RETURN_MEMERR(*np); - *src = nextp; - } - break; - - case TK_CHAR_TYPE: - { - switch (tok->u.prop.ctype) { - case ONIGENC_CTYPE_WORD: - *np = node_new_ctype(tok->u.prop.ctype, tok->u.prop.not, - IS_ASCII_RANGE(env->option)); - CHECK_NULL_RETURN_MEMERR(*np); - break; - - case ONIGENC_CTYPE_SPACE: - case ONIGENC_CTYPE_DIGIT: - case ONIGENC_CTYPE_XDIGIT: - { - CClassNode* cc; - - *np = node_new_cclass(); - CHECK_NULL_RETURN_MEMERR(*np); - cc = NCCLASS(*np); - r = add_ctype_to_cc(cc, tok->u.prop.ctype, 0, - IS_ASCII_RANGE(env->option), env); - if (r != 0) return r; - if (tok->u.prop.not != 0) NCCLASS_SET_NOT(cc); - } - break; - - default: - return ONIGERR_PARSER_BUG; - break; - } - } - break; - - case TK_CHAR_PROPERTY: - r = parse_char_property(np, tok, src, end, env); - if (r != 0) return r; - break; - - case TK_CC_OPEN: - { - Node *asc_node; - CClassNode* cc; - OnigCodePoint code; - - r = parse_char_class(np, &asc_node, tok, src, end, env); - if (r != 0) { - onig_node_free(asc_node); - return r; - } - - cc = NCCLASS(*np); - if (is_onechar_cclass(cc, &code)) { - onig_node_free(*np); - onig_node_free(asc_node); - *np = node_new_empty(); - CHECK_NULL_RETURN_MEMERR(*np); - r = node_str_cat_codepoint(*np, env->enc, code); - if (r != 0) return r; - goto string_loop; - } - if (IS_IGNORECASE(env->option)) { - r = cclass_case_fold(np, cc, NCCLASS(asc_node), env); - if (r != 0) { - onig_node_free(asc_node); - return r; - } - } - onig_node_free(asc_node); - } - break; - - case TK_ANYCHAR: - *np = node_new_anychar(); - CHECK_NULL_RETURN_MEMERR(*np); - break; - - case TK_ANYCHAR_ANYTIME: - *np = node_new_anychar(); - CHECK_NULL_RETURN_MEMERR(*np); - qn = node_new_quantifier(0, REPEAT_INFINITE, 0); - CHECK_NULL_RETURN_MEMERR(qn); - NQTFR(qn)->target = *np; - *np = qn; - break; - - case TK_BACKREF: - len = tok->u.backref.num; - *np = node_new_backref(len, - (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, -#endif - env); - CHECK_NULL_RETURN_MEMERR(*np); - break; - -#ifdef USE_SUBEXP_CALL - case TK_CALL: - { - int gnum = tok->u.call.gnum; - - if (gnum < 0 || tok->u.call.rel != 0) { - if (gnum > 0) gnum--; - gnum = BACKREF_REL_TO_ABS(gnum, env); - if (gnum <= 0) - return ONIGERR_INVALID_BACKREF; - } - *np = node_new_call(tok->u.call.name, tok->u.call.name_end, gnum); - CHECK_NULL_RETURN_MEMERR(*np); - env->num_call++; - } - break; -#endif - - case TK_ANCHOR: - *np = onig_node_new_anchor(tok->u.anchor.subtype); - CHECK_NULL_RETURN_MEMERR(*np); - NANCHOR(*np)->ascii_range = tok->u.anchor.ascii_range; - break; - - case TK_OP_REPEAT: - case TK_INTERVAL: - if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_CONTEXT_INDEP_REPEAT_OPS)) { - if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_CONTEXT_INVALID_REPEAT_OPS)) - return ONIGERR_TARGET_OF_REPEAT_OPERATOR_NOT_SPECIFIED; - else - *np = node_new_empty(); - } - else { - goto tk_byte; - } - break; - - default: - return ONIGERR_PARSER_BUG; - break; - } - - { - targetp = np; - - re_entry: - r = fetch_token(tok, src, end, env); - if (r < 0) return r; - - repeat: - if (r == TK_OP_REPEAT || r == TK_INTERVAL) { - if (is_invalid_quantifier_target(*targetp)) - return ONIGERR_TARGET_OF_REPEAT_OPERATOR_INVALID; - - qn = node_new_quantifier(tok->u.repeat.lower, tok->u.repeat.upper, - (r == TK_INTERVAL ? 1 : 0)); - CHECK_NULL_RETURN_MEMERR(qn); - NQTFR(qn)->greedy = tok->u.repeat.greedy; - r = set_quantifier(qn, *targetp, group, env); - if (r < 0) { - onig_node_free(qn); - return r; - } - - if (tok->u.repeat.possessive != 0) { - Node* en; - en = node_new_enclose(ENCLOSE_STOP_BACKTRACK); - if (IS_NULL(en)) { - onig_node_free(qn); - return ONIGERR_MEMORY; - } - NENCLOSE(en)->target = qn; - qn = en; - } - - if (r == 0) { - *targetp = qn; - } - else if (r == 1) { - onig_node_free(qn); - } - else if (r == 2) { /* split case: /abc+/ */ - Node *tmp; - - *targetp = node_new_list(*targetp, NULL); - if (IS_NULL(*targetp)) { - onig_node_free(qn); - return ONIGERR_MEMORY; - } - tmp = NCDR(*targetp) = node_new_list(qn, NULL); - if (IS_NULL(tmp)) { - onig_node_free(qn); - return ONIGERR_MEMORY; - } - targetp = &(NCAR(tmp)); - } - goto re_entry; - } - } - - return r; -} - -static int -parse_branch(Node** top, OnigToken* tok, int term, - UChar** src, UChar* end, ScanEnv* env) -{ - int r; - Node *node, **headp; - - *top = NULL; - r = parse_exp(&node, tok, term, src, end, env); - if (r < 0) { - onig_node_free(node); - return r; - } - - if (r == TK_EOT || r == term || r == TK_ALT) { - *top = node; - } - else { - *top = node_new_list(node, NULL); - headp = &(NCDR(*top)); - while (r != TK_EOT && r != term && r != TK_ALT) { - r = parse_exp(&node, tok, term, src, end, env); - if (r < 0) { - onig_node_free(node); - return r; - } - - if (NTYPE(node) == NT_LIST) { - *headp = node; - while (IS_NOT_NULL(NCDR(node))) node = NCDR(node); - headp = &(NCDR(node)); - } - else { - *headp = node_new_list(node, NULL); - headp = &(NCDR(*headp)); - } - } - } - - return r; -} - -/* term_tok: TK_EOT or TK_SUBEXP_CLOSE */ -static int -parse_subexp(Node** top, OnigToken* tok, int term, - UChar** src, UChar* end, ScanEnv* env) -{ - int r; - Node *node, **headp; - - *top = NULL; - env->parse_depth++; - if (env->parse_depth > ParseDepthLimit) - return ONIGERR_PARSE_DEPTH_LIMIT_OVER; - r = parse_branch(&node, tok, term, src, end, env); - if (r < 0) { - onig_node_free(node); - return r; - } - - if (r == term) { - *top = node; - } - else if (r == TK_ALT) { - *top = onig_node_new_alt(node, NULL); - headp = &(NCDR(*top)); - while (r == TK_ALT) { - r = fetch_token(tok, src, end, env); - if (r < 0) return r; - r = parse_branch(&node, tok, term, src, end, env); - if (r < 0) { - onig_node_free(node); - return r; - } - - *headp = onig_node_new_alt(node, NULL); - headp = &(NCDR(*headp)); - } - - if (tok->type != (enum TokenSyms )term) - goto err; - } - else { - onig_node_free(node); - err: - if (term == TK_SUBEXP_CLOSE) - return ONIGERR_END_PATTERN_WITH_UNMATCHED_PARENTHESIS; - else - return ONIGERR_PARSER_BUG; - } - - env->parse_depth--; - return r; -} - -static int -parse_regexp(Node** top, UChar** src, UChar* end, ScanEnv* env) -{ - int r; - OnigToken tok; - - r = fetch_token(&tok, src, end, env); - if (r < 0) return r; - r = parse_subexp(top, &tok, TK_EOT, src, end, env); - if (r < 0) return r; - -#ifdef USE_SUBEXP_CALL - if (env->num_call > 0) { - /* Capture the pattern itself. It is used for (?R), (?0) and \g<0>. */ - const int num = 0; - Node* np; - np = node_new_enclose_memory(env->option, 0); - CHECK_NULL_RETURN_MEMERR(np); - NENCLOSE(np)->regnum = num; - NENCLOSE(np)->target = *top; - r = scan_env_set_mem_node(env, num, np); - if (r != 0) { - onig_node_free(np); - return r; - } - *top = np; - } -#endif - return 0; -} - -extern int -onig_parse_make_tree(Node** root, const UChar* pattern, const UChar* end, - regex_t* reg, ScanEnv* env) -{ - int r; - UChar* p; - -#ifdef USE_NAMED_GROUP - names_clear(reg); -#endif - - scan_env_clear(env); - env->option = reg->options; - env->case_fold_flag = reg->case_fold_flag; - env->enc = reg->enc; - env->syntax = reg->syntax; - env->pattern = (UChar* )pattern; - env->pattern_end = (UChar* )end; - env->reg = reg; - - *root = NULL; - p = (UChar* )pattern; - r = parse_regexp(root, &p, (UChar* )end, env); - reg->num_mem = env->num_mem; - return r; -} - -extern void -onig_scan_env_set_error_string(ScanEnv* env, int ecode ARG_UNUSED, - UChar* arg, UChar* arg_end) -{ - env->error = arg; - env->error_end = arg_end; -} diff --git a/vendor/onig/regparse.h b/vendor/onig/regparse.h deleted file mode 100644 index 888ebf4..0000000 --- a/vendor/onig/regparse.h +++ /dev/null @@ -1,370 +0,0 @@ -#ifndef ONIGMO_REGPARSE_H -#define ONIGMO_REGPARSE_H -/********************************************************************** - regparse.h - Onigmo (Oniguruma-mod) (regular expression library) -**********************************************************************/ -/*- - * Copyright (c) 2002-2007 K.Kosako - * Copyright (c) 2011-2016 K.Takata - * 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. - */ - -#include "regint.h" - -RUBY_SYMBOL_EXPORT_BEGIN - -/* node type */ -#define NT_STR 0 -#define NT_CCLASS 1 -#define NT_CTYPE 2 -#define NT_CANY 3 -#define NT_BREF 4 -#define NT_QTFR 5 -#define NT_ENCLOSE 6 -#define NT_ANCHOR 7 -#define NT_LIST 8 -#define NT_ALT 9 -#define NT_CALL 10 - -/* node type bit */ -#define NTYPE2BIT(type) (1<<(type)) - -#define BIT_NT_STR NTYPE2BIT(NT_STR) -#define BIT_NT_CCLASS NTYPE2BIT(NT_CCLASS) -#define BIT_NT_CTYPE NTYPE2BIT(NT_CTYPE) -#define BIT_NT_CANY NTYPE2BIT(NT_CANY) -#define BIT_NT_BREF NTYPE2BIT(NT_BREF) -#define BIT_NT_QTFR NTYPE2BIT(NT_QTFR) -#define BIT_NT_ENCLOSE NTYPE2BIT(NT_ENCLOSE) -#define BIT_NT_ANCHOR NTYPE2BIT(NT_ANCHOR) -#define BIT_NT_LIST NTYPE2BIT(NT_LIST) -#define BIT_NT_ALT NTYPE2BIT(NT_ALT) -#define BIT_NT_CALL NTYPE2BIT(NT_CALL) - -#define IS_NODE_TYPE_SIMPLE(type) \ - ((NTYPE2BIT(type) & (BIT_NT_STR | BIT_NT_CCLASS | BIT_NT_CTYPE |\ - BIT_NT_CANY | BIT_NT_BREF)) != 0) - -#define NTYPE(node) ((node)->u.base.type) -#define SET_NTYPE(node, ntype) \ - do { \ - int value = ntype; \ - memcpy(&((node)->u.base.type), &value, sizeof(int)); \ - } while (0) - -#define NSTR(node) (&((node)->u.str)) -#define NCCLASS(node) (&((node)->u.cclass)) -#define NCTYPE(node) (&((node)->u.ctype)) -#define NBREF(node) (&((node)->u.bref)) -#define NQTFR(node) (&((node)->u.qtfr)) -#define NENCLOSE(node) (&((node)->u.enclose)) -#define NANCHOR(node) (&((node)->u.anchor)) -#define NCONS(node) (&((node)->u.cons)) -#define NCALL(node) (&((node)->u.call)) - -#define NCAR(node) (NCONS(node)->car) -#define NCDR(node) (NCONS(node)->cdr) - - - -#define ANCHOR_ANYCHAR_STAR_MASK (ANCHOR_ANYCHAR_STAR | ANCHOR_ANYCHAR_STAR_ML) -#define ANCHOR_END_BUF_MASK (ANCHOR_END_BUF | ANCHOR_SEMI_END_BUF) - -#define ENCLOSE_MEMORY (1<<0) -#define ENCLOSE_OPTION (1<<1) -#define ENCLOSE_STOP_BACKTRACK (1<<2) -#define ENCLOSE_CONDITION (1<<3) -#define ENCLOSE_ABSENT (1<<4) - -#define NODE_STR_MARGIN 16 -#define NODE_STR_BUF_SIZE 24 /* sizeof(CClassNode) - sizeof(int)*4 */ -#define NODE_BACKREFS_SIZE 6 - -#define NSTR_RAW (1<<0) /* by backslashed number */ -#define NSTR_AMBIG (1<<1) -#define NSTR_DONT_GET_OPT_INFO (1<<2) - -#define NSTRING_LEN(node) (OnigDistance )((node)->u.str.end - (node)->u.str.s) -#define NSTRING_SET_RAW(node) (node)->u.str.flag |= NSTR_RAW -#define NSTRING_CLEAR_RAW(node) (node)->u.str.flag &= ~NSTR_RAW -#define NSTRING_SET_AMBIG(node) (node)->u.str.flag |= NSTR_AMBIG -#define NSTRING_SET_DONT_GET_OPT_INFO(node) \ - (node)->u.str.flag |= NSTR_DONT_GET_OPT_INFO -#define NSTRING_IS_RAW(node) (((node)->u.str.flag & NSTR_RAW) != 0) -#define NSTRING_IS_AMBIG(node) (((node)->u.str.flag & NSTR_AMBIG) != 0) -#define NSTRING_IS_DONT_GET_OPT_INFO(node) \ - (((node)->u.str.flag & NSTR_DONT_GET_OPT_INFO) != 0) - -#define BACKREFS_P(br) \ - (IS_NOT_NULL((br)->back_dynamic) ? (br)->back_dynamic : (br)->back_static); - -#define NQ_TARGET_ISNOT_EMPTY 0 -#define NQ_TARGET_IS_EMPTY 1 -#define NQ_TARGET_IS_EMPTY_MEM 2 -#define NQ_TARGET_IS_EMPTY_REC 3 - -/* status bits */ -#define NST_MIN_FIXED (1<<0) -#define NST_MAX_FIXED (1<<1) -#define NST_CLEN_FIXED (1<<2) -#define NST_MARK1 (1<<3) -#define NST_MARK2 (1<<4) -#define NST_MEM_BACKREFED (1<<5) -#define NST_STOP_BT_SIMPLE_REPEAT (1<<6) -#define NST_RECURSION (1<<7) -#define NST_CALLED (1<<8) -#define NST_ADDR_FIXED (1<<9) -#define NST_NAMED_GROUP (1<<10) -#define NST_NAME_REF (1<<11) -#define NST_IN_REPEAT (1<<12) /* STK_REPEAT is nested in stack. */ -#define NST_NEST_LEVEL (1<<13) -#define NST_BY_NUMBER (1<<14) /* {n,m} */ - -#define SET_ENCLOSE_STATUS(node,f) (node)->u.enclose.state |= (f) -#define CLEAR_ENCLOSE_STATUS(node,f) (node)->u.enclose.state &= ~(f) - -#define IS_ENCLOSE_CALLED(en) (((en)->state & NST_CALLED) != 0) -#define IS_ENCLOSE_ADDR_FIXED(en) (((en)->state & NST_ADDR_FIXED) != 0) -#define IS_ENCLOSE_RECURSION(en) (((en)->state & NST_RECURSION) != 0) -#define IS_ENCLOSE_MARK1(en) (((en)->state & NST_MARK1) != 0) -#define IS_ENCLOSE_MARK2(en) (((en)->state & NST_MARK2) != 0) -#define IS_ENCLOSE_MIN_FIXED(en) (((en)->state & NST_MIN_FIXED) != 0) -#define IS_ENCLOSE_MAX_FIXED(en) (((en)->state & NST_MAX_FIXED) != 0) -#define IS_ENCLOSE_CLEN_FIXED(en) (((en)->state & NST_CLEN_FIXED) != 0) -#define IS_ENCLOSE_STOP_BT_SIMPLE_REPEAT(en) \ - (((en)->state & NST_STOP_BT_SIMPLE_REPEAT) != 0) -#define IS_ENCLOSE_NAMED_GROUP(en) (((en)->state & NST_NAMED_GROUP) != 0) -#define IS_ENCLOSE_NAME_REF(en) (((en)->state & NST_NAME_REF) != 0) - -#define SET_CALL_RECURSION(node) (node)->u.call.state |= NST_RECURSION -#define IS_CALL_RECURSION(cn) (((cn)->state & NST_RECURSION) != 0) -#define IS_CALL_NAME_REF(cn) (((cn)->state & NST_NAME_REF) != 0) -#define IS_BACKREF_NAME_REF(bn) (((bn)->state & NST_NAME_REF) != 0) -#define IS_BACKREF_NEST_LEVEL(bn) (((bn)->state & NST_NEST_LEVEL) != 0) -#define IS_QUANTIFIER_IN_REPEAT(qn) (((qn)->state & NST_IN_REPEAT) != 0) -#define IS_QUANTIFIER_BY_NUMBER(qn) (((qn)->state & NST_BY_NUMBER) != 0) - -#define CALLNODE_REFNUM_UNDEF -1 - -typedef struct { - NodeBase base; - UChar* s; - UChar* end; - unsigned int flag; - int capa; /* (allocated size - 1) or 0: use buf[] */ - UChar buf[NODE_STR_BUF_SIZE]; -} StrNode; - -typedef struct { - NodeBase base; - int state; - struct _Node* target; - int lower; - int upper; - int greedy; - int target_empty_info; - struct _Node* head_exact; - struct _Node* next_head_exact; - int is_refered; /* include called node. don't eliminate even if {0} */ -#ifdef USE_COMBINATION_EXPLOSION_CHECK - int comb_exp_check_num; /* 1,2,3...: check, 0: no check */ -#endif -} QtfrNode; - -typedef struct { - NodeBase base; - int state; - int type; - int regnum; - OnigOptionType option; - AbsAddrType call_addr; - struct _Node* target; - /* for multiple call reference */ - OnigDistance min_len; /* min length (byte) */ - OnigDistance max_len; /* max length (byte) */ - int char_len; /* character length */ - int opt_count; /* referenced count in optimize_node_left() */ -} EncloseNode; - -#ifdef USE_SUBEXP_CALL - -typedef struct { - int offset; - struct _Node* target; -} UnsetAddr; - -typedef struct { - int num; - int alloc; - UnsetAddr* us; -} UnsetAddrList; - -typedef struct { - NodeBase base; - int state; - int group_num; - UChar* name; - UChar* name_end; - struct _Node* target; /* EncloseNode : ENCLOSE_MEMORY */ - UnsetAddrList* unset_addr_list; -} CallNode; - -#endif - -typedef struct { - NodeBase base; - int state; - int back_num; - int back_static[NODE_BACKREFS_SIZE]; - int* back_dynamic; - int nest_level; -} BRefNode; - -typedef struct { - NodeBase base; - int type; - struct _Node* target; - int char_len; - int ascii_range; -} AnchorNode; - -typedef struct { - NodeBase base; - struct _Node* car; - struct _Node* cdr; -} ConsAltNode; - -typedef struct { - NodeBase base; - int ctype; - int not; - int ascii_range; -} CtypeNode; - -typedef struct _Node { - union { - NodeBase base; - StrNode str; - CClassNode cclass; - QtfrNode qtfr; - EncloseNode enclose; - BRefNode bref; - AnchorNode anchor; - ConsAltNode cons; - CtypeNode ctype; -#ifdef USE_SUBEXP_CALL - CallNode call; -#endif - } u; -} Node; - - -#define NULL_NODE ((Node* )0) - -#define SCANENV_MEMNODES_SIZE 8 -#define SCANENV_MEM_NODES(senv) \ - (IS_NOT_NULL((senv)->mem_nodes_dynamic) ? \ - (senv)->mem_nodes_dynamic : (senv)->mem_nodes_static) - -typedef struct { - OnigOptionType option; - OnigCaseFoldType case_fold_flag; - OnigEncoding enc; - const OnigSyntaxType* syntax; - BitStatusType capture_history; - BitStatusType bt_mem_start; - BitStatusType bt_mem_end; - BitStatusType backrefed_mem; - UChar* pattern; - UChar* pattern_end; - UChar* error; - UChar* error_end; - regex_t* reg; /* for reg->names only */ -#ifdef USE_SUBEXP_CALL - UnsetAddrList* unset_addr_list; -#endif - int num_call; - int num_mem; -#ifdef USE_NAMED_GROUP - int num_named; -#endif - int mem_alloc; - Node* mem_nodes_static[SCANENV_MEMNODES_SIZE]; - Node** mem_nodes_dynamic; -#ifdef USE_COMBINATION_EXPLOSION_CHECK - int num_comb_exp_check; - int comb_exp_max_regnum; - int curr_max_regnum; - int has_recursion; -#endif - unsigned int parse_depth; - int warnings_flag; -#ifdef RUBY - const char* sourcefile; - int sourceline; -#endif -} ScanEnv; - - -#define IS_SYNTAX_OP(syn, opm) (((syn)->op & (opm)) != 0) -#define IS_SYNTAX_OP2(syn, opm) (((syn)->op2 & (opm)) != 0) -#define IS_SYNTAX_BV(syn, bvm) (((syn)->behavior & (bvm)) != 0) - -#ifdef USE_NAMED_GROUP -typedef struct { - int new_val; -} GroupNumRemap; - -extern int onig_renumber_name_table(regex_t* reg, GroupNumRemap* map); -#endif - -extern int onig_strncmp(const UChar* s1, const UChar* s2, int n); -extern void onig_strcpy(UChar* dest, const UChar* src, const UChar* end); -extern void onig_scan_env_set_error_string(ScanEnv* env, int ecode, UChar* arg, UChar* arg_end); -extern int onig_scan_unsigned_number(UChar** src, const UChar* end, OnigEncoding enc); -extern void onig_reduce_nested_quantifier(Node* pnode, Node* cnode); -extern void onig_node_conv_to_str_node(Node* node, int raw); -extern int onig_node_str_cat(Node* node, const UChar* s, const UChar* end); -extern int onig_node_str_set(Node* node, const UChar* s, const UChar* end); -extern void onig_node_free(Node* node); -extern Node* onig_node_new_enclose(int type); -extern Node* onig_node_new_anchor(int type); -extern Node* onig_node_new_str(const UChar* s, const UChar* end); -extern Node* onig_node_new_list(Node* left, Node* right); -extern Node* onig_node_list_add(Node* list, Node* x); -extern Node* onig_node_new_alt(Node* left, Node* right); -extern void onig_node_str_clear(Node* node); -extern int onig_names_free(regex_t* reg); -extern int onig_parse_make_tree(Node** root, const UChar* pattern, const UChar* end, regex_t* reg, ScanEnv* env); -extern int onig_free_shared_cclass_table(void); - -#ifdef ONIG_DEBUG -# ifdef USE_NAMED_GROUP -extern int onig_print_names(FILE*, regex_t*); -# endif -#endif - -RUBY_SYMBOL_EXPORT_END - -#endif /* ONIGMO_REGPARSE_H */ diff --git a/vendor/onig/sample/Makefile.am b/vendor/onig/sample/Makefile.am deleted file mode 100644 index 6bca32a..0000000 --- a/vendor/onig/sample/Makefile.am +++ /dev/null @@ -1,29 +0,0 @@ -noinst_PROGRAMS = encode listcap names posix simple sql syntax scan crnl - -libname = $(top_builddir)/libonigmo.la -LDADD = $(libname) -INCLUDES = -I$(top_srcdir) -I$(includedir) - -encode_SOURCES = encode.c -listcap_SOURCES = listcap.c -names_SOURCES = names.c -posix_SOURCES = posix.c -simple_SOURCES = simple.c -sql_SOURCES = sql.c -syntax_SOURCES = syntax.c -scan_SOURCES = scan.c -crnl_SOURCES = crnl.c - - -sampledir = $(top_builddir)/sample - -test: encode$(EXEEXT) listcap$(EXEEXT) names$(EXEEXT) posix$(EXEEXT) simple$(EXEEXT) sql$(EXEEXT) syntax$(EXEEXT) scan$(EXEEXT) crnl$(EXEEXT) - $(sampledir)/encode - $(sampledir)/listcap - $(sampledir)/names - $(sampledir)/posix - $(sampledir)/simple - $(sampledir)/sql - $(sampledir)/syntax - $(sampledir)/scan - $(sampledir)/crnl diff --git a/vendor/onig/sample/Makefile.in b/vendor/onig/sample/Makefile.in deleted file mode 100644 index ecb77e0..0000000 --- a/vendor/onig/sample/Makefile.in +++ /dev/null @@ -1,596 +0,0 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ - esac; \ - test $$am__dry = yes; \ - } -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -noinst_PROGRAMS = encode$(EXEEXT) listcap$(EXEEXT) names$(EXEEXT) \ - posix$(EXEEXT) simple$(EXEEXT) sql$(EXEEXT) syntax$(EXEEXT) \ - scan$(EXEEXT) crnl$(EXEEXT) -subdir = sample -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -PROGRAMS = $(noinst_PROGRAMS) -am_crnl_OBJECTS = crnl.$(OBJEXT) -crnl_OBJECTS = $(am_crnl_OBJECTS) -crnl_LDADD = $(LDADD) -crnl_DEPENDENCIES = $(libname) -am_encode_OBJECTS = encode.$(OBJEXT) -encode_OBJECTS = $(am_encode_OBJECTS) -encode_LDADD = $(LDADD) -encode_DEPENDENCIES = $(libname) -am_listcap_OBJECTS = listcap.$(OBJEXT) -listcap_OBJECTS = $(am_listcap_OBJECTS) -listcap_LDADD = $(LDADD) -listcap_DEPENDENCIES = $(libname) -am_names_OBJECTS = names.$(OBJEXT) -names_OBJECTS = $(am_names_OBJECTS) -names_LDADD = $(LDADD) -names_DEPENDENCIES = $(libname) -am_posix_OBJECTS = posix.$(OBJEXT) -posix_OBJECTS = $(am_posix_OBJECTS) -posix_LDADD = $(LDADD) -posix_DEPENDENCIES = $(libname) -am_scan_OBJECTS = scan.$(OBJEXT) -scan_OBJECTS = $(am_scan_OBJECTS) -scan_LDADD = $(LDADD) -scan_DEPENDENCIES = $(libname) -am_simple_OBJECTS = simple.$(OBJEXT) -simple_OBJECTS = $(am_simple_OBJECTS) -simple_LDADD = $(LDADD) -simple_DEPENDENCIES = $(libname) -am_sql_OBJECTS = sql.$(OBJEXT) -sql_OBJECTS = $(am_sql_OBJECTS) -sql_LDADD = $(LDADD) -sql_DEPENDENCIES = $(libname) -am_syntax_OBJECTS = syntax.$(OBJEXT) -syntax_OBJECTS = $(am_syntax_OBJECTS) -syntax_LDADD = $(LDADD) -syntax_DEPENDENCIES = $(libname) -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ -SOURCES = $(crnl_SOURCES) $(encode_SOURCES) $(listcap_SOURCES) \ - $(names_SOURCES) $(posix_SOURCES) $(scan_SOURCES) \ - $(simple_SOURCES) $(sql_SOURCES) $(syntax_SOURCES) -DIST_SOURCES = $(crnl_SOURCES) $(encode_SOURCES) $(listcap_SOURCES) \ - $(names_SOURCES) $(posix_SOURCES) $(scan_SOURCES) \ - $(simple_SOURCES) $(sql_SOURCES) $(syntax_SOURCES) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -ALLOCA = @ALLOCA@ -AMTAR = @AMTAR@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -LTVERSION = @LTVERSION@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -RANLIB = @RANLIB@ -RUBYDIR = @RUBYDIR@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STATISTICS = @STATISTICS@ -STRIP = @STRIP@ -VERSION = @VERSION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -python_prog = @python_prog@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -libname = $(top_builddir)/libonigmo.la -LDADD = $(libname) -INCLUDES = -I$(top_srcdir) -I$(includedir) -encode_SOURCES = encode.c -listcap_SOURCES = listcap.c -names_SOURCES = names.c -posix_SOURCES = posix.c -simple_SOURCES = simple.c -sql_SOURCES = sql.c -syntax_SOURCES = syntax.c -scan_SOURCES = scan.c -crnl_SOURCES = crnl.c -sampledir = $(top_builddir)/sample -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .lo .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign sample/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign sample/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -clean-noinstPROGRAMS: - @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ - echo " rm -f" $$list; \ - rm -f $$list || exit $$?; \ - test -n "$(EXEEXT)" || exit 0; \ - list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f" $$list; \ - rm -f $$list -crnl$(EXEEXT): $(crnl_OBJECTS) $(crnl_DEPENDENCIES) $(EXTRA_crnl_DEPENDENCIES) - @rm -f crnl$(EXEEXT) - $(LINK) $(crnl_OBJECTS) $(crnl_LDADD) $(LIBS) -encode$(EXEEXT): $(encode_OBJECTS) $(encode_DEPENDENCIES) $(EXTRA_encode_DEPENDENCIES) - @rm -f encode$(EXEEXT) - $(LINK) $(encode_OBJECTS) $(encode_LDADD) $(LIBS) -listcap$(EXEEXT): $(listcap_OBJECTS) $(listcap_DEPENDENCIES) $(EXTRA_listcap_DEPENDENCIES) - @rm -f listcap$(EXEEXT) - $(LINK) $(listcap_OBJECTS) $(listcap_LDADD) $(LIBS) -names$(EXEEXT): $(names_OBJECTS) $(names_DEPENDENCIES) $(EXTRA_names_DEPENDENCIES) - @rm -f names$(EXEEXT) - $(LINK) $(names_OBJECTS) $(names_LDADD) $(LIBS) -posix$(EXEEXT): $(posix_OBJECTS) $(posix_DEPENDENCIES) $(EXTRA_posix_DEPENDENCIES) - @rm -f posix$(EXEEXT) - $(LINK) $(posix_OBJECTS) $(posix_LDADD) $(LIBS) -scan$(EXEEXT): $(scan_OBJECTS) $(scan_DEPENDENCIES) $(EXTRA_scan_DEPENDENCIES) - @rm -f scan$(EXEEXT) - $(LINK) $(scan_OBJECTS) $(scan_LDADD) $(LIBS) -simple$(EXEEXT): $(simple_OBJECTS) $(simple_DEPENDENCIES) $(EXTRA_simple_DEPENDENCIES) - @rm -f simple$(EXEEXT) - $(LINK) $(simple_OBJECTS) $(simple_LDADD) $(LIBS) -sql$(EXEEXT): $(sql_OBJECTS) $(sql_DEPENDENCIES) $(EXTRA_sql_DEPENDENCIES) - @rm -f sql$(EXEEXT) - $(LINK) $(sql_OBJECTS) $(sql_LDADD) $(LIBS) -syntax$(EXEEXT): $(syntax_OBJECTS) $(syntax_DEPENDENCIES) $(EXTRA_syntax_DEPENDENCIES) - @rm -f syntax$(EXEEXT) - $(LINK) $(syntax_OBJECTS) $(syntax_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/crnl.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/encode.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/listcap.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/names.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/posix.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scan.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/simple.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sql.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/syntax.Po@am__quote@ - -.c.o: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< - -.c.obj: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` - -.c.lo: -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(PROGRAMS) -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \ - mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-noinstPROGRAMS ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ - pdf pdf-am ps ps-am tags uninstall uninstall-am - - -test: encode$(EXEEXT) listcap$(EXEEXT) names$(EXEEXT) posix$(EXEEXT) simple$(EXEEXT) sql$(EXEEXT) syntax$(EXEEXT) scan$(EXEEXT) crnl$(EXEEXT) - $(sampledir)/encode - $(sampledir)/listcap - $(sampledir)/names - $(sampledir)/posix - $(sampledir)/simple - $(sampledir)/sql - $(sampledir)/syntax - $(sampledir)/scan - $(sampledir)/crnl - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/vendor/onig/sample/crnl.c b/vendor/onig/sample/crnl.c deleted file mode 100644 index 0365a59..0000000 --- a/vendor/onig/sample/crnl.c +++ /dev/null @@ -1,222 +0,0 @@ -/* - * crnl.c 2007/05/30 K.Kosako - * - * !!! You should enable USE_CRNL_AS_LINE_TERMINATOR. !!! - * - * USE_CRNL_AS_LINE_TERMINATOR config test program. - */ -#include -#include -#include "onigmo.h" - -/* #define USE_UNICODE_ALL_LINE_TERMINATORS */ - -static int nfail = 0; - -static void result(int no, int from, int to, - int expected_from, int expected_to) -{ - fprintf(stderr, "%3d: ", no); - if (from == expected_from && to == expected_to) { - fprintf(stderr, "Success\n"); - } - else { - fprintf(stderr, "Fail: expected: (%d-%d), result: (%d-%d)\n", - expected_from, expected_to, from, to); - - nfail++; - } -} - -static int -x0(int no, char* pattern_arg, char* str_arg, - int start_offset, int expected_from, int expected_to, int backward) -{ - int r; - unsigned char *start, *range, *end; - regex_t* reg; - OnigErrorInfo einfo; - OnigRegion *region; - UChar *pattern, *str; - - pattern = (UChar* )pattern_arg; - str = (UChar* )str_arg; - - r = onig_new(®, pattern, pattern + strlen((char* )pattern), - ONIG_OPTION_NEWLINE_CRLF, ONIG_ENCODING_UTF8, ONIG_SYNTAX_DEFAULT, &einfo); - if (r != ONIG_NORMAL) { - OnigUChar s[ONIG_MAX_ERROR_MESSAGE_LEN]; - onig_error_code_to_str(s, r, &einfo); - fprintf(stderr, "ERROR: %s\n", s); - return -1; - } - - region = onig_region_new(); - - end = str + strlen((char* )str); - if (backward) { - start = end + start_offset; - range = str; - } - else { - start = str + start_offset; - range = end; - } - r = onig_search(reg, str, end, start, range, region, ONIG_OPTION_NONE); - if (r >= 0) { - result(no, region->beg[0], region->end[0], expected_from, expected_to); - } - else if (r == ONIG_MISMATCH) { - result(no, r, -1, expected_from, expected_to); - } - else { /* error */ - OnigUChar s[ONIG_MAX_ERROR_MESSAGE_LEN]; - onig_error_code_to_str(s, r); - fprintf(stderr, "ERROR: %s\n", s); - return -1; - } - - onig_region_free(region, 1 /* 1:free self, 0:free contents only */); - onig_free(reg); - return 0; -} - -static int -x(int no, char* pattern_arg, char* str_arg, - int expected_from, int expected_to) -{ - return x0(no, pattern_arg, str_arg, 0, expected_from, expected_to, 0); -} - -static int -f0(int no, char* pattern_arg, char* str_arg, int start_offset, int backward) -{ - return x0(no, pattern_arg, str_arg, start_offset, -1, -1, backward); -} - -static int -f(int no, char* pattern_arg, char* str_arg) -{ - return x(no, pattern_arg, str_arg, -1, -1); -} - -extern int main(int argc, char* argv[]) -{ - x( 1, "", "\r\n", 0, 0); -/* x( 2, ".", "\r\n", 0, 1); */ - f( 2, ".", "\r\n"); - f( 3, "..", "\r\n"); - x( 4, "^", "\r\n", 0, 0); - x( 5, "\\n^", "\r\nf", 1, 2); - x( 6, "\\n^a", "\r\na", 1, 3); - x( 7, "$", "\r\n", 0, 0); - x( 8, "T$", "T\r\n", 0, 1); -#ifdef USE_UNICODE_ALL_LINE_TERMINATORS - x( 9, "T$", "T\raT\r\n", 0, 1); -#else - x( 9, "T$", "T\raT\r\n", 3, 4); -#endif - x(10, "\\z", "\r\n", 2, 2); - f(11, "a\\z", "a\r\n"); - x(12, "\\Z", "\r\n", 0, 0); - x(13, "\\Z", "\r\na", 3, 3); - x(14, "\\Z", "\r\n\r\n\n", 4, 4); - x(15, "\\Z", "\r\n\r\nX", 5, 5); - x(16, "a\\Z", "a\r\n", 0, 1); - x(17, "aaaaaaaaaaaaaaa\\Z", "aaaaaaaaaaaaaaa\r\n", 0, 15); - x(18, "a|$", "b\r\n", 1, 1); -#ifdef USE_UNICODE_ALL_LINE_TERMINATORS - x(19, "$|b", "\rb", 0, 0); -#else - x(19, "$|b", "\rb", 1, 2); -#endif - x(20, "a$|ab$", "\r\nab\r\n", 2, 4); - - x(21, "a|\\Z", "b\r\n", 1, 1); -#ifdef USE_UNICODE_ALL_LINE_TERMINATORS - x(22, "\\Z|b", "\rb", 0, 0); -#else - x(22, "\\Z|b", "\rb", 1, 2); -#endif - x(23, "a\\Z|ab\\Z", "\r\nab\r\n", 2, 4); - x(24, "(?=a$).", "a\r\n", 0, 1); -#ifdef USE_UNICODE_ALL_LINE_TERMINATORS - x(25, "(?=a$).", "a\r", 0, 1); - f(26, "(?!a$)..", "a\r"); -#else - f(25, "(?=a$).", "a\r"); - x(26, "(?!a$)..", "a\r", 0, 2); -#endif -/* x(27, "(?<=a$).\\n", "a\r\n", 1, 3); */ - x(27, "(?<=a$)\\r\\n", "a\r\n", 1, 3); -/* f(28, "(? 0) { - fprintf(stderr, "\n"); - fprintf(stderr, "!!! You have to enable USE_CRNL_AS_LINE_TERMINATOR\n"); - fprintf(stderr, "!!! in regenc.h for this test program.\n"); - fprintf(stderr, "\n"); - } - - return nfail; -} diff --git a/vendor/onig/sample/encode.c b/vendor/onig/sample/encode.c deleted file mode 100644 index c0e814d..0000000 --- a/vendor/onig/sample/encode.c +++ /dev/null @@ -1,325 +0,0 @@ -/* - * encode.c - */ -#include -#include "onigmo.h" - -static int -search(regex_t* reg, unsigned char* str, unsigned char* end) -{ - int r; - unsigned char *start, *range; - OnigRegion *region; - - region = onig_region_new(); - - start = str; - range = end; - r = onig_search(reg, str, end, start, range, region, ONIG_OPTION_NONE); - if (r >= 0) { - int i; - - fprintf(stderr, "match at %d (%s)\n", r, - ONIGENC_NAME(onig_get_encoding(reg))); - for (i = 0; i < region->num_regs; i++) { - fprintf(stderr, "%d: (%ld-%ld)\n", i, region->beg[i], region->end[i]); - } - } - else if (r == ONIG_MISMATCH) { - fprintf(stderr, "search fail (%s)\n", - ONIGENC_NAME(onig_get_encoding(reg))); - } - else { /* error */ - OnigUChar s[ONIG_MAX_ERROR_MESSAGE_LEN]; - onig_error_code_to_str(s, r); - fprintf(stderr, "ERROR: %s\n", s); - fprintf(stderr, " (%s)\n", ONIGENC_NAME(onig_get_encoding(reg))); - return -1; - } - - onig_region_free(region, 1 /* 1:free self, 0:free contents only */); - return 0; -} - -static int -exec(OnigEncoding enc, OnigOptionType options, - char* apattern, char* astr) -{ - int r; - unsigned char *end; - regex_t* reg; - OnigErrorInfo einfo; - UChar* pattern = (UChar* )apattern; - UChar* str = (UChar* )astr; - - r = onig_new(®, pattern, - pattern + onigenc_str_bytelen_null(enc, pattern), - options, enc, ONIG_SYNTAX_DEFAULT, &einfo); - if (r != ONIG_NORMAL) { - OnigUChar s[ONIG_MAX_ERROR_MESSAGE_LEN]; - onig_error_code_to_str(s, r, &einfo); - fprintf(stderr, "ERROR: %s\n", s); - return -1; - } - - end = str + onigenc_str_bytelen_null(enc, str); - r = search(reg, str, end); - - onig_free(reg); - onig_end(); - return 0; -} - -static OnigCaseFoldType CF = ONIGENC_CASE_FOLD_MIN; - -#if 0 -static void -set_case_fold(OnigCaseFoldType cf) -{ - CF = cf; -} -#endif - -static int -exec_deluxe(OnigEncoding pattern_enc, OnigEncoding str_enc, - OnigOptionType options, char* apattern, char* astr) -{ - int r; - unsigned char *end; - regex_t* reg; - OnigCompileInfo ci; - OnigErrorInfo einfo; - UChar* pattern = (UChar* )apattern; - UChar* str = (UChar* )astr; - - ci.num_of_elements = 5; - ci.pattern_enc = pattern_enc; - ci.target_enc = str_enc; - ci.syntax = ONIG_SYNTAX_DEFAULT; - ci.option = options; - ci.case_fold_flag = CF; - - r = onig_new_deluxe(®, pattern, - pattern + onigenc_str_bytelen_null(pattern_enc, pattern), - &ci, &einfo); - if (r != ONIG_NORMAL) { - OnigUChar s[ONIG_MAX_ERROR_MESSAGE_LEN]; - onig_error_code_to_str(s, r, &einfo); - fprintf(stderr, "ERROR: %s\n", s); - return -1; - } - - end = str + onigenc_str_bytelen_null(str_enc, str); - r = search(reg, str, end); - - onig_free(reg); - onig_end(); - return 0; -} - -extern int main(int argc, char* argv[]) -{ - int r = 0; - /* ISO 8859-1 test */ - static unsigned char str[] = { 0xc7, 0xd6, 0xfe, 0xea, 0xe0, 0xe2, 0x00 }; - static unsigned char pattern[] = { '(', '?', 'u', ')', 0xe7, 0xf6, 0xde, '\\', 'w', '+', 0x00 }; - - r |= exec(ONIG_ENCODING_WINDOWS_1250, ONIG_OPTION_IGNORECASE, - "aBc\\w", " AbCd"); - r |= exec(ONIG_ENCODING_WINDOWS_1251, ONIG_OPTION_IGNORECASE, - "aBc\\w", " AbCd"); - r |= exec(ONIG_ENCODING_WINDOWS_1252, ONIG_OPTION_IGNORECASE, - "aBc\\w", " AbCd"); - r |= exec(ONIG_ENCODING_WINDOWS_1253, ONIG_OPTION_IGNORECASE, - "aBc\\w", " AbCd"); - r |= exec(ONIG_ENCODING_WINDOWS_1254, ONIG_OPTION_IGNORECASE, - "aBc\\w", " AbCd"); - r |= exec(ONIG_ENCODING_WINDOWS_1257, ONIG_OPTION_IGNORECASE, - "aBc\\w", " AbCd"); - - r |= exec(ONIG_ENCODING_ISO_8859_1, ONIG_OPTION_IGNORECASE, - " [a-c\337z] ", " SS "); - r |= exec(ONIG_ENCODING_ISO_8859_1, ONIG_OPTION_IGNORECASE, - " [\330-\341] ", " SS "); - - r |= exec(ONIG_ENCODING_ISO_8859_2, ONIG_OPTION_IGNORECASE, - "\337 ", " Ss "); - r |= exec(ONIG_ENCODING_ISO_8859_2, ONIG_OPTION_IGNORECASE, - "SS ", " \337 "); - /* Ignore the following result. It also fails with Oniguruma 5.9.5. */ - /* r |= */ exec(ONIG_ENCODING_ISO_8859_2, ONIG_OPTION_IGNORECASE, - "\\A\\S\\z", "ss"); - - r |= exec(ONIG_ENCODING_ISO_8859_2, ONIG_OPTION_IGNORECASE, - "[ac]+", "bbbaAaCCC"); - - r |= exec(ONIG_ENCODING_ISO_8859_3, ONIG_OPTION_IGNORECASE, - "[ac]+", "bbbaAaCCC"); - r |= exec(ONIG_ENCODING_ISO_8859_4, ONIG_OPTION_IGNORECASE, - "[ac]+", "bbbaAaCCC"); - r |= exec(ONIG_ENCODING_ISO_8859_5, ONIG_OPTION_IGNORECASE, - "[ac]+", "bbbaAaCCC"); - r |= exec(ONIG_ENCODING_ISO_8859_6, ONIG_OPTION_IGNORECASE, - "[ac]+", "bbbaAaCCC"); - r |= exec(ONIG_ENCODING_ISO_8859_7, ONIG_OPTION_IGNORECASE, - "[ac]+", "bbbaAaCCC"); - r |= exec(ONIG_ENCODING_ISO_8859_8, ONIG_OPTION_IGNORECASE, - "[ac]+", "bbbaAaCCC"); - r |= exec(ONIG_ENCODING_ISO_8859_9, ONIG_OPTION_IGNORECASE, - "[ac]+", "bbbaAaCCC"); - r |= exec(ONIG_ENCODING_ISO_8859_10, ONIG_OPTION_IGNORECASE, - "[ac]+", "bbbaAaCCC"); - r |= exec(ONIG_ENCODING_ISO_8859_11, ONIG_OPTION_IGNORECASE, - "[ac]+", "bbbaAaCCC"); - r |= exec(ONIG_ENCODING_ISO_8859_13, ONIG_OPTION_IGNORECASE, - "[ac]+", "bbbaAaCCC"); - r |= exec(ONIG_ENCODING_ISO_8859_14, ONIG_OPTION_IGNORECASE, - "[ac]+", "bbbaAaCCC"); - r |= exec(ONIG_ENCODING_ISO_8859_15, ONIG_OPTION_IGNORECASE, - (char* )pattern, (char* )str); - r |= exec(ONIG_ENCODING_ISO_8859_16, ONIG_OPTION_IGNORECASE, - (char* )pattern, (char* )str); - - r |= exec(ONIG_ENCODING_KOI8_R, ONIG_OPTION_IGNORECASE, "a+", "bbbaaaccc"); - r |= exec(ONIG_ENCODING_KOI8_U, ONIG_OPTION_IGNORECASE, "a+", "bbbaaaccc"); - r |= exec(ONIG_ENCODING_EUC_TW, ONIG_OPTION_IGNORECASE, "b*a+?c+", "bbbaaaccc"); - r |= exec(ONIG_ENCODING_EUC_KR, ONIG_OPTION_IGNORECASE, "a+", "bbbaaaccc"); - r |= exec(ONIG_ENCODING_EUC_CN, ONIG_OPTION_IGNORECASE, "c+", "bbbaaaccc"); - r |= exec(ONIG_ENCODING_BIG5, ONIG_OPTION_IGNORECASE, "a+", "bbbaaaccc"); - - r |= exec(ONIG_ENCODING_ISO_8859_1, ONIG_OPTION_IGNORECASE, - "\337", "SS"); - r |= exec(ONIG_ENCODING_ISO_8859_1, ONIG_OPTION_IGNORECASE, - "SS", "\337"); - r |= exec(ONIG_ENCODING_ISO_8859_1, ONIG_OPTION_IGNORECASE, - "SSb\337ssc", "a\337bSS\337cd"); - r |= exec(ONIG_ENCODING_ISO_8859_1, ONIG_OPTION_IGNORECASE, - "[a\337]{0,2}", "aSS"); - r |= exec(ONIG_ENCODING_ISO_8859_1, ONIG_OPTION_IGNORECASE, - "is", "iss"); - - r |= exec_deluxe(ONIG_ENCODING_ASCII, ONIG_ENCODING_UTF16_BE, - ONIG_OPTION_NONE, "a+", - "\000b\000a\000a\000a\000c\000c\000\000"); - - r |= exec_deluxe(ONIG_ENCODING_ASCII, ONIG_ENCODING_UTF16_LE, - ONIG_OPTION_NONE, "a+", - "b\000a\000a\000a\000a\000c\000\000\000"); - - r |= exec_deluxe(ONIG_ENCODING_UTF16_BE, ONIG_ENCODING_UTF16_LE, - ONIG_OPTION_NONE, - "\000b\000a\000a\000a\000c\000c\000\000", - "x\000b\000a\000a\000a\000c\000c\000\000\000"); - - r |= exec_deluxe(ONIG_ENCODING_UTF16_LE, ONIG_ENCODING_UTF16_BE, - ONIG_OPTION_NONE, - "b\000a\000a\000a\000c\000c\000\000\000", - "\000x\000b\000a\000a\000a\000c\000c\000\000"); - - r |= exec_deluxe(ONIG_ENCODING_UTF32_BE, ONIG_ENCODING_UTF32_LE, - ONIG_OPTION_NONE, - "\000\000\000b\000\000\000a\000\000\000a\000\000\000a\000\000\000c\000\000\000c\000\000\000\000", - "x\000\000\000b\000\000\000a\000\000\000a\000\000\000a\000\000\000c\000\000\000c\000\000\000\000\000\000\000"); - - r |= exec_deluxe(ONIG_ENCODING_UTF32_LE, ONIG_ENCODING_UTF32_BE, - ONIG_OPTION_NONE, - "b\000\000\000a\000\000\000a\000\000\000a\000\000\000c\000\000\000c\000\000\000\000\000\000\000", - "\000\000\000x\000\000\000b\000\000\000a\000\000\000a\000\000\000a\000\000\000c\000\000\000c\000\000\000\000"); - - r |= exec_deluxe(ONIG_ENCODING_ISO_8859_1, ONIG_ENCODING_UTF16_BE, - ONIG_OPTION_IGNORECASE, - "\337", "\000S\000S\000\000"); - - r |= exec_deluxe(ONIG_ENCODING_ISO_8859_1, ONIG_ENCODING_UTF16_BE, - ONIG_OPTION_IGNORECASE, - "SS", "\000\337\000\000"); - - r |= exec_deluxe(ONIG_ENCODING_ISO_8859_1, ONIG_ENCODING_UTF16_LE, - ONIG_OPTION_IGNORECASE, - "\337", "S\000S\000\000\000"); - - r |= exec_deluxe(ONIG_ENCODING_ISO_8859_1, ONIG_ENCODING_UTF32_BE, - ONIG_OPTION_IGNORECASE, - "SS", "\000\000\000\337\000\000\000\000"); - - r |= exec_deluxe(ONIG_ENCODING_ISO_8859_1, ONIG_ENCODING_UTF32_LE, - ONIG_OPTION_IGNORECASE, - "\337", "S\000\000\000S\000\000\000\000\000\000\000"); - - r |= exec(ONIG_ENCODING_UTF16_BE, ONIG_OPTION_NONE, - "\000[\000[\000:\000a\000l\000n\000u\000m\000:\000]\000]\000+\000\000", - "\000#\002\120\000a\000Z\012\077\012\076\012\075\000\000"); - /* 0x0a3d == \012\075 : is not alnum */ - /* 0x0a3e == \012\076 : is alnum */ - - r |= exec(ONIG_ENCODING_UTF16_BE, ONIG_OPTION_NONE, - "\000\\\000d\000+\000\000", - "\0003\0001\377\020\377\031\377\032\000\000"); - - r |= exec(ONIG_ENCODING_GB18030, ONIG_OPTION_IGNORECASE, - "(Aa\\d)+", "BaA5Aa0234"); - - r |= exec_deluxe(ONIG_ENCODING_ISO_8859_1, ONIG_ENCODING_UTF16_BE, - ONIG_OPTION_NONE, - "^\\P{Hiragana}\\p{^Hiragana}(\\p{Hiragana}+)$", - "\060\100\060\240\060\101\060\102\060\226\060\237\000\000"); - - r |= exec_deluxe(ONIG_ENCODING_UTF16_BE, ONIG_ENCODING_UTF16_BE, - ONIG_OPTION_IGNORECASE, - "\000[\000\337\000]\000\000", "\000S\000S\000\000"); - - r |= exec_deluxe(ONIG_ENCODING_UTF16_BE, ONIG_ENCODING_UTF16_BE, - ONIG_OPTION_IGNORECASE, - "\000[\000\337\000]\000\000", "\000s\000S\000\000"); - - r |= exec_deluxe(ONIG_ENCODING_UTF16_BE, ONIG_ENCODING_UTF16_BE, - ONIG_OPTION_IGNORECASE, - "\000^\000[\000\001\000-\377\375\000]\000$\000\000", - "\000s\000S\000\000"); - - r |= exec_deluxe(ONIG_ENCODING_UTF16_BE, ONIG_ENCODING_UTF16_BE, - ONIG_OPTION_IGNORECASE, - "\000S\000S\000\000", - "\000S\000T\000\337\000\000"); - - r |= exec_deluxe(ONIG_ENCODING_UTF16_BE, ONIG_ENCODING_UTF16_BE, - ONIG_OPTION_IGNORECASE, - "\000S\000T\000S\000S\000\000", - "\000S\000t\000s\000S\000\000"); - - { - UChar pat[] = { 0x1f, 0xfc, 0x00, 0x00 }; - UChar str1[] = { 0x21, 0x26, 0x1f, 0xbe, 0x00, 0x00 }; - UChar str2[] = { 0x1f, 0xf3, 0x00, 0x00 }; - - r |= exec_deluxe(ONIG_ENCODING_UTF16_BE, ONIG_ENCODING_UTF16_BE, - ONIG_OPTION_IGNORECASE, - (char* )pat, (char* )str1); - - r |= exec_deluxe(ONIG_ENCODING_UTF16_BE, ONIG_ENCODING_UTF16_BE, - ONIG_OPTION_IGNORECASE, - (char* )pat, (char* )str2); - } - -#if 0 - /* You should define USE_UNICODE_CASE_FOLD_TURKISH_AZERI in regenc.h. */ - - set_case_fold(ONIGENC_CASE_FOLD_TURKISH_AZERI); - - r |= exec_deluxe(ONIG_ENCODING_UTF8, ONIG_ENCODING_UTF8, - ONIG_OPTION_IGNORECASE, - "Ii", "\304\261\304\260"); - - r |= exec_deluxe(ONIG_ENCODING_UTF16_BE, ONIG_ENCODING_UTF16_BE, - ONIG_OPTION_IGNORECASE, - "\000I\000i\000\000", "\001\061\001\060\000\000"); - - r |= exec_deluxe(ONIG_ENCODING_UTF16_BE, ONIG_ENCODING_UTF16_BE, - ONIG_OPTION_IGNORECASE, - "\001\061\001\060\000\000", "\000I\000i\000\000"); - - set_case_fold(ONIGENC_CASE_FOLD_MIN); -#endif - - return r; -} diff --git a/vendor/onig/st.c b/vendor/onig/st.c deleted file mode 100644 index 19e9b25..0000000 --- a/vendor/onig/st.c +++ /dev/null @@ -1,2000 +0,0 @@ -/* This is a public domain general purpose hash table package - originally written by Peter Moore @ UCB. - - The hash table data structures were redesigned and the package was - rewritten by Vladimir Makarov . */ - -/* The original package implemented classic bucket-based hash tables - with entries doubly linked for an access by their insertion order. - To decrease pointer chasing and as a consequence to improve a data - locality the current implementation is based on storing entries in - an array and using hash tables with open addressing. The current - entries are more compact in comparison with the original ones and - this also improves the data locality. - - The hash table has two arrays called *bins* and *entries*. - - bins: - ------- - | | entries array: - |-------| -------------------------------- - | index | | | entry: | | | - |-------| | | | | | - | ... | | ... | hash | ... | ... | - |-------| | | key | | | - | empty | | | record | | | - |-------| -------------------------------- - | ... | ^ ^ - |-------| |_ entries start |_ entries bound - |deleted| - ------- - - o The entry array contains table entries in the same order as they - were inserted. - - When the first entry is deleted, a variable containing index of - the current first entry (*entries start*) is changed. In all - other cases of the deletion, we just mark the entry as deleted by - using a reserved hash value. - - Such organization of the entry storage makes operations of the - table shift and the entries traversal very fast. - - o The bins provide access to the entries by their keys. The - key hash is mapped to a bin containing *index* of the - corresponding entry in the entry array. - - The bin array size is always power of two, it makes mapping very - fast by using the corresponding lower bits of the hash. - Generally it is not a good idea to ignore some part of the hash. - But alternative approach is worse. For example, we could use a - modulo operation for mapping and a prime number for the size of - the bin array. Unfortunately, the modulo operation for big - 64-bit numbers are extremely slow (it takes more than 100 cycles - on modern Intel CPUs). - - Still other bits of the hash value are used when the mapping - results in a collision. In this case we use a secondary hash - value which is a result of a function of the collision bin - index and the original hash value. The function choice - guarantees that we can traverse all bins and finally find the - corresponding bin as after several iterations the function - becomes a full cycle linear congruential generator because it - satisfies requirements of the Hull-Dobell theorem. - - When an entry is removed from the table besides marking the - hash in the corresponding entry described above, we also mark - the bin by a special value in order to find entries which had - a collision with the removed entries. - - There are two reserved values for the bins. One denotes an - empty bin, another one denotes a bin for a deleted entry. - - o The length of the bin array is at least two times more than the - entry array length. This keeps the table load factor healthy. - The trigger of rebuilding the table is always a case when we can - not insert an entry anymore at the entries bound. We could - change the entries bound too in case of deletion but than we need - a special code to count bins with corresponding deleted entries - and reset the bin values when there are too many bins - corresponding deleted entries - - Table rebuilding is done by creation of a new entry array and - bins of an appropriate size. We also try to reuse the arrays - in some cases by compacting the array and removing deleted - entries. - - o To save memory very small tables have no allocated arrays - bins. We use a linear search for an access by a key. - - o To save more memory we use 8-, 16-, 32- and 64- bit indexes in - bins depending on the current hash table size. - - This implementation speeds up the Ruby hash table benchmarks in - average by more 40% on Intel Haswell CPU. - -*/ - -#ifdef RUBY -#include "internal.h" -#else -#include "regint.h" -#include "st.h" -#endif - -#include -#include -#include -#include - -#ifdef __GNUC__ -#define PREFETCH(addr, write_p) __builtin_prefetch(addr, write_p) -#define EXPECT(expr, val) __builtin_expect(expr, val) -#define ATTRIBUTE_UNUSED __attribute__((unused)) -#else -#define PREFETCH(addr, write_p) -#define EXPECT(expr, val) (expr) -#define ATTRIBUTE_UNUSED -#endif - -#ifdef ST_DEBUG -#define st_assert(cond) assert(cond) -#else -#define st_assert(cond) ((void)(0 && (cond))) -#endif - -/* The type of hashes. */ -typedef st_index_t st_hash_t; - -struct st_table_entry { - st_hash_t hash; - st_data_t key; - st_data_t record; -}; - -#ifdef RUBY -#define type_numhash st_hashtype_num -const struct st_hash_type st_hashtype_num = { - st_numcmp, - st_numhash, -}; - -/* extern int strcmp(const char *, const char *); */ -static st_index_t strhash(st_data_t); -static const struct st_hash_type type_strhash = { - strcmp, - strhash, -}; - -static st_index_t strcasehash(st_data_t); -static const struct st_hash_type type_strcasehash = { - st_locale_insensitive_strcasecmp, - strcasehash, -}; -#endif /* RUBY */ - -/* Value used to catch uninitialized entries/bins during debugging. - There is a possibility for a false alarm, but its probability is - extremely small. */ -#define ST_INIT_VAL 0xafafafafafafafaf -#define ST_INIT_VAL_BYTE 0xafa - -#ifdef RUBY -#undef malloc -#undef realloc -#undef calloc -#undef free -#define malloc ruby_xmalloc -#define calloc ruby_xcalloc -#define realloc ruby_xrealloc -#define free ruby_xfree -#else /* RUBY */ -#define MEMCPY(p1,p2,type,n) memcpy((p1), (p2), sizeof(type)*(n)) -#endif /* RUBY */ - -#define EQUAL(tab,x,y) ((x) == (y) || (*(tab)->type->compare)((x),(y)) == 0) -#define PTR_EQUAL(tab, ptr, hash_val, key_) \ - ((ptr)->hash == (hash_val) && EQUAL((tab), (key_), (ptr)->key)) - -/* Features of a table. */ -struct st_features { - /* Power of 2 used for number of allocated entries. */ - unsigned char entry_power; - /* Power of 2 used for number of allocated bins. Depending on the - table size, the number of bins is 2-4 times more than the - number of entries. */ - unsigned char bin_power; - /* Enumeration of sizes of bins (8-bit, 16-bit etc). */ - unsigned char size_ind; - /* Bins are packed in words of type st_index_t. The following is - a size of bins counted by words. */ - st_index_t bins_words; -}; - -/* Features of all possible size tables. */ -#if SIZEOF_ST_INDEX_T == 8 -#define MAX_POWER2 62 -static const struct st_features features[] = { - {0, 1, 0, 0x0}, - {1, 2, 0, 0x1}, - {2, 3, 0, 0x1}, - {3, 4, 0, 0x2}, - {4, 5, 0, 0x4}, - {5, 6, 0, 0x8}, - {6, 7, 0, 0x10}, - {7, 8, 0, 0x20}, - {8, 9, 1, 0x80}, - {9, 10, 1, 0x100}, - {10, 11, 1, 0x200}, - {11, 12, 1, 0x400}, - {12, 13, 1, 0x800}, - {13, 14, 1, 0x1000}, - {14, 15, 1, 0x2000}, - {15, 16, 1, 0x4000}, - {16, 17, 2, 0x10000}, - {17, 18, 2, 0x20000}, - {18, 19, 2, 0x40000}, - {19, 20, 2, 0x80000}, - {20, 21, 2, 0x100000}, - {21, 22, 2, 0x200000}, - {22, 23, 2, 0x400000}, - {23, 24, 2, 0x800000}, - {24, 25, 2, 0x1000000}, - {25, 26, 2, 0x2000000}, - {26, 27, 2, 0x4000000}, - {27, 28, 2, 0x8000000}, - {28, 29, 2, 0x10000000}, - {29, 30, 2, 0x20000000}, - {30, 31, 2, 0x40000000}, - {31, 32, 2, 0x80000000}, - {32, 33, 3, 0x200000000}, - {33, 34, 3, 0x400000000}, - {34, 35, 3, 0x800000000}, - {35, 36, 3, 0x1000000000}, - {36, 37, 3, 0x2000000000}, - {37, 38, 3, 0x4000000000}, - {38, 39, 3, 0x8000000000}, - {39, 40, 3, 0x10000000000}, - {40, 41, 3, 0x20000000000}, - {41, 42, 3, 0x40000000000}, - {42, 43, 3, 0x80000000000}, - {43, 44, 3, 0x100000000000}, - {44, 45, 3, 0x200000000000}, - {45, 46, 3, 0x400000000000}, - {46, 47, 3, 0x800000000000}, - {47, 48, 3, 0x1000000000000}, - {48, 49, 3, 0x2000000000000}, - {49, 50, 3, 0x4000000000000}, - {50, 51, 3, 0x8000000000000}, - {51, 52, 3, 0x10000000000000}, - {52, 53, 3, 0x20000000000000}, - {53, 54, 3, 0x40000000000000}, - {54, 55, 3, 0x80000000000000}, - {55, 56, 3, 0x100000000000000}, - {56, 57, 3, 0x200000000000000}, - {57, 58, 3, 0x400000000000000}, - {58, 59, 3, 0x800000000000000}, - {59, 60, 3, 0x1000000000000000}, - {60, 61, 3, 0x2000000000000000}, - {61, 62, 3, 0x4000000000000000}, - {62, 63, 3, 0x8000000000000000}, -}; - -#else -#define MAX_POWER2 30 - -static const struct st_features features[] = { - {0, 1, 0, 0x1}, - {1, 2, 0, 0x1}, - {2, 3, 0, 0x2}, - {3, 4, 0, 0x4}, - {4, 5, 0, 0x8}, - {5, 6, 0, 0x10}, - {6, 7, 0, 0x20}, - {7, 8, 0, 0x40}, - {8, 9, 1, 0x100}, - {9, 10, 1, 0x200}, - {10, 11, 1, 0x400}, - {11, 12, 1, 0x800}, - {12, 13, 1, 0x1000}, - {13, 14, 1, 0x2000}, - {14, 15, 1, 0x4000}, - {15, 16, 1, 0x8000}, - {16, 17, 2, 0x20000}, - {17, 18, 2, 0x40000}, - {18, 19, 2, 0x80000}, - {19, 20, 2, 0x100000}, - {20, 21, 2, 0x200000}, - {21, 22, 2, 0x400000}, - {22, 23, 2, 0x800000}, - {23, 24, 2, 0x1000000}, - {24, 25, 2, 0x2000000}, - {25, 26, 2, 0x4000000}, - {26, 27, 2, 0x8000000}, - {27, 28, 2, 0x10000000}, - {28, 29, 2, 0x20000000}, - {29, 30, 2, 0x40000000}, - {30, 31, 2, 0x80000000}, -}; - -#endif - -/* The reserved hash value and its substitution. */ -#define RESERVED_HASH_VAL (~(st_hash_t) 0) -#define RESERVED_HASH_SUBSTITUTION_VAL ((st_hash_t) 0) - -/* Return hash value of KEY for table TAB. */ -static inline st_hash_t -do_hash(st_data_t key, st_table *tab) -{ - st_hash_t hash = (st_hash_t)(tab->type->hash)(key); - - /* RESERVED_HASH_VAL is used for a deleted entry. Map it into - another value. Such mapping should be extremely rare. */ - return hash == RESERVED_HASH_VAL ? RESERVED_HASH_SUBSTITUTION_VAL : hash; -} - -/* Power of 2 defining the minimal number of allocated entries. */ -#define MINIMAL_POWER2 2 - -#if MINIMAL_POWER2 < 2 -#error "MINIMAL_POWER2 should be >= 2" -#endif - -/* If the power2 of the allocated `entries` is less than the following - value, don't allocate bins and use a linear search. */ -#define MAX_POWER2_FOR_TABLES_WITHOUT_BINS 4 - -/* Return smallest n >= MINIMAL_POWER2 such 2^n > SIZE. */ -static int -get_power2(st_index_t size) -{ - unsigned int n; - - for (n = 0; size != 0; n++) - size >>= 1; - if (n <= MAX_POWER2) - return n < MINIMAL_POWER2 ? MINIMAL_POWER2 : n; -#ifdef RUBY - /* Ran out of the table entries */ - rb_raise(rb_eRuntimeError, "st_table too big"); -#endif - /* should raise exception */ - return -1; -} - -/* Return value of N-th bin in array BINS of table with bins size - index S. */ -static inline st_index_t -get_bin(st_index_t *bins, int s, st_index_t n) -{ - return (s == 0 ? ((unsigned char *) bins)[n] - : s == 1 ? ((unsigned short *) bins)[n] - : s == 2 ? ((unsigned int *) bins)[n] - : ((st_index_t *) bins)[n]); -} - -/* Set up N-th bin in array BINS of table with bins size index S to - value V. */ -static inline void -set_bin(st_index_t *bins, int s, st_index_t n, st_index_t v) -{ - if (s == 0) ((unsigned char *) bins)[n] = (unsigned char) v; - else if (s == 1) ((unsigned short *) bins)[n] = (unsigned short) v; - else if (s == 2) ((unsigned int *) bins)[n] = (unsigned int) v; - else ((st_index_t *) bins)[n] = v; -} - -/* These macros define reserved values for empty table bin and table - bin which contains a deleted entry. We will never use such values - for an entry index in bins. */ -#define EMPTY_BIN 0 -#define DELETED_BIN 1 -/* Base of a real entry index in the bins. */ -#define ENTRY_BASE 2 - -/* Mark I-th bin of table TAB as empty, in other words not - corresponding to any entry. */ -#define MARK_BIN_EMPTY(tab, i) (set_bin((tab)->bins, get_size_ind(tab), i, EMPTY_BIN)) - -/* Values used for not found entry and bin with given - characteristics. */ -#define UNDEFINED_ENTRY_IND (~(st_index_t) 0) -#define UNDEFINED_BIN_IND (~(st_index_t) 0) - -/* Mark I-th bin of table TAB as corresponding to a deleted table - entry. Update number of entries in the table and number of bins - corresponding to deleted entries. */ -#define MARK_BIN_DELETED(tab, i) \ - do { \ - st_assert(i != UNDEFINED_BIN_IND); \ - st_assert(! IND_EMPTY_OR_DELETED_BIN_P(tab, i)); \ - set_bin((tab)->bins, get_size_ind(tab), i, DELETED_BIN); \ - } while (0) - -/* Macros to check that value B is used empty bins and bins - corresponding deleted entries. */ -#define EMPTY_BIN_P(b) ((b) == EMPTY_BIN) -#define DELETED_BIN_P(b) ((b) == DELETED_BIN) -#define EMPTY_OR_DELETED_BIN_P(b) ((b) <= DELETED_BIN) - -/* Macros to check empty bins and bins corresponding to deleted - entries. Bins are given by their index I in table TAB. */ -#define IND_EMPTY_BIN_P(tab, i) (EMPTY_BIN_P(get_bin((tab)->bins, get_size_ind(tab), i))) -#define IND_DELETED_BIN_P(tab, i) (DELETED_BIN_P(get_bin((tab)->bins, get_size_ind(tab), i))) -#define IND_EMPTY_OR_DELETED_BIN_P(tab, i) (EMPTY_OR_DELETED_BIN_P(get_bin((tab)->bins, get_size_ind(tab), i))) - -/* Macros for marking and checking deleted entries given by their - pointer E_PTR. */ -#define MARK_ENTRY_DELETED(e_ptr) ((e_ptr)->hash = RESERVED_HASH_VAL) -#define DELETED_ENTRY_P(e_ptr) ((e_ptr)->hash == RESERVED_HASH_VAL) - -/* Return bin size index of table TAB. */ -static inline unsigned int -get_size_ind(const st_table *tab) -{ - return tab->size_ind; -} - -/* Return the number of allocated bins of table TAB. */ -static inline st_index_t -get_bins_num(const st_table *tab) -{ - return ((st_index_t) 1)<bin_power; -} - -/* Return mask for a bin index in table TAB. */ -static inline st_index_t -bins_mask(const st_table *tab) -{ - return get_bins_num(tab) - 1; -} - -/* Return the index of table TAB bin corresponding to - HASH_VALUE. */ -static inline st_index_t -hash_bin(st_hash_t hash_value, st_table *tab) -{ - return hash_value & bins_mask(tab); -} - -/* Return the number of allocated entries of table TAB. */ -static inline st_index_t -get_allocated_entries(const st_table *tab) -{ - return ((st_index_t) 1)<entry_power; -} - -/* Return size of the allocated bins of table TAB. */ -static inline st_index_t -bins_size(const st_table *tab) -{ - return features[tab->entry_power].bins_words * sizeof (st_index_t); -} - -/* Mark all bins of table TAB as empty. */ -static void -initialize_bins(st_table *tab) -{ - memset(tab->bins, 0, bins_size(tab)); -} - -/* Make table TAB empty. */ -static void -make_tab_empty(st_table *tab) -{ - tab->num_entries = 0; - tab->entries_start = tab->entries_bound = 0; - if (tab->bins != NULL) - initialize_bins(tab); -} - -#ifdef ST_DEBUG -/* Check the table T consistency. It can be extremely slow. So use - it only for debugging. */ -static void -st_check(st_table *tab) -{ - st_index_t d, e, i, n, p; - - for (p = get_allocated_entries(tab), i = 0; p > 1; i++, p>>=1) - ; - p = i; - assert(p >= MINIMAL_POWER2); - assert(tab->entries_bound <= get_allocated_entries(tab) - && tab->entries_start <= tab->entries_bound); - n = 0; - return; - if (tab->entries_bound != 0) - for (i = tab->entries_start; i < tab->entries_bound; i++) { - assert(tab->entries[i].hash != (st_hash_t) ST_INIT_VAL - && tab->entries[i].key != ST_INIT_VAL - && tab->entries[i].record != ST_INIT_VAL); - if (! DELETED_ENTRY_P(&tab->entries[i])) - n++; - } - assert(n == tab->num_entries); - if (tab->bins == NULL) - assert(p <= MAX_POWER2_FOR_TABLES_WITHOUT_BINS); - else { - assert(p > MAX_POWER2_FOR_TABLES_WITHOUT_BINS); - for (n = d = i = 0; i < get_bins_num(tab); i++) { - assert(get_bin(tab->bins, tab->size_ind, i) != ST_INIT_VAL); - if (IND_DELETED_BIN_P(tab, i)) { - d++; - continue; - } - else if (IND_EMPTY_BIN_P(tab, i)) - continue; - n++; - e = get_bin(tab->bins, tab->size_ind, i) - ENTRY_BASE; - assert(tab->entries_start <= e && e < tab->entries_bound); - assert(! DELETED_ENTRY_P(&tab->entries[e])); - assert(tab->entries[e].hash != (st_hash_t) ST_INIT_VAL - && tab->entries[e].key != ST_INIT_VAL - && tab->entries[e].record != ST_INIT_VAL); - } - assert(n == tab->num_entries); - assert(n + d < get_bins_num(tab)); - } -} -#endif - -#ifdef HASH_LOG -#ifdef HAVE_UNISTD_H -#include -#endif -static struct { - int all, total, num, str, strcase; -} collision; - -/* Flag switching off output of package statistics at the end of - program. */ -static int init_st = 0; - -/* Output overall number of table searches and collisions into a - temporary file. */ -static void -stat_col(void) -{ - char fname[10+sizeof(long)*3]; - FILE *f; - if (!collision.total) return; - f = fopen((snprintf(fname, sizeof(fname), "/tmp/col%ld", (long)getpid()), fname), "w"); - if (f == 0) return ; - - fprintf(f, "collision: %d / %d (%6.2f)\n", collision.all, collision.total, - ((double)collision.all / (collision.total)) * 100); - fprintf(f, "num: %d, str: %d, strcase: %d\n", collision.num, collision.str, collision.strcase); - fclose(f); -} -#endif - -/* Create and return table with TYPE which can hold at least SIZE - entries. The real number of entries which the table can hold is - the nearest power of two for SIZE. */ -st_table * -st_init_table_with_size(const struct st_hash_type *type, st_index_t size) -{ - st_table *tab; - int n; - -#ifdef HASH_LOG -#if HASH_LOG+0 < 0 - { - const char *e = getenv("ST_HASH_LOG"); - if (!e || !*e) init_st = 1; - } -#endif - if (init_st == 0) { - init_st = 1; - atexit(stat_col); - } -#endif - - n = get_power2(size); -#ifndef RUBY - if (n < 0) - return NULL; -#endif - tab = (st_table *) malloc(sizeof (st_table)); - if (tab == NULL) - return NULL; - tab->type = type; - tab->entry_power = n; - tab->bin_power = features[n].bin_power; - tab->size_ind = features[n].size_ind; - if (n <= MAX_POWER2_FOR_TABLES_WITHOUT_BINS) - tab->bins = NULL; - else { - tab->bins = (st_index_t *) malloc(bins_size(tab)); - if (tab->bins == NULL) { - free(tab); - return NULL; - } - } - tab->entries = (st_table_entry *) malloc(get_allocated_entries(tab) - * sizeof(st_table_entry)); - if (tab->entries == NULL) { - st_free_table(tab); - return NULL; - } -#ifdef ST_DEBUG - memset(tab->entries, ST_INIT_VAL_BYTE, - get_allocated_entries(tab) * sizeof(st_table_entry)); - if (tab->bins != NULL) - memset(tab->bins, ST_INIT_VAL_BYTE, bins_size(tab)); -#endif - make_tab_empty(tab); - tab->rebuilds_num = 0; -#ifdef ST_DEBUG - st_check(tab); -#endif - return tab; -} - -#ifdef RUBY -/* Create and return table with TYPE which can hold a minimal number - of entries (see comments for get_power2). */ -st_table * -st_init_table(const struct st_hash_type *type) -{ - return st_init_table_with_size(type, 0); -} - -/* Create and return table which can hold a minimal number of - numbers. */ -st_table * -st_init_numtable(void) -{ - return st_init_table(&type_numhash); -} - -/* Create and return table which can hold SIZE numbers. */ -st_table * -st_init_numtable_with_size(st_index_t size) -{ - return st_init_table_with_size(&type_numhash, size); -} - -/* Create and return table which can hold a minimal number of - strings. */ -st_table * -st_init_strtable(void) -{ - return st_init_table(&type_strhash); -} - -/* Create and return table which can hold SIZE strings. */ -st_table * -st_init_strtable_with_size(st_index_t size) -{ - return st_init_table_with_size(&type_strhash, size); -} - -/* Create and return table which can hold a minimal number of strings - whose character case is ignored. */ -st_table * -st_init_strcasetable(void) -{ - return st_init_table(&type_strcasehash); -} - -/* Create and return table which can hold SIZE strings whose character - case is ignored. */ -st_table * -st_init_strcasetable_with_size(st_index_t size) -{ - return st_init_table_with_size(&type_strcasehash, size); -} - -/* Make table TAB empty. */ -void -st_clear(st_table *tab) -{ - make_tab_empty(tab); - tab->rebuilds_num++; -#ifdef ST_DEBUG - st_check(tab); -#endif -} -#endif /* RUBY */ - -/* Free table TAB space. */ -void -st_free_table(st_table *tab) -{ - if (tab->bins != NULL) - free(tab->bins); - free(tab->entries); - free(tab); -} - -#ifdef RUBY -/* Return byte size of memory allocted for table TAB. */ -size_t -st_memsize(const st_table *tab) -{ - return(sizeof(st_table) - + (tab->bins == NULL ? 0 : bins_size(tab)) - + get_allocated_entries(tab) * sizeof(st_table_entry)); -} -#endif /* RUBY */ - -static st_index_t -find_table_entry_ind(st_table *tab, st_hash_t hash_value, st_data_t key); - -static st_index_t -find_table_bin_ind(st_table *tab, st_hash_t hash_value, st_data_t key); - -static st_index_t -find_table_bin_ind_direct(st_table *table, st_hash_t hash_value, st_data_t key); - -static st_index_t -find_table_bin_ptr_and_reserve(st_table *tab, st_hash_t *hash_value, - st_data_t key, st_index_t *bin_ind); - -#ifdef HASH_LOG -static void -count_collision(const struct st_hash_type *type) -{ - collision.all++; - if (type == &type_numhash) { - collision.num++; - } - else if (type == &type_strhash) { - collision.strcase++; - } - else if (type == &type_strcasehash) { - collision.str++; - } -} - -#define COLLISION (collision_check ? count_collision(tab->type) : (void)0) -#define FOUND_BIN (collision_check ? collision.total++ : (void)0) -#define collision_check 0 -#else -#define COLLISION -#define FOUND_BIN -#endif - -/* If the number of entries in the table is at least REBUILD_THRESHOLD - times less than the entry array length, decrease the table - size. */ -#define REBUILD_THRESHOLD 4 - -#if REBUILD_THRESHOLD < 2 -#error "REBUILD_THRESHOLD should be >= 2" -#endif - -/* Rebuild table TAB. Rebuilding removes all deleted bins and entries - and can change size of the table entries and bins arrays. - Rebuilding is implemented by creation of a new table or by - compaction of the existing one. */ -static void -rebuild_table(st_table *tab) -{ - st_index_t i, ni, bound; - unsigned int size_ind; - st_table *new_tab; - st_table_entry *entries, *new_entries; - st_table_entry *curr_entry_ptr; - st_index_t *bins; - st_index_t bin_ind; - - st_assert(tab != NULL); - bound = tab->entries_bound; - entries = tab->entries; - if ((2 * tab->num_entries <= get_allocated_entries(tab) - && REBUILD_THRESHOLD * tab->num_entries > get_allocated_entries(tab)) - || tab->num_entries < (1 << MINIMAL_POWER2)) { - /* Compaction: */ - tab->num_entries = 0; - if (tab->bins != NULL) - initialize_bins(tab); - new_tab = tab; - new_entries = entries; - } - else { - new_tab = st_init_table_with_size(tab->type, - 2 * tab->num_entries - 1); - new_entries = new_tab->entries; - } - ni = 0; - bins = new_tab->bins; - size_ind = get_size_ind(new_tab); - for (i = tab->entries_start; i < bound; i++) { - curr_entry_ptr = &entries[i]; - PREFETCH(entries + i + 1, 0); - if (EXPECT(DELETED_ENTRY_P(curr_entry_ptr), 0)) - continue; - if (&new_entries[ni] != curr_entry_ptr) - new_entries[ni] = *curr_entry_ptr; - if (EXPECT(bins != NULL, 1)) { - bin_ind = find_table_bin_ind_direct(new_tab, curr_entry_ptr->hash, - curr_entry_ptr->key); - st_assert(bin_ind != UNDEFINED_BIN_IND - && (tab == new_tab || new_tab->rebuilds_num == 0) - && IND_EMPTY_BIN_P(new_tab, bin_ind)); - set_bin(bins, size_ind, bin_ind, ni + ENTRY_BASE); - } - new_tab->num_entries++; - ni++; - } - if (new_tab != tab) { - tab->entry_power = new_tab->entry_power; - tab->bin_power = new_tab->bin_power; - tab->size_ind = new_tab->size_ind; - st_assert (tab->num_entries == ni && new_tab->num_entries == ni); - if (tab->bins != NULL) - free(tab->bins); - tab->bins = new_tab->bins; - free(tab->entries); - tab->entries = new_tab->entries; - free(new_tab); - } - tab->entries_start = 0; - tab->entries_bound = tab->num_entries; - tab->rebuilds_num++; -#ifdef ST_DEBUG - st_check(tab); -#endif -} - -/* Return the next secondary hash index for table TAB using previous - index IND and PERTERB. Finally modulo of the function becomes a - full *cycle linear congruential generator*, in other words it - guarantees traversing all table bins in extreme case. - - According the Hull-Dobell theorem a generator - "Xnext = (a*Xprev + c) mod m" is a full cycle generator iff - o m and c are relatively prime - o a-1 is divisible by all prime factors of m - o a-1 is divisible by 4 if m is divisible by 4. - - For our case a is 5, c is 1, and m is a power of two. */ -static inline st_index_t -secondary_hash(st_index_t ind, st_table *tab, st_index_t *perterb) -{ - *perterb >>= 11; - ind = (ind << 2) + ind + *perterb + 1; - return hash_bin(ind, tab); -} - -/* Find an entry with HASH_VALUE and KEY in TABLE using a linear - search. Return the index of the found entry in array `entries`. - If it is not found, return UNDEFINED_ENTRY_IND. */ -static inline st_index_t -find_entry(st_table *tab, st_hash_t hash_value, st_data_t key) -{ - st_index_t i, bound; - st_table_entry *entries; - - bound = tab->entries_bound; - entries = tab->entries; - for (i = tab->entries_start; i < bound; i++) { - if (PTR_EQUAL(tab, &entries[i], hash_value, key)) - return i; - } - return UNDEFINED_ENTRY_IND; -} - -/* Use the quadratic probing. The method has a better data locality - but more collisions than the current approach. In average it - results in a bit slower search. */ -/*#define QUADRATIC_PROBE*/ - -/* Return index of entry with HASH_VALUE and KEY in table TAB. If - there is no such entry, return UNDEFINED_ENTRY_IND. */ -static st_index_t -find_table_entry_ind(st_table *tab, st_hash_t hash_value, st_data_t key) -{ - st_index_t ind; -#ifdef QUADRATIC_PROBE - st_index_t d; -#else - st_index_t peterb; -#endif - st_index_t bin; - st_table_entry *entries = tab->entries; - - st_assert(tab != NULL && tab->bins != NULL); - ind = hash_bin(hash_value, tab); -#ifdef QUADRATIC_PROBE - d = 1; -#else - peterb = hash_value; -#endif - FOUND_BIN; - for (;;) { - bin = get_bin(tab->bins, get_size_ind(tab), ind); - if (! EMPTY_OR_DELETED_BIN_P(bin) - && PTR_EQUAL(tab, &entries[bin - ENTRY_BASE], hash_value, key)) - break; - else if (EMPTY_BIN_P(bin)) - return UNDEFINED_ENTRY_IND; -#ifdef QUADRATIC_PROBE - ind = hash_bin(ind + d, tab); - d++; -#else - ind = secondary_hash(ind, tab, &peterb); -#endif - COLLISION; - } - return bin; -} - -/* Find and return index of table TAB bin corresponding to an entry - with HASH_VALUE and KEY. If there is no such bin, return - UNDEFINED_BIN_IND. */ -static st_index_t -find_table_bin_ind(st_table *tab, st_hash_t hash_value, st_data_t key) -{ - st_index_t ind; -#ifdef QUADRATIC_PROBE - st_index_t d; -#else - st_index_t peterb; -#endif - st_index_t bin; - st_table_entry *entries = tab->entries; - - st_assert(tab != NULL && tab->bins != NULL); - ind = hash_bin(hash_value, tab); -#ifdef QUADRATIC_PROBE - d = 1; -#else - peterb = hash_value; -#endif - FOUND_BIN; - for (;;) { - bin = get_bin(tab->bins, get_size_ind(tab), ind); - if (! EMPTY_OR_DELETED_BIN_P(bin) - && PTR_EQUAL(tab, &entries[bin - ENTRY_BASE], hash_value, key)) - break; - else if (EMPTY_BIN_P(bin)) - return UNDEFINED_BIN_IND; -#ifdef QUADRATIC_PROBE - ind = hash_bin(ind + d, tab); - d++; -#else - ind = secondary_hash(ind, tab, &peterb); -#endif - COLLISION; - } - return ind; -} - -/* Find and return index of table TAB bin corresponding to an entry - with HASH_VALUE and KEY. The entry should be in the table - already. */ -static st_index_t -find_table_bin_ind_direct(st_table *tab, st_hash_t hash_value, st_data_t key) -{ - st_index_t ind; -#ifdef QUADRATIC_PROBE - st_index_t d; -#else - st_index_t peterb; -#endif - st_index_t bin; - st_table_entry *entries = tab->entries; - - st_assert(tab != NULL && tab->bins != NULL); - ind = hash_bin(hash_value, tab); -#ifdef QUADRATIC_PROBE - d = 1; -#else - peterb = hash_value; -#endif - FOUND_BIN; - for (;;) { - bin = get_bin(tab->bins, get_size_ind(tab), ind); - if (EMPTY_OR_DELETED_BIN_P(bin)) - return ind; - st_assert (! PTR_EQUAL(tab, &entries[bin - ENTRY_BASE], hash_value, key)); -#ifdef QUADRATIC_PROBE - ind = hash_bin(ind + d, tab); - d++; -#else - ind = secondary_hash(ind, tab, &peterb); -#endif - COLLISION; - } -} - -/* Return index of table TAB bin for HASH_VALUE and KEY through - BIN_IND and the pointed value as the function result. Reserve the - bin for inclusion of the corresponding entry into the table if it - is not there yet. We always find such bin as bins array length is - bigger entries array. Although we can reuse a deleted bin, the - result bin value is always empty if the table has no entry with - KEY. Return the entries array index of the found entry or - UNDEFINED_ENTRY_IND if it is not found. */ -static st_index_t -find_table_bin_ptr_and_reserve(st_table *tab, st_hash_t *hash_value, - st_data_t key, st_index_t *bin_ind) { - st_index_t ind; - st_hash_t curr_hash_value = *hash_value; -#ifdef QUADRATIC_PROBE - st_index_t d; -#else - st_index_t peterb; -#endif - st_index_t entry_index; - st_index_t first_deleted_bin_ind; - st_table_entry *entries; - - st_assert(tab != NULL && tab->bins != NULL - && tab->entries_bound <= get_allocated_entries(tab) - && tab->entries_start <= tab->entries_bound); - ind = hash_bin(curr_hash_value, tab); -#ifdef QUADRATIC_PROBE - d = 1; -#else - peterb = curr_hash_value; -#endif - FOUND_BIN; - first_deleted_bin_ind = UNDEFINED_BIN_IND; - entries = tab->entries; - for (;;) { - entry_index = get_bin(tab->bins, get_size_ind(tab), ind); - if (EMPTY_BIN_P(entry_index)) { - tab->num_entries++; - entry_index = UNDEFINED_ENTRY_IND; - if (first_deleted_bin_ind != UNDEFINED_BIN_IND) { - /* We can reuse bin of a deleted entry. */ - ind = first_deleted_bin_ind; - MARK_BIN_EMPTY(tab, ind); - } - break; - } else if (! DELETED_BIN_P(entry_index)) { - if (PTR_EQUAL(tab, &entries[entry_index - ENTRY_BASE], curr_hash_value, key)) - break; - } else if (first_deleted_bin_ind == UNDEFINED_BIN_IND) - first_deleted_bin_ind = ind; -#ifdef QUADRATIC_PROBE - ind = hash_bin(ind + d, tab); - d++; -#else - ind = secondary_hash(ind, tab, &peterb); -#endif - COLLISION; - } - *bin_ind = ind; - return entry_index; -} - -/* Find an entry with KEY in table TAB. Return non-zero if we found - it. Set up *RECORD to the found entry record. */ -int -st_lookup(st_table *tab, st_data_t key, st_data_t *value) -{ - st_index_t bin; - st_hash_t hash = do_hash(key, tab); - - if (tab->bins == NULL) { - bin = find_entry(tab, hash, key); - if (bin == UNDEFINED_ENTRY_IND) - return 0; - } else { - bin = find_table_entry_ind(tab, hash, key); - if (bin == UNDEFINED_ENTRY_IND) - return 0; - bin -= ENTRY_BASE; - } - if (value != 0) - *value = tab->entries[bin].record; - return 1; -} - -#ifdef RUBY -/* Find an entry with KEY in table TAB. Return non-zero if we found - it. Set up *RESULT to the found table entry key. */ -int -st_get_key(st_table *tab, st_data_t key, st_data_t *result) -{ - st_index_t bin; - st_hash_t hash = do_hash(key, tab); - - if (tab->bins == NULL) { - bin = find_entry(tab, hash, key); - if (bin == UNDEFINED_ENTRY_IND) - return 0; - } else { - bin = find_table_entry_ind(tab, hash, key); - if (bin == UNDEFINED_ENTRY_IND) - return 0; - bin -= ENTRY_BASE; - } - if (result != 0) - *result = tab->entries[bin].key; - return 1; -} -#endif /* RUBY */ - -/* Check the table and rebuild it if it is necessary. */ -static inline void -rebuild_table_if_necessary (st_table *tab) -{ - st_index_t bound = tab->entries_bound; - - if (bound == get_allocated_entries(tab)) - rebuild_table(tab); - st_assert(tab->entries_bound < get_allocated_entries(tab)); -} - -/* Insert (KEY, VALUE) into table TAB and return zero. If there is - already entry with KEY in the table, return nonzero and and update - the value of the found entry. */ -int -st_insert(st_table *tab, st_data_t key, st_data_t value) -{ - st_table_entry *entry; - st_index_t bin; - st_index_t ind; - st_hash_t hash_value; - st_index_t bin_ind; - int new_p; - - rebuild_table_if_necessary(tab); - hash_value = do_hash(key, tab); - if (tab->bins == NULL) { - bin = find_entry(tab, hash_value, key); - new_p = bin == UNDEFINED_ENTRY_IND; - if (new_p) - tab->num_entries++; - bin_ind = UNDEFINED_BIN_IND; - } else { - bin = find_table_bin_ptr_and_reserve(tab, &hash_value, - key, &bin_ind); - new_p = bin == UNDEFINED_ENTRY_IND; - bin -= ENTRY_BASE; - } - if (new_p) { - st_assert(tab->entries_bound < get_allocated_entries(tab)); - ind = tab->entries_bound++; - entry = &tab->entries[ind]; - entry->hash = hash_value; - entry->key = key; - entry->record = value; - if (bin_ind != UNDEFINED_BIN_IND) - set_bin(tab->bins, get_size_ind(tab), bin_ind, ind + ENTRY_BASE); -#ifdef ST_DEBUG - st_check(tab); -#endif - return 0; - } - tab->entries[bin].record = value; -#ifdef ST_DEBUG - st_check(tab); -#endif - return 1; -} - -#ifdef RUBY -/* Insert (KEY, VALUE, HASH) into table TAB. The table should not have - entry with KEY before the insertion. */ -static inline void -st_add_direct_with_hash(st_table *tab, - st_data_t key, st_data_t value, st_hash_t hash) { - st_table_entry *entry; - st_index_t ind; - st_index_t bin_ind; - - rebuild_table_if_necessary(tab); - ind = tab->entries_bound++; - entry = &tab->entries[ind]; - entry->hash = hash; - entry->key = key; - entry->record = value; - tab->num_entries++; - if (tab->bins != NULL) { - bin_ind = find_table_bin_ind_direct(tab, hash, key); - st_assert (bin_ind != UNDEFINED_BIN_IND); - set_bin(tab->bins, get_size_ind(tab), bin_ind, ind + ENTRY_BASE); - } -#ifdef ST_DEBUG - st_check(tab); -#endif -} - -/* Insert (KEY, VALUE) into table TAB. The table should not have - entry with KEY before the insertion. */ -void -st_add_direct(st_table *tab, st_data_t key, st_data_t value) -{ - st_hash_t hash_value; - - hash_value = do_hash(key, tab); - st_add_direct_with_hash(tab, key, value, hash_value); -} - -/* Insert (FUNC(KEY), VALUE) into table TAB and return zero. If - there is already entry with KEY in the table, return nonzero and - and update the value of the found entry. */ -int -st_insert2(st_table *tab, st_data_t key, st_data_t value, - st_data_t (*func)(st_data_t)) { - st_table_entry *entry; - st_index_t bin; - st_index_t ind, check; - st_hash_t hash_value; - st_index_t bin_ind; - int new_p; - - rebuild_table_if_necessary (tab); - hash_value = do_hash(key, tab); - if (tab->bins == NULL) { - bin = find_entry(tab, hash_value, key); - new_p = bin == UNDEFINED_ENTRY_IND; - bin_ind = UNDEFINED_BIN_IND; - } else { - bin = find_table_bin_ptr_and_reserve(tab, &hash_value, - key, &bin_ind); - new_p = bin == UNDEFINED_ENTRY_IND; - bin -= ENTRY_BASE; - } - if (new_p) { - st_assert(tab->entries_bound < get_allocated_entries(tab)); - check = tab->rebuilds_num; - key = (*func)(key); - st_assert(check == tab->rebuilds_num - && do_hash(key, tab) == hash_value); - ind = tab->entries_bound++; - entry = &tab->entries[ind]; - entry->hash = hash_value; - entry->key = key; - entry->record = value; - if (bin_ind != UNDEFINED_BIN_IND) - set_bin(tab->bins, get_size_ind(tab), bin_ind, ind + ENTRY_BASE); -#ifdef ST_DEBUG - st_check(tab); -#endif - return 0; - } - tab->entries[bin].record = value; -#ifdef ST_DEBUG - st_check(tab); -#endif - return 1; -} - -/* Create and return a copy of table OLD_TAB. */ -st_table * -st_copy(st_table *old_tab) -{ - st_table *new_tab; - - new_tab = (st_table *) malloc(sizeof(st_table)); - if (new_tab == NULL) - return NULL; - *new_tab = *old_tab; - if (old_tab->bins == NULL) - new_tab->bins = NULL; - else { - new_tab->bins = (st_index_t *) malloc(bins_size(old_tab)); - if (new_tab->bins == NULL) { - free(new_tab); - return NULL; - } - } - new_tab->entries = (st_table_entry *) malloc(get_allocated_entries(old_tab) - * sizeof(st_table_entry)); - if (new_tab->entries == NULL) { - st_free_table(new_tab); - return NULL; - } - MEMCPY(new_tab->entries, old_tab->entries, st_table_entry, - get_allocated_entries(old_tab)); - if (old_tab->bins != NULL) - MEMCPY(new_tab->bins, old_tab->bins, char, bins_size(old_tab)); -#ifdef ST_DEBUG - st_check(new_tab); -#endif - return new_tab; -} -#endif /* RUBY */ - -/* Update the entries start of table TAB after removing an entry - with index N in the array entries. */ -static inline void -update_range_for_deleted(st_table *tab, st_index_t n) -{ - /* Do not update entries_bound here. Otherwise, we can fill all - bins by deleted entry value before rebuilding the table. */ - if (tab->entries_start == n) - tab->entries_start = n + 1; -} - -#ifdef RUBY -/* Delete entry with KEY from table TAB, set up *VALUE (unless - VALUE is zero) from deleted table entry, and return non-zero. If - there is no entry with KEY in the table, clear *VALUE (unless VALUE - is zero), and return zero. */ -static int -st_general_delete(st_table *tab, st_data_t *key, st_data_t *value) -{ - st_table_entry *entry; - st_index_t bin; - st_index_t bin_ind; - st_hash_t hash; - - st_assert(tab != NULL); - hash = do_hash(*key, tab); - if (tab->bins == NULL) { - bin = find_entry(tab, hash, *key); - if (bin == UNDEFINED_ENTRY_IND) { - if (value != 0) *value = 0; - return 0; - } - } else { - bin_ind = find_table_bin_ind(tab, hash, *key); - if (bin_ind == UNDEFINED_BIN_IND) { - if (value != 0) *value = 0; - return 0; - } - bin = get_bin(tab->bins, get_size_ind(tab), bin_ind) - ENTRY_BASE; - MARK_BIN_DELETED(tab, bin_ind); - } - entry = &tab->entries[bin]; - *key = entry->key; - if (value != 0) *value = entry->record; - MARK_ENTRY_DELETED(entry); - tab->num_entries--; - update_range_for_deleted(tab, bin); -#ifdef ST_DEBUG - st_check(tab); -#endif - return 1; -} - -int -st_delete(st_table *tab, st_data_t *key, st_data_t *value) -{ - return st_general_delete(tab, key, value); -} - -/* The function and other functions with suffix '_safe' or '_check' - are originated from the previous implementation of the hash tables. - It was necessary for correct deleting entries during traversing - tables. The current implementation permits deletion during - traversing without a specific way to do this. */ -int -st_delete_safe(st_table *tab, st_data_t *key, st_data_t *value, - st_data_t never ATTRIBUTE_UNUSED) { - return st_general_delete(tab, key, value); -} - -/* If table TAB is empty, clear *VALUE (unless VALUE is zero), and - return zero. Otherwise, remove the first entry in the table. - Return its key through KEY and its record through VALUE (unless - VALUE is zero). */ -int -st_shift(st_table *tab, st_data_t *key, st_data_t *value) -{ - st_index_t i, bound; - st_index_t bin; - st_table_entry *entries, *curr_entry_ptr; - st_index_t bin_ind; - - entries = tab->entries; - bound = tab->entries_bound; - for (i = tab->entries_start; i < bound; i++) { - curr_entry_ptr = &entries[i]; - if (! DELETED_ENTRY_P(curr_entry_ptr)) { - if (value != 0) *value = curr_entry_ptr->record; - *key = curr_entry_ptr->key; - if (tab->bins == NULL) { - bin = find_entry(tab, curr_entry_ptr->hash, curr_entry_ptr->key); - st_assert(bin != UNDEFINED_ENTRY_IND - && &entries[bin] == curr_entry_ptr); - } else { - bin_ind = find_table_bin_ind(tab, curr_entry_ptr->hash, - curr_entry_ptr->key); - st_assert(bin_ind != UNDEFINED_BIN_IND - && &entries[get_bin(tab->bins, get_size_ind(tab), bin_ind) - - ENTRY_BASE] == curr_entry_ptr); - MARK_BIN_DELETED(tab, bin_ind); - } - MARK_ENTRY_DELETED(curr_entry_ptr); - tab->num_entries--; - update_range_for_deleted(tab, i); -#ifdef ST_DEBUG - st_check(tab); -#endif - return 1; - } - } - st_assert(tab->num_entries == 0); - tab->entries_start = tab->entries_bound = 0; - if (value != 0) *value = 0; - return 0; -} - -/* See comments for function st_delete_safe. */ -void -st_cleanup_safe(st_table *tab ATTRIBUTE_UNUSED, - st_data_t never ATTRIBUTE_UNUSED) { -} - -/* Find entry with KEY in table TAB, call FUNC with the key and the - value of the found entry, and non-zero as the 3rd argument. If the - entry is not found, call FUNC with KEY, and 2 zero arguments. If - the call returns ST_CONTINUE, the table will have an entry with key - and value returned by FUNC through the 1st and 2nd parameters. If - the call of FUNC returns ST_DELETE, the table will not have entry - with KEY. The function returns flag of that the entry with KEY was - in the table before the call. */ -int -st_update(st_table *tab, st_data_t key, - st_update_callback_func *func, st_data_t arg) { - st_table_entry *entry = NULL; /* to avoid uninitialized value warning */ - st_index_t bin = 0; /* Ditto */ - st_table_entry *entries; - st_index_t bin_ind; - st_data_t value = 0, old_key; - st_index_t check; - int retval, existing; - st_hash_t hash = do_hash(key, tab); - - entries = tab->entries; - if (tab->bins == NULL) { - bin = find_entry(tab, hash, key); - existing = bin != UNDEFINED_ENTRY_IND; - entry = &entries[bin]; - bin_ind = UNDEFINED_BIN_IND; - } else { - bin_ind = find_table_bin_ind(tab, hash, key); - existing = bin_ind != UNDEFINED_BIN_IND; - if (existing) { - bin = get_bin(tab->bins, get_size_ind(tab), bin_ind) - ENTRY_BASE; - entry = &entries[bin]; - } - } - if (existing) { - key = entry->key; - value = entry->record; - } - old_key = key; - check = tab->rebuilds_num; - retval = (*func)(&key, &value, arg, existing); - st_assert(check == tab->rebuilds_num); - switch (retval) { - case ST_CONTINUE: - if (! existing) { - st_add_direct_with_hash(tab, key, value, hash); - break; - } - if (old_key != key) { - entry->key = key; - } - entry->record = value; - break; - case ST_DELETE: - if (existing) { - if (bin_ind != UNDEFINED_BIN_IND) - MARK_BIN_DELETED(tab, bin_ind); - MARK_ENTRY_DELETED(entry); - tab->num_entries--; - update_range_for_deleted(tab, bin); -#ifdef ST_DEBUG - st_check(tab); -#endif - } - break; - } -#ifdef ST_DEBUG - st_check(tab); -#endif - return existing; -} -#endif /* RUBY */ - -/* Traverse all entries in table TAB calling FUNC with current entry - key and value and zero. If the call returns ST_STOP, stop - traversing. If the call returns ST_DELETE, delete the current - entry from the table. In case of ST_CHECK or ST_CONTINUE, continue - traversing. The function returns zero unless an error is found. - CHECK_P is flag of st_foreach_check call. The behavior is a bit - different for ST_CHECK and when the current element is removed - during traversing. */ -static inline int -st_general_foreach(st_table *tab, int (*func)(ANYARGS), st_data_t arg, - int check_p) { - st_index_t bin; - st_index_t bin_ind; - st_table_entry *entries, *curr_entry_ptr; - enum st_retval retval; - st_index_t i, rebuilds_num; - st_hash_t hash; - st_data_t key; - int error_p, packed_p = tab->bins == NULL; - - st_assert(tab->entries_start <= tab->entries_bound); - entries = tab->entries; - /* The bound can change inside the loop even without rebuilding - the table, e.g. by an entry inesrtion. */ - for (i = tab->entries_start; i < tab->entries_bound; i++) { - curr_entry_ptr = &entries[i]; - if (EXPECT(DELETED_ENTRY_P(curr_entry_ptr), 0)) - continue; - key = curr_entry_ptr->key; - rebuilds_num = tab->rebuilds_num; - hash = curr_entry_ptr->hash; - retval = (*func)(key, curr_entry_ptr->record, arg, 0); - if (rebuilds_num != tab->rebuilds_num) { - entries = tab->entries; - packed_p = tab->bins == NULL; - if (packed_p) { - i = find_entry(tab, hash, key); - error_p = i == UNDEFINED_ENTRY_IND; - } else { - i = find_table_entry_ind(tab, hash, key); - error_p = i == UNDEFINED_ENTRY_IND; - i -= ENTRY_BASE; - } - if (error_p && check_p) { - /* call func with error notice */ - retval = (*func)(0, 0, arg, 1); -#ifdef ST_DEBUG - st_check(tab); -#endif - return 1; - } - curr_entry_ptr = &entries[i]; - } - switch (retval) { - case ST_CONTINUE: - break; - case ST_CHECK: - if (check_p) - break; - case ST_STOP: -#ifdef ST_DEBUG - st_check(tab); -#endif - return 0; - case ST_DELETE: - if (packed_p) { - bin = find_entry(tab, hash, curr_entry_ptr->key); - if (bin == UNDEFINED_ENTRY_IND) - break; - } else { - bin_ind = find_table_bin_ind(tab, hash, curr_entry_ptr->key); - if (bin_ind == UNDEFINED_BIN_IND) - break; - bin = get_bin(tab->bins, get_size_ind(tab), bin_ind) - ENTRY_BASE; - MARK_BIN_DELETED(tab, bin_ind); - } - st_assert(&entries[bin] == curr_entry_ptr); - MARK_ENTRY_DELETED(curr_entry_ptr); - tab->num_entries--; - update_range_for_deleted(tab, bin); -#ifdef ST_DEBUG - st_check(tab); -#endif - break; - } - } -#ifdef ST_DEBUG - st_check(tab); -#endif - return 0; -} - -int -st_foreach(st_table *tab, int (*func)(ANYARGS), st_data_t arg) -{ - return st_general_foreach(tab, func, arg, FALSE); -} - -#ifdef RUBY -/* See comments for function st_delete_safe. */ -int -st_foreach_check(st_table *tab, int (*func)(ANYARGS), st_data_t arg, - st_data_t never ATTRIBUTE_UNUSED) { - return st_general_foreach(tab, func, arg, TRUE); -} - -/* Set up array KEYS by at most SIZE keys of head table TAB entries. - Return the number of keys set up in array KEYS. */ -static inline st_index_t -st_general_keys(st_table *tab, st_data_t *keys, st_index_t size) -{ - st_index_t i, bound; - st_data_t key, *keys_start, *keys_end; - st_table_entry *curr_entry_ptr, *entries = tab->entries; - - bound = tab->entries_bound; - keys_start = keys; - keys_end = keys + size; - for (i = tab->entries_start; i < bound; i++) { - if (keys == keys_end) - break; - curr_entry_ptr = &entries[i]; - key = curr_entry_ptr->key; - if (! DELETED_ENTRY_P(curr_entry_ptr)) - *keys++ = key; - } - - return keys - keys_start; -} - -st_index_t -st_keys(st_table *tab, st_data_t *keys, st_index_t size) -{ - return st_general_keys(tab, keys, size); -} - -/* See comments for function st_delete_safe. */ -st_index_t -st_keys_check(st_table *tab, st_data_t *keys, st_index_t size, - st_data_t never ATTRIBUTE_UNUSED) { - return st_general_keys(tab, keys, size); -} - -/* Set up array VALUES by at most SIZE values of head table TAB - entries. Return the number of values set up in array VALUES. */ -static inline st_index_t -st_general_values(st_table *tab, st_data_t *values, st_index_t size) -{ - st_index_t i, bound; - st_data_t *values_start, *values_end; - st_table_entry *curr_entry_ptr, *entries = tab->entries; - - values_start = values; - values_end = values + size; - bound = tab->entries_bound; - st_assert(bound != 0); - for (i = tab->entries_start; i < bound; i++) { - if (values == values_end) - break; - curr_entry_ptr = &entries[i]; - if (! DELETED_ENTRY_P(curr_entry_ptr)) - *values++ = curr_entry_ptr->record; - } - - return values - values_start; -} - -st_index_t -st_values(st_table *tab, st_data_t *values, st_index_t size) -{ - return st_general_values(tab, values, size); -} - -/* See comments for function st_delete_safe. */ -st_index_t -st_values_check(st_table *tab, st_data_t *values, st_index_t size, - st_data_t never ATTRIBUTE_UNUSED) { - return st_general_values(tab, values, size); -} -#endif /* RUBY */ - -#ifdef RUBY -#define FNV1_32A_INIT 0x811c9dc5 - -/* - * 32 bit magic FNV-1a prime - */ -#define FNV_32_PRIME 0x01000193 - -#ifndef UNALIGNED_WORD_ACCESS -# if defined(__i386) || defined(__i386__) || defined(_M_IX86) || \ - defined(__x86_64) || defined(__x86_64__) || defined(_M_AMD64) || \ - defined(__powerpc64__) || \ - defined(__mc68020__) -# define UNALIGNED_WORD_ACCESS 1 -# endif -#endif -#ifndef UNALIGNED_WORD_ACCESS -# define UNALIGNED_WORD_ACCESS 0 -#endif - -/* This hash function is quite simplified MurmurHash3 - * Simplification is legal, cause most of magic still happens in finalizator. - * And finalizator is almost the same as in MurmurHash3 */ -#define BIG_CONSTANT(x,y) ((st_index_t)(x)<<32|(st_index_t)(y)) -#define ROTL(x,n) ((x)<<(n)|(x)>>(SIZEOF_ST_INDEX_T*CHAR_BIT-(n))) - -#if ST_INDEX_BITS <= 32 -#define C1 (st_index_t)0xcc9e2d51 -#define C2 (st_index_t)0x1b873593 -#else -#define C1 BIG_CONSTANT(0x87c37b91,0x114253d5); -#define C2 BIG_CONSTANT(0x4cf5ad43,0x2745937f); -#endif -static inline st_index_t -murmur_step(st_index_t h, st_index_t k) -{ -#if ST_INDEX_BITS <= 32 -#define r1 (17) -#define r2 (11) -#else -#define r1 (33) -#define r2 (24) -#endif - k *= C1; - h ^= ROTL(k, r1); - h *= C2; - h = ROTL(h, r2); - return h; -} -#undef r1 -#undef r2 - -static inline st_index_t -murmur_finish(st_index_t h) -{ -#if ST_INDEX_BITS <= 32 -#define r1 (16) -#define r2 (13) -#define r3 (16) - const st_index_t c1 = 0x85ebca6b; - const st_index_t c2 = 0xc2b2ae35; -#else -/* values are taken from Mix13 on http://zimbry.blogspot.ru/2011/09/better-bit-mixing-improving-on.html */ -#define r1 (30) -#define r2 (27) -#define r3 (31) - const st_index_t c1 = BIG_CONSTANT(0xbf58476d,0x1ce4e5b9); - const st_index_t c2 = BIG_CONSTANT(0x94d049bb,0x133111eb); -#endif -#if ST_INDEX_BITS > 64 - h ^= h >> 64; - h *= c2; - h ^= h >> 65; -#endif - h ^= h >> r1; - h *= c1; - h ^= h >> r2; - h *= c2; - h ^= h >> r3; - return h; -} -#undef r1 -#undef r2 -#undef r3 - -st_index_t -st_hash(const void *ptr, size_t len, st_index_t h) -{ - const char *data = ptr; - st_index_t t = 0; - size_t l = len; - -#define data_at(n) (st_index_t)((unsigned char)data[(n)]) -#define UNALIGNED_ADD_4 UNALIGNED_ADD(2); UNALIGNED_ADD(1); UNALIGNED_ADD(0) -#if SIZEOF_ST_INDEX_T > 4 -#define UNALIGNED_ADD_8 UNALIGNED_ADD(6); UNALIGNED_ADD(5); UNALIGNED_ADD(4); UNALIGNED_ADD(3); UNALIGNED_ADD_4 -#if SIZEOF_ST_INDEX_T > 8 -#define UNALIGNED_ADD_16 UNALIGNED_ADD(14); UNALIGNED_ADD(13); UNALIGNED_ADD(12); UNALIGNED_ADD(11); \ - UNALIGNED_ADD(10); UNALIGNED_ADD(9); UNALIGNED_ADD(8); UNALIGNED_ADD(7); UNALIGNED_ADD_8 -#define UNALIGNED_ADD_ALL UNALIGNED_ADD_16 -#endif -#define UNALIGNED_ADD_ALL UNALIGNED_ADD_8 -#else -#define UNALIGNED_ADD_ALL UNALIGNED_ADD_4 -#endif -#undef SKIP_TAIL - if (len >= sizeof(st_index_t)) { -#if !UNALIGNED_WORD_ACCESS - int align = (int)((st_data_t)data % sizeof(st_index_t)); - if (align) { - st_index_t d = 0; - int sl, sr, pack; - - switch (align) { -#ifdef WORDS_BIGENDIAN -# define UNALIGNED_ADD(n) case SIZEOF_ST_INDEX_T - (n) - 1: \ - t |= data_at(n) << CHAR_BIT*(SIZEOF_ST_INDEX_T - (n) - 2) -#else -# define UNALIGNED_ADD(n) case SIZEOF_ST_INDEX_T - (n) - 1: \ - t |= data_at(n) << CHAR_BIT*(n) -#endif - UNALIGNED_ADD_ALL; -#undef UNALIGNED_ADD - } - -#ifdef WORDS_BIGENDIAN - t >>= (CHAR_BIT * align) - CHAR_BIT; -#else - t <<= (CHAR_BIT * align); -#endif - - data += sizeof(st_index_t)-align; - len -= sizeof(st_index_t)-align; - - sl = CHAR_BIT * (SIZEOF_ST_INDEX_T-align); - sr = CHAR_BIT * align; - - while (len >= sizeof(st_index_t)) { - d = *(st_index_t *)data; -#ifdef WORDS_BIGENDIAN - t = (t << sr) | (d >> sl); -#else - t = (t >> sr) | (d << sl); -#endif - h = murmur_step(h, t); - t = d; - data += sizeof(st_index_t); - len -= sizeof(st_index_t); - } - - pack = len < (size_t)align ? (int)len : align; - d = 0; - switch (pack) { -#ifdef WORDS_BIGENDIAN -# define UNALIGNED_ADD(n) case (n) + 1: \ - d |= data_at(n) << CHAR_BIT*(SIZEOF_ST_INDEX_T - (n) - 1) -#else -# define UNALIGNED_ADD(n) case (n) + 1: \ - d |= data_at(n) << CHAR_BIT*(n) -#endif - UNALIGNED_ADD_ALL; -#undef UNALIGNED_ADD - } -#ifdef WORDS_BIGENDIAN - t = (t << sr) | (d >> sl); -#else - t = (t >> sr) | (d << sl); -#endif - - if (len < (size_t)align) goto skip_tail; -# define SKIP_TAIL 1 - h = murmur_step(h, t); - data += pack; - len -= pack; - } - else -#endif - { - do { - h = murmur_step(h, *(st_index_t *)data); - data += sizeof(st_index_t); - len -= sizeof(st_index_t); - } while (len >= sizeof(st_index_t)); - } - } - - t = 0; - switch (len) { -#if UNALIGNED_WORD_ACCESS && SIZEOF_ST_INDEX_T <= 8 && CHAR_BIT == 8 - /* in this case byteorder doesn't really matter */ -#if SIZEOF_ST_INDEX_T > 4 - case 7: t |= data_at(6) << 48; - case 6: t |= data_at(5) << 40; - case 5: t |= data_at(4) << 32; - case 4: - t |= (st_index_t)*(uint32_t*)data; - goto skip_tail; -# define SKIP_TAIL 1 -#endif - case 3: t |= data_at(2) << 16; - case 2: t |= data_at(1) << 8; - case 1: t |= data_at(0); -#else -#ifdef WORDS_BIGENDIAN -# define UNALIGNED_ADD(n) case (n) + 1: \ - t |= data_at(n) << CHAR_BIT*(SIZEOF_ST_INDEX_T - (n) - 1) -#else -# define UNALIGNED_ADD(n) case (n) + 1: \ - t |= data_at(n) << CHAR_BIT*(n) -#endif - UNALIGNED_ADD_ALL; -#undef UNALIGNED_ADD -#endif -#ifdef SKIP_TAIL - skip_tail: -#endif - h ^= t; h -= ROTL(t, 7); - h *= C2; - } - h ^= l; - - return murmur_finish(h); -} - -st_index_t -st_hash_uint32(st_index_t h, uint32_t i) -{ - return murmur_step(h, i); -} - -st_index_t -st_hash_uint(st_index_t h, st_index_t i) -{ - i += h; -/* no matter if it is BigEndian or LittleEndian, - * we hash just integers */ -#if SIZEOF_ST_INDEX_T*CHAR_BIT > 8*8 - h = murmur_step(h, i >> 8*8); -#endif - h = murmur_step(h, i); - return h; -} - -st_index_t -st_hash_end(st_index_t h) -{ - h = murmur_finish(h); - return h; -} - -#undef st_hash_start -st_index_t -st_hash_start(st_index_t h) -{ - return h; -} - -static st_index_t -strhash(st_data_t arg) -{ - register const char *string = (const char *)arg; - return st_hash(string, strlen(string), FNV1_32A_INIT); -} - -int -st_locale_insensitive_strcasecmp(const char *s1, const char *s2) -{ - unsigned int c1, c2; - - while (1) { - c1 = (unsigned char)*s1++; - c2 = (unsigned char)*s2++; - if (c1 == '\0' || c2 == '\0') { - if (c1 != '\0') return 1; - if (c2 != '\0') return -1; - return 0; - } - if ((unsigned int)(c1 - 'A') <= ('Z' - 'A')) c1 += 'a' - 'A'; - if ((unsigned int)(c2 - 'A') <= ('Z' - 'A')) c2 += 'a' - 'A'; - if (c1 != c2) { - if (c1 > c2) - return 1; - else - return -1; - } - } -} - -int -st_locale_insensitive_strncasecmp(const char *s1, const char *s2, size_t n) -{ - unsigned int c1, c2; - - while (n--) { - c1 = (unsigned char)*s1++; - c2 = (unsigned char)*s2++; - if (c1 == '\0' || c2 == '\0') { - if (c1 != '\0') return 1; - if (c2 != '\0') return -1; - return 0; - } - if ((unsigned int)(c1 - 'A') <= ('Z' - 'A')) c1 += 'a' - 'A'; - if ((unsigned int)(c2 - 'A') <= ('Z' - 'A')) c2 += 'a' - 'A'; - if (c1 != c2) { - if (c1 > c2) - return 1; - else - return -1; - } - } - return 0; -} - -static st_index_t -strcasehash(st_data_t arg) -{ - register const char *string = (const char *)arg; - register st_index_t hval = FNV1_32A_INIT; - - /* - * FNV-1a hash each octet in the buffer - */ - while (*string) { - unsigned int c = (unsigned char)*string++; - if ((unsigned int)(c - 'A') <= ('Z' - 'A')) c += 'a' - 'A'; - hval ^= c; - - /* multiply by the 32 bit FNV magic prime mod 2^32 */ - hval *= FNV_32_PRIME; - } - return hval; -} - -int -st_numcmp(st_data_t x, st_data_t y) -{ - return x != y; -} - -st_index_t -st_numhash(st_data_t n) -{ - enum {s1 = 11, s2 = 3}; - return (st_index_t)((n>>s1|(n<>s2)); -} -#endif /* RUBY */ diff --git a/vendor/onig/st.h b/vendor/onig/st.h deleted file mode 100644 index 812292b..0000000 --- a/vendor/onig/st.h +++ /dev/null @@ -1,162 +0,0 @@ -/* This is a public domain general purpose hash table package - originally written by Peter Moore @ UCB. - - The hash table data strutures were redesigned and the package was - rewritten by Vladimir Makarov . */ - -#ifndef RUBY_ST_H -#define RUBY_ST_H 1 - -#if defined(__cplusplus) -extern "C" { -#if 0 -} /* satisfy cc-mode */ -#endif -#endif - -#ifdef RUBY -#include "ruby/defines.h" -#else /* RUBY */ -#ifndef RUBY_SYMBOL_EXPORT_BEGIN -#define RUBY_SYMBOL_EXPORT_BEGIN -#define RUBY_SYMBOL_EXPORT_END -#endif -#endif /* RUBY */ - -RUBY_SYMBOL_EXPORT_BEGIN - -#if SIZEOF_LONG == SIZEOF_VOIDP -typedef unsigned long st_data_t; -#elif SIZEOF_LONG_LONG == SIZEOF_VOIDP -typedef unsigned LONG_LONG st_data_t; -#else -# error ---->> st.c requires sizeof(void*) == sizeof(long) or sizeof(LONG_LONG) to be compiled. <<---- -#endif -#define ST_DATA_T_DEFINED - -#ifndef CHAR_BIT -# ifdef HAVE_LIMITS_H -# include -# else -# define CHAR_BIT 8 -# endif -#endif -#ifndef _ -# define _(args) args -#endif -#ifndef ANYARGS -# ifdef __cplusplus -# define ANYARGS ... -# else -# define ANYARGS -# endif -#endif - -typedef struct st_table st_table; - -typedef st_data_t st_index_t; - -/* Maximal value of unsigned integer type st_index_t. */ -#define MAX_ST_INDEX_VAL (~(st_index_t) 0) - -typedef int st_compare_func(st_data_t, st_data_t); -typedef st_index_t st_hash_func(st_data_t); - -typedef char st_check_for_sizeof_st_index_t[SIZEOF_VOIDP == (int)sizeof(st_index_t) ? 1 : -1]; -#define SIZEOF_ST_INDEX_T SIZEOF_VOIDP - -struct st_hash_type { - int (*compare)(ANYARGS /*st_data_t, st_data_t*/); /* st_compare_func* */ - st_index_t (*hash)(ANYARGS /*st_data_t*/); /* st_hash_func* */ -}; - -#define ST_INDEX_BITS (SIZEOF_ST_INDEX_T * CHAR_BIT) - -#if defined(HAVE_BUILTIN___BUILTIN_CHOOSE_EXPR) && defined(HAVE_BUILTIN___BUILTIN_TYPES_COMPATIBLE_P) -# define ST_DATA_COMPATIBLE_P(type) \ - __builtin_choose_expr(__builtin_types_compatible_p(type, st_data_t), 1, 0) -#else -# define ST_DATA_COMPATIBLE_P(type) 0 -#endif - -typedef struct st_table_entry st_table_entry; - -struct st_table_entry; /* defined in st.c */ - -struct st_table { - /* Cached features of the table -- see st.c for more details. */ - unsigned char entry_power, bin_power, size_ind; - /* How many times the table was rebuilt. */ - unsigned int rebuilds_num; - const struct st_hash_type *type; - /* Number of entries currently in the table. */ - st_index_t num_entries; - /* Array of bins used for access by keys. */ - st_index_t *bins; - /* Start and bound index of entries in array entries. - entries_starts and entries_bound are in interval - [0,allocated_entries]. */ - st_index_t entries_start, entries_bound; - /* Array of size 2^entry_power. */ - st_table_entry *entries; -}; - -#define st_is_member(table,key) st_lookup((table),(key),(st_data_t *)0) - -enum st_retval {ST_CONTINUE, ST_STOP, ST_DELETE, ST_CHECK}; - -st_table *st_init_table(const struct st_hash_type *); -st_table *st_init_table_with_size(const struct st_hash_type *, st_index_t); -st_table *st_init_numtable(void); -st_table *st_init_numtable_with_size(st_index_t); -st_table *st_init_strtable(void); -st_table *st_init_strtable_with_size(st_index_t); -st_table *st_init_strcasetable(void); -st_table *st_init_strcasetable_with_size(st_index_t); -int st_delete(st_table *, st_data_t *, st_data_t *); /* returns 0:notfound 1:deleted */ -int st_delete_safe(st_table *, st_data_t *, st_data_t *, st_data_t); -int st_shift(st_table *, st_data_t *, st_data_t *); /* returns 0:notfound 1:deleted */ -int st_insert(st_table *, st_data_t, st_data_t); -int st_insert2(st_table *, st_data_t, st_data_t, st_data_t (*)(st_data_t)); -int st_lookup(st_table *, st_data_t, st_data_t *); -int st_get_key(st_table *, st_data_t, st_data_t *); -typedef int st_update_callback_func(st_data_t *key, st_data_t *value, st_data_t arg, int existing); -/* *key may be altered, but must equal to the old key, i.e., the - * results of hash() are same and compare() returns 0, otherwise the - * behavior is undefined */ -int st_update(st_table *table, st_data_t key, st_update_callback_func *func, st_data_t arg); -int st_foreach(st_table *, int (*)(ANYARGS), st_data_t); -int st_foreach_check(st_table *, int (*)(ANYARGS), st_data_t, st_data_t); -st_index_t st_keys(st_table *table, st_data_t *keys, st_index_t size); -st_index_t st_keys_check(st_table *table, st_data_t *keys, st_index_t size, st_data_t never); -st_index_t st_values(st_table *table, st_data_t *values, st_index_t size); -st_index_t st_values_check(st_table *table, st_data_t *values, st_index_t size, st_data_t never); -void st_add_direct(st_table *, st_data_t, st_data_t); -void st_free_table(st_table *); -void st_cleanup_safe(st_table *, st_data_t); -void st_clear(st_table *); -st_table *st_copy(st_table *); -int st_numcmp(st_data_t, st_data_t); -st_index_t st_numhash(st_data_t); -int st_locale_insensitive_strcasecmp(const char *s1, const char *s2); -int st_locale_insensitive_strncasecmp(const char *s1, const char *s2, size_t n); -#define st_strcasecmp st_locale_insensitive_strcasecmp -#define st_strncasecmp st_locale_insensitive_strncasecmp -size_t st_memsize(const st_table *); -st_index_t st_hash(const void *ptr, size_t len, st_index_t h); -st_index_t st_hash_uint32(st_index_t h, uint32_t i); -st_index_t st_hash_uint(st_index_t h, st_index_t i); -st_index_t st_hash_end(st_index_t h); -st_index_t st_hash_start(st_index_t h); -#define st_hash_start(h) ((st_index_t)(h)) - -RUBY_SYMBOL_EXPORT_END - -#if defined(__cplusplus) -#if 0 -{ /* satisfy cc-mode */ -#endif -} /* extern "C" { */ -#endif - -#endif /* RUBY_ST_H */ diff --git a/vendor/onig/stamp-h1 b/vendor/onig/stamp-h1 deleted file mode 100644 index 4547fe1..0000000 --- a/vendor/onig/stamp-h1 +++ /dev/null @@ -1 +0,0 @@ -timestamp for config.h diff --git a/vendor/onig/test.rb b/vendor/onig/test.rb deleted file mode 100644 index 1f1456b..0000000 --- a/vendor/onig/test.rb +++ /dev/null @@ -1,1108 +0,0 @@ -# test.rb -# Copyright (C) 2003-2006 K.Kosako (sndgk393 AT ybb DOT ne DOT jp) - -$SILENT = false -if (ARGV.size > 0 and ARGV[0] == '-s') - $SILENT = true -end - -def pr(result, reg, str, n = 0, *range) - printf("%s /%s/:'%s'", result, reg.source, str) - if (n.class == Fixnum) - printf(":%d", n) if n != 0 - if (range.size > 0) - if (range[3].nil?) - printf(" (%d-%d : X-X)", range[0], range[1]) - else - printf(" (%d-%d : %d-%d)", range[0], range[1], range[2], range[3]) - end - end - else - printf(" %s", n) - end - printf("\n") -end - -def rok(result_opt, reg, str, n = 0, *range) - result = "OK" + result_opt - result += " " * (7 - result.length) - pr(result, reg, str, n, *range) unless $SILENT - $rok += 1 -end - -def rfail(result_opt, reg, str, n = 0, *range) - result = "FAIL" + result_opt - result += " " * (7 - result.length) - pr(result, reg, str, n, *range) - $rfail += 1 -end - -def x(reg, str, s, e, n = 0) - m = reg.match(str) - if m - if (m.size() <= n) - rfail("(%d)" % (m.size()-1), reg, str, n) - else - if (m.begin(n) == s && m.end(n) == e) - rok("", reg, str, n) - else - rfail("", reg, str, n, s, e, m.begin(n), m.end(n)) - end - end - else - rfail("", reg, str, n) - end -end - -def n(reg, str) - m = reg.match(str) - if m - rfail("(N)", reg, str, 0) - else - rok("(N)", reg, str, 0) - end -end - -def r(reg, str, index, pos = nil) - if (pos) - res = str.rindex(reg, pos) - else - res = str.rindex(reg) - end - if res - if (res == index) - rok("(r)", reg, str) - else - rfail("(r)", reg, str, [res, '-', index]) - end - else - rfail("(r)", reg, str) - end -end - -def i(reg, str, s = 0, e = 0, n = 0) - # ignore -end - -### main ### -$rok = $rfail = 0 - - -x(/\M-Z/n, "\xDA", 0, 1) - -# from URI::ABS_URI -n(/^ - ([a-zA-Z][-+.a-zA-Z\d]*): (?# 1: scheme) - (?: - ((?:[-_.!~*'()a-zA-Z\d;?:@&=+$,]|%[a-fA-F\d]{2})(?:[-_.!~*'()a-zA-Z\d;\/?:@&=+$,\[\]]|%[a-fA-F\d]{2})*) (?# 2: opaque) - | - (?:(?: - \/\/(?: - (?:(?:((?:[-_.!~*'()a-zA-Z\d;:&=+$,]|%[a-fA-F\d]{2})*)@)? (?# 3: userinfo) - (?:((?:(?:(?:[a-zA-Z\d](?:[-a-zA-Z\d]*[a-zA-Z\d])?)\.)*(?:[a-zA-Z](?:[-a-zA-Z\d]*[a-zA-Z\d])?)\.?|\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}|\[(?:(?:[a-fA-F\d]{1,4}:)*(?:[a-fA-F\d]{1,4}|\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})|(?:(?:[a-fA-F\d]{1,4}:)*[a-fA-F\d]{1,4})?::(?:(?:[a-fA-F\d]{1,4}:)*(?:[a-fA-F\d]{1,4}|\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}))?)\]))(?::(\d*))?))?(?# 4: host, 5: port) - | - ((?:[-_.!~*'()a-zA-Z\d$,;+@&=+]|%[a-fA-F\d]{2})+) (?# 6: registry) - ) - | - (?!\/\/)) (?# XXX: '\/\/' is the mark for hostport) - (\/(?:[-_.!~*'()a-zA-Z\d:@&=+$,]|%[a-fA-F\d]{2})*(?:;(?:[-_.!~*'()a-zA-Z\d:@&=+$,]|%[a-fA-F\d]{2})*)*(?:\/(?:[-_.!~*'()a-zA-Z\d:@&=+$,]|%[a-fA-F\d]{2})*(?:;(?:[-_.!~*'()a-zA-Z\d:@&=+$,]|%[a-fA-F\d]{2})*)*)*)? (?# 7: path) - )(?:\?((?:[-_.!~*'()a-zA-Z\d;\/?:@&=+$,\[\]]|%[a-fA-F\d]{2})*))? (?# 8: query) - ) - (?:\#((?:[-_.!~*'()a-zA-Z\d;\/?:@&=+$,\[\]]|%[a-fA-F\d]{2})*))? (?# 9: fragment) - $/xn, "http://example.org/Andr\xC3\xA9") - - -def test_sb(enc) -$KCODE = enc - -x(//, '', 0, 0) -x(/^/, '', 0, 0) -x(/$/, '', 0, 0) -x(/\G/, '', 0, 0) -x(/\A/, '', 0, 0) -x(/\Z/, '', 0, 0) -x(/\z/, '', 0, 0) -x(/^$/, '', 0, 0) -x(/\ca/, "\001", 0, 1) -x(/\C-b/, "\002", 0, 1) -x(/\c\\/, "\034", 0, 1) -x(/q[\c\\]/, "q\034", 0, 2) -x(//, 'a', 0, 0) -x(/a/, 'a', 0, 1) -x(/\x61/, 'a', 0, 1) -x(/aa/, 'aa', 0, 2) -x(/aaa/, 'aaa', 0, 3) -x(/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/, 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 0, 35) -x(/ab/, 'ab', 0, 2) -x(/b/, 'ab', 1, 2) -x(/bc/, 'abc', 1, 3) -x(/(?i:#RET#)/, '#INS##RET#', 5, 10) -x(/\17/, "\017", 0, 1) -x(/\x1f/, "\x1f", 0, 1) -x(/a(?#....\\JJJJ)b/, 'ab', 0, 2) -x(Regexp.new("(?x)\ta .\n+b"), '0a123b4', 1, 6) -x(/(?x) G (o O(?-x)oO) g L/, "GoOoOgLe", 0, 7) -x(/./, 'a', 0, 1) -n(/./, '') -x(/../, 'ab', 0, 2) -x(/\w/, 'e', 0, 1) -n(/\W/, 'e') -x(/\s/, ' ', 0, 1) -x(/\S/, 'b', 0, 1) -x(/\d/, '4', 0, 1) -n(/\D/, '4') -x(/\b/, 'z ', 0, 0) -x(/\b/, ' z', 1, 1) -x(/\B/, 'zz ', 1, 1) -x(/\B/, 'z ', 2, 2) -x(/\B/, ' z', 0, 0) -x(/[ab]/, 'b', 0, 1) -n(/[ab]/, 'c') -x(/[a-z]/, 't', 0, 1) -n(/[^a]/, 'a') -x(/[^a]/, "\n", 0, 1) -x(/[]]/, ']', 0, 1) -n(/[^]]/, ']') -x(/[\^]+/, '0^^1', 1, 3) -x(/[b-]/, 'b', 0, 1) -x(/[b-]/, '-', 0, 1) -x(/[\w]/, 'z', 0, 1) -n(/[\w]/, ' ') -x(/[\W]/, 'b$', 1, 2) -x(/[\d]/, '5', 0, 1) -n(/[\d]/, 'e') -x(/[\D]/, 't', 0, 1) -n(/[\D]/, '3') -x(/[\s]/, ' ', 0, 1) -n(/[\s]/, 'a') -x(/[\S]/, 'b', 0, 1) -n(/[\S]/, ' ') -x(/[\w\d]/, '2', 0, 1) -n(/[\w\d]/, ' ') -x(/[[:upper:]]/, 'B', 0, 1) -x(/[*[:xdigit:]+]/, '+', 0, 1) -x(/[*[:xdigit:]+]/, 'GHIKK-9+*', 6, 7) -x(/[*[:xdigit:]+]/, '-@^+', 3, 4) -n(/[[:upper]]/, 'A') -x(/[[:upper]]/, ':', 0, 1) -x(/[\044-\047]/, "\046", 0, 1) -x(/[\x5a-\x5c]/, "\x5b", 0, 1) -x(/[\x6A-\x6D]/, "\x6c", 0, 1) -n(/[\x6A-\x6D]/, "\x6E") -n(/^[0-9A-F]+ 0+ UNDEF /, '75F 00000000 SECT14A notype () External | _rb_apply') -x(/[\[]/, '[', 0, 1) -x(/[\]]/, ']', 0, 1) -x(/[&]/, '&', 0, 1) -x(/[[ab]]/, 'b', 0, 1) -x(/[[ab]c]/, 'c', 0, 1) -n(/[[^a]]/, 'a') -n(/[^[a]]/, 'a') -x(/[[ab]&&bc]/, 'b', 0, 1) -n(/[[ab]&&bc]/, 'a') -n(/[[ab]&&bc]/, 'c') -x(/[a-z&&b-y&&c-x]/, 'w', 0, 1) -n(/[^a-z&&b-y&&c-x]/, 'w') -x(/[[^a&&a]&&a-z]/, 'b', 0, 1) -n(/[[^a&&a]&&a-z]/, 'a') -x(/[[^a-z&&bcdef]&&[^c-g]]/, 'h', 0, 1) -n(/[[^a-z&&bcdef]&&[^c-g]]/, 'c') -x(/[^[^abc]&&[^cde]]/, 'c', 0, 1) -x(/[^[^abc]&&[^cde]]/, 'e', 0, 1) -n(/[^[^abc]&&[^cde]]/, 'f') -x(/[a-&&-a]/, '-', 0, 1) -n(/[a\-&&\-a]/, '&') -n(/\wabc/, ' abc') -x(/a\Wbc/, 'a bc', 0, 4) -x(/a.b.c/, 'aabbc', 0, 5) -x(/.\wb\W..c/, 'abb bcc', 0, 7) -x(/\s\wzzz/, ' zzzz', 0, 5) -x(/aa.b/, 'aabb', 0, 4) -n(/.a/, 'ab') -x(/.a/, 'aa', 0, 2) -x(/^a/, 'a', 0, 1) -x(/^a$/, 'a', 0, 1) -x(/^\w$/, 'a', 0, 1) -n(/^\w$/, ' ') -x(/^\wab$/, 'zab', 0, 3) -x(/^\wabcdef$/, 'zabcdef', 0, 7) -x(/^\w...def$/, 'zabcdef', 0, 7) -x(/\w\w\s\Waaa\d/, 'aa aaa4', 0, 8) -x(/\A\Z/, '', 0, 0) -x(/\Axyz/, 'xyz', 0, 3) -x(/xyz\Z/, 'xyz', 0, 3) -x(/xyz\z/, 'xyz', 0, 3) -x(/a\Z/, 'a', 0, 1) -x(/\Gaz/, 'az', 0, 2) -n(/\Gz/, 'bza') -n(/az\G/, 'az') -n(/az\A/, 'az') -n(/a\Az/, 'az') -x(/\^\$/, '^$', 0, 2) -x(/^x?y/, 'xy', 0, 2) -x(/^(x?y)/, 'xy', 0, 2) -x(/\w/, '_', 0, 1) -n(/\W/, '_') -x(/(?=z)z/, 'z', 0, 1) -n(/(?=z)./, 'a') -x(/(?!z)a/, 'a', 0, 1) -n(/(?!z)a/, 'z') -x(/(?i:a)/, 'a', 0, 1) -x(/(?i:a)/, 'A', 0, 1) -x(/(?i:A)/, 'a', 0, 1) -n(/(?i:A)/, 'b') -x(/(?i:[A-Z])/, 'a', 0, 1) -x(/(?i:[f-m])/, 'H', 0, 1) -x(/(?i:[f-m])/, 'h', 0, 1) -n(/(?i:[f-m])/, 'e') -x(/(?i:[A-c])/, 'D', 0, 1) -#n(/(?i:[a-C])/, 'D') # changed spec.(error) 2003/09/17 -#n(/(?i:[b-C])/, 'A') -#x(/(?i:[a-C])/, 'B', 0, 1) -#n(/(?i:[c-X])/, '[') -n(/(?i:[^a-z])/, 'A') -n(/(?i:[^a-z])/, 'a') -x(/(?i:[!-k])/, 'Z', 0, 1) -x(/(?i:[!-k])/, '7', 0, 1) -x(/(?i:[T-}])/, 'b', 0, 1) -x(/(?i:[T-}])/, '{', 0, 1) -x(/(?i:\?a)/, '?A', 0, 2) -x(/(?i:\*A)/, '*a', 0, 2) -n(/./, "\n") -x(/(?m:.)/, "\n", 0, 1) -x(/(?m:a.)/, "a\n", 0, 2) -x(/(?m:.b)/, "a\nb", 1, 3) -x(/.*abc/, "dddabdd\nddabc", 8, 13) -x(/(?m:.*abc)/, "dddabddabc", 0, 10) -n(/(?i)(?-i)a/, "A") -n(/(?i)(?-i:a)/, "A") -x(/a?/, '', 0, 0) -x(/a?/, 'b', 0, 0) -x(/a?/, 'a', 0, 1) -x(/a*/, '', 0, 0) -x(/a*/, 'a', 0, 1) -x(/a*/, 'aaa', 0, 3) -x(/a*/, 'baaaa', 0, 0) -n(/a+/, '') -x(/a+/, 'a', 0, 1) -x(/a+/, 'aaaa', 0, 4) -x(/a+/, 'aabbb', 0, 2) -x(/a+/, 'baaaa', 1, 5) -x(/.?/, '', 0, 0) -x(/.?/, 'f', 0, 1) -x(/.?/, "\n", 0, 0) -x(/.*/, '', 0, 0) -x(/.*/, 'abcde', 0, 5) -x(/.+/, 'z', 0, 1) -x(/.+/, "zdswer\n", 0, 6) -x(/(.*)a\1f/, "babfbac", 0, 4) -x(/(.*)a\1f/, "bacbabf", 3, 7) -x(/((.*)a\2f)/, "bacbabf", 3, 7) -x(/(.*)a\1f/, "baczzzzzz\nbazz\nzzzzbabf", 19, 23) -x(/a|b/, 'a', 0, 1) -x(/a|b/, 'b', 0, 1) -x(/|a/, 'a', 0, 0) -x(/(|a)/, 'a', 0, 0) -x(/ab|bc/, 'ab', 0, 2) -x(/ab|bc/, 'bc', 0, 2) -x(/z(?:ab|bc)/, 'zbc', 0, 3) -x(/a(?:ab|bc)c/, 'aabc', 0, 4) -x(/ab|(?:ac|az)/, 'az', 0, 2) -x(/a|b|c/, 'dc', 1, 2) -x(/a|b|cd|efg|h|ijk|lmn|o|pq|rstuvwx|yz/, 'pqr', 0, 2) -n(/a|b|cd|efg|h|ijk|lmn|o|pq|rstuvwx|yz/, 'mn') -x(/a|^z/, 'ba', 1, 2) -x(/a|^z/, 'za', 0, 1) -x(/a|\Gz/, 'bza', 2, 3) -x(/a|\Gz/, 'za', 0, 1) -x(/a|\Az/, 'bza', 2, 3) -x(/a|\Az/, 'za', 0, 1) -x(/a|b\Z/, 'ba', 1, 2) -x(/a|b\Z/, 'b', 0, 1) -x(/a|b\z/, 'ba', 1, 2) -x(/a|b\z/, 'b', 0, 1) -x(/\w|\s/, ' ', 0, 1) -n(/\w|\w/, ' ') -x(/\w|%/, '%', 0, 1) -x(/\w|[&$]/, '&', 0, 1) -x(/[b-d]|[^e-z]/, 'a', 0, 1) -x(/(?:a|[c-f])|bz/, 'dz', 0, 1) -x(/(?:a|[c-f])|bz/, 'bz', 0, 2) -x(/abc|(?=zz)..f/, 'zzf', 0, 3) -x(/abc|(?!zz)..f/, 'abf', 0, 3) -x(/(?=za)..a|(?=zz)..a/, 'zza', 0, 3) -n(/(?>a|abd)c/, 'abdc') -x(/(?>abd|a)c/, 'abdc', 0, 4) -x(/a?|b/, 'a', 0, 1) -x(/a?|b/, 'b', 0, 0) -x(/a?|b/, '', 0, 0) -x(/a*|b/, 'aa', 0, 2) -x(/a*|b*/, 'ba', 0, 0) -x(/a*|b*/, 'ab', 0, 1) -x(/a+|b*/, '', 0, 0) -x(/a+|b*/, 'bbb', 0, 3) -x(/a+|b*/, 'abbb', 0, 1) -n(/a+|b+/, '') -x(/(a|b)?/, 'b', 0, 1) -x(/(a|b)*/, 'ba', 0, 2) -x(/(a|b)+/, 'bab', 0, 3) -x(/(ab|ca)+/, 'caabbc', 0, 4) -x(/(ab|ca)+/, 'aabca', 1, 5) -x(/(ab|ca)+/, 'abzca', 0, 2) -x(/(a|bab)+/, 'ababa', 0, 5) -x(/(a|bab)+/, 'ba', 1, 2) -x(/(a|bab)+/, 'baaaba', 1, 4) -x(/(?:a|b)(?:a|b)/, 'ab', 0, 2) -x(/(?:a*|b*)(?:a*|b*)/, 'aaabbb', 0, 3) -x(/(?:a*|b*)(?:a+|b+)/, 'aaabbb', 0, 6) -x(/(?:a+|b+){2}/, 'aaabbb', 0, 6) -x(/h{0,}/, 'hhhh', 0, 4) -x(/(?:a+|b+){1,2}/, 'aaabbb', 0, 6) -n(/ax{2}*a/, '0axxxa1') -n(/a.{0,2}a/, "0aXXXa0") -n(/a.{0,2}?a/, "0aXXXa0") -n(/a.{0,2}?a/, "0aXXXXa0") -x(/^a{2,}?a$/, "aaa", 0, 3) -x(/^[a-z]{2,}?$/, "aaa", 0, 3) -x(/(?:a+|\Ab*)cc/, 'cc', 0, 2) -n(/(?:a+|\Ab*)cc/, 'abcc') -x(/(?:^a+|b+)*c/, 'aabbbabc', 6, 8) -x(/(?:^a+|b+)*c/, 'aabbbbc', 0, 7) -x(/a|(?i)c/, 'C', 0, 1) -x(/(?i)c|a/, 'C', 0, 1) -i(/(?i)c|a/, 'A', 0, 1) # different spec. -x(/(?i:c)|a/, 'C', 0, 1) -n(/(?i:c)|a/, 'A') -x(/[abc]?/, 'abc', 0, 1) -x(/[abc]*/, 'abc', 0, 3) -x(/[^abc]*/, 'abc', 0, 0) -n(/[^abc]+/, 'abc') -x(/a??/, 'aaa', 0, 0) -x(/ba??b/, 'bab', 0, 3) -x(/a*?/, 'aaa', 0, 0) -x(/ba*?/, 'baa', 0, 1) -x(/ba*?b/, 'baab', 0, 4) -x(/a+?/, 'aaa', 0, 1) -x(/ba+?/, 'baa', 0, 2) -x(/ba+?b/, 'baab', 0, 4) -x(/(?:a?)??/, 'a', 0, 0) -x(/(?:a??)?/, 'a', 0, 0) -x(/(?:a?)+?/, 'aaa', 0, 1) -x(/(?:a+)??/, 'aaa', 0, 0) -x(/(?:a+)??b/, 'aaab', 0, 4) -i(/(?:ab)?{2}/, '', 0, 0) # GNU regex bug -x(/(?:ab)?{2}/, 'ababa', 0, 4) -x(/(?:ab)*{0}/, 'ababa', 0, 0) -x(/(?:ab){3,}/, 'abababab', 0, 8) -n(/(?:ab){3,}/, 'abab') -x(/(?:ab){2,4}/, 'ababab', 0, 6) -x(/(?:ab){2,4}/, 'ababababab', 0, 8) -x(/(?:ab){2,4}?/, 'ababababab', 0, 4) -x(/(?:ab){,}/, 'ab{,}', 0, 5) -x(/(?:abc)+?{2}/, 'abcabcabc', 0, 6) -x(/(?:X*)(?i:xa)/, 'XXXa', 0, 4) -x(/(d+)([^abc]z)/, 'dddz', 0, 4) -x(/([^abc]*)([^abc]z)/, 'dddz', 0, 4) -x(/(\w+)(\wz)/, 'dddz', 0, 4) -x(/(a)/, 'a', 0, 1, 1) -x(/(ab)/, 'ab', 0, 2, 1) -x(/((ab))/, 'ab', 0, 2) -x(/((ab))/, 'ab', 0, 2, 1) -x(/((ab))/, 'ab', 0, 2, 2) -x(/((((((((((((((((((((ab))))))))))))))))))))/, 'ab', 0, 2, 20) -x(/(ab)(cd)/, 'abcd', 0, 2, 1) -x(/(ab)(cd)/, 'abcd', 2, 4, 2) -x(/()(a)bc(def)ghijk/, 'abcdefghijk', 3, 6, 3) -x(/(()(a)bc(def)ghijk)/, 'abcdefghijk', 3, 6, 4) -x(/(^a)/, 'a', 0, 1) -x(/(a)|(a)/, 'ba', 1, 2, 1) -x(/(^a)|(a)/, 'ba', 1, 2, 2) -x(/(a?)/, 'aaa', 0, 1, 1) -x(/(a*)/, 'aaa', 0, 3, 1) -x(/(a*)/, '', 0, 0, 1) -x(/(a+)/, 'aaaaaaa', 0, 7, 1) -x(/(a+|b*)/, 'bbbaa', 0, 3, 1) -x(/(a+|b?)/, 'bbbaa', 0, 1, 1) -x(/(abc)?/, 'abc', 0, 3, 1) -x(/(abc)*/, 'abc', 0, 3, 1) -x(/(abc)+/, 'abc', 0, 3, 1) -x(/(xyz|abc)+/, 'abc', 0, 3, 1) -x(/([xyz][abc]|abc)+/, 'abc', 0, 3, 1) -x(/((?i:abc))/, 'AbC', 0, 3, 1) -x(/(abc)(?i:\1)/, 'abcABC', 0, 6) -x(/((?m:a.c))/, "a\nc", 0, 3, 1) -x(/((?=az)a)/, 'azb', 0, 1, 1) -x(/abc|(.abd)/, 'zabd', 0, 4, 1) -x(/(?:abc)|(ABC)/, 'abc', 0, 3) -x(/(?i:(abc))|(zzz)/, 'ABC', 0, 3, 1) -x(/a*(.)/, 'aaaaz', 4, 5, 1) -x(/a*?(.)/, 'aaaaz', 0, 1, 1) -x(/a*?(c)/, 'aaaac', 4, 5, 1) -x(/[bcd]a*(.)/, 'caaaaz', 5, 6, 1) -x(/(\Abb)cc/, 'bbcc', 0, 2, 1) -n(/(\Abb)cc/, 'zbbcc') -x(/(^bb)cc/, 'bbcc', 0, 2, 1) -n(/(^bb)cc/, 'zbbcc') -x(/cc(bb$)/, 'ccbb', 2, 4, 1) -n(/cc(bb$)/, 'ccbbb') -#n(/\1/, 'a') # compile error on Oniguruma -n(/(\1)/, '') -n(/\1(a)/, 'aa') -n(/(a(b)\1)\2+/, 'ababb') -n(/(?:(?:\1|z)(a))+$/, 'zaa') -x(/(?:(?:\1|z)(a))+$/, 'zaaa', 0, 4) -x(/(a)(?=\1)/, 'aa', 0, 1) -n(/(a)$|\1/, 'az') -x(/(a)\1/, 'aa', 0, 2) -n(/(a)\1/, 'ab') -x(/(a?)\1/, 'aa', 0, 2) -x(/(a??)\1/, 'aa', 0, 0) -x(/(a*)\1/, 'aaaaa', 0, 4) -x(/(a*)\1/, 'aaaaa', 0, 2, 1) -x(/a(b*)\1/, 'abbbb', 0, 5) -x(/a(b*)\1/, 'ab', 0, 1) -x(/(a*)(b*)\1\2/, 'aaabbaaabb', 0, 10) -x(/(a*)(b*)\2/, 'aaabbbb', 0, 7) -x(/(((((((a*)b))))))c\7/, 'aaabcaaa', 0, 8) -x(/(((((((a*)b))))))c\7/, 'aaabcaaa', 0, 3, 7) -x(/(a)(b)(c)\2\1\3/, 'abcbac', 0, 6) -x(/([a-d])\1/, 'cc', 0, 2) -x(/(\w\d\s)\1/, 'f5 f5 ', 0, 6) -n(/(\w\d\s)\1/, 'f5 f5') -x(/(who|[a-c]{3})\1/, 'whowho', 0, 6) -x(/...(who|[a-c]{3})\1/, 'abcwhowho', 0, 9) -x(/(who|[a-c]{3})\1/, 'cbccbc', 0, 6) -x(/(^a)\1/, 'aa', 0, 2) -n(/(^a)\1/, 'baa') -n(/(a$)\1/, 'aa') -n(/(ab\Z)\1/, 'ab') -x(/(a*\Z)\1/, 'a', 1, 1) -x(/.(a*\Z)\1/, 'ba', 1, 2) -x(/(.(abc)\2)/, 'zabcabc', 0, 7, 1) -x(/(.(..\d.)\2)/, 'z12341234', 0, 9, 1) -x(/((?i:az))\1/, 'AzAz', 0, 4) -n(/((?i:az))\1/, 'Azaz') -x(/(?<=a)b/, 'ab', 1, 2) -n(/(?<=a)b/, 'bb') -x(/(?<=a|b)b/, 'bb', 1, 2) -x(/(?<=a|bc)b/, 'bcb', 2, 3) -x(/(?<=a|bc)b/, 'ab', 1, 2) -x(/(?<=a|bc||defghij|klmnopq|r)z/, 'rz', 1, 2) -x(/(a)\g<1>/, 'aa', 0, 2) -x(/(?a)/, 'a', 0, 1) -x(/(?ab)\g/, 'abab', 0, 4) -x(/(?.zv.)\k/, 'azvbazvb', 0, 8) -x(/(?<=\g)|-\zEND (?XyZ)/, 'XyZ', 3, 3) -x(/(?|a\g)+/, '', 0, 0) -x(/(?|\(\g\))+$/, '()(())', 0, 6) -x(/\g(?.){0}/, 'X', 0, 1, 1) -x(/\g(abc|df(?.YZ){2,8}){0}/, 'XYZ', 0, 3) -x(/\A(?(a\g)|)\z/, 'aaaa', 0, 4) -x(/(?|\g\g)\z|\zEND (?a|(b)\g)/, 'bbbbabba', 0, 8) -x(/(?\w+\sx)a+\k/, ' fg xaaaaaaaafg x', 2, 18) -x(/(z)()()(?<_9>a)\g<_9>/, 'zaa', 2, 3, 1) -x(/(.)(((?<_>a)))\k<_>/, 'zaa', 0, 3) -x(/((?\d)|(?\w))(\k|\k)/, 'ff', 0, 2) -x(/(?:(?)|(?efg))\k/, '', 0, 0) -x(/(?:(?abc)|(?efg))\k/, 'abcefgefg', 3, 9) -n(/(?:(?abc)|(?efg))\k/, 'abcefg') -x(/(?:(?.)|(?..)|(?...)|(?....)|(?.....)|(?......)|(?.......)|(?........)|(?.........)|(?..........)|(?...........)|(?............)|(?.............)|(?..............))\k$/, 'a-pyumpyum', 2, 10) -x(/(?:(?.)|(?..)|(?...)|(?....)|(?.....)|(?......)|(?.......)|(?........)|(?.........)|(?..........)|(?...........)|(?............)|(?.............)|(?..............))\k$/, 'xxxxabcdefghijklmnabcdefghijklmn', 4, 18, 14) -x(/(?)(?)(?)(?)(?)(?)(?)(?)(?)(?)(?)(?)(?)(?)(?)(?aaa)(?)$/, 'aaa', 0, 3, 16) -x(/(?a|\(\g\))/, 'a', 0, 1) -x(/(?a|\(\g\))/, '((((((a))))))', 0, 13) -x(/(?a|\(\g\))/, '((((((((a))))))))', 0, 17, 1) -x(/\g|\zEND(?.*abc$)/, 'abcxxxabc', 0, 9) -x(/\g<1>|\zEND(.a.)/, 'bac', 0, 3) -x(/\g<_A>\g<_A>|\zEND(.a.)(?<_A>.b.)/, 'xbxyby', 3, 6, 1) -x(/\A(?:\g|\g|\zEND (?a|c\gc)(?b|d\gd))$/, 'cdcbcdc', 0, 7) -x(/\A(?|a\g)\z|\zEND (?\g)/, 'aaaa', 0, 4) -x(/(?(a|b\gc){3,5})/, 'baaaaca', 1, 5) -x(/(?(a|b\gc){3,5})/, 'baaaacaaaaa', 0, 10) -x(/(?\(([^\(\)]++|\g)*+\))/, '((a))', 0, 5) -x(/()*\1/, '', 0, 0) -x(/(?:()|())*\1\2/, '', 0, 0) -x(/(?:\1a|())*/, 'a', 0, 0, 1) -x(/x((.)*)*x/, '0x1x2x3', 1, 6) -x(/x((.)*)*x(?i:\1)\Z/, '0x1x2x1X2', 1, 9) -x(/(?:()|()|()|()|()|())*\2\5/, '', 0, 0) -x(/(?:()|()|()|(x)|()|())*\2b\5/, 'b', 0, 1) - -r(//, '', 0) -r(/a/, 'a', 0) -r(/a/, 'a', 0, 1) -r(/b/, 'abc', 1) -r(/b/, 'abc', 1, 2) -r(/./, 'a', 0) -r(/.*/, 'abcde fgh', 9) -r(/a*/, 'aaabbc', 6) -r(/a+/, 'aaabbc', 2) -r(/a?/, 'bac', 3) -r(/a??/, 'bac', 3) -r(/abcde/, 'abcdeavcd', 0) -r(/\w\d\s/, ' a2 aa $3 ', 2) -r(/[c-f]aa[x-z]/, '3caaycaaa', 1) -r(/(?i:fG)g/, 'fGgFggFgG', 3) -r(/a|b/, 'b', 0) -r(/ab|bc|cd/, 'bcc', 0) -r(/(ffy)\1/, 'ffyffyffy', 3) -r(/|z/, 'z', 1) -r(/^az/, 'azaz', 0) -r(/az$/, 'azaz', 2) -r(/(((.a)))\3/, 'zazaaa', 0) -r(/(ac*?z)\1/, 'aacczacczacz', 1) -r(/aaz{3,4}/, 'bbaabbaazzzaazz', 6) -r(/\000a/, "b\000a", 1) -r(/ff\xfe/, "fff\xfe", 1) -r(/...abcdefghijklmnopqrstuvwxyz/, 'zzzzzabcdefghijklmnopqrstuvwxyz', 2) -end - -def test_euc(enc) -$KCODE = enc - -x(/\xED\xF2/, "\xed\xf2", 0, 2) -x(//, '、「', 0, 0) -x(/、「/, '、「', 0, 2) -n(/、、/, '、「') -x(/、ヲ、ヲ/, '、ヲ、ヲ', 0, 4) -x(/、「、、、ヲ/, '、「、、、ヲ', 0, 6) -x(/、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ/, '、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ', 0, 70) -x(/、「/, '、、、「', 2, 4) -x(/、、、ヲ/, '、「、、、ヲ', 2, 6) -x(/\xca\xb8/, "\xca\xb8", 0, 2) -x(/./, '、「', 0, 2) -x(/../, '、ォ、ュ', 0, 4) -x(/(?u)\w/, '、ェ', 0, 2) -n(/(?u)\W/, '、「') -x(/(?u)[\W]/, '、ヲ$', 2, 3) -x(/\S/, '、ス', 0, 2) -x(/\S/, 'エチ', 0, 2) -x(/\b/, 'オ、 ', 0, 0) -x(/\b/, ' 、ロ', 1, 1) -x(/\B/, '、サ、ス ', 2, 2) -x(/\B/, '、ヲ ', 3, 3) -x(/\B/, ' 、、', 0, 0) -x(/[、ソ、チ]/, '、チ', 0, 2) -n(/[、ハ、ヒ]/, '、フ') -x(/[、ヲ-、ェ]/, '、ィ', 0, 2) -n(/[^、ア]/, '、ア') -x(/(?u)[\w]/, '、ヘ', 0, 2) -n(/[\d]/, '、ユ') -x(/[\D]/, '、マ', 0, 2) -n(/[\s]/, '、ッ') -x(/[\S]/, '、リ', 0, 2) -x(/(?u)[\w\d]/, '、', 0, 2) -x(/(?u)[\w\d]/, ' 、', 3, 5) -#x(/[\xa4\xcf-\xa4\xd3]/, "\xa4\xd0", 0, 2) # diff spec with GNU regex. -#n(/[\xb6\xe7-\xb6\xef]/, "\xb6\xe5") # diff spec with GNU regex. -n(/(?u)\wオエシヨ/, ' オエシヨ') -x(/(?u)オエ\Wシヨ/, 'オエ シヨ', 0, 5) -x(/、「.、、.、ヲ/, '、「、「、、、、、ヲ', 0, 10) -x(/(?u).\w、ヲ\W..、セ/, '、ィ、ヲ、ヲ 、ヲ、セ、セ', 0, 13) -x(/(?u)\s\w、ウ、ウ、ウ/, ' 、ウ、ウ、ウ、ウ', 0, 9) -x(/、「、「.、ア/, '、「、「、ア、ア', 0, 8) -n(/.、、/, '、、、ィ') -x(/.、ェ/, '、ェ、ェ', 0, 4) -x(/^、「/, '、「', 0, 2) -x(/^、$/, '、', 0, 2) -x(/(?u)^\w$/, '、ヒ', 0, 2) -x(/(?u)^\w、ォ、ュ、ッ、ア、ウ$/, 'z、ォ、ュ、ッ、ア、ウ', 0, 11) -x(/(?u)^\w...、ヲ、ィ、ェ$/, 'z、「、、、ヲ、ヲ、ィ、ェ', 0, 13) -x(/(?u)\w\w\s\W、ェ、ェ、ェ\d/, 'a、ェ 、ェ、ェ、ェ4', 0, 12) -x(/\A、ソ、チ、ト/, '、ソ、チ、ト', 0, 6) -x(/、爨皃秉Z/, '、爨皃', 0, 6) -x(/、ォ、ュ、ッ\z/, '、ォ、ュ、ッ', 0, 6) -x(/、ォ、ュ、ッ\Z/, "、ォ、ュ、ッ\n", 0, 6) -x(/\G、ン、ヤ/, '、ン、ヤ', 0, 4) -n(/\G、ィ/, '、ヲ、ィ、ェ') -n(/、ネ、ニ\G/, '、ネ、ニ') -n(/、゙、゚\A/, '、゙、゚') -n(/、゙\A、゚/, '、゙、゚') -x(/(?=、サ)、サ/, '、サ', 0, 2) -n(/(?=、ヲ)./, '、、') -x(/(?!、ヲ)、ォ/, '、ォ', 0, 2) -n(/(?!、ネ)、「/, '、ネ') -x(/(?i:、「)/, '、「', 0, 2) -x(/(?i:、ヨ、ル)/, '、ヨ、ル', 0, 4) -n(/(?i:、、)/, '、ヲ') -x(/(?m:、.)/, "、鐔n", 0, 3) -x(/(?m:.、)/, "、゙\n、", 2, 5) -x(/、「?/, '', 0, 0) -x(/ハム?/, 'イス', 0, 0) -x(/ハム?/, 'ハム', 0, 2) -x(/ホフ*/, '', 0, 0) -x(/ホフ*/, 'ホフ', 0, 2) -x(/サメ*/, 'サメサメサメ', 0, 6) -x(/ヌマ*/, 'シッヌマヌマヌマヌマ', 0, 0) -n(/サウ+/, '') -x(/イマ+/, 'イマ', 0, 2) -x(/サ+/, 'ササササ', 0, 8) -x(/、ィ+/, '、ィ、ィ、ヲ、ヲ、ヲ', 0, 4) -x(/、ヲ+/, '、ェ、ヲ、ヲ、ヲ、ヲ', 2, 10) -x(/.?/, '、ソ', 0, 2) -x(/.*/, '、ム、ヤ、ラ、レ', 0, 8) -x(/.+/, '、', 0, 2) -x(/.+/, "、、、ヲ、ィ、ォ\n", 0, 8) -x(/、「|、、/, '、「', 0, 2) -x(/、「|、、/, '、、', 0, 2) -x(/、「、、|、、、ヲ/, '、「、、', 0, 4) -x(/、「、、|、、、ヲ/, '、、、ヲ', 0, 4) -x(/、(?:、ォ、ュ|、ュ、ッ)/, '、、ォ、ュ', 0, 6) -x(/、(?:、ォ、ュ|、ュ、ッ)、ア/, '、、ュ、ッ、ア', 0, 8) -x(/、「、、|(?:、「、ヲ|、「、)/, '、「、', 0, 4) -x(/、「|、、|、ヲ/, '、ィ、ヲ', 2, 4) -x(/、「|、、|、ヲ、ィ|、ェ、ォ、ュ|、ッ|、ア、ウ、オ|、キ、ケ、サ|、ス|、ソ、チ|、ト、ニ、ネ、ハ、ヒ|、フ、ヘ/, '、キ、ケ、サ', 0, 6) -n(/、「|、、|、ヲ、ィ|、ェ、ォ、ュ|、ッ|、ア、ウ、オ|、キ、ケ、サ|、ス|、ソ、チ|、ト、ニ、ネ、ハ、ヒ|、フ、ヘ/, '、ケ、サ') -x(/、「|^、/, '、ヨ、「', 2, 4) -x(/、「|^、/, '、、「', 0, 2) -x(/オエ|\Gシヨ/, '、アシヨオエ', 4, 6) -x(/オエ|\Gシヨ/, 'シヨオエ', 0, 2) -x(/オエ|\Aシヨ/, 'bシヨオエ', 3, 5) -x(/オエ|\Aシヨ/, 'シヨ', 0, 2) -x(/オエ|シヨ\Z/, 'シヨオエ', 2, 4) -x(/オエ|シヨ\Z/, 'シヨ', 0, 2) -x(/オエ|シヨ\Z/, "シヨ\n", 0, 2) -x(/オエ|シヨ\z/, 'シヨオエ', 2, 4) -x(/オエ|シヨ\z/, 'シヨ', 0, 2) -x(/(?u)\w|\s/, '、ェ', 0, 2) -x(/(?u)\w|%/, '%、ェ', 0, 1) -x(/(?u)\w|[&$]/, '、ヲ&', 0, 2) -x(/[、、-、ア]/, '、ヲ', 0, 2) -x(/[、、-、ア]|[^、ォ-、ウ]/, '、「', 0, 2) -x(/[、、-、ア]|[^、ォ-、ウ]/, '、ォ', 0, 2) -x(/[^、「]/, "\n", 0, 1) -x(/(?:、「|[、ヲ-、ュ])|、、、/, '、ヲ、', 0, 2) -x(/(?:、「|[、ヲ-、ュ])|、、、/, '、、、', 0, 4) -x(/、「、、、ヲ|(?=、ア、ア)..、ロ/, '、ア、ア、ロ', 0, 6) -x(/、「、、、ヲ|(?!、ア、ア)..、ロ/, '、「、、、ロ', 0, 6) -x(/(?=、、「)..、「|(?=、、)..、「/, '、、、「', 0, 6) -x(/(?<=、「|、、、ヲ)、、/, '、、、ヲ、、', 4, 6) -n(/(?>、「|、「、、、ィ)、ヲ/, '、「、、、ィ、ヲ') -x(/(?>、「、、、ィ|、「)、ヲ/, '、「、、、ィ、ヲ', 0, 8) -x(/、「?|、、/, '、「', 0, 2) -x(/、「?|、、/, '、、', 0, 0) -x(/、「?|、、/, '', 0, 0) -x(/、「*|、、/, '、「、「', 0, 4) -x(/、「*|、、*/, '、、、「', 0, 0) -x(/、「*|、、*/, '、「、、', 0, 2) -x(/[a、「]*|、、*/, 'a、「、、、、、、', 0, 3) -x(/、「+|、、*/, '', 0, 0) -x(/、「+|、、*/, '、、、、、、', 0, 6) -x(/、「+|、、*/, '、「、、、、、、', 0, 2) -x(/、「+|、、*/, 'a、「、、、、、、', 0, 0) -n(/、「+|、、+/, '') -x(/(、「|、、)?/, '、、', 0, 2) -x(/(、「|、、)*/, '、、、「', 0, 4) -x(/(、「|、、)+/, '、、、「、、', 0, 6) -x(/(、「、、|、ヲ、「)+/, '、ヲ、「、「、、、ヲ、ィ', 0, 8) -x(/(、「、、|、ヲ、ィ)+/, '、ヲ、「、「、、、ヲ、ィ', 4, 12) -x(/(、「、、|、ヲ、「)+/, '、「、「、、、ヲ、「', 2, 10) -x(/(、「、、|、ヲ、「)+/, '、「、、、、ヲ、「', 0, 4) -x(/(、「、、|、ヲ、「)+/, '$$zzzz、「、、、、ヲ、「', 6, 10) -x(/(、「|、、、「、、)+/, '、「、、、「、、、「', 0, 10) -x(/(、「|、、、「、、)+/, '、、、「', 2, 4) -x(/(、「|、、、「、、)+/, '、、、「、「、「、、、「', 2, 8) -x(/(?:、「|、、)(?:、「|、、)/, '、「、、', 0, 4) -x(/(?:、「*|、、*)(?:、「*|、、*)/, '、「、「、「、、、、、、', 0, 6) -x(/(?:、「*|、、*)(?:、「+|、、+)/, '、「、「、「、、、、、、', 0, 12) -x(/(?:、「+|、、+){2}/, '、「、「、「、、、、、、', 0, 12) -x(/(?:、「+|、、+){1,2}/, '、「、「、「、、、、、、', 0, 12) -x(/(?:、「+|\A、、*)、ヲ、ヲ/, '、ヲ、ヲ', 0, 4) -n(/(?:、「+|\A、、*)、ヲ、ヲ/, '、「、、、ヲ、ヲ') -x(/(?:^、「+|、、+)*、ヲ/, '、「、「、、、、、、、「、、、ヲ', 12, 16) -x(/(?:^、「+|、、+)*、ヲ/, '、「、「、、、、、、、、、ヲ', 0, 14) -x(/、ヲ{0,}/, '、ヲ、ヲ、ヲ、ヲ', 0, 8) -x(/、「|(?i)c/, 'C', 0, 1) -x(/(?i)c|、「/, 'C', 0, 1) -x(/(?i:、「)|a/, 'a', 0, 1) -n(/(?i:、「)|a/, 'A') -x(/[、「、、、ヲ]?/, '、「、、、ヲ', 0, 2) -x(/[、「、、、ヲ]*/, '、「、、、ヲ', 0, 6) -x(/[^、「、、、ヲ]*/, '、「、、、ヲ', 0, 0) -n(/[^、「、、、ヲ]+/, '、「、、、ヲ') -x(/、「??/, '、「、「、「', 0, 0) -x(/、、、「??、、/, '、、、「、、', 0, 6) -x(/、「*?/, '、「、「、「', 0, 0) -x(/、、、「*?/, '、、、「、「', 0, 2) -x(/、、、「*?、、/, '、、、「、「、、', 0, 8) -x(/、「+?/, '、「、「、「', 0, 2) -x(/、、、「+?/, '、、、「、「', 0, 4) -x(/、、、「+?、、/, '、、、「、「、、', 0, 8) -x(/(?:ナキ?)??/, 'ナキ', 0, 0) -x(/(?:ナキ??)?/, 'ナキ', 0, 0) -x(/(?:フエ?)+?/, 'フエフエフエ', 0, 2) -x(/(?:ノ+)??/, 'ノノノ', 0, 0) -x(/(?:タ+)??チ/, 'タ翅翅翆', 0, 8) -i(/(?:、「、、)?{2}/, '', 0, 0) # GNU regex bug -x(/(?:オエシヨ)?{2}/, 'オエシヨオエシヨオエ', 0, 8) -x(/(?:オエシヨ)*{0}/, 'オエシヨオエシヨオエ', 0, 0) -x(/(?:オエシヨ){3,}/, 'オエシヨオエシヨオエシヨオエシヨ', 0, 16) -n(/(?:オエシヨ){3,}/, 'オエシヨオエシヨ') -x(/(?:オエシヨ){2,4}/, 'オエシヨオエシヨオエシヨ', 0, 12) -x(/(?:オエシヨ){2,4}/, 'オエシヨオエシヨオエシヨオエシヨオエシヨ', 0, 16) -x(/(?:オエシヨ){2,4}?/, 'オエシヨオエシヨオエシヨオエシヨオエシヨ', 0, 8) -x(/(?:オエシヨ){,}/, 'オエシヨ{,}', 0, 7) -x(/(?:、ォ、ュ、ッ)+?{2}/, '、ォ、ュ、ッ、ォ、ュ、ッ、ォ、ュ、ッ', 0, 12) -x(/(イミ)/, 'イミ', 0, 2, 1) -x(/(イミソ)/, 'イミソ', 0, 4, 1) -x(/((サエヨ))/, 'サエヨ', 0, 4) -x(/((ノソ))/, 'ノソ', 0, 4, 1) -x(/((コニ))/, 'コニ', 0, 4, 2) -x(/((((((((((((((((((((ホフサメ))))))))))))))))))))/, 'ホフサメ', 0, 4, 20) -x(/(、「、、)(、ヲ、ィ)/, '、「、、、ヲ、ィ', 0, 4, 1) -x(/(、「、、)(、ヲ、ィ)/, '、「、、、ヲ、ィ', 4, 8, 2) -x(/()(、「)、、、ヲ(、ィ、ェ、ォ)、ュ、ッ、ア、ウ/, '、「、、、ヲ、ィ、ェ、ォ、ュ、ッ、ア、ウ', 6, 12, 3) -x(/(()(、「)、、、ヲ(、ィ、ェ、ォ)、ュ、ッ、ア、ウ)/, '、「、、、ヲ、ィ、ェ、ォ、ュ、ッ、ア、ウ', 6, 12, 4) -x(/.*(・ユ・ゥ)・。ヲ・゙(・()・キ・螂ソ)・、・/, '・ユ・ゥ・。ヲ・゙・・キ・螂ソ・、・', 10, 18, 2) -x(/(^、「)/, '、「', 0, 2) -x(/(、「)|(、「)/, '、、、「', 2, 4, 1) -x(/(^、「)|(、「)/, '、、、「', 2, 4, 2) -x(/(、「?)/, '、「、「、「', 0, 2, 1) -x(/(、゙*)/, '、゙、゙、゙', 0, 6, 1) -x(/(、ネ*)/, '', 0, 0, 1) -x(/(、+)/, '、、、、、、、', 0, 14, 1) -x(/(、ユ+|、リ*)/, '、ユ、ユ、ユ、リ、リ', 0, 6, 1) -x(/(、「+|、、?)/, '、、、、、、、「、「', 0, 2, 1) -x(/(、「、、、ヲ)?/, '、「、、、ヲ', 0, 6, 1) -x(/(、「、、、ヲ)*/, '、「、、、ヲ', 0, 6, 1) -x(/(、「、、、ヲ)+/, '、「、、、ヲ', 0, 6, 1) -x(/(、オ、キ、ケ|、「、、、ヲ)+/, '、「、、、ヲ', 0, 6, 1) -x(/([、ハ、ヒ、フ][、ォ、ュ、ッ]|、ォ、ュ、ッ)+/, '、ォ、ュ、ッ', 0, 6, 1) -x(/((?i:、「、、、ヲ))/, '、「、、、ヲ', 0, 6, 1) -x(/((?m:、「.、ヲ))/, "、「\n、ヲ", 0, 5, 1) -x(/((?=、「、)、「)/, '、「、、、', 0, 2, 1) -x(/、「、、、ヲ|(.、「、、、ィ)/, '、、「、、、ィ', 0, 8, 1) -x(/、「*(.)/, '、「、「、「、「、', 8, 10, 1) -x(/、「*?(.)/, '、「、「、「、「、', 0, 2, 1) -x(/、「*?(、)/, '、「、「、「、「、', 8, 10, 1) -x(/[、、、ヲ、ィ]、「*(.)/, '、ィ、「、「、「、「、', 10, 12, 1) -x(/(\A、、、、)、ヲ、ヲ/, '、、、、、ヲ、ヲ', 0, 4, 1) -n(/(\A、、、、)、ヲ、ヲ/, '、、、、、、ヲ、ヲ') -x(/(^、、、、)、ヲ、ヲ/, '、、、、、ヲ、ヲ', 0, 4, 1) -n(/(^、、、、)、ヲ、ヲ/, '、、、、、、ヲ、ヲ') -x(/、、(、、$)/, '、、、、', 4, 8, 1) -n(/、、(、、$)/, '、、、、、') -x(/(フオ)\1/, 'フオフオ', 0, 4) -n(/(フオ)\1/, 'フオノ') -x(/(カ?)\1/, 'カカ', 0, 4) -x(/(カ??)\1/, 'カカ', 0, 0) -x(/(カ*)\1/, 'カカカカカ', 0, 8) -x(/(カ*)\1/, 'カカカカカ', 0, 4, 1) -x(/、「(、、*)\1/, '、「、、、、、、、、', 0, 10) -x(/、「(、、*)\1/, '、「、、', 0, 2) -x(/(、「*)(、、*)\1\2/, '、「、「、「、、、、、「、「、「、、、、', 0, 20) -x(/(、「*)(、、*)\2/, '、「、「、「、、、、、、、、', 0, 14) -x(/(、「*)(、、*)\2/, '、「、「、「、、、、、、、、', 6, 10, 2) -x(/(((((((、ン*)、レ))))))、ヤ\7/, '、ン、ン、ン、レ、ヤ、ン、ン、ン', 0, 16) -x(/(((((((、ン*)、レ))))))、ヤ\7/, '、ン、ン、ン、レ、ヤ、ン、ン、ン', 0, 6, 7) -x(/(、マ)(、メ)(、ユ)\2\1\3/, '、マ、メ、ユ、メ、マ、ユ', 0, 12) -x(/([、ュ-、ア])\1/, '、ッ、ッ', 0, 4) -x(/(?u)(\w\d\s)\1/, '、「5 、「5 ', 0, 8) -n(/(?u)(\w\d\s)\1/, '、「5 、「5') -x(/(テッ。ゥ|[、「-、ヲ]{3})\1/, 'テッ。ゥテッ。ゥ', 0, 8) -x(/...(テッ。ゥ|[、「-、ヲ]{3})\1/, '、「a、「テッ。ゥテッ。ゥ', 0, 13) -x(/(テッ。ゥ|[、「-、ヲ]{3})\1/, '、ヲ、、、ヲ、ヲ、、、ヲ', 0, 12) -x(/(^、ウ)\1/, '、ウ、ウ', 0, 4) -n(/(^、)\1/, '、皃爨') -n(/(、「$)\1/, '、「、「') -n(/(、「、、\Z)\1/, '、「、、') -x(/(、「*\Z)\1/, '、「', 2, 2) -x(/.(、「*\Z)\1/, '、、、「', 2, 4) -x(/(.(、荀、、)\2)/, 'z、荀、、讀荀、、', 0, 13, 1) -x(/(.(..\d.)\2)/, '、「12341234', 0, 10, 1) -x(/((?i:、「v、コ))\1/, '、「v、コ、「v、コ', 0, 10) -x(/(?<カ、ォ>ハム|\(\g<カ、ォ>\))/, '((((((ハム))))))', 0, 14) -x(/\A(?:\g<ー、_1>|\g<アセ_2>|\zスェホサ (?<ー、_1>エム|シォ\g<アセ_2>シォ)(?<アセ_2>コ゚|ハサァ\g<ー、_1>ハサァ))$/, 'ハサァシォハサァシォコ゚シォハサァシォハサァ', 0, 26) -x(/[[、メ、ユ]]/, '、ユ', 0, 2) -x(/[[、、、ェ、ヲ]、ォ]/, '、ォ', 0, 2) -n(/[[^、「]]/, '、「') -n(/[^[、「]]/, '、「') -x(/[^[^、「]]/, '、「', 0, 2) -x(/[[、ォ、ュ、ッ]&&、ュ、ッ]/, '、ッ', 0, 2) -n(/[[、ォ、ュ、ッ]&&、ュ、ッ]/, '、ォ') -n(/[[、ォ、ュ、ッ]&&、ュ、ッ]/, '、ア') -x(/[、「-、&&、、-、&&、ヲ-、]/, '、', 0, 2) -n(/[^、「-、&&、、-、&&、ヲ-、]/, '、') -x(/[[^、「&&、「]&&、「-、]/, '、、', 0, 2) -n(/[[^、「&&、「]&&、「-、]/, '、「') -x(/[[^、「-、&&、、、ヲ、ィ、ェ]&&[^、ヲ-、ォ]]/, '、ュ', 0, 2) -n(/[[^、「-、&&、、、ヲ、ィ、ェ]&&[^、ヲ-、ォ]]/, '、、') -x(/[^[^、「、、、ヲ]&&[^、ヲ、ィ、ェ]]/, '、ヲ', 0, 2) -x(/[^[^、「、、、ヲ]&&[^、ヲ、ィ、ェ]]/, '、ィ', 0, 2) -n(/[^[^、「、、、ヲ]&&[^、ヲ、ィ、ェ]]/, '、ォ') -x(/[、「-&&-、「]/, '-', 0, 1) -x(/[^[^a-z、「、、、ヲ]&&[^bcdefg、ヲ、ィ、ェ]q-w]/, '、ィ', 0, 2) -x(/[^[^a-z、「、、、ヲ]&&[^bcdefg、ヲ、ィ、ェ]g-w]/, 'f', 0, 1) -x(/[^[^a-z、「、、、ヲ]&&[^bcdefg、ヲ、ィ、ェ]g-w]/, 'g', 0, 1) -n(/[^[^a-z、「、、、ヲ]&&[^bcdefg、ヲ、ィ、ェ]g-w]/, '2') -x(/a・ミ。シ・ク・逾、ホ・タ・ヲ・・。シ・ノ<\/b>/, 'a・ミ。シ・ク・逾、ホ・タ・ヲ・・。シ・ノ', 0, 32) -x(/.・ミ。シ・ク・逾、ホ・タ・ヲ・・。シ・ノ<\/b>/, 'a・ミ。シ・ク・逾、ホ・タ・ヲ・・。シ・ノ', 0, 32) - -r(/、「/, '、「', 0) -r(/、「/, '、「', 0, 2) -r(/、、/, '、「、、、ヲ', 2) -r(/、、/, '、「、、、ヲ', 2, 4) -r(/./, '、「', 0) -r(/.*/, '、「、、、ヲ、ィ、ェ 、ォ、ュ、ッ', 17) -r(/.*、ィ、ェ/, '、「、、、ヲ、ィ、ェ 、ォ、ュ、ッ', 6) -r(/、「*/, '、「、「、「、、、、、ヲ', 12) -r(/、「+/, '、「、「、「、、、、、ヲ', 4) -r(/、「?/, '、、、「、ヲ', 6) -r(/チエ??/, 'ノ鮹エハム', 6) -r(/aハユcエチe/, 'aハユcエチeavcd', 0) -r(/(?u)\w\d\s/, ' 、「2 、ヲ、ヲ $3 ', 2) -r(/[、ヲ-、ェ]、「、「[、ネ-、]/, '3、ヲ、「、「、ハ、ヲ、「、「、「', 1) -r(/、「|、、/, '、、', 0) -r(/、「、、|、、、ヲ|、ヲ、ィ/, '、、、ヲ、ヲ', 0) -r(/(、ネ、ネ、チ)\1/, '、ネ、ネ、チ、ネ、ネ、チ、ネ、ネ、チ', 6) -r(/|、ィ/, '、ィ', 2) -r(/^、「、コ/, '、「、コ、「、コ', 0) -r(/、「、コ$/, '、「、コ、「、コ', 4) -r(/(((.、「)))\3/, 'z、「z、「、「、「', 0) -r(/(、「、ヲ*?、)\1/, '、「、「、ヲ、ヲ、、「、ヲ、ヲ、、「、ヲ、', 2) -r(/、「、「、{3,4}/, '、ニ、ニ、「、「、、、、、「、「、、、、「、「、、「、「、', 12) -r(/\000、「/, "、、\000、「", 2) -r(/、ネ、ネ\xfe\xfe/, "、ネ、ネ、ネ\xfe\xfe", 2) -r(/...、「、、、ヲ、ィ、ェ、ォ、ュ、ッ、ア、ウ、オ、キ、ケ、サ、ス/, 'zzzzz、「、、、ヲ、ィ、ェ、ォ、ュ、ッ、ア、ウ、オ、キ、ケ、サ、ス', 2) -end - -test_sb('ASCII') -test_sb('EUC') -test_sb('SJIS') -test_sb('UTF-8') -test_euc('EUC') - - -# UTF-8 (by UENO Katsuhiro) -$KCODE = 'UTF-8' - -x(/\w/u, "\xc3\x81", 0, 2) -n(/\W/u, "\xc3\x81") -x(/[\w]/u, "\xc3\x81", 0, 2) -x(/./u, "\xfe", 0, 1) -x(/\xfe/u, "\xfe", 0, 1) -x(/\S*/u, "\xfe", 0, 1) -x(/\s*/u, "\xfe", 0, 0) -n(/\w+/u, "\xfe") -x(/\W+/u, "\xfe\xff", 0, 2) -x(/[\xfe]/u, "aaa\xfe", 3, 4) -x(/[\xff\xfe]/u, "\xff\xfe", 0, 1) -x(/[a-c\xff\xfe]+/u, "\xffabc\xfe", 0, 5) - -s = "\xe3\x81\x82\xe3\x81\x81\xf0\x90\x80\x85\xe3\x81\x8a\xe3\x81\x85" -x(/[\xc2\x80-\xed\x9f\xbf]+/u, s, 0, 6) - -s = "\xf0\x90\x80\x85\xe3\x81\x82" -x(/[\xc2\x80-\xed\x9f\xbf]/u, s, 4, 7) - -s = "\xed\x9f\xbf" -n(/[\xc2\x80-\xed\x9f\xbe]/u, s) - -s = "\xed\x9f\xbf" -n(/[\xc2\x80-\xed\x9f\xbe]/u, s) - -s = "\xed\x9f\xbf" -n(/[\xc2\x80-\xed\x9f\xbe]/u, s) - -s = "\xed\x9f\xbf" -n(/[\xc3\xad\xed\x9f\xbe]/u, s) - -s = "\xed\x9f\xbf" -n(/[\xc4\x80-\xed\x9f\xbe]/u, s) - -s = "\xed\x9f\xbf\xf0\x90\x80\x85\xed\x9f\xbf" -x(/[^\xc2\x80-\xed\x9f\xbe]/u, s, 0, 3) - -s = "\xed\x9f\xbf" -x(/[^\xc3\xad\xed\x9f\xbe]/u, s, 0, 3) - -s = "\xed\x9f\xbf\xf0\x90\x80\x85\xed\x9f\xbf" -x(/[^\xc4\x80-\xed\x9f\xbe]/u, s, 0, 3) - -s = "\xc3\xbe\xc3\xbf" -n(/[\xfe\xff\xc3\x80]/u, s) - -s = "\xc3\xbe" -x(/[\xc2\xa0-\xc3\xbe]/u, s, 0, 2) - -s = "sssss" -x(/s+/iu, s, 0, 5) - -s = "SSSSS" -x(/s+/iu, s, 0, 5) - -reg = Regexp.new("\\x{fb40}", nil, 'u') -x(reg, "\357\255\200", 0, 3) -x(/\A\w\z/u, "\357\255\200", 0, 3) -x(/\A\W\z/u, "\357\255\202", 0, 3) -n(/\A\w\z/u, "\357\255\202") - -x(/\303\200/iu, "\303\240", 0, 2) -x(/\303\247/iu, "\303\207", 0, 2) - - - -# Japanese long text. -$KCODE = 'EUC' - -s = < 0 && /^-win/i =~ ARGV[0]) -ARGV.shift if WINDOWS - -if WINDOWS - REGENC = 'ONIG_ENCODING_SJIS' -else - REGENC = 'ONIG_ENCODING_EUC_JP' -end - -def conv_reg(s) - s.gsub!(/\\/, '\\\\\\\\') #' - s.gsub!(/\?\?/, '?\\\\?') # escape ANSI trigraph (??) - s -end - -def conv_str(s) - if (s[0] == ?') - s = s[1..-2] - return s.gsub(/\\/, '\\\\\\\\') #' - else - return s[1..-2] - end -end - -print(<<"EOS") -/* - * This program was generated by testconv.rb. - */ -#include "config.h" -#ifdef ONIG_ESCAPE_UCHAR_COLLISION -#undef ONIG_ESCAPE_UCHAR_COLLISION -#endif -#include - -#ifdef POSIX_TEST -#include "onigmoposix.h" -#else -#include "onigmo.h" -#endif - -#include - -#define SLEN(s) strlen(s) - -static int nsucc = 0; -static int nfail = 0; -static int nerror = 0; - -static FILE* err_file; - -#ifndef POSIX_TEST -static OnigRegion* region; -#endif - -static void xx(char* pattern, char* str, int from, int to, int mem, int not) -{ - int r; - -#ifdef POSIX_TEST - regex_t reg; - char buf[200]; - regmatch_t pmatch[25]; - - r = regcomp(®, pattern, REG_EXTENDED | REG_NEWLINE); - if (r) { - regerror(r, ®, buf, sizeof(buf)); - fprintf(err_file, "ERROR: %s\\n", buf); - nerror++; - return ; - } - - r = regexec(®, str, reg.re_nsub + 1, pmatch, 0); - if (r != 0 && r != REG_NOMATCH) { - regerror(r, ®, buf, sizeof(buf)); - fprintf(err_file, "ERROR: %s\\n", buf); - nerror++; - return ; - } - - if (r == REG_NOMATCH) { - if (not) { - fprintf(stdout, "OK(N): /%s/ '%s'\\n", pattern, str); - nsucc++; - } - else { - fprintf(stdout, "FAIL: /%s/ '%s'\\n", pattern, str); - nfail++; - } - } - else { - if (not) { - fprintf(stdout, "FAIL(N): /%s/ '%s'\\n", pattern, str); - nfail++; - } - else { - if (pmatch[mem].rm_so == from && pmatch[mem].rm_eo == to) { - fprintf(stdout, "OK: /%s/ '%s'\\n", pattern, str); - nsucc++; - } - else { - fprintf(stdout, "FAIL: /%s/ '%s' %d-%d : %d-%d\\n", pattern, str, - (int)from, (int)to, (int)pmatch[mem].rm_so, (int)pmatch[mem].rm_eo); - nfail++; - } - } - } - regfree(®); - -#else - regex_t* reg; - OnigErrorInfo einfo; - OnigSyntaxType syn = *ONIG_SYNTAX_DEFAULT; - - /* ONIG_OPTION_OFF(syn.options, ONIG_OPTION_ASCII_RANGE); */ - - r = onig_new(®, (UChar* )pattern, (UChar* )(pattern + SLEN(pattern)), - ONIG_OPTION_DEFAULT, #{REGENC}, &syn, &einfo); - if (r) { - char s[ONIG_MAX_ERROR_MESSAGE_LEN]; - onig_error_code_to_str((UChar* )s, r, &einfo); - fprintf(err_file, "ERROR: %s\\n", s); - nerror++; - return ; - } - - r = onig_search(reg, (UChar* )str, (UChar* )(str + SLEN(str)), - (UChar* )str, (UChar* )(str + SLEN(str)), - region, ONIG_OPTION_NONE); - if (r < ONIG_MISMATCH) { - char s[ONIG_MAX_ERROR_MESSAGE_LEN]; - onig_error_code_to_str((UChar* )s, r); - fprintf(err_file, "ERROR: %s\\n", s); - nerror++; - return ; - } - - if (r == ONIG_MISMATCH) { - if (not) { - fprintf(stdout, "OK(N): /%s/ '%s'\\n", pattern, str); - nsucc++; - } - else { - fprintf(stdout, "FAIL: /%s/ '%s'\\n", pattern, str); - nfail++; - } - } - else { - if (not) { - fprintf(stdout, "FAIL(N): /%s/ '%s'\\n", pattern, str); - nfail++; - } - else { - if (region->beg[mem] == from && region->end[mem] == to) { - fprintf(stdout, "OK: /%s/ '%s'\\n", pattern, str); - nsucc++; - } - else { - fprintf(stdout, "FAIL: /%s/ '%s' %d-%d : %d-%d\\n", pattern, str, - (int)from, (int)to, (int)region->beg[mem], (int)region->end[mem]); - nfail++; - } - } - } - onig_free(reg); -#endif -} - -static void x2(char* pattern, char* str, int from, int to) -{ - xx(pattern, str, from, to, 0, 0); -} - -static void x3(char* pattern, char* str, int from, int to, int mem) -{ - xx(pattern, str, from, to, mem, 0); -} - -static void n(char* pattern, char* str) -{ - xx(pattern, str, 0, 0, 0, 1); -} - -extern int main(int argc, char* argv[]) -{ - err_file = stdout; - -#ifdef POSIX_TEST - reg_set_encoding(#{REGENC.sub(/\AONIG_/, 'REG_POSIX_')}); -#else - region = onig_region_new(); -#endif - -EOS - -PAT = '\\/([^\\\\\\/]*(?:\\\\.[^\\\\\\/]*)*)\\/' -CM = '\s*,\s*' -RX2 = %r{\Ax\(#{PAT}#{CM}('[^']*'|"[^"]*")#{CM}(\S+)#{CM}(\S+)\)} -RI2 = %r{\Ai\(#{PAT}#{CM}('[^']*'|"[^"]*")#{CM}(\S+)#{CM}(\S+)\)} -RX3 = %r{\Ax\(#{PAT}#{CM}('[^']*'|"[^"]*")#{CM}(\S+)#{CM}(\S+)#{CM}(\S+)\)} -RN = %r{\An\(#{PAT}#{CM}('[^']*'|"[^"]*")\)} #' - -while line = gets() - if (m = RX2.match(line)) - reg = conv_reg(m[1]) - str = conv_str(m[2]) - printf(" x2(\"%s\", \"%s\", %s, %s);\n", reg, str, m[3], m[4]) - elsif (m = RI2.match(line)) - reg = conv_reg(m[1]) - str = conv_str(m[2]) - printf(" x2(\"%s\", \"%s\", %s, %s);\n", reg, str, m[3], m[4]) - elsif (m = RX3.match(line)) - reg = conv_reg(m[1]) - str = conv_str(m[2]) - printf(" x3(\"%s\", \"%s\", %s, %s, %s);\n", reg, str, m[3], m[4], m[5]) - elsif (m = RN.match(line)) - reg = conv_reg(m[1]) - str = conv_str(m[2]) - printf(" n(\"%s\", \"%s\");\n", reg, str) - else - - end -end - -print(<<'EOS') - fprintf(stdout, - "\nRESULT SUCC: %d, FAIL: %d, ERROR: %d (by Onigmo %s)\n", - nsucc, nfail, nerror, onig_version()); - -#ifndef POSIX_TEST - onig_region_free(region, 1); - onig_end(); -#endif - - return ((nfail == 0 && nerror == 0) ? 0 : -1); -} -EOS - -# END OF SCRIPT diff --git a/vendor/onig/testconvu.rb b/vendor/onig/testconvu.rb deleted file mode 100755 index 384731e..0000000 --- a/vendor/onig/testconvu.rb +++ /dev/null @@ -1,414 +0,0 @@ -#!/usr/local/bin/ruby -# testconvu.rb -# Copyright (C) 2004-2006 K.Kosako (sndgk393 AT ybb DOT ne DOT jp) - -WINDOWS = (ARGV.size > 0 && /^-win/i =~ ARGV[0]) -ARGV.shift if WINDOWS - -BIG_ENDIAN = 1 -LITTLE_ENDIAN = 2 - -def eucjp_char_pos(s, byte_pos) - pos = 0 - i = 0 - while (i < byte_pos) - x = s[i].ord - if ((x >= 0xa1 && x <= 0xfe) || x == 0x8e) - i += 2 - elsif (x == 0x8f) - i += 3 - else - i += 1 - end - pos += 1 - end - return pos -end - -def utf16_byte_pos(endian, s, char_pos) - i = 0 - while (char_pos > 0) - x = (endian == BIG_ENDIAN ? s[i] : s[i+1]).ord - if (x >= 0xd8 && x <= 0xdb) - i += 4 - else - i += 2 - end - char_pos -= 1 - end - return i -end - -def s_escape(s) - q = '' - s.each_byte { |b| - if (b < 0x20 || b >= 0x7f || b == 0x22 || b == 0x5c) - q << sprintf("\\%03o", b) - else - q << b.chr - end - } - q -end - -def conv_to_utf16(endian, s) - begin - if (endian == BIG_ENDIAN) - q = s.encode('UTF-16BE', 'EUC-JP') - else - q = s.encode('UTF-16LE', 'EUC-JP') - end - q.force_encoding('ASCII-8BIT') - rescue Encoding::InvalidByteSequenceError - q = 'Invalid character' - rescue Encoding::UndefinedConversionError - STDERR.printf("Encoding::UndefinedConversionError: [%s]\n", s) - return '' - end - - q << "\000\000" - s_escape(q) -end - -def conv_reg(endian, s) - s = s.gsub(/\\([0-7]{2,3})\\([0-7]{2,3})/) { - $1.to_i(8).chr + $2.to_i(8).chr - } - - s = s.gsub(/\\x([0-9A-Fa-f]{2})\\x([0-9A-Fa-f]{2})/) { - $1.to_i(16).chr + $2.to_i(16).chr - } - - if (endian == BIG_ENDIAN) - s = s.gsub(/(\\[0-7]{2,3})/) { "\\000" + $1 } - s = s.gsub(/(\\x[0-9A-Fa-f]{2})/) { "\\x00" + $1 } - else - s = s.gsub(/(\\[0-7]{2,3})/) { $1 + "\\000" } - s = s.gsub(/(\\x[0-9A-Fa-f]{2})/) { $1 + "\\x00" } - end - - s = s.gsub(/\\/, '\\\\') #' - - if (WINDOWS) - s = s.gsub(/\?\?/, '?\\?') # escape ANSI trigraph - end - conv_to_utf16(endian, s) -end - -def conv_str(endian, s, from, to) - if (s[0] == ?') - s = s[1..-2] - q = s.gsub(/\\/, '\\\\') #' - else - q = s[1..-2] - q.gsub!(/\\n/, "\x0a") - q.gsub!(/\\t/, "\x09") - q.gsub!(/\\v/, "\x0b") - q.gsub!(/\\r/, "\x0d") - q.gsub!(/\\f/, "\x0c") - q.gsub!(/\\a/, "\x07") - q.gsub!(/\\e/, "\x1b") - - q.gsub!(/\\([0-7]{2,3})/) { $1.to_i(8).chr } - q.gsub!(/\\x([0-9A-Fa-f]{2})/) { $1.to_i(16).chr } - end - - q.force_encoding('ASCII-8BIT') - from = from.to_i - to = to.to_i - eucjp_from = eucjp_char_pos(q, from) - eucjp_to = eucjp_char_pos(q, to) - - s = conv_to_utf16(endian, q) - - from = utf16_byte_pos(endian, s, eucjp_from) - to = utf16_byte_pos(endian, s, eucjp_to) - return s, from, to -end - -print(<<"EOS") -/* - * This program was generated by testconv.rb. - */ -#include - -#ifdef POSIX_TEST -#include "onigmoposix.h" -#else -#include "onigmo.h" -#endif - -static int nsucc = 0; -static int nfail = 0; -static int nerror = 0; - -static FILE* err_file; - -#ifndef POSIX_TEST -static OnigRegion* region; -static OnigEncoding ENC; -#endif - -#define ulen(p) onigenc_str_bytelen_null(ENC, (UChar* )p) - -static void uconv(char* from, char* to, int len) -{ - int i; - unsigned char c; - char *q; - - q = to; - - for (i = 0; i < len; i += 2) { - c = (unsigned char )from[i]; - if (c == 0) { - c = (unsigned char )from[i+1]; - if (c < 0x20 || c >= 0x7f || c == 0x5c || c == 0x22) { - sprintf(q, "\\\\%03o", c); - q += 4; - } - else { - sprintf(q, "%c", c); - q++; - } - } - else { - sprintf(q, "\\\\%03o", c); - q += 4; - c = (unsigned char )from[i+1]; - sprintf(q, "\\\\%03o", c); - q += 4; - } - } - - *q = 0; -} - -static void xx(char* pattern, char* str, int from, int to, int mem, int not) -{ - int r; - char cpat[4000], cstr[4000]; - -#ifdef POSIX_TEST - regex_t reg; - char buf[200]; - regmatch_t pmatch[20]; - - uconv(pattern, cpat, ulen(pattern)); - uconv(str, cstr, ulen(str)); - - r = regcomp(®, pattern, REG_EXTENDED | REG_NEWLINE); - if (r) { - regerror(r, ®, buf, sizeof(buf)); - fprintf(err_file, "ERROR: %s\\n", buf); - nerror++; - return ; - } - - r = regexec(®, str, reg.re_nsub + 1, pmatch, 0); - if (r != 0 && r != REG_NOMATCH) { - regerror(r, ®, buf, sizeof(buf)); - fprintf(err_file, "ERROR: %s\\n", buf); - nerror++; - return ; - } - - if (r == REG_NOMATCH) { - if (not) { - fprintf(stdout, "OK(N): /%s/ '%s'\\n", cpat, cstr); - nsucc++; - } - else { - fprintf(stdout, "FAIL: /%s/ '%s'\\n", cpat, cstr); - nfail++; - } - } - else { - if (not) { - fprintf(stdout, "FAIL(N): /%s/ '%s'\\n", cpat, cstr); - nfail++; - } - else { - if (pmatch[mem].rm_so == from && pmatch[mem].rm_eo == to) { - fprintf(stdout, "OK: /%s/ '%s'\\n", cpat, cstr); - nsucc++; - } - else { - fprintf(stdout, "FAIL: /%s/ '%s' %d-%d : %d-%d\\n", cpat, cstr, - (int)from, (int)to, (int)pmatch[mem].rm_so, (int)pmatch[mem].rm_eo); - nfail++; - } - } - } - regfree(®); - -#else - regex_t* reg; - OnigCompileInfo ci; - OnigErrorInfo einfo; - OnigSyntaxType syn = *ONIG_SYNTAX_DEFAULT; - - /* ONIG_OPTION_OFF(syn.options, ONIG_OPTION_ASCII_RANGE); */ - - uconv(pattern, cpat, ulen(pattern)); - uconv(str, cstr, ulen(str)); - -#if 0 - r = onig_new(®, (UChar* )pattern, (UChar* )(pattern + ulen(pattern)), - ONIG_OPTION_DEFAULT, ENC, &syn, &einfo); -#else - ci.num_of_elements = 5; - ci.pattern_enc = ENC; - ci.target_enc = ENC; - ci.syntax = &syn; - ci.option = ONIG_OPTION_DEFAULT; - ci.case_fold_flag = ONIGENC_CASE_FOLD_DEFAULT; - - r = onig_new_deluxe(®, (UChar* )pattern, - (UChar* )(pattern + ulen(pattern)), - &ci, &einfo); -#endif - - if (r) { - char s[ONIG_MAX_ERROR_MESSAGE_LEN]; - onig_error_code_to_str((UChar* )s, r, &einfo); - fprintf(err_file, "ERROR: %s\\n", s); - nerror++; - return ; - } - - r = onig_search(reg, (UChar* )str, (UChar* )(str + ulen(str)), - (UChar* )str, (UChar* )(str + ulen(str)), - region, ONIG_OPTION_NONE); - if (r < ONIG_MISMATCH) { - char s[ONIG_MAX_ERROR_MESSAGE_LEN]; - onig_error_code_to_str((UChar* )s, r); - fprintf(err_file, "ERROR: %s\\n", s); - nerror++; - return ; - } - - if (r == ONIG_MISMATCH) { - if (not) { - fprintf(stdout, "OK(N): /%s/ '%s'\\n", cpat, cstr); - nsucc++; - } - else { - fprintf(stdout, "FAIL: /%s/ '%s'\\n", cpat, cstr); - nfail++; - } - } - else { - if (not) { - fprintf(stdout, "FAIL(N): /%s/ '%s'\\n", cpat, cstr); - nfail++; - } - else { - if (region->beg[mem] == from && region->end[mem] == to) { - fprintf(stdout, "OK: /%s/ '%s'\\n", cpat, cstr); - nsucc++; - } - else { - fprintf(stdout, "FAIL: /%s/ '%s' %d-%d : %d-%d\\n", cpat, cstr, - (int)from, (int)to, (int)region->beg[mem], (int)region->end[mem]); - nfail++; - } - } - } - onig_free(reg); -#endif -} - -static void x2(char* pattern, char* str, int from, int to) -{ - xx(pattern, str, from, to, 0, 0); -} - -static void x3(char* pattern, char* str, int from, int to, int mem) -{ - xx(pattern, str, from, to, mem, 0); -} - -static void n(char* pattern, char* str) -{ - xx(pattern, str, 0, 0, 0, 1); -} - -extern int main(int argc, char* argv[]) -{ - err_file = stdout; - -#ifndef POSIX_TEST - region = onig_region_new(); -#endif -EOS - - -PAT = '\\/([^\\\\\\/]*(?:\\\\.[^\\\\\\/]*)*)\\/' -CM = /\s*,\s*/ -RX2 = %r{\Ax\(#{PAT}#{CM}('[^']*'|"[^"]*")#{CM}(\S+)#{CM}(\S+)\)} -RI2 = %r{\Ai\(#{PAT}#{CM}('[^']*'|"[^"]*")#{CM}(\S+)#{CM}(\S+)\)} -RX3 = %r{\Ax\(#{PAT}#{CM}('[^']*'|"[^"]*")#{CM}(\S+)#{CM}(\S+)#{CM}(\S+)\)} -RN = %r{\An\(#{PAT}#{CM}('[^']*'|"[^"]*")\)} #' - -def convert(endian, fp) - - if (endian == BIG_ENDIAN) - se = 'BE' - else - se = 'LE' - end - - print(<<"EOS") -#ifdef POSIX_TEST - reg_set_encoding(REG_POSIX_ENCODING_UTF16_#{se}); -#else - ENC = ONIG_ENCODING_UTF16_#{se}; -#endif -EOS - - while line = fp.gets() - if (m = RX2.match(line)) - reg = conv_reg(endian, m[1]) - str, from, to = conv_str(endian, m[2], m[3], m[4]) - printf(" x2(\"%s\", \"%s\", %s, %s);\n", reg, str, from, to) - elsif (m = RI2.match(line)) - reg = conv_reg(endian, m[1]) - str, from, to = conv_str(endian, m[2], m[3], m[4]) - printf(" x2(\"%s\", \"%s\", %s, %s);\n", reg, str, from, to) - elsif (m = RX3.match(line)) - reg = conv_reg(endian, m[1]) - str, from, to = conv_str(endian, m[2], m[3], m[4]) - printf(" x3(\"%s\", \"%s\", %s, %s, %s);\n", reg, str, from, to, m[5]) - elsif (m = RN.match(line)) - reg = conv_reg(endian, m[1]) - str, from, to = conv_str(endian, m[2], 0, 0) - printf(" n(\"%s\", \"%s\");\n", reg, str) - else - end - end -end - -File::open(ARGV[0]) { |fp| - convert(BIG_ENDIAN, fp) -} - -#File::open(ARGV[0]) { |fp| -# convert(LITTLE_ENDIAN, fp) -#} - -print(<<'EOS') - fprintf(stdout, - "\nRESULT SUCC: %d, FAIL: %d, ERROR: %d (by Onigmo %s)\n", - nsucc, nfail, nerror, onig_version()); - -#ifndef POSIX_TEST - onig_region_free(region, 1); - onig_end(); -#endif - - return ((nfail == 0 && nerror == 0) ? 0 : -1); -} -EOS - -# END OF SCRIPT diff --git a/vendor/onig/testpy.py b/vendor/onig/testpy.py deleted file mode 100755 index 26d43fe..0000000 --- a/vendor/onig/testpy.py +++ /dev/null @@ -1,1700 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -from __future__ import print_function, unicode_literals -import ctypes -import onigmo -import sys -import io -import locale - -nerror = 0 -nsucc = 0 -nfail = 0 - -# default encoding -onig_encoding = onigmo.ONIG_ENCODING_EUC_JP - -# special syntactic settings -syntax_default = ctypes.byref(onigmo.OnigSyntaxType()) -onigmo.onig_copy_syntax(syntax_default, onigmo.ONIG_SYNTAX_DEFAULT) -onigmo.onig_set_syntax_options(syntax_default, - onigmo.onig_get_syntax_options(syntax_default) - & ~onigmo.ONIG_OPTION_ASCII_RANGE) - - -def get_encoding_name(onigenc): - """Return the name of specified onigmo.OnigEncoding. - - arguments: - enc -- an instance of onigmo.OnigEncoding - """ - name = onigenc[0].name.decode() - encnamemap = {"Windows-31J": "CP932", - "ASCII-8BIT": "ASCII"} - if name in encnamemap: - name = encnamemap[name] - return name - -def is_unicode_encoding(enc): - """Check if the encoding is Unicode encoding. - - arguments: - enc -- encoding name or an instance of onigmo.OnigEncoding - """ - return enc in (onigmo.ONIG_ENCODING_UTF32_LE, - onigmo.ONIG_ENCODING_UTF32_BE, - onigmo.ONIG_ENCODING_UTF16_LE, - onigmo.ONIG_ENCODING_UTF16_BE, - onigmo.ONIG_ENCODING_UTF8, - 'UTF-16LE', 'UTF-16BE', 'UTF-32LE', 'UTF-32BE', 'UTF-8') - -def is_ascii_incompatible_encoding(enc): - """Check if the encoding is ASCII-incompatible encoding. - - arguments: - enc -- encoding name or an instance of onigmo.OnigEncoding - """ - return enc in (onigmo.ONIG_ENCODING_UTF32_LE, - onigmo.ONIG_ENCODING_UTF32_BE, - onigmo.ONIG_ENCODING_UTF16_LE, - onigmo.ONIG_ENCODING_UTF16_BE, - 'UTF-16LE', 'UTF-16BE', 'UTF-32LE', 'UTF-32BE') - - -class strptr: - """a helper class to get a pointer to a string""" - def __init__(self, s): - if not isinstance(s, bytes): - raise TypeError - self._str = s - try: - # CPython 2.x/3.x - self._ptr = ctypes.cast(self._str, ctypes.c_void_p) - except TypeError: - # PyPy 1.x - self._ptr = ctypes.c_void_p(self._str) - - def getptr(self, offset=0): - if offset == -1: # -1 means the end of the string - offset = len(self._str) - elif offset > len(self._str): - raise IndexError - return self._ptr.value + offset - -def cc_to_cb(s, enc, cc): - """convert char count to byte count - - arguments: - s -- unicode string - enc -- encoding name - cc -- char count - """ - if cc == -1: - return -1 - s = s.encode('UTF-32LE') - clen = cc * 4 - if clen > len(s): - raise IndexError - return len(s[:clen].decode('UTF-32LE').encode(enc)) - -def print_result(result, pattern, file=None): - if not file: - file = sys.stdout - print(result + ": ", end='', file=file) - try: - print(pattern, file=file) - except UnicodeEncodeError as e: - print('(' + str(e) + ')') - -def decode_errmsg(msg): - encoding = get_encoding_name(onig_encoding) - if is_ascii_incompatible_encoding(encoding): - encoding = 'ASCII' - return msg.value.decode(encoding, 'replace') - - -class SearchType: - FORWARD = 0 - BACKWARD = 1 - MATCH = 2 - -def xx(pattern, target, s_from, s_to, mem, not_match, - searchtype=SearchType.FORWARD, - gpos=-1, startpos=0, endpos=-1, - syn=syntax_default, opt=onigmo.ONIG_OPTION_DEFAULT, - err=onigmo.ONIG_NORMAL, execerr=onigmo.ONIG_NORMAL): - global nerror - global nsucc - global nfail - - encoding = get_encoding_name(onig_encoding) - - reg = onigmo.OnigRegex() - einfo = onigmo.OnigErrorInfo() - msg = ctypes.create_string_buffer(onigmo.ONIG_MAX_ERROR_MESSAGE_LEN) - - pattern2 = pattern - if not isinstance(pattern, bytes): - pattern2 = pattern.encode(encoding) - patternp = strptr(pattern2) - - target2 = target - if not isinstance(target, bytes): - s_from = cc_to_cb(target, encoding, s_from) - s_to = cc_to_cb(target, encoding, s_to) - gpos = cc_to_cb(target, encoding, gpos) - startpos = cc_to_cb(target, encoding, startpos) - endpos = cc_to_cb(target, encoding, endpos) - target2 = target.encode(encoding) - targetp = strptr(target2) - - # cut very long outputs (used for showing message) - pattern = pattern2.decode(encoding, 'replace') - target = target2.decode(encoding, 'replace') - limit = 100 - if len(pattern) > limit: - pattern = pattern[:limit] + "..." - if len(target) > limit: - target = target[:limit] + "..." - - # Compile - r = onigmo.onig_new(ctypes.byref(reg), - patternp.getptr(), patternp.getptr(-1), - opt, onig_encoding, syn, ctypes.byref(einfo)); - if r != 0: - # Error - onigmo.onig_error_code_to_str(msg, r, ctypes.byref(einfo)) - if r == err: - nsucc += 1 - print_result("OK(E)", "%s (/%s/ '%s')" % \ - (decode_errmsg(msg), pattern, target)) - else: - nerror += 1 - print_result("ERROR", "%s (/%s/ '%s')" % \ - (decode_errmsg(msg), pattern, target), file=sys.stderr) - return - - if err != onigmo.ONIG_NORMAL: - nfail += 1 - print_result("FAIL(E)", "/%s/ '%s'" % (pattern, target)) - onigmo.onig_free(reg) - return - - # Execute - region = onigmo.onig_region_new() - if searchtype == SearchType.FORWARD: - if gpos >= 0: - r = onigmo.onig_search_gpos(reg, - targetp.getptr(), targetp.getptr(-1), - targetp.getptr(gpos), - targetp.getptr(startpos), targetp.getptr(endpos), - region, onigmo.ONIG_OPTION_NONE); - else: - r = onigmo.onig_search(reg, - targetp.getptr(), targetp.getptr(-1), - targetp.getptr(startpos), targetp.getptr(endpos), - region, onigmo.ONIG_OPTION_NONE); - elif searchtype == SearchType.BACKWARD: - if gpos >= 0: - r = onigmo.onig_search_gpos(reg, - targetp.getptr(), targetp.getptr(-1), - targetp.getptr(gpos), - targetp.getptr(endpos), targetp.getptr(startpos), - region, onigmo.ONIG_OPTION_NONE); - else: - r = onigmo.onig_search(reg, - targetp.getptr(), targetp.getptr(-1), - targetp.getptr(endpos), targetp.getptr(startpos), - region, onigmo.ONIG_OPTION_NONE); - elif searchtype == SearchType.MATCH: - r = onigmo.onig_match(reg, targetp.getptr(), targetp.getptr(-1), - targetp.getptr(startpos), - region, onigmo.ONIG_OPTION_NONE); - else: - nerror += 1 - print_result("ERROR", "wrong searchtype", file=sys.stderr) - onigmo.onig_free(reg) - onigmo.onig_region_free(region, 1) - return - - if r < onigmo.ONIG_MISMATCH: - # Error - onigmo.onig_error_code_to_str(msg, r) - if r == execerr: - nsucc += 1 - print_result("OK(E)", "%s (/%s/ '%s')" % \ - (decode_errmsg(msg), pattern, target)) - else: - nerror += 1 - print_result("ERROR", "%s (/%s/ '%s')" % \ - (decode_errmsg(msg), pattern, target), file=sys.stderr) - onigmo.onig_free(reg) - onigmo.onig_region_free(region, 1) - return - - if r == onigmo.ONIG_MISMATCH: - # Not matched - if not_match: - nsucc += 1 - print_result("OK(N)", "/%s/ '%s'" % (pattern, target)) - else: - nfail += 1 - print_result("FAIL", "/%s/ '%s'" % (pattern, target)) - else: - # Matched - if not_match: - nfail += 1 - print_result("FAIL(N)", "/%s/ '%s'" % (pattern, target)) - else: - start = region[0].beg[mem] - end = region[0].end[mem] - if (start == s_from) and (end == s_to): - nsucc += 1 - print_result("OK", "/%s/ '%s'" % (pattern, target)) - else: - nfail += 1 - print_result("FAIL", "/%s/ '%s' %d-%d : %d-%d" % (pattern, target, - s_from, s_to, start, end)) - onigmo.onig_free(reg) - onigmo.onig_region_free(region, 1) - -def x2(pattern, target, s_from, s_to, **kwargs): - xx(pattern, target, s_from, s_to, 0, False, **kwargs) - -def x3(pattern, target, s_from, s_to, mem, **kwargs): - xx(pattern, target, s_from, s_to, mem, False, **kwargs) - -def n(pattern, target, **kwargs): - xx(pattern, target, 0, 0, 0, True, **kwargs) - - -def set_encoding(enc): - """Set the encoding used for testing. - - arguments: - enc -- encoding name or an instance of onigmo.OnigEncoding - """ - global onig_encoding - - if enc == None: - return - if isinstance(enc, onigmo.OnigEncoding): - onig_encoding = enc - else: - encs = {"EUC-JP": onigmo.ONIG_ENCODING_EUC_JP, - "SJIS": onigmo.ONIG_ENCODING_SJIS, - "CP932": onigmo.ONIG_ENCODING_CP932, - "UTF-8": onigmo.ONIG_ENCODING_UTF8, - "UTF-16LE": onigmo.ONIG_ENCODING_UTF16_LE, - "UTF-16BE": onigmo.ONIG_ENCODING_UTF16_BE, - "UTF-32LE": onigmo.ONIG_ENCODING_UTF32_LE, - "UTF-32BE": onigmo.ONIG_ENCODING_UTF32_BE} - onig_encoding = encs[enc.upper()] - -def get_encoding(): - """Get the encoding used for testing.""" - return onig_encoding - -def set_output_encoding(enc=None): - """Set the encoding used for showing the results. - - arguments: - enc -- Encoding name or an instance of onigmo.OnigEncoding. - If omitted, locale.getpreferredencoding() is used. - """ - if enc is None: - enc = locale.getpreferredencoding() - - def get_text_writer(fo, **kwargs): - kw = dict(kwargs) - kw.setdefault('errors', 'backslashreplace') # use \uXXXX style - kw.setdefault('closefd', False) - - if sys.version_info[0] < 3: - # Work around for Python 2.x - # New line conversion isn't needed here. Done in somewhere else. - writer = io.open(fo.fileno(), mode='w', newline='', **kw) - write = writer.write # save the original write() function - enc = locale.getpreferredencoding() - def convwrite(s): - if isinstance(s, bytes): - write(s.decode(enc)) # convert to unistr - else: - write(s) - try: - writer.flush() # needed on Windows - except IOError: - pass - writer.write = convwrite - else: - writer = io.open(fo.fileno(), mode='w', **kw) - return writer - - sys.stdout = get_text_writer(sys.stdout, encoding=enc) - sys.stderr = get_text_writer(sys.stderr, encoding=enc) - - -def set_default_warning_function(): - global _warn_func_ptr - - warning_enc = get_encoding_name(onig_encoding) - if is_ascii_incompatible_encoding(warning_enc): - warning_enc = 'ascii' - def warn_func(str): - print("warning: " + str.decode(warning_enc, 'replace')) - - _warn_func_ptr = onigmo.OnigWarnFunc(warn_func) - onigmo.onig_set_warn_func(_warn_func_ptr) - onigmo.onig_set_verb_warn_func(_warn_func_ptr) - - -def init(enc, outenc=None): - """Setup test target encoding, output encoding and warning function. - - arguments: - enc -- Encoding used for testing. - outenc -- Encoding used for showing messages. - """ - set_encoding(enc) - set_output_encoding(outenc) - set_default_warning_function() - - -def main(): - # encoding of the test target - enc = None - if len(sys.argv) > 1: - enc = sys.argv[1] - - # encoding of stdout/stderr - outenc = None - if len(sys.argv) > 2: - outenc = sys.argv[2] - - # Initialization - try: - init(enc, outenc) - except KeyError: - print("test target encoding error") - print("Usage: python testpy.py [test target encoding] [output encoding]") - sys.exit() - - print(onigmo.onig_copyright()) - - # Copied from onig-5.9.2/testc.c - # '?\?' which is used to avoid trigraph is replaced by '??'. - # Match positions are specified by unit of character instead of byte. - - x2("", "", 0, 0); - x2("^", "", 0, 0); - x2("$", "", 0, 0); - x2("\\G", "", 0, 0); - x2("\\A", "", 0, 0); - x2("\\Z", "", 0, 0); - x2("\\z", "", 0, 0); - x2("^$", "", 0, 0); - x2("\\ca", "\001", 0, 1); - x2("\\C-b", "\002", 0, 1); - x2("\\c\\\\", "\034", 0, 1); - x2("q[\\c\\\\]", "q\034", 0, 2); - x2("", "a", 0, 0); - x2("a", "a", 0, 1); - if onig_encoding == onigmo.ONIG_ENCODING_UTF16_LE: - x2("\\x61\\x00", "a", 0, 1); - elif onig_encoding == onigmo.ONIG_ENCODING_UTF16_BE: - x2("\\x00\\x61", "a", 0, 1); - elif onig_encoding == onigmo.ONIG_ENCODING_UTF32_LE: - x2("\\x61\\x00\\x00\\x00", "a", 0, 1); - elif onig_encoding == onigmo.ONIG_ENCODING_UTF32_BE: - x2("\\x00\\x00\\x00\\x61", "a", 0, 1); - else: - x2("\\x61", "a", 0, 1); - x2("aa", "aa", 0, 2); - x2("aaa", "aaa", 0, 3); - x2("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 0, 35); - x2("ab", "ab", 0, 2); - x2("b", "ab", 1, 2); - x2("bc", "abc", 1, 3); - x2("(?i:#RET#)", "#INS##RET#", 5, 10); - if onig_encoding == onigmo.ONIG_ENCODING_UTF16_LE: - x2("\\17\\00", "\017", 0, 1); - x2("\\x1f\\x00", "\x1f", 0, 1); - elif onig_encoding == onigmo.ONIG_ENCODING_UTF16_BE: - x2("\\00\\17", "\017", 0, 1); - x2("\\x00\\x1f", "\x1f", 0, 1); - elif onig_encoding == onigmo.ONIG_ENCODING_UTF32_LE: - x2("\\17\\00\\00\\00", "\017", 0, 1); - x2("\\x1f\\x00\\x00\\x00", "\x1f", 0, 1); - elif onig_encoding == onigmo.ONIG_ENCODING_UTF32_BE: - x2("\\00\\00\\00\\17", "\017", 0, 1); - x2("\\x00\\x00\\x00\\x1f", "\x1f", 0, 1); - else: - x2("\\17", "\017", 0, 1); - x2("\\x1f", "\x1f", 0, 1); - x2("a(?#....\\\\JJJJ)b", "ab", 0, 2); - x2("(?x) G (o O(?-x)oO) g L", "GoOoOgLe", 0, 7); - x2(".", "a", 0, 1); - n(".", ""); - x2("..", "ab", 0, 2); - x2("\\w", "e", 0, 1); - n("\\W", "e"); - x2("\\s", " ", 0, 1); - x2("\\S", "b", 0, 1); - x2("\\d", "4", 0, 1); - n("\\D", "4"); - x2("\\b", "z ", 0, 0); - x2("\\b", " z", 1, 1); - x2("\\B", "zz ", 1, 1); - x2("\\B", "z ", 2, 2); - x2("\\B", " z", 0, 0); - x2("[ab]", "b", 0, 1); - n("[ab]", "c"); - x2("[a-z]", "t", 0, 1); - n("[^a]", "a"); - x2("[^a]", "\n", 0, 1); - x2("[]]", "]", 0, 1); - n("[^]]", "]"); - x2("[\\^]+", "0^^1", 1, 3); - x2("[b-]", "b", 0, 1); - x2("[b-]", "-", 0, 1); - x2("[\\w]", "z", 0, 1); - n("[\\w]", " "); - x2("[\\W]", "b$", 1, 2); - x2("[\\d]", "5", 0, 1); - n("[\\d]", "e"); - x2("[\\D]", "t", 0, 1); - n("[\\D]", "3"); - x2("[\\s]", " ", 0, 1); - n("[\\s]", "a"); - x2("[\\S]", "b", 0, 1); - n("[\\S]", " "); - x2("[\\w\\d]", "2", 0, 1); - n("[\\w\\d]", " "); - x2("[[:upper:]]", "B", 0, 1); - x2("[*[:xdigit:]+]", "+", 0, 1); - x2("[*[:xdigit:]+]", "GHIKK-9+*", 6, 7); - x2("[*[:xdigit:]+]", "-@^+", 3, 4); - n("[[:upper]]", "A"); - x2("[[:upper]]", ":", 0, 1); - if onig_encoding == onigmo.ONIG_ENCODING_UTF16_LE: - x2("[\\044\\000-\\047\\000]", "\046", 0, 1); - x2("[\\x5a\\x00-\\x5c\\x00]", "\x5b", 0, 1); - x2("[\\x6A\\x00-\\x6D\\x00]", "\x6c", 0, 1); - n("[\\x6A\\x00-\\x6D\\x00]", "\x6E"); - elif onig_encoding == onigmo.ONIG_ENCODING_UTF16_BE: - x2("[\\000\\044-\\000\\047]", "\046", 0, 1); - x2("[\\x00\\x5a-\\x00\\x5c]", "\x5b", 0, 1); - x2("[\\x00\\x6A-\\x00\\x6D]", "\x6c", 0, 1); - n("[\\x00\\x6A-\\x00\\x6D]", "\x6E"); - elif onig_encoding == onigmo.ONIG_ENCODING_UTF32_LE: - x2("[\\044\\000\\000\\000-\\047\\000\\000\\000]", "\046", 0, 1); - x2("[\\x5a\\x00\\x00\\x00-\\x5c\\x00\\x00\\x00]", "\x5b", 0, 1); - x2("[\\x6A\\x00\\x00\\x00-\\x6D\\x00\\x00\\x00]", "\x6c", 0, 1); - n("[\\x6A\\x00\\x00\\x00-\\x6D\\x00\\x00\\x00]", "\x6E"); - elif onig_encoding == onigmo.ONIG_ENCODING_UTF32_BE: - x2("[\\000\\000\\000\\044-\\000\\000\\000\\047]", "\046", 0, 1); - x2("[\\x00\\x00\\x00\\x5a-\\x00\\x00\\x00\\x5c]", "\x5b", 0, 1); - x2("[\\x00\\x00\\x00\\x6A-\\x00\\x00\\x00\\x6D]", "\x6c", 0, 1); - n("[\\x00\\x00\\x00\\x6A-\\x00\\x00\\x00\\x6D]", "\x6E"); - else: - x2("[\\044-\\047]", "\046", 0, 1); - x2("[\\x5a-\\x5c]", "\x5b", 0, 1); - x2("[\\x6A-\\x6D]", "\x6c", 0, 1); - n("[\\x6A-\\x6D]", "\x6E"); - n("^[0-9A-F]+ 0+ UNDEF ", "75F 00000000 SECT14A notype () External | _rb_apply"); - x2("[\\[]", "[", 0, 1); - x2("[\\]]", "]", 0, 1); - x2("[&]", "&", 0, 1); - x2("[[ab]]", "b", 0, 1); - x2("[[ab]c]", "c", 0, 1); - n("[[^a]]", "a"); - n("[^[a]]", "a"); - x2("[[ab]&&bc]", "b", 0, 1); - n("[[ab]&&bc]", "a"); - n("[[ab]&&bc]", "c"); - x2("[a-z&&b-y&&c-x]", "w", 0, 1); - n("[^a-z&&b-y&&c-x]", "w"); - x2("[[^a&&a]&&a-z]", "b", 0, 1); - n("[[^a&&a]&&a-z]", "a"); - x2("[[^a-z&&bcdef]&&[^c-g]]", "h", 0, 1); - n("[[^a-z&&bcdef]&&[^c-g]]", "c"); - x2("[^[^abc]&&[^cde]]", "c", 0, 1); - x2("[^[^abc]&&[^cde]]", "e", 0, 1); - n("[^[^abc]&&[^cde]]", "f"); - x2("[a-&&-a]", "-", 0, 1); - n("[a\\-&&\\-a]", "&"); - n("\\wabc", " abc"); - x2("a\\Wbc", "a bc", 0, 4); - x2("a.b.c", "aabbc", 0, 5); - x2(".\\wb\\W..c", "abb bcc", 0, 7); - x2("\\s\\wzzz", " zzzz", 0, 5); - x2("aa.b", "aabb", 0, 4); - n(".a", "ab"); - x2(".a", "aa", 0, 2); - x2("^a", "a", 0, 1); - x2("^a$", "a", 0, 1); - x2("^\\w$", "a", 0, 1); - n("^\\w$", " "); - x2("^\\wab$", "zab", 0, 3); - x2("^\\wabcdef$", "zabcdef", 0, 7); - x2("^\\w...def$", "zabcdef", 0, 7); - x2("\\w\\w\\s\\Waaa\\d", "aa aaa4", 0, 8); - x2("\\A\\Z", "", 0, 0); - x2("\\Axyz", "xyz", 0, 3); - x2("xyz\\Z", "xyz", 0, 3); - x2("xyz\\z", "xyz", 0, 3); - x2("a\\Z", "a", 0, 1); - x2("\\Gaz", "az", 0, 2); - n("\\Gz", "bza"); - n("az\\G", "az"); - n("az\\A", "az"); - n("a\\Az", "az"); - x2("\\^\\$", "^$", 0, 2); - x2("^x?y", "xy", 0, 2); - x2("^(x?y)", "xy", 0, 2); - x2("\\w", "_", 0, 1); - n("\\W", "_"); - x2("(?=z)z", "z", 0, 1); - n("(?=z).", "a"); - x2("(?!z)a", "a", 0, 1); - n("(?!z)a", "z"); - x2("(?i:a)", "a", 0, 1); - x2("(?i:a)", "A", 0, 1); - x2("(?i:A)", "a", 0, 1); - n("(?i:A)", "b"); - x2("(?i:[A-Z])", "a", 0, 1); - x2("(?i:[f-m])", "H", 0, 1); - x2("(?i:[f-m])", "h", 0, 1); - n("(?i:[f-m])", "e"); - x2("(?i:[A-c])", "D", 0, 1); - n("(?i:[^a-z])", "A"); - n("(?i:[^a-z])", "a"); - x2("(?i:[!-k])", "Z", 0, 1); - x2("(?i:[!-k])", "7", 0, 1); - x2("(?i:[T-}])", "b", 0, 1); - x2("(?i:[T-}])", "{", 0, 1); - x2("(?i:\\?a)", "?A", 0, 2); - x2("(?i:\\*A)", "*a", 0, 2); - n(".", "\n"); - x2("(?m:.)", "\n", 0, 1); - x2("(?m:a.)", "a\n", 0, 2); - x2("(?m:.b)", "a\nb", 1, 3); - x2(".*abc", "dddabdd\nddabc", 8, 13); - x2("(?m:.*abc)", "dddabddabc", 0, 10); - n("(?i)(?-i)a", "A"); - n("(?i)(?-i:a)", "A"); - x2("a?", "", 0, 0); - x2("a?", "b", 0, 0); - x2("a?", "a", 0, 1); - x2("a*", "", 0, 0); - x2("a*", "a", 0, 1); - x2("a*", "aaa", 0, 3); - x2("a*", "baaaa", 0, 0); - n("a+", ""); - x2("a+", "a", 0, 1); - x2("a+", "aaaa", 0, 4); - x2("a+", "aabbb", 0, 2); - x2("a+", "baaaa", 1, 5); - x2(".?", "", 0, 0); - x2(".?", "f", 0, 1); - x2(".?", "\n", 0, 0); - x2(".*", "", 0, 0); - x2(".*", "abcde", 0, 5); - x2(".+", "z", 0, 1); - x2(".+", "zdswer\n", 0, 6); - x2("(.*)a\\1f", "babfbac", 0, 4); - x2("(.*)a\\1f", "bacbabf", 3, 7); - x2("((.*)a\\2f)", "bacbabf", 3, 7); - x2("(.*)a\\1f", "baczzzzzz\nbazz\nzzzzbabf", 19, 23); - x2("a|b", "a", 0, 1); - x2("a|b", "b", 0, 1); - x2("|a", "a", 0, 0); - x2("(|a)", "a", 0, 0); - x2("ab|bc", "ab", 0, 2); - x2("ab|bc", "bc", 0, 2); - x2("z(?:ab|bc)", "zbc", 0, 3); - x2("a(?:ab|bc)c", "aabc", 0, 4); - x2("ab|(?:ac|az)", "az", 0, 2); - x2("a|b|c", "dc", 1, 2); - x2("a|b|cd|efg|h|ijk|lmn|o|pq|rstuvwx|yz", "pqr", 0, 2); - n("a|b|cd|efg|h|ijk|lmn|o|pq|rstuvwx|yz", "mn"); - x2("a|^z", "ba", 1, 2); - x2("a|^z", "za", 0, 1); - x2("a|\\Gz", "bza", 2, 3); - x2("a|\\Gz", "za", 0, 1); - x2("a|\\Az", "bza", 2, 3); - x2("a|\\Az", "za", 0, 1); - x2("a|b\\Z", "ba", 1, 2); - x2("a|b\\Z", "b", 0, 1); - x2("a|b\\z", "ba", 1, 2); - x2("a|b\\z", "b", 0, 1); - x2("\\w|\\s", " ", 0, 1); - n("\\w|\\w", " "); - x2("\\w|%", "%", 0, 1); - x2("\\w|[&$]", "&", 0, 1); - x2("[b-d]|[^e-z]", "a", 0, 1); - x2("(?:a|[c-f])|bz", "dz", 0, 1); - x2("(?:a|[c-f])|bz", "bz", 0, 2); - x2("abc|(?=zz)..f", "zzf", 0, 3); - x2("abc|(?!zz)..f", "abf", 0, 3); - x2("(?=za)..a|(?=zz)..a", "zza", 0, 3); - n("(?>a|abd)c", "abdc"); - x2("(?>abd|a)c", "abdc", 0, 4); - x2("a?|b", "a", 0, 1); - x2("a?|b", "b", 0, 0); - x2("a?|b", "", 0, 0); - x2("a*|b", "aa", 0, 2); - x2("a*|b*", "ba", 0, 0); - x2("a*|b*", "ab", 0, 1); - x2("a+|b*", "", 0, 0); - x2("a+|b*", "bbb", 0, 3); - x2("a+|b*", "abbb", 0, 1); - n("a+|b+", ""); - x2("(a|b)?", "b", 0, 1); - x2("(a|b)*", "ba", 0, 2); - x2("(a|b)+", "bab", 0, 3); - x2("(ab|ca)+", "caabbc", 0, 4); - x2("(ab|ca)+", "aabca", 1, 5); - x2("(ab|ca)+", "abzca", 0, 2); - x2("(a|bab)+", "ababa", 0, 5); - x2("(a|bab)+", "ba", 1, 2); - x2("(a|bab)+", "baaaba", 1, 4); - x2("(?:a|b)(?:a|b)", "ab", 0, 2); - x2("(?:a*|b*)(?:a*|b*)", "aaabbb", 0, 3); - x2("(?:a*|b*)(?:a+|b+)", "aaabbb", 0, 6); - x2("(?:a+|b+){2}", "aaabbb", 0, 6); - x2("h{0,}", "hhhh", 0, 4); - x2("(?:a+|b+){1,2}", "aaabbb", 0, 6); - n("ax{2}*a", "0axxxa1"); - n("a.{0,2}a", "0aXXXa0"); - n("a.{0,2}?a", "0aXXXa0"); - n("a.{0,2}?a", "0aXXXXa0"); - x2("^a{2,}?a$", "aaa", 0, 3); - x2("^[a-z]{2,}?$", "aaa", 0, 3); - x2("(?:a+|\\Ab*)cc", "cc", 0, 2); - n("(?:a+|\\Ab*)cc", "abcc"); - x2("(?:^a+|b+)*c", "aabbbabc", 6, 8); - x2("(?:^a+|b+)*c", "aabbbbc", 0, 7); - x2("a|(?i)c", "C", 0, 1); - x2("(?i)c|a", "C", 0, 1); - x2("(?i)c|a", "A", 0, 1); - x2("(?i:c)|a", "C", 0, 1); - n("(?i:c)|a", "A"); - x2("[abc]?", "abc", 0, 1); - x2("[abc]*", "abc", 0, 3); - x2("[^abc]*", "abc", 0, 0); - n("[^abc]+", "abc"); - x2("a??", "aaa", 0, 0); - x2("ba??b", "bab", 0, 3); - x2("a*?", "aaa", 0, 0); - x2("ba*?", "baa", 0, 1); - x2("ba*?b", "baab", 0, 4); - x2("a+?", "aaa", 0, 1); - x2("ba+?", "baa", 0, 2); - x2("ba+?b", "baab", 0, 4); - x2("(?:a?)??", "a", 0, 0); - x2("(?:a??)?", "a", 0, 0); - x2("(?:a?)+?", "aaa", 0, 1); - x2("(?:a+)??", "aaa", 0, 0); - x2("(?:a+)??b", "aaab", 0, 4); - x2("(?:ab)?{2}", "", 0, 0); - x2("(?:ab)?{2}", "ababa", 0, 4); - x2("(?:ab)*{0}", "ababa", 0, 0); - x2("(?:ab){3,}", "abababab", 0, 8); - n("(?:ab){3,}", "abab"); - x2("(?:ab){2,4}", "ababab", 0, 6); - x2("(?:ab){2,4}", "ababababab", 0, 8); - x2("(?:ab){2,4}?", "ababababab", 0, 4); - x2("(?:ab){,}", "ab{,}", 0, 5); - x2("(?:abc)+?{2}", "abcabcabc", 0, 6); - x2("(?:X*)(?i:xa)", "XXXa", 0, 4); - x2("(d+)([^abc]z)", "dddz", 0, 4); - x2("([^abc]*)([^abc]z)", "dddz", 0, 4); - x2("(\\w+)(\\wz)", "dddz", 0, 4); - x3("(a)", "a", 0, 1, 1); - x3("(ab)", "ab", 0, 2, 1); - x2("((ab))", "ab", 0, 2); - x3("((ab))", "ab", 0, 2, 1); - x3("((ab))", "ab", 0, 2, 2); - x3("((((((((((((((((((((ab))))))))))))))))))))", "ab", 0, 2, 20); - x3("(ab)(cd)", "abcd", 0, 2, 1); - x3("(ab)(cd)", "abcd", 2, 4, 2); - x3("()(a)bc(def)ghijk", "abcdefghijk", 3, 6, 3); - x3("(()(a)bc(def)ghijk)", "abcdefghijk", 3, 6, 4); - x2("(^a)", "a", 0, 1); - x3("(a)|(a)", "ba", 1, 2, 1); - x3("(^a)|(a)", "ba", 1, 2, 2); - x3("(a?)", "aaa", 0, 1, 1); - x3("(a*)", "aaa", 0, 3, 1); - x3("(a*)", "", 0, 0, 1); - x3("(a+)", "aaaaaaa", 0, 7, 1); - x3("(a+|b*)", "bbbaa", 0, 3, 1); - x3("(a+|b?)", "bbbaa", 0, 1, 1); - x3("(abc)?", "abc", 0, 3, 1); - x3("(abc)*", "abc", 0, 3, 1); - x3("(abc)+", "abc", 0, 3, 1); - x3("(xyz|abc)+", "abc", 0, 3, 1); - x3("([xyz][abc]|abc)+", "abc", 0, 3, 1); - x3("((?i:abc))", "AbC", 0, 3, 1); - x2("(abc)(?i:\\1)", "abcABC", 0, 6); - x3("((?m:a.c))", "a\nc", 0, 3, 1); - x3("((?=az)a)", "azb", 0, 1, 1); - x3("abc|(.abd)", "zabd", 0, 4, 1); - x2("(?:abc)|(ABC)", "abc", 0, 3); - x3("(?i:(abc))|(zzz)", "ABC", 0, 3, 1); - x3("a*(.)", "aaaaz", 4, 5, 1); - x3("a*?(.)", "aaaaz", 0, 1, 1); - x3("a*?(c)", "aaaac", 4, 5, 1); - x3("[bcd]a*(.)", "caaaaz", 5, 6, 1); - x3("(\\Abb)cc", "bbcc", 0, 2, 1); - n("(\\Abb)cc", "zbbcc"); - x3("(^bb)cc", "bbcc", 0, 2, 1); - n("(^bb)cc", "zbbcc"); - x3("cc(bb$)", "ccbb", 2, 4, 1); - n("cc(bb$)", "ccbbb"); - n("(\\1)", ""); - n("\\1(a)", "aa"); - n("(a(b)\\1)\\2+", "ababb"); - n("(?:(?:\\1|z)(a))+$", "zaa"); - x2("(?:(?:\\1|z)(a))+$", "zaaa", 0, 4); - x2("(a)(?=\\1)", "aa", 0, 1); - n("(a)$|\\1", "az"); - x2("(a)\\1", "aa", 0, 2); - n("(a)\\1", "ab"); - x2("(a?)\\1", "aa", 0, 2); - x2("(a??)\\1", "aa", 0, 0); - x2("(a*)\\1", "aaaaa", 0, 4); - x3("(a*)\\1", "aaaaa", 0, 2, 1); - x2("a(b*)\\1", "abbbb", 0, 5); - x2("a(b*)\\1", "ab", 0, 1); - x2("(a*)(b*)\\1\\2", "aaabbaaabb", 0, 10); - x2("(a*)(b*)\\2", "aaabbbb", 0, 7); - x2("(((((((a*)b))))))c\\7", "aaabcaaa", 0, 8); - x3("(((((((a*)b))))))c\\7", "aaabcaaa", 0, 3, 7); - x2("(a)(b)(c)\\2\\1\\3", "abcbac", 0, 6); - x2("([a-d])\\1", "cc", 0, 2); - x2("(\\w\\d\\s)\\1", "f5 f5 ", 0, 6); - n("(\\w\\d\\s)\\1", "f5 f5"); - x2("(who|[a-c]{3})\\1", "whowho", 0, 6); - x2("...(who|[a-c]{3})\\1", "abcwhowho", 0, 9); - x2("(who|[a-c]{3})\\1", "cbccbc", 0, 6); - x2("(^a)\\1", "aa", 0, 2); - n("(^a)\\1", "baa"); - n("(a$)\\1", "aa"); - n("(ab\\Z)\\1", "ab"); - x2("(a*\\Z)\\1", "a", 1, 1); - x2(".(a*\\Z)\\1", "ba", 1, 2); - x3("(.(abc)\\2)", "zabcabc", 0, 7, 1); - x3("(.(..\\d.)\\2)", "z12341234", 0, 9, 1); - x2("((?i:az))\\1", "AzAz", 0, 4); - n("((?i:az))\\1", "Azaz"); - x2("(?<=a)b", "ab", 1, 2); - n("(?<=a)b", "bb"); - x2("(?<=a|b)b", "bb", 1, 2); - x2("(?<=a|bc)b", "bcb", 2, 3); - x2("(?<=a|bc)b", "ab", 1, 2); - x2("(?<=a|bc||defghij|klmnopq|r)z", "rz", 1, 2); - x2("(a)\\g<1>", "aa", 0, 2); - x2("(?a)", "a", 0, 1); - x2("(?ab)\\g", "abab", 0, 4); - x2("(?.zv.)\\k", "azvbazvb", 0, 8); - x2("(?<=\\g)|-\\zEND (?XyZ)", "XyZ", 3, 3); - x2("(?|a\\g)+", "", 0, 0); - x2("(?|\\(\\g\\))+$", "()(())", 0, 6); - x3("\\g(?.){0}", "X", 0, 1, 1); - x2("\\g(abc|df(?.YZ){2,8}){0}", "XYZ", 0, 3); - x2("\\A(?(a\\g)|)\\z", "aaaa", 0, 4); - x2("(?|\\g\\g)\\z|\\zEND (?a|(b)\\g)", "bbbbabba", 0, 8); - x2("(?\\w+\\sx)a+\\k", " fg xaaaaaaaafg x", 2, 18); - x3("(z)()()(?<_9>a)\\g<_9>", "zaa", 2, 3, 1); - x2("(.)(((?<_>a)))\\k<_>", "zaa", 0, 3); - x2("((?\\d)|(?\\w))(\\k|\\k)", "ff", 0, 2); - x2("(?:(?)|(?efg))\\k", "", 0, 0); - x2("(?:(?abc)|(?efg))\\k", "abcefgefg", 3, 9); - n("(?:(?abc)|(?efg))\\k", "abcefg"); - x2("(?:(?.)|(?..)|(?...)|(?....)|(?.....)|(?......)|(?.......)|(?........)|(?.........)|(?..........)|(?...........)|(?............)|(?.............)|(?..............))\\k$", "a-pyumpyum", 2, 10); - x3("(?:(?.)|(?..)|(?...)|(?....)|(?.....)|(?......)|(?.......)|(?........)|(?.........)|(?..........)|(?...........)|(?............)|(?.............)|(?..............))\\k$", "xxxxabcdefghijklmnabcdefghijklmn", 4, 18, 14); - x3("(?)(?)(?)(?)(?)(?)(?)(?)(?)(?)(?)(?)(?)(?)(?)(?aaa)(?)$", "aaa", 0, 3, 16); - x2("(?a|\\(\\g\\))", "a", 0, 1); - x2("(?a|\\(\\g\\))", "((((((a))))))", 0, 13); - x3("(?a|\\(\\g\\))", "((((((((a))))))))", 0, 17, 1); - x2("\\g|\\zEND(?.*abc$)", "abcxxxabc", 0, 9); - x2("\\g<1>|\\zEND(.a.)", "bac", 0, 3); - x3("\\g<_A>\\g<_A>|\\zEND(.a.)(?<_A>.b.)", "xbxyby", 3, 6, 1); - x2("\\A(?:\\g|\\g|\\zEND (?a|c\\gc)(?b|d\\gd))$", "cdcbcdc", 0, 7); - x2("\\A(?|a\\g)\\z|\\zEND (?\\g)", "aaaa", 0, 4); - x2("(?(a|b\\gc){3,5})", "baaaaca", 1, 5); - x2("(?(a|b\\gc){3,5})", "baaaacaaaaa", 0, 10); - x2("(?\\(([^\\(\\)]++|\\g)*+\\))", "((a))", 0, 5); - x2("()*\\1", "", 0, 0); - x2("(?:()|())*\\1\\2", "", 0, 0); - x3("(?:\\1a|())*", "a", 0, 0, 1); - x2("x((.)*)*x", "0x1x2x3", 1, 6); - x2("x((.)*)*x(?i:\\1)\\Z", "0x1x2x1X2", 1, 9); - x2("(?:()|()|()|()|()|())*\\2\\5", "", 0, 0); - x2("(?:()|()|()|(x)|()|())*\\2b\\5", "b", 0, 1); - if onig_encoding == onigmo.ONIG_ENCODING_UTF16_LE: - x2("\\xFA\\x8F", "\u8ffa", 0, 1); - elif onig_encoding == onigmo.ONIG_ENCODING_UTF16_BE: - x2("\\x8F\\xFA", "\u8ffa", 0, 1); - elif onig_encoding == onigmo.ONIG_ENCODING_UTF32_LE: - x2("\\xFA\\x8F\\x00\\x00", "\u8ffa", 0, 1); - elif onig_encoding == onigmo.ONIG_ENCODING_UTF32_BE: - x2("\\x00\\x00\\x8F\\xFA", "\u8ffa", 0, 1); - elif onig_encoding == onigmo.ONIG_ENCODING_UTF8: - x2("\\xE8\\xBF\\xBA", "\u8ffa", 0, 1); - elif onig_encoding == onigmo.ONIG_ENCODING_SJIS or \ - onig_encoding == onigmo.ONIG_ENCODING_CP932: - x2("\\xE7\\x92", "\u8ffa", 0, 1); - elif onig_encoding == onigmo.ONIG_ENCODING_EUC_JP: - x2("\\xED\\xF2", "\u8ffa", 0, 1); # "霑コ" - x2("", "縺", 0, 0); - x2("縺", "縺", 0, 1); - n("縺", "縺"); - x2("縺縺", "縺縺", 0, 2); - x2("縺ゅ>縺", "縺ゅ>縺", 0, 3); - x2("縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺", "縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺", 0, 35); - x2("縺", "縺縺", 1, 2); - x2("縺縺", "縺ゅ>縺", 1, 3); -# x2(b"\\xca\\xb8", b"\xca\xb8", 0, 2); # "譁" - x2(".", "縺", 0, 1); - x2("..", "縺九″", 0, 2); - x2("\\w", "縺", 0, 1); - n("\\W", "縺"); - x2("[\\W]", "縺$", 1, 2); - x2("\\S", "縺", 0, 1); - x2("\\S", "貍「", 0, 1); - x2("\\b", "豌 ", 0, 0); - x2("\\b", " 縺サ", 1, 1); - x2("\\B", "縺帙◎ ", 1, 1); - x2("\\B", "縺 ", 2, 2); - x2("\\B", " 縺", 0, 0); - x2("[縺溘■]", "縺。", 0, 1); - n("[縺ェ縺ォ]", "縺ャ"); - x2("[縺-縺馨", "縺", 0, 1); - n("[^縺曽", "縺"); - x2("[\\w]", "縺ュ", 0, 1); - n("[\\d]", "縺オ"); - x2("[\\D]", "縺ッ", 0, 1); - n("[\\s]", "縺"); - x2("[\\S]", "縺ク", 0, 1); - x2("[\\w\\d]", "繧", 0, 1); - x2("[\\w\\d]", " 繧", 3, 4); - n("\\w鬯シ霆", " 鬯シ霆"); - x2("鬯シ\\W霆", "鬯シ 霆", 0, 3); - x2("縺.縺.縺", "縺ゅ≠縺縺縺", 0, 5); - x2(".\\w縺\\W..縺", "縺医≧縺 縺縺槭◇", 0, 7); - x2("\\s\\w縺薙%縺", " 縺薙%縺薙%", 0, 5); - x2("縺ゅ≠.縺", "縺ゅ≠縺代¢", 0, 4); - n(".縺", "縺縺"); - x2(".縺", "縺翫♀", 0, 2); - x2("^縺", "縺", 0, 1); - x2("^繧$", "繧", 0, 1); - x2("^\\w$", "縺ォ", 0, 1); - x2("^\\w縺九″縺上¢縺$", "z縺九″縺上¢縺", 0, 6); - x2("^\\w...縺縺医♀$", "z縺ゅ>縺縺縺医♀", 0, 7); - x2("\\w\\w\\s\\W縺翫♀縺浬\d", "a縺 縺翫♀縺4", 0, 8); - x2("\\A縺溘■縺、", "縺溘■縺、", 0, 3); - x2("繧繧√b\\Z", "繧繧√b", 0, 3); - x2("縺九″縺十\z", "縺九″縺", 0, 3); - x2("縺九″縺十\Z", "縺九″縺十n", 0, 3); - x2("\\G縺ス縺エ", "縺ス縺エ", 0, 2); - n("\\G縺", "縺縺医♀"); - n("縺ィ縺ヲ\\G", "縺ィ縺ヲ"); - n("縺セ縺ソ\\A", "縺セ縺ソ"); - n("縺セ\\A縺ソ", "縺セ縺ソ"); - x2("(?=縺)縺", "縺", 0, 1); - n("(?=縺).", "縺"); - x2("(?!縺)縺", "縺", 0, 1); - n("(?!縺ィ)縺", "縺ィ"); - x2("(?i:縺)", "縺", 0, 1); - x2("(?i:縺カ縺ケ)", "縺カ縺ケ", 0, 2); - n("(?i:縺)", "縺"); - x2("(?m:繧.)", "繧\n", 0, 2); - x2("(?m:.繧)", "縺セ\n繧", 1, 3); - x2("縺?", "", 0, 0); - x2("螟?", "蛹", 0, 0); - x2("螟?", "螟", 0, 1); - x2("驥*", "", 0, 0); - x2("驥*", "驥", 0, 1); - x2("蟄*", "蟄仙ュ仙ュ", 0, 3); - x2("鬥ャ*", "鮖ソ鬥ャ鬥ャ鬥ャ鬥ャ", 0, 0); - n("螻ア+", ""); - x2("豐ウ+", "豐ウ", 0, 1); - x2("譎+", "譎よ凾譎よ凾", 0, 4); - x2("縺+", "縺医∴縺縺縺", 0, 2); - x2("縺+", "縺翫≧縺縺縺", 1, 5); - x2(".?", "縺", 0, 1); - x2(".*", "縺ア縺エ縺キ縺コ", 0, 4); - x2(".+", "繧", 0, 1); - x2(".+", "縺縺縺医°\n", 0, 4); - x2("縺|縺", "縺", 0, 1); - x2("縺|縺", "縺", 0, 1); - x2("縺ゅ>|縺縺", "縺ゅ>", 0, 2); - x2("縺ゅ>|縺縺", "縺縺", 0, 2); - x2("繧(?:縺九″|縺阪¥)", "繧偵°縺", 0, 3); - x2("繧(?:縺九″|縺阪¥)縺", "繧偵″縺上¢", 0, 4); - x2("縺ゅ>|(?:縺ゅ≧|縺ゅr)", "縺ゅr", 0, 2); - x2("縺|縺л縺", "縺医≧", 1, 2); - x2("縺|縺л縺縺|縺翫°縺鋼縺楯縺代%縺怖縺励☆縺斈縺掟縺溘■|縺、縺ヲ縺ィ縺ェ縺ォ|縺ャ縺ュ", "縺励☆縺", 0, 3); - n("縺|縺л縺縺|縺翫°縺鋼縺楯縺代%縺怖縺励☆縺斈縺掟縺溘■|縺、縺ヲ縺ィ縺ェ縺ォ|縺ャ縺ュ", "縺吶○"); - x2("縺|^繧", "縺カ縺", 1, 2); - x2("縺|^繧", "繧偵≠", 0, 1); - x2("鬯シ|\\G霆", "縺題サ企ャシ", 2, 3); - x2("鬯シ|\\G霆", "霆企ャシ", 0, 1); - x2("鬯シ|\\A霆", "b霆企ャシ", 2, 3); - x2("鬯シ|\\A霆", "霆", 0, 1); - x2("鬯シ|霆浬\Z", "霆企ャシ", 1, 2); - x2("鬯シ|霆浬\Z", "霆", 0, 1); - x2("鬯シ|霆浬\Z", "霆浬n", 0, 1); - x2("鬯シ|霆浬\z", "霆企ャシ", 1, 2); - x2("鬯シ|霆浬\z", "霆", 0, 1); - x2("\\w|\\s", "縺", 0, 1); - x2("\\w|%", "%縺", 0, 1); - x2("\\w|[&$]", "縺&", 0, 1); - x2("[縺-縺曽", "縺", 0, 1); - x2("[縺-縺曽|[^縺-縺転", "縺", 0, 1); - x2("[縺-縺曽|[^縺-縺転", "縺", 0, 1); - x2("[^縺]", "\n", 0, 1); - x2("(?:縺|[縺-縺江)|縺繧", "縺繧", 0, 1); - x2("(?:縺|[縺-縺江)|縺繧", "縺繧", 0, 2); - x2("縺ゅ>縺|(?=縺代¢)..縺サ", "縺代¢縺サ", 0, 3); - x2("縺ゅ>縺|(?!縺代¢)..縺サ", "縺ゅ>縺サ", 0, 3); - x2("(?=繧偵≠)..縺|(?=繧偵r)..縺", "繧偵r縺", 0, 3); - x2("(?<=縺|縺縺)縺", "縺縺縺", 2, 3); - n("(?>縺|縺ゅ>縺)縺", "縺ゅ>縺医≧"); - x2("(?>縺ゅ>縺|縺)縺", "縺ゅ>縺医≧", 0, 4); - x2("縺?|縺", "縺", 0, 1); - x2("縺?|縺", "縺", 0, 0); - x2("縺?|縺", "", 0, 0); - x2("縺*|縺", "縺ゅ≠", 0, 2); - x2("縺*|縺*", "縺縺", 0, 0); - x2("縺*|縺*", "縺ゅ>", 0, 1); - x2("[a縺]*|縺*", "a縺ゅ>縺縺", 0, 2); - x2("縺+|縺*", "", 0, 0); - x2("縺+|縺*", "縺縺縺", 0, 3); - x2("縺+|縺*", "縺ゅ>縺縺", 0, 1); - x2("縺+|縺*", "a縺ゅ>縺縺", 0, 0); - n("縺+|縺+", ""); - x2("(縺|縺)?", "縺", 0, 1); - x2("(縺|縺)*", "縺縺", 0, 2); - x2("(縺|縺)+", "縺縺ゅ>", 0, 3); - x2("(縺ゅ>|縺縺)+", "縺縺ゅ≠縺縺縺", 0, 4); - x2("(縺ゅ>|縺縺)+", "縺縺ゅ≠縺縺縺", 2, 6); - x2("(縺ゅ>|縺縺)+", "縺ゅ≠縺縺縺", 1, 5); - x2("(縺ゅ>|縺縺)+", "縺ゅ>繧偵≧縺", 0, 2); - x2("(縺ゅ>|縺縺)+", "$$zzzz縺ゅ>繧偵≧縺", 6, 8); - x2("(縺|縺縺ゅ>)+", "縺ゅ>縺ゅ>縺", 0, 5); - x2("(縺|縺縺ゅ>)+", "縺縺", 1, 2); - x2("(縺|縺縺ゅ>)+", "縺縺ゅ≠縺ゅ>縺", 1, 4); - x2("(?:縺|縺)(?:縺|縺)", "縺ゅ>", 0, 2); - x2("(?:縺*|縺*)(?:縺*|縺*)", "縺ゅ≠縺ゅ>縺縺", 0, 3); - x2("(?:縺*|縺*)(?:縺+|縺+)", "縺ゅ≠縺ゅ>縺縺", 0, 6); - x2("(?:縺+|縺+){2}", "縺ゅ≠縺ゅ>縺縺", 0, 6); - x2("(?:縺+|縺+){1,2}", "縺ゅ≠縺ゅ>縺縺", 0, 6); - x2("(?:縺+|\\A縺*)縺縺", "縺縺", 0, 2); - n("(?:縺+|\\A縺*)縺縺", "縺ゅ>縺縺"); - x2("(?:^縺+|縺+)*縺", "縺ゅ≠縺縺縺縺ゅ>縺", 6, 8); - x2("(?:^縺+|縺+)*縺", "縺ゅ≠縺縺縺縺縺", 0, 7); - x2("縺{0,}", "縺縺縺縺", 0, 4); - x2("縺|(?i)c", "C", 0, 1); - x2("(?i)c|縺", "C", 0, 1); - x2("(?i:縺)|a", "a", 0, 1); - n("(?i:縺)|a", "A"); - x2("[縺ゅ>縺]?", "縺ゅ>縺", 0, 1); - x2("[縺ゅ>縺]*", "縺ゅ>縺", 0, 3); - x2("[^縺ゅ>縺]*", "縺ゅ>縺", 0, 0); - n("[^縺ゅ>縺]+", "縺ゅ>縺"); - x2("縺??", "縺ゅ≠縺", 0, 0); - x2("縺縺??縺", "縺縺ゅ>", 0, 3); - x2("縺*?", "縺ゅ≠縺", 0, 0); - x2("縺縺*?", "縺縺ゅ≠", 0, 1); - x2("縺縺*?縺", "縺縺ゅ≠縺", 0, 4); - x2("縺+?", "縺ゅ≠縺", 0, 1); - x2("縺縺+?", "縺縺ゅ≠", 0, 2); - x2("縺縺+?縺", "縺縺ゅ≠縺", 0, 4); - x2("(?:螟ゥ?)??", "螟ゥ", 0, 0); - x2("(?:螟ゥ??)?", "螟ゥ", 0, 0); - x2("(?:螟「?)+?", "螟「螟「螟「", 0, 1); - x2("(?:鬚ィ+)??", "鬚ィ鬚ィ鬚ィ", 0, 0); - x2("(?:髮ェ+)??髴", "髮ェ髮ェ髮ェ髴", 0, 4); - x2("(?:縺ゅ>)?{2}", "", 0, 0); - x2("(?:鬯シ霆)?{2}", "鬯シ霆企ャシ霆企ャシ", 0, 4); - x2("(?:鬯シ霆)*{0}", "鬯シ霆企ャシ霆企ャシ", 0, 0); - x2("(?:鬯シ霆){3,}", "鬯シ霆企ャシ霆企ャシ霆企ャシ霆", 0, 8); - n("(?:鬯シ霆){3,}", "鬯シ霆企ャシ霆"); - x2("(?:鬯シ霆){2,4}", "鬯シ霆企ャシ霆企ャシ霆", 0, 6); - x2("(?:鬯シ霆){2,4}", "鬯シ霆企ャシ霆企ャシ霆企ャシ霆企ャシ霆", 0, 8); - x2("(?:鬯シ霆){2,4}?", "鬯シ霆企ャシ霆企ャシ霆企ャシ霆企ャシ霆", 0, 4); - x2("(?:鬯シ霆){,}", "鬯シ霆顎,}", 0, 5); - x2("(?:縺九″縺)+?{2}", "縺九″縺上°縺阪¥縺九″縺", 0, 6); - x3("(轣ォ)", "轣ォ", 0, 1, 1); - x3("(轣ォ豌エ)", "轣ォ豌エ", 0, 2, 1); - x2("((譎る俣))", "譎る俣", 0, 2); - x3("((鬚ィ豌エ))", "鬚ィ豌エ", 0, 2, 1); - x3("((譏ィ譌・))", "譏ィ譌・", 0, 2, 2); - x3("((((((((((((((((((((驥丞ュ))))))))))))))))))))", "驥丞ュ", 0, 2, 20); - x3("(縺ゅ>)(縺縺)", "縺ゅ>縺縺", 0, 2, 1); - x3("(縺ゅ>)(縺縺)", "縺ゅ>縺縺", 2, 4, 2); - x3("()(縺)縺縺(縺医♀縺)縺阪¥縺代%", "縺ゅ>縺縺医♀縺九″縺上¢縺", 3, 6, 3); - x3("(()(縺)縺縺(縺医♀縺)縺阪¥縺代%)", "縺ゅ>縺縺医♀縺九″縺上¢縺", 3, 6, 4); - x3(".*(繝輔か)繝ウ繝サ繝(繝ウ()繧キ繝・繧ソ)繧、繝ウ", "繝輔か繝ウ繝サ繝槭Φ繧キ繝・繧ソ繧、繝ウ", 5, 9, 2); - x2("(^縺)", "縺", 0, 1); - x3("(縺)|(縺)", "縺縺", 1, 2, 1); - x3("(^縺)|(縺)", "縺縺", 1, 2, 2); - x3("(縺?)", "縺ゅ≠縺", 0, 1, 1); - x3("(縺セ*)", "縺セ縺セ縺セ", 0, 3, 1); - x3("(縺ィ*)", "", 0, 0, 1); - x3("(繧+)", "繧九k繧九k繧九k繧", 0, 7, 1); - x3("(縺オ+|縺ク*)", "縺オ縺オ縺オ縺ク縺ク", 0, 3, 1); - x3("(縺+|縺?)", "縺縺縺縺ゅ≠", 0, 1, 1); - x3("(縺ゅ>縺)?", "縺ゅ>縺", 0, 3, 1); - x3("(縺ゅ>縺)*", "縺ゅ>縺", 0, 3, 1); - x3("(縺ゅ>縺)+", "縺ゅ>縺", 0, 3, 1); - x3("(縺輔@縺處縺ゅ>縺)+", "縺ゅ>縺", 0, 3, 1); - x3("([縺ェ縺ォ縺ャ][縺九″縺従|縺九″縺)+", "縺九″縺", 0, 3, 1); - x3("((?i:縺ゅ>縺))", "縺ゅ>縺", 0, 3, 1); - x3("((?m:縺.縺))", "縺\n縺", 0, 3, 1); - x3("((?=縺ゅs)縺)", "縺ゅs縺", 0, 1, 1); - x3("縺ゅ>縺|(.縺ゅ>縺)", "繧薙≠縺縺", 0, 4, 1); - x3("縺*(.)", "縺ゅ≠縺ゅ≠繧", 4, 5, 1); - x3("縺*?(.)", "縺ゅ≠縺ゅ≠繧", 0, 1, 1); - x3("縺*?(繧)", "縺ゅ≠縺ゅ≠繧", 4, 5, 1); - x3("[縺縺縺]縺*(.)", "縺医≠縺ゅ≠縺ゅs", 5, 6, 1); - x3("(\\A縺縺)縺縺", "縺縺縺縺", 0, 2, 1); - n("(\\A縺縺)縺縺", "繧薙>縺縺縺"); - x3("(^縺縺)縺縺", "縺縺縺縺", 0, 2, 1); - n("(^縺縺)縺縺", "繧薙>縺縺縺"); - x3("繧阪m(繧九k$)", "繧阪m繧九k", 2, 4, 1); - n("繧阪m(繧九k$)", "繧阪m繧九k繧"); - x2("(辟。)\\1", "辟。辟。", 0, 2); - n("(辟。)\\1", "辟。豁ヲ"); - x2("(遨コ?)\\1", "遨コ遨コ", 0, 2); - x2("(遨コ??)\\1", "遨コ遨コ", 0, 0); - x2("(遨コ*)\\1", "遨コ遨コ遨コ遨コ遨コ", 0, 4); - x3("(遨コ*)\\1", "遨コ遨コ遨コ遨コ遨コ", 0, 2, 1); - x2("縺(縺*)\\1", "縺ゅ>縺縺縺", 0, 5); - x2("縺(縺*)\\1", "縺ゅ>", 0, 1); - x2("(縺*)(縺*)\\1\\2", "縺ゅ≠縺ゅ>縺縺ゅ≠縺ゅ>縺", 0, 10); - x2("(縺*)(縺*)\\2", "縺ゅ≠縺ゅ>縺縺縺", 0, 7); - x3("(縺*)(縺*)\\2", "縺ゅ≠縺ゅ>縺縺縺", 3, 5, 2); - x2("(((((((縺ス*)縺コ))))))縺エ\\7", "縺ス縺ス縺ス縺コ縺エ縺ス縺ス縺ス", 0, 8); - x3("(((((((縺ス*)縺コ))))))縺エ\\7", "縺ス縺ス縺ス縺コ縺エ縺ス縺ス縺ス", 0, 3, 7); - x2("(縺ッ)(縺イ)(縺オ)\\2\\1\\3", "縺ッ縺イ縺オ縺イ縺ッ縺オ", 0, 6); - x2("([縺-縺曽)\\1", "縺上¥", 0, 2); - x2("(\\w\\d\\s)\\1", "縺5 縺5 ", 0, 6); - n("(\\w\\d\\s)\\1", "縺5 縺5"); - x2("(隱ーシ毫[縺-縺]{3})\\1", "隱ーシ溯ェーシ", 0, 4); - x2("...(隱ーシ毫[縺-縺]{3})\\1", "縺B縺りェーシ溯ェーシ", 0, 7); - x2("(隱ーシ毫[縺-縺]{3})\\1", "縺縺縺縺縺縺", 0, 6); - x2("(^縺)\\1", "縺薙%", 0, 2); - n("(^繧)\\1", "繧√繧"); - n("(縺$)\\1", "縺ゅ≠"); - n("(縺ゅ>\\Z)\\1", "縺ゅ>"); - x2("(縺*\\Z)\\1", "縺", 1, 1); - x2(".(縺*\\Z)\\1", "縺縺", 1, 2); - x3("(.(繧縺繧)\\2)", "z繧縺繧繧縺繧", 0, 7, 1); - x3("(.(..\\d.)\\2)", "縺12341234", 0, 9, 1); - x2("((?i:縺W縺))\\1", "縺W縺壹≠v縺", 0, 6); - x2("(?<諢壹°>螟榎\\(\\g<諢壹°>\\))", "((((((螟))))))", 0, 13); - x2("\\A(?:\\g<髦ソ_1>|\\g<莠狙2>|\\z邨ゆコ (?<髦ソ_1>隕ウ|閾ェ\\g<莠狙2>閾ェ)(?<莠狙2>蝨ィ|闖ゥ阮ゥ\\g<髦ソ_1>闖ゥ阮ゥ))$", "闖ゥ阮ゥ閾ェ闖ゥ阮ゥ閾ェ蝨ィ閾ェ闖ゥ阮ゥ閾ェ闖ゥ阮ゥ", 0, 13); - x2("[[縺イ縺オ]]", "縺オ", 0, 1); - x2("[[縺縺翫≧]縺犠", "縺", 0, 1); - n("[[^縺]]", "縺"); - n("[^[縺]]", "縺"); - x2("[^[^縺]]", "縺", 0, 1); - x2("[[縺九″縺従&&縺阪¥]", "縺", 0, 1); - n("[[縺九″縺従&&縺阪¥]", "縺"); - n("[[縺九″縺従&&縺阪¥]", "縺"); - x2("[縺-繧&&縺-繧&&縺-繧曽", "繧", 0, 1); - n("[^縺-繧&&縺-繧&&縺-繧曽", "繧"); - x2("[[^縺&&縺]&&縺-繧転", "縺", 0, 1); - n("[[^縺&&縺]&&縺-繧転", "縺"); - x2("[[^縺-繧&&縺縺縺医♀]&&[^縺-縺犠]", "縺", 0, 1); - n("[[^縺-繧&&縺縺縺医♀]&&[^縺-縺犠]", "縺"); - x2("[^[^縺ゅ>縺]&&[^縺縺医♀]]", "縺", 0, 1); - x2("[^[^縺ゅ>縺]&&[^縺縺医♀]]", "縺", 0, 1); - n("[^[^縺ゅ>縺]&&[^縺縺医♀]]", "縺"); - x2("[縺-&&-縺]", "-", 0, 1); - x2("[^[^a-z縺ゅ>縺]&&[^bcdefg縺縺医♀]q-w]", "縺", 0, 1); - x2("[^[^a-z縺ゅ>縺]&&[^bcdefg縺縺医♀]g-w]", "f", 0, 1); - x2("[^[^a-z縺ゅ>縺]&&[^bcdefg縺縺医♀]g-w]", "g", 0, 1); - n("[^[^a-z縺ゅ>縺]&&[^bcdefg縺縺医♀]g-w]", "2"); - x2("a繝舌シ繧ク繝ァ繝ウ縺ョ繝繧ヲ繝ウ繝ュ繝シ繝<\\/b>", "a繝舌シ繧ク繝ァ繝ウ縺ョ繝繧ヲ繝ウ繝ュ繝シ繝", 0, 20); - x2(".繝舌シ繧ク繝ァ繝ウ縺ョ繝繧ヲ繝ウ繝ュ繝シ繝<\\/b>", "a繝舌シ繧ク繝ァ繝ウ縺ョ繝繧ヲ繝ウ繝ュ繝シ繝", 0, 20); - - - # additional test patterns - if is_unicode_encoding(onig_encoding): - x2("\\x{3042}\\x{3044}", "縺ゅ>", 0, 2) - elif onig_encoding == onigmo.ONIG_ENCODING_SJIS or \ - onig_encoding == onigmo.ONIG_ENCODING_CP932: - x2("\\x{82a0}\\x{82A2}", "縺ゅ>", 0, 2) - x2("\\M-\\C-b\x50", "シ", 0, 1) # \x8250 - elif onig_encoding == onigmo.ONIG_ENCODING_EUC_JP: - x2("\\x{a4a2}\\x{A4A4}", "縺ゅ>", 0, 2) - x2("\\p{Hiragana}\\p{Katakana}", "縺ゅう", 0, 2) - x2("(?m)^A.B$", "X\nA\nB\nZ", 2, 5) - n("(?\\k<2+0>))\\z", "reer", 0, 4) - x2("\\A(?|.|(?:(?.)\\g\\k))\\z", "reer", 0, 4) - x2("(?i)\\A(|.|(?:(.)\\g<1>\\k<2+0>))\\z", "reER", 0, 4) - x2("(?i)\\A(?|.|(?:(?.)\\g\\k))\\z", "REer", 0, 4) - x2(''' # Extended pattern - (? \g \g* \g ){0} - (? < \g \s* > ){0} - (? [a-zA-Z_:]+ ){0} - (? [^<&]+ (\g | [^<&]+)* ){0} - (? >){0} - \g''', - "fbbbf", 0, 27, opt=onigmo.ONIG_OPTION_EXTEND) - x2("(.)(?a)(?b)\\k", "xaba", 0, 4) - x2("\\p{Print}+", "\n a", 1, 3) - x2("\\p{Graph}+", "\n a", 2, 3) - n("a(?!b)", "ab"); - x2("(?:(.)\\1)*", "a" * 300, 0, 300) - x2("\\cA\\C-B\\a[\\b]\\t\\n\\v\\f\\r\\e\\c?", "\x01\x02\x07\x08\x09\x0a\x0b\x0c\x0d\x1b\x7f", 0, 11) - x2("(?<=(?:[a-z]|\\w){3})x", "ab1x", 3, 4) # repeat inside look-behind - x2("(?(a|b\\gc){3,5}?)", "baaaaca", 1, 4) - x2("\\p{WoRd}", "a", 0, 1) # property name is not case sensitive - n("[[:WoRd:]]", "a", err=onigmo.ONIGERR_INVALID_POSIX_BRACKET_TYPE) # POSIX bracket name is case sensitive - n("(\\2)(\\1)", "") # Issue #65 - n("(0?0|(?(1)||)|(?(1)||))?", "", err=onigmo.ONIGERR_INVALID_CONDITION_PATTERN) # Ruby Bug#12418 - n("[\\40000000000", "", err=onigmo.ONIGERR_TOO_BIG_NUMBER) # Ruby Bug#12420 - n("[\\600000000000\n", "", err=onigmo.ONIGERR_TOO_BIG_NUMBER) # Ruby Bug#12423 - n("[]", "", err=onigmo.ONIGERR_EMPTY_CHAR_CLASS) - n("[c-a]", "", err=onigmo.ONIGERR_EMPTY_RANGE_IN_CHAR_CLASS) - x2("[[:ab:\\x{30}]]+", ":ab0x", 0, 4) - x2("[[:x\\]:]+", "[x:]", 0, 4) - x2("[!--x]+", "!-x", 0, 3) - x2(" ]", " ]", 0, 2) # warning: ']' without escape - n("\\x{FFFFFFFF}", "", err=onigmo.ONIGERR_TOO_BIG_WIDE_CHAR_VALUE); - n("\\x{100000000}", "", err=onigmo.ONIGERR_TOO_LONG_WIDE_CHAR_VALUE); - x2("\\u0026", "\u0026", 0, 1) - x2("[\\u0024-\\u0027]", "\u0026", 0, 1) - n("\\u026x", "", err=onigmo.ONIGERR_TOO_SHORT_DIGITS) - n("()(?\\!(?'a')\\1)", "", err=onigmo.ONIGERR_UNDEFINED_GROUP_OPTION) - x2("\\i", "i", 0, 1) # unknown escape warning - n("\\((", "", err=onigmo.ONIGERR_END_PATTERN_WITH_UNMATCHED_PARENTHESIS) - n("(|", "", err=onigmo.ONIGERR_END_PATTERN_WITH_UNMATCHED_PARENTHESIS) - x2("%{(.*?)}", "%{HOSTNAME}", 0, 11) - if not is_ascii_incompatible_encoding(onig_encoding): - n(b"'/g\\\xff\xff\xff\xff&))", "", err=onigmo.ONIGERR_UNMATCHED_CLOSE_PARENTHESIS) - n(b"\\\xff0", "") - if onig_encoding == onigmo.ONIG_ENCODING_UTF8: - n(b"[0-0-\xe2 ", "", err=onigmo.ONIGERR_PREMATURE_END_OF_CHAR_CLASS) - n("\\p{foobarbaz}", "", err=onigmo.ONIGERR_INVALID_CHAR_PROPERTY_NAME) - n("\\p{縺}", "", err=onigmo.ONIGERR_INVALID_CHAR_PROPERTY_NAME) - if is_unicode_encoding(onig_encoding): - n("\\p{\U00025771}", "", err=onigmo.ONIGERR_INVALID_CHAR_PROPERTY_NAME) - if onig_encoding == onigmo.ONIG_ENCODING_UTF8: - x2("[\\xce\\xb1\\xce\\xb2]", "ホイ", 0, 1) - elif onig_encoding == onigmo.ONIG_ENCODING_SJIS or \ - onig_encoding == onigmo.ONIG_ENCODING_CP932: - n("[\\x84A]", "", err=onigmo.ONIGERR_TOO_SHORT_MULTI_BYTE_STRING) - elif onig_encoding == onigmo.ONIG_ENCODING_EUC_JP: - n("[\\xAAA]", "", err=onigmo.ONIGERR_TOO_SHORT_MULTI_BYTE_STRING) - elif is_ascii_incompatible_encoding(onig_encoding): - n("[\\x420]", "", err=onigmo.ONIGERR_TOO_SHORT_MULTI_BYTE_STRING) - x2("(?:a?)*", "aa", 0, 2) # tests for reducing nested quantifiers - x2("(?:a?)*?", "aa", 0, 0) - x2("(?:a*)??", "aa", 0, 0) - x2("(?:a+?)*", "aa", 0, 1) - x2("(?:a*){2,3}", "aaa", 0, 3) - n("(?:a+){2,3}", "a") - x2("a{", "a{", 0, 2) # invalid interval is allowed - n("a{100001}", "", err=onigmo.ONIGERR_TOO_BIG_NUMBER_FOR_REPEAT_RANGE) - n("a{0,100001}", "", err=onigmo.ONIGERR_TOO_BIG_NUMBER_FOR_REPEAT_RANGE) - n("a{5,1}", "", err=onigmo.ONIGERR_UPPER_SMALLER_THAN_LOWER_IN_REPEAT_RANGE) - x2("abc{1}", "abcc", 0, 3) - x3("\\(((?:[^(]|\\g<0>)*)\\)", "(abc)(abc)", 1, 4, 1) # Issue #48 - x3("\\(((?:[^(]|\\g<0>)*)\\)", "((abc)(abc))", 1, 11, 1) - x3("\\(((?:[^(]|(\\g<0>))*)\\)", "((abc)(abc))", 6, 11, 2) - - # ONIG_OPTION_FIND_LONGEST option - x2("foo|foobar", "foobar", 0, 3) - x2("foo|foobar", "foobar", 0, 6, opt=onigmo.ONIG_OPTION_FIND_LONGEST) - x2("a*", "aa aaa aaaa aaaaa ", 12, 17, opt=onigmo.ONIG_OPTION_FIND_LONGEST) - - # ONIG_OPTION_FIND_NOT_EMPTY option - x2("\w*", " a", 0, 0) - x2("\w*", " a", 1, 2, opt=onigmo.ONIG_OPTION_FIND_NOT_EMPTY) - - # ONIG_OPTION_DONT_CAPTURE_GROUP option - x2("(ab|cd)*", "cdab", 0, 4, opt=onigmo.ONIG_OPTION_DONT_CAPTURE_GROUP) - n("(ab|cd)*\\1", "", opt=onigmo.ONIG_OPTION_DONT_CAPTURE_GROUP, err=onigmo.ONIGERR_INVALID_BACKREF) - - # character classes (tests for character class optimization) - x2("[@][a]", "@a", 0, 2); - x2(".*[a][b][c][d][e]", "abcde", 0, 5); - x2("(?i)[A\\x{41}]", "a", 0, 1); - x2("[abA]", "a", 0, 1); - x2("[[ab]&&[ac]]+", "aaa", 0, 3); - x2("[[ab]&&[^b]]+", "aaa", 0, 3); - x2("[[^b]&&[ab]]+", "aaa", 0, 3); - x2("[[縺ゅ>]&&[縺ゅ≧]]+", "縺ゅ≠縺", 0, 3); - x2("[[縺ゅ>]&&[^縺Ь]+", "縺ゅ≠縺", 0, 3); - x2("[[^縺Ь&&[縺ゅ>]]+", "縺ゅ≠縺", 0, 3); - - # possessive quantifiers - n("a?+a", "a") - n("a*+a", "aaaa") - n("a++a", "aaaa") - x2("a{2,3}+a", "aaa", 0, 3) # Not a possessive quantifier in Ruby, - # same as "(?:a{2,3})+a" - n("a{2,3}+a", "aaa", syn=onigmo.ONIG_SYNTAX_PERL) - - # automatic possessification - x2("\\w+\\W", "abc#", 0, 4) - x2("[a-c]+\\W", "abc#", 0, 4) - x2("[a-c#]+\\W", "abc#", 0, 4) - x2("[^a-c]+\\W", "def#", 0, 4) - x2("(?a)[^a-c]+\\W", "def#", 0, 4) - x2("a+\\w", "aaaa", 0, 4) - x2("#+\\w", "###a", 0, 4) - x2("(?a)a+\\w", "aaaa", 0, 4) - x2("(?a)縺+\\w", "縺ゅ≠縺B", 0, 4) - x2("[a-c]+[d-f]", "abcd", 0, 4) - x2("[^d-f]+[d-f]", "abcd", 0, 4) - x2("[a-c縺]+[d-f]", "abcd", 0, 4) - - # linebreak - x2("\\R", "\n", 0, 1) - x2("\\R", "\r", 0, 1) - x2("\\R{3}", "\r\r\n\n", 0, 4) - - if (is_unicode_encoding(onig_encoding)): - x2("\\R", "\u0085", 0, 1) - x2("\\R", "\u2028", 0, 1) - x2("\\R", "\u2029", 0, 1) - - # extended grapheme cluster - x2("\\X{5}", "縺ゅ>ab\n", 0, 5) - x2("\\X", "\n", 0, 1) - x2("\\X", "\r", 0, 1) - x2("\\X{3}", "\r\r\n\n", 0, 4) - if is_unicode_encoding(onig_encoding): - x2("\\X", "\u306F\u309A\n", 0, 2) - x2("\\A\\X\\z", "\u0020\u200d", 0, 2) - x2("\\A\\X\\z", "\u0600\u0600", 0, 2) - x2("\\A\\X\\z", "\u0600\u0020", 0, 2) - x2("\\A\\X\\z", "\u261d\U0001F3FB", 0, 2) - x2("\\A\\X\\z", "\U0001f600", 0, 1) - x2("\\A\\X\\z", "\u0020\u0308", 0, 2) - x2("\\A\\X\\X\\z", "\u000a\u0308", 0, 2) - x2("\\A\\X\\X\\z", "\u000d\u0308", 0, 2) - x2("\\A\\X\\z", "\U0001F477\U0001F3FF\u200D\u2640\uFE0F", 0, 5) - x2("\\A\\X\\z", "\U0001F468\u200D\U0001F393", 0, 3) - x2("\\A\\X\\z", "\U0001F46F\u200D\u2642\uFE0F", 0, 4) - x2("\\A\\X\\z", "\U0001F469\u200d\u2764\ufe0f\u200d\U0001F469", 0, 6) - - # keep - x2("ab\\Kcd", "abcd", 2, 4) - x2("ab\\Kc(\\Kd|z)", "abcd", 3, 4) - x2("ab\\Kc(\\Kz|d)", "abcd", 2, 4) - x2("(a\\K)*", "aaab", 3, 3) - x3("(a\\K)*", "aaab", 2, 3, 1) -# x2("a\\K?a", "aa", 0, 2) # error: differ from perl - x2("ab(?=c\Kd)", "abcd", 2, 2) # This behaviour is currently not well defined. (see: perlre) - x2("(?<=a\\Kb|aa)cd", "abcd", 1, 4) # This behaviour is currently not well defined. (see: perlre) - x2("(?<=ab|a\\Ka)cd", "abcd", 2, 4) # This behaviour is currently not well defined. (see: perlre) - - # named group and subroutine call - x2("(?ab)(?&name_2)", "abab", 0, 4, syn=onigmo.ONIG_SYNTAX_PERL); - x2("(?ab)(?1)", "abab", 0, 4, syn=onigmo.ONIG_SYNTAX_PERL); - x2("(?'n'|\\((?&n)\\))+$", "()(())", 0, 6, syn=onigmo.ONIG_SYNTAX_PERL); - x2("(a|x(?-1)x)", "xax", 0, 3, syn=onigmo.ONIG_SYNTAX_PERL); - x2("(a|(x(?-2)x))", "xax", 0, 3, syn=onigmo.ONIG_SYNTAX_PERL); - x2("a|x(?0)x", "xax", 0, 3, syn=onigmo.ONIG_SYNTAX_PERL); - x2("a|x(?R)x", "xax", 0, 3, syn=onigmo.ONIG_SYNTAX_PERL); - x2("(a|x\g<0>x)", "xax", 0, 3); - x2("(a|x\g'0'x)", "xax", 0, 3); - x2("(?-i:(?+1))(?i:(a)){0}", "A", 0, 1, syn=onigmo.ONIG_SYNTAX_PERL); - x2("(?-i:\g<+1>)(?i:(a)){0}", "A", 0, 1); - x2("(?-i:\g'+1')(?i:(a)){0}", "A", 0, 1); - n("(.(?=\\g<1>))", "", err=onigmo.ONIGERR_NEVER_ENDING_RECURSION) - n("(a)(?b)\\g<1>\\g", "abab", err=onigmo.ONIGERR_NUMBERED_BACKREF_OR_CALL_NOT_ALLOWED) - x2("(a)(?b)(?1)(?&n)", "abab", 0, 4, syn=onigmo.ONIG_SYNTAX_PERL) - x2("((?)a)|b\\g<0>b", "bbabb", 0, 5) - x2("((?)a)|b(?0)b", "bbabb", 0, 5, syn=onigmo.ONIG_SYNTAX_PERL) - x2("((?)a|b(?1)b)", "bbabb", 0, 5, syn=onigmo.ONIG_SYNTAX_PERL) - x2("((?a|b(?&v)b))", "bbabb", 0, 5, syn=onigmo.ONIG_SYNTAX_PERL) - n("(?<", "", err=onigmo.ONIGERR_END_PATTERN_WITH_UNMATCHED_PARENTHESIS) - n("(?<>)", "", err=onigmo.ONIGERR_EMPTY_GROUP_NAME) - n("(?<.>)", "", err=onigmo.ONIGERR_INVALID_CHAR_IN_GROUP_NAME) - n("\\g<1->", "", err=onigmo.ONIGERR_INVALID_CHAR_IN_GROUP_NAME) - n("\\k<1/>", "", err=onigmo.ONIGERR_INVALID_GROUP_NAME) - n("\\k<1-1/>", "", err=onigmo.ONIGERR_INVALID_GROUP_NAME) - n("\\k", "", err=onigmo.ONIGERR_INVALID_CHAR_IN_GROUP_NAME) - - # character set modifiers - x2("(?u)\\w+", "縺B#", 0, 2); - x2("(?a)\\w+", "縺B#", 1, 2); - x2("(?u)\\W+", "縺B#", 2, 3); - x2("(?a)\\W+", "縺B#", 0, 1); - - x2("(?a)\\b", "縺B", 1, 1); - x2("(?a)\\w\\b", "a縺", 0, 1); - x2("(?a)\\B", "a 縺ゅ≠ ", 2, 2); - - x2("(?u)\\B", "縺 ", 2, 2); - x2("(?a)\\B", "縺 ", 0, 0); - x2("(?a)\\B", "a縺 ", 2, 2); - - x2("(?a)a\\b", " a", 1, 2) - x2("(?u)a\\b", " a", 1, 2) - n("(?a)a\\B", " a") - n("(?a)縺\\b", " 縺") - x2("(?u)縺\\b", " 縺", 1, 2) - x2("(?a)縺\\B", " 縺", 1, 2) - n("(?u)縺\\B", " 縺") - - x2("(?a)\\p{Alpha}\\P{Alpha}", "a縲", 0, 2); - x2("(?u)\\p{Alpha}\\P{Alpha}", "a縲", 0, 2); - x2("(?a)[[:word:]]+", "a縺", 0, 1); - x2("(?a)[[:^word:]]+", "a縺", 1, 2); - x2("(?u)[[:word:]]+", "a縺", 0, 2); - n("(?u)[[:^word:]]+", "a縺"); - - x2("(?iu)\\p{lower}\\p{upper}", "Ab", 0, 2); - x2("(?ia)\\p{lower}\\p{upper}", "Ab", 0, 2); - x2("(?iu)[[:lower:]][[:upper:]]", "Ab", 0, 2); - x2("(?ia)[[:lower:]][[:upper:]]", "Ab", 0, 2); - - if is_unicode_encoding(onig_encoding): - n("(?ia)\\w+", "\u212a\u017f"); # KELVIN SIGN, LATIN SMALL LETTER LONG S - n("(?ia)[\\w]+", "\u212a\u017f"); - n("(?ia)[^\\W]+", "\u212a\u017f"); - x2("(?ia)[^\\W]+", "ks", 0, 2); - n("(?iu)\\p{ASCII}", "\u212a"); - n("(?iu)\\P{ASCII}", "s"); - n("(?iu)[\\p{ASCII}]", "\u212a"); - n("(?iu)[\\P{ASCII}]", "s"); - n("(?ia)\\p{ASCII}", "\u212a"); - n("(?ia)\\P{ASCII}", "s"); - n("(?ia)[\\p{ASCII}]", "\u212a"); - n("(?ia)[\\P{ASCII}]", "s"); - x2("(?iu)[s]+", "Ss\u017f ", 0, 3); - x2("(?ia)[s]+", "Ss\u017f ", 0, 3); - x2("(?iu)[^s]+", "Ss\u017f ", 3, 4); - x2("(?ia)[^s]+", "Ss\u017f ", 3, 4); - x2("(?iu)[[:lower:]]", "\u017f", 0, 1); - n("(?ia)[[:lower:]]", "\u017f"); - x2("(?u)[[:upper:]]", "\u212a", 0, 1); - n("(?a)[[:upper:]]", "\u212a"); - - # Grep syntax - # \+, \?, \|, \{n,m\} - x2("a\\+", "aa", 0, 2, syn=onigmo.ONIG_SYNTAX_GREP) - n("a\\+", "b", syn=onigmo.ONIG_SYNTAX_GREP) - x2("a\\?", "", 0, 0, syn=onigmo.ONIG_SYNTAX_GREP) - x2("a\\?", "a", 0, 1, syn=onigmo.ONIG_SYNTAX_GREP) - x2("ab\\|cd", "cd", 0, 2, syn=onigmo.ONIG_SYNTAX_GREP) - x2("a\\{1,2\\}", "aaa", 0, 2, syn=onigmo.ONIG_SYNTAX_GREP) - x2("a\\{2\\}", "aaa", 0, 2, syn=onigmo.ONIG_SYNTAX_GREP) - n("a\\{|", "", syn=onigmo.ONIG_SYNTAX_GREP, err=onigmo.ONIGERR_END_PATTERN_AT_LEFT_BRACE) - # \< and \> - x2("\\", " abc ", 1, 4, syn=onigmo.ONIG_SYNTAX_GREP) - n("\\", "zabc ", syn=onigmo.ONIG_SYNTAX_GREP) - n("\\", " abcd", syn=onigmo.ONIG_SYNTAX_GREP) - n("\\", "縺Bbc縺", syn=onigmo.ONIG_SYNTAX_GREP) - x2("\\", "縺Bbc縺", 1, 4, syn=onigmo.ONIG_SYNTAX_GREP, opt=onigmo.ONIG_OPTION_ASCII_RANGE) - n("\\", "zabc縺", syn=onigmo.ONIG_SYNTAX_GREP, opt=onigmo.ONIG_OPTION_ASCII_RANGE) - n("\\", "縺Bbcd", syn=onigmo.ONIG_SYNTAX_GREP, opt=onigmo.ONIG_OPTION_ASCII_RANGE) - # others - n("[^a]", "\n", syn=onigmo.ONIG_SYNTAX_GREP) - x2("*", "*", 0, 1, syn=onigmo.ONIG_SYNTAX_GREP) - #x2("\\{1\\}", "{1}", 0, 3, syn.onigmo.ONIG_SYNTAX_GREP) # fails - n("*", "", err=onigmo.ONIGERR_TARGET_OF_REPEAT_OPERATOR_NOT_SPECIFIED) - n("{1}", "", err=onigmo.ONIGERR_TARGET_OF_REPEAT_OPERATOR_NOT_SPECIFIED) - - # \g{} backref - x2("((?\\d)|(?\\w))(\\g{name1}|\\g{name2})", "ff", 0, 2, syn=onigmo.ONIG_SYNTAX_PERL); - x2("(?:(?)|(?efg))\\g{x}", "", 0, 0, syn=onigmo.ONIG_SYNTAX_PERL); - x2("(?:(?abc)|(?efg))\\g{x}", "efgabcabc", 3, 9, syn=onigmo.ONIG_SYNTAX_PERL); - n("(?:(?abc)|(?efg))\\g{x}", "abcefg", syn=onigmo.ONIG_SYNTAX_PERL); - x2("((.*)a\\g{2}f)", "bacbabf", 3, 7, syn=onigmo.ONIG_SYNTAX_PERL); - x2("(.*)a\\g{1}f", "baczzzzzz\nbazz\nzzzzbabf", 19, 23, syn=onigmo.ONIG_SYNTAX_PERL); - x2("((.*)a\\g{-1}f)", "bacbabf", 3, 7, syn=onigmo.ONIG_SYNTAX_PERL); - x2("(.*)a\\g{-1}f", "baczzzzzz\nbazz\nzzzzbabf", 19, 23, syn=onigmo.ONIG_SYNTAX_PERL); - x2("(縺*)(縺*)\\g{-2}\\g{-1}", "縺ゅ≠縺ゅ>縺縺ゅ≠縺ゅ>縺", 0, 10, syn=onigmo.ONIG_SYNTAX_PERL); - - # Python/PCRE compatible named group - x2("(?Pab)(?P>name_2)", "abab", 0, 4, syn=onigmo.ONIG_SYNTAX_PERL); - x2("(?P|\\((?P>n)\\))+$", "()(())", 0, 6, syn=onigmo.ONIG_SYNTAX_PERL); - x2("((?P\\d)|(?P\\w))((?P=name1)|(?P=name2))", "ff", 0, 2, syn=onigmo.ONIG_SYNTAX_PERL); - n("(?P", "", syn=onigmo.ONIG_SYNTAX_PERL, err=onigmo.ONIGERR_UNDEFINED_GROUP_OPTION) - n("(?PX", "", syn=onigmo.ONIG_SYNTAX_PERL, err=onigmo.ONIGERR_UNDEFINED_GROUP_OPTION) - - # Fullwidth Alphabet - n("ススゑスススススス茨ス会ス奇ス具ス鯉ス搾ス趣ス擾ス撰ス托ス抵ス難ス費ス包ス厄ス暦ス假ス呻ス", "シ。シ「シ」シ、シ・シヲシァシィシゥシェシォシャシュショシッシーシアシイシウシエシオシカシキシクシケシコ"); - x2("(?i)ススゑスススススス茨ス会ス奇ス具ス鯉ス搾ス趣ス擾ス撰ス托ス抵ス難ス費ス包ス厄ス暦ス假ス呻ス", "ススゑスススススス茨ス会ス奇ス具ス鯉ス搾ス趣ス擾ス撰ス托ス抵ス難ス費ス包ス厄ス暦ス假ス呻ス", 0, 26); - x2("(?i)ススゑスススススス茨ス会ス奇ス具ス鯉ス搾ス趣ス擾ス撰ス托ス抵ス難ス費ス包ス厄ス暦ス假ス呻ス", "シ。シ「シ」シ、シ・シヲシァシィシゥシェシォシャシュショシッシーシアシイシウシエシオシカシキシクシケシコ", 0, 26); - x2("(?i)シ。シ「シ」シ、シ・シヲシァシィシゥシェシォシャシュショシッシーシアシイシウシエシオシカシキシクシケシコ", "ススゑスススススス茨ス会ス奇ス具ス鯉ス搾ス趣ス擾ス撰ス托ス抵ス難ス費ス包ス厄ス暦ス假ス呻ス", 0, 26); - x2("(?i)シ。シ「シ」シ、シ・シヲシァシィシゥシェシォシャシュショシッシーシアシイシウシエシオシカシキシクシケシコ", "シ。シ「シ」シ、シ・シヲシァシィシゥシェシォシャシュショシッシーシアシイシウシエシオシカシキシクシケシコ", 0, 26); - - # Greek - n("ホアホイホウホエホオホカホキホクホケホコホサホシホスホセホソマママρママママ委", "ホ対槻鳶釆偏茂緑佩厥墅嶄慚斟榻湮ホ。ホ」ホ、ホ・ホヲホァホィホゥ"); - x2("(?i)ホアホイホウホエホオホカホキホクホケホコホサホシホスホセホソマママρママママ委", "ホアホイホウホエホオホカホキホクホケホコホサホシホスホセホソマママρママママ委", 0, 24); - x2("(?i)ホアホイホウホエホオホカホキホクホケホコホサホシホスホセホソマママρママママ委", "ホ対槻鳶釆偏茂緑佩厥墅嶄慚斟榻湮ホ。ホ」ホ、ホ・ホヲホァホィホゥ", 0, 24); - x2("(?i)ホ対槻鳶釆偏茂緑佩厥墅嶄慚斟榻湮ホ。ホ」ホ、ホ・ホヲホァホィホゥ", "ホアホイホウホエホオホカホキホクホケホコホサホシホスホセホソマママρママママ委", 0, 24); - x2("(?i)ホ対槻鳶釆偏茂緑佩厥墅嶄慚斟榻湮ホ。ホ」ホ、ホ・ホヲホァホィホゥ", "ホ対槻鳶釆偏茂緑佩厥墅嶄慚斟榻湮ホ。ホ」ホ、ホ・ホヲホァホィホゥ", 0, 24); - - # Cyrillic - n("ミーミアミイミウミエミオム岱カミキミクミケミコミサミシミスミセミソムムムびτムムムム尉禾貫錦袴采紗", "ミ籍岱漬寅頒片ミ孟厘侑厰墟嶢慴斷榧渙ミ。ミ「ミ」ミ、ミ・ミヲミァミィミゥミェミォミャミュミョミッ"); - x2("(?i)ミーミアミイミウミエミオム岱カミキミクミケミコミサミシミスミセミソムムムびτムムムム尉禾貫錦袴采紗", "ミーミアミイミウミエミオム岱カミキミクミケミコミサミシミスミセミソムムムびτムムムム尉禾貫錦袴采紗", 0, 33); - x2("(?i)ミーミアミイミウミエミオム岱カミキミクミケミコミサミシミスミセミソムムムびτムムムム尉禾貫錦袴采紗", "ミ籍岱漬寅頒片ミ孟厘侑厰墟嶢慴斷榧渙ミ。ミ「ミ」ミ、ミ・ミヲミァミィミゥミェミォミャミュミョミッ", 0, 33); - x2("(?i)ミ籍岱漬寅頒片ミ孟厘侑厰墟嶢慴斷榧渙ミ。ミ「ミ」ミ、ミ・ミヲミァミィミゥミェミォミャミュミョミッ", "ミーミアミイミウミエミオム岱カミキミクミケミコミサミシミスミセミソムムムびτムムムム尉禾貫錦袴采紗", 0, 33); - x2("(?i)ミ籍岱漬寅頒片ミ孟厘侑厰墟嶢慴斷榧渙ミ。ミ「ミ」ミ、ミ・ミヲミァミィミゥミェミォミャミュミョミッ", "ミ籍岱漬寅頒片ミ孟厘侑厰墟嶢慴斷榧渙ミ。ミ「ミ」ミ、ミ・ミヲミァミィミゥミェミォミャミュミョミッ", 0, 33); - - # multiple name definition - x2("(?a)(?b)\\k", "aba", 0, 3) - x2("(?a)(?b)\\k", "abb", 0, 3) - x2("(?a)(?b)\\g{a}", "aba", 0, 3, syn=onigmo.ONIG_SYNTAX_PERL) - n("(?a)(?b)\\g{a}", "abb", syn=onigmo.ONIG_SYNTAX_PERL) - n("(?a)(?b)\\g", "aba", err=onigmo.ONIGERR_MULTIPLEX_DEFINITION_NAME_CALL) - x2("(?[ac])(?b)(?&a)", "abc", 0, 3, syn=onigmo.ONIG_SYNTAX_PERL) - n("(?[ac])(?b)(?&a)", "abb", syn=onigmo.ONIG_SYNTAX_PERL) - x2("(?:(?abc)|(?efg))(?i:\\k)", "abcefgEFG", 3, 9) - x2("(?a)(?b)(?i:\\k)+", "abAB", 0, 4) - - # branch reset -# x3("(?|(c)|(?:(b)|(a)))", "a", 0, 1, 2) -# x3("(?|(c)|(?|(b)|(a)))", "a", 0, 1, 1) - - # conditional expression - x2("(?:(a)|(b))(?(1)cd)e", "acde", 0, 4) - n("(?:(a)|(b))(?(1)cd)e", "ae") - x2("(?:(a)|(b))(?(2)cd)e", "ae", 0, 2) - n("(?:(a)|(b))(?(2)cd)e", "acde") - x2("(?:(a)|(b))(?(1)c|d)", "ac", 0, 2) - x2("(?:(a)|(b))(?(1)c|d)", "bd", 0, 2) - n("(?:(a)|(b))(?(1)c|d)", "ad") - n("(?:(a)|(b))(?(1)c|d)", "bc") - x2("(?:(a)|(b))(?:(?(1)cd)e|fg)", "acde", 0, 4) - x2("(?:(a)|(b))(?:(?(1)cd|x)e|fg)", "bxe", 0, 3) - n("(?:(a)|(b))(?:(?(2)cd|x)e|fg)", "bxe") - x2("(?:(?a)|(?b))(?:(?()cd|x)e|fg)", "bxe", 0, 3) - n("(?:(?a)|(?b))(?:(?()cd|x)e|fg)", "bxe") - x2("((?<=a))?(?(1)b|c)", "abc", 1, 2) - x2("((?<=a))?(?(1)b|c)", "bc", 1, 2) - x2("((?x)|(?y))(?()y|x)", "xy", 0, 2) - x2("((?x)|(?y))(?()y|x)", "yx", 0, 2) - n("((?x)|(?y))(?()y|x)", "xx") - n("((?x)|(?y))(?()y|x)", "yy") - n("(a)?(?b)?(?(1)a)(?()b)", "aa", err=onigmo.ONIGERR_NUMBERED_BACKREF_OR_CALL_NOT_ALLOWED) - x2("(a)?(?b)?(?(1)a)(?()b)", "aa", 0, 2, syn=onigmo.ONIG_SYNTAX_PERL) - n("()(?(2))", "", err=onigmo.ONIGERR_INVALID_BACKREF) # Issue #65 - n("(?(700000))", "", err=onigmo.ONIGERR_INVALID_BACKREF) - - # Implicit-anchor optimization - x2("(?m:.*abc)", "dddabdd\nddabc", 0, 13) # optimized /(?m:.*abc)/ ==> /\A(?m:.*abc)/ - x2("(?m:.+abc)", "dddabdd\nddabc", 0, 13) # optimized - x2("(?-m:.*abc)", "dddabdd\nddabc", 8, 13) # optimized /(?-m:.*abc)/ ==> /(?:^|\A)(?m:.*abc)/ - n("(?-m:.*ab[x-z])", "dddabdd\nddabc") # optimized - x2("(?-m:.*(?:abc|\\Gabc))", "dddabdd\nddabc", 8, 13) # optimized - x2("(?-m:.+abc)", "dddabdd\nddabc", 8, 13) # optimized - x2("(?-m:.*abc)", "dddabdd\nabc", 8, 11) # optimized - n("(?-m:.+abc)", "dddabdd\nabc") # optimized - x2("(?m:.*\\Z)", "dddabdd\nddabc", 0, 13) # optimized /(?m:.*\Z)/ ==> /\A(?m:.*\Z)/ - x2("(?-m:.*\\Z)", "dddabdd\nddabc", 8, 13) # optimized /(?-m:.*\Z)/ ==> /(?:^|\A)(?m:.*\Z)/ - x2("(.*)X\\1", "1234X2345", 1, 8) # not optimized - - # Allow options in look-behind - x2("(?<=(?i)ab)cd", "ABcd", 2, 4) - x2("(?<=(?i:ab))cd", "ABcd", 2, 4) - n("(?<=(?i)ab)cd", "ABCD") - n("(?<=(?i:ab))cd", "ABCD") - x2("(?)->", "<- ->->", 0, 5) - x2("<-(?~->)->\n", "<-1->2<-3->\n", 6, 12) - x2("<-(?~->)->.*<-(?~->)->", "<-1->2<-3->4<-5->", 0, 17) - x2("<-(?~->)->.*?<-(?~->)->", "<-1->2<-3->4<-5->", 0, 11) - x2("(?~abc)c", "abc", 0, 3) - x2("(?~abc)bc", "abc", 0, 3) - x2("(?~abc)abc", "abc", 0, 3) - n("(?~)", " ") - n("(?~)", "") - n(" (?~)", " ") - n(" (?~)", " ") - x2("(?~(?~))", "abc", 0, 3) - x2("(?~a)", "", 0, 0) - x2("(?~a)a", "a", 0, 1) - x2("(?~a)", "x", 0, 1) - x2("(?~a)a", "xa", 0, 2) - x2("(?~.)", "", 0, 0) - x2("(?~.)a", "a", 0, 1) - x2("(?~.)", "x", 0, 0) - x2("(?~.)a", "xa", 1, 2) - x2("(?~abc)", "abc", 0, 2) - x2("(?~b)", "abc", 0, 1) - x2("(?~abc|b)", "abc", 0, 1) - n("(?~|abc)", "abc") # ??? - x2("(?~abc|)", "abc", 0, 1) # ??? - x2("(?~abc|def)x", "abcx", 1, 4) - x2("(?~abc|def)x", "defx", 1, 4) - x2("^(?~\\S+)TEST", "TEST", 0, 4) - - # Perl syntax - x2("\\Q()\\[a]\\E[b]", "()\\[a]b", 0, 7, syn=onigmo.ONIG_SYNTAX_PERL) - x2("\\Q()\\[a]", "()\\[a]", 0, 6, syn=onigmo.ONIG_SYNTAX_PERL) # no \E - x2("(?a)(?d)\\w+", "縺", 0, 1, syn=onigmo.ONIG_SYNTAX_PERL) # For now (?d) == (?u) - x2("(?a)(?l)\\w+", "縺", 0, 1, syn=onigmo.ONIG_SYNTAX_PERL) # For now (?l) == (?u) - x2("(?a)(?^)\\w+", "縺", 0, 1, syn=onigmo.ONIG_SYNTAX_PERL) - n("(?i)(?^)a", "A", syn=onigmo.ONIG_SYNTAX_PERL) - n("(?m)(?^)a$", "a\nb", syn=onigmo.ONIG_SYNTAX_PERL) - x2("(?s)(?^).*", "a\nb", 0, 1, syn=onigmo.ONIG_SYNTAX_PERL) - x2("\\o{046}", "\046", 0, 1, syn=onigmo.ONIG_SYNTAX_PERL); - x2("[\\o{044}-\\o{047}]", "\046", 0, 1, syn=onigmo.ONIG_SYNTAX_PERL); - n("\\o{40000000000}", "", syn=onigmo.ONIG_SYNTAX_PERL, err=onigmo.ONIGERR_TOO_BIG_WIDE_CHAR_VALUE); - n("\\o{100000000000}", "", syn=onigmo.ONIG_SYNTAX_PERL, err=onigmo.ONIGERR_TOO_LONG_WIDE_CHAR_VALUE); - n("[\\o{40000000000}]", "", syn=onigmo.ONIG_SYNTAX_PERL, err=onigmo.ONIGERR_TOO_BIG_WIDE_CHAR_VALUE); - n("[\\o{100000000000}]", "", syn=onigmo.ONIG_SYNTAX_PERL, err=onigmo.ONIGERR_TOO_LONG_WIDE_CHAR_VALUE); - - # Backward search - x2("abc", "abcabc", 3, 6, searchtype=SearchType.BACKWARD) - x2("縺ゅ>縺", "縺ゅ>縺縺ゅ>縺", 3, 6, searchtype=SearchType.BACKWARD) - x2("(?i)abc", "ABCABC", 3, 6, searchtype=SearchType.BACKWARD) - x2("(?i)ススゑス", "シ。シ「シ」シ。シ「シ」", 3, 6, searchtype=SearchType.BACKWARD) - x2("[a-z]{3}$", "abcabc", 3, 6, searchtype=SearchType.BACKWARD) - x2("[縺-繧転{3}$", "縺ゅ>縺縺ゅ>縺", 3, 6, searchtype=SearchType.BACKWARD) - x2(".*[a-z]bc", "abcabc", 3, 6, searchtype=SearchType.BACKWARD) # Issue #69 - x2(".+[a-z]bc", "abcabc", 2, 6, searchtype=SearchType.BACKWARD) # Issue #69 - x2(".{1,3}[a-z]bc", "abcabc", 2, 6, searchtype=SearchType.BACKWARD) - - # onig_match() - x2("abc", "abcabc", 0, 3, searchtype=SearchType.MATCH) - n("abc", " abcabc", searchtype=SearchType.MATCH) - - # onig_search_gpos() - n("\\Gabc", "123abcdef", gpos=2) - x2("\\Gabc", "123abcdef", 3, 6, gpos=3) - x2("\\Gabc", "123abcdef", 3, 6, startpos=3) - n("\\Gabc", "123abcdef", gpos=0, startpos=3) - x2("abc\\G", "abc", 0, 3, searchtype=SearchType.BACKWARD) - n("abc\\G", "abc ", searchtype=SearchType.BACKWARD) - x2("abc\\G", "abc ", 0, 3, searchtype=SearchType.BACKWARD, endpos=3) - x2("abc\\G", "abc ", 0, 3, searchtype=SearchType.BACKWARD, gpos=3) - - # stack size - stack_size = onigmo.onig_get_match_stack_limit_size() - print("Default stack size:", stack_size) - onigmo.onig_set_match_stack_limit_size(1000) - print("New stack size:", onigmo.onig_get_match_stack_limit_size()) - # These patterns need deep stack. - n("^a*$", "a" * 200 + "b") - n("^a*$", "a" * 2000 + "b", execerr=onigmo.ONIGERR_MATCH_STACK_LIMIT_OVER) - onigmo.onig_set_match_stack_limit_size(0) - - # parse depth - parse_depth = onigmo.onig_get_parse_depth_limit() - print("Default parse depth:", parse_depth) - onigmo.onig_set_parse_depth_limit(1000) - print("New parse depth:", onigmo.onig_get_parse_depth_limit()) - # These patterns need deep parse stack. - x2("(" * 200 + "a" + ")" * 200, "a", 0, 1) - n("(" * 2000 + "a" + ")" * 2000, "a", err=onigmo.ONIGERR_PARSE_DEPTH_LIMIT_OVER) - onigmo.onig_set_match_stack_limit_size(0) - - # syntax functions - onigmo.onig_set_syntax_op(syntax_default, - onigmo.onig_get_syntax_op(onigmo.ONIG_SYNTAX_DEFAULT)) - onigmo.onig_set_syntax_op2(syntax_default, - onigmo.onig_get_syntax_op2(onigmo.ONIG_SYNTAX_DEFAULT)) - onigmo.onig_set_syntax_behavior(syntax_default, - onigmo.onig_get_syntax_behavior(onigmo.ONIG_SYNTAX_DEFAULT)) - onigmo.onig_set_default_syntax(None) - - - print("\nEncoding:", get_encoding_name(onig_encoding)) - print("RESULT SUCC: %d, FAIL: %d, ERROR: %d (by Onigmo %s)" % ( - nsucc, nfail, nerror, onigmo.onig_version())) - - onigmo.onig_end() - - if (nfail == 0 and nerror == 0): - exit(0) - else: - exit(-1) - -if __name__ == '__main__': - main() - diff --git a/vendor/onig/tool/.gitignore b/vendor/onig/tool/.gitignore deleted file mode 100644 index 5658d47..0000000 --- a/vendor/onig/tool/.gitignore +++ /dev/null @@ -1,17 +0,0 @@ -# ignore UCD files -Blocks.txt -CaseFolding.txt -DerivedAge.txt -DerivedCoreProperties.txt -PropList.txt -PropertyAliases.txt -PropertyValueAliases.txt -Scripts.txt -SpecialCasing.txt -UnicodeData.txt -GraphemeBreakProperty.txt - -# ignore generated files -casefold.h -name2ctype.h -name2ctype.kwd diff --git a/vendor/onig/tool/case-folding.rb b/vendor/onig/tool/case-folding.rb deleted file mode 100755 index c86eb8d..0000000 --- a/vendor/onig/tool/case-folding.rb +++ /dev/null @@ -1,419 +0,0 @@ -#!/usr/bin/ruby -require 'stringio' - -# Usage (for case folding only): -# $ wget http://www.unicode.org/Public/UNIDATA/CaseFolding.txt -# $ ruby case-folding.rb CaseFolding.txt -o casefold.h -# or (for case folding and case mapping): -# $ wget http://www.unicode.org/Public/UNIDATA/CaseFolding.txt -# $ wget http://www.unicode.org/Public/UNIDATA/UnicodeData.txt -# $ wget http://www.unicode.org/Public/UNIDATA/SpecialCasing.txt -# $ ruby case-folding.rb -m . -o casefold.h -# using -d or --debug will include UTF-8 characters in comments for debugging - -class CaseFolding - module Util - module_function - - def hex_seq(v) - v.map { |i| "0x%04x" % i }.join(", ") - end - - def print_table_1(dest, type, mapping_data, data) - for k, v in data = data.sort - sk = (Array === k and k.length > 1) ? "{#{hex_seq(k)}}" : ("0x%04x" % k) - if type=='CaseUnfold_11' and v.length>1 - # reorder CaseUnfold_11 entries to avoid special treatment for U+03B9/U+03BC/U+A64B - item = mapping_data.map("%04X" % k[0]) - upper = item.upper if item - v = v.sort_by { |i| ("%04X"%i) == upper ? 0 : 1 } - end - ck = @debug ? ' /* ' + Array(k).pack("U*") + ' */' : '' - cv = @debug ? ' /* ' + Array(v).map{|c|[c].pack("U*")}.join(", ") + ' */' : '' - dest.print(" {#{sk}#{ck}, {#{v.length}#{mapping_data.flags(k, type, v)}, {#{hex_seq(v)}#{cv}}}},\n") - end - data - end - - def print_table(dest, type, mapping_data, data) - dest.print("static const #{type}_Type #{type}_Table[] = {\n") - i = 0 - ret = data.inject([]) do |a, (n, d)| - dest.print("#define #{n} (*(#{type}_Type (*)[#{d.size}])(#{type}_Table+#{i}))\n") - i += d.size - a.concat(print_table_1(dest, type, mapping_data, d)) - end - dest.print("};\n\n") - ret - end - end - - include Util - - attr_reader :fold, :fold_locale, :unfold, :unfold_locale, :version - - def load(filename) - pattern = /([0-9A-F]{4,6}); ([CFT]); ([0-9A-F]{4,6})(?: ([0-9A-F]{4,6}))?(?: ([0-9A-F]{4,6}))?;/ - - @fold = fold = {} - @unfold = unfold = [{}, {}, {}] - @debug = false - @version = nil - turkic = [] - - IO.foreach(filename, mode: "rb") do |line| - @version ||= line[/-([0-9.]+).txt/, 1] - next unless res = pattern.match(line) - ch_from = res[1].to_i(16) - - if res[2] == 'T' - # Turkic case folding - turkic << ch_from - next - end - - # store folding data - ch_to = res[3..6].inject([]) do |a, i| - break a unless i - a << i.to_i(16) - end - fold[ch_from] = ch_to - - # store unfolding data - i = ch_to.length - 1 - (unfold[i][ch_to] ||= []) << ch_from - end - - # move locale dependent data to (un)fold_locale - @fold_locale = fold_locale = {} - @unfold_locale = unfold_locale = [{}, {}] - for ch_from in turkic - key = fold[ch_from] - i = key.length - 1 - unfold_locale[i][i == 0 ? key[0] : key] = unfold[i].delete(key) - fold_locale[ch_from] = fold.delete(ch_from) - end - self - end - - def range_check(code) - "#{code} <= MAX_CODE_VALUE && #{code} >= MIN_CODE_VALUE" - end - - def lookup_hash(key, type, data) - hash = "onigenc_unicode_#{key}_hash" - lookup = "onigenc_unicode_#{key}_lookup" - arity = Array(data[0][0]).size - gperf = %W"gperf -7 -k#{[*1..(arity*3)].join(',')} -F,-1 -c -j1 -i1 -t -T -E -C -H #{hash} -N #{lookup} -n" - argname = arity > 1 ? "codes" : "code" - argdecl = "const OnigCodePoint #{arity > 1 ? "*": ""}#{argname}" - n = 7 - m = (1 << n) - 1 - min, max = data.map {|c, *|c}.flatten.minmax - src = IO.popen(gperf, "r+") {|f| - f << "short\n%%\n" - data.each_with_index {|(k, _), i| - k = Array(k) - ks = k.map {|j| [(j >> n*2) & m, (j >> n) & m, (j) & m]}.flatten.map {|c| "\\x%.2x" % c}.join("") - f.printf "\"%s\", ::::/*%s*/ %d\n", ks, k.map {|c| "0x%.4x" % c}.join(","), i - } - f << "%%\n" - f.close_write - f.read - } - src.sub!(/^(#{hash})\s*\(.*?\).*?\n\{\n(.*)^\}/m) { - name = $1 - body = $2 - body.gsub!(/\(unsigned char\)str\[(\d+)\]/, "bits_#{arity > 1 ? 'at' : 'of'}(#{argname}, \\1)") - "#{name}(#{argdecl})\n{\n#{body}}" - } - src.sub!(/const short *\*\n^(#{lookup})\s*\(.*?\).*?\n\{\n(.*)^\}/m) { - name = $1 - body = $2 - body.sub!(/\benum\s+\{(\n[ \t]+)/, "\\&MIN_CODE_VALUE = 0x#{min.to_s(16)},\\1""MAX_CODE_VALUE = 0x#{max.to_s(16)},\\1") - body.gsub!(/(#{hash})\s*\(.*?\)/, "\\1(#{argname})") - body.gsub!(/\{"",-1}/, "-1") - body.gsub!(/\{"(?:[^"]|\\")+", *::::(.*)\}/, '\1') - body.sub!(/(\s+if\s)\(len\b.*\)/) do - "#$1(" << - (arity > 1 ? (0...arity).map {|i| range_check("#{argname}[#{i}]")}.join(" &&\n ") : range_check(argname)) << - ")" - end - v = nil - body.sub!(/(if\s*\(.*MAX_HASH_VALUE.*\)\n([ \t]*))\{(.*?)\n\2\}/m) { - pre = $1 - indent = $2 - s = $3 - s.sub!(/const char *\* *(\w+)( *= *wordlist\[\w+\]).\w+/, 'short \1 = wordlist[key]') - v = $1 - s.sub!(/\bif *\(.*\)/, "if (#{v} >= 0 && code#{arity}_equal(#{argname}, #{key}_Table[#{v}].from))") - "#{pre}{#{s}\n#{indent}}" - } - body.sub!(/\b(return\s+&)([^;]+);/, '\1'"#{key}_Table[#{v}].to;") - "static const #{type} *\n#{name}(#{argdecl})\n{\n#{body}}" - } - src - end - - def display(dest, mapping_data) - # print the header - dest.print("/* DO NOT EDIT THIS FILE. */\n") - dest.print("/* Generated by tool/case-folding.rb */\n\n") - - versions = version.scan(/\d+/) - dest.print("#if defined ONIG_UNICODE_VERSION_STRING && !( \\\n") - %w[MAJOR MINOR TEENY].zip(versions) do |n, v| - dest.print(" ONIG_UNICODE_VERSION_#{n} == #{v} && \\\n") - end - dest.print(" 1)\n") - dest.print("# error ONIG_UNICODE_VERSION_STRING mismatch\n") - dest.print("#endif\n") - dest.print("#define ONIG_UNICODE_VERSION_STRING #{version.dump}\n") - %w[MAJOR MINOR TEENY].zip(versions) do |n, v| - dest.print("#define ONIG_UNICODE_VERSION_#{n} #{v}\n") - end - dest.print("\n") - - # print folding data - - # CaseFold + CaseFold_Locale - name = "CaseFold_11" - data = print_table(dest, name, mapping_data, "CaseFold"=>fold, "CaseFold_Locale"=>fold_locale) - dest.print lookup_hash(name, "CodePointList3", data) - - # print unfolding data - - # CaseUnfold_11 + CaseUnfold_11_Locale - name = "CaseUnfold_11" - data = print_table(dest, name, mapping_data, name=>unfold[0], "#{name}_Locale"=>unfold_locale[0]) - dest.print lookup_hash(name, "CodePointList3", data) - - # CaseUnfold_12 + CaseUnfold_12_Locale - name = "CaseUnfold_12" - data = print_table(dest, name, mapping_data, name=>unfold[1], "#{name}_Locale"=>unfold_locale[1]) - dest.print lookup_hash(name, "CodePointList2", data) - - # CaseUnfold_13 - name = "CaseUnfold_13" - data = print_table(dest, name, mapping_data, name=>unfold[2]) - dest.print lookup_hash(name, "CodePointList2", data) - - # TitleCase - dest.print mapping_data.specials_output - end - - def debug! - @debug = true - end - - def self.load(*args) - new.load(*args) - end -end - -class MapItem - attr_accessor :upper, :lower, :title, :code - - def initialize(code, upper, lower, title) - @code = code - @upper = upper unless upper == '' - @lower = lower unless lower == '' - @title = title unless title == '' - end -end - -class CaseMapping - attr_reader :filename, :version - - def initialize(mapping_directory) - @mappings = {} - @specials = [] - @specials_length = 0 - @version = nil - IO.foreach(File.join(mapping_directory, 'UnicodeData.txt'), mode: "rb") do |line| - next if line =~ /^ 1 - end - if mapping_directory - if ARGV[0] - warn "Either specify directory or individual file, but not both." - exit - end - filename = File.join(mapping_directory, 'CaseFolding.txt') - mapping_data = CaseMapping.load(mapping_directory) - end - filename ||= ARGV[0] || 'CaseFolding.txt' - data = CaseFolding.load(filename) - if mapping_data and data.version != mapping_data.version - abort "Unicode data version mismatch\n" \ - " #{filename} = #{data.version}\n" \ - " #{mapping_data.filename} = #{mapping_data.version}" - end - mapping_data ||= CaseMappingDummy.new - - if debug - data.debug! - mapping_data.debug! - end - f = StringIO.new - begin - data.display(f, mapping_data) - rescue Errno::ENOENT => e - raise unless /gperf/ =~ e.message - warn e.message - abort unless dest - File.utime(nil, nil, dest) # assume existing file is OK - exit - else - s = f.string - end - if dest - open(dest, "wb") do |f| - f.print(s) - end - else - STDOUT.print(s) - end -end diff --git a/vendor/onig/tool/convert-jis-props.sh b/vendor/onig/tool/convert-jis-props.sh deleted file mode 100755 index 5eb008c..0000000 --- a/vendor/onig/tool/convert-jis-props.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh - -# Convert props.kwd to props.h using GNU gperf. -# -# Usage: -# ./tool/convert-jis-props.sh enc/jis/props.kwd enc/jis/props.h - -JIS_PROPS_OPTIONS='-k1,3 -7 -c -j1 -i1 -t -C -P -t --ignore-case -H onig_jis_property_hash -Q onig_jis_property_pool -N onig_jis_property' - -gperf $JIS_PROPS_OPTIONS $1 | \ - sed 's/(int)(\(long\|size_t\))&((\([a-zA-Z_0-9 ]*[a-zA-Z_0-9]\) *\*)0)->\([a-zA-Z0-9_]*\),/(char)offsetof(\2, \3),/g' > $2 diff --git a/vendor/onig/tool/download-ucd.sh b/vendor/onig/tool/download-ucd.sh deleted file mode 100755 index 770fdf7..0000000 --- a/vendor/onig/tool/download-ucd.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/bash - -files='Blocks.txt CaseFolding.txt DerivedAge.txt DerivedCoreProperties.txt PropertyAliases.txt PropertyValueAliases.txt PropList.txt Scripts.txt SpecialCasing.txt UnicodeData.txt auxiliary/GraphemeBreakProperty.txt' - -if [ -z $1 ]; then - echo "usage: $0 UNICODE_VERSION" - exit 1 -fi -UNICODE_VERSION=$1 - -# remove old files -if [ -d $UNICODE_VERSION ]; then - cd $UNICODE_VERSION - rm -f $files - rm -f GraphemeBreakProperty.txt - cd - -fi - -mkdir -p $UNICODE_VERSION/auxiliary -cd $UNICODE_VERSION - -for i in $files; do - echo http://www.unicode.org/Public/${UNICODE_VERSION}/ucd/$i -done | xargs wget -mv GraphemeBreakProperty.txt auxiliary diff --git a/vendor/onig/tool/enc-unicode.rb b/vendor/onig/tool/enc-unicode.rb deleted file mode 100755 index ed45a30..0000000 --- a/vendor/onig/tool/enc-unicode.rb +++ /dev/null @@ -1,543 +0,0 @@ -#!/usr/bin/env ruby - -# Creates the data structures needed by Oniguruma to map Unicode codepoints to -# property names and POSIX character classes -# -# To use this, get UnicodeData.txt, Scripts.txt, PropList.txt, -# PropertyAliases.txt, PropertyValueAliases.txt, DerivedCoreProperties.txt, -# DerivedAge.txt and Blocks.txt from unicode.org. -# (http://unicode.org/Public/UNIDATA/) And run following command. -# ruby1.9 tool/enc-unicode.rb data_dir > enc/unicode/name2ctype.kwd -# You can get source file for gperf. After this, simply make ruby. - -if ARGV[0] == "--header" - header = true - ARGV.shift -end -unless ARGV.size == 1 - abort "Usage: #{$0} data_directory" -end - -$unicode_version = File.basename(ARGV[0])[/\A[.\d]+\z/] - -POSIX_NAMES = %w[NEWLINE Alpha Blank Cntrl Digit Graph Lower Print XPosixPunct Space Upper XDigit Word Alnum ASCII Punct] - -def pair_codepoints(codepoints) - - # We have a sorted Array of codepoints that we wish to partition into - # ranges such that the start- and endpoints form an inclusive set of - # codepoints with property _property_. Note: It is intended that some ranges - # will begin with the value with which they end, e.g. 0x0020 -> 0x0020 - - codepoints.sort! - last_cp = codepoints.first - pairs = [[last_cp, nil]] - codepoints[1..-1].each do |codepoint| - next if last_cp == codepoint - - # If the current codepoint does not follow directly on from the last - # codepoint, the last codepoint represents the end of the current range, - # and the current codepoint represents the start of the next range. - if last_cp.next != codepoint - pairs[-1][-1] = last_cp - pairs << [codepoint, nil] - end - last_cp = codepoint - end - - # The final pair has as its endpoint the last codepoint for this property - pairs[-1][-1] = codepoints.last - pairs -end - -def parse_unicode_data(file) - last_cp = 0 - data = {'Any' => (0x0000..0x10ffff).to_a, 'Assigned' => [], - 'ASCII' => (0..0x007F).to_a, 'NEWLINE' => [0x0a], 'Cn' => []} - beg_cp = nil - IO.foreach(file) do |line| - fields = line.split(';') - cp = fields[0].to_i(16) - - case fields[1] - when /\A<(.*),\s*First>\z/ - beg_cp = cp - next - when /\A<(.*),\s*Last>\z/ - cps = (beg_cp..cp).to_a - else - beg_cp = cp - cps = [cp] - end - - # The Cn category represents unassigned characters. These are not listed in - # UnicodeData.txt so we must derive them by looking for 'holes' in the range - # of listed codepoints. We increment the last codepoint seen and compare it - # with the current codepoint. If the current codepoint is less than - # last_cp.next we have found a hole, so we add the missing codepoint to the - # Cn category. - data['Cn'].concat((last_cp.next...beg_cp).to_a) - - # Assigned - Defined in unicode.c; interpreted as every character in the - # Unicode range minus the unassigned characters - data['Assigned'].concat(cps) - - # The third field denotes the 'General' category, e.g. Lu - (data[fields[2]] ||= []).concat(cps) - - # The 'Major' category is the first letter of the 'General' category, e.g. - # 'Lu' -> 'L' - (data[fields[2][0,1]] ||= []).concat(cps) - last_cp = cp - end - - # The last Cn codepoint should be 0x10ffff. If it's not, append the missing - # codepoints to Cn and C - cn_remainder = (last_cp.next..0x10ffff).to_a - data['Cn'] += cn_remainder - data['C'] += data['Cn'] - - # Special case for LC (Cased_Letter). LC = Ll + Lt + Lu - data['LC'] = data['Ll'] + data['Lt'] + data['Lu'] - - # Define General Category properties - gcps = data.keys.sort - POSIX_NAMES - - # Returns General Category Property names and the data - [gcps, data] -end - -def define_posix_props(data) - # We now derive the character classes (POSIX brackets), e.g. [[:alpha:]] - # - - data['Alpha'] = data['Alphabetic'] - data['Upper'] = data['Uppercase'] - data['Lower'] = data['Lowercase'] - data['Punct'] = data['Punctuation'] - data['XPosixPunct'] = data['Punctuation'] + [0x24, 0x2b, 0x3c, 0x3d, 0x3e, 0x5e, 0x60, 0x7c, 0x7e] - data['Digit'] = data['Decimal_Number'] - data['XDigit'] = (0x0030..0x0039).to_a + (0x0041..0x0046).to_a + - (0x0061..0x0066).to_a - data['Alnum'] = data['Alpha'] + data['Digit'] - data['Space'] = data['White_Space'] - data['Blank'] = data['Space_Separator'] + [0x0009] - data['Cntrl'] = data['Cc'] - data['Word'] = data['Alpha'] + data['Mark'] + data['Digit'] + data['Connector_Punctuation'] - data['Graph'] = data['Any'] - data['Space'] - data['Cntrl'] - - data['Surrogate'] - data['Unassigned'] - data['Print'] = data['Graph'] + data['Space_Separator'] -end - -def parse_scripts(data, categories) - files = [ - {:fn => 'DerivedCoreProperties.txt', :title => 'Derived Property'}, - {:fn => 'Scripts.txt', :title => 'Script'}, - {:fn => 'PropList.txt', :title => 'Binary Property'} - ] - current = nil - cps = [] - names = {} - files.each do |file| - data_foreach(file[:fn]) do |line| - if /^# Total code points: / =~ line - data[current] = cps - categories[current] = file[:title] - (names[file[:title]] ||= []) << current - cps = [] - elsif /^([0-9a-fA-F]+)(?:\.\.([0-9a-fA-F]+))?\s*;\s*(\w+)/ =~ line - current = $3 - $2 ? cps.concat(($1.to_i(16)..$2.to_i(16)).to_a) : cps.push($1.to_i(16)) - end - end - end - # All code points not explicitly listed for Script - # have the value Unknown (Zzzz). - data['Unknown'] = (0..0x10ffff).to_a - data.values_at(*names['Script']).flatten - categories['Unknown'] = 'Script' - names.values.flatten << 'Unknown' -end - -def parse_aliases(data) - kv = {} - data_foreach('PropertyAliases.txt') do |line| - next unless /^(\w+)\s*; (\w+)/ =~ line - data[$1] = data[$2] - kv[normalize_propname($1)] = normalize_propname($2) - end - data_foreach('PropertyValueAliases.txt') do |line| - next unless /^(sc|gc)\s*; (\w+)\s*; (\w+)(?:\s*; (\w+))?/ =~ line - if $1 == 'gc' - data[$3] = data[$2] - data[$4] = data[$2] - kv[normalize_propname($3)] = normalize_propname($2) - kv[normalize_propname($4)] = normalize_propname($2) if $4 - else - data[$2] = data[$3] - data[$4] = data[$3] - kv[normalize_propname($2)] = normalize_propname($3) - kv[normalize_propname($4)] = normalize_propname($3) if $4 - end - end - kv -end - -# According to Unicode6.0.0/ch03.pdf, Section 3.1, "An update version -# never involves any additions to the character repertoire." Versions -# in DerivedAge.txt should always be /\d+\.\d+/ -def parse_age(data) - current = nil - last_constname = nil - cps = [] - ages = [] - data_foreach('DerivedAge.txt') do |line| - if /^# Total code points: / =~ line - constname = constantize_agename(current) - # each version matches all previous versions - cps.concat(data[last_constname]) if last_constname - data[constname] = cps - make_const(constname, cps, "Derived Age #{current}") - ages << current - last_constname = constname - cps = [] - elsif /^([0-9a-fA-F]+)(?:\.\.([0-9a-fA-F]+))?\s*;\s*(\d+\.\d+)/ =~ line - current = $3 - $2 ? cps.concat(($1.to_i(16)..$2.to_i(16)).to_a) : cps.push($1.to_i(16)) - end - end - ages -end - -def parse_GraphemeBreakProperty(data) - current = nil - cps = [] - ages = [] - data_foreach('auxiliary/GraphemeBreakProperty.txt') do |line| - if /^# Total code points: / =~ line - constname = constantize_Grapheme_Cluster_Break(current) - data[constname] = cps - make_const(constname, cps, "Grapheme_Cluster_Break=#{current}") - ages << current - cps = [] - elsif /^([0-9a-fA-F]+)(?:\.\.([0-9a-fA-F]+))?\s*;\s*(\w+)/ =~ line - current = $3 - $2 ? cps.concat(($1.to_i(16)..$2.to_i(16)).to_a) : cps.push($1.to_i(16)) - end - end - ages -end - -def parse_block(data) - current = nil - cps = [] - blocks = [] - data_foreach('Blocks.txt') do |line| - if /^([0-9a-fA-F]+)\.\.([0-9a-fA-F]+);\s*(.*)/ =~ line - cps = ($1.to_i(16)..$2.to_i(16)).to_a - constname = constantize_blockname($3) - data[constname] = cps - make_const(constname, cps, "Block") - blocks << constname - end - end - - # All code points not belonging to any of the named blocks - # have the value No_Block. - no_block = (0..0x10ffff).to_a - data.values_at(*blocks).flatten - constname = constantize_blockname("No_Block") - make_const(constname, no_block, "Block") - blocks << constname -end - -# shim for Ruby 1.8 -unless {}.respond_to?(:key) - class Hash - alias key index - end -end - -$const_cache = {} -# make_const(property, pairs, name): Prints a 'static const' structure for a -# given property, group of paired codepoints, and a human-friendly name for -# the group -def make_const(prop, data, name) - if name.empty? - puts "\n/* '#{prop}' */" - else - puts "\n/* '#{prop}': #{name} */" - end - if origprop = $const_cache.key(data) - puts "#define CR_#{prop} CR_#{origprop}" - else - $const_cache[prop] = data - pairs = pair_codepoints(data) - puts "static const OnigCodePoint CR_#{prop}[] = {" - # The first element of the constant is the number of pairs of codepoints - puts "\t#{pairs.size}," - pairs.each do |pair| - pair.map! { |c| c == 0 ? '0x0000' : sprintf("%0#6x", c) } - puts "\t#{pair.first}, #{pair.last}," - end - puts "}; /* CR_#{prop} */" - end -end - -def normalize_propname(name) - name = name.downcase - name.delete!('- _') - name -end - -def constantize_agename(name) - "Age_#{name.sub(/\./, '_')}" -end - -def constantize_Grapheme_Cluster_Break(name) - "Grapheme_Cluster_Break_#{name}" -end - -def constantize_blockname(name) - "In_#{name.gsub(/\W/, '_')}" -end - -def get_file(name) - File.join(ARGV[0], name) -end - -def data_foreach(name, &block) - fn = get_file(name) - warn "Reading #{name}" - pat = /^# #{File.basename(name).sub(/\./, '-([\\d.]+)\\.')}/ - File.open(fn, 'rb') do |f| - line = f.gets - unless pat =~ line - raise ArgumentError, "#{name}: no Unicode version" - end - if !$unicode_version - $unicode_version = $1 - elsif $unicode_version != $1 - raise ArgumentError, "#{name}: Unicode version mismatch: #$1" - end - f.each(&block) - end -end - -# Write Data -class Unifdef - attr_accessor :output, :top, :stack, :stdout, :kwdonly - def initialize(out) - @top = @output = [] - @stack = [] - $stdout, @stdout = self, out - end - def restore - $stdout = @stdout - end - def ifdef(sym) - if @kwdonly - @stdout.puts "#ifdef #{sym}" - else - @stack << @top - @top << tmp = [sym] - @top = tmp - end - if block_given? - begin - return yield - ensure - endif(sym) - end - end - end - def endif(sym) - if @kwdonly - @stdout.puts "#endif /* #{sym} */" - else - unless sym == @top[0] - restore - raise ArgumentError, "#{sym} unmatch to #{@top[0]}" - end - @top = @stack.pop - end - end - def show(dest, *syms) - _show(dest, @output, syms) - end - def _show(dest, ary, syms) - if Symbol === (sym = ary[0]) - unless syms.include?(sym) - return - end - end - ary.each do |e| - case e - when Array - _show(dest, e, syms) - when String - dest.print e - end - end - end - def write(str) - if @kwdonly - @stdout.write(str) - else - @top << str - end - self - end - alias << write -end - -output = Unifdef.new($stdout) -output.kwdonly = !header - -puts '%{' -props, data = parse_unicode_data(get_file('UnicodeData.txt')) -categories = {} -props.concat parse_scripts(data, categories) -aliases = parse_aliases(data) -ages = blocks = graphemeBreaks = nil -define_posix_props(data) -POSIX_NAMES.each do |name| - if name == 'XPosixPunct' - make_const(name, data[name], "[[:Punct:]]") - elsif name == 'Punct' - make_const(name, data[name], "") - else - make_const(name, data[name], "[[:#{name}:]]") - end -end -output.ifdef :USE_UNICODE_PROPERTIES do - props.each do |name| - category = categories[name] || - case name.size - when 1 then 'Major Category' - when 2 then 'General Category' - else '-' - end - make_const(name, data[name], category) - end - output.ifdef :USE_UNICODE_AGE_PROPERTIES do - ages = parse_age(data) - end - graphemeBreaks = parse_GraphemeBreakProperty(data) - blocks = parse_block(data) -end -puts(<<'__HEREDOC') - -static const OnigCodePoint* const CodeRanges[] = { -__HEREDOC -POSIX_NAMES.each{|name|puts" CR_#{name},"} -output.ifdef :USE_UNICODE_PROPERTIES do - props.each{|name| puts" CR_#{name},"} - output.ifdef :USE_UNICODE_AGE_PROPERTIES do - ages.each{|name| puts" CR_#{constantize_agename(name)},"} - end - graphemeBreaks.each{|name| puts" CR_#{constantize_Grapheme_Cluster_Break(name)},"} - blocks.each{|name|puts" CR_#{name},"} -end - -puts(<<'__HEREDOC') -}; -struct uniname2ctype_struct { - short name; - unsigned short ctype; -}; -#define uniname2ctype_offset(str) offsetof(struct uniname2ctype_pool_t, uniname2ctype_pool_##str) - -static const struct uniname2ctype_struct *uniname2ctype_p(const char *, unsigned int); -%} -struct uniname2ctype_struct; -%% -__HEREDOC - -i = -1 -name_to_index = {} -POSIX_NAMES.each do |name| - i += 1 - next if name == 'NEWLINE' - name = normalize_propname(name) - name_to_index[name] = i - puts"%-40s %3d" % [name + ',', i] -end -output.ifdef :USE_UNICODE_PROPERTIES do - props.each do |name| - i += 1 - name = normalize_propname(name) - name_to_index[name] = i - puts "%-40s %3d" % [name + ',', i] - end - aliases.each_pair do |k, v| - next if name_to_index[k] - next unless v = name_to_index[v] - puts "%-40s %3d" % [k + ',', v] - end - output.ifdef :USE_UNICODE_AGE_PROPERTIES do - ages.each do |name| - i += 1 - name = "age=#{name}" - name_to_index[name] = i - puts "%-40s %3d" % [name + ',', i] - end - end - graphemeBreaks.each do |name| - i += 1 - name = "graphemeclusterbreak=#{name.delete('_').downcase}" - name_to_index[name] = i - puts "%-40s %3d" % [name + ',', i] - end - blocks.each do |name| - i += 1 - name = normalize_propname(name) - name_to_index[name] = i - puts "%-40s %3d" % [name + ',', i] - end -end -puts(<<'__HEREDOC') -%% -static int -uniname2ctype(const UChar *name, unsigned int len) -{ - const struct uniname2ctype_struct *p = uniname2ctype_p((const char *)name, len); - if (p) return p->ctype; - return -1; -} -__HEREDOC -versions = $unicode_version.scan(/\d+/) -print("#if defined ONIG_UNICODE_VERSION_STRING && !( \\\n") -%w[MAJOR MINOR TEENY].zip(versions) do |n, v| - print(" ONIG_UNICODE_VERSION_#{n} == #{v} && \\\n") -end -print(" 1)\n") -print("# error ONIG_UNICODE_VERSION_STRING mismatch\n") -print("#endif\n") -print("#define ONIG_UNICODE_VERSION_STRING #{$unicode_version.dump}\n") -%w[MAJOR MINOR TEENY].zip(versions) do |n, v| - print("#define ONIG_UNICODE_VERSION_#{n} #{v}\n") -end - -output.restore - -if header - require 'tempfile' - - NAME2CTYPE = %w[gperf -7 -c -j1 -i1 -t -C -P -T -H uniname2ctype_hash -Q uniname2ctype_pool -N uniname2ctype_p] - - fds = [] - syms = %i[USE_UNICODE_PROPERTIES USE_UNICODE_AGE_PROPERTIES] - begin - fds << (tmp = Tempfile.new(%w"name2ctype .h")) - IO.popen([*NAME2CTYPE, out: tmp], "w") {|f| output.show(f, *syms)} - end while syms.pop - fds.each(&:close) - IO.popen(%W[diff -DUSE_UNICODE_AGE_PROPERTIES #{fds[1].path} #{fds[0].path}], "r") {|age| - IO.popen(%W[diff -DUSE_UNICODE_PROPERTIES #{fds[2].path} -], "r", in: age) {|f| - f.each {|line| - line.gsub!(/\(int\)\((?:long|size_t)\)&\(\(struct uniname2ctype_pool_t \*\)0\)->uniname2ctype_pool_(str\d+),\s+/, - 'uniname2ctype_offset(\1), ') - puts line - } - } - } -end diff --git a/vendor/onig/tool/update-doc.py b/vendor/onig/tool/update-doc.py deleted file mode 100755 index 14de047..0000000 --- a/vendor/onig/tool/update-doc.py +++ /dev/null @@ -1,144 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -# Usage: -# $ python update-doc.py UCD_DIR > ../doc/UnicodeProps.txt - -from __future__ import print_function -import sys -import os -import re -import datetime - -onig_ver = "6.0.0" -ucddir = "." - -def print_list(arr, title): - print() - print("*", title) - for i in arr: - print(" " + i) - -def output_header(): - d = datetime.date.today() - print("Onigmo (Oniguruma-mod) Unicode Properties Version %s %04d/%02d/%02d" - % (onig_ver, d.year, d.month, d.day)) - - posix_brackets = [ - "Alpha", "Blank", "Cntrl", "Digit", "Graph", "Lower", "Print", - "Punct", "Space", "Upper", "XDigit", "Word", "Alnum", "ASCII", - "XPosixPunct" - ] - specials = ["Any", "Assigned"] - - print_list(posix_brackets, "POSIX brackets") - print_list(specials, "Special") - return set(posix_brackets) | set(specials) - -def output_categories(): - categories = set(["LC", "Cn"]) - pattern = re.compile('^.*?;.*?;(..);') - with open(ucddir + os.sep + 'UnicodeData.txt', 'r') as f: - for line in f: - res = pattern.match(line) - if not res: - continue - categories.add(res.group(1)) - categories.add(res.group(1)[0]) # Major category - print_list(sorted(categories), "Major and General Categories") - return categories - -def output_scripts(filename, title, add=[]): - scripts = set(add) - pattern = re.compile('^.*?; (\w+) # ') - with open(filename, 'r') as f: - for line in f: - res = pattern.match(line) - if not res: - continue - scripts.add(res.group(1)) - print_list(sorted(scripts), title) - return scripts - -def output_aliases(scripts): - aliases = set() - pattern = re.compile('^(\w+) *; (\w+)') - with open(ucddir + os.sep + 'PropertyAliases.txt', 'r') as f: - for line in f: - res = pattern.match(line) - if not res: - continue - if (res.group(2) in scripts) and (res.group(1) not in scripts): - aliases.add(res.group(1)) - print_list(sorted(aliases), "PropertyAliases") - return aliases - -def output_valuealiases(scripts): - scripts |= set(["cntrl", "digit", "punct"]) # exclude them - aliases = list() - aliases_sc = list() - pattern = re.compile('^(gc|sc) ; (\w+) *; (\w+)(?: *; (\w+))?') - with open(ucddir + os.sep + 'PropertyValueAliases.txt', 'r') as f: - for line in f: - res = pattern.match(line) - if not res: - continue - if (res.group(1) == "gc"): - if res.group(2) in scripts: - if res.group(3) not in scripts: - aliases.append(res.group(3)) - if res.group(4) and (res.group(4) not in scripts): - aliases.append(res.group(4)) - else: - if res.group(3) in scripts: - if res.group(2) not in scripts: - aliases_sc.append(res.group(2)) - if res.group(4) and (res.group(4) not in scripts): - aliases_sc.append(res.group(4)) - - print_list(aliases, "PropertyValueAliases (General_Category)") - print_list(aliases_sc, "PropertyValueAliases (Script)") - return set(aliases) | set(aliases_sc) - -def output_ages(): - ages = set() - pattern = re.compile('^[\dA-F.]+ *; ([\d.]+)') - with open(ucddir + os.sep + 'DerivedAge.txt', 'r') as f: - for line in f: - res = pattern.match(line) - if not res: - continue - ages.add("Age=" + res.group(1)) - print_list(sorted(ages), "DerivedAges") - return ages - -def output_blocks(): - blocks = list() - pattern = re.compile('^[\dA-F.]+ *; ([-\w ]+)') - with open(ucddir + os.sep + 'Blocks.txt', 'r') as f: - for line in f: - res = pattern.match(line) - if not res: - continue - blocks.append("In_" + re.sub('\W', '_', res.group(1))) - blocks.append("In_No_Block") - print_list(blocks, "Blocks") - return set(blocks) - -def main(): - global ucddir - if len(sys.argv) > 1: - ucddir = sys.argv[1] - scripts = set() - scripts |= output_header() - scripts |= output_categories() - scripts |= output_scripts(ucddir + os.sep + 'Scripts.txt', 'Scripts', ["Unknown"]) - scripts |= output_scripts(ucddir + os.sep + 'DerivedCoreProperties.txt', 'DerivedCoreProperties') - scripts |= output_scripts(ucddir + os.sep + 'PropList.txt', 'PropList') - output_aliases(scripts) - output_valuealiases(scripts) - output_ages() - output_blocks() - -if __name__ == '__main__': - main() diff --git a/vendor/onig/win32/Makefile.mingw b/vendor/onig/win32/Makefile.mingw deleted file mode 100644 index 041d283..0000000 --- a/vendor/onig/win32/Makefile.mingw +++ /dev/null @@ -1,252 +0,0 @@ -# Onigmo Makefile for mingw32 - -product_name = onigmo - -# Comment out the next line, if you don't want to use LTCG. -USE_LTCG = 1 - -# Enable the next line, if you want to use a .def file. -#DEFFILE = onig.def - - -# Get the default ARCH. (i686, x86-64, etc.) -ifndef ARCH -ARCH := $(shell $(CC) -dumpmachine | sed -e 's/-.*//' -e 's/_/-/' -e 's/^mingw32$$/i686/') -endif - - -CPPFLAGS = -CFLAGS = -O2 -Wall -LDFLAGS = -LOADLIBES = -ARLIB = ar -ARLIB_FLAGS = cr -ARDLL = gcc -ARDLL_FLAGS = -shared $(LINKFLAGS) -LINKFLAGS = - -INSTALL = install -c -CP = cp -RMDIR = rm -rf -CC = gcc -RC = windres -DEFS = -DHAVE_CONFIG_H -DEXPORT - -ifneq ($(ARCH),x86-64) -PYTHON = py -3.4-32 -else -PYTHON = py -3 -endif - -WORKDIR = build_$(ARCH) - -ifdef DEFFILE -# Use a .def file to export APIs. -CFLAGS = $(CFLAGS) -DONIG_EXTERN=extern -ARDLL_FLAGS = $(ARDLL_FLAGS) $(DEFFILE) -endif - -subdirs = - -libbase = onigmo -libname = $(WORKDIR)/lib$(libbase).a -dllname = $(WORKDIR)/$(libbase).dll -dlllib = $(WORKDIR)/lib$(libbase).dll.a - -onigheaders = onigmo.h regint.h regparse.h regenc.h st.h -posixheaders = onigmoposix.h -headers = $(posixheaders) $(onigheaders) - -onigobjs = $(WORKDIR)/reggnu.o $(WORKDIR)/regerror.o \ - $(WORKDIR)/regparse.o $(WORKDIR)/regext.o \ - $(WORKDIR)/regcomp.o $(WORKDIR)/regexec.o \ - $(WORKDIR)/regenc.o $(WORKDIR)/regsyntax.o \ - $(WORKDIR)/regtrav.o $(WORKDIR)/regversion.o \ - $(WORKDIR)/st.o -posixobjs = $(WORKDIR)/regposix.o $(WORKDIR)/regposerr.o -libobjs = $(onigobjs) $(posixobjs) - -jp_objs = $(WORKDIR)/euc_jp.o $(WORKDIR)/shift_jis.o \ - $(WORKDIR)/windows_31j.o - -iso_8859_objs = $(WORKDIR)/iso_8859_1.o $(WORKDIR)/iso_8859_2.o \ - $(WORKDIR)/iso_8859_3.o $(WORKDIR)/iso_8859_4.o \ - $(WORKDIR)/iso_8859_5.o $(WORKDIR)/iso_8859_6.o \ - $(WORKDIR)/iso_8859_7.o $(WORKDIR)/iso_8859_8.o \ - $(WORKDIR)/iso_8859_9.o $(WORKDIR)/iso_8859_10.o \ - $(WORKDIR)/iso_8859_11.o $(WORKDIR)/iso_8859_13.o \ - $(WORKDIR)/iso_8859_14.o $(WORKDIR)/iso_8859_15.o \ - $(WORKDIR)/iso_8859_16.o - -encobjs = $(WORKDIR)/ascii.o $(WORKDIR)/utf_8.o \ - $(WORKDIR)/unicode.o \ - $(WORKDIR)/utf_16be.o $(WORKDIR)/utf_16le.o \ - $(WORKDIR)/utf_32be.o $(WORKDIR)/utf_32le.o \ - $(jp_objs) $(iso_8859_objs) \ - $(WORKDIR)/euc_tw.o $(WORKDIR)/euc_kr.o $(WORKDIR)/big5.o \ - $(WORKDIR)/gb18030.o \ - $(WORKDIR)/koi8_r.o $(WORKDIR)/koi8_u.o \ - $(WORKDIR)/windows_1250.o $(WORKDIR)/windows_1251.o \ - $(WORKDIR)/windows_1252.o $(WORKDIR)/windows_1253.o \ - $(WORKDIR)/windows_1254.o $(WORKDIR)/windows_1257.o - -resobj = $(WORKDIR)/onigmo.o - -onigsources = regerror.c regparse.c regext.c regcomp.c regexec.c regenc.c \ - regsyntax.c regtrav.c regversion.c reggnu.c st.c -posixsources = regposix.c regposerr.c -libsources = $(posixsources) $(onigsources) - -encdir = enc -distfiles = README COPYING HISTORY \ - Makefile.in configure.in config.h.in configure \ - $(headers) $(libsources) \ - test.rb testconv.rb -testc = testc -testcu = testu -testp = testp - -makeargs = $(MFLAGS) CPPFLAGS='$(CPPFLAGS)' CFLAGS='$(CFLAGS)' CC='$(CC)' - -.SUFFIXES: -.SUFFIXES: .o .c .h .ps .dvi .info .texinfo .res .rc - -$(WORKDIR)/%.o: %.c - $(CC) $(CFLAGS) $(CPPFLAGS) $(DEFS) -Iwin32 -I. -o $@ -c $< - -$(WORKDIR)/%.o: $(encdir)/%.c - $(CC) $(CFLAGS) $(CPPFLAGS) $(DEFS) -Iwin32 -I. -I$(encdir)/unicode -o $@ -c $< - -$(WORKDIR)/%.o: win32/%.rc - $(RC) -O coff -I. $< $@ - -# targets -default: all - -setup: - - -all: lib dll - -lib: $(libname) -dll: $(dllname) - -$(libname): $(WORKDIR) $(libobjs) $(encobjs) - $(ARLIB) $(ARLIB_FLAGS) $@ $(libobjs) $(encobjs) - -$(dllname): $(WORKDIR) $(libobjs) $(encobjs) $(resobj) $(DEFFILE) - $(ARDLL) $(libobjs) $(encobjs) $(resobj) -o $@ $(ARDLL_FLAGS) -Wl,--out-implib,$(dlllib) - -$(WORKDIR): - -mkdir $(WORKDIR) - -$(WORKDIR)/regparse.o: regparse.c $(onigheaders) win32/config.h st.h -$(WORKDIR)/regext.o: regext.c $(onigheaders) win32/config.h -$(WORKDIR)/regtrav.o: regtrav.c $(onigheaders) win32/config.h -$(WORKDIR)/regcomp.o: regcomp.c $(onigheaders) win32/config.h -$(WORKDIR)/regexec.o: regexec.c regint.h regenc.h onigmo.h win32/config.h -$(WORKDIR)/reggnu.o: reggnu.c regint.h regenc.h onigmo.h win32/config.h onigmognu.h -$(WORKDIR)/regerror.o: regerror.c regint.h regenc.h onigmo.h win32/config.h -$(WORKDIR)/regenc.o: regenc.c regint.h regenc.h onigmo.h win32/config.h -$(WORKDIR)/regsyntax.o: regsyntax.c regint.h regenc.h onigmo.h win32/config.h -$(WORKDIR)/regversion.o: regversion.c onigmo.h win32/config.h -$(WORKDIR)/regposix.o: regposix.c $(posixheaders) onigmo.h win32/config.h -$(WORKDIR)/regposerr.o: regposerr.c $(posixheaders) win32/config.h -$(WORKDIR)/st.o: st.c regint.h onigmo.h win32/config.h st.h - -$(WORKDIR)/ascii.o: $(encdir)/ascii.c regenc.h win32/config.h -$(WORKDIR)/unicode.o: $(encdir)/unicode.c regint.h regenc.h win32/config.h $(encdir)/unicode/casefold.h $(encdir)/unicode/name2ctype.h -$(WORKDIR)/utf_8.o: $(encdir)/utf_8.c regenc.h win32/config.h -$(WORKDIR)/utf_16be.o: $(encdir)/utf_16be.c regenc.h win32/config.h -$(WORKDIR)/utf_16le.o: $(encdir)/utf_16le.c regenc.h win32/config.h -$(WORKDIR)/utf_32be.o: $(encdir)/utf_32be.c regenc.h win32/config.h -$(WORKDIR)/utf_32le.o: $(encdir)/utf_32le.c regenc.h win32/config.h -$(WORKDIR)/euc_jp.o: $(encdir)/euc_jp.c regenc.h win32/config.h $(encdir)/jis/props.h -$(WORKDIR)/euc_tw.o: $(encdir)/euc_tw.c regenc.h win32/config.h -$(WORKDIR)/euc_kr.o: $(encdir)/euc_kr.c regenc.h win32/config.h -$(WORKDIR)/shift_jis.o: $(encdir)/shift_jis.c $(encdir)/shift_jis.h regenc.h win32/config.h $(encdir)/jis/props.h -$(WORKDIR)/windows_31j.o: $(encdir)/windows_31j.c $(encdir)/shift_jis.h regenc.h win32/config.h $(encdir)/jis/props.h -$(WORKDIR)/iso_8859_1.o: $(encdir)/iso_8859_1.c regenc.h win32/config.h -$(WORKDIR)/iso_8859_2.o: $(encdir)/iso_8859_2.c regenc.h win32/config.h -$(WORKDIR)/iso_8859_3.o: $(encdir)/iso_8859_3.c regenc.h win32/config.h -$(WORKDIR)/iso_8859_4.o: $(encdir)/iso_8859_4.c regenc.h win32/config.h -$(WORKDIR)/iso_8859_5.o: $(encdir)/iso_8859_5.c regenc.h win32/config.h -$(WORKDIR)/iso_8859_6.o: $(encdir)/iso_8859_6.c regenc.h win32/config.h -$(WORKDIR)/iso_8859_7.o: $(encdir)/iso_8859_7.c regenc.h win32/config.h -$(WORKDIR)/iso_8859_8.o: $(encdir)/iso_8859_8.c regenc.h win32/config.h -$(WORKDIR)/iso_8859_9.o: $(encdir)/iso_8859_9.c regenc.h win32/config.h -$(WORKDIR)/iso_8859_10.o: $(encdir)/iso_8859_10.c regenc.h win32/config.h -$(WORKDIR)/iso_8859_11.o: $(encdir)/iso_8859_11.c regenc.h win32/config.h -$(WORKDIR)/iso_8859_13.o: $(encdir)/iso_8859_13.c regenc.h win32/config.h -$(WORKDIR)/iso_8859_14.o: $(encdir)/iso_8859_14.c regenc.h win32/config.h -$(WORKDIR)/iso_8859_15.o: $(encdir)/iso_8859_15.c regenc.h win32/config.h -$(WORKDIR)/iso_8859_16.o: $(encdir)/iso_8859_16.c regenc.h win32/config.h -#$(WORKDIR)/koi8.o: $(encdir)/koi8.c regenc.h win32/config.h -$(WORKDIR)/koi8_r.o: $(encdir)/koi8_r.c regenc.h win32/config.h -$(WORKDIR)/koi8_u.o: $(encdir)/koi8_u.c regenc.h win32/config.h -$(WORKDIR)/windows_1250.o: $(encdir)/windows_1250.c regenc.h win32/config.h -$(WORKDIR)/windows_1251.o: $(encdir)/windows_1251.c regenc.h win32/config.h -$(WORKDIR)/windows_1252.o: $(encdir)/windows_1252.c regenc.h win32/config.h -$(WORKDIR)/windows_1253.o: $(encdir)/windows_1253.c regenc.h win32/config.h -$(WORKDIR)/windows_1254.o: $(encdir)/windows_1254.c regenc.h win32/config.h -$(WORKDIR)/windows_1257.o: $(encdir)/windows_1257.c regenc.h win32/config.h -$(WORKDIR)/big5.o: $(encdir)/big5.c regenc.h win32/config.h -$(WORKDIR)/gb18030.o: $(encdir)/gb18030.c regenc.h win32/config.h - -$(WORKDIR)/onigmo.o: win32/onigmo.rc onigmo.h - - -# Tests -test: all ctest utest ptest pytest - -# C library test -ctest: $(WORKDIR)/$(testc) - $(WORKDIR)/$(testc) - -# C library test (Unicode) -utest: $(WORKDIR)/$(testcu) - $(WORKDIR)/$(testcu) - -# POSIX C library test -ptest: $(WORKDIR)/$(testp) - $(WORKDIR)/$(testp) - -# Python test -pytest: - cd $(WORKDIR) && $(PYTHON) ../testpy.py EUC-JP - cd $(WORKDIR) && $(PYTHON) ../testpy.py SJIS - cd $(WORKDIR) && $(PYTHON) ../testpy.py UTF-8 - cd $(WORKDIR) && $(PYTHON) ../testpy.py UTF-16LE - cd $(WORKDIR) && $(PYTHON) ../testpy.py UTF-16BE - cd $(WORKDIR) && $(PYTHON) ../testpy.py UTF-32LE - cd $(WORKDIR) && $(PYTHON) ../testpy.py UTF-32BE - - -$(WORKDIR)/$(testc): win32/$(testc).c $(libname) - $(CC) $(CFLAGS) -o $(WORKDIR)/$(testc) -DONIG_EXTERN=extern win32/$(testc).c -I. $(libname) - -$(WORKDIR)/$(testp): win32/$(testc).c $(dlllib) - $(CC) $(CFLAGS) -DPOSIX_TEST -o $(WORKDIR)/$(testp) win32/$(testc).c -I. $(dlllib) - -#$(testc)u.c: test.rb testconvu.rb -# ruby -Ke testconvu.rb test.rb > $@ - -$(WORKDIR)/$(testcu): $(testcu).c $(libname) - $(CC) $(CFLAGS) -o $(WORKDIR)/$(testcu) -DONIG_EXTERN=extern $(testcu).c -I. $(libname) - -$(libbase).def: win32/makedef.py onigmo.h regenc.h onigmognu.h onigmoposix.h - $(PYTHON) win32/makedef.py > $@ - -clean: - -$(RMDIR) $(WORKDIR) - - -samples: all - $(CC) $(CFLAGS) -I. -o $(WORKDIR)/simple sample\simple.c $(dlllib) - $(CC) $(CFLAGS) -I. -o $(WORKDIR)/posix sample\posix.c $(dlllib) - $(CC) $(CFLAGS) -I. -o $(WORKDIR)/names sample\names.c $(dlllib) - $(CC) $(CFLAGS) -I. -o $(WORKDIR)/listcap sample\listcap.c $(dlllib) - $(CC) $(CFLAGS) -I. -o $(WORKDIR)/sql sample\sql.c $(dlllib) - $(CC) $(CFLAGS) -I. -o $(WORKDIR)/encode sample\encode.c $(dlllib) - $(CC) $(CFLAGS) -I. -o $(WORKDIR)/syntax sample\syntax.c $(dlllib) - $(CC) $(CFLAGS) -I. -o $(WORKDIR)/crnl sample\crnl.c $(dlllib) diff --git a/vendor/onig/win32/config.h b/vendor/onig/win32/config.h deleted file mode 100644 index c69e5df..0000000 --- a/vendor/onig/win32/config.h +++ /dev/null @@ -1,86 +0,0 @@ -#define STDC_HEADERS 1 -#define HAVE_SYS_TYPES_H 1 -#define HAVE_SYS_STAT_H 1 -#define HAVE_STDLIB_H 1 -#define HAVE_STRING_H 1 -#define HAVE_MEMORY_H 1 -#define HAVE_FLOAT_H 1 -#define HAVE_OFF_T 1 -#define SIZEOF_INT 4 -#define SIZEOF_SHORT 2 -#define SIZEOF_LONG 4 -#define SIZEOF_LONG_LONG 8 -#define SIZEOF___INT64 8 -#define SIZEOF_OFF_T 4 -#ifdef _WIN64 -# define SIZEOF_VOIDP 8 -#else -# define SIZEOF_VOIDP 4 -#endif -#define SIZEOF_FLOAT 4 -#define SIZEOF_DOUBLE 8 -#define TOKEN_PASTE(x,y) x##y -#ifndef NORETURN -# if defined(_MSC_VER) && (_MSC_VER > 1100) -# define NORETURN(x) __declspec(noreturn) x -# else -# define NORETURN(x) x -# endif -#endif -#define HAVE_DECL_SYS_NERR 1 -#define HAVE_LIMITS_H 1 -#define HAVE_FCNTL_H 1 -#define HAVE_SYS_UTIME_H 1 -#if defined(__MINGW32__) || (defined(_MSC_VER) && _MSC_VER >= 1600) -# define HAVE_STDINT_H 1 -#endif -#if defined(__MINGW32__) || (defined(_MSC_VER) && _MSC_VER >= 1800) -# define HAVE_INTTYPES_H 1 -#endif -#define uid_t int -#define gid_t int -#define HAVE_STRUCT_STAT_ST_RDEV 1 -#define HAVE_ST_RDEV 1 -#define GETGROUPS_T int -#define RETSIGTYPE void -#define HAVE_ALLOCA 1 -#define HAVE_DUP2 1 -#define HAVE_MEMCMP 1 -#define HAVE_MEMMOVE 1 -#define HAVE_MKDIR 1 -#define HAVE_STRERROR 1 -#define HAVE_STRFTIME 1 -#define HAVE_STRCHR 1 -#define HAVE_STRSTR 1 -#define HAVE_STRTOD 1 -#define HAVE_STRTOL 1 -#define HAVE_STRTOUL 1 -#define HAVE_FLOCK 1 -#define HAVE_VSNPRINTF 1 -#define HAVE_FINITE 1 -#define HAVE_FMOD 1 -#define HAVE_FREXP 1 -#define HAVE_HYPOT 1 -#define HAVE_MODF 1 -#define HAVE_WAITPID 1 -#define HAVE_CHSIZE 1 -#define HAVE_TIMES 1 -#define HAVE__SETJMP 1 -#define HAVE_TELLDIR 1 -#define HAVE_SEEKDIR 1 -#define HAVE_MKTIME 1 -#define HAVE_COSH 1 -#define HAVE_SINH 1 -#define HAVE_TANH 1 -#define HAVE_EXECVE 1 -#define HAVE_TZNAME 1 -#define HAVE_DAYLIGHT 1 -#define SETPGRP_VOID 1 -#define inline __inline -#define NEED_IO_SEEK_BETWEEN_RW 1 -#define RSHIFT(x,y) ((x)>>(int)y) -#define FILE_COUNT _cnt -#define FILE_READPTR _ptr -#define DEFAULT_KCODE KCODE_NONE -#define DLEXT ".so" -#define DLEXT2 ".dll" diff --git a/vendor/onig/win32/makedef.py b/vendor/onig/win32/makedef.py deleted file mode 100755 index 38e8db4..0000000 --- a/vendor/onig/win32/makedef.py +++ /dev/null @@ -1,55 +0,0 @@ -#!/usr/bin/env python - -from __future__ import print_function -import re - -header_files = ( - "onigmo.h", "regenc.h", - "onigmognu.h", "onigmoposix.h" -) - -exclude_symbols = [ - "OnigEncodingKOI8", - - # USE_UPPER_CASE_TABLE - "OnigEncAsciiToUpperCaseTable", - "OnigEncISO_8859_1_ToUpperCaseTable", -] - -features = { - "USE_VARIABLE_META_CHARS": ("onig_set_meta_char",), - "USE_CAPTURE_HISTORY": ("onig_get_capture_tree",) -} - -for v in features.values(): - exclude_symbols += list(v) - -# Check if the features are enabled -with open("regint.h", "r") as f: - e = set() - for line in f: - for k, v in features.items(): - if re.match(r"^#define\s+" + k + r"\b", line): - e |= set(v) - exclude_symbols = list(set(exclude_symbols) - e) - -symbols = set() - -rx1 = re.compile("(ONIG_EXTERN.*)$") -rx2 = re.compile(r"(\w+)( +PV?_\(\(.*\)\)|\[.*\])?;\s*(/\*.*\*/)?$") -for filename in header_files: - with open(filename, "r") as f: - for line in f: - m = rx1.match(line) - if not m: - continue - s = m.group(1) - if s[-1] != ';': - s += ' ' + next(f) - m2 = rx2.search(s) - if m2 and (not m2.group(1) in exclude_symbols): - symbols.add(m2.group(1)) - -print('EXPORTS') -for s in sorted(symbols): - print('\t' + s) diff --git a/vendor/onig/win32/onigmo.rc b/vendor/onig/win32/onigmo.rc deleted file mode 100644 index 20ef0e5..0000000 --- a/vendor/onig/win32/onigmo.rc +++ /dev/null @@ -1,94 +0,0 @@ -/********************************************************************** - onigmo.rc - Onigmo (Oniguruma-mod) (regular expression library) -**********************************************************************/ -/*- - * Copyright (c) 2011-2016 K.Takata - * 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. - */ - -#include -#include "onigmo.h" - -#define TOSTR_(a) #a -#define ONIG_VERSION_TOSTR_(a,b,c) \ - TOSTR_(a) "." TOSTR_(b) "." TOSTR_(c) -#define ONIG_VERSION_STRING \ - ONIG_VERSION_TOSTR_(ONIGMO_VERSION_MAJOR, ONIGMO_VERSION_MINOR, ONIGMO_VERSION_TEENY) - - -///////////////////////////////////////////////////////////////////////////// -// English resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -#ifdef _WIN32 -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US -#pragma code_page(1252) -#endif //_WIN32 - -///////////////////////////////////////////////////////////////////////////// -// -// Version -// - -VS_VERSION_INFO VERSIONINFO - FILEVERSION ONIGMO_VERSION_MAJOR,ONIGMO_VERSION_MINOR,ONIGMO_VERSION_TEENY,0 - PRODUCTVERSION ONIGMO_VERSION_MAJOR,ONIGMO_VERSION_MINOR,ONIGMO_VERSION_TEENY,0 - FILEFLAGSMASK 0x3fL -#ifdef _DEBUG - FILEFLAGS 0x1L -#else - FILEFLAGS 0x0L -#endif - FILEOS 0x40004L - FILETYPE 0x2L - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904b0" - BEGIN - VALUE "Comments", "\0" - VALUE "CompanyName", " \0" - VALUE "FileDescription", "Onigmo (Oniguruma-mod) (regular expression library)\0" - VALUE "FileVersion", ONIG_VERSION_STRING "\0" - VALUE "InternalName", "onigmo.dll\0" - VALUE "LegalCopyright", "Copyright (C) 2002-2016 K.Kosako, 2011-2016 K.Takata\0" - VALUE "LegalTrademarks", "\0" - VALUE "OriginalFilename", "onigmo.dll\0" - VALUE "PrivateBuild", "\0" - VALUE "ProductName", "Onigmo (Oniguruma-mod)\0" - VALUE "ProductVersion", ONIG_VERSION_STRING "\0" - VALUE "SpecialBuild", "\0" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x0409, 1200 - END -END - - - -#endif // English resources -///////////////////////////////////////////////////////////////////////////// diff --git a/vendor/oniguruma/.gitignore b/vendor/oniguruma/.gitignore new file mode 100644 index 0000000..0ac5dad --- /dev/null +++ b/vendor/oniguruma/.gitignore @@ -0,0 +1,2 @@ +config.log + diff --git a/vendor/oniguruma/CMakeLists.txt b/vendor/oniguruma/CMakeLists.txt new file mode 100644 index 0000000..8acbcd9 --- /dev/null +++ b/vendor/oniguruma/CMakeLists.txt @@ -0,0 +1,72 @@ + +SET(ONIG_DIR "${CMAKE_CURRENT_SOURCE_DIR}/oniguruma") + +SET(ONIG_INCLUDE_DIRS + ${ONIG_DIR}/src/ + + PARENT_SCOPE +) + +SET(ONIG_SOURCES + ${ONIG_DIR}/src/regint.h + ${ONIG_DIR}/src/regparse.h + ${ONIG_DIR}/src/regenc.h + ${ONIG_DIR}/src/st.h + ${ONIG_DIR}/src/regerror.c + ${ONIG_DIR}/src/regparse.c + ${ONIG_DIR}/src/regext.c + ${ONIG_DIR}/src/regcomp.c + ${ONIG_DIR}/src/regexec.c + ${ONIG_DIR}/src/reggnu.c + ${ONIG_DIR}/src/regenc.c + ${ONIG_DIR}/src/regsyntax.c + ${ONIG_DIR}/src/regtrav.c + ${ONIG_DIR}/src/regversion.c + ${ONIG_DIR}/src/st.c + ${ONIG_DIR}/src/onig_init.c + ${ONIG_DIR}/src/unicode.c + ${ONIG_DIR}/src/ascii.c + ${ONIG_DIR}/src/utf8.c + ${ONIG_DIR}/src/utf16_be.c + ${ONIG_DIR}/src/utf16_le.c + ${ONIG_DIR}/src/utf32_be.c + ${ONIG_DIR}/src/utf32_le.c + ${ONIG_DIR}/src/euc_jp.c + ${ONIG_DIR}/src/sjis.c + ${ONIG_DIR}/src/iso8859_1.c + ${ONIG_DIR}/src/iso8859_2.c + ${ONIG_DIR}/src/iso8859_3.c + ${ONIG_DIR}/src/iso8859_4.c + ${ONIG_DIR}/src/iso8859_5.c + ${ONIG_DIR}/src/iso8859_6.c + ${ONIG_DIR}/src/iso8859_7.c + ${ONIG_DIR}/src/iso8859_8.c + ${ONIG_DIR}/src/iso8859_9.c + ${ONIG_DIR}/src/iso8859_10.c + ${ONIG_DIR}/src/iso8859_11.c + ${ONIG_DIR}/src/iso8859_13.c + ${ONIG_DIR}/src/iso8859_14.c + ${ONIG_DIR}/src/iso8859_15.c + ${ONIG_DIR}/src/iso8859_16.c + ${ONIG_DIR}/src/euc_tw.c + ${ONIG_DIR}/src/euc_kr.c + ${ONIG_DIR}/src/big5.c + ${ONIG_DIR}/src/gb18030.c + ${ONIG_DIR}/src/koi8_r.c + ${ONIG_DIR}/src/cp1251.c + ${ONIG_DIR}/src/euc_jp_prop.c + ${ONIG_DIR}/src/sjis_prop.c + ${ONIG_DIR}/src/unicode_unfold_key.c + ${ONIG_DIR}/src/unicode_fold1_key.c + ${ONIG_DIR}/src/unicode_fold2_key.c + ${ONIG_DIR}/src/unicode_fold3_key.c + + PARENT_SCOPE +) + +SET(ONIG_HEADERS + ${ONIG_DIR}/src/oniguruma.h + ${ONIG_DIR}/src/oniggnu.h + + PARENT_SCOPE +) diff --git a/vendor/oniguruma/oniguruma.pri b/vendor/oniguruma/oniguruma.pri new file mode 100644 index 0000000..ec31b77 --- /dev/null +++ b/vendor/oniguruma/oniguruma.pri @@ -0,0 +1,59 @@ +INCLUDEPATH += $$PWD/oniguruma/src/ + +SOURCES += $$PWD/oniguruma/src/regint.h \ + $$PWD/oniguruma/src/regparse.h \ + $$PWD/oniguruma/src/regenc.h \ + $$PWD/oniguruma/src/st.h \ + $$PWD/oniguruma/src/regerror.c \ + $$PWD/oniguruma/src/regparse.c \ + $$PWD/oniguruma/src/regext.c \ + $$PWD/oniguruma/src/regcomp.c \ + $$PWD/oniguruma/src/regexec.c \ + $$PWD/oniguruma/src/reggnu.c \ + $$PWD/oniguruma/src/regenc.c \ + $$PWD/oniguruma/src/regsyntax.c \ + $$PWD/oniguruma/src/regtrav.c \ + $$PWD/oniguruma/src/regversion.c \ + $$PWD/oniguruma/src/st.c \ + $$PWD/oniguruma/src/onig_init.c \ + $$PWD/oniguruma/src/unicode.c \ + $$PWD/oniguruma/src/ascii.c \ + $$PWD/oniguruma/src/utf8.c \ + $$PWD/oniguruma/src/utf16_be.c \ + $$PWD/oniguruma/src/utf16_le.c \ + $$PWD/oniguruma/src/utf32_be.c \ + $$PWD/oniguruma/src/utf32_le.c \ + $$PWD/oniguruma/src/euc_jp.c \ + $$PWD/oniguruma/src/sjis.c \ + $$PWD/oniguruma/src/iso8859_1.c \ + $$PWD/oniguruma/src/iso8859_2.c \ + $$PWD/oniguruma/src/iso8859_3.c \ + $$PWD/oniguruma/src/iso8859_4.c \ + $$PWD/oniguruma/src/iso8859_5.c \ + $$PWD/oniguruma/src/iso8859_6.c \ + $$PWD/oniguruma/src/iso8859_7.c \ + $$PWD/oniguruma/src/iso8859_8.c \ + $$PWD/oniguruma/src/iso8859_9.c \ + $$PWD/oniguruma/src/iso8859_10.c \ + $$PWD/oniguruma/src/iso8859_11.c \ + $$PWD/oniguruma/src/iso8859_13.c \ + $$PWD/oniguruma/src/iso8859_14.c \ + $$PWD/oniguruma/src/iso8859_15.c \ + $$PWD/oniguruma/src/iso8859_16.c \ + $$PWD/oniguruma/src/euc_tw.c \ + $$PWD/oniguruma/src/euc_kr.c \ + $$PWD/oniguruma/src/big5.c \ + $$PWD/oniguruma/src/gb18030.c \ + $$PWD/oniguruma/src/koi8_r.c \ + $$PWD/oniguruma/src/cp1251.c \ + $$PWD/oniguruma/src/euc_jp_prop.c \ + $$PWD/oniguruma/src/sjis_prop.c \ + $$PWD/oniguruma/src/unicode_unfold_key.c \ + $$PWD/oniguruma/src/unicode_fold1_key.c \ + $$PWD/oniguruma/src/unicode_fold2_key.c \ + $$PWD/oniguruma/src/unicode_fold3_key.c + +HEADERS += $$PWD/oniguruma/src/oniguruma.h \ + $$PWD/oniguruma/src/oniggnu.h \ + $$PWD/oniguruma/src/config.h \ + $$PWD/oniguruma/src/config-oniguruma-edbee.h diff --git a/vendor/oniguruma/oniguruma/.github/workflows/cifuzz.yml b/vendor/oniguruma/oniguruma/.github/workflows/cifuzz.yml new file mode 100644 index 0000000..362e3f8 --- /dev/null +++ b/vendor/oniguruma/oniguruma/.github/workflows/cifuzz.yml @@ -0,0 +1,36 @@ +name: CIFuzz +on: + pull_request: + branches: + - master +jobs: + Fuzzing: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + sanitizer: [address, undefined, memory] + steps: + - name: Build Fuzzers (${{ matrix.sanitizer }}) + id: build + uses: google/oss-fuzz/infra/cifuzz/actions/build_fuzzers@master + with: + oss-fuzz-project-name: 'oniguruma' + dry-run: false + allowed-broken-targets-percentage: 0 + sanitizer: ${{ matrix.sanitizer }} + language: c + - name: Run Fuzzers (${{ matrix.sanitizer }}) + uses: google/oss-fuzz/infra/cifuzz/actions/run_fuzzers@master + with: + oss-fuzz-project-name: 'oniguruma' + fuzz-seconds: 600 + dry-run: false + sanitizer: ${{ matrix.sanitizer }} + language: c + - name: Upload Crash + uses: actions/upload-artifact@v1 + if: failure() && steps.build.outcome == 'success' + with: + name: ${{ matrix.sanitizer }}-artifacts + path: ./out/artifacts diff --git a/vendor/oniguruma/oniguruma/.github/workflows/codeql.yml b/vendor/oniguruma/oniguruma/.github/workflows/codeql.yml new file mode 100644 index 0000000..8212ed1 --- /dev/null +++ b/vendor/oniguruma/oniguruma/.github/workflows/codeql.yml @@ -0,0 +1,41 @@ +name: "CodeQL" + +on: + push: + branches: [ "master" ] + pull_request: + branches: [ "master" ] + schedule: + - cron: "16 9 * * 0" + +jobs: + analyze: + name: Analyze + runs-on: ubuntu-latest + permissions: + actions: read + contents: read + security-events: write + + strategy: + fail-fast: false + matrix: + language: [ cpp, python ] + + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Initialize CodeQL + uses: github/codeql-action/init@v2 + with: + languages: ${{ matrix.language }} + queries: +security-and-quality + + - name: Autobuild + uses: github/codeql-action/autobuild@v2 + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v2 + with: + category: "/language:${{ matrix.language }}" diff --git a/vendor/oniguruma/oniguruma/.gitignore b/vendor/oniguruma/oniguruma/.gitignore new file mode 100644 index 0000000..71ffb4c --- /dev/null +++ b/vendor/oniguruma/oniguruma/.gitignore @@ -0,0 +1,85 @@ +Makefile +autom4te.cache/ +ltmain.sh +stamp-h1 +configure +config.status +config.h +config.h.in +onig-config +libtool +aclocal.m4 +Makefile.in +.python-version +*.o +*.obj +*.so +*.lo +*.la +*.pc +*.log +*.trs +*.dll +*.lib +*.exe +*.exp +*.gcno +*.gcda +*.gcov +*~ +.libs/ +.deps/ +/build +/onig-*.tar.gz +m4/*.m4 +/coverage +/coverage.info +/fuzzers +/.vscode + +# src/ +/src/unicode_fold?_key.gperf +/src/unicode_unfold_key.gperf +/src/UNICODE_PROPERTIES +/src/*.txt +/src/mktable + +# test/ +/test/test_utf8 +/test/test_options +/test/testc +/test/testcu +/test/testp +/test/test_regset +/test/test_syntax +/test/test_back +/test/kofu-utf8.txt + +# sample/ +/sample/crnl +/sample/encode +/sample/listcap +/sample/names +/sample/posix +/sample/simple +/sample/sql +/sample/syntax +/sample/user_property +/sample/callout +/sample/echo +/sample/count +/sample/bug_fix +/sample/regset +/sample/scan +/sample/callback_each_match +/sample/log* + +/harnesses/utf16*.dict +/harnesses/fuzzer-* +/harnesses/read-* +/harnesses/libfuzzer-onig +/harnesses/libfuzzer-onig-full +/harnesses/slow-unit-* +/harnesses/timeout-* +/harnesses/crash-* +/harnesses/oom-* diff --git a/vendor/oniguruma/oniguruma/.travis.yml b/vendor/oniguruma/oniguruma/.travis.yml new file mode 100644 index 0000000..be21241 --- /dev/null +++ b/vendor/oniguruma/oniguruma/.travis.yml @@ -0,0 +1,17 @@ +language: c + +compiler: + - gcc + - clang + +install: true + +branches: + except: + - 5.9.6 + +before_script: + - autoreconf -fi + +script: + - ./configure && make && make all-test diff --git a/vendor/oniguruma/oniguruma/AUTHORS b/vendor/oniguruma/oniguruma/AUTHORS new file mode 100644 index 0000000..cf27981 --- /dev/null +++ b/vendor/oniguruma/oniguruma/AUTHORS @@ -0,0 +1 @@ + (K.Kosako) diff --git a/vendor/oniguruma/oniguruma/CMakeLists.txt b/vendor/oniguruma/oniguruma/CMakeLists.txt new file mode 100644 index 0000000..da09d8e --- /dev/null +++ b/vendor/oniguruma/oniguruma/CMakeLists.txt @@ -0,0 +1,253 @@ +cmake_minimum_required(VERSION 3.1...3.5) +project(oniguruma + VERSION 6.9.10 + LANGUAGES C) + +set(PACKAGE onig) +set(PACKAGE_VERSION ${PROJECT_VERSION}) + +option(BUILD_SHARED_LIBS "Build shared libraries" ON) +option(ENABLE_POSIX_API "Include POSIX API" OFF) +option(ENABLE_BINARY_COMPATIBLE_POSIX_API "Include Binary compatible POSIX API" OFF) +option(ENABLE_STATISTICS "Include statistics API" OFF) +option(INSTALL_DOCUMENTATION "Install documentation" ON) +option(INSTALL_EXAMPLES "Install examples" OFF) +option(BUILD_TEST "Build tests" ON) +if(MSVC) + option(MSVC_STATIC_RUNTIME "Build with static runtime" OFF) +endif() + +set(USE_CRNL_AS_LINE_TERMINATOR 0) +set(VERSION ${PACKAGE_VERSION}) + +include(CheckCSourceCompiles) +include(CheckIncludeFiles) +include(CheckFunctionExists) +include(CheckSymbolExists) +include(CheckTypeSize) +include(TestBigEndian) + +check_include_files(alloca.h HAVE_ALLOCA_H) +check_include_files(stdint.h HAVE_STDINT_H) +check_include_files(sys/times.h HAVE_SYS_TIMES_H) +check_include_files(sys/time.h HAVE_SYS_TIME_H) +check_include_files(sys/types.h HAVE_SYS_TYPES_H) +check_include_files(unistd.h HAVE_UNISTD_H) +check_include_files(inttypes.h HAVE_INTTYPES_H) +check_type_size(int SIZEOF_INT) +check_type_size(long SIZEOF_LONG) +check_type_size("long long" SIZEOF_LONG_LONG) +check_type_size("void*" SIZEOF_VOIDP) + +if(HAVE_ALLOCA_H) + check_symbol_exists(alloca "alloca.h" HAVE_ALLOCA) +else() + check_symbol_exists(alloca "stdlib.h;malloc.h" HAVE_ALLOCA) +endif() + +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/config.h.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/config.h) + +set(_SRCS src/regint.h src/regparse.h src/regenc.h src/st.h + src/regerror.c src/regparse.c src/regext.c src/regcomp.c src/regexec.c + src/reggnu.c src/regenc.c src/regsyntax.c src/regtrav.c src/regversion.c + src/st.c src/onig_init.c + src/unicode.c src/ascii.c src/utf8.c src/utf16_be.c src/utf16_le.c + src/utf32_be.c src/utf32_le.c src/euc_jp.c src/sjis.c src/iso8859_1.c + src/iso8859_2.c src/iso8859_3.c src/iso8859_4.c src/iso8859_5.c + src/iso8859_6.c src/iso8859_7.c src/iso8859_8.c src/iso8859_9.c + src/iso8859_10.c src/iso8859_11.c src/iso8859_13.c src/iso8859_14.c + src/iso8859_15.c src/iso8859_16.c src/euc_tw.c src/euc_kr.c src/big5.c + src/gb18030.c src/koi8_r.c src/cp1251.c + src/euc_jp_prop.c src/sjis_prop.c + src/unicode_unfold_key.c + src/unicode_fold1_key.c src/unicode_fold2_key.c src/unicode_fold3_key.c) + +set(_INST_HEADERS src/oniguruma.h src/oniggnu.h) + +if(ENABLE_POSIX_API OR ENABLE_BINARY_COMPATIBLE_POSIX_API) + set(_SRCS ${_SRCS} src/regposix.c src/regposerr.c) + set(_INST_HEADERS ${_INST_HEADERS} src/onigposix.h) + add_definitions("-DUSE_POSIX_API") +endif() + +if(ENABLE_BINARY_COMPATIBLE_POSIX_API) + add_definitions("-DUSE_BINARY_COMPATIBLE_POSIX_API") +endif() + +if(ENABLE_STATISTICS) + add_definitions("-DONIG_DEBUG_STATISTICS") +endif() + +add_library(onig ${_SRCS}) +target_include_directories(onig PUBLIC + $ + $) + +target_compile_definitions(onig PUBLIC + $<$>:ONIG_STATIC>) + +if(BUILD_SHARED_LIBS) + # Parse SOVERSION information from LTVERSION in configure.ac + file(STRINGS "${CMAKE_CURRENT_SOURCE_DIR}/configure.ac" LTVERSION REGEX "^LTVERSION *= *\"?[0-9]+:[0-9]+:[0-9]+\"?") + string(REGEX REPLACE "^LTVERSION *= *\"?([0-9]+:[0-9]+:[0-9]+)\"?.*$" "\\1" LTVERSION "${LTVERSION}") + string(REGEX REPLACE "^([0-9]+):([0-9]+):([0-9]+)" "\\1" LTCURRENT ${LTVERSION}) + string(REGEX REPLACE "^([0-9]+):([0-9]+):([0-9]+)" "\\2" LTREVISION ${LTVERSION}) + string(REGEX REPLACE "^([0-9]+):([0-9]+):([0-9]+)" "\\3" LTAGE ${LTVERSION}) + math(EXPR ONIG_SOVERSION "${LTCURRENT} - ${LTAGE}") + set_target_properties(onig PROPERTIES + SOVERSION "${ONIG_SOVERSION}" + VERSION "${ONIG_SOVERSION}.${LTAGE}.${LTREVISION}") +endif() + +if(MSVC) + target_compile_options(onig PRIVATE + #/W4 + ) + if(MSVC_STATIC_RUNTIME) + target_compile_options(onig PRIVATE + $<$:/MT> + $<$:/MTd> + $<$:/MT> + $<$:/MTd> + ) + endif() + if(MSVC_VERSION LESS_EQUAL "1800") + # <= VS2013 + target_compile_definitions(onig PRIVATE + -Dinline=__inline + ) + endif() +elseif(CMAKE_COMPILER_IS_GNUCC) + target_compile_options(onig PRIVATE + -Wall + ) +endif() + + +# Installation (https://github.com/forexample/package-example) + +# Introduce variables: +# * CMAKE_INSTALL_LIBDIR +# * CMAKE_INSTALL_BINDIR +# * CMAKE_INSTALL_INCLUDEDIR +include(GNUInstallDirs) + +# Layout. This works for all platforms: +# * /lib*/cmake/ +# * /lib*/ +# * /include/ +set(config_install_dir "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}") + +set(generated_dir "${CMAKE_CURRENT_BINARY_DIR}/generated") + +# Configuration +set(version_config "${generated_dir}/${PROJECT_NAME}ConfigVersion.cmake") +set(project_config "${generated_dir}/${PROJECT_NAME}Config.cmake") +set(TARGETS_EXPORT_NAME "${PROJECT_NAME}Targets") +set(namespace "${PROJECT_NAME}::") + +# Include module with function 'write_basic_package_version_file' +include(CMakePackageConfigHelpers) + +# Configure 'ConfigVersion.cmake' +# Use: +# * PROJECT_VERSION +write_basic_package_version_file( + "${version_config}" COMPATIBILITY SameMajorVersion +) + +# Configure 'Config.cmake' +# Use variables: +# * TARGETS_EXPORT_NAME +# * PROJECT_NAME +configure_package_config_file( + "cmake/Config.cmake.in" + "${project_config}" + INSTALL_DESTINATION "${config_install_dir}" +) + +if(CMAKE_INSTALL_LIBDIR MATCHES "^/") + set(onig_pkgconfig_libdir "${CMAKE_INSTALL_LIBDIR}") +else() + set(onig_pkgconfig_libdir "\${exec_prefix}/${CMAKE_INSTALL_LIBDIR}") +endif() + +# Targets: +# * /lib*/libonig.a +# * header location after install: /include/ +# * headers can be included by C code `#include ` +install( + TARGETS onig + EXPORT "${TARGETS_EXPORT_NAME}" + LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" + ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" + RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" + INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}" +) + +# Headers: +# * src/oniguruma.h -> /include/oniguruma +install( + FILES ${_INST_HEADERS} + DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}" +) + +# Config +# * /lib*/cmake/oniguruma/onigurumaConfig.cmake +# * /lib*/cmake/oniguruma/onigurumaConfigVersion.cmake +install( + FILES "${project_config}" "${version_config}" + DESTINATION "${config_install_dir}" +) + +# Config +# * /lib*/cmake/oniguruma/onigurumaTargets.cmake +install( + EXPORT "${TARGETS_EXPORT_NAME}" + NAMESPACE "${namespace}" + DESTINATION "${config_install_dir}" +) + +# Documentation (uses onig not oniguruma for directory) +if(INSTALL_DOCUMENTATION) +install(FILES doc/API doc/API.ja doc/RE doc/RE.ja doc/FAQ doc/FAQ.ja + doc/CALLOUTS.BUILTIN doc/CALLOUTS.BUILTIN.ja + doc/CALLOUTS.API doc/CALLOUTS.API.ja + doc/UNICODE_PROPERTIES + DESTINATION "${CMAKE_INSTALL_DATADIR}/doc/${PACKAGE}") + +# Other files (uses onig not oniguruma for directory) +install(FILES AUTHORS COPYING HISTORY README.md + DESTINATION "${CMAKE_INSTALL_DATADIR}/doc/${PACKAGE}") +endif() + +# Examples +if(INSTALL_EXAMPLES) +install(FILES sample/bug_fix.c sample/callback_each_match.c + sample/callout.c sample/count.c sample/echo.c + sample/encode.c sample/listcap.c + sample/names.c sample/posix.c sample/regset.c + sample/scan.c sample/simple.c sample/sql.c + sample/syntax.c sample/user_property.c + DESTINATION "${CMAKE_INSTALL_DATADIR}/examples/${PACKAGE}") +endif() + +# pkg-config + +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/oniguruma.pc.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/oniguruma.pc @ONLY) + +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/onig-config.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/onig-config @ONLY) + +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/oniguruma.pc + DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) + +install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/onig-config + DESTINATION "${CMAKE_INSTALL_BINDIR}") + +# Test +if(BUILD_TEST) + add_subdirectory(test) + if(CMAKE_COMPILER_IS_GNUCC) + add_subdirectory(windows) + endif() +endif(BUILD_TEST) diff --git a/vendor/oniguruma/oniguruma/COPYING b/vendor/oniguruma/oniguruma/COPYING new file mode 100644 index 0000000..ee4d7cf --- /dev/null +++ b/vendor/oniguruma/oniguruma/COPYING @@ -0,0 +1,26 @@ +Oniguruma LICENSE +----------------- + +Copyright (c) 2002-2021 K.Kosako +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. diff --git a/vendor/oniguruma/oniguruma/ChangeLog b/vendor/oniguruma/oniguruma/ChangeLog new file mode 100644 index 0000000..e69de29 diff --git a/vendor/onig/HISTORY b/vendor/oniguruma/oniguruma/HISTORY similarity index 78% rename from vendor/onig/HISTORY rename to vendor/oniguruma/oniguruma/HISTORY index ecec4b9..30ceec9 100644 --- a/vendor/onig/HISTORY +++ b/vendor/oniguruma/oniguruma/HISTORY @@ -1,601 +1,433 @@ -History of Onigmo (Oniguruma-mod) - -2017/05/15: Version 6.1.2 - -2017/05/15: [dist] Update LTVERSION to "6:3:0". -2017/05/01: [bug] Import Ruby r58468 - Fix macro expansion bug. -2017/04/05: [doc] Improve document about absence operator (Issue #87) -2017/04/03: [impl] Import the latest enc-unicode.rb from Ruby r58070. - (Includes Ruby r58065, r58066, r58069 and r58070.) -2017/03/14: [bug] Import Ruby r57816 - Fix UTF-32 valid_encoding?. -2017/02/20: [bug] Import Ruby r57660 - Initialize return values. - https://bugs.ruby-lang.org/issues/13234 - https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-6181 -2017/01/31: [API] Fix missing const on onig_new_without_alloc. (Issue #85) - -2017/01/29: Version 6.1.1 - -2017/01/29: [dist] Update LTVERSION to "6:2:0". -2017/01/29: [bug] Fix that (?~\S+) might cause infinite loop. - Reported at: http://sakura.qp.land.to/?BugReport%2F211 - -2017/01/16: Version 6.1.0 - -2017/01/16: [dist] Update LTVERSION to "6:1:0". -2016/12/26: [impl] Import Ruby r57143, r57175, r57134, r57138 and r57190. -2016/12/23: [new] (special thanks to Tanaka Akira) - Support absent operator (Issue #82) -2016/12/22: [bug] (thanks iology) - mac: Fix loading library (PR #84) -2016/12/14: [impl] Don't parse (?@...) if USE_CAPTURE_HISTORY is not defined -2016/12/13: [bug] Fix out-of-bounds read in set_bm_skip() (Issue #81) -2016/12/12: [bug] Fix backward search with .* (Issue #69) -2016/12/12: [dist] (thanks Masahiro Ide) - Ignore /sample/scan (PR #80) -2016/12/11: [impl] (thanks NARUSE, Yui) - suppress warning: sign compare (PR #79) -2016/12/11: [bug] (thanks NARUSE, Yui) - CRuby enc/*.c needs other way to detect (PR #78) - -2016/12/10: Version 6.0.0 - -2016/12/08: [bug] (thanks Masahiro Ide) - Define PRIdPTRDIFF at regint.h if not defined yet (PR #77) -2016/12/07: [impl] Better fix for wrong capture in recursive call. (Issue #48) -2016/12/06: [impl] Import Ruby r56991 and r56992 - Import the latest st.c. -2016/12/04: [impl] Import Ruby r56976 - Remove special processing for U+03B9/U+03BC/U+A64B. -2016/12/04: [impl] Import Ruby r56975 - Reorder codepoints in some entries of CaseUnfold_11_Table. -2016/12/04: [bug] Fix wrong capture in recursive call. (Issue #48) -2016/12/01: [spec] \X matches \x0D\x0A also on non-Unicode encodings. -2016/12/01: [impl] Import Ruby r56952 - Use offsetof macro and shrink table size. -2016/12/01: [impl] Import Ruby r56951 - Constify CaseMappingSpecials. -2016/12/01: [new] Import Ruby r56949 - Regexp supports Unicode 9.0.0's \X. (Issue #46) -2016/12/01: [bug] Import Ruby r56924 - Fix uppercasing for U+A64B. -2016/11/30: [bug] Partial fix for wrong capture in recursive call. (Issue #48) -2016/11/28: [impl] Import the latest version of st.c from Ruby. (Issue #70) - Import Ruby r56793 with some modifications. -2016/11/28: [API] Add onig_{get,set}_parse_depth_limit(). -2016/11/28: [bug] Fix stack overflow when parsing deeply nested capture - groups. (Issue #68) -2016/11/26: [bug] Fix multiple name groups in Perl syntax. (Issue #74) -2016/11/18: [impl] Enable multiprocess build on VC2010+. -2016/11/17: [bug] Fix wrong optimization for gpos. (Issue #53) -2016/11/15: [impl] Drop support for old compilers which don't have string.h. -2016/11/15: [impl] Add ONIG_DEBUG_MEMLEAK for MSVC. -2016/11/14: [API] Add onig_initialize() for compatibility to Oniguruma 6.0. -2016/11/11: [doc] Clarify the behavior of multiple defined names. -2016/11/11: [API] Add onig_scan(). - Imported from oniguruma. -2016/11/09: [impl] Disable OP_PUSH_OR_JUMP_EXACT1. -2016/11/07: [API] Remove onigenc_set_default_caseconv_table(). -2016/11/07: [impl] Remove all THREAD_* macros. - Imported from oniguruma. -2016/11/07: [impl] Remove USE_RECOMPILE_API and state member of regex. - Imported from oniguruma. -2016/11/04: [spec] Drop support for very old compilers (Issue #72) - ANSI C89 is required now. -2016/11/03: [dist] Add lcov and lcov-clear targets to Makefile. -2016/11/03: [bug] Restore option when fetch_token fails. - Found by Coverity Scan. -2016/11/03: [bug] Check return value of add_code_range0() - Found by Coverity Scan. -2016/11/03: [spec] Check redundant double repeat with number. E.g.: /.{1,}{1,}/ - Hint by Coverity Scan. -2016/11/02: [impl] Support ONIG_DEBUG_STATISTICS on Win32. -2016/11/02: [bug] Fix illegal memory access with (?(700000)) (Issue #65) -2016/11/01: [bug] Fix that warnings are not shown properly on UTF-16/32. -2016/10/31: [bug] Fix out of memory /'\/g\\\xff\xff\xff\xff&))/. - Imported from oniguruma. -2016/10/29: [bug] Fix use after free for regexp /()(?\!(?'a')\1)/. - Imported from oniguruma. -2016/10/26: [new] Support \uHHHH in Ruby syntax. -2016/10/26: [new] Support \o{OOO} in Perl syntax. -2016/10/24: [test] Add minimal tests for backward search and onig_match() - (Issue #26) -2016/10/22: [bug] Fix infinite loop of backreference and group (Issue #65) - Imported from oniguruma. -2016/10/21: [impl] Import Ruby r56433 - Implement non-ASCII case conversion for Windows-1254. -2016/10/20: [API] Add const. -2016/10/19: [impl] (thanks ksss) - Suppress warnings [-Wpointer-sign] (PR #64) -2016/10/18: [bug] Fix ignore case in look-behind (Issue #18) - Imported from oniguruma. -2016/10/15: [dist] Win32: Rewrite makefiles - * Use separate build directories for x86/x64. (Issue #67) - * Add "test", "utest" and "pytest" targets. - * Change include directory. -2016/10/15: [spec] Support XPosixPunct (Issue #42) - Behavior of /[[:punct:]]/ in Unicode is changed now. -2016/10/11: [bug] Import Ruby r55562 - Don't optimize out group 0. -2016/10/10: [dist] Update LTVERSION to "6:0:0". -2016/10/10: [API] Rename oniguruma and onig to onigmo. (Issue #66) - E.g.: - * oniguruma.h -> onigmo.h - * libonig.{a,so} -> libonigmo.{a,so} - * onig.dll -> onigmo.dll - Now Onigmo will not conflict with Oniguruma. -2016/10/08: [impl] Merge ruby-2.x branch. - Now the source codes of Onigmo library and its embedded - version in Ruby are merged. Ruby specific parts are - surrounded by "#ifdef RUBY ... #endif". - Note that Ruby specific version of onig_compile() is now - renamed to onig_compile_ruby(). -2016/10/08: [impl] Import the latest files from Ruby r55740. -2016/10/08: [impl] Import Ruby r51710 - Constify property_name_to_ctype arguments. -2016/10/08: [new] Import the latest enc/* files from Ruby r56090. This - includes the following: - * Update to Unicode 9.0.0. - * Support case mapping. (by Martin Dテシrst) -2016/10/07: [impl] Import Ruby r56333 - Make the shown address look relative. -2016/10/06: [impl] Import Ruby r53610 -2016/10/06: [impl] Import Ruby r55155 -2016/10/06: [impl] Import Ruby r55203 -2016/10/06: [bug] Import Ruby r56332 - Fix showing opcode. -2016/10/06: [bug] Import Ruby r53543 - Fix UNALIGNED_WORD_ACCESS. -2016/10/06: [bug] Import Ruby r55163 - Raise error if given octal escaped character is too big. -2016/10/06: [bug] Import Ruby r54954 - Fix memory leak. -2016/10/06: [bug] Import Ruby r55157 - Fix debug conditionals. -2016/10/06: [bug] Import Ruby r55154 - Return error code immediately if compile_length_tree raised - error. -2016/10/06: [impl] Import Ruby r55202 - Make compilers optimize harder. -2016/10/06: [impl] Import Ruby r54741 - Constify oplabels. -2016/10/06: [bug] Import Ruby r53248, r53251 - Fix build with token threaded VM. -2016/10/06: [bug] Import Ruby r52999 - Get rid of breaking strict aliasing. -2016/10/06: [impl] Import Ruby r52757 - Remove trailing spaces. -2016/10/03: [dist] Update config.guess and config.sub. (PR #57, Issue #61) -2016/10/03: [impl] (thanks Kouhei Sutou) - Support --enable-mutlithread for MinGW build. (PR #54) -2016/10/03: [tune] (thanks KeenS) - Implement Token Threaded VM. (Issue #51, PR #52) -2015/09/13: [impl] (thanks Kouhei Sutou) - Add "const" to not changed strings. (PR #50) -2015/09/13: [impl] (thanks Kouhei Sutou) - Remove needless prototype declaration. (PR #49) -2015/09/13: [dist] (thanks Sebastian Godelet) - Add build_nmake script for building with nmake. (PR #47) -2015/09/13: [dist] (thanks Kazuho Oku) - Fix build error on systems using BSD make. (PR #55) -2015/05/11: [impl] Import Ruby r50392 - Reject values larger than UTF-8 max codepoints. -2015/05/11: [impl] Import Ruby r49025 - Get rid of usage of uninitialized variable. -2015/05/11: [impl] Import Ruby r49021 - Fix printf format conversion specifiers. -2015/01/21: [dist] Merge Oniguruma 5.9.6 -2014/11/04: [bug] Import Ruby r47996 - Avoid undefined behaviors found by gcc -fsanitize=undefined. -2014/09/26: [dist] (thanks Kouhei Sutou) - Add -no-undefine link flag (PR #45) -2014/09/23: [impl] Import the latest st.[ch] from Ruby r47675 -2014/09/20: [bug] Fix possible memory leaks. -2014/09/17: [impl] Merge Ruby r47602 - Shrink PosixBracketEntryType. -2014/09/17: [impl] Merge Ruby r47601 - Remove unused variable. - -2014/09/11: Version 5.15.0 - -2014/09/11: [dist] update LTVERSION to "5:3:0". -2014/09/01: [bug] "ab" =~ /(?!^a).*b/ doesn't match (Issue #44) - https://bugs.ruby-lang.org/issues/9728 -2014/08/08: [bug] Character properties ignore the ignore case flag (Issue #41) -2014/08/08: [bug] Regex matching errors when using \W character class and /i - option (Issue #4) - https://bugs.ruby-lang.org/issues/4044 -2014/08/05: [impl] Reduce the size of some structures -2014/07/31: [bug] /(?i)\u0149\u0149/ =~ "\u0149\u0149" doesn't match - (Issue #40) - -2014/07/27: Version 5.14.2 - -2014/07/27: [dist] update LTVERSION to "5:2:0". -2014/07/25: [impl] Show byte offset of byte codes when debugging -2014/07/24: [impl] Merge Ruby r46915 - UNALIGNED_WORD_ACCESS on ppc64 -2014/07/19: [impl] Merge Ruby r30943 - Show encoding of compiling regexp. -2014/07/19: [impl] Merge Ruby r17765 partly -2014/07/18: [impl] Use numberof macro -2014/07/18: [impl] Merge Ruby's props.h which uses gperf. - Merge Ruby r46039, r46051 and r46052 -2014/07/16: [impl] Drop support for Borland C++ -2014/07/15: [bug] /[a-c#]+\W/ =~ "def#" fails when encoding is UTF-16/32 -2014/07/09: [impl] Merge Ruby's casefold.h which uses gperf. - Merge Ruby r46056-46057, r46266-46273 and r46317 - -2014/07/01: Version 5.14.1 - -2014/07/01: [dist] update LTVERSION to "5:1:0". (Issue #37) -2014/07/01: [dist] testpy.py: support error tests. - - E.g.: - $ LD_LIBRARY_PATH=.libs python - >>> import testpy - >>> testpy.n("[", "", err=-103) - OK(E): 'premature end of char-class' (/[/ '') - -2014/07/01: [dist] some files was missing from Makefile.am. - -2014/07/01: Version 5.14.0 - -2014/06/30: [bug] SEGV may occur in onig_error_code_to_str() -2014/06/30: [bug] onig.py: onig_error_code_to_str() didn't work on 64-bit OS -2014/06/25: [bug] /\x{1ffc}/i =~ "\x1ff3" didn't match -2014/06/24: [new] Enable Coveralls - See: https://coveralls.io/r/k-takata/Onigmo -2014/06/22: [new] Support for Unicode 7.0. (Issue #12) -2014/06/20: [new] Add a new definition USE_UNICODE_AGE_PROPERTIES. - If undefine this, age properties (e.g. \p{Age=6.3}) are - disabled. Disabling this reduces the size of Unicode data. -2014/06/19: [new] Enable Travis CI (Issue #36) - See: https://travis-ci.org/k-takata/Onigmo -2014/04/18: [bug] fix warning about alloca() with MinGW (Issue #35) -2014/04/17: [spec] add checking the number of capture groups (Issue #24) - Now the maximum number of capture groups is explicitly - limited to ONIG_MAX_CAPTURE_GROUP_NUM (32767). - Also add a new error code: ONIGERR_TOO_MANY_CAPTURE_GROUPS. -2014/04/17: [bug] double free may occur -2014/04/15: [dist] testpy.py: change 'region' to a local variable - Now, it becomes easy to execute a test manually from the - python's interactive shell. - - E.g.: - $ LD_LIBRARY_PATH=.libs python - >>> import testpy - >>> testpy.x2(r"a+b+", "aab", 0, 3) - OK: /a+b+/ 'aab' - -2014/04/12: [new] (thanks mattn) - Fix build on mingw (PR #33) -2014/04/12: [new] improve multithread support - Add the default multithread implementations for Win32 and - Unix. Add --enable-multithread option in configure. -2014/04/12: [bug] deadlock occurs when recursive lock is not allowed -2014/04/12: [bug] fix: segmentation fault occurs when many groups are used - (Issue #24) - see: https://bugs.ruby-lang.org/issues/8716 -2014/01/22: [new] (thanks Allan Odgaard) - Add option to indicate search range is not begin/end of - string (PR #27) -2014/01/22: [bug] fix: Backwards search not respecting range (Issue #22) -2014/01/21: [dist] Merge Oniguruma 5.9.5 -2013/07/29: [new] (thanks Allan Odgaard) - Add 'ifndef ... endif' guard around thread locking macros - (PR #23) - -2013/07/03: Version 5.13.5 - -2013/07/03: [dist] update LTVERSION to "5:0:5". -2013/07/02: [bug] (thanks Akinori MUSHA and Ippei Obayashi) - Fix a renumbering bug in condition regexp with a named - capture. - see: https://bugs.ruby-lang.org/issues/8583 -2013/05/30: [dist] Merge Oniguruma 5.9.3 and 5.9.4. - Also change the version of autotools. - (automake 1.11.1, autoconf 2.65, libtool 2.2.6b) -2013/05/29: [spec] (thanks Akinori MUSHA) - Allow ENCLOSE_OPTION in look-behind. -2013/04/10: [bug] fix problem with optimization of \z. - see: http://bugs.ruby-lang.org/issues/8210 - -2013/03/17: Version 5.13.4 - -2013/03/17: [dist] update LTVERSION to "5:0:4". -2013/03/10: [bug] fix lookbehind assertion fails with /m mode enabled. - see: http://bugs.ruby-lang.org/issues/8023 -2013/03/05: [bug] fix \Z matches where it shouldn't. - see: http://bugs.ruby-lang.org/issues/8001 -2013/03/02: [dist] add .editorconfig (see: http://editorconfig.org/) -2013/03/01: [bug] fix character class with ASCII flag. - see: http://bugs.ruby-lang.org/issues/7972 -2013/02/27: [bug] fix case-insensitive group. - see: http://bugs.ruby-lang.org/issues/7974 - -2012/11/03: Version 5.13.3 - -2012/11/03: [dist] update LTVERSION to "5:0:1". -2012/10/18: [dist] Win32: add batch-mode inference rules. -2012/10/17: [bug] merge Ruby r37175. - should match with a hyphen after a range in a character - class. -2012/09/02: [impl] merge Ruby r36440. - remove "found" indirect flag to suppress warnings by - gcc 4.7. -2012/07/11: [dist] tool/enc-unicode.rb: suppress warning of Hash#index on - Ruby 1.9. -2012/07/10: [dist] testpy.py: return the result of test. -2012/07/10: [dist] testpy.py: simplify the method of setting output encoding. -2012/07/03: [dist] testpy.py: error messages are not displayed. -2012/06/16: [impl] merge Ruby r36072 partially. - regparse.c (is_onechar_cclass): restructured to clarify - that c is used if found == 1. -2012/06/16: [dist] merge Ruby r36070. - tool/enc-unicode.rb: add comment why it uses Hash#index. -2012/05/22: [impl] merge Ruby r35724. - enc/sjis.c (code_to_mbclen): return - ONIGERR_INVALID_CODE_POINT_VALUE if the code is invalid. -2012/05/11: [dist] update .gitignore. -2012/04/30: [dist] configure.in: add 'foreign' option in AM_INIT_AUTOMAKE. -2012/04/18: [dist] fix samples to support x64. - NOTE: This is a preliminary fix. It is needed that - additional support for the LLP64 data model such as - Visual C++ x64. -2012/04/14: [dist] update Makefile.{am,in}. - Add new files. - Enable making test[cu].c from test*.rb. -2012/04/14: [dist] update tests. (testc.c, testu.c, etc.) - -2012/03/29: Version 5.13.2 - -2012/03/24: [impl] suppress warnings. -2012/03/24: [impl] remove unnecessary casts. -2012/03/23: [impl] merge Ruby r35107. - suppress warnings. -2012/03/21: [bug] memory leak occurs when char class contains only one char. -2012/03/21: [impl] use actual type to get the size. - see: http://bugs.ruby-lang.org/issues/6144 -2012/03/15: [impl] check the return code of add_ctype_to_cc(). - see: http://bugs.ruby-lang.org/issues/6145 -2012/03/15: [impl] fix error message. -2012/03/15: [bug] broken conditional expressions are allowed. - see: http://bugs.ruby-lang.org/issues/6143 -2012/03/15: [impl] merge Ruby r35027. - adjust style. -2012/03/06: [impl] merge Ruby r34905. - Remove unused variables. -2012/02/29: [bug] unexpected match occurs when a char class contains no char. -2012/02/25: [impl] CaseFolding.py: fix regexp. -2012/02/25: [impl] define the sizes of case folding tables in casefold.h. -2012/02/24: [dist] fix samples to support x64. - NOTE: This is a preliminary fix. -2012/02/23: [impl] merge Ruby r34730. - don't use // comment. -2012/02/20: [impl] merge Ruby r34684, r34688 and r34692. - fix-up warnings. -2012/02/17: [dist] (thanks NARUSE, Yui) - tool/enc-unicode.rb: Don't use \h to work with Ruby 1.8. -2012/02/14: [spec] relative group reference in back reference with nest level - is allowed. - -2012/02/05: Version 5.13.1 - -2012/02/04: [spec] allow \b and \B in look-behind. -2012/02/01: [new] support for Unicode 6.1. - -2012/01/20: Version 5.13.0 - -2012/01/20: [dist] update LTVERSION to "5:0:0". -2012/01/17: [bug] memory leak occurs when xrealloc fails. -2012/01/15: [bug] Calling function "add_code_range" without checking return - value. -2012/01/12: [bug] testpy.py: error messages are not displayed when Python 2.x - is used. -2012/01/11: [bug] memory leak occurs when history_tree_add_child fails. -2012/01/11: [bug] (thanks Masashi Tsuji) - OnigCaptureTreeNode memory leak. -2012/01/09: [spec] ONIG_OPTION_ASCII_RANGE should be enabled in - ONIG_SYNTAX_JAVA. -2012/01/09: [new] support for Ruby 1.9.3 compatible \b, \B and POSIX brackets. - add ONIG_OPTION_WORD_BOUND_ALL_RANGE and - ONIG_OPTION_POSIX_BRACKET_ALL_RANGE. - remove ONIG_SYN_POSIX_BRACKET_ALWAYS_ALL_RANGE. -2011/12/31: [bug] /^ss$/i doesn't match "\x{DF}". -2011/12/30: [new] add ONIG_SYN_POSIX_BRACKET_ALWAYS_ALL_RANGE option. -2011/12/29: [bug] (thanks Nobuyoshi Nakada) - C standard requires va_end() to be placed before return. - quote macro expansions. - -2011/12/28: Version 5.12.1 - -2011/12/24: [new] merge Ruby r23714, r28980 and r34050. - add onig_memsize() and onig_region_memsize(). -2011/12/24: [new] support for Python 3.x. (onig.py and testpy.py) -2011/12/14: [bug] testpy.py doesn't work on Ubuntu. - -2011/12/12: Version 5.12.0 - -2011/12/12: [dist] update LTVERSION to "4:0:0". -2011/12/11: [impl] use ONIGENC_IS_UNICODE to check if the encoding is Unicode - encoding. -2011/12/10: [new] support for Unicode 6.0. - new scripts, ages, blocks (\p{In_XXX}) and case foldings. - tool/enc-unicode.rb is imported from Ruby 1.9.3. -2011/12/10: [spec] \p{Print} shouldn't include newlines. - \p{Print} = \p{Graph} + \p{Space_Separator} -2011/12/10: [bug] \p{NEWLINE} should not be allowed. -2011/12/05: [new] support for PyPy 1.7. (onig.py and testpy.py) -2011/12/01: [bug] /a{2}/i doesn't match 'AA'. -2011/11/21: [impl] use ONIG_LAST_CODE_POINT instead of ~((OnigCodePoint )0). -2011/11/17: [bug] code ranges are not merged properly. -2011/11/17: [bug] /[\x{0}-X]/i doesn't match properly when UTF-16/32 is used. - -2011/10/16: Version 5.11.4 - -2011/10/16: [dist] update LTVERSION to "3:0:2". -2011/10/15: [tune] optimize Sunday's quick search. -2011/10/07: [API] add ONIG_OPTION_DOTALL option as an alias of - ONIG_OPTION_MULTILINE. -2011/10/04: [impl] add Sunday's quick search. - add config USE_SUNDAY_QUICK_SEARCH. -2011/10/04: [impl] add case-insensitive Boyer-Moore-Horspool search. -2011/10/03: [spec] check minimum digits of hexadecimal numbers. - \uHHHH should be exactly four digits. -2011/10/03: [API] rename ONIG_SYN_OP2_QMARK_BAR_BRANCH_RESET to - ONIG_SYN_OP2_QMARK_VBAR_BRANCH_RESET. - -2011/09/18: Version 5.11.3 - -2011/09/18: [dist] update LTVERSION to "3:0:1". -2011/09/18: [spec] \R matches \x85, \x2028 and \x2029 in Unicode encodings. -2011/09/18: [new] add ONIG_OPTION_NEWLINE_CRLF. -2011/09/18: [tune] optimize \x{}. -2011/09/17: [tune] expand a{n,m} to 'a...a' + a{0,m-n}. -2011/09/12: [bug] /.*\Z/ doesn't match properly. - -2011/09/10: Version 5.11.2 - -2011/09/09: [bug] merge Ruby r24546. - fix the first character bigger than sb_out was dropped. -2011/09/09: [bug] merge Ruby r19864. - CCV_SB is only for single byte. -2011/09/09: [bug] merge Ruby r24550. - fix memory leaks. - -2011/09/08: Version 5.11.1 - -2011/09/08: [impl] merge some part of Ruby r29928. (update debug log.) -2011/09/08: [impl] merge Ruby r32544. - Power PC does not allow unaligned word access. -2011/09/07: [bug] \g<0> doesn't work when USE_PERL_SUBEXP_CALL isn't defined. -2011/09/07: [tune] optimize character class. -2011/09/06: [tune] optimize (?a). -2011/09/06: [tune] optimize \R. - -2011/09/03: Version 5.11.0 - -2011/09/03: [dist] update LTVERSION to "3:0:0". -2011/09/01: [new] add OnigPosition. -2011/09/01: [new] (thanks h-tom) - support for x64. -2011/09/01: [new] add ONIG_SYNTAX_PYTHON (onig.py). -2011/08/30: [dist] check _MSC_VER instead of _NMAKE_VER when LTCG is used. -2011/08/25: [tune] reduce conditional branches. - use ONIGENC_IS_IN_RANGE macro to check the code range. -2011/08/18: [dist] add a resource script for onig.dll (win32/onig.rc). - -2011/08/09: Version 5.10.6 - -2011/08/09: [dist] a .def file can be used to export APIs. -2011/08/08: [dist] update win32/Makefile to support LTCG optimization. -2011/08/07: [new] add new test scripts: testpy.py and onig.py -2011/08/07: [new] add a new syntax: ONIG_SYNTAX_PYTHON - -2011/08/03: Version 5.10.5 - -2011/08/03: [dist] update win32/Makefile. -2011/08/03: [dist] update tests to support ONIG_OPTION_ASCII_RANGE option. -2011/07/30: [new] EUC-JP: support for JIS X 0212 (Supplemental Kanji). -2011/07/30: [impl] not to use ONIG_ENCODING_SJIS inside ONIG_ENCODING_CP932. -2011/07/29: [new] Add support for EUC-JIS-2004. - (This feature is not enabled by default.) -2011/07/29: [impl] EUC-JP: check the length more strictly. -2011/07/29: [dist] translate Japanese comments to English. -2011/07/29: [bug] \p{Katakana} doesn't match JIS X 0201 Katakana when EUC-JP - is used. -2011/07/28: [dist] change the encoding of Japanese documents to UTF-8. -2011/07/26: [bug] [^x]*x causes invalid pointer access. -2011/07/19: [spec] allow (?au) in Ruby syntax mode. -2011/07/16: [new] add \g<0> and \g<+n>. - -2011/07/11: Version 5.10.4 - -2011/07/11: [dist] update autotools. - use automake 1.10.3, autoconf 2.68 and libtool 2.4. -2011/07/11: [impl] add typedefs of intptr_t/uintptr_t for old VC++ compilers. -2011/07/11: [impl] include stdint.h and stddef.h for intptr_t/uintptr_t. -2011/07/04: [tune] implicit-anchor optimization -2011/07/04: [bug] onig_search_gpos() may return wrong OnigRegion. -2011/07/04: [bug] fix typo in debug log. -2011/07/04: [tune] enable optimization for .* except look-behind. -2011/07/04: [bug] Revert "enable optimization for .* except look-behind" - -2011/07/03: Version 5.10.3 - -2011/07/01: [tune] implicit-anchor optimization -2011/06/30: [bug] Revert "[tune] implicit-anchor optimization" -2011/06/30: [bug] (?a) doesn't work properly - -2011/06/29: Version 5.10.2 - -2011/06/29: [tune] implicit-anchor optimization -2011/06/28: [impl] remove duplicated debug log. -2011/06/28: [bug] (?a) doesn't work for \d, \h and \s. -2011/06/28: [bug] should not backtrack in \X. - -2011/06/24: Version 5.10.1 - -2011/06/24: [new] add (?(cond)yes) and (?(cond)yes|no). -2011/06/24: [bug] double free in \R and \X. -2011/06/24: [tune] enable optimization for .* except look-behind. -2011/06/21: [spec] number is not allowed in (?&name) and (?P>name). - -2011/06/18: Version 5.10.0 - -2011/06/18: [impl] export onig_new_without_alloc() API. -2011/06/15: [spec] change Ruby syntax options. - add \K, \R and \X. -2011/06/15: [spec] change Perl syntax options. - Rename ONIG_SYNTAX_PERL to ONIG_SYNTAX_PERL58. - Rename ONIG_SYNTAX_PERL_NG to ONIG_SYNTAX_PERL58_NG. - Add ONIG_SYNTAX_PERL as Perl 5.10+ compatible syntax. -2011/06/14: [new] add (?R), (?0) and (?+n). -2011/06/14: [new] add new character properties in EUC-JP: - Han, Latin, Greek and Cyrillic. -2011/06/14: [new] add new encoding: CP932. -2011/06/14: [new] add new character properties in Shift_JIS: - Han, Latin, Greek and Cyrillic. -2011/06/13: [bug] (?-n) doesn't work -2011/06/13: [new] add ONIG_SYN_ALLOW_MULTIPLEX_DEFINITION_NAME_CALL -2011/06/13: [impl] remove unused ONIG_SYN_CAPTURE_LEFT_MOST_NAMED_GROUP flag. -2011/06/13: [bug] (?a) doesn't work with Unicode encodings. -2011/06/12: [new] add EUC-JP case folding. -2011/06/12: [new] add Shift_JIS case folding. -2011/06/12: [spec] add ONIG_OPTION_ASCII_RANGE option to OnigSyntaxRuby. -2011/06/12: [new] add Python/PCRE compatible named group: - (?P...), (?P=name) and (?P>name). -2011/06/11: [new] add \g{n}, \g{-n} and \g{name}. -2011/06/10: [bug] char class may cause memory leak - http://redmine.ruby-lang.org/issues/show/4061 - New URL: http://bugs.ruby-lang.org/issues/4061 -2011/06/10: [bug] invalid backref number/name - http://redmine.ruby-lang.org/issues/show/2759 - New URL: http://bugs.ruby-lang.org/issues/2759 -2011/06/10: [bug] /(?<=a).*b/ =~ "aab" doesn't match - http://redmine.ruby-lang.org/issues/show/3568 - New URL: http://bugs.ruby-lang.org/issues/3568 -2011/06/10: [bug] Case Sensitivity in Regular Expressions with Lookbehind - http://redmine.ruby-lang.org/issues/show/4088 - New URL: http://bugs.ruby-lang.org/issues/4088 -2011/06/10: [spec] allow any target for quantifiers. - add USE_NO_INVALID_QUANTIFIER. -2011/06/10: [new] add Perl 5.14 compatible character set modifier: - (?adlu) and (?^alu). -2011/06/10: [new] add (?&name), (?n) and (?-n). - add USE_PERL_SUBEXP_CALL. -2011/06/10: [new] add \R, \X and \K. -2011/06/10: [spec] allow negative look behind in look behind. -2011/06/10: [new] add: onig_search_gpos(). - -2011/06/10: fork from Oniguruma 5.9.2. - - -====================================================================== -History of Oniguruma +History + +2024/XX/XX: Version 6.9.10 + +2024/11/18: fix #312: Build failure with GCC 15 (C23) +2024/09/11: Update to Unicode 16.0 +2024/06/20: fix #290: retry limit in match == 0 means unlimited +2024/06/15: add new callout (*SKIP) #299 +2024/06/05: add new behavior ONIG_SYN_ALLOW_CHAR_TYPE_FOLLOWED_BY_MINUS_IN_CC (#298) +2024/05/28: fix #296: ONIG_SYNTAX_EMACS doesn't support 'shy groups' +2024/05/24: fix #295: Invalid result for empty match with anchors +2024/04/03: fix #293: Literal escaped braces +2024/04/02: fix total call with whole options +2024/04/01: fix #292: ONIG_SYN_CONTEXT_INDEP_REPEAT_OPS not working for ^* pattern + +2023/10/14: Version 6.9.9 + +2023/09/17: Update to Unicode 15.1.0 +2023/07/11: Make sure oniguruma.pc is removed on distclean +2023/05/20: fix #284: .{0,99} and .* behave differently on short input +2023/03/27: fix call by number (?n), (?+n), (?-n) of ONIG_SYNTAX_PERL_NG +2023/03/27: fix #282: Dynamic library generated failed to support '(?-i)' +2022/12/30: add a new behavior ONIG_SYN_BRE_ANCHOR_AT_EDGE_OF_SUBEXP +2022/11/16: Changed the behavior of the FIND_LONGEST option to follow all alternatives +2022/09/16: Update to Unicode 15.0.0 +2022/08/30: add ONIG_OPTION_MATCH_WHOLE_STRING +2022/08/28: fix ctype punct in Unicode encodings +2022/08/28: fix #268: [[:punct:]] isn't matching all expected symbols. [[:punct:]] = \p{PosixPunct} = \p{P} + \p{S} +2022/06/25: Make the behavior of \p{Word} exactly the same as \w for ignorecase +2022/06/24: (?I) invalid results for charcter classes (Issue #264) +2022/06/15: fix negative POSIX bracket bug +2022/06/03: Build tests with cmake+msvc + +2022/04/29: Version 6.9.8 + +2022/04/11: implement whole option: (?C) +2022/04/07: implement whole option: (?L) +2022/04/04: implement whole option: (?I) +2022/03/15: fix: Insufficient backreference matching for the same name groups +2022/02/22: fix #250: ONIG_ESCAPE_REGEX_T_COLLISION doesn't work +2021/10/17: Update to Unicode 14.0 +2021/08/29: fix: use CMAKE_INSTALL_LIBDIR as install lib dir, in some + platforms, lib could be installed in lib64 dir but the .pc file + is installed in lib dir. +2021/08/22: fix: Stack overflow for some very long patterns +2021/08/22: fix: Issue 37442 in oss-fuzz: Undefined-shift +2021/08/05: fix #239: CMake build fails to detect alloca on some platforms + such as FreeBSD +2021/08/04: CMake: Make documentation and examples optional +2021/05/20: fix #235: 6.9.7 can't compile with Visual Studio 2005 + +2021/04/15: Version 6.9.7 revised 1 + +2021/04/14: fix: replace UChar to OnigUChar in oniguruma.h + +2021/04/14: Version 6.9.7 + +2021/03/31: Release Candidate 1 for Version 6.9.7 + +2021/03/23: fix Issue 32340, 32345, 32355 in oss-fuzz +2021/03/12: fix invalid optimization info for if-pattern (?(cond)...) +2021/02/21: NEW API: ONIG_OPTION_CALLBACK_EACH_MATCH +2021/02/02: fix Issue 30144 in oss-fuzz: Timeout +2021/01/18: NEW API: ONIG_SYNTAX_PYTHON +2020/12/20: fix Issue 28795 in oss-fuzz: Timeout +2020/12/13: fix Issue 28554 in oss-fuzz: Timeout, check very inefficient patterns at tune_tree(NODE_CALL) +2020/12/04: fix Issue 28259 in oss-fuzz: Timeout +2020/12/03: fix invalid reduction of nested quantifiers (?:+?)* and (?:+?)+ +2020/12/01: fix Issue 28104 in oss-fuzz: Timeout +2020/11/28: NEW API: ONIG_OPTION_IGNORECASE_IS_ASCII +2020/11/07: fix Issue 27015 in oss-fuzz: Timeout + +2020/11/05: Version 6.9.6 + +2020/11/01: fix Issue 26798 in oss-fuzz: Timeout +2020/10/27: fix Issue 26675 in oss-fuzz: Timeout + +2020/10/21: Release Candidate 4 for Version 6.9.6 + +2020/10/20: #221: revert cbe9f8b and 8155473: Out-of-bounds write in #207 (Issues found with Coverity) is fake + +2020/10/16: Release Candidate 3 for Version 6.9.6 + +2020/10/15: fix #220: autotools not building DLL using msys2 and mingw64 on windows 10 +2020/10/12: fix #219: Binary incompatibilty between 6.9.5_rev1 -> 6.9.2_rc2: reg_number_of_names + +2020/10/09: Release Candidate 2 for Version 6.9.6 + +2020/10/09: fix #216: build fails on Windows + +2020/10/07: Release Candidate 1 for Version 6.9.6 + +2020/09/30: add configure option --enable-binary-compatible-posix-api +2020/09/24: fix: Issue 25893 in oss-fuzz: Stack-buffer-overflow +2020/09/22: fix Issues found with Coverity (Issue #207) +2020/08/27: fix Issue #204: define uint32_t and uint64_t for Visual Studio older than 2010 +2020/08/04: fix Issue 24544 in oss-fuzz: Timeout +2020/07/21: add USE_CHECK_VALIDITY_OF_STRING_IN_TREE (fix Issue 24276 in oss-fuzz: Undefined-shift) +2020/07/20: fix: Issue 24268 in oss-fuzz: Timeout +2020/07/17: fix: Issue 24112 in oss-fuzz: Undefined-shift +2020/07/14: fix: Issue 24066 in oss-fuzz: Timeout +2020/07/05: fix: Incomplete application of ONIG_OPTION_NOTBOL to \A +2020/07/05: fix: Incomplete application of ONIG_OPTION_NOT_END_STRING to \Z (Issue #192) +2020/07/05: fix: Incomplete application of ONIG_OPTION_NOTEOL to \z +2020/07/05: fix: Incomplete application of ONIG_OPTION_NOTEOL to \Z +2020/07/01: add ONIG_OPTION_NOT_END_STRING (Issue #198) +2020/06/28: add ONIG_OPTION_NOT_BEGIN_POSITION (Issue #198) +2020/06/28: add ONIG_OPTION_NOT_BEGIN_STRING +2020/06/28: fix: Issue 23754 in oss-fuzz: Timeout +2020/06/21: fix: Issue 23525 in oss-fuzz: Timeout +2020/06/15: fix: Issue 23311 in oss-fuzz: Timeout +2020/06/03: fix: Issue 22925 in oss-fuzz: Index-out-of-bounds +2020/06/03: fix: Issue 22917 in oss-fuzz: Out-of-memory +2020/06/02: fix: Issue 22916 in oss-fuzz: Timeout +2020/05/29: fix: Issue 22744 in oss-fuzz: Integer-overflow +2020/05/28: fix: Issue 22658 in oss-fuzz: check backref with level +2020/05/28: fix: Issue 22533 in oss-fuzz: memory leak +2020/05/23: fix: Issue 22393 in oss-fuzz: Integer-overflow +2020/05/13: fix: Issue 22154 in oss-fuzz: When the option FIND_LONGEST is specified, match_at() returns ONIG_MISMATCH unless there is no need to search any more. +2020/05/06: Add SOVERSION info to library when using cmake +2020/05/04: fix: 22008 in oss-fuzz +2020/05/04: fix: 21998 in oss-fuzz +2020/05/03: fix: 21944, 21977 in oss-fuzz + +2020/04/26: Version 6.9.5 revised 1 + +2020/04/24: fix #192: Unexpected regex match + +2020/04/20: Version 6.9.5 + +2020/04/12: Release Candidate 2 for Version 6.9.5 +2020/04/09: fix a problem (found by oss-fuzz test on my PC) +2020/04/05: Release Candidate 1 for Version 6.9.5 +2020/03/30: remove src/*.py and src/*.sh from distribution files +2020/03/27: NEW: Code point sequence notation \x{HHHH ...}, \o{OOOO ...} +2020/03/24: NEW API: maximum nesting level of subexp call +2020/03/22: #165: change enable-posix-api default from YES to NO +2020/03/15: update Unicode version to 13.0.0 +2020/03/10: add test_back.c +2020/03/08: tune output of debug in print_optimize_info() +2020/03/02: fix #186: Allow regset search to succeed at end of string +2020/02/13: NEW API: retry-limit-in-search functions +2020/01/20: add ONIG_SYN_VARIABLE_LEN_LOOK_BEHIND flag +2019/12/27: add USE_REGSET switch +2019/12/20: remove OPTIMIZE_STR_CASE_FOLD +2019/12/13: add test/test_syntax.c +2019/12/13: add ONIG_SYN_ISOLATED_OPTION_CONTINUE_BRANCH flag + + +2019/11/29: Version 6.9.4 + +2019/11/22: Release Candidate 3 for Version 6.9.4 +2019/11/20: fix a problem found by libFuzzer test +2019/11/14: Release Candidate 2 for Version 6.9.4 +2019/11/12: fix integer overflow by nested quantifier +2019/11/11: fix CVE-2019-19012: Integer overflow related to reg->dmax in search_in_range() +2019/11/07: fix CVE-2019-19203: heap-buffer-overflow in gb18030_mbc_enc_len() +2019/11/06: fix CVE-2019-19204: heap-buffer-overflow in fetch_interval_quantifier() +2019/11/06: add HAVE_INTTYPES_H into config.h.windows.in and config.h.win{32,64} +2019/11/06: add HAVE_STDINT_H into config.h.win{32,64} +2019/11/05: Release Candidate 1 for Version 6.9.4 +2019/10/31: Update Unicode Emoji version to 12.1 (Nothing data changed) +2019/10/29: implement USE_REPEAT_AND_EMPTY_CHECK_LOCAL_VAR configuration +2019/10/18: re-implement case fold conversion +2019/10/04: fix #156: Heap buffer overflow in match_at() with case-insensitive match +2019/09/30: NEW API: add onig_regset_replace() +2019/09/30: change Unicode VERSION value format +2019/09/20: NEW API: add regset functions +2019/09/20: add data ensure check before peek string value in OP_PUSH_IF_PEEK_NEXT +2019/09/20: fix loose code in encode-harness.c +2019/08/13: fix heap-buffer-overflow +2019/08/13: Add a macro to disable direct threading in the match engine (PR#149) + +2019/08/06: Version 6.9.3 (secirity fix release) + +2019/07/30: add ONIG_SYN_ALLOW_INVALID_CODE_END_OF_RANGE_IN_CC +2019/07/29: add STK_PREC_READ_START/END stack type +2019/07/29: Fix #147: Stack Exhaustion Problem caused by some parsing functions +2019/07/11: add a dictionary file for libfuzzer +2019/07/07: add harnesses directory +2019/07/05-2019/07/29: fix many problems found by libfuzzer programs +2019/06/27: deprecate onig_new_deluxe() +2019/06/27: Fix CVE-2019-13224: don't allow different encodings for onig_new_deluxe() +2019/06/27: Fix CVE-2019-13225: problem in converting if-then-else pattern + +2019/05/07: Version 6.9.2 (same as Release Candidate 3) + +2019/04/23: Release Candidate 3 for 6.9.2 +2019/04/23: add doc/SYNTAX.md into distribution file +2019/04/09: Release Candidate 2 for 6.9.2 +2019/04/09: fix #139: UAF in match_at() +2019/04/01: Release Candidate 1 for 6.9.2 +2019/04/01: update Unicode version to 12.1.0 (draft) +2019/03/29: allow {n,m} (n>m) as possessive interval +2019/03/25: add ONIG_SYN_OP2_OPTION_ONIGURUMA +2019/03/22: add new options ONIG_OPTION_TEXT_SEGMENT_EXTENDED_GRAPHEME_CLUSTER and + ONIG_OPTION_TEXT_SEGMENT_WORD +2019/03/21: PR #137: fix cross-compilation +2019/03/20: update Unicode version to 12.0.0 +2019/03/17: add doc/SYNTAX.md +2019/03/13: {n,m}+ and {n,m}? are possessive and reluctant range operator + in Perl syntax +2019/03/04: fix #132: don't execute testp if ENABLE_POSIX_API == no +2019/02/28: re-implement bytecode by using Operation struct +2019/02/26: fix #130: Build error on UWP with VS2017 +2019/02/03: PR #128: regerror/toascii: do not attempt to serialize NULL pointer +2019/01/30: Build breaks without autoreconf #73 +2019/01/02: fix #127: Windows VS 2008 build errors +2018/12/19: fix #126: Unable to compile when USE_CALLOUT is not defined + +2018/12/11: Version 6.9.1 + +2018/10/08: use ENC_FLAG_SKIP_OFFSET_XXX values +2018/10/06: UTF-8 supports code range from 0x0000 to 0x10FFFF + (https://tools.ietf.org/html/rfc3629) +2018/10/05: speed improvement +2018/10/03: use OPTIMIZE_STR_CASE_FOLD_FAST +2018/10/01: convert CRLF line endings to LF +2018/09/27: set SIZEOF_SIZE_T for windows platforms +2018/09/22: use Sunday quick search algorithm instead of Boyer-Moor-Horspool +2018/09/20: introduce threaded code into match_at() +2018/09/17: remove HAVE_STRINGS_H +2018/09/16: remove HAVE_PROTOTYPES and HAVE_STDARG_PROTOTYPES +2018/09/14: add a command line option '-gc' for make_unicode_property_data.py. +2018/09/08: remove AC_HEADER_STDC +2018/09/06: remove AC_OUTPUT macro call +2018/09/06: remove AC_FUNC_MEMCMP, AC_HEADER_TIME, AC_C_CONST, HAVE__SETJMP and + HAVE_STRING_H +2018/09/05: remove HAVE_LIMITS_H, HAVE_FLOAT_H and HAVE_STDLIB_H + +2018/09/03: Version 6.9.0 + +2018/08/24: add Unicode Emoji properties +2018/08/24: update Unicode version 11.0.0 +2018/08/21: support gperf 3.1 instead of 3.0.4 +2018/08/07: add ENABLE_POSIX_API switch into src/Makefile.windows +2018/08/02: add make_win.bat and src/config.h.windows.in +2018/06/25: add ENABLE_POSIX_API option into CMakeLists.txt +2018/06/04: add .travis.yml (for TravisCI) + +2018/04/17: Version 6.8.2 + +2018/04/13: add doc/CALLOUTS.API.ja +2018/04/10: add doc/CALLOUTS.API +2018/04/10: fix #87: Read unknown address in onig_error_code_to_str() +2018/04/06: fix #86: typedef StateCheckNumType is unused +2018/04/02: update automake 1.16.1 +2018/03/30: fix #84: stack-buffer-overflow in mbc_enc_len +2018/03/28: PR #83: Improve CMake build +2018/03/21: switch uses of UChar to OnigUChar in oniguruma.h (#80) + +2018/03/19: Version 6.8.1 + +2018/03/19: update LTVERSION from 4:0:0 to 5:0:0 +2018/03/19: add flag, sb_range etc.. into OnigEncodingType +2018/03/19: move regex structure from oniguruma.h to regint.h +2018/03/19: ONIGENC_CTYPE_XXX to be enum (Issue #33) + +2018/03/16: Version 6.8.0 + +2018/03/12: add doc/CALLOUTS.BUILTIN for builtin callouts +2018/03/08: allow abbreviated notation for callouts (?(*name)..|..) (?(?{...})..|..) +2018/03/02: NEW API: move onigenc_strdup() from regenc.h to oniguruma.h +2018/02/21: remove all USE_COMBINATION_EXPLOSION_CHECK +2018/02/15: fix #78: bad definition of PV_() +2018/02/14: add configure option --enable-posix-api (for #77) +2018/02/08: implement callouts of name +2018/02/01: implement callouts of contents +2018/01/30: define ONIGURUMA_VERSION_INT +2018/01/29: enable USE_TRY_IN_MATCH_LIMIT by default +2018/01/29: NEW API: onig_search_with_param() onig_match_with_param() +2018/01/26: remove include windows.h from oniguruma.h + +2018/01/26: Version 6.7.1 + +2018/01/25: disable USE_TRY_IN_MATCH_LIMIT by default +2018/01/24: implement mechanism of try-in-match-limit +2018/01/24: #76: rename EXPORT to ONIGURUMA_EXPORT +2018/01/15: #73: update for automake 1.15.1 +2018/01/14: #74: update description of README +2018/01/10: #72: Correct spelling and grammar in FAQ (English) +2017/12/25: remove USE_COMBINATION_EXPLOSION_CHECK codes + +2017/12/11: Version 6.7.0 + +2017/12/08: Disable \N and \O on ONIG_SYNTAX_RUBY +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)*) + +2017/08/28: Version 6.6.0 + +2017/08/26: fix #67: can't compile with Visual Studio 2005 +2017/08/24: rename Absent clear to Range clear +2017/08/21: [new] Extended Grapheme Cluster \X and boundary \y, \Y +2017/08/17: fix: invalid index(ctype) value assigned to Unicode Block properties +2017/08/16: --enable-crnl-as-line-terminator to be deprecated +2017/08/15: [new] ASCII only mode options (?WDSP) +2017/08/14: [new] ONIG_OPTION_XXXX_IS_ASCII options +2017/08/11: disable OP_CCLASS_NODE +2017/08/11: [spec] Absent clear restore previous range value at backtrack +2017/08/07: optimize for simple one char repetition in Absent expression +2017/08/07: fix: invalid impl. for reluctant repetition in Absent expression +2017/08/04: remove compile switch USE_NAMED_GROUP + +2017/08/03: Version 6.5.0 + +2017/07/30: [new] support Absent clear (Absent functions) +2017/07/25: abolish configure option: --enable-combination-explosion-check +2017/07/23: [new] support Absent functions (?~...) +2017/07/14: fix #65: SIZEOF_SIZE_T doesn't exist on certain architecutres +2017/07/11: [new] support \O (true anychar) +2017/07/10: [new] support \K (keep) +2017/07/10: add new node type: NODE_GIMMICK +2017/07/07: [new] support \N (no newline) +2017/07/05: [new] support \R (general newline) +2017/07/05: [new] support if-then-else syntax +2017/07/04: [new] support backref validity checker + +2017/07/03: Version 6.4.0 + +2017/06/30: fix memory leaks +2017/06/29: fix memory leaks +2017/06/28: change encoding of doc/XXXX.ja from EUC-JP to UTF-8 +2017/06/28: update doc/RE, and doc/RE.ja +2017/06/26: fix fatal bug of endless repeat check on Windows +2017/06/26: PR #62 : add check for return values +2017/06/23: [new] support call zero (\g{0}) +2017/06/23: [new] support relative call by positive number +2017/06/23: [new] support relative back-reference by positive number +2017/06/15: fix #60 : check value type +2017/06/02: change output format for ONIG_DEBUG_COMPILE and ONIG_DEBUG_MATCH + +2017/05/29: Version 6.3.0 + +2017/05/24: fix #60 : invalid state(CCS_VALUE) in parse_char_class() +2017/05/24: fix #59 : access to invalid address by reg->dmax value +2017/05/23: fix invalid increment of start position in onig_scan() +2017/05/23: fix #58 : access to invalid address by reg->dmin value +2017/05/23: fix #57 : DATA_ENSURE() check must be before data access +2017/05/22: fix #56 : return invalid result for codepoint 0xFFFFFFFF +2017/05/19: [new] add \o{17777777777} syntax. +2017/05/19: fix #55 : Byte value expressed in octal must be smaller than 256 + +2017/04/08: Version 6.2.0 + +2017/03/15: fix: size in xmemcpy in stack_double (PR #51) +2017/02/21: Initialize return value +2017/01/03: NEW API: add onig_set_capture_num_limit() +2017/01/03: change MemNumType from short int to int +2016/12/13: fix: [0-9-a] was not allowed as [0-9\-a] +2016/12/13: fix: illegal capture after recursive call +2016/12/13: fix: problem with optimization of \z +2016/12/13: fix: .* optimization +2016/12/13: Set a limit of parser recursion +2016/12/12: fix; that warnings are not shown properly +2016/12/12: fix: /[a-c#]+\W/ =~ "def#" fails when encoding is UTF-16/32 +2016/12/12: fix: /[\x{0}-X]/i doesn't match properly when UTF-16/32 is used. + +2016/12/11: Version 6.1.3 + +2016/12/11: fix: Syntax error: redirection unexpected (expecting word) #35 + +2016/11/07: Version 6.1.2 + +2016/10/25: allow word bound, word begin and word end in look-behind. +2016/10/19: add ONIG_OPTION_CHECK_VALIDITY_OF_STRING option. +2016/10/16: fix use after free node. +2016/10/10: fix memory leaks after parsing regexp error. +2016/09/22: implement many of is_valid_mbc_string(). + +2016/09/02: Version 6.1.1 + +2016/08/31: fix segfault /W.?{888}{888}{888}\x00/ (found by libfuzzer) +2016/08/31: fix error unmatched close parenthesis for %{(.*?)} #23 + +2016/08/29: Version 6.1.0 + +2016/08/28: add contributed/libfuzzer-onig.cpp (thanks hannob) +2016/08/28: update LTVERSION 4:0:0 +2016/08/28: NEW API: onigenc_is_valid_mbc_string(). +2016/08/27: add is_valid_mbc_string() member into OnigEncodingType. +2016/08/27: fix out of bounds read. +2016/08/26: fix out of bounds read. +2016/08/25: disable USE_INVALID_CODE_SCHEME. +2016/08/24: fix out of bounds read. +2016/08/23: doc/RE improved. +2016/08/22: add onig_scan() into doc/API. +2016/08/22: fix bug: Out of bounds read in onig_strcpy() #17 +2016/08/21: fix bug: infinite loop of backreference and group. +2016/08/21: fix out of bounds read in mbc_to_code() #16 +2016/08/18: doc/RE refinements. +2016/08/16: add onig_scan() (NEW API) +2016/08/16: reimplement match stack allocation for case too many repeat + and too many captures in regexp. +2016/08/15: number of captures <= 32767 for bytecode representation. +2016/07/17: don't use int_map_backward for thread-safe. +2016/07/04: fix case of enclosed option in look-behind. +2016/07/04: fix ignore case in look-behind. +2016/05/23: fix memory leak in onig_unicode_define_user_property() +2016/05/20: declare variables at the top of scope. (thanks nmaya) + +2016/05/09: Version 6.0.0 + +2016/05/05: add NEW API: onig_unicode_define_user_property() +2016/05/04: update Unicode data to 8.0.0 +2016/05/02: change OnigCodePoint type to unsigned int. +2016/05/02: add doc/UNICODE_PROPERTIES. +2016/04/19: add error code ONIGERR_FAIL_TO_INITIALIZE. +2016/04/18: add make_win64/32.bat. +2016/04/18: fix bug of uninitialized regex_t value on error. +2016/04/16: reimplement Unicode case folding. +2016/04/11: update LTVERSION = 3.0.0 +2016/04/05: remove all THREAD_ macro. +2016/04/05: add init member into OnigEncoding. (add onig_initialize()) +2016/03/28: remove state member of regex. +2016/03/25: move source files into src/ +2016/03/23: rename configre.in to configure.ac. +2015/11/17: fix memory leak. (thanks pigzang) +2015/07/13: change mail address. 2014/12/12: Version 5.9.6 @@ -916,7 +748,7 @@ History of Oniguruma Any, Assigned, C, Cc, L, Lm, Arabic, Greek etc... 2006/09/21: [impl] add USE_UNICODE_PROPERTIES into regenc.h. 2006/09/21: [impl] remove USE_UNICODE_FULL_RANGE_CTYPE. -2006/09/20: [impl] change ONIGENC_CTYPE_XXXX to sequencial values. +2006/09/20: [impl] change ONIGENC_CTYPE_XXXX to sequential values. add BIT_CTYPE_XXXX bit flags to regenc.h. update XXXX_CtypeTable[] for BIT_CTYPE_ALNUM. 2006/09/19: [memo] move from CVS to Subversion (1.3.2). @@ -1275,7 +1107,7 @@ History of Oniguruma 2005/03/08: [impl] (thanks matz) [ruby-dev:25783] should not allocate memory for key data in st.c. move st_*_strend() functions from st.c. fixed some - potential memory leaks. + potential memory leaks. (imported from Ruby 1.9 2005-03-08) 2005/03/07: Version 3.7.1 @@ -1378,7 +1210,7 @@ History of Oniguruma 2004/12/16: [test] success in ruby 1.9.0 (2004-12-16) [i686-linux]. 2004/12/16: [dist] update hash.c.patch. 2004/12/15: [bug] (thanks matz) - char > 127 should be casted to unsigned char. (utf8.c) + char > 127 should be cast to unsigned char. (utf8.c) 2004/12/13: [impl] add HAVE_PROTOTYPES and HAVE_STDARG_PROTOTYPES definition to oniguruma.h in the case __cplusplus. 2004/12/06: [dist] update doc/RE and doc/RE.ja. @@ -2268,7 +2100,7 @@ History of Oniguruma 2003/03/12: [spec] change named backref and subexp call format. backref: \k, call: \g (thanks akr) 2003/03/11: [inst] add regparse.[ch] in win32/Makefile. -2003/03/11: [bug] if UNALIGNED_WORD_ACCESS isn't set +2003/03/11: [bug] if UNALIGNED_WORD_ACCESS isn't set, then compile error in unset_addr_list_fix(). (thanks knu) 2003/03/10: [impl] divide regcomp.c to regcomp.c, regparse.c and regparse.h. 2003/03/10: [bug] should handle multi-byte code name in fetch_name(). @@ -2285,7 +2117,7 @@ History of Oniguruma 2003/03/08: [impl] remove check_backref_number(). 2003/03/08: [bug] called group in 0-repeat should not be eliminated from compile code. ex. /(?*n)(?){0}/ (thanks akr) - add is_refered member to QualifierNode. + add is_referred member to QualifierNode. 2003/03/07: [impl] use hash table(st.[ch]) for implementation of name table. (enable on Ruby in default) 2003/03/07: [new] add regex_foreach_names(). @@ -2338,13 +2170,13 @@ History of Oniguruma if it is set, then error /(\1)/, /\1(..)/ etc... 2003/02/26: [spec] if backref number is greater than max group number, then return compile error. (REGERR_INVALID_BACKREF_NUMBER) -2003/02/26: [tune] bad implemented N_ALT case in get_min_match_length(). +2003/02/26: [tune] badly implemented N_ALT case in get_min_match_length(). 2003/02/26: [dist] auto update testc.c and win32/testc.c in dist target. 2003/02/26: [impl] add -win option to testconv.rb. 2003/02/25: [spec] allow to assign same name to different group. add OP_BACKREF_MULTI. 2003/02/24: [impl] reduce redundant repeat of empty target. - ex. /()*/ ==> /()?/, /()+/ ==> /()/, /(?:)+/ ==> // + ex. /()*/ ==> /()?/, /()+/ ==> /()/, /(?:)+/ ==> // 2003/02/24: [impl] change condition in regex_is_allow_reverse_match(). 2003/02/24: [impl] convert i(/../, ...) functions in testconv.rb. 2003/02/24: [impl] change name table struct. @@ -2433,7 +2265,7 @@ History of Oniguruma 2003/01/31: [impl] rename TTRANS() to TOLOWER(). 2003/01/30: [bug] .c.o --> .c.obj in win32\Makefile. 2003/01/30: [impl] add -DNOT_RUBY to Makefile.in. - NOT_RUBY is refered in regint.h for escape double + NOT_RUBY is referred in regint.h for escape double including config.h. 2003/01/30: [impl] when string hasn't case ambiguity, don't compile to ignore case opcode. @@ -2458,7 +2290,7 @@ History of Oniguruma 2003/01/18: [impl] change REGION_NOTPOS to REG_REGION_NOTPOS in regex.h. 2003/01/17: [dist] add sample/simple.c. 2003/01/17: [inst] add configure option --with-rubydir. -2003/01/17: [bug] bad implemeted POSIX API options. +2003/01/17: [bug] badly implemented POSIX API options. default: /./ not match "\n", anchor not match "\n" REG_NEWLINE: /./ not match "\n", anchor match "\n" 2003/01/16: [impl] rewrite POSIX API regexec() for speed up. @@ -2652,10 +2484,17 @@ cvs history -T cvs rtag "VERSION_X_X_X" oniguruma + +> brew install autoconf +> brew install automake +> brew install libtool + + * write Makefile.am and configure.in. +> libtoolize or glibtoolize > aclocal -> libtoolize or glibtoolize +> autoheader > automake --foreign --add-missing > autoconf > configure --with-rubydir=... CFLAGS="-O2 -Wall" @@ -2670,4 +2509,13 @@ cvs rtag "VERSION_X_X_X" oniguruma age: number of supported previous interfaces (if current only supported then age == 0) + + +MacOS X +$ shasum -a 256 -b onig-X.Y.Z.tar.gz > onig-X.Y.Z.tar.gz.sha256 + + +MacOS X +$ shasum -a 256 -c onig-X.Y.Z.tar.gz.sha256 + //END diff --git a/vendor/oniguruma/oniguruma/INSTALL b/vendor/oniguruma/oniguruma/INSTALL new file mode 100644 index 0000000..8865734 --- /dev/null +++ b/vendor/oniguruma/oniguruma/INSTALL @@ -0,0 +1,368 @@ +Installation Instructions +************************* + + Copyright (C) 1994-1996, 1999-2002, 2004-2016 Free Software +Foundation, Inc. + + Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. This file is offered as-is, +without warranty of any kind. + +Basic Installation +================== + + Briefly, the shell command './configure && make && make install' +should configure, build, and install this package. The following +more-detailed instructions are generic; see the 'README' file for +instructions specific to this package. Some packages provide this +'INSTALL' file but do not implement all of the features documented +below. The lack of an optional feature in a given package is not +necessarily a bug. More recommendations for GNU packages can be found +in *note Makefile Conventions: (standards)Makefile Conventions. + + The 'configure' shell script attempts to guess correct values for +various system-dependent variables used during compilation. It uses +those values to create a 'Makefile' in each directory of the package. +It may also create one or more '.h' files containing system-dependent +definitions. Finally, it creates a shell script 'config.status' that +you can run in the future to recreate the current configuration, and a +file 'config.log' containing compiler output (useful mainly for +debugging 'configure'). + + It can also use an optional file (typically called 'config.cache' and +enabled with '--cache-file=config.cache' or simply '-C') that saves the +results of its tests to speed up reconfiguring. Caching is disabled by +default to prevent problems with accidental use of stale cache files. + + If you need to do unusual things to compile the package, please try +to figure out how 'configure' could check whether to do them, and mail +diffs or instructions to the address given in the 'README' so they can +be considered for the next release. If you are using the cache, and at +some point 'config.cache' contains results you don't want to keep, you +may remove or edit it. + + The file 'configure.ac' (or 'configure.in') is used to create +'configure' by a program called 'autoconf'. You need 'configure.ac' if +you want to change it or regenerate 'configure' using a newer version of +'autoconf'. + + The simplest way to compile this package is: + + 1. 'cd' to the directory containing the package's source code and type + './configure' to configure the package for your system. + + Running 'configure' might take a while. While running, it prints + some messages telling which features it is checking for. + + 2. Type 'make' to compile the package. + + 3. Optionally, type 'make check' to run any self-tests that come with + the package, generally using the just-built uninstalled binaries. + + 4. Type 'make install' to install the programs and any data files and + documentation. When installing into a prefix owned by root, it is + recommended that the package be configured and built as a regular + user, and only the 'make install' phase executed with root + privileges. + + 5. Optionally, type 'make installcheck' to repeat any self-tests, but + this time using the binaries in their final installed location. + This target does not install anything. Running this target as a + regular user, particularly if the prior 'make install' required + root privileges, verifies that the installation completed + correctly. + + 6. You can remove the program binaries and object files from the + source code directory by typing 'make clean'. To also remove the + files that 'configure' created (so you can compile the package for + a different kind of computer), type 'make distclean'. There is + also a 'make maintainer-clean' target, but that is intended mainly + for the package's developers. If you use it, you may have to get + all sorts of other programs in order to regenerate files that came + with the distribution. + + 7. Often, you can also type 'make uninstall' to remove the installed + files again. In practice, not all packages have tested that + uninstallation works correctly, even though it is required by the + GNU Coding Standards. + + 8. Some packages, particularly those that use Automake, provide 'make + distcheck', which can by used by developers to test that all other + targets like 'make install' and 'make uninstall' work correctly. + This target is generally not run by end users. + +Compilers and Options +===================== + + Some systems require unusual options for compilation or linking that +the 'configure' script does not know about. Run './configure --help' +for details on some of the pertinent environment variables. + + You can give 'configure' initial values for configuration parameters +by setting variables in the command line or in the environment. Here is +an example: + + ./configure CC=c99 CFLAGS=-g LIBS=-lposix + + *Note Defining Variables::, for more details. + +Compiling For Multiple Architectures +==================================== + + You can compile the package for more than one kind of computer at the +same time, by placing the object files for each architecture in their +own directory. To do this, you can use GNU 'make'. 'cd' to the +directory where you want the object files and executables to go and run +the 'configure' script. 'configure' automatically checks for the source +code in the directory that 'configure' is in and in '..'. This is known +as a "VPATH" build. + + With a non-GNU 'make', it is safer to compile the package for one +architecture at a time in the source code directory. After you have +installed the package for one architecture, use 'make distclean' before +reconfiguring for another architecture. + + On MacOS X 10.5 and later systems, you can create libraries and +executables that work on multiple system types--known as "fat" or +"universal" binaries--by specifying multiple '-arch' options to the +compiler but only a single '-arch' option to the preprocessor. Like +this: + + ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ + CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ + CPP="gcc -E" CXXCPP="g++ -E" + + This is not guaranteed to produce working output in all cases, you +may have to build one architecture at a time and combine the results +using the 'lipo' tool if you have problems. + +Installation Names +================== + + By default, 'make install' installs the package's commands under +'/usr/local/bin', include files under '/usr/local/include', etc. You +can specify an installation prefix other than '/usr/local' by giving +'configure' the option '--prefix=PREFIX', where PREFIX must be an +absolute file name. + + You can specify separate installation prefixes for +architecture-specific files and architecture-independent files. If you +pass the option '--exec-prefix=PREFIX' to 'configure', the package uses +PREFIX as the prefix for installing programs and libraries. +Documentation and other data files still use the regular prefix. + + In addition, if you use an unusual directory layout you can give +options like '--bindir=DIR' to specify different values for particular +kinds of files. Run 'configure --help' for a list of the directories +you can set and what kinds of files go in them. In general, the default +for these options is expressed in terms of '${prefix}', so that +specifying just '--prefix' will affect all of the other directory +specifications that were not explicitly provided. + + The most portable way to affect installation locations is to pass the +correct locations to 'configure'; however, many packages provide one or +both of the following shortcuts of passing variable assignments to the +'make install' command line to change installation locations without +having to reconfigure or recompile. + + The first method involves providing an override variable for each +affected directory. For example, 'make install +prefix=/alternate/directory' will choose an alternate location for all +directory configuration variables that were expressed in terms of +'${prefix}'. Any directories that were specified during 'configure', +but not in terms of '${prefix}', must each be overridden at install time +for the entire installation to be relocated. The approach of makefile +variable overrides for each directory variable is required by the GNU +Coding Standards, and ideally causes no recompilation. However, some +platforms have known limitations with the semantics of shared libraries +that end up requiring recompilation when using this method, particularly +noticeable in packages that use GNU Libtool. + + The second method involves providing the 'DESTDIR' variable. For +example, 'make install DESTDIR=/alternate/directory' will prepend +'/alternate/directory' before all installation names. The approach of +'DESTDIR' overrides is not required by the GNU Coding Standards, and +does not work on platforms that have drive letters. On the other hand, +it does better at avoiding recompilation issues, and works well even +when some directory options were not specified in terms of '${prefix}' +at 'configure' time. + +Optional Features +================= + + If the package supports it, you can cause programs to be installed +with an extra prefix or suffix on their names by giving 'configure' the +option '--program-prefix=PREFIX' or '--program-suffix=SUFFIX'. + + Some packages pay attention to '--enable-FEATURE' options to +'configure', where FEATURE indicates an optional part of the package. +They may also pay attention to '--with-PACKAGE' options, where PACKAGE +is something like 'gnu-as' or 'x' (for the X Window System). The +'README' should mention any '--enable-' and '--with-' options that the +package recognizes. + + For packages that use the X Window System, 'configure' can usually +find the X include and library files automatically, but if it doesn't, +you can use the 'configure' options '--x-includes=DIR' and +'--x-libraries=DIR' to specify their locations. + + Some packages offer the ability to configure how verbose the +execution of 'make' will be. For these packages, running './configure +--enable-silent-rules' sets the default to minimal output, which can be +overridden with 'make V=1'; while running './configure +--disable-silent-rules' sets the default to verbose, which can be +overridden with 'make V=0'. + +Particular systems +================== + + On HP-UX, the default C compiler is not ANSI C compatible. If GNU CC +is not installed, it is recommended to use the following options in +order to use an ANSI C compiler: + + ./configure CC="cc -Ae -D_XOPEN_SOURCE=500" + +and if that doesn't work, install pre-built binaries of GCC for HP-UX. + + HP-UX 'make' updates targets which have the same time stamps as their +prerequisites, which makes it generally unusable when shipped generated +files such as 'configure' are involved. Use GNU 'make' instead. + + On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot +parse its '' header file. The option '-nodtk' can be used as a +workaround. If GNU CC is not installed, it is therefore recommended to +try + + ./configure CC="cc" + +and if that doesn't work, try + + ./configure CC="cc -nodtk" + + On Solaris, don't put '/usr/ucb' early in your 'PATH'. This +directory contains several dysfunctional programs; working variants of +these programs are available in '/usr/bin'. So, if you need '/usr/ucb' +in your 'PATH', put it _after_ '/usr/bin'. + + On Haiku, software installed for all users goes in '/boot/common', +not '/usr/local'. It is recommended to use the following options: + + ./configure --prefix=/boot/common + +Specifying the System Type +========================== + + There may be some features 'configure' cannot figure out +automatically, but needs to determine by the type of machine the package +will run on. Usually, assuming the package is built to be run on the +_same_ architectures, 'configure' can figure that out, but if it prints +a message saying it cannot guess the machine type, give it the +'--build=TYPE' option. TYPE can either be a short name for the system +type, such as 'sun4', or a canonical name which has the form: + + CPU-COMPANY-SYSTEM + +where SYSTEM can have one of these forms: + + OS + KERNEL-OS + + See the file 'config.sub' for the possible values of each field. If +'config.sub' isn't included in this package, then this package doesn't +need to know the machine type. + + If you are _building_ compiler tools for cross-compiling, you should +use the option '--target=TYPE' to select the type of system they will +produce code for. + + If you want to _use_ a cross compiler, that generates code for a +platform different from the build platform, you should specify the +"host" platform (i.e., that on which the generated programs will +eventually be run) with '--host=TYPE'. + +Sharing Defaults +================ + + If you want to set default values for 'configure' scripts to share, +you can create a site shell script called 'config.site' that gives +default values for variables like 'CC', 'cache_file', and 'prefix'. +'configure' looks for 'PREFIX/share/config.site' if it exists, then +'PREFIX/etc/config.site' if it exists. Or, you can set the +'CONFIG_SITE' environment variable to the location of the site script. +A warning: not all 'configure' scripts look for a site script. + +Defining Variables +================== + + Variables not defined in a site shell script can be set in the +environment passed to 'configure'. However, some packages may run +configure again during the build, and the customized values of these +variables may be lost. In order to avoid this problem, you should set +them in the 'configure' command line, using 'VAR=value'. For example: + + ./configure CC=/usr/local2/bin/gcc + +causes the specified 'gcc' to be used as the C compiler (unless it is +overridden in the site shell script). + +Unfortunately, this technique does not work for 'CONFIG_SHELL' due to an +Autoconf limitation. Until the limitation is lifted, you can use this +workaround: + + CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash + +'configure' Invocation +====================== + + 'configure' recognizes the following options to control how it +operates. + +'--help' +'-h' + Print a summary of all of the options to 'configure', and exit. + +'--help=short' +'--help=recursive' + Print a summary of the options unique to this package's + 'configure', and exit. The 'short' variant lists options used only + in the top level, while the 'recursive' variant lists options also + present in any nested packages. + +'--version' +'-V' + Print the version of Autoconf used to generate the 'configure' + script, and exit. + +'--cache-file=FILE' + Enable the cache: use and save the results of the tests in FILE, + traditionally 'config.cache'. FILE defaults to '/dev/null' to + disable caching. + +'--config-cache' +'-C' + Alias for '--cache-file=config.cache'. + +'--quiet' +'--silent' +'-q' + Do not print messages saying which checks are being made. To + suppress all normal output, redirect it to '/dev/null' (any error + messages will still be shown). + +'--srcdir=DIR' + Look for the package's source code in directory DIR. Usually + 'configure' can determine that directory automatically. + +'--prefix=DIR' + Use DIR as the installation prefix. *note Installation Names:: for + more details, including other options available for fine-tuning the + installation locations. + +'--no-create' +'-n' + Run the configure checks, but stop before creating any output + files. + +'configure' also accepts some other, not widely useful, options. Run +'configure --help' for more details. diff --git a/vendor/oniguruma/oniguruma/Makefile.am b/vendor/oniguruma/oniguruma/Makefile.am new file mode 100644 index 0000000..4158942 --- /dev/null +++ b/vendor/oniguruma/oniguruma/Makefile.am @@ -0,0 +1,87 @@ +## Makefile.am for Oniguruma + +ACLOCAL_AMFLAGS = -I m4 + +SUBDIRS = src test sample + +EXTRA_DIST = oniguruma.pc.in HISTORY README_japanese README.md \ + index.html index_ja.html make_win.bat \ + CMakeLists.txt oniguruma.pc.cmake.in cmake/Config.cmake.in \ + onig-config.cmake.in src/config.h.cmake.in \ + doc/API doc/API.ja doc/RE doc/RE.ja doc/FAQ doc/FAQ.ja \ + doc/CALLOUTS.BUILTIN doc/CALLOUTS.BUILTIN.ja \ + doc/CALLOUTS.API doc/CALLOUTS.API.ja \ + doc/SYNTAX.md doc/UNICODE_PROPERTIES \ + src/Makefile.windows src/config.h.windows.in \ + src/config.h.win32 src/config.h.win64 \ + test/test.sh test/CMakeLists.txt \ + windows/testc.c windows/CMakeLists.txt + +bin_SCRIPTS = onig-config + +onig-config: onig-config.in + +do_subst = sed \ + -e 's,[@]datadir[@],$(datadir),g' \ + -e 's,[@]datarootdir[@],$(datarootdir),g' \ + -e 's,[@]PACKAGE_VERSION[@],$(PACKAGE_VERSION),g' \ + -e 's,[@]prefix[@],$(prefix),g' \ + -e 's,[@]exec_prefix[@],$(exec_prefix),g' \ + -e 's,[@]libdir[@],$(libdir),g' \ + -e 's,[@]includedir[@],$(includedir),g' + +oniguruma.pc: $(srcdir)/oniguruma.pc.in Makefile + $(do_subst) < $(srcdir)/oniguruma.pc.in > $(@) + +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = oniguruma.pc +DISTCLEANFILES = oniguruma.pc + +all-test: + cd test; make test + +archive: + git archive --format=tar --prefix=oniguruma/ HEAD | gzip > ../oniguruma-archive.tar.gz + +tar: + cd ..; tar cvf oniguruma-`date +%Y%m%d`.tar oniguruma; gzip oniguruma-`date +%Y%m%d`.tar + +debug: + make clean + ./configure CFLAGS="-O0 -g" + make + +debug_out: + make clean + ./configure CFLAGS="-O0 -g -DONIG_DEBUG_PARSE -DONIG_DEBUG_COMPILE" + make + +sanitize: + make clean + ./configure CFLAGS="-O -g -fsanitize=address" LDFLAGS="-fsanitize=address" + make + make all-test + +debug_out_sanitize: + make clean + ./configure CFLAGS="-O0 -g -fsanitize=address -DONIG_DEBUG_PARSE -DONIG_DEBUG_COMPILE" LDFLAGS="-fsanitize=address" + make + +cov: + make lcov-clear + cd test; make CFLAGS="--coverage" test + make lcov + +gcov: + make CFLAGS="--coverage" + +lcov: + lcov -c -d src/.libs -o coverage.info + genhtml -o coverage coverage.info + +lcov-clear: + lcov -z -d . + +cov-clean: clean + rm -rf coverage coverage.info + find . -name '*.gcno' | xargs rm -f diff --git a/vendor/oniguruma/oniguruma/NEWS b/vendor/oniguruma/oniguruma/NEWS new file mode 100644 index 0000000..e69de29 diff --git a/vendor/oniguruma/oniguruma/README b/vendor/oniguruma/oniguruma/README new file mode 100644 index 0000000..86447e3 --- /dev/null +++ b/vendor/oniguruma/oniguruma/README @@ -0,0 +1,203 @@ +README 2018/04/05 + +Oniguruma ---- (C) K.Kosako + +https://github.com/kkos/oniguruma + +FIXED Security Issues (in Oniguruma 6.3.0): + CVE-2017-9224, CVE-2017-9225, CVE-2017-9226 + CVE-2017-9227, CVE-2017-9228, CVE-2017-9229 + +--- +Oniguruma is a modern and flexible regular expressions library. It +encompasses features from different regular expression implementations +that traditionally exist in different languages. It comes close to +being a complete superset of all regular expression features found +in other regular expression implementations. + +Its features include: +* Character encoding can be specified per regular expression object. +* Several regular expression types are supported: + * POSIX + * Grep + * GNU Regex + * Perl + * Java + * Ruby + * Emacs + +Supported character encodings: + + ASCII, UTF-8, UTF-16BE, UTF-16LE, UTF-32BE, UTF-32LE, + EUC-JP, EUC-TW, EUC-KR, EUC-CN, + Shift_JIS, Big5, GB18030, KOI8-R, CP1251, + ISO-8859-1, ISO-8859-2, ISO-8859-3, ISO-8859-4, ISO-8859-5, + ISO-8859-6, ISO-8859-7, ISO-8859-8, ISO-8859-9, ISO-8859-10, + ISO-8859-11, ISO-8859-13, ISO-8859-14, ISO-8859-15, ISO-8859-16 + +* GB18030: contributed by KUBO Takehiro +* CP1251: contributed by Byte +------------------------------------------------------------ + +License + + BSD license. + + +Install + + Case 1: Linux distribution packages + + * Fedora: dnf install oniguruma-devel + * RHEL/CentOS: yum install oniguruma + * Debian/Ubuntu: apt install libonig5 + * Arch: pacman -S oniguruma + * openSUSE: zypper install oniguruma + + Case 2: Manual compilation on Linux, Unix, and Cygwin platform + + 1. autoreconf -vfi (* case: configure script is not found.) + + 2. ./configure + 3. make + 4. make install + + * uninstall + + make uninstall + + * configuration check + + onig-config --cflags + onig-config --libs + onig-config --prefix + onig-config --exec-prefix + + + + Case 3: Windows 64/32bit platform (Visual Studio) + + execute make_win64 or make_win32 + + src/onig_s.lib: static link library + src/onig.dll: dynamic link library + + * test (ASCII/Shift_JIS) + 1. cd src + 2. copy ..\windows\testc.c . + 3. nmake -f Makefile.windows ctest + + (I have checked by Visual Studio Community 2015) + + + +Regular Expressions + + See doc/RE (or doc/RE.ja for Japanese). + + +Usage + + Include oniguruma.h in your program. (Oniguruma API) + See doc/API for Oniguruma API. + + If you want to disable UChar type (== unsigned char) definition + in oniguruma.h, define ONIG_ESCAPE_UCHAR_COLLISION and then + include oniguruma.h. + + If you want to disable regex_t type definition in oniguruma.h, + define ONIG_ESCAPE_REGEX_T_COLLISION and then include oniguruma.h. + + Example of the compiling/linking command line in Unix or Cygwin, + (prefix == /usr/local case) + + cc sample.c -L/usr/local/lib -lonig + + + If you want to use static link library(onig_s.lib) in Win32, + add option -DONIG_EXTERN=extern to C compiler. + + + +Sample Programs + + sample/simple.c example of the minimum (Oniguruma API) + sample/names.c example of the named group callback. + sample/encode.c example of some encodings. + sample/listcap.c example of the capture history. + sample/posix.c POSIX API sample. + sample/sql.c example of the variable meta characters. + (SQL-like pattern matching) + sample/user_property.c example of user defined Unicode property. + +Test Programs + sample/syntax.c Perl, Java and ASIS syntax test. + sample/crnl.c --enable-crnl-as-line-terminator test + + +Source Files + + oniguruma.h Oniguruma API header file. (public) + onig-config.in configuration check program template. + + regenc.h character encodings framework header file. + regint.h internal definitions + regparse.h internal definitions for regparse.c and regcomp.c + regcomp.c compiling and optimization functions + regenc.c character encodings framework. + regerror.c error message function + regext.c extended API functions. (deluxe version API) + regexec.c search and match functions + regparse.c parsing functions. + regsyntax.c pattern syntax functions and built-in syntax definitions. + regtrav.c capture history tree data traverse functions. + regversion.c version info function. + st.h hash table functions header file + st.c hash table functions + + oniggnu.h GNU regex API header file. (public) + reggnu.c GNU regex API functions + + onigposix.h POSIX API header file. (public) + regposerr.c POSIX error message function. + regposix.c POSIX API functions. + + mktable.c character type table generator. + ascii.c ASCII encoding. + euc_jp.c EUC-JP encoding. + euc_tw.c EUC-TW encoding. + euc_kr.c EUC-KR, EUC-CN encoding. + sjis.c Shift_JIS encoding. + big5.c Big5 encoding. + gb18030.c GB18030 encoding. + koi8.c KOI8 encoding. + koi8_r.c KOI8-R encoding. + cp1251.c CP1251 encoding. + iso8859_1.c ISO-8859-1 encoding. (Latin-1) + iso8859_2.c ISO-8859-2 encoding. (Latin-2) + iso8859_3.c ISO-8859-3 encoding. (Latin-3) + iso8859_4.c ISO-8859-4 encoding. (Latin-4) + iso8859_5.c ISO-8859-5 encoding. (Cyrillic) + iso8859_6.c ISO-8859-6 encoding. (Arabic) + iso8859_7.c ISO-8859-7 encoding. (Greek) + iso8859_8.c ISO-8859-8 encoding. (Hebrew) + iso8859_9.c ISO-8859-9 encoding. (Latin-5 or Turkish) + iso8859_10.c ISO-8859-10 encoding. (Latin-6 or Nordic) + iso8859_11.c ISO-8859-11 encoding. (Thai) + iso8859_13.c ISO-8859-13 encoding. (Latin-7 or Baltic Rim) + iso8859_14.c ISO-8859-14 encoding. (Latin-8 or Celtic) + iso8859_15.c ISO-8859-15 encoding. (Latin-9 or West European with Euro) + iso8859_16.c ISO-8859-16 encoding. + (Latin-10 or South-Eastern European with Euro) + utf8.c UTF-8 encoding. + utf16_be.c UTF-16BE encoding. + utf16_le.c UTF-16LE encoding. + utf32_be.c UTF-32BE encoding. + utf32_le.c UTF-32LE encoding. + unicode.c common codes of Unicode encoding. + + win32/Makefile Makefile for Win32 (VC++) + win32/config.h config.h for Win32 + + +and I'm thankful to Akinori MUSHA. diff --git a/vendor/oniguruma/oniguruma/README.md b/vendor/oniguruma/oniguruma/README.md new file mode 100644 index 0000000..a2fe6e0 --- /dev/null +++ b/vendor/oniguruma/oniguruma/README.md @@ -0,0 +1,263 @@ +[![Fuzzing Status](https://oss-fuzz-build-logs.storage.googleapis.com/badges/oniguruma.svg)](https://oss-fuzz-build-logs.storage.googleapis.com/index.html#oniguruma) + +Oniguruma +========= + +## **The only open source software attacked on Google search in Japan.** [(Issue #234)](https://github.com/kkos/oniguruma/issues/234) + + +https://github.com/kkos/oniguruma + +Oniguruma is a modern and flexible regular expressions library. It +encompasses features from different regular expression implementations +that traditionally exist in different languages. + +Character encoding can be specified per regular expression object. + +Supported character encodings: + + ASCII, UTF-8, UTF-16BE, UTF-16LE, UTF-32BE, UTF-32LE, + EUC-JP, EUC-TW, EUC-KR, EUC-CN, + Shift_JIS, Big5, GB18030, KOI8-R, CP1251, + ISO-8859-1, ISO-8859-2, ISO-8859-3, ISO-8859-4, ISO-8859-5, + ISO-8859-6, ISO-8859-7, ISO-8859-8, ISO-8859-9, ISO-8859-10, + ISO-8859-11, ISO-8859-13, ISO-8859-14, ISO-8859-15, ISO-8859-16 + +* GB18030: contributed by KUBO Takehiro +* CP1251: contributed by Byte +* doc/SYNTAX.md: contributed by seanofw + + +Notice (from 6.9.6) +------------------- +When using configure script, if you have the POSIX API enabled in an earlier version (disabled by default in 6.9.5) and you need application binary compatibility with the POSIX API, specify "--enable-binary-compatible-posix-api=yes" instead of "--enable-posix-api=yes". Starting in 6.9.6, "--enable-posix-api=yes" only supports source-level compatibility for 6.9.5 and earlier about POSIX API. (Issue #210) + + +Version 6.9.10 +-------------- +* Update Unicode version 16.0 +* Add new operator (*SKIP) +* Fixed: ONIG_SYN_CONTEXT_INDEP_REPEAT_OPS not working for ^* pattern (Issue #292) + + +Version 6.9.9 +------------- +* Update Unicode version 15.1.0 +* NEW API: ONIG_OPTION_MATCH_WHOLE_STRING +* Fixed: (?I) option was not enabled for character classes (Issue #264). +* Changed specification to check for incorrect POSIX bracket (Issue #253). +* Changed [[:punct:]] in Unicode encodings to be compatible with POSIX definition. (Issue #268) +* Fixed: ONIG_OPTION_FIND_LONGEST behavior + + +Version 6.9.8 +------------- +* Update Unicode version 14.0.0 +* Whole options + * (?C) : ONIG_OPTION_DONT_CAPTURE_GROUP + * (?I) : ONIG_OPTION_IGNORECASE_IS_ASCII + * (?L) : ONIG_OPTION_FIND_LONGEST +* Fixed some problems found by OSS-Fuzz + + +Version 6.9.7 +------------- +* NEW API: ONIG_OPTION_CALLBACK_EACH_MATCH +* NEW API: ONIG_OPTION_IGNORECASE_IS_ASCII +* NEW API: ONIG_SYNTAX_PYTHON +* Fixed some problems found by OSS-Fuzz + + +Version 6.9.6 +------------- +* NEW: configure option --enable-binary-compatible-posix-api=[yes/no] +* NEW API: Limiting the maximum number of calls of subexp-call +* NEW API: ONIG_OPTION_NOT_BEGIN_STRING / NOT_END_STRING / NOT_BEGIN_POSITION +* Fixed behavior of ONIG_OPTION_NOTBOL / NOTEOL +* Fixed many problems found by OSS-Fuzz +* Fixed many problems found by Coverity +* Fixed CVE-2020-26159 (This turned out not to be a problem later. #221) +* Under cygwin and mingw, generate and install the libonig.def file (Issue #220) + + +License +------- + + BSD license. + + +Install +------- + +### Case 1: Linux distribution packages + + * Fedora: `dnf install oniguruma-devel` + * RHEL/CentOS: `yum install oniguruma` + * Debian/Ubuntu: `apt install libonig5` + * Arch: `pacman -S oniguruma` + * openSUSE: `zypper install oniguruma` + +### Case 2: Manual compilation on Linux, Unix, and Cygwin platform + + 1. autoreconf -vfi (* case: configure script is not found.) + + 2. ./configure + 3. make + 4. make install + + * uninstall + + make uninstall + + * configuration check + + onig-config --cflags + onig-config --libs + onig-config --prefix + onig-config --exec-prefix + + + +### Case 3: Windows 64/32bit platform (Visual Studio) + + * build library + + .\make_win.bat + + onig_s.lib: static link library + onig.dll: dynamic link library + + * make test programs + + .\make_win.bat all-test + + +Alternatively, you can build and install oniguruma using [vcpkg](https://github.com/microsoft/vcpkg/) dependency manager: + + 1. git clone https://github.com/Microsoft/vcpkg.git + 2. cd vcpkg + 3. ./bootstrap-vcpkg.bat + 4. ./vcpkg integrate install + 5. ./vcpkg install oniguruma + +The oniguruma port in vcpkg is kept up to date by microsoft team members and community contributors. +If the version is out of date, please [create an issue or pull request](https://github.com/Microsoft/vcpkg) on the vcpkg repository. + +Regular Expressions +------------------- + + See [doc/RE](doc/RE) or [doc/RE.ja](doc/RE.ja) for Japanese. + + +Usage +----- + + Include oniguruma.h in your program. (Oniguruma API) + See doc/API for Oniguruma API. + + If you want to disable UChar type (== unsigned char) definition + in oniguruma.h, define ONIG_ESCAPE_UCHAR_COLLISION and then + include oniguruma.h. + + If you want to disable regex_t type definition in oniguruma.h, + define ONIG_ESCAPE_REGEX_T_COLLISION and then include oniguruma.h. + + Example of the compiling/linking command line in Unix or Cygwin, + (prefix == /usr/local case) + + cc sample.c -L/usr/local/lib -lonig + + + If you want to use static link library(onig_s.lib) in Win32, + add option -DONIG_EXTERN=extern to C compiler. + + + +Sample Programs +--------------- + +|File |Description | +|:---------------------|:-----------------------------------------| +|sample/callout.c |example of callouts | +|sample/count.c |example of built-in callout *COUNT | +|sample/echo.c |example of user defined callouts of name | +|sample/encode.c |example of some encodings | +|sample/listcap.c |example of the capture history | +|sample/names.c |example of the named group callback | +|sample/posix.c |POSIX API sample | +|sample/regset.c |example of using RegSet API | +|sample/scan.c |example of using onig_scan() | +|sample/simple.c |example of the minimum (Oniguruma API) | +|sample/sql.c |example of the variable meta characters | +|sample/user_property.c|example of user defined Unicode property | + + +Test Programs + +|File |Description | +|:------------------|:--------------------------------------| +|sample/syntax.c |Perl, Java and ASIS syntax test. | +|sample/crnl.c |--enable-crnl-as-line-terminator test | + + + +Source Files +------------ + +|File |Description | +|:------------------|:-------------------------------------------------------| +|oniguruma.h |Oniguruma API header file (public) | +|onig-config.in |configuration check program template | +|regenc.h |character encodings framework header file | +|regint.h |internal definitions | +|regparse.h |internal definitions for regparse.c and regcomp.c | +|regcomp.c |compiling and optimization functions | +|regenc.c |character encodings framework | +|regerror.c |error message function | +|regext.c |extended API functions (deluxe version API) | +|regexec.c |search and match functions | +|regparse.c |parsing functions. | +|regsyntax.c |pattern syntax functions and built-in syntax definitions| +|regtrav.c |capture history tree data traverse functions | +|regversion.c |version info function | +|st.h |hash table functions header file | +|st.c |hash table functions | +|oniggnu.h |GNU regex API header file (public) | +|reggnu.c |GNU regex API functions | +|onigposix.h |POSIX API header file (public) | +|regposerr.c |POSIX error message function | +|regposix.c |POSIX API functions | +|mktable.c |character type table generator | +|ascii.c |ASCII encoding | +|euc_jp.c |EUC-JP encoding | +|euc_tw.c |EUC-TW encoding | +|euc_kr.c |EUC-KR, EUC-CN encoding | +|sjis.c |Shift_JIS encoding | +|big5.c |Big5 encoding | +|gb18030.c |GB18030 encoding | +|koi8.c |KOI8 encoding | +|koi8_r.c |KOI8-R encoding | +|cp1251.c |CP1251 encoding | +|iso8859_1.c |ISO-8859-1 (Latin-1) | +|iso8859_2.c |ISO-8859-2 (Latin-2) | +|iso8859_3.c |ISO-8859-3 (Latin-3) | +|iso8859_4.c |ISO-8859-4 (Latin-4) | +|iso8859_5.c |ISO-8859-5 (Cyrillic) | +|iso8859_6.c |ISO-8859-6 (Arabic) | +|iso8859_7.c |ISO-8859-7 (Greek) | +|iso8859_8.c |ISO-8859-8 (Hebrew) | +|iso8859_9.c |ISO-8859-9 (Latin-5 or Turkish) | +|iso8859_10.c |ISO-8859-10 (Latin-6 or Nordic) | +|iso8859_11.c |ISO-8859-11 (Thai) | +|iso8859_13.c |ISO-8859-13 (Latin-7 or Baltic Rim) | +|iso8859_14.c |ISO-8859-14 (Latin-8 or Celtic) | +|iso8859_15.c |ISO-8859-15 (Latin-9 or West European with Euro) | +|iso8859_16.c |ISO-8859-16 (Latin-10) | +|utf8.c |UTF-8 encoding | +|utf16_be.c |UTF-16BE encoding | +|utf16_le.c |UTF-16LE encoding | +|utf32_be.c |UTF-32BE encoding | +|utf32_le.c |UTF-32LE encoding | +|unicode.c |common codes of Unicode encoding | +|unicode_fold_data.c|Unicode folding data | +|windows/testc.c |Test program for Windows (VC++) | diff --git a/vendor/oniguruma/oniguruma/README_japanese b/vendor/oniguruma/oniguruma/README_japanese new file mode 100644 index 0000000..b1b249a --- /dev/null +++ b/vendor/oniguruma/oniguruma/README_japanese @@ -0,0 +1,183 @@ +README.ja 2017/08/25 + +鬯シ霆 ---- (C) K.Kosako + +https://github.com/kkos/oniguruma + +鬯シ霆翫ッ豁」隕剰。ィ迴セ繝ゥ繧、繝悶Λ繝ェ縺ァ縺ゅk縲 +縺薙ョ繝ゥ繧、繝悶Λ繝ェ縺ョ迚ケ髟キ縺ッ縲√◎繧後◇繧後ョ豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝医#縺ィ縺ォ +譁蟄励お繝ウ繧ウ繝シ繝繧」繝ウ繧ー繧呈欠螳壹〒縺阪k縺薙→縺ァ縺ゅk縲 + +繧オ繝昴シ繝医@縺ヲ縺繧区枚蟄励お繝ウ繧ウ繝シ繝繧」繝ウ繧ー: + + ASCII, UTF-8, UTF-16BE, UTF-16LE, UTF-32BE, UTF-32LE, + EUC-JP, EUC-TW, EUC-KR, EUC-CN, + Shift_JIS, Big5, GB18030, KOI8-R, CP1251, + ISO-8859-1, ISO-8859-2, ISO-8859-3, ISO-8859-4, ISO-8859-5, + ISO-8859-6, ISO-8859-7, ISO-8859-8, ISO-8859-9, ISO-8859-10, + ISO-8859-11, ISO-8859-13, ISO-8859-14, ISO-8859-15, ISO-8859-16 + +* GB18030: 荵菫晏▼豢区ー乗署萓 +* CP1251: Byte豌乗署萓 +------------------------------------------------------------ + +繝ゥ繧、繧サ繝ウ繧ケ + + BSD繝ゥ繧、繧サ繝ウ繧ケ + + +繧、繝ウ繧ケ繝医シ繝ォ + + 繧ア繝シ繧ケシ: Unix縺ィCygwin迺ー蠅 + + 1. autoreconf -vfi (* configure繧ケ繧ッ繝ェ繝励ヨ縺後↑縺縺ィ縺阪□縺) + + 2. ./configure + 3. make + 4. make install + + 繧「繝ウ繧、繝ウ繧ケ繝医シ繝ォ + + make uninstall + + 讒区千「コ隱 + + onig-config --cflags + onig-config --libs + onig-config --prefix + onig-config --exec-prefix + + + + 繧ア繝シ繧ケシ: Windows 64/32bit (Visual Studio)迺ー蠅 + + make_win64 縺ゅk縺縺ッ make_win32 繧貞ョ溯。 + + onig_s.lib: static link library + onig.dll: dynamic link library + + * 蜍穂ス懊ユ繧ケ繝 (ASCII/Shift_JIS) + 1. cd src + 2. copy ..\windows\testc.c . + 3. nmake -f Makefile.windows ctest + + (Visual Studio Community 2015 縺ァ蜍穂ス懃「コ隱) + + + +豁」隕剰。ィ迴セ + + doc/RE.ja繧貞盾辣ァ + + +菴ソ逕ィ譁ケ豕 + + 菴ソ逕ィ縺吶k繝励Ο繧ー繝ゥ繝縺ァ縲{niguruma.h繧偵う繝ウ繧ッ繝ォ繝シ繝峨☆繧(Oniguruma API縺ョ蝣エ蜷)縲 + Oniguruma API縺ォ縺、縺縺ヲ縺ッ縲‥oc/API.ja繧貞盾辣ァ縲 + + oniguruma.h縺ァ螳夂セゥ縺輔l縺ヲ縺繧句梛蜷攻Char(== unsigned char)繧堤┌蜉ケ縺ォ縺励◆縺蝣エ蜷 + 縺ォ縺ッ縲^NIG_ESCAPE_UCHAR_COLLISION繧壇efine縺励※縺九ioniguruma.h繧偵う繝ウ繧ッ繝ォ繝シ繝 + 縺吶k縺薙→縲ゅ%縺ョ縺ィ縺阪↓縺ッUChar縺ッ螳夂セゥ縺輔l縺壹^nigUChar縺ィ縺縺蜷榊燕縺ョ螳夂セゥ縺ョ縺ソ縺 + 譛牙柑縺ォ縺ェ繧九 + + oniguruma.h縺ァ螳夂セゥ縺輔l縺ヲ縺繧句梛蜷荒egex_t繧堤┌蜉ケ縺ォ縺励◆縺蝣エ蜷医↓縺ッ縲 + ONIG_ESCAPE_REGEX_T_COLLISION繧壇efine縺励※縺九ioniguruma.h繧偵う繝ウ繧ッ繝ォ繝シ繝 + 縺吶k縺薙→縲ゅ%縺ョ縺ィ縺阪↓縺ッregex_t縺ッ螳夂セゥ縺輔l縺壹^nigRegexType, OnigRegex縺ィ縺縺 + 蜷榊燕縺ョ螳夂セゥ縺ョ縺ソ縺梧怏蜉ケ縺ォ縺ェ繧九 + + Unix/Cygwin荳翫〒繧ウ繝ウ繝代う繝ォ縲√Μ繝ウ繧ッ縺吶k蝣エ蜷医ョ萓具シ + (prefix縺/usr/local縺ョ縺ィ縺) + cc sample.c -L/usr/local/lib -lonig + + GNU libtool繧剃スソ逕ィ縺励※縺繧九ョ縺ァ縲√励Λ繝繝医ヵ繧ゥ繝シ繝縺悟ア譛峨Λ繧、繝悶Λ繝ェ繧偵し繝昴シ繝医@縺ヲ + 縺繧後ー縲∽スソ逕ィ縺ァ縺阪k繧医≧縺ォ縺ェ縺」縺ヲ縺繧九 + 髱咏噪繝ゥ繧、繝悶Λ繝ェ縺ィ蜈ア譛峨Λ繧、繝悶Λ繝ェ縺ョ縺ゥ縺。繧峨r菴ソ逕ィ縺吶k縺九r謖螳壹☆繧区婿豕輔∝ョ溯。梧凾轤ケ縺ァ縺ョ + 迺ー蠅險ュ螳壽婿豕輔↓縺、縺縺ヲ縺ッ縲∬ェ蛻縺ァ隱ソ縺ケ縺ヲ荳九&縺縲 + + + Win32縺ァ繧ケ繧ソ繝繧」繝繧ッ繝ェ繝ウ繧ッ繝ゥ繧、繝悶Λ繝ェ(onig_s.lib)繧偵Μ繝ウ繧ッ縺吶k蝣エ蜷医↓縺ッ縲 + 繧ウ繝ウ繝代う繝ォ縺吶k縺ィ縺阪↓ -DONIG_EXTERN=extern 繧偵さ繝ウ繝代う繝ォ蠑墓焚縺ォ霑ス蜉縺吶k縺薙→縲 + + +菴ソ逕ィ萓九励Ο繧ー繝ゥ繝 + + sample/simple.c 譛蟆丈セ (Oniguruma API) + sample/names.c 蜷榊燕莉倥″繧ー繝ォ繝シ繝励さ繝シ繝ォ繝舌ャ繧ッ菴ソ逕ィ萓 + sample/encode.c 蟷セ縺、縺九ョ譁蟄励お繝ウ繧ウ繝シ繝繧」繝ウ繧ー菴ソ逕ィ萓 + sample/listcap.c 謐慕佐螻・豁エ讖溯ス縺ョ菴ソ逕ィ萓 + sample/posix.c POSIX API菴ソ逕ィ萓 + sample/sql.c 蜿ッ螟峨Γ繧ソ譁蟄玲ゥ溯ス菴ソ逕ィ萓 (SQL-like 繝代ち繝シ繝ウ) + sample/user_property.c 繝ヲ繝シ繧カ螳夂セゥUnicode繝励Ο繝代ユ繧」縺ョ菴ソ逕ィ萓 + + +繝繧ケ繝医励Ο繧ー繝ゥ繝 + sample/syntax.c Perl縲゛ava縲、SIS譁豕輔ョ繝繧ケ繝 + sample/crnl.c --enable-crnl-as-line-terminator 繝繧ケ繝 + + +繧ス繝シ繧ケ繝輔ぃ繧、繝ォ + + oniguruma.h 鬯シ霆晦PI繝倥ャ繝 (蜈ャ髢) + onig-config.in onig-config繝励Ο繧ー繝ゥ繝 繝繝ウ繝励Ξ繝シ繝 + + regenc.h 譁蟄励お繝ウ繧ウ繝シ繝繧」繝ウ繧ー譫邨縺ソ繝倥ャ繝 + regint.h 蜀驛ィ螳」險 + regparse.h regparse.c縺ィregcomp.c縺ョ縺溘a縺ョ蜀驛ィ螳」險 + regcomp.c 繧ウ繝ウ繝代う繝ォ縲∵怙驕ゥ蛹夜未謨ー + regenc.c 譁蟄励お繝ウ繧ウ繝シ繝繧」繝ウ繧ー譫邨縺ソ + regerror.c 繧ィ繝ゥ繝シ繝。繝繧サ繝シ繧ク髢「謨ー + regext.c 諡。蠑オAPI髢「謨ー + regexec.c 讀懃エ「縲∫ァ蜷磯未謨ー + regparse.c 豁」隕剰。ィ迴セ繝代ち繝シ繝ウ隗」譫宣未謨ー + regsyntax.c 豁」隕剰。ィ迴セ繝代ち繝シ繝ウ譁豕暮未謨ー縲∫オ霎シ縺ソ譁豕募ョ夂セゥ + regtrav.c 謐慕佐螻・豁エ譛ィ蟾。蝗樣未謨ー + regversion.c 迚域ュ蝣ア髢「謨ー + st.h 繝上ャ繧キ繝・繝繝シ繝悶Ν髢「謨ー螳」險 + st.c 繝上ャ繧キ繝・繝繝シ繝悶Ν髢「謨ー + + oniggnu.h GNU regex API繝倥ャ繝 (蜈ャ髢) + reggnu.c GNU regex API髢「謨ー + + onigposix.h POSIX API繝倥ャ繝 (蜈ャ髢) + regposerr.c POSIX API繧ィ繝ゥ繝シ繝。繝繧サ繝シ繧ク髢「謨ー + regposix.c POSIX API髢「謨ー + + mktable.c 譁蟄励ち繧、繝励ユ繝シ繝悶Ν逕滓舌励Ο繧ー繝ゥ繝 + ascii.c ASCII 繧ィ繝ウ繧ウ繝シ繝繧」繝ウ繧ー + euc_jp.c EUC-JP 繧ィ繝ウ繧ウ繝シ繝繧」繝ウ繧ー + euc_tw.c EUC-TW 繧ィ繝ウ繧ウ繝シ繝繧」繝ウ繧ー + euc_kr.c EUC-KR, EUC-CN 繧ィ繝ウ繧ウ繝シ繝繧」繝ウ繧ー + sjis.c Shift_JIS 繧ィ繝ウ繧ウ繝シ繝繧」繝ウ繧ー + big5.c Big5 繧ィ繝ウ繧ウ繝シ繝繧」繝ウ繧ー + gb18030.c GB18030 繧ィ繝ウ繧ウ繝シ繝繧」繝ウ繧ー + koi8.c KOI8 繧ィ繝ウ繧ウ繝シ繝繧」繝ウ繧ー + koi8_r.c KOI8-R 繧ィ繝ウ繧ウ繝シ繝繧」繝ウ繧ー + cp1251.c CP1251 繧ィ繝ウ繧ウ繝シ繝繧」繝ウ繧ー + iso8859_1.c ISO-8859-1 (Latin-1) + iso8859_2.c ISO-8859-2 (Latin-2) + iso8859_3.c ISO-8859-3 (Latin-3) + iso8859_4.c ISO-8859-4 (Latin-4) + iso8859_5.c ISO-8859-5 (Cyrillic) + iso8859_6.c ISO-8859-6 (Arabic) + iso8859_7.c ISO-8859-7 (Greek) + iso8859_8.c ISO-8859-8 (Hebrew) + iso8859_9.c ISO-8859-9 (Latin-5 縺セ縺溘ッ Turkish) + iso8859_10.c ISO-8859-10 (Latin-6 縺セ縺溘ッ Nordic) + iso8859_11.c ISO-8859-11 (Thai) + iso8859_13.c ISO-8859-13 (Latin-7 縺セ縺溘ッ Baltic Rim) + iso8859_14.c ISO-8859-14 (Latin-8 縺セ縺溘ッ Celtic) + iso8859_15.c ISO-8859-15 (Latin-9 縺セ縺溘ッ West European with Euro) + iso8859_16.c ISO-8859-16 + (Latin-10 縺セ縺溘ッ South-Eastern European with Euro) + utf8.c UTF-8 繧ィ繝ウ繧ウ繝シ繝繧」繝ウ繧ー + utf16_be.c UTF-16BE 繧ィ繝ウ繧ウ繝シ繝繧」繝ウ繧ー + utf16_le.c UTF-16LE 繧ィ繝ウ繧ウ繝シ繝繧」繝ウ繧ー + utf32_be.c UTF-32BE 繧ィ繝ウ繧ウ繝シ繝繧」繝ウ繧ー + utf32_le.c UTF-32LE 繧ィ繝ウ繧ウ繝シ繝繧」繝ウ繧ー + unicode.c Unicode繧ィ繝ウ繧ウ繝シ繝繧」繝ウ繧ー縺ョ蜈ア騾壼ヲ逅 + + win32/Makefile Win32逕ィ Makefile (for VC++) + win32/config.h Win32逕ィ config.h + + +and I'm thankful to Akinori MUSHA. diff --git a/vendor/oniguruma/oniguruma/autogen.sh b/vendor/oniguruma/oniguruma/autogen.sh new file mode 100755 index 0000000..006fd36 --- /dev/null +++ b/vendor/oniguruma/oniguruma/autogen.sh @@ -0,0 +1,9 @@ +#!/bin/sh +# autogen.sh for Oniguruma + +echo "Generating autotools files." +#autoreconf --install --force --symlink || exit 1 +autoreconf --install --force || exit 1 + +echo "" +echo "Run ./configure, make, and make install." diff --git a/vendor/oniguruma/oniguruma/cmake/Config.cmake.in b/vendor/oniguruma/oniguruma/cmake/Config.cmake.in new file mode 100644 index 0000000..38bbde7 --- /dev/null +++ b/vendor/oniguruma/oniguruma/cmake/Config.cmake.in @@ -0,0 +1,4 @@ +@PACKAGE_INIT@ + +include("${CMAKE_CURRENT_LIST_DIR}/@TARGETS_EXPORT_NAME@.cmake") +check_required_components("@PROJECT_NAME@") diff --git a/vendor/onig/compile b/vendor/oniguruma/oniguruma/compile similarity index 93% rename from vendor/onig/compile rename to vendor/oniguruma/oniguruma/compile index 862a14e..23fcba0 100755 --- a/vendor/onig/compile +++ b/vendor/oniguruma/oniguruma/compile @@ -1,10 +1,9 @@ #! /bin/sh # Wrapper for compilers which do not understand '-c -o'. -scriptversion=2012-03-05.13; # UTC +scriptversion=2018-03-07.03; # UTC -# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2009, 2010, 2012 Free -# Software Foundation, Inc. +# Copyright (C) 1999-2020 Free Software Foundation, Inc. # Written by Tom Tromey . # # This program is free software; you can redistribute it and/or modify @@ -18,7 +17,7 @@ scriptversion=2012-03-05.13; # UTC # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program. If not, see . +# along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a @@ -54,7 +53,7 @@ func_file_conv () MINGW*) file_conv=mingw ;; - CYGWIN*) + CYGWIN* | MSYS*) file_conv=cygwin ;; *) @@ -68,7 +67,7 @@ func_file_conv () mingw/*) file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` ;; - cygwin/*) + cygwin/* | msys/*) file=`cygpath -m "$file" || echo "$file"` ;; wine/*) @@ -113,6 +112,11 @@ func_cl_dashl () lib=$dir/$lib.lib break fi + if test -f "$dir/lib$lib.a"; then + found=yes + lib=$dir/lib$lib.a + break + fi done IFS=$save_IFS @@ -251,7 +255,8 @@ EOF echo "compile $scriptversion" exit $? ;; - cl | *[/\\]cl | cl.exe | *[/\\]cl.exe ) + cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \ + icl | *[/\\]icl | icl.exe | *[/\\]icl.exe ) func_cl_wrapper "$@" # Doesn't return... ;; esac @@ -335,9 +340,9 @@ exit $ret # Local Variables: # mode: shell-script # sh-indentation: 2 -# eval: (add-hook 'write-file-hooks 'time-stamp) +# eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" +# time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: diff --git a/vendor/onig/config.guess b/vendor/oniguruma/oniguruma/config.guess similarity index 59% rename from vendor/onig/config.guess rename to vendor/oniguruma/oniguruma/config.guess index bf5ad89..9aff91c 100755 --- a/vendor/onig/config.guess +++ b/vendor/oniguruma/oniguruma/config.guess @@ -1,8 +1,8 @@ #! /bin/sh # Attempt to guess a canonical system name. -# Copyright 1992-2016 Free Software Foundation, Inc. +# Copyright 1992-2020 Free Software Foundation, Inc. -timestamp='2016-09-11' +timestamp='2020-08-17' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -15,7 +15,7 @@ timestamp='2016-09-11' # General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, see . +# along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a @@ -27,7 +27,7 @@ timestamp='2016-09-11' # Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess +# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess # # Please send patches to . @@ -39,7 +39,7 @@ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. -Operation modes: +Options: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit @@ -50,7 +50,7 @@ version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright 1992-2016 Free Software Foundation, Inc. +Copyright 1992-2020 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -84,8 +84,6 @@ if test $# != 0; then exit 1 fi -trap 'exit 1' 1 2 15 - # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a @@ -96,34 +94,40 @@ trap 'exit 1' 1 2 15 # Portable tmp directory creation inspired by the Autoconf team. -set_cc_for_build=' -trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; -trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; -: ${TMPDIR=/tmp} ; - { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || - { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || - { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || - { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; -dummy=$tmp/dummy ; -tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; -case $CC_FOR_BUILD,$HOST_CC,$CC in - ,,) echo "int x;" > $dummy.c ; - for c in cc gcc c89 c99 ; do - if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then - CC_FOR_BUILD="$c"; break ; - fi ; - done ; - if test x"$CC_FOR_BUILD" = x ; then - CC_FOR_BUILD=no_compiler_found ; - fi - ;; - ,,*) CC_FOR_BUILD=$CC ;; - ,*,*) CC_FOR_BUILD=$HOST_CC ;; -esac ; set_cc_for_build= ;' +tmp= +# shellcheck disable=SC2172 +trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15 + +set_cc_for_build() { + # prevent multiple calls if $tmp is already set + test "$tmp" && return 0 + : "${TMPDIR=/tmp}" + # shellcheck disable=SC2039 + { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } + dummy=$tmp/dummy + case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in + ,,) echo "int x;" > "$dummy.c" + for driver in cc gcc c89 c99 ; do + if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then + CC_FOR_BUILD="$driver" + break + fi + done + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; + esac +} # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) -if (test -f /.attbin/uname) >/dev/null 2>&1 ; then +if test -f /.attbin/uname ; then PATH=$PATH:/.attbin ; export PATH fi @@ -132,14 +136,14 @@ UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown -case "${UNAME_SYSTEM}" in +case "$UNAME_SYSTEM" in Linux|GNU|GNU/*) # If the system lacks a compiler, then just pick glibc. # We could probably try harder. LIBC=gnu - eval $set_cc_for_build - cat <<-EOF > $dummy.c + set_cc_for_build + cat <<-EOF > "$dummy.c" #include #if defined(__UCLIBC__) LIBC=uclibc @@ -149,13 +153,20 @@ Linux|GNU|GNU/*) LIBC=gnu #endif EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` + eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`" + + # If ldd exists, use it to detect musl libc. + if command -v ldd >/dev/null && \ + ldd --version 2>&1 | grep -q ^musl + then + LIBC=musl + fi ;; esac # Note: order is significant - the case branches are not exclusive. -case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in +case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, @@ -169,30 +180,30 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ - /sbin/$sysctl 2>/dev/null || \ - /usr/sbin/$sysctl 2>/dev/null || \ + "/sbin/$sysctl" 2>/dev/null || \ + "/usr/sbin/$sysctl" 2>/dev/null || \ echo unknown)` - case "${UNAME_MACHINE_ARCH}" in + case "$UNAME_MACHINE_ARCH" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; earmv*) - arch=`echo ${UNAME_MACHINE_ARCH} | sed -e 's,^e\(armv[0-9]\).*$,\1,'` - endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne 's,^.*\(eb\)$,\1,p'` - machine=${arch}${endian}-unknown + arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'` + endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'` + machine="${arch}${endian}"-unknown ;; - *) machine=${UNAME_MACHINE_ARCH}-unknown ;; + *) machine="$UNAME_MACHINE_ARCH"-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently (or will in the future) and ABI. - case "${UNAME_MACHINE_ARCH}" in + case "$UNAME_MACHINE_ARCH" in earm*) os=netbsdelf ;; arm*|i386|m68k|ns32k|sh3*|sparc|vax) - eval $set_cc_for_build + set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then @@ -208,10 +219,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in ;; esac # Determine ABI tags. - case "${UNAME_MACHINE_ARCH}" in + case "$UNAME_MACHINE_ARCH" in earm*) expr='s/^earmv[0-9]/-eabi/;s/eb$//' - abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"` + abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"` ;; esac # The OS release @@ -219,45 +230,60 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. - case "${UNAME_VERSION}" in + case "$UNAME_VERSION" in Debian*) release='-gnu' ;; *) - release=`echo ${UNAME_RELEASE} | sed -e 's/[-_].*//' | cut -d. -f1,2` + release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. - echo "${machine}-${os}${release}${abi}" + echo "$machine-${os}${release}${abi-}" exit ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` - echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} + echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE" exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` - echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} + echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE" exit ;; *:LibertyBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` - echo ${UNAME_MACHINE_ARCH}-unknown-libertybsd${UNAME_RELEASE} + echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE" + exit ;; + *:MidnightBSD:*:*) + echo "$UNAME_MACHINE"-unknown-midnightbsd"$UNAME_RELEASE" exit ;; *:ekkoBSD:*:*) - echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} + echo "$UNAME_MACHINE"-unknown-ekkobsd"$UNAME_RELEASE" exit ;; *:SolidBSD:*:*) - echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} + echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE" + exit ;; + *:OS108:*:*) + echo "$UNAME_MACHINE"-unknown-os108_"$UNAME_RELEASE" exit ;; macppc:MirBSD:*:*) - echo powerpc-unknown-mirbsd${UNAME_RELEASE} + echo powerpc-unknown-mirbsd"$UNAME_RELEASE" exit ;; *:MirBSD:*:*) - echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} + echo "$UNAME_MACHINE"-unknown-mirbsd"$UNAME_RELEASE" exit ;; *:Sortix:*:*) - echo ${UNAME_MACHINE}-unknown-sortix + echo "$UNAME_MACHINE"-unknown-sortix + exit ;; + *:Twizzler:*:*) + echo "$UNAME_MACHINE"-unknown-twizzler + exit ;; + *:Redox:*:*) + echo "$UNAME_MACHINE"-unknown-redox + exit ;; + mips:OSF1:*.*) + echo mips-dec-osf1 exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in @@ -310,28 +336,19 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. - echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` + echo "$UNAME_MACHINE"-dec-osf"`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`" # Reset EXIT trap before exiting to avoid spurious non-zero exit code. exitcode=$? trap '' 0 exit $exitcode ;; - Alpha\ *:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # Should we change UNAME_MACHINE based on the output of uname instead - # of the specific Alpha model? - echo alpha-pc-interix - exit ;; - 21064:Windows_NT:50:3) - echo alpha-dec-winnt3.5 - exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-amigaos + echo "$UNAME_MACHINE"-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-morphos + echo "$UNAME_MACHINE"-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition @@ -343,7 +360,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) - echo arm-acorn-riscix${UNAME_RELEASE} + echo arm-acorn-riscix"$UNAME_RELEASE" exit ;; arm*:riscos:*:*|arm*:RISCOS:*:*) echo arm-unknown-riscos @@ -370,24 +387,24 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in sparc) echo sparc-icl-nx7; exit ;; esac ;; s390x:SunOS:*:*) - echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + echo "$UNAME_MACHINE"-ibm-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" exit ;; sun4H:SunOS:5.*:*) - echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + echo sparc-hal-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) - echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + echo sparc-sun-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" exit ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) - echo i386-pc-auroraux${UNAME_RELEASE} + echo i386-pc-auroraux"$UNAME_RELEASE" exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) - eval $set_cc_for_build + set_cc_for_build SUN_ARCH=i386 # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. - if [ "$CC_FOR_BUILD" != no_compiler_found ]; then + if test "$CC_FOR_BUILD" != no_compiler_found; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null @@ -395,13 +412,13 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in SUN_ARCH=x86_64 fi fi - echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + echo "$SUN_ARCH"-pc-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. - echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + echo sparc-sun-solaris3"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in @@ -410,25 +427,25 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. - echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + echo sparc-sun-sunos"`echo "$UNAME_RELEASE"|sed -e 's/-/_/'`" exit ;; sun3*:SunOS:*:*) - echo m68k-sun-sunos${UNAME_RELEASE} + echo m68k-sun-sunos"$UNAME_RELEASE" exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` - test "x${UNAME_RELEASE}" = x && UNAME_RELEASE=3 + test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) - echo m68k-sun-sunos${UNAME_RELEASE} + echo m68k-sun-sunos"$UNAME_RELEASE" ;; sun4) - echo sparc-sun-sunos${UNAME_RELEASE} + echo sparc-sun-sunos"$UNAME_RELEASE" ;; esac exit ;; aushp:SunOS:*:*) - echo sparc-auspex-sunos${UNAME_RELEASE} + echo sparc-auspex-sunos"$UNAME_RELEASE" exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not @@ -439,44 +456,44 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} + echo m68k-atari-mint"$UNAME_RELEASE" exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} + echo m68k-atari-mint"$UNAME_RELEASE" exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} + echo m68k-atari-mint"$UNAME_RELEASE" exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) - echo m68k-milan-mint${UNAME_RELEASE} + echo m68k-milan-mint"$UNAME_RELEASE" exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) - echo m68k-hades-mint${UNAME_RELEASE} + echo m68k-hades-mint"$UNAME_RELEASE" exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) - echo m68k-unknown-mint${UNAME_RELEASE} + echo m68k-unknown-mint"$UNAME_RELEASE" exit ;; m68k:machten:*:*) - echo m68k-apple-machten${UNAME_RELEASE} + echo m68k-apple-machten"$UNAME_RELEASE" exit ;; powerpc:machten:*:*) - echo powerpc-apple-machten${UNAME_RELEASE} + echo powerpc-apple-machten"$UNAME_RELEASE" exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) - echo mips-dec-ultrix${UNAME_RELEASE} + echo mips-dec-ultrix"$UNAME_RELEASE" exit ;; VAX*:ULTRIX*:*:*) - echo vax-dec-ultrix${UNAME_RELEASE} + echo vax-dec-ultrix"$UNAME_RELEASE" exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) - echo clipper-intergraph-clix${UNAME_RELEASE} + echo clipper-intergraph-clix"$UNAME_RELEASE" exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { @@ -485,23 +502,23 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) - printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) - printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) - printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF - $CC_FOR_BUILD -o $dummy $dummy.c && - dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && - SYSTEM_NAME=`$dummy $dummyarg` && + $CC_FOR_BUILD -o "$dummy" "$dummy.c" && + dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`"$dummy" "$dummyarg"` && { echo "$SYSTEM_NAME"; exit; } - echo mips-mips-riscos${UNAME_RELEASE} + echo mips-mips-riscos"$UNAME_RELEASE" exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax @@ -527,17 +544,17 @@ EOF AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` - if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] + if test "$UNAME_PROCESSOR" = mc88100 || test "$UNAME_PROCESSOR" = mc88110 then - if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ - [ ${TARGET_BINARY_INTERFACE}x = x ] + if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \ + test "$TARGET_BINARY_INTERFACE"x = x then - echo m88k-dg-dgux${UNAME_RELEASE} + echo m88k-dg-dgux"$UNAME_RELEASE" else - echo m88k-dg-dguxbcs${UNAME_RELEASE} + echo m88k-dg-dguxbcs"$UNAME_RELEASE" fi else - echo i586-dg-dgux${UNAME_RELEASE} + echo i586-dg-dgux"$UNAME_RELEASE" fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) @@ -554,7 +571,7 @@ EOF echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) - echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + echo mips-sgi-irix"`echo "$UNAME_RELEASE"|sed -e 's/-/_/g'`" exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id @@ -563,17 +580,17 @@ EOF echo i386-ibm-aix exit ;; ia64:AIX:*:*) - if [ -x /usr/bin/oslevel ] ; then + if test -x /usr/bin/oslevel ; then IBM_REV=`/usr/bin/oslevel` else - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" fi - echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} + echo "$UNAME_MACHINE"-ibm-aix"$IBM_REV" exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" #include main() @@ -584,7 +601,7 @@ EOF exit(0); } EOF - if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` + if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` then echo "$SYSTEM_NAME" else @@ -598,27 +615,27 @@ EOF exit ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` - if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then + if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi - if [ -x /usr/bin/lslpp ] ; then + if test -x /usr/bin/lslpp ; then IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` else - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" fi - echo ${IBM_ARCH}-ibm-aix${IBM_REV} + echo "$IBM_ARCH"-ibm-aix"$IBM_REV" exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; - ibmrt:4.4BSD:*|romp-ibm:BSD:*) + ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and - echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + echo romp-ibm-bsd"$UNAME_RELEASE" # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx @@ -633,28 +650,28 @@ EOF echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - case "${UNAME_MACHINE}" in - 9000/31? ) HP_ARCH=m68000 ;; - 9000/[34]?? ) HP_ARCH=m68k ;; + HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'` + case "$UNAME_MACHINE" in + 9000/31?) HP_ARCH=m68000 ;; + 9000/[34]??) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) - if [ -x /usr/bin/getconf ]; then + if test -x /usr/bin/getconf; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` - case "${sc_cpu_version}" in + case "$sc_cpu_version" in 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 - case "${sc_kernel_bits}" in + case "$sc_kernel_bits" in 32) HP_ARCH=hppa2.0n ;; 64) HP_ARCH=hppa2.0w ;; '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 esac ;; esac fi - if [ "${HP_ARCH}" = "" ]; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c + if test "$HP_ARCH" = ""; then + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" #define _HPUX_SOURCE #include @@ -687,13 +704,13 @@ EOF exit (0); } EOF - (CCOPTS="" $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac - if [ ${HP_ARCH} = hppa2.0w ] + if test "$HP_ARCH" = hppa2.0w then - eval $set_cc_for_build + set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler @@ -712,15 +729,15 @@ EOF HP_ARCH=hppa64 fi fi - echo ${HP_ARCH}-hp-hpux${HPUX_REV} + echo "$HP_ARCH"-hp-hpux"$HPUX_REV" exit ;; ia64:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - echo ia64-hp-hpux${HPUX_REV} + HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux"$HPUX_REV" exit ;; 3050*:HI-UX:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" #include int main () @@ -745,11 +762,11 @@ EOF exit (0); } EOF - $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && + $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; - 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) @@ -758,17 +775,17 @@ EOF *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; - hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) - if [ -x /usr/sbin/sysversion ] ; then - echo ${UNAME_MACHINE}-unknown-osf1mk + if test -x /usr/sbin/sysversion ; then + echo "$UNAME_MACHINE"-unknown-osf1mk else - echo ${UNAME_MACHINE}-unknown-osf1 + echo "$UNAME_MACHINE"-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) @@ -793,130 +810,123 @@ EOF echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) - echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + echo ymp-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) - echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) - echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + echo t90-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) - echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + echo alphaev5-cray-unicosmk"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) - echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + echo sv1-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) - echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + echo craynv-cray-unicosmp"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` + FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) - echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + echo "$UNAME_MACHINE"-pc-bsdi"$UNAME_RELEASE" exit ;; sparc*:BSD/OS:*:*) - echo sparc-unknown-bsdi${UNAME_RELEASE} + echo sparc-unknown-bsdi"$UNAME_RELEASE" exit ;; *:BSD/OS:*:*) - echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE" + exit ;; + arm:FreeBSD:*:*) + UNAME_PROCESSOR=`uname -p` + set_cc_for_build + if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_PCS_VFP + then + echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabi + else + echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabihf + fi exit ;; *:FreeBSD:*:*) UNAME_PROCESSOR=`/usr/bin/uname -p` - case ${UNAME_PROCESSOR} in + case "$UNAME_PROCESSOR" in amd64) - echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; - *) - echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + UNAME_PROCESSOR=x86_64 ;; + i386) + UNAME_PROCESSOR=i586 ;; esac + echo "$UNAME_PROCESSOR"-unknown-freebsd"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`" exit ;; i*:CYGWIN*:*) - echo ${UNAME_MACHINE}-pc-cygwin + echo "$UNAME_MACHINE"-pc-cygwin exit ;; *:MINGW64*:*) - echo ${UNAME_MACHINE}-pc-mingw64 + echo "$UNAME_MACHINE"-pc-mingw64 exit ;; *:MINGW*:*) - echo ${UNAME_MACHINE}-pc-mingw32 + echo "$UNAME_MACHINE"-pc-mingw32 exit ;; *:MSYS*:*) - echo ${UNAME_MACHINE}-pc-msys - exit ;; - i*:windows32*:*) - # uname -m includes "-pc" on this system. - echo ${UNAME_MACHINE}-mingw32 + echo "$UNAME_MACHINE"-pc-msys exit ;; i*:PW*:*) - echo ${UNAME_MACHINE}-pc-pw32 + echo "$UNAME_MACHINE"-pc-pw32 exit ;; *:Interix*:*) - case ${UNAME_MACHINE} in + case "$UNAME_MACHINE" in x86) - echo i586-pc-interix${UNAME_RELEASE} + echo i586-pc-interix"$UNAME_RELEASE" exit ;; authenticamd | genuineintel | EM64T) - echo x86_64-unknown-interix${UNAME_RELEASE} + echo x86_64-unknown-interix"$UNAME_RELEASE" exit ;; IA64) - echo ia64-unknown-interix${UNAME_RELEASE} + echo ia64-unknown-interix"$UNAME_RELEASE" exit ;; esac ;; - [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) - echo i${UNAME_MACHINE}-pc-mks - exit ;; - 8664:Windows_NT:*) - echo x86_64-pc-mks - exit ;; - i*:Windows_NT*:* | Pentium*:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we - # UNAME_MACHINE based on the output of uname instead of i386? - echo i586-pc-interix - exit ;; i*:UWIN*:*) - echo ${UNAME_MACHINE}-pc-uwin + echo "$UNAME_MACHINE"-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) - echo x86_64-unknown-cygwin - exit ;; - p*:CYGWIN*:*) - echo powerpcle-unknown-cygwin + echo x86_64-pc-cygwin exit ;; prep*:SunOS:5.*:*) - echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + echo powerpcle-unknown-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" exit ;; *:GNU:*:*) # the GNU system - echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + echo "`echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,'`-unknown-$LIBC`echo "$UNAME_RELEASE"|sed -e 's,/.*$,,'`" exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland - echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} + echo "$UNAME_MACHINE-unknown-`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`-$LIBC" exit ;; - i*86:Minix:*:*) - echo ${UNAME_MACHINE}-pc-minix + *:Minix:*:*) + echo "$UNAME_MACHINE"-unknown-minix exit ;; aarch64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; alpha:Linux:*:*) - case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; @@ -927,137 +937,178 @@ EOF esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC=gnulibc1 ; fi - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; arc:Linux:*:* | arceb:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; arm*:Linux:*:*) - eval $set_cc_for_build + set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then - echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabi else - echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabihf fi fi exit ;; avr32*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; cris:Linux:*:*) - echo ${UNAME_MACHINE}-axis-linux-${LIBC} + echo "$UNAME_MACHINE"-axis-linux-"$LIBC" exit ;; crisv32:Linux:*:*) - echo ${UNAME_MACHINE}-axis-linux-${LIBC} + echo "$UNAME_MACHINE"-axis-linux-"$LIBC" exit ;; e2k:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; frv:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; hexagon:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; i*86:Linux:*:*) - echo ${UNAME_MACHINE}-pc-linux-${LIBC} + echo "$UNAME_MACHINE"-pc-linux-"$LIBC" exit ;; ia64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; k1om:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; m32r*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; m68*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; mips:Linux:*:* | mips64:Linux:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c + set_cc_for_build + IS_GLIBC=0 + test x"${LIBC}" = xgnu && IS_GLIBC=1 + sed 's/^ //' << EOF > "$dummy.c" #undef CPU - #undef ${UNAME_MACHINE} - #undef ${UNAME_MACHINE}el + #undef mips + #undef mipsel + #undef mips64 + #undef mips64el + #if ${IS_GLIBC} && defined(_ABI64) + LIBCABI=gnuabi64 + #else + #if ${IS_GLIBC} && defined(_ABIN32) + LIBCABI=gnuabin32 + #else + LIBCABI=${LIBC} + #endif + #endif + + #if ${IS_GLIBC} && defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 + CPU=mipsisa64r6 + #else + #if ${IS_GLIBC} && !defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 + CPU=mipsisa32r6 + #else + #if defined(__mips64) + CPU=mips64 + #else + CPU=mips + #endif + #endif + #endif + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) - CPU=${UNAME_MACHINE}el + MIPS_ENDIAN=el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) - CPU=${UNAME_MACHINE} + MIPS_ENDIAN= #else - CPU= + MIPS_ENDIAN= #endif #endif EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` - test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } + eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'`" + test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; } ;; + mips64el:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; openrisc*:Linux:*:*) - echo or1k-unknown-linux-${LIBC} + echo or1k-unknown-linux-"$LIBC" exit ;; or32:Linux:*:* | or1k*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; padre:Linux:*:*) - echo sparc-unknown-linux-${LIBC} + echo sparc-unknown-linux-"$LIBC" exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) - echo hppa64-unknown-linux-${LIBC} + echo hppa64-unknown-linux-"$LIBC" exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in - PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; - PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; - *) echo hppa-unknown-linux-${LIBC} ;; + PA7*) echo hppa1.1-unknown-linux-"$LIBC" ;; + PA8*) echo hppa2.0-unknown-linux-"$LIBC" ;; + *) echo hppa-unknown-linux-"$LIBC" ;; esac exit ;; ppc64:Linux:*:*) - echo powerpc64-unknown-linux-${LIBC} + echo powerpc64-unknown-linux-"$LIBC" exit ;; ppc:Linux:*:*) - echo powerpc-unknown-linux-${LIBC} + echo powerpc-unknown-linux-"$LIBC" exit ;; ppc64le:Linux:*:*) - echo powerpc64le-unknown-linux-${LIBC} + echo powerpc64le-unknown-linux-"$LIBC" exit ;; ppcle:Linux:*:*) - echo powerpcle-unknown-linux-${LIBC} + echo powerpcle-unknown-linux-"$LIBC" exit ;; riscv32:Linux:*:* | riscv64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; s390:Linux:*:* | s390x:Linux:*:*) - echo ${UNAME_MACHINE}-ibm-linux-${LIBC} + echo "$UNAME_MACHINE"-ibm-linux-"$LIBC" exit ;; sh64*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; sh*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; tile*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; vax:Linux:*:*) - echo ${UNAME_MACHINE}-dec-linux-${LIBC} + echo "$UNAME_MACHINE"-dec-linux-"$LIBC" exit ;; x86_64:Linux:*:*) - echo ${UNAME_MACHINE}-pc-linux-${LIBC} + set_cc_for_build + LIBCABI=$LIBC + if test "$CC_FOR_BUILD" != no_compiler_found; then + if (echo '#ifdef __ILP32__'; echo IS_X32; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_X32 >/dev/null + then + LIBCABI="$LIBC"x32 + fi + fi + echo "$UNAME_MACHINE"-pc-linux-"$LIBCABI" exit ;; xtensa*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. @@ -1071,34 +1122,34 @@ EOF # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. - echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} + echo "$UNAME_MACHINE"-pc-sysv4.2uw"$UNAME_VERSION" exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. - echo ${UNAME_MACHINE}-pc-os2-emx + echo "$UNAME_MACHINE"-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) - echo ${UNAME_MACHINE}-unknown-stop + echo "$UNAME_MACHINE"-unknown-stop exit ;; i*86:atheos:*:*) - echo ${UNAME_MACHINE}-unknown-atheos + echo "$UNAME_MACHINE"-unknown-atheos exit ;; i*86:syllable:*:*) - echo ${UNAME_MACHINE}-pc-syllable + echo "$UNAME_MACHINE"-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) - echo i386-unknown-lynxos${UNAME_RELEASE} + echo i386-unknown-lynxos"$UNAME_RELEASE" exit ;; i*86:*DOS:*:*) - echo ${UNAME_MACHINE}-pc-msdosdjgpp + echo "$UNAME_MACHINE"-pc-msdosdjgpp exit ;; - i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) - UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` + i*86:*:4.*:*) + UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then - echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} + echo "$UNAME_MACHINE"-univel-sysv"$UNAME_REL" else - echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + echo "$UNAME_MACHINE"-pc-sysv"$UNAME_REL" fi exit ;; i*86:*:5:[678]*) @@ -1108,12 +1159,12 @@ EOF *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac - echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}" exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 @@ -1123,9 +1174,9 @@ EOF && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 - echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + echo "$UNAME_MACHINE"-pc-sco"$UNAME_REL" else - echo ${UNAME_MACHINE}-pc-sysv32 + echo "$UNAME_MACHINE"-pc-sysv32 fi exit ;; pc:*:*:*) @@ -1145,9 +1196,9 @@ EOF exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then - echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + echo i860-stardent-sysv"$UNAME_RELEASE" # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. - echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + echo i860-unknown-sysv"$UNAME_RELEASE" # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) @@ -1167,9 +1218,9 @@ EOF test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; @@ -1178,28 +1229,28 @@ EOF test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) - echo m68k-unknown-lynxos${UNAME_RELEASE} + echo m68k-unknown-lynxos"$UNAME_RELEASE" exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) - echo sparc-unknown-lynxos${UNAME_RELEASE} + echo sparc-unknown-lynxos"$UNAME_RELEASE" exit ;; rs6000:LynxOS:2.*:*) - echo rs6000-unknown-lynxos${UNAME_RELEASE} + echo rs6000-unknown-lynxos"$UNAME_RELEASE" exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) - echo powerpc-unknown-lynxos${UNAME_RELEASE} + echo powerpc-unknown-lynxos"$UNAME_RELEASE" exit ;; SM[BE]S:UNIX_SV:*:*) - echo mips-dde-sysv${UNAME_RELEASE} + echo mips-dde-sysv"$UNAME_RELEASE" exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 @@ -1210,7 +1261,7 @@ EOF *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` - echo ${UNAME_MACHINE}-sni-sysv4 + echo "$UNAME_MACHINE"-sni-sysv4 else echo ns32k-sni-sysv fi @@ -1230,23 +1281,23 @@ EOF exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. - echo ${UNAME_MACHINE}-stratus-vos + echo "$UNAME_MACHINE"-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) - echo m68k-apple-aux${UNAME_RELEASE} + echo m68k-apple-aux"$UNAME_RELEASE" exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) - if [ -d /usr/nec ]; then - echo mips-nec-sysv${UNAME_RELEASE} + if test -d /usr/nec; then + echo mips-nec-sysv"$UNAME_RELEASE" else - echo mips-unknown-sysv${UNAME_RELEASE} + echo mips-unknown-sysv"$UNAME_RELEASE" fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. @@ -1265,60 +1316,71 @@ EOF echo x86_64-unknown-haiku exit ;; SX-4:SUPER-UX:*:*) - echo sx4-nec-superux${UNAME_RELEASE} + echo sx4-nec-superux"$UNAME_RELEASE" exit ;; SX-5:SUPER-UX:*:*) - echo sx5-nec-superux${UNAME_RELEASE} + echo sx5-nec-superux"$UNAME_RELEASE" exit ;; SX-6:SUPER-UX:*:*) - echo sx6-nec-superux${UNAME_RELEASE} + echo sx6-nec-superux"$UNAME_RELEASE" exit ;; SX-7:SUPER-UX:*:*) - echo sx7-nec-superux${UNAME_RELEASE} + echo sx7-nec-superux"$UNAME_RELEASE" exit ;; SX-8:SUPER-UX:*:*) - echo sx8-nec-superux${UNAME_RELEASE} + echo sx8-nec-superux"$UNAME_RELEASE" exit ;; SX-8R:SUPER-UX:*:*) - echo sx8r-nec-superux${UNAME_RELEASE} + echo sx8r-nec-superux"$UNAME_RELEASE" exit ;; SX-ACE:SUPER-UX:*:*) - echo sxace-nec-superux${UNAME_RELEASE} + echo sxace-nec-superux"$UNAME_RELEASE" exit ;; Power*:Rhapsody:*:*) - echo powerpc-apple-rhapsody${UNAME_RELEASE} + echo powerpc-apple-rhapsody"$UNAME_RELEASE" exit ;; *:Rhapsody:*:*) - echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE" + exit ;; + arm64:Darwin:*:*) + echo aarch64-apple-darwin"$UNAME_RELEASE" exit ;; *:Darwin:*:*) - UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown - eval $set_cc_for_build - if test "$UNAME_PROCESSOR" = unknown ; then - UNAME_PROCESSOR=powerpc + UNAME_PROCESSOR=`uname -p` + case $UNAME_PROCESSOR in + unknown) UNAME_PROCESSOR=powerpc ;; + esac + if command -v xcode-select > /dev/null 2> /dev/null && \ + ! xcode-select --print-path > /dev/null 2> /dev/null ; then + # Avoid executing cc if there is no toolchain installed as + # cc will be a stub that puts up a graphical alert + # prompting the user to install developer tools. + CC_FOR_BUILD=no_compiler_found + else + set_cc_for_build fi - if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then - if [ "$CC_FOR_BUILD" != no_compiler_found ]; then - if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_64BIT_ARCH >/dev/null - then - case $UNAME_PROCESSOR in - i386) UNAME_PROCESSOR=x86_64 ;; - powerpc) UNAME_PROCESSOR=powerpc64 ;; - esac - fi + if test "$CC_FOR_BUILD" != no_compiler_found; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + case $UNAME_PROCESSOR in + i386) UNAME_PROCESSOR=x86_64 ;; + powerpc) UNAME_PROCESSOR=powerpc64 ;; + esac + fi + # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc + if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_PPC >/dev/null + then + UNAME_PROCESSOR=powerpc fi elif test "$UNAME_PROCESSOR" = i386 ; then - # Avoid executing cc on OS X 10.9, as it ships with a stub - # that puts up a graphical alert prompting to install - # developer tools. Any system running Mac OS X 10.7 or - # later (Darwin 11 and later) is required to have a 64-bit - # processor. This is not true of the ARM version of Darwin - # that Apple uses in portable devices. - UNAME_PROCESSOR=x86_64 + # uname -m returns i386 or x86_64 + UNAME_PROCESSOR=$UNAME_MACHINE fi - echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} + echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE" exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` @@ -1326,19 +1388,25 @@ EOF UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi - echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} + echo "$UNAME_PROCESSOR"-"$UNAME_MACHINE"-nto-qnx"$UNAME_RELEASE" exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; - NEO-?:NONSTOP_KERNEL:*:*) - echo neo-tandem-nsk${UNAME_RELEASE} + NEO-*:NONSTOP_KERNEL:*:*) + echo neo-tandem-nsk"$UNAME_RELEASE" exit ;; NSE-*:NONSTOP_KERNEL:*:*) - echo nse-tandem-nsk${UNAME_RELEASE} + echo nse-tandem-nsk"$UNAME_RELEASE" + exit ;; + NSR-*:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk"$UNAME_RELEASE" + exit ;; + NSV-*:NONSTOP_KERNEL:*:*) + echo nsv-tandem-nsk"$UNAME_RELEASE" exit ;; - NSR-?:NONSTOP_KERNEL:*:*) - echo nsr-tandem-nsk${UNAME_RELEASE} + NSX-*:NONSTOP_KERNEL:*:*) + echo nsx-tandem-nsk"$UNAME_RELEASE" exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux @@ -1347,18 +1415,19 @@ EOF echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) - echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + echo "$UNAME_MACHINE"-"$UNAME_SYSTEM"-"$UNAME_RELEASE" exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. + # shellcheck disable=SC2154 if test "$cputype" = 386; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi - echo ${UNAME_MACHINE}-unknown-plan9 + echo "$UNAME_MACHINE"-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 @@ -1379,14 +1448,14 @@ EOF echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) - echo mips-sei-seiux${UNAME_RELEASE} + echo mips-sei-seiux"$UNAME_RELEASE" exit ;; *:DragonFly:*:*) - echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + echo "$UNAME_MACHINE"-unknown-dragonfly"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`" exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` - case "${UNAME_MACHINE}" in + case "$UNAME_MACHINE" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; @@ -1395,32 +1464,190 @@ EOF echo i386-pc-xenix exit ;; i*86:skyos:*:*) - echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE} | sed -e 's/ .*$//'` + echo "$UNAME_MACHINE"-pc-skyos"`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'`" exit ;; i*86:rdos:*:*) - echo ${UNAME_MACHINE}-pc-rdos + echo "$UNAME_MACHINE"-pc-rdos exit ;; i*86:AROS:*:*) - echo ${UNAME_MACHINE}-pc-aros + echo "$UNAME_MACHINE"-pc-aros exit ;; x86_64:VMkernel:*:*) - echo ${UNAME_MACHINE}-unknown-esx + echo "$UNAME_MACHINE"-unknown-esx exit ;; amd64:Isilon\ OneFS:*:*) echo x86_64-unknown-onefs exit ;; + *:Unleashed:*:*) + echo "$UNAME_MACHINE"-unknown-unleashed"$UNAME_RELEASE" + exit ;; +esac + +# No uname command or uname output not recognized. +set_cc_for_build +cat > "$dummy.c" < +#include +#endif +#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) +#if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) +#include +#if defined(_SIZE_T_) || defined(SIGLOST) +#include +#endif +#endif +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); +#endif + +#if defined (vax) +#if !defined (ultrix) +#include +#if defined (BSD) +#if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +#else +#if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +#else + printf ("vax-dec-bsd\n"); exit (0); +#endif +#endif +#else + printf ("vax-dec-bsd\n"); exit (0); +#endif +#else +#if defined(_SIZE_T_) || defined(SIGLOST) + struct utsname un; + uname (&un); + printf ("vax-dec-ultrix%s\n", un.release); exit (0); +#else + printf ("vax-dec-ultrix\n"); exit (0); +#endif +#endif +#endif +#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) +#if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) +#if defined(_SIZE_T_) || defined(SIGLOST) + struct utsname *un; + uname (&un); + printf ("mips-dec-ultrix%s\n", un.release); exit (0); +#else + printf ("mips-dec-ultrix\n"); exit (0); +#endif +#endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + +# Apollos put the system type in the environment. +test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; } + +echo "$0: unable to guess system type" >&2 + +case "$UNAME_MACHINE:$UNAME_SYSTEM" in + mips:Linux | mips64:Linux) + # If we got here on MIPS GNU/Linux, output extra information. + cat >&2 <&2 <&2 </dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` -UNAME_MACHINE = ${UNAME_MACHINE} -UNAME_RELEASE = ${UNAME_RELEASE} -UNAME_SYSTEM = ${UNAME_SYSTEM} -UNAME_VERSION = ${UNAME_VERSION} +UNAME_MACHINE = "$UNAME_MACHINE" +UNAME_RELEASE = "$UNAME_RELEASE" +UNAME_SYSTEM = "$UNAME_SYSTEM" +UNAME_VERSION = "$UNAME_VERSION" EOF +fi exit 1 # Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) +# eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" diff --git a/vendor/oniguruma/oniguruma/config.sub b/vendor/oniguruma/oniguruma/config.sub new file mode 100755 index 0000000..0753e30 --- /dev/null +++ b/vendor/oniguruma/oniguruma/config.sub @@ -0,0 +1,1851 @@ +#! /bin/sh +# Configuration validation subroutine script. +# Copyright 1992-2020 Free Software Foundation, Inc. + +timestamp='2020-08-17' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, see . +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that +# program. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). + + +# Please send patches to . +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# You can get the latest version of this script from: +# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS + +Canonicalize a configuration name. + +Options: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.sub ($timestamp) + +Copyright 1992-2020 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo "$1" + exit ;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Split fields of configuration type +# shellcheck disable=SC2162 +IFS="-" read field1 field2 field3 field4 <&2 + exit 1 + ;; + *-*-*-*) + basic_machine=$field1-$field2 + basic_os=$field3-$field4 + ;; + *-*-*) + # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two + # parts + maybe_os=$field2-$field3 + case $maybe_os in + nto-qnx* | linux-* | uclinux-uclibc* \ + | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ + | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ + | storm-chaos* | os2-emx* | rtmk-nova*) + basic_machine=$field1 + basic_os=$maybe_os + ;; + android-linux) + basic_machine=$field1-unknown + basic_os=linux-android + ;; + *) + basic_machine=$field1-$field2 + basic_os=$field3 + ;; + esac + ;; + *-*) + # A lone config we happen to match not fitting any pattern + case $field1-$field2 in + decstation-3100) + basic_machine=mips-dec + basic_os= + ;; + *-*) + # Second component is usually, but not always the OS + case $field2 in + # Prevent following clause from handling this valid os + sun*os*) + basic_machine=$field1 + basic_os=$field2 + ;; + # Manufacturers + dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ + | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ + | unicom* | ibm* | next | hp | isi* | apollo | altos* \ + | convergent* | ncr* | news | 32* | 3600* | 3100* \ + | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ + | ultra | tti* | harris | dolphin | highlevel | gould \ + | cbm | ns | masscomp | apple | axis | knuth | cray \ + | microblaze* | sim | cisco \ + | oki | wec | wrs | winbond) + basic_machine=$field1-$field2 + basic_os= + ;; + *) + basic_machine=$field1 + basic_os=$field2 + ;; + esac + ;; + esac + ;; + *) + # Convert single-component short-hands not valid as part of + # multi-component configurations. + case $field1 in + 386bsd) + basic_machine=i386-pc + basic_os=bsd + ;; + a29khif) + basic_machine=a29k-amd + basic_os=udi + ;; + adobe68k) + basic_machine=m68010-adobe + basic_os=scout + ;; + alliant) + basic_machine=fx80-alliant + basic_os= + ;; + altos | altos3068) + basic_machine=m68k-altos + basic_os= + ;; + am29k) + basic_machine=a29k-none + basic_os=bsd + ;; + amdahl) + basic_machine=580-amdahl + basic_os=sysv + ;; + amiga) + basic_machine=m68k-unknown + basic_os= + ;; + amigaos | amigados) + basic_machine=m68k-unknown + basic_os=amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + basic_os=sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + basic_os=sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + basic_os=bsd + ;; + aros) + basic_machine=i386-pc + basic_os=aros + ;; + aux) + basic_machine=m68k-apple + basic_os=aux + ;; + balance) + basic_machine=ns32k-sequent + basic_os=dynix + ;; + blackfin) + basic_machine=bfin-unknown + basic_os=linux + ;; + cegcc) + basic_machine=arm-unknown + basic_os=cegcc + ;; + convex-c1) + basic_machine=c1-convex + basic_os=bsd + ;; + convex-c2) + basic_machine=c2-convex + basic_os=bsd + ;; + convex-c32) + basic_machine=c32-convex + basic_os=bsd + ;; + convex-c34) + basic_machine=c34-convex + basic_os=bsd + ;; + convex-c38) + basic_machine=c38-convex + basic_os=bsd + ;; + cray) + basic_machine=j90-cray + basic_os=unicos + ;; + crds | unos) + basic_machine=m68k-crds + basic_os= + ;; + da30) + basic_machine=m68k-da30 + basic_os= + ;; + decstation | pmax | pmin | dec3100 | decstatn) + basic_machine=mips-dec + basic_os= + ;; + delta88) + basic_machine=m88k-motorola + basic_os=sysv3 + ;; + dicos) + basic_machine=i686-pc + basic_os=dicos + ;; + djgpp) + basic_machine=i586-pc + basic_os=msdosdjgpp + ;; + ebmon29k) + basic_machine=a29k-amd + basic_os=ebmon + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + basic_os=ose + ;; + gmicro) + basic_machine=tron-gmicro + basic_os=sysv + ;; + go32) + basic_machine=i386-pc + basic_os=go32 + ;; + h8300hms) + basic_machine=h8300-hitachi + basic_os=hms + ;; + h8300xray) + basic_machine=h8300-hitachi + basic_os=xray + ;; + h8500hms) + basic_machine=h8500-hitachi + basic_os=hms + ;; + harris) + basic_machine=m88k-harris + basic_os=sysv3 + ;; + hp300 | hp300hpux) + basic_machine=m68k-hp + basic_os=hpux + ;; + hp300bsd) + basic_machine=m68k-hp + basic_os=bsd + ;; + hppaosf) + basic_machine=hppa1.1-hp + basic_os=osf + ;; + hppro) + basic_machine=hppa1.1-hp + basic_os=proelf + ;; + i386mach) + basic_machine=i386-mach + basic_os=mach + ;; + isi68 | isi) + basic_machine=m68k-isi + basic_os=sysv + ;; + m68knommu) + basic_machine=m68k-unknown + basic_os=linux + ;; + magnum | m3230) + basic_machine=mips-mips + basic_os=sysv + ;; + merlin) + basic_machine=ns32k-utek + basic_os=sysv + ;; + mingw64) + basic_machine=x86_64-pc + basic_os=mingw64 + ;; + mingw32) + basic_machine=i686-pc + basic_os=mingw32 + ;; + mingw32ce) + basic_machine=arm-unknown + basic_os=mingw32ce + ;; + monitor) + basic_machine=m68k-rom68k + basic_os=coff + ;; + morphos) + basic_machine=powerpc-unknown + basic_os=morphos + ;; + moxiebox) + basic_machine=moxie-unknown + basic_os=moxiebox + ;; + msdos) + basic_machine=i386-pc + basic_os=msdos + ;; + msys) + basic_machine=i686-pc + basic_os=msys + ;; + mvs) + basic_machine=i370-ibm + basic_os=mvs + ;; + nacl) + basic_machine=le32-unknown + basic_os=nacl + ;; + ncr3000) + basic_machine=i486-ncr + basic_os=sysv4 + ;; + netbsd386) + basic_machine=i386-pc + basic_os=netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + basic_os=linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + basic_os=newsos + ;; + news1000) + basic_machine=m68030-sony + basic_os=newsos + ;; + necv70) + basic_machine=v70-nec + basic_os=sysv + ;; + nh3000) + basic_machine=m68k-harris + basic_os=cxux + ;; + nh[45]000) + basic_machine=m88k-harris + basic_os=cxux + ;; + nindy960) + basic_machine=i960-intel + basic_os=nindy + ;; + mon960) + basic_machine=i960-intel + basic_os=mon960 + ;; + nonstopux) + basic_machine=mips-compaq + basic_os=nonstopux + ;; + os400) + basic_machine=powerpc-ibm + basic_os=os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + basic_os=ose + ;; + os68k) + basic_machine=m68k-none + basic_os=os68k + ;; + paragon) + basic_machine=i860-intel + basic_os=osf + ;; + parisc) + basic_machine=hppa-unknown + basic_os=linux + ;; + psp) + basic_machine=mipsallegrexel-sony + basic_os=psp + ;; + pw32) + basic_machine=i586-unknown + basic_os=pw32 + ;; + rdos | rdos64) + basic_machine=x86_64-pc + basic_os=rdos + ;; + rdos32) + basic_machine=i386-pc + basic_os=rdos + ;; + rom68k) + basic_machine=m68k-rom68k + basic_os=coff + ;; + sa29200) + basic_machine=a29k-amd + basic_os=udi + ;; + sei) + basic_machine=mips-sei + basic_os=seiux + ;; + sequent) + basic_machine=i386-sequent + basic_os= + ;; + sps7) + basic_machine=m68k-bull + basic_os=sysv2 + ;; + st2000) + basic_machine=m68k-tandem + basic_os= + ;; + stratus) + basic_machine=i860-stratus + basic_os=sysv4 + ;; + sun2) + basic_machine=m68000-sun + basic_os= + ;; + sun2os3) + basic_machine=m68000-sun + basic_os=sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + basic_os=sunos4 + ;; + sun3) + basic_machine=m68k-sun + basic_os= + ;; + sun3os3) + basic_machine=m68k-sun + basic_os=sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + basic_os=sunos4 + ;; + sun4) + basic_machine=sparc-sun + basic_os= + ;; + sun4os3) + basic_machine=sparc-sun + basic_os=sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + basic_os=sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + basic_os=solaris2 + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + basic_os= + ;; + sv1) + basic_machine=sv1-cray + basic_os=unicos + ;; + symmetry) + basic_machine=i386-sequent + basic_os=dynix + ;; + t3e) + basic_machine=alphaev5-cray + basic_os=unicos + ;; + t90) + basic_machine=t90-cray + basic_os=unicos + ;; + toad1) + basic_machine=pdp10-xkl + basic_os=tops20 + ;; + tpf) + basic_machine=s390x-ibm + basic_os=tpf + ;; + udi29k) + basic_machine=a29k-amd + basic_os=udi + ;; + ultra3) + basic_machine=a29k-nyu + basic_os=sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + basic_os=none + ;; + vaxv) + basic_machine=vax-dec + basic_os=sysv + ;; + vms) + basic_machine=vax-dec + basic_os=vms + ;; + vsta) + basic_machine=i386-pc + basic_os=vsta + ;; + vxworks960) + basic_machine=i960-wrs + basic_os=vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + basic_os=vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + basic_os=vxworks + ;; + xbox) + basic_machine=i686-pc + basic_os=mingw32 + ;; + ymp) + basic_machine=ymp-cray + basic_os=unicos + ;; + *) + basic_machine=$1 + basic_os= + ;; + esac + ;; +esac + +# Decode 1-component or ad-hoc basic machines +case $basic_machine in + # Here we handle the default manufacturer of certain CPU types. It is in + # some cases the only manufacturer, in others, it is the most popular. + w89k) + cpu=hppa1.1 + vendor=winbond + ;; + op50n) + cpu=hppa1.1 + vendor=oki + ;; + op60c) + cpu=hppa1.1 + vendor=oki + ;; + ibm*) + cpu=i370 + vendor=ibm + ;; + orion105) + cpu=clipper + vendor=highlevel + ;; + mac | mpw | mac-mpw) + cpu=m68k + vendor=apple + ;; + pmac | pmac-mpw) + cpu=powerpc + vendor=apple + ;; + + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + cpu=m68000 + vendor=att + ;; + 3b*) + cpu=we32k + vendor=att + ;; + bluegene*) + cpu=powerpc + vendor=ibm + basic_os=cnk + ;; + decsystem10* | dec10*) + cpu=pdp10 + vendor=dec + basic_os=tops10 + ;; + decsystem20* | dec20*) + cpu=pdp10 + vendor=dec + basic_os=tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + cpu=m68k + vendor=motorola + ;; + dpx2*) + cpu=m68k + vendor=bull + basic_os=sysv3 + ;; + encore | umax | mmax) + cpu=ns32k + vendor=encore + ;; + elxsi) + cpu=elxsi + vendor=elxsi + basic_os=${basic_os:-bsd} + ;; + fx2800) + cpu=i860 + vendor=alliant + ;; + genix) + cpu=ns32k + vendor=ns + ;; + h3050r* | hiux*) + cpu=hppa1.1 + vendor=hitachi + basic_os=hiuxwe2 + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + cpu=hppa1.0 + vendor=hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + cpu=m68000 + vendor=hp + ;; + hp9k3[2-9][0-9]) + cpu=m68k + vendor=hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + cpu=hppa1.0 + vendor=hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + cpu=hppa1.1 + vendor=hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + cpu=hppa1.1 + vendor=hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + cpu=hppa1.1 + vendor=hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + cpu=hppa1.1 + vendor=hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + cpu=hppa1.0 + vendor=hp + ;; + i*86v32) + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + basic_os=sysv32 + ;; + i*86v4*) + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + basic_os=sysv4 + ;; + i*86v) + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + basic_os=sysv + ;; + i*86sol2) + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + basic_os=solaris2 + ;; + j90 | j90-cray) + cpu=j90 + vendor=cray + basic_os=${basic_os:-unicos} + ;; + iris | iris4d) + cpu=mips + vendor=sgi + case $basic_os in + irix*) + ;; + *) + basic_os=irix4 + ;; + esac + ;; + miniframe) + cpu=m68000 + vendor=convergent + ;; + *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) + cpu=m68k + vendor=atari + basic_os=mint + ;; + news-3600 | risc-news) + cpu=mips + vendor=sony + basic_os=newsos + ;; + next | m*-next) + cpu=m68k + vendor=next + case $basic_os in + openstep*) + ;; + nextstep*) + ;; + ns2*) + basic_os=nextstep2 + ;; + *) + basic_os=nextstep3 + ;; + esac + ;; + np1) + cpu=np1 + vendor=gould + ;; + op50n-* | op60c-*) + cpu=hppa1.1 + vendor=oki + basic_os=proelf + ;; + pa-hitachi) + cpu=hppa1.1 + vendor=hitachi + basic_os=hiuxwe2 + ;; + pbd) + cpu=sparc + vendor=tti + ;; + pbb) + cpu=m68k + vendor=tti + ;; + pc532) + cpu=ns32k + vendor=pc532 + ;; + pn) + cpu=pn + vendor=gould + ;; + power) + cpu=power + vendor=ibm + ;; + ps2) + cpu=i386 + vendor=ibm + ;; + rm[46]00) + cpu=mips + vendor=siemens + ;; + rtpc | rtpc-*) + cpu=romp + vendor=ibm + ;; + sde) + cpu=mipsisa32 + vendor=sde + basic_os=${basic_os:-elf} + ;; + simso-wrs) + cpu=sparclite + vendor=wrs + basic_os=vxworks + ;; + tower | tower-32) + cpu=m68k + vendor=ncr + ;; + vpp*|vx|vx-*) + cpu=f301 + vendor=fujitsu + ;; + w65) + cpu=w65 + vendor=wdc + ;; + w89k-*) + cpu=hppa1.1 + vendor=winbond + basic_os=proelf + ;; + none) + cpu=none + vendor=none + ;; + leon|leon[3-9]) + cpu=sparc + vendor=$basic_machine + ;; + leon-*|leon[3-9]-*) + cpu=sparc + vendor=`echo "$basic_machine" | sed 's/-.*//'` + ;; + + *-*) + # shellcheck disable=SC2162 + IFS="-" read cpu vendor <&2 + exit 1 + ;; + esac + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $vendor in + digital*) + vendor=dec + ;; + commodore*) + vendor=cbm + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if test x$basic_os != x +then + +# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just +# set os. +case $basic_os in + gnu/linux*) + kernel=linux + os=`echo $basic_os | sed -e 's|gnu/linux|gnu|'` + ;; + nto-qnx*) + kernel=nto + os=`echo $basic_os | sed -e 's|nto-qnx|qnx|'` + ;; + *-*) + # shellcheck disable=SC2162 + IFS="-" read kernel os <&2 + exit 1 + ;; +esac + +# As a final step for OS-related things, validate the OS-kernel combination +# (given a valid OS), if there is a kernel. +case $kernel-$os in + linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* | linux-musl* | linux-uclibc* ) + ;; + -dietlibc* | -newlib* | -musl* | -uclibc* ) + # These are just libc implementations, not actual OSes, and thus + # require a kernel. + echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 + exit 1 + ;; + kfreebsd*-gnu* | kopensolaris*-gnu*) + ;; + nto-qnx*) + ;; + *-eabi* | *-gnueabi*) + ;; + -*) + # Blank kernel with real OS is always fine. + ;; + *-*) + echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 + exit 1 + ;; +esac + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +case $vendor in + unknown) + case $cpu-$os in + *-riscix*) + vendor=acorn + ;; + *-sunos*) + vendor=sun + ;; + *-cnk* | *-aix*) + vendor=ibm + ;; + *-beos*) + vendor=be + ;; + *-hpux*) + vendor=hp + ;; + *-mpeix*) + vendor=hp + ;; + *-hiux*) + vendor=hitachi + ;; + *-unos*) + vendor=crds + ;; + *-dgux*) + vendor=dg + ;; + *-luna*) + vendor=omron + ;; + *-genix*) + vendor=ns + ;; + *-clix*) + vendor=intergraph + ;; + *-mvs* | *-opened*) + vendor=ibm + ;; + *-os400*) + vendor=ibm + ;; + s390-* | s390x-*) + vendor=ibm + ;; + *-ptx*) + vendor=sequent + ;; + *-tpf*) + vendor=ibm + ;; + *-vxsim* | *-vxworks* | *-windiss*) + vendor=wrs + ;; + *-aux*) + vendor=apple + ;; + *-hms*) + vendor=hitachi + ;; + *-mpw* | *-macos*) + vendor=apple + ;; + *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) + vendor=atari + ;; + *-vos*) + vendor=stratus + ;; + esac + ;; +esac + +echo "$cpu-$vendor-${kernel:+$kernel-}$os" +exit + +# Local variables: +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/vendor/oniguruma/oniguruma/configure.ac b/vendor/oniguruma/oniguruma/configure.ac new file mode 100644 index 0000000..55c9ea2 --- /dev/null +++ b/vendor/oniguruma/oniguruma/configure.ac @@ -0,0 +1,98 @@ +dnl Process this file with autoconf to produce a configure script. +AC_INIT(onig, 6.9.10) + +AC_CONFIG_MACRO_DIR([m4]) + +AM_INIT_AUTOMAKE([-Wno-portability]) +AC_CONFIG_HEADERS([src/config.h]) + + +AC_ARG_WITH([statistics], + [AS_HELP_STRING([--with-statistics], + [take matching time statistical data])], + AS_VAR_APPEND([CFLAGS], [" -DONIG_DEBUG_STATISTICS"])) + + +dnl check for POSIX API +AC_ARG_ENABLE([posix-api], + [AS_HELP_STRING([--enable-posix-api], + [turn on to include POSIX API [default=no]])], +[\ +case "${enableval}" in + yes) enable_posix_api=yes ;; + no) enable_posix_api=no ;; + *) AC_MSG_ERROR(bad value for --enable-posix-api) ;; +esac], +enable_posix_api=no) + +dnl check for Binary compatible POSIX API +AC_ARG_ENABLE([binary-compatible-posix-api], + [AS_HELP_STRING([--enable-binary-compatible-posix-api], + [turn on to Binary compatible POSIX API [default=no]])], +[\ +case "${enableval}" in + yes) enable_binary_compatible_posix_api=yes; enable_posix_api=yes ;; + no) enable_binary_compatible_posix_api=no ;; + *) AC_MSG_ERROR(bad value for --enable-binary-compatible-posix-api) ;; +esac], +enable_binary_compatible_posix_api=no) + +AM_CONDITIONAL(ENABLE_BINARY_COMPATIBLE_POSIX_API, test x"${enable_binary_compatible_posix_api}" = xyes) +AM_CONDITIONAL(ENABLE_POSIX_API, test x"${enable_posix_api}" = xyes) + + +dnl check for CRNL_AS_LINE_TERMINATOR +AC_ARG_ENABLE([crnl-as-line-terminator], + [AS_HELP_STRING([--enable-crnl-as-line-terminator], + [deprecated])], + [crnl_as_line_terminator=$enableval]) +if test "${crnl_as_line_terminator}" = yes; then + AC_DEFINE(USE_CRNL_AS_LINE_TERMINATOR,1,[Define if enable CR+NL as line terminator]) +fi + + +dnl Checks for programs. +AC_PROG_CC +LT_INIT +LTVERSION="10:0:5" +AC_SUBST(LTVERSION) + +AC_PROG_INSTALL +AC_PROG_MAKE_SET + +dnl Checks for libraries. + +dnl Checks for header files. +AC_CHECK_HEADERS(sys/time.h unistd.h sys/times.h) + +dnl Checks for typedefs, structures, and compiler characteristics. +AC_CHECK_SIZEOF([int]) +AC_CHECK_SIZEOF([long]) +AC_CHECK_SIZEOF([long long]) +AC_CHECK_SIZEOF([void*]) + +dnl Checks for library functions. +AC_FUNC_ALLOCA + +AC_CONFIG_FILES([Makefile src/Makefile test/Makefile sample/Makefile onig-config]) +AC_CONFIG_COMMANDS([default],[chmod +x onig-config],[]) + +# for Issue #220 +LIBONIG_DEF_FILE= +FIX_TO_LDFLAGS= +case $host_os in + cygwin* | mingw* ) + if test X"$enable_shared" = Xyes; then + LIBONIG_DEF_FILE=libonig.def + FIX_TO_LDFLAGS="-no-undefined" + fi + ;; +esac + +EXTRA_LIBONIG_LDFLAGS="$EXTRA_LIBONIG_LDFLAGS $FIX_TO_LDFLAGS" +AC_SUBST(EXTRA_LIBONIG_LDFLAGS) + +AM_CONDITIONAL(USE_LIBONIG_DEF_FILE, test -n "${LIBONIG_DEF_FILE}") +AC_SUBST(LIBONIG_DEF_FILE) + +AC_OUTPUT diff --git a/vendor/onig/depcomp b/vendor/oniguruma/oniguruma/depcomp similarity index 58% rename from vendor/onig/depcomp rename to vendor/oniguruma/oniguruma/depcomp index 25a39e6..6b39162 100755 --- a/vendor/onig/depcomp +++ b/vendor/oniguruma/oniguruma/depcomp @@ -1,10 +1,9 @@ #! /bin/sh # depcomp - compile a program generating dependencies as side-effects -scriptversion=2012-03-27.16; # UTC +scriptversion=2018-03-07.03; # UTC -# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010, -# 2011, 2012 Free Software Foundation, Inc. +# Copyright (C) 1999-2020 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -17,7 +16,7 @@ scriptversion=2012-03-27.16; # UTC # GNU General Public License for more details. # You should have received a copy of the GNU General Public License -# along with this program. If not, see . +# along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a @@ -28,9 +27,9 @@ scriptversion=2012-03-27.16; # UTC case $1 in '') - echo "$0: No command. Try '$0 --help' for more information." 1>&2 - exit 1; - ;; + echo "$0: No command. Try '$0 --help' for more information." 1>&2 + exit 1; + ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] @@ -57,11 +56,65 @@ EOF ;; esac +# Get the directory component of the given path, and save it in the +# global variables '$dir'. Note that this directory component will +# be either empty or ending with a '/' character. This is deliberate. +set_dir_from () +{ + case $1 in + */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; + *) dir=;; + esac +} + +# Get the suffix-stripped basename of the given path, and save it the +# global variable '$base'. +set_base_from () +{ + base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` +} + +# If no dependency file was actually created by the compiler invocation, +# we still have to create a dummy depfile, to avoid errors with the +# Makefile "include basename.Plo" scheme. +make_dummy_depfile () +{ + echo "#dummy" > "$depfile" +} + +# Factor out some common post-processing of the generated depfile. +# Requires the auxiliary global variable '$tmpdepfile' to be set. +aix_post_process_depfile () +{ + # If the compiler actually managed to produce a dependency file, + # post-process it. + if test -f "$tmpdepfile"; then + # Each line is of the form 'foo.o: dependency.h'. + # Do two passes, one to just change these to + # $object: dependency.h + # and one to simply output + # dependency.h: + # which is needed to avoid the deleted-header problem. + { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" + sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" + } > "$depfile" + rm -f "$tmpdepfile" + else + make_dummy_depfile + fi +} + # A tabulation character. tab=' ' # A newline character. nl=' ' +# Character ranges might be problematic outside the C locale. +# These definitions help. +upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ +lower=abcdefghijklmnopqrstuvwxyz +digits=0123456789 +alpha=${upper}${lower} if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 @@ -75,6 +128,9 @@ tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" +# Avoid interferences from the environment. +gccflag= dashmflag= + # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case @@ -86,32 +142,32 @@ if test "$depmode" = hp; then fi if test "$depmode" = dashXmstdout; then - # This is just like dashmstdout with a different argument. - dashmflag=-xM - depmode=dashmstdout + # This is just like dashmstdout with a different argument. + dashmflag=-xM + depmode=dashmstdout fi cygpath_u="cygpath -u -f -" if test "$depmode" = msvcmsys; then - # This is just like msvisualcpp but w/o cygpath translation. - # Just convert the backslash-escaped backslashes to single forward - # slashes to satisfy depend.m4 - cygpath_u='sed s,\\\\,/,g' - depmode=msvisualcpp + # This is just like msvisualcpp but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u='sed s,\\\\,/,g' + depmode=msvisualcpp fi if test "$depmode" = msvc7msys; then - # This is just like msvc7 but w/o cygpath translation. - # Just convert the backslash-escaped backslashes to single forward - # slashes to satisfy depend.m4 - cygpath_u='sed s,\\\\,/,g' - depmode=msvc7 + # This is just like msvc7 but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u='sed s,\\\\,/,g' + depmode=msvc7 fi if test "$depmode" = xlc; then - # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency informations. - gccflag=-qmakedep=gcc,-MF - depmode=gcc + # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. + gccflag=-qmakedep=gcc,-MF + depmode=gcc fi case "$depmode" in @@ -134,8 +190,7 @@ gcc3) done "$@" stat=$? - if test $stat -eq 0; then : - else + if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi @@ -143,13 +198,17 @@ gcc3) ;; gcc) +## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. +## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. +## (see the conditional assignment to $gccflag above). ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like -## -MM, not -M (despite what the docs say). +## -MM, not -M (despite what the docs say). Also, it might not be +## supported by the other compilers which use the 'gcc' depmode. ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then @@ -157,15 +216,14 @@ gcc) fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? - if test $stat -eq 0; then : - else + if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" - alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz -## The second -e expression handles DOS-style file names with drive letters. + # The second -e expression handles DOS-style file names with drive + # letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the "deleted header file" problem. @@ -174,15 +232,15 @@ gcc) ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. - tr ' ' "$nl" < "$tmpdepfile" | ## Some versions of gcc put a space before the ':'. On the theory ## that the space means something, we add a space to the output as ## well. hp depmode also adds that space, but also prefixes the VPATH ## to the object. Take care to not repeat it in the output. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ - | sed -e 's/$/ :/' >> "$depfile" + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; @@ -200,8 +258,7 @@ sgi) "$@" -MDupdate "$tmpdepfile" fi stat=$? - if test $stat -eq 0; then : - else + if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi @@ -209,7 +266,6 @@ sgi) if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" - # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in @@ -217,19 +273,15 @@ sgi) # the IRIX cc adds comments like '#:fec' to the end of the # dependency line. tr ' ' "$nl" < "$tmpdepfile" \ - | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ - tr "$nl" ' ' >> "$depfile" + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ + | tr "$nl" ' ' >> "$depfile" echo >> "$depfile" - # The second pass generates a dummy entry for each header file. tr ' ' "$nl" < "$tmpdepfile" \ - | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ - >> "$depfile" + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ + >> "$depfile" else - # The sourcefile does not contain any dependencies, so just - # store a dummy comment line, to avoid errors with the Makefile - # "include basename.Plo" scheme. - echo "#dummy" > "$depfile" + make_dummy_depfile fi rm -f "$tmpdepfile" ;; @@ -247,9 +299,8 @@ aix) # current directory. Also, the AIX compiler puts '$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. - dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` - test "x$dir" = "x$object" && dir= - base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + set_dir_from "$object" + set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.u tmpdepfile2=$base.u @@ -262,9 +313,7 @@ aix) "$@" -M fi stat=$? - - if test $stat -eq 0; then : - else + if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi @@ -273,65 +322,113 @@ aix) do test -f "$tmpdepfile" && break done - if test -f "$tmpdepfile"; then - # Each line is of the form 'foo.o: dependent.h'. - # Do two passes, one to just change these to - # '$object: dependent.h' and one to simply 'dependent.h:'. - sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" - sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" - else - # The sourcefile does not contain any dependencies, so just - # store a dummy comment line, to avoid errors with the Makefile - # "include basename.Plo" scheme. - echo "#dummy" > "$depfile" + aix_post_process_depfile + ;; + +tcc) + # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 + # FIXME: That version still under development at the moment of writing. + # Make that this statement remains true also for stable, released + # versions. + # It will wrap lines (doesn't matter whether long or short) with a + # trailing '\', as in: + # + # foo.o : \ + # foo.c \ + # foo.h \ + # + # It will put a trailing '\' even on the last line, and will use leading + # spaces rather than leading tabs (at least since its commit 0394caf7 + # "Emit spaces for -MD"). + "$@" -MD -MF "$tmpdepfile" + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat fi + rm -f "$depfile" + # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. + # We have to change lines of the first kind to '$object: \'. + sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" + # And for each line of the second kind, we have to emit a 'dep.h:' + # dummy dependency, to avoid the deleted-header problem. + sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" rm -f "$tmpdepfile" ;; -icc) - # Intel's C compiler anf tcc (Tiny C Compiler) understand '-MD -MF file'. - # However on - # $CC -MD -MF foo.d -c -o sub/foo.o sub/foo.c - # ICC 7.0 will fill foo.d with something like - # foo.o: sub/foo.c - # foo.o: sub/foo.h - # which is wrong. We want - # sub/foo.o: sub/foo.c - # sub/foo.o: sub/foo.h - # sub/foo.c: - # sub/foo.h: - # ICC 7.1 will output +## The order of this option in the case statement is important, since the +## shell code in configure will try each of these formats in the order +## listed in this file. A plain '-MD' option would be understood by many +## compilers, so we must ensure this comes after the gcc and icc options. +pgcc) + # Portland's C compiler understands '-MD'. + # Will always output deps to 'file.d' where file is the root name of the + # source file under compilation, even if file resides in a subdirectory. + # The object file name does not affect the name of the '.d' file. + # pgcc 10.2 will output # foo.o: sub/foo.c sub/foo.h - # and will wrap long lines using '\': + # and will wrap long lines using '\' : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... - # tcc 0.9.26 (FIXME still under development at the moment of writing) - # will emit a similar output, but also prepend the continuation lines - # with horizontal tabulation characters. - "$@" -MD -MF "$tmpdepfile" - stat=$? - if test $stat -eq 0; then : - else + set_dir_from "$object" + # Use the source, not the object, to determine the base name, since + # that's sadly what pgcc will do too. + set_base_from "$source" + tmpdepfile=$base.d + + # For projects that build the same source file twice into different object + # files, the pgcc approach of using the *source* file root name can cause + # problems in parallel builds. Use a locking strategy to avoid stomping on + # the same $tmpdepfile. + lockdir=$base.d-lock + trap " + echo '$0: caught signal, cleaning up...' >&2 + rmdir '$lockdir' + exit 1 + " 1 2 13 15 + numtries=100 + i=$numtries + while test $i -gt 0; do + # mkdir is a portable test-and-set. + if mkdir "$lockdir" 2>/dev/null; then + # This process acquired the lock. + "$@" -MD + stat=$? + # Release the lock. + rmdir "$lockdir" + break + else + # If the lock is being held by a different process, wait + # until the winning process is done or we timeout. + while test -d "$lockdir" && test $i -gt 0; do + sleep 1 + i=`expr $i - 1` + done + fi + i=`expr $i - 1` + done + trap - 1 2 13 15 + if test $i -le 0; then + echo "$0: failed to acquire lock after $numtries attempts" >&2 + echo "$0: check lockdir '$lockdir'" >&2 + exit 1 + fi + + if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" - # Each line is of the form 'foo.o: dependent.h', - # or 'foo.o: dep1.h dep2.h \', or ' dep3.h dep4.h \'. + # Each line is of the form `foo.o: dependent.h', + # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to - # '$object: dependent.h' and one to simply 'dependent.h:'. - sed -e "s/^[ $tab][ $tab]*/ /" -e "s,^[^:]*:,$object :," \ - < "$tmpdepfile" > "$depfile" - sed ' - s/[ '"$tab"'][ '"$tab"']*/ /g - s/^ *// - s/ *\\*$// - s/^[^:]*: *// - /^$/d - /:$/d - s/$/ :/ - ' < "$tmpdepfile" >> "$depfile" + # `$object: dependent.h' and one to simply `dependent.h:'. + sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ + | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; @@ -342,9 +439,8 @@ hp2) # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. - dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` - test "x$dir" = "x$object" && dir= - base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + set_dir_from "$object" + set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.d tmpdepfile2=$dir.libs/$base.d @@ -355,8 +451,7 @@ hp2) "$@" +Maked fi stat=$? - if test $stat -eq 0; then : - else + if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi @@ -366,76 +461,61 @@ hp2) test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then - sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" + sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" # Add 'dependent.h:' lines. sed -ne '2,${ - s/^ *// - s/ \\*$// - s/$/:/ - p - }' "$tmpdepfile" >> "$depfile" + s/^ *// + s/ \\*$// + s/$/:/ + p + }' "$tmpdepfile" >> "$depfile" else - echo "#dummy" > "$depfile" + make_dummy_depfile fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; tru64) - # The Tru64 compiler uses -MD to generate dependencies as a side - # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. - # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put - # dependencies in 'foo.d' instead, so we check for that too. - # Subdirectories are respected. - dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` - test "x$dir" = "x$object" && dir= - base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` - - if test "$libtool" = yes; then - # With Tru64 cc, shared objects can also be used to make a - # static library. This mechanism is used in libtool 1.4 series to - # handle both shared and static libraries in a single compilation. - # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. - # - # With libtool 1.5 this exception was removed, and libtool now - # generates 2 separate objects for the 2 libraries. These two - # compilations output dependencies in $dir.libs/$base.o.d and - # in $dir$base.o.d. We have to check for both files, because - # one of the two compilations can be disabled. We should prefer - # $dir$base.o.d over $dir.libs/$base.o.d because the latter is - # automatically cleaned when .libs/ is deleted, while ignoring - # the former would cause a distcleancheck panic. - tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 - tmpdepfile2=$dir$base.o.d # libtool 1.5 - tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 - tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 - "$@" -Wc,-MD - else - tmpdepfile1=$dir$base.o.d - tmpdepfile2=$dir$base.d - tmpdepfile3=$dir$base.d - tmpdepfile4=$dir$base.d - "$@" -MD - fi - - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" - do - test -f "$tmpdepfile" && break - done - if test -f "$tmpdepfile"; then - sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" - sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" - else - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" - ;; + # The Tru64 compiler uses -MD to generate dependencies as a side + # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. + # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put + # dependencies in 'foo.d' instead, so we check for that too. + # Subdirectories are respected. + set_dir_from "$object" + set_base_from "$object" + + if test "$libtool" = yes; then + # Libtool generates 2 separate objects for the 2 libraries. These + # two compilations output dependencies in $dir.libs/$base.o.d and + # in $dir$base.o.d. We have to check for both files, because + # one of the two compilations can be disabled. We should prefer + # $dir$base.o.d over $dir.libs/$base.o.d because the latter is + # automatically cleaned when .libs/ is deleted, while ignoring + # the former would cause a distcleancheck panic. + tmpdepfile1=$dir$base.o.d # libtool 1.5 + tmpdepfile2=$dir.libs/$base.o.d # Likewise. + tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 + "$@" -Wc,-MD + else + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir$base.d + tmpdepfile3=$dir$base.d + "$@" -MD + fi + + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + do + test -f "$tmpdepfile" && break + done + # Same post-processing that is required for AIX mode. + aix_post_process_depfile + ;; msvc7) if test "$libtool" = yes; then @@ -446,8 +526,7 @@ msvc7) "$@" $showIncludes > "$tmpdepfile" stat=$? grep -v '^Note: including file: ' "$tmpdepfile" - if test "$stat" = 0; then : - else + if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi @@ -473,6 +552,7 @@ $ { G p }' >> "$depfile" + echo >> "$depfile" # make sure the fragment doesn't end with a backslash rm -f "$tmpdepfile" ;; @@ -524,13 +604,14 @@ dashmstdout) # in the target name. This is to cope with DOS-style filenames: # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. "$@" $dashmflag | - sed 's:^['"$tab"' ]*[^:'"$tab"' ][^:][^:]*\:['"$tab"' ]*:'"$object"'\: :' > "$tmpdepfile" + sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" - tr ' ' "$nl" < "$tmpdepfile" | \ -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + # Some versions of the HPUX 10.20 sed can't process this sed invocation + # correctly. Breaking it into two sed invocations is a workaround. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; @@ -583,10 +664,12 @@ makedepend) # makedepend may prepend the VPATH from the source file name to the object. # No need to regex-escape $object, excess matching of '.' is harmless. sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" - sed '1,2d' "$tmpdepfile" | tr ' ' "$nl" | \ -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + # Some versions of the HPUX 10.20 sed can't process the last invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed '1,2d' "$tmpdepfile" \ + | tr ' ' "$nl" \ + | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; @@ -622,10 +705,10 @@ cpp) esac done - "$@" -E | - sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ - -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | - sed '$ s: \\$::' > "$tmpdepfile" + "$@" -E \ + | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" @@ -657,15 +740,15 @@ msvisualcpp) shift ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") - set fnord "$@" - shift - shift - ;; + set fnord "$@" + shift + shift + ;; *) - set fnord "$@" "$arg" - shift - shift - ;; + set fnord "$@" "$arg" + shift + shift + ;; esac done "$@" -E 2>/dev/null | @@ -700,9 +783,9 @@ exit 0 # Local Variables: # mode: shell-script # sh-indentation: 2 -# eval: (add-hook 'write-file-hooks 'time-stamp) +# eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" +# time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: diff --git a/vendor/oniguruma/oniguruma/doc/API b/vendor/oniguruma/oniguruma/doc/API new file mode 100644 index 0000000..2990793 --- /dev/null +++ b/vendor/oniguruma/oniguruma/doc/API @@ -0,0 +1,1105 @@ +Oniguruma API Version 6.9.10 2024/06/26 + +#include + + +# int onig_initialize(OnigEncoding use_encodings[], int num_encodings) + + Initialize library. + + You have to call it explicitly. + + * onig_init() is deprecated. + + arguments + 1 use_encodings: array of encodings used in application. + 2 num_encodings: number of encodings. + + return value + normal: ONIG_NORMAL == 0 + error: error code < 0 + + +# int onig_error_code_to_str(UChar* err_buf, int err_code, ...) + + Get error message string. + If this function is used for onig_new(), + don't call this after the pattern argument of onig_new() is freed. + + return value + normal: error message string length + + arguments + 1 err_buf: error message string buffer. + (required size: ONIG_MAX_ERROR_MESSAGE_LEN) + 2 err_code: error code returned by other API functions. + 3 err_info (optional): error info returned by onig_new(). + + +# void onig_set_warn_func(OnigWarnFunc func) + + Set warning function. + + WARNING: + '[', '-', ']' in character class without escape. + ']' in pattern without escape. + + arguments + 1 func: function pointer. void (*func)(char* warning_message) + + +# void onig_set_verb_warn_func(OnigWarnFunc func) + + Set verbose warning function. + + WARNING: + redundant nested repeat operator. + + arguments + 1 func: function pointer. void (*func)(char* warning_message) + + +# int onig_new(regex_t** reg, const UChar* pattern, const UChar* pattern_end, + OnigOptionType option, OnigEncoding enc, OnigSyntaxType* syntax, + OnigErrorInfo* err_info) + + Create a regex object. + + return value + normal: ONIG_NORMAL == 0 + error: error code < 0 + + arguments + 1 reg: return regex object's address. + 2 pattern: regex pattern string. + 3 pattern_end: terminate address of pattern. (pattern + pattern length) + 4 option: compile time options. + + ONIG_OPTION_NONE no option + ONIG_OPTION_SINGLELINE '^' -> '\A', '$' -> '\Z' + ONIG_OPTION_MULTILINE '.' match with newline + ONIG_OPTION_IGNORECASE ambiguity match on + ONIG_OPTION_EXTEND extended pattern form + ONIG_OPTION_FIND_LONGEST find longest match + ONIG_OPTION_FIND_NOT_EMPTY ignore empty match + ONIG_OPTION_NEGATE_SINGLELINE clear ONIG_OPTION_SINGLELINE which is enabled on ONIG_SYNTAX_POSIX_BASIC/POSIX_EXTENDED/PERL/PERL_NG/PYTHON/JAVA + + ONIG_OPTION_DONT_CAPTURE_GROUP only named group captured. + ONIG_OPTION_CAPTURE_GROUP named and no-named group captured. + + ONIG_OPTION_IGNORECASE_IS_ASCII Limit IGNORECASE((?i)) to a range of ASCII characters + ONIG_OPTION_WORD_IS_ASCII ASCII only word (\w, \p{Word}, [[:word:]]) + ASCII only word bound (\b) + ONIG_OPTION_DIGIT_IS_ASCII ASCII only digit (\d, \p{Digit}, [[:digit:]]) + ONIG_OPTION_SPACE_IS_ASCII ASCII only space (\s, \p{Space}, [[:space:]]) + ONIG_OPTION_POSIX_IS_ASCII ASCII only POSIX properties + (includes word, digit, space) + (alnum, alpha, blank, cntrl, digit, graph, + lower, print, punct, space, upper, xdigit, + word) + ONIG_OPTION_TEXT_SEGMENT_EXTENDED_GRAPHEME_CLUSTER Extended Grapheme Cluster mode + ONIG_OPTION_TEXT_SEGMENT_WORD Word mode + + + * The ONIG_OPTION_FIND_LONGEST option doesn't work properly during backward search of onig_search(). + + + 5 enc: character encoding. + + ONIG_ENCODING_ASCII ASCII + ONIG_ENCODING_ISO_8859_1 ISO 8859-1 + ONIG_ENCODING_ISO_8859_2 ISO 8859-2 + ONIG_ENCODING_ISO_8859_3 ISO 8859-3 + ONIG_ENCODING_ISO_8859_4 ISO 8859-4 + ONIG_ENCODING_ISO_8859_5 ISO 8859-5 + ONIG_ENCODING_ISO_8859_6 ISO 8859-6 + ONIG_ENCODING_ISO_8859_7 ISO 8859-7 + ONIG_ENCODING_ISO_8859_8 ISO 8859-8 + ONIG_ENCODING_ISO_8859_9 ISO 8859-9 + ONIG_ENCODING_ISO_8859_10 ISO 8859-10 + ONIG_ENCODING_ISO_8859_11 ISO 8859-11 + ONIG_ENCODING_ISO_8859_13 ISO 8859-13 + ONIG_ENCODING_ISO_8859_14 ISO 8859-14 + ONIG_ENCODING_ISO_8859_15 ISO 8859-15 + ONIG_ENCODING_ISO_8859_16 ISO 8859-16 + ONIG_ENCODING_UTF8 UTF-8 + ONIG_ENCODING_UTF16_BE UTF-16BE + ONIG_ENCODING_UTF16_LE UTF-16LE + ONIG_ENCODING_UTF32_BE UTF-32BE + ONIG_ENCODING_UTF32_LE UTF-32LE + ONIG_ENCODING_EUC_JP EUC-JP + ONIG_ENCODING_EUC_TW EUC-TW + ONIG_ENCODING_EUC_KR EUC-KR + ONIG_ENCODING_EUC_CN EUC-CN + ONIG_ENCODING_SJIS Shift_JIS + ONIG_ENCODING_KOI8_R KOI8-R + ONIG_ENCODING_CP1251 CP1251 + ONIG_ENCODING_BIG5 Big5 + ONIG_ENCODING_GB18030 GB18030 + + or any OnigEncodingType data address defined by user. + + 6 syntax: address of pattern syntax definition. + + ONIG_SYNTAX_ASIS plain text + ONIG_SYNTAX_POSIX_BASIC POSIX Basic RE + ONIG_SYNTAX_POSIX_EXTENDED POSIX Extended RE + ONIG_SYNTAX_EMACS Emacs + ONIG_SYNTAX_GREP grep + ONIG_SYNTAX_GNU_REGEX GNU regex + ONIG_SYNTAX_JAVA Java (Sun java.util.regex) + ONIG_SYNTAX_PERL Perl + ONIG_SYNTAX_PERL_NG Perl + named group + ONIG_SYNTAX_PYTHON Python + ONIG_SYNTAX_ONIGURUMA Oniguruma + ONIG_SYNTAX_DEFAULT default (== ONIG_SYNTAX_ONIGURUMA) + onig_set_default_syntax() + + or any OnigSyntaxType data address defined by user. + + 7 err_info: address for return optional error info. + Use this value as 3rd argument of onig_error_code_to_str(). + + + +# int onig_new_without_alloc(regex_t* reg, const UChar* pattern, + const UChar* pattern_end, + OnigOptionType option, OnigEncoding enc, OnigSyntaxType* syntax, + OnigErrorInfo* err_info) + + Create a regex object. + reg object area is not allocated in this function. + + return value + normal: ONIG_NORMAL == 0 + error: error code < 0 + + +# int onig_new_deluxe(regex_t** reg, const UChar* pattern, const UChar* pattern_end, + OnigCompileInfo* ci, OnigErrorInfo* einfo) + + This function is deprecated, and it does not allow the case where + the encoding of pattern and target is different. + + Create a regex object. + This function is deluxe version of onig_new(). + + return value + normal: ONIG_NORMAL == 0 + error: error code < 0 + + arguments + 1 reg: return address of regex object. + 2 pattern: regex pattern string. + 3 pattern_end: terminate address of pattern. (pattern + pattern length) + 4 ci: compile time info. + + ci->num_of_elements: number of elements in ci. (current version: 5) + ci->pattern_enc: pattern string character encoding. + ci->target_enc: target string character encoding. + ci->syntax: address of pattern syntax definition. + ci->option: compile time option. + ci->case_fold_flag: character matching case fold bit flag for + ONIG_OPTION_IGNORECASE mode. + + ONIGENC_CASE_FOLD_MIN: minimum + ONIGENC_CASE_FOLD_DEFAULT: minimum + onig_set_default_case_fold_flag() + + 5 err_info: address for return optional error info. + Use this value as 3rd argument of onig_error_code_to_str(). + + + Different character encoding combination is allowed for + the following cases only. + + pattern_enc: ASCII, ISO_8859_1 + target_enc: UTF16_BE, UTF16_LE, UTF32_BE, UTF32_LE + + pattern_enc: UTF16_BE/LE + target_enc: UTF16_LE/BE + + pattern_enc: UTF32_BE/LE + target_enc: UTF32_LE/BE + + +# void onig_free(regex_t* reg) + + Free memory used by regex object. + + arguments + 1 reg: regex object. + + +# void onig_free_body(regex_t* reg) + + Free memory used by regex object. (Except reg oneself.) + + arguments + 1 reg: regex object. + + +# OnigMatchParam* onig_new_match_param() + + Allocate a OnigMatchParam object and initialize the contents by + onig_initialize_match_param(). + + +# void onig_free_match_param(OnigMatchParam* mp) + + Free memory used by a OnigMatchParam object. + + arguments + 1 mp: OnigMatchParam object + + +# void onig_initialize_match_param(OnigMatchParam* mp) + + Set match-param fields to default values. + Match-param is used in onig_match_with_param() and onig_search_with_param(). + + arguments + 1 mp: match-param pointer + + +# int onig_set_match_stack_limit_size_of_match_param(OnigMatchParam* mp, unsigned int limit) + + Set a maximum number of match-stack depth. + 0 means unlimited. + + arguments + 1 mp: match-param pointer + 2 limit: number of limit + + normal return: ONIG_NORMAL + + +# int onig_set_retry_limit_in_match_of_match_param(OnigMatchParam* mp, unsigned long limit) + + Set a retry limit count of a match process. + 0 means unlimited. + + arguments + 1 mp: match-param pointer + 2 limit: number of limit + + normal return: ONIG_NORMAL + + +# int onig_set_retry_limit_in_search_of_match_param(OnigMatchParam* mp, unsigned long limit) + + Set a retry limit count of a search process. + 0 means unlimited. + + arguments + 1 mp: match-param pointer + 2 limit: number of limit + + normal return: ONIG_NORMAL + + +# int onig_set_progress_callout_of_match_param(OnigMatchParam* mp, OnigCalloutFunc f) + + Set a function for callouts of contents in progress. + If 0 (NULL) is set, never called in progress. + + arguments + 1 mp: match-param pointer + 2 f: function + + normal return: ONIG_NORMAL + + +# int onig_set_retraction_callout_of_match_param(OnigMatchParam* mp, OnigCalloutFunc f) + + Set a function for callouts of contents in retraction (backtrack). + If 0 (NULL) is set, never called in retraction. + + arguments + 1 mp: match-param pointer + 2 f: function + + normal return: ONIG_NORMAL + + + +# int onig_search(regex_t* reg, const UChar* str, const UChar* end, const UChar* start, + const UChar* range, OnigRegion* region, OnigOptionType option) + + Search string and return search result and matching region. + Do not pass invalid byte string in the regex character encoding. + + return value + normal: match position offset (i.e. p - str >= 0) + not found: ONIG_MISMATCH (< 0) + error: error code (< 0) + + * If option ONIG_OPTION_CALLBACK_EACH_MATCH is used, + it will return ONIG_MISMATCH even if there is a match. + + arguments + 1 reg: regex object + 2 str: target string + 3 end: terminate address of target string + 4 start: search start address of target string + 5 range: search terminate address of target string + in forward search (start <= searched string < range) + in backward search (range <= searched string <= start) + 6 region: address for return group match range info (NULL is allowed) + 7 option: search time option + + ONIG_OPTION_NOTBOL Do not regard the beginning of the (str) as the beginning of the line and the beginning of the string + ONIG_OPTION_NOTEOL Do not regard the (end) as the end of a line and the end of a string + ONIG_OPTION_NOT_BEGIN_STRING Do not regard the beginning of the (str) as the beginning of a string (* fail \A) + ONIG_OPTION_NOT_END_STRING Do not regard the (end) as a string endpoint (* fail \z, \Z) + ONIG_OPTION_NOT_BEGIN_POSITION Do not regard the (start) as start position of search (* fail \G) + + ONIG_OPTION_CALLBACK_EACH_MATCH + Call back for all successful matches. + (including the case of the same matching start position) + The search does not stop when a match is found at a certain position. + The callback function to be called is set by + onig_set_callback_each_match(). + The user_data in the argument passed to the callback function is + specified by onig_set_callout_user_data_of_match_param(mp, user_data). + Therefore, if you want to specify user_data, + use onig_search_with_param() instead of onig_search(). + The user_data specified by onig_set_callout_user_data_of_match_param() + will be shared with callout. + + ONIG_OPTION_MATCH_WHOLE_STRING Try to match the whole of (str), rather than returning after the first match is found. + + +# int onig_search_with_param(regex_t* reg, const UChar* str, const UChar* end, + const UChar* start, const UChar* range, OnigRegion* region, + OnigOptionType option, OnigMatchParam* mp) + + Search string and return search result and matching region. + Do not pass invalid byte string in the regex character encoding. + + arguments + 1-7: same as onig_search() + 8 mp: match parameter values (match_stack_limit, retry_limit_in_match, retry_limit_in_search) + + +# int onig_match(regex_t* reg, const UChar* str, const UChar* end, const UChar* at, + OnigRegion* region, OnigOptionType option) + + Match string and return result and matching region. + Do not pass invalid byte string in the regex character encoding. + + return value + normal: match length (>= 0) + not match: ONIG_MISMATCH (< 0) + error: error code (< 0) + + * If option ONIG_OPTION_CALLBACK_EACH_MATCH is used, + it will return ONIG_MISMATCH even if there is a match. + + arguments + 1 reg: regex object + 2 str: target string + 3 end: terminate address of target string + 4 at: match address of target string + 5 region: address for return group match range info (NULL is allowed) + 6 option: search time option + + ONIG_OPTION_NOTBOL Do not regard the beginning of the (str) as the beginning of the line and the beginning of the string + ONIG_OPTION_NOTEOL Do not regard the (end) as the end of a line and the end of a string + ONIG_OPTION_NOT_BEGIN_STRING Do not regard the beginning of the (str) as the beginning of a string (* fail \A) + ONIG_OPTION_NOT_END_STRING Do not regard the (end) as a string endpoint (* fail \z, \Z) + ONIG_OPTION_NOT_BEGIN_POSITION Do not regard the (start) as start position of search (* fail \G) + ONIG_OPTION_CALLBACK_EACH_MATCH Call back for all successful matches. + ONIG_OPTION_MATCH_WHOLE_STRING Try to match the whole of (str), rather than returning after the first match is found. + +# int onig_match_with_param(regex_t* reg, const UChar* str, const UChar* end, + const UChar* at, OnigRegion* region, + OnigOptionType option, OnigMatchParam* mp) + + Match string and return result and matching region. + Do not pass invalid byte string in the regex character encoding. + + arguments + 1-6: same as onig_match() + 7 mp: match parameter values (match_stack_limit, retry_limit_in_match, retry_limit_in_search) + + +# 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) + + Scan string and callback with matching region. + Do not pass invalid byte string in the regex character encoding. + + return value + normal: number of matching times + error: error code + interruption: return value of callback function (!= 0) + + arguments + 1 reg: regex object + 2 str: target string + 3 end: terminate address of target string + 4 region: address for return group match range info (NULL is allowed) + 5 option: search time option + 6 scan_callback: callback function (defined by user) + 7 callback_arg: optional argument passed to callback + + +# int onig_regset_new(OnigRegSet** rset, int n, regex_t* regs[]) + + Create a regset object. + All regex objects must have the same character encoding. + All regex objects are prohibited from having the ONIG_OPTION_FIND_LONGEST option. + + arguments + 1 rset: return address of regset object + 2 n: number of regex in regs + 3 regs: array of regex + + return value + normal: ONIG_NORMAL == 0 + error: error code < 0 + + +# int onig_regset_add(OnigRegSet* set, regex_t* reg) + + Add a regex into regset. + The regex object must have the same character encoding with the regset. + The regex object is prohibited from having the ONIG_OPTION_FIND_LONGEST option. + + arguments + 1 set: regset object + 2 reg: regex object + + return value + normal: ONIG_NORMAL == 0 + error: error code < 0 + + +# int onig_regset_replace(OnigRegSet* set, int at, regex_t* reg) + + Replace a regex in regset with another one. + If the reg argument value is NULL, then remove at-th regex. (and indexes of other regexes are changed) + + arguments + 1 set: regset object + 2 at: index of regex (zero origin) + 3 reg: regex object + + return value + normal: ONIG_NORMAL == 0 + error: error code < 0 + + +# void onig_regset_free(OnigRegSet* set) + + Free memory used by regset object and regex objects in the regset. + If the same regex object is registered twice, the situation becomes destructive. + + arguments + 1 set: regset object + + +# int onig_regset_number_of_regex(OnigRegSet* set) + + Returns number of regex objects in the regset. + + arguments + 1 set: regset object + + +# regex_t* onig_regset_get_regex(OnigRegSet* set, int at) + + Returns the regex object corresponding to the at-th regex. + + arguments + 1 set: regset object + 2 at: index of regex array (zero origin) + + +# OnigRegion* onig_regset_get_region(OnigRegSet* set, int at) + + Returns the region object corresponding to the at-th regex. + + arguments + 1 set: regset object + 2 at: index of regex array (zero origin) + + +# int onig_regset_search(OnigRegSet* set, const OnigUChar* str, const OnigUChar* end, const OnigUChar* start, const OnigUChar* range, OnigRegSetLead lead, OnigOptionType option, int* rmatch_pos) + + Perform a search with regset. + + return value: + normal: index of match regex (zero origin) + not found: ONIG_MISMATCH (< 0) + error: error code (< 0) + + arguments + 1 set: regset object + 2 str: target string + 3 end: terminate address of target string + 4 start: search start address of target string + 5 range: search terminate address of target string + 6 lead: outer loop element + ONIG_REGSET_POSITION_LEAD (returns most left position) + ONIG_REGSET_REGEX_LEAD (returns most left position) + ONIG_REGSET_PRIORITY_TO_REGEX_ORDER (returns first match regex) + 7 option: search time option + ONIG_OPTION_NOTBOL Do not regard the beginning of the (str) as the beginning of the line and the beginning of the string + ONIG_OPTION_NOTEOL Do not regard the (end) as the end of a line and the end of a string + ONIG_OPTION_NOT_BEGIN_STRING Do not regard the beginning of the (str) as the beginning of a string (* fail \A) + ONIG_OPTION_NOT_END_STRING Do not regard the (end) as a string endpoint (* fail \z, \Z) + ONIG_OPTION_NOT_BEGIN_POSITION Do not regard the (start) as start position of search (* fail \G) + + 8 rmatch_pos: return address of match position (match_address - str) + + * ONIG_REGSET_POSITION_LEAD and ONIG_REGSET_REGEX_LEAD return the same result. + These differences only appear in search time. + In most cases, ONIG_REGSET_POSITION_LEAD seems to be faster. + + +# int onig_regset_search_with_param(OnigRegSet* set, const OnigUChar* str, const OnigUChar* end, const OnigUChar* start, const OnigUChar* range, OnigRegSetLead lead, OnigOptionType option, OnigMatchParam* mps[], int* rmatch_pos) + + Perform a search with regset and match-params. + + return value: + normal: index of match regex (zero origin) + not found: ONIG_MISMATCH (< 0) + error: error code (< 0) + + arguments + 1 set: regset object + 2 str: target string + 3 end: terminate address of target string + 4 start: search start address of target string + 5 range: search terminate address of target string + 6 lead: outer loop element + ONIG_REGSET_POSITION_LEAD (returns most left position) + ONIG_REGSET_REGEX_LEAD (returns most left position) + ONIG_REGSET_PRIORITY_TO_REGEX_ORDER (returns first match regex) + 7 option: search time option + ONIG_OPTION_NOTBOL Do not regard the beginning of the (str) as the beginning of the line and the beginning of the string + ONIG_OPTION_NOTEOL Do not regard the (end) as the end of a line and the end of a string + ONIG_OPTION_NOT_BEGIN_STRING Do not regard the beginning of the (str) as the beginning of a string (* fail \A) + ONIG_OPTION_NOT_END_STRING Do not regard the (end) as a string endpoint (* fail \z, \Z) + ONIG_OPTION_NOT_BEGIN_POSITION Do not regard the (start) as start position of search (* fail \G) + + 8 mps: array of match-params + 9 rmatch_pos: return address of match position (match_address - str) + + +# OnigRegion* onig_region_new(void) + + Create a region. + + +# void onig_region_free(OnigRegion* region, int free_self) + + Free memory used by region. + + arguments + 1 region: target region + 2 free_self: [1: free all, 0: free memory used in region but not self] + + +# void onig_region_copy(OnigRegion* to, OnigRegion* from) + + Copy contents of region. + + arguments + 1 to: target region + 2 from: source region + + +# void onig_region_clear(OnigRegion* region) + + Clear contents of region. + + arguments + 1 region: target region + + +# int onig_region_resize(OnigRegion* region, int n) + + Resize group range area of region. + + return value + normal: ONIG_NORMAL == 0 + error: error code < 0 + + arguments + 1 region: target region + 2 n: new size + + +# int onig_name_to_group_numbers(regex_t* reg, const UChar* name, const UChar* name_end, + int** num_list) + + Return the group number list of the name. + Named subexp is defined by (?....). + + return value + normal: number of groups for the name. + (ex. /(?..)(?..)/ ==> 2) + name not found: ONIGERR_UNDEFINED_NAME_REFERENCE + + arguments + 1 reg: regex object. + 2 name: group name. + 3 name_end: terminate address of group name. + 4 num_list: return list of group number. + + +# int onig_name_to_backref_number(regex_t* reg, const UChar* name, const UChar* name_end, + OnigRegion *region) + + Return the group number corresponding to the named backref (\k). + If two or more regions for the groups of the name are effective, + the greatest number in it is obtained. + + return value + normal: group number + error: error code < 0 + + arguments + 1 reg: regex object. + 2 name: group name. + 3 name_end: terminate address of group name. + 4 region: search/match result region. + + +# int onig_foreach_name(regex_t* reg, + int (*func)(const UChar*, const UChar*, int,int*,regex_t*,void*), + void* arg) + + Iterate function call for all names. + + return value + normal: 0 + error: return value of callback function + + arguments + 1 reg: regex object. + 2 func: callback function. + func(name, name_end, , , + reg, arg); + if func does not return 0, then iteration is stopped. + 3 arg: argument for func. + + +# int onig_number_of_names(regex_t* reg) + + Return the number of names defined in the pattern. + Multiple definitions of one name is counted as one. + + arguments + 1 reg: regex object. + + +# OnigEncoding onig_get_encoding(regex_t* reg) +# OnigOptionType onig_get_options(regex_t* reg) +# OnigSyntaxType* onig_get_syntax(regex_t* reg) + + Return a value of the regex object. + + arguments + 1 reg: regex object. + + +# OnigCaseFoldType onig_get_case_fold_flag(regex_t* reg) + + Return the case_fold_flag of the regex object. + This function is deprecated. + + arguments + 1 reg: regex object. + + +# int onig_number_of_captures(regex_t* reg) + + Return the number of capture group in the pattern. + + arguments + 1 reg: regex object. + + +# OnigCallbackEachMatchFunc onig_get_callback_each_match(void) + + Return the current callback function for ONIG_OPTION_CALLBACK_EACH_MATCH. + + +# int onig_set_callback_each_match(OnigCallbackEachMatchFunc func) + + Set the callback function for ONIG_OPTION_CALLBACK_EACH_MATCH. + If NULL is set, the callback will never be executed. + + return value + normal: 0 + + arguments + 1 func: callback function + + +# int onig_number_of_capture_histories(regex_t* reg) + + Return the number of capture history defined in the pattern. + + You can't use capture history if ONIG_SYN_OP2_ATMARK_CAPTURE_HISTORY + is disabled in the pattern syntax.(disabled in the default syntax) + + arguments + 1 reg: regex object. + + +# OnigCaptureTreeNode* onig_get_capture_tree(OnigRegion* region) + + Return the root node of capture history data tree. + + This value is undefined if matching has failed. + + arguments + 1 region: matching result. + + +# int onig_capture_tree_traverse(OnigRegion* region, int at, + int(*func)(int,int,int,int,int,void*), void* arg) + + Traverse and callback in capture history data tree. + + return value + normal: 0 + error: return value of callback function + + arguments + 1 region: match region data. + 2 at: callback position. + + ONIG_TRAVERSE_CALLBACK_AT_FIRST: callback first, then traverse children. + ONIG_TRAVERSE_CALLBACK_AT_LAST: traverse children first, then callback. + ONIG_TRAVERSE_CALLBACK_AT_BOTH: callback first, then traverse children, + and at last callback again. + + 3 func: callback function. + if func does not return 0, then traverse is stopped. + + int func(int group, int beg, int end, int level, int at, + void* arg) + + group: group number + beg: capture start position + end: capture end position + level: nest level (from 0) + at: callback position + ONIG_TRAVERSE_CALLBACK_AT_FIRST + ONIG_TRAVERSE_CALLBACK_AT_LAST + arg: optional callback argument + + 4 arg; optional callback argument. + + +# int onig_noname_group_capture_is_active(regex_t* reg) + + Return noname group capture activity. + + return value + active: 1 + inactive: 0 + + arguments + 1 reg: regex object. + + if option ONIG_OPTION_DONT_CAPTURE_GROUP == ON + --> inactive + + if the regex pattern have named group + and syntax ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP == ON + and option ONIG_OPTION_CAPTURE_GROUP == OFF + --> inactive + + else --> active + + +# UChar* onigenc_get_prev_char_head(OnigEncoding enc, const UChar* start, const UChar* s) + + Return previous character head address. + + arguments + 1 enc: character encoding + 2 start: string address + 3 s: target address of string + + +# UChar* onigenc_get_left_adjust_char_head(OnigEncoding enc, + const UChar* start, const UChar* s) + + Return left-adjusted head address of a character. + + arguments + 1 enc: character encoding + 2 start: string address + 3 s: target address of string + + +# UChar* onigenc_get_right_adjust_char_head(OnigEncoding enc, + const UChar* start, const UChar* s) + + Return right-adjusted head address of a character. + + arguments + 1 enc: character encoding + 2 start: string address + 3 s: target address of string + + +# int onigenc_strlen(OnigEncoding enc, const UChar* s, const UChar* end) + + Return number of characters in the string. + + +# int onigenc_strlen_null(OnigEncoding enc, const UChar* s) + + Return number of characters in the string. + Do not pass invalid byte string in the character encoding. + + +# int onigenc_str_bytelen_null(OnigEncoding enc, const UChar* s) + + Return number of bytes in the string. + Do not pass invalid byte string in the character encoding. + + +# int onig_set_default_syntax(OnigSyntaxType* syntax) + + Set default syntax. + + arguments + 1 syntax: address of pattern syntax definition. + + +# void onig_copy_syntax(OnigSyntaxType* to, OnigSyntaxType* from) + + Copy syntax. + + arguments + 1 to: destination address. + 2 from: source address. + + +# unsigned int onig_get_syntax_op(OnigSyntaxType* syntax) +# unsigned int onig_get_syntax_op2(OnigSyntaxType* syntax) +# unsigned int onig_get_syntax_behavior(OnigSyntaxType* syntax) +# OnigOptionType onig_get_syntax_options(OnigSyntaxType* syntax) + +# void onig_set_syntax_op(OnigSyntaxType* syntax, unsigned int op) +# void onig_set_syntax_op2(OnigSyntaxType* syntax, unsigned int op2) +# void onig_set_syntax_behavior(OnigSyntaxType* syntax, unsigned int behavior) +# void onig_set_syntax_options(OnigSyntaxType* syntax, OnigOptionType options) + + Get/Set elements of the syntax. + + arguments + 1 syntax: syntax + 2 op, op2, behavior, options: value of element. + + +# void onig_copy_encoding(OnigEncoding to, OnigEncoding from) + + Copy encoding. + + arguments + 1 to: destination address. + 2 from: source address. + + +# int onig_set_meta_char(OnigSyntaxType* syntax, unsigned int what, + OnigCodePoint code) + + Set a variable meta character to the code point value. + Except for an escape character, this meta characters specification + is not work, if ONIG_SYN_OP_VARIABLE_META_CHARACTERS is not effective + by the syntax. (Build-in syntaxes are not effective.) + + normal return: ONIG_NORMAL + + arguments + 1 syntax: target syntax + 2 what: specifies which meta character it is. + + ONIG_META_CHAR_ESCAPE + ONIG_META_CHAR_ANYCHAR + ONIG_META_CHAR_ANYTIME + ONIG_META_CHAR_ZERO_OR_ONE_TIME + ONIG_META_CHAR_ONE_OR_MORE_TIME + ONIG_META_CHAR_ANYCHAR_ANYTIME + + 3 code: meta character or ONIG_INEFFECTIVE_META_CHAR. + + +# OnigCaseFoldType onig_get_default_case_fold_flag() + + Get default case fold flag. + This function is deprecated. + + +# int onig_set_default_case_fold_flag(OnigCaseFoldType case_fold_flag) + + Set default case fold flag. + This function is deprecated. + + 1 case_fold_flag: case fold flag + + +# unsigned int onig_get_match_stack_limit_size(void) + + Return the maximum number of stack size. + (default: 0 == unlimited) + + +# int onig_set_match_stack_limit_size(unsigned int size) + + Set the maximum number of stack size. + (size = 0: unlimited) + + normal return: ONIG_NORMAL + + +# unsigned long onig_get_retry_limit_in_match(void) + + Return the limit of retry counts in a matching process. + (default: 10000000) + + normal return: current limit value + + +# unsigned long onig_get_retry_limit_in_search(void) + + Return the limit of retry counts in a search process. + 0 means unlimited. + (default: 0) + + normal return: current limit value + + +# int onig_set_retry_limit_in_match(unsigned long limit) + + Set the limit of retry counts in matching process. + 0 means unlimited. + + normal return: ONIG_NORMAL + + +# int onig_set_retry_limit_in_search(unsigned long limit) + + Set a retry limit count of a search process. + 0 means unlimited. + + normal return: ONIG_NORMAL + + +# unsigned long onig_get_subexp_call_limit_in_search(void) + + Return the limit of subexp call count. + (default: 0:unlimited) + + normal return: current limit value + + +# int onig_set_subexp_call_limit_in_search(unsigned long n) + + Set a limit count of subexp call. + + normal return: ONIG_NORMAL + + +# int onig_get_subexp_call_max_nest_level(void) + + Return the limit of subexp call nest level. + (default: 24) + + normal return: current limit value + + +# int onig_set_subexp_call_max_nest_level(int max_level) + + Set a limit level of subexp call nest level. + + normal return: ONIG_NORMAL + + +# OnigCalloutFunc onig_get_progress_callout(void) + + Get a function for callouts of contents in progress. + + +# int onig_set_progress_callout(OnigCalloutFunc f) + + Set a function for callouts of contents in progress. + If 0 (NULL) is set, never called in progress. + + normal return: ONIG_NORMAL + + +# OnigCalloutFunc onig_get_retraction_callout(void) + + Get a function for callouts of contents in retraction (backtrack). + + +# int onig_set_retraction_callout(OnigCalloutFunc f) + + Set a function for callouts of contents in retraction (backtrack). + If 0 (NULL) is set, never called in retraction. + + normal return: ONIG_NORMAL + + +# int onig_unicode_define_user_property(const char* name, OnigCodePoint* ranges)) + + Define new Unicode property. + (This function is not thread safe.) + + arguments + 1 name: property name (ASCII only. character ' ', '-', '_' are ignored.) + 2 ranges: property code point ranges + (first element is number of ranges.) + + [num-of-ranges, 1st-range-start, 1st-range-end, 2nd-range-start... ] + + * Don't destroy the ranges after having called this function. + + return value + normal: ONIG_NORMAL == 0 + error: error code < 0 + + +# unsigned int onig_get_parse_depth_limit(void) + + Return the maximum depth of parser recursion. + (default: DEFAULT_PARSE_DEPTH_LIMIT defined in regint.h. Currently 4096.) + + +# int onig_set_parse_depth_limit(unsigned int depth) + + Set the maximum depth of parser recursion. + (depth = 0: Set to the default value defined in regint.h.) + + normal return: ONIG_NORMAL + + +# int onig_end(void) + + The use of this library is finished. + + normal return: ONIG_NORMAL + + It is not allowed to use regex objects which created + before onig_end() call. + + +# const char* onig_version(void) + + Return version string. (ex. "5.0.3") + +// END diff --git a/vendor/oniguruma/oniguruma/doc/API.ja b/vendor/oniguruma/oniguruma/doc/API.ja new file mode 100644 index 0000000..781ffea --- /dev/null +++ b/vendor/oniguruma/oniguruma/doc/API.ja @@ -0,0 +1,1108 @@ +鬯シ霆翫う繝ウ繧ソ繝シ繝輔ぉ繝シ繧ケ Version 6.9.10 2024/05/26 + +#include + + +# int onig_initialize(OnigEncoding use_encodings[], int num_encodings) + + 繝ゥ繧、繝悶Λ繝ェ縺ョ蛻晄悄蛹 + 譛蛻昴↓蜻シ縺ウ蜃コ縺吝ソ隕√′縺ゅk縲 + + * onig_init() 縺ッ蟒豁「 + + 蠑墓焚 + 1 use_encodings: 菴ソ逕ィ縺吶k譁蟄励お繝ウ繧ウ繝シ繝繧」繝ウ繧ー縺ョ驟榊 + 2 num_encodings: 譁蟄励お繝ウ繧ウ繝シ繝繧」繝ウ繧ー縺ョ謨ー + + 謌サ繧雁、 + 豁」蟶ク邨ゆコ: ONIG_NORMAL == 0 + 繧ィ繝ゥ繝シ譎: 繧ィ繝ゥ繝シ繧ウ繝シ繝 < 0 + + +# int onig_error_code_to_str(UChar* err_buf, int err_code, ...) + + 繧ィ繝ゥ繝シ繝。繝繧サ繝シ繧ク繧貞叙蠕励☆繧九 + + 縺薙ョ髢「謨ー繧偵{nig_new()縺ョ邨先棡縺ォ蟇セ縺励※蜻シ縺ウ蜃コ縺吝エ蜷医↓縺ッ縲{nig_new()縺ョpattern蠑墓焚繧 + 繝。繝「繝ェ隗」謾セ縺吶k繧医j繧ょ燕縺ォ蜻シ縺ウ蜃コ縺輔↑縺代l縺ー縺ェ繧峨↑縺縲 + + 謌サ繧雁、 + 豁」蟶ク邨ゆコ: 繧ィ繝ゥ繝シ繝。繝繧サ繝シ繧ク譁蟄怜励ョ繝舌う繝磯聞 + + 蠑墓焚 + 1 err_buf: 繧ィ繝ゥ繝シ繝。繝繧サ繝シ繧ク繧呈シ邏阪☆繧矩伜沺 + (蠢隕√↑繧オ繧、繧コ: ONIG_MAX_ERROR_MESSAGE_LEN) + 2 err_code: 繧ィ繝ゥ繝シ繧ウ繝シ繝 + 3 err_info (optional): onig_new()縺ョerr_info + + +# void onig_set_warn_func(OnigWarnFunc func) + + 隴ヲ蜻企夂衍髢「謨ー繧偵そ繝繝医☆繧九 + + 隴ヲ蜻: + '[', '-', ']' in character class without escape. + ']' in pattern without escape. + + 蠑墓焚 + 1 func: 隴ヲ蜻企未謨ー void (*func)(char* warning_message) + + +# void onig_set_verb_warn_func(OnigWarnFunc func) + + 隧ウ邏ー隴ヲ蜻企夂衍髢「謨ー繧偵そ繝繝医☆繧九 + + 隧ウ邏ー隴ヲ蜻: + redundant nested repeat operator. + + 蠑墓焚 + 1 func: 隧ウ邏ー隴ヲ蜻企未謨ー void (*func)(char* warning_message) + + +# int onig_new(regex_t** reg, const UChar* pattern, const UChar* pattern_end, + OnigOptionType option, OnigEncoding enc, OnigSyntaxType* syntax, + OnigErrorInfo* err_info) + + 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝(regex)繧剃ス懈舌☆繧九 + + 謌サ繧雁、 + 豁」蟶ク邨ゆコ: ONIG_NORMAL == 0 + 繧ィ繝ゥ繝シ譎: 繧ィ繝ゥ繝シ繧ウ繝シ繝 < 0 + + 蠑墓焚 + 1 reg: 菴懈舌&繧後◆豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝医r霑斐☆繧「繝峨Ξ繧ケ + 2 pattern: 豁」隕剰。ィ迴セ繝代ち繝シ繝ウ譁蟄怜 + 3 pattern_end: 豁」隕剰。ィ迴セ繝代ち繝シ繝ウ譁蟄怜励ョ邨らォッ繧「繝峨Ξ繧ケ(pattern + pattern length) + 4 option: 豁」隕剰。ィ迴セ繧ウ繝ウ繝代う繝ォ譎ゅが繝励す繝ァ繝ウ + + ONIG_OPTION_NONE 繧ェ繝励す繝ァ繝ウ縺ェ縺 + ONIG_OPTION_SINGLELINE '^' -> '\A', '$' -> '\Z' + ONIG_OPTION_MULTILINE '.'縺梧隼陦後↓繝槭ャ繝√☆繧 + ONIG_OPTION_IGNORECASE 譖匁乂繝槭ャ繝 繧ェ繝ウ + ONIG_OPTION_EXTEND 繝代ち繝シ繝ウ諡。蠑オ蠖「蠑 + ONIG_OPTION_FIND_LONGEST 譛髟キ繝槭ャ繝 + ONIG_OPTION_FIND_NOT_EMPTY 遨コ繝槭ャ繝√r辟。隕 + ONIG_OPTION_NEGATE_SINGLELINE ONIG_SYNTAX_POSIX_BASIC/POSIX_EXTENDED/PERL/PERL_NG/PYTHON/JAVA縺ァ繝繝輔か繝ォ繝医〒譛牙柑縺ェONIG_OPTION_SINGLELINE繧偵け繝ェ繧「縺吶k縲 + + ONIG_OPTION_DONT_CAPTURE_GROUP 蜷榊燕莉倥″謐慕佐蠑城寔蜷医ョ縺ソ謐慕佐 + ONIG_OPTION_CAPTURE_GROUP 蜷榊燕辟。縺玲黒迯イ蠑城寔蜷医b謐慕佐 + ONIG_OPTION_IGNORECASE_IS_ASCII IGNORECASE((?i))繧但SCII譁蟄励ョ遽蝗イ縺ォ蛻カ髯舌☆繧 + ONIG_OPTION_WORD_IS_ASCII word縺窟SCII縺ョ縺ソ (\w, \p{Word}, [[:word:]]) + word bound縺窟SCII縺ョ縺ソ (\b) + ONIG_OPTION_DIGIT_IS_ASCII digit縺窟SCII縺ョ縺ソ (\d, \p{Digit}, [[:digit:]]) + ONIG_OPTION_SPACE_IS_ASCII space縺窟SCII縺ョ縺ソ (\s, \p{Space}, [[:space:]]) + ONIG_OPTION_POSIX_IS_ASCII POSIX繝励Ο繝代ユ繧」縺窟SCII縺ョ縺ソ + (word, digit, space繧貞ィ縺ヲ蜷ォ繧薙〒縺繧) + (alnum, alpha, blank, cntrl, digit, graph, + lower, print, punct, space, upper, xdigit, + word) + ONIG_OPTION_TEXT_SEGMENT_EXTENDED_GRAPHEME_CLUSTER 諡。蠑オ譖ク險倡エ謌ソ繝「繝シ繝 + ONIG_OPTION_TEXT_SEGMENT_WORD 蜊倩ェ槭Δ繝シ繝 + + * ONIG_OPTION_FIND_LONGEST 縺ッonig_search()縺ョ蠕梧婿謗「邏「縺ァ縺ッ豁」縺励¥蜍穂ス懊@縺ェ縺 + + 5 enc: 譁蟄励お繝ウ繧ウ繝シ繝繧」繝ウ繧ー + + ONIG_ENCODING_ASCII ASCII + ONIG_ENCODING_ISO_8859_1 ISO 8859-1 + ONIG_ENCODING_ISO_8859_2 ISO 8859-2 + ONIG_ENCODING_ISO_8859_3 ISO 8859-3 + ONIG_ENCODING_ISO_8859_4 ISO 8859-4 + ONIG_ENCODING_ISO_8859_5 ISO 8859-5 + ONIG_ENCODING_ISO_8859_6 ISO 8859-6 + ONIG_ENCODING_ISO_8859_7 ISO 8859-7 + ONIG_ENCODING_ISO_8859_8 ISO 8859-8 + ONIG_ENCODING_ISO_8859_9 ISO 8859-9 + ONIG_ENCODING_ISO_8859_10 ISO 8859-10 + ONIG_ENCODING_ISO_8859_11 ISO 8859-11 + ONIG_ENCODING_ISO_8859_13 ISO 8859-13 + ONIG_ENCODING_ISO_8859_14 ISO 8859-14 + ONIG_ENCODING_ISO_8859_15 ISO 8859-15 + ONIG_ENCODING_ISO_8859_16 ISO 8859-16 + ONIG_ENCODING_UTF8 UTF-8 + ONIG_ENCODING_UTF16_BE UTF-16BE + ONIG_ENCODING_UTF16_LE UTF-16LE + ONIG_ENCODING_UTF32_BE UTF-32BE + ONIG_ENCODING_UTF32_LE UTF-32LE + ONIG_ENCODING_EUC_JP EUC-JP + ONIG_ENCODING_EUC_TW EUC-TW + ONIG_ENCODING_EUC_KR EUC-KR + ONIG_ENCODING_EUC_CN EUC-CN + ONIG_ENCODING_SJIS Shift_JIS + ONIG_ENCODING_KOI8_R KOI8-R + ONIG_ENCODING_CP1251 CP1251 + ONIG_ENCODING_BIG5 Big5 + ONIG_ENCODING_GB18030 GB18030 + + 縺セ縺溘ッ縲√Θ繝シ繧カ縺悟ョ夂セゥ縺励◆OnigEncodingType繝繝シ繧ソ縺ョ繧「繝峨Ξ繧ケ + + 6 syntax: 豁」隕剰。ィ迴セ繝代ち繝シ繝ウ譁豕募ョ夂セゥ + + ONIG_SYNTAX_ASIS plain text + ONIG_SYNTAX_POSIX_BASIC POSIX Basic RE + ONIG_SYNTAX_POSIX_EXTENDED POSIX Extended RE + ONIG_SYNTAX_EMACS Emacs + ONIG_SYNTAX_GREP grep + ONIG_SYNTAX_GNU_REGEX GNU regex + ONIG_SYNTAX_JAVA Java (Sun java.util.regex) + ONIG_SYNTAX_PERL Perl + ONIG_SYNTAX_PERL_NG Perl + 蜷榊燕莉倥″謐慕佐蠑城寔蜷 + ONIG_SYNTAX_PYTHON Python + ONIG_SYNTAX_ONIGURUMA Oniguruma + ONIG_SYNTAX_DEFAULT default (== ONIG_SYNTAX_ONIGURUMA) + onig_set_default_syntax() + + 縺セ縺溘ッ縲√Θ繝シ繧カ縺悟ョ夂セゥ縺励◆OnigSyntaxType繝繝シ繧ソ縺ョ繧「繝峨Ξ繧ケ + + 7 err_info: 繧ィ繝ゥ繝シ諠蝣ア繧定ソ斐☆縺溘a縺ョ繧「繝峨Ξ繧ケ + onig_error_code_to_str()縺ョ荳臥分逶ョ縺ョ蠑墓焚縺ィ縺励※菴ソ逕ィ縺吶k + + + +# int onig_new_without_alloc(regex_t* reg, const UChar* pattern, + const UChar* pattern_end, + OnigOptionType option, OnigEncoding enc, OnigSyntaxType* syntax, + OnigErrorInfo* err_info) + + 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝(regex)繧剃ス懈舌☆繧九 + reg縺ョ鬆伜沺繧貞驛ィ縺ァ蜑イ繧雁ス薙※縺ェ縺縲 + + 謌サ繧雁、 + 豁」蟶ク邨ゆコ: ONIG_NORMAL == 0 + 繧ィ繝ゥ繝シ譎: 繧ィ繝ゥ繝シ繧ウ繝シ繝 < 0 + + + +# int onig_new_deluxe(regex_t** reg, const UChar* pattern, const UChar* pattern_end, + OnigCompileInfo* ci, OnigErrorInfo* einfo) + + 縺薙ョ髢「謨ー縺ッ蟒豁「(菴ソ逕ィ荳榊庄)縲 + 繝代ち繝シ繝ウ縺ィ蟇セ雎。譁蟄怜励ョ譁蟄励お繝ウ繧ウ繝シ繝繧」繝ウ繧ー縺檎焚縺ェ繧句エ蜷医r險ア縺輔↑縺上↑縺」縺溘 + + 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝(regex)繧剃ス懈舌☆繧九 + 縺薙ョ髢「謨ー縺ッ縲{nig_new()縺ョ繝繝ゥ繝繧ッ繧ケ迚医 + + 謌サ繧雁、 + 豁」蟶ク邨ゆコ: ONIG_NORMAL == 0 + 繧ィ繝ゥ繝シ譎: 繧ィ繝ゥ繝シ繧ウ繝シ繝 < 0 + + 蠑墓焚 + 1 reg: 菴懈舌&繧後◆豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝医r霑斐☆繧「繝峨Ξ繧ケ + 2 pattern: 豁」隕剰。ィ迴セ繝代ち繝シ繝ウ譁蟄怜 + 3 pattern_end: 豁」隕剰。ィ迴セ繝代ち繝シ繝ウ譁蟄怜励ョ邨らォッ繧「繝峨Ξ繧ケ(pattern + pattern length) + 4 ci: 繧ウ繝ウ繝代う繝ォ諠蝣ア + + ci->num_of_elements: ci縺ョ隕∫エ謨ー (迴セ蝨ィ縺ョ迚医〒縺ッ: 5) + ci->pattern_enc: 繝代ち繝シ繝ウ譁蟄怜励ョ譁蟄励お繝ウ繧ウ繝シ繝繧」繝ウ繧ー + ci->target_enc: 蟇セ雎。譁蟄怜励ョ譁蟄励お繝ウ繧ウ繝シ繝繧」繝ウ繧ー + ci->syntax: 豁」隕剰。ィ迴セ繝代ち繝シ繝ウ譁豕募ョ夂セゥ + ci->option: 豁」隕剰。ィ迴セ繧ウ繝ウ繝代う繝ォ譎ゅが繝励す繝ァ繝ウ + ci->case_fold_flag: ONIG_OPTION_IGNORECASE繝「繝シ繝峨〒縺ョ + 譁蟄玲尠譏ァ繝槭ャ繝∵欠螳壹ン繝繝医ヵ繝ゥ繧ー + + ONIGENC_CASE_FOLD_MIN: 譛蟆 + ONIGENC_CASE_FOLD_DEFAULT: 譛蟆 + onig_set_default_case_fold_flag() + + 5 err_info: 繧ィ繝ゥ繝シ諠蝣ア繧定ソ斐☆縺溘a縺ョ繧「繝峨Ξ繧ケ + onig_error_code_to_str()縺ョ荳臥分逶ョ縺ョ蠑墓焚縺ィ縺励※菴ソ逕ィ縺吶k + + + 逡ー縺ェ繧区枚蟄励お繝ウ繧ウ繝シ繝繧」繝ウ繧ー縺ョ邨縺ソ蜷医o縺帙ッ縲∽サ・荳九ョ蝣エ蜷医↓縺ョ縺ソ險ア縺輔l繧九 + + pattern_enc: ASCII, ISO_8859_1 + target_enc: UTF16_BE, UTF16_LE, UTF32_BE, UTF32_LE + + pattern_enc: UTF16_BE/LE + target_enc: UTF16_LE/BE + + pattern_enc: UTF32_BE/LE + target_enc: UTF32_LE/BE + + +# void onig_free(regex_t* reg) + + 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝医ョ繝。繝「繝ェ繧定ァ」謾セ縺吶k縲 + + 蠑墓焚 + 1 reg: 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝 + + +# void onig_free_body(regex_t* reg) + + 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝医ョ繝。繝「繝ェ繧定ァ」謾セ縺吶k縲(reg閾ェ霄ォ縺ョ鬆伜沺繧帝勁縺縺ヲ) + + 蠑墓焚 + 1 reg: 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝 + + +# OnigMatchParam* onig_new_match_param() + + OnigMatchParam繧ェ繝悶ず繧ァ繧ッ繝医r逕滓舌@縲{nig_initialize_match_param()繧剃スソ逕ィ縺励※ + 荳ュ霄ォ繧貞晄悄蛹悶☆繧九 + + +# void onig_free_match_param(OnigMatchParam* mp) + + OnigMatchParam繧ェ繝悶ず繧ァ繧ッ繝医〒菴ソ逕ィ縺励※縺繧九Γ繝「繝ェ繧帝幕謾セ縺吶k縲 + + 蠑墓焚 + 1 mp: OnigMatchParam繧ェ繝悶ず繧ァ繧ッ繝 + + +# void onig_initialize_match_param(OnigMatchParam* mp) + + 繝槭ャ繝√ヱ繝ゥ繝。繧ソ讒矩菴薙↓繝繝輔か繝ォ繝亥、繧偵そ繝繝医☆繧九 + 繝槭ャ繝√ヱ繝ゥ繝。繧ソ縺ッ縲{nig_match_with_param(), onig_search_with_param()縺ァ + 菴ソ逕ィ縺輔l繧九 + + 蠑墓焚 + 1 mp: 繝槭ャ繝√ヱ繝ゥ繝。繧ソ繧ェ繝悶ず繧ァ繧ッ繝医い繝峨Ξ繧ケ + + +# int onig_set_match_stack_limit_size_of_match_param(OnigMatchParam* mp, unsigned int limit) + + 繝槭ャ繝√せ繧ソ繝繧ッ縺ョ譛螟ァ豺ア縺輔r繧サ繝繝医☆繧九 + 0縺ッ縲∫┌蛻カ髯舌r陦ィ縺吶 + + 蠑墓焚 + 1 mp: 繝槭ャ繝√ヱ繝ゥ繝。繧ソ繧ェ繝悶ず繧ァ繧ッ繝医い繝峨Ξ繧ケ + 2 limit: 蛻カ髯先焚 + + 豁」蟶ク邨ゆコ謌サ繧雁、: ONIG_NORMAL + + +# int onig_set_retry_limit_in_match_of_match_param(OnigMatchParam* mp, unsigned long limit) + + 荳蝗槭ョ繝槭ャ繝√〒縺ョ繝ェ繝医Λ繧、謨ー縺ョ蛻カ髯仙、繧偵そ繝繝医☆繧九 + シ舌ッ辟。蛻カ髯舌r諢丞袖縺吶k縲 + + 蠑墓焚 + 1 mp: 繝槭ャ繝√ヱ繝ゥ繝。繧ソ繧ェ繝悶ず繧ァ繧ッ繝医い繝峨Ξ繧ケ + 2 limit: 蛻カ髯仙屓謨ー + + 豁」蟶ク邨ゆコ謌サ繧雁、: ONIG_NORMAL + + +# int onig_set_retry_limit_in_search_of_match_param(OnigMatchParam* mp, unsigned long limit) + + 荳蝗槭ョ讀懃エ「縺ァ縺ョ繝ェ繝医Λ繧、謨ー縺ョ蛻カ髯仙、繧偵そ繝繝医☆繧九 + シ舌ッ辟。蛻カ髯舌r諢丞袖縺吶k縲 + + 蠑墓焚 + 1 mp: 繝槭ャ繝√ヱ繝ゥ繝。繧ソ繧ェ繝悶ず繧ァ繧ッ繝医い繝峨Ξ繧ケ + 2 limit: 蛻カ髯仙屓謨ー + + 豁」蟶ク邨ゆコ謌サ繧雁、: ONIG_NORMAL + + +# int onig_set_progress_callout_of_match_param(OnigMatchParam* mp, OnigCalloutFunc f) + + 蜑埼イ譎ゅョ蜀螳ケ縺ョ蜻シ縺ウ蜃コ縺(callouts)縺ァ蜻シ縺ウ蜃コ縺輔l繧矩未謨ー繧偵そ繝繝医☆繧九 + 繧ゅ@シ(NULL)縺後そ繝繝医&繧後k縺ィ縲∝燕騾イ譎ゅ↓蜻シ縺ウ蜃コ縺励ッ襍キ縺薙i縺ェ縺縲 + + 蠑墓焚 + 1 mp: 繝槭ャ繝√ヱ繝ゥ繝。繧ソ繧ェ繝悶ず繧ァ繧ッ繝医い繝峨Ξ繧ケ + 2 f: 蜻シ縺ウ蜃コ縺輔l繧矩未謨ー + + 豁」蟶ク邨ゆコ謌サ繧雁、: ONIG_NORMAL + + +# int onig_set_retraction_callout_of_match_param(OnigMatchParam* mp, OnigCalloutFunc f) + + 蠕碁譎ゅョ蜀螳ケ縺ョ蜻シ縺ウ蜃コ縺(callouts)縺ァ蜻シ縺ウ蜃コ縺輔l繧矩未謨ー繧偵そ繝繝医☆繧九 + 繧ゅ@シ(NULL)縺後そ繝繝医&繧後k縺ィ縲∝セ碁譎ゅ↓蜻シ縺ウ蜃コ縺励ッ襍キ縺薙i縺ェ縺縲 + + 蠑墓焚 + 1 mp: 繝槭ャ繝√ヱ繝ゥ繝。繧ソ繧ェ繝悶ず繧ァ繧ッ繝医い繝峨Ξ繧ケ + 2 f: 蜻シ縺ウ蜃コ縺輔l繧矩未謨ー + + 豁」蟶ク邨ゆコ謌サ繧雁、: ONIG_NORMAL + + + +# int onig_search(regex_t* reg, const UChar* str, const UChar* end, const UChar* start, + const UChar* range, OnigRegion* region, OnigOptionType option) + + 豁」隕剰。ィ迴セ縺ァ譁蟄怜励r讀懃エ「縺励∵、懃エ「邨先棡縺ィ繝槭ャ繝鬆伜沺繧定ソ斐☆縲 + 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝医ョ譁蟄励お繝ウ繧ウ繝シ繝繧」繝ウ繧ー縺ァ縲∵、懃エ「譁蟄怜励→縺励※荳肴ュ」縺ェ譁蟄怜励r貂。縺励※縺ッ縺縺代↑縺縲 + + 謌サ繧雁、 + 豁」蟶ク邨ゆコ: 繝槭ャ繝∽ス咲スョ (p - str >= 0) + 讀懃エ「螟ア謨: ONIG_MISMATCH (< 0) + + * 闍・縺涌NIG_OPTION_CALLBACK_EACH_MATCH縺御スソ逕ィ縺輔l繧九→縲√槭ャ繝√☆繧九b縺ョ縺後≠縺」縺ヲ繧0NIG_MISMATCH縺瑚ソ斐&繧後k縲 + + 蠑墓焚 + 1 reg: 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝 + 2 str: 讀懃エ「蟇セ雎。譁蟄怜 + 3 end: 讀懃エ「蟇セ雎。譁蟄怜励ョ邨らォッ繧「繝峨Ξ繧ケ + 4 start: 讀懃エ「蟇セ雎。譁蟄怜励ョ讀懃エ「蜈磯ュ菴咲スョ繧「繝峨Ξ繧ケ + 5 range: 讀懃エ「蟇セ雎。譁蟄怜励ョ讀懃エ「邨ゆコ菴咲スョ繧「繝峨Ξ繧ケ + 蜑肴婿謗「邏「 (start <= 謗「邏「縺輔l繧区枚蟄怜 < range) + 蠕梧婿謗「邏「 (range <= 謗「邏「縺輔l繧区枚蟄怜 <= start) + 6 region: 繝槭ャ繝鬆伜沺諠蝣ア(region) (NULL繧りィア縺輔l繧) + 7 option: 讀懃エ「譎ゅが繝励す繝ァ繝ウ + + ONIG_OPTION_NOTBOL str縺ョ蜈磯ュ繧定。碁ュ縺翫h縺ウ譁蟄怜怜磯ュ縺ィ逵句★縺輔↑縺 + ONIG_OPTION_NOTEOL end繧定。梧忰縺翫h縺ウ譁蟄怜礼オらォッ縺ィ逵句★縺輔↑縺 + ONIG_OPTION_NOT_BEGIN_STRING str縺ョ蜈磯ュ繧呈枚蟄怜励ョ蜈磯ュ縺ィ逵句★縺輔↑縺 (\A 螟ア謨) + ONIG_OPTION_NOT_END_STRING end繧呈枚蟄怜礼オらォッ縺ィ逵句★縺輔↑縺 (\z, \Z 螟ア謨) + ONIG_OPTION_NOT_BEGIN_POSITION start繧呈、懃エ「髢句ァ倶ス咲スョ縺ィ逵句★縺輔↑縺 (\G 螟ア謨) + + ONIG_OPTION_CALLBACK_EACH_MATCH + 蜈ィ縺ヲ縺ョ繝槭ャ繝∵仙粥縺ォ蟇セ縺励※繧ウ繝シ繝ォ繝舌ャ繧ッ髢「謨ー縺悟他縺ウ蜃コ縺輔l繧九 + (繝槭ャ繝髢句ァ倶ス咲スョ縺悟酔縺倥b縺ョ繧ょ性繧√※) + 縺ゅk菴咲スョ縺ァ繝槭ャ繝√☆繧九b縺ョ縺瑚ヲ九▽縺九▲縺ヲ繧よ爾邏「縺梧ュ「縺セ繧九%縺ィ縺ッ縺ェ縺縲 + 蜻シ縺ウ蜃コ縺輔l繧九さ繝シ繝ォ繝舌ャ繧ッ髢「謨ー縺ッ縲{nig_set_callback_each_match()縺ァ荳弱∴繧九 + 繧ウ繝シ繝ォ繝舌ャ繧ッ髢「謨ー縺ォ貂。縺輔l繧句シ墓焚縺ョ荳ュ縺ョuser_data縺ッ縲 + onig_set_callout_user_data_of_match_param(mp, user_data)縺ァ謖螳壹☆繧九 + 縺薙ョ縺溘a縲「ser_data繧呈欠螳壹@縺溘>蝣エ蜷医↓縺ッ縲{nig_search()縺ァ縺ッ縺ェ縺上 + onig_search_with_param()繧剃スソ逕ィ縺吶k縺薙→縺ォ縺ェ繧九 + onig_set_callout_user_data_of_match_param()縺ァ謖螳壹☆繧丘ser_data縺ッ縲 + callout縺ァ菴ソ逕ィ縺輔l繧丘ser_data縺ィ蜈ア逕ィ縺輔l繧九 + + ONIG_OPTION_MATCH_WHOLE_STRING 繝槭ャ繝√@縺溽オらォッ縺ョ菴咲スョ縺憩nd縺ォ縺ェ繧九%縺ィ繧定ヲ∵ア + + +# int onig_search_with_param(regex_t* reg, const UChar* str, const UChar* end, + const UChar* start, const UChar* range, OnigRegion* region, + OnigOptionType option, OnigMatchParam* mp) + + 豁」隕剰。ィ迴セ縺ァ譁蟄怜励r讀懃エ「縺励∵、懃エ「邨先棡縺ィ繝槭ャ繝鬆伜沺繧定ソ斐☆縲 + 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝医ョ譁蟄励お繝ウ繧ウ繝シ繝繧」繝ウ繧ー縺ァ縲∵、懃エ「譁蟄怜励→縺励※荳肴ュ」縺ェ譁蟄怜励r貂。縺励※縺ッ縺縺代↑縺縲 + + 蠑墓焚 + 1-7: onig_search()縺ィ蜷後§ + 8 mp: 繝槭ャ繝√ヱ繝ゥ繝。繧ソ蛟、 (match_stack_limit, retry_limit_in_match, retry_limit_in_search) + + +# int onig_match(regex_t* reg, const UChar* str, const UChar* end, + const UChar* at, OnigRegion* region, OnigOptionType option) + + 譁蟄怜励ョ謖螳壻ス咲スョ縺ァ繝槭ャ繝√Φ繧ー繧定。後>縲∫オ先棡縺ィ繝槭ャ繝鬆伜沺繧定ソ斐☆縲 + 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝医ョ譁蟄励お繝ウ繧ウ繝シ繝繧」繝ウ繧ー縺ァ縲∵、懃エ「譁蟄怜励→縺励※荳肴ュ」縺ェ譁蟄怜励r貂。縺励※縺ッ縺縺代↑縺縲 + + 謌サ繧雁、 + 豁」蟶ク邨ゆコ: 繝槭ャ繝√@縺溘ヰ繧、繝磯聞 (>= 0) + not match: ONIG_MISMATCH ( < 0) + + * 闍・縺涌NIG_OPTION_CALLBACK_EACH_MATCH縺御スソ逕ィ縺輔l繧九→縲√槭ャ繝√☆繧九b縺ョ縺後≠縺」縺ヲ繧0NIG_MISMATCH縺瑚ソ斐&繧後k縲 + + 蠑墓焚 + 1 reg: 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝 + 2 str: 讀懃エ「蟇セ雎。譁蟄怜 + 3 end: 讀懃エ「蟇セ雎。譁蟄怜励ョ邨らォッ繧「繝峨Ξ繧ケ + 4 at: 讀懃エ「蟇セ雎。譁蟄怜励ョ讀懃エ「繧「繝峨Ξ繧ケ + 5 region: 繝槭ャ繝鬆伜沺諠蝣ア(region) (NULL繧りィア縺輔l繧) + 6 option: 讀懃エ「譎ゅが繝励す繝ァ繝ウ + + ONIG_OPTION_NOTBOL str縺ョ蜈磯ュ繧定。碁ュ縺翫h縺ウ譁蟄怜怜磯ュ縺ィ逵句★縺輔↑縺 + ONIG_OPTION_NOTEOL end繧定。梧忰縺翫h縺ウ譁蟄怜礼オらォッ縺ィ逵句★縺輔↑縺 + ONIG_OPTION_NOT_BEGIN_STRING str縺ョ蜈磯ュ繧呈枚蟄怜励ョ蜈磯ュ縺ィ逵句★縺輔↑縺 (\A 螟ア謨) + ONIG_OPTION_NOT_END_STRING end繧呈枚蟄怜礼オらォッ縺ィ逵句★縺輔↑縺 (\z, \Z 螟ア謨) + ONIG_OPTION_NOT_BEGIN_POSITION start繧呈、懃エ「髢句ァ倶ス咲スョ縺ィ逵句★縺輔↑縺 (\G 螟ア謨) + ONIG_OPTION_CALLBACK_EACH_MATCH 蜈ィ縺ヲ縺ョ繝槭ャ繝∵仙粥縺ォ蟇セ縺励※繧ウ繝シ繝ォ繝舌ャ繧ッ髢「謨ー縺悟他縺ウ蜃コ縺輔l繧九 + ONIG_OPTION_MATCH_WHOLE_STRING 繝槭ャ繝√@縺溽オらォッ縺ョ菴咲スョ縺憩nd縺ォ縺ェ繧九%縺ィ繧定ヲ∵ア + + +# int onig_match_with_param(regex_t* reg, const UChar* str, const UChar* end, + const UChar* at, OnigRegion* region, + OnigOptionType option, OnigMatchParam* mp) + + 譁蟄怜励ョ謖螳壻ス咲スョ縺ァ繝槭ャ繝√Φ繧ー繧定。後>縲∫オ先棡縺ィ繝槭ャ繝鬆伜沺繧定ソ斐☆縲 + 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝医ョ譁蟄励お繝ウ繧ウ繝シ繝繧」繝ウ繧ー縺ァ縲∵、懃エ「譁蟄怜励→縺励※荳肴ュ」縺ェ譁蟄怜励r貂。縺励※縺ッ縺縺代↑縺縲 + + 蠑墓焚 + 1-6: onig_match()縺ィ蜷後§ + 7 mp: 繝槭ャ繝√ヱ繝ゥ繝。繧ソ蛟、 (match_stack_limit, retry_limit_in_match, retry_limit_in_search) + + +# 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) + + 豁」隕剰。ィ迴セ縺ァ譁蟄怜励r繧ケ繧ュ繝」繝ウ縺励※縲√槭ャ繝√Φ繧ー縺吶k豈弱↓繧ウ繝シ繝ォ繝舌ャ繧ッ髢「謨ー繧貞他縺ウ蜃コ縺吶 + 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝医ョ譁蟄励お繝ウ繧ウ繝シ繝繧」繝ウ繧ー縺ァ縲∵、懃エ「譁蟄怜励→縺励※荳肴ュ」縺ェ譁蟄怜励r貂。縺励※縺ッ縺縺代↑縺縲 + + 謌サ繧雁、 + 豁」蟶ク邨ゆコ: 繝槭ャ繝∝屓謨ー (0蝗槭b蜷ォ繧√k) + 繧ィ繝ゥ繝シ: 繧ィ繝ゥ繝シ繧ウ繝シ繝 (< 0) + 荳ュ譁ュ: 繧ウ繝シ繝ォ繝舌ャ繧ッ髢「謨ー縺鯉シ蝉サ・螟悶ョ謌サ繧雁、繧定ソ斐@縺溘→縺阪√◎縺ョ蛟、繧呈綾繧雁、縺ィ縺励※荳ュ譁ュ + + 蠑墓焚 + 1 reg: 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝 + 2 str: 讀懃エ「蟇セ雎。譁蟄怜 + 3 end: 讀懃エ「蟇セ雎。譁蟄怜励ョ邨らォッ繧「繝峨Ξ繧ケ + 4 region: 繝槭ャ繝鬆伜沺諠蝣ア(region) (NULL繧りィア縺輔l繧) + 5 option: 讀懃エ「譎ゅが繝励す繝ァ繝ウ + 6 scan_callback: 繧ウ繝シ繝ォ繝舌ャ繧ッ髢「謨ー + 7 callback_arg: 繧ウ繝シ繝ォ繝舌ャ繧ッ髢「謨ー縺ォ貂。縺輔l繧倶サ伜刈蠑墓焚蛟、 + + +# int onig_regset_new(OnigRegSet** rset, int n, regex_t* regs[]) + + regset繧ェ繝悶ず繧ァ繧ッ繝医r逕滓舌☆繧九 + 蜈ィ縺ヲ縺ョ豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝医ッ縲∝酔縺俶枚蟄励お繝ウ繧ウ繝シ繝繧」繝ウ繧ー縺ァ縺ェ縺代l縺ー縺ェ繧峨↑縺縲 + 蜈ィ縺ヲ縺ョ豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝医ッ縲^NIG_OPTION_FIND_LONGEST繧ェ繝励す繝ァ繝ウ縺ァ繧ウ繝ウ繝代う繝ォ縺輔l縺ヲ縺縺ヲ縺ッ縺ェ繧峨↑縺縲 + + 蠑墓焚 + 1 rset: regset繧ェ繝悶ず繧ァ繧ッ繝医r霑斐☆縺溘a縺ョ繧「繝峨Ξ繧ケ + 2 n: 豁」隕剰。ィ迴セ縺ョ蛟区焚 + 3 regs: 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝医ョ驟榊 + + 謌サ繧雁、 + 豁」蟶ク邨ゆコ: ONIG_NORMAL == 0 + 繧ィ繝ゥ繝シ譎: 繧ィ繝ゥ繝シ繧ウ繝シ繝 < 0 + + +# int onig_regset_add(OnigRegSet* set, regex_t* reg) + + regset繧ェ繝悶ず繧ァ繧ッ繝医↓豁」隕剰。ィ迴セ繧定ソス蜉縺吶k縲 + 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝医ッ縲〉egset縺ィ蜷後§譁蟄励お繝ウ繧ウ繝シ繝繧」繝ウ繧ー縺ァ縺ェ縺代l縺ー縺ェ繧峨↑縺縲 + 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝医ッ縲^NIG_OPTION_FIND_LONGEST繧ェ繝励す繝ァ繝ウ縺ァ繧ウ繝ウ繝代う繝ォ縺輔l縺ヲ縺縺ヲ縺ッ縺ェ繧峨↑縺縲 + + 蠑墓焚 + 1 set: regset繧ェ繝悶ず繧ァ繧ッ繝 + 2 reg: 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝 + + 謌サ繧雁、 + 豁」蟶ク邨ゆコ: ONIG_NORMAL == 0 + 繧ィ繝ゥ繝シ譎: 繧ィ繝ゥ繝シ繧ウ繝シ繝 < 0 + + +# int onig_regset_replace(OnigRegSet* set, int at, regex_t* reg) + + regset縺ョ荳ュ縺ョ荳蛟九ョ豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝医r蛻・縺ョ繧ゅョ縺ォ螟画峩縺吶k縲 + 闍・縺羊eg蠑墓焚縺ョ蛟、縺君ULL縺ァ縺ゅl縺ー縲‖t逡ェ逶ョ縺ョ豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝医r螟悶☆縲(縺昴@縺ヲ縲∽サ・髯阪ョ豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝医ョ繧、繝ウ繝繝繧ッ繧ケ縺ッ螟牙喧縺吶k) + + 蠑墓焚 + 1 set: regset繧ェ繝悶ず繧ァ繧ッ繝 + 2 at: 螟画峩縺吶k蝣エ謇縺ョ繧、繝ウ繝繝繧ッ繧ケ + 3 reg: 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝 + + 謌サ繧雁、 + 豁」蟶ク邨ゆコ: ONIG_NORMAL == 0 + 繧ィ繝ゥ繝シ譎: 繧ィ繝ゥ繝シ繧ウ繝シ繝 < 0 + + +# void onig_regset_free(OnigRegSet* set) + + regset繧ェ繝悶ず繧ァ繧ッ繝医→縺昴ョ荳ュ縺ョ豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝医ョ菴ソ逕ィ繝。繝「繝ェ繧帝幕謾セ縺吶k縲 + 闍・縺励∝酔荳縺ョ豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝医r驥崎、縺励※逋サ骭イ縺励※縺繧後ー縲∫エ螢顔噪縺ェ迥カ豕√↓縺ェ繧九 + + 蠑墓焚 + 1 set: regset繧ェ繝悶ず繧ァ繧ッ繝 + + +# int onig_regset_number_of_regex(OnigRegSet* set) + + regset縺ョ荳ュ縺ョ豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝医ョ蛟区焚繧定ソ斐☆縲 + + 蠑墓焚 + 1 set: regset繧ェ繝悶ず繧ァ繧ッ繝 + + +# regex_t* onig_regset_get_regex(OnigRegSet* set, int at) + + regset縺ョat逡ェ逶ョ縺ョ豁」隕剰。ィ迴セ繧定ソ斐☆縲 + + 蠑墓焚 + 1 set: regset繧ェ繝悶ず繧ァ繧ッ繝 + 2 at: 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝医ョ繧、繝ウ繝繝繧ッ繧ケ (繧シ繝ュ髢句ァ) + + +# OnigRegion* onig_regset_get_region(OnigRegSet* set, int at) + + regset縺ョat逡ェ逶ョ縺ョ豁」隕剰。ィ迴セ縺ォ蟇セ蠢懊☆繧矩伜沺繧定ソ斐☆縲 + + 蠑墓焚 + 1 set: regset繧ェ繝悶ず繧ァ繧ッ繝 + 2 at: 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝医ョ繧、繝ウ繝繝繧ッ繧ケ (繧シ繝ュ髢句ァ) + + +# int onig_regset_search(OnigRegSet* set, const OnigUChar* str, const OnigUChar* end, const OnigUChar* start, const OnigUChar* range, OnigRegSetLead lead, OnigOptionType option, int* rmatch_pos) + + regset縺ォ繧医k讀懃エ「繧貞ョ溯。後☆繧九 + + 謌サ繧雁、 + 讀懃エ「謌仙粥: 繝槭ャ繝√@縺滓ュ」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝医ョ繧、繝ウ繝繝繧ッ繧ケ (繧シ繝ュ髢句ァ) + 讀懃エ「螟ア謨: ONIG_MISMATCH (< 0) + 繧ィ繝ゥ繝シ: 繧ィ繝ゥ繝シ繧ウ繝シ繝 (< 0) + + 蠑墓焚 + 1 set: regset繧ェ繝悶ず繧ァ繧ッ繝 + 2 str: 讀懃エ「蟇セ雎。譁蟄怜 + 3 end: 讀懃エ「蟇セ雎。譁蟄怜励ョ邨らォッ繧「繝峨Ξ繧ケ + 4 start: 讀懃エ「蟇セ雎。譁蟄怜励ョ讀懃エ「蜈磯ュ菴咲スョ繧「繝峨Ξ繧ケ + 5 range: 讀懃エ「蟇セ雎。譁蟄怜励ョ讀懃エ「邨ゆコ菴咲スョ繧「繝峨Ξ繧ケ + (start <= 謗「邏「縺輔l繧区枚蟄怜 < range) + 6 lead: 螟門エ縺ョ繝ォ繝シ繝苓ヲ∫エ + ONIG_REGSET_POSITION_LEAD (譛蟾ヲ菴咲スョ縺ァ繝槭ャ繝√@縺溽オ先棡繧定ソ斐☆) + ONIG_REGSET_REGEX_LEAD (譛蟾ヲ菴咲スョ縺ァ繝槭ャ繝√@縺溽オ先棡繧定ソ斐☆) + ONIG_REGSET_PRIORITY_TO_REGEX_ORDER (譛蛻昴↓繝槭ャ繝√@縺滓ュ」隕剰。ィ迴セ縺ョ邨先棡繧定ソ斐☆) + 7 option: 讀懃エ「譎ゅが繝励す繝ァ繝ウ + ONIG_OPTION_NOTBOL str縺ョ蜈磯ュ繧定。碁ュ縺翫h縺ウ譁蟄怜怜磯ュ縺ィ逵句★縺輔↑縺 + ONIG_OPTION_NOTEOL end繧定。梧忰縺翫h縺ウ譁蟄怜礼オらォッ縺ィ逵句★縺輔↑縺 + ONIG_OPTION_NOT_BEGIN_STRING str縺ョ蜈磯ュ繧呈枚蟄怜励ョ蜈磯ュ縺ィ逵句★縺輔↑縺 (\A 螟ア謨) + ONIG_OPTION_NOT_END_STRING end繧呈枚蟄怜礼オらォッ縺ィ逵句★縺輔↑縺 (\z, \Z 螟ア謨) + ONIG_OPTION_NOT_BEGIN_POSITION start繧呈、懃エ「髢句ァ倶ス咲スョ縺ィ逵句★縺輔↑縺 (\G 螟ア謨) + 8 rmatch_pos: 繝槭ャ繝√@縺滉ス咲スョ繧定ソ斐☆縺溘a縺ョ繧「繝峨Ξ繧ケ (match_address - str) + + * ONIG_REGSET_POSITION_LEAD縺ィONIG_REGSET_REGEX_LEAD縺ッ蜷後§邨先棡繧定ソ斐☆縲 + 縺薙l繧峨ョ驕輔>縺ッ讀懃エ「譎る俣縺ォ縺励°迴セ繧後↑縺縲 + 縺サ縺ィ繧薙←縺ョ蝣エ蜷医^NIG_REGSET_POSITION_LEAD縺ョ縺サ縺縺碁溘>縺ィ諤昴o繧後k縲 + + +# int onig_regset_search_with_param(OnigRegSet* set, const OnigUChar* str, const OnigUChar* end, const OnigUChar* start, const OnigUChar* range, OnigRegSetLead lead, OnigOptionType option, OnigMatchParam* mps[], int* rmatch_pos) + + regset縺ィOnigMatchParam繧ェ繝悶ず繧ァ繧ッ繝医↓繧医k讀懃エ「繧貞ョ溯。後☆繧九 + + 謌サ繧雁、 + 讀懃エ「謌仙粥: 繝槭ャ繝√@縺滓ュ」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝医ョ繧、繝ウ繝繝繧ッ繧ケ (繧シ繝ュ髢句ァ) + 讀懃エ「螟ア謨: ONIG_MISMATCH (< 0) + 繧ィ繝ゥ繝シ: 繧ィ繝ゥ繝シ繧ウ繝シ繝 (< 0) + + 蠑墓焚 + 1 set: regset繧ェ繝悶ず繧ァ繧ッ繝 + 2 str: 讀懃エ「蟇セ雎。譁蟄怜 + 3 end: 讀懃エ「蟇セ雎。譁蟄怜励ョ邨らォッ繧「繝峨Ξ繧ケ + 4 start: 讀懃エ「蟇セ雎。譁蟄怜励ョ讀懃エ「蜈磯ュ菴咲スョ繧「繝峨Ξ繧ケ + 5 range: 讀懃エ「蟇セ雎。譁蟄怜励ョ讀懃エ「邨ゆコ菴咲スョ繧「繝峨Ξ繧ケ + (start <= 謗「邏「縺輔l繧区枚蟄怜 < range) + 6 lead: 螟門エ縺ョ繝ォ繝シ繝苓ヲ∫エ + ONIG_REGSET_POSITION_LEAD (譛蟾ヲ菴咲スョ縺ァ繝槭ャ繝√@縺溽オ先棡繧定ソ斐☆) + ONIG_REGSET_REGEX_LEAD (譛蟾ヲ菴咲スョ縺ァ繝槭ャ繝√@縺溽オ先棡繧定ソ斐☆) + ONIG_REGSET_PRIORITY_TO_REGEX_ORDER (譛蛻昴↓繝槭ャ繝√@縺滓ュ」隕剰。ィ迴セ縺ョ邨先棡繧定ソ斐☆) + 7 option: 讀懃エ「譎ゅが繝励す繝ァ繝ウ + ONIG_OPTION_NOTBOL str縺ョ蜈磯ュ繧定。碁ュ縺翫h縺ウ譁蟄怜怜磯ュ縺ィ逵句★縺輔↑縺 + ONIG_OPTION_NOTEOL end繧定。梧忰縺翫h縺ウ譁蟄怜礼オらォッ縺ィ逵句★縺輔↑縺 + ONIG_OPTION_NOT_BEGIN_STRING str縺ョ蜈磯ュ繧呈枚蟄怜励ョ蜈磯ュ縺ィ逵句★縺輔↑縺 (\A 螟ア謨) + ONIG_OPTION_NOT_END_STRING end繧呈枚蟄怜礼オらォッ縺ィ逵句★縺輔↑縺 (\z, \Z 螟ア謨) + ONIG_OPTION_NOT_BEGIN_POSITION start繧呈、懃エ「髢句ァ倶ス咲スョ縺ィ逵句★縺輔↑縺 (\G 螟ア謨) + 8 mps: OnigMatchParam繧ェ繝悶ず繧ァ繧ッ繝医ョ驟榊 + 9 rmatch_pos: 繝槭ャ繝√@縺滉ス咲スョ繧定ソ斐☆縺溘a縺ョ繧「繝峨Ξ繧ケ (match_address - str) + + +# OnigRegion* onig_region_new(void) + + 繝槭ャ繝鬆伜沺諠蝣ア(region)繧剃ス懈舌☆繧九 + + +# void onig_region_free(OnigRegion* region, int free_self) + + 繝槭ャ繝鬆伜沺諠蝣ア(region)縺ァ菴ソ逕ィ縺輔l縺ヲ縺繧九Γ繝「繝ェ繧定ァ」謾セ縺吶k縲 + + 蠑墓焚 + 1 region: 繝槭ャ繝鬆伜沺諠蝣ア繧ェ繝悶ず繧ァ繧ッ繝 + 2 free_self: [1: region閾ェ霄ォ繧貞性繧√※蜈ィ縺ヲ隗」謾セ, 0: region閾ェ霄ォ縺ッ隗」謾セ縺励↑縺Ь + + +# void onig_region_copy(OnigRegion* to, OnigRegion* from) + + 繝槭ャ繝鬆伜沺諠蝣ア(region)繧定、陬ス縺吶k縲 + + 蠑墓焚 + 1 to: 蟇セ雎。鬆伜沺 + 2 from: 蜈鬆伜沺 + + +# void onig_region_clear(OnigRegion* region) + + 繝槭ャ繝鬆伜沺諠蝣ア(region)縺ョ荳ュ蜻ウ繧偵け繝ェ繧「縺吶k縲 + + 蠑墓焚 + 1 region: 蟇セ雎。鬆伜沺 + + +# int onig_region_resize(OnigRegion* region, int n) + + 繝槭ャ繝鬆伜沺諠蝣ア(region)縺ョ謐慕佐蠑城寔蜷(繧ー繝ォ繝シ繝)謨ー繧貞、画峩縺吶k縲 + + 謌サ繧雁、 + 豁」蟶ク邨ゆコ: ONIG_NORMAL == 0 + 繧ィ繝ゥ繝シ譎: 繧ィ繝ゥ繝シ繧ウ繝シ繝 < 0 + + 蠑墓焚 + 1 region: 蟇セ雎。鬆伜沺 + 2 n: 譁ー縺励>繧オ繧、繧コ + + +# int onig_name_to_group_numbers(regex_t* reg, const UChar* name, const UChar* name_end, + int** num_list) + + 謖螳壹@縺溷錐蜑阪↓蟇セ縺吶k蜷榊燕莉倥″謐慕佐蠑城寔蜷(繧ー繝ォ繝シ繝)縺ョ + 繧ー繝ォ繝シ繝礼分蜿キ繝ェ繧ケ繝医r霑斐☆縲 + 蜷榊燕莉倥″謐慕佐蠑城寔蜷医ッ縲(?....)縺ォ繧医▲縺ヲ螳夂セゥ縺ァ縺阪k縲 + + 謌サ繧雁、 + 豁」蟶ク邨ゆコ: 謖螳壹&繧後◆蜷榊燕縺ォ蟇セ縺吶k繧ー繝ォ繝シ繝玲焚 + (萓 /(?..)(?..)/ ==> 2) + 蜷榊燕縺ォ蟇セ縺吶k繧ー繝ォ繝シ繝励′蟄伜惠縺励↑縺: ONIGERR_UNDEFINED_NAME_REFERENCE + + 蠑墓焚 + 1 reg: 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝 + 2 name: 謐慕佐蠑城寔蜷(繧ー繝ォ繝シ繝)蜷 + 3 name_end: 謐慕佐蠑城寔蜷(繧ー繝ォ繝シ繝)蜷阪ョ邨らォッ繧「繝峨Ξ繧ケ + 4 num_list: 逡ェ蜿キ繝ェ繧ケ繝医r霑斐☆繧「繝峨Ξ繧ケ + + +# int onig_name_to_backref_number(regex_t* reg, const UChar* name, const UChar* name_end, + OnigRegion *region) + + 謖螳壹&繧後◆蜷榊燕縺ョ蠕梧婿蜿らァ(\k)縺ォ蟇セ縺吶k謐慕佐蠑城寔蜷(繧ー繝ォ繝シ繝)縺ョ逡ェ蜿キ繧定ソ斐☆縲 + 蜷榊燕縺ォ蟇セ縺励※縲∬、謨ー縺ョ繝槭ャ繝鬆伜沺縺梧怏蜉ケ縺ァ縺ゅl縺ー縲√◎縺ョ荳ュ縺ョ譛螟ァ縺ョ逡ェ蜿キ繧定ソ斐☆縲 + 蜷榊燕縺ォ蟇セ縺吶k謐慕佐蠑城寔蜷医′荳蛟九@縺九↑縺縺ィ縺阪↓縺ッ縲∝ッセ蠢懊☆繧九槭ャ繝鬆伜沺縺梧怏蜉ケ縺 + 縺ゥ縺縺九↓髢「菫ゅ↑縺上√◎縺ョ逡ェ蜿キ繧定ソ斐☆縲(蠕薙▲縺ヲ縲〉egion縺ォ縺ッNULL繧呈ク。縺励※繧ゅh縺縲) + + 謌サ繧雁、 + 豁」蟶ク邨ゆコ: 逡ェ蜿キ + 繧ィ繝ゥ繝シ譎: 繧ィ繝ゥ繝シ繧ウ繝シ繝 < 0 + + 蠑墓焚 + 1 reg: 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝 + 2 name: 謐慕佐蠑城寔蜷(繧ー繝ォ繝シ繝)蜷 + 3 name_end: 謐慕佐蠑城寔蜷(繧ー繝ォ繝シ繝)蜷阪ョ邨らォッ繧「繝峨Ξ繧ケ + 4 region: search/match邨先棡縺ョ繝槭ャ繝鬆伜沺 + + +# int onig_foreach_name(regex_t* reg, + int (*func)(const UChar*, const UChar*, int,int*,regex_t*,void*), + void* arg) + + 蜈ィ縺ヲ縺ョ蜷榊燕縺ォ蟇セ縺励※繧ウ繝シ繝ォ繝舌ャ繧ッ髢「謨ー蜻シ縺ウ蜃コ縺励r螳溯。後☆繧九 + + 謌サ繧雁、 + 豁」蟶ク邨ゆコ: ONIG_NORMAL == 0 + 繧ィ繝ゥ繝シ譎: 繧ウ繝シ繝ォ繝舌ャ繧ッ髢「謨ー縺ョ謌サ繧雁、 + + 蠑墓焚 + 1 reg: 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝 + 2 func: 繧ウ繝シ繝ォ繝舌ャ繧ッ髢「謨ー + func(name, name_end, , , + reg, arg); + + func縺0莉・螟悶ョ蛟、繧定ソ斐☆縺ィ縲√◎繧御サ・髯阪ョ繧ウ繝シ繝ォ繝舌ャ繧ッ縺ッ陦後↑繧上★縺ォ + 邨ゆコ縺吶k縲 + + 3 arg: func縺ォ蟇セ縺吶k霑ス蜉蠑墓焚 + + +# int onig_number_of_names(regex_t* reg) + + 繝代ち繝シ繝ウ荳ュ縺ァ螳夂セゥ縺輔l縺溷錐蜑阪ョ謨ー繧定ソ斐☆縲 + 荳蛟九ョ蜷榊燕縺ョ螟夐榊ョ夂セゥ縺ッ荳蛟九→逵句★縺吶 + + 蠑墓焚 + 1 reg: 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝 + + +# OnigEncoding onig_get_encoding(regex_t* reg) +# OnigOptionType onig_get_options(regex_t* reg) +# OnigSyntaxType* onig_get_syntax(regex_t* reg) + + 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝医↓蟇セ縺励※縲∝ッセ蠢懊☆繧句、繧定ソ斐☆縲 + + 蠑墓焚 + 1 reg: 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝 + + +# OnigCaseFoldType onig_get_case_fold_flag(regex_t* reg) + + 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝医↓蟇セ縺励※縲…ase_fold_flag蛟、繧定ソ斐☆縲 + 縺薙ョ髢「謨ー縺ッ蟒豁「莠亥ョ(髱樊耳螂ィ)縲 + + 蠑墓焚 + 1 reg: 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝 + + +# int onig_number_of_captures(regex_t* reg) + + 繝代ち繝シ繝ウ荳ュ縺ァ螳夂セゥ縺輔l縺滓黒迯イ繧ー繝ォ繝シ繝励ョ謨ー繧定ソ斐☆縲 + + 蠑墓焚 + 1 reg: 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝 + + +# OnigCallbackEachMatchFunc onig_get_callback_each_match(void) + + ONIG_OPTION_CALLBACK_EACH_MATCH縺ォ蟇セ縺吶k迴セ蝨ィ縺ョ繧ウ繝シ繝ォ繝舌ャ繧ッ髢「謨ー繧定ソ斐☆縲 + + +# int onig_set_callback_each_match(OnigCallbackEachMatchFunc func) + + ONIG_OPTION_CALLBACK_EACH_MATCH縺ォ蟇セ縺吶k繧ウ繝シ繝ォ繝舌ャ繧ッ髢「謨ー繧偵そ繝繝医☆繧九 + 闍・縺湧ULL縺後そ繝繝医&繧後k縺ィ縲√さ繝シ繝ォ繝舌ャ繧ッ縺ッ螳溯。後&繧後↑縺縲 + + 謌サ繧雁、 + 豁」蟶ク邨ゆコ: ONIG_NORMAL == 0 + + 蠑墓焚 + 1 func: 繧ウ繝シ繝ォ繝舌ャ繧ッ髢「謨ー + + +# int onig_number_of_capture_histories(regex_t* reg) + + 繝代ち繝シ繝ウ荳ュ縺ァ螳夂セゥ縺輔l縺滓黒迯イ螻・豁エ(?@...)縺ョ謨ー繧定ソ斐☆縲 + + 菴ソ逕ィ縺吶k譁豕輔〒謐慕佐螻・豁エ讖溯ス縺梧怏蜉ケ(ONIG_SYN_OP2_ATMARK_CAPTURE_HISTORY) + 縺ァ縺ェ縺代l縺ー縲∵黒迯イ螻・豁エ讖溯ス縺ッ菴ソ逕ィ縺ァ縺阪↑縺縲 + + 蠑墓焚 + 1 reg: 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝 + + +# OnigCaptureTreeNode* onig_get_capture_tree(OnigRegion* region) + + 謐慕佐螻・豁エ繝繝シ繧ソ縺ョ繝ォ繝シ繝医ヮ繝シ繝峨r霑斐☆縲 + + 繝槭ャ繝√′螟ア謨励@縺ヲ縺繧句エ蜷医↓縺ッ縲√%縺ョ蛟、縺ッ荳榊ョ壹〒縺ゅk縲 + + 蠑墓焚 + 1 region: 繝槭ャ繝鬆伜沺 + + +# int onig_capture_tree_traverse(OnigRegion* region, int at, + int(*func)(int,int,int,int,int,void*), void* arg) + + 謐慕佐螻・豁エ繝繝シ繧ソ譛ィ繧貞キ。蝗槭@縺ヲ繧ウ繝シ繝ォ繝舌ャ繧ッ縺吶k縲 + + 謌サ繧雁、 + 豁」蟶ク邨ゆコ: ONIG_NORMAL == 0 + 繧ィ繝ゥ繝シ譎: 繧ウ繝シ繝ォ繝舌ャ繧ッ髢「謨ー縺ョ謌サ繧雁、 + + 蠑墓焚 + 1 region: 繝槭ャ繝鬆伜沺 + 2 at: 繧ウ繝シ繝ォ繝舌ャ繧ッ繧定。後↑縺繧ソ繧、繝溘Φ繧ー + + ONIG_TRAVERSE_CALLBACK_AT_FIRST: + 譛蛻昴↓繧ウ繝シ繝ォ繝舌ャ繧ッ縺励※縲∝ュ舌ヮ繝シ繝峨r蟾。蝗 + ONIG_TRAVERSE_CALLBACK_AT_LAST: + 蟄舌ヮ繝シ繝峨r蟾。蝗槭@縺ヲ縲√さ繝シ繝ォ繝舌ャ繧ッ + ONIG_TRAVERSE_CALLBACK_AT_BOTH: + 譛蛻昴↓繧ウ繝シ繝ォ繝舌ャ繧ッ縺励※縲∝ュ舌ヮ繝シ繝峨r蟾。蝗槭∵怙蠕後↓繧ゅ≧荳蠎ヲ繧ウ繝シ繝ォ繝舌ャ繧ッ + + 3 func: 繧ウ繝シ繝ォ繝舌ャ繧ッ髢「謨ー + func縺0莉・螟悶ョ蛟、繧定ソ斐☆縺ィ縲√◎繧御サ・髯阪ョ蟾。蝗槭ッ陦後↑繧上★縺ォ + 邨ゆコ縺吶k縲 + + int func(int group, int beg, int end, int level, int at, + void* arg) + group: 繧ー繝ォ繝シ繝礼分蜿キ + beg: 繝槭ャ繝髢句ァ倶ス咲スョ + end 繝槭ャ繝∫オゆコ菴咲スョ + level: 繝阪せ繝医Ξ繝吶Ν (0縺九i) + at: 繧ウ繝シ繝ォ繝舌ャ繧ッ縺悟他縺ウ蜃コ縺輔l縺溘ち繧、繝溘Φ繧ー + ONIG_TRAVERSE_CALLBACK_AT_FIRST + ONIG_TRAVERSE_CALLBACK_AT_LAST + arg: 霑ス蜉蠑墓焚 + + 4 arg; func縺ォ蟇セ縺吶k霑ス蜉蠑墓焚 + + +# int onig_noname_group_capture_is_active(regex_t* reg) + + 蜷榊燕縺ェ縺怜シ城寔蜷医ョ謐慕佐讖溯ス縺梧怏蜉ケ縺九←縺縺九r霑斐☆縲 + + 謌サ繧雁、 + 譛牙柑: 1 + 辟。蜉ケ: 0 + + 蠑墓焚 + 1 reg: 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝 + + + 繧ェ繝励す繝ァ繝ウ縺ョONIG_OPTION_DONT_CAPTURE_GROUP縺薫N --> 辟。蜉ケ + + 繝代ち繝シ繝ウ縺悟錐蜑阪▽縺榊シ城寔蜷医r菴ソ逕ィ縺励※縺繧 + AND 菴ソ逕ィ譁豕輔〒縲^NIG_SYN_CAPTURE_ONLY_NAMED_GROUP縺薫N + AND 繧ェ繝励す繝ァ繝ウ縺ョONIG_OPTION_CAPTURE_GROUP縺薫FF + --> 辟。蜉ケ + + 荳願ィ倅サ・螟悶ョ蝣エ蜷 --> 譛牙柑 + + +# UChar* onigenc_get_prev_char_head(OnigEncoding enc, const UChar* start, const UChar* s) + + 譁蟄嶺ク蛟句蜑阪ョ譁蟄怜嶺ス咲スョ繧定ソ斐☆縲 + + 蠑墓焚 + 1 enc: 譁蟄励お繝ウ繧ウ繝シ繝繧」繝ウ繧ー + 2 start: 譁蟄怜励ョ蜈磯ュ繧「繝峨Ξ繧ケ + 3 s: 譁蟄怜嶺クュ縺ョ菴咲スョ + + +# UChar* onigenc_get_left_adjust_char_head(OnigEncoding enc, + const UChar* start, const UChar* s) + + 譁蟄励ョ蜈磯ュ繝舌う繝井ス咲スョ縺ォ縺ェ繧九h縺縺ォ蟾ヲ蛛エ縺ォ隱ソ謨エ縺励◆繧「繝峨Ξ繧ケ繧定ソ斐☆縲 + + 蠑墓焚 + 1 enc: 譁蟄励お繝ウ繧ウ繝シ繝繧」繝ウ繧ー + 2 start: 譁蟄怜励ョ蜈磯ュ繧「繝峨Ξ繧ケ + 3 s: 譁蟄怜嶺クュ縺ョ菴咲スョ + + +# UChar* onigenc_get_right_adjust_char_head(OnigEncoding enc, + const UChar* start, const UChar* s) + + 譁蟄励ョ蜈磯ュ繝舌う繝井ス咲スョ縺ォ縺ェ繧九h縺縺ォ蜿ウ蛛エ縺ォ隱ソ謨エ縺励◆繧「繝峨Ξ繧ケ繧定ソ斐☆縲 + + 蠑墓焚 + 1 enc: 譁蟄励お繝ウ繧ウ繝シ繝繧」繝ウ繧ー + 2 start: 譁蟄怜励ョ蜈磯ュ繧「繝峨Ξ繧ケ + 3 s: 譁蟄怜嶺クュ縺ョ菴咲スョ + + +# int onigenc_strlen(OnigEncoding enc, const UChar* s, const UChar* end) + + 譁蟄怜励ョ譁蟄玲焚繧定ソ斐☆縲 + + +# int onigenc_strlen_null(OnigEncoding enc, const UChar* s) + + 譁蟄怜励ョ譁蟄玲焚繧定ソ斐☆縲 + 譁蟄励お繝ウ繧ウ繝シ繝繧」繝ウ繧ー縺ォ蟇セ縺励※縲∽ク肴ュ」縺ェ譁蟄怜励r貂。縺励※縺ッ縺縺代↑縺縲 + + +# int onigenc_str_bytelen_null(OnigEncoding enc, const UChar* s) + + 譁蟄怜励ョ繝舌う繝域焚繧定ソ斐☆縲 + 譁蟄励お繝ウ繧ウ繝シ繝繧」繝ウ繧ー縺ォ蟇セ縺励※縲∽ク肴ュ」縺ェ譁蟄怜励r貂。縺励※縺ッ縺縺代↑縺縲 + + +# int onig_set_default_syntax(OnigSyntaxType* syntax) + + 繝繝輔か繝ォ繝医ョ豁」隕剰。ィ迴セ繝代ち繝シ繝ウ譁豕輔r繧サ繝繝医☆繧九 + + 蠑墓焚 + 1 syntax: 豁」隕剰。ィ迴セ繝代ち繝シ繝ウ譁豕 + + +# void onig_copy_syntax(OnigSyntaxType* to, OnigSyntaxType* from) + + 豁」隕剰。ィ迴セ繝代ち繝シ繝ウ譁豕輔r繧ウ繝斐シ縺吶k縲 + + 蠑墓焚 + 1 to: 蟇セ雎。 + 2 from: 蜈 + + +# unsigned int onig_get_syntax_op(OnigSyntaxType* syntax) +# unsigned int onig_get_syntax_op2(OnigSyntaxType* syntax) +# unsigned int onig_get_syntax_behavior(OnigSyntaxType* syntax) +# OnigOptionType onig_get_syntax_options(OnigSyntaxType* syntax) + +# void onig_set_syntax_op(OnigSyntaxType* syntax, unsigned int op) +# void onig_set_syntax_op2(OnigSyntaxType* syntax, unsigned int op2) +# void onig_set_syntax_behavior(OnigSyntaxType* syntax, unsigned int behavior) +# void onig_set_syntax_options(OnigSyntaxType* syntax, OnigOptionType options) + + 豁」隕剰。ィ迴セ繝代ち繝シ繝ウ譁豕輔ョ隕∫エ繧貞盾辣ァ/蜿門セ励☆繧九 + + 蠑墓焚 + 1 syntax: 豁」隕剰。ィ迴セ繝代ち繝シ繝ウ譁豕 + 2 op, op2, behavior, options: 隕∫エ縺ョ蛟、 + + +# void onig_copy_encoding(OnigEncoding to, OnigEncoding from) + + 譁蟄励お繝ウ繧ウ繝シ繝繧」繝ウ繧ー繧偵さ繝斐シ縺吶k縲 + + 蠑墓焚 + 1 to: 蟇セ雎。 + 2 from: 蜈 + + +# int onig_set_meta_char(OnigSyntaxType* syntax, unsigned int what, + OnigCodePoint code) + + 繝。繧ソ譁蟄励r謖螳壹@縺溘さ繝シ繝峨昴う繝ウ繝亥、縺ォ繧サ繝繝医☆繧九 + ONIG_SYN_OP_VARIABLE_META_CHARACTERS縺梧ュ」隕剰。ィ迴セ繝代ち繝シ繝ウ譁豕輔〒譛牙柑縺ォ + 縺ェ縺」縺ヲ縺縺ェ縺蝣エ蜷医↓縺ッ縲√お繧ケ繧ア繝シ繝玲枚蟄励r髯、縺縺ヲ縲√%縺薙〒謖螳壹@縺溘Γ繧ソ譁蟄励ッ + 讖溯ス縺励↑縺縲(邨霎シ縺ソ縺ョ譁豕輔〒縺ッ譛牙柑縺ォ縺励※縺縺ェ縺縲) + + 豁」蟶ク邨ゆコ謌サ繧雁、: ONIG_NORMAL + + 蠑墓焚 + 1 syntax: 蟇セ雎。譁豕 + 2 what: 繝。繧ソ譁蟄玲ゥ溯ス縺ョ謖螳 + + ONIG_META_CHAR_ESCAPE + ONIG_META_CHAR_ANYCHAR + ONIG_META_CHAR_ANYTIME + ONIG_META_CHAR_ZERO_OR_ONE_TIME + ONIG_META_CHAR_ONE_OR_MORE_TIME + ONIG_META_CHAR_ANYCHAR_ANYTIME + + 3 code: 繝。繧ソ譁蟄励ョ繧ウ繝シ繝峨昴う繝ウ繝 縺セ縺溘ッ ONIG_INEFFECTIVE_META_CHAR. + + +# OnigCaseFoldType onig_get_default_case_fold_flag() + + 繝繝輔か繝ォ繝医ョcase fold繝輔Λ繧ー繧貞叙蠕励☆繧九 + 縺薙ョ髢「謨ー縺ッ蟒豁「莠亥ョ(髱樊耳螂ィ)縲 + + +# int onig_set_default_case_fold_flag(OnigCaseFoldType case_fold_flag) + + 繝繝輔か繝ォ繝医ョcase fold繝輔Λ繧ー繧偵そ繝繝医☆繧九 + 縺薙ョ髢「謨ー縺ッ蟒豁「莠亥ョ(髱樊耳螂ィ)縲 + + 蠑墓焚 + 1 case_fold_flag: case fold繝輔Λ繧ー + + +# unsigned int onig_get_match_stack_limit_size(void) + + 繝槭ャ繝√せ繧ソ繝繧ッ繧オ繧、繧コ縺ョ譛螟ァ蛟、繧定ソ斐☆縲 + (繝繝輔か繝ォ繝: 0 == 辟。蛻カ髯) + + +# int onig_set_match_stack_limit_size(unsigned int size) + + 繝槭ャ繝√せ繧ソ繝繧ッ繧オ繧、繧コ縺ョ譛螟ァ蛟、繧呈欠螳壹☆繧九 + (size = 0: 辟。蛻カ髯) + + 豁」蟶ク邨ゆコ謌サ繧雁、: ONIG_NORMAL + + +# unsigned long onig_get_retry_limit_in_match(void) + + 荳蝗槭ョ繝槭ャ繝√Φ繧ー縺ァ縺ョ繝ェ繝医Λ繧、謨ー縺ョ蛻カ髯仙、繧定ソ斐☆縲 + (繝繝輔か繝ォ繝: 10000000) + + 豁」蟶ク邨ゆコ謌サ繧雁、: 蛻カ髯仙、 + + +# unsigned long onig_get_retry_limit_in_search(void) + + 荳蝗槭ョ讀懃エ「縺ァ縺ョ繝ェ繝医Λ繧、謨ー縺ョ蛻カ髯仙、繧定ソ斐☆縲 + 0縺ッ辟。蛻カ髯舌r諢丞袖縺吶k縲 + (繝繝輔か繝ォ繝: 0) + + 豁」蟶ク邨ゆコ謌サ繧雁、: 蛻カ髯仙、 + + +# int onig_set_retry_limit_in_match(unsigned long limit) + + 荳蝗槭ョ繝槭ャ繝√Φ繧ー蜀縺ァ縺ョ繝ェ繝医Λ繧、謨ー縺ョ蛻カ髯仙、繧呈欠螳壹☆繧九 + シ舌ッ辟。蛻カ髯舌r諢丞袖縺吶k縲 + + 豁」蟶ク邨ゆコ謌サ繧雁、: ONIG_NORMAL + + +# int onig_set_retry_limit_in_search(unsigned long limit) + + 荳蝗槭ョ讀懃エ「縺ァ縺ョ繝ェ繝医Λ繧、謨ー縺ョ蛻カ髯仙、繧偵そ繝繝医☆繧九 + 0縺ッ辟。蛻カ髯舌r諢丞袖縺吶k縲 + (繝繝輔か繝ォ繝: 0) + + 豁」蟶ク邨ゆコ謌サ繧雁、: ONIG_NORMAL + + +# unsigned long onig_get_subexp_call_limit_in_search(void) + + 驛ィ蛻蠑丞他蜃コ縺励ョ蜻シ縺ウ蜃コ縺怜屓謨ー縺ョ蛻カ髯仙、繧定ソ斐☆縲 + (繝繝輔か繝ォ繝: 0:辟。蛻カ髯) + + 豁」蟶ク邨ゆコ謌サ繧雁、: 蛻カ髯仙、 + + +# int onig_set_subexp_call_limit_in_search(unsigned long n) + + 驛ィ蛻蠑丞他蜃コ縺励ョ蜻シ縺ウ蜃コ縺怜屓謨ー縺ョ蛻カ髯仙、繧呈欠螳壹☆繧九 + + 豁」蟶ク邨ゆコ謌サ繧雁、: ONIG_NORMAL + + +# int onig_get_subexp_call_max_nest_level(void) + + 驛ィ蛻蠑丞他蜃コ縺励ョ繝阪せ繝医Ξ繝吶Ν縺ョ譛螟ァ蛟、繧定ソ斐☆縲 + (繝繝輔か繝ォ繝: 24) + + 豁」蟶ク邨ゆコ謌サ繧雁、: 蛻カ髯仙、 + + +# int onig_set_subexp_call_max_nest_level(int max_level) + + 驛ィ蛻蠑丞他蜃コ縺励ョ繝阪せ繝医Ξ繝吶Ν縺ョ譛螟ァ蛟、繧呈欠螳壹☆繧九 + + 豁」蟶ク邨ゆコ謌サ繧雁、: ONIG_NORMAL + + +# OnigCalloutFunc onig_get_progress_callout(void) + + 蜑埼イ譎ゅョ蜀螳ケ縺ョ蜻シ縺ウ蜃コ縺励〒蜻シ縺ウ蜃コ縺輔l繧矩未謨ー繧定ソ斐☆縲 + + +# int onig_set_progress_callout(OnigCalloutFunc f) + + 蜑埼イ譎ゅョ蜀螳ケ縺ョ蜻シ縺ウ蜃コ縺励〒蜻シ縺ウ蜃コ縺輔l繧矩未謨ー繧呈欠螳壹☆繧九 + 繧ゅ@0(NULL)繧呈欠螳壹☆繧九→縲∝燕騾イ譎ゅョ蜀螳ケ縺ョ蜻シ縺ウ蜃コ縺励〒蜻シ縺ウ蜃コ縺励ッ襍キ縺薙i縺ェ縺縲 + + 豁」蟶ク邨ゆコ謌サ繧雁、: ONIG_NORMAL + + +# OnigCalloutFunc onig_get_retraction_callout(void) + + 蠕碁譎ゅョ蜀螳ケ縺ョ蜻シ縺ウ蜃コ縺励〒蜻シ縺ウ蜃コ縺輔l繧矩未謨ー繧定ソ斐☆縲 + + +# int onig_set_retraction_callout(OnigCalloutFunc f) + + 蠕碁譎ゅョ蜀螳ケ縺ョ蜻シ縺ウ蜃コ縺励〒蜻シ縺ウ蜃コ縺輔l繧矩未謨ー繧呈欠螳壹☆繧九 + 繧ゅ@0(NULL)繧呈欠螳壹☆繧九→縲∝セ碁譎ゅョ蜀螳ケ縺ョ蜻シ縺ウ蜃コ縺励〒蜻シ縺ウ蜃コ縺励ッ襍キ縺薙i縺ェ縺縲 + + 豁」蟶ク邨ゆコ謌サ繧雁、: ONIG_NORMAL + + +# int onig_unicode_define_user_property(const char* name, OnigCodePoint* ranges)) + + 譁ー縺励>Unicode繝励Ο繝代ユ繧」繧貞ョ夂セゥ縺吶k縲 + (縺薙ョ髢「謨ー縺ッ繧ケ繝ャ繝繝峨そ繝シ繝輔〒縺ッ縺ェ縺) + + 蠑墓焚 + 1 name: 繝励Ο繝代ユ繧」蜷 (ASCII繧ウ繝シ繝峨ョ縺ソ縲 譁蟄 ' ', '-', '_' 縺ッ辟。隕悶&繧後k縲) + 2 ranges: 繝励Ο繝代ユ繧」繧ウ繝シ繝峨昴う繝ウ繝育ッ蝗イ + (譛蛻昴ョ隕∫エ縺ッ遽蝗イ縺ョ謨ー) + + [num-of-ranges, 1st-range-start, 1st-range-end, 2nd-range-start... ] + + * 縺薙ョ髢「謨ー繧貞他繧薙□蠕後〒縲〉anges繧貞、画峩/遐エ螢翫@縺ェ縺縺薙→ + + 謌サ繧雁、 + 豁」蟶ク邨ゆコ: ONIG_NORMAL == 0 + 繧ィ繝ゥ繝シ譎: 繧ィ繝ゥ繝シ繧ウ繝シ繝 < 0 + + +# unsigned int onig_get_parse_depth_limit(void) + + 蜀榊クー繝代シ繧ケ蜃ヲ逅縺ョ譛螟ァ豺ア縺輔r霑斐☆縲 + (繝繝輔か繝ォ繝: regint.h 縺ァ螳夂セゥ縺輔l縺ヲ縺繧 DEFAULT_PARSE_DEPTH_LIMIT縲ら樟蝨ィ縺ッ 4096) + + +# int onig_set_parse_depth_limit(unsigned int depth) + + 蜀榊クー繝代シ繧ケ蜃ヲ逅縺ョ譛螟ァ豺ア縺輔r謖螳壹☆繧九 + (depth = 0: regint.h 縺ァ螳夂セゥ縺輔l縺溘ョ繝輔か繝ォ繝亥、縺ォ險ュ螳壹☆繧九) + + 豁」蟶ク邨ゆコ謌サ繧雁、: ONIG_NORMAL + + +# int onig_end(void) + + 繝ゥ繧、繝悶Λ繝ェ縺ョ菴ソ逕ィ繧堤オゆコ縺吶k縲 + + 豁」蟶ク邨ゆコ謌サ繧雁、: ONIG_NORMAL + + onig_initialize()繧貞榊コヲ蜻シ縺ウ蜃コ縺励※繧ゅ∽サ・蜑阪↓菴懈舌@縺滓ュ」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝 + 繧剃スソ逕ィ縺吶k縺薙→縺ッ縺ァ縺阪↑縺縲 + + +# const char* onig_version(void) + + 繝舌シ繧ク繝ァ繝ウ譁蟄怜励r霑斐☆縲(萓 "5.0.3") + +// END diff --git a/vendor/oniguruma/oniguruma/doc/CALLOUTS.API b/vendor/oniguruma/oniguruma/doc/CALLOUTS.API new file mode 100644 index 0000000..7ecf6bc --- /dev/null +++ b/vendor/oniguruma/oniguruma/doc/CALLOUTS.API @@ -0,0 +1,397 @@ +Callouts API Version 6.9.7 2021/03/21 + +#include + +(1) Callout functions +(2) Set/Get functions for Callouts of contents +(3) Set functions for Callouts of name +(4) User data +(5) Get values from OnigCalloutArgs +(6) Tag +(7) Callout data (used in callout functions) +(8) Callout data (used in applications) +(9) Miscellaneous functions + + +(1) Callout functions + + type: OnigCalloutFunc + + typedef int (*OnigCalloutFunc)(OnigCalloutArgs* args, void* user_data); + + If 0 (NULL) is set as a callout function value, never called. + + + * Callout function return value (int) + + ONIG_CALLOUT_FAIL (== 1): fail + ONIG_CALLOUT_SUCCESS (== 0): success + less than -1: error code (terminate search/match) + + ONIG_CALLOUT_FAIL/SUCCESS values are ignored in retractions, + because retraction is a part of recovery process after failure. + + * Example of callout function + + extern int always_success(OnigCalloutArgs* args, void* user_data) + { + return ONIG_CALLOUT_SUCCESS; + } + + + +(2) Set/Get functions for Callouts of contents + +# OnigCalloutFunc onig_get_progress_callout(void) + + Get a function for callouts of contents in progress. + + +# int onig_set_progress_callout(OnigCalloutFunc f) + + Set a function for callouts of contents in progress. + This value set in onig_initialize_match_param() as a default + callout function. + + normal return: ONIG_NORMAL + + +# OnigCalloutFunc onig_get_retraction_callout(void) + + Get a function for callouts of contents in retraction (backtrack). + + +# int onig_set_retraction_callout(OnigCalloutFunc f) + + Set a function for callouts of contents in retraction (backtrack). + This value set in onig_initialize_match_param() as a default + callout function. + + normal return: ONIG_NORMAL + + +# int onig_set_progress_callout_of_match_param(OnigMatchParam* mp, OnigCalloutFunc f) + + Set a function for callouts of contents in progress. + + arguments + 1 mp: match-param pointer + 2 f: function + + normal return: ONIG_NORMAL + + +# int onig_set_retraction_callout_of_match_param(OnigMatchParam* mp, OnigCalloutFunc f) + + Set a function for callouts of contents in retraction (backtrack). + + arguments + 1 mp: match-param pointer + 2 f: function + + normal return: ONIG_NORMAL + + + +(3) Set functions for Callouts of name + +# int onig_set_callout_of_name(OnigEncoding enc, OnigCalloutType type, OnigUChar* name, OnigUChar* name_end, int callout_in, OnigCalloutFunc callout, OnigCalloutFunc end_callout, int arg_num, unsigned int arg_types[], int opt_arg_num, OnigValue opt_defaults[]) + + Set a function for callouts of name. + Allowed name string characters: _ A-Z a-z 0-9 (* first character: _ A-Z a-z) + + (enc, name) pair is used as key value to find callout function. + You have to call this function for every encoding used in your applications. + But if enc is ASCII compatible and (enc, name) entry is not found, + then (ASCII, name) entry is used. + Therefore, if you use ASCII compatible encodings only, it is enough to call + this function one time for (ASCII, name). + + arguments + 1 enc: character encoding + 2 type: callout type (currently ONIG_CALLOUT_TYPE_SINGLE only supported) + 3 name: name string address (the string is encoded by enc) + 4 name_end: name string end address + 5 callout_in: direction (ONIG_CALLOUT_IN_PROGRESS/RETRACTION/BOTH) + 6 callout: callout function + 7 end_callout: * not used currently (set 0) + 8 arg_num: number of arguments (*limit by ONIG_CALLOUT_MAX_ARGS_NUM == 4) + 9 arg_types: type array of arguments + 10 opt_arg_num: number of optional arguments + 11 opt_defaults: default values array of optional arguments + + normal return: ONIG_NORMAL + error: + ONIGERR_INVALID_CALLOUT_NAME + ONIGERR_INVALID_ARGUMENT + ONIGERR_INVALID_CALLOUT_ARG + + + +(4) User data + +# int onig_set_callout_user_data_of_match_param(OnigMatchParam* param, void* user_data) + + Set a user_data value which passed as second argument of callout. + + normal return: ONIG_NORMAL + + + +(5) Get values from OnigCalloutArgs + +# int onig_get_callout_num_by_callout_args(OnigCalloutArgs* args) + + Returns callout number of this callout. + "Callout number" is an identifier of callout in a regex pattern. + + +# OnigCalloutIn onig_get_callout_in_by_callout_args(OnigCalloutArgs* args) + + Returns the direction of this callout. + (ONIG_CALLOUT_IN_PROGRESS or ONIG_CALLOUT_IN_RETRACTION) + + +# int onig_get_name_id_by_callout_args(OnigCalloutArgs* args) + + Returns the name identifier of this callout. + If this callout is callout of contents, then returns ONIG_NON_NAME_ID. + + +# const OnigUChar* onig_get_contents_by_callout_args(OnigCalloutArgs* args) + + Returns the contents string of this callout. (NULL terminated string) + If this callout is callout of name, then returns NULL. + + +# const OnigUChar* onig_get_contents_end_by_callout_args(OnigCalloutArgs* args) + + Returns the end of contents string of this callout. + If this callout is callout of name, then returns NULL. + + +# int onig_get_args_num_by_callout_args(OnigCalloutArgs* args) + + Returns the number of args of this callout. + It includes optional arguments that doesn't passed in regex pattern. + If this callout is callout of contents, then returns + ONIGERR_INVALID_ARGUMENT. + + +# int onig_get_passed_args_num_by_callout_args(OnigCalloutArgs* args) + + Returns the number of args that passed really in regex pattern. + If this callout is callout of contents, then returns + ONIGERR_INVALID_ARGUMENT. + + +# int onig_get_arg_by_callout_args(OnigCalloutArgs* args, int index, OnigType* type, OnigValue* val) + + Returns a value and a type of the callout argument. + If this callout is callout of contents, then returns + ONIGERR_INVALID_ARGUMENT. + + normal return: ONIG_NORMAL + + +# const OnigUChar* onig_get_string_by_callout_args(OnigCalloutArgs* args) + + Returns the subject string address. + This is the second argument(str) of onig_search(). + + +# const OnigUChar* onig_get_string_end_by_callout_args(OnigCalloutArgs* args) + + Returns the end address of subject string. + This is the third argument(end) of onig_search(). + + +# const OnigUChar* onig_get_start_by_callout_args(OnigCalloutArgs* args) + + Returns the start address of subject string in current match process. + + +# const OnigUChar* onig_get_right_range_by_callout_args(OnigCalloutArgs* args) + + Returns the right range address of subject string. + + +# const OnigUChar* onig_get_current_by_callout_args(OnigCalloutArgs* args) + + Returns the current address of subject string in current match process. + + +# OnigRegex onig_get_regex_by_callout_args(OnigCalloutArgs* args) + + Returns the regex object address of this callout. + + +# unsigned long onig_get_retry_counter_by_callout_args(OnigCalloutArgs* args) + + Returns the current counter value for retry-limit-in-match. + + + +(6) Tag + + "Tag" is a name assigned to a callout in regexp pattern. + Allowed tag string characters: _ A-Z a-z 0-9 (* first character: _ A-Z a-z) + + +# int onig_callout_tag_is_exist_at_callout_num(OnigRegex reg, int callout_num) + + Returns 1 if tag is assigned for the callout, else returns 0. + + +# int onig_get_callout_num_by_tag(OnigRegex reg, const OnigUChar* tag, const OnigUChar* tag_end) + + Returns the callout number for the tag. + + +# const OnigUChar* onig_get_callout_tag_start(OnigRegex reg, int callout_num) + + Returns the start address of tag string for the callout. + (NULL terminated string) + + +# const OnigUChar* onig_get_callout_tag_end(OnigRegex reg, int callout_num) + + Returns the end address of tag string for the callout. + + + +(7) Callout data (used in callout functions) + + "Callout data" is ONIG_CALLOUT_DATA_SLOT_NUM(5) values area + for each callout in each search process. + Each value area in a callout is indicated by "slot" number (0 - 4). + Callout data are used for any purpose by callout function implementers. + + +# int onig_get_callout_data_by_callout_args(OnigCalloutArgs* args, int callout_num, int slot, OnigType* type, OnigValue* val) + + Returns the callout data value/type for a callout slot indicated by + callout_num/slot. + + ONIG_NORMAL: normal return + ONIG_VALUE_IS_NOT_SET: value is not set / type is ONIG_TYPE_VOID + < 0: error code + + +# int onig_get_callout_data_by_callout_args_self(OnigCalloutArgs* args, int slot, OnigType* type, OnigValue* val) + + Returns self callout data value/type. + + ONIG_NORMAL: normal return + ONIG_VALUE_IS_NOT_SET: value is not set / type is ONIG_TYPE_VOID + < 0: error code + + +# int onig_set_callout_data_by_callout_args(OnigCalloutArgs* args, int callout_num, int slot, OnigType type, OnigValue* val) + + Set the callout data value/type for a callout slot indicated by callout_num/slot. + + ONIG_NORMAL: normal return + < 0: error code + + +# int onig_set_callout_data_by_callout_args_self(OnigCalloutArgs* args, int slot, OnigType type, OnigValue* val) + + Set self callout data value/type for a callout slot indicated by slot. + + ONIG_NORMAL: normal return + < 0: error code + + +# int onig_get_callout_data_by_callout_args_self_dont_clear_old(OnigCalloutArgs* args, int slot, OnigType* type, OnigValue* val) + + This function is almost same as onig_get_callout_data_by_callout_args_self(). + But this function does not clear the value set in the collation position before the current position. (dont_clear_old) + The other onig_get_callout_data_xxxx() function clears the value set in the collation process of the previous position. + + For example, Builtin callout (*TOTAL_COUNT) is implemented by using this + function for accumulate count of all of match processes in a search process. + Builtin callout (*COUNT) returns count in last success match process only, + because it doesn't use this function. + + ONIG_NORMAL: normal return + ONIG_VALUE_IS_NOT_SET: value is not set / type is ONIG_TYPE_VOID + < 0: error code + + +(8) Callout data (used in applications) + +# int onig_get_callout_data(OnigRegex reg, OnigMatchParam* mp, int callout_num, int slot, OnigType* type, OnigValue* val) + + Returns the callout data value/type for a callout slot indicated by + callout_num/slot. + + ONIG_NORMAL: normal return + ONIG_VALUE_IS_NOT_SET: value is not set / type is ONIG_TYPE_VOID + < 0: error code + + +# int onig_get_callout_data_by_tag(OnigRegex reg, OnigMatchParam* mp, const OnigUChar* tag, const OnigUChar* tag_end, int slot, OnigType* type, OnigValue* val) + + Returns the callout data value/type for a callout slot indicated by tag/slot. + + ONIG_NORMAL: normal return + ONIG_VALUE_IS_NOT_SET: value is not set / type is ONIG_TYPE_VOID + < 0: error code + + +# int onig_set_callout_data(OnigRegex reg, OnigMatchParam* mp, int callout_num, int slot, OnigType type, OnigValue* val) + + Set the callout data value/type for a callout slot indicated by callout_num/slot. + + ONIG_NORMAL: normal return + < 0: error code + + +# int onig_set_callout_data_by_tag(OnigRegex reg, OnigMatchParam* mp, const OnigUChar* tag, const OnigUChar* tag_end, int slot, OnigType type, OnigValue* val) + + Set the callout data value/type for a callout slot indicated by tag/slot. + + ONIG_NORMAL: normal return + < 0: error code + + +# int onig_get_callout_data_dont_clear_old(OnigRegex reg, OnigMatchParam* mp, int callout_num, int slot, OnigType* type, OnigValue* val) + + No needs to use this function. + It will be abolished. + + +# int onig_get_callout_data_by_tag_dont_clear_old(regex_t* reg, OnigMatchParam* mp, const UChar* tag, const UChar* tag_end, int slot, OnigType* type, OnigValue* val) + + Returns the callout data value/type for a callout slot indicated by tag/slot. + This function does not clear the value set in the collation position before the current position. (dont_clear_old) + + ONIG_NORMAL: 豁」蟶ク邨ゆコ + ONIG_VALUE_IS_NOT_SET: 蛟、縺梧悴繧サ繝繝 / 蝙九′VOID + < 0: 繧ィ繝ゥ繝シ繧ウ繝シ繝 + + +(9) Miscellaneous functions + +# OnigUChar* onig_get_callout_name_by_name_id(int name_id) + + Returns callout name of the name id. + if invalid name id is passed, return 0. + + +# int onig_get_capture_range_in_callout(OnigCalloutArgs* args, int mem_num, int* begin, int* end) + + Returns current capture range position. + Position is byte length offset from subject string. + For uncaptured mem_num, ONIG_REGION_NOTPOS is set. + + +# int onig_get_used_stack_size_in_callout(OnigCalloutArgs* args, int* used_num, int* used_bytes) + + Returns current used match-stack size. + + used_num: number of match-stack elements + used_bytes: used byte size of match-stack + +//END diff --git a/vendor/oniguruma/oniguruma/doc/CALLOUTS.API.ja b/vendor/oniguruma/oniguruma/doc/CALLOUTS.API.ja new file mode 100644 index 0000000..5dffb89 --- /dev/null +++ b/vendor/oniguruma/oniguruma/doc/CALLOUTS.API.ja @@ -0,0 +1,393 @@ +Callouts API Version 6.9.7 2022/02/04 + +#include + +(1) 蜻シ縺ウ蜃コ縺鈴未謨ー +(2) 蜀螳ケ縺ョ蜻シ縺ウ蜃コ縺鈴未謨ー縺ョ險ュ螳/蜿門セ +(3) 蜷榊燕縺ョ蜻シ縺ウ蜃コ縺鈴未謨ー縺ョ險ュ螳 +(4) 繝ヲ繝シ繧カ繝繝シ繧ソ +(5) OnigCalloutArgs縺九i縺ョ蛟、縺ョ蜿門セ +(6) 蜷肴惆 +(7) 蜻シ縺ウ蜃コ縺励ョ繝シ繧ソ (蜻シ縺ウ蜃コ縺鈴未謨ー蜀縺九i菴ソ逕ィ縺輔l繧) +(8) 蜻シ縺ウ蜃コ縺励ョ繝シ繧ソ (繧「繝励Μ繧ア繝シ繧キ繝ァ繝ウ縺九i菴ソ逕ィ縺輔l繧) +(9) 縺昴ョ莉悶ョ髢「謨ー + + +(1) 蜻シ縺ウ蜃コ縺鈴未謨ー + + 蝙: OnigCalloutFunc + + typedef int (*OnigCalloutFunc)(OnigCalloutArgs* args, void* user_data); + + 闍・縺怜他縺ウ蜃コ縺鈴未謨ー縺ィ縺励※シ(NULL)縺後そ繝繝医&繧後k縺ィ縲∝他縺ー繧後k縺薙→縺ッ縺ェ縺 + + + * 蜻シ縺ウ蜃コ縺鈴未謨ー縺ョ謌サ繧雁、 (int) + + ONIG_CALLOUT_FAIL (== 1): 螟ア謨 + ONIG_CALLOUT_SUCCESS (== 0): 謌仙粥 + -1譛ェ貅: 繧ィ繝ゥ繝シ繧ウ繝シ繝 (讀懃エ「/辣ァ蜷医ョ邨ゆコ) + + ONIG_CALLOUT_FAIL/SUCCESS縺ッ縲∝セ碁荳ュ縺ョ蜻シ縺ウ蜃コ縺励〒縺ッ辟。隕悶&繧後k縲 + 蠕碁縺ッ螟ア謨励ョ蝗槫セゥ驕守ィ九↑縺ョ縺ァ縲 + + * 蜻シ縺ウ蜃コ縺鈴未謨ー縺ョ萓 + + extern int always_success(OnigCalloutArgs* args, void* user_data) + { + return ONIG_CALLOUT_SUCCESS; + } + + + +(2) 蜀螳ケ縺ョ蜻シ縺ウ蜃コ縺鈴未謨ー縺ョ險ュ螳/蜿門セ + +# OnigCalloutFunc onig_get_progress_callout(void) + + 蜀螳ケ縺ョ蜻シ縺ウ蜃コ縺鈴未謨ー(蜑埼イ荳ュ)繧定ソ斐☆ + + +# int onig_set_progress_callout(OnigCalloutFunc f) + + 蜀螳ケ縺ョ蜻シ縺ウ蜃コ縺鈴未謨ー(蜑埼イ荳ュ)繧偵そ繝繝医☆繧九 + 縺薙ョ蛟、縺ッonig_initialize_match_param()縺ョ荳ュ縺ァ繝繝輔か繝ォ繝医ョ蜻シ縺ウ蜃コ縺鈴未謨ー縺ィ縺励※ + 繧サ繝繝医&繧後k縲 + + 豁」蟶ク邨ゆコ: ONIG_NORMAL + + +# OnigCalloutFunc onig_get_retraction_callout(void) + + 蜀螳ケ縺ョ蜻シ縺ウ蜃コ縺鈴未謨ー(蠕碁荳ュ)繧定ソ斐☆ + + +# int onig_set_retraction_callout(OnigCalloutFunc f) + + 蜀螳ケ縺ョ蜻シ縺ウ蜃コ縺鈴未謨ー(蠕碁荳ュ)繧偵そ繝繝医☆繧九 + 縺薙ョ蛟、縺ッonig_initialize_match_param()縺ョ荳ュ縺ァ繝繝輔か繝ォ繝医ョ蜻シ縺ウ蜃コ縺鈴未謨ー縺ィ縺励※ + 繧サ繝繝医&繧後k縲 + + 豁」蟶ク邨ゆコ: ONIG_NORMAL + + +# int onig_set_progress_callout_of_match_param(OnigMatchParam* mp, OnigCalloutFunc f) + + 蜀螳ケ縺ョ蜻シ縺ウ蜃コ縺鈴未謨ー(蜑埼イ荳ュ)繧偵そ繝繝医☆繧九 + + 蠑墓焚 + 1 mp: match-param繧「繝峨Ξ繧ケ + 2 f: 髢「謨ー + + 豁」蟶ク邨ゆコ: ONIG_NORMAL + + +# int onig_set_retraction_callout_of_match_param(OnigMatchParam* mp, OnigCalloutFunc f) + + 蜀螳ケ縺ョ蜻シ縺ウ蜃コ縺鈴未謨ー(蠕碁荳ュ)繧偵そ繝繝医☆繧九 + + 蠑墓焚 + 1 mp: match-param繧「繝峨Ξ繧ケ + 2 f: 髢「謨ー + + 豁」蟶ク邨ゆコ: ONIG_NORMAL + + + +(3) 蜷榊燕縺ョ蜻シ縺ウ蜃コ縺鈴未謨ー縺ョ險ュ螳 + +# int onig_set_callout_of_name(OnigEncoding enc, OnigCalloutType type, OnigUChar* name, OnigUChar* name_end, int callout_in, OnigCalloutFunc callout, OnigCalloutFunc end_callout, int arg_num, unsigned int arg_types[], int opt_arg_num, OnigValue opt_defaults[]) + + 蜷榊燕縺ョ蜻シ縺ウ蜃コ縺鈴未謨ー繧偵そ繝繝医☆繧九 + 蜷榊燕縺ォ險ア縺輔l繧区枚蟄: _ A-Z a-z 0-9 (* 譛蛻昴ョ譁蟄: _ A-Z a-z) + + (enc, name)縺ョ繝壹い縺後∝他縺ウ蜃コ縺鈴未謨ー繧定ヲ九▽縺代k縺溘a縺ョ繧ュ繝シ縺ィ縺励※菴ソ逕ィ縺輔l繧九 + 繧「繝励Μ繧ア繝シ繧キ繝ァ繝ウ縺ァ菴ソ逕ィ縺輔l繧句推繧ィ繝ウ繧ウ繝シ繝繧」繝ウ繧ー縺ォ蟇セ縺励※縺薙ョ髢「謨ー繧貞他縺カ蠢隕√′縺ゅk縲 + 縺励°縺苓凶縺容nc繧ィ繝ウ繧ウ繝シ繝繧」繝ウ繧ー縺窟SCII莠呈鋤縺ァ縺ゅj縲(enc, name)縺ォ蟇セ縺吶k繧ィ繝ウ繝医Μ縺 + 隕九▽縺九i縺ェ縺蝣エ蜷医↓縺ッ縲(ASCII, name)繧ィ繝ウ繝医Μ縺悟盾辣ァ縺輔l繧九 + 蠕薙▲縺ヲ縲∬凶縺輸SCII莠呈鋤繧ィ繝ウ繧ウ繝シ繝繧」繝ウ繧ー縺ョ縺ソ菴ソ逕ィ縺励※縺繧句エ蜷医↓縺ッ縲√%縺ョ髢「謨ー繧(ASCII, name) + 縺ォ縺、縺縺ヲ荳蝗槫他縺ケ縺ー蜊∝縺ァ縺ゅk縲 + + 蠑墓焚 + 1 enc: 譁蟄励お繝ウ繧ウ繝シ繝繧」繝ウ繧ー + 2 type: 蜻シ縺ウ蜃コ縺怜梛 (迴セ蝨ィ縺ッ ONIG_CALLOUT_TYPE_SINGLE 縺ョ縺ソ繧オ繝昴シ繝) + 3 name: 蜷榊燕縺ョ繧「繝峨Ξ繧ケ (enc縺ァ繧ィ繝ウ繧ウ繝シ繝繧」繝ウ繧ー縺輔l縺ヲ縺繧区枚蟄怜) + 4 name_end: 蜷榊燕縺ョ邨らォッ繧「繝峨Ξ繧ケ + 5 callout_in: 譁ケ蜷代ヵ繝ゥ繧ー (ONIG_CALLOUT_IN_PROGRESS/RETRACTION/BOTH) + 6 callout: 蜻シ縺ウ蜃コ縺鈴未謨ー + 7 end_callout: *縺セ縺菴ソ逕ィ縺励※縺縺ェ縺 (シ舌r繧サ繝繝) + 8 arg_num: 蠑墓焚縺ョ謨ー (* 譛螟ァ蛟、 ONIG_CALLOUT_MAX_ARGS_NUM == 4) + 9 arg_types: 蠑墓焚縺ョ蝙九ョ驟榊 + 10 opt_arg_num: 繧ェ繝励す繝ァ繝ウ蠑墓焚縺ョ謨ー + 11 opt_defaults: 繧ェ繝励す繝ァ繝ウ蠑墓焚縺ョ繝繝輔か繝ォ繝亥、 + + 豁」蟶ク邨ゆコ: ONIG_NORMAL + error: + ONIGERR_INVALID_CALLOUT_NAME + ONIGERR_INVALID_ARGUMENT + ONIGERR_INVALID_CALLOUT_ARG + + + +(4) 繝ヲ繝シ繧カ繝繝シ繧ソ + +# int onig_set_callout_user_data_of_match_param(OnigMatchParam* param, void* user_data) + + 蜻シ縺ウ蜃コ縺鈴未謨ー縺ョ蠑墓焚縺ィ縺励※貂。縺輔l繧九Θ繝シ繧カ繝繝シ繧ソ繧偵そ繝繝医☆繧九 + + 豁」蟶ク邨ゆコ: ONIG_NORMAL + + + +(5) OnigCalloutArgs縺九i縺ョ蛟、縺ョ蜿門セ + +# int onig_get_callout_num_by_callout_args(OnigCalloutArgs* args) + + 縺薙ョ蜻シ縺ウ蜃コ縺励ョ蜻シ縺ウ蜃コ縺礼分蜿キ繧定ソ斐☆縲 + "蜻シ縺ウ蜃コ縺礼分蜿キ"縺ィ縺ッ縲∵ュ」隕剰。ィ迴セ繝代ち繝シ繝ウ縺ョ荳ュ縺ョ蜻シ縺ウ蜃コ縺励↓蟇セ縺吶k隴伜挨蟄舌〒縺ゅk縲 + + +# OnigCalloutIn onig_get_callout_in_by_callout_args(OnigCalloutArgs* args) + + 縺薙ョ蜻シ縺ウ蜃コ縺励′襍キ縺阪◆譎ゅョ譁ケ蜷(蜑埼イ荳ュ/蠕碁荳ュ)繧定ソ斐☆縲 + (ONIG_CALLOUT_IN_PROGRESS 縺 ONIG_CALLOUT_IN_RETRACTION) + + +# int onig_get_name_id_by_callout_args(OnigCalloutArgs* args) + + 縺薙ョ蜻シ縺ウ蜃コ縺励ョ蜷榊燕(name)縺ョ隴伜挨蟄舌r霑斐☆縲 + 闍・縺励%縺ョ蜻シ縺ウ蜃コ縺励′蜀螳ケ縺ョ蜻シ縺ウ蜃コ縺励ョ縺ィ縺阪↓縺ッ縲^NIG_NON_NAME_ID縺瑚ソ斐&繧後k縲 + + +# const OnigUChar* onig_get_contents_by_callout_args(OnigCalloutArgs* args) + + 縺薙ョ蜻シ縺ウ蜃コ縺励ョ蜀螳ケ譁蟄怜(NULL邨らォッ縺ゅj)繧定ソ斐☆縲 + 闍・縺励%縺ョ蜻シ縺ウ蜃コ縺励′蜷榊燕縺ョ蜻シ縺ウ蜃コ縺励ョ縺ィ縺阪↓縺ッ縲¨ULL繧定ソ斐☆縲 + + +# const OnigUChar* onig_get_contents_end_by_callout_args(OnigCalloutArgs* args) + + 縺薙ョ蜻シ縺ウ蜃コ縺励ョ蜀螳ケ(contents)縺ョ邨らォッ繧定ソ斐☆縲 + 闍・縺励%縺ョ蜻シ縺ウ蜃コ縺励′蜷榊燕縺ョ蜻シ縺ウ蜃コ縺励ョ縺ィ縺阪↓縺ッ縲¨ULL繧定ソ斐☆縲 + + +# int onig_get_args_num_by_callout_args(OnigCalloutArgs* args) + + 縺薙ョ蜻シ縺ウ蜃コ縺励ョ蠑墓焚縺ョ謨ー繧定ソ斐☆縲 + 豁」隕剰。ィ迴セ繝代ち繝シ繝ウ縺ョ荳ュ縺ァ貂。縺輔l縺ェ縺九▲縺溘が繝励す繝ァ繝ウ蠑墓焚繧ょ性繧縲 + 闍・縺励%縺ョ蜻シ縺ウ蜃コ縺励′蜀螳ケ縺ョ蜻シ縺ウ蜃コ縺励ョ縺ィ縺阪↓縺ッ縲^NIGERR_INVALID_ARGUMENT縺瑚ソ斐&繧後k縲 + + +# int onig_get_passed_args_num_by_callout_args(OnigCalloutArgs* args) + + 縺薙ョ蜻シ縺ウ蜃コ縺励ョ譛ャ蠖薙↓貂。縺輔l縺溷シ墓焚縺ョ謨ー繧定ソ斐☆縲 + 闍・縺励%縺ョ蜻シ縺ウ蜃コ縺励′蜀螳ケ縺ョ蜻シ縺ウ蜃コ縺励ョ縺ィ縺阪↓縺ッ縲^NIGERR_INVALID_ARGUMENT縺瑚ソ斐&繧後k縲 + + +# int onig_get_arg_by_callout_args(OnigCalloutArgs* args, int index, OnigType* type, OnigValue* val) + + 縺薙ョ蜻シ縺ウ蜃コ縺励ョ荳蛟九ョ蠑墓焚縺ョ蛟、縺ィ蝙九r霑斐☆縲 + 闍・縺励%縺ョ蜻シ縺ウ蜃コ縺励′蜀螳ケ縺ョ蜻シ縺ウ蜃コ縺励ョ縺ィ縺阪↓縺ッ縲^NIGERR_INVALID_ARGUMENT縺瑚ソ斐&繧後k縲 + + 豁」蟶ク邨ゆコ: ONIG_NORMAL + + +# const OnigUChar* onig_get_string_by_callout_args(OnigCalloutArgs* args) + + 蟇セ雎。譁蟄怜励ョ繧「繝峨Ξ繧ケ繧定ソ斐☆縲 + onig_search()縺ョ莠檎分逶ョ縺ョ蠑墓焚(str)縺ァ縺ゅk縲 + + +# const OnigUChar* onig_get_string_end_by_callout_args(OnigCalloutArgs* args) + + 蟇セ雎。譁蟄怜励ョ邨らォッ繧「繝峨Ξ繧ケ繧定ソ斐☆縲 + onig_search()縺ョ荳臥分逶ョ縺ョ蠑墓焚(end)縺ァ縺ゅk縲 + + +# const OnigUChar* onig_get_start_by_callout_args(OnigCalloutArgs* args) + + 蟇セ雎。譁蟄怜励ョ迴セ蝨ィ縺ョ辣ァ蜷亥ヲ逅髢句ァ九い繝峨Ξ繧ケ繧定ソ斐☆縲 + + +# const OnigUChar* onig_get_right_range_by_callout_args(OnigCalloutArgs* args) + + 蟇セ雎。譁蟄怜励ョ迴セ蝨ィ縺ョ辣ァ蜷育ッ蝗イ繧「繝峨Ξ繧ケ繧定ソ斐☆縲 + + +# const OnigUChar* onig_get_current_by_callout_args(OnigCalloutArgs* args) + + 蟇セ雎。譁蟄怜励ョ迴セ蝨ィ縺ョ辣ァ蜷井ス咲スョ繧「繝峨Ξ繧ケ繧定ソ斐☆縲 + + +# OnigRegex onig_get_regex_by_callout_args(OnigCalloutArgs* args) + + 縺薙ョ蜻シ縺ウ蜃コ縺励ョ豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝医ョ繧「繝峨Ξ繧ケ繧定ソ斐☆縲 + + +# unsigned long onig_get_retry_counter_by_callout_args(OnigCalloutArgs* args) + + retry-limit-in-match縺ョ縺溘a縺ョ繝ェ繝医Λ繧、繧ォ繧ヲ繝ウ繧ソ縺ョ迴セ蝨ィ蛟、繧定ソ斐☆縲 + + + +(6) 蜷肴惆 + + "Tag" (蜷肴惆)縺ィ縺ッ縲∵ュ」隕剰。ィ迴セ繝代ち繝シ繝ウ縺ョ荳ュ縺ァ蜻シ縺ウ蜃コ縺励↓蜑イ繧雁ス薙※繧峨l縺溷錐蜑阪〒縺ゅk縲 + tag譁蟄怜励↓菴ソ逕ィ縺ァ縺阪k譁蟄: _ A-Z a-z 0-9 (* 蜈磯ュ縺ョ譁蟄: _ A-Z a-z) + + +# int onig_callout_tag_is_exist_at_callout_num(OnigRegex reg, int callout_num) + + 縺昴ョ蜻シ縺ウ蜃コ縺励↓tag縺悟牡繧雁ス薙※繧峨l縺ヲ縺繧後ー1繧定ソ斐☆縲√◎縺縺ァ縺ェ縺代l縺ー0繧定ソ斐☆縲 + + +# const OnigUChar* onig_get_callout_tag_start(OnigRegex reg, int callout_num) + + 縺昴ョ蜻シ縺ウ蜃コ縺励↓蟇セ縺吶ktag譁蟄怜(NULL邨らォッ縺ゅj)縺ョ蜈磯ュ繧「繝峨Ξ繧ケ繧定ソ斐☆縲 + + +# const OnigUChar* onig_get_callout_tag_end(OnigRegex reg, int callout_num) + + 縺昴ョ蜻シ縺ウ蜃コ縺励↓蟇セ縺吶ktag譁蟄怜励ョ邨らォッ繧「繝峨Ξ繧ケ繧定ソ斐☆縲 + + +# int onig_get_callout_num_by_tag(OnigRegex reg, const OnigUChar* tag, const OnigUChar* tag_end) + + 縺昴ョtag縺ォ蟇セ縺吶k蜻シ縺ウ蜃コ縺礼分蜿キ繧定ソ斐☆縲 + + + +(7) 蜻シ縺ウ蜃コ縺励ョ繝シ繧ソ (蜻シ縺ウ蜃コ縺鈴未謨ー蜀縺九i菴ソ逕ィ縺輔l繧) + + "蜻シ縺ウ蜃コ縺励ョ繝シ繧ソ" (callout data)縺ィ縺ッ縲 + 縺昴l縺槭l縺ョ蜻シ縺ウ蜃コ縺励↓蟇セ縺励※縺昴l縺槭l縺ョ讀懃エ「蜃ヲ逅縺ョ荳ュ縺ァ蜑イ繧雁ス薙※繧峨l縺溘 + ONIG_CALLOUT_DATA_SLOT_NUM(== 5)蛟九ョ蛟、縺ョ鬆伜沺縺ァ縺ゅk縲 + 荳蛟九ョ蜻シ縺ウ蜃コ縺励↓蟇セ縺吶k蜷蛟、縺ョ鬆伜沺縺ッ縲"繧ケ繝ュ繝繝"(slot)逡ェ蜿キ(0 - 4)縺ォ繧医▲縺ヲ遉コ縺輔l繧九 + 蜻シ縺ウ蜃コ縺励ョ繝シ繧ソ縺ッ蜻シ縺ウ蜃コ縺鈴未謨ー縺ョ螳溯」閠縺ォ繧医▲縺ヲ莉サ諢上ョ逶ョ逧縺ォ菴ソ逕ィ縺輔l繧九 + + +# int onig_get_callout_data_by_callout_args(OnigCalloutArgs* args, int callout_num, int slot, OnigType* type, OnigValue* val) + + callout_num/slot縺ォ繧医▲縺ヲ遉コ縺輔l縺溷他縺ウ蜃コ縺励せ繝ュ繝繝医↓蟇セ縺吶k繝繝シ繧ソ縺ョ蛟、/蝙九r霑斐☆縲 + + ONIG_NORMAL: 豁」蟶ク邨ゆコ + ONIG_VALUE_IS_NOT_SET: 蛟、縺梧悴繧サ繝繝 / 蝙九′VOID + < 0: 繧ィ繝ゥ繝シ繧ウ繝シ繝 + + +# int onig_get_callout_data_by_callout_args_self(OnigCalloutArgs* args, int slot, OnigType* type, OnigValue* val) + + 閾ェ蛻閾ェ霄ォ縺ョ蜻シ縺ウ蜃コ縺励ョslot縺ォ繧医▲縺ヲ遉コ縺輔l縺溘せ繝ュ繝繝医↓蟇セ縺吶k繝繝シ繧ソ縺ョ蛟、/蝙九r霑斐☆縲 + + ONIG_NORMAL: 豁」蟶ク邨ゆコ + ONIG_VALUE_IS_NOT_SET: 蛟、縺梧悴繧サ繝繝 / 蝙九′VOID + < 0: 繧ィ繝ゥ繝シ繧ウ繝シ繝 + + +# int onig_set_callout_data_by_callout_args(OnigCalloutArgs* args, int callout_num, int slot, OnigType type, OnigValue* val) + + callout_num/slot縺ォ繧医▲縺ヲ遉コ縺輔l縺溷他縺ウ蜃コ縺励せ繝ュ繝繝医↓蟇セ縺吶k蛟、/蝙九r繧サ繝繝医☆繧九 + + ONIG_NORMAL: 豁」蟶ク邨ゆコ + < 0: 繧ィ繝ゥ繝シ繧ウ繝シ繝 + + +# int onig_set_callout_data_by_callout_args_self(OnigCalloutArgs* args, int slot, OnigType type, OnigValue* val) + + 閾ェ蛻閾ェ霄ォ縺ョ蜻シ縺ウ蜃コ縺励ョslot縺ォ繧医▲縺ヲ遉コ縺輔l縺溘せ繝ュ繝繝医↓蟇セ縺吶k蛟、/蝙九r繧サ繝繝医☆繧九 + + ONIG_NORMAL: 豁」蟶ク邨ゆコ + < 0: 繧ィ繝ゥ繝シ繧ウ繝シ繝 + + +# int onig_get_callout_data_by_callout_args_self_dont_clear_old(OnigCalloutArgs* args, int slot, OnigType* type, OnigValue* val) + + 縺薙ョ髢「謨ー縺ッ縲{nig_get_callout_data_by_callout_args_self()縺ィ縺サ縺シ蜷後§縺ァ縺ゅk縲 + 縺励°縺励%縺ョ髢「謨ー縺ッ縲∫樟蝨ィ縺ョ菴咲スョ繧医j莉・蜑阪ョ辣ァ蜷井ス咲スョ縺ョ荳ュ縺ァ繧サ繝繝医&繧後◆蛟、繧偵け繝ェ繧「縺励↑縺縲(dont_clear_old) + 莉悶ョonig_get_callout_data_xxxx()髢「謨ー縺ッ縲∽サ・蜑阪ョ菴咲スョ縺ョ辣ァ蜷亥ヲ逅縺ョ荳ュ縺ァ繧サ繝繝医&繧後◆蛟、繧偵け繝ェ繧「縺吶k縲 + + 萓九∴縺ー縲∫オ縺ソ霎シ縺ソ蜻シ縺ウ蜃コ縺(*TOTAL_COUNT)縺ッ縲∵、懃エ「蜃ヲ逅縺ョ荳ュ縺ョ蜈ィ縺ヲ縺ョ辣ァ蜷亥ヲ逅縺ョ遨咲ョ励き繧ヲ繝ウ繝医r + 蠕励k縺溘a縺ォ縺薙ョ髢「謨ー繧剃スソ逕ィ縺励※螳溯」縺輔l縺ヲ縺繧九 + 邨縺ソ霎シ繧蜻シ縺ウ蜃コ縺(*COUNT)縺ッ縲√%縺ョ髢「謨ー繧剃スソ逕ィ縺励↑縺縺ョ縺ァ縲∵怙蠕後ョ謌仙粥縺励◆辣ァ蜷亥ヲ逅縺縺代ョ + 繧ォ繧ヲ繝ウ繝医r霑斐☆縲 + + ONIG_NORMAL: 豁」蟶ク邨ゆコ + ONIG_VALUE_IS_NOT_SET: 蛟、縺梧悴繧サ繝繝 / 蝙九′VOID + < 0: 繧ィ繝ゥ繝シ繧ウ繝シ繝 + + +(8) 蜻シ縺ウ蜃コ縺励ョ繝シ繧ソ (繧「繝励Μ繧ア繝シ繧キ繝ァ繝ウ縺九i菴ソ逕ィ縺輔l繧) + +# int onig_get_callout_data(OnigRegex reg, OnigMatchParam* mp, int callout_num, int slot, OnigType* type, OnigValue* val) + + callout_num/slot縺ォ繧医▲縺ヲ遉コ縺輔l縺溷他縺ウ蜃コ縺励せ繝ュ繝繝医↓蟇セ縺吶k繝繝シ繧ソ縺ョ蛟、/蝙九r霑斐☆縲 + + ONIG_NORMAL: 豁」蟶ク邨ゆコ + ONIG_VALUE_IS_NOT_SET: 蛟、縺梧悴繧サ繝繝 / 蝙九′VOID + < 0: 繧ィ繝ゥ繝シ繧ウ繝シ繝 + + +# int onig_get_callout_data_by_tag(OnigRegex reg, OnigMatchParam* mp, const OnigUChar* tag, const OnigUChar* tag_end, int slot, OnigType* type, OnigValue* val) + + tag/slot縺ォ繧医▲縺ヲ遉コ縺輔l縺溷他縺ウ蜃コ縺励せ繝ュ繝繝医↓蟇セ縺吶k繝繝シ繧ソ縺ョ蛟、/蝙九r霑斐☆縲 + + ONIG_NORMAL: 豁」蟶ク邨ゆコ + ONIG_VALUE_IS_NOT_SET: 蛟、縺梧悴繧サ繝繝 / 蝙九′VOID + < 0: 繧ィ繝ゥ繝シ繧ウ繝シ繝 + + +# int onig_set_callout_data(OnigRegex reg, OnigMatchParam* mp, int callout_num, int slot, OnigType type, OnigValue* val) + + callout_num/slot縺ォ繧医▲縺ヲ遉コ縺輔l縺溷他縺ウ蜃コ縺励せ繝ュ繝繝医↓蟇セ縺吶k蛟、/蝙九r繧サ繝繝医☆繧九 + + ONIG_NORMAL: 豁」蟶ク邨ゆコ + < 0: 繧ィ繝ゥ繝シ繧ウ繝シ繝 + + +# int onig_set_callout_data_by_tag(OnigRegex reg, OnigMatchParam* mp, const OnigUChar* tag, const OnigUChar* tag_end, int slot, OnigType type, OnigValue* val) + + tag/slot縺ォ繧医▲縺ヲ遉コ縺輔l縺溷他縺ウ蜃コ縺励せ繝ュ繝繝医↓蟇セ縺吶k蛟、/蝙九r繧サ繝繝医☆繧九 + + ONIG_NORMAL: 豁」蟶ク邨ゆコ + < 0: 繧ィ繝ゥ繝シ繧ウ繝シ繝 + + +# int onig_get_callout_data_dont_clear_old(OnigRegex reg, OnigMatchParam* mp, int callout_num, int slot, OnigType* type, OnigValue* val) + + 縺薙ョ髢「謨ー繧剃スソ逕ィ縺吶k蠢隕√ッ縺ェ縺縺ィ諤昴o繧後k縲 + 蟒豁「莠亥ョ壹 + + +# int onig_get_callout_data_by_tag_dont_clear_old(regex_t* reg, OnigMatchParam* mp, const UChar* tag, const UChar* tag_end, int slot, OnigType* type, OnigValue* val) + + tag/slot縺ォ繧医▲縺ヲ遉コ縺輔l縺溷他縺ウ蜃コ縺励せ繝ュ繝繝医↓蟇セ縺吶k繝繝シ繧ソ縺ョ蛟、/蝙九r霑斐☆縲 + 縺薙ョ髢「謨ー縺ッ縲∫樟蝨ィ縺ョ菴咲スョ繧医j莉・蜑阪ョ辣ァ蜷井ス咲スョ縺ョ荳ュ縺ァ繧サ繝繝医&繧後◆蛟、繧偵け繝ェ繧「縺励↑縺縲 + (dont_clear_old) + + ONIG_NORMAL: 豁」蟶ク邨ゆコ + ONIG_VALUE_IS_NOT_SET: 蛟、縺梧悴繧サ繝繝 / 蝙九′VOID + < 0: 繧ィ繝ゥ繝シ繧ウ繝シ繝 + + +(9) 縺昴ョ莉悶ョ髢「謨ー + +# OnigUChar* onig_get_callout_name_by_name_id(int name_id) + + 蜷榊燕縺ョ隴伜挨蟄舌↓蟇セ縺吶k蜷榊燕繧定ソ斐☆縲 + 荳肴ュ」縺ェ隴伜挨蟄舌′貂。縺輔l縺溷エ蜷医↓縺ッシ舌r霑斐☆縲 + + +# int onig_get_capture_range_in_callout(OnigCalloutArgs* args, int mem_num, int* begin, int* end) + + 迴セ蝨ィ縺ョ謐慕佐遽蝗イ繧定ソ斐☆縲 + 菴咲スョ縺ッ縲∝ッセ雎。譁蟄怜励↓蟇セ縺吶k繝舌う繝亥腰菴阪〒陦ィ縺輔l繧九 + 譛ェ謐慕佐縺ョmem_num縺ォ蟇セ縺励※縺ッ縲^NIG_REGION_NOTPOS縺後そ繝繝医&繧後k縲 + + +# int onig_get_used_stack_size_in_callout(OnigCalloutArgs* args, int* used_num, int* used_bytes) + + 迴セ蝨ィ菴ソ逕ィ縺輔l縺ヲ縺繧狗ァ蜷亥ヲ逅逕ィ繧ケ繧ソ繝繧ッ繧オ繧、繧コ繧定ソ斐☆縲 + + used_num: 隕∫エ謨ー + used_bytes: 繝舌う繝域焚 + +//END diff --git a/vendor/oniguruma/oniguruma/doc/CALLOUTS.BUILTIN b/vendor/oniguruma/oniguruma/doc/CALLOUTS.BUILTIN new file mode 100644 index 0000000..3c3c40b --- /dev/null +++ b/vendor/oniguruma/oniguruma/doc/CALLOUTS.BUILTIN @@ -0,0 +1,104 @@ +CALLOUTS.BUILTIN 2024/07/04 + + +* FAIL (progress) + + (*FAIL) + + Always fail. + + +* MISMATCH (progress) + + (*MISMATCH) + + Terminates Match process. + Continues Search process. + + +* ERROR (progress) + + (*ERROR{n::LONG}) + + Terminates Search/Match process. + + Return value is the argument 'n'. (The value must be less than -1) + 'n' is an optional argument. (default value is ONIG_ABORT) + + +* MAX (progress/retraction) + + (*MAX{n::LONG/TAG, c::CHAR}) + + Restricts the maximum count of success(default), progress or retraction. + If 'n' type is tag, slot 0 value of the tag are used. + Depends on 'c' argument, the slot 0 value changes. + 'c' is an optional argument, default value is 'X'. + + (* success count = progress count - retraction count) + + + ex. "(?:(*COUNT[T]{X})a)*(?:(*MAX{T})c)*" + + [callout data] + slot 0: '>': progress count, '<': retraction count, 'X': success count (default) + + +* COUNT (progress/retraction) + + (*COUNT{c::CHAR}) + + Counter. + Depends on 'c' argument, the slot 0 value changes. + 'c' is an optional argument, default value is '>'. + + [callout data] + slot 0: '>': progress count (default), '<': retraction count, 'X': success count + slot 1: progress count + slot 2: retraction count + + ** If option ONIG_OPTION_FIND_LONGEST or ONIG_OPTION_FIND_NOT_EMPTY is used, + counts are not accurate. + + +* TOTAL_COUNT (progress/retraction) + + (*TOTAL_COUNT{c::CHAR}) + + It's the almost same as COUNT. + But the counts are integrated in a search process. + 'c' is an optional argument, default value is '>'. + + [callout data] + slot 0: '>': progress count (default), '<': retraction count, 'X': success count + slot 1: progress count + slot 2: retraction count + + ** If option ONIG_OPTION_FIND_LONGEST or ONIG_OPTION_FIND_NOT_EMPTY is used, + counts are not accurate. + + +* CMP (progress) + + (*CMP{x::TAG/LONG, op::STRING, y::TAG/LONG}) + + Compares x value and y value with op operator. + If x and y types are tag, slot 0 value of the tag are used. + + op: '==', '!=', '>', '<', '>=', '<=' + + ex. "(?:(*MAX[TA]{7})a|(*MAX[TB]{5})b)*(*CMP{TA,>=,4})" + + [callout data] + slot 0: op value (enum OP_CMP in src/regexec.c) + + +* SKIP (progress) + + (*SKIP) + + Advance the position where the current matching fails and the next search + begins to the current position. + It has no effect on the current matching. + +//END diff --git a/vendor/oniguruma/oniguruma/doc/CALLOUTS.BUILTIN.ja b/vendor/oniguruma/oniguruma/doc/CALLOUTS.BUILTIN.ja new file mode 100644 index 0000000..dabadcd --- /dev/null +++ b/vendor/oniguruma/oniguruma/doc/CALLOUTS.BUILTIN.ja @@ -0,0 +1,101 @@ +CALLOUTS.BUILTIN.ja 2024/07/04 + + +* FAIL (蜑埼イ) + + (*FAIL) + + 蟶ク縺ォ螟ア謨励☆繧 + + +* MISMATCH (蜑埼イ) + + (*MISMATCH) + + 辣ァ蜷医r荳ュ豁「縺吶k + 讀懃エ「縺ッ邯咏カ壹☆繧 + + +* ERROR (蜑埼イ) + + (*ERROR{n::LONG}) + + 讀懃エ「/辣ァ蜷医r荳ュ豁「縺吶k + 謌サ繧雁、縺ッ蠑墓焚'n'縺ョ蛟、縲(-1繧医j蟆上&縺雋縺ョ蛟、縺ァ縺ェ縺代l縺ー縺ェ繧峨↑縺) + 'n'縺ッ繧ェ繝励す繝ァ繝ウ蠑墓焚縺ァ縲√ョ繝輔か繝ォ繝亥、縺ッONIG_ABORT + + +* MAX (蜑埼イ/蠕碁) + + (*MAX{n::LONG/TAG, c::CHAR}) + + 謌仙粥(繝繝輔か繝ォ繝)縲∝燕騾イ縺セ縺溘ッ蠕碁蝗樊焚繧貞宛髯舌☆繧 + 'n'縺卦AG縺ョ縺ィ縺阪ッ縲√◎縺ョTAG縺ョcallout縺ョslot 0縺ョ蛟、縺御スソ逕ィ縺輔l繧 + 'c'蠑墓焚縺ョ蛟、縺ォ繧医▲縺ヲ縲《lot 0縺ョ蛟、縺悟、牙喧縺吶k + 'c'縺ッ繧ェ繝励す繝ァ繝ウ蠑墓焚縺ァ縲√ョ繝輔か繝ォ繝亥、縺ッ'X' + + 萓: "(?:(*COUNT[T]{X})a)*(?:(*MAX{T})c)*" + + [callout data] + slot 0: '>': 蜑埼イ蝗樊焚, '<': 蠕碁蝗樊焚, 'X': 謌仙粥蝗樊焚(繝繝輔か繝ォ繝) + + +* COUNT (蜑埼イ/蠕碁) + + (*COUNT{c::CHAR}) + + 繧ォ繧ヲ繝ウ繧ソ + 'c'蠑墓焚縺ョ蛟、縺ォ繧医▲縺ヲ縲《lot 0縺ョ蛟、縺悟、牙喧縺吶k + 'c'縺ッ繧ェ繝励す繝ァ繝ウ蠑墓焚縺ァ縲√ョ繝輔か繝ォ繝亥、縺ッ'>' + + [callout data] + slot 0: '>': 蜑埼イ蝗樊焚(繝繝輔か繝ォ繝), '<': 蠕碁蝗樊焚, 'X': 謌仙粥蝗樊焚 + slot 1: 蜑埼イ蝗樊焚 + slot 2: 蠕碁蝗樊焚 + + (* 謌仙粥蝗樊焚 = 蜑埼イ蝗樊焚 - 蠕碁蝗樊焚) + + ** ONIG_OPTION_FIND_LONGEST 縺セ縺溘ッ ONIG_OPTION_FIND_NOT_EMPTY 縺御スソ逕ィ縺輔l繧九→ + 豁」遒コ縺ェ蜍穂ス懊′縺ァ縺阪↑縺上↑繧 + + +* TOTAL_COUNT (蜑埼イ/蠕碁) + + (*TOTAL_COUNT{c::CHAR}) + + 縺薙l縺ッCOUNT縺ィ縺サ縺ィ繧薙←蜷後§ + 縺励°縺励√き繧ヲ繝ウ繝医′讀懃エ「驕守ィ九〒遨咲ョ励&繧後k + 'c'縺ッ繧ェ繝励す繝ァ繝ウ蠑墓焚縺ァ縲√ョ繝輔か繝ォ繝亥、縺ッ'>' + + [callout data] + slot 0: '>': 蜑埼イ蝗樊焚(繝繝輔か繝ォ繝), '<': 蠕碁蝗樊焚, 'X': 謌仙粥蝗樊焚 + slot 1: 蜑埼イ蝗樊焚 + slot 2: 蠕碁蝗樊焚 + + ** ONIG_OPTION_FIND_LONGEST 縺セ縺溘ッ ONIG_OPTION_FIND_NOT_EMPTY 縺御スソ逕ィ縺輔l繧九→ + 豁」遒コ縺ェ蜍穂ス懊′縺ァ縺阪↑縺上↑繧 + + +* CMP (蜑埼イ) + + (*CMP{x::TAG/LONG, op::STRING, y::TAG/LONG}) + + x縺ョ蛟、縺ィy縺ョ蛟、繧弛p貍皮ョ怜ュ舌〒豈碑シ縺吶k + x, y縺卦AG縺ョ縺ィ縺阪↓縺ッ縺昴ョcallout縺ョslot 0縺ョ蛟、縺悟盾辣ァ縺輔l繧 + + op: '==', '!=', '>', '<', '>=', '<=' + + 萓: "(?:(*MAX[TA]{7})a|(*MAX[TB]{5})b)*(*CMP{TA,>=,4})" + + [callout data] + slot 0: op蛟、 (src/regexec.c 縺ョ荳ュ縺ョ enum OP_CMP) + + +* SKIP (蜑埼イ) + + (*SKIP) + + 迴セ蝨ィ縺ョ繝槭ャ繝√Φ繧ー縺悟、ア謨励@縺ヲ谺。縺ョ讀懃エ「繧帝幕蟋九☆繧倶ス咲スョ繧偵∫樟蝨ィ菴咲スョ縺セ縺ァ蜑埼イ縺輔○繧 + 迴セ蝨ィ縺ョ繝槭ャ繝√Φ繧ー縺ォ縺ッ菴輔ョ蠖ア髻ソ繧ゆク弱∴縺ェ縺 + +//END diff --git a/vendor/oniguruma/oniguruma/doc/FAQ b/vendor/oniguruma/oniguruma/doc/FAQ new file mode 100644 index 0000000..dfbd7fa --- /dev/null +++ b/vendor/oniguruma/oniguruma/doc/FAQ @@ -0,0 +1,12 @@ +FAQ 2006/11/14 + +1. Longest match + + You can execute the longest match by using ONIG_OPTION_FIND_LONGEST option + in onig_new(). + +2. Mailing list + + There is no mailing list for Oniguruma. + +// END diff --git a/vendor/oniguruma/oniguruma/doc/FAQ.ja b/vendor/oniguruma/oniguruma/doc/FAQ.ja new file mode 100644 index 0000000..2df4880 --- /dev/null +++ b/vendor/oniguruma/oniguruma/doc/FAQ.ja @@ -0,0 +1,22 @@ +FAQ 2022/02/04 + +1. 譛髟キ繝槭ャ繝 + + onig_new()縺ョ荳ュ縺ァ縲^NIG_OPTION_FIND_LONGEST繧ェ繝励す繝ァ繝ウ + 繧剃スソ逕ィ縺吶l縺ー譛髟キ繝槭ャ繝√↓縺ェ繧九 + + +2. CR + LF + + DOS縺ョ謾ケ陦(CR(0x0d) + LF(0x0a)縺ョ騾」邯) + + regenc.h縺ョ荳ュ縺ョ縲∽サ・荳九ョ驛ィ蛻繧呈怏蜉ケ縺ォ縺吶k縲 + + /* #define USE_CRNL_AS_LINE_TERMINATOR */ + + +3. 繝。繝シ繝ェ繝ウ繧ー繝ェ繧ケ繝 + + 鬯シ霆翫↓髢「縺吶k繝。繝シ繝ェ繝ウ繧ー繝ェ繧ケ繝医ッ蟄伜惠縺励↑縺縲 + +//END diff --git a/vendor/oniguruma/oniguruma/doc/RE b/vendor/oniguruma/oniguruma/doc/RE new file mode 100644 index 0000000..f459ba3 --- /dev/null +++ b/vendor/oniguruma/oniguruma/doc/RE @@ -0,0 +1,595 @@ +Oniguruma Regular Expressions Version 6.9.9 2024/06/10 + +syntax: ONIG_SYNTAX_ONIGURUMA (default syntax) + + +1. Syntax elements + + \ escape (enable or disable meta character) + | alternation + (...) group + [...] character class + + +2. Characters + + \t horizontal tab (0x09) + \v vertical tab (0x0B) + \n newline (line feed) (0x0A) + \r carriage return (0x0D) + \b backspace (0x08) + \f form feed (0x0C) + \a bell (0x07) + \e escape (0x1B) + \nnn octal char (encoded byte value) + \xHH hexadecimal char (encoded byte value) + \x{7HHHHHHH} (1-8 digits) hexadecimal char (code point value) + \o{17777777777} (1-11 digits) octal char (code point value) + \uHHHH hexadecimal char (code point value) + \cx control char (code point value) + \C-x control char (code point value) + \M-x meta (x|0x80) (code point value) + \M-\C-x meta control char (code point value) + + (* \b as backspace is effective in character class only) + + +2.1 Code point sequences + + Hexadecimal code point (1-8 digits) + \x{7HHHHHHH 7HHHHHHH ... 7HHHHHHH} + + Octal code point (1-11 digits) + \o{17777777777 17777777777 ... 17777777777} + + +3. Character types + + . any character (except newline) + + \w word character + + Not Unicode: + alphanumeric, "_" and multibyte char. + + Unicode: + General_Category -- (Letter|Mark|Number|Connector_Punctuation) + + \W non-word char + + \s whitespace char + + Not Unicode: + \t, \n, \v, \f, \r, \x20 + + Unicode case: + U+0009, U+000A, U+000B, U+000C, U+000D, U+0085(NEL), + General_Category -- Line_Separator + -- Paragraph_Separator + -- Space_Separator + + \S non-whitespace char + + \d decimal digit char + + Unicode: General_Category -- Decimal_Number + + \D non-decimal-digit char + + \h hexadecimal digit char [0-9a-fA-F] + + \H non-hexdigit char + + \R general newline (* can't be used in character-class) + "\r\n" or \n,\v,\f,\r (* but doesn't backtrack from \r\n to \r) + + Unicode case: + "\r\n" or \n,\v,\f,\r or U+0085, U+2028, U+2029 + + \N negative newline (?-m:.) + + \O true anychar (?m:.) (* original function) + + \X Text Segment \X === (?>\O(?:\Y\O)*) + + The meaning of this operator changes depending on the setting of + the option (?y{..}). + + \X doesn't check whether matching start position is boundary or not. + Please write as \y\X if you want to ensure it. + + [Extended Grapheme Cluster mode] (default) + Unicode case: + See [Unicode Standard Annex #29: http://unicode.org/reports/tr29/] + + Not Unicode case: \X === (?>\r\n|\O) + + [Word mode] + Currently, this mode is supported in Unicode only. + See [Unicode Standard Annex #29: http://unicode.org/reports/tr29/] + + + Character Property + + * \p{property-name} + * \p{^property-name} (negative) + * \P{property-name} (negative) + + property-name: + + + works on all encodings + Alnum, Alpha, Blank, Cntrl, Digit, Graph, Lower, + Print, Punct, Space, Upper, XDigit, Word, ASCII + + + works on EUC_JP, Shift_JIS + Hiragana, Katakana + + + works on UTF8, UTF16, UTF32 + See doc/UNICODE_PROPERTIES. + + + +4. Quantifier + + greedy + + ? 1 or 0 times + * 0 or more times + + 1 or more times + {n,m} (n <= m) at least n but no more than m times + {n,} at least n times + {,n} at least 0 but no more than n times ({0,n}) + {n} n times + + + reluctant + + ?? 0 or 1 times + *? 0 or more times + +? 1 or more times + {n,m}? (n <= m) at least n but not more than m times + {n,}? at least n times + {,n}? at least 0 but not more than n times (== {0,n}?) + + {n}? is reluctant operator in ONIG_SYNTAX_JAVA and ONIG_SYNTAX_PERL only. + (In that case, it doesn't make sense to write so.) + In default syntax, /a{n}?/ === /(?:a{n})?/ + + + possessive (greedy and does not backtrack once match) + + ?+ 1 or 0 times + *+ 0 or more times + ++ 1 or more times + {n,m} (n > m) at least m but not more than n times + + {n,m}+, {n,}+, {n}+ are possessive operators in ONIG_SYNTAX_JAVA and + ONIG_SYNTAX_PERL only. + + ex. /a*+/ === /(?>a*)/ + + +5. Anchors + + ^ beginning of the line + $ end of the line + \b word boundary + \B non-word boundary + + \A beginning of string + \Z end of string, or before newline at the end + \z end of string + \G where the current search attempt begins + \K keep (keep start position of the result string) + + + \y Text Segment boundary + \Y Text Segment non-boundary + + The meaning of these operators(\y, \Y) changes depending on the setting + of the option (?y{..}). + + [Extended Grapheme Cluster mode] (default) + Unicode case: + See [Unicode Standard Annex #29: http://unicode.org/reports/tr29/] + + Not Unicode: + All positions except between \r and \n. + + [Word mode] + Currently, this mode is supported in Unicode only. + See [Unicode Standard Annex #29: http://unicode.org/reports/tr29/] + + + +6. Character class + + ^... negative class (lowest precedence) + x-y range from x to y + [...] set (character class in character class) + ..&&.. intersection (low precedence, only higher than ^) + + ex. [a-w&&[^c-g]z] ==> ([a-w] AND ([^c-g] OR z)) ==> [abh-w] + + * If you want to use '[', '-', or ']' as a normal character + in character class, you should escape them with '\'. + + + POSIX bracket ([:xxxxx:], negate [:^xxxxx:]) + + Not Unicode Case: + + alnum alphabet or digit char + alpha alphabet + ascii code value: [0 - 127] + blank \t, \x20 + cntrl + digit 0-9 + graph include all of multibyte encoded characters + lower + print include all of multibyte encoded characters + punct + space \t, \n, \v, \f, \r, \x20 + upper + xdigit 0-9, a-f, A-F + word alphanumeric, "_" and multibyte characters + + + Unicode Case: + + alnum Alphabetic | Decimal_Number + alpha Alphabetic + ascii U+0000 - U+007F + blank Space_Separator | U+0009 + cntrl U+0000 - U+001F, U+007F - U+009F + digit Decimal_Number + graph ^White_Space && ^[[:cntrl:]] && ^Unassigned && ^Surrogate + lower Lowercase + print [[:graph:]] | Space_Separator + punct Punctuation | Symbol + space White_Space + upper Uppercase + xdigit U+0030 - U+0039 | U+0041 - U+0046 | U+0061 - U+0066 + (0-9, a-f, A-F) + word Alphabetic | Mark | Decimal_Number | Connector_Punctuation + + + +7. Extended groups + + (?#...) comment + + (?imxWDSPy-imxWDSP:subexp) option on/off for subexp + + i: ignore case + m: multi-line (dot (.) also matches newline) + x: extended form + W: ASCII only word (\w, \p{Word}, [[:word:]]) + ASCII only word bound (\b) + D: ASCII only digit (\d, \p{Digit}, [[:digit:]]) + S: ASCII only space (\s, \p{Space}, [[:space:]]) + P: ASCII only POSIX properties (includes W,D,S) + (alnum, alpha, blank, cntrl, digit, graph, + lower, print, punct, space, upper, xdigit, word) + + y{?}: Text Segment mode + This option changes the meaning of \X, \y, \Y. + Currently, this option is supported in Unicode only. + + y{g}: Extended Grapheme Cluster mode (default) + y{w}: Word mode + See [Unicode Standard Annex #29] + + (?imxWDSPy-imxWDSP) isolated option + + * It makes a group to the next ')' or end of the pattern. + /ab(?i)c|def|gh/ == /ab(?i:c|def|gh)/ + + * (?i) option has no effect on word types (\w, \p{Word}). However, if the word types are used within a character class, it is valid. But, this would only be a concern when word types are used with the (?W) option. + + + /(?CIL).../, /(?CIL:...)/ whole option + + This option must be placed in a position that + affects the entire regular expression. + + C: ONIG_OPTION_DONT_CAPTURE_GROUP + I: ONIG_OPTION_IGNORECASE_IS_ASCII + L: ONIG_OPTION_FIND_LONGEST + + (?:subexp) non-capturing group + (subexp) capturing group + + (?=subexp) look-ahead + (?!subexp) negative look-ahead + + (?<=subexp) look-behind + (?subexp) atomic group + no backtracks in subexp. + + (?subexp), (?'name'subexp) + define named group + (Each character of the name must be a word character.) + + Not only a name but a number is assigned like a capturing + group. + + Assigning the same name to two or more subexps is allowed. + + + + + * Callouts of contents + (?{...contents...}) callout in progress + (?{...contents...}D) D is a direction flag char + D = 'X': in progress and retraction + '<': in retraction only + '>': in progress only + (?{...contents...}[tag]) tag assigned + (?{...contents...}[tag]D) + + * Escape characters have no effects in contents. + * contents is not allowed to start with '{'. + + (?{{{...contents...}}}) n times continuations '}' in contents is allowed in + (n+1) times continuations {{{...}}}. + + Allowed tag string characters: _ A-Z a-z 0-9 (* first character: _ A-Z a-z) + + + * Callouts of name + (*name) + (*name{args...}) with args + (*name[tag]) tag assigned + (*name[tag]{args...}) + + Allowed name string characters: _ A-Z a-z 0-9 (* first character: _ A-Z a-z) + Allowed tag string characters: _ A-Z a-z 0-9 (* first character: _ A-Z a-z) + + + + + (?~absent) Absent repeater (* proposed by Tanaka Akira) + This works like .* (more precisely \O*), but it is + limited by the range that does not include the string + match with . + This is a written abbreviation of (?~|(?:absent)|\O*). + \O* is used as a repeater. + + (?~|absent|exp) Absent expression (* original) + This works like "exp", but it is limited by the range + that does not include the string match with . + + ex. (?~|345|\d*) "12345678" ==> "12", "1", "" + + (?~|absent) Absent stopper (* original) + After passed this operator, string right range is limited + at the point that does not include the string match with + . + + (?~|) Range clear + Clear the effects caused by Absent stoppers. + + * Nested Absent functions are not supported and the behavior + is undefined. + + + + + (?(condition_exp)then_exp|else_exp) if-then-else + (?(condition_exp)then_exp) if-then + + condition_exp can be a backreference number/name or a normal + regular expression. + When condition_exp is a backreference number/name, both then_exp and + else_exp can be omitted. + Then it works as a backreference validity checker. + + [ Backreference validity checker ] (* original) + + (?(n)), (?(-n)), (?(+n)), (?(n+level)) ... + (?()), (?('-n')), (?(<+n>)) ... + (?()), (?('name')), (?()) ... + + + +8. Backreferences + + When we say "backreference a group," it actually means, "re-match the same + text matched by the subexp in that group." + + \n \k \k'n' (n >= 1) backreference the nth group in the regexp + \k<-n> \k'-n' (n >= 1) backreference the nth group counting + backwards from the referring position + \k<+n> \k'+n' (n >= 1) backreference the nth group counting + forwards from the referring position + \k \k'name' backreference a group with the specified name + + When backreferencing with a name that is assigned to more than one groups, + the last group with the name is checked first, if not matched then the + previous one with the name, and so on, until there is a match. + + * Backreference by number is forbidden if any named group is defined and + ONIG_OPTION_CAPTURE_GROUP is not set. + + + backreference with recursion level + + (n >= 1, level >= 0) + + \k \k'n+level' + \k \k'n-level' + + \k \k'name+level' + \k \k'name-level' + + Destine a group on the recursion level relative to the referring position. + + ex 1. + + /\A(?|.|(?:(?.)\g\k))\z/.match("reee") + /\A(?|.|(?:(?.)\g\k))\z/.match("reer") + + \k refers to the (?.) on the same recursion level with it. + + ex 2. + + r = Regexp.compile(<<'__REGEXP__'.strip, Regexp::EXTENDED) + (? \g \g* \g ){0} + (? < \g \s* > ){0} + (? [a-zA-Z_:]+ ){0} + (? [^<&]+ (\g | [^<&]+)* ){0} + (? >){0} + \g + __REGEXP__ + + p r.match("fbbbf").captures + + +9. Subexp calls ("Tanaka Akira special") (* original function) + + When we say "call a group," it actually means, "re-execute the subexp in + that group." + + \g \g'n' (n >= 1) call the nth group + \g<0> \g'0' call zero (call the total regexp) + \g<-n> \g'-n' (n >= 1) call the nth group counting backwards from + the calling position + \g<+n> \g'+n' (n >= 1) call the nth group counting forwards from + the calling position + \g \g'name' call the group with the specified name + + * Left-most recursive calls are not allowed. + + ex. (?a|\gb) => error + (?a|b\gc) => OK + + * Calls with a name that is assigned to more than one groups are not + allowed. + + * Call by number is forbidden if any named group is defined and + ONIG_OPTION_CAPTURE_GROUP is not set. + + * The option status of the called group is always effective. + + ex. /(?-i:\g)(?i:(?a)){0}/.match("A") + + +10. Captured group + + Behavior of an unnamed group (...) changes with the following conditions. + (But named group is not changed.) + + case 1. /.../ (named group is not used, no option) + + (...) is treated as a capturing group. + + case 2. /.../g (named group is not used, 'g' option) + + (...) is treated as a non-capturing group (?:...). + + case 3. /..(?..)../ (named group is used, no option) + + (...) is treated as a non-capturing group. + numbered-backref/call is not allowed. + + case 4. /..(?..)../G (named group is used, 'G' option) + + (...) is treated as a capturing group. + numbered-backref/call is allowed. + + where + g: ONIG_OPTION_DONT_CAPTURE_GROUP + G: ONIG_OPTION_CAPTURE_GROUP + + ('g' and 'G' options are argued in ruby-dev ML) + + + +----------------------------- +A-1. Syntax-dependent options + + + ONIG_SYNTAX_ONIGURUMA + (?m): dot (.) also matches newline + + + ONIG_SYNTAX_PERL and ONIG_SYNTAX_JAVA + (?s): dot (.) also matches newline + (?m): ^ matches after newline, $ matches before newline + + +A-2. Original extensions + + + hexadecimal digit char type \h, \H + + true anychar \O + + text segment boundary \y, \Y + + backreference validity checker (?(...)) + + named group (?...), (?'name'...) + + named backref \k + + subexp call \g, \g + + absent expression (?~|...|...) + + absent stopper (?~|...) + + +A-3. Missing features compared with perl 5.8.0 + + + \N{name} + + \l,\u,\L,\U,\C + + (??{code}) + + * \Q...\E + This is effective on ONIG_SYNTAX_PERL and ONIG_SYNTAX_JAVA. + + +A-4. Differences with Japanized GNU regex(version 0.12) of Ruby 1.8 + + + add character property (\p{property}, \P{property}) + + add hexadecimal digit char type (\h, \H) + + add look-behind + (?<=fixed-width-pattern), (?>]/ in EUC-JP encoding. + + effect range of isolated option is to next ')'. + ex. (?:(?i)a|b) is interpreted as (?:(?i:a|b)), not (?:(?i:a)|b). + + isolated option is not transparent to previous pattern. + ex. a(?i)* is a syntax error pattern. + + allowed unpaired left brace as a normal character. + ex. /{/, /({)/, /a{2,3/ etc... + + negative POSIX bracket [:^xxxx:] is supported. + + POSIX bracket [:ascii:] is added. + + repeat of look-ahead is not allowed. + ex. /(?=a)*/, /(?!b){5}/ + + Ignore case option is effective to escape sequence. + ex. /\x61/i =~ "A" + + In the range quantifier, the number of the minimum is optional. + /a{,n}/ == /a{0,n}/ + The omission of both minimum and maximum values is not allowed. + /a{,}/ + + /{n}?/ is not a reluctant quantifier. + /a{n}?/ == /(?:a{n})?/ + + invalid back reference is checked and raises error. + /\1/, /(a)\2/ + + Zero-width match in an infinite loop stops the repeat, + then changes of the capture group status are checked as stop condition. + /(?:()|())*\1\2/ =~ "" + /(?:\1a|())*/ =~ "a" + +// END diff --git a/vendor/oniguruma/oniguruma/doc/RE.ja b/vendor/oniguruma/oniguruma/doc/RE.ja new file mode 100644 index 0000000..af8af58 --- /dev/null +++ b/vendor/oniguruma/oniguruma/doc/RE.ja @@ -0,0 +1,602 @@ +鬯シ霆 豁」隕剰。ィ迴セ Version 6.9.9 2024/06/10 + +菴ソ逕ィ譁豕: ONIG_SYNTAX_ONIGURUMA (譌「螳壼、) + + +1. 蝓コ譛ャ隕∫エ + + \ 騾驕ソ菫ョ鬟セ (繧ィ繧ケ繧ア繝シ繝) 豁」隕剰。ィ迴セ險伜捷縺ョ譛牙柑/辟。蜉ケ縺ョ蛻カ蠕。 + | 驕ク謚槫ュ + (...) 蠑城寔蜷 (繧ー繝ォ繝シ繝) + [...] 譁蟄鈴寔蜷 (譁蟄励け繝ゥ繧ケ) + + +2. 譁蟄 + + \t 豌エ蟷ウ繧ソ繝 (0x09) + \v 蝙ら峩繧ソ繝 (0x0B) + \n 謾ケ陦 (0x0A) + \r 蠕ゥ蟶ー (0x0D) + \b 蠕碁遨コ逋ス (0x08) + \f 謾ケ鬆 (0x0C) + \a 髏 (0x07) + \e 騾驕ソ菫ョ鬟セ (0x1B) + \nnn 蜈ォ騾イ謨ー陦ィ迴セ 隨ヲ蜿キ蛹悶ヰ繧、繝亥、 + \xHH 蜊∝ュ騾イ謨ー陦ィ迴セ 隨ヲ蜿キ蛹悶ヰ繧、繝亥、 + \x{7HHHHHHH} (1-8譯) 諡。蠑オ蜊∝ュ騾イ謨ー陦ィ迴セ 繧ウ繝シ繝峨昴う繝ウ繝亥、 + \o{17777777777} (1-11譯) 諡。蠑オ蜈ォ騾イ謨ー陦ィ迴セ 繧ウ繝シ繝峨昴う繝ウ繝亥、 + \uHHHH 諡。蠑オ蜊∝ュ騾イ謨ー陦ィ迴セ 繧ウ繝シ繝峨昴う繝ウ繝亥、 + \cx 蛻カ蠕。譁蟄苓。ィ迴セ 繧ウ繝シ繝峨昴う繝ウ繝亥、 + \C-x 蛻カ蠕。譁蟄苓。ィ迴セ 繧ウ繝シ繝峨昴う繝ウ繝亥、 + \M-x 雜 (x|0x80) 繧ウ繝シ繝峨昴う繝ウ繝亥、 + \M-\C-x 雜 + 蛻カ蠕。譁蟄苓。ィ迴セ 繧ウ繝シ繝峨昴う繝ウ繝亥、 + + 窶サ \b縺ッ縲∵枚蟄鈴寔蜷亥縺ァ縺ョ縺ソ譛牙柑 + + +2.1 繧ウ繝シ繝峨昴う繝ウ繝磯」邯夊。ィ險 + + 蜊∝ュ騾イ謨ー陦ィ迴セ繧ウ繝シ繝峨昴う繝ウ繝 (1-8譯) + \x{7HHHHHHH 7HHHHHHH ... 7HHHHHHH} + + 蜈ォ騾イ謨ー陦ィ迴セ繧ウ繝シ繝峨昴う繝ウ繝 (1-11譯) + \o{17777777777 17777777777 ... 17777777777} + + +3. 譁蟄礼ィョ + + . 莉サ諢乗枚蟄 (謾ケ陦後r髯、縺: 繧ェ繝励す繝ァ繝ウ縺ォ萓晏ュ) + + \w 蜊倩ェ樊ァ区先枚蟄 + + Unicode莉・螟悶ョ蝣エ蜷: + 闍ア謨ー蟄, "_" 縺翫h縺ウ 螟壹ヰ繧、繝域枚蟄励 + + Unicode縺ョ蝣エ蜷: + General_Category -- (Letter|Mark|Number|Connector_Punctuation) + + \W 髱槫腰隱樊ァ区先枚蟄 + + \s 遨コ逋ス譁蟄 + + Unicode莉・螟悶ョ蝣エ蜷: + \t, \n, \v, \f, \r, \x20 + + Unicode縺ョ蝣エ蜷: + U+0009, U+000A, U+000B, U+000C, U+000D, U+0085(NEL), + General_Category -- Line_Separator + -- Paragraph_Separator + -- Space_Separator + + \S 髱樒ゥコ逋ス譁蟄 + + \d 10騾イ謨ー蟄 + + Unicode縺ョ蝣エ蜷: General_Category -- Decimal_Number + + \D 髱10騾イ謨ー蟄 + + \h 16騾イ謨ー蟄 [0-9a-fA-F] + + \H 髱16騾イ謨ー蟄 + + \R 豎取隼陦 (* 譁蟄鈴寔蜷医ョ荳ュ縺ァ縺ッ菴ソ逕ィ縺ァ縺阪↑縺) + "\r\n" or \n,\v,\f,\r (* 菴縺 \r\n縺九i\r縺ォ縺ッ繝舌ャ繧ッ繝医Λ繝繧ッ縺励↑縺) + + Unicode縺ョ蝣エ蜷: + "\r\n" or \n,\v,\f,\r or U+0085, U+2028, U+2029 + + \N 髱樊隼陦梧枚蟄 (?-m:.) + + \O 逵滉ササ諢乗枚蟄 (?m:.) (* 蜴滉ス) + + \X 譁遶蛹コ蛻 \X === (?>\O(?:\Y\O)*) + + 縺薙ョ貍皮ョ怜ュ舌ョ諢丞袖縺ッ縲√が繝励す繝ァ繝ウ (?y{..})縺ョ險ュ螳壹↓繧医▲縺ヲ螟牙喧縺吶k縲 + + \X縺ッ辣ァ蜷医ョ髢句ァ倶ス咲スョ縺悟玄蛻縺ョ蠅逡後°縺ゥ縺縺九r遒コ隱阪@縺ェ縺縲 + 縺昴l繧堤「コ螳溘↓縺励◆縺代l縺ー縲―y\X縺ィ譖ク縺代ー濶ッ縺縲 + + [諡。蠑オ譖ク險倡エ謌ソ-迥カ諷九ョ縺ィ縺江 (繝繝輔か繝ォ繝) + Unicode縺ョ蝣エ蜷: + 蜿らァ [Unicode Standard Annex #29: http://unicode.org/reports/tr29/] + + Unicode莉・螟悶ョ蝣エ蜷: \X === (?>\r\n|\O) + + [蜊倩ェ-迥カ諷九ョ縺ィ縺江 + 迴セ蝨ィ縲ゞnicode縺励°繧オ繝昴シ繝医@縺ヲ縺縺ェ縺縲 + 蜿らァ [Unicode Standard Annex #29: http://unicode.org/reports/tr29/] + + + Character Property + + * \p{property-name} + * \p{^property-name} (negative) + * \P{property-name} (negative) + + property-name: + + + 蜈ィ縺ヲ縺ョ繧ィ繝ウ繧ウ繝シ繝繧」繝ウ繧ー縺ァ譛牙柑 + Alnum, Alpha, Blank, Cntrl, Digit, Graph, Lower, + Print, Punct, Space, Upper, XDigit, Word, ASCII, + + + EUC-JP, Shift_JIS縺ァ譛牙柑 + Hiragana, Katakana + + + UTF8, UTF16, UTF32縺ァ譛牙柑 + doc/UNICODE_PROPERTIES蜿らァ + + + +4. 驥乗欠螳壼ュ + + 谺イ蠑オ繧 + + ? 荳蝗槭∪縺溘ッ髮カ蝗 + * 髮カ蝗樔サ・荳 + + 荳蝗樔サ・荳 + {n,m} (n <= m) n蝗樔サ・荳 縺九▽ m蝗樔サ・荳 + {n,} n蝗樔サ・荳 + {,n} 髮カ蝗樔サ・荳穫蝗樔サ・荳 ({0,n}) + {n} n蝗 + + + 辟。谺イ + + ?? 髮カ蝗槭∪縺溘ッ荳蝗 + *? 髮カ蝗樔サ・荳 + +? 荳蝗樔サ・荳 + {n,m}? (n <= m) n蝗樔サ・荳 縺九▽ m蝗樔サ・荳 + {n,}? n蝗樔サ・荳 + {,n}? 髮カ蝗樔サ・荳穫蝗樔サ・荳 (== {0,n}?) + + {n}? 縺ッONIG_SYNTAX_JAVA縺ィONIG_SYNTAX_PERL縺ァ縺ョ縺ソ辟。谺イ縺ェ謖螳壼ュ + (縺昴ョ蝣エ蜷医↓縺ッ縲∵九縺昴≧譖ク縺乗э蜻ウ縺ッ縺ェ縺縺) + 繝繝輔か繝ォ繝医ョ譁豕輔〒縺ッ縲/a{n}?/ === /(?:a{n})?/ + + + 蠑キ谺イ (谺イ蠑オ繧翫〒縲∫ケー繧願ソ斐@縺ォ謌仙粥縺励◆蠕後ッ蝗樊焚繧呈ク帙i縺吶h縺縺ェ蠕碁蜀崎ゥヲ陦後r縺励↑縺) + + ?+ 荳蝗槭∪縺溘ッ髮カ蝗 + *+ 髮カ蝗樔サ・荳 + ++ 荳蝗樔サ・荳 + {n,m} (n > m) m蝗樔サ・荳 縺九▽ n蝗樔サ・荳 + + {n,m}+, {n,}+, {n}+ 縺ッ縲^NIG_SYNTAX_JAVA縺ィONIG_SYNTAX_PERL縺ァ縺ョ縺ソ + 蠑キ谺イ縺ェ謖螳壼ュ + + 萓. /a*+/ === /(?>a*)/ + + +5. 骭ィ + + ^ 陦碁ュ + $ 陦梧忰 + \b 蜊倩ェ槫「逡 + \B 髱槫腰隱槫「逡 + + \A 譁蟄怜怜磯ュ + \Z 譁蟄怜玲忰蟆セ縲√∪縺溘ッ譁蟄怜玲忰蟆セ縺ョ謾ケ陦後ョ逶エ蜑 + \z 譁蟄怜玲忰蟆セ + \G 謗「邏「髢句ァ倶ス咲スョ + \K 菫晄戟 (邨先棡縺ョ髢句ァ倶ス咲スョ繧偵%縺ョ菴咲スョ縺ォ菫昴▽) + + + \y 譁遶蛹コ蛻 蠅逡 + \Y 譁遶蛹コ蛻 髱槫「逡 + + 縺薙ョ貍皮ョ怜ュ舌ョ諢丞袖縺ッ縲√が繝励す繝ァ繝ウ (?y{..})縺ョ險ュ螳壹↓繧医▲縺ヲ螟牙喧縺吶k縲 + + [諡。蠑オ譖ク險倡エ謌ソ-迥カ諷九ョ縺ィ縺江 (繝繝輔か繝ォ繝) + Unicode縺ョ蝣エ蜷: + 蜿らァ [Unicode Standard Annex #29: http://unicode.org/reports/tr29/] + + Unicode莉・螟悶ョ蝣エ蜷: + \r縺ィ\n縺ョ髢薙r髯、縺丞ィ縺ヲ縺ョ菴咲スョ + + [蜊倩ェ-迥カ諷九ョ縺ィ縺江 + 迴セ蝨ィ縲ゞnicode縺励°繧オ繝昴シ繝医@縺ヲ縺縺ェ縺縲 + 蜿らァ [Unicode Standard Annex #29: http://unicode.org/reports/tr29/] + + + +6. 譁蟄鈴寔蜷 + + ^... 蜷ヲ螳 (譛菴主━蜈亥コヲ貍皮ョ怜ュ) + x-y 遽蝗イ (x縺九iy縺セ縺ァ) + [...] 髮蜷 (譁蟄鈴寔蜷亥譁蟄鈴寔蜷) + ..&&.. 遨肴シ皮ョ (^縺ョ谺。縺ォ蜆ェ蜈亥コヲ縺御ス弱>貍皮ョ怜ュ) + + 萓. [a-w&&[^c-g]z] ==> ([a-w] and ([^c-g] or z)) ==> [abh-w] + + 窶サ '[', '-', ']'繧偵∵枚蟄鈴寔蜷亥縺ァ騾壼クク譁蟄励ョ諢丞袖縺ァ菴ソ逕ィ縺励◆縺蝣エ蜷医↓縺ッ縲 + 縺薙l繧峨ョ譁蟄励r'\'縺ァ騾驕ソ菫ョ鬟セ縺励↑縺代l縺ー縺ェ繧峨↑縺縲 + + + POSIX繝悶Λ繧ア繝繝 ([:xxxxx:], 蜷ヲ螳 [:^xxxxx:]) + + Unicode莉・螟悶ョ蝣エ蜷: + + alnum 闍ア謨ー蟄 + alpha 闍ア蟄 + ascii 0 - 127 + blank \t, \x20 + cntrl + digit 0-9 + graph 螟壹ヰ繧、繝域枚蟄怜ィ驛ィ繧貞性繧 + lower + print 螟壹ヰ繧、繝域枚蟄怜ィ驛ィ繧貞性繧 + punct + space \t, \n, \v, \f, \r, \x20 + upper + xdigit 0-9, a-f, A-F + word 闍ア謨ー蟄, "_" 縺翫h縺ウ 螟壹ヰ繧、繝域枚蟄 + + Unicode縺ョ蝣エ蜷: + + alnum Alphabetic | Decimal_Number + alpha Alphabetic + ascii U+0000 - U+007F + blank Space_Separator | U+0009 + cntrl U+0000 - U+001F, U+007F - U+009F + digit Decimal_Number + graph ^White_Space && ^[[:cntrl:]] && ^Unassigned && ^Surrogate + lower Lowercase + print [[:graph:]] | Space_Separator + punct Punctuation | Symbol + space White_Space + upper Uppercase + xdigit U+0030 - U+0039 | U+0041 - U+0046 | U+0061 - U+0066 + (0-9, a-f, A-F) + word Alphabetic | Mark | Decimal_Number | Connector_Punctuation + + + +7. 諡。蠑オ蠑城寔蜷 + + (?#...) 豕ィ驥 + + (?imxWDSPy-imxWDSP:蠑) 蠑上が繝励す繝ァ繝ウ + + i: 螟ァ譁蟄怜ー乗枚蟄礼ァ蜷 + m: 隍謨ー陦 + x: 諡。蠑オ蠖「蠑 + W: word縺窟SCII縺ョ縺ソ (\w, \p{Word}, [[:word:]]) + word蠅逡後′ASCII縺ョ縺ソ (\b) + D: digit縺窟SCII縺ョ縺ソ (\d, \p{Digit}, [[:digit:]]) + S: space縺窟SCII縺ョ縺ソ (\s, \p{Space}, [[:space:]]) + P: POSIX繝励Ο繝代ユ繧」縺窟SCII縺ョ縺ソ (W,D,S繧貞ィ縺ヲ蜷ォ繧薙〒縺繧) + (alnum, alpha, blank, cntrl, digit, graph, + lower, print, punct, space, upper, xdigit, word) + + y{?}: 譁遶蛹コ蛻迥カ諷 + 縺薙ョ繧ェ繝励す繝ァ繝ウ縺ッ\X, \y, \Y縺ョ諢丞袖繧貞、画峩縺吶k縲 + 迴セ蝨ィ縺薙ョ繧ェ繝励す繝ァ繝ウ縺ッUnicode縺ァ縺励°繧オ繝昴シ繝医@縺ヲ縺縺ェ縺 + y{g}: 諡。蠑オ譖ク險倡エ謌ソ-迥カ諷 (繝繝輔か繝ォ繝) + y{w}: 蜊倩ェ-迥カ諷 + 蜿らァ [Unicode Standard Annex #29] + + (?imxWDSPy-imxWDSP) 蟄、遶九が繝励す繝ァ繝ウ + + * 縺薙l縺ッ谺。縺ョ')'縺セ縺溘ッ繝代ち繝シ繝ウ縺ョ邨ゅo繧翫∪縺ァ縺ョ繧ー繝ォ繝シ繝励r蠖「謌舌☆繧 + /ab(?i)c|def|gh/ == /ab(?i:c|def|gh)/ + + * (?i)繧ェ繝励す繝ァ繝ウ縺ッ縲『ord繧ソ繧、繝(\w, \p{Word})縺ォ縺ッ譛牙柑縺ァ縺ッ縺ェ縺縲ゆス縺謡ord繧ソ繧、繝励′譁蟄励け繝ゥ繧ケ縺ョ荳ュ縺ァ菴ソ逕ィ縺輔l縺溷エ蜷医ッ譛牙柑縺ォ縺ェ繧九ゅ@縺九@縲√%縺ョ縺薙→縺ッword繧ソ繧、繝励r(?W)繧ェ繝励す繝ァ繝ウ縺ィ蜈ア縺ォ菴ソ逕ィ縺励◆譎ゅ↓縺励°豌励↓縺吶k蠢隕√ッ縺ェ縺縺ァ縺ゅm縺縲 + + + /(?CIL).../, /(?CIL:...)/ 蜈ィ菴薙が繝励す繝ァ繝ウ + + 縺薙ョ繧ェ繝励す繝ァ繝ウ縺ッ縲∵ュ」隕剰。ィ迴セ蜈ィ菴薙↓蠖ア髻ソ繧貞所縺シ縺吩ス咲スョ + 縺ォ鄂ョ縺九l縺ェ縺代l縺ー縺ェ繧峨↑縺 + + C: ONIG_OPTION_DONT_CAPTURE_GROUP + I: ONIG_OPTION_IGNORECASE_IS_ASCII + L: ONIG_OPTION_FIND_LONGEST + + (蠑) 謐慕佐蠑城寔蜷 + (?:蠑) 髱樊黒迯イ蠑城寔蜷 + + (?=蠑) 蜈郁ェュ縺ソ + (?!蠑) 蜷ヲ螳壼郁ェュ縺ソ + + (?<=蠑) 謌サ繧願ェュ縺ソ + (?蠑) 蜴溷ュ千噪蠑城寔蜷 + 蠑丞ィ菴薙r騾夐℃縺励◆縺ィ縺阪∝シ上ョ荳ュ縺ァ縺ョ蠕碁蜀崎ゥヲ陦後r陦後↑繧上↑縺 + + (?蠑), (?'name'蠑) + 蜷榊燕莉倥″謐慕佐蠑城寔蜷 + 蠑城寔蜷医↓蜷榊燕繧貞牡繧雁ス薙※繧(螳夂セゥ縺吶k)縲 + (蜷榊燕縺ッ蜊倩ェ樊ァ区先枚蟄励〒縺ェ縺代l縺ー縺ェ繧峨↑縺縲) + + 蜷榊燕縺縺代〒縺ェ縺上∵黒迯イ蠑城寔蜷医→蜷梧ァ倥↓逡ェ蜿キ繧ょ牡繧雁ス薙※繧峨l繧九 + 逡ェ蜿キ謖螳壹′遖∵ュ「縺輔l縺ヲ縺縺ェ縺迥カ諷 (10. 謐慕佐蠑城寔蜷 繧貞盾辣ァ) + 縺ョ縺ィ縺阪ッ縲∝錐蜑阪r菴ソ繧上↑縺縺ァ逡ェ蜿キ縺ァ繧ょ盾辣ァ縺ァ縺阪k縲 + + 隍謨ー縺ョ蠑城寔蜷医↓蜷後§蜷榊燕繧剃ク弱∴繧九%縺ィ縺ッ險ア縺輔l縺ヲ縺繧九 + 縺薙ョ蝣エ蜷医↓縺ッ縲√%縺ョ蜷榊燕繧剃スソ逕ィ縺励◆蠕梧婿蜿らァ縺ッ蜿ッ閭ス縺ァ縺ゅk縺後 + 驛ィ蛻蠑丞他蜃コ縺励ッ縺ァ縺阪↑縺縲 + + + <蜻シ縺ウ蜃コ縺> + + * 蜀螳ケ縺ョ蜻シ縺ウ蜃コ縺 + (?{...contents...}) 蜑埼イ荳ュ縺ョ縺ソ縺ョ蜻シ縺ウ蜃コ縺 + (?{...contents...}D) D縺ッ譁ケ蜷第欠螳壽枚蟄 + D = 'X': 蜑埼イ荳ュ縺翫h縺ウ蠕碁荳ュ + '<': 蠕碁荳ュ縺ョ縺ソ + '>': 蜑埼イ荳ュ縺ョ縺ソ + (?{...contents...}[tag]) 蜷肴惆莉倥″ + (?{...contents...}[tag]D) + + * 繧ィ繧ケ繧ア繝シ繝玲枚蟄励ッcontents縺ョ荳ュ縺ァ菴輔ョ讖溯ス繧よ戟縺溘↑縺 + * contents縺ッ縲'{'譁蟄励〒蟋九∪縺」縺ヲ縺ッ縺ェ繧峨↑縺 + + (?{{{...contents...}}}) contents縺ョ荳ュ縺ョn蛟矩」邯壹ョ'}'縺ッ縲(n+1)蛟矩」邯壹ョ{{{...}}} + 縺ョ荳ュ縺ァ險ア縺輔l繧 + + tag縺ォ險ア縺輔l繧区枚蟄: _ A-Z a-z 0-9 (* 譛蛻昴ョ譁蟄: _ A-Z a-z) + + + * 蜷榊燕縺ョ蜻シ縺ウ蜃コ縺 + (*name) + (*name{args...}) 蠑墓焚莉倥″ + (*name[tag]) 蜷肴惆莉倥″ + (*name[tag]{args...}) + + name縺ォ險ア縺輔l繧区枚蟄: _ A-Z a-z 0-9 (* 譛蛻昴ョ譁蟄: _ A-Z a-z) + tag 縺ォ險ア縺輔l繧区枚蟄: _ A-Z a-z 0-9 (* 譛蛻昴ョ譁蟄: _ A-Z a-z) + + + + <荳榊惠讖溯ス鄒、> + + (?~荳榊惠) 荳榊惠郢ー繧願ソ斐@ (*蜴滓。 逕ー荳ュ蜩イ) + 縺薙l縺ッ .*(繧医j豁」遒コ縺ォ縺ッ\O*)縺ョ繧医≧縺ォ蜍穂ス懊☆繧九′縲<荳榊惠>縺ォ + 驕ゥ蜷医☆繧区枚蟄怜励r蜷ォ縺セ縺ェ縺遽蝗イ縺ォ蛻カ髯舌&繧後k縲 + 縺薙l縺ッ(?~|(?:荳榊惠)|\O*)縺ョ逵∫払陦ィ險倥〒縺ゅk縲 + + (?~|荳榊惠|蠑) 荳榊惠蠑 (* 蜴滉ス) + 縺薙l縺ッ<蠑>縺ョ繧医≧縺ォ蜍穂ス懊☆繧九′縲<荳榊惠>縺ォ驕ゥ蜷医☆繧区枚蟄怜励r + 蜷ォ縺セ縺ェ縺遽蝗イ縺ォ蛻カ髯舌&繧後k縲 + + 萓 (?~|345|\d*) "12345678" ==> "12", "1", "" + + (?~|荳榊惠) 荳榊惠蛛懈ュ「 (* 蜴滉ス) + 縺薙ョ貍皮ョ怜ュ舌r騾夐℃縺励◆蠕後ッ縲∝ッセ雎。譁蟄怜励ョ驕ゥ蜷育ッ蝗イ縺 + <荳榊惠>縺ォ驕ゥ蜷医☆繧区枚蟄怜励r蜷ォ縺セ縺ェ縺遽蝗イ縺ォ蛻カ髯舌&繧後k縲 + + (?~|) 遽蝗イ豸亥悉 + 荳榊惠蛛懈ュ「縺ョ蜉ケ譫懊r豸医@縺ヲ縲∝晄悄縺ョ迥カ諷九↓縺吶k縲 + + * 荳榊惠讖溯ス縺ョ蜈・繧悟ュ舌↓縺ッ蟇セ蠢懊@縺ヲ縺翫i縺壹√◎縺ョ蝣エ蜷医ョ謖吝虚縺ッ荳榊ョ壹→縺吶k縲 + + + + <譚。莉カ譁> + + (?(譚。莉カ蠑)謌仙粥蠑楯螟ア謨怜シ) 譚。莉カ蠑上′謌仙粥縺吶l縺ー謌仙粥蠑上∝、ア謨励☆繧後ー螟ア謨怜シ上r螳溯。後☆繧 + 縺薙ョ讖溯ス縺ョ蟄伜惠逅逕ア縺ッ縲∵仙粥蠑上′螟ア謨励@縺ヲ繧ょ、ア謨怜シ上↓縺ッ + 陦後°縺ェ縺縺薙→縲ゅ%繧後ッ莉悶ョ豁」隕剰。ィ迴セ縺ァ譖ク縺上%縺ィ縺後〒縺阪↑縺縲 + 繧ゅ≧縺イ縺ィ縺、縺ッ縲∵擅莉カ蠑上′蠕梧婿蜿らァ縺ョ逡ェ蜿キ/蜷榊燕縺ョ縺ィ縺阪 + 蠕梧婿蜿らァ蛟、縺ョ譛牙柑諤ァ繧定ェソ縺ケ繧(譁蟄怜励→辣ァ蜷医ッ縺励↑縺) + 諢丞袖縺ォ縺ェ繧九 + + (?(譚。莉カ蠑)謌仙粥蠑) 譚。莉カ蠑上′謌仙粥縺吶l縺ー謌仙粥蠑上r螳溯。後☆繧 + (譚。莉カ蠑上′騾壼クク縺ョ蠑上ョ縺ィ縺阪↓縺ッ縲√%縺ョ讒区枚縺ッ荳榊ソ隕√□縺 + 莉翫ョ縺ィ縺薙m繧ィ繝ゥ繝シ縺ォ縺ッ縺励↑縺縲) + + + 譚。莉カ蠑上ッ蠕梧婿蜿らァ縺ョ逡ェ蜿キ/蜷榊燕縺セ縺溘ッ譎ョ騾壹ョ蠑上r菴ソ逕ィ縺ァ縺阪k縲 + 譚。莉カ蠑上′蠕梧婿蜿らァ縺ョ蝣エ蜷医∵仙粥蠑上→螟ア謨怜シ上ョ荳。譁ケ繧堤怐逡・蜿ッ閭ス縺ァ縺ゅj縲 + 縺薙ョ蝣エ蜷医∝セ梧婿蜿らァ蛟、譛牙柑諤ァ繧定ェソ縺ケ繧(謌仙粥/螟ア謨)讖溯ス縺ョ縺ソ縺ォ縺ェ繧九 + + [蠕梧婿蜿らァ蛟、譛牙柑諤ァ遒コ隱榊勣] (* 蜴滉ス) + (?(n)), (?(-n)), (?(+n)), (?(n+level)) ... + (?()), (?('-n')), (?(<+n>)) ... + (?()), (?('name')), (?()) ... + + + +8. 蠕梧婿蜿らァ + + \n 逡ェ蜿キ謖螳壼盾辣ァ (n >= 1) + \k 逡ェ蜿キ謖螳壼盾辣ァ (n >= 1) + \k'n' 逡ェ蜿キ謖螳壼盾辣ァ (n >= 1) + \k<-n> 逶ク蟇セ逡ェ蜿キ謖螳壼盾辣ァ (n >= 1) + \k'-n' 逶ク蟇セ逡ェ蜿キ謖螳壼盾辣ァ (n >= 1) + \k<+n> 逶ク蟇セ逡ェ蜿キ謖螳壼盾辣ァ (n >= 1) + \k'+n' 逶ク蟇セ逡ェ蜿キ謖螳壼盾辣ァ (n >= 1) + \k 蜷榊燕謖螳壼盾辣ァ + \k'name' 蜷榊燕謖螳壼盾辣ァ + + 蜷榊燕謖螳壼盾辣ァ縺ァ縲√◎縺ョ蜷榊燕縺瑚、謨ー縺ョ蠑城寔蜷医〒螟夐榊ョ夂セゥ縺輔l縺ヲ縺繧句エ蜷医↓縺ッ縲 + 逡ェ蜿キ縺ョ螟ァ縺阪>蠑城寔蜷医°繧牙━蜈育噪縺ォ蜿らァ縺輔l繧九 + (繝槭ャ繝√@縺ェ縺縺ィ縺阪↓縺ッ逡ェ蜿キ縺ョ蟆上&縺蠑城寔蜷医′蜿らァ縺輔l繧) + + 窶サ 逡ェ蜿キ謖螳壼盾辣ァ縺ッ縲∝錐蜑堺サ倥″謐慕佐蠑城寔蜷医′螳夂セゥ縺輔l縲 + 縺九▽ ONIG_OPTION_CAPTURE_GROUP縺梧欠螳壹&繧後※縺縺ェ縺蝣エ蜷医↓縺ッ縲 + 遖∵ュ「縺輔l繧九(10. 謐慕佐蠑城寔蜷 繧貞盾辣ァ) + + + 繝阪せ繝医Ξ繝吶Ν莉倥″蠕梧婿蜿らァ + + level: 0, 1, 2, ... + + \k (n >= 1) + \k (n >= 1) + \k'n+level' (n >= 1) + \k'n-level' (n >= 1) + + \k + \k + \k'name+level' + \k'name-level' + + 蠕梧婿蜿らァ縺ョ菴咲スョ縺九i逶ク蟇セ逧縺ェ驛ィ蛻蠑丞他蜃コ縺励ロ繧ケ繝医Ξ繝吶Ν繧呈欠螳壹@縺ヲ縲√◎縺ョ繝ャ繝吶Ν縺ァ縺ョ + 謐慕佐蛟、繧貞盾辣ァ縺吶k縲 + + 萓-1. + + /\A(?|.|(?:(?.)\g\k))\z/.match("reer") + + 萓-2. + + r = Regexp.compile(<<'__REGEXP__'.strip, Regexp::EXTENDED) + (? \g \g* \g ){0} + (? < \g \s* > ){0} + (? [a-zA-Z_:]+ ){0} + (? [^<&]+ (\g | [^<&]+)* ){0} + (? >){0} + \g + __REGEXP__ + + p r.match('fbbbf').captures + + + +9. 驛ィ蛻蠑丞他蜃コ縺 ("逕ー荳ュ蜩イ繧ケ繝壹す繝」繝ォ") (* 蜴滉ス) + + \g 蜷榊燕謖螳壼他蜃コ縺 + \g'name' 蜷榊燕謖螳壼他蜃コ縺 + \g 逡ェ蜿キ謖螳壼他蜃コ縺 (n >= 1) + \g'n' 逡ェ蜿キ謖螳壼他蜃コ縺 (n >= 1) + \g<0> 逡ェ蜿キ謖螳壼他蜃コ縺(蜈ィ菴灘他縺ウ蜃コ縺) + \g'0' 逡ェ蜿キ謖螳壼他蜃コ縺(蜈ィ菴灘他縺ウ蜃コ縺) + \g<-n> 逶ク蟇セ逡ェ蜿キ謖螳壼他蜃コ縺 (n >= 1) + \g'-n' 逶ク蟇セ逡ェ蜿キ謖螳壼他蜃コ縺 (n >= 1) + \g<+n> 逶ク蟇セ逡ェ蜿キ謖螳壼他蜃コ縺 (n >= 1) + \g'+n' 逶ク蟇セ逡ェ蜿キ謖螳壼他蜃コ縺 (n >= 1) + + 窶サ 譛蟾ヲ菴咲スョ縺ァ縺ョ蜀榊クー蜻シ蜃コ縺励ッ遖∵ュ「縺輔l繧九 + 萓. (?a|\gb) => error + (?a|b\gc) => OK + + 窶サ 逡ェ蜿キ謖螳壼他蜃コ縺励ッ縲∝錐蜑堺サ倥″謐慕佐蠑城寔蜷医′螳夂セゥ縺輔l縲 + 縺九▽ ONIG_OPTION_CAPTURE_GROUP縺梧欠螳壹&繧後※縺縺ェ縺蝣エ蜷医↓縺ッ縲 + 遖∵ュ「縺輔l繧九 (10. 謐慕佐蠑城寔蜷 繧貞盾辣ァ) + + 窶サ 蜻シ縺ウ蜃コ縺輔l縺溷シ城寔蜷医ョ繧ェ繝励す繝ァ繝ウ迥カ諷九′蜻シ蜃コ縺怜エ縺ョ繧ェ繝励す繝ァ繝ウ迥カ諷九→逡ー縺ェ縺」縺ヲ縺繧 + 縺ィ縺阪∝他縺ウ蜃コ縺輔l縺溷エ縺ョ繧ェ繝励す繝ァ繝ウ迥カ諷九′譛牙柑縺ァ縺ゅk縲 + + 萓. (?-i:\g)(?i:(?a)){0} 縺ッ "A" 縺ォ辣ァ蜷域仙粥縺吶k縲 + + +10. 謐慕佐蠑城寔蜷 + + 謐慕佐蠑城寔蜷(...)縺ッ縲∽サ・荳九ョ譚。莉カ縺ォ蠢懊§縺ヲ謖ッ闊槭′螟牙喧縺吶k縲 + (蜷榊燕莉倥″謐慕佐蠑城寔蜷医ッ螟牙喧縺励↑縺) + + case 1. /.../ (蜷榊燕莉倥″謐慕佐蠑城寔蜷医ッ荳堺スソ逕ィ縲√が繝励す繝ァ繝ウ縺ェ縺) + + (...) 縺ッ縲∵黒迯イ蠑城寔蜷医→縺励※謇ア繧上l繧九 + + case 2. /.../g (蜷榊燕莉倥″謐慕佐蠑城寔蜷医ッ荳堺スソ逕ィ縲√が繝励す繝ァ繝ウ 'g'繧呈欠螳) + + (...) 縺ッ縲髱樊黒迯イ蠑城寔蜷医→縺励※謇ア繧上l繧九 + + case 3. /..(?..)../ (蜷榊燕莉倥″謐慕佐蠑城寔蜷医ッ菴ソ逕ィ縲√が繝励す繝ァ繝ウ縺ェ縺) + + (...) 縺ッ縲髱樊黒迯イ蠑城寔蜷医→縺励※謇ア繧上l繧九 + 逡ェ蜿キ謖螳壼盾辣ァ/蜻シ縺ウ蜃コ縺励ッ荳崎ィア蜿ッ縲 + + case 4. /..(?..)../G (蜷榊燕莉倥″謐慕佐蠑城寔蜷医ッ菴ソ逕ィ縲√が繝励す繝ァ繝ウ 'G'繧呈欠螳) + + (...) 縺ッ縲∵黒迯イ蠑城寔蜷医→縺励※謇ア繧上l繧九 + 逡ェ蜿キ謖螳壼盾辣ァ/蜻シ縺ウ蜃コ縺励ッ險ア蜿ッ縲 + + 菴縺 + g: ONIG_OPTION_DONT_CAPTURE_GROUP + G: ONIG_OPTION_CAPTURE_GROUP + ('g'縺ィ'G'繧ェ繝励す繝ァ繝ウ縺ッ縲〉uby-dev ML縺ァ隴ー隲悶&繧後◆縲) + + 縺薙l繧峨ョ謖ッ闊槭ョ諢丞袖縺ッ縲 + 蜷榊燕莉倥″謐慕佐縺ィ蜷榊燕辟。縺玲黒迯イ繧貞酔譎ゅ↓菴ソ逕ィ縺吶k蠢辟カ諤ァ縺ョ縺ゅk蝣エ髱「縺ッ蟆代↑縺縺ァ縺ゅm縺 + 縺ィ縺縺逅逕ア縺九i閠縺医i繧後◆繧ゅョ縺ァ縺ゅk縲 + + +----------------------------- +陬懆ィ 1. 譁豕穂セ晏ュ倥が繝励す繝ァ繝ウ + + + ONIG_SYNTAX_ONIGURUMA + (?m): 邨よュ「隨ヲ險伜捷(.)縺ッ謾ケ陦後→辣ァ蜷域仙粥 + + + ONIG_SYNTAX_PERL 縺ィ ONIG_SYNTAX_JAVA + (?s): 邨よュ「隨ヲ險伜捷(.)縺ッ謾ケ陦後→辣ァ蜷域仙粥 + (?m): ^ 縺ッ謾ケ陦後ョ逶エ蠕後↓辣ァ蜷医☆繧九$ 縺ッ謾ケ陦後ョ逶エ蜑阪↓辣ァ蜷医☆繧 + + +陬懆ィ 2. 迢ャ閾ェ諡。蠑オ讖溯ス + + + 16騾イ謨ー謨ー蟄励髱16騾イ謨ー蟄 \h, \H + + 逵滉ササ諢乗枚蟄 \O + + 譁遶蛹コ蛻蠅逡 \y, \Y + + 蠕梧婿蜿らァ蛟、譛牙柑諤ァ遒コ隱榊勣 (?(...)) + + 蜷榊燕莉倥″謐慕佐蠑城寔蜷 (?...), (?'name'...) + + 蜷榊燕謖螳壼セ梧婿蜿らァ \k + + 驛ィ蛻蠑丞他蜃コ縺 \g, \g + + 荳榊惠蠑 (?~|...|...) + + 荳榊惠蛛懈ュ「 (?~|...) + + +陬懆ィ 3. Perl 5.8.0縺ィ豈碑シ縺励※蟄伜惠縺励↑縺讖溯ス + + + \N{name} + + \l,\u,\L,\U,\C + + (??{code}) + + * \Q...\E + 菴縺涌NIG_SYNTAX_PERL縺ィONIG_SYNTAX_JAVA縺ァ縺ッ譛牙柑 + + +陬懆ィ 4. Ruby 1.8 縺ョ譌・譛ャ隱槫喧 GNU regex(version 0.12)縺ィ縺ョ驕輔> + + + 譁蟄猶roperty讖溯ス霑ス蜉 (\p{property}, \P{Property}) + + 16騾イ謨ー蟄励ち繧、繝苓ソス蜉 (\h, \H) + + 謌サ繧願ェュ縺ソ讖溯ス繧定ソス蜉 + + 蠑キ谺イ縺ェ郢ー繧願ソ斐@謖螳壼ュ舌r霑ス蜉 (?+, *+, ++) + + 譁蟄鈴寔蜷医ョ荳ュ縺ョ貍皮ョ怜ュ舌r霑ス蜉 ([...], &&) + ('[' 縺ッ縲∵枚蟄鈴寔蜷医ョ荳ュ縺ァ騾壼クク縺ョ譁蟄励→縺励※菴ソ逕ィ縺吶k縺ィ縺阪↓縺ッ + 騾驕ソ菫ョ鬟セ縺励↑縺代l縺ー縺ェ繧峨↑縺) + + 蜷榊燕莉倥″謐慕佐蠑城寔蜷医→縲驛ィ蛻蠑丞他蜃コ縺玲ゥ溯ス霑ス蜉 + + 螟壹ヰ繧、繝域枚蟄励さ繝シ繝峨′謖螳壹&繧後※縺繧九→縺阪 + 譁蟄鈴寔蜷医ョ荳ュ縺ァ蜈ォ騾イ謨ー縺セ縺溘ッ蜊∝ュ騾イ謨ー陦ィ迴セ縺ョ騾」邯壹ッ縲∝、壹ヰ繧、繝育ャヲ蜿キ縺ァ陦ィ迴セ縺輔l縺 + 荳蛟九ョ譁蟄励→隗」驥医&繧後k + (萓. [\xa1\xa2], [\xa1\xa7-\xa4\xa1]) + + 譁蟄鈴寔蜷医ョ荳ュ縺ァ縲∽ク繝舌う繝域枚蟄励→螟壹ヰ繧、繝域枚蟄励ョ遽蝗イ謖螳壹ッ險ア縺輔l繧九 + ex. /[a-縺]/ + + 蟄、遶九が繝励す繝ァ繝ウ縺ョ譛牙柑遽蝗イ縺ッ縲√◎縺ョ蟄、遶九が繝励す繝ァ繝ウ繧貞性繧薙〒縺繧句シ城寔蜷医ョ + 邨ゅo繧翫∪縺ァ縺ァ縺ゅk + 萓. (?:(?i)a|b) 縺ッ (?:(?i:a|b)) 縺ィ隗」驥医&繧後k縲(?:(?i:a)|b)縺ァ縺ッ縺ェ縺 + + 蟄、遶九が繝励す繝ァ繝ウ縺ッ縺昴ョ蜑阪ョ蠑上↓蟇セ縺励※騾城℃逧縺ァ縺ッ縺ェ縺 + 萓. /a(?i)*/ 縺ッ譁豕輔お繝ゥ繝シ縺ィ縺ェ繧 + + 荳榊ョ悟ィ縺ェ郢ー繧願ソ斐@遽蝗イ謖螳壼ュ舌ッ騾壼クク縺ョ譁蟄怜励→縺励※險ア蜿ッ縺輔l繧 + 萓. /{/, /({)/, /a{2,3/ + + 蜷ヲ螳夂噪POSIX繝悶Λ繧ア繝繝 [:^xxxx:] 繧定ソス蜉 + + POSIX繝悶Λ繧ア繝繝 [:ascii:] 繧定ソス蜉 + + 蜈郁ェュ縺ソ縺ョ郢ー繧願ソ斐@縺ッ荳崎ィア蜿ッ + 萓. /(?=a)*/, /(?!b){5}/ + + 謨ー蛟、縺ァ謖螳壹&繧後◆譁蟄励↓蟇セ縺励※繧ゅ∝、ァ譁蟄怜ー乗枚蟄礼ァ蜷医が繝励す繝ァ繝ウ縺ッ譛牙柑 + 萓. /\x61/i =~ "A" + + 郢ー繧願ソ斐@蝗樊焚謖螳壹〒縲∵怙菴主屓謨ー縺ョ逵∫払(0蝗)縺後〒縺阪k + /a{,n}/ == /a{0,n}/ + 譛菴主屓謨ー縺ィ譛螟ァ蝗樊焚縺ョ蜷梧凾逵∫払縺ッ險ア縺輔l縺ェ縺縲(/a{,}/) + + /a{n}?/縺ッ辟。谺イ縺ェ貍皮ョ怜ュ舌〒縺ッ縺ェ縺縲 + /a{n}?/ == /(?:a{n})?/ + + 辟。蜉ケ縺ェ蠕梧婿蜿らァ繧偵メ繧ァ繝繧ッ縺励※繧ィ繝ゥ繝シ縺ォ縺吶k縲 + /\1/, /(a)\2/ + + 辟。髯千ケー繧願ソ斐@縺ョ荳ュ縺ァ縲髟キ縺暮峺縺ァ縺ョ辣ァ蜷域仙粥縺ッ郢ー繧願ソ斐@繧剃クュ譁ュ縺輔○繧九′縲 + 縺薙ョ縺ィ縺阪∽クュ譁ュ縺吶∋縺阪°縺ゥ縺縺九ョ蛻、螳壹→縺励※縲∵黒迯イ蠑城寔蜷医ョ謐慕佐迥カ諷九ョ + 螟牙喧縺セ縺ァ閠諷ョ縺励※縺繧 + /(?:()|())*\1\2/ =~ "" + /(?:\1a|())*/ =~ "a" + +邨ゅj diff --git a/vendor/oniguruma/oniguruma/doc/SYNTAX.md b/vendor/oniguruma/oniguruma/doc/SYNTAX.md new file mode 100644 index 0000000..5ec7e87 --- /dev/null +++ b/vendor/oniguruma/oniguruma/doc/SYNTAX.md @@ -0,0 +1,1126 @@ + +# Oniguruma syntax (operator) configuration + +_Documented for Oniguruma 6.9.10 (2024/12/21)_ + + +---------- + + +## Overview + +This document details how to configure Oniguruma's syntax, by describing the desired +syntax operators and behaviors in an instance of the OnigSyntaxType struct, just like +the built-in Oniguruma syntaxes do. + +Configuration operators are bit flags, and are broken into multiple groups, somewhat arbitrarily, +because Oniguruma takes its configuration as a trio of 32-bit `unsigned int` values, assigned as +the first three fields in an `OnigSyntaxType` struct: + +```C +typedef struct { + unsigned int op; + unsigned int op2; + unsigned int behavior; + OnigOptionType options; /* default option */ + OnigMetaCharTableType meta_char_table; +} OnigSyntaxType; +``` + +The first group of configuration flags (`op`) roughly corresponds to the +configuration for "basic regex." The second group (`op2`) roughly corresponds +to the configuration for "advanced regex." And the third group (`behavior`) +describes more-or-less what to do for broken input, bad input, or other corner-case +regular expressions whose meaning is not well-defined. These three groups of +flags are described in full below, and tables of their usages for various syntaxes +follow. + +The `options` field describes the default compile options to use if the caller does +not specify any options when invoking `onig_new()`. + +The `meta_char_table` field is used exclusively by the `ONIG_SYN_OP_VARIABLE_META_CHARACTERS` +option, which allows the various regex metacharacters, like `*` and `?`, to be replaced +with alternates (for example, SQL typically uses `%` instead of `.*` and `_` instead of `?`). + + +---------- + + +## Group One Flags (op) + + +This group contains "basic regex" constructs, features common to most regex systems. + + +### 0. ONIG_SYN_OP_VARIABLE_META_CHARACTERS + +_Set in: none_ + +Enables support for `onig_set_meta_char()`, which allows you to provide alternate +characters that will be used instead of the six special characters that are normally +these characters below: + + - `ONIG_META_CHAR_ESCAPE`: `\` + - `ONIG_META_CHAR_ANYCHAR`: `.` + - `ONIG_META_CHAR_ANYTIME`: `*` + - `ONIG_META_CHAR_ZERO_OR_ONE_TIME`: `?` + - `ONIG_META_CHAR_ONE_OR_MORE_TIME`: `+` + - `ONIG_META_CHAR_ANYCHAR_ANYTIME`: Equivalent in normal regex to `.*`, but supported + explicitly so that Oniguruma can support matching SQL `%` wildcards or shell `*` wildcards. + +If this flag is set, then the values defined using `onig_set_meta_char()` will be used; +if this flag is clear, then the default regex characters will be used instead, and +data set by `onig_set_meta_char()` will be ignored. + + +### 1. ONIG_SYN_OP_DOT_ANYCHAR (enable `.`) + +_Set in: Oniguruma, Python, Ruby, Perl_NG, Perl, Java, GnuRegex, Grep, Emacs, PosixExtended, PosixBasic_ + +Enables support for the standard `.` metacharacter, meaning "any one character." You +usually want this flag on unless you have turned on `ONIG_SYN_OP_VARIABLE_META_CHARACTERS` +so that you can use a metacharacter other than `.` instead. + + +### 2. ONIG_SYN_OP_ASTERISK_ZERO_INF (enable `r*`) + +_Set in: Oniguruma, Python, Ruby, Perl_NG, Perl, Java, GnuRegex, Grep, Emacs, PosixExtended, PosixBasic_ + +Enables support for the standard `r*` metacharacter, meaning "zero or more r's." +You usually want this flag set unless you have turned on `ONIG_SYN_OP_VARIABLE_META_CHARACTERS` +so that you can use a metacharacter other than `*` instead. + + +### 3. ONIG_SYN_OP_ESC_ASTERISK_ZERO_INF (enable `r\*`) + +_Set in: none_ + +Enables support for an escaped `r\*` metacharacter, meaning "zero or more r's." This is +useful if you have disabled support for the normal `r*` metacharacter because you want `*` +to simply match a literal `*` character, but you still want some way of activating "zero or more" +behavior. + + +### 4. ONIG_SYN_OP_PLUS_ONE_INF (enable `r+`) + +_Set in: Oniguruma, Python, Ruby, Perl_NG, Perl, Java, GnuRegex, Emacs, PosixExtended_ + +Enables support for the standard `r+` metacharacter, meaning "one or more r's." +You usually want this flag set unless you have turned on `ONIG_SYN_OP_VARIABLE_META_CHARACTERS` +so that you can use a metacharacter other than `+` instead. + + +### 5. ONIG_SYN_OP_ESC_PLUS_ONE_INF (enable `r\+`) + +_Set in: Grep_ + +Enables support for an escaped `r\+` metacharacter, meaning "one or more r's." This is +useful if you have disabled support for the normal `r+` metacharacter because you want `+` +to simply match a literal `+` character, but you still want some way of activating "one or more" +behavior. + + +### 6. ONIG_SYN_OP_QMARK_ZERO_ONE (enable `r?`) + +_Set in: Oniguruma, Python, Ruby, Perl_NG, Perl, Java, GnuRegex, Emacs, PosixExtended_ + +Enables support for the standard `r?` metacharacter, meaning "zero or one r" or "an optional r." +You usually want this flag set unless you have turned on `ONIG_SYN_OP_VARIABLE_META_CHARACTERS` +so that you can use a metacharacter other than `?` instead. + + +### 7. ONIG_SYN_OP_ESC_QMARK_ZERO_ONE (enable `r\?`) + +_Set in: Grep_ + +Enables support for an escaped `r\?` metacharacter, meaning "zero or one r" or "an optional +r." This is useful if you have disabled support for the normal `r?` metacharacter because +you want `?` to simply match a literal `?` character, but you still want some way of activating +"optional" behavior. + + +### 8. ONIG_SYN_OP_BRACE_INTERVAL (enable `r{l,u}`) + +_Set in: Oniguruma, Python, Ruby, Perl_NG, Perl, Java, GnuRegex, PosixExtended_ + +Enables support for the `r{lower,upper}` range form, common to more advanced +regex engines, which lets you specify precisely a minimum and maximum range on how many r's +must match (and not simply "zero or more"). + +This form also allows `r{count}` to specify a precise count of r's that must match. + +This form also allows `r{lower,}` to be equivalent to `r{lower,infinity}`. + +If and only if the `ONIG_SYN_ALLOW_INTERVAL_LOW_ABBREV` behavior flag is set, +this form also allows `r{,upper}` to be equivalent to `r{0,upper}`; otherwise, +`r{,upper}` will be treated as an error. + + +### 9. ONIG_SYN_OP_ESC_BRACE_INTERVAL (enable `\{` and `\}`) + +_Set in: Grep, Emacs, PosixBasic_ + +Enables support for an escaped `r\{lower,upper\}` range form. This is useful if you +have disabled support for the normal `r{...}` range form and want curly braces to simply +match literal curly brace characters, but you still want some way of activating +"range" behavior. + + +### 10. ONIG_SYN_OP_VBAR_ALT (enable `r|s`) + +_Set in: Oniguruma, Python, Ruby, Perl_NG, Perl, Java, GnuRegex, PosixExtended_ + +Enables support for the common `r|s` alternation operator. You usually want this +flag set. + + +### 11. ONIG_SYN_OP_ESC_VBAR_ALT (enable `\|`) + +_Set in: Grep, Emacs_ + +Enables support for an escaped `r\|s` alternation form. This is useful if you +have disabled support for the normal `r|s` alternation form and want `|` to simply +match a literal `|` character, but you still want some way of activating "alternate" behavior. + + +### 12. ONIG_SYN_OP_LPAREN_SUBEXP (enable `(r)`) + +_Set in: Oniguruma, Python, Ruby, Perl_NG, Perl, Java, GnuRegex, PosixExtended_ + +Enables support for the common `(...)` grouping-and-capturing operators. You usually +want this flag set. + + +### 13. ONIG_SYN_OP_ESC_LPAREN_SUBEXP (enable `\(` and `\)`) + +_Set in: Grep, Emacs, PosixBasic_ + +Enables support for escaped `\(...\)` grouping-and-capturing operators. This is useful if you +have disabled support for the normal `(...)` grouping-and-capturing operators and want +parentheses to simply match literal parenthesis characters, but you still want some way of +activating "grouping" or "capturing" behavior. + + +### 14. ONIG_SYN_OP_ESC_AZ_BUF_ANCHOR (enable `\A` and `\Z` and `\z`) + +_Set in: Oniguruma, Python, Ruby, Perl_NG, Perl, Java, GnuRegex_ + +Enables support for the anchors `\A` (start-of-string), `\Z` (end-of-string or +newline-at-end-of-string), and `\z` (end-of-string) escapes. + +(If the escape metacharacter has been changed from the default of `\`, this +option will recognize that metacharacter instead.) + + +### 15. ONIG_SYN_OP_ESC_CAPITAL_G_BEGIN_ANCHOR (enable `\G`) + +_Set in: Oniguruma, Python, Ruby, Perl_NG, Perl, Java, GnuRegex_ + +Enables support for the special anchor `\G` (start-of-previous-match). + +(If the escape metacharacter has been changed from the default of `\`, this +option will recognize that metacharacter instead.) + +Note that `OnigRegex`/`regex_t` are not stateful objects, and do _not_ record +the location of the previous match. The `\G` flag uses the `start` parameter +explicitly passed to `onig_search()` (or `onig_search_with_param()` to determine +the "start of the previous match," so if the caller always passes the start of +the entire buffer as the function's `start` parameter, then `\G` will behave +exactly the same as `\A`. + + +### 16. ONIG_SYN_OP_DECIMAL_BACKREF (enable `\num`) + +_Set in: Oniguruma, Python, Ruby, Perl_NG, Perl, Java, GnuRegex, Grep, Emacs, PosixExtended, PosixBasic_ + +Enables support for subsequent matches to back references to prior capture groups `(...)` using +the common `\num` syntax (like `\3`). + +If this flag is clear, then a numeric escape like `\3` will either be treated as a literal `3`, +or, if `ONIG_SYN_OP_ESC_OCTAL3` is set, will be treated as an octal character code `\3`. + +You usually want this enabled, and it is enabled by default in every built-in syntax. + + +### 17. ONIG_SYN_OP_BRACKET_CC (enable `[...]`) + +_Set in: Oniguruma, Python, Ruby, Perl_NG, Perl, Java, GnuRegex, Grep, Emacs, PosixExtended, PosixBasic_ + +Enables support for recognizing character classes, like `[a-z]`. If this flag is not set, `[` +and `]` will be treated as ordinary literal characters instead of as metacharacters. + +You usually want this enabled, and it is enabled by default in every built-in syntax. + + +### 18. ONIG_SYN_OP_ESC_W_WORD (enable `\w` and `\W`) + +_Set in: Oniguruma, Python, Ruby, Perl_NG, Perl, Java, GnuRegex, Grep_ + +Enables support for the common `\w` and `\W` shorthand forms. These match "word characters," +whose meaning varies depending on the encoding being used. + +In ASCII encoding, `\w` is equivalent to `[A-Za-z0-9_]`. + +In most other encodings, `\w` matches many more characters, including accented letters, Greek letters, +Cyrillic letters, Braille letters and numbers, Runic letters, Hebrew letters, Arabic letters and numerals, +Chinese Han ideographs, Japanese Katakana and Hiragana, Korean Hangul, and generally any symbol that +could qualify as a phonetic "letter" or counting "number" in any language. (Note that emoji are _not_ +considered "word characters.") + +`\W` always matches the opposite of whatever `\w` matches. + + +### 19. ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END (enable `\<` and `\>`) + +_Set in: GnuRegex, Grep_ + +Enables support for the GNU-specific `\<` and `\>` word-boundary metacharacters. These work like +the `\b` word-boundary metacharacter, but only match at one end of the word or the other: `\<` +only matches at a transition from a non-word character to a word character (i.e., at the start +of a word), and `\>` only matches at a transition from a word character to a non-word character +(i.e., at the end of a word). + +Most regex syntaxes do _not_ support these metacharacters. + + +### 20. ONIG_SYN_OP_ESC_B_WORD_BOUND (enable `\b` and `\B`) + +_Set in: Oniguruma, Python, Ruby, Perl_NG, Perl, Java, GnuRegex, Grep_ + +Enables support for the common `\b` and `\B` word-boundary metacharacters. The `\b` metacharacter +matches a zero-width position at a transition from word-characters to non-word-characters, or vice +versa. The `\B` metacharacter matches at all positions _not_ matched by `\b`. + +See details in `ONIG_SYN_OP_ESC_W_WORD` above for an explanation as to which characters +are considered "word characters." + + +### 21. ONIG_SYN_OP_ESC_S_WHITE_SPACE (enable `\s` and `\S`) + +_Set in: Oniguruma, Python, Ruby, Perl_NG, Perl, Java, GnuRegex_ + +Enables support for the common `\s` and `\S` whitespace-matching metacharacters. + +The `\s` metacharacter in ASCII encoding is exactly equivalent to the character class +`[\t\n\v\f\r ]`, or characters codes 9 through 13 (inclusive), and 32. + +The `\s` metacharacter in Unicode is exactly equivalent to the character class +`[\t\n\v\f\r \x85\xA0\x1680\x2000-\x200A\x2028-\x2029\x202F\x205F\x3000]` 窶 that is, it matches +the same as ASCII, plus U+0085 (next line), U+00A0 (nonbreaking space), U+1680 (Ogham space mark), +U+2000 (en quad) through U+200A (hair space) (this range includes several widths of Unicode spaces), +U+2028 (line separator) through U+2029 (paragraph separator), +U+202F (narrow no-break space), U+205F (medium mathematical space), and U+3000 (CJK ideographic space). + +All non-Unicode encodings are handled by converting their code points to the appropriate +Unicode-equivalent code points, and then matching according to Unicode rules. + +`\S` always matches any one character that is _not_ in the set matched by `\s`. + + +### 22. ONIG_SYN_OP_ESC_D_DIGIT (enable `\d` and `\D`) + +_Set in: Oniguruma, Python, Ruby, Perl_NG, Perl, Java, GnuRegex_ + +Enables support for the common `\d` and `\D` digit-matching metacharacters. + +The `\d` metacharacter in ASCII encoding is exactly equivalent to the character class +`[0-9]`, or characters codes 48 through 57 (inclusive). + +The `\d` metacharacter in Unicode matches `[0-9]`, as well as digits in Arabic, Devanagari, +Bengali, Laotian, Mongolian, CJK fullwidth numerals, and many more. + +All non-Unicode encodings are handled by converting their code points to the appropriate +Unicode-equivalent code points, and then matching according to Unicode rules. + +`\D` always matches any one character that is _not_ in the set matched by `\d`. + + +### 23. ONIG_SYN_OP_LINE_ANCHOR (enable `^r` and `r$`) + +_Set in: Oniguruma, Python, Ruby, Perl_NG, Perl, Java, GnuRegex, Grep, Emacs, PosixExtended, PosixBasic_ + +Enables support for the common `^` and `$` line-anchor metacharacters. + +In single-line mode, `^` matches the start of the input buffer, and `$` matches +the end of the input buffer. In multi-line mode, `^` matches if the preceding +character is `\n`; and `$` matches if the following character is `\n`. + +(Note that Oniguruma does not recognize other newline types: It only matches +`^` and `$` against `\n`: not `\r`, not `\r\n`, not the U+2028 line separator, +and not any other form.) + + +### 24. ONIG_SYN_OP_POSIX_BRACKET (enable POSIX `[:xxxx:]`) + +_Set in: Oniguruma, Ruby, Perl_NG, Perl, GnuRegex, Grep, PosixExtended, PosixBasic_ + +Enables support for the POSIX `[:xxxx:]` character classes, like `[:alpha:]` and `[:digit:]`. +The supported POSIX character classes are `alnum`, `alpha`, `blank`, `cntrl`, `digit`, +`graph`, `lower`, `print`, `punct`, `space`, `upper`, `xdigit`, `ascii`, `word`. + + +### 25. ONIG_SYN_OP_QMARK_NON_GREEDY (enable `r??`, `r*?`, `r+?`, and `r{n,m}?`) + +_Set in: Oniguruma, Python, Ruby, Perl_NG, Perl, Java_ + +Enables support for lazy (non-greedy) quantifiers: That is, if you append a `?` after +another quantifier such as `?`, `*`, `+`, or `{n,m}`, Oniguruma will try to match +as _little_ as possible instead of as _much_ as possible. + + +### 26. ONIG_SYN_OP_ESC_CONTROL_CHARS (enable `\n`, `\r`, `\t`, etc.) + +_Set in: Oniguruma, Python, Ruby, Perl_NG, Perl, Java, Emacs, PosixExtended, PosixBasic_ + +Enables support for C-style control-code escapes, like `\n` and `\r`. Specifically, +this recognizes `\a` (7), `\b` (8), `\t` (9), `\n` (10), `\f` (12), `\r` (13), and +`\e` (27). If `ONIG_SYN_OP2_ESC_V_VTAB` is enabled (see below), this also enables +support for recognizing `\v` as code point 11. + + +### 27. ONIG_SYN_OP_ESC_C_CONTROL (enable `\cx` control codes) + +_Set in: Oniguruma, Python, Ruby, Perl_NG, Perl, Java_ + +Enables support for named control-code escapes, like `\cm` or `\cM` for code-point +13. In this shorthand form, control codes may be specified by `\c` (for "Control") +followed by an alphabetic letter, a-z or A-Z, indicating which code point to represent +(1 through 26). So `\cA` is code point 1, and `\cZ` is code point 26. + + +### 28. ONIG_SYN_OP_ESC_OCTAL3 (enable `\OOO` octal codes) + +_Set in: Oniguruma, Python, Ruby, Perl_NG, Perl, Java_ + +Enables support for octal-style escapes of up to three digits, like `\1` for code +point 1, and `\177` for code point 127. Octal values greater than 255 will result +in an error message. + + +### 29. ONIG_SYN_OP_ESC_X_HEX2 (enable `\xHH` hex codes) + +_Set in: Oniguruma, Python, Ruby, Perl_NG, Perl, Java_ + +Enables support for hexadecimal-style escapes of up to two digits, like `\x1` for code +point 1, and `\x7F` for code point 127. + + +### 30. ONIG_SYN_OP_ESC_X_BRACE_HEX8 (enable `\x{7HHHHHHH}` hex codes) + +_Set in: Oniguruma, Ruby, Perl_NG, Perl_ + +Enables support for brace-wrapped hexadecimal-style escapes of up to eight digits, +like `\x{1}` for code point 1, and `\x{FFFE}` for code point 65534. + + +### 31. ONIG_SYN_OP_ESC_O_BRACE_OCTAL (enable `\o{1OOOOOOOOOO}` octal codes) + +_Set in: Oniguruma, Ruby, Perl_NG, Perl_ + +Enables support for brace-wrapped octal-style escapes of up to eleven digits, +like `\o{1}` for code point 1, and `\o{177776}` for code point 65534. + +(New feature as of Oniguruma 6.3.) + + +---------- + + +## Group Two Flags (op2) + + +This group contains support for lesser-known regex syntax constructs. + + +### 0. ONIG_SYN_OP2_ESC_CAPITAL_Q_QUOTE (enable `\Q...\E`) + +_Set in: Perl_NG, Perl, Java_ + +Enables support for "quoted" parts of a pattern: Between `\Q` and `\E`, all +syntax parsing is turned off, so that metacharacters like `*` and `+` will no +longer be treated as metacharacters, and instead will be matched as literal +`*` and `+`, as if they had been escaped with `\*` and `\+`. + + +### 1. ONIG_SYN_OP2_QMARK_GROUP_EFFECT (enable `(?...)`) + +_Set in: Oniguruma, Python, Ruby, Perl_NG, Perl, Java, Emacs_ + +Enables support for the fairly-common `(?...)` grouping operator, which +controls precedence but which does _not_ capture its contents. + + +### 2. ONIG_SYN_OP2_OPTION_PERL (enable options `(?imsx)` and `(?-imsx)`) + +_Set in: Python, Perl_NG, Perl, Java_ + +Enables support of regex options. (i,m,s,x) +The supported toggle-able options for this flag are: + + - `i` - Case-insensitivity + - `m` - Multi-line mode (`^` and `$` match at `\n` as well as start/end of buffer) + - `s` - Single-line mode (`.` can match `\n`) + - `x` - Extended pattern (free-formatting: whitespace will ignored) + + +### 3. ONIG_SYN_OP2_OPTION_RUBY (enable options `(?imx)` and `(?-imx)`) + +_Set in: Ruby_ + +Enables support of regex options. (i,m,x) +The supported toggle-able options for this flag are: + + - `i` - Case-insensitivity + - `m` - Multi-line mode (`.` can match `\n`) + - `x` - Extended pattern (free-formatting: whitespace will ignored) + + +### 4. ONIG_SYN_OP2_PLUS_POSSESSIVE_REPEAT (enable `r?+`, `r*+`, and `r++`) + +_Set in: Oniguruma, Ruby, Perl_NG, Perl, Java_ + +Enables support for the _possessive_ quantifiers `?+`, `*+`, and `++`, which +work similarly to `?` and `*` and `+`, respectively, but which do not backtrack +after matching: Like the normal greedy quantifiers, they match as much as +possible, but they do not attempt to match _less_ than their maximum possible +extent if subsequent parts of the pattern fail to match. + + +### 5. ONIG_SYN_OP2_PLUS_POSSESSIVE_INTERVAL (enable `r{n,m}+`) + +_Set in: Perl_NG, Perl, Java_ + +Enables support for the _possessive_ quantifier `{n,m}+`, which +works similarly to `{n,m}`, but which does not backtrack +after matching: Like the normal greedy quantifier, it matches as much as +possible, but it do not attempt to match _less_ than its maximum possible +extent if subsequent parts of the pattern fail to match. + + +### 6. ONIG_SYN_OP2_CCLASS_SET_OP (enable `&&` within `[...]`) + +_Set in: Oniguruma, Ruby, Java_ + +Enables support for character-class _intersection_. For example, with this +feature enabled, you can write `[a-z&&[^aeiou]]` to produce a character class +of only consonants, or `[\0-\37&&[^\n\r]]` to produce a character class of +all control codes _except_ newlines. + + +### 7. ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP (enable named captures `(?...)`) + +_Set in: Oniguruma, Ruby, Perl_NG_ + +Enables support for _naming_ capture groups, so that instead of having to +refer to captures by position (like `\3` or `$3`), you can refer to them by names +(like `server` and `path`). This supports the Perl/Ruby naming syntaxes `(?...)` +and `(?'name'...)`, but not the Python `(?P...)` syntax. + + +### 8. ONIG_SYN_OP2_ESC_K_NAMED_BACKREF (enable named backreferences `\k`) + +_Set in: Oniguruma, Ruby, Perl_NG_ + +Enables support for substituted backreferences by name, not just by position. +This supports using `\k'name'` in addition to supporting `\k`. This also +supports an Oniguruma-specific extension that lets you specify the _distance_ of +the match, if the capture matched multiple times, by writing `\k` or +`\k`. + + +### 9. ONIG_SYN_OP2_ESC_G_SUBEXP_CALL (enable backreferences `\g` and `\g`) + +_Set in: Oniguruma, Ruby, Perl_NG_ + +Enables support for substituted backreferences by both name and position using +the same syntax. This supports using `\g'name'` and `\g'1'` in addition to +supporting `\g` and `\g<1>`. + + +### 10. ONIG_SYN_OP2_ATMARK_CAPTURE_HISTORY (enable `(?@...)` and `(?@...)`) + +_Set in: none_ + +Enables support for _capture history_, which can answer via the `onig_*capture*()` +functions exactly which captures were matched, how many times, and where in the +input they were matched, by placing `?@` in front of the capture. Per Oniguruma's +regex syntax documentation (appendix A-5): + +`/(?@a)*/.match("aaa")` ==> `[<0-1>, <1-2>, <2-3>]` + +This can require substantial memory, is primarily useful for debugging, and is not +enabled by default in any syntax. + + +### 11. ONIG_SYN_OP2_ESC_CAPITAL_C_BAR_CONTROL (enable `\C-x`) + +_Set in: Oniguruma, Ruby_ + +Enables support for Ruby legacy control-code escapes, like `\C-m` or `\C-M` for code-point +13. In this shorthand form, control codes may be specified by `\C-` (for "Control") +followed by a single character (or equivalent), indicating which code point to represent, +based on that character's lowest five bits. So, like `\c`, you can represent code-point +10 with `\C-j`, but you can also represent it with `\C-*` as well. + +See also `ONIG_SYN_OP_ESC_C_CONTROL`, which enables the more-common `\cx` syntax. + + +### 12. ONIG_SYN_OP2_ESC_CAPITAL_M_BAR_META (enable `\M-x`) + +_Set in: Oniguruma, Ruby_ + +Enables support for Ruby legacy meta-code escapes. When you write `\M-x`, Oniguruma +will match an `x` whose 8th bit is set (i.e., the character code of `x` will be or'ed +with `0x80`). So, for example, you can match `\x81` using `\x81`, or you can write +`\M-\1`. This is mostly useful when working with legacy 8-bit character encodings. + + +### 13. ONIG_SYN_OP2_ESC_V_VTAB (enable `\v` as vertical tab) + +_Set in: Oniguruma, Python, Ruby, Java_ + +Enables support for a C-style `\v` escape code, meaning "vertical tab." If enabled, +`\v` will be equivalent to ASCII code point 11. + + +### 14. ONIG_SYN_OP2_ESC_U_HEX4 (enable `\uHHHH` for Unicode) + +_Set in: Oniguruma, Python, Ruby, Java_ + +Enables support for a Java-style `\uHHHH` escape code for representing Unicode +code-points by number, using up to four hexadecimal digits (up to `\uFFFF`). So, +for example, `\u221E` will match an infinity symbol, `竏杼. + +For code points larger than four digits, like the emoji `泅。` (aerial tramway, or code +point U+1F6A1), you must either represent the character directly using an encoding like +UTF-8, or you must enable support for `ONIG_SYN_OP_ESC_X_BRACE_HEX8` or +`ONIG_SYN_OP_ESC_O_BRACE_OCTAL`, which support more than four digits. + +(New feature as of Oniguruma 6.7.) + + +### 15. ONIG_SYN_OP2_ESC_GNU_BUF_ANCHOR (enable ``\` `` and `\'` anchors) + +_Set in: Emacs_ + +This flag makes the ``\` `` and `\'` escapes function identically to +`\A` and `\z`, respectively (when `ONIG_SYN_OP_ESC_AZ_BUF_ANCHOR` is enabled). + +These anchor forms are very obscure, and rarely supported by other regex libraries. + + +### 16. ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY (enable `\p{...}` and `\P{...}`) + +_Set in: Oniguruma, Python, Ruby, Perl_NG, Perl, Java_ + +Enables support for an alternate syntax for POSIX character classes; instead of +writing `[:alpha:]` when this is enabled, you can instead write `\p{alpha}`. + +See also `ONIG_SYN_OP_POSIX_BRACKET` for the classic POSIX form. + + +### 17. ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT (enable `\p{^...}` and `\P{^...}`) + +_Set in: Oniguruma, Python, Ruby, Perl_NG, Perl_ + +Enables support for an alternate syntax for POSIX character classes; instead of +writing `[:^alpha:]` when this is enabled, you can instead write `\p{^alpha}`. + +See also `ONIG_SYN_OP_POSIX_BRACKET` for the classic POSIX form. + + +### 18. ONIG_SYN_OP2_CHAR_PROPERTY_PREFIX_IS + +_(not presently used)_ + + +### 19. ONIG_SYN_OP2_ESC_H_XDIGIT (enable `\h` and `\H`) + +_Set in: Oniguruma, Ruby_ + +Enables support for the Ruby-specific shorthand `\h` and `\H` metacharacters. +Somewhat like `\d` matches decimal digits, `\h` matches hexadecimal digits 窶 that is, +characters in `[0-9a-fA-F]`. + +`\H` matches the opposite of whatever `\h` matches. + + +### 20. ONIG_SYN_OP2_INEFFECTIVE_ESCAPE (disable `\`) + +_Set in: ASIS_ + +If set, this disables all escape codes, shorthands, and metacharacters that start +with `\` (or whatever the configured escape character is), allowing `\` to be treated +as a literal `\`. + +You usually do not want this flag to be enabled. + + +### 21. ONIG_SYN_OP2_QMARK_LPAREN_IF_ELSE (enable `(?(...)then|else)`) + +_Set in: Oniguruma, Python, Ruby, Perl_NG, Perl_ + +Enables support for conditional inclusion of subsequent regex patterns based on whether +a prior named or numbered capture matched, or based on whether a pattern will +match. This supports many different forms, including: + + - `(?()then|else)` - condition based on a capture by name. + - `(?('foo')then|else)` - condition based on a capture by name. + - `(?(3)then|else)` - condition based on a capture by number. + - `(?(+3)then|else)` - forward conditional to a future match, by relative position. + - `(?(-3)then|else)` - backward conditional to a prior match, by relative position. + - `(?(foo)then|else)` - this matches a pattern `foo`. (foo is any sub-expression) + +(New feature as of Oniguruma 6.5.) + + +### 22. ONIG_SYN_OP2_ESC_CAPITAL_K_KEEP (enable `\K`) + +_Set in: Oniguruma, Python, Ruby, Perl_NG, Perl_ + +Enables support for `\K`, which excludes all content before it from the overall +regex match (i.e., capture #0). So, for example, pattern `foo\Kbar` would match +`foobar`, but capture #0 would only include `bar`. + +(New feature as of Oniguruma 6.5.) + + +### 23. ONIG_SYN_OP2_ESC_CAPITAL_R_GENERAL_NEWLINE (enable `\R`) + +_Set in: Oniguruma, Ruby, Perl_NG, Perl_ + +Enables support for `\R`, the "general newline" shorthand, which matches +`(\r\n|[\n\v\f\r\u0085\u2028\u2029])` (obviously, the Unicode values are cannot be +matched in ASCII encodings). + +(New feature as of Oniguruma 6.5.) + + +### 24. ONIG_SYN_OP2_ESC_CAPITAL_N_O_SUPER_DOT (enable `\N` and `\O`) + +_Set in: Oniguruma, Perl_NG, Perl_ + +Enables support for `\N` and `\O`. `\N` is "not a line break," which is much +like the standard `.` metacharacter, except that while `.` can be affected by +the single-line setting, `\N` always matches exactly one character that is not +one of the various line-break characters (like `\n` and `\r`). + +`\O` matches exactly one character, regardless of whether single-line or +multi-line mode are enabled or disabled. + +(New feature as of Oniguruma 6.5.) + + +### 25. ONIG_SYN_OP2_QMARK_TILDE_ABSENT_GROUP (enable `(?~...)`) + +_Set in: Oniguruma, Ruby, Perl_NG, Perl_ + +Enables support for the `(?~r)` "absent operator" syntax, which matches +as much as possible as long as the result _doesn't_ match pattern `r`. This is +_not_ the same as negative lookahead or negative lookbehind. + +Among the most useful examples of this is `\/\*(?~\*\/)\*\/`, which matches +C-style comments by simply saying "starts with /*, ends with */, and _doesn't_ +contain a */ in between." + +A full explanation of this feature is complicated, but it is useful, and an +excellent article about it is [available on Medium](https://medium.com/rubyinside/the-new-absent-operator-in-ruby-s-regular-expressions-7c3ef6cd0b99). + +(New feature as of Oniguruma 6.5.) + + +### 26. ONIG_SYN_OP2_ESC_X_Y_TEXT_SEGMENT (enable `\X` and `\Y` and `\y`) + +_Set in: Oniguruma, Ruby, Perl_NG, Perl_ + +`\X` is another variation on `.`, designed to support Unicode, in that it matches +a full _grapheme cluster_. In Unicode, `テ` can be encoded as one code point, +`U+00E0`, or as two, `U+0061 U+0300`. If those are further escaped using UTF-8, +the former becomes two bytes, and the latter becomes three. Unfortunately, `.` +would naively match only one or two bytes, depending on the encoding, and would +likely incorrectly match anything from just `a` to a broken half of a code point. +`\X` is designed to fix this: It matches the full `テ`, no matter how `テ` is +encoded or decomposed. + +`\y` matches a cluster boundary, i.e., a zero-width position between +graphemes, somewhat like `\b` matches boundaries between words. `\Y` matches +the _opposite_ of `\y`, that is, a zero-width position between code points in +the _middle_ of a grapheme. + +(New feature as of Oniguruma 6.6.) + + +### 27. ONIG_SYN_OP2_QMARK_PERL_SUBEXP_CALL (enable `(?R)` and `(?&name)`) + +_Set in: Perl_NG_ + +Enables support for substituted backreferences by both name and position using +Perl-5-specific syntax. This supports using `(?R3)` and `(?&name)` to reference +previous (and future) matches, similar to the more-common `\g<3>` and `\g` +backreferences. + +(New feature as of Oniguruma 6.7.) + + +### 28. ONIG_SYN_OP2_QMARK_BRACE_CALLOUT_CONTENTS (enable `(?{...})`) + +_Set in: Oniguruma, Perl_NG, Perl_ + +Enables support for Perl-style "callouts" 窶 pattern substitutions that result from +invoking a callback method. When `(?{foo})` is reached in a pattern, the callback +function set in `onig_set_progress_callout()` will be invoked, and be able to perform +custom computation during the pattern match (and during backtracking). + +Full documentation for this advanced feature can be found in the Oniguruma +`docs/CALLOUT.md` file, with an example in `samples/callout.c`. + +(New feature as of Oniguruma 6.8.) + + +### 29. ONIG_SYN_OP2_ASTERISK_CALLOUT_NAME (enable `(*name)`) + +_Set in: Oniguruma, Python, Perl_NG, Perl_ + +Enables support for Perl-style "callouts" 窶 pattern substitutions that result from +invoking a callback method. When `(*foo)` is reached in a pattern, the callback +function set in `onig_set_callout_of_name()` will be invoked, passing the given name +`foo` to it, and it can perform custom computation during the pattern match (and +during backtracking). + +Full documentation for this advanced feature can be found in the Oniguruma +`docs/CALLOUT.md` file, with an example in `samples/callout.c`. + +(New feature as of Oniguruma 6.8.) + + +### 30. ONIG_SYN_OP2_OPTION_ONIGURUMA (enable options `(?imxWSDPy)` and `(?-imxWDSP)`) + +_Set in: Oniguruma_ + +Enables support of regex options. (i,m,x,W,S,D,P,y) + +(New feature as of Oniguruma 6.9.2) + + - `i` - Case-insensitivity + - `m` - Multi-line mode (`.` can match `\n`) + - `x` - Extended pattern (free-formatting: whitespace will ignored) + - `W` - ASCII only word. + - `D` - ASCII only digit. + - `S` - ASCII only space. + - `P` - ASCII only POSIX properties. (includes W,D,S) + + +### 31. ONIG_SYN_OP2_QMARK_CAPITAL_P_NAME (enable `(?P...)` and `(?P=name)`) + +_Set in: Python_ + +(New feature as of Oniguruma 6.9.7) + +---------- + + +## Syntax Flags (syn) + + +This group contains rules to handle corner cases and constructs that are errors in +some syntaxes but not in others. + +### 0. ONIG_SYN_CONTEXT_INDEP_REPEAT_OPS (independent `?`, `*`, `+`, `{n,m}`) + +_Set in: Oniguruma, Python, Ruby, Perl_NG, Perl, Java, GnuRegex, PosixExtended_ + +This flag specifies how to handle operators like `?` and `*` when they aren't +directly attached to an operand, as in `^*` or `(*)`: Are they an error, are +they discarded, or are they taken as literals? If this flag is clear, they +are taken as literals; otherwise, the `ONIG_SYN_CONTEXT_INVALID_REPEAT_OPS` flag +determines if they are errors or if they are discarded. + +### 1. ONIG_SYN_CONTEXT_INVALID_REPEAT_OPS (error or ignore independent operators) + +_Set in: Oniguruma, Python, Ruby, Perl_NG, Perl, Java, GnuRegex, PosixExtended_ + +If `ONIG_SYN_CONTEXT_INDEP_REPEAT_OPS` is set, this flag controls what happens when +independent operators appear in a pattern: If this flag is set, then independent +operators produce an error message; if this flag is clear, then independent +operators are silently discarded. + +### 2. ONIG_SYN_ALLOW_UNMATCHED_CLOSE_SUBEXP (allow `...)...`) + +_Set in: PosixExtended_ + +This flag, if set, causes a `)` character without a preceding `(` to be treated as +a literal `)`, equivalent to `\)`. If this flag is clear, then an unmatched `)` +character will produce an error message. + +### 3. ONIG_SYN_ALLOW_INVALID_INTERVAL (allow `{???`) + +_Set in: Oniguruma, Python, Ruby, Perl_NG, Perl, Java, GnuRegex_ + +This flag, if set, causes an invalid range, like `foo{bar}` or `foo{}`, to be +silently discarded, as if `foo` had been written instead. If clear, an invalid +range will produce an error message. + +### 4. ONIG_SYN_ALLOW_INTERVAL_LOW_ABBREV (allow `{,n}` to mean `{0,n}`) + +_Set in: Oniguruma, Python, Ruby_ + +If this flag is set, then `r{,n}` will be treated as equivalent to writing +`{0,n}`. If this flag is clear, then `r{,n}` will produce an error message. + +Note that regardless of whether this flag is set or clear, if +`ONIG_SYN_OP_BRACE_INTERVAL` is enabled, then `r{n,}` will always be legal: This +flag *only* controls the behavior of the opposite form, `r{,n}`. + +### 5. ONIG_SYN_STRICT_CHECK_BACKREF (error on invalid backrefs) + +_Set in: none_ + +If this flag is set, an invalid backref, like `\1` in a pattern with no captures, +will produce an error. If this flag is clear, then an invalid backref will be +equivalent to the empty string. + +No built-in syntax has this flag enabled. + +### 6. ONIG_SYN_DIFFERENT_LEN_ALT_LOOK_BEHIND (allow `(?<=a|bc)`) + +_Set in: Oniguruma, Ruby, Java_ + +If this flag is set, lookbehind patterns with alternate options may have differing +lengths among those options. If this flag is clear, lookbehind patterns with options +must have each option have identical length to the other options. + +Oniguruma can handle either form, but not all regex engines can, so for compatibility, +Oniguruma allows you to cause regexes for other regex engines to fail if they might +depend on this rule. + +### 7. ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP (prefer `\k` over `\3`) + +_Set in: Oniguruma, Ruby, Perl_NG_ + +If this flag is set on the syntax *and* `ONIG_OPTION_CAPTURE_GROUP` is set when calling +Oniguruma, then if a name is used on any capture, all captures must also use names: A +single use of a named capture prohibits the use of numbered captures. + +### 8. ONIG_SYN_ALLOW_MULTIPLEX_DEFINITION_NAME (allow `(?)...(?)`) + +_Set in: Oniguruma, Ruby, Perl_NG_ + +If this flag is set, multiple capture groups may use the same name. If this flag is +clear, then reuse of a name will produce an error message. + +### 9. ONIG_SYN_FIXED_INTERVAL_IS_GREEDY_ONLY (`a{n}?` is equivalent to `(?:a{n})?`) + +_Set in: Oniguruma, Ruby_ + +If this flag is set, then intervals of a fixed size will ignore a lazy (non-greedy) +`?` quantifier and treat it as an optional match (an ordinary `r?`), since "match as +little as possible" is meaningless for a fixed-size interval. If this flag is clear, +then `r{n}?` will mean the same as `r{n}`, and the useless `?` will be discarded. + +### 10. ONIG_SYN_ISOLATED_OPTION_CONTINUE_BRANCH (`..(?i)..`) + +_Set in: Python, Perl_NG, Perl, Java_ + +If this flag is set, then an isolated option doesn't break the branch and affects until the end of the group (or end of the pattern). +If this flag is not set, then an isolated option is interpreted as the starting point of a new branch. `/a(?i)b|c/` ==> `/a(?i:b|c)/` + +### 11. ONIG_SYN_VARIABLE_LEN_LOOK_BEHIND (`(?<=...a+...)`) + +_Set in: Oniguruma, Java_ + +If this flag is set, then a variable length expressions are allowed in look-behind. + +### 12. ONIG_SYN_PYTHON (enable `\UHHHHHHHH` for Unicode) + +_Set in: Python_ + +(New feature as of Oniguruma 6.9.7) + +### 13. ONIG_SYN_WHOLE_OPTIONS (enable options `(?CLI)`) + +_Set in: Oniguruma_ + +(New feature as of Oniguruma 6.9.8) + +### 14. ONIG_SYN_BRE_ANCHOR_AT_EDGE_OF_SUBEXP (enable `\(^abc$\)`) + +_Set in: Grep, PosixBasic_ + +(New feature as of Oniguruma 6.9.9) + +### 20. ONIG_SYN_NOT_NEWLINE_IN_NEGATIVE_CC (add `\n` to `[^...]`) + +_Set in: Grep_ + +If this flag is set, all newline characters (like `\n`) will be excluded from a negative +character class automatically, as if the pattern had been written as `[^...\n]`. If this +flag is clear, negative character classes do not automatically exclude newlines, and +only exclude those characters and ranges written in them. + +### 21. ONIG_SYN_BACKSLASH_ESCAPE_IN_CC (allow `[...\w...]`) + +_Set in: Oniguruma, Python, Ruby, Perl_NG, Perl, Java, GnuRegex_ + +If this flag is set, shorthands like `\w` are allowed to describe characters in character +classes. If this flag is clear, shorthands like `\w` are treated as a redundantly-escaped +literal `w`. + +### 22. ONIG_SYN_ALLOW_EMPTY_RANGE_IN_CC (silently discard `[z-a]`) + +_Set in: Grep, Emacs_ + +If this flag is set, then character ranges like `[z-a]` that are broken or contain no +characters will be silently ignored. If this flag is clear, then broken or empty +character ranges will produce an error message. + +### 23. ONIG_SYN_ALLOW_DOUBLE_RANGE_OP_IN_CC (treat `[0-9-a]` as `[0-9\-a]`) + +_Set in: Oniguruma, Python, Ruby, Perl_NG, Perl, Java, GnuRegex, PosixExtended_ + +If this flag is set, then a trailing `-` after a character range will be taken as a +literal `-`, as if it had been escaped as `\-`. If this flag is clear, then a trailing +`-` after a character range will produce an error message. + +### 24. ONIG_SYN_WARN_CC_OP_NOT_ESCAPED (warn on `[[...]` and `[-x]`) + +_Set in: Oniguruma, Ruby_ + +If this flag is set, Oniguruma will be stricter about warning for bad forms in +character classes: `[[...]` will produce a warning, but `[\[...]` will not; +`[-x]` will produce a warning, but `[\-x]` will not; `[x&&-y]` will produce a warning, +while `[x&&\-y]` will not; and so on. If this flag is clear, all of these warnings +will be silently discarded. + +### 25. ONIG_SYN_WARN_REDUNDANT_NESTED_REPEAT (warn on `(?:a*)+`) + +_Set in: Oniguruma, Ruby_ + +If this flag is set, Oniguruma will warn about nested repeat operators those have no meaning, like `(?:a*)+`. +If this flag is clear, Oniguruma will allow the nested repeat operators without warning about them. + +### 26. ONIG_SYN_ALLOW_INVALID_CODE_END_OF_RANGE_IN_CC (allow `[a-\x{7fffffff}]`) + +_Set in: Oniguruma_ + +If this flag is set, then invalid code points at the end of range in character class are allowed. + +### 27. ONIG_SYN_ALLOW_CHAR_TYPE_FOLLOWED_BY_MINUS_IN_CC (allow `[\w-%]` to mean `[\w\-%]`) + +_Set in: Perl_NG, Perl, Java_ + +(New feature as of Oniguruma 6.9.10) + +### 31. ONIG_SYN_CONTEXT_INDEP_ANCHORS + +_Set in: Oniguruma, Python, Ruby, Perl_NG, Perl, Java, GnuRegex, PosixExtended_ + +Not currently used, and does nothing. (But still set in several syntaxes for some +reason.) + +---------- + +## Usage tables + +These tables show which of the built-in syntaxes use which flags and options, for easy comparison between them. + +### Group One Flags (op) + +| ID | Option | Onig | Pythn | Ruby | PeNG | Perl | Java | Gnu | Grep | Emacs | PosEx | PosB | ASIS | +| ----- | ------------------------------------------ | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | +| 0 | `ONIG_SYN_OP_VARIABLE_META_CHARACTERS` | - | - | - | - | - | - | - | - | - | - | - | - | +| 1 | `ONIG_SYN_OP_DOT_ANYCHAR` | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | - | +| 2 | `ONIG_SYN_OP_ASTERISK_ZERO_INF` | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | - | +| 3 | `ONIG_SYN_OP_ESC_ASTERISK_ZERO_INF` | - | - | - | - | - | - | - | - | - | - | - | - | +| 4 | `ONIG_SYN_OP_PLUS_ONE_INF` | Yes | Yes | Yes | Yes | Yes | Yes | Yes | - | Yes | Yes | - | - | +| 5 | `ONIG_SYN_OP_ESC_PLUS_ONE_INF` | - | - | - | - | - | - | - | Yes | - | - | - | - | +| 6 | `ONIG_SYN_OP_QMARK_ZERO_ONE` | Yes | Yes | Yes | Yes | Yes | Yes | Yes | - | Yes | Yes | - | - | +| 7 | `ONIG_SYN_OP_ESC_QMARK_ZERO_ONE` | - | - | - | - | - | - | - | Yes | - | - | - | - | +| 8 | `ONIG_SYN_OP_BRACE_INTERVAL` | Yes | Yes | Yes | Yes | Yes | Yes | Yes | - | - | Yes | - | - | +| 9 | `ONIG_SYN_OP_ESC_BRACE_INTERVAL` | - | - | - | - | - | - | - | Yes | Yes | - | Yes | - | +| 10 | `ONIG_SYN_OP_VBAR_ALT` | Yes | Yes | Yes | Yes | Yes | Yes | Yes | - | - | Yes | - | - | +| 11 | `ONIG_SYN_OP_ESC_VBAR_ALT` | - | - | - | - | - | - | - | Yes | Yes | - | - | - | +| 12 | `ONIG_SYN_OP_LPAREN_SUBEXP` | Yes | Yes | Yes | Yes | Yes | Yes | Yes | - | - | Yes | - | - | +| 13 | `ONIG_SYN_OP_ESC_LPAREN_SUBEXP` | - | - | - | - | - | - | - | Yes | Yes | - | Yes | - | +| 14 | `ONIG_SYN_OP_ESC_AZ_BUF_ANCHOR` | Yes | Yes | Yes | Yes | Yes | Yes | Yes | - | - | - | - | - | +| 15 | `ONIG_SYN_OP_ESC_CAPITAL_G_BEGIN_ANCHOR` | Yes | Yes | Yes | Yes | Yes | Yes | Yes | - | - | - | - | - | +| 16 | `ONIG_SYN_OP_DECIMAL_BACKREF` | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | - | +| 17 | `ONIG_SYN_OP_BRACKET_CC` | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | - | +| 18 | `ONIG_SYN_OP_ESC_W_WORD` | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | - | - | - | - | +| 19 | `ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END` | - | - | - | - | - | - | Yes | Yes | - | - | - | - | +| 20 | `ONIG_SYN_OP_ESC_B_WORD_BOUND` | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | - | - | - | - | +| 21 | `ONIG_SYN_OP_ESC_S_WHITE_SPACE` | Yes | Yes | Yes | Yes | Yes | Yes | Yes | - | - | - | - | - | +| 22 | `ONIG_SYN_OP_ESC_D_DIGIT` | Yes | Yes | Yes | Yes | Yes | Yes | Yes | - | - | - | - | - | +| 23 | `ONIG_SYN_OP_LINE_ANCHOR` | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | - | +| 24 | `ONIG_SYN_OP_POSIX_BRACKET` | Yes | - | Yes | Yes | Yes | - | Yes | Yes | - | Yes | Yes | - | +| 25 | `ONIG_SYN_OP_QMARK_NON_GREEDY` | Yes | Yes | Yes | Yes | Yes | Yes | - | - | - | - | - | - | +| 26 | `ONIG_SYN_OP_ESC_CONTROL_CHARS` | Yes | Yes | Yes | Yes | Yes | Yes | - | - | Yes | Yes | Yes | - | +| 27 | `ONIG_SYN_OP_ESC_C_CONTROL` | Yes | Yes | Yes | Yes | Yes | Yes | - | - | - | - | - | - | +| 28 | `ONIG_SYN_OP_ESC_OCTAL3` | Yes | Yes | Yes | Yes | Yes | Yes | - | - | - | - | - | - | +| 29 | `ONIG_SYN_OP_ESC_X_HEX2` | Yes | Yes | Yes | Yes | Yes | Yes | - | - | - | - | - | - | +| 30 | `ONIG_SYN_OP_ESC_X_BRACE_HEX8` | Yes | - | Yes | Yes | Yes | - | - | - | - | - | - | - | +| 31 | `ONIG_SYN_OP_ESC_O_BRACE_OCTAL` | Yes | - | Yes | Yes | Yes | - | - | - | - | - | - | - | + +### Group Two Flags (op2) + +| ID | Option | Onig | Pythn | Ruby | PeNG | Perl | Java | Gnu | Grep | Emacs | PosEx | PosB | ASIS | +| ----- | ---------------------------------------------- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | +| 0 | `ONIG_SYN_OP2_ESC_CAPITAL_Q_QUOTE` | - | - | - | Yes | Yes | Yes | - | - | - | - | - | - | +| 1 | `ONIG_SYN_OP2_QMARK_GROUP_EFFECT` | Yes | Yes | Yes | Yes | Yes | Yes | - | - | Yes | - | - | - | +| 2 | `ONIG_SYN_OP2_OPTION_PERL` | - | Yes | - | Yes | Yes | Yes | - | - | - | - | - | - | +| 3 | `ONIG_SYN_OP2_OPTION_RUBY` | - | - | Yes | - | - | - | - | - | - | - | - | - | +| 4 | `ONIG_SYN_OP2_PLUS_POSSESSIVE_REPEAT` | Yes | - | Yes | Yes | Yes | Yes | - | - | - | - | - | - | +| 5 | `ONIG_SYN_OP2_PLUS_POSSESSIVE_INTERVAL` | - | - | - | Yes | Yes | Yes | - | - | - | - | - | - | +| 6 | `ONIG_SYN_OP2_CCLASS_SET_OP` | Yes | - | Yes | - | - | Yes | - | - | - | - | - | - | +| 7 | `ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP` | Yes | - | Yes | Yes | - | - | - | - | - | - | - | - | +| 8 | `ONIG_SYN_OP2_ESC_K_NAMED_BACKREF` | Yes | - | Yes | Yes | - | - | - | - | - | - | - | - | +| 9 | `ONIG_SYN_OP2_ESC_G_SUBEXP_CALL` | Yes | - | Yes | Yes | - | - | - | - | - | - | - | - | +| 10 | `ONIG_SYN_OP2_ATMARK_CAPTURE_HISTORY` | - | - | - | - | - | - | - | - | - | - | - | - | +| 11 | `ONIG_SYN_OP2_ESC_CAPITAL_C_BAR_CONTROL` | Yes | - | Yes | - | - | - | - | - | - | - | - | - | +| 12 | `ONIG_SYN_OP2_ESC_CAPITAL_M_BAR_META` | Yes | - | Yes | - | - | - | - | - | - | - | - | - | +| 13 | `ONIG_SYN_OP2_ESC_V_VTAB` | Yes | Yes | Yes | - | - | Yes | - | - | - | - | - | - | +| 14 | `ONIG_SYN_OP2_ESC_U_HEX4` | Yes | Yes | Yes | - | - | Yes | - | - | - | - | - | - | +| 15 | `ONIG_SYN_OP2_ESC_GNU_BUF_ANCHOR` | - | - | - | - | - | - | - | - | Yes | - | - | - | +| 16 | `ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY` | Yes | Yes | Yes | Yes | Yes | Yes | - | - | - | - | - | - | +| 17 | `ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT` | Yes | Yes | Yes | Yes | Yes | - | - | - | - | - | - | - | +| 19 | `ONIG_SYN_OP2_ESC_H_XDIGIT` | Yes | - | Yes | - | - | - | - | - | - | - | - | - | +| 20 | `ONIG_SYN_OP2_INEFFECTIVE_ESCAPE` | - | - | - | - | - | - | - | - | - | - | - | Yes | +| 21 | `ONIG_SYN_OP2_QMARK_LPAREN_IF_ELSE` | Yes | Yes | Yes | Yes | Yes | - | - | - | - | - | - | - | +| 22 | `ONIG_SYN_OP2_ESC_CAPITAL_K_KEEP` | Yes | Yes | Yes | Yes | Yes | - | - | - | - | - | - | - | +| 23 | `ONIG_SYN_OP2_ESC_CAPITAL_R_GENERAL_NEWLINE` | Yes | - | Yes | Yes | Yes | - | - | - | - | - | - | - | +| 24 | `ONIG_SYN_OP2_ESC_CAPITAL_N_O_SUPER_DOT` | Yes | - | - | Yes | Yes | - | - | - | - | - | - | - | +| 25 | `ONIG_SYN_OP2_QMARK_TILDE_ABSENT_GROUP` | Yes | - | Yes | Yes | Yes | - | - | - | - | - | - | - | +| 26 | `ONIG_SYN_OP2_ESC_X_Y_TEXT_SEGMENT` | Yes | - | Yes | Yes | Yes | - | - | - | - | - | - | - | +| 27 | `ONIG_SYN_OP2_QMARK_PERL_SUBEXP_CALL` | - | - | - | Yes | - | - | - | - | - | - | - | - | +| 28 | `ONIG_SYN_OP2_QMARK_BRACE_CALLOUT_CONTENTS` | Yes | - | - | Yes | Yes | - | - | - | - | - | - | - | +| 29 | `ONIG_SYN_OP2_ASTERISK_CALLOUT_NAME` | Yes | Yes | - | Yes | Yes | - | - | - | - | - | - | - | +| 30 | `ONIG_SYN_OP2_OPTION_ONIGURUMA` | Yes | - | - | - | - | - | - | - | - | - | - | - | +| 31 | `ONIG_SYN_OP2_QMARK_CAPITAL_P_NAME` | - | Yes | - | - | - | - | - | - | - | - | - | - | + +### Syntax Flags (syn) + +| ID | Option | Onig | Pythn | Ruby | PeNG | Perl | Java | Gnu | Grep | Emacs | PosEx | PosB | ASIS | +| ----- | ---------------------------------------------------- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | +| 0 | `ONIG_SYN_CONTEXT_INDEP_REPEAT_OPS` | Yes | Yes | Yes | Yes | Yes | Yes | Yes | - | - | Yes | - | - | +| 1 | `ONIG_SYN_CONTEXT_INVALID_REPEAT_OPS` | Yes | Yes | Yes | Yes | Yes | Yes | Yes | - | - | Yes | - | - | +| 2 | `ONIG_SYN_ALLOW_UNMATCHED_CLOSE_SUBEXP` | - | - | - | - | - | - | - | - | - | Yes | - | - | +| 3 | `ONIG_SYN_ALLOW_INVALID_INTERVAL` | Yes | Yes | Yes | Yes | Yes | Yes | Yes | - | - | - | - | - | +| 4 | `ONIG_SYN_ALLOW_INTERVAL_LOW_ABBREV` | Yes | Yes | Yes | - | - | - | - | - | - | - | - | - | +| 5 | `ONIG_SYN_STRICT_CHECK_BACKREF` | - | - | - | - | - | - | - | - | - | - | - | - | +| 6 | `ONIG_SYN_DIFFERENT_LEN_ALT_LOOK_BEHIND` | Yes | - | Yes | - | - | Yes | - | - | - | - | - | - | +| 7 | `ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP` | Yes | - | Yes | Yes | - | - | - | - | - | - | - | - | +| 8 | `ONIG_SYN_ALLOW_MULTIPLEX_DEFINITION_NAME` | Yes | - | Yes | Yes | - | - | - | - | - | - | - | - | +| 9 | `ONIG_SYN_FIXED_INTERVAL_IS_GREEDY_ONLY` | Yes | - | Yes | - | - | - | - | - | - | - | - | - | +| 10 | `ONIG_SYN_ISOLATED_OPTION_CONTINUE_BRANCH` | - | Yes | - | Yes | Yes | Yes | - | - | - | - | - | - | +| 11 | `ONIG_SYN_VARIABLE_LEN_LOOK_BEHIND` | Yes | - | - | - | - | Yes | - | - | - | - | - | - | +| 12 | `ONIG_SYN_PYTHON` | - | Yes | - | - | - | - | - | - | - | - | - | - | +| 13 | `ONIG_SYN_WHOLE_OPTIONS` | Yes | - | - | - | - | - | - | - | - | - | - | - | +| 14 | `ONIG_SYN_BRE_ANCHOR_AT_EDGE_OF_SUBEXP` | - | - | - | - | - | - | - | Yes | - | - | Yes | - | +| 20 | `ONIG_SYN_NOT_NEWLINE_IN_NEGATIVE_CC` | - | - | - | - | - | - | - | Yes | - | - | - | - | +| 21 | `ONIG_SYN_BACKSLASH_ESCAPE_IN_CC` | Yes | Yes | Yes | Yes | Yes | Yes | Yes | - | - | - | - | - | +| 22 | `ONIG_SYN_ALLOW_EMPTY_RANGE_IN_CC` | - | - | - | - | - | - | - | Yes | Yes | - | - | - | +| 23 | `ONIG_SYN_ALLOW_DOUBLE_RANGE_OP_IN_CC` | Yes | Yes | Yes | Yes | Yes | Yes | Yes | - | - | Yes | - | - | +| 24 | `ONIG_SYN_WARN_CC_OP_NOT_ESCAPED` | Yes | - | Yes | - | - | - | - | - | - | - | - | - | +| 25 | `ONIG_SYN_WARN_REDUNDANT_NESTED_REPEAT` | Yes | - | Yes | - | - | - | - | - | - | - | - | - | +| 26 | `ONIG_SYN_ALLOW_INVALID_CODE_END_OF_RANGE_IN_CC` | Yes | - | - | - | - | - | - | - | - | - | - | - | +| 27 | `ONIG_SYN_ALLOW_CHAR_TYPE_FOLLOWED_BY_MINUS_IN_CC` | - | - | - | Yes | Yes | Yes | - | - | - | - | - | - | +| 31 | `ONIG_SYN_CONTEXT_INDEP_ANCHORS` | Yes | Yes | Yes | Yes | Yes | Yes | Yes | - | - | Yes | - | - | diff --git a/vendor/oniguruma/oniguruma/doc/UNICODE_PROPERTIES b/vendor/oniguruma/oniguruma/doc/UNICODE_PROPERTIES new file mode 100644 index 0000000..7ab6d78 --- /dev/null +++ b/vendor/oniguruma/oniguruma/doc/UNICODE_PROPERTIES @@ -0,0 +1,873 @@ +Unicode Properties (Unicode Version: 16.0.0, Emoji: 16.0) + +ASCII_Hex_Digit +Adlam +Ahom +Alphabetic +Anatolian_Hieroglyphs +Any +Arabic +Armenian +Assigned +Avestan +Balinese +Bamum +Bassa_Vah +Batak +Bengali +Bhaiksuki +Bidi_Control +Bopomofo +Brahmi +Braille +Buginese +Buhid +C +Canadian_Aboriginal +Carian +Case_Ignorable +Cased +Caucasian_Albanian +Cc +Cf +Chakma +Cham +Changes_When_Casefolded +Changes_When_Casemapped +Changes_When_Lowercased +Changes_When_Titlecased +Changes_When_Uppercased +Cherokee +Chorasmian +Cn +Co +Common +Coptic +Cs +Cuneiform +Cypriot +Cypro_Minoan +Cyrillic +Dash +Default_Ignorable_Code_Point +Deprecated +Deseret +Devanagari +Diacritic +Dives_Akuru +Dogra +Duployan +Egyptian_Hieroglyphs +Elbasan +Elymaic +Emoji +Emoji_Component +Emoji_Modifier +Emoji_Modifier_Base +Emoji_Presentation +Ethiopic +Extended_Pictographic +Extender +Garay +Georgian +Glagolitic +Gothic +Grantha +Grapheme_Base +Grapheme_Extend +Grapheme_Link +Greek +Gujarati +Gunjala_Gondi +Gurmukhi +Gurung_Khema +Han +Hangul +Hanifi_Rohingya +Hanunoo +Hatran +Hebrew +Hex_Digit +Hiragana +Hyphen +IDS_Binary_Operator +IDS_Trinary_Operator +IDS_Unary_Operator +ID_Compat_Math_Continue +ID_Compat_Math_Start +ID_Continue +ID_Start +Ideographic +Imperial_Aramaic +InCB +Inherited +Inscriptional_Pahlavi +Inscriptional_Parthian +Javanese +Join_Control +Kaithi +Kannada +Katakana +Kawi +Kayah_Li +Kharoshthi +Khitan_Small_Script +Khmer +Khojki +Khudawadi +Kirat_Rai +L +LC +Lao +Latin +Lepcha +Limbu +Linear_A +Linear_B +Lisu +Ll +Lm +Lo +Logical_Order_Exception +Lowercase +Lt +Lu +Lycian +Lydian +M +Mahajani +Makasar +Malayalam +Mandaic +Manichaean +Marchen +Masaram_Gondi +Math +Mc +Me +Medefaidrin +Meetei_Mayek +Mende_Kikakui +Meroitic_Cursive +Meroitic_Hieroglyphs +Miao +Mn +Modi +Modifier_Combining_Mark +Mongolian +Mro +Multani +Myanmar +N +Nabataean +Nag_Mundari +Nandinagari +Nd +New_Tai_Lue +Newa +Nko +Nl +No +Noncharacter_Code_Point +Nushu +Nyiakeng_Puachue_Hmong +Ogham +Ol_Chiki +Ol_Onal +Old_Hungarian +Old_Italic +Old_North_Arabian +Old_Permic +Old_Persian +Old_Sogdian +Old_South_Arabian +Old_Turkic +Old_Uyghur +Oriya +Osage +Osmanya +Other_Alphabetic +Other_Default_Ignorable_Code_Point +Other_Grapheme_Extend +Other_ID_Continue +Other_ID_Start +Other_Lowercase +Other_Math +Other_Uppercase +P +Pahawh_Hmong +Palmyrene +Pattern_Syntax +Pattern_White_Space +Pau_Cin_Hau +Pc +Pd +Pe +Pf +Phags_Pa +Phoenician +Pi +Po +Prepended_Concatenation_Mark +Ps +Psalter_Pahlavi +Quotation_Mark +Radical +Regional_Indicator +Rejang +Runic +S +Samaritan +Saurashtra +Sc +Sentence_Terminal +Sharada +Shavian +Siddham +SignWriting +Sinhala +Sk +Sm +So +Soft_Dotted +Sogdian +Sora_Sompeng +Soyombo +Sundanese +Sunuwar +Syloti_Nagri +Syriac +Tagalog +Tagbanwa +Tai_Le +Tai_Tham +Tai_Viet +Takri +Tamil +Tangsa +Tangut +Telugu +Terminal_Punctuation +Thaana +Thai +Tibetan +Tifinagh +Tirhuta +Todhri +Toto +Tulu_Tigalari +Ugaritic +Unified_Ideograph +Unknown +Uppercase +Vai +Variation_Selector +Vithkuqi +Wancho +Warang_Citi +White_Space +XID_Continue +XID_Start +Yezidi +Yi +Z +Zanabazar_Square +Zl +Zp +Zs +Adlm +Aghb +AHex +Arab +Armi +Armn +Avst +Bali +Bamu +Bass +Batk +Beng +Bhks +Bidi_C +Bopo +Brah +Brai +Bugi +Buhd +Cakm +Cans +Cari +Cased_Letter +Cher +Chrs +CI +Close_Punctuation +Combining_Mark +Connector_Punctuation +Control +Copt +Cpmn +Cprt +Currency_Symbol +CWCF +CWCM +CWL +CWT +CWU +Cyrl +Dash_Punctuation +Decimal_Number +Dep +Deva +DI +Dia +Diak +Dogr +Dsrt +Dupl +EBase +EComp +Egyp +Elba +Elym +EMod +Enclosing_Mark +EPres +Ethi +Ext +ExtPict +Final_Punctuation +Format +Gara +Geor +Glag +Gong +Gonm +Goth +Gran +Gr_Base +Grek +Gr_Ext +Gr_Link +Gujr +Gukh +Guru +Hang +Hani +Hano +Hatr +Hebr +Hex +Hira +Hluw +Hmng +Hmnp +Hung +IDC +Ideo +IDS +IDSB +IDST +IDSU +Initial_Punctuation +Ital +Java +Join_C +Kali +Kana +Khar +Khmr +Khoj +Kits +Knda +Krai +Kthi +Lana +Laoo +Latn +Lepc +Letter +Letter_Number +Limb +Lina +Linb +Line_Separator +LOE +Lowercase_Letter +Lyci +Lydi +Mahj +Maka +Mand +Mani +Marc +Mark +Math_Symbol +MCM +Medf +Mend +Merc +Mero +Mlym +Modifier_Letter +Modifier_Symbol +Mong +Mroo +Mtei +Mult +Mymr +Nagm +Nand +Narb +Nbat +NChar +Nkoo +Nonspacing_Mark +Nshu +Number +OAlpha +ODI +Ogam +OGr_Ext +OIDC +OIDS +Olck +OLower +OMath +Onao +Open_Punctuation +Orkh +Orya +Osge +Osma +Other +Other_Letter +Other_Number +Other_Punctuation +Other_Symbol +Ougr +OUpper +Palm +Paragraph_Separator +Pat_Syn +Pat_WS +Pauc +PCM +Perm +Phag +Phli +Phlp +Phnx +Plrd +Private_Use +Prti +punct +Punctuation +Qaac +Qaai +QMark +RI +Rjng +Rohg +Runr +Samr +Sarb +Saur +SD +Separator +Sgnw +Shaw +Shrd +Sidd +Sind +Sinh +Sogd +Sogo +Sora +Soyo +Space_Separator +Spacing_Mark +STerm +Sund +Sunu +Surrogate +Sylo +Symbol +Syrc +Tagb +Takr +Tale +Talu +Taml +Tang +Tavt +Telu +Term +Tfng +Tglg +Thaa +Tibt +Tirh +Titlecase_Letter +Tnsa +Todr +Tutg +Ugar +UIdeo +Unassigned +Uppercase_Letter +Vaii +Vith +VS +Wara +Wcho +WSpace +XIDC +XIDS +Xpeo +Xsux +Yezi +Yiii +Zanb +Zinh +Zyyy +Zzzz +In_Basic_Latin +In_Latin_1_Supplement +In_Latin_Extended_A +In_Latin_Extended_B +In_IPA_Extensions +In_Spacing_Modifier_Letters +In_Combining_Diacritical_Marks +In_Greek_and_Coptic +In_Cyrillic +In_Cyrillic_Supplement +In_Armenian +In_Hebrew +In_Arabic +In_Syriac +In_Arabic_Supplement +In_Thaana +In_NKo +In_Samaritan +In_Mandaic +In_Syriac_Supplement +In_Arabic_Extended_B +In_Arabic_Extended_A +In_Devanagari +In_Bengali +In_Gurmukhi +In_Gujarati +In_Oriya +In_Tamil +In_Telugu +In_Kannada +In_Malayalam +In_Sinhala +In_Thai +In_Lao +In_Tibetan +In_Myanmar +In_Georgian +In_Hangul_Jamo +In_Ethiopic +In_Ethiopic_Supplement +In_Cherokee +In_Unified_Canadian_Aboriginal_Syllabics +In_Ogham +In_Runic +In_Tagalog +In_Hanunoo +In_Buhid +In_Tagbanwa +In_Khmer +In_Mongolian +In_Unified_Canadian_Aboriginal_Syllabics_Extended +In_Limbu +In_Tai_Le +In_New_Tai_Lue +In_Khmer_Symbols +In_Buginese +In_Tai_Tham +In_Combining_Diacritical_Marks_Extended +In_Balinese +In_Sundanese +In_Batak +In_Lepcha +In_Ol_Chiki +In_Cyrillic_Extended_C +In_Georgian_Extended +In_Sundanese_Supplement +In_Vedic_Extensions +In_Phonetic_Extensions +In_Phonetic_Extensions_Supplement +In_Combining_Diacritical_Marks_Supplement +In_Latin_Extended_Additional +In_Greek_Extended +In_General_Punctuation +In_Superscripts_and_Subscripts +In_Currency_Symbols +In_Combining_Diacritical_Marks_for_Symbols +In_Letterlike_Symbols +In_Number_Forms +In_Arrows +In_Mathematical_Operators +In_Miscellaneous_Technical +In_Control_Pictures +In_Optical_Character_Recognition +In_Enclosed_Alphanumerics +In_Box_Drawing +In_Block_Elements +In_Geometric_Shapes +In_Miscellaneous_Symbols +In_Dingbats +In_Miscellaneous_Mathematical_Symbols_A +In_Supplemental_Arrows_A +In_Braille_Patterns +In_Supplemental_Arrows_B +In_Miscellaneous_Mathematical_Symbols_B +In_Supplemental_Mathematical_Operators +In_Miscellaneous_Symbols_and_Arrows +In_Glagolitic +In_Latin_Extended_C +In_Coptic +In_Georgian_Supplement +In_Tifinagh +In_Ethiopic_Extended +In_Cyrillic_Extended_A +In_Supplemental_Punctuation +In_CJK_Radicals_Supplement +In_Kangxi_Radicals +In_Ideographic_Description_Characters +In_CJK_Symbols_and_Punctuation +In_Hiragana +In_Katakana +In_Bopomofo +In_Hangul_Compatibility_Jamo +In_Kanbun +In_Bopomofo_Extended +In_CJK_Strokes +In_Katakana_Phonetic_Extensions +In_Enclosed_CJK_Letters_and_Months +In_CJK_Compatibility +In_CJK_Unified_Ideographs_Extension_A +In_Yijing_Hexagram_Symbols +In_CJK_Unified_Ideographs +In_Yi_Syllables +In_Yi_Radicals +In_Lisu +In_Vai +In_Cyrillic_Extended_B +In_Bamum +In_Modifier_Tone_Letters +In_Latin_Extended_D +In_Syloti_Nagri +In_Common_Indic_Number_Forms +In_Phags_pa +In_Saurashtra +In_Devanagari_Extended +In_Kayah_Li +In_Rejang +In_Hangul_Jamo_Extended_A +In_Javanese +In_Myanmar_Extended_B +In_Cham +In_Myanmar_Extended_A +In_Tai_Viet +In_Meetei_Mayek_Extensions +In_Ethiopic_Extended_A +In_Latin_Extended_E +In_Cherokee_Supplement +In_Meetei_Mayek +In_Hangul_Syllables +In_Hangul_Jamo_Extended_B +In_High_Surrogates +In_High_Private_Use_Surrogates +In_Low_Surrogates +In_Private_Use_Area +In_CJK_Compatibility_Ideographs +In_Alphabetic_Presentation_Forms +In_Arabic_Presentation_Forms_A +In_Variation_Selectors +In_Vertical_Forms +In_Combining_Half_Marks +In_CJK_Compatibility_Forms +In_Small_Form_Variants +In_Arabic_Presentation_Forms_B +In_Halfwidth_and_Fullwidth_Forms +In_Specials +In_Linear_B_Syllabary +In_Linear_B_Ideograms +In_Aegean_Numbers +In_Ancient_Greek_Numbers +In_Ancient_Symbols +In_Phaistos_Disc +In_Lycian +In_Carian +In_Coptic_Epact_Numbers +In_Old_Italic +In_Gothic +In_Old_Permic +In_Ugaritic +In_Old_Persian +In_Deseret +In_Shavian +In_Osmanya +In_Osage +In_Elbasan +In_Caucasian_Albanian +In_Vithkuqi +In_Todhri +In_Linear_A +In_Latin_Extended_F +In_Cypriot_Syllabary +In_Imperial_Aramaic +In_Palmyrene +In_Nabataean +In_Hatran +In_Phoenician +In_Lydian +In_Meroitic_Hieroglyphs +In_Meroitic_Cursive +In_Kharoshthi +In_Old_South_Arabian +In_Old_North_Arabian +In_Manichaean +In_Avestan +In_Inscriptional_Parthian +In_Inscriptional_Pahlavi +In_Psalter_Pahlavi +In_Old_Turkic +In_Old_Hungarian +In_Hanifi_Rohingya +In_Garay +In_Rumi_Numeral_Symbols +In_Yezidi +In_Arabic_Extended_C +In_Old_Sogdian +In_Sogdian +In_Old_Uyghur +In_Chorasmian +In_Elymaic +In_Brahmi +In_Kaithi +In_Sora_Sompeng +In_Chakma +In_Mahajani +In_Sharada +In_Sinhala_Archaic_Numbers +In_Khojki +In_Multani +In_Khudawadi +In_Grantha +In_Tulu_Tigalari +In_Newa +In_Tirhuta +In_Siddham +In_Modi +In_Mongolian_Supplement +In_Takri +In_Myanmar_Extended_C +In_Ahom +In_Dogra +In_Warang_Citi +In_Dives_Akuru +In_Nandinagari +In_Zanabazar_Square +In_Soyombo +In_Unified_Canadian_Aboriginal_Syllabics_Extended_A +In_Pau_Cin_Hau +In_Devanagari_Extended_A +In_Sunuwar +In_Bhaiksuki +In_Marchen +In_Masaram_Gondi +In_Gunjala_Gondi +In_Makasar +In_Kawi +In_Lisu_Supplement +In_Tamil_Supplement +In_Cuneiform +In_Cuneiform_Numbers_and_Punctuation +In_Early_Dynastic_Cuneiform +In_Cypro_Minoan +In_Egyptian_Hieroglyphs +In_Egyptian_Hieroglyph_Format_Controls +In_Egyptian_Hieroglyphs_Extended_A +In_Anatolian_Hieroglyphs +In_Gurung_Khema +In_Bamum_Supplement +In_Mro +In_Tangsa +In_Bassa_Vah +In_Pahawh_Hmong +In_Kirat_Rai +In_Medefaidrin +In_Miao +In_Ideographic_Symbols_and_Punctuation +In_Tangut +In_Tangut_Components +In_Khitan_Small_Script +In_Tangut_Supplement +In_Kana_Extended_B +In_Kana_Supplement +In_Kana_Extended_A +In_Small_Kana_Extension +In_Nushu +In_Duployan +In_Shorthand_Format_Controls +In_Symbols_for_Legacy_Computing_Supplement +In_Znamenny_Musical_Notation +In_Byzantine_Musical_Symbols +In_Musical_Symbols +In_Ancient_Greek_Musical_Notation +In_Kaktovik_Numerals +In_Mayan_Numerals +In_Tai_Xuan_Jing_Symbols +In_Counting_Rod_Numerals +In_Mathematical_Alphanumeric_Symbols +In_Sutton_SignWriting +In_Latin_Extended_G +In_Glagolitic_Supplement +In_Cyrillic_Extended_D +In_Nyiakeng_Puachue_Hmong +In_Toto +In_Wancho +In_Nag_Mundari +In_Ol_Onal +In_Ethiopic_Extended_B +In_Mende_Kikakui +In_Adlam +In_Indic_Siyaq_Numbers +In_Ottoman_Siyaq_Numbers +In_Arabic_Mathematical_Alphabetic_Symbols +In_Mahjong_Tiles +In_Domino_Tiles +In_Playing_Cards +In_Enclosed_Alphanumeric_Supplement +In_Enclosed_Ideographic_Supplement +In_Miscellaneous_Symbols_and_Pictographs +In_Emoticons +In_Ornamental_Dingbats +In_Transport_and_Map_Symbols +In_Alchemical_Symbols +In_Geometric_Shapes_Extended +In_Supplemental_Arrows_C +In_Supplemental_Symbols_and_Pictographs +In_Chess_Symbols +In_Symbols_and_Pictographs_Extended_A +In_Symbols_for_Legacy_Computing +In_CJK_Unified_Ideographs_Extension_B +In_CJK_Unified_Ideographs_Extension_C +In_CJK_Unified_Ideographs_Extension_D +In_CJK_Unified_Ideographs_Extension_E +In_CJK_Unified_Ideographs_Extension_F +In_CJK_Unified_Ideographs_Extension_I +In_CJK_Compatibility_Ideographs_Supplement +In_CJK_Unified_Ideographs_Extension_G +In_CJK_Unified_Ideographs_Extension_H +In_Tags +In_Variation_Selectors_Supplement +In_Supplementary_Private_Use_Area_A +In_Supplementary_Private_Use_Area_B +In_No_Block diff --git a/vendor/oniguruma/oniguruma/doc/onig_syn_md.c b/vendor/oniguruma/oniguruma/doc/onig_syn_md.c new file mode 100644 index 0000000..6e29e5a --- /dev/null +++ b/vendor/oniguruma/oniguruma/doc/onig_syn_md.c @@ -0,0 +1,667 @@ +サソ/* + * onig_syn_md.c + * Copyright (c) 2024 K.Kosako + * + * Oniguruma OWner: K.Kosako https://github.com/kkos/oniguruma + * SYNTAX.md : seanofw https://github.com/seanofw + * onig_syn_md.c : tonco-miyazawa https://github.com/tonco-miyazawa + */ + +#include +#include +#include +#include "oniguruma.h" + +#define ONIG_SYN_MD_VERSION_INT (00002) +#define TOTAL_NUM_OF_BITS (32) + +#define PRINT_SEPARATOR (printf("===================================================\n")) + +#define INPUT_SYNTAX(syn, abb, set_in) { (syn), (#syn), (abb), (set_in) } +#define INPUT_FLAG(arg) { (arg), (#arg) } + + + +/************************************* Settings *********************************************/ +/* NOW_MODE +1: (OP) +2: (OP2) +3: (BEHAVIOR) */ +#define NOW_MODE (1) + +/* #define PRINT_UNDEFINED_FLAG */ + +/* #define PRINT_SYNTAX_FORWARD_ORDER */ + +/* #define USE_YOUR_OWN_SYNTAX */ + +/* #define PRINT_DEBUG_INFO */ + +#define PRINT_VERSION_INFO +#define PRINT_SET_IN_INFO +#define PRINT_TABLE_INFO +#define WARN_UNDEFINED_FLAG_USED +/************************************* Settings *********************************************/ + + +/************************ Switch between OP, OP2, BEHAVIOR **********************************/ +#if NOW_MODE == 1 + +#define SYNTAX_MEMBER_NAME ("op") +#define TITLE_STRING ("Group One Flags (op)") +#define SYNTAX_MEMBER(syn) ((syn)->op) +#define IS_SYNTAX_MEMBER(syn, opm) (((syn)->op & (opm)) != 0) + +#elif NOW_MODE == 2 + +#define SYNTAX_MEMBER_NAME ("op2") +#define TITLE_STRING ("Group Two Flags (op2)") +#define SYNTAX_MEMBER(syn) ((syn)->op2) +#define IS_SYNTAX_MEMBER(syn, opm) (((syn)->op2 & (opm)) != 0) + +#elif NOW_MODE == 3 + +#define SYNTAX_MEMBER_NAME ("behavior") +#define TITLE_STRING ("Syntax Flags (syn)") +#define SYNTAX_MEMBER(syn) ((syn)->behavior) +#define IS_SYNTAX_MEMBER(syn, opm) (((syn)->behavior & (opm)) != 0) + +#else +#error "Check 'NOW_MODE' value." +#endif +/************************ Switch between OP, OP2, BEHAVIOR **********************************/ + + +/*********************************** Your own syntax ****************************************/ +#ifdef USE_YOUR_OWN_SYNTAX +static OnigSyntaxType OnigSyntaxYourOwn; +#define ONIG_SYNTAX_YOUROWN (&OnigSyntaxYourOwn) + +static OnigSyntaxType OnigSyntaxYourOwn = { + 0xf0f0f0f0 /* Group One Flags (op) */ + , 0xffff0000 /* Group Two Flags (op2) */ + , 0x00ff00ff /* Syntax Flags (syn) */ + , 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 */ + } +}; +#endif +/*********************************** Your own syntax ****************************************/ + + +/************************************** syntax data *****************************************/ +typedef struct { + OnigSyntaxType* syn; + char *name; + char *abb; + char *set_in; +} syn_data; + + +static syn_data syn_data_list[] = +{ + /* INPUT_SYNTAX(syn, abb, set_in) ===> { (syn), (#syn), (abb), (set_in) } */ + + INPUT_SYNTAX( ONIG_SYNTAX_ASIS , "ASIS" , "ASIS" ) + , INPUT_SYNTAX( ONIG_SYNTAX_POSIX_BASIC , "PosB" , "PosixBasic" ) + , INPUT_SYNTAX( ONIG_SYNTAX_POSIX_EXTENDED , "PosEx", "PosixExtended") + , INPUT_SYNTAX( ONIG_SYNTAX_EMACS , "Emacs", "Emacs") + , INPUT_SYNTAX( ONIG_SYNTAX_GREP , "Grep" , "Grep" ) + , INPUT_SYNTAX( ONIG_SYNTAX_GNU_REGEX , "Gnu" , "GnuRegex" ) + , INPUT_SYNTAX( ONIG_SYNTAX_JAVA , "Java" , "Java" ) + , INPUT_SYNTAX( ONIG_SYNTAX_PERL , "Perl" , "Perl" ) + , INPUT_SYNTAX( ONIG_SYNTAX_PERL_NG , "PeNG" , "Perl_NG" ) + , INPUT_SYNTAX( ONIG_SYNTAX_RUBY , "Ruby" , "Ruby" ) + , INPUT_SYNTAX( ONIG_SYNTAX_PYTHON , "Pythn", "Python") + , INPUT_SYNTAX( ONIG_SYNTAX_ONIGURUMA , "Onig" , "Oniguruma" ) + +#ifdef USE_YOUR_OWN_SYNTAX + , INPUT_SYNTAX( ONIG_SYNTAX_YOUROWN , "Your" , "YourOwn" ) +#endif +}; + +static const int num_of_syntax_types = (sizeof syn_data_list /sizeof syn_data_list[0]); + + +static void print_syn_data_list() +{ + int y; + PRINT_SEPARATOR; + for (y = 0; y < num_of_syntax_types; y++) + { + printf( "\nsyn_data_list[%d]\n", y); + printf( "name='%s'\n" , syn_data_list[y].name); + + printf( "syn->"); + printf( SYNTAX_MEMBER_NAME ); + printf( "= 0x%08x\n", SYNTAX_MEMBER(syn_data_list[y].syn) ); + + printf( "abb='%s'\n" , syn_data_list[y].abb); + printf( "set_in='%s'\n" , syn_data_list[y].set_in); + }; + return ; +} +/************************************** syntax data *****************************************/ + + +/************************************** flag data *******************************************/ +typedef struct { + unsigned int num; + char *name; +} flag_data; + + +/* OP */ +#if NOW_MODE == 1 +static flag_data flag_data_list[] = +{ + +/* The following are no need to sort them in bit order. */ + +/* INPUT_FLAG(arg) ===> { (arg), (#arg) } */ + + INPUT_FLAG( ONIG_SYN_OP_VARIABLE_META_CHARACTERS ) + , INPUT_FLAG( ONIG_SYN_OP_DOT_ANYCHAR ) + , INPUT_FLAG( ONIG_SYN_OP_ASTERISK_ZERO_INF ) + , INPUT_FLAG( ONIG_SYN_OP_ESC_ASTERISK_ZERO_INF ) + , INPUT_FLAG( ONIG_SYN_OP_PLUS_ONE_INF ) + , INPUT_FLAG( ONIG_SYN_OP_ESC_PLUS_ONE_INF ) + , INPUT_FLAG( ONIG_SYN_OP_QMARK_ZERO_ONE ) + , INPUT_FLAG( ONIG_SYN_OP_ESC_QMARK_ZERO_ONE ) + , INPUT_FLAG( ONIG_SYN_OP_BRACE_INTERVAL ) + , INPUT_FLAG( ONIG_SYN_OP_ESC_BRACE_INTERVAL ) + , INPUT_FLAG( ONIG_SYN_OP_VBAR_ALT ) + , INPUT_FLAG( ONIG_SYN_OP_ESC_VBAR_ALT ) + , INPUT_FLAG( ONIG_SYN_OP_LPAREN_SUBEXP ) + , INPUT_FLAG( ONIG_SYN_OP_ESC_LPAREN_SUBEXP ) + , INPUT_FLAG( ONIG_SYN_OP_ESC_AZ_BUF_ANCHOR ) + , INPUT_FLAG( ONIG_SYN_OP_ESC_CAPITAL_G_BEGIN_ANCHOR ) + , INPUT_FLAG( ONIG_SYN_OP_DECIMAL_BACKREF ) + , INPUT_FLAG( ONIG_SYN_OP_BRACKET_CC ) + , INPUT_FLAG( ONIG_SYN_OP_ESC_W_WORD ) + , INPUT_FLAG( ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END ) + , INPUT_FLAG( ONIG_SYN_OP_ESC_B_WORD_BOUND ) + , INPUT_FLAG( ONIG_SYN_OP_ESC_S_WHITE_SPACE ) + , INPUT_FLAG( ONIG_SYN_OP_ESC_D_DIGIT ) + , INPUT_FLAG( ONIG_SYN_OP_LINE_ANCHOR ) + , INPUT_FLAG( ONIG_SYN_OP_POSIX_BRACKET ) + , INPUT_FLAG( ONIG_SYN_OP_QMARK_NON_GREEDY ) + , INPUT_FLAG( ONIG_SYN_OP_ESC_CONTROL_CHARS ) + , INPUT_FLAG( ONIG_SYN_OP_ESC_C_CONTROL ) + , INPUT_FLAG( ONIG_SYN_OP_ESC_OCTAL3 ) + , INPUT_FLAG( ONIG_SYN_OP_ESC_X_HEX2 ) + , INPUT_FLAG( ONIG_SYN_OP_ESC_X_BRACE_HEX8 ) + , INPUT_FLAG( ONIG_SYN_OP_ESC_O_BRACE_OCTAL ) +}; +#endif + + +/* OP2 */ +#if NOW_MODE == 2 +static flag_data flag_data_list[] = +{ + INPUT_FLAG( ONIG_SYN_OP2_ESC_CAPITAL_Q_QUOTE ) + , INPUT_FLAG( ONIG_SYN_OP2_QMARK_GROUP_EFFECT ) + , INPUT_FLAG( ONIG_SYN_OP2_OPTION_PERL ) + , INPUT_FLAG( ONIG_SYN_OP2_OPTION_RUBY ) + , INPUT_FLAG( ONIG_SYN_OP2_PLUS_POSSESSIVE_REPEAT ) + , INPUT_FLAG( ONIG_SYN_OP2_PLUS_POSSESSIVE_INTERVAL ) + , INPUT_FLAG( ONIG_SYN_OP2_CCLASS_SET_OP ) + , INPUT_FLAG( ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP ) + , INPUT_FLAG( ONIG_SYN_OP2_ESC_K_NAMED_BACKREF ) + , INPUT_FLAG( ONIG_SYN_OP2_ESC_G_SUBEXP_CALL ) + , INPUT_FLAG( ONIG_SYN_OP2_ATMARK_CAPTURE_HISTORY ) + , INPUT_FLAG( ONIG_SYN_OP2_ESC_CAPITAL_C_BAR_CONTROL ) + , INPUT_FLAG( ONIG_SYN_OP2_ESC_CAPITAL_M_BAR_META ) + , INPUT_FLAG( ONIG_SYN_OP2_ESC_V_VTAB ) + , INPUT_FLAG( ONIG_SYN_OP2_ESC_U_HEX4 ) + , INPUT_FLAG( ONIG_SYN_OP2_ESC_GNU_BUF_ANCHOR ) + , INPUT_FLAG( ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY ) + , INPUT_FLAG( ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT ) + /* , INPUT_FLAG( ONIG_SYN_OP2_CHAR_PROPERTY_PREFIX_IS ) */ + , INPUT_FLAG( ONIG_SYN_OP2_ESC_H_XDIGIT ) + , INPUT_FLAG( ONIG_SYN_OP2_INEFFECTIVE_ESCAPE ) + , INPUT_FLAG( ONIG_SYN_OP2_QMARK_LPAREN_IF_ELSE ) + , INPUT_FLAG( ONIG_SYN_OP2_ESC_CAPITAL_K_KEEP ) + , INPUT_FLAG( ONIG_SYN_OP2_ESC_CAPITAL_R_GENERAL_NEWLINE ) + , INPUT_FLAG( ONIG_SYN_OP2_ESC_CAPITAL_N_O_SUPER_DOT ) + , INPUT_FLAG( ONIG_SYN_OP2_QMARK_TILDE_ABSENT_GROUP ) + /* , INPUT_FLAG( ONIG_SYN_OP2_ESC_X_Y_GRAPHEME_CLUSTER ) */ /* obsoleted: use next */ + , INPUT_FLAG( ONIG_SYN_OP2_ESC_X_Y_TEXT_SEGMENT ) + , INPUT_FLAG( ONIG_SYN_OP2_QMARK_PERL_SUBEXP_CALL ) + , INPUT_FLAG( ONIG_SYN_OP2_QMARK_BRACE_CALLOUT_CONTENTS ) + , INPUT_FLAG( ONIG_SYN_OP2_ASTERISK_CALLOUT_NAME ) + , INPUT_FLAG( ONIG_SYN_OP2_OPTION_ONIGURUMA ) + , INPUT_FLAG( ONIG_SYN_OP2_QMARK_CAPITAL_P_NAME ) +}; +#endif + + +/* BEHAVIOR */ +#if NOW_MODE == 3 +static flag_data flag_data_list[] = +{ + INPUT_FLAG( ONIG_SYN_CONTEXT_INDEP_ANCHORS ) + , INPUT_FLAG( ONIG_SYN_CONTEXT_INDEP_REPEAT_OPS ) + , INPUT_FLAG( ONIG_SYN_CONTEXT_INVALID_REPEAT_OPS ) + , INPUT_FLAG( ONIG_SYN_ALLOW_UNMATCHED_CLOSE_SUBEXP ) + , INPUT_FLAG( ONIG_SYN_ALLOW_INVALID_INTERVAL ) + , INPUT_FLAG( ONIG_SYN_ALLOW_INTERVAL_LOW_ABBREV ) + , INPUT_FLAG( ONIG_SYN_STRICT_CHECK_BACKREF ) + , INPUT_FLAG( ONIG_SYN_DIFFERENT_LEN_ALT_LOOK_BEHIND ) + , INPUT_FLAG( ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP ) + , INPUT_FLAG( ONIG_SYN_ALLOW_MULTIPLEX_DEFINITION_NAME ) + , INPUT_FLAG( ONIG_SYN_FIXED_INTERVAL_IS_GREEDY_ONLY ) + , INPUT_FLAG( ONIG_SYN_ISOLATED_OPTION_CONTINUE_BRANCH ) + , INPUT_FLAG( ONIG_SYN_VARIABLE_LEN_LOOK_BEHIND ) + , INPUT_FLAG( ONIG_SYN_PYTHON ) + , INPUT_FLAG( ONIG_SYN_WHOLE_OPTIONS ) + , INPUT_FLAG( ONIG_SYN_BRE_ANCHOR_AT_EDGE_OF_SUBEXP ) + + /* syntax (behavior) in char class [...] */ + , INPUT_FLAG( ONIG_SYN_NOT_NEWLINE_IN_NEGATIVE_CC ) + , INPUT_FLAG( ONIG_SYN_BACKSLASH_ESCAPE_IN_CC ) + , INPUT_FLAG( ONIG_SYN_ALLOW_EMPTY_RANGE_IN_CC ) + , INPUT_FLAG( ONIG_SYN_ALLOW_DOUBLE_RANGE_OP_IN_CC ) + , INPUT_FLAG( ONIG_SYN_ALLOW_INVALID_CODE_END_OF_RANGE_IN_CC ) + , INPUT_FLAG( ONIG_SYN_ALLOW_CHAR_TYPE_FOLLOWED_BY_MINUS_IN_CC ) + + /* syntax (behavior) warning */ + , INPUT_FLAG( ONIG_SYN_WARN_CC_OP_NOT_ESCAPED ) + , INPUT_FLAG( ONIG_SYN_WARN_REDUNDANT_NESTED_REPEAT ) +}; +#endif + + +static const int num_of_flags = (sizeof flag_data_list /sizeof flag_data_list[0]); + +static int flag_name_max_len = 0; + + +static int flag_name_max_len_int() +{ + int i, n, max_len; + max_len = 0; + + for (i = 0; i < num_of_flags; i++) + { + n = strlen(flag_data_list[i].name); + if ( max_len < n ) + { + max_len = n; + } + } + + /* Debug: printf("max_len=%d\n", max_len); */ + return max_len; +} + + +static int convert_bit_shift_num_to_flag_data_list_element( int bit_shift_num ) +{ + int i; + for (i = 0; i < num_of_flags; i++) + { + if ( flag_data_list[i].num == (1U << bit_shift_num) ){ + +#ifdef PRINT_DEBUG_INFO + printf("(1U << %d) ===> flag_data_list[%d]\n", bit_shift_num, i ); +#endif + return i; + } + } + +#ifdef PRINT_DEBUG_INFO + printf("(1U << %d) ===> ( none )\n", bit_shift_num ); +#endif + + /* If not found, returns "-1". This is not Error. */ + return -1; +} + + +static int convert_num_to_bit_shift_num(unsigned int arg_num){ + int x; + for (x = 0; x < TOTAL_NUM_OF_BITS; x++) + { + if ( arg_num == (1U << x) ) + { + return x; + } + } + + /* Error */ + printf(" '0x%08x' is not bit flag.\n", __LINE__, arg_num ); + exit(-1); + return -1; +} + + +static int check_flag_data_duplication() +{ + int i, shift_num; + unsigned int used_bits = 0; + + for (i = 0; i < num_of_flags; i++) + { + if ( (used_bits & flag_data_list[i].num) != 0 ){ + + shift_num = convert_num_to_bit_shift_num(flag_data_list[i].num); + + PRINT_SEPARATOR; + fprintf(stderr, "\n The following bit has already been used.\n", __LINE__ ); + fprintf(stderr, "flag_data_list[%d] : '%s' ", i, flag_data_list[i].name); + fprintf(stderr, "(1U << %d)\n", shift_num); + +#ifndef PRINT_DEBUG_INFO + fprintf(stderr, "\nPlease use '#define PRINT_DEBUG_INFO'.\n"); +#endif + exit(-1); + return -1; + } + used_bits |= flag_data_list[i].num; + } + return 0; +} + + +static void print_flag_data_list() +{ + int i, shift_num; + + PRINT_SEPARATOR; + for (i = 0; i < num_of_flags; i++) + { + shift_num = convert_num_to_bit_shift_num( flag_data_list[i].num ); + + printf( "\nflag_data_list[%d]\n", i); + printf( "name='%s' " , flag_data_list[i].name); + printf( "(1U << %d)\n" , shift_num); + printf( "num=0x%08x\n" , flag_data_list[i].num); + } + return ; +} +/************************************** flag data *******************************************/ + + +/************************************** print table *****************************************/ +static void print_table_head() +{ + int i, y; + + printf("\n### "); + printf( TITLE_STRING ); + printf("\n\n| ID | Option"); + for (i = 0; i < (flag_name_max_len - 1); i++) + { + printf(" "); + } + printf("|"); + + /* ex. print "PeNG " */ +#ifdef PRINT_SYNTAX_FORWARD_ORDER + for (y = 0; y < num_of_syntax_types; y++) +#else + for (y = num_of_syntax_types -1; y > -1; y--) +#endif + { + printf(" %-5.5s |", syn_data_list[y].abb ); + } + + printf("\n| ----- | "); + for (i = 0; i < (flag_name_max_len + 4); i++) + { + printf("-"); + } + printf(" |"); + + for (y = 0; y < num_of_syntax_types; y++) + { + printf(" ----- |"); + } + printf("\n"); + return ; +} + + +static void print_table_body_one_line( int shift_num ) +{ + int i, y, elem, name_chars; + + elem = convert_bit_shift_num_to_flag_data_list_element(shift_num); + + printf("| %2d | ", shift_num); + + if (elem < 0){ + name_chars = printf(" `( Undefined )`"); /* elem == -1 */ + } else { + name_chars = printf("`%s`", flag_data_list[elem].name); + } + + for ( i=0; i < (flag_name_max_len - name_chars + 5); i++){ printf(" "); } + printf("|"); + + /* ex. print ' Yes |' */ +#ifdef PRINT_SYNTAX_FORWARD_ORDER + for (y = 0; y < num_of_syntax_types; y++) +#else + for (y = num_of_syntax_types -1; y > -1; y--) +#endif + { + if ( IS_SYNTAX_MEMBER(syn_data_list[y].syn, (1U << shift_num)) ) + { + printf(" Yes |"); + } else { + printf(" - |"); + } + } + printf("\n"); + return ; +} + + +static void print_table_body() +{ + int x, elem; + for (x = 0; x < TOTAL_NUM_OF_BITS; x++) + { + elem = convert_bit_shift_num_to_flag_data_list_element( x ); + + if (elem < 0) + { +#if !(defined( PRINT_UNDEFINED_FLAG )) + continue; +#endif + } + print_table_body_one_line(x); + } + return ; +} + +/************************************** print table *****************************************/ + + +/************************************* print Set_in *****************************************/ +static void print_set_in_one_line(int shift_num) +{ + int y, elem, count; + + elem = convert_bit_shift_num_to_flag_data_list_element(shift_num); + + if (elem < 0) + { + printf("### %d. ( Undefined )\n", shift_num ); /* elem == -1 */ + } else { + printf("### %d. %s\n", shift_num, flag_data_list[elem].name ); + } + + count = 0; + printf("_Set in: "); +#ifdef PRINT_SYNTAX_FORWARD_ORDER + for (y = 0; y < num_of_syntax_types; y++) +#else + for (y = num_of_syntax_types -1; y > -1; y--) +#endif + { + if ( IS_SYNTAX_MEMBER(syn_data_list[y].syn, (1U << shift_num)) ) + { + if (count > 0){ printf(", "); }; + printf("%s", syn_data_list[y].set_in); + count++; + } + } /* for y */ + + if (count==0){ printf("none"); }; + + printf("_\n\n"); + return ; +} + + +static void print_set_in() +{ + int x, elem; + + PRINT_SEPARATOR; + printf("The following are 'Set in' for oniguruma/doc/SYNTAX.md\n\n## "); + printf( TITLE_STRING ); + printf("\n\n"); + for (x = 0; x < TOTAL_NUM_OF_BITS; x++) + { + elem = convert_bit_shift_num_to_flag_data_list_element( x ); + + if (elem < 0) + { +#if !(defined( PRINT_UNDEFINED_FLAG )) + continue; +#endif + } + + print_set_in_one_line(x); + } + return ; +} + +/************************************* print Set_in *****************************************/ + + +/************************************** main() *****************************************/ + +static void print_version() +{ + printf( "[ onig_syn_md.c ver.%05d ] ", ONIG_SYN_MD_VERSION_INT ); + printf("The loaded oniguruma is '%d.%d.%d'.\n" + , ONIGURUMA_VERSION_MAJOR + , ONIGURUMA_VERSION_MINOR + , ONIGURUMA_VERSION_TEENY ); + return ; +} + + +static void print_debug() +{ + int x; + + print_version(); + print_syn_data_list(); + print_flag_data_list(); + check_flag_data_duplication(); + + /* print: (1U << x) ===> flag_data_list[elem] */ + PRINT_SEPARATOR; + printf("\nThe following are the array elements that correspond to each bit.\n\n"); + for (x = 0; x < TOTAL_NUM_OF_BITS; x++) + { + convert_bit_shift_num_to_flag_data_list_element(x); + } + return ; +} + + +static void warn_undefined_flag_used() +{ + int x, y, elem; + + for (x = 0; x < TOTAL_NUM_OF_BITS; x++) + { + elem = convert_bit_shift_num_to_flag_data_list_element(x); + + if (elem < 0){ + for (y = 0; y < num_of_syntax_types; y++) + { + if ( IS_SYNTAX_MEMBER( syn_data_list[y].syn, (1U << x) ) ) + { + PRINT_SEPARATOR; + printf("warning: An undefined bit flag is used."); + printf(" (1U << %d)\n\n", x); + print_set_in_one_line( x ); + +#ifndef PRINT_UNDEFINED_FLAG + printf("Please use '#define PRINT_UNDEFINED_FLAG'.\n"); +#endif + return ; + } + } /* for y */ + } /* if elem */ + } /* for x */ + return ; +} + + +extern int main(int argc, char* argv[]) +{ +#ifdef PRINT_DEBUG_INFO + print_debug(); + return 0; +#endif + +#ifdef PRINT_VERSION_INFO + print_version(); +#endif + + flag_name_max_len = flag_name_max_len_int(); + check_flag_data_duplication(); + +#ifdef PRINT_SET_IN_INFO + print_set_in(); +#endif + +#ifdef PRINT_TABLE_INFO + print_table_head(); + print_table_body(); +#endif + +#ifdef WARN_UNDEFINED_FLAG_USED + warn_undefined_flag_used(); +#endif + + /* test */ + /* + printf("\n------ test -------\n"); + + int test_x = 17; + print_set_in_one_line( test_x ); + print_table_body_one_line( test_x ); + printf("--------------------\n"); + */ + + /* To avoid 'gcc -Wall' warnings. */ + if (0) + { + print_debug(); + print_version(); + print_set_in(); + print_table_head(); + print_table_body(); + warn_undefined_flag_used(); + } + + return 0; +} diff --git a/vendor/oniguruma/oniguruma/harnesses/ascii_compatible.dict b/vendor/oniguruma/oniguruma/harnesses/ascii_compatible.dict new file mode 100644 index 0000000..a3e978b --- /dev/null +++ b/vendor/oniguruma/oniguruma/harnesses/ascii_compatible.dict @@ -0,0 +1,113 @@ +# First-pass fuzzing dictionary for Oniguruma by Mark Griffin +"\\o{34}" +"\\123" +"\\x{40}" +"\\C-" +"\\M-\\C-" +"\\X" +"\\p{" +"\\p{^" +"}" +"]" +"]" +")" +")" +"\\n" +"\\r" +"\\R" +"\\W" +"\\w" +"\\s" +"\\S" +"\\d" +"\\O" +"\\X" +"\\b" +"\\y" +"\\Y" +"\\A" +"\\z" +"\\K" +"\\G" +"\\p{Print}" +"\\p{ASCII}" +"\\p{Alnum}" +"{0,2}" +"{3,}" +"{,3}" +"{5}" +"{4,2}" +"??" +"*?" +"+?" +"*+" +"{1,3}+" +"(?>" +"\\B" +"(?y{" +"[abcd1-9]" +"[\\w]" +"[\\W]" +"[\\s]" +"[\\S]" +"[\\w\\d" +"[\\p{Alphabetic}" +"[\\x{03}" +"[a-w&&" +"[^" +"[:graph:]" +"[^:cntrl:]" +"(?i:" +"(?i)" +"(?m:" +"(?x:" +"(?W:" +"(?y-:" +"(?y{w}:" +"(?P:" +"(?#" +"(?:" +"(?=" +"(?!" +"(?<=" +"(?" +"(?" +"(?{" +"(?{....}[x])" +"(?{.}[x]>)" +"(?{{{.}}})" +"(?~" +"(?~a)" +"(?~|a|.*)" +"(?~|(?:a|b))" +"(?~|)" +"(?(.) |.)" +"(?('-n'))" +"(?(n+0))" +"(?(n+1))" +"(?(n-1))" +"(?())" +"(?())" +"(?())" +"(*COUNT[tag]{X})" +"\\1" +"\\2" +"\\k" +"\\k<1>" +"\\k<2>" +"\\k<-1>" +"\\k<-2>" +"\\k" +"\\k" +"\\k" +"\\g<-1>" +"\\g" +"name" +"(?a|b\\gc)" +"(?-i:\\g)" +"\\N{name}" +"\\p{Katakana}" +"\\p{Emoji}" +"ss" +"SS" diff --git a/vendor/oniguruma/oniguruma/harnesses/base.c b/vendor/oniguruma/oniguruma/harnesses/base.c new file mode 100644 index 0000000..6be5a8f --- /dev/null +++ b/vendor/oniguruma/oniguruma/harnesses/base.c @@ -0,0 +1,749 @@ +/* + * base.c contributed by Mark Griffin + * Copyright (c) 2019-2022 K.Kosako + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include "oniguruma.h" + +#define PARSE_DEPTH_LIMIT 8 +#define MAX_SUBEXP_CALL_NEST_LEVEL 8 +#define SUBEXP_CALL_LIMIT 1000 +#define BASE_RETRY_LIMIT 20000 +#define BASE_LENGTH 2048 +#define MATCH_STACK_LIMIT 10000000 +#define MAX_REM_SIZE 1048576 +#define MAX_SLOW_REM_SIZE 1024 +#define MAX_SLOW_REM_SIZE2 80 +#define SLOW_RETRY_LIMIT 2000 +#define SLOW_SUBEXP_CALL_LIMIT 100 +#define MAX_SLOW_BACKWARD_REM_SIZE 200 + +//#define EXEC_PRINT_INTERVAL 500000 +//#define DUMP_DATA_INTERVAL 100000 +//#define STAT_PATH "fuzzer.stat_log" +//#define PREV_CONTROL + +#ifdef PREV_CONTROL +#define OPTIONS_AT_COMPILE (ONIG_OPTION_IGNORECASE | ONIG_OPTION_EXTEND | ONIG_OPTION_MULTILINE | ONIG_OPTION_SINGLELINE | ONIG_OPTION_FIND_LONGEST | ONIG_OPTION_FIND_NOT_EMPTY | ONIG_OPTION_NEGATE_SINGLELINE | ONIG_OPTION_DONT_CAPTURE_GROUP | ONIG_OPTION_CAPTURE_GROUP | ONIG_OPTION_WORD_IS_ASCII | ONIG_OPTION_DIGIT_IS_ASCII | ONIG_OPTION_SPACE_IS_ASCII | ONIG_OPTION_POSIX_IS_ASCII | ONIG_OPTION_TEXT_SEGMENT_EXTENDED_GRAPHEME_CLUSTER | ONIG_OPTION_TEXT_SEGMENT_WORD) +#else +#define OPTIONS_AT_COMPILE (ONIG_OPTION_IGNORECASE | ONIG_OPTION_EXTEND | ONIG_OPTION_MULTILINE | ONIG_OPTION_SINGLELINE | ONIG_OPTION_FIND_LONGEST | ONIG_OPTION_FIND_NOT_EMPTY | ONIG_OPTION_NEGATE_SINGLELINE | ONIG_OPTION_DONT_CAPTURE_GROUP | ONIG_OPTION_CAPTURE_GROUP | ONIG_OPTION_WORD_IS_ASCII | ONIG_OPTION_DIGIT_IS_ASCII | ONIG_OPTION_SPACE_IS_ASCII | ONIG_OPTION_POSIX_IS_ASCII | ONIG_OPTION_TEXT_SEGMENT_EXTENDED_GRAPHEME_CLUSTER | ONIG_OPTION_TEXT_SEGMENT_WORD | ONIG_OPTION_IGNORECASE_IS_ASCII) +#endif + +#define OPTIONS_AT_RUNTIME (ONIG_OPTION_NOTBOL | ONIG_OPTION_NOTEOL | ONIG_OPTION_CHECK_VALIDITY_OF_STRING | ONIG_OPTION_NOT_BEGIN_STRING | ONIG_OPTION_NOT_END_STRING | ONIG_OPTION_NOT_BEGIN_POSITION | ONIG_OPTION_CALLBACK_EACH_MATCH) + + +#define ADJUST_LEN(enc, len) do {\ + int mlen = ONIGENC_MBC_MINLEN(enc);\ + if (mlen != 1) { len -= len % mlen; }\ +} while (0) + +typedef unsigned char uint8_t; + + +//#define TEST_PATTERN + +#ifdef TEST_PATTERN + +#if 1 +unsigned char TestPattern[] = { +}; +#endif + +#endif /* TEST_PATTERN */ + +#ifdef STANDALONE + +static void +print_options(FILE* fp, OnigOptionType o) +{ + if ((o & ONIG_OPTION_IGNORECASE) != 0) fprintf(fp, " IGNORECASE"); + if ((o & ONIG_OPTION_EXTEND) != 0) fprintf(fp, " EXTEND"); + if ((o & ONIG_OPTION_MULTILINE) != 0) fprintf(fp, " MULTILINE"); + if ((o & ONIG_OPTION_SINGLELINE) != 0) fprintf(fp, " SINGLELINE"); + if ((o & ONIG_OPTION_FIND_LONGEST) != 0) fprintf(fp, " FIND_LONGEST"); + if ((o & ONIG_OPTION_FIND_NOT_EMPTY) != 0) fprintf(fp, " FIND_NOT_EMPTY"); + if ((o & ONIG_OPTION_NEGATE_SINGLELINE) != 0) fprintf(fp, " NEGATE_SINGLELINE"); + if ((o & ONIG_OPTION_DONT_CAPTURE_GROUP) != 0) fprintf(fp, " DONT_CAPTURE_GROUP"); + if ((o & ONIG_OPTION_CAPTURE_GROUP) != 0) fprintf(fp, " CAPTURE_GROUP"); + if ((o & ONIG_OPTION_NOTBOL) != 0) fprintf(fp, " NOTBOL"); + if ((o & ONIG_OPTION_NOTEOL) != 0) fprintf(fp, " NOTEOL"); + if ((o & ONIG_OPTION_POSIX_REGION) != 0) fprintf(fp, " POSIX_REGION"); + if ((o & ONIG_OPTION_CHECK_VALIDITY_OF_STRING) != 0) fprintf(fp, " CHECK_VALIDITY_OF_STRING"); + if ((o & ONIG_OPTION_IGNORECASE_IS_ASCII) != 0) fprintf(fp, " IGNORECASE_IS_ASCII"); + if ((o & ONIG_OPTION_WORD_IS_ASCII) != 0) fprintf(fp, " WORD_IS_ASCII"); + if ((o & ONIG_OPTION_DIGIT_IS_ASCII) != 0) fprintf(fp, " DIGIT_IS_ASCII"); + if ((o & ONIG_OPTION_SPACE_IS_ASCII) != 0) fprintf(fp, " SPACE_IS_ASCII"); + if ((o & ONIG_OPTION_POSIX_IS_ASCII) != 0) fprintf(fp, " POSIX_IS_ASCII"); + if ((o & ONIG_OPTION_TEXT_SEGMENT_EXTENDED_GRAPHEME_CLUSTER) != 0) fprintf(fp, " TEXT_SEGMENT_EXTENDED_GRAPHEME_CLUSTER"); + if ((o & ONIG_OPTION_TEXT_SEGMENT_WORD) != 0) fprintf(fp, " TEXT_SEGMENT_WORD"); + if ((o & ONIG_OPTION_NOT_BEGIN_STRING) != 0) fprintf(fp, " NOT_BIGIN_STRING"); + if ((o & ONIG_OPTION_NOT_END_STRING) != 0) fprintf(fp, " NOT_END_STRING"); + if ((o & ONIG_OPTION_NOT_BEGIN_POSITION) != 0) fprintf(fp, " NOT_BEGIN_POSITION"); + if ((o & ONIG_OPTION_CALLBACK_EACH_MATCH) != 0) fprintf(fp, " CALLBACK_EACH_MATCH"); +} + +static void +to_binary(unsigned int v, char s[/* 33 */]) +{ + unsigned int mask; + int i; + + mask = 1 << (sizeof(v) * 8 - 1); + i = 0; + do { + s[i++] = (mask & v ? '1' : '0'); + } while (mask >>= 1); + s[i] = 0; +} +#endif + +#ifdef DUMP_INPUT +static void +dump_input(unsigned char* data, size_t len) +{ + static FILE* DumpFp; + static char end[] = { 'E', 'N', 'D' }; + + if (DumpFp == 0) + DumpFp = fopen("dump-input", "w"); + + fseek(DumpFp, 0, SEEK_SET); + fwrite(data, sizeof(unsigned char), len, DumpFp); + fwrite(end, sizeof(char), sizeof(end), DumpFp); + fflush(DumpFp); +} +#endif + +#ifdef DUMP_DATA_INTERVAL +static void +dump_file(char* path, unsigned char* data, size_t len) +{ + FILE* fp; + + fp = fopen(path, "w"); + fwrite(data, sizeof(unsigned char), len, fp); + fclose(fp); +} +#endif + +#ifdef STANDALONE +#include + +static void +dump_data(FILE* fp, unsigned char* data, int len) +{ + int i; + + fprintf(fp, "{\n"); + for (i = 0; i < len; i++) { + unsigned char c = data[i]; + + if (isprint((int )c)) { + if (c == '\\') + fprintf(fp, " '\\\\'"); + else if (c == '\'') + fprintf(fp, " '\\''"); + else + fprintf(fp, " '%c'", c); + } + else { + fprintf(fp, "0x%02x", (int )c); + } + + if (i == len - 1) { + fprintf(fp, "\n"); + } + else { + if (i % 8 == 7) + fprintf(fp, ",\n"); + else + fprintf(fp, ", "); + } + } + fprintf(fp, "};\n"); +} + +#else + +#ifdef EXEC_PRINT_INTERVAL +static void +output_current_time(FILE* fp) +{ + char d[64]; + time_t t; + + t = time(NULL); + strftime(d, sizeof(d), "%m/%d %H:%M:%S", localtime(&t)); + + fprintf(fp, "%s", d); +} +#endif + +#endif + +static int +progress_callout_func(OnigCalloutArgs* args, void* user_data) +{ + return ONIG_CALLOUT_SUCCESS; +} + +static int +each_match_callback_func(const UChar* str, const UChar* end, + const UChar* match_start, OnigRegion* region, void* user_data) +{ + return ONIG_NORMAL; +} + +static unsigned int calc_retry_limit(int sl, int len) +{ + unsigned int r; + unsigned int upper; + int heavy; + + heavy = sl >> 8; + sl &= 0xff; + sl += heavy; + + upper = BASE_RETRY_LIMIT; + if (sl == 2) { + upper = SLOW_RETRY_LIMIT; + } + else if (sl > 2) { + upper = SLOW_RETRY_LIMIT * 3 / sl; + if (upper <= 10) upper = 10; + } + + if (len < BASE_LENGTH) { + r = BASE_RETRY_LIMIT; + } + else { + r = BASE_RETRY_LIMIT * BASE_LENGTH / len; + } + + if (r > upper) + r = upper; + + return r; +} + +static int +search(regex_t* reg, unsigned char* str, unsigned char* end, OnigOptionType options, int backward, int sl) +{ + int r; + unsigned char *start, *range; + OnigRegion *region; + unsigned int retry_limit; + size_t len; + + region = onig_region_new(); + + len = (size_t )(end - str); + retry_limit = calc_retry_limit(sl, len); + + onig_set_retry_limit_in_search(retry_limit); + onig_set_match_stack_limit_size(MATCH_STACK_LIMIT); + if (sl >= 2) + onig_set_subexp_call_limit_in_search(SLOW_SUBEXP_CALL_LIMIT); + else + onig_set_subexp_call_limit_in_search(SUBEXP_CALL_LIMIT); + +#ifdef STANDALONE + fprintf(stdout, "retry limit: %u\n", retry_limit); + fprintf(stdout, "end - str: %td\n", end - str); +#endif + + if (backward != 0) { + start = end; + range = str; + } + else { + start = str; + range = end; + } + + r = onig_search(reg, str, end, start, range, region, (options & OPTIONS_AT_RUNTIME)); + if (r >= 0) { +#ifdef STANDALONE + int i; + + fprintf(stdout, "match at %d (%s)\n", r, + ONIGENC_NAME(onig_get_encoding(reg))); + for (i = 0; i < region->num_regs; i++) { + fprintf(stdout, "%d: (%d-%d)\n", i, region->beg[i], region->end[i]); + } +#endif + } + else if (r == ONIG_MISMATCH) { +#ifdef STANDALONE + fprintf(stdout, "search fail (%s)\n", + ONIGENC_NAME(onig_get_encoding(reg))); +#endif + } + else { /* error */ +#ifdef STANDALONE + char s[ONIG_MAX_ERROR_MESSAGE_LEN]; + + onig_error_code_to_str((UChar* )s, r); + fprintf(stdout, "ERROR: %s\n", s); + fprintf(stdout, " (%s)\n", ONIGENC_NAME(onig_get_encoding(reg))); +#endif + onig_region_free(region, 1 /* 1:free self, 0:free contents only */); + + if (r == ONIGERR_STACK_BUG || + r == ONIGERR_UNDEFINED_BYTECODE || + r == ONIGERR_UNEXPECTED_BYTECODE) + return -2; + + return -1; + } + + onig_region_free(region, 1 /* 1:free self, 0:free contents only */); + return 0; +} + +static long INPUT_COUNT; +static long EXEC_COUNT; +static long EXEC_COUNT_INTERVAL; +static long REGEX_SUCCESS_COUNT; +static long VALID_STRING_COUNT; + +static int +exec(OnigEncoding enc, OnigOptionType options, OnigSyntaxType* syntax, + char* apattern, char* apattern_end, + char* adata_pattern, char* adata_pattern_end, + char* astr, UChar* end, int backward, int sl) +{ + int r; + regex_t* reg; + OnigErrorInfo einfo; + UChar* str = (UChar* )astr; + UChar* pattern = (UChar* )apattern; + UChar* pattern_end = (UChar* )apattern_end; + UChar* data_pattern = (UChar* )adata_pattern; + UChar* data_pattern_end = (UChar* )adata_pattern_end; + + EXEC_COUNT++; + EXEC_COUNT_INTERVAL++; + + onig_initialize(&enc, 1); + (void)onig_set_progress_callout(progress_callout_func); +#ifdef PARSE_DEPTH_LIMIT + onig_set_parse_depth_limit(PARSE_DEPTH_LIMIT); +#endif + onig_set_subexp_call_max_nest_level(MAX_SUBEXP_CALL_NEST_LEVEL); + onig_set_callback_each_match(each_match_callback_func); + + r = onig_new(®, pattern, pattern_end, + (options & OPTIONS_AT_COMPILE), enc, syntax, &einfo); + if (r != ONIG_NORMAL) { + char s[ONIG_MAX_ERROR_MESSAGE_LEN]; + onig_error_code_to_str((UChar* )s, r, &einfo); +#ifdef STANDALONE + fprintf(stdout, "ERROR: %s\n", s); +#endif + onig_end(); + + if (r == ONIGERR_PARSER_BUG || + r == ONIGERR_STACK_BUG || + r == ONIGERR_UNDEFINED_BYTECODE || + r == ONIGERR_UNEXPECTED_BYTECODE) { + return -2; + } + else + return -1; + } + REGEX_SUCCESS_COUNT++; + + if (data_pattern == pattern || + onigenc_is_valid_mbc_string(enc, data_pattern, data_pattern_end) != 0) { + r = search(reg, data_pattern, data_pattern_end, options, backward, sl); + if (r == -2) return -2; + } + + if (onigenc_is_valid_mbc_string(enc, str, end) != 0) { + VALID_STRING_COUNT++; + r = search(reg, str, end, options, backward, sl); + if (r == -2) return -2; + } + + onig_free(reg); + onig_end(); + return 0; +} + +static size_t +fix_size(size_t x, OnigEncoding enc, int sl, int backward) +{ + if (x > MAX_REM_SIZE) x = MAX_REM_SIZE; + + if (sl > 0) { + if (sl >= 256) { // 256: exists heavy element + if (x > MAX_SLOW_REM_SIZE2) x = MAX_SLOW_REM_SIZE2; + } + else { + if (x > MAX_SLOW_REM_SIZE) x = MAX_SLOW_REM_SIZE; + } + } + if (backward != 0 && enc == ONIG_ENCODING_GB18030) { + if (x > MAX_SLOW_BACKWARD_REM_SIZE) + x = MAX_SLOW_BACKWARD_REM_SIZE; + } + + ADJUST_LEN(enc, x); + return x; +} + +static int +alloc_exec(OnigEncoding enc, OnigOptionType options, OnigSyntaxType* syntax, + int backward, int pattern_size, size_t rem_size, unsigned char *data) +{ + extern int onig_detect_can_be_slow_pattern(const UChar* pattern, const UChar* pattern_end, OnigOptionType option, OnigEncoding enc, OnigSyntaxType* syntax); + + int r; + int sl; + int data_pattern_size; + unsigned char *pattern; + unsigned char *pattern_end; + unsigned char *data_pattern; + unsigned char *data_pattern_end; + unsigned char *str_null_end; + +#ifdef TEST_PATTERN + pattern = (unsigned char *)malloc(sizeof(TestPattern)); + memcpy(pattern, TestPattern, sizeof(TestPattern)); + pattern_end = pattern + sizeof(TestPattern); +#else + pattern = (unsigned char *)malloc(pattern_size != 0 ? pattern_size : 1); + pattern_end = pattern + pattern_size; + memcpy(pattern, data, pattern_size); +#endif + + sl = onig_detect_can_be_slow_pattern(pattern, pattern_end, options, enc, syntax); +#ifdef STANDALONE + fprintf(stdout, "sl: %d\n", sl); +#endif + + data_pattern_size = fix_size(pattern_size, enc, sl, backward); + + if ( +#ifdef TEST_PATTERN + 1 || +#endif + data_pattern_size != pattern_size) { + data_pattern = (unsigned char *)malloc(data_pattern_size != 0 + ? data_pattern_size : 1); + data_pattern_end = data_pattern + data_pattern_size; + memcpy(data_pattern, data, data_pattern_size); + } + else { + data_pattern = pattern; + data_pattern_end = pattern_end; + } + + data += pattern_size; + rem_size -= pattern_size; + rem_size = fix_size(rem_size, enc, sl, backward); +#ifdef STANDALONE + fprintf(stdout, "rem_size: %ld\n", rem_size); +#endif + + unsigned char *str = (unsigned char*)malloc(rem_size != 0 ? rem_size : 1); + memcpy(str, data, rem_size); + str_null_end = str + rem_size; + + r = exec(enc, options, syntax, + (char* )pattern, (char* )pattern_end, + (char* )data_pattern, (char* )data_pattern_end, + (char* )str, str_null_end, backward, sl); + + if (data_pattern != pattern) + free(data_pattern); + + free(pattern); + free(str); + return r; +} + +#ifdef PREV_CONTROL +#ifdef SYNTAX_TEST +#define NUM_CONTROL_BYTES 7 +#else +#define NUM_CONTROL_BYTES 6 +#endif +#else +#ifdef SYNTAX_TEST +#define NUM_CONTROL_BYTES 8 +#else +#define NUM_CONTROL_BYTES 7 +#endif +#endif + +int LLVMFuzzerTestOneInput(const uint8_t * Data, size_t Size) +{ +#if !defined(UTF16_BE) && !defined(UTF16_LE) + static OnigEncoding encodings[] = { + ONIG_ENCODING_UTF8, + ONIG_ENCODING_UTF8, + ONIG_ENCODING_UTF8, + ONIG_ENCODING_UTF8, + ONIG_ENCODING_UTF8, + ONIG_ENCODING_UTF8, + ONIG_ENCODING_UTF8, + ONIG_ENCODING_UTF8, + ONIG_ENCODING_ASCII, + ONIG_ENCODING_EUC_JP, + ONIG_ENCODING_EUC_TW, + ONIG_ENCODING_EUC_KR, + ONIG_ENCODING_EUC_CN, + ONIG_ENCODING_SJIS, + ONIG_ENCODING_KOI8_R, + ONIG_ENCODING_CP1251, + ONIG_ENCODING_BIG5, + ONIG_ENCODING_GB18030, + ONIG_ENCODING_UTF16_BE, + ONIG_ENCODING_UTF16_LE, + ONIG_ENCODING_UTF16_BE, + ONIG_ENCODING_UTF16_LE, + ONIG_ENCODING_UTF32_BE, + ONIG_ENCODING_UTF32_LE, + ONIG_ENCODING_UTF32_BE, + ONIG_ENCODING_UTF32_LE, + ONIG_ENCODING_ISO_8859_1, + ONIG_ENCODING_ISO_8859_2, + ONIG_ENCODING_ISO_8859_3, + ONIG_ENCODING_ISO_8859_4, + ONIG_ENCODING_ISO_8859_5, + ONIG_ENCODING_ISO_8859_6, + ONIG_ENCODING_ISO_8859_7, + ONIG_ENCODING_ISO_8859_8, + ONIG_ENCODING_ISO_8859_9, + ONIG_ENCODING_ISO_8859_10, + ONIG_ENCODING_ISO_8859_11, + ONIG_ENCODING_ISO_8859_13, + ONIG_ENCODING_ISO_8859_14, + ONIG_ENCODING_ISO_8859_15, + ONIG_ENCODING_ISO_8859_16 + }; + unsigned char encoding_choice; +#endif + +#ifdef SYNTAX_TEST + static OnigSyntaxType* syntaxes[] = { + ONIG_SYNTAX_POSIX_EXTENDED, + ONIG_SYNTAX_EMACS, + ONIG_SYNTAX_GREP, + ONIG_SYNTAX_GNU_REGEX, + ONIG_SYNTAX_JAVA, + ONIG_SYNTAX_PERL_NG, + ONIG_SYNTAX_PYTHON, + ONIG_SYNTAX_ONIGURUMA + }; + +#ifdef STANDALONE + static char* syntax_names[] = { + "Posix Extended", + "Emacs", + "Grep", + "GNU Regex", + "Java", + "Perl+NG", + "Python", + "Oniguruma" + }; +#endif + + unsigned char syntax_choice; +#endif + + int r; + int backward; + int pattern_size; + size_t rem_size; + unsigned char *data; + unsigned char pattern_size_choice; + OnigOptionType options; + OnigEncoding enc; + OnigSyntaxType* syntax; + +#ifndef STANDALONE +#ifdef EXEC_PRINT_INTERVAL + static FILE* STAT_FP; +#endif +#endif + + INPUT_COUNT++; + +#ifdef DUMP_DATA_INTERVAL + if (INPUT_COUNT % DUMP_DATA_INTERVAL == 0) { + char path[20]; + sprintf(path, "dump-%ld", INPUT_COUNT); + dump_file(path, (unsigned char* )Data, Size); + } +#endif + + if (Size < NUM_CONTROL_BYTES) return 0; + + rem_size = Size; + data = (unsigned char* )(Data); + +#ifdef UTF16_BE + enc = ONIG_ENCODING_UTF16_BE; +#else +#ifdef UTF16_LE + enc = ONIG_ENCODING_UTF16_LE; +#else + encoding_choice = data[0]; + data++; + rem_size--; + + int num_encodings = sizeof(encodings)/sizeof(encodings[0]); + enc = encodings[encoding_choice % num_encodings]; +#endif +#endif + +#ifdef SYNTAX_TEST + syntax_choice = data[0]; + data++; + rem_size--; + + int num_syntaxes = sizeof(syntaxes)/sizeof(syntaxes[0]); + syntax = syntaxes[syntax_choice % num_syntaxes]; +#else + syntax = ONIG_SYNTAX_DEFAULT; +#endif + +#ifdef PREV_CONTROL + if ((data[2] & 0xc0) == 0) + options = data[0] | (data[1] << 8) | (data[2] << 16); +#else + if ((data[3] & 0xc0) == 0) + options = data[0] | (data[1] << 8) | (data[2] << 16) | (data[3] << 24); +#endif + else + options = data[0] & ONIG_OPTION_IGNORECASE; + + data++; rem_size--; + data++; rem_size--; + data++; rem_size--; +#ifndef PREV_CONTROL + data++; rem_size--; +#endif + + pattern_size_choice = data[0]; + data++; rem_size--; + + backward = (data[0] == 0xbb); + data++; rem_size--; + + if (backward != 0) { + options = options & ~ONIG_OPTION_FIND_LONGEST; + } + + if (rem_size == 0) + pattern_size = 0; + else { + pattern_size = (int )pattern_size_choice % rem_size; + ADJUST_LEN(enc, pattern_size); + } + +#ifdef STANDALONE + { + char soptions[33]; + + dump_data(stdout, data, pattern_size); + to_binary(options, soptions); +#ifdef SYNTAX_TEST + fprintf(stdout, + "enc: %s, syntax: %s, pattern_size: %d, back:%d\noptions: %s\n", + ONIGENC_NAME(enc), + syntax_names[syntax_choice % num_syntaxes], + pattern_size, backward, soptions); +#else + fprintf(stdout, "enc: %s, pattern_size: %d, back:%d\noptions: %s\n", + ONIGENC_NAME(enc), pattern_size, backward, soptions); +#endif + + print_options(stdout, options); + fprintf(stdout, "\n"); + } +#endif + +#ifdef DUMP_INPUT + dump_input((unsigned char* )Data, Size); +#endif + + r = alloc_exec(enc, options, syntax, backward, pattern_size, + rem_size, data); + if (r == -2) exit(-2); + +#ifndef STANDALONE +#ifdef EXEC_PRINT_INTERVAL + if (EXEC_COUNT_INTERVAL == EXEC_PRINT_INTERVAL) { + float fexec, freg, fvalid; + + if (STAT_FP == 0) { +#ifdef STAT_PATH + STAT_FP = fopen(STAT_PATH, "a"); +#else + STAT_FP = stdout; +#endif + } + + output_current_time(STAT_FP); + + if (INPUT_COUNT != 0) { // overflow check + fexec = (float )EXEC_COUNT / INPUT_COUNT; + freg = (float )REGEX_SUCCESS_COUNT / INPUT_COUNT; + fvalid = (float )VALID_STRING_COUNT / INPUT_COUNT; + + fprintf(STAT_FP, ": %ld: EXEC:%.2f, REG:%.2f, VALID:%.2f\n", + EXEC_COUNT, fexec, freg, fvalid); + fflush(STAT_FP); + } + else { + fprintf(STAT_FP, ": ignore (input count overflow)\n"); + } + + EXEC_COUNT_INTERVAL = 0; + } + else if (EXEC_COUNT == 1) { + output_current_time(stdout); + fprintf(stdout, ": ------------ START ------------\n"); + } +#endif +#endif + + return r; +} + +#ifdef STANDALONE + +#define MAX_INPUT_DATA_SIZE 4194304 + +extern int main(int argc, char* argv[]) +{ + size_t max_size; + size_t n; + uint8_t Data[MAX_INPUT_DATA_SIZE]; + + if (argc > 1) { + max_size = (size_t )atoi(argv[1]); + } + else { + max_size = sizeof(Data); + } + + n = read(0, Data, max_size); + fprintf(stdout, "read size: %ld, max_size: %ld\n", n, max_size); + + LLVMFuzzerTestOneInput(Data, n); + return 0; +} +#endif /* STANDALONE */ diff --git a/vendor/oniguruma/oniguruma/harnesses/deluxe.c b/vendor/oniguruma/oniguruma/harnesses/deluxe.c new file mode 100644 index 0000000..5441de9 --- /dev/null +++ b/vendor/oniguruma/oniguruma/harnesses/deluxe.c @@ -0,0 +1,206 @@ +/* + * deluxe.c + * contributed by Mark Griffin + */ +#include +#include "oniguruma.h" + +#include +#include + +#define RETRY_LIMIT 10000 +#define DEPTH_LIMIT 10 + +typedef unsigned char uint8_t; + +static int +search(regex_t* reg, unsigned char* str, unsigned char* end) +{ + int r; + unsigned char *start, *range; + OnigRegion *region; + + region = onig_region_new(); + + start = str; + range = end; + r = onig_search(reg, str, end, start, range, region, ONIG_OPTION_NONE); + if (r >= 0) { + int i; + + fprintf(stdout, "match at %d (%s)\n", r, + ONIGENC_NAME(onig_get_encoding(reg))); + for (i = 0; i < region->num_regs; i++) { + fprintf(stdout, "%d: (%d-%d)\n", i, region->beg[i], region->end[i]); + } + } + else if (r == ONIG_MISMATCH) { + fprintf(stdout, "search fail (%s)\n", + ONIGENC_NAME(onig_get_encoding(reg))); + } + else { /* error */ + char s[ONIG_MAX_ERROR_MESSAGE_LEN]; + onig_error_code_to_str((UChar* )s, r); + fprintf(stdout, "ERROR: %s\n", s); + fprintf(stdout, " (%s)\n", ONIGENC_NAME(onig_get_encoding(reg))); + onig_region_free(region, 1 /* 1:free self, 0:free contents only */); + return -1; + } + + onig_region_free(region, 1 /* 1:free self, 0:free contents only */); + return 0; +} + +static OnigCaseFoldType CF = ONIGENC_CASE_FOLD_MIN; + +static int +exec_deluxe(OnigEncoding pattern_enc, OnigEncoding str_enc, + OnigOptionType options, char* apattern, char* apattern_end, + char* astr, char* astr_end) +{ + int r; + regex_t* reg; + OnigCompileInfo ci; + OnigErrorInfo einfo; + UChar* pattern = (UChar* )apattern; + UChar* str = (UChar* )astr; + UChar* pattern_end = (UChar* )apattern_end; + unsigned char* end = (unsigned char* )astr_end; + + onig_initialize(&str_enc, 1); + onig_set_retry_limit_in_search(RETRY_LIMIT); + onig_set_parse_depth_limit(DEPTH_LIMIT); + + ci.num_of_elements = 5; + ci.pattern_enc = pattern_enc; + ci.target_enc = str_enc; + ci.syntax = ONIG_SYNTAX_DEFAULT; + ci.option = options; + ci.case_fold_flag = CF; + + r = onig_new_deluxe(®, pattern, pattern_end, &ci, &einfo); + if (r != ONIG_NORMAL) { + char s[ONIG_MAX_ERROR_MESSAGE_LEN]; + onig_error_code_to_str((UChar* )s, r, &einfo); + fprintf(stdout, "ERROR: %s\n", s); + onig_end(); + return -1; + } + + if (onigenc_is_valid_mbc_string(str_enc, str, end) != 0) { + r = search(reg, str, end); + } + + onig_free(reg); + onig_end(); + return 0; +} + +#define PATTERN_SIZE 48 +#define NUM_CONTROL_BYTES 1 +#define MIN_STR_SIZE 2 +int LLVMFuzzerTestOneInput(const uint8_t * Data, size_t Size) +{ + int r; + size_t remaining_size; + unsigned char *data; + unsigned char pat_encoding_choice; + unsigned char str_encoding_choice; + unsigned char *pattern; + unsigned char *str; + unsigned char *pattern_end; + unsigned char *str_end; + unsigned int num_encodings; + OnigEncodingType *pattern_enc; + OnigEncodingType *str_enc; + + OnigEncodingType *encodings[] = { + ONIG_ENCODING_ASCII, + ONIG_ENCODING_ISO_8859_1, + ONIG_ENCODING_ISO_8859_2, + ONIG_ENCODING_ISO_8859_3, + ONIG_ENCODING_ISO_8859_4, + ONIG_ENCODING_ISO_8859_5, + ONIG_ENCODING_ISO_8859_6, + ONIG_ENCODING_ISO_8859_7, + ONIG_ENCODING_ISO_8859_8, + ONIG_ENCODING_ISO_8859_9, + ONIG_ENCODING_ISO_8859_10, + ONIG_ENCODING_ISO_8859_11, + ONIG_ENCODING_ISO_8859_13, + ONIG_ENCODING_ISO_8859_14, + ONIG_ENCODING_ISO_8859_15, + ONIG_ENCODING_ISO_8859_16, + ONIG_ENCODING_UTF8, + ONIG_ENCODING_UTF16_BE, + ONIG_ENCODING_UTF16_LE, + ONIG_ENCODING_UTF32_BE, + ONIG_ENCODING_UTF32_LE, + ONIG_ENCODING_EUC_JP, + ONIG_ENCODING_EUC_TW, + ONIG_ENCODING_EUC_KR, + ONIG_ENCODING_EUC_CN, + ONIG_ENCODING_SJIS, + //ONIG_ENCODING_KOI8, + ONIG_ENCODING_KOI8_R, + ONIG_ENCODING_CP1251, + ONIG_ENCODING_BIG5, + ONIG_ENCODING_GB18030, + }; + + if (Size <= (NUM_CONTROL_BYTES + PATTERN_SIZE + MIN_STR_SIZE)) + return 0; + if (Size > 0x1000) + return 0; + + remaining_size = Size; + data = (unsigned char *)(Data); + + // pull off bytes to switch off + pat_encoding_choice = data[0]; + data++; + remaining_size--; + str_encoding_choice = data[0]; + data++; + remaining_size--; + + // copy first PATTERN_SIZE bytes off to be the pattern + pattern = (unsigned char *)malloc(PATTERN_SIZE); + memcpy(pattern, data, PATTERN_SIZE); + pattern_end = pattern + PATTERN_SIZE; + data += PATTERN_SIZE; + remaining_size -= PATTERN_SIZE; + + str = (unsigned char*)malloc(remaining_size); + memcpy(str, data, remaining_size); + str_end = str + remaining_size; + + num_encodings = sizeof(encodings) / sizeof(encodings[0]); + pattern_enc = encodings[pat_encoding_choice % num_encodings]; + str_enc = encodings[str_encoding_choice % num_encodings]; + + r = exec_deluxe(pattern_enc, str_enc, ONIG_OPTION_NONE, (char *)pattern, (char *)pattern_end, (char *)str, (char *)str_end); + + free(pattern); + free(str); + + return r; +} + + +#ifdef STANDALONE + +#include + +extern int main(int argc, char* argv[]) +{ + size_t n; + uint8_t Data[10000]; + + n = read(0, Data, sizeof(Data)); + fprintf(stdout, "n: %ld\n", n); + LLVMFuzzerTestOneInput(Data, n); + + return 0; +} +#endif /* STANDALONE */ diff --git a/vendor/oniguruma/oniguruma/harnesses/dict_conv.py b/vendor/oniguruma/oniguruma/harnesses/dict_conv.py new file mode 100644 index 0000000..f721293 --- /dev/null +++ b/vendor/oniguruma/oniguruma/harnesses/dict_conv.py @@ -0,0 +1,72 @@ +# -*- coding: utf-8 -*- +# dict_conv.py (Python3 script) + +import sys + +ENC_UTF16_BE = 1 +ENC_UTF16_LE = 2 + +def add_char(enc, s, c): + if enc == ENC_UTF16_BE: + s += "\\x00" + + s += c + if enc == ENC_UTF16_LE: + s += "\\x00" + + return s + +def conv(enc, s): + n = len(s) + r = "" + i = 0 + while i < n: + c = s[i] + if c == '\\': + c = s[i+1] + if c == '\\' or c == '"': + r = add_char(enc, r, "\\" + c) + i += 2 + continue + else: + raise("Unknown escape {0}".format(s)) + + r = add_char(enc, r, c) + i += 1 + + return r + +def main(enc): + print("# This file was generated by dict_conv.py.") + for line in sys.stdin: + s = line.strip() + if s[0] == '#': + print(s) + continue + + if s[0] == '"' and s[-1] == '"': + s = conv(enc, s[1:-1]) + print("\"{0}\"".format(s)) + else: + raise("Invalid format {0}".format(s)) + +def usage(argv): + raise RuntimeError("Usage: python {0} utf16_be/utf16_le".format(argv[0])) + + +if __name__ == "__main__": + argv = sys.argv + argc = len(argv) + + if argc >= 2: + s = argv[1] + if s == 'utf16_be': + enc = ENC_UTF16_BE + elif s == 'utf16_le': + enc = ENC_UTF16_LE + else: + usage(argv) + else: + usage(argv) + + main(enc) diff --git a/vendor/oniguruma/oniguruma/harnesses/fuzzer.options b/vendor/oniguruma/oniguruma/harnesses/fuzzer.options new file mode 100644 index 0000000..ab44744 --- /dev/null +++ b/vendor/oniguruma/oniguruma/harnesses/fuzzer.options @@ -0,0 +1,2 @@ +[libfuzzer] +dict = ascii_compatible.dict diff --git a/vendor/oniguruma/oniguruma/harnesses/libfuzzer-onig.cpp b/vendor/oniguruma/oniguruma/harnesses/libfuzzer-onig.cpp new file mode 100644 index 0000000..52a6848 --- /dev/null +++ b/vendor/oniguruma/oniguruma/harnesses/libfuzzer-onig.cpp @@ -0,0 +1,45 @@ +/* libfuzzer test code for oniguruma + * author: Hanno Bテカck, license: CC0/public domain + +Usage: +* compile oniguruma with something like + ./configure CC=clang LD=clang CFLAGS="-fsanitize-coverage=edge -fsanitize=address" \ + LDFLAGS="-fsanitize-coverage=edge -fsanitize=address" +* Compile libfuzzer stub and link against static libonig.a and libFuzzer.a: + clang++ libfuzzer-onig.cpp src/.libs/libonig.a libFuzzer.a -o libfuzzer-onig \ + -fsanitize-coverage=edge -fsanitize=address +* Put sample patterns in directory "in/" +* Run + ./libfuzzer-onig in + +Consult libfuzzer docs for further details and how to create libFuzzer.a: +http://llvm.org/docs/LibFuzzer.html + + */ +#include +#include +#include + +extern "C" int LLVMFuzzerTestOneInput(const uint8_t * Data, size_t Size) +{ + regex_t *reg; + OnigEncoding enc; + + enc = ONIG_ENCODING_UTF8; + +#ifdef FULL_TEST + onig_initialize(&enc, 1); +#endif + onig_set_retry_limit_in_match(120); + onig_set_parse_depth_limit(120); + + if (onig_new(®, Data, Data + Size, ONIG_OPTION_DEFAULT, enc, + ONIG_SYNTAX_DEFAULT, 0) == 0) + onig_free(reg); + +#ifdef FULL_TEST + onig_end(); +#endif + + return 0; +} diff --git a/vendor/oniguruma/oniguruma/harnesses/makefile b/vendor/oniguruma/oniguruma/harnesses/makefile new file mode 100644 index 0000000..d4fcfb6 --- /dev/null +++ b/vendor/oniguruma/oniguruma/harnesses/makefile @@ -0,0 +1,73 @@ +# makefile for harness +DEBUG_OUT = +#DEBUG_OUT = -DONIG_DEBUG_PARSE -DONIG_DEBUG_COMPILE +#DEBUG_OUT = -DONIG_DEBUG_PARSE -DONIG_DEBUG_COMPILE -DONIG_DEBUG_MATCH_COUNTER + +SRC = ../src +CFLAGS = -I$(SRC) -Wall -g -fsanitize=fuzzer,address -fno-omit-frame-pointer +CFLAGS_M = -I$(SRC) -Wall -g -fsanitize=fuzzer-no-link,address -fno-omit-frame-pointer -DSTANDALONE +ONIG_LIB = $(SRC)/.libs/libonig.a +LIBS = $(ONIG_LIB) + +TARGETS = fuzzer-encode fuzzer-syntax fuzzer-utf16-be fuzzer-utf16-le \ + fuzzer-regset \ + read-encode read-syntax read-utf16-be read-utf16-le read-regset + +OTHER_TARGETS = libfuzzer-onig libfuzzer-onig-full fuzzer-deluxe read-deluxe + + +#default: $(TARGETS) +default: read-syntax + +fuzzer-encode: base.c $(ONIG_LIB) + clang $(CFLAGS) $< $(LIBS) -o $@ + +fuzzer-syntax: base.c $(ONIG_LIB) + clang -DSYNTAX_TEST $(CFLAGS) $< $(LIBS) -o $@ + +fuzzer-deluxe: deluxe.c $(ONIG_LIB) + clang $(CFLAGS) $< $(LIBS) -o $@ + +fuzzer-utf16-be: base.c $(ONIG_LIB) + clang -DUTF16_BE $(CFLAGS) $< $(LIBS) -o $@ + +fuzzer-utf16-le: base.c $(ONIG_LIB) + clang -DUTF16_LE $(CFLAGS) $< $(LIBS) -o $@ + +fuzzer-regset: regset.c $(ONIG_LIB) + clang $(CFLAGS) $< $(LIBS) -o $@ + +read-encode: base.c $(ONIG_LIB) + clang $(CFLAGS_M) $< $(LIBS) -o $@ + +read-syntax: base.c $(ONIG_LIB) + clang -DSYNTAX_TEST $(CFLAGS_M) $< $(LIBS) -o $@ + +read-deluxe: deluxe.c $(ONIG_LIB) + clang $(CFLAGS_M) $< $(LIBS) -o $@ + +read-utf16-be: base.c $(ONIG_LIB) + clang -DUTF16_BE $(CFLAGS_M) $< $(LIBS) -o $@ + +read-utf16-le: base.c $(ONIG_LIB) + clang -DUTF16_LE $(CFLAGS_M) $< $(LIBS) -o $@ + +read-regset: regset.c $(ONIG_LIB) + clang $(CFLAGS_M) $< $(LIBS) -o $@ + +libfuzzer-onig: libfuzzer-onig.cpp $(ONIG_LIB) + clang++ $(CFLAGS) $< $(LIBS) -o $@ + +libfuzzer-onig-full: libfuzzer-onig.cpp $(ONIG_LIB) + clang++ -DFULL_TEST $(CFLAGS) $< $(LIBS) -o $@ + + +$(ONIG_LIB): + cd ..; make clean + #cd ..; autoreconf -vfi + cd ..; ./configure CC=clang LD=clang CFLAGS="-g -fsanitize=address -fno-omit-frame-pointer $(DEBUG_OUT)" LDFLAGS="-g -fsanitize=address -fno-omit-frame-pointer" + cd ..; make -j4 + + +clean: + rm -f $(TARGETS) $(OTHER_TARGETS) diff --git a/vendor/oniguruma/oniguruma/harnesses/regset.c b/vendor/oniguruma/oniguruma/harnesses/regset.c new file mode 100644 index 0000000..a8dd181 --- /dev/null +++ b/vendor/oniguruma/oniguruma/harnesses/regset.c @@ -0,0 +1,392 @@ +/* + * regset.c + * Copyright (c) 2019 K.Kosako + */ +#include +#include +#include +#include +#include +#include +#include +#include + +#include "oniguruma.h" + + +#define RETRY_LIMIT 5000 + +#ifdef STANDALONE +//#define CHECK_EACH_REGEX_SEARCH_TIME +#endif + +#define MAX_REG_NUM 256 + +typedef unsigned char uint8_t; +static OnigEncoding ENC; + +static void +output_current_time(FILE* fp) +{ + char d[64]; + time_t t; + + t = time(NULL); + strftime(d, sizeof(d), "%m/%d %H:%M:%S", localtime(&t)); + + fprintf(fp, "%s", d); +} + +#ifdef CHECK_EACH_REGEX_SEARCH_TIME +static double +get_sec(struct timespec* ts, struct timespec* te) +{ + double t; + + t = (te->tv_sec - ts->tv_sec) + + (double )(te->tv_nsec - ts->tv_nsec) / 1000000000.0; + return t; +} + +static int +check_each_regex_search_time(OnigRegSet* set, unsigned char* str, unsigned char* end) +{ + int n; + int i; + int r; + OnigRegion* region; + + n = onig_regset_number_of_regex(set); + region = onig_region_new(); + + for (i = 0; i < n; i++) { + regex_t* reg; + unsigned char* start; + unsigned char* range; + struct timespec ts1, ts2; + double t; + + reg = onig_regset_get_regex(set, i); + start = str; + range = end; + + clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &ts1); + + r = onig_search(reg, str, end, start, range, region, ONIG_OPTION_NONE); + + clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &ts2); + t = get_sec(&ts1, &ts2); + + fprintf(stdout, "regex search time %d: %6.2lfmsec.\n", i, t * 1000.0); + } + + onig_region_free(region, 1); + return 0; +} +#endif + +static int +search(OnigRegSet* set, OnigRegSetLead lead, unsigned char* str, unsigned char* end) +{ + int r; + int match_pos; + unsigned char *start, *range; + + start = str; + range = end; + r = onig_regset_search(set, str, end, start, range, lead, + ONIG_OPTION_NONE, &match_pos); + if (r >= 0) { +#ifdef STANDALONE + int i; + int match_index; + OnigRegion* region; + + match_index = r; + fprintf(stdout, "match reg index: %d, pos: %d (%s)\n", + match_index, match_pos, ONIGENC_NAME(ENC)); + region = onig_regset_get_region(set, match_index); + if (region == 0) { + fprintf(stdout, "ERROR: can't get region.\n"); + return -1; + } + + for (i = 0; i < region->num_regs; i++) { + fprintf(stdout, "%d: (%d-%d)\n", i, region->beg[i], region->end[i]); + } +#endif + } + else if (r == ONIG_MISMATCH) { +#ifdef STANDALONE + fprintf(stdout, "search fail (%s)\n", ONIGENC_NAME(ENC)); +#endif + } + else { /* error */ +#ifdef STANDALONE + char s[ONIG_MAX_ERROR_MESSAGE_LEN]; + + onig_error_code_to_str((UChar* )s, r); + fprintf(stdout, "ERROR: %s\n", s); + fprintf(stdout, " (%s)\n", ONIGENC_NAME(ENC)); +#endif + return -1; + } + + return 0; +} + +static long INPUT_COUNT; +static long EXEC_COUNT; +static long EXEC_COUNT_INTERVAL; +static long REGEX_SUCCESS_COUNT; +static long VALID_STRING_COUNT; + +static int +exec(OnigEncoding enc, int reg_num, int init_reg_num, + UChar* pat[], UChar* pat_end[], + OnigRegSetLead lead, UChar* str, UChar* end) +{ + int r; + int i, j; + OnigRegSet* set; + regex_t* reg; + OnigOptionType options; + OnigErrorInfo einfo; + regex_t* regs[MAX_REG_NUM]; + + EXEC_COUNT++; + EXEC_COUNT_INTERVAL++; + + options = (EXEC_COUNT % 4 == 0) ? ONIG_OPTION_IGNORECASE : ONIG_OPTION_NONE; + + onig_initialize(&enc, 1); + onig_set_retry_limit_in_search(RETRY_LIMIT); + + for (i = 0; i < init_reg_num; i++) { + r = onig_new(®s[i], pat[i], pat_end[i], options, ENC, + ONIG_SYNTAX_DEFAULT, &einfo); + if (r != 0) { +#ifdef STANDALONE + char s[ONIG_MAX_ERROR_MESSAGE_LEN]; + + onig_error_code_to_str((UChar* )s, r, &einfo); + fprintf(stdout, "ERROR: index: %d, %s\n", i, s); +#endif + + for (j = 0; j < i; j++) onig_free(regs[j]); + + onig_end(); + + if (r == ONIGERR_PARSER_BUG || + r == ONIGERR_STACK_BUG || + r == ONIGERR_UNDEFINED_BYTECODE || + r == ONIGERR_UNEXPECTED_BYTECODE) { + return -2; + } + else + return -1; + } + } + + r = onig_regset_new(&set, init_reg_num, regs); + if (r != 0) { + for (i = 0; i < init_reg_num; i++) { + onig_free(regs[i]); + } + onig_end(); + return -1; + } + + for (i = init_reg_num; i < reg_num; i++) { + r = onig_new(®, pat[i], pat_end[i], options, ENC, + ONIG_SYNTAX_DEFAULT, &einfo); + if (r != 0) { +#ifdef STANDALONE + char s[ONIG_MAX_ERROR_MESSAGE_LEN]; + + onig_error_code_to_str((UChar* )s, r, &einfo); + fprintf(stdout, "ERROR: index: %d, %s\n", i, s); +#endif + onig_regset_free(set); + onig_end(); + + if (r == ONIGERR_PARSER_BUG || + r == ONIGERR_STACK_BUG || + r == ONIGERR_UNDEFINED_BYTECODE || + r == ONIGERR_UNEXPECTED_BYTECODE) { + return -2; + } + else + return -1; + } + + r = onig_regset_add(set, reg); + if (r != 0) { + onig_regset_free(set); + onig_end(); + fprintf(stdout, "ERROR: onig_regset_add(): %d\n", i); + return r; + } + } + + REGEX_SUCCESS_COUNT++; + + if (onigenc_is_valid_mbc_string(enc, str, end) != 0) { + VALID_STRING_COUNT++; + r = search(set, lead, str, end); +#ifdef CHECK_EACH_REGEX_SEARCH_TIME + r = check_each_regex_search_time(set, str, end); +#endif + } + + onig_regset_free(set); + onig_end(); + return 0; +} + +#define MAX_PATTERN_SIZE 30 +#define NUM_CONTROL_BYTES 3 + +#define EXEC_PRINT_INTERVAL 2000000 + +static int MaxRegNum; +static int MaxInitRegNum; + +extern int +LLVMFuzzerTestOneInput(const uint8_t * Data, size_t Size) +{ + int r, i; + int pattern_size; + unsigned char *str_null_end; + size_t remaining_size; + unsigned char *data; + unsigned int reg_num; + unsigned int init_reg_num; + unsigned char* pat[256]; + unsigned char* pat_end[256]; + int len; + unsigned int lead_num; + OnigRegSetLead lead; + + INPUT_COUNT++; + + if (Size < NUM_CONTROL_BYTES) return 0; + + remaining_size = Size; + data = (unsigned char* )(Data); + + reg_num = data[0]; + data++; + remaining_size--; + + init_reg_num = data[0]; + data++; + remaining_size--; + + lead_num = data[0]; + data++; + remaining_size--; + lead = (lead_num % 2 == 0 ? ONIG_REGSET_POSITION_LEAD : ONIG_REGSET_REGEX_LEAD); + + if (remaining_size < reg_num * 2) { + reg_num = reg_num % 15; // zero is OK. + } + + init_reg_num %= (reg_num + 1); + + if (MaxRegNum < reg_num) + MaxRegNum = reg_num; + + if (MaxInitRegNum < init_reg_num) + MaxInitRegNum = init_reg_num; + + if (reg_num == 0) + pattern_size = 1; + else + pattern_size = remaining_size / (reg_num * 2); + + if (pattern_size > MAX_PATTERN_SIZE) + pattern_size = MAX_PATTERN_SIZE; + + len = pattern_size * reg_num; + if (len == 0) len = 1; + + for (i = 0; i < reg_num; i++) { + pat[i] = (unsigned char* )malloc(pattern_size); + memcpy(pat[i], data, pattern_size); + pat_end[i] = pat[i] + pattern_size; + data += pattern_size; + remaining_size -= pattern_size; + } + + unsigned char *str = (unsigned char*)malloc(remaining_size != 0 ? remaining_size : 1); + memcpy(str, data, remaining_size); + str_null_end = str + remaining_size; + +#ifdef STANDALONE + fprintf(stdout, "reg num: %d, pattern size: %d, lead: %s\n", + reg_num, pattern_size, + lead == ONIG_REGSET_POSITION_LEAD ? "position" : "regex"); + + if (reg_num != 0) { + unsigned char* p; + i = 0; + p = pat[0]; + while (p < pat_end[0]) { + fprintf(stdout, " 0x%02x", (int )*p++); + i++; + if (i % 8 == 0) fprintf(stdout, "\n"); + } + fprintf(stdout, "\n"); + } +#endif + + ENC = ONIG_ENCODING_UTF8; + + r = exec(ENC, reg_num, init_reg_num, pat, pat_end, lead, str, str_null_end); + + for (i = 0; i < reg_num; i++) { + free(pat[i]); + } + free(str); + + if (r == -2) { + //output_data("parser-bug", Data, Size); + exit(-2); + } + + if (EXEC_COUNT_INTERVAL == EXEC_PRINT_INTERVAL) { + float fexec, freg, fvalid; + + fexec = (float )EXEC_COUNT / INPUT_COUNT; + freg = (float )REGEX_SUCCESS_COUNT / INPUT_COUNT; + fvalid = (float )VALID_STRING_COUNT / INPUT_COUNT; + + output_current_time(stdout); + fprintf(stdout, ": %ld: EXEC:%.2f, REG:%.2f, VALID:%.2f MAX REG:%d-%d\n", + EXEC_COUNT, fexec, freg, fvalid, MaxRegNum, MaxInitRegNum); + + EXEC_COUNT_INTERVAL = 0; + } + else if (EXEC_COUNT == 1) { + output_current_time(stdout); + fprintf(stdout, ": ------------ START ------------\n"); + } + + return r; +} + +#ifdef STANDALONE + +extern int main(int argc, char* argv[]) +{ + size_t n; + uint8_t Data[10000]; + + n = read(0, Data, sizeof(Data)); + fprintf(stdout, "n: %ld\n", n); + LLVMFuzzerTestOneInput(Data, n); + + return 0; +} +#endif /* STANDALONE */ diff --git a/vendor/oniguruma/oniguruma/index.html b/vendor/oniguruma/oniguruma/index.html new file mode 100644 index 0000000..58ba66d --- /dev/null +++ b/vendor/oniguruma/oniguruma/index.html @@ -0,0 +1,192 @@ + + + + Oniguruma + + + +

Oniguruma

(
Japanese) + +

+(c) K.Kosako, updated at: 2019/08/05 +

+ +
+ +
What's new + +
    +
  • 2019/08/06: Version 6.9.3 released.
  • +
  • 2019/05/07: Version 6.9.2 released.
  • +
  • 2018/12/11: Version 6.9.1 released.
  • +
  • 2018/09/03: Version 6.9.0 released.
  • +
  • 2018/04/17: Version 6.8.2 released.
  • +
  • 2018/03/19: Version 6.8.1 released.
  • +
  • 2018/03/16: Version 6.8.0 released.
  • +
  • 2018/01/26: Version 6.7.1 released.
  • +
  • 2017/12/11: Version 6.7.0 released.
  • +
  • 2017/08/30: Version 6.6.1 released.
  • +
  • 2017/08/28: Version 6.6.0 released.
  • +
  • 2017/08/03: Version 6.5.0 released.
  • +
  • 2017/07/03: Version 6.4.0 released.
  • +
  • 2017/05/29: Version 6.3.0 released.
  • +
  • 2017/04/08: Version 6.2.0 released.
  • +
  • 2016/12/11: Version 6.1.3 released.
  • +
+
+
+ +

+Oniguruma is a regular expressions library.
+The characteristics of this library is that different character encoding +
for every regular expression object can be specified. +
(supported APIs: GNU regex, POSIX and Oniguruma native) +

+ +
+
Supported character encodings:
+ASCII, UTF-8, UTF-16BE, UTF-16LE, UTF-32BE, UTF-32LE,
+EUC-JP, EUC-TW, EUC-KR, EUC-CN,
+Shift_JIS, Big5, GB18030, KOI8-R, CP1251,
+ISO-8859-1, ISO-8859-2, ISO-8859-3, ISO-8859-4, ISO-8859-5,
+ISO-8859-6, ISO-8859-7, ISO-8859-8, ISO-8859-9, ISO-8859-10,
+ISO-8859-11, ISO-8859-13, ISO-8859-14, ISO-8859-15, ISO-8859-16
+ +(GB18030 encoding was contributed by KUBO Takehiro)
+(CP1251 encoding was contributed by Byte) +
+

+
+ +
+ +
License: BSD license. + +
+
Platform: +
    +
  • Unix (include Mac OS X) +
  • Cygwin +
  • Win32 +
+ +
+ +Maintainer of 2.x was changed to Hannes Wyss <hwyss AT ywesee.com>.
+About 2.x, please contact him.
+
+* 5.x supports Unicode Property/Script.
+* 2.x supports Ruby1.6/1.8.
+ +
+
Documents: (version 6.1.0) + + +
+
Sample Programs: + + +
+
Site Links: + + +
+
Links: + + +
+
References: + + +
+
+

+and I'm thankful to Akinori MUSHA. +

+ +
+
+
Other Libraries: + +
+ + diff --git a/vendor/oniguruma/oniguruma/index_ja.html b/vendor/oniguruma/oniguruma/index_ja.html new file mode 100644 index 0000000..6b75c6c --- /dev/null +++ b/vendor/oniguruma/oniguruma/index_ja.html @@ -0,0 +1,195 @@ + + + + 鬯シ霆 + + + +

鬯シ霆

+ +

+(c) K.Kosako, 譛邨よ峩譁ー: 2019/08/05 +

+ +
+ +
譖エ譁ー諠蝣ア + +
    +
  • 2019/08/06: Version 6.9.3 繝ェ繝ェ繝シ繧ケ
  • +
  • 2019/05/07: Version 6.9.2 繝ェ繝ェ繝シ繧ケ
  • +
  • 2018/12/11: Version 6.9.1 繝ェ繝ェ繝シ繧ケ
  • +
  • 2018/09/03: Version 6.9.0 繝ェ繝ェ繝シ繧ケ
  • +
  • 2018/04/17: Version 6.8.2 繝ェ繝ェ繝シ繧ケ
  • +
  • 2018/03/19: Version 6.8.1 繝ェ繝ェ繝シ繧ケ
  • +
  • 2018/03/16: Version 6.8.0 繝ェ繝ェ繝シ繧ケ
  • +
  • 2018/01/26: Version 6.7.1 繝ェ繝ェ繝シ繧ケ
  • +
  • 2017/12/11: Version 6.7.0 繝ェ繝ェ繝シ繧ケ
  • +
  • 2017/08/30: Version 6.6.1 繝ェ繝ェ繝シ繧ケ
  • +
  • 2017/08/28: Version 6.6.0 繝ェ繝ェ繝シ繧ケ
  • +
  • 2017/08/03: Version 6.5.0 繝ェ繝ェ繝シ繧ケ
  • +
  • 2017/07/03: Version 6.4.0 繝ェ繝ェ繝シ繧ケ
  • +
  • 2017/05/29: Version 6.3.0 繝ェ繝ェ繝シ繧ケ
  • +
  • 2017/04/08: Version 6.2.0 繝ェ繝ェ繝シ繧ケ
  • +
  • 2016/12/11: Version 6.1.3 繝ェ繝ェ繝シ繧ケ
  • +
+
+
+ +

+鬯シ霆翫ッ豁」隕剰。ィ迴セ繝ゥ繧、繝悶Λ繝ェ縺ァ縺ゅk縲
+縺薙ョ繝ゥ繧、繝悶Λ繝ェ縺ョ迚ケ蠕エ縺ッ縲√◎繧後◇繧後ョ豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝医#縺ィ縺ォ逡ー縺ェ繧区枚蟄励お繝ウ繧ウ繝シ繝繧」繝ウ繧ー繧 +謖螳壹〒縺阪k縺薙→縲
+(API: GNU regex, POSIX and Oniguruma native) +

+ +
+
蟇セ蠢懊@縺ヲ縺繧区枚蟄励お繝ウ繧ウ繝シ繝繧」繝ウ繧ー:
+ASCII, UTF-8, UTF-16BE, UTF-16LE, UTF-32BE, UTF-32LE,
+EUC-JP, EUC-TW, EUC-KR, EUC-CN,
+Shift_JIS, Big5, GB18030, KOI8-R, CP1251,
+ISO-8859-1, ISO-8859-2, ISO-8859-3, ISO-8859-4, ISO-8859-5,
+ISO-8859-6, ISO-8859-7, ISO-8859-8, ISO-8859-9, ISO-8859-10,
+ISO-8859-11, ISO-8859-13, ISO-8859-14, ISO-8859-15, ISO-8859-16
+ +(GB18030縺ッ縲゜UBO Takehiro豌乗署萓)
+(CP1251縺ッ縲。yte豌乗署萓) +
+

+
+ +
+ +
繝ゥ繧、繧サ繝ウ繧ケ:BSD繝ゥ繧、繧サ繝ウ繧ケ + +
+
繝励Λ繝繝医ヵ繧ゥ繝シ繝: +
    +
  • Unix (Mac OS X繧貞性繧) +
  • Cygwin +
  • Win32 +
+ +
+ +2.x縺ョ菫晏ョ域球蠖薙ッ縲?annes Wyss <hwyss AT ywesee.com>縺ォ莠、譖ソ縺励∪縺励◆縲
+2.x縺ォ縺、縺縺ヲ縺ッ縲∝スシ縺ォ騾」邨。縺励※縺上□縺輔>縲
+
+* 5.x縺ッUnicode Property/Script繧呈署萓
+* 2.x縺ッRuby1.6/1.8邨霎シ縺ソ繝ゥ繧、繝悶Λ繝ェ縺ィ縺励※蜍穂ス懊☆繧九 (2006蟷エ譛ォ縺ァ菫晏ョ医r邨ゆコ)
+ +
+
繝峨く繝・繝。繝ウ繝: (version 6.1.0) + + +
+
繧オ繝ウ繝励Ν繝励Ο繧ー繝ゥ繝: + + +
+
繧オ繧、繝: + + +
+
繝ェ繝ウ繧ッ: + + +
+
蜿り雉譁: + + +
+
+

+and I'm thankful to Akinori MUSHA. +

+ +
+
+
莉悶ョ繝ゥ繧、繝悶Λ繝ェ: + +
+ +
+繝帙シ繝縺ォ繧ゅ←繧 + + diff --git a/vendor/onig/install-sh b/vendor/oniguruma/oniguruma/install-sh similarity index 52% rename from vendor/onig/install-sh rename to vendor/oniguruma/oniguruma/install-sh index a9244eb..ec298b5 100755 --- a/vendor/onig/install-sh +++ b/vendor/oniguruma/oniguruma/install-sh @@ -1,7 +1,7 @@ #!/bin/sh # install - install a program, script, or datafile -scriptversion=2011-01-19.21; # UTC +scriptversion=2020-11-14.01; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the @@ -35,25 +35,21 @@ scriptversion=2011-01-19.21; # UTC # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent -# `make' implicit rules from creating a file called install from it +# 'make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. +tab=' ' nl=' ' -IFS=" "" $nl" +IFS=" $tab$nl" -# set DOITPROG to echo to test this script +# Set DOITPROG to "echo" to test this script. -# Don't use :- since 4.3BSD and earlier shells don't like it. doit=${DOITPROG-} -if test -z "$doit"; then - doit_exec=exec -else - doit_exec=$doit -fi +doit_exec=${doit:-exec} # Put in absolute file names if you don't have them in your path; # or use environment vars. @@ -68,22 +64,16 @@ mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} -posix_glob='?' -initialize_posix_glob=' - test "$posix_glob" != "?" || { - if (set -f) 2>/dev/null; then - posix_glob= - else - posix_glob=: - fi - } -' - posix_mkdir= # Desired mode of installed file. mode=0755 +# Create dirs (including intermediate dirs) using mode 755. +# This is like GNU 'install' as of coreutils 8.32 (2020). +mkdir_umask=22 + +backupsuffix= chgrpcmd= chmodcmd=$chmodprog chowncmd= @@ -97,7 +87,7 @@ dir_arg= dst_arg= copy_on_change=false -no_target_directory= +is_target_a_directory=possibly usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE @@ -114,18 +104,28 @@ Options: --version display version info and exit. -c (ignored) - -C install only if different (preserve the last data modification time) + -C install only if different (preserve data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. + -p pass -p to $cpprog. -s $stripprog installed files. + -S SUFFIX attempt to back up existing files, with suffix SUFFIX. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG + +By default, rm is invoked with -f; when overridden with RMPROG, +it's up to you to specify -f if you want it. + +If -S is not specified, no backups are attempted. + +Email bug reports to bug-automake@gnu.org. +Automake home page: https://www.gnu.org/software/automake/ " while test $# -ne 0; do @@ -137,46 +137,62 @@ while test $# -ne 0; do -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" - shift;; + shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 - case $mode in - *' '* | *' '* | *' -'* | *'*'* | *'?'* | *'['*) - echo "$0: invalid mode: $mode" >&2 - exit 1;; - esac - shift;; + case $mode in + *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) + echo "$0: invalid mode: $mode" >&2 + exit 1;; + esac + shift;; -o) chowncmd="$chownprog $2" - shift;; + shift;; + + -p) cpprog="$cpprog -p";; -s) stripcmd=$stripprog;; - -t) dst_arg=$2 - # Protect names problematic for `test' and other utilities. - case $dst_arg in - -* | [=\(\)!]) dst_arg=./$dst_arg;; - esac - shift;; + -S) backupsuffix="$2" + shift;; - -T) no_target_directory=true;; + -t) + is_target_a_directory=always + dst_arg=$2 + # Protect names problematic for 'test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac + shift;; + + -T) is_target_a_directory=never;; --version) echo "$0 $scriptversion"; exit $?;; - --) shift - break;; + --) shift + break;; - -*) echo "$0: invalid option: $1" >&2 - exit 1;; + -*) echo "$0: invalid option: $1" >&2 + exit 1;; *) break;; esac shift done +# We allow the use of options -d and -T together, by making -d +# take the precedence; this is for compatibility with GNU install. + +if test -n "$dir_arg"; then + if test -n "$dst_arg"; then + echo "$0: target directory not allowed when installing a directory." >&2 + exit 1 + fi +fi + if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. @@ -190,7 +206,7 @@ if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then fi shift # arg dst_arg=$arg - # Protect names problematic for `test' and other utilities. + # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac @@ -202,11 +218,20 @@ if test $# -eq 0; then echo "$0: no input file specified." >&2 exit 1 fi - # It's OK to call `install-sh -d' without argument. + # It's OK to call 'install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi +if test -z "$dir_arg"; then + if test $# -gt 1 || test "$is_target_a_directory" = always; then + if test ! -d "$dst_arg"; then + echo "$0: $dst_arg: Is not a directory." >&2 + exit 1 + fi + fi +fi + if test -z "$dir_arg"; then do_exit='(exit $ret); exit $ret' trap "ret=129; $do_exit" 1 @@ -223,16 +248,16 @@ if test -z "$dir_arg"; then *[0-7]) if test -z "$stripcmd"; then - u_plus_rw= + u_plus_rw= else - u_plus_rw='% 200' + u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then - u_plus_rw= + u_plus_rw= else - u_plus_rw=,u+rw + u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac @@ -240,7 +265,7 @@ fi for src do - # Protect names problematic for `test' and other utilities. + # Protect names problematic for 'test' and other utilities. case $src in -* | [=\(\)!]) src=./$src;; esac @@ -250,6 +275,10 @@ do dstdir=$dst test -d "$dstdir" dstdir_status=$? + # Don't chown directories that already exist. + if test $dstdir_status = 0; then + chowncmd="" + fi else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command @@ -266,178 +295,148 @@ do fi dst=$dst_arg - # If destination is a directory, append the input filename; won't work - # if double slashes aren't ignored. + # If destination is a directory, append the input filename. if test -d "$dst"; then - if test -n "$no_target_directory"; then - echo "$0: $dst_arg: Is a directory" >&2 - exit 1 + if test "$is_target_a_directory" = never; then + echo "$0: $dst_arg: Is a directory" >&2 + exit 1 fi dstdir=$dst - dst=$dstdir/`basename "$src"` + dstbase=`basename "$src"` + case $dst in + */) dst=$dst$dstbase;; + *) dst=$dst/$dstbase;; + esac dstdir_status=0 else - # Prefer dirname, but fall back on a substitute if dirname fails. - dstdir=` - (dirname "$dst") 2>/dev/null || - expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$dst" : 'X\(//\)[^/]' \| \ - X"$dst" : 'X\(//\)$' \| \ - X"$dst" : 'X\(/\)' \| . 2>/dev/null || - echo X"$dst" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q' - ` - + dstdir=`dirname "$dst"` test -d "$dstdir" dstdir_status=$? fi fi + case $dstdir in + */) dstdirslash=$dstdir;; + *) dstdirslash=$dstdir/;; + esac + obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') - # Create intermediate dirs using mode 755 as modified by the umask. - # This is like FreeBSD 'install' as of 1997-10-28. - umask=`umask` - case $stripcmd.$umask in - # Optimize common cases. - *[2367][2367]) mkdir_umask=$umask;; - .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; - - *[0-7]) - mkdir_umask=`expr $umask + 22 \ - - $umask % 100 % 40 + $umask % 20 \ - - $umask % 10 % 4 + $umask % 2 - `;; - *) mkdir_umask=$umask,go-w;; - esac - - # With -d, create the new directory with the user-specified mode. - # Otherwise, rely on $mkdir_umask. - if test -n "$dir_arg"; then - mkdir_mode=-m$mode + # With -d, create the new directory with the user-specified mode. + # Otherwise, rely on $mkdir_umask. + if test -n "$dir_arg"; then + mkdir_mode=-m$mode + else + mkdir_mode= + fi + + posix_mkdir=false + # The $RANDOM variable is not portable (e.g., dash). Use it + # here however when possible just to lower collision chance. + tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ + + trap ' + ret=$? + rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null + exit $ret + ' 0 + + # Because "mkdir -p" follows existing symlinks and we likely work + # directly in world-writeable /tmp, make sure that the '$tmpdir' + # directory is successfully created first before we actually test + # 'mkdir -p'. + if (umask $mkdir_umask && + $mkdirprog $mkdir_mode "$tmpdir" && + exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1 + then + if test -z "$dir_arg" || { + # Check for POSIX incompatibilities with -m. + # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or + # other-writable bit of parent directory when it shouldn't. + # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. + test_tmpdir="$tmpdir/a" + ls_ld_tmpdir=`ls -ld "$test_tmpdir"` + case $ls_ld_tmpdir in + d????-?r-*) different_mode=700;; + d????-?--*) different_mode=755;; + *) false;; + esac && + $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { + ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` + test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" + } + } + then posix_mkdir=: + fi + rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" else - mkdir_mode= + # Remove any dirs left behind by ancient mkdir implementations. + rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null fi - - posix_mkdir=false - case $umask in - *[123567][0-7][0-7]) - # POSIX mkdir -p sets u+wx bits regardless of umask, which - # is incompatible with FreeBSD 'install' when (umask & 300) != 0. - ;; - *) - tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ - trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 - - if (umask $mkdir_umask && - exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 - then - if test -z "$dir_arg" || { - # Check for POSIX incompatibilities with -m. - # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or - # other-writeable bit of parent directory when it shouldn't. - # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. - ls_ld_tmpdir=`ls -ld "$tmpdir"` - case $ls_ld_tmpdir in - d????-?r-*) different_mode=700;; - d????-?--*) different_mode=755;; - *) false;; - esac && - $mkdirprog -m$different_mode -p -- "$tmpdir" && { - ls_ld_tmpdir_1=`ls -ld "$tmpdir"` - test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" - } - } - then posix_mkdir=: - fi - rmdir "$tmpdir/d" "$tmpdir" - else - # Remove any dirs left behind by ancient mkdir implementations. - rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null - fi - trap '' 0;; - esac;; + trap '' 0;; esac if $posix_mkdir && ( - umask $mkdir_umask && - $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" + umask $mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else - # The umask is ridiculous, or mkdir does not conform to POSIX, + # mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in - /*) prefix='/';; - [-=\(\)!]*) prefix='./';; - *) prefix='';; + /*) prefix='/';; + [-=\(\)!]*) prefix='./';; + *) prefix='';; esac - eval "$initialize_posix_glob" - oIFS=$IFS IFS=/ - $posix_glob set -f + set -f set fnord $dstdir shift - $posix_glob set +f + set +f IFS=$oIFS prefixes= for d do - test X"$d" = X && continue - - prefix=$prefix$d - if test -d "$prefix"; then - prefixes= - else - if $posix_mkdir; then - (umask=$mkdir_umask && - $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break - # Don't fail if two instances are running concurrently. - test -d "$prefix" || exit 1 - else - case $prefix in - *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; - *) qprefix=$prefix;; - esac - prefixes="$prefixes '$qprefix'" - fi - fi - prefix=$prefix/ + test X"$d" = X && continue + + prefix=$prefix$d + if test -d "$prefix"; then + prefixes= + else + if $posix_mkdir; then + (umask $mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break + # Don't fail if two instances are running concurrently. + test -d "$prefix" || exit 1 + else + case $prefix in + *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; + *) qprefix=$prefix;; + esac + prefixes="$prefixes '$qprefix'" + fi + fi + prefix=$prefix/ done if test -n "$prefixes"; then - # Don't fail if two instances are running concurrently. - (umask $mkdir_umask && - eval "\$doit_exec \$mkdirprog $prefixes") || - test -d "$dstdir" || exit 1 - obsolete_mkdir_used=true + # Don't fail if two instances are running concurrently. + (umask $mkdir_umask && + eval "\$doit_exec \$mkdirprog $prefixes") || + test -d "$dstdir" || exit 1 + obsolete_mkdir_used=true fi fi fi @@ -450,14 +449,25 @@ do else # Make a couple of temp file names in the proper directory. - dsttmp=$dstdir/_inst.$$_ - rmtmp=$dstdir/_rm.$$_ + dsttmp=${dstdirslash}_inst.$$_ + rmtmp=${dstdirslash}_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. - (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && + (umask $cp_umask && + { test -z "$stripcmd" || { + # Create $dsttmp read-write so that cp doesn't create it read-only, + # which would cause strip to fail. + if test -z "$doit"; then + : >"$dsttmp" # No need to fork-exec 'touch'. + else + $doit touch "$dsttmp" + fi + } + } && + $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # @@ -472,20 +482,24 @@ do # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && - old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && - new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && - - eval "$initialize_posix_glob" && - $posix_glob set -f && + old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && + new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && + set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && - $posix_glob set +f && - + set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else + # If $backupsuffix is set, and the file being installed + # already exists, attempt a backup. Don't worry if it fails, + # e.g., if mv doesn't support -f. + if test -n "$backupsuffix" && test -f "$dst"; then + $doit $mvcmd -f "$dst" "$dst$backupsuffix" 2>/dev/null + fi + # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || @@ -493,24 +507,24 @@ do # to itself, or perhaps because mv is so ancient that it does not # support -f. { - # Now remove or move aside any old file at destination location. - # We try this two ways since rm can't unlink itself on some - # systems and the destination file might be busy for other - # reasons. In this case, the final cleanup might fail but the new - # file should still install successfully. - { - test ! -f "$dst" || - $doit $rmcmd -f "$dst" 2>/dev/null || - { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && - { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } - } || - { echo "$0: cannot unlink or rename $dst" >&2 - (exit 1); exit 1 - } - } && - - # Now rename the file to the real destination. - $doit $mvcmd "$dsttmp" "$dst" + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + test ! -f "$dst" || + $doit $rmcmd "$dst" 2>/dev/null || + { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && + { $doit $rmcmd "$rmtmp" 2>/dev/null; :; } + } || + { echo "$0: cannot unlink or rename $dst" >&2 + (exit 1); exit 1 + } + } && + + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 @@ -519,9 +533,9 @@ do done # Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) +# eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" +# time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: diff --git a/vendor/oniguruma/oniguruma/m4/.whatever b/vendor/oniguruma/oniguruma/m4/.whatever new file mode 100644 index 0000000..e69de29 diff --git a/vendor/oniguruma/oniguruma/make_win.bat b/vendor/oniguruma/oniguruma/make_win.bat new file mode 100644 index 0000000..470ef11 --- /dev/null +++ b/vendor/oniguruma/oniguruma/make_win.bat @@ -0,0 +1,5 @@ +SET ONIG_DIR=%~dp0\src +set THIS_DIR=%~dp0 +set BUILD_DIR=%cd% +copy %ONIG_DIR%\config.h.windows.in %BUILD_DIR%\config.h +nmake -f %ONIG_DIR%\Makefile.windows %1 diff --git a/vendor/oniguruma/oniguruma/make_win32.bat b/vendor/oniguruma/oniguruma/make_win32.bat new file mode 100644 index 0000000..bd1a072 --- /dev/null +++ b/vendor/oniguruma/oniguruma/make_win32.bat @@ -0,0 +1,5 @@ +SET ONIG_DIR=%~dp0\src +set THIS_DIR=%~dp0 +set BUILD_DIR=%cd% +copy %ONIG_DIR%\config.h.win32 %BUILD_DIR%\config.h +nmake -f %ONIG_DIR%\Makefile.windows %1 diff --git a/vendor/oniguruma/oniguruma/make_win64.bat b/vendor/oniguruma/oniguruma/make_win64.bat new file mode 100644 index 0000000..ee0a049 --- /dev/null +++ b/vendor/oniguruma/oniguruma/make_win64.bat @@ -0,0 +1,5 @@ +SET ONIG_DIR=%~dp0\src +set THIS_DIR=%~dp0 +set BUILD_DIR=%cd% +copy %ONIG_DIR%\config.h.win64 %BUILD_DIR%\config.h +nmake -f %ONIG_DIR%\Makefile.windows %1 diff --git a/vendor/oniguruma/oniguruma/missing b/vendor/oniguruma/oniguruma/missing new file mode 100755 index 0000000..8d0eaad --- /dev/null +++ b/vendor/oniguruma/oniguruma/missing @@ -0,0 +1,215 @@ +#! /bin/sh +# Common wrapper for a few potentially missing GNU programs. + +scriptversion=2018-03-07.03; # UTC + +# Copyright (C) 1996-2020 Free Software Foundation, Inc. +# Originally written by Fran,cois Pinard , 1996. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +if test $# -eq 0; then + echo 1>&2 "Try '$0 --help' for more information" + exit 1 +fi + +case $1 in + + --is-lightweight) + # Used by our autoconf macros to check whether the available missing + # script is modern enough. + exit 0 + ;; + + --run) + # Back-compat with the calling convention used by older automake. + shift + ;; + + -h|--h|--he|--hel|--help) + echo "\ +$0 [OPTION]... PROGRAM [ARGUMENT]... + +Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due +to PROGRAM being missing or too old. + +Options: + -h, --help display this help and exit + -v, --version output version information and exit + +Supported PROGRAM values: + aclocal autoconf autoheader autom4te automake makeinfo + bison yacc flex lex help2man + +Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and +'g' are ignored when checking the name. + +Send bug reports to ." + exit $? + ;; + + -v|--v|--ve|--ver|--vers|--versi|--versio|--version) + echo "missing $scriptversion (GNU Automake)" + exit $? + ;; + + -*) + echo 1>&2 "$0: unknown '$1' option" + echo 1>&2 "Try '$0 --help' for more information" + exit 1 + ;; + +esac + +# Run the given program, remember its exit status. +"$@"; st=$? + +# If it succeeded, we are done. +test $st -eq 0 && exit 0 + +# Also exit now if we it failed (or wasn't found), and '--version' was +# passed; such an option is passed most likely to detect whether the +# program is present and works. +case $2 in --version|--help) exit $st;; esac + +# Exit code 63 means version mismatch. This often happens when the user +# tries to use an ancient version of a tool on a file that requires a +# minimum version. +if test $st -eq 63; then + msg="probably too old" +elif test $st -eq 127; then + # Program was missing. + msg="missing on your system" +else + # Program was found and executed, but failed. Give up. + exit $st +fi + +perl_URL=https://www.perl.org/ +flex_URL=https://github.com/westes/flex +gnu_software_URL=https://www.gnu.org/software + +program_details () +{ + case $1 in + aclocal|automake) + echo "The '$1' program is part of the GNU Automake package:" + echo "<$gnu_software_URL/automake>" + echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" + echo "<$gnu_software_URL/autoconf>" + echo "<$gnu_software_URL/m4/>" + echo "<$perl_URL>" + ;; + autoconf|autom4te|autoheader) + echo "The '$1' program is part of the GNU Autoconf package:" + echo "<$gnu_software_URL/autoconf/>" + echo "It also requires GNU m4 and Perl in order to run:" + echo "<$gnu_software_URL/m4/>" + echo "<$perl_URL>" + ;; + esac +} + +give_advice () +{ + # Normalize program name to check for. + normalized_program=`echo "$1" | sed ' + s/^gnu-//; t + s/^gnu//; t + s/^g//; t'` + + printf '%s\n' "'$1' is $msg." + + configure_deps="'configure.ac' or m4 files included by 'configure.ac'" + case $normalized_program in + autoconf*) + echo "You should only need it if you modified 'configure.ac'," + echo "or m4 files included by it." + program_details 'autoconf' + ;; + autoheader*) + echo "You should only need it if you modified 'acconfig.h' or" + echo "$configure_deps." + program_details 'autoheader' + ;; + automake*) + echo "You should only need it if you modified 'Makefile.am' or" + echo "$configure_deps." + program_details 'automake' + ;; + aclocal*) + echo "You should only need it if you modified 'acinclude.m4' or" + echo "$configure_deps." + program_details 'aclocal' + ;; + autom4te*) + echo "You might have modified some maintainer files that require" + echo "the 'autom4te' program to be rebuilt." + program_details 'autom4te' + ;; + bison*|yacc*) + echo "You should only need it if you modified a '.y' file." + echo "You may want to install the GNU Bison package:" + echo "<$gnu_software_URL/bison/>" + ;; + lex*|flex*) + echo "You should only need it if you modified a '.l' file." + echo "You may want to install the Fast Lexical Analyzer package:" + echo "<$flex_URL>" + ;; + help2man*) + echo "You should only need it if you modified a dependency" \ + "of a man page." + echo "You may want to install the GNU Help2man package:" + echo "<$gnu_software_URL/help2man/>" + ;; + makeinfo*) + echo "You should only need it if you modified a '.texi' file, or" + echo "any other file indirectly affecting the aspect of the manual." + echo "You might want to install the Texinfo package:" + echo "<$gnu_software_URL/texinfo/>" + echo "The spurious makeinfo call might also be the consequence of" + echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" + echo "want to install GNU make:" + echo "<$gnu_software_URL/make/>" + ;; + *) + echo "You might have modified some files without having the proper" + echo "tools for further handling them. Check the 'README' file, it" + echo "often tells you about the needed prerequisites for installing" + echo "this package. You may also peek at any GNU archive site, in" + echo "case some other package contains this missing '$1' program." + ;; + esac +} + +give_advice "$1" | sed -e '1s/^/WARNING: /' \ + -e '2,$s/^/ /' >&2 + +# Propagate the correct exit status (expected to be 127 for a program +# not found, 63 for a program that failed due to version mismatch). +exit $st + +# Local variables: +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: diff --git a/vendor/oniguruma/oniguruma/onig-config.cmake.in b/vendor/oniguruma/oniguruma/onig-config.cmake.in new file mode 100644 index 0000000..0a8a702 --- /dev/null +++ b/vendor/oniguruma/oniguruma/onig-config.cmake.in @@ -0,0 +1,80 @@ +#!/bin/sh +# Copyright (C) 2006 K.Kosako + +ONIG_VERSION=@PACKAGE_VERSION@ + +show_usage() +{ + cat < +#include "oniguruma.h" + +static int +search(regex_t* reg, unsigned char* str, unsigned char* end) +{ + int r; + unsigned char *start, *range; + OnigRegion *region; + + region = onig_region_new(); + + start = str; + range = end; + r = onig_search(reg, str, end, start, range, region, ONIG_OPTION_NONE); + if (r >= 0) { + int i; + + fprintf(stderr, "match at %d (%s)\n", r, + ONIGENC_NAME(onig_get_encoding(reg))); + for (i = 0; i < region->num_regs; i++) { + fprintf(stderr, "%d: (%d-%d)\n", i, region->beg[i], region->end[i]); + } + } + else if (r == ONIG_MISMATCH) { + fprintf(stderr, "search fail (%s)\n", + ONIGENC_NAME(onig_get_encoding(reg))); + } + else { /* error */ + char s[ONIG_MAX_ERROR_MESSAGE_LEN]; + onig_error_code_to_str((UChar* )s, r); + fprintf(stderr, "ERROR: %s\n", s); + fprintf(stderr, " (%s)\n", ONIGENC_NAME(onig_get_encoding(reg))); + onig_region_free(region, 1 /* 1:free self, 0:free contents only */); + return -1; + } + + onig_region_free(region, 1 /* 1:free self, 0:free contents only */); + return 0; +} + +static int +exec(OnigEncoding enc, OnigOptionType options, char* apattern, char* astr) +{ + int r; + unsigned char *end; + regex_t* reg; + OnigErrorInfo einfo; + UChar* pattern = (UChar* )apattern; + UChar* str = (UChar* )astr; + + r = onig_new(®, pattern, + pattern + onigenc_str_bytelen_null(enc, pattern), + options, enc, ONIG_SYNTAX_DEFAULT, &einfo); + if (r != ONIG_NORMAL) { + char s[ONIG_MAX_ERROR_MESSAGE_LEN]; + onig_error_code_to_str((UChar* )s, r, &einfo); + fprintf(stderr, "ERROR: %s\n", s); + return -1; + } + + end = str + onigenc_str_bytelen_null(enc, str); + r = search(reg, str, end); + + onig_free(reg); + return 0; +} + + + +extern int main(int argc, char* argv[]) +{ + OnigEncoding use_encs[1]; + + use_encs[0] = ONIG_ENCODING_UTF8; + onig_initialize(use_encs, 1); + + /* fix ignore case in look-behind + commit: 3340ec2cc5627172665303fe248c9793354d2251 */ + exec(ONIG_ENCODING_UTF8, ONIG_OPTION_IGNORECASE, + "\305\211a", "\312\274na"); /* \u{0149}a \u{02bc}na */ + + exec(ONIG_ENCODING_UTF8, ONIG_OPTION_NONE, "(\\2)(\\1)", "aa"); /* fail. */ + + exec(ONIG_ENCODING_UTF8, ONIG_OPTION_FIND_LONGEST, + "a*", "aa aaa aaaa aaaaa "); /* match 12-17 */ + + onig_end(); + return 0; +} diff --git a/vendor/oniguruma/oniguruma/sample/callback_each_match.c b/vendor/oniguruma/oniguruma/sample/callback_each_match.c new file mode 100644 index 0000000..15c39dd --- /dev/null +++ b/vendor/oniguruma/oniguruma/sample/callback_each_match.c @@ -0,0 +1,166 @@ +/* + * callback_each_match.c + */ +#include +#include +#include "oniguruma.h" + +static int +each_match_callback(const UChar* str, const UChar* end, + const UChar* match_start, OnigRegion* region, void* user_data) +{ +#if 1 + fprintf(stdout, "each_match_callback:\n"); + fprintf(stdout, " match at: %ld - %d: %p\n", match_start - str, region->end[0], + user_data); + fprintf(stdout, " region[0]: %d - %d\n", region->beg[0], region->end[0]); +#else + int i; + i = region->beg[0]; + fputc('<', stdout); + while (i < region->end[0]) { + fputc((int )str[i], stdout); + i++; + } + fputc('>', stdout); +#endif + +#if 0 + /* terminate match/search if returns error code < 0 */ + return ONIG_ABORT; +#endif + + return ONIG_NORMAL; +} + +static int +search(UChar* pattern, UChar* str, OnigOptionType options, OnigOptionType runtime_options) +{ + int r; + unsigned char *start, *range, *end; + regex_t* reg; + OnigErrorInfo einfo; + OnigRegion *region; + OnigMatchParam* mp; + void* user_data; + + r = onig_new(®, pattern, pattern + strlen((char* )pattern), + options, ONIG_ENCODING_ASCII, ONIG_SYNTAX_DEFAULT, &einfo); + if (r != ONIG_NORMAL) { + char s[ONIG_MAX_ERROR_MESSAGE_LEN]; + onig_error_code_to_str((UChar* )s, r, &einfo); + fprintf(stderr, "ERROR: %s\n", s); + return -1; + } + + region = onig_region_new(); + + end = str + strlen((char* )str); + start = str; + range = end; + mp = onig_new_match_param(); + if (mp == 0) return -2; + + user_data = (void* )0x1234; + onig_set_callout_user_data_of_match_param(mp, user_data); + + r = onig_search_with_param(reg, str, end, start, range, region, + runtime_options, mp); + onig_free_match_param(mp); + if (r >= 0) { + /* If ONIG_OPTION_CALLBACK_EACH_MATCH is used with + ONIG_OPTION_FIND_LONGEST, it may also return positive value. */ + fprintf(stdout, "\nr: %d\n", r); + } + else if (r == ONIG_MISMATCH) { + /* always return ONIG_MISMATCH if ONIG_OPTION_CALLBACK_EACH_MATCH */ + fprintf(stdout, "\n"); + } + else { /* error */ + char s[ONIG_MAX_ERROR_MESSAGE_LEN]; + onig_error_code_to_str((UChar* )s, r); + fprintf(stderr, "ERROR: %s\n", s); + onig_region_free(region, 1 /* 1:free self, 0:free contents only */); + onig_free(reg); + onig_end(); + return -1; + } + + return 0; +} + +static int +match(UChar* pattern, UChar* str, UChar* at, OnigOptionType options, OnigOptionType runtime_options) +{ + int r; + unsigned char *end; + regex_t* reg; + OnigErrorInfo einfo; + OnigRegion *region; + OnigMatchParam* mp; + void* user_data; + + r = onig_new(®, pattern, pattern + strlen((char* )pattern), + options, ONIG_ENCODING_ASCII, ONIG_SYNTAX_DEFAULT, &einfo); + if (r != ONIG_NORMAL) { + char s[ONIG_MAX_ERROR_MESSAGE_LEN]; + onig_error_code_to_str((UChar* )s, r, &einfo); + fprintf(stderr, "ERROR: %s\n", s); + return -1; + } + + region = onig_region_new(); + + end = str + strlen((char* )str); + mp = onig_new_match_param(); + if (mp == 0) return -2; + + user_data = (void* )0x1234; + onig_set_callout_user_data_of_match_param(mp, user_data); + + r = onig_match_with_param(reg, str, end, at, region, runtime_options, mp); + onig_free_match_param(mp); + if (r >= 0) { + /* If ONIG_OPTION_CALLBACK_EACH_MATCH is used with + ONIG_OPTION_FIND_LONGEST, it may also return positive value. */ + fprintf(stdout, "\nr: %d\n", r); + } + else if (r == ONIG_MISMATCH) { + /* always return ONIG_MISMATCH if ONIG_OPTION_CALLBACK_EACH_MATCH */ + fprintf(stdout, "\n"); + } + else { /* error */ + char s[ONIG_MAX_ERROR_MESSAGE_LEN]; + onig_error_code_to_str((UChar* )s, r); + fprintf(stderr, "ERROR: %s\n", s); + onig_region_free(region, 1 /* 1:free self, 0:free contents only */); + onig_free(reg); + onig_end(); + return -1; + } + + return 0; +} + +extern int main(int argc, char* argv[]) +{ + OnigEncoding use_encs[1]; + + static UChar* pattern = (UChar* )"a(.*)\\Kb|[e-f]+"; + static UChar* str = (UChar* )"zzzzafffb"; + + use_encs[0] = ONIG_ENCODING_ASCII; + onig_initialize(use_encs, sizeof(use_encs)/sizeof(use_encs[0])); + onig_set_callback_each_match(each_match_callback); + + fprintf(stdout, "\n"); + search(pattern, str, ONIG_OPTION_NONE, ONIG_OPTION_CALLBACK_EACH_MATCH); + fprintf(stdout, "\n"); + search(pattern, str, ONIG_OPTION_FIND_LONGEST, ONIG_OPTION_CALLBACK_EACH_MATCH); + + fprintf(stdout, "\n"); + match(pattern, str, str + 5, ONIG_OPTION_NONE, ONIG_OPTION_CALLBACK_EACH_MATCH); + + onig_end(); + return 0; +} diff --git a/vendor/oniguruma/oniguruma/sample/callout.c b/vendor/oniguruma/oniguruma/sample/callout.c new file mode 100644 index 0000000..b5e3d91 --- /dev/null +++ b/vendor/oniguruma/oniguruma/sample/callout.c @@ -0,0 +1,268 @@ +/* + * callout.c + */ +#include +#include +#include +#include "oniguruma.h" + +static int +callout_body(OnigCalloutArgs* args, void* user_data) +{ + int r; + int i; + int n; + int begin, end; + int used_num; + int used_bytes; + OnigCalloutIn in; + int name_id; + const UChar* contents; + const UChar* start; + const UChar* current; + regex_t* regex; + + in = onig_get_callout_in_by_callout_args(args); + name_id = onig_get_name_id_by_callout_args(args); + start = onig_get_start_by_callout_args(args); + current = onig_get_current_by_callout_args(args); + regex = onig_get_regex_by_callout_args(args); + + contents = onig_get_contents_by_callout_args(args); + + if (name_id != ONIG_NON_NAME_ID) { + UChar* name = onig_get_callout_name_by_name_id(name_id); + fprintf(stdout, "name: %s\n", name); + } + fprintf(stdout, + "%s %s: contents: \"%s\", start: \"%s\", current: \"%s\"\n", + contents != 0 ? "CONTENTS" : "NAME", + in == ONIG_CALLOUT_IN_PROGRESS ? "PROGRESS" : "RETRACTION", + contents, start, current); + + fprintf(stdout, "user_data: %s\n", (char* )user_data); + + (void )onig_get_used_stack_size_in_callout(args, &used_num, &used_bytes); + fprintf(stdout, "stack: used_num: %d, used_bytes: %d\n", used_num, used_bytes); + + n = onig_number_of_captures(regex); + for (i = 1; i <= n; i++) { + r = onig_get_capture_range_in_callout(args, i, &begin, &end); + if (r != ONIG_NORMAL) return r; + + fprintf(stdout, "capture %d: (%d-%d)\n", i, begin, end); + } + + fflush(stdout); + return ONIG_CALLOUT_SUCCESS; +} + +static int +progress_callout_func(OnigCalloutArgs* args, void* user_data) +{ + return callout_body(args, user_data); +} + +static int +retraction_callout_func(OnigCalloutArgs* args, void* user_data) +{ + return callout_body(args, user_data); +} + +static int +foo(OnigCalloutArgs* args, void* user_data) +{ + return callout_body(args, user_data); +} + +static int +bar(OnigCalloutArgs* args, void* user_data) +{ + int r; + int i; + int n; + OnigType type; + OnigValue val; + + fprintf(stdout, "bar called.\n"); + + n = onig_get_args_num_by_callout_args(args); + if (n < 0) { + fprintf(stderr, "FAIL: onig_get_args_num_by_callout_args(): %d\n", n); + return n; + } + + for (i = 0; i < n; i++) { + r = onig_get_arg_by_callout_args(args, i, &type, &val); + if (r != 0) { + fprintf(stderr, "FAIL: onig_get_arg_by_callout_args(): %d\n", r); + return r; + } + + fprintf(stdout, "arg[%d]: ", i); + switch (type) { + case ONIG_TYPE_LONG: + fprintf(stdout, "%ld\n", val.l); + break; + case ONIG_TYPE_CHAR: + fprintf(stdout, "0x%06x\n", val.c); + break; + case ONIG_TYPE_STRING: + fprintf(stdout, "'%s'\n", val.s.start); + break; + default: + /* Never come here. But escape warning. */ + break; + }; + } + + return ONIG_CALLOUT_SUCCESS; +} + +static int +test(OnigEncoding enc, OnigMatchParam* mp, char* in_pattern, char* in_str) +{ + int r; + unsigned char *start, *range, *end; + regex_t* reg; + OnigErrorInfo einfo; + OnigRegion *region; + UChar* pattern; + UChar* str; + + pattern = (UChar* )in_pattern; + str = (UChar* )in_str; + + r = onig_new(®, pattern, pattern + strlen((char* )pattern), + ONIG_OPTION_DEFAULT, enc, ONIG_SYNTAX_DEFAULT, &einfo); + if (r != ONIG_NORMAL) { + char s[ONIG_MAX_ERROR_MESSAGE_LEN]; + onig_error_code_to_str((UChar* )s, r, &einfo); + fprintf(stderr, "COMPILE ERROR: %d: %s\n", r, s); + return -1; + } + + region = onig_region_new(); + + end = str + strlen((char* )str); + start = str; + range = end; + r = onig_search_with_param(reg, str, end, start, range, region, + ONIG_OPTION_NONE, mp); + if (r >= 0) { + int i; + + fprintf(stderr, "match at %d\n", r); + for (i = 0; i < region->num_regs; i++) { + fprintf(stderr, "%d: (%d-%d)\n", i, region->beg[i], region->end[i]); + } + } + else if (r == ONIG_MISMATCH) { + fprintf(stderr, "search fail\n"); + } + else { /* error */ + char s[ONIG_MAX_ERROR_MESSAGE_LEN]; + onig_error_code_to_str((UChar* )s, r); + fprintf(stderr, "SEARCH ERROR: %d: %s\n", r, s); + } + + onig_region_free(region, 1 /* 1:free self, 0:free contents only */); + onig_free(reg); + return r; +} + +extern int main(int argc, char* argv[]) +{ + int r; + int id; + void* user_data; + UChar* name; + OnigEncoding use_encs[1]; + unsigned int arg_types[4]; + OnigValue opt_defaults[4]; + OnigEncoding enc; + OnigMatchParam* mp; + + enc = ONIG_ENCODING_UTF8; + use_encs[0] = enc; + + r = onig_initialize(use_encs, sizeof(use_encs)/sizeof(use_encs[0])); + if (r != ONIG_NORMAL) return -1; + + /* monitor on */ + r = onig_setup_builtin_monitors_by_ascii_encoded_name(stdout); + if (r != ONIG_NORMAL) return -1; + + name = (UChar* )"foo"; + id = onig_set_callout_of_name(enc, ONIG_CALLOUT_TYPE_SINGLE, + name, name + strlen((char* )name), + ONIG_CALLOUT_IN_BOTH, foo, 0, 0, 0, 0, 0); + if (id < 0) { + fprintf(stderr, "ERROR: fail to set callout of name: %s\n", name); + //return -1; + } + + name = (UChar* )"bar"; + arg_types[0] = ONIG_TYPE_LONG; + arg_types[1] = ONIG_TYPE_STRING; + arg_types[2] = ONIG_TYPE_CHAR; + opt_defaults[0].s.start = (UChar* )"I am a option argument's default value."; + opt_defaults[0].s.end = opt_defaults[0].s.start + + strlen((char* )opt_defaults[0].s.start); + opt_defaults[1].c = 0x4422; + + id = onig_set_callout_of_name(enc, ONIG_CALLOUT_TYPE_SINGLE, + name, name + strlen((char* )name), + ONIG_CALLOUT_IN_PROGRESS, bar, 0, + 3, arg_types, 2, opt_defaults); + if (id < 0) { + fprintf(stderr, "ERROR: fail to set callout of name: %s\n", name); + //return -1; + } + + (void)onig_set_progress_callout(progress_callout_func); + (void)onig_set_retraction_callout(retraction_callout_func); + + mp = onig_new_match_param(); + + user_data = (void* )"something data"; + r = onig_set_callout_user_data_of_match_param(mp, user_data); + if (r != ONIG_NORMAL) { + fprintf(stderr, "ERROR: fail onig_set_callout_user_data_of_match_param(): %d\n", r); + } + + /* callout of contents */ + test(enc, mp, "a+(?{foo bar baz...}X)$", "aaab"); + test(enc, mp, "(?{{!{}#$%&'()=-~^|[_]`@*:+;<>?/.\\,}}[symbols])c", "abc"); + test(enc, mp, "\\A(...)(?{{{booooooooooooo{{ooo}}ooooooooooz}}}<)", "aaab"); + test(enc, mp, "\\A(?!a(?{in prec-read-not}[xxx]X)b)", "ac"); + test(enc, mp, "(?=,4})", "abababcabababaa"); + test(enc, mp, "(?:(*MAX[T]{3})a)*(?:(*MAX{T})c)*", "aaccc"); + + /* callouts in condition */ + test(enc, mp, "\\A(?(?{in condition})then|else)\\z", "then"); + test(enc, mp, "\\A(?(*FAIL)then|else)\\z", "else"); + + /* monitor test */ + test(enc, mp, "(?:(*MON{X})(*FAIL)|.{,3}(*MON[FOO])k)", "abcdefghijk"); + + onig_free_match_param(mp); + onig_end(); + return 0; +} diff --git a/vendor/oniguruma/oniguruma/sample/count.c b/vendor/oniguruma/oniguruma/sample/count.c new file mode 100644 index 0000000..904101c --- /dev/null +++ b/vendor/oniguruma/oniguruma/sample/count.c @@ -0,0 +1,125 @@ +/* + * count.c + */ +#include +#include +#include +#include "oniguruma.h" + +#define ulen(enc, p) onigenc_str_bytelen_null(enc, (UChar* )p) + +static int +test(OnigEncoding enc, OnigMatchParam* mp, char* in_pattern, char* in_str) +{ + int r; + unsigned char *start, *range, *end; + regex_t* reg; + OnigErrorInfo einfo; + OnigRegion *region; + UChar* pattern; + UChar* str; + + pattern = (UChar* )in_pattern; + str = (UChar* )in_str; + + r = onig_new(®, pattern, pattern + ulen(enc, pattern), + ONIG_OPTION_DEFAULT, enc, ONIG_SYNTAX_DEFAULT, &einfo); + if (r != ONIG_NORMAL) { + char s[ONIG_MAX_ERROR_MESSAGE_LEN]; + onig_error_code_to_str((UChar* )s, r, &einfo); + fprintf(stderr, "COMPILE ERROR: %d: %s\n", r, s); + return -1; + } + + region = onig_region_new(); + + end = str + ulen(enc, str); + start = str; + range = end; + r = onig_search_with_param(reg, str, end, start, range, region, + ONIG_OPTION_NONE, mp); + if (r >= 0) { + int slot; + OnigValue val; + char* tag; + int tag_len; + + fprintf(stdout, "match at %d\n", r); + + show_count: + if (enc == ONIG_ENCODING_UTF16_BE) { + tag = "\000x\000\000"; + } + else if (enc == ONIG_ENCODING_UTF16_LE) { + tag = "x\000\000\000"; + } + else { + tag = "x"; + } + tag_len = ulen(enc, tag); + + slot = 0; + r = onig_get_callout_data_by_tag_dont_clear_old(reg, mp, (UChar* )tag, + (UChar* )tag + tag_len, slot, 0, &val); + if (r < ONIG_NORMAL) goto err; + else if (r == ONIG_VALUE_IS_NOT_SET) { + fprintf(stdout, "COUNT[x]: NO DATA\n"); + } + else { + fprintf(stdout, "COUNT[x]: %ld\n", val.l); + } + } + else if (r == ONIG_MISMATCH) { + fprintf(stdout, "search fail\n"); + goto show_count; + } + else { /* error */ + char s[ONIG_MAX_ERROR_MESSAGE_LEN]; + err: + onig_error_code_to_str((UChar* )s, r); + fprintf(stdout, "SEARCH ERROR: %d: %s\n", r, s); + } + + onig_region_free(region, 1 /* 1:free self, 0:free contents only */); + onig_free(reg); + return r; +} + +extern int main(int argc, char* argv[]) +{ + int r; + OnigMatchParam* mp; + OnigEncoding encs[3]; + + encs[0] = ONIG_ENCODING_UTF8; + encs[1] = ONIG_ENCODING_UTF16_BE; + encs[2] = ONIG_ENCODING_UTF16_LE; + + r = onig_initialize(encs, sizeof(encs)/sizeof(encs[0])); + if (r != ONIG_NORMAL) { + fprintf(stderr, "FAIL: onig_initialize(): %d\n", r); + return -1; + } + + mp = onig_new_match_param(); + + test(encs[0], mp, "abc(.(*COUNT[x]))*(*FAIL)", "abcdefg"); + test(encs[0], mp, "abc(.(*COUNT[_any_]))*(.(*COUNT[x]))*d", "abcdefg"); + /* fail count */ + test(encs[0], mp, "abc(.(*COUNT[x]{<}))*f", "abcdefg"); + /* success count */ + test(encs[0], mp, "abc(.(*COUNT[x]{X}))*f", "abcdefg"); + /* passed count */ + test(encs[0], mp, "abc(.(*COUNT[x]))*f", "abcdefg"); + test(encs[0], mp, "a(.(*COUNT[x]))*z", "abcd\nabcdz"); + /* total count */ + test(encs[0], mp, "a(.(*TOTAL_COUNT[x]))*z", "abcd\nabcdz"); + + test(encs[1], mp, "\000a\000b\000c\000(\000.\000(\000*\000C\000O\000U\000N\000T\000[\000x\000]\000)\000)\000*\000(\000*\000F\000A\000I\000L\000)\000\000", "\000a\000b\000c\000d\000e\000f\000g\000\000"); + + test(encs[2], mp, "a\000b\000c\000(\000.\000(\000*\000C\000O\000U\000N\000T\000[\000x\000]\000)\000)\000*\000(\000*\000F\000A\000I\000L\000)\000\000\000", "a\000b\000c\000d\000e\000f\000g\000\000\000"); + + onig_free_match_param(mp); + onig_end(); + return 0; +} diff --git a/vendor/oniguruma/oniguruma/sample/crnl.c b/vendor/oniguruma/oniguruma/sample/crnl.c new file mode 100644 index 0000000..bfa563e --- /dev/null +++ b/vendor/oniguruma/oniguruma/sample/crnl.c @@ -0,0 +1,129 @@ +/* + * crnl.c 2007/05/30 K.Kosako + * + * !!! You should enable USE_CRNL_AS_LINE_TERMINATOR. !!! + * + * USE_CRNL_AS_LINE_TERMINATOR config test program. + */ +#include +#include +#include "oniguruma.h" + +static int nfail = 0; + +static void result(int no, int from, int to, + int expected_from, int expected_to) +{ + fprintf(stderr, "%3d: ", no); + if (from == expected_from && to == expected_to) { + fprintf(stderr, "Success\n"); + } + else { + fprintf(stderr, "Fail: expected: (%d-%d), result: (%d-%d)\n", + expected_from, expected_to, from, to); + + nfail++; + } +} + +static int +x(int no, char* pattern_arg, char* str_arg, + int expected_from, int expected_to) +{ + int r; + unsigned char *start, *range, *end; + regex_t* reg; + OnigErrorInfo einfo; + OnigRegion *region; + UChar *pattern, *str; + + pattern = (UChar* )pattern_arg; + str = (UChar* )str_arg; + + r = onig_new(®, pattern, pattern + strlen((char* )pattern), + ONIG_OPTION_DEFAULT, ONIG_ENCODING_ASCII, ONIG_SYNTAX_DEFAULT, &einfo); + if (r != ONIG_NORMAL) { + char s[ONIG_MAX_ERROR_MESSAGE_LEN]; + onig_error_code_to_str(s, r, &einfo); + fprintf(stderr, "ERROR: %s\n", s); + return -1; + } + + region = onig_region_new(); + + end = str + strlen((char* )str); + start = str; + range = end; + r = onig_search(reg, str, end, start, range, region, ONIG_OPTION_NONE); + if (r >= 0 || r == ONIG_MISMATCH) { + result(no, region->beg[0], region->end[0], expected_from, expected_to); + } + else if (r == ONIG_MISMATCH) { + result(no, r, -1, expected_from, expected_to); + } + else { /* error */ + char s[ONIG_MAX_ERROR_MESSAGE_LEN]; + onig_error_code_to_str(s, r); + fprintf(stderr, "ERROR: %s\n", s); + onig_region_free(region, 1 /* 1:free self, 0:free contents only */); + onig_free(reg); + return -1; + } + + onig_region_free(region, 1 /* 1:free self, 0:free contents only */); + onig_free(reg); + return 0; +} + +static int +f(int no, char* pattern_arg, char* str_arg) +{ + return x(no, pattern_arg, str_arg, -1, -1); +} + +extern int main(int argc, char* argv[]) +{ + x( 1, "", "\r\n", 0, 0); + x( 2, ".", "\r\n", 0, 1); + f( 3, "..", "\r\n"); + x( 4, "^", "\r\n", 0, 0); + x( 5, "\\n^", "\r\nf", 1, 2); + x( 6, "\\n^a", "\r\na", 1, 3); + x( 7, "$", "\r\n", 0, 0); + x( 8, "T$", "T\r\n", 0, 1); + x( 9, "T$", "T\raT\r\n", 3, 4); + x(10, "\\z", "\r\n", 2, 2); + f(11, "a\\z", "a\r\n"); + x(12, "\\Z", "\r\n", 0, 0); + x(13, "\\Z", "\r\na", 3, 3); + x(14, "\\Z", "\r\n\r\n\n", 4, 4); + x(15, "\\Z", "\r\n\r\nX", 5, 5); + x(16, "a\\Z", "a\r\n", 0, 1); + x(17, "aaaaaaaaaaaaaaa\\Z", "aaaaaaaaaaaaaaa\r\n", 0, 15); + x(18, "a|$", "b\r\n", 1, 1); + x(19, "$|b", "\rb", 1, 2); + x(20, "a$|ab$", "\r\nab\r\n", 2, 4); + + x(21, "a|\\Z", "b\r\n", 1, 1); + x(22, "\\Z|b", "\rb", 1, 2); + x(23, "a\\Z|ab\\Z", "\r\nab\r\n", 2, 4); + x(24, "(?=a$).", "a\r\n", 0, 1); + f(25, "(?=a$).", "a\r"); + x(26, "(?!a$)..", "a\r", 0, 2); + x(27, "(?<=a$).\\n", "a\r\n", 1, 3); + f(28, "(? 0) { + fprintf(stderr, "\n"); + fprintf(stderr, "!!! You have to enable USE_CRNL_AS_LINE_TERMINATOR\n"); + fprintf(stderr, "!!! in regenc.h for this test program.\n"); + fprintf(stderr, "\n"); + } + + return 0; +} diff --git a/vendor/oniguruma/oniguruma/sample/echo.c b/vendor/oniguruma/oniguruma/sample/echo.c new file mode 100644 index 0000000..76df207 --- /dev/null +++ b/vendor/oniguruma/oniguruma/sample/echo.c @@ -0,0 +1,136 @@ +/* + * echo.c + */ +#include +#include +#include +#include "oniguruma.h" + +static int +echo(OnigCalloutArgs* args, void* user_data) +{ + int r; + OnigCalloutIn in; + OnigType type; + OnigValue val; + FILE* fp; + + fp = stdout; + + in = onig_get_callout_in_by_callout_args(args); + + r = onig_get_arg_by_callout_args(args, 1, &type, &val); + if (r != ONIG_NORMAL) return r; + + if (in == ONIG_CALLOUT_IN_PROGRESS) { + if (val.c == '<') + return ONIG_CALLOUT_SUCCESS; + } + else { + if (val.c != 'X' && val.c != '<') + return ONIG_CALLOUT_SUCCESS; + } + + r = onig_get_arg_by_callout_args(args, 0, &type, &val); + if (r != ONIG_NORMAL) return r; + + + fprintf(fp, "%s %s\n", + (in == ONIG_CALLOUT_IN_PROGRESS ? "=>" : "<="), + val.s.start); + fflush(fp); + + return ONIG_CALLOUT_SUCCESS; +} + + +static int +test(OnigEncoding enc, char* in_pattern, char* in_str) +{ + int r; + unsigned char *start, *range, *end; + regex_t* reg; + OnigErrorInfo einfo; + OnigRegion *region; + UChar* pattern; + UChar* str; + + pattern = (UChar* )in_pattern; + str = (UChar* )in_str; + + r = onig_new(®, pattern, pattern + strlen((char* )pattern), + ONIG_OPTION_DEFAULT, enc, ONIG_SYNTAX_DEFAULT, &einfo); + if (r != ONIG_NORMAL) { + char s[ONIG_MAX_ERROR_MESSAGE_LEN]; + onig_error_code_to_str((UChar* )s, r, &einfo); + fprintf(stderr, "COMPILE ERROR: %d: %s\n", r, s); + return -1; + } + + region = onig_region_new(); + + end = str + strlen((char* )str); + start = str; + range = end; + r = onig_search(reg, str, end, start, range, region, ONIG_OPTION_NONE); + if (r >= 0) { + int i; + + fprintf(stderr, "match at %d\n", r); + for (i = 0; i < region->num_regs; i++) { + fprintf(stderr, "%d: (%d-%d)\n", i, region->beg[i], region->end[i]); + } + } + else if (r == ONIG_MISMATCH) { + fprintf(stderr, "search fail\n"); + } + else { /* error */ + char s[ONIG_MAX_ERROR_MESSAGE_LEN]; + onig_error_code_to_str((UChar* )s, r); + fprintf(stderr, "SEARCH ERROR: %d: %s\n", r, s); + } + + onig_region_free(region, 1 /* 1:free self, 0:free contents only */); + onig_free(reg); + return r; +} + +extern int main(int argc, char* argv[]) +{ + int r; + int id; + UChar* name; + OnigEncoding use_encs[1]; + OnigType arg_types[4]; + OnigValue opt_defaults[4]; + OnigEncoding enc; + + enc = ONIG_ENCODING_UTF8; + use_encs[0] = enc; + + r = onig_initialize(use_encs, sizeof(use_encs)/sizeof(use_encs[0])); + if (r != ONIG_NORMAL) return -1; + + name = (UChar* )"echo"; + arg_types[0] = ONIG_TYPE_STRING; + arg_types[1] = ONIG_TYPE_CHAR; + opt_defaults[0].s.start = (UChar* )"echo"; + opt_defaults[0].s.end = opt_defaults[0].s.start + + strlen((char* )opt_defaults[0].s.start); + opt_defaults[1].c = '>'; + + id = onig_set_callout_of_name(enc, ONIG_CALLOUT_TYPE_SINGLE, + name, name + strlen((char* )name), + ONIG_CALLOUT_IN_BOTH, echo, 0, + 2, arg_types, 2, opt_defaults); + if (id < 0) { + fprintf(stderr, "ERROR: fail to set callout of name: %s\n", name); + return -1; + } + + test(enc, "(?:(*echo{abc!!!})a|b)*", "abba"); + test(enc, "(?:(*echo{xyz,X})a|b)*", "abba"); + + onig_end(); + return 0; +} diff --git a/vendor/oniguruma/oniguruma/sample/encode.c b/vendor/oniguruma/oniguruma/sample/encode.c new file mode 100644 index 0000000..9e9a0c7 --- /dev/null +++ b/vendor/oniguruma/oniguruma/sample/encode.c @@ -0,0 +1,215 @@ +/* + * encode.c + */ +#include +#include "oniguruma.h" + +static int +search(regex_t* reg, unsigned char* str, unsigned char* end) +{ + int r; + unsigned char *start, *range; + OnigRegion *region; + + region = onig_region_new(); + + start = str; + range = end; + r = onig_search(reg, str, end, start, range, region, ONIG_OPTION_NONE); + if (r >= 0) { + int i; + + fprintf(stderr, "match at %d (%s)\n", r, + ONIGENC_NAME(onig_get_encoding(reg))); + for (i = 0; i < region->num_regs; i++) { + fprintf(stderr, "%d: (%d-%d)\n", i, region->beg[i], region->end[i]); + } + } + else if (r == ONIG_MISMATCH) { + fprintf(stderr, "search fail (%s)\n", + ONIGENC_NAME(onig_get_encoding(reg))); + } + else { /* error */ + char s[ONIG_MAX_ERROR_MESSAGE_LEN]; + onig_error_code_to_str((UChar* )s, r); + fprintf(stderr, "ERROR: %s\n", s); + fprintf(stderr, " (%s)\n", ONIGENC_NAME(onig_get_encoding(reg))); + onig_region_free(region, 1 /* 1:free self, 0:free contents only */); + return -1; + } + + onig_region_free(region, 1 /* 1:free self, 0:free contents only */); + return 0; +} + +static int +exec(OnigEncoding enc, OnigOptionType options, + char* apattern, char* astr) +{ + int r; + unsigned char *end; + regex_t* reg; + OnigErrorInfo einfo; + UChar* pattern = (UChar* )apattern; + UChar* str = (UChar* )astr; + + onig_initialize(&enc, 1); + + r = onig_new(®, pattern, + pattern + onigenc_str_bytelen_null(enc, pattern), + options, enc, ONIG_SYNTAX_DEFAULT, &einfo); + if (r != ONIG_NORMAL) { + char s[ONIG_MAX_ERROR_MESSAGE_LEN]; + onig_error_code_to_str((UChar* )s, r, &einfo); + fprintf(stderr, "ERROR: %s\n", s); + return -1; + } + + end = str + onigenc_str_bytelen_null(enc, str); + r = search(reg, str, end); + + onig_free(reg); + onig_end(); + return 0; +} + +extern int main(int argc, char* argv[]) +{ + int r; + /* ISO 8859-1 test */ + static unsigned char str[] = { 0xc7, 0xd6, 0xfe, 0xea, 0xe0, 0xe2, 0x00 }; + static unsigned char pattern[] = { 0xe7, 0xf6, 0xde, '\\', 'w', '+', 0x00 }; + + r = exec(ONIG_ENCODING_SJIS, ONIG_OPTION_NONE, + "^a\\p{Hiragana}c$", "a\202\274c"); + + r = exec(ONIG_ENCODING_EUC_JP, ONIG_OPTION_NONE, + "^a\\p{Hiragana}c$", "a\244\276c"); + + r = exec(ONIG_ENCODING_CP1251, ONIG_OPTION_IGNORECASE, + "aBc", " AbC"); + + r = exec(ONIG_ENCODING_ISO_8859_1, ONIG_OPTION_IGNORECASE, + " [a-c\337z] ", " SS "); + r = exec(ONIG_ENCODING_ISO_8859_1, ONIG_OPTION_IGNORECASE, + " [\330-\341] ", " SS "); + + r = exec(ONIG_ENCODING_ISO_8859_2, ONIG_OPTION_IGNORECASE, + "\337 ", " Ss "); + r = exec(ONIG_ENCODING_ISO_8859_2, ONIG_OPTION_IGNORECASE, + "SS ", " \337 "); + r = exec(ONIG_ENCODING_ISO_8859_2, ONIG_OPTION_IGNORECASE, + "\\A\\S\\z", "ss"); + + r = exec(ONIG_ENCODING_ISO_8859_2, ONIG_OPTION_IGNORECASE, + "[ac]+", "bbbaAaCCC"); + + r = exec(ONIG_ENCODING_ISO_8859_3, ONIG_OPTION_IGNORECASE, + "[ac]+", "bbbaAaCCC"); + r = exec(ONIG_ENCODING_ISO_8859_4, ONIG_OPTION_IGNORECASE, + "[ac]+", "bbbaAaCCC"); + r = exec(ONIG_ENCODING_ISO_8859_5, ONIG_OPTION_IGNORECASE, + "[ac]+", "bbbaAaCCC"); + r = exec(ONIG_ENCODING_ISO_8859_6, ONIG_OPTION_IGNORECASE, + "[ac]+", "bbbaAaCCC"); + r = exec(ONIG_ENCODING_ISO_8859_7, ONIG_OPTION_IGNORECASE, + "[ac]+", "bbbaAaCCC"); + r = exec(ONIG_ENCODING_ISO_8859_8, ONIG_OPTION_IGNORECASE, + "[ac]+", "bbbaAaCCC"); + r = exec(ONIG_ENCODING_ISO_8859_9, ONIG_OPTION_IGNORECASE, + "[ac]+", "bbbaAaCCC"); + r = exec(ONIG_ENCODING_ISO_8859_10, ONIG_OPTION_IGNORECASE, + "[ac]+", "bbbaAaCCC"); + r = exec(ONIG_ENCODING_ISO_8859_11, ONIG_OPTION_IGNORECASE, + "[ac]+", "bbbaAaCCC"); + r = exec(ONIG_ENCODING_ISO_8859_13, ONIG_OPTION_IGNORECASE, + "[ac]+", "bbbaAaCCC"); + r = exec(ONIG_ENCODING_ISO_8859_14, ONIG_OPTION_IGNORECASE, + "[ac]+", "bbbaAaCCC"); + r = exec(ONIG_ENCODING_ISO_8859_15, ONIG_OPTION_IGNORECASE, + (char* )pattern, (char* )str); + r = exec(ONIG_ENCODING_ISO_8859_16, ONIG_OPTION_IGNORECASE, + (char* )pattern, (char* )str); + + r = exec(ONIG_ENCODING_KOI8_R, ONIG_OPTION_NONE, "a+", "bbbaaaccc"); + r = exec(ONIG_ENCODING_EUC_TW, ONIG_OPTION_NONE, "b*a+?c+", "bbbaaaccc"); + r = exec(ONIG_ENCODING_EUC_KR, ONIG_OPTION_NONE, "a+", "bbbaaaccc"); + r = exec(ONIG_ENCODING_EUC_CN, ONIG_OPTION_NONE, "c+", "bbbaaaccc"); + r = exec(ONIG_ENCODING_BIG5, ONIG_OPTION_NONE, "a+", "bbbaaaccc"); + + r = exec(ONIG_ENCODING_ISO_8859_1, ONIG_OPTION_IGNORECASE, + "\337", "SS"); + r = exec(ONIG_ENCODING_ISO_8859_1, ONIG_OPTION_IGNORECASE, + "SS", "\337"); + r = exec(ONIG_ENCODING_ISO_8859_1, ONIG_OPTION_IGNORECASE, + "SSb\337ssc", "a\337bSS\337cd"); + r = exec(ONIG_ENCODING_ISO_8859_1, ONIG_OPTION_IGNORECASE, + "[a\337]{0,2}", "aSS"); + r = exec(ONIG_ENCODING_ISO_8859_1, ONIG_OPTION_IGNORECASE, + "is", "iss"); + + r = exec(ONIG_ENCODING_UTF16_BE, ONIG_OPTION_NONE, + "\000[\000[\000:\000a\000l\000n\000u\000m\000:\000]\000]\000+\000\000", + "\000#\002\120\000a\000Z\012\077\012\076\012\075\000\000"); + /* 0x0a3d == \012\075 : is not alnum */ + /* 0x0a3e == \012\076 : is alnum */ + + r = exec(ONIG_ENCODING_UTF16_BE, ONIG_OPTION_NONE, + "\000\\\000d\000+\000\000", + "\0003\0001\377\020\377\031\377\032\000\000"); + + r = exec(ONIG_ENCODING_GB18030, ONIG_OPTION_IGNORECASE, + "(Aa\\d)+", "BaA5Aa0234"); + + r = exec(ONIG_ENCODING_GB18030, ONIG_OPTION_NONE, + "[[^\\w]]+[^\xee\xef]\xee\xef", "[[^\\w]]+[^\xee\xef]\xee\xef"); + + r = exec(ONIG_ENCODING_UTF16_BE, ONIG_OPTION_IGNORECASE, + "\000[\000\337\000]\000\000", "\000S\000S\000\000"); + + r = exec(ONIG_ENCODING_UTF16_BE, ONIG_OPTION_IGNORECASE, + "\000[\000\337\000]\000\000", "\000s\000S\000\000"); + + r = exec(ONIG_ENCODING_UTF16_BE, ONIG_OPTION_IGNORECASE, + "\000^\000[\000\001\000-\377\375\000]\000$\000\000", + "\000s\000S\000\000"); + + r = exec(ONIG_ENCODING_UTF16_BE, ONIG_OPTION_IGNORECASE, + "\000S\000S\000\000", + "\000S\000T\000\337\000\000"); + + r = exec(ONIG_ENCODING_UTF16_BE, ONIG_OPTION_IGNORECASE, + "\000S\000T\000S\000S\000\000", + "\000S\000t\000s\000S\000\000"); + + { + UChar pat[] = { 0x1f, 0xfc, 0x00, 0x00 }; + UChar str1[] = { 0x21, 0x26, 0x1f, 0xbe, 0x00, 0x00 }; + UChar str2[] = { 0x1f, 0xf3, 0x00, 0x00 }; + + r = exec(ONIG_ENCODING_UTF16_BE, ONIG_OPTION_IGNORECASE, + (char* )pat, (char* )str1); + + r = exec(ONIG_ENCODING_UTF16_BE, ONIG_OPTION_IGNORECASE, + (char* )pat, (char* )str2); + } + +#if 0 + /* You should define USE_UNICODE_CASE_FOLD_TURKISH_AZERI in regenc.h. */ + + set_case_fold(ONIGENC_CASE_FOLD_TURKISH_AZERI); + + r = exec(ONIG_ENCODING_UTF8, ONIG_ENCODING_UTF8, ONIG_OPTION_IGNORECASE, + "Ii", "\304\261\304\260"); + + r = exec(ONIG_ENCODING_UTF16_BE, ONIG_OPTION_IGNORECASE, + "\000I\000i\000\000", "\001\061\001\060\000\000"); + + r = exec(ONIG_ENCODING_UTF16_BE, ONIG_OPTION_IGNORECASE, + "\001\061\001\060\000\000", "\000I\000i\000\000"); + + set_case_fold(ONIGENC_CASE_FOLD_MIN); +#endif + + return r; +} diff --git a/vendor/onig/sample/listcap.c b/vendor/oniguruma/oniguruma/sample/listcap.c similarity index 60% rename from vendor/onig/sample/listcap.c rename to vendor/oniguruma/oniguruma/sample/listcap.c index 07b58b5..8072842 100644 --- a/vendor/onig/sample/listcap.c +++ b/vendor/oniguruma/oniguruma/sample/listcap.c @@ -5,11 +5,10 @@ */ #include #include -#include "onigmo.h" +#include "oniguruma.h" static int -node_callback(int group, OnigPosition beg, OnigPosition end, int level, - int at, void* arg) +node_callback(int group, int beg, int end, int level, int at, void* arg) { int i; @@ -20,29 +19,12 @@ node_callback(int group, OnigPosition beg, OnigPosition end, int level, for (i = 0; i < level * 2; i++) fputc(' ', stderr); - fprintf(stderr, "%d: (%ld-%ld)\n", group, beg, end); - return 0; -} - -static int -node_callback_last(int group, OnigPosition beg, OnigPosition end, int level, - int at, void* arg) -{ - int i; - - if (at != ONIG_TRAVERSE_CALLBACK_AT_LAST) - return -1; /* error */ - - /* indent */ - for (i = 0; i < level * 2; i++) - fputc(' ', stderr); - - fprintf(stderr, "%d: (%ld-%ld)\n", group, beg, end); + fprintf(stderr, "%d: (%d-%d)\n", group, beg, end); return 0; } extern int ex(unsigned char* str, unsigned char* pattern, - OnigSyntaxType* syntax) + OnigSyntaxType* syntax, OnigOptionType options) { int r; unsigned char *start, *range, *end; @@ -51,10 +33,10 @@ extern int ex(unsigned char* str, unsigned char* pattern, OnigRegion *region; r = onig_new(®, pattern, pattern + strlen((char* )pattern), - ONIG_OPTION_DEFAULT, ONIG_ENCODING_ASCII, syntax, &einfo); + options, ONIG_ENCODING_ASCII, syntax, &einfo); if (r != ONIG_NORMAL) { - OnigUChar s[ONIG_MAX_ERROR_MESSAGE_LEN]; - onig_error_code_to_str(s, r, &einfo); + char s[ONIG_MAX_ERROR_MESSAGE_LEN]; + onig_error_code_to_str((UChar* )s, r, &einfo); fprintf(stderr, "ERROR: %s\n", s); return -1; } @@ -74,24 +56,21 @@ extern int ex(unsigned char* str, unsigned char* pattern, fprintf(stderr, "match at %d\n", r); for (i = 0; i < region->num_regs; i++) { - fprintf(stderr, "%d: (%ld-%ld)\n", i, region->beg[i], region->end[i]); + fprintf(stderr, "%d: (%d-%d)\n", i, region->beg[i], region->end[i]); } fprintf(stderr, "\n"); r = onig_capture_tree_traverse(region, ONIG_TRAVERSE_CALLBACK_AT_FIRST, node_callback, (void* )0); - fprintf(stderr, "\n"); - - r = onig_capture_tree_traverse(region, ONIG_TRAVERSE_CALLBACK_AT_LAST, - node_callback_last, (void* )0); - fprintf(stderr, "\n"); } else if (r == ONIG_MISMATCH) { fprintf(stderr, "search fail\n"); } else { /* error */ - OnigUChar s[ONIG_MAX_ERROR_MESSAGE_LEN]; - onig_error_code_to_str(s, r); + char s[ONIG_MAX_ERROR_MESSAGE_LEN]; + onig_error_code_to_str((UChar* )s, r); + onig_region_free(region, 1 /* 1:free self, 0:free contents only */); + onig_free(reg); return -1; } @@ -103,8 +82,9 @@ extern int ex(unsigned char* str, unsigned char* pattern, extern int main(int argc, char* argv[]) { - int r = 0; + int r; OnigSyntaxType syn; + OnigEncoding use_encs[1]; static UChar* str1 = (UChar* )"((())())"; static UChar* pattern1 @@ -116,18 +96,22 @@ extern int main(int argc, char* argv[]) static UChar* str3 = (UChar* )"0123"; static UChar* pattern3 = (UChar* )"(?@.)(?@.)(?@.)(?@.)"; - static UChar* str4 = (UChar* )"((abc)(abc))"; - static UChar* pattern4 = (UChar* )"\\((?@(?:[^(]|\\g<0>)*)\\)"; + static UChar* str4 = (UChar* )"(((a))(a)) ((((a))(a)))"; + static UChar* pattern4 + = (UChar* )"\\g

(?@

\\(\\g\\)){0}(?@(?:\\g

)*|a){0}"; + + use_encs[0] = ONIG_ENCODING_ASCII; + onig_initialize(use_encs, sizeof(use_encs)/sizeof(use_encs[0])); - /* enable capture hostory */ + /* enable capture history */ onig_copy_syntax(&syn, ONIG_SYNTAX_DEFAULT); onig_set_syntax_op2(&syn, onig_get_syntax_op2(&syn) | ONIG_SYN_OP2_ATMARK_CAPTURE_HISTORY); - r |= ex(str1, pattern1, &syn); - r |= ex(str2, pattern2, &syn); - r |= ex(str3, pattern3, &syn); - r |= ex(str4, pattern4, &syn); + r = ex(str1, pattern1, &syn, ONIG_OPTION_NONE); + r = ex(str2, pattern2, &syn, ONIG_OPTION_NONE); + r = ex(str3, pattern3, &syn, ONIG_OPTION_NONE); + r = ex(str4, pattern4, &syn, ONIG_OPTION_FIND_LONGEST); onig_end(); return r; diff --git a/vendor/onig/sample/names.c b/vendor/oniguruma/oniguruma/sample/names.c similarity index 68% rename from vendor/onig/sample/names.c rename to vendor/oniguruma/oniguruma/sample/names.c index cb59f17..bf47f63 100644 --- a/vendor/onig/sample/names.c +++ b/vendor/oniguruma/oniguruma/sample/names.c @@ -3,12 +3,12 @@ */ #include #include -#include "onigmo.h" +#include "oniguruma.h" static int name_callback(const UChar* name, const UChar* name_end, - int ngroup_num, int* group_nums, - regex_t* reg, void* arg) + int ngroup_num, int* group_nums, + regex_t* reg, void* arg) { int i, gn, ref; char* s; @@ -19,7 +19,7 @@ name_callback(const UChar* name, const UChar* name_end, ref = onig_name_to_backref_number(reg, name, name_end, region); s = (ref == gn ? "*" : ""); fprintf(stderr, "%s (%d): ", name, gn); - fprintf(stderr, "(%ld-%ld) %s\n", region->beg[gn], region->end[gn], s); + fprintf(stderr, "(%d-%d) %s\n", region->beg[gn], region->end[gn], s); } return 0; /* 0: continue */ } @@ -31,15 +31,19 @@ extern int main(int argc, char* argv[]) regex_t* reg; OnigErrorInfo einfo; OnigRegion *region; + OnigEncoding use_encs[1]; static UChar* pattern = (UChar* )"(?a*)(?b*)(?c*)"; static UChar* str = (UChar* )"aaabbbbcc"; + use_encs[0] = ONIG_ENCODING_ASCII; + onig_initialize(use_encs, sizeof(use_encs)/sizeof(use_encs[0])); + r = onig_new(®, pattern, pattern + strlen((char* )pattern), - ONIG_OPTION_DEFAULT, ONIG_ENCODING_ASCII, ONIG_SYNTAX_DEFAULT, &einfo); + ONIG_OPTION_DEFAULT, ONIG_ENCODING_ASCII, ONIG_SYNTAX_DEFAULT, &einfo); if (r != ONIG_NORMAL) { - OnigUChar s[ONIG_MAX_ERROR_MESSAGE_LEN]; - onig_error_code_to_str(s, r, &einfo); + char s[ONIG_MAX_ERROR_MESSAGE_LEN]; + onig_error_code_to_str((UChar* )s, r, &einfo); fprintf(stderr, "ERROR: %s\n", s); return -1; } @@ -58,16 +62,18 @@ extern int main(int argc, char* argv[]) } else if (r == ONIG_MISMATCH) { fprintf(stderr, "search fail\n"); - r = -1; } else { /* error */ - OnigUChar s[ONIG_MAX_ERROR_MESSAGE_LEN]; - onig_error_code_to_str(s, r); + char s[ONIG_MAX_ERROR_MESSAGE_LEN]; + onig_error_code_to_str((UChar* )s, r); + onig_region_free(region, 1 /* 1:free self, 0:free contents only */); + onig_free(reg); + onig_end(); return -1; } onig_region_free(region, 1 /* 1:free self, 0:free contents only */); onig_free(reg); onig_end(); - return r; + return 0; } diff --git a/vendor/onig/sample/posix.c b/vendor/oniguruma/oniguruma/sample/posix.c similarity index 86% rename from vendor/onig/sample/posix.c rename to vendor/oniguruma/oniguruma/sample/posix.c index 37f0c08..c555936 100644 --- a/vendor/onig/sample/posix.c +++ b/vendor/oniguruma/oniguruma/sample/posix.c @@ -2,7 +2,7 @@ * posix.c */ #include -#include "onigmoposix.h" +#include "onigposix.h" typedef unsigned char UChar; @@ -16,6 +16,7 @@ static int x(regex_t* reg, unsigned char* pattern, unsigned char* str) if (r != 0 && r != REG_NOMATCH) { regerror(r, reg, buf, sizeof(buf)); fprintf(stderr, "ERROR: %s\n", buf); + regfree(reg); return -1; } @@ -28,6 +29,7 @@ static int x(regex_t* reg, unsigned char* pattern, unsigned char* str) fprintf(stderr, "%d: %d-%d\n", i, pmatch[i].rm_so, pmatch[i].rm_eo); } } + regfree(reg); return 0; } @@ -38,12 +40,16 @@ extern int main(int argc, char* argv[]) regex_t reg; UChar* pattern; - /* default syntax (ONIG_SYNTAX_RUBY) */ + reg_set_encoding(REG_POSIX_ENCODING_ASCII); + + /* default syntax (ONIG_SYNTAX_ONIGURUMA) */ pattern = (UChar* )"^a+b{2,7}[c-f]?$|uuu"; r = regcomp(®, (char* )pattern, REG_EXTENDED); if (r) { regerror(r, ®, buf, sizeof(buf)); fprintf(stderr, "ERROR: %s\n", buf); + regfree(®); + onig_end(); return -1; } x(®, pattern, (UChar* )"aaabbbbd"); @@ -54,6 +60,8 @@ extern int main(int argc, char* argv[]) if (r) { regerror(r, ®, buf, sizeof(buf)); fprintf(stderr, "ERROR: %s\n", buf); + regfree(®); + onig_end(); return -1; } x(®, pattern, (UChar* )"a+b{2,7}d?|uuu"); @@ -64,6 +72,8 @@ extern int main(int argc, char* argv[]) if (r) { regerror(r, ®, buf, sizeof(buf)); fprintf(stderr, "ERROR: %s\n", buf); + regfree(®); + onig_end(); return -1; } x(®, pattern, (UChar* )"aaaabbbbbbd"); @@ -75,6 +85,8 @@ extern int main(int argc, char* argv[]) if (r) { regerror(r, ®, buf, sizeof(buf)); fprintf(stderr, "ERROR: %s\n", buf); + regfree(®); + onig_end(); return -1; } x(®, pattern, (UChar* )"aaabbbbd)"); @@ -84,18 +96,12 @@ extern int main(int argc, char* argv[]) if (r) { regerror(r, ®, buf, sizeof(buf)); fprintf(stderr, "ERROR: %s\n", buf); + regfree(®); + onig_end(); return -1; } x(®, pattern, (UChar* )"a\nb\n"); - /* Error test */ - pattern = (UChar* )" ["; - r = regcomp(®, (char* )pattern, REG_EXTENDED); - if (r) { - regerror(r, ®, buf, sizeof(buf)); - fprintf(stderr, "OK(E): %s\n", buf); - } - - regfree(®); + onig_end(); return 0; } diff --git a/vendor/oniguruma/oniguruma/sample/regset.c b/vendor/oniguruma/oniguruma/sample/regset.c new file mode 100644 index 0000000..6be511a --- /dev/null +++ b/vendor/oniguruma/oniguruma/sample/regset.c @@ -0,0 +1,95 @@ +/* + * regset.c + */ +#include +#include +#include "oniguruma.h" + +extern int main(int argc, char* argv[]) +{ + int r; + int i, n; + int match_pos; + unsigned char *start, *range, *end; + OnigRegSet* set; + OnigRegSetLead lead; + regex_t* reg; + OnigErrorInfo einfo; + char ebuf[ONIG_MAX_ERROR_MESSAGE_LEN]; + OnigEncoding use_encs[1]; + + static UChar* str = (UChar* )"aaaaaaaaaaaaaaaaaaaaaaca"; + + static char* pat[] = { + "a(.*)b|a(.)c", + "^(abc)", + "a(.....)c" + }; + + use_encs[0] = ONIG_ENCODING_UTF8; + onig_initialize(use_encs, sizeof(use_encs)/sizeof(use_encs[0])); + + r = onig_regset_new(&set, 0, NULL); + if (r != ONIG_NORMAL) { + onig_error_code_to_str((UChar* )ebuf, r); + fprintf(stderr, "ERROR: %s\n", ebuf); + onig_end(); + return -1; + } + + n = sizeof(pat) / sizeof(pat[0]); + + for (i = 0; i < n; i++) { + r = onig_new(®, (UChar* )pat[i], (UChar* )(pat[i] + strlen(pat[i])), + ONIG_OPTION_DEFAULT, ONIG_ENCODING_UTF8, ONIG_SYNTAX_DEFAULT, + &einfo); + if (r != ONIG_NORMAL) { + onig_error_code_to_str((UChar* )ebuf, r, &einfo); + fprintf(stderr, "ERROR: %s\n", ebuf); + onig_regset_free(set); + onig_end(); + return -1; + } + + r = onig_regset_add(set, reg); + if (r != ONIG_NORMAL) { + onig_free(reg); + onig_regset_free(set); + onig_end(); + return -1; + } + } + + end = str + strlen((char* )str); + start = str; + range = end; + lead = ONIG_REGSET_POSITION_LEAD; + //lead = ONIG_REGSET_PRIORITY_TO_REGEX_ORDER; + r = onig_regset_search(set, str, end, start, range, lead, ONIG_OPTION_NONE, + &match_pos); + if (r >= 0) { + OnigRegion *region; + + fprintf(stderr, "match regex index: %d\n", r); + fprintf(stderr, "match position: %d\n", match_pos); + + region = onig_regset_get_region(set, r); + for (i = 0; i < region->num_regs; i++) { + fprintf(stderr, "%d: (%d-%d)\n", i, region->beg[i], region->end[i]); + } + } + else if (r == ONIG_MISMATCH) { + fprintf(stderr, "search fail\n"); + } + else { /* error */ + onig_error_code_to_str((UChar* )ebuf, r); + fprintf(stderr, "ERROR: %s\n", ebuf); + onig_regset_free(set); + onig_end(); + return -1; + } + + onig_regset_free(set); + onig_end(); + return 0; +} diff --git a/vendor/onig/sample/scan.c b/vendor/oniguruma/oniguruma/sample/scan.c similarity index 53% rename from vendor/onig/sample/scan.c rename to vendor/oniguruma/oniguruma/sample/scan.c index ecaac9a..fe1bac1 100644 --- a/vendor/onig/sample/scan.c +++ b/vendor/oniguruma/oniguruma/sample/scan.c @@ -3,32 +3,32 @@ */ #include #include -#include "onigmo.h" +#include "oniguruma.h" static int -scan_callback(OnigPosition n, OnigPosition r, OnigRegion* region, void* arg) +scan_callback(int n, int r, OnigRegion* region, void* arg) { int i; - fprintf(stdout, "scan: %ld\n", n); + fprintf(stdout, "scan: %d\n", n); - fprintf(stdout, "match at %ld\n", r); + fprintf(stdout, "match at %d\n", r); for (i = 0; i < region->num_regs; i++) { - fprintf(stdout, "%d: (%ld-%ld)\n", i, region->beg[i], region->end[i]); + fprintf(stdout, "%d: (%d-%d)\n", i, region->beg[i], region->end[i]); } return 0; } static int -scan(regex_t* reg, unsigned char* str, unsigned char* end) +scan(regex_t* reg, OnigOptionType options, unsigned char* str, unsigned char* end) { int r; OnigRegion *region; region = onig_region_new(); - r = onig_scan(reg, str, end, region, ONIG_OPTION_NONE, scan_callback, NULL); + r = onig_scan(reg, str, end, region, options, scan_callback, NULL); if (r >= 0) { fprintf(stdout, "total: %d match\n", r); } @@ -36,6 +36,7 @@ scan(regex_t* reg, unsigned char* str, unsigned char* end) char s[ONIG_MAX_ERROR_MESSAGE_LEN]; onig_error_code_to_str((OnigUChar* )s, r); fprintf(stderr, "ERROR: %s\n", s); + onig_region_free(region, 1 /* 1:free self, 0:free contents only */); return -1; } @@ -44,7 +45,7 @@ scan(regex_t* reg, unsigned char* str, unsigned char* end) } static int -exec(OnigEncoding enc, OnigOptionType options, char* apattern, char* astr) +exec(OnigEncoding enc, OnigOptionType options, OnigOptionType runtime_options, char* apattern, char* astr) { int r; unsigned char *end; @@ -63,11 +64,12 @@ exec(OnigEncoding enc, OnigOptionType options, char* apattern, char* astr) char s[ONIG_MAX_ERROR_MESSAGE_LEN]; onig_error_code_to_str((OnigUChar* )s, r, &einfo); fprintf(stderr, "ERROR: %s\n", s); + onig_end(); return -1; } end = str + onigenc_str_bytelen_null(enc, str); - r = scan(reg, str, end); + r = scan(reg, runtime_options, str, end); onig_free(reg); onig_end(); @@ -77,11 +79,23 @@ exec(OnigEncoding enc, OnigOptionType options, char* apattern, char* astr) extern int main(int argc, char* argv[]) { - exec(ONIG_ENCODING_UTF8, ONIG_OPTION_NONE, + exec(ONIG_ENCODING_UTF8, ONIG_OPTION_NONE, ONIG_OPTION_NONE, "\\Ga+\\s*", "a aa aaa baaa"); + fprintf(stdout, "\n"); + + exec(ONIG_ENCODING_UTF8, ONIG_OPTION_NONE, ONIG_OPTION_NOT_BEGIN_POSITION, + "\\Ga+\\s*", "a aa aaa baaa"); + fprintf(stdout, "\n"); + exec(ONIG_ENCODING_UTF8, ONIG_OPTION_NONE, ONIG_OPTION_NONE, + "(?!\\G)a+\\s*", "a aa aaa baaa"); fprintf(stdout, "\n"); - exec(ONIG_ENCODING_UTF8, ONIG_OPTION_NONE, + + exec(ONIG_ENCODING_UTF8, ONIG_OPTION_NONE, ONIG_OPTION_NOT_BEGIN_POSITION, + "(?!\\G)a+\\s*", "a aa aaa baaa"); + fprintf(stdout, "\n"); + + exec(ONIG_ENCODING_UTF8, ONIG_OPTION_NONE, ONIG_OPTION_NONE, "a+\\s*", "a aa aaa baaa"); return 0; diff --git a/vendor/onig/sample/simple.c b/vendor/oniguruma/oniguruma/sample/simple.c similarity index 62% rename from vendor/onig/sample/simple.c rename to vendor/oniguruma/oniguruma/sample/simple.c index 64c470a..a08ea86 100644 --- a/vendor/onig/sample/simple.c +++ b/vendor/oniguruma/oniguruma/sample/simple.c @@ -3,7 +3,7 @@ */ #include #include -#include "onigmo.h" +#include "oniguruma.h" extern int main(int argc, char* argv[]) { @@ -12,15 +12,19 @@ extern int main(int argc, char* argv[]) regex_t* reg; OnigErrorInfo einfo; OnigRegion *region; + OnigEncoding use_encs[1]; static UChar* pattern = (UChar* )"a(.*)b|[e-f]+"; static UChar* str = (UChar* )"zzzzaffffffffb"; + use_encs[0] = ONIG_ENCODING_ASCII; + onig_initialize(use_encs, sizeof(use_encs)/sizeof(use_encs[0])); + r = onig_new(®, pattern, pattern + strlen((char* )pattern), - ONIG_OPTION_DEFAULT, ONIG_ENCODING_ASCII, ONIG_SYNTAX_DEFAULT, &einfo); + ONIG_OPTION_DEFAULT, ONIG_ENCODING_ASCII, ONIG_SYNTAX_DEFAULT, &einfo); if (r != ONIG_NORMAL) { - OnigUChar s[ONIG_MAX_ERROR_MESSAGE_LEN]; - onig_error_code_to_str(s, r, &einfo); + char s[ONIG_MAX_ERROR_MESSAGE_LEN]; + onig_error_code_to_str((UChar* )s, r, &einfo); fprintf(stderr, "ERROR: %s\n", s); return -1; } @@ -36,23 +40,24 @@ extern int main(int argc, char* argv[]) fprintf(stderr, "match at %d\n", r); for (i = 0; i < region->num_regs; i++) { - fprintf(stderr, "%d: (%ld-%ld)\n", i, region->beg[i], region->end[i]); + fprintf(stderr, "%d: (%d-%d)\n", i, region->beg[i], region->end[i]); } - r = 0; } else if (r == ONIG_MISMATCH) { fprintf(stderr, "search fail\n"); - r = -1; } else { /* error */ - OnigUChar s[ONIG_MAX_ERROR_MESSAGE_LEN]; - onig_error_code_to_str(s, r); + char s[ONIG_MAX_ERROR_MESSAGE_LEN]; + onig_error_code_to_str((UChar* )s, r); fprintf(stderr, "ERROR: %s\n", s); + onig_region_free(region, 1 /* 1:free self, 0:free contents only */); + onig_free(reg); + onig_end(); return -1; } onig_region_free(region, 1 /* 1:free self, 0:free contents only */); onig_free(reg); onig_end(); - return r; + return 0; } diff --git a/vendor/onig/sample/sql.c b/vendor/oniguruma/oniguruma/sample/sql.c similarity index 67% rename from vendor/onig/sample/sql.c rename to vendor/oniguruma/oniguruma/sample/sql.c index d6b6a45..21147aa 100644 --- a/vendor/onig/sample/sql.c +++ b/vendor/oniguruma/oniguruma/sample/sql.c @@ -3,7 +3,7 @@ */ #include #include -#include "onigmo.h" +#include "oniguruma.h" extern int main(int argc, char* argv[]) { @@ -14,10 +14,14 @@ extern int main(int argc, char* argv[]) regex_t* reg; OnigErrorInfo einfo; OnigRegion *region; + OnigEncoding use_encs[1]; static UChar* pattern = (UChar* )"\\_%\\\\__zz"; static UChar* str = (UChar* )"a_abcabcabc\\ppzz"; + use_encs[0] = ONIG_ENCODING_ASCII; + onig_initialize(use_encs, sizeof(use_encs)/sizeof(use_encs[0])); + onig_set_syntax_op (&SQLSyntax, ONIG_SYN_OP_VARIABLE_META_CHARACTERS); onig_set_syntax_op2 (&SQLSyntax, 0); onig_set_syntax_behavior(&SQLSyntax, 0); @@ -25,20 +29,21 @@ extern int main(int argc, char* argv[]) onig_set_meta_char(&SQLSyntax, ONIG_META_CHAR_ESCAPE, (OnigCodePoint )'\\'); onig_set_meta_char(&SQLSyntax, ONIG_META_CHAR_ANYCHAR, (OnigCodePoint )'_'); onig_set_meta_char(&SQLSyntax, ONIG_META_CHAR_ANYTIME, - ONIG_INEFFECTIVE_META_CHAR); + ONIG_INEFFECTIVE_META_CHAR); onig_set_meta_char(&SQLSyntax, ONIG_META_CHAR_ZERO_OR_ONE_TIME, - ONIG_INEFFECTIVE_META_CHAR); + ONIG_INEFFECTIVE_META_CHAR); onig_set_meta_char(&SQLSyntax, ONIG_META_CHAR_ONE_OR_MORE_TIME, - ONIG_INEFFECTIVE_META_CHAR); + ONIG_INEFFECTIVE_META_CHAR); onig_set_meta_char(&SQLSyntax, ONIG_META_CHAR_ANYCHAR_ANYTIME, - (OnigCodePoint )'%'); + (OnigCodePoint )'%'); r = onig_new(®, pattern, pattern + strlen((char* )pattern), - ONIG_OPTION_DEFAULT, ONIG_ENCODING_ASCII, &SQLSyntax, &einfo); + ONIG_OPTION_DEFAULT, ONIG_ENCODING_ASCII, &SQLSyntax, &einfo); if (r != ONIG_NORMAL) { - OnigUChar s[ONIG_MAX_ERROR_MESSAGE_LEN]; - onig_error_code_to_str(s, r, &einfo); + char s[ONIG_MAX_ERROR_MESSAGE_LEN]; + onig_error_code_to_str((UChar* )s, r, &einfo); fprintf(stderr, "ERROR: %s\n", s); + onig_end(); return -1; } @@ -53,23 +58,24 @@ extern int main(int argc, char* argv[]) fprintf(stderr, "match at %d\n", r); for (i = 0; i < region->num_regs; i++) { - fprintf(stderr, "%d: (%ld-%ld)\n", i, region->beg[i], region->end[i]); + fprintf(stderr, "%d: (%d-%d)\n", i, region->beg[i], region->end[i]); } - r = 0; } else if (r == ONIG_MISMATCH) { fprintf(stderr, "search fail\n"); - r = -1; } else { /* error */ - OnigUChar s[ONIG_MAX_ERROR_MESSAGE_LEN]; - onig_error_code_to_str(s, r); + char s[ONIG_MAX_ERROR_MESSAGE_LEN]; + onig_error_code_to_str((UChar* )s, r); fprintf(stderr, "ERROR: %s\n", s); + onig_region_free(region, 1 /* 1:free self, 0:free contents only */); + onig_free(reg); + onig_end(); return -1; } onig_region_free(region, 1 /* 1:free self, 0:free contents only */); onig_free(reg); onig_end(); - return r; + return 0; } diff --git a/vendor/onig/sample/syntax.c b/vendor/oniguruma/oniguruma/sample/syntax.c similarity index 56% rename from vendor/onig/sample/syntax.c rename to vendor/oniguruma/oniguruma/sample/syntax.c index ac74788..3a5a7cf 100644 --- a/vendor/onig/sample/syntax.c +++ b/vendor/oniguruma/oniguruma/sample/syntax.c @@ -3,10 +3,9 @@ */ #include #include -#include "onigmo.h" +#include "oniguruma.h" -extern int exec(const OnigSyntaxType* syntax, - char* apattern, char* astr) +extern int exec(OnigSyntaxType* syntax, char* apattern, char* astr) { int r; unsigned char *start, *range, *end; @@ -17,10 +16,10 @@ extern int exec(const OnigSyntaxType* syntax, UChar* str = (UChar* )astr; r = onig_new(®, pattern, pattern + strlen((char* )pattern), - ONIG_OPTION_DEFAULT, ONIG_ENCODING_ASCII, syntax, &einfo); + ONIG_OPTION_DEFAULT, ONIG_ENCODING_ASCII, syntax, &einfo); if (r != ONIG_NORMAL) { - OnigUChar s[ONIG_MAX_ERROR_MESSAGE_LEN]; - onig_error_code_to_str(s, r, &einfo); + char s[ONIG_MAX_ERROR_MESSAGE_LEN]; + onig_error_code_to_str((UChar* )s, r, &einfo); fprintf(stderr, "ERROR: %s\n", s); return -1; } @@ -36,39 +35,41 @@ extern int exec(const OnigSyntaxType* syntax, fprintf(stderr, "match at %d\n", r); for (i = 0; i < region->num_regs; i++) { - fprintf(stderr, "%d: (%ld-%ld)\n", i, region->beg[i], region->end[i]); + fprintf(stderr, "%d: (%d-%d)\n", i, region->beg[i], region->end[i]); } - r = 0; } else if (r == ONIG_MISMATCH) { fprintf(stderr, "search fail\n"); - r = -1; } else { /* error */ - OnigUChar s[ONIG_MAX_ERROR_MESSAGE_LEN]; - onig_error_code_to_str(s, r); + char s[ONIG_MAX_ERROR_MESSAGE_LEN]; + onig_error_code_to_str((UChar* )s, r); fprintf(stderr, "ERROR: %s\n", s); + onig_region_free(region, 1 /* 1:free self, 0:free contents only */); + onig_free(reg); return -1; } onig_region_free(region, 1 /* 1:free self, 0:free contents only */); onig_free(reg); - onig_end(); - return r; + return 0; } extern int main(int argc, char* argv[]) { - int r = 0; + int r; + OnigEncoding use_encs[1]; + + use_encs[0] = ONIG_ENCODING_ASCII; + onig_initialize(use_encs, sizeof(use_encs)/sizeof(use_encs[0])); - r |= exec(ONIG_SYNTAX_PERL, - "\\p{XDigit}\\P{XDigit}\\p{^XDigit}\\P{^XDigit}\\p{XDigit}", - "bgh3a"); + r = exec(ONIG_SYNTAX_PERL, + "\\p{XDigit}\\P{XDigit}\\p{^XDigit}\\P{^XDigit}\\p{XDigit}", + "bgh3a"); - r |= exec(ONIG_SYNTAX_JAVA, - "\\p{XDigit}\\P{XDigit}[a-c&&b-g]\\u0020[\\u0021]", "bgc !"); + r = exec(ONIG_SYNTAX_JAVA, "\\p{XDigit}\\P{XDigit}[a-c&&b-g]", "bgc"); - r |= exec(ONIG_SYNTAX_ASIS, + r = exec(ONIG_SYNTAX_ASIS, "abc def* e+ g?ddd[a-rvvv] (vv){3,7}hv\\dvv(?:aczui ss)\\W\\w$", "abc def* e+ g?ddd[a-rvvv] (vv){3,7}hv\\dvv(?:aczui ss)\\W\\w$"); onig_end(); diff --git a/vendor/oniguruma/oniguruma/sample/user_property.c b/vendor/oniguruma/oniguruma/sample/user_property.c new file mode 100644 index 0000000..ecb842c --- /dev/null +++ b/vendor/oniguruma/oniguruma/sample/user_property.c @@ -0,0 +1,92 @@ +/* + * user_property.c + */ +#include +#include +#include "oniguruma.h" + +extern int +main(int argc, char* argv[]) +{ + int r; + unsigned char *start, *range, *end; + regex_t* reg; + OnigErrorInfo einfo; + OnigRegion *region; + OnigEncoding use_encs[1]; + + static OnigCodePoint handakuon_hiragana[] = { + 5, /* number of ranges */ + 0x3071, 0x3071, /* PA */ + 0x3074, 0x3074, /* PI */ + 0x3077, 0x3077, /* PU */ + 0x307a, 0x307a, /* PE */ + 0x307d, 0x307d /* PO */ + }; + + static UChar* pattern = (UChar* )"\\A(\\p{HandakuonHiragana}{5})\\p{^HandakuonHiragana}\\z"; + //static UChar* pattern = (UChar* )"\\p{Handakuon_Hiragana}{5}\\P{Handakuon Hiragana}"; + + /* "PA PI PU PE PO a" */ + static UChar* str = (UChar* )"\343\201\261\343\201\264\343\201\267\343\201\272\343\201\275a"; + + use_encs[0] = ONIG_ENCODING_UTF8; + onig_initialize(use_encs, sizeof(use_encs)/sizeof(use_encs[0])); + + r = onig_unicode_define_user_property("HandakuonHiragana", handakuon_hiragana); + if (r == ONIG_NORMAL) { + fprintf(stdout, "define HandakuonHiragana\n"); + } + else { + char s[ONIG_MAX_ERROR_MESSAGE_LEN]; + onig_error_code_to_str((UChar* )s, r); + fprintf(stderr, "ERROR: %s\n", s); + onig_end(); + return -1; + } + + r = onig_new(®, pattern, pattern + strlen((char* )pattern), + ONIG_OPTION_DEFAULT, ONIG_ENCODING_UTF8, ONIG_SYNTAX_DEFAULT, &einfo); + if (r == ONIG_NORMAL) { + fprintf(stdout, "onig_new: success.\n"); + } + else { + char s[ONIG_MAX_ERROR_MESSAGE_LEN]; + onig_error_code_to_str((UChar* )s, r, &einfo); + fprintf(stderr, "onig_new: ERROR: %s\n", s); + onig_end(); + return -1; + } + + region = onig_region_new(); + + end = str + strlen((char* )str); + start = str; + range = end; + r = onig_search(reg, str, end, start, range, region, ONIG_OPTION_NONE); + if (r >= 0) { + int i; + + fprintf(stderr, "match at %d\n", r); + for (i = 0; i < region->num_regs; i++) { + fprintf(stderr, "%d: (%d-%d)\n", i, region->beg[i], region->end[i]); + } + } + else if (r == ONIG_MISMATCH) { + fprintf(stderr, "search fail\n"); + } + else { /* error */ + char s[ONIG_MAX_ERROR_MESSAGE_LEN]; + onig_error_code_to_str((UChar* )s, r); + fprintf(stderr, "ERROR: %s\n", s); + onig_region_free(region, 1 /* 1:free self, 0:free contents only */); + onig_free(reg); + onig_end(); + return -1; + } + + onig_region_free(region, 1 /* 1:free self, 0:free contents only */); + onig_free(reg); + onig_end(); + return 0; +} diff --git a/vendor/oniguruma/oniguruma/sbom.cdx.json b/vendor/oniguruma/oniguruma/sbom.cdx.json new file mode 100644 index 0000000..4f2ed97 --- /dev/null +++ b/vendor/oniguruma/oniguruma/sbom.cdx.json @@ -0,0 +1,44 @@ +{ + "bomFormat": "CycloneDX", + "specVersion": "1.6", + "version": 1, + "metadata": { + "authors": [ + { + "name": "@VCS_SBOM_AUTHORS@" + } + ] + }, + "components": [ + { + "type": "library", + "bom-ref": "pkg:github/kkos/oniguruma@@VCS_TAG@", + "cpe": "cpe:2.3:a:kkos:oniguruma:@VCS_TAG@:*:*:*:*:*:*:*", + "name": "oniguruma", + "version": "@VCS_VERSION@", + "description": "A modern and flexible regular expressions library", + "authors": [ + { + "name": "@VCS_AUTHORS@", + "url": "https://raw.githubusercontent.com/kkos/oniguruma/refs/heads/master/AUTHORS" + } + ], + "supplier": { + "name": "oniguruma developers" + }, + "licenses": [ + { + "license": { + "id": "BSD-2-Clause" + } + } + ], + "externalReferences": [ + { + "type": "vcs", + "url": "https://github.com/kkos/oniguruma" + } + ] + } + ] +} diff --git a/vendor/oniguruma/oniguruma/src/.gitignore b/vendor/oniguruma/oniguruma/src/.gitignore new file mode 100644 index 0000000..7f2077a --- /dev/null +++ b/vendor/oniguruma/oniguruma/src/.gitignore @@ -0,0 +1,87 @@ +Makefile +autom4te.cache/ +ltmain.sh +stamp-h1 +configure +config.status +config.h +config.h.in +onig-config +libtool +aclocal.m4 +Makefile.in +.python-version +*.o +*.obj +*.so +*.lo +*.la +*.pc +*.log +*.trs +*.dll +*.lib +*.exe +*.exp +*.gcno +*.gcda +*.gcov +*~ +.libs/ +.deps/ +/build +/onig-*.tar.gz +m4/*.m4 +/coverage +/coverage.info +/fuzzers +/.vscode + +# src/ +/src/unicode_fold?_key.gperf +/src/unicode_unfold_key.gperf +/src/UNICODE_PROPERTIES +/src/*.txt +/src/mktable + +# test/ +/test/test_utf8 +/test/test_options +/test/testc +/test/testcu +/test/testp +/test/test_regset +/test/test_syntax +/test/test_back +/test/kofu-utf8.txt + +# sample/ +/sample/crnl +/sample/encode +/sample/listcap +/sample/names +/sample/posix +/sample/simple +/sample/sql +/sample/syntax +/sample/user_property +/sample/callout +/sample/echo +/sample/count +/sample/bug_fix +/sample/regset +/sample/scan +/sample/callback_each_match +/sample/log* + +/harnesses/utf16*.dict +/harnesses/fuzzer-* +/harnesses/read-* +/harnesses/libfuzzer-onig +/harnesses/libfuzzer-onig-full +/harnesses/slow-unit-* +/harnesses/timeout-* +/harnesses/crash-* +/harnesses/oom-* + +!config.h diff --git a/vendor/oniguruma/oniguruma/src/Makefile.am b/vendor/oniguruma/oniguruma/src/Makefile.am new file mode 100644 index 0000000..44a4167 --- /dev/null +++ b/vendor/oniguruma/oniguruma/src/Makefile.am @@ -0,0 +1,84 @@ +## Makefile.am for Oniguruma +libname = libonig.la + +AM_CFLAGS = -Wall +AM_CPPFLAGS = -I$(top_srcdir) + +include_HEADERS = oniguruma.h oniggnu.h + +posix_headers = onigposix.h + +if ENABLE_POSIX_API +posix_sources = regposix.c regposerr.c +include_HEADERS += $(posix_headers) +AM_CFLAGS += -DUSE_POSIX_API +else +posix_sources = +endif + +if ENABLE_BINARY_COMPATIBLE_POSIX_API +AM_CFLAGS += -DUSE_BINARY_COMPATIBLE_POSIX_API +endif + + +lib_LTLIBRARIES = $(libname) + +libonig_la_SOURCES = regint.h regparse.h regenc.h st.h \ + regparse.c regcomp.c regexec.c \ + regenc.c regerror.c regext.c regsyntax.c regtrav.c regversion.c st.c \ + reggnu.c \ + $(posix_sources) \ + unicode.c \ + unicode_unfold_key.c \ + unicode_fold1_key.c \ + unicode_fold2_key.c \ + unicode_fold3_key.c \ + ascii.c utf8.c \ + utf16_be.c utf16_le.c \ + utf32_be.c utf32_le.c \ + euc_jp.c euc_jp_prop.c \ + sjis.c sjis_prop.c \ + iso8859_1.c \ + iso8859_2.c iso8859_3.c \ + iso8859_4.c iso8859_5.c \ + iso8859_6.c iso8859_7.c \ + iso8859_8.c iso8859_9.c \ + iso8859_10.c iso8859_11.c \ + iso8859_13.c iso8859_14.c \ + iso8859_15.c iso8859_16.c \ + euc_tw.c euc_kr.c big5.c \ + gb18030.c koi8_r.c cp1251.c \ + onig_init.c + +EXTRA_DIST = koi8.c mktable.c \ + unicode_fold_data.c unicode_property_data.c \ + unicode_property_data_posix.c \ + unicode_egcb_data.c unicode_wb_data.c + + +libonig_la_LDFLAGS = $(EXTRA_LIBONIG_LDFLAGS) -version-info $(LTVERSION) + +if USE_LIBONIG_DEF_FILE + +libonig_la_LDFLAGS += -Wl,--output-def,$(LIBONIG_DEF_FILE) + +install-data-hook: + echo "$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_DATA) $(LIBONIG_DEF_FILE) $(DESTDIR)$(libdir)"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_DATA) $(LIBONIG_DEF_FILE) $(DESTDIR)$(libdir) || exit 1 + +uninstall-hook: + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$(LIBONIG_DEF_FILE)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$(LIBONIG_DEF_FILE)" + +endif + + +dll: + $(CXX) -shared -Wl,--output-def,libonig.def -o libonig.dll *.o \ + $(LIBS) + strip libonig.dll + + +# character-types-table source generator +mktable: mktable.c regenc.h + $(CC) -I$(top_srcdir) -o mktable mktable.c diff --git a/vendor/oniguruma/oniguruma/src/Makefile.windows b/vendor/oniguruma/oniguruma/src/Makefile.windows new file mode 100644 index 0000000..b637772 --- /dev/null +++ b/vendor/oniguruma/oniguruma/src/Makefile.windows @@ -0,0 +1,196 @@ +# Oniguruma Makefile for Windows + +product_name = oniguruma + +TEST_DIR = $(ONIG_DIR)/../test +SAMPLE_DIR = $(ONIG_DIR)/../sample +WIN_DIR = $(ONIG_DIR)/../windows + +CPPFLAGS = +CFLAGS = -O2 -nologo /W3 +LDFLAGS = +LOADLIBES = +ARLIB = lib +ARLIB_FLAGS = -nologo +ARDLL = cl +ARDLL_FLAGS = -nologo -LD $(LINKFLAGS) -dll +LINKFLAGS = -link -incremental:no -pdb:none + +SAMPLE_CFLAGS = $(CFLAGS) /I$(ONIG_DIR) + +INSTALL = install -c +CP = copy +CC = cl +DEFS = -DHAVE_CONFIG_H -DUSE_POSIX_API -DUSE_BINARY_COMPATIBLE_POSIX_API + +subdirs = + +libbase = onig +libname = $(libbase)_s.lib +dllname = $(libbase).dll +dlllib = $(libbase).lib + +!IF defined(ENABLE_POSIX_API) && "$(ENABLE_POSIX_API)" == "NO" +posixobjs = +!ELSE +posixobjs = $(BUILD_DIR)/regposix.obj $(BUILD_DIR)/regposerr.obj +!ENDIF + +onigheaders = $(ONIG_DIR)/oniguruma.h $(ONIG_DIR)/regint.h $(ONIG_DIR)/regparse.h $(ONIG_DIR)/regenc.h $(ONIG_DIR)/st.h +posixheaders = $(ONIG_DIR)/onigposix.h +headers = $(posixheaders) $(onigheaders) + +onigobjs = $(BUILD_DIR)/reggnu.obj $(BUILD_DIR)/regerror.obj $(BUILD_DIR)/regparse.obj $(BUILD_DIR)/regext.obj $(BUILD_DIR)/regcomp.obj \ + $(BUILD_DIR)/regexec.obj $(BUILD_DIR)/regenc.obj $(BUILD_DIR)/regsyntax.obj $(BUILD_DIR)/regtrav.obj \ + $(BUILD_DIR)/regversion.obj $(BUILD_DIR)/st.obj $(BUILD_DIR)/onig_init.obj +libobjs = $(onigobjs) $(posixobjs) + +jp_objs = $(BUILD_DIR)/euc_jp.obj $(BUILD_DIR)/sjis.obj +iso8859_objs = $(BUILD_DIR)/iso8859_1.obj $(BUILD_DIR)/iso8859_2.obj \ + $(BUILD_DIR)/iso8859_3.obj $(BUILD_DIR)/iso8859_4.obj \ + $(BUILD_DIR)/iso8859_5.obj $(BUILD_DIR)/iso8859_6.obj \ + $(BUILD_DIR)/iso8859_7.obj $(BUILD_DIR)/iso8859_8.obj \ + $(BUILD_DIR)/iso8859_9.obj $(BUILD_DIR)/iso8859_10.obj \ + $(BUILD_DIR)/iso8859_11.obj $(BUILD_DIR)/iso8859_13.obj \ + $(BUILD_DIR)/iso8859_14.obj $(BUILD_DIR)/iso8859_15.obj \ + $(BUILD_DIR)/iso8859_16.obj + +encobjs = $(BUILD_DIR)/ascii.obj $(BUILD_DIR)/utf8.obj \ + $(BUILD_DIR)/unicode.obj \ + $(BUILD_DIR)/utf16_be.obj $(BUILD_DIR)/utf16_le.obj \ + $(BUILD_DIR)/utf32_be.obj $(BUILD_DIR)/utf32_le.obj \ + $(jp_objs) $(iso8859_objs) \ + $(BUILD_DIR)/euc_tw.obj $(BUILD_DIR)/euc_kr.obj $(BUILD_DIR)/big5.obj \ + $(BUILD_DIR)/gb18030.obj \ + $(BUILD_DIR)/koi8_r.obj \ + $(BUILD_DIR)/cp1251.obj \ + $(BUILD_DIR)/euc_jp_prop.obj $(BUILD_DIR)/sjis_prop.obj \ + $(BUILD_DIR)/unicode_unfold_key.obj $(BUILD_DIR)/unicode_fold1_key.obj \ + $(BUILD_DIR)/unicode_fold2_key.obj $(BUILD_DIR)/unicode_fold3_key.obj # $(BUILD_DIR)/koi8.obj + +onigsources = $(ONIG_DIR)/regerror.c $(ONIG_DIR)/regparse.c $(ONIG_DIR)/regext.c $(ONIG_DIR)/regcomp.c $(ONIG_DIR)/regexec.c $(ONIG_DIR)/regenc.c \ + $(ONIG_DIR)/regsyntax.c $(ONIG_DIR)/regtrav.c $(ONIG_DIR)/regversion.c $(ONIG_DIR)/reggnu.c $(ONIG_DIR)/st.c +posixsources = $(ONIG_DIR)/regposix.c $(ONIG_DIR)/regposerr.c +libsources = $(posixsources) $(onigsources) + +patchfiles = re.c.168.patch re.c.181.patch +distfiles = README COPYING HISTORY \ + Makefile.in configure.in config.h.in configure \ + $(headers) $(libsources) $(patchfiles) \ + test.rb testconv.rb +testc = testc +testp = testp + +makeargs = $(MFLAGS) CPPFLAGS='$(CPPFLAGS)' CFLAGS='$(CFLAGS)' CC='$(CC)' + +.SUFFIXES: +.SUFFIXES: .obj .c .h .ps .dvi .info .texinfo + +{$(ONIG_DIR)}.c{$(BUILD_DIR)}.obj: + $(CC) $(CFLAGS) $(CPPFLAGS) $(DEFS) /I. /I.. /Fo$@ /c $< + +# targets +default: all + +all: $(libname) $(dllname) + +$(libname): $(libobjs) $(encobjs) + $(ARLIB) $(ARLIB_FLAGS) -out:$@ $(libobjs) $(encobjs) + +$(dllname): $(libobjs) $(encobjs) + $(ARDLL) $(libobjs) $(encobjs) -Fe$@ $(ARDLL_FLAGS) + +$(BUILD_DIR)/regparse.obj: $(ONIG_DIR)/regparse.c $(onigheaders) $(BUILD_DIR)/config.h +$(BUILD_DIR)/regext.obj: $(ONIG_DIR)/regext.c $(onigheaders) $(BUILD_DIR)/config.h +$(BUILD_DIR)/regtrav.obj: $(ONIG_DIR)/regtrav.c $(onigheaders) $(BUILD_DIR)/config.h +$(BUILD_DIR)/regcomp.obj: $(ONIG_DIR)/regcomp.c $(onigheaders) $(BUILD_DIR)/config.h +$(BUILD_DIR)/regexec.obj: $(ONIG_DIR)/regexec.c $(ONIG_DIR)/regint.h $(ONIG_DIR)/regenc.h $(ONIG_DIR)/oniguruma.h $(BUILD_DIR)/config.h +$(BUILD_DIR)/reggnu.obj: $(ONIG_DIR)/reggnu.c $(ONIG_DIR)/regint.h $(ONIG_DIR)/regenc.h $(ONIG_DIR)/oniguruma.h $(BUILD_DIR)/config.h $(ONIG_DIR)/oniggnu.h +$(BUILD_DIR)/regerror.obj: $(ONIG_DIR)/regerror.c $(ONIG_DIR)/regint.h $(ONIG_DIR)/regenc.h $(ONIG_DIR)/oniguruma.h $(BUILD_DIR)/config.h +$(BUILD_DIR)/regenc.obj: $(ONIG_DIR)/regenc.c $(ONIG_DIR)/regenc.h $(ONIG_DIR)/oniguruma.h $(BUILD_DIR)/config.h +$(BUILD_DIR)/regsyntax.obj: $(ONIG_DIR)/regsyntax.c $(ONIG_DIR)/regint.h $(ONIG_DIR)/regenc.h $(ONIG_DIR)/oniguruma.h $(BUILD_DIR)/config.h +$(BUILD_DIR)/regversion.obj: $(ONIG_DIR)/regversion.c $(ONIG_DIR)/oniguruma.h $(BUILD_DIR)/config.h +$(BUILD_DIR)/regposix.obj: $(ONIG_DIR)/regposix.c $(posixheaders) $(ONIG_DIR)/oniguruma.h $(BUILD_DIR)/config.h +$(BUILD_DIR)/regposerr.obj: $(ONIG_DIR)/regposerr.c $(posixheaders) $(BUILD_DIR)/config.h +$(BUILD_DIR)/st.obj: $(ONIG_DIR)/st.c $(ONIG_DIR)/regint.h $(ONIG_DIR)/oniguruma.h $(BUILD_DIR)/config.h $(ONIG_DIR)/st.h +$(BUILD_DIR)/onig_init.obj: $(ONIG_DIR)/onig_init.c $(ONIG_DIR)/oniguruma.h + +$(BUILD_DIR)/ascii.obj: $(ONIG_DIR)/ascii.c $(ONIG_DIR)/regenc.h $(BUILD_DIR)/config.h +$(BUILD_DIR)/unicode.obj: $(ONIG_DIR)/unicode.c $(ONIG_DIR)/unicode_fold_data.c $(ONIG_DIR)/unicode_property_data.c $(ONIG_DIR)/regenc.h $(BUILD_DIR)/config.h +$(BUILD_DIR)/utf8.obj: $(ONIG_DIR)/utf8.c $(ONIG_DIR)/regenc.h $(BUILD_DIR)/config.h +$(BUILD_DIR)/utf16_be.obj: $(ONIG_DIR)/utf16_be.c $(ONIG_DIR)/regenc.h $(BUILD_DIR)/config.h +$(BUILD_DIR)/utf16_le.obj: $(ONIG_DIR)/utf16_le.c $(ONIG_DIR)/regenc.h $(BUILD_DIR)/config.h +$(BUILD_DIR)/utf32_be.obj: $(ONIG_DIR)/utf32_be.c $(ONIG_DIR)/regenc.h $(BUILD_DIR)/config.h +$(BUILD_DIR)/utf32_le.obj: $(ONIG_DIR)/utf32_le.c $(ONIG_DIR)/regenc.h $(BUILD_DIR)/config.h +$(BUILD_DIR)/euc_jp.obj: $(ONIG_DIR)/euc_jp.c $(ONIG_DIR)/regenc.h $(BUILD_DIR)/config.h +$(BUILD_DIR)/euc_tw.obj: $(ONIG_DIR)/euc_tw.c $(ONIG_DIR)/regenc.h $(BUILD_DIR)/config.h +$(BUILD_DIR)/euc_kr.obj: $(ONIG_DIR)/euc_kr.c $(ONIG_DIR)/regenc.h $(BUILD_DIR)/config.h +$(BUILD_DIR)/sjis.obj: $(ONIG_DIR)/sjis.c $(ONIG_DIR)/regenc.h $(BUILD_DIR)/config.h +$(BUILD_DIR)/iso8859_1.obj: $(ONIG_DIR)/iso8859_1.c $(ONIG_DIR)/regenc.h $(BUILD_DIR)/config.h +$(BUILD_DIR)/iso8859_2.obj: $(ONIG_DIR)/iso8859_2.c $(ONIG_DIR)/regenc.h $(BUILD_DIR)/config.h +$(BUILD_DIR)/iso8859_3.obj: $(ONIG_DIR)/iso8859_3.c $(ONIG_DIR)/regenc.h $(BUILD_DIR)/config.h +$(BUILD_DIR)/iso8859_4.obj: $(ONIG_DIR)/iso8859_4.c $(ONIG_DIR)/regenc.h $(BUILD_DIR)/config.h +$(BUILD_DIR)/iso8859_5.obj: $(ONIG_DIR)/iso8859_5.c $(ONIG_DIR)/regenc.h $(BUILD_DIR)/config.h +$(BUILD_DIR)/iso8859_6.obj: $(ONIG_DIR)/iso8859_6.c $(ONIG_DIR)/regenc.h $(BUILD_DIR)/config.h +$(BUILD_DIR)/iso8859_7.obj: $(ONIG_DIR)/iso8859_7.c $(ONIG_DIR)/regenc.h $(BUILD_DIR)/config.h +$(BUILD_DIR)/iso8859_8.obj: $(ONIG_DIR)/iso8859_8.c $(ONIG_DIR)/regenc.h $(BUILD_DIR)/config.h +$(BUILD_DIR)/iso8859_9.obj: $(ONIG_DIR)/iso8859_9.c $(ONIG_DIR)/regenc.h $(BUILD_DIR)/config.h +$(BUILD_DIR)/iso8859_10.obj: $(ONIG_DIR)/iso8859_10.c $(ONIG_DIR)/regenc.h $(BUILD_DIR)/config.h +$(BUILD_DIR)/iso8859_11.obj: $(ONIG_DIR)/iso8859_11.c $(ONIG_DIR)/regenc.h $(BUILD_DIR)/config.h +$(BUILD_DIR)/iso8859_13.obj: $(ONIG_DIR)/iso8859_13.c $(ONIG_DIR)/regenc.h $(BUILD_DIR)/config.h +$(BUILD_DIR)/iso8859_14.obj: $(ONIG_DIR)/iso8859_14.c $(ONIG_DIR)/regenc.h $(BUILD_DIR)/config.h +$(BUILD_DIR)/iso8859_15.obj: $(ONIG_DIR)/iso8859_15.c $(ONIG_DIR)/regenc.h $(BUILD_DIR)/config.h +$(BUILD_DIR)/iso8859_16.obj: $(ONIG_DIR)/iso8859_16.c $(ONIG_DIR)/regenc.h $(BUILD_DIR)/config.h +$(BUILD_DIR)/koi8.obj: $(ONIG_DIR)/koi8.c $(ONIG_DIR)/regenc.h $(BUILD_DIR)/config.h +$(BUILD_DIR)/koi8_r.obj: $(ONIG_DIR)/koi8_r.c $(ONIG_DIR)/regenc.h $(BUILD_DIR)/config.h +$(BUILD_DIR)/cp1251.obj: $(ONIG_DIR)/cp1251.c $(ONIG_DIR)/regenc.h $(BUILD_DIR)/config.h +$(BUILD_DIR)/big5.obj: $(ONIG_DIR)/big5.c $(ONIG_DIR)/regenc.h $(BUILD_DIR)/config.h +$(BUILD_DIR)/gb18030.obj: $(ONIG_DIR)/gb18030.c $(ONIG_DIR)/regenc.h $(BUILD_DIR)/config.h +$(BUILD_DIR)/euc_jp_prop.obj: $(ONIG_DIR)/euc_jp_prop.c $(ONIG_DIR)/regenc.h +$(BUILD_DIR)/sjis_prop.obj: $(ONIG_DIR)/sjis_prop.c $(ONIG_DIR)/regenc.h +$(BUILD_DIR)/unicode_unfold_key.obj: $(ONIG_DIR)/unicode_unfold_key.c $(ONIG_DIR)/regenc.h $(BUILD_DIR)/config.h +$(BUILD_DIR)/unicode_fold1_key.obj: $(ONIG_DIR)/unicode_fold1_key.c $(ONIG_DIR)/regenc.h $(BUILD_DIR)/config.h +$(BUILD_DIR)/unicode_fold2_key.obj: $(ONIG_DIR)/unicode_fold2_key.c $(ONIG_DIR)/regenc.h $(BUILD_DIR)/config.h +$(BUILD_DIR)/unicode_fold3_key.obj: $(ONIG_DIR)/unicode_fold3_key.c $(ONIG_DIR)/regenc.h $(BUILD_DIR)/config.h + +all-test: test_syntax test_regset test_utf8 test_options test_back testc testp testu + +test_syntax: $(TEST_DIR)/test_syntax.c $(libname) + $(CC) -nologo /Fe:$@ /I. /I$(ONIG_DIR) /DONIG_EXTERN=extern /utf-8 $(TEST_DIR)/test_syntax.c $(libname) + +test_regset: $(TEST_DIR)/test_regset.c $(libname) + $(CC) -nologo /Fe:$@ /I. /I$(ONIG_DIR) /DONIG_EXTERN=extern /utf-8 $(TEST_DIR)/test_regset.c $(libname) + +test_utf8: $(TEST_DIR)/test_utf8.c $(libname) + $(CC) -nologo /Fe:$@ /I. /I$(ONIG_DIR) /DONIG_EXTERN=extern /utf-8 $(TEST_DIR)/test_utf8.c $(libname) + +test_options: $(TEST_DIR)/test_options.c $(libname) + $(CC) -nologo /Fe:$@ /I. /I$(ONIG_DIR) /DONIG_EXTERN=extern /utf-8 $(TEST_DIR)/test_options.c $(libname) + +test_back: $(TEST_DIR)/test_back.c $(libname) + $(CC) -nologo /Fe:$@ /I. /I$(ONIG_DIR) /DONIG_EXTERN=extern /utf-8 $(TEST_DIR)/test_back.c $(libname) + +testc: $(WIN_DIR)/testc.c $(libname) + $(CC) -nologo /Fe:$@ /I. /I$(ONIG_DIR) /DONIG_EXTERN=extern $(WIN_DIR)/testc.c $(libname) + +testp: $(WIN_DIR)/testc.c $(libname) + $(CC) -nologo /Fe:$@ /I. /I$(ONIG_DIR) /DONIG_EXTERN=extern /DPOSIX_TEST $(WIN_DIR)/testc.c $(libname) + +testu: $(TEST_DIR)/testu.c $(libname) + $(CC) -nologo /Fe:$@ /I. /I$(ONIG_DIR) /DONIG_EXTERN=extern $(TEST_DIR)/testu.c $(libname) + +clean: + del $(BUILD_DIR)\*.obj $(BUILD_DIR)\*.lib $(BUILD_DIR)\*.exp $(BUILD_DIR)\*.dll $(BUILD_DIR)\test_regset.exe $(BUILD_DIR)\test_syntax.exe $(BUILD_DIR)\test_utf8.exe $(BUILD_DIR)\test_options.exe $(BUILD_DIR)\test_back.exe $(BUILD_DIR)\testp.exe $(BUILD_DIR)\testc.exe $(BUILD_DIR)\testu.exe + + +samples: all + $(CC) $(SAMPLE_CFLAGS) /Fe:simple $(SAMPLE_DIR)\simple.c $(dlllib) + $(CC) $(SAMPLE_CFLAGS) /Fe:posix $(SAMPLE_DIR)\posix.c $(dlllib) + $(CC) $(SAMPLE_CFLAGS) /Fe:names $(SAMPLE_DIR)\names.c $(dlllib) + $(CC) $(SAMPLE_CFLAGS) /Fe:listcap $(SAMPLE_DIR)\listcap.c $(dlllib) + $(CC) $(SAMPLE_CFLAGS) /Fe:sql $(SAMPLE_DIR)\sql.c $(dlllib) + $(CC) $(SAMPLE_CFLAGS) /Fe:encode $(SAMPLE_DIR)\encode.c $(dlllib) + $(CC) $(SAMPLE_CFLAGS) /Fe:syntax $(SAMPLE_DIR)\syntax.c $(dlllib) + $(CC) $(SAMPLE_CFLAGS) /Fe:count $(SAMPLE_DIR)\count.c $(dlllib) + $(CC) $(SAMPLE_CFLAGS) /Fe:regset $(SAMPLE_DIR)\regset.c $(dlllib) + $(CC) $(SAMPLE_CFLAGS) /Fe:callback_each_match $(SAMPLE_DIR)\callback_each_match.c $(dlllib) diff --git a/vendor/oniguruma/oniguruma/src/ascii.c b/vendor/oniguruma/oniguruma/src/ascii.c new file mode 100644 index 0000000..4d59092 --- /dev/null +++ b/vendor/oniguruma/oniguruma/src/ascii.c @@ -0,0 +1,121 @@ +/********************************************************************** + ascii.c - Oniguruma (regular expression library) +**********************************************************************/ +/*- + * Copyright (c) 2002-2024 K.Kosako + * 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. + */ + +#include "regint.h" /* for USE_CALLOUT */ + +static int +init(void) +{ +#ifdef USE_CALLOUT + + int id; + OnigEncoding enc; + char* name; + unsigned int args[4]; + OnigValue opts[4]; + + enc = ONIG_ENCODING_ASCII; + + name = "FAIL"; BC0_P(name, fail); + name = "MISMATCH"; BC0_P(name, mismatch); +#ifdef USE_SKIP_SEARCH + name = "SKIP"; BC0_P(name, skip); +#endif + + name = "MAX"; + args[0] = ONIG_TYPE_TAG | ONIG_TYPE_LONG; + args[1] = ONIG_TYPE_CHAR; + opts[0].c = 'X'; + BC_B_O(name, max, 2, args, 1, opts); + + name = "ERROR"; + args[0] = ONIG_TYPE_LONG; opts[0].l = ONIG_ABORT; + BC_P_O(name, error, 1, args, 1, opts); + + name = "COUNT"; + args[0] = ONIG_TYPE_CHAR; opts[0].c = '>'; + BC_B_O(name, count, 1, args, 1, opts); + + name = "TOTAL_COUNT"; + args[0] = ONIG_TYPE_CHAR; opts[0].c = '>'; + BC_B_O(name, total_count, 1, args, 1, opts); + + name = "CMP"; + args[0] = ONIG_TYPE_TAG | ONIG_TYPE_LONG; + args[1] = ONIG_TYPE_STRING; + args[2] = ONIG_TYPE_TAG | ONIG_TYPE_LONG; + BC_P(name, cmp, 3, args); + +#endif /* USE_CALLOUT */ + + return ONIG_NORMAL; +} + +#if 0 +static int +is_initialized(void) +{ + /* Don't use this function */ + /* can't answer, because builtin callout entries removed in onig_end() */ + return 0; +} +#endif + +static int +ascii_is_code_ctype(OnigCodePoint code, unsigned int ctype) +{ + if (code < 128) + return ONIGENC_IS_ASCII_CODE_CTYPE(code, ctype); + else + return FALSE; +} + +OnigEncodingType OnigEncodingASCII = { + onigenc_single_byte_mbc_enc_len, + "US-ASCII", /* name */ + 1, /* max enc length */ + 1, /* min enc length */ + onigenc_is_mbc_newline_0x0a, + onigenc_single_byte_mbc_to_code, + onigenc_single_byte_code_to_mbclen, + onigenc_single_byte_code_to_mbc, + onigenc_ascii_mbc_case_fold, + onigenc_ascii_apply_all_case_fold, + onigenc_ascii_get_case_fold_codes_by_str, + onigenc_minimum_property_name_to_ctype, + ascii_is_code_ctype, + onigenc_not_support_get_ctype_code_range, + onigenc_single_byte_left_adjust_char_head, + onigenc_always_true_is_allowed_reverse_match, + init, + 0, /* is_initialized */ + onigenc_always_true_is_valid_mbc_string, + ENC_FLAG_ASCII_COMPATIBLE|ENC_FLAG_SKIP_OFFSET_1, + 0, 0 +}; diff --git a/vendor/oniguruma/oniguruma/src/big5.c b/vendor/oniguruma/oniguruma/src/big5.c new file mode 100644 index 0000000..faff845 --- /dev/null +++ b/vendor/oniguruma/oniguruma/src/big5.c @@ -0,0 +1,200 @@ +/********************************************************************** + big5.c - Oniguruma (regular expression library) +**********************************************************************/ +/*- + * Copyright (c) 2002-2020 K.Kosako + * 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. + */ + +#include "regenc.h" + +static const int EncLen_BIG5[] = { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 +}; + +static int +big5_mbc_enc_len(const UChar* p) +{ + return EncLen_BIG5[*p]; +} + +static int +big5_code_to_mbclen(OnigCodePoint code) +{ + if ((code & (~0xffff)) != 0) return ONIGERR_INVALID_CODE_POINT_VALUE; + + if ((code & 0xff00) != 0) { + if (EncLen_BIG5[(int )(code >> 8) & 0xff] == 2) + return 2; + } + else { + if (EncLen_BIG5[(int )(code & 0xff)] == 1) + return 1; + } + + return ONIGERR_INVALID_CODE_POINT_VALUE; +} + +static int +is_valid_mbc_string(const UChar* p, const UChar* end) +{ + while (p < end) { + if (*p < 0x80) { + p++; + } + else if (*p < 0xa1) { + return FALSE; + } + else if (*p < 0xff) { + p++; + if (p >= end) return FALSE; + if (*p < 0x40) return FALSE; + if (*p > 0x7e && *p < 0xa1) return FALSE; + if (*p == 0xff) return FALSE; + p++; + } + else + return FALSE; + } + + return TRUE; +} + +static OnigCodePoint +big5_mbc_to_code(const UChar* p, const UChar* end) +{ + return onigenc_mbn_mbc_to_code(ONIG_ENCODING_BIG5, p, end); +} + +static int +big5_code_to_mbc(OnigCodePoint code, UChar *buf) +{ + return onigenc_mb2_code_to_mbc(ONIG_ENCODING_BIG5, code, buf); +} + +static int +big5_mbc_case_fold(OnigCaseFoldType flag, const UChar** pp, const UChar* end, + UChar* lower) +{ + return onigenc_mbn_mbc_case_fold(ONIG_ENCODING_BIG5, flag, + pp, end, lower); +} + +static int +big5_is_code_ctype(OnigCodePoint code, unsigned int ctype) +{ + return onigenc_mb2_is_code_ctype(ONIG_ENCODING_BIG5, code, ctype); +} + +static const char BIG5_CAN_BE_TRAIL_TABLE[256] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0 +}; + +#define BIG5_ISMB_FIRST(byte) (EncLen_BIG5[byte] > 1) +#define BIG5_ISMB_TRAIL(byte) BIG5_CAN_BE_TRAIL_TABLE[(byte)] + +static UChar* +big5_left_adjust_char_head(const UChar* start, const UChar* s) +{ + const UChar *p; + int len; + + if (s <= start) return (UChar* )s; + p = s; + + if (BIG5_ISMB_TRAIL(*p)) { + while (p > start) { + if (! BIG5_ISMB_FIRST(*--p)) { + p++; + break; + } + } + } + len = enclen(ONIG_ENCODING_BIG5, p); + if (p + len > s) return (UChar* )p; + p += len; + return (UChar* )(p + ((s - p) & ~1)); +} + +static int +big5_is_allowed_reverse_match(const UChar* s, const UChar* end ARG_UNUSED) +{ + const UChar c = *s; + + return (BIG5_ISMB_TRAIL(c) ? FALSE : TRUE); +} + +OnigEncodingType OnigEncodingBIG5 = { + big5_mbc_enc_len, + "Big5", /* name */ + 2, /* max enc length */ + 1, /* min enc length */ + onigenc_is_mbc_newline_0x0a, + big5_mbc_to_code, + big5_code_to_mbclen, + big5_code_to_mbc, + big5_mbc_case_fold, + onigenc_ascii_apply_all_case_fold, + onigenc_ascii_get_case_fold_codes_by_str, + onigenc_minimum_property_name_to_ctype, + big5_is_code_ctype, + onigenc_not_support_get_ctype_code_range, + big5_left_adjust_char_head, + big5_is_allowed_reverse_match, + NULL, /* init */ + NULL, /* is_initialized */ + is_valid_mbc_string, + ENC_FLAG_ASCII_COMPATIBLE|ENC_FLAG_SKIP_OFFSET_1, + 0, 0 +}; diff --git a/vendor/onig/config-onig-edbee.h b/vendor/oniguruma/oniguruma/src/config-oniguruma-edbee.h similarity index 69% rename from vendor/onig/config-onig-edbee.h rename to vendor/oniguruma/oniguruma/src/config-oniguruma-edbee.h index 6d49d63..bb514b0 100644 --- a/vendor/onig/config-onig-edbee.h +++ b/vendor/oniguruma/oniguruma/src/config-oniguruma-edbee.h @@ -1,16 +1,18 @@ -#ifndef CONFIGONIGEDBEE_H -#define CONFIGONIGEDBEE_H +#ifndef CONFIG_ONIGURUMA_EDBEE_H +#define CONFIG_ONIGURUMA_EDBEE_H #ifdef __clang__ //#pragma clang diagnostic ignored "-Wunused-variable" #pragma clang diagnostic ignored "-Wunused-parameter" #pragma clang diagnostic ignored "-Wmissing-field-initializers" - + #pragma clang diagnostic ignored "-Wsign-compare" #else #ifdef __GNUC__ //#pragma GCC diagnostic ignored "-Wunused-variable" #pragma GCC diagnostic ignored "-Wunused-parameter" #pragma GCC diagnostic ignored "-Wmissing-field-initializers" + #pragma GCC diagnostic ignored "-Wsign-compare" + #pragma GCC diagnostic ignored "-Wimplicit-fallthrough" #endif #endif @@ -22,4 +24,4 @@ // TODO: Add more visual studio and other compiler directives -#endif // CONFIGONIGEDBEE_H +#endif // CONFIG_ONIGURUMA_EDBEE_H diff --git a/vendor/oniguruma/oniguruma/src/config.h b/vendor/oniguruma/oniguruma/src/config.h new file mode 100644 index 0000000..e394985 --- /dev/null +++ b/vendor/oniguruma/oniguruma/src/config.h @@ -0,0 +1,8 @@ +#include "config-oniguruma-edbee.h" + +#ifdef _WIN32 + #include "config.win.h" +#else + #include "config.unix.h" +#endif + diff --git a/vendor/oniguruma/oniguruma/src/config.h.cmake.in b/vendor/oniguruma/oniguruma/src/config.h.cmake.in new file mode 100644 index 0000000..c213a09 --- /dev/null +++ b/vendor/oniguruma/oniguruma/src/config.h.cmake.in @@ -0,0 +1,56 @@ +/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP + systems. This function is required for `alloca.c' support on those systems. + */ +#cmakedefine CRAY_STACKSEG_END + +/* Define to 1 if using `alloca.c'. */ +#cmakedefine C_ALLOCA + +/* Define to 1 if you have `alloca', as a function or macro. */ +#cmakedefine HAVE_ALLOCA ${HAVE_ALLOCA} + +/* Define to 1 if you have and it should be used (not on Ultrix). + */ +#cmakedefine HAVE_ALLOCA_H ${HAVE_ALLOCA_H} + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_STDINT_H ${HAVE_STDINT_H} + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_SYS_TIMES_H ${HAVE_SYS_TIMES_H} + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_SYS_TIME_H ${HAVE_SYS_TIME_H} + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_SYS_TYPES_H ${HAVE_SYS_TYPES_H} + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_UNISTD_H ${HAVE_UNISTD_H} + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_INTTYPES_H ${HAVE_INTTYPES_H} + +/* Name of package */ +#cmakedefine PACKAGE ${PACKAGE} + +/* Define to the version of this package. */ +#cmakedefine PACKAGE_VERSION ${PACKAGE_VERSION} + +/* The size of `int', as computed by sizeof. */ +#cmakedefine SIZEOF_INT ${SIZEOF_INT} + +/* The size of `long', as computed by sizeof. */ +#cmakedefine SIZEOF_LONG ${SIZEOF_LONG} + +/* The size of `long long', as computed by sizeof. */ +#cmakedefine SIZEOF_LONG_LONG ${SIZEOF_LONG_LONG} + +/* The size of `void*', as computed by sizeof. */ +#cmakedefine SIZEOF_VOIDP ${SIZEOF_VOIDP} + +/* Define if enable CR+NL as line terminator */ +#cmakedefine USE_CRNL_AS_LINE_TERMINATOR ${USE_CRNL_AS_LINE_TERMINATOR} + +/* Version number of package */ +#cmakedefine VERSION ${VERSION} diff --git a/vendor/oniguruma/oniguruma/src/config.h.win32 b/vendor/oniguruma/oniguruma/src/config.h.win32 new file mode 100644 index 0000000..82a35b9 --- /dev/null +++ b/vendor/oniguruma/oniguruma/src/config.h.win32 @@ -0,0 +1,56 @@ +#if defined(__MINGW32__) || _MSC_VER >= 1600 +#define HAVE_STDINT_H 1 +#endif +#if defined(__MINGW32__) || _MSC_VER >= 1800 +#define HAVE_INTTYPES_H 1 +#endif +#define HAVE_SYS_TYPES_H 1 +#define HAVE_SYS_STAT_H 1 +#define HAVE_MEMORY_H 1 +#define HAVE_OFF_T 1 +#define SIZEOF_INT 4 +#define SIZEOF_LONG 4 +#define SIZEOF_LONG_LONG 8 +#define SIZEOF___INT64 8 +#define SIZEOF_OFF_T 4 +#define SIZEOF_VOIDP 4 +#define SIZEOF_FLOAT 4 +#define SIZEOF_DOUBLE 8 +#define SIZEOF_SIZE_T 4 +#define TOKEN_PASTE(x,y) x##y +#ifndef NORETURN +#if _MSC_VER > 1100 +#define NORETURN(x) __declspec(noreturn) x +#else +#define NORETURN(x) x +#endif +#endif +#define HAVE_DECL_SYS_NERR 1 +#define HAVE_FCNTL_H 1 +#define HAVE_SYS_UTIME_H 1 +#define HAVE_MEMORY_H 1 +#define uid_t int +#define gid_t int +#define GETGROUPS_T int +#define HAVE_ALLOCA 1 +#define HAVE_DUP2 1 +#define HAVE_MKDIR 1 +#define HAVE_FLOCK 1 +#define HAVE_FINITE 1 +#define HAVE_HYPOT 1 +#define HAVE_WAITPID 1 +#define HAVE_CHSIZE 1 +#define HAVE_TIMES 1 +#define HAVE_TELLDIR 1 +#define HAVE_SEEKDIR 1 +#define HAVE_EXECVE 1 +#define HAVE_DAYLIGHT 1 +#define SETPGRP_VOID 1 +#define inline __inline +#define NEED_IO_SEEK_BETWEEN_RW 1 +#define RSHIFT(x,y) ((x)>>(int)y) +#define FILE_COUNT _cnt +#define FILE_READPTR _ptr +#define DEFAULT_KCODE KCODE_NONE +#define DLEXT ".so" +#define DLEXT2 ".dll" diff --git a/vendor/oniguruma/oniguruma/src/config.h.win64 b/vendor/oniguruma/oniguruma/src/config.h.win64 new file mode 100644 index 0000000..7f19699 --- /dev/null +++ b/vendor/oniguruma/oniguruma/src/config.h.win64 @@ -0,0 +1,56 @@ +#if defined(__MINGW32__) || _MSC_VER >= 1600 +#define HAVE_STDINT_H 1 +#endif +#if defined(__MINGW32__) || _MSC_VER >= 1800 +#define HAVE_INTTYPES_H 1 +#endif +#define HAVE_SYS_TYPES_H 1 +#define HAVE_SYS_STAT_H 1 +#define HAVE_MEMORY_H 1 +#define HAVE_OFF_T 1 +#define SIZEOF_INT 4 +#define SIZEOF_LONG 4 +#define SIZEOF_LONG_LONG 8 +#define SIZEOF___INT64 8 +#define SIZEOF_OFF_T 4 +#define SIZEOF_VOIDP 8 +#define SIZEOF_FLOAT 4 +#define SIZEOF_DOUBLE 8 +#define SIZEOF_SIZE_T 8 +#define TOKEN_PASTE(x,y) x##y +#ifndef NORETURN +#if _MSC_VER > 1100 +#define NORETURN(x) __declspec(noreturn) x +#else +#define NORETURN(x) x +#endif +#endif +#define HAVE_DECL_SYS_NERR 1 +#define HAVE_FCNTL_H 1 +#define HAVE_SYS_UTIME_H 1 +#define HAVE_MEMORY_H 1 +#define uid_t int +#define gid_t int +#define GETGROUPS_T int +#define HAVE_ALLOCA 1 +#define HAVE_DUP2 1 +#define HAVE_MKDIR 1 +#define HAVE_FLOCK 1 +#define HAVE_FINITE 1 +#define HAVE_HYPOT 1 +#define HAVE_WAITPID 1 +#define HAVE_CHSIZE 1 +#define HAVE_TIMES 1 +#define HAVE_TELLDIR 1 +#define HAVE_SEEKDIR 1 +#define HAVE_EXECVE 1 +#define HAVE_DAYLIGHT 1 +#define SETPGRP_VOID 1 +#define inline __inline +#define NEED_IO_SEEK_BETWEEN_RW 1 +#define RSHIFT(x,y) ((x)>>(int)y) +#define FILE_COUNT _cnt +#define FILE_READPTR _ptr +#define DEFAULT_KCODE KCODE_NONE +#define DLEXT ".so" +#define DLEXT2 ".dll" diff --git a/vendor/oniguruma/oniguruma/src/config.h.windows.in b/vendor/oniguruma/oniguruma/src/config.h.windows.in new file mode 100644 index 0000000..d4f73d7 --- /dev/null +++ b/vendor/oniguruma/oniguruma/src/config.h.windows.in @@ -0,0 +1,62 @@ +#if defined(__MINGW32__) || _MSC_VER >= 1600 +#define HAVE_STDINT_H 1 +#endif +#if defined(__MINGW32__) || _MSC_VER >= 1800 +#define HAVE_INTTYPES_H 1 +#endif +#define HAVE_SYS_TYPES_H 1 +#define HAVE_SYS_STAT_H 1 +#define HAVE_MEMORY_H 1 +#define HAVE_OFF_T 1 + +#define SIZEOF_INT 4 +#define SIZEOF_LONG 4 +#define SIZEOF_LONG_LONG 8 +#define SIZEOF___INT64 8 +#define SIZEOF_OFF_T 4 +#ifdef _WIN64 +#define SIZEOF_VOIDP 8 +#define SIZEOF_SIZE_T 8 +#else +#define SIZEOF_VOIDP 4 +#define SIZEOF_SIZE_T 4 +#endif +#define SIZEOF_FLOAT 4 +#define SIZEOF_DOUBLE 8 +#define TOKEN_PASTE(x,y) x##y +#ifndef NORETURN +#if _MSC_VER > 1100 +#define NORETURN(x) __declspec(noreturn) x +#else +#define NORETURN(x) x +#endif +#endif +#define HAVE_DECL_SYS_NERR 1 +#define HAVE_FCNTL_H 1 +#define HAVE_SYS_UTIME_H 1 +#define HAVE_MEMORY_H 1 +#define uid_t int +#define gid_t int +#define GETGROUPS_T int +#define HAVE_ALLOCA 1 +#define HAVE_DUP2 1 +#define HAVE_MKDIR 1 +#define HAVE_FLOCK 1 +#define HAVE_FINITE 1 +#define HAVE_HYPOT 1 +#define HAVE_WAITPID 1 +#define HAVE_CHSIZE 1 +#define HAVE_TIMES 1 +#define HAVE_TELLDIR 1 +#define HAVE_SEEKDIR 1 +#define HAVE_EXECVE 1 +#define HAVE_DAYLIGHT 1 +#define SETPGRP_VOID 1 +#define inline __inline +#define NEED_IO_SEEK_BETWEEN_RW 1 +#define RSHIFT(x,y) ((x)>>(int)y) +#define FILE_COUNT _cnt +#define FILE_READPTR _ptr +#define DEFAULT_KCODE KCODE_NONE +#define DLEXT ".so" +#define DLEXT2 ".dll" diff --git a/vendor/oniguruma/oniguruma/src/config.unix.h b/vendor/oniguruma/oniguruma/src/config.unix.h new file mode 100644 index 0000000..dcb77c7 --- /dev/null +++ b/vendor/oniguruma/oniguruma/src/config.unix.h @@ -0,0 +1,102 @@ +/* Define to 1 if using 'alloca.c'. */ +/* #undef C_ALLOCA */ + +/* Define to 1 if you have 'alloca', as a function or macro. */ +#define HAVE_ALLOCA 1 + +/* Define to 1 if works. */ +#define HAVE_ALLOCA_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_DLFCN_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDIO_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDLIB_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRINGS_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TIMES_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TIME_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_UNISTD_H 1 + +/* Define to the sub-directory where libtool stores uninstalled libraries. */ +#define LT_OBJDIR ".libs/" + +/* Name of package */ +#define PACKAGE "onig" + +/* Define to the address where bug reports for this package should be sent. */ +#define PACKAGE_BUGREPORT "" + +/* Define to the full name of this package. */ +#define PACKAGE_NAME "onig" + +/* Define to the full name and version of this package. */ +#define PACKAGE_STRING "onig 6.9.10" + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "onig" + +/* Define to the home page for this package. */ +#define PACKAGE_URL "" + +/* Define to the version of this package. */ +#define PACKAGE_VERSION "6.9.10" + +/* The size of 'int', as computed by sizeof. */ +#define SIZEOF_INT 4 + +/* The size of 'long', as computed by sizeof. */ +#define SIZEOF_LONG 8 + +/* The size of 'long long', as computed by sizeof. */ +#define SIZEOF_LONG_LONG 8 + +/* The size of 'void*', as computed by sizeof. */ +#define SIZEOF_VOIDP 8 + +/* If using the C implementation of alloca, define if you know the + direction of stack growth for your system; otherwise it will be + automatically deduced at runtime. + STACK_DIRECTION > 0 => grows toward higher addresses + STACK_DIRECTION < 0 => grows toward lower addresses + STACK_DIRECTION = 0 => direction of growth unknown */ +/* #undef STACK_DIRECTION */ + +/* Define to 1 if all of the C89 standard headers exist (not just the ones + required in a freestanding environment). This macro is provided for + backward compatibility; new code need not use it. */ +#define STDC_HEADERS 1 + +/* Define if enable CR+NL as line terminator */ +/* #undef USE_CRNL_AS_LINE_TERMINATOR */ + +/* Version number of package */ +#define VERSION "6.9.10" + +/* Define as 'unsigned int' if doesn't define. */ +/* #undef size_t */ diff --git a/vendor/oniguruma/oniguruma/src/config.win.h b/vendor/oniguruma/oniguruma/src/config.win.h new file mode 100644 index 0000000..d4f73d7 --- /dev/null +++ b/vendor/oniguruma/oniguruma/src/config.win.h @@ -0,0 +1,62 @@ +#if defined(__MINGW32__) || _MSC_VER >= 1600 +#define HAVE_STDINT_H 1 +#endif +#if defined(__MINGW32__) || _MSC_VER >= 1800 +#define HAVE_INTTYPES_H 1 +#endif +#define HAVE_SYS_TYPES_H 1 +#define HAVE_SYS_STAT_H 1 +#define HAVE_MEMORY_H 1 +#define HAVE_OFF_T 1 + +#define SIZEOF_INT 4 +#define SIZEOF_LONG 4 +#define SIZEOF_LONG_LONG 8 +#define SIZEOF___INT64 8 +#define SIZEOF_OFF_T 4 +#ifdef _WIN64 +#define SIZEOF_VOIDP 8 +#define SIZEOF_SIZE_T 8 +#else +#define SIZEOF_VOIDP 4 +#define SIZEOF_SIZE_T 4 +#endif +#define SIZEOF_FLOAT 4 +#define SIZEOF_DOUBLE 8 +#define TOKEN_PASTE(x,y) x##y +#ifndef NORETURN +#if _MSC_VER > 1100 +#define NORETURN(x) __declspec(noreturn) x +#else +#define NORETURN(x) x +#endif +#endif +#define HAVE_DECL_SYS_NERR 1 +#define HAVE_FCNTL_H 1 +#define HAVE_SYS_UTIME_H 1 +#define HAVE_MEMORY_H 1 +#define uid_t int +#define gid_t int +#define GETGROUPS_T int +#define HAVE_ALLOCA 1 +#define HAVE_DUP2 1 +#define HAVE_MKDIR 1 +#define HAVE_FLOCK 1 +#define HAVE_FINITE 1 +#define HAVE_HYPOT 1 +#define HAVE_WAITPID 1 +#define HAVE_CHSIZE 1 +#define HAVE_TIMES 1 +#define HAVE_TELLDIR 1 +#define HAVE_SEEKDIR 1 +#define HAVE_EXECVE 1 +#define HAVE_DAYLIGHT 1 +#define SETPGRP_VOID 1 +#define inline __inline +#define NEED_IO_SEEK_BETWEEN_RW 1 +#define RSHIFT(x,y) ((x)>>(int)y) +#define FILE_COUNT _cnt +#define FILE_READPTR _ptr +#define DEFAULT_KCODE KCODE_NONE +#define DLEXT ".so" +#define DLEXT2 ".dll" diff --git a/vendor/onig/enc/windows_1251.c b/vendor/oniguruma/oniguruma/src/cp1251.c similarity index 77% rename from vendor/onig/enc/windows_1251.c rename to vendor/oniguruma/oniguruma/src/cp1251.c index fcd0f10..36b36f6 100644 --- a/vendor/onig/enc/windows_1251.c +++ b/vendor/oniguruma/oniguruma/src/cp1251.c @@ -1,9 +1,9 @@ /********************************************************************** - windows_1251.c - Oniguruma (regular expression library) + cp1251.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2006-2007 Byte - * K.Kosako + * Copyright (c) 2006-2020 Byte + * K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -105,18 +105,22 @@ static const unsigned short EncCP1251_CtypeTable[256] = { }; static int -cp1251_mbc_case_fold(OnigCaseFoldType flag ARG_UNUSED, - const UChar** pp, const UChar* end ARG_UNUSED, UChar* lower, OnigEncoding enc ARG_UNUSED) +cp1251_mbc_case_fold(OnigCaseFoldType flag, + const UChar** pp, const UChar* end ARG_UNUSED, UChar* lower) { const UChar* p = *pp; - *lower = ENC_CP1251_TO_LOWER_CASE(*p); + if (CASE_FOLD_IS_NOT_ASCII_ONLY(flag) || ONIGENC_IS_ASCII_CODE(*p)) + *lower = ENC_CP1251_TO_LOWER_CASE(*p); + else + *lower = *p; + (*pp)++; return 1; } static int -cp1251_is_code_ctype(OnigCodePoint code, unsigned int ctype, OnigEncoding enc ARG_UNUSED) +cp1251_is_code_ctype(OnigCodePoint code, unsigned int ctype) { if (code < 256) return ENC_IS_CP1251_CTYPE(code, ctype); @@ -164,67 +168,25 @@ static const OnigPairCaseFoldCodes CaseFoldMap[] = { static int cp1251_apply_all_case_fold(OnigCaseFoldType flag, - OnigApplyAllCaseFoldFunc f, void* arg, OnigEncoding enc ARG_UNUSED) + OnigApplyAllCaseFoldFunc f, void* arg) { return onigenc_apply_all_case_fold_with_map( - numberof(CaseFoldMap), CaseFoldMap, 0, + sizeof(CaseFoldMap)/sizeof(OnigPairCaseFoldCodes), CaseFoldMap, 0, flag, f, arg); } static int cp1251_get_case_fold_codes_by_str(OnigCaseFoldType flag, - const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[], OnigEncoding enc ARG_UNUSED) + const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]) { return onigenc_get_case_fold_codes_by_str_with_map( - numberof(CaseFoldMap), CaseFoldMap, 0, - flag, p, end, items); -} - -static int -case_map(OnigCaseFoldType* flagP, const OnigUChar** pp, - const OnigUChar* end, OnigUChar* to, OnigUChar* to_end, - const struct OnigEncodingTypeST* enc) -{ - OnigCodePoint code; - OnigUChar *to_start = to; - OnigCaseFoldType flags = *flagP; - - while (*pp < end && to < to_end) { - code = *(*pp)++; - if ((EncCP1251_CtypeTable[code] & BIT_CTYPE_UPPER) - && (flags & (ONIGENC_CASE_DOWNCASE | ONIGENC_CASE_FOLD))) { - flags |= ONIGENC_CASE_MODIFIED; - code = ENC_CP1251_TO_LOWER_CASE(code); - } - else if (code == 0xB5) - ; - else if ((EncCP1251_CtypeTable[code]&BIT_CTYPE_LOWER) - && (flags & ONIGENC_CASE_UPCASE)) { - flags |= ONIGENC_CASE_MODIFIED; - if ((0x61 <= code && code <= 0x7A) || (0xE0 <= code && code <= 0xFF)) - code -= 0x20; - else if (code == 0xA2 || code == 0xB3 || code == 0xBE) - code -= 0x01; - else if (code == 0x83) - code = 0x81; - else if (code == 0xBC) - code = 0xA3; - else if (code == 0xB4) - code = 0xA5; - else - code -= 0x10; - } - *to++ = code; - if (flags & ONIGENC_CASE_TITLECASE) /* switch from titlecase to lowercase for capitalize */ - flags ^= (ONIGENC_CASE_UPCASE | ONIGENC_CASE_DOWNCASE | ONIGENC_CASE_TITLECASE); - } - *flagP = flags; - return (int )(to - to_start); + sizeof(CaseFoldMap)/sizeof(OnigPairCaseFoldCodes), CaseFoldMap, 0, + flag, p, end, items); } -OnigEncodingDefine(windows_1251, Windows_1251) = { +OnigEncodingType OnigEncodingCP1251 = { onigenc_single_byte_mbc_enc_len, - "Windows-1251",/* name */ + "CP1251", /* name */ 1, /* max enc length */ 1, /* min enc length */ onigenc_is_mbc_newline_0x0a, @@ -239,15 +201,9 @@ OnigEncodingDefine(windows_1251, Windows_1251) = { onigenc_not_support_get_ctype_code_range, onigenc_single_byte_left_adjust_char_head, onigenc_always_true_is_allowed_reverse_match, - case_map, - 0, - ONIGENC_FLAG_NONE, + NULL, /* init */ + NULL, /* is_initialized */ + onigenc_always_true_is_valid_mbc_string, + ENC_FLAG_ASCII_COMPATIBLE|ENC_FLAG_SKIP_OFFSET_1, + 0, 0 }; -/* - * Name: windows-1251 - * MIBenum: 2251 - * Link: http://www.iana.org/assignments/character-sets - * Link: http://www.microsoft.com/globaldev/reference/sbcs/1251.mspx - * Link: http://en.wikipedia.org/wiki/Windows-1251 - */ -ENC_ALIAS("CP1251", "Windows-1251") diff --git a/vendor/oniguruma/oniguruma/src/euc_jp.c b/vendor/oniguruma/oniguruma/src/euc_jp.c new file mode 100644 index 0000000..bfe91bf --- /dev/null +++ b/vendor/oniguruma/oniguruma/src/euc_jp.c @@ -0,0 +1,308 @@ +/********************************************************************** + euc_jp.c - Oniguruma (regular expression library) +**********************************************************************/ +/*- + * Copyright (c) 2002-2020 K.Kosako + * 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. + */ + +#include "regint.h" + +#define eucjp_islead(c) ((UChar )((c) - 0xa1) > 0xfe - 0xa1) + +static const int EncLen_EUCJP[] = { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 +}; + +static int +mbc_enc_len(const UChar* p) +{ + return EncLen_EUCJP[*p]; +} + +static int +is_valid_mbc_string(const UChar* p, const UChar* end) +{ + while (p < end) { + if (*p < 0x80) { + p++; + } + else if (*p > 0xa0) { + if (*p == 0xff) return FALSE; + p++; + if (p >= end) return FALSE; + if (*p < 0xa1 || *p == 0xff) return FALSE; + p++; + } + else if (*p == 0x8e) { + p++; + if (p >= end) return FALSE; + if (*p < 0xa1 || *p > 0xdf) return FALSE; + p++; + } + else if (*p == 0x8f) { + p++; + if (p >= end) return FALSE; + if (*p < 0xa1 || *p == 0xff) return FALSE; + p++; + if (p >= end) return FALSE; + if (*p < 0xa1 || *p == 0xff) return FALSE; + p++; + } + else + return FALSE; + } + + return TRUE; +} + +static OnigCodePoint +mbc_to_code(const UChar* p, const UChar* end) +{ + int c, i, len; + OnigCodePoint n; + + len = enclen(ONIG_ENCODING_EUC_JP, p); + n = (OnigCodePoint )*p++; + if (len == 1) return n; + + for (i = 1; i < len; i++) { + if (p >= end) break; + c = *p++; + n <<= 8; n += c; + } + return n; +} + +static int +code_to_mbclen(OnigCodePoint code) +{ + if (ONIGENC_IS_CODE_ASCII(code)) return 1; + else if ((code & 0xff0000) != 0) { + if (EncLen_EUCJP[(int )(code >> 16) & 0xff] == 3) + return 3; + } + else if ((code & 0xff00) != 0) { + if (EncLen_EUCJP[(int )(code >> 8) & 0xff] == 2) + return 2; + } + else if (code < 256) { + if (EncLen_EUCJP[(int )(code & 0xff)] == 1) + return 1; + } + + return ONIGERR_INVALID_CODE_POINT_VALUE; +} + +static int +code_to_mbc(OnigCodePoint code, UChar *buf) +{ + UChar *p = buf; + + if ((code & 0xff0000) != 0) { + *p++ = (UChar )(((code >> 16) & 0xff)); + *p++ = (UChar )(((code >> 8) & 0xff)); + } + else if ((code & 0xff00) != 0) + *p++ = (UChar )(((code >> 8) & 0xff)); + + *p++ = (UChar )(code & 0xff); + +#if 1 + if (enclen(ONIG_ENCODING_EUC_JP, buf) != (p - buf)) + return ONIGERR_INVALID_CODE_POINT_VALUE; +#endif + return (int )(p - buf); +} + +static int +mbc_case_fold(OnigCaseFoldType flag ARG_UNUSED, + const UChar** pp, const UChar* end ARG_UNUSED, UChar* lower) +{ + int len; + const UChar* p = *pp; + + if (ONIGENC_IS_MBC_ASCII(p)) { + *lower = ONIGENC_ASCII_CODE_TO_LOWER_CASE(*p); + (*pp)++; + return 1; + } + else { + int i; + + len = enclen(ONIG_ENCODING_EUC_JP, p); + for (i = 0; i < len; i++) { + *lower++ = *p++; + } + (*pp) += len; + return len; /* return byte length of converted char to lower */ + } +} + +static UChar* +left_adjust_char_head(const UChar* start, const UChar* s) +{ + /* In this encoding + mb-trail bytes doesn't mix with single bytes. + */ + const UChar *p; + int len; + + if (s <= start) return (UChar* )s; + p = s; + + while (!eucjp_islead(*p) && p > start) p--; + len = enclen(ONIG_ENCODING_EUC_JP, p); + if (p + len > s) return (UChar* )p; + p += len; + return (UChar* )(p + ((s - p) & ~1)); +} + +static int +is_allowed_reverse_match(const UChar* s, const UChar* end ARG_UNUSED) +{ + const UChar c = *s; + if (c <= 0x7e || c == 0x8e || c == 0x8f) + return TRUE; + else + return FALSE; +} + + +static const OnigCodePoint CR_Hiragana[] = { + 1, + 0xa4a1, 0xa4f3 +}; /* CR_Hiragana */ + +static const OnigCodePoint CR_Katakana[] = { + 3, + 0xa5a1, 0xa5f6, + 0xaaa6, 0xaaaf, + 0xaab1, 0xaadd +}; /* CR_Katakana */ + +static const OnigCodePoint* PropertyList[] = { + CR_Hiragana, + CR_Katakana +}; + +static int +property_name_to_ctype(OnigEncoding enc, UChar* p, UChar* end) +{ + struct PropertyNameCtype* pc; + int len = (int )(end - p); + char q[32]; + + if (len < sizeof(q) - 1) { + xmemcpy(q, p, (size_t )len); + q[len] = '\0'; + pc = onigenc_euc_jp_lookup_property_name(q, len); + if (pc != 0) + return pc->ctype; + } + + return ONIGERR_INVALID_CHAR_PROPERTY_NAME; +} + +static int +is_code_ctype(OnigCodePoint code, unsigned int ctype) +{ + if (ctype <= ONIGENC_MAX_STD_CTYPE) { + if (code < 128) + return ONIGENC_IS_ASCII_CODE_CTYPE(code, ctype); + else { + if (CTYPE_IS_WORD_GRAPH_PRINT(ctype)) { + return (code_to_mbclen(code) > 1 ? TRUE : FALSE); + } + } + } + else { + ctype -= (ONIGENC_MAX_STD_CTYPE + 1); + if (ctype >= (unsigned int )(sizeof(PropertyList)/sizeof(PropertyList[0]))) + return ONIGERR_TYPE_BUG; + + return onig_is_in_code_range((UChar* )PropertyList[ctype], code); + } + + return FALSE; +} + +static int +get_ctype_code_range(OnigCtype ctype, OnigCodePoint* sb_out, + const OnigCodePoint* ranges[]) +{ + if (ctype <= ONIGENC_MAX_STD_CTYPE) { + return ONIG_NO_SUPPORT_CONFIG; + } + else { + *sb_out = 0x80; + + ctype -= (ONIGENC_MAX_STD_CTYPE + 1); + if (ctype >= (OnigCtype )sizeof(PropertyList)/sizeof(PropertyList[0])) + return ONIGERR_TYPE_BUG; + + *ranges = PropertyList[ctype]; + return 0; + } +} + + +OnigEncodingType OnigEncodingEUC_JP = { + mbc_enc_len, + "EUC-JP", /* name */ + 3, /* max enc length */ + 1, /* min enc length */ + onigenc_is_mbc_newline_0x0a, + mbc_to_code, + code_to_mbclen, + code_to_mbc, + mbc_case_fold, + onigenc_ascii_apply_all_case_fold, + onigenc_ascii_get_case_fold_codes_by_str, + property_name_to_ctype, + is_code_ctype, + get_ctype_code_range, + left_adjust_char_head, + is_allowed_reverse_match, + NULL, /* init */ + NULL, /* is_initialized */ + is_valid_mbc_string, + ENC_FLAG_ASCII_COMPATIBLE|ENC_FLAG_SKIP_OFFSET_1_OR_0, + 0, 0 +}; diff --git a/vendor/oniguruma/oniguruma/src/euc_jp_prop.c b/vendor/oniguruma/oniguruma/src/euc_jp_prop.c new file mode 100644 index 0000000..cb884c4 --- /dev/null +++ b/vendor/oniguruma/oniguruma/src/euc_jp_prop.c @@ -0,0 +1,151 @@ +/* ANSI-C code produced by gperf version 3.1 */ +/* Command-line: gperf -pt -T -L ANSI-C -N onigenc_euc_jp_lookup_property_name --output-file gperf1.tmp euc_jp_prop.gperf */ +/* Computed positions: -k'1,3' */ + +#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ + && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \ + && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \ + && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \ + && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \ + && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \ + && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \ + && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \ + && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \ + && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \ + && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \ + && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \ + && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \ + && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \ + && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \ + && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \ + && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \ + && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \ + && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \ + && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \ + && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \ + && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \ + && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126)) +/* The character set is not based on ISO-646. */ +#error "gperf generated tables don't work with this execution character set. Please report a bug to ." +#endif + +#line 1 "euc_jp_prop.gperf" + +#include "regint.h" + +#define TOTAL_KEYWORDS 16 +#define MIN_WORD_LENGTH 4 +#define MAX_WORD_LENGTH 8 +#define MIN_HASH_VALUE 4 +#define MAX_HASH_VALUE 55 +/* maximum key range = 52, duplicates = 0 */ + +#ifdef __GNUC__ +__inline +#else +#ifdef __cplusplus +inline +#endif +#endif +static unsigned int +hash (register const char *str, register size_t len) +{ + static unsigned char asso_values[] = + { + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 0, 3, 10, 25, 56, + 56, 30, 0, 56, 56, 0, 20, 56, 56, 56, + 15, 56, 56, 20, 56, 30, 56, 0, 0, 56, + 56, 56, 56, 56, 56, 56, 56, 15, 56, 56, + 56, 56, 56, 25, 56, 10, 56, 56, 56, 56, + 5, 56, 0, 56, 0, 56, 5, 56, 56, 20, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56 + }; + return (unsigned int )len + asso_values[(unsigned char)str[2]] + asso_values[(unsigned char)str[0]]; +} + +struct PropertyNameCtype * +onigenc_euc_jp_lookup_property_name (register const char *str, register size_t len) +{ + static struct PropertyNameCtype wordlist[] = + { + {""}, {""}, {""}, {""}, +#line 22 "euc_jp_prop.gperf" + {"Word", 12}, +#line 11 "euc_jp_prop.gperf" + {"Alpha", 1}, + {""}, {""}, +#line 25 "euc_jp_prop.gperf" + {"Hiragana", 15}, + {""}, +#line 23 "euc_jp_prop.gperf" + {"Alnum", 13}, + {""}, {""}, +#line 26 "euc_jp_prop.gperf" + {"Katakana", 16}, + {""}, +#line 24 "euc_jp_prop.gperf" + {"ASCII", 14}, +#line 21 "euc_jp_prop.gperf" + {"XDigit", 11}, + {""}, {""}, {""}, +#line 13 "euc_jp_prop.gperf" + {"Cntrl", 3}, + {""}, {""}, +#line 12 "euc_jp_prop.gperf" + {"Blank", 2}, + {""}, +#line 18 "euc_jp_prop.gperf" + {"Punct", 8}, + {""}, {""}, {""}, {""}, +#line 17 "euc_jp_prop.gperf" + {"Print", 7}, + {""}, {""}, {""}, {""}, +#line 20 "euc_jp_prop.gperf" + {"Upper", 10}, + {""}, {""}, {""}, {""}, +#line 19 "euc_jp_prop.gperf" + {"Space", 9}, + {""}, {""}, {""}, {""}, +#line 16 "euc_jp_prop.gperf" + {"Lower", 6}, + {""}, {""}, {""}, {""}, +#line 15 "euc_jp_prop.gperf" + {"Graph", 5}, + {""}, {""}, {""}, {""}, +#line 14 "euc_jp_prop.gperf" + {"Digit", 4} + }; + + if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) + { + register unsigned int key = hash (str, len); + + if (key <= MAX_HASH_VALUE) + { + register const char *s = wordlist[key].name; + + if (*str == *s && !strcmp (str + 1, s + 1)) + return &wordlist[key]; + } + } + return 0; +} diff --git a/vendor/oniguruma/oniguruma/src/euc_jp_prop.gperf b/vendor/oniguruma/oniguruma/src/euc_jp_prop.gperf new file mode 100644 index 0000000..842b61b --- /dev/null +++ b/vendor/oniguruma/oniguruma/src/euc_jp_prop.gperf @@ -0,0 +1,26 @@ +%{ +#include "regint.h" +%} + +struct PropertyNameCtype { + char *name; + int ctype; +}; + +%% +Alpha, 1 +Blank, 2 +Cntrl, 3 +Digit, 4 +Graph, 5 +Lower, 6 +Print, 7 +Punct, 8 +Space, 9 +Upper, 10 +XDigit, 11 +Word, 12 +Alnum, 13 +ASCII, 14 +Hiragana, 15 +Katakana, 16 diff --git a/vendor/onig/enc/euc_kr.c b/vendor/oniguruma/oniguruma/src/euc_kr.c similarity index 51% rename from vendor/onig/enc/euc_kr.c rename to vendor/oniguruma/oniguruma/src/euc_kr.c index 21d6ab4..b0e9fbf 100644 --- a/vendor/onig/enc/euc_kr.c +++ b/vendor/oniguruma/oniguruma/src/euc_kr.c @@ -2,7 +2,7 @@ euc_kr.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2007 K.Kosako + * Copyright (c) 2002-2020 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -48,104 +48,83 @@ static const int EncLen_EUCKR[] = { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 }; -typedef enum { FAILURE = -2, ACCEPT = -1, S0 = 0, S1 } state_t; -#define A ACCEPT -#define F FAILURE -static const signed char trans[][0x100] = { - { /* S0 0 1 2 3 4 5 6 7 8 9 a b c d e f */ - /* 0 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 1 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 2 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 3 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 4 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 5 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 6 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 7 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* a */ F, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* b */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* c */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* d */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* e */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* f */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, F - }, - { /* S1 0 1 2 3 4 5 6 7 8 9 a b c d e f */ - /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* a */ F, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* b */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* c */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* d */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* e */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* f */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, F +static int +euckr_mbc_enc_len(const UChar* p) +{ + return EncLen_EUCKR[*p]; +} + +static int +euckr_code_to_mbclen(OnigCodePoint code) +{ + if ((code & (~0xffff)) != 0) return ONIGERR_INVALID_CODE_POINT_VALUE; + + if ((code & 0xff00) != 0) { + if (EncLen_EUCKR[(int )(code >> 8) & 0xff] == 2) + return 2; + } + else { + if (EncLen_EUCKR[(int )(code & 0xff)] == 1) + return 1; } -}; -#undef A -#undef F + + return ONIGERR_INVALID_CODE_POINT_VALUE; +} static int -euckr_mbc_enc_len(const UChar* p, const UChar* e, OnigEncoding enc ARG_UNUSED) +is_valid_mbc_string(const UChar* p, const UChar* end) { - int firstbyte = *p++; - state_t s = trans[0][firstbyte]; -#define RETURN(n) \ - return s == ACCEPT ? ONIGENC_CONSTRUCT_MBCLEN_CHARFOUND(n) : \ - ONIGENC_CONSTRUCT_MBCLEN_INVALID() - if (s < 0) RETURN(1); - if (p == e) return ONIGENC_CONSTRUCT_MBCLEN_NEEDMORE(EncLen_EUCKR[firstbyte]-1); - s = trans[s][*p++]; - RETURN(2); -#undef RETURN + while (p < end) { + if (*p < 0x80) { + p++; + } + else if (*p < 0xa1) { + return FALSE; + } + else if (*p < 0xff) { + p++; + if (p >= end) return FALSE; + if (*p < 0xa1 || *p == 0xff) + return FALSE; + p++; + } + else + return FALSE; + } + + return TRUE; } static OnigCodePoint -euckr_mbc_to_code(const UChar* p, const UChar* end, OnigEncoding enc) +euckr_mbc_to_code(const UChar* p, const UChar* end) { - return onigenc_mbn_mbc_to_code(enc, p, end); + return onigenc_mbn_mbc_to_code(ONIG_ENCODING_EUC_KR, p, end); } static int -euckr_code_to_mbc(OnigCodePoint code, UChar *buf, OnigEncoding enc) +euckr_code_to_mbc(OnigCodePoint code, UChar *buf) { - return onigenc_mb2_code_to_mbc(enc, code, buf); + return onigenc_mb2_code_to_mbc(ONIG_ENCODING_EUC_KR, code, buf); } static int euckr_mbc_case_fold(OnigCaseFoldType flag, const UChar** pp, const UChar* end, - UChar* lower, OnigEncoding enc) + UChar* lower) { - return onigenc_mbn_mbc_case_fold(enc, flag, + return onigenc_mbn_mbc_case_fold(ONIG_ENCODING_EUC_KR, flag, pp, end, lower); } -#if 0 -static int -euckr_is_mbc_ambiguous(OnigCaseFoldType flag, - const UChar** pp, const UChar* end, OnigEncoding enc) -{ - return onigenc_mbn_is_mbc_ambiguous(enc, flag, pp, end); -} -#endif - static int -euckr_is_code_ctype(OnigCodePoint code, unsigned int ctype, OnigEncoding enc) +euckr_is_code_ctype(OnigCodePoint code, unsigned int ctype) { - return onigenc_mb2_is_code_ctype(enc, code, ctype); + return onigenc_mb2_is_code_ctype(ONIG_ENCODING_EUC_KR, code, ctype); } #define euckr_islead(c) ((c) < 0xa1 || (c) == 0xff) static UChar* -euckr_left_adjust_char_head(const UChar* start, const UChar* s, const UChar* end, OnigEncoding enc) +euckr_left_adjust_char_head(const UChar* start, const UChar* s) { /* Assumed in this encoding, mb-trail bytes don't mix with single bytes. @@ -157,28 +136,28 @@ euckr_left_adjust_char_head(const UChar* start, const UChar* s, const UChar* end p = s; while (!euckr_islead(*p) && p > start) p--; - len = enclen(enc, p, end); + len = enclen(ONIG_ENCODING_EUC_KR, p); if (p + len > s) return (UChar* )p; p += len; return (UChar* )(p + ((s - p) & ~1)); } static int -euckr_is_allowed_reverse_match(const UChar* s, const UChar* end ARG_UNUSED, OnigEncoding enc ARG_UNUSED) +euckr_is_allowed_reverse_match(const UChar* s, const UChar* end ARG_UNUSED) { const UChar c = *s; if (c <= 0x7e) return TRUE; else return FALSE; } -OnigEncodingDefine(euc_kr, EUC_KR) = { +OnigEncodingType OnigEncodingEUC_KR = { euckr_mbc_enc_len, "EUC-KR", /* name */ 2, /* max enc length */ 1, /* min enc length */ onigenc_is_mbc_newline_0x0a, euckr_mbc_to_code, - onigenc_mb2_code_to_mbclen, + euckr_code_to_mbclen, euckr_code_to_mbc, euckr_mbc_case_fold, onigenc_ascii_apply_all_case_fold, @@ -188,22 +167,22 @@ OnigEncodingDefine(euc_kr, EUC_KR) = { onigenc_not_support_get_ctype_code_range, euckr_left_adjust_char_head, euckr_is_allowed_reverse_match, - onigenc_ascii_only_case_map, - 0, - ONIGENC_FLAG_NONE, + NULL, /* init */ + NULL, /* is_initialized */ + is_valid_mbc_string, + ENC_FLAG_ASCII_COMPATIBLE|ENC_FLAG_SKIP_OFFSET_1_OR_0, + 0, 0 }; -ENC_ALIAS("eucKR", "EUC-KR") -#ifndef RUBY /* Same with OnigEncodingEUC_KR except the name */ -OnigEncodingDefine(euc_cn, EUC_CN) = { +OnigEncodingType OnigEncodingEUC_CN = { euckr_mbc_enc_len, "EUC-CN", /* name */ 2, /* max enc length */ 1, /* min enc length */ onigenc_is_mbc_newline_0x0a, euckr_mbc_to_code, - onigenc_mb2_code_to_mbclen, + euckr_code_to_mbclen, euckr_code_to_mbc, euckr_mbc_case_fold, onigenc_ascii_apply_all_case_fold, @@ -213,8 +192,9 @@ OnigEncodingDefine(euc_cn, EUC_CN) = { onigenc_not_support_get_ctype_code_range, euckr_left_adjust_char_head, euckr_is_allowed_reverse_match, - onigenc_ascii_only_case_map, - 0, - ONIGENC_FLAG_NONE, + NULL, /* init */ + NULL, /* is_initialized */ + is_valid_mbc_string, + ENC_FLAG_ASCII_COMPATIBLE|ENC_FLAG_SKIP_OFFSET_1_OR_0, + 0, 0 }; -#endif /* RUBY */ diff --git a/vendor/oniguruma/oniguruma/src/euc_tw.c b/vendor/oniguruma/oniguruma/src/euc_tw.c new file mode 100644 index 0000000..99dc5ec --- /dev/null +++ b/vendor/oniguruma/oniguruma/src/euc_tw.c @@ -0,0 +1,194 @@ +/********************************************************************** + euc_tw.c - Oniguruma (regular expression library) +**********************************************************************/ +/*- + * Copyright (c) 2002-2020 K.Kosako + * 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. + */ + +#include "regenc.h" + +static const int EncLen_EUCTW[] = { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 +}; + +static int +euctw_mbc_enc_len(const UChar* p) +{ + return EncLen_EUCTW[*p]; +} + +static int +euctw_code_to_mbclen(OnigCodePoint code) +{ + if ((code & 0xff000000) != 0) { + if (EncLen_EUCTW[(int )(code >> 24) & 0xff] == 4) + return 4; + } + else if ((code & 0xff0000) != 0) + return ONIGERR_INVALID_CODE_POINT_VALUE; + else if ((code & 0xff00) != 0) { + if (EncLen_EUCTW[(int )(code >> 8) & 0xff] == 2) + return 2; + } + else { + if (EncLen_EUCTW[(int )(code & 0xff)] == 1) + return 1; + } + + return ONIGERR_INVALID_CODE_POINT_VALUE; +} + +static int +is_valid_mbc_string(const UChar* p, const UChar* end) +{ + while (p < end) { + if (*p < 0x80) { + p++; + } + else if (*p < 0xa1) { + if (*p == 0x8e) { + p++; + if (p >= end) return FALSE; + if (*p < 0xa1 || *p > 0xb0) return FALSE; + p++; + if (p >= end) return FALSE; + if (*p < 0xa1 || *p == 0xff) + return FALSE; + p++; + if (p >= end) return FALSE; + if (*p < 0xa1 || *p == 0xff) + return FALSE; + p++; + } + else + return FALSE; + } + else if (*p < 0xff) { + p++; + if (p >= end) return FALSE; + if (*p < 0xa1 || *p == 0xff) + return FALSE; + p++; + } + else + return FALSE; + } + + return TRUE; +} + +static OnigCodePoint +euctw_mbc_to_code(const UChar* p, const UChar* end) +{ + return onigenc_mbn_mbc_to_code(ONIG_ENCODING_EUC_TW, p, end); +} + +static int +euctw_code_to_mbc(OnigCodePoint code, UChar *buf) +{ + return onigenc_mb4_code_to_mbc(ONIG_ENCODING_EUC_TW, code, buf); +} + +static int +euctw_mbc_case_fold(OnigCaseFoldType flag, const UChar** pp, const UChar* end, + UChar* lower) +{ + return onigenc_mbn_mbc_case_fold(ONIG_ENCODING_EUC_TW, flag, + pp, end, lower); +} + +static int +euctw_is_code_ctype(OnigCodePoint code, unsigned int ctype) +{ + return onigenc_mb4_is_code_ctype(ONIG_ENCODING_EUC_TW, code, ctype); +} + +#define euctw_islead(c) ((UChar )((c) - 0xa1) > 0xfe - 0xa1) + +static UChar* +euctw_left_adjust_char_head(const UChar* start, const UChar* s) +{ + /* Assumed in this encoding, + mb-trail bytes don't mix with single bytes. + */ + const UChar *p; + int len; + + if (s <= start) return (UChar* )s; + p = s; + + while (!euctw_islead(*p) && p > start) p--; + len = enclen(ONIG_ENCODING_EUC_TW, p); + if (p + len > s) return (UChar* )p; + p += len; + return (UChar* )(p + ((s - p) & ~1)); +} + +static int +euctw_is_allowed_reverse_match(const UChar* s, const UChar* end ARG_UNUSED) +{ + const UChar c = *s; + if (c <= 0x7e) return TRUE; + else return FALSE; +} + +OnigEncodingType OnigEncodingEUC_TW = { + euctw_mbc_enc_len, + "EUC-TW", /* name */ + 4, /* max enc length */ + 1, /* min enc length */ + onigenc_is_mbc_newline_0x0a, + euctw_mbc_to_code, + euctw_code_to_mbclen, + euctw_code_to_mbc, + euctw_mbc_case_fold, + onigenc_ascii_apply_all_case_fold, + onigenc_ascii_get_case_fold_codes_by_str, + onigenc_minimum_property_name_to_ctype, + euctw_is_code_ctype, + onigenc_not_support_get_ctype_code_range, + euctw_left_adjust_char_head, + euctw_is_allowed_reverse_match, + NULL, /* init */ + NULL, /* is_initialized */ + is_valid_mbc_string, + ENC_FLAG_ASCII_COMPATIBLE|ENC_FLAG_SKIP_OFFSET_1, + 0, 0 +}; diff --git a/vendor/onig/enc/gb18030.c b/vendor/oniguruma/oniguruma/src/gb18030.c similarity index 53% rename from vendor/onig/enc/gb18030.c rename to vendor/oniguruma/oniguruma/src/gb18030.c index 63d2e63..3dcfca6 100644 --- a/vendor/onig/enc/gb18030.c +++ b/vendor/oniguruma/oniguruma/src/gb18030.c @@ -2,8 +2,8 @@ gb18030.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2005-2007 KUBO Takehiro - * K.Kosako + * Copyright (c) 2005-2023 KUBO Takehiro + * K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -30,10 +30,23 @@ #include "regenc.h" -#if 1 -#define DEBUG_GB18030(arg) +/* #define DEBUG_GB18030 */ + +#ifndef DEBUG_GB18030 + +#define DEBUG_OUT(arg) + #else -#define DEBUG_GB18030(arg) printf arg + +#ifndef NEED_TO_INCLUDE_STDIO +#define NEED_TO_INCLUDE_STDIO +#endif + +/* for printf() */ +#include "regint.h" + +#define DEBUG_OUT(arg) printf arg + #endif enum { @@ -62,156 +75,111 @@ static const char GB18030_MAP[] = { CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, C1 }; -typedef enum { FAILURE = -2, ACCEPT = -1, S0 = 0, S1, S2, S3 } state_t; -#define A ACCEPT -#define F FAILURE -static const signed char trans[][0x100] = { - { /* S0 0 1 2 3 4 5 6 7 8 9 a b c d e f */ - /* 0 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 1 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 2 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 3 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 4 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 5 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 6 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 7 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 8 */ F, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* 9 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* a */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* b */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* c */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* d */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* e */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* f */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, F - }, - { /* S1 0 1 2 3 4 5 6 7 8 9 a b c d e f */ - /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 3 */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, F, F, F, F, F, F, - /* 4 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 5 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 6 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 7 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, F, - /* 8 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* 9 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* a */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* b */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* c */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* d */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* e */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, - /* f */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, F - }, - { /* S2 0 1 2 3 4 5 6 7 8 9 a b c d e f */ - /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 8 */ F, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - /* 9 */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - /* a */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - /* b */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - /* c */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - /* d */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - /* e */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - /* f */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, F - }, - { /* S3 0 1 2 3 4 5 6 7 8 9 a b c d e f */ - /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 3 */ A, A, A, A, A, A, A, A, A, A, F, F, F, F, F, F, - /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* a */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* b */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* c */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* d */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* e */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - /* f */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F - } -}; -#undef A -#undef F - static int -gb18030_mbc_enc_len(const UChar* p, const UChar* e, OnigEncoding enc ARG_UNUSED) +gb18030_mbc_enc_len(const UChar* p) { - int firstbyte = *p++; - state_t s = trans[0][firstbyte]; -#define RETURN(n) \ - return s == ACCEPT ? ONIGENC_CONSTRUCT_MBCLEN_CHARFOUND(n) : \ - ONIGENC_CONSTRUCT_MBCLEN_INVALID() - if (s < 0) RETURN(1); - if (p == e) return ONIGENC_CONSTRUCT_MBCLEN_NEEDMORE(2-1); - s = trans[s][*p++]; - if (s < 0) RETURN(2); - if (p == e) return ONIGENC_CONSTRUCT_MBCLEN_NEEDMORE(4-2); - s = trans[s][*p++]; - if (s < 0) RETURN(3); - if (p == e) return ONIGENC_CONSTRUCT_MBCLEN_NEEDMORE(4-3); - s = trans[s][*p++]; - RETURN(4); -#undef RETURN + if (GB18030_MAP[*p] != CM) + return 1; + + p++; + if (GB18030_MAP[*p] == C4) + return 4; + + return 2; } -static OnigCodePoint -gb18030_mbc_to_code(const UChar* p, const UChar* end, OnigEncoding enc) +static int +gb18030_code_to_mbclen(OnigCodePoint code) { - int c, i, len; - OnigCodePoint n; + if ((code & 0xff000000) != 0) { + if (GB18030_MAP[(int )(code >> 24) & 0xff] == CM) + if (GB18030_MAP[(int )(code >> 16) & 0xff] == C4) + return 4; + } + else if ((code & 0xff0000) != 0) return ONIGERR_INVALID_CODE_POINT_VALUE; + else if ((code & 0xff00) != 0) { + if (GB18030_MAP[(int )(code >> 8) & 0xff] == CM) { + char c = GB18030_MAP[(int )code & 0xff]; + if (c == CM || c == C2) + return 2; + } + } + else { + if (GB18030_MAP[(int )(code & 0xff)] != CM) + return 1; + } - len = enclen(enc, p, end); - n = (OnigCodePoint )(*p++); - if (len == 1) return n; + return ONIGERR_INVALID_CODE_POINT_VALUE; +} - for (i = 1; i < len; i++) { - if (p >= end) break; - c = *p++; - n <<= 8; n += c; +static int +is_valid_mbc_string(const UChar* p, const UChar* end) +{ + while (p < end) { + if (*p < 0x80) { + p++; + } + else if (*p == 0x80 || *p == 0xff) { + return FALSE; + } + else { + p++; + if (p >= end) return FALSE; + if (*p < 0x40) { + if (*p < 0x30 || *p > 0x39) + return FALSE; + + p++; + if (p >= end) return FALSE; + if (*p < 0x81 || *p == 0xff) return FALSE; + + p++; + if (p >= end) return FALSE; + if (*p < 0x30 || *p > 0x39) + return FALSE; + + p++; + } + else if (*p == 0x7f || *p == 0xff) { + return FALSE; + } + else { + p++; + } + } } - return n; + + return TRUE; } -static int -gb18030_code_to_mbc(OnigCodePoint code, UChar *buf, OnigEncoding enc) +static OnigCodePoint +gb18030_mbc_to_code(const UChar* p, const UChar* end) { - return onigenc_mb4_code_to_mbc(enc, code, buf); + return onigenc_mbn_mbc_to_code(ONIG_ENCODING_GB18030, p, end); } static int -gb18030_mbc_case_fold(OnigCaseFoldType flag, const UChar** pp, const UChar* end, - UChar* lower, OnigEncoding enc) +gb18030_code_to_mbc(OnigCodePoint code, UChar *buf) { - return onigenc_mbn_mbc_case_fold(enc, flag, - pp, end, lower); + return onigenc_mb4_code_to_mbc(ONIG_ENCODING_GB18030, code, buf); } -#if 0 static int -gb18030_is_mbc_ambiguous(OnigCaseFoldType flag, - const UChar** pp, const UChar* end, OnigEncoding enc) +gb18030_mbc_case_fold(OnigCaseFoldType flag, const UChar** pp, const UChar* end, + UChar* lower) { - return onigenc_mbn_is_mbc_ambiguous(enc, flag, pp, end); + return onigenc_mbn_mbc_case_fold(ONIG_ENCODING_GB18030, flag, + pp, end, lower); } -#endif static int -gb18030_is_code_ctype(OnigCodePoint code, unsigned int ctype, OnigEncoding enc) +gb18030_is_code_ctype(OnigCodePoint code, unsigned int ctype) { - return onigenc_mb4_is_code_ctype(enc, code, ctype); + return onigenc_mb4_is_code_ctype(ONIG_ENCODING_GB18030, code, ctype); } enum state { - S_START, + S_START = 0, S_one_C2, S_one_C4, S_one_CM, @@ -241,32 +209,60 @@ enum state { S_even_CM_odd_C4CM, S_odd_CM_odd_C4CM, S_even_CM_even_C4CM, - S_odd_CM_even_C4CM + S_odd_CM_even_C4CM, }; +#ifdef DEBUG_GB18030 +static char* StateNames[] = { + "S_START", + "S_one_C2", + "S_one_C4", + "S_one_CM", + "S_odd_CM_one_CX", + "S_even_CM_one_CX", + "S_one_CMC4", + "S_odd_CMC4", + "S_one_C4_odd_CMC4", + "S_even_CMC4", + "S_one_C4_even_CMC4", + "S_odd_CM_odd_CMC4", + "S_even_CM_odd_CMC4", + "S_odd_CM_even_CMC4", + "S_even_CM_even_CMC4", + "S_odd_C4CM", + "S_one_CM_odd_C4CM", + "S_even_C4CM", + "S_one_CM_even_C4CM", + "S_even_CM_odd_C4CM", + "S_odd_CM_odd_C4CM", + "S_even_CM_even_C4CM", + "S_odd_CM_even_C4CM" +}; +#endif + static UChar* -gb18030_left_adjust_char_head(const UChar* start, const UChar* s, const UChar* end, OnigEncoding enc) +gb18030_left_adjust_char_head(const UChar* start, const UChar* s) { const UChar *p; enum state state = S_START; - DEBUG_GB18030(("----------------\n")); + DEBUG_OUT(("----------------\n")); for (p = s; p >= start; p--) { - DEBUG_GB18030(("state %d --(%02x)-->\n", state, *p)); + DEBUG_OUT(("%5d: state %-19s (0x%02x)->\n", (int )(p - start), StateNames[state], *p)); switch (state) { case S_START: switch (GB18030_MAP[*p]) { case C1: - return (UChar *)s; + return (UChar *)s; case C2: - state = S_one_C2; /* C2 */ - break; + state = S_one_C2; /* C2 */ + break; case C4: - state = S_one_C4; /* C4 */ - break; + state = S_one_C4; /* C4 */ + break; case CM: - state = S_one_CM; /* CM */ - break; + state = S_one_CM; /* CM */ + break; } break; case S_one_C2: /* C2 */ @@ -274,10 +270,10 @@ gb18030_left_adjust_char_head(const UChar* start, const UChar* s, const UChar* e case C1: case C2: case C4: - return (UChar *)s; + return (UChar *)s; case CM: - state = S_odd_CM_one_CX; /* CM C2 */ - break; + state = S_odd_CM_one_CX; /* CM C2 */ + break; } break; case S_one_C4: /* C4 */ @@ -285,23 +281,23 @@ gb18030_left_adjust_char_head(const UChar* start, const UChar* s, const UChar* e case C1: case C2: case C4: - return (UChar *)s; + return (UChar *)s; case CM: - state = S_one_CMC4; - break; + state = S_one_CMC4; + break; } break; case S_one_CM: /* CM */ switch (GB18030_MAP[*p]) { case C1: case C2: - return (UChar *)s; + return (UChar *)s; case C4: - state = S_odd_C4CM; - break; + state = S_odd_C4CM; + break; case CM: - state = S_odd_CM_one_CX; /* CM CM */ - break; + state = S_odd_CM_one_CX; /* CM CM */ + break; } break; @@ -310,10 +306,10 @@ gb18030_left_adjust_char_head(const UChar* start, const UChar* s, const UChar* e case C1: case C2: case C4: - return (UChar *)(s - 1); + return (UChar *)(s - 1); case CM: - state = S_even_CM_one_CX; - break; + state = S_even_CM_one_CX; + break; } break; case S_even_CM_one_CX: /* CM CM C2 */ /* CM CM CM */ /* CM CM C4 */ @@ -321,10 +317,10 @@ gb18030_left_adjust_char_head(const UChar* start, const UChar* s, const UChar* e case C1: case C2: case C4: - return (UChar *)s; + return (UChar *)s; case CM: - state = S_odd_CM_one_CX; - break; + state = S_odd_CM_one_CX; + break; } break; @@ -332,26 +328,26 @@ gb18030_left_adjust_char_head(const UChar* start, const UChar* s, const UChar* e switch (GB18030_MAP[*p]) { case C1: case C2: - return (UChar *)(s - 1); + return (UChar *)(s - 1); case C4: - state = S_one_C4_odd_CMC4; /* C4 CM C4 */ - break; + state = S_one_C4_odd_CMC4; /* C4 CM C4 */ + break; case CM: - state = S_even_CM_one_CX; /* CM CM C4 */ - break; + state = S_even_CM_one_CX; /* CM CM C4 */ + break; } break; case S_odd_CMC4: /* CM C4 CM C4 CM C4 */ switch (GB18030_MAP[*p]) { case C1: case C2: - return (UChar *)(s - 1); + return (UChar *)(s - 1); case C4: - state = S_one_C4_odd_CMC4; - break; + state = S_one_C4_odd_CMC4; + break; case CM: - state = S_odd_CM_odd_CMC4; - break; + state = S_odd_CM_odd_CMC4; + break; } break; case S_one_C4_odd_CMC4: /* C4 CM C4 */ @@ -359,23 +355,23 @@ gb18030_left_adjust_char_head(const UChar* start, const UChar* s, const UChar* e case C1: case C2: case C4: - return (UChar *)(s - 1); + return (UChar *)(s - 1); case CM: - state = S_even_CMC4; /* CM C4 CM C4 */ - break; + state = S_even_CMC4; /* CM C4 CM C4 */ + break; } break; case S_even_CMC4: /* CM C4 CM C4 */ switch (GB18030_MAP[*p]) { case C1: case C2: - return (UChar *)(s - 3); + return (UChar *)(s - 3); case C4: - state = S_one_C4_even_CMC4; - break; + state = S_one_C4_even_CMC4; + break; case CM: - state = S_odd_CM_even_CMC4; - break; + state = S_odd_CM_even_CMC4; + break; } break; case S_one_C4_even_CMC4: /* C4 CM C4 CM C4 */ @@ -383,10 +379,10 @@ gb18030_left_adjust_char_head(const UChar* start, const UChar* s, const UChar* e case C1: case C2: case C4: - return (UChar *)(s - 3); + return (UChar *)(s - 3); case CM: - state = S_odd_CMC4; - break; + state = S_odd_CMC4; + break; } break; @@ -395,10 +391,10 @@ gb18030_left_adjust_char_head(const UChar* start, const UChar* s, const UChar* e case C1: case C2: case C4: - return (UChar *)(s - 3); + return (UChar *)(s - 3); case CM: - state = S_even_CM_odd_CMC4; - break; + state = S_even_CM_odd_CMC4; + break; } break; case S_even_CM_odd_CMC4: /* CM CM CM C4 CM C4 CM C4 */ @@ -406,10 +402,10 @@ gb18030_left_adjust_char_head(const UChar* start, const UChar* s, const UChar* e case C1: case C2: case C4: - return (UChar *)(s - 1); + return (UChar *)(s - 1); case CM: - state = S_odd_CM_odd_CMC4; - break; + state = S_odd_CM_odd_CMC4; + break; } break; @@ -418,10 +414,10 @@ gb18030_left_adjust_char_head(const UChar* start, const UChar* s, const UChar* e case C1: case C2: case C4: - return (UChar *)(s - 1); + return (UChar *)(s - 1); case CM: - state = S_even_CM_even_CMC4; - break; + state = S_even_CM_even_CMC4; + break; } break; case S_even_CM_even_CMC4: /* CM CM CM C4 CM C4 */ @@ -429,10 +425,10 @@ gb18030_left_adjust_char_head(const UChar* start, const UChar* s, const UChar* e case C1: case C2: case C4: - return (UChar *)(s - 3); + return (UChar *)(s - 3); case CM: - state = S_odd_CM_even_CMC4; - break; + state = S_odd_CM_even_CMC4; + break; } break; @@ -441,23 +437,23 @@ gb18030_left_adjust_char_head(const UChar* start, const UChar* s, const UChar* e case C1: case C2: case C4: - return (UChar *)s; + return (UChar *)s; case CM: - state = S_one_CM_odd_C4CM; /* CM C4 CM */ - break; + state = S_one_CM_odd_C4CM; /* CM C4 CM */ + break; } break; case S_one_CM_odd_C4CM: /* CM C4 CM */ /* CM C4 CM C4 CM C4 CM */ switch (GB18030_MAP[*p]) { case C1: case C2: - return (UChar *)(s - 2); /* |CM C4 CM */ + return (UChar *)(s - 2); /* |CM C4 CM */ case C4: - state = S_even_C4CM; - break; + state = S_even_C4CM; + break; case CM: - state = S_even_CM_odd_C4CM; - break; + state = S_even_CM_odd_C4CM; + break; } break; case S_even_C4CM: /* C4 CM C4 CM */ @@ -465,23 +461,23 @@ gb18030_left_adjust_char_head(const UChar* start, const UChar* s, const UChar* e case C1: case C2: case C4: - return (UChar *)(s - 2); /* C4|CM C4 CM */ + return (UChar *)(s - 2); /* C4|CM C4 CM */ case CM: - state = S_one_CM_even_C4CM; - break; + state = S_one_CM_even_C4CM; + break; } break; case S_one_CM_even_C4CM: /* CM C4 CM C4 CM */ switch (GB18030_MAP[*p]) { case C1: case C2: - return (UChar *)(s - 0); /*|CM C4 CM C4|CM */ + return (UChar *)(s - 0); /*|CM C4 CM C4|CM */ case C4: - state = S_odd_C4CM; - break; + state = S_odd_C4CM; + break; case CM: - state = S_even_CM_even_C4CM; - break; + state = S_even_CM_even_C4CM; + break; } break; @@ -490,10 +486,10 @@ gb18030_left_adjust_char_head(const UChar* start, const UChar* s, const UChar* e case C1: case C2: case C4: - return (UChar *)(s - 0); /* |CM CM|C4|CM */ + return (UChar *)(s - 0); /* |CM CM|C4|CM */ case CM: - state = S_odd_CM_odd_C4CM; - break; + state = S_odd_CM_odd_C4CM; + break; } break; case S_odd_CM_odd_C4CM: /* CM CM CM C4 CM */ @@ -501,10 +497,10 @@ gb18030_left_adjust_char_head(const UChar* start, const UChar* s, const UChar* e case C1: case C2: case C4: - return (UChar *)(s - 2); /* |CM CM|CM C4 CM */ + return (UChar *)(s - 2); /* |CM CM|CM C4 CM */ case CM: - state = S_even_CM_odd_C4CM; - break; + state = S_even_CM_odd_C4CM; + break; } break; @@ -513,10 +509,10 @@ gb18030_left_adjust_char_head(const UChar* start, const UChar* s, const UChar* e case C1: case C2: case C4: - return (UChar *)(s - 2); /* |CM CM|C4|CM C4 CM */ + return (UChar *)(s - 2); /* |CM CM|C4|CM C4 CM */ case CM: - state = S_odd_CM_even_C4CM; - break; + state = S_odd_CM_even_C4CM; + break; } break; case S_odd_CM_even_C4CM: /* CM CM CM C4 CM C4 CM */ @@ -524,16 +520,16 @@ gb18030_left_adjust_char_head(const UChar* start, const UChar* s, const UChar* e case C1: case C2: case C4: - return (UChar *)(s - 0); /* |CM CM|CM C4 CM C4|CM */ + return (UChar *)(s - 0); /* |CM CM|CM C4 CM C4|CM */ case CM: - state = S_even_CM_even_C4CM; - break; + state = S_even_CM_even_C4CM; + break; } break; } } - DEBUG_GB18030(("state %d\n", state)); + DEBUG_OUT(("state %-19s\n", StateNames[state])); switch (state) { case S_START: return (UChar *)(s - 0); case S_one_C2: return (UChar *)(s - 0); @@ -570,24 +566,19 @@ gb18030_left_adjust_char_head(const UChar* start, const UChar* s, const UChar* e } static int -gb18030_is_allowed_reverse_match(const UChar* s, const UChar* end ARG_UNUSED, OnigEncoding enc ARG_UNUSED) +gb18030_is_allowed_reverse_match(const UChar* s, const UChar* end ARG_UNUSED) { return GB18030_MAP[*s] == C1 ? TRUE : FALSE; } -/* - * Name: GB18030 - * MIBenum: 114 - * Link: http://www.iana.org/assignments/charset-reg/GB18030 - */ -OnigEncodingDefine(gb18030, GB18030) = { +OnigEncodingType OnigEncodingGB18030 = { gb18030_mbc_enc_len, "GB18030", /* name */ 4, /* max enc length */ 1, /* min enc length */ onigenc_is_mbc_newline_0x0a, gb18030_mbc_to_code, - onigenc_mb4_code_to_mbclen, + gb18030_code_to_mbclen, gb18030_code_to_mbc, gb18030_mbc_case_fold, onigenc_ascii_apply_all_case_fold, @@ -597,7 +588,9 @@ OnigEncodingDefine(gb18030, GB18030) = { onigenc_not_support_get_ctype_code_range, gb18030_left_adjust_char_head, gb18030_is_allowed_reverse_match, - onigenc_ascii_only_case_map, - 0, - ONIGENC_FLAG_NONE, + NULL, /* init */ + NULL, /* is_initialized */ + is_valid_mbc_string, + ENC_FLAG_ASCII_COMPATIBLE|ENC_FLAG_SKIP_OFFSET_1, + 0, 0 }; diff --git a/vendor/oniguruma/oniguruma/src/gperf_fold_key_conv.py b/vendor/oniguruma/oniguruma/src/gperf_fold_key_conv.py new file mode 100755 index 0000000..d943c3e --- /dev/null +++ b/vendor/oniguruma/oniguruma/src/gperf_fold_key_conv.py @@ -0,0 +1,71 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# gperf_fold_key_conv.py +# Copyright (c) 2016-2023 K.Kosako + +import sys +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+size_t\s+len\s*\)') +REG_STR_AT = re.compile('str\[(\d+)\]') +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+size_t\s+len\)') +REG_ENTRY = re.compile('\{".*?",\s*(-?\d+)\s*\}') +REG_IF_LEN = re.compile('\s*if\s*\(\s*len\s*<=\s*MAX_WORD_LENGTH.+') +REG_GET_HASH = re.compile('(?:register\s+)?(?:unsigned\s+)?int\s+key\s*=\s*hash\s*\(str,\s*len\);') +REG_GET_CODE = re.compile('(?:register\s+)?const\s+char\s*\*\s*s\s*=\s*wordlist\[key\]\.name;') +REG_CODE_CHECK = re.compile('if\s*\(\*str\s*==\s*\*s\s*&&\s*!strncmp.+\)') +REG_RETURN_WL = re.compile('return\s+&wordlist\[key\];') +REG_RETURN_0 = re.compile('return 0;') + +def parse_line(s, key_len): + s = s.rstrip() + + r = re.sub(REG_LINE_GPERF, '', s) + if r != s: return r + r = re.sub(REG_HASH_FUNC, 'hash(OnigCodePoint codes[])', s) + if r != s: return r + r = re.sub(REG_STR_AT, 'onig_codes_byte_at(codes, \\1)', s) + if r != s: return r + r = re.sub(REG_RETURN_TYPE, 'int', s) + if r != s: return r + r = re.sub(REG_FOLD_KEY, 'unicode_fold\\1_key(OnigCodePoint codes[])', s) + if r != s: return r + r = re.sub(REG_ENTRY, '\\1', s) + if r != s: return r + r = re.sub(REG_IF_LEN, '', s) + if r != s: return r + r = re.sub(REG_GET_HASH, 'int key = hash(codes);', s) + if r != s: return r + r = re.sub(REG_GET_CODE, 'int index = wordlist[key];', s) + if r != s: return r + r = re.sub(REG_CODE_CHECK, + 'if (index >= 0 && onig_codes_cmp(codes, OnigUnicodeFolds%d + index, %d) == 0)' % (key_len, key_len), s) + if r != s: return r + + r = re.sub(REG_RETURN_WL, 'return index;', s) + if r != s: return r + r = re.sub(REG_RETURN_0, 'return -1;', s) + if r != s: return r + + return s + +def parse_file(f, key_len): + print("/* This file was converted by gperf_fold_key_conv.py\n from gperf output file. */") + + while True: + line = f.readline() + if not line: + break + + s = parse_line(line, key_len) + print(s) + + +# main +argv = sys.argv +argc = len(argv) + +key_len = int(argv[1]) +parse_file(sys.stdin, key_len) diff --git a/vendor/oniguruma/oniguruma/src/gperf_unfold_key_conv.py b/vendor/oniguruma/oniguruma/src/gperf_unfold_key_conv.py new file mode 100755 index 0000000..deda85d --- /dev/null +++ b/vendor/oniguruma/oniguruma/src/gperf_unfold_key_conv.py @@ -0,0 +1,57 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# gperf_unfold_key_conv.py +# Copyright (c) 2016-2023 K.Kosako + +import sys +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+size_t\s+len\s*\)') +REG_STR_AT = re.compile('str\[(\d+)\]') +REG_UNFOLD_KEY = re.compile('onigenc_unicode_unfold_key\s*\(register\s+const\s+char\s*\*\s*str,\s*register\s+size_t\s+len\)') +REG_ENTRY = re.compile('\{".+?",\s*/\*(.+?)\*/\s*(-?\d+),\s*(\d)\}') +REG_EMPTY_ENTRY = re.compile('\{"",\s*(-?\d+),\s*(\d)\}') +REG_IF_LEN = re.compile('\s*if\s*\(\s*len\s*<=\s*MAX_WORD_LENGTH.+') +REG_GET_HASH = re.compile('(?:register\s+)?(?:unsigned\s+)?int\s+key\s*=\s*hash\s*\(str,\s*len\);') +REG_GET_CODE = re.compile('(?:register\s+)?const\s+char\s*\*\s*s\s*=\s*wordlist\[key\]\.name;') +REG_CODE_CHECK = re.compile('if\s*\(\*str\s*==\s*\*s\s*&&\s*!strncmp.+\)') + +def parse_line(s): + s = s.rstrip() + + r = re.sub(REG_LINE_GPERF, '', s) + if r != s: return r + r = re.sub(REG_HASH_FUNC, 'hash(OnigCodePoint codes[])', s) + if r != s: return r + r = re.sub(REG_STR_AT, 'onig_codes_byte_at(codes, \\1)', s) + if r != s: return r + r = re.sub(REG_UNFOLD_KEY, 'onigenc_unicode_unfold_key(OnigCodePoint code)', s) + if r != s: return r + r = re.sub(REG_ENTRY, '{\\1, \\2, \\3}', s) + if r != s: return r + r = re.sub(REG_EMPTY_ENTRY, '{0xffffffff, \\1, \\2}', s) + if r != s: return r + r = re.sub(REG_IF_LEN, '', s) + if r != s: return r + r = re.sub(REG_GET_HASH, 'int key = hash(&code);', s) + if r != s: return r + r = re.sub(REG_GET_CODE, 'OnigCodePoint gcode = wordlist[key].code;', s) + if r != s: return r + r = re.sub(REG_CODE_CHECK, 'if (code == gcode && wordlist[key].index >= 0)', s) + if r != s: return r + + return s + +def parse_file(f): + print("/* This file was converted by gperf_unfold_key_conv.py\n from gperf output file. */") + + line = f.readline() + while line: + s = parse_line(line) + print(s) + line = f.readline() + + +# main +parse_file(sys.stdin) diff --git a/vendor/onig/enc/iso_8859_1.c b/vendor/oniguruma/oniguruma/src/iso8859_1.c similarity index 59% rename from vendor/onig/enc/iso_8859_1.c rename to vendor/oniguruma/oniguruma/src/iso8859_1.c index 7af0888..2013e75 100644 --- a/vendor/onig/enc/iso_8859_1.c +++ b/vendor/oniguruma/oniguruma/src/iso8859_1.c @@ -2,7 +2,7 @@ iso8859_1.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2007 K.Kosako + * Copyright (c) 2002-2020 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -28,7 +28,9 @@ */ #include "regenc.h" -#include "iso_8859.h" + +#define LARGE_S 0x53 +#define SMALL_S 0x73 #define ENC_IS_ISO_8859_1_CTYPE(code,ctype) \ ((EncISO_8859_1_CtypeTable[code] & CTYPE_TO_BIT(ctype)) != 0) @@ -104,150 +106,144 @@ static const OnigPairCaseFoldCodes CaseFoldMap[] = { static int apply_all_case_fold(OnigCaseFoldType flag, - OnigApplyAllCaseFoldFunc f, void* arg, - OnigEncoding enc ARG_UNUSED) + OnigApplyAllCaseFoldFunc f, void* arg) { return onigenc_apply_all_case_fold_with_map( - numberof(CaseFoldMap), CaseFoldMap, 1, + sizeof(CaseFoldMap)/sizeof(OnigPairCaseFoldCodes), CaseFoldMap, 1, flag, f, arg); } static int get_case_fold_codes_by_str(OnigCaseFoldType flag, - const OnigUChar* p, const OnigUChar* end, - OnigCaseFoldCodeItem items[], - OnigEncoding enc ARG_UNUSED) + const OnigUChar* p, const OnigUChar* end, + OnigCaseFoldCodeItem items[]) { + static OnigUChar sa[] = { LARGE_S, SMALL_S }; + int i, j, n; + if (0x41 <= *p && *p <= 0x5a) { + if (*p == LARGE_S && end > p + 1 + && (*(p+1) == LARGE_S || *(p+1) == SMALL_S) + && CASE_FOLD_IS_NOT_ASCII_ONLY(flag)) { /* SS */ + ss_combination: + items[0].byte_len = 2; + items[0].code_len = 1; + items[0].code[0] = (OnigCodePoint )0xdf; + + n = 1; + for (i = 0; i < 2; i++) { + for (j = 0; j < 2; j++) { + if (sa[i] == *p && sa[j] == *(p+1)) + continue; + + items[n].byte_len = 2; + items[n].code_len = 2; + items[n].code[0] = (OnigCodePoint )sa[i]; + items[n].code[1] = (OnigCodePoint )sa[j]; + n++; + } + } + return 4; + } + items[0].byte_len = 1; items[0].code_len = 1; items[0].code[0] = (OnigCodePoint )(*p + 0x20); - if (*p == 0x53 && end > p + 1 - && (*(p+1) == 0x53 || *(p+1) == 0x73)) { /* SS */ - items[1].byte_len = 2; - items[1].code_len = 1; - items[1].code[0] = (OnigCodePoint )SHARP_s; - return 2; - } - else - return 1; + return 1; } else if (0x61 <= *p && *p <= 0x7a) { - items[0].byte_len = 1; - items[0].code_len = 1; - items[0].code[0] = (OnigCodePoint )(*p - 0x20); - if (*p == 0x73 && end > p + 1 - && (*(p+1) == 0x73 || *(p+1) == 0x53)) { /* ss */ - items[1].byte_len = 2; - items[1].code_len = 1; - items[1].code[0] = (OnigCodePoint )SHARP_s; - return 2; + if (*p == SMALL_S && end > p + 1 + && (*(p+1) == SMALL_S || *(p+1) == LARGE_S) + && CASE_FOLD_IS_NOT_ASCII_ONLY(flag)) { /* ss */ + goto ss_combination; } - else - return 1; - } - else if (0xc0 <= *p && *p <= 0xcf) { + items[0].byte_len = 1; items[0].code_len = 1; - items[0].code[0] = (OnigCodePoint )(*p + 0x20); + items[0].code[0] = (OnigCodePoint )(*p - 0x20); return 1; } - else if (0xd0 <= *p && *p <= 0xdf) { - if (*p == SHARP_s) { + else if (CASE_FOLD_IS_NOT_ASCII_ONLY(flag)) { + if (0xc0 <= *p && *p <= 0xcf) { items[0].byte_len = 1; - items[0].code_len = 2; - items[0].code[0] = (OnigCodePoint )'s'; - items[0].code[1] = (OnigCodePoint )'s'; + items[0].code_len = 1; + items[0].code[0] = (OnigCodePoint )(*p + 0x20); + return 1; + } + else if (0xd0 <= *p && *p <= 0xdf) { + if (*p == 0xdf) { + items[0].byte_len = 1; + items[0].code_len = 2; + items[0].code[0] = (OnigCodePoint )'s'; + items[0].code[1] = (OnigCodePoint )'s'; - items[1].byte_len = 1; - items[1].code_len = 2; - items[1].code[0] = (OnigCodePoint )'S'; - items[1].code[1] = (OnigCodePoint )'S'; + items[1].byte_len = 1; + items[1].code_len = 2; + items[1].code[0] = (OnigCodePoint )'S'; + items[1].code[1] = (OnigCodePoint )'S'; - items[2].byte_len = 1; - items[2].code_len = 2; - items[2].code[0] = (OnigCodePoint )'s'; - items[2].code[1] = (OnigCodePoint )'S'; + items[2].byte_len = 1; + items[2].code_len = 2; + items[2].code[0] = (OnigCodePoint )'s'; + items[2].code[1] = (OnigCodePoint )'S'; - items[3].byte_len = 1; - items[3].code_len = 2; - items[3].code[0] = (OnigCodePoint )'S'; - items[3].code[1] = (OnigCodePoint )'s'; + items[3].byte_len = 1; + items[3].code_len = 2; + items[3].code[0] = (OnigCodePoint )'S'; + items[3].code[1] = (OnigCodePoint )'s'; - return 4; + return 4; + } + else if (*p != 0xd7) { + items[0].byte_len = 1; + items[0].code_len = 1; + items[0].code[0] = (OnigCodePoint )(*p + 0x20); + return 1; + } } - else if (*p != 0xd7) { - items[0].byte_len = 1; - items[0].code_len = 1; - items[0].code[0] = (OnigCodePoint )(*p + 0x20); - return 1; - } - } - else if (0xe0 <= *p && *p <= 0xef) { - items[0].byte_len = 1; - items[0].code_len = 1; - items[0].code[0] = (OnigCodePoint )(*p - 0x20); - return 1; - } - else if (0xf0 <= *p && *p <= 0xfe) { - if (*p != 0xf7) { + else if (0xe0 <= *p && *p <= 0xef) { items[0].byte_len = 1; items[0].code_len = 1; items[0].code[0] = (OnigCodePoint )(*p - 0x20); return 1; } + else if (0xf0 <= *p && *p <= 0xfe) { + if (*p != 0xf7) { + items[0].byte_len = 1; + items[0].code_len = 1; + items[0].code[0] = (OnigCodePoint )(*p - 0x20); + return 1; + } + } } return 0; } static int -mbc_case_fold(OnigCaseFoldType flag, const UChar** pp, const UChar* end ARG_UNUSED, - UChar* lower, OnigEncoding enc ARG_UNUSED) +mbc_case_fold(OnigCaseFoldType flag, const UChar** pp, + const UChar* end ARG_UNUSED, UChar* lower) { const UChar* p = *pp; - if (*p == SHARP_s && (flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { + if (*p == 0xdf && (flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { *lower++ = 's'; *lower = 's'; (*pp)++; return 2; } - *lower = ONIGENC_ISO_8859_1_TO_LOWER_CASE(*p); - (*pp)++; - return 1; -} - -#if 0 -static int -is_mbc_ambiguous(OnigCaseFoldType flag, - const UChar** pp, const UChar* end) -{ - int v; - const UChar* p = *pp; - - if (*p == SHARP_s && (flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { - (*pp)++; - return TRUE; - } + if (CASE_FOLD_IS_NOT_ASCII_ONLY(flag) || ONIGENC_IS_ASCII_CODE(*p)) + *lower = ONIGENC_ISO_8859_1_TO_LOWER_CASE(*p); + else + *lower = *p; (*pp)++; - v = (EncISO_8859_1_CtypeTable[*p] & (BIT_CTYPE_UPPER | BIT_CTYPE_LOWER)); - if ((v | BIT_CTYPE_LOWER) != 0) { - /* 0xdf, 0xaa, 0xb5, 0xba are lower case letter, but can't convert. */ - if (*p >= 0xaa && *p <= 0xba) - return FALSE; - else - return TRUE; - } - - return (v != 0 ? TRUE : FALSE); + return 1; } -#endif static int -is_code_ctype(OnigCodePoint code, unsigned int ctype, OnigEncoding enc ARG_UNUSED) +is_code_ctype(OnigCodePoint code, unsigned int ctype) { if (code < 256) return ENC_IS_ISO_8859_1_CTYPE(code, ctype); @@ -255,50 +251,7 @@ is_code_ctype(OnigCodePoint code, unsigned int ctype, OnigEncoding enc ARG_UNUSE return FALSE; } -static int -case_map(OnigCaseFoldType* flagP, const OnigUChar** pp, - const OnigUChar* end, OnigUChar* to, OnigUChar* to_end, - const struct OnigEncodingTypeST* enc) -{ - OnigCodePoint code; - OnigUChar *to_start = to; - OnigCaseFoldType flags = *flagP; - - while (*pp < end && to < to_end) { - code = *(*pp)++; - if (code == SHARP_s) { - if (flags & ONIGENC_CASE_UPCASE) { - flags |= ONIGENC_CASE_MODIFIED; - *to++ = 'S'; - code = (flags & ONIGENC_CASE_TITLECASE) ? 's' : 'S'; - } - else if (flags & ONIGENC_CASE_FOLD) { - flags |= ONIGENC_CASE_MODIFIED; - *to++ = 's'; - code = 's'; - } - } - else if ((EncISO_8859_1_CtypeTable[code] & BIT_CTYPE_UPPER) - && (flags & (ONIGENC_CASE_DOWNCASE | ONIGENC_CASE_FOLD))) { - flags |= ONIGENC_CASE_MODIFIED; - code += 0x20; - } - else if (code == 0xAA || code == 0xBA || code == 0xB5 || code == 0xFF) - ; - else if ((EncISO_8859_1_CtypeTable[code] & BIT_CTYPE_LOWER) - && (flags & ONIGENC_CASE_UPCASE)) { - flags |= ONIGENC_CASE_MODIFIED; - code -= 0x20; - } - *to++ = code; - if (flags & ONIGENC_CASE_TITLECASE) /* switch from titlecase to lowercase for capitalize */ - flags ^= (ONIGENC_CASE_UPCASE | ONIGENC_CASE_DOWNCASE | ONIGENC_CASE_TITLECASE); - } - *flagP = flags; - return (int )(to - to_start); -} - -OnigEncodingDefine(iso_8859_1, ISO_8859_1) = { +OnigEncodingType OnigEncodingISO_8859_1 = { onigenc_single_byte_mbc_enc_len, "ISO-8859-1", /* name */ 1, /* max enc length */ @@ -315,8 +268,9 @@ OnigEncodingDefine(iso_8859_1, ISO_8859_1) = { onigenc_not_support_get_ctype_code_range, onigenc_single_byte_left_adjust_char_head, onigenc_always_true_is_allowed_reverse_match, - case_map, - 0, - ONIGENC_FLAG_NONE, + NULL, /* init */ + NULL, /* is_initialized */ + onigenc_always_true_is_valid_mbc_string, + ENC_FLAG_ASCII_COMPATIBLE|ENC_FLAG_SKIP_OFFSET_1, + 0, 0 }; -ENC_ALIAS("ISO8859-1", "ISO-8859-1") diff --git a/vendor/onig/enc/iso_8859_10.c b/vendor/oniguruma/oniguruma/src/iso8859_10.c similarity index 74% rename from vendor/onig/enc/iso_8859_10.c rename to vendor/oniguruma/oniguruma/src/iso8859_10.c index cae4be2..e4bf599 100644 --- a/vendor/onig/enc/iso_8859_10.c +++ b/vendor/oniguruma/oniguruma/src/iso8859_10.c @@ -2,7 +2,7 @@ iso8859_10.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2007 K.Kosako + * Copyright (c) 2002-2020 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -28,7 +28,6 @@ */ #include "regenc.h" -#include "iso_8859.h" #define ENC_ISO_8859_10_TO_LOWER_CASE(c) EncISO_8859_10_ToLowerCaseTable[c] #define ENC_IS_ISO_8859_10_CTYPE(code,ctype) \ @@ -106,47 +105,28 @@ static const unsigned short EncISO_8859_10_CtypeTable[256] = { static int mbc_case_fold(OnigCaseFoldType flag, - const UChar** pp, const UChar* end ARG_UNUSED, - UChar* lower, OnigEncoding enc ARG_UNUSED) + const UChar** pp, const UChar* end ARG_UNUSED, UChar* lower) { const UChar* p = *pp; - if (*p == SHARP_s && (flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { + if (*p == 0xdf && (flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { *lower++ = 's'; *lower = 's'; (*pp)++; return 2; } - *lower = ENC_ISO_8859_10_TO_LOWER_CASE(*p); - (*pp)++; - return 1; -} - -#if 0 -static int -is_mbc_ambiguous(OnigCaseFoldType flag, const UChar** pp, const UChar* end) -{ - int v; - const UChar* p = *pp; - - if (*p == SHARP_s && (flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { - (*pp)++; - return TRUE; - } + if (CASE_FOLD_IS_NOT_ASCII_ONLY(flag) || ONIGENC_IS_ASCII_CODE(*p)) + *lower = ENC_ISO_8859_10_TO_LOWER_CASE(*p); + else + *lower = *p; (*pp)++; - v = (EncISO_8859_10_CtypeTable[*p] & (BIT_CTYPE_UPPER | BIT_CTYPE_LOWER)); - if ((v | BIT_CTYPE_LOWER) != 0) { - return TRUE; - } - - return (v != 0 ? TRUE : FALSE); + return 1; } -#endif static int -is_code_ctype(OnigCodePoint code, unsigned int ctype, OnigEncoding enc ARG_UNUSED) +is_code_ctype(OnigCodePoint code, unsigned int ctype) { if (code < 256) return ENC_IS_ISO_8859_10_CTYPE(code, ctype); @@ -205,72 +185,23 @@ static const OnigPairCaseFoldCodes CaseFoldMap[] = { static int apply_all_case_fold(OnigCaseFoldType flag, - OnigApplyAllCaseFoldFunc f, void* arg, - OnigEncoding enc ARG_UNUSED) + OnigApplyAllCaseFoldFunc f, void* arg) { return onigenc_apply_all_case_fold_with_map( - numberof(CaseFoldMap), CaseFoldMap, 1, + sizeof(CaseFoldMap)/sizeof(OnigPairCaseFoldCodes), CaseFoldMap, 1, flag, f, arg); } static int get_case_fold_codes_by_str(OnigCaseFoldType flag, - const OnigUChar* p, const OnigUChar* end, - OnigCaseFoldCodeItem items[], - OnigEncoding enc ARG_UNUSED) + const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]) { return onigenc_get_case_fold_codes_by_str_with_map( - numberof(CaseFoldMap), CaseFoldMap, 1, - flag, p, end, items); -} - -static int -case_map(OnigCaseFoldType* flagP, const OnigUChar** pp, - const OnigUChar* end, OnigUChar* to, OnigUChar* to_end, - const struct OnigEncodingTypeST* enc) -{ - OnigCodePoint code; - OnigUChar *to_start = to; - OnigCaseFoldType flags = *flagP; - - while (*pp < end && to < to_end) { - code = *(*pp)++; - if (code == SHARP_s) { - if (flags & ONIGENC_CASE_UPCASE) { - flags |= ONIGENC_CASE_MODIFIED; - *to++ = 'S'; - code = (flags & ONIGENC_CASE_TITLECASE) ? 's' : 'S'; - } - else if (flags & ONIGENC_CASE_FOLD) { - flags |= ONIGENC_CASE_MODIFIED; - *to++ = 's'; - code = 's'; - } - } - else if (code == 0xBD || code == 0xFF) - ; - else if ((EncISO_8859_10_CtypeTable[code] & BIT_CTYPE_UPPER) - && (flags & (ONIGENC_CASE_DOWNCASE | ONIGENC_CASE_FOLD))) { - flags |= ONIGENC_CASE_MODIFIED; - code = ENC_ISO_8859_10_TO_LOWER_CASE(code); - } - else if ((EncISO_8859_10_CtypeTable[code] & BIT_CTYPE_LOWER) - && (flags & ONIGENC_CASE_UPCASE)) { - flags |= ONIGENC_CASE_MODIFIED; - if (code >= 0xA0 && code <= 0xBF) - code -= 0x10; - else - code -= 0x20; - } - *to++ = code; - if (flags & ONIGENC_CASE_TITLECASE) /* switch from titlecase to lowercase for capitalize */ - flags ^= (ONIGENC_CASE_UPCASE | ONIGENC_CASE_DOWNCASE | ONIGENC_CASE_TITLECASE); - } - *flagP = flags; - return (int )(to - to_start); + sizeof(CaseFoldMap)/sizeof(OnigPairCaseFoldCodes), CaseFoldMap, 1, + flag, p, end, items); } -OnigEncodingDefine(iso_8859_10, ISO_8859_10) = { +OnigEncodingType OnigEncodingISO_8859_10 = { onigenc_single_byte_mbc_enc_len, "ISO-8859-10", /* name */ 1, /* max enc length */ @@ -287,8 +218,9 @@ OnigEncodingDefine(iso_8859_10, ISO_8859_10) = { onigenc_not_support_get_ctype_code_range, onigenc_single_byte_left_adjust_char_head, onigenc_always_true_is_allowed_reverse_match, - case_map, - 0, - ONIGENC_FLAG_NONE, + NULL, /* init */ + NULL, /* is_initialized */ + onigenc_always_true_is_valid_mbc_string, + ENC_FLAG_ASCII_COMPATIBLE|ENC_FLAG_SKIP_OFFSET_1, + 0, 0 }; -ENC_ALIAS("ISO8859-10", "ISO-8859-10") diff --git a/vendor/onig/enc/iso_8859_11.c b/vendor/oniguruma/oniguruma/src/iso8859_11.c similarity index 87% rename from vendor/onig/enc/iso_8859_11.c rename to vendor/oniguruma/oniguruma/src/iso8859_11.c index 85e8f2c..8639ce2 100644 --- a/vendor/onig/enc/iso_8859_11.c +++ b/vendor/oniguruma/oniguruma/src/iso8859_11.c @@ -2,7 +2,7 @@ iso8859_11.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2007 K.Kosako + * Copyright (c) 2002-2019 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -68,7 +68,7 @@ static const unsigned short EncISO_8859_11_CtypeTable[256] = { }; static int -is_code_ctype(OnigCodePoint code, unsigned int ctype, OnigEncoding enc ARG_UNUSED) +is_code_ctype(OnigCodePoint code, unsigned int ctype) { if (code < 256) return ENC_IS_ISO_8859_11_CTYPE(code, ctype); @@ -76,7 +76,7 @@ is_code_ctype(OnigCodePoint code, unsigned int ctype, OnigEncoding enc ARG_UNUSE return FALSE; } -OnigEncodingDefine(iso_8859_11, ISO_8859_11) = { +OnigEncodingType OnigEncodingISO_8859_11 = { onigenc_single_byte_mbc_enc_len, "ISO-8859-11", /* name */ 1, /* max enc length */ @@ -93,22 +93,9 @@ OnigEncodingDefine(iso_8859_11, ISO_8859_11) = { onigenc_not_support_get_ctype_code_range, onigenc_single_byte_left_adjust_char_head, onigenc_always_true_is_allowed_reverse_match, - onigenc_single_byte_ascii_only_case_map, - 0, - ONIGENC_FLAG_NONE, + NULL, /* init */ + NULL, /* is_initialized */ + onigenc_always_true_is_valid_mbc_string, + ENC_FLAG_ASCII_COMPATIBLE|ENC_FLAG_SKIP_OFFSET_1, + 0, 0 }; -ENC_ALIAS("ISO8859-11", "ISO-8859-11") - -/* - * Name: TIS-620 - * MIBenum: 2259 - * Link: http://en.wikipedia.org/wiki/Thai_Industrial_Standard_620-2533 - */ -ENC_REPLICATE("TIS-620", "ISO-8859-11") - -/* - * Name: Windows-874 - * Link: http://www.microsoft.com/globaldev/reference/sbcs/874.mspx - */ -ENC_REPLICATE("Windows-874", "ISO-8859-11") -ENC_ALIAS("CP874", "Windows-874") diff --git a/vendor/onig/enc/iso_8859_13.c b/vendor/oniguruma/oniguruma/src/iso8859_13.c similarity index 73% rename from vendor/onig/enc/iso_8859_13.c rename to vendor/oniguruma/oniguruma/src/iso8859_13.c index fe1ddd7..dbf747f 100644 --- a/vendor/onig/enc/iso_8859_13.c +++ b/vendor/oniguruma/oniguruma/src/iso8859_13.c @@ -2,7 +2,7 @@ iso8859_13.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2007 K.Kosako + * Copyright (c) 2002-2020 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -28,7 +28,6 @@ */ #include "regenc.h" -#include "iso_8859.h" #define ENC_ISO_8859_13_TO_LOWER_CASE(c) EncISO_8859_13_ToLowerCaseTable[c] #define ENC_IS_ISO_8859_13_CTYPE(code,ctype) \ @@ -106,51 +105,28 @@ static const unsigned short EncISO_8859_13_CtypeTable[256] = { static int mbc_case_fold(OnigCaseFoldType flag, - const UChar** pp, const UChar* end ARG_UNUSED, - UChar* lower, OnigEncoding enc ARG_UNUSED) + const UChar** pp, const UChar* end ARG_UNUSED, UChar* lower) { const UChar* p = *pp; - if (*p == SHARP_s && (flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { + if (*p == 0xdf && (flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { *lower++ = 's'; *lower = 's'; (*pp)++; return 2; } - *lower = ENC_ISO_8859_13_TO_LOWER_CASE(*p); - (*pp)++; - return 1; -} - -#if 0 -static int -is_mbc_ambiguous(OnigCaseFoldType flag, const UChar** pp, const UChar* end) -{ - int v; - const UChar* p = *pp; - - if (*p == SHARP_s && (flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { - (*pp)++; - return TRUE; - } + if (CASE_FOLD_IS_NOT_ASCII_ONLY(flag) || ONIGENC_IS_ASCII_CODE(*p)) + *lower = ENC_ISO_8859_13_TO_LOWER_CASE(*p); + else + *lower = *p; (*pp)++; - v = (EncISO_8859_13_CtypeTable[*p] & (BIT_CTYPE_UPPER | BIT_CTYPE_LOWER)); - if ((v | BIT_CTYPE_LOWER) != 0) { - /* 0xdf, 0xb5 are lower case letter, but can't convert. */ - if (*p == 0xb5) - return FALSE; - else - return TRUE; - } - - return (v != 0 ? TRUE : FALSE); + return 1; } -#endif static int -is_code_ctype(OnigCodePoint code, unsigned int ctype, OnigEncoding enc ARG_UNUSED) +is_code_ctype(OnigCodePoint code, unsigned int ctype) { if (code < 256) return ENC_IS_ISO_8859_13_CTYPE(code, ctype); @@ -159,10 +135,6 @@ is_code_ctype(OnigCodePoint code, unsigned int ctype, OnigEncoding enc ARG_UNUSE } static const OnigPairCaseFoldCodes CaseFoldMap[] = { - { 0xa8, 0xb8 }, - { 0xaa, 0xba }, - { 0xaf, 0xbf }, - { 0xc0, 0xe0 }, { 0xc1, 0xe1 }, { 0xc2, 0xe2 }, @@ -198,74 +170,23 @@ static const OnigPairCaseFoldCodes CaseFoldMap[] = { static int apply_all_case_fold(OnigCaseFoldType flag, - OnigApplyAllCaseFoldFunc f, void* arg, - OnigEncoding enc ARG_UNUSED) + OnigApplyAllCaseFoldFunc f, void* arg) { return onigenc_apply_all_case_fold_with_map( - numberof(CaseFoldMap), CaseFoldMap, 1, + sizeof(CaseFoldMap)/sizeof(OnigPairCaseFoldCodes), CaseFoldMap, 1, flag, f, arg); } static int get_case_fold_codes_by_str(OnigCaseFoldType flag, - const OnigUChar* p, const OnigUChar* end, - OnigCaseFoldCodeItem items[], - OnigEncoding enc ARG_UNUSED) + const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]) { return onigenc_get_case_fold_codes_by_str_with_map( - numberof(CaseFoldMap), CaseFoldMap, 1, - flag, p, end, items); -} - -static int -case_map(OnigCaseFoldType* flagP, const OnigUChar** pp, - const OnigUChar* end, OnigUChar* to, OnigUChar* to_end, - const struct OnigEncodingTypeST* enc) -{ - OnigCodePoint code; - OnigUChar *to_start = to; - OnigCaseFoldType flags = *flagP; - - while (*pp < end && to < to_end) { - code = *(*pp)++; - if (code == SHARP_s) { - if (flags & ONIGENC_CASE_UPCASE) { - flags |= ONIGENC_CASE_MODIFIED; - *to++ = 'S'; - code = (flags & ONIGENC_CASE_TITLECASE) ? 's' : 'S'; - } - else if (flags & ONIGENC_CASE_FOLD) { - flags |= ONIGENC_CASE_MODIFIED; - *to++ = 's'; - code = 's'; - } - } - else if ((EncISO_8859_13_CtypeTable[code] & BIT_CTYPE_UPPER) - && (flags & (ONIGENC_CASE_DOWNCASE | ONIGENC_CASE_FOLD))) { - flags |= ONIGENC_CASE_MODIFIED; - code = ENC_ISO_8859_13_TO_LOWER_CASE(code); - } - else if (code == 0xB5) - ; - else if ((EncISO_8859_13_CtypeTable[code] & BIT_CTYPE_LOWER) - && (flags & ONIGENC_CASE_UPCASE)) { - flags |= ONIGENC_CASE_MODIFIED; - if (code == 0xB8 || code == 0xBA || code == 0xBF) { - code -= 0x10; - } - else { - code -= 0x20; - } - } - *to++ = code; - if (flags & ONIGENC_CASE_TITLECASE) /* switch from titlecase to lowercase for capitalize */ - flags ^= (ONIGENC_CASE_UPCASE | ONIGENC_CASE_DOWNCASE | ONIGENC_CASE_TITLECASE); - } - *flagP = flags; - return (int )(to - to_start); + sizeof(CaseFoldMap)/sizeof(OnigPairCaseFoldCodes), CaseFoldMap, 1, + flag, p, end, items); } -OnigEncodingDefine(iso_8859_13, ISO_8859_13) = { +OnigEncodingType OnigEncodingISO_8859_13 = { onigenc_single_byte_mbc_enc_len, "ISO-8859-13", /* name */ 1, /* max enc length */ @@ -282,8 +203,9 @@ OnigEncodingDefine(iso_8859_13, ISO_8859_13) = { onigenc_not_support_get_ctype_code_range, onigenc_single_byte_left_adjust_char_head, onigenc_always_true_is_allowed_reverse_match, - case_map, - 0, - ONIGENC_FLAG_NONE, + NULL, /* init */ + NULL, /* is_initialized */ + onigenc_always_true_is_valid_mbc_string, + ENC_FLAG_ASCII_COMPATIBLE|ENC_FLAG_SKIP_OFFSET_1, + 0, 0 }; -ENC_ALIAS("ISO8859-13", "ISO-8859-13") diff --git a/vendor/onig/enc/iso_8859_14.c b/vendor/oniguruma/oniguruma/src/iso8859_14.c similarity index 73% rename from vendor/onig/enc/iso_8859_14.c rename to vendor/oniguruma/oniguruma/src/iso8859_14.c index 647514a..a6d6b71 100644 --- a/vendor/onig/enc/iso_8859_14.c +++ b/vendor/oniguruma/oniguruma/src/iso8859_14.c @@ -2,7 +2,7 @@ iso8859_14.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2007 K.Kosako + * Copyright (c) 2002-2020 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -28,7 +28,6 @@ */ #include "regenc.h" -#include "iso_8859.h" #define ENC_ISO_8859_14_TO_LOWER_CASE(c) EncISO_8859_14_ToLowerCaseTable[c] #define ENC_IS_ISO_8859_14_CTYPE(code,ctype) \ @@ -106,48 +105,28 @@ static const unsigned short EncISO_8859_14_CtypeTable[256] = { static int mbc_case_fold(OnigCaseFoldType flag, - const UChar** pp, const UChar* end ARG_UNUSED, - UChar* lower, OnigEncoding enc ARG_UNUSED) + const UChar** pp, const UChar* end ARG_UNUSED, UChar* lower) { const UChar* p = *pp; - if (*p == SHARP_s && (flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { + if (*p == 0xdf && (flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { *lower++ = 's'; *lower = 's'; (*pp)++; return 2; } - *lower = ENC_ISO_8859_14_TO_LOWER_CASE(*p); - (*pp)++; - return 1; /* return byte length of converted char to lower */ -} - -#if 0 -static int -is_mbc_ambiguous(OnigCaseFoldType flag, - const UChar** pp, const UChar* end) -{ - int v; - const UChar* p = *pp; - - if (*p == SHARP_s && (flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { - (*pp)++; - return TRUE; - } + if (CASE_FOLD_IS_NOT_ASCII_ONLY(flag) || ONIGENC_IS_ASCII_CODE(*p)) + *lower = ENC_ISO_8859_14_TO_LOWER_CASE(*p); + else + *lower = *p; (*pp)++; - v = (EncISO_8859_14_CtypeTable[*p] & (BIT_CTYPE_UPPER | BIT_CTYPE_LOWER)); - if ((v | BIT_CTYPE_LOWER) != 0) { - return TRUE; - } - - return (v != 0 ? TRUE : FALSE); + return 1; /* return byte length of converted char to lower */ } -#endif static int -is_code_ctype(OnigCodePoint code, unsigned int ctype, OnigEncoding enc ARG_UNUSED) +is_code_ctype(OnigCodePoint code, unsigned int ctype) { if (code < 256) return ENC_IS_ISO_8859_14_CTYPE(code, ctype); @@ -207,81 +186,23 @@ static const OnigPairCaseFoldCodes CaseFoldMap[] = { static int apply_all_case_fold(OnigCaseFoldType flag, - OnigApplyAllCaseFoldFunc f, void* arg, - OnigEncoding enc ARG_UNUSED) + OnigApplyAllCaseFoldFunc f, void* arg) { return onigenc_apply_all_case_fold_with_map( - numberof(CaseFoldMap), CaseFoldMap, 1, + sizeof(CaseFoldMap)/sizeof(OnigPairCaseFoldCodes), CaseFoldMap, 1, flag, f, arg); } static int get_case_fold_codes_by_str(OnigCaseFoldType flag, - const OnigUChar* p, const OnigUChar* end, - OnigCaseFoldCodeItem items[], - OnigEncoding enc ARG_UNUSED) + const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]) { return onigenc_get_case_fold_codes_by_str_with_map( - numberof(CaseFoldMap), CaseFoldMap, 1, - flag, p, end, items); -} - -static int -case_map(OnigCaseFoldType* flagP, const OnigUChar** pp, - const OnigUChar* end, OnigUChar* to, OnigUChar* to_end, - const struct OnigEncodingTypeST* enc) -{ - OnigCodePoint code; - OnigUChar *to_start = to; - OnigCaseFoldType flags = *flagP; - - while (*pp < end && to < to_end) { - code = *(*pp)++; - if (code == SHARP_s) { - if (flags & ONIGENC_CASE_UPCASE) { - flags |= ONIGENC_CASE_MODIFIED; - *to++ = 'S'; - code = (flags & ONIGENC_CASE_TITLECASE) ? 's' : 'S'; - } - else if (flags & ONIGENC_CASE_FOLD) { - flags |= ONIGENC_CASE_MODIFIED; - *to++ = 's'; - code = 's'; - } - } - /* else if (code == 0xAA || code == 0xBA) ; */ - else if ((EncISO_8859_14_CtypeTable[code] & BIT_CTYPE_UPPER) - && (flags & (ONIGENC_CASE_DOWNCASE | ONIGENC_CASE_FOLD))) { - flags |= ONIGENC_CASE_MODIFIED; - code = ENC_ISO_8859_14_TO_LOWER_CASE(code); - } - else if ((EncISO_8859_14_CtypeTable[code] & BIT_CTYPE_LOWER) - && (flags & ONIGENC_CASE_UPCASE)) { - flags |= ONIGENC_CASE_MODIFIED; - if (code == 0xA2 || code == 0xA5 || code == 0xB1 || code == 0xB3 || code == 0xB5 || code == 0xBE) - code -= 0x1; - else if (code == 0xAB) - code -= 0x5; - else if (code == 0xFF) - code -= 0x50; - else if (code == 0xB9) - code -= 0x2; - else if (code == 0xBF) - code -= 0x4; - else if (code == 0xB8 || code == 0xBA || code == 0xBC) - code -= 0x10; - else - code -= 0x20; - } - *to++ = code; - if (flags & ONIGENC_CASE_TITLECASE) /* switch from titlecase to lowercase for capitalize */ - flags ^= (ONIGENC_CASE_UPCASE | ONIGENC_CASE_DOWNCASE | ONIGENC_CASE_TITLECASE); - } - *flagP = flags; - return (int )(to - to_start); + sizeof(CaseFoldMap)/sizeof(OnigPairCaseFoldCodes), CaseFoldMap, 1, + flag, p, end, items); } -OnigEncodingDefine(iso_8859_14, ISO_8859_14) = { +OnigEncodingType OnigEncodingISO_8859_14 = { onigenc_single_byte_mbc_enc_len, "ISO-8859-14", /* name */ 1, /* max enc length */ @@ -298,8 +219,9 @@ OnigEncodingDefine(iso_8859_14, ISO_8859_14) = { onigenc_not_support_get_ctype_code_range, onigenc_single_byte_left_adjust_char_head, onigenc_always_true_is_allowed_reverse_match, - case_map, - 0, - ONIGENC_FLAG_NONE, + NULL, /* init */ + NULL, /* is_initialized */ + onigenc_always_true_is_valid_mbc_string, + ENC_FLAG_ASCII_COMPATIBLE|ENC_FLAG_SKIP_OFFSET_1, + 0, 0 }; -ENC_ALIAS("ISO8859-14", "ISO-8859-14") diff --git a/vendor/onig/enc/iso_8859_15.c b/vendor/oniguruma/oniguruma/src/iso8859_15.c similarity index 72% rename from vendor/onig/enc/iso_8859_15.c rename to vendor/oniguruma/oniguruma/src/iso8859_15.c index 377a3af..0bb6b12 100644 --- a/vendor/onig/enc/iso_8859_15.c +++ b/vendor/oniguruma/oniguruma/src/iso8859_15.c @@ -2,7 +2,7 @@ iso8859_15.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2007 K.Kosako + * Copyright (c) 2002-2020 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -28,7 +28,6 @@ */ #include "regenc.h" -#include "iso_8859.h" #define ENC_ISO_8859_15_TO_LOWER_CASE(c) EncISO_8859_15_ToLowerCaseTable[c] #define ENC_IS_ISO_8859_15_CTYPE(code,ctype) \ @@ -106,52 +105,28 @@ static const unsigned short EncISO_8859_15_CtypeTable[256] = { static int mbc_case_fold(OnigCaseFoldType flag, - const UChar** pp, const UChar* end ARG_UNUSED, - UChar* lower, OnigEncoding enc ARG_UNUSED) + const UChar** pp, const UChar* end ARG_UNUSED, UChar* lower) { const UChar* p = *pp; - if (*p == SHARP_s && (flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { + if (*p == 0xdf && (flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { *lower++ = 's'; *lower = 's'; (*pp)++; return 2; } - *lower = ENC_ISO_8859_15_TO_LOWER_CASE(*p); - (*pp)++; - return 1; /* return byte length of converted char to lower */ -} - -#if 0 -static int -is_mbc_ambiguous(OnigCaseFoldType flag, - const UChar** pp, const UChar* end) -{ - int v; - const UChar* p = *pp; - - if (*p == SHARP_s && (flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { - (*pp)++; - return TRUE; - } + if (CASE_FOLD_IS_NOT_ASCII_ONLY(flag) || ONIGENC_IS_ASCII_CODE(*p)) + *lower = ENC_ISO_8859_15_TO_LOWER_CASE(*p); + else + *lower = *p; (*pp)++; - v = (EncISO_8859_15_CtypeTable[*p] & (BIT_CTYPE_UPPER | BIT_CTYPE_LOWER)); - if ((v | BIT_CTYPE_LOWER) != 0) { - /* 0xdf etc.. are lower case letter, but can't convert. */ - if (*p == 0xaa || *p == 0xb5 || *p == 0xba) - return FALSE; - else - return TRUE; - } - - return (v != 0 ? TRUE : FALSE); + return 1; /* return byte length of converted char to lower */ } -#endif static int -is_code_ctype(OnigCodePoint code, unsigned int ctype, OnigEncoding enc ARG_UNUSED) +is_code_ctype(OnigCodePoint code, unsigned int ctype) { if (code < 256) return ENC_IS_ISO_8859_15_CTYPE(code, ctype); @@ -201,78 +176,23 @@ static const OnigPairCaseFoldCodes CaseFoldMap[] = { static int apply_all_case_fold(OnigCaseFoldType flag, - OnigApplyAllCaseFoldFunc f, void* arg, - OnigEncoding enc ARG_UNUSED) + OnigApplyAllCaseFoldFunc f, void* arg) { return onigenc_apply_all_case_fold_with_map( - numberof(CaseFoldMap), CaseFoldMap, 1, + sizeof(CaseFoldMap)/sizeof(OnigPairCaseFoldCodes), CaseFoldMap, 1, flag, f, arg); } static int get_case_fold_codes_by_str(OnigCaseFoldType flag, - const OnigUChar* p, const OnigUChar* end, - OnigCaseFoldCodeItem items[], - OnigEncoding enc ARG_UNUSED) + const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]) { return onigenc_get_case_fold_codes_by_str_with_map( - numberof(CaseFoldMap), CaseFoldMap, 1, - flag, p, end, items); -} - -static int -case_map(OnigCaseFoldType* flagP, const OnigUChar** pp, - const OnigUChar* end, OnigUChar* to, OnigUChar* to_end, - const struct OnigEncodingTypeST* enc) -{ - OnigCodePoint code; - OnigUChar *to_start = to; - OnigCaseFoldType flags = *flagP; - - while (*pp < end && to < to_end) { - code = *(*pp)++; - if (code == SHARP_s) { - if (flags & ONIGENC_CASE_UPCASE) { - flags |= ONIGENC_CASE_MODIFIED; - *to++ = 'S'; - code = (flags & ONIGENC_CASE_TITLECASE) ? 's' : 'S'; - } - else if (flags & ONIGENC_CASE_FOLD) { - flags |= ONIGENC_CASE_MODIFIED; - *to++ = 's'; - code = 's'; - } - } - else if (code == 0xAA || code == 0xBA || code == 0xB5) - ; - else if ((EncISO_8859_15_CtypeTable[code] & BIT_CTYPE_UPPER) - && (flags & (ONIGENC_CASE_DOWNCASE | ONIGENC_CASE_FOLD))) { - flags |= ONIGENC_CASE_MODIFIED; - code = ENC_ISO_8859_15_TO_LOWER_CASE(code); - } - else if ((EncISO_8859_15_CtypeTable[code] & BIT_CTYPE_LOWER) - && (flags & ONIGENC_CASE_UPCASE)) { - flags |= ONIGENC_CASE_MODIFIED; - if (code == 0xA8) - code -= 2; - else if (code == 0xB8) - code -= 4; - else if (code == 0xBD) - code -= 1; - else if (code == 0xFF) - code -= 0x41; - else - code -= 0x20; - } - *to++ = code; - if (flags & ONIGENC_CASE_TITLECASE) /* switch from titlecase to lowercase for capitalize */ - flags ^= (ONIGENC_CASE_UPCASE | ONIGENC_CASE_DOWNCASE | ONIGENC_CASE_TITLECASE); - } - *flagP = flags; - return (int )(to - to_start); + sizeof(CaseFoldMap)/sizeof(OnigPairCaseFoldCodes), CaseFoldMap, 1, + flag, p, end, items); } -OnigEncodingDefine(iso_8859_15, ISO_8859_15) = { +OnigEncodingType OnigEncodingISO_8859_15 = { onigenc_single_byte_mbc_enc_len, "ISO-8859-15", /* name */ 1, /* max enc length */ @@ -289,8 +209,9 @@ OnigEncodingDefine(iso_8859_15, ISO_8859_15) = { onigenc_not_support_get_ctype_code_range, onigenc_single_byte_left_adjust_char_head, onigenc_always_true_is_allowed_reverse_match, - case_map, - 0, - ONIGENC_FLAG_NONE, + NULL, /* init */ + NULL, /* is_initialized */ + onigenc_always_true_is_valid_mbc_string, + ENC_FLAG_ASCII_COMPATIBLE|ENC_FLAG_SKIP_OFFSET_1, + 0, 0 }; -ENC_ALIAS("ISO8859-15", "ISO-8859-15") diff --git a/vendor/onig/enc/iso_8859_16.c b/vendor/oniguruma/oniguruma/src/iso8859_16.c similarity index 73% rename from vendor/onig/enc/iso_8859_16.c rename to vendor/oniguruma/oniguruma/src/iso8859_16.c index 135630e..bfd0a5b 100644 --- a/vendor/onig/enc/iso_8859_16.c +++ b/vendor/oniguruma/oniguruma/src/iso8859_16.c @@ -2,7 +2,7 @@ iso8859_16.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2007 K.Kosako + * Copyright (c) 2002-2020 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -28,7 +28,6 @@ */ #include "regenc.h" -#include "iso_8859.h" #define ENC_ISO_8859_16_TO_LOWER_CASE(c) EncISO_8859_16_ToLowerCaseTable[c] #define ENC_IS_ISO_8859_16_CTYPE(code,ctype) \ @@ -106,47 +105,28 @@ static const unsigned short EncISO_8859_16_CtypeTable[256] = { static int mbc_case_fold(OnigCaseFoldType flag, - const UChar** pp, const UChar* end ARG_UNUSED, UChar* lower, - OnigEncoding enc ARG_UNUSED) + const UChar** pp, const UChar* end ARG_UNUSED, UChar* lower) { const UChar* p = *pp; - if (*p == SHARP_s && (flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { + if (*p == 0xdf && (flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { *lower++ = 's'; *lower = 's'; (*pp)++; return 2; } - *lower = ENC_ISO_8859_16_TO_LOWER_CASE(*p); - (*pp)++; - return 1; /* return byte length of converted char to lower */ -} - -#if 0 -static int -is_mbc_ambiguous(OnigCaseFoldType flag, const UChar** pp, const UChar* end) -{ - int v; - const UChar* p = *pp; - - if (*p == SHARP_s && (flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { - (*pp)++; - return TRUE; - } + if (CASE_FOLD_IS_NOT_ASCII_ONLY(flag) || ONIGENC_IS_ASCII_CODE(*p)) + *lower = ENC_ISO_8859_16_TO_LOWER_CASE(*p); + else + *lower = *p; (*pp)++; - v = (EncISO_8859_16_CtypeTable[*p] & (BIT_CTYPE_UPPER | BIT_CTYPE_LOWER)); - if ((v | BIT_CTYPE_LOWER) != 0) { - return TRUE; - } - - return (v != 0 ? TRUE : FALSE); + return 1; /* return byte length of converted char to lower */ } -#endif static int -is_code_ctype(OnigCodePoint code, unsigned int ctype, OnigEncoding enc ARG_UNUSED) +is_code_ctype(OnigCodePoint code, unsigned int ctype) { if (code < 256) return ENC_IS_ISO_8859_16_CTYPE(code, ctype); @@ -203,80 +183,23 @@ static const OnigPairCaseFoldCodes CaseFoldMap[] = { static int apply_all_case_fold(OnigCaseFoldType flag, - OnigApplyAllCaseFoldFunc f, void* arg, - OnigEncoding enc ARG_UNUSED) + OnigApplyAllCaseFoldFunc f, void* arg) { return onigenc_apply_all_case_fold_with_map( - numberof(CaseFoldMap), CaseFoldMap, 1, + sizeof(CaseFoldMap)/sizeof(OnigPairCaseFoldCodes), CaseFoldMap, 1, flag, f, arg); } static int get_case_fold_codes_by_str(OnigCaseFoldType flag, - const OnigUChar* p, const OnigUChar* end, - OnigCaseFoldCodeItem items[], - OnigEncoding enc ARG_UNUSED) + const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]) { return onigenc_get_case_fold_codes_by_str_with_map( - numberof(CaseFoldMap), CaseFoldMap, 1, - flag, p, end, items); -} - -static int -case_map(OnigCaseFoldType* flagP, const OnigUChar** pp, - const OnigUChar* end, OnigUChar* to, OnigUChar* to_end, - const struct OnigEncodingTypeST* enc) -{ - OnigCodePoint code; - OnigUChar *to_start = to; - OnigCaseFoldType flags = *flagP; - - while (*pp < end && to < to_end) { - code = *(*pp)++; - if (code == SHARP_s) { - if (flags & ONIGENC_CASE_UPCASE) { - flags |= ONIGENC_CASE_MODIFIED; - *to++ = 'S'; - code = (flags & ONIGENC_CASE_TITLECASE) ? 's' : 'S'; - } - else if (flags & ONIGENC_CASE_FOLD) { - flags |= ONIGENC_CASE_MODIFIED; - *to++ = 's'; - code = 's'; - } - } - else if ((EncISO_8859_16_CtypeTable[code] & BIT_CTYPE_UPPER) - && (flags & (ONIGENC_CASE_DOWNCASE | ONIGENC_CASE_FOLD))) { - flags |= ONIGENC_CASE_MODIFIED; - code = ENC_ISO_8859_16_TO_LOWER_CASE(code); - } - else if ((EncISO_8859_16_CtypeTable[code] & BIT_CTYPE_LOWER) - && (flags&ONIGENC_CASE_UPCASE)) { - flags |= ONIGENC_CASE_MODIFIED; - if (code == 0xA2 || code == 0xBD) - code--; - else if (code == 0xB3 || code == 0xBA || code == 0xBF) - code -= 0x10; - else if (code == 0xA8 || code == 0xAE) - code -= 0x02; - else if (code == 0xB9) - code -= 0x07; - else if (code == 0xB8) - code -= 0x04; - else if (code == 0xFF) - code -= 0x41; - else - code -= 0x20; - } - *to++ = code; - if (flags & ONIGENC_CASE_TITLECASE) /* switch from titlecase to lowercase for capitalize */ - flags ^= (ONIGENC_CASE_UPCASE | ONIGENC_CASE_DOWNCASE | ONIGENC_CASE_TITLECASE); - } - *flagP = flags; - return (int )(to - to_start); + sizeof(CaseFoldMap)/sizeof(OnigPairCaseFoldCodes), CaseFoldMap, 1, + flag, p, end, items); } -OnigEncodingDefine(iso_8859_16, ISO_8859_16) = { +OnigEncodingType OnigEncodingISO_8859_16 = { onigenc_single_byte_mbc_enc_len, "ISO-8859-16", /* name */ 1, /* max enc length */ @@ -293,8 +216,9 @@ OnigEncodingDefine(iso_8859_16, ISO_8859_16) = { onigenc_not_support_get_ctype_code_range, onigenc_single_byte_left_adjust_char_head, onigenc_always_true_is_allowed_reverse_match, - case_map, - 0, - ONIGENC_FLAG_NONE, + NULL, /* init */ + NULL, /* is_initialized */ + onigenc_always_true_is_valid_mbc_string, + ENC_FLAG_ASCII_COMPATIBLE|ENC_FLAG_SKIP_OFFSET_1, + 0, 0 }; -ENC_ALIAS("ISO8859-16", "ISO-8859-16") diff --git a/vendor/onig/enc/iso_8859_2.c b/vendor/oniguruma/oniguruma/src/iso8859_2.c similarity index 75% rename from vendor/onig/enc/iso_8859_2.c rename to vendor/oniguruma/oniguruma/src/iso8859_2.c index 3a05c63..d08140e 100644 --- a/vendor/onig/enc/iso_8859_2.c +++ b/vendor/oniguruma/oniguruma/src/iso8859_2.c @@ -2,7 +2,7 @@ iso8859_2.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2007 K.Kosako + * Copyright (c) 2002-2020 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -28,7 +28,6 @@ */ #include "regenc.h" -#include "iso_8859.h" #define ENC_ISO_8859_2_TO_LOWER_CASE(c) EncISO_8859_2_ToLowerCaseTable[c] #define ENC_IS_ISO_8859_2_CTYPE(code,ctype) \ @@ -106,44 +105,25 @@ static const unsigned short EncISO_8859_2_CtypeTable[256] = { static int mbc_case_fold(OnigCaseFoldType flag, - const UChar** pp, const UChar* end ARG_UNUSED, UChar* lower, - OnigEncoding enc ARG_UNUSED) + const UChar** pp, const UChar* end ARG_UNUSED, UChar* lower) { const UChar* p = *pp; - if (*p == SHARP_s && (flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { + if (*p == 0xdf && (flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { *lower++ = 's'; *lower = 's'; (*pp)++; return 2; } - *lower = ENC_ISO_8859_2_TO_LOWER_CASE(*p); - (*pp)++; - return 1; /* return byte length of converted char to lower */ -} - -#if 0 -static int -is_mbc_ambiguous(OnigCaseFoldType flag, const UChar** pp, const UChar* end) -{ - int v; - const UChar* p = *pp; - - if (*p == SHARP_s && (flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { - (*pp)++; - return TRUE; - } + if (CASE_FOLD_IS_NOT_ASCII_ONLY(flag) || ONIGENC_IS_ASCII_CODE(*p)) + *lower = ENC_ISO_8859_2_TO_LOWER_CASE(*p); + else + *lower = *p; (*pp)++; - v = (EncISO_8859_2_CtypeTable[*p] & (BIT_CTYPE_UPPER | BIT_CTYPE_LOWER)); - if ((v | BIT_CTYPE_LOWER) != 0) { - return TRUE; - } - - return (v != 0 ? TRUE : FALSE); + return 1; /* return byte length of converted char to lower */ } -#endif static const OnigPairCaseFoldCodes CaseFoldMap[] = { { 0xa1, 0xb1 }, @@ -192,27 +172,24 @@ static const OnigPairCaseFoldCodes CaseFoldMap[] = { static int apply_all_case_fold(OnigCaseFoldType flag, - OnigApplyAllCaseFoldFunc f, void* arg, - OnigEncoding enc ARG_UNUSED) + OnigApplyAllCaseFoldFunc f, void* arg) { return onigenc_apply_all_case_fold_with_map( - numberof(CaseFoldMap), CaseFoldMap, 1, + sizeof(CaseFoldMap)/sizeof(OnigPairCaseFoldCodes), CaseFoldMap, 1, flag, f, arg); } static int get_case_fold_codes_by_str(OnigCaseFoldType flag, - const OnigUChar* p, const OnigUChar* end, - OnigCaseFoldCodeItem items[], - OnigEncoding enc ARG_UNUSED) + const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]) { return onigenc_get_case_fold_codes_by_str_with_map( - numberof(CaseFoldMap), CaseFoldMap, 1, - flag, p, end, items); + sizeof(CaseFoldMap)/sizeof(OnigPairCaseFoldCodes), CaseFoldMap, 1, + flag, p, end, items); } static int -is_code_ctype(OnigCodePoint code, unsigned int ctype, OnigEncoding enc ARG_UNUSED) +is_code_ctype(OnigCodePoint code, unsigned int ctype) { if (code < 256) return ENC_IS_ISO_8859_2_CTYPE(code, ctype); @@ -220,54 +197,7 @@ is_code_ctype(OnigCodePoint code, unsigned int ctype, OnigEncoding enc ARG_UNUSE return FALSE; } -static int -case_map(OnigCaseFoldType* flagP, const OnigUChar** pp, - const OnigUChar* end, OnigUChar* to, OnigUChar* to_end, - const struct OnigEncodingTypeST* enc) -{ - OnigCodePoint code; - OnigUChar *to_start = to; - OnigCaseFoldType flags = *flagP; - - while (*pp < end && to < to_end) { - code = *(*pp)++; - if (code == SHARP_s) { - if (flags & ONIGENC_CASE_UPCASE) { - flags |= ONIGENC_CASE_MODIFIED; - *to++ = 'S'; - code = (flags & ONIGENC_CASE_TITLECASE) ? 's' : 'S'; - } - else if (flags & ONIGENC_CASE_FOLD) { - flags |= ONIGENC_CASE_MODIFIED; - *to++ = 's'; - code = 's'; - } - } - else if ((EncISO_8859_2_CtypeTable[code] & BIT_CTYPE_UPPER) - && (flags & (ONIGENC_CASE_DOWNCASE | ONIGENC_CASE_FOLD))) { - flags |= ONIGENC_CASE_MODIFIED; - code = ENC_ISO_8859_2_TO_LOWER_CASE(code); - } - else if ((EncISO_8859_2_CtypeTable[code] & BIT_CTYPE_LOWER) - && (flags & ONIGENC_CASE_UPCASE)) { - if (code >= 0xB1 && code <= 0xBF) { - flags |= ONIGENC_CASE_MODIFIED; - code -= 0x10; - } - else { - flags |= ONIGENC_CASE_MODIFIED; - code -= 0x20; - } - } - *to++ = code; - if (flags & ONIGENC_CASE_TITLECASE) /* switch from titlecase to lowercase for capitalize */ - flags ^= (ONIGENC_CASE_UPCASE | ONIGENC_CASE_DOWNCASE | ONIGENC_CASE_TITLECASE); - } - *flagP = flags; - return (int )(to - to_start); -} - -OnigEncodingDefine(iso_8859_2, ISO_8859_2) = { +OnigEncodingType OnigEncodingISO_8859_2 = { onigenc_single_byte_mbc_enc_len, "ISO-8859-2", /* name */ 1, /* max enc length */ @@ -284,8 +214,9 @@ OnigEncodingDefine(iso_8859_2, ISO_8859_2) = { onigenc_not_support_get_ctype_code_range, onigenc_single_byte_left_adjust_char_head, onigenc_always_true_is_allowed_reverse_match, - case_map, - 0, - ONIGENC_FLAG_NONE, + NULL, /* init */ + NULL, /* is_initialized */ + onigenc_always_true_is_valid_mbc_string, + ENC_FLAG_ASCII_COMPATIBLE|ENC_FLAG_SKIP_OFFSET_1, + 0, 0 }; -ENC_ALIAS("ISO8859-2", "ISO-8859-2") diff --git a/vendor/onig/enc/iso_8859_3.c b/vendor/oniguruma/oniguruma/src/iso8859_3.c similarity index 70% rename from vendor/onig/enc/iso_8859_3.c rename to vendor/oniguruma/oniguruma/src/iso8859_3.c index 2a343ea..69b96fd 100644 --- a/vendor/onig/enc/iso_8859_3.c +++ b/vendor/oniguruma/oniguruma/src/iso8859_3.c @@ -2,7 +2,7 @@ iso8859_3.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2007 K.Kosako + * Copyright (c) 2002-2020 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -28,7 +28,6 @@ */ #include "regenc.h" -#include "iso_8859.h" #define ENC_ISO_8859_3_TO_LOWER_CASE(c) EncISO_8859_3_ToLowerCaseTable[c] #define ENC_IS_ISO_8859_3_CTYPE(code,ctype) \ @@ -56,7 +55,7 @@ static const UChar EncISO_8859_3_ToLowerCaseTable[256] = { '\220', '\221', '\222', '\223', '\224', '\225', '\226', '\227', '\230', '\231', '\232', '\233', '\234', '\235', '\236', '\237', '\240', '\261', '\242', '\243', '\244', '\245', '\266', '\247', - '\250', '\151', '\272', '\273', '\274', '\255', '\256', '\277', + '\250', '\271', '\272', '\273', '\274', '\255', '\256', '\277', '\260', '\261', '\262', '\263', '\264', '\265', '\266', '\267', '\270', '\271', '\272', '\273', '\274', '\275', '\276', '\277', '\340', '\341', '\342', '\303', '\344', '\345', '\346', '\347', @@ -105,52 +104,29 @@ static const unsigned short EncISO_8859_3_CtypeTable[256] = { }; static int -mbc_case_fold(OnigCaseFoldType flag, - const UChar** pp, const UChar* end ARG_UNUSED, UChar* lower, - OnigEncoding enc ARG_UNUSED) +mbc_case_fold(OnigCaseFoldType flag, const UChar** pp, + const UChar* end ARG_UNUSED, UChar* lower) { const UChar* p = *pp; - if (*p == SHARP_s && (flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { + if (*p == 0xdf && (flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { *lower++ = 's'; *lower = 's'; (*pp)++; return 2; } - *lower = ENC_ISO_8859_3_TO_LOWER_CASE(*p); - (*pp)++; - return 1; -} - -#if 0 -static int -is_mbc_ambiguous(OnigCaseFoldType flag, const UChar** pp, const UChar* end) -{ - int v; - const UChar* p = *pp; - - if (*p == SHARP_s && (flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { - (*pp)++; - return TRUE; - } + if (CASE_FOLD_IS_NOT_ASCII_ONLY(flag) || ONIGENC_IS_ASCII_CODE(*p)) + *lower = ENC_ISO_8859_3_TO_LOWER_CASE(*p); + else + *lower = *p; (*pp)++; - v = (EncISO_8859_3_CtypeTable[*p] & (BIT_CTYPE_UPPER | BIT_CTYPE_LOWER)); - if ((v | BIT_CTYPE_LOWER) != 0) { - /* 0xaa, 0xb5, 0xba are lower case letter, but can't convert. */ - if (*p == 0xb5) - return FALSE; - else - return TRUE; - } - - return (v != 0 ? TRUE : FALSE); + return 1; } -#endif static int -is_code_ctype(OnigCodePoint code, unsigned int ctype, OnigEncoding enc ARG_UNUSED) +is_code_ctype(OnigCodePoint code, unsigned int ctype) { if (code < 256) return ENC_IS_ISO_8859_3_CTYPE(code, ctype); @@ -161,7 +137,7 @@ is_code_ctype(OnigCodePoint code, unsigned int ctype, OnigEncoding enc ARG_UNUSE static const OnigPairCaseFoldCodes CaseFoldMap[] = { { 0xa1, 0xb1 }, { 0xa6, 0xb6 }, - /*{ 0xa9, 0xb9 }, exclude dotless i/I with dot; not a case pair */ + { 0xa9, 0xb9 }, { 0xaa, 0xba }, { 0xab, 0xbb }, { 0xac, 0xbc }, @@ -201,83 +177,23 @@ static const OnigPairCaseFoldCodes CaseFoldMap[] = { static int apply_all_case_fold(OnigCaseFoldType flag, - OnigApplyAllCaseFoldFunc f, void* arg, - OnigEncoding enc ARG_UNUSED) + OnigApplyAllCaseFoldFunc f, void* arg) { return onigenc_apply_all_case_fold_with_map( - numberof(CaseFoldMap), CaseFoldMap, 1, + sizeof(CaseFoldMap)/sizeof(OnigPairCaseFoldCodes), CaseFoldMap, 1, flag, f, arg); } static int get_case_fold_codes_by_str(OnigCaseFoldType flag, - const OnigUChar* p, const OnigUChar* end, - OnigCaseFoldCodeItem items[], - OnigEncoding enc ARG_UNUSED) + const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]) { return onigenc_get_case_fold_codes_by_str_with_map( - numberof(CaseFoldMap), CaseFoldMap, 1, - flag, p, end, items); -} - -#define DOTLESS_i (0xB9) -#define I_WITH_DOT_ABOVE (0xA9) -static int -case_map(OnigCaseFoldType* flagP, const OnigUChar** pp, - const OnigUChar* end, OnigUChar* to, OnigUChar* to_end, - const struct OnigEncodingTypeST* enc) -{ - OnigCodePoint code; - OnigUChar *to_start = to; - OnigCaseFoldType flags = *flagP; - - while (*pp < end && to < to_end) { - code = *(*pp)++; - if (code == SHARP_s) { - if (flags & ONIGENC_CASE_UPCASE) { - flags |= ONIGENC_CASE_MODIFIED; - *to++ = 'S'; - code = (flags & ONIGENC_CASE_TITLECASE) ? 's' : 'S'; - } - else if (flags & ONIGENC_CASE_FOLD) { - flags |= ONIGENC_CASE_MODIFIED; - *to++ = 's'; - code = 's'; - } - } - else if (code == 0xB5) - ; - else if ((EncISO_8859_3_CtypeTable[code] & BIT_CTYPE_UPPER) - && (flags & (ONIGENC_CASE_DOWNCASE | ONIGENC_CASE_FOLD))) { - flags |= ONIGENC_CASE_MODIFIED; - if (code == 'I') - code = flags & ONIGENC_CASE_FOLD_TURKISH_AZERI ? DOTLESS_i : 'i'; - else - code = ENC_ISO_8859_3_TO_LOWER_CASE(code); - } - else if ((EncISO_8859_3_CtypeTable[code]&BIT_CTYPE_LOWER) - && (flags & ONIGENC_CASE_UPCASE)) { - flags |= ONIGENC_CASE_MODIFIED; - if (code == 'i') - code = flags & ONIGENC_CASE_FOLD_TURKISH_AZERI ? I_WITH_DOT_ABOVE : 'I'; - else if (code == DOTLESS_i) - code = 'I'; - else if (code >= 0xB0 && code <= 0xBF) { - code -= 0x10; - } - else { - code -= 0x20; - } - } - *to++ = code; - if (flags & ONIGENC_CASE_TITLECASE) /* switch from titlecase to lowercase for capitalize */ - flags ^= (ONIGENC_CASE_UPCASE | ONIGENC_CASE_DOWNCASE | ONIGENC_CASE_TITLECASE); - } - *flagP = flags; - return (int )(to - to_start); + sizeof(CaseFoldMap)/sizeof(OnigPairCaseFoldCodes), CaseFoldMap, 1, + flag, p, end, items); } -OnigEncodingDefine(iso_8859_3, ISO_8859_3) = { +OnigEncodingType OnigEncodingISO_8859_3 = { onigenc_single_byte_mbc_enc_len, "ISO-8859-3", /* name */ 1, /* max enc length */ @@ -294,8 +210,9 @@ OnigEncodingDefine(iso_8859_3, ISO_8859_3) = { onigenc_not_support_get_ctype_code_range, onigenc_single_byte_left_adjust_char_head, onigenc_always_true_is_allowed_reverse_match, - case_map, - 0, - ONIGENC_FLAG_NONE, + NULL, /* init */ + NULL, /* is_initialized */ + onigenc_always_true_is_valid_mbc_string, + ENC_FLAG_ASCII_COMPATIBLE|ENC_FLAG_SKIP_OFFSET_1, + 0, 0 }; -ENC_ALIAS("ISO8859-3", "ISO-8859-3") diff --git a/vendor/onig/enc/iso_8859_4.c b/vendor/oniguruma/oniguruma/src/iso8859_4.c similarity index 74% rename from vendor/onig/enc/iso_8859_4.c rename to vendor/oniguruma/oniguruma/src/iso8859_4.c index e2134e8..949b7a1 100644 --- a/vendor/onig/enc/iso_8859_4.c +++ b/vendor/oniguruma/oniguruma/src/iso8859_4.c @@ -2,7 +2,7 @@ iso8859_4.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2007 K.Kosako + * Copyright (c) 2002-2020 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -28,7 +28,6 @@ */ #include "regenc.h" -#include "iso_8859.h" #define ENC_ISO_8859_4_TO_LOWER_CASE(c) EncISO_8859_4_ToLowerCaseTable[c] #define ENC_IS_ISO_8859_4_CTYPE(code,ctype) \ @@ -106,50 +105,28 @@ static const unsigned short EncISO_8859_4_CtypeTable[256] = { static int mbc_case_fold(OnigCaseFoldType flag, - const UChar** pp, const UChar* end ARG_UNUSED, UChar* lower, - OnigEncoding enc ARG_UNUSED) + const UChar** pp, const UChar* end ARG_UNUSED, UChar* lower) { const UChar* p = *pp; - if (*p == SHARP_s && (flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { + if (*p == 0xdf && (flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { *lower++ = 's'; *lower = 's'; (*pp)++; return 2; } - *lower = ENC_ISO_8859_4_TO_LOWER_CASE(*p); - (*pp)++; - return 1; /* return byte length of converted char to lower */ -} - -#if 0 -static int -is_mbc_ambiguous(OnigCaseFoldType flag, const UChar** pp, const UChar* end) -{ - int v; - const UChar* p = *pp; - - if (*p == SHARP_s && (flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { - (*pp)++; - return TRUE; - } + if (CASE_FOLD_IS_NOT_ASCII_ONLY(flag) || ONIGENC_IS_ASCII_CODE(*p)) + *lower = ENC_ISO_8859_4_TO_LOWER_CASE(*p); + else + *lower = *p; (*pp)++; - v = (EncISO_8859_4_CtypeTable[*p] & (BIT_CTYPE_UPPER | BIT_CTYPE_LOWER)); - if ((v | BIT_CTYPE_LOWER) != 0) { - if (*p == 0xa2) - return FALSE; - else - return TRUE; - } - - return (v != 0 ? TRUE : FALSE); + return 1; /* return byte length of converted char to lower */ } -#endif static int -is_code_ctype(OnigCodePoint code, unsigned int ctype, OnigEncoding enc ARG_UNUSED) +is_code_ctype(OnigCodePoint code, unsigned int ctype) { if (code < 256) return ENC_IS_ISO_8859_4_CTYPE(code, ctype); @@ -167,7 +144,6 @@ static const OnigPairCaseFoldCodes CaseFoldMap[] = { { 0xab, 0xbb }, { 0xac, 0xbc }, { 0xae, 0xbe }, - { 0xbd, 0xbf }, { 0xc0, 0xe0 }, { 0xc1, 0xe1 }, @@ -204,76 +180,23 @@ static const OnigPairCaseFoldCodes CaseFoldMap[] = { static int apply_all_case_fold(OnigCaseFoldType flag, - OnigApplyAllCaseFoldFunc f, void* arg, - OnigEncoding enc ARG_UNUSED) + OnigApplyAllCaseFoldFunc f, void* arg) { return onigenc_apply_all_case_fold_with_map( - numberof(CaseFoldMap), CaseFoldMap, 1, + sizeof(CaseFoldMap)/sizeof(OnigPairCaseFoldCodes), CaseFoldMap, 1, flag, f, arg); } static int get_case_fold_codes_by_str(OnigCaseFoldType flag, - const OnigUChar* p, const OnigUChar* end, - OnigCaseFoldCodeItem items[], - OnigEncoding enc ARG_UNUSED) + const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]) { return onigenc_get_case_fold_codes_by_str_with_map( - numberof(CaseFoldMap), CaseFoldMap, 1, - flag, p, end, items); -} - -static int -case_map(OnigCaseFoldType* flagP, const OnigUChar** pp, - const OnigUChar* end, OnigUChar* to, OnigUChar* to_end, - const struct OnigEncodingTypeST* enc) -{ - OnigCodePoint code; - OnigUChar *to_start = to; - OnigCaseFoldType flags = *flagP; - - while (*pp < end && to < to_end) { - code = *(*pp)++; - if (code == SHARP_s) { - if (flags & ONIGENC_CASE_UPCASE) { - flags |= ONIGENC_CASE_MODIFIED; - *to++ = 'S'; - code = (flags & ONIGENC_CASE_TITLECASE) ? 's' : 'S'; - } - else if (flags & ONIGENC_CASE_FOLD) { - flags |= ONIGENC_CASE_MODIFIED; - *to++ = 's'; - code = 's'; - } - } - else if ((EncISO_8859_4_CtypeTable[code] & BIT_CTYPE_UPPER) - && (flags & (ONIGENC_CASE_DOWNCASE | ONIGENC_CASE_FOLD))) { - flags |= ONIGENC_CASE_MODIFIED; - code = ENC_ISO_8859_4_TO_LOWER_CASE(code); - } - else if (code == 0xA2) - ; - else if ((EncISO_8859_4_CtypeTable[code]&BIT_CTYPE_LOWER) - && (flags & ONIGENC_CASE_UPCASE)) { - flags |= ONIGENC_CASE_MODIFIED; - if (code >= 0xA0 && code <= 0xBF) { - if (code == 0xBF) - code -= 0x02; - else - code -= 0x10; - } - else - code -= 0x20; - } - *to++ = code; - if (flags & ONIGENC_CASE_TITLECASE) /* switch from titlecase to lowercase for capitalize */ - flags ^= (ONIGENC_CASE_UPCASE | ONIGENC_CASE_DOWNCASE | ONIGENC_CASE_TITLECASE); - } - *flagP = flags; - return (int )(to - to_start); + sizeof(CaseFoldMap)/sizeof(OnigPairCaseFoldCodes), CaseFoldMap, 1, + flag, p, end, items); } -OnigEncodingDefine(iso_8859_4, ISO_8859_4) = { +OnigEncodingType OnigEncodingISO_8859_4 = { onigenc_single_byte_mbc_enc_len, "ISO-8859-4", /* name */ 1, /* max enc length */ @@ -290,8 +213,9 @@ OnigEncodingDefine(iso_8859_4, ISO_8859_4) = { onigenc_not_support_get_ctype_code_range, onigenc_single_byte_left_adjust_char_head, onigenc_always_true_is_allowed_reverse_match, - case_map, - 0, - ONIGENC_FLAG_NONE, + NULL, /* init */ + NULL, /* is_initialized */ + onigenc_always_true_is_valid_mbc_string, + ENC_FLAG_ASCII_COMPATIBLE|ENC_FLAG_SKIP_OFFSET_1, + 0, 0 }; -ENC_ALIAS("ISO8859-4", "ISO-8859-4") diff --git a/vendor/onig/enc/iso_8859_5.c b/vendor/oniguruma/oniguruma/src/iso8859_5.c similarity index 79% rename from vendor/onig/enc/iso_8859_5.c rename to vendor/oniguruma/oniguruma/src/iso8859_5.c index 6fafc35..9e5d418 100644 --- a/vendor/onig/enc/iso_8859_5.c +++ b/vendor/oniguruma/oniguruma/src/iso8859_5.c @@ -2,7 +2,7 @@ iso8859_5.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2008 K.Kosako + * Copyright (c) 2002-2020 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -105,31 +105,21 @@ static const unsigned short EncISO_8859_5_CtypeTable[256] = { static int mbc_case_fold(OnigCaseFoldType flag, - const UChar** pp, const UChar* end ARG_UNUSED, UChar* lower, - OnigEncoding enc ARG_UNUSED) + const UChar** pp, const UChar* end ARG_UNUSED, UChar* lower) { const UChar* p = *pp; - *lower = ENC_ISO_8859_5_TO_LOWER_CASE(*p); - (*pp)++; - return 1; -} - -#if 0 -static int -is_mbc_ambiguous(OnigCaseFoldType flag, const UChar** pp, const UChar* end) -{ - int v; - const UChar* p = *pp; + if (CASE_FOLD_IS_NOT_ASCII_ONLY(flag) || ONIGENC_IS_ASCII_CODE(*p)) + *lower = ENC_ISO_8859_5_TO_LOWER_CASE(*p); + else + *lower = *p; (*pp)++; - v = (EncISO_8859_5_CtypeTable[*p] & (BIT_CTYPE_UPPER | BIT_CTYPE_LOWER)); - return (v != 0 ? TRUE : FALSE); + return 1; } -#endif static int -is_code_ctype(OnigCodePoint code, unsigned int ctype, OnigEncoding enc ARG_UNUSED) +is_code_ctype(OnigCodePoint code, unsigned int ctype) { if (code < 256) return ENC_IS_ISO_8859_5_CTYPE(code, ctype); @@ -190,58 +180,24 @@ static const OnigPairCaseFoldCodes CaseFoldMap[] = { static int apply_all_case_fold(OnigCaseFoldType flag, - OnigApplyAllCaseFoldFunc f, void* arg, - OnigEncoding enc ARG_UNUSED) + OnigApplyAllCaseFoldFunc f, void* arg) { return onigenc_apply_all_case_fold_with_map( - numberof(CaseFoldMap), CaseFoldMap, 0, + sizeof(CaseFoldMap)/sizeof(OnigPairCaseFoldCodes), CaseFoldMap, 0, flag, f, arg); } static int get_case_fold_codes_by_str(OnigCaseFoldType flag, - const OnigUChar* p, const OnigUChar* end, - OnigCaseFoldCodeItem items[], - OnigEncoding enc ARG_UNUSED) + const OnigUChar* p, const OnigUChar* end, + OnigCaseFoldCodeItem items[]) { return onigenc_get_case_fold_codes_by_str_with_map( - numberof(CaseFoldMap), CaseFoldMap, 0, - flag, p, end, items); -} - -static int -case_map(OnigCaseFoldType* flagP, const OnigUChar** pp, - const OnigUChar* end, OnigUChar* to, OnigUChar* to_end, - const struct OnigEncodingTypeST* enc) -{ - OnigCodePoint code; - OnigUChar *to_start = to; - OnigCaseFoldType flags = *flagP; - - while (*pp < end && to < to_end) { - code = *(*pp)++; - if ((EncISO_8859_5_CtypeTable[code] & BIT_CTYPE_UPPER) - && (flags & (ONIGENC_CASE_DOWNCASE | ONIGENC_CASE_FOLD))) { - flags |= ONIGENC_CASE_MODIFIED; - code = ENC_ISO_8859_5_TO_LOWER_CASE(code); - } - else if ((EncISO_8859_5_CtypeTable[code]&BIT_CTYPE_LOWER) - && (flags & ONIGENC_CASE_UPCASE)) { - flags |= ONIGENC_CASE_MODIFIED; - if (0xF1 <= code && code <= 0xFF) - code -= 0x50; - else - code -= 0x20; - } - *to++ = code; - if (flags & ONIGENC_CASE_TITLECASE) /* switch from titlecase to lowercase for capitalize */ - flags ^= (ONIGENC_CASE_UPCASE | ONIGENC_CASE_DOWNCASE | ONIGENC_CASE_TITLECASE); - } - *flagP = flags; - return (int )(to - to_start); + sizeof(CaseFoldMap)/sizeof(OnigPairCaseFoldCodes), CaseFoldMap, 0, + flag, p, end, items); } -OnigEncodingDefine(iso_8859_5, ISO_8859_5) = { +OnigEncodingType OnigEncodingISO_8859_5 = { onigenc_single_byte_mbc_enc_len, "ISO-8859-5", /* name */ 1, /* max enc length */ @@ -258,8 +214,9 @@ OnigEncodingDefine(iso_8859_5, ISO_8859_5) = { onigenc_not_support_get_ctype_code_range, onigenc_single_byte_left_adjust_char_head, onigenc_always_true_is_allowed_reverse_match, - case_map, - 0, - ONIGENC_FLAG_NONE, + NULL, /* init */ + NULL, /* is_initialized */ + onigenc_always_true_is_valid_mbc_string, + ENC_FLAG_ASCII_COMPATIBLE|ENC_FLAG_SKIP_OFFSET_1, + 0, 0 }; -ENC_ALIAS("ISO8859-5", "ISO-8859-5") diff --git a/vendor/onig/enc/iso_8859_6.c b/vendor/oniguruma/oniguruma/src/iso8859_6.c similarity index 88% rename from vendor/onig/enc/iso_8859_6.c rename to vendor/oniguruma/oniguruma/src/iso8859_6.c index 6d852ac..fb72442 100644 --- a/vendor/onig/enc/iso_8859_6.c +++ b/vendor/oniguruma/oniguruma/src/iso8859_6.c @@ -2,7 +2,7 @@ iso8859_6.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2007 K.Kosako + * Copyright (c) 2002-2019 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -68,7 +68,7 @@ static const unsigned short EncISO_8859_6_CtypeTable[256] = { }; static int -is_code_ctype(OnigCodePoint code, unsigned int ctype, OnigEncoding enc ARG_UNUSED) +is_code_ctype(OnigCodePoint code, unsigned int ctype) { if (code < 256) return ENC_IS_ISO_8859_6_CTYPE(code, ctype); @@ -76,7 +76,7 @@ is_code_ctype(OnigCodePoint code, unsigned int ctype, OnigEncoding enc ARG_UNUSE return FALSE; } -OnigEncodingDefine(iso_8859_6, ISO_8859_6) = { +OnigEncodingType OnigEncodingISO_8859_6 = { onigenc_single_byte_mbc_enc_len, "ISO-8859-6", /* name */ 1, /* max enc length */ @@ -93,18 +93,9 @@ OnigEncodingDefine(iso_8859_6, ISO_8859_6) = { onigenc_not_support_get_ctype_code_range, onigenc_single_byte_left_adjust_char_head, onigenc_always_true_is_allowed_reverse_match, - onigenc_single_byte_ascii_only_case_map, - 0, - ONIGENC_FLAG_NONE, + NULL, /* init */ + NULL, /* is_initialized */ + onigenc_always_true_is_valid_mbc_string, + ENC_FLAG_ASCII_COMPATIBLE|ENC_FLAG_SKIP_OFFSET_1, + 0, 0 }; -ENC_ALIAS("ISO8859-6", "ISO-8859-6") - -/* - * Name: windows-1256 - * MIBenum: 2256 - * Link: http://www.iana.org/assignments/character-sets - * Link: http://www.microsoft.com/globaldev/reference/sbcs/1256.mspx - * Link: http://en.wikipedia.org/wiki/Windows-1256 - */ -ENC_REPLICATE("Windows-1256", "ISO-8859-6") -ENC_ALIAS("CP1256", "Windows-1256") diff --git a/vendor/onig/enc/iso_8859_7.c b/vendor/oniguruma/oniguruma/src/iso8859_7.c similarity index 74% rename from vendor/onig/enc/iso_8859_7.c rename to vendor/oniguruma/oniguruma/src/iso8859_7.c index ac973f7..07b1360 100644 --- a/vendor/onig/enc/iso_8859_7.c +++ b/vendor/oniguruma/oniguruma/src/iso8859_7.c @@ -2,7 +2,7 @@ iso8859_7.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2007 K.Kosako + * Copyright (c) 2002-2020 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -105,39 +105,21 @@ static const unsigned short EncISO_8859_7_CtypeTable[256] = { static int mbc_case_fold(OnigCaseFoldType flag, - const UChar** pp, const UChar* end ARG_UNUSED, UChar* lower, - OnigEncoding enc ARG_UNUSED) + const UChar** pp, const UChar* end ARG_UNUSED, UChar* lower) { const UChar* p = *pp; - *lower = ENC_ISO_8859_7_TO_LOWER_CASE(*p); - (*pp)++; - return 1; -} - -#if 0 -static int -is_mbc_ambiguous(OnigCaseFoldType flag, - const UChar** pp, const UChar* end) -{ - int v; - const UChar* p = *pp; + if (CASE_FOLD_IS_NOT_ASCII_ONLY(flag) || ONIGENC_IS_ASCII_CODE(*p)) + *lower = ENC_ISO_8859_7_TO_LOWER_CASE(*p); + else + *lower = *p; (*pp)++; - v = (EncISO_8859_7_CtypeTable[*p] & (BIT_CTYPE_UPPER | BIT_CTYPE_LOWER)); - if ((v | BIT_CTYPE_LOWER) != 0) { - if (*p == 0xc0 || *p == 0xe0) - return FALSE; - else - return TRUE; - } - - return (v != 0 ? TRUE : FALSE); + return 1; } -#endif static int -is_code_ctype(OnigCodePoint code, unsigned int ctype, OnigEncoding enc ARG_UNUSED) +is_code_ctype(OnigCodePoint code, unsigned int ctype) { if (code < 256) return ENC_IS_ISO_8859_7_CTYPE(code, ctype); @@ -186,81 +168,24 @@ static const OnigPairCaseFoldCodes CaseFoldMap[] = { static int apply_all_case_fold(OnigCaseFoldType flag, - OnigApplyAllCaseFoldFunc f, void* arg, - OnigEncoding enc ARG_UNUSED) + OnigApplyAllCaseFoldFunc f, void* arg) { return onigenc_apply_all_case_fold_with_map( - numberof(CaseFoldMap), CaseFoldMap, 0, + sizeof(CaseFoldMap)/sizeof(OnigPairCaseFoldCodes), CaseFoldMap, 0, flag, f, arg); } static int get_case_fold_codes_by_str(OnigCaseFoldType flag, - const OnigUChar* p, const OnigUChar* end, - OnigCaseFoldCodeItem items[], - OnigEncoding enc ARG_UNUSED) + const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]) { return onigenc_get_case_fold_codes_by_str_with_map( - numberof(CaseFoldMap), CaseFoldMap, 0, - flag, p, end, items); + sizeof(CaseFoldMap)/sizeof(OnigPairCaseFoldCodes), CaseFoldMap, 0, + flag, p, end, items); } -static int -case_map(OnigCaseFoldType* flagP, const OnigUChar** pp, - const OnigUChar* end, OnigUChar* to, OnigUChar* to_end, - const struct OnigEncodingTypeST* enc) -{ - OnigCodePoint code; - OnigUChar *to_start = to; - OnigCaseFoldType flags = *flagP; - - while (*pp < end && to < to_end) { - code = *(*pp)++; - if (code == 0xF2) { - if (flags & ONIGENC_CASE_UPCASE) { - flags |= ONIGENC_CASE_MODIFIED; - code = 0xD3; - } - else if (flags & ONIGENC_CASE_FOLD) { - flags |= ONIGENC_CASE_MODIFIED; - code = 0xF3; - } - } - else if ((EncISO_8859_7_CtypeTable[code] & BIT_CTYPE_UPPER) - && (flags & (ONIGENC_CASE_DOWNCASE | ONIGENC_CASE_FOLD))) { - flags |= ONIGENC_CASE_MODIFIED; - code = ENC_ISO_8859_7_TO_LOWER_CASE(code); - } - else if (code == 0xC0 || code == 0xE0) - ; - else if ((EncISO_8859_7_CtypeTable[code]&BIT_CTYPE_LOWER) - && (flags & ONIGENC_CASE_UPCASE)) { - flags |= ONIGENC_CASE_MODIFIED; - if (code == 0xDC) { - code -= 0x26; - } - else if (code >= 0xDD && code <= 0xDF) { - code -= 0x25; - } - else if (code == 0xFC) { - code -= 0x40; - } - else if (code == 0xFD || code == 0xFE) { - code -= 0x3F; - } - else { - code -= 0x20; - } - } - *to++ = code; - if (flags & ONIGENC_CASE_TITLECASE) /* switch from titlecase to lowercase for capitalize */ - flags ^= (ONIGENC_CASE_UPCASE | ONIGENC_CASE_DOWNCASE | ONIGENC_CASE_TITLECASE); - } - *flagP = flags; - return (int )(to - to_start); -} -OnigEncodingDefine(iso_8859_7, ISO_8859_7) = { +OnigEncodingType OnigEncodingISO_8859_7 = { onigenc_single_byte_mbc_enc_len, "ISO-8859-7", /* name */ 1, /* max enc length */ @@ -277,8 +202,9 @@ OnigEncodingDefine(iso_8859_7, ISO_8859_7) = { onigenc_not_support_get_ctype_code_range, onigenc_single_byte_left_adjust_char_head, onigenc_always_true_is_allowed_reverse_match, - case_map, - 0, - ONIGENC_FLAG_NONE, + NULL, /* init */ + NULL, /* is_initialized */ + onigenc_always_true_is_valid_mbc_string, + ENC_FLAG_ASCII_COMPATIBLE|ENC_FLAG_SKIP_OFFSET_1, + 0, 0 }; -ENC_ALIAS("ISO8859-7", "ISO-8859-7") diff --git a/vendor/onig/enc/iso_8859_8.c b/vendor/oniguruma/oniguruma/src/iso8859_8.c similarity index 88% rename from vendor/onig/enc/iso_8859_8.c rename to vendor/oniguruma/oniguruma/src/iso8859_8.c index 0a7a29e..92a5eb1 100644 --- a/vendor/onig/enc/iso_8859_8.c +++ b/vendor/oniguruma/oniguruma/src/iso8859_8.c @@ -2,7 +2,7 @@ iso8859_8.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2007 K.Kosako + * Copyright (c) 2002-2019 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -68,7 +68,7 @@ static const unsigned short EncISO_8859_8_CtypeTable[256] = { }; static int -is_code_ctype(OnigCodePoint code, unsigned int ctype, OnigEncoding enc ARG_UNUSED) +is_code_ctype(OnigCodePoint code, unsigned int ctype) { if (code < 256) return ENC_IS_ISO_8859_8_CTYPE(code, ctype); @@ -76,7 +76,7 @@ is_code_ctype(OnigCodePoint code, unsigned int ctype, OnigEncoding enc ARG_UNUSE return FALSE; } -OnigEncodingDefine(iso_8859_8, ISO_8859_8) = { +OnigEncodingType OnigEncodingISO_8859_8 = { onigenc_single_byte_mbc_enc_len, "ISO-8859-8", /* name */ 1, /* max enc length */ @@ -93,18 +93,9 @@ OnigEncodingDefine(iso_8859_8, ISO_8859_8) = { onigenc_not_support_get_ctype_code_range, onigenc_single_byte_left_adjust_char_head, onigenc_always_true_is_allowed_reverse_match, - onigenc_single_byte_ascii_only_case_map, - 0, - ONIGENC_FLAG_NONE, + NULL, /* init */ + NULL, /* is_initialized */ + onigenc_always_true_is_valid_mbc_string, + ENC_FLAG_ASCII_COMPATIBLE|ENC_FLAG_SKIP_OFFSET_1, + 0, 0 }; -ENC_ALIAS("ISO8859-8", "ISO-8859-8") - -/* - * Name: windows-1255 - * MIBenum: 2255 - * Link: http://www.iana.org/assignments/character-sets - * Link: http://www.microsoft.com/globaldev/reference/sbcs/1255.mspx - * Link: http://en.wikipedia.org/wiki/Windows-1255 - */ -ENC_REPLICATE("Windows-1255", "ISO-8859-8") -ENC_ALIAS("CP1255", "Windows-1255") diff --git a/vendor/onig/enc/iso_8859_9.c b/vendor/oniguruma/oniguruma/src/iso8859_9.c similarity index 70% rename from vendor/onig/enc/iso_8859_9.c rename to vendor/oniguruma/oniguruma/src/iso8859_9.c index 004eec3..6f205e5 100644 --- a/vendor/onig/enc/iso_8859_9.c +++ b/vendor/oniguruma/oniguruma/src/iso8859_9.c @@ -2,7 +2,7 @@ iso8859_9.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2007 K.Kosako + * Copyright (c) 2002-2020 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -28,7 +28,6 @@ */ #include "regenc.h" -#include "iso_8859.h" #define ENC_ISO_8859_9_TO_LOWER_CASE(c) EncISO_8859_9_ToLowerCaseTable[c] #define ENC_IS_ISO_8859_9_CTYPE(code,ctype) \ @@ -62,7 +61,7 @@ static const UChar EncISO_8859_9_ToLowerCaseTable[256] = { '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347', '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357', '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\327', - '\370', '\371', '\372', '\373', '\374', '\151', '\376', '\337', + '\370', '\371', '\372', '\373', '\374', '\335', '\376', '\337', '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347', '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357', '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\367', @@ -106,51 +105,28 @@ static const unsigned short EncISO_8859_9_CtypeTable[256] = { static int mbc_case_fold(OnigCaseFoldType flag, - const UChar** pp, const UChar* end ARG_UNUSED, UChar* lower, - OnigEncoding enc ARG_UNUSED) + const UChar** pp, const UChar* end ARG_UNUSED, UChar* lower) { const UChar* p = *pp; - if (*p == SHARP_s && (flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { + if (*p == 0xdf && (flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { *lower++ = 's'; *lower = 's'; (*pp)++; return 2; } - *lower = ENC_ISO_8859_9_TO_LOWER_CASE(*p); - (*pp)++; - return 1; -} - -#if 0 -static int -is_mbc_ambiguous(OnigCaseFoldType flag, const UChar** pp, const UChar* end) -{ - int v; - const UChar* p = *pp; - - if (*p == SHARP_s && (flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { - (*pp)++; - return TRUE; - } + if (CASE_FOLD_IS_NOT_ASCII_ONLY(flag) || ONIGENC_IS_ASCII_CODE(*p)) + *lower = ENC_ISO_8859_9_TO_LOWER_CASE(*p); + else + *lower = *p; (*pp)++; - v = (EncISO_8859_9_CtypeTable[*p] & (BIT_CTYPE_UPPER | BIT_CTYPE_LOWER)); - if ((v | BIT_CTYPE_LOWER) != 0) { - /* 0xdf etc.. are lower case letter, but can't convert. */ - if (*p >= 0xaa && *p <= 0xba) - return FALSE; - else - return TRUE; - } - - return (v != 0 ? TRUE : FALSE); + return 1; } -#endif static int -is_code_ctype(OnigCodePoint code, unsigned int ctype, OnigEncoding enc ARG_UNUSED) +is_code_ctype(OnigCodePoint code, unsigned int ctype) { if (code < 256) return ENC_IS_ISO_8859_9_CTYPE(code, ctype); @@ -188,85 +164,29 @@ static const OnigPairCaseFoldCodes CaseFoldMap[] = { { 0xda, 0xfa }, { 0xdb, 0xfb }, { 0xdc, 0xfc }, - /*{ 0xdd, 0xfd }, exclude dotless i/I with dot; not a case pair */ + { 0xdd, 0xfd }, { 0xde, 0xfe } }; static int apply_all_case_fold(OnigCaseFoldType flag, - OnigApplyAllCaseFoldFunc f, void* arg, - OnigEncoding enc ARG_UNUSED) + OnigApplyAllCaseFoldFunc f, void* arg) { return onigenc_apply_all_case_fold_with_map( - numberof(CaseFoldMap), CaseFoldMap, 1, + sizeof(CaseFoldMap)/sizeof(OnigPairCaseFoldCodes), CaseFoldMap, 1, flag, f, arg); } static int get_case_fold_codes_by_str(OnigCaseFoldType flag, - const OnigUChar* p, const OnigUChar* end, - OnigCaseFoldCodeItem items[], - OnigEncoding enc ARG_UNUSED) + const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]) { return onigenc_get_case_fold_codes_by_str_with_map( - numberof(CaseFoldMap), CaseFoldMap, 1, - flag, p, end, items); -} - -#define DOTLESS_i (0xFD) -#define I_WITH_DOT_ABOVE (0xDD) -static int -case_map(OnigCaseFoldType* flagP, const OnigUChar** pp, - const OnigUChar* end, OnigUChar* to, OnigUChar* to_end, - const struct OnigEncodingTypeST* enc) -{ - OnigCodePoint code; - OnigUChar *to_start = to; - OnigCaseFoldType flags = *flagP; - - while (*pp < end && to < to_end) { - code = *(*pp)++; - if (code == SHARP_s) { - if (flags & ONIGENC_CASE_UPCASE) { - flags |= ONIGENC_CASE_MODIFIED; - *to++ = 'S'; - code = (flags & ONIGENC_CASE_TITLECASE) ? 's' : 'S'; - } - else if (flags & ONIGENC_CASE_FOLD) { - flags |= ONIGENC_CASE_MODIFIED; - *to++ = 's'; - code = 's'; - } - } - else if (code == 0xAA || code == 0xB5 || code == 0xBA || code == 0xFF) - ; - else if ((EncISO_8859_9_CtypeTable[code] & BIT_CTYPE_UPPER) - && (flags & (ONIGENC_CASE_DOWNCASE | ONIGENC_CASE_FOLD))) { - flags |= ONIGENC_CASE_MODIFIED; - if (code == 'I') - code = flags & ONIGENC_CASE_FOLD_TURKISH_AZERI ? DOTLESS_i : 'i'; - else - code = ENC_ISO_8859_9_TO_LOWER_CASE(code); - } - else if ((EncISO_8859_9_CtypeTable[code]&BIT_CTYPE_LOWER) - && (flags & ONIGENC_CASE_UPCASE)) { - flags |= ONIGENC_CASE_MODIFIED; - if (code == 'i') - code = flags & ONIGENC_CASE_FOLD_TURKISH_AZERI ? I_WITH_DOT_ABOVE : 'I'; - else if (code == DOTLESS_i) - code = 'I'; - else - code -= 0x20; - } - *to++ = code; - if (flags & ONIGENC_CASE_TITLECASE) /* switch from titlecase to lowercase for capitalize */ - flags ^= (ONIGENC_CASE_UPCASE | ONIGENC_CASE_DOWNCASE | ONIGENC_CASE_TITLECASE); - } - *flagP = flags; - return (int )(to - to_start); + sizeof(CaseFoldMap)/sizeof(OnigPairCaseFoldCodes), CaseFoldMap, 1, + flag, p, end, items); } -OnigEncodingDefine(iso_8859_9, ISO_8859_9) = { +OnigEncodingType OnigEncodingISO_8859_9 = { onigenc_single_byte_mbc_enc_len, "ISO-8859-9", /* name */ 1, /* max enc length */ @@ -283,8 +203,9 @@ OnigEncodingDefine(iso_8859_9, ISO_8859_9) = { onigenc_not_support_get_ctype_code_range, onigenc_single_byte_left_adjust_char_head, onigenc_always_true_is_allowed_reverse_match, - case_map, - 0, - ONIGENC_FLAG_NONE, + NULL, /* init */ + NULL, /* is_initialized */ + onigenc_always_true_is_valid_mbc_string, + ENC_FLAG_ASCII_COMPATIBLE|ENC_FLAG_SKIP_OFFSET_1, + 0, 0 }; -ENC_ALIAS("ISO8859-9", "ISO-8859-9") diff --git a/vendor/onig/enc/koi8_u.c b/vendor/oniguruma/oniguruma/src/koi8.c similarity index 64% rename from vendor/onig/enc/koi8_u.c rename to vendor/oniguruma/oniguruma/src/koi8.c index 50bb78b..90a04f9 100644 --- a/vendor/onig/enc/koi8_u.c +++ b/vendor/oniguruma/oniguruma/src/koi8.c @@ -1,8 +1,8 @@ /********************************************************************** - koi8_u.c - Oniguruma (regular expression library) + koi8.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2008 K.Kosako + * Copyright (c) 2002-2020 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -29,11 +29,11 @@ #include "regenc.h" -#define ENC_KOI8_U_TO_LOWER_CASE(c) EncKOI8_U_ToLowerCaseTable[c] -#define ENC_IS_KOI8_U_CTYPE(code,ctype) \ - ((EncKOI8_U_CtypeTable[code] & CTYPE_TO_BIT(ctype)) != 0) +#define ENC_KOI8_TO_LOWER_CASE(c) EncKOI8_ToLowerCaseTable[c] +#define ENC_IS_KOI8_CTYPE(code,ctype) \ + ((EncKOI8_CtypeTable[code] & CTYPE_TO_BIT(ctype)) != 0) -static const UChar EncKOI8_U_ToLowerCaseTable[256] = { +static const UChar EncKOI8_ToLowerCaseTable[256] = { '\000', '\001', '\002', '\003', '\004', '\005', '\006', '\007', '\010', '\011', '\012', '\013', '\014', '\015', '\016', '\017', '\020', '\021', '\022', '\023', '\024', '\025', '\026', '\027', @@ -56,8 +56,8 @@ static const UChar EncKOI8_U_ToLowerCaseTable[256] = { '\230', '\231', '\232', '\233', '\234', '\235', '\236', '\237', '\240', '\241', '\242', '\243', '\244', '\245', '\246', '\247', '\250', '\251', '\252', '\253', '\254', '\255', '\256', '\257', - '\260', '\261', '\262', '\243', '\244', '\265', '\246', '\247', - '\270', '\271', '\272', '\273', '\274', '\255', '\276', '\277', + '\260', '\261', '\262', '\263', '\264', '\265', '\266', '\267', + '\270', '\271', '\272', '\273', '\274', '\275', '\276', '\277', '\300', '\301', '\302', '\303', '\304', '\305', '\306', '\307', '\310', '\311', '\312', '\313', '\314', '\315', '\316', '\317', '\320', '\321', '\322', '\323', '\324', '\325', '\326', '\327', @@ -68,7 +68,7 @@ static const UChar EncKOI8_U_ToLowerCaseTable[256] = { '\330', '\331', '\332', '\333', '\334', '\335', '\336', '\337' }; -static const unsigned short EncKOI8_U_CtypeTable[256] = { +static const unsigned short EncKOI8_CtypeTable[256] = { 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, @@ -85,14 +85,14 @@ static const unsigned short EncKOI8_U_CtypeTable[256] = { 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008, - 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, - 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, - 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, - 0x00a0, 0x00a0, 0x0284, 0x00a0, 0x00a0, 0x10a0, 0x01a0, 0x00a0, - 0x00a0, 0x00a0, 0x00a0, 0x30e2, 0x30e2, 0x00a0, 0x30e2, 0x30e2, - 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x30e2, 0x00a0, 0x00a0, - 0x00a0, 0x00a0, 0x00a0, 0x34a2, 0x34a2, 0x00a0, 0x34a2, 0x34a2, - 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x34a2, 0x00a0, 0x00a0, + 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, + 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, + 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, + 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, + 0x0284, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, @@ -103,122 +103,138 @@ static const unsigned short EncKOI8_U_CtypeTable[256] = { 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2 }; -static int -koi8_u_mbc_case_fold(OnigCaseFoldType flag ARG_UNUSED, - const UChar** pp, const UChar* end ARG_UNUSED, - UChar* lower, OnigEncoding enc ARG_UNUSED) -{ - const UChar* p = *pp; - - *lower = ENC_KOI8_U_TO_LOWER_CASE(*p); - (*pp)++; - return 1; -} -#if 0 static int -koi8_u_is_mbc_ambiguous(OnigCaseFoldType flag, const UChar** pp, - const UChar* end, OnigEncoding enc ARG_UNUSED) +koi8_mbc_case_fold(OnigCaseFoldType flag, + const UChar** pp, const UChar* end ARG_UNUSED, UChar* lower) { - int v; const UChar* p = *pp; + if (CASE_FOLD_IS_NOT_ASCII_ONLY(flag) || ONIGENC_IS_ASCII_CODE(*p)) + *lower = ENC_KOI8_TO_LOWER_CASE(*p); + else + *lower = *p; + (*pp)++; - v = (EncKOI8_U_CtypeTable[*p] & (BIT_CTYPE_UPPER | BIT_CTYPE_LOWER)); - return (v != 0 ? TRUE : FALSE); + return 1; } -#endif static int -koi8_u_is_code_ctype(OnigCodePoint code, unsigned int ctype, - OnigEncoding enc ARG_UNUSED) +koi8_is_code_ctype(OnigCodePoint code, unsigned int ctype) { if (code < 256) - return ENC_IS_KOI8_U_CTYPE(code, ctype); + return ENC_IS_KOI8_CTYPE(code, ctype); else return FALSE; } static const OnigPairCaseFoldCodes CaseFoldMap[] = { - { 0xa3, 0xb3 }, - { 0xa4, 0xb4 }, - { 0xa6, 0xb6 }, - { 0xa7, 0xb7 }, - { 0xad, 0xbd }, - - { 0xc0, 0xe0 }, - { 0xc1, 0xe1 }, - { 0xc2, 0xe2 }, - { 0xc3, 0xe3 }, - { 0xc4, 0xe4 }, - { 0xc5, 0xe5 }, - { 0xc6, 0xe6 }, - { 0xc7, 0xe7 }, - { 0xc8, 0xe8 }, - { 0xc9, 0xe9 }, - { 0xca, 0xea }, - { 0xcb, 0xeb }, - { 0xcc, 0xec }, - { 0xcd, 0xed }, - { 0xce, 0xee }, - { 0xcf, 0xef }, - - { 0xd0, 0xf0 }, - { 0xd1, 0xf1 }, - { 0xd2, 0xf2 }, - { 0xd3, 0xf3 }, - { 0xd4, 0xf4 }, - { 0xd5, 0xf5 }, - { 0xd6, 0xf6 }, - { 0xd7, 0xf7 }, - { 0xd8, 0xf8 }, - { 0xd9, 0xf9 }, - { 0xda, 0xfa }, - { 0xdb, 0xfb }, - { 0xdc, 0xfc }, - { 0xdd, 0xfd }, - { 0xde, 0xfe }, - { 0xdf, 0xff } + { 0xc0, 0xe0 }, + { 0xc1, 0xe1 }, + { 0xc2, 0xe2 }, + { 0xc3, 0xe3 }, + { 0xc4, 0xe4 }, + { 0xc5, 0xe5 }, + { 0xc6, 0xe6 }, + { 0xc7, 0xe7 }, + { 0xc8, 0xe8 }, + { 0xc9, 0xe9 }, + { 0xca, 0xea }, + { 0xcb, 0xeb }, + { 0xcc, 0xec }, + { 0xcd, 0xed }, + { 0xce, 0xee }, + { 0xcf, 0xef }, + + { 0xd0, 0xf0 }, + { 0xd1, 0xf1 }, + { 0xd2, 0xf2 }, + { 0xd3, 0xf3 }, + { 0xd4, 0xf4 }, + { 0xd5, 0xf5 }, + { 0xd6, 0xf6 }, + { 0xd7, 0xf7 }, + { 0xd8, 0xf8 }, + { 0xd9, 0xf9 }, + { 0xda, 0xfa }, + { 0xdb, 0xfb }, + { 0xdc, 0xfc }, + { 0xdd, 0xfd }, + { 0xde, 0xfe }, + { 0xdf, 0xff }, + + { 0xe0, 0xc0 }, + { 0xe1, 0xc1 }, + { 0xe2, 0xc2 }, + { 0xe3, 0xc3 }, + { 0xe4, 0xc4 }, + { 0xe5, 0xc5 }, + { 0xe6, 0xc6 }, + { 0xe7, 0xc7 }, + { 0xe8, 0xc8 }, + { 0xe9, 0xc9 }, + { 0xea, 0xca }, + { 0xeb, 0xcb }, + { 0xec, 0xcc }, + { 0xed, 0xcd }, + { 0xee, 0xce }, + { 0xef, 0xcf }, + + { 0xf0, 0xd0 }, + { 0xf1, 0xd1 }, + { 0xf2, 0xd2 }, + { 0xf3, 0xd3 }, + { 0xf4, 0xd4 }, + { 0xf5, 0xd5 }, + { 0xf6, 0xd6 }, + { 0xf7, 0xd7 }, + { 0xf8, 0xd8 }, + { 0xf9, 0xd9 }, + { 0xfa, 0xda }, + { 0xfb, 0xdb }, + { 0xfc, 0xdc }, + { 0xfe, 0xde }, + { 0xff, 0xdf } }; static int -koi8_u_apply_all_case_fold(OnigCaseFoldType flag, - OnigApplyAllCaseFoldFunc f, - void* arg, OnigEncoding enc ARG_UNUSED) +koi8_apply_all_case_fold(OnigCaseFoldType flag, + OnigApplyAllCaseFoldFunc f, void* arg) { return onigenc_apply_all_case_fold_with_map( - numberof(CaseFoldMap), CaseFoldMap, 0, + sizeof(CaseFoldMap)/sizeof(OnigPairCaseFoldCodes), CaseFoldMap, 0, flag, f, arg); } static int -koi8_u_get_case_fold_codes_by_str(OnigCaseFoldType flag, - const OnigUChar* p, const OnigUChar* end, - OnigCaseFoldCodeItem items[], OnigEncoding enc ARG_UNUSED) +koi8_get_case_fold_codes_by_str(OnigCaseFoldType flag, + const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]) { return onigenc_get_case_fold_codes_by_str_with_map( - numberof(CaseFoldMap), CaseFoldMap, 0, - flag, p, end, items); + sizeof(CaseFoldMap)/sizeof(OnigPairCaseFoldCodes), CaseFoldMap, 0, + flag, p, end, items); } -OnigEncodingDefine(koi8_u, KOI8_U) = { +OnigEncodingType OnigEncodingKOI8 = { onigenc_single_byte_mbc_enc_len, - "KOI8-U", /* name */ + "KOI8", /* name */ 1, /* max enc length */ 1, /* min enc length */ onigenc_is_mbc_newline_0x0a, onigenc_single_byte_mbc_to_code, onigenc_single_byte_code_to_mbclen, onigenc_single_byte_code_to_mbc, - koi8_u_mbc_case_fold, - koi8_u_apply_all_case_fold, - koi8_u_get_case_fold_codes_by_str, + koi8_mbc_case_fold, + koi8_apply_all_case_fold, + koi8_get_case_fold_codes_by_str, onigenc_minimum_property_name_to_ctype, - koi8_u_is_code_ctype, + koi8_is_code_ctype, onigenc_not_support_get_ctype_code_range, onigenc_single_byte_left_adjust_char_head, onigenc_always_true_is_allowed_reverse_match, - onigenc_single_byte_ascii_only_case_map, - 0, - ONIGENC_FLAG_NONE, + NULL, /* init */ + NULL, /* is_initialized */ + onigenc_always_true_is_valid_mbc_string, + ENC_FLAG_ASCII_COMPATIBLE|ENC_FLAG_SKIP_OFFSET_1, + 0, 0 }; diff --git a/vendor/onig/enc/koi8_r.c b/vendor/oniguruma/oniguruma/src/koi8_r.c similarity index 88% rename from vendor/onig/enc/koi8_r.c rename to vendor/oniguruma/oniguruma/src/koi8_r.c index a520975..31cc870 100644 --- a/vendor/onig/enc/koi8_r.c +++ b/vendor/oniguruma/oniguruma/src/koi8_r.c @@ -2,7 +2,7 @@ koi8_r.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2008 K.Kosako + * Copyright (c) 2002-2020 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -105,33 +105,21 @@ static const unsigned short EncKOI8_R_CtypeTable[256] = { static int koi8_r_mbc_case_fold(OnigCaseFoldType flag ARG_UNUSED, - const UChar** pp, const UChar* end ARG_UNUSED, - UChar* lower, OnigEncoding enc ARG_UNUSED) + const UChar** pp, const UChar* end ARG_UNUSED, UChar* lower) { const UChar* p = *pp; - *lower = ENC_KOI8_R_TO_LOWER_CASE(*p); - (*pp)++; - return 1; -} - -#if 0 -static int -koi8_r_is_mbc_ambiguous(OnigCaseFoldType flag, const UChar** pp, - const UChar* end, OnigEncoding enc ARG_UNUSED) -{ - int v; - const UChar* p = *pp; + if (CASE_FOLD_IS_NOT_ASCII_ONLY(flag) || ONIGENC_IS_ASCII_CODE(*p)) + *lower = ENC_KOI8_R_TO_LOWER_CASE(*p); + else + *lower = *p; (*pp)++; - v = (EncKOI8_R_CtypeTable[*p] & (BIT_CTYPE_UPPER | BIT_CTYPE_LOWER)); - return (v != 0 ? TRUE : FALSE); + return 1; } -#endif static int -koi8_r_is_code_ctype(OnigCodePoint code, unsigned int ctype, - OnigEncoding enc ARG_UNUSED) +koi8_r_is_code_ctype(OnigCodePoint code, unsigned int ctype) { if (code < 256) return ENC_IS_KOI8_R_CTYPE(code, ctype); @@ -179,25 +167,23 @@ static const OnigPairCaseFoldCodes CaseFoldMap[] = { static int koi8_r_apply_all_case_fold(OnigCaseFoldType flag, - OnigApplyAllCaseFoldFunc f, - void* arg, OnigEncoding enc ARG_UNUSED) + OnigApplyAllCaseFoldFunc f, void* arg) { return onigenc_apply_all_case_fold_with_map( - numberof(CaseFoldMap), CaseFoldMap, 0, + sizeof(CaseFoldMap)/sizeof(OnigPairCaseFoldCodes), CaseFoldMap, 0, flag, f, arg); } static int koi8_r_get_case_fold_codes_by_str(OnigCaseFoldType flag, - const OnigUChar* p, const OnigUChar* end, - OnigCaseFoldCodeItem items[], OnigEncoding enc ARG_UNUSED) + const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]) { return onigenc_get_case_fold_codes_by_str_with_map( - numberof(CaseFoldMap), CaseFoldMap, 0, - flag, p, end, items); + sizeof(CaseFoldMap)/sizeof(OnigPairCaseFoldCodes), CaseFoldMap, 0, + flag, p, end, items); } -OnigEncodingDefine(koi8_r, KOI8_R) = { +OnigEncodingType OnigEncodingKOI8_R = { onigenc_single_byte_mbc_enc_len, "KOI8-R", /* name */ 1, /* max enc length */ @@ -214,8 +200,9 @@ OnigEncodingDefine(koi8_r, KOI8_R) = { onigenc_not_support_get_ctype_code_range, onigenc_single_byte_left_adjust_char_head, onigenc_always_true_is_allowed_reverse_match, - onigenc_single_byte_ascii_only_case_map, - 0, - ONIGENC_FLAG_NONE, + NULL, /* init */ + NULL, /* is_initialized */ + onigenc_always_true_is_valid_mbc_string, + ENC_FLAG_ASCII_COMPATIBLE|ENC_FLAG_SKIP_OFFSET_1, + 0, 0 }; -ENC_ALIAS("CP878", "KOI8-R") diff --git a/vendor/oniguruma/oniguruma/src/make_property.sh b/vendor/oniguruma/oniguruma/src/make_property.sh new file mode 100755 index 0000000..c457ff5 --- /dev/null +++ b/vendor/oniguruma/oniguruma/src/make_property.sh @@ -0,0 +1,21 @@ +#!/bin/sh + +GPERF=gperf +SED=sed + +TMP1=gperf1.tmp +TMP2=gperf2.tmp + +GPERF_OPT='-pt -T -L ANSI-C' + +ADD_CAST='s/return +len +\+ +asso_values/return (unsigned int )len + asso_values/' + +${GPERF} ${GPERF_OPT} -N onigenc_euc_jp_lookup_property_name --output-file ${TMP1} euc_jp_prop.gperf +cat ${TMP1} | ${SED} -E "${ADD_CAST}" > euc_jp_prop.c + +${GPERF} ${GPERF_OPT} -N onigenc_sjis_lookup_property_name --output-file ${TMP2} sjis_prop.gperf +cat ${TMP2} | ${SED} -E "${ADD_CAST}" > sjis_prop.c + +rm -f ${TMP1} ${TMP2} + +exit 0 diff --git a/vendor/oniguruma/oniguruma/src/make_unicode_egcb.sh b/vendor/oniguruma/oniguruma/src/make_unicode_egcb.sh new file mode 100755 index 0000000..be60d36 --- /dev/null +++ b/vendor/oniguruma/oniguruma/src/make_unicode_egcb.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +NAME=unicode_egcb_data + +python3 make_unicode_egcb_data.py > ${NAME}.c + +exit 0 diff --git a/vendor/oniguruma/oniguruma/src/make_unicode_egcb_data.py b/vendor/oniguruma/oniguruma/src/make_unicode_egcb_data.py new file mode 100755 index 0000000..f74403e --- /dev/null +++ b/vendor/oniguruma/oniguruma/src/make_unicode_egcb_data.py @@ -0,0 +1,268 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# make_unicode_egcb_data.py +# Copyright (c) 2017-2024 K.Kosako + +import sys +import re + +MAX_CODE_POINT = 0x10ffff + +PR_TOTAL_REG = re.compile("#\s*Total\s+(?:code\s+points|elements):") +PR_LINE_REG = re.compile("([0-9A-Fa-f]+)(?:..([0-9A-Fa-f]+))?\s*;\s*(\w+)") +PA_LINE_REG = re.compile("(\w+)\s*;\s*(\w+)") +PVA_LINE_REG = re.compile("(sc|gc)\s*;\s*(\w+)\s*;\s*(\w+)(?:\s*;\s*(\w+))?") +BL_LINE_REG = re.compile("([0-9A-Fa-f]+)\.\.([0-9A-Fa-f]+)\s*;\s*(.*)") +VERSION_REG = re.compile("#\s*.*-(\d+)\.(\d+)\.(\d+)\.txt") + +VERSION_INFO = [-1, -1, -1] +DIC = { } +PROPS = [] +PropIndex = { } + +def check_version_info(s): + m = VERSION_REG.match(s) + if m is not None: + VERSION_INFO[0] = int(m.group(1)) + VERSION_INFO[1] = int(m.group(2)) + VERSION_INFO[2] = int(m.group(3)) + +def print_ranges(ranges): + for (start, end) in ranges: + print("0x%06x, 0x%06x" % (start, end)) + +def print_prop_and_index(prop, i): + print("%-35s %3d" % (prop + ',', i)) + PropIndex[prop] = i + +def dic_find_by_value(dic, v): + for key, val in dic.items(): + if val == v: + return key + + return None + + +def normalize_ranges(in_ranges, sort=False): + if sort: + ranges = sorted(in_ranges) + else: + ranges = in_ranges + + r = [] + prev = None + for (start, end) in ranges: + if prev is not None and prev >= start - 1: + (pstart, pend) = r.pop() + end = max(pend, end) + start = pstart + + r.append((start, end)) + prev = end + + return r + +def inverse_ranges(in_ranges): + r = [] + prev = 0x000000 + for (start, end) in in_ranges: + if prev < start: + r.append((prev, start - 1)) + + prev = end + 1 + + if prev < MAX_CODE_POINT: + r.append((prev, MAX_CODE_POINT)) + + return r + +def add_ranges(r1, r2): + r = r1 + r2 + return normalize_ranges(r, True) + +def sub_one_range(one_range, rs): + r = [] + (s1, e1) = one_range + n = len(rs) + for i in range(0, n): + (s2, e2) = rs[i] + if s2 >= s1 and s2 <= e1: + if s2 > s1: + r.append((s1, s2 - 1)) + if e2 >= e1: + return r + + s1 = e2 + 1 + elif s2 < s1 and e2 >= s1: + if e2 < e1: + s1 = e2 + 1 + else: + return r + + r.append((s1, e1)) + return r + +def sub_ranges(r1, r2): + r = [] + for one_range in r1: + rs = sub_one_range(one_range, r2) + r.extend(rs) + + return r + +def add_ranges_in_dic(dic): + r = [] + for k, v in dic.items(): + r = r + v + + return normalize_ranges(r, True) + +def normalize_ranges_in_dic(dic, sort=False): + for k, v in dic.items(): + r = normalize_ranges(v, sort) + dic[k] = r + +def merge_dic(to_dic, from_dic): + to_keys = to_dic.keys() + from_keys = from_dic.keys() + common = list(set(to_keys) & set(from_keys)) + if len(common) != 0: + print >> sys.stderr, "merge_dic: collision: %s" % sorted(common) + + to_dic.update(from_dic) + +def merge_props(to_props, from_props): + common = list(set(to_props) & set(from_props)) + if len(common) != 0: + print >> sys.stderr, "merge_props: collision: %s" % sorted(common) + + to_props.extend(from_props) + +def add_range_into_dic(dic, name, start, end): + d = dic.get(name, None) + if d is None: + d = [(start, end)] + dic[name] = d + else: + d.append((start, end)) + +def list_sub(a, b): + x = set(a) - set(b) + return list(x) + +def parse_properties(path): + with open(path, 'r') as f: + dic = { } + prop = None + props = [] + for line in f: + s = line.strip() + if len(s) == 0: + continue + + if s[0] == '#': + if VERSION_INFO[0] < 0: + check_version_info(s) + + m = PR_LINE_REG.match(s) + if m: + prop = m.group(3) + if m.group(2): + start = int(m.group(1), 16) + end = int(m.group(2), 16) + add_range_into_dic(dic, prop, start, end) + else: + start = int(m.group(1), 16) + add_range_into_dic(dic, prop, start, start) + + elif PR_TOTAL_REG.match(s) is not None: + props.append(prop) + + normalize_ranges_in_dic(dic) + return (dic, props) + + +### main ### +argv = sys.argv +argc = len(argv) + +dic, props = parse_properties('GraphemeBreakProperty.txt') +merge_dic(DIC, dic) +merge_props(PROPS, props) + +PROPS = sorted(PROPS) + +print('/* unicode_egcb_data.c: Generated by make_unicode_egcb_data.py. */') + +COPYRIGHT = ''' +/*- + * Copyright (c) 2017-2024 K.Kosako + * 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[0] < 0: + raise RuntimeError("Version is not found") + +print("#define GRAPHEME_BREAK_PROPERTY_VERSION %02d%02d%02d" % (VERSION_INFO[0], VERSION_INFO[1], VERSION_INFO[2])) +print('') + +ranges = [] +for prop in PROPS: + rs = DIC[prop] + for (start, end) in rs: + ranges.append((start, end, prop)) + +ranges = sorted(ranges, key=lambda x: x[0]) + +prev = -1 +for (start, end, prop) in ranges: + if prev >= start: + raise ValueError("{2}:{0} - {1} range overlap prev value {3}".format(start, end, prop, prev)) + + +print('/*') +for prop in PROPS: + print("%s" % prop) +print('*/') +print('') + +num_ranges = len(ranges) +print("static int EGCB_RANGE_NUM = %d;" % num_ranges) + +print('static EGCB_RANGE_TYPE EGCB_RANGES[] = {') +for i, (start, end, prop) in enumerate(ranges): + if i == num_ranges - 1: + comma = '' + else: + comma = ',' + + type_name = 'EGCB_' + prop + print(" {0x%06x, 0x%06x, %s }%s" % (start, end, type_name, comma)) + +print('};') + +sys.exit(0) diff --git a/vendor/oniguruma/oniguruma/src/make_unicode_fold.sh b/vendor/oniguruma/oniguruma/src/make_unicode_fold.sh new file mode 100755 index 0000000..625b3df --- /dev/null +++ b/vendor/oniguruma/oniguruma/src/make_unicode_fold.sh @@ -0,0 +1,36 @@ +#!/bin/sh + +GPERF=gperf + +TMP0=gperf0.tmp +TMP1=gperf1.tmp +TMP2=gperf2.tmp +TMP3=gperf3.tmp + +GPERF_OPT='-n -C -T -c -t -j1 -L ANSI-C ' + +python3 make_unicode_fold_data.py > unicode_fold_data.c + +${GPERF} ${GPERF_OPT} -F,-1,0 -N onigenc_unicode_unfold_key unicode_unfold_key.gperf > ${TMP0} +python3 gperf_unfold_key_conv.py < ${TMP0} > unicode_unfold_key.c + +${GPERF} ${GPERF_OPT} -F,-1 -N onigenc_unicode_fold1_key unicode_fold1_key.gperf > ${TMP1} +python3 gperf_fold_key_conv.py 1 < ${TMP1} > unicode_fold1_key.c + +${GPERF} ${GPERF_OPT} -F,-1 -N onigenc_unicode_fold2_key unicode_fold2_key.gperf > ${TMP2} +python3 gperf_fold_key_conv.py 2 < ${TMP2} > unicode_fold2_key.c + +${GPERF} ${GPERF_OPT} -F,-1 -N onigenc_unicode_fold3_key unicode_fold3_key.gperf > ${TMP3} +python3 gperf_fold_key_conv.py 3 < ${TMP3} > unicode_fold3_key.c + +# remove redundant EOLs before EOF +perl -i -pe 'BEGIN{undef $/}s/\n\n*\z/\n/;' unicode_fold_data.c +perl -i -pe 'BEGIN{undef $/}s/\n\n*\z/\n/;' unicode_fold1_key.c +perl -i -pe 'BEGIN{undef $/}s/\n\n*\z/\n/;' unicode_fold2_key.c +perl -i -pe 'BEGIN{undef $/}s/\n\n*\z/\n/;' unicode_fold3_key.c +perl -i -pe 'BEGIN{undef $/}s/\n\n*\z/\n/;' unicode_unfold_key.c + +rm -f ${TMP0} ${TMP1} ${TMP2} ${TMP3} +rm -f unicode_unfold_key.gperf unicode_fold1_key.gperf unicode_fold2_key.gperf unicode_fold3_key.gperf + +exit 0 diff --git a/vendor/oniguruma/oniguruma/src/make_unicode_fold_data.py b/vendor/oniguruma/oniguruma/src/make_unicode_fold_data.py new file mode 100755 index 0000000..81565b3 --- /dev/null +++ b/vendor/oniguruma/oniguruma/src/make_unicode_fold_data.py @@ -0,0 +1,486 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# make_unicode_fold_data.py +# Copyright (c) 2016-2024 K.Kosako + +import sys +import re + +SOURCE_FILE = 'CaseFolding.txt' +GPERF_UNFOLD_KEY_FILE = 'unicode_unfold_key.gperf' +GPERF_FOLD_KEY_FILES = ['unicode_fold1_key.gperf', 'unicode_fold2_key.gperf', 'unicode_fold3_key.gperf'] + + +DataName = 'OnigUnicodeFolds' + +ENCODING = 'utf-8' + +LINE_REG = re.compile("([0-9A-F]{1,6}); (.); ([0-9A-F]{1,6})(?: ([0-9A-F]{1,6}))?(?: ([0-9A-F]{1,6}))?;(?:\s*#\s*)(.*)") +VERSION_REG = re.compile("#.*-(\d+)\.(\d+)\.(\d+)\.txt") + +VERSION_INFO = [-1, -1, -1] + +FOLDS = {} +TURKISH_FOLDS = {} +LOCALE_FOLDS = {} + +UNFOLDS = {} +TURKISH_UNFOLDS = {} +LOCALE_UNFOLDS = {} + +COPYRIGHT = ''' +/*- + * Copyright (c) 2017-2024 K.Kosako + * 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() + + +class Entry: + def __init__(self, fold): + self.fold = fold + self.unfolds = [] + self.fold_len = len(fold) + self.index = -1 + self.comment = None + +def fold_key(fold): + sfold = map(lambda i: "%06x" % i, fold) + return ':'.join(sfold) + +def form16(x, size): + form = "0x%06x" if x > 0xffff else "0x%04x" + s = form % x + rem = size - len(s) + if rem > 0: + s = ' ' * rem + s + + return s + +def form3bytes(x): + x0 = x & 0xff + x1 = (x>>8) & 0xff + x2 = (x>>16) & 0xff + return "\\x%02x\\x%02x\\x%02x" % (x2, x1, x0) + +def enc_len(code, encode): + u = unichr(code) + s = u.encode(encode) + return len(s) + +def check_version_info(s): + m = VERSION_REG.match(s) + if m is not None: + VERSION_INFO[0] = int(m.group(1)) + VERSION_INFO[1] = int(m.group(2)) + VERSION_INFO[2] = int(m.group(3)) + +def parse_line(s): + if len(s) == 0: + return False + if s[0] == '#': + if VERSION_INFO[0] < 0: + check_version_info(s) + return False + + m = LINE_REG.match(s) + if m is None: + print >> sys.stderr, s.encode(ENCODING) + sys.exit(-1) + + s_unfold = m.group(1) + s_type = m.group(2) + s_fold = m.group(3) + comment = m.group(6) + + if s_type == 'S': + return False; + + unfold = int(s_unfold, 16) + f1 = int(s_fold, 16) + fold = [f1] + if m.group(4) is not None: + f2 = int(m.group(4), 16) + fold.append(f2) + if m.group(5) is not None: + f3 = int(m.group(5), 16) + fold.append(f3) + + if s_type == 'T': + dic = TURKISH_FOLDS + undic = TURKISH_UNFOLDS + else: + dic = FOLDS + undic = UNFOLDS + + key = fold_key(fold) + e = dic.get(key, None) + if e is None: + e = Entry(fold) + e.comment = comment + dic[key] = e + + e.unfolds.append(unfold) + + if undic.get(unfold, None) is not None: + print >> sys.stderr, ("unfold dup: 0x%04x %s\n" % (unfold, s_type)) + undic[unfold] = e + + return True + +def parse_file(f): + line = f.readline() + while line: + s = line.strip() + parse_line(s) + line = f.readline() + +def make_locale(): + for unfold, te in TURKISH_UNFOLDS.items(): + e = UNFOLDS.get(unfold, None) + if e is None: + continue + + fkey = fold_key(e.fold) + if len(e.unfolds) == 1: + del FOLDS[fkey] + else: + e.unfolds.remove(unfold) + e = Entry(e.fold) + e.unfolds.append(unfold) + + LOCALE_FOLDS[fkey] = e + LOCALE_UNFOLDS[unfold] = e + del UNFOLDS[unfold] + +def output_typedef(f): + s = """\ +typedef unsigned long OnigCodePoint; +""" + print >> f, s + +def divide_by_fold_len(d): + l = d.items() + l1 = filter(lambda x:x[1].fold_len == 1, l) + l2 = filter(lambda x:x[1].fold_len == 2, l) + l3 = filter(lambda x:x[1].fold_len == 3, l) + sl1 = sorted(l1, key=lambda x:x[0]) + sl2 = sorted(l2, key=lambda x:x[0]) + sl3 = sorted(l3, key=lambda x:x[0]) + return (sl1, sl2, sl3) + +def output_comment(f, s): + f.write(" /* %s */" % s) + +def output_data_n1(f, n, fn, c, out_comment): + for k, e in fn: + e.index = c + if out_comment and n > 1 and e.comment is not None: + output_comment(f, e.comment) + print('', file=f) + + f.write(' ') + f.write("/*%4d*/ " % c) + for i in range(0, n): + s = form16(e.fold[i], 8) + f.write(" %s," % s) + + usize = len(e.unfolds) + f.write(" %d," % usize) + for u in e.unfolds: + s = form16(u, 8) + f.write(" %s," % s) + + if out_comment and n == 1 and e.comment is not None: + if len(e.comment) < 35: + s = e.comment + else: + s = e.comment[0:33] + '..' + + output_comment(f, s) + + f.write("\n") + c += n + 1 + usize + + return c + +def output_data_n(f, name, n, fn, lfn, out_comment): + print("OnigCodePoint %s%d[] = {" % (name, n), file=f) + c = 0 + c = output_data_n1(f, n, fn, c, out_comment) + print("#define FOLDS%d_NORMAL_END_INDEX %d" % (n, c), file=f) + print(" /* ----- LOCALE ----- */", file=f) + c = output_data_n1(f, n, lfn, c, out_comment) + print("#define FOLDS%d_END_INDEX %d" % (n, c), file=f) + print("};", file=f) + +def output_fold_data(f, name, out_comment): + f1, f2, f3 = divide_by_fold_len(FOLDS) + lf1, lf2, lf3 = divide_by_fold_len(LOCALE_FOLDS) + + output_data_n(f, name, 1, f1, lf1, out_comment) + print('', file=f) + output_data_n(f, name, 2, f2, lf2, out_comment) + print('', file=f) + output_data_n(f, name, 3, f3, lf3, out_comment) + print('', file=f) + +def output_macros(f, name): + print >> f, "#define FOLDS1_FOLD(i) (%s1 + (i))" % name + print >> f, "#define FOLDS2_FOLD(i) (%s2 + (i))" % name + print >> f, "#define FOLDS3_FOLD(i) (%s3 + (i))" % name + + print >> f, "#define FOLDS1_UNFOLDS_NUM(i) %s1[(i)+1]" % name + print >> f, "#define FOLDS2_UNFOLDS_NUM(i) %s2[(i)+2]" % name + print >> f, "#define FOLDS3_UNFOLDS_NUM(i) %s3[(i)+3]" % name + + print >> f, "#define FOLDS1_UNFOLDS(i) (%s1 + (i) + 2)" % name + print >> f, "#define FOLDS2_UNFOLDS(i) (%s2 + (i) + 3)" % name + print >> f, "#define FOLDS3_UNFOLDS(i) (%s3 + (i) + 4)" % name + + print >> f, "#define FOLDS1_NEXT_INDEX(i) ((i) + 2 + %s1[(i)+1])" % name + print >> f, "#define FOLDS2_NEXT_INDEX(i) ((i) + 3 + %s1[(i)+2])" % name + print >> f, "#define FOLDS3_NEXT_INDEX(i) ((i) + 4 + %s1[(i)+3])" % name + +def output_fold_source(f, out_comment): + print("/* This file was generated by make_unicode_fold_data.py. */", file=f) + print(COPYRIGHT, file=f) + print("\n", file=f) + print('#include "regenc.h"', file=f) + print('', file=f) + if VERSION_INFO[0] < 0: + raise RuntimeError("Version is not found") + + print("#define UNICODE_CASEFOLD_VERSION %02d%02d%02d" % (VERSION_INFO[0], VERSION_INFO[1], VERSION_INFO[2])) + print('') + #output_macros(f, DataName) + print('', file=f) + #output_typedef(f) + output_fold_data(f, DataName, out_comment) + + +def output_gperf_unfold_key(f): + head = "%{\n/* This gperf source file was generated by make_unicode_fold_data.py */\n\n" + COPYRIGHT + """\ + +#include "regint.h" +%} + +struct ByUnfoldKey { + OnigCodePoint code; + short int index; + short int fold_len; +}; +%% +""" + f.write(head) + UNFOLDS.update(LOCALE_UNFOLDS) + l = UNFOLDS.items() + sl = sorted(l, key=lambda x:(x[1].fold_len, x[1].index)) + for k, e in sl: + f.write('"%s", /*0x%04x*/ %4d, %d\n' % + (form3bytes(k), k, e.index, e.fold_len)) + + print('%%', file=f) + +def output_gperf_fold_key(f, key_len): + head = "%{\n/* This gperf source file was generated by make_unicode_fold_data.py */\n\n" + COPYRIGHT + """\ + +#include "regint.h" +%} + +short int +%% +""" + f.write(head) + l = FOLDS.items() + l = filter(lambda x:x[1].fold_len == key_len, l) + sl = sorted(l, key=lambda x:x[1].index) + for k, e in sl: + skey = ''.join(map(lambda i: form3bytes(i), e.fold)) + f.write('"%s", %4d\n' % (skey, e.index)) + + print('%%', file=f) + +def output_gperf_source(): + with open(GPERF_UNFOLD_KEY_FILE, 'w') as f: + output_gperf_unfold_key(f) + + FOLDS.update(LOCALE_FOLDS) + + for i in range(1, 4): + with open(GPERF_FOLD_KEY_FILES[i-1], 'w') as f: + output_gperf_fold_key(f, i) + +def unfolds_byte_length_check(encode): + l = UNFOLDS.items() + sl = sorted(l, key=lambda x:(x[1].fold_len, x[1].index)) + for unfold, e in sl: + key_len = enc_len(unfold, encode) + fold_len = sum(map(lambda c: enc_len(c, encode), e.fold)) + if key_len > fold_len: + sfolds = ' '.join(map(lambda c: "0x%06x" % c, e.fold)) + s = "%s byte length: %d > %d: 0x%06x => %s" % (encode, key_len, fold_len, unfold, sfolds) + print >> sys.stderr, s + +def double_fold_check(): + l = UNFOLDS.items() + sl = sorted(l, key=lambda x:(x[1].fold_len, x[1].index)) + for unfold, e in sl: + for f in e.fold: + #print >> sys.stderr, ("check 0x%06x" % f) + e2 = UNFOLDS.get(f) + if e2 is not None: + s = "double folds: 0x%06x => %s, 0x%06x => %s" % (unfold, e.fold, f, e2.fold) + print >> sys.stderr, s + +def unfold_is_multi_code_folds_head_check(): + l = UNFOLDS.items() + l2 = filter(lambda x:x[1].fold_len == 2, l) + l3 = filter(lambda x:x[1].fold_len == 3, l) + sl = sorted(l, key=lambda x:(x[1].fold_len, x[1].index)) + for unfold, _ in sl: + for k, e in l2: + if e.fold[0] == unfold: + s = "unfold 0x%06x is multi-code fold head in %s" % (unfold, e.fold) + print >> sys.stderr, s + for k, e in l3: + if e.fold[0] == unfold: + s = "unfold 0x%06x is multi-code fold head in %s" % (unfold, e.fold) + print >> sys.stderr, s + +def make_one_folds(l): + h = {} + for unfold, e in l: + if e.fold_len != 1: + continue + fold = e.fold[0] + unfolds = h.get(fold) + if unfolds is None: + unfolds = [unfold] + h[fold] = unfolds + else: + unfolds.append(unfold) + + return h + +def make_foldn_heads(l, fold_len, one_folds): + h = {} + for unfold, e in l: + if e.fold_len != fold_len: + continue + unfolds = one_folds.get(e.fold[0]) + h[e.fold[0]] = (e, unfolds) + + return h + +def fold2_expansion_num(e, one_folds): + n = len(e.unfolds) + n0 = 1 + u0 = one_folds.get(e.fold[0]) + if u0 is not None: + n0 += len(u0) + n1 = 1 + u1 = one_folds.get(e.fold[1]) + if u1 is not None: + n1 += len(u1) + n += (n0 * n1) + return n + +def fold3_expansion_num(e, one_folds): + n = len(e.unfolds) + n0 = 1 + u0 = one_folds.get(e.fold[0]) + if u0 is not None: + n0 += len(u0) + n1 = 1 + u1 = one_folds.get(e.fold[1]) + if u1 is not None: + n1 += len(u1) + n2 = 1 + u2 = one_folds.get(e.fold[2]) + if u2 is not None: + n2 += len(u2) + n += (n0 * n1 * n2) + return n + +def get_all_folds_expansion_num(x, one_folds, fold2_heads, fold3_heads): + e = UNFOLDS[x] + n = 0 + if e.fold_len == 1: + n1 = len(e.unfolds) + 1 # +1: fold + fx = e.fold[0] + r = fold2_heads.get(fx) + n2 = n3 = 0 + if r is not None: + e2, _ = r + n2 = fold2_expansion_num(e2, one_folds) + r = fold3_heads.get(fx) + if r is not None: + e3, _ = r + n3 = fold3_expansion_num(e3, one_folds) + n = max(n1, n2, n3) + elif e.fold_len == 2: + n = fold2_expansion_num(e, one_folds) + elif e.fold_len == 3: + n = fold3_expansion_num(e, one_folds) + else: + raise RuntimeError("Invalid fold_len %d" % (e.fold_len)) + + return n + +def get_all_folds_expansion_max_num(): + l = UNFOLDS.items() + one_folds = make_one_folds(l) + fold2_heads = make_foldn_heads(l, 2, one_folds) + fold3_heads = make_foldn_heads(l, 3, one_folds) + sl = sorted(l, key=lambda x:(x[1].fold_len, x[1].index)) + nmax = 0 + max_unfold = None + for unfold, e in sl: + n = get_all_folds_expansion_num(unfold, one_folds, fold2_heads, fold3_heads) + if nmax < n: + nmax = n + max_unfold = unfold + + return (nmax, max_unfold) + +## main ## +with open(SOURCE_FILE, 'r') as f: + parse_file(f) + +make_locale() + +out_comment = True +output_fold_source(sys.stdout, out_comment) + +output_gperf_source() + +#unfolds_byte_length_check('utf-8') +#unfolds_byte_length_check('utf-16') +double_fold_check() +unfold_is_multi_code_folds_head_check() + +#max_num, max_code = get_all_folds_expansion_max_num() +#max_num -= 1 # remove self +#print >> sys.stderr, "max expansion: 0x%06x: %d" % (max_code, max_num) diff --git a/vendor/oniguruma/oniguruma/src/make_unicode_property.sh b/vendor/oniguruma/oniguruma/src/make_unicode_property.sh new file mode 100755 index 0000000..d36484a --- /dev/null +++ b/vendor/oniguruma/oniguruma/src/make_unicode_property.sh @@ -0,0 +1,27 @@ +#!/bin/sh + +GPERF=gperf +SED=sed + +NAME=unicode_property_data +TMP1=gperf1.tmp +TMP2=gperf2.tmp +TMP= + +GPERF_OPT='-T -C -c -t -j1 -L ANSI-C --ignore-case --pic -Q unicode_prop_name_pool' +POOL_CAST='s/\(int *\)\(size_t *\)&\(\(struct +unicode_prop_name_pool_t *\* *\) *0\)->unicode_prop_name_pool_str([^,]+)/pool_offset(\1)/g' +ADD_STATIC='s/(const +struct +PoolPropertyNameCtype +\*)/static \1/' +ADD_CAST='s/unsigned +int +hval *= *len/unsigned int hval = (unsigned int )len/' + +python3 make_unicode_property_data.py > ${NAME}.gperf +python3 make_unicode_property_data.py -posix > ${NAME}_posix.gperf + +${GPERF} ${GPERF_OPT} -N unicode_lookup_property_name --output-file ${TMP1} ${NAME}.gperf +cat ${TMP1} | ${SED} -e 's/^#line.*$//g' | ${SED} -E "${POOL_CAST}" | ${SED} -E "${ADD_STATIC}" | ${SED} -E "${ADD_CAST}" > ${NAME}.c + +${GPERF} ${GPERF_OPT} -N unicode_lookup_property_name --output-file ${TMP2} ${NAME}_posix.gperf +cat ${TMP2} | ${SED} -e 's/^#line.*$//g' | ${SED} -E "${POOL_CAST}" | ${SED} -E "${ADD_STATIC}" > ${NAME}_posix.c + +rm -f ${NAME}.gperf ${NAME}_posix.gperf ${TMP1} ${TMP2} + +exit 0 diff --git a/vendor/oniguruma/oniguruma/src/make_unicode_property_data.py b/vendor/oniguruma/oniguruma/src/make_unicode_property_data.py new file mode 100755 index 0000000..06392d0 --- /dev/null +++ b/vendor/oniguruma/oniguruma/src/make_unicode_property_data.py @@ -0,0 +1,645 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# make_unicode_property_data.py +# Copyright (c) 2016-2024 K.Kosako + +import sys +import re + +POSIX_LIST = [ + 'NEWLINE', 'Alpha', 'Blank', 'Cntrl', 'Digit', 'Graph', 'Lower', + 'Print', 'PosixPunct', 'Space', 'Upper', 'XDigit', 'Word', 'Alnum', + 'ASCII' +] + +MAX_CODE_POINT = 0x10ffff + +GRAPHEME_CLUSTER_BREAK_NAME_PREFIX = 'Grapheme_Cluster_Break_' + +UD_FIRST_REG = re.compile("<.+,\s*First>") +UD_LAST_REG = re.compile("<.+,\s*Last>") +PR_TOTAL_REG = re.compile("#\s*Total\s+(?:code\s+points|elements):") +PR_LINE_REG = re.compile("([0-9A-Fa-f]+)(?:..([0-9A-Fa-f]+))?\s*;\s*(\w+)") +PA_LINE_REG = re.compile("(\w+)\s*;\s*(\w+)") +PVA_LINE_REG = re.compile("(sc|gc)\s*;\s*(\w+)\s*;\s*(\w+)(?:\s*;\s*(\w+))?") +BL_LINE_REG = re.compile("([0-9A-Fa-f]+)\.\.([0-9A-Fa-f]+)\s*;\s*(.*)") +UNICODE_VERSION_REG = re.compile("#\s*.*-(\d+)\.(\d+)\.(\d+)\.txt") +EMOJI_VERSION_REG = re.compile("(?i)#.+Version\s+(\d+)\.(\d+)") + +VERSION_INFO = [-1, -1, -1] +EMOJI_VERSION_INFO = [-1, -1] + +DIC = { } +KDIC = { } +PropIndex = { } +PROPERTY_NAME_MAX_LEN = 0 +PROPS = None + +def normalize_prop_name(name): + name = re.sub(r'[ _]', '', name) + name = name.lower() + return name + +def fix_block_name(name): + s = re.sub(r'[- ]+', '_', name) + return 'In_' + s + +def print_ranges(ranges): + for (start, end) in ranges: + print("0x%06x, 0x%06x" % (start, end)) + + print(len(ranges)) + +def print_prop_and_index(prop, i): + print("%-35s %3d" % (prop + ',', i)) + PropIndex[prop] = i + +PRINT_CACHE = { } + +def print_property(prop, data, desc): + print('') + print("/* PROPERTY: '%s': %s */" % (prop, desc)) + + prev_prop = dic_find_by_value(PRINT_CACHE, data) + if prev_prop is not None: + print("#define CR_%s CR_%s" % (prop, prev_prop)) + else: + PRINT_CACHE[prop] = data + print("static const OnigCodePoint") + print("CR_%s[] = { %d," % (prop, len(data))) + for (start, end) in data: + print("0x%04x, 0x%04x," % (start, end)) + + print("}; /* END of CR_%s */" % prop) + + +def dic_find_by_value(dic, v): + for key, val in dic.items(): + if val == v: + return key + + return None + +def make_reverse_dic(dic): + rev = {} + for key, val in dic.items(): + d = rev.get(val, None) + if d is None: + rev[val] = [key] + else: + d.append(key) + + return rev + +def normalize_ranges(in_ranges, sort=False): + if sort: + ranges = sorted(in_ranges) + else: + ranges = in_ranges + + r = [] + prev = None + for (start, end) in ranges: + if prev is not None and prev >= start - 1: + (pstart, pend) = r.pop() + end = max(pend, end) + start = pstart + + r.append((start, end)) + prev = end + + return r + +def inverse_ranges(in_ranges): + r = [] + prev = 0x000000 + for (start, end) in in_ranges: + if prev < start: + r.append((prev, start - 1)) + + prev = end + 1 + + if prev < MAX_CODE_POINT: + r.append((prev, MAX_CODE_POINT)) + + return r + +def add_ranges(r1, r2): + r = r1 + r2 + return normalize_ranges(r, True) + +def sub_one_range(one_range, rs): + r = [] + (s1, e1) = one_range + n = len(rs) + for i in range(0, n): + (s2, e2) = rs[i] + if s2 >= s1 and s2 <= e1: + if s2 > s1: + r.append((s1, s2 - 1)) + if e2 >= e1: + return r + + s1 = e2 + 1 + elif s2 < s1 and e2 >= s1: + if e2 < e1: + s1 = e2 + 1 + else: + return r + + r.append((s1, e1)) + return r + +def sub_ranges(r1, r2): + r = [] + for one_range in r1: + rs = sub_one_range(one_range, r2) + r.extend(rs) + + return r + +def add_ranges_in_dic(dic): + r = [] + for k, v in dic.items(): + r = r + v + + return normalize_ranges(r, True) + +def normalize_ranges_in_dic(dic, sort=False): + for k, v in dic.items(): + r = normalize_ranges(v, sort) + dic[k] = r + +def merge_dic(to_dic, from_dic): + to_keys = to_dic.keys() + from_keys = from_dic.keys() + common = list(set(to_keys) & set(from_keys)) + if len(common) != 0: + print("merge_dic: collision: %s" % sorted(common), file=sys.stderr) + + to_dic.update(from_dic) + +def merge_props(to_dic, from_dic): + to_keys = to_dic.keys() + from_keys = from_dic.keys() + common = list(set(to_keys) & set(from_keys)) + if len(common) != 0: + print("merge_props: collision: %s" % sorted(common), file=sys.stderr) + + for k in from_keys: + to_dic[k] = True + +def add_range_into_dic(dic, name, start, end): + d = dic.get(name, None) + if d is None: + d = [(start, end)] + dic[name] = d + else: + d.append((start, end)) + +def list_sub(a, b): + x = set(a) - set(b) + return list(x) + + +def parse_unicode_data_file(f): + dic = { } + assigned = [] + for line in f: + s = line.strip() + if len(s) == 0: + continue + if s[0] == '#': + continue + + a = s.split(';') + code = int(a[0], 16) + desc = a[1] + prop = a[2] + if UD_FIRST_REG.match(desc) is not None: + start = code + end = None + elif UD_LAST_REG.match(desc) is not None: + end = code + else: + start = end = code + + if end is not None: + assigned.append((start, end)) + add_range_into_dic(dic, prop, start, end) + if len(prop) == 2: + add_range_into_dic(dic, prop[0:1], start, end) + + normalize_ranges_in_dic(dic) + return dic, assigned + +def parse_properties(path, klass, prop_prefix = None, version_reg = None): + version_match = None + with open(path, 'r') as f: + dic = { } + prop = None + for line in f: + s = line.strip() + if len(s) == 0: + continue + + if s[0] == '#' and version_reg is not None and version_match is None: + version_match = version_reg.match(s) + if version_match is not None: + continue + + m = PR_LINE_REG.match(s) + if m: + prop = m.group(3) + if prop_prefix is not None: + prop = prop_prefix + prop + + if m.group(2): + start = int(m.group(1), 16) + end = int(m.group(2), 16) + add_range_into_dic(dic, prop, start, end) + else: + start = int(m.group(1), 16) + add_range_into_dic(dic, prop, start, start) + + elif PR_TOTAL_REG.match(s) is not None: + KDIC[prop] = klass + + normalize_ranges_in_dic(dic) + return (dic, version_match) + +def parse_property_aliases(path): + a = { } + with open(path, 'r') as f: + for line in f: + s = line.strip() + if len(s) == 0: + continue + + m = PA_LINE_REG.match(s) + if not(m): + continue + + if m.group(1) == m.group(2): + continue + + a[m.group(1)] = m.group(2) + + return a + +def parse_property_value_aliases(path): + a = { } + with open(path, 'r') as f: + for line in f: + s = line.strip() + if len(s) == 0: + continue + + m = PVA_LINE_REG.match(s) + if not(m): + continue + + cat = m.group(1) + x2 = m.group(2) + x3 = m.group(3) + x4 = m.group(4) + if cat == 'sc': + if x2 != x3: + a[x2] = x3 + if x4 and x4 != x3: + a[x4] = x3 + else: + if x2 != x3: + a[x3] = x2 + if x4 and x4 != x2: + a[x4] = x2 + + return a + +def parse_blocks(path): + dic = { } + blocks = [] + with open(path, 'r') as f: + for line in f: + s = line.strip() + if len(s) == 0: + continue + + m = BL_LINE_REG.match(s) + if not(m): + continue + + start = int(m.group(1), 16) + end = int(m.group(2), 16) + block = fix_block_name(m.group(3)) + add_range_into_dic(dic, block, start, end) + blocks.append(block) + + noblock = fix_block_name('No_Block') + dic[noblock] = inverse_ranges(add_ranges_in_dic(dic)) + blocks.append(noblock) + return dic, blocks + +def add_primitive_props(assigned): + DIC['Assigned'] = normalize_ranges(assigned) + DIC['Any'] = [(0x000000, 0x10ffff)] + DIC['ASCII'] = [(0x000000, 0x00007f)] + DIC['NEWLINE'] = [(0x00000a, 0x00000a)] + DIC['Cn'] = inverse_ranges(DIC['Assigned']) + DIC['C'].extend(DIC['Cn']) + DIC['C'] = normalize_ranges(DIC['C'], True) + + d = [] + d.extend(DIC['Ll']) + d.extend(DIC['Lt']) + d.extend(DIC['Lu']) + DIC['LC'] = normalize_ranges(d, True) + +def add_posix_props(dic): + alnum = [] + alnum.extend(dic['Alphabetic']) + alnum.extend(dic['Nd']) # Nd == Decimal_Number + alnum = normalize_ranges(alnum, True) + + blank = [(0x0009, 0x0009)] + blank.extend(dic['Zs']) # Zs == Space_Separator + blank = normalize_ranges(blank, True) + + word = [] + word.extend(dic['Alphabetic']) + word.extend(dic['M']) # M == Mark + word.extend(dic['Nd']) + word.extend(dic['Pc']) # Pc == Connector_Punctuation + word = normalize_ranges(word, True) + + graph = sub_ranges(dic['Any'], dic['White_Space']) + graph = sub_ranges(graph, dic['Cc']) + graph = sub_ranges(graph, dic['Cs']) # Cs == Surrogate + graph = sub_ranges(graph, dic['Cn']) # Cn == Unassigned + graph = normalize_ranges(graph, True) + + p = [] + p.extend(graph) + p.extend(dic['Zs']) + p = normalize_ranges(p, True) + + dic['Alpha'] = dic['Alphabetic'] + dic['Upper'] = dic['Uppercase'] + dic['Lower'] = dic['Lowercase'] + dic['PosixPunct'] = add_ranges(dic['P'], dic['S']) # P == Punctuation + dic['Digit'] = dic['Nd'] + dic['XDigit'] = [(0x0030, 0x0039), (0x0041, 0x0046), (0x0061, 0x0066)] + dic['Alnum'] = alnum + dic['Space'] = dic['White_Space'] + dic['Blank'] = blank + dic['Cntrl'] = dic['Cc'] + dic['Word'] = word + dic['Graph'] = graph + dic['Print'] = p + + +def set_max_prop_name(name): + global PROPERTY_NAME_MAX_LEN + n = len(name) + if n > PROPERTY_NAME_MAX_LEN: + PROPERTY_NAME_MAX_LEN = n + +def entry_prop_name(name, index): + set_max_prop_name(name) + if OUTPUT_LIST_MODE and index >= len(POSIX_LIST): + print("%s" % (name), file=UPF) + +def entry_and_print_prop_and_index(name, index): + entry_prop_name(name, index) + nname = normalize_prop_name(name) + print_prop_and_index(nname, index) + +def parse_and_merge_properties(path, klass, prop_prefix = None, version_reg = None): + dic, ver_m = parse_properties(path, klass, prop_prefix, version_reg) + merge_dic(DIC, dic) + merge_props(PROPS, dic) + return dic, ver_m + + +### main ### +argv = sys.argv +argc = len(argv) + +COPYRIGHT = ''' +/*- + * Copyright (c) 2016-2024 K.Kosako + * 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() + +POSIX_ONLY = False +INCLUDE_GRAPHEME_CLUSTER_DATA = False + +for i in range(1, argc): + arg = argv[i] + if arg == '-posix': + POSIX_ONLY = True + elif arg == '-gc': + INCLUDE_GRAPHEME_CLUSTER_DATA = True + else: + print("Invalid argument: %s" % arg, file=sys.stderr) + + +OUTPUT_LIST_MODE = not(POSIX_ONLY) + +with open('UnicodeData.txt', 'r') as f: + dic, assigned = parse_unicode_data_file(f) + DIC = dic + add_primitive_props(assigned) + +PROPS = DIC.fromkeys(DIC, True) +PROPS = {k: v for k, v in PROPS.items() if k not in POSIX_LIST} + +_, ver_m = parse_and_merge_properties('DerivedCoreProperties.txt', 'Derived Property', None, UNICODE_VERSION_REG) +if ver_m is not None: + VERSION_INFO[0] = int(ver_m.group(1)) + VERSION_INFO[1] = int(ver_m.group(2)) + VERSION_INFO[2] = int(ver_m.group(3)) + +dic, _ = parse_and_merge_properties('Scripts.txt', 'Script') +DIC['Unknown'] = inverse_ranges(add_ranges_in_dic(dic)) + +parse_and_merge_properties('PropList.txt', 'Binary Property') + +_, ver_m = parse_and_merge_properties('emoji-data.txt', 'Emoji Property', None, EMOJI_VERSION_REG) +if ver_m is not None: + EMOJI_VERSION_INFO[0] = int(ver_m.group(1)) + EMOJI_VERSION_INFO[1] = int(ver_m.group(2)) + +PROPS['Unknown'] = True +KDIC['Unknown'] = 'Script' + +ALIASES = parse_property_aliases('PropertyAliases.txt') +a = parse_property_value_aliases('PropertyValueAliases.txt') +merge_dic(ALIASES, a) + +dic, BLOCKS = parse_blocks('Blocks.txt') +merge_dic(DIC, dic) + +if INCLUDE_GRAPHEME_CLUSTER_DATA: + dic, _ = parse_properties('GraphemeBreakProperty.txt', + 'GraphemeBreak Property', + GRAPHEME_CLUSTER_BREAK_NAME_PREFIX) + merge_dic(DIC, dic) + merge_props(PROPS, dic) + #prop = GRAPHEME_CLUSTER_BREAK_NAME_PREFIX + 'Other' + #DIC[prop] = inverse_ranges(add_ranges_in_dic(dic)) + #PROPS[prop] = True + #KDIC[prop] = 'GrapemeBreak Property' + +add_posix_props(DIC) +PROP_LIST = sorted(PROPS.keys()) + + +s = '''%{ +/* Generated by make_unicode_property_data.py. */ +''' +print(s) +print(COPYRIGHT) +print('') + +for prop in POSIX_LIST: + if prop == 'PosixPunct': + desc = "POSIX [[:punct:]]" + else: + desc = "POSIX [[:%s:]]" % prop + + print_property(prop, DIC[prop], desc) + +print('') + +if not(POSIX_ONLY): + for prop in PROP_LIST: + klass = KDIC.get(prop, None) + if klass is None: + n = len(prop) + if n == 1: + klass = 'Major Category' + elif n == 2: + klass = 'General Category' + else: + klass = '-' + + print_property(prop, DIC[prop], klass) + + for block in BLOCKS: + print_property(block, DIC[block], 'Block') + + +print('') +print("static const OnigCodePoint*\nconst CodeRanges[] = {") + +for prop in POSIX_LIST: + print(" CR_%s," % prop) + +if not(POSIX_ONLY): + for prop in PROP_LIST: + print(" CR_%s," % prop) + + for prop in BLOCKS: + print(" CR_%s," % prop) + +s = '''}; + +#define pool_offset(s) offsetof(struct unicode_prop_name_pool_t, unicode_prop_name_pool_str##s) + +%} +struct PoolPropertyNameCtype { + short int name; + short int ctype; +}; + +%% +''' +sys.stdout.write(s) + +if OUTPUT_LIST_MODE: + UPF = open("UNICODE_PROPERTIES", "w") + if VERSION_INFO[0] < 0: + raise RuntimeError("Unicode Version is not found") + if EMOJI_VERSION_INFO[0] < 0: + raise RuntimeError("Emoji Version is not found") + + print("Unicode Properties (Unicode Version: %d.%d.%d, Emoji: %d.%d)" % (VERSION_INFO[0], VERSION_INFO[1], VERSION_INFO[2], EMOJI_VERSION_INFO[0], EMOJI_VERSION_INFO[1]), file=UPF) + print('', file=UPF) + +index = -1 +for prop in POSIX_LIST: + index += 1 + entry_and_print_prop_and_index(prop, index) + +if not(POSIX_ONLY): + for prop in PROP_LIST: + index += 1 + entry_and_print_prop_and_index(prop, index) + + NALIASES = map(lambda x:(normalize_prop_name(x[0]), x[0], x[1]), ALIASES.items()) + NALIASES = sorted(NALIASES) + for (nk, k, v) in NALIASES: + nv = normalize_prop_name(v) + if PropIndex.get(nk, None) is not None: + print("ALIASES: already exists: %s => %s" % (k, v), file=sys.stderr) + continue + aindex = PropIndex.get(nv, None) + if aindex is None: + #print("ALIASES: value is not exist: %s => %s" % (k, v), file=sys.stderr) + continue + + entry_prop_name(k, aindex) + print_prop_and_index(nk, aindex) + + for name in BLOCKS: + index += 1 + entry_and_print_prop_and_index(name, index) + +print('%%') +print('') +if not(POSIX_ONLY): + if VERSION_INFO[0] < 0: + raise RuntimeError("Unicode Version is not found") + if EMOJI_VERSION_INFO[0] < 0: + raise RuntimeError("Emoji Version is not found") + + print("#define UNICODE_PROPERTY_VERSION %02d%02d%02d" % (VERSION_INFO[0], VERSION_INFO[1], VERSION_INFO[2])) + print("#define UNICODE_EMOJI_VERSION %02d%02d" % (EMOJI_VERSION_INFO[0], EMOJI_VERSION_INFO[1])) + print('') + +print("#define PROPERTY_NAME_MAX_SIZE %d" % (PROPERTY_NAME_MAX_LEN + 10)) +print("#define CODE_RANGES_NUM %d" % (index + 1)) + +index_props = make_reverse_dic(PropIndex) +print('') +for i in range(index + 1): + for p in index_props[i]: + print("#define PROP_INDEX_%s %d" % (p.upper(), i)) + +if OUTPUT_LIST_MODE: + UPF.close() + +sys.exit(0) diff --git a/vendor/oniguruma/oniguruma/src/make_unicode_wb.sh b/vendor/oniguruma/oniguruma/src/make_unicode_wb.sh new file mode 100755 index 0000000..61fafe5 --- /dev/null +++ b/vendor/oniguruma/oniguruma/src/make_unicode_wb.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +NAME=unicode_wb_data + +python3 make_unicode_wb_data.py > ${NAME}.c + +exit 0 diff --git a/vendor/oniguruma/oniguruma/src/make_unicode_wb_data.py b/vendor/oniguruma/oniguruma/src/make_unicode_wb_data.py new file mode 100755 index 0000000..c154d2a --- /dev/null +++ b/vendor/oniguruma/oniguruma/src/make_unicode_wb_data.py @@ -0,0 +1,268 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# make_unicode_wb_data.py +# Copyright (c) 2019-2024 K.Kosako + +import sys +import re + +MAX_CODE_POINT = 0x10ffff + +PR_TOTAL_REG = re.compile("#\s*Total\s+(?:code\s+points|elements):") +PR_LINE_REG = re.compile("([0-9A-Fa-f]+)(?:..([0-9A-Fa-f]+))?\s*;\s*(\w+)") +PA_LINE_REG = re.compile("(\w+)\s*;\s*(\w+)") +PVA_LINE_REG = re.compile("(sc|gc)\s*;\s*(\w+)\s*;\s*(\w+)(?:\s*;\s*(\w+))?") +BL_LINE_REG = re.compile("([0-9A-Fa-f]+)\.\.([0-9A-Fa-f]+)\s*;\s*(.*)") +VERSION_REG = re.compile("#\s*.*-(\d+)\.(\d+)\.(\d+)\.txt") + +VERSION_INFO = [-1, -1, -1] +DIC = { } +PROPS = [] +PropIndex = { } + +def check_version_info(s): + m = VERSION_REG.match(s) + if m is not None: + VERSION_INFO[0] = int(m.group(1)) + VERSION_INFO[1] = int(m.group(2)) + VERSION_INFO[2] = int(m.group(3)) + +def print_ranges(ranges): + for (start, end) in ranges: + print("0x%06x, 0x%06x" % (start, end)) + +def print_prop_and_index(prop, i): + print("%-35s %3d" % (prop + ',', i)) + PropIndex[prop] = i + +def dic_find_by_value(dic, v): + for key, val in dic.items(): + if val == v: + return key + + return None + + +def normalize_ranges(in_ranges, sort=False): + if sort: + ranges = sorted(in_ranges) + else: + ranges = in_ranges + + r = [] + prev = None + for (start, end) in ranges: + if prev is not None and prev >= start - 1: + (pstart, pend) = r.pop() + end = max(pend, end) + start = pstart + + r.append((start, end)) + prev = end + + return r + +def inverse_ranges(in_ranges): + r = [] + prev = 0x000000 + for (start, end) in in_ranges: + if prev < start: + r.append((prev, start - 1)) + + prev = end + 1 + + if prev < MAX_CODE_POINT: + r.append((prev, MAX_CODE_POINT)) + + return r + +def add_ranges(r1, r2): + r = r1 + r2 + return normalize_ranges(r, True) + +def sub_one_range(one_range, rs): + r = [] + (s1, e1) = one_range + n = len(rs) + for i in range(0, n): + (s2, e2) = rs[i] + if s2 >= s1 and s2 <= e1: + if s2 > s1: + r.append((s1, s2 - 1)) + if e2 >= e1: + return r + + s1 = e2 + 1 + elif s2 < s1 and e2 >= s1: + if e2 < e1: + s1 = e2 + 1 + else: + return r + + r.append((s1, e1)) + return r + +def sub_ranges(r1, r2): + r = [] + for one_range in r1: + rs = sub_one_range(one_range, r2) + r.extend(rs) + + return r + +def add_ranges_in_dic(dic): + r = [] + for k, v in dic.items(): + r = r + v + + return normalize_ranges(r, True) + +def normalize_ranges_in_dic(dic, sort=False): + for k, v in dic.items(): + r = normalize_ranges(v, sort) + dic[k] = r + +def merge_dic(to_dic, from_dic): + to_keys = to_dic.keys() + from_keys = from_dic.keys() + common = list(set(to_keys) & set(from_keys)) + if len(common) != 0: + print >> sys.stderr, "merge_dic: collision: %s" % sorted(common) + + to_dic.update(from_dic) + +def merge_props(to_props, from_props): + common = list(set(to_props) & set(from_props)) + if len(common) != 0: + print >> sys.stderr, "merge_props: collision: %s" % sorted(common) + + to_props.extend(from_props) + +def add_range_into_dic(dic, name, start, end): + d = dic.get(name, None) + if d is None: + d = [(start, end)] + dic[name] = d + else: + d.append((start, end)) + +def list_sub(a, b): + x = set(a) - set(b) + return list(x) + +def parse_properties(path): + with open(path, 'r') as f: + dic = { } + prop = None + props = [] + for line in f: + s = line.strip() + if len(s) == 0: + continue + + if s[0] == '#': + if VERSION_INFO[0] < 0: + check_version_info(s) + + m = PR_LINE_REG.match(s) + if m: + prop = m.group(3) + if m.group(2): + start = int(m.group(1), 16) + end = int(m.group(2), 16) + add_range_into_dic(dic, prop, start, end) + else: + start = int(m.group(1), 16) + add_range_into_dic(dic, prop, start, start) + + elif PR_TOTAL_REG.match(s) is not None: + props.append(prop) + + normalize_ranges_in_dic(dic) + return (dic, props) + + +### main ### +argv = sys.argv +argc = len(argv) + +dic, props = parse_properties('WordBreakProperty.txt') +merge_dic(DIC, dic) +merge_props(PROPS, props) + +PROPS = sorted(PROPS) + +print('/* unicode_wb_data.c: Generated by make_unicode_wb_data.py. */') + +COPYRIGHT = ''' +/*- + * Copyright (c) 2019-2024 K.Kosako + * 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[0] < 0: + raise RuntimeError("Version is not found.") + +print("#define WORD_BREAK_PROPERTY_VERSION %02d%02d%02d" % (VERSION_INFO[0], VERSION_INFO[1], VERSION_INFO[2])) +print('') + +ranges = [] +for prop in PROPS: + rs = DIC[prop] + for (start, end) in rs: + ranges.append((start, end, prop)) + +ranges = sorted(ranges, key=lambda x: x[0]) + +prev = -1 +for (start, end, prop) in ranges: + if prev >= start: + raise ValueError("{2}:{0} - {1} range overlap prev value {3}".format(start, end, prop, prev)) + + +print('/*') +for prop in PROPS: + print("%s" % prop) +print('*/') +print('') + +num_ranges = len(ranges) +print("static int WB_RANGE_NUM = %d;" % num_ranges) + +print('static WB_RANGE_TYPE WB_RANGES[] = {') +for i, (start, end, prop) in enumerate(ranges): + if i == num_ranges - 1: + comma = '' + else: + comma = ',' + + type_name = 'WB_' + prop + print(" {0x%06x, 0x%06x, %s }%s" % (start, end, type_name, comma)) + +print('};') + +sys.exit(0) diff --git a/vendor/onig/enc/mktable.c b/vendor/oniguruma/oniguruma/src/mktable.c similarity index 96% rename from vendor/onig/enc/mktable.c rename to vendor/oniguruma/oniguruma/src/mktable.c index 4edd5a0..1a624e7 100644 --- a/vendor/onig/enc/mktable.c +++ b/vendor/oniguruma/oniguruma/src/mktable.c @@ -2,7 +2,7 @@ mktable.c **********************************************************************/ /*- - * Copyright (c) 2002-2016 K.Kosako + * Copyright (c) 2002-2022 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -61,7 +61,7 @@ typedef struct { int num; - const char* name; + char* name; } ENC_INFO; static ENC_INFO Info[] = { @@ -269,7 +269,7 @@ static int IsBlank(int enc, int c) if (enc == ASCII) return isblank(c); - if (c == 0x09 || c == 0x20) return 1; + if (c == 0x09 || c == 0x20) return 1; switch (enc) { case UNICODE_ISO_8859_1: @@ -308,7 +308,7 @@ static int IsCntrl(int enc, int c) if (enc == ASCII) return iscntrl(c); - if (c >= 0x00 && c <= 0x1F) return 1; + if (c >= 0x00 && c <= 0x1F) return 1; switch (enc) { case UNICODE_ISO_8859_1: @@ -376,10 +376,10 @@ static int IsGraph(int enc, int c) case ISO_8859_3: if (c >= 0xa1) { if (c == 0xa5 || c == 0xae || c == 0xbe || c == 0xc3 || c == 0xd0 || - c == 0xe3 || c == 0xf0) - return 0; + c == 0xe3 || c == 0xf0) + return 0; else - return 1; + return 1; } break; @@ -392,8 +392,8 @@ static int IsGraph(int enc, int c) case ISO_8859_7: if (c >= 0xa1 && c <= 0xfe && - c != 0xa4 && c != 0xa5 && c != 0xaa && - c != 0xae && c != 0xd2) return 1; + c != 0xa4 && c != 0xa5 && c != 0xaa && + c != 0xae && c != 0xd2) return 1; break; case ISO_8859_8: @@ -564,7 +564,7 @@ static int IsPrint(int enc, int c) switch (enc) { case UNICODE_ISO_8859_1: - /* if (c >= 0x09 && c <= 0x0d) return 1; */ + if (c >= 0x09 && c <= 0x0d) return 1; if (c == 0x85) return 1; /* fall */ case ISO_8859_1: @@ -583,10 +583,10 @@ static int IsPrint(int enc, int c) case ISO_8859_3: if (c >= 0xa0) { if (c == 0xa5 || c == 0xae || c == 0xbe || c == 0xc3 || c == 0xd0 || - c == 0xe3 || c == 0xf0) - return 0; + c == 0xe3 || c == 0xf0) + return 0; else - return 1; + return 1; } break; @@ -600,8 +600,8 @@ static int IsPrint(int enc, int c) case ISO_8859_7: if (c >= 0xa0 && c <= 0xfe && - c != 0xa4 && c != 0xa5 && c != 0xaa && - c != 0xae && c != 0xd2) return 1; + c != 0xa4 && c != 0xa5 && c != 0xaa && + c != 0xae && c != 0xd2) return 1; break; case ISO_8859_8: @@ -638,24 +638,28 @@ static int IsPunct(int enc, int c) if (enc == ASCII) return ispunct(c); - if (enc == UNICODE_ISO_8859_1) { - if (c == 0x24 || c == 0x2b || c == 0x5e || c == 0x60 || - c == 0x7c || c == 0x7e) return 1; - if (c >= 0x3c && c <= 0x3e) return 1; - } - if (c >= 0x21 && c <= 0x2f) return 1; if (c >= 0x3a && c <= 0x40) return 1; if (c >= 0x5b && c <= 0x60) return 1; if (c >= 0x7b && c <= 0x7e) return 1; + if (enc == UNICODE_ISO_8859_1) { + if (c < 0x80) return 0; + + if (c >= 0xa1 && c <= 0xa9) return 1; + if (c >= 0xab && c <= 0xac) return 1; + if (c >= 0xae && c <= 0xb1) return 1; + if (c == 0xb4) return 1; + if (c >= 0xb6 && c <= 0xb8) return 1; + if (c == 0xbb || c == 0xbf || c == 0xd7 || c == 0xf7) return 1; + return 0; + } + switch (enc) { case ISO_8859_1: case ISO_8859_9: case ISO_8859_15: if (c == 0xad) return 1; - /* fall */ - case UNICODE_ISO_8859_1: if (c == 0xa1) return 1; if (c == 0xab) return 1; if (c == 0xb7) return 1; @@ -1012,7 +1016,7 @@ static int IsWord(int enc, int c) case ISO_8859_10: if (c >= 0xa1 && c <= 0xff) { if (c != 0xa7 && c != 0xad && c != 0xb0 && c != 0xb7 && c != 0xbd) - return 1; + return 1; } break; @@ -1037,7 +1041,7 @@ static int IsWord(int enc, int c) case ISO_8859_14: if (c >= 0xa1 && c <= 0xff) { if (c == 0xa3 || c == 0xa7 || c == 0xa9 || c == 0xad || c == 0xae || - c == 0xb6) return 0; + c == 0xb6) return 0; return 1; } break; @@ -1102,7 +1106,7 @@ static int IsAscii(int enc ARG_UNUSED, int c) static int IsNewline(int enc ARG_UNUSED, int c) { - if (c == 0x0a) return 1; + if (c == NEWLINE_CODE) return 1; return 0; } diff --git a/vendor/onig/enc/shift_jis.c b/vendor/oniguruma/oniguruma/src/onig_init.c similarity index 57% rename from vendor/onig/enc/shift_jis.c rename to vendor/oniguruma/oniguruma/src/onig_init.c index 65fd510..c660e7d 100644 --- a/vendor/onig/enc/shift_jis.c +++ b/vendor/oniguruma/oniguruma/src/onig_init.c @@ -1,9 +1,8 @@ /********************************************************************** - shift_jis.c - Onigmo (Oniguruma-mod) (regular expression library) + onig_init.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2009 K.Kosako - * Copyright (c) 2011-2017 K.Takata + * Copyright (c) 2016-2019 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -28,40 +27,19 @@ * SUCH DAMAGE. */ -#include "shift_jis.h" +#include "regint.h" -OnigEncodingDefine(shift_jis, Shift_JIS) = { - mbc_enc_len, - "Shift_JIS", /* name */ - 2, /* max byte length */ - 1, /* min byte length */ - onigenc_is_mbc_newline_0x0a, - mbc_to_code, - code_to_mbclen, - code_to_mbc, - mbc_case_fold, - apply_all_case_fold, - get_case_fold_codes_by_str, - property_name_to_ctype, - is_code_ctype, - get_ctype_code_range, - left_adjust_char_head, - is_allowed_reverse_match, - onigenc_ascii_only_case_map, - 0, - ONIGENC_FLAG_NONE, -}; -/* - * Name: Shift_JIS - * MIBenum: 17 - * Link: http://www.iana.org/assignments/character-sets - * Link: http://ja.wikipedia.org/wiki/Shift_JIS - */ +/* onig_init(): deprecated function */ +extern int +onig_init(void) +{ +#if 0 + OnigEncoding encs[] = { + ONIG_ENCODING_UTF8 + }; -/* - * Name: MacJapanese - * Link: http://unicode.org/Public/MAPPINGS/VENDORS/APPLE/JAPANESE.TXT - * Link: http://ja.wikipedia.org/wiki/MacJapanese - */ -ENC_REPLICATE("MacJapanese", "Shift_JIS") -ENC_ALIAS("MacJapan", "MacJapanese") + return onig_initialize(encs, sizeof(encs)/sizeof(encs[0])); +#else + return onig_initialize(0, 0); +#endif +} diff --git a/vendor/onig/onigmognu.h b/vendor/oniguruma/oniguruma/src/oniggnu.h similarity index 70% rename from vendor/onig/onigmognu.h rename to vendor/oniguruma/oniguruma/src/oniggnu.h index 8295c39..96d9085 100644 --- a/vendor/onig/onigmognu.h +++ b/vendor/oniguruma/oniguruma/src/oniggnu.h @@ -1,11 +1,10 @@ -#ifndef ONIGMOGNU_H -#define ONIGMOGNU_H +#ifndef ONIGGNU_H +#define ONIGGNU_H /********************************************************************** - onigmognu.h - Onigmo (Oniguruma-mod) (regular expression library) + oniggnu.h - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2005 K.Kosako - * Copyright (c) 2011-2016 K.Takata + * Copyright (c) 2002-2019 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -30,16 +29,18 @@ * SUCH DAMAGE. */ -#include "onigmo.h" +#include "oniguruma.h" #ifdef __cplusplus extern "C" { #endif -#define RE_MBCTYPE_ASCII 0 -#define RE_MBCTYPE_EUC 1 -#define RE_MBCTYPE_SJIS 2 -#define RE_MBCTYPE_UTF8 3 +enum { + RE_MBCTYPE_ASCII = 0, + RE_MBCTYPE_EUC = 1, + RE_MBCTYPE_SJIS = 2, + RE_MBCTYPE_UTF8 = 3 +}; /* GNU regex options */ #ifndef RE_NREGS @@ -59,28 +60,28 @@ extern "C" { ONIG_EXTERN -void re_mbcinit(int); +void re_mbcinit P_((int)); ONIG_EXTERN -int re_compile_pattern(const char*, int, struct re_pattern_buffer*, char* err_buf); +int re_compile_pattern P_((const char*, int, struct re_pattern_buffer*, char* err_buf)); ONIG_EXTERN -int re_recompile_pattern(const char*, int, struct re_pattern_buffer*, char* err_buf); +int re_recompile_pattern P_((const char*, int, struct re_pattern_buffer*, char* err_buf)); ONIG_EXTERN -void re_free_pattern(struct re_pattern_buffer*); +void re_free_pattern P_((struct re_pattern_buffer*)); ONIG_EXTERN -int re_adjust_startpos(struct re_pattern_buffer*, const char*, int, int, int); +int re_adjust_startpos P_((struct re_pattern_buffer*, const char*, int, int, int)); ONIG_EXTERN -int re_search(struct re_pattern_buffer*, const char*, int, int, int, struct re_registers*); +int re_search P_((struct re_pattern_buffer*, const char*, int, int, int, struct re_registers*)); ONIG_EXTERN -int re_match(struct re_pattern_buffer*, const char *, int, int, struct re_registers*); +int re_match P_((struct re_pattern_buffer*, const char *, int, int, struct re_registers*)); ONIG_EXTERN -void re_set_casetable(const char*); +void re_set_casetable P_((const char*)); ONIG_EXTERN -void re_free_registers(struct re_registers*); +void re_free_registers P_((struct re_registers*)); ONIG_EXTERN -int re_alloc_pattern(struct re_pattern_buffer**); /* added */ +int re_alloc_pattern P_((struct re_pattern_buffer**)); /* added */ #ifdef __cplusplus } #endif -#endif /* ONIGMOGNU_H */ +#endif /* ONIGGNU_H */ diff --git a/vendor/onig/onigmoposix.h b/vendor/oniguruma/oniguruma/src/onigposix.h similarity index 54% rename from vendor/onig/onigmoposix.h rename to vendor/oniguruma/oniguruma/src/onigposix.h index 1a8e328..3514f80 100644 --- a/vendor/onig/onigmoposix.h +++ b/vendor/oniguruma/oniguruma/src/onigposix.h @@ -1,11 +1,10 @@ -#ifndef ONIGMOPOSIX_H -#define ONIGMOPOSIX_H +#ifndef ONIGPOSIX_H +#define ONIGPOSIX_H /********************************************************************** - onigmoposix.h - Onigmo (Oniguruma-mod) (regular expression library) + onigposix.h - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2005 K.Kosako - * Copyright (c) 2011-2016 K.Takata + * Copyright (c) 2002-2020 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -29,7 +28,9 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ -#include +#ifndef ONIG_NO_STANDARD_C_HEADERS +#include +#endif #ifdef __cplusplus extern "C" { @@ -73,36 +74,48 @@ extern "C" { #define REG_POSIX_ENCODING_UTF16_LE 5 -typedef int regoff_t; +typedef int onig_posix_regoff_t; typedef struct { - regoff_t rm_so; - regoff_t rm_eo; -} regmatch_t; + onig_posix_regoff_t rm_so; + onig_posix_regoff_t rm_eo; +} onig_posix_regmatch_t; /* POSIX regex_t */ typedef struct { void* onig; /* Oniguruma regex_t* */ size_t re_nsub; int comp_options; -} regex_t; +} onig_posix_regex_t; + +#ifndef P_ +#if defined(__STDC__) || defined(_WIN32) +# define P_(args) args +#else +# define P_(args) () +#endif +#endif +#ifndef ONIG_STATIC #ifndef ONIG_EXTERN -# if defined(_WIN32) && !defined(__GNUC__) -# if defined(EXPORT) -# define ONIG_EXTERN extern __declspec(dllexport) -# else -# define ONIG_EXTERN extern __declspec(dllimport) -# endif -# endif +#if defined(_WIN32) && !defined(__GNUC__) +#if defined(ONIGURUMA_EXPORT) +#define ONIG_EXTERN extern __declspec(dllexport) +#else +#define ONIG_EXTERN extern __declspec(dllimport) +#endif +#endif #endif #ifndef ONIG_EXTERN -# define ONIG_EXTERN extern +#define ONIG_EXTERN extern +#endif +#else +#define ONIG_EXTERN extern #endif -#ifndef ONIGMO_H +#ifndef ONIGURUMA_H typedef unsigned int OnigOptionType; /* syntax */ @@ -113,14 +126,15 @@ typedef struct { OnigOptionType options; /* default option */ } OnigSyntaxType; -ONIG_EXTERN const OnigSyntaxType OnigSyntaxPosixBasic; -ONIG_EXTERN const OnigSyntaxType OnigSyntaxPosixExtended; -ONIG_EXTERN const OnigSyntaxType OnigSyntaxEmacs; -ONIG_EXTERN const OnigSyntaxType OnigSyntaxGrep; -ONIG_EXTERN const OnigSyntaxType OnigSyntaxGnuRegex; -ONIG_EXTERN const OnigSyntaxType OnigSyntaxJava; -ONIG_EXTERN const OnigSyntaxType OnigSyntaxPerl; -ONIG_EXTERN const OnigSyntaxType OnigSyntaxRuby; +ONIG_EXTERN OnigSyntaxType OnigSyntaxPosixBasic; +ONIG_EXTERN OnigSyntaxType OnigSyntaxPosixExtended; +ONIG_EXTERN OnigSyntaxType OnigSyntaxEmacs; +ONIG_EXTERN OnigSyntaxType OnigSyntaxGrep; +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) @@ -131,32 +145,49 @@ ONIG_EXTERN const 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 -ONIG_EXTERN const OnigSyntaxType* OnigDefaultSyntax; +ONIG_EXTERN OnigSyntaxType* OnigDefaultSyntax; -ONIG_EXTERN int onig_set_default_syntax(const OnigSyntaxType* syntax); -ONIG_EXTERN void onig_copy_syntax(OnigSyntaxType* to, const OnigSyntaxType* from); -ONIG_EXTERN const char* onig_version(void); -ONIG_EXTERN const char* onig_copyright(void); +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 /* ONIGMO_H */ +#endif /* ONIGURUMA_H */ -ONIG_EXTERN int regcomp(regex_t* reg, const char* pat, int options); -ONIG_EXTERN int regexec(regex_t* reg, const char* str, size_t nmatch, regmatch_t* matches, int options); -ONIG_EXTERN void regfree(regex_t* reg); -ONIG_EXTERN size_t regerror(int code, const regex_t* reg, char* buf, size_t size); +ONIG_EXTERN int onig_posix_regcomp P_((onig_posix_regex_t* reg, const char* pat, int options)); +ONIG_EXTERN int onig_posix_regexec P_((onig_posix_regex_t* reg, const char* str, size_t nmatch, onig_posix_regmatch_t* matches, int options)); +ONIG_EXTERN void onig_posix_regfree P_((onig_posix_regex_t* reg)); +ONIG_EXTERN size_t onig_posix_regerror P_((int code, const onig_posix_regex_t* reg, char* buf, size_t size)); /* extended API */ -ONIG_EXTERN void reg_set_encoding(int enc); -ONIG_EXTERN int reg_name_to_group_numbers(regex_t* reg, const unsigned char* name, const unsigned char* name_end, int** nums); -ONIG_EXTERN int reg_foreach_name(regex_t* reg, int (*func)(const unsigned char*, const unsigned char*,int,int*,regex_t*,void*), void* arg); -ONIG_EXTERN int reg_number_of_names(regex_t* reg); +ONIG_EXTERN void onig_posix_reg_set_encoding P_((int enc)); +ONIG_EXTERN int onig_posix_reg_name_to_group_numbers P_((onig_posix_regex_t* reg, const unsigned char* name, const unsigned char* name_end, int** nums)); +ONIG_EXTERN int onig_posix_reg_foreach_name P_((onig_posix_regex_t* reg, int (*func)(const unsigned char*, const unsigned char*,int,int*,onig_posix_regex_t*,void*), void* arg)); +ONIG_EXTERN int onig_posix_reg_number_of_names P_((onig_posix_regex_t* reg)); + + +/* aliases */ +#define regex_t onig_posix_regex_t +#define regmatch_t onig_posix_regmatch_t +#define regoff_t onig_posix_regoff_t + +#define regcomp onig_posix_regcomp +#define regexec onig_posix_regexec +#define regfree onig_posix_regfree +#define regerror onig_posix_regerror +#define reg_set_encoding onig_posix_reg_set_encoding +#define reg_name_to_group_numbers onig_posix_reg_name_to_group_numbers +#define reg_foreach_name onig_posix_reg_foreach_name +#define reg_number_of_names onig_posix_reg_number_of_names #ifdef __cplusplus } #endif -#endif /* ONIGMOPOSIX_H */ +#endif /* ONIGPOSIX_H */ diff --git a/vendor/oniguruma/oniguruma/src/oniguruma.h b/vendor/oniguruma/oniguruma/src/oniguruma.h new file mode 100644 index 0000000..2ab10e8 --- /dev/null +++ b/vendor/oniguruma/oniguruma/src/oniguruma.h @@ -0,0 +1,1094 @@ +#ifndef ONIGURUMA_H +#define ONIGURUMA_H +/********************************************************************** + oniguruma.h - Oniguruma (regular expression library) +**********************************************************************/ +/*- + * Copyright (c) 2002-2024 K.Kosako + * 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. + */ + +#ifdef __cplusplus +extern "C" { +#endif + +#define ONIGURUMA +#define ONIGURUMA_VERSION_MAJOR 6 +#define ONIGURUMA_VERSION_MINOR 9 +#define ONIGURUMA_VERSION_TEENY 10 + +#define ONIGURUMA_VERSION_INT 60910 + +#ifndef P_ +#if defined(__STDC__) || defined(_WIN32) +# define P_(args) args +#else +# define P_(args) () +#endif +#endif + +#ifndef PV_ +# define PV_(args) args +#endif + +#ifndef ONIG_STATIC +#ifndef ONIG_EXTERN +#if defined(_WIN32) && !defined(__GNUC__) +#if defined(ONIGURUMA_EXPORT) +#define ONIG_EXTERN extern __declspec(dllexport) +#else +#define ONIG_EXTERN extern __declspec(dllimport) +#endif +#endif +#endif + +#ifndef ONIG_EXTERN +#define ONIG_EXTERN extern +#endif +#else +#define ONIG_EXTERN extern +#endif + +#ifndef ONIG_VARIADIC_FUNC_ATTR +#define ONIG_VARIADIC_FUNC_ATTR +#endif + +/* PART: character encoding */ + +#ifndef ONIG_ESCAPE_UCHAR_COLLISION +#define UChar OnigUChar +#endif + +typedef unsigned int OnigCodePoint; +typedef unsigned char OnigUChar; +typedef unsigned int OnigCtype; +typedef unsigned int OnigLen; + +#define ONIG_INFINITE_DISTANCE ~((OnigLen )0) + +typedef unsigned int OnigCaseFoldType; /* case fold flag */ + +ONIG_EXTERN OnigCaseFoldType OnigDefaultCaseFoldFlag; + +#define ONIGENC_CASE_FOLD_ASCII_ONLY (1) +/* #define ONIGENC_CASE_FOLD_HIRAGANA_KATAKANA (1<<1) */ +/* #define ONIGENC_CASE_FOLD_KATAKANA_WIDTH (1<<2) */ +#define ONIGENC_CASE_FOLD_TURKISH_AZERI (1<<20) +#define INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR (1<<30) + +#define ONIGENC_CASE_FOLD_MIN INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR +#define ONIGENC_CASE_FOLD_DEFAULT OnigDefaultCaseFoldFlag + + +#define ONIGENC_MAX_COMP_CASE_FOLD_CODE_LEN 3 +#define ONIGENC_GET_CASE_FOLD_CODES_MAX_NUM 13 +/* 13 => Unicode:0x1ffc */ + +/* code range */ +#define ONIGENC_CODE_RANGE_NUM(range) ((int )range[0]) +#define ONIGENC_CODE_RANGE_FROM(range,i) range[((i)*2) + 1] +#define ONIGENC_CODE_RANGE_TO(range,i) range[((i)*2) + 2] + +typedef struct { + int byte_len; /* argument(original) character(s) byte length */ + int code_len; /* number of code */ + OnigCodePoint code[ONIGENC_MAX_COMP_CASE_FOLD_CODE_LEN]; +} OnigCaseFoldCodeItem; + +typedef struct { + OnigCodePoint esc; + OnigCodePoint anychar; + OnigCodePoint anytime; + OnigCodePoint zero_or_one_time; + OnigCodePoint one_or_more_time; + OnigCodePoint anychar_anytime; +} OnigMetaCharTableType; + +typedef int (*OnigApplyAllCaseFoldFunc)(OnigCodePoint from, OnigCodePoint* to, int to_len, void* arg); + +typedef struct OnigEncodingTypeST { + int (*mbc_enc_len)(const OnigUChar* p); + const char* name; + int max_enc_len; + int min_enc_len; + int (*is_mbc_newline)(const OnigUChar* p, const OnigUChar* end); + OnigCodePoint (*mbc_to_code)(const OnigUChar* p, const OnigUChar* end); + int (*code_to_mbclen)(OnigCodePoint code); + int (*code_to_mbc)(OnigCodePoint code, OnigUChar *buf); + int (*mbc_case_fold)(OnigCaseFoldType flag, const OnigUChar** pp, const OnigUChar* end, OnigUChar* to); + int (*apply_all_case_fold)(OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg); + int (*get_case_fold_codes_by_str)(OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem acs[]); + int (*property_name_to_ctype)(struct OnigEncodingTypeST* enc, OnigUChar* p, OnigUChar* end); + int (*is_code_ctype)(OnigCodePoint code, OnigCtype ctype); + int (*get_ctype_code_range)(OnigCtype ctype, OnigCodePoint* sb_out, const OnigCodePoint* ranges[]); + OnigUChar* (*left_adjust_char_head)(const OnigUChar* start, const OnigUChar* p); + int (*is_allowed_reverse_match)(const OnigUChar* p, const OnigUChar* end); + int (*init)(void); + int (*is_initialized)(void); + int (*is_valid_mbc_string)(const OnigUChar* s, const OnigUChar* end); + unsigned int flag; + OnigCodePoint sb_range; + int index; +} OnigEncodingType; + +typedef OnigEncodingType* OnigEncoding; + +ONIG_EXTERN OnigEncodingType OnigEncodingASCII; +ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_1; +ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_2; +ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_3; +ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_4; +ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_5; +ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_6; +ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_7; +ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_8; +ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_9; +ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_10; +ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_11; +ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_13; +ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_14; +ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_15; +ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_16; +ONIG_EXTERN OnigEncodingType OnigEncodingUTF8; +ONIG_EXTERN OnigEncodingType OnigEncodingUTF16_BE; +ONIG_EXTERN OnigEncodingType OnigEncodingUTF16_LE; +ONIG_EXTERN OnigEncodingType OnigEncodingUTF32_BE; +ONIG_EXTERN OnigEncodingType OnigEncodingUTF32_LE; +ONIG_EXTERN OnigEncodingType OnigEncodingEUC_JP; +ONIG_EXTERN OnigEncodingType OnigEncodingEUC_TW; +ONIG_EXTERN OnigEncodingType OnigEncodingEUC_KR; +ONIG_EXTERN OnigEncodingType OnigEncodingEUC_CN; +ONIG_EXTERN OnigEncodingType OnigEncodingSJIS; +ONIG_EXTERN OnigEncodingType OnigEncodingKOI8; +ONIG_EXTERN OnigEncodingType OnigEncodingKOI8_R; +ONIG_EXTERN OnigEncodingType OnigEncodingCP1251; +ONIG_EXTERN OnigEncodingType OnigEncodingBIG5; +ONIG_EXTERN OnigEncodingType OnigEncodingGB18030; + +#define ONIG_ENCODING_ASCII (&OnigEncodingASCII) +#define ONIG_ENCODING_ISO_8859_1 (&OnigEncodingISO_8859_1) +#define ONIG_ENCODING_ISO_8859_2 (&OnigEncodingISO_8859_2) +#define ONIG_ENCODING_ISO_8859_3 (&OnigEncodingISO_8859_3) +#define ONIG_ENCODING_ISO_8859_4 (&OnigEncodingISO_8859_4) +#define ONIG_ENCODING_ISO_8859_5 (&OnigEncodingISO_8859_5) +#define ONIG_ENCODING_ISO_8859_6 (&OnigEncodingISO_8859_6) +#define ONIG_ENCODING_ISO_8859_7 (&OnigEncodingISO_8859_7) +#define ONIG_ENCODING_ISO_8859_8 (&OnigEncodingISO_8859_8) +#define ONIG_ENCODING_ISO_8859_9 (&OnigEncodingISO_8859_9) +#define ONIG_ENCODING_ISO_8859_10 (&OnigEncodingISO_8859_10) +#define ONIG_ENCODING_ISO_8859_11 (&OnigEncodingISO_8859_11) +#define ONIG_ENCODING_ISO_8859_13 (&OnigEncodingISO_8859_13) +#define ONIG_ENCODING_ISO_8859_14 (&OnigEncodingISO_8859_14) +#define ONIG_ENCODING_ISO_8859_15 (&OnigEncodingISO_8859_15) +#define ONIG_ENCODING_ISO_8859_16 (&OnigEncodingISO_8859_16) +#define ONIG_ENCODING_UTF8 (&OnigEncodingUTF8) +#define ONIG_ENCODING_UTF16_BE (&OnigEncodingUTF16_BE) +#define ONIG_ENCODING_UTF16_LE (&OnigEncodingUTF16_LE) +#define ONIG_ENCODING_UTF32_BE (&OnigEncodingUTF32_BE) +#define ONIG_ENCODING_UTF32_LE (&OnigEncodingUTF32_LE) +#define ONIG_ENCODING_EUC_JP (&OnigEncodingEUC_JP) +#define ONIG_ENCODING_EUC_TW (&OnigEncodingEUC_TW) +#define ONIG_ENCODING_EUC_KR (&OnigEncodingEUC_KR) +#define ONIG_ENCODING_EUC_CN (&OnigEncodingEUC_CN) +#define ONIG_ENCODING_SJIS (&OnigEncodingSJIS) +#define ONIG_ENCODING_KOI8 (&OnigEncodingKOI8) +#define ONIG_ENCODING_KOI8_R (&OnigEncodingKOI8_R) +#define ONIG_ENCODING_CP1251 (&OnigEncodingCP1251) +#define ONIG_ENCODING_BIG5 (&OnigEncodingBIG5) +#define ONIG_ENCODING_GB18030 (&OnigEncodingGB18030) + +#define ONIG_ENCODING_UNDEF ((OnigEncoding )0) + + +/* work size */ +#define ONIGENC_CODE_TO_MBC_MAXLEN 7 +#define ONIGENC_MBC_CASE_FOLD_MAXLEN 18 +/* 18: 6(max-byte) * 3(case-fold chars) */ + +/* character types */ +typedef enum { + ONIGENC_CTYPE_NEWLINE = 0, + ONIGENC_CTYPE_ALPHA = 1, + ONIGENC_CTYPE_BLANK = 2, + ONIGENC_CTYPE_CNTRL = 3, + ONIGENC_CTYPE_DIGIT = 4, + ONIGENC_CTYPE_GRAPH = 5, + ONIGENC_CTYPE_LOWER = 6, + ONIGENC_CTYPE_PRINT = 7, + ONIGENC_CTYPE_PUNCT = 8, + ONIGENC_CTYPE_SPACE = 9, + ONIGENC_CTYPE_UPPER = 10, + ONIGENC_CTYPE_XDIGIT = 11, + ONIGENC_CTYPE_WORD = 12, + ONIGENC_CTYPE_ALNUM = 13, /* alpha || digit */ + ONIGENC_CTYPE_ASCII = 14 +} OnigEncCtype; + +#define ONIGENC_MAX_STD_CTYPE ONIGENC_CTYPE_ASCII + + +#define onig_enc_len(enc,p,end) ONIGENC_MBC_ENC_LEN(enc,p) + +#define ONIGENC_IS_UNDEF(enc) ((enc) == ONIG_ENCODING_UNDEF) +#define ONIGENC_IS_SINGLEBYTE(enc) (ONIGENC_MBC_MAXLEN(enc) == 1) +#define ONIGENC_IS_MBC_HEAD(enc,p) (ONIGENC_MBC_ENC_LEN(enc,p) != 1) +#define ONIGENC_IS_MBC_ASCII(p) (*(p) < 128) +#define ONIGENC_IS_CODE_ASCII(code) ((code) < 128) +#define ONIGENC_IS_MBC_WORD(enc,s,end) \ + ONIGENC_IS_CODE_WORD(enc,ONIGENC_MBC_TO_CODE(enc,s,end)) +#define ONIGENC_IS_MBC_WORD_ASCII(enc,s,end) onigenc_is_mbc_word_ascii(enc,s,end) + +#define ONIGENC_NAME(enc) ((enc)->name) + +#define ONIGENC_MBC_CASE_FOLD(enc,flag,pp,end,buf) \ + (enc)->mbc_case_fold(flag,(const OnigUChar** )pp,end,buf) +#define ONIGENC_IS_ALLOWED_REVERSE_MATCH(enc,s,end) \ + (enc)->is_allowed_reverse_match(s,end) +#define ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc,start,s) \ + (enc)->left_adjust_char_head(start, s) +#define ONIGENC_IS_VALID_MBC_STRING(enc,s,end) \ + (enc)->is_valid_mbc_string(s,end) +#define ONIGENC_APPLY_ALL_CASE_FOLD(enc,case_fold_flag,f,arg) \ + (enc)->apply_all_case_fold(case_fold_flag,f,arg) +#define ONIGENC_GET_CASE_FOLD_CODES_BY_STR(enc,case_fold_flag,p,end,acs) \ + (enc)->get_case_fold_codes_by_str(case_fold_flag,p,end,acs) +#define ONIGENC_STEP_BACK(enc,start,s,n) \ + onigenc_step_back((enc),(start),(s),(n)) + +#define ONIGENC_MBC_ENC_LEN(enc,p) (enc)->mbc_enc_len(p) +#define ONIGENC_MBC_MAXLEN(enc) ((enc)->max_enc_len) +#define ONIGENC_MBC_MAXLEN_DIST(enc) ONIGENC_MBC_MAXLEN(enc) +#define ONIGENC_MBC_MINLEN(enc) ((enc)->min_enc_len) +#define ONIGENC_IS_MBC_NEWLINE(enc,p,end) (enc)->is_mbc_newline((p),(end)) +#define ONIGENC_MBC_TO_CODE(enc,p,end) (enc)->mbc_to_code((p),(end)) +#define ONIGENC_CODE_TO_MBCLEN(enc,code) (enc)->code_to_mbclen(code) +#define ONIGENC_CODE_TO_MBC(enc,code,buf) (enc)->code_to_mbc(code,buf) +#define ONIGENC_PROPERTY_NAME_TO_CTYPE(enc,p,end) \ + (enc)->property_name_to_ctype(enc,p,end) + +#define ONIGENC_IS_CODE_CTYPE(enc,code,ctype) (enc)->is_code_ctype(code,ctype) + +#define ONIGENC_IS_CODE_NEWLINE(enc,code) \ + ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_NEWLINE) +#define ONIGENC_IS_CODE_GRAPH(enc,code) \ + ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_GRAPH) +#define ONIGENC_IS_CODE_PRINT(enc,code) \ + ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_PRINT) +#define ONIGENC_IS_CODE_ALNUM(enc,code) \ + ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_ALNUM) +#define ONIGENC_IS_CODE_ALPHA(enc,code) \ + ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_ALPHA) +#define ONIGENC_IS_CODE_LOWER(enc,code) \ + ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_LOWER) +#define ONIGENC_IS_CODE_UPPER(enc,code) \ + ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_UPPER) +#define ONIGENC_IS_CODE_CNTRL(enc,code) \ + ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_CNTRL) +#define ONIGENC_IS_CODE_PUNCT(enc,code) \ + ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_PUNCT) +#define ONIGENC_IS_CODE_SPACE(enc,code) \ + ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_SPACE) +#define ONIGENC_IS_CODE_BLANK(enc,code) \ + ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_BLANK) +#define ONIGENC_IS_CODE_DIGIT(enc,code) \ + ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_DIGIT) +#define ONIGENC_IS_CODE_XDIGIT(enc,code) \ + ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_XDIGIT) +#define ONIGENC_IS_CODE_WORD(enc,code) \ + ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_WORD) + +#define ONIGENC_GET_CTYPE_CODE_RANGE(enc,ctype,sbout,ranges) \ + (enc)->get_ctype_code_range(ctype,sbout,ranges) + +ONIG_EXTERN +OnigUChar* onigenc_step_back P_((OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, int n)); + + +/* encoding API */ +ONIG_EXTERN +int onigenc_init P_((void)); +ONIG_EXTERN +int onig_initialize_encoding P_((OnigEncoding enc)); +ONIG_EXTERN +int onigenc_set_default_encoding P_((OnigEncoding enc)); +ONIG_EXTERN +OnigEncoding onigenc_get_default_encoding P_((void)); +ONIG_EXTERN +void onigenc_set_default_caseconv_table P_((const OnigUChar* table)); +ONIG_EXTERN +OnigUChar* onigenc_get_right_adjust_char_head_with_prev P_((OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar** prev)); +ONIG_EXTERN +OnigUChar* onigenc_get_prev_char_head P_((OnigEncoding enc, const OnigUChar* start, const OnigUChar* s)); +ONIG_EXTERN +OnigUChar* onigenc_get_left_adjust_char_head P_((OnigEncoding enc, const OnigUChar* start, const OnigUChar* s)); +ONIG_EXTERN +OnigUChar* onigenc_get_right_adjust_char_head P_((OnigEncoding enc, const OnigUChar* start, const OnigUChar* s)); +ONIG_EXTERN +int onigenc_strlen P_((OnigEncoding enc, const OnigUChar* p, const OnigUChar* end)); +ONIG_EXTERN +int onigenc_strlen_null P_((OnigEncoding enc, const OnigUChar* p)); +ONIG_EXTERN +int onigenc_str_bytelen_null P_((OnigEncoding enc, const OnigUChar* p)); +ONIG_EXTERN +int onigenc_is_valid_mbc_string P_((OnigEncoding enc, const OnigUChar* s, const OnigUChar* end)); +ONIG_EXTERN +OnigUChar* onigenc_strdup P_((OnigEncoding enc, const OnigUChar* s, const OnigUChar* end)); + + +/* PART: regular expression */ + +/* config parameters */ +#define ONIG_NREGION 10 +#define ONIG_MAX_CAPTURE_NUM 2147483647 /* 2**31 - 1 */ +#define ONIG_MAX_BACKREF_NUM 1000 +#define ONIG_MAX_REPEAT_NUM 100000 +#define ONIG_MAX_MULTI_BYTE_RANGES_NUM 10000 +/* constants */ +#define ONIG_MAX_ERROR_MESSAGE_LEN 90 + +typedef unsigned int OnigOptionType; + +#define ONIG_OPTION_DEFAULT ONIG_OPTION_NONE + +/* options */ +#define ONIG_OPTION_NONE 0U +/* options (compile time) */ +#define ONIG_OPTION_IGNORECASE 1U +#define ONIG_OPTION_EXTEND (ONIG_OPTION_IGNORECASE << 1) +#define ONIG_OPTION_MULTILINE (ONIG_OPTION_EXTEND << 1) +#define ONIG_OPTION_SINGLELINE (ONIG_OPTION_MULTILINE << 1) +#define ONIG_OPTION_FIND_LONGEST (ONIG_OPTION_SINGLELINE << 1) +#define ONIG_OPTION_FIND_NOT_EMPTY (ONIG_OPTION_FIND_LONGEST << 1) +#define ONIG_OPTION_NEGATE_SINGLELINE (ONIG_OPTION_FIND_NOT_EMPTY << 1) +#define ONIG_OPTION_DONT_CAPTURE_GROUP (ONIG_OPTION_NEGATE_SINGLELINE << 1) +#define ONIG_OPTION_CAPTURE_GROUP (ONIG_OPTION_DONT_CAPTURE_GROUP << 1) +/* options (search time) */ +#define ONIG_OPTION_NOTBOL (ONIG_OPTION_CAPTURE_GROUP << 1) +#define ONIG_OPTION_NOTEOL (ONIG_OPTION_NOTBOL << 1) +#define ONIG_OPTION_POSIX_REGION (ONIG_OPTION_NOTEOL << 1) +#define ONIG_OPTION_CHECK_VALIDITY_OF_STRING (ONIG_OPTION_POSIX_REGION << 1) +/* options (compile time) */ +#define ONIG_OPTION_IGNORECASE_IS_ASCII (ONIG_OPTION_CHECK_VALIDITY_OF_STRING << 3) +#define ONIG_OPTION_WORD_IS_ASCII (ONIG_OPTION_IGNORECASE_IS_ASCII << 1) +#define ONIG_OPTION_DIGIT_IS_ASCII (ONIG_OPTION_WORD_IS_ASCII << 1) +#define ONIG_OPTION_SPACE_IS_ASCII (ONIG_OPTION_DIGIT_IS_ASCII << 1) +#define ONIG_OPTION_POSIX_IS_ASCII (ONIG_OPTION_SPACE_IS_ASCII << 1) +#define ONIG_OPTION_TEXT_SEGMENT_EXTENDED_GRAPHEME_CLUSTER (ONIG_OPTION_POSIX_IS_ASCII << 1) +#define ONIG_OPTION_TEXT_SEGMENT_WORD (ONIG_OPTION_TEXT_SEGMENT_EXTENDED_GRAPHEME_CLUSTER << 1) +/* options (search time) */ +#define ONIG_OPTION_NOT_BEGIN_STRING (ONIG_OPTION_TEXT_SEGMENT_WORD << 1) +#define ONIG_OPTION_NOT_END_STRING (ONIG_OPTION_NOT_BEGIN_STRING << 1) +#define ONIG_OPTION_NOT_BEGIN_POSITION (ONIG_OPTION_NOT_END_STRING << 1) +#define ONIG_OPTION_CALLBACK_EACH_MATCH (ONIG_OPTION_NOT_BEGIN_POSITION << 1) +#define ONIG_OPTION_MATCH_WHOLE_STRING (ONIG_OPTION_CALLBACK_EACH_MATCH << 1) + +#define ONIG_OPTION_MAXBIT ONIG_OPTION_MATCH_WHOLE_STRING + +#define ONIG_OPTION_ON(options,regopt) ((options) |= (regopt)) +#define ONIG_OPTION_OFF(options,regopt) ((options) &= ~(regopt)) +#define ONIG_IS_OPTION_ON(options,option) ((options) & (option)) + +/* syntax */ +typedef struct { + unsigned int op; + unsigned int op2; + unsigned int behavior; + OnigOptionType options; /* default option */ + OnigMetaCharTableType meta_char_table; +} OnigSyntaxType; + +ONIG_EXTERN OnigSyntaxType OnigSyntaxASIS; +ONIG_EXTERN OnigSyntaxType OnigSyntaxPosixBasic; +ONIG_EXTERN OnigSyntaxType OnigSyntaxPosixExtended; +ONIG_EXTERN OnigSyntaxType OnigSyntaxEmacs; +ONIG_EXTERN OnigSyntaxType OnigSyntaxGrep; +ONIG_EXTERN OnigSyntaxType OnigSyntaxGnuRegex; +ONIG_EXTERN OnigSyntaxType OnigSyntaxJava; +ONIG_EXTERN OnigSyntaxType OnigSyntaxPerl; +ONIG_EXTERN OnigSyntaxType OnigSyntaxPerl_NG; +ONIG_EXTERN OnigSyntaxType OnigSyntaxRuby; +ONIG_EXTERN OnigSyntaxType OnigSyntaxPython; +ONIG_EXTERN OnigSyntaxType OnigSyntaxOniguruma; + +/* predefined syntaxes (see regsyntax.c) */ +#define ONIG_SYNTAX_ASIS (&OnigSyntaxASIS) +#define ONIG_SYNTAX_POSIX_BASIC (&OnigSyntaxPosixBasic) +#define ONIG_SYNTAX_POSIX_EXTENDED (&OnigSyntaxPosixExtended) +#define ONIG_SYNTAX_EMACS (&OnigSyntaxEmacs) +#define ONIG_SYNTAX_GREP (&OnigSyntaxGrep) +#define ONIG_SYNTAX_GNU_REGEX (&OnigSyntaxGnuRegex) +#define ONIG_SYNTAX_JAVA (&OnigSyntaxJava) +#define ONIG_SYNTAX_PERL (&OnigSyntaxPerl) +#define ONIG_SYNTAX_PERL_NG (&OnigSyntaxPerl_NG) +#define ONIG_SYNTAX_RUBY (&OnigSyntaxRuby) +#define ONIG_SYNTAX_PYTHON (&OnigSyntaxPython) +#define ONIG_SYNTAX_ONIGURUMA (&OnigSyntaxOniguruma) + +/* default syntax */ +ONIG_EXTERN OnigSyntaxType* OnigDefaultSyntax; +#define ONIG_SYNTAX_DEFAULT OnigDefaultSyntax + +/* syntax (operators) */ +#define ONIG_SYN_OP_VARIABLE_META_CHARACTERS (1U<<0) +#define ONIG_SYN_OP_DOT_ANYCHAR (1U<<1) /* . */ +#define ONIG_SYN_OP_ASTERISK_ZERO_INF (1U<<2) /* * */ +#define ONIG_SYN_OP_ESC_ASTERISK_ZERO_INF (1U<<3) +#define ONIG_SYN_OP_PLUS_ONE_INF (1U<<4) /* + */ +#define ONIG_SYN_OP_ESC_PLUS_ONE_INF (1U<<5) +#define ONIG_SYN_OP_QMARK_ZERO_ONE (1U<<6) /* ? */ +#define ONIG_SYN_OP_ESC_QMARK_ZERO_ONE (1U<<7) +#define ONIG_SYN_OP_BRACE_INTERVAL (1U<<8) /* {lower,upper} */ +#define ONIG_SYN_OP_ESC_BRACE_INTERVAL (1U<<9) /* \{lower,upper\} */ +#define ONIG_SYN_OP_VBAR_ALT (1U<<10) /* | */ +#define ONIG_SYN_OP_ESC_VBAR_ALT (1U<<11) /* \| */ +#define ONIG_SYN_OP_LPAREN_SUBEXP (1U<<12) /* (...) */ +#define ONIG_SYN_OP_ESC_LPAREN_SUBEXP (1U<<13) /* \(...\) */ +#define ONIG_SYN_OP_ESC_AZ_BUF_ANCHOR (1U<<14) /* \A, \Z, \z */ +#define ONIG_SYN_OP_ESC_CAPITAL_G_BEGIN_ANCHOR (1U<<15) /* \G */ +#define ONIG_SYN_OP_DECIMAL_BACKREF (1U<<16) /* \num */ +#define ONIG_SYN_OP_BRACKET_CC (1U<<17) /* [...] */ +#define ONIG_SYN_OP_ESC_W_WORD (1U<<18) /* \w, \W */ +#define ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END (1U<<19) /* \<. \> */ +#define ONIG_SYN_OP_ESC_B_WORD_BOUND (1U<<20) /* \b, \B */ +#define ONIG_SYN_OP_ESC_S_WHITE_SPACE (1U<<21) /* \s, \S */ +#define ONIG_SYN_OP_ESC_D_DIGIT (1U<<22) /* \d, \D */ +#define ONIG_SYN_OP_LINE_ANCHOR (1U<<23) /* ^, $ */ +#define ONIG_SYN_OP_POSIX_BRACKET (1U<<24) /* [:xxxx:] */ +#define ONIG_SYN_OP_QMARK_NON_GREEDY (1U<<25) /* ??,*?,+?,{n,m}? */ +#define ONIG_SYN_OP_ESC_CONTROL_CHARS (1U<<26) /* \n,\r,\t,\a ... */ +#define ONIG_SYN_OP_ESC_C_CONTROL (1U<<27) /* \cx */ +#define ONIG_SYN_OP_ESC_OCTAL3 (1U<<28) /* \OOO */ +#define ONIG_SYN_OP_ESC_X_HEX2 (1U<<29) /* \xHH */ +#define ONIG_SYN_OP_ESC_X_BRACE_HEX8 (1U<<30) /* \x{7HHHHHHH} */ +#define ONIG_SYN_OP_ESC_O_BRACE_OCTAL (1U<<31) /* \o{1OOOOOOOOOO} */ + +#define ONIG_SYN_OP2_ESC_CAPITAL_Q_QUOTE (1U<<0) /* \Q...\E */ +#define ONIG_SYN_OP2_QMARK_GROUP_EFFECT (1U<<1) /* (?...) */ +#define ONIG_SYN_OP2_OPTION_PERL (1U<<2) /* (?imsx),(?-imsx) */ +#define ONIG_SYN_OP2_OPTION_RUBY (1U<<3) /* (?imx), (?-imx) */ +#define ONIG_SYN_OP2_PLUS_POSSESSIVE_REPEAT (1U<<4) /* ?+,*+,++ */ +#define ONIG_SYN_OP2_PLUS_POSSESSIVE_INTERVAL (1U<<5) /* {n,m}+ */ +#define ONIG_SYN_OP2_CCLASS_SET_OP (1U<<6) /* [...&&..[..]..] */ +#define ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP (1U<<7) /* (?...) */ +#define ONIG_SYN_OP2_ESC_K_NAMED_BACKREF (1U<<8) /* \k */ +#define ONIG_SYN_OP2_ESC_G_SUBEXP_CALL (1U<<9) /* \g, \g */ +#define ONIG_SYN_OP2_ATMARK_CAPTURE_HISTORY (1U<<10) /* (?@..),(?@..) */ +#define ONIG_SYN_OP2_ESC_CAPITAL_C_BAR_CONTROL (1U<<11) /* \C-x */ +#define ONIG_SYN_OP2_ESC_CAPITAL_M_BAR_META (1U<<12) /* \M-x */ +#define ONIG_SYN_OP2_ESC_V_VTAB (1U<<13) /* \v as VTAB */ +#define ONIG_SYN_OP2_ESC_U_HEX4 (1U<<14) /* \uHHHH */ +#define ONIG_SYN_OP2_ESC_GNU_BUF_ANCHOR (1U<<15) /* \`, \' */ +#define ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY (1U<<16) /* \p{...}, \P{...} */ +#define ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT (1U<<17) /* \p{^..}, \P{^..} */ +/* #define ONIG_SYN_OP2_CHAR_PROPERTY_PREFIX_IS (1U<<18) */ +#define ONIG_SYN_OP2_ESC_H_XDIGIT (1U<<19) /* \h, \H */ +#define ONIG_SYN_OP2_INEFFECTIVE_ESCAPE (1U<<20) /* \ */ +#define ONIG_SYN_OP2_QMARK_LPAREN_IF_ELSE (1U<<21) /* (?(n)) (?(...)...|...) */ +#define ONIG_SYN_OP2_ESC_CAPITAL_K_KEEP (1U<<22) /* \K */ +#define ONIG_SYN_OP2_ESC_CAPITAL_R_GENERAL_NEWLINE (1U<<23) /* \R \r\n else [\x0a-\x0d] */ +#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) /* obsoleted: use next */ +#define ONIG_SYN_OP2_ESC_X_Y_TEXT_SEGMENT (1U<<26) /* \X \y \Y */ +#define ONIG_SYN_OP2_QMARK_PERL_SUBEXP_CALL (1U<<27) /* (?R), (?&name)... */ +#define ONIG_SYN_OP2_QMARK_BRACE_CALLOUT_CONTENTS (1U<<28) /* (?{...}) (?{{...}}) */ +#define ONIG_SYN_OP2_ASTERISK_CALLOUT_NAME (1U<<29) /* (*name) (*name{a,..}) */ +#define ONIG_SYN_OP2_OPTION_ONIGURUMA (1U<<30) /* (?imxWDSPy) */ +#define ONIG_SYN_OP2_QMARK_CAPITAL_P_NAME (1U<<31) /* (?P...) (?P=name) */ + +/* syntax (behavior) */ +#define ONIG_SYN_CONTEXT_INDEP_ANCHORS (1U<<31) /* not implemented */ +#define ONIG_SYN_CONTEXT_INDEP_REPEAT_OPS (1U<<0) /* ?, *, +, {n,m} */ +#define ONIG_SYN_CONTEXT_INVALID_REPEAT_OPS (1U<<1) /* error or ignore */ +#define ONIG_SYN_ALLOW_UNMATCHED_CLOSE_SUBEXP (1U<<2) /* ...)... */ +#define ONIG_SYN_ALLOW_INVALID_INTERVAL (1U<<3) /* {??? */ +#define ONIG_SYN_ALLOW_INTERVAL_LOW_ABBREV (1U<<4) /* {,n} => {0,n} */ +#define ONIG_SYN_STRICT_CHECK_BACKREF (1U<<5) /* /(\1)/,/\1()/ ..*/ +#define ONIG_SYN_DIFFERENT_LEN_ALT_LOOK_BEHIND (1U<<6) /* (?<=a|bc) */ +#define ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP (1U<<7) /* see doc/RE */ +#define ONIG_SYN_ALLOW_MULTIPLEX_DEFINITION_NAME (1U<<8) /* (?)(?) */ +#define ONIG_SYN_FIXED_INTERVAL_IS_GREEDY_ONLY (1U<<9) /* a{n}?=(?:a{n})? */ +#define ONIG_SYN_ISOLATED_OPTION_CONTINUE_BRANCH (1U<<10) /* ..(?i)...|... */ +#define ONIG_SYN_VARIABLE_LEN_LOOK_BEHIND (1U<<11) /* (?<=a+|..) */ +#define ONIG_SYN_PYTHON (1U<<12) /* \UHHHHHHHH */ +#define ONIG_SYN_WHOLE_OPTIONS (1U<<13) /* (?Ie) */ +#define ONIG_SYN_BRE_ANCHOR_AT_EDGE_OF_SUBEXP (1U<<14) /* \(^abc$\) */ + +/* syntax (behavior) in char class [...] */ +#define ONIG_SYN_NOT_NEWLINE_IN_NEGATIVE_CC (1U<<20) /* [^...] */ +#define ONIG_SYN_BACKSLASH_ESCAPE_IN_CC (1U<<21) /* [..\w..] etc.. */ +#define ONIG_SYN_ALLOW_EMPTY_RANGE_IN_CC (1U<<22) +#define ONIG_SYN_ALLOW_DOUBLE_RANGE_OP_IN_CC (1U<<23) /* [0-9-a]=[0-9\-a] */ +#define ONIG_SYN_ALLOW_INVALID_CODE_END_OF_RANGE_IN_CC (1U<<26) +#define ONIG_SYN_ALLOW_CHAR_TYPE_FOLLOWED_BY_MINUS_IN_CC (1U<<27) /* [\w-%]=[\w\-%] */ +/* syntax (behavior) warning */ +#define ONIG_SYN_WARN_CC_OP_NOT_ESCAPED (1U<<24) /* [,-,] */ +#define ONIG_SYN_WARN_REDUNDANT_NESTED_REPEAT (1U<<25) /* (?:a*)+ */ + +/* meta character specifiers (onig_set_meta_char()) */ +#define ONIG_META_CHAR_ESCAPE 0 +#define ONIG_META_CHAR_ANYCHAR 1 +#define ONIG_META_CHAR_ANYTIME 2 +#define ONIG_META_CHAR_ZERO_OR_ONE_TIME 3 +#define ONIG_META_CHAR_ONE_OR_MORE_TIME 4 +#define ONIG_META_CHAR_ANYCHAR_ANYTIME 5 + +#define ONIG_INEFFECTIVE_META_CHAR 0 + +/* error codes */ +#define ONIG_IS_PATTERN_ERROR(ecode) ((ecode) <= -100 && (ecode) > -1000) + +/* normal return */ +#define ONIG_NORMAL 0 +#define ONIG_VALUE_IS_NOT_SET 1 +#define ONIG_MISMATCH -1 +#define ONIG_NO_SUPPORT_CONFIG -2 +#define ONIG_ABORT -3 + +/* internal error */ +#define ONIGERR_MEMORY -5 +#define ONIGERR_TYPE_BUG -6 +#define ONIGERR_PARSER_BUG -11 +#define ONIGERR_STACK_BUG -12 +#define ONIGERR_UNDEFINED_BYTECODE -13 +#define ONIGERR_UNEXPECTED_BYTECODE -14 +#define ONIGERR_MATCH_STACK_LIMIT_OVER -15 +#define ONIGERR_PARSE_DEPTH_LIMIT_OVER -16 +#define ONIGERR_RETRY_LIMIT_IN_MATCH_OVER -17 +#define ONIGERR_RETRY_LIMIT_IN_SEARCH_OVER -18 +#define ONIGERR_SUBEXP_CALL_LIMIT_IN_SEARCH_OVER -19 +#define ONIGERR_DEFAULT_ENCODING_IS_NOT_SETTED -21 /*dont use*/ +#define ONIGERR_DEFAULT_ENCODING_IS_NOT_SET -21 +#define ONIGERR_SPECIFIED_ENCODING_CANT_CONVERT_TO_WIDE_CHAR -22 +#define ONIGERR_FAIL_TO_INITIALIZE -23 +/* general error */ +#define ONIGERR_INVALID_ARGUMENT -30 +/* syntax error */ +#define ONIGERR_END_PATTERN_AT_LEFT_BRACE -100 +#define ONIGERR_END_PATTERN_AT_LEFT_BRACKET -101 +#define ONIGERR_EMPTY_CHAR_CLASS -102 +#define ONIGERR_PREMATURE_END_OF_CHAR_CLASS -103 +#define ONIGERR_END_PATTERN_AT_ESCAPE -104 +#define ONIGERR_END_PATTERN_AT_META -105 +#define ONIGERR_END_PATTERN_AT_CONTROL -106 +#define ONIGERR_META_CODE_SYNTAX -108 +#define ONIGERR_CONTROL_CODE_SYNTAX -109 +#define ONIGERR_CHAR_CLASS_VALUE_AT_END_OF_RANGE -110 +#define ONIGERR_CHAR_CLASS_VALUE_AT_START_OF_RANGE -111 +#define ONIGERR_UNMATCHED_RANGE_SPECIFIER_IN_CHAR_CLASS -112 +#define ONIGERR_TARGET_OF_REPEAT_OPERATOR_NOT_SPECIFIED -113 +#define ONIGERR_TARGET_OF_REPEAT_OPERATOR_INVALID -114 +#define ONIGERR_NESTED_REPEAT_OPERATOR -115 +#define ONIGERR_UNMATCHED_CLOSE_PARENTHESIS -116 +#define ONIGERR_END_PATTERN_WITH_UNMATCHED_PARENTHESIS -117 +#define ONIGERR_END_PATTERN_IN_GROUP -118 +#define ONIGERR_UNDEFINED_GROUP_OPTION -119 +#define ONIGERR_INVALID_GROUP_OPTION -120 +#define ONIGERR_INVALID_POSIX_BRACKET_TYPE -121 +#define ONIGERR_INVALID_LOOK_BEHIND_PATTERN -122 +#define ONIGERR_INVALID_REPEAT_RANGE_PATTERN -123 +/* values error (syntax error) */ +#define ONIGERR_TOO_BIG_NUMBER -200 +#define ONIGERR_TOO_BIG_NUMBER_FOR_REPEAT_RANGE -201 +#define ONIGERR_UPPER_SMALLER_THAN_LOWER_IN_REPEAT_RANGE -202 +#define ONIGERR_EMPTY_RANGE_IN_CHAR_CLASS -203 +#define ONIGERR_MISMATCH_CODE_LENGTH_IN_CLASS_RANGE -204 +#define ONIGERR_TOO_MANY_MULTI_BYTE_RANGES -205 +#define ONIGERR_TOO_SHORT_MULTI_BYTE_STRING -206 +#define ONIGERR_TOO_BIG_BACKREF_NUMBER -207 +#define ONIGERR_INVALID_BACKREF -208 +#define ONIGERR_NUMBERED_BACKREF_OR_CALL_NOT_ALLOWED -209 +#define ONIGERR_TOO_MANY_CAPTURES -210 +#define ONIGERR_TOO_LONG_WIDE_CHAR_VALUE -212 +#define ONIGERR_UNDEFINED_OPERATOR -213 +#define ONIGERR_EMPTY_GROUP_NAME -214 +#define ONIGERR_INVALID_GROUP_NAME -215 +#define ONIGERR_INVALID_CHAR_IN_GROUP_NAME -216 +#define ONIGERR_UNDEFINED_NAME_REFERENCE -217 +#define ONIGERR_UNDEFINED_GROUP_REFERENCE -218 +#define ONIGERR_MULTIPLEX_DEFINED_NAME -219 +#define ONIGERR_MULTIPLEX_DEFINITION_NAME_CALL -220 +#define ONIGERR_NEVER_ENDING_RECURSION -221 +#define ONIGERR_GROUP_NUMBER_OVER_FOR_CAPTURE_HISTORY -222 +#define ONIGERR_INVALID_CHAR_PROPERTY_NAME -223 +#define ONIGERR_INVALID_IF_ELSE_SYNTAX -224 +#define ONIGERR_INVALID_ABSENT_GROUP_PATTERN -225 +#define ONIGERR_INVALID_ABSENT_GROUP_GENERATOR_PATTERN -226 +#define ONIGERR_INVALID_CALLOUT_PATTERN -227 +#define ONIGERR_INVALID_CALLOUT_NAME -228 +#define ONIGERR_UNDEFINED_CALLOUT_NAME -229 +#define ONIGERR_INVALID_CALLOUT_BODY -230 +#define ONIGERR_INVALID_CALLOUT_TAG_NAME -231 +#define ONIGERR_INVALID_CALLOUT_ARG -232 +#define ONIGERR_INVALID_CODE_POINT_VALUE -400 +#define ONIGERR_INVALID_WIDE_CHAR_VALUE -400 +#define ONIGERR_TOO_BIG_WIDE_CHAR_VALUE -401 +#define ONIGERR_NOT_SUPPORTED_ENCODING_COMBINATION -402 +#define ONIGERR_INVALID_COMBINATION_OF_OPTIONS -403 +#define ONIGERR_TOO_MANY_USER_DEFINED_OBJECTS -404 +#define ONIGERR_TOO_LONG_PROPERTY_NAME -405 +#define ONIGERR_VERY_INEFFICIENT_PATTERN -406 +#define ONIGERR_LIBRARY_IS_NOT_INITIALIZED -500 + +/* errors related to thread */ +/* #define ONIGERR_OVER_THREAD_PASS_LIMIT_COUNT -1001 */ + + +/* must be smaller than MEM_STATUS_BITS_NUM (unsigned int * 8) */ +#define ONIG_MAX_CAPTURE_HISTORY_GROUP 31 +#define ONIG_IS_CAPTURE_HISTORY_GROUP(r, i) \ + ((i) <= ONIG_MAX_CAPTURE_HISTORY_GROUP && (r)->list && (r)->list[i]) + +typedef struct OnigCaptureTreeNodeStruct { + int group; /* group number */ + int beg; + int end; + int allocated; + int num_childs; + struct OnigCaptureTreeNodeStruct** childs; +} OnigCaptureTreeNode; + +/* match result region type */ +struct re_registers { + int allocated; + int num_regs; + int* beg; + int* end; + /* extended */ + OnigCaptureTreeNode* history_root; /* capture history tree root */ +}; + +/* capture tree traverse */ +#define ONIG_TRAVERSE_CALLBACK_AT_FIRST 1 +#define ONIG_TRAVERSE_CALLBACK_AT_LAST 2 +#define ONIG_TRAVERSE_CALLBACK_AT_BOTH \ + ( ONIG_TRAVERSE_CALLBACK_AT_FIRST | ONIG_TRAVERSE_CALLBACK_AT_LAST ) + + +#define ONIG_REGION_NOTPOS -1 + +typedef struct re_registers OnigRegion; + +typedef struct { + OnigEncoding enc; + OnigUChar* par; + OnigUChar* par_end; +} OnigErrorInfo; + +typedef struct { + int lower; + int upper; +} OnigRepeatRange; + +typedef void (*OnigWarnFunc) P_((const char* s)); +extern void onig_null_warn P_((const char* s)); +#define ONIG_NULL_WARN onig_null_warn + +#define ONIG_CHAR_TABLE_SIZE 256 + +struct re_pattern_buffer; +typedef struct re_pattern_buffer OnigRegexType; +typedef OnigRegexType* OnigRegex; + +#ifndef ONIG_ESCAPE_REGEX_T_COLLISION + typedef OnigRegexType regex_t; +#endif + +struct OnigRegSetStruct; +typedef struct OnigRegSetStruct OnigRegSet; + +typedef enum { + ONIG_REGSET_POSITION_LEAD = 0, + ONIG_REGSET_REGEX_LEAD = 1, + ONIG_REGSET_PRIORITY_TO_REGEX_ORDER = 2 +} OnigRegSetLead; + +typedef struct { + int num_of_elements; + OnigEncoding pattern_enc; + OnigEncoding target_enc; + OnigSyntaxType* syntax; + OnigOptionType option; + OnigCaseFoldType case_fold_flag; +} OnigCompileInfo; + +typedef int (*OnigCallbackEachMatchFunc)(const OnigUChar* str, const OnigUChar* end, const OnigUChar* match_start, OnigRegion* region, void* user_data); + + +/* types for callout */ +typedef enum { + ONIG_CALLOUT_IN_PROGRESS = 1, /* 1<<0 */ + ONIG_CALLOUT_IN_RETRACTION = 2 /* 1<<1 */ +} OnigCalloutIn; + +#define ONIG_CALLOUT_IN_BOTH (ONIG_CALLOUT_IN_PROGRESS | ONIG_CALLOUT_IN_RETRACTION) + +typedef enum { + ONIG_CALLOUT_OF_CONTENTS = 0, + ONIG_CALLOUT_OF_NAME = 1 +} OnigCalloutOf; + +typedef enum { + ONIG_CALLOUT_TYPE_SINGLE = 0, + ONIG_CALLOUT_TYPE_START_CALL = 1, + ONIG_CALLOUT_TYPE_BOTH_CALL = 2, + ONIG_CALLOUT_TYPE_START_MARK_END_CALL = 3, +} OnigCalloutType; + + +#define ONIG_NON_NAME_ID -1 +#define ONIG_NON_CALLOUT_NUM 0 + +#define ONIG_CALLOUT_MAX_ARGS_NUM 4 +#define ONIG_CALLOUT_DATA_SLOT_NUM 5 + +struct OnigCalloutArgsStruct; +typedef struct OnigCalloutArgsStruct OnigCalloutArgs; + +typedef int (*OnigCalloutFunc)(OnigCalloutArgs* args, void* user_data); + +/* callout function return values (less than -1: error code) */ +typedef enum { + ONIG_CALLOUT_FAIL = 1, + ONIG_CALLOUT_SUCCESS = 0 +} OnigCalloutResult; + +typedef enum { + ONIG_TYPE_VOID = 0, + ONIG_TYPE_LONG = 1<<0, + ONIG_TYPE_CHAR = 1<<1, + ONIG_TYPE_STRING = 1<<2, + ONIG_TYPE_POINTER = 1<<3, + ONIG_TYPE_TAG = 1<<4, +} OnigType; + +typedef union { + long l; + OnigCodePoint c; + struct { + OnigUChar* start; + OnigUChar* end; + } s; + void* p; + int tag; /* tag -> callout_num */ +} OnigValue; + + +struct OnigMatchParamStruct; +typedef struct OnigMatchParamStruct OnigMatchParam; + + +/* Oniguruma Native API */ + +ONIG_EXTERN +int onig_initialize P_((OnigEncoding encodings[], int number_of_encodings)); +/* onig_init(): deprecated function. Use onig_initialize(). */ +ONIG_EXTERN +int onig_init P_((void)); +ONIG_EXTERN +int ONIG_VARIADIC_FUNC_ATTR onig_error_code_to_str PV_((OnigUChar* s, int err_code, ...)); +ONIG_EXTERN +int onig_is_error_code_needs_param PV_((int code)); +ONIG_EXTERN +void onig_set_warn_func P_((OnigWarnFunc f)); +ONIG_EXTERN +void onig_set_verb_warn_func P_((OnigWarnFunc f)); +ONIG_EXTERN +int onig_new P_((OnigRegex*, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigOptionType option, OnigEncoding enc, OnigSyntaxType* syntax, OnigErrorInfo* einfo)); +ONIG_EXTERN +int onig_reg_init P_((OnigRegex reg, OnigOptionType option, OnigCaseFoldType case_fold_flag, OnigEncoding enc, OnigSyntaxType* syntax)); +int onig_new_without_alloc P_((OnigRegex, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigOptionType option, OnigEncoding enc, OnigSyntaxType* syntax, OnigErrorInfo* einfo)); +ONIG_EXTERN +int onig_new_deluxe P_((OnigRegex* reg, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigCompileInfo* ci, OnigErrorInfo* einfo)); +ONIG_EXTERN +void onig_free P_((OnigRegex)); +ONIG_EXTERN +void onig_free_body P_((OnigRegex)); +ONIG_EXTERN +int onig_scan(OnigRegex reg, const OnigUChar* str, const OnigUChar* end, OnigRegion* region, OnigOptionType option, int (*scan_callback)(int, int, OnigRegion*, void*), void* callback_arg); +ONIG_EXTERN +int onig_search P_((OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* start, const OnigUChar* range, OnigRegion* region, OnigOptionType option)); +ONIG_EXTERN +int onig_search_with_param P_((OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* start, const OnigUChar* range, OnigRegion* region, OnigOptionType option, OnigMatchParam* mp)); +ONIG_EXTERN +int onig_match P_((OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* at, OnigRegion* region, OnigOptionType option)); +ONIG_EXTERN +int onig_match_with_param P_((OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* at, OnigRegion* region, OnigOptionType option, OnigMatchParam* mp)); + +ONIG_EXTERN +int onig_regset_new P_((OnigRegSet** rset, int n, OnigRegex regs[])); +ONIG_EXTERN +int onig_regset_add P_((OnigRegSet* set, OnigRegex reg)); +ONIG_EXTERN +int onig_regset_replace P_((OnigRegSet* set, int at, OnigRegex reg)); +ONIG_EXTERN +void onig_regset_free P_((OnigRegSet* set)); +ONIG_EXTERN +int onig_regset_number_of_regex P_((OnigRegSet* set)); +ONIG_EXTERN +OnigRegex onig_regset_get_regex P_((OnigRegSet* set, int at)); +ONIG_EXTERN +OnigRegion* onig_regset_get_region P_((OnigRegSet* set, int at)); +ONIG_EXTERN +int onig_regset_search P_((OnigRegSet* set, const OnigUChar* str, const OnigUChar* end, const OnigUChar* start, const OnigUChar* range, OnigRegSetLead lead, OnigOptionType option, int* rmatch_pos)); +ONIG_EXTERN +int onig_regset_search_with_param P_((OnigRegSet* set, const OnigUChar* str, const OnigUChar* end, const OnigUChar* start, const OnigUChar* range, OnigRegSetLead lead, OnigOptionType option, OnigMatchParam* mps[], int* rmatch_pos)); + +ONIG_EXTERN +OnigRegion* onig_region_new P_((void)); +ONIG_EXTERN +void onig_region_init P_((OnigRegion* region)); +ONIG_EXTERN +void onig_region_free P_((OnigRegion* region, int free_self)); +ONIG_EXTERN +void onig_region_copy P_((OnigRegion* to, OnigRegion* from)); +ONIG_EXTERN +void onig_region_clear P_((OnigRegion* region)); +ONIG_EXTERN +int onig_region_resize P_((OnigRegion* region, int n)); +ONIG_EXTERN +int onig_region_set P_((OnigRegion* region, int at, int beg, int end)); +ONIG_EXTERN +int onig_name_to_group_numbers P_((OnigRegex reg, const OnigUChar* name, const OnigUChar* name_end, int** nums)); +ONIG_EXTERN +int onig_name_to_backref_number P_((OnigRegex reg, const OnigUChar* name, const OnigUChar* name_end, OnigRegion *region)); +ONIG_EXTERN +int onig_foreach_name P_((OnigRegex reg, int (*func)(const OnigUChar*, const OnigUChar*,int,int*,OnigRegex,void*), void* arg)); +ONIG_EXTERN +int onig_number_of_names P_((OnigRegex reg)); +ONIG_EXTERN +int onig_number_of_captures P_((OnigRegex reg)); +ONIG_EXTERN +int onig_number_of_capture_histories P_((OnigRegex reg)); +ONIG_EXTERN +OnigCaptureTreeNode* onig_get_capture_tree P_((OnigRegion* region)); +ONIG_EXTERN +int onig_capture_tree_traverse P_((OnigRegion* region, int at, int(*callback_func)(int,int,int,int,int,void*), void* arg)); +ONIG_EXTERN +int onig_noname_group_capture_is_active P_((OnigRegex reg)); +ONIG_EXTERN +OnigEncoding onig_get_encoding P_((OnigRegex reg)); +ONIG_EXTERN +OnigOptionType onig_get_options P_((OnigRegex reg)); +ONIG_EXTERN +OnigCaseFoldType onig_get_case_fold_flag P_((OnigRegex reg)); +ONIG_EXTERN +OnigSyntaxType* onig_get_syntax P_((OnigRegex reg)); +ONIG_EXTERN +int onig_set_default_syntax P_((OnigSyntaxType* syntax)); +ONIG_EXTERN +void onig_copy_syntax P_((OnigSyntaxType* to, OnigSyntaxType* from)); +ONIG_EXTERN +unsigned int onig_get_syntax_op P_((OnigSyntaxType* syntax)); +ONIG_EXTERN +unsigned int onig_get_syntax_op2 P_((OnigSyntaxType* syntax)); +ONIG_EXTERN +unsigned int onig_get_syntax_behavior P_((OnigSyntaxType* syntax)); +ONIG_EXTERN +OnigOptionType onig_get_syntax_options P_((OnigSyntaxType* syntax)); +ONIG_EXTERN +void onig_set_syntax_op P_((OnigSyntaxType* syntax, unsigned int op)); +ONIG_EXTERN +void onig_set_syntax_op2 P_((OnigSyntaxType* syntax, unsigned int op2)); +ONIG_EXTERN +void onig_set_syntax_behavior P_((OnigSyntaxType* syntax, unsigned int behavior)); +ONIG_EXTERN +void onig_set_syntax_options P_((OnigSyntaxType* syntax, OnigOptionType options)); +ONIG_EXTERN +int onig_set_meta_char P_((OnigSyntaxType* syntax, unsigned int what, OnigCodePoint code)); +ONIG_EXTERN +void onig_copy_encoding P_((OnigEncoding to, OnigEncoding from)); +ONIG_EXTERN +OnigCaseFoldType onig_get_default_case_fold_flag P_((void)); +ONIG_EXTERN +int onig_set_default_case_fold_flag P_((OnigCaseFoldType case_fold_flag)); +ONIG_EXTERN +unsigned int onig_get_match_stack_limit_size P_((void)); +ONIG_EXTERN +int onig_set_match_stack_limit_size P_((unsigned int size)); +ONIG_EXTERN +unsigned long onig_get_retry_limit_in_match P_((void)); +ONIG_EXTERN +int onig_set_retry_limit_in_match P_((unsigned long n)); +ONIG_EXTERN +unsigned long onig_get_retry_limit_in_search P_((void)); +ONIG_EXTERN +int onig_set_retry_limit_in_search P_((unsigned long n)); +ONIG_EXTERN +unsigned int onig_get_parse_depth_limit P_((void)); +ONIG_EXTERN +int onig_set_capture_num_limit P_((int num)); +ONIG_EXTERN +int onig_set_parse_depth_limit P_((unsigned int depth)); +ONIG_EXTERN +unsigned long onig_get_subexp_call_limit_in_search P_((void)); +ONIG_EXTERN +int onig_set_subexp_call_limit_in_search P_((unsigned long n)); +ONIG_EXTERN +int onig_get_subexp_call_max_nest_level P_((void)); +ONIG_EXTERN +int onig_set_subexp_call_max_nest_level P_((int level)); +ONIG_EXTERN +int onig_unicode_define_user_property P_((const char* name, OnigCodePoint* ranges)); +ONIG_EXTERN +int onig_end P_((void)); +ONIG_EXTERN +const char* onig_version P_((void)); +ONIG_EXTERN +const char* onig_copyright P_((void)); + +/* for callback each match */ +ONIG_EXTERN +OnigCallbackEachMatchFunc onig_get_callback_each_match P_((void)); +ONIG_EXTERN +int onig_set_callback_each_match P_((OnigCallbackEachMatchFunc f)); + +/* for OnigMatchParam */ +ONIG_EXTERN +OnigMatchParam* onig_new_match_param P_((void)); +ONIG_EXTERN +void onig_free_match_param P_((OnigMatchParam* p)); +ONIG_EXTERN +void onig_free_match_param_content P_((OnigMatchParam* p)); +ONIG_EXTERN +int onig_initialize_match_param P_((OnigMatchParam* mp)); +ONIG_EXTERN +int onig_set_match_stack_limit_size_of_match_param P_((OnigMatchParam* param, unsigned int limit)); +ONIG_EXTERN +int onig_set_retry_limit_in_match_of_match_param P_((OnigMatchParam* param, unsigned long limit)); +ONIG_EXTERN +int onig_set_retry_limit_in_search_of_match_param P_((OnigMatchParam* param, unsigned long limit)); +ONIG_EXTERN +int onig_set_progress_callout_of_match_param P_((OnigMatchParam* param, OnigCalloutFunc f)); +ONIG_EXTERN +int onig_set_retraction_callout_of_match_param P_((OnigMatchParam* param, OnigCalloutFunc f)); +ONIG_EXTERN +int onig_set_callout_user_data_of_match_param P_((OnigMatchParam* param, void* user_data)); + +/* for callout functions */ +ONIG_EXTERN +OnigCalloutFunc onig_get_progress_callout P_((void)); +ONIG_EXTERN +int onig_set_progress_callout P_((OnigCalloutFunc f)); +ONIG_EXTERN +OnigCalloutFunc onig_get_retraction_callout P_((void)); +ONIG_EXTERN +int onig_set_retraction_callout P_((OnigCalloutFunc f)); +ONIG_EXTERN +int onig_set_callout_of_name P_((OnigEncoding enc, OnigCalloutType type, OnigUChar* name, OnigUChar* name_end, int callout_in, OnigCalloutFunc callout, OnigCalloutFunc end_callout, int arg_num, unsigned int arg_types[], int optional_arg_num, OnigValue opt_defaults[])); +ONIG_EXTERN +OnigUChar* onig_get_callout_name_by_name_id P_((int id)); +ONIG_EXTERN +int onig_get_callout_num_by_tag P_((OnigRegex reg, const OnigUChar* tag, const OnigUChar* tag_end)); +ONIG_EXTERN +int onig_get_callout_data_by_tag P_((OnigRegex reg, OnigMatchParam* mp, const OnigUChar* tag, const OnigUChar* tag_end, int slot, OnigType* type, OnigValue* val)); +ONIG_EXTERN +int onig_set_callout_data_by_tag P_((OnigRegex reg, OnigMatchParam* mp, const OnigUChar* tag, const OnigUChar* tag_end, int slot, OnigType type, OnigValue* val)); +ONIG_EXTERN +int onig_get_callout_data_by_tag_dont_clear_old P_((OnigRegex reg, OnigMatchParam* mp, const OnigUChar* tag, const OnigUChar* tag_end, int slot, OnigType* type, OnigValue* val)); + +/* used in callout functions */ +ONIG_EXTERN +int onig_get_callout_num_by_callout_args P_((OnigCalloutArgs* args)); +ONIG_EXTERN +OnigCalloutIn onig_get_callout_in_by_callout_args P_((OnigCalloutArgs* args)); +ONIG_EXTERN +int onig_get_name_id_by_callout_args P_((OnigCalloutArgs* args)); +ONIG_EXTERN +const OnigUChar* onig_get_contents_by_callout_args P_((OnigCalloutArgs* args)); +ONIG_EXTERN +const OnigUChar* onig_get_contents_end_by_callout_args P_((OnigCalloutArgs* args)); +ONIG_EXTERN +int onig_get_args_num_by_callout_args P_((OnigCalloutArgs* args)); +ONIG_EXTERN +int onig_get_passed_args_num_by_callout_args P_((OnigCalloutArgs* args)); +ONIG_EXTERN +int onig_get_arg_by_callout_args P_((OnigCalloutArgs* args, int index, OnigType* type, OnigValue* val)); +ONIG_EXTERN +const OnigUChar* onig_get_string_by_callout_args P_((OnigCalloutArgs* args)); +ONIG_EXTERN +const OnigUChar* onig_get_string_end_by_callout_args P_((OnigCalloutArgs* args)); +ONIG_EXTERN +const OnigUChar* onig_get_start_by_callout_args P_((OnigCalloutArgs* args)); +ONIG_EXTERN +const OnigUChar* onig_get_right_range_by_callout_args P_((OnigCalloutArgs* args)); +ONIG_EXTERN +const OnigUChar* onig_get_current_by_callout_args P_((OnigCalloutArgs* args)); +ONIG_EXTERN +OnigRegex onig_get_regex_by_callout_args P_((OnigCalloutArgs* args)); +ONIG_EXTERN +unsigned long onig_get_retry_counter_by_callout_args P_((OnigCalloutArgs* args)); +ONIG_EXTERN +int onig_callout_tag_is_exist_at_callout_num P_((OnigRegex reg, int callout_num)); +ONIG_EXTERN +const OnigUChar* onig_get_callout_tag_start P_((OnigRegex reg, int callout_num)); +ONIG_EXTERN +const OnigUChar* onig_get_callout_tag_end P_((OnigRegex reg, int callout_num)); +ONIG_EXTERN +int onig_get_callout_data_dont_clear_old P_((OnigRegex reg, OnigMatchParam* mp, int callout_num, int slot, OnigType* type, OnigValue* val)); +ONIG_EXTERN +int onig_get_callout_data_by_callout_args_self_dont_clear_old P_((OnigCalloutArgs* args, int slot, OnigType* type, OnigValue* val)); +ONIG_EXTERN +int onig_get_callout_data P_((OnigRegex reg, OnigMatchParam* mp, int callout_num, int slot, OnigType* type, OnigValue* val)); +ONIG_EXTERN +int onig_get_callout_data_by_callout_args P_((OnigCalloutArgs* args, int callout_num, int slot, OnigType* type, OnigValue* val)); +ONIG_EXTERN +int onig_get_callout_data_by_callout_args_self P_((OnigCalloutArgs* args, int slot, OnigType* type, OnigValue* val)); +ONIG_EXTERN +int onig_set_callout_data P_((OnigRegex reg, OnigMatchParam* mp, int callout_num, int slot, OnigType type, OnigValue* val)); +ONIG_EXTERN +int onig_set_callout_data_by_callout_args P_((OnigCalloutArgs* args, int callout_num, int slot, OnigType type, OnigValue* val)); +ONIG_EXTERN +int onig_set_callout_data_by_callout_args_self P_((OnigCalloutArgs* args, int slot, OnigType type, OnigValue* val)); +ONIG_EXTERN +int onig_get_capture_range_in_callout P_((OnigCalloutArgs* args, int mem_num, int* begin, int* end)); +ONIG_EXTERN +int onig_get_used_stack_size_in_callout P_((OnigCalloutArgs* args, int* used_num, int* used_bytes)); + +/* builtin callout functions */ +ONIG_EXTERN +int onig_builtin_fail P_((OnigCalloutArgs* args, void* user_data)); +ONIG_EXTERN +int onig_builtin_mismatch P_((OnigCalloutArgs* args, void* user_data)); +ONIG_EXTERN +int onig_builtin_error P_((OnigCalloutArgs* args, void* user_data)); +ONIG_EXTERN +int onig_builtin_skip P_((OnigCalloutArgs* args, void* user_data)); +ONIG_EXTERN +int onig_builtin_count P_((OnigCalloutArgs* args, void* user_data)); +ONIG_EXTERN +int onig_builtin_total_count P_((OnigCalloutArgs* args, void* user_data)); +ONIG_EXTERN +int onig_builtin_max P_((OnigCalloutArgs* args, void* user_data)); +ONIG_EXTERN +int onig_builtin_cmp P_((OnigCalloutArgs* args, void* user_data)); + +ONIG_EXTERN +int onig_setup_builtin_monitors_by_ascii_encoded_name P_((void* fp)); + +#ifdef __cplusplus +} +#endif + +#endif /* ONIGURUMA_H */ diff --git a/vendor/oniguruma/oniguruma/src/regcomp.c b/vendor/oniguruma/oniguruma/src/regcomp.c new file mode 100644 index 0000000..9f2d5aa --- /dev/null +++ b/vendor/oniguruma/oniguruma/src/regcomp.c @@ -0,0 +1,8589 @@ +/********************************************************************** + regcomp.c - Oniguruma (regular expression library) +**********************************************************************/ +/*- + * Copyright (c) 2002-2024 K.Kosako + * 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. + */ + +#include "regparse.h" + +#define OPS_INIT_SIZE 8 + +#define ND_IS_REAL_IGNORECASE(node) \ + (ND_IS_IGNORECASE(node) && !ND_STRING_IS_CRUDE(node)) + +typedef struct { + OnigLen min; + OnigLen max; +} MinMaxLen; + +typedef struct { + OnigLen min; + OnigLen max; + int min_is_sure; +} MinMaxCharLen; + +OnigCaseFoldType OnigDefaultCaseFoldFlag = ONIGENC_CASE_FOLD_MIN; + +static OnigLen node_min_byte_len(Node* node, ParseEnv* env); + +static int +ops_init(regex_t* reg, int init_alloc_size) +{ + Operation* p; + size_t size; + + if (init_alloc_size <= 0) + return ONIGERR_PARSER_BUG; + + size = sizeof(Operation) * init_alloc_size; + p = (Operation* )xrealloc(reg->ops, size); + CHECK_NULL_RETURN_MEMERR(p); + reg->ops = p; +#ifdef USE_DIRECT_THREADED_CODE + { + enum OpCode* cp; + size = sizeof(enum OpCode) * init_alloc_size; + cp = (enum OpCode* )xrealloc(reg->ocs, size); + CHECK_NULL_RETURN_MEMERR(cp); + reg->ocs = cp; + } +#endif + + reg->ops_curr = 0; /* !!! not yet done ops_new() */ + reg->ops_alloc = init_alloc_size; + reg->ops_used = 0; + + return ONIG_NORMAL; +} + +static int +ops_resize(regex_t* reg, int n) +{ +#ifdef USE_DIRECT_THREADED_CODE + enum OpCode* cp; +#endif + Operation* p; + size_t size; + + if (n == reg->ops_alloc) return ONIG_NORMAL; + if (n <= 0) return ONIGERR_PARSER_BUG; + + size = sizeof(Operation) * n; + p = (Operation* )xrealloc(reg->ops, size); + CHECK_NULL_RETURN_MEMERR(p); + reg->ops = p; + +#ifdef USE_DIRECT_THREADED_CODE + size = sizeof(enum OpCode) * n; + cp = (enum OpCode* )xrealloc(reg->ocs, size); + CHECK_NULL_RETURN_MEMERR(cp); + reg->ocs = cp; +#endif + + reg->ops_alloc = n; + if (reg->ops_used == 0) + reg->ops_curr = 0; + else + reg->ops_curr = reg->ops + (reg->ops_used - 1); + + return ONIG_NORMAL; +} + +static int +ops_new(regex_t* reg) +{ + if (reg->ops_used >= reg->ops_alloc) { + int r = ops_resize(reg, reg->ops_alloc << 1); + if (r != ONIG_NORMAL) return r; + } + + reg->ops_curr = reg->ops + reg->ops_used; + reg->ops_used++; + + xmemset(reg->ops_curr, 0, sizeof(Operation)); + return ONIG_NORMAL; +} + +static int +is_in_string_pool(regex_t* reg, UChar* s) +{ + return (s >= reg->string_pool && s < reg->string_pool_end); +} + +static void +ops_free(regex_t* reg) +{ + int i; + + if (IS_NULL(reg->ops)) return ; + + for (i = 0; i < (int )reg->ops_used; i++) { + enum OpCode opcode; + Operation* op; + + op = reg->ops + i; + +#ifdef USE_DIRECT_THREADED_CODE + opcode = *(reg->ocs + i); +#else + opcode = op->opcode; +#endif + + switch (opcode) { + case OP_STR_MBN: + if (! is_in_string_pool(reg, op->exact_len_n.s)) + xfree(op->exact_len_n.s); + break; + case OP_STR_N: case OP_STR_MB2N: case OP_STR_MB3N: + if (! is_in_string_pool(reg, op->exact_n.s)) + xfree(op->exact_n.s); + break; + case OP_STR_1: case OP_STR_2: case OP_STR_3: case OP_STR_4: + case OP_STR_5: case OP_STR_MB2N1: case OP_STR_MB2N2: + case OP_STR_MB2N3: + break; + + case OP_CCLASS_NOT: case OP_CCLASS: + xfree(op->cclass.bsp); + break; + + case OP_CCLASS_MB_NOT: case OP_CCLASS_MB: + xfree(op->cclass_mb.mb); + break; + case OP_CCLASS_MIX_NOT: case OP_CCLASS_MIX: + xfree(op->cclass_mix.mb); + xfree(op->cclass_mix.bsp); + break; + + case OP_BACKREF1: case OP_BACKREF2: case OP_BACKREF_N: case OP_BACKREF_N_IC: + break; + case OP_BACKREF_MULTI: case OP_BACKREF_MULTI_IC: + case OP_BACKREF_CHECK: +#ifdef USE_BACKREF_WITH_LEVEL + case OP_BACKREF_WITH_LEVEL: + case OP_BACKREF_WITH_LEVEL_IC: + case OP_BACKREF_CHECK_WITH_LEVEL: +#endif + if (op->backref_general.num != 1) + xfree(op->backref_general.ns); + break; + + default: + break; + } + } + + xfree(reg->ops); +#ifdef USE_DIRECT_THREADED_CODE + xfree(reg->ocs); + reg->ocs = 0; +#endif + + reg->ops = 0; + reg->ops_curr = 0; + reg->ops_alloc = 0; + reg->ops_used = 0; +} + +static int +ops_calc_size_of_string_pool(regex_t* reg) +{ + int i; + int total; + + if (IS_NULL(reg->ops)) return 0; + + total = 0; + for (i = 0; i < (int )reg->ops_used; i++) { + enum OpCode opcode; + Operation* op; + + op = reg->ops + i; +#ifdef USE_DIRECT_THREADED_CODE + opcode = *(reg->ocs + i); +#else + opcode = op->opcode; +#endif + + switch (opcode) { + case OP_STR_MBN: + total += op->exact_len_n.len * op->exact_len_n.n; + break; + case OP_STR_N: + case OP_STR_MB2N: + total += op->exact_n.n * 2; + break; + case OP_STR_MB3N: + total += op->exact_n.n * 3; + break; + + default: + break; + } + } + + return total; +} + +static int +ops_make_string_pool(regex_t* reg) +{ + int i; + int len; + int size; + UChar* pool; + UChar* curr; + + size = ops_calc_size_of_string_pool(reg); + if (size <= 0) { + return 0; + } + + curr = pool = (UChar* )xmalloc((size_t )size); + CHECK_NULL_RETURN_MEMERR(pool); + + for (i = 0; i < (int )reg->ops_used; i++) { + enum OpCode opcode; + Operation* op; + + op = reg->ops + i; +#ifdef USE_DIRECT_THREADED_CODE + opcode = *(reg->ocs + i); +#else + opcode = op->opcode; +#endif + + switch (opcode) { + case OP_STR_MBN: + len = op->exact_len_n.len * op->exact_len_n.n; + xmemcpy(curr, op->exact_len_n.s, len); + xfree(op->exact_len_n.s); + op->exact_len_n.s = curr; + curr += len; + break; + case OP_STR_N: + len = op->exact_n.n; + copy: + xmemcpy(curr, op->exact_n.s, len); + xfree(op->exact_n.s); + op->exact_n.s = curr; + curr += len; + break; + case OP_STR_MB2N: + len = op->exact_n.n * 2; + goto copy; + break; + case OP_STR_MB3N: + len = op->exact_n.n * 3; + goto copy; + break; + + default: + break; + } + } + + reg->string_pool = pool; + reg->string_pool_end = pool + size; + return 0; +} + +extern OnigCaseFoldType +onig_get_default_case_fold_flag(void) +{ + return OnigDefaultCaseFoldFlag; +} + +extern int +onig_set_default_case_fold_flag(OnigCaseFoldType case_fold_flag) +{ + OnigDefaultCaseFoldFlag = case_fold_flag; + return 0; +} + +static int +len_multiply_cmp(OnigLen x, int y, OnigLen v) +{ + if (x == 0 || y == 0) return -1; + + if (x < INFINITE_LEN / y) { + OnigLen xy = x * (OnigLen )y; + if (xy > v) return 1; + else { + if (xy == v) return 0; + else return -1; + } + } + else + return v == INFINITE_LEN ? 0 : 1; +} + +extern int +onig_positive_int_multiply(int x, int y) +{ + if (x == 0 || y == 0) return 0; + + if (x < ONIG_INT_MAX / y) + return x * y; + else + return -1; +} + + +static void +node_swap(Node* a, Node* b) +{ + Node c; + + c = *a; *a = *b; *b = c; + + if (ND_TYPE(a) == ND_STRING) { + StrNode* sn = STR_(a); + if (sn->capacity == 0) { + int len = (int )(sn->end - sn->s); + sn->s = sn->buf; + sn->end = sn->s + len; + } + } + + if (ND_TYPE(b) == ND_STRING) { + StrNode* sn = STR_(b); + if (sn->capacity == 0) { + int len = (int )(sn->end - sn->s); + sn->s = sn->buf; + sn->end = sn->s + len; + } + } +} + +static int +node_list_len(Node* list) +{ + int len; + + len = 1; + while (IS_NOT_NULL(ND_CDR(list))) { + list = ND_CDR(list); + len++; + } + + return len; +} + +static Node* +node_list_add(Node* list, Node* x) +{ + Node *n; + + n = onig_node_new_list(x, NULL); + if (IS_NULL(n)) return NULL_NODE; + + if (IS_NOT_NULL(list)) { + while (IS_NOT_NULL(ND_CDR(list))) + list = ND_CDR(list); + + ND_CDR(list) = n; + } + + return n; +} + +static int +node_str_node_cat(Node* node, Node* add) +{ + int r; + + if (ND_STATUS(node) != ND_STATUS(add)) + return ONIGERR_TYPE_BUG; + + if (STR_(node)->flag != STR_(add)->flag) + return ONIGERR_TYPE_BUG; + + r = onig_node_str_cat(node, STR_(add)->s, STR_(add)->end); + if (r != 0) return r; + + return 0; +} + +static void +node_conv_to_str_node(Node* node, Node* ref_node) +{ + xmemset(node, 0, sizeof(*node)); + ND_SET_TYPE(node, ND_STRING); + ND_STATUS(node) = ND_STATUS(ref_node); + + STR_(node)->flag = STR_(ref_node)->flag; + STR_(node)->s = STR_(node)->buf; + STR_(node)->end = STR_(node)->buf; + STR_(node)->capacity = 0; +} + +static OnigLen +distance_add(OnigLen d1, OnigLen d2) +{ + if (d1 == INFINITE_LEN || d2 == INFINITE_LEN) + return INFINITE_LEN; + else { + if (d1 <= INFINITE_LEN - d2) return d1 + d2; + else return INFINITE_LEN; + } +} + +static OnigLen +distance_multiply(OnigLen d, int m) +{ + if (m == 0) return 0; + + if (d < INFINITE_LEN / m) + return d * m; + else + return INFINITE_LEN; +} + +static int +bitset_is_empty(BitSetRef bs) +{ + int i; + + for (i = 0; i < (int )BITSET_REAL_SIZE; i++) { + if (bs[i] != 0) return 0; + } + return 1; +} + +#ifdef USE_CALL + +static int +unset_addr_list_init(UnsetAddrList* list, int size) +{ + UnsetAddr* p = (UnsetAddr* )xmalloc(sizeof(UnsetAddr)* size); + CHECK_NULL_RETURN_MEMERR(p); + + list->num = 0; + list->alloc = size; + list->us = p; + return 0; +} + +static void +unset_addr_list_end(UnsetAddrList* list) +{ + if (IS_NOT_NULL(list->us)) + xfree(list->us); +} + +static int +unset_addr_list_add(UnsetAddrList* list, int offset, struct _Node* node) +{ + UnsetAddr* p; + int size; + + if (list->num >= list->alloc) { + size = list->alloc * 2; + p = (UnsetAddr* )xrealloc(list->us, sizeof(UnsetAddr) * size); + CHECK_NULL_RETURN_MEMERR(p); + list->alloc = size; + list->us = p; + } + + list->us[list->num].offset = offset; + list->us[list->num].target = node; + list->num++; + return 0; +} +#endif /* USE_CALL */ + +enum CharLenReturnType { + CHAR_LEN_NORMAL = 0, /* fixed or variable */ + CHAR_LEN_TOP_ALT_FIXED = 1 +}; + +static int +mmcl_fixed(MinMaxCharLen* c) +{ + return (c->min == c->max && c->min != INFINITE_LEN); +} + +static void +mmcl_set(MinMaxCharLen* l, OnigLen len) +{ + l->min = len; + l->max = len; + l->min_is_sure = TRUE; +} + +static void +mmcl_set_min_max(MinMaxCharLen* l, OnigLen min, OnigLen max, int min_is_sure) +{ + l->min = min; + l->max = max; + l->min_is_sure = min_is_sure; +} + +static void +mmcl_add(MinMaxCharLen* to, MinMaxCharLen* add) +{ + to->min = distance_add(to->min, add->min); + to->max = distance_add(to->max, add->max); + + to->min_is_sure = add->min_is_sure != FALSE && to->min_is_sure != FALSE; +} + +static void +mmcl_multiply(MinMaxCharLen* to, int m) +{ + to->min = distance_multiply(to->min, m); + to->max = distance_multiply(to->max, m); +} + +static void +mmcl_repeat_range_multiply(MinMaxCharLen* to, int mlow, int mhigh) +{ + to->min = distance_multiply(to->min, mlow); + + if (IS_INFINITE_REPEAT(mhigh)) + to->max = INFINITE_LEN; + else + to->max = distance_multiply(to->max, mhigh); +} + +static void +mmcl_alt_merge(MinMaxCharLen* to, MinMaxCharLen* alt) +{ + if (to->min > alt->min) { + to->min = alt->min; + to->min_is_sure = alt->min_is_sure; + } + else if (to->min == alt->min) { + if (alt->min_is_sure != FALSE) + to->min_is_sure = TRUE; + } + + if (to->max < alt->max) to->max = alt->max; +} + +#ifndef ONIG_DONT_OPTIMIZE + +static int +mml_is_equal(MinMaxLen* a, MinMaxLen* b) +{ + return a->min == b->min && a->max == b->max; +} + +static void +mml_set_min_max(MinMaxLen* l, OnigLen min, OnigLen max) +{ + l->min = min; + l->max = max; +} + +static void +mml_clear(MinMaxLen* l) +{ + l->min = l->max = 0; +} + +static void +mml_copy(MinMaxLen* to, MinMaxLen* from) +{ + to->min = from->min; + to->max = from->max; +} + +static void +mml_add(MinMaxLen* to, MinMaxLen* add) +{ + to->min = distance_add(to->min, add->min); + to->max = distance_add(to->max, add->max); +} + +static void +mml_alt_merge(MinMaxLen* to, MinMaxLen* alt) +{ + if (to->min > alt->min) to->min = alt->min; + if (to->max < alt->max) to->max = alt->max; +} + +#endif + +/* fixed size pattern node only */ +static int +node_char_len1(Node* node, regex_t* reg, MinMaxCharLen* ci, ParseEnv* env, + int level) +{ + MinMaxCharLen tci; + int r = CHAR_LEN_NORMAL; + + level++; + + switch (ND_TYPE(node)) { + case ND_LIST: + { + int first = TRUE; + do { + r = node_char_len1(ND_CAR(node), reg, &tci, env, level); + if (r < 0) break; + if (first == TRUE) { + *ci = tci; + first = FALSE; + } + else + mmcl_add(ci, &tci); + } while (IS_NOT_NULL(node = ND_CDR(node))); + } + break; + + case ND_ALT: + { + int fixed; + + r = node_char_len1(ND_CAR(node), reg, ci, env, level); + if (r < 0) break; + + fixed = TRUE; + while (IS_NOT_NULL(node = ND_CDR(node))) { + r = node_char_len1(ND_CAR(node), reg, &tci, env, level); + if (r < 0) break; + if (! mmcl_fixed(&tci)) + fixed = FALSE; + mmcl_alt_merge(ci, &tci); + } + if (r < 0) break; + + r = CHAR_LEN_NORMAL; + if (mmcl_fixed(ci)) break; + + if (fixed == TRUE && level == 1) { + r = CHAR_LEN_TOP_ALT_FIXED; + } + } + break; + + case ND_STRING: + { + OnigLen clen; + StrNode* sn = STR_(node); + UChar *s = sn->s; + + if (ND_IS_REAL_IGNORECASE(node) && + CASE_FOLD_IS_NOT_ASCII_ONLY(env->case_fold_flag)) { + /* Such a case is possible. + ex. /(?i)(?<=\1)(a)/ + Backref node refer to capture group, but it doesn't tune yet. + */ + r = ONIGERR_INVALID_LOOK_BEHIND_PATTERN; + break; + } + + clen = 0; + while (s < sn->end) { + s += enclen(reg->enc, s); + clen = distance_add(clen, 1); + } + mmcl_set(ci, clen); + } + break; + + case ND_QUANT: + { + QuantNode* qn = QUANT_(node); + + if (qn->lower == qn->upper) { + if (qn->upper == 0) { + mmcl_set(ci, 0); + } + else { + r = node_char_len1(ND_BODY(node), reg, ci, env, level); + if (r < 0) break; + mmcl_multiply(ci, qn->lower); + } + } + else { + r = node_char_len1(ND_BODY(node), reg, ci, env, level); + if (r < 0) break; + mmcl_repeat_range_multiply(ci, qn->lower, qn->upper); + } + } + break; + +#ifdef USE_CALL + case ND_CALL: + if (ND_IS_RECURSION(node)) + mmcl_set_min_max(ci, 0, INFINITE_LEN, FALSE); + else + r = node_char_len1(ND_BODY(node), reg, ci, env, level); + break; +#endif + + case ND_CTYPE: + case ND_CCLASS: + mmcl_set(ci, 1); + break; + + case ND_BAG: + { + BagNode* en = BAG_(node); + + switch (en->type) { + case BAG_MEMORY: + if (ND_IS_FIXED_CLEN(node)) { + mmcl_set_min_max(ci, en->min_char_len, en->max_char_len, + ND_IS_FIXED_CLEN_MIN_SURE(node)); + } + else { + if (ND_IS_MARK1(node)) { + mmcl_set_min_max(ci, 0, INFINITE_LEN, FALSE); + } + else { + ND_STATUS_ADD(node, MARK1); + r = node_char_len1(ND_BODY(node), reg, ci, env, level); + ND_STATUS_REMOVE(node, MARK1); + if (r < 0) break; + + en->min_char_len = ci->min; + en->max_char_len = ci->max; + ND_STATUS_ADD(node, FIXED_CLEN); + if (ci->min_is_sure != FALSE) + ND_STATUS_ADD(node, FIXED_CLEN_MIN_SURE); + } + } + /* can't optimize look-behind if capture exists. */ + ci->min_is_sure = FALSE; + break; + case BAG_OPTION: + case BAG_STOP_BACKTRACK: + r = node_char_len1(ND_BODY(node), reg, ci, env, level); + break; + case BAG_IF_ELSE: + { + MinMaxCharLen eci; + + r = node_char_len1(ND_BODY(node), reg, ci, env, level); + if (r < 0) break; + + if (IS_NOT_NULL(en->te.Then)) { + r = node_char_len1(en->te.Then, reg, &tci, env, level); + if (r < 0) break; + mmcl_add(ci, &tci); + } + + if (IS_NOT_NULL(en->te.Else)) { + r = node_char_len1(en->te.Else, reg, &eci, env, level); + if (r < 0) break; + } + else { + mmcl_set(&eci, 0); + } + + mmcl_alt_merge(ci, &eci); + } + break; + default: /* never come here */ + r = ONIGERR_PARSER_BUG; + break; + } + } + break; + + case ND_GIMMICK: + mmcl_set(ci, 0); + break; + + case ND_ANCHOR: + zero: + mmcl_set(ci, 0); + /* can't optimize look-behind if anchor exists. */ + ci->min_is_sure = FALSE; + break; + + case ND_BACKREF: + if (ND_IS_CHECKER(node)) + goto zero; + + if (ND_IS_RECURSION(node)) { +#ifdef USE_BACKREF_WITH_LEVEL + if (ND_IS_NEST_LEVEL(node)) { + mmcl_set_min_max(ci, 0, INFINITE_LEN, FALSE); + break; + } +#endif + + mmcl_set_min_max(ci, 0, 0, FALSE); + break; + } + + { + int i; + int* backs; + MemEnv* mem_env = PARSEENV_MEMENV(env); + BackRefNode* br = BACKREF_(node); + + backs = BACKREFS_P(br); + r = node_char_len1(mem_env[backs[0]].mem_node, reg, ci, env, level); + if (r < 0) break; + if (! mmcl_fixed(ci)) ci->min_is_sure = FALSE; + + for (i = 1; i < br->back_num; i++) { + r = node_char_len1(mem_env[backs[i]].mem_node, reg, &tci, env, level); + if (r < 0) break; + if (! mmcl_fixed(&tci)) tci.min_is_sure = FALSE; + mmcl_alt_merge(ci, &tci); + } + } + break; + + default: /* never come here */ + r = ONIGERR_PARSER_BUG; + break; + } + + return r; +} + +static int +node_char_len(Node* node, regex_t* reg, MinMaxCharLen* ci, ParseEnv* env) +{ + return node_char_len1(node, reg, ci, env, 0); +} + + +static int +add_op(regex_t* reg, int opcode) +{ + int r; + + r = ops_new(reg); + if (r != ONIG_NORMAL) return r; + +#ifdef USE_DIRECT_THREADED_CODE + *(reg->ocs + (reg->ops_curr - reg->ops)) = opcode; +#else + reg->ops_curr->opcode = opcode; +#endif + + return 0; +} + +static int compile_length_tree(Node* node, regex_t* reg, ParseEnv* env); +static int compile_tree(Node* node, regex_t* reg, ParseEnv* env); + + +#define IS_NEED_STR_LEN_OP(op) \ + ((op) == OP_STR_N || (op) == OP_STR_MB2N ||\ + (op) == OP_STR_MB3N || (op) == OP_STR_MBN) + +static int +select_str_opcode(int mb_len, int str_len) +{ + int op; + + switch (mb_len) { + case 1: + switch (str_len) { + case 1: op = OP_STR_1; break; + case 2: op = OP_STR_2; break; + case 3: op = OP_STR_3; break; + case 4: op = OP_STR_4; break; + case 5: op = OP_STR_5; break; + default: op = OP_STR_N; break; + } + break; + + case 2: + switch (str_len) { + case 1: op = OP_STR_MB2N1; break; + case 2: op = OP_STR_MB2N2; break; + case 3: op = OP_STR_MB2N3; break; + default: op = OP_STR_MB2N; break; + } + break; + + case 3: + op = OP_STR_MB3N; + break; + + default: + op = OP_STR_MBN; + break; + } + + return op; +} + +static int +is_strict_real_node(Node* node) +{ + switch (ND_TYPE(node)) { + case ND_STRING: + { + StrNode* sn = STR_(node); + return (sn->end != sn->s); + } + break; + + case ND_CCLASS: + case ND_CTYPE: + return 1; + break; + + default: + return 0; + break; + } +} + +static int +compile_quant_body_with_empty_check(QuantNode* qn, regex_t* reg, ParseEnv* env) +{ + int r; + int saved_num_empty_check; + int emptiness; + Node* body; + + body = ND_BODY((Node* )qn); + emptiness = qn->emptiness; + saved_num_empty_check = reg->num_empty_check; + + if (emptiness != BODY_IS_NOT_EMPTY) { + r = add_op(reg, OP_EMPTY_CHECK_START); + if (r != 0) return r; + COP(reg)->empty_check_start.mem = reg->num_empty_check; /* NULL CHECK ID */ + reg->num_empty_check++; + } + + r = compile_tree(body, reg, env); + if (r != 0) return r; + + if (emptiness != BODY_IS_NOT_EMPTY) { + if (emptiness == BODY_MAY_BE_EMPTY) + r = add_op(reg, OP_EMPTY_CHECK_END); + else if (emptiness == BODY_MAY_BE_EMPTY_MEM) { + if (ND_IS_EMPTY_STATUS_CHECK(qn) != 0 && qn->empty_status_mem != 0) { + r = add_op(reg, OP_EMPTY_CHECK_END_MEMST); + if (r != 0) return r; + COP(reg)->empty_check_end.empty_status_mem = qn->empty_status_mem; + } + else + r = add_op(reg, OP_EMPTY_CHECK_END); + } +#ifdef USE_CALL + else if (emptiness == BODY_MAY_BE_EMPTY_REC) { + r = add_op(reg, OP_EMPTY_CHECK_END_MEMST_PUSH); + if (r != 0) return r; + COP(reg)->empty_check_end.empty_status_mem = qn->empty_status_mem; + } +#endif + + if (r != 0) return r; + COP(reg)->empty_check_end.mem = saved_num_empty_check; /* NULL CHECK ID */ + } + return r; +} + +#ifdef USE_CALL +static int +compile_call(CallNode* node, regex_t* reg, ParseEnv* env) +{ + int r; + int offset; + + r = add_op(reg, OP_CALL); + if (r != 0) return r; + + COP(reg)->call.addr = 0; /* dummy addr. */ +#ifdef ONIG_DEBUG_MATCH_COUNTER + COP(reg)->call.called_mem = node->called_gnum; +#endif + + offset = COP_CURR_OFFSET_BYTES(reg, call.addr); + r = unset_addr_list_add(env->unset_addr_list, offset, ND_CALL_BODY(node)); + return r; +} +#endif + +static int +compile_tree_n_times(Node* node, int n, regex_t* reg, ParseEnv* env) +{ + int i, r; + + for (i = 0; i < n; i++) { + r = compile_tree(node, reg, env); + if (r != 0) return r; + } + return 0; +} + +static int +add_compile_string_length(UChar* s ARG_UNUSED, int mb_len, int str_len, + regex_t* reg ARG_UNUSED) +{ + return 1; +} + +static int +add_compile_string(UChar* s, int mb_len, int str_len, regex_t* reg) +{ + int op; + int r; + int byte_len; + UChar* p; + UChar* end; + + op = select_str_opcode(mb_len, str_len); + r = add_op(reg, op); + if (r != 0) return r; + + byte_len = mb_len * str_len; + end = s + byte_len; + + if (op == OP_STR_MBN) { + p = onigenc_strdup(reg->enc, s, end); + CHECK_NULL_RETURN_MEMERR(p); + + COP(reg)->exact_len_n.len = mb_len; + COP(reg)->exact_len_n.n = str_len; + COP(reg)->exact_len_n.s = p; + } + else if (IS_NEED_STR_LEN_OP(op)) { + p = onigenc_strdup(reg->enc, s, end); + CHECK_NULL_RETURN_MEMERR(p); + COP(reg)->exact_n.n = str_len; + COP(reg)->exact_n.s = p; + } + else { + xmemset(COP(reg)->exact.s, 0, sizeof(COP(reg)->exact.s)); + xmemcpy(COP(reg)->exact.s, s, (size_t )byte_len); + } + + return 0; +} + +static int +compile_length_string_node(Node* node, regex_t* reg) +{ + int rlen, r, len, prev_len, slen; + UChar *p, *prev; + StrNode* sn; + OnigEncoding enc = reg->enc; + + sn = STR_(node); + if (sn->end <= sn->s) + return 0; + + p = prev = sn->s; + prev_len = enclen(enc, p); + p += prev_len; + slen = 1; + rlen = 0; + + for (; p < sn->end; ) { + len = enclen(enc, p); + if (len == prev_len) { + slen++; + } + else { + r = add_compile_string_length(prev, prev_len, slen, reg); + rlen += r; + prev = p; + slen = 1; + prev_len = len; + } + p += len; + } + + r = add_compile_string_length(prev, prev_len, slen, reg); + rlen += r; + return rlen; +} + +static int +compile_length_string_crude_node(StrNode* sn, regex_t* reg) +{ + if (sn->end <= sn->s) + return 0; + + return add_compile_string_length(sn->s, 1 /* sb */, (int )(sn->end - sn->s), + reg); +} + +static int +compile_string_node(Node* node, regex_t* reg) +{ + int r, len, prev_len, slen; + UChar *p, *prev, *end; + StrNode* sn; + OnigEncoding enc = reg->enc; + + sn = STR_(node); + if (sn->end <= sn->s) + return 0; + + end = sn->end; + + p = prev = sn->s; + prev_len = enclen(enc, p); + p += prev_len; + slen = 1; + + for (; p < end; ) { + len = enclen(enc, p); + if (len == prev_len) { + slen++; + } + else { + r = add_compile_string(prev, prev_len, slen, reg); + if (r != 0) return r; + + prev = p; + slen = 1; + prev_len = len; + } + + p += len; + } + + return add_compile_string(prev, prev_len, slen, reg); +} + +static int +compile_string_crude_node(StrNode* sn, regex_t* reg) +{ + if (sn->end <= sn->s) + return 0; + + return add_compile_string(sn->s, 1 /* sb */, (int )(sn->end - sn->s), reg); +} + +static void* +set_multi_byte_cclass(BBuf* mbuf, regex_t* reg) +{ + size_t len; + void* p; + + len = (size_t )mbuf->used; + p = xmalloc(len); + if (IS_NULL(p)) return NULL; + + xmemcpy(p, mbuf->p, len); + return p; +} + +static int +compile_length_cclass_node(CClassNode* cc, regex_t* reg) +{ + return 1; +} + +static int +compile_cclass_node(CClassNode* cc, regex_t* reg) +{ + int r; + + if (IS_NULL(cc->mbuf)) { + r = add_op(reg, IS_NCCLASS_NOT(cc) ? OP_CCLASS_NOT : OP_CCLASS); + if (r != 0) return r; + + COP(reg)->cclass.bsp = xmalloc(SIZE_BITSET); + CHECK_NULL_RETURN_MEMERR(COP(reg)->cclass.bsp); + xmemcpy(COP(reg)->cclass.bsp, cc->bs, SIZE_BITSET); + } + else { + void* p; + + if (ONIGENC_MBC_MINLEN(reg->enc) > 1 || bitset_is_empty(cc->bs)) { + r = add_op(reg, IS_NCCLASS_NOT(cc) ? OP_CCLASS_MB_NOT : OP_CCLASS_MB); + if (r != 0) return r; + + p = set_multi_byte_cclass(cc->mbuf, reg); + CHECK_NULL_RETURN_MEMERR(p); + COP(reg)->cclass_mb.mb = p; + } + else { + r = add_op(reg, IS_NCCLASS_NOT(cc) ? OP_CCLASS_MIX_NOT : OP_CCLASS_MIX); + if (r != 0) return r; + + COP(reg)->cclass_mix.bsp = xmalloc(SIZE_BITSET); + CHECK_NULL_RETURN_MEMERR(COP(reg)->cclass_mix.bsp); + xmemcpy(COP(reg)->cclass_mix.bsp, cc->bs, SIZE_BITSET); + + p = set_multi_byte_cclass(cc->mbuf, reg); + CHECK_NULL_RETURN_MEMERR(p); + COP(reg)->cclass_mix.mb = p; + } + } + + return 0; +} + +static void +set_addr_in_repeat_range(regex_t* reg) +{ + int i; + + for (i = 0; i < reg->num_repeat; i++) { + RepeatRange* p = reg->repeat_range + i; + int offset = p->u.offset; + p->u.pcode = reg->ops + offset; + } +} + +static int +entry_repeat_range(regex_t* reg, int id, int lower, int upper, int ops_index) +{ +#define REPEAT_RANGE_ALLOC 4 + + RepeatRange* p; + + if (reg->repeat_range_alloc == 0) { + p = (RepeatRange* )xmalloc(sizeof(RepeatRange) * REPEAT_RANGE_ALLOC); + CHECK_NULL_RETURN_MEMERR(p); + reg->repeat_range = p; + reg->repeat_range_alloc = REPEAT_RANGE_ALLOC; + } + else if (reg->repeat_range_alloc <= id) { + int n; + n = reg->repeat_range_alloc + REPEAT_RANGE_ALLOC; + p = (RepeatRange* )xrealloc(reg->repeat_range, sizeof(RepeatRange) * n); + CHECK_NULL_RETURN_MEMERR(p); + reg->repeat_range = p; + reg->repeat_range_alloc = n; + } + else { + p = reg->repeat_range; + } + + p[id].lower = lower; + p[id].upper = (IS_INFINITE_REPEAT(upper) ? 0x7fffffff : upper); + p[id].u.offset = ops_index; + return 0; +} + +static int +compile_range_repeat_node(QuantNode* qn, int target_len, int emptiness, + regex_t* reg, ParseEnv* env) +{ + int r; + int num_repeat = reg->num_repeat++; + + r = add_op(reg, qn->greedy ? OP_REPEAT : OP_REPEAT_NG); + if (r != 0) return r; + + COP(reg)->repeat.id = num_repeat; + COP(reg)->repeat.addr = SIZE_INC + target_len + OPSIZE_REPEAT_INC; + + r = entry_repeat_range(reg, num_repeat, qn->lower, qn->upper, + COP_CURR_OFFSET(reg) + OPSIZE_REPEAT); + if (r != 0) return r; + + r = compile_quant_body_with_empty_check(qn, reg, env); + if (r != 0) return r; + + r = add_op(reg, qn->greedy ? OP_REPEAT_INC : OP_REPEAT_INC_NG); + if (r != 0) return r; + + COP(reg)->repeat_inc.id = num_repeat; + return r; +} + +static int +is_anychar_infinite_greedy(QuantNode* qn) +{ + if (qn->greedy && IS_INFINITE_REPEAT(qn->upper) && + ND_IS_ANYCHAR(ND_QUANT_BODY(qn))) + return 1; + else + return 0; +} + +#define QUANTIFIER_EXPAND_LIMIT_SIZE 10 +#define CKN_ON (ckn > 0) + +static int +compile_length_quantifier_node(QuantNode* qn, regex_t* reg, ParseEnv* env) +{ + int len, mod_tlen; + int infinite = IS_INFINITE_REPEAT(qn->upper); + enum BodyEmptyType emptiness = qn->emptiness; + int tlen = compile_length_tree(ND_QUANT_BODY(qn), reg, env); + + if (tlen < 0) return tlen; + if (tlen == 0) return 0; + + /* anychar repeat */ + if (is_anychar_infinite_greedy(qn)) { + if (qn->lower <= 1 || + len_multiply_cmp((OnigLen )tlen, qn->lower, QUANTIFIER_EXPAND_LIMIT_SIZE) <= 0) { + if (IS_NOT_NULL(qn->next_head_exact)) + return OPSIZE_ANYCHAR_STAR_PEEK_NEXT + tlen * qn->lower; + else + return OPSIZE_ANYCHAR_STAR + tlen * qn->lower; + } + } + + mod_tlen = tlen; + if (emptiness != BODY_IS_NOT_EMPTY) + mod_tlen += OPSIZE_EMPTY_CHECK_START + OPSIZE_EMPTY_CHECK_END; + + if (infinite && + (qn->lower <= 1 || + len_multiply_cmp(tlen, qn->lower, QUANTIFIER_EXPAND_LIMIT_SIZE) <= 0)) { + if (qn->lower == 1 && tlen > QUANTIFIER_EXPAND_LIMIT_SIZE) { + len = OPSIZE_JUMP; + } + else { + len = tlen * qn->lower; + } + + if (qn->greedy) { +#ifdef USE_OP_PUSH_OR_JUMP_EXACT + if (IS_NOT_NULL(qn->head_exact)) + len += OPSIZE_PUSH_OR_JUMP_EXACT1 + mod_tlen + OPSIZE_JUMP; + else +#endif + if (IS_NOT_NULL(qn->next_head_exact)) + len += OPSIZE_PUSH_IF_PEEK_NEXT + mod_tlen + OPSIZE_JUMP; + else + len += OPSIZE_PUSH + mod_tlen + OPSIZE_JUMP; + } + else + len += OPSIZE_JUMP + mod_tlen + OPSIZE_PUSH; + } + else if (qn->upper == 0) { + if (qn->include_referred != 0) { /* /(?..){0}/ */ + len = OPSIZE_JUMP + tlen; + } + else + len = 0; + } + else if (!infinite && qn->greedy && + (qn->upper == 1 || + len_multiply_cmp((OnigLen )tlen + OPSIZE_PUSH, qn->upper, + QUANTIFIER_EXPAND_LIMIT_SIZE) <= 0)) { + len = tlen * qn->lower; + len += (OPSIZE_PUSH + tlen) * (qn->upper - qn->lower); + } + else if (!qn->greedy && qn->upper == 1 && qn->lower == 0) { /* '??' */ + len = OPSIZE_PUSH + OPSIZE_JUMP + tlen; + } + else { + len = OPSIZE_REPEAT_INC + mod_tlen + OPSIZE_REPEAT; + } + + return len; +} + +static int +compile_quantifier_node(QuantNode* qn, regex_t* reg, ParseEnv* env) +{ + int i, r, mod_tlen; + int infinite = IS_INFINITE_REPEAT(qn->upper); + enum BodyEmptyType emptiness = qn->emptiness; + int tlen = compile_length_tree(ND_QUANT_BODY(qn), reg, env); + + if (tlen < 0) return tlen; + if (tlen == 0) return 0; + + if (is_anychar_infinite_greedy(qn) && + (qn->lower <= 1 || + len_multiply_cmp((OnigLen )tlen, qn->lower, + QUANTIFIER_EXPAND_LIMIT_SIZE) <= 0)) { + r = compile_tree_n_times(ND_QUANT_BODY(qn), qn->lower, reg, env); + if (r != 0) return r; + if (IS_NOT_NULL(qn->next_head_exact)) { + r = add_op(reg, ND_IS_MULTILINE(ND_QUANT_BODY(qn)) ? + OP_ANYCHAR_ML_STAR_PEEK_NEXT : OP_ANYCHAR_STAR_PEEK_NEXT); + if (r != 0) return r; + + COP(reg)->anychar_star_peek_next.c = STR_(qn->next_head_exact)->s[0]; + return 0; + } + else { + r = add_op(reg, ND_IS_MULTILINE(ND_QUANT_BODY(qn)) ? + OP_ANYCHAR_ML_STAR : OP_ANYCHAR_STAR); + return r; + } + } + + mod_tlen = tlen; + if (emptiness != BODY_IS_NOT_EMPTY) + mod_tlen += OPSIZE_EMPTY_CHECK_START + OPSIZE_EMPTY_CHECK_END; + + if (infinite && + (qn->lower <= 1 || + len_multiply_cmp((OnigLen )tlen, qn->lower, + QUANTIFIER_EXPAND_LIMIT_SIZE) <= 0)) { + int addr; + + if (qn->lower == 1 && tlen > QUANTIFIER_EXPAND_LIMIT_SIZE) { + r = add_op(reg, OP_JUMP); + if (r != 0) return r; + if (qn->greedy) { +#ifdef USE_OP_PUSH_OR_JUMP_EXACT + if (IS_NOT_NULL(qn->head_exact)) + COP(reg)->jump.addr = OPSIZE_PUSH_OR_JUMP_EXACT1 + SIZE_INC; + else +#endif + if (IS_NOT_NULL(qn->next_head_exact)) + COP(reg)->jump.addr = OPSIZE_PUSH_IF_PEEK_NEXT + SIZE_INC; + else + COP(reg)->jump.addr = OPSIZE_PUSH + SIZE_INC; + } + else { + COP(reg)->jump.addr = OPSIZE_JUMP + SIZE_INC; + } + } + else { + r = compile_tree_n_times(ND_QUANT_BODY(qn), qn->lower, reg, env); + if (r != 0) return r; + } + + if (qn->greedy) { +#ifdef USE_OP_PUSH_OR_JUMP_EXACT + if (IS_NOT_NULL(qn->head_exact)) { + r = add_op(reg, OP_PUSH_OR_JUMP_EXACT1); + if (r != 0) return r; + COP(reg)->push_or_jump_exact1.addr = SIZE_INC + mod_tlen + OPSIZE_JUMP; + COP(reg)->push_or_jump_exact1.c = STR_(qn->head_exact)->s[0]; + + r = compile_quant_body_with_empty_check(qn, reg, env); + if (r != 0) return r; + + addr = -(mod_tlen + (int )OPSIZE_PUSH_OR_JUMP_EXACT1); + } + else +#endif + if (IS_NOT_NULL(qn->next_head_exact)) { + r = add_op(reg, OP_PUSH_IF_PEEK_NEXT); + if (r != 0) return r; + COP(reg)->push_if_peek_next.addr = SIZE_INC + mod_tlen + OPSIZE_JUMP; + COP(reg)->push_if_peek_next.c = STR_(qn->next_head_exact)->s[0]; + + r = compile_quant_body_with_empty_check(qn, reg, env); + if (r != 0) return r; + + addr = -(mod_tlen + (int )OPSIZE_PUSH_IF_PEEK_NEXT); + } + else { + r = add_op(reg, OP_PUSH); + if (r != 0) return r; + COP(reg)->push.addr = SIZE_INC + mod_tlen + OPSIZE_JUMP; + + r = compile_quant_body_with_empty_check(qn, reg, env); + if (r != 0) return r; + + addr = -(mod_tlen + (int )OPSIZE_PUSH); + } + + r = add_op(reg, OP_JUMP); + if (r != 0) return r; + COP(reg)->jump.addr = addr; + } + else { + r = add_op(reg, OP_JUMP); + if (r != 0) return r; + COP(reg)->jump.addr = mod_tlen + SIZE_INC; + + r = compile_quant_body_with_empty_check(qn, reg, env); + if (r != 0) return r; + + r = add_op(reg, OP_PUSH); + if (r != 0) return r; + COP(reg)->push.addr = -mod_tlen; + } + } + else if (qn->upper == 0) { + if (qn->include_referred != 0) { /* /(?..){0}/ */ + r = add_op(reg, OP_JUMP); + if (r != 0) return r; + COP(reg)->jump.addr = tlen + SIZE_INC; + + r = compile_tree(ND_QUANT_BODY(qn), reg, env); + } + else { + /* Nothing output */ + r = 0; + } + } + else if (! infinite && qn->greedy && + (qn->upper == 1 || + len_multiply_cmp((OnigLen )tlen + OPSIZE_PUSH, qn->upper, + QUANTIFIER_EXPAND_LIMIT_SIZE) <= 0)) { + int n = qn->upper - qn->lower; + + r = compile_tree_n_times(ND_QUANT_BODY(qn), qn->lower, reg, env); + if (r != 0) return r; + + for (i = 0; i < n; i++) { + int v = onig_positive_int_multiply(n - i, tlen + OPSIZE_PUSH); + if (v < 0) return ONIGERR_TOO_BIG_NUMBER_FOR_REPEAT_RANGE; + + r = add_op(reg, OP_PUSH); + if (r != 0) return r; + COP(reg)->push.addr = v; + + r = compile_tree(ND_QUANT_BODY(qn), reg, env); + if (r != 0) return r; + } + } + else if (! qn->greedy && qn->upper == 1 && qn->lower == 0) { /* '??' */ + r = add_op(reg, OP_PUSH); + if (r != 0) return r; + COP(reg)->push.addr = SIZE_INC + OPSIZE_JUMP; + + r = add_op(reg, OP_JUMP); + if (r != 0) return r; + COP(reg)->jump.addr = tlen + SIZE_INC; + + r = compile_tree(ND_QUANT_BODY(qn), reg, env); + } + else { + r = compile_range_repeat_node(qn, mod_tlen, emptiness, reg, env); + } + return r; +} + +static int +compile_length_option_node(BagNode* node, regex_t* reg, ParseEnv* env) +{ + int tlen; + + tlen = compile_length_tree(ND_BAG_BODY(node), reg, env); + + return tlen; +} + +static int +compile_option_node(BagNode* node, regex_t* reg, ParseEnv* env) +{ + int r; + + r = compile_tree(ND_BAG_BODY(node), reg, env); + + return r; +} + +static int +compile_length_bag_node(BagNode* node, regex_t* reg, ParseEnv* env) +{ + int len; + int tlen; + + if (node->type == BAG_OPTION) + return compile_length_option_node(node, reg, env); + + if (ND_BAG_BODY(node)) { + tlen = compile_length_tree(ND_BAG_BODY(node), reg, env); + if (tlen < 0) return tlen; + } + else + tlen = 0; + + switch (node->type) { + case BAG_MEMORY: +#ifdef USE_CALL + + if (node->m.regnum == 0 && ND_IS_CALLED(node)) { + len = tlen + OPSIZE_CALL + OPSIZE_JUMP + OPSIZE_RETURN; + return len; + } + + if (ND_IS_CALLED(node)) { + len = OPSIZE_MEM_START_PUSH + tlen + + OPSIZE_CALL + OPSIZE_JUMP + OPSIZE_RETURN; + if (MEM_STATUS_AT0(reg->push_mem_end, node->m.regnum)) + len += (ND_IS_RECURSION(node) + ? OPSIZE_MEM_END_PUSH_REC : OPSIZE_MEM_END_PUSH); + else + len += (ND_IS_RECURSION(node) + ? OPSIZE_MEM_END_REC : OPSIZE_MEM_END); + } + else if (ND_IS_RECURSION(node)) { + len = OPSIZE_MEM_START_PUSH; + len += tlen + (MEM_STATUS_AT0(reg->push_mem_end, node->m.regnum) + ? OPSIZE_MEM_END_PUSH_REC : OPSIZE_MEM_END_REC); + } + else +#endif + { + if (MEM_STATUS_AT0(reg->push_mem_start, node->m.regnum)) + len = OPSIZE_MEM_START_PUSH; + else + len = OPSIZE_MEM_START; + + len += tlen + (MEM_STATUS_AT0(reg->push_mem_end, node->m.regnum) + ? OPSIZE_MEM_END_PUSH : OPSIZE_MEM_END); + } + break; + + case BAG_STOP_BACKTRACK: + if (ND_IS_STRICT_REAL_REPEAT(node)) { + int v; + QuantNode* qn; + + qn = QUANT_(ND_BAG_BODY(node)); + tlen = compile_length_tree(ND_QUANT_BODY(qn), reg, env); + if (tlen < 0) return tlen; + + v = onig_positive_int_multiply(qn->lower, tlen); + if (v < 0) return ONIGERR_TOO_BIG_NUMBER_FOR_REPEAT_RANGE; + len = v + OPSIZE_PUSH + tlen + OPSIZE_POP + OPSIZE_JUMP; + } + else { + len = OPSIZE_MARK + tlen + OPSIZE_CUT_TO_MARK; + } + break; + + case BAG_IF_ELSE: + { + Node* cond = ND_BAG_BODY(node); + Node* Then = node->te.Then; + Node* Else = node->te.Else; + + len = compile_length_tree(cond, reg, env); + if (len < 0) return len; + len += OPSIZE_PUSH + OPSIZE_MARK + OPSIZE_CUT_TO_MARK; + + if (IS_NOT_NULL(Then)) { + tlen = compile_length_tree(Then, reg, env); + if (tlen < 0) return tlen; + len += tlen; + } + + len += OPSIZE_JUMP + OPSIZE_CUT_TO_MARK; + + if (IS_NOT_NULL(Else)) { + tlen = compile_length_tree(Else, reg, env); + if (tlen < 0) return tlen; + len += tlen; + } + } + break; + + case BAG_OPTION: + /* never come here, but set for escape warning */ + len = 0; + break; + + default: + return ONIGERR_TYPE_BUG; + break; + } + + return len; +} + +static int +compile_bag_memory_node(BagNode* node, regex_t* reg, ParseEnv* env) +{ + int r; + +#ifdef USE_CALL + if (ND_IS_CALLED(node)) { + int len; + + r = add_op(reg, OP_CALL); + if (r != 0) return r; + + node->m.called_addr = COP_CURR_OFFSET(reg) + 1 + OPSIZE_JUMP; + ND_STATUS_ADD(node, FIXED_ADDR); + COP(reg)->call.addr = (int )node->m.called_addr; + + if (node->m.regnum == 0) { + len = compile_length_tree(ND_BAG_BODY(node), reg, env); + len += OPSIZE_RETURN; + + r = add_op(reg, OP_JUMP); + if (r != 0) return r; + COP(reg)->jump.addr = len + SIZE_INC; + + r = compile_tree(ND_BAG_BODY(node), reg, env); + if (r != 0) return r; + + r = add_op(reg, OP_RETURN); + return r; + } + else { + len = compile_length_tree(ND_BAG_BODY(node), reg, env); + len += (OPSIZE_MEM_START_PUSH + OPSIZE_RETURN); + if (MEM_STATUS_AT0(reg->push_mem_end, node->m.regnum)) + len += (ND_IS_RECURSION(node) + ? OPSIZE_MEM_END_PUSH_REC : OPSIZE_MEM_END_PUSH); + else + len += (ND_IS_RECURSION(node) ? OPSIZE_MEM_END_REC : OPSIZE_MEM_END); + + r = add_op(reg, OP_JUMP); + if (r != 0) return r; + COP(reg)->jump.addr = len + SIZE_INC; + } + } +#endif + + if (MEM_STATUS_AT0(reg->push_mem_start, node->m.regnum)) + r = add_op(reg, OP_MEM_START_PUSH); + else + r = add_op(reg, OP_MEM_START); + if (r != 0) return r; + COP(reg)->memory_start.num = node->m.regnum; + + r = compile_tree(ND_BAG_BODY(node), reg, env); + if (r != 0) return r; + +#ifdef USE_CALL + if (MEM_STATUS_AT0(reg->push_mem_end, node->m.regnum)) + r = add_op(reg, (ND_IS_RECURSION(node) + ? OP_MEM_END_PUSH_REC : OP_MEM_END_PUSH)); + else + r = add_op(reg, (ND_IS_RECURSION(node) ? OP_MEM_END_REC : OP_MEM_END)); + if (r != 0) return r; + COP(reg)->memory_end.num = node->m.regnum; + + if (ND_IS_CALLED(node)) { + r = add_op(reg, OP_RETURN); + } +#else + if (MEM_STATUS_AT0(reg->push_mem_end, node->m.regnum)) + r = add_op(reg, OP_MEM_END_PUSH); + else + r = add_op(reg, OP_MEM_END); + if (r != 0) return r; + COP(reg)->memory_end.num = node->m.regnum; +#endif + + return r; +} + +static int +compile_bag_node(BagNode* node, regex_t* reg, ParseEnv* env) +{ + int r, len; + + switch (node->type) { + case BAG_MEMORY: + r = compile_bag_memory_node(node, reg, env); + break; + + case BAG_OPTION: + r = compile_option_node(node, reg, env); + break; + + case BAG_STOP_BACKTRACK: + if (ND_IS_STRICT_REAL_REPEAT(node)) { + QuantNode* qn = QUANT_(ND_BAG_BODY(node)); + r = compile_tree_n_times(ND_QUANT_BODY(qn), qn->lower, reg, env); + if (r != 0) return r; + + len = compile_length_tree(ND_QUANT_BODY(qn), reg, env); + if (len < 0) return len; + + r = add_op(reg, OP_PUSH); + if (r != 0) return r; + COP(reg)->push.addr = SIZE_INC + len + OPSIZE_POP + OPSIZE_JUMP; + + r = compile_tree(ND_QUANT_BODY(qn), reg, env); + if (r != 0) return r; + r = add_op(reg, OP_POP); + if (r != 0) return r; + + r = add_op(reg, OP_JUMP); + if (r != 0) return r; + COP(reg)->jump.addr = -((int )OPSIZE_PUSH + len + (int )OPSIZE_POP); + } + else { + MemNumType mid; + + ID_ENTRY(env, mid); + r = add_op(reg, OP_MARK); + if (r != 0) return r; + COP(reg)->mark.id = mid; + COP(reg)->mark.save_pos = 0; + + r = compile_tree(ND_BAG_BODY(node), reg, env); + if (r != 0) return r; + r = add_op(reg, OP_CUT_TO_MARK); + if (r != 0) return r; + COP(reg)->cut_to_mark.id = mid; + COP(reg)->cut_to_mark.restore_pos = 0; + } + break; + + case BAG_IF_ELSE: + { + int cond_len, then_len, else_len, jump_len; + MemNumType mid; + Node* cond = ND_BAG_BODY(node); + Node* Then = node->te.Then; + Node* Else = node->te.Else; + + ID_ENTRY(env, mid); + + r = add_op(reg, OP_MARK); + if (r != 0) return r; + COP(reg)->mark.id = mid; + COP(reg)->mark.save_pos = 0; + + cond_len = compile_length_tree(cond, reg, env); + if (cond_len < 0) return cond_len; + if (IS_NOT_NULL(Then)) { + then_len = compile_length_tree(Then, reg, env); + if (then_len < 0) return then_len; + } + else + then_len = 0; + + jump_len = cond_len + then_len + OPSIZE_CUT_TO_MARK + OPSIZE_JUMP; + + r = add_op(reg, OP_PUSH); + if (r != 0) return r; + COP(reg)->push.addr = SIZE_INC + jump_len; + + r = compile_tree(cond, reg, env); + if (r != 0) return r; + r = add_op(reg, OP_CUT_TO_MARK); + if (r != 0) return r; + COP(reg)->cut_to_mark.id = mid; + COP(reg)->cut_to_mark.restore_pos = 0; + + if (IS_NOT_NULL(Then)) { + r = compile_tree(Then, reg, env); + if (r != 0) return r; + } + + if (IS_NOT_NULL(Else)) { + else_len = compile_length_tree(Else, reg, env); + if (else_len < 0) return else_len; + } + else + else_len = 0; + + r = add_op(reg, OP_JUMP); + if (r != 0) return r; + COP(reg)->jump.addr = OPSIZE_CUT_TO_MARK + else_len + SIZE_INC; + + r = add_op(reg, OP_CUT_TO_MARK); + if (r != 0) return r; + COP(reg)->cut_to_mark.id = mid; + COP(reg)->cut_to_mark.restore_pos = 0; + + if (IS_NOT_NULL(Else)) { + r = compile_tree(Else, reg, env); + } + } + break; + + default: + return ONIGERR_TYPE_BUG; + break; + } + + return r; +} + +static int +compile_length_anchor_node(AnchorNode* node, regex_t* reg, ParseEnv* env) +{ + int len; + int tlen = 0; + + if (IS_NOT_NULL(ND_ANCHOR_BODY(node))) { + tlen = compile_length_tree(ND_ANCHOR_BODY(node), reg, env); + if (tlen < 0) return tlen; + } + + switch (node->type) { + case ANCR_PREC_READ: + len = OPSIZE_MARK + tlen + OPSIZE_CUT_TO_MARK; + break; + case ANCR_PREC_READ_NOT: + len = OPSIZE_PUSH + OPSIZE_MARK + tlen + OPSIZE_POP_TO_MARK + OPSIZE_POP + OPSIZE_FAIL; + break; + case ANCR_LOOK_BEHIND: + if (node->char_min_len == node->char_max_len) + len = OPSIZE_MARK + OPSIZE_STEP_BACK_START + tlen + OPSIZE_CUT_TO_MARK; + else { + len = OPSIZE_SAVE_VAL + OPSIZE_UPDATE_VAR + OPSIZE_MARK + OPSIZE_PUSH + OPSIZE_UPDATE_VAR + OPSIZE_FAIL + OPSIZE_JUMP + OPSIZE_STEP_BACK_START + OPSIZE_STEP_BACK_NEXT + tlen + OPSIZE_CHECK_POSITION + OPSIZE_CUT_TO_MARK + OPSIZE_UPDATE_VAR; + + if (IS_NOT_NULL(node->lead_node)) { + int llen = compile_length_tree(node->lead_node, reg, env); + if (llen < 0) return llen; + + len += OPSIZE_MOVE + llen; + } + + if ((env->flags & PE_FLAG_HAS_ABSENT_STOPPER) != 0) + len += OPSIZE_SAVE_VAL + OPSIZE_UPDATE_VAR; + } + break; + case ANCR_LOOK_BEHIND_NOT: + if (node->char_min_len == node->char_max_len) + len = OPSIZE_MARK + OPSIZE_PUSH + OPSIZE_STEP_BACK_START + tlen + OPSIZE_POP_TO_MARK + OPSIZE_FAIL + OPSIZE_POP; + else { + len = OPSIZE_SAVE_VAL + OPSIZE_UPDATE_VAR + OPSIZE_MARK + OPSIZE_PUSH + OPSIZE_STEP_BACK_START + OPSIZE_STEP_BACK_NEXT + tlen + OPSIZE_CHECK_POSITION + OPSIZE_POP_TO_MARK + OPSIZE_UPDATE_VAR + OPSIZE_POP + OPSIZE_FAIL + OPSIZE_UPDATE_VAR + OPSIZE_POP + OPSIZE_POP; + + if (IS_NOT_NULL(node->lead_node)) { + int llen = compile_length_tree(node->lead_node, reg, env); + if (llen < 0) return llen; + + len += OPSIZE_MOVE + llen; + } + + if ((env->flags & PE_FLAG_HAS_ABSENT_STOPPER) != 0) + len += OPSIZE_SAVE_VAL + OPSIZE_UPDATE_VAR; + } + break; + + case ANCR_WORD_BOUNDARY: + case ANCR_NO_WORD_BOUNDARY: +#ifdef USE_WORD_BEGIN_END + case ANCR_WORD_BEGIN: + case ANCR_WORD_END: +#endif + len = OPSIZE_WORD_BOUNDARY; + break; + + case ANCR_TEXT_SEGMENT_BOUNDARY: + case ANCR_NO_TEXT_SEGMENT_BOUNDARY: + len = SIZE_OPCODE; + break; + + default: + len = SIZE_OPCODE; + break; + } + + return len; +} + +static int +compile_anchor_look_behind_node(AnchorNode* node, regex_t* reg, ParseEnv* env) +{ + int r; + + if (node->char_min_len == node->char_max_len) { + MemNumType mid; + + ID_ENTRY(env, mid); + r = add_op(reg, OP_MARK); + if (r != 0) return r; + COP(reg)->mark.id = mid; + COP(reg)->mark.save_pos = FALSE; + + r = add_op(reg, OP_STEP_BACK_START); + if (r != 0) return r; + COP(reg)->step_back_start.initial = node->char_min_len; + COP(reg)->step_back_start.remaining = 0; + COP(reg)->step_back_start.addr = 1; + + r = compile_tree(ND_ANCHOR_BODY(node), reg, env); + if (r != 0) return r; + + r = add_op(reg, OP_CUT_TO_MARK); + if (r != 0) return r; + COP(reg)->cut_to_mark.id = mid; + COP(reg)->cut_to_mark.restore_pos = FALSE; + } + else { + OnigLen diff; + MemNumType mid1, mid2; + MemNumType mid3 = 0; /* ignore uninitialized warning */ + + if (IS_NOT_NULL(node->lead_node)) { + MinMaxCharLen ci; + + r = node_char_len(node->lead_node, reg, &ci, env); + if (r < 0) return r; + r = add_op(reg, OP_MOVE); + if (r != 0) return r; + COP(reg)->move.n = -((RelPositionType )ci.min); + r = compile_tree(node->lead_node, reg, env); + if (r != 0) return r; + } + + ID_ENTRY(env, mid1); + r = add_op(reg, OP_SAVE_VAL); + if (r != 0) return r; + COP(reg)->save_val.type = SAVE_RIGHT_RANGE; + COP(reg)->save_val.id = mid1; + + r = add_op(reg, OP_UPDATE_VAR); + if (r != 0) return r; + COP(reg)->update_var.type = UPDATE_VAR_RIGHT_RANGE_TO_S; + + ID_ENTRY(env, mid2); + r = add_op(reg, OP_MARK); + if (r != 0) return r; + COP(reg)->mark.id = mid2; + COP(reg)->mark.save_pos = FALSE; + + r = add_op(reg, OP_PUSH); + if (r != 0) return r; + COP(reg)->push.addr = SIZE_INC + OPSIZE_JUMP; + + r = add_op(reg, OP_JUMP); + if (r != 0) return r; + COP(reg)->jump.addr = SIZE_INC + OPSIZE_UPDATE_VAR + OPSIZE_FAIL; + + r = add_op(reg, OP_UPDATE_VAR); + if (r != 0) return r; + COP(reg)->update_var.type = UPDATE_VAR_RIGHT_RANGE_FROM_STACK; + COP(reg)->update_var.id = mid1; + COP(reg)->update_var.clear = FALSE; + r = add_op(reg, OP_FAIL); + if (r != 0) return r; + + if ((env->flags & PE_FLAG_HAS_ABSENT_STOPPER) != 0) { + ID_ENTRY(env, mid3); + r = add_op(reg, OP_SAVE_VAL); + if (r != 0) return r; + COP(reg)->save_val.type = SAVE_RIGHT_RANGE; + COP(reg)->save_val.id = mid3; + } + + r = add_op(reg, OP_STEP_BACK_START); + if (r != 0) return r; + + if (node->char_max_len != INFINITE_LEN) + diff = node->char_max_len - node->char_min_len; + else + diff = INFINITE_LEN; + + COP(reg)->step_back_start.initial = node->char_min_len; + COP(reg)->step_back_start.remaining = diff; + COP(reg)->step_back_start.addr = 2; + + r = add_op(reg, OP_STEP_BACK_NEXT); + if (r != 0) return r; + + r = compile_tree(ND_ANCHOR_BODY(node), reg, env); + if (r != 0) return r; + + if ((env->flags & PE_FLAG_HAS_ABSENT_STOPPER) != 0) { + r = add_op(reg, OP_UPDATE_VAR); + if (r != 0) return r; + COP(reg)->update_var.type = UPDATE_VAR_RIGHT_RANGE_FROM_STACK; + COP(reg)->update_var.id = mid3; + COP(reg)->update_var.clear = FALSE; + } + + r = add_op(reg, OP_CHECK_POSITION); + if (r != 0) return r; + COP(reg)->check_position.type = CHECK_POSITION_CURRENT_RIGHT_RANGE; + + r = add_op(reg, OP_CUT_TO_MARK); + if (r != 0) return r; + COP(reg)->cut_to_mark.id = mid2; + COP(reg)->cut_to_mark.restore_pos = FALSE; + + r = add_op(reg, OP_UPDATE_VAR); + if (r != 0) return r; + COP(reg)->update_var.type = UPDATE_VAR_RIGHT_RANGE_FROM_STACK; + COP(reg)->update_var.id = mid1; + COP(reg)->update_var.clear = TRUE; + } + + return r; +} + +static int +compile_anchor_look_behind_not_node(AnchorNode* node, regex_t* reg, + ParseEnv* env) +{ + int r; + int len; + + len = compile_length_tree(ND_ANCHOR_BODY(node), reg, env); + + if (node->char_min_len == node->char_max_len) { + MemNumType mid; + + ID_ENTRY(env, mid); + r = add_op(reg, OP_MARK); + if (r != 0) return r; + COP(reg)->mark.id = mid; + COP(reg)->mark.save_pos = FALSE; + + r = add_op(reg, OP_PUSH); + if (r != 0) return r; + COP(reg)->push.addr = SIZE_INC + OPSIZE_STEP_BACK_START + len + OPSIZE_POP_TO_MARK + OPSIZE_FAIL; + + r = add_op(reg, OP_STEP_BACK_START); + if (r != 0) return r; + COP(reg)->step_back_start.initial = node->char_min_len; + COP(reg)->step_back_start.remaining = 0; + COP(reg)->step_back_start.addr = 1; + + r = compile_tree(ND_ANCHOR_BODY(node), reg, env); + if (r != 0) return r; + + r = add_op(reg, OP_POP_TO_MARK); + if (r != 0) return r; + COP(reg)->pop_to_mark.id = mid; + r = add_op(reg, OP_FAIL); + if (r != 0) return r; + r = add_op(reg, OP_POP); + } + else { + OnigLen diff; + MemNumType mid1, mid2; + MemNumType mid3 = 0; /* ignore uninitialized warning */ + + ID_ENTRY(env, mid1); + r = add_op(reg, OP_SAVE_VAL); + if (r != 0) return r; + COP(reg)->save_val.type = SAVE_RIGHT_RANGE; + COP(reg)->save_val.id = mid1; + + r = add_op(reg, OP_UPDATE_VAR); + if (r != 0) return r; + COP(reg)->update_var.type = UPDATE_VAR_RIGHT_RANGE_TO_S; + + ID_ENTRY(env, mid2); + r = add_op(reg, OP_MARK); + if (r != 0) return r; + COP(reg)->mark.id = mid2; + COP(reg)->mark.save_pos = FALSE; + + r = add_op(reg, OP_PUSH); + if (r != 0) return r; + + COP(reg)->push.addr = SIZE_INC + OPSIZE_STEP_BACK_START + OPSIZE_STEP_BACK_NEXT + len + OPSIZE_CHECK_POSITION + OPSIZE_POP_TO_MARK + OPSIZE_UPDATE_VAR + OPSIZE_POP + OPSIZE_FAIL; + if ((env->flags & PE_FLAG_HAS_ABSENT_STOPPER) != 0) + COP(reg)->push.addr += OPSIZE_SAVE_VAL + OPSIZE_UPDATE_VAR; + + if (IS_NOT_NULL(node->lead_node)) { + int clen; + MinMaxCharLen ci; + + clen = compile_length_tree(node->lead_node, reg, env); + COP(reg)->push.addr += OPSIZE_MOVE + clen; + + r = node_char_len(node->lead_node, reg, &ci, env); + if (r < 0) return r; + r = add_op(reg, OP_MOVE); + if (r != 0) return r; + COP(reg)->move.n = -((RelPositionType )ci.min); + + r = compile_tree(node->lead_node, reg, env); + if (r != 0) return r; + } + + if ((env->flags & PE_FLAG_HAS_ABSENT_STOPPER) != 0) { + ID_ENTRY(env, mid3); + r = add_op(reg, OP_SAVE_VAL); + if (r != 0) return r; + COP(reg)->save_val.type = SAVE_RIGHT_RANGE; + COP(reg)->save_val.id = mid3; + } + + r = add_op(reg, OP_STEP_BACK_START); + if (r != 0) return r; + + if (node->char_max_len != INFINITE_LEN) + diff = node->char_max_len - node->char_min_len; + else + diff = INFINITE_LEN; + + COP(reg)->step_back_start.initial = node->char_min_len; + COP(reg)->step_back_start.remaining = diff; + COP(reg)->step_back_start.addr = 2; + + r = add_op(reg, OP_STEP_BACK_NEXT); + if (r != 0) return r; + + r = compile_tree(ND_ANCHOR_BODY(node), reg, env); + if (r != 0) return r; + + if ((env->flags & PE_FLAG_HAS_ABSENT_STOPPER) != 0) { + r = add_op(reg, OP_UPDATE_VAR); + if (r != 0) return r; + COP(reg)->update_var.type = UPDATE_VAR_RIGHT_RANGE_FROM_STACK; + COP(reg)->update_var.id = mid3; + COP(reg)->update_var.clear = FALSE; + } + + r = add_op(reg, OP_CHECK_POSITION); + if (r != 0) return r; + COP(reg)->check_position.type = CHECK_POSITION_CURRENT_RIGHT_RANGE; + + r = add_op(reg, OP_POP_TO_MARK); + if (r != 0) return r; + COP(reg)->pop_to_mark.id = mid2; + + r = add_op(reg, OP_UPDATE_VAR); + if (r != 0) return r; + COP(reg)->update_var.type = UPDATE_VAR_RIGHT_RANGE_FROM_STACK; + COP(reg)->update_var.id = mid1; + COP(reg)->update_var.clear = FALSE; + + r = add_op(reg, OP_POP); /* pop save val */ + if (r != 0) return r; + r = add_op(reg, OP_FAIL); + if (r != 0) return r; + + r = add_op(reg, OP_UPDATE_VAR); + if (r != 0) return r; + COP(reg)->update_var.type = UPDATE_VAR_RIGHT_RANGE_FROM_STACK; + COP(reg)->update_var.id = mid1; + COP(reg)->update_var.clear = FALSE; + + r = add_op(reg, OP_POP); /* pop mark */ + if (r != 0) return r; + r = add_op(reg, OP_POP); /* pop save val */ + } + + return r; +} + +static int +compile_anchor_node(AnchorNode* node, regex_t* reg, ParseEnv* env) +{ + int r, len; + enum OpCode op; + MemNumType mid; + + switch (node->type) { + case ANCR_BEGIN_BUF: r = add_op(reg, OP_BEGIN_BUF); break; + case ANCR_END_BUF: r = add_op(reg, OP_END_BUF); break; + case ANCR_BEGIN_LINE: r = add_op(reg, OP_BEGIN_LINE); break; + case ANCR_END_LINE: r = add_op(reg, OP_END_LINE); break; + case ANCR_SEMI_END_BUF: r = add_op(reg, OP_SEMI_END_BUF); break; + case ANCR_BEGIN_POSITION: + r = add_op(reg, OP_CHECK_POSITION); + if (r != 0) return r; + COP(reg)->check_position.type = CHECK_POSITION_SEARCH_START; + break; + + case ANCR_WORD_BOUNDARY: + op = OP_WORD_BOUNDARY; + word: + r = add_op(reg, op); + if (r != 0) return r; + COP(reg)->word_boundary.mode = (ModeType )node->ascii_mode; + break; + + case ANCR_NO_WORD_BOUNDARY: + op = OP_NO_WORD_BOUNDARY; goto word; + break; +#ifdef USE_WORD_BEGIN_END + case ANCR_WORD_BEGIN: + op = OP_WORD_BEGIN; goto word; + break; + case ANCR_WORD_END: + op = OP_WORD_END; goto word; + break; +#endif + + case ANCR_TEXT_SEGMENT_BOUNDARY: + case ANCR_NO_TEXT_SEGMENT_BOUNDARY: + { + enum TextSegmentBoundaryType type; + + r = add_op(reg, OP_TEXT_SEGMENT_BOUNDARY); + if (r != 0) return r; + + type = EXTENDED_GRAPHEME_CLUSTER_BOUNDARY; +#ifdef USE_UNICODE_WORD_BREAK + if (ND_IS_TEXT_SEGMENT_WORD(node)) + type = WORD_BOUNDARY; +#endif + + COP(reg)->text_segment_boundary.type = type; + COP(reg)->text_segment_boundary.not = + (node->type == ANCR_NO_TEXT_SEGMENT_BOUNDARY ? 1 : 0); + } + break; + + case ANCR_PREC_READ: + { + ID_ENTRY(env, mid); + r = add_op(reg, OP_MARK); + if (r != 0) return r; + COP(reg)->mark.id = mid; + COP(reg)->mark.save_pos = TRUE; + + r = compile_tree(ND_ANCHOR_BODY(node), reg, env); + if (r != 0) return r; + + r = add_op(reg, OP_CUT_TO_MARK); + if (r != 0) return r; + COP(reg)->cut_to_mark.id = mid; + COP(reg)->cut_to_mark.restore_pos = TRUE; + } + break; + + case ANCR_PREC_READ_NOT: + { + len = compile_length_tree(ND_ANCHOR_BODY(node), reg, env); + if (len < 0) return len; + + ID_ENTRY(env, mid); + r = add_op(reg, OP_PUSH); + if (r != 0) return r; + COP(reg)->push.addr = SIZE_INC + OPSIZE_MARK + len + + OPSIZE_POP_TO_MARK + OPSIZE_POP + OPSIZE_FAIL; + + r = add_op(reg, OP_MARK); + if (r != 0) return r; + COP(reg)->mark.id = mid; + COP(reg)->mark.save_pos = FALSE; + + r = compile_tree(ND_ANCHOR_BODY(node), reg, env); + if (r != 0) return r; + + r = add_op(reg, OP_POP_TO_MARK); + if (r != 0) return r; + COP(reg)->pop_to_mark.id = mid; + + r = add_op(reg, OP_POP); + if (r != 0) return r; + r = add_op(reg, OP_FAIL); + } + break; + + case ANCR_LOOK_BEHIND: + r = compile_anchor_look_behind_node(node, reg, env); + break; + + case ANCR_LOOK_BEHIND_NOT: + r = compile_anchor_look_behind_not_node(node, reg, env); + break; + + default: + return ONIGERR_TYPE_BUG; + break; + } + + return r; +} + +static int +compile_gimmick_node(GimmickNode* node, regex_t* reg) +{ + int r = 0; + + switch (node->type) { + case GIMMICK_FAIL: + r = add_op(reg, OP_FAIL); + break; + + case GIMMICK_SAVE: + r = add_op(reg, OP_SAVE_VAL); + if (r != 0) return r; + COP(reg)->save_val.type = node->detail_type; + COP(reg)->save_val.id = node->id; + break; + + case GIMMICK_UPDATE_VAR: + r = add_op(reg, OP_UPDATE_VAR); + if (r != 0) return r; + COP(reg)->update_var.type = node->detail_type; + COP(reg)->update_var.id = node->id; + COP(reg)->update_var.clear = FALSE; + break; + +#ifdef USE_CALLOUT + case GIMMICK_CALLOUT: + switch (node->detail_type) { + case ONIG_CALLOUT_OF_CONTENTS: + case ONIG_CALLOUT_OF_NAME: + { + if (node->detail_type == ONIG_CALLOUT_OF_NAME) { + r = add_op(reg, OP_CALLOUT_NAME); + if (r != 0) return r; + COP(reg)->callout_name.id = node->id; + COP(reg)->callout_name.num = node->num; + } + else { + r = add_op(reg, OP_CALLOUT_CONTENTS); + if (r != 0) return r; + COP(reg)->callout_contents.num = node->num; + } + } + break; + + default: + r = ONIGERR_TYPE_BUG; + break; + } +#endif + } + + return r; +} + +static int +compile_length_gimmick_node(GimmickNode* node, regex_t* reg) +{ + int len; + + switch (node->type) { + case GIMMICK_FAIL: + len = OPSIZE_FAIL; + break; + + case GIMMICK_SAVE: + len = OPSIZE_SAVE_VAL; + break; + + case GIMMICK_UPDATE_VAR: + len = OPSIZE_UPDATE_VAR; + break; + +#ifdef USE_CALLOUT + case GIMMICK_CALLOUT: + switch (node->detail_type) { + case ONIG_CALLOUT_OF_CONTENTS: + len = OPSIZE_CALLOUT_CONTENTS; + break; + case ONIG_CALLOUT_OF_NAME: + len = OPSIZE_CALLOUT_NAME; + break; + + default: + len = ONIGERR_TYPE_BUG; + break; + } + break; +#endif + + default: + return ONIGERR_TYPE_BUG; + break; + } + + return len; +} + +static int +compile_length_tree(Node* node, regex_t* reg, ParseEnv* env) +{ + int len, r; + + switch (ND_TYPE(node)) { + case ND_LIST: + len = 0; + do { + r = compile_length_tree(ND_CAR(node), reg, env); + if (r < 0) return r; + len += r; + } while (IS_NOT_NULL(node = ND_CDR(node))); + r = len; + break; + + case ND_ALT: + { + int n; + + n = r = 0; + do { + r += compile_length_tree(ND_CAR(node), reg, env); + n++; + } while (IS_NOT_NULL(node = ND_CDR(node))); + r += (OPSIZE_PUSH + OPSIZE_JUMP) * (n - 1); + } + break; + + case ND_STRING: + if (ND_STRING_IS_CRUDE(node)) + r = compile_length_string_crude_node(STR_(node), reg); + else + r = compile_length_string_node(node, reg); + break; + + case ND_CCLASS: + r = compile_length_cclass_node(CCLASS_(node), reg); + break; + + case ND_CTYPE: + r = SIZE_OPCODE; + break; + + case ND_BACKREF: + r = OPSIZE_BACKREF; + break; + +#ifdef USE_CALL + case ND_CALL: + r = OPSIZE_CALL; + break; +#endif + + case ND_QUANT: + r = compile_length_quantifier_node(QUANT_(node), reg, env); + break; + + case ND_BAG: + r = compile_length_bag_node(BAG_(node), reg, env); + break; + + case ND_ANCHOR: + r = compile_length_anchor_node(ANCHOR_(node), reg, env); + break; + + case ND_GIMMICK: + r = compile_length_gimmick_node(GIMMICK_(node), reg); + break; + + default: + return ONIGERR_TYPE_BUG; + break; + } + + return r; +} + +static int +compile_tree(Node* node, regex_t* reg, ParseEnv* env) +{ + int n, len, pos, r = 0; + + switch (ND_TYPE(node)) { + case ND_LIST: + do { + r = compile_tree(ND_CAR(node), reg, env); + } while (r == 0 && IS_NOT_NULL(node = ND_CDR(node))); + break; + + case ND_ALT: + { + Node* x = node; + len = 0; + do { + len += compile_length_tree(ND_CAR(x), reg, env); + if (IS_NOT_NULL(ND_CDR(x))) { + len += OPSIZE_PUSH + OPSIZE_JUMP; + } + } while (IS_NOT_NULL(x = ND_CDR(x))); + pos = COP_CURR_OFFSET(reg) + 1 + len; /* goal position */ + + do { + len = compile_length_tree(ND_CAR(node), reg, env); + if (IS_NOT_NULL(ND_CDR(node))) { + enum OpCode push = ND_IS_SUPER(node) ? OP_PUSH_SUPER : OP_PUSH; + r = add_op(reg, push); + if (r != 0) break; + COP(reg)->push.addr = SIZE_INC + len + OPSIZE_JUMP; + } + r = compile_tree(ND_CAR(node), reg, env); + if (r != 0) break; + if (IS_NOT_NULL(ND_CDR(node))) { + len = pos - (COP_CURR_OFFSET(reg) + 1); + r = add_op(reg, OP_JUMP); + if (r != 0) break; + COP(reg)->jump.addr = len; + } + } while (IS_NOT_NULL(node = ND_CDR(node))); + } + break; + + case ND_STRING: + if (ND_STRING_IS_CRUDE(node)) + r = compile_string_crude_node(STR_(node), reg); + else + r = compile_string_node(node, reg); + break; + + case ND_CCLASS: + r = compile_cclass_node(CCLASS_(node), reg); + break; + + case ND_CTYPE: + { + int op; + + switch (CTYPE_(node)->ctype) { + case CTYPE_ANYCHAR: + r = add_op(reg, ND_IS_MULTILINE(node) ? OP_ANYCHAR_ML : OP_ANYCHAR); + break; + + case ONIGENC_CTYPE_WORD: + if (CTYPE_(node)->ascii_mode == 0) { + op = CTYPE_(node)->not != 0 ? OP_NO_WORD : OP_WORD; + } + else { + op = CTYPE_(node)->not != 0 ? OP_NO_WORD_ASCII : OP_WORD_ASCII; + } + r = add_op(reg, op); + break; + + default: + return ONIGERR_TYPE_BUG; + break; + } + } + break; + + case ND_BACKREF: + { + BackRefNode* br = BACKREF_(node); + + if (ND_IS_CHECKER(node)) { +#ifdef USE_BACKREF_WITH_LEVEL + if (ND_IS_NEST_LEVEL(node)) { + r = add_op(reg, OP_BACKREF_CHECK_WITH_LEVEL); + if (r != 0) return r; + COP(reg)->backref_general.nest_level = br->nest_level; + } + else +#endif + { + r = add_op(reg, OP_BACKREF_CHECK); + if (r != 0) return r; + } + goto add_bacref_mems; + } + else { +#ifdef USE_BACKREF_WITH_LEVEL + if (ND_IS_NEST_LEVEL(node)) { + if (ND_IS_IGNORECASE(node)) + r = add_op(reg, OP_BACKREF_WITH_LEVEL_IC); + else + r = add_op(reg, OP_BACKREF_WITH_LEVEL); + + if (r != 0) return r; + COP(reg)->backref_general.nest_level = br->nest_level; + goto add_bacref_mems; + } + else +#endif + if (br->back_num == 1) { + n = br->back_static[0]; + if (ND_IS_IGNORECASE(node)) { + r = add_op(reg, OP_BACKREF_N_IC); + if (r != 0) return r; + COP(reg)->backref_n.n1 = n; + } + else { + switch (n) { + case 1: r = add_op(reg, OP_BACKREF1); break; + case 2: r = add_op(reg, OP_BACKREF2); break; + default: + r = add_op(reg, OP_BACKREF_N); + if (r != 0) return r; + COP(reg)->backref_n.n1 = n; + break; + } + } + } + else { + int num; + int* p; + + r = add_op(reg, ND_IS_IGNORECASE(node) ? + OP_BACKREF_MULTI_IC : OP_BACKREF_MULTI); + if (r != 0) return r; + + add_bacref_mems: + num = br->back_num; + COP(reg)->backref_general.num = num; + if (num == 1) { + COP(reg)->backref_general.n1 = br->back_static[0]; + } + else { + int i, j; + MemNumType* ns; + + ns = xmalloc(sizeof(MemNumType) * num); + CHECK_NULL_RETURN_MEMERR(ns); + COP(reg)->backref_general.ns = ns; + p = BACKREFS_P(br); + for (i = num - 1, j = 0; i >= 0; i--, j++) { + ns[j] = p[i]; + } + } + } + } + } + break; + +#ifdef USE_CALL + case ND_CALL: + r = compile_call(CALL_(node), reg, env); + break; +#endif + + case ND_QUANT: + r = compile_quantifier_node(QUANT_(node), reg, env); + break; + + case ND_BAG: + r = compile_bag_node(BAG_(node), reg, env); + break; + + case ND_ANCHOR: + r = compile_anchor_node(ANCHOR_(node), reg, env); + break; + + case ND_GIMMICK: + r = compile_gimmick_node(GIMMICK_(node), reg); + break; + + default: +#ifdef ONIG_DEBUG + fprintf(DBGFP, "compile_tree: undefined node type %d\n", ND_TYPE(node)); +#endif + break; + } + + return r; +} + +static int +make_named_capture_number_map(Node** plink, GroupNumMap* map, int* counter) +{ + int r; + Node* node = *plink; + + switch (ND_TYPE(node)) { + case ND_LIST: + case ND_ALT: + do { + r = make_named_capture_number_map(&(ND_CAR(node)), map, counter); + } while (r >= 0 && IS_NOT_NULL(node = ND_CDR(node))); + if (r < 0) return r; + break; + + case ND_QUANT: + { + Node** ptarget = &(ND_BODY(node)); + r = make_named_capture_number_map(ptarget, map, counter); + if (r < 0) return r; + if (r == 1 && ND_TYPE(*ptarget) == ND_QUANT) { + return onig_reduce_nested_quantifier(node); + } + } + break; + + case ND_BAG: + { + BagNode* en = BAG_(node); + if (en->type == BAG_MEMORY) { + if (ND_IS_NAMED_GROUP(node)) { + (*counter)++; + map[en->m.regnum].new_val = *counter; + en->m.regnum = *counter; + r = make_named_capture_number_map(&(ND_BODY(node)), map, counter); + if (r < 0) return r; + } + else { + *plink = ND_BODY(node); + ND_BODY(node) = NULL_NODE; + onig_node_free(node); + r = make_named_capture_number_map(plink, map, counter); + if (r < 0) return r; + return 1; + } + } + else if (en->type == BAG_IF_ELSE) { + r = make_named_capture_number_map(&(ND_BAG_BODY(en)), map, counter); + if (r < 0) return r; + if (IS_NOT_NULL(en->te.Then)) { + r = make_named_capture_number_map(&(en->te.Then), map, counter); + if (r < 0) return r; + } + if (IS_NOT_NULL(en->te.Else)) { + r = make_named_capture_number_map(&(en->te.Else), map, counter); + if (r < 0) return r; + } + } + else { + r = make_named_capture_number_map(&(ND_BODY(node)), map, counter); + if (r < 0) return r; + } + } + break; + + case ND_ANCHOR: + if (IS_NOT_NULL(ND_BODY(node))) { + r = make_named_capture_number_map(&(ND_BODY(node)), map, counter); + if (r < 0) return r; + } + break; + + default: + break; + } + + return 0; +} + +static int +renumber_backref_node(Node* node, GroupNumMap* map) +{ + int i, pos, n, old_num; + int *backs; + BackRefNode* bn = BACKREF_(node); + + if (! ND_IS_BY_NAME(node)) + return ONIGERR_NUMBERED_BACKREF_OR_CALL_NOT_ALLOWED; + + old_num = bn->back_num; + if (IS_NULL(bn->back_dynamic)) + backs = bn->back_static; + else + backs = bn->back_dynamic; + + for (i = 0, pos = 0; i < old_num; i++) { + n = map[backs[i]].new_val; + if (n > 0) { + backs[pos] = n; + pos++; + } + } + + bn->back_num = pos; + return 0; +} + +static int +renumber_backref_traverse(Node* node, GroupNumMap* map) +{ + int r = 0; + + switch (ND_TYPE(node)) { + case ND_LIST: + case ND_ALT: + do { + r = renumber_backref_traverse(ND_CAR(node), map); + } while (r == 0 && IS_NOT_NULL(node = ND_CDR(node))); + break; + + case ND_QUANT: + r = renumber_backref_traverse(ND_BODY(node), map); + break; + + case ND_BAG: + { + BagNode* en = BAG_(node); + + r = renumber_backref_traverse(ND_BODY(node), map); + if (r != 0) return r; + + if (en->type == BAG_IF_ELSE) { + if (IS_NOT_NULL(en->te.Then)) { + r = renumber_backref_traverse(en->te.Then, map); + if (r != 0) return r; + } + if (IS_NOT_NULL(en->te.Else)) { + r = renumber_backref_traverse(en->te.Else, map); + if (r != 0) return r; + } + } + } + break; + + case ND_BACKREF: + r = renumber_backref_node(node, map); + break; + + case ND_ANCHOR: + if (IS_NOT_NULL(ND_BODY(node))) + r = renumber_backref_traverse(ND_BODY(node), map); + break; + + default: + break; + } + + return r; +} + +static int +numbered_ref_check(Node* node) +{ + int r = 0; + + switch (ND_TYPE(node)) { + case ND_LIST: + case ND_ALT: + do { + r = numbered_ref_check(ND_CAR(node)); + } while (r == 0 && IS_NOT_NULL(node = ND_CDR(node))); + break; + + case ND_ANCHOR: + if (IS_NULL(ND_BODY(node))) + break; + /* fall */ + case ND_QUANT: + r = numbered_ref_check(ND_BODY(node)); + break; + + case ND_BAG: + { + BagNode* en = BAG_(node); + + r = numbered_ref_check(ND_BODY(node)); + if (r != 0) return r; + + if (en->type == BAG_IF_ELSE) { + if (IS_NOT_NULL(en->te.Then)) { + r = numbered_ref_check(en->te.Then); + if (r != 0) return r; + } + if (IS_NOT_NULL(en->te.Else)) { + r = numbered_ref_check(en->te.Else); + if (r != 0) return r; + } + } + } + + break; + + case ND_BACKREF: + if (! ND_IS_BY_NAME(node)) + return ONIGERR_NUMBERED_BACKREF_OR_CALL_NOT_ALLOWED; + break; + + default: + break; + } + + return r; +} + +static int +disable_noname_group_capture(Node** root, regex_t* reg, ParseEnv* env) +{ + int r, i, pos, counter; + MemStatusType loc; + GroupNumMap* map; + + map = (GroupNumMap* )xalloca(sizeof(GroupNumMap) * (env->num_mem + 1)); + CHECK_NULL_RETURN_MEMERR(map); + for (i = 1; i <= env->num_mem; i++) { + map[i].new_val = 0; + } + counter = 0; + r = make_named_capture_number_map(root, map, &counter); + if (r < 0) return r; + + r = renumber_backref_traverse(*root, map); + if (r != 0) return r; + + for (i = 1, pos = 1; i <= env->num_mem; i++) { + if (map[i].new_val > 0) { + PARSEENV_MEMENV(env)[pos] = PARSEENV_MEMENV(env)[i]; + pos++; + } + } + + loc = env->cap_history; + MEM_STATUS_CLEAR(env->cap_history); + for (i = 1; i <= ONIG_MAX_CAPTURE_HISTORY_GROUP; i++) { + if (MEM_STATUS_AT(loc, i)) { + MEM_STATUS_ON_SIMPLE(env->cap_history, map[i].new_val); + } + } + + env->num_mem = env->num_named; + reg->num_mem = env->num_named; + + return onig_renumber_name_table(reg, map); +} + +#ifdef USE_CALL +static int +fix_unset_addr_list(UnsetAddrList* uslist, regex_t* reg) +{ + int i, offset; + BagNode* en; + AbsAddrType addr; + AbsAddrType* paddr; + + for (i = 0; i < uslist->num; i++) { + if (! ND_IS_FIXED_ADDR(uslist->us[i].target)) { + if (ND_IS_CALLED(uslist->us[i].target)) + return ONIGERR_PARSER_BUG; + else { + /* CASE: called node doesn't have called address. + ex. /((|a\g<1>)(.){0}){0}\g<3>/ + group-1 doesn't called, but compiled into bytecodes, + because group-3 is referred from outside. + */ + continue; + } + } + + en = BAG_(uslist->us[i].target); + addr = en->m.called_addr; + offset = uslist->us[i].offset; + + paddr = (AbsAddrType* )((char* )reg->ops + offset); + *paddr = addr; + } + return 0; +} +#endif + +/* x is not included y ==> 1 : 0 */ +static int +is_exclusive(Node* x, Node* y, regex_t* reg) +{ + int i, len; + OnigCodePoint code; + UChar *p; + NodeType ytype; + + retry: + ytype = ND_TYPE(y); + switch (ND_TYPE(x)) { + case ND_CTYPE: + { + if (CTYPE_(x)->ctype == CTYPE_ANYCHAR || + CTYPE_(y)->ctype == CTYPE_ANYCHAR) + break; + + switch (ytype) { + case ND_CTYPE: + if (CTYPE_(y)->ctype == CTYPE_(x)->ctype && + CTYPE_(y)->not != CTYPE_(x)->not && + CTYPE_(y)->ascii_mode == CTYPE_(x)->ascii_mode) + return 1; + else + return 0; + break; + + case ND_CCLASS: + swap: + { + Node* tmp; + tmp = x; x = y; y = tmp; + goto retry; + } + break; + + case ND_STRING: + goto swap; + break; + + default: + break; + } + } + break; + + case ND_CCLASS: + { + int range; + CClassNode* xc = CCLASS_(x); + + switch (ytype) { + case ND_CTYPE: + switch (CTYPE_(y)->ctype) { + case CTYPE_ANYCHAR: + return 0; + break; + + case ONIGENC_CTYPE_WORD: + if (CTYPE_(y)->not == 0) { + if (IS_NULL(xc->mbuf) && !IS_NCCLASS_NOT(xc)) { + range = CTYPE_(y)->ascii_mode != 0 ? 128 : SINGLE_BYTE_SIZE; + for (i = 0; i < range; i++) { + if (BITSET_AT(xc->bs, i)) { + if (ONIGENC_IS_CODE_WORD(reg->enc, i)) return 0; + } + } + return 1; + } + return 0; + } + else { + if (IS_NOT_NULL(xc->mbuf)) return 0; + if (IS_NCCLASS_NOT(xc)) return 0; + + range = CTYPE_(y)->ascii_mode != 0 ? 128 : SINGLE_BYTE_SIZE; + for (i = 0; i < range; i++) { + if (! ONIGENC_IS_CODE_WORD(reg->enc, i)) { + if (BITSET_AT(xc->bs, i)) + return 0; + } + } + for (i = range; i < SINGLE_BYTE_SIZE; i++) { + if (BITSET_AT(xc->bs, i)) return 0; + } + return 1; + } + break; + + default: + break; + } + break; + + case ND_CCLASS: + { + int v; + CClassNode* yc = CCLASS_(y); + + 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))) { + v = BITSET_AT(yc->bs, i); + if ((v != 0 && !IS_NCCLASS_NOT(yc)) || + (v == 0 && IS_NCCLASS_NOT(yc))) + return 0; + } + } + if ((IS_NULL(xc->mbuf) && !IS_NCCLASS_NOT(xc)) || + (IS_NULL(yc->mbuf) && !IS_NCCLASS_NOT(yc))) + return 1; + return 0; + } + break; + + case ND_STRING: + goto swap; + break; + + default: + break; + } + } + break; + + case ND_STRING: + { + StrNode* xs = STR_(x); + + if (ND_STRING_LEN(x) == 0) + break; + + switch (ytype) { + case ND_CTYPE: + switch (CTYPE_(y)->ctype) { + case CTYPE_ANYCHAR: + break; + + case ONIGENC_CTYPE_WORD: + if (CTYPE_(y)->ascii_mode == 0) { + if (ONIGENC_IS_MBC_WORD(reg->enc, xs->s, xs->end)) + return CTYPE_(y)->not; + else + return !(CTYPE_(y)->not); + } + else { + if (ONIGENC_IS_MBC_WORD_ASCII(reg->enc, xs->s, xs->end)) + return CTYPE_(y)->not; + else + return !(CTYPE_(y)->not); + } + break; + default: + break; + } + break; + + case ND_CCLASS: + { + CClassNode* cc = CCLASS_(y); + + code = ONIGENC_MBC_TO_CODE(reg->enc, xs->s, + xs->s + ONIGENC_MBC_MAXLEN(reg->enc)); + return onig_is_code_in_cc(reg->enc, code, cc) == 0; + } + break; + + case ND_STRING: + { + UChar *q; + StrNode* ys = STR_(y); + + len = ND_STRING_LEN(x); + if (len > ND_STRING_LEN(y)) len = ND_STRING_LEN(y); + + for (i = 0, p = ys->s, q = xs->s; i < len; i++, p++, q++) { + if (*p != *q) return 1; + } + } + break; + + default: + break; + } + } + break; + + default: + break; + } + + return 0; +} + +static Node* +get_tree_head_literal(Node* node, int exact, regex_t* reg) +{ + Node* n = NULL_NODE; + + switch (ND_TYPE(node)) { + case ND_BACKREF: + case ND_ALT: +#ifdef USE_CALL + case ND_CALL: +#endif + break; + + case ND_CTYPE: + if (CTYPE_(node)->ctype == CTYPE_ANYCHAR) + break; + /* fall */ + case ND_CCLASS: + if (exact == 0) { + n = node; + } + break; + + case ND_LIST: + n = get_tree_head_literal(ND_CAR(node), exact, reg); + break; + + case ND_STRING: + { + StrNode* sn = STR_(node); + + if (sn->end <= sn->s) + break; + + if (exact == 0 || !ND_IS_REAL_IGNORECASE(node)) { + n = node; + } + } + break; + + case ND_QUANT: + { + QuantNode* qn = QUANT_(node); + if (qn->lower > 0) { + if (IS_NOT_NULL(qn->head_exact)) + n = qn->head_exact; + else + n = get_tree_head_literal(ND_BODY(node), exact, reg); + } + } + break; + + case ND_BAG: + { + BagNode* en = BAG_(node); + switch (en->type) { + case BAG_OPTION: + case BAG_MEMORY: + case BAG_STOP_BACKTRACK: + n = get_tree_head_literal(ND_BODY(node), exact, reg); + break; + default: + break; + } + } + break; + + case ND_ANCHOR: + if (ANCHOR_(node)->type == ANCR_PREC_READ) + n = get_tree_head_literal(ND_BODY(node), exact, reg); + break; + + case ND_GIMMICK: + default: + break; + } + + return n; +} + +enum GetValue { + GET_VALUE_NONE = -1, + GET_VALUE_IGNORE = 0, + GET_VALUE_FOUND = 1 +}; + +#define MAX_NEST_LEVEL_GET_TREE_TAIL_LITERAL 16 + +static int +get_tree_tail_literal(Node* node, Node** rnode, regex_t* reg, int nest_level) +{ + int r; + + nest_level++; + if (nest_level >= MAX_NEST_LEVEL_GET_TREE_TAIL_LITERAL) { + return GET_VALUE_NONE; + } + + switch (ND_TYPE(node)) { + case ND_LIST: + if (IS_NULL(ND_CDR(node))) { + r = get_tree_tail_literal(ND_CAR(node), rnode, reg, nest_level); + } + else { + r = get_tree_tail_literal(ND_CDR(node), rnode, reg, nest_level); + if (r == GET_VALUE_IGNORE) { + r = get_tree_tail_literal(ND_CAR(node), rnode, reg, nest_level); + } + } + break; + +#ifdef USE_CALL + case ND_CALL: + r = get_tree_tail_literal(ND_BODY(node), rnode, reg, nest_level); + break; +#endif + + case ND_CTYPE: + if (CTYPE_(node)->ctype == CTYPE_ANYCHAR) { + r = GET_VALUE_NONE; + break; + } + /* fall */ + case ND_CCLASS: + *rnode = node; + r = GET_VALUE_FOUND; + break; + + case ND_STRING: + { + StrNode* sn = STR_(node); + + if (sn->end <= sn->s) { + r = GET_VALUE_IGNORE; + break; + } + + if (ND_IS_REAL_IGNORECASE(node)) { + r = GET_VALUE_NONE; + break; + } + + *rnode = node; + r = GET_VALUE_FOUND; + } + break; + + case ND_QUANT: + { + QuantNode* qn = QUANT_(node); + if (qn->lower != 0) { + r = get_tree_tail_literal(ND_BODY(node), rnode, reg, nest_level); + } + else + r = GET_VALUE_NONE; + } + break; + + case ND_BAG: + { + BagNode* en = BAG_(node); + + if (en->type == BAG_MEMORY) { + if (ND_IS_MARK1(node)) + r = GET_VALUE_NONE; + else { + ND_STATUS_ADD(node, MARK1); + r = get_tree_tail_literal(ND_BODY(node), rnode, reg, nest_level); + ND_STATUS_REMOVE(node, MARK1); + } + } + else { + r = get_tree_tail_literal(ND_BODY(node), rnode, reg, nest_level); + } + } + break; + + case ND_ANCHOR: + case ND_GIMMICK: + r = GET_VALUE_IGNORE; + break; + + case ND_ALT: + case ND_BACKREF: + default: + r = GET_VALUE_NONE; + break; + } + + return r; +} + +static int +check_called_node_in_look_behind(Node* node, int not) +{ + int r; + + r = 0; + + switch (ND_TYPE(node)) { + case ND_LIST: + case ND_ALT: + do { + r = check_called_node_in_look_behind(ND_CAR(node), not); + } while (r == 0 && IS_NOT_NULL(node = ND_CDR(node))); + break; + + case ND_QUANT: + r = check_called_node_in_look_behind(ND_BODY(node), not); + break; + + case ND_BAG: + { + BagNode* en = BAG_(node); + + if (en->type == BAG_MEMORY) { + if (ND_IS_MARK1(node)) + return 0; + else { + ND_STATUS_ADD(node, MARK1); + r = check_called_node_in_look_behind(ND_BODY(node), not); + ND_STATUS_REMOVE(node, MARK1); + } + } + else { + r = check_called_node_in_look_behind(ND_BODY(node), not); + if (r == 0 && en->type == BAG_IF_ELSE) { + if (IS_NOT_NULL(en->te.Then)) { + r = check_called_node_in_look_behind(en->te.Then, not); + if (r != 0) break; + } + if (IS_NOT_NULL(en->te.Else)) { + r = check_called_node_in_look_behind(en->te.Else, not); + } + } + } + } + break; + + case ND_ANCHOR: + if (IS_NOT_NULL(ND_BODY(node))) + r = check_called_node_in_look_behind(ND_BODY(node), not); + break; + + case ND_GIMMICK: + if (ND_IS_ABSENT_WITH_SIDE_EFFECTS(node) != 0) + return 1; + break; + + default: + break; + } + + return r; +} + +/* allowed node types in look-behind */ +#define ALLOWED_TYPE_IN_LB \ + ( ND_BIT_LIST | ND_BIT_ALT | ND_BIT_STRING | ND_BIT_CCLASS \ + | ND_BIT_CTYPE | ND_BIT_ANCHOR | ND_BIT_BAG | ND_BIT_QUANT \ + | ND_BIT_CALL | ND_BIT_BACKREF | ND_BIT_GIMMICK) + +#define ALLOWED_BAG_IN_LB ( 1<type) & bag_mask[not]) == 0) + return 1; + + r = check_node_in_look_behind(ND_BODY(node), not, used); + if (r != 0) break; + + if (en->type == BAG_MEMORY) { + if (ND_IS_BACKREF(node) || ND_IS_CALLED(node) + || ND_IS_REFERENCED(node)) + *used = TRUE; + } + else if (en->type == BAG_IF_ELSE) { + if (IS_NOT_NULL(en->te.Then)) { + r = check_node_in_look_behind(en->te.Then, not, used); + if (r != 0) break; + } + if (IS_NOT_NULL(en->te.Else)) { + r = check_node_in_look_behind(en->te.Else, not, used); + } + } + } + break; + + case ND_ANCHOR: + type = ANCHOR_(node)->type; + if ((type & anchor_mask[not]) == 0) + return 1; + + if (IS_NOT_NULL(ND_BODY(node))) + r = check_node_in_look_behind(ND_BODY(node), not, used); + break; + + case ND_GIMMICK: + if (ND_IS_ABSENT_WITH_SIDE_EFFECTS(node) != 0) + return 1; + + { + GimmickNode* g = GIMMICK_(node); + if (g->type == GIMMICK_SAVE && g->detail_type == SAVE_KEEP) + *used = TRUE; + } + break; + + case ND_CALL: + if (ND_IS_RECURSION(node)) { + /* fix: Issue 38040 in oss-fuzz */ + /* This node should be removed before recursive call check. */ + *used = TRUE; + } + else + r = check_called_node_in_look_behind(ND_BODY(node), not); + break; + + default: + break; + } + return r; +} + +static OnigLen +node_min_byte_len(Node* node, ParseEnv* env) +{ + OnigLen len; + OnigLen tmin; + + len = 0; + switch (ND_TYPE(node)) { + case ND_BACKREF: + if (! ND_IS_CHECKER(node)) { + int i; + int* backs; + MemEnv* mem_env = PARSEENV_MEMENV(env); + BackRefNode* br = BACKREF_(node); + if (ND_IS_RECURSION(node)) break; + + backs = BACKREFS_P(br); + len = node_min_byte_len(mem_env[backs[0]].mem_node, env); + for (i = 1; i < br->back_num; i++) { + tmin = node_min_byte_len(mem_env[backs[i]].mem_node, env); + if (len > tmin) len = tmin; + } + } + break; + +#ifdef USE_CALL + case ND_CALL: + { + Node* t = ND_BODY(node); + if (ND_IS_FIXED_MIN(t)) + len = BAG_(t)->min_len; + else + len = node_min_byte_len(t, env); + } + break; +#endif + + case ND_LIST: + do { + tmin = node_min_byte_len(ND_CAR(node), env); + len = distance_add(len, tmin); + } while (IS_NOT_NULL(node = ND_CDR(node))); + break; + + case ND_ALT: + { + Node *x, *y; + y = node; + do { + x = ND_CAR(y); + tmin = node_min_byte_len(x, env); + if (y == node) len = tmin; + else if (len > tmin) len = tmin; + } while (IS_NOT_NULL(y = ND_CDR(y))); + } + break; + + case ND_STRING: + { + StrNode* sn = STR_(node); + len = (int )(sn->end - sn->s); + } + break; + + case ND_CTYPE: + case ND_CCLASS: + len = ONIGENC_MBC_MINLEN(env->enc); + break; + + case ND_QUANT: + { + QuantNode* qn = QUANT_(node); + + if (qn->lower > 0) { + len = node_min_byte_len(ND_BODY(node), env); + len = distance_multiply(len, qn->lower); + } + } + break; + + case ND_BAG: + { + BagNode* en = BAG_(node); + switch (en->type) { + case BAG_MEMORY: + if (ND_IS_FIXED_MIN(node)) + len = en->min_len; + else { + if (ND_IS_MARK1(node)) + len = 0; /* recursive */ + else { + ND_STATUS_ADD(node, MARK1); + len = node_min_byte_len(ND_BODY(node), env); + ND_STATUS_REMOVE(node, MARK1); + + en->min_len = len; + ND_STATUS_ADD(node, FIXED_MIN); + } + } + break; + + case BAG_OPTION: + case BAG_STOP_BACKTRACK: + len = node_min_byte_len(ND_BODY(node), env); + break; + case BAG_IF_ELSE: + { + OnigLen elen; + + len = node_min_byte_len(ND_BODY(node), env); + if (IS_NOT_NULL(en->te.Then)) + len += node_min_byte_len(en->te.Then, env); + if (IS_NOT_NULL(en->te.Else)) + elen = node_min_byte_len(en->te.Else, env); + else elen = 0; + + if (elen < len) len = elen; + } + break; + } + } + break; + + case ND_GIMMICK: + { + GimmickNode* g = GIMMICK_(node); + if (g->type == GIMMICK_FAIL) { + len = INFINITE_LEN; + break; + } + } + /* fall */ + case ND_ANCHOR: + default: + break; + } + + return len; +} + +static int +check_backrefs(Node* node, ParseEnv* env) +{ + int r; + + switch (ND_TYPE(node)) { + case ND_LIST: + case ND_ALT: + do { + r = check_backrefs(ND_CAR(node), env); + } while (r == 0 && IS_NOT_NULL(node = ND_CDR(node))); + break; + + case ND_ANCHOR: + if (! ANCHOR_HAS_BODY(ANCHOR_(node))) { + r = 0; + break; + } + /* fall */ + case ND_QUANT: + r = check_backrefs(ND_BODY(node), env); + break; + + case ND_BAG: + r = check_backrefs(ND_BODY(node), env); + { + BagNode* en = BAG_(node); + + if (en->type == BAG_IF_ELSE) { + if (r != 0) return r; + if (IS_NOT_NULL(en->te.Then)) { + r = check_backrefs(en->te.Then, env); + if (r != 0) return r; + } + if (IS_NOT_NULL(en->te.Else)) { + r = check_backrefs(en->te.Else, env); + } + } + } + break; + + case ND_BACKREF: + { + int i; + BackRefNode* br = BACKREF_(node); + int* backs = BACKREFS_P(br); + MemEnv* mem_env = PARSEENV_MEMENV(env); + + for (i = 0; i < br->back_num; i++) { + if (backs[i] > env->num_mem) + return ONIGERR_INVALID_BACKREF; + + ND_STATUS_ADD(mem_env[backs[i]].mem_node, BACKREF); + } + r = 0; + } + break; + + default: + r = 0; + break; + } + + return r; +} + +static int +set_empty_repeat_node_trav(Node* node, Node* empty, ParseEnv* env) +{ + int r; + + switch (ND_TYPE(node)) { + case ND_LIST: + case ND_ALT: + do { + r = set_empty_repeat_node_trav(ND_CAR(node), empty, env); + } while (r == 0 && IS_NOT_NULL(node = ND_CDR(node))); + break; + + case ND_ANCHOR: + { + AnchorNode* an = ANCHOR_(node); + + if (! ANCHOR_HAS_BODY(an)) { + r = 0; + break; + } + + switch (an->type) { + case ANCR_PREC_READ: + case ANCR_LOOK_BEHIND: + empty = NULL_NODE; + break; + default: + break; + } + r = set_empty_repeat_node_trav(ND_BODY(node), empty, env); + } + break; + + case ND_QUANT: + { + QuantNode* qn = QUANT_(node); + + if (qn->emptiness != BODY_IS_NOT_EMPTY) empty = node; + r = set_empty_repeat_node_trav(ND_BODY(node), empty, env); + } + break; + + case ND_BAG: + if (IS_NOT_NULL(ND_BODY(node))) { + r = set_empty_repeat_node_trav(ND_BODY(node), empty, env); + if (r != 0) return r; + } + { + BagNode* en = BAG_(node); + + r = 0; + if (en->type == BAG_MEMORY) { + if (ND_IS_BACKREF(node)) { + if (IS_NOT_NULL(empty)) + PARSEENV_MEMENV(env)[en->m.regnum].empty_repeat_node = empty; + } + } + else if (en->type == BAG_IF_ELSE) { + if (IS_NOT_NULL(en->te.Then)) { + r = set_empty_repeat_node_trav(en->te.Then, empty, env); + if (r != 0) return r; + } + if (IS_NOT_NULL(en->te.Else)) { + r = set_empty_repeat_node_trav(en->te.Else, empty, env); + } + } + } + break; + + default: + r = 0; + break; + } + + return r; +} + +static int +is_ancestor_node(Node* node, Node* me) +{ + Node* parent; + + while ((parent = ND_PARENT(me)) != NULL_NODE) { + if (parent == node) return 1; + me = parent; + } + return 0; +} + +static void +set_empty_status_check_trav(Node* node, ParseEnv* env) +{ + switch (ND_TYPE(node)) { + case ND_LIST: + case ND_ALT: + do { + set_empty_status_check_trav(ND_CAR(node), env); + } while (IS_NOT_NULL(node = ND_CDR(node))); + break; + + case ND_ANCHOR: + { + AnchorNode* an = ANCHOR_(node); + + if (! ANCHOR_HAS_BODY(an)) break; + set_empty_status_check_trav(ND_BODY(node), env); + } + break; + + case ND_QUANT: + set_empty_status_check_trav(ND_BODY(node), env); + break; + + case ND_BAG: + if (IS_NOT_NULL(ND_BODY(node))) + set_empty_status_check_trav(ND_BODY(node), env); + { + BagNode* en = BAG_(node); + + if (en->type == BAG_IF_ELSE) { + if (IS_NOT_NULL(en->te.Then)) { + set_empty_status_check_trav(en->te.Then, env); + } + if (IS_NOT_NULL(en->te.Else)) { + set_empty_status_check_trav(en->te.Else, env); + } + } + } + break; + + case ND_BACKREF: + { + int i; + int* backs; + MemEnv* mem_env = PARSEENV_MEMENV(env); + BackRefNode* br = BACKREF_(node); + backs = BACKREFS_P(br); + for (i = 0; i < br->back_num; i++) { + Node* ernode = mem_env[backs[i]].empty_repeat_node; + if (IS_NOT_NULL(ernode)) { + if (! is_ancestor_node(ernode, node)) { + MEM_STATUS_LIMIT_ON(QUANT_(ernode)->empty_status_mem, backs[i]); + ND_STATUS_ADD(ernode, EMPTY_STATUS_CHECK); + ND_STATUS_ADD(mem_env[backs[i]].mem_node, EMPTY_STATUS_CHECK); + } + } + } + } + break; + + default: + break; + } +} + +static void +set_parent_node_trav(Node* node, Node* parent) +{ + ND_PARENT(node) = parent; + + switch (ND_TYPE(node)) { + case ND_LIST: + case ND_ALT: + do { + set_parent_node_trav(ND_CAR(node), node); + } while (IS_NOT_NULL(node = ND_CDR(node))); + break; + + case ND_ANCHOR: + if (! ANCHOR_HAS_BODY(ANCHOR_(node))) break; + set_parent_node_trav(ND_BODY(node), node); + break; + + case ND_QUANT: + set_parent_node_trav(ND_BODY(node), node); + break; + + case ND_BAG: + if (IS_NOT_NULL(ND_BODY(node))) + set_parent_node_trav(ND_BODY(node), node); + { + BagNode* en = BAG_(node); + + if (en->type == BAG_IF_ELSE) { + if (IS_NOT_NULL(en->te.Then)) + set_parent_node_trav(en->te.Then, node); + if (IS_NOT_NULL(en->te.Else)) { + set_parent_node_trav(en->te.Else, node); + } + } + } + break; + + default: + break; + } +} + + +#ifdef USE_CALL + +#define RECURSION_EXIST (1<<0) +#define RECURSION_MUST (1<<1) +#define RECURSION_INFINITE (1<<2) + +static int +infinite_recursive_call_check(Node* node, ParseEnv* env, int head) +{ + int ret; + int r = 0; + + switch (ND_TYPE(node)) { + case ND_LIST: + { + Node *x; + OnigLen min; + + x = node; + do { + ret = infinite_recursive_call_check(ND_CAR(x), env, head); + if (ret < 0 || (ret & RECURSION_INFINITE) != 0) return ret; + r |= ret; + if (head != 0) { + min = node_min_byte_len(ND_CAR(x), env); + if (min != 0) head = 0; + } + } while (IS_NOT_NULL(x = ND_CDR(x))); + } + break; + + case ND_ALT: + { + int must; + + must = RECURSION_MUST; + do { + ret = infinite_recursive_call_check(ND_CAR(node), env, head); + if (ret < 0 || (ret & RECURSION_INFINITE) != 0) return ret; + + r |= (ret & RECURSION_EXIST); + must &= ret; + } while (IS_NOT_NULL(node = ND_CDR(node))); + r |= must; + } + break; + + case ND_QUANT: + if (QUANT_(node)->upper == 0) break; + + r = infinite_recursive_call_check(ND_BODY(node), env, head); + if (r < 0) return r; + if ((r & RECURSION_MUST) != 0) { + if (QUANT_(node)->lower == 0) + r &= ~RECURSION_MUST; + } + break; + + case ND_ANCHOR: + if (! ANCHOR_HAS_BODY(ANCHOR_(node))) + break; + /* fall */ + case ND_CALL: + r = infinite_recursive_call_check(ND_BODY(node), env, head); + break; + + case ND_BAG: + { + BagNode* en = BAG_(node); + + if (en->type == BAG_MEMORY) { + if (ND_IS_MARK2(node)) + return 0; + else if (ND_IS_MARK1(node)) + return (head == 0 ? RECURSION_EXIST | RECURSION_MUST + : RECURSION_EXIST | RECURSION_MUST | RECURSION_INFINITE); + else { + ND_STATUS_ADD(node, MARK2); + r = infinite_recursive_call_check(ND_BODY(node), env, head); + ND_STATUS_REMOVE(node, MARK2); + } + } + else if (en->type == BAG_IF_ELSE) { + int eret; + + ret = infinite_recursive_call_check(ND_BODY(node), env, head); + if (ret < 0 || (ret & RECURSION_INFINITE) != 0) return ret; + r |= ret; + if (IS_NOT_NULL(en->te.Then)) { + OnigLen min; + if (head != 0) { + min = node_min_byte_len(ND_BODY(node), env); + } + else min = 0; + + ret = infinite_recursive_call_check(en->te.Then, env, min != 0 ? 0:head); + if (ret < 0 || (ret & RECURSION_INFINITE) != 0) return ret; + r |= ret; + } + if (IS_NOT_NULL(en->te.Else)) { + eret = infinite_recursive_call_check(en->te.Else, env, head); + if (eret < 0 || (eret & RECURSION_INFINITE) != 0) return eret; + r |= (eret & RECURSION_EXIST); + if ((eret & RECURSION_MUST) == 0) + r &= ~RECURSION_MUST; + } + else { + r &= ~RECURSION_MUST; + } + } + else { + r = infinite_recursive_call_check(ND_BODY(node), env, head); + } + } + break; + + default: + break; + } + + return r; +} + +static int +infinite_recursive_call_check_trav(Node* node, ParseEnv* env) +{ + int r; + + switch (ND_TYPE(node)) { + case ND_LIST: + case ND_ALT: + do { + r = infinite_recursive_call_check_trav(ND_CAR(node), env); + } while (r == 0 && IS_NOT_NULL(node = ND_CDR(node))); + break; + + case ND_ANCHOR: + if (! ANCHOR_HAS_BODY(ANCHOR_(node))) { + r = 0; + break; + } + /* fall */ + case ND_QUANT: + r = infinite_recursive_call_check_trav(ND_BODY(node), env); + break; + + case ND_BAG: + { + BagNode* en = BAG_(node); + + if (en->type == BAG_MEMORY) { + if (ND_IS_RECURSION(node) && ND_IS_CALLED(node)) { + int ret; + + ND_STATUS_ADD(node, MARK1); + + ret = infinite_recursive_call_check(ND_BODY(node), env, 1); + if (ret < 0) return ret; + else if ((ret & (RECURSION_MUST | RECURSION_INFINITE)) != 0) + return ONIGERR_NEVER_ENDING_RECURSION; + + ND_STATUS_REMOVE(node, MARK1); + } + } + else if (en->type == BAG_IF_ELSE) { + if (IS_NOT_NULL(en->te.Then)) { + r = infinite_recursive_call_check_trav(en->te.Then, env); + if (r != 0) return r; + } + if (IS_NOT_NULL(en->te.Else)) { + r = infinite_recursive_call_check_trav(en->te.Else, env); + if (r != 0) return r; + } + } + } + + r = infinite_recursive_call_check_trav(ND_BODY(node), env); + break; + + default: + r = 0; + break; + } + + return r; +} + +static int +recursive_call_check(Node* node) +{ + int r; + + switch (ND_TYPE(node)) { + case ND_LIST: + case ND_ALT: + r = 0; + do { + r |= recursive_call_check(ND_CAR(node)); + } while (IS_NOT_NULL(node = ND_CDR(node))); + break; + + case ND_ANCHOR: + if (! ANCHOR_HAS_BODY(ANCHOR_(node))) { + r = 0; + break; + } + /* fall */ + case ND_QUANT: + r = recursive_call_check(ND_BODY(node)); + break; + + case ND_CALL: + r = recursive_call_check(ND_BODY(node)); + if (r != 0) { + if (ND_IS_MARK1(ND_BODY(node))) + ND_STATUS_ADD(node, RECURSION); + } + break; + + case ND_BAG: + { + BagNode* en = BAG_(node); + + if (en->type == BAG_MEMORY) { + if (ND_IS_MARK2(node)) + return 0; + else if (ND_IS_MARK1(node)) + return 1; /* recursion */ + else { + ND_STATUS_ADD(node, MARK2); + r = recursive_call_check(ND_BODY(node)); + ND_STATUS_REMOVE(node, MARK2); + } + } + else if (en->type == BAG_IF_ELSE) { + r = 0; + if (IS_NOT_NULL(en->te.Then)) { + r |= recursive_call_check(en->te.Then); + } + if (IS_NOT_NULL(en->te.Else)) { + r |= recursive_call_check(en->te.Else); + } + r |= recursive_call_check(ND_BODY(node)); + } + else { + r = recursive_call_check(ND_BODY(node)); + } + } + break; + + default: + r = 0; + break; + } + + return r; +} + +#define IN_RECURSION (1<<0) +#define FOUND_CALLED_NODE 1 + +static int +recursive_call_check_trav(Node* node, ParseEnv* env, int state) +{ + int r = 0; + + switch (ND_TYPE(node)) { + case ND_LIST: + case ND_ALT: + { + int ret; + do { + ret = recursive_call_check_trav(ND_CAR(node), env, state); + if (ret == FOUND_CALLED_NODE) r = FOUND_CALLED_NODE; + else if (ret < 0) return ret; + } while (IS_NOT_NULL(node = ND_CDR(node))); + } + break; + + case ND_QUANT: + r = recursive_call_check_trav(ND_BODY(node), env, state); + if (QUANT_(node)->upper == 0) { + if (r == FOUND_CALLED_NODE) + QUANT_(node)->include_referred = 1; + } + break; + + case ND_ANCHOR: + { + AnchorNode* an = ANCHOR_(node); + if (ANCHOR_HAS_BODY(an)) + r = recursive_call_check_trav(ND_ANCHOR_BODY(an), env, state); + } + break; + + case ND_BAG: + { + int ret; + int state1; + BagNode* en = BAG_(node); + + if (en->type == BAG_MEMORY) { + if (ND_IS_CALLED(node)) { + r = FOUND_CALLED_NODE; + goto check_recursion; + } + else if ((state & IN_RECURSION) != 0) { + check_recursion: + if (! ND_IS_RECURSION(node)) { + ND_STATUS_ADD(node, MARK1); + ret = recursive_call_check(ND_BODY(node)); + if (ret != 0) { + ND_STATUS_ADD(node, RECURSION); + MEM_STATUS_ON(env->backtrack_mem, en->m.regnum); + } + ND_STATUS_REMOVE(node, MARK1); + } + } + } + + state1 = state; + if (ND_IS_RECURSION(node)) + state1 |= IN_RECURSION; + + ret = recursive_call_check_trav(ND_BODY(node), env, state1); + if (ret == FOUND_CALLED_NODE) + r = FOUND_CALLED_NODE; + + if (en->type == BAG_IF_ELSE) { + if (IS_NOT_NULL(en->te.Then)) { + ret = recursive_call_check_trav(en->te.Then, env, state1); + if (ret == FOUND_CALLED_NODE) + r = FOUND_CALLED_NODE; + } + if (IS_NOT_NULL(en->te.Else)) { + ret = recursive_call_check_trav(en->te.Else, env, state1); + if (ret == FOUND_CALLED_NODE) + r = FOUND_CALLED_NODE; + } + } + } + break; + + default: + break; + } + + return r; +} + +#endif + +static void +remove_from_list(Node* prev, Node* a) +{ + if (ND_CDR(prev) != a) return ; + + ND_CDR(prev) = ND_CDR(a); + ND_CDR(a) = NULL_NODE; +} + +static int +reduce_string_list(Node* node, OnigEncoding enc) +{ + int r = 0; + + switch (ND_TYPE(node)) { + case ND_LIST: + { + Node* prev; + Node* curr; + Node* prev_node; + Node* next_node; + + prev = NULL_NODE; + do { + next_node = ND_CDR(node); + curr = ND_CAR(node); + if (ND_TYPE(curr) == ND_STRING) { + if (IS_NULL(prev) + || STR_(curr)->flag != STR_(prev)->flag + || ND_STATUS(curr) != ND_STATUS(prev)) { + prev = curr; + prev_node = node; + } + else { + r = node_str_node_cat(prev, curr); + if (r != 0) return r; + remove_from_list(prev_node, node); + onig_node_free(node); + } + } + else { + if (IS_NOT_NULL(prev)) { +#ifdef USE_CHECK_VALIDITY_OF_STRING_IN_TREE + StrNode* sn = STR_(prev); + if (! ONIGENC_IS_VALID_MBC_STRING(enc, sn->s, sn->end)) + return ONIGERR_INVALID_WIDE_CHAR_VALUE; +#endif + prev = NULL_NODE; + } + r = reduce_string_list(curr, enc); + if (r != 0) return r; + prev_node = node; + } + + node = next_node; + } while (r == 0 && IS_NOT_NULL(node)); + +#ifdef USE_CHECK_VALIDITY_OF_STRING_IN_TREE + if (IS_NOT_NULL(prev)) { + StrNode* sn = STR_(prev); + if (! ONIGENC_IS_VALID_MBC_STRING(enc, sn->s, sn->end)) + return ONIGERR_INVALID_WIDE_CHAR_VALUE; + } +#endif + } + break; + + case ND_ALT: + do { + r = reduce_string_list(ND_CAR(node), enc); + } while (r == 0 && IS_NOT_NULL(node = ND_CDR(node))); + break; + +#ifdef USE_CHECK_VALIDITY_OF_STRING_IN_TREE + case ND_STRING: + { + StrNode* sn = STR_(node); + if (! ONIGENC_IS_VALID_MBC_STRING(enc, sn->s, sn->end)) + return ONIGERR_INVALID_WIDE_CHAR_VALUE; + } + break; +#endif + + case ND_ANCHOR: + if (IS_NULL(ND_BODY(node))) + break; + /* fall */ + case ND_QUANT: + r = reduce_string_list(ND_BODY(node), enc); + break; + + case ND_BAG: + { + BagNode* en = BAG_(node); + + r = reduce_string_list(ND_BODY(node), enc); + if (r != 0) return r; + + if (en->type == BAG_IF_ELSE) { + if (IS_NOT_NULL(en->te.Then)) { + r = reduce_string_list(en->te.Then, enc); + if (r != 0) return r; + } + if (IS_NOT_NULL(en->te.Else)) { + r = reduce_string_list(en->te.Else, enc); + if (r != 0) return r; + } + } + } + break; + + default: + break; + } + + return r; +} + + +#define IN_ALT (1<<0) +#define IN_NOT (1<<1) +#define IN_REAL_REPEAT (1<<2) +#define IN_VAR_REPEAT (1<<3) +#define IN_ZERO_REPEAT (1<<4) +#define IN_MULTI_ENTRY (1<<5) +#define IN_PREC_READ (1<<6) +#define IN_LOOK_BEHIND (1<<7) +#define IN_PEEK (1<<8) + +/* divide different length alternatives in look-behind. + (?<=A|B) ==> (?<=A)|(?<=B) + (? (?type; + + head = ND_ANCHOR_BODY(an); + np = ND_CAR(head); + node_swap(node, head); + ND_CAR(node) = head; + ND_BODY(head) = np; + + np = node; + while (IS_NOT_NULL(np = ND_CDR(np))) { + r = onig_node_copy(&insert_node, head); + if (r != 0) return r; + CHECK_NULL_RETURN_MEMERR(insert_node); + ND_BODY(insert_node) = ND_CAR(np); + ND_CAR(np) = insert_node; + } + + if (anc_type == ANCR_LOOK_BEHIND_NOT) { + np = node; + do { + ND_SET_TYPE(np, ND_LIST); /* alt -> list */ + } while (IS_NOT_NULL(np = ND_CDR(np))); + } + return 0; +} + +static int +node_reduce_in_look_behind(Node* node) +{ + NodeType type; + Node* body; + + if (ND_TYPE(node) != ND_QUANT) return 0; + + body = ND_BODY(node); + type = ND_TYPE(body); + if (type == ND_STRING || type == ND_CTYPE || + type == ND_CCLASS || type == ND_BACKREF) { + QuantNode* qn = QUANT_(node); + qn->upper = qn->lower; + if (qn->upper == 0) + return 1; /* removed */ + } + + return 0; +} + +static int +list_reduce_in_look_behind(Node* node) +{ + int r; + + switch (ND_TYPE(node)) { + case ND_QUANT: + r = node_reduce_in_look_behind(node); + if (r > 0) r = 0; + break; + + case ND_LIST: + do { + r = node_reduce_in_look_behind(ND_CAR(node)); + if (r <= 0) break; + } while (IS_NOT_NULL(node = ND_CDR(node))); + break; + + default: + r = 0; + break; + } + + return r; +} + +static int +alt_reduce_in_look_behind(Node* node, regex_t* reg, ParseEnv* env) +{ + int r; + + switch (ND_TYPE(node)) { + case ND_ALT: + do { + r = list_reduce_in_look_behind(ND_CAR(node)); + } while (r == 0 && IS_NOT_NULL(node = ND_CDR(node))); + break; + + default: + r = list_reduce_in_look_behind(node); + break; + } + + return r; +} + +static int tune_tree(Node* node, regex_t* reg, int state, ParseEnv* env); + +static int +tune_look_behind(Node* node, regex_t* reg, int state, ParseEnv* env) +{ + int r; + int state1; + int used; + MinMaxCharLen ci; + Node* body; + AnchorNode* an = ANCHOR_(node); + + used = FALSE; + r = check_node_in_look_behind(ND_ANCHOR_BODY(an), + an->type == ANCR_LOOK_BEHIND_NOT ? 1 : 0, + &used); + if (r < 0) return r; + if (r > 0) return ONIGERR_INVALID_LOOK_BEHIND_PATTERN; + + if (an->type == ANCR_LOOK_BEHIND_NOT) + state1 = state | IN_NOT | IN_LOOK_BEHIND; + else + state1 = state | IN_LOOK_BEHIND; + + body = ND_ANCHOR_BODY(an); + /* Execute tune_tree(body) before call node_char_len(). + Because case-fold expansion must be done before node_char_len(). + */ + r = tune_tree(body, reg, state1, env); + if (r != 0) return r; + + r = alt_reduce_in_look_behind(body, reg, env); + if (r != 0) return r; + + r = node_char_len(body, reg, &ci, env); + if (r >= 0) { + /* #177: overflow in onigenc_step_back() */ + if ((ci.max != INFINITE_LEN && ci.max > LOOK_BEHIND_MAX_CHAR_LEN) + || ci.min > LOOK_BEHIND_MAX_CHAR_LEN) { + return ONIGERR_INVALID_LOOK_BEHIND_PATTERN; + } + + if (ci.min == 0 && ci.min_is_sure != FALSE && used == FALSE) { + if (an->type == ANCR_LOOK_BEHIND_NOT) + r = onig_node_reset_fail(node); + else + r = onig_node_reset_empty(node); + + return r; + } + + if (r == CHAR_LEN_TOP_ALT_FIXED) { + if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_DIFFERENT_LEN_ALT_LOOK_BEHIND)) { + r = divide_look_behind_alternatives(node); + if (r == 0) + r = tune_tree(node, reg, state, env); + } + else if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_VARIABLE_LEN_LOOK_BEHIND)) + goto normal; + else + r = ONIGERR_INVALID_LOOK_BEHIND_PATTERN; + } + else { /* CHAR_LEN_NORMAL */ + normal: + if (ci.min == INFINITE_LEN) { + r = ONIGERR_INVALID_LOOK_BEHIND_PATTERN; + } + else { + if (ci.min != ci.max && + ! IS_SYNTAX_BV(env->syntax, ONIG_SYN_VARIABLE_LEN_LOOK_BEHIND)) { + r = ONIGERR_INVALID_LOOK_BEHIND_PATTERN; + } + else { + Node* tail; + + /* check lead_node is already set by double call after + divide_look_behind_alternatives() */ + if (IS_NULL(an->lead_node)) { + an->char_min_len = ci.min; + an->char_max_len = ci.max; + r = get_tree_tail_literal(body, &tail, reg, 0); + if (r == GET_VALUE_FOUND) { + r = onig_node_copy(&(an->lead_node), tail); + if (r != 0) return r; + } + } + r = ONIG_NORMAL; + } + } + } + } + + return r; +} + +static int +tune_next(Node* node, Node* next_node, regex_t* reg) +{ + int called; + NodeType type; + + called = FALSE; + + retry: + type = ND_TYPE(node); + if (type == ND_QUANT) { + QuantNode* qn = QUANT_(node); + if (qn->greedy && IS_INFINITE_REPEAT(qn->upper)) { +#ifdef USE_QUANT_PEEK_NEXT + if (called == FALSE) { + Node* n = get_tree_head_literal(next_node, 1, reg); + /* '\0': for UTF-16BE etc... */ + if (IS_NOT_NULL(n) && STR_(n)->s[0] != '\0') { + qn->next_head_exact = n; + } + } +#endif + /* automatic posseivation a*b ==> (?>a*)b */ + if (qn->lower <= 1) { + if (is_strict_real_node(ND_BODY(node))) { + Node *x, *y; + x = get_tree_head_literal(ND_BODY(node), 0, reg); + if (IS_NOT_NULL(x)) { + y = get_tree_head_literal(next_node, 0, reg); + if (IS_NOT_NULL(y) && is_exclusive(x, y, reg)) { + Node* en = onig_node_new_bag(BAG_STOP_BACKTRACK); + CHECK_NULL_RETURN_MEMERR(en); + ND_STATUS_ADD(en, STRICT_REAL_REPEAT); + node_swap(node, en); + ND_BODY(node) = en; + } + } + } + } + } + } + else if (type == ND_BAG) { + BagNode* en = BAG_(node); + if (en->type == BAG_MEMORY) { + if (ND_IS_CALLED(node)) + called = TRUE; + node = ND_BODY(node); + goto retry; + } + } + return 0; +} + + +static int +is_all_code_len_1_items(int n, OnigCaseFoldCodeItem items[]) +{ + int i; + + for (i = 0; i < n; i++) { + OnigCaseFoldCodeItem* item = items + i; + if (item->code_len != 1) return 0; + } + + return 1; +} + +static int +get_min_max_byte_len_case_fold_items(int n, OnigCaseFoldCodeItem items[], + OnigLen* rmin, OnigLen* rmax) +{ + int i; + OnigLen len, minlen, maxlen; + + minlen = INFINITE_LEN; + maxlen = 0; + for (i = 0; i < n; i++) { + OnigCaseFoldCodeItem* item = items + i; + + len = item->byte_len; + if (len < minlen) minlen = len; + if (len > maxlen) maxlen = len; + } + + *rmin = minlen; + *rmax = maxlen; + return 0; +} + +static int +make_code_list_to_string(Node** rnode, OnigEncoding enc, + int n, OnigCodePoint codes[]) +{ + int r, i, len; + Node* node; + UChar buf[ONIGENC_CODE_TO_MBC_MAXLEN]; + + *rnode = NULL_NODE; + node = onig_node_new_str(NULL, NULL); + CHECK_NULL_RETURN_MEMERR(node); + + for (i = 0; i < n; i++) { + len = ONIGENC_CODE_TO_MBC(enc, codes[i], buf); + if (len < 0) { + r = len; + goto err; + } + + r = onig_node_str_cat(node, buf, buf + len); + if (r != 0) goto err; + } + + *rnode = node; + return 0; + + err: + onig_node_free(node); + return r; +} + +static int +unravel_cf_node_add(Node** rlist, Node* add) +{ + Node *list; + + list = *rlist; + if (IS_NULL(list)) { + list = onig_node_new_list(add, NULL); + CHECK_NULL_RETURN_MEMERR(list); + *rlist = list; + } + else { + Node* r = node_list_add(list, add); + CHECK_NULL_RETURN_MEMERR(r); + } + + return 0; +} + +static int +unravel_cf_string_add(Node** rlist, Node** rsn, UChar* s, UChar* end, + unsigned int flag) +{ + int r; + Node *sn, *list; + + list = *rlist; + sn = *rsn; + + if (IS_NOT_NULL(sn) && STR_(sn)->flag == flag) { + r = onig_node_str_cat(sn, s, end); + } + else { + sn = onig_node_new_str(s, end); + CHECK_NULL_RETURN_MEMERR(sn); + + STR_(sn)->flag = flag; + r = unravel_cf_node_add(&list, sn); + } + + if (r == 0) { + *rlist = list; + *rsn = sn; + } + return r; +} + +static int +unravel_cf_string_alt_or_cc_add(Node** rlist, int n, + OnigCaseFoldCodeItem items[], OnigEncoding enc, + OnigCaseFoldType case_fold_flag, UChar* s, UChar* end) +{ + int r, i; + Node* node; + + if (is_all_code_len_1_items(n, items)) { + OnigCodePoint codes[14];/* least ONIGENC_GET_CASE_FOLD_CODES_MAX_NUM + 1 */ + + codes[0] = ONIGENC_MBC_TO_CODE(enc, s, end); + for (i = 0; i < n; i++) { + OnigCaseFoldCodeItem* item = items + i; + codes[i+1] = item->code[0]; + } + r = onig_new_cclass_with_code_list(&node, enc, n + 1, codes); + if (r != 0) return r; + } + else { + Node *snode, *alt, *curr; + + snode = onig_node_new_str(s, end); + CHECK_NULL_RETURN_MEMERR(snode); + node = curr = onig_node_new_alt(snode, NULL_NODE); + if (IS_NULL(curr)) { + onig_node_free(snode); + return ONIGERR_MEMORY; + } + + r = 0; + for (i = 0; i < n; i++) { + OnigCaseFoldCodeItem* item = items + i; + r = make_code_list_to_string(&snode, enc, item->code_len, item->code); + if (r != 0) { + onig_node_free(node); + return r; + } + + alt = onig_node_new_alt(snode, NULL_NODE); + if (IS_NULL(alt)) { + onig_node_free(snode); + onig_node_free(node); + return ONIGERR_MEMORY; + } + + ND_CDR(curr) = alt; + curr = alt; + } + } + + r = unravel_cf_node_add(rlist, node); + if (r != 0) onig_node_free(node); + return r; +} + +static int +unravel_cf_look_behind_add(Node** rlist, Node** rsn, + int n, OnigCaseFoldCodeItem items[], OnigEncoding enc, + UChar* s, OnigLen one_len) +{ + int r, i, found; + + found = FALSE; + for (i = 0; i < n; i++) { + OnigCaseFoldCodeItem* item = items + i; + if (item->byte_len == one_len) { + if (item->code_len == 1) { + found = TRUE; + break; + } + } + } + + if (found == FALSE) { + r = unravel_cf_string_add(rlist, rsn, s, s + one_len, 0 /* flag */); + } + else { + Node* node; + OnigCodePoint codes[14];/* least ONIGENC_GET_CASE_FOLD_CODES_MAX_NUM + 1 */ + + found = 0; + codes[found++] = ONIGENC_MBC_TO_CODE(enc, s, s + one_len); + for (i = 0; i < n; i++) { + OnigCaseFoldCodeItem* item = items + i; + if (item->byte_len == one_len) { + if (item->code_len == 1) { + codes[found++] = item->code[0]; + } + } + } + r = onig_new_cclass_with_code_list(&node, enc, found, codes); + if (r != 0) return r; + + r = unravel_cf_node_add(rlist, node); + if (r != 0) onig_node_free(node); + + *rsn = NULL_NODE; + } + + return r; +} + +static int +unravel_case_fold_string(Node* node, regex_t* reg, int state) +{ + int r, n, in_look_behind; + OnigLen min_len, max_len, one_len; + UChar *start, *end, *p, *q; + StrNode* snode; + Node *sn, *list; + OnigEncoding enc; + OnigCaseFoldCodeItem items[ONIGENC_GET_CASE_FOLD_CODES_MAX_NUM]; + + if (ND_STRING_IS_CASE_EXPANDED(node)) return 0; + + ND_STATUS_REMOVE(node, IGNORECASE); + snode = STR_(node); + start = snode->s; + end = snode->end; + if (start >= end) return 0; + + in_look_behind = (state & IN_LOOK_BEHIND) != 0; + enc = reg->enc; + + list = sn = NULL_NODE; + p = start; + while (p < end) { + n = ONIGENC_GET_CASE_FOLD_CODES_BY_STR(enc, reg->case_fold_flag, p, end, + items); + if (n < 0) { + r = n; + goto err; + } + + one_len = (OnigLen )enclen(enc, p); + if (n == 0) { + q = p + one_len; + if (q > end) q = end; + r = unravel_cf_string_add(&list, &sn, p, q, 0 /* flag */); + if (r != 0) goto err; + } + else { + if (in_look_behind != 0) { + q = p + one_len; + if (items[0].byte_len != one_len) { + r = ONIGENC_GET_CASE_FOLD_CODES_BY_STR(enc, reg->case_fold_flag, p, q, + items); + if (r < 0) goto err; + n = r; + } + r = unravel_cf_look_behind_add(&list, &sn, n, items, enc, p, one_len); + if (r != 0) goto err; + } + else { + get_min_max_byte_len_case_fold_items(n, items, &min_len, &max_len); + if (min_len != max_len) { + r = ONIGERR_PARSER_BUG; + goto err; + } + + q = p + max_len; + r = unravel_cf_string_alt_or_cc_add(&list, n, items, enc, + reg->case_fold_flag, p, q); + if (r != 0) goto err; + sn = NULL_NODE; + } + } + + p = q; + } + + if (IS_NOT_NULL(list)) { + if (node_list_len(list) == 1) { + node_swap(node, ND_CAR(list)); + } + else { + node_swap(node, list); + } + onig_node_free(list); + } + else { + node_swap(node, sn); + onig_node_free(sn); + } + return 0; + + err: + if (IS_NOT_NULL(list)) + onig_node_free(list); + else if (IS_NOT_NULL(sn)) + onig_node_free(sn); + + return r; +} + +#ifdef USE_RIGID_CHECK_CAPTURES_IN_EMPTY_REPEAT +static enum BodyEmptyType +quantifiers_memory_node_info(Node* node) +{ + int r = BODY_MAY_BE_EMPTY; + + switch (ND_TYPE(node)) { + case ND_LIST: + case ND_ALT: + { + int v; + do { + v = quantifiers_memory_node_info(ND_CAR(node)); + if (v > r) r = v; + } while (IS_NOT_NULL(node = ND_CDR(node))); + } + break; + +#ifdef USE_CALL + case ND_CALL: + if (ND_IS_RECURSION(node)) { + return BODY_MAY_BE_EMPTY_REC; /* tiny version */ + } + else + r = quantifiers_memory_node_info(ND_BODY(node)); + break; +#endif + + case ND_QUANT: + { + QuantNode* qn = QUANT_(node); + if (qn->upper != 0) { + r = quantifiers_memory_node_info(ND_BODY(node)); + } + } + break; + + case ND_BAG: + { + BagNode* en = BAG_(node); + switch (en->type) { + case BAG_MEMORY: + if (ND_IS_RECURSION(node)) { + return BODY_MAY_BE_EMPTY_REC; + } + return BODY_MAY_BE_EMPTY_MEM; + break; + + case BAG_OPTION: + case BAG_STOP_BACKTRACK: + r = quantifiers_memory_node_info(ND_BODY(node)); + break; + case BAG_IF_ELSE: + { + int v; + r = quantifiers_memory_node_info(ND_BODY(node)); + if (IS_NOT_NULL(en->te.Then)) { + v = quantifiers_memory_node_info(en->te.Then); + if (v > r) r = v; + } + if (IS_NOT_NULL(en->te.Else)) { + v = quantifiers_memory_node_info(en->te.Else); + if (v > r) r = v; + } + } + break; + } + } + break; + + case ND_BACKREF: + case ND_STRING: + case ND_CTYPE: + case ND_CCLASS: + case ND_ANCHOR: + case ND_GIMMICK: + default: + break; + } + + return r; +} +#endif /* USE_RIGID_CHECK_CAPTURES_IN_EMPTY_REPEAT */ + + +#ifdef USE_CALL + +#ifdef __GNUC__ +__inline +#endif +static int +check_call_reference(CallNode* cn, ParseEnv* env, int state) +{ + MemEnv* mem_env = PARSEENV_MEMENV(env); + + if (cn->by_number != 0) { + int gnum = cn->called_gnum; + + if (env->num_named > 0 && + IS_SYNTAX_BV(env->syntax, ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP) && + ! OPTON_CAPTURE_GROUP(env->options)) { + return ONIGERR_NUMBERED_BACKREF_OR_CALL_NOT_ALLOWED; + } + + if (gnum > env->num_mem) { + onig_scan_env_set_error_string(env, ONIGERR_UNDEFINED_GROUP_REFERENCE, + cn->name, cn->name_end); + return ONIGERR_UNDEFINED_GROUP_REFERENCE; + } + + set_call_attr: + ND_CALL_BODY(cn) = mem_env[cn->called_gnum].mem_node; + if (IS_NULL(ND_CALL_BODY(cn))) { + onig_scan_env_set_error_string(env, ONIGERR_UNDEFINED_NAME_REFERENCE, + cn->name, cn->name_end); + return ONIGERR_UNDEFINED_NAME_REFERENCE; + } + + ND_STATUS_ADD(ND_CALL_BODY(cn), REFERENCED); + } + else { + int *refs; + + int n = onig_name_to_group_numbers(env->reg, cn->name, cn->name_end, &refs); + if (n <= 0) { + onig_scan_env_set_error_string(env, ONIGERR_UNDEFINED_NAME_REFERENCE, + cn->name, cn->name_end); + return ONIGERR_UNDEFINED_NAME_REFERENCE; + } + else if (n > 1) { + onig_scan_env_set_error_string(env, ONIGERR_MULTIPLEX_DEFINITION_NAME_CALL, + cn->name, cn->name_end); + return ONIGERR_MULTIPLEX_DEFINITION_NAME_CALL; + } + else { + cn->called_gnum = refs[0]; + goto set_call_attr; + } + } + + return 0; +} + +#ifdef USE_WHOLE_OPTIONS +static int +check_whole_options_position(Node* node /* root */, ParseEnv* env) +{ + int is_list; + + is_list = FALSE; + +#ifdef USE_CALL + if ((env->flags & PE_FLAG_HAS_CALL_ZERO) != 0) { + node = ND_BODY(node); + } +#endif + + start: + switch (ND_TYPE(node)) { + case ND_LIST: + if (IS_NOT_NULL(ND_CDR(node))) + is_list = TRUE; + + node = ND_CAR(node); + goto start; + break; + + case ND_BAG: + { + BagNode* en = BAG_(node); + + if (en->type == BAG_OPTION) { + if (ND_IS_WHOLE_OPTIONS(node)) { + if (is_list == TRUE && IS_NOT_NULL(ND_BODY(node))) + break; + + return 0; + } + } + } + break; + + default: + break; + } + + return ONIGERR_INVALID_GROUP_OPTION; +} +#endif + +static void +tune_call2_call(Node* node) +{ + switch (ND_TYPE(node)) { + case ND_LIST: + case ND_ALT: + do { + tune_call2_call(ND_CAR(node)); + } while (IS_NOT_NULL(node = ND_CDR(node))); + break; + + case ND_QUANT: + tune_call2_call(ND_BODY(node)); + break; + + case ND_ANCHOR: + if (ANCHOR_HAS_BODY(ANCHOR_(node))) + tune_call2_call(ND_BODY(node)); + break; + + case ND_BAG: + { + BagNode* en = BAG_(node); + + if (en->type == BAG_MEMORY) { + if (! ND_IS_MARK1(node)) { + ND_STATUS_ADD(node, MARK1); + tune_call2_call(ND_BODY(node)); + ND_STATUS_REMOVE(node, MARK1); + } + } + else if (en->type == BAG_IF_ELSE) { + tune_call2_call(ND_BODY(node)); + if (IS_NOT_NULL(en->te.Then)) + tune_call2_call(en->te.Then); + if (IS_NOT_NULL(en->te.Else)) + tune_call2_call(en->te.Else); + } + else { + tune_call2_call(ND_BODY(node)); + } + } + break; + + case ND_CALL: + if (! ND_IS_MARK1(node)) { + ND_STATUS_ADD(node, MARK1); + { + CallNode* cn = CALL_(node); + Node* called = ND_CALL_BODY(cn); + + cn->entry_count++; + + ND_STATUS_ADD(called, CALLED); + BAG_(called)->m.entry_count++; + tune_call2_call(called); + } + ND_STATUS_REMOVE(node, MARK1); + } + break; + + default: + break; + } +} + +static int +tune_call(Node* node, ParseEnv* env, int state) +{ + int r; + + switch (ND_TYPE(node)) { + case ND_LIST: + case ND_ALT: + do { + r = tune_call(ND_CAR(node), env, state); + } while (r == 0 && IS_NOT_NULL(node = ND_CDR(node))); + break; + + case ND_QUANT: + if (QUANT_(node)->upper == 0) + state |= IN_ZERO_REPEAT; + + r = tune_call(ND_BODY(node), env, state); + break; + + case ND_ANCHOR: + if (ANCHOR_HAS_BODY(ANCHOR_(node))) + r = tune_call(ND_BODY(node), env, state); + else + r = 0; + break; + + case ND_BAG: + { + BagNode* en = BAG_(node); + + if (en->type == BAG_MEMORY) { + if ((state & IN_ZERO_REPEAT) != 0) { + ND_STATUS_ADD(node, IN_ZERO_REPEAT); + BAG_(node)->m.entry_count--; + } + r = tune_call(ND_BODY(node), env, state); + } + else if (en->type == BAG_IF_ELSE) { + r = tune_call(ND_BODY(node), env, state); + if (r != 0) return r; + if (IS_NOT_NULL(en->te.Then)) { + r = tune_call(en->te.Then, env, state); + if (r != 0) return r; + } + if (IS_NOT_NULL(en->te.Else)) + r = tune_call(en->te.Else, env, state); + } + else + r = tune_call(ND_BODY(node), env, state); + } + break; + + case ND_CALL: + if ((state & IN_ZERO_REPEAT) != 0) { + ND_STATUS_ADD(node, IN_ZERO_REPEAT); + CALL_(node)->entry_count--; + } + + r = check_call_reference(CALL_(node), env, state); + break; + + default: + r = 0; + break; + } + + return r; +} + +static int +tune_call2(Node* node) +{ + int r = 0; + + switch (ND_TYPE(node)) { + case ND_LIST: + case ND_ALT: + do { + r = tune_call2(ND_CAR(node)); + } while (r == 0 && IS_NOT_NULL(node = ND_CDR(node))); + break; + + case ND_QUANT: + if (QUANT_(node)->upper != 0) + r = tune_call2(ND_BODY(node)); + break; + + case ND_ANCHOR: + if (ANCHOR_HAS_BODY(ANCHOR_(node))) + r = tune_call2(ND_BODY(node)); + break; + + case ND_BAG: + if (! ND_IS_IN_ZERO_REPEAT(node)) + r = tune_call2(ND_BODY(node)); + + { + BagNode* en = BAG_(node); + + if (r != 0) return r; + if (en->type == BAG_IF_ELSE) { + if (IS_NOT_NULL(en->te.Then)) { + r = tune_call2(en->te.Then); + if (r != 0) return r; + } + if (IS_NOT_NULL(en->te.Else)) + r = tune_call2(en->te.Else); + } + } + break; + + case ND_CALL: + if (! ND_IS_IN_ZERO_REPEAT(node)) { + tune_call2_call(node); + } + break; + + default: + break; + } + + return r; +} + + +static void +tune_called_state_call(Node* node, int state) +{ + switch (ND_TYPE(node)) { + case ND_ALT: + state |= IN_ALT; + /* fall */ + case ND_LIST: + do { + tune_called_state_call(ND_CAR(node), state); + } while (IS_NOT_NULL(node = ND_CDR(node))); + break; + + case ND_QUANT: + { + QuantNode* qn = QUANT_(node); + + if (IS_INFINITE_REPEAT(qn->upper) || qn->upper >= 2) + state |= IN_REAL_REPEAT; + if (qn->lower != qn->upper) + state |= IN_VAR_REPEAT; + if ((state & IN_PEEK) != 0) + ND_STATUS_ADD(node, INPEEK); + + tune_called_state_call(ND_QUANT_BODY(qn), state); + } + break; + + case ND_ANCHOR: + { + AnchorNode* an = ANCHOR_(node); + + switch (an->type) { + case ANCR_PREC_READ_NOT: + case ANCR_LOOK_BEHIND_NOT: + state |= (IN_NOT | IN_PEEK); + tune_called_state_call(ND_ANCHOR_BODY(an), state); + break; + case ANCR_PREC_READ: + case ANCR_LOOK_BEHIND: + state |= IN_PEEK; + tune_called_state_call(ND_ANCHOR_BODY(an), state); + break; + default: + break; + } + } + break; + + case ND_BAG: + { + BagNode* en = BAG_(node); + + if (en->type == BAG_MEMORY) { + if (ND_IS_MARK1(node)) { + if ((~en->m.called_state & state) != 0) { + en->m.called_state |= state; + tune_called_state_call(ND_BODY(node), state); + } + } + else { + ND_STATUS_ADD(node, MARK1); + en->m.called_state |= state; + tune_called_state_call(ND_BODY(node), state); + ND_STATUS_REMOVE(node, MARK1); + } + } + else if (en->type == BAG_IF_ELSE) { + state |= IN_ALT; + tune_called_state_call(ND_BODY(node), state); + if (IS_NOT_NULL(en->te.Then)) { + tune_called_state_call(en->te.Then, state); + } + if (IS_NOT_NULL(en->te.Else)) + tune_called_state_call(en->te.Else, state); + } + else { + tune_called_state_call(ND_BODY(node), state); + } + } + break; + + case ND_CALL: + if ((state & IN_PEEK) != 0) + ND_STATUS_ADD(node, INPEEK); + if ((state & IN_REAL_REPEAT) != 0) + ND_STATUS_ADD(node, IN_REAL_REPEAT); + + tune_called_state_call(ND_BODY(node), state); + break; + + default: + break; + } +} + +static void +tune_called_state(Node* node, int state) +{ + switch (ND_TYPE(node)) { + case ND_ALT: + state |= IN_ALT; + /* fall */ + case ND_LIST: + do { + tune_called_state(ND_CAR(node), state); + } while (IS_NOT_NULL(node = ND_CDR(node))); + break; + +#ifdef USE_CALL + case ND_CALL: + if ((state & IN_PEEK) != 0) + ND_STATUS_ADD(node, INPEEK); + if ((state & IN_REAL_REPEAT) != 0) + ND_STATUS_ADD(node, IN_REAL_REPEAT); + + tune_called_state_call(node, state); + break; +#endif + + case ND_BAG: + { + BagNode* en = BAG_(node); + + switch (en->type) { + case BAG_MEMORY: + if (en->m.entry_count > 1) + state |= IN_MULTI_ENTRY; + + en->m.called_state |= state; + /* fall */ + case BAG_OPTION: + case BAG_STOP_BACKTRACK: + tune_called_state(ND_BODY(node), state); + break; + case BAG_IF_ELSE: + state |= IN_ALT; + tune_called_state(ND_BODY(node), state); + if (IS_NOT_NULL(en->te.Then)) + tune_called_state(en->te.Then, state); + if (IS_NOT_NULL(en->te.Else)) + tune_called_state(en->te.Else, state); + break; + } + } + break; + + case ND_QUANT: + { + QuantNode* qn = QUANT_(node); + + if (IS_INFINITE_REPEAT(qn->upper) || qn->upper >= 2) + state |= IN_REAL_REPEAT; + if (qn->lower != qn->upper) + state |= IN_VAR_REPEAT; + if ((state & IN_PEEK) != 0) + ND_STATUS_ADD(node, INPEEK); + + tune_called_state(ND_QUANT_BODY(qn), state); + } + break; + + case ND_ANCHOR: + { + AnchorNode* an = ANCHOR_(node); + + switch (an->type) { + case ANCR_PREC_READ_NOT: + case ANCR_LOOK_BEHIND_NOT: + state |= (IN_NOT | IN_PEEK); + tune_called_state(ND_ANCHOR_BODY(an), state); + break; + case ANCR_PREC_READ: + case ANCR_LOOK_BEHIND: + state |= IN_PEEK; + tune_called_state(ND_ANCHOR_BODY(an), state); + break; + default: + break; + } + } + break; + + case ND_BACKREF: + case ND_STRING: + case ND_CTYPE: + case ND_CCLASS: + case ND_GIMMICK: + default: + break; + } +} + +#endif /* USE_CALL */ + + +#ifdef __GNUC__ +__inline +#endif +static int +tune_anchor(Node* node, regex_t* reg, int state, ParseEnv* env) +{ + int r; + AnchorNode* an = ANCHOR_(node); + + switch (an->type) { + case ANCR_PREC_READ: + r = tune_tree(ND_ANCHOR_BODY(an), reg, (state | IN_PREC_READ), env); + break; + case ANCR_PREC_READ_NOT: + r = tune_tree(ND_ANCHOR_BODY(an), reg, (state | IN_PREC_READ | IN_NOT), + env); + break; + + case ANCR_LOOK_BEHIND: + case ANCR_LOOK_BEHIND_NOT: + r = tune_look_behind(node, reg, state, env); + break; + + default: + r = 0; + break; + } + + return r; +} + +#ifdef __GNUC__ +__inline +#endif +static int +tune_quant(Node* node, regex_t* reg, int state, ParseEnv* env) +{ + int r; + QuantNode* qn = QUANT_(node); + Node* body = ND_BODY(node); + + if ((state & IN_REAL_REPEAT) != 0) { + ND_STATUS_ADD(node, IN_REAL_REPEAT); + } + if ((state & IN_MULTI_ENTRY) != 0) { + ND_STATUS_ADD(node, IN_MULTI_ENTRY); + } + + if (IS_INFINITE_REPEAT(qn->upper) || qn->upper >= 1) { + OnigLen d = node_min_byte_len(body, env); + if (d == 0) { +#ifdef USE_RIGID_CHECK_CAPTURES_IN_EMPTY_REPEAT + qn->emptiness = quantifiers_memory_node_info(body); +#else + qn->emptiness = BODY_MAY_BE_EMPTY; +#endif + } + } + + if (IS_INFINITE_REPEAT(qn->upper) || qn->upper >= 2) + state |= IN_REAL_REPEAT; + if (qn->lower != qn->upper) + state |= IN_VAR_REPEAT; + + r = tune_tree(body, reg, state, env); + if (r != 0) return r; + + /* expand string */ +#define EXPAND_STRING_MAX_LENGTH 100 + if (ND_TYPE(body) == ND_STRING) { + if (!IS_INFINITE_REPEAT(qn->lower) && qn->lower == qn->upper && + qn->lower > 1 && qn->lower <= EXPAND_STRING_MAX_LENGTH) { + int len = ND_STRING_LEN(body); + + if (len * qn->lower <= EXPAND_STRING_MAX_LENGTH) { + int i, n = qn->lower; + node_conv_to_str_node(node, body); + for (i = 0; i < n; i++) { + r = node_str_node_cat(node, body); + if (r != 0) return r; + } + onig_node_free(body); + return r; + } + } + } + + if (qn->greedy && (qn->emptiness == BODY_IS_NOT_EMPTY)) { + if (ND_TYPE(body) == ND_QUANT) { + QuantNode* tqn = QUANT_(body); + if (IS_NOT_NULL(tqn->head_exact)) { + qn->head_exact = tqn->head_exact; + tqn->head_exact = NULL; + } + } + else { + qn->head_exact = get_tree_head_literal(ND_BODY(node), 1, reg); + } + } + + return r; +} + +/* tune_tree does the following work. + 1. check empty loop. (set qn->emptiness) + 2. expand ignore-case in char class. + 3. set memory status bit flags. (reg->mem_stats) + 4. set qn->head_exact for [push, exact] -> [push_or_jump_exact1, exact]. + 5. find invalid patterns in look-behind. + 6. expand repeated string. + */ +static int +tune_tree(Node* node, regex_t* reg, int state, ParseEnv* env) +{ + int r = 0; + + switch (ND_TYPE(node)) { + case ND_LIST: + { + Node* prev = NULL_NODE; + do { + r = tune_tree(ND_CAR(node), reg, state, env); + if (IS_NOT_NULL(prev) && r == 0) { + r = tune_next(prev, ND_CAR(node), reg); + } + prev = ND_CAR(node); + } while (r == 0 && IS_NOT_NULL(node = ND_CDR(node))); + } + break; + + case ND_ALT: + do { + r = tune_tree(ND_CAR(node), reg, (state | IN_ALT), env); + } while (r == 0 && IS_NOT_NULL(node = ND_CDR(node))); + break; + + case ND_STRING: + if (ND_IS_REAL_IGNORECASE(node)) { + r = unravel_case_fold_string(node, reg, state); + } + break; + + case ND_BACKREF: + { + int i; + int* p; + BackRefNode* br = BACKREF_(node); + p = BACKREFS_P(br); + for (i = 0; i < br->back_num; i++) { + if (p[i] > env->num_mem) return ONIGERR_INVALID_BACKREF; + MEM_STATUS_ON(env->backrefed_mem, p[i]); +#if 0 +#ifdef USE_BACKREF_WITH_LEVEL + if (ND_IS_NEST_LEVEL(node)) { + MEM_STATUS_ON(env->backtrack_mem, p[i]); + } +#endif +#else + /* More precisely, it should be checked whether alt/repeat exists before + the subject capture node, and then this backreference position + exists before (or in) the capture node. */ + MEM_STATUS_ON(env->backtrack_mem, p[i]); +#endif + } + } + break; + + case ND_BAG: + { + BagNode* en = BAG_(node); + + switch (en->type) { + case BAG_OPTION: + { + OnigOptionType options = reg->options; + reg->options = BAG_(node)->o.options; + r = tune_tree(ND_BODY(node), reg, state, env); + reg->options = options; + } + break; + + case BAG_MEMORY: +#ifdef USE_CALL + state |= en->m.called_state; +#endif + + if ((state & (IN_ALT | IN_NOT | IN_VAR_REPEAT | IN_MULTI_ENTRY)) != 0 + || ND_IS_RECURSION(node)) { + MEM_STATUS_ON(env->backtrack_mem, en->m.regnum); + } + r = tune_tree(ND_BODY(node), reg, state, env); + break; + + case BAG_STOP_BACKTRACK: + { + Node* target = ND_BODY(node); + r = tune_tree(target, reg, state, env); + if (ND_TYPE(target) == ND_QUANT) { + QuantNode* tqn = QUANT_(target); + if (IS_INFINITE_REPEAT(tqn->upper) && tqn->lower <= 1 && + tqn->greedy != 0) { /* (?>a*), a*+ etc... */ + if (is_strict_real_node(ND_BODY(target))) + ND_STATUS_ADD(node, STRICT_REAL_REPEAT); + } + } + } + break; + + case BAG_IF_ELSE: + r = tune_tree(ND_BODY(node), reg, (state | IN_ALT), env); + if (r != 0) return r; + if (IS_NOT_NULL(en->te.Then)) { + r = tune_tree(en->te.Then, reg, (state | IN_ALT), env); + if (r != 0) return r; + } + if (IS_NOT_NULL(en->te.Else)) + r = tune_tree(en->te.Else, reg, (state | IN_ALT), env); + break; + } + } + break; + + case ND_QUANT: + if ((state & (IN_PREC_READ | IN_LOOK_BEHIND)) != 0) + ND_STATUS_ADD(node, INPEEK); + + r = tune_quant(node, reg, state, env); + break; + + case ND_ANCHOR: + r = tune_anchor(node, reg, state, env); + break; + +#ifdef USE_CALL + case ND_CALL: +#endif + case ND_CTYPE: + case ND_CCLASS: + case ND_GIMMICK: + default: + break; + } + + return r; +} + +#ifndef ONIG_DONT_OPTIMIZE +static int +set_sunday_quick_search_or_bmh_skip_table(regex_t* reg, int case_expand, + UChar* s, UChar* end, + UChar skip[], int* roffset) +{ + int i, j, k, len, offset; + int n, clen; + UChar* p; + OnigEncoding enc; + OnigCaseFoldCodeItem items[ONIGENC_GET_CASE_FOLD_CODES_MAX_NUM]; + UChar buf[ONIGENC_MBC_CASE_FOLD_MAXLEN]; + + enc = reg->enc; + offset = ENC_GET_SKIP_OFFSET(enc); + if (offset == ENC_SKIP_OFFSET_1_OR_0) { + UChar* p = s; + while (1) { + len = enclen(enc, p); + if (p + len >= end) { + if (len == 1) offset = 1; + else offset = 0; + break; + } + p += len; + } + } + + len = (int )(end - s); + if (len + offset >= UCHAR_MAX) + return ONIGERR_PARSER_BUG; + + *roffset = offset; + + for (i = 0; i < CHAR_MAP_SIZE; i++) { + skip[i] = (UChar )(len + offset); + } + + for (p = s; p < end; ) { + int z; + + clen = enclen(enc, p); + if (p + clen > end) clen = (int )(end - p); + + len = (int )(end - p); + for (j = 0; j < clen; j++) { + z = len - j + (offset - 1); + if (z <= 0) break; + skip[p[j]] = z; + } + + if (case_expand != 0) { + n = ONIGENC_GET_CASE_FOLD_CODES_BY_STR(enc, reg->case_fold_flag, + p, end, items); + for (k = 0; k < n; k++) { + ONIGENC_CODE_TO_MBC(enc, items[k].code[0], buf); + for (j = 0; j < clen; j++) { + z = len - j + (offset - 1); + if (z <= 0) break; + if (skip[buf[j]] > z) + skip[buf[j]] = z; + } + } + } + + p += clen; + } + + return 0; +} +#endif + + +#define OPT_EXACT_MAXLEN 24 + +#if OPT_EXACT_MAXLEN >= UCHAR_MAX +#error Too big OPT_EXACT_MAXLEN +#endif + +typedef struct { + MinMaxLen mm; + OnigEncoding enc; + OnigCaseFoldType case_fold_flag; + ParseEnv* scan_env; +} OptEnv; + +typedef struct { + int left; + int right; +} OptAnc; + +typedef struct { + MinMaxLen mm; /* position */ + OptAnc anc; + int reach_end; + int len; + UChar s[OPT_EXACT_MAXLEN]; +} OptStr; + +typedef struct { + MinMaxLen mm; /* position */ + OptAnc anc; + int value; /* weighted value */ + UChar map[CHAR_MAP_SIZE]; +} OptMap; + +typedef struct { + MinMaxLen len; + OptAnc anc; + OptStr sb; /* boundary */ + OptStr sm; /* middle */ + OptStr spr; /* prec read (?=...) */ + OptMap map; /* boundary */ +} OptNode; + + +#ifndef ONIG_DONT_OPTIMIZE + +static int +map_position_value(OnigEncoding enc, int i) +{ + static const short int Vals[] = { + 5, 1, 1, 1, 1, 1, 1, 1, 1, 10, 10, 1, 1, 10, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 12, 4, 7, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, + 5, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 6, 5, 5, 5, + 5, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 1 + }; + + if (i < (int )(sizeof(Vals)/sizeof(Vals[0]))) { + if (i == 0 && ONIGENC_MBC_MINLEN(enc) > 1) + return 20; + else + return (int )Vals[i]; + } + else + return 4; /* Take it easy. */ +} + +static int +distance_value(MinMaxLen* mm) +{ + /* 1000 / (min-max-dist + 1) */ + static const short int dist_vals[] = { + 1000, 500, 333, 250, 200, 167, 143, 125, 111, 100, + 91, 83, 77, 71, 67, 63, 59, 56, 53, 50, + 48, 45, 43, 42, 40, 38, 37, 36, 34, 33, + 32, 31, 30, 29, 29, 28, 27, 26, 26, 25, + 24, 24, 23, 23, 22, 22, 21, 21, 20, 20, + 20, 19, 19, 19, 18, 18, 18, 17, 17, 17, + 16, 16, 16, 16, 15, 15, 15, 15, 14, 14, + 14, 14, 14, 14, 13, 13, 13, 13, 13, 13, + 12, 12, 12, 12, 12, 12, 11, 11, 11, 11, + 11, 11, 11, 11, 11, 10, 10, 10, 10, 10 + }; + + OnigLen d; + + if (mm->max == INFINITE_LEN) return 0; + + d = mm->max - mm->min; + if (d < (OnigLen )(sizeof(dist_vals)/sizeof(dist_vals[0]))) + /* return dist_vals[d] * 16 / (mm->min + 12); */ + return (int )dist_vals[d]; + else + return 1; +} + +static int +comp_distance_value(MinMaxLen* d1, MinMaxLen* d2, int v1, int v2) +{ + if (v2 <= 0) return -1; + if (v1 <= 0) return 1; + + v1 *= distance_value(d1); + v2 *= distance_value(d2); + + if (v2 > v1) return 1; + if (v2 < v1) return -1; + + if (d2->min < d1->min) return 1; + if (d2->min > d1->min) return -1; + return 0; +} + +static void +copy_opt_env(OptEnv* to, OptEnv* from) +{ + *to = *from; +} + +static void +clear_opt_anc_info(OptAnc* a) +{ + a->left = 0; + a->right = 0; +} + +static void +copy_opt_anc_info(OptAnc* to, OptAnc* from) +{ + *to = *from; +} + +static void +concat_opt_anc_info(OptAnc* to, OptAnc* left, OptAnc* right, + OnigLen left_len, OnigLen right_len) +{ + clear_opt_anc_info(to); + + to->left = left->left; + if (left_len == 0) { + to->left |= right->left; + } + + to->right = right->right; + if (right_len == 0) { + to->right |= left->right; + } + else { + to->right |= (left->right & ANCR_PREC_READ_NOT); + } +} + +static int +is_left(int a) +{ + if (a == ANCR_END_BUF || a == ANCR_SEMI_END_BUF || + a == ANCR_END_LINE || a == ANCR_PREC_READ || a == ANCR_PREC_READ_NOT) + return 0; + + return 1; +} + +static int +is_set_opt_anc_info(OptAnc* to, int anc) +{ + if ((to->left & anc) != 0) return 1; + + return ((to->right & anc) != 0 ? 1 : 0); +} + +static void +add_opt_anc_info(OptAnc* to, int anc) +{ + if (is_left(anc)) + to->left |= anc; + else + to->right |= anc; +} + +static void +remove_opt_anc_info(OptAnc* to, int anc) +{ + if (is_left(anc)) + to->left &= ~anc; + else + to->right &= ~anc; +} + +static void +alt_merge_opt_anc_info(OptAnc* to, OptAnc* add) +{ + to->left &= add->left; + to->right &= add->right; +} + +static int +is_full_opt_exact(OptStr* e) +{ + return e->len >= OPT_EXACT_MAXLEN; +} + +static void +clear_opt_exact(OptStr* e) +{ + mml_clear(&e->mm); + clear_opt_anc_info(&e->anc); + e->reach_end = 0; + e->len = 0; + e->s[0] = '\0'; +} + +static void +copy_opt_exact(OptStr* to, OptStr* from) +{ + *to = *from; +} + +static int +concat_opt_exact(OptStr* to, OptStr* add, OnigEncoding enc) +{ + int i, j, len, r; + UChar *p, *end; + OptAnc tanc; + + r = 0; + p = add->s; + end = p + add->len; + for (i = to->len; p < end; ) { + len = enclen(enc, p); + if (i + len > OPT_EXACT_MAXLEN) { + r = 1; /* 1:full */ + break; + } + for (j = 0; j < len && p < end; j++) { + /* coverity[overrun-local] */ + to->s[i++] = *p++; + } + } + + to->len = i; + 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 = 0; + copy_opt_anc_info(&to->anc, &tanc); + + return r; +} + +static void +concat_opt_exact_str(OptStr* to, UChar* s, UChar* end, OnigEncoding enc) +{ + int i, j, len; + UChar *p; + + for (i = to->len, p = s; p < end && i < OPT_EXACT_MAXLEN; ) { + len = enclen(enc, p); + if (i + len > OPT_EXACT_MAXLEN) break; + for (j = 0; j < len && p < end; j++) { + /* coverity[overrun-local] */ + to->s[i++] = *p++; + } + } + + to->len = i; + + if (p >= end) + to->reach_end = 1; +} + +static void +alt_merge_opt_exact(OptStr* to, OptStr* add, OptEnv* env) +{ + int i, j, len; + + if (add->len == 0 || to->len == 0) { + clear_opt_exact(to); + return ; + } + + if (! mml_is_equal(&to->mm, &add->mm)) { + clear_opt_exact(to); + return ; + } + + for (i = 0; i < to->len && i < add->len; ) { + if (to->s[i] != add->s[i]) break; + len = enclen(env->enc, to->s + i); + + for (j = 1; j < len; j++) { + if (to->s[i+j] != add->s[i+j]) break; + } + if (j < len) break; + i += len; + } + + if (! add->reach_end || i < add->len || i < to->len) { + to->reach_end = 0; + } + to->len = i; + + alt_merge_opt_anc_info(&to->anc, &add->anc); + if (! to->reach_end) to->anc.right = 0; +} + +static void +select_opt_exact(OnigEncoding enc, OptStr* now, OptStr* alt) +{ + int vn, va; + + vn = now->len; + va = alt->len; + + if (va == 0) { + return ; + } + else if (vn == 0) { + copy_opt_exact(now, alt); + return ; + } + else if (vn <= 2 && va <= 2) { + /* ByteValTable[x] is big value --> low price */ + va = map_position_value(enc, now->s[0]); + vn = map_position_value(enc, alt->s[0]); + + if (now->len > 1) vn += 5; + if (alt->len > 1) va += 5; + } + + vn *= 2; + va *= 2; + + if (comp_distance_value(&now->mm, &alt->mm, vn, va) > 0) + copy_opt_exact(now, alt); +} + +static void +clear_opt_map(OptMap* map) +{ + 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, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + } + }; + + xmemcpy(map, &clean_info, sizeof(OptMap)); +} + +static void +copy_opt_map(OptMap* to, OptMap* from) +{ + *to = *from; +} + +static void +add_char_opt_map(OptMap* m, UChar c, OnigEncoding enc) +{ + if (m->map[c] == 0) { + m->map[c] = 1; + m->value += map_position_value(enc, c); + } +} + +static void +select_opt_map(OptMap* now, OptMap* alt) +{ + static int z = 1<<15; /* 32768: something big value */ + + int vn, va; + + if (alt->value == 0) return ; + if (now->value == 0) { + copy_opt_map(now, alt); + return ; + } + + vn = z / now->value; + va = z / alt->value; + if (comp_distance_value(&now->mm, &alt->mm, vn, va) > 0) + copy_opt_map(now, alt); +} + +static int +comp_opt_exact_or_map(OptStr* e, OptMap* m) +{ +#define COMP_EM_BASE 20 + int ae, am; + int case_value; + + if (m->value <= 0) return -1; + + case_value = 3; + ae = COMP_EM_BASE * e->len * case_value; + am = COMP_EM_BASE * 5 * 2 / m->value; + return comp_distance_value(&e->mm, &m->mm, ae, am); +} + +static void +alt_merge_opt_map(OnigEncoding enc, OptMap* to, OptMap* add) +{ + int i, val; + + /* if (! mml_is_equal(&to->mm, &add->mm)) return ; */ + if (to->value == 0) return ; + if (add->value == 0 || to->mm.max < add->mm.min) { + clear_opt_map(to); + return ; + } + + mml_alt_merge(&to->mm, &add->mm); + + val = 0; + for (i = 0; i < CHAR_MAP_SIZE; i++) { + if (add->map[i]) + to->map[i] = 1; + + if (to->map[i]) + val += map_position_value(enc, i); + } + to->value = val; + + alt_merge_opt_anc_info(&to->anc, &add->anc); +} + +static void +set_bound_node_opt_info(OptNode* opt, MinMaxLen* plen) +{ + mml_copy(&(opt->sb.mm), plen); + mml_copy(&(opt->spr.mm), plen); + mml_copy(&(opt->map.mm), plen); +} + +static void +clear_node_opt_info(OptNode* opt) +{ + mml_clear(&opt->len); + clear_opt_anc_info(&opt->anc); + clear_opt_exact(&opt->sb); + clear_opt_exact(&opt->sm); + clear_opt_exact(&opt->spr); + clear_opt_map(&opt->map); +} + +static void +copy_node_opt_info(OptNode* to, OptNode* from) +{ + *to = *from; +} + +static void +concat_left_node_opt_info(OnigEncoding enc, OptNode* to, OptNode* add) +{ + int sb_reach, sm_reach; + 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->sb.len > 0 && to->len.max == 0) { + concat_opt_anc_info(&tanc, &to->anc, &add->sb.anc, to->len.max, add->len.max); + copy_opt_anc_info(&add->sb.anc, &tanc); + } + + if (add->map.value > 0 && to->len.max == 0) { + if (add->map.mm.max == 0) + add->map.anc.left |= to->anc.left; + } + + sb_reach = to->sb.reach_end; + sm_reach = to->sm.reach_end; + + if (add->len.max != 0) + to->sb.reach_end = to->sm.reach_end = 0; + + if (add->sb.len > 0) { + if (sb_reach) { + concat_opt_exact(&to->sb, &add->sb, enc); + clear_opt_exact(&add->sb); + } + else if (sm_reach) { + concat_opt_exact(&to->sm, &add->sb, enc); + clear_opt_exact(&add->sb); + } + } + select_opt_exact(enc, &to->sm, &add->sb); + select_opt_exact(enc, &to->sm, &add->sm); + + if (to->spr.len > 0) { + if (add->len.max > 0) { + if (to->spr.mm.max == 0) + select_opt_exact(enc, &to->sb, &to->spr); + else + select_opt_exact(enc, &to->sm, &to->spr); + } + } + else if (add->spr.len > 0) { + copy_opt_exact(&to->spr, &add->spr); + } + + select_opt_map(&to->map, &add->map); + mml_add(&to->len, &add->len); +} + +static void +alt_merge_node_opt_info(OptNode* to, OptNode* add, OptEnv* env) +{ + alt_merge_opt_anc_info(&to->anc, &add->anc); + alt_merge_opt_exact(&to->sb, &add->sb, env); + alt_merge_opt_exact(&to->sm, &add->sm, env); + alt_merge_opt_exact(&to->spr, &add->spr, env); + alt_merge_opt_map(env->enc, &to->map, &add->map); + + mml_alt_merge(&to->len, &add->len); +} + +static OnigLen +node_max_byte_len(Node* node, ParseEnv* env) +{ + OnigLen len; + OnigLen tmax; + + len = 0; + switch (ND_TYPE(node)) { + case ND_LIST: + do { + tmax = node_max_byte_len(ND_CAR(node), env); + len = distance_add(len, tmax); + } while (IS_NOT_NULL(node = ND_CDR(node))); + break; + + case ND_ALT: + do { + tmax = node_max_byte_len(ND_CAR(node), env); + if (len < tmax) len = tmax; + } while (IS_NOT_NULL(node = ND_CDR(node))); + break; + + case ND_STRING: + { + StrNode* sn = STR_(node); + len = (OnigLen )(sn->end - sn->s); + } + break; + + case ND_CTYPE: + case ND_CCLASS: + len = ONIGENC_MBC_MAXLEN_DIST(env->enc); + break; + + case ND_BACKREF: + if (! ND_IS_CHECKER(node)) { + int i; + int* backs; + MemEnv* mem_env = PARSEENV_MEMENV(env); + BackRefNode* br = BACKREF_(node); + if (ND_IS_RECURSION(node)) { +#ifdef USE_BACKREF_WITH_LEVEL + if (ND_IS_NEST_LEVEL(node)) { + len = INFINITE_LEN; + } +#endif + break; + } + backs = BACKREFS_P(br); + for (i = 0; i < br->back_num; i++) { + tmax = node_max_byte_len(mem_env[backs[i]].mem_node, env); + if (len < tmax) len = tmax; + } + } + break; + +#ifdef USE_CALL + case ND_CALL: + if (! ND_IS_RECURSION(node)) + len = node_max_byte_len(ND_BODY(node), env); + else + len = INFINITE_LEN; + break; +#endif + + case ND_QUANT: + { + QuantNode* qn = QUANT_(node); + + if (qn->upper != 0) { + len = node_max_byte_len(ND_BODY(node), env); + if (len != 0) { + if (! IS_INFINITE_REPEAT(qn->upper)) + len = distance_multiply(len, qn->upper); + else + len = INFINITE_LEN; + } + } + } + break; + + case ND_BAG: + { + BagNode* en = BAG_(node); + switch (en->type) { + case BAG_MEMORY: + if (ND_IS_FIXED_MAX(node)) + len = en->max_len; + else { + if (ND_IS_MARK1(node)) + len = INFINITE_LEN; + else { + ND_STATUS_ADD(node, MARK1); + len = node_max_byte_len(ND_BODY(node), env); + ND_STATUS_REMOVE(node, MARK1); + + en->max_len = len; + ND_STATUS_ADD(node, FIXED_MAX); + } + } + break; + + case BAG_OPTION: + case BAG_STOP_BACKTRACK: + len = node_max_byte_len(ND_BODY(node), env); + break; + case BAG_IF_ELSE: + { + OnigLen tlen, elen; + + len = node_max_byte_len(ND_BODY(node), env); + if (IS_NOT_NULL(en->te.Then)) { + tlen = node_max_byte_len(en->te.Then, env); + len = distance_add(len, tlen); + } + if (IS_NOT_NULL(en->te.Else)) + elen = node_max_byte_len(en->te.Else, env); + else elen = 0; + + if (elen > len) len = elen; + } + break; + } + } + break; + + case ND_ANCHOR: + case ND_GIMMICK: + default: + break; + } + + return len; +} + +#define MAX_ND_OPT_INFO_REF_COUNT 5 + +static int +optimize_nodes(Node* node, OptNode* opt, OptEnv* env) +{ + int i; + int r; + OptNode xo; + OnigEncoding enc; + + r = 0; + enc = env->enc; + clear_node_opt_info(opt); + set_bound_node_opt_info(opt, &env->mm); + + switch (ND_TYPE(node)) { + case ND_LIST: + { + OptEnv nenv; + Node* nd = node; + + copy_opt_env(&nenv, env); + do { + r = optimize_nodes(ND_CAR(nd), &xo, &nenv); + if (r == 0) { + mml_add(&nenv.mm, &xo.len); + concat_left_node_opt_info(enc, opt, &xo); + } + } while (r == 0 && IS_NOT_NULL(nd = ND_CDR(nd))); + } + break; + + case ND_ALT: + { + Node* nd = node; + + do { + r = optimize_nodes(ND_CAR(nd), &xo, env); + if (r == 0) { + if (nd == node) copy_node_opt_info(opt, &xo); + else alt_merge_node_opt_info(opt, &xo, env); + } + } while ((r == 0) && IS_NOT_NULL(nd = ND_CDR(nd))); + } + break; + + case ND_STRING: + { + StrNode* sn = STR_(node); + int slen = (int )(sn->end - sn->s); + + concat_opt_exact_str(&opt->sb, sn->s, sn->end, enc); + if (slen > 0) { + add_char_opt_map(&opt->map, *(sn->s), enc); + } + mml_set_min_max(&opt->len, slen, slen); + } + break; + + case ND_CCLASS: + { + int z; + CClassNode* cc = CCLASS_(node); + + /* no need to check ignore case. (set in tune_tree()) */ + + if (IS_NOT_NULL(cc->mbuf) || IS_NCCLASS_NOT(cc)) { + OnigLen min = ONIGENC_MBC_MINLEN(enc); + OnigLen max = ONIGENC_MBC_MAXLEN_DIST(enc); + + mml_set_min_max(&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(&opt->map, (UChar )i, enc); + } + } + mml_set_min_max(&opt->len, 1, 1); + } + } + break; + + case ND_CTYPE: + { + int min, max; + int range; + + max = ONIGENC_MBC_MAXLEN_DIST(enc); + + if (max == 1) { + min = 1; + + switch (CTYPE_(node)->ctype) { + case CTYPE_ANYCHAR: + break; + + case ONIGENC_CTYPE_WORD: + 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(enc, i)) { + add_char_opt_map(&opt->map, (UChar )i, enc); + } + } + for (i = range; i < SINGLE_BYTE_SIZE; i++) { + add_char_opt_map(&opt->map, (UChar )i, enc); + } + } + else { + for (i = 0; i < range; i++) { + if (ONIGENC_IS_CODE_WORD(enc, i)) { + add_char_opt_map(&opt->map, (UChar )i, enc); + } + } + } + break; + } + } + else { + min = ONIGENC_MBC_MINLEN(enc); + } + mml_set_min_max(&opt->len, min, max); + } + break; + + case ND_ANCHOR: + switch (ANCHOR_(node)->type) { + case ANCR_BEGIN_BUF: + case ANCR_BEGIN_POSITION: + case ANCR_BEGIN_LINE: + case ANCR_END_BUF: + case ANCR_SEMI_END_BUF: + case ANCR_END_LINE: + case ANCR_PREC_READ_NOT: + case ANCR_LOOK_BEHIND: + add_opt_anc_info(&opt->anc, ANCHOR_(node)->type); + break; + + case ANCR_PREC_READ: + { + r = optimize_nodes(ND_BODY(node), &xo, env); + if (r == 0) { + if (xo.sb.len > 0) + copy_opt_exact(&opt->spr, &xo.sb); + else if (xo.sm.len > 0) + copy_opt_exact(&opt->spr, &xo.sm); + + opt->spr.reach_end = 0; + + if (xo.map.value > 0) + copy_opt_map(&opt->map, &xo.map); + } + } + break; + + case ANCR_LOOK_BEHIND_NOT: + break; + } + break; + + case ND_BACKREF: + if (! ND_IS_CHECKER(node)) { + OnigLen min, max; + + min = node_min_byte_len(node, env->scan_env); + max = node_max_byte_len(node, env->scan_env); + mml_set_min_max(&opt->len, min, max); + } + break; + +#ifdef USE_CALL + case ND_CALL: + if (ND_IS_RECURSION(node)) + mml_set_min_max(&opt->len, 0, INFINITE_LEN); + else { + r = optimize_nodes(ND_BODY(node), opt, env); + } + break; +#endif + + case ND_QUANT: + { + OnigLen min, max; + QuantNode* qn = QUANT_(node); + + /* Issue #175 + ex. /\g<1>{0}(?<=|())/ + + Empty and unused nodes in look-behind is removed in + tune_look_behind(). + Called group nodes are assigned to be not called if the caller side is + inside of zero-repetition. + As a result, the nodes are considered unused. + */ + if (qn->upper == 0) { + mml_set_min_max(&opt->len, 0, 0); + break; + } + + r = optimize_nodes(ND_BODY(node), &xo, env); + if (r != 0) break; + + if (qn->lower > 0) { + copy_node_opt_info(opt, &xo); + if (xo.sb.len > 0) { + if (xo.sb.reach_end) { + for (i = 2; i <= qn->lower && ! is_full_opt_exact(&opt->sb); i++) { + int rc = concat_opt_exact(&opt->sb, &xo.sb, enc); + if (rc > 0) break; + } + if (i < qn->lower) opt->sb.reach_end = 0; + } + } + + if (qn->lower != qn->upper) { + opt->sb.reach_end = 0; + opt->sm.reach_end = 0; + } + if (qn->lower > 1) + opt->sm.reach_end = 0; + } + + if (IS_INFINITE_REPEAT(qn->upper)) { + if (env->mm.max == 0 && + ND_IS_ANYCHAR(ND_BODY(node)) && qn->greedy != 0) { + if (ND_IS_MULTILINE(ND_QUANT_BODY(qn))) + add_opt_anc_info(&opt->anc, ANCR_ANYCHAR_INF_ML); + else + add_opt_anc_info(&opt->anc, ANCR_ANYCHAR_INF); + } + + max = (xo.len.max > 0 ? INFINITE_LEN : 0); + } + else { + max = distance_multiply(xo.len.max, qn->upper); + } + + min = distance_multiply(xo.len.min, qn->lower); + mml_set_min_max(&opt->len, min, max); + } + break; + + case ND_BAG: + { + BagNode* en = BAG_(node); + + switch (en->type) { + case BAG_STOP_BACKTRACK: + case BAG_OPTION: + r = optimize_nodes(ND_BODY(node), opt, env); + break; + + case BAG_MEMORY: +#ifdef USE_CALL + en->opt_count++; + if (en->opt_count > MAX_ND_OPT_INFO_REF_COUNT) { + OnigLen min, max; + + min = 0; + max = INFINITE_LEN; + if (ND_IS_FIXED_MIN(node)) min = en->min_len; + if (ND_IS_FIXED_MAX(node)) max = en->max_len; + mml_set_min_max(&opt->len, min, max); + } + else +#endif + { + r = optimize_nodes(ND_BODY(node), opt, env); + if (is_set_opt_anc_info(&opt->anc, ANCR_ANYCHAR_INF_MASK)) { + if (MEM_STATUS_AT0(env->scan_env->backrefed_mem, en->m.regnum)) + remove_opt_anc_info(&opt->anc, ANCR_ANYCHAR_INF_MASK); + } + } + break; + + case BAG_IF_ELSE: + { + OptEnv nenv; + + if (IS_NOT_NULL(en->te.Else)) { + copy_opt_env(&nenv, env); + r = optimize_nodes(ND_BAG_BODY(en), &xo, &nenv); + if (r == 0) { + mml_add(&nenv.mm, &xo.len); + concat_left_node_opt_info(enc, opt, &xo); + if (IS_NOT_NULL(en->te.Then)) { + r = optimize_nodes(en->te.Then, &xo, &nenv); + if (r == 0) { + concat_left_node_opt_info(enc, opt, &xo); + } + } + + r = optimize_nodes(en->te.Else, &xo, env); + if (r == 0) + alt_merge_node_opt_info(opt, &xo, env); + } + } + } + break; + } + } + break; + + case ND_GIMMICK: + break; + + default: +#ifdef ONIG_DEBUG + fprintf(DBGFP, "optimize_nodes: undefined node type %d\n", ND_TYPE(node)); +#endif + r = ONIGERR_TYPE_BUG; + break; + } + + return r; +} + +static int +set_optimize_exact(regex_t* reg, OptStr* e) +{ + int r; + int allow_reverse; + + if (e->len == 0) return 0; + + reg->exact = (UChar* )xmalloc(e->len); + CHECK_NULL_RETURN_MEMERR(reg->exact); + xmemcpy(reg->exact, e->s, e->len); + reg->exact_end = reg->exact + e->len; + + allow_reverse = + ONIGENC_IS_ALLOWED_REVERSE_MATCH(reg->enc, reg->exact, reg->exact_end); + + if (e->len >= 2 || (e->len >= 1 && allow_reverse)) { + r = set_sunday_quick_search_or_bmh_skip_table(reg, 0, + reg->exact, reg->exact_end, + reg->map, &(reg->map_offset)); + if (r != 0) return r; + + reg->optimize = (allow_reverse != 0 + ? OPTIMIZE_STR_FAST + : OPTIMIZE_STR_FAST_STEP_FORWARD); + } + else { + reg->optimize = OPTIMIZE_STR; + } + + reg->dist_min = e->mm.min; + reg->dist_max = e->mm.max; + + if (reg->dist_min != INFINITE_LEN) { + int n = (int )(reg->exact_end - reg->exact); + reg->threshold_len = reg->dist_min + n; + } + + return 0; +} + +static void +set_optimize_map(regex_t* reg, OptMap* m) +{ + int i; + + for (i = 0; i < CHAR_MAP_SIZE; i++) + reg->map[i] = m->map[i]; + + reg->optimize = OPTIMIZE_MAP; + reg->dist_min = m->mm.min; + reg->dist_max = m->mm.max; + + if (reg->dist_min != INFINITE_LEN) { + reg->threshold_len = reg->dist_min + ONIGENC_MBC_MINLEN(reg->enc); + } +} + +static void +set_sub_anchor(regex_t* reg, OptAnc* anc) +{ + reg->sub_anchor |= anc->left & ANCR_BEGIN_LINE; + reg->sub_anchor |= anc->right & ANCR_END_LINE; +} + +#if defined(ONIG_DEBUG_COMPILE) || defined(ONIG_DEBUG_MATCH) +static void print_optimize_info(FILE* f, regex_t* reg); +#endif + +static int +set_optimize_info_from_tree(Node* node, regex_t* reg, ParseEnv* scan_env) +{ + int r; + OptNode opt; + OptEnv env; + + env.enc = reg->enc; + env.case_fold_flag = reg->case_fold_flag; + env.scan_env = scan_env; + mml_clear(&env.mm); + + r = optimize_nodes(node, &opt, &env); + if (r != 0) return r; + + reg->anchor = opt.anc.left & (ANCR_BEGIN_BUF | + ANCR_BEGIN_POSITION | ANCR_ANYCHAR_INF | ANCR_ANYCHAR_INF_ML | + ANCR_LOOK_BEHIND); + + if ((opt.anc.left & (ANCR_LOOK_BEHIND | ANCR_PREC_READ_NOT)) != 0) + reg->anchor &= ~ANCR_ANYCHAR_INF_ML; + + reg->anchor |= opt.anc.right & (ANCR_END_BUF | ANCR_SEMI_END_BUF | + ANCR_PREC_READ_NOT); + + if (reg->anchor & (ANCR_END_BUF | ANCR_SEMI_END_BUF)) { + reg->anc_dist_min = opt.len.min; + reg->anc_dist_max = opt.len.max; + } + + if (opt.sb.len > 0 || opt.sm.len > 0) { + select_opt_exact(reg->enc, &opt.sb, &opt.sm); + if (opt.map.value > 0 && comp_opt_exact_or_map(&opt.sb, &opt.map) > 0) { + goto set_map; + } + else { + r = set_optimize_exact(reg, &opt.sb); + set_sub_anchor(reg, &opt.sb.anc); + } + } + else if (opt.map.value > 0) { + set_map: + set_optimize_map(reg, &opt.map); + set_sub_anchor(reg, &opt.map.anc); + } + else { + reg->sub_anchor |= opt.anc.left & ANCR_BEGIN_LINE; + if (opt.len.max == 0) + reg->sub_anchor |= opt.anc.right & ANCR_END_LINE; + } + +#if defined(ONIG_DEBUG_COMPILE) || defined(ONIG_DEBUG_MATCH) + print_optimize_info(DBGFP, reg); +#endif + return r; +} +#endif /* ONIG_DONT_OPTIMIZE */ + +static void +clear_optimize_info(regex_t* reg) +{ + reg->optimize = OPTIMIZE_NONE; + reg->anchor = 0; + reg->anc_dist_min = 0; + reg->anc_dist_max = 0; + reg->sub_anchor = 0; + reg->exact_end = (UChar* )NULL; + reg->map_offset = 0; + reg->threshold_len = 0; + if (IS_NOT_NULL(reg->exact)) { + xfree(reg->exact); + reg->exact = (UChar* )NULL; + } +} + +#if defined(ONIG_DEBUG_PARSE) || defined(ONIG_DEBUG_MATCH) || \ + defined(ONIG_DEBUG_SEARCH) || defined(ONIG_DEBUG_COMPILE) + +static void +print_enc_string(FILE* fp, OnigEncoding enc, + const UChar *s, const UChar *end) +{ + if (ONIGENC_MBC_MINLEN(enc) > 1) { + const UChar *p; + OnigCodePoint code; + + p = s; + while (p < end) { + code = ONIGENC_MBC_TO_CODE(enc, p, end); + if (code >= 0x80) { + fprintf(fp, " 0x%04x ", (int )code); + } + else { + fputc((int )code, fp); + } + + p += enclen(enc, p); + } + } + else { + while (s < end) { + if (ONIGENC_MBC_MAXLEN(enc) == 1) { + if (*s >= 0x80) { + fprintf(fp, "\\x%02x", (unsigned int )*s); + } + else { + fputc((int )*s, fp); + } + } + else { /* for UTF-8 */ + fputc((int )*s, fp); + } + s++; + } + } +} + +static void +print_options(FILE* fp, OnigOptionType o) +{ + if ((o & ONIG_OPTION_IGNORECASE) != 0) fprintf(fp, " IGNORECASE"); + if ((o & ONIG_OPTION_EXTEND) != 0) fprintf(fp, " EXTEND"); + if ((o & ONIG_OPTION_MULTILINE) != 0) fprintf(fp, " MULTILINE"); + if ((o & ONIG_OPTION_SINGLELINE) != 0) fprintf(fp, " SINGLELINE"); + if ((o & ONIG_OPTION_FIND_LONGEST) != 0) fprintf(fp, " FIND_LONGEST"); + if ((o & ONIG_OPTION_FIND_NOT_EMPTY) != 0) fprintf(fp, " FIND_NOT_EMPTY"); + if ((o & ONIG_OPTION_NEGATE_SINGLELINE) != 0) fprintf(fp, " NEGATE_SINGLELINE"); + if ((o & ONIG_OPTION_DONT_CAPTURE_GROUP) != 0) fprintf(fp, " DONT_CAPTURE_GROUP"); + if ((o & ONIG_OPTION_CAPTURE_GROUP) != 0) fprintf(fp, " CAPTURE_GROUP"); + if ((o & ONIG_OPTION_NOTBOL) != 0) fprintf(fp, " NOTBOL"); + if ((o & ONIG_OPTION_NOTEOL) != 0) fprintf(fp, " NOTEOL"); + if ((o & ONIG_OPTION_POSIX_REGION) != 0) fprintf(fp, " POSIX_REGION"); + if ((o & ONIG_OPTION_CHECK_VALIDITY_OF_STRING) != 0) fprintf(fp, " CHECK_VALIDITY_OF_STRING"); + if ((o & ONIG_OPTION_IGNORECASE_IS_ASCII) != 0) fprintf(fp, " IGNORECASE_IS_ASCII"); + if ((o & ONIG_OPTION_WORD_IS_ASCII) != 0) fprintf(fp, " WORD_IS_ASCII"); + if ((o & ONIG_OPTION_DIGIT_IS_ASCII) != 0) fprintf(fp, " DIGIT_IS_ASCII"); + if ((o & ONIG_OPTION_SPACE_IS_ASCII) != 0) fprintf(fp, " SPACE_IS_ASCII"); + if ((o & ONIG_OPTION_POSIX_IS_ASCII) != 0) fprintf(fp, " POSIX_IS_ASCII"); + if ((o & ONIG_OPTION_TEXT_SEGMENT_EXTENDED_GRAPHEME_CLUSTER) != 0) fprintf(fp, " TEXT_SEGMENT_EXTENDED_GRAPHEME_CLUSTER"); + if ((o & ONIG_OPTION_TEXT_SEGMENT_WORD) != 0) fprintf(fp, " TEXT_SEGMENT_WORD"); + if ((o & ONIG_OPTION_NOT_BEGIN_STRING) != 0) fprintf(fp, " NOT_BIGIN_STRING"); + if ((o & ONIG_OPTION_NOT_END_STRING) != 0) fprintf(fp, " NOT_END_STRING"); + if ((o & ONIG_OPTION_NOT_BEGIN_POSITION) != 0) fprintf(fp, " NOT_BEGIN_POSITION"); + if ((o & ONIG_OPTION_CALLBACK_EACH_MATCH) != 0) fprintf(fp, " CALLBACK_EACH_MATCH"); +} + +#endif + +#if defined(ONIG_DEBUG_COMPILE) || defined(ONIG_DEBUG_MATCH) + +#ifndef ONIG_DONT_OPTIMIZE + +static void +print_distance_range(FILE* f, OnigLen a, OnigLen b) +{ + if (a == INFINITE_LEN) + fputs("inf", f); + else + fprintf(f, "(%u)", a); + + fputs("-", f); + + if (b == INFINITE_LEN) + fputs("inf", f); + else + fprintf(f, "(%u)", b); +} + +static void +print_anchor(FILE* f, int anchor) +{ + int q = 0; + + fprintf(f, "["); + + if (anchor & ANCR_BEGIN_BUF) { + fprintf(f, "begin-buf"); + q = 1; + } + if (anchor & ANCR_BEGIN_LINE) { + if (q) fprintf(f, ", "); + q = 1; + fprintf(f, "begin-line"); + } + if (anchor & ANCR_BEGIN_POSITION) { + if (q) fprintf(f, ", "); + q = 1; + fprintf(f, "begin-pos"); + } + if (anchor & ANCR_END_BUF) { + if (q) fprintf(f, ", "); + q = 1; + fprintf(f, "end-buf"); + } + if (anchor & ANCR_SEMI_END_BUF) { + if (q) fprintf(f, ", "); + q = 1; + fprintf(f, "semi-end-buf"); + } + if (anchor & ANCR_END_LINE) { + if (q) fprintf(f, ", "); + q = 1; + fprintf(f, "end-line"); + } + if (anchor & ANCR_ANYCHAR_INF) { + if (q) fprintf(f, ", "); + q = 1; + fprintf(f, "anychar-inf"); + } + if (anchor & ANCR_ANYCHAR_INF_ML) { + if (q) fprintf(f, ", "); + fprintf(f, "anychar-inf-ml"); + } + + fprintf(f, "]"); +} + +static void +print_optimize_info(FILE* f, regex_t* reg) +{ + static const char* on[] = + { "NONE", "STR", "STR_FAST", "STR_FAST_STEP_FORWARD", "MAP" }; + + fprintf(f, "optimize: %s\n", on[reg->optimize]); + fprintf(f, " anchor: "); print_anchor(f, reg->anchor); + if ((reg->anchor & ANCR_END_BUF_MASK) != 0) + print_distance_range(f, reg->anc_dist_min, reg->anc_dist_max); + fprintf(f, "\n"); + + if (reg->optimize) { + fprintf(f, " sub anchor: "); print_anchor(f, reg->sub_anchor); + fprintf(f, "\n"); + } + fprintf(f, "\n"); + + if (reg->exact) { + UChar *p; + fprintf(f, "exact: ["); + for (p = reg->exact; p < reg->exact_end; p++) { + fputc(*p, f); + } + fprintf(f, "]: length: %ld, dmin: %u, ", + (reg->exact_end - reg->exact), reg->dist_min); + if (reg->dist_max == INFINITE_LEN) + fprintf(f, "dmax: inf.\n"); + else + fprintf(f, "dmax: %u\n", reg->dist_max); + } + else if (reg->optimize & OPTIMIZE_MAP) { + int c, i, n = 0; + + for (i = 0; i < CHAR_MAP_SIZE; i++) + if (reg->map[i]) n++; + + fprintf(f, "map: n=%d, dmin: %u, dmax: %u\n", + n, reg->dist_min, reg->dist_max); + if (n > 0) { + c = 0; + fputc('[', f); + for (i = 0; i < CHAR_MAP_SIZE; i++) { + if (reg->map[i] != 0) { + if (c > 0) fputs(", ", f); + c++; + if (ONIGENC_MBC_MAXLEN(reg->enc) == 1 && + ONIGENC_IS_CODE_PRINT(reg->enc, (OnigCodePoint )i)) + fputc(i, f); + else + fprintf(f, "0x%02x", i); + } + } + fprintf(f, "]\n"); + } + } +} +#endif /* ONIG_DONT_OPTIMIZE */ +#endif /* defined(ONIG_DEBUG_COMPILE) || defined(ONIG_DEBUG_MATCH) */ + + +extern RegexExt* +onig_get_regex_ext(regex_t* reg) +{ + if (IS_NULL(reg->extp)) { + RegexExt* ext = (RegexExt* )xmalloc(sizeof(*ext)); + if (IS_NULL(ext)) return 0; + + ext->pattern = 0; + ext->pattern_end = 0; +#ifdef USE_CALLOUT + ext->tag_table = 0; + ext->callout_num = 0; + ext->callout_list_alloc = 0; + ext->callout_list = 0; +#endif + + reg->extp = ext; + } + + return reg->extp; +} + +static void +free_regex_ext(RegexExt* ext) +{ + if (IS_NOT_NULL(ext)) { + if (IS_NOT_NULL(ext->pattern)) + xfree((void* )ext->pattern); + +#ifdef USE_CALLOUT + if (IS_NOT_NULL(ext->tag_table)) + onig_callout_tag_table_free(ext->tag_table); + + if (IS_NOT_NULL(ext->callout_list)) + onig_free_reg_callout_list(ext->callout_num, ext->callout_list); +#endif + + xfree(ext); + } +} + +extern int +onig_ext_set_pattern(regex_t* reg, const UChar* pattern, const UChar* pattern_end) +{ + RegexExt* ext; + UChar* s; + + ext = onig_get_regex_ext(reg); + CHECK_NULL_RETURN_MEMERR(ext); + + s = onigenc_strdup(reg->enc, pattern, pattern_end); + CHECK_NULL_RETURN_MEMERR(s); + + ext->pattern = s; + ext->pattern_end = s + (pattern_end - pattern); + + return ONIG_NORMAL; +} + +extern void +onig_free_body(regex_t* reg) +{ + if (IS_NOT_NULL(reg)) { + ops_free(reg); + if (IS_NOT_NULL(reg->string_pool)) { + xfree(reg->string_pool); + reg->string_pool_end = reg->string_pool = 0; + } + if (IS_NOT_NULL(reg->exact)) xfree(reg->exact); + if (IS_NOT_NULL(reg->repeat_range)) xfree(reg->repeat_range); + if (IS_NOT_NULL(reg->extp)) { + free_regex_ext(reg->extp); + reg->extp = 0; + } + + onig_names_free(reg); + } +} + +extern void +onig_free(regex_t* reg) +{ + if (IS_NOT_NULL(reg)) { + onig_free_body(reg); + xfree(reg); + } +} + + +#ifdef ONIG_DEBUG_PARSE +static void print_tree P_((FILE* f, Node* node)); +#endif + +extern int onig_init_for_match_at(regex_t* reg); + +static int parse_and_tune(regex_t* reg, const UChar* pattern, + const UChar* pattern_end, ParseEnv *scan_env, Node** rroot, + OnigErrorInfo* einfo +#ifdef USE_CALL + , UnsetAddrList* uslist +#endif +) +{ + int r; + Node* root; + + root = NULL_NODE; + if (IS_NOT_NULL(einfo)) { + einfo->enc = reg->enc; + einfo->par = (UChar* )NULL; + } + + r = onig_parse_tree(&root, pattern, pattern_end, reg, scan_env); + if (r != 0) goto err; + +#ifdef USE_WHOLE_OPTIONS + if ((scan_env->flags & PE_FLAG_HAS_WHOLE_OPTIONS) != 0) { + r = check_whole_options_position(root, scan_env); + if (r != 0) goto err; + } +#endif + + r = reduce_string_list(root, reg->enc); + if (r != 0) goto err; + + /* mixed use named group and no-named group */ + if (scan_env->num_named > 0 && + IS_SYNTAX_BV(scan_env->syntax, ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP) && + ! OPTON_CAPTURE_GROUP(reg->options)) { + if (scan_env->num_named != scan_env->num_mem) + r = disable_noname_group_capture(&root, reg, scan_env); + else + r = numbered_ref_check(root); + + if (r != 0) goto err; + } + + r = check_backrefs(root, scan_env); + if (r != 0) goto err; + +#ifdef USE_CALL + if (scan_env->num_call > 0) { + r = unset_addr_list_init(uslist, scan_env->num_call); + if (r != 0) goto err; + scan_env->unset_addr_list = uslist; + r = tune_call(root, scan_env, 0); + if (r != 0) goto err_unset; + r = tune_call2(root); + if (r != 0) goto err_unset; + r = recursive_call_check_trav(root, scan_env, 0); + if (r < 0) goto err_unset; + r = infinite_recursive_call_check_trav(root, scan_env); + if (r != 0) goto err_unset; + + tune_called_state(root, 0); + } + + reg->num_call = scan_env->num_call; +#endif + +#ifdef ONIG_DEBUG_PARSE + fprintf(DBGFP, "MAX PARSE DEPTH: %d\n", scan_env->max_parse_depth); +#endif + + r = tune_tree(root, reg, 0, scan_env); + if (r != 0) { +#ifdef ONIG_DEBUG_PARSE + fprintf(DBGFP, "TREE (error in tune)\n"); + print_tree(DBGFP, root); + fprintf(DBGFP, "\n"); +#endif + goto err_unset; + } + + if (scan_env->backref_num != 0) { + set_parent_node_trav(root, NULL_NODE); + r = set_empty_repeat_node_trav(root, NULL_NODE, scan_env); + if (r != 0) goto err_unset; + set_empty_status_check_trav(root, scan_env); + } + + *rroot = root; + return r; + + err_unset: +#ifdef USE_CALL + if (scan_env->num_call > 0) { + unset_addr_list_end(uslist); + } +#endif + err: + if (IS_NOT_NULL(scan_env->error)) { + if (IS_NOT_NULL(einfo)) { + einfo->par = scan_env->error; + einfo->par_end = scan_env->error_end; + } + } + + onig_node_free(root); + if (IS_NOT_NULL(scan_env->mem_env_dynamic)) + xfree(scan_env->mem_env_dynamic); + + *rroot = NULL_NODE; + return r; +} + +extern int +onig_compile(regex_t* reg, const UChar* pattern, const UChar* pattern_end, + OnigErrorInfo* einfo) +{ + int r; + Node* root; + ParseEnv scan_env; +#ifdef USE_CALL + UnsetAddrList uslist = {0}; +#endif + +#if defined(ONIG_DEBUG_PARSE) || defined(ONIG_DEBUG_MATCH) || \ + defined(ONIG_DEBUG_SEARCH) || defined(ONIG_DEBUG_COMPILE) + fprintf(DBGFP, "\nPATTERN: /"); + print_enc_string(DBGFP, reg->enc, pattern, pattern_end); + fprintf(DBGFP, "/\n"); + fprintf(DBGFP, "OPTIONS:"); + print_options(DBGFP, reg->options); + fprintf(DBGFP, "\n"); +#endif + + if (reg->ops_alloc == 0) { + r = ops_init(reg, OPS_INIT_SIZE); + if (r != 0) { + if (IS_NOT_NULL(einfo)) { + einfo->enc = reg->enc; + einfo->par = (UChar* )NULL; + } + return r; + } + } + else + reg->ops_used = 0; + + r = parse_and_tune(reg, pattern, pattern_end, &scan_env, &root, einfo +#ifdef USE_CALL + , &uslist +#endif + ); + if (r != 0) return r; + +#ifdef ONIG_DEBUG_PARSE + fprintf(DBGFP, "TREE (after tune)\n"); + print_tree(DBGFP, root); + fprintf(DBGFP, "\n"); +#endif + + reg->capture_history = scan_env.cap_history; + reg->push_mem_start = scan_env.backtrack_mem | scan_env.cap_history; + +#ifdef USE_CALLOUT + if (IS_NOT_NULL(reg->extp) && reg->extp->callout_num != 0) { + reg->push_mem_end = reg->push_mem_start; + } + else { + if (MEM_STATUS_IS_ALL_ON(reg->push_mem_start)) + reg->push_mem_end = scan_env.backrefed_mem | scan_env.cap_history; + else + reg->push_mem_end = reg->push_mem_start & + (scan_env.backrefed_mem | scan_env.cap_history); + } +#else + if (MEM_STATUS_IS_ALL_ON(reg->push_mem_start)) + reg->push_mem_end = scan_env.backrefed_mem | scan_env.cap_history; + else + reg->push_mem_end = reg->push_mem_start & + (scan_env.backrefed_mem | scan_env.cap_history); +#endif + + clear_optimize_info(reg); +#ifndef ONIG_DONT_OPTIMIZE + r = set_optimize_info_from_tree(root, reg, &scan_env); + if (r != 0) { +#ifdef USE_CALL + if (scan_env.num_call > 0) { + unset_addr_list_end(&uslist); + } +#endif + goto err; + } +#endif + + if (IS_NOT_NULL(scan_env.mem_env_dynamic)) { + xfree(scan_env.mem_env_dynamic); + scan_env.mem_env_dynamic = (MemEnv* )NULL; + } + + r = compile_tree(root, reg, &scan_env); + if (r == 0) { + if (scan_env.keep_num > 0) { + r = add_op(reg, OP_UPDATE_VAR); + if (r != 0) goto err; + + COP(reg)->update_var.type = UPDATE_VAR_KEEP_FROM_STACK_LAST; + COP(reg)->update_var.id = 0; /* not used */ + COP(reg)->update_var.clear = FALSE; + } + + r = add_op(reg, OP_END); + if (r != 0) goto err; + +#ifdef USE_CALL + if (scan_env.num_call > 0) { + r = fix_unset_addr_list(&uslist, reg); + unset_addr_list_end(&uslist); + if (r != 0) goto err; + } +#endif + + r = ops_resize(reg, reg->ops_used); + if (r != ONIG_NORMAL) goto err; + + set_addr_in_repeat_range(reg); + + if ((reg->push_mem_end != 0) +#ifdef USE_REPEAT_AND_EMPTY_CHECK_LOCAL_VAR + || (reg->num_repeat != 0) + || (reg->num_empty_check != 0) +#endif +#ifdef USE_CALLOUT + || (IS_NOT_NULL(reg->extp) && reg->extp->callout_num != 0) +#endif +#ifdef USE_CALL + || scan_env.num_call > 0 +#endif + ) + reg->stack_pop_level = STACK_POP_LEVEL_ALL; + else { + if (reg->push_mem_start != 0) + reg->stack_pop_level = STACK_POP_LEVEL_MEM_START; + else + reg->stack_pop_level = STACK_POP_LEVEL_FREE; + } + + r = ops_make_string_pool(reg); + if (r != 0) goto err; + } +#ifdef USE_CALL + else if (scan_env.num_call > 0) { + unset_addr_list_end(&uslist); + } +#endif + onig_node_free(root); + +#ifdef ONIG_DEBUG_COMPILE + onig_print_names(DBGFP, reg); + onig_print_compiled_byte_code_list(DBGFP, reg); +#endif + +#ifdef USE_DIRECT_THREADED_CODE + /* opcode -> opaddr */ + onig_init_for_match_at(reg); +#endif + + return r; + + err: + if (IS_NOT_NULL(scan_env.error)) { + if (IS_NOT_NULL(einfo)) { + einfo->par = scan_env.error; + einfo->par_end = scan_env.error_end; + } + } + + onig_node_free(root); + if (IS_NOT_NULL(scan_env.mem_env_dynamic)) + xfree(scan_env.mem_env_dynamic); + return r; +} + + +static int onig_inited = 0; + +extern int +onig_reg_init(regex_t* reg, OnigOptionType option, OnigCaseFoldType case_fold_flag, + OnigEncoding enc, OnigSyntaxType* syntax) +{ + int r; + + xmemset(reg, 0, sizeof(*reg)); + + if (onig_inited == 0) { +#if 0 + return ONIGERR_LIBRARY_IS_NOT_INITIALIZED; +#else + r = onig_initialize(&enc, 1); + if (r != 0) + return ONIGERR_FAIL_TO_INITIALIZE; + + onig_warning("You didn't call onig_initialize() explicitly"); +#endif + } + + if (IS_NULL(reg)) + return ONIGERR_INVALID_ARGUMENT; + + if (ONIGENC_IS_UNDEF(enc)) + return ONIGERR_DEFAULT_ENCODING_IS_NOT_SET; + + if ((option & (ONIG_OPTION_DONT_CAPTURE_GROUP|ONIG_OPTION_CAPTURE_GROUP)) + == (ONIG_OPTION_DONT_CAPTURE_GROUP|ONIG_OPTION_CAPTURE_GROUP)) { + return ONIGERR_INVALID_COMBINATION_OF_OPTIONS; + } + + if ((option & ONIG_OPTION_NEGATE_SINGLELINE) != 0) { + option |= syntax->options; + option &= ~ONIG_OPTION_SINGLELINE; + } + else + option |= syntax->options; + + if ((option & ONIG_OPTION_IGNORECASE_IS_ASCII) != 0) { + case_fold_flag &= ~(INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR | + ONIGENC_CASE_FOLD_TURKISH_AZERI); + case_fold_flag |= ONIGENC_CASE_FOLD_ASCII_ONLY; + } + + (reg)->enc = enc; + (reg)->options = option; + (reg)->syntax = syntax; + (reg)->optimize = 0; + (reg)->exact = (UChar* )NULL; + (reg)->extp = (RegexExt* )NULL; + (reg)->ops = (Operation* )NULL; + (reg)->ops_curr = (Operation* )NULL; + (reg)->ops_used = 0; + (reg)->ops_alloc = 0; + (reg)->name_table = (void* )NULL; + (reg)->case_fold_flag = case_fold_flag; + return 0; +} + +extern int +onig_new_without_alloc(regex_t* reg, + const UChar* pattern, const UChar* pattern_end, + OnigOptionType option, OnigEncoding enc, + OnigSyntaxType* syntax, OnigErrorInfo* einfo) +{ + int r; + + r = onig_reg_init(reg, option, ONIGENC_CASE_FOLD_DEFAULT, enc, syntax); + if (r != 0) return r; + + r = onig_compile(reg, pattern, pattern_end, einfo); + return r; +} + +extern int +onig_new(regex_t** reg, const UChar* pattern, const UChar* pattern_end, + OnigOptionType option, OnigEncoding enc, OnigSyntaxType* syntax, + OnigErrorInfo* einfo) +{ + int r; + + *reg = (regex_t* )xmalloc(sizeof(regex_t)); + if (IS_NULL(*reg)) return ONIGERR_MEMORY; + + r = onig_reg_init(*reg, option, ONIGENC_CASE_FOLD_DEFAULT, enc, syntax); + if (r != 0) { + xfree(*reg); + *reg = NULL; + return r; + } + + r = onig_compile(*reg, pattern, pattern_end, einfo); + if (r != 0) { + onig_free(*reg); + *reg = NULL; + } + return r; +} + +extern int +onig_initialize(OnigEncoding encodings[], int n) +{ + int i; + int r; + + if (onig_inited != 0) + return 0; + + onigenc_init(); + + onig_inited = 1; + + for (i = 0; i < n; i++) { + OnigEncoding enc = encodings[i]; + r = onig_initialize_encoding(enc); + if (r != 0) + return r; + } + + return ONIG_NORMAL; +} + +typedef struct EndCallListItem { + struct EndCallListItem* next; + void (*func)(void); +} EndCallListItemType; + +static EndCallListItemType* EndCallTop; + +extern void onig_add_end_call(void (*func)(void)) +{ + EndCallListItemType* item; + + item = (EndCallListItemType* )xmalloc(sizeof(*item)); + if (item == 0) return ; + + item->next = EndCallTop; + item->func = func; + + EndCallTop = item; +} + +static void +exec_end_call_list(void) +{ + EndCallListItemType* prev; + void (*func)(void); + + while (EndCallTop != 0) { + func = EndCallTop->func; + (*func)(); + + prev = EndCallTop; + EndCallTop = EndCallTop->next; + xfree(prev); + } +} + +extern int +onig_end(void) +{ + exec_end_call_list(); + +#ifdef USE_CALLOUT + onig_global_callout_names_free(); +#endif + + onigenc_end(); + + onig_inited = 0; + + return 0; +} + +extern int +onig_is_in_code_range(const UChar* p, OnigCodePoint code) +{ + OnigCodePoint n, *data; + OnigCodePoint low, high, x; + + GET_CODE_POINT(n, p); + data = (OnigCodePoint* )p; + data++; + + for (low = 0, high = n; low < high; ) { + x = (low + high) >> 1; + if (code > data[x * 2 + 1]) + low = x + 1; + else + high = x; + } + + return ((low < n && code >= data[low * 2]) ? 1 : 0); +} + +extern int +onig_is_code_in_cc_len(int elen, OnigCodePoint code, /* CClassNode* */ void* cc_arg) +{ + int found; + CClassNode* cc = (CClassNode* )cc_arg; + + if (elen > 1 || (code >= SINGLE_BYTE_SIZE)) { + if (IS_NULL(cc->mbuf)) { + found = 0; + } + else { + found = onig_is_in_code_range(cc->mbuf->p, code) != 0; + } + } + else { + found = BITSET_AT(cc->bs, code) != 0; + } + + if (IS_NCCLASS_NOT(cc)) + return !found; + else + return found; +} + +extern int +onig_is_code_in_cc(OnigEncoding enc, OnigCodePoint code, CClassNode* cc) +{ + int len; + + if (ONIGENC_MBC_MINLEN(enc) > 1) { + len = 2; + } + else { + len = ONIGENC_CODE_TO_MBCLEN(enc, code); + if (len < 0) return 0; + } + return onig_is_code_in_cc_len(len, code, cc); +} + + +#define MANY_REPEAT_OF_ANYCHAR 20 + +typedef enum { + MJ_NO = 0, + MJ_YES = 1, + MJ_IGNORE = 2, +} MJ_RESULT; + +static MJ_RESULT +mostly_just_anychar(Node* node, int in_reluctant) +{ + MJ_RESULT r; + + r = MJ_NO; + switch (ND_TYPE(node)) { + case ND_LIST: + { + int found = FALSE; + do { + r = mostly_just_anychar(ND_CAR(node), in_reluctant); + if (r == MJ_NO) break; + if (r == MJ_YES) found = TRUE; + } while (IS_NOT_NULL(node = ND_CDR(node))); + if (r == MJ_IGNORE) { + if (found == TRUE) r = MJ_YES; + } + } + break; + + case ND_ALT: + r = MJ_IGNORE; + do { + r = mostly_just_anychar(ND_CAR(node), in_reluctant); + if (r == MJ_YES) break; + } while (IS_NOT_NULL(node = ND_CDR(node))); + break; + + case ND_QUANT: + { + QuantNode* qn = QUANT_(node); + + if (qn->upper == 0) + r = MJ_IGNORE; + else { + if (in_reluctant == FALSE) { + if (qn->greedy != 0 && + (! IS_INFINITE_REPEAT(qn->upper) && + qn->upper <= MANY_REPEAT_OF_ANYCHAR)) { + in_reluctant = TRUE; + } + } + r = mostly_just_anychar(ND_BODY(node), in_reluctant); + } + } + break; + + case ND_ANCHOR: + switch (ANCHOR_(node)->type) { + case ANCR_PREC_READ: + case ANCR_PREC_READ_NOT: + case ANCR_LOOK_BEHIND: + case ANCR_LOOK_BEHIND_NOT: + case ANCR_TEXT_SEGMENT_BOUNDARY: /* \y */ + r = MJ_IGNORE; + break; + default: + break; + } + break; + + case ND_BAG: + { + BagNode* en = BAG_(node); + + if (en->type == BAG_IF_ELSE) { + if (IS_NOT_NULL(en->te.Then)) { + r = mostly_just_anychar(en->te.Then, in_reluctant); + if (r == MJ_YES) break; + } + if (IS_NOT_NULL(en->te.Else)) { + r = mostly_just_anychar(en->te.Else, in_reluctant); + } + } + else { + r = mostly_just_anychar(ND_BODY(node), in_reluctant); + } + } + break; + + case ND_CTYPE: + if (CTYPE_(node)->ctype == CTYPE_ANYCHAR) + r = MJ_YES; + else + r = MJ_NO; + break; + + case ND_STRING: + if (ND_STRING_LEN(node) == 0) { + r = MJ_IGNORE; + break; + } + /* fall */ + case ND_CCLASS: + r = MJ_NO; + break; + +#ifdef USE_CALL + case ND_CALL: + /* ignore call */ +#endif + case ND_BACKREF: + case ND_GIMMICK: + r = MJ_IGNORE; + break; + + default: + break; + } + + return r; +} + +#define MAX_CALLS_IN_DETECT 10 + +typedef struct { + int prec_read; + int look_behind; + int backref; + int backref_with_level; + int call; + int is_keep; + int anychar_reluctant_many; + int empty_check_nest_level; + int max_empty_check_nest_level; + int heavy_element; +} SlowElementCount; + +static int +detect_can_be_slow(Node* node, SlowElementCount* ct, int ncall, int calls[]) +{ + int r; + + r = 0; + switch (ND_TYPE(node)) { + case ND_LIST: + case ND_ALT: + do { + r = detect_can_be_slow(ND_CAR(node), ct, ncall, calls); + if (r != 0) return r; + } while (IS_NOT_NULL(node = ND_CDR(node))); + break; + + case ND_QUANT: + { + QuantNode* qn; + Node* body; + int prev_heavy_element = 0; + + qn = QUANT_(node); + body = ND_BODY(node); + + if (qn->emptiness != BODY_IS_NOT_EMPTY) { + prev_heavy_element = ct->heavy_element; + ct->empty_check_nest_level++; + if (ct->empty_check_nest_level > ct->max_empty_check_nest_level) + ct->max_empty_check_nest_level = ct->empty_check_nest_level; + } + else if (IS_INFINITE_REPEAT(qn->upper) || qn->upper > 0) { + MJ_RESULT mr = mostly_just_anychar(body, (qn->greedy == 0)); + if (mr == MJ_YES) + ct->anychar_reluctant_many++; + } + + r = detect_can_be_slow(body, ct, ncall, calls); + + if (qn->emptiness != BODY_IS_NOT_EMPTY) { + if (ND_IS_INPEEK(node)) { + if (ct->empty_check_nest_level > 2) { + if (prev_heavy_element == ct->heavy_element) + ct->heavy_element++; + } + } + ct->empty_check_nest_level--; + } + } + break; + + case ND_ANCHOR: + switch (ANCHOR_(node)->type) { + case ANCR_PREC_READ: + case ANCR_PREC_READ_NOT: + ct->prec_read++; + break; + case ANCR_LOOK_BEHIND: + case ANCR_LOOK_BEHIND_NOT: + ct->look_behind++; + break; + default: + break; + } + + if (ANCHOR_HAS_BODY(ANCHOR_(node))) + r = detect_can_be_slow(ND_BODY(node), ct, ncall, calls); + break; + + case ND_BAG: + { + BagNode* en = BAG_(node); + + r = detect_can_be_slow(ND_BODY(node), ct, ncall, calls); + if (r != 0) return r; + + if (en->type == BAG_IF_ELSE) { + if (IS_NOT_NULL(en->te.Then)) { + r = detect_can_be_slow(en->te.Then, ct, ncall, calls); + if (r != 0) return r; + } + if (IS_NOT_NULL(en->te.Else)) { + r = detect_can_be_slow(en->te.Else, ct, ncall, calls); + if (r != 0) return r; + } + } + } + break; + +#ifdef USE_BACKREF_WITH_LEVEL + case ND_BACKREF: + if (ND_IS_NEST_LEVEL(node)) + ct->heavy_element++; + else + ct->backref++; + break; +#endif + +#ifdef USE_CALL + case ND_CALL: + { + int i; + int found; + int gnum; + + gnum = CALL_(node)->called_gnum; + ct->call++; + + if (ND_IS_RECURSION(node) && ND_IS_INPEEK(node) && + ND_IS_IN_REAL_REPEAT(node)) { + ct->heavy_element += 10; + } + + found = FALSE; + for (i = 0; i < ncall; i++) { + if (gnum == calls[i]) { + found = TRUE; + break; + } + } + + if (! found) { + if (ncall + 1 < MAX_CALLS_IN_DETECT) { + calls[ncall] = gnum; + r = detect_can_be_slow(ND_BODY(node), ct, ncall + 1, calls); + } + else { + ct->heavy_element++; + } + } + } + break; +#endif + case ND_GIMMICK: + { + GimmickNode* g = GIMMICK_(node); + if (g->type == GIMMICK_SAVE && g->detail_type == SAVE_KEEP) + ct->is_keep = TRUE; + } + break; + + default: + break; + } + + return r; +} + +extern int +onig_detect_can_be_slow_pattern(const UChar* pattern, + const UChar* pattern_end, OnigOptionType option, OnigEncoding enc, + OnigSyntaxType* syntax) +{ + int r; + regex_t* reg; + Node* root; + ParseEnv scan_env; + SlowElementCount count; + int calls[MAX_CALLS_IN_DETECT]; +#ifdef USE_CALL + UnsetAddrList uslist = {0}; +#endif + + reg = (regex_t* )xmalloc(sizeof(regex_t)); + if (IS_NULL(reg)) return ONIGERR_MEMORY; + + r = onig_reg_init(reg, option, ONIGENC_CASE_FOLD_DEFAULT, enc, syntax); + if (r != 0) { + xfree(reg); + return r; + } + + r = parse_and_tune(reg, pattern, pattern_end, &scan_env, &root, NULL +#ifdef USE_CALL + , &uslist +#endif + ); + if (r != 0) goto err; + +#ifdef USE_CALL + if (scan_env.num_call > 0) { + unset_addr_list_end(&uslist); + } +#endif + + count.prec_read = 0; + count.look_behind = 0; + count.backref = 0; + count.backref_with_level = 0; + count.call = 0; + count.is_keep = FALSE; + count.anychar_reluctant_many = 0; + count.empty_check_nest_level = 0; + count.max_empty_check_nest_level = 0; + count.heavy_element = 0; + + r = detect_can_be_slow(root, &count, 0, calls); + if (r == 0) { + int n; + + n = count.prec_read + count.look_behind + + count.backref + count.backref_with_level + count.call + + count.anychar_reluctant_many; + + if (count.is_keep) count.max_empty_check_nest_level++; + + if (count.max_empty_check_nest_level > 2) + n += count.max_empty_check_nest_level - 2; + if (count.heavy_element != 0) { + if (count.heavy_element < 0x10000) + n += count.heavy_element << 8; + else + n += count.heavy_element; + } + + r = n; + +#ifdef ONIG_DEBUG_PARSE + fprintf(DBGFP, "-- detect can be slow --\n"); + fprintf(DBGFP, " prec_read: %d\n", count.prec_read); + fprintf(DBGFP, " look_behind: %d\n", count.look_behind); + fprintf(DBGFP, " backref: %d\n", count.backref); + fprintf(DBGFP, " backref_with_level: %d\n", count.backref_with_level); + fprintf(DBGFP, " call: %d\n", count.call); + fprintf(DBGFP, " is_keep: %d\n", count.is_keep); + fprintf(DBGFP, " any_reluctant_many: %d\n", count.anychar_reluctant_many); + fprintf(DBGFP, " max_empty_check_nest_level: %d\n", count.max_empty_check_nest_level); + fprintf(DBGFP, " heavy_element: %d\n", count.heavy_element); + fprintf(DBGFP, " r: %d\n", r); + fprintf(DBGFP, "\n"); +#endif + } + + if (IS_NOT_NULL(scan_env.mem_env_dynamic)) + xfree(scan_env.mem_env_dynamic); + + err: + onig_node_free(root); + onig_free(reg); + return r; +} + + +#ifdef ONIG_DEBUG_PARSE + +#ifdef USE_CALL +static void +p_string(FILE* f, int len, UChar* s) +{ + fputs(":", f); + while (len-- > 0) { fputc(*s++, f); } +} +#endif + +static void +Indent(FILE* f, int indent) +{ + int i; + for (i = 0; i < indent; i++) putc(' ', f); +} + +static void +print_indent_tree(FILE* f, Node* node, int indent) +{ + static char* emptiness_name[] = { "", " empty", " empty_mem", " empty_rec" }; + + int i; + NodeType type; + UChar* p; + int add = 3; + + Indent(f, indent); + if (IS_NULL(node)) { + fprintf(f, "ERROR: null node!!!\n"); + exit(0); + } + + type = ND_TYPE(node); + switch (type) { + case ND_LIST: + case ND_ALT: + if (type == ND_LIST) + fprintf(f, "\n", node); + else + fprintf(f, "\n", node); + + print_indent_tree(f, ND_CAR(node), indent + add); + while (IS_NOT_NULL(node = ND_CDR(node))) { + if (ND_TYPE(node) != type) { + fprintf(f, "ERROR: list/alt right is not a cons. %d\n", ND_TYPE(node)); + exit(0); + } + print_indent_tree(f, ND_CAR(node), indent + add); + } + break; + + case ND_STRING: + { + char* str; + char* mode; + + if (ND_STRING_IS_CRUDE(node)) + mode = "-crude"; + else if (ND_IS_IGNORECASE(node)) + mode = "-ignorecase"; + else + mode = ""; + + if (STR_(node)->s == STR_(node)->end) + str = "empty-string"; + else + str = "string"; + + fprintf(f, "<%s%s:%p>", str, mode, node); + for (p = STR_(node)->s; p < STR_(node)->end; p++) { + if (*p >= 0x20 && *p < 0x7f) + fputc(*p, f); + else { + fprintf(f, " 0x%02x", *p); + } + } + } + break; + + case ND_CCLASS: +#define CCLASS_MBUF_MAX_OUTPUT_NUM 10 + + fprintf(f, "", node); + if (IS_NCCLASS_NOT(CCLASS_(node))) fputs(" not", f); + if (CCLASS_(node)->mbuf) { + BBuf* bbuf = CCLASS_(node)->mbuf; + fprintf(f, " mbuf(%u) ", bbuf->used); + for (i = 0; i < bbuf->used && i < CCLASS_MBUF_MAX_OUTPUT_NUM; i++) { + if (i > 0) fprintf(f, ","); + fprintf(f, "%0x", bbuf->p[i]); + } + if (i < bbuf->used) fprintf(f, "..."); + } + break; + + case ND_CTYPE: + fprintf(f, " ", node); + switch (CTYPE_(node)->ctype) { + case CTYPE_ANYCHAR: + fprintf(f, "anychar"); + break; + + case ONIGENC_CTYPE_WORD: + if (CTYPE_(node)->not != 0) + fputs("not word", f); + else + fputs("word", f); + + if (CTYPE_(node)->ascii_mode != 0) + fputs(" (ascii)", f); + + break; + + default: + fprintf(f, "ERROR: undefined ctype.\n"); + exit(0); + } + break; + + case ND_ANCHOR: + fprintf(f, " ", node); + switch (ANCHOR_(node)->type) { + case ANCR_BEGIN_BUF: fputs("begin buf", f); break; + case ANCR_END_BUF: fputs("end buf", f); break; + case ANCR_BEGIN_LINE: fputs("begin line", f); break; + case ANCR_END_LINE: fputs("end line", f); break; + case ANCR_SEMI_END_BUF: fputs("semi end buf", f); break; + case ANCR_BEGIN_POSITION: fputs("begin position", f); break; + + case ANCR_WORD_BOUNDARY: fputs("word boundary", f); break; + case ANCR_NO_WORD_BOUNDARY: fputs("not word boundary", f); break; +#ifdef USE_WORD_BEGIN_END + case ANCR_WORD_BEGIN: fputs("word begin", f); break; + case ANCR_WORD_END: fputs("word end", f); break; +#endif + case ANCR_TEXT_SEGMENT_BOUNDARY: + fputs("text-segment boundary", f); break; + case ANCR_NO_TEXT_SEGMENT_BOUNDARY: + fputs("no text-segment boundary", f); break; + case ANCR_PREC_READ: + fprintf(f, "prec read\n"); + print_indent_tree(f, ND_BODY(node), indent + add); + break; + case ANCR_PREC_READ_NOT: + fprintf(f, "prec read not\n"); + print_indent_tree(f, ND_BODY(node), indent + add); + break; + case ANCR_LOOK_BEHIND: + fprintf(f, "look behind\n"); + print_indent_tree(f, ND_BODY(node), indent + add); + break; + case ANCR_LOOK_BEHIND_NOT: + fprintf(f, "look behind not\n"); + print_indent_tree(f, ND_BODY(node), indent + add); + break; + + default: + fprintf(f, "ERROR: undefined anchor type.\n"); + break; + } + break; + + case ND_BACKREF: + { + int* p; + BackRefNode* br = BACKREF_(node); + p = BACKREFS_P(br); + fprintf(f, "", ND_IS_CHECKER(node) ? "-checker" : "", node); + for (i = 0; i < br->back_num; i++) { + if (i > 0) fputs(", ", f); + fprintf(f, "%d", p[i]); + } +#ifdef USE_BACKREF_WITH_LEVEL + if (ND_IS_NEST_LEVEL(node)) { + fprintf(f, ", level: %d", br->nest_level); + } +#endif + } + break; + +#ifdef USE_CALL + case ND_CALL: + { + CallNode* cn = CALL_(node); + fprintf(f, "", node); + fprintf(f, " num: %d, name", cn->called_gnum); + p_string(f, cn->name_end - cn->name, cn->name); + if (ND_IS_RECURSION(node)) fprintf(f, ", recursion"); + if (ND_IS_INPEEK(node)) fprintf(f, ", in-peek"); + if (ND_IS_IN_REAL_REPEAT(node)) fprintf(f, ", in-real-repeat"); + } + break; +#endif + + case ND_QUANT: + { + fprintf(f, "{%d,%d}%s%s%s", node, + QUANT_(node)->lower, QUANT_(node)->upper, + (QUANT_(node)->greedy ? "" : "?"), + QUANT_(node)->include_referred == 0 ? "" : " referred", + emptiness_name[QUANT_(node)->emptiness]); + if (ND_IS_INPEEK(node)) fprintf(f, ", in-peek"); + fprintf(f, "\n"); + print_indent_tree(f, ND_BODY(node), indent + add); + } + break; + + case ND_BAG: + { + BagNode* bn = BAG_(node); + fprintf(f, " ", node); + if (bn->type == BAG_IF_ELSE) { + Node* Then; + Node* Else; + + fprintf(f, "if-else\n"); + print_indent_tree(f, ND_BODY(node), indent + add); + + Then = bn->te.Then; + Else = bn->te.Else; + if (IS_NULL(Then)) { + Indent(f, indent + add); + fprintf(f, "THEN empty\n"); + } + else + print_indent_tree(f, Then, indent + add); + + if (IS_NULL(Else)) { + Indent(f, indent + add); + fprintf(f, "ELSE empty\n"); + } + else + print_indent_tree(f, Else, indent + add); + } + else { + switch (bn->type) { + case BAG_OPTION: + fprintf(f, "option:%d", bn->o.options); + break; + case BAG_MEMORY: + fprintf(f, "memory:%d", bn->m.regnum); + if (ND_IS_CALLED(node)) { + fprintf(f, ", called"); + if (ND_IS_RECURSION(node)) + fprintf(f, ", recursion"); + } + else if (ND_IS_REFERENCED(node)) + fprintf(f, ", referenced"); + + if (ND_IS_FIXED_ADDR(node)) + fprintf(f, ", fixed-addr"); + if ((bn->m.called_state & IN_PEEK) != 0) + fprintf(f, ", in-peek"); + break; + case BAG_STOP_BACKTRACK: + fprintf(f, "stop-bt"); + break; + default: + break; + } + fprintf(f, "\n"); + print_indent_tree(f, ND_BODY(node), indent + add); + } + } + break; + + case ND_GIMMICK: + fprintf(f, " ", node); + switch (GIMMICK_(node)->type) { + case GIMMICK_FAIL: + fprintf(f, "fail"); + break; + case GIMMICK_SAVE: + fprintf(f, "save:%d:%d", GIMMICK_(node)->detail_type, GIMMICK_(node)->id); + break; + case GIMMICK_UPDATE_VAR: + fprintf(f, "update_var:%d:%d", GIMMICK_(node)->detail_type, GIMMICK_(node)->id); + break; +#ifdef USE_CALLOUT + case GIMMICK_CALLOUT: + switch (GIMMICK_(node)->detail_type) { + case ONIG_CALLOUT_OF_CONTENTS: + fprintf(f, "callout:contents:%d", GIMMICK_(node)->num); + break; + case ONIG_CALLOUT_OF_NAME: + fprintf(f, "callout:name:%d:%d", GIMMICK_(node)->id, GIMMICK_(node)->num); + break; + } +#endif + } + break; + + default: + fprintf(f, "print_indent_tree: undefined node type %d\n", ND_TYPE(node)); + break; + } + + if (type != ND_LIST && type != ND_ALT && type != ND_QUANT && + type != ND_BAG) + fprintf(f, "\n"); + fflush(f); +} + +static void +print_tree(FILE* f, Node* node) +{ + print_indent_tree(f, node, 0); +} +#endif diff --git a/vendor/onig/regenc.c b/vendor/oniguruma/oniguruma/src/regenc.c similarity index 68% rename from vendor/onig/regenc.c rename to vendor/oniguruma/oniguruma/src/regenc.c index 16d62fd..84afd1e 100644 --- a/vendor/onig/regenc.c +++ b/vendor/oniguruma/oniguruma/src/regenc.c @@ -1,9 +1,8 @@ /********************************************************************** - regenc.c - Onigmo (Oniguruma-mod) (regular expression library) + regenc.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2007 K.Kosako - * Copyright (c) 2011-2016 K.Takata + * Copyright (c) 2002-2020 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -30,11 +29,106 @@ #include "regint.h" +#define LARGE_S 0x53 +#define SMALL_S 0x73 + OnigEncoding OnigEncDefaultCharEncoding = ONIG_ENCODING_INIT_DEFAULT; +#define INITED_LIST_SIZE 20 + +static int InitedListNum; + +static struct { + OnigEncoding enc; + int inited; +} InitedList[INITED_LIST_SIZE]; + +static int +enc_inited_entry(OnigEncoding enc) +{ + int i; + + for (i = 0; i < InitedListNum; i++) { + if (InitedList[i].enc == enc) { + InitedList[i].inited = 1; + return i; + } + } + + i = InitedListNum; + if (i < INITED_LIST_SIZE - 1) { + InitedList[i].enc = enc; + InitedList[i].inited = 1; + InitedListNum++; + return i; + } + + return -1; +} + +static int +enc_is_inited(OnigEncoding enc) +{ + int i; + + for (i = 0; i < InitedListNum; i++) { + if (InitedList[i].enc == enc) { + return InitedList[i].inited; + } + } + + return 0; +} + +static int OnigEncInited; + extern int onigenc_init(void) { + if (OnigEncInited != 0) return 0; + + OnigEncInited = 1; + return 0; +} + +extern int +onigenc_end(void) +{ + int i; + + for (i = 0; i < InitedListNum; i++) { + InitedList[i].enc = 0; + InitedList[i].inited = 0; + } + InitedListNum = 0; + + OnigEncInited = 0; + return ONIG_NORMAL; +} + +extern int +onig_initialize_encoding(OnigEncoding enc) +{ + int r; + + if (enc != ONIG_ENCODING_ASCII && + ONIGENC_IS_ASCII_COMPATIBLE_ENCODING(enc)) { + OnigEncoding ascii = ONIG_ENCODING_ASCII; + if (ascii->init != 0 && enc_is_inited(ascii) == 0) { + r = ascii->init(); + if (r != ONIG_NORMAL) return r; + enc_inited_entry(ascii); + } + } + + if (enc->init != 0 && + enc_is_inited(enc) == 0) { + r = (enc->init)(); + if (r == ONIG_NORMAL) + enc_inited_entry(enc); + return r; + } + return 0; } @@ -51,60 +145,69 @@ onigenc_set_default_encoding(OnigEncoding enc) return 0; } -extern int -onigenc_mbclen_approximate(const OnigUChar* p,const OnigUChar* e, OnigEncoding enc) +extern UChar* +onigenc_strdup(OnigEncoding enc, const UChar* s, const UChar* end) { - int ret = ONIGENC_PRECISE_MBC_ENC_LEN(enc, p, e); - if (ONIGENC_MBCLEN_CHARFOUND_P(ret)) - return ONIGENC_MBCLEN_CHARFOUND_LEN(ret); - else if (ONIGENC_MBCLEN_NEEDMORE_P(ret)) - return (int )(e - p) + ONIGENC_MBCLEN_NEEDMORE_LEN(ret); - return 1; + int slen, term_len, i; + UChar *r; + + slen = (int )(end - s); + term_len = ONIGENC_MBC_MINLEN(enc); + + r = (UChar* )xmalloc(slen + term_len); + CHECK_NULL_RETURN(r); + xmemcpy(r, s, slen); + + for (i = 0; i < term_len; i++) + r[slen + i] = (UChar )0; + + return r; } extern UChar* -onigenc_get_right_adjust_char_head(OnigEncoding enc, const UChar* start, const UChar* s, const UChar* end) +onigenc_get_right_adjust_char_head(OnigEncoding enc, const UChar* start, const UChar* s) { - UChar* p = ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc, start, s, end); + UChar* p = ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc, start, s); if (p < s) { - p += enclen(enc, p, end); + p += enclen(enc, p); } return p; } extern UChar* onigenc_get_right_adjust_char_head_with_prev(OnigEncoding enc, - const UChar* start, const UChar* s, const UChar* end, const UChar** prev) + const UChar* start, const UChar* s, const UChar** prev) { - UChar* p = ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc, start, s, end); + UChar* p = ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc, start, s); if (p < s) { if (prev) *prev = (const UChar* )p; - p += enclen(enc, p, end); + p += enclen(enc, p); } else { - if (prev) *prev = (const UChar* )NULL; /* Sorry */ + if (prev) + *prev = onigenc_get_prev_char_head(enc, start, p); } return p; } extern UChar* -onigenc_get_prev_char_head(OnigEncoding enc, const UChar* start, const UChar* s, const UChar* end) +onigenc_get_prev_char_head(OnigEncoding enc, const UChar* start, const UChar* s) { if (s <= start) return (UChar* )NULL; - return ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc, start, s - 1, end); + return ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc, start, s - 1); } extern UChar* -onigenc_step_back(OnigEncoding enc, const UChar* start, const UChar* s, const UChar* end, int n) +onigenc_step_back(OnigEncoding enc, const UChar* start, const UChar* s, int n) { while (ONIG_IS_NOT_NULL(s) && n-- > 0) { if (s <= start) return (UChar* )NULL; - s = ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc, start, s - 1, end); + s = ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc, start, s - 1); } return (UChar* )s; } @@ -114,7 +217,7 @@ onigenc_step(OnigEncoding enc, const UChar* p, const UChar* end, int n) { UChar* q = (UChar* )p; while (n-- > 0) { - q += ONIGENC_MBC_ENC_LEN(enc, q, end); + q += ONIGENC_MBC_ENC_LEN(enc, q); } return (q <= end ? q : NULL); } @@ -126,7 +229,7 @@ onigenc_strlen(OnigEncoding enc, const UChar* p, const UChar* end) UChar* q = (UChar* )p; while (q < end) { - q += ONIGENC_MBC_ENC_LEN(enc, q, end); + q += ONIGENC_MBC_ENC_LEN(enc, q); n++; } return n; @@ -137,7 +240,6 @@ onigenc_strlen_null(OnigEncoding enc, const UChar* s) { int n = 0; UChar* p = (UChar* )s; - UChar* e; while (1) { if (*p == '\0') { @@ -153,8 +255,7 @@ onigenc_strlen_null(OnigEncoding enc, const UChar* s) } if (len == 1) return n; } - e = p + ONIGENC_MBC_MAXLEN(enc); - p += ONIGENC_MBC_ENC_LEN(enc, p, e); + p += ONIGENC_MBC_ENC_LEN(enc, p); n++; } } @@ -162,13 +263,12 @@ onigenc_strlen_null(OnigEncoding enc, const UChar* s) extern int onigenc_str_bytelen_null(OnigEncoding enc, const UChar* s) { - UChar* start = (UChar* )s; - UChar* p = (UChar* )s; - UChar* e; + const UChar* start = s; + const UChar* p = s; while (1) { if (*p == '\0') { - UChar* q; + const UChar* q; int len = ONIGENC_MBC_MINLEN(enc); if (len == 1) return (int )(p - start); @@ -180,8 +280,7 @@ onigenc_str_bytelen_null(OnigEncoding enc, const UChar* s) } if (len == 1) return (int )(p - start); } - e = p + ONIGENC_MBC_MAXLEN(enc); - p += ONIGENC_MBC_ENC_LEN(enc, p, e); + p += ONIGENC_MBC_ENC_LEN(enc, p); } } @@ -364,19 +463,17 @@ const UChar OnigEncISO_8859_1_ToUpperCaseTable[256] = { }; #endif -#if 0 extern void onigenc_set_default_caseconv_table(const UChar* table ARG_UNUSED) { /* nothing */ /* obsoleted. */ } -#endif extern UChar* -onigenc_get_left_adjust_char_head(OnigEncoding enc, const UChar* start, const UChar* s, const UChar* end) +onigenc_get_left_adjust_char_head(OnigEncoding enc, const UChar* start, const UChar* s) { - return ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc, start, s, end); + return ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc, start, s); } const OnigPairCaseFoldCodes OnigAsciiLowerMap[] = { @@ -410,13 +507,14 @@ const OnigPairCaseFoldCodes OnigAsciiLowerMap[] = { extern int onigenc_ascii_apply_all_case_fold(OnigCaseFoldType flag ARG_UNUSED, - OnigApplyAllCaseFoldFunc f, void* arg, - OnigEncoding enc ARG_UNUSED) + OnigApplyAllCaseFoldFunc f, void* arg) { OnigCodePoint code; int i, r; - for (i = 0; i < numberof(OnigAsciiLowerMap); i++) { + for (i = 0; + i < (int )(sizeof(OnigAsciiLowerMap)/sizeof(OnigPairCaseFoldCodes)); + i++) { code = OnigAsciiLowerMap[i].to; r = (*f)(OnigAsciiLowerMap[i].from, &code, 1, arg); if (r != 0) return r; @@ -431,8 +529,8 @@ onigenc_ascii_apply_all_case_fold(OnigCaseFoldType flag ARG_UNUSED, extern int onigenc_ascii_get_case_fold_codes_by_str(OnigCaseFoldType flag ARG_UNUSED, - const OnigUChar* p, const OnigUChar* end ARG_UNUSED, - OnigCaseFoldCodeItem items[], OnigEncoding enc ARG_UNUSED) + const OnigUChar* p, const OnigUChar* end ARG_UNUSED, + OnigCaseFoldCodeItem items[]) { if (0x41 <= *p && *p <= 0x5a) { items[0].byte_len = 1; @@ -452,9 +550,9 @@ onigenc_ascii_get_case_fold_codes_by_str(OnigCaseFoldType flag ARG_UNUSED, static int ss_apply_all_case_fold(OnigCaseFoldType flag ARG_UNUSED, - OnigApplyAllCaseFoldFunc f, void* arg) + OnigApplyAllCaseFoldFunc f, void* arg) { - OnigCodePoint ss[] = { 0x73, 0x73 }; + static OnigCodePoint ss[] = { SMALL_S, SMALL_S }; return (*f)((OnigCodePoint )0xdf, ss, 2, arg); } @@ -468,9 +566,12 @@ onigenc_apply_all_case_fold_with_map(int map_size, OnigCodePoint code; int i, r; - r = onigenc_ascii_apply_all_case_fold(flag, f, arg, 0); + r = onigenc_ascii_apply_all_case_fold(flag, f, arg); if (r != 0) return r; + if (CASE_FOLD_IS_ASCII_ONLY(flag)) + return 0; + for (i = 0; i < map_size; i++) { code = map[i].to; r = (*f)(map[i].from, &code, 1, arg); @@ -490,40 +591,56 @@ onigenc_apply_all_case_fold_with_map(int map_size, extern int onigenc_get_case_fold_codes_by_str_with_map(int map_size, const OnigPairCaseFoldCodes map[], - int ess_tsett_flag, OnigCaseFoldType flag ARG_UNUSED, + int ess_tsett_flag, OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]) { - if (0x41 <= *p && *p <= 0x5a) { + int i, j, n; + static OnigUChar sa[] = { LARGE_S, SMALL_S }; + + if (0x41 <= *p && *p <= 0x5a) { /* A - Z */ + if (*p == LARGE_S && ess_tsett_flag != 0 && end > p + 1 + && (*(p+1) == LARGE_S || *(p+1) == SMALL_S) /* SS */ + && CASE_FOLD_IS_NOT_ASCII_ONLY(flag)) { + ss_combination: + items[0].byte_len = 2; + items[0].code_len = 1; + items[0].code[0] = (OnigCodePoint )0xdf; + + n = 1; + for (i = 0; i < 2; i++) { + for (j = 0; j < 2; j++) { + if (sa[i] == *p && sa[j] == *(p+1)) + continue; + + items[n].byte_len = 2; + items[n].code_len = 2; + items[n].code[0] = (OnigCodePoint )sa[i]; + items[n].code[1] = (OnigCodePoint )sa[j]; + n++; + } + } + return 4; + } + items[0].byte_len = 1; items[0].code_len = 1; items[0].code[0] = (OnigCodePoint )(*p + 0x20); - if (*p == 0x53 && ess_tsett_flag != 0 && end > p + 1 - && (*(p+1) == 0x53 || *(p+1) == 0x73)) { - /* SS */ - items[1].byte_len = 2; - items[1].code_len = 1; - items[1].code[0] = (OnigCodePoint )0xdf; - return 2; - } - else - return 1; + return 1; } - else if (0x61 <= *p && *p <= 0x7a) { + else if (0x61 <= *p && *p <= 0x7a) { /* a - z */ + if (*p == SMALL_S && ess_tsett_flag != 0 && end > p + 1 + && (*(p+1) == SMALL_S || *(p+1) == LARGE_S) + && CASE_FOLD_IS_NOT_ASCII_ONLY(flag)) { + goto ss_combination; + } + items[0].byte_len = 1; items[0].code_len = 1; items[0].code[0] = (OnigCodePoint )(*p - 0x20); - if (*p == 0x73 && ess_tsett_flag != 0 && end > p + 1 - && (*(p+1) == 0x73 || *(p+1) == 0x53)) { - /* ss */ - items[1].byte_len = 2; - items[1].code_len = 1; - items[1].code[0] = (OnigCodePoint )0xdf; - return 2; - } - else - return 1; + return 1; } - else if (*p == 0xdf && ess_tsett_flag != 0) { + else if (*p == 0xdf && ess_tsett_flag != 0 + && CASE_FOLD_IS_NOT_ASCII_ONLY(flag)) { items[0].byte_len = 1; items[0].code_len = 2; items[0].code[0] = (OnigCodePoint )'s'; @@ -549,18 +666,21 @@ onigenc_get_case_fold_codes_by_str_with_map(int map_size, else { int i; + if (CASE_FOLD_IS_ASCII_ONLY(flag)) + return 0; + for (i = 0; i < map_size; i++) { if (*p == map[i].from) { - items[0].byte_len = 1; - items[0].code_len = 1; - items[0].code[0] = map[i].to; - return 1; + items[0].byte_len = 1; + items[0].code_len = 1; + items[0].code[0] = map[i].to; + return 1; } else if (*p == map[i].to) { - items[0].byte_len = 1; - items[0].code_len = 1; - items[0].code[0] = map[i].from; - return 1; + items[0].byte_len = 1; + items[0].code_len = 1; + items[0].code[0] = map[i].from; + return 1; } } } @@ -571,18 +691,17 @@ onigenc_get_case_fold_codes_by_str_with_map(int map_size, extern int onigenc_not_support_get_ctype_code_range(OnigCtype ctype ARG_UNUSED, - OnigCodePoint* sb_out ARG_UNUSED, - const OnigCodePoint* ranges[] ARG_UNUSED, - OnigEncoding enc) + OnigCodePoint* sb_out ARG_UNUSED, + const OnigCodePoint* ranges[] ARG_UNUSED) { return ONIG_NO_SUPPORT_CONFIG; } extern int -onigenc_is_mbc_newline_0x0a(const UChar* p, const UChar* end, OnigEncoding enc ARG_UNUSED) +onigenc_is_mbc_newline_0x0a(const UChar* p, const UChar* end) { if (p < end) { - if (*p == 0x0a) return 1; + if (*p == NEWLINE_CODE) return 1; } return 0; } @@ -590,7 +709,7 @@ onigenc_is_mbc_newline_0x0a(const UChar* p, const UChar* end, OnigEncoding enc A /* for single byte encodings */ extern int onigenc_ascii_mbc_case_fold(OnigCaseFoldType flag ARG_UNUSED, const UChar** p, - const UChar* end, UChar* lower, OnigEncoding enc ARG_UNUSED) + const UChar*end ARG_UNUSED, UChar* lower) { *lower = ONIGENC_ASCII_CODE_TO_LOWER_CASE(**p); @@ -598,82 +717,77 @@ onigenc_ascii_mbc_case_fold(OnigCaseFoldType flag ARG_UNUSED, const UChar** p, return 1; /* return byte length of converted char to lower */ } -#if 0 -extern int -onigenc_ascii_is_mbc_ambiguous(OnigCaseFoldType flag ARG_UNUSED, - const UChar** pp, const UChar* end ARG_UNUSED) -{ - const UChar* p = *pp; - - (*pp)++; - return ONIGENC_IS_ASCII_CODE_CASE_AMBIG(*p); -} -#endif - extern int -onigenc_single_byte_mbc_enc_len(const UChar* p ARG_UNUSED, const UChar* e ARG_UNUSED, - OnigEncoding enc ARG_UNUSED) +onigenc_single_byte_mbc_enc_len(const UChar* p ARG_UNUSED) { return 1; } extern OnigCodePoint -onigenc_single_byte_mbc_to_code(const UChar* p, const UChar* end ARG_UNUSED, - OnigEncoding enc ARG_UNUSED) +onigenc_single_byte_mbc_to_code(const UChar* p, const UChar* end ARG_UNUSED) { return (OnigCodePoint )(*p); } extern int -onigenc_single_byte_code_to_mbclen(OnigCodePoint code ARG_UNUSED, OnigEncoding enc ARG_UNUSED) +onigenc_single_byte_code_to_mbclen(OnigCodePoint code ARG_UNUSED) { - return 1; + return (code < 0x100 ? 1 : ONIGERR_INVALID_CODE_POINT_VALUE); } extern int -onigenc_single_byte_code_to_mbc(OnigCodePoint code, UChar *buf, OnigEncoding enc ARG_UNUSED) +onigenc_single_byte_code_to_mbc(OnigCodePoint code, UChar *buf) { -#ifdef RUBY - if (code > 0xff) - rb_raise(rb_eRangeError, "%u out of char range", code); -#endif *buf = (UChar )(code & 0xff); return 1; } extern UChar* onigenc_single_byte_left_adjust_char_head(const UChar* start ARG_UNUSED, - const UChar* s, - const UChar* end ARG_UNUSED, - OnigEncoding enc ARG_UNUSED) + const UChar* s) { return (UChar* )s; } extern int onigenc_always_true_is_allowed_reverse_match(const UChar* s ARG_UNUSED, - const UChar* end ARG_UNUSED, - OnigEncoding enc ARG_UNUSED) + const UChar* end ARG_UNUSED) { return TRUE; } extern int onigenc_always_false_is_allowed_reverse_match(const UChar* s ARG_UNUSED, - const UChar* end ARG_UNUSED, - OnigEncoding enc ARG_UNUSED) + const UChar* end ARG_UNUSED) { return FALSE; } extern int -onigenc_ascii_is_code_ctype(OnigCodePoint code, unsigned int ctype, - OnigEncoding enc ARG_UNUSED) +onigenc_always_true_is_valid_mbc_string(const UChar* s ARG_UNUSED, + const UChar* end ARG_UNUSED) { - if (code < 128) - return ONIGENC_IS_ASCII_CODE_CTYPE(code, ctype); - else + return TRUE; +} + +extern int +onigenc_length_check_is_valid_mbc_string(OnigEncoding enc, + const UChar* p, const UChar* end) +{ + while (p < end) { + p += enclen(enc, p); + } + + if (p != end) return FALSE; + else + return TRUE; +} + +extern int +onigenc_is_valid_mbc_string(OnigEncoding enc, const UChar* s, const UChar* end) +{ + return ONIGENC_IS_VALID_MBC_STRING(enc, s, end); } extern OnigCodePoint @@ -682,7 +796,7 @@ onigenc_mbn_mbc_to_code(OnigEncoding enc, const UChar* p, const UChar* end) int c, i, len; OnigCodePoint n; - len = enclen(enc, p, end); + len = enclen(enc, p); n = (OnigCodePoint )(*p++); if (len == 1) return n; @@ -697,7 +811,7 @@ onigenc_mbn_mbc_to_code(OnigEncoding enc, const UChar* p, const UChar* end) extern int onigenc_mbn_mbc_case_fold(OnigEncoding enc, OnigCaseFoldType flag ARG_UNUSED, const UChar** pp, const UChar* end ARG_UNUSED, - UChar* lower) + UChar* lower) { int len; const UChar *p = *pp; @@ -710,7 +824,7 @@ onigenc_mbn_mbc_case_fold(OnigEncoding enc, OnigCaseFoldType flag ARG_UNUSED, else { int i; - len = enclen(enc, p, end); + len = enclen(enc, p); for (i = 0; i < len; i++) { *lower++ = *p++; } @@ -719,40 +833,6 @@ onigenc_mbn_mbc_case_fold(OnigEncoding enc, OnigCaseFoldType flag ARG_UNUSED, } } -#if 0 -extern int -onigenc_mbn_is_mbc_ambiguous(OnigEncoding enc, OnigCaseFoldType flag, - const UChar** pp, const UChar* end ARG_UNUSED) -{ - const UChar* p = *pp; - - if (ONIGENC_IS_MBC_ASCII(p)) { - (*pp)++; - return ONIGENC_IS_ASCII_CODE_CASE_AMBIG(*p); - } - - (*pp) += enclen(enc, p); - return FALSE; -} -#endif - -extern int -onigenc_mb2_code_to_mbclen(OnigCodePoint code, OnigEncoding enc ARG_UNUSED) -{ - if (code <= 0xff) return 1; - if (code <= 0xffff) return 2; - return ONIGERR_TOO_BIG_WIDE_CHAR_VALUE; -} - -extern int -onigenc_mb4_code_to_mbclen(OnigCodePoint code, OnigEncoding enc ARG_UNUSED) -{ - if ((code & 0xff000000) != 0) return 4; - else if ((code & 0xff0000) != 0) return 3; - else if ((code & 0xff00) != 0) return 2; - else return 1; -} - extern int onigenc_mb2_code_to_mbc(OnigEncoding enc, OnigCodePoint code, UChar *buf) { @@ -764,7 +844,7 @@ onigenc_mb2_code_to_mbc(OnigEncoding enc, OnigCodePoint code, UChar *buf) *p++ = (UChar )(code & 0xff); #if 1 - if (enclen(enc, buf, p) != (p - buf)) + if (enclen(enc, buf) != (p - buf)) return ONIGERR_INVALID_CODE_POINT_VALUE; #endif return (int )(p - buf); @@ -787,48 +867,59 @@ onigenc_mb4_code_to_mbc(OnigEncoding enc, OnigCodePoint code, UChar *buf) *p++ = (UChar )(code & 0xff); #if 1 - if (enclen(enc, buf, p) != (p - buf)) + if (enclen(enc, buf) != (p - buf)) return ONIGERR_INVALID_CODE_POINT_VALUE; #endif return (int )(p - buf); } extern int -onigenc_minimum_property_name_to_ctype(OnigEncoding enc, const UChar* p, const UChar* end) -{ - static const PosixBracketEntryType PBS[] = { - POSIX_BRACKET_ENTRY_INIT("Alnum", ONIGENC_CTYPE_ALNUM), - POSIX_BRACKET_ENTRY_INIT("Alpha", ONIGENC_CTYPE_ALPHA), - POSIX_BRACKET_ENTRY_INIT("Blank", ONIGENC_CTYPE_BLANK), - POSIX_BRACKET_ENTRY_INIT("Cntrl", ONIGENC_CTYPE_CNTRL), - POSIX_BRACKET_ENTRY_INIT("Digit", ONIGENC_CTYPE_DIGIT), - POSIX_BRACKET_ENTRY_INIT("Graph", ONIGENC_CTYPE_GRAPH), - POSIX_BRACKET_ENTRY_INIT("Lower", ONIGENC_CTYPE_LOWER), - POSIX_BRACKET_ENTRY_INIT("Print", ONIGENC_CTYPE_PRINT), - POSIX_BRACKET_ENTRY_INIT("Punct", ONIGENC_CTYPE_PUNCT), - POSIX_BRACKET_ENTRY_INIT("Space", ONIGENC_CTYPE_SPACE), - POSIX_BRACKET_ENTRY_INIT("Upper", ONIGENC_CTYPE_UPPER), - POSIX_BRACKET_ENTRY_INIT("XDigit", ONIGENC_CTYPE_XDIGIT), - POSIX_BRACKET_ENTRY_INIT("ASCII", ONIGENC_CTYPE_ASCII), - POSIX_BRACKET_ENTRY_INIT("Word", ONIGENC_CTYPE_WORD), +onigenc_minimum_property_name_to_ctype(OnigEncoding enc, UChar* p, UChar* end) +{ + static PosixBracketEntryType PBS[] = { + { (UChar* )"Alnum", ONIGENC_CTYPE_ALNUM, 5 }, + { (UChar* )"Alpha", ONIGENC_CTYPE_ALPHA, 5 }, + { (UChar* )"Blank", ONIGENC_CTYPE_BLANK, 5 }, + { (UChar* )"Cntrl", ONIGENC_CTYPE_CNTRL, 5 }, + { (UChar* )"Digit", ONIGENC_CTYPE_DIGIT, 5 }, + { (UChar* )"Graph", ONIGENC_CTYPE_GRAPH, 5 }, + { (UChar* )"Lower", ONIGENC_CTYPE_LOWER, 5 }, + { (UChar* )"Print", ONIGENC_CTYPE_PRINT, 5 }, + { (UChar* )"Punct", ONIGENC_CTYPE_PUNCT, 5 }, + { (UChar* )"Space", ONIGENC_CTYPE_SPACE, 5 }, + { (UChar* )"Upper", ONIGENC_CTYPE_UPPER, 5 }, + { (UChar* )"XDigit", ONIGENC_CTYPE_XDIGIT, 6 }, + { (UChar* )"ASCII", ONIGENC_CTYPE_ASCII, 5 }, + { (UChar* )"Word", ONIGENC_CTYPE_WORD, 4 }, + { (UChar* )NULL, -1, 0 } }; - const PosixBracketEntryType *pb; + PosixBracketEntryType *pb; int len; len = onigenc_strlen(enc, p, end); - for (pb = PBS; pb < PBS + numberof(PBS); pb++) { + for (pb = PBS; IS_NOT_NULL(pb->name); pb++) { if (len == pb->len && - onigenc_with_ascii_strnicmp(enc, p, end, pb->name, pb->len) == 0) + onigenc_with_ascii_strncmp(enc, p, end, pb->name, pb->len) == 0) return pb->ctype; } return ONIGERR_INVALID_CHAR_PROPERTY_NAME; } +extern int +onigenc_is_mbc_word_ascii(OnigEncoding enc, UChar* s, const UChar* end) +{ + OnigCodePoint code = ONIGENC_MBC_TO_CODE(enc, s, end); + + if (code > ASCII_LIMIT) return 0; + + return ONIGENC_IS_ASCII_CODE_WORD(code); +} + extern int onigenc_mb2_is_code_ctype(OnigEncoding enc, OnigCodePoint code, - unsigned int ctype) + unsigned int ctype) { if (code < 128) return ONIGENC_IS_ASCII_CODE_CTYPE(code, ctype); @@ -843,7 +934,7 @@ onigenc_mb2_is_code_ctype(OnigEncoding enc, OnigCodePoint code, extern int onigenc_mb4_is_code_ctype(OnigEncoding enc, OnigCodePoint code, - unsigned int ctype) + unsigned int ctype) { if (code < 128) return ONIGENC_IS_ASCII_CODE_CTYPE(code, ctype); @@ -870,143 +961,34 @@ onigenc_with_ascii_strncmp(OnigEncoding enc, const UChar* p, const UChar* end, if (x) return x; sascii++; - p += enclen(enc, p, end); + p += enclen(enc, p); } return 0; } extern int -onigenc_with_ascii_strnicmp(OnigEncoding enc, const UChar* p, const UChar* end, - const UChar* sascii /* ascii */, int n) +onig_codes_cmp(OnigCodePoint a[], OnigCodePoint b[], int n) { - int x, c; + int i; - while (n-- > 0) { - if (p >= end) return (int )(*sascii); - - c = (int )ONIGENC_MBC_TO_CODE(enc, p, end); - if (ONIGENC_IS_ASCII_CODE(c)) - c = ONIGENC_ASCII_CODE_TO_LOWER_CASE(c); - x = ONIGENC_ASCII_CODE_TO_LOWER_CASE(*sascii) - c; - if (x) return x; - - sascii++; - p += enclen(enc, p, end); - } - return 0; -} - -#if 0 -/* Property management */ -static int -resize_property_list(int new_size, const OnigCodePoint*** plist, int* psize) -{ - size_t size; - const OnigCodePoint **list = *plist; - - size = sizeof(OnigCodePoint*) * new_size; - if (IS_NULL(list)) { - list = (const OnigCodePoint** )xmalloc(size); - if (IS_NULL(list)) return ONIGERR_MEMORY; + for (i = 0; i < n; i++) { + if (a[i] != b[i]) + return -1; } - else { - const OnigCodePoint **tmp; - tmp = (const OnigCodePoint** )xrealloc((void* )list, size); - if (IS_NULL(tmp)) return ONIGERR_MEMORY; - list = tmp; - } - - *plist = list; - *psize = new_size; return 0; } extern int -onigenc_property_list_add_property(UChar* name, const OnigCodePoint* prop, - hash_table_type **table, const OnigCodePoint*** plist, int *pnum, - int *psize) -{ -#define PROP_INIT_SIZE 16 - - int r; - - if (*psize <= *pnum) { - int new_size = (*psize == 0 ? PROP_INIT_SIZE : *psize * 2); - r = resize_property_list(new_size, plist, psize); - if (r != 0) return r; - } - - (*plist)[*pnum] = prop; - - if (ONIG_IS_NULL(*table)) { - *table = onig_st_init_strend_table_with_size(PROP_INIT_SIZE); - if (ONIG_IS_NULL(*table)) return ONIGERR_MEMORY; - } - - *pnum = *pnum + 1; - onig_st_insert_strend(*table, name, name + strlen((char* )name), - (hash_data_type )(*pnum + ONIGENC_MAX_STD_CTYPE)); - return 0; -} -#endif - -extern int -onigenc_ascii_only_case_map(OnigCaseFoldType* flagP, const OnigUChar** pp, const OnigUChar* end, - OnigUChar* to, OnigUChar* to_end, const struct OnigEncodingTypeST* enc) +onig_codes_byte_at(OnigCodePoint codes[], int at) { + int index; + int b; OnigCodePoint code; - OnigUChar *to_start = to; - OnigCaseFoldType flags = *flagP; - int codepoint_length; - - while (*pp < end && to < to_end) { - codepoint_length = ONIGENC_PRECISE_MBC_ENC_LEN(enc, *pp, end); - if (codepoint_length < 0) - return codepoint_length; /* encoding invalid */ - code = ONIGENC_MBC_TO_CODE(enc, *pp, end); - *pp += codepoint_length; - - if (code >= 'a' && code <= 'z' && (flags & ONIGENC_CASE_UPCASE)) { - flags |= ONIGENC_CASE_MODIFIED; - code += 'A' - 'a'; - } else if (code >= 'A' && code <= 'Z' && - (flags & (ONIGENC_CASE_DOWNCASE | ONIGENC_CASE_FOLD))) { - flags |= ONIGENC_CASE_MODIFIED; - code += 'a' - 'A'; - } - to += ONIGENC_CODE_TO_MBC(enc, code, to); - if (flags & ONIGENC_CASE_TITLECASE) /* switch from titlecase to lowercase for capitalize */ - flags ^= (ONIGENC_CASE_UPCASE | ONIGENC_CASE_DOWNCASE | ONIGENC_CASE_TITLECASE); - } - *flagP = flags; - return (int )(to - to_start); -} -extern int -onigenc_single_byte_ascii_only_case_map(OnigCaseFoldType* flagP, const OnigUChar** pp, - const OnigUChar* end, OnigUChar* to, OnigUChar* to_end, - const struct OnigEncodingTypeST* enc) -{ - OnigCodePoint code; - OnigUChar *to_start = to; - OnigCaseFoldType flags = *flagP; - - while (*pp < end && to < to_end) { - code = *(*pp)++; - - if (code >= 'a' && code <= 'z' && (flags & ONIGENC_CASE_UPCASE)) { - flags |= ONIGENC_CASE_MODIFIED; - code += 'A' - 'a'; - } else if (code >= 'A' && code <= 'Z' && - (flags & (ONIGENC_CASE_DOWNCASE | ONIGENC_CASE_FOLD))) { - flags |= ONIGENC_CASE_MODIFIED; - code += 'a' - 'A'; - } - *to++ = code; - if (flags & ONIGENC_CASE_TITLECASE) /* switch from titlecase to lowercase for capitalize */ - flags ^= (ONIGENC_CASE_UPCASE | ONIGENC_CASE_DOWNCASE | ONIGENC_CASE_TITLECASE); - } - *flagP = flags; - return (int )(to - to_start); + index = at / 3; + b = at % 3; + code = codes[index]; + + return ((code >> ((2 - b) * 8)) & 0xff); } diff --git a/vendor/oniguruma/oniguruma/src/regenc.h b/vendor/oniguruma/oniguruma/src/regenc.h new file mode 100644 index 0000000..d0b447d --- /dev/null +++ b/vendor/oniguruma/oniguruma/src/regenc.h @@ -0,0 +1,286 @@ +#ifndef REGENC_H +#define REGENC_H +/********************************************************************** + regenc.h - Oniguruma (regular expression library) +**********************************************************************/ +/*- + * Copyright (c) 2002-2020 K.Kosako + * 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. + */ + +#ifndef ONIGURUMA_EXPORT +#define ONIGURUMA_EXPORT +#endif + +#include "config.h" + +#ifndef ONIG_NO_STANDARD_C_HEADERS +#include +#endif + +#ifdef ONIG_ESCAPE_UCHAR_COLLISION +#undef ONIG_ESCAPE_UCHAR_COLLISION +#endif + +#include "oniguruma.h" + +typedef struct { + OnigCodePoint from; + OnigCodePoint to; +} OnigPairCaseFoldCodes; + + +#ifndef NULL +#define NULL ((void* )0) +#endif + +#ifndef TRUE +#define TRUE 1 +#endif + +#ifndef FALSE +#define FALSE 0 +#endif + +#ifndef ARG_UNUSED +#if defined(__GNUC__) +# define ARG_UNUSED __attribute__ ((unused)) +#else +# define ARG_UNUSED +#endif +#endif + +#define ONIG_IS_NULL(p) (((void*)(p)) == (void*)0) +#define ONIG_IS_NOT_NULL(p) (((void*)(p)) != (void*)0) +#define ONIG_CHECK_NULL_RETURN(p) if (ONIG_IS_NULL(p)) return NULL +#define ONIG_CHECK_NULL_RETURN_VAL(p,val) if (ONIG_IS_NULL(p)) return (val) + +#define MAX_CODE_POINT (~((OnigCodePoint )0)) +#define ASCII_LIMIT 127 +#define NEWLINE_CODE 0x0a + +#define enclen(enc,p) ONIGENC_MBC_ENC_LEN(enc,p) + +/* character types bit flag */ +#define BIT_CTYPE_NEWLINE (1<< ONIGENC_CTYPE_NEWLINE) +#define BIT_CTYPE_ALPHA (1<< ONIGENC_CTYPE_ALPHA) +#define BIT_CTYPE_BLANK (1<< ONIGENC_CTYPE_BLANK) +#define BIT_CTYPE_CNTRL (1<< ONIGENC_CTYPE_CNTRL) +#define BIT_CTYPE_DIGIT (1<< ONIGENC_CTYPE_DIGIT) +#define BIT_CTYPE_GRAPH (1<< ONIGENC_CTYPE_GRAPH) +#define BIT_CTYPE_LOWER (1<< ONIGENC_CTYPE_LOWER) +#define BIT_CTYPE_PRINT (1<< ONIGENC_CTYPE_PRINT) +#define BIT_CTYPE_PUNCT (1<< ONIGENC_CTYPE_PUNCT) +#define BIT_CTYPE_SPACE (1<< ONIGENC_CTYPE_SPACE) +#define BIT_CTYPE_UPPER (1<< ONIGENC_CTYPE_UPPER) +#define BIT_CTYPE_XDIGIT (1<< ONIGENC_CTYPE_XDIGIT) +#define BIT_CTYPE_WORD (1<< ONIGENC_CTYPE_WORD) +#define BIT_CTYPE_ALNUM (1<< ONIGENC_CTYPE_ALNUM) +#define BIT_CTYPE_ASCII (1<< ONIGENC_CTYPE_ASCII) + +#define CTYPE_TO_BIT(ctype) (1<<(ctype)) +#define CTYPE_IS_WORD_GRAPH_PRINT(ctype) \ + ((ctype) == ONIGENC_CTYPE_WORD || (ctype) == ONIGENC_CTYPE_GRAPH ||\ + (ctype) == ONIGENC_CTYPE_PRINT) + + +typedef struct { + UChar *name; + int ctype; + short int len; +} PosixBracketEntryType; + +struct PropertyNameCtype { + char *name; + int ctype; +}; + +/* #define USE_CRNL_AS_LINE_TERMINATOR */ +#define USE_UNICODE_PROPERTIES +#define USE_UNICODE_EXTENDED_GRAPHEME_CLUSTER +#define USE_UNICODE_WORD_BREAK +/* #define USE_UNICODE_CASE_FOLD_TURKISH_AZERI */ +/* #define USE_UNICODE_ALL_LINE_TERMINATORS */ /* see Unicode.org UTS #18 */ + + +#define ONIG_ENCODING_INIT_DEFAULT ONIG_ENCODING_ASCII + + +#define ENC_SKIP_OFFSET_1_OR_0 7 + +#define ENC_FLAG_ASCII_COMPATIBLE (1<<0) +#define ENC_FLAG_UNICODE (1<<1) +#define ENC_FLAG_SKIP_OFFSET_MASK (7<<2) +#define ENC_FLAG_SKIP_OFFSET_0 0 +#define ENC_FLAG_SKIP_OFFSET_1 (1<<2) +#define ENC_FLAG_SKIP_OFFSET_2 (2<<2) +#define ENC_FLAG_SKIP_OFFSET_3 (3<<2) +#define ENC_FLAG_SKIP_OFFSET_4 (4<<2) +#define ENC_FLAG_SKIP_OFFSET_1_OR_0 (ENC_SKIP_OFFSET_1_OR_0<<2) + +#define ENC_GET_SKIP_OFFSET(enc) \ + (((enc)->flag & ENC_FLAG_SKIP_OFFSET_MASK)>>2) + +#define CASE_FOLD_IS_ASCII_ONLY(flag) \ + (((flag) & ONIGENC_CASE_FOLD_ASCII_ONLY) != 0) +#define CASE_FOLD_IS_NOT_ASCII_ONLY(flag) \ + (((flag) & ONIGENC_CASE_FOLD_ASCII_ONLY) == 0) + +/* for encoding system implementation (internal) */ +extern int onigenc_end(void); +extern int onigenc_ascii_apply_all_case_fold P_((OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg)); +extern int onigenc_ascii_get_case_fold_codes_by_str P_((OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[])); +extern int onigenc_apply_all_case_fold_with_map P_((int map_size, const OnigPairCaseFoldCodes map[], int ess_tsett_flag, OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg)); +extern int onigenc_get_case_fold_codes_by_str_with_map P_((int map_size, const OnigPairCaseFoldCodes map[], int ess_tsett_flag, OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[])); +extern int onigenc_not_support_get_ctype_code_range P_((OnigCtype ctype, OnigCodePoint* sb_out, const OnigCodePoint* ranges[])); +extern int onigenc_is_mbc_newline_0x0a P_((const UChar* p, const UChar* end)); + + +/* methods for single byte encoding */ +extern int onigenc_ascii_mbc_case_fold P_((OnigCaseFoldType flag, const UChar** p, const UChar* end, UChar* lower)); +extern int onigenc_single_byte_mbc_enc_len P_((const UChar* p)); +extern OnigCodePoint onigenc_single_byte_mbc_to_code P_((const UChar* p, const UChar* end)); +extern int onigenc_single_byte_code_to_mbclen P_((OnigCodePoint code)); +extern int onigenc_single_byte_code_to_mbc P_((OnigCodePoint code, UChar *buf)); +extern UChar* onigenc_single_byte_left_adjust_char_head P_((const UChar* start, const UChar* s)); +extern int onigenc_always_true_is_allowed_reverse_match P_((const UChar* s, const UChar* end)); +extern int onigenc_always_false_is_allowed_reverse_match P_((const UChar* s, const UChar* end)); +extern int onigenc_always_true_is_valid_mbc_string P_((const UChar* s, const UChar* end)); +extern int onigenc_length_check_is_valid_mbc_string P_((OnigEncoding enc, const UChar* s, const UChar* end)); + +/* methods for multi byte encoding */ +extern OnigCodePoint onigenc_mbn_mbc_to_code P_((OnigEncoding enc, const UChar* p, const UChar* end)); +extern int onigenc_mbn_mbc_case_fold P_((OnigEncoding enc, OnigCaseFoldType flag, const UChar** p, const UChar* end, UChar* lower)); +extern int onigenc_mb2_code_to_mbc P_((OnigEncoding enc, OnigCodePoint code, UChar *buf)); +extern int onigenc_minimum_property_name_to_ctype P_((OnigEncoding enc, UChar* p, UChar* end)); +extern int onigenc_unicode_property_name_to_ctype P_((OnigEncoding enc, UChar* p, UChar* end)); +extern int onigenc_is_mbc_word_ascii P_((OnigEncoding enc, UChar* s, const UChar* end)); +extern int onigenc_mb2_is_code_ctype P_((OnigEncoding enc, OnigCodePoint code, unsigned int ctype)); +extern int onigenc_mb4_code_to_mbc P_((OnigEncoding enc, OnigCodePoint code, UChar *buf)); +extern int onigenc_mb4_is_code_ctype P_((OnigEncoding enc, OnigCodePoint code, unsigned int ctype)); +extern struct PropertyNameCtype* onigenc_euc_jp_lookup_property_name P_((register const char *str, register size_t len)); +extern struct PropertyNameCtype* onigenc_sjis_lookup_property_name P_((register const char *str, register size_t len)); + +/* in unicode.c */ +extern int onigenc_unicode_is_code_ctype P_((OnigCodePoint code, unsigned int ctype)); +extern int onigenc_utf16_32_get_ctype_code_range P_((OnigCtype ctype, OnigCodePoint *sb_out, const OnigCodePoint* ranges[])); +extern int onigenc_unicode_ctype_code_range P_((OnigCtype ctype, const OnigCodePoint* ranges[])); +extern int onigenc_unicode_get_case_fold_codes_by_str P_((OnigEncoding enc, OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[])); +extern int onigenc_unicode_mbc_case_fold P_((OnigEncoding enc, OnigCaseFoldType flag, const UChar** pp, const UChar* end, UChar* fold)); +extern int onigenc_unicode_apply_all_case_fold P_((OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg)); + +extern int onigenc_egcb_is_break_position P_((OnigEncoding enc, UChar* p, UChar* prev, const UChar* start, const UChar* end)); + +#ifdef USE_UNICODE_WORD_BREAK +extern int onigenc_wb_is_break_position P_((OnigEncoding enc, UChar* p, UChar* prev, const UChar* start, const UChar* end)); +#endif + +#define UTF16_IS_SURROGATE_FIRST(c) (((c) & 0xfc) == 0xd8) +#define UTF16_IS_SURROGATE_SECOND(c) (((c) & 0xfc) == 0xdc) + +/* from unicode generated codes */ +#define FOLDS1_FOLD(i) (OnigUnicodeFolds1 + (i)) +#define FOLDS2_FOLD(i) (OnigUnicodeFolds2 + (i)) +#define FOLDS3_FOLD(i) (OnigUnicodeFolds3 + (i)) +#define FOLDS1_UNFOLDS_NUM(i) (OnigUnicodeFolds1[(i)+1]) +#define FOLDS2_UNFOLDS_NUM(i) (OnigUnicodeFolds2[(i)+2]) +#define FOLDS3_UNFOLDS_NUM(i) (OnigUnicodeFolds3[(i)+3]) +#define FOLDS1_UNFOLDS(i) (FOLDS1_FOLD(i) + 2) +#define FOLDS2_UNFOLDS(i) (FOLDS2_FOLD(i) + 3) +#define FOLDS3_UNFOLDS(i) (FOLDS3_FOLD(i) + 4) +#define FOLDS1_NEXT_INDEX(i) ((i) + 2 + FOLDS1_UNFOLDS_NUM(i)) +#define FOLDS2_NEXT_INDEX(i) ((i) + 3 + FOLDS2_UNFOLDS_NUM(i)) +#define FOLDS3_NEXT_INDEX(i) ((i) + 4 + FOLDS3_UNFOLDS_NUM(i)) + +#define FOLDS_FOLD_ADDR_BUK(buk, addr) do {\ + if ((buk)->fold_len == 1)\ + addr = OnigUnicodeFolds1 + (buk)->index;\ + else if ((buk)->fold_len == 2)\ + addr = OnigUnicodeFolds2 + (buk)->index;\ + else if ((buk)->fold_len == 3)\ + addr = OnigUnicodeFolds3 + (buk)->index;\ + else\ + return ONIGERR_INVALID_CODE_POINT_VALUE;\ +} while (0) + +extern OnigCodePoint OnigUnicodeFolds1[]; +extern OnigCodePoint OnigUnicodeFolds2[]; +extern OnigCodePoint OnigUnicodeFolds3[]; + +struct ByUnfoldKey { + OnigCodePoint code; + short int index; + short int fold_len; +}; + +extern const struct ByUnfoldKey* onigenc_unicode_unfold_key(OnigCodePoint code); +extern int onigenc_unicode_fold1_key(OnigCodePoint code[]); +extern int onigenc_unicode_fold2_key(OnigCodePoint code[]); +extern int onigenc_unicode_fold3_key(OnigCodePoint code[]); + +extern int onig_codes_cmp(OnigCodePoint a[], OnigCodePoint b[], int n); +extern int onig_codes_byte_at(OnigCodePoint code[], int at); + + + +#define ONIGENC_ISO_8859_1_TO_LOWER_CASE(c) \ + OnigEncISO_8859_1_ToLowerCaseTable[c] +#define ONIGENC_ISO_8859_1_TO_UPPER_CASE(c) \ + OnigEncISO_8859_1_ToUpperCaseTable[c] + +extern const UChar OnigEncISO_8859_1_ToLowerCaseTable[]; +extern const UChar OnigEncISO_8859_1_ToUpperCaseTable[]; + +extern int +onigenc_with_ascii_strncmp P_((OnigEncoding enc, const UChar* p, const UChar* end, const UChar* sascii /* ascii */, int n)); +extern UChar* +onigenc_step P_((OnigEncoding enc, const UChar* p, const UChar* end, int n)); + +/* defined in regexec.c, but used in enc/xxx.c */ +extern int onig_is_in_code_range P_((const UChar* p, OnigCodePoint code)); + +extern OnigEncoding OnigEncDefaultCharEncoding; +extern const UChar OnigEncAsciiToLowerCaseTable[]; +extern const UChar OnigEncAsciiToUpperCaseTable[]; +extern const unsigned short OnigEncAsciiCtypeTable[]; + + +#define ONIGENC_IS_ASCII_CODE(code) ((code) < 0x80) +#define ONIGENC_ASCII_CODE_TO_LOWER_CASE(c) OnigEncAsciiToLowerCaseTable[c] +#define ONIGENC_ASCII_CODE_TO_UPPER_CASE(c) OnigEncAsciiToUpperCaseTable[c] +#define ONIGENC_IS_ASCII_CODE_CTYPE(code,ctype) \ + ((OnigEncAsciiCtypeTable[code] & CTYPE_TO_BIT(ctype)) != 0) +#define ONIGENC_IS_ASCII_CODE_WORD(code) \ + ((OnigEncAsciiCtypeTable[code] & CTYPE_TO_BIT(ONIGENC_CTYPE_WORD)) != 0) +#define ONIGENC_IS_ASCII_CODE_CASE_AMBIG(code) \ + (ONIGENC_IS_ASCII_CODE_CTYPE(code, ONIGENC_CTYPE_UPPER) ||\ + ONIGENC_IS_ASCII_CODE_CTYPE(code, ONIGENC_CTYPE_LOWER)) + +#define ONIGENC_IS_UNICODE_ENCODING(enc) \ + (((enc)->flag & ENC_FLAG_UNICODE) != 0) + +#define ONIGENC_IS_ASCII_COMPATIBLE_ENCODING(enc) \ + (((enc)->flag & ENC_FLAG_ASCII_COMPATIBLE) != 0) + +#endif /* REGENC_H */ diff --git a/vendor/onig/regerror.c b/vendor/oniguruma/oniguruma/src/regerror.c similarity index 67% rename from vendor/onig/regerror.c rename to vendor/oniguruma/oniguruma/src/regerror.c index aff6354..72b0e3f 100644 --- a/vendor/onig/regerror.c +++ b/vendor/oniguruma/oniguruma/src/regerror.c @@ -1,9 +1,8 @@ /********************************************************************** - regerror.c - Onigmo (Oniguruma-mod) (regular expression library) + regerror.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2007 K.Kosako - * Copyright (c) 2011-2016 K.Takata + * Copyright (c) 2002-2022 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -28,25 +27,37 @@ * SUCH DAMAGE. */ -#include "regint.h" -#include /* for vsnprintf() */ +#ifndef NEED_TO_INCLUDE_STDIO +/* for vsnprintf() */ +#define NEED_TO_INCLUDE_STDIO +#endif -#include +#include "regint.h" extern UChar* -onig_error_code_to_format(OnigPosition code) +onig_error_code_to_format(int code) { - const char *p; - - if (code >= 0) return (UChar* )0; + char *p; switch (code) { case ONIG_MISMATCH: p = "mismatch"; break; case ONIG_NO_SUPPORT_CONFIG: p = "no support in this configuration"; break; + case ONIG_ABORT: + p = "abort"; break; case ONIGERR_MEMORY: - p = "failed to allocate memory"; break; + p = "fail to memory allocation"; break; + case ONIGERR_MATCH_STACK_LIMIT_OVER: + p = "match-stack limit over"; break; + case ONIGERR_PARSE_DEPTH_LIMIT_OVER: + p = "parse depth limit over"; break; + case ONIGERR_RETRY_LIMIT_IN_MATCH_OVER: + p = "retry-limit-in-match over"; break; + case ONIGERR_RETRY_LIMIT_IN_SEARCH_OVER: + p = "retry-limit-in-search over"; break; + case ONIGERR_SUBEXP_CALL_LIMIT_IN_SEARCH_OVER: + p = "subexp-call-limit-in-search over"; break; case ONIGERR_TYPE_BUG: p = "undefined type (bug)"; break; case ONIGERR_PARSER_BUG: @@ -57,14 +68,12 @@ onig_error_code_to_format(OnigPosition code) p = "undefined bytecode (bug)"; break; case ONIGERR_UNEXPECTED_BYTECODE: p = "unexpected bytecode (bug)"; break; - case ONIGERR_MATCH_STACK_LIMIT_OVER: - p = "match-stack limit over"; break; - case ONIGERR_PARSE_DEPTH_LIMIT_OVER: - p = "parse depth limit over"; break; case ONIGERR_DEFAULT_ENCODING_IS_NOT_SET: p = "default multibyte-encoding is not set"; break; case ONIGERR_SPECIFIED_ENCODING_CANT_CONVERT_TO_WIDE_CHAR: p = "can't convert to wide-char on specified multibyte-encoding"; break; + case ONIGERR_FAIL_TO_INITIALIZE: + p = "fail to initialize"; break; case ONIGERR_INVALID_ARGUMENT: p = "invalid argument"; break; case ONIGERR_END_PATTERN_AT_LEFT_BRACE: @@ -105,14 +114,14 @@ onig_error_code_to_format(OnigPosition code) p = "end pattern in group"; break; case ONIGERR_UNDEFINED_GROUP_OPTION: p = "undefined group option"; break; + case ONIGERR_INVALID_GROUP_OPTION: + p = "invalid group option"; break; case ONIGERR_INVALID_POSIX_BRACKET_TYPE: p = "invalid POSIX bracket type"; break; case ONIGERR_INVALID_LOOK_BEHIND_PATTERN: p = "invalid pattern in look-behind"; break; case ONIGERR_INVALID_REPEAT_RANGE_PATTERN: p = "invalid repeat range {lower,upper}"; break; - case ONIGERR_INVALID_CONDITION_PATTERN: - p = "invalid conditional pattern"; break; case ONIGERR_TOO_BIG_NUMBER: p = "too big number"; break; case ONIGERR_TOO_BIG_NUMBER_FOR_REPEAT_RANGE: @@ -130,27 +139,25 @@ onig_error_code_to_format(OnigPosition code) case ONIGERR_TOO_BIG_BACKREF_NUMBER: p = "too big backref number"; break; case ONIGERR_INVALID_BACKREF: -#ifdef USE_NAMED_GROUP p = "invalid backref number/name"; break; -#else - p = "invalid backref number"; break; -#endif case ONIGERR_NUMBERED_BACKREF_OR_CALL_NOT_ALLOWED: p = "numbered backref/call is not allowed. (use name)"; break; - case ONIGERR_TOO_SHORT_DIGITS: - p = "too short digits"; break; + case ONIGERR_TOO_MANY_CAPTURES: + p = "too many captures"; break; + case ONIGERR_TOO_BIG_WIDE_CHAR_VALUE: + p = "too big wide-char value"; break; case ONIGERR_TOO_LONG_WIDE_CHAR_VALUE: p = "too long wide-char value"; break; + case ONIGERR_UNDEFINED_OPERATOR: + p = "undefined operator"; break; + case ONIGERR_INVALID_CODE_POINT_VALUE: + p = "invalid code point value"; break; case ONIGERR_EMPTY_GROUP_NAME: p = "group name is empty"; break; case ONIGERR_INVALID_GROUP_NAME: p = "invalid group name <%n>"; break; case ONIGERR_INVALID_CHAR_IN_GROUP_NAME: -#ifdef USE_NAMED_GROUP p = "invalid char in group name <%n>"; break; -#else - p = "invalid char in group number <%n>"; break; -#endif case ONIGERR_UNDEFINED_NAME_REFERENCE: p = "undefined name <%n> reference"; break; case ONIGERR_UNDEFINED_GROUP_REFERENCE: @@ -165,16 +172,32 @@ onig_error_code_to_format(OnigPosition code) p = "group number is too big for capture history"; break; case ONIGERR_INVALID_CHAR_PROPERTY_NAME: p = "invalid character property name {%n}"; break; - case ONIGERR_TOO_MANY_CAPTURE_GROUPS: - p = "too many capture groups are specified"; break; - case ONIGERR_INVALID_CODE_POINT_VALUE: - p = "invalid code point value"; break; - case ONIGERR_TOO_BIG_WIDE_CHAR_VALUE: - p = "too big wide-char value"; break; + case ONIGERR_INVALID_IF_ELSE_SYNTAX: + p = "invalid if-else syntax"; break; + case ONIGERR_INVALID_ABSENT_GROUP_PATTERN: + p = "invalid absent group pattern"; break; + case ONIGERR_INVALID_ABSENT_GROUP_GENERATOR_PATTERN: + p = "invalid absent group generator pattern"; break; + case ONIGERR_INVALID_CALLOUT_PATTERN: + p = "invalid callout pattern"; break; + case ONIGERR_INVALID_CALLOUT_NAME: + p = "invalid callout name"; break; + case ONIGERR_UNDEFINED_CALLOUT_NAME: + p = "undefined callout name"; break; + case ONIGERR_INVALID_CALLOUT_BODY: + p = "invalid callout body"; break; + case ONIGERR_INVALID_CALLOUT_TAG_NAME: + p = "invalid callout tag name"; break; + case ONIGERR_INVALID_CALLOUT_ARG: + p = "invalid callout arg"; break; case ONIGERR_NOT_SUPPORTED_ENCODING_COMBINATION: p = "not supported encoding combination"; break; case ONIGERR_INVALID_COMBINATION_OF_OPTIONS: p = "invalid combination of options"; break; + case ONIGERR_VERY_INEFFICIENT_PATTERN: + p = "very inefficient pattern"; break; + case ONIGERR_LIBRARY_IS_NOT_INITIALIZED: + p = "library is not initialized"; break; default: p = "undefined error code"; break; @@ -194,46 +217,50 @@ static void sprint_byte_with_x(char* s, unsigned int v) } static int to_ascii(OnigEncoding enc, UChar *s, UChar *end, - UChar buf[], int buf_size, int *is_over) + UChar buf[], int buf_size, int *is_over) { int len; UChar *p; OnigCodePoint code; - if (ONIGENC_MBC_MINLEN(enc) > 1) { + if (!s) { + len = 0; + *is_over = 0; + } + else if (ONIGENC_MBC_MINLEN(enc) > 1) { p = s; len = 0; while (p < end) { code = ONIGENC_MBC_TO_CODE(enc, p, end); if (code >= 0x80) { - if (code > 0xffff && len + 10 <= buf_size) { - sprint_byte_with_x((char*)(&(buf[len])), (unsigned int)(code >> 24)); - sprint_byte((char*)(&(buf[len+4])), (unsigned int)(code >> 16)); - sprint_byte((char*)(&(buf[len+6])), (unsigned int)(code >> 8)); - sprint_byte((char*)(&(buf[len+8])), (unsigned int)code); - len += 10; - } - else if (len + 6 <= buf_size) { - sprint_byte_with_x((char*)(&(buf[len])), (unsigned int)(code >> 8)); - sprint_byte((char*)(&(buf[len+4])), (unsigned int)code); - len += 6; - } - else { - break; - } + if (code > 0xffff && len + 10 <= buf_size) { + sprint_byte_with_x((char*)(&(buf[len])), (unsigned int)(code >> 24)); + sprint_byte((char*)(&(buf[len+4])), (unsigned int)(code >> 16)); + sprint_byte((char*)(&(buf[len+6])), (unsigned int)(code >> 8)); + sprint_byte((char*)(&(buf[len+8])), (unsigned int)code); + len += 10; + } + else if (len + 6 <= buf_size) { + sprint_byte_with_x((char*)(&(buf[len])), (unsigned int)(code >> 8)); + sprint_byte((char*)(&(buf[len+4])), (unsigned int)code); + len += 6; + } + else { + break; + } } else { - buf[len++] = (UChar )code; + buf[len++] = (UChar )code; } - p += enclen(enc, p, end); + p += enclen(enc, p); if (len >= buf_size) break; } - *is_over = ((p < end) ? 1 : 0); + *is_over = p < end; } else { - len = (int )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); } @@ -242,16 +269,32 @@ static int to_ascii(OnigEncoding enc, UChar *s, UChar *end, } +extern int +onig_is_error_code_needs_param(int code) +{ + switch (code) { + case ONIGERR_UNDEFINED_NAME_REFERENCE: + case ONIGERR_UNDEFINED_GROUP_REFERENCE: + case ONIGERR_MULTIPLEX_DEFINED_NAME: + case ONIGERR_MULTIPLEX_DEFINITION_NAME_CALL: + case ONIGERR_INVALID_GROUP_NAME: + case ONIGERR_INVALID_CHAR_IN_GROUP_NAME: + case ONIGERR_INVALID_CHAR_PROPERTY_NAME: + return 1; + default: + return 0; + } +} + /* for ONIG_MAX_ERROR_MESSAGE_LEN */ #define MAX_ERROR_PAR_LEN 30 -extern int -onig_error_code_to_str(UChar* s, OnigPosition code, ...) +extern int ONIG_VARIADIC_FUNC_ATTR +onig_error_code_to_str(UChar* s, int code, ...) { UChar *p, *q; OnigErrorInfo* einfo; - size_t len; - int is_over; + int len, is_over; UChar parbuf[MAX_ERROR_PAR_LEN]; va_list vargs; @@ -267,71 +310,69 @@ onig_error_code_to_str(UChar* s, OnigPosition code, ...) case ONIGERR_INVALID_CHAR_PROPERTY_NAME: einfo = va_arg(vargs, OnigErrorInfo*); len = to_ascii(einfo->enc, einfo->par, einfo->par_end, - parbuf, MAX_ERROR_PAR_LEN - 3, &is_over); + parbuf, MAX_ERROR_PAR_LEN - 3, &is_over); q = onig_error_code_to_format(code); p = s; while (*q != '\0') { if (*q == '%') { - q++; - if (*q == 'n') { /* '%n': name */ - xmemcpy(p, parbuf, len); - p += len; - if (is_over != 0) { - xmemcpy(p, "...", 3); - p += 3; - } - q++; - } - else - goto normal_char; + q++; + if (*q == 'n') { /* '%n': name */ + xmemcpy(p, parbuf, len); + p += len; + if (is_over != 0) { + xmemcpy(p, "...", 3); + p += 3; + } + q++; + } + else + goto normal_char; } else { normal_char: - *p++ = *q++; + *p++ = *q++; } } *p = '\0'; - len = p - s; + len = (int )(p - s); break; default: q = onig_error_code_to_format(code); - if (q) { - len = onigenc_str_bytelen_null(ONIG_ENCODING_ASCII, q); - xmemcpy(s, q, len); - } else { - len = 0; - } + len = onigenc_str_bytelen_null(ONIG_ENCODING_ASCII, q); + xmemcpy(s, q, len); s[len] = '\0'; break; } va_end(vargs); - return (int )len; + return len; } -void -onig_vsnprintf_with_pattern(UChar buf[], int bufsize, OnigEncoding enc, - UChar* pat, UChar* pat_end, const UChar *fmt, va_list args) + +void ONIG_VARIADIC_FUNC_ATTR +onig_snprintf_with_pattern(UChar buf[], int bufsize, OnigEncoding enc, + UChar* pat, UChar* pat_end, const char *fmt, ...) { - size_t need; - int n, len; + int n, need, len; UChar *p, *s, *bp; UChar bs[6]; + va_list args; - n = xvsnprintf((char* )buf, bufsize, (const char* )fmt, args); + va_start(args, fmt); + n = xvsnprintf((char* )buf, bufsize, fmt, args); + va_end(args); - need = (pat_end - pat) * 4 + 4; + need = (int )(pat_end - pat) * 4 + 4; - if (n + need < (size_t )bufsize) { - static const char sep[] = ": /"; - memcpy((char* )buf + n, sep, sizeof(sep)); + if (n + need < bufsize) { + xstrcat((char* )buf, ": /", bufsize); s = buf + onigenc_str_bytelen_null(ONIG_ENCODING_ASCII, buf); p = pat; while (p < pat_end) { - if (ONIGENC_IS_MBC_HEAD(enc, p, pat_end)) { - len = enclen(enc, p, pat_end); + if (ONIGENC_IS_MBC_HEAD(enc, p)) { + len = enclen(enc, p); if (ONIGENC_MBC_MINLEN(enc) == 1) { while (len-- > 0) *s++ = *p++; } @@ -347,23 +388,23 @@ onig_vsnprintf_with_pattern(UChar buf[], int bufsize, OnigEncoding enc, } } else if (*p == '\\') { - *s++ = *p++; - len = enclen(enc, p, pat_end); - while (len-- > 0) *s++ = *p++; + *s++ = *p++; + len = enclen(enc, p); + while (len-- > 0) *s++ = *p++; } else if (*p == '/') { - *s++ = (unsigned char )'\\'; - *s++ = *p++; + *s++ = (unsigned char )'\\'; + *s++ = *p++; } else if (!ONIGENC_IS_CODE_PRINT(enc, *p) && - !ONIGENC_IS_CODE_SPACE(enc, *p)) { - sprint_byte_with_x((char* )bs, (unsigned int )(*p++)); - len = onigenc_str_bytelen_null(ONIG_ENCODING_ASCII, bs); + !ONIGENC_IS_CODE_SPACE(enc, *p)) { + sprint_byte_with_x((char* )bs, (unsigned int )(*p++)); + len = onigenc_str_bytelen_null(ONIG_ENCODING_ASCII, bs); bp = bs; - while (len-- > 0) *s++ = *bp++; + while (len-- > 0) *s++ = *bp++; } else { - *s++ = *p++; + *s++ = *p++; } } @@ -371,16 +412,3 @@ onig_vsnprintf_with_pattern(UChar buf[], int bufsize, OnigEncoding enc, *s = '\0'; } } - -#if 0 /* unused */ -void -onig_snprintf_with_pattern(UChar buf[], int bufsize, OnigEncoding enc, - UChar* pat, UChar* pat_end, const UChar *fmt, ...) -{ - va_list args; - va_start(args, fmt); - onig_vsnprintf_with_pattern(buf, bufsize, enc, - pat, pat_end, fmt, args); - va_end(args); -} -#endif diff --git a/vendor/oniguruma/oniguruma/src/regexec.c b/vendor/oniguruma/oniguruma/src/regexec.c new file mode 100644 index 0000000..ddec265 --- /dev/null +++ b/vendor/oniguruma/oniguruma/src/regexec.c @@ -0,0 +1,6793 @@ +/********************************************************************** + regexec.c - Oniguruma (regular expression library) +**********************************************************************/ +/*- + * Copyright (c) 2002-2024 K.Kosako + * 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. + */ + +#ifndef ONIG_NO_PRINT +#ifndef NEED_TO_INCLUDE_STDIO +#define NEED_TO_INCLUDE_STDIO +#endif +#endif + +#include "regint.h" + +#define IS_MBC_WORD_ASCII_MODE(enc,s,end,mode) \ + ((mode) == 0 ? ONIGENC_IS_MBC_WORD(enc,s,end) : ONIGENC_IS_MBC_WORD_ASCII(enc,s,end)) + +#ifdef USE_CRNL_AS_LINE_TERMINATOR +#define ONIGENC_IS_MBC_CRNL(enc,p,end) \ + (ONIGENC_MBC_TO_CODE(enc,p,end) == 13 && \ + ONIGENC_IS_MBC_NEWLINE(enc,(p+enclen(enc,p)),end)) +#endif + +#define CHECK_INTERRUPT_IN_MATCH + +#define STACK_MEM_START(reg, idx) \ + (MEM_STATUS_AT((reg)->push_mem_start, (idx)) != 0 ? \ + STACK_AT(mem_start_stk[idx].i)->u.mem.pstr : mem_start_stk[idx].s) + +#define STACK_MEM_END(reg, idx) \ + (MEM_STATUS_AT((reg)->push_mem_end, (idx)) != 0 ? \ + STACK_AT(mem_end_stk[idx].i)->u.mem.pstr : mem_end_stk[idx].s) + +#ifdef _MSC_VER +#define DIST_CAST(d) (size_t )(d) +#else +#define DIST_CAST(d) (d) +#endif + + +static int forward_search(regex_t* reg, const UChar* str, const UChar* end, UChar* start, UChar* range, UChar** low, UChar** high); + +static int +search_in_range(regex_t* reg, const UChar* str, const UChar* end, const UChar* start, const UChar* range, /* match range */ const UChar* data_range, /* subject string range */ OnigRegion* region, OnigOptionType option, OnigMatchParam* mp); + + +#ifdef USE_CALLOUT +typedef struct { + int last_match_at_call_counter; + struct { + OnigType type; + OnigValue val; + } slot[ONIG_CALLOUT_DATA_SLOT_NUM]; +} CalloutData; +#endif + +struct OnigMatchParamStruct { + unsigned int match_stack_limit; +#ifdef USE_RETRY_LIMIT + unsigned long retry_limit_in_match; + unsigned long retry_limit_in_search; +#endif + + void* callout_user_data; /* used in callback each match */ +#ifdef USE_CALLOUT + OnigCalloutFunc progress_callout_of_contents; + OnigCalloutFunc retraction_callout_of_contents; + int match_at_call_counter; + CalloutData* callout_data; + int callout_data_alloc_num; +#endif +}; + +extern int +onig_set_match_stack_limit_size_of_match_param(OnigMatchParam* param, + unsigned int limit) +{ + param->match_stack_limit = limit; + return ONIG_NORMAL; +} + +extern int +onig_set_retry_limit_in_match_of_match_param(OnigMatchParam* param, + unsigned long limit) +{ +#ifdef USE_RETRY_LIMIT + param->retry_limit_in_match = limit; + return ONIG_NORMAL; +#else + return ONIG_NO_SUPPORT_CONFIG; +#endif +} + +extern int +onig_set_retry_limit_in_search_of_match_param(OnigMatchParam* param, + unsigned long limit) +{ +#ifdef USE_RETRY_LIMIT + param->retry_limit_in_search = limit; + return ONIG_NORMAL; +#else + return ONIG_NO_SUPPORT_CONFIG; +#endif +} + +extern int +onig_set_progress_callout_of_match_param(OnigMatchParam* param, OnigCalloutFunc f) +{ +#ifdef USE_CALLOUT + param->progress_callout_of_contents = f; + return ONIG_NORMAL; +#else + return ONIG_NO_SUPPORT_CONFIG; +#endif +} + +extern int +onig_set_retraction_callout_of_match_param(OnigMatchParam* param, OnigCalloutFunc f) +{ +#ifdef USE_CALLOUT + param->retraction_callout_of_contents = f; + return ONIG_NORMAL; +#else + return ONIG_NO_SUPPORT_CONFIG; +#endif +} + +extern int +onig_set_callout_user_data_of_match_param(OnigMatchParam* param, void* user_data) +{ + param->callout_user_data = user_data; + return ONIG_NORMAL; +} + + +typedef struct { + void* stack_p; + int stack_n; + OnigOptionType options; + OnigRegion* region; + int ptr_num; + const UChar* start; /* search start position (for \G: BEGIN_POSITION) */ + unsigned int match_stack_limit; +#ifdef USE_RETRY_LIMIT + unsigned long retry_limit_in_match; + unsigned long retry_limit_in_search; + unsigned long retry_limit_in_search_counter; +#endif + OnigMatchParam* mp; +#ifdef USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE + int best_len; /* for ONIG_OPTION_FIND_LONGEST */ + UChar* best_s; +#endif +#ifdef USE_CALL + unsigned long subexp_call_in_search_counter; +#endif +#ifdef USE_SKIP_SEARCH + UChar* skip_search; +#endif +} MatchArg; + + +#if defined(ONIG_DEBUG_COMPILE) || defined(ONIG_DEBUG_MATCH) || defined(ONIG_DEBUG_STATISTICS) + +typedef struct { + short int opcode; + char* name; +} OpInfoType; + +static OpInfoType OpInfo[] = { + { OP_FINISH, "finish"}, + { OP_END, "end"}, + { OP_STR_1, "str_1"}, + { OP_STR_2, "str_2"}, + { OP_STR_3, "str_3"}, + { OP_STR_4, "str_4"}, + { OP_STR_5, "str_5"}, + { OP_STR_N, "str_n"}, + { OP_STR_MB2N1, "str_mb2-n1"}, + { OP_STR_MB2N2, "str_mb2-n2"}, + { OP_STR_MB2N3, "str_mb2-n3"}, + { OP_STR_MB2N, "str_mb2-n"}, + { OP_STR_MB3N, "str_mb3n"}, + { OP_STR_MBN, "str_mbn"}, + { OP_CCLASS, "cclass"}, + { OP_CCLASS_MB, "cclass-mb"}, + { OP_CCLASS_MIX, "cclass-mix"}, + { OP_CCLASS_NOT, "cclass-not"}, + { OP_CCLASS_MB_NOT, "cclass-mb-not"}, + { OP_CCLASS_MIX_NOT, "cclass-mix-not"}, + { OP_ANYCHAR, "anychar"}, + { OP_ANYCHAR_ML, "anychar-ml"}, + { OP_ANYCHAR_STAR, "anychar*"}, + { OP_ANYCHAR_ML_STAR, "anychar-ml*"}, + { OP_ANYCHAR_STAR_PEEK_NEXT, "anychar*-peek-next"}, + { OP_ANYCHAR_ML_STAR_PEEK_NEXT, "anychar-ml*-peek-next"}, + { OP_WORD, "word"}, + { OP_WORD_ASCII, "word-ascii"}, + { OP_NO_WORD, "not-word"}, + { OP_NO_WORD_ASCII, "not-word-ascii"}, + { OP_WORD_BOUNDARY, "word-boundary"}, + { OP_NO_WORD_BOUNDARY, "not-word-boundary"}, + { OP_WORD_BEGIN, "word-begin"}, + { OP_WORD_END, "word-end"}, + { OP_TEXT_SEGMENT_BOUNDARY, "text-segment-boundary"}, + { OP_BEGIN_BUF, "begin-buf"}, + { OP_END_BUF, "end-buf"}, + { OP_BEGIN_LINE, "begin-line"}, + { OP_END_LINE, "end-line"}, + { OP_SEMI_END_BUF, "semi-end-buf"}, + { OP_CHECK_POSITION, "check-position"}, + { OP_BACKREF1, "backref1"}, + { OP_BACKREF2, "backref2"}, + { OP_BACKREF_N, "backref-n"}, + { OP_BACKREF_N_IC, "backref-n-ic"}, + { OP_BACKREF_MULTI, "backref_multi"}, + { OP_BACKREF_MULTI_IC, "backref_multi-ic"}, + { OP_BACKREF_WITH_LEVEL, "backref_with_level"}, + { OP_BACKREF_WITH_LEVEL_IC, "backref_with_level-c"}, + { OP_BACKREF_CHECK, "backref_check"}, + { OP_BACKREF_CHECK_WITH_LEVEL, "backref_check_with_level"}, + { OP_MEM_START_PUSH, "mem-start-push"}, + { OP_MEM_START, "mem-start"}, + { OP_MEM_END_PUSH, "mem-end-push"}, +#ifdef USE_CALL + { OP_MEM_END_PUSH_REC, "mem-end-push-rec"}, +#endif + { OP_MEM_END, "mem-end"}, +#ifdef USE_CALL + { OP_MEM_END_REC, "mem-end-rec"}, +#endif + { OP_FAIL, "fail"}, + { OP_JUMP, "jump"}, + { OP_PUSH, "push"}, + { OP_PUSH_SUPER, "push-super"}, + { OP_POP, "pop"}, + { OP_POP_TO_MARK, "pop-to-mark"}, +#ifdef USE_OP_PUSH_OR_JUMP_EXACT + { OP_PUSH_OR_JUMP_EXACT1, "push-or-jump-e1"}, +#endif + { OP_PUSH_IF_PEEK_NEXT, "push-if-peek-next"}, + { OP_REPEAT, "repeat"}, + { OP_REPEAT_NG, "repeat-ng"}, + { OP_REPEAT_INC, "repeat-inc"}, + { OP_REPEAT_INC_NG, "repeat-inc-ng"}, + { OP_EMPTY_CHECK_START, "empty-check-start"}, + { OP_EMPTY_CHECK_END, "empty-check-end"}, + { OP_EMPTY_CHECK_END_MEMST, "empty-check-end-memst"}, +#ifdef USE_CALL + { OP_EMPTY_CHECK_END_MEMST_PUSH,"empty-check-end-memst-push"}, +#endif + { OP_MOVE, "move"}, + { OP_STEP_BACK_START, "step-back-start"}, + { OP_STEP_BACK_NEXT, "step-back-next"}, + { OP_CUT_TO_MARK, "cut-to-mark"}, + { OP_MARK, "mark"}, + { OP_SAVE_VAL, "save-val"}, + { OP_UPDATE_VAR, "update-var"}, +#ifdef USE_CALL + { OP_CALL, "call"}, + { OP_RETURN, "return"}, +#endif +#ifdef USE_CALLOUT + { OP_CALLOUT_CONTENTS, "callout-contents"}, + { OP_CALLOUT_NAME, "callout-name"}, +#endif + { -1, ""} +}; + +#endif + +#if defined(ONIG_DEBUG_COMPILE) || defined(ONIG_DEBUG_MATCH) + +/* arguments type */ +typedef enum { + ARG_SPECIAL = -1, + ARG_NON = 0, + ARG_RELADDR = 1, + ARG_ABSADDR = 2, + ARG_LENGTH = 3, + ARG_MEMNUM = 4, + ARG_OPTION = 5, + ARG_MODE = 6 +} OpArgType; + +static char* +op2name(int opcode) +{ + int i; + + for (i = 0; OpInfo[i].opcode >= 0; i++) { + if (opcode == OpInfo[i].opcode) return OpInfo[i].name; + } + + return ""; +} + +static void +p_after_op(FILE* f) +{ + fputs(" ", f); +} + +static void +p_string(FILE* f, int len, UChar* s) +{ + while (len-- > 0) { fputc(*s++, f); } +} + +static void +p_len_string(FILE* f, LengthType len, int mb_len, UChar* s) +{ + int x = len * mb_len; + + fprintf(f, "len:%d ", len); + while (x-- > 0) { fputc(*s++, f); } +} + +static void +p_rel_addr(FILE* f, RelAddrType rel_addr, Operation* p, Operation* start) +{ + char* flag; + char* space1; + char* space2; + RelAddrType curr; + AbsAddrType abs_addr; + + curr = (RelAddrType )(p - start); + abs_addr = curr + rel_addr; + + flag = rel_addr < 0 ? "" : "+"; + space1 = rel_addr < 10 ? " " : ""; + space2 = abs_addr < 10 ? " " : ""; + + fprintf(f, "%s%s%d => %s%d", space1, flag, rel_addr, space2, abs_addr); +} + +static int +bitset_on_num(BitSetRef bs) +{ + int i, n; + + n = 0; + for (i = 0; i < SINGLE_BYTE_SIZE; i++) { + if (BITSET_AT(bs, i)) n++; + } + + return n; +} + + +#ifdef USE_DIRECT_THREADED_CODE +#define GET_OPCODE(reg,index) (reg)->ocs[index] +#else +#define GET_OPCODE(reg,index) (reg)->ops[index].opcode +#endif + +static void +print_compiled_byte_code(FILE* f, regex_t* reg, int index, + Operation* start, OnigEncoding enc) +{ + static char* SaveTypeNames[] = { + "KEEP", + "S", + "RIGHT_RANGE" + }; + + static char* UpdateVarTypeNames[] = { + "KEEP_FROM_STACK_LAST", + "S_FROM_STACK", + "RIGHT_RANGE_FROM_STACK", + "RIGHT_RANGE_FROM_S_STACK", + "RIGHT_RANGE_TO_S", + "RIGHT_RANGE_INIT" + }; + + int i, n; + RelAddrType addr; + LengthType len; + MemNumType mem; + OnigCodePoint code; + ModeType mode; + UChar *q; + Operation* p; + enum OpCode opcode; + + p = reg->ops + index; + + opcode = GET_OPCODE(reg, index); + + fprintf(f, "%s", op2name(opcode)); + p_after_op(f); + + switch (opcode) { + case OP_STR_1: + p_string(f, 1, p->exact.s); break; + case OP_STR_2: + p_string(f, 2, p->exact.s); break; + case OP_STR_3: + p_string(f, 3, p->exact.s); break; + case OP_STR_4: + p_string(f, 4, p->exact.s); break; + case OP_STR_5: + p_string(f, 5, p->exact.s); break; + case OP_STR_N: + len = p->exact_n.n; + p_string(f, len, p->exact_n.s); break; + case OP_STR_MB2N1: + p_string(f, 2, p->exact.s); break; + case OP_STR_MB2N2: + p_string(f, 4, p->exact.s); break; + case OP_STR_MB2N3: + p_string(f, 3, p->exact.s); break; + case OP_STR_MB2N: + len = p->exact_n.n; + p_len_string(f, len, 2, p->exact_n.s); break; + case OP_STR_MB3N: + len = p->exact_n.n; + p_len_string(f, len, 3, p->exact_n.s); break; + case OP_STR_MBN: + { + int mb_len; + + mb_len = p->exact_len_n.len; + len = p->exact_len_n.n; + q = p->exact_len_n.s; + fprintf(f, "mblen:%d len:%d ", mb_len, len); + n = len * mb_len; + while (n-- > 0) { fputc(*q++, f); } + } + break; + + case OP_CCLASS: + case OP_CCLASS_NOT: + n = bitset_on_num(p->cclass.bsp); + fprintf(f, "n:%d", n); + break; + case OP_CCLASS_MB: + case OP_CCLASS_MB_NOT: + { + OnigCodePoint ncode; + OnigCodePoint* codes; + + codes = (OnigCodePoint* )p->cclass_mb.mb; + GET_CODE_POINT(ncode, codes); + codes++; + GET_CODE_POINT(code, codes); + fprintf(f, "n:%d code:0x%x", ncode, code); + } + break; + case OP_CCLASS_MIX: + case OP_CCLASS_MIX_NOT: + { + OnigCodePoint ncode; + OnigCodePoint* codes; + + codes = (OnigCodePoint* )p->cclass_mix.mb; + n = bitset_on_num(p->cclass_mix.bsp); + + GET_CODE_POINT(ncode, codes); + codes++; + GET_CODE_POINT(code, codes); + fprintf(f, "nsg:%d code:%u nmb:%u", n, code, ncode); + } + break; + + case OP_ANYCHAR_STAR_PEEK_NEXT: + case OP_ANYCHAR_ML_STAR_PEEK_NEXT: + p_string(f, 1, &(p->anychar_star_peek_next.c)); + break; + + case OP_WORD_BOUNDARY: + case OP_NO_WORD_BOUNDARY: + case OP_WORD_BEGIN: + case OP_WORD_END: + mode = p->word_boundary.mode; + fprintf(f, "mode:%d", mode); + break; + + case OP_BACKREF_N: + case OP_BACKREF_N_IC: + mem = p->backref_n.n1; + fprintf(f, "n:%d", mem); + break; + case OP_BACKREF_MULTI_IC: + case OP_BACKREF_MULTI: + case OP_BACKREF_CHECK: + n = p->backref_general.num; + fprintf(f, "n:%d ", n); + for (i = 0; i < n; i++) { + mem = (n == 1) ? p->backref_general.n1 : p->backref_general.ns[i]; + if (i > 0) fputs(", ", f); + fprintf(f, "%d", mem); + } + break; + case OP_BACKREF_WITH_LEVEL: + case OP_BACKREF_WITH_LEVEL_IC: + case OP_BACKREF_CHECK_WITH_LEVEL: + { + LengthType level; + + level = p->backref_general.nest_level; + fprintf(f, "level:%d ", level); + n = p->backref_general.num; + for (i = 0; i < n; i++) { + mem = (n == 1) ? p->backref_general.n1 : p->backref_general.ns[i]; + if (i > 0) fputs(", ", f); + fprintf(f, "%d", mem); + } + } + break; + + case OP_MEM_START: + case OP_MEM_START_PUSH: + mem = p->memory_start.num; + fprintf(f, "mem:%d", mem); + break; + + case OP_MEM_END: + case OP_MEM_END_PUSH: +#ifdef USE_CALL + case OP_MEM_END_REC: + case OP_MEM_END_PUSH_REC: +#endif + mem = p->memory_end.num; + fprintf(f, "mem:%d", mem); + break; + + case OP_JUMP: + addr = p->jump.addr; + p_rel_addr(f, addr, p, start); + break; + + case OP_PUSH: + case OP_PUSH_SUPER: + addr = p->push.addr; + p_rel_addr(f, addr, p, start); + break; + +#ifdef USE_OP_PUSH_OR_JUMP_EXACT + case OP_PUSH_OR_JUMP_EXACT1: + addr = p->push_or_jump_exact1.addr; + p_rel_addr(f, addr, p, start); + fprintf(f, " c:"); + p_string(f, 1, &(p->push_or_jump_exact1.c)); + break; +#endif + + case OP_PUSH_IF_PEEK_NEXT: + addr = p->push_if_peek_next.addr; + p_rel_addr(f, addr, p, start); + fprintf(f, " c:"); + p_string(f, 1, &(p->push_if_peek_next.c)); + break; + + case OP_REPEAT: + case OP_REPEAT_NG: + mem = p->repeat.id; + addr = p->repeat.addr; + fprintf(f, "id:%d ", mem); + p_rel_addr(f, addr, p, start); + break; + + case OP_REPEAT_INC: + case OP_REPEAT_INC_NG: + mem = p->repeat.id; + fprintf(f, "id:%d", mem); + break; + + case OP_EMPTY_CHECK_START: + mem = p->empty_check_start.mem; + fprintf(f, "id:%d", mem); + break; + case OP_EMPTY_CHECK_END: + case OP_EMPTY_CHECK_END_MEMST: +#ifdef USE_CALL + case OP_EMPTY_CHECK_END_MEMST_PUSH: +#endif + mem = p->empty_check_end.mem; + fprintf(f, "id:%d", mem); + break; + +#ifdef USE_CALL + case OP_CALL: + addr = p->call.addr; + fprintf(f, "=> %d", addr); + break; +#endif + + case OP_MOVE: + fprintf(f, "n:%d", p->move.n); + break; + + case OP_STEP_BACK_START: + addr = p->step_back_start.addr; + fprintf(f, "init:%d rem:%d ", + p->step_back_start.initial, + p->step_back_start.remaining); + p_rel_addr(f, addr, p, start); + break; + + case OP_POP_TO_MARK: + mem = p->pop_to_mark.id; + fprintf(f, "id:%d", mem); + break; + + case OP_CUT_TO_MARK: + { + int restore; + + mem = p->cut_to_mark.id; + restore = p->cut_to_mark.restore_pos; + fprintf(f, "id:%d restore:%d", mem, restore); + } + break; + + case OP_MARK: + { + int save; + + mem = p->mark.id; + save = p->mark.save_pos; + fprintf(f, "id:%d save:%d", mem, save); + } + break; + + case OP_SAVE_VAL: + { + SaveType type; + + type = p->save_val.type; + mem = p->save_val.id; + fprintf(f, "%s id:%d", SaveTypeNames[type], mem); + } + break; + + case OP_UPDATE_VAR: + { + UpdateVarType type; + int clear; + + type = p->update_var.type; + mem = p->update_var.id; + clear = p->update_var.clear; + fprintf(f, "%s id:%d", UpdateVarTypeNames[type], mem); + if (type == UPDATE_VAR_RIGHT_RANGE_FROM_S_STACK || + type == UPDATE_VAR_RIGHT_RANGE_FROM_STACK) + fprintf(f, " clear:%d", clear); + } + break; + +#ifdef USE_CALLOUT + case OP_CALLOUT_CONTENTS: + mem = p->callout_contents.num; + fprintf(f, "num:%d", mem); + break; + + case OP_CALLOUT_NAME: + { + int id; + + id = p->callout_name.id; + mem = p->callout_name.num; + fprintf(f, "id:%d num:%d", id, mem); + } + break; +#endif + + case OP_TEXT_SEGMENT_BOUNDARY: + if (p->text_segment_boundary.not != 0) + fprintf(f, " not"); + break; + + case OP_CHECK_POSITION: + switch (p->check_position.type) { + case CHECK_POSITION_SEARCH_START: + fprintf(f, "search-start"); break; + case CHECK_POSITION_CURRENT_RIGHT_RANGE: + fprintf(f, "current-right-range"); break; + default: + break; + }; + break; + + case OP_FINISH: + case OP_END: + case OP_ANYCHAR: + case OP_ANYCHAR_ML: + case OP_ANYCHAR_STAR: + case OP_ANYCHAR_ML_STAR: + case OP_WORD: + case OP_WORD_ASCII: + case OP_NO_WORD: + case OP_NO_WORD_ASCII: + case OP_BEGIN_BUF: + case OP_END_BUF: + case OP_BEGIN_LINE: + case OP_END_LINE: + case OP_SEMI_END_BUF: + case OP_BACKREF1: + case OP_BACKREF2: + case OP_FAIL: + case OP_POP: + case OP_STEP_BACK_NEXT: +#ifdef USE_CALL + case OP_RETURN: +#endif + break; + + default: + fprintf(DBGFP, "print_compiled_byte_code: undefined code %d\n", opcode); + break; + } +} +#endif /* defined(ONIG_DEBUG_COMPILE) || defined(ONIG_DEBUG_MATCH) */ + +#ifdef ONIG_DEBUG_COMPILE +extern void +onig_print_compiled_byte_code_list(FILE* f, regex_t* reg) +{ + Operation* bp; + Operation* start = reg->ops; + Operation* end = reg->ops + reg->ops_used; + + fprintf(f, "push_mem_start: 0x%x, push_mem_end: 0x%x\n", + reg->push_mem_start, reg->push_mem_end); + fprintf(f, "code-length: %d\n", reg->ops_used); + + bp = start; + while (bp < end) { + int pos = bp - start; + + fprintf(f, "%4d: ", pos); + print_compiled_byte_code(f, reg, pos, start, reg->enc); + fprintf(f, "\n"); + bp++; + } + fprintf(f, "\n"); +} +#endif + + +#ifdef USE_CAPTURE_HISTORY +static void history_tree_free(OnigCaptureTreeNode* node); + +static void +history_tree_clear(OnigCaptureTreeNode* node) +{ + int i; + + if (IS_NULL(node)) return ; + + for (i = 0; i < node->num_childs; i++) { + if (IS_NOT_NULL(node->childs[i])) { + history_tree_free(node->childs[i]); + } + } + for (i = 0; i < node->allocated; i++) { + node->childs[i] = (OnigCaptureTreeNode* )0; + } + node->num_childs = 0; + node->beg = ONIG_REGION_NOTPOS; + node->end = ONIG_REGION_NOTPOS; + node->group = -1; +} + +static void +history_tree_free(OnigCaptureTreeNode* node) +{ + history_tree_clear(node); + if (IS_NOT_NULL(node->childs)) xfree(node->childs); + + xfree(node); +} + +static void +history_root_free(OnigRegion* r) +{ + if (IS_NULL(r->history_root)) return ; + + history_tree_free(r->history_root); + r->history_root = (OnigCaptureTreeNode* )0; +} + +static OnigCaptureTreeNode* +history_node_new(void) +{ + OnigCaptureTreeNode* node; + + node = (OnigCaptureTreeNode* )xmalloc(sizeof(OnigCaptureTreeNode)); + CHECK_NULL_RETURN(node); + + node->childs = (OnigCaptureTreeNode** )0; + node->allocated = 0; + node->num_childs = 0; + node->group = -1; + node->beg = ONIG_REGION_NOTPOS; + node->end = ONIG_REGION_NOTPOS; + + return node; +} + +static int +history_tree_add_child(OnigCaptureTreeNode* parent, OnigCaptureTreeNode* child) +{ +#define HISTORY_TREE_INIT_ALLOC_SIZE 8 + + if (parent->num_childs >= parent->allocated) { + int n, i; + + if (IS_NULL(parent->childs)) { + n = HISTORY_TREE_INIT_ALLOC_SIZE; + parent->childs = + (OnigCaptureTreeNode** )xmalloc(sizeof(parent->childs[0]) * n); + } + else { + n = parent->allocated * 2; + parent->childs = + (OnigCaptureTreeNode** )xrealloc(parent->childs, + sizeof(parent->childs[0]) * n); + } + CHECK_NULL_RETURN_MEMERR(parent->childs); + for (i = parent->allocated; i < n; i++) { + parent->childs[i] = (OnigCaptureTreeNode* )0; + } + parent->allocated = n; + } + + parent->childs[parent->num_childs] = child; + parent->num_childs++; + return 0; +} + +static OnigCaptureTreeNode* +history_tree_clone(OnigCaptureTreeNode* node) +{ + int i; + OnigCaptureTreeNode *clone, *child; + + clone = history_node_new(); + CHECK_NULL_RETURN(clone); + + clone->beg = node->beg; + clone->end = node->end; + for (i = 0; i < node->num_childs; i++) { + child = history_tree_clone(node->childs[i]); + if (IS_NULL(child)) { + history_tree_free(clone); + return (OnigCaptureTreeNode* )0; + } + history_tree_add_child(clone, child); + } + + return clone; +} + +extern OnigCaptureTreeNode* +onig_get_capture_tree(OnigRegion* region) +{ + return region->history_root; +} +#endif /* USE_CAPTURE_HISTORY */ + + +static OnigCallbackEachMatchFunc CallbackEachMatch; + +extern OnigCallbackEachMatchFunc +onig_get_callback_each_match(void) +{ + return CallbackEachMatch; +} + +extern int +onig_set_callback_each_match(OnigCallbackEachMatchFunc f) +{ + CallbackEachMatch = f; + return ONIG_NORMAL; +} + + +extern void +onig_region_clear(OnigRegion* region) +{ + int i; + + for (i = 0; i < region->num_regs; i++) { + region->beg[i] = region->end[i] = ONIG_REGION_NOTPOS; + } +#ifdef USE_CAPTURE_HISTORY + history_root_free(region); +#endif +} + +extern int +onig_region_resize(OnigRegion* region, int n) +{ + region->num_regs = n; + + if (n < ONIG_NREGION) + n = ONIG_NREGION; + + if (region->allocated == 0) { + region->beg = (int* )xmalloc(n * sizeof(int)); + region->end = (int* )xmalloc(n * sizeof(int)); + + if (region->beg == 0 || region->end == 0) + return ONIGERR_MEMORY; + + region->allocated = n; + } + else if (region->allocated < n) { + region->beg = (int* )xrealloc(region->beg, n * sizeof(int)); + region->end = (int* )xrealloc(region->end, n * sizeof(int)); + + if (region->beg == 0 || region->end == 0) + return ONIGERR_MEMORY; + + region->allocated = n; + } + + return 0; +} + +static int +onig_region_resize_clear(OnigRegion* region, int n) +{ + int r; + + r = onig_region_resize(region, n); + if (r != 0) return r; + onig_region_clear(region); + return 0; +} + +extern int +onig_region_set(OnigRegion* region, int at, int beg, int end) +{ + if (at < 0) return ONIGERR_INVALID_ARGUMENT; + + if (at >= region->allocated) { + int r = onig_region_resize(region, at + 1); + if (r < 0) return r; + } + + region->beg[at] = beg; + region->end[at] = end; + return 0; +} + +extern void +onig_region_init(OnigRegion* region) +{ + region->num_regs = 0; + region->allocated = 0; + region->beg = (int* )0; + region->end = (int* )0; + region->history_root = (OnigCaptureTreeNode* )0; +} + +extern OnigRegion* +onig_region_new(void) +{ + OnigRegion* r; + + r = (OnigRegion* )xmalloc(sizeof(OnigRegion)); + CHECK_NULL_RETURN(r); + onig_region_init(r); + return r; +} + +extern void +onig_region_free(OnigRegion* r, int free_self) +{ + if (r != 0) { + if (r->allocated > 0) { + if (r->beg) xfree(r->beg); + if (r->end) xfree(r->end); + r->allocated = 0; + } +#ifdef USE_CAPTURE_HISTORY + history_root_free(r); +#endif + if (free_self) xfree(r); + } +} + +extern void +onig_region_copy(OnigRegion* to, OnigRegion* from) +{ +#define RREGC_SIZE (sizeof(int) * from->num_regs) + int i; + + if (to == from) return; + + if (to->allocated == 0) { + if (from->num_regs > 0) { + to->beg = (int* )xmalloc(RREGC_SIZE); + if (IS_NULL(to->beg)) return; + to->end = (int* )xmalloc(RREGC_SIZE); + if (IS_NULL(to->end)) return; + to->allocated = from->num_regs; + } + } + else if (to->allocated < from->num_regs) { + to->beg = (int* )xrealloc(to->beg, RREGC_SIZE); + if (IS_NULL(to->beg)) return; + to->end = (int* )xrealloc(to->end, RREGC_SIZE); + if (IS_NULL(to->end)) return; + to->allocated = from->num_regs; + } + + for (i = 0; i < from->num_regs; i++) { + to->beg[i] = from->beg[i]; + to->end[i] = from->end[i]; + } + to->num_regs = from->num_regs; + +#ifdef USE_CAPTURE_HISTORY + history_root_free(to); + + if (IS_NOT_NULL(from->history_root)) { + to->history_root = history_tree_clone(from->history_root); + } +#endif +} + +#ifdef USE_CALLOUT +#define CALLOUT_BODY(func, ain, aname_id, anum, user, args, result) do { \ + args.in = (ain);\ + args.name_id = (aname_id);\ + args.num = anum;\ + args.regex = reg;\ + args.string = str;\ + args.string_end = end;\ + args.start = sstart;\ + args.right_range = right_range;\ + args.current = s;\ + args.retry_in_match_counter = retry_in_match_counter;\ + args.msa = msa;\ + args.stk_base = stk_base;\ + args.stk = stk;\ + args.mem_start_stk = mem_start_stk;\ + args.mem_end_stk = mem_end_stk;\ + result = (func)(&args, user);\ +} while (0) + +#define RETRACTION_CALLOUT(func, aname_id, anum, user) do {\ + int result;\ + OnigCalloutArgs args;\ + CALLOUT_BODY(func, ONIG_CALLOUT_IN_RETRACTION, aname_id, anum, user, args, result);\ + switch (result) {\ + case ONIG_CALLOUT_FAIL:\ + case ONIG_CALLOUT_SUCCESS:\ + break;\ + default:\ + if (result > 0) {\ + result = ONIGERR_INVALID_ARGUMENT;\ + }\ + best_len = result;\ + goto match_at_end;\ + break;\ + }\ +} while(0) +#endif + + +/** stack **/ +#define STK_ALT_FLAG 0x0001 + +/* stack type */ +/* used by normal-POP */ +#define STK_SUPER_ALT STK_ALT_FLAG +#define STK_ALT (0x0002 | STK_ALT_FLAG) + +/* handled by normal-POP */ +#define STK_MEM_START 0x0010 +#define STK_MEM_END 0x8030 +#ifdef USE_REPEAT_AND_EMPTY_CHECK_LOCAL_VAR +#define STK_REPEAT_INC (0x0040 | STK_MASK_POP_HANDLED) +#else +#define STK_REPEAT_INC 0x0040 +#endif +#ifdef USE_CALLOUT +#define STK_CALLOUT 0x0070 +#endif + +/* avoided by normal-POP */ +#define STK_VOID 0x0000 /* for fill a blank */ +#ifdef USE_REPEAT_AND_EMPTY_CHECK_LOCAL_VAR +#define STK_EMPTY_CHECK_START (0x3000 | STK_MASK_POP_HANDLED) +#else +#define STK_EMPTY_CHECK_START 0x3000 +#endif +#define STK_EMPTY_CHECK_END 0x5000 /* for recursive call */ +#define STK_MEM_END_MARK 0x8100 +#define STK_CALL_FRAME (0x0400 | STK_MASK_POP_HANDLED) +#define STK_RETURN (0x0500 | STK_MASK_POP_HANDLED) +#define STK_SAVE_VAL 0x0600 +#define STK_MARK 0x0704 + +/* stack type check mask */ +#define STK_MASK_POP_USED STK_ALT_FLAG +#define STK_MASK_POP_HANDLED 0x0010 +#define STK_MASK_POP_HANDLED_TIL (STK_MASK_POP_HANDLED | 0x0004) +#define STK_MASK_TO_VOID_TARGET 0x100e +#define STK_MASK_MEM_END_OR_MARK 0x8000 /* MEM_END or MEM_END_MARK */ + +typedef ptrdiff_t StackIndex; + +#define INVALID_STACK_INDEX ((StackIndex )-1) + +typedef union { + StackIndex i; + UChar* s; +} StkPtrType; + + +typedef struct _StackType { + unsigned int type; + int zid; + union { + struct { + Operation* pcode; /* byte code position */ + UChar* pstr; /* string position */ + } state; + struct { + int count; +#ifdef USE_REPEAT_AND_EMPTY_CHECK_LOCAL_VAR + StackIndex prev_index; /* index of stack */ +#endif + } repeat_inc; + struct { + UChar *pstr; /* start/end position */ + /* Following information is set, if this stack type is MEM-START */ + StkPtrType prev_start; /* prev. info (for backtrack "(...)*" ) */ + StkPtrType prev_end; /* prev. info (for backtrack "(...)*" ) */ + } mem; + struct { + UChar *pstr; /* start position */ +#ifdef USE_REPEAT_AND_EMPTY_CHECK_LOCAL_VAR + StackIndex prev_index; /* index of stack */ +#endif + } empty_check; +#ifdef USE_CALL + struct { + Operation *ret_addr; /* byte code position */ + UChar *pstr; /* string position */ + } call_frame; +#endif + struct { + enum SaveType type; + UChar* v; + UChar* v2; + } val; +#ifdef USE_CALLOUT + struct { + int num; + OnigCalloutFunc func; + } callout; +#endif + } u; +} StackType; + +#ifdef USE_CALLOUT + +struct OnigCalloutArgsStruct { + OnigCalloutIn in; + int name_id; /* name id or ONIG_NON_NAME_ID */ + int num; + OnigRegex regex; + const OnigUChar* string; + const OnigUChar* string_end; + const OnigUChar* start; + const OnigUChar* right_range; + const OnigUChar* current; /* current matching position */ + unsigned long retry_in_match_counter; + + /* invisible to users */ + MatchArg* msa; + StackType* stk_base; + StackType* stk; + StkPtrType* mem_start_stk; + StkPtrType* mem_end_stk; +}; + +#endif + +#ifdef USE_REPEAT_AND_EMPTY_CHECK_LOCAL_VAR + +#define PTR_NUM_SIZE(reg) ((reg)->num_repeat + (reg)->num_empty_check + ((reg)->num_mem + 1) * 2) +#define UPDATE_FOR_STACK_REALLOC do{\ + repeat_stk = (StackIndex* )alloc_base;\ + empty_check_stk = (StackIndex* )(repeat_stk + reg->num_repeat);\ + mem_start_stk = (StkPtrType* )(empty_check_stk + reg->num_empty_check);\ + mem_end_stk = mem_start_stk + num_mem + 1;\ +} while(0) + +#define SAVE_REPEAT_STK_VAR(sid) stk->u.repeat_inc.prev_index = repeat_stk[sid] +#define LOAD_TO_REPEAT_STK_VAR(sid) repeat_stk[sid] = GET_STACK_INDEX(stk) +#define POP_REPEAT_INC else if (stk->type == STK_REPEAT_INC) {repeat_stk[stk->zid] = stk->u.repeat_inc.prev_index;} + +#define SAVE_EMPTY_CHECK_STK_VAR(sid) stk->u.empty_check.prev_index = empty_check_stk[sid] +#define LOAD_TO_EMPTY_CHECK_STK_VAR(sid) empty_check_stk[sid] = GET_STACK_INDEX(stk) +#define POP_EMPTY_CHECK_START else if (stk->type == STK_EMPTY_CHECK_START) {empty_check_stk[stk->zid] = stk->u.empty_check.prev_index;} + +#else + +#define PTR_NUM_SIZE(reg) (((reg)->num_mem + 1) * 2) +#define UPDATE_FOR_STACK_REALLOC do{\ + mem_start_stk = (StkPtrType* )alloc_base;\ + mem_end_stk = mem_start_stk + num_mem + 1;\ +} while(0) + +#define SAVE_REPEAT_STK_VAR(sid) +#define LOAD_TO_REPEAT_STK_VAR(sid) +#define POP_REPEAT_INC + +#define SAVE_EMPTY_CHECK_STK_VAR(sid) +#define LOAD_TO_EMPTY_CHECK_STK_VAR(sid) +#define POP_EMPTY_CHECK_START + +#endif /* USE_REPEAT_AND_EMPTY_CHECK_LOCAL_VAR */ + +#ifdef USE_RETRY_LIMIT +#define RETRY_IN_MATCH_ARG_INIT(msa,mpv) \ + (msa).retry_limit_in_match = (mpv)->retry_limit_in_match;\ + (msa).retry_limit_in_search = (mpv)->retry_limit_in_search;\ + (msa).retry_limit_in_search_counter = 0; +#else +#define RETRY_IN_MATCH_ARG_INIT(msa,mpv) +#endif + +#if defined(USE_CALL) +#define SUBEXP_CALL_IN_MATCH_ARG_INIT(msa,mpv) \ + (msa).subexp_call_in_search_counter = 0; + +#define POP_CALL else if (stk->type == STK_RETURN) {subexp_call_nest_counter++;} else if (stk->type == STK_CALL_FRAME) {subexp_call_nest_counter--;} +#else +#define SUBEXP_CALL_IN_MATCH_ARG_INIT(msa,mpv) +#define POP_CALL +#endif + +#ifdef USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE +#ifdef USE_SKIP_SEARCH +#define MATCH_ARG_INIT(msa, reg, arg_option, arg_region, arg_start, mpv) do { \ + (msa).stack_p = (void* )0;\ + (msa).options = (arg_option)|(reg)->options;\ + (msa).region = (arg_region);\ + (msa).start = (arg_start);\ + (msa).match_stack_limit = (mpv)->match_stack_limit;\ + RETRY_IN_MATCH_ARG_INIT(msa,mpv)\ + SUBEXP_CALL_IN_MATCH_ARG_INIT(msa,mpv)\ + (msa).mp = mpv;\ + (msa).best_len = ONIG_MISMATCH;\ + (msa).ptr_num = PTR_NUM_SIZE(reg);\ + (msa).skip_search = (UChar* )(arg_start);\ +} while(0) +#else +#define MATCH_ARG_INIT(msa, reg, arg_option, arg_region, arg_start, mpv) do { \ + (msa).stack_p = (void* )0;\ + (msa).options = (arg_option)|(reg)->options;\ + (msa).region = (arg_region);\ + (msa).start = (arg_start);\ + (msa).match_stack_limit = (mpv)->match_stack_limit;\ + RETRY_IN_MATCH_ARG_INIT(msa,mpv)\ + SUBEXP_CALL_IN_MATCH_ARG_INIT(msa,mpv)\ + (msa).mp = mpv;\ + (msa).best_len = ONIG_MISMATCH;\ + (msa).ptr_num = PTR_NUM_SIZE(reg);\ +} while(0) +#endif +#else +#ifdef USE_SKIP_SEARCH +#define MATCH_ARG_INIT(msa, reg, arg_option, arg_region, arg_start, mpv) do { \ + (msa).stack_p = (void* )0;\ + (msa).options = (arg_option)|(reg)->options;\ + (msa).region = (arg_region);\ + (msa).start = (arg_start);\ + (msa).match_stack_limit = (mpv)->match_stack_limit;\ + RETRY_IN_MATCH_ARG_INIT(msa,mpv)\ + SUBEXP_CALL_IN_MATCH_ARG_INIT(msa,mpv)\ + (msa).mp = mpv;\ + (msa).ptr_num = PTR_NUM_SIZE(reg);\ + (msa).skip_search = (UChar* )(arg_start);\ +} while(0) +#else +#define MATCH_ARG_INIT(msa, reg, arg_option, arg_region, arg_start, mpv) do { \ + (msa).stack_p = (void* )0;\ + (msa).options = (arg_option)|(reg)->options;\ + (msa).region = (arg_region);\ + (msa).start = (arg_start);\ + (msa).match_stack_limit = (mpv)->match_stack_limit;\ + RETRY_IN_MATCH_ARG_INIT(msa,mpv)\ + SUBEXP_CALL_IN_MATCH_ARG_INIT(msa,mpv)\ + (msa).mp = mpv;\ + (msa).ptr_num = PTR_NUM_SIZE(reg);\ +} while(0) +#endif +#endif + +#define MATCH_ARG_FREE(msa) if ((msa).stack_p) xfree((msa).stack_p) + + +#define ALLOCA_PTR_NUM_LIMIT 50 + +#define STACK_INIT(stack_num) do {\ + if (msa->stack_p) {\ + is_alloca = 0;\ + alloc_base = msa->stack_p;\ + stk_base = (StackType* )(alloc_base\ + + (sizeof(StkPtrType) * msa->ptr_num));\ + stk = stk_base;\ + stk_end = stk_base + msa->stack_n;\ + }\ + else if (msa->ptr_num > ALLOCA_PTR_NUM_LIMIT) {\ + is_alloca = 0;\ + alloc_base = (char* )xmalloc(sizeof(StkPtrType) * msa->ptr_num\ + + sizeof(StackType) * (stack_num));\ + CHECK_NULL_RETURN_MEMERR(alloc_base);\ + stk_base = (StackType* )(alloc_base\ + + (sizeof(StkPtrType) * msa->ptr_num));\ + stk = stk_base;\ + stk_end = stk_base + (stack_num);\ + }\ + else {\ + is_alloca = 1;\ + alloc_base = (char* )xalloca(sizeof(StkPtrType) * msa->ptr_num\ + + sizeof(StackType) * (stack_num));\ + CHECK_NULL_RETURN_MEMERR(alloc_base);\ + stk_base = (StackType* )(alloc_base\ + + (sizeof(StkPtrType) * msa->ptr_num));\ + stk = stk_base;\ + stk_end = stk_base + (stack_num);\ + }\ +} while(0); + + +#define STACK_SAVE(msa,is_alloca,alloc_base) do{\ + (msa)->stack_n = (int )(stk_end - stk_base);\ + if ((is_alloca) != 0) {\ + size_t size = sizeof(StkPtrType) * (msa)->ptr_num\ + + sizeof(StackType) * (msa)->stack_n;\ + (msa)->stack_p = xmalloc(size);\ + CHECK_NULL_RETURN_MEMERR((msa)->stack_p);\ + xmemcpy((msa)->stack_p, (alloc_base), size);\ + }\ + else {\ + (msa)->stack_p = (alloc_base);\ + };\ +} while(0) + +static unsigned int MatchStackLimit = DEFAULT_MATCH_STACK_LIMIT_SIZE; + +extern unsigned int +onig_get_match_stack_limit_size(void) +{ + return MatchStackLimit; +} + +extern int +onig_set_match_stack_limit_size(unsigned int size) +{ + MatchStackLimit = size; + return 0; +} + +#ifdef USE_RETRY_LIMIT + +static unsigned long RetryLimitInMatch = DEFAULT_RETRY_LIMIT_IN_MATCH; +static unsigned long RetryLimitInSearch = DEFAULT_RETRY_LIMIT_IN_SEARCH; + +#define CHECK_RETRY_LIMIT_IN_MATCH do {\ + if (++retry_in_match_counter >= retry_limit_in_match && \ + retry_limit_in_match != 0) {\ + MATCH_AT_ERROR_RETURN((retry_in_match_counter >= msa->retry_limit_in_match && msa->retry_limit_in_match != 0) ? ONIGERR_RETRY_LIMIT_IN_MATCH_OVER : ONIGERR_RETRY_LIMIT_IN_SEARCH_OVER); \ + }\ +} while (0) + +#else + +#define CHECK_RETRY_LIMIT_IN_MATCH + +#endif /* USE_RETRY_LIMIT */ + +extern unsigned long +onig_get_retry_limit_in_match(void) +{ +#ifdef USE_RETRY_LIMIT + return RetryLimitInMatch; +#else + return 0; +#endif +} + +extern int +onig_set_retry_limit_in_match(unsigned long n) +{ +#ifdef USE_RETRY_LIMIT + RetryLimitInMatch = n; + return 0; +#else + return ONIG_NO_SUPPORT_CONFIG; +#endif +} + +extern unsigned long +onig_get_retry_limit_in_search(void) +{ +#ifdef USE_RETRY_LIMIT + return RetryLimitInSearch; +#else + return 0; +#endif +} + +extern int +onig_set_retry_limit_in_search(unsigned long n) +{ +#ifdef USE_RETRY_LIMIT + RetryLimitInSearch = n; + return 0; +#else + return ONIG_NO_SUPPORT_CONFIG; +#endif +} + +#ifdef USE_CALL +static unsigned long SubexpCallLimitInSearch = DEFAULT_SUBEXP_CALL_LIMIT_IN_SEARCH; + +extern unsigned long +onig_get_subexp_call_limit_in_search(void) +{ + return SubexpCallLimitInSearch; +} + +extern int +onig_set_subexp_call_limit_in_search(unsigned long n) +{ + SubexpCallLimitInSearch = n; + return 0; +} + +#endif + + +#ifdef USE_CALLOUT +static OnigCalloutFunc DefaultProgressCallout; +static OnigCalloutFunc DefaultRetractionCallout; +#endif + +extern OnigMatchParam* +onig_new_match_param(void) +{ + OnigMatchParam* p; + + p = (OnigMatchParam* )xmalloc(sizeof(*p)); + if (IS_NOT_NULL(p)) { + onig_initialize_match_param(p); + } + + return p; +} + +extern void +onig_free_match_param_content(OnigMatchParam* p) +{ +#ifdef USE_CALLOUT + if (IS_NOT_NULL(p->callout_data)) { + xfree(p->callout_data); + p->callout_data = 0; + } +#endif +} + +extern void +onig_free_match_param(OnigMatchParam* p) +{ + if (IS_NOT_NULL(p)) { + onig_free_match_param_content(p); + xfree(p); + } +} + +extern int +onig_initialize_match_param(OnigMatchParam* mp) +{ + mp->match_stack_limit = MatchStackLimit; +#ifdef USE_RETRY_LIMIT + mp->retry_limit_in_match = RetryLimitInMatch; + mp->retry_limit_in_search = RetryLimitInSearch; +#endif + + mp->callout_user_data = 0; + +#ifdef USE_CALLOUT + mp->progress_callout_of_contents = DefaultProgressCallout; + mp->retraction_callout_of_contents = DefaultRetractionCallout; + mp->match_at_call_counter = 0; + mp->callout_data = 0; + mp->callout_data_alloc_num = 0; +#endif + + return ONIG_NORMAL; +} + +#ifdef USE_CALLOUT + +static int +adjust_match_param(regex_t* reg, OnigMatchParam* mp) +{ + RegexExt* ext = reg->extp; + + mp->match_at_call_counter = 0; + + if (IS_NULL(ext) || ext->callout_num == 0) return ONIG_NORMAL; + + if (ext->callout_num > mp->callout_data_alloc_num) { + CalloutData* d; + size_t n = ext->callout_num * sizeof(*d); + if (IS_NOT_NULL(mp->callout_data)) + d = (CalloutData* )xrealloc(mp->callout_data, n); + else + d = (CalloutData* )xmalloc(n); + CHECK_NULL_RETURN_MEMERR(d); + + mp->callout_data = d; + mp->callout_data_alloc_num = ext->callout_num; + } + + xmemset(mp->callout_data, 0, mp->callout_data_alloc_num * sizeof(CalloutData)); + return ONIG_NORMAL; +} + +#define ADJUST_MATCH_PARAM(reg, mp) \ + r = adjust_match_param(reg, mp);\ + if (r != ONIG_NORMAL) return r; + +#define CALLOUT_DATA_AT_NUM(mp, num) ((mp)->callout_data + ((num) - 1)) + +extern int +onig_check_callout_data_and_clear_old_values(OnigCalloutArgs* args) +{ + OnigMatchParam* mp; + int num; + CalloutData* d; + + mp = args->msa->mp; + num = args->num; + + d = CALLOUT_DATA_AT_NUM(mp, num); + if (d->last_match_at_call_counter != mp->match_at_call_counter) { + xmemset(d, 0, sizeof(*d)); + d->last_match_at_call_counter = mp->match_at_call_counter; + return d->last_match_at_call_counter; + } + + return 0; +} + +extern int +onig_get_callout_data_dont_clear_old(regex_t* reg, OnigMatchParam* mp, + int callout_num, int slot, + OnigType* type, OnigValue* val) +{ + OnigType t; + CalloutData* d; + + if (callout_num <= 0) return ONIGERR_INVALID_ARGUMENT; + + d = CALLOUT_DATA_AT_NUM(mp, callout_num); + t = d->slot[slot].type; + if (IS_NOT_NULL(type)) *type = t; + if (IS_NOT_NULL(val)) *val = d->slot[slot].val; + return (t == ONIG_TYPE_VOID ? ONIG_VALUE_IS_NOT_SET : ONIG_NORMAL); +} + +extern int +onig_get_callout_data_by_tag_dont_clear_old(regex_t* reg, + OnigMatchParam* mp, const UChar* tag, const UChar* tag_end, int slot, + OnigType* type, OnigValue* val) +{ + int num; + + num = onig_get_callout_num_by_tag(reg, tag, tag_end); + if (num < 0) return num; + if (num == 0) return ONIGERR_INVALID_CALLOUT_TAG_NAME; + + return onig_get_callout_data_dont_clear_old(reg, mp, num, slot, type, val); +} + +extern int +onig_get_callout_data_by_callout_args_self_dont_clear_old( + OnigCalloutArgs* args, int slot, OnigType* type, OnigValue* val) +{ + return onig_get_callout_data_dont_clear_old(args->regex, args->msa->mp, + args->num, slot, type, val); +} + +extern int +onig_get_callout_data(regex_t* reg, OnigMatchParam* mp, + int callout_num, int slot, + OnigType* type, OnigValue* val) +{ + OnigType t; + CalloutData* d; + + if (callout_num <= 0) return ONIGERR_INVALID_ARGUMENT; + + d = CALLOUT_DATA_AT_NUM(mp, callout_num); + if (d->last_match_at_call_counter != mp->match_at_call_counter) { + xmemset(d, 0, sizeof(*d)); + d->last_match_at_call_counter = mp->match_at_call_counter; + } + + t = d->slot[slot].type; + if (IS_NOT_NULL(type)) *type = t; + if (IS_NOT_NULL(val)) *val = d->slot[slot].val; + return (t == ONIG_TYPE_VOID ? ONIG_VALUE_IS_NOT_SET : ONIG_NORMAL); +} + +extern int +onig_get_callout_data_by_tag(regex_t* reg, OnigMatchParam* mp, + const UChar* tag, const UChar* tag_end, int slot, + OnigType* type, OnigValue* val) +{ + int num; + + num = onig_get_callout_num_by_tag(reg, tag, tag_end); + if (num < 0) return num; + if (num == 0) return ONIGERR_INVALID_CALLOUT_TAG_NAME; + + return onig_get_callout_data(reg, mp, num, slot, type, val); +} + +extern int +onig_get_callout_data_by_callout_args(OnigCalloutArgs* args, + int callout_num, int slot, + OnigType* type, OnigValue* val) +{ + return onig_get_callout_data(args->regex, args->msa->mp, callout_num, slot, + type, val); +} + +extern int +onig_get_callout_data_by_callout_args_self(OnigCalloutArgs* args, + int slot, OnigType* type, OnigValue* val) +{ + return onig_get_callout_data(args->regex, args->msa->mp, args->num, slot, + type, val); +} + +extern int +onig_set_callout_data(regex_t* reg, OnigMatchParam* mp, + int callout_num, int slot, + OnigType type, OnigValue* val) +{ + CalloutData* d; + + if (callout_num <= 0) return ONIGERR_INVALID_ARGUMENT; + + d = CALLOUT_DATA_AT_NUM(mp, callout_num); + d->slot[slot].type = type; + d->slot[slot].val = *val; + d->last_match_at_call_counter = mp->match_at_call_counter; + + return ONIG_NORMAL; +} + +extern int +onig_set_callout_data_by_tag(regex_t* reg, OnigMatchParam* mp, + const UChar* tag, const UChar* tag_end, int slot, + OnigType type, OnigValue* val) +{ + int num; + + num = onig_get_callout_num_by_tag(reg, tag, tag_end); + if (num < 0) return num; + if (num == 0) return ONIGERR_INVALID_CALLOUT_TAG_NAME; + + return onig_set_callout_data(reg, mp, num, slot, type, val); +} + +extern int +onig_set_callout_data_by_callout_args(OnigCalloutArgs* args, + int callout_num, int slot, + OnigType type, OnigValue* val) +{ + return onig_set_callout_data(args->regex, args->msa->mp, callout_num, slot, + type, val); +} + +extern int +onig_set_callout_data_by_callout_args_self(OnigCalloutArgs* args, + int slot, OnigType type, OnigValue* val) +{ + return onig_set_callout_data(args->regex, args->msa->mp, args->num, slot, + type, val); +} + +#else +#define ADJUST_MATCH_PARAM(reg, mp) +#endif /* USE_CALLOUT */ + + +static int +stack_double(int* is_alloca, char** arg_alloc_base, + StackType** arg_stk_base, StackType** arg_stk_end, + StackType** arg_stk, MatchArg* msa) +{ + unsigned int n; + int used; + size_t size; + size_t new_size; + char* alloc_base; + char* new_alloc_base; + StackType *stk_base, *stk_end, *stk; + + alloc_base = *arg_alloc_base; + stk_base = *arg_stk_base; + stk_end = *arg_stk_end; + stk = *arg_stk; + + n = (unsigned int )(stk_end - stk_base); + size = sizeof(StkPtrType) * msa->ptr_num + sizeof(StackType) * n; + n *= 2; + new_size = sizeof(StkPtrType) * msa->ptr_num + sizeof(StackType) * n; + if (*is_alloca != 0) { + new_alloc_base = (char* )xmalloc(new_size); + if (IS_NULL(new_alloc_base)) { + STACK_SAVE(msa, *is_alloca, alloc_base); + return ONIGERR_MEMORY; + } + xmemcpy(new_alloc_base, alloc_base, size); + *is_alloca = 0; + } + else { + if (msa->match_stack_limit != 0 && n > msa->match_stack_limit) { + if ((unsigned int )(stk_end - stk_base) == msa->match_stack_limit) { + STACK_SAVE(msa, *is_alloca, alloc_base); + return ONIGERR_MATCH_STACK_LIMIT_OVER; + } + else + n = msa->match_stack_limit; + } + new_alloc_base = (char* )xrealloc(alloc_base, new_size); + if (IS_NULL(new_alloc_base)) { + STACK_SAVE(msa, *is_alloca, alloc_base); + return ONIGERR_MEMORY; + } + } + + alloc_base = new_alloc_base; + used = (int )(stk - stk_base); + *arg_alloc_base = alloc_base; + *arg_stk_base = (StackType* )(alloc_base + + (sizeof(StkPtrType) * msa->ptr_num)); + *arg_stk = *arg_stk_base + used; + *arg_stk_end = *arg_stk_base + n; + return 0; +} + +#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) return r;\ + UPDATE_FOR_STACK_REALLOC;\ + }\ +} while(0) + +#define STACK_AT(index) (stk_base + (index)) +#define GET_STACK_INDEX(stk) ((stk) - stk_base) + +#define STACK_PUSH_TYPE(stack_type) do {\ + STACK_ENSURE(1);\ + stk->type = (stack_type);\ + STACK_INC;\ +} while(0) + +#define IS_TO_VOID_TARGET(stk) (((stk)->type & STK_MASK_TO_VOID_TARGET) != 0) + +#define STACK_PUSH(stack_type,pat,s) do {\ + STACK_ENSURE(1);\ + stk->type = (stack_type);\ + stk->u.state.pcode = (pat);\ + stk->u.state.pstr = (s);\ + STACK_INC;\ +} while(0) + +#define STACK_PUSH_WITH_ZID(stack_type,pat,s,id) do {\ + STACK_ENSURE(1);\ + stk->type = (stack_type);\ + stk->zid = (int )(id);\ + stk->u.state.pcode = (pat);\ + stk->u.state.pstr = (s);\ + STACK_INC;\ +} while(0) + +#define STACK_PUSH_ENSURED(stack_type,pat) do {\ + stk->type = (stack_type);\ + stk->u.state.pcode = (pat);\ + STACK_INC;\ +} while(0) + +#ifdef ONIG_DEBUG_MATCH +#define STACK_PUSH_BOTTOM(stack_type,pat) do {\ + stk->type = (stack_type);\ + stk->u.state.pcode = (pat);\ + stk->u.state.pstr = s;\ + STACK_INC;\ +} while (0) +#else +#define STACK_PUSH_BOTTOM(stack_type,pat) do {\ + stk->type = (stack_type);\ + stk->u.state.pcode = (pat);\ + STACK_INC;\ +} while (0) +#endif + +#define STACK_PUSH_ALT(pat,s) STACK_PUSH(STK_ALT,pat,s) +#define STACK_PUSH_SUPER_ALT(pat,s) STACK_PUSH(STK_SUPER_ALT,pat,s) +#define STACK_PUSH_ALT_WITH_ZID(pat,s,id) STACK_PUSH_WITH_ZID(STK_ALT,pat,s,id) + +#if 0 +#define STACK_PUSH_REPEAT(sid, pat) do {\ + STACK_ENSURE(1);\ + stk->type = STK_REPEAT;\ + stk->zid = (sid);\ + stk->u.repeat.pcode = (pat);\ + STACK_INC;\ +} while(0) +#endif + +#define STACK_PUSH_REPEAT_INC(sid, ct) do {\ + STACK_ENSURE(1);\ + stk->type = STK_REPEAT_INC;\ + stk->zid = (sid);\ + stk->u.repeat_inc.count = (ct);\ + SAVE_REPEAT_STK_VAR(sid);\ + LOAD_TO_REPEAT_STK_VAR(sid);\ + STACK_INC;\ +} while(0) + +#define STACK_PUSH_MEM_START(mnum, s) do {\ + STACK_ENSURE(1);\ + stk->type = STK_MEM_START;\ + stk->zid = (mnum);\ + stk->u.mem.pstr = (s);\ + stk->u.mem.prev_start = mem_start_stk[mnum];\ + stk->u.mem.prev_end = mem_end_stk[mnum];\ + mem_start_stk[mnum].i = GET_STACK_INDEX(stk);\ + mem_end_stk[mnum].i = INVALID_STACK_INDEX;\ + STACK_INC;\ +} while(0) + +#define STACK_PUSH_MEM_END(mnum, s) do {\ + STACK_ENSURE(1);\ + stk->type = STK_MEM_END;\ + stk->zid = (mnum);\ + stk->u.mem.pstr = (s);\ + stk->u.mem.prev_start = mem_start_stk[mnum];\ + stk->u.mem.prev_end = mem_end_stk[mnum];\ + mem_end_stk[mnum].i = GET_STACK_INDEX(stk);\ + STACK_INC;\ +} while(0) + +#define STACK_PUSH_MEM_END_MARK(mnum) do {\ + STACK_ENSURE(1);\ + stk->type = STK_MEM_END_MARK;\ + stk->zid = (mnum);\ + STACK_INC;\ +} while(0) + +#define STACK_GET_MEM_START(mnum, k) do {\ + int level = 0;\ + k = stk;\ + while (k > stk_base) {\ + k--;\ + if ((k->type & STK_MASK_MEM_END_OR_MARK) != 0 \ + && k->zid == (mnum)) {\ + level++;\ + }\ + else if (k->type == STK_MEM_START && k->zid == (mnum)) {\ + if (level == 0) break;\ + level--;\ + }\ + }\ +} while(0) + +#define STACK_GET_MEM_RANGE(k, mnum, start, end) do {\ + int level = 0;\ + while (k < stk) {\ + if (k->type == STK_MEM_START && k->u.mem.num == (mnum)) {\ + if (level == 0) (start) = k->u.mem.pstr;\ + level++;\ + }\ + else if (k->type == STK_MEM_END && k->u.mem.num == (mnum)) {\ + level--;\ + if (level == 0) {\ + (end) = k->u.mem.pstr;\ + break;\ + }\ + }\ + k++;\ + }\ +} while(0) + +#define STACK_PUSH_EMPTY_CHECK_START(cnum, s) do {\ + STACK_ENSURE(1);\ + stk->type = STK_EMPTY_CHECK_START;\ + stk->zid = (cnum);\ + stk->u.empty_check.pstr = (s);\ + SAVE_EMPTY_CHECK_STK_VAR(cnum);\ + LOAD_TO_EMPTY_CHECK_STK_VAR(cnum);\ + STACK_INC;\ +} while(0) + +#define STACK_PUSH_EMPTY_CHECK_END(cnum) do {\ + STACK_ENSURE(1);\ + stk->type = STK_EMPTY_CHECK_END;\ + stk->zid = (cnum);\ + STACK_INC;\ +} while(0) + +#define STACK_PUSH_CALL_FRAME(pat) do {\ + STACK_ENSURE(1);\ + stk->type = STK_CALL_FRAME;\ + stk->u.call_frame.ret_addr = (pat);\ + STACK_INC;\ +} while(0) + +#define STACK_PUSH_RETURN do {\ + STACK_ENSURE(1);\ + stk->type = STK_RETURN;\ + STACK_INC;\ +} while(0) + +#define STACK_PUSH_MARK(sid) do {\ + STACK_ENSURE(1);\ + stk->type = STK_MARK;\ + stk->zid = (sid);\ + STACK_INC;\ +} while(0) + +#define STACK_PUSH_MARK_WITH_POS(sid, s) do {\ + STACK_ENSURE(1);\ + stk->type = STK_MARK;\ + stk->zid = (sid);\ + stk->u.val.v = (UChar* )(s);\ + STACK_INC;\ +} while(0) + +#define STACK_PUSH_SAVE_VAL(sid, stype, sval) do {\ + STACK_ENSURE(1);\ + stk->type = STK_SAVE_VAL;\ + stk->zid = (sid);\ + stk->u.val.type = (stype);\ + stk->u.val.v = (UChar* )(sval);\ + STACK_INC;\ +} while(0) + +#define STACK_PUSH_SAVE_VAL_WITH_SPREV(sid, stype, sval) do {\ + STACK_ENSURE(1);\ + stk->type = STK_SAVE_VAL;\ + stk->zid = (sid);\ + stk->u.val.type = (stype);\ + stk->u.val.v = (UChar* )(sval);\ + STACK_INC;\ +} while(0) + +#define STACK_GET_SAVE_VAL_TYPE_LAST(stype, sval) do {\ + StackType *k = stk;\ + while (k > stk_base) {\ + k--;\ + STACK_BASE_CHECK(k, "STACK_GET_SAVE_VAL_TYPE_LAST"); \ + if (k->type == STK_SAVE_VAL && k->u.val.type == (stype)) {\ + (sval) = k->u.val.v;\ + break;\ + }\ + }\ +} while (0) + +#define STACK_GET_SAVE_VAL_TYPE_LAST_ID(stype, sid, sval, clear) do {\ + int level = 0;\ + StackType *k = stk;\ + while (k > stk_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->zid == (sid)) {\ + if (level == 0) {\ + (sval) = k->u.val.v;\ + if (clear != 0) k->type = STK_VOID;\ + break;\ + }\ + }\ + else if (k->type == STK_CALL_FRAME)\ + level--;\ + else if (k->type == STK_RETURN)\ + level++;\ + }\ +} while (0) + +#define STACK_GET_SAVE_VAL_TYPE_LAST_ID_WITH_SPREV(stype, sid, sval) do { \ + int level = 0;\ + StackType *k = stk;\ + while (k > stk_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->zid == (sid)) {\ + if (level == 0) {\ + (sval) = k->u.val.v;\ + break;\ + }\ + }\ + else if (k->type == STK_CALL_FRAME)\ + level--;\ + else if (k->type == STK_RETURN)\ + level++;\ + }\ +} while (0) + +#define STACK_PUSH_CALLOUT_CONTENTS(anum, func) do {\ + STACK_ENSURE(1);\ + stk->type = STK_CALLOUT;\ + stk->zid = ONIG_NON_NAME_ID;\ + stk->u.callout.num = (anum);\ + stk->u.callout.func = (func);\ + STACK_INC;\ +} while(0) + +#define STACK_PUSH_CALLOUT_NAME(aid, anum, func) do {\ + STACK_ENSURE(1);\ + stk->type = STK_CALLOUT;\ + stk->zid = (aid);\ + stk->u.callout.num = (anum);\ + stk->u.callout.func = (func);\ + STACK_INC;\ +} while(0) + +#ifdef ONIG_DEBUG +#define STACK_BASE_CHECK(p, at) \ + if ((p) < stk_base) {\ + fprintf(DBGFP, "at %s\n", at);\ + MATCH_AT_ERROR_RETURN(ONIGERR_STACK_BUG);\ + } +#else +#define STACK_BASE_CHECK(p, at) +#endif + +#define STACK_POP_ONE do {\ + stk--;\ + STACK_BASE_CHECK(stk, "STACK_POP_ONE"); \ +} while(0) + + +#ifdef USE_CALLOUT +#define POP_CALLOUT_CASE \ + else if (stk->type == STK_CALLOUT) {\ + RETRACTION_CALLOUT(stk->u.callout.func, stk->zid, stk->u.callout.num, msa->mp->callout_user_data);\ + } +#else +#define POP_CALLOUT_CASE +#endif + +#define STACK_POP do {\ + switch (pop_level) {\ + case STACK_POP_LEVEL_FREE:\ + while (1) {\ + stk--;\ + STACK_BASE_CHECK(stk, "STACK_POP"); \ + if ((stk->type & STK_MASK_POP_USED) != 0) break;\ + }\ + break;\ + case STACK_POP_LEVEL_MEM_START:\ + while (1) {\ + stk--;\ + 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->zid] = stk->u.mem.prev_start;\ + mem_end_stk[stk->zid] = stk->u.mem.prev_end;\ + }\ + }\ + break;\ + default:\ + while (1) {\ + stk--;\ + STACK_BASE_CHECK(stk, "STACK_POP 3"); \ + if ((stk->type & STK_MASK_POP_USED) != 0) break;\ + else if ((stk->type & STK_MASK_POP_HANDLED) != 0) {\ + if (stk->type == STK_MEM_START) {\ + mem_start_stk[stk->zid] = stk->u.mem.prev_start;\ + mem_end_stk[stk->zid] = stk->u.mem.prev_end;\ + }\ + else if (stk->type == STK_MEM_END) {\ + mem_start_stk[stk->zid] = stk->u.mem.prev_start;\ + mem_end_stk[stk->zid] = stk->u.mem.prev_end;\ + }\ + POP_REPEAT_INC \ + POP_EMPTY_CHECK_START \ + POP_CALL \ + POP_CALLOUT_CASE\ + }\ + }\ + break;\ + }\ +} while(0) + +#define STACK_POP_TO_MARK(sid) do {\ + while (1) {\ + stk--;\ + STACK_BASE_CHECK(stk, "STACK_POP_TO_MARK");\ + if ((stk->type & STK_MASK_POP_HANDLED_TIL) != 0) {\ + if (stk->type == STK_MARK) {\ + if (stk->zid == (sid)) break;\ + }\ + else {\ + if (stk->type == STK_MEM_START) {\ + mem_start_stk[stk->zid] = stk->u.mem.prev_start;\ + mem_end_stk[stk->zid] = stk->u.mem.prev_end;\ + }\ + else if (stk->type == STK_MEM_END) {\ + mem_start_stk[stk->zid] = stk->u.mem.prev_start;\ + mem_end_stk[stk->zid] = stk->u.mem.prev_end;\ + }\ + POP_REPEAT_INC \ + POP_EMPTY_CHECK_START \ + POP_CALL \ + /* Don't call callout here because negation of total success by (?!..) (?type & STK_MASK_POP_HANDLED_TIL) != 0) {\ + if (stk->type == (til_type)) break;\ + else {\ + if (stk->type == STK_MEM_START) {\ + mem_start_stk[stk->zid] = stk->u.mem.prev_start;\ + mem_end_stk[stk->zid] = stk->u.mem.prev_end;\ + }\ + else if (stk->type == STK_MEM_END) {\ + mem_start_stk[stk->zid] = stk->u.mem.prev_start;\ + mem_end_stk[stk->zid] = stk->u.mem.prev_end;\ + }\ + POP_REPEAT_INC \ + POP_EMPTY_CHECK_START \ + POP_CALL \ + /* Don't call callout here because negation of total success by (?!..) (?type == STK_MARK) {\ + if (k->zid == (sid)) {\ + k->type = STK_VOID;\ + break;\ + } /* don't void different id mark */ \ + }\ + else\ + k->type = STK_VOID;\ + }\ + }\ +} while(0) + +#define EMPTY_CHECK_START_SEARCH(sid, k) do {\ + k = stk;\ + while (1) {\ + k--;\ + STACK_BASE_CHECK(k, "EMPTY_CHECK_START_SEARCH"); \ + if (k->type == STK_EMPTY_CHECK_START) {\ + if (k->zid == (sid)) break;\ + }\ + }\ +} while(0) + +#ifdef USE_REPEAT_AND_EMPTY_CHECK_LOCAL_VAR + +#define GET_EMPTY_CHECK_START(sid, k) do {\ + if (reg->num_call == 0) {\ + k = STACK_AT(empty_check_stk[sid]);\ + }\ + else {\ + EMPTY_CHECK_START_SEARCH(sid, k);\ + }\ +} while(0) +#else + +#define GET_EMPTY_CHECK_START(sid, k) EMPTY_CHECK_START_SEARCH(sid, k) + +#endif + + +#define STACK_EMPTY_CHECK(isnull, sid, s) do {\ + StackType* k;\ + GET_EMPTY_CHECK_START(sid, k);\ + (isnull) = (k->u.empty_check.pstr == (s));\ +} while(0) + +#define STACK_MEM_START_GET_PREV_END_ADDR(k /* STK_MEM_START*/, reg, addr) do {\ + if (k->u.mem.prev_end.i == INVALID_STACK_INDEX) {\ + (addr) = 0;\ + }\ + else {\ + if (MEM_STATUS_AT((reg)->push_mem_end, k->zid))\ + (addr) = STACK_AT(k->u.mem.prev_end.i)->u.mem.pstr;\ + else\ + (addr) = k->u.mem.prev_end.s;\ + }\ +} while (0) + +#ifdef USE_RIGID_CHECK_CAPTURES_IN_EMPTY_REPEAT +#define STACK_EMPTY_CHECK_MEM(isnull, sid, empty_status_mem, s, reg) do {\ + StackType* klow;\ + GET_EMPTY_CHECK_START(sid, klow);\ + if (klow->u.empty_check.pstr != (s)) {\ + stack_empty_check_mem_not_empty:\ + (isnull) = 0;\ + }\ + else {\ + StackType *k, *kk;\ + MemStatusType ms = (empty_status_mem);\ + (isnull) = 1;\ + k = stk;\ + while (k > klow) {\ + k--;\ + if (k->type == STK_MEM_END && MEM_STATUS_LIMIT_AT(ms, k->zid)) {\ + kk = klow;\ + while (kk < k) {\ + if (kk->type == STK_MEM_START && kk->zid == k->zid) {\ + if (kk->u.mem.prev_end.i == INVALID_STACK_INDEX || \ + ((STACK_AT(kk->u.mem.prev_end.i)->u.mem.pstr != k->u.mem.pstr || STACK_AT(kk->u.mem.prev_start.i)->u.mem.pstr != STACK_AT(k->u.mem.prev_start.i)->u.mem.pstr) && (STACK_AT(k->u.mem.prev_start.i)->u.mem.pstr != k->u.mem.pstr || STACK_AT(kk->u.mem.prev_start.i)->u.mem.pstr != STACK_AT(kk->u.mem.prev_end.i)->u.mem.pstr))) {\ + goto stack_empty_check_mem_not_empty;\ + }\ + else {\ + ms &= ~((MemStatusType )1 << k->zid);\ + break;\ + }\ + }\ + kk++;\ + }\ + if (ms == 0) break;\ + }\ + }\ + }\ +} while(0) + +#define STACK_EMPTY_CHECK_MEM_REC(isnull,sid,empty_status_mem,s,reg) do {\ + int level = 0;\ + StackType* klow = stk;\ + while (1) {\ + klow--;\ + STACK_BASE_CHECK(klow, "STACK_EMPTY_CHECK_MEM_REC");\ + if (klow->type == STK_EMPTY_CHECK_START) {\ + if (klow->zid == (sid)) {\ + if (level == 0) {\ + if (klow->u.empty_check.pstr != (s)) {\ + stack_empty_check_mem_rec_not_empty:\ + (isnull) = 0;\ + break;\ + }\ + else {\ + StackType *k, *kk;\ + MemStatusType ms;\ + (isnull) = 1;\ + if ((empty_status_mem) == 0) break;\ + ms = (empty_status_mem);\ + k = stk;\ + while (k > klow) {\ + k--;\ + if (k->type == STK_MEM_END) {\ + if (level == 0 && MEM_STATUS_LIMIT_AT(ms, k->zid)) {\ + kk = klow;\ + kk++;\ + while (kk < k) {\ + if (kk->type == STK_MEM_START && kk->zid == k->zid) {\ + if (kk->u.mem.prev_end.i == INVALID_STACK_INDEX || \ + ((STACK_AT(kk->u.mem.prev_end.i)->u.mem.pstr != k->u.mem.pstr || STACK_AT(kk->u.mem.prev_start.i)->u.mem.pstr != STACK_AT(k->u.mem.prev_start.i)->u.mem.pstr) && (STACK_AT(k->u.mem.prev_start.i)->u.mem.pstr != k->u.mem.pstr || STACK_AT(kk->u.mem.prev_start.i)->u.mem.pstr != STACK_AT(kk->u.mem.prev_end.i)->u.mem.pstr))) {\ + goto stack_empty_check_mem_rec_not_empty;\ + }\ + else {\ + ms &= ~((MemStatusType )1 << k->zid);\ + break;\ + }\ + }\ + else if (kk->type == STK_EMPTY_CHECK_START) {\ + if (kk->zid == (sid)) level++;\ + }\ + else if (kk->type == STK_EMPTY_CHECK_END) {\ + if (kk->zid == (sid)) level--;\ + }\ + kk++;\ + }\ + level = 0;\ + if (ms == 0) break;\ + }\ + }\ + else if (k->type == STK_EMPTY_CHECK_START) {\ + if (k->zid == (sid)) level++;\ + }\ + else if (k->type == STK_EMPTY_CHECK_END) {\ + if (k->zid == (sid)) level--;\ + }\ + }\ + break;\ + }\ + }\ + else {\ + level--;\ + }\ + }\ + }\ + else if (klow->type == STK_EMPTY_CHECK_END) {\ + if (klow->zid == (sid)) level++;\ + }\ + }\ +} while(0) +#else +#define STACK_EMPTY_CHECK_REC(isnull,id,s) do {\ + int level = 0;\ + StackType* k = stk;\ + while (1) {\ + k--;\ + STACK_BASE_CHECK(k, "STACK_EMPTY_CHECK_REC"); \ + if (k->type == STK_EMPTY_CHECK_START) {\ + if (k->u.empty_check.num == (id)) {\ + if (level == 0) {\ + (isnull) = (k->u.empty_check.pstr == (s));\ + break;\ + }\ + }\ + level--;\ + }\ + else if (k->type == STK_EMPTY_CHECK_END) {\ + level++;\ + }\ + }\ +} while(0) +#endif /* USE_RIGID_CHECK_CAPTURES_IN_EMPTY_REPEAT */ + +#define STACK_GET_REPEAT_COUNT_SEARCH(sid, c) do {\ + StackType* k = stk;\ + while (1) {\ + (k)--;\ + STACK_BASE_CHECK(k, "STACK_GET_REPEAT_COUNT_SEARCH");\ + if ((k)->type == STK_REPEAT_INC) {\ + if ((k)->zid == (sid)) {\ + (c) = (k)->u.repeat_inc.count;\ + break;\ + }\ + }\ + else if ((k)->type == STK_RETURN) {\ + int level = -1;\ + while (1) {\ + (k)--;\ + if ((k)->type == STK_CALL_FRAME) {\ + level++;\ + if (level == 0) break;\ + }\ + else if ((k)->type == STK_RETURN) level--;\ + }\ + }\ + }\ +} while(0) + +#ifdef USE_REPEAT_AND_EMPTY_CHECK_LOCAL_VAR + +#define STACK_GET_REPEAT_COUNT(sid, c) do {\ + if (reg->num_call == 0) {\ + (c) = (STACK_AT(repeat_stk[sid]))->u.repeat_inc.count;\ + }\ + else {\ + STACK_GET_REPEAT_COUNT_SEARCH(sid, c);\ + }\ +} while(0) +#else +#define STACK_GET_REPEAT_COUNT(sid, c) STACK_GET_REPEAT_COUNT_SEARCH(sid, c) +#endif + +#ifdef USE_CALL +#define STACK_RETURN(addr) do {\ + int level = 0;\ + StackType* k = stk;\ + while (1) {\ + k--;\ + STACK_BASE_CHECK(k, "STACK_RETURN"); \ + if (k->type == STK_CALL_FRAME) {\ + if (level == 0) {\ + (addr) = k->u.call_frame.ret_addr;\ + break;\ + }\ + else level--;\ + }\ + else if (k->type == STK_RETURN)\ + level++;\ + }\ +} while(0) + +#define GET_STACK_RETURN_CALL(k,addr) do {\ + int level = 0;\ + k = stk;\ + while (1) {\ + k--;\ + STACK_BASE_CHECK(k, "GET_STACK_RETURN_CALL");\ + if (k->type == STK_CALL_FRAME) {\ + if (level == 0) {\ + (addr) = k->u.call_frame.ret_addr;\ + break;\ + }\ + else level--;\ + }\ + else if (k->type == STK_RETURN)\ + level++;\ + }\ +} while(0) +#endif + + +#define STRING_CMP(s1,s2,len) do {\ + while (len-- > 0) {\ + if (*s1++ != *s2++) goto fail;\ + }\ +} while(0) + +#define STRING_CMP_IC(case_fold_flag,s1,ps2,len) do {\ + if (string_cmp_ic(encode, case_fold_flag, s1, ps2, len) == 0) \ + goto fail; \ +} while(0) + +static int string_cmp_ic(OnigEncoding enc, int case_fold_flag, + UChar* s1, UChar** ps2, int mblen) +{ + UChar buf1[ONIGENC_MBC_CASE_FOLD_MAXLEN]; + UChar buf2[ONIGENC_MBC_CASE_FOLD_MAXLEN]; + UChar *p1, *p2, *end1, *s2, *end2; + int len1, len2; + + s2 = *ps2; + end1 = s1 + mblen; + end2 = s2 + mblen; + while (s1 < end1) { + len1 = ONIGENC_MBC_CASE_FOLD(enc, case_fold_flag, &s1, end1, buf1); + len2 = ONIGENC_MBC_CASE_FOLD(enc, case_fold_flag, &s2, end2, buf2); + if (len1 != len2) return 0; + p1 = buf1; + p2 = buf2; + while (len1-- > 0) { + if (*p1 != *p2) return 0; + p1++; + p2++; + } + if (s2 >= end2) { + if (s1 < end1) return 0; + else break; + } + } + + *ps2 = s2; + return 1; +} + +#define STRING_CMP_VALUE(s1,s2,len,is_fail) do {\ + is_fail = 0;\ + while (len-- > 0) {\ + if (*s1++ != *s2++) {\ + is_fail = 1; break;\ + }\ + }\ +} while(0) + +#define STRING_CMP_VALUE_IC(case_fold_flag,s1,ps2,len,is_fail) do {\ + if (string_cmp_ic(encode, case_fold_flag, s1, ps2, len) == 0) \ + is_fail = 1; \ + else \ + is_fail = 0; \ +} while(0) + + +#define IS_EMPTY_STR (str == end) +#define ON_STR_BEGIN(s) ((s) == str) +#define ON_STR_END(s) ((s) == end) +#define DATA_ENSURE_CHECK1 (s < right_range) +#define DATA_ENSURE_CHECK(n) ((n) <= right_range - s) +#define DATA_ENSURE(n) if (right_range - s < (n)) goto fail + +#define INIT_RIGHT_RANGE right_range = (UChar* )in_right_range + +#ifdef USE_CAPTURE_HISTORY +static int +make_capture_history_tree(OnigCaptureTreeNode* node, StackType** kp, + StackType* stk_top, UChar* str, regex_t* reg) +{ + int n, r; + OnigCaptureTreeNode* child; + StackType* k = *kp; + + while (k < stk_top) { + if (k->type == STK_MEM_START) { + n = k->zid; + if (n <= ONIG_MAX_CAPTURE_HISTORY_GROUP && + MEM_STATUS_AT(reg->capture_history, n) != 0) { + child = history_node_new(); + CHECK_NULL_RETURN_MEMERR(child); + child->group = n; + child->beg = (int )(k->u.mem.pstr - str); + r = history_tree_add_child(node, child); + if (r != 0) return r; + *kp = (k + 1); + r = make_capture_history_tree(child, kp, stk_top, str, reg); + if (r != 0) return r; + + k = *kp; + child->end = (int )(k->u.mem.pstr - str); + } + } + else if (k->type == STK_MEM_END) { + if (k->zid == node->group) { + node->end = (int )(k->u.mem.pstr - str); + *kp = k; + return 0; + } + } + k++; + } + + return 1; /* 1: root node ending. */ +} +#endif + +#ifdef USE_BACKREF_WITH_LEVEL +static int mem_is_in_memp(int mem, int num, MemNumType* memp) +{ + int i; + + for (i = 0; i < num; i++) { + if (mem == (int )memp[i]) return 1; + } + 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, MemNumType* memp, + UChar** s, const UChar* send) +{ + UChar *ss, *p, *pstart, *pend = NULL_UCHARP; + int level; + StackType* k; + + level = 0; + k = top; + k--; + while (k >= stk_base) { + if (k->type == STK_CALL_FRAME) { + level--; + } + else if (k->type == STK_RETURN) { + level++; + } + else if (level == nest) { + if (k->type == STK_MEM_START) { + if (mem_is_in_memp(k->zid, mem_num, memp)) { + pstart = k->u.mem.pstr; + if (IS_NOT_NULL(pend)) { + if (pend - pstart > send - *s) return 0; /* or goto next_mem; */ + p = pstart; + ss = *s; + + if (ignore_case != 0) { + if (string_cmp_ic(reg->enc, case_fold_flag, + pstart, &ss, (int )(pend - pstart)) == 0) + return 0; /* or goto next_mem; */ + } + else { + while (p < pend) { + if (*p++ != *ss++) return 0; /* or goto next_mem; */ + } + } + + *s = ss; + return 1; + } + } + } + else if (k->type == STK_MEM_END) { + if (mem_is_in_memp(k->zid, mem_num, memp)) { + pend = k->u.mem.pstr; + } + } + } + k--; + } + + return 0; +} + +static int +backref_check_at_nested_level(regex_t* reg, + StackType* top, StackType* stk_base, + int nest, int mem_num, MemNumType* memp) +{ + int level; + StackType* k; + + level = 0; + k = top; + k--; + while (k >= stk_base) { + if (k->type == STK_CALL_FRAME) { + level--; + } + else if (k->type == STK_RETURN) { + level++; + } + else if (level == nest) { + if (k->type == STK_MEM_END) { + if (mem_is_in_memp(k->zid, mem_num, memp)) { + return 1; + } + } + } + k--; + } + + return 0; +} +#endif /* USE_BACKREF_WITH_LEVEL */ + +static int SubexpCallMaxNestLevel = DEFAULT_SUBEXP_CALL_MAX_NEST_LEVEL; + +#ifdef ONIG_DEBUG_STATISTICS + +#ifdef USE_TIMEOFDAY + +static struct timeval ts, te; +#define GETTIME(t) gettimeofday(&(t), (struct timezone* )0) +#define TIMEDIFF(te,ts) (((te).tv_usec - (ts).tv_usec) + \ + (((te).tv_sec - (ts).tv_sec)*1000000)) +#else + +static struct tms ts, te; +#define GETTIME(t) times(&(t)) +#define TIMEDIFF(te,ts) ((te).tms_utime - (ts).tms_utime) + +#endif /* USE_TIMEOFDAY */ + +static int OpCounter[256]; +static int OpPrevCounter[256]; +static unsigned long OpTime[256]; +static int OpCurr = OP_FINISH; +static int OpPrevTarget = OP_FAIL; +static int MaxStackDepth = 0; + +#define SOP_IN(opcode) do {\ + if (opcode == OpPrevTarget) OpPrevCounter[OpCurr]++;\ + OpCurr = opcode;\ + OpCounter[opcode]++;\ + GETTIME(ts);\ +} while(0) + +#define SOP_OUT do {\ + GETTIME(te);\ + OpTime[OpCurr] += TIMEDIFF(te, ts);\ +} while(0) + +extern void +onig_statistics_init(void) +{ + int i; + for (i = 0; i < 256; i++) { + OpCounter[i] = OpPrevCounter[i] = 0; OpTime[i] = 0; + } + MaxStackDepth = 0; +} + +extern int +onig_print_statistics(FILE* f) +{ + int r; + int i; + + r = fprintf(f, " count prev time\n"); + if (r < 0) return -1; + + for (i = 0; OpInfo[i].opcode >= 0; i++) { + r = fprintf(f, "%8d: %8d: %10ld: %s\n", + OpCounter[i], OpPrevCounter[i], OpTime[i], OpInfo[i].name); + if (r < 0) return -1; + } + r = fprintf(f, "\nmax stack depth: %d\n", MaxStackDepth); + if (r < 0) return -1; + + return 0; +} + +#define STACK_INC do {\ + stk++;\ + if (stk - stk_base > MaxStackDepth) \ + MaxStackDepth = stk - stk_base;\ +} while(0) + +#else +#define STACK_INC stk++ + +#define SOP_IN(opcode) +#define SOP_OUT +#endif + + +/* matching region of POSIX API */ +typedef int regoff_t; + +typedef struct { + regoff_t rm_so; + regoff_t rm_eo; +} posix_regmatch_t; + + + +#ifdef USE_THREADED_CODE + +#define BYTECODE_INTERPRETER_START GOTO_OP; +#define BYTECODE_INTERPRETER_END +#define CASE_OP(x) L_##x: SOP_IN(OP_##x); MATCH_DEBUG_OUT(0) +#define DEFAULT_OP /* L_DEFAULT: */ +#define NEXT_OP JUMP_OP +#define JUMP_OP GOTO_OP +#ifdef USE_DIRECT_THREADED_CODE +#define GOTO_OP goto *(p->opaddr) +#else +#define GOTO_OP goto *opcode_to_label[p->opcode] +#endif +#define BREAK_OP /* Nothing */ + +#else + +#define BYTECODE_INTERPRETER_START \ + while (1) {\ + MATCH_DEBUG_OUT(0)\ + switch (p->opcode) { +#define BYTECODE_INTERPRETER_END } } +#define CASE_OP(x) case OP_##x: SOP_IN(OP_##x); +#define DEFAULT_OP default: +#define NEXT_OP break +#define JUMP_OP GOTO_OP +#define GOTO_OP continue; break +#define BREAK_OP break + +#endif /* USE_THREADED_CODE */ + +#define INC_OP p++ +#define JUMP_OUT_WITH_SPREV_SET SOP_OUT; NEXT_OP +#define JUMP_OUT SOP_OUT; JUMP_OP +#define BREAK_OUT SOP_OUT; BREAK_OP +#define CHECK_INTERRUPT_JUMP_OUT SOP_OUT; CHECK_INTERRUPT_IN_MATCH; JUMP_OP + + +#ifdef ONIG_DEBUG_MATCH +#define MATCH_DEBUG_OUT(offset) do {\ + Operation *xp;\ + UChar *q, *bp, buf[50];\ + int len, spos;\ + spos = IS_NOT_NULL(s) ? (int )(s - str) : -1;\ + xp = p - (offset);\ + fprintf(DBGFP, "%7u: %7ld: %4d> \"",\ + counter, GET_STACK_INDEX(stk), spos);\ + counter++;\ + bp = buf;\ + if (IS_NOT_NULL(s)) {\ + for (i = 0, q = s; i < 7 && q < end; i++) {\ + len = enclen(encode, q);\ + while (len-- > 0) *bp++ = *q++;\ + }\ + if (q < end) { xmemcpy(bp, "...\"", 4); bp += 4; }\ + else { xmemcpy(bp, "\"", 1); bp += 1; }\ + }\ + else {\ + xmemcpy(bp, "\"", 1); bp += 1;\ + }\ + *bp = 0;\ + fputs((char* )buf, DBGFP);\ + for (i = 0; i < 20 - (bp - buf); i++) fputc(' ', DBGFP);\ + if (xp == FinishCode)\ + fprintf(DBGFP, "----: finish");\ + else {\ + int index;\ + enum OpCode zopcode;\ + Operation* addr;\ + index = (int )(xp - reg->ops);\ + fprintf(DBGFP, "%4d: ", index);\ + print_compiled_byte_code(DBGFP, reg, index, reg->ops, encode); \ + zopcode = GET_OPCODE(reg, index);\ + if (zopcode == OP_RETURN) {\ + GET_STACK_RETURN_CALL(stkp, addr);\ + fprintf(DBGFP, " f:%ld -> %d", \ + GET_STACK_INDEX(stkp), (int )(addr - reg->ops));\ + }\ + }\ + fprintf(DBGFP, "\n");\ + } while(0); +#else +#define MATCH_DEBUG_OUT(offset) +#endif + +#define MATCH_AT_ERROR_RETURN(err_code) do {\ + best_len = err_code; goto match_at_end;\ +} while(0) + +#define MATCH_COUNTER_OUT(title) do {\ + int i;\ + fprintf(DBGFP, "%s (%ld): retry limit: %8lu/%8lu, subexp_call: %8lu\n", (title), (sstart - str), retry_in_match_counter, retry_limit_in_match, msa->subexp_call_in_search_counter); \ + fprintf(DBGFP, " ");\ + for (i = 0; i < MAX_SUBEXP_CALL_COUNTERS; i++) {\ + fprintf(DBGFP, " %6lu", subexp_call_counters[i]);\ + }\ + fprintf(DBGFP, "\n");\ + fflush(DBGFP);\ +} while (0) + + +/* match data(str - end) from position (sstart). */ +static int +match_at(regex_t* reg, const UChar* str, const UChar* end, + const UChar* in_right_range, const UChar* sstart, + MatchArg* msa) +{ + +#if defined(USE_DIRECT_THREADED_CODE) + static Operation FinishCode[] = { { .opaddr=&&L_FINISH } }; +#else + static Operation FinishCode[] = { { OP_FINISH } }; +#endif + +#ifdef USE_THREADED_CODE + static const void *opcode_to_label[] = { + &&L_FINISH, + &&L_END, + &&L_STR_1, + &&L_STR_2, + &&L_STR_3, + &&L_STR_4, + &&L_STR_5, + &&L_STR_N, + &&L_STR_MB2N1, + &&L_STR_MB2N2, + &&L_STR_MB2N3, + &&L_STR_MB2N, + &&L_STR_MB3N, + &&L_STR_MBN, + &&L_CCLASS, + &&L_CCLASS_MB, + &&L_CCLASS_MIX, + &&L_CCLASS_NOT, + &&L_CCLASS_MB_NOT, + &&L_CCLASS_MIX_NOT, + &&L_ANYCHAR, + &&L_ANYCHAR_ML, + &&L_ANYCHAR_STAR, + &&L_ANYCHAR_ML_STAR, + &&L_ANYCHAR_STAR_PEEK_NEXT, + &&L_ANYCHAR_ML_STAR_PEEK_NEXT, + &&L_WORD, + &&L_WORD_ASCII, + &&L_NO_WORD, + &&L_NO_WORD_ASCII, + &&L_WORD_BOUNDARY, + &&L_NO_WORD_BOUNDARY, + &&L_WORD_BEGIN, + &&L_WORD_END, + &&L_TEXT_SEGMENT_BOUNDARY, + &&L_BEGIN_BUF, + &&L_END_BUF, + &&L_BEGIN_LINE, + &&L_END_LINE, + &&L_SEMI_END_BUF, + &&L_CHECK_POSITION, + &&L_BACKREF1, + &&L_BACKREF2, + &&L_BACKREF_N, + &&L_BACKREF_N_IC, + &&L_BACKREF_MULTI, + &&L_BACKREF_MULTI_IC, +#ifdef USE_BACKREF_WITH_LEVEL + &&L_BACKREF_WITH_LEVEL, + &&L_BACKREF_WITH_LEVEL_IC, +#endif + &&L_BACKREF_CHECK, +#ifdef USE_BACKREF_WITH_LEVEL + &&L_BACKREF_CHECK_WITH_LEVEL, +#endif + &&L_MEM_START, + &&L_MEM_START_PUSH, + &&L_MEM_END_PUSH, +#ifdef USE_CALL + &&L_MEM_END_PUSH_REC, +#endif + &&L_MEM_END, +#ifdef USE_CALL + &&L_MEM_END_REC, +#endif + &&L_FAIL, + &&L_JUMP, + &&L_PUSH, + &&L_PUSH_SUPER, + &&L_POP, + &&L_POP_TO_MARK, +#ifdef USE_OP_PUSH_OR_JUMP_EXACT + &&L_PUSH_OR_JUMP_EXACT1, +#endif + &&L_PUSH_IF_PEEK_NEXT, + &&L_REPEAT, + &&L_REPEAT_NG, + &&L_REPEAT_INC, + &&L_REPEAT_INC_NG, + &&L_EMPTY_CHECK_START, + &&L_EMPTY_CHECK_END, + &&L_EMPTY_CHECK_END_MEMST, +#ifdef USE_CALL + &&L_EMPTY_CHECK_END_MEMST_PUSH, +#endif + &&L_MOVE, + &&L_STEP_BACK_START, + &&L_STEP_BACK_NEXT, + &&L_CUT_TO_MARK, + &&L_MARK, + &&L_SAVE_VAL, + &&L_UPDATE_VAR, +#ifdef USE_CALL + &&L_CALL, + &&L_RETURN, +#endif +#ifdef USE_CALLOUT + &&L_CALLOUT_CONTENTS, + &&L_CALLOUT_NAME, +#endif + }; +#endif + + int i, n, num_mem, best_len, pop_level; + LengthType tlen, tlen2; + MemNumType mem; + RelAddrType addr; + UChar *s, *ps; + UChar *right_range; + int is_alloca; + char *alloc_base; + StackType *stk_base, *stk, *stk_end; + StackType *stkp; /* used as any purpose. */ + StkPtrType *mem_start_stk, *mem_end_stk; + UChar* keep; + OnigRegion* region; + +#ifdef USE_REPEAT_AND_EMPTY_CHECK_LOCAL_VAR + StackIndex *repeat_stk; + StackIndex *empty_check_stk; +#endif +#ifdef USE_RETRY_LIMIT + unsigned long retry_limit_in_match; + unsigned long retry_in_match_counter; +#endif +#ifdef USE_CALLOUT + int of; +#endif +#ifdef ONIG_DEBUG_MATCH_COUNTER +#define MAX_SUBEXP_CALL_COUNTERS 9 + unsigned long subexp_call_counters[MAX_SUBEXP_CALL_COUNTERS]; +#endif + + OnigOptionType options; + Operation* p = reg->ops; + OnigEncoding encode = reg->enc; + OnigCaseFoldType case_fold_flag = reg->case_fold_flag; + +#ifdef USE_CALL + unsigned long subexp_call_nest_counter = 0; +#endif + +#ifdef ONIG_DEBUG_MATCH + static unsigned int counter = 1; +#endif + +#ifdef ONIG_DEBUG_MATCH_COUNTER + for (i = 0; i < MAX_SUBEXP_CALL_COUNTERS; i++) { + subexp_call_counters[i] = 0; + } +#endif + +#ifdef USE_DIRECT_THREADED_CODE + if (IS_NULL(msa)) { + for (i = 0; i < reg->ops_used; i++) { + const void* addr; + addr = opcode_to_label[reg->ocs[i]]; + p->opaddr = addr; + p++; + } + return ONIG_NORMAL; + } +#endif + + options = msa->options; + +#ifdef USE_CALLOUT + msa->mp->match_at_call_counter++; +#endif + +#ifdef USE_RETRY_LIMIT + retry_limit_in_match = msa->retry_limit_in_match; + if (msa->retry_limit_in_search != 0) { + unsigned long rem = msa->retry_limit_in_search + - msa->retry_limit_in_search_counter; + if (rem < retry_limit_in_match || retry_limit_in_match == 0) + retry_limit_in_match = rem; + } +#endif + + pop_level = reg->stack_pop_level; + num_mem = reg->num_mem; + STACK_INIT(INIT_MATCH_STACK_SIZE); + UPDATE_FOR_STACK_REALLOC; + for (i = 1; i <= num_mem; i++) { + mem_start_stk[i].i = mem_end_stk[i].i = INVALID_STACK_INDEX; + } + +#ifdef ONIG_DEBUG_MATCH + fprintf(DBGFP, "match_at: str: %p, end: %p, start: %p\n", str, end, sstart); + fprintf(DBGFP, "size: %d, start offset: %d\n", + (int )(end - str), (int )(sstart - str)); +#endif + + best_len = ONIG_MISMATCH; + keep = s = (UChar* )sstart; + STACK_PUSH_BOTTOM(STK_ALT, FinishCode); /* bottom stack */ + INIT_RIGHT_RANGE; + +#ifdef USE_RETRY_LIMIT + retry_in_match_counter = 0; +#endif + + BYTECODE_INTERPRETER_START { + CASE_OP(END) + if (OPTON_MATCH_WHOLE_STRING(options)) { + if (! ON_STR_END(s)) goto fail; + } + + n = (int )(s - sstart); + if (n == 0 && OPTON_FIND_NOT_EMPTY(options)) { + best_len = ONIG_MISMATCH; + goto fail; /* for retry */ + } + +#ifdef USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE + if (OPTON_FIND_LONGEST(options)) { + if (n > best_len) { + if (n > msa->best_len) { + best_len = n; + msa->best_len = n; + msa->best_s = (UChar* )sstart; + } + else { + if (s >= in_right_range && msa->best_s == sstart) { + goto op_end_out; + } + else { + goto fail; /* for retry */ + } + } + } + else { + goto fail; /* for retry */ + } + } + else { + best_len = n; + } +#else + best_len = n; +#endif + + /* set region */ + region = msa->region; + if (region) { + if (keep > s) keep = s; + +#ifdef USE_POSIX_API + if (OPTON_POSIX_REGION(options)) { + posix_regmatch_t* rmt = (posix_regmatch_t* )region; + + 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].i != INVALID_STACK_INDEX) { + rmt[i].rm_so = (regoff_t )(STACK_MEM_START(reg, i) - str); + rmt[i].rm_eo = (regoff_t )(STACK_MEM_END(reg, i) - str); + } + else { + rmt[i].rm_so = rmt[i].rm_eo = ONIG_REGION_NOTPOS; + } + } + } + else { +#endif /* USE_POSIX_API */ + region->beg[0] = (int )(keep - str); + region->end[0] = (int )(s - str); + for (i = 1; i <= num_mem; i++) { + if (mem_end_stk[i].i != INVALID_STACK_INDEX) { + region->beg[i] = (int )(STACK_MEM_START(reg, i) - str); + region->end[i] = (int )(STACK_MEM_END(reg, i) - str); + } + else { + region->beg[i] = region->end[i] = ONIG_REGION_NOTPOS; + } + } + +#ifdef USE_CAPTURE_HISTORY + if (reg->capture_history != 0) { + OnigCaptureTreeNode* node; + + if (IS_NULL(region->history_root)) { + region->history_root = node = history_node_new(); + CHECK_NULL_RETURN_MEMERR(node); + } + else { + node = region->history_root; + history_tree_clear(node); + } + + node->group = 0; + node->beg = (int )(keep - str); + node->end = (int )(s - str); + + stkp = stk_base; + i = make_capture_history_tree(region->history_root, &stkp, + stk, (UChar* )str, reg); + if (i < 0) MATCH_AT_ERROR_RETURN(i); + } +#endif /* USE_CAPTURE_HISTORY */ +#ifdef USE_POSIX_API + } /* else OPTON_POSIX_REGION() */ +#endif + } /* if (region) */ + + if (OPTON_CALLBACK_EACH_MATCH(options) && + IS_NOT_NULL(CallbackEachMatch)) { + i = CallbackEachMatch(str, end, sstart, region, + msa->mp->callout_user_data); + if (i < 0) { + SOP_OUT; + MATCH_AT_ERROR_RETURN(i); + } +#ifdef USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE + if (! OPTON_FIND_LONGEST(options)) +#endif + best_len = ONIG_MISMATCH; + + goto fail; + } + +#ifdef USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE + if (OPTON_FIND_LONGEST(options)) goto fail; +#endif + + op_end_out: + /* default behavior: return first-matching result. */ + SOP_OUT; + goto match_at_end; + + CASE_OP(STR_1) + DATA_ENSURE(1); + ps = p->exact.s; + if (*ps != *s) goto fail; + s++; + INC_OP; + JUMP_OUT_WITH_SPREV_SET; + + CASE_OP(STR_2) + DATA_ENSURE(2); + ps = p->exact.s; + if (*ps != *s) goto fail; + ps++; s++; + if (*ps != *s) goto fail; + s++; + INC_OP; + JUMP_OUT; + + CASE_OP(STR_3) + DATA_ENSURE(3); + ps = p->exact.s; + if (*ps != *s) goto fail; + ps++; s++; + if (*ps != *s) goto fail; + ps++; s++; + if (*ps != *s) goto fail; + s++; + INC_OP; + JUMP_OUT; + + CASE_OP(STR_4) + DATA_ENSURE(4); + ps = p->exact.s; + if (*ps != *s) goto fail; + ps++; s++; + if (*ps != *s) goto fail; + ps++; s++; + if (*ps != *s) goto fail; + ps++; s++; + if (*ps != *s) goto fail; + s++; + INC_OP; + JUMP_OUT; + + CASE_OP(STR_5) + DATA_ENSURE(5); + ps = p->exact.s; + if (*ps != *s) goto fail; + ps++; s++; + if (*ps != *s) goto fail; + ps++; s++; + if (*ps != *s) goto fail; + ps++; s++; + if (*ps != *s) goto fail; + ps++; s++; + if (*ps != *s) goto fail; + s++; + INC_OP; + JUMP_OUT; + + CASE_OP(STR_N) + tlen = p->exact_n.n; + DATA_ENSURE(tlen); + ps = p->exact_n.s; + while (tlen-- > 0) { + if (*ps++ != *s++) goto fail; + } + INC_OP; + JUMP_OUT; + + CASE_OP(STR_MB2N1) + DATA_ENSURE(2); + ps = p->exact.s; + if (*ps != *s) goto fail; + ps++; s++; + if (*ps != *s) goto fail; + s++; + INC_OP; + JUMP_OUT_WITH_SPREV_SET; + + CASE_OP(STR_MB2N2) + DATA_ENSURE(4); + ps = p->exact.s; + if (*ps != *s) goto fail; + ps++; s++; + if (*ps != *s) goto fail; + ps++; s++; + if (*ps != *s) goto fail; + ps++; s++; + if (*ps != *s) goto fail; + s++; + INC_OP; + JUMP_OUT; + + CASE_OP(STR_MB2N3) + DATA_ENSURE(6); + ps = p->exact.s; + if (*ps != *s) goto fail; + ps++; s++; + if (*ps != *s) goto fail; + ps++; s++; + if (*ps != *s) goto fail; + ps++; s++; + if (*ps != *s) goto fail; + ps++; s++; + if (*ps != *s) goto fail; + ps++; s++; + if (*ps != *s) goto fail; + ps++; s++; + INC_OP; + JUMP_OUT; + + CASE_OP(STR_MB2N) + tlen = p->exact_n.n; + DATA_ENSURE(tlen * 2); + ps = p->exact_n.s; + while (tlen-- > 0) { + if (*ps != *s) goto fail; + ps++; s++; + if (*ps != *s) goto fail; + ps++; s++; + } + INC_OP; + JUMP_OUT; + + CASE_OP(STR_MB3N) + tlen = p->exact_n.n; + DATA_ENSURE(tlen * 3); + ps = p->exact_n.s; + while (tlen-- > 0) { + if (*ps != *s) goto fail; + ps++; s++; + if (*ps != *s) goto fail; + ps++; s++; + if (*ps != *s) goto fail; + ps++; s++; + } + INC_OP; + JUMP_OUT; + + CASE_OP(STR_MBN) + tlen = p->exact_len_n.len; /* mb byte len */ + tlen2 = p->exact_len_n.n; /* number of chars */ + tlen2 *= tlen; + DATA_ENSURE(tlen2); + ps = p->exact_len_n.s; + while (tlen2-- > 0) { + if (*ps != *s) goto fail; + ps++; s++; + } + INC_OP; + JUMP_OUT; + + CASE_OP(CCLASS) + DATA_ENSURE(1); + if (BITSET_AT(p->cclass.bsp, *s) == 0) goto fail; + if (ONIGENC_IS_MBC_HEAD(encode, s)) goto fail; + s++; + INC_OP; + JUMP_OUT_WITH_SPREV_SET; + + CASE_OP(CCLASS_MB) + DATA_ENSURE(1); + if (! ONIGENC_IS_MBC_HEAD(encode, s)) goto fail; + + cclass_mb: + { + OnigCodePoint code; + UChar *ss; + int mb_len; + + mb_len = enclen(encode, s); + DATA_ENSURE(mb_len); + ss = s; + s += mb_len; + code = ONIGENC_MBC_TO_CODE(encode, ss, s); + if (! onig_is_in_code_range(p->cclass_mb.mb, code)) goto fail; + } + INC_OP; + JUMP_OUT_WITH_SPREV_SET; + + CASE_OP(CCLASS_MIX) + DATA_ENSURE(1); + if (ONIGENC_IS_MBC_HEAD(encode, s)) { + goto cclass_mb; + } + else { + if (BITSET_AT(p->cclass_mix.bsp, *s) == 0) + goto fail; + + s++; + } + INC_OP; + JUMP_OUT_WITH_SPREV_SET; + + CASE_OP(CCLASS_NOT) + DATA_ENSURE(1); + if (BITSET_AT(p->cclass.bsp, *s) != 0) goto fail; + s += enclen(encode, s); + INC_OP; + JUMP_OUT_WITH_SPREV_SET; + + CASE_OP(CCLASS_MB_NOT) + DATA_ENSURE(1); + if (! ONIGENC_IS_MBC_HEAD(encode, s)) { + s++; + goto cc_mb_not_success; + } + + cclass_mb_not: + { + OnigCodePoint code; + UChar *ss; + int mb_len = enclen(encode, s); + + if (! DATA_ENSURE_CHECK(mb_len)) { + DATA_ENSURE(1); + s = (UChar* )end; + goto cc_mb_not_success; + } + + ss = s; + s += mb_len; + code = ONIGENC_MBC_TO_CODE(encode, ss, s); + if (onig_is_in_code_range(p->cclass_mb.mb, code)) goto fail; + } + + cc_mb_not_success: + INC_OP; + JUMP_OUT_WITH_SPREV_SET; + + CASE_OP(CCLASS_MIX_NOT) + DATA_ENSURE(1); + if (ONIGENC_IS_MBC_HEAD(encode, s)) { + goto cclass_mb_not; + } + else { + if (BITSET_AT(p->cclass_mix.bsp, *s) != 0) + goto fail; + + s++; + } + INC_OP; + JUMP_OUT_WITH_SPREV_SET; + + CASE_OP(ANYCHAR) + DATA_ENSURE(1); + n = enclen(encode, s); + DATA_ENSURE(n); + if (ONIGENC_IS_MBC_NEWLINE(encode, s, end)) goto fail; + s += n; + INC_OP; + JUMP_OUT_WITH_SPREV_SET; + + CASE_OP(ANYCHAR_ML) + DATA_ENSURE(1); + n = enclen(encode, s); + DATA_ENSURE(n); + s += n; + INC_OP; + JUMP_OUT_WITH_SPREV_SET; + + CASE_OP(ANYCHAR_STAR) + INC_OP; + while (DATA_ENSURE_CHECK1) { + STACK_PUSH_ALT(p, s); + n = enclen(encode, s); + DATA_ENSURE(n); + if (ONIGENC_IS_MBC_NEWLINE(encode, s, end)) goto fail; + s += n; + } + JUMP_OUT; + + CASE_OP(ANYCHAR_ML_STAR) + INC_OP; + while (DATA_ENSURE_CHECK1) { + STACK_PUSH_ALT(p, s); + n = enclen(encode, s); + if (n > 1) { + DATA_ENSURE(n); + s += n; + } + else { + s++; + } + } + JUMP_OUT; + + CASE_OP(ANYCHAR_STAR_PEEK_NEXT) + { + UChar c; + + c = p->anychar_star_peek_next.c; + INC_OP; + while (DATA_ENSURE_CHECK1) { + if (c == *s) { + STACK_PUSH_ALT(p, s); + } + n = enclen(encode, s); + DATA_ENSURE(n); + if (ONIGENC_IS_MBC_NEWLINE(encode, s, end)) goto fail; + s += n; + } + } + JUMP_OUT; + + CASE_OP(ANYCHAR_ML_STAR_PEEK_NEXT) + { + UChar c; + + c = p->anychar_star_peek_next.c; + INC_OP; + while (DATA_ENSURE_CHECK1) { + if (c == *s) { + STACK_PUSH_ALT(p, s); + } + n = enclen(encode, s); + if (n > 1) { + DATA_ENSURE(n); + s += n; + } + else { + s++; + } + } + } + JUMP_OUT; + + CASE_OP(WORD) + DATA_ENSURE(1); + if (! ONIGENC_IS_MBC_WORD(encode, s, end)) + goto fail; + + s += enclen(encode, s); + INC_OP; + JUMP_OUT_WITH_SPREV_SET; + + CASE_OP(WORD_ASCII) + DATA_ENSURE(1); + if (! ONIGENC_IS_MBC_WORD_ASCII(encode, s, end)) + goto fail; + + s += enclen(encode, s); + INC_OP; + JUMP_OUT_WITH_SPREV_SET; + + CASE_OP(NO_WORD) + DATA_ENSURE(1); + if (ONIGENC_IS_MBC_WORD(encode, s, end)) + goto fail; + + s += enclen(encode, s); + INC_OP; + JUMP_OUT_WITH_SPREV_SET; + + CASE_OP(NO_WORD_ASCII) + DATA_ENSURE(1); + if (ONIGENC_IS_MBC_WORD_ASCII(encode, s, end)) + goto fail; + + s += enclen(encode, s); + INC_OP; + JUMP_OUT_WITH_SPREV_SET; + + CASE_OP(WORD_BOUNDARY) + { + ModeType mode; + + mode = p->word_boundary.mode; + if (ON_STR_BEGIN(s)) { + DATA_ENSURE(1); + if (! IS_MBC_WORD_ASCII_MODE(encode, s, end, mode)) + goto fail; + } + else { + UChar* sprev = (UChar* )onigenc_get_prev_char_head(encode, str, s); + if (ON_STR_END(s)) { + if (! IS_MBC_WORD_ASCII_MODE(encode, sprev, end, mode)) + goto fail; + } + else { + if (IS_MBC_WORD_ASCII_MODE(encode, s, end, mode) + == IS_MBC_WORD_ASCII_MODE(encode, sprev, end, mode)) + goto fail; + } + } + } + INC_OP; + JUMP_OUT; + + CASE_OP(NO_WORD_BOUNDARY) + { + ModeType mode; + + mode = p->word_boundary.mode; + if (ON_STR_BEGIN(s)) { + if (DATA_ENSURE_CHECK1 && IS_MBC_WORD_ASCII_MODE(encode, s, end, mode)) + goto fail; + } + else { + UChar* sprev = (UChar* )onigenc_get_prev_char_head(encode, str, s); + if (ON_STR_END(s)) { + if (IS_MBC_WORD_ASCII_MODE(encode, sprev, end, mode)) + goto fail; + } + else { + if (IS_MBC_WORD_ASCII_MODE(encode, s, end, mode) + != IS_MBC_WORD_ASCII_MODE(encode, sprev, end, mode)) + goto fail; + } + } + } + INC_OP; + JUMP_OUT; + +#ifdef USE_WORD_BEGIN_END + CASE_OP(WORD_BEGIN) + { + ModeType mode; + + mode = p->word_boundary.mode; + if (DATA_ENSURE_CHECK1 && IS_MBC_WORD_ASCII_MODE(encode, s, end, mode)) { + UChar* sprev; + if (ON_STR_BEGIN(s)) { + INC_OP; + JUMP_OUT; + } + sprev = (UChar* )onigenc_get_prev_char_head(encode, str, s); + if (! IS_MBC_WORD_ASCII_MODE(encode, sprev, end, mode)) { + INC_OP; + JUMP_OUT; + } + } + } + goto fail; + + CASE_OP(WORD_END) + { + ModeType mode; + + mode = p->word_boundary.mode; + if (! ON_STR_BEGIN(s)) { + UChar* sprev = (UChar* )onigenc_get_prev_char_head(encode, str, s); + if (IS_MBC_WORD_ASCII_MODE(encode, sprev, end, mode)) { + if (ON_STR_END(s) || ! IS_MBC_WORD_ASCII_MODE(encode, s, end, mode)) { + INC_OP; + JUMP_OUT; + } + } + } + } + goto fail; +#endif + + CASE_OP(TEXT_SEGMENT_BOUNDARY) + { + int is_break; + UChar* sprev = (UChar* )onigenc_get_prev_char_head(encode, str, s); + + switch (p->text_segment_boundary.type) { + case EXTENDED_GRAPHEME_CLUSTER_BOUNDARY: + is_break = onigenc_egcb_is_break_position(encode, s, sprev, str, end); + break; +#ifdef USE_UNICODE_WORD_BREAK + case WORD_BOUNDARY: + is_break = onigenc_wb_is_break_position(encode, s, sprev, str, end); + break; +#endif + default: + MATCH_AT_ERROR_RETURN(ONIGERR_UNDEFINED_BYTECODE); + break; + } + + if (p->text_segment_boundary.not != 0) + is_break = ! is_break; + + if (is_break != 0) { + INC_OP; + JUMP_OUT; + } + else { + goto fail; + } + } + + CASE_OP(BEGIN_BUF) + if (! ON_STR_BEGIN(s)) goto fail; + if (OPTON_NOTBOL(options)) goto fail; + if (OPTON_NOT_BEGIN_STRING(options)) goto fail; + + INC_OP; + JUMP_OUT; + + CASE_OP(END_BUF) + if (! ON_STR_END(s)) goto fail; + if (OPTON_NOTEOL(options)) goto fail; + if (OPTON_NOT_END_STRING(options)) goto fail; + + INC_OP; + JUMP_OUT; + + CASE_OP(BEGIN_LINE) + if (ON_STR_BEGIN(s)) { + if (OPTON_NOTBOL(options)) goto fail; + INC_OP; + JUMP_OUT; + } + else if (! ON_STR_END(s)) { + UChar* sprev = (UChar* )onigenc_get_prev_char_head(encode, str, s); + if (ONIGENC_IS_MBC_NEWLINE(encode, sprev, end)) { + INC_OP; + JUMP_OUT; + } + } + goto fail; + + CASE_OP(END_LINE) + if (ON_STR_END(s)) { +#ifndef USE_NEWLINE_AT_END_OF_STRING_HAS_EMPTY_LINE + UChar* sprev = (UChar* )onigenc_get_prev_char_head(encode, str, s); + if (IS_EMPTY_STR || !ONIGENC_IS_MBC_NEWLINE(encode, sprev, end)) { +#endif + if (OPTON_NOTEOL(options)) goto fail; + INC_OP; + JUMP_OUT; +#ifndef USE_NEWLINE_AT_END_OF_STRING_HAS_EMPTY_LINE + } +#endif + } + else if (ONIGENC_IS_MBC_NEWLINE(encode, s, end)) { + INC_OP; + JUMP_OUT; + } +#ifdef USE_CRNL_AS_LINE_TERMINATOR + else if (ONIGENC_IS_MBC_CRNL(encode, s, end)) { + INC_OP; + JUMP_OUT; + } +#endif + goto fail; + + CASE_OP(SEMI_END_BUF) + if (ON_STR_END(s)) { +#ifndef USE_NEWLINE_AT_END_OF_STRING_HAS_EMPTY_LINE + UChar* sprev = (UChar* )onigenc_get_prev_char_head(encode, str, s); + if (IS_EMPTY_STR || !ONIGENC_IS_MBC_NEWLINE(encode, sprev, end)) { +#endif + if (OPTON_NOTEOL(options)) goto fail; + if (OPTON_NOT_END_STRING(options)) goto fail; + INC_OP; + JUMP_OUT; +#ifndef USE_NEWLINE_AT_END_OF_STRING_HAS_EMPTY_LINE + } +#endif + } + else if (ONIGENC_IS_MBC_NEWLINE(encode, s, end) && + ON_STR_END(s + enclen(encode, s))) { + if (OPTON_NOTEOL(options)) goto fail; + if (OPTON_NOT_END_STRING(options)) goto fail; + INC_OP; + JUMP_OUT; + } +#ifdef USE_CRNL_AS_LINE_TERMINATOR + else if (ONIGENC_IS_MBC_CRNL(encode, s, end)) { + UChar* ss = s + enclen(encode, s); + ss += enclen(encode, ss); + if (ON_STR_END(ss)) { + if (OPTON_NOTEOL(options)) goto fail; + if (OPTON_NOT_END_STRING(options)) goto fail; + INC_OP; + JUMP_OUT; + } + } +#endif + goto fail; + + CASE_OP(CHECK_POSITION) + switch (p->check_position.type) { + case CHECK_POSITION_SEARCH_START: + if (s != msa->start) goto fail; + if (OPTON_NOT_BEGIN_POSITION(options)) goto fail; + break; + case CHECK_POSITION_CURRENT_RIGHT_RANGE: + if (s != right_range) goto fail; + break; + default: + break; + } + INC_OP; + JUMP_OUT; + + CASE_OP(MEM_START_PUSH) + mem = p->memory_start.num; + STACK_PUSH_MEM_START(mem, s); + INC_OP; + JUMP_OUT; + + CASE_OP(MEM_START) + mem = p->memory_start.num; + mem_start_stk[mem].s = s; + INC_OP; + JUMP_OUT; + + CASE_OP(MEM_END_PUSH) + mem = p->memory_end.num; + STACK_PUSH_MEM_END(mem, s); + INC_OP; + JUMP_OUT; + + CASE_OP(MEM_END) + mem = p->memory_end.num; + mem_end_stk[mem].s = s; + INC_OP; + JUMP_OUT; + +#ifdef USE_CALL + CASE_OP(MEM_END_PUSH_REC) + { + StackIndex si; + + mem = p->memory_end.num; + STACK_GET_MEM_START(mem, stkp); /* should be before push mem-end. */ + si = GET_STACK_INDEX(stkp); + STACK_PUSH_MEM_END(mem, s); + mem_start_stk[mem].i = si; + INC_OP; + JUMP_OUT; + } + + CASE_OP(MEM_END_REC) + mem = p->memory_end.num; + mem_end_stk[mem].s = s; + STACK_GET_MEM_START(mem, stkp); + + if (MEM_STATUS_AT(reg->push_mem_start, mem)) + mem_start_stk[mem].i = GET_STACK_INDEX(stkp); + else + mem_start_stk[mem].s = stkp->u.mem.pstr; + + STACK_PUSH_MEM_END_MARK(mem); + INC_OP; + JUMP_OUT; +#endif + + CASE_OP(BACKREF1) + mem = 1; + goto backref; + + CASE_OP(BACKREF2) + mem = 2; + goto backref; + + CASE_OP(BACKREF_N) + mem = p->backref_n.n1; + backref: + { + UChar *pstart, *pend; + + if (mem_end_stk[mem].i == INVALID_STACK_INDEX) goto fail; + if (mem_start_stk[mem].i == INVALID_STACK_INDEX) goto fail; + + pstart = STACK_MEM_START(reg, mem); + pend = STACK_MEM_END(reg, mem); + n = (int )(pend - pstart); + if (n != 0) { + DATA_ENSURE(n); + STRING_CMP(s, pstart, n); + } + } + INC_OP; + JUMP_OUT; + + CASE_OP(BACKREF_N_IC) + mem = p->backref_n.n1; + { + UChar *pstart, *pend; + + if (mem_end_stk[mem].i == INVALID_STACK_INDEX) goto fail; + if (mem_start_stk[mem].i == INVALID_STACK_INDEX) goto fail; + + pstart = STACK_MEM_START(reg, mem); + pend = STACK_MEM_END(reg, mem); + n = (int )(pend - pstart); + if (n != 0) { + DATA_ENSURE(n); + STRING_CMP_IC(case_fold_flag, pstart, &s, n); + } + } + INC_OP; + JUMP_OUT; + + CASE_OP(BACKREF_MULTI) + { + int is_fail; + UChar *pstart, *pend, *swork; + + tlen = p->backref_general.num; + for (i = 0; i < tlen; i++) { + mem = tlen == 1 ? p->backref_general.n1 : p->backref_general.ns[i]; + + if (mem_end_stk[mem].i == INVALID_STACK_INDEX) continue; + if (mem_start_stk[mem].i == INVALID_STACK_INDEX) continue; + + pstart = STACK_MEM_START(reg, mem); + pend = STACK_MEM_END(reg, mem); + n = (int )(pend - pstart); + if (n != 0) { + if (! DATA_ENSURE_CHECK(n)) continue; + swork = s; + STRING_CMP_VALUE(swork, pstart, n, is_fail); + if (is_fail) continue; + s = swork; + } + break; /* success */ + } + if (i == tlen) goto fail; + } + INC_OP; + JUMP_OUT; + + CASE_OP(BACKREF_MULTI_IC) + { + int is_fail; + UChar *pstart, *pend, *swork; + + tlen = p->backref_general.num; + for (i = 0; i < tlen; i++) { + mem = tlen == 1 ? p->backref_general.n1 : p->backref_general.ns[i]; + + if (mem_end_stk[mem].i == INVALID_STACK_INDEX) continue; + if (mem_start_stk[mem].i == INVALID_STACK_INDEX) continue; + + pstart = STACK_MEM_START(reg, mem); + pend = STACK_MEM_END(reg, mem); + n = (int )(pend - pstart); + if (n != 0) { + if (! DATA_ENSURE_CHECK(n)) continue; + swork = s; + STRING_CMP_VALUE_IC(case_fold_flag, pstart, &swork, n, is_fail); + if (is_fail) continue; + s = swork; + } + break; /* success */ + } + if (i == tlen) goto fail; + } + INC_OP; + JUMP_OUT; + +#ifdef USE_BACKREF_WITH_LEVEL + CASE_OP(BACKREF_WITH_LEVEL_IC) + n = 1; /* ignore case */ + goto backref_with_level; + CASE_OP(BACKREF_WITH_LEVEL) + { + int level; + MemNumType* mems; + + n = 0; + backref_with_level: + level = p->backref_general.nest_level; + tlen = p->backref_general.num; + mems = tlen == 1 ? &(p->backref_general.n1) : p->backref_general.ns; + + if (! backref_match_at_nested_level(reg, stk, stk_base, n, + case_fold_flag, level, (int )tlen, mems, &s, end)) { + goto fail; + } + } + INC_OP; + JUMP_OUT; +#endif + + CASE_OP(BACKREF_CHECK) + { + MemNumType* mems; + + tlen = p->backref_general.num; + mems = tlen == 1 ? &(p->backref_general.n1) : p->backref_general.ns; + + for (i = 0; i < tlen; i++) { + mem = mems[i]; + if (mem_end_stk[mem].i == INVALID_STACK_INDEX) continue; + if (mem_start_stk[mem].i == INVALID_STACK_INDEX) continue; + break; /* success */ + } + if (i == tlen) goto fail; + } + INC_OP; + JUMP_OUT; + +#ifdef USE_BACKREF_WITH_LEVEL + CASE_OP(BACKREF_CHECK_WITH_LEVEL) + { + LengthType level; + MemNumType* mems; + + level = p->backref_general.nest_level; + tlen = p->backref_general.num; + mems = tlen == 1 ? &(p->backref_general.n1) : p->backref_general.ns; + + if (backref_check_at_nested_level(reg, stk, stk_base, + (int )level, (int )tlen, mems) == 0) + goto fail; + } + INC_OP; + JUMP_OUT; +#endif + + CASE_OP(EMPTY_CHECK_START) + mem = p->empty_check_start.mem; /* mem: null check id */ + STACK_PUSH_EMPTY_CHECK_START(mem, s); + INC_OP; + JUMP_OUT; + + CASE_OP(EMPTY_CHECK_END) + { + int is_empty; + + mem = p->empty_check_end.mem; /* mem: null check id */ + STACK_EMPTY_CHECK(is_empty, mem, s); + INC_OP; + if (is_empty) { +#ifdef ONIG_DEBUG_MATCH + fprintf(DBGFP, "EMPTY_CHECK_END: skip id:%d, s:%p\n", (int )mem, s); +#endif + empty_check_found: + /* empty loop founded, skip next instruction */ +#if defined(ONIG_DEBUG) && !defined(USE_DIRECT_THREADED_CODE) + switch (p->opcode) { + case OP_JUMP: + case OP_PUSH: + case OP_REPEAT_INC: + case OP_REPEAT_INC_NG: + INC_OP; + break; + default: + MATCH_AT_ERROR_RETURN(ONIGERR_UNEXPECTED_BYTECODE); + break; + } +#else + INC_OP; +#endif + } + } + JUMP_OUT; + +#ifdef USE_RIGID_CHECK_CAPTURES_IN_EMPTY_REPEAT + CASE_OP(EMPTY_CHECK_END_MEMST) + { + int is_empty; + + mem = p->empty_check_end.mem; /* mem: null check id */ + STACK_EMPTY_CHECK_MEM(is_empty, mem, p->empty_check_end.empty_status_mem, s, reg); + INC_OP; + if (is_empty) { +#ifdef ONIG_DEBUG_MATCH + fprintf(DBGFP, "EMPTY_CHECK_END_MEM: skip id:%d, s:%p\n", (int)mem, s); +#endif + if (is_empty == -1) goto fail; + goto empty_check_found; + } + } + JUMP_OUT; +#endif + +#ifdef USE_CALL + CASE_OP(EMPTY_CHECK_END_MEMST_PUSH) + { + int is_empty; + + mem = p->empty_check_end.mem; /* mem: null check id */ +#ifdef USE_RIGID_CHECK_CAPTURES_IN_EMPTY_REPEAT + STACK_EMPTY_CHECK_MEM_REC(is_empty, mem, p->empty_check_end.empty_status_mem, s, reg); +#else + STACK_EMPTY_CHECK_REC(is_empty, mem, s); +#endif + INC_OP; + if (is_empty) { +#ifdef ONIG_DEBUG_MATCH + fprintf(DBGFP, "EMPTY_CHECK_END_MEM_PUSH: skip id:%d, s:%p\n", + (int )mem, s); +#endif + if (is_empty == -1) goto fail; + goto empty_check_found; + } + else { + STACK_PUSH_EMPTY_CHECK_END(mem); + } + } + JUMP_OUT; +#endif + + CASE_OP(JUMP) + addr = p->jump.addr; + p += addr; + CHECK_INTERRUPT_JUMP_OUT; + + CASE_OP(PUSH) + addr = p->push.addr; + STACK_PUSH_ALT(p + addr, s); + INC_OP; + JUMP_OUT; + + CASE_OP(PUSH_SUPER) + addr = p->push.addr; + STACK_PUSH_SUPER_ALT(p + addr, s); + INC_OP; + JUMP_OUT; + + CASE_OP(POP) + STACK_POP_ONE; + INC_OP; + JUMP_OUT; + + CASE_OP(POP_TO_MARK) + STACK_POP_TO_MARK(p->pop_to_mark.id); + INC_OP; + JUMP_OUT; + + #ifdef USE_OP_PUSH_OR_JUMP_EXACT + CASE_OP(PUSH_OR_JUMP_EXACT1) + { + UChar c; + + addr = p->push_or_jump_exact1.addr; + c = p->push_or_jump_exact1.c; + if (DATA_ENSURE_CHECK1 && c == *s) { + STACK_PUSH_ALT(p + addr, s); + INC_OP; + JUMP_OUT; + } + } + p += addr; + JUMP_OUT; +#endif + + CASE_OP(PUSH_IF_PEEK_NEXT) + { + UChar c; + + addr = p->push_if_peek_next.addr; + c = p->push_if_peek_next.c; + if (DATA_ENSURE_CHECK1 && c == *s) { + STACK_PUSH_ALT(p + addr, s); + } + } + INC_OP; + JUMP_OUT; + + CASE_OP(REPEAT) + mem = p->repeat.id; /* mem: OP_REPEAT ID */ + addr = p->repeat.addr; + + STACK_PUSH_REPEAT_INC(mem, 0); + if (reg->repeat_range[mem].lower == 0) { + STACK_PUSH_ALT(p + addr, s); + } + INC_OP; + JUMP_OUT; + + CASE_OP(REPEAT_NG) + mem = p->repeat.id; /* mem: OP_REPEAT ID */ + addr = p->repeat.addr; + + STACK_PUSH_REPEAT_INC(mem, 0); + if (reg->repeat_range[mem].lower == 0) { + STACK_PUSH_ALT(p + 1, s); + p += addr; + } + else + INC_OP; + JUMP_OUT; + + CASE_OP(REPEAT_INC) + mem = p->repeat_inc.id; /* mem: OP_REPEAT ID */ + STACK_GET_REPEAT_COUNT(mem, n); + n++; + if (n >= reg->repeat_range[mem].upper) { + /* end of repeat. Nothing to do. */ + INC_OP; + } + else if (n >= reg->repeat_range[mem].lower) { + INC_OP; + STACK_PUSH_ALT(p, s); + p = reg->repeat_range[mem].u.pcode; + } + else { + p = reg->repeat_range[mem].u.pcode; + } + STACK_PUSH_REPEAT_INC(mem, n); + CHECK_INTERRUPT_JUMP_OUT; + + CASE_OP(REPEAT_INC_NG) + mem = p->repeat_inc.id; /* mem: OP_REPEAT ID */ + STACK_GET_REPEAT_COUNT(mem, n); + n++; + STACK_PUSH_REPEAT_INC(mem, n); + if (n == reg->repeat_range[mem].upper) { + INC_OP; + } + else { + if (n >= reg->repeat_range[mem].lower) { + STACK_PUSH_ALT(reg->repeat_range[mem].u.pcode, s); + INC_OP; + } + else { + p = reg->repeat_range[mem].u.pcode; + } + } + CHECK_INTERRUPT_JUMP_OUT; + +#ifdef USE_CALL + CASE_OP(CALL) + if (subexp_call_nest_counter == SubexpCallMaxNestLevel) + goto fail; + subexp_call_nest_counter++; + + if (SubexpCallLimitInSearch != 0) { + msa->subexp_call_in_search_counter++; +#ifdef ONIG_DEBUG_MATCH_COUNTER + if (p->call.called_mem < MAX_SUBEXP_CALL_COUNTERS) + subexp_call_counters[p->call.called_mem]++; + if (msa->subexp_call_in_search_counter % 1000 == 0) + MATCH_COUNTER_OUT("CALL"); +#endif + if (msa->subexp_call_in_search_counter > + SubexpCallLimitInSearch) { + MATCH_AT_ERROR_RETURN(ONIGERR_SUBEXP_CALL_LIMIT_IN_SEARCH_OVER); + } + } + +#ifdef ONIG_DEBUG_CALL + fprintf(DBGFP, "CALL: id:%d, at:%ld, level:%lu\n", p->call.called_mem, s - str, subexp_call_nest_counter); +#endif + addr = p->call.addr; + INC_OP; STACK_PUSH_CALL_FRAME(p); + p = reg->ops + addr; + + JUMP_OUT; + + CASE_OP(RETURN) + STACK_RETURN(p); + STACK_PUSH_RETURN; + subexp_call_nest_counter--; + JUMP_OUT; +#endif + + CASE_OP(MOVE) + if (p->move.n < 0) { + s = (UChar* )ONIGENC_STEP_BACK(encode, str, s, -p->move.n); + if (IS_NULL(s)) goto fail; + } + else { + int len; + + for (tlen = p->move.n; tlen > 0; tlen--) { + len = enclen(encode, s); + s += len; + if (s > end) goto fail; + if (s == end) { + if (tlen != 1) goto fail; + else break; + } + } + } + INC_OP; + JUMP_OUT; + + CASE_OP(STEP_BACK_START) + tlen = p->step_back_start.initial; + if (tlen != 0) { + s = (UChar* )ONIGENC_STEP_BACK(encode, str, s, (int )tlen); + if (IS_NULL(s)) goto fail; + } + if (p->step_back_start.remaining != 0) { + STACK_PUSH_ALT_WITH_ZID(p + 1, s, p->step_back_start.remaining); + p += p->step_back_start.addr; + } + else + INC_OP; + JUMP_OUT; + + CASE_OP(STEP_BACK_NEXT) + tlen = (LengthType )stk->zid; /* remaining count */ + if (tlen != INFINITE_LEN) tlen--; + s = (UChar* )ONIGENC_STEP_BACK(encode, str, s, 1); + if (IS_NULL(s)) goto fail; + if (tlen != 0) { + STACK_PUSH_ALT_WITH_ZID(p, s, (int )tlen); + } + INC_OP; + JUMP_OUT; + + CASE_OP(CUT_TO_MARK) + mem = p->cut_to_mark.id; /* mem: mark id */ + STACK_TO_VOID_TO_MARK(stkp, mem); + if (p->cut_to_mark.restore_pos != 0) { + s = stkp->u.val.v; + } + INC_OP; + JUMP_OUT; + + CASE_OP(MARK) + mem = p->mark.id; /* mem: mark id */ + if (p->mark.save_pos != 0) + STACK_PUSH_MARK_WITH_POS(mem, s); + else + STACK_PUSH_MARK(mem); + + INC_OP; + JUMP_OUT; + + CASE_OP(SAVE_VAL) + { + SaveType type; + + type = p->save_val.type; + mem = p->save_val.id; /* mem: save id */ + switch ((enum SaveType )type) { + case SAVE_KEEP: + STACK_PUSH_SAVE_VAL(mem, type, s); + break; + + case SAVE_S: + STACK_PUSH_SAVE_VAL_WITH_SPREV(mem, type, s); + break; + + case SAVE_RIGHT_RANGE: + STACK_PUSH_SAVE_VAL(mem, SAVE_RIGHT_RANGE, right_range); + break; + } + } + INC_OP; + JUMP_OUT; + + CASE_OP(UPDATE_VAR) + { + UpdateVarType type; + enum SaveType save_type; + + type = p->update_var.type; + + switch ((enum UpdateVarType )type) { + case UPDATE_VAR_KEEP_FROM_STACK_LAST: + STACK_GET_SAVE_VAL_TYPE_LAST(SAVE_KEEP, keep); + break; + case UPDATE_VAR_S_FROM_STACK: + mem = p->update_var.id; /* mem: save id */ + STACK_GET_SAVE_VAL_TYPE_LAST_ID_WITH_SPREV(SAVE_S, mem, s); + break; + case UPDATE_VAR_RIGHT_RANGE_FROM_S_STACK: + save_type = SAVE_S; + goto get_save_val_type_last_id; + break; + case UPDATE_VAR_RIGHT_RANGE_FROM_STACK: + save_type = SAVE_RIGHT_RANGE; + get_save_val_type_last_id: + mem = p->update_var.id; /* mem: save id */ + STACK_GET_SAVE_VAL_TYPE_LAST_ID(save_type, mem, right_range, p->update_var.clear); + break; + case UPDATE_VAR_RIGHT_RANGE_TO_S: + right_range = s; + break; + case UPDATE_VAR_RIGHT_RANGE_INIT: + INIT_RIGHT_RANGE; + break; + } + } + INC_OP; + JUMP_OUT; + +#ifdef USE_CALLOUT + CASE_OP(CALLOUT_CONTENTS) + of = ONIG_CALLOUT_OF_CONTENTS; + mem = p->callout_contents.num; + goto callout_common_entry; + BREAK_OUT; + + CASE_OP(CALLOUT_NAME) + { + int call_result; + int name_id; + int in; + CalloutListEntry* e; + OnigCalloutFunc func; + OnigCalloutArgs args; + + of = ONIG_CALLOUT_OF_NAME; + mem = p->callout_name.num; + + callout_common_entry: + e = onig_reg_callout_list_at(reg, mem); + in = e->in; + if (of == ONIG_CALLOUT_OF_NAME) { + name_id = p->callout_name.id; + func = onig_get_callout_start_func(reg, mem); + } + else { + name_id = ONIG_NON_NAME_ID; + func = msa->mp->progress_callout_of_contents; + } + + if (IS_NOT_NULL(func) && (in & ONIG_CALLOUT_IN_PROGRESS) != 0) { + CALLOUT_BODY(func, ONIG_CALLOUT_IN_PROGRESS, name_id, + (int )mem, msa->mp->callout_user_data, args, call_result); + switch (call_result) { + case ONIG_CALLOUT_FAIL: + goto fail; + break; + case ONIG_CALLOUT_SUCCESS: + goto retraction_callout2; + break; + default: /* error code */ + if (call_result > 0) { + call_result = ONIGERR_INVALID_ARGUMENT; + } + best_len = call_result; + goto match_at_end; + break; + } + } + else { + retraction_callout2: + if ((in & ONIG_CALLOUT_IN_RETRACTION) != 0) { + if (of == ONIG_CALLOUT_OF_NAME) { + if (IS_NOT_NULL(func)) { + STACK_PUSH_CALLOUT_NAME(name_id, mem, func); + } + } + else { + func = msa->mp->retraction_callout_of_contents; + if (IS_NOT_NULL(func)) { + STACK_PUSH_CALLOUT_CONTENTS(mem, func); + } + } + } + } + } + INC_OP; + JUMP_OUT; +#endif + + CASE_OP(FINISH) +#ifdef USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE + if (OPTON_FIND_LONGEST(options)) { + best_len = ONIG_MISMATCH; + } +#endif + goto match_at_end; + +#ifdef ONIG_DEBUG_STATISTICS + fail: + SOP_OUT; + goto fail2; +#endif + CASE_OP(FAIL) +#ifdef ONIG_DEBUG_STATISTICS + fail2: +#else + fail: +#endif + STACK_POP; + p = stk->u.state.pcode; + s = stk->u.state.pstr; + CHECK_RETRY_LIMIT_IN_MATCH; + JUMP_OUT; + + DEFAULT_OP + MATCH_AT_ERROR_RETURN(ONIGERR_UNDEFINED_BYTECODE); + + } BYTECODE_INTERPRETER_END; + + match_at_end: + if (msa->retry_limit_in_search != 0) { +#ifdef ONIG_DEBUG + if (retry_in_match_counter > + ULONG_MAX - msa->retry_limit_in_search_counter) { + fprintf(DBGFP, "retry limit counter overflow: %8lu/%8lu\n", + retry_in_match_counter, msa->retry_limit_in_search_counter); + } +#endif + msa->retry_limit_in_search_counter += retry_in_match_counter; + } + +#ifdef ONIG_DEBUG_MATCH_COUNTER + MATCH_COUNTER_OUT("END"); +#endif + + STACK_SAVE(msa, is_alloca, alloc_base); + return best_len; +} + + +#ifdef USE_REGSET + +typedef struct { + regex_t* reg; + OnigRegion* region; +} RR; + +struct OnigRegSetStruct { + RR* rs; + int n; + int alloc; + OnigEncoding enc; + int anchor; /* BEGIN_BUF, BEGIN_POS, (SEMI_)END_BUF */ + OnigLen anc_dmin; /* (SEMI_)END_BUF anchor distance */ + OnigLen anc_dmax; /* (SEMI_)END_BUF anchor distance */ + int all_low_high; + int anychar_inf; +}; + +enum SearchRangeStatus { + SRS_DEAD = 0, + SRS_LOW_HIGH = 1, + SRS_ALL_RANGE = 2 +}; + +typedef struct { + int state; /* value of enum SearchRangeStatus */ + UChar* low; + UChar* high; + UChar* sch_range; +} SearchRange; + +#define REGSET_MATCH_AND_RETURN_CHECK(upper_range) \ + r = match_at(reg, str, end, (upper_range), s, msas + i); \ + if (r != ONIG_MISMATCH) {\ + if (r >= 0) {\ + goto match;\ + }\ + else goto finish; /* error */ \ + } + +static inline int +regset_search_body_position_lead(OnigRegSet* set, + const UChar* str, const UChar* end, + const UChar* start, const UChar* range, /* match start range */ + const UChar* orig_range, /* data range */ + OnigOptionType option, MatchArg* msas, int* rmatch_pos) +{ + int r, n, i; + UChar *s; + UChar *low, *high; + UChar* sch_range; + regex_t* reg; + OnigEncoding enc; + SearchRange* sr; + + n = set->n; + enc = set->enc; + s = (UChar* )start; + + sr = (SearchRange* )xmalloc(sizeof(*sr) * n); + CHECK_NULL_RETURN_MEMERR(sr); + + for (i = 0; i < n; i++) { + reg = set->rs[i].reg; + + sr[i].state = SRS_DEAD; + if (reg->optimize != OPTIMIZE_NONE) { + if (reg->dist_max != INFINITE_LEN) { + if (DIST_CAST(end - range) > reg->dist_max) + sch_range = (UChar* )range + reg->dist_max; + else + sch_range = (UChar* )end; + + if (forward_search(reg, str, end, s, sch_range, &low, &high)) { + sr[i].state = SRS_LOW_HIGH; + sr[i].low = low; + sr[i].high = high; + sr[i].sch_range = sch_range; + } + } + else { + sch_range = (UChar* )end; + if (forward_search(reg, str, end, s, sch_range, &low, &high)) { + goto total_active; + } + } + } + else { + total_active: + sr[i].state = SRS_ALL_RANGE; + sr[i].low = s; + sr[i].high = (UChar* )range; + } + } + +#define ACTIVATE_ALL_LOW_HIGH_SEARCH_THRESHOLD_LEN 500 + + if (set->all_low_high != 0 + && range - start > ACTIVATE_ALL_LOW_HIGH_SEARCH_THRESHOLD_LEN) { + do { + int try_count = 0; + for (i = 0; i < n; i++) { + if (sr[i].state == SRS_DEAD) continue; + + if (s < sr[i].low) continue; + if (s >= sr[i].high) { + if (forward_search(set->rs[i].reg, str, end, s, sr[i].sch_range, + &low, &high) != 0) { + sr[i].low = low; + sr[i].high = high; + if (s < low) continue; + } + else { + sr[i].state = SRS_DEAD; + continue; + } + } + + reg = set->rs[i].reg; + REGSET_MATCH_AND_RETURN_CHECK(orig_range); + try_count++; + } /* for (i) */ + + if (s >= range) break; + + if (try_count == 0) { + low = (UChar* )range; + for (i = 0; i < n; i++) { + if (sr[i].state == SRS_LOW_HIGH && low > sr[i].low) { + low = sr[i].low; + } + } + if (low == range) break; + + s = low; + } + else { + s += enclen(enc, s); + } + } while (1); + } + else { + int prev_is_newline = 1; + do { + for (i = 0; i < n; i++) { + if (sr[i].state == SRS_DEAD) continue; + if (sr[i].state == SRS_LOW_HIGH) { + if (s < sr[i].low) continue; + if (s >= sr[i].high) { + if (forward_search(set->rs[i].reg, str, end, s, sr[i].sch_range, + &low, &high) != 0) { + sr[i].low = low; + sr[i].high = high; + if (s < low) continue; + } + else { + sr[i].state = SRS_DEAD; + continue; + } + } + } + + reg = set->rs[i].reg; + if ((reg->anchor & ANCR_ANYCHAR_INF) == 0 || prev_is_newline != 0) { + REGSET_MATCH_AND_RETURN_CHECK(orig_range); + } + } + + if (s >= range) break; + + if (set->anychar_inf != 0) + prev_is_newline = ONIGENC_IS_MBC_NEWLINE(set->enc, s, end); + + s += enclen(enc, s); + } while (1); + } + + xfree(sr); + return ONIG_MISMATCH; + + finish: + xfree(sr); + return r; + + match: + xfree(sr); + *rmatch_pos = (int )(s - str); + return i; +} + +static inline int +regset_search_body_regex_lead(OnigRegSet* set, + const UChar* str, const UChar* end, + const UChar* start, const UChar* orig_range, OnigRegSetLead lead, + OnigOptionType option, OnigMatchParam* mps[], int* rmatch_pos) +{ + int r; + int i; + int n; + int match_index; + const UChar* ep; + regex_t* reg; + OnigRegion* region; + + n = set->n; + + match_index = ONIG_MISMATCH; + ep = orig_range; + for (i = 0; i < n; i++) { + reg = set->rs[i].reg; + region = set->rs[i].region; + r = search_in_range(reg, str, end, start, ep, orig_range, region, option, mps[i]); + if (r > 0) { + if (str + r < ep) { + match_index = i; + *rmatch_pos = r; + if (lead == ONIG_REGSET_PRIORITY_TO_REGEX_ORDER) + break; + + ep = str + r; + } + } + else if (r == 0) { + match_index = i; + *rmatch_pos = r; + break; + } + } + + return match_index; +} + +extern int +onig_regset_search_with_param(OnigRegSet* set, + const UChar* str, const UChar* end, + const UChar* start, const UChar* range, + OnigRegSetLead lead, OnigOptionType option, OnigMatchParam* mps[], + int* rmatch_pos) +{ + int r; + int i; + UChar *s; + regex_t* reg; + OnigEncoding enc; + OnigRegion* region; + MatchArg* msas; + const UChar *orig_start = start; + const UChar *orig_range = range; + + if (set->n == 0) + return ONIG_MISMATCH; + + if (OPTON_POSIX_REGION(option) || OPTON_CALLBACK_EACH_MATCH(option)) + return ONIGERR_INVALID_ARGUMENT; + + r = 0; + enc = set->enc; + msas = (MatchArg* )NULL; + + for (i = 0; i < set->n; i++) { + reg = set->rs[i].reg; + region = set->rs[i].region; + ADJUST_MATCH_PARAM(reg, mps[i]); + if (IS_NOT_NULL(region)) { + r = onig_region_resize_clear(region, reg->num_mem + 1); + if (r != 0) goto finish_no_msa; + } + } + + if (start > end || start < str) goto mismatch_no_msa; + if (str < end) { + /* forward search only */ + if (range < start) + return ONIGERR_INVALID_ARGUMENT; + } + + if (OPTON_CHECK_VALIDITY_OF_STRING(option)) { + if (! ONIGENC_IS_VALID_MBC_STRING(enc, str, end)) { + r = ONIGERR_INVALID_WIDE_CHAR_VALUE; + goto finish_no_msa; + } + } + + if (set->anchor != OPTIMIZE_NONE && str < end) { + UChar *min_semi_end, *max_semi_end; + + if ((set->anchor & ANCR_BEGIN_POSITION) != 0) { + /* search start-position only */ + begin_position: + range = start + 1; + } + else if ((set->anchor & ANCR_BEGIN_BUF) != 0) { + /* search str-position only */ + if (start != str) goto mismatch_no_msa; + range = str + 1; + } + else if ((set->anchor & ANCR_END_BUF) != 0) { + min_semi_end = max_semi_end = (UChar* )end; + + end_buf: + if ((OnigLen )(max_semi_end - str) < set->anc_dmin) + goto mismatch_no_msa; + + if ((OnigLen )(min_semi_end - start) > set->anc_dmax) { + start = min_semi_end - set->anc_dmax; + if (start < end) + start = onigenc_get_right_adjust_char_head(enc, str, start); + } + if ((OnigLen )(max_semi_end - (range - 1)) < set->anc_dmin) { + range = max_semi_end - set->anc_dmin + 1; + } + if (start > range) goto mismatch_no_msa; + } + else if ((set->anchor & ANCR_SEMI_END_BUF) != 0) { + UChar* pre_end = ONIGENC_STEP_BACK(enc, str, end, 1); + + max_semi_end = (UChar* )end; + if (ONIGENC_IS_MBC_NEWLINE(enc, pre_end, end)) { + min_semi_end = pre_end; + +#ifdef USE_CRNL_AS_LINE_TERMINATOR + pre_end = ONIGENC_STEP_BACK(enc, str, pre_end, 1); + if (IS_NOT_NULL(pre_end) && + ONIGENC_IS_MBC_CRNL(enc, pre_end, end)) { + min_semi_end = pre_end; + } +#endif + if (min_semi_end > str && start <= min_semi_end) { + goto end_buf; + } + } + else { + min_semi_end = (UChar* )end; + goto end_buf; + } + } + else if ((set->anchor & ANCR_ANYCHAR_INF_ML) != 0) { + goto begin_position; + } + } + else if (str == end) { /* empty string */ + start = end = str; + s = (UChar* )start; + + msas = (MatchArg* )xmalloc(sizeof(*msas) * set->n); + CHECK_NULL_RETURN_MEMERR(msas); + for (i = 0; i < set->n; i++) { + reg = set->rs[i].reg; + MATCH_ARG_INIT(msas[i], reg, option, set->rs[i].region, start, mps[i]); + } + for (i = 0; i < set->n; i++) { + reg = set->rs[i].reg; + if (reg->threshold_len == 0) { + /* REGSET_MATCH_AND_RETURN_CHECK(end); */ + /* Can't use REGSET_MATCH_AND_RETURN_CHECK() + because r must be set regex index (i) + */ + r = match_at(reg, str, end, end, s, msas + i); + if (r != ONIG_MISMATCH) { + if (r >= 0) { + r = i; + goto match; + } + else goto finish; /* error */ + } + } + } + + goto mismatch; + } + + if (lead == ONIG_REGSET_POSITION_LEAD) { + msas = (MatchArg* )xmalloc(sizeof(*msas) * set->n); + CHECK_NULL_RETURN_MEMERR(msas); + + for (i = 0; i < set->n; i++) { + MATCH_ARG_INIT(msas[i], set->rs[i].reg, option, set->rs[i].region, + orig_start, mps[i]); + } + + r = regset_search_body_position_lead(set, str, end, start, range, + orig_range, option, msas, rmatch_pos); + } + else { + r = regset_search_body_regex_lead(set, str, end, start, orig_range, + lead, option, mps, rmatch_pos); + } + if (r < 0) goto finish; + else goto match2; + + mismatch: + r = ONIG_MISMATCH; + finish: + for (i = 0; i < set->n; i++) { + if (IS_NOT_NULL(msas)) + MATCH_ARG_FREE(msas[i]); + if (OPTON_FIND_NOT_EMPTY(set->rs[i].reg->options) && + IS_NOT_NULL(set->rs[i].region)) { + onig_region_clear(set->rs[i].region); + } + } + if (IS_NOT_NULL(msas)) xfree(msas); + return r; + + mismatch_no_msa: + r = ONIG_MISMATCH; + finish_no_msa: + return r; + + match: + *rmatch_pos = (int )(s - str); + match2: + for (i = 0; i < set->n; i++) { + if (IS_NOT_NULL(msas)) + MATCH_ARG_FREE(msas[i]); + if (OPTON_FIND_NOT_EMPTY(set->rs[i].reg->options) && + IS_NOT_NULL(set->rs[i].region)) { + onig_region_clear(set->rs[i].region); + } + } + if (IS_NOT_NULL(msas)) xfree(msas); + return r; /* regex index */ +} + +extern int +onig_regset_search(OnigRegSet* set, const UChar* str, const UChar* end, + const UChar* start, const UChar* range, + OnigRegSetLead lead, OnigOptionType option, int* rmatch_pos) +{ + int r; + int i; + OnigMatchParam* mp; + OnigMatchParam** mps; + + mps = (OnigMatchParam** )xmalloc((sizeof(OnigMatchParam*) + sizeof(OnigMatchParam)) * set->n); + CHECK_NULL_RETURN_MEMERR(mps); + + mp = (OnigMatchParam* )(mps + set->n); + + for (i = 0; i < set->n; i++) { + onig_initialize_match_param(mp + i); + mps[i] = mp + i; + } + + r = onig_regset_search_with_param(set, str, end, start, range, lead, option, mps, + rmatch_pos); + for (i = 0; i < set->n; i++) + onig_free_match_param_content(mp + i); + + xfree(mps); + + return r; +} + +#endif /* USE_REGSET */ + + +static UChar* +slow_search(OnigEncoding enc, UChar* target, UChar* target_end, + const UChar* text, const UChar* text_end, UChar* text_range) +{ + UChar *t, *p, *s, *end; + + end = (UChar* )text_end; + end -= target_end - target - 1; + if (end > text_range) + end = text_range; + + s = (UChar* )text; + + while (s < end) { + if (*s == *target) { + p = s + 1; + t = target + 1; + while (t < target_end) { + if (*t != *p++) + break; + t++; + } + if (t == target_end) + return s; + } + s += enclen(enc, s); + } + + return (UChar* )NULL; +} + +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) +{ + UChar *t, *p, *s; + + s = (UChar* )text_end; + s -= (target_end - target); + if (s > text_start) + s = (UChar* )text_start; + else + s = ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc, adjust_text, s); + + while (PTR_GE(s, text)) { + if (*s == *target) { + p = s + 1; + t = target + 1; + while (t < target_end) { + if (*t != *p++) + break; + t++; + } + if (t == target_end) + return s; + } + s = (UChar* )onigenc_get_prev_char_head(enc, adjust_text, s); + } + + return (UChar* )NULL; +} + +static UChar* +sunday_quick_search_step_forward(regex_t* reg, + const UChar* target, const UChar* target_end, + const UChar* text, const UChar* text_end, + const UChar* text_range) +{ + const UChar *s, *se, *t, *p, *end; + const UChar *tail, *next; + int skip, tlen1; + int map_offset; + OnigEncoding enc; + +#ifdef ONIG_DEBUG_SEARCH + fprintf(DBGFP, + "sunday_quick_search_step_forward: text: %p, text_end: %p, text_range: %p\n", + text, text_end, text_range); +#endif + + enc = reg->enc; + + tail = target_end - 1; + tlen1 = (int )(tail - target); + end = text_range; + if (tlen1 > text_end - end) + end = text_end - tlen1; + + map_offset = reg->map_offset; + s = text; + + while (s < end) { + p = se = s + tlen1; + t = tail; + while (*p == *t) { + if (t == target) return (UChar* )s; + p--; t--; + } + if (se + map_offset >= text_end) break; + skip = reg->map[*(se + map_offset)]; +#if 0 + t = s; + do { + s += enclen(enc, s); + } while ((s - t) < skip && s < end); +#else + next = s + skip; + if (next < end) + s = onigenc_get_right_adjust_char_head(enc, s, next); + else + break; +#endif + } + + return (UChar* )NULL; +} + +static UChar* +sunday_quick_search(regex_t* reg, const UChar* target, const UChar* target_end, + const UChar* text, const UChar* text_end, + const UChar* text_range) +{ + const UChar *s, *t, *p, *end; + const UChar *tail; + int map_offset; + ptrdiff_t target_len; + + map_offset = reg->map_offset; + tail = target_end - 1; + target_len = target_end - target; + + if (target_len > text_end - text_range) { + end = text_end; + if (target_len > text_end - text) + return (UChar* )NULL; + } + else { + end = text_range + target_len; + } + + s = text + target_len - 1; + +#ifdef USE_STRICT_POINTER_ADDRESS + if (s < end) { + while (TRUE) { + p = s; + t = tail; + while (*p == *t) { + if (t == target) return (UChar* )p; + p--; t--; + } + if (text_end - s <= map_offset) break; + if (reg->map[*(s + map_offset)] >= end - s) break; + s += reg->map[*(s + map_offset)]; + } + } +#else + while (s < end) { + p = s; + t = tail; + while (*p == *t) { + if (t == target) return (UChar* )p; + p--; t--; + } + if (text_end - s <= map_offset) break; + s += reg->map[*(s + map_offset)]; + } +#endif + + return (UChar* )NULL; +} + +static UChar* +map_search(OnigEncoding enc, UChar map[], + const UChar* text, const UChar* text_range) +{ + const UChar *s = text; + + while (s < text_range) { + if (map[*s]) return (UChar* )s; + + s += enclen(enc, s); + } + return (UChar* )NULL; +} + +static UChar* +map_search_backward(OnigEncoding enc, UChar map[], + const UChar* text, const UChar* adjust_text, + const UChar* text_start) +{ + const UChar *s = text_start; + + while (PTR_GE(s, text)) { + if (map[*s]) return (UChar* )s; + + s = onigenc_get_prev_char_head(enc, adjust_text, s); + } + return (UChar* )NULL; +} +extern int +onig_match(regex_t* reg, const UChar* str, const UChar* end, const UChar* at, + OnigRegion* region, OnigOptionType option) +{ + int r; + OnigMatchParam mp; + + onig_initialize_match_param(&mp); + r = onig_match_with_param(reg, str, end, at, region, option, &mp); + onig_free_match_param_content(&mp); + return r; +} + +extern int +onig_match_with_param(regex_t* reg, const UChar* str, const UChar* end, + const UChar* at, OnigRegion* region, OnigOptionType option, + OnigMatchParam* mp) +{ + int r; + MatchArg msa; + +#ifndef USE_POSIX_API + if (OPTON_POSIX_REGION(option)) return ONIGERR_INVALID_ARGUMENT; +#endif + + ADJUST_MATCH_PARAM(reg, mp); + MATCH_ARG_INIT(msa, reg, option, region, at, mp); + if (region +#ifdef USE_POSIX_API + && !OPTON_POSIX_REGION(option) +#endif + ) { + r = onig_region_resize_clear(region, reg->num_mem + 1); + } + else + r = 0; + + if (r == 0) { + if (OPTON_CHECK_VALIDITY_OF_STRING(option)) { + if (! ONIGENC_IS_VALID_MBC_STRING(reg->enc, str, end)) { + r = ONIGERR_INVALID_WIDE_CHAR_VALUE; + goto end; + } + } + + r = match_at(reg, str, end, end, at, &msa); +#ifdef USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE + if (OPTON_FIND_LONGEST(option) && r == ONIG_MISMATCH) { + if (msa.best_len >= 0) { + r = msa.best_len; + } + } +#endif + } + + end: + MATCH_ARG_FREE(msa); + return r; +} + +static int +forward_search(regex_t* reg, const UChar* str, const UChar* end, UChar* start, + UChar* range, UChar** low, UChar** high) +{ + UChar *p, *pprev = (UChar* )NULL; + +#ifdef ONIG_DEBUG_SEARCH + fprintf(DBGFP, "forward_search: str: %p, end: %p, start: %p, range: %p\n", + str, end, start, range); +#endif + + p = start; + if (reg->dist_min != 0) { + if (DIST_CAST(end - p) <= reg->dist_min) + return 0; /* fail */ + + if (ONIGENC_IS_SINGLEBYTE(reg->enc)) { + p += reg->dist_min; + } + else { + UChar *q = p + reg->dist_min; + while (p < q) p += enclen(reg->enc, p); + } + } + + retry: + switch (reg->optimize) { + case OPTIMIZE_STR: + p = slow_search(reg->enc, reg->exact, reg->exact_end, p, end, range); + break; + + case OPTIMIZE_STR_FAST: + p = sunday_quick_search(reg, reg->exact, reg->exact_end, p, end, range); + break; + + case OPTIMIZE_STR_FAST_STEP_FORWARD: + p = sunday_quick_search_step_forward(reg, reg->exact, reg->exact_end, + p, end, range); + break; + + case OPTIMIZE_MAP: + p = map_search(reg->enc, reg->map, p, range); + break; + } + + if (p && p < range) { + if (DIST_CAST(p - start) < reg->dist_min) { + retry_gate: + pprev = p; + p += enclen(reg->enc, p); + goto retry; + } + + if (reg->sub_anchor) { + UChar* prev; + + switch (reg->sub_anchor) { + case ANCR_BEGIN_LINE: + if (!ON_STR_BEGIN(p)) { + prev = onigenc_get_prev_char_head(reg->enc, (pprev ? pprev : str), p); + if (!ONIGENC_IS_MBC_NEWLINE(reg->enc, prev, end)) + goto retry_gate; + } + break; + + case ANCR_END_LINE: + if (ON_STR_END(p)) { +#ifndef USE_NEWLINE_AT_END_OF_STRING_HAS_EMPTY_LINE + prev = (UChar* )onigenc_get_prev_char_head(reg->enc, + (pprev ? pprev : str), p); + if (prev && ONIGENC_IS_MBC_NEWLINE(reg->enc, prev, end)) + goto retry_gate; +#endif + } + else if (! ONIGENC_IS_MBC_NEWLINE(reg->enc, p, end) +#ifdef USE_CRNL_AS_LINE_TERMINATOR + && ! ONIGENC_IS_MBC_CRNL(reg->enc, p, end) +#endif + ) + goto retry_gate; + + break; + } + } + + if (reg->dist_max == 0) { + *low = p; + *high = p; + } + else { + if (reg->dist_max != INFINITE_LEN) { + if (DIST_CAST(p - str) < reg->dist_max) { + *low = (UChar* )str; + } + else { + *low = p - reg->dist_max; + if (*low > start) { + *low = onigenc_get_right_adjust_char_head(reg->enc, start, *low); + } + } + } + /* no needs to adjust *high, *high is used as range check only */ + if (DIST_CAST(p - str) < reg->dist_min) + *high = (UChar* )str; + else + *high = p - reg->dist_min; + } + +#ifdef ONIG_DEBUG_SEARCH + fprintf(DBGFP, + "forward_search success: low: %d, high: %d, dmin: %u, dmax: %u\n", + (int )(*low - str), (int )(*high - str), + reg->dist_min, reg->dist_max); +#endif + return 1; /* success */ + } + + return 0; /* fail */ +} + + +static int +backward_search(regex_t* reg, const UChar* str, const UChar* end, UChar* s, + const UChar* range, UChar* adjrange, UChar** low, UChar** high) +{ + UChar *p; + + p = s; + + retry: + switch (reg->optimize) { + case OPTIMIZE_STR: + exact_method: + p = slow_search_backward(reg->enc, reg->exact, reg->exact_end, + range, adjrange, end, p); + break; + + case OPTIMIZE_STR_FAST: + case OPTIMIZE_STR_FAST_STEP_FORWARD: + goto exact_method; + break; + + case OPTIMIZE_MAP: + p = map_search_backward(reg->enc, reg->map, range, adjrange, p); + break; + } + + if (p) { + if (reg->sub_anchor) { + UChar* prev; + + switch (reg->sub_anchor) { + case ANCR_BEGIN_LINE: + if (!ON_STR_BEGIN(p)) { + prev = onigenc_get_prev_char_head(reg->enc, str, p); + if (IS_NOT_NULL(prev) && !ONIGENC_IS_MBC_NEWLINE(reg->enc, prev, end)) { + p = prev; + goto retry; + } + } + break; + + case ANCR_END_LINE: + if (ON_STR_END(p)) { +#ifndef USE_NEWLINE_AT_END_OF_STRING_HAS_EMPTY_LINE + prev = onigenc_get_prev_char_head(reg->enc, adjrange, p); + if (IS_NULL(prev)) goto fail; + if (ONIGENC_IS_MBC_NEWLINE(reg->enc, prev, end)) { + p = prev; + goto retry; + } +#endif + } + else if (! ONIGENC_IS_MBC_NEWLINE(reg->enc, p, end) +#ifdef USE_CRNL_AS_LINE_TERMINATOR + && ! ONIGENC_IS_MBC_CRNL(reg->enc, p, end) +#endif + ) { + p = onigenc_get_prev_char_head(reg->enc, adjrange, p); + if (IS_NULL(p)) goto fail; + goto retry; + } + break; + } + } + + if (reg->dist_max != INFINITE_LEN) { + if (DIST_CAST(p - str) < reg->dist_max) + *low = (UChar* )str; + else + *low = p - reg->dist_max; + + if (reg->dist_min != 0) { + if (DIST_CAST(p - str) < reg->dist_min) + *high = (UChar* )str; + else + *high = p - reg->dist_min; + } + else { + *high = p; + } + + *high = onigenc_get_right_adjust_char_head(reg->enc, adjrange, *high); + } + +#ifdef ONIG_DEBUG_SEARCH + fprintf(DBGFP, "backward_search: low: %d, high: %d\n", + (int )(*low - str), (int )(*high - str)); +#endif + return 1; /* success */ + } + + fail: +#ifdef ONIG_DEBUG_SEARCH + fprintf(DBGFP, "backward_search: fail.\n"); +#endif + return 0; /* fail */ +} + + +extern int +onig_search(regex_t* reg, const UChar* str, const UChar* end, + const UChar* start, const UChar* range, OnigRegion* region, + OnigOptionType option) +{ + int r; + OnigMatchParam mp; + const UChar* data_range; + + onig_initialize_match_param(&mp); + + /* The following is an expanded code of onig_search_with_param() */ + if (range > start) + data_range = range; + else + data_range = end; + + r = search_in_range(reg, str, end, start, range, data_range, region, + option, &mp); + + onig_free_match_param_content(&mp); + return r; + +} + +static int +search_in_range(regex_t* reg, const UChar* str, const UChar* end, + const UChar* start, const UChar* range, /* match start range */ + const UChar* data_range, /* subject string range */ + OnigRegion* region, + OnigOptionType option, OnigMatchParam* mp) +{ + int r; + int forward; + UChar *s; + MatchArg msa; + const UChar *orig_start = start; + +#ifdef ONIG_DEBUG_SEARCH + fprintf(DBGFP, + "onig_search (entry point): str: %p, end: %d, start: %d, range: %d\n", + str, (int )(end - str), (int )(start - str), (int )(range - str)); +#endif + + ADJUST_MATCH_PARAM(reg, mp); + +#ifndef USE_POSIX_API + if (OPTON_POSIX_REGION(option)) { + r = ONIGERR_INVALID_ARGUMENT; + goto finish_no_msa; + } +#endif + + if (region +#ifdef USE_POSIX_API + && ! OPTON_POSIX_REGION(option) +#endif + ) { + r = onig_region_resize_clear(region, reg->num_mem + 1); + if (r != 0) goto finish_no_msa; + } + + if (start > end || start < str) goto mismatch_no_msa; + + if (OPTON_CHECK_VALIDITY_OF_STRING(option)) { + if (! ONIGENC_IS_VALID_MBC_STRING(reg->enc, str, end)) { + r = ONIGERR_INVALID_WIDE_CHAR_VALUE; + goto finish_no_msa; + } + } + + +#define MATCH_AND_RETURN_CHECK(upper_range) \ + r = match_at(reg, str, end, (upper_range), s, &msa);\ + if (r != ONIG_MISMATCH) {\ + if (r >= 0) {\ + goto match;\ + }\ + else goto finish; /* error */ \ + } + + forward = (range > start); + + /* anchor optimize: resume search range */ + if (reg->anchor != 0 && str < end) { + UChar *min_semi_end, *max_semi_end; + + if (reg->anchor & ANCR_BEGIN_POSITION) { + /* search start-position only */ + begin_position: + if (range > start) + range = start + 1; + else + range = start; + } + else if (reg->anchor & ANCR_BEGIN_BUF) { + /* search str-position only */ + if (range > start) { + if (start != str) goto mismatch_no_msa; + range = str + 1; + } + else { + if (range <= str) { + start = str; + range = str; + } + else + goto mismatch_no_msa; + } + } + else if (reg->anchor & ANCR_END_BUF) { + min_semi_end = max_semi_end = (UChar* )end; + + end_buf: + if ((OnigLen )(max_semi_end - str) < reg->anc_dist_min) + goto mismatch_no_msa; + + if (range > start) { + if (reg->anc_dist_max != INFINITE_LEN && + DIST_CAST(min_semi_end - start) > reg->anc_dist_max) { + start = min_semi_end - reg->anc_dist_max; + if (start < end) + start = onigenc_get_right_adjust_char_head(reg->enc, str, start); + } + if (DIST_CAST(max_semi_end - (range - 1)) < reg->anc_dist_min) { + if (DIST_CAST(max_semi_end - str + 1) < reg->anc_dist_min) + goto mismatch_no_msa; + else + range = max_semi_end - reg->anc_dist_min + 1; + } + + if (start > range) goto mismatch_no_msa; + /* If start == range, match with empty at end. + Backward search is used. */ + } + else { + if (reg->anc_dist_max != INFINITE_LEN && + DIST_CAST(min_semi_end - range) > reg->anc_dist_max) { + range = min_semi_end - reg->anc_dist_max; + } + if (DIST_CAST(max_semi_end - start) < reg->anc_dist_min) { + if (DIST_CAST(max_semi_end - str) < reg->anc_dist_min) + goto mismatch_no_msa; + else { + start = max_semi_end - reg->anc_dist_min; + start = ONIGENC_LEFT_ADJUST_CHAR_HEAD(reg->enc, str, start); + } + } + if (range > start) goto mismatch_no_msa; + } + } + else if (reg->anchor & ANCR_SEMI_END_BUF) { + UChar* pre_end = ONIGENC_STEP_BACK(reg->enc, str, end, 1); + + max_semi_end = (UChar* )end; + if (ONIGENC_IS_MBC_NEWLINE(reg->enc, pre_end, end)) { + min_semi_end = pre_end; + +#ifdef USE_CRNL_AS_LINE_TERMINATOR + pre_end = ONIGENC_STEP_BACK(reg->enc, str, pre_end, 1); + if (IS_NOT_NULL(pre_end) && + ONIGENC_IS_MBC_CRNL(reg->enc, pre_end, end)) { + min_semi_end = pre_end; + } +#endif + if (min_semi_end > str && start <= min_semi_end) { + goto end_buf; + } + } + else { + min_semi_end = (UChar* )end; + goto end_buf; + } + } + else if ((reg->anchor & ANCR_ANYCHAR_INF_ML) && range > start) { + goto begin_position; + } + } + else if (str == end) { /* empty string */ + static const UChar* address_for_empty_string = (UChar* )""; + +#ifdef ONIG_DEBUG_SEARCH + fprintf(DBGFP, "onig_search: empty string.\n"); +#endif + + if (reg->threshold_len == 0) { + start = end = str = address_for_empty_string; + s = (UChar* )start; + + MATCH_ARG_INIT(msa, reg, option, region, start, mp); + MATCH_AND_RETURN_CHECK(end); + goto mismatch; + } + goto mismatch_no_msa; + } + +#ifdef ONIG_DEBUG_SEARCH + fprintf(DBGFP, "onig_search(apply anchor): end: %d, start: %d, range: %d\n", + (int )(end - str), (int )(start - str), (int )(range - str)); +#endif + + MATCH_ARG_INIT(msa, reg, option, region, orig_start, mp); + + s = (UChar* )start; + if (forward != 0) { /* forward search */ + if (reg->optimize != OPTIMIZE_NONE) { + UChar *sch_range, *low, *high; + + if (reg->dist_max != 0) { + if (reg->dist_max == INFINITE_LEN) + sch_range = (UChar* )end; + else { + if (DIST_CAST(end - range) < reg->dist_max) + sch_range = (UChar* )end; + else { + sch_range = (UChar* )range + reg->dist_max; + } + } + } + else + sch_range = (UChar* )range; + + if ((end - start) < reg->threshold_len) + goto mismatch; + + if (reg->dist_max != INFINITE_LEN) { + do { + if (! forward_search(reg, str, end, s, sch_range, &low, &high)) + goto mismatch; + if (s < low) { + s = low; + } + while (s <= high) { + MATCH_AND_RETURN_CHECK(data_range); + s += enclen(reg->enc, s); +#ifdef USE_SKIP_SEARCH + if (s < msa.skip_search) s = msa.skip_search; +#endif + } + } while (s < range); + goto mismatch; + } + else { /* check only. */ + if (! forward_search(reg, str, end, s, sch_range, &low, &high)) + goto mismatch; + + if ((reg->anchor & ANCR_ANYCHAR_INF) != 0 && + (reg->anchor & (ANCR_LOOK_BEHIND | ANCR_PREC_READ_NOT)) == 0) { + while (s < range) { + UChar* prev; + + MATCH_AND_RETURN_CHECK(data_range); + prev = s; + s += enclen(reg->enc, s); + +#ifdef USE_SKIP_SEARCH + if (s < msa.skip_search) s = msa.skip_search; + else { +#endif + while (!ONIGENC_IS_MBC_NEWLINE(reg->enc, prev, end) && + s < range) { + prev = s; + s += enclen(reg->enc, s); + } +#ifdef USE_SKIP_SEARCH + } +#endif + } + goto mismatch; + } + } + } + + while (1 == 1) { + MATCH_AND_RETURN_CHECK(data_range); + if (s >= range) break; + s += enclen(reg->enc, s); + +#ifdef USE_SKIP_SEARCH + if (s < msa.skip_search) { + s = msa.skip_search; + if (s > range) break; + } +#endif + } + } + else { /* backward search */ + if (range < str) goto mismatch; + + if (orig_start < end) + orig_start += enclen(reg->enc, orig_start); /* is upper range */ + + if (reg->optimize != OPTIMIZE_NONE) { + UChar *low, *high, *adjrange, *sch_start; + const UChar *min_range; + + if ((end - range) < reg->threshold_len) goto mismatch; + + if (range < end) + adjrange = ONIGENC_LEFT_ADJUST_CHAR_HEAD(reg->enc, str, range); + else + adjrange = (UChar* )end; + + if (DIST_CAST(end - range) > reg->dist_min) + min_range = range + reg->dist_min; + else + min_range = end; + + if (reg->dist_max != INFINITE_LEN) { + do { + if (DIST_CAST(end - s) > reg->dist_max) + sch_start = s + reg->dist_max; + else { + sch_start = onigenc_get_prev_char_head(reg->enc, str, end); + } + + if (backward_search(reg, str, end, sch_start, min_range, adjrange, + &low, &high) <= 0) + goto mismatch; + + if (s > high) + s = high; + + while (PTR_GE(s, low)) { + MATCH_AND_RETURN_CHECK(orig_start); + s = onigenc_get_prev_char_head(reg->enc, str, s); + } + } while (PTR_GE(s, range)); + goto mismatch; + } + else { /* check only. */ + sch_start = onigenc_get_prev_char_head(reg->enc, str, end); + + if (backward_search(reg, str, end, sch_start, min_range, adjrange, + &low, &high) <= 0) goto mismatch; + } + } + + do { + MATCH_AND_RETURN_CHECK(orig_start); + s = onigenc_get_prev_char_head(reg->enc, str, s); + } while (PTR_GE(s, range)); + } + + mismatch: +#ifdef USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE + if (OPTON_FIND_LONGEST(reg->options)) { + if (msa.best_len >= 0) { + s = msa.best_s; + goto match; + } + } +#endif + r = ONIG_MISMATCH; + + finish: + MATCH_ARG_FREE(msa); + + /* If result is mismatch and no FIND_NOT_EMPTY option, + then the region is not set in match_at(). */ + if (OPTON_FIND_NOT_EMPTY(reg->options) && region +#ifdef USE_POSIX_API + && !OPTON_POSIX_REGION(option) +#endif + ) { + onig_region_clear(region); + } + +#ifdef ONIG_DEBUG + if (r != ONIG_MISMATCH) + fprintf(DBGFP, "onig_search: error %d\n", r); +#endif + return r; + + mismatch_no_msa: + r = ONIG_MISMATCH; + finish_no_msa: +#ifdef ONIG_DEBUG + if (r != ONIG_MISMATCH) + fprintf(DBGFP, "onig_search: error %d\n", r); +#endif + return r; + + match: + MATCH_ARG_FREE(msa); + return (int )(s - str); +} + +extern int +onig_search_with_param(regex_t* reg, const UChar* str, const UChar* end, + const UChar* start, const UChar* range, OnigRegion* region, + OnigOptionType option, OnigMatchParam* mp) +{ + const UChar* data_range; + + if (range > start) + data_range = range; + else + data_range = end; + + return search_in_range(reg, str, end, start, range, data_range, region, + option, mp); +} + +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) +{ + int r; + int n; + int rs; + const UChar* start; + + if (OPTON_CHECK_VALIDITY_OF_STRING(option)) { + if (! ONIGENC_IS_VALID_MBC_STRING(reg->enc, str, end)) + return ONIGERR_INVALID_WIDE_CHAR_VALUE; + + ONIG_OPTION_OFF(option, ONIG_OPTION_CHECK_VALIDITY_OF_STRING); + } + + n = 0; + start = str; + while (1) { + r = onig_search(reg, str, end, start, end, region, option); + if (r >= 0) { + rs = scan_callback(n, r, region, callback_arg); + n++; + if (rs != 0) + return rs; + + if (region->end[0] == start - str) { + if (start >= end) break; + start += enclen(reg->enc, start); + } + else + start = str + region->end[0]; + + if (start > end) + break; + } + else if (r == ONIG_MISMATCH) { + break; + } + else { /* error */ + return r; + } + } + + return n; +} + +extern int +onig_get_subexp_call_max_nest_level(void) +{ + return SubexpCallMaxNestLevel; +} + +extern int +onig_set_subexp_call_max_nest_level(int level) +{ + SubexpCallMaxNestLevel = level; + return 0; +} + +extern OnigEncoding +onig_get_encoding(regex_t* reg) +{ + return reg->enc; +} + +extern OnigOptionType +onig_get_options(regex_t* reg) +{ + return reg->options; +} + +extern OnigCaseFoldType +onig_get_case_fold_flag(regex_t* reg) +{ + return reg->case_fold_flag; +} + +extern OnigSyntaxType* +onig_get_syntax(regex_t* reg) +{ + return reg->syntax; +} + +extern int +onig_number_of_captures(regex_t* reg) +{ + return reg->num_mem; +} + +extern int +onig_number_of_capture_histories(regex_t* reg) +{ +#ifdef USE_CAPTURE_HISTORY + int i, n; + + n = 0; + for (i = 0; i <= ONIG_MAX_CAPTURE_HISTORY_GROUP; i++) { + if (MEM_STATUS_AT(reg->capture_history, i) != 0) + n++; + } + return n; +#else + return 0; +#endif +} + +extern void +onig_copy_encoding(OnigEncoding to, OnigEncoding from) +{ + *to = *from; +} + +#ifdef USE_REGSET + +extern int +onig_regset_new(OnigRegSet** rset, int n, regex_t* regs[]) +{ +#define REGSET_INITIAL_ALLOC_SIZE 10 + + int i; + int r; + int alloc; + OnigRegSet* set; + RR* rs; + + *rset = 0; + + set = (OnigRegSet* )xmalloc(sizeof(*set)); + CHECK_NULL_RETURN_MEMERR(set); + + alloc = n > REGSET_INITIAL_ALLOC_SIZE ? n : REGSET_INITIAL_ALLOC_SIZE; + rs = (RR* )xmalloc(sizeof(set->rs[0]) * alloc); + if (IS_NULL(rs)) { + xfree(set); + return ONIGERR_MEMORY; + } + + set->rs = rs; + set->n = 0; + set->alloc = alloc; + + for (i = 0; i < n; i++) { + regex_t* reg = regs[i]; + + r = onig_regset_add(set, reg); + if (r != 0) { + for (i = 0; i < set->n; i++) { + OnigRegion* region = set->rs[i].region; + if (IS_NOT_NULL(region)) + onig_region_free(region, 1); + } + xfree(set->rs); + xfree(set); + return r; + } + } + + *rset = set; + return 0; +} + +static void +update_regset_by_reg(OnigRegSet* set, regex_t* reg) +{ + if (set->n == 1) { + set->enc = reg->enc; + set->anchor = reg->anchor; + set->anc_dmin = reg->anc_dist_min; + set->anc_dmax = reg->anc_dist_max; + set->all_low_high = + (reg->optimize == OPTIMIZE_NONE || reg->dist_max == INFINITE_LEN) ? 0 : 1; + set->anychar_inf = (reg->anchor & ANCR_ANYCHAR_INF) != 0 ? 1 : 0; + } + else { + int anchor; + + anchor = set->anchor & reg->anchor; + if (anchor != 0) { + OnigLen anc_dmin; + OnigLen anc_dmax; + + anc_dmin = set->anc_dmin; + anc_dmax = set->anc_dmax; + if (anc_dmin > reg->anc_dist_min) anc_dmin = reg->anc_dist_min; + if (anc_dmax < reg->anc_dist_max) anc_dmax = reg->anc_dist_max; + set->anc_dmin = anc_dmin; + set->anc_dmax = anc_dmax; + } + + set->anchor = anchor; + + if (reg->optimize == OPTIMIZE_NONE || reg->dist_max == INFINITE_LEN) + set->all_low_high = 0; + + if ((reg->anchor & ANCR_ANYCHAR_INF) != 0) + set->anychar_inf = 1; + } +} + +extern int +onig_regset_add(OnigRegSet* set, regex_t* reg) +{ + OnigRegion* region; + +#ifdef USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE + if (OPTON_FIND_LONGEST(reg->options)) + return ONIGERR_INVALID_ARGUMENT; +#endif + + if (set->n != 0 && reg->enc != set->enc) + return ONIGERR_INVALID_ARGUMENT; + + if (set->n >= set->alloc) { + RR* nrs; + int new_alloc; + + new_alloc = set->alloc * 2; + nrs = (RR* )xrealloc(set->rs, sizeof(set->rs[0]) * new_alloc); + CHECK_NULL_RETURN_MEMERR(nrs); + + set->rs = nrs; + set->alloc = new_alloc; + } + + region = onig_region_new(); + CHECK_NULL_RETURN_MEMERR(region); + + set->rs[set->n].reg = reg; + set->rs[set->n].region = region; + set->n++; + + update_regset_by_reg(set, reg); + return 0; +} + +extern int +onig_regset_replace(OnigRegSet* set, int at, regex_t* reg) +{ + int i; + + if (at < 0 || at >= set->n) + return ONIGERR_INVALID_ARGUMENT; + + if (IS_NULL(reg)) { + onig_region_free(set->rs[at].region, 1); + for (i = at; i < set->n - 1; i++) { + set->rs[i].reg = set->rs[i+1].reg; + set->rs[i].region = set->rs[i+1].region; + } + set->n--; + } + else { +#ifdef USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE + if (OPTON_FIND_LONGEST(reg->options)) + return ONIGERR_INVALID_ARGUMENT; +#endif + + if (set->n > 1 && reg->enc != set->enc) + return ONIGERR_INVALID_ARGUMENT; + + set->rs[at].reg = reg; + } + + for (i = 0; i < set->n; i++) + update_regset_by_reg(set, set->rs[i].reg); + + return 0; +} + +extern void +onig_regset_free(OnigRegSet* set) +{ + int i; + + for (i = 0; i < set->n; i++) { + regex_t* reg; + OnigRegion* region; + + reg = set->rs[i].reg; + region = set->rs[i].region; + onig_free(reg); + if (IS_NOT_NULL(region)) + onig_region_free(region, 1); + } + + xfree(set->rs); + xfree(set); +} + +extern int +onig_regset_number_of_regex(OnigRegSet* set) +{ + return set->n; +} + +extern regex_t* +onig_regset_get_regex(OnigRegSet* set, int at) +{ + if (at < 0 || at >= set->n) + return (regex_t* )0; + + return set->rs[at].reg; +} + +extern OnigRegion* +onig_regset_get_region(OnigRegSet* set, int at) +{ + if (at < 0 || at >= set->n) + return (OnigRegion* )0; + + return set->rs[at].region; +} + +#endif /* USE_REGSET */ + + +#ifdef USE_DIRECT_THREADED_CODE +extern int +onig_init_for_match_at(regex_t* reg) +{ + return match_at(reg, (const UChar* )NULL, (const UChar* )NULL, + (const UChar* )NULL, (const UChar* )NULL, + (MatchArg* )NULL); +} +#endif + + +/* for callout functions */ + +#ifdef USE_CALLOUT + +extern OnigCalloutFunc +onig_get_progress_callout(void) +{ + return DefaultProgressCallout; +} + +extern int +onig_set_progress_callout(OnigCalloutFunc f) +{ + DefaultProgressCallout = f; + return ONIG_NORMAL; +} + +extern OnigCalloutFunc +onig_get_retraction_callout(void) +{ + return DefaultRetractionCallout; +} + +extern int +onig_set_retraction_callout(OnigCalloutFunc f) +{ + DefaultRetractionCallout = f; + return ONIG_NORMAL; +} + +extern int +onig_get_callout_num_by_callout_args(OnigCalloutArgs* args) +{ + return args->num; +} + +extern OnigCalloutIn +onig_get_callout_in_by_callout_args(OnigCalloutArgs* args) +{ + return args->in; +} + +extern int +onig_get_name_id_by_callout_args(OnigCalloutArgs* args) +{ + return args->name_id; +} + +extern const UChar* +onig_get_contents_by_callout_args(OnigCalloutArgs* args) +{ + int num; + CalloutListEntry* e; + + num = args->num; + e = onig_reg_callout_list_at(args->regex, num); + if (IS_NULL(e)) return 0; + if (e->of == ONIG_CALLOUT_OF_CONTENTS) { + return e->u.content.start; + } + + return 0; +} + +extern const UChar* +onig_get_contents_end_by_callout_args(OnigCalloutArgs* args) +{ + int num; + CalloutListEntry* e; + + num = args->num; + e = onig_reg_callout_list_at(args->regex, num); + if (IS_NULL(e)) return 0; + if (e->of == ONIG_CALLOUT_OF_CONTENTS) { + return e->u.content.end; + } + + return 0; +} + +extern int +onig_get_args_num_by_callout_args(OnigCalloutArgs* args) +{ + int num; + CalloutListEntry* e; + + num = args->num; + e = onig_reg_callout_list_at(args->regex, num); + if (IS_NULL(e)) return ONIGERR_INVALID_ARGUMENT; + if (e->of == ONIG_CALLOUT_OF_NAME) { + return e->u.arg.num; + } + + return ONIGERR_INVALID_ARGUMENT; +} + +extern int +onig_get_passed_args_num_by_callout_args(OnigCalloutArgs* args) +{ + int num; + CalloutListEntry* e; + + num = args->num; + e = onig_reg_callout_list_at(args->regex, num); + if (IS_NULL(e)) return ONIGERR_INVALID_ARGUMENT; + if (e->of == ONIG_CALLOUT_OF_NAME) { + return e->u.arg.passed_num; + } + + return ONIGERR_INVALID_ARGUMENT; +} + +extern int +onig_get_arg_by_callout_args(OnigCalloutArgs* args, int index, + OnigType* type, OnigValue* val) +{ + int num; + CalloutListEntry* e; + + num = args->num; + e = onig_reg_callout_list_at(args->regex, num); + if (IS_NULL(e)) return ONIGERR_INVALID_ARGUMENT; + if (e->of == ONIG_CALLOUT_OF_NAME) { + if (IS_NOT_NULL(type)) *type = e->u.arg.types[index]; + if (IS_NOT_NULL(val)) *val = e->u.arg.vals[index]; + return ONIG_NORMAL; + } + + return ONIGERR_INVALID_ARGUMENT; +} + +extern const UChar* +onig_get_string_by_callout_args(OnigCalloutArgs* args) +{ + return args->string; +} + +extern const UChar* +onig_get_string_end_by_callout_args(OnigCalloutArgs* args) +{ + return args->string_end; +} + +extern const UChar* +onig_get_start_by_callout_args(OnigCalloutArgs* args) +{ + return args->start; +} + +extern const UChar* +onig_get_right_range_by_callout_args(OnigCalloutArgs* args) +{ + return args->right_range; +} + +extern const UChar* +onig_get_current_by_callout_args(OnigCalloutArgs* args) +{ + return args->current; +} + +extern OnigRegex +onig_get_regex_by_callout_args(OnigCalloutArgs* args) +{ + return args->regex; +} + +extern unsigned long +onig_get_retry_counter_by_callout_args(OnigCalloutArgs* args) +{ + return args->retry_in_match_counter; +} + + +extern int +onig_get_capture_range_in_callout(OnigCalloutArgs* a, int mem_num, int* begin, int* end) +{ + OnigRegex reg; + const UChar* str; + StackType* stk_base; + int i; + StkPtrType* mem_start_stk; + StkPtrType* mem_end_stk; + + i = mem_num; + reg = a->regex; + str = a->string; + stk_base = a->stk_base; + mem_start_stk = a->mem_start_stk; + mem_end_stk = a->mem_end_stk; + + if (i > 0) { + if (a->mem_end_stk[i].i != INVALID_STACK_INDEX) { + *begin = (int )(STACK_MEM_START(reg, i) - str); + *end = (int )(STACK_MEM_END(reg, i) - str); + } + else { + *begin = *end = ONIG_REGION_NOTPOS; + } + } + else + return ONIGERR_INVALID_ARGUMENT; + + return ONIG_NORMAL; +} + +extern int +onig_get_used_stack_size_in_callout(OnigCalloutArgs* a, int* used_num, int* used_bytes) +{ + int n; + + n = (int )(a->stk - a->stk_base); + + if (used_num != 0) + *used_num = n; + + if (used_bytes != 0) + *used_bytes = n * sizeof(StackType); + + return ONIG_NORMAL; +} + + +/* builtin callout functions */ + +extern int +onig_builtin_fail(OnigCalloutArgs* args ARG_UNUSED, void* user_data ARG_UNUSED) +{ + return ONIG_CALLOUT_FAIL; +} + +extern int +onig_builtin_mismatch(OnigCalloutArgs* args ARG_UNUSED, void* user_data ARG_UNUSED) +{ + return ONIG_MISMATCH; +} + +extern int +onig_builtin_error(OnigCalloutArgs* args, void* user_data ARG_UNUSED) +{ + int r; + int n; + OnigValue val; + + r = onig_get_arg_by_callout_args(args, 0, 0, &val); + if (r != ONIG_NORMAL) return r; + + n = (int )val.l; + if (n >= 0) { + n = ONIGERR_INVALID_CALLOUT_BODY; + } + else if (onig_is_error_code_needs_param(n)) { + n = ONIGERR_INVALID_CALLOUT_BODY; + } + + return n; +} + +#ifdef USE_SKIP_SEARCH +extern int +onig_builtin_skip(OnigCalloutArgs* args, void* user_data ARG_UNUSED) +{ + if (args->current > args->msa->skip_search) + args->msa->skip_search = (UChar* )args->current; + + return ONIG_NORMAL; +} +#endif + +extern int +onig_builtin_count(OnigCalloutArgs* args, void* user_data) +{ + (void )onig_check_callout_data_and_clear_old_values(args); + + return onig_builtin_total_count(args, user_data); +} + +extern int +onig_builtin_total_count(OnigCalloutArgs* args, void* user_data ARG_UNUSED) +{ + int r; + int slot; + OnigType type; + OnigValue val; + OnigValue aval; + OnigCodePoint count_type; + + r = onig_get_arg_by_callout_args(args, 0, &type, &aval); + if (r != ONIG_NORMAL) return r; + + count_type = aval.c; + if (count_type != '>' && count_type != 'X' && count_type != '<') + return ONIGERR_INVALID_CALLOUT_ARG; + + r = onig_get_callout_data_by_callout_args_self_dont_clear_old(args, 0, + &type, &val); + if (r < ONIG_NORMAL) + return r; + else if (r > ONIG_NORMAL) { + /* type == void: initial state */ + val.l = 0; + } + + if (args->in == ONIG_CALLOUT_IN_RETRACTION) { + slot = 2; + if (count_type == '<') + val.l++; + else if (count_type == 'X') + val.l--; + } + else { + slot = 1; + if (count_type != '<') + val.l++; + } + + r = onig_set_callout_data_by_callout_args_self(args, 0, ONIG_TYPE_LONG, &val); + if (r != ONIG_NORMAL) return r; + + /* slot 1: in progress counter, slot 2: in retraction counter */ + r = onig_get_callout_data_by_callout_args_self_dont_clear_old(args, slot, + &type, &val); + if (r < ONIG_NORMAL) + return r; + else if (r > ONIG_NORMAL) { + val.l = 0; + } + + val.l++; + r = onig_set_callout_data_by_callout_args_self(args, slot, ONIG_TYPE_LONG, &val); + if (r != ONIG_NORMAL) return r; + + return ONIG_CALLOUT_SUCCESS; +} + +extern int +onig_builtin_max(OnigCalloutArgs* args, void* user_data ARG_UNUSED) +{ + int r; + int slot; + long max_val; + OnigCodePoint count_type; + OnigType type; + OnigValue val; + OnigValue aval; + + (void )onig_check_callout_data_and_clear_old_values(args); + + slot = 0; + r = onig_get_callout_data_by_callout_args_self(args, slot, &type, &val); + if (r < ONIG_NORMAL) + return r; + else if (r > ONIG_NORMAL) { + /* type == void: initial state */ + type = ONIG_TYPE_LONG; + val.l = 0; + } + + r = onig_get_arg_by_callout_args(args, 0, &type, &aval); + if (r != ONIG_NORMAL) return r; + if (type == ONIG_TYPE_TAG) { + r = onig_get_callout_data_by_callout_args(args, aval.tag, 0, &type, &aval); + if (r < ONIG_NORMAL) return r; + else if (r > ONIG_NORMAL) + max_val = 0L; + else + max_val = aval.l; + } + else { /* LONG */ + max_val = aval.l; + } + + r = onig_get_arg_by_callout_args(args, 1, &type, &aval); + if (r != ONIG_NORMAL) return r; + + count_type = aval.c; + if (count_type != '>' && count_type != 'X' && count_type != '<') + return ONIGERR_INVALID_CALLOUT_ARG; + + if (args->in == ONIG_CALLOUT_IN_RETRACTION) { + if (count_type == '<') { + if (val.l >= max_val) return ONIG_CALLOUT_FAIL; + val.l++; + } + else if (count_type == 'X') + val.l--; + } + else { + if (count_type != '<') { + if (val.l >= max_val) return ONIG_CALLOUT_FAIL; + val.l++; + } + } + + r = onig_set_callout_data_by_callout_args_self(args, slot, ONIG_TYPE_LONG, &val); + if (r != ONIG_NORMAL) return r; + + return ONIG_CALLOUT_SUCCESS; +} + +enum OP_CMP { + OP_EQ, + OP_NE, + OP_LT, + OP_GT, + OP_LE, + OP_GE +}; + +extern int +onig_builtin_cmp(OnigCalloutArgs* args, void* user_data ARG_UNUSED) +{ + int r; + int slot; + long lv; + long rv; + OnigType type; + OnigValue val; + regex_t* reg; + enum OP_CMP op; + + reg = args->regex; + + r = onig_get_arg_by_callout_args(args, 0, &type, &val); + if (r != ONIG_NORMAL) return r; + + if (type == ONIG_TYPE_TAG) { + r = onig_get_callout_data_by_callout_args(args, val.tag, 0, &type, &val); + if (r < ONIG_NORMAL) return r; + else if (r > ONIG_NORMAL) + lv = 0L; + else + lv = val.l; + } + else { /* ONIG_TYPE_LONG */ + lv = val.l; + } + + r = onig_get_arg_by_callout_args(args, 2, &type, &val); + if (r != ONIG_NORMAL) return r; + + if (type == ONIG_TYPE_TAG) { + r = onig_get_callout_data_by_callout_args(args, val.tag, 0, &type, &val); + if (r < ONIG_NORMAL) return r; + else if (r > ONIG_NORMAL) + rv = 0L; + else + rv = val.l; + } + else { /* ONIG_TYPE_LONG */ + rv = val.l; + } + + slot = 0; + r = onig_get_callout_data_by_callout_args_self(args, slot, &type, &val); + if (r < ONIG_NORMAL) + return r; + else if (r > ONIG_NORMAL) { + /* type == void: initial state */ + OnigCodePoint c1, c2; + UChar* p; + + r = onig_get_arg_by_callout_args(args, 1, &type, &val); + if (r != ONIG_NORMAL) return r; + + p = val.s.start; + c1 = ONIGENC_MBC_TO_CODE(reg->enc, p, val.s.end); + p += ONIGENC_MBC_ENC_LEN(reg->enc, p); + if (p < val.s.end) { + c2 = ONIGENC_MBC_TO_CODE(reg->enc, p, val.s.end); + p += ONIGENC_MBC_ENC_LEN(reg->enc, p); + if (p != val.s.end) return ONIGERR_INVALID_CALLOUT_ARG; + } + else + c2 = 0; + + switch (c1) { + case '=': + if (c2 != '=') return ONIGERR_INVALID_CALLOUT_ARG; + op = OP_EQ; + break; + case '!': + if (c2 != '=') return ONIGERR_INVALID_CALLOUT_ARG; + op = OP_NE; + break; + case '<': + if (c2 == '=') op = OP_LE; + else if (c2 == 0) op = OP_LT; + else return ONIGERR_INVALID_CALLOUT_ARG; + break; + case '>': + if (c2 == '=') op = OP_GE; + else if (c2 == 0) op = OP_GT; + else return ONIGERR_INVALID_CALLOUT_ARG; + break; + default: + return ONIGERR_INVALID_CALLOUT_ARG; + break; + } + val.l = (long )op; + r = onig_set_callout_data_by_callout_args_self(args, slot, ONIG_TYPE_LONG, &val); + if (r != ONIG_NORMAL) return r; + } + else { + op = (enum OP_CMP )val.l; + } + + switch (op) { + case OP_EQ: r = (lv == rv); break; + case OP_NE: r = (lv != rv); break; + case OP_LT: r = (lv < rv); break; + case OP_GT: r = (lv > rv); break; + case OP_LE: r = (lv <= rv); break; + case OP_GE: r = (lv >= rv); break; + } + + return r == 0 ? ONIG_CALLOUT_FAIL : ONIG_CALLOUT_SUCCESS; +} + + +#ifndef ONIG_NO_PRINT + +static FILE* OutFp; + +/* name start with "onig_" for macros. */ +static int +onig_builtin_monitor(OnigCalloutArgs* args, void* user_data) +{ + int r; + int num; + size_t tag_len; + const UChar* start; + const UChar* right; + const UChar* current; + const UChar* string; + const UChar* strend; + const UChar* tag_start; + const UChar* tag_end; + regex_t* reg; + OnigCalloutIn in; + OnigType type; + OnigValue val; + char buf[20]; + FILE* fp; + + fp = OutFp; + + r = onig_get_arg_by_callout_args(args, 0, &type, &val); + if (r != ONIG_NORMAL) return r; + + in = onig_get_callout_in_by_callout_args(args); + if (in == ONIG_CALLOUT_IN_PROGRESS) { + if (val.c == '<') + return ONIG_CALLOUT_SUCCESS; + } + else { + if (val.c != 'X' && val.c != '<') + return ONIG_CALLOUT_SUCCESS; + } + + num = onig_get_callout_num_by_callout_args(args); + start = onig_get_start_by_callout_args(args); + right = onig_get_right_range_by_callout_args(args); + current = onig_get_current_by_callout_args(args); + string = onig_get_string_by_callout_args(args); + strend = onig_get_string_end_by_callout_args(args); + reg = onig_get_regex_by_callout_args(args); + tag_start = onig_get_callout_tag_start(reg, num); + tag_end = onig_get_callout_tag_end(reg, num); + + if (tag_start == 0) + xsnprintf(buf, sizeof(buf), "#%d", num); + else { + /* CAUTION: tag string is not terminated with NULL. */ + int i; + + tag_len = tag_end - tag_start; + if (tag_len >= sizeof(buf)) tag_len = sizeof(buf) - 1; + for (i = 0; i < (int )tag_len; i++) buf[i] = tag_start[i]; + buf[tag_len] = '\0'; + } + + fprintf(fp, "ONIG-MONITOR: %-4s %s at: %d [%d - %d] len: %d\n", + buf, + in == ONIG_CALLOUT_IN_PROGRESS ? "=>" : "<=", + (int )(current - string), + (int )(start - string), + (int )(right - string), + (int )(strend - string)); + fflush(fp); + + return ONIG_CALLOUT_SUCCESS; +} + +extern int +onig_setup_builtin_monitors_by_ascii_encoded_name(void* fp /* FILE* */) +{ + int id; + char* name; + OnigEncoding enc; + unsigned int ts[4]; + OnigValue opts[4]; + + if (IS_NOT_NULL(fp)) + OutFp = (FILE* )fp; + else + OutFp = stdout; + + enc = ONIG_ENCODING_ASCII; + + name = "MON"; + ts[0] = ONIG_TYPE_CHAR; + opts[0].c = '>'; + BC_B_O(name, monitor, 1, ts, 1, opts); + + return ONIG_NORMAL; +} + +#endif /* ONIG_NO_PRINT */ + +#endif /* USE_CALLOUT */ diff --git a/vendor/onig/regext.c b/vendor/oniguruma/oniguruma/src/regext.c similarity index 92% rename from vendor/onig/regext.c rename to vendor/oniguruma/oniguruma/src/regext.c index 4a8d8ed..c46f630 100644 --- a/vendor/onig/regext.c +++ b/vendor/oniguruma/oniguruma/src/regext.c @@ -1,9 +1,8 @@ /********************************************************************** - regext.c - Onigmo (Oniguruma-mod) (regular expression library) + regext.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2008 K.Kosako - * Copyright (c) 2011-2016 K.Takata + * Copyright (c) 2002-2019 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -30,6 +29,7 @@ #include "regint.h" +#if 0 static void conv_ext0be32(const UChar* s, const UChar* end, UChar* conv) { @@ -96,7 +96,7 @@ static int conv_encoding(OnigEncoding from, OnigEncoding to, const UChar* s, const UChar* end, UChar** conv, UChar** conv_end) { - ptrdiff_t 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) { @@ -159,6 +159,7 @@ conv_encoding(OnigEncoding from, OnigEncoding to, const UChar* s, const UChar* e return ONIGERR_NOT_SUPPORTED_ENCODING_COMBINATION; } +#endif extern int onig_new_deluxe(regex_t** reg, const UChar* pattern, const UChar* pattern_end, @@ -170,9 +171,7 @@ onig_new_deluxe(regex_t** reg, const UChar* pattern, const UChar* pattern_end, if (IS_NOT_NULL(einfo)) einfo->par = (UChar* )NULL; if (ci->pattern_enc != ci->target_enc) { - r = conv_encoding(ci->pattern_enc, ci->target_enc, pattern, pattern_end, - &cpat, &cpat_end); - if (r) return r; + return ONIGERR_NOT_SUPPORTED_ENCODING_COMBINATION; } else { cpat = (UChar* )pattern; @@ -186,11 +185,11 @@ onig_new_deluxe(regex_t** reg, const UChar* pattern, const UChar* pattern_end, } r = onig_reg_init(*reg, ci->option, ci->case_fold_flag, ci->target_enc, - ci->syntax); - if (r) goto err; + ci->syntax); + if (r != 0) goto err; r = onig_compile(*reg, cpat, cpat_end, einfo); - if (r) { + if (r != 0) { err: onig_free(*reg); *reg = NULL; diff --git a/vendor/onig/reggnu.c b/vendor/oniguruma/oniguruma/src/reggnu.c similarity index 78% rename from vendor/onig/reggnu.c rename to vendor/oniguruma/oniguruma/src/reggnu.c index 451c00b..8a45078 100644 --- a/vendor/onig/reggnu.c +++ b/vendor/oniguruma/oniguruma/src/reggnu.c @@ -1,9 +1,8 @@ /********************************************************************** - reggnu.c - Onigmo (Oniguruma-mod) (regular expression library) + reggnu.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2008 K.Kosako - * Copyright (c) 2011-2016 K.Takata + * Copyright (c) 2002-2019 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -29,10 +28,7 @@ */ #include "regint.h" - -#ifndef ONIGMOGNU_H -# include "onigmognu.h" -#endif +#include "oniggnu.h" extern void re_free_registers(OnigRegion* r) @@ -43,18 +39,17 @@ re_free_registers(OnigRegion* r) extern int re_adjust_startpos(regex_t* reg, const char* string, int size, - int startpos, int range) + int startpos, int range) { if (startpos > 0 && ONIGENC_MBC_MAXLEN(reg->enc) != 1 && startpos < size) { UChar *p; UChar *s = (UChar* )string + startpos; - UChar *e = (UChar* )string + size; if (range > 0) { - p = onigenc_get_right_adjust_char_head(reg->enc, (UChar* )string, s, e); + p = onigenc_get_right_adjust_char_head(reg->enc, (UChar* )string, s); } else { - p = ONIGENC_LEFT_ADJUST_CHAR_HEAD(reg->enc, (UChar* )string, s, e); + p = ONIGENC_LEFT_ADJUST_CHAR_HEAD(reg->enc, (UChar* )string, s); } return (int )(p - (UChar* )string); } @@ -64,20 +59,20 @@ re_adjust_startpos(regex_t* reg, const char* string, int size, extern int re_match(regex_t* reg, const char* str, int size, int pos, - struct re_registers* regs) + struct re_registers* regs) { - return (int )onig_match(reg, (UChar* )str, (UChar* )(str + size), - (UChar* )(str + pos), regs, ONIG_OPTION_NONE); + return onig_match(reg, (UChar* )str, (UChar* )(str + size), + (UChar* )(str + pos), regs, ONIG_OPTION_NONE); } extern int re_search(regex_t* bufp, const char* string, int size, int startpos, int range, - struct re_registers* regs) + struct re_registers* regs) { - return (int )onig_search(bufp, (UChar* )string, (UChar* )(string + size), - (UChar* )(string + startpos), - (UChar* )(string + startpos + range), - regs, ONIG_OPTION_NONE); + return onig_search(bufp, (UChar* )string, (UChar* )(string + size), + (UChar* )(string + startpos), + (UChar* )(string + startpos + range), + regs, ONIG_OPTION_NONE); } extern int @@ -108,15 +103,15 @@ re_alloc_pattern(regex_t** reg) if (IS_NULL(*reg)) return ONIGERR_MEMORY; return onig_reg_init(*reg, ONIG_OPTION_DEFAULT, - ONIGENC_CASE_FOLD_DEFAULT, - OnigEncDefaultCharEncoding, - OnigDefaultSyntax); + ONIGENC_CASE_FOLD_DEFAULT, + OnigEncDefaultCharEncoding, + OnigDefaultSyntax); } extern void re_set_casetable(const char* table) { - /* onigenc_set_default_caseconv_table((UChar* )table); */ + onigenc_set_default_caseconv_table((UChar* )table); } extern void @@ -142,5 +137,7 @@ re_mbcinit(int mb_code) break; } + onig_initialize(&enc, 1); + onigenc_set_default_encoding(enc); } diff --git a/vendor/oniguruma/oniguruma/src/regint.h b/vendor/oniguruma/oniguruma/src/regint.h new file mode 100644 index 0000000..fe872b9 --- /dev/null +++ b/vendor/oniguruma/oniguruma/src/regint.h @@ -0,0 +1,1058 @@ +#ifndef REGINT_H +#define REGINT_H +/********************************************************************** + regint.h - Oniguruma (regular expression library) +**********************************************************************/ +/*- + * Copyright (c) 2002-2024 K.Kosako + * 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. + */ + +/* for debug */ +/* #define ONIG_DEBUG_PARSE */ +/* #define ONIG_DEBUG_COMPILE */ +/* #define ONIG_DEBUG_SEARCH */ +/* #define ONIG_DEBUG_MATCH */ +/* #define ONIG_DEBUG_MATCH_COUNTER */ +/* #define ONIG_DEBUG_CALL */ +/* #define ONIG_DONT_OPTIMIZE */ +/* #define ONIG_DEBUG */ + +/* for byte-code statistical data. */ +/* #define ONIG_DEBUG_STATISTICS */ + +#if defined(ONIG_DEBUG_PARSE) || defined(ONIG_DEBUG_MATCH) || \ + defined(ONIG_DEBUG_SEARCH) || defined(ONIG_DEBUG_COMPILE) || \ + defined(ONIG_DEBUG_MATCH_COUNTER) || defined(ONIG_DEBUG_CALL) || \ + defined(ONIG_DEBUG_STATISTICS) +#ifndef ONIG_DEBUG +#define ONIG_DEBUG +#endif +#endif + +#ifdef ONIG_DEBUG +#define DBGFP stderr +#endif + +#ifndef ONIG_DISABLE_DIRECT_THREADING +#ifdef __GNUC__ +#define USE_GOTO_LABELS_AS_VALUES +#endif +#endif + +#ifndef ONIG_PRINTFLIKE +#if defined(__clang__) || defined(__GNUC__) +#define ONIG_PRINTFLIKE(x, y) __attribute__((format(printf, x, y))) +#else +#define ONIG_PRINTFLIKE(x, y) +#endif +#endif + +/* config */ +/* spec. config */ +#define USE_REGSET +#define USE_CALL +#define USE_CALLOUT +#define USE_SKIP_SEARCH +#define USE_BACKREF_WITH_LEVEL /* \k, \k */ +#define USE_WHOLE_OPTIONS +#define USE_RIGID_CHECK_CAPTURES_IN_EMPTY_REPEAT /* /(?:()|())*\2/ */ +#define USE_NEWLINE_AT_END_OF_STRING_HAS_EMPTY_LINE /* /\n$/ =~ "\n" */ +#define USE_WARNING_REDUNDANT_NESTED_REPEAT_OPERATOR +#define USE_RETRY_LIMIT +#ifdef USE_GOTO_LABELS_AS_VALUES +#define USE_THREADED_CODE +#define USE_DIRECT_THREADED_CODE +#endif + +/* internal config */ +#define USE_CHECK_VALIDITY_OF_STRING_IN_TREE +#define USE_OP_PUSH_OR_JUMP_EXACT +#define USE_QUANT_PEEK_NEXT +#define USE_ST_LIBRARY +#define USE_TIMEOFDAY +#define USE_STRICT_POINTER_ADDRESS +#define USE_STRICT_POINTER_COMPARISON + +#define USE_WORD_BEGIN_END /* "\<", "\>" */ +#define USE_CAPTURE_HISTORY +#define USE_VARIABLE_META_CHARS +#define USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE +/* #define USE_REPEAT_AND_EMPTY_CHECK_LOCAL_VAR */ + +/* enabled by configure --enable-posix-api=yes */ +/* #define USE_POSIX_API */ + +#define DEFAULT_PARSE_DEPTH_LIMIT 4096 +#define INIT_MATCH_STACK_SIZE 160 +#define DEFAULT_MATCH_STACK_LIMIT_SIZE 0 /* unlimited */ +#define DEFAULT_RETRY_LIMIT_IN_MATCH 10000000 +#define DEFAULT_RETRY_LIMIT_IN_SEARCH 0 /* unlimited */ +#define DEFAULT_SUBEXP_CALL_LIMIT_IN_SEARCH 0 /* unlimited */ +#define DEFAULT_SUBEXP_CALL_MAX_NEST_LEVEL 20 + + +#include "regenc.h" + +#ifndef ONIG_NO_STANDARD_C_HEADERS + +#include +#include +#include +#include +#include +#include + +#ifdef HAVE_STDINT_H +#include +#endif + +#if defined(HAVE_ALLOCA_H) +#include +#endif + +#ifdef HAVE_SYS_TYPES_H +#ifndef __BORLANDC__ +#include +#endif +#endif + +#ifdef HAVE_INTTYPES_H +#include +#endif + +#if defined(_WIN32) || defined(__BORLANDC__) +#include +#endif + +#if defined(ONIG_DEBUG) || defined(NEED_TO_INCLUDE_STDIO) +# include +#endif + +#ifdef ONIG_DEBUG_STATISTICS +#ifdef USE_TIMEOFDAY + +#ifdef HAVE_SYS_TIME_H +#include +#endif +#ifdef HAVE_UNISTD_H +#include +#endif + +#else /* USE_TIMEOFDAY */ + +#ifdef HAVE_SYS_TIMES_H +#include +#endif + +#endif /* USE_TIMEOFDAY */ +#endif /* ONIG_DEBUG_STATISTICS */ + +/* I don't think these x....'s need to be included in + ONIG_NO_STANDARD_C_HEADERS, but they are required by Issue #170 + and do so since there is no problem. + */ +#ifndef xmemset +#define xmemset memset +#endif + +#ifndef xmemcpy +#define xmemcpy memcpy +#endif + +#ifndef xmemmove +#define xmemmove memmove +#endif + +#endif /* ONIG_NO_STANDARD_C_HEADERS */ + + +#ifdef MIN +#undef MIN +#endif +#ifdef MAX +#undef MAX +#endif + +#define MIN(a,b) (((a)>(b))?(b):(a)) +#define MAX(a,b) (((a)<(b))?(b):(a)) + +#define IS_NULL(p) (((void*)(p)) == (void*)0) +#define IS_NOT_NULL(p) (((void*)(p)) != (void*)0) +#define CHECK_NULL_RETURN(p) if (IS_NULL(p)) return NULL +#define CHECK_NULL_RETURN_MEMERR(p) if (IS_NULL(p)) return ONIGERR_MEMORY +#define NULL_UCHARP ((UChar* )0) + +#ifdef USE_STRICT_POINTER_COMPARISON +#define PTR_GE(p,q) ((p) != NULL && (p) >= (q)) +#else +#define PTR_GE(p,q) (p) >= (q) +#endif + +#ifndef ONIG_INT_MAX +#define ONIG_INT_MAX INT_MAX +#endif + +#define CHAR_MAP_SIZE 256 +#define INFINITE_LEN ONIG_INFINITE_DISTANCE +#define STEP_BACK_MAX_CHAR_LEN 65535 /* INT_MAX is too big */ +#define LOOK_BEHIND_MAX_CHAR_LEN STEP_BACK_MAX_CHAR_LEN + +/* escape other system UChar definition */ +#ifdef ONIG_ESCAPE_UCHAR_COLLISION +#undef ONIG_ESCAPE_UCHAR_COLLISION +#endif + +#define xmalloc malloc +#define xrealloc realloc +#define xcalloc calloc +#define xfree free + +#define st_init_table onig_st_init_table +#define st_init_table_with_size onig_st_init_table_with_size +#define st_init_numtable onig_st_init_numtable +#define st_init_numtable_with_size onig_st_init_numtable_with_size +#define st_init_strtable onig_st_init_strtable +#define st_init_strtable_with_size onig_st_init_strtable_with_size +#define st_delete onig_st_delete +#define st_delete_safe onig_st_delete_safe +#define st_insert onig_st_insert +#define st_lookup onig_st_lookup +#define st_foreach onig_st_foreach +#define st_add_direct onig_st_add_direct +#define st_free_table onig_st_free_table +#define st_cleanup_safe onig_st_cleanup_safe +#define st_copy onig_st_copy +#define st_nothing_key_clone onig_st_nothing_key_clone +#define st_nothing_key_free onig_st_nothing_key_free +/* */ +#define onig_st_is_member st_is_member + + +#if defined(_WIN32) && !defined(__GNUC__) + +#ifndef xalloca +#define xalloca _alloca +#endif +#ifndef xvsnprintf +#define xvsnprintf(buf,size,fmt,args) _vsnprintf_s(buf,size,_TRUNCATE,fmt,args) +#endif +#ifndef xsnprintf +#define xsnprintf sprintf_s +#endif +#ifndef xstrcat +#define xstrcat(dest,src,size) strcat_s(dest,size,src) +#endif + +#else + +#ifndef xalloca +#define xalloca alloca +#endif +#ifndef xvsnprintf +#define xvsnprintf vsnprintf +#endif +#ifndef xsnprintf +#define xsnprintf snprintf +#endif +#ifndef xstrcat +#define xstrcat(dest,src,size) strcat(dest,src) +#endif + +#endif /* defined(_WIN32) && !defined(__GNUC__) */ + + +#ifdef _WIN32 +#ifdef _MSC_VER + +#if _MSC_VER < 1300 +typedef int intptr_t; +typedef unsigned int uintptr_t; +#endif + +#if _MSC_VER < 1600 +typedef __int32 int32_t; +typedef unsigned __int32 uint32_t; +typedef __int64 int64_t; +typedef unsigned __int64 uint64_t; +#endif + +#endif +#endif /* _WIN32 */ + +#if SIZEOF_VOIDP == SIZEOF_LONG +typedef unsigned long hash_data_type; +#elif SIZEOF_VOIDP == SIZEOF_LONG_LONG +typedef unsigned long long hash_data_type; +#endif + +/* strend hash */ +typedef void* hash_table_type; + + +#ifdef USE_CALLOUT + +typedef struct { + int flag; + OnigCalloutOf of; + int in; + int name_id; + const UChar* tag_start; + const UChar* tag_end; + OnigCalloutType type; + OnigCalloutFunc start_func; + OnigCalloutFunc end_func; + union { + struct { + const UChar* start; + const UChar* end; + } content; + struct { + int num; + int passed_num; + OnigType types[ONIG_CALLOUT_MAX_ARGS_NUM]; + OnigValue vals[ONIG_CALLOUT_MAX_ARGS_NUM]; + } arg; + } u; +} CalloutListEntry; + +#endif + +/* stack pop level */ +enum StackPopLevel { + STACK_POP_LEVEL_FREE = 0, + STACK_POP_LEVEL_MEM_START = 1, + STACK_POP_LEVEL_ALL = 2 +}; + +/* optimize flags */ +enum OptimizeType { + OPTIMIZE_NONE = 0, + OPTIMIZE_STR, /* Slow Search */ + OPTIMIZE_STR_FAST, /* Sunday quick search / BMH */ + OPTIMIZE_STR_FAST_STEP_FORWARD, /* Sunday quick search / BMH */ + OPTIMIZE_MAP /* char map */ +}; + +/* bit status */ +typedef unsigned int MemStatusType; + +#define MEM_STATUS_BITS_NUM (sizeof(MemStatusType) * 8) +#define MEM_STATUS_CLEAR(stats) (stats) = 0 +#define MEM_STATUS_ON_ALL(stats) (stats) = ~((MemStatusType )0) +#define MEM_STATUS_AT(stats,n) \ + ((n) < (int )MEM_STATUS_BITS_NUM ? ((stats) & ((MemStatusType )1 << n)) : ((stats) & 1)) +#define MEM_STATUS_AT0(stats,n) \ + ((n) > 0 && (n) < (int )MEM_STATUS_BITS_NUM ? ((stats) & ((MemStatusType )1 << n)) : ((stats) & 1)) + +#define MEM_STATUS_IS_ALL_ON(stats) (((stats) & 1) != 0) + +#define MEM_STATUS_ON(stats,n) do {\ + if ((n) < (int )MEM_STATUS_BITS_NUM) {\ + if ((n) != 0)\ + (stats) |= ((MemStatusType )1 << (n));\ + }\ + else\ + (stats) |= 1;\ +} while (0) + +#define MEM_STATUS_ON_SIMPLE(stats,n) do {\ + if ((n) < (int )MEM_STATUS_BITS_NUM)\ + (stats) |= ((MemStatusType )1 << (n));\ +} while (0) + +#define MEM_STATUS_LIMIT_AT(stats,n) \ + ((n) < (int )MEM_STATUS_BITS_NUM ? ((stats) & ((MemStatusType )1 << n)) : 0) +#define MEM_STATUS_LIMIT_ON(stats,n) do {\ + if ((n) < (int )MEM_STATUS_BITS_NUM && (n) != 0) {\ + (stats) |= ((MemStatusType )1 << (n));\ + }\ +} while (0) + + +#define IS_CODE_WORD_ASCII(enc,code) \ + (ONIGENC_IS_CODE_ASCII(code) && ONIGENC_IS_CODE_WORD(enc,code)) +#define IS_CODE_DIGIT_ASCII(enc, code) \ + (ONIGENC_IS_CODE_ASCII(code) && ONIGENC_IS_CODE_DIGIT(enc,code)) +#define IS_CODE_XDIGIT_ASCII(enc, code) \ + (ONIGENC_IS_CODE_ASCII(code) && ONIGENC_IS_CODE_XDIGIT(enc,code)) + +#define DIGITVAL(code) ((code) - '0') +#define ODIGITVAL(code) DIGITVAL(code) +#define XDIGITVAL(enc,code) \ + (IS_CODE_DIGIT_ASCII(enc,code) ? DIGITVAL(code) \ + : (ONIGENC_IS_CODE_UPPER(enc,code) ? (code) - 'A' + 10 : (code) - 'a' + 10)) + +#define OPTON_CALLBACK_EACH_MATCH(option) \ + ((option) & ONIG_OPTION_CALLBACK_EACH_MATCH) +#define OPTON_FIND_LONGEST(option) ((option) & ONIG_OPTION_FIND_LONGEST) +#define OPTON_FIND_NOT_EMPTY(option) ((option) & ONIG_OPTION_FIND_NOT_EMPTY) +#define OPTON_NEGATE_SINGLELINE(option) ((option) & \ + ONIG_OPTION_NEGATE_SINGLELINE) +#define OPTON_DONT_CAPTURE_GROUP(option) ((option) & \ + ONIG_OPTION_DONT_CAPTURE_GROUP) +#define OPTON_CAPTURE_GROUP(option) ((option) & ONIG_OPTION_CAPTURE_GROUP) +#define OPTON_NOTBOL(option) ((option) & ONIG_OPTION_NOTBOL) +#define OPTON_NOTEOL(option) ((option) & ONIG_OPTION_NOTEOL) +#define OPTON_POSIX_REGION(option) ((option) & ONIG_OPTION_POSIX_REGION) +#define OPTON_CHECK_VALIDITY_OF_STRING(option) ((option) & \ + ONIG_OPTION_CHECK_VALIDITY_OF_STRING) +#define OPTON_NOT_BEGIN_STRING(option) ((option) & ONIG_OPTION_NOT_BEGIN_STRING) +#define OPTON_NOT_END_STRING(option) ((option) & ONIG_OPTION_NOT_END_STRING) +#define OPTON_NOT_BEGIN_POSITION(option) ((option) & ONIG_OPTION_NOT_BEGIN_POSITION) +#define OPTON_MATCH_WHOLE_STRING(option) ((option) & ONIG_OPTION_MATCH_WHOLE_STRING) + + +#define INFINITE_REPEAT -1 +#define IS_INFINITE_REPEAT(n) ((n) == INFINITE_REPEAT) + +/* bitset */ +#define BITS_PER_BYTE 8 +#define SINGLE_BYTE_SIZE (1 << BITS_PER_BYTE) +#define BITS_IN_ROOM 32 /* 4 * BITS_PER_BYTE */ +#define BITSET_REAL_SIZE (SINGLE_BYTE_SIZE / BITS_IN_ROOM) + +typedef uint32_t Bits; +typedef Bits BitSet[BITSET_REAL_SIZE]; +typedef Bits* BitSetRef; + +#define SIZE_BITSET sizeof(BitSet) + +#define BITSET_CLEAR(bs) do {\ + int i;\ + for (i = 0; i < (int )BITSET_REAL_SIZE; i++) { (bs)[i] = 0; } \ +} while (0) + +#define BS_ROOM(bs,pos) (bs)[(unsigned int )(pos) >> 5] +#define BS_BIT(pos) (1u << ((unsigned int )(pos) & 0x1f)) + +#define BITSET_AT(bs, pos) (BS_ROOM(bs,pos) & BS_BIT(pos)) +#define BITSET_SET_BIT(bs, pos) BS_ROOM(bs,pos) |= BS_BIT(pos) +#define BITSET_CLEAR_BIT(bs, pos) BS_ROOM(bs,pos) &= ~(BS_BIT(pos)) +#define BITSET_INVERT_BIT(bs, pos) BS_ROOM(bs,pos) ^= BS_BIT(pos) + +/* has body */ +#define ANCR_PREC_READ (1<<0) +#define ANCR_PREC_READ_NOT (1<<1) +#define ANCR_LOOK_BEHIND (1<<2) +#define ANCR_LOOK_BEHIND_NOT (1<<3) +/* no body */ +#define ANCR_BEGIN_BUF (1<<4) +#define ANCR_BEGIN_LINE (1<<5) +#define ANCR_BEGIN_POSITION (1<<6) +#define ANCR_END_BUF (1<<7) +#define ANCR_SEMI_END_BUF (1<<8) +#define ANCR_END_LINE (1<<9) +#define ANCR_WORD_BOUNDARY (1<<10) +#define ANCR_NO_WORD_BOUNDARY (1<<11) +#define ANCR_WORD_BEGIN (1<<12) +#define ANCR_WORD_END (1<<13) +#define ANCR_ANYCHAR_INF (1<<14) +#define ANCR_ANYCHAR_INF_ML (1<<15) +#define ANCR_TEXT_SEGMENT_BOUNDARY (1<<16) +#define ANCR_NO_TEXT_SEGMENT_BOUNDARY (1<<17) + + +#define ANCHOR_HAS_BODY(a) ((a)->type < ANCR_BEGIN_BUF) + +#define IS_WORD_ANCHOR_TYPE(type) \ + ((type) == ANCR_WORD_BOUNDARY || (type) == ANCR_NO_WORD_BOUNDARY || \ + (type) == ANCR_WORD_BEGIN || (type) == ANCR_WORD_END) + +/* operation code */ +enum OpCode { + OP_FINISH = 0, /* matching process terminator (no more alternative) */ + OP_END, /* pattern code terminator (success end) */ + OP_STR_1, /* single byte, N = 1 */ + OP_STR_2, /* single byte, N = 2 */ + OP_STR_3, /* single byte, N = 3 */ + OP_STR_4, /* single byte, N = 4 */ + OP_STR_5, /* single byte, N = 5 */ + OP_STR_N, /* single byte */ + OP_STR_MB2N1, /* mb-length = 2 N = 1 */ + OP_STR_MB2N2, /* mb-length = 2 N = 2 */ + OP_STR_MB2N3, /* mb-length = 2 N = 3 */ + OP_STR_MB2N, /* mb-length = 2 */ + OP_STR_MB3N, /* mb-length = 3 */ + OP_STR_MBN, /* other length */ + OP_CCLASS, + OP_CCLASS_MB, + OP_CCLASS_MIX, + OP_CCLASS_NOT, + OP_CCLASS_MB_NOT, + OP_CCLASS_MIX_NOT, + OP_ANYCHAR, /* "." */ + OP_ANYCHAR_ML, /* "." multi-line */ + OP_ANYCHAR_STAR, /* ".*" */ + OP_ANYCHAR_ML_STAR, /* ".*" multi-line */ + OP_ANYCHAR_STAR_PEEK_NEXT, + OP_ANYCHAR_ML_STAR_PEEK_NEXT, + OP_WORD, + OP_WORD_ASCII, + OP_NO_WORD, + OP_NO_WORD_ASCII, + OP_WORD_BOUNDARY, + OP_NO_WORD_BOUNDARY, + OP_WORD_BEGIN, + OP_WORD_END, + OP_TEXT_SEGMENT_BOUNDARY, + OP_BEGIN_BUF, + OP_END_BUF, + OP_BEGIN_LINE, + OP_END_LINE, + OP_SEMI_END_BUF, + OP_CHECK_POSITION, + OP_BACKREF1, + OP_BACKREF2, + OP_BACKREF_N, + OP_BACKREF_N_IC, + OP_BACKREF_MULTI, + OP_BACKREF_MULTI_IC, +#ifdef USE_BACKREF_WITH_LEVEL + OP_BACKREF_WITH_LEVEL, /* \k, \k */ + OP_BACKREF_WITH_LEVEL_IC, /* \k, \k */ +#endif + OP_BACKREF_CHECK, /* (?(n)), (?('name')) */ +#ifdef USE_BACKREF_WITH_LEVEL + OP_BACKREF_CHECK_WITH_LEVEL, /* (?(n-level)), (?('name-level')) */ +#endif + OP_MEM_START, + OP_MEM_START_PUSH, /* push back-tracker to stack */ + OP_MEM_END_PUSH, /* push back-tracker to stack */ +#ifdef USE_CALL + OP_MEM_END_PUSH_REC, /* push back-tracker to stack */ +#endif + OP_MEM_END, +#ifdef USE_CALL + OP_MEM_END_REC, /* push marker to stack */ +#endif + OP_FAIL, /* pop stack and move */ + OP_JUMP, + OP_PUSH, + OP_PUSH_SUPER, + OP_POP, + OP_POP_TO_MARK, +#ifdef USE_OP_PUSH_OR_JUMP_EXACT + OP_PUSH_OR_JUMP_EXACT1, /* if match exact then push, else jump. */ +#endif + OP_PUSH_IF_PEEK_NEXT, /* if match exact then push, else none. */ + OP_REPEAT, /* {n,m} */ + OP_REPEAT_NG, /* {n,m}? (non greedy) */ + OP_REPEAT_INC, + OP_REPEAT_INC_NG, /* non greedy */ + OP_EMPTY_CHECK_START, /* null loop checker start */ + OP_EMPTY_CHECK_END, /* null loop checker end */ + OP_EMPTY_CHECK_END_MEMST, /* null loop checker end (with capture status) */ +#ifdef USE_CALL + OP_EMPTY_CHECK_END_MEMST_PUSH, /* with capture status and push check-end */ +#endif + OP_MOVE, + OP_STEP_BACK_START, + OP_STEP_BACK_NEXT, + OP_CUT_TO_MARK, + OP_MARK, + OP_SAVE_VAL, + OP_UPDATE_VAR, +#ifdef USE_CALL + OP_CALL, /* \g */ + OP_RETURN, +#endif +#ifdef USE_CALLOUT + OP_CALLOUT_CONTENTS, /* (?{...}) (?{{...}}) */ + OP_CALLOUT_NAME, /* (*name) (*name[tag](args...)) */ +#endif +}; + +enum SaveType { + SAVE_KEEP = 0, /* SAVE S */ + SAVE_S = 1, + SAVE_RIGHT_RANGE = 2, +}; + +enum UpdateVarType { + UPDATE_VAR_KEEP_FROM_STACK_LAST = 0, + UPDATE_VAR_S_FROM_STACK = 1, + UPDATE_VAR_RIGHT_RANGE_FROM_STACK = 2, + UPDATE_VAR_RIGHT_RANGE_FROM_S_STACK = 3, + UPDATE_VAR_RIGHT_RANGE_TO_S = 4, + UPDATE_VAR_RIGHT_RANGE_INIT = 5, +}; + +enum CheckPositionType { + CHECK_POSITION_SEARCH_START = 0, + CHECK_POSITION_CURRENT_RIGHT_RANGE = 1, +}; + +enum TextSegmentBoundaryType { + EXTENDED_GRAPHEME_CLUSTER_BOUNDARY = 0, + WORD_BOUNDARY = 1, +}; + +typedef int RelAddrType; +typedef int AbsAddrType; +typedef int LengthType; +typedef int RelPositionType; +typedef int RepeatNumType; +typedef int MemNumType; +typedef void* PointerType; +typedef int SaveType; +typedef int UpdateVarType; +typedef int ModeType; + +#define SIZE_OPCODE 1 +#define SIZE_RELADDR sizeof(RelAddrType) +#define SIZE_ABSADDR sizeof(AbsAddrType) +#define SIZE_LENGTH sizeof(LengthType) +#define SIZE_MEMNUM sizeof(MemNumType) +#define SIZE_REPEATNUM sizeof(RepeatNumType) +#define SIZE_OPTION sizeof(OnigOptionType) +#define SIZE_CODE_POINT sizeof(OnigCodePoint) +#define SIZE_POINTER sizeof(PointerType) +#define SIZE_SAVE_TYPE sizeof(SaveType) +#define SIZE_UPDATE_VAR_TYPE sizeof(UpdateVarType) +#define SIZE_MODE sizeof(ModeType) + +/* code point's address must be aligned address. */ +#define GET_CODE_POINT(code,p) code = *((OnigCodePoint* )(p)) + + +/* op-code + arg size */ + +/* for relative address increment to go next op. */ +#define SIZE_INC 1 + +#define OPSIZE_ANYCHAR_STAR 1 +#define OPSIZE_ANYCHAR_STAR_PEEK_NEXT 1 +#define OPSIZE_JUMP 1 +#define OPSIZE_PUSH 1 +#define OPSIZE_PUSH_SUPER 1 +#define OPSIZE_POP 1 +#define OPSIZE_POP_TO_MARK 1 +#ifdef USE_OP_PUSH_OR_JUMP_EXACT +#define OPSIZE_PUSH_OR_JUMP_EXACT1 1 +#endif +#define OPSIZE_PUSH_IF_PEEK_NEXT 1 +#define OPSIZE_REPEAT 1 +#define OPSIZE_REPEAT_INC 1 +#define OPSIZE_REPEAT_INC_NG 1 +#define OPSIZE_WORD_BOUNDARY 1 +#define OPSIZE_BACKREF 1 +#define OPSIZE_FAIL 1 +#define OPSIZE_MEM_START 1 +#define OPSIZE_MEM_START_PUSH 1 +#define OPSIZE_MEM_END_PUSH 1 +#define OPSIZE_MEM_END_PUSH_REC 1 +#define OPSIZE_MEM_END 1 +#define OPSIZE_MEM_END_REC 1 +#define OPSIZE_EMPTY_CHECK_START 1 +#define OPSIZE_EMPTY_CHECK_END 1 +#define OPSIZE_CHECK_POSITION 1 +#define OPSIZE_CALL 1 +#define OPSIZE_RETURN 1 +#define OPSIZE_MOVE 1 +#define OPSIZE_STEP_BACK_START 1 +#define OPSIZE_STEP_BACK_NEXT 1 +#define OPSIZE_CUT_TO_MARK 1 +#define OPSIZE_MARK 1 +#define OPSIZE_SAVE_VAL 1 +#define OPSIZE_UPDATE_VAR 1 + +#ifdef USE_CALLOUT +#define OPSIZE_CALLOUT_CONTENTS 1 +#define OPSIZE_CALLOUT_NAME 1 +#endif + + +#define MC_ESC(syn) (syn)->meta_char_table.esc +#define MC_ANYCHAR(syn) (syn)->meta_char_table.anychar +#define MC_ANYTIME(syn) (syn)->meta_char_table.anytime +#define MC_ZERO_OR_ONE_TIME(syn) (syn)->meta_char_table.zero_or_one_time +#define MC_ONE_OR_MORE_TIME(syn) (syn)->meta_char_table.one_or_more_time +#define MC_ANYCHAR_ANYTIME(syn) (syn)->meta_char_table.anychar_anytime + +#define IS_MC_ESC_CODE(code, syn) \ + ((code) == MC_ESC(syn) && \ + !IS_SYNTAX_OP2((syn), ONIG_SYN_OP2_INEFFECTIVE_ESCAPE)) + + +#define SYN_POSIX_COMMON_OP \ + ( ONIG_SYN_OP_DOT_ANYCHAR | ONIG_SYN_OP_POSIX_BRACKET | \ + ONIG_SYN_OP_DECIMAL_BACKREF | \ + ONIG_SYN_OP_BRACKET_CC | ONIG_SYN_OP_ASTERISK_ZERO_INF | \ + ONIG_SYN_OP_LINE_ANCHOR | \ + ONIG_SYN_OP_ESC_CONTROL_CHARS ) + +#define SYN_GNU_REGEX_OP \ + ( ONIG_SYN_OP_DOT_ANYCHAR | ONIG_SYN_OP_BRACKET_CC | \ + ONIG_SYN_OP_POSIX_BRACKET | ONIG_SYN_OP_DECIMAL_BACKREF | \ + ONIG_SYN_OP_BRACE_INTERVAL | ONIG_SYN_OP_LPAREN_SUBEXP | \ + ONIG_SYN_OP_VBAR_ALT | \ + ONIG_SYN_OP_ASTERISK_ZERO_INF | ONIG_SYN_OP_PLUS_ONE_INF | \ + ONIG_SYN_OP_QMARK_ZERO_ONE | \ + ONIG_SYN_OP_ESC_AZ_BUF_ANCHOR | ONIG_SYN_OP_ESC_CAPITAL_G_BEGIN_ANCHOR | \ + ONIG_SYN_OP_ESC_W_WORD | \ + ONIG_SYN_OP_ESC_B_WORD_BOUND | ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END | \ + ONIG_SYN_OP_ESC_S_WHITE_SPACE | ONIG_SYN_OP_ESC_D_DIGIT | \ + ONIG_SYN_OP_LINE_ANCHOR ) + +#define SYN_GNU_REGEX_BV \ + ( ONIG_SYN_CONTEXT_INDEP_ANCHORS | ONIG_SYN_CONTEXT_INDEP_REPEAT_OPS | \ + ONIG_SYN_CONTEXT_INVALID_REPEAT_OPS | ONIG_SYN_ALLOW_INVALID_INTERVAL | \ + ONIG_SYN_BACKSLASH_ESCAPE_IN_CC | ONIG_SYN_ALLOW_DOUBLE_RANGE_OP_IN_CC ) + + +#define NCCLASS_FLAGS(cc) ((cc)->flags) +#define NCCLASS_FLAG_SET(cc,flag) (NCCLASS_FLAGS(cc) |= (flag)) +#define NCCLASS_FLAG_CLEAR(cc,flag) (NCCLASS_FLAGS(cc) &= ~(flag)) +#define IS_NCCLASS_FLAG_ON(cc,flag) ((NCCLASS_FLAGS(cc) & (flag)) != 0) + +/* cclass node */ +#define FLAG_NCCLASS_NOT (1<<0) +#define FLAG_NCCLASS_SHARE (1<<1) + +#define NCCLASS_SET_NOT(nd) NCCLASS_FLAG_SET(nd, FLAG_NCCLASS_NOT) +#define NCCLASS_CLEAR_NOT(nd) NCCLASS_FLAG_CLEAR(nd, FLAG_NCCLASS_NOT) +#define IS_NCCLASS_NOT(nd) IS_NCCLASS_FLAG_ON(nd, FLAG_NCCLASS_NOT) + + +typedef struct { +#ifdef USE_DIRECT_THREADED_CODE + const void* opaddr; +#else + enum OpCode opcode; +#endif + union { + struct { + UChar s[16]; /* Now used first 7 bytes only. */ + } exact; + struct { + UChar* s; + LengthType n; /* number of chars */ + } exact_n; /* EXACTN, EXACTN_IC, EXACTMB2N, EXACTMB3N */ + struct { + UChar* s; + LengthType n; /* number of chars */ + LengthType len; /* char byte length */ + } exact_len_n; /* EXACTMBN */ + struct { + BitSetRef bsp; + } cclass; + struct { + void* mb; + } cclass_mb; + struct { + void* mb; /* mb must be same position with cclass_mb for match_at(). */ + BitSetRef bsp; + } cclass_mix; + struct { + UChar c; + } anychar_star_peek_next; + struct { + ModeType mode; + } word_boundary; /* OP_WORD_BOUNDARY, OP_NO_WORD_BOUNDARY, OP_WORD_BEGIN, OP_WORD_END */ + struct { + enum TextSegmentBoundaryType type; + int not; + } text_segment_boundary; + struct { + enum CheckPositionType type; + } check_position; + struct { + union { + MemNumType n1; /* num == 1 */ + MemNumType* ns; /* num > 1 */ + }; + int num; + int nest_level; + } backref_general; /* BACKREF_MULTI, BACKREF_MULTI_IC, BACKREF_WITH_LEVEL, BACKREF_CHECK, BACKREF_CHECK_WITH_LEVEL, */ + struct { + MemNumType n1; + } backref_n; /* BACKREF_N, BACKREF_N_IC */ + struct { + MemNumType num; + } memory_start; /* MEMORY_START, MEMORY_START_PUSH */ + struct { + MemNumType num; + } memory_end; /* MEMORY_END, MEMORY_END_REC, MEMORY_END_PUSH, MEMORY_END_PUSH_REC */ + struct { + RelAddrType addr; + } jump; + struct { + RelAddrType addr; + } push; + struct { + RelAddrType addr; + UChar c; + } push_or_jump_exact1; + struct { + RelAddrType addr; + UChar c; + } push_if_peek_next; + struct { + MemNumType id; + } pop_to_mark; + struct { + MemNumType id; + RelAddrType addr; + } repeat; /* REPEAT, REPEAT_NG */ + struct { + MemNumType id; + } repeat_inc; /* REPEAT_INC, REPEAT_INC_NG */ + struct { + MemNumType mem; + } empty_check_start; + struct { + MemNumType mem; + MemStatusType empty_status_mem; + } empty_check_end; /* EMPTY_CHECK_END, EMPTY_CHECK_END_MEMST, EMPTY_CHECK_END_MEMST_PUSH */ + struct { + RelAddrType addr; + } prec_read_not_start; + struct { + LengthType len; + } look_behind; + struct { + LengthType len; + RelAddrType addr; + } look_behind_not_start; + struct { + RelPositionType n; /* char relative position */ + } move; + struct { + LengthType initial; /* char length */ + LengthType remaining; /* char length */ + RelAddrType addr; + } step_back_start; + struct { + MemNumType id; + int restore_pos; /* flag: restore current string position */ + } cut_to_mark; + struct { + MemNumType id; + int save_pos; /* flag: save current string position */ + } mark; + struct { + SaveType type; + MemNumType id; + } save_val; + struct { + UpdateVarType type; + MemNumType id; + int clear; /* UPDATE_VAR_RIGHT_RANGE_FROM_S_STACK or UPDATE_VAR_RIGHT_RANGE_FROM_STACK */ + } update_var; + struct { + AbsAddrType addr; +#if defined(ONIG_DEBUG_MATCH_COUNTER) || defined(ONIG_DEBUG_CALL) + MemNumType called_mem; +#endif + } call; +#ifdef USE_CALLOUT + struct { + MemNumType num; + } callout_contents; + struct { + MemNumType num; + MemNumType id; + } callout_name; +#endif + }; +} Operation; + +typedef struct { + const UChar* pattern; + const UChar* pattern_end; +#ifdef USE_CALLOUT + void* tag_table; + int callout_num; + int callout_list_alloc; + CalloutListEntry* callout_list; /* index: callout num */ +#endif +} RegexExt; + +typedef struct { + int lower; + int upper; + union { + Operation* pcode; /* address of repeated body */ + int offset; + } u; +} RepeatRange; + +struct re_pattern_buffer { + /* common members of BBuf(bytes-buffer) */ + Operation* ops; +#ifdef USE_DIRECT_THREADED_CODE + enum OpCode* ocs; +#endif + Operation* ops_curr; + unsigned int ops_used; /* used space for ops */ + unsigned int ops_alloc; /* allocated space for ops */ + unsigned char* string_pool; + unsigned char* string_pool_end; + + int num_mem; /* used memory(...) num counted from 1 */ + int num_repeat; /* OP_REPEAT/OP_REPEAT_NG id-counter */ + int num_empty_check; /* OP_EMPTY_CHECK_START/END id counter */ + int num_call; /* number of subexp call */ + MemStatusType capture_history; /* (?@...) flag (1-31) */ + MemStatusType push_mem_start; /* need backtrack flag */ + MemStatusType push_mem_end; /* need backtrack flag */ + int stack_pop_level; + int repeat_range_alloc; + RepeatRange* repeat_range; + + OnigEncoding enc; + OnigOptionType options; + OnigSyntaxType* syntax; + OnigCaseFoldType case_fold_flag; + void* name_table; + + /* optimization info (string search, char-map and anchors) */ + int optimize; /* optimize flag */ + int threshold_len; /* search str-length for apply optimize */ + int anchor; /* BEGIN_BUF, BEGIN_POS, (SEMI_)END_BUF */ + OnigLen anc_dist_min; /* (SEMI_)END_BUF anchor distance */ + OnigLen anc_dist_max; /* (SEMI_)END_BUF anchor distance */ + int sub_anchor; /* start-anchor for exact or map */ + unsigned char *exact; + unsigned char *exact_end; + unsigned char map[CHAR_MAP_SIZE]; /* used as BMH skip or char-map */ + int map_offset; + OnigLen dist_min; /* min-distance of exact or map */ + OnigLen dist_max; /* max-distance of exact or map */ + RegexExt* extp; +}; + +#define COP(reg) ((reg)->ops_curr) +#define COP_CURR_OFFSET(reg) ((reg)->ops_used - 1) +#define COP_CURR_OFFSET_BYTES(reg, p) \ + ((int )((char* )(&((reg)->ops_curr->p)) - (char* )((reg)->ops))) + + +extern void onig_add_end_call(void (*func)(void)); +extern void onig_warning(const char* s); +extern UChar* onig_error_code_to_format P_((int code)); +extern void ONIG_VARIADIC_FUNC_ATTR ONIG_PRINTFLIKE(6, 7) onig_snprintf_with_pattern PV_((UChar buf[], int bufsize, OnigEncoding enc, UChar* pat, UChar* pat_end, const char *fmt, ...)); +extern int onig_compile P_((regex_t* reg, const UChar* pattern, const UChar* pattern_end, OnigErrorInfo* einfo)); +extern int onig_is_code_in_cc_len P_((int enclen, OnigCodePoint code, void* /* CClassNode* */ cc)); +extern RegexExt* onig_get_regex_ext(regex_t* reg); +extern int onig_ext_set_pattern(regex_t* reg, const UChar* pattern, const UChar* pattern_end); +extern int onig_positive_int_multiply(int x, int y); +extern hash_table_type onig_st_init_strend_table_with_size P_((int size)); +extern int onig_st_lookup_strend P_((hash_table_type table, const UChar* str_key, const UChar* end_key, hash_data_type *value)); +extern int onig_st_insert_strend P_((hash_table_type table, const UChar* str_key, const UChar* end_key, hash_data_type value)); + +#ifdef ONIG_DEBUG + +#ifdef ONIG_DEBUG_COMPILE +extern void onig_print_compiled_byte_code_list(FILE* f, regex_t* reg); +#endif + +#ifdef ONIG_DEBUG_STATISTICS +extern void onig_statistics_init P_((void)); +extern int onig_print_statistics P_((FILE* f)); +#endif + +#endif /* ONIG_DEBUG */ + +#ifdef USE_CALLOUT + +extern OnigCalloutType onig_get_callout_type_by_name_id(int name_id); +extern OnigCalloutFunc onig_get_callout_start_func_by_name_id(int id); +extern OnigCalloutFunc onig_get_callout_end_func_by_name_id(int id); +extern int onig_callout_tag_table_free(void* table); +extern void onig_free_reg_callout_list(int n, CalloutListEntry* list); +extern CalloutListEntry* onig_reg_callout_list_at(regex_t* reg, int num); +extern OnigCalloutFunc onig_get_callout_start_func(regex_t* reg, int callout_num); + +/* for definition of builtin callout */ +#define BC0_P(name, func) do {\ + int len = onigenc_str_bytelen_null(enc, (UChar* )name);\ + id = onig_set_callout_of_name(enc, ONIG_CALLOUT_TYPE_SINGLE,\ + (UChar* )(name), (UChar* )((name) + len),\ + ONIG_CALLOUT_IN_PROGRESS,\ + onig_builtin_ ## func, 0, 0, 0, 0, 0);\ + if (id < 0) return id;\ +} while(0) + +#define BC0_R(name, func) do {\ + int len = onigenc_str_bytelen_null(enc, (UChar* )name);\ + id = onig_set_callout_of_name(enc, ONIG_CALLOUT_TYPE_SINGLE,\ + (UChar* )(name), (UChar* )((name) + len),\ + ONIG_CALLOUT_IN_RETRACTION,\ + onig_builtin_ ## func, 0, 0, 0, 0, 0);\ + if (id < 0) return id;\ +} while(0) + +#define BC0_B(name, func) do {\ + int len = onigenc_str_bytelen_null(enc, (UChar* )name);\ + id = onig_set_callout_of_name(enc, ONIG_CALLOUT_TYPE_SINGLE,\ + (UChar* )(name), (UChar* )((name) + len),\ + ONIG_CALLOUT_IN_BOTH,\ + onig_builtin_ ## func, 0, 0, 0, 0, 0);\ + if (id < 0) return id;\ +} while(0) + +#define BC_P(name, func, na, ts) do {\ + int len = onigenc_str_bytelen_null(enc, (UChar* )name);\ + id = onig_set_callout_of_name(enc, ONIG_CALLOUT_TYPE_SINGLE,\ + (UChar* )(name), (UChar* )((name) + len),\ + ONIG_CALLOUT_IN_PROGRESS,\ + onig_builtin_ ## func, 0, (na), (ts), 0, 0); \ + if (id < 0) return id;\ +} while(0) + +#define BC_P_O(name, func, nts, ts, nopts, opts) do {\ + int len = onigenc_str_bytelen_null(enc, (UChar* )name);\ + id = onig_set_callout_of_name(enc, ONIG_CALLOUT_TYPE_SINGLE,\ + (UChar* )(name), (UChar* )((name) + len),\ + ONIG_CALLOUT_IN_PROGRESS,\ + onig_builtin_ ## func, 0, (nts), (ts), (nopts), (opts));\ + if (id < 0) return id;\ +} while(0) + +#define BC_B(name, func, na, ts) do {\ + int len = onigenc_str_bytelen_null(enc, (UChar* )name);\ + id = onig_set_callout_of_name(enc, ONIG_CALLOUT_TYPE_SINGLE,\ + (UChar* )(name), (UChar* )((name) + len),\ + ONIG_CALLOUT_IN_BOTH,\ + onig_builtin_ ## func, 0, (na), (ts), 0, 0);\ + if (id < 0) return id;\ +} while(0) + +#define BC_B_O(name, func, nts, ts, nopts, opts) do {\ + int len = onigenc_str_bytelen_null(enc, (UChar* )name);\ + id = onig_set_callout_of_name(enc, ONIG_CALLOUT_TYPE_SINGLE,\ + (UChar* )(name), (UChar* )((name) + len),\ + ONIG_CALLOUT_IN_BOTH,\ + onig_builtin_ ## func, 0, (nts), (ts), (nopts), (opts));\ + if (id < 0) return id;\ +} while(0) + +#endif /* USE_CALLOUT */ + + +typedef int (*ONIGENC_INIT_PROPERTY_LIST_FUNC_TYPE)(void); + +#endif /* REGINT_H */ diff --git a/vendor/oniguruma/oniguruma/src/regparse.c b/vendor/oniguruma/oniguruma/src/regparse.c new file mode 100644 index 0000000..1d00b82 --- /dev/null +++ b/vendor/oniguruma/oniguruma/src/regparse.c @@ -0,0 +1,9455 @@ +/********************************************************************** + regparse.c - Oniguruma (regular expression library) +**********************************************************************/ +/*- + * Copyright (c) 2002-2024 K.Kosako + * 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. + */ + +#ifdef DEBUG_ND_FREE +#ifndef NEED_TO_INCLUDE_STDIO +#define NEED_TO_INCLUDE_STDIO +#endif +#endif + +#include "regparse.h" +#include "st.h" + +#define INIT_TAG_NAMES_ALLOC_NUM 5 + +#define WARN_BUFSIZE 256 + +#define CASE_FOLD_IS_APPLIED_INSIDE_NEGATIVE_CCLASS + +#define IS_ALLOWED_CODE_IN_CALLOUT_NAME(c) \ + ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') || (c >= '0' && c <= '9') || c == '_' /* || c == '!' */) +#define IS_ALLOWED_CODE_IN_CALLOUT_TAG_NAME(c) \ + ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') || (c >= '0' && c <= '9') || c == '_') + +#define OPTON_SINGLELINE(option) ((option) & ONIG_OPTION_SINGLELINE) +#define OPTON_MULTILINE(option) ((option) & ONIG_OPTION_MULTILINE) +#define OPTON_IGNORECASE(option) ((option) & ONIG_OPTION_IGNORECASE) +#define OPTON_EXTEND(option) ((option) & ONIG_OPTION_EXTEND) +#define OPTON_WORD_ASCII(option) \ + ((option) & (ONIG_OPTION_WORD_IS_ASCII | ONIG_OPTION_POSIX_IS_ASCII)) +#define OPTON_DIGIT_ASCII(option) \ + ((option) & (ONIG_OPTION_DIGIT_IS_ASCII | ONIG_OPTION_POSIX_IS_ASCII)) +#define OPTON_SPACE_ASCII(option) \ + ((option) & (ONIG_OPTION_SPACE_IS_ASCII | ONIG_OPTION_POSIX_IS_ASCII)) +#define OPTON_POSIX_ASCII(option) ((option) & ONIG_OPTION_POSIX_IS_ASCII) +#define OPTON_TEXT_SEGMENT_WORD(option) ((option) & ONIG_OPTION_TEXT_SEGMENT_WORD) + +#define OPTON_IS_ASCII_MODE_CTYPE(ctype, options) \ + ((ctype) >= 0 && \ + (((ctype) < ONIGENC_CTYPE_ASCII && OPTON_POSIX_ASCII(options)) ||\ + ((ctype) == ONIGENC_CTYPE_WORD && OPTON_WORD_ASCII(options)) ||\ + ((ctype) == ONIGENC_CTYPE_DIGIT && OPTON_DIGIT_ASCII(options)) ||\ + ((ctype) == ONIGENC_CTYPE_SPACE && OPTON_SPACE_ASCII(options)))) + + +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 | + 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_ONIGURUMA | + 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_QMARK_BRACE_CALLOUT_CONTENTS | + ONIG_SYN_OP2_ASTERISK_CALLOUT_NAME | + ONIG_SYN_OP2_ESC_X_Y_TEXT_SEGMENT | + ONIG_SYN_OP2_ESC_CAPITAL_R_GENERAL_NEWLINE | + ONIG_SYN_OP2_ESC_CAPITAL_N_O_SUPER_DOT | + 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_VARIABLE_LEN_LOOK_BEHIND | + ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP | + ONIG_SYN_ALLOW_MULTIPLEX_DEFINITION_NAME | + ONIG_SYN_FIXED_INTERVAL_IS_GREEDY_ONLY | + ONIG_SYN_ALLOW_INVALID_CODE_END_OF_RANGE_IN_CC | + ONIG_SYN_WARN_CC_OP_NOT_ESCAPED | +#ifdef USE_WHOLE_OPTIONS + ONIG_SYN_WHOLE_OPTIONS | +#endif + 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 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_TEXT_SEGMENT | + 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; + + +#define BB_INIT(buf,size) bbuf_init((BBuf* )(buf), (size)) + +#define BB_EXPAND(buf,low) do{\ + do { (buf)->alloc *= 2; } while ((buf)->alloc < (unsigned int )low);\ + (buf)->p = (UChar* )xrealloc((buf)->p, (buf)->alloc);\ + if (IS_NULL((buf)->p)) return(ONIGERR_MEMORY);\ +} while (0) + +#define BB_ENSURE_SIZE(buf,size) do{\ + unsigned int new_alloc = (buf)->alloc;\ + while (new_alloc < (unsigned int )(size)) { new_alloc *= 2; }\ + if ((buf)->alloc != new_alloc) {\ + (buf)->p = (UChar* )xrealloc((buf)->p, new_alloc);\ + if (IS_NULL((buf)->p)) return(ONIGERR_MEMORY);\ + (buf)->alloc = new_alloc;\ + }\ +} while (0) + +#define BB_WRITE(buf,pos,bytes,n) do{\ + int used = (pos) + (n);\ + if ((buf)->alloc < (unsigned int )used) BB_EXPAND((buf),used);\ + xmemcpy((buf)->p + (pos), (bytes), (n));\ + if ((buf)->used < (unsigned int )used) (buf)->used = used;\ +} while (0) + +#define BB_WRITE1(buf,pos,byte) do{\ + int used = (pos) + 1;\ + if ((buf)->alloc < (unsigned int )used) BB_EXPAND((buf),used);\ + (buf)->p[(pos)] = (byte);\ + if ((buf)->used < (unsigned int )used) (buf)->used = used;\ +} while (0) + +#define BB_ADD(buf,bytes,n) BB_WRITE((buf),(buf)->used,(bytes),(n)) +#define BB_ADD1(buf,byte) BB_WRITE1((buf),(buf)->used,(byte)) +#define BB_GET_ADD_ADDRESS(buf) ((buf)->p + (buf)->used) +#define BB_GET_OFFSET_POS(buf) ((buf)->used) + +/* from < to */ +#define BB_MOVE_RIGHT(buf,from,to,n) do {\ + if ((unsigned int )((to)+(n)) > (buf)->alloc) BB_EXPAND((buf),(to) + (n));\ + xmemmove((buf)->p + (to), (buf)->p + (from), (n));\ + if ((unsigned int )((to)+(n)) > (buf)->used) (buf)->used = (to) + (n);\ +} while (0) + +/* from > to */ +#define BB_MOVE_LEFT(buf,from,to,n) do {\ + xmemmove((buf)->p + (to), (buf)->p + (from), (n));\ +} while (0) + +/* from > to */ +#define BB_MOVE_LEFT_REDUCE(buf,from,to) do {\ + xmemmove((buf)->p + (to), (buf)->p + (from), (buf)->used - (from));\ + (buf)->used -= (from - to);\ +} while (0) + +#define BB_INSERT(buf,pos,bytes,n) do {\ + if (pos >= (buf)->used) {\ + BB_WRITE(buf,pos,bytes,n);\ + }\ + else {\ + BB_MOVE_RIGHT((buf),(pos),(pos) + (n),((buf)->used - (pos)));\ + xmemcpy((buf)->p + (pos), (bytes), (n));\ + }\ +} while (0) + +#define BB_GET_BYTE(buf, pos) (buf)->p[(pos)] + + +typedef enum { + CS_VALUE, + CS_RANGE, + CS_COMPLETE, + CS_START +} CSTATE; + +typedef enum { + CV_UNDEF, + CV_SB, + CV_MB, + CV_CPROP +} CVAL; + +extern void onig_null_warn(const char* s ARG_UNUSED) { } + +#ifdef DEFAULT_WARN_FUNCTION +static OnigWarnFunc onig_warn = (OnigWarnFunc )DEFAULT_WARN_FUNCTION; +#else +static OnigWarnFunc onig_warn = onig_null_warn; +#endif + +#ifdef DEFAULT_VERB_WARN_FUNCTION +static OnigWarnFunc onig_verb_warn = (OnigWarnFunc )DEFAULT_VERB_WARN_FUNCTION; +#else +static OnigWarnFunc onig_verb_warn = onig_null_warn; +#endif + +extern void onig_set_warn_func(OnigWarnFunc f) +{ + onig_warn = f; +} + +extern void onig_set_verb_warn_func(OnigWarnFunc f) +{ + onig_verb_warn = f; +} + +extern void +onig_warning(const char* s) +{ + if (onig_warn == onig_null_warn) return ; + + (*onig_warn)(s); +} + +#define DEFAULT_MAX_CAPTURE_NUM 32767 + +static int MaxCaptureNum = DEFAULT_MAX_CAPTURE_NUM; + +extern int +onig_set_capture_num_limit(int num) +{ + if (num < 0) return -1; + + MaxCaptureNum = num; + return 0; +} + +static unsigned int ParseDepthLimit = DEFAULT_PARSE_DEPTH_LIMIT; + +extern unsigned int +onig_get_parse_depth_limit(void) +{ + return ParseDepthLimit; +} + +extern int +onig_set_parse_depth_limit(unsigned int depth) +{ + if (depth == 0) + ParseDepthLimit = DEFAULT_PARSE_DEPTH_LIMIT; + else + ParseDepthLimit = depth; + return 0; +} + +#ifdef ONIG_DEBUG_PARSE +#define INC_PARSE_DEPTH(d) do {\ + (d)++;\ + if (env->max_parse_depth < (d)) env->max_parse_depth = d;\ + if ((d) > ParseDepthLimit) \ + return ONIGERR_PARSE_DEPTH_LIMIT_OVER;\ +} while (0) +#else +#define INC_PARSE_DEPTH(d) do {\ + (d)++;\ + if ((d) > ParseDepthLimit) \ + return ONIGERR_PARSE_DEPTH_LIMIT_OVER;\ +} while (0) +#endif + +#define DEC_PARSE_DEPTH(d) (d)-- + + +static int +bbuf_init(BBuf* buf, int size) +{ + if (size <= 0) { + size = 0; + buf->p = NULL; + } + else { + buf->p = (UChar* )xmalloc(size); + if (IS_NULL(buf->p)) return(ONIGERR_MEMORY); + } + + buf->alloc = size; + buf->used = 0; + return 0; +} + +static void +bbuf_free(BBuf* bbuf) +{ + if (IS_NOT_NULL(bbuf)) { + if (IS_NOT_NULL(bbuf->p)) xfree(bbuf->p); + xfree(bbuf); + } +} + +static int +bbuf_clone(BBuf** rto, BBuf* from) +{ + int r; + BBuf *to; + + *rto = to = (BBuf* )xmalloc(sizeof(BBuf)); + CHECK_NULL_RETURN_MEMERR(to); + r = BB_INIT(to, from->alloc); + if (r != 0) { + bbuf_free(to); + *rto = 0; + return r; + } + to->used = from->used; + xmemcpy(to->p, from->p, from->used); + return 0; +} + +static int +backref_rel_to_abs(int rel_no, ParseEnv* env) +{ + if (rel_no > 0) { + if (rel_no > ONIG_INT_MAX - env->num_mem) + return ONIGERR_INVALID_BACKREF; + return env->num_mem + rel_no; + } + else { + return env->num_mem + 1 + rel_no; + } +} + +#define OPTION_ON(v,f) ((v) |= (f)) +#define OPTION_OFF(v,f) ((v) &= ~(f)) + +#define OPTION_NEGATE(v,f,negative) (negative) ? ((v) &= ~(f)) : ((v) |= (f)) + +#define MBCODE_START_POS(enc) \ + (OnigCodePoint )(ONIGENC_MBC_MINLEN(enc) > 1 ? 0 : 0x80) + +#define SET_ALL_MULTI_BYTE_RANGE(enc, pbuf) \ + add_code_range_to_buf(pbuf, MBCODE_START_POS(enc), ~((OnigCodePoint )0)) + +#define ADD_ALL_MULTI_BYTE_RANGE(enc, mbuf) do {\ + if (! ONIGENC_IS_SINGLEBYTE(enc)) {\ + r = SET_ALL_MULTI_BYTE_RANGE(enc, &(mbuf));\ + if (r != 0) return r;\ + }\ +} while (0) + + +#define BITSET_IS_EMPTY(bs,empty) do {\ + int i;\ + empty = 1;\ + for (i = 0; i < (int )BITSET_REAL_SIZE; i++) {\ + if ((bs)[i] != 0) {\ + empty = 0; break;\ + }\ + }\ +} while (0) + +static void +bitset_set_range(BitSetRef bs, int from, int to) +{ + int i; + for (i = from; i <= to && i < SINGLE_BYTE_SIZE; i++) { + BITSET_SET_BIT(bs, i); + } +} + +static void +bitset_invert(BitSetRef bs) +{ + int i; + for (i = 0; i < (int )BITSET_REAL_SIZE; i++) { bs[i] = ~(bs[i]); } +} + +static void +bitset_invert_to(BitSetRef from, BitSetRef to) +{ + int i; + for (i = 0; i < (int )BITSET_REAL_SIZE; i++) { to[i] = ~(from[i]); } +} + +static void +bitset_and(BitSetRef dest, BitSetRef bs) +{ + int i; + for (i = 0; i < (int )BITSET_REAL_SIZE; i++) { dest[i] &= bs[i]; } +} + +static void +bitset_or(BitSetRef dest, BitSetRef bs) +{ + int i; + for (i = 0; i < (int )BITSET_REAL_SIZE; i++) { dest[i] |= bs[i]; } +} + +static void +bitset_copy(BitSetRef dest, BitSetRef bs) +{ + int i; + for (i = 0; i < (int )BITSET_REAL_SIZE; i++) { dest[i] = bs[i]; } +} + +extern int +onig_strncmp(const UChar* s1, const UChar* s2, int n) +{ + int x; + + while (n-- > 0) { + x = *s2++ - *s1++; + if (x) return x; + } + return 0; +} + +extern void +onig_strcpy(UChar* dest, const UChar* src, const UChar* end) +{ + int len = (int )(end - src); + if (len > 0) { + xmemcpy(dest, src, len); + dest[len] = (UChar )0; + } +} + +/* scan pattern methods */ +#define PEND_VALUE 0 + +#define PFETCH_READY UChar* pfetch_prev +#define PEND (p < end ? 0 : 1) +#define PUNFETCH p = pfetch_prev +#define PPREV pfetch_prev +#define PINC do { \ + pfetch_prev = p; \ + p += ONIGENC_MBC_ENC_LEN(enc, p); \ +} while (0) +#define PFETCH(c) do { \ + c = ONIGENC_MBC_TO_CODE(enc, p, end); \ + pfetch_prev = p; \ + p += ONIGENC_MBC_ENC_LEN(enc, p); \ +} while (0) + +#define PINC_S do { \ + p += ONIGENC_MBC_ENC_LEN(enc, p); \ +} while (0) +#define PFETCH_S(c) do { \ + c = ONIGENC_MBC_TO_CODE(enc, p, end); \ + p += ONIGENC_MBC_ENC_LEN(enc, p); \ +} while (0) + +#define PPEEK (p < end ? ONIGENC_MBC_TO_CODE(enc, p, end) : PEND_VALUE) +#define PPEEK_IS(c) (PPEEK == (OnigCodePoint )c) + +static UChar* +strcat_capa(UChar* dest, UChar* dest_end, const UChar* src, const UChar* src_end, + int capa) +{ + UChar* r; + ptrdiff_t dest_delta = dest_end - dest; + + if (dest) + r = (UChar* )xrealloc(dest, capa + 1); + else + r = (UChar* )xmalloc(capa + 1); + + CHECK_NULL_RETURN(r); + onig_strcpy(r + dest_delta, src, src_end); + return r; +} + +/* dest on static area */ +static UChar* +strcat_capa_from_static(UChar* dest, UChar* dest_end, + const UChar* src, const UChar* src_end, int capa) +{ + UChar* r; + + r = (UChar* )xmalloc(capa + 1); + CHECK_NULL_RETURN(r); + onig_strcpy(r, dest, dest_end); + onig_strcpy(r + (dest_end - dest), src, src_end); + return r; +} + + +#ifdef USE_ST_LIBRARY + +typedef struct { + UChar* s; + UChar* end; +} st_str_end_key; + +static int +str_end_cmp(st_data_t ax, st_data_t ay) +{ + st_str_end_key* x = (st_str_end_key* )ax; + st_str_end_key* y = (st_str_end_key* )ay; + UChar *p, *q; + int c; + + if ((x->end - x->s) != (y->end - y->s)) + return 1; + + p = x->s; + q = y->s; + while (p < x->end) { + c = (int )*p - (int )*q; + if (c != 0) return c; + + p++; q++; + } + + return 0; +} + +static int +str_end_hash(st_data_t ax) +{ + st_str_end_key* x = (st_str_end_key* )ax; + UChar *p; + unsigned val = 0; + + p = x->s; + while (p < x->end) { + val = val * 997 + (unsigned )*p++; + } + + return (int) (val + (val >> 5)); +} + +extern hash_table_type +onig_st_init_strend_table_with_size(int size) +{ + static struct st_hash_type hashType = { + str_end_cmp, + str_end_hash, + }; + + return (hash_table_type )onig_st_init_table_with_size(&hashType, size); +} + +extern int +onig_st_lookup_strend(hash_table_type table, const UChar* str_key, + const UChar* end_key, hash_data_type *value) +{ + st_str_end_key key; + + key.s = (UChar* )str_key; + key.end = (UChar* )end_key; + + return onig_st_lookup(table, (st_data_t )(&key), value); +} + +extern int +onig_st_insert_strend(hash_table_type table, const UChar* str_key, + const UChar* end_key, hash_data_type value) +{ + st_str_end_key* key; + int result; + + key = (st_str_end_key* )xmalloc(sizeof(st_str_end_key)); + CHECK_NULL_RETURN_MEMERR(key); + + key->s = (UChar* )str_key; + key->end = (UChar* )end_key; + result = onig_st_insert(table, (st_data_t )key, value); + if (result) { + xfree(key); + } + return result; +} + + +#ifdef USE_CALLOUT + +typedef struct { + OnigEncoding enc; + int type; /* callout type: single or not */ + UChar* s; + UChar* end; +} st_callout_name_key; + +static int +callout_name_table_cmp(st_data_t ax, st_data_t ay) +{ + st_callout_name_key* x = (st_callout_name_key* )ax; + st_callout_name_key* y = (st_callout_name_key* )ay; + UChar *p, *q; + int c; + + if (x->enc != y->enc) return 1; + if (x->type != y->type) return 1; + if ((x->end - x->s) != (y->end - y->s)) + return 1; + + p = x->s; + q = y->s; + while (p < x->end) { + c = (int )*p - (int )*q; + if (c != 0) return c; + + p++; q++; + } + + return 0; +} + +static int +callout_name_table_hash(st_data_t ax) +{ + st_callout_name_key* x = (st_callout_name_key* )ax; + UChar *p; + unsigned int val = 0; + + p = x->s; + while (p < x->end) { + val = val * 997 + (unsigned int )*p++; + } + + /* use intptr_t for escape warning in Windows */ + return (int )(val + (val >> 5) + ((intptr_t )x->enc & 0xffff) + x->type); +} + +extern hash_table_type +onig_st_init_callout_name_table_with_size(int size) +{ + static struct st_hash_type hashType = { + callout_name_table_cmp, + callout_name_table_hash, + }; + + return (hash_table_type )onig_st_init_table_with_size(&hashType, size); +} + +extern int +onig_st_lookup_callout_name_table(hash_table_type table, + OnigEncoding enc, + int type, + const UChar* str_key, + const UChar* end_key, + hash_data_type *value) +{ + st_callout_name_key key; + + key.enc = enc; + key.type = type; + key.s = (UChar* )str_key; + key.end = (UChar* )end_key; + + return onig_st_lookup(table, (st_data_t )(&key), value); +} + +static int +st_insert_callout_name_table(hash_table_type table, + OnigEncoding enc, int type, + UChar* str_key, UChar* end_key, + hash_data_type value) +{ + st_callout_name_key* key; + int result; + + key = (st_callout_name_key* )xmalloc(sizeof(st_callout_name_key)); + CHECK_NULL_RETURN_MEMERR(key); + + /* key->s: don't duplicate, because str_key is duped in callout_name_entry() */ + key->enc = enc; + key->type = type; + key->s = str_key; + key->end = end_key; + result = onig_st_insert(table, (st_data_t )key, value); + if (result) { + xfree(key); + } + return result; +} +#endif + +#endif /* USE_ST_LIBRARY */ + + +#define INIT_NAME_BACKREFS_ALLOC_NUM 8 + +typedef struct { + UChar* name; + int name_len; /* byte length */ + int back_num; /* number of backrefs */ + int back_alloc; + int back_ref1; + int* back_refs; +} NameEntry; + +#ifdef USE_ST_LIBRARY + +#define INIT_NAMES_ALLOC_NUM 5 + +typedef st_table NameTable; +typedef st_data_t HashDataType; /* 1.6 st.h doesn't define st_data_t type */ + +#define NAMEBUF_SIZE 24 +#define NAMEBUF_SIZE_1 25 + +#ifdef ONIG_DEBUG +static int +i_print_name_entry(st_data_t akey, st_data_t ae, st_data_t arg) +{ + int i; + FILE* fp; + NameEntry* e; + + e = (NameEntry* )ae; + fp = (FILE* )arg; + + fprintf(fp, "%s: ", e->name); + if (e->back_num == 0) + fputs("-", fp); + else if (e->back_num == 1) + fprintf(fp, "%d", e->back_ref1); + else { + for (i = 0; i < e->back_num; i++) { + if (i > 0) fprintf(fp, ", "); + fprintf(fp, "%d", e->back_refs[i]); + } + } + fputs("\n", fp); + return ST_CONTINUE; +} + +extern int +onig_print_names(FILE* fp, regex_t* reg) +{ + NameTable* t = (NameTable* )reg->name_table; + + if (IS_NOT_NULL(t)) { + fprintf(fp, "name table\n"); + onig_st_foreach(t, i_print_name_entry, (HashDataType )fp); + fputs("\n", fp); + } + return 0; +} +#endif /* ONIG_DEBUG */ + +static int +i_free_name_entry(st_data_t akey, st_data_t ae, st_data_t arg ARG_UNUSED) +{ + UChar* key; + NameEntry* e; + + key = (UChar* )akey; + e = (NameEntry* )ae; + xfree(e->name); + if (IS_NOT_NULL(e->back_refs)) xfree(e->back_refs); + xfree(key); + xfree(e); + return ST_DELETE; +} + +static int +names_clear(regex_t* reg) +{ + NameTable* t = (NameTable* )reg->name_table; + + if (IS_NOT_NULL(t)) { + onig_st_foreach(t, i_free_name_entry, 0); + } + return 0; +} + +extern int +onig_names_free(regex_t* reg) +{ + int r; + NameTable* t; + + r = names_clear(reg); + if (r != 0) return r; + + t = (NameTable* )reg->name_table; + if (IS_NOT_NULL(t)) onig_st_free_table(t); + reg->name_table = (void* )NULL; + return 0; +} + +static NameEntry* +name_find(regex_t* reg, const UChar* name, const UChar* name_end) +{ + NameEntry* e; + NameTable* t = (NameTable* )reg->name_table; + + e = (NameEntry* )NULL; + if (IS_NOT_NULL(t)) { + onig_st_lookup_strend(t, name, name_end, (HashDataType* )((void* )(&e))); + } + return e; +} + +typedef struct { + int (*func)(const UChar*, const UChar*,int,int*,regex_t*,void*); + regex_t* reg; + void* arg; + int ret; + OnigEncoding enc; +} INamesArg; + +static int +i_names(st_data_t key ARG_UNUSED, st_data_t ae, st_data_t aarg) +{ + NameEntry* e; + INamesArg* arg; + + e = (NameEntry* )ae; + arg = (INamesArg* )aarg; + + int r = (*(arg->func))(e->name, + e->name + e->name_len, + e->back_num, + (e->back_num > 1 ? e->back_refs : &(e->back_ref1)), + arg->reg, arg->arg); + if (r != 0) { + arg->ret = r; + return ST_STOP; + } + return ST_CONTINUE; +} + +extern int +onig_foreach_name(regex_t* reg, + int (*func)(const UChar*, const UChar*,int,int*,regex_t*,void*), void* arg) +{ + INamesArg narg; + NameTable* t = (NameTable* )reg->name_table; + + narg.ret = 0; + if (IS_NOT_NULL(t)) { + narg.func = func; + narg.reg = reg; + narg.arg = arg; + narg.enc = reg->enc; /* should be pattern encoding. */ + onig_st_foreach(t, i_names, (HashDataType )&narg); + } + return narg.ret; +} + +static int +i_renumber_name(st_data_t key ARG_UNUSED, st_data_t ae, st_data_t amap) +{ + int i; + NameEntry* e; + GroupNumMap* map; + + e = (NameEntry* )ae; + map = (GroupNumMap* )amap; + + if (e->back_num > 1) { + for (i = 0; i < e->back_num; i++) { + e->back_refs[i] = map[e->back_refs[i]].new_val; + } + } + else if (e->back_num == 1) { + e->back_ref1 = map[e->back_ref1].new_val; + } + + return ST_CONTINUE; +} + +extern int +onig_renumber_name_table(regex_t* reg, GroupNumMap* map) +{ + NameTable* t = (NameTable* )reg->name_table; + + if (IS_NOT_NULL(t)) { + onig_st_foreach(t, i_renumber_name, (HashDataType )map); + } + return 0; +} + + +extern int +onig_number_of_names(regex_t* reg) +{ + NameTable* t = (NameTable* )reg->name_table; + + if (IS_NOT_NULL(t)) + return t->num_entries; + else + return 0; +} + +#else /* USE_ST_LIBRARY */ + +#define INIT_NAMES_ALLOC_NUM 8 + +typedef struct { + NameEntry* e; + int num; + int alloc; +} NameTable; + +#ifdef ONIG_DEBUG +extern int +onig_print_names(FILE* fp, regex_t* reg) +{ + int i, j; + NameEntry* e; + NameTable* t = (NameTable* )reg->name_table; + + if (IS_NOT_NULL(t) && t->num > 0) { + fprintf(fp, "name table\n"); + for (i = 0; i < t->num; i++) { + e = &(t->e[i]); + fprintf(fp, "%s: ", e->name); + if (e->back_num == 0) { + fputs("-", fp); + } + else if (e->back_num == 1) { + fprintf(fp, "%d", e->back_ref1); + } + else { + for (j = 0; j < e->back_num; j++) { + if (j > 0) fprintf(fp, ", "); + fprintf(fp, "%d", e->back_refs[j]); + } + } + fputs("\n", fp); + } + fputs("\n", fp); + } + return 0; +} +#endif + +static int +names_clear(regex_t* reg) +{ + int i; + NameEntry* e; + NameTable* t = (NameTable* )reg->name_table; + + if (IS_NOT_NULL(t)) { + for (i = 0; i < t->num; i++) { + e = &(t->e[i]); + if (IS_NOT_NULL(e->name)) { + xfree(e->name); + e->name = NULL; + e->name_len = 0; + e->back_num = 0; + e->back_alloc = 0; + if (IS_NOT_NULL(e->back_refs)) xfree(e->back_refs); + e->back_refs = (int* )NULL; + } + } + if (IS_NOT_NULL(t->e)) { + xfree(t->e); + t->e = NULL; + } + t->num = 0; + } + return 0; +} + +extern int +onig_names_free(regex_t* reg) +{ + int r; + NameTable* t; + + r = names_clear(reg); + if (r != 0) return r; + + t = (NameTable* )reg->name_table; + if (IS_NOT_NULL(t)) xfree(t); + reg->name_table = NULL; + return 0; +} + +static NameEntry* +name_find(regex_t* reg, UChar* name, UChar* name_end) +{ + int i, len; + NameEntry* e; + NameTable* t = (NameTable* )reg->name_table; + + if (IS_NOT_NULL(t)) { + len = name_end - name; + for (i = 0; i < t->num; i++) { + e = &(t->e[i]); + if (len == e->name_len && onig_strncmp(name, e->name, len) == 0) + return e; + } + } + return (NameEntry* )NULL; +} + +extern int +onig_foreach_name(regex_t* reg, + int (*func)(const UChar*, const UChar*,int,int*,regex_t*,void*), void* arg) +{ + int i, r; + NameEntry* e; + NameTable* t = (NameTable* )reg->name_table; + + if (IS_NOT_NULL(t)) { + for (i = 0; i < t->num; i++) { + e = &(t->e[i]); + r = (*func)(e->name, e->name + e->name_len, e->back_num, + (e->back_num > 1 ? e->back_refs : &(e->back_ref1)), + reg, arg); + if (r != 0) return r; + } + } + return 0; +} + +extern int +onig_number_of_names(regex_t* reg) +{ + NameTable* t = (NameTable* )reg->name_table; + + if (IS_NOT_NULL(t)) + return t->num; + else + return 0; +} + +#endif /* else USE_ST_LIBRARY */ + +static int +name_add(regex_t* reg, UChar* name, UChar* name_end, int backref, ParseEnv* env) +{ + int r; + int alloc; + NameEntry* e; + NameTable* t = (NameTable* )reg->name_table; + + if (name_end - name <= 0) + return ONIGERR_EMPTY_GROUP_NAME; + + e = name_find(reg, name, name_end); + if (IS_NULL(e)) { +#ifdef USE_ST_LIBRARY + if (IS_NULL(t)) { + t = onig_st_init_strend_table_with_size(INIT_NAMES_ALLOC_NUM); + CHECK_NULL_RETURN_MEMERR(t); + reg->name_table = (void* )t; + } + e = (NameEntry* )xmalloc(sizeof(NameEntry)); + CHECK_NULL_RETURN_MEMERR(e); + + e->name = onigenc_strdup(reg->enc, name, name_end); + if (IS_NULL(e->name)) { + xfree(e); return ONIGERR_MEMORY; + } + r = onig_st_insert_strend(t, e->name, (e->name + (name_end - name)), + (HashDataType )e); + if (r < 0) return r; + + e->name_len = (int )(name_end - name); + e->back_num = 0; + e->back_alloc = 0; + e->back_refs = (int* )NULL; + +#else + + if (IS_NULL(t)) { + alloc = INIT_NAMES_ALLOC_NUM; + t = (NameTable* )xmalloc(sizeof(NameTable)); + CHECK_NULL_RETURN_MEMERR(t); + t->e = NULL; + t->alloc = 0; + t->num = 0; + + t->e = (NameEntry* )xmalloc(sizeof(NameEntry) * alloc); + if (IS_NULL(t->e)) { + xfree(t); + return ONIGERR_MEMORY; + } + t->alloc = alloc; + reg->name_table = t; + goto clear; + } + else if (t->num == t->alloc) { + int i; + + alloc = t->alloc * 2; + t->e = (NameEntry* )xrealloc(t->e, sizeof(NameEntry) * alloc); + CHECK_NULL_RETURN_MEMERR(t->e); + t->alloc = alloc; + + clear: + for (i = t->num; i < t->alloc; i++) { + t->e[i].name = NULL; + t->e[i].name_len = 0; + t->e[i].back_num = 0; + t->e[i].back_alloc = 0; + t->e[i].back_refs = (int* )NULL; + } + } + e = &(t->e[t->num]); + t->num++; + e->name = onigenc_strdup(reg->enc, name, name_end); + if (IS_NULL(e->name)) return ONIGERR_MEMORY; + e->name_len = name_end - name; +#endif + } + + if (e->back_num >= 1 && + ! IS_SYNTAX_BV(env->syntax, ONIG_SYN_ALLOW_MULTIPLEX_DEFINITION_NAME)) { + onig_scan_env_set_error_string(env, ONIGERR_MULTIPLEX_DEFINED_NAME, + name, name_end); + return ONIGERR_MULTIPLEX_DEFINED_NAME; + } + + e->back_num++; + if (e->back_num == 1) { + e->back_ref1 = backref; + } + else { + if (e->back_num == 2) { + alloc = INIT_NAME_BACKREFS_ALLOC_NUM; + e->back_refs = (int* )xmalloc(sizeof(int) * alloc); + CHECK_NULL_RETURN_MEMERR(e->back_refs); + e->back_alloc = alloc; + e->back_refs[0] = e->back_ref1; + e->back_refs[1] = backref; + } + else { + if (e->back_num > e->back_alloc) { + alloc = e->back_alloc * 2; + e->back_refs = (int* )xrealloc(e->back_refs, sizeof(int) * alloc); + CHECK_NULL_RETURN_MEMERR(e->back_refs); + e->back_alloc = alloc; + } + e->back_refs[e->back_num - 1] = backref; + } + } + + return 0; +} + +extern int +onig_name_to_group_numbers(regex_t* reg, const UChar* name, + const UChar* name_end, int** nums) +{ + NameEntry* e = name_find(reg, name, name_end); + + if (IS_NULL(e)) return ONIGERR_UNDEFINED_NAME_REFERENCE; + + switch (e->back_num) { + case 0: + break; + case 1: + *nums = &(e->back_ref1); + break; + default: + *nums = e->back_refs; + break; + } + return e->back_num; +} + +static int +name_to_group_numbers(ParseEnv* env, const UChar* name, const UChar* name_end, + int** nums) +{ + regex_t* reg; + NameEntry* e; + + reg = env->reg; + e = name_find(reg, name, name_end); + + if (IS_NULL(e)) { + onig_scan_env_set_error_string(env, ONIGERR_UNDEFINED_NAME_REFERENCE, + (UChar* )name, (UChar* )name_end); + return ONIGERR_UNDEFINED_NAME_REFERENCE; + } + + switch (e->back_num) { + case 0: + break; + case 1: + *nums = &(e->back_ref1); + break; + default: + *nums = e->back_refs; + break; + } + return e->back_num; +} + +extern int +onig_name_to_backref_number(regex_t* reg, const UChar* name, + const UChar* name_end, OnigRegion *region) +{ + int i, n, *nums; + + n = onig_name_to_group_numbers(reg, name, name_end, &nums); + if (n < 0) + return n; + else if (n == 0) + return ONIGERR_PARSER_BUG; + else if (n == 1) + return nums[0]; + else { + if (IS_NOT_NULL(region)) { + for (i = n - 1; i >= 0; i--) { + if (region->beg[nums[i]] != ONIG_REGION_NOTPOS) + return nums[i]; + } + } + return nums[n - 1]; + } +} + +extern int +onig_noname_group_capture_is_active(regex_t* reg) +{ + if (OPTON_DONT_CAPTURE_GROUP(reg->options)) + return 0; + + if (onig_number_of_names(reg) > 0 && + IS_SYNTAX_BV(reg->syntax, ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP) && + ! OPTON_CAPTURE_GROUP(reg->options)) { + return 0; + } + + return 1; +} + +#ifdef USE_CALLOUT + +typedef struct { + OnigCalloutType type; + int in; + OnigCalloutFunc start_func; + OnigCalloutFunc end_func; + int arg_num; + int opt_arg_num; + unsigned int arg_types[ONIG_CALLOUT_MAX_ARGS_NUM]; + OnigValue opt_defaults[ONIG_CALLOUT_MAX_ARGS_NUM]; + UChar* name; /* reference to GlobalCalloutNameTable entry: e->name */ +} CalloutNameListEntry; + +typedef struct { + int n; + int alloc; + CalloutNameListEntry* v; +} CalloutNameListType; + +static CalloutNameListType* GlobalCalloutNameList; + +static int +make_callout_func_list(CalloutNameListType** rs, int init_size) +{ + CalloutNameListType* s; + CalloutNameListEntry* v; + + *rs = 0; + + s = xmalloc(sizeof(*s)); + if (IS_NULL(s)) return ONIGERR_MEMORY; + + v = (CalloutNameListEntry* )xmalloc(sizeof(CalloutNameListEntry) * init_size); + if (IS_NULL(v)) { + xfree(s); + return ONIGERR_MEMORY; + } + + s->n = 0; + s->alloc = init_size; + s->v = v; + + *rs = s; + return ONIG_NORMAL; +} + +static void +free_callout_func_list(CalloutNameListType* s) +{ + if (IS_NOT_NULL(s)) { + if (IS_NOT_NULL(s->v)) { + int i, j; + + for (i = 0; i < s->n; i++) { + CalloutNameListEntry* e = s->v + i; + for (j = e->arg_num - e->opt_arg_num; j < e->arg_num; j++) { + if (e->arg_types[j] == ONIG_TYPE_STRING) { + UChar* p = e->opt_defaults[j].s.start; + if (IS_NOT_NULL(p)) xfree(p); + } + } + } + xfree(s->v); + } + xfree(s); + } +} + +static int +callout_func_list_add(CalloutNameListType* s, int* rid) +{ + if (s->n >= s->alloc) { + int new_size = s->alloc * 2; + CalloutNameListEntry* nv = (CalloutNameListEntry* ) + xrealloc(s->v, sizeof(CalloutNameListEntry) * new_size); + if (IS_NULL(nv)) return ONIGERR_MEMORY; + + s->alloc = new_size; + s->v = nv; + } + + *rid = s->n; + + xmemset(&(s->v[s->n]), 0, sizeof(*(s->v))); + s->n++; + return ONIG_NORMAL; +} + + +typedef struct { + UChar* name; + int name_len; /* byte length */ + int id; +} CalloutNameEntry; + +#ifdef USE_ST_LIBRARY +typedef st_table CalloutNameTable; +#else +typedef struct { + CalloutNameEntry* e; + int num; + int alloc; +} CalloutNameTable; +#endif + +static CalloutNameTable* GlobalCalloutNameTable; +static int CalloutNameIDCounter; + +#ifdef USE_ST_LIBRARY + +static int +i_free_callout_name_entry(st_data_t akey, st_data_t ae, st_data_t arg ARG_UNUSED) +{ + st_callout_name_key* key; + CalloutNameEntry* e; + + key = (st_callout_name_key* )akey; + e = (CalloutNameEntry* )ae; + + if (IS_NOT_NULL(e)) { + xfree(e->name); + } + /*xfree(key->s); */ /* is same as e->name */ + xfree(key); + xfree(e); + return ST_DELETE; +} + +static int +callout_name_table_clear(CalloutNameTable* t) +{ + if (IS_NOT_NULL(t)) { + onig_st_foreach(t, i_free_callout_name_entry, 0); + } + return 0; +} + +static int +global_callout_name_table_free(void) +{ + if (IS_NOT_NULL(GlobalCalloutNameTable)) { + int r = callout_name_table_clear(GlobalCalloutNameTable); + if (r != 0) return r; + + onig_st_free_table(GlobalCalloutNameTable); + GlobalCalloutNameTable = 0; + CalloutNameIDCounter = 0; + } + + return 0; +} + +static CalloutNameEntry* +callout_name_find(OnigEncoding enc, int is_not_single, + const UChar* name, const UChar* name_end) +{ + int r; + CalloutNameEntry* e; + CalloutNameTable* t = GlobalCalloutNameTable; + + e = (CalloutNameEntry* )NULL; + if (IS_NOT_NULL(t)) { + r = onig_st_lookup_callout_name_table(t, enc, is_not_single, name, name_end, + (HashDataType* )((void* )(&e))); + if (r == 0) { /* not found */ + if (enc != ONIG_ENCODING_ASCII && + ONIGENC_IS_ASCII_COMPATIBLE_ENCODING(enc)) { + enc = ONIG_ENCODING_ASCII; + onig_st_lookup_callout_name_table(t, enc, is_not_single, name, name_end, + (HashDataType* )((void* )(&e))); + } + } + } + return e; +} + +#else + +static int +callout_name_table_clear(CalloutNameTable* t) +{ + int i; + CalloutNameEntry* e; + + if (IS_NOT_NULL(t)) { + for (i = 0; i < t->num; i++) { + e = &(t->e[i]); + if (IS_NOT_NULL(e->name)) { + xfree(e->name); + e->name = NULL; + e->name_len = 0; + e->id = 0; + e->func = 0; + } + } + if (IS_NOT_NULL(t->e)) { + xfree(t->e); + t->e = NULL; + } + t->num = 0; + } + return 0; +} + +static int +global_callout_name_table_free(void) +{ + if (IS_NOT_NULL(GlobalCalloutNameTable)) { + int r = callout_name_table_clear(GlobalCalloutNameTable); + if (r != 0) return r; + + xfree(GlobalCalloutNameTable); + GlobalCalloutNameTable = 0; + CalloutNameIDCounter = 0; + } + return 0; +} + +static CalloutNameEntry* +callout_name_find(UChar* name, UChar* name_end) +{ + int i, len; + CalloutNameEntry* e; + CalloutNameTable* t = Calloutnames; + + if (IS_NOT_NULL(t)) { + len = name_end - name; + for (i = 0; i < t->num; i++) { + e = &(t->e[i]); + if (len == e->name_len && onig_strncmp(name, e->name, len) == 0) + return e; + } + } + return (CalloutNameEntry* )NULL; +} + +#endif + +/* name string must be single byte char string. */ +static int +callout_name_entry(CalloutNameEntry** rentry, OnigEncoding enc, + int is_not_single, UChar* name, UChar* name_end) +{ + int r; + CalloutNameEntry* e; + CalloutNameTable* t = GlobalCalloutNameTable; + + *rentry = 0; + if (name_end - name <= 0) + return ONIGERR_INVALID_CALLOUT_NAME; + + e = callout_name_find(enc, is_not_single, name, name_end); + if (IS_NULL(e)) { +#ifdef USE_ST_LIBRARY + if (IS_NULL(t)) { + t = onig_st_init_callout_name_table_with_size(INIT_NAMES_ALLOC_NUM); + CHECK_NULL_RETURN_MEMERR(t); + GlobalCalloutNameTable = t; + } + e = (CalloutNameEntry* )xmalloc(sizeof(CalloutNameEntry)); + CHECK_NULL_RETURN_MEMERR(e); + + e->name = onigenc_strdup(enc, name, name_end); + if (IS_NULL(e->name)) { + xfree(e); return ONIGERR_MEMORY; + } + + r = st_insert_callout_name_table(t, enc, is_not_single, + e->name, (e->name + (name_end - name)), + (HashDataType )e); + if (r < 0) return r; + +#else + + int alloc; + + if (IS_NULL(t)) { + alloc = INIT_NAMES_ALLOC_NUM; + t = (CalloutNameTable* )xmalloc(sizeof(CalloutNameTable)); + CHECK_NULL_RETURN_MEMERR(t); + t->e = NULL; + t->alloc = 0; + t->num = 0; + + t->e = (CalloutNameEntry* )xmalloc(sizeof(CalloutNameEntry) * alloc); + if (IS_NULL(t->e)) { + xfree(t); + return ONIGERR_MEMORY; + } + t->alloc = alloc; + GlobalCalloutNameTable = t; + goto clear; + } + else if (t->num == t->alloc) { + int i; + + alloc = t->alloc * 2; + t->e = (CalloutNameEntry* )xrealloc(t->e, sizeof(CalloutNameEntry) * alloc); + CHECK_NULL_RETURN_MEMERR(t->e); + t->alloc = alloc; + + clear: + for (i = t->num; i < t->alloc; i++) { + t->e[i].name = NULL; + t->e[i].name_len = 0; + t->e[i].id = 0; + } + } + e = &(t->e[t->num]); + t->num++; + e->name = onigenc_strdup(enc, name, name_end); + if (IS_NULL(e->name)) return ONIGERR_MEMORY; +#endif + + CalloutNameIDCounter++; + e->id = CalloutNameIDCounter; + e->name_len = (int )(name_end - name); + } + + *rentry = e; + return e->id; +} + +static int +is_allowed_callout_name(OnigEncoding enc, UChar* name, UChar* name_end) +{ + UChar* p; + OnigCodePoint c; + + if (name >= name_end) return 0; + + p = name; + while (p < name_end) { + c = ONIGENC_MBC_TO_CODE(enc, p, name_end); + if (! IS_ALLOWED_CODE_IN_CALLOUT_NAME(c)) + return 0; + + if (p == name) { + if (c >= '0' && c <= '9') return 0; + } + + p += ONIGENC_MBC_ENC_LEN(enc, p); + } + + return 1; +} + +static int +is_allowed_callout_tag_name(OnigEncoding enc, UChar* name, UChar* name_end) +{ + UChar* p; + OnigCodePoint c; + + if (name >= name_end) return 0; + + p = name; + while (p < name_end) { + c = ONIGENC_MBC_TO_CODE(enc, p, name_end); + if (! IS_ALLOWED_CODE_IN_CALLOUT_TAG_NAME(c)) + return 0; + + if (p == name) { + if (c >= '0' && c <= '9') return 0; + } + + p += ONIGENC_MBC_ENC_LEN(enc, p); + } + + return 1; +} + +extern int +onig_set_callout_of_name(OnigEncoding enc, OnigCalloutType callout_type, + UChar* name, UChar* name_end, int in, + OnigCalloutFunc start_func, + OnigCalloutFunc end_func, + int arg_num, unsigned int arg_types[], + int opt_arg_num, OnigValue opt_defaults[]) +{ + int r; + int i; + int j; + int id; + int is_not_single; + CalloutNameEntry* e; + CalloutNameListEntry* fe; + + if (callout_type != ONIG_CALLOUT_TYPE_SINGLE) + return ONIGERR_INVALID_ARGUMENT; + + if (arg_num < 0 || arg_num > ONIG_CALLOUT_MAX_ARGS_NUM) + return ONIGERR_INVALID_CALLOUT_ARG; + + if (opt_arg_num < 0 || opt_arg_num > arg_num) + return ONIGERR_INVALID_CALLOUT_ARG; + + if (start_func == 0 && end_func == 0) + return ONIGERR_INVALID_CALLOUT_ARG; + + if ((in & ONIG_CALLOUT_IN_PROGRESS) == 0 && (in & ONIG_CALLOUT_IN_RETRACTION) == 0) + return ONIGERR_INVALID_CALLOUT_ARG; + + for (i = 0; i < arg_num; i++) { + unsigned int t = arg_types[i]; + if (t == ONIG_TYPE_VOID) + return ONIGERR_INVALID_CALLOUT_ARG; + else { + if (i >= arg_num - opt_arg_num) { + if (t != ONIG_TYPE_LONG && t != ONIG_TYPE_CHAR && t != ONIG_TYPE_STRING && + t != ONIG_TYPE_TAG) + return ONIGERR_INVALID_CALLOUT_ARG; + } + else { + if (t != ONIG_TYPE_LONG) { + t = t & ~ONIG_TYPE_LONG; + if (t != ONIG_TYPE_CHAR && t != ONIG_TYPE_STRING && t != ONIG_TYPE_TAG) + return ONIGERR_INVALID_CALLOUT_ARG; + } + } + } + } + + if (! is_allowed_callout_name(enc, name, name_end)) { + return ONIGERR_INVALID_CALLOUT_NAME; + } + + is_not_single = (callout_type != ONIG_CALLOUT_TYPE_SINGLE); + id = callout_name_entry(&e, enc, is_not_single, name, name_end); + if (id < 0) return id; + + r = ONIG_NORMAL; + if (IS_NULL(GlobalCalloutNameList)) { + r = make_callout_func_list(&GlobalCalloutNameList, 10); + if (r != ONIG_NORMAL) return r; + } + + while (id >= GlobalCalloutNameList->n) { + int rid; + r = callout_func_list_add(GlobalCalloutNameList, &rid); + if (r != ONIG_NORMAL) return r; + } + + fe = GlobalCalloutNameList->v + id; + fe->type = callout_type; + fe->in = in; + fe->start_func = start_func; + fe->end_func = end_func; + fe->arg_num = arg_num; + fe->opt_arg_num = opt_arg_num; + fe->name = e->name; + + for (i = 0; i < arg_num; i++) { + fe->arg_types[i] = arg_types[i]; + } + for (i = arg_num - opt_arg_num, j = 0; i < arg_num; i++, j++) { + if (IS_NULL(opt_defaults)) return ONIGERR_INVALID_ARGUMENT; + if (fe->arg_types[i] == ONIG_TYPE_STRING) { + OnigValue* val; + UChar* ds; + + val = opt_defaults + j; + ds = onigenc_strdup(enc, val->s.start, val->s.end); + CHECK_NULL_RETURN_MEMERR(ds); + + fe->opt_defaults[i].s.start = ds; + fe->opt_defaults[i].s.end = ds + (val->s.end - val->s.start); + } + else { + fe->opt_defaults[i] = opt_defaults[j]; + } + } + + r = id; + return r; +} + +static int +get_callout_name_id_by_name(OnigEncoding enc, int is_not_single, + UChar* name, UChar* name_end, int* rid) +{ + int r; + CalloutNameEntry* e; + + if (! is_allowed_callout_name(enc, name, name_end)) { + return ONIGERR_INVALID_CALLOUT_NAME; + } + + e = callout_name_find(enc, is_not_single, name, name_end); + if (IS_NULL(e)) { + return ONIGERR_UNDEFINED_CALLOUT_NAME; + } + + r = ONIG_NORMAL; + *rid = e->id; + + return r; +} + +extern OnigCalloutFunc +onig_get_callout_start_func(regex_t* reg, int callout_num) +{ + /* If used for callouts of contents, return 0. */ + CalloutListEntry* e; + + e = onig_reg_callout_list_at(reg, callout_num); + CHECK_NULL_RETURN(e); + return e->start_func; +} + +extern const UChar* +onig_get_callout_tag_start(regex_t* reg, int callout_num) +{ + CalloutListEntry* e = onig_reg_callout_list_at(reg, callout_num); + CHECK_NULL_RETURN(e); + return e->tag_start; +} + +extern const UChar* +onig_get_callout_tag_end(regex_t* reg, int callout_num) +{ + CalloutListEntry* e = onig_reg_callout_list_at(reg, callout_num); + CHECK_NULL_RETURN(e); + return e->tag_end; +} + + +extern OnigCalloutType +onig_get_callout_type_by_name_id(int name_id) +{ + if (name_id < 0 || name_id >= GlobalCalloutNameList->n) + return 0; + + return GlobalCalloutNameList->v[name_id].type; +} + +extern OnigCalloutFunc +onig_get_callout_start_func_by_name_id(int name_id) +{ + if (name_id < 0 || name_id >= GlobalCalloutNameList->n) + return 0; + + return GlobalCalloutNameList->v[name_id].start_func; +} + +extern OnigCalloutFunc +onig_get_callout_end_func_by_name_id(int name_id) +{ + if (name_id < 0 || name_id >= GlobalCalloutNameList->n) + return 0; + + return GlobalCalloutNameList->v[name_id].end_func; +} + +extern int +onig_get_callout_in_by_name_id(int name_id) +{ + if (name_id < 0 || name_id >= GlobalCalloutNameList->n) + return 0; + + return GlobalCalloutNameList->v[name_id].in; +} + +static int +get_callout_arg_num_by_name_id(int name_id) +{ + return GlobalCalloutNameList->v[name_id].arg_num; +} + +static int +get_callout_opt_arg_num_by_name_id(int name_id) +{ + return GlobalCalloutNameList->v[name_id].opt_arg_num; +} + +static unsigned int +get_callout_arg_type_by_name_id(int name_id, int index) +{ + return GlobalCalloutNameList->v[name_id].arg_types[index]; +} + +static OnigValue +get_callout_opt_default_by_name_id(int name_id, int index) +{ + return GlobalCalloutNameList->v[name_id].opt_defaults[index]; +} + +extern UChar* +onig_get_callout_name_by_name_id(int name_id) +{ + if (name_id < 0 || name_id >= GlobalCalloutNameList->n) + return 0; + + return GlobalCalloutNameList->v[name_id].name; +} + +extern int +onig_global_callout_names_free(void) +{ + free_callout_func_list(GlobalCalloutNameList); + GlobalCalloutNameList = 0; + + global_callout_name_table_free(); + return ONIG_NORMAL; +} + + +typedef st_table CalloutTagTable; +typedef intptr_t CalloutTagVal; + +#define CALLOUT_TAG_LIST_FLAG_TAG_EXIST (1<<0) + +static int +i_callout_callout_list_set(st_data_t key ARG_UNUSED, st_data_t ae, st_data_t arg) +{ + int num; + CalloutTagVal e; + RegexExt* ext; + + e = (CalloutTagVal )ae; + ext = (RegexExt* )arg; + + num = (int )e - 1; + ext->callout_list[num].flag |= CALLOUT_TAG_LIST_FLAG_TAG_EXIST; + return ST_CONTINUE; +} + +static int +setup_ext_callout_list_values(regex_t* reg) +{ + int i, j; + RegexExt* ext; + + ext = reg->extp; + if (IS_NOT_NULL(ext->tag_table)) { + onig_st_foreach((CalloutTagTable *)ext->tag_table, i_callout_callout_list_set, + (st_data_t )ext); + } + + for (i = 0; i < ext->callout_num; i++) { + CalloutListEntry* e = ext->callout_list + i; + if (e->of == ONIG_CALLOUT_OF_NAME) { + for (j = 0; j < e->u.arg.num; j++) { + if (e->u.arg.types[j] == ONIG_TYPE_TAG) { + UChar* start; + UChar* end; + int num; + start = e->u.arg.vals[j].s.start; + end = e->u.arg.vals[j].s.end; + num = onig_get_callout_num_by_tag(reg, start, end); + if (num < 0) return num; + e->u.arg.vals[j].tag = num; + } + } + } + } + + return ONIG_NORMAL; +} + +extern int +onig_callout_tag_is_exist_at_callout_num(regex_t* reg, int callout_num) +{ + RegexExt* ext = reg->extp; + + if (IS_NULL(ext) || IS_NULL(ext->callout_list)) return 0; + if (callout_num > ext->callout_num) return 0; + + return (ext->callout_list[callout_num].flag & + CALLOUT_TAG_LIST_FLAG_TAG_EXIST) != 0; +} + +static int +i_free_callout_tag_entry(st_data_t akey, st_data_t e ARG_UNUSED, st_data_t arg ARG_UNUSED) +{ + UChar* key; + + key = (UChar* )akey; + xfree(key); + return ST_DELETE; +} + +static int +callout_tag_table_clear(CalloutTagTable* t) +{ + if (IS_NOT_NULL(t)) { + onig_st_foreach(t, i_free_callout_tag_entry, 0); + } + return 0; +} + +extern int +onig_callout_tag_table_free(void* table) +{ + CalloutTagTable* t = (CalloutTagTable* )table; + + if (IS_NOT_NULL(t)) { + int r = callout_tag_table_clear(t); + if (r != 0) return r; + + onig_st_free_table(t); + } + + return 0; +} + +extern int +onig_get_callout_num_by_tag(regex_t* reg, + const UChar* tag, const UChar* tag_end) +{ + int r; + RegexExt* ext; + CalloutTagVal e; + + ext = reg->extp; + if (IS_NULL(ext) || IS_NULL(ext->tag_table)) + return ONIGERR_INVALID_CALLOUT_TAG_NAME; + + r = onig_st_lookup_strend(ext->tag_table, tag, tag_end, + (HashDataType* )((void* )(&e))); + if (r == 0) return ONIGERR_INVALID_CALLOUT_TAG_NAME; + return (int )e; +} + +static CalloutTagVal +callout_tag_find(CalloutTagTable* t, const UChar* name, const UChar* name_end) +{ + CalloutTagVal e; + + e = -1; + if (IS_NOT_NULL(t)) { + onig_st_lookup_strend(t, name, name_end, (HashDataType* )((void* )(&e))); + } + return e; +} + +static int +callout_tag_table_new(CalloutTagTable** rt) +{ + CalloutTagTable* t; + + *rt = 0; + t = onig_st_init_strend_table_with_size(INIT_TAG_NAMES_ALLOC_NUM); + CHECK_NULL_RETURN_MEMERR(t); + + *rt = t; + return ONIG_NORMAL; +} + +static int +callout_tag_entry_raw(ParseEnv* env, CalloutTagTable* t, UChar* name, + UChar* name_end, CalloutTagVal entry_val) +{ + int r; + CalloutTagVal val; + + if (name_end - name <= 0) + return ONIGERR_INVALID_CALLOUT_TAG_NAME; + + val = callout_tag_find(t, name, name_end); + if (val >= 0) { + onig_scan_env_set_error_string(env, ONIGERR_MULTIPLEX_DEFINED_NAME, + name, name_end); + return ONIGERR_MULTIPLEX_DEFINED_NAME; + } + + r = onig_st_insert_strend(t, name, name_end, (HashDataType )entry_val); + if (r < 0) return r; + + return ONIG_NORMAL; +} + +static int +ext_ensure_tag_table(regex_t* reg) +{ + int r; + RegexExt* ext; + CalloutTagTable* t; + + ext = onig_get_regex_ext(reg); + CHECK_NULL_RETURN_MEMERR(ext); + + if (IS_NULL(ext->tag_table)) { + r = callout_tag_table_new(&t); + if (r != ONIG_NORMAL) return r; + + ext->tag_table = t; + } + + return ONIG_NORMAL; +} + +static int +callout_tag_entry(ParseEnv* env, regex_t* reg, UChar* name, UChar* name_end, + CalloutTagVal entry_val) +{ + int r; + RegexExt* ext; + CalloutListEntry* e; + + r = ext_ensure_tag_table(reg); + if (r != ONIG_NORMAL) return r; + + ext = onig_get_regex_ext(reg); + CHECK_NULL_RETURN_MEMERR(ext); + r = callout_tag_entry_raw(env, ext->tag_table, name, name_end, entry_val); + + e = onig_reg_callout_list_at(reg, (int )entry_val); + CHECK_NULL_RETURN_MEMERR(e); + e->tag_start = name; + e->tag_end = name_end; + + return r; +} + +#endif /* USE_CALLOUT */ + + +#define INIT_PARSEENV_MEMENV_ALLOC_SIZE 16 + +static void +scan_env_clear(ParseEnv* env) +{ + MEM_STATUS_CLEAR(env->cap_history); + MEM_STATUS_CLEAR(env->backtrack_mem); + MEM_STATUS_CLEAR(env->backrefed_mem); + env->error = (UChar* )NULL; + env->error_end = (UChar* )NULL; + env->num_call = 0; + +#ifdef USE_CALL + env->unset_addr_list = NULL; +#endif + + env->num_mem = 0; + env->num_named = 0; + env->mem_alloc = 0; + env->mem_env_dynamic = (MemEnv* )NULL; + + xmemset(env->mem_env_static, 0, sizeof(env->mem_env_static)); + + env->parse_depth = 0; +#ifdef ONIG_DEBUG_PARSE + env->max_parse_depth = 0; +#endif + env->backref_num = 0; + env->keep_num = 0; + env->id_num = 0; + env->save_alloc_num = 0; + env->saves = 0; + env->flags = 0; +} + +static int +scan_env_add_mem_entry(ParseEnv* env) +{ + int i, need, alloc; + MemEnv* p; + + need = env->num_mem + 1; + if (need > MaxCaptureNum && MaxCaptureNum != 0) + return ONIGERR_TOO_MANY_CAPTURES; + + if (need >= PARSEENV_MEMENV_SIZE) { + if (env->mem_alloc <= need) { + if (IS_NULL(env->mem_env_dynamic)) { + alloc = INIT_PARSEENV_MEMENV_ALLOC_SIZE; + p = (MemEnv* )xmalloc(sizeof(MemEnv) * alloc); + CHECK_NULL_RETURN_MEMERR(p); + xmemcpy(p, env->mem_env_static, sizeof(env->mem_env_static)); + } + else { + alloc = env->mem_alloc * 2; + p = (MemEnv* )xrealloc(env->mem_env_dynamic, sizeof(MemEnv) * alloc); + CHECK_NULL_RETURN_MEMERR(p); + } + + for (i = env->num_mem + 1; i < alloc; i++) { + p[i].mem_node = NULL_NODE; + p[i].empty_repeat_node = NULL_NODE; + } + + env->mem_env_dynamic = p; + env->mem_alloc = alloc; + } + } + + env->num_mem++; + return env->num_mem; +} + +static int +scan_env_set_mem_node(ParseEnv* env, int num, Node* node) +{ + if (env->num_mem >= num) + PARSEENV_MEMENV(env)[num].mem_node = node; + else + return ONIGERR_PARSER_BUG; + return 0; +} + +static void +node_free_body(Node* node) +{ + if (IS_NULL(node)) return ; + + switch (ND_TYPE(node)) { + case ND_STRING: + if (STR_(node)->capacity != 0 && + IS_NOT_NULL(STR_(node)->s) && STR_(node)->s != STR_(node)->buf) { + xfree(STR_(node)->s); + } + break; + + case ND_LIST: + case ND_ALT: + onig_node_free(ND_CAR(node)); + node = ND_CDR(node); + while (IS_NOT_NULL(node)) { + Node* next = ND_CDR(node); + onig_node_free(ND_CAR(node)); + xfree(node); + node = next; + } + break; + + case ND_CCLASS: + { + CClassNode* cc = CCLASS_(node); + + if (cc->mbuf) + bbuf_free(cc->mbuf); + } + break; + + case ND_BACKREF: + if (IS_NOT_NULL(BACKREF_(node)->back_dynamic)) + xfree(BACKREF_(node)->back_dynamic); + break; + + case ND_BAG: + if (ND_BODY(node)) + onig_node_free(ND_BODY(node)); + + { + BagNode* en = BAG_(node); + if (en->type == BAG_IF_ELSE) { + onig_node_free(en->te.Then); + onig_node_free(en->te.Else); + } + } + break; + + case ND_QUANT: + if (ND_BODY(node)) + onig_node_free(ND_BODY(node)); + break; + + case ND_ANCHOR: + if (ND_BODY(node)) + onig_node_free(ND_BODY(node)); + if (IS_NOT_NULL(ANCHOR_(node)->lead_node)) + onig_node_free(ANCHOR_(node)->lead_node); + break; + + case ND_CTYPE: + case ND_CALL: + case ND_GIMMICK: + break; + } +} + +extern void +onig_node_free(Node* node) +{ + if (IS_NULL(node)) return ; + +#ifdef DEBUG_ND_FREE + fprintf(stderr, "onig_node_free: %p\n", node); +#endif + + node_free_body(node); + xfree(node); +} + +static void +cons_node_free_alone(Node* node) +{ + ND_CAR(node) = 0; + ND_CDR(node) = 0; + onig_node_free(node); +} + +static Node* +node_new(void) +{ + Node* node; + + node = (Node* )xmalloc(sizeof(Node)); + CHECK_NULL_RETURN(node); + xmemset(node, 0, sizeof(*node)); + +#ifdef DEBUG_ND_FREE + fprintf(stderr, "node_new: %p\n", node); +#endif + return node; +} + +extern int +onig_node_copy(Node** rcopy, Node* from) +{ + int r; + Node* copy; + + *rcopy = NULL_NODE; + + switch (ND_TYPE(from)) { + case ND_LIST: + case ND_ALT: + case ND_ANCHOR: + /* These node's link to other nodes are processed by caller. */ + break; + case ND_STRING: + case ND_CCLASS: + case ND_CTYPE: + /* Fixed contents after copy. */ + break; + default: + /* Not supported yet. */ + return ONIGERR_TYPE_BUG; + break; + } + + copy = node_new(); + CHECK_NULL_RETURN_MEMERR(copy); + xmemcpy(copy, from, sizeof(*copy)); + + switch (ND_TYPE(copy)) { + case ND_STRING: + r = onig_node_str_set(copy, STR_(from)->s, STR_(from)->end, FALSE); + if (r != 0) { + err: + onig_node_free(copy); + return r; + } + break; + + case ND_CCLASS: + { + CClassNode *fcc, *tcc; + + fcc = CCLASS_(from); + tcc = CCLASS_(copy); + if (IS_NOT_NULL(fcc->mbuf)) { + r = bbuf_clone(&(tcc->mbuf), fcc->mbuf); + if (r != 0) goto err; + } + } + break; + + default: + break; + } + + *rcopy = copy; + return ONIG_NORMAL; +} + + +static void +initialize_cclass(CClassNode* cc) +{ + BITSET_CLEAR(cc->bs); + cc->flags = 0; + cc->mbuf = NULL; +} + +static Node* +node_new_cclass(void) +{ + Node* node = node_new(); + CHECK_NULL_RETURN(node); + + ND_SET_TYPE(node, ND_CCLASS); + initialize_cclass(CCLASS_(node)); + return node; +} + +static Node* +node_new_ctype(int type, int not, OnigOptionType options) +{ + Node* node = node_new(); + CHECK_NULL_RETURN(node); + + ND_SET_TYPE(node, ND_CTYPE); + CTYPE_(node)->ctype = type; + CTYPE_(node)->not = not; + CTYPE_(node)->ascii_mode = OPTON_IS_ASCII_MODE_CTYPE(type, options); + return node; +} + +static Node* +node_new_anychar(OnigOptionType options) +{ + Node* node; + + node = node_new_ctype(CTYPE_ANYCHAR, FALSE, options); + CHECK_NULL_RETURN(node); + + if (OPTON_MULTILINE(options)) + ND_STATUS_ADD(node, MULTILINE); + return node; +} + +static int +node_new_no_newline(Node** node, ParseEnv* env) +{ + Node* n; + + n = node_new_anychar(ONIG_OPTION_NONE); + CHECK_NULL_RETURN_MEMERR(n); + *node = n; + return 0; +} + +static int +node_new_true_anychar(Node** node) +{ + Node* n; + + n = node_new_anychar(ONIG_OPTION_MULTILINE); + CHECK_NULL_RETURN_MEMERR(n); + *node = n; + return 0; +} + +static Node* +node_new_list(Node* left, Node* right) +{ + Node* node = node_new(); + CHECK_NULL_RETURN(node); + + ND_SET_TYPE(node, ND_LIST); + ND_CAR(node) = left; + ND_CDR(node) = right; + return node; +} + +extern Node* +onig_node_new_list(Node* left, Node* right) +{ + return node_new_list(left, right); +} + +extern Node* +onig_node_new_alt(Node* left, Node* right) +{ + Node* node = node_new(); + CHECK_NULL_RETURN(node); + + ND_SET_TYPE(node, ND_ALT); + ND_CAR(node) = left; + ND_CDR(node) = right; + return node; +} + +static Node* +make_list_or_alt(NodeType type, int n, Node* ns[]) +{ + Node* r; + + if (n <= 0) return NULL_NODE; + + if (n == 1) { + r = node_new(); + CHECK_NULL_RETURN(r); + ND_SET_TYPE(r, type); + ND_CAR(r) = ns[0]; + ND_CDR(r) = NULL_NODE; + } + else { + Node* right; + + r = node_new(); + CHECK_NULL_RETURN(r); + + right = make_list_or_alt(type, n - 1, ns + 1); + if (IS_NULL(right)) { + onig_node_free(r); + return NULL_NODE; + } + + ND_SET_TYPE(r, type); + ND_CAR(r) = ns[0]; + ND_CDR(r) = right; + } + + return r; +} + +static Node* +make_list(int n, Node* ns[]) +{ + return make_list_or_alt(ND_LIST, n, ns); +} + +static Node* +make_alt(int n, Node* ns[]) +{ + return make_list_or_alt(ND_ALT, n, ns); +} + +static Node* +node_new_anchor(int type) +{ + Node* node; + + node = node_new(); + CHECK_NULL_RETURN(node); + + ND_SET_TYPE(node, ND_ANCHOR); + ANCHOR_(node)->type = type; + ANCHOR_(node)->char_min_len = 0; + ANCHOR_(node)->char_max_len = INFINITE_LEN; + ANCHOR_(node)->ascii_mode = 0; + ANCHOR_(node)->lead_node = NULL_NODE; + return node; +} + +static Node* +node_new_anchor_with_options(int type, OnigOptionType options) +{ + int ascii_mode; + Node* node; + + node = node_new_anchor(type); + CHECK_NULL_RETURN(node); + + ascii_mode = OPTON_WORD_ASCII(options) && IS_WORD_ANCHOR_TYPE(type) ? 1 : 0; + ANCHOR_(node)->ascii_mode = ascii_mode; + + if (type == ANCR_TEXT_SEGMENT_BOUNDARY || + type == ANCR_NO_TEXT_SEGMENT_BOUNDARY) { + if (OPTON_TEXT_SEGMENT_WORD(options)) + ND_STATUS_ADD(node, TEXT_SEGMENT_WORD); + } + + return node; +} + +static Node* +node_new_backref(int back_num, int* backrefs, int by_name, +#ifdef USE_BACKREF_WITH_LEVEL + int exist_level, int nest_level, +#endif + ParseEnv* env) +{ + int i; + Node* node; + + node = node_new(); + CHECK_NULL_RETURN(node); + + ND_SET_TYPE(node, ND_BACKREF); + BACKREF_(node)->back_num = back_num; + BACKREF_(node)->back_dynamic = (int* )NULL; + if (by_name != 0) + ND_STATUS_ADD(node, BY_NAME); + + if (OPTON_IGNORECASE(env->options)) + ND_STATUS_ADD(node, IGNORECASE); + +#ifdef USE_BACKREF_WITH_LEVEL + if (exist_level != 0) { + ND_STATUS_ADD(node, NEST_LEVEL); + BACKREF_(node)->nest_level = nest_level; + } +#endif + + for (i = 0; i < back_num; i++) { + if (backrefs[i] <= env->num_mem && + IS_NULL(PARSEENV_MEMENV(env)[backrefs[i]].mem_node)) { + ND_STATUS_ADD(node, RECURSION); /* /...(\1).../ */ + break; + } + } + + if (back_num <= ND_BACKREFS_SIZE) { + for (i = 0; i < back_num; i++) + BACKREF_(node)->back_static[i] = backrefs[i]; + } + else { + int* p = (int* )xmalloc(sizeof(int) * back_num); + if (IS_NULL(p)) { + onig_node_free(node); + return NULL; + } + BACKREF_(node)->back_dynamic = p; + for (i = 0; i < back_num; i++) + p[i] = backrefs[i]; + } + + env->backref_num++; + return node; +} + +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, +#endif + ParseEnv* env) +{ + Node* node; + + node = node_new_backref(back_num, backrefs, by_name, +#ifdef USE_BACKREF_WITH_LEVEL + exist_level, nest_level, +#endif + env); + CHECK_NULL_RETURN(node); + + ND_STATUS_ADD(node, CHECKER); + return node; +} + +#ifdef USE_CALL +static Node* +node_new_call(UChar* name, UChar* name_end, int gnum, int by_number) +{ + Node* node = node_new(); + CHECK_NULL_RETURN(node); + + ND_SET_TYPE(node, ND_CALL); + CALL_(node)->by_number = by_number; + CALL_(node)->name = name; + CALL_(node)->name_end = name_end; + CALL_(node)->called_gnum = gnum; + CALL_(node)->entry_count = 1; + return node; +} +#endif + +static Node* +node_new_quantifier(int lower, int upper, int by_number) +{ + Node* node = node_new(); + CHECK_NULL_RETURN(node); + + ND_SET_TYPE(node, ND_QUANT); + QUANT_(node)->lower = lower; + QUANT_(node)->upper = upper; + QUANT_(node)->greedy = 1; + QUANT_(node)->emptiness = BODY_IS_NOT_EMPTY; + QUANT_(node)->head_exact = NULL_NODE; + QUANT_(node)->next_head_exact = NULL_NODE; + QUANT_(node)->include_referred = 0; + QUANT_(node)->empty_status_mem = 0; + if (by_number != 0) + ND_STATUS_ADD(node, BY_NUMBER); + + return node; +} + +static Node* +node_new_bag(enum BagType type) +{ + Node* node = node_new(); + CHECK_NULL_RETURN(node); + + ND_SET_TYPE(node, ND_BAG); + BAG_(node)->type = type; + + switch (type) { + case BAG_MEMORY: + BAG_(node)->m.regnum = 0; + BAG_(node)->m.called_addr = -1; + BAG_(node)->m.entry_count = 1; + BAG_(node)->m.called_state = 0; + break; + + case BAG_OPTION: + BAG_(node)->o.options = 0; + break; + + case BAG_STOP_BACKTRACK: + break; + + case BAG_IF_ELSE: + BAG_(node)->te.Then = 0; + BAG_(node)->te.Else = 0; + break; + } + + BAG_(node)->opt_count = 0; + return node; +} + +extern Node* +onig_node_new_bag(enum BagType type) +{ + return node_new_bag(type); +} + +static Node* +node_new_bag_if_else(Node* cond, Node* Then, Node* Else) +{ + Node* n; + n = node_new_bag(BAG_IF_ELSE); + CHECK_NULL_RETURN(n); + + ND_BODY(n) = cond; + BAG_(n)->te.Then = Then; + BAG_(n)->te.Else = Else; + return n; +} + +static Node* +node_new_memory(int is_named) +{ + Node* node = node_new_bag(BAG_MEMORY); + CHECK_NULL_RETURN(node); + if (is_named != 0) + ND_STATUS_ADD(node, NAMED_GROUP); + + return node; +} + +static Node* +node_new_option(OnigOptionType option) +{ + Node* node = node_new_bag(BAG_OPTION); + CHECK_NULL_RETURN(node); + BAG_(node)->o.options = option; + return node; +} + +static Node* +node_new_group(Node* content) +{ + Node* node; + + node = node_new(); + CHECK_NULL_RETURN(node); + ND_SET_TYPE(node, ND_LIST); + ND_CAR(node) = content; + ND_CDR(node) = NULL_NODE; + + return node; +} + +static Node* +node_drop_group(Node* group) +{ + Node* content; + + content = ND_CAR(group); + ND_CAR(group) = NULL_NODE; + onig_node_free(group); + return content; +} + +static int +node_set_fail(Node* node) +{ + ND_SET_TYPE(node, ND_GIMMICK); + GIMMICK_(node)->type = GIMMICK_FAIL; + return ONIG_NORMAL; +} + +static int +node_new_fail(Node** node, ParseEnv* env) +{ + *node = node_new(); + CHECK_NULL_RETURN_MEMERR(*node); + + return node_set_fail(*node); +} + +extern int +onig_node_reset_fail(Node* node) +{ + node_free_body(node); + return node_set_fail(node); +} + +static int +node_new_save_gimmick(Node** node, enum SaveType save_type, ParseEnv* env) +{ + int id; + + ID_ENTRY(env, id); + + *node = node_new(); + CHECK_NULL_RETURN_MEMERR(*node); + + ND_SET_TYPE(*node, ND_GIMMICK); + GIMMICK_(*node)->id = id; + GIMMICK_(*node)->type = GIMMICK_SAVE; + GIMMICK_(*node)->detail_type = (int )save_type; + + return ONIG_NORMAL; +} + +static int +node_new_update_var_gimmick(Node** node, enum UpdateVarType update_var_type, + int id, ParseEnv* env) +{ + *node = node_new(); + CHECK_NULL_RETURN_MEMERR(*node); + + ND_SET_TYPE(*node, ND_GIMMICK); + GIMMICK_(*node)->id = id; + GIMMICK_(*node)->type = GIMMICK_UPDATE_VAR; + GIMMICK_(*node)->detail_type = (int )update_var_type; + + return ONIG_NORMAL; +} + +static int +node_new_keep(Node** node, ParseEnv* env) +{ + int r; + + r = node_new_save_gimmick(node, SAVE_KEEP, env); + if (r != 0) return r; + + env->keep_num++; + return ONIG_NORMAL; +} + +#ifdef USE_CALLOUT + +extern void +onig_free_reg_callout_list(int n, CalloutListEntry* list) +{ + int i; + int j; + + if (IS_NULL(list)) return ; + + for (i = 0; i < n; i++) { + if (list[i].of == ONIG_CALLOUT_OF_NAME) { + for (j = 0; j < list[i].u.arg.passed_num; j++) { + if (list[i].u.arg.types[j] == ONIG_TYPE_STRING) { + if (IS_NOT_NULL(list[i].u.arg.vals[j].s.start)) + xfree(list[i].u.arg.vals[j].s.start); + } + } + } + else { /* ONIG_CALLOUT_OF_CONTENTS */ + if (IS_NOT_NULL(list[i].u.content.start)) { + xfree((void* )list[i].u.content.start); + } + } + } + + xfree(list); +} + +extern CalloutListEntry* +onig_reg_callout_list_at(regex_t* reg, int num) +{ + RegexExt* ext = reg->extp; + CHECK_NULL_RETURN(ext); + + if (num <= 0 || num > ext->callout_num) + return 0; + + num--; + return ext->callout_list + num; +} + +static int +reg_callout_list_entry(ParseEnv* env, int* rnum) +{ +#define INIT_CALLOUT_LIST_NUM 3 + + int num; + CalloutListEntry* list; + CalloutListEntry* e; + RegexExt* ext; + + ext = onig_get_regex_ext(env->reg); + CHECK_NULL_RETURN_MEMERR(ext); + + if (IS_NULL(ext->callout_list)) { + list = (CalloutListEntry* )xmalloc(sizeof(*list) * INIT_CALLOUT_LIST_NUM); + CHECK_NULL_RETURN_MEMERR(list); + + ext->callout_list = list; + ext->callout_list_alloc = INIT_CALLOUT_LIST_NUM; + ext->callout_num = 0; + } + + num = ext->callout_num + 1; + if (num > ext->callout_list_alloc) { + int alloc = ext->callout_list_alloc * 2; + list = (CalloutListEntry* )xrealloc(ext->callout_list, + sizeof(CalloutListEntry) * alloc); + CHECK_NULL_RETURN_MEMERR(list); + + ext->callout_list = list; + ext->callout_list_alloc = alloc; + } + + e = ext->callout_list + (num - 1); + + e->flag = 0; + e->of = 0; + e->in = ONIG_CALLOUT_OF_CONTENTS; + e->type = 0; + e->tag_start = 0; + e->tag_end = 0; + e->start_func = 0; + e->end_func = 0; + e->u.arg.num = 0; + e->u.arg.passed_num = 0; + + ext->callout_num = num; + *rnum = num; + return ONIG_NORMAL; +} + +static int +node_new_callout(Node** node, OnigCalloutOf callout_of, int num, int id, + ParseEnv* env) +{ + *node = node_new(); + CHECK_NULL_RETURN_MEMERR(*node); + + ND_SET_TYPE(*node, ND_GIMMICK); + GIMMICK_(*node)->id = id; + GIMMICK_(*node)->num = num; + GIMMICK_(*node)->type = GIMMICK_CALLOUT; + GIMMICK_(*node)->detail_type = (int )callout_of; + + return ONIG_NORMAL; +} +#endif + +static int +make_text_segment(Node** node, ParseEnv* env) +{ + int r; + int i; + Node* x; + Node* ns[2]; + + /* \X == (?>\O(?:\Y\O)*) */ + + ns[1] = NULL_NODE; + + r = ONIGERR_MEMORY; + ns[0] = node_new_anchor_with_options(ANCR_NO_TEXT_SEGMENT_BOUNDARY, env->options); + if (IS_NULL(ns[0])) goto err; + + r = node_new_true_anychar(&ns[1]); + if (r != 0) goto err1; + + x = make_list(2, ns); + if (IS_NULL(x)) goto err; + ns[0] = x; + ns[1] = NULL_NODE; + + x = node_new_quantifier(0, INFINITE_REPEAT, TRUE); + if (IS_NULL(x)) goto err; + + ND_BODY(x) = ns[0]; + ns[0] = NULL_NODE; + ns[1] = x; + + r = node_new_true_anychar(&ns[0]); + if (r != 0) goto err1; + + x = make_list(2, ns); + if (IS_NULL(x)) goto err; + + ns[0] = x; + ns[1] = NULL_NODE; + + x = node_new_bag(BAG_STOP_BACKTRACK); + if (IS_NULL(x)) goto err; + + ND_BODY(x) = ns[0]; + + *node = x; + return ONIG_NORMAL; + + err: + r = ONIGERR_MEMORY; + err1: + for (i = 0; i < 2; i++) onig_node_free(ns[i]); + return r; +} + +static int +make_absent_engine(Node** node, int pre_save_right_id, Node* absent, + Node* step_one, int lower, int upper, int possessive, + int is_range_cutter, ParseEnv* env) +{ + int r; + int i; + int id; + Node* x; + Node* ns[4]; + + for (i = 0; i < 4; i++) ns[i] = NULL_NODE; + + ns[1] = absent; + ns[3] = step_one; /* for err */ + r = node_new_save_gimmick(&ns[0], SAVE_S, env); + if (r != 0) goto err; + + id = GIMMICK_(ns[0])->id; + r = node_new_update_var_gimmick(&ns[2], UPDATE_VAR_RIGHT_RANGE_FROM_S_STACK, + id, env); + if (r != 0) goto err; + + if (is_range_cutter != 0) + ND_STATUS_ADD(ns[2], ABSENT_WITH_SIDE_EFFECTS); + + r = node_new_fail(&ns[3], env); + if (r != 0) goto err; + + x = make_list(4, ns); + if (IS_NULL(x)) goto err0; + + ns[0] = x; + ns[1] = step_one; + ns[2] = ns[3] = NULL_NODE; + + x = make_alt(2, ns); + if (IS_NULL(x)) goto err0; + + ns[0] = x; + + x = node_new_quantifier(lower, upper, FALSE); + if (IS_NULL(x)) goto err0; + + ND_BODY(x) = ns[0]; + ns[0] = x; + + if (possessive != 0) { + x = node_new_bag(BAG_STOP_BACKTRACK); + if (IS_NULL(x)) goto err0; + + ND_BODY(x) = ns[0]; + ns[0] = x; + } + + r = node_new_update_var_gimmick(&ns[1], UPDATE_VAR_RIGHT_RANGE_FROM_STACK, + pre_save_right_id, env); + if (r != 0) goto err; + + r = node_new_fail(&ns[2], env); + if (r != 0) goto err; + + x = make_list(2, ns + 1); + if (IS_NULL(x)) goto err0; + + ns[1] = x; ns[2] = NULL_NODE; + + x = make_alt(2, ns); + if (IS_NULL(x)) goto err0; + + if (is_range_cutter != FALSE) + ND_STATUS_ADD(x, SUPER); + + *node = x; + return ONIG_NORMAL; + + err0: + r = ONIGERR_MEMORY; + err: + for (i = 0; i < 4; i++) onig_node_free(ns[i]); + return r; +} + +static int +make_absent_tail(Node** node1, Node** node2, int pre_save_right_id, + ParseEnv* env) +{ + int r; + int id; + Node* save; + Node* x; + Node* ns[2]; + + *node1 = *node2 = NULL_NODE; + save = ns[0] = ns[1] = NULL_NODE; + + r = node_new_save_gimmick(&save, SAVE_RIGHT_RANGE, env); + if (r != 0) goto err; + + id = GIMMICK_(save)->id; + r = node_new_update_var_gimmick(&ns[0], UPDATE_VAR_RIGHT_RANGE_FROM_STACK, + id, env); + if (r != 0) goto err; + + r = node_new_fail(&ns[1], env); + if (r != 0) goto err; + + x = make_list(2, ns); + if (IS_NULL(x)) goto err0; + + ns[0] = NULL_NODE; ns[1] = x; + + r = node_new_update_var_gimmick(&ns[0], UPDATE_VAR_RIGHT_RANGE_FROM_STACK, + pre_save_right_id, env); + if (r != 0) goto err; + + x = make_alt(2, ns); + if (IS_NULL(x)) goto err0; + + *node1 = save; + *node2 = x; + return ONIG_NORMAL; + + err0: + r = ONIGERR_MEMORY; + err: + onig_node_free(save); + onig_node_free(ns[0]); + onig_node_free(ns[1]); + return r; +} + +static int +make_range_clear(Node** node, ParseEnv* env) +{ + int r; + int id; + Node* save; + Node* x; + Node* ns[2]; + + *node = NULL_NODE; + save = ns[0] = ns[1] = NULL_NODE; + + r = node_new_save_gimmick(&save, SAVE_RIGHT_RANGE, env); + if (r != 0) goto err; + + id = GIMMICK_(save)->id; + r = node_new_update_var_gimmick(&ns[0], UPDATE_VAR_RIGHT_RANGE_FROM_STACK, + id, env); + if (r != 0) goto err; + + r = node_new_fail(&ns[1], env); + if (r != 0) goto err; + + x = make_list(2, ns); + if (IS_NULL(x)) goto err0; + + ns[0] = NULL_NODE; ns[1] = x; + +#define ID_NOT_USED_DONT_CARE_ME 0 + + r = node_new_update_var_gimmick(&ns[0], UPDATE_VAR_RIGHT_RANGE_INIT, + ID_NOT_USED_DONT_CARE_ME, env); + if (r != 0) goto err; + ND_STATUS_ADD(ns[0], ABSENT_WITH_SIDE_EFFECTS); + + x = make_alt(2, ns); + if (IS_NULL(x)) goto err0; + + ND_STATUS_ADD(x, SUPER); + + ns[0] = save; + ns[1] = x; + save = NULL_NODE; + x = make_list(2, ns); + if (IS_NULL(x)) goto err0; + + *node = x; + return ONIG_NORMAL; + + err0: + r = ONIGERR_MEMORY; + err: + onig_node_free(save); + onig_node_free(ns[0]); + onig_node_free(ns[1]); + return r; +} + +static int +is_simple_one_char_repeat(Node* node, Node** rquant, Node** rbody, + int* is_possessive, ParseEnv* env) +{ + Node* quant; + Node* body; + + *rquant = *rbody = 0; + *is_possessive = 0; + + if (ND_TYPE(node) == ND_QUANT) { + quant = node; + } + else { + if (ND_TYPE(node) == ND_BAG) { + BagNode* en = BAG_(node); + if (en->type == BAG_STOP_BACKTRACK) { + *is_possessive = 1; + quant = ND_BAG_BODY(en); + if (ND_TYPE(quant) != ND_QUANT) + return 0; + } + else + return 0; + } + else + return 0; + } + + if (QUANT_(quant)->greedy == 0) + return 0; + + body = ND_BODY(quant); + switch (ND_TYPE(body)) { + case ND_STRING: + { + int len; + StrNode* sn = STR_(body); + UChar *s = sn->s; + + len = 0; + while (s < sn->end) { + s += enclen(env->enc, s); + len++; + } + if (len != 1) + return 0; + } + + case ND_CCLASS: + break; + + default: + return 0; + break; + } + + if (node != quant) { + ND_BODY(node) = 0; + onig_node_free(node); + } + ND_BODY(quant) = NULL_NODE; + *rquant = quant; + *rbody = body; + return 1; +} + +static int +make_absent_tree_for_simple_one_char_repeat(Node** node, + Node* absent, Node* quant, Node* body, int possessive, ParseEnv* env) +{ + int r; + int i; + int id1; + int lower, upper; + Node* x; + Node* ns[4]; + + *node = NULL_NODE; + r = ONIGERR_MEMORY; + ns[0] = ns[1] = NULL_NODE; + ns[2] = body, ns[3] = absent; + + lower = QUANT_(quant)->lower; + upper = QUANT_(quant)->upper; + + r = node_new_save_gimmick(&ns[0], SAVE_RIGHT_RANGE, env); + if (r != 0) goto err; + + id1 = GIMMICK_(ns[0])->id; + + r = make_absent_engine(&ns[1], id1, absent, body, lower, upper, possessive, + FALSE, env); + if (r != 0) goto err; + + ns[2] = ns[3] = NULL_NODE; + + r = node_new_update_var_gimmick(&ns[2], UPDATE_VAR_RIGHT_RANGE_FROM_STACK, + id1, env); + if (r != 0) goto err; + + x = make_list(3, ns); + if (IS_NULL(x)) goto err0; + + *node = x; + return ONIG_NORMAL; + + err0: + r = ONIGERR_MEMORY; + err: + for (i = 0; i < 4; i++) onig_node_free(ns[i]); + return r; +} + +static int +make_absent_tree(Node** node, Node* absent, Node* expr, int is_range_cutter, + ParseEnv* env) +{ + int r; + int i; + int id1, id2; + int possessive; + Node* x; + Node* ns[7]; + + r = ONIGERR_MEMORY; + for (i = 0; i < 7; i++) ns[i] = NULL_NODE; + ns[4] = expr; ns[5] = absent; + + if (is_range_cutter == 0) { + Node* quant; + Node* body; + + if (expr == NULL_NODE) { + /* default expr \O* */ + quant = node_new_quantifier(0, INFINITE_REPEAT, FALSE); + if (IS_NULL(quant)) goto err0; + + r = node_new_true_anychar(&body); + if (r != 0) { + onig_node_free(quant); + goto err; + } + possessive = 0; + goto simple; + } + else { + if (is_simple_one_char_repeat(expr, &quant, &body, &possessive, env)) { + simple: + r = make_absent_tree_for_simple_one_char_repeat(node, absent, quant, + body, possessive, env); + onig_node_free(quant); + if (r != 0) { + ns[4] = NULL_NODE; + onig_node_free(body); + goto err; + } + + return ONIG_NORMAL; + } + } + } + + r = node_new_save_gimmick(&ns[0], SAVE_RIGHT_RANGE, env); + if (r != 0) goto err; + + id1 = GIMMICK_(ns[0])->id; + + r = node_new_save_gimmick(&ns[1], SAVE_S, env); + if (r != 0) goto err; + + id2 = GIMMICK_(ns[1])->id; + + r = node_new_true_anychar(&ns[3]); + if (r != 0) goto err; + + possessive = 1; + r = make_absent_engine(&ns[2], id1, absent, ns[3], 0, INFINITE_REPEAT, + possessive, is_range_cutter, env); + if (r != 0) goto err; + + ns[3] = NULL_NODE; + ns[5] = NULL_NODE; + + r = node_new_update_var_gimmick(&ns[3], UPDATE_VAR_S_FROM_STACK, id2, env); + if (r != 0) goto err; + + if (is_range_cutter != 0) { + x = make_list(4, ns); + if (IS_NULL(x)) goto err0; + } + else { + r = make_absent_tail(&ns[5], &ns[6], id1, env); + if (r != 0) goto err; + + x = make_list(7, ns); + if (IS_NULL(x)) goto err0; + } + + *node = x; + return ONIG_NORMAL; + + err0: + r = ONIGERR_MEMORY; + err: + for (i = 0; i < 7; i++) onig_node_free(ns[i]); + return r; +} + +extern int +onig_node_str_cat(Node* node, const UChar* s, const UChar* end) +{ + int addlen = (int )(end - s); + + if (addlen > 0) { + int len = (int )(STR_(node)->end - STR_(node)->s); + + if (STR_(node)->capacity > 0 || (len + addlen > ND_STRING_BUF_SIZE - 1)) { + UChar* p; + int capa = len + addlen + ND_STRING_MARGIN; + + if (capa <= STR_(node)->capacity) { + onig_strcpy(STR_(node)->s + len, s, end); + } + else { + if (STR_(node)->s == STR_(node)->buf) + p = strcat_capa_from_static(STR_(node)->s, STR_(node)->end, + s, end, capa); + else + p = strcat_capa(STR_(node)->s, STR_(node)->end, s, end, capa); + + CHECK_NULL_RETURN_MEMERR(p); + STR_(node)->s = p; + STR_(node)->capacity = capa; + } + } + else { + onig_strcpy(STR_(node)->s + len, s, end); + } + STR_(node)->end = STR_(node)->s + len + addlen; + } + + return 0; +} + +extern int +onig_node_str_set(Node* node, const UChar* s, const UChar* end, int need_free) +{ + onig_node_str_clear(node, need_free); + return onig_node_str_cat(node, s, end); +} + +static int +node_str_remove_char(Node* node, UChar c) +{ + UChar* p; + int n; + + n = 0; + p = STR_(node)->s; + while (p < STR_(node)->end) { + if (*p == c) { + UChar *q, *q1; + q = q1 = p; + q1++; + while (q1 < STR_(node)->end) { + *q = *q1; + q++; q1++; + } + n++; + STR_(node)->end--; + } + else { + p++; + } + } + + return n; +} + +static int +node_str_cat_char(Node* node, UChar c) +{ + UChar s[1]; + + s[0] = c; + return onig_node_str_cat(node, s, s + 1); +} + +extern void +onig_node_str_clear(Node* node, int need_free) +{ + if (need_free != 0 && + STR_(node)->capacity != 0 && + IS_NOT_NULL(STR_(node)->s) && STR_(node)->s != STR_(node)->buf) { + xfree(STR_(node)->s); + } + + STR_(node)->flag = 0; + STR_(node)->s = STR_(node)->buf; + STR_(node)->end = STR_(node)->buf; + STR_(node)->capacity = 0; +} + +static int +node_set_str(Node* node, const UChar* s, const UChar* end) +{ + int r; + + ND_SET_TYPE(node, ND_STRING); + STR_(node)->flag = 0; + STR_(node)->s = STR_(node)->buf; + STR_(node)->end = STR_(node)->buf; + STR_(node)->capacity = 0; + + r = onig_node_str_cat(node, s, end); + return r; +} + +static Node* +node_new_str(const UChar* s, const UChar* end) +{ + int r; + Node* node = node_new(); + CHECK_NULL_RETURN(node); + + r = node_set_str(node, s, end); + if (r != 0) { + onig_node_free(node); + return NULL; + } + + return node; +} + +static int +node_reset_str(Node* node, const UChar* s, const UChar* end) +{ + node_free_body(node); + return node_set_str(node, s, end); +} + +extern int +onig_node_reset_empty(Node* node) +{ + return node_reset_str(node, NULL, NULL); +} + +extern Node* +onig_node_new_str(const UChar* s, const UChar* end) +{ + return node_new_str(s, end); +} + +static Node* +node_new_str_with_options(const UChar* s, const UChar* end, + OnigOptionType options) +{ + Node* node; + node = node_new_str(s, end); + + if (OPTON_IGNORECASE(options)) + ND_STATUS_ADD(node, IGNORECASE); + + return node; +} + +static Node* +node_new_str_crude(UChar* s, UChar* end, OnigOptionType options) +{ + Node* node = node_new_str_with_options(s, end, options); + CHECK_NULL_RETURN(node); + ND_STRING_SET_CRUDE(node); + return node; +} + +static Node* +node_new_empty(void) +{ + return node_new_str(NULL, NULL); +} + +static Node* +node_new_str_crude_char(UChar c, OnigOptionType options) +{ + int i; + UChar p[1]; + Node* node; + + p[0] = c; + node = node_new_str_crude(p, p + 1, options); + CHECK_NULL_RETURN(node); + + /* clear buf tail */ + for (i = 1; i < ND_STRING_BUF_SIZE; i++) + STR_(node)->buf[i] = '\0'; + + return node; +} + +static Node* +str_node_split_last_char(Node* node, OnigEncoding enc) +{ + const UChar *p; + Node* rn; + StrNode* sn; + + sn = STR_(node); + rn = NULL_NODE; + if (sn->end > sn->s) { + p = onigenc_get_prev_char_head(enc, sn->s, sn->end); + if (p && p > sn->s) { /* can be split. */ + rn = node_new_str(p, sn->end); + CHECK_NULL_RETURN(rn); + + sn->end = (UChar* )p; + STR_(rn)->flag = sn->flag; + ND_STATUS(rn) = ND_STATUS(node); + } + } + + return rn; +} + +static int +str_node_can_be_split(Node* node, OnigEncoding enc) +{ + StrNode* sn = STR_(node); + if (sn->end > sn->s) { + return ((enclen(enc, sn->s) < sn->end - sn->s) ? 1 : 0); + } + return 0; +} + +static int +scan_number(UChar** src, const UChar* end, OnigEncoding enc) +{ + int num, val; + OnigCodePoint c; + UChar* p; + PFETCH_READY; + + p = *src; + num = 0; + while (! PEND) { + PFETCH(c); + if (IS_CODE_DIGIT_ASCII(enc, c)) { + val = (int )DIGITVAL(c); + if ((ONIG_INT_MAX - val) / 10 < num) + return -1; /* overflow */ + + num = num * 10 + val; + } + else { + PUNFETCH; + break; + } + } + *src = p; + return num; +} + +static int +scan_hexadecimal_number(UChar** src, UChar* end, int minlen, int maxlen, + OnigEncoding enc, OnigCodePoint* rcode) +{ + OnigCodePoint code; + OnigCodePoint c; + unsigned int val; + int n; + UChar* p; + PFETCH_READY; + + p = *src; + code = 0; + n = 0; + while (! PEND && n < maxlen) { + PFETCH(c); + if (IS_CODE_XDIGIT_ASCII(enc, c)) { + n++; + val = (unsigned int )XDIGITVAL(enc, c); + if ((UINT_MAX - val) / 16UL < code) + return ONIGERR_TOO_BIG_NUMBER; /* overflow */ + + code = (code << 4) + val; + } + else { + PUNFETCH; + break; + } + } + + if (n < minlen) + return ONIGERR_INVALID_CODE_POINT_VALUE; + + *rcode = code; + *src = p; + return ONIG_NORMAL; +} + +static int +scan_octal_number(UChar** src, UChar* end, int minlen, int maxlen, + OnigEncoding enc, OnigCodePoint* rcode) +{ + OnigCodePoint code; + OnigCodePoint c; + unsigned int val; + int n; + UChar* p; + PFETCH_READY; + + p = *src; + code = 0; + n = 0; + while (! PEND && n < maxlen) { + PFETCH(c); + if (IS_CODE_DIGIT_ASCII(enc, c) && c < '8') { + n++; + val = (unsigned int )ODIGITVAL(c); + if ((UINT_MAX - val) / 8UL < code) + return ONIGERR_TOO_BIG_NUMBER; /* overflow */ + + code = (code << 3) + val; + } + else { + PUNFETCH; + break; + } + } + + if (n < minlen) + return ONIGERR_INVALID_CODE_POINT_VALUE; + + *rcode = code; + *src = p; + return ONIG_NORMAL; +} + +static int +scan_number_of_base(UChar** src, UChar* end, int minlen, + OnigEncoding enc, OnigCodePoint* rcode, int base) +{ + int r; + + if (base == 16) + r = scan_hexadecimal_number(src, end, minlen, 8, enc, rcode); + else if (base == 8) + r = scan_octal_number(src, end, minlen, 11, enc, rcode); + else + r = ONIGERR_INVALID_CODE_POINT_VALUE; + + return r; +} + +#define IS_CODE_POINT_DIVIDE(c) ((c) == ' ' || (c) == '\n') + +enum CPS_STATE { + CPS_EMPTY = 0, + CPS_START = 1, + CPS_RANGE = 2 +}; + +static int +check_code_point_sequence_cc(UChar* p, UChar* end, int base, + OnigEncoding enc, int state) +{ + int r; + int n; + int end_digit; + OnigCodePoint code; + OnigCodePoint c; + PFETCH_READY; + + end_digit = FALSE; + n = 0; + while (! PEND) { + start: + PFETCH(c); + if (c == '}') { + end_char: + if (state == CPS_RANGE) return ONIGERR_INVALID_CODE_POINT_VALUE; + return n; + } + + if (IS_CODE_POINT_DIVIDE(c)) { + while (! PEND) { + PFETCH(c); + if (! IS_CODE_POINT_DIVIDE(c)) break; + } + if (IS_CODE_POINT_DIVIDE(c)) + return ONIGERR_INVALID_CODE_POINT_VALUE; + } + else if (c == '-') { + range: + if (state != CPS_START) return ONIGERR_INVALID_CODE_POINT_VALUE; + if (PEND) return ONIGERR_INVALID_CODE_POINT_VALUE; + end_digit = FALSE; + state = CPS_RANGE; + goto start; + } + else if (end_digit == TRUE) { + if (base == 16) { + if (IS_CODE_XDIGIT_ASCII(enc, c)) + return ONIGERR_TOO_LONG_WIDE_CHAR_VALUE; + } + else if (base == 8) { + if (IS_CODE_DIGIT_ASCII(enc, c) && c < '8') + return ONIGERR_TOO_LONG_WIDE_CHAR_VALUE; + } + + return ONIGERR_INVALID_CODE_POINT_VALUE; + } + + if (c == '}') goto end_char; + if (c == '-') goto range; + + PUNFETCH; + r = scan_number_of_base(&p, end, 1, enc, &code, base); + if (r != 0) return r; + n++; + end_digit = TRUE; + state = (state == CPS_RANGE) ? CPS_EMPTY : CPS_START; + } + + return ONIGERR_INVALID_CODE_POINT_VALUE; +} + +static int +check_code_point_sequence(UChar* p, UChar* end, int base, OnigEncoding enc) +{ + int r; + int n; + int end_digit; + OnigCodePoint code; + OnigCodePoint c; + PFETCH_READY; + + end_digit = FALSE; + n = 0; + while (! PEND) { + PFETCH(c); + if (c == '}') { + end_char: + return n; + } + + if (IS_CODE_POINT_DIVIDE(c)) { + while (! PEND) { + PFETCH(c); + if (! IS_CODE_POINT_DIVIDE(c)) break; + } + if (IS_CODE_POINT_DIVIDE(c)) + return ONIGERR_INVALID_CODE_POINT_VALUE; + } + else if (end_digit == TRUE) { + if (base == 16) { + if (IS_CODE_XDIGIT_ASCII(enc, c)) + return ONIGERR_TOO_LONG_WIDE_CHAR_VALUE; + } + else if (base == 8) { + if (IS_CODE_DIGIT_ASCII(enc, c) && c < '8') + return ONIGERR_TOO_LONG_WIDE_CHAR_VALUE; + } + + return ONIGERR_INVALID_CODE_POINT_VALUE; + } + + if (c == '}') goto end_char; + + PUNFETCH; + r = scan_number_of_base(&p, end, 1, enc, &code, base); + if (r != 0) return r; + n++; + end_digit = TRUE; + } + + return ONIGERR_INVALID_CODE_POINT_VALUE; +} + +static int +get_next_code_point(UChar** src, UChar* end, int base, OnigEncoding enc, int in_cc, OnigCodePoint* rcode) +{ + int r; + OnigCodePoint c; + UChar* p; + PFETCH_READY; + + p = *src; + while (! PEND) { + PFETCH(c); + if (! IS_CODE_POINT_DIVIDE(c)) { + if (c == '}') { + *src = p; + return 1; /* end of sequence */ + } + else if (c == '-' && in_cc == TRUE) { + *src = p; + return 2; /* range */ + } + PUNFETCH; + break; + } + else { + if (PEND) + return ONIGERR_INVALID_CODE_POINT_VALUE; + } + } + + r = scan_number_of_base(&p, end, 1, enc, rcode, base); + if (r != 0) return r; + + *src = p; + return ONIG_NORMAL; +} + + +#define BB_WRITE_CODE_POINT(bbuf,pos,code) \ + BB_WRITE(bbuf, pos, &(code), SIZE_CODE_POINT) + +/* data format: + [n][from-1][to-1][from-2][to-2] ... [from-n][to-n] + (all data size is OnigCodePoint) + */ +static int +new_code_range(BBuf** pbuf) +{ +#define INIT_MULTI_BYTE_RANGE_SIZE (SIZE_CODE_POINT * 5) + int r; + OnigCodePoint n; + BBuf* bbuf; + + bbuf = *pbuf = (BBuf* )xmalloc(sizeof(BBuf)); + CHECK_NULL_RETURN_MEMERR(bbuf); + r = BB_INIT(bbuf, INIT_MULTI_BYTE_RANGE_SIZE); + if (r != 0) { + xfree(bbuf); + *pbuf = 0; + return r; + } + + n = 0; + BB_WRITE_CODE_POINT(bbuf, 0, n); + return 0; +} + +static int +add_code_range_to_buf(BBuf** pbuf, OnigCodePoint from, OnigCodePoint to) +{ + int r, inc_n, pos; + int low, high, bound, x; + OnigCodePoint n, *data; + BBuf* bbuf; + + if (from > to) { + n = from; from = to; to = n; + } + + if (IS_NULL(*pbuf)) { + r = new_code_range(pbuf); + if (r != 0) return r; + bbuf = *pbuf; + n = 0; + } + else { + bbuf = *pbuf; + GET_CODE_POINT(n, bbuf->p); + } + data = (OnigCodePoint* )(bbuf->p); + data++; + + for (low = 0, bound = n; low < bound; ) { + x = (low + bound) >> 1; + if (from > data[x*2 + 1]) + low = x + 1; + else + bound = x; + } + + high = (to == ~((OnigCodePoint )0)) ? n : low; + for (bound = n; high < bound; ) { + x = (high + bound) >> 1; + if (to + 1 >= data[x*2]) + high = x + 1; + else + bound = x; + } + + inc_n = low + 1 - high; + if (n + inc_n > ONIG_MAX_MULTI_BYTE_RANGES_NUM) + return ONIGERR_TOO_MANY_MULTI_BYTE_RANGES; + + if (inc_n != 1) { + if (from > data[low*2]) + from = data[low*2]; + if (to < data[(high - 1)*2 + 1]) + to = data[(high - 1)*2 + 1]; + } + + if (inc_n != 0 && (OnigCodePoint )high < n) { + int from_pos = SIZE_CODE_POINT * (1 + high * 2); + int to_pos = SIZE_CODE_POINT * (1 + (low + 1) * 2); + int size = (n - high) * 2 * SIZE_CODE_POINT; + + if (inc_n > 0) { + BB_MOVE_RIGHT(bbuf, from_pos, to_pos, size); + } + else { + BB_MOVE_LEFT_REDUCE(bbuf, from_pos, to_pos); + } + } + + pos = SIZE_CODE_POINT * (1 + low * 2); + BB_ENSURE_SIZE(bbuf, pos + SIZE_CODE_POINT * 2); + BB_WRITE_CODE_POINT(bbuf, pos, from); + BB_WRITE_CODE_POINT(bbuf, pos + SIZE_CODE_POINT, to); + n += inc_n; + BB_WRITE_CODE_POINT(bbuf, 0, n); + + return 0; +} + +static int +add_code_range(BBuf** pbuf, ParseEnv* env, OnigCodePoint from, OnigCodePoint to) +{ + if (from > to) { + if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_ALLOW_EMPTY_RANGE_IN_CC)) + return 0; + else + return ONIGERR_EMPTY_RANGE_IN_CHAR_CLASS; + } + + return add_code_range_to_buf(pbuf, from, to); +} + +static int +not_code_range_buf(OnigEncoding enc, BBuf* bbuf, BBuf** pbuf) +{ + int r, i, n; + OnigCodePoint pre, from, *data, to = 0; + + *pbuf = (BBuf* )NULL; + if (IS_NULL(bbuf)) { + set_all: + return SET_ALL_MULTI_BYTE_RANGE(enc, pbuf); + } + + data = (OnigCodePoint* )(bbuf->p); + GET_CODE_POINT(n, data); + data++; + if (n <= 0) goto set_all; + + r = 0; + pre = MBCODE_START_POS(enc); + for (i = 0; i < n; i++) { + from = data[i*2]; + to = data[i*2+1]; + if (pre <= from - 1) { + r = add_code_range_to_buf(pbuf, pre, from - 1); + if (r != 0) { + bbuf_free(*pbuf); + return r; + } + } + if (to == ~((OnigCodePoint )0)) break; + pre = to + 1; + } + if (to < ~((OnigCodePoint )0)) { + r = add_code_range_to_buf(pbuf, to + 1, ~((OnigCodePoint )0)); + if (r != 0) bbuf_free(*pbuf); + } + return r; +} + +#define SWAP_BB_NOT(bbuf1, not1, bbuf2, not2) do {\ + BBuf *tbuf; \ + int tnot; \ + tnot = not1; not1 = not2; not2 = tnot; \ + tbuf = bbuf1; bbuf1 = bbuf2; bbuf2 = tbuf; \ +} while (0) + +static int +or_code_range_buf(OnigEncoding enc, BBuf* bbuf1, int not1, + BBuf* bbuf2, int not2, BBuf** pbuf) +{ + int r; + OnigCodePoint i, n1, *data1; + OnigCodePoint from, to; + + *pbuf = (BBuf* )NULL; + if (IS_NULL(bbuf1) && IS_NULL(bbuf2)) { + if (not1 != 0 || not2 != 0) + return SET_ALL_MULTI_BYTE_RANGE(enc, pbuf); + return 0; + } + + r = 0; + if (IS_NULL(bbuf2)) + SWAP_BB_NOT(bbuf1, not1, bbuf2, not2); + + if (IS_NULL(bbuf1)) { + if (not1 != 0) { + return SET_ALL_MULTI_BYTE_RANGE(enc, pbuf); + } + else { + if (not2 == 0) { + return bbuf_clone(pbuf, bbuf2); + } + else { + return not_code_range_buf(enc, bbuf2, pbuf); + } + } + } + + if (not1 != 0) + SWAP_BB_NOT(bbuf1, not1, bbuf2, not2); + + data1 = (OnigCodePoint* )(bbuf1->p); + GET_CODE_POINT(n1, data1); + data1++; + + if (not2 == 0 && not1 == 0) { /* 1 OR 2 */ + r = bbuf_clone(pbuf, bbuf2); + } + else if (not1 == 0) { /* 1 OR (not 2) */ + r = not_code_range_buf(enc, bbuf2, pbuf); + } + if (r != 0) return r; + + for (i = 0; i < n1; i++) { + from = data1[i*2]; + to = data1[i*2+1]; + r = add_code_range_to_buf(pbuf, from, to); + if (r != 0) return r; + } + return 0; +} + +static int +and_code_range1(BBuf** pbuf, OnigCodePoint from1, OnigCodePoint to1, + OnigCodePoint* data, int n) +{ + int i, r; + OnigCodePoint from2, to2; + + for (i = 0; i < n; i++) { + from2 = data[i*2]; + to2 = data[i*2+1]; + if (from2 < from1) { + if (to2 < from1) continue; + else { + from1 = to2 + 1; + } + } + else if (from2 <= to1) { + if (to2 < to1) { + if (from1 <= from2 - 1) { + r = add_code_range_to_buf(pbuf, from1, from2-1); + if (r != 0) return r; + } + from1 = to2 + 1; + } + else { + to1 = from2 - 1; + } + } + else { + from1 = from2; + } + if (from1 > to1) break; + } + if (from1 <= to1) { + r = add_code_range_to_buf(pbuf, from1, to1); + if (r != 0) return r; + } + return 0; +} + +static int +and_code_range_buf(BBuf* bbuf1, int not1, BBuf* bbuf2, int not2, BBuf** pbuf) +{ + int r; + OnigCodePoint i, j, n1, n2, *data1, *data2; + OnigCodePoint from, to, from1, to1, from2, to2; + + *pbuf = (BBuf* )NULL; + if (IS_NULL(bbuf1)) { + if (not1 != 0 && IS_NOT_NULL(bbuf2)) /* not1 != 0 -> not2 == 0 */ + return bbuf_clone(pbuf, bbuf2); + return 0; + } + else if (IS_NULL(bbuf2)) { + if (not2 != 0) + return bbuf_clone(pbuf, bbuf1); + return 0; + } + + if (not1 != 0) + SWAP_BB_NOT(bbuf1, not1, bbuf2, not2); + + data1 = (OnigCodePoint* )(bbuf1->p); + data2 = (OnigCodePoint* )(bbuf2->p); + GET_CODE_POINT(n1, data1); + GET_CODE_POINT(n2, data2); + data1++; + data2++; + + if (not2 == 0 && not1 == 0) { /* 1 AND 2 */ + for (i = 0; i < n1; i++) { + from1 = data1[i*2]; + to1 = data1[i*2+1]; + for (j = 0; j < n2; j++) { + from2 = data2[j*2]; + to2 = data2[j*2+1]; + if (from2 > to1) break; + if (to2 < from1) continue; + from = MAX(from1, from2); + to = MIN(to1, to2); + r = add_code_range_to_buf(pbuf, from, to); + if (r != 0) return r; + } + } + } + else if (not1 == 0) { /* 1 AND (not 2) */ + for (i = 0; i < n1; i++) { + from1 = data1[i*2]; + to1 = data1[i*2+1]; + r = and_code_range1(pbuf, from1, to1, data2, n2); + if (r != 0) return r; + } + } + + return 0; +} + +static int +and_cclass(CClassNode* dest, CClassNode* cc, OnigEncoding enc) +{ + int r, not1, not2; + BBuf *buf1, *buf2, *pbuf; + BitSetRef bsr1, bsr2; + BitSet bs1, bs2; + + not1 = IS_NCCLASS_NOT(dest); + bsr1 = dest->bs; + buf1 = dest->mbuf; + not2 = IS_NCCLASS_NOT(cc); + bsr2 = cc->bs; + buf2 = cc->mbuf; + + if (not1 != 0) { + bitset_invert_to(bsr1, bs1); + bsr1 = bs1; + } + if (not2 != 0) { + bitset_invert_to(bsr2, bs2); + bsr2 = bs2; + } + bitset_and(bsr1, bsr2); + if (bsr1 != dest->bs) { + bitset_copy(dest->bs, bsr1); + } + if (not1 != 0) { + bitset_invert(dest->bs); + } + + if (! ONIGENC_IS_SINGLEBYTE(enc)) { + if (not1 != 0 && not2 != 0) { + r = or_code_range_buf(enc, buf1, 0, buf2, 0, &pbuf); + } + else { + r = and_code_range_buf(buf1, not1, buf2, not2, &pbuf); + if (r == 0 && not1 != 0) { + BBuf *tbuf; + r = not_code_range_buf(enc, pbuf, &tbuf); + if (r != 0) { + bbuf_free(pbuf); + return r; + } + bbuf_free(pbuf); + pbuf = tbuf; + } + } + if (r != 0) return r; + + dest->mbuf = pbuf; + bbuf_free(buf1); + return r; + } + return 0; +} + +static int +or_cclass(CClassNode* dest, CClassNode* cc, OnigEncoding enc) +{ + int r, not1, not2; + BBuf *buf1, *buf2, *pbuf; + BitSetRef bsr1, bsr2; + BitSet bs1, bs2; + + not1 = IS_NCCLASS_NOT(dest); + bsr1 = dest->bs; + buf1 = dest->mbuf; + not2 = IS_NCCLASS_NOT(cc); + bsr2 = cc->bs; + buf2 = cc->mbuf; + + if (not1 != 0) { + bitset_invert_to(bsr1, bs1); + bsr1 = bs1; + } + if (not2 != 0) { + bitset_invert_to(bsr2, bs2); + bsr2 = bs2; + } + bitset_or(bsr1, bsr2); + if (bsr1 != dest->bs) { + bitset_copy(dest->bs, bsr1); + } + if (not1 != 0) { + bitset_invert(dest->bs); + } + + if (! ONIGENC_IS_SINGLEBYTE(enc)) { + if (not1 != 0 && not2 != 0) { + r = and_code_range_buf(buf1, 0, buf2, 0, &pbuf); + } + else { + r = or_code_range_buf(enc, buf1, not1, buf2, not2, &pbuf); + if (r == 0 && not1 != 0) { + BBuf *tbuf; + r = not_code_range_buf(enc, pbuf, &tbuf); + if (r != 0) { + bbuf_free(pbuf); + return r; + } + bbuf_free(pbuf); + pbuf = tbuf; + } + } + if (r != 0) return r; + + dest->mbuf = pbuf; + bbuf_free(buf1); + return r; + } + else + return 0; +} + +static OnigCodePoint +conv_backslash_value(OnigCodePoint c, ParseEnv* env) +{ + if (IS_SYNTAX_OP(env->syntax, ONIG_SYN_OP_ESC_CONTROL_CHARS)) { + switch (c) { + case 'n': return '\n'; + case 't': return '\t'; + case 'r': return '\r'; + case 'f': return '\f'; + case 'a': return '\007'; + case 'b': return '\010'; + case 'e': return '\033'; + case 'v': + if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_ESC_V_VTAB)) + return '\v'; + break; + + default: + break; + } + } + return c; +} + +static int +is_invalid_quantifier_target(Node* node) +{ + switch (ND_TYPE(node)) { + case ND_ANCHOR: + case ND_GIMMICK: + return 1; + break; + + case ND_BAG: + /* allow enclosed elements */ + /* return is_invalid_quantifier_target(ND_BODY(node)); */ + break; + + case ND_LIST: + do { + if (! is_invalid_quantifier_target(ND_CAR(node))) return 0; + } while (IS_NOT_NULL(node = ND_CDR(node))); + return 0; + break; + + case ND_ALT: + do { + if (is_invalid_quantifier_target(ND_CAR(node))) return 1; + } while (IS_NOT_NULL(node = ND_CDR(node))); + break; + + default: + break; + } + return 0; +} + +/* ?:0, *:1, +:2, ??:3, *?:4, +?:5 */ +static int +quantifier_type_num(QuantNode* q) +{ + if (q->greedy) { + if (q->lower == 0) { + if (q->upper == 1) return 0; + else if (IS_INFINITE_REPEAT(q->upper)) return 1; + } + else if (q->lower == 1) { + if (IS_INFINITE_REPEAT(q->upper)) return 2; + } + } + else { + if (q->lower == 0) { + if (q->upper == 1) return 3; + else if (IS_INFINITE_REPEAT(q->upper)) return 4; + } + else if (q->lower == 1) { + if (IS_INFINITE_REPEAT(q->upper)) return 5; + } + } + return -1; +} + + +enum ReduceType { + RQ_ASIS = 0, /* as is */ + RQ_DEL, /* delete parent */ + RQ_A, /* to '*' */ + RQ_P, /* to '+' */ + RQ_AQ, /* to '*?' */ + RQ_QQ, /* to '??' */ + RQ_P_QQ, /* to '+)??' */ +}; + +static enum ReduceType ReduceTypeTable[6][6] = { + {RQ_DEL, RQ_A, RQ_A, RQ_QQ, RQ_AQ, RQ_ASIS}, /* '?' */ + {RQ_DEL, RQ_DEL, RQ_DEL, RQ_P_QQ, RQ_P_QQ, RQ_DEL}, /* '*' */ + {RQ_A, RQ_A, RQ_DEL, RQ_ASIS, RQ_P_QQ, RQ_DEL}, /* '+' */ + {RQ_DEL, RQ_AQ, RQ_AQ, RQ_DEL, RQ_AQ, RQ_AQ}, /* '??' */ + {RQ_DEL, RQ_DEL, RQ_DEL, RQ_DEL, RQ_DEL, RQ_DEL}, /* '*?' */ + {RQ_ASIS, RQ_A, RQ_P, RQ_AQ, RQ_AQ, RQ_DEL} /* '+?' */ +}; + +extern int +onig_reduce_nested_quantifier(Node* pnode) +{ + int pnum, cnum; + QuantNode *p, *c; + Node* cnode; + + cnode = ND_BODY(pnode); + + p = QUANT_(pnode); + c = QUANT_(cnode); + pnum = quantifier_type_num(p); + cnum = quantifier_type_num(c); + if (pnum < 0 || cnum < 0) { + if (p->lower == p->upper && c->lower == c->upper) { + int n = onig_positive_int_multiply(p->lower, c->lower); + if (n < 0) return ONIGERR_TOO_BIG_NUMBER_FOR_REPEAT_RANGE; + + p->lower = p->upper = n; + ND_BODY(pnode) = ND_BODY(cnode); + goto remove_cnode; + } + + return 0; + } + + switch(ReduceTypeTable[cnum][pnum]) { + case RQ_DEL: + *pnode = *cnode; + goto remove_cnode; + break; + case RQ_A: + ND_BODY(pnode) = ND_BODY(cnode); + p->lower = 0; p->upper = INFINITE_REPEAT; p->greedy = 1; + goto remove_cnode; + break; + case RQ_P: + ND_BODY(pnode) = ND_BODY(cnode); + p->lower = 1; p->upper = INFINITE_REPEAT; p->greedy = 1; + goto remove_cnode; + break; + case RQ_AQ: + ND_BODY(pnode) = ND_BODY(cnode); + p->lower = 0; p->upper = INFINITE_REPEAT; p->greedy = 0; + goto remove_cnode; + break; + case RQ_QQ: + ND_BODY(pnode) = ND_BODY(cnode); + p->lower = 0; p->upper = 1; p->greedy = 0; + goto remove_cnode; + break; + case RQ_P_QQ: + p->lower = 0; p->upper = 1; p->greedy = 0; + c->lower = 1; c->upper = INFINITE_REPEAT; c->greedy = 1; + break; + case RQ_ASIS: + break; + } + + return 0; + + remove_cnode: + ND_BODY(cnode) = NULL_NODE; + onig_node_free(cnode); + return 0; +} + +static int +node_new_general_newline(Node** node, ParseEnv* env) +{ + int r; + int dlen, alen; + UChar buf[ONIGENC_CODE_TO_MBC_MAXLEN * 2]; + Node* crnl; + Node* ncc; + Node* x; + CClassNode* cc; + + dlen = ONIGENC_CODE_TO_MBC(env->enc, 0x0d, buf); + if (dlen < 0) return dlen; + alen = ONIGENC_CODE_TO_MBC(env->enc, NEWLINE_CODE, buf + dlen); + if (alen < 0) return alen; + + crnl = node_new_str_crude(buf, buf + dlen + alen, ONIG_OPTION_NONE); + CHECK_NULL_RETURN_MEMERR(crnl); + + ncc = node_new_cclass(); + if (IS_NULL(ncc)) goto err2; + + cc = CCLASS_(ncc); + if (dlen == 1) { + bitset_set_range(cc->bs, NEWLINE_CODE, 0x0d); + } + else { + r = add_code_range(&(cc->mbuf), env, NEWLINE_CODE, 0x0d); + if (r != 0) { + err1: + onig_node_free(ncc); + err2: + onig_node_free(crnl); + return ONIGERR_MEMORY; + } + } + + if (ONIGENC_IS_UNICODE_ENCODING(env->enc)) { + r = add_code_range(&(cc->mbuf), env, 0x85, 0x85); + if (r != 0) goto err1; + r = add_code_range(&(cc->mbuf), env, 0x2028, 0x2029); + if (r != 0) goto err1; + } + + x = node_new_bag_if_else(crnl, NULL_NODE, ncc); + if (IS_NULL(x)) goto err1; + + *node = x; + return 0; +} + +enum TokenSyms { + TK_EOT = 0, /* end of token */ + TK_CRUDE_BYTE, + TK_CHAR, + TK_STRING, + TK_CODE_POINT, + TK_ANYCHAR, + TK_CHAR_TYPE, + TK_BACKREF, + TK_CALL, + TK_ANCHOR, + TK_REPEAT, + TK_INTERVAL, + TK_ANYCHAR_ANYTIME, /* SQL '%' == .* */ + TK_ALT, + TK_SUBEXP_OPEN, + TK_SUBEXP_CLOSE, + TK_OPEN_CC, + TK_QUOTE_OPEN, + TK_CHAR_PROPERTY, /* \p{...}, \P{...} */ + TK_KEEP, /* \K */ + TK_GENERAL_NEWLINE, /* \R */ + TK_NO_NEWLINE, /* \N */ + TK_TRUE_ANYCHAR, /* \O */ + TK_TEXT_SEGMENT, /* \X */ + + /* in cc */ + TK_CC_CLOSE, + TK_CC_RANGE, + TK_CC_POSIX_BRACKET_OPEN, + TK_CC_AND, /* && */ + TK_CC_OPEN_CC /* [ */ +}; + +typedef struct { + enum TokenSyms type; + int code_point_continue; + int escaped; + int base_num; /* is number: 8, 16 (used in [....]) */ + UChar* backp; + union { + UChar* s; + UChar byte; + OnigCodePoint code; + int anchor; + int subtype; + struct { + int lower; + int upper; + int greedy; + int possessive; + } repeat; + struct { + int num; + int ref1; + int* refs; + int by_name; +#ifdef USE_BACKREF_WITH_LEVEL + int exist_level; + int level; /* \k */ +#endif + } backref; + struct { + UChar* name; + UChar* name_end; + int gnum; + int by_number; + } call; + struct { + int ctype; + int not; + } prop; + } u; +} PToken; + +static void +ptoken_init(PToken* tok) +{ + tok->code_point_continue = 0; +} + +static int +fetch_interval(UChar** src, UChar* end, PToken* tok, ParseEnv* env) +{ + int low, up, syn_allow, non_low; + int r; + OnigCodePoint c; + OnigEncoding enc; + UChar* p; + PFETCH_READY; + + p = *src; + r = 0; + non_low = 0; + enc = env->enc; + syn_allow = IS_SYNTAX_BV(env->syntax, ONIG_SYN_ALLOW_INVALID_INTERVAL); + + if (PEND) { + if (syn_allow) + return 1; /* "....{" : OK! */ + else + return ONIGERR_END_PATTERN_AT_LEFT_BRACE; /* "....{" syntax error */ + } + + if (! syn_allow) { + c = PPEEK; + if (c == ')' || c == '(' || c == '|') { + return ONIGERR_END_PATTERN_AT_LEFT_BRACE; + } + } + + low = scan_number(&p, end, env->enc); + if (low < 0) return ONIGERR_TOO_BIG_NUMBER_FOR_REPEAT_RANGE; + if (low > ONIG_MAX_REPEAT_NUM) + return ONIGERR_TOO_BIG_NUMBER_FOR_REPEAT_RANGE; + + if (p == *src) { /* can't read low */ + if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_ALLOW_INTERVAL_LOW_ABBREV)) { + /* allow {,n} as {0,n} */ + low = 0; + non_low = 1; + } + else + goto invalid; + } + + if (PEND) goto invalid; + PFETCH(c); + if (c == ',') { + UChar* prev = p; + up = scan_number(&p, end, env->enc); + if (up < 0) return ONIGERR_TOO_BIG_NUMBER_FOR_REPEAT_RANGE; + if (up > ONIG_MAX_REPEAT_NUM) + return ONIGERR_TOO_BIG_NUMBER_FOR_REPEAT_RANGE; + + if (p == prev) { + if (non_low != 0) + goto invalid; + up = INFINITE_REPEAT; /* {n,} : {n,infinite} */ + } + } + else { + if (non_low != 0) + goto invalid; + + PUNFETCH; + up = low; /* {n} : exact n times */ + r = 2; /* fixed */ + } + + if (PEND) goto invalid; + PFETCH(c); + if (IS_SYNTAX_OP(env->syntax, ONIG_SYN_OP_ESC_BRACE_INTERVAL)) { + if (c != MC_ESC(env->syntax) || PEND) goto invalid; + PFETCH(c); + } + if (c != '}') goto invalid; + + if (!IS_INFINITE_REPEAT(up) && low > up) { + /* {n,m}+ supported case */ + if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_PLUS_POSSESSIVE_INTERVAL)) + return ONIGERR_UPPER_SMALLER_THAN_LOWER_IN_REPEAT_RANGE; + + tok->u.repeat.possessive = 1; + { + int tmp; + tmp = low; low = up; up = tmp; + } + } + else + tok->u.repeat.possessive = 0; + + tok->type = TK_INTERVAL; + tok->u.repeat.lower = low; + tok->u.repeat.upper = up; + *src = p; + return r; /* 0: normal {n,m}, 2: fixed {n} */ + + invalid: + if (syn_allow) { + /* *src = p; */ /* !!! Don't do this line !!! */ + return 1; /* OK */ + } + else + return ONIGERR_INVALID_REPEAT_RANGE_PATTERN; +} + +/* \M-, \C-, \c, or \... */ +static int +fetch_escaped_value_raw(UChar** src, UChar* end, ParseEnv* env, + OnigCodePoint* val) +{ + int v; + OnigCodePoint c; + OnigEncoding enc = env->enc; + UChar* p = *src; + + if (PEND) return ONIGERR_END_PATTERN_AT_ESCAPE; + + PFETCH_S(c); + switch (c) { + case 'M': + if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_ESC_CAPITAL_M_BAR_META)) { + if (PEND) return ONIGERR_END_PATTERN_AT_META; + PFETCH_S(c); + if (c != '-') return ONIGERR_META_CODE_SYNTAX; + if (PEND) return ONIGERR_END_PATTERN_AT_META; + PFETCH_S(c); + if (c == MC_ESC(env->syntax)) { + v = fetch_escaped_value_raw(&p, end, env, &c); + if (v < 0) return v; + } + c = ((c & 0xff) | 0x80); + } + else + goto backslash; + break; + + case 'C': + if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_ESC_CAPITAL_C_BAR_CONTROL)) { + if (PEND) return ONIGERR_END_PATTERN_AT_CONTROL; + PFETCH_S(c); + if (c != '-') return ONIGERR_CONTROL_CODE_SYNTAX; + goto control; + } + else + goto backslash; + + case 'c': + if (IS_SYNTAX_OP(env->syntax, ONIG_SYN_OP_ESC_C_CONTROL)) { + control: + if (PEND) return ONIGERR_END_PATTERN_AT_CONTROL; + PFETCH_S(c); + if (c == '?') { + c = 0177; + } + else { + if (c == MC_ESC(env->syntax)) { + v = fetch_escaped_value_raw(&p, end, env, &c); + if (v < 0) return v; + } + c &= 0x9f; + } + break; + } + /* fall through */ + + default: + { + backslash: + c = conv_backslash_value(c, env); + } + break; + } + + *src = p; + *val = c; + return 0; +} + +static int +fetch_escaped_value(UChar** src, UChar* end, ParseEnv* env, OnigCodePoint* val) +{ + int r; + int len; + + r = fetch_escaped_value_raw(src, end, env, val); + if (r != 0) return r; + + len = ONIGENC_CODE_TO_MBCLEN(env->enc, *val); + if (len < 0) return len; + + return 0; +} + +static int fetch_token(PToken* tok, UChar** src, UChar* end, ParseEnv* env); + +static OnigCodePoint +get_name_end_code_point(OnigCodePoint start) +{ + switch (start) { + case '<': return (OnigCodePoint )'>'; break; + case '\'': return (OnigCodePoint )'\''; break; + case '(': return (OnigCodePoint )')'; break; + default: + break; + } + + return (OnigCodePoint )0; +} + +enum REF_NUM { + IS_NOT_NUM = 0, + IS_ABS_NUM = 1, + IS_REL_NUM = 2 +}; + +#ifdef USE_BACKREF_WITH_LEVEL +/* + \k, \k + \k, \k + \k<-num+n>, \k<-num-n> + \k<+num+n>, \k<+num-n> +*/ +static int +fetch_name_with_level(OnigCodePoint start_code, UChar** src, UChar* end, + UChar** rname_end, ParseEnv* env, + int* rback_num, int* rlevel, enum REF_NUM* num_type) +{ + int r, sign, exist_level; + int digit_count; + OnigCodePoint end_code; + OnigCodePoint c; + OnigEncoding enc; + UChar *name_end; + UChar *pnum_head; + UChar *p; + PFETCH_READY; + + p = *src; + c = 0; + enc = env->enc; + *rback_num = 0; + exist_level = 0; + *num_type = IS_NOT_NUM; + sign = 1; + pnum_head = *src; + + end_code = get_name_end_code_point(start_code); + + *rlevel = 0; + digit_count = 0; + name_end = end; + r = 0; + if (PEND) { + return ONIGERR_EMPTY_GROUP_NAME; + } + else { + PFETCH(c); + if (c == end_code) + return ONIGERR_EMPTY_GROUP_NAME; + + if (IS_CODE_DIGIT_ASCII(enc, c)) { + *num_type = IS_ABS_NUM; + digit_count++; + } + else if (c == '-') { + *num_type = IS_REL_NUM; + sign = -1; + pnum_head = p; + } + else if (c == '+') { + *num_type = IS_REL_NUM; + sign = 1; + pnum_head = p; + } + else if (!ONIGENC_IS_CODE_WORD(enc, c)) { + r = ONIGERR_INVALID_CHAR_IN_GROUP_NAME; + } + } + + while (!PEND) { + name_end = p; + PFETCH(c); + if (c == end_code || c == ')' || c == '+' || c == '-') { + if (*num_type != IS_NOT_NUM && digit_count == 0) + r = ONIGERR_INVALID_GROUP_NAME; + break; + } + + if (*num_type != IS_NOT_NUM) { + if (IS_CODE_DIGIT_ASCII(enc, c)) { + digit_count++; + } + else { + r = ONIGERR_INVALID_GROUP_NAME; + *num_type = IS_NOT_NUM; + } + } + else if (!ONIGENC_IS_CODE_WORD(enc, c)) { + r = ONIGERR_INVALID_CHAR_IN_GROUP_NAME; + } + } + + if (r == 0 && c != end_code) { + if (c == '+' || c == '-') { + int level; + int flag = (c == '-' ? -1 : 1); + + if (PEND) { + r = ONIGERR_INVALID_CHAR_IN_GROUP_NAME; + goto end; + } + PFETCH(c); + if (! IS_CODE_DIGIT_ASCII(enc, c)) goto err; + PUNFETCH; + level = scan_number(&p, end, enc); + if (level < 0) return ONIGERR_TOO_BIG_NUMBER; + *rlevel = (level * flag); + exist_level = 1; + + if (!PEND) { + PFETCH(c); + if (c == end_code) + goto end; + } + } + + err: + name_end = end; + err2: + r = ONIGERR_INVALID_GROUP_NAME; + } + + end: + if (r == 0) { + if (*num_type != IS_NOT_NUM) { + *rback_num = scan_number(&pnum_head, name_end, enc); + if (*rback_num < 0) return ONIGERR_TOO_BIG_NUMBER; + else if (*rback_num == 0) { + if (*num_type == IS_REL_NUM) + goto err2; + } + + *rback_num *= sign; + } + + *rname_end = name_end; + *src = p; + return (exist_level ? 1 : 0); + } + else { + onig_scan_env_set_error_string(env, r, *src, name_end); + return r; + } +} +#endif /* USE_BACKREF_WITH_LEVEL */ + +/* + ref: 0 -> define name (don't allow number name) + 1 -> reference name (allow number name) +*/ +static int +fetch_name(OnigCodePoint start_code, UChar** src, UChar* end, + UChar** rname_end, ParseEnv* env, int* rback_num, + enum REF_NUM* num_type, int is_ref) +{ + int r, sign; + int digit_count; + OnigCodePoint end_code; + OnigCodePoint c = 0; + OnigEncoding enc = env->enc; + UChar *name_end; + UChar *pnum_head; + UChar *p = *src; + + *rback_num = 0; + + end_code = get_name_end_code_point(start_code); + + digit_count = 0; + name_end = end; + pnum_head = *src; + r = 0; + *num_type = IS_NOT_NUM; + sign = 1; + if (PEND) { + return ONIGERR_EMPTY_GROUP_NAME; + } + else { + PFETCH_S(c); + if (c == end_code) + return ONIGERR_EMPTY_GROUP_NAME; + + if (IS_CODE_DIGIT_ASCII(enc, c)) { + if (is_ref == TRUE) + *num_type = IS_ABS_NUM; + else { + r = ONIGERR_INVALID_GROUP_NAME; + } + digit_count++; + } + else if (c == '-') { + if (is_ref == TRUE) { + *num_type = IS_REL_NUM; + sign = -1; + pnum_head = p; + } + else { + r = ONIGERR_INVALID_GROUP_NAME; + } + } + else if (c == '+') { + if (is_ref == TRUE) { + *num_type = IS_REL_NUM; + sign = 1; + pnum_head = p; + } + else { + r = ONIGERR_INVALID_GROUP_NAME; + } + } + else if (!ONIGENC_IS_CODE_WORD(enc, c)) { + r = ONIGERR_INVALID_CHAR_IN_GROUP_NAME; + } + } + + if (r == 0) { + while (!PEND) { + name_end = p; + PFETCH_S(c); + if (c == end_code || c == ')') { + if (*num_type != IS_NOT_NUM && digit_count == 0) + r = ONIGERR_INVALID_GROUP_NAME; + break; + } + + if (*num_type != IS_NOT_NUM) { + if (IS_CODE_DIGIT_ASCII(enc, c)) { + digit_count++; + } + else { + if (!ONIGENC_IS_CODE_WORD(enc, c)) + r = ONIGERR_INVALID_CHAR_IN_GROUP_NAME; + else + r = ONIGERR_INVALID_GROUP_NAME; + + *num_type = IS_NOT_NUM; + } + } + else { + if (!ONIGENC_IS_CODE_WORD(enc, c)) { + r = ONIGERR_INVALID_CHAR_IN_GROUP_NAME; + } + } + } + + if (c != end_code) { + r = ONIGERR_INVALID_GROUP_NAME; + goto err; + } + + if (*num_type != IS_NOT_NUM) { + *rback_num = scan_number(&pnum_head, name_end, enc); + if (*rback_num < 0) return ONIGERR_TOO_BIG_NUMBER; + else if (*rback_num == 0) { + if (*num_type == IS_REL_NUM) { + r = ONIGERR_INVALID_GROUP_NAME; + goto err; + } + } + + *rback_num *= sign; + } + + *rname_end = name_end; + *src = p; + return 0; + } + else { + while (!PEND) { + name_end = p; + PFETCH_S(c); + if (c == end_code || c == ')') + break; + } + if (PEND) + name_end = end; + + err: + onig_scan_env_set_error_string(env, r, *src, name_end); + return r; + } +} + +static void +CC_ESC_WARN(ParseEnv* env, UChar *c) +{ + if (onig_warn == onig_null_warn) return ; + + if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_WARN_CC_OP_NOT_ESCAPED) && + 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, + "character class has '%s' without escape", + c); + (*onig_warn)((char* )buf); + } +} + +static void +CLOSE_BRACKET_WITHOUT_ESC_WARN(ParseEnv* env, UChar* c) +{ + if (onig_warn == onig_null_warn) return ; + + 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, + "regular expression has '%s' without escape", c); + (*onig_warn)((char* )buf); + } +} + +static UChar* +find_str_position(OnigCodePoint s[], int n, UChar* from, UChar* to, + UChar **next, OnigEncoding enc) +{ + int i; + OnigCodePoint x; + UChar *q; + UChar *p = from; + + while (p < to) { + x = ONIGENC_MBC_TO_CODE(enc, p, to); + q = p + enclen(enc, p); + if (x == s[0]) { + for (i = 1; i < n && q < to; i++) { + x = ONIGENC_MBC_TO_CODE(enc, q, to); + if (x != s[i]) break; + q += enclen(enc, q); + } + if (i >= n) { + if (IS_NOT_NULL(next)) + *next = q; + return p; + } + } + p = q; + } + return NULL_UCHARP; +} + +static int +is_head_of_bre_subexp(UChar* p, UChar* end, OnigEncoding enc, ParseEnv* env) +{ + UChar* start; + OnigCodePoint code; + + start = env->pattern; + if (p > start) { + p = onigenc_get_prev_char_head(enc, start, p); + if (p > start) { + code = ONIGENC_MBC_TO_CODE(enc, p, end); + if (code == '(' || + (code == '|' && + IS_SYNTAX_OP(env->syntax, ONIG_SYN_OP_ESC_VBAR_ALT))) { + p = onigenc_get_prev_char_head(enc, start, p); + code = ONIGENC_MBC_TO_CODE(enc, p, end); + if (IS_MC_ESC_CODE(code, env->syntax)) { + int count = 0; + while (p > start) { + p = onigenc_get_prev_char_head(enc, start, p); + code = ONIGENC_MBC_TO_CODE(enc, p, end); + if (! IS_MC_ESC_CODE(code, env->syntax)) break; + count++; + } + return (count % 2 == 0); + } + } + } + return FALSE; + } + else { + return TRUE; + } +} + +static int +is_end_of_bre_subexp(UChar* p, UChar* end, OnigEncoding enc, ParseEnv* env) +{ + OnigCodePoint code; + + if (p == end) return TRUE; + + code = ONIGENC_MBC_TO_CODE(enc, p, end); + if (IS_MC_ESC_CODE(code, env->syntax)) { + p += ONIGENC_MBC_ENC_LEN(enc, p); + if (p < end) { + code = ONIGENC_MBC_TO_CODE(enc, p, end); + if (code == ')' || + (code == '|' && + IS_SYNTAX_OP(env->syntax, ONIG_SYN_OP_ESC_VBAR_ALT))) + return TRUE; + } + } + + return FALSE; +} + +static int +is_posix_bracket_start(UChar* from, UChar* to, OnigEncoding enc) +{ + int n; + OnigCodePoint x; + UChar *p; + + n = 0; + p = from; + while (p < to) { + x = ONIGENC_MBC_TO_CODE(enc, p, to); + p += enclen(enc, p); + if (x == ':') { + if (p < to) { + x = ONIGENC_MBC_TO_CODE(enc, p, to); + if (x == ']') { + if (n == 0) return FALSE; + else return TRUE; + } + } + + return FALSE; + } + else if (x == '^' && n == 0) { + ; + } + else if (! ONIGENC_IS_CODE_ALPHA(enc, x)) { + break; + } + + n += 1; + } + + return FALSE; +} + +static int +fetch_token_cc(PToken* tok, UChar** src, UChar* end, ParseEnv* env, int state) +{ + int r; + OnigCodePoint code; + OnigCodePoint c, c2; + int mindigits, maxdigits; + OnigSyntaxType* syn; + OnigEncoding enc; + UChar* prev; + UChar* p; + PFETCH_READY; + + p = *src; + enc = env->enc; + syn = env->syntax; + if (tok->code_point_continue != 0) { + r = get_next_code_point(&p, end, tok->base_num, enc, TRUE, &code); + if (r == 1) { + tok->code_point_continue = 0; + } + else if (r == 2) { + tok->type = TK_CC_RANGE; + goto end; + } + else if (r == 0) { + tok->type = TK_CODE_POINT; + tok->u.code = code; + goto end; + } + else + return r; /* error */ + } + + if (PEND) { + tok->type = TK_EOT; + return tok->type; + } + + PFETCH(c); + tok->type = TK_CHAR; + tok->base_num = 0; + tok->u.code = c; + tok->escaped = 0; + + if (c == ']') { + tok->type = TK_CC_CLOSE; + } + else if (c == '-') { + tok->type = TK_CC_RANGE; + } + else if (c == MC_ESC(syn)) { + if (! IS_SYNTAX_BV(syn, ONIG_SYN_BACKSLASH_ESCAPE_IN_CC)) + goto end; + + if (PEND) return ONIGERR_END_PATTERN_AT_ESCAPE; + + PFETCH(c); + tok->escaped = 1; + tok->u.code = c; + switch (c) { + case 'w': + tok->type = TK_CHAR_TYPE; + tok->u.prop.ctype = ONIGENC_CTYPE_WORD; + tok->u.prop.not = 0; + break; + case 'W': + tok->type = TK_CHAR_TYPE; + tok->u.prop.ctype = ONIGENC_CTYPE_WORD; + tok->u.prop.not = 1; + break; + case 'd': + tok->type = TK_CHAR_TYPE; + tok->u.prop.ctype = ONIGENC_CTYPE_DIGIT; + tok->u.prop.not = 0; + break; + case 'D': + tok->type = TK_CHAR_TYPE; + tok->u.prop.ctype = ONIGENC_CTYPE_DIGIT; + tok->u.prop.not = 1; + break; + case 's': + tok->type = TK_CHAR_TYPE; + tok->u.prop.ctype = ONIGENC_CTYPE_SPACE; + tok->u.prop.not = 0; + break; + case 'S': + tok->type = TK_CHAR_TYPE; + tok->u.prop.ctype = ONIGENC_CTYPE_SPACE; + tok->u.prop.not = 1; + break; + case 'h': + if (! IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_H_XDIGIT)) break; + tok->type = TK_CHAR_TYPE; + tok->u.prop.ctype = ONIGENC_CTYPE_XDIGIT; + tok->u.prop.not = 0; + break; + case 'H': + if (! IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_H_XDIGIT)) break; + tok->type = TK_CHAR_TYPE; + tok->u.prop.ctype = ONIGENC_CTYPE_XDIGIT; + tok->u.prop.not = 1; + break; + + case 'p': + case 'P': + if (PEND) break; + + c2 = PPEEK; + if (c2 == '{' && + IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY)) { + PINC; + tok->type = TK_CHAR_PROPERTY; + tok->u.prop.not = c == 'P'; + + if (!PEND && IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT)) { + PFETCH(c2); + if (c2 == '^') { + tok->u.prop.not = tok->u.prop.not == 0; + } + else + PUNFETCH; + } + } + break; + + case 'o': + if (PEND) break; + + prev = p; + if (PPEEK_IS('{') && IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_O_BRACE_OCTAL)) { + PINC; + r = scan_octal_number(&p, end, 0, 11, enc, &code); + if (r < 0) return r; + if (!PEND) { + c2 = PPEEK; + if (IS_CODE_DIGIT_ASCII(enc, c2)) + return ONIGERR_TOO_LONG_WIDE_CHAR_VALUE; + } + + tok->base_num = 8; + goto brace_code_point_entry; + } + break; + + case 'x': + if (PEND) break; + + prev = p; + if (PPEEK_IS('{') && IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_X_BRACE_HEX8)) { + PINC; + r = scan_hexadecimal_number(&p, end, 0, 8, enc, &code); + if (r < 0) return r; + if (!PEND) { + c2 = PPEEK; + if (IS_CODE_XDIGIT_ASCII(enc, c2)) + return ONIGERR_TOO_LONG_WIDE_CHAR_VALUE; + } + + tok->base_num = 16; + brace_code_point_entry: + if ((p > prev + enclen(enc, prev))) { + if (PEND) return ONIGERR_INVALID_CODE_POINT_VALUE; + if (PPEEK_IS('}')) { + PINC; + } + else { + int curr_state; + + curr_state = (state == CS_RANGE) ? CPS_EMPTY : CPS_START; + r = check_code_point_sequence_cc(p, end, tok->base_num, enc, + curr_state); + if (r < 0) return r; + if (r == 0) return ONIGERR_INVALID_CODE_POINT_VALUE; + tok->code_point_continue = TRUE; + } + tok->type = TK_CODE_POINT; + tok->u.code = code; + } + else { + /* can't read nothing or invalid format */ + p = prev; + } + } + else if (IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_X_HEX2)) { + r = scan_hexadecimal_number(&p, end, 0, 2, enc, &code); + if (r < 0) return r; + if (p == prev) { /* can't read nothing. */ + code = 0; /* but, it's not error */ + } + tok->type = TK_CRUDE_BYTE; + tok->base_num = 16; + tok->u.byte = (UChar )code; + } + break; + + case 'u': + if (PEND) break; + prev = p; + if (IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_U_HEX4)) { + mindigits = maxdigits = 4; + u_hex_digits: + r = scan_hexadecimal_number(&p, end, mindigits, maxdigits, enc, &code); + if (r < 0) return r; + if (p == prev) { /* can't read nothing. */ + code = 0; /* but, it's not error */ + } + tok->type = TK_CODE_POINT; + tok->base_num = 16; + tok->u.code = code; + } + break; + + case 'U': + if (PEND) break; + prev = p; + if (IS_SYNTAX_BV(syn, ONIG_SYN_PYTHON)) { + mindigits = maxdigits = 8; + goto u_hex_digits; + } + break; + + case '0': + case '1': case '2': case '3': case '4': case '5': case '6': case '7': + if (IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_OCTAL3)) { + PUNFETCH; + prev = p; + r = scan_octal_number(&p, end, 0, 3, enc, &code); + if (r < 0) return r; + if (code >= 256) return ONIGERR_TOO_BIG_NUMBER; + if (p == prev) { /* can't read nothing. */ + code = 0; /* but, it's not error */ + } + tok->type = TK_CRUDE_BYTE; + tok->base_num = 8; + tok->u.byte = (UChar )code; + } + break; + + default: + PUNFETCH; + r = fetch_escaped_value(&p, end, env, &c2); + if (r < 0) return r; + if (tok->u.code != c2) { + tok->u.code = c2; + tok->type = TK_CODE_POINT; + } + break; + } + } + else if (c == '[') { + if (IS_SYNTAX_OP(syn, ONIG_SYN_OP_POSIX_BRACKET) && (PPEEK_IS(':'))) { + tok->backp = p; /* point at '[' is read */ + PINC; + if (is_posix_bracket_start(p, end, enc)) { + tok->type = TK_CC_POSIX_BRACKET_OPEN; + } + else { + PUNFETCH; + goto cc_in_cc; + } + } + else { + cc_in_cc: + if (IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_CCLASS_SET_OP)) { + tok->type = TK_CC_OPEN_CC; + } + else { + CC_ESC_WARN(env, (UChar* )"["); + } + } + } + else if (c == '&') { + if (IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_CCLASS_SET_OP) && + !PEND && (PPEEK_IS('&'))) { + PINC; + tok->type = TK_CC_AND; + } + } + + end: + *src = p; + return tok->type; +} + +static int +fetch_token(PToken* tok, UChar** src, UChar* end, ParseEnv* env) +{ + int r; + OnigCodePoint code; + OnigCodePoint c; + int mindigits, maxdigits; + UChar* prev; + int allow_num; + OnigEncoding enc; + OnigSyntaxType* syn; + UChar* p; + PFETCH_READY; + + enc = env->enc; + syn = env->syntax; + p = *src; + + if (tok->code_point_continue != 0) { + r = get_next_code_point(&p, end, tok->base_num, enc, FALSE, &code); + if (r == 1) { + tok->code_point_continue = 0; + } + else if (r == 0) { + tok->type = TK_CODE_POINT; + tok->u.code = code; + goto out; + } + else + return r; /* error */ + } + + start: + if (PEND) { + tok->type = TK_EOT; + return tok->type; + } + + tok->type = TK_STRING; + tok->base_num = 0; + tok->backp = p; + + PFETCH(c); + if (IS_MC_ESC_CODE(c, syn)) { + if (PEND) return ONIGERR_END_PATTERN_AT_ESCAPE; + + tok->backp = p; + PFETCH(c); + + tok->u.code = c; + tok->escaped = 1; + switch (c) { + case '*': + if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_ASTERISK_ZERO_INF)) break; + tok->type = TK_REPEAT; + tok->u.repeat.lower = 0; + tok->u.repeat.upper = INFINITE_REPEAT; + goto greedy_check; + break; + + case '+': + if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_PLUS_ONE_INF)) break; + tok->type = TK_REPEAT; + tok->u.repeat.lower = 1; + tok->u.repeat.upper = INFINITE_REPEAT; + goto greedy_check; + break; + + case '?': + if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_QMARK_ZERO_ONE)) break; + tok->type = TK_REPEAT; + tok->u.repeat.lower = 0; + tok->u.repeat.upper = 1; + greedy_check: + tok->u.repeat.possessive = 0; + greedy_check2: + if (!PEND && PPEEK_IS('?') && + IS_SYNTAX_OP(syn, ONIG_SYN_OP_QMARK_NON_GREEDY) && + tok->u.repeat.possessive == 0) { + PFETCH(c); + tok->u.repeat.greedy = 0; + tok->u.repeat.possessive = 0; + } + else { + possessive_check: + tok->u.repeat.greedy = 1; + if (!PEND && PPEEK_IS('+') && + ((IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_PLUS_POSSESSIVE_REPEAT) && + tok->type != TK_INTERVAL) || + (IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_PLUS_POSSESSIVE_INTERVAL) && + tok->type == TK_INTERVAL)) && + tok->u.repeat.possessive == 0) { + PFETCH(c); + tok->u.repeat.possessive = 1; + } + } + break; + + case '{': + if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_BRACE_INTERVAL)) break; + r = fetch_interval(&p, end, tok, env); + if (r < 0) return r; /* error */ + if (r == 0) goto greedy_check2; + else if (r == 2) { /* {n} */ + if (IS_SYNTAX_BV(syn, ONIG_SYN_FIXED_INTERVAL_IS_GREEDY_ONLY)) + goto possessive_check; + + goto greedy_check2; + } + /* r == 1 : normal char */ + break; + + case '|': + if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_VBAR_ALT)) break; + tok->type = TK_ALT; + break; + + case '(': + if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_LPAREN_SUBEXP)) break; + tok->type = TK_SUBEXP_OPEN; + break; + + case ')': + if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_LPAREN_SUBEXP)) break; + tok->type = TK_SUBEXP_CLOSE; + break; + + case 'w': + if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_W_WORD)) break; + tok->type = TK_CHAR_TYPE; + tok->u.prop.ctype = ONIGENC_CTYPE_WORD; + tok->u.prop.not = 0; + break; + + case 'W': + if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_W_WORD)) break; + tok->type = TK_CHAR_TYPE; + tok->u.prop.ctype = ONIGENC_CTYPE_WORD; + tok->u.prop.not = 1; + break; + + case 'b': + if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_B_WORD_BOUND)) break; + tok->type = TK_ANCHOR; + tok->u.anchor = ANCR_WORD_BOUNDARY; + break; + + case 'B': + if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_B_WORD_BOUND)) break; + tok->type = TK_ANCHOR; + tok->u.anchor = ANCR_NO_WORD_BOUNDARY; + break; + + case 'y': + if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP2_ESC_X_Y_TEXT_SEGMENT)) break; + tok->type = TK_ANCHOR; + tok->u.anchor = ANCR_TEXT_SEGMENT_BOUNDARY; + break; + + case 'Y': + if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP2_ESC_X_Y_TEXT_SEGMENT)) break; + tok->type = TK_ANCHOR; + tok->u.anchor = ANCR_NO_TEXT_SEGMENT_BOUNDARY; + break; + +#ifdef USE_WORD_BEGIN_END + case '<': + if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END)) break; + tok->type = TK_ANCHOR; + tok->u.anchor = ANCR_WORD_BEGIN; + break; + + case '>': + if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END)) break; + tok->type = TK_ANCHOR; + tok->u.anchor = ANCR_WORD_END; + break; +#endif + + case 's': + if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_S_WHITE_SPACE)) break; + tok->type = TK_CHAR_TYPE; + tok->u.prop.ctype = ONIGENC_CTYPE_SPACE; + tok->u.prop.not = 0; + break; + + case 'S': + if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_S_WHITE_SPACE)) break; + tok->type = TK_CHAR_TYPE; + tok->u.prop.ctype = ONIGENC_CTYPE_SPACE; + tok->u.prop.not = 1; + break; + + case 'd': + if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_D_DIGIT)) break; + tok->type = TK_CHAR_TYPE; + tok->u.prop.ctype = ONIGENC_CTYPE_DIGIT; + tok->u.prop.not = 0; + break; + + case 'D': + if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_D_DIGIT)) break; + tok->type = TK_CHAR_TYPE; + tok->u.prop.ctype = ONIGENC_CTYPE_DIGIT; + tok->u.prop.not = 1; + break; + + case 'h': + if (! IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_H_XDIGIT)) break; + tok->type = TK_CHAR_TYPE; + tok->u.prop.ctype = ONIGENC_CTYPE_XDIGIT; + tok->u.prop.not = 0; + break; + + case 'H': + if (! IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_H_XDIGIT)) break; + tok->type = TK_CHAR_TYPE; + tok->u.prop.ctype = ONIGENC_CTYPE_XDIGIT; + tok->u.prop.not = 1; + break; + + case 'K': + if (! IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_CAPITAL_K_KEEP)) break; + tok->type = TK_KEEP; + break; + + case 'R': + if (! IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_CAPITAL_R_GENERAL_NEWLINE)) break; + tok->type = TK_GENERAL_NEWLINE; + break; + + case 'N': + if (! IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_CAPITAL_N_O_SUPER_DOT)) break; + tok->type = TK_NO_NEWLINE; + break; + + case 'O': + if (! IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_CAPITAL_N_O_SUPER_DOT)) break; + tok->type = TK_TRUE_ANYCHAR; + break; + + case 'X': + if (! IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_X_Y_TEXT_SEGMENT)) break; + tok->type = TK_TEXT_SEGMENT; + break; + + case 'A': + if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_AZ_BUF_ANCHOR)) break; + begin_buf: + tok->type = TK_ANCHOR; + tok->u.subtype = ANCR_BEGIN_BUF; + break; + + case 'Z': + if (IS_SYNTAX_BV(syn, ONIG_SYN_PYTHON)) { + goto end_buf; + } + else { + if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_AZ_BUF_ANCHOR)) break; + tok->type = TK_ANCHOR; + tok->u.subtype = ANCR_SEMI_END_BUF; + } + break; + + case 'z': + if (IS_SYNTAX_BV(syn, ONIG_SYN_PYTHON)) + return ONIGERR_UNDEFINED_OPERATOR; + + if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_AZ_BUF_ANCHOR)) break; + end_buf: + tok->type = TK_ANCHOR; + tok->u.subtype = ANCR_END_BUF; + break; + + case 'G': + if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_CAPITAL_G_BEGIN_ANCHOR)) break; + tok->type = TK_ANCHOR; + tok->u.subtype = ANCR_BEGIN_POSITION; + break; + + case '`': + if (! IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_GNU_BUF_ANCHOR)) break; + goto begin_buf; + break; + + case '\'': + if (! IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_GNU_BUF_ANCHOR)) break; + goto end_buf; + break; + + case 'o': + if (PEND) break; + + prev = p; + if (PPEEK_IS('{') && IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_O_BRACE_OCTAL)) { + PINC; + r = scan_octal_number(&p, end, 0, 11, enc, &code); + if (r < 0) return r; + if (!PEND) { + if (IS_CODE_DIGIT_ASCII(enc, PPEEK)) + return ONIGERR_TOO_LONG_WIDE_CHAR_VALUE; + } + + tok->base_num = 8; + goto brace_code_point_entry; + } + break; + + case 'x': + if (PEND) break; + + prev = p; + if (PPEEK_IS('{') && IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_X_BRACE_HEX8)) { + PINC; + r = scan_hexadecimal_number(&p, end, 0, 8, enc, &code); + if (r < 0) return r; + if (!PEND) { + if (IS_CODE_XDIGIT_ASCII(enc, PPEEK)) + return ONIGERR_TOO_LONG_WIDE_CHAR_VALUE; + } + + tok->base_num = 16; + brace_code_point_entry: + if ((p > prev + enclen(enc, prev))) { + if (PEND) return ONIGERR_INVALID_CODE_POINT_VALUE; + if (PPEEK_IS('}')) { + PINC; + } + else { + r = check_code_point_sequence(p, end, tok->base_num, enc); + if (r < 0) return r; + if (r == 0) return ONIGERR_INVALID_CODE_POINT_VALUE; + tok->code_point_continue = TRUE; + } + tok->type = TK_CODE_POINT; + tok->u.code = code; + } + else { + /* can't read nothing or invalid format */ + p = prev; + } + } + else if (IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_X_HEX2)) { + r = scan_hexadecimal_number(&p, end, 0, 2, enc, &code); + if (r < 0) return r; + if (p == prev) { /* can't read nothing. */ + code = 0; /* but, it's not error */ + } + tok->type = TK_CRUDE_BYTE; + tok->base_num = 16; + tok->u.byte = (UChar )code; + } + break; + + case 'u': + if (PEND) break; + prev = p; + mindigits = maxdigits = 4; + if (IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_U_HEX4)) { + u_hex_digits: + r = scan_hexadecimal_number(&p, end, mindigits, maxdigits, enc, &code); + if (r < 0) return r; + if (p == prev) { /* can't read nothing. */ + code = 0; /* but, it's not error */ + } + tok->type = TK_CODE_POINT; + tok->base_num = 16; + tok->u.code = code; + } + break; + + case 'U': + if (PEND) break; + prev = p; + if (IS_SYNTAX_BV(syn, ONIG_SYN_PYTHON)) { + mindigits = maxdigits = 8; + goto u_hex_digits; + } + break; + + case '1': case '2': case '3': case '4': + case '5': case '6': case '7': case '8': case '9': + PUNFETCH; + prev = p; + r = scan_number(&p, end, enc); + if (r < 0 || r > ONIG_MAX_BACKREF_NUM) { + goto skip_backref; + } + + if (IS_SYNTAX_OP(syn, ONIG_SYN_OP_DECIMAL_BACKREF) && + (r <= env->num_mem || r <= 9)) { /* This spec. from GNU regex */ + if (IS_SYNTAX_BV(syn, ONIG_SYN_STRICT_CHECK_BACKREF)) { + if (r > env->num_mem || IS_NULL(PARSEENV_MEMENV(env)[r].mem_node)) + return ONIGERR_INVALID_BACKREF; + } + + tok->type = TK_BACKREF; + tok->u.backref.num = 1; + tok->u.backref.ref1 = r; + tok->u.backref.by_name = 0; +#ifdef USE_BACKREF_WITH_LEVEL + tok->u.backref.exist_level = 0; + tok->u.backref.level = 0; +#endif + break; + } + + skip_backref: + if (c == '8' || c == '9') { + /* normal char */ + p = prev; PINC; + break; + } + + p = prev; + /* fall through */ + case '0': + if (IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_OCTAL3)) { + prev = p; + r = scan_octal_number(&p, end, 0, (c == '0' ? 2:3), enc, &code); + if (r < 0 || r >= 256) return ONIGERR_TOO_BIG_NUMBER; + if (p == prev) { /* can't read nothing. */ + code = 0; /* but, it's not error */ + } + tok->type = TK_CRUDE_BYTE; + tok->base_num = 8; + tok->u.byte = (UChar )code; + } + else if (c != '0') { + PINC; + } + break; + + case 'k': + if (!PEND && IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_K_NAMED_BACKREF)) { + PFETCH(c); + if (c == '<' || c == '\'') { + UChar* name_end; + int* backs; + int back_num; + enum REF_NUM num_type; + + allow_num = 1; + + backref_start: + prev = p; + +#ifdef USE_BACKREF_WITH_LEVEL + name_end = NULL_UCHARP; /* no need. escape gcc warning. */ + r = fetch_name_with_level((OnigCodePoint )c, &p, end, &name_end, + env, &back_num, &tok->u.backref.level, &num_type); + if (r == 1) tok->u.backref.exist_level = 1; + else tok->u.backref.exist_level = 0; +#else + r = fetch_name(c, &p, end, &name_end, env, &back_num, &num_type, TRUE); +#endif + if (r < 0) return r; + + if (num_type != IS_NOT_NUM) { + if (allow_num == 0) return ONIGERR_INVALID_BACKREF; + + if (num_type == IS_REL_NUM) { + back_num = backref_rel_to_abs(back_num, env); + } + if (back_num <= 0) + return ONIGERR_INVALID_BACKREF; + + if (IS_SYNTAX_BV(syn, ONIG_SYN_STRICT_CHECK_BACKREF)) { + if (back_num > env->num_mem || + IS_NULL(PARSEENV_MEMENV(env)[back_num].mem_node)) + return ONIGERR_INVALID_BACKREF; + } + tok->type = TK_BACKREF; + tok->u.backref.by_name = 0; + tok->u.backref.num = 1; + tok->u.backref.ref1 = back_num; + } + else { + int num = name_to_group_numbers(env, prev, name_end, &backs); + if (num <= 0) { + return ONIGERR_UNDEFINED_NAME_REFERENCE; + } + if (IS_SYNTAX_BV(syn, ONIG_SYN_STRICT_CHECK_BACKREF)) { + int i; + for (i = 0; i < num; i++) { + if (backs[i] > env->num_mem || + IS_NULL(PARSEENV_MEMENV(env)[backs[i]].mem_node)) + return ONIGERR_INVALID_BACKREF; + } + } + + tok->type = TK_BACKREF; + tok->u.backref.by_name = 1; + if (num == 1) { + tok->u.backref.num = 1; + tok->u.backref.ref1 = backs[0]; + } + else { + tok->u.backref.num = num; + tok->u.backref.refs = backs; + } + } + } + else + PUNFETCH; + } + break; + +#ifdef USE_CALL + case 'g': + if (!PEND && IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_G_SUBEXP_CALL)) { + PFETCH(c); + if (c == '<' || c == '\'') { + int gnum; + UChar* name_end; + enum REF_NUM num_type; + + allow_num = 1; + + call_start: + prev = p; + r = fetch_name((OnigCodePoint )c, &p, end, &name_end, env, + &gnum, &num_type, TRUE); + if (r < 0) return r; + + if (num_type != IS_NOT_NUM) { + if (allow_num == 0) return ONIGERR_UNDEFINED_GROUP_REFERENCE; + + if (num_type == IS_REL_NUM) { + gnum = backref_rel_to_abs(gnum, env); + if (gnum < 0) { + onig_scan_env_set_error_string(env, ONIGERR_UNDEFINED_NAME_REFERENCE, + prev, name_end); + return ONIGERR_UNDEFINED_GROUP_REFERENCE; + } + } + tok->u.call.by_number = 1; + tok->u.call.gnum = gnum; + } + else { + tok->u.call.by_number = 0; + tok->u.call.gnum = 0; + } + + tok->type = TK_CALL; + tok->u.call.name = prev; + tok->u.call.name_end = name_end; + } + else + PUNFETCH; + } + break; +#endif + + case 'Q': + if (IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_CAPITAL_Q_QUOTE)) { + tok->type = TK_QUOTE_OPEN; + } + break; + + case 'p': + case 'P': + if (!PEND && PPEEK_IS('{') && + IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY)) { + PINC; + tok->type = TK_CHAR_PROPERTY; + tok->u.prop.not = c == 'P'; + + if (!PEND && + IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT)) { + PFETCH(c); + if (c == '^') { + tok->u.prop.not = tok->u.prop.not == 0; + } + else + PUNFETCH; + } + } + break; + + default: + { + OnigCodePoint c2; + + PUNFETCH; + r = fetch_escaped_value(&p, end, env, &c2); + if (r < 0) return r; + if (tok->u.code != c2) { + tok->type = TK_CODE_POINT; + tok->u.code = c2; + } + else { /* string */ + p = tok->backp + enclen(enc, tok->backp); + } + } + break; + } + } + else { + tok->u.code = c; + tok->escaped = 0; + +#ifdef USE_VARIABLE_META_CHARS + if ((c != ONIG_INEFFECTIVE_META_CHAR) && + IS_SYNTAX_OP(syn, ONIG_SYN_OP_VARIABLE_META_CHARACTERS)) { + if (c == MC_ANYCHAR(syn)) + goto any_char; + else if (c == MC_ANYTIME(syn)) + goto any_time; + else if (c == MC_ZERO_OR_ONE_TIME(syn)) + goto zero_or_one_time; + else if (c == MC_ONE_OR_MORE_TIME(syn)) + goto one_or_more_time; + else if (c == MC_ANYCHAR_ANYTIME(syn)) { + tok->type = TK_ANYCHAR_ANYTIME; + goto out; + } + } +#endif + + switch (c) { + case '.': + if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_DOT_ANYCHAR)) break; +#ifdef USE_VARIABLE_META_CHARS + any_char: +#endif + tok->type = TK_ANYCHAR; + break; + + case '*': + if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ASTERISK_ZERO_INF)) break; +#ifdef USE_VARIABLE_META_CHARS + any_time: +#endif + tok->type = TK_REPEAT; + tok->u.repeat.lower = 0; + tok->u.repeat.upper = INFINITE_REPEAT; + goto greedy_check; + break; + + case '+': + if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_PLUS_ONE_INF)) break; +#ifdef USE_VARIABLE_META_CHARS + one_or_more_time: +#endif + tok->type = TK_REPEAT; + tok->u.repeat.lower = 1; + tok->u.repeat.upper = INFINITE_REPEAT; + goto greedy_check; + break; + + case '?': + if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_QMARK_ZERO_ONE)) break; +#ifdef USE_VARIABLE_META_CHARS + zero_or_one_time: +#endif + tok->type = TK_REPEAT; + tok->u.repeat.lower = 0; + tok->u.repeat.upper = 1; + goto greedy_check; + break; + + case '{': + if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_BRACE_INTERVAL)) break; + r = fetch_interval(&p, end, tok, env); + if (r < 0) return r; /* error */ + if (r == 0) goto greedy_check2; + else if (r == 2) { /* {n} */ + if (IS_SYNTAX_BV(syn, ONIG_SYN_FIXED_INTERVAL_IS_GREEDY_ONLY)) + goto possessive_check; + + goto greedy_check2; + } + /* r == 1 : normal char */ + break; + + case '|': + if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_VBAR_ALT)) break; + tok->type = TK_ALT; + break; + + case '(': + if (!PEND && PPEEK_IS('?') && + IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_QMARK_GROUP_EFFECT)) { + prev = p; + PINC; + if (! PEND) { + c = PPEEK; + if (c == '#') { + 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; + } + } + 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, FALSE); + 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_UNDEFINED_GROUP_OPTION; + tok->u.call.name_end = p; + break; + + case '-': + case '+': + if (! PEND) { + PINC; + if (! PEND) { + c = PPEEK; + if (ONIGENC_IS_CODE_DIGIT(enc, c)) { + PUNFETCH; + goto lparen_qmark_num; + } + } + } + p = prev; + goto lparen_qmark_end2; + 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, TRUE); + 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) { + onig_scan_env_set_error_string(env, + ONIGERR_UNDEFINED_NAME_REFERENCE, name, name_end); + 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; + } + break; + } + else if (c == 'P' && + IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_QMARK_CAPITAL_P_NAME)) { + PINC; /* skip 'P' */ + if (PEND) return ONIGERR_END_PATTERN_IN_GROUP; + PFETCH(c); + allow_num = 0; + if (c == '=') { + c = '('; + goto backref_start; + } + else if (c == '>') { +#ifdef USE_CALL + c = '('; + goto call_start; +#else + return ONIGERR_UNDEFINED_OPERATOR; +#endif + } + else { + p = prev; + goto lparen_qmark_end2; + } + } + } + lparen_qmark_end: + PUNFETCH; + } + + lparen_qmark_end2: + if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_LPAREN_SUBEXP)) break; + tok->type = TK_SUBEXP_OPEN; + break; + + case ')': + if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_LPAREN_SUBEXP)) break; + tok->type = TK_SUBEXP_CLOSE; + break; + + case '^': + if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_LINE_ANCHOR)) break; + if (IS_SYNTAX_BV(syn, ONIG_SYN_BRE_ANCHOR_AT_EDGE_OF_SUBEXP)) { + if (! is_head_of_bre_subexp(PPREV, end, enc, env)) break; + } + tok->type = TK_ANCHOR; + tok->u.subtype = (OPTON_SINGLELINE(env->options) + ? ANCR_BEGIN_BUF : ANCR_BEGIN_LINE); + break; + + case '$': + if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_LINE_ANCHOR)) break; + if (IS_SYNTAX_BV(syn, ONIG_SYN_BRE_ANCHOR_AT_EDGE_OF_SUBEXP)) { + if (! is_end_of_bre_subexp(p, end, enc, env)) break; + } + tok->type = TK_ANCHOR; + tok->u.subtype = (OPTON_SINGLELINE(env->options) + ? ANCR_SEMI_END_BUF : ANCR_END_LINE); + break; + + case '[': + if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_BRACKET_CC)) break; + tok->type = TK_OPEN_CC; + break; + + case ']': + if (*src > env->pattern) /* /].../ is allowed. */ + CLOSE_BRACKET_WITHOUT_ESC_WARN(env, (UChar* )"]"); + break; + + case '#': + if (OPTON_EXTEND(env->options)) { + while (!PEND) { + PFETCH(c); + if (ONIGENC_IS_CODE_NEWLINE(enc, c)) + break; + } + goto start; + break; + } + break; + + case ' ': case '\t': case '\n': case '\r': case '\f': + if (OPTON_EXTEND(env->options)) + goto start; + break; + + default: + /* string */ + break; + } + } + + out: + *src = p; + return tok->type; +} + +static int +add_ctype_to_cc_by_range(CClassNode* cc, int ctype ARG_UNUSED, int not, + OnigEncoding enc ARG_UNUSED, OnigCodePoint sb_out, + const OnigCodePoint mbr[]) +{ + int i, r; + OnigCodePoint j; + + int n = ONIGENC_CODE_RANGE_NUM(mbr); + + if (not == 0) { + for (i = 0; i < n; i++) { + for (j = ONIGENC_CODE_RANGE_FROM(mbr, i); + j <= ONIGENC_CODE_RANGE_TO(mbr, i); j++) { + if (j >= sb_out) { + if (j > ONIGENC_CODE_RANGE_FROM(mbr, i)) { + r = add_code_range_to_buf(&(cc->mbuf), j, + ONIGENC_CODE_RANGE_TO(mbr, i)); + if (r != 0) return r; + i++; + } + + goto sb_end; + } + BITSET_SET_BIT(cc->bs, j); + } + } + + sb_end: + for ( ; i < n; i++) { + r = add_code_range_to_buf(&(cc->mbuf), + ONIGENC_CODE_RANGE_FROM(mbr, i), + ONIGENC_CODE_RANGE_TO(mbr, i)); + if (r != 0) return r; + } + } + else { + OnigCodePoint prev = 0; + + for (i = 0; i < n; i++) { + for (j = prev; j < ONIGENC_CODE_RANGE_FROM(mbr, i); j++) { + if (j >= sb_out) { + goto sb_end2; + } + BITSET_SET_BIT(cc->bs, j); + } + prev = ONIGENC_CODE_RANGE_TO(mbr, i) + 1; + } + for (j = prev; j < sb_out; j++) { + BITSET_SET_BIT(cc->bs, j); + } + + sb_end2: + prev = sb_out; + + for (i = 0; i < n; i++) { + if (prev < ONIGENC_CODE_RANGE_FROM(mbr, i)) { + r = add_code_range_to_buf(&(cc->mbuf), prev, + ONIGENC_CODE_RANGE_FROM(mbr, i) - 1); + if (r != 0) return r; + } + prev = ONIGENC_CODE_RANGE_TO(mbr, i) + 1; + if (prev == 0) goto end; + } + + r = add_code_range_to_buf(&(cc->mbuf), prev, MAX_CODE_POINT); + if (r != 0) return r; + } + + end: + return 0; +} + +static int +add_ctype_to_cc_by_range_limit(CClassNode* cc, int ctype ARG_UNUSED, int not, + OnigEncoding enc ARG_UNUSED, + OnigCodePoint sb_out, + const OnigCodePoint mbr[], OnigCodePoint limit) +{ + int i, r; + OnigCodePoint j; + OnigCodePoint from; + OnigCodePoint to; + + int n = ONIGENC_CODE_RANGE_NUM(mbr); + + if (not == 0) { + for (i = 0; i < n; i++) { + for (j = ONIGENC_CODE_RANGE_FROM(mbr, i); + j <= ONIGENC_CODE_RANGE_TO(mbr, i); j++) { + if (j > limit) goto end; + if (j >= sb_out) { + if (j > ONIGENC_CODE_RANGE_FROM(mbr, i)) { + to = ONIGENC_CODE_RANGE_TO(mbr, i); + if (to > limit) to = limit; + r = add_code_range_to_buf(&(cc->mbuf), j, to); + if (r != 0) return r; + i++; + } + + goto sb_end; + } + BITSET_SET_BIT(cc->bs, j); + } + } + + sb_end: + for ( ; i < n; i++) { + from = ONIGENC_CODE_RANGE_FROM(mbr, i); + to = ONIGENC_CODE_RANGE_TO(mbr, i); + if (from > limit) break; + if (to > limit) to = limit; + r = add_code_range_to_buf(&(cc->mbuf), from, to); + if (r != 0) return r; + } + } + else { + OnigCodePoint prev = 0; + + for (i = 0; i < n; i++) { + from = ONIGENC_CODE_RANGE_FROM(mbr, i); + if (from > limit) { + for (j = prev; j < sb_out; j++) { + BITSET_SET_BIT(cc->bs, j); + } + goto sb_end2; + } + for (j = prev; j < from; j++) { + if (j >= sb_out) goto sb_end2; + BITSET_SET_BIT(cc->bs, j); + } + prev = ONIGENC_CODE_RANGE_TO(mbr, i); + if (prev > limit) prev = limit; + prev++; + if (prev == 0) goto end; + } + for (j = prev; j < sb_out; j++) { + BITSET_SET_BIT(cc->bs, j); + } + + sb_end2: + prev = sb_out; + + for (i = 0; i < n; i++) { + from = ONIGENC_CODE_RANGE_FROM(mbr, i); + if (from > limit) goto last; + + if (prev < from) { + r = add_code_range_to_buf(&(cc->mbuf), prev, from - 1); + if (r != 0) return r; + } + prev = ONIGENC_CODE_RANGE_TO(mbr, i); + if (prev > limit) prev = limit; + prev++; + if (prev == 0) goto end; + } + + last: + r = add_code_range_to_buf(&(cc->mbuf), prev, MAX_CODE_POINT); + if (r != 0) return r; + } + + end: + return 0; +} + +static int +add_ctype_to_cc(CClassNode* cc, int ctype, int not, ParseEnv* env) +{ + int c, r; + int ascii_mode; + int is_single; + const OnigCodePoint *ranges; + OnigCodePoint limit; + OnigCodePoint sb_out; + OnigEncoding enc = env->enc; + + ascii_mode = OPTON_IS_ASCII_MODE_CTYPE(ctype, env->options); + + r = ONIGENC_GET_CTYPE_CODE_RANGE(enc, ctype, &sb_out, &ranges); + if (r == 0) { + if (ascii_mode == 0) + r = add_ctype_to_cc_by_range(cc, ctype, not, env->enc, sb_out, ranges); + else + r = add_ctype_to_cc_by_range_limit(cc, ctype, not, env->enc, sb_out, + ranges, ASCII_LIMIT); + return r; + } + else if (r != ONIG_NO_SUPPORT_CONFIG) { + return r; + } + + r = 0; + is_single = ONIGENC_IS_SINGLEBYTE(enc); + limit = ascii_mode ? ASCII_LIMIT : SINGLE_BYTE_SIZE; + + switch (ctype) { + case ONIGENC_CTYPE_ALPHA: + case ONIGENC_CTYPE_BLANK: + case ONIGENC_CTYPE_CNTRL: + case ONIGENC_CTYPE_DIGIT: + case ONIGENC_CTYPE_LOWER: + case ONIGENC_CTYPE_PUNCT: + case ONIGENC_CTYPE_SPACE: + case ONIGENC_CTYPE_UPPER: + case ONIGENC_CTYPE_XDIGIT: + case ONIGENC_CTYPE_ASCII: + case ONIGENC_CTYPE_ALNUM: + if (not != 0) { + for (c = 0; c < (int )limit; c++) { + if (is_single != 0 || ONIGENC_CODE_TO_MBCLEN(enc, c) == 1) { + if (! ONIGENC_IS_CODE_CTYPE(enc, (OnigCodePoint )c, ctype)) + BITSET_SET_BIT(cc->bs, c); + } + } + for (c = limit; c < SINGLE_BYTE_SIZE; c++) { + if (is_single != 0 || ONIGENC_CODE_TO_MBCLEN(enc, c) == 1) + BITSET_SET_BIT(cc->bs, c); + } + + if (is_single == 0) + ADD_ALL_MULTI_BYTE_RANGE(enc, cc->mbuf); + } + else { + for (c = 0; c < (int )limit; c++) { + if (is_single != 0 || ONIGENC_CODE_TO_MBCLEN(enc, c) == 1) { + if (ONIGENC_IS_CODE_CTYPE(enc, (OnigCodePoint )c, ctype)) + BITSET_SET_BIT(cc->bs, c); + } + } + } + break; + + case ONIGENC_CTYPE_GRAPH: + case ONIGENC_CTYPE_PRINT: + case ONIGENC_CTYPE_WORD: + if (not != 0) { + for (c = 0; c < (int )limit; c++) { + /* check invalid code point */ + if ((is_single != 0 || ONIGENC_CODE_TO_MBCLEN(enc, c) == 1) + && ! ONIGENC_IS_CODE_CTYPE(enc, (OnigCodePoint )c, ctype)) + BITSET_SET_BIT(cc->bs, c); + } + for (c = limit; c < SINGLE_BYTE_SIZE; c++) { + if (is_single != 0 || ONIGENC_CODE_TO_MBCLEN(enc, c) == 1) + BITSET_SET_BIT(cc->bs, c); + } + if (ascii_mode != 0 && is_single == 0) + ADD_ALL_MULTI_BYTE_RANGE(enc, cc->mbuf); + } + else { + for (c = 0; c < (int )limit; c++) { + if ((is_single != 0 || ONIGENC_CODE_TO_MBCLEN(enc, c) == 1) + && ONIGENC_IS_CODE_CTYPE(enc, (OnigCodePoint )c, ctype)) + BITSET_SET_BIT(cc->bs, c); + } + if (ascii_mode == 0 && is_single == 0) + ADD_ALL_MULTI_BYTE_RANGE(enc, cc->mbuf); + } + break; + + default: + return ONIGERR_PARSER_BUG; + break; + } + + return r; +} + +static int +prs_posix_bracket(CClassNode* cc, UChar** src, UChar* end, ParseEnv* env) +{ + static PosixBracketEntryType PBS[] = { + { (UChar* )"alnum", ONIGENC_CTYPE_ALNUM, 5 }, + { (UChar* )"alpha", ONIGENC_CTYPE_ALPHA, 5 }, + { (UChar* )"blank", ONIGENC_CTYPE_BLANK, 5 }, + { (UChar* )"cntrl", ONIGENC_CTYPE_CNTRL, 5 }, + { (UChar* )"digit", ONIGENC_CTYPE_DIGIT, 5 }, + { (UChar* )"graph", ONIGENC_CTYPE_GRAPH, 5 }, + { (UChar* )"lower", ONIGENC_CTYPE_LOWER, 5 }, + { (UChar* )"print", ONIGENC_CTYPE_PRINT, 5 }, + { (UChar* )"punct", ONIGENC_CTYPE_PUNCT, 5 }, + { (UChar* )"space", ONIGENC_CTYPE_SPACE, 5 }, + { (UChar* )"upper", ONIGENC_CTYPE_UPPER, 5 }, + { (UChar* )"xdigit", ONIGENC_CTYPE_XDIGIT, 6 }, + { (UChar* )"ascii", ONIGENC_CTYPE_ASCII, 5 }, + { (UChar* )"word", ONIGENC_CTYPE_WORD, 4 }, + { (UChar* )NULL, -1, 0 } + }; + + PosixBracketEntryType *pb; + int not, r; + OnigEncoding enc = env->enc; + UChar *p = *src; + + if (PPEEK_IS('^')) { + PINC_S; + not = 1; + } + else + not = 0; + + for (pb = PBS; IS_NOT_NULL(pb->name); pb++) { + if (onigenc_with_ascii_strncmp(enc, p, end, pb->name, pb->len) == 0) { + p = (UChar* )onigenc_step(enc, p, end, pb->len); + if (onigenc_with_ascii_strncmp(enc, p, end, (UChar* )":]", 2) != 0) + break; + + r = add_ctype_to_cc(cc, pb->ctype, not, env); + if (r != 0) return r; + + PINC_S; PINC_S; + *src = p; + return 0; + } + } + + return ONIGERR_INVALID_POSIX_BRACKET_TYPE; +} + +static int +fetch_char_property_to_ctype(UChar** src, UChar* end, ParseEnv* env) +{ + int r; + OnigCodePoint c; + OnigEncoding enc; + UChar *prev, *start, *p; + + p = *src; + enc = env->enc; + r = ONIGERR_END_PATTERN_WITH_UNMATCHED_PARENTHESIS; + start = prev = p; + + while (!PEND) { + prev = p; + PFETCH_S(c); + if (c == '}') { + r = ONIGENC_PROPERTY_NAME_TO_CTYPE(enc, start, prev); + if (r >= 0) { + *src = p; + } + else { + onig_scan_env_set_error_string(env, r, *src, prev); + } + + return r; + } + else if (c == '(' || c == ')' || c == '{' || c == '|') { + break; + } + } + + return r; +} + +static int +prs_char_property(Node** np, PToken* tok, UChar** src, UChar* end, + ParseEnv* env) +{ + int r, ctype; + CClassNode* cc; + + ctype = fetch_char_property_to_ctype(src, end, env); + if (ctype < 0) return ctype; + + if (ctype == ONIGENC_CTYPE_WORD) { + *np = node_new_ctype(ctype, tok->u.prop.not, env->options); + CHECK_NULL_RETURN_MEMERR(*np); + return 0; + } + + *np = node_new_cclass(); + CHECK_NULL_RETURN_MEMERR(*np); + cc = CCLASS_(*np); + r = add_ctype_to_cc(cc, ctype, FALSE, env); + if (r != 0) return r; + if (tok->u.prop.not != 0) NCCLASS_SET_NOT(cc); + + return 0; +} + + +static int +cc_cprop_next(CClassNode* cc, OnigCodePoint* pcode, CVAL* val, CSTATE* state, + ParseEnv* env) +{ + int r; + + if (*state == CS_RANGE) + return ONIGERR_CHAR_CLASS_VALUE_AT_END_OF_RANGE; + + if (*state == CS_VALUE) { + if (*val == CV_SB) + BITSET_SET_BIT(cc->bs, (int )(*pcode)); + else if (*val == CV_MB) { + r = add_code_range(&(cc->mbuf), env, *pcode, *pcode); + if (r < 0) return r; + } + } + + *state = CS_VALUE; + *val = CV_CPROP; + return 0; +} + +static int +cc_char_next(CClassNode* cc, OnigCodePoint *from, OnigCodePoint to, + int* from_raw, int to_raw, CVAL intype, CVAL* type, + CSTATE* state, ParseEnv* env) +{ + int r; + + switch (*state) { + case CS_VALUE: + if (*type == CV_SB) { + if (*from > 0xff) + return ONIGERR_INVALID_CODE_POINT_VALUE; + + BITSET_SET_BIT(cc->bs, (int )(*from)); + } + else if (*type == CV_MB) { + r = add_code_range(&(cc->mbuf), env, *from, *from); + if (r < 0) return r; + } + break; + + case CS_RANGE: + if (intype == *type) { + if (intype == CV_SB) { + if (*from > 0xff || to > 0xff) + return ONIGERR_INVALID_CODE_POINT_VALUE; + + if (*from > to) { + if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_ALLOW_EMPTY_RANGE_IN_CC)) + goto ccs_range_end; + else + return ONIGERR_EMPTY_RANGE_IN_CHAR_CLASS; + } + bitset_set_range(cc->bs, (int )*from, (int )to); + } + else { + r = add_code_range(&(cc->mbuf), env, *from, to); + if (r < 0) return r; + } + } + else { + if (*from > to) { + if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_ALLOW_EMPTY_RANGE_IN_CC)) + goto ccs_range_end; + else + return ONIGERR_EMPTY_RANGE_IN_CHAR_CLASS; + } + bitset_set_range(cc->bs, (int )*from, (int )(to < 0xff ? to : 0xff)); + r = add_code_range(&(cc->mbuf), env, (OnigCodePoint )*from, to); + if (r < 0) return r; + } + ccs_range_end: + *state = CS_COMPLETE; + break; + + case CS_COMPLETE: + case CS_START: + *state = CS_VALUE; + break; + + default: + break; + } + + *from_raw = to_raw; + *from = to; + *type = intype; + return 0; +} + +static int +code_exist_check(OnigCodePoint c, UChar* from, UChar* end, int ignore_escaped, + ParseEnv* env) +{ + int in_esc; + OnigCodePoint code; + OnigEncoding enc = env->enc; + UChar* p = from; + + in_esc = 0; + while (! PEND) { + if (ignore_escaped && in_esc) { + in_esc = 0; + } + else { + PFETCH_S(code); + if (code == c) return 1; + if (code == MC_ESC(env->syntax)) in_esc = 1; + } + } + return 0; +} + +static int +prs_cc(Node** np, PToken* tok, UChar** src, UChar* end, ParseEnv* env) +{ + int r, neg, len, fetched, and_start; + OnigCodePoint in_code, curr_code; + UChar *p; + Node* node; + CClassNode *cc, *prev_cc; + CClassNode work_cc; + int curr_raw, in_raw; + CSTATE state; + CVAL in_type; + CVAL curr_type; + + *np = NULL_NODE; + INC_PARSE_DEPTH(env->parse_depth); + + state = CS_START; + prev_cc = (CClassNode* )NULL; + r = fetch_token_cc(tok, src, end, env, state); + if (r == TK_CHAR && tok->u.code == (OnigCodePoint )'^' && tok->escaped == 0) { + neg = 1; + r = fetch_token_cc(tok, src, end, env, state); + } + else { + neg = 0; + } + + if (r < 0) return r; + if (r == TK_CC_CLOSE) { + if (! code_exist_check((OnigCodePoint )']', + *src, env->pattern_end, 1, env)) + return ONIGERR_EMPTY_CHAR_CLASS; + + CC_ESC_WARN(env, (UChar* )"]"); + r = tok->type = TK_CHAR; /* allow []...] */ + } + + *np = node = node_new_cclass(); + CHECK_NULL_RETURN_MEMERR(node); + cc = CCLASS_(node); + + and_start = 0; + curr_type = CV_UNDEF; + + p = *src; + while (r != TK_CC_CLOSE) { + fetched = 0; + switch (r) { + case TK_CHAR: + any_char_in: + len = ONIGENC_CODE_TO_MBCLEN(env->enc, tok->u.code); + if (len < 0) { + r = len; + goto err; + } + in_type = (len == 1) ? CV_SB : CV_MB; + in_code = tok->u.code; + in_raw = 0; + goto val_entry2; + break; + + case TK_CRUDE_BYTE: + /* tok->base_num != 0 : octal or hexadec. */ + if (! ONIGENC_IS_SINGLEBYTE(env->enc) && tok->base_num != 0) { + int i, j; + UChar buf[ONIGENC_CODE_TO_MBC_MAXLEN]; + UChar* bufe = buf + ONIGENC_CODE_TO_MBC_MAXLEN; + UChar* psave = p; + int base_num = tok->base_num; + + buf[0] = tok->u.byte; + for (i = 1; i < ONIGENC_MBC_MAXLEN(env->enc); i++) { + r = fetch_token_cc(tok, &p, end, env, CS_COMPLETE); + if (r < 0) goto err; + if (r != TK_CRUDE_BYTE || tok->base_num != base_num) { + fetched = 1; + break; + } + buf[i] = tok->u.byte; + } + + if (i < ONIGENC_MBC_MINLEN(env->enc)) { + r = ONIGERR_TOO_SHORT_MULTI_BYTE_STRING; + goto err; + } + + /* clear buf tail */ + for (j = i; j < ONIGENC_CODE_TO_MBC_MAXLEN; j++) buf[j] = '\0'; + + len = enclen(env->enc, buf); + if (i < len) { + r = ONIGERR_TOO_SHORT_MULTI_BYTE_STRING; + goto err; + } + else if (i > len) { /* fetch back */ + p = psave; + for (i = 1; i < len; i++) { + r = fetch_token_cc(tok, &p, end, env, CS_COMPLETE); + if (r < 0) goto err; + } + fetched = 0; + } + + if (i == 1) { + in_code = (OnigCodePoint )buf[0]; + goto crude_single; + } + else { + if (! ONIGENC_IS_VALID_MBC_STRING(env->enc, buf, buf + len)) { + r = ONIGERR_INVALID_WIDE_CHAR_VALUE; + goto err; + } + + in_code = ONIGENC_MBC_TO_CODE(env->enc, buf, bufe); + in_type = CV_MB; + } + } + else { + in_code = (OnigCodePoint )tok->u.byte; + crude_single: + in_type = CV_SB; + } + in_raw = 1; + goto val_entry2; + break; + + case TK_CODE_POINT: + in_code = tok->u.code; + in_raw = 1; + val_entry: + len = ONIGENC_CODE_TO_MBCLEN(env->enc, in_code); + if (len < 0) { + if (state != CS_RANGE || + ! IS_SYNTAX_BV(env->syntax, + ONIG_SYN_ALLOW_INVALID_CODE_END_OF_RANGE_IN_CC) || + in_code < 0x100 || ONIGENC_MBC_MAXLEN(env->enc) == 1) { + r = len; + goto err; + } + } + in_type = (len == 1 ? CV_SB : CV_MB); + val_entry2: + r = cc_char_next(cc, &curr_code, in_code, &curr_raw, in_raw, in_type, + &curr_type, &state, env); + if (r != 0) goto err; + break; + + case TK_CC_POSIX_BRACKET_OPEN: + r = prs_posix_bracket(cc, &p, end, env); + if (r < 0) goto err; + if (r == 1) { /* is not POSIX bracket */ + CC_ESC_WARN(env, (UChar* )"["); + p = tok->backp; + in_code = tok->u.code; + in_raw = 0; + goto val_entry; + } + goto next_cprop; + break; + + case TK_CHAR_TYPE: + r = add_ctype_to_cc(cc, tok->u.prop.ctype, tok->u.prop.not, env); + if (r != 0) goto err; + + next_cprop: + r = cc_cprop_next(cc, &curr_code, &curr_type, &state, env); + if (r != 0) goto err; + break; + + case TK_CHAR_PROPERTY: + { + int ctype = fetch_char_property_to_ctype(&p, end, env); + if (ctype < 0) { + r = ctype; + goto err; + } + r = add_ctype_to_cc(cc, ctype, tok->u.prop.not, env); + if (r != 0) goto err; + goto next_cprop; + } + break; + + case TK_CC_RANGE: + if (state == CS_VALUE) { + r = fetch_token_cc(tok, &p, end, env, CS_RANGE); + if (r < 0) goto err; + + fetched = 1; + if (r == TK_CC_CLOSE) { /* allow [x-] */ + range_end_val: + in_code = (OnigCodePoint )'-'; + in_raw = 0; + goto val_entry; + } + else if (r == TK_CC_AND) { + range_end_val_with_warning: + CC_ESC_WARN(env, (UChar* )"-"); + goto range_end_val; + } + + if (curr_type == CV_CPROP) { + if (IS_SYNTAX_BV(env->syntax, + ONIG_SYN_ALLOW_CHAR_TYPE_FOLLOWED_BY_MINUS_IN_CC)) { + goto range_end_val_with_warning; + } + r = ONIGERR_UNMATCHED_RANGE_SPECIFIER_IN_CHAR_CLASS; + goto err; + } + + state = CS_RANGE; + } + else if (state == CS_START) { + /* [-xa] is allowed */ + in_code = tok->u.code; + in_raw = 0; + + r = fetch_token_cc(tok, &p, end, env, CS_VALUE); + if (r < 0) goto err; + + fetched = 1; + /* [--x] or [a&&-x] is warned. */ + if (r == TK_CC_RANGE || and_start != 0) + CC_ESC_WARN(env, (UChar* )"-"); + + goto val_entry; + } + else if (state == CS_RANGE) { + CC_ESC_WARN(env, (UChar* )"-"); + goto any_char_in; /* [!--] is allowed */ + } + else { /* CS_COMPLETE */ + r = fetch_token_cc(tok, &p, end, env, CS_VALUE); + if (r < 0) goto err; + + fetched = 1; + if (r == TK_CC_CLOSE) { + goto range_end_val; /* allow [a-b-] */ + } + else if (r == TK_CC_AND) { + goto range_end_val_with_warning; + } + + if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_ALLOW_DOUBLE_RANGE_OP_IN_CC)) { + /* [0-9-a] is allowed as [0-9\-a] */ + goto range_end_val_with_warning; + } + r = ONIGERR_UNMATCHED_RANGE_SPECIFIER_IN_CHAR_CLASS; + goto err; + } + break; + + case TK_CC_OPEN_CC: /* [ */ + { + Node *anode; + CClassNode* acc; + + if (state == CS_VALUE) { + r = cc_char_next(cc, &curr_code, 0, &curr_raw, 0, curr_type, &curr_type, + &state, env); + if (r != 0) goto err; + } + state = CS_COMPLETE; + + r = prs_cc(&anode, tok, &p, end, env); + if (r != 0) { + onig_node_free(anode); + goto cc_open_err; + } + acc = CCLASS_(anode); + r = or_cclass(cc, acc, env->enc); + onig_node_free(anode); + + cc_open_err: + if (r != 0) goto err; + } + break; + + case TK_CC_AND: /* && */ + { + if (state == CS_VALUE) { + r = cc_char_next(cc, &curr_code, 0, &curr_raw, 0, curr_type, &curr_type, + &state, env); + if (r != 0) goto err; + } + /* initialize local variables */ + and_start = 1; + state = CS_START; + + if (IS_NOT_NULL(prev_cc)) { + r = and_cclass(prev_cc, cc, env->enc); + if (r != 0) goto err; + bbuf_free(cc->mbuf); + } + else { + prev_cc = cc; + cc = &work_cc; + } + initialize_cclass(cc); + } + break; + + case TK_EOT: + r = ONIGERR_PREMATURE_END_OF_CHAR_CLASS; + goto err; + break; + default: + r = ONIGERR_PARSER_BUG; + goto err; + break; + } + + if (fetched) + r = tok->type; + else { + r = fetch_token_cc(tok, &p, end, env, state); + if (r < 0) goto err; + } + } + + if (state == CS_VALUE) { + r = cc_char_next(cc, &curr_code, 0, &curr_raw, 0, curr_type, &curr_type, + &state, env); + if (r != 0) goto err; + } + + if (IS_NOT_NULL(prev_cc)) { + r = and_cclass(prev_cc, cc, env->enc); + if (r != 0) goto err; + bbuf_free(cc->mbuf); + cc = prev_cc; + } + + if (neg != 0) + NCCLASS_SET_NOT(cc); + else + NCCLASS_CLEAR_NOT(cc); + if (IS_NCCLASS_NOT(cc) && + IS_SYNTAX_BV(env->syntax, ONIG_SYN_NOT_NEWLINE_IN_NEGATIVE_CC)) { + int is_empty = (IS_NULL(cc->mbuf) ? 1 : 0); + if (is_empty != 0) + BITSET_IS_EMPTY(cc->bs, is_empty); + + if (is_empty == 0) { + if (ONIGENC_IS_CODE_NEWLINE(env->enc, NEWLINE_CODE)) { + if (ONIGENC_CODE_TO_MBCLEN(env->enc, NEWLINE_CODE) == 1) + BITSET_SET_BIT(cc->bs, NEWLINE_CODE); + else + add_code_range(&(cc->mbuf), env, NEWLINE_CODE, NEWLINE_CODE); + } + } + } + *src = p; + DEC_PARSE_DEPTH(env->parse_depth); + return 0; + + err: + if (cc != CCLASS_(*np)) + bbuf_free(cc->mbuf); + return r; +} + +static int prs_alts(Node** top, PToken* tok, int term, + UChar** src, UChar* end, ParseEnv* env, int group_head); + +#ifdef USE_CALLOUT + +/* (?{...}[tag][+-]) (?{{...}}[tag][+-]) */ +static int +prs_callout_of_contents(Node** np, int cterm, UChar** src, UChar* end, + ParseEnv* env) +{ + int r; + int i; + int in; + int num; + OnigCodePoint c; + UChar* code_start; + UChar* code_end; + UChar* contents; + UChar* tag_start; + UChar* tag_end; + int brace_nest; + CalloutListEntry* e; + RegexExt* ext; + OnigEncoding enc = env->enc; + UChar* p = *src; + + if (PEND) return ONIGERR_INVALID_CALLOUT_PATTERN; + + brace_nest = 0; + while (PPEEK_IS('{')) { + brace_nest++; + PINC_S; + if (PEND) return ONIGERR_INVALID_CALLOUT_PATTERN; + } + + in = ONIG_CALLOUT_IN_PROGRESS; + code_start = p; + while (1) { + if (PEND) return ONIGERR_INVALID_CALLOUT_PATTERN; + + code_end = p; + PFETCH_S(c); + if (c == '}') { + i = brace_nest; + while (i > 0) { + if (PEND) return ONIGERR_INVALID_CALLOUT_PATTERN; + PFETCH_S(c); + if (c == '}') i--; + else break; + } + if (i == 0) break; + } + } + + if (PEND) return ONIGERR_END_PATTERN_IN_GROUP; + + PFETCH_S(c); + if (c == '[') { + if (PEND) return ONIGERR_END_PATTERN_IN_GROUP; + tag_end = tag_start = p; + while (! PEND) { + if (PEND) return ONIGERR_END_PATTERN_IN_GROUP; + tag_end = p; + PFETCH_S(c); + if (c == ']') break; + } + if (! is_allowed_callout_tag_name(enc, tag_start, tag_end)) + return ONIGERR_INVALID_CALLOUT_TAG_NAME; + + if (PEND) return ONIGERR_END_PATTERN_IN_GROUP; + PFETCH_S(c); + } + else { + tag_start = tag_end = 0; + } + + if (c == 'X') { + in |= ONIG_CALLOUT_IN_RETRACTION; + if (PEND) return ONIGERR_END_PATTERN_IN_GROUP; + PFETCH_S(c); + } + else if (c == '<') { + in = ONIG_CALLOUT_IN_RETRACTION; + if (PEND) return ONIGERR_END_PATTERN_IN_GROUP; + PFETCH_S(c); + } + else if (c == '>') { /* no needs (default) */ + if (PEND) return ONIGERR_END_PATTERN_IN_GROUP; + PFETCH_S(c); + } + + if (c != cterm) + return ONIGERR_INVALID_CALLOUT_PATTERN; + + r = reg_callout_list_entry(env, &num); + if (r != 0) return r; + + ext = onig_get_regex_ext(env->reg); + CHECK_NULL_RETURN_MEMERR(ext); + if (IS_NULL(ext->pattern)) { + r = onig_ext_set_pattern(env->reg, env->pattern, env->pattern_end); + if (r != ONIG_NORMAL) return r; + } + + if (tag_start != tag_end) { + r = callout_tag_entry(env, env->reg, tag_start, tag_end, num); + if (r != ONIG_NORMAL) return r; + } + + contents = onigenc_strdup(enc, code_start, code_end); + CHECK_NULL_RETURN_MEMERR(contents); + + e = onig_reg_callout_list_at(env->reg, num); + if (IS_NULL(e)) { + xfree(contents); + return ONIGERR_MEMORY; + } + + r = node_new_callout(np, ONIG_CALLOUT_OF_CONTENTS, num, ONIG_NON_NAME_ID, env); + if (r != 0) { + xfree(contents); + return r; + } + + e->of = ONIG_CALLOUT_OF_CONTENTS; + e->in = in; + e->name_id = ONIG_NON_NAME_ID; + e->u.content.start = contents; + e->u.content.end = contents + (code_end - code_start); + + *src = p; + return 0; +} + +static long +prs_long(OnigEncoding enc, UChar* s, UChar* end, int sign_on, long max, long* rl) +{ + long v; + long d; + int flag; + UChar* p; + OnigCodePoint c; + + if (s >= end) return ONIGERR_INVALID_CALLOUT_ARG; + + flag = 1; + v = 0; + p = s; + while (p < end) { + c = ONIGENC_MBC_TO_CODE(enc, p, end); + p += ONIGENC_MBC_ENC_LEN(enc, p); + if (c >= '0' && c <= '9') { + d = (long )(c - '0'); + if (v > (max - d) / 10) + return ONIGERR_INVALID_CALLOUT_ARG; + + v = v * 10 + d; + } + else if (sign_on != 0 && (c == '-' || c == '+')) { + if (c == '-') flag = -1; + } + else + return ONIGERR_INVALID_CALLOUT_ARG; + + sign_on = 0; + } + + *rl = flag * v; + return ONIG_NORMAL; +} + +static void +clear_callout_args(int n, unsigned int types[], OnigValue vals[]) +{ + int i; + + for (i = 0; i < n; i++) { + switch (types[i]) { + case ONIG_TYPE_STRING: + if (IS_NOT_NULL(vals[i].s.start)) + xfree(vals[i].s.start); + break; + default: + break; + } + } +} + +static int +prs_callout_args(int skip_mode, int cterm, UChar** src, UChar* end, + int max_arg_num, unsigned int types[], OnigValue vals[], + ParseEnv* env) +{ +#define MAX_CALLOUT_ARG_BYTE_LENGTH 128 + + int r; + int n; + int esc; + int cn; + UChar* s; + UChar* e; + UChar* eesc; + OnigCodePoint c; + UChar* bufend; + UChar buf[MAX_CALLOUT_ARG_BYTE_LENGTH]; + OnigEncoding enc = env->enc; + UChar* p = *src; + + if (PEND) return ONIGERR_INVALID_CALLOUT_PATTERN; + + c = 0; + n = 0; + while (n < ONIG_CALLOUT_MAX_ARGS_NUM) { + cn = 0; + esc = 0; + eesc = 0; + bufend = buf; + s = e = p; + while (1) { + if (PEND) { + r = ONIGERR_INVALID_CALLOUT_PATTERN; + goto err_clear; + } + + e = p; + PFETCH_S(c); + if (esc != 0) { + esc = 0; + if (c == '\\' || c == cterm || c == ',') { + /* */ + } + else { + e = eesc; + cn++; + } + goto add_char; + } + else { + if (c == '\\') { + esc = 1; + eesc = e; + } + else if (c == cterm || c == ',') + break; + else { + size_t clen; + + add_char: + if (skip_mode == FALSE) { + clen = p - e; + if (bufend + clen > buf + MAX_CALLOUT_ARG_BYTE_LENGTH) { + r = ONIGERR_INVALID_CALLOUT_ARG; /* too long argument */ + goto err_clear; + } + + xmemcpy(bufend, e, clen); + bufend += clen; + } + cn++; + } + } + } + + if (cn != 0) { + if (max_arg_num >= 0 && n >= max_arg_num) { + r = ONIGERR_INVALID_CALLOUT_ARG; + goto err_clear; + } + + if (skip_mode == FALSE) { + if ((types[n] & ONIG_TYPE_LONG) != 0) { + int fixed = 0; + if (cn > 0) { + long rl; + r = prs_long(enc, buf, bufend, 1, LONG_MAX, &rl); + if (r == ONIG_NORMAL) { + vals[n].l = rl; + fixed = 1; + types[n] = ONIG_TYPE_LONG; + } + } + + if (fixed == 0) { + types[n] = (types[n] & ~ONIG_TYPE_LONG); + if (types[n] == ONIG_TYPE_VOID) { + r = ONIGERR_INVALID_CALLOUT_ARG; + goto err_clear; + } + } + } + + switch (types[n]) { + case ONIG_TYPE_LONG: + break; + + case ONIG_TYPE_CHAR: + if (cn != 1) { + r = ONIGERR_INVALID_CALLOUT_ARG; + goto err_clear; + } + vals[n].c = ONIGENC_MBC_TO_CODE(enc, buf, bufend); + break; + + case ONIG_TYPE_STRING: + { + UChar* rs = onigenc_strdup(enc, buf, bufend); + if (IS_NULL(rs)) { + r = ONIGERR_MEMORY; goto err_clear; + } + vals[n].s.start = rs; + vals[n].s.end = rs + (e - s); + } + break; + + case ONIG_TYPE_TAG: + if (eesc != 0 || ! is_allowed_callout_tag_name(enc, s, e)) { + r = ONIGERR_INVALID_CALLOUT_TAG_NAME; + goto err_clear; + } + + vals[n].s.start = s; + vals[n].s.end = e; + break; + + case ONIG_TYPE_VOID: + case ONIG_TYPE_POINTER: + r = ONIGERR_PARSER_BUG; + goto err_clear; + break; + } + } + + n++; + } + + if (c == cterm) break; + } + + if (c != cterm) { + r = ONIGERR_INVALID_CALLOUT_PATTERN; + goto err_clear; + } + + *src = p; + return n; + + err_clear: + if (skip_mode == FALSE) + clear_callout_args(n, types, vals); + return r; +} + +/* (*name[TAG]) (*name[TAG]{a,b,..}) */ +static int +prs_callout_of_name(Node** np, int cterm, UChar** src, UChar* end, + ParseEnv* env) +{ + int r; + int i; + int in; + int num; + int name_id; + int arg_num; + int max_arg_num; + int opt_arg_num; + int is_not_single; + OnigCodePoint c; + UChar* name_start; + UChar* name_end; + UChar* tag_start; + UChar* tag_end; + Node* node; + CalloutListEntry* e; + RegexExt* ext; + unsigned int types[ONIG_CALLOUT_MAX_ARGS_NUM]; + OnigValue vals[ONIG_CALLOUT_MAX_ARGS_NUM]; + OnigEncoding enc = env->enc; + UChar* p = *src; + + /* PFETCH_READY; */ + if (PEND) return ONIGERR_INVALID_CALLOUT_PATTERN; + + node = 0; + name_start = p; + while (1) { + if (PEND) return ONIGERR_END_PATTERN_IN_GROUP; + name_end = p; + PFETCH_S(c); + if (c == cterm || c == '[' || c == '{') break; + } + + if (! is_allowed_callout_name(enc, name_start, name_end)) + return ONIGERR_INVALID_CALLOUT_NAME; + + if (c == '[') { + if (PEND) return ONIGERR_END_PATTERN_IN_GROUP; + tag_end = tag_start = p; + while (! PEND) { + if (PEND) return ONIGERR_END_PATTERN_IN_GROUP; + tag_end = p; + PFETCH_S(c); + if (c == ']') break; + } + if (! is_allowed_callout_tag_name(enc, tag_start, tag_end)) + return ONIGERR_INVALID_CALLOUT_TAG_NAME; + + if (PEND) return ONIGERR_END_PATTERN_IN_GROUP; + PFETCH_S(c); + } + else { + tag_start = tag_end = 0; + } + + if (c == '{') { + UChar* save; + + if (PEND) return ONIGERR_END_PATTERN_IN_GROUP; + + /* read for single check only */ + save = p; + arg_num = prs_callout_args(TRUE, '}', &p, end, -1, NULL, NULL, env); + if (arg_num < 0) return arg_num; + + is_not_single = PPEEK_IS(cterm) ? 0 : 1; + p = save; + r = get_callout_name_id_by_name(enc, is_not_single, name_start, name_end, + &name_id); + if (r != ONIG_NORMAL) return r; + + max_arg_num = get_callout_arg_num_by_name_id(name_id); + for (i = 0; i < max_arg_num; i++) { + types[i] = get_callout_arg_type_by_name_id(name_id, i); + } + + arg_num = prs_callout_args(FALSE, '}', &p, end, max_arg_num, types, vals, env); + if (arg_num < 0) return arg_num; + + if (PEND) { + r = ONIGERR_END_PATTERN_IN_GROUP; + goto err_clear; + } + PFETCH_S(c); + } + else { + arg_num = 0; + + is_not_single = 0; + r = get_callout_name_id_by_name(enc, is_not_single, name_start, name_end, + &name_id); + if (r != ONIG_NORMAL) return r; + + max_arg_num = get_callout_arg_num_by_name_id(name_id); + for (i = 0; i < max_arg_num; i++) { + types[i] = get_callout_arg_type_by_name_id(name_id, i); + } + } + + in = onig_get_callout_in_by_name_id(name_id); + opt_arg_num = get_callout_opt_arg_num_by_name_id(name_id); + if (arg_num > max_arg_num || arg_num < (max_arg_num - opt_arg_num)) { + r = ONIGERR_INVALID_CALLOUT_ARG; + goto err_clear; + } + + if (c != cterm) { + r = ONIGERR_INVALID_CALLOUT_PATTERN; + goto err_clear; + } + + r = reg_callout_list_entry(env, &num); + if (r != 0) goto err_clear; + + ext = onig_get_regex_ext(env->reg); + if (IS_NULL(ext)) { + r = ONIGERR_MEMORY; goto err_clear; + } + if (IS_NULL(ext->pattern)) { + r = onig_ext_set_pattern(env->reg, env->pattern, env->pattern_end); + if (r != ONIG_NORMAL) goto err_clear; + } + + if (tag_start != tag_end) { + r = callout_tag_entry(env, env->reg, tag_start, tag_end, num); + if (r != ONIG_NORMAL) goto err_clear; + } + + e = onig_reg_callout_list_at(env->reg, num); + if (IS_NULL(e)) { + r = ONIGERR_MEMORY; goto err_clear; + } + + r = node_new_callout(&node, ONIG_CALLOUT_OF_NAME, num, name_id, env); + if (r != ONIG_NORMAL) goto err_clear; + + e->of = ONIG_CALLOUT_OF_NAME; + e->in = in; + e->name_id = name_id; + e->type = onig_get_callout_type_by_name_id(name_id); + e->start_func = onig_get_callout_start_func_by_name_id(name_id); + e->end_func = onig_get_callout_end_func_by_name_id(name_id); + e->u.arg.num = max_arg_num; + e->u.arg.passed_num = arg_num; + for (i = 0; i < max_arg_num; i++) { + e->u.arg.types[i] = types[i]; + if (i < arg_num) + e->u.arg.vals[i] = vals[i]; + else + e->u.arg.vals[i] = get_callout_opt_default_by_name_id(name_id, i); + } + + *np = node; + *src = p; + return 0; + + err_clear: + clear_callout_args(arg_num, types, vals); + return r; +} +#endif + +#ifdef USE_WHOLE_OPTIONS +static int +set_whole_options(OnigOptionType option, ParseEnv* env) +{ + if ((env->flags & PE_FLAG_HAS_WHOLE_OPTIONS) != 0) + return ONIGERR_INVALID_GROUP_OPTION; + + env->flags |= PE_FLAG_HAS_WHOLE_OPTIONS; + + if (OPTON_DONT_CAPTURE_GROUP(option)) { + env->reg->options |= ONIG_OPTION_DONT_CAPTURE_GROUP; + if ((option & (ONIG_OPTION_DONT_CAPTURE_GROUP|ONIG_OPTION_CAPTURE_GROUP)) == (ONIG_OPTION_DONT_CAPTURE_GROUP|ONIG_OPTION_CAPTURE_GROUP)) + return ONIGERR_INVALID_COMBINATION_OF_OPTIONS; + } + + if ((option & ONIG_OPTION_IGNORECASE_IS_ASCII) != 0) { + env->reg->case_fold_flag &= + ~(INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR | + ONIGENC_CASE_FOLD_TURKISH_AZERI); + env->reg->case_fold_flag |= ONIGENC_CASE_FOLD_ASCII_ONLY; + env->reg->options |= ONIG_OPTION_IGNORECASE_IS_ASCII; + } + + if (OPTON_FIND_LONGEST(option)) { + env->reg->options |= ONIG_OPTION_FIND_LONGEST; + } + + return 0; +} +#endif + +static int +prs_bag(Node** np, PToken* tok, int term, UChar** src, UChar* end, + ParseEnv* env) +{ + int r, num; + Node *target; + OnigOptionType option; + OnigCodePoint c; + int list_capture; + OnigEncoding enc; + UChar* p; + PFETCH_READY; + + p = *src; + enc = env->enc; + *np = NULL; + if (PEND) return ONIGERR_END_PATTERN_WITH_UNMATCHED_PARENTHESIS; + + option = env->options; + c = PPEEK; + if (c == '?' && IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_QMARK_GROUP_EFFECT)) { + PINC; + if (PEND) return ONIGERR_END_PATTERN_IN_GROUP; + + PFETCH(c); + switch (c) { + case ':': /* (?:...) grouping only */ + group: + r = fetch_token(tok, &p, end, env); + if (r < 0) return r; + r = prs_alts(np, tok, term, &p, end, env, FALSE); + if (r < 0) return r; + *src = p; + return 1; /* group */ + break; + + case '=': + *np = node_new_anchor(ANCR_PREC_READ); + break; + case '!': /* preceding read */ + *np = node_new_anchor(ANCR_PREC_READ_NOT); + break; + case '>': /* (?>...) stop backtrack */ + *np = node_new_bag(BAG_STOP_BACKTRACK); + break; + + case '\'': + if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP)) { + goto named_group1; + } + else + return ONIGERR_UNDEFINED_GROUP_OPTION; + break; + + case '<': /* look behind (?<=...), (?syntax, ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP)) { + UChar *name; + UChar *name_end; + enum REF_NUM num_type; + + PUNFETCH; + c = '<'; + + named_group1: + list_capture = 0; + +#ifdef USE_CAPTURE_HISTORY + named_group2: +#endif + name = p; + r = fetch_name((OnigCodePoint )c, &p, end, &name_end, env, &num, + &num_type, FALSE); + if (r < 0) return r; + + num = scan_env_add_mem_entry(env); + if (num < 0) return num; + if (list_capture != 0 && num >= (int )MEM_STATUS_BITS_NUM) + return ONIGERR_GROUP_NUMBER_OVER_FOR_CAPTURE_HISTORY; + + r = name_add(env->reg, name, name_end, num, env); + if (r != 0) return r; + *np = node_new_memory(1); + CHECK_NULL_RETURN_MEMERR(*np); + BAG_(*np)->m.regnum = num; + if (list_capture != 0) + MEM_STATUS_ON_SIMPLE(env->cap_history, num); + env->num_named++; + } + else { + return ONIGERR_UNDEFINED_GROUP_OPTION; + } + } + break; + + case '~': + if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_QMARK_TILDE_ABSENT_GROUP)) { + Node* absent; + Node* expr; + int head_bar; + int is_range_cutter; + + if (PEND) return ONIGERR_END_PATTERN_IN_GROUP; + + if (PPEEK_IS('|')) { /* (?~|generator|absent) */ + PINC; + if (PEND) return ONIGERR_END_PATTERN_IN_GROUP; + + head_bar = 1; + if (PPEEK_IS(')')) { /* (?~|) : range clear */ + PINC; + r = make_range_clear(np, env); + if (r != 0) return r; + env->flags |= PE_FLAG_HAS_ABSENT_STOPPER; + goto end; + } + } + else + head_bar = 0; + + r = fetch_token(tok, &p, end, env); + if (r < 0) return r; + r = prs_alts(&absent, tok, term, &p, end, env, TRUE); + if (r < 0) { + onig_node_free(absent); + return r; + } + + expr = NULL_NODE; + is_range_cutter = 0; + if (head_bar != 0) { + Node* top = absent; + if (ND_TYPE(top) != ND_ALT || IS_NULL(ND_CDR(top))) { + expr = NULL_NODE; + is_range_cutter = 1; + env->flags |= PE_FLAG_HAS_ABSENT_STOPPER; + } + else { + absent = ND_CAR(top); + expr = ND_CDR(top); + ND_CAR(top) = NULL_NODE; + ND_CDR(top) = NULL_NODE; + onig_node_free(top); + if (IS_NULL(ND_CDR(expr))) { + top = expr; + expr = ND_CAR(top); + ND_CAR(top) = NULL_NODE; + onig_node_free(top); + } + } + } + + r = make_absent_tree(np, absent, expr, is_range_cutter, env); + if (r != 0) { + return r; + } + goto end; + } + else { + return ONIGERR_UNDEFINED_GROUP_OPTION; + } + break; + +#ifdef USE_CALLOUT + case '{': + if (! IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_QMARK_BRACE_CALLOUT_CONTENTS)) + return ONIGERR_UNDEFINED_GROUP_OPTION; + + r = prs_callout_of_contents(np, ')', &p, end, env); + if (r != 0) return r; + + goto end; + break; +#endif + + case '(': + /* (?()...) */ + if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_QMARK_LPAREN_IF_ELSE)) { + UChar *prev; + Node* condition; + int condition_is_checker; + + if (PEND) return ONIGERR_END_PATTERN_IN_GROUP; + PFETCH(c); + if (PEND) return ONIGERR_END_PATTERN_IN_GROUP; + + if (IS_CODE_DIGIT_ASCII(enc, c) + || c == '-' || c == '+' || c == '<' || c == '\'') { +#ifdef USE_BACKREF_WITH_LEVEL + int exist_level; + int level; +#endif + UChar* name_end; + int back_num; + enum REF_NUM num_type; + int is_enclosed; + + is_enclosed = (c == '<' || c == '\'') ? 1 : 0; + if (! is_enclosed) + PUNFETCH; + prev = p; +#ifdef USE_BACKREF_WITH_LEVEL + exist_level = 0; + name_end = NULL_UCHARP; /* no need. escape gcc warning. */ + r = fetch_name_with_level( + (OnigCodePoint )(is_enclosed != 0 ? c : '('), + &p, end, &name_end, + env, &back_num, &level, &num_type); + if (r == 1) exist_level = 1; +#else + r = fetch_name((OnigCodePoint )(is_enclosed != 0 ? c : '('), + &p, end, &name_end, env, &back_num, &num_type, TRUE); +#endif + if (r < 0) { + if (is_enclosed == 0) { + goto any_condition; + } + else + return r; + } + + condition_is_checker = 1; + if (num_type != IS_NOT_NUM) { + if (num_type == IS_REL_NUM) { + back_num = backref_rel_to_abs(back_num, env); + } + if (back_num <= 0) + return ONIGERR_INVALID_BACKREF; + + if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_STRICT_CHECK_BACKREF)) { + if (back_num > env->num_mem || + IS_NULL(PARSEENV_MEMENV(env)[back_num].mem_node)) + return ONIGERR_INVALID_BACKREF; + } + + condition = node_new_backref_checker(1, &back_num, FALSE, +#ifdef USE_BACKREF_WITH_LEVEL + exist_level, level, +#endif + env); + } + else { + int num; + int* backs; + + num = name_to_group_numbers(env, prev, name_end, &backs); + if (num <= 0) { + return ONIGERR_UNDEFINED_NAME_REFERENCE; + } + if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_STRICT_CHECK_BACKREF)) { + int i; + for (i = 0; i < num; i++) { + if (backs[i] > env->num_mem || + IS_NULL(PARSEENV_MEMENV(env)[backs[i]].mem_node)) + return ONIGERR_INVALID_BACKREF; + } + } + + condition = node_new_backref_checker(num, backs, TRUE, +#ifdef USE_BACKREF_WITH_LEVEL + exist_level, level, +#endif + env); + } + + if (is_enclosed != 0) { + if (PEND) goto err_if_else; + PFETCH(c); + if (c != ')') goto err_if_else; + } + } +#ifdef USE_CALLOUT + else if (c == '?') { + if (IS_SYNTAX_OP2(env->syntax, + ONIG_SYN_OP2_QMARK_BRACE_CALLOUT_CONTENTS)) { + if (! PEND && PPEEK_IS('{')) { + /* condition part is callouts of contents: (?(?{...})THEN|ELSE) */ + condition_is_checker = 0; + PFETCH(c); + r = prs_callout_of_contents(&condition, ')', &p, end, env); + if (r != 0) return r; + goto end_condition; + } + } + goto any_condition; + } + else if (c == '*' && + IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_ASTERISK_CALLOUT_NAME)) { + condition_is_checker = 0; + r = prs_callout_of_name(&condition, ')', &p, end, env); + if (r != 0) return r; + goto end_condition; + } +#endif + else { + any_condition: + PUNFETCH; + condition_is_checker = 0; + r = fetch_token(tok, &p, end, env); + if (r < 0) return r; + r = prs_alts(&condition, tok, term, &p, end, env, FALSE); + if (r < 0) { + onig_node_free(condition); + return r; + } + } + +#ifdef USE_CALLOUT + end_condition: +#endif + CHECK_NULL_RETURN_MEMERR(condition); + + if (PEND) { + err_if_else: + onig_node_free(condition); + return ONIGERR_END_PATTERN_IN_GROUP; + } + + if (PPEEK_IS(')')) { /* case: empty body: make backref checker */ + if (condition_is_checker == 0) { + onig_node_free(condition); + return ONIGERR_INVALID_IF_ELSE_SYNTAX; + } + PFETCH(c); + *np = condition; + } + else { /* if-else */ + int then_is_empty; + Node *Then, *Else; + + Then = 0; + if (PPEEK_IS('|')) { + PFETCH(c); + then_is_empty = 1; + } + else + then_is_empty = 0; + + r = fetch_token(tok, &p, end, env); + if (r < 0) { + onig_node_free(condition); + return r; + } + r = prs_alts(&target, tok, term, &p, end, env, TRUE); + if (r < 0) { + onig_node_free(condition); + onig_node_free(target); + return r; + } + + if (then_is_empty != 0) { + Else = target; + } + else { + if (ND_TYPE(target) == ND_ALT) { + Then = ND_CAR(target); + if (ND_CDR(ND_CDR(target)) == NULL_NODE) { + Else = ND_CAR(ND_CDR(target)); + cons_node_free_alone(ND_CDR(target)); + } + else { + Else = ND_CDR(target); + } + cons_node_free_alone(target); + } + else { + Then = target; + Else = 0; + } + } + + *np = node_new_bag_if_else(condition, Then, Else); + if (IS_NULL(*np)) { + onig_node_free(condition); + onig_node_free(Then); + onig_node_free(Else); + return ONIGERR_MEMORY; + } + } + goto end; + } + else { + return ONIGERR_UNDEFINED_GROUP_OPTION; + } + break; + +#ifdef USE_CAPTURE_HISTORY + case '@': + if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_ATMARK_CAPTURE_HISTORY)) { + if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP)) { + PFETCH(c); + if (c == '<' || c == '\'') { + list_capture = 1; + goto named_group2; /* (?@...) */ + } + PUNFETCH; + } + + *np = node_new_memory(0); + CHECK_NULL_RETURN_MEMERR(*np); + num = scan_env_add_mem_entry(env); + if (num < 0) { + return num; + } + else if (num >= (int )MEM_STATUS_BITS_NUM) { + return ONIGERR_GROUP_NUMBER_OVER_FOR_CAPTURE_HISTORY; + } + BAG_(*np)->m.regnum = num; + MEM_STATUS_ON_SIMPLE(env->cap_history, num); + } + else { + return ONIGERR_UNDEFINED_GROUP_OPTION; + } + break; +#endif + +#ifdef USE_WHOLE_OPTIONS + case 'C': + case 'I': + case 'L': + if (! IS_SYNTAX_BV(env->syntax, ONIG_SYN_WHOLE_OPTIONS)) + return ONIGERR_UNDEFINED_GROUP_OPTION; + + goto options_start; + break; +#endif + + case 'P': + if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_QMARK_CAPITAL_P_NAME)) { + if (PEND) return ONIGERR_END_PATTERN_IN_GROUP; + PFETCH(c); + if (c == '<') goto named_group1; + + return ONIGERR_UNDEFINED_GROUP_OPTION; + } + /* else fall */ + case 'W': case 'D': case 'S': + case 'y': + if (! IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_OPTION_ONIGURUMA)) + return ONIGERR_UNDEFINED_GROUP_OPTION; + /* else fall */ + +#ifdef USE_POSIXLINE_OPTION + case 'p': +#endif + case 'a': + case '-': case 'i': case 'm': case 's': case 'x': +#ifdef USE_WHOLE_OPTIONS + options_start: +#endif + { + int neg; +#ifdef USE_WHOLE_OPTIONS + int whole_options; + whole_options = FALSE; +#endif + neg = FALSE; + while (1) { + switch (c) { + case ':': + case ')': + break; + + case '-': neg = TRUE; break; + case 'x': OPTION_NEGATE(option, ONIG_OPTION_EXTEND, neg); break; + case 'i': OPTION_NEGATE(option, ONIG_OPTION_IGNORECASE, neg); break; + case 's': + if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_OPTION_PERL)) { + OPTION_NEGATE(option, ONIG_OPTION_MULTILINE, neg); + } + else + return ONIGERR_UNDEFINED_GROUP_OPTION; + break; + + case 'm': + if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_OPTION_PERL)) { + OPTION_NEGATE(option, ONIG_OPTION_SINGLELINE, (neg == FALSE ? TRUE : FALSE)); + } + else if (IS_SYNTAX_OP2(env->syntax, + ONIG_SYN_OP2_OPTION_ONIGURUMA|ONIG_SYN_OP2_OPTION_RUBY)) { + OPTION_NEGATE(option, ONIG_OPTION_MULTILINE, neg); + } + else + return ONIGERR_UNDEFINED_GROUP_OPTION; + break; +#ifdef USE_POSIXLINE_OPTION + case 'p': + OPTION_NEGATE(option, ONIG_OPTION_MULTILINE|ONIG_OPTION_SINGLELINE, neg); + break; +#endif + case 'W': + if (! IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_OPTION_ONIGURUMA)) + return ONIGERR_UNDEFINED_GROUP_OPTION; + OPTION_NEGATE(option, ONIG_OPTION_WORD_IS_ASCII, neg); + break; + case 'D': + if (! IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_OPTION_ONIGURUMA)) + return ONIGERR_UNDEFINED_GROUP_OPTION; + OPTION_NEGATE(option, ONIG_OPTION_DIGIT_IS_ASCII, neg); + break; + case 'S': + if (! IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_OPTION_ONIGURUMA)) + return ONIGERR_UNDEFINED_GROUP_OPTION; + OPTION_NEGATE(option, ONIG_OPTION_SPACE_IS_ASCII, neg); + break; + case 'P': + if (! IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_OPTION_ONIGURUMA)) + return ONIGERR_UNDEFINED_GROUP_OPTION; + OPTION_NEGATE(option, ONIG_OPTION_POSIX_IS_ASCII, neg); + break; + + case 'y': /* y{g}, y{w} */ + { + if (! IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_OPTION_ONIGURUMA)) + return ONIGERR_UNDEFINED_GROUP_OPTION; + + if (neg == TRUE) return ONIGERR_UNDEFINED_GROUP_OPTION; + + if (PEND) return ONIGERR_END_PATTERN_IN_GROUP; + if (! PPEEK_IS('{')) return ONIGERR_UNDEFINED_GROUP_OPTION; + PFETCH(c); + if (PEND) return ONIGERR_END_PATTERN_IN_GROUP; + PFETCH(c); + switch (c) { + case 'g': + if (! ONIGENC_IS_UNICODE_ENCODING(enc)) + return ONIGERR_UNDEFINED_GROUP_OPTION; + + OPTION_NEGATE(option, ONIG_OPTION_TEXT_SEGMENT_EXTENDED_GRAPHEME_CLUSTER, FALSE); + OPTION_NEGATE(option, ONIG_OPTION_TEXT_SEGMENT_WORD, TRUE); + break; +#ifdef USE_UNICODE_WORD_BREAK + case 'w': + if (! ONIGENC_IS_UNICODE_ENCODING(enc)) + return ONIGERR_UNDEFINED_GROUP_OPTION; + + OPTION_NEGATE(option, ONIG_OPTION_TEXT_SEGMENT_WORD, FALSE); + OPTION_NEGATE(option, ONIG_OPTION_TEXT_SEGMENT_EXTENDED_GRAPHEME_CLUSTER, TRUE); + break; +#endif + default: + return ONIGERR_UNDEFINED_GROUP_OPTION; + break; + } + if (PEND) return ONIGERR_END_PATTERN_IN_GROUP; + PFETCH(c); + if (c != '}') + return ONIGERR_UNDEFINED_GROUP_OPTION; + } /* case 'y' */ + break; + + case 'a': + if (! IS_SYNTAX_BV(env->syntax, ONIG_SYN_PYTHON)) + return ONIGERR_UNDEFINED_GROUP_OPTION; + + OPTION_NEGATE(option, ONIG_OPTION_POSIX_IS_ASCII, neg); + break; + +#ifdef USE_WHOLE_OPTIONS + case 'C': + if (! IS_SYNTAX_BV(env->syntax, ONIG_SYN_WHOLE_OPTIONS)) + return ONIGERR_UNDEFINED_GROUP_OPTION; + + if (neg == TRUE) return ONIGERR_INVALID_GROUP_OPTION; + OPTION_NEGATE(option, ONIG_OPTION_DONT_CAPTURE_GROUP, neg); + whole_options = TRUE; + break; + + case 'I': + if (! IS_SYNTAX_BV(env->syntax, ONIG_SYN_WHOLE_OPTIONS)) + return ONIGERR_UNDEFINED_GROUP_OPTION; + + if (neg == TRUE) return ONIGERR_INVALID_GROUP_OPTION; + OPTION_NEGATE(option, ONIG_OPTION_IGNORECASE_IS_ASCII, neg); + whole_options = TRUE; + break; + + case 'L': + if (! IS_SYNTAX_BV(env->syntax, ONIG_SYN_WHOLE_OPTIONS)) + return ONIGERR_UNDEFINED_GROUP_OPTION; + + if (neg == TRUE) return ONIGERR_INVALID_GROUP_OPTION; + OPTION_NEGATE(option, ONIG_OPTION_FIND_LONGEST, neg); + whole_options = TRUE; + break; +#endif + + default: + return ONIGERR_UNDEFINED_GROUP_OPTION; + } + + if (c == ')') { + *np = node_new_option(option); + CHECK_NULL_RETURN_MEMERR(*np); + +#ifdef USE_WHOLE_OPTIONS + if (whole_options == TRUE) { + r = set_whole_options(option, env); + if (r != 0) return r; + ND_STATUS_ADD(*np, WHOLE_OPTIONS); + } +#endif + *src = p; + return 2; /* option only */ + } + else if (c == ':') { + OnigOptionType prev = env->options; + + env->options = option; +#ifdef USE_WHOLE_OPTIONS + if (whole_options == TRUE) { + r = set_whole_options(option, env); + if (r != 0) return r; + } +#endif + r = fetch_token(tok, &p, end, env); + if (r < 0) return r; + r = prs_alts(&target, tok, term, &p, end, env, FALSE); + env->options = prev; + if (r < 0) { + onig_node_free(target); + return r; + } + + *np = node_new_option(option); + CHECK_NULL_RETURN_MEMERR(*np); + ND_BODY(*np) = target; + ND_STATUS_ADD(*np, WHOLE_OPTIONS); + + *src = p; + return 0; + } + + if (PEND) return ONIGERR_END_PATTERN_IN_GROUP; + PFETCH(c); + } /* while (1) */ + } + break; + + default: + return ONIGERR_UNDEFINED_GROUP_OPTION; + } + } +#ifdef USE_CALLOUT + else if (c == '*' && + IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_ASTERISK_CALLOUT_NAME)) { + PINC; + r = prs_callout_of_name(np, ')', &p, end, env); + if (r != 0) return r; + + goto end; + } +#endif + else { + if (OPTON_DONT_CAPTURE_GROUP(env->options)) + goto group; + + *np = node_new_memory(0); + CHECK_NULL_RETURN_MEMERR(*np); + num = scan_env_add_mem_entry(env); + if (num < 0) return num; + BAG_(*np)->m.regnum = num; + } + + CHECK_NULL_RETURN_MEMERR(*np); + r = fetch_token(tok, &p, end, env); + if (r < 0) return r; + r = prs_alts(&target, tok, term, &p, end, env, FALSE); + if (r < 0) { + onig_node_free(target); + return r; + } + + ND_BODY(*np) = target; + + if (ND_TYPE(*np) == ND_BAG) { + if (BAG_(*np)->type == BAG_MEMORY) { + /* Don't move this to previous of prs_alts() */ + r = scan_env_set_mem_node(env, BAG_(*np)->m.regnum, *np); + if (r != 0) return r; + } + } + + end: + *src = p; + return 0; +} + +static const char* PopularQStr[] = { + "?", "*", "+", "??", "*?", "+?" +}; + +static const char* ReduceQStr[] = { + "", "", "*", "*?", "??", "+ and ??", "+? and ?" +}; + +static int +assign_quantifier_body(Node* qnode, Node* target, int group, ParseEnv* env) +{ + QuantNode* qn; + + qn = QUANT_(qnode); + if (qn->lower == 1 && qn->upper == 1) + return 1; + + switch (ND_TYPE(target)) { + case ND_STRING: + if (group == 0) { + if (str_node_can_be_split(target, env->enc)) { + Node* n = str_node_split_last_char(target, env->enc); + if (IS_NOT_NULL(n)) { + ND_BODY(qnode) = n; + return 2; + } + } + } + break; + + case ND_QUANT: + { /* check redundant double repeat. */ + /* verbose warn (?:.?)? etc... but not warn (.?)? etc... */ + QuantNode* qnt = QUANT_(target); + int nestq_num = quantifier_type_num(qn); + int targetq_num = quantifier_type_num(qnt); + +#ifdef USE_WARNING_REDUNDANT_NESTED_REPEAT_OPERATOR + if (targetq_num >= 0 && nestq_num >= 0 && + IS_SYNTAX_BV(env->syntax, ONIG_SYN_WARN_REDUNDANT_NESTED_REPEAT)) { + UChar buf[WARN_BUFSIZE]; + + switch(ReduceTypeTable[targetq_num][nestq_num]) { + case RQ_ASIS: + break; + + case RQ_DEL: + if (onig_verb_warn != onig_null_warn) { + onig_snprintf_with_pattern(buf, WARN_BUFSIZE, env->enc, + env->pattern, env->pattern_end, + "redundant nested repeat operator"); + (*onig_verb_warn)((char* )buf); + } + goto warn_exit; + break; + + default: + if (onig_verb_warn != onig_null_warn) { + onig_snprintf_with_pattern(buf, WARN_BUFSIZE, env->enc, + env->pattern, env->pattern_end, + "nested repeat operator %s and %s was replaced with '%s'", + PopularQStr[targetq_num], PopularQStr[nestq_num], + ReduceQStr[ReduceTypeTable[targetq_num][nestq_num]]); + (*onig_verb_warn)((char* )buf); + } + goto warn_exit; + break; + } + } + + warn_exit: +#endif + if (targetq_num >= 0 && nestq_num < 0) { + if (targetq_num == 1 || targetq_num == 2) { /* * or + */ + /* (?:a*){n,m}, (?:a+){n,m} => (?:a*){n,n}, (?:a+){n,n} */ + if (! IS_INFINITE_REPEAT(qn->upper) && qn->upper > 1 && qn->greedy) { + qn->upper = (qn->lower == 0 ? 1 : qn->lower); + } + } + } + else { + int r; + + ND_BODY(qnode) = target; + r = onig_reduce_nested_quantifier(qnode); + return r; + } + } + break; + + default: + break; + } + + ND_BODY(qnode) = target; + return 0; +} + + +#ifndef CASE_FOLD_IS_APPLIED_INSIDE_NEGATIVE_CCLASS +static int +clear_not_flag_cclass(CClassNode* cc, OnigEncoding enc) +{ + BBuf *tbuf; + int r; + + if (IS_NCCLASS_NOT(cc)) { + bitset_invert(cc->bs); + + if (! ONIGENC_IS_SINGLEBYTE(enc)) { + r = not_code_range_buf(enc, cc->mbuf, &tbuf); + if (r != 0) return r; + + bbuf_free(cc->mbuf); + cc->mbuf = tbuf; + } + + NCCLASS_CLEAR_NOT(cc); + } + + return 0; +} +#endif /* CASE_FOLD_IS_APPLIED_INSIDE_NEGATIVE_CCLASS */ + +#define ADD_CODE_INTO_CC(cc, code, enc) do {\ + if (ONIGENC_MBC_MINLEN(enc) > 1 || ONIGENC_CODE_TO_MBCLEN(enc, code) != 1) {\ + add_code_range_to_buf(&((cc)->mbuf), code, code);\ + }\ + else {\ + BITSET_SET_BIT((cc)->bs, code);\ + }\ +} while (0) + +extern int +onig_new_cclass_with_code_list(Node** rnode, OnigEncoding enc, + int n, OnigCodePoint codes[]) +{ + int i; + Node* node; + CClassNode* cc; + + *rnode = NULL_NODE; + + node = node_new_cclass(); + CHECK_NULL_RETURN_MEMERR(node); + + cc = CCLASS_(node); + + for (i = 0; i < n; i++) { + ADD_CODE_INTO_CC(cc, codes[i], enc); + } + + *rnode = node; + return 0; +} + +typedef struct { + ParseEnv* env; + CClassNode* cc; + Node* alt_root; + Node** ptail; +} IApplyCaseFoldArg; + +static int +i_apply_case_fold(OnigCodePoint from, OnigCodePoint to[], int to_len, + void* arg) +{ + IApplyCaseFoldArg* iarg; + ParseEnv* env; + OnigEncoding enc; + CClassNode* cc; + + iarg = (IApplyCaseFoldArg* )arg; + env = iarg->env; + cc = iarg->cc; + enc = env->enc; + + if (to_len == 1) { + int is_in = onig_is_code_in_cc(enc, from, cc); +#ifdef CASE_FOLD_IS_APPLIED_INSIDE_NEGATIVE_CCLASS + if ((is_in != 0 && !IS_NCCLASS_NOT(cc)) || + (is_in == 0 && IS_NCCLASS_NOT(cc))) { + ADD_CODE_INTO_CC(cc, *to, enc); + } +#else + if (is_in != 0) { + if (ONIGENC_MBC_MINLEN(enc) > 1 || + ONIGENC_CODE_TO_MBCLEN(enc, *to) != 1) { + if (IS_NCCLASS_NOT(cc)) clear_not_flag_cclass(cc, enc); + add_code_range(&(cc->mbuf), env, *to, *to); + } + else { + if (IS_NCCLASS_NOT(cc)) { + BITSET_CLEAR_BIT(cc->bs, *to); + } + else + BITSET_SET_BIT(cc->bs, *to); + } + } +#endif /* CASE_FOLD_IS_APPLIED_INSIDE_NEGATIVE_CCLASS */ + } + else { + int r, i, len; + UChar buf[ONIGENC_CODE_TO_MBC_MAXLEN]; + + if (onig_is_code_in_cc(enc, from, cc) +#ifdef CASE_FOLD_IS_APPLIED_INSIDE_NEGATIVE_CCLASS + && !IS_NCCLASS_NOT(cc) +#endif + ) { + int n, j, m, index; + Node* list_node; + Node* ns[3]; + + n = 0; + for (i = 0; i < to_len; i++) { + OnigCodePoint code; + Node* csnode; + CClassNode* cs_cc; + + index = 0; + if (ONIGENC_IS_UNICODE_ENCODING(enc) && + (index = onigenc_unicode_fold1_key(&to[i])) >= 0) { + csnode = node_new_cclass(); + cs_cc = CCLASS_(csnode); + if (IS_NULL(csnode)) { + err_free_ns: + for (j = 0; j < n; j++) onig_node_free(ns[j]); + return ONIGERR_MEMORY; + } + m = FOLDS1_UNFOLDS_NUM(index); + for (j = 0; j < m; j++) { + code = FOLDS1_UNFOLDS(index)[j]; + ADD_CODE_INTO_CC(cs_cc, code, enc); + } + ADD_CODE_INTO_CC(cs_cc, to[i], enc); + ns[n++] = csnode; + } + else { + len = ONIGENC_CODE_TO_MBC(enc, to[i], buf); + if (n == 0 || ND_TYPE(ns[n-1]) != ND_STRING) { + csnode = node_new_str(buf, buf + len); + if (IS_NULL(csnode)) goto err_free_ns; + + if (index == 0) + ND_STATUS_ADD(csnode, IGNORECASE); + else + ND_STRING_SET_CASE_EXPANDED(csnode); + + ns[n++] = csnode; + } + else { + r = onig_node_str_cat(ns[n-1], buf, buf + len); + if (r < 0) goto err_free_ns; + } + } + } + + if (n == 1) + list_node = ns[0]; + else + list_node = make_list(n, ns); + + *(iarg->ptail) = onig_node_new_alt(list_node, NULL_NODE); + if (IS_NULL(*(iarg->ptail))) { + onig_node_free(list_node); + return ONIGERR_MEMORY; + } + iarg->ptail = &(ND_CDR((*(iarg->ptail)))); + } + } + + return 0; +} + +static int +prs_exp(Node** np, PToken* tok, int term, UChar** src, UChar* end, + ParseEnv* env, int group_head) +{ + int r, len, group; + Node* qn; + Node** tp; + unsigned int parse_depth; + + retry: + group = 0; + *np = NULL; + if (tok->type == (enum TokenSyms )term) + goto end_of_token; + + parse_depth = env->parse_depth; + + switch (tok->type) { + case TK_ALT: + case TK_EOT: + end_of_token: + *np = node_new_empty(); + CHECK_NULL_RETURN_MEMERR(*np); + return tok->type; + break; + + case TK_SUBEXP_OPEN: + r = prs_bag(np, tok, TK_SUBEXP_CLOSE, src, end, env); + if (r < 0) return r; + if (r == 1) { /* group */ + if (group_head == 0) + group = 1; + else { + Node* target = *np; + *np = node_new_group(target); + if (IS_NULL(*np)) { + onig_node_free(target); + return ONIGERR_MEMORY; + } + group = 2; + } + } + else if (r == 2) { /* option only */ + if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_ISOLATED_OPTION_CONTINUE_BRANCH)) { + env->options = BAG_(*np)->o.options; + r = fetch_token(tok, src, end, env); + if (r < 0) return r; + onig_node_free(*np); + goto retry; + } + else { + Node* target; + OnigOptionType prev = env->options; + + env->options = BAG_(*np)->o.options; + r = fetch_token(tok, src, end, env); + if (r < 0) return r; + r = prs_alts(&target, tok, term, src, end, env, FALSE); + env->options = prev; + if (r < 0) { + onig_node_free(target); + return r; + } + ND_BODY(*np) = target; + } + return tok->type; + } + break; + + case TK_SUBEXP_CLOSE: + if (! IS_SYNTAX_BV(env->syntax, ONIG_SYN_ALLOW_UNMATCHED_CLOSE_SUBEXP)) + return ONIGERR_UNMATCHED_CLOSE_PARENTHESIS; + + if (tok->escaped) goto tk_crude_byte; + else goto tk_byte; + break; + + case TK_STRING: + tk_byte: + { + *np = node_new_str_with_options(tok->backp, *src, env->options); + tk_byte2: + CHECK_NULL_RETURN_MEMERR(*np); + + while (1) { + r = fetch_token(tok, src, end, env); + if (r < 0) return r; + if (r != TK_STRING) break; + + r = onig_node_str_cat(*np, tok->backp, *src); + if (r < 0) return r; + } + + string_end: + tp = np; + goto repeat; + } + break; + + case TK_CRUDE_BYTE: + tk_crude_byte: + { + *np = node_new_str_crude_char(tok->u.byte, env->options); + CHECK_NULL_RETURN_MEMERR(*np); + len = 1; + while (1) { + if (len >= ONIGENC_MBC_MINLEN(env->enc)) { + if (len == enclen(env->enc, STR_(*np)->s)) { + r = fetch_token(tok, src, end, env); + goto tk_crude_byte_end; + } + } + + r = fetch_token(tok, src, end, env); + if (r < 0) return r; + if (r != TK_CRUDE_BYTE) + return ONIGERR_TOO_SHORT_MULTI_BYTE_STRING; + + r = node_str_cat_char(*np, tok->u.byte); + if (r < 0) return r; + + len++; + } + + tk_crude_byte_end: + if (! ONIGENC_IS_VALID_MBC_STRING(env->enc, STR_(*np)->s, STR_(*np)->end)) + return ONIGERR_INVALID_WIDE_CHAR_VALUE; + + ND_STRING_CLEAR_CRUDE(*np); + goto string_end; + } + break; + + case TK_CODE_POINT: + { + UChar buf[ONIGENC_CODE_TO_MBC_MAXLEN]; + len = ONIGENC_CODE_TO_MBCLEN(env->enc, tok->u.code); + if (len < 0) return len; + len = ONIGENC_CODE_TO_MBC(env->enc, tok->u.code, buf); +#ifdef NUMBERED_CHAR_IS_NOT_CASE_AMBIG + *np = node_new_str_crude(buf, buf + len, env->options); +#else + *np = node_new_str_with_options(buf, buf + len, env->options); +#endif + CHECK_NULL_RETURN_MEMERR(*np); + } + break; + + case TK_QUOTE_OPEN: + { + OnigCodePoint end_op[2]; + UChar *qstart, *qend, *nextp; + + end_op[0] = (OnigCodePoint )MC_ESC(env->syntax); + end_op[1] = (OnigCodePoint )'E'; + qstart = *src; + qend = find_str_position(end_op, 2, qstart, end, &nextp, env->enc); + if (IS_NULL(qend)) { + nextp = qend = end; + } + *np = node_new_str_with_options(qstart, qend, env->options); + CHECK_NULL_RETURN_MEMERR(*np); + *src = nextp; + } + break; + + case TK_CHAR_TYPE: + { + switch (tok->u.prop.ctype) { + case ONIGENC_CTYPE_WORD: + *np = node_new_ctype(tok->u.prop.ctype, tok->u.prop.not, env->options); + CHECK_NULL_RETURN_MEMERR(*np); + break; + + case ONIGENC_CTYPE_SPACE: + case ONIGENC_CTYPE_DIGIT: + case ONIGENC_CTYPE_XDIGIT: + { + CClassNode* cc; + + *np = node_new_cclass(); + CHECK_NULL_RETURN_MEMERR(*np); + cc = CCLASS_(*np); + r = add_ctype_to_cc(cc, tok->u.prop.ctype, FALSE, env); + if (r != 0) { + onig_node_free(*np); + *np = NULL_NODE; + return r; + } + if (tok->u.prop.not != 0) NCCLASS_SET_NOT(cc); + } + break; + + default: + return ONIGERR_PARSER_BUG; + break; + } + } + break; + + case TK_CHAR_PROPERTY: + r = prs_char_property(np, tok, src, end, env); + if (r != 0) return r; + break; + + case TK_OPEN_CC: + { + CClassNode* cc; + + r = prs_cc(np, tok, src, end, env); + if (r != 0) return r; + + cc = CCLASS_(*np); + if (OPTON_IGNORECASE(env->options)) { + IApplyCaseFoldArg iarg; + + iarg.env = env; + iarg.cc = cc; + iarg.alt_root = NULL_NODE; + iarg.ptail = &(iarg.alt_root); + + r = ONIGENC_APPLY_ALL_CASE_FOLD(env->enc, env->reg->case_fold_flag, + i_apply_case_fold, &iarg); + if (r != 0) { + onig_node_free(iarg.alt_root); + return r; + } + if (IS_NOT_NULL(iarg.alt_root)) { + Node* work = onig_node_new_alt(*np, iarg.alt_root); + if (IS_NULL(work)) { + onig_node_free(iarg.alt_root); + return ONIGERR_MEMORY; + } + *np = work; + } + } + } + break; + + case TK_ANYCHAR: + *np = node_new_anychar(env->options); + CHECK_NULL_RETURN_MEMERR(*np); + break; + + case TK_ANYCHAR_ANYTIME: + *np = node_new_anychar(env->options); + CHECK_NULL_RETURN_MEMERR(*np); + qn = node_new_quantifier(0, INFINITE_REPEAT, FALSE); + CHECK_NULL_RETURN_MEMERR(qn); + ND_BODY(qn) = *np; + *np = qn; + break; + + case TK_BACKREF: + len = tok->u.backref.num; + *np = node_new_backref(len, + (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, +#endif + env); + CHECK_NULL_RETURN_MEMERR(*np); + break; + +#ifdef USE_CALL + case TK_CALL: + { + int gnum = tok->u.call.gnum; + + *np = node_new_call(tok->u.call.name, tok->u.call.name_end, + gnum, tok->u.call.by_number); + CHECK_NULL_RETURN_MEMERR(*np); + env->num_call++; + if (tok->u.call.by_number != 0 && gnum == 0) { + env->flags |= PE_FLAG_HAS_CALL_ZERO; + } + } + break; +#endif + + case TK_ANCHOR: + *np = node_new_anchor_with_options(tok->u.anchor, env->options); + CHECK_NULL_RETURN_MEMERR(*np); + break; + + case TK_REPEAT: + case TK_INTERVAL: + if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_CONTEXT_INDEP_REPEAT_OPS)) { + if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_CONTEXT_INVALID_REPEAT_OPS)) + return ONIGERR_TARGET_OF_REPEAT_OPERATOR_NOT_SPECIFIED; + else { + *np = node_new_empty(); + CHECK_NULL_RETURN_MEMERR(*np); + } + } + else { + if (tok->type == TK_INTERVAL && + IS_SYNTAX_OP(env->syntax, ONIG_SYN_OP_ESC_BRACE_INTERVAL)) { + *np = node_new_str_with_options(tok->backp, *src, env->options); + node_str_remove_char(*np, (UChar )'\\'); + goto tk_byte2; + } + else { + goto tk_byte; + } + } + break; + + case TK_KEEP: + r = node_new_keep(np, env); + if (r < 0) return r; + break; + + case TK_GENERAL_NEWLINE: + r = node_new_general_newline(np, env); + if (r < 0) return r; + break; + + case TK_NO_NEWLINE: + r = node_new_no_newline(np, env); + if (r < 0) return r; + break; + + case TK_TRUE_ANYCHAR: + r = node_new_true_anychar(np); + if (r < 0) return r; + break; + + case TK_TEXT_SEGMENT: + r = make_text_segment(np, env); + if (r < 0) return r; + break; + + default: + return ONIGERR_PARSER_BUG; + break; + } + + { + tp = np; + + re_entry: + r = fetch_token(tok, src, end, env); + if (r < 0) return r; + + repeat: + if (r == TK_REPEAT || r == TK_INTERVAL) { + Node* target; + + if (is_invalid_quantifier_target(*tp)) { + if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_CONTEXT_INDEP_REPEAT_OPS)) { + if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_CONTEXT_INVALID_REPEAT_OPS)) + return ONIGERR_TARGET_OF_REPEAT_OPERATOR_INVALID; + } + + return r; + } + + INC_PARSE_DEPTH(parse_depth); + + qn = node_new_quantifier(tok->u.repeat.lower, tok->u.repeat.upper, + r == TK_INTERVAL); + CHECK_NULL_RETURN_MEMERR(qn); + QUANT_(qn)->greedy = tok->u.repeat.greedy; + if (group == 2) { + target = node_drop_group(*tp); + *tp = NULL_NODE; + } + else { + target = *tp; + } + r = assign_quantifier_body(qn, target, group, env); + if (r < 0) { + onig_node_free(qn); + *tp = NULL_NODE; + return r; + } + + if (tok->u.repeat.possessive != 0) { + Node* en; + en = node_new_bag(BAG_STOP_BACKTRACK); + if (IS_NULL(en)) { + onig_node_free(qn); + return ONIGERR_MEMORY; + } + ND_BODY(en) = qn; + qn = en; + } + + if (r == 0) { + *tp = qn; + } + else if (r == 1) { /* x{1,1} ==> x */ + onig_node_free(qn); + *tp = target; + } + else if (r == 2) { /* split case: /abc+/ */ + Node *tmp; + + *tp = node_new_list(*tp, NULL); + if (IS_NULL(*tp)) { + onig_node_free(qn); + return ONIGERR_MEMORY; + } + tmp = ND_CDR(*tp) = node_new_list(qn, NULL); + if (IS_NULL(tmp)) { + onig_node_free(qn); + return ONIGERR_MEMORY; + } + tp = &(ND_CAR(tmp)); + } + group = 0; + goto re_entry; + } + } + + return r; +} + +static int +prs_branch(Node** top, PToken* tok, int term, UChar** src, UChar* end, + ParseEnv* env, int group_head) +{ + int r; + Node *node, **headp; + + *top = NULL; + INC_PARSE_DEPTH(env->parse_depth); + + r = prs_exp(&node, tok, term, src, end, env, group_head); + if (r < 0) { + onig_node_free(node); + return r; + } + + if (r == TK_EOT || r == term || r == TK_ALT) { + *top = node; + } + else { + *top = node_new_list(node, NULL); + if (IS_NULL(*top)) { + mem_err: + onig_node_free(node); + return ONIGERR_MEMORY; + } + + headp = &(ND_CDR(*top)); + while (r != TK_EOT && r != term && r != TK_ALT) { + r = prs_exp(&node, tok, term, src, end, env, FALSE); + if (r < 0) { + onig_node_free(node); + return r; + } + + if (ND_TYPE(node) == ND_LIST) { + *headp = node; + while (IS_NOT_NULL(ND_CDR(node))) node = ND_CDR(node); + headp = &(ND_CDR(node)); + } + else { + *headp = node_new_list(node, NULL); + if (IS_NULL(*headp)) goto mem_err; + headp = &(ND_CDR(*headp)); + } + } + } + + DEC_PARSE_DEPTH(env->parse_depth); + return r; +} + +/* term_tok: TK_EOT or TK_SUBEXP_CLOSE */ +static int +prs_alts(Node** top, PToken* tok, int term, UChar** src, UChar* end, + ParseEnv* env, int group_head) +{ + int r; + Node *node, **headp; + OnigOptionType save_options; + + *top = NULL; + INC_PARSE_DEPTH(env->parse_depth); + save_options = env->options; + + r = prs_branch(&node, tok, term, src, end, env, group_head); + if (r < 0) { + onig_node_free(node); + return r; + } + + if (r == term) { + *top = node; + } + else if (r == TK_ALT) { + *top = onig_node_new_alt(node, NULL); + if (IS_NULL(*top)) { + onig_node_free(node); + return ONIGERR_MEMORY; + } + + headp = &(ND_CDR(*top)); + while (r == TK_ALT) { + r = fetch_token(tok, src, end, env); + if (r < 0) return r; + r = prs_branch(&node, tok, term, src, end, env, FALSE); + if (r < 0) { + onig_node_free(node); + return r; + } + *headp = onig_node_new_alt(node, NULL); + if (IS_NULL(*headp)) { + onig_node_free(node); + onig_node_free(*top); + *top = NULL_NODE; + return ONIGERR_MEMORY; + } + + headp = &(ND_CDR(*headp)); + } + + if (tok->type != (enum TokenSyms )term) + goto err; + } + else { + onig_node_free(node); + err: + if (term == TK_SUBEXP_CLOSE) + return ONIGERR_END_PATTERN_WITH_UNMATCHED_PARENTHESIS; + else + return ONIGERR_PARSER_BUG; + } + + env->options = save_options; + DEC_PARSE_DEPTH(env->parse_depth); + return r; +} + +static int +prs_regexp(Node** top, UChar** src, UChar* end, ParseEnv* env) +{ + int r; + PToken tok; + + ptoken_init(&tok); + r = fetch_token(&tok, src, end, env); + if (r < 0) return r; + r = prs_alts(top, &tok, TK_EOT, src, end, env, FALSE); + if (r < 0) return r; + + return 0; +} + +#ifdef USE_CALL +static int +make_call_zero_body(Node* node, ParseEnv* env, Node** rnode) +{ + int r; + + Node* x = node_new_memory(0 /* 0: is not named */); + CHECK_NULL_RETURN_MEMERR(x); + + ND_BODY(x) = node; + BAG_(x)->m.regnum = 0; + r = scan_env_set_mem_node(env, 0, x); + if (r != 0) { + onig_node_free(x); + return r; + } + + *rnode = x; + return 0; +} +#endif + +extern int +onig_parse_tree(Node** root, const UChar* pattern, const UChar* end, + regex_t* reg, ParseEnv* env) +{ + int r; + UChar* p; +#ifdef USE_CALLOUT + RegexExt* ext; +#endif + + reg->string_pool = 0; + reg->string_pool_end = 0; + reg->num_mem = 0; + reg->num_repeat = 0; + reg->num_empty_check = 0; + reg->repeat_range_alloc = 0; + reg->repeat_range = (RepeatRange* )NULL; + + names_clear(reg); + + scan_env_clear(env); + env->options = reg->options; + env->case_fold_flag = reg->case_fold_flag; + env->enc = reg->enc; + env->syntax = reg->syntax; + env->pattern = (UChar* )pattern; + env->pattern_end = (UChar* )end; + env->reg = reg; + + *root = NULL; + + if (! ONIGENC_IS_VALID_MBC_STRING(env->enc, pattern, end)) + return ONIGERR_INVALID_WIDE_CHAR_VALUE; + + p = (UChar* )pattern; + r = prs_regexp(root, &p, (UChar* )end, env); + if (r != 0) return r; + +#ifdef USE_CALL + if ((env->flags & PE_FLAG_HAS_CALL_ZERO) != 0) { + Node* zero_node; + r = make_call_zero_body(*root, env, &zero_node); + if (r != 0) return r; + + *root = zero_node; + } +#endif + + reg->num_mem = env->num_mem; + +#ifdef USE_CALLOUT + ext = reg->extp; + if (IS_NOT_NULL(ext) && ext->callout_num > 0) { + r = setup_ext_callout_list_values(reg); + } +#endif + + return r; +} + +extern void +onig_scan_env_set_error_string(ParseEnv* env, int ecode ARG_UNUSED, + UChar* arg, UChar* arg_end) +{ + env->error = arg; + env->error_end = arg_end; +} diff --git a/vendor/oniguruma/oniguruma/src/regparse.h b/vendor/oniguruma/oniguruma/src/regparse.h new file mode 100644 index 0000000..adcf00e --- /dev/null +++ b/vendor/oniguruma/oniguruma/src/regparse.h @@ -0,0 +1,494 @@ +#ifndef REGPARSE_H +#define REGPARSE_H +/********************************************************************** + regparse.h - Oniguruma (regular expression library) +**********************************************************************/ +/*- + * Copyright (c) 2002-2022 K.Kosako + * 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. + */ + +#include "regint.h" + +#define ND_STRING_MARGIN 16 +#define ND_STRING_BUF_SIZE 24 /* sizeof(CClassNode) - sizeof(int)*4 */ +#define ND_BACKREFS_SIZE 6 + +/* node type */ +typedef enum { + ND_STRING = 0, + ND_CCLASS = 1, + ND_CTYPE = 2, + ND_BACKREF = 3, + ND_QUANT = 4, + ND_BAG = 5, + ND_ANCHOR = 6, + ND_LIST = 7, + ND_ALT = 8, + ND_CALL = 9, + ND_GIMMICK = 10 +} NodeType; + +enum BagType { + BAG_MEMORY = 0, + BAG_OPTION = 1, + BAG_STOP_BACKTRACK = 2, + BAG_IF_ELSE = 3, +}; + +enum GimmickType { + GIMMICK_FAIL = 0, + GIMMICK_SAVE = 1, + GIMMICK_UPDATE_VAR = 2, +#ifdef USE_CALLOUT + GIMMICK_CALLOUT = 3, +#endif +}; + +enum BodyEmptyType { + BODY_IS_NOT_EMPTY = 0, + BODY_MAY_BE_EMPTY = 1, + BODY_MAY_BE_EMPTY_MEM = 2, + BODY_MAY_BE_EMPTY_REC = 3 +}; + +/* bytes buffer */ +typedef struct _BBuf { + UChar* p; + unsigned int used; + unsigned int alloc; +} BBuf; + + +struct _Node; + +typedef struct { + NodeType node_type; + int status; + struct _Node* parent; + + UChar* s; + UChar* end; + unsigned int flag; + UChar buf[ND_STRING_BUF_SIZE]; + int capacity; /* (allocated size - 1) or 0: use buf[] */ +} StrNode; + +typedef struct { + NodeType node_type; + int status; + struct _Node* parent; + + unsigned int flags; + BitSet bs; + BBuf* mbuf; /* multi-byte info or NULL */ +} CClassNode; + +typedef struct { + NodeType node_type; + int status; + struct _Node* parent; + struct _Node* body; + + int lower; + int upper; + int greedy; + enum BodyEmptyType emptiness; + struct _Node* head_exact; + struct _Node* next_head_exact; + int include_referred; /* include called node. don't eliminate even if {0} */ + MemStatusType empty_status_mem; +} QuantNode; + +typedef struct { + NodeType node_type; + int status; + struct _Node* parent; + struct _Node* body; + + enum BagType type; + union { + struct { + int regnum; + AbsAddrType called_addr; + int entry_count; + int called_state; + } m; + struct { + OnigOptionType options; + } o; + struct { + /* body is condition */ + struct _Node* Then; + struct _Node* Else; + } te; + }; + /* for multiple call reference */ + OnigLen min_len; /* min length (byte) */ + OnigLen max_len; /* max length (byte) */ + OnigLen min_char_len; + OnigLen max_char_len; + int opt_count; /* referenced count in optimize_nodes() */ +} BagNode; + +#ifdef USE_CALL + +typedef struct { + int offset; + struct _Node* target; +} UnsetAddr; + +typedef struct { + int num; + int alloc; + UnsetAddr* us; +} UnsetAddrList; + +typedef struct { + NodeType node_type; + int status; + struct _Node* parent; + struct _Node* body; /* to BagNode : BAG_MEMORY */ + + int by_number; + int called_gnum; + UChar* name; + UChar* name_end; + int entry_count; +} CallNode; + +#endif + +typedef struct { + NodeType node_type; + int status; + struct _Node* parent; + + int back_num; + int back_static[ND_BACKREFS_SIZE]; + int* back_dynamic; + int nest_level; +} BackRefNode; + +typedef struct { + NodeType node_type; + int status; + struct _Node* parent; + struct _Node* body; + + int type; + OnigLen char_min_len; + OnigLen char_max_len; + int ascii_mode; + struct _Node* lead_node; +} AnchorNode; + +typedef struct { + NodeType node_type; + int status; + struct _Node* parent; + + struct _Node* car; + struct _Node* cdr; +} ConsAltNode; + +typedef struct { + NodeType node_type; + int status; + struct _Node* parent; + + int ctype; + int not; + int ascii_mode; +} CtypeNode; + +typedef struct { + NodeType node_type; + int status; + struct _Node* parent; + + enum GimmickType type; + int detail_type; + int num; + int id; +} GimmickNode; + +typedef struct _Node { + union { + struct { + NodeType node_type; + int status; + struct _Node* parent; + struct _Node* body; + } base; + + StrNode str; + CClassNode cclass; + QuantNode quant; + BagNode bag; + BackRefNode backref; + AnchorNode anchor; + ConsAltNode cons; + CtypeNode ctype; +#ifdef USE_CALL + CallNode call; +#endif + GimmickNode gimmick; + } u; +} Node; + +typedef struct { + int new_val; +} GroupNumMap; + + +#define NULL_NODE ((Node* )0) + + +/* node type bit */ +#define ND_TYPE2BIT(type) (1<<(type)) + +#define ND_BIT_STRING ND_TYPE2BIT(ND_STRING) +#define ND_BIT_CCLASS ND_TYPE2BIT(ND_CCLASS) +#define ND_BIT_CTYPE ND_TYPE2BIT(ND_CTYPE) +#define ND_BIT_BACKREF ND_TYPE2BIT(ND_BACKREF) +#define ND_BIT_QUANT ND_TYPE2BIT(ND_QUANT) +#define ND_BIT_BAG ND_TYPE2BIT(ND_BAG) +#define ND_BIT_ANCHOR ND_TYPE2BIT(ND_ANCHOR) +#define ND_BIT_LIST ND_TYPE2BIT(ND_LIST) +#define ND_BIT_ALT ND_TYPE2BIT(ND_ALT) +#define ND_BIT_CALL ND_TYPE2BIT(ND_CALL) +#define ND_BIT_GIMMICK ND_TYPE2BIT(ND_GIMMICK) + +#define ND_TYPE(node) ((node)->u.base.node_type) +#define ND_SET_TYPE(node, ntype) (node)->u.base.node_type = (ntype) + +#define STR_(node) (&((node)->u.str)) +#define CCLASS_(node) (&((node)->u.cclass)) +#define CTYPE_(node) (&((node)->u.ctype)) +#define BACKREF_(node) (&((node)->u.backref)) +#define QUANT_(node) (&((node)->u.quant)) +#define BAG_(node) (&((node)->u.bag)) +#define ANCHOR_(node) (&((node)->u.anchor)) +#define CONS_(node) (&((node)->u.cons)) +#define CALL_(node) (&((node)->u.call)) +#define GIMMICK_(node) (&((node)->u.gimmick)) + +#define ND_CAR(node) (CONS_(node)->car) +#define ND_CDR(node) (CONS_(node)->cdr) + +#define CTYPE_ANYCHAR -1 +#define ND_IS_ANYCHAR(node) \ + (ND_TYPE(node) == ND_CTYPE && CTYPE_(node)->ctype == CTYPE_ANYCHAR) + + +#define ANCR_ANYCHAR_INF_MASK (ANCR_ANYCHAR_INF | ANCR_ANYCHAR_INF_ML) +#define ANCR_END_BUF_MASK (ANCR_END_BUF | ANCR_SEMI_END_BUF) + +#define ND_STRING_CRUDE (1<<0) +#define ND_STRING_CASE_EXPANDED (1<<1) + +#define ND_STRING_LEN(node) (int )((node)->u.str.end - (node)->u.str.s) +#define ND_STRING_SET_CRUDE(node) (node)->u.str.flag |= ND_STRING_CRUDE +#define ND_STRING_CLEAR_CRUDE(node) (node)->u.str.flag &= ~ND_STRING_CRUDE +#define ND_STRING_SET_CASE_EXPANDED(node) (node)->u.str.flag |= ND_STRING_CASE_EXPANDED +#define ND_STRING_IS_CRUDE(node) \ + (((node)->u.str.flag & ND_STRING_CRUDE) != 0) +#define ND_STRING_IS_CASE_EXPANDED(node) \ + (((node)->u.str.flag & ND_STRING_CASE_EXPANDED) != 0) + +#define BACKREFS_P(br) \ + (IS_NOT_NULL((br)->back_dynamic) ? (br)->back_dynamic : (br)->back_static) + +/* node status bits */ +#define ND_ST_FIXED_MIN (1<<0) +#define ND_ST_FIXED_MAX (1<<1) +#define ND_ST_FIXED_CLEN (1<<2) +#define ND_ST_MARK1 (1<<3) +#define ND_ST_MARK2 (1<<4) +#define ND_ST_STRICT_REAL_REPEAT (1<<5) +#define ND_ST_RECURSION (1<<6) +#define ND_ST_CALLED (1<<7) +#define ND_ST_FIXED_ADDR (1<<8) +#define ND_ST_NAMED_GROUP (1<<9) +#define ND_ST_IN_REAL_REPEAT (1<<10) /* STK_REPEAT is nested in stack. */ +#define ND_ST_IN_ZERO_REPEAT (1<<11) /* (....){0} */ +#define ND_ST_IN_MULTI_ENTRY (1<<12) +#define ND_ST_NEST_LEVEL (1<<13) +#define ND_ST_BY_NUMBER (1<<14) /* {n,m} */ +#define ND_ST_BY_NAME (1<<15) /* backref by name */ +#define ND_ST_BACKREF (1<<16) +#define ND_ST_CHECKER (1<<17) +#define ND_ST_PROHIBIT_RECURSION (1<<18) +#define ND_ST_SUPER (1<<19) +#define ND_ST_EMPTY_STATUS_CHECK (1<<20) +#define ND_ST_IGNORECASE (1<<21) +#define ND_ST_MULTILINE (1<<22) +#define ND_ST_TEXT_SEGMENT_WORD (1<<23) +#define ND_ST_ABSENT_WITH_SIDE_EFFECTS (1<<24) /* stopper or clear */ +#define ND_ST_FIXED_CLEN_MIN_SURE (1<<25) +#define ND_ST_REFERENCED (1<<26) +#define ND_ST_INPEEK (1<<27) +#define ND_ST_WHOLE_OPTIONS (1<<28) + + +#define ND_STATUS(node) (((Node* )node)->u.base.status) +#define ND_STATUS_ADD(node,f) (ND_STATUS(node) |= (ND_ST_ ## f)) +#define ND_STATUS_REMOVE(node,f) (ND_STATUS(node) &= ~(ND_ST_ ## f)) + +#define ND_IS_BY_NUMBER(node) ((ND_STATUS(node) & ND_ST_BY_NUMBER) != 0) +#define ND_IS_IN_REAL_REPEAT(node) ((ND_STATUS(node) & ND_ST_IN_REAL_REPEAT) != 0) +#define ND_IS_CALLED(node) ((ND_STATUS(node) & ND_ST_CALLED) != 0) +#define ND_IS_IN_MULTI_ENTRY(node) ((ND_STATUS(node) & ND_ST_IN_MULTI_ENTRY) != 0) +#define ND_IS_RECURSION(node) ((ND_STATUS(node) & ND_ST_RECURSION) != 0) +#define ND_IS_IN_ZERO_REPEAT(node) ((ND_STATUS(node) & ND_ST_IN_ZERO_REPEAT) != 0) +#define ND_IS_NAMED_GROUP(node) ((ND_STATUS(node) & ND_ST_NAMED_GROUP) != 0) +#define ND_IS_FIXED_ADDR(node) ((ND_STATUS(node) & ND_ST_FIXED_ADDR) != 0) +#define ND_IS_FIXED_CLEN(node) ((ND_STATUS(node) & ND_ST_FIXED_CLEN) != 0) +#define ND_IS_FIXED_MIN(node) ((ND_STATUS(node) & ND_ST_FIXED_MIN) != 0) +#define ND_IS_FIXED_MAX(node) ((ND_STATUS(node) & ND_ST_FIXED_MAX) != 0) +#define ND_IS_MARK1(node) ((ND_STATUS(node) & ND_ST_MARK1) != 0) +#define ND_IS_MARK2(node) ((ND_STATUS(node) & ND_ST_MARK2) != 0) +#define ND_IS_NEST_LEVEL(node) ((ND_STATUS(node) & ND_ST_NEST_LEVEL) != 0) +#define ND_IS_BY_NAME(node) ((ND_STATUS(node) & ND_ST_BY_NAME) != 0) +#define ND_IS_BACKREF(node) ((ND_STATUS(node) & ND_ST_BACKREF) != 0) +#define ND_IS_CHECKER(node) ((ND_STATUS(node) & ND_ST_CHECKER) != 0) +#define ND_IS_SUPER(node) ((ND_STATUS(node) & ND_ST_SUPER) != 0) +#define ND_IS_PROHIBIT_RECURSION(node) \ + ((ND_STATUS(node) & ND_ST_PROHIBIT_RECURSION) != 0) +#define ND_IS_STRICT_REAL_REPEAT(node) \ + ((ND_STATUS(node) & ND_ST_STRICT_REAL_REPEAT) != 0) +#define ND_IS_EMPTY_STATUS_CHECK(node) \ + ((ND_STATUS(node) & ND_ST_EMPTY_STATUS_CHECK) != 0) +#define ND_IS_IGNORECASE(node) ((ND_STATUS(node) & ND_ST_IGNORECASE) != 0) +#define ND_IS_MULTILINE(node) ((ND_STATUS(node) & ND_ST_MULTILINE) != 0) +#define ND_IS_TEXT_SEGMENT_WORD(node) ((ND_STATUS(node) & ND_ST_TEXT_SEGMENT_WORD) != 0) +#define ND_IS_ABSENT_WITH_SIDE_EFFECTS(node) ((ND_STATUS(node) & ND_ST_ABSENT_WITH_SIDE_EFFECTS) != 0) +#define ND_IS_FIXED_CLEN_MIN_SURE(node) ((ND_STATUS(node) & ND_ST_FIXED_CLEN_MIN_SURE) != 0) +#define ND_IS_REFERENCED(node) ((ND_STATUS(node) & ND_ST_REFERENCED) != 0) +#define ND_IS_INPEEK(node) ((ND_STATUS(node) & ND_ST_INPEEK) != 0) +#define ND_IS_WHOLE_OPTIONS(node) ((ND_STATUS(node) & ND_ST_WHOLE_OPTIONS) != 0) + +#define ND_PARENT(node) ((node)->u.base.parent) +#define ND_BODY(node) ((node)->u.base.body) +#define ND_QUANT_BODY(node) ((node)->body) +#define ND_BAG_BODY(node) ((node)->body) +#define ND_CALL_BODY(node) ((node)->body) +#define ND_ANCHOR_BODY(node) ((node)->body) + +#define PARSEENV_MEMENV_SIZE 8 +#define PARSEENV_MEMENV(senv) \ + (IS_NOT_NULL((senv)->mem_env_dynamic) ? \ + (senv)->mem_env_dynamic : (senv)->mem_env_static) + +#define IS_SYNTAX_OP(syn, opm) (((syn)->op & (opm)) != 0) +#define IS_SYNTAX_OP2(syn, opm) (((syn)->op2 & (opm)) != 0) +#define IS_SYNTAX_BV(syn, bvm) (((syn)->behavior & (bvm)) != 0) + +#define ID_ENTRY(env, id) do {\ + id = (env)->id_num++;\ +} while(0) + + +typedef struct { + Node* mem_node; + Node* empty_repeat_node; +} MemEnv; + +typedef struct { + enum SaveType type; +} SaveItem; + +typedef struct { + OnigOptionType options; + OnigCaseFoldType case_fold_flag; + OnigEncoding enc; + OnigSyntaxType* syntax; + MemStatusType cap_history; + MemStatusType backtrack_mem; /* backtrack/recursion */ + MemStatusType backrefed_mem; + UChar* pattern; + UChar* pattern_end; + UChar* error; + UChar* error_end; + regex_t* reg; /* for reg->names only */ + int num_call; + int num_mem; + int num_named; + int mem_alloc; + MemEnv mem_env_static[PARSEENV_MEMENV_SIZE]; + MemEnv* mem_env_dynamic; + int backref_num; + int keep_num; + int id_num; + int save_alloc_num; + SaveItem* saves; +#ifdef USE_CALL + UnsetAddrList* unset_addr_list; +#endif + unsigned int parse_depth; +#ifdef ONIG_DEBUG_PARSE + unsigned int max_parse_depth; +#endif + unsigned int flags; +} ParseEnv; + +#define PE_FLAG_HAS_CALL_ZERO (1<<0) +#define PE_FLAG_HAS_WHOLE_OPTIONS (1<<1) +#define PE_FLAG_HAS_ABSENT_STOPPER (1<<2) + + +extern int onig_renumber_name_table P_((regex_t* reg, GroupNumMap* map)); + +extern int onig_strncmp P_((const UChar* s1, const UChar* s2, int n)); +extern void onig_strcpy P_((UChar* dest, const UChar* src, const UChar* end)); +extern void onig_scan_env_set_error_string P_((ParseEnv* env, int ecode, UChar* arg, UChar* arg_end)); +extern int onig_reduce_nested_quantifier P_((Node* pnode)); +extern int onig_node_copy(Node** rcopy, Node* from); +extern int onig_node_str_cat P_((Node* node, const UChar* s, const UChar* end)); +extern int onig_node_str_set P_((Node* node, const UChar* s, const UChar* end, int need_free)); +extern void onig_node_str_clear P_((Node* node, int need_free)); +extern void onig_node_free P_((Node* node)); +extern int onig_node_reset_empty P_((Node* node)); +extern int onig_node_reset_fail P_((Node* node)); +extern Node* onig_node_new_bag P_((enum BagType type)); +extern Node* onig_node_new_str P_((const UChar* s, const UChar* end)); +extern Node* onig_node_new_list P_((Node* left, Node* right)); +extern Node* onig_node_new_alt P_((Node* left, Node* right)); +extern int onig_names_free P_((regex_t* reg)); +extern int onig_parse_tree P_((Node** root, const UChar* pattern, const UChar* end, regex_t* reg, ParseEnv* env)); +extern int onig_free_shared_cclass_table P_((void)); +extern int onig_is_code_in_cc P_((OnigEncoding enc, OnigCodePoint code, CClassNode* cc)); +extern int onig_new_cclass_with_code_list(Node** rnode, OnigEncoding enc, int n, OnigCodePoint codes[]); +extern OnigLen onig_get_tiny_min_len(Node* node, unsigned int inhibit_node_types, int* invalid_node); + +#ifdef USE_CALLOUT +extern int onig_global_callout_names_free(void); +#endif + +#ifdef ONIG_DEBUG +extern int onig_print_names(FILE*, regex_t*); +#endif + +#endif /* REGPARSE_H */ diff --git a/vendor/onig/regposerr.c b/vendor/oniguruma/oniguruma/src/regposerr.c similarity index 69% rename from vendor/onig/regposerr.c rename to vendor/oniguruma/oniguruma/src/regposerr.c index a510a3e..e5b7899 100644 --- a/vendor/onig/regposerr.c +++ b/vendor/oniguruma/oniguruma/src/regposerr.c @@ -1,9 +1,8 @@ /********************************************************************** - regposerr.c - Onigmo (Oniguruma-mod) (regular expression library) + regposerr.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2007 K.Kosako - * Copyright (c) 2011-2016 K.Takata + * Copyright (c) 2002-2020 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -28,27 +27,61 @@ * SUCH DAMAGE. */ +/* Can't include regint.h etc.. for conflict of regex_t. + Define ONIGURUMA_EXPORT here for onigposix.h. + */ +#ifndef ONIGURUMA_EXPORT +#define ONIGURUMA_EXPORT +#endif + #include "config.h" -#include "onigmoposix.h" +#include "onigposix.h" + +#undef regex_t +#undef regmatch_t +#undef regoff_t +#undef regcomp +#undef regexec +#undef regfree +#undef regerror +#undef reg_set_encoding +#undef reg_name_to_group_numbers +#undef reg_foreach_name +#undef reg_number_of_names + +#ifndef ONIG_NO_STANDARD_C_HEADERS #include +#include +#endif #if defined(__GNUC__) -# define ARG_UNUSED __attribute__ ((unused)) +# define ARG_UNUSED __attribute__ ((unused)) #else -# define ARG_UNUSED +# define ARG_UNUSED #endif #if defined(_WIN32) && !defined(__GNUC__) -# define xsnprintf sprintf_s -# define xstrncpy(dest,src,size) strncpy_s(dest,size,src,_TRUNCATE) + +#ifndef xsnprintf +#define xsnprintf sprintf_s +#endif +#ifndef xstrncpy +#define xstrncpy(dest,src,size) strncpy_s(dest,size,src,_TRUNCATE) +#endif + #else -# define xsnprintf snprintf -# define xstrncpy strncpy + +#ifndef xsnprintf +#define xsnprintf snprintf +#endif +#ifndef xstrncpy +#define xstrncpy strncpy +#endif + #endif -#define numberof(array) (int)(sizeof(array) / sizeof((array)[0])) -static const char* ESTRING[] = { +static char* ESTRING[] = { NULL, "failed to match", /* REG_NOMATCH */ "Invalid regular expression", /* REG_BADPAT */ @@ -67,22 +100,20 @@ static const char* ESTRING[] = { /* Extended errors */ "internal error", /* REG_EONIG_INTERNAL */ "invalid wide char value", /* REG_EONIG_BADWC */ - "invalid argument", /* REG_EONIG_BADARG */ + "invalid argument" /* REG_EONIG_BADARG */ }; -#include - extern size_t -regerror(int posix_ecode, const regex_t* reg ARG_UNUSED, char* buf, - size_t size) +onig_posix_regerror(int posix_ecode, const onig_posix_regex_t* reg ARG_UNUSED, + char* buf, size_t size) { - const char* s; + char* s; char tbuf[35]; size_t len; if (posix_ecode > 0 - && posix_ecode < numberof(ESTRING)) { + && posix_ecode < (int )(sizeof(ESTRING) / sizeof(ESTRING[0]))) { s = ESTRING[posix_ecode]; } else if (posix_ecode == 0) { @@ -101,3 +132,14 @@ regerror(int posix_ecode, const regex_t* reg ARG_UNUSED, char* buf, } return len; } + +#ifdef USE_BINARY_COMPATIBLE_POSIX_API + +extern size_t +regerror(int posix_ecode, const onig_posix_regex_t* reg ARG_UNUSED, + char* buf, size_t size) +{ + return onig_posix_regerror(posix_ecode, reg, buf, size); +} + +#endif diff --git a/vendor/onig/regposix.c b/vendor/oniguruma/oniguruma/src/regposix.c similarity index 68% rename from vendor/onig/regposix.c rename to vendor/oniguruma/oniguruma/src/regposix.c index 6beaf34..73f4ab5 100644 --- a/vendor/onig/regposix.c +++ b/vendor/oniguruma/oniguruma/src/regposix.c @@ -1,9 +1,8 @@ /********************************************************************** - regposix.c - Onigmo (Oniguruma-mod) (regular expression library) + regposix.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2008 K.Kosako - * Copyright (c) 2011-2016 K.Takata + * Copyright (c) 2002-2022 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -31,7 +30,20 @@ #define regex_t onig_regex_t #include "regint.h" #undef regex_t -#include "onigmoposix.h" + +#include "onigposix.h" + +#undef regex_t +#undef regmatch_t +#undef regoff_t +#undef regcomp +#undef regexec +#undef regfree +#undef regerror +#undef reg_set_encoding +#undef reg_name_to_group_numbers +#undef reg_foreach_name +#undef reg_number_of_names #define ONIG_C(reg) ((onig_regex_t* )((reg)->onig)) #define PONIG_C(reg) ((onig_regex_t** )(&(reg)->onig)) @@ -41,7 +53,7 @@ if (ONIGENC_MBC_MINLEN(enc) == 1) { \ UChar* tmps = (UChar* )(s); \ while (*tmps != 0) tmps++; \ - len = (int )(tmps - (UChar* )(s)); \ + len = (int )(tmps - (UChar* )(s));\ } \ else { \ len = onigenc_str_bytelen_null(enc, (UChar* )s); \ @@ -59,8 +71,12 @@ onig2posix_error_code(int code) static const O2PERR o2p[] = { { ONIG_MISMATCH, REG_NOMATCH }, { ONIG_NO_SUPPORT_CONFIG, REG_EONIG_INTERNAL }, + { ONIG_ABORT, REG_EONIG_INTERNAL }, { ONIGERR_MEMORY, REG_ESPACE }, { ONIGERR_MATCH_STACK_LIMIT_OVER, REG_EONIG_INTERNAL }, + { ONIGERR_RETRY_LIMIT_IN_MATCH_OVER, REG_EONIG_INTERNAL }, + { ONIGERR_RETRY_LIMIT_IN_SEARCH_OVER, REG_EONIG_INTERNAL }, + { ONIGERR_SUBEXP_CALL_LIMIT_IN_SEARCH_OVER, REG_EONIG_INTERNAL }, { ONIGERR_TYPE_BUG, REG_EONIG_INTERNAL }, { ONIGERR_PARSER_BUG, REG_EONIG_INTERNAL }, { ONIGERR_STACK_BUG, REG_EONIG_INTERNAL }, @@ -68,6 +84,7 @@ onig2posix_error_code(int code) { ONIGERR_UNEXPECTED_BYTECODE, REG_EONIG_INTERNAL }, { ONIGERR_DEFAULT_ENCODING_IS_NOT_SET, REG_EONIG_BADARG }, { ONIGERR_SPECIFIED_ENCODING_CANT_CONVERT_TO_WIDE_CHAR, REG_EONIG_BADARG }, + { ONIGERR_FAIL_TO_INITIALIZE, REG_EONIG_INTERNAL }, { ONIGERR_INVALID_ARGUMENT, REG_EONIG_BADARG }, { ONIGERR_END_PATTERN_AT_LEFT_BRACE, REG_EBRACE }, { ONIGERR_END_PATTERN_AT_LEFT_BRACKET, REG_EBRACK }, @@ -88,6 +105,7 @@ onig2posix_error_code(int code) { ONIGERR_END_PATTERN_WITH_UNMATCHED_PARENTHESIS, REG_EPAREN }, { ONIGERR_END_PATTERN_IN_GROUP, REG_BADPAT }, { ONIGERR_UNDEFINED_GROUP_OPTION, REG_BADPAT }, + { ONIGERR_INVALID_GROUP_OPTION, REG_BADPAT }, { ONIGERR_INVALID_POSIX_BRACKET_TYPE, REG_BADPAT }, { ONIGERR_INVALID_LOOK_BEHIND_PATTERN, REG_BADPAT }, { ONIGERR_INVALID_REPEAT_RANGE_PATTERN, REG_BADPAT }, @@ -103,6 +121,7 @@ onig2posix_error_code(int code) { ONIGERR_NUMBERED_BACKREF_OR_CALL_NOT_ALLOWED, REG_BADPAT }, { ONIGERR_TOO_BIG_WIDE_CHAR_VALUE, REG_EONIG_BADWC }, { ONIGERR_TOO_LONG_WIDE_CHAR_VALUE, REG_EONIG_BADWC }, + { ONIGERR_UNDEFINED_OPERATOR, REG_BADPAT }, { ONIGERR_INVALID_CODE_POINT_VALUE, REG_EONIG_BADWC }, { ONIGERR_EMPTY_GROUP_NAME, REG_BADPAT }, { ONIGERR_INVALID_GROUP_NAME, REG_BADPAT }, @@ -114,15 +133,25 @@ onig2posix_error_code(int code) { ONIGERR_NEVER_ENDING_RECURSION, REG_BADPAT }, { ONIGERR_GROUP_NUMBER_OVER_FOR_CAPTURE_HISTORY, REG_BADPAT }, { ONIGERR_INVALID_CHAR_PROPERTY_NAME, REG_BADPAT }, + { ONIGERR_INVALID_IF_ELSE_SYNTAX, REG_BADPAT }, + { ONIGERR_INVALID_ABSENT_GROUP_PATTERN, REG_BADPAT }, + { ONIGERR_INVALID_ABSENT_GROUP_GENERATOR_PATTERN, REG_BADPAT }, + { ONIGERR_INVALID_CALLOUT_PATTERN, REG_BADPAT }, + { ONIGERR_INVALID_CALLOUT_NAME, REG_BADPAT }, + { ONIGERR_UNDEFINED_CALLOUT_NAME, REG_BADPAT }, + { ONIGERR_INVALID_CALLOUT_BODY, REG_BADPAT }, + { ONIGERR_INVALID_CALLOUT_TAG_NAME, REG_BADPAT }, + { ONIGERR_INVALID_CALLOUT_ARG, REG_BADPAT }, { ONIGERR_NOT_SUPPORTED_ENCODING_COMBINATION, REG_EONIG_BADARG }, - + { ONIGERR_VERY_INEFFICIENT_PATTERN, REG_BADPAT }, + { ONIGERR_LIBRARY_IS_NOT_INITIALIZED, REG_EONIG_INTERNAL } }; int i; if (code >= 0) return 0; - for (i = 0; i < numberof(o2p); i++) { + for (i = 0; i < (int )(sizeof(o2p) / sizeof(o2p[0])); i++) { if (code == o2p[i].onig_err) return o2p[i].posix_err; } @@ -131,12 +160,14 @@ onig2posix_error_code(int code) } extern int -regcomp(regex_t* reg, const char* pattern, int posix_options) +onig_posix_regcomp(onig_posix_regex_t* reg, const char* pattern, int posix_options) { int r, len; - const OnigSyntaxType* syntax = OnigDefaultSyntax; + OnigSyntaxType* syntax = OnigDefaultSyntax; OnigOptionType options; + reg->onig = (void* )0; + if ((posix_options & REG_EXTENDED) == 0) syntax = ONIG_SYNTAX_POSIX_BASIC; @@ -152,8 +183,8 @@ regcomp(regex_t* reg, const char* pattern, int posix_options) ENC_STRING_LEN(OnigEncDefaultCharEncoding, pattern, len); r = onig_new(PONIG_C(reg), (UChar* )pattern, (UChar* )(pattern + len), - options, OnigEncDefaultCharEncoding, syntax, - (OnigErrorInfo* )NULL); + options, OnigEncDefaultCharEncoding, syntax, + (OnigErrorInfo* )NULL); if (r != ONIG_NORMAL) { return onig2posix_error_code(r); } @@ -163,37 +194,41 @@ regcomp(regex_t* reg, const char* pattern, int posix_options) } extern int -regexec(regex_t* reg, const char* str, size_t nmatch, - regmatch_t pmatch[], int posix_options) +onig_posix_regexec(onig_posix_regex_t* reg, const char* str, size_t nmatch, + onig_posix_regmatch_t pmatch[], int posix_options) { int r, i, len; UChar* end; - OnigRegion* region = NULL; + onig_posix_regmatch_t* pm; OnigOptionType options; - options = ONIG_OPTION_NONE; + options = ONIG_OPTION_POSIX_REGION; if ((posix_options & REG_NOTBOL) != 0) options |= ONIG_OPTION_NOTBOL; if ((posix_options & REG_NOTEOL) != 0) options |= ONIG_OPTION_NOTEOL; - if ((reg->comp_options & REG_NOSUB) != 0) { + if (nmatch == 0 || (reg->comp_options & REG_NOSUB) != 0) { + pm = (onig_posix_regmatch_t* )NULL; nmatch = 0; } - else if (nmatch != 0) { - region = onig_region_new(); - if (region == NULL) + else if ((int )nmatch < ONIG_C(reg)->num_mem + 1) { + pm = (onig_posix_regmatch_t* )xmalloc(sizeof(onig_posix_regmatch_t) + * (ONIG_C(reg)->num_mem + 1)); + if (pm == NULL) return REG_ESPACE; } + else { + pm = pmatch; + } ENC_STRING_LEN(ONIG_C(reg)->enc, str, len); end = (UChar* )(str + len); - r = (int )onig_search(ONIG_C(reg), (UChar* )str, end, (UChar* )str, end, - region, options); + r = onig_search(ONIG_C(reg), (UChar* )str, end, (UChar* )str, end, + (OnigRegion* )pm, options); if (r >= 0) { r = 0; /* Match */ - for (i = 0; i < (int )nmatch; i++) { - pmatch[i].rm_so = (regoff_t )region->beg[i]; - pmatch[i].rm_eo = (regoff_t )region->end[i]; + if (pm != pmatch && pm != NULL) { + xmemcpy(pmatch, pm, sizeof(onig_posix_regmatch_t) * nmatch); } } else if (r == ONIG_MISMATCH) { @@ -205,8 +240,8 @@ regexec(regex_t* reg, const char* str, size_t nmatch, r = onig2posix_error_code(r); } - if (region != NULL) - onig_region_free(region, 1); + if (pm != pmatch && pm != NULL) + xfree(pm); #if 0 if (reg->re_nsub > nmatch - 1) @@ -217,14 +252,15 @@ regexec(regex_t* reg, const char* str, size_t nmatch, } extern void -regfree(regex_t* reg) +onig_posix_regfree(onig_posix_regex_t* reg) { onig_free(ONIG_C(reg)); + reg->onig = (void* )0; } extern void -reg_set_encoding(int mb_code) +onig_posix_reg_set_encoding(int mb_code) { OnigEncoding enc; @@ -253,25 +289,27 @@ reg_set_encoding(int mb_code) break; } + onig_initialize(&enc, 1); + onigenc_set_default_encoding(enc); } extern int -reg_name_to_group_numbers(regex_t* reg, +onig_posix_reg_name_to_group_numbers(onig_posix_regex_t* reg, const unsigned char* name, const unsigned char* name_end, int** nums) { return onig_name_to_group_numbers(ONIG_C(reg), name, name_end, nums); } typedef struct { - int (*func)(const unsigned char*, const unsigned char*,int,int*,regex_t*,void*); - regex_t* reg; + int (*func)(const unsigned char*, const unsigned char*,int,int*,onig_posix_regex_t*,void*); + onig_posix_regex_t* reg; void* arg; } i_wrap; static int i_wrapper(const UChar* name, const UChar* name_end, int ng, int* gs, - onig_regex_t* reg ARG_UNUSED, void* arg) + onig_regex_t* reg ARG_UNUSED, void* arg) { i_wrap* warg = (i_wrap* )arg; @@ -279,8 +317,8 @@ i_wrapper(const UChar* name, const UChar* name_end, int ng, int* gs, } extern int -reg_foreach_name(regex_t* reg, - int (*func)(const unsigned char*, const unsigned char*,int,int*,regex_t*,void*), +onig_posix_reg_foreach_name(onig_posix_regex_t* reg, + int (*func)(const unsigned char*, const unsigned char*,int,int*,onig_posix_regex_t*,void*), void* arg) { i_wrap warg; @@ -293,7 +331,58 @@ reg_foreach_name(regex_t* reg, } extern int -reg_number_of_names(regex_t* reg) +onig_posix_reg_number_of_names(onig_posix_regex_t* reg) { return onig_number_of_names(ONIG_C(reg)); } + + +#ifdef USE_BINARY_COMPATIBLE_POSIX_API + +extern int +regcomp(onig_posix_regex_t* reg, const char* pattern, int posix_options) +{ + return onig_posix_regcomp(reg, pattern, posix_options); +} + +extern int +regexec(onig_posix_regex_t* reg, const char* str, size_t nmatch, + onig_posix_regmatch_t pmatch[], int posix_options) +{ + return onig_posix_regexec(reg, str, nmatch, pmatch, posix_options); +} + +extern void +regfree(onig_posix_regex_t* reg) +{ + onig_posix_regfree(reg); +} + +extern void +reg_set_encoding(int mb_code) +{ + onig_posix_reg_set_encoding(mb_code); +} + +extern int +reg_name_to_group_numbers(onig_posix_regex_t* reg, + const unsigned char* name, const unsigned char* name_end, int** nums) +{ + return onig_posix_reg_name_to_group_numbers(reg, name, name_end, nums); +} + +extern int +reg_foreach_name(onig_posix_regex_t* reg, + int (*func)(const unsigned char*, const unsigned char*,int,int*,onig_posix_regex_t*,void*), + void* arg) +{ + return onig_posix_reg_foreach_name(reg, func, arg); +} + +extern int +reg_number_of_names(onig_posix_regex_t* reg) +{ + return onig_posix_reg_number_of_names(reg); +} + +#endif /* USE_BINARY_COMPATIBLE_POSIX_API */ diff --git a/vendor/onig/regsyntax.c b/vendor/oniguruma/oniguruma/src/regsyntax.c similarity index 74% rename from vendor/onig/regsyntax.c rename to vendor/oniguruma/oniguruma/src/regsyntax.c index 657ffcd..96799d8 100644 --- a/vendor/onig/regsyntax.c +++ b/vendor/oniguruma/oniguruma/src/regsyntax.c @@ -1,9 +1,8 @@ /********************************************************************** - regsyntax.c - Onigmo (Oniguruma-mod) (regular expression library) + regsyntax.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2006 K.Kosako - * Copyright (c) 2011-2016 K.Takata + * Copyright (c) 2002-2024 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -30,7 +29,7 @@ #include "regint.h" -const OnigSyntaxType OnigSyntaxASIS = { +OnigSyntaxType OnigSyntaxASIS = { 0 , ONIG_SYN_OP2_INEFFECTIVE_ESCAPE , 0 @@ -46,11 +45,11 @@ const OnigSyntaxType OnigSyntaxASIS = { } }; -const OnigSyntaxType OnigSyntaxPosixBasic = { +OnigSyntaxType OnigSyntaxPosixBasic = { ( SYN_POSIX_COMMON_OP | ONIG_SYN_OP_ESC_LPAREN_SUBEXP | ONIG_SYN_OP_ESC_BRACE_INTERVAL ) , 0 - , 0 + , ( ONIG_SYN_BRE_ANCHOR_AT_EDGE_OF_SUBEXP ) , ( ONIG_OPTION_SINGLELINE | ONIG_OPTION_MULTILINE ) , { @@ -63,7 +62,7 @@ const OnigSyntaxType OnigSyntaxPosixBasic = { } }; -const OnigSyntaxType OnigSyntaxPosixExtended = { +OnigSyntaxType OnigSyntaxPosixExtended = { ( SYN_POSIX_COMMON_OP | ONIG_SYN_OP_LPAREN_SUBEXP | ONIG_SYN_OP_BRACE_INTERVAL | ONIG_SYN_OP_PLUS_ONE_INF | ONIG_SYN_OP_QMARK_ZERO_ONE | ONIG_SYN_OP_VBAR_ALT ) @@ -84,14 +83,14 @@ const OnigSyntaxType OnigSyntaxPosixExtended = { } }; -const OnigSyntaxType OnigSyntaxEmacs = { +OnigSyntaxType OnigSyntaxEmacs = { ( ONIG_SYN_OP_DOT_ANYCHAR | ONIG_SYN_OP_BRACKET_CC | ONIG_SYN_OP_ESC_BRACE_INTERVAL | ONIG_SYN_OP_ESC_LPAREN_SUBEXP | ONIG_SYN_OP_ESC_VBAR_ALT | ONIG_SYN_OP_ASTERISK_ZERO_INF | ONIG_SYN_OP_PLUS_ONE_INF | ONIG_SYN_OP_QMARK_ZERO_ONE | ONIG_SYN_OP_DECIMAL_BACKREF | ONIG_SYN_OP_LINE_ANCHOR | ONIG_SYN_OP_ESC_CONTROL_CHARS ) - , ONIG_SYN_OP2_ESC_GNU_BUF_ANCHOR + , ( ONIG_SYN_OP2_ESC_GNU_BUF_ANCHOR | ONIG_SYN_OP2_QMARK_GROUP_EFFECT ) , ONIG_SYN_ALLOW_EMPTY_RANGE_IN_CC , ONIG_OPTION_NONE , @@ -105,7 +104,7 @@ const OnigSyntaxType OnigSyntaxEmacs = { } }; -const OnigSyntaxType OnigSyntaxGrep = { +OnigSyntaxType OnigSyntaxGrep = { ( ONIG_SYN_OP_DOT_ANYCHAR | ONIG_SYN_OP_BRACKET_CC | ONIG_SYN_OP_POSIX_BRACKET | ONIG_SYN_OP_ESC_BRACE_INTERVAL | ONIG_SYN_OP_ESC_LPAREN_SUBEXP | ONIG_SYN_OP_ESC_VBAR_ALT | @@ -114,7 +113,8 @@ const OnigSyntaxType OnigSyntaxGrep = { ONIG_SYN_OP_ESC_W_WORD | ONIG_SYN_OP_ESC_B_WORD_BOUND | ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END | ONIG_SYN_OP_DECIMAL_BACKREF ) , 0 - , ( ONIG_SYN_ALLOW_EMPTY_RANGE_IN_CC | ONIG_SYN_NOT_NEWLINE_IN_NEGATIVE_CC ) + , ( ONIG_SYN_ALLOW_EMPTY_RANGE_IN_CC | ONIG_SYN_NOT_NEWLINE_IN_NEGATIVE_CC | + ONIG_SYN_BRE_ANCHOR_AT_EDGE_OF_SUBEXP ) , ONIG_OPTION_NONE , { @@ -127,7 +127,7 @@ const OnigSyntaxType OnigSyntaxGrep = { } }; -const OnigSyntaxType OnigSyntaxGnuRegex = { +OnigSyntaxType OnigSyntaxGnuRegex = { SYN_GNU_REGEX_OP , 0 , SYN_GNU_REGEX_BV @@ -143,19 +143,21 @@ const OnigSyntaxType OnigSyntaxGnuRegex = { } }; -const OnigSyntaxType OnigSyntaxJava = { +OnigSyntaxType OnigSyntaxJava = { (( SYN_GNU_REGEX_OP | ONIG_SYN_OP_QMARK_NON_GREEDY | ONIG_SYN_OP_ESC_CONTROL_CHARS | ONIG_SYN_OP_ESC_C_CONTROL | ONIG_SYN_OP_ESC_OCTAL3 | ONIG_SYN_OP_ESC_X_HEX2 ) - & ~ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END ) + & ~(ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END | ONIG_SYN_OP_POSIX_BRACKET) ) , ( ONIG_SYN_OP2_ESC_CAPITAL_Q_QUOTE | ONIG_SYN_OP2_QMARK_GROUP_EFFECT | ONIG_SYN_OP2_OPTION_PERL | ONIG_SYN_OP2_PLUS_POSSESSIVE_REPEAT | ONIG_SYN_OP2_PLUS_POSSESSIVE_INTERVAL | ONIG_SYN_OP2_CCLASS_SET_OP | ONIG_SYN_OP2_ESC_V_VTAB | ONIG_SYN_OP2_ESC_U_HEX4 | ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY ) - , ( SYN_GNU_REGEX_BV | ONIG_SYN_DIFFERENT_LEN_ALT_LOOK_BEHIND ) - , ( ONIG_OPTION_SINGLELINE | ONIG_OPTION_ASCII_RANGE | - ONIG_OPTION_WORD_BOUND_ALL_RANGE ) + , ( SYN_GNU_REGEX_BV | ONIG_SYN_ISOLATED_OPTION_CONTINUE_BRANCH | + ONIG_SYN_DIFFERENT_LEN_ALT_LOOK_BEHIND | + ONIG_SYN_VARIABLE_LEN_LOOK_BEHIND | + ONIG_SYN_ALLOW_CHAR_TYPE_FOLLOWED_BY_MINUS_IN_CC ) + , ONIG_OPTION_SINGLELINE , { (OnigCodePoint )'\\' /* esc */ @@ -167,20 +169,28 @@ const OnigSyntaxType OnigSyntaxJava = { } }; -/* Perl 5.8 */ -const OnigSyntaxType OnigSyntaxPerl58 = { +OnigSyntaxType OnigSyntaxPerl = { (( 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_CONTROL_CHARS | + 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_ESC_CAPITAL_Q_QUOTE | ONIG_SYN_OP2_QMARK_GROUP_EFFECT | ONIG_SYN_OP2_OPTION_PERL | + ONIG_SYN_OP2_PLUS_POSSESSIVE_REPEAT | ONIG_SYN_OP2_PLUS_POSSESSIVE_INTERVAL | + ONIG_SYN_OP2_QMARK_LPAREN_IF_ELSE | + ONIG_SYN_OP2_QMARK_TILDE_ABSENT_GROUP | + ONIG_SYN_OP2_QMARK_BRACE_CALLOUT_CONTENTS | + ONIG_SYN_OP2_ASTERISK_CALLOUT_NAME | + ONIG_SYN_OP2_ESC_X_Y_TEXT_SEGMENT | ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY | ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT | - ONIG_SYN_OP2_ESC_CAPITAL_X_EXTENDED_GRAPHEME_CLUSTER | - ONIG_SYN_OP2_QMARK_LPAREN_CONDITION) - , SYN_GNU_REGEX_BV + ONIG_SYN_OP2_ESC_CAPITAL_K_KEEP | + ONIG_SYN_OP2_ESC_CAPITAL_R_GENERAL_NEWLINE | + ONIG_SYN_OP2_ESC_CAPITAL_N_O_SUPER_DOT ) + , (SYN_GNU_REGEX_BV | ONIG_SYN_ISOLATED_OPTION_CONTINUE_BRANCH | + ONIG_SYN_ALLOW_CHAR_TYPE_FOLLOWED_BY_MINUS_IN_CC ) , ONIG_OPTION_SINGLELINE , { @@ -193,64 +203,36 @@ const OnigSyntaxType OnigSyntaxPerl58 = { } }; -/* Perl 5.8 + named group */ -const OnigSyntaxType OnigSyntaxPerl58_NG = { +/* Perl + named group */ +OnigSyntaxType OnigSyntaxPerl_NG = { (( 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_CONTROL_CHARS | + 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_ESC_CAPITAL_Q_QUOTE | ONIG_SYN_OP2_QMARK_GROUP_EFFECT | ONIG_SYN_OP2_OPTION_PERL | + ONIG_SYN_OP2_PLUS_POSSESSIVE_REPEAT | ONIG_SYN_OP2_PLUS_POSSESSIVE_INTERVAL | + ONIG_SYN_OP2_QMARK_LPAREN_IF_ELSE | + ONIG_SYN_OP2_QMARK_TILDE_ABSENT_GROUP | + ONIG_SYN_OP2_QMARK_BRACE_CALLOUT_CONTENTS | + ONIG_SYN_OP2_ASTERISK_CALLOUT_NAME | + ONIG_SYN_OP2_ESC_X_Y_TEXT_SEGMENT | ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY | ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT | - ONIG_SYN_OP2_ESC_CAPITAL_X_EXTENDED_GRAPHEME_CLUSTER | - ONIG_SYN_OP2_QMARK_LPAREN_CONDITION | ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP | ONIG_SYN_OP2_ESC_K_NAMED_BACKREF | - ONIG_SYN_OP2_ESC_G_SUBEXP_CALL ) - , ( SYN_GNU_REGEX_BV | - ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP | - ONIG_SYN_ALLOW_MULTIPLEX_DEFINITION_NAME ) - , ONIG_OPTION_SINGLELINE - , - { - (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 */ - } -}; - -/* Perl 5.10+ */ -const OnigSyntaxType OnigSyntaxPerl = { - (( 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_CONTROL_CHARS | - ONIG_SYN_OP_ESC_O_BRACE_OCTAL | ONIG_SYN_OP_ESC_C_CONTROL ) - & ~ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END ) - , ( ONIG_SYN_OP2_ESC_CAPITAL_Q_QUOTE | - ONIG_SYN_OP2_QMARK_GROUP_EFFECT | ONIG_SYN_OP2_OPTION_PERL | - ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY | - ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT | - ONIG_SYN_OP2_ESC_CAPITAL_X_EXTENDED_GRAPHEME_CLUSTER | - ONIG_SYN_OP2_QMARK_LPAREN_CONDITION | - ONIG_SYN_OP2_PLUS_POSSESSIVE_REPEAT | - ONIG_SYN_OP2_PLUS_POSSESSIVE_INTERVAL | - ONIG_SYN_OP2_ESC_CAPITAL_R_LINEBREAK | + ONIG_SYN_OP2_ESC_G_SUBEXP_CALL | ONIG_SYN_OP2_ESC_CAPITAL_K_KEEP | - ONIG_SYN_OP2_QMARK_SUBEXP_CALL | - ONIG_SYN_OP2_ESC_G_BRACE_BACKREF | - ONIG_SYN_OP2_QMARK_CAPITAL_P_NAMED_GROUP | - ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP | - ONIG_SYN_OP2_ESC_K_NAMED_BACKREF ) - , ( SYN_GNU_REGEX_BV | + ONIG_SYN_OP2_ESC_CAPITAL_R_GENERAL_NEWLINE | + ONIG_SYN_OP2_ESC_CAPITAL_N_O_SUPER_DOT | + ONIG_SYN_OP2_QMARK_PERL_SUBEXP_CALL ) + , ( SYN_GNU_REGEX_BV | ONIG_SYN_ISOLATED_OPTION_CONTINUE_BRANCH | + ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP | ONIG_SYN_ALLOW_MULTIPLEX_DEFINITION_NAME | - ONIG_SYN_ALLOW_MULTIPLEX_DEFINITION_NAME_CALL | - ONIG_SYN_USE_LEFT_MOST_NAMED_GROUP ) - , ( ONIG_OPTION_SINGLELINE | ONIG_OPTION_CAPTURE_GROUP ) + ONIG_SYN_ALLOW_CHAR_TYPE_FOLLOWED_BY_MINUS_IN_CC ) + , ONIG_OPTION_SINGLELINE , { (OnigCodePoint )'\\' /* esc */ @@ -262,23 +244,24 @@ const OnigSyntaxType OnigSyntaxPerl = { } }; -const OnigSyntaxType OnigSyntaxPython = { +/* Python 3.9 */ +OnigSyntaxType OnigSyntaxPython = { (( 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_CONTROL_CHARS | + ONIG_SYN_OP_ESC_CONTROL_CHARS | ONIG_SYN_OP_ESC_C_CONTROL ) - & ~ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END ) + & ~(ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END | ONIG_SYN_OP_POSIX_BRACKET) ) , ( ONIG_SYN_OP2_QMARK_GROUP_EFFECT | ONIG_SYN_OP2_OPTION_PERL | + ONIG_SYN_OP2_QMARK_LPAREN_IF_ELSE | + ONIG_SYN_OP2_ASTERISK_CALLOUT_NAME | 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_ESC_V_VTAB | - ONIG_SYN_OP2_ESC_U_HEX4 | - ONIG_SYN_OP2_QMARK_LPAREN_CONDITION | - ONIG_SYN_OP2_QMARK_CAPITAL_P_NAMED_GROUP ) - , ( SYN_GNU_REGEX_BV | - ONIG_SYN_ALLOW_INTERVAL_LOW_ABBREV ) - , ( ONIG_OPTION_SINGLELINE | ONIG_OPTION_ASCII_RANGE ) + ONIG_SYN_OP2_QMARK_CAPITAL_P_NAME | + ONIG_SYN_OP2_ESC_CAPITAL_K_KEEP | + ONIG_SYN_OP2_ESC_V_VTAB | ONIG_SYN_OP2_ESC_U_HEX4 ) + , ( SYN_GNU_REGEX_BV | ONIG_SYN_ISOLATED_OPTION_CONTINUE_BRANCH | + ONIG_SYN_ALLOW_INTERVAL_LOW_ABBREV | ONIG_SYN_PYTHON ) + , ONIG_OPTION_SINGLELINE , { (OnigCodePoint )'\\' /* esc */ @@ -293,17 +276,17 @@ const OnigSyntaxType OnigSyntaxPython = { extern int -onig_set_default_syntax(const OnigSyntaxType* syntax) +onig_set_default_syntax(OnigSyntaxType* syntax) { if (IS_NULL(syntax)) - syntax = ONIG_SYNTAX_RUBY; + syntax = ONIG_SYNTAX_ONIGURUMA; OnigDefaultSyntax = syntax; return 0; } extern void -onig_copy_syntax(OnigSyntaxType* to, const OnigSyntaxType* from) +onig_copy_syntax(OnigSyntaxType* to, OnigSyntaxType* from) { *to = *from; } @@ -333,25 +316,25 @@ onig_set_syntax_options(OnigSyntaxType* syntax, OnigOptionType options) } extern unsigned int -onig_get_syntax_op(const OnigSyntaxType* syntax) +onig_get_syntax_op(OnigSyntaxType* syntax) { return syntax->op; } extern unsigned int -onig_get_syntax_op2(const OnigSyntaxType* syntax) +onig_get_syntax_op2(OnigSyntaxType* syntax) { return syntax->op2; } extern unsigned int -onig_get_syntax_behavior(const OnigSyntaxType* syntax) +onig_get_syntax_behavior(OnigSyntaxType* syntax) { return syntax->behavior; } extern OnigOptionType -onig_get_syntax_options(const OnigSyntaxType* syntax) +onig_get_syntax_options(OnigSyntaxType* syntax) { return syntax->options; } diff --git a/vendor/onig/regtrav.c b/vendor/oniguruma/oniguruma/src/regtrav.c similarity index 85% rename from vendor/onig/regtrav.c rename to vendor/oniguruma/oniguruma/src/regtrav.c index caf54ac..8307695 100644 --- a/vendor/onig/regtrav.c +++ b/vendor/oniguruma/oniguruma/src/regtrav.c @@ -1,9 +1,8 @@ /********************************************************************** - regtrav.c - Onigmo (Oniguruma-mod) (regular expression library) + regtrav.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2004 K.Kosako - * Copyright (c) 2011 K.Takata + * Copyright (c) 2002-2019 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -34,8 +33,8 @@ static int capture_tree_traverse(OnigCaptureTreeNode* node, int at, - int(*callback_func)(int,OnigPosition,OnigPosition,int,int,void*), - int level, void* arg) + int(*callback_func)(int,int,int,int,int,void*), + int level, void* arg) { int r, i; @@ -66,8 +65,7 @@ capture_tree_traverse(OnigCaptureTreeNode* node, int at, extern int onig_capture_tree_traverse(OnigRegion* region, int at, - int(*callback_func)(int,OnigPosition,OnigPosition,int,int,void*), - void* arg) + int(*callback_func)(int,int,int,int,int,void*), void* arg) { #ifdef USE_CAPTURE_HISTORY return capture_tree_traverse(region->history_root, at, diff --git a/vendor/onig/regversion.c b/vendor/oniguruma/oniguruma/src/regversion.c similarity index 72% rename from vendor/onig/regversion.c rename to vendor/oniguruma/oniguruma/src/regversion.c index d80e8d2..1f0faa1 100644 --- a/vendor/onig/regversion.c +++ b/vendor/oniguruma/oniguruma/src/regversion.c @@ -1,9 +1,8 @@ /********************************************************************** - regversion.c - Onigmo (Oniguruma-mod) (regular expression library) + regversion.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2016 K.Kosako - * Copyright (c) 2011-2017 K.Takata + * Copyright (c) 2002-2020 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -28,28 +27,33 @@ * SUCH DAMAGE. */ -#include "onigmo.h" +#ifndef NEED_TO_INCLUDE_STDIO +#define NEED_TO_INCLUDE_STDIO +#endif -#define TOSTR_(a) #a -#define ONIG_VERSION_TOSTR_(a,b,c) \ - TOSTR_(a) "." TOSTR_(b) "." TOSTR_(c) -#define ONIG_VERSION_STRING \ - ONIG_VERSION_TOSTR_(ONIGMO_VERSION_MAJOR, ONIGMO_VERSION_MINOR, ONIGMO_VERSION_TEENY) +#include "regint.h" extern const char* onig_version(void) { - const char *s = ONIG_VERSION_STRING; + static char s[12]; + xsnprintf(s, sizeof(s), "%d.%d.%d", + ONIGURUMA_VERSION_MAJOR, + ONIGURUMA_VERSION_MINOR, + ONIGURUMA_VERSION_TEENY); return s; } extern const char* onig_copyright(void) { - const char *s = - "Onigmo " ONIG_VERSION_STRING " : Copyright (C) 2002-2016 K.Kosako, " - "2011-2017 K.Takata"; + static char s[58]; + xsnprintf(s, sizeof(s), + "Oniguruma %d.%d.%d : Copyright (C) 2002-2018 K.Kosako", + ONIGURUMA_VERSION_MAJOR, + ONIGURUMA_VERSION_MINOR, + ONIGURUMA_VERSION_TEENY); return s; } diff --git a/vendor/oniguruma/oniguruma/src/sjis.c b/vendor/oniguruma/oniguruma/src/sjis.c new file mode 100644 index 0000000..10afd9d --- /dev/null +++ b/vendor/oniguruma/oniguruma/src/sjis.c @@ -0,0 +1,312 @@ +/********************************************************************** + sjis.c - Oniguruma (regular expression library) +**********************************************************************/ +/*- + * Copyright (c) 2002-2020 K.Kosako + * 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. + */ + +#include "regint.h" + +static const int EncLen_SJIS[] = { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 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, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1 +}; + +static const char SJIS_CAN_BE_TRAIL_TABLE[256] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0 +}; + +#define SJIS_ISMB_FIRST(byte) (EncLen_SJIS[byte] > 1) +#define SJIS_ISMB_TRAIL(byte) SJIS_CAN_BE_TRAIL_TABLE[(byte)] + +static int +mbc_enc_len(const UChar* p) +{ + return EncLen_SJIS[*p]; +} + +static int +is_valid_mbc_string(const UChar* p, const UChar* end) +{ + while (p < end) { + if (*p < 0x80) { + p++; + } + else if (*p < 0xa1) { + if (*p == 0xa0 || *p == 0x80) + return FALSE; + p++; + if (p >= end) return FALSE; + if (*p < 0x40 || *p > 0xfc || *p == 0x7f) + return FALSE; + p++; + } + else if (*p < 0xe0) { + p++; + } + else if (*p < 0xfd) { + p++; + if (p >= end) return FALSE; + if (*p < 0x40 || *p > 0xfc || *p == 0x7f) + return FALSE; + p++; + } + else + return FALSE; + } + + return TRUE; +} + +static int +code_to_mbclen(OnigCodePoint code) +{ + if (code < 256) { + if (EncLen_SJIS[(int )code] == 1) + return 1; + } + else if (code < 0x10000) { + if (EncLen_SJIS[(int )(code >> 8) & 0xff] == 2) + return 2; + } + + return ONIGERR_INVALID_CODE_POINT_VALUE; +} + +static OnigCodePoint +mbc_to_code(const UChar* p, const UChar* end) +{ + int c, i, len; + OnigCodePoint n; + + len = enclen(ONIG_ENCODING_SJIS, p); + c = *p++; + n = c; + if (len == 1) return n; + + for (i = 1; i < len; i++) { + if (p >= end) break; + c = *p++; + n <<= 8; n += c; + } + return n; +} + +static int +code_to_mbc(OnigCodePoint code, UChar *buf) +{ + UChar *p = buf; + + if ((code & 0xff00) != 0) *p++ = (UChar )(((code >> 8) & 0xff)); + *p++ = (UChar )(code & 0xff); + + return (int )(p - buf); +} + +static int +mbc_case_fold(OnigCaseFoldType flag ARG_UNUSED, + const UChar** pp, const UChar* end ARG_UNUSED, UChar* lower) +{ + const UChar* p = *pp; + + if (ONIGENC_IS_MBC_ASCII(p)) { + *lower = ONIGENC_ASCII_CODE_TO_LOWER_CASE(*p); + (*pp)++; + return 1; + } + else { + int i; + int len = enclen(ONIG_ENCODING_SJIS, p); + + for (i = 0; i < len; i++) { + *lower++ = *p++; + } + (*pp) += len; + return len; /* return byte length of converted char to lower */ + } +} + +static UChar* +left_adjust_char_head(const UChar* start, const UChar* s) +{ + const UChar *p; + int len; + + if (s <= start) return (UChar* )s; + p = s; + + if (SJIS_ISMB_TRAIL(*p)) { + while (p > start) { + if (! SJIS_ISMB_FIRST(*--p)) { + p++; + break; + } + } + } + len = enclen(ONIG_ENCODING_SJIS, p); + if (p + len > s) return (UChar* )p; + p += len; + return (UChar* )(p + ((s - p) & ~1)); +} + +static int +is_allowed_reverse_match(const UChar* s, const UChar* end ARG_UNUSED) +{ + const UChar c = *s; + return (SJIS_ISMB_TRAIL(c) ? FALSE : TRUE); +} + + +static const OnigCodePoint CR_Hiragana[] = { + 1, + 0x829f, 0x82f1 +}; /* CR_Hiragana */ + +static const OnigCodePoint CR_Katakana[] = { + 4, + 0x00a6, 0x00af, + 0x00b1, 0x00dd, + 0x8340, 0x837e, + 0x8380, 0x8396, +}; /* CR_Katakana */ + +static const OnigCodePoint* PropertyList[] = { + CR_Hiragana, + CR_Katakana +}; + + +static int +property_name_to_ctype(OnigEncoding enc, UChar* p, UChar* end) +{ + struct PropertyNameCtype* pc; + int len = (int )(end - p); + char q[32]; + + if (len < sizeof(q) - 1) { + xmemcpy(q, p, (size_t )len); + q[len] = '\0'; + pc = onigenc_sjis_lookup_property_name(q, len); + if (pc != 0) + return pc->ctype; + } + + return ONIGERR_INVALID_CHAR_PROPERTY_NAME; +} + +static int +is_code_ctype(OnigCodePoint code, unsigned int ctype) +{ + if (ctype <= ONIGENC_MAX_STD_CTYPE) { + if (code < 128) + return ONIGENC_IS_ASCII_CODE_CTYPE(code, ctype); + else { + if (CTYPE_IS_WORD_GRAPH_PRINT(ctype)) { + return (code_to_mbclen(code) > 1 ? TRUE : FALSE); + } + } + } + else { + ctype -= (ONIGENC_MAX_STD_CTYPE + 1); + if (ctype >= (unsigned int )(sizeof(PropertyList)/sizeof(PropertyList[0]))) + return ONIGERR_TYPE_BUG; + + return onig_is_in_code_range((UChar* )PropertyList[ctype], code); + } + + return FALSE; +} + +static int +get_ctype_code_range(OnigCtype ctype, OnigCodePoint* sb_out, + const OnigCodePoint* ranges[]) +{ + if (ctype <= ONIGENC_MAX_STD_CTYPE) { + return ONIG_NO_SUPPORT_CONFIG; + } + else { + *sb_out = 0x80; + + ctype -= (ONIGENC_MAX_STD_CTYPE + 1); + if (ctype >= (OnigCtype )(sizeof(PropertyList)/sizeof(PropertyList[0]))) + return ONIGERR_TYPE_BUG; + + *ranges = PropertyList[ctype]; + return 0; + } +} + +OnigEncodingType OnigEncodingSJIS = { + mbc_enc_len, + "Shift_JIS", /* name */ + 2, /* max enc length */ + 1, /* min enc length */ + onigenc_is_mbc_newline_0x0a, + mbc_to_code, + code_to_mbclen, + code_to_mbc, + mbc_case_fold, + onigenc_ascii_apply_all_case_fold, + onigenc_ascii_get_case_fold_codes_by_str, + property_name_to_ctype, + is_code_ctype, + get_ctype_code_range, + left_adjust_char_head, + is_allowed_reverse_match, + NULL, /* init */ + NULL, /* is_initialized */ + is_valid_mbc_string, + ENC_FLAG_ASCII_COMPATIBLE|ENC_FLAG_SKIP_OFFSET_1_OR_0, + 0, 0 +}; diff --git a/vendor/oniguruma/oniguruma/src/sjis_prop.c b/vendor/oniguruma/oniguruma/src/sjis_prop.c new file mode 100644 index 0000000..2597a9f --- /dev/null +++ b/vendor/oniguruma/oniguruma/src/sjis_prop.c @@ -0,0 +1,151 @@ +/* ANSI-C code produced by gperf version 3.1 */ +/* Command-line: gperf -pt -T -L ANSI-C -N onigenc_sjis_lookup_property_name --output-file gperf2.tmp sjis_prop.gperf */ +/* Computed positions: -k'1,3' */ + +#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ + && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \ + && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \ + && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \ + && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \ + && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \ + && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \ + && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \ + && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \ + && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \ + && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \ + && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \ + && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \ + && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \ + && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \ + && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \ + && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \ + && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \ + && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \ + && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \ + && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \ + && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \ + && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126)) +/* The character set is not based on ISO-646. */ +#error "gperf generated tables don't work with this execution character set. Please report a bug to ." +#endif + +#line 1 "sjis_prop.gperf" + +#include "regint.h" + +#define TOTAL_KEYWORDS 16 +#define MIN_WORD_LENGTH 4 +#define MAX_WORD_LENGTH 8 +#define MIN_HASH_VALUE 4 +#define MAX_HASH_VALUE 55 +/* maximum key range = 52, duplicates = 0 */ + +#ifdef __GNUC__ +__inline +#else +#ifdef __cplusplus +inline +#endif +#endif +static unsigned int +hash (register const char *str, register size_t len) +{ + static unsigned char asso_values[] = + { + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 0, 3, 10, 25, 56, + 56, 30, 0, 56, 56, 0, 20, 56, 56, 56, + 15, 56, 56, 20, 56, 30, 56, 0, 0, 56, + 56, 56, 56, 56, 56, 56, 56, 15, 56, 56, + 56, 56, 56, 25, 56, 10, 56, 56, 56, 56, + 5, 56, 0, 56, 0, 56, 5, 56, 56, 20, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56 + }; + return (unsigned int )len + asso_values[(unsigned char)str[2]] + asso_values[(unsigned char)str[0]]; +} + +struct PropertyNameCtype * +onigenc_sjis_lookup_property_name (register const char *str, register size_t len) +{ + static struct PropertyNameCtype wordlist[] = + { + {""}, {""}, {""}, {""}, +#line 22 "sjis_prop.gperf" + {"Word", 12}, +#line 11 "sjis_prop.gperf" + {"Alpha", 1}, + {""}, {""}, +#line 25 "sjis_prop.gperf" + {"Hiragana", 15}, + {""}, +#line 23 "sjis_prop.gperf" + {"Alnum", 13}, + {""}, {""}, +#line 26 "sjis_prop.gperf" + {"Katakana", 16}, + {""}, +#line 24 "sjis_prop.gperf" + {"ASCII", 14}, +#line 21 "sjis_prop.gperf" + {"XDigit", 11}, + {""}, {""}, {""}, +#line 13 "sjis_prop.gperf" + {"Cntrl", 3}, + {""}, {""}, +#line 12 "sjis_prop.gperf" + {"Blank", 2}, + {""}, +#line 18 "sjis_prop.gperf" + {"Punct", 8}, + {""}, {""}, {""}, {""}, +#line 17 "sjis_prop.gperf" + {"Print", 7}, + {""}, {""}, {""}, {""}, +#line 20 "sjis_prop.gperf" + {"Upper", 10}, + {""}, {""}, {""}, {""}, +#line 19 "sjis_prop.gperf" + {"Space", 9}, + {""}, {""}, {""}, {""}, +#line 16 "sjis_prop.gperf" + {"Lower", 6}, + {""}, {""}, {""}, {""}, +#line 15 "sjis_prop.gperf" + {"Graph", 5}, + {""}, {""}, {""}, {""}, +#line 14 "sjis_prop.gperf" + {"Digit", 4} + }; + + if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) + { + register unsigned int key = hash (str, len); + + if (key <= MAX_HASH_VALUE) + { + register const char *s = wordlist[key].name; + + if (*str == *s && !strcmp (str + 1, s + 1)) + return &wordlist[key]; + } + } + return 0; +} diff --git a/vendor/oniguruma/oniguruma/src/sjis_prop.gperf b/vendor/oniguruma/oniguruma/src/sjis_prop.gperf new file mode 100644 index 0000000..842b61b --- /dev/null +++ b/vendor/oniguruma/oniguruma/src/sjis_prop.gperf @@ -0,0 +1,26 @@ +%{ +#include "regint.h" +%} + +struct PropertyNameCtype { + char *name; + int ctype; +}; + +%% +Alpha, 1 +Blank, 2 +Cntrl, 3 +Digit, 4 +Graph, 5 +Lower, 6 +Print, 7 +Punct, 8 +Space, 9 +Upper, 10 +XDigit, 11 +Word, 12 +Alnum, 13 +ASCII, 14 +Hiragana, 15 +Katakana, 16 diff --git a/vendor/oniguruma/oniguruma/src/st.c b/vendor/oniguruma/oniguruma/src/st.c new file mode 100644 index 0000000..64228e7 --- /dev/null +++ b/vendor/oniguruma/oniguruma/src/st.c @@ -0,0 +1,562 @@ +/* This is a public domain general purpose hash table package written by Peter Moore @ UCB. */ + +/* static char sccsid[] = "@(#) st.c 5.1 89/12/14 Crucible"; */ + +#ifndef NEED_TO_INCLUDE_STDIO +#define NEED_TO_INCLUDE_STDIO +#endif + +#include "regint.h" +#include "st.h" + + +typedef struct st_table_entry st_table_entry; + +struct st_table_entry { + unsigned int hash; + st_data_t key; + st_data_t record; + st_table_entry *next; +}; + +#define ST_DEFAULT_MAX_DENSITY 5 +#define ST_DEFAULT_INIT_TABLE_SIZE 11 + + /* + * DEFAULT_MAX_DENSITY is the default for the largest we allow the + * average number of items per bin before increasing the number of + * bins + * + * DEFAULT_INIT_TABLE_SIZE is the default for the number of bins + * allocated initially + * + */ + +static int numcmp(st_data_t, st_data_t); +static int numhash(st_data_t); +static struct st_hash_type type_numhash = { + numcmp, + numhash, +}; + +static int str_cmp(st_data_t, st_data_t); +static int str_hash(st_data_t); +static struct st_hash_type type_strhash = { + str_cmp, + str_hash, +}; + +static void rehash(st_table *); + +#define alloc(type) (type*)xmalloc((unsigned)sizeof(type)) +#define Calloc(n,s) (char*)xcalloc((n),(s)) + +#define EQUAL(table,x,y) ((x)==(y) || (*table->type->compare)((x),(y)) == 0) + +#define do_hash(key,table) (unsigned int)(*(table)->type->hash)((key)) +#define do_hash_bin(key,table) (do_hash(key, table)%(table)->num_bins) + +/* + * MINSIZE is the minimum size of a dictionary. + */ + +#define MINSIZE 8 + +/* +Table of prime numbers 2^n+a, 2<=n<=30. +*/ +static const long primes[] = { + 8 + 3, + 16 + 3, + 32 + 5, + 64 + 3, + 128 + 3, + 256 + 27, + 512 + 9, + 1024 + 9, + 2048 + 5, + 4096 + 3, + 8192 + 27, + 16384 + 43, + 32768 + 3, + 65536 + 45, + 131072 + 29, + 262144 + 3, + 524288 + 21, + 1048576 + 7, + 2097152 + 17, + 4194304 + 15, + 8388608 + 9, + 16777216 + 43, + 33554432 + 35, + 67108864 + 15, + 134217728 + 29, + 268435456 + 3, + 536870912 + 11, + 1073741824 + 85, + 0 +}; + +static int new_size(int size) +{ + int i; + +#if 0 + for (i=3; i<31; i++) { + if ((1< size) return 1< size) return primes[i]; + } + /* Ran out of polynomials */ + return -1; /* should raise exception */ +#endif +} + +#ifdef HASH_LOG +static int collision = 0; +static int init_st = 0; + +static void +stat_col(void) +{ + FILE *f = fopen("/tmp/col", "w"); + if (f == 0) return ; + + (void) fprintf(f, "collision: %d\n", collision); + (void) fclose(f); +} +#endif + +extern st_table* +st_init_table_with_size(struct st_hash_type* type, int size) +{ + st_table *tbl; + +#ifdef HASH_LOG + if (init_st == 0) { + init_st = 1; + atexit(stat_col); + } +#endif + + size = new_size(size); /* round up to prime number */ + if (size <= 0) return 0; + + tbl = alloc(st_table); + if (tbl == 0) return 0; + + tbl->type = type; + tbl->num_entries = 0; + tbl->num_bins = size; + tbl->bins = (st_table_entry **)Calloc(size, sizeof(st_table_entry*)); + if (tbl->bins == 0) { + free(tbl); + return 0; + } + + return tbl; +} + +extern st_table* +st_init_table(struct st_hash_type* type) +{ + return st_init_table_with_size(type, 0); +} + +extern st_table* +st_init_numtable(void) +{ + return st_init_table(&type_numhash); +} + +extern st_table* +st_init_numtable_with_size(int size) +{ + return st_init_table_with_size(&type_numhash, size); +} + +extern st_table* +st_init_strtable(void) +{ + return st_init_table(&type_strhash); +} + +extern st_table* +st_init_strtable_with_size(int size) +{ + return st_init_table_with_size(&type_strhash, size); +} + +extern void +st_free_table(st_table* table) +{ + register st_table_entry *ptr, *next; + int i; + + for(i = 0; i < table->num_bins; i++) { + ptr = table->bins[i]; + while (ptr != 0) { + next = ptr->next; + free(ptr); + ptr = next; + } + } + free(table->bins); + free(table); +} + +#define PTR_NOT_EQUAL(table, ptr, hash_val, key) \ +((ptr) != 0 && (ptr->hash != (hash_val) || !EQUAL((table), (key), (ptr)->key))) + +#ifdef HASH_LOG +#define COLLISION collision++ +#else +#define COLLISION +#endif + +#define FIND_ENTRY(table, ptr, hash_val, bin_pos) do {\ + bin_pos = hash_val%(table)->num_bins;\ + ptr = (table)->bins[bin_pos];\ + if (PTR_NOT_EQUAL(table, ptr, hash_val, key)) {\ + COLLISION;\ + while (PTR_NOT_EQUAL(table, ptr->next, hash_val, key)) {\ + ptr = ptr->next;\ + }\ + ptr = ptr->next;\ + }\ +} while (0) + +extern int +st_lookup(st_table* table, register st_data_t key, st_data_t* value) +{ + unsigned int hash_val, bin_pos; + register st_table_entry *ptr; + + hash_val = do_hash(key, table); + FIND_ENTRY(table, ptr, hash_val, bin_pos); + + if (ptr == 0) { + return 0; + } + else { + if (value != 0) *value = ptr->record; + return 1; + } +} + +#define ADD_DIRECT(table, key, value, hash_val, bin_pos, ret) \ +do {\ + st_table_entry *entry;\ + if (table->num_entries/(table->num_bins) > ST_DEFAULT_MAX_DENSITY) {\ + rehash(table);\ + bin_pos = hash_val % table->num_bins;\ + }\ + entry = alloc(st_table_entry);\ + if (IS_NULL(entry)) return ret;\ + entry->hash = hash_val;\ + entry->key = key;\ + entry->record = value;\ + entry->next = table->bins[bin_pos];\ + table->bins[bin_pos] = entry;\ + table->num_entries++;\ +} while (0) + +extern int +st_insert(register st_table* table, register st_data_t key, st_data_t value) +{ + unsigned int hash_val, bin_pos; + register st_table_entry *ptr; + + hash_val = do_hash(key, table); + FIND_ENTRY(table, ptr, hash_val, bin_pos); + + if (ptr == 0) { + ADD_DIRECT(table, key, value, hash_val, bin_pos, ONIGERR_MEMORY); + return 0; + } + else { + ptr->record = value; + return 1; + } +} + +extern void +st_add_direct(st_table* table, st_data_t key, st_data_t value) +{ + unsigned int hash_val, bin_pos; + + hash_val = do_hash(key, table); + bin_pos = hash_val % table->num_bins; + ADD_DIRECT(table, key, value, hash_val, bin_pos,); +} + +static void +rehash(register st_table* table) +{ + register st_table_entry *ptr, *next, **new_bins; + int i, new_num_bins, old_num_bins; + unsigned int hash_val; + + old_num_bins = table->num_bins; + new_num_bins = new_size(old_num_bins + 1); + if (new_num_bins <= 0) return ; + + new_bins = (st_table_entry**)Calloc(new_num_bins, sizeof(st_table_entry*)); + if (new_bins == 0) { + return ; + } + + for(i = 0; i < old_num_bins; i++) { + ptr = table->bins[i]; + while (ptr != 0) { + next = ptr->next; + hash_val = ptr->hash % new_num_bins; + ptr->next = new_bins[hash_val]; + new_bins[hash_val] = ptr; + ptr = next; + } + } + free(table->bins); + table->num_bins = new_num_bins; + table->bins = new_bins; +} + +extern st_table* +st_copy(st_table* old_table) +{ + st_table *new_table; + st_table_entry *ptr, *entry; + int i, num_bins = old_table->num_bins; + + new_table = alloc(st_table); + if (new_table == 0) { + return 0; + } + + *new_table = *old_table; + new_table->bins = (st_table_entry**) + Calloc((unsigned)num_bins, sizeof(st_table_entry*)); + + if (new_table->bins == 0) { + free(new_table); + return 0; + } + + for(i = 0; i < num_bins; i++) { + new_table->bins[i] = 0; + ptr = old_table->bins[i]; + while (ptr != 0) { + entry = alloc(st_table_entry); + if (entry == 0) { + free(new_table->bins); + free(new_table); + return 0; + } + *entry = *ptr; + entry->next = new_table->bins[i]; + new_table->bins[i] = entry; + ptr = ptr->next; + } + } + return new_table; +} + +extern int +st_delete(register st_table* table, register st_data_t* key, st_data_t* value) +{ + unsigned int hash_val; + st_table_entry *tmp; + register st_table_entry *ptr; + + hash_val = do_hash_bin(*key, table); + ptr = table->bins[hash_val]; + + if (ptr == 0) { + if (value != 0) *value = 0; + return 0; + } + + if (EQUAL(table, *key, ptr->key)) { + table->bins[hash_val] = ptr->next; + table->num_entries--; + if (value != 0) *value = ptr->record; + *key = ptr->key; + free(ptr); + return 1; + } + + for(; ptr->next != 0; ptr = ptr->next) { + if (EQUAL(table, ptr->next->key, *key)) { + tmp = ptr->next; + ptr->next = ptr->next->next; + table->num_entries--; + if (value != 0) *value = tmp->record; + *key = tmp->key; + free(tmp); + return 1; + } + } + + return 0; +} + +extern int +st_delete_safe(register st_table* table, register st_data_t* key, st_data_t* value, st_data_t never) +{ + unsigned int hash_val; + register st_table_entry *ptr; + + hash_val = do_hash_bin(*key, table); + ptr = table->bins[hash_val]; + + if (ptr == 0) { + if (value != 0) *value = 0; + return 0; + } + + for(; ptr != 0; ptr = ptr->next) { + if ((ptr->key != never) && EQUAL(table, ptr->key, *key)) { + table->num_entries--; + *key = ptr->key; + if (value != 0) *value = ptr->record; + ptr->key = ptr->record = never; + return 1; + } + } + + return 0; +} + +static int +#if defined(__GNUC__) +delete_never(st_data_t key __attribute__ ((unused)), st_data_t value, + st_data_t never) +#else +delete_never(st_data_t key, st_data_t value, st_data_t never) +#endif +{ + if (value == never) return ST_DELETE; + return ST_CONTINUE; +} + +extern void +st_cleanup_safe(st_table* table, st_data_t never) +{ + int num_entries = table->num_entries; + + st_foreach(table, delete_never, never); + table->num_entries = num_entries; +} + +extern int +st_foreach(st_table* table, int (*func)(st_data_t, st_data_t, st_data_t), st_data_t arg) +{ + st_table_entry *ptr, *last, *tmp; + enum st_retval retval; + int i; + + for(i = 0; i < table->num_bins; i++) { + last = 0; + for(ptr = table->bins[i]; ptr != 0;) { + retval = (*func)(ptr->key, ptr->record, arg); + switch (retval) { + case ST_CHECK: /* check if hash is modified during iteration */ + tmp = 0; + if (i < table->num_bins) { + for (tmp = table->bins[i]; tmp; tmp=tmp->next) { + if (tmp == ptr) break; + } + } + if (!tmp) { + /* call func with error notice */ + return 1; + } + /* fall through */ + case ST_CONTINUE: + last = ptr; + ptr = ptr->next; + break; + case ST_STOP: + return 0; + case ST_DELETE: + tmp = ptr; + if (last == 0) { + table->bins[i] = ptr->next; + } + else { + last->next = ptr->next; + } + ptr = ptr->next; + free(tmp); + table->num_entries--; + } + } + } + return 0; +} + +static int +str_cmp(st_data_t a1, st_data_t a2) +{ + const char* s1 = (const char* )a1; + const char* s2 = (const char* )a2; + return strcmp(s1, s2); +} + +static int +str_hash(st_data_t astring) +{ + const char* string = (const char* )astring; + register int c; + +#ifdef HASH_ELFHASH + register unsigned int h = 0, g; + + while ((c = *string++) != '\0') { + h = ( h << 4 ) + c; + if ( g = h & 0xF0000000 ) + h ^= g >> 24; + h &= ~g; + } + return h; +#elif HASH_PERL + register int val = 0; + + while ((c = *string++) != '\0') { + val += c; + val += (val << 10); + val ^= (val >> 6); + } + val += (val << 3); + val ^= (val >> 11); + + return val + (val << 15); +#else + register int val = 0; + + while ((c = *string++) != '\0') { + val = val*997 + c; + } + + return val + (val>>5); +#endif +} + +static int +numcmp(st_data_t x, st_data_t y) +{ + return x != y; +} + +static int +numhash(st_data_t n) +{ + return n; +} diff --git a/vendor/oniguruma/oniguruma/src/st.h b/vendor/oniguruma/oniguruma/src/st.h new file mode 100644 index 0000000..70798dc --- /dev/null +++ b/vendor/oniguruma/oniguruma/src/st.h @@ -0,0 +1,60 @@ +/* This is a public domain general purpose hash table package written by Peter Moore @ UCB. */ + +/* @(#) st.h 5.1 89/12/14 */ + +#ifndef ST_INCLUDED +#define ST_INCLUDED + +#if SIZEOF_VOIDP == SIZEOF_LONG +typedef unsigned long st_data_t; +#elif SIZEOF_VOIDP == SIZEOF_LONG_LONG +typedef unsigned long long st_data_t; +#endif + +#define ST_DATA_T_DEFINED + +typedef struct st_table st_table; + +struct st_hash_type { + int (*compare)(st_data_t, st_data_t); + int (*hash)(st_data_t); +}; + +struct st_table { + struct st_hash_type *type; + int num_bins; + int num_entries; + struct st_table_entry **bins; +}; + +#define st_is_member(table,key) st_lookup(table,key,(st_data_t *)0) + +enum st_retval {ST_CONTINUE, ST_STOP, ST_DELETE, ST_CHECK}; + +#ifndef _ +# define _(args) args +#endif + +st_table *st_init_table _((struct st_hash_type *)); +st_table *st_init_table_with_size _((struct st_hash_type *, int)); +st_table *st_init_numtable _((void)); +st_table *st_init_numtable_with_size _((int)); +st_table *st_init_strtable _((void)); +st_table *st_init_strtable_with_size _((int)); +int st_delete _((st_table *, st_data_t *, st_data_t *)); +int st_delete_safe _((st_table *, st_data_t *, st_data_t *, st_data_t)); +int st_insert _((st_table *, st_data_t, st_data_t)); +int st_lookup _((st_table *, st_data_t, st_data_t *)); +int st_foreach _((st_table *, int (*)(st_data_t, st_data_t, st_data_t), st_data_t)); +void st_add_direct _((st_table *, st_data_t, st_data_t)); +void st_free_table _((st_table *)); +void st_cleanup_safe _((st_table *, st_data_t)); +st_table *st_copy _((st_table *)); + +#define ST_NUMCMP ((int (*)()) 0) +#define ST_NUMHASH ((int (*)()) -2) + +#define st_numcmp ST_NUMCMP +#define st_numhash ST_NUMHASH + +#endif /* ST_INCLUDED */ diff --git a/vendor/oniguruma/oniguruma/src/unicode.c b/vendor/oniguruma/oniguruma/src/unicode.c new file mode 100644 index 0000000..11ce874 --- /dev/null +++ b/vendor/oniguruma/oniguruma/src/unicode.c @@ -0,0 +1,1239 @@ +/********************************************************************** + unicode.c - Oniguruma (regular expression library) +**********************************************************************/ +/*- + * Copyright (c) 2002-2020 K.Kosako + * 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. + */ + +#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) + +static const unsigned short EncUNICODE_ISO_8859_1_CtypeTable[256] = { + 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, + 0x4008, 0x428c, 0x4289, 0x4288, 0x4288, 0x4288, 0x4008, 0x4008, + 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, + 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, + 0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, + 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, + 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, + 0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, + 0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2, + 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, + 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, + 0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0, + 0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2, + 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, + 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, + 0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008, + 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0288, 0x0008, 0x0008, + 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, + 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, + 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, + 0x0284, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, + 0x01a0, 0x01a0, 0x30e2, 0x01a0, 0x01a0, 0x00a8, 0x01a0, 0x01a0, + 0x01a0, 0x01a0, 0x10a0, 0x10a0, 0x01a0, 0x30e2, 0x01a0, 0x01a0, + 0x01a0, 0x10a0, 0x30e2, 0x01a0, 0x10a0, 0x10a0, 0x10a0, 0x01a0, + 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, + 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, + 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x01a0, + 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x30e2, + 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, + 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, + 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x01a0, + 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2 +}; + +#include "st.h" + +#include "unicode_fold_data.c" + +extern int +onigenc_unicode_mbc_case_fold(OnigEncoding enc, OnigCaseFoldType flag, + const UChar** pp, const UChar* end, UChar* fold) +{ + const struct ByUnfoldKey* buk; + + OnigCodePoint code; + int i, len, rlen; + const UChar *p = *pp; + + code = ONIGENC_MBC_TO_CODE(enc, p, end); + len = enclen(enc, p); + *pp += len; + +#ifdef USE_UNICODE_CASE_FOLD_TURKISH_AZERI + if ((flag & ONIGENC_CASE_FOLD_TURKISH_AZERI) != 0) { + if (code == 0x0130) { + return ONIGENC_CODE_TO_MBC(enc, 0x0069, fold); + } +#if 0 + if (code == 0x0049) { + return ONIGENC_CODE_TO_MBC(enc, 0x0131, fold); + } +#endif + } +#endif + + if (CASE_FOLD_IS_NOT_ASCII_ONLY(flag) || ONIGENC_IS_ASCII_CODE(code)) { + buk = onigenc_unicode_unfold_key(code); + if (buk != 0) { + if (buk->fold_len == 1) { + if (CASE_FOLD_IS_NOT_ASCII_ONLY(flag) || + ONIGENC_IS_ASCII_CODE(*FOLDS1_FOLD(buk->index))) + return ONIGENC_CODE_TO_MBC(enc, *FOLDS1_FOLD(buk->index), fold); + } + else { + OnigCodePoint* addr; + + FOLDS_FOLD_ADDR_BUK(buk, addr); + rlen = 0; + for (i = 0; i < buk->fold_len; i++) { + OnigCodePoint c = addr[i]; + len = ONIGENC_CODE_TO_MBC(enc, c, fold); + fold += len; + rlen += len; + } + return rlen; + } + } + } + + for (i = 0; i < len; i++) { + *fold++ = *p++; + } + return len; +} + +static int +apply_case_fold1(OnigCaseFoldType flag, int from, int to, + OnigApplyAllCaseFoldFunc f, void* arg) +{ + int i, j, k, n, r; + + for (i = from; i < to; ) { + OnigCodePoint fold = *FOLDS1_FOLD(i); + if (CASE_FOLD_IS_ASCII_ONLY(flag) && ! ONIGENC_IS_ASCII_CODE(fold)) break; + + n = FOLDS1_UNFOLDS_NUM(i); + for (j = 0; j < n; j++) { + OnigCodePoint unfold = FOLDS1_UNFOLDS(i)[j]; + + if (CASE_FOLD_IS_ASCII_ONLY(flag) && ! ONIGENC_IS_ASCII_CODE(unfold)) + continue; + + r = (*f)(fold, &unfold, 1, arg); + if (r != 0) return r; + r = (*f)(unfold, &fold, 1, arg); + if (r != 0) return r; + + for (k = 0; k < j; k++) { + OnigCodePoint unfold2 = FOLDS1_UNFOLDS(i)[k]; + if (CASE_FOLD_IS_ASCII_ONLY(flag) && + ! ONIGENC_IS_ASCII_CODE(unfold2)) continue; + + r = (*f)(unfold, &unfold2, 1, arg); + if (r != 0) return r; + r = (*f)(unfold2, &unfold, 1, arg); + if (r != 0) return r; + } + } + + i = FOLDS1_NEXT_INDEX(i); + } + + return 0; +} + +static int +apply_case_fold2(int from, int to, OnigApplyAllCaseFoldFunc f, void* arg) +{ + int i, j, k, n, r; + + for (i = from; i < to; ) { + OnigCodePoint* fold = FOLDS2_FOLD(i); + n = FOLDS2_UNFOLDS_NUM(i); + for (j = 0; j < n; j++) { + OnigCodePoint unfold = FOLDS2_UNFOLDS(i)[j]; + + r = (*f)(unfold, fold, 2, arg); + if (r != 0) return r; + + for (k = 0; k < j; k++) { + OnigCodePoint unfold2 = FOLDS2_UNFOLDS(i)[k]; + r = (*f)(unfold, &unfold2, 1, arg); + if (r != 0) return r; + r = (*f)(unfold2, &unfold, 1, arg); + if (r != 0) return r; + } + } + + i = FOLDS2_NEXT_INDEX(i); + } + + return 0; +} + +static int +apply_case_fold3(int from, int to, OnigApplyAllCaseFoldFunc f, void* arg) +{ + int i, j, k, n, r; + + for (i = from; i < to; ) { + OnigCodePoint* fold = FOLDS3_FOLD(i); + n = FOLDS3_UNFOLDS_NUM(i); + for (j = 0; j < n; j++) { + OnigCodePoint unfold = FOLDS3_UNFOLDS(i)[j]; + + r = (*f)(unfold, fold, 3, arg); + if (r != 0) return r; + + for (k = 0; k < j; k++) { + OnigCodePoint unfold2 = FOLDS3_UNFOLDS(i)[k]; + r = (*f)(unfold, &unfold2, 1, arg); + if (r != 0) return r; + r = (*f)(unfold2, &unfold, 1, arg); + if (r != 0) return r; + } + } + + i = FOLDS3_NEXT_INDEX(i); + } + + return 0; +} + +extern int +onigenc_unicode_apply_all_case_fold(OnigCaseFoldType flag, + OnigApplyAllCaseFoldFunc f, void* arg) +{ + int r; + + r = apply_case_fold1(flag, 0, FOLDS1_NORMAL_END_INDEX, f, arg); + if (r != 0) return r; + +#ifdef USE_UNICODE_CASE_FOLD_TURKISH_AZERI + if ((flag & ONIGENC_CASE_FOLD_TURKISH_AZERI) != 0) { + code = 0x0131; + r = (*f)(0x0049, &code, 1, arg); + if (r != 0) return r; + code = 0x0049; + r = (*f)(0x0131, &code, 1, arg); + if (r != 0) return r; + + code = 0x0130; + r = (*f)(0x0069, &code, 1, arg); + if (r != 0) return r; + code = 0x0069; + r = (*f)(0x0130, &code, 1, arg); + if (r != 0) return r; + } + else { +#endif + r = apply_case_fold1(flag, FOLDS1_NORMAL_END_INDEX, FOLDS1_END_INDEX, f, arg); + if (r != 0) return r; +#ifdef USE_UNICODE_CASE_FOLD_TURKISH_AZERI + } +#endif + + if ((flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) == 0) + return 0; + + r = apply_case_fold2(0, FOLDS2_NORMAL_END_INDEX, f, arg); + if (r != 0) return r; + +#ifdef USE_UNICODE_CASE_FOLD_TURKISH_AZERI + if ((flag & ONIGENC_CASE_FOLD_TURKISH_AZERI) == 0) { +#endif + r = apply_case_fold2(FOLDS2_NORMAL_END_INDEX, FOLDS2_END_INDEX, f, arg); + if (r != 0) return r; +#ifdef USE_UNICODE_CASE_FOLD_TURKISH_AZERI + } +#endif + + r = apply_case_fold3(0, FOLDS3_NORMAL_END_INDEX, f, arg); + if (r != 0) return r; + + return 0; +} + +extern int +onigenc_unicode_get_case_fold_codes_by_str(OnigEncoding enc, + OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, + OnigCaseFoldCodeItem items[]) +{ + int n, m, i, j, k, len, lens[3]; + int index; + int fn, ncs[3]; + OnigCodePoint cs[3][4]; + OnigCodePoint code, codes[3], orig_codes[3]; + const struct ByUnfoldKey* buk1; + + n = 0; + + code = ONIGENC_MBC_TO_CODE(enc, p, end); + if (CASE_FOLD_IS_ASCII_ONLY(flag)) { + if (! ONIGENC_IS_ASCII_CODE(code)) return n; + } + len = enclen(enc, p); + +#ifdef USE_UNICODE_CASE_FOLD_TURKISH_AZERI + if ((flag & ONIGENC_CASE_FOLD_TURKISH_AZERI) != 0) { + if (code == 0x0049) { + items[0].byte_len = len; + items[0].code_len = 1; + items[0].code[0] = 0x0131; + return 1; + } + else if (code == 0x0130) { + items[0].byte_len = len; + items[0].code_len = 1; + items[0].code[0] = 0x0069; + return 1; + } + else if (code == 0x0131) { + items[0].byte_len = len; + items[0].code_len = 1; + items[0].code[0] = 0x0049; + return 1; + } + else if (code == 0x0069) { + items[0].byte_len = len; + items[0].code_len = 1; + items[0].code[0] = 0x0130; + return 1; + } + } +#endif + + orig_codes[0] = code; + lens[0] = len; + p += len; + + buk1 = onigenc_unicode_unfold_key(orig_codes[0]); + if (buk1 != 0 && buk1->fold_len == 1) { + codes[0] = *FOLDS1_FOLD(buk1->index); + } + else + codes[0] = orig_codes[0]; + + if ((flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) == 0) + goto fold1; + + if (p < end) { + const struct ByUnfoldKey* buk; + + code = ONIGENC_MBC_TO_CODE(enc, p, end); + orig_codes[1] = code; + len = enclen(enc, p); + lens[1] = lens[0] + len; + buk = onigenc_unicode_unfold_key(orig_codes[1]); + if (buk != 0 && buk->fold_len == 1) { + codes[1] = *FOLDS1_FOLD(buk->index); + } + else + codes[1] = orig_codes[1]; + + p += len; + if (p < end) { + code = ONIGENC_MBC_TO_CODE(enc, p, end); + orig_codes[2] = code; + len = enclen(enc, p); + lens[2] = lens[1] + len; + buk = onigenc_unicode_unfold_key(orig_codes[2]); + if (buk != 0 && buk->fold_len == 1) { + codes[2] = *FOLDS1_FOLD(buk->index); + } + else + codes[2] = orig_codes[2]; + + index = onigenc_unicode_fold3_key(codes); + if (index >= 0) { + m = FOLDS3_UNFOLDS_NUM(index); + for (i = 0; i < m; i++) { + items[n].byte_len = lens[2]; + items[n].code_len = 1; + items[n].code[0] = FOLDS3_UNFOLDS(index)[i]; + n++; + } + + for (fn = 0; fn < 3; fn++) { + int sindex; + cs[fn][0] = FOLDS3_FOLD(index)[fn]; + ncs[fn] = 1; + sindex = onigenc_unicode_fold1_key(&cs[fn][0]); + if (sindex >= 0) { + int m = FOLDS1_UNFOLDS_NUM(sindex); + for (i = 0; i < m; i++) { + cs[fn][i+1] = FOLDS1_UNFOLDS(sindex)[i]; + } + ncs[fn] += m; + } + } + + for (i = 0; i < ncs[0]; i++) { + for (j = 0; j < ncs[1]; j++) { + for (k = 0; k < ncs[2]; k++) { + if (cs[0][i] == orig_codes[0] && cs[1][j] == orig_codes[1] && + cs[2][k] == orig_codes[2]) + continue; + + items[n].byte_len = lens[2]; + items[n].code_len = 3; + items[n].code[0] = cs[0][i]; + items[n].code[1] = cs[1][j]; + items[n].code[2] = cs[2][k]; + n++; + } + } + } + + return n; + } + } + + index = onigenc_unicode_fold2_key(codes); + if (index >= 0) { + m = FOLDS2_UNFOLDS_NUM(index); + for (i = 0; i < m; i++) { + items[n].byte_len = lens[1]; + items[n].code_len = 1; + items[n].code[0] = FOLDS2_UNFOLDS(index)[i]; + n++; + } + + for (fn = 0; fn < 2; fn++) { + int sindex; + cs[fn][0] = FOLDS2_FOLD(index)[fn]; + ncs[fn] = 1; + sindex = onigenc_unicode_fold1_key(&cs[fn][0]); + if (sindex >= 0) { + int m = FOLDS1_UNFOLDS_NUM(sindex); + for (i = 0; i < m; i++) { + cs[fn][i+1] = FOLDS1_UNFOLDS(sindex)[i]; + } + ncs[fn] += m; + } + } + + for (i = 0; i < ncs[0]; i++) { + for (j = 0; j < ncs[1]; j++) { + if (cs[0][i] == orig_codes[0] && cs[1][j] == orig_codes[1]) + continue; + items[n].byte_len = lens[1]; + items[n].code_len = 2; + items[n].code[0] = cs[0][i]; + items[n].code[1] = cs[1][j]; + n++; + } + } + + return n; + } + } + + fold1: + if (buk1 != 0) { + if (buk1->fold_len == 1) { + int un; + + if (CASE_FOLD_IS_NOT_ASCII_ONLY(flag) || + ONIGENC_IS_ASCII_CODE(*FOLDS1_FOLD(buk1->index))) { + items[0].byte_len = lens[0]; + items[0].code_len = 1; + items[0].code[0] = *FOLDS1_FOLD(buk1->index); + n++; + } + + un = FOLDS1_UNFOLDS_NUM(buk1->index); + for (i = 0; i < un; i++) { + OnigCodePoint unfold = FOLDS1_UNFOLDS(buk1->index)[i]; + if (unfold != orig_codes[0]) { + if (CASE_FOLD_IS_NOT_ASCII_ONLY(flag) || + ONIGENC_IS_ASCII_CODE(unfold)) { + items[n].byte_len = lens[0]; + items[n].code_len = 1; + items[n].code[0] = unfold; + n++; + } + } + } + } + else if ((flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { + if (buk1->fold_len == 2) { + m = FOLDS2_UNFOLDS_NUM(buk1->index); + for (i = 0; i < m; i++) { + OnigCodePoint unfold = FOLDS2_UNFOLDS(buk1->index)[i]; + if (unfold == orig_codes[0]) continue; + + items[n].byte_len = lens[0]; + items[n].code_len = 1; + items[n].code[0] = unfold; + n++; + } + + for (fn = 0; fn < 2; fn++) { + int index; + cs[fn][0] = FOLDS2_FOLD(buk1->index)[fn]; + ncs[fn] = 1; + index = onigenc_unicode_fold1_key(&cs[fn][0]); + if (index >= 0) { + int m = FOLDS1_UNFOLDS_NUM(index); + for (i = 0; i < m; i++) { + cs[fn][i+1] = FOLDS1_UNFOLDS(index)[i]; + } + ncs[fn] += m; + } + } + + for (i = 0; i < ncs[0]; i++) { + for (j = 0; j < ncs[1]; j++) { + items[n].byte_len = lens[0]; + items[n].code_len = 2; + items[n].code[0] = cs[0][i]; + items[n].code[1] = cs[1][j]; + n++; + } + } + } + else { /* fold_len == 3 */ + m = FOLDS3_UNFOLDS_NUM(buk1->index); + for (i = 0; i < m; i++) { + OnigCodePoint unfold = FOLDS3_UNFOLDS(buk1->index)[i]; + if (unfold == orig_codes[0]) continue; + + items[n].byte_len = lens[0]; + items[n].code_len = 1; + items[n].code[0] = unfold; + n++; + } + + for (fn = 0; fn < 3; fn++) { + int index; + cs[fn][0] = FOLDS3_FOLD(buk1->index)[fn]; + ncs[fn] = 1; + index = onigenc_unicode_fold1_key(&cs[fn][0]); + if (index >= 0) { + int m = FOLDS1_UNFOLDS_NUM(index); + for (i = 0; i < m; i++) { + cs[fn][i+1] = FOLDS1_UNFOLDS(index)[i]; + } + ncs[fn] += m; + } + } + + for (i = 0; i < ncs[0]; i++) { + for (j = 0; j < ncs[1]; j++) { + for (k = 0; k < ncs[2]; k++) { + items[n].byte_len = lens[0]; + items[n].code_len = 3; + items[n].code[0] = cs[0][i]; + items[n].code[1] = cs[1][j]; + items[n].code[2] = cs[2][k]; + n++; + } + } + } + } + } + } + else { + int index = onigenc_unicode_fold1_key(orig_codes); + if (index >= 0) { + int m = FOLDS1_UNFOLDS_NUM(index); + for (i = 0; i < m; i++) { + code = FOLDS1_UNFOLDS(index)[i]; + if (CASE_FOLD_IS_NOT_ASCII_ONLY(flag)||ONIGENC_IS_ASCII_CODE(code)) { + items[n].byte_len = lens[0]; + items[n].code_len = 1; + items[n].code[0] = code; + n++; + } + } + } + } + + return n; +} + +#ifdef USE_UNICODE_PROPERTIES +#include "unicode_property_data.c" +#else +#include "unicode_property_data_posix.c" +#endif + + +#ifdef USE_UNICODE_WORD_BREAK + +enum WB_TYPE { + WB_Any = 0, + WB_ALetter, + WB_CR, + WB_Double_Quote, + WB_Extend, + WB_ExtendNumLet, + WB_Format, + WB_Hebrew_Letter, + WB_Katakana, + WB_LF, + WB_MidLetter, + WB_MidNum, + WB_MidNumLet, + WB_Newline, + WB_Numeric, + WB_Regional_Indicator, + WB_Single_Quote, + WB_WSegSpace, + WB_ZWJ, +}; + +typedef struct { + OnigCodePoint start; + OnigCodePoint end; + enum WB_TYPE type; +} WB_RANGE_TYPE; + +#include "unicode_wb_data.c" + +static enum WB_TYPE +wb_get_type(OnigCodePoint code) +{ + OnigCodePoint low, high, x; + enum WB_TYPE type; + + for (low = 0, high = (OnigCodePoint )WB_RANGE_NUM; low < high; ) { + x = (low + high) >> 1; + if (code > WB_RANGES[x].end) + low = x + 1; + else + high = x; + } + + type = (low < (OnigCodePoint )WB_RANGE_NUM && + code >= WB_RANGES[low].start) ? + WB_RANGES[low].type : WB_Any; + + return type; +} + +#define IS_WB_IGNORE_TAIL(t) ((t) == WB_Extend || (t) == WB_Format || (t) == WB_ZWJ) +#define IS_WB_AHLetter(t) ((t) == WB_ALetter || (t) == WB_Hebrew_Letter) +#define IS_WB_MidNumLetQ(t) ((t) == WB_MidNumLet || (t) == WB_Single_Quote) + +static int +wb_get_next_main_code(OnigEncoding enc, UChar* p, const UChar* end, + OnigCodePoint* rcode, enum WB_TYPE* rtype) +{ + OnigCodePoint code; + enum WB_TYPE type; + + while (TRUE) { + p += enclen(enc, p); + if (p >= end) break; + + code = ONIGENC_MBC_TO_CODE(enc, p, end); + type = wb_get_type(code); + if (! IS_WB_IGNORE_TAIL(type)) { + *rcode = code; + *rtype = type; + return 1; + } + } + + return 0; +} + +extern int +onigenc_wb_is_break_position(OnigEncoding enc, UChar* p, UChar* prev, + const UChar* start, const UChar* end) +{ + int r; + UChar* pp; + OnigCodePoint cfrom; + OnigCodePoint cfrom2; + OnigCodePoint cto; + OnigCodePoint cto2; + enum WB_TYPE from; + enum WB_TYPE from2; + enum WB_TYPE to; + enum WB_TYPE to2; + + /* WB1: sot / Any */ + if (p == start) return TRUE; + /* WB2: Any / eot */ + if (p == end) return TRUE; + + if (IS_NULL(prev)) { + prev = onigenc_get_prev_char_head(enc, start, p); + if (IS_NULL(prev)) return TRUE; + } + + cfrom = ONIGENC_MBC_TO_CODE(enc, prev, end); + cto = ONIGENC_MBC_TO_CODE(enc, p, end); + + from = wb_get_type(cfrom); + to = wb_get_type(cto); + + /* short cut */ + if (from == 0 && to == 0) goto WB999; + + /* WB3: CR + LF */ + if (from == WB_CR && to == WB_LF) return FALSE; + + /* WB3a: (Newline|CR|LF) / */ + if (from == WB_Newline || from == WB_CR || from == WB_LF) return TRUE; + /* WB3b: / (Newline|CR|LF) */ + if (to == WB_Newline || to == WB_CR || to == WB_LF) return TRUE; + + /* WB3c: ZWJ + {Extended_Pictographic} */ + if (from == WB_ZWJ) { + if (onigenc_unicode_is_code_ctype(cto, PROP_INDEX_EXTENDEDPICTOGRAPHIC)) + return FALSE; + } + + /* WB3d: WSegSpace + WSegSpace */ + if (from == WB_WSegSpace && to == WB_WSegSpace) return FALSE; + + /* WB4: X (Extend|Format|ZWJ)* -> X */ + if (IS_WB_IGNORE_TAIL(to)) return FALSE; + if (IS_WB_IGNORE_TAIL(from)) { + while ((pp = onigenc_get_prev_char_head(enc, start, prev)) != NULL) { + prev = pp; + cfrom = ONIGENC_MBC_TO_CODE(enc, prev, end); + from = wb_get_type(cfrom); + if (! IS_WB_IGNORE_TAIL(from)) + break; + } + } + + if (IS_WB_AHLetter(from)) { + /* WB5: AHLetter + AHLetter */ + if (IS_WB_AHLetter(to)) return FALSE; + + /* WB6: AHLetter + (MidLetter | MidNumLetQ) AHLetter */ + if (to == WB_MidLetter || IS_WB_MidNumLetQ(to)) { + r = wb_get_next_main_code(enc, p, end, &cto2, &to2); + if (r == 1) { + if (IS_WB_AHLetter(to2)) return FALSE; + } + } + } + + /* WB7: AHLetter (MidLetter | MidNumLetQ) + AHLetter */ + if (from == WB_MidLetter || IS_WB_MidNumLetQ(from)) { + if (IS_WB_AHLetter(to)) { + from2 = WB_Any; + while ((pp = onigenc_get_prev_char_head(enc, start, prev)) != NULL) { + prev = pp; + cfrom2 = ONIGENC_MBC_TO_CODE(enc, prev, end); + from2 = wb_get_type(cfrom2); + if (! IS_WB_IGNORE_TAIL(from2)) + break; + } + + if (IS_WB_AHLetter(from2)) return FALSE; + } + } + + if (from == WB_Hebrew_Letter) { + /* WB7a: Hebrew_Letter + Single_Quote */ + if (to == WB_Single_Quote) return FALSE; + + /* WB7b: Hebrew_Letter + Double_Quote Hebrew_Letter */ + if (to == WB_Double_Quote) { + r = wb_get_next_main_code(enc, p, end, &cto2, &to2); + if (r == 1) { + if (to2 == WB_Hebrew_Letter) return FALSE; + } + } + } + + /* WB7c: Hebrew_Letter Double_Quote + Hebrew_Letter */ + if (from == WB_Double_Quote) { + if (to == WB_Hebrew_Letter) { + from2 = WB_Any; + while ((pp = onigenc_get_prev_char_head(enc, start, prev)) != NULL) { + prev = pp; + cfrom2 = ONIGENC_MBC_TO_CODE(enc, prev, end); + from2 = wb_get_type(cfrom2); + if (! IS_WB_IGNORE_TAIL(from2)) + break; + } + + if (from2 == WB_Hebrew_Letter) return FALSE; + } + } + + if (to == WB_Numeric) { + /* WB8: Numeric + Numeric */ + if (from == WB_Numeric) return FALSE; + + /* WB9: AHLetter + Numeric */ + if (IS_WB_AHLetter(from)) return FALSE; + + /* WB11: Numeric (MidNum | MidNumLetQ) + Numeric */ + if (from == WB_MidNum || IS_WB_MidNumLetQ(from)) { + from2 = WB_Any; + while ((pp = onigenc_get_prev_char_head(enc, start, prev)) != NULL) { + prev = pp; + cfrom2 = ONIGENC_MBC_TO_CODE(enc, prev, end); + from2 = wb_get_type(cfrom2); + if (! IS_WB_IGNORE_TAIL(from2)) + break; + } + + if (from2 == WB_Numeric) return FALSE; + } + } + + if (from == WB_Numeric) { + /* WB10: Numeric + AHLetter */ + if (IS_WB_AHLetter(to)) return FALSE; + + /* WB12: Numeric + (MidNum | MidNumLetQ) Numeric */ + if (to == WB_MidNum || IS_WB_MidNumLetQ(to)) { + r = wb_get_next_main_code(enc, p, end, &cto2, &to2); + if (r == 1) { + if (to2 == WB_Numeric) return FALSE; + } + } + } + + /* WB13: Katakana + Katakana */ + if (from == WB_Katakana && to == WB_Katakana) return FALSE; + + /* WB13a: (AHLetter | Numeric | Katakana | ExtendNumLet) + ExtendNumLet */ + if (IS_WB_AHLetter(from) || from == WB_Numeric || from == WB_Katakana + || from == WB_ExtendNumLet) { + if (to == WB_ExtendNumLet) return FALSE; + } + + /* WB13b: ExtendNumLet + (AHLetter | Numeric | Katakana) */ + if (from == WB_ExtendNumLet) { + if (IS_WB_AHLetter(to) || to == WB_Numeric || to == WB_Katakana) + return FALSE; + } + + + /* WB15: sot (RI RI)* RI + RI */ + /* WB16: [^RI] (RI RI)* RI + RI */ + if (from == WB_Regional_Indicator && to == WB_Regional_Indicator) { + int n = 0; + while ((prev = onigenc_get_prev_char_head(enc, start, prev)) != NULL) { + cfrom2 = ONIGENC_MBC_TO_CODE(enc, prev, end); + from2 = wb_get_type(cfrom2); + if (from2 != WB_Regional_Indicator) + break; + + n++; + } + if ((n % 2) == 0) return FALSE; + } + + WB999: + /* WB999: Any / Any */ + return TRUE; +} + +#endif /* USE_UNICODE_WORD_BREAK */ + + +#ifdef USE_UNICODE_EXTENDED_GRAPHEME_CLUSTER + +enum EGCB_BREAK_TYPE { + EGCB_NOT_BREAK = 0, + EGCB_BREAK = 1, + EGCB_BREAK_UNDEF_GB11 = 2, + EGCB_BREAK_UNDEF_RI_RI = 3 +}; + +enum EGCB_TYPE { + EGCB_Other = 0, + EGCB_CR = 1, + EGCB_LF = 2, + EGCB_Control = 3, + EGCB_Extend = 4, + EGCB_Prepend = 5, + EGCB_Regional_Indicator = 6, + EGCB_SpacingMark = 7, + EGCB_ZWJ = 8, +#if 0 + /* obsoleted */ + EGCB_E_Base = 9, + EGCB_E_Base_GAZ = 10, + EGCB_E_Modifier = 11, + EGCB_Glue_After_Zwj = 12, +#endif + EGCB_L = 13, + EGCB_LV = 14, + EGCB_LVT = 15, + EGCB_T = 16, + EGCB_V = 17 +}; + +typedef struct { + OnigCodePoint start; + OnigCodePoint end; + enum EGCB_TYPE type; +} EGCB_RANGE_TYPE; + +#include "unicode_egcb_data.c" + +static enum EGCB_TYPE +egcb_get_type(OnigCodePoint code) +{ + OnigCodePoint low, high, x; + enum EGCB_TYPE type; + + for (low = 0, high = (OnigCodePoint )EGCB_RANGE_NUM; low < high; ) { + x = (low + high) >> 1; + if (code > EGCB_RANGES[x].end) + low = x + 1; + else + high = x; + } + + type = (low < (OnigCodePoint )EGCB_RANGE_NUM && + code >= EGCB_RANGES[low].start) ? + EGCB_RANGES[low].type : EGCB_Other; + + return type; +} + +#define IS_CONTROL_CR_LF(code) ((code) <= EGCB_Control && (code) >= EGCB_CR) +#define IS_HANGUL(code) ((code) >= EGCB_L) + +/* GB1 and GB2 are outside of this function. */ +static enum EGCB_BREAK_TYPE +unicode_egcb_is_break_2code(OnigCodePoint from_code, OnigCodePoint to_code) +{ + enum EGCB_TYPE from; + enum EGCB_TYPE to; + + from = egcb_get_type(from_code); + to = egcb_get_type(to_code); + + /* short cut */ + if (from == 0 && to == 0) goto GB999; + + /* GB3 */ + if (from == EGCB_CR && to == EGCB_LF) return EGCB_NOT_BREAK; + /* GB4 */ + if (IS_CONTROL_CR_LF(from)) return EGCB_BREAK; + /* GB5 */ + if (IS_CONTROL_CR_LF(to)) return EGCB_BREAK; + + if (IS_HANGUL(from) && IS_HANGUL(to)) { + /* GB6 */ + if (from == EGCB_L && to != EGCB_T) return EGCB_NOT_BREAK; + /* GB7 */ + if ((from == EGCB_LV || from == EGCB_V) + && (to == EGCB_V || to == EGCB_T)) return EGCB_NOT_BREAK; + + /* GB8 */ + if ((to == EGCB_T) && (from == EGCB_LVT || from == EGCB_T)) + return EGCB_NOT_BREAK; + + goto GB999; + } + + /* GB9 */ + if (to == EGCB_Extend || to == EGCB_ZWJ) return EGCB_NOT_BREAK; + + /* GB9a */ + if (to == EGCB_SpacingMark) return EGCB_NOT_BREAK; + /* GB9b */ + if (from == EGCB_Prepend) return EGCB_NOT_BREAK; + + /* GB10 removed */ + + /* GB11 */ + if (from == EGCB_ZWJ) { + if (onigenc_unicode_is_code_ctype(to_code, PROP_INDEX_EXTENDEDPICTOGRAPHIC)) + return EGCB_BREAK_UNDEF_GB11; + + goto GB999; + } + + /* GB12, GB13 */ + if (from == EGCB_Regional_Indicator && to == EGCB_Regional_Indicator) { + return EGCB_BREAK_UNDEF_RI_RI; + } + + GB999: + return EGCB_BREAK; +} + +#endif /* USE_UNICODE_EXTENDED_GRAPHEME_CLUSTER */ + +extern int +onigenc_egcb_is_break_position(OnigEncoding enc, UChar* p, UChar* prev, + const UChar* start, const UChar* end) +{ + OnigCodePoint from; + OnigCodePoint to; +#ifdef USE_UNICODE_EXTENDED_GRAPHEME_CLUSTER + enum EGCB_BREAK_TYPE btype; + enum EGCB_TYPE type; +#endif + + /* GB1 and GB2 */ + if (p == start) return 1; + if (p == end) return 1; + + if (IS_NULL(prev)) { + prev = onigenc_get_prev_char_head(enc, start, p); + if (IS_NULL(prev)) return 1; + } + + from = ONIGENC_MBC_TO_CODE(enc, prev, end); + to = ONIGENC_MBC_TO_CODE(enc, p, end); + +#ifdef USE_UNICODE_EXTENDED_GRAPHEME_CLUSTER + if (! ONIGENC_IS_UNICODE_ENCODING(enc)) { + return from != 0x000d || to != NEWLINE_CODE; + } + + btype = unicode_egcb_is_break_2code(from, to); + switch (btype) { + case EGCB_NOT_BREAK: + return 0; + break; + case EGCB_BREAK: + return 1; + break; + + case EGCB_BREAK_UNDEF_GB11: + while ((prev = onigenc_get_prev_char_head(enc, start, prev)) != NULL) { + from = ONIGENC_MBC_TO_CODE(enc, prev, end); + if (onigenc_unicode_is_code_ctype(from, PROP_INDEX_EXTENDEDPICTOGRAPHIC)) + return 0; + + type = egcb_get_type(from); + if (type != EGCB_Extend) + break; + } + break; + + case EGCB_BREAK_UNDEF_RI_RI: + { + int n = 0; + while ((prev = onigenc_get_prev_char_head(enc, start, prev)) != NULL) { + from = ONIGENC_MBC_TO_CODE(enc, prev, end); + type = egcb_get_type(from); + if (type != EGCB_Regional_Indicator) + break; + + n++; + } + if ((n % 2) == 0) return 0; + } + break; + } + + return 1; + +#else + return from != 0x000d || to != NEWLINE_CODE; +#endif /* USE_UNICODE_EXTENDED_GRAPHEME_CLUSTER */ +} + + +#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; + UChar* uname; + + 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; + + uname = (UChar* )name; + n = 0; + for (i = 0; i < len; i++) { + c = uname[i]; + if (c < 0x20 || 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); + if (IS_NULL(UserDefinedPropertyTable)) { + xfree(s); + return ONIGERR_MEMORY; + } + } + + 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/vendor/oniguruma/oniguruma/src/unicode_egcb_data.c b/vendor/oniguruma/oniguruma/src/unicode_egcb_data.c new file mode 100644 index 0000000..ca0ab45 --- /dev/null +++ b/vendor/oniguruma/oniguruma/src/unicode_egcb_data.c @@ -0,0 +1,1424 @@ +/* unicode_egcb_data.c: Generated by make_unicode_egcb_data.py. */ +/*- + * Copyright (c) 2017-2024 K.Kosako + * 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 160000 + +/* +CR +Control +Extend +L +LF +LV +LVT +Prepend +Regional_Indicator +SpacingMark +T +V +ZWJ +*/ + +static int EGCB_RANGE_NUM = 1376; +static EGCB_RANGE_TYPE EGCB_RANGES[] = { + {0x000000, 0x000009, EGCB_Control }, + {0x00000a, 0x00000a, EGCB_LF }, + {0x00000b, 0x00000c, EGCB_Control }, + {0x00000d, 0x00000d, EGCB_CR }, + {0x00000e, 0x00001f, EGCB_Control }, + {0x00007f, 0x00009f, EGCB_Control }, + {0x0000ad, 0x0000ad, EGCB_Control }, + {0x000300, 0x00036f, EGCB_Extend }, + {0x000483, 0x000489, EGCB_Extend }, + {0x000591, 0x0005bd, EGCB_Extend }, + {0x0005bf, 0x0005bf, EGCB_Extend }, + {0x0005c1, 0x0005c2, EGCB_Extend }, + {0x0005c4, 0x0005c5, EGCB_Extend }, + {0x0005c7, 0x0005c7, EGCB_Extend }, + {0x000600, 0x000605, EGCB_Prepend }, + {0x000610, 0x00061a, EGCB_Extend }, + {0x00061c, 0x00061c, EGCB_Control }, + {0x00064b, 0x00065f, EGCB_Extend }, + {0x000670, 0x000670, EGCB_Extend }, + {0x0006d6, 0x0006dc, EGCB_Extend }, + {0x0006dd, 0x0006dd, EGCB_Prepend }, + {0x0006df, 0x0006e4, EGCB_Extend }, + {0x0006e7, 0x0006e8, EGCB_Extend }, + {0x0006ea, 0x0006ed, EGCB_Extend }, + {0x00070f, 0x00070f, EGCB_Prepend }, + {0x000711, 0x000711, EGCB_Extend }, + {0x000730, 0x00074a, EGCB_Extend }, + {0x0007a6, 0x0007b0, EGCB_Extend }, + {0x0007eb, 0x0007f3, EGCB_Extend }, + {0x0007fd, 0x0007fd, EGCB_Extend }, + {0x000816, 0x000819, EGCB_Extend }, + {0x00081b, 0x000823, EGCB_Extend }, + {0x000825, 0x000827, EGCB_Extend }, + {0x000829, 0x00082d, EGCB_Extend }, + {0x000859, 0x00085b, EGCB_Extend }, + {0x000890, 0x000891, EGCB_Prepend }, + {0x000897, 0x00089f, EGCB_Extend }, + {0x0008ca, 0x0008e1, EGCB_Extend }, + {0x0008e2, 0x0008e2, EGCB_Prepend }, + {0x0008e3, 0x000902, EGCB_Extend }, + {0x000903, 0x000903, EGCB_SpacingMark }, + {0x00093a, 0x00093a, EGCB_Extend }, + {0x00093b, 0x00093b, EGCB_SpacingMark }, + {0x00093c, 0x00093c, EGCB_Extend }, + {0x00093e, 0x000940, EGCB_SpacingMark }, + {0x000941, 0x000948, EGCB_Extend }, + {0x000949, 0x00094c, EGCB_SpacingMark }, + {0x00094d, 0x00094d, EGCB_Extend }, + {0x00094e, 0x00094f, EGCB_SpacingMark }, + {0x000951, 0x000957, EGCB_Extend }, + {0x000962, 0x000963, EGCB_Extend }, + {0x000981, 0x000981, EGCB_Extend }, + {0x000982, 0x000983, EGCB_SpacingMark }, + {0x0009bc, 0x0009bc, EGCB_Extend }, + {0x0009be, 0x0009be, EGCB_Extend }, + {0x0009bf, 0x0009c0, EGCB_SpacingMark }, + {0x0009c1, 0x0009c4, EGCB_Extend }, + {0x0009c7, 0x0009c8, EGCB_SpacingMark }, + {0x0009cb, 0x0009cc, EGCB_SpacingMark }, + {0x0009cd, 0x0009cd, EGCB_Extend }, + {0x0009d7, 0x0009d7, EGCB_Extend }, + {0x0009e2, 0x0009e3, EGCB_Extend }, + {0x0009fe, 0x0009fe, EGCB_Extend }, + {0x000a01, 0x000a02, EGCB_Extend }, + {0x000a03, 0x000a03, EGCB_SpacingMark }, + {0x000a3c, 0x000a3c, EGCB_Extend }, + {0x000a3e, 0x000a40, EGCB_SpacingMark }, + {0x000a41, 0x000a42, EGCB_Extend }, + {0x000a47, 0x000a48, EGCB_Extend }, + {0x000a4b, 0x000a4d, EGCB_Extend }, + {0x000a51, 0x000a51, EGCB_Extend }, + {0x000a70, 0x000a71, EGCB_Extend }, + {0x000a75, 0x000a75, EGCB_Extend }, + {0x000a81, 0x000a82, EGCB_Extend }, + {0x000a83, 0x000a83, EGCB_SpacingMark }, + {0x000abc, 0x000abc, EGCB_Extend }, + {0x000abe, 0x000ac0, EGCB_SpacingMark }, + {0x000ac1, 0x000ac5, EGCB_Extend }, + {0x000ac7, 0x000ac8, EGCB_Extend }, + {0x000ac9, 0x000ac9, EGCB_SpacingMark }, + {0x000acb, 0x000acc, EGCB_SpacingMark }, + {0x000acd, 0x000acd, EGCB_Extend }, + {0x000ae2, 0x000ae3, EGCB_Extend }, + {0x000afa, 0x000aff, EGCB_Extend }, + {0x000b01, 0x000b01, EGCB_Extend }, + {0x000b02, 0x000b03, EGCB_SpacingMark }, + {0x000b3c, 0x000b3c, EGCB_Extend }, + {0x000b3e, 0x000b3f, EGCB_Extend }, + {0x000b40, 0x000b40, EGCB_SpacingMark }, + {0x000b41, 0x000b44, EGCB_Extend }, + {0x000b47, 0x000b48, EGCB_SpacingMark }, + {0x000b4b, 0x000b4c, EGCB_SpacingMark }, + {0x000b4d, 0x000b4d, EGCB_Extend }, + {0x000b55, 0x000b57, EGCB_Extend }, + {0x000b62, 0x000b63, EGCB_Extend }, + {0x000b82, 0x000b82, EGCB_Extend }, + {0x000bbe, 0x000bbe, EGCB_Extend }, + {0x000bbf, 0x000bbf, EGCB_SpacingMark }, + {0x000bc0, 0x000bc0, EGCB_Extend }, + {0x000bc1, 0x000bc2, EGCB_SpacingMark }, + {0x000bc6, 0x000bc8, EGCB_SpacingMark }, + {0x000bca, 0x000bcc, EGCB_SpacingMark }, + {0x000bcd, 0x000bcd, EGCB_Extend }, + {0x000bd7, 0x000bd7, EGCB_Extend }, + {0x000c00, 0x000c00, EGCB_Extend }, + {0x000c01, 0x000c03, EGCB_SpacingMark }, + {0x000c04, 0x000c04, EGCB_Extend }, + {0x000c3c, 0x000c3c, EGCB_Extend }, + {0x000c3e, 0x000c40, EGCB_Extend }, + {0x000c41, 0x000c44, EGCB_SpacingMark }, + {0x000c46, 0x000c48, EGCB_Extend }, + {0x000c4a, 0x000c4d, EGCB_Extend }, + {0x000c55, 0x000c56, EGCB_Extend }, + {0x000c62, 0x000c63, EGCB_Extend }, + {0x000c81, 0x000c81, EGCB_Extend }, + {0x000c82, 0x000c83, EGCB_SpacingMark }, + {0x000cbc, 0x000cbc, EGCB_Extend }, + {0x000cbe, 0x000cbe, EGCB_SpacingMark }, + {0x000cbf, 0x000cc0, EGCB_Extend }, + {0x000cc1, 0x000cc1, EGCB_SpacingMark }, + {0x000cc2, 0x000cc2, EGCB_Extend }, + {0x000cc3, 0x000cc4, EGCB_SpacingMark }, + {0x000cc6, 0x000cc8, EGCB_Extend }, + {0x000cca, 0x000ccd, EGCB_Extend }, + {0x000cd5, 0x000cd6, EGCB_Extend }, + {0x000ce2, 0x000ce3, EGCB_Extend }, + {0x000cf3, 0x000cf3, EGCB_SpacingMark }, + {0x000d00, 0x000d01, EGCB_Extend }, + {0x000d02, 0x000d03, EGCB_SpacingMark }, + {0x000d3b, 0x000d3c, EGCB_Extend }, + {0x000d3e, 0x000d3e, EGCB_Extend }, + {0x000d3f, 0x000d40, EGCB_SpacingMark }, + {0x000d41, 0x000d44, EGCB_Extend }, + {0x000d46, 0x000d48, EGCB_SpacingMark }, + {0x000d4a, 0x000d4c, EGCB_SpacingMark }, + {0x000d4d, 0x000d4d, EGCB_Extend }, + {0x000d4e, 0x000d4e, EGCB_Prepend }, + {0x000d57, 0x000d57, EGCB_Extend }, + {0x000d62, 0x000d63, EGCB_Extend }, + {0x000d81, 0x000d81, EGCB_Extend }, + {0x000d82, 0x000d83, EGCB_SpacingMark }, + {0x000dca, 0x000dca, EGCB_Extend }, + {0x000dcf, 0x000dcf, EGCB_Extend }, + {0x000dd0, 0x000dd1, EGCB_SpacingMark }, + {0x000dd2, 0x000dd4, EGCB_Extend }, + {0x000dd6, 0x000dd6, EGCB_Extend }, + {0x000dd8, 0x000dde, EGCB_SpacingMark }, + {0x000ddf, 0x000ddf, EGCB_Extend }, + {0x000df2, 0x000df3, EGCB_SpacingMark }, + {0x000e31, 0x000e31, EGCB_Extend }, + {0x000e33, 0x000e33, EGCB_SpacingMark }, + {0x000e34, 0x000e3a, EGCB_Extend }, + {0x000e47, 0x000e4e, EGCB_Extend }, + {0x000eb1, 0x000eb1, EGCB_Extend }, + {0x000eb3, 0x000eb3, EGCB_SpacingMark }, + {0x000eb4, 0x000ebc, EGCB_Extend }, + {0x000ec8, 0x000ece, EGCB_Extend }, + {0x000f18, 0x000f19, EGCB_Extend }, + {0x000f35, 0x000f35, EGCB_Extend }, + {0x000f37, 0x000f37, EGCB_Extend }, + {0x000f39, 0x000f39, EGCB_Extend }, + {0x000f3e, 0x000f3f, EGCB_SpacingMark }, + {0x000f71, 0x000f7e, EGCB_Extend }, + {0x000f7f, 0x000f7f, EGCB_SpacingMark }, + {0x000f80, 0x000f84, EGCB_Extend }, + {0x000f86, 0x000f87, EGCB_Extend }, + {0x000f8d, 0x000f97, EGCB_Extend }, + {0x000f99, 0x000fbc, EGCB_Extend }, + {0x000fc6, 0x000fc6, EGCB_Extend }, + {0x00102d, 0x001030, EGCB_Extend }, + {0x001031, 0x001031, EGCB_SpacingMark }, + {0x001032, 0x001037, EGCB_Extend }, + {0x001039, 0x00103a, EGCB_Extend }, + {0x00103b, 0x00103c, EGCB_SpacingMark }, + {0x00103d, 0x00103e, EGCB_Extend }, + {0x001056, 0x001057, EGCB_SpacingMark }, + {0x001058, 0x001059, EGCB_Extend }, + {0x00105e, 0x001060, EGCB_Extend }, + {0x001071, 0x001074, EGCB_Extend }, + {0x001082, 0x001082, EGCB_Extend }, + {0x001084, 0x001084, EGCB_SpacingMark }, + {0x001085, 0x001086, EGCB_Extend }, + {0x00108d, 0x00108d, EGCB_Extend }, + {0x00109d, 0x00109d, EGCB_Extend }, + {0x001100, 0x00115f, EGCB_L }, + {0x001160, 0x0011a7, EGCB_V }, + {0x0011a8, 0x0011ff, EGCB_T }, + {0x00135d, 0x00135f, EGCB_Extend }, + {0x001712, 0x001715, EGCB_Extend }, + {0x001732, 0x001734, EGCB_Extend }, + {0x001752, 0x001753, EGCB_Extend }, + {0x001772, 0x001773, EGCB_Extend }, + {0x0017b4, 0x0017b5, EGCB_Extend }, + {0x0017b6, 0x0017b6, EGCB_SpacingMark }, + {0x0017b7, 0x0017bd, EGCB_Extend }, + {0x0017be, 0x0017c5, EGCB_SpacingMark }, + {0x0017c6, 0x0017c6, EGCB_Extend }, + {0x0017c7, 0x0017c8, EGCB_SpacingMark }, + {0x0017c9, 0x0017d3, EGCB_Extend }, + {0x0017dd, 0x0017dd, EGCB_Extend }, + {0x00180b, 0x00180d, EGCB_Extend }, + {0x00180e, 0x00180e, EGCB_Control }, + {0x00180f, 0x00180f, EGCB_Extend }, + {0x001885, 0x001886, EGCB_Extend }, + {0x0018a9, 0x0018a9, EGCB_Extend }, + {0x001920, 0x001922, EGCB_Extend }, + {0x001923, 0x001926, EGCB_SpacingMark }, + {0x001927, 0x001928, EGCB_Extend }, + {0x001929, 0x00192b, EGCB_SpacingMark }, + {0x001930, 0x001931, EGCB_SpacingMark }, + {0x001932, 0x001932, EGCB_Extend }, + {0x001933, 0x001938, EGCB_SpacingMark }, + {0x001939, 0x00193b, EGCB_Extend }, + {0x001a17, 0x001a18, EGCB_Extend }, + {0x001a19, 0x001a1a, EGCB_SpacingMark }, + {0x001a1b, 0x001a1b, EGCB_Extend }, + {0x001a55, 0x001a55, EGCB_SpacingMark }, + {0x001a56, 0x001a56, EGCB_Extend }, + {0x001a57, 0x001a57, EGCB_SpacingMark }, + {0x001a58, 0x001a5e, EGCB_Extend }, + {0x001a60, 0x001a60, EGCB_Extend }, + {0x001a62, 0x001a62, EGCB_Extend }, + {0x001a65, 0x001a6c, EGCB_Extend }, + {0x001a6d, 0x001a72, EGCB_SpacingMark }, + {0x001a73, 0x001a7c, EGCB_Extend }, + {0x001a7f, 0x001a7f, EGCB_Extend }, + {0x001ab0, 0x001ace, EGCB_Extend }, + {0x001b00, 0x001b03, EGCB_Extend }, + {0x001b04, 0x001b04, EGCB_SpacingMark }, + {0x001b34, 0x001b3d, EGCB_Extend }, + {0x001b3e, 0x001b41, EGCB_SpacingMark }, + {0x001b42, 0x001b44, EGCB_Extend }, + {0x001b6b, 0x001b73, EGCB_Extend }, + {0x001b80, 0x001b81, EGCB_Extend }, + {0x001b82, 0x001b82, EGCB_SpacingMark }, + {0x001ba1, 0x001ba1, EGCB_SpacingMark }, + {0x001ba2, 0x001ba5, EGCB_Extend }, + {0x001ba6, 0x001ba7, EGCB_SpacingMark }, + {0x001ba8, 0x001bad, EGCB_Extend }, + {0x001be6, 0x001be6, EGCB_Extend }, + {0x001be7, 0x001be7, EGCB_SpacingMark }, + {0x001be8, 0x001be9, EGCB_Extend }, + {0x001bea, 0x001bec, EGCB_SpacingMark }, + {0x001bed, 0x001bed, EGCB_Extend }, + {0x001bee, 0x001bee, EGCB_SpacingMark }, + {0x001bef, 0x001bf3, EGCB_Extend }, + {0x001c24, 0x001c2b, EGCB_SpacingMark }, + {0x001c2c, 0x001c33, EGCB_Extend }, + {0x001c34, 0x001c35, EGCB_SpacingMark }, + {0x001c36, 0x001c37, EGCB_Extend }, + {0x001cd0, 0x001cd2, EGCB_Extend }, + {0x001cd4, 0x001ce0, EGCB_Extend }, + {0x001ce1, 0x001ce1, EGCB_SpacingMark }, + {0x001ce2, 0x001ce8, EGCB_Extend }, + {0x001ced, 0x001ced, EGCB_Extend }, + {0x001cf4, 0x001cf4, EGCB_Extend }, + {0x001cf7, 0x001cf7, EGCB_SpacingMark }, + {0x001cf8, 0x001cf9, EGCB_Extend }, + {0x001dc0, 0x001dff, EGCB_Extend }, + {0x00200b, 0x00200b, EGCB_Control }, + {0x00200c, 0x00200c, EGCB_Extend }, + {0x00200d, 0x00200d, EGCB_ZWJ }, + {0x00200e, 0x00200f, EGCB_Control }, + {0x002028, 0x00202e, EGCB_Control }, + {0x002060, 0x00206f, EGCB_Control }, + {0x0020d0, 0x0020f0, EGCB_Extend }, + {0x002cef, 0x002cf1, EGCB_Extend }, + {0x002d7f, 0x002d7f, EGCB_Extend }, + {0x002de0, 0x002dff, EGCB_Extend }, + {0x00302a, 0x00302f, EGCB_Extend }, + {0x003099, 0x00309a, EGCB_Extend }, + {0x00a66f, 0x00a672, EGCB_Extend }, + {0x00a674, 0x00a67d, EGCB_Extend }, + {0x00a69e, 0x00a69f, EGCB_Extend }, + {0x00a6f0, 0x00a6f1, EGCB_Extend }, + {0x00a802, 0x00a802, EGCB_Extend }, + {0x00a806, 0x00a806, EGCB_Extend }, + {0x00a80b, 0x00a80b, EGCB_Extend }, + {0x00a823, 0x00a824, EGCB_SpacingMark }, + {0x00a825, 0x00a826, EGCB_Extend }, + {0x00a827, 0x00a827, EGCB_SpacingMark }, + {0x00a82c, 0x00a82c, EGCB_Extend }, + {0x00a880, 0x00a881, EGCB_SpacingMark }, + {0x00a8b4, 0x00a8c3, EGCB_SpacingMark }, + {0x00a8c4, 0x00a8c5, EGCB_Extend }, + {0x00a8e0, 0x00a8f1, EGCB_Extend }, + {0x00a8ff, 0x00a8ff, EGCB_Extend }, + {0x00a926, 0x00a92d, EGCB_Extend }, + {0x00a947, 0x00a951, EGCB_Extend }, + {0x00a952, 0x00a952, EGCB_SpacingMark }, + {0x00a953, 0x00a953, EGCB_Extend }, + {0x00a960, 0x00a97c, EGCB_L }, + {0x00a980, 0x00a982, EGCB_Extend }, + {0x00a983, 0x00a983, EGCB_SpacingMark }, + {0x00a9b3, 0x00a9b3, EGCB_Extend }, + {0x00a9b4, 0x00a9b5, EGCB_SpacingMark }, + {0x00a9b6, 0x00a9b9, EGCB_Extend }, + {0x00a9ba, 0x00a9bb, EGCB_SpacingMark }, + {0x00a9bc, 0x00a9bd, EGCB_Extend }, + {0x00a9be, 0x00a9bf, EGCB_SpacingMark }, + {0x00a9c0, 0x00a9c0, EGCB_Extend }, + {0x00a9e5, 0x00a9e5, EGCB_Extend }, + {0x00aa29, 0x00aa2e, EGCB_Extend }, + {0x00aa2f, 0x00aa30, EGCB_SpacingMark }, + {0x00aa31, 0x00aa32, EGCB_Extend }, + {0x00aa33, 0x00aa34, EGCB_SpacingMark }, + {0x00aa35, 0x00aa36, EGCB_Extend }, + {0x00aa43, 0x00aa43, EGCB_Extend }, + {0x00aa4c, 0x00aa4c, EGCB_Extend }, + {0x00aa4d, 0x00aa4d, EGCB_SpacingMark }, + {0x00aa7c, 0x00aa7c, EGCB_Extend }, + {0x00aab0, 0x00aab0, EGCB_Extend }, + {0x00aab2, 0x00aab4, EGCB_Extend }, + {0x00aab7, 0x00aab8, EGCB_Extend }, + {0x00aabe, 0x00aabf, EGCB_Extend }, + {0x00aac1, 0x00aac1, EGCB_Extend }, + {0x00aaeb, 0x00aaeb, EGCB_SpacingMark }, + {0x00aaec, 0x00aaed, EGCB_Extend }, + {0x00aaee, 0x00aaef, EGCB_SpacingMark }, + {0x00aaf5, 0x00aaf5, EGCB_SpacingMark }, + {0x00aaf6, 0x00aaf6, EGCB_Extend }, + {0x00abe3, 0x00abe4, EGCB_SpacingMark }, + {0x00abe5, 0x00abe5, EGCB_Extend }, + {0x00abe6, 0x00abe7, EGCB_SpacingMark }, + {0x00abe8, 0x00abe8, EGCB_Extend }, + {0x00abe9, 0x00abea, EGCB_SpacingMark }, + {0x00abec, 0x00abec, EGCB_SpacingMark }, + {0x00abed, 0x00abed, EGCB_Extend }, + {0x00ac00, 0x00ac00, EGCB_LV }, + {0x00ac01, 0x00ac1b, EGCB_LVT }, + {0x00ac1c, 0x00ac1c, EGCB_LV }, + {0x00ac1d, 0x00ac37, EGCB_LVT }, + {0x00ac38, 0x00ac38, EGCB_LV }, + {0x00ac39, 0x00ac53, EGCB_LVT }, + {0x00ac54, 0x00ac54, EGCB_LV }, + {0x00ac55, 0x00ac6f, EGCB_LVT }, + {0x00ac70, 0x00ac70, EGCB_LV }, + {0x00ac71, 0x00ac8b, EGCB_LVT }, + {0x00ac8c, 0x00ac8c, EGCB_LV }, + {0x00ac8d, 0x00aca7, EGCB_LVT }, + {0x00aca8, 0x00aca8, EGCB_LV }, + {0x00aca9, 0x00acc3, EGCB_LVT }, + {0x00acc4, 0x00acc4, EGCB_LV }, + {0x00acc5, 0x00acdf, EGCB_LVT }, + {0x00ace0, 0x00ace0, EGCB_LV }, + {0x00ace1, 0x00acfb, EGCB_LVT }, + {0x00acfc, 0x00acfc, EGCB_LV }, + {0x00acfd, 0x00ad17, EGCB_LVT }, + {0x00ad18, 0x00ad18, EGCB_LV }, + {0x00ad19, 0x00ad33, EGCB_LVT }, + {0x00ad34, 0x00ad34, EGCB_LV }, + {0x00ad35, 0x00ad4f, EGCB_LVT }, + {0x00ad50, 0x00ad50, EGCB_LV }, + {0x00ad51, 0x00ad6b, EGCB_LVT }, + {0x00ad6c, 0x00ad6c, EGCB_LV }, + {0x00ad6d, 0x00ad87, EGCB_LVT }, + {0x00ad88, 0x00ad88, EGCB_LV }, + {0x00ad89, 0x00ada3, EGCB_LVT }, + {0x00ada4, 0x00ada4, EGCB_LV }, + {0x00ada5, 0x00adbf, EGCB_LVT }, + {0x00adc0, 0x00adc0, EGCB_LV }, + {0x00adc1, 0x00addb, EGCB_LVT }, + {0x00addc, 0x00addc, EGCB_LV }, + {0x00addd, 0x00adf7, EGCB_LVT }, + {0x00adf8, 0x00adf8, EGCB_LV }, + {0x00adf9, 0x00ae13, EGCB_LVT }, + {0x00ae14, 0x00ae14, EGCB_LV }, + {0x00ae15, 0x00ae2f, EGCB_LVT }, + {0x00ae30, 0x00ae30, EGCB_LV }, + {0x00ae31, 0x00ae4b, EGCB_LVT }, + {0x00ae4c, 0x00ae4c, EGCB_LV }, + {0x00ae4d, 0x00ae67, EGCB_LVT }, + {0x00ae68, 0x00ae68, EGCB_LV }, + {0x00ae69, 0x00ae83, EGCB_LVT }, + {0x00ae84, 0x00ae84, EGCB_LV }, + {0x00ae85, 0x00ae9f, EGCB_LVT }, + {0x00aea0, 0x00aea0, EGCB_LV }, + {0x00aea1, 0x00aebb, EGCB_LVT }, + {0x00aebc, 0x00aebc, EGCB_LV }, + {0x00aebd, 0x00aed7, EGCB_LVT }, + {0x00aed8, 0x00aed8, EGCB_LV }, + {0x00aed9, 0x00aef3, EGCB_LVT }, + {0x00aef4, 0x00aef4, EGCB_LV }, + {0x00aef5, 0x00af0f, EGCB_LVT }, + {0x00af10, 0x00af10, EGCB_LV }, + {0x00af11, 0x00af2b, EGCB_LVT }, + {0x00af2c, 0x00af2c, EGCB_LV }, + {0x00af2d, 0x00af47, EGCB_LVT }, + {0x00af48, 0x00af48, EGCB_LV }, + {0x00af49, 0x00af63, EGCB_LVT }, + {0x00af64, 0x00af64, EGCB_LV }, + {0x00af65, 0x00af7f, EGCB_LVT }, + {0x00af80, 0x00af80, EGCB_LV }, + {0x00af81, 0x00af9b, EGCB_LVT }, + {0x00af9c, 0x00af9c, EGCB_LV }, + {0x00af9d, 0x00afb7, EGCB_LVT }, + {0x00afb8, 0x00afb8, EGCB_LV }, + {0x00afb9, 0x00afd3, EGCB_LVT }, + {0x00afd4, 0x00afd4, EGCB_LV }, + {0x00afd5, 0x00afef, EGCB_LVT }, + {0x00aff0, 0x00aff0, EGCB_LV }, + {0x00aff1, 0x00b00b, EGCB_LVT }, + {0x00b00c, 0x00b00c, EGCB_LV }, + {0x00b00d, 0x00b027, EGCB_LVT }, + {0x00b028, 0x00b028, EGCB_LV }, + {0x00b029, 0x00b043, EGCB_LVT }, + {0x00b044, 0x00b044, EGCB_LV }, + {0x00b045, 0x00b05f, EGCB_LVT }, + {0x00b060, 0x00b060, EGCB_LV }, + {0x00b061, 0x00b07b, EGCB_LVT }, + {0x00b07c, 0x00b07c, EGCB_LV }, + {0x00b07d, 0x00b097, EGCB_LVT }, + {0x00b098, 0x00b098, EGCB_LV }, + {0x00b099, 0x00b0b3, EGCB_LVT }, + {0x00b0b4, 0x00b0b4, EGCB_LV }, + {0x00b0b5, 0x00b0cf, EGCB_LVT }, + {0x00b0d0, 0x00b0d0, EGCB_LV }, + {0x00b0d1, 0x00b0eb, EGCB_LVT }, + {0x00b0ec, 0x00b0ec, EGCB_LV }, + {0x00b0ed, 0x00b107, EGCB_LVT }, + {0x00b108, 0x00b108, EGCB_LV }, + {0x00b109, 0x00b123, EGCB_LVT }, + {0x00b124, 0x00b124, EGCB_LV }, + {0x00b125, 0x00b13f, EGCB_LVT }, + {0x00b140, 0x00b140, EGCB_LV }, + {0x00b141, 0x00b15b, EGCB_LVT }, + {0x00b15c, 0x00b15c, EGCB_LV }, + {0x00b15d, 0x00b177, EGCB_LVT }, + {0x00b178, 0x00b178, EGCB_LV }, + {0x00b179, 0x00b193, EGCB_LVT }, + {0x00b194, 0x00b194, EGCB_LV }, + {0x00b195, 0x00b1af, EGCB_LVT }, + {0x00b1b0, 0x00b1b0, EGCB_LV }, + {0x00b1b1, 0x00b1cb, EGCB_LVT }, + {0x00b1cc, 0x00b1cc, EGCB_LV }, + {0x00b1cd, 0x00b1e7, EGCB_LVT }, + {0x00b1e8, 0x00b1e8, EGCB_LV }, + {0x00b1e9, 0x00b203, EGCB_LVT }, + {0x00b204, 0x00b204, EGCB_LV }, + {0x00b205, 0x00b21f, EGCB_LVT }, + {0x00b220, 0x00b220, EGCB_LV }, + {0x00b221, 0x00b23b, EGCB_LVT }, + {0x00b23c, 0x00b23c, EGCB_LV }, + {0x00b23d, 0x00b257, EGCB_LVT }, + {0x00b258, 0x00b258, EGCB_LV }, + {0x00b259, 0x00b273, EGCB_LVT }, + {0x00b274, 0x00b274, EGCB_LV }, + {0x00b275, 0x00b28f, EGCB_LVT }, + {0x00b290, 0x00b290, EGCB_LV }, + {0x00b291, 0x00b2ab, EGCB_LVT }, + {0x00b2ac, 0x00b2ac, EGCB_LV }, + {0x00b2ad, 0x00b2c7, EGCB_LVT }, + {0x00b2c8, 0x00b2c8, EGCB_LV }, + {0x00b2c9, 0x00b2e3, EGCB_LVT }, + {0x00b2e4, 0x00b2e4, EGCB_LV }, + {0x00b2e5, 0x00b2ff, EGCB_LVT }, + {0x00b300, 0x00b300, EGCB_LV }, + {0x00b301, 0x00b31b, EGCB_LVT }, + {0x00b31c, 0x00b31c, EGCB_LV }, + {0x00b31d, 0x00b337, EGCB_LVT }, + {0x00b338, 0x00b338, EGCB_LV }, + {0x00b339, 0x00b353, EGCB_LVT }, + {0x00b354, 0x00b354, EGCB_LV }, + {0x00b355, 0x00b36f, EGCB_LVT }, + {0x00b370, 0x00b370, EGCB_LV }, + {0x00b371, 0x00b38b, EGCB_LVT }, + {0x00b38c, 0x00b38c, EGCB_LV }, + {0x00b38d, 0x00b3a7, EGCB_LVT }, + {0x00b3a8, 0x00b3a8, EGCB_LV }, + {0x00b3a9, 0x00b3c3, EGCB_LVT }, + {0x00b3c4, 0x00b3c4, EGCB_LV }, + {0x00b3c5, 0x00b3df, EGCB_LVT }, + {0x00b3e0, 0x00b3e0, EGCB_LV }, + {0x00b3e1, 0x00b3fb, EGCB_LVT }, + {0x00b3fc, 0x00b3fc, EGCB_LV }, + {0x00b3fd, 0x00b417, EGCB_LVT }, + {0x00b418, 0x00b418, EGCB_LV }, + {0x00b419, 0x00b433, EGCB_LVT }, + {0x00b434, 0x00b434, EGCB_LV }, + {0x00b435, 0x00b44f, EGCB_LVT }, + {0x00b450, 0x00b450, EGCB_LV }, + {0x00b451, 0x00b46b, EGCB_LVT }, + {0x00b46c, 0x00b46c, EGCB_LV }, + {0x00b46d, 0x00b487, EGCB_LVT }, + {0x00b488, 0x00b488, EGCB_LV }, + {0x00b489, 0x00b4a3, EGCB_LVT }, + {0x00b4a4, 0x00b4a4, EGCB_LV }, + {0x00b4a5, 0x00b4bf, EGCB_LVT }, + {0x00b4c0, 0x00b4c0, EGCB_LV }, + {0x00b4c1, 0x00b4db, EGCB_LVT }, + {0x00b4dc, 0x00b4dc, EGCB_LV }, + {0x00b4dd, 0x00b4f7, EGCB_LVT }, + {0x00b4f8, 0x00b4f8, EGCB_LV }, + {0x00b4f9, 0x00b513, EGCB_LVT }, + {0x00b514, 0x00b514, EGCB_LV }, + {0x00b515, 0x00b52f, EGCB_LVT }, + {0x00b530, 0x00b530, EGCB_LV }, + {0x00b531, 0x00b54b, EGCB_LVT }, + {0x00b54c, 0x00b54c, EGCB_LV }, + {0x00b54d, 0x00b567, EGCB_LVT }, + {0x00b568, 0x00b568, EGCB_LV }, + {0x00b569, 0x00b583, EGCB_LVT }, + {0x00b584, 0x00b584, EGCB_LV }, + {0x00b585, 0x00b59f, EGCB_LVT }, + {0x00b5a0, 0x00b5a0, EGCB_LV }, + {0x00b5a1, 0x00b5bb, EGCB_LVT }, + {0x00b5bc, 0x00b5bc, EGCB_LV }, + {0x00b5bd, 0x00b5d7, EGCB_LVT }, + {0x00b5d8, 0x00b5d8, EGCB_LV }, + {0x00b5d9, 0x00b5f3, EGCB_LVT }, + {0x00b5f4, 0x00b5f4, EGCB_LV }, + {0x00b5f5, 0x00b60f, EGCB_LVT }, + {0x00b610, 0x00b610, EGCB_LV }, + {0x00b611, 0x00b62b, EGCB_LVT }, + {0x00b62c, 0x00b62c, EGCB_LV }, + {0x00b62d, 0x00b647, EGCB_LVT }, + {0x00b648, 0x00b648, EGCB_LV }, + {0x00b649, 0x00b663, EGCB_LVT }, + {0x00b664, 0x00b664, EGCB_LV }, + {0x00b665, 0x00b67f, EGCB_LVT }, + {0x00b680, 0x00b680, EGCB_LV }, + {0x00b681, 0x00b69b, EGCB_LVT }, + {0x00b69c, 0x00b69c, EGCB_LV }, + {0x00b69d, 0x00b6b7, EGCB_LVT }, + {0x00b6b8, 0x00b6b8, EGCB_LV }, + {0x00b6b9, 0x00b6d3, EGCB_LVT }, + {0x00b6d4, 0x00b6d4, EGCB_LV }, + {0x00b6d5, 0x00b6ef, EGCB_LVT }, + {0x00b6f0, 0x00b6f0, EGCB_LV }, + {0x00b6f1, 0x00b70b, EGCB_LVT }, + {0x00b70c, 0x00b70c, EGCB_LV }, + {0x00b70d, 0x00b727, EGCB_LVT }, + {0x00b728, 0x00b728, EGCB_LV }, + {0x00b729, 0x00b743, EGCB_LVT }, + {0x00b744, 0x00b744, EGCB_LV }, + {0x00b745, 0x00b75f, EGCB_LVT }, + {0x00b760, 0x00b760, EGCB_LV }, + {0x00b761, 0x00b77b, EGCB_LVT }, + {0x00b77c, 0x00b77c, EGCB_LV }, + {0x00b77d, 0x00b797, EGCB_LVT }, + {0x00b798, 0x00b798, EGCB_LV }, + {0x00b799, 0x00b7b3, EGCB_LVT }, + {0x00b7b4, 0x00b7b4, EGCB_LV }, + {0x00b7b5, 0x00b7cf, EGCB_LVT }, + {0x00b7d0, 0x00b7d0, EGCB_LV }, + {0x00b7d1, 0x00b7eb, EGCB_LVT }, + {0x00b7ec, 0x00b7ec, EGCB_LV }, + {0x00b7ed, 0x00b807, EGCB_LVT }, + {0x00b808, 0x00b808, EGCB_LV }, + {0x00b809, 0x00b823, EGCB_LVT }, + {0x00b824, 0x00b824, EGCB_LV }, + {0x00b825, 0x00b83f, EGCB_LVT }, + {0x00b840, 0x00b840, EGCB_LV }, + {0x00b841, 0x00b85b, EGCB_LVT }, + {0x00b85c, 0x00b85c, EGCB_LV }, + {0x00b85d, 0x00b877, EGCB_LVT }, + {0x00b878, 0x00b878, EGCB_LV }, + {0x00b879, 0x00b893, EGCB_LVT }, + {0x00b894, 0x00b894, EGCB_LV }, + {0x00b895, 0x00b8af, EGCB_LVT }, + {0x00b8b0, 0x00b8b0, EGCB_LV }, + {0x00b8b1, 0x00b8cb, EGCB_LVT }, + {0x00b8cc, 0x00b8cc, EGCB_LV }, + {0x00b8cd, 0x00b8e7, EGCB_LVT }, + {0x00b8e8, 0x00b8e8, EGCB_LV }, + {0x00b8e9, 0x00b903, EGCB_LVT }, + {0x00b904, 0x00b904, EGCB_LV }, + {0x00b905, 0x00b91f, EGCB_LVT }, + {0x00b920, 0x00b920, EGCB_LV }, + {0x00b921, 0x00b93b, EGCB_LVT }, + {0x00b93c, 0x00b93c, EGCB_LV }, + {0x00b93d, 0x00b957, EGCB_LVT }, + {0x00b958, 0x00b958, EGCB_LV }, + {0x00b959, 0x00b973, EGCB_LVT }, + {0x00b974, 0x00b974, EGCB_LV }, + {0x00b975, 0x00b98f, EGCB_LVT }, + {0x00b990, 0x00b990, EGCB_LV }, + {0x00b991, 0x00b9ab, EGCB_LVT }, + {0x00b9ac, 0x00b9ac, EGCB_LV }, + {0x00b9ad, 0x00b9c7, EGCB_LVT }, + {0x00b9c8, 0x00b9c8, EGCB_LV }, + {0x00b9c9, 0x00b9e3, EGCB_LVT }, + {0x00b9e4, 0x00b9e4, EGCB_LV }, + {0x00b9e5, 0x00b9ff, EGCB_LVT }, + {0x00ba00, 0x00ba00, EGCB_LV }, + {0x00ba01, 0x00ba1b, EGCB_LVT }, + {0x00ba1c, 0x00ba1c, EGCB_LV }, + {0x00ba1d, 0x00ba37, EGCB_LVT }, + {0x00ba38, 0x00ba38, EGCB_LV }, + {0x00ba39, 0x00ba53, EGCB_LVT }, + {0x00ba54, 0x00ba54, EGCB_LV }, + {0x00ba55, 0x00ba6f, EGCB_LVT }, + {0x00ba70, 0x00ba70, EGCB_LV }, + {0x00ba71, 0x00ba8b, EGCB_LVT }, + {0x00ba8c, 0x00ba8c, EGCB_LV }, + {0x00ba8d, 0x00baa7, EGCB_LVT }, + {0x00baa8, 0x00baa8, EGCB_LV }, + {0x00baa9, 0x00bac3, EGCB_LVT }, + {0x00bac4, 0x00bac4, EGCB_LV }, + {0x00bac5, 0x00badf, EGCB_LVT }, + {0x00bae0, 0x00bae0, EGCB_LV }, + {0x00bae1, 0x00bafb, EGCB_LVT }, + {0x00bafc, 0x00bafc, EGCB_LV }, + {0x00bafd, 0x00bb17, EGCB_LVT }, + {0x00bb18, 0x00bb18, EGCB_LV }, + {0x00bb19, 0x00bb33, EGCB_LVT }, + {0x00bb34, 0x00bb34, EGCB_LV }, + {0x00bb35, 0x00bb4f, EGCB_LVT }, + {0x00bb50, 0x00bb50, EGCB_LV }, + {0x00bb51, 0x00bb6b, EGCB_LVT }, + {0x00bb6c, 0x00bb6c, EGCB_LV }, + {0x00bb6d, 0x00bb87, EGCB_LVT }, + {0x00bb88, 0x00bb88, EGCB_LV }, + {0x00bb89, 0x00bba3, EGCB_LVT }, + {0x00bba4, 0x00bba4, EGCB_LV }, + {0x00bba5, 0x00bbbf, EGCB_LVT }, + {0x00bbc0, 0x00bbc0, EGCB_LV }, + {0x00bbc1, 0x00bbdb, EGCB_LVT }, + {0x00bbdc, 0x00bbdc, EGCB_LV }, + {0x00bbdd, 0x00bbf7, EGCB_LVT }, + {0x00bbf8, 0x00bbf8, EGCB_LV }, + {0x00bbf9, 0x00bc13, EGCB_LVT }, + {0x00bc14, 0x00bc14, EGCB_LV }, + {0x00bc15, 0x00bc2f, EGCB_LVT }, + {0x00bc30, 0x00bc30, EGCB_LV }, + {0x00bc31, 0x00bc4b, EGCB_LVT }, + {0x00bc4c, 0x00bc4c, EGCB_LV }, + {0x00bc4d, 0x00bc67, EGCB_LVT }, + {0x00bc68, 0x00bc68, EGCB_LV }, + {0x00bc69, 0x00bc83, EGCB_LVT }, + {0x00bc84, 0x00bc84, EGCB_LV }, + {0x00bc85, 0x00bc9f, EGCB_LVT }, + {0x00bca0, 0x00bca0, EGCB_LV }, + {0x00bca1, 0x00bcbb, EGCB_LVT }, + {0x00bcbc, 0x00bcbc, EGCB_LV }, + {0x00bcbd, 0x00bcd7, EGCB_LVT }, + {0x00bcd8, 0x00bcd8, EGCB_LV }, + {0x00bcd9, 0x00bcf3, EGCB_LVT }, + {0x00bcf4, 0x00bcf4, EGCB_LV }, + {0x00bcf5, 0x00bd0f, EGCB_LVT }, + {0x00bd10, 0x00bd10, EGCB_LV }, + {0x00bd11, 0x00bd2b, EGCB_LVT }, + {0x00bd2c, 0x00bd2c, EGCB_LV }, + {0x00bd2d, 0x00bd47, EGCB_LVT }, + {0x00bd48, 0x00bd48, EGCB_LV }, + {0x00bd49, 0x00bd63, EGCB_LVT }, + {0x00bd64, 0x00bd64, EGCB_LV }, + {0x00bd65, 0x00bd7f, EGCB_LVT }, + {0x00bd80, 0x00bd80, EGCB_LV }, + {0x00bd81, 0x00bd9b, EGCB_LVT }, + {0x00bd9c, 0x00bd9c, EGCB_LV }, + {0x00bd9d, 0x00bdb7, EGCB_LVT }, + {0x00bdb8, 0x00bdb8, EGCB_LV }, + {0x00bdb9, 0x00bdd3, EGCB_LVT }, + {0x00bdd4, 0x00bdd4, EGCB_LV }, + {0x00bdd5, 0x00bdef, EGCB_LVT }, + {0x00bdf0, 0x00bdf0, EGCB_LV }, + {0x00bdf1, 0x00be0b, EGCB_LVT }, + {0x00be0c, 0x00be0c, EGCB_LV }, + {0x00be0d, 0x00be27, EGCB_LVT }, + {0x00be28, 0x00be28, EGCB_LV }, + {0x00be29, 0x00be43, EGCB_LVT }, + {0x00be44, 0x00be44, EGCB_LV }, + {0x00be45, 0x00be5f, EGCB_LVT }, + {0x00be60, 0x00be60, EGCB_LV }, + {0x00be61, 0x00be7b, EGCB_LVT }, + {0x00be7c, 0x00be7c, EGCB_LV }, + {0x00be7d, 0x00be97, EGCB_LVT }, + {0x00be98, 0x00be98, EGCB_LV }, + {0x00be99, 0x00beb3, EGCB_LVT }, + {0x00beb4, 0x00beb4, EGCB_LV }, + {0x00beb5, 0x00becf, EGCB_LVT }, + {0x00bed0, 0x00bed0, EGCB_LV }, + {0x00bed1, 0x00beeb, EGCB_LVT }, + {0x00beec, 0x00beec, EGCB_LV }, + {0x00beed, 0x00bf07, EGCB_LVT }, + {0x00bf08, 0x00bf08, EGCB_LV }, + {0x00bf09, 0x00bf23, EGCB_LVT }, + {0x00bf24, 0x00bf24, EGCB_LV }, + {0x00bf25, 0x00bf3f, EGCB_LVT }, + {0x00bf40, 0x00bf40, EGCB_LV }, + {0x00bf41, 0x00bf5b, EGCB_LVT }, + {0x00bf5c, 0x00bf5c, EGCB_LV }, + {0x00bf5d, 0x00bf77, EGCB_LVT }, + {0x00bf78, 0x00bf78, EGCB_LV }, + {0x00bf79, 0x00bf93, EGCB_LVT }, + {0x00bf94, 0x00bf94, EGCB_LV }, + {0x00bf95, 0x00bfaf, EGCB_LVT }, + {0x00bfb0, 0x00bfb0, EGCB_LV }, + {0x00bfb1, 0x00bfcb, EGCB_LVT }, + {0x00bfcc, 0x00bfcc, EGCB_LV }, + {0x00bfcd, 0x00bfe7, EGCB_LVT }, + {0x00bfe8, 0x00bfe8, EGCB_LV }, + {0x00bfe9, 0x00c003, EGCB_LVT }, + {0x00c004, 0x00c004, EGCB_LV }, + {0x00c005, 0x00c01f, EGCB_LVT }, + {0x00c020, 0x00c020, EGCB_LV }, + {0x00c021, 0x00c03b, EGCB_LVT }, + {0x00c03c, 0x00c03c, EGCB_LV }, + {0x00c03d, 0x00c057, EGCB_LVT }, + {0x00c058, 0x00c058, EGCB_LV }, + {0x00c059, 0x00c073, EGCB_LVT }, + {0x00c074, 0x00c074, EGCB_LV }, + {0x00c075, 0x00c08f, EGCB_LVT }, + {0x00c090, 0x00c090, EGCB_LV }, + {0x00c091, 0x00c0ab, EGCB_LVT }, + {0x00c0ac, 0x00c0ac, EGCB_LV }, + {0x00c0ad, 0x00c0c7, EGCB_LVT }, + {0x00c0c8, 0x00c0c8, EGCB_LV }, + {0x00c0c9, 0x00c0e3, EGCB_LVT }, + {0x00c0e4, 0x00c0e4, EGCB_LV }, + {0x00c0e5, 0x00c0ff, EGCB_LVT }, + {0x00c100, 0x00c100, EGCB_LV }, + {0x00c101, 0x00c11b, EGCB_LVT }, + {0x00c11c, 0x00c11c, EGCB_LV }, + {0x00c11d, 0x00c137, EGCB_LVT }, + {0x00c138, 0x00c138, EGCB_LV }, + {0x00c139, 0x00c153, EGCB_LVT }, + {0x00c154, 0x00c154, EGCB_LV }, + {0x00c155, 0x00c16f, EGCB_LVT }, + {0x00c170, 0x00c170, EGCB_LV }, + {0x00c171, 0x00c18b, EGCB_LVT }, + {0x00c18c, 0x00c18c, EGCB_LV }, + {0x00c18d, 0x00c1a7, EGCB_LVT }, + {0x00c1a8, 0x00c1a8, EGCB_LV }, + {0x00c1a9, 0x00c1c3, EGCB_LVT }, + {0x00c1c4, 0x00c1c4, EGCB_LV }, + {0x00c1c5, 0x00c1df, EGCB_LVT }, + {0x00c1e0, 0x00c1e0, EGCB_LV }, + {0x00c1e1, 0x00c1fb, EGCB_LVT }, + {0x00c1fc, 0x00c1fc, EGCB_LV }, + {0x00c1fd, 0x00c217, EGCB_LVT }, + {0x00c218, 0x00c218, EGCB_LV }, + {0x00c219, 0x00c233, EGCB_LVT }, + {0x00c234, 0x00c234, EGCB_LV }, + {0x00c235, 0x00c24f, EGCB_LVT }, + {0x00c250, 0x00c250, EGCB_LV }, + {0x00c251, 0x00c26b, EGCB_LVT }, + {0x00c26c, 0x00c26c, EGCB_LV }, + {0x00c26d, 0x00c287, EGCB_LVT }, + {0x00c288, 0x00c288, EGCB_LV }, + {0x00c289, 0x00c2a3, EGCB_LVT }, + {0x00c2a4, 0x00c2a4, EGCB_LV }, + {0x00c2a5, 0x00c2bf, EGCB_LVT }, + {0x00c2c0, 0x00c2c0, EGCB_LV }, + {0x00c2c1, 0x00c2db, EGCB_LVT }, + {0x00c2dc, 0x00c2dc, EGCB_LV }, + {0x00c2dd, 0x00c2f7, EGCB_LVT }, + {0x00c2f8, 0x00c2f8, EGCB_LV }, + {0x00c2f9, 0x00c313, EGCB_LVT }, + {0x00c314, 0x00c314, EGCB_LV }, + {0x00c315, 0x00c32f, EGCB_LVT }, + {0x00c330, 0x00c330, EGCB_LV }, + {0x00c331, 0x00c34b, EGCB_LVT }, + {0x00c34c, 0x00c34c, EGCB_LV }, + {0x00c34d, 0x00c367, EGCB_LVT }, + {0x00c368, 0x00c368, EGCB_LV }, + {0x00c369, 0x00c383, EGCB_LVT }, + {0x00c384, 0x00c384, EGCB_LV }, + {0x00c385, 0x00c39f, EGCB_LVT }, + {0x00c3a0, 0x00c3a0, EGCB_LV }, + {0x00c3a1, 0x00c3bb, EGCB_LVT }, + {0x00c3bc, 0x00c3bc, EGCB_LV }, + {0x00c3bd, 0x00c3d7, EGCB_LVT }, + {0x00c3d8, 0x00c3d8, EGCB_LV }, + {0x00c3d9, 0x00c3f3, EGCB_LVT }, + {0x00c3f4, 0x00c3f4, EGCB_LV }, + {0x00c3f5, 0x00c40f, EGCB_LVT }, + {0x00c410, 0x00c410, EGCB_LV }, + {0x00c411, 0x00c42b, EGCB_LVT }, + {0x00c42c, 0x00c42c, EGCB_LV }, + {0x00c42d, 0x00c447, EGCB_LVT }, + {0x00c448, 0x00c448, EGCB_LV }, + {0x00c449, 0x00c463, EGCB_LVT }, + {0x00c464, 0x00c464, EGCB_LV }, + {0x00c465, 0x00c47f, EGCB_LVT }, + {0x00c480, 0x00c480, EGCB_LV }, + {0x00c481, 0x00c49b, EGCB_LVT }, + {0x00c49c, 0x00c49c, EGCB_LV }, + {0x00c49d, 0x00c4b7, EGCB_LVT }, + {0x00c4b8, 0x00c4b8, EGCB_LV }, + {0x00c4b9, 0x00c4d3, EGCB_LVT }, + {0x00c4d4, 0x00c4d4, EGCB_LV }, + {0x00c4d5, 0x00c4ef, EGCB_LVT }, + {0x00c4f0, 0x00c4f0, EGCB_LV }, + {0x00c4f1, 0x00c50b, EGCB_LVT }, + {0x00c50c, 0x00c50c, EGCB_LV }, + {0x00c50d, 0x00c527, EGCB_LVT }, + {0x00c528, 0x00c528, EGCB_LV }, + {0x00c529, 0x00c543, EGCB_LVT }, + {0x00c544, 0x00c544, EGCB_LV }, + {0x00c545, 0x00c55f, EGCB_LVT }, + {0x00c560, 0x00c560, EGCB_LV }, + {0x00c561, 0x00c57b, EGCB_LVT }, + {0x00c57c, 0x00c57c, EGCB_LV }, + {0x00c57d, 0x00c597, EGCB_LVT }, + {0x00c598, 0x00c598, EGCB_LV }, + {0x00c599, 0x00c5b3, EGCB_LVT }, + {0x00c5b4, 0x00c5b4, EGCB_LV }, + {0x00c5b5, 0x00c5cf, EGCB_LVT }, + {0x00c5d0, 0x00c5d0, EGCB_LV }, + {0x00c5d1, 0x00c5eb, EGCB_LVT }, + {0x00c5ec, 0x00c5ec, EGCB_LV }, + {0x00c5ed, 0x00c607, EGCB_LVT }, + {0x00c608, 0x00c608, EGCB_LV }, + {0x00c609, 0x00c623, EGCB_LVT }, + {0x00c624, 0x00c624, EGCB_LV }, + {0x00c625, 0x00c63f, EGCB_LVT }, + {0x00c640, 0x00c640, EGCB_LV }, + {0x00c641, 0x00c65b, EGCB_LVT }, + {0x00c65c, 0x00c65c, EGCB_LV }, + {0x00c65d, 0x00c677, EGCB_LVT }, + {0x00c678, 0x00c678, EGCB_LV }, + {0x00c679, 0x00c693, EGCB_LVT }, + {0x00c694, 0x00c694, EGCB_LV }, + {0x00c695, 0x00c6af, EGCB_LVT }, + {0x00c6b0, 0x00c6b0, EGCB_LV }, + {0x00c6b1, 0x00c6cb, EGCB_LVT }, + {0x00c6cc, 0x00c6cc, EGCB_LV }, + {0x00c6cd, 0x00c6e7, EGCB_LVT }, + {0x00c6e8, 0x00c6e8, EGCB_LV }, + {0x00c6e9, 0x00c703, EGCB_LVT }, + {0x00c704, 0x00c704, EGCB_LV }, + {0x00c705, 0x00c71f, EGCB_LVT }, + {0x00c720, 0x00c720, EGCB_LV }, + {0x00c721, 0x00c73b, EGCB_LVT }, + {0x00c73c, 0x00c73c, EGCB_LV }, + {0x00c73d, 0x00c757, EGCB_LVT }, + {0x00c758, 0x00c758, EGCB_LV }, + {0x00c759, 0x00c773, EGCB_LVT }, + {0x00c774, 0x00c774, EGCB_LV }, + {0x00c775, 0x00c78f, EGCB_LVT }, + {0x00c790, 0x00c790, EGCB_LV }, + {0x00c791, 0x00c7ab, EGCB_LVT }, + {0x00c7ac, 0x00c7ac, EGCB_LV }, + {0x00c7ad, 0x00c7c7, EGCB_LVT }, + {0x00c7c8, 0x00c7c8, EGCB_LV }, + {0x00c7c9, 0x00c7e3, EGCB_LVT }, + {0x00c7e4, 0x00c7e4, EGCB_LV }, + {0x00c7e5, 0x00c7ff, EGCB_LVT }, + {0x00c800, 0x00c800, EGCB_LV }, + {0x00c801, 0x00c81b, EGCB_LVT }, + {0x00c81c, 0x00c81c, EGCB_LV }, + {0x00c81d, 0x00c837, EGCB_LVT }, + {0x00c838, 0x00c838, EGCB_LV }, + {0x00c839, 0x00c853, EGCB_LVT }, + {0x00c854, 0x00c854, EGCB_LV }, + {0x00c855, 0x00c86f, EGCB_LVT }, + {0x00c870, 0x00c870, EGCB_LV }, + {0x00c871, 0x00c88b, EGCB_LVT }, + {0x00c88c, 0x00c88c, EGCB_LV }, + {0x00c88d, 0x00c8a7, EGCB_LVT }, + {0x00c8a8, 0x00c8a8, EGCB_LV }, + {0x00c8a9, 0x00c8c3, EGCB_LVT }, + {0x00c8c4, 0x00c8c4, EGCB_LV }, + {0x00c8c5, 0x00c8df, EGCB_LVT }, + {0x00c8e0, 0x00c8e0, EGCB_LV }, + {0x00c8e1, 0x00c8fb, EGCB_LVT }, + {0x00c8fc, 0x00c8fc, EGCB_LV }, + {0x00c8fd, 0x00c917, EGCB_LVT }, + {0x00c918, 0x00c918, EGCB_LV }, + {0x00c919, 0x00c933, EGCB_LVT }, + {0x00c934, 0x00c934, EGCB_LV }, + {0x00c935, 0x00c94f, EGCB_LVT }, + {0x00c950, 0x00c950, EGCB_LV }, + {0x00c951, 0x00c96b, EGCB_LVT }, + {0x00c96c, 0x00c96c, EGCB_LV }, + {0x00c96d, 0x00c987, EGCB_LVT }, + {0x00c988, 0x00c988, EGCB_LV }, + {0x00c989, 0x00c9a3, EGCB_LVT }, + {0x00c9a4, 0x00c9a4, EGCB_LV }, + {0x00c9a5, 0x00c9bf, EGCB_LVT }, + {0x00c9c0, 0x00c9c0, EGCB_LV }, + {0x00c9c1, 0x00c9db, EGCB_LVT }, + {0x00c9dc, 0x00c9dc, EGCB_LV }, + {0x00c9dd, 0x00c9f7, EGCB_LVT }, + {0x00c9f8, 0x00c9f8, EGCB_LV }, + {0x00c9f9, 0x00ca13, EGCB_LVT }, + {0x00ca14, 0x00ca14, EGCB_LV }, + {0x00ca15, 0x00ca2f, EGCB_LVT }, + {0x00ca30, 0x00ca30, EGCB_LV }, + {0x00ca31, 0x00ca4b, EGCB_LVT }, + {0x00ca4c, 0x00ca4c, EGCB_LV }, + {0x00ca4d, 0x00ca67, EGCB_LVT }, + {0x00ca68, 0x00ca68, EGCB_LV }, + {0x00ca69, 0x00ca83, EGCB_LVT }, + {0x00ca84, 0x00ca84, EGCB_LV }, + {0x00ca85, 0x00ca9f, EGCB_LVT }, + {0x00caa0, 0x00caa0, EGCB_LV }, + {0x00caa1, 0x00cabb, EGCB_LVT }, + {0x00cabc, 0x00cabc, EGCB_LV }, + {0x00cabd, 0x00cad7, EGCB_LVT }, + {0x00cad8, 0x00cad8, EGCB_LV }, + {0x00cad9, 0x00caf3, EGCB_LVT }, + {0x00caf4, 0x00caf4, EGCB_LV }, + {0x00caf5, 0x00cb0f, EGCB_LVT }, + {0x00cb10, 0x00cb10, EGCB_LV }, + {0x00cb11, 0x00cb2b, EGCB_LVT }, + {0x00cb2c, 0x00cb2c, EGCB_LV }, + {0x00cb2d, 0x00cb47, EGCB_LVT }, + {0x00cb48, 0x00cb48, EGCB_LV }, + {0x00cb49, 0x00cb63, EGCB_LVT }, + {0x00cb64, 0x00cb64, EGCB_LV }, + {0x00cb65, 0x00cb7f, EGCB_LVT }, + {0x00cb80, 0x00cb80, EGCB_LV }, + {0x00cb81, 0x00cb9b, EGCB_LVT }, + {0x00cb9c, 0x00cb9c, EGCB_LV }, + {0x00cb9d, 0x00cbb7, EGCB_LVT }, + {0x00cbb8, 0x00cbb8, EGCB_LV }, + {0x00cbb9, 0x00cbd3, EGCB_LVT }, + {0x00cbd4, 0x00cbd4, EGCB_LV }, + {0x00cbd5, 0x00cbef, EGCB_LVT }, + {0x00cbf0, 0x00cbf0, EGCB_LV }, + {0x00cbf1, 0x00cc0b, EGCB_LVT }, + {0x00cc0c, 0x00cc0c, EGCB_LV }, + {0x00cc0d, 0x00cc27, EGCB_LVT }, + {0x00cc28, 0x00cc28, EGCB_LV }, + {0x00cc29, 0x00cc43, EGCB_LVT }, + {0x00cc44, 0x00cc44, EGCB_LV }, + {0x00cc45, 0x00cc5f, EGCB_LVT }, + {0x00cc60, 0x00cc60, EGCB_LV }, + {0x00cc61, 0x00cc7b, EGCB_LVT }, + {0x00cc7c, 0x00cc7c, EGCB_LV }, + {0x00cc7d, 0x00cc97, EGCB_LVT }, + {0x00cc98, 0x00cc98, EGCB_LV }, + {0x00cc99, 0x00ccb3, EGCB_LVT }, + {0x00ccb4, 0x00ccb4, EGCB_LV }, + {0x00ccb5, 0x00cccf, EGCB_LVT }, + {0x00ccd0, 0x00ccd0, EGCB_LV }, + {0x00ccd1, 0x00cceb, EGCB_LVT }, + {0x00ccec, 0x00ccec, EGCB_LV }, + {0x00cced, 0x00cd07, EGCB_LVT }, + {0x00cd08, 0x00cd08, EGCB_LV }, + {0x00cd09, 0x00cd23, EGCB_LVT }, + {0x00cd24, 0x00cd24, EGCB_LV }, + {0x00cd25, 0x00cd3f, EGCB_LVT }, + {0x00cd40, 0x00cd40, EGCB_LV }, + {0x00cd41, 0x00cd5b, EGCB_LVT }, + {0x00cd5c, 0x00cd5c, EGCB_LV }, + {0x00cd5d, 0x00cd77, EGCB_LVT }, + {0x00cd78, 0x00cd78, EGCB_LV }, + {0x00cd79, 0x00cd93, EGCB_LVT }, + {0x00cd94, 0x00cd94, EGCB_LV }, + {0x00cd95, 0x00cdaf, EGCB_LVT }, + {0x00cdb0, 0x00cdb0, EGCB_LV }, + {0x00cdb1, 0x00cdcb, EGCB_LVT }, + {0x00cdcc, 0x00cdcc, EGCB_LV }, + {0x00cdcd, 0x00cde7, EGCB_LVT }, + {0x00cde8, 0x00cde8, EGCB_LV }, + {0x00cde9, 0x00ce03, EGCB_LVT }, + {0x00ce04, 0x00ce04, EGCB_LV }, + {0x00ce05, 0x00ce1f, EGCB_LVT }, + {0x00ce20, 0x00ce20, EGCB_LV }, + {0x00ce21, 0x00ce3b, EGCB_LVT }, + {0x00ce3c, 0x00ce3c, EGCB_LV }, + {0x00ce3d, 0x00ce57, EGCB_LVT }, + {0x00ce58, 0x00ce58, EGCB_LV }, + {0x00ce59, 0x00ce73, EGCB_LVT }, + {0x00ce74, 0x00ce74, EGCB_LV }, + {0x00ce75, 0x00ce8f, EGCB_LVT }, + {0x00ce90, 0x00ce90, EGCB_LV }, + {0x00ce91, 0x00ceab, EGCB_LVT }, + {0x00ceac, 0x00ceac, EGCB_LV }, + {0x00cead, 0x00cec7, EGCB_LVT }, + {0x00cec8, 0x00cec8, EGCB_LV }, + {0x00cec9, 0x00cee3, EGCB_LVT }, + {0x00cee4, 0x00cee4, EGCB_LV }, + {0x00cee5, 0x00ceff, EGCB_LVT }, + {0x00cf00, 0x00cf00, EGCB_LV }, + {0x00cf01, 0x00cf1b, EGCB_LVT }, + {0x00cf1c, 0x00cf1c, EGCB_LV }, + {0x00cf1d, 0x00cf37, EGCB_LVT }, + {0x00cf38, 0x00cf38, EGCB_LV }, + {0x00cf39, 0x00cf53, EGCB_LVT }, + {0x00cf54, 0x00cf54, EGCB_LV }, + {0x00cf55, 0x00cf6f, EGCB_LVT }, + {0x00cf70, 0x00cf70, EGCB_LV }, + {0x00cf71, 0x00cf8b, EGCB_LVT }, + {0x00cf8c, 0x00cf8c, EGCB_LV }, + {0x00cf8d, 0x00cfa7, EGCB_LVT }, + {0x00cfa8, 0x00cfa8, EGCB_LV }, + {0x00cfa9, 0x00cfc3, EGCB_LVT }, + {0x00cfc4, 0x00cfc4, EGCB_LV }, + {0x00cfc5, 0x00cfdf, EGCB_LVT }, + {0x00cfe0, 0x00cfe0, EGCB_LV }, + {0x00cfe1, 0x00cffb, EGCB_LVT }, + {0x00cffc, 0x00cffc, EGCB_LV }, + {0x00cffd, 0x00d017, EGCB_LVT }, + {0x00d018, 0x00d018, EGCB_LV }, + {0x00d019, 0x00d033, EGCB_LVT }, + {0x00d034, 0x00d034, EGCB_LV }, + {0x00d035, 0x00d04f, EGCB_LVT }, + {0x00d050, 0x00d050, EGCB_LV }, + {0x00d051, 0x00d06b, EGCB_LVT }, + {0x00d06c, 0x00d06c, EGCB_LV }, + {0x00d06d, 0x00d087, EGCB_LVT }, + {0x00d088, 0x00d088, EGCB_LV }, + {0x00d089, 0x00d0a3, EGCB_LVT }, + {0x00d0a4, 0x00d0a4, EGCB_LV }, + {0x00d0a5, 0x00d0bf, EGCB_LVT }, + {0x00d0c0, 0x00d0c0, EGCB_LV }, + {0x00d0c1, 0x00d0db, EGCB_LVT }, + {0x00d0dc, 0x00d0dc, EGCB_LV }, + {0x00d0dd, 0x00d0f7, EGCB_LVT }, + {0x00d0f8, 0x00d0f8, EGCB_LV }, + {0x00d0f9, 0x00d113, EGCB_LVT }, + {0x00d114, 0x00d114, EGCB_LV }, + {0x00d115, 0x00d12f, EGCB_LVT }, + {0x00d130, 0x00d130, EGCB_LV }, + {0x00d131, 0x00d14b, EGCB_LVT }, + {0x00d14c, 0x00d14c, EGCB_LV }, + {0x00d14d, 0x00d167, EGCB_LVT }, + {0x00d168, 0x00d168, EGCB_LV }, + {0x00d169, 0x00d183, EGCB_LVT }, + {0x00d184, 0x00d184, EGCB_LV }, + {0x00d185, 0x00d19f, EGCB_LVT }, + {0x00d1a0, 0x00d1a0, EGCB_LV }, + {0x00d1a1, 0x00d1bb, EGCB_LVT }, + {0x00d1bc, 0x00d1bc, EGCB_LV }, + {0x00d1bd, 0x00d1d7, EGCB_LVT }, + {0x00d1d8, 0x00d1d8, EGCB_LV }, + {0x00d1d9, 0x00d1f3, EGCB_LVT }, + {0x00d1f4, 0x00d1f4, EGCB_LV }, + {0x00d1f5, 0x00d20f, EGCB_LVT }, + {0x00d210, 0x00d210, EGCB_LV }, + {0x00d211, 0x00d22b, EGCB_LVT }, + {0x00d22c, 0x00d22c, EGCB_LV }, + {0x00d22d, 0x00d247, EGCB_LVT }, + {0x00d248, 0x00d248, EGCB_LV }, + {0x00d249, 0x00d263, EGCB_LVT }, + {0x00d264, 0x00d264, EGCB_LV }, + {0x00d265, 0x00d27f, EGCB_LVT }, + {0x00d280, 0x00d280, EGCB_LV }, + {0x00d281, 0x00d29b, EGCB_LVT }, + {0x00d29c, 0x00d29c, EGCB_LV }, + {0x00d29d, 0x00d2b7, EGCB_LVT }, + {0x00d2b8, 0x00d2b8, EGCB_LV }, + {0x00d2b9, 0x00d2d3, EGCB_LVT }, + {0x00d2d4, 0x00d2d4, EGCB_LV }, + {0x00d2d5, 0x00d2ef, EGCB_LVT }, + {0x00d2f0, 0x00d2f0, EGCB_LV }, + {0x00d2f1, 0x00d30b, EGCB_LVT }, + {0x00d30c, 0x00d30c, EGCB_LV }, + {0x00d30d, 0x00d327, EGCB_LVT }, + {0x00d328, 0x00d328, EGCB_LV }, + {0x00d329, 0x00d343, EGCB_LVT }, + {0x00d344, 0x00d344, EGCB_LV }, + {0x00d345, 0x00d35f, EGCB_LVT }, + {0x00d360, 0x00d360, EGCB_LV }, + {0x00d361, 0x00d37b, EGCB_LVT }, + {0x00d37c, 0x00d37c, EGCB_LV }, + {0x00d37d, 0x00d397, EGCB_LVT }, + {0x00d398, 0x00d398, EGCB_LV }, + {0x00d399, 0x00d3b3, EGCB_LVT }, + {0x00d3b4, 0x00d3b4, EGCB_LV }, + {0x00d3b5, 0x00d3cf, EGCB_LVT }, + {0x00d3d0, 0x00d3d0, EGCB_LV }, + {0x00d3d1, 0x00d3eb, EGCB_LVT }, + {0x00d3ec, 0x00d3ec, EGCB_LV }, + {0x00d3ed, 0x00d407, EGCB_LVT }, + {0x00d408, 0x00d408, EGCB_LV }, + {0x00d409, 0x00d423, EGCB_LVT }, + {0x00d424, 0x00d424, EGCB_LV }, + {0x00d425, 0x00d43f, EGCB_LVT }, + {0x00d440, 0x00d440, EGCB_LV }, + {0x00d441, 0x00d45b, EGCB_LVT }, + {0x00d45c, 0x00d45c, EGCB_LV }, + {0x00d45d, 0x00d477, EGCB_LVT }, + {0x00d478, 0x00d478, EGCB_LV }, + {0x00d479, 0x00d493, EGCB_LVT }, + {0x00d494, 0x00d494, EGCB_LV }, + {0x00d495, 0x00d4af, EGCB_LVT }, + {0x00d4b0, 0x00d4b0, EGCB_LV }, + {0x00d4b1, 0x00d4cb, EGCB_LVT }, + {0x00d4cc, 0x00d4cc, EGCB_LV }, + {0x00d4cd, 0x00d4e7, EGCB_LVT }, + {0x00d4e8, 0x00d4e8, EGCB_LV }, + {0x00d4e9, 0x00d503, EGCB_LVT }, + {0x00d504, 0x00d504, EGCB_LV }, + {0x00d505, 0x00d51f, EGCB_LVT }, + {0x00d520, 0x00d520, EGCB_LV }, + {0x00d521, 0x00d53b, EGCB_LVT }, + {0x00d53c, 0x00d53c, EGCB_LV }, + {0x00d53d, 0x00d557, EGCB_LVT }, + {0x00d558, 0x00d558, EGCB_LV }, + {0x00d559, 0x00d573, EGCB_LVT }, + {0x00d574, 0x00d574, EGCB_LV }, + {0x00d575, 0x00d58f, EGCB_LVT }, + {0x00d590, 0x00d590, EGCB_LV }, + {0x00d591, 0x00d5ab, EGCB_LVT }, + {0x00d5ac, 0x00d5ac, EGCB_LV }, + {0x00d5ad, 0x00d5c7, EGCB_LVT }, + {0x00d5c8, 0x00d5c8, EGCB_LV }, + {0x00d5c9, 0x00d5e3, EGCB_LVT }, + {0x00d5e4, 0x00d5e4, EGCB_LV }, + {0x00d5e5, 0x00d5ff, EGCB_LVT }, + {0x00d600, 0x00d600, EGCB_LV }, + {0x00d601, 0x00d61b, EGCB_LVT }, + {0x00d61c, 0x00d61c, EGCB_LV }, + {0x00d61d, 0x00d637, EGCB_LVT }, + {0x00d638, 0x00d638, EGCB_LV }, + {0x00d639, 0x00d653, EGCB_LVT }, + {0x00d654, 0x00d654, EGCB_LV }, + {0x00d655, 0x00d66f, EGCB_LVT }, + {0x00d670, 0x00d670, EGCB_LV }, + {0x00d671, 0x00d68b, EGCB_LVT }, + {0x00d68c, 0x00d68c, EGCB_LV }, + {0x00d68d, 0x00d6a7, EGCB_LVT }, + {0x00d6a8, 0x00d6a8, EGCB_LV }, + {0x00d6a9, 0x00d6c3, EGCB_LVT }, + {0x00d6c4, 0x00d6c4, EGCB_LV }, + {0x00d6c5, 0x00d6df, EGCB_LVT }, + {0x00d6e0, 0x00d6e0, EGCB_LV }, + {0x00d6e1, 0x00d6fb, EGCB_LVT }, + {0x00d6fc, 0x00d6fc, EGCB_LV }, + {0x00d6fd, 0x00d717, EGCB_LVT }, + {0x00d718, 0x00d718, EGCB_LV }, + {0x00d719, 0x00d733, EGCB_LVT }, + {0x00d734, 0x00d734, EGCB_LV }, + {0x00d735, 0x00d74f, EGCB_LVT }, + {0x00d750, 0x00d750, EGCB_LV }, + {0x00d751, 0x00d76b, EGCB_LVT }, + {0x00d76c, 0x00d76c, EGCB_LV }, + {0x00d76d, 0x00d787, EGCB_LVT }, + {0x00d788, 0x00d788, EGCB_LV }, + {0x00d789, 0x00d7a3, EGCB_LVT }, + {0x00d7b0, 0x00d7c6, EGCB_V }, + {0x00d7cb, 0x00d7fb, EGCB_T }, + {0x00fb1e, 0x00fb1e, EGCB_Extend }, + {0x00fe00, 0x00fe0f, EGCB_Extend }, + {0x00fe20, 0x00fe2f, EGCB_Extend }, + {0x00feff, 0x00feff, EGCB_Control }, + {0x00ff9e, 0x00ff9f, EGCB_Extend }, + {0x00fff0, 0x00fffb, EGCB_Control }, + {0x0101fd, 0x0101fd, EGCB_Extend }, + {0x0102e0, 0x0102e0, EGCB_Extend }, + {0x010376, 0x01037a, EGCB_Extend }, + {0x010a01, 0x010a03, EGCB_Extend }, + {0x010a05, 0x010a06, EGCB_Extend }, + {0x010a0c, 0x010a0f, EGCB_Extend }, + {0x010a38, 0x010a3a, EGCB_Extend }, + {0x010a3f, 0x010a3f, EGCB_Extend }, + {0x010ae5, 0x010ae6, EGCB_Extend }, + {0x010d24, 0x010d27, EGCB_Extend }, + {0x010d69, 0x010d6d, EGCB_Extend }, + {0x010eab, 0x010eac, EGCB_Extend }, + {0x010efc, 0x010eff, EGCB_Extend }, + {0x010f46, 0x010f50, EGCB_Extend }, + {0x010f82, 0x010f85, EGCB_Extend }, + {0x011000, 0x011000, EGCB_SpacingMark }, + {0x011001, 0x011001, EGCB_Extend }, + {0x011002, 0x011002, EGCB_SpacingMark }, + {0x011038, 0x011046, EGCB_Extend }, + {0x011070, 0x011070, EGCB_Extend }, + {0x011073, 0x011074, EGCB_Extend }, + {0x01107f, 0x011081, EGCB_Extend }, + {0x011082, 0x011082, EGCB_SpacingMark }, + {0x0110b0, 0x0110b2, EGCB_SpacingMark }, + {0x0110b3, 0x0110b6, EGCB_Extend }, + {0x0110b7, 0x0110b8, EGCB_SpacingMark }, + {0x0110b9, 0x0110ba, EGCB_Extend }, + {0x0110bd, 0x0110bd, EGCB_Prepend }, + {0x0110c2, 0x0110c2, EGCB_Extend }, + {0x0110cd, 0x0110cd, EGCB_Prepend }, + {0x011100, 0x011102, EGCB_Extend }, + {0x011127, 0x01112b, EGCB_Extend }, + {0x01112c, 0x01112c, EGCB_SpacingMark }, + {0x01112d, 0x011134, EGCB_Extend }, + {0x011145, 0x011146, EGCB_SpacingMark }, + {0x011173, 0x011173, EGCB_Extend }, + {0x011180, 0x011181, EGCB_Extend }, + {0x011182, 0x011182, EGCB_SpacingMark }, + {0x0111b3, 0x0111b5, EGCB_SpacingMark }, + {0x0111b6, 0x0111be, EGCB_Extend }, + {0x0111bf, 0x0111bf, EGCB_SpacingMark }, + {0x0111c0, 0x0111c0, EGCB_Extend }, + {0x0111c2, 0x0111c3, EGCB_Prepend }, + {0x0111c9, 0x0111cc, EGCB_Extend }, + {0x0111ce, 0x0111ce, EGCB_SpacingMark }, + {0x0111cf, 0x0111cf, EGCB_Extend }, + {0x01122c, 0x01122e, EGCB_SpacingMark }, + {0x01122f, 0x011231, EGCB_Extend }, + {0x011232, 0x011233, EGCB_SpacingMark }, + {0x011234, 0x011237, EGCB_Extend }, + {0x01123e, 0x01123e, EGCB_Extend }, + {0x011241, 0x011241, EGCB_Extend }, + {0x0112df, 0x0112df, EGCB_Extend }, + {0x0112e0, 0x0112e2, EGCB_SpacingMark }, + {0x0112e3, 0x0112ea, EGCB_Extend }, + {0x011300, 0x011301, EGCB_Extend }, + {0x011302, 0x011303, EGCB_SpacingMark }, + {0x01133b, 0x01133c, EGCB_Extend }, + {0x01133e, 0x01133e, EGCB_Extend }, + {0x01133f, 0x01133f, EGCB_SpacingMark }, + {0x011340, 0x011340, EGCB_Extend }, + {0x011341, 0x011344, EGCB_SpacingMark }, + {0x011347, 0x011348, EGCB_SpacingMark }, + {0x01134b, 0x01134c, EGCB_SpacingMark }, + {0x01134d, 0x01134d, EGCB_Extend }, + {0x011357, 0x011357, EGCB_Extend }, + {0x011362, 0x011363, EGCB_SpacingMark }, + {0x011366, 0x01136c, EGCB_Extend }, + {0x011370, 0x011374, EGCB_Extend }, + {0x0113b8, 0x0113b8, EGCB_Extend }, + {0x0113b9, 0x0113ba, EGCB_SpacingMark }, + {0x0113bb, 0x0113c0, EGCB_Extend }, + {0x0113c2, 0x0113c2, EGCB_Extend }, + {0x0113c5, 0x0113c5, EGCB_Extend }, + {0x0113c7, 0x0113c9, EGCB_Extend }, + {0x0113ca, 0x0113ca, EGCB_SpacingMark }, + {0x0113cc, 0x0113cd, EGCB_SpacingMark }, + {0x0113ce, 0x0113d0, EGCB_Extend }, + {0x0113d1, 0x0113d1, EGCB_Prepend }, + {0x0113d2, 0x0113d2, EGCB_Extend }, + {0x0113e1, 0x0113e2, EGCB_Extend }, + {0x011435, 0x011437, EGCB_SpacingMark }, + {0x011438, 0x01143f, EGCB_Extend }, + {0x011440, 0x011441, EGCB_SpacingMark }, + {0x011442, 0x011444, EGCB_Extend }, + {0x011445, 0x011445, EGCB_SpacingMark }, + {0x011446, 0x011446, EGCB_Extend }, + {0x01145e, 0x01145e, EGCB_Extend }, + {0x0114b0, 0x0114b0, EGCB_Extend }, + {0x0114b1, 0x0114b2, EGCB_SpacingMark }, + {0x0114b3, 0x0114b8, EGCB_Extend }, + {0x0114b9, 0x0114b9, EGCB_SpacingMark }, + {0x0114ba, 0x0114ba, EGCB_Extend }, + {0x0114bb, 0x0114bc, EGCB_SpacingMark }, + {0x0114bd, 0x0114bd, EGCB_Extend }, + {0x0114be, 0x0114be, EGCB_SpacingMark }, + {0x0114bf, 0x0114c0, EGCB_Extend }, + {0x0114c1, 0x0114c1, EGCB_SpacingMark }, + {0x0114c2, 0x0114c3, EGCB_Extend }, + {0x0115af, 0x0115af, EGCB_Extend }, + {0x0115b0, 0x0115b1, EGCB_SpacingMark }, + {0x0115b2, 0x0115b5, EGCB_Extend }, + {0x0115b8, 0x0115bb, EGCB_SpacingMark }, + {0x0115bc, 0x0115bd, EGCB_Extend }, + {0x0115be, 0x0115be, EGCB_SpacingMark }, + {0x0115bf, 0x0115c0, EGCB_Extend }, + {0x0115dc, 0x0115dd, EGCB_Extend }, + {0x011630, 0x011632, EGCB_SpacingMark }, + {0x011633, 0x01163a, EGCB_Extend }, + {0x01163b, 0x01163c, EGCB_SpacingMark }, + {0x01163d, 0x01163d, EGCB_Extend }, + {0x01163e, 0x01163e, EGCB_SpacingMark }, + {0x01163f, 0x011640, EGCB_Extend }, + {0x0116ab, 0x0116ab, EGCB_Extend }, + {0x0116ac, 0x0116ac, EGCB_SpacingMark }, + {0x0116ad, 0x0116ad, EGCB_Extend }, + {0x0116ae, 0x0116af, EGCB_SpacingMark }, + {0x0116b0, 0x0116b7, EGCB_Extend }, + {0x01171d, 0x01171d, EGCB_Extend }, + {0x01171e, 0x01171e, EGCB_SpacingMark }, + {0x01171f, 0x01171f, EGCB_Extend }, + {0x011722, 0x011725, EGCB_Extend }, + {0x011726, 0x011726, EGCB_SpacingMark }, + {0x011727, 0x01172b, EGCB_Extend }, + {0x01182c, 0x01182e, EGCB_SpacingMark }, + {0x01182f, 0x011837, EGCB_Extend }, + {0x011838, 0x011838, EGCB_SpacingMark }, + {0x011839, 0x01183a, EGCB_Extend }, + {0x011930, 0x011930, EGCB_Extend }, + {0x011931, 0x011935, EGCB_SpacingMark }, + {0x011937, 0x011938, EGCB_SpacingMark }, + {0x01193b, 0x01193e, EGCB_Extend }, + {0x01193f, 0x01193f, EGCB_Prepend }, + {0x011940, 0x011940, EGCB_SpacingMark }, + {0x011941, 0x011941, EGCB_Prepend }, + {0x011942, 0x011942, EGCB_SpacingMark }, + {0x011943, 0x011943, EGCB_Extend }, + {0x0119d1, 0x0119d3, EGCB_SpacingMark }, + {0x0119d4, 0x0119d7, EGCB_Extend }, + {0x0119da, 0x0119db, EGCB_Extend }, + {0x0119dc, 0x0119df, EGCB_SpacingMark }, + {0x0119e0, 0x0119e0, EGCB_Extend }, + {0x0119e4, 0x0119e4, EGCB_SpacingMark }, + {0x011a01, 0x011a0a, EGCB_Extend }, + {0x011a33, 0x011a38, EGCB_Extend }, + {0x011a39, 0x011a39, EGCB_SpacingMark }, + {0x011a3a, 0x011a3a, EGCB_Prepend }, + {0x011a3b, 0x011a3e, EGCB_Extend }, + {0x011a47, 0x011a47, EGCB_Extend }, + {0x011a51, 0x011a56, EGCB_Extend }, + {0x011a57, 0x011a58, EGCB_SpacingMark }, + {0x011a59, 0x011a5b, EGCB_Extend }, + {0x011a84, 0x011a89, EGCB_Prepend }, + {0x011a8a, 0x011a96, EGCB_Extend }, + {0x011a97, 0x011a97, EGCB_SpacingMark }, + {0x011a98, 0x011a99, EGCB_Extend }, + {0x011c2f, 0x011c2f, EGCB_SpacingMark }, + {0x011c30, 0x011c36, EGCB_Extend }, + {0x011c38, 0x011c3d, EGCB_Extend }, + {0x011c3e, 0x011c3e, EGCB_SpacingMark }, + {0x011c3f, 0x011c3f, EGCB_Extend }, + {0x011c92, 0x011ca7, EGCB_Extend }, + {0x011ca9, 0x011ca9, EGCB_SpacingMark }, + {0x011caa, 0x011cb0, EGCB_Extend }, + {0x011cb1, 0x011cb1, EGCB_SpacingMark }, + {0x011cb2, 0x011cb3, EGCB_Extend }, + {0x011cb4, 0x011cb4, EGCB_SpacingMark }, + {0x011cb5, 0x011cb6, EGCB_Extend }, + {0x011d31, 0x011d36, EGCB_Extend }, + {0x011d3a, 0x011d3a, EGCB_Extend }, + {0x011d3c, 0x011d3d, EGCB_Extend }, + {0x011d3f, 0x011d45, EGCB_Extend }, + {0x011d46, 0x011d46, EGCB_Prepend }, + {0x011d47, 0x011d47, EGCB_Extend }, + {0x011d8a, 0x011d8e, EGCB_SpacingMark }, + {0x011d90, 0x011d91, EGCB_Extend }, + {0x011d93, 0x011d94, EGCB_SpacingMark }, + {0x011d95, 0x011d95, EGCB_Extend }, + {0x011d96, 0x011d96, EGCB_SpacingMark }, + {0x011d97, 0x011d97, EGCB_Extend }, + {0x011ef3, 0x011ef4, EGCB_Extend }, + {0x011ef5, 0x011ef6, EGCB_SpacingMark }, + {0x011f00, 0x011f01, EGCB_Extend }, + {0x011f02, 0x011f02, EGCB_Prepend }, + {0x011f03, 0x011f03, EGCB_SpacingMark }, + {0x011f34, 0x011f35, EGCB_SpacingMark }, + {0x011f36, 0x011f3a, EGCB_Extend }, + {0x011f3e, 0x011f3f, EGCB_SpacingMark }, + {0x011f40, 0x011f42, EGCB_Extend }, + {0x011f5a, 0x011f5a, EGCB_Extend }, + {0x013430, 0x01343f, EGCB_Control }, + {0x013440, 0x013440, EGCB_Extend }, + {0x013447, 0x013455, EGCB_Extend }, + {0x01611e, 0x016129, EGCB_Extend }, + {0x01612a, 0x01612c, EGCB_SpacingMark }, + {0x01612d, 0x01612f, EGCB_Extend }, + {0x016af0, 0x016af4, EGCB_Extend }, + {0x016b30, 0x016b36, EGCB_Extend }, + {0x016d63, 0x016d63, EGCB_V }, + {0x016d67, 0x016d6a, EGCB_V }, + {0x016f4f, 0x016f4f, EGCB_Extend }, + {0x016f51, 0x016f87, EGCB_SpacingMark }, + {0x016f8f, 0x016f92, EGCB_Extend }, + {0x016fe4, 0x016fe4, EGCB_Extend }, + {0x016ff0, 0x016ff1, EGCB_Extend }, + {0x01bc9d, 0x01bc9e, EGCB_Extend }, + {0x01bca0, 0x01bca3, EGCB_Control }, + {0x01cf00, 0x01cf2d, EGCB_Extend }, + {0x01cf30, 0x01cf46, EGCB_Extend }, + {0x01d165, 0x01d169, EGCB_Extend }, + {0x01d16d, 0x01d172, EGCB_Extend }, + {0x01d173, 0x01d17a, EGCB_Control }, + {0x01d17b, 0x01d182, EGCB_Extend }, + {0x01d185, 0x01d18b, EGCB_Extend }, + {0x01d1aa, 0x01d1ad, EGCB_Extend }, + {0x01d242, 0x01d244, EGCB_Extend }, + {0x01da00, 0x01da36, EGCB_Extend }, + {0x01da3b, 0x01da6c, EGCB_Extend }, + {0x01da75, 0x01da75, EGCB_Extend }, + {0x01da84, 0x01da84, EGCB_Extend }, + {0x01da9b, 0x01da9f, EGCB_Extend }, + {0x01daa1, 0x01daaf, EGCB_Extend }, + {0x01e000, 0x01e006, EGCB_Extend }, + {0x01e008, 0x01e018, EGCB_Extend }, + {0x01e01b, 0x01e021, EGCB_Extend }, + {0x01e023, 0x01e024, EGCB_Extend }, + {0x01e026, 0x01e02a, EGCB_Extend }, + {0x01e08f, 0x01e08f, EGCB_Extend }, + {0x01e130, 0x01e136, EGCB_Extend }, + {0x01e2ae, 0x01e2ae, EGCB_Extend }, + {0x01e2ec, 0x01e2ef, EGCB_Extend }, + {0x01e4ec, 0x01e4ef, EGCB_Extend }, + {0x01e5ee, 0x01e5ef, EGCB_Extend }, + {0x01e8d0, 0x01e8d6, EGCB_Extend }, + {0x01e944, 0x01e94a, EGCB_Extend }, + {0x01f1e6, 0x01f1ff, EGCB_Regional_Indicator }, + {0x01f3fb, 0x01f3ff, EGCB_Extend }, + {0x0e0000, 0x0e001f, EGCB_Control }, + {0x0e0020, 0x0e007f, EGCB_Extend }, + {0x0e0080, 0x0e00ff, EGCB_Control }, + {0x0e0100, 0x0e01ef, EGCB_Extend }, + {0x0e01f0, 0x0e0fff, EGCB_Control } +}; diff --git a/vendor/oniguruma/oniguruma/src/unicode_fold1_key.c b/vendor/oniguruma/oniguruma/src/unicode_fold1_key.c new file mode 100644 index 0000000..51edf13 --- /dev/null +++ b/vendor/oniguruma/oniguruma/src/unicode_fold1_key.c @@ -0,0 +1,3137 @@ +/* This file was converted by gperf_fold_key_conv.py + from gperf output file. */ +/* ANSI-C code produced by gperf version 3.1 */ +/* Command-line: gperf -n -C -T -c -t -j1 -L ANSI-C -F,-1 -N onigenc_unicode_fold1_key unicode_fold1_key.gperf */ +/* Computed positions: -k'1-3' */ + + + +/* This gperf source file was generated by make_unicode_fold_data.py */ + +/*- + * Copyright (c) 2017-2024 K.Kosako + * 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. + */ +#include "regint.h" + +#define TOTAL_KEYWORDS 1423 +#define MIN_WORD_LENGTH 3 +#define MAX_WORD_LENGTH 3 +#define MIN_HASH_VALUE 4 +#define MAX_HASH_VALUE 1846 +/* maximum key range = 1843, duplicates = 0 */ + +#ifdef __GNUC__ +__inline +#else +#ifdef __cplusplus +inline +#endif +#endif +/*ARGSUSED*/ +static unsigned int +hash(OnigCodePoint codes[]) +{ + static const unsigned short asso_values[] = + { + 4, 2, 15, 124, 1, 9, 1398, 671, 1395, 664, + 1384, 84, 91, 75, 1529, 74, 99, 54, 1525, 26, + 1379, 552, 1374, 431, 144, 50, 1517, 24, 250, 557, + 0, 27, 1506, 262, 1505, 197, 131, 1310, 782, 350, + 781, 32, 771, 588, 5, 95, 1079, 463, 770, 455, + 1074, 1496, 824, 1495, 584, 1484, 762, 1465, 751, 1559, + 1372, 1339, 1350, 1365, 1347, 732, 1062, 951, 551, 701, + 543, 1334, 657, 1479, 743, 108, 724, 1549, 530, 7, + 522, 252, 503, 1541, 484, 1540, 425, 1532, 709, 1232, + 466, 1147, 666, 1138, 1041, 845, 1325, 36, 1317, 465, + 65, 1526, 301, 690, 45, 1301, 401, 1450, 381, 1437, + 25, 994, 636, 603, 591, 1281, 176, 997, 339, 1215, + 446, 1009, 571, 1175, 616, 473, 623, 386, 414, 1394, + 921, 1489, 1022, 612, 613, 173, 1002, 74, 308, 327, + 1471, 291, 1434, 202, 908, 1, 147, 1847, 1426, 226, + 1222, 73, 56, 1847, 1423, 48, 1294, 292, 1267, 14, + 275, 315, 205, 410, 990, 4, 17, 6, 974, 382, + 1255, 675, 1225, 26, 360, 1437, 886, 1268, 1189, 37, + 863, 267, 1167, 1190, 963, 1178, 936, 1133, 603, 137, + 933, 393, 897, 71, 853, 1427, 843, 1161, 831, 1111, + 1165, 1128, 1156, 1140, 830, 686, 1155, 1125, 507, 1116, + 1123, 818, 237, 1064, 576, 1046, 562, 1033, 196, 816, + 167, 815, 155, 793, 136, 131, 76, 795, 85, 1112, + 124, 1110, 116, 285, 232, 1026, 188, 1383, 371, 1087, + 350, 1045, 333, 1359, 812, 354, 270, 407, 801, 99, + 565, 555, 1104, 128, 1097, 31, 1419, 130, 1414 + }; + return asso_values[(unsigned char)onig_codes_byte_at(codes, 2)+3] + asso_values[(unsigned char)onig_codes_byte_at(codes, 1)] + asso_values[(unsigned char)onig_codes_byte_at(codes, 0)]; +} + +int +onigenc_unicode_fold1_key(OnigCodePoint codes[]) +{ + static const short int wordlist[] = + { + -1, -1, -1, -1, + + 1915, + + 1876, + + 210, + + 171, + + 3453, + + 1936, + + 3558, + + 231, + + 993, + + 1321, + + 1282, + + 3153, + + 2669, + + 3714, + + 1342, + + 544, + + 505, + + 2105, + + 1141, + + 390, + + 562, + + 3693, + + 2804, + + 3309, + + 3711, + + 2036, + + 1069, + + 324, + + 2249, + + 27, + + 1612, + + 3249, + + 1618, + + 3732, + + 1384, + + 159, + + 2252, + + 1047, + + 3405, + + 402, + + 664, + + 2723, + + 3096, + + 1615, + + 3750, + + 2027, + + 1060, + + 315, + + 4131, + + 12, + + 2732, + + 3240, + + 1636, + + 2270, + + 1366, + + 3681, + + 2099, + + 1120, + + 372, + + 2306, + + 649, + + 2783, + + 3087, + + 1654, + + 2432, + + 2020, + + 1053, + + 309, + + 4113, + + 0, + + 2729, + + 3234, + + 2381, + + 3132, + + 1354, + + 3591, + + 2195, + + 1231, + + 459, + + 3288, + + 640, + + 2894, + + 3081, + + 1465, + + 3597, + + 2198, + + 1234, + + 462, + + 4101, + + 80, + + 2897, + + 1888, + + 2369, + + 183, + + 3456, + + 2993, + + 2915, + + 1696, + + 3660, + + 1894, + + 1294, + + 189, + + 1795, + + 144, + + 2918, + + 3366, + + 517, + + 3546, + + 1300, + + 980, + + 273, + + 1801, + + 2447, + + 2657, + + 523, + + 3609, + + 2204, + + 1240, + + 468, + + 2984, + + 92, + + 2960, + + 2996, + + 3603, + + 2201, + + 1237, + + 465, + + 3672, + + 86, + + 2900, + + 3588, + + 1924, + + 153, + + 219, + + 165, + + 3585, + + 2192, + + 1228, + + 456, + + 3393, + + 1330, + + 2891, + + 1813, + + 2450, + + 1906, + + 2978, + + 201, + + 2090, + + 1111, + + 2954, + + 1807, + + 2246, + + 2774, + + 1312, + + 3579, + + 2189, + + 1225, + + 1792, + + 2291, + + 535, + + 2888, + + 3363, + + 1789, + + 1684, + + 3123, + + 3876, + + 3573, + + 2186, + + 1222, + + 2948, + + 2942, + + 2285, + + 2885, + + 3360, + + 3882, + + 1513, + + 2045, + + 1078, + + 333, + + 2936, + + 46, + + 1783, + + 1459, + -1, + + 1519, + + 1402, + + 2939, + + 3621, + + 2210, + + 1246, + + 474, + + 673, + + 105, + + 1777, + + 2951, + + 798, + + 2183, + + 1219, + + 1582, + + 4149, + + 863, + + 2882, + + 3357, + + 2393, + + 366, + + 3894, + + 1135, + + 2552, + + 3279, + + 866, + + 2798, + + 3303, + + 3702, + + 3888, + + 1825, + + 1531, + + 2558, + + 709, + + 4095, + + 2912, + + 3873, + -1, + + 1771, + + 1525, + + 2288, + + 3870, + + 3011, + + 1594, + + 369, + + 1600, + + 1510, + + 3615, + + 2207, + + 1243, + + 471, + + 1507, + + 99, + + 2174, + + 1210, + + 2975, + + 872, + + 712, + + 2873, + + 3354, + + 3864, + -1, + + 3996, + + 2570, + + 869, + + 3939, + + 1912, + + 3564, + + 207, + + 999, + + 1501, + + 2564, + + 3858, + + 2675, + + 1819, + + 1318, + + 860, + + 784, + + 2549, + + 1753, + + 2441, + + 541, + + 1495, + + 2546, + -1, + + 3651, + + 2225, + + 1261, + + 486, + + 4092, + + 135, + + 2909, + + 1132, + + 3906, + + 4089, + + 857, + + 2795, + + 3300, + + 3696, + + 3411, + + 3612, + + 3852, + + 2540, + + 1543, + + 4215, + + 96, + + 715, + + 854, + + 3008, + + 1660, + + 378, + + 1489, + + 1855, + + 4083, + + 2534, + + 3687, + + 721, + + 2024, + + 1056, + + 312, + -1, + + 6, + + 703, + + 3237, + + 2078, + + 4077, + + 1360, + + 1816, + + 878, + + 2762, + + 3276, + + 4206, + + 643, + + 384, + + 3084, + + 2582, + + 851, + + 3900, + + 3699, + + 694, + + 4107, + + 3111, + + 3834, + + 2528, + + 2375, + + 363, + + 718, + + 1537, + + 3639, + + 2219, + + 1255, + + 483, + + 1471, + + 123, + + 4071, + + 2048, + + 1081, + + 336, + + 697, + + 52, + + 2747, + + 2987, + -1, -1, + + 1408, + + 3633, + + 2216, + + 1252, + + 480, + + 3648, + + 117, + -1, + + 875, + + 3002, + + 132, + + 1843, + + 2117, + + 1153, + + 4155, + + 2576, + -1, + + 2816, + + 2399, + + 3735, + + 2510, + + 1573, + + 3627, + + 2213, + + 1249, + + 477, + + 3897, + + 111, + + 1837, + + 2300, + + 4218, + + 4053, + + 1852, + + 2033, + + 1066, + + 321, + + 1534, + + 4296, + + 1639, + + 3246, + + 348, + + 3720, + + 1378, + + 754, + + 3261, + -1, + + 893, + + 1435, + + 658, + + 1831, + + 3093, + -1, + + 3780, + + 2030, + + 1063, + + 318, + + 4125, + + 18, + + 3654, + + 3243, + + 1624, + + 4182, + + 1372, + + 138, + + 3945, + + 2426, + + 2063, + + 1096, + + 2573, + + 3705, + + 3090, + + 1690, + -1, -1, + + 3924, + + 1438, + + 4119, + + 1999, + + 1014, + + 288, + + 2387, + + 682, + + 2690, + + 3213, + + 1561, + + 1858, + -1, + + 2504, + + 1606, + + 4185, + + 2459, + + 3918, + + 616, + + 2429, + + 3060, + + 3933, + -1, + + 3020, + + 2051, + + 1084, + + 339, + + 1555, + + 59, + -1, + + 2357, + + 1570, + + 3468, + + 1414, + + 3426, + + 887, + + 2282, + + 3972, + + 3912, + + 679, + + 3462, + + 724, + -1, -1, + + 2005, + + 1026, + + 294, + + 4161, + + 1549, + + 2702, + + 3219, + + 2405, + + 884, + + 345, + -1, + + 74, + + 890, + + 3258, + + 637, + + 625, + + 1429, + + 3066, + + 1996, + + 1008, + + 285, + + 3975, + + 4098, + + 2684, + + 3210, + -1, + + 2366, + + 2363, + -1, + + 881, + + 4176, + + 3438, + -1, + + 610, + + 2420, + + 3057, + + 3567, + + 1993, + + 1002, + + 282, + + 1576, + + 2168, + + 2678, + + 3207, + + 733, + + 2354, + + 2867, + + 3351, + + 2453, + + 3420, + -1, + + 791, + + 604, + + 3951, + + 3054, + + 3561, + + 1990, + + 996, + + 279, + -1, + + 2972, + + 2672, + + 3204, + + 3555, + + 1987, + + 990, + + 276, + + 1741, + + 3414, + + 2666, + + 3201, + + 601, + + 736, + + 3051, + -1, + + 1864, + + 3531, + + 1975, + + 965, + + 598, + + 3966, + + 3047, + + 2642, + + 3189, + + 3525, + + 1972, + + 956, + + 3408, + + 3666, + -1, + + 2636, + + 3186, + + 1873, + + 147, + + 3035, + + 3402, + + 2180, + + 1216, + + 3663, + + 2231, + + 1267, + + 2879, + + 3032, + -1, + + 2345, + + 2054, + + 1087, + + 342, + + 3378, + + 65, + + 2177, + + 1213, + + 2339, + + 2276, + + 1420, + + 2876, + + 3372, + + 3483, + + 1951, + + 912, + + 243, + + 3450, + + 1765, + + 2594, + + 3165, + + 2042, + + 1075, + + 330, + + 4167, + + 40, + + 3822, + + 3255, + + 2411, + + 577, + + 1396, + + 2465, + + 1759, + + 2138, + + 1174, + + 411, + + 670, + + 37, + + 2837, + + 3327, + + 3774, + + 2321, + + 1393, + + 2072, + + 4143, + + 357, + + 2057, + + 1090, + + 2756, + + 3270, + + 71, + + 1453, + + 1456, + + 2060, + + 1093, + + 1426, + + 4140, + + 688, + + 691, + + 1681, + + 3105, + + 845, + + 1432, + + 4200, + -1, -1, + + 2039, + + 1072, + + 327, + + 4173, + + 34, + -1, + + 3252, + + 2417, + + 3957, + + 1390, + + 4179, + + 2966, + + 2492, + + 4041, + + 2423, + + 3846, + + 2990, + + 3099, + + 1588, + -1, + + 3537, + + 1978, + + 971, + + 4137, + -1, + + 1483, + + 2648, + + 3192, + + 1585, + + 3840, + + 2008, + + 1032, + + 297, + -1, -1, + + 2708, + + 3222, + -1, + + 3038, + + 1477, + + 2495, + + 396, + -1, + + 896, + -1, + + 628, + + 3726, + + 3069, + + 2351, + + 3990, + + 3993, + + 1198, + + 3384, + + 3963, + -1, + + 2264, + + 3348, + + 2522, + + 9, + + 727, + + 3969, + + 3444, + + 2258, + + 1363, + + 3528, + + 1630, + + 960, + + 264, + + 4065, + + 646, + + 2639, + + 2516, + + 2471, + + 2002, + + 1020, + + 291, + + 1732, + + 4110, + + 2696, + + 3216, + + 589, + + 2378, + + 4059, + -1, -1, -1, -1, + + 3549, + + 1984, + + 983, + + 3063, + + 779, + + 2342, + + 2660, + + 3198, + + 3516, + + 3375, + + 946, + + 258, + + 2486, + + 2360, + + 2627, + + 4230, + + 595, + + 3432, + + 3044, + + 3543, + + 1981, + + 977, + -1, + + 4224, + + 730, + + 2654, + + 3195, + + 3495, + + 1957, + + 925, + + 249, + -1, + + 3396, + + 2606, + + 3171, + + 592, + + 2930, + + 3041, + + 3489, + + 1954, + + 919, + + 246, + -1, + + 2924, + + 2600, + + 3168, + + 3465, + + 1942, + + 1933, + + 237, + + 228, + + 3390, + + 3813, + + 3159, + + 3150, + + 2333, + + 1348, + + 1339, + + 1930, + + 1927, + + 225, + + 222, + + 568, + + 559, + + 3147, + + 3144, + + 2327, + + 1336, + + 1333, + + 3582, + -1, + + 3594, + + 453, + + 556, + + 553, + + 2309, + + 77, + + 3657, + + 2228, + + 1264, + + 490, + -1, + + 141, + -1, -1, + + 2303, + + 2297, + + 836, + + 3645, + + 2222, + + 1258, + + 3576, + + 3570, + + 129, + + 450, + + 447, + + 1786, + + 435, + + 1798, + + 2444, + + 3477, + + 1948, + + 905, + + 4293, + + 1861, + + 4032, + + 2588, + + 2162, + + 2153, + + 424, + + 2477, + + 4287, + + 2861, + + 2852, + + 3342, + + 1849, + + 574, + -1, + + 1780, + + 1774, + + 2150, + + 1750, + + 2438, + + 1041, + -1, + + 2849, + + 3339, + + 2717, + + 2315, + -1, + + 2147, + + 1183, + + 417, + + 1729, + + 1711, + + 2846, + + 3336, + + 634, + -1, -1, + + 2126, + + 1162, + + 3029, + + 3026, + + 4245, + + 2825, + + 1705, + + 3753, + + 4212, + -1, -1, -1, -1, + + 3023, + + 3017, + + 2483, + + 1699, + -1, -1, + + 3867, + -1, + + 3879, + + 2489, + + 2120, + + 1156, + + 399, + + 1657, + + 2435, + + 2819, + + 1504, + + 3741, + + 1516, + -1, -1, + + 2144, + + 1180, + + 414, + + 1579, + + 3930, + + 2843, + + 3333, + + 3861, + + 3855, + -1, + + 3831, + + 2087, + + 1108, + -1, + + 1567, + + 1645, + + 2771, + + 1498, + + 1492, + -1, + + 1468, + -1, + + 3810, + + 3792, + + 2066, + + 1099, + + 1693, + + 2543, + + 3120, + + 2555, + + 3264, + -1, -1, + + 1444, + -1, + + 3786, + + 2141, + + 1177, + + 4086, + + 2135, + + 1171, + + 2840, + + 3330, + + 3777, + + 2834, + + 3324, + + 3768, + + 4191, + -1, + + 2537, + + 2531, + -1, + + 2507, + + 3522, + -1, + + 953, + + 261, + + 832, + + 812, + + 2633, + + 4080, + + 4074, + + 1687, + + 4050, + -1, + + 1675, + + 2132, + + 1168, + -1, + + 586, + + 808, + + 2831, + + 3321, + + 3762, + + 1870, + + 4029, + + 4011, + + 2108, + + 1144, + + 393, + + 801, + + 2336, + + 2807, + + 3312, + + 3717, + -1, -1, + + 4290, + + 4005, + -1, + + 751, + -1, + + 1669, + + 2102, + + 1138, + + 387, + -1, + + 3981, + + 2801, + + 3306, + + 3708, + + 31, + + 2744, + + 1621, + + 49, + + 2075, + + 1387, + + 360, + -1, + + 1405, + + 2759, + + 3273, + + 667, + + 742, + + 1462, + + 676, + + 62, + + 2750, + + 4278, + + 1609, + + 4134, + + 1417, + + 3108, + + 4152, + + 795, + + 2069, + + 1102, + + 2396, + + 3618, + -1, + + 2753, + + 3267, + -1, + + 102, + + 1450, + + 4164, + -1, + + 4257, + + 444, + + 2408, + -1, -1, + + 3102, + -1, + + 2011, + + 1038, + + 300, + + 3636, + + 4251, + + 2714, + + 3225, + + 441, + + 120, + + 2906, + -1, + + 1822, + + 4227, + + 4209, + -1, + + 631, + + 788, + + 3072, + + 1768, + + 771, + + 3519, + + 1969, + + 950, + + 4203, + + 4197, + + 438, + + 2630, + + 3183, + -1, + + 3942, + + 1840, + + 1762, + + 3471, + + 1945, + + 3999, + + 240, + + 583, + + 3459, + + 1939, + + 3162, + + 234, + + 3954, + + 1351, + -1, + + 3156, + + 3630, + + 764, + + 1345, + + 571, + + 1756, + + 114, + + 2903, + -1, + + 565, + + 3987, + + 3675, + + 2237, + + 1273, + + 496, + + 3369, + + 156, + -1, + + 3669, + + 2234, + + 1270, + + 493, + + 4239, + + 150, + + 3606, + -1, + + 3600, + + 1189, + + 1834, + + 89, + + 3903, + + 83, + + 1204, + + 432, + -1, -1, -1, + + 3849, + + 2171, + + 1207, + + 1540, + + 1201, + + 428, + + 2870, + + 1192, + + 420, + -1, + + 1486, + -1, + + 3921, + + 3843, + + 1810, + + 1714, + + 1804, + + 1035, + + 3771, + + 1195, + + 1744, + + 2711, + + 1558, + + 1480, + + 3345, + -1, + + 1029, + + 1747, + -1, + + 1738, + + 2705, + + 3837, + + 1720, + + 2165, + + 2159, + + 2579, + -1, + + 1678, + + 2864, + + 2858, + + 1186, + + 1474, + + 2525, + + 2156, + + 1726, + + 2129, + + 1165, + + 3447, + + 2855, + -1, + + 2828, + + 1867, + + 3756, + + 4068, + + 3915, + + 2519, + + 3441, + + 68, + + 408, + + 1735, + + 1723, + + 2501, + + 1423, + + 3765, + + 1552, + + 1708, + + 4062, + + 2123, + + 1159, + + 1717, + + 405, + + 1663, + + 2822, + + 2513, + + 3747, + + 3759, + + 4170, + + 3891, + + 3795, + + 3885, + + 2414, + + 1591, + + 1672, + + 3825, + + 4056, + -1, -1, + + 1528, + -1, + + 1522, + + 3828, + -1, + + 3819, + + 1651, + + 1666, + + 3801, + -1, + + 56, + -1, + + 899, + + 2096, + + 1117, + + 1411, + + 2114, + + 1150, + + 2780, + + 3285, + + 3807, + + 2813, + + 3318, + + 3729, + + 1023, + + 4284, + + 816, + -1, + + 2699, + + 4158, + + 3129, + + 848, + + 2567, + + 2402, + + 2561, + + 3816, + + 3804, + -1, + + 622, + + 3960, + + 842, + + 3789, + + 1633, + + 822, + + 4014, + + 3798, + + 2111, + + 1147, + + 774, + + 4044, + + 2462, + + 2810, + + 3315, + + 3723, + + 3435, + + 829, + + 4047, + -1, + + 4038, + + 1129, + + 381, + + 4020, + + 2474, + + 2792, + + 3297, + + 3690, + + 3744, + -1, -1, -1, + + 839, + + 826, + + 1627, + + 4026, + -1, + + 3141, + + 43, + -1, -1, + + 3948, + + 819, + + 1399, + + 758, + -1, -1, + + 1648, + + 1126, + + 375, + + 4035, + + 4023, + + 2789, + + 3294, + + 3684, + + 768, + + 4008, + + 4146, + + 15, + + 2735, + + 4017, + + 2390, + -1, + + 1369, + + 3138, + -1, + + 748, + + 761, + -1, + + 652, + + 2017, + + 1050, + + 306, + -1, -1, + + 2726, + + 3231, + + 4116, + + 2014, + + 1044, + + 303, + + 2384, + -1, + + 2720, + + 3228, + -1, + + 3534, + + 3078, + + 968, + + 267, + + 2294, + + 3504, + + 2645, + + 934, + + 252, + + 3075, + -1, + + 2615, + + 4281, + + 3513, + + 1966, + + 943, + + 3507, + + 1963, + + 937, + + 2624, + + 3180, + + 3936, + + 2618, + + 3177, + + 4233, + + 3642, + -1, -1, + + 2348, + + 4221, + + 126, + + 3510, + + 3381, + + 940, + + 255, + -1, -1, + + 2621, + + 3501, + + 1960, + + 931, + + 1903, + -1, + + 198, + + 2612, + + 3174, + + 1900, + + 580, + + 195, + + 3624, + + 1309, + + 1885, + + 1846, + + 180, + + 108, + + 1306, + + 532, + -1, -1, + + 745, + + 1291, + + 529, + + 1882, + + 351, + + 177, + + 1879, + + 514, + + 174, + + 2279, + -1, + + 1441, + + 1288, + + 3014, + + 2273, + + 1285, + -1, + + 1828, + + 511, + + 2267, + -1, + + 508, + + 2243, + + 1279, + + 502, + + 4188, + + 168, + + 2240, + + 1276, + + 499, + + 2261, + + 162, + + 1123, + + 2255, + + 2093, + + 1114, + + 2786, + + 3291, + + 3678, + + 2777, + + 3282, + -1, + + 2084, + + 1105, + -1, + + 2480, + -1, + + 2768, + + 3135, + + 24, + + 2741, + + 3126, + + 3738, + -1, + + 1381, + -1, + + 3927, + + 706, + -1, + + 3117, + + 661, + + 1702, + + 21, + + 2738, + -1, -1, + + 1564, + + 1375, + + 4128, + -1, -1, + + 1642, + + 3492, + + 655, + + 922, + + 3978, + -1, + + 2969, + + 2603, + + 2081, + + 3909, + + 4122, + + 2963, + -1, + + 2765, + + 2468, + + 3540, + + 2933, + + 974, + + 270, + + 1546, + + 3486, + + 2651, + + 915, + + 700, + -1, + + 3114, + + 2597, + + 2927, + + 354, + + 2330, + + 2921, + + 3480, + + 3474, + + 908, + + 902, + + 1447, + -1, + + 2591, + + 2585, + -1, -1, + + 685, + + 1921, + + 1918, + + 216, + + 213, + -1, + + 3387, + + 2324, + -1, + + 1603, + + 1327, + + 1324, + + 3783, + + 1909, + + 1597, + + 204, + + 550, + + 547, + + 2318, + + 2312, + -1, + + 1897, + + 1315, + + 192, + -1, + + 1891, + + 3, + + 186, + + 538, + + 1017, + + 1303, + + 1357, + -1, + + 2693, + + 1297, + -1, + + 526, + + 1011, + + 1005, + + 2456, + + 520, + + 2687, + + 2681, + + 619, + + 3552, + + 4104, + + 986, + + 804, + -1, + + 2372, + + 2663, + + 613, + + 607, + -1, + + 3498, + -1, + + 928, + + 739, + + 3984, + + 3429, + + 2609, + -1, -1, -1, -1, + + 4002, + -1, + + 3423, + + 3417, + -1, -1, -1, -1, -1, -1, + -1, + + 3399, + -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, + + 4194, + -1, -1, -1, -1, -1, -1, + + 3005, + + 2999, + -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, + + 2981, + -1, -1, -1, -1, -1, -1, + -1, + + 2957, + -1, + + 4266, + -1, + + 2945, + -1, -1, -1, -1, -1, + + 4275, + -1, -1, + + 4269, + -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, + -1, -1, + + 4272, + -1, -1, -1, -1, -1, -1, + + 4263, + + 2498, + -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, + -1, + + 4254, + -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, + + 4248, + -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, + + 4242, + + 4236, + -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, + -1, -1, + + 4260 + }; + + + { + int key = hash(codes); + + if (key <= MAX_HASH_VALUE) + { + int index = wordlist[key]; + + if (index >= 0 && onig_codes_cmp(codes, OnigUnicodeFolds1 + index, 1) == 0) + return index; + } + } + return -1; +} diff --git a/vendor/oniguruma/oniguruma/src/unicode_fold2_key.c b/vendor/oniguruma/oniguruma/src/unicode_fold2_key.c new file mode 100644 index 0000000..929b3b5 --- /dev/null +++ b/vendor/oniguruma/oniguruma/src/unicode_fold2_key.c @@ -0,0 +1,226 @@ +/* This file was converted by gperf_fold_key_conv.py + from gperf output file. */ +/* ANSI-C code produced by gperf version 3.1 */ +/* Command-line: gperf -n -C -T -c -t -j1 -L ANSI-C -F,-1 -N onigenc_unicode_fold2_key unicode_fold2_key.gperf */ +/* Computed positions: -k'3,6' */ + + + +/* This gperf source file was generated by make_unicode_fold_data.py */ + +/*- + * Copyright (c) 2017-2024 K.Kosako + * 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. + */ +#include "regint.h" + +#define TOTAL_KEYWORDS 59 +#define MIN_WORD_LENGTH 6 +#define MAX_WORD_LENGTH 6 +#define MIN_HASH_VALUE 0 +#define MAX_HASH_VALUE 58 +/* maximum key range = 59, duplicates = 0 */ + +#ifdef __GNUC__ +__inline +#else +#ifdef __cplusplus +inline +#endif +#endif +/*ARGSUSED*/ +static unsigned int +hash(OnigCodePoint codes[]) +{ + static const unsigned char asso_values[] = + { + 58, 57, 56, 55, 54, 53, 52, 16, 50, 59, + 15, 59, 25, 59, 59, 59, 59, 59, 59, 3, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 49, 48, 47, 46, 45, 44, 43, 42, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 21, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 2, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 40, 20, 39, 38, + 37, 14, 5, 36, 20, 7, 25, 34, 29, 32, + 16, 59, 31, 59, 59, 2, 1, 59, 25, 15, + 59, 14, 59, 59, 28, 59, 2, 59, 59, 59, + 11, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 24, 59, 22, 59, 59, 11, 59, 59, + 59, 59, 59, 7, 59, 0, 59, 59, 16, 59, + 1, 59, 59, 16, 59, 59, 59, 15, 59, 59, + 59, 6, 59, 59, 59, 59, 0, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59 + }; + return asso_values[(unsigned char)onig_codes_byte_at(codes, 5)] + asso_values[(unsigned char)onig_codes_byte_at(codes, 2)]; +} + +int +onigenc_unicode_fold2_key(OnigCodePoint codes[]) +{ + static const short int wordlist[] = + { + + 101, + + 253, + + 76, + + 29, + + 24, + + 239, + + 96, + + 71, + + 92, + + 67, + + 4, + + 62, + + 8, + + 58, + + 234, + + 109, + + 164, + + 88, + + 84, + + 80, + + 214, + + 0, + + 54, + + 261, + + 50, + + 105, + + 121, + + 125, + + 257, + + 42, + + 38, + + 249, + + 46, + + 117, + + 12, + + 113, + + 244, + + 229, + + 224, + + 219, + + 209, + + 16, + + 204, + + 199, + + 194, + + 189, + + 184, + + 179, + + 174, + + 169, + + 20, + + 34, + + 159, + + 154, + + 149, + + 144, + + 139, + + 134, + + 129 + }; + + + { + int key = hash(codes); + + if (key <= MAX_HASH_VALUE) + { + int index = wordlist[key]; + + if (index >= 0 && onig_codes_cmp(codes, OnigUnicodeFolds2 + index, 2) == 0) + return index; + } + } + return -1; +} diff --git a/vendor/oniguruma/oniguruma/src/unicode_fold3_key.c b/vendor/oniguruma/oniguruma/src/unicode_fold3_key.c new file mode 100644 index 0000000..e6d3cf3 --- /dev/null +++ b/vendor/oniguruma/oniguruma/src/unicode_fold3_key.c @@ -0,0 +1,136 @@ +/* This file was converted by gperf_fold_key_conv.py + from gperf output file. */ +/* ANSI-C code produced by gperf version 3.1 */ +/* Command-line: gperf -n -C -T -c -t -j1 -L ANSI-C -F,-1 -N onigenc_unicode_fold3_key unicode_fold3_key.gperf */ +/* Computed positions: -k'3,6,9' */ + + + +/* This gperf source file was generated by make_unicode_fold_data.py */ + +/*- + * Copyright (c) 2017-2024 K.Kosako + * 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. + */ +#include "regint.h" + +#define TOTAL_KEYWORDS 14 +#define MIN_WORD_LENGTH 9 +#define MAX_WORD_LENGTH 9 +#define MIN_HASH_VALUE 0 +#define MAX_HASH_VALUE 13 +/* maximum key range = 14, duplicates = 0 */ + +#ifdef __GNUC__ +__inline +#else +#ifdef __cplusplus +inline +#endif +#endif +/*ARGSUSED*/ +static unsigned int +hash(OnigCodePoint codes[]) +{ + static const unsigned char asso_values[] = + { + 6, 3, 14, 14, 14, 14, 14, 14, 1, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 0, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 0, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 4, 14, 14, 5, 14, 14, 4, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 10, 14, 14, + 14, 14, 14, 9, 14, 1, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 0, 14, 14, + 14, 8, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14 + }; + return asso_values[(unsigned char)onig_codes_byte_at(codes, 8)] + asso_values[(unsigned char)onig_codes_byte_at(codes, 5)] + asso_values[(unsigned char)onig_codes_byte_at(codes, 2)]; +} + +int +onigenc_unicode_fold3_key(OnigCodePoint codes[]) +{ + static const short int wordlist[] = + { + + 62, + + 47, + + 31, + + 57, + + 41, + + 25, + + 52, + + 36, + + 20, + + 67, + + 15, + + 10, + + 5, + + 0 + }; + + + { + int key = hash(codes); + + if (key <= MAX_HASH_VALUE) + { + int index = wordlist[key]; + + if (index >= 0 && onig_codes_cmp(codes, OnigUnicodeFolds3 + index, 3) == 0) + return index; + } + } + return -1; +} diff --git a/vendor/oniguruma/oniguruma/src/unicode_fold_data.c b/vendor/oniguruma/oniguruma/src/unicode_fold_data.c new file mode 100644 index 0000000..2ffa43f --- /dev/null +++ b/vendor/oniguruma/oniguruma/src/unicode_fold_data.c @@ -0,0 +1,1619 @@ +/* This file was generated by make_unicode_fold_data.py. */ +/*- + * Copyright (c) 2017-2024 K.Kosako + * 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. + */ + + +#include "regenc.h" + +#define UNICODE_CASEFOLD_VERSION 160000 + + +OnigCodePoint OnigUnicodeFolds1[] = { + /* 0*/ 0x0061, 1, 0x0041, /* LATIN CAPITAL LETTER A */ + /* 3*/ 0x0062, 1, 0x0042, /* LATIN CAPITAL LETTER B */ + /* 6*/ 0x0063, 1, 0x0043, /* LATIN CAPITAL LETTER C */ + /* 9*/ 0x0064, 1, 0x0044, /* LATIN CAPITAL LETTER D */ + /* 12*/ 0x0065, 1, 0x0045, /* LATIN CAPITAL LETTER E */ + /* 15*/ 0x0066, 1, 0x0046, /* LATIN CAPITAL LETTER F */ + /* 18*/ 0x0067, 1, 0x0047, /* LATIN CAPITAL LETTER G */ + /* 21*/ 0x0068, 1, 0x0048, /* LATIN CAPITAL LETTER H */ + /* 24*/ 0x006a, 1, 0x004a, /* LATIN CAPITAL LETTER J */ + /* 27*/ 0x006b, 2, 0x004b, 0x212a, /* LATIN CAPITAL LETTER K */ + /* 31*/ 0x006c, 1, 0x004c, /* LATIN CAPITAL LETTER L */ + /* 34*/ 0x006d, 1, 0x004d, /* LATIN CAPITAL LETTER M */ + /* 37*/ 0x006e, 1, 0x004e, /* LATIN CAPITAL LETTER N */ + /* 40*/ 0x006f, 1, 0x004f, /* LATIN CAPITAL LETTER O */ + /* 43*/ 0x0070, 1, 0x0050, /* LATIN CAPITAL LETTER P */ + /* 46*/ 0x0071, 1, 0x0051, /* LATIN CAPITAL LETTER Q */ + /* 49*/ 0x0072, 1, 0x0052, /* LATIN CAPITAL LETTER R */ + /* 52*/ 0x0073, 2, 0x0053, 0x017f, /* LATIN CAPITAL LETTER S */ + /* 56*/ 0x0074, 1, 0x0054, /* LATIN CAPITAL LETTER T */ + /* 59*/ 0x0075, 1, 0x0055, /* LATIN CAPITAL LETTER U */ + /* 62*/ 0x0076, 1, 0x0056, /* LATIN CAPITAL LETTER V */ + /* 65*/ 0x0077, 1, 0x0057, /* LATIN CAPITAL LETTER W */ + /* 68*/ 0x0078, 1, 0x0058, /* LATIN CAPITAL LETTER X */ + /* 71*/ 0x0079, 1, 0x0059, /* LATIN CAPITAL LETTER Y */ + /* 74*/ 0x007a, 1, 0x005a, /* LATIN CAPITAL LETTER Z */ + /* 77*/ 0x00e0, 1, 0x00c0, /* LATIN CAPITAL LETTER A WITH GRAVE */ + /* 80*/ 0x00e1, 1, 0x00c1, /* LATIN CAPITAL LETTER A WITH ACUTE */ + /* 83*/ 0x00e2, 1, 0x00c2, /* LATIN CAPITAL LETTER A WITH CIRCU.. */ + /* 86*/ 0x00e3, 1, 0x00c3, /* LATIN CAPITAL LETTER A WITH TILDE */ + /* 89*/ 0x00e4, 1, 0x00c4, /* LATIN CAPITAL LETTER A WITH DIAER.. */ + /* 92*/ 0x00e5, 2, 0x00c5, 0x212b, /* LATIN CAPITAL LETTER A WITH RING .. */ + /* 96*/ 0x00e6, 1, 0x00c6, /* LATIN CAPITAL LETTER AE */ + /* 99*/ 0x00e7, 1, 0x00c7, /* LATIN CAPITAL LETTER C WITH CEDIL.. */ + /* 102*/ 0x00e8, 1, 0x00c8, /* LATIN CAPITAL LETTER E WITH GRAVE */ + /* 105*/ 0x00e9, 1, 0x00c9, /* LATIN CAPITAL LETTER E WITH ACUTE */ + /* 108*/ 0x00ea, 1, 0x00ca, /* LATIN CAPITAL LETTER E WITH CIRCU.. */ + /* 111*/ 0x00eb, 1, 0x00cb, /* LATIN CAPITAL LETTER E WITH DIAER.. */ + /* 114*/ 0x00ec, 1, 0x00cc, /* LATIN CAPITAL LETTER I WITH GRAVE */ + /* 117*/ 0x00ed, 1, 0x00cd, /* LATIN CAPITAL LETTER I WITH ACUTE */ + /* 120*/ 0x00ee, 1, 0x00ce, /* LATIN CAPITAL LETTER I WITH CIRCU.. */ + /* 123*/ 0x00ef, 1, 0x00cf, /* LATIN CAPITAL LETTER I WITH DIAER.. */ + /* 126*/ 0x00f0, 1, 0x00d0, /* LATIN CAPITAL LETTER ETH */ + /* 129*/ 0x00f1, 1, 0x00d1, /* LATIN CAPITAL LETTER N WITH TILDE */ + /* 132*/ 0x00f2, 1, 0x00d2, /* LATIN CAPITAL LETTER O WITH GRAVE */ + /* 135*/ 0x00f3, 1, 0x00d3, /* LATIN CAPITAL LETTER O WITH ACUTE */ + /* 138*/ 0x00f4, 1, 0x00d4, /* LATIN CAPITAL LETTER O WITH CIRCU.. */ + /* 141*/ 0x00f5, 1, 0x00d5, /* LATIN CAPITAL LETTER O WITH TILDE */ + /* 144*/ 0x00f6, 1, 0x00d6, /* LATIN CAPITAL LETTER O WITH DIAER.. */ + /* 147*/ 0x00f8, 1, 0x00d8, /* LATIN CAPITAL LETTER O WITH STROKE */ + /* 150*/ 0x00f9, 1, 0x00d9, /* LATIN CAPITAL LETTER U WITH GRAVE */ + /* 153*/ 0x00fa, 1, 0x00da, /* LATIN CAPITAL LETTER U WITH ACUTE */ + /* 156*/ 0x00fb, 1, 0x00db, /* LATIN CAPITAL LETTER U WITH CIRCU.. */ + /* 159*/ 0x00fc, 1, 0x00dc, /* LATIN CAPITAL LETTER U WITH DIAER.. */ + /* 162*/ 0x00fd, 1, 0x00dd, /* LATIN CAPITAL LETTER Y WITH ACUTE */ + /* 165*/ 0x00fe, 1, 0x00de, /* LATIN CAPITAL LETTER THORN */ + /* 168*/ 0x00ff, 1, 0x0178, /* LATIN CAPITAL LETTER Y WITH DIAER.. */ + /* 171*/ 0x0101, 1, 0x0100, /* LATIN CAPITAL LETTER A WITH MACRON */ + /* 174*/ 0x0103, 1, 0x0102, /* LATIN CAPITAL LETTER A WITH BREVE */ + /* 177*/ 0x0105, 1, 0x0104, /* LATIN CAPITAL LETTER A WITH OGONEK */ + /* 180*/ 0x0107, 1, 0x0106, /* LATIN CAPITAL LETTER C WITH ACUTE */ + /* 183*/ 0x0109, 1, 0x0108, /* LATIN CAPITAL LETTER C WITH CIRCU.. */ + /* 186*/ 0x010b, 1, 0x010a, /* LATIN CAPITAL LETTER C WITH DOT A.. */ + /* 189*/ 0x010d, 1, 0x010c, /* LATIN CAPITAL LETTER C WITH CARON */ + /* 192*/ 0x010f, 1, 0x010e, /* LATIN CAPITAL LETTER D WITH CARON */ + /* 195*/ 0x0111, 1, 0x0110, /* LATIN CAPITAL LETTER D WITH STROKE */ + /* 198*/ 0x0113, 1, 0x0112, /* LATIN CAPITAL LETTER E WITH MACRON */ + /* 201*/ 0x0115, 1, 0x0114, /* LATIN CAPITAL LETTER E WITH BREVE */ + /* 204*/ 0x0117, 1, 0x0116, /* LATIN CAPITAL LETTER E WITH DOT A.. */ + /* 207*/ 0x0119, 1, 0x0118, /* LATIN CAPITAL LETTER E WITH OGONEK */ + /* 210*/ 0x011b, 1, 0x011a, /* LATIN CAPITAL LETTER E WITH CARON */ + /* 213*/ 0x011d, 1, 0x011c, /* LATIN CAPITAL LETTER G WITH CIRCU.. */ + /* 216*/ 0x011f, 1, 0x011e, /* LATIN CAPITAL LETTER G WITH BREVE */ + /* 219*/ 0x0121, 1, 0x0120, /* LATIN CAPITAL LETTER G WITH DOT A.. */ + /* 222*/ 0x0123, 1, 0x0122, /* LATIN CAPITAL LETTER G WITH CEDIL.. */ + /* 225*/ 0x0125, 1, 0x0124, /* LATIN CAPITAL LETTER H WITH CIRCU.. */ + /* 228*/ 0x0127, 1, 0x0126, /* LATIN CAPITAL LETTER H WITH STROKE */ + /* 231*/ 0x0129, 1, 0x0128, /* LATIN CAPITAL LETTER I WITH TILDE */ + /* 234*/ 0x012b, 1, 0x012a, /* LATIN CAPITAL LETTER I WITH MACRON */ + /* 237*/ 0x012d, 1, 0x012c, /* LATIN CAPITAL LETTER I WITH BREVE */ + /* 240*/ 0x012f, 1, 0x012e, /* LATIN CAPITAL LETTER I WITH OGONEK */ + /* 243*/ 0x0133, 1, 0x0132, /* LATIN CAPITAL LIGATURE IJ */ + /* 246*/ 0x0135, 1, 0x0134, /* LATIN CAPITAL LETTER J WITH CIRCU.. */ + /* 249*/ 0x0137, 1, 0x0136, /* LATIN CAPITAL LETTER K WITH CEDIL.. */ + /* 252*/ 0x013a, 1, 0x0139, /* LATIN CAPITAL LETTER L WITH ACUTE */ + /* 255*/ 0x013c, 1, 0x013b, /* LATIN CAPITAL LETTER L WITH CEDIL.. */ + /* 258*/ 0x013e, 1, 0x013d, /* LATIN CAPITAL LETTER L WITH CARON */ + /* 261*/ 0x0140, 1, 0x013f, /* LATIN CAPITAL LETTER L WITH MIDDL.. */ + /* 264*/ 0x0142, 1, 0x0141, /* LATIN CAPITAL LETTER L WITH STROKE */ + /* 267*/ 0x0144, 1, 0x0143, /* LATIN CAPITAL LETTER N WITH ACUTE */ + /* 270*/ 0x0146, 1, 0x0145, /* LATIN CAPITAL LETTER N WITH CEDIL.. */ + /* 273*/ 0x0148, 1, 0x0147, /* LATIN CAPITAL LETTER N WITH CARON */ + /* 276*/ 0x014b, 1, 0x014a, /* LATIN CAPITAL LETTER ENG */ + /* 279*/ 0x014d, 1, 0x014c, /* LATIN CAPITAL LETTER O WITH MACRON */ + /* 282*/ 0x014f, 1, 0x014e, /* LATIN CAPITAL LETTER O WITH BREVE */ + /* 285*/ 0x0151, 1, 0x0150, /* LATIN CAPITAL LETTER O WITH DOUBL.. */ + /* 288*/ 0x0153, 1, 0x0152, /* LATIN CAPITAL LIGATURE OE */ + /* 291*/ 0x0155, 1, 0x0154, /* LATIN CAPITAL LETTER R WITH ACUTE */ + /* 294*/ 0x0157, 1, 0x0156, /* LATIN CAPITAL LETTER R WITH CEDIL.. */ + /* 297*/ 0x0159, 1, 0x0158, /* LATIN CAPITAL LETTER R WITH CARON */ + /* 300*/ 0x015b, 1, 0x015a, /* LATIN CAPITAL LETTER S WITH ACUTE */ + /* 303*/ 0x015d, 1, 0x015c, /* LATIN CAPITAL LETTER S WITH CIRCU.. */ + /* 306*/ 0x015f, 1, 0x015e, /* LATIN CAPITAL LETTER S WITH CEDIL.. */ + /* 309*/ 0x0161, 1, 0x0160, /* LATIN CAPITAL LETTER S WITH CARON */ + /* 312*/ 0x0163, 1, 0x0162, /* LATIN CAPITAL LETTER T WITH CEDIL.. */ + /* 315*/ 0x0165, 1, 0x0164, /* LATIN CAPITAL LETTER T WITH CARON */ + /* 318*/ 0x0167, 1, 0x0166, /* LATIN CAPITAL LETTER T WITH STROKE */ + /* 321*/ 0x0169, 1, 0x0168, /* LATIN CAPITAL LETTER U WITH TILDE */ + /* 324*/ 0x016b, 1, 0x016a, /* LATIN CAPITAL LETTER U WITH MACRON */ + /* 327*/ 0x016d, 1, 0x016c, /* LATIN CAPITAL LETTER U WITH BREVE */ + /* 330*/ 0x016f, 1, 0x016e, /* LATIN CAPITAL LETTER U WITH RING .. */ + /* 333*/ 0x0171, 1, 0x0170, /* LATIN CAPITAL LETTER U WITH DOUBL.. */ + /* 336*/ 0x0173, 1, 0x0172, /* LATIN CAPITAL LETTER U WITH OGONEK */ + /* 339*/ 0x0175, 1, 0x0174, /* LATIN CAPITAL LETTER W WITH CIRCU.. */ + /* 342*/ 0x0177, 1, 0x0176, /* LATIN CAPITAL LETTER Y WITH CIRCU.. */ + /* 345*/ 0x017a, 1, 0x0179, /* LATIN CAPITAL LETTER Z WITH ACUTE */ + /* 348*/ 0x017c, 1, 0x017b, /* LATIN CAPITAL LETTER Z WITH DOT A.. */ + /* 351*/ 0x017e, 1, 0x017d, /* LATIN CAPITAL LETTER Z WITH CARON */ + /* 354*/ 0x0180, 1, 0x0243, /* LATIN CAPITAL LETTER B WITH STROKE */ + /* 357*/ 0x0183, 1, 0x0182, /* LATIN CAPITAL LETTER B WITH TOPBAR */ + /* 360*/ 0x0185, 1, 0x0184, /* LATIN CAPITAL LETTER TONE SIX */ + /* 363*/ 0x0188, 1, 0x0187, /* LATIN CAPITAL LETTER C WITH HOOK */ + /* 366*/ 0x018c, 1, 0x018b, /* LATIN CAPITAL LETTER D WITH TOPBAR */ + /* 369*/ 0x0192, 1, 0x0191, /* LATIN CAPITAL LETTER F WITH HOOK */ + /* 372*/ 0x0195, 1, 0x01f6, /* LATIN CAPITAL LETTER HWAIR */ + /* 375*/ 0x0199, 1, 0x0198, /* LATIN CAPITAL LETTER K WITH HOOK */ + /* 378*/ 0x019a, 1, 0x023d, /* LATIN CAPITAL LETTER L WITH BAR */ + /* 381*/ 0x019b, 1, 0xa7dc, /* LATIN CAPITAL LETTER LAMBDA WITH .. */ + /* 384*/ 0x019e, 1, 0x0220, /* LATIN CAPITAL LETTER N WITH LONG .. */ + /* 387*/ 0x01a1, 1, 0x01a0, /* LATIN CAPITAL LETTER O WITH HORN */ + /* 390*/ 0x01a3, 1, 0x01a2, /* LATIN CAPITAL LETTER OI */ + /* 393*/ 0x01a5, 1, 0x01a4, /* LATIN CAPITAL LETTER P WITH HOOK */ + /* 396*/ 0x01a8, 1, 0x01a7, /* LATIN CAPITAL LETTER TONE TWO */ + /* 399*/ 0x01ad, 1, 0x01ac, /* LATIN CAPITAL LETTER T WITH HOOK */ + /* 402*/ 0x01b0, 1, 0x01af, /* LATIN CAPITAL LETTER U WITH HORN */ + /* 405*/ 0x01b4, 1, 0x01b3, /* LATIN CAPITAL LETTER Y WITH HOOK */ + /* 408*/ 0x01b6, 1, 0x01b5, /* LATIN CAPITAL LETTER Z WITH STROKE */ + /* 411*/ 0x01b9, 1, 0x01b8, /* LATIN CAPITAL LETTER EZH REVERSED */ + /* 414*/ 0x01bd, 1, 0x01bc, /* LATIN CAPITAL LETTER TONE FIVE */ + /* 417*/ 0x01bf, 1, 0x01f7, /* LATIN CAPITAL LETTER WYNN */ + /* 420*/ 0x01c6, 2, 0x01c4, 0x01c5, /* LATIN CAPITAL LETTER DZ WITH CARON */ + /* 424*/ 0x01c9, 2, 0x01c7, 0x01c8, /* LATIN CAPITAL LETTER LJ */ + /* 428*/ 0x01cc, 2, 0x01ca, 0x01cb, /* LATIN CAPITAL LETTER NJ */ + /* 432*/ 0x01ce, 1, 0x01cd, /* LATIN CAPITAL LETTER A WITH CARON */ + /* 435*/ 0x01d0, 1, 0x01cf, /* LATIN CAPITAL LETTER I WITH CARON */ + /* 438*/ 0x01d2, 1, 0x01d1, /* LATIN CAPITAL LETTER O WITH CARON */ + /* 441*/ 0x01d4, 1, 0x01d3, /* LATIN CAPITAL LETTER U WITH CARON */ + /* 444*/ 0x01d6, 1, 0x01d5, /* LATIN CAPITAL LETTER U WITH DIAER.. */ + /* 447*/ 0x01d8, 1, 0x01d7, /* LATIN CAPITAL LETTER U WITH DIAER.. */ + /* 450*/ 0x01da, 1, 0x01d9, /* LATIN CAPITAL LETTER U WITH DIAER.. */ + /* 453*/ 0x01dc, 1, 0x01db, /* LATIN CAPITAL LETTER U WITH DIAER.. */ + /* 456*/ 0x01dd, 1, 0x018e, /* LATIN CAPITAL LETTER REVERSED E */ + /* 459*/ 0x01df, 1, 0x01de, /* LATIN CAPITAL LETTER A WITH DIAER.. */ + /* 462*/ 0x01e1, 1, 0x01e0, /* LATIN CAPITAL LETTER A WITH DOT A.. */ + /* 465*/ 0x01e3, 1, 0x01e2, /* LATIN CAPITAL LETTER AE WITH MACR.. */ + /* 468*/ 0x01e5, 1, 0x01e4, /* LATIN CAPITAL LETTER G WITH STROKE */ + /* 471*/ 0x01e7, 1, 0x01e6, /* LATIN CAPITAL LETTER G WITH CARON */ + /* 474*/ 0x01e9, 1, 0x01e8, /* LATIN CAPITAL LETTER K WITH CARON */ + /* 477*/ 0x01eb, 1, 0x01ea, /* LATIN CAPITAL LETTER O WITH OGONEK */ + /* 480*/ 0x01ed, 1, 0x01ec, /* LATIN CAPITAL LETTER O WITH OGONE.. */ + /* 483*/ 0x01ef, 1, 0x01ee, /* LATIN CAPITAL LETTER EZH WITH CAR.. */ + /* 486*/ 0x01f3, 2, 0x01f1, 0x01f2, /* LATIN CAPITAL LETTER DZ */ + /* 490*/ 0x01f5, 1, 0x01f4, /* LATIN CAPITAL LETTER G WITH ACUTE */ + /* 493*/ 0x01f9, 1, 0x01f8, /* LATIN CAPITAL LETTER N WITH GRAVE */ + /* 496*/ 0x01fb, 1, 0x01fa, /* LATIN CAPITAL LETTER A WITH RING .. */ + /* 499*/ 0x01fd, 1, 0x01fc, /* LATIN CAPITAL LETTER AE WITH ACUTE */ + /* 502*/ 0x01ff, 1, 0x01fe, /* LATIN CAPITAL LETTER O WITH STROK.. */ + /* 505*/ 0x0201, 1, 0x0200, /* LATIN CAPITAL LETTER A WITH DOUBL.. */ + /* 508*/ 0x0203, 1, 0x0202, /* LATIN CAPITAL LETTER A WITH INVER.. */ + /* 511*/ 0x0205, 1, 0x0204, /* LATIN CAPITAL LETTER E WITH DOUBL.. */ + /* 514*/ 0x0207, 1, 0x0206, /* LATIN CAPITAL LETTER E WITH INVER.. */ + /* 517*/ 0x0209, 1, 0x0208, /* LATIN CAPITAL LETTER I WITH DOUBL.. */ + /* 520*/ 0x020b, 1, 0x020a, /* LATIN CAPITAL LETTER I WITH INVER.. */ + /* 523*/ 0x020d, 1, 0x020c, /* LATIN CAPITAL LETTER O WITH DOUBL.. */ + /* 526*/ 0x020f, 1, 0x020e, /* LATIN CAPITAL LETTER O WITH INVER.. */ + /* 529*/ 0x0211, 1, 0x0210, /* LATIN CAPITAL LETTER R WITH DOUBL.. */ + /* 532*/ 0x0213, 1, 0x0212, /* LATIN CAPITAL LETTER R WITH INVER.. */ + /* 535*/ 0x0215, 1, 0x0214, /* LATIN CAPITAL LETTER U WITH DOUBL.. */ + /* 538*/ 0x0217, 1, 0x0216, /* LATIN CAPITAL LETTER U WITH INVER.. */ + /* 541*/ 0x0219, 1, 0x0218, /* LATIN CAPITAL LETTER S WITH COMMA.. */ + /* 544*/ 0x021b, 1, 0x021a, /* LATIN CAPITAL LETTER T WITH COMMA.. */ + /* 547*/ 0x021d, 1, 0x021c, /* LATIN CAPITAL LETTER YOGH */ + /* 550*/ 0x021f, 1, 0x021e, /* LATIN CAPITAL LETTER H WITH CARON */ + /* 553*/ 0x0223, 1, 0x0222, /* LATIN CAPITAL LETTER OU */ + /* 556*/ 0x0225, 1, 0x0224, /* LATIN CAPITAL LETTER Z WITH HOOK */ + /* 559*/ 0x0227, 1, 0x0226, /* LATIN CAPITAL LETTER A WITH DOT A.. */ + /* 562*/ 0x0229, 1, 0x0228, /* LATIN CAPITAL LETTER E WITH CEDIL.. */ + /* 565*/ 0x022b, 1, 0x022a, /* LATIN CAPITAL LETTER O WITH DIAER.. */ + /* 568*/ 0x022d, 1, 0x022c, /* LATIN CAPITAL LETTER O WITH TILDE.. */ + /* 571*/ 0x022f, 1, 0x022e, /* LATIN CAPITAL LETTER O WITH DOT A.. */ + /* 574*/ 0x0231, 1, 0x0230, /* LATIN CAPITAL LETTER O WITH DOT A.. */ + /* 577*/ 0x0233, 1, 0x0232, /* LATIN CAPITAL LETTER Y WITH MACRON */ + /* 580*/ 0x023c, 1, 0x023b, /* LATIN CAPITAL LETTER C WITH STROKE */ + /* 583*/ 0x023f, 1, 0x2c7e, /* LATIN CAPITAL LETTER S WITH SWASH.. */ + /* 586*/ 0x0240, 1, 0x2c7f, /* LATIN CAPITAL LETTER Z WITH SWASH.. */ + /* 589*/ 0x0242, 1, 0x0241, /* LATIN CAPITAL LETTER GLOTTAL STOP */ + /* 592*/ 0x0247, 1, 0x0246, /* LATIN CAPITAL LETTER E WITH STROKE */ + /* 595*/ 0x0249, 1, 0x0248, /* LATIN CAPITAL LETTER J WITH STROKE */ + /* 598*/ 0x024b, 1, 0x024a, /* LATIN CAPITAL LETTER SMALL Q WITH.. */ + /* 601*/ 0x024d, 1, 0x024c, /* LATIN CAPITAL LETTER R WITH STROKE */ + /* 604*/ 0x024f, 1, 0x024e, /* LATIN CAPITAL LETTER Y WITH STROKE */ + /* 607*/ 0x0250, 1, 0x2c6f, /* LATIN CAPITAL LETTER TURNED A */ + /* 610*/ 0x0251, 1, 0x2c6d, /* LATIN CAPITAL LETTER ALPHA */ + /* 613*/ 0x0252, 1, 0x2c70, /* LATIN CAPITAL LETTER TURNED ALPHA */ + /* 616*/ 0x0253, 1, 0x0181, /* LATIN CAPITAL LETTER B WITH HOOK */ + /* 619*/ 0x0254, 1, 0x0186, /* LATIN CAPITAL LETTER OPEN O */ + /* 622*/ 0x0256, 1, 0x0189, /* LATIN CAPITAL LETTER AFRICAN D */ + /* 625*/ 0x0257, 1, 0x018a, /* LATIN CAPITAL LETTER D WITH HOOK */ + /* 628*/ 0x0259, 1, 0x018f, /* LATIN CAPITAL LETTER SCHWA */ + /* 631*/ 0x025b, 1, 0x0190, /* LATIN CAPITAL LETTER OPEN E */ + /* 634*/ 0x025c, 1, 0xa7ab, /* LATIN CAPITAL LETTER REVERSED OPE.. */ + /* 637*/ 0x0260, 1, 0x0193, /* LATIN CAPITAL LETTER G WITH HOOK */ + /* 640*/ 0x0261, 1, 0xa7ac, /* LATIN CAPITAL LETTER SCRIPT G */ + /* 643*/ 0x0263, 1, 0x0194, /* LATIN CAPITAL LETTER GAMMA */ + /* 646*/ 0x0264, 1, 0xa7cb, /* LATIN CAPITAL LETTER RAMS HORN */ + /* 649*/ 0x0265, 1, 0xa78d, /* LATIN CAPITAL LETTER TURNED H */ + /* 652*/ 0x0266, 1, 0xa7aa, /* LATIN CAPITAL LETTER H WITH HOOK */ + /* 655*/ 0x0268, 1, 0x0197, /* LATIN CAPITAL LETTER I WITH STROKE */ + /* 658*/ 0x0269, 1, 0x0196, /* LATIN CAPITAL LETTER IOTA */ + /* 661*/ 0x026a, 1, 0xa7ae, /* LATIN CAPITAL LETTER SMALL CAPITA.. */ + /* 664*/ 0x026b, 1, 0x2c62, /* LATIN CAPITAL LETTER L WITH MIDDL.. */ + /* 667*/ 0x026c, 1, 0xa7ad, /* LATIN CAPITAL LETTER L WITH BELT */ + /* 670*/ 0x026f, 1, 0x019c, /* LATIN CAPITAL LETTER TURNED M */ + /* 673*/ 0x0271, 1, 0x2c6e, /* LATIN CAPITAL LETTER M WITH HOOK */ + /* 676*/ 0x0272, 1, 0x019d, /* LATIN CAPITAL LETTER N WITH LEFT .. */ + /* 679*/ 0x0275, 1, 0x019f, /* LATIN CAPITAL LETTER O WITH MIDDL.. */ + /* 682*/ 0x027d, 1, 0x2c64, /* LATIN CAPITAL LETTER R WITH TAIL */ + /* 685*/ 0x0280, 1, 0x01a6, /* LATIN LETTER YR */ + /* 688*/ 0x0282, 1, 0xa7c5, /* LATIN CAPITAL LETTER S WITH HOOK */ + /* 691*/ 0x0283, 1, 0x01a9, /* LATIN CAPITAL LETTER ESH */ + /* 694*/ 0x0287, 1, 0xa7b1, /* LATIN CAPITAL LETTER TURNED T */ + /* 697*/ 0x0288, 1, 0x01ae, /* LATIN CAPITAL LETTER T WITH RETRO.. */ + /* 700*/ 0x0289, 1, 0x0244, /* LATIN CAPITAL LETTER U BAR */ + /* 703*/ 0x028a, 1, 0x01b1, /* LATIN CAPITAL LETTER UPSILON */ + /* 706*/ 0x028b, 1, 0x01b2, /* LATIN CAPITAL LETTER V WITH HOOK */ + /* 709*/ 0x028c, 1, 0x0245, /* LATIN CAPITAL LETTER TURNED V */ + /* 712*/ 0x0292, 1, 0x01b7, /* LATIN CAPITAL LETTER EZH */ + /* 715*/ 0x029d, 1, 0xa7b2, /* LATIN CAPITAL LETTER J WITH CROSS.. */ + /* 718*/ 0x029e, 1, 0xa7b0, /* LATIN CAPITAL LETTER TURNED K */ + /* 721*/ 0x0371, 1, 0x0370, /* GREEK CAPITAL LETTER HETA */ + /* 724*/ 0x0373, 1, 0x0372, /* GREEK CAPITAL LETTER ARCHAIC SAMPI */ + /* 727*/ 0x0377, 1, 0x0376, /* GREEK CAPITAL LETTER PAMPHYLIAN D.. */ + /* 730*/ 0x037b, 1, 0x03fd, /* GREEK CAPITAL REVERSED LUNATE SIG.. */ + /* 733*/ 0x037c, 1, 0x03fe, /* GREEK CAPITAL DOTTED LUNATE SIGMA.. */ + /* 736*/ 0x037d, 1, 0x03ff, /* GREEK CAPITAL REVERSED DOTTED LUN.. */ + /* 739*/ 0x03ac, 1, 0x0386, /* GREEK CAPITAL LETTER ALPHA WITH T.. */ + /* 742*/ 0x03ad, 1, 0x0388, /* GREEK CAPITAL LETTER EPSILON WITH.. */ + /* 745*/ 0x03ae, 1, 0x0389, /* GREEK CAPITAL LETTER ETA WITH TON.. */ + /* 748*/ 0x03af, 1, 0x038a, /* GREEK CAPITAL LETTER IOTA WITH TO.. */ + /* 751*/ 0x03b1, 1, 0x0391, /* GREEK CAPITAL LETTER ALPHA */ + /* 754*/ 0x03b2, 2, 0x0392, 0x03d0, /* GREEK CAPITAL LETTER BETA */ + /* 758*/ 0x03b3, 1, 0x0393, /* GREEK CAPITAL LETTER GAMMA */ + /* 761*/ 0x03b4, 1, 0x0394, /* GREEK CAPITAL LETTER DELTA */ + /* 764*/ 0x03b5, 2, 0x0395, 0x03f5, /* GREEK CAPITAL LETTER EPSILON */ + /* 768*/ 0x03b6, 1, 0x0396, /* GREEK CAPITAL LETTER ZETA */ + /* 771*/ 0x03b7, 1, 0x0397, /* GREEK CAPITAL LETTER ETA */ + /* 774*/ 0x03b8, 3, 0x0398, 0x03d1, 0x03f4, /* GREEK CAPITAL LETTER THETA */ + /* 779*/ 0x03b9, 3, 0x0345, 0x0399, 0x1fbe, /* COMBINING GREEK YPOGEGRAMMENI */ + /* 784*/ 0x03ba, 2, 0x039a, 0x03f0, /* GREEK CAPITAL LETTER KAPPA */ + /* 788*/ 0x03bb, 1, 0x039b, /* GREEK CAPITAL LETTER LAMDA */ + /* 791*/ 0x03bc, 2, 0x00b5, 0x039c, /* MICRO SIGN */ + /* 795*/ 0x03bd, 1, 0x039d, /* GREEK CAPITAL LETTER NU */ + /* 798*/ 0x03be, 1, 0x039e, /* GREEK CAPITAL LETTER XI */ + /* 801*/ 0x03bf, 1, 0x039f, /* GREEK CAPITAL LETTER OMICRON */ + /* 804*/ 0x03c0, 2, 0x03a0, 0x03d6, /* GREEK CAPITAL LETTER PI */ + /* 808*/ 0x03c1, 2, 0x03a1, 0x03f1, /* GREEK CAPITAL LETTER RHO */ + /* 812*/ 0x03c3, 2, 0x03a3, 0x03c2, /* GREEK CAPITAL LETTER SIGMA */ + /* 816*/ 0x03c4, 1, 0x03a4, /* GREEK CAPITAL LETTER TAU */ + /* 819*/ 0x03c5, 1, 0x03a5, /* GREEK CAPITAL LETTER UPSILON */ + /* 822*/ 0x03c6, 2, 0x03a6, 0x03d5, /* GREEK CAPITAL LETTER PHI */ + /* 826*/ 0x03c7, 1, 0x03a7, /* GREEK CAPITAL LETTER CHI */ + /* 829*/ 0x03c8, 1, 0x03a8, /* GREEK CAPITAL LETTER PSI */ + /* 832*/ 0x03c9, 2, 0x03a9, 0x2126, /* GREEK CAPITAL LETTER OMEGA */ + /* 836*/ 0x03ca, 1, 0x03aa, /* GREEK CAPITAL LETTER IOTA WITH DI.. */ + /* 839*/ 0x03cb, 1, 0x03ab, /* GREEK CAPITAL LETTER UPSILON WITH.. */ + /* 842*/ 0x03cc, 1, 0x038c, /* GREEK CAPITAL LETTER OMICRON WITH.. */ + /* 845*/ 0x03cd, 1, 0x038e, /* GREEK CAPITAL LETTER UPSILON WITH.. */ + /* 848*/ 0x03ce, 1, 0x038f, /* GREEK CAPITAL LETTER OMEGA WITH T.. */ + /* 851*/ 0x03d7, 1, 0x03cf, /* GREEK CAPITAL KAI SYMBOL */ + /* 854*/ 0x03d9, 1, 0x03d8, /* GREEK LETTER ARCHAIC KOPPA */ + /* 857*/ 0x03db, 1, 0x03da, /* GREEK LETTER STIGMA */ + /* 860*/ 0x03dd, 1, 0x03dc, /* GREEK LETTER DIGAMMA */ + /* 863*/ 0x03df, 1, 0x03de, /* GREEK LETTER KOPPA */ + /* 866*/ 0x03e1, 1, 0x03e0, /* GREEK LETTER SAMPI */ + /* 869*/ 0x03e3, 1, 0x03e2, /* COPTIC CAPITAL LETTER SHEI */ + /* 872*/ 0x03e5, 1, 0x03e4, /* COPTIC CAPITAL LETTER FEI */ + /* 875*/ 0x03e7, 1, 0x03e6, /* COPTIC CAPITAL LETTER KHEI */ + /* 878*/ 0x03e9, 1, 0x03e8, /* COPTIC CAPITAL LETTER HORI */ + /* 881*/ 0x03eb, 1, 0x03ea, /* COPTIC CAPITAL LETTER GANGIA */ + /* 884*/ 0x03ed, 1, 0x03ec, /* COPTIC CAPITAL LETTER SHIMA */ + /* 887*/ 0x03ef, 1, 0x03ee, /* COPTIC CAPITAL LETTER DEI */ + /* 890*/ 0x03f2, 1, 0x03f9, /* GREEK CAPITAL LUNATE SIGMA SYMBOL */ + /* 893*/ 0x03f3, 1, 0x037f, /* GREEK CAPITAL LETTER YOT */ + /* 896*/ 0x03f8, 1, 0x03f7, /* GREEK CAPITAL LETTER SHO */ + /* 899*/ 0x03fb, 1, 0x03fa, /* GREEK CAPITAL LETTER SAN */ + /* 902*/ 0x0430, 1, 0x0410, /* CYRILLIC CAPITAL LETTER A */ + /* 905*/ 0x0431, 1, 0x0411, /* CYRILLIC CAPITAL LETTER BE */ + /* 908*/ 0x0432, 2, 0x0412, 0x1c80, /* CYRILLIC CAPITAL LETTER VE */ + /* 912*/ 0x0433, 1, 0x0413, /* CYRILLIC CAPITAL LETTER GHE */ + /* 915*/ 0x0434, 2, 0x0414, 0x1c81, /* CYRILLIC CAPITAL LETTER DE */ + /* 919*/ 0x0435, 1, 0x0415, /* CYRILLIC CAPITAL LETTER IE */ + /* 922*/ 0x0436, 1, 0x0416, /* CYRILLIC CAPITAL LETTER ZHE */ + /* 925*/ 0x0437, 1, 0x0417, /* CYRILLIC CAPITAL LETTER ZE */ + /* 928*/ 0x0438, 1, 0x0418, /* CYRILLIC CAPITAL LETTER I */ + /* 931*/ 0x0439, 1, 0x0419, /* CYRILLIC CAPITAL LETTER SHORT I */ + /* 934*/ 0x043a, 1, 0x041a, /* CYRILLIC CAPITAL LETTER KA */ + /* 937*/ 0x043b, 1, 0x041b, /* CYRILLIC CAPITAL LETTER EL */ + /* 940*/ 0x043c, 1, 0x041c, /* CYRILLIC CAPITAL LETTER EM */ + /* 943*/ 0x043d, 1, 0x041d, /* CYRILLIC CAPITAL LETTER EN */ + /* 946*/ 0x043e, 2, 0x041e, 0x1c82, /* CYRILLIC CAPITAL LETTER O */ + /* 950*/ 0x043f, 1, 0x041f, /* CYRILLIC CAPITAL LETTER PE */ + /* 953*/ 0x0440, 1, 0x0420, /* CYRILLIC CAPITAL LETTER ER */ + /* 956*/ 0x0441, 2, 0x0421, 0x1c83, /* CYRILLIC CAPITAL LETTER ES */ + /* 960*/ 0x0442, 3, 0x0422, 0x1c84, 0x1c85, /* CYRILLIC CAPITAL LETTER TE */ + /* 965*/ 0x0443, 1, 0x0423, /* CYRILLIC CAPITAL LETTER U */ + /* 968*/ 0x0444, 1, 0x0424, /* CYRILLIC CAPITAL LETTER EF */ + /* 971*/ 0x0445, 1, 0x0425, /* CYRILLIC CAPITAL LETTER HA */ + /* 974*/ 0x0446, 1, 0x0426, /* CYRILLIC CAPITAL LETTER TSE */ + /* 977*/ 0x0447, 1, 0x0427, /* CYRILLIC CAPITAL LETTER CHE */ + /* 980*/ 0x0448, 1, 0x0428, /* CYRILLIC CAPITAL LETTER SHA */ + /* 983*/ 0x0449, 1, 0x0429, /* CYRILLIC CAPITAL LETTER SHCHA */ + /* 986*/ 0x044a, 2, 0x042a, 0x1c86, /* CYRILLIC CAPITAL LETTER HARD SIGN */ + /* 990*/ 0x044b, 1, 0x042b, /* CYRILLIC CAPITAL LETTER YERU */ + /* 993*/ 0x044c, 1, 0x042c, /* CYRILLIC CAPITAL LETTER SOFT SIGN */ + /* 996*/ 0x044d, 1, 0x042d, /* CYRILLIC CAPITAL LETTER E */ + /* 999*/ 0x044e, 1, 0x042e, /* CYRILLIC CAPITAL LETTER YU */ + /*1002*/ 0x044f, 1, 0x042f, /* CYRILLIC CAPITAL LETTER YA */ + /*1005*/ 0x0450, 1, 0x0400, /* CYRILLIC CAPITAL LETTER IE WITH G.. */ + /*1008*/ 0x0451, 1, 0x0401, /* CYRILLIC CAPITAL LETTER IO */ + /*1011*/ 0x0452, 1, 0x0402, /* CYRILLIC CAPITAL LETTER DJE */ + /*1014*/ 0x0453, 1, 0x0403, /* CYRILLIC CAPITAL LETTER GJE */ + /*1017*/ 0x0454, 1, 0x0404, /* CYRILLIC CAPITAL LETTER UKRAINIAN.. */ + /*1020*/ 0x0455, 1, 0x0405, /* CYRILLIC CAPITAL LETTER DZE */ + /*1023*/ 0x0456, 1, 0x0406, /* CYRILLIC CAPITAL LETTER BYELORUSS.. */ + /*1026*/ 0x0457, 1, 0x0407, /* CYRILLIC CAPITAL LETTER YI */ + /*1029*/ 0x0458, 1, 0x0408, /* CYRILLIC CAPITAL LETTER JE */ + /*1032*/ 0x0459, 1, 0x0409, /* CYRILLIC CAPITAL LETTER LJE */ + /*1035*/ 0x045a, 1, 0x040a, /* CYRILLIC CAPITAL LETTER NJE */ + /*1038*/ 0x045b, 1, 0x040b, /* CYRILLIC CAPITAL LETTER TSHE */ + /*1041*/ 0x045c, 1, 0x040c, /* CYRILLIC CAPITAL LETTER KJE */ + /*1044*/ 0x045d, 1, 0x040d, /* CYRILLIC CAPITAL LETTER I WITH GR.. */ + /*1047*/ 0x045e, 1, 0x040e, /* CYRILLIC CAPITAL LETTER SHORT U */ + /*1050*/ 0x045f, 1, 0x040f, /* CYRILLIC CAPITAL LETTER DZHE */ + /*1053*/ 0x0461, 1, 0x0460, /* CYRILLIC CAPITAL LETTER OMEGA */ + /*1056*/ 0x0463, 2, 0x0462, 0x1c87, /* CYRILLIC CAPITAL LETTER YAT */ + /*1060*/ 0x0465, 1, 0x0464, /* CYRILLIC CAPITAL LETTER IOTIFIED E */ + /*1063*/ 0x0467, 1, 0x0466, /* CYRILLIC CAPITAL LETTER LITTLE YUS */ + /*1066*/ 0x0469, 1, 0x0468, /* CYRILLIC CAPITAL LETTER IOTIFIED .. */ + /*1069*/ 0x046b, 1, 0x046a, /* CYRILLIC CAPITAL LETTER BIG YUS */ + /*1072*/ 0x046d, 1, 0x046c, /* CYRILLIC CAPITAL LETTER IOTIFIED .. */ + /*1075*/ 0x046f, 1, 0x046e, /* CYRILLIC CAPITAL LETTER KSI */ + /*1078*/ 0x0471, 1, 0x0470, /* CYRILLIC CAPITAL LETTER PSI */ + /*1081*/ 0x0473, 1, 0x0472, /* CYRILLIC CAPITAL LETTER FITA */ + /*1084*/ 0x0475, 1, 0x0474, /* CYRILLIC CAPITAL LETTER IZHITSA */ + /*1087*/ 0x0477, 1, 0x0476, /* CYRILLIC CAPITAL LETTER IZHITSA W.. */ + /*1090*/ 0x0479, 1, 0x0478, /* CYRILLIC CAPITAL LETTER UK */ + /*1093*/ 0x047b, 1, 0x047a, /* CYRILLIC CAPITAL LETTER ROUND OME.. */ + /*1096*/ 0x047d, 1, 0x047c, /* CYRILLIC CAPITAL LETTER OMEGA WIT.. */ + /*1099*/ 0x047f, 1, 0x047e, /* CYRILLIC CAPITAL LETTER OT */ + /*1102*/ 0x0481, 1, 0x0480, /* CYRILLIC CAPITAL LETTER KOPPA */ + /*1105*/ 0x048b, 1, 0x048a, /* CYRILLIC CAPITAL LETTER SHORT I W.. */ + /*1108*/ 0x048d, 1, 0x048c, /* CYRILLIC CAPITAL LETTER SEMISOFT .. */ + /*1111*/ 0x048f, 1, 0x048e, /* CYRILLIC CAPITAL LETTER ER WITH T.. */ + /*1114*/ 0x0491, 1, 0x0490, /* CYRILLIC CAPITAL LETTER GHE WITH .. */ + /*1117*/ 0x0493, 1, 0x0492, /* CYRILLIC CAPITAL LETTER GHE WITH .. */ + /*1120*/ 0x0495, 1, 0x0494, /* CYRILLIC CAPITAL LETTER GHE WITH .. */ + /*1123*/ 0x0497, 1, 0x0496, /* CYRILLIC CAPITAL LETTER ZHE WITH .. */ + /*1126*/ 0x0499, 1, 0x0498, /* CYRILLIC CAPITAL LETTER ZE WITH D.. */ + /*1129*/ 0x049b, 1, 0x049a, /* CYRILLIC CAPITAL LETTER KA WITH D.. */ + /*1132*/ 0x049d, 1, 0x049c, /* CYRILLIC CAPITAL LETTER KA WITH V.. */ + /*1135*/ 0x049f, 1, 0x049e, /* CYRILLIC CAPITAL LETTER KA WITH S.. */ + /*1138*/ 0x04a1, 1, 0x04a0, /* CYRILLIC CAPITAL LETTER BASHKIR KA */ + /*1141*/ 0x04a3, 1, 0x04a2, /* CYRILLIC CAPITAL LETTER EN WITH D.. */ + /*1144*/ 0x04a5, 1, 0x04a4, /* CYRILLIC CAPITAL LIGATURE EN GHE */ + /*1147*/ 0x04a7, 1, 0x04a6, /* CYRILLIC CAPITAL LETTER PE WITH M.. */ + /*1150*/ 0x04a9, 1, 0x04a8, /* CYRILLIC CAPITAL LETTER ABKHASIAN.. */ + /*1153*/ 0x04ab, 1, 0x04aa, /* CYRILLIC CAPITAL LETTER ES WITH D.. */ + /*1156*/ 0x04ad, 1, 0x04ac, /* CYRILLIC CAPITAL LETTER TE WITH D.. */ + /*1159*/ 0x04af, 1, 0x04ae, /* CYRILLIC CAPITAL LETTER STRAIGHT U */ + /*1162*/ 0x04b1, 1, 0x04b0, /* CYRILLIC CAPITAL LETTER STRAIGHT .. */ + /*1165*/ 0x04b3, 1, 0x04b2, /* CYRILLIC CAPITAL LETTER HA WITH D.. */ + /*1168*/ 0x04b5, 1, 0x04b4, /* CYRILLIC CAPITAL LIGATURE TE TSE */ + /*1171*/ 0x04b7, 1, 0x04b6, /* CYRILLIC CAPITAL LETTER CHE WITH .. */ + /*1174*/ 0x04b9, 1, 0x04b8, /* CYRILLIC CAPITAL LETTER CHE WITH .. */ + /*1177*/ 0x04bb, 1, 0x04ba, /* CYRILLIC CAPITAL LETTER SHHA */ + /*1180*/ 0x04bd, 1, 0x04bc, /* CYRILLIC CAPITAL LETTER ABKHASIAN.. */ + /*1183*/ 0x04bf, 1, 0x04be, /* CYRILLIC CAPITAL LETTER ABKHASIAN.. */ + /*1186*/ 0x04c2, 1, 0x04c1, /* CYRILLIC CAPITAL LETTER ZHE WITH .. */ + /*1189*/ 0x04c4, 1, 0x04c3, /* CYRILLIC CAPITAL LETTER KA WITH H.. */ + /*1192*/ 0x04c6, 1, 0x04c5, /* CYRILLIC CAPITAL LETTER EL WITH T.. */ + /*1195*/ 0x04c8, 1, 0x04c7, /* CYRILLIC CAPITAL LETTER EN WITH H.. */ + /*1198*/ 0x04ca, 1, 0x04c9, /* CYRILLIC CAPITAL LETTER EN WITH T.. */ + /*1201*/ 0x04cc, 1, 0x04cb, /* CYRILLIC CAPITAL LETTER KHAKASSIA.. */ + /*1204*/ 0x04ce, 1, 0x04cd, /* CYRILLIC CAPITAL LETTER EM WITH T.. */ + /*1207*/ 0x04cf, 1, 0x04c0, /* CYRILLIC LETTER PALOCHKA */ + /*1210*/ 0x04d1, 1, 0x04d0, /* CYRILLIC CAPITAL LETTER A WITH BR.. */ + /*1213*/ 0x04d3, 1, 0x04d2, /* CYRILLIC CAPITAL LETTER A WITH DI.. */ + /*1216*/ 0x04d5, 1, 0x04d4, /* CYRILLIC CAPITAL LIGATURE A IE */ + /*1219*/ 0x04d7, 1, 0x04d6, /* CYRILLIC CAPITAL LETTER IE WITH B.. */ + /*1222*/ 0x04d9, 1, 0x04d8, /* CYRILLIC CAPITAL LETTER SCHWA */ + /*1225*/ 0x04db, 1, 0x04da, /* CYRILLIC CAPITAL LETTER SCHWA WIT.. */ + /*1228*/ 0x04dd, 1, 0x04dc, /* CYRILLIC CAPITAL LETTER ZHE WITH .. */ + /*1231*/ 0x04df, 1, 0x04de, /* CYRILLIC CAPITAL LETTER ZE WITH D.. */ + /*1234*/ 0x04e1, 1, 0x04e0, /* CYRILLIC CAPITAL LETTER ABKHASIAN.. */ + /*1237*/ 0x04e3, 1, 0x04e2, /* CYRILLIC CAPITAL LETTER I WITH MA.. */ + /*1240*/ 0x04e5, 1, 0x04e4, /* CYRILLIC CAPITAL LETTER I WITH DI.. */ + /*1243*/ 0x04e7, 1, 0x04e6, /* CYRILLIC CAPITAL LETTER O WITH DI.. */ + /*1246*/ 0x04e9, 1, 0x04e8, /* CYRILLIC CAPITAL LETTER BARRED O */ + /*1249*/ 0x04eb, 1, 0x04ea, /* CYRILLIC CAPITAL LETTER BARRED O .. */ + /*1252*/ 0x04ed, 1, 0x04ec, /* CYRILLIC CAPITAL LETTER E WITH DI.. */ + /*1255*/ 0x04ef, 1, 0x04ee, /* CYRILLIC CAPITAL LETTER U WITH MA.. */ + /*1258*/ 0x04f1, 1, 0x04f0, /* CYRILLIC CAPITAL LETTER U WITH DI.. */ + /*1261*/ 0x04f3, 1, 0x04f2, /* CYRILLIC CAPITAL LETTER U WITH DO.. */ + /*1264*/ 0x04f5, 1, 0x04f4, /* CYRILLIC CAPITAL LETTER CHE WITH .. */ + /*1267*/ 0x04f7, 1, 0x04f6, /* CYRILLIC CAPITAL LETTER GHE WITH .. */ + /*1270*/ 0x04f9, 1, 0x04f8, /* CYRILLIC CAPITAL LETTER YERU WITH.. */ + /*1273*/ 0x04fb, 1, 0x04fa, /* CYRILLIC CAPITAL LETTER GHE WITH .. */ + /*1276*/ 0x04fd, 1, 0x04fc, /* CYRILLIC CAPITAL LETTER HA WITH H.. */ + /*1279*/ 0x04ff, 1, 0x04fe, /* CYRILLIC CAPITAL LETTER HA WITH S.. */ + /*1282*/ 0x0501, 1, 0x0500, /* CYRILLIC CAPITAL LETTER KOMI DE */ + /*1285*/ 0x0503, 1, 0x0502, /* CYRILLIC CAPITAL LETTER KOMI DJE */ + /*1288*/ 0x0505, 1, 0x0504, /* CYRILLIC CAPITAL LETTER KOMI ZJE */ + /*1291*/ 0x0507, 1, 0x0506, /* CYRILLIC CAPITAL LETTER KOMI DZJE */ + /*1294*/ 0x0509, 1, 0x0508, /* CYRILLIC CAPITAL LETTER KOMI LJE */ + /*1297*/ 0x050b, 1, 0x050a, /* CYRILLIC CAPITAL LETTER KOMI NJE */ + /*1300*/ 0x050d, 1, 0x050c, /* CYRILLIC CAPITAL LETTER KOMI SJE */ + /*1303*/ 0x050f, 1, 0x050e, /* CYRILLIC CAPITAL LETTER KOMI TJE */ + /*1306*/ 0x0511, 1, 0x0510, /* CYRILLIC CAPITAL LETTER REVERSED .. */ + /*1309*/ 0x0513, 1, 0x0512, /* CYRILLIC CAPITAL LETTER EL WITH H.. */ + /*1312*/ 0x0515, 1, 0x0514, /* CYRILLIC CAPITAL LETTER LHA */ + /*1315*/ 0x0517, 1, 0x0516, /* CYRILLIC CAPITAL LETTER RHA */ + /*1318*/ 0x0519, 1, 0x0518, /* CYRILLIC CAPITAL LETTER YAE */ + /*1321*/ 0x051b, 1, 0x051a, /* CYRILLIC CAPITAL LETTER QA */ + /*1324*/ 0x051d, 1, 0x051c, /* CYRILLIC CAPITAL LETTER WE */ + /*1327*/ 0x051f, 1, 0x051e, /* CYRILLIC CAPITAL LETTER ALEUT KA */ + /*1330*/ 0x0521, 1, 0x0520, /* CYRILLIC CAPITAL LETTER EL WITH M.. */ + /*1333*/ 0x0523, 1, 0x0522, /* CYRILLIC CAPITAL LETTER EN WITH M.. */ + /*1336*/ 0x0525, 1, 0x0524, /* CYRILLIC CAPITAL LETTER PE WITH D.. */ + /*1339*/ 0x0527, 1, 0x0526, /* CYRILLIC CAPITAL LETTER SHHA WITH.. */ + /*1342*/ 0x0529, 1, 0x0528, /* CYRILLIC CAPITAL LETTER EN WITH L.. */ + /*1345*/ 0x052b, 1, 0x052a, /* CYRILLIC CAPITAL LETTER DZZHE */ + /*1348*/ 0x052d, 1, 0x052c, /* CYRILLIC CAPITAL LETTER DCHE */ + /*1351*/ 0x052f, 1, 0x052e, /* CYRILLIC CAPITAL LETTER EL WITH D.. */ + /*1354*/ 0x0561, 1, 0x0531, /* ARMENIAN CAPITAL LETTER AYB */ + /*1357*/ 0x0562, 1, 0x0532, /* ARMENIAN CAPITAL LETTER BEN */ + /*1360*/ 0x0563, 1, 0x0533, /* ARMENIAN CAPITAL LETTER GIM */ + /*1363*/ 0x0564, 1, 0x0534, /* ARMENIAN CAPITAL LETTER DA */ + /*1366*/ 0x0565, 1, 0x0535, /* ARMENIAN CAPITAL LETTER ECH */ + /*1369*/ 0x0566, 1, 0x0536, /* ARMENIAN CAPITAL LETTER ZA */ + /*1372*/ 0x0567, 1, 0x0537, /* ARMENIAN CAPITAL LETTER EH */ + /*1375*/ 0x0568, 1, 0x0538, /* ARMENIAN CAPITAL LETTER ET */ + /*1378*/ 0x0569, 1, 0x0539, /* ARMENIAN CAPITAL LETTER TO */ + /*1381*/ 0x056a, 1, 0x053a, /* ARMENIAN CAPITAL LETTER ZHE */ + /*1384*/ 0x056b, 1, 0x053b, /* ARMENIAN CAPITAL LETTER INI */ + /*1387*/ 0x056c, 1, 0x053c, /* ARMENIAN CAPITAL LETTER LIWN */ + /*1390*/ 0x056d, 1, 0x053d, /* ARMENIAN CAPITAL LETTER XEH */ + /*1393*/ 0x056e, 1, 0x053e, /* ARMENIAN CAPITAL LETTER CA */ + /*1396*/ 0x056f, 1, 0x053f, /* ARMENIAN CAPITAL LETTER KEN */ + /*1399*/ 0x0570, 1, 0x0540, /* ARMENIAN CAPITAL LETTER HO */ + /*1402*/ 0x0571, 1, 0x0541, /* ARMENIAN CAPITAL LETTER JA */ + /*1405*/ 0x0572, 1, 0x0542, /* ARMENIAN CAPITAL LETTER GHAD */ + /*1408*/ 0x0573, 1, 0x0543, /* ARMENIAN CAPITAL LETTER CHEH */ + /*1411*/ 0x0574, 1, 0x0544, /* ARMENIAN CAPITAL LETTER MEN */ + /*1414*/ 0x0575, 1, 0x0545, /* ARMENIAN CAPITAL LETTER YI */ + /*1417*/ 0x0576, 1, 0x0546, /* ARMENIAN CAPITAL LETTER NOW */ + /*1420*/ 0x0577, 1, 0x0547, /* ARMENIAN CAPITAL LETTER SHA */ + /*1423*/ 0x0578, 1, 0x0548, /* ARMENIAN CAPITAL LETTER VO */ + /*1426*/ 0x0579, 1, 0x0549, /* ARMENIAN CAPITAL LETTER CHA */ + /*1429*/ 0x057a, 1, 0x054a, /* ARMENIAN CAPITAL LETTER PEH */ + /*1432*/ 0x057b, 1, 0x054b, /* ARMENIAN CAPITAL LETTER JHEH */ + /*1435*/ 0x057c, 1, 0x054c, /* ARMENIAN CAPITAL LETTER RA */ + /*1438*/ 0x057d, 1, 0x054d, /* ARMENIAN CAPITAL LETTER SEH */ + /*1441*/ 0x057e, 1, 0x054e, /* ARMENIAN CAPITAL LETTER VEW */ + /*1444*/ 0x057f, 1, 0x054f, /* ARMENIAN CAPITAL LETTER TIWN */ + /*1447*/ 0x0580, 1, 0x0550, /* ARMENIAN CAPITAL LETTER REH */ + /*1450*/ 0x0581, 1, 0x0551, /* ARMENIAN CAPITAL LETTER CO */ + /*1453*/ 0x0582, 1, 0x0552, /* ARMENIAN CAPITAL LETTER YIWN */ + /*1456*/ 0x0583, 1, 0x0553, /* ARMENIAN CAPITAL LETTER PIWR */ + /*1459*/ 0x0584, 1, 0x0554, /* ARMENIAN CAPITAL LETTER KEH */ + /*1462*/ 0x0585, 1, 0x0555, /* ARMENIAN CAPITAL LETTER OH */ + /*1465*/ 0x0586, 1, 0x0556, /* ARMENIAN CAPITAL LETTER FEH */ + /*1468*/ 0x10d0, 1, 0x1c90, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1471*/ 0x10d1, 1, 0x1c91, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1474*/ 0x10d2, 1, 0x1c92, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1477*/ 0x10d3, 1, 0x1c93, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1480*/ 0x10d4, 1, 0x1c94, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1483*/ 0x10d5, 1, 0x1c95, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1486*/ 0x10d6, 1, 0x1c96, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1489*/ 0x10d7, 1, 0x1c97, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1492*/ 0x10d8, 1, 0x1c98, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1495*/ 0x10d9, 1, 0x1c99, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1498*/ 0x10da, 1, 0x1c9a, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1501*/ 0x10db, 1, 0x1c9b, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1504*/ 0x10dc, 1, 0x1c9c, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1507*/ 0x10dd, 1, 0x1c9d, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1510*/ 0x10de, 1, 0x1c9e, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1513*/ 0x10df, 1, 0x1c9f, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1516*/ 0x10e0, 1, 0x1ca0, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1519*/ 0x10e1, 1, 0x1ca1, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1522*/ 0x10e2, 1, 0x1ca2, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1525*/ 0x10e3, 1, 0x1ca3, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1528*/ 0x10e4, 1, 0x1ca4, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1531*/ 0x10e5, 1, 0x1ca5, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1534*/ 0x10e6, 1, 0x1ca6, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1537*/ 0x10e7, 1, 0x1ca7, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1540*/ 0x10e8, 1, 0x1ca8, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1543*/ 0x10e9, 1, 0x1ca9, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1546*/ 0x10ea, 1, 0x1caa, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1549*/ 0x10eb, 1, 0x1cab, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1552*/ 0x10ec, 1, 0x1cac, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1555*/ 0x10ed, 1, 0x1cad, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1558*/ 0x10ee, 1, 0x1cae, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1561*/ 0x10ef, 1, 0x1caf, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1564*/ 0x10f0, 1, 0x1cb0, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1567*/ 0x10f1, 1, 0x1cb1, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1570*/ 0x10f2, 1, 0x1cb2, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1573*/ 0x10f3, 1, 0x1cb3, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1576*/ 0x10f4, 1, 0x1cb4, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1579*/ 0x10f5, 1, 0x1cb5, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1582*/ 0x10f6, 1, 0x1cb6, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1585*/ 0x10f7, 1, 0x1cb7, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1588*/ 0x10f8, 1, 0x1cb8, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1591*/ 0x10f9, 1, 0x1cb9, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1594*/ 0x10fa, 1, 0x1cba, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1597*/ 0x10fd, 1, 0x1cbd, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1600*/ 0x10fe, 1, 0x1cbe, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1603*/ 0x10ff, 1, 0x1cbf, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1606*/ 0x13a0, 1, 0xab70, /* CHEROKEE SMALL LETTER A */ + /*1609*/ 0x13a1, 1, 0xab71, /* CHEROKEE SMALL LETTER E */ + /*1612*/ 0x13a2, 1, 0xab72, /* CHEROKEE SMALL LETTER I */ + /*1615*/ 0x13a3, 1, 0xab73, /* CHEROKEE SMALL LETTER O */ + /*1618*/ 0x13a4, 1, 0xab74, /* CHEROKEE SMALL LETTER U */ + /*1621*/ 0x13a5, 1, 0xab75, /* CHEROKEE SMALL LETTER V */ + /*1624*/ 0x13a6, 1, 0xab76, /* CHEROKEE SMALL LETTER GA */ + /*1627*/ 0x13a7, 1, 0xab77, /* CHEROKEE SMALL LETTER KA */ + /*1630*/ 0x13a8, 1, 0xab78, /* CHEROKEE SMALL LETTER GE */ + /*1633*/ 0x13a9, 1, 0xab79, /* CHEROKEE SMALL LETTER GI */ + /*1636*/ 0x13aa, 1, 0xab7a, /* CHEROKEE SMALL LETTER GO */ + /*1639*/ 0x13ab, 1, 0xab7b, /* CHEROKEE SMALL LETTER GU */ + /*1642*/ 0x13ac, 1, 0xab7c, /* CHEROKEE SMALL LETTER GV */ + /*1645*/ 0x13ad, 1, 0xab7d, /* CHEROKEE SMALL LETTER HA */ + /*1648*/ 0x13ae, 1, 0xab7e, /* CHEROKEE SMALL LETTER HE */ + /*1651*/ 0x13af, 1, 0xab7f, /* CHEROKEE SMALL LETTER HI */ + /*1654*/ 0x13b0, 1, 0xab80, /* CHEROKEE SMALL LETTER HO */ + /*1657*/ 0x13b1, 1, 0xab81, /* CHEROKEE SMALL LETTER HU */ + /*1660*/ 0x13b2, 1, 0xab82, /* CHEROKEE SMALL LETTER HV */ + /*1663*/ 0x13b3, 1, 0xab83, /* CHEROKEE SMALL LETTER LA */ + /*1666*/ 0x13b4, 1, 0xab84, /* CHEROKEE SMALL LETTER LE */ + /*1669*/ 0x13b5, 1, 0xab85, /* CHEROKEE SMALL LETTER LI */ + /*1672*/ 0x13b6, 1, 0xab86, /* CHEROKEE SMALL LETTER LO */ + /*1675*/ 0x13b7, 1, 0xab87, /* CHEROKEE SMALL LETTER LU */ + /*1678*/ 0x13b8, 1, 0xab88, /* CHEROKEE SMALL LETTER LV */ + /*1681*/ 0x13b9, 1, 0xab89, /* CHEROKEE SMALL LETTER MA */ + /*1684*/ 0x13ba, 1, 0xab8a, /* CHEROKEE SMALL LETTER ME */ + /*1687*/ 0x13bb, 1, 0xab8b, /* CHEROKEE SMALL LETTER MI */ + /*1690*/ 0x13bc, 1, 0xab8c, /* CHEROKEE SMALL LETTER MO */ + /*1693*/ 0x13bd, 1, 0xab8d, /* CHEROKEE SMALL LETTER MU */ + /*1696*/ 0x13be, 1, 0xab8e, /* CHEROKEE SMALL LETTER NA */ + /*1699*/ 0x13bf, 1, 0xab8f, /* CHEROKEE SMALL LETTER HNA */ + /*1702*/ 0x13c0, 1, 0xab90, /* CHEROKEE SMALL LETTER NAH */ + /*1705*/ 0x13c1, 1, 0xab91, /* CHEROKEE SMALL LETTER NE */ + /*1708*/ 0x13c2, 1, 0xab92, /* CHEROKEE SMALL LETTER NI */ + /*1711*/ 0x13c3, 1, 0xab93, /* CHEROKEE SMALL LETTER NO */ + /*1714*/ 0x13c4, 1, 0xab94, /* CHEROKEE SMALL LETTER NU */ + /*1717*/ 0x13c5, 1, 0xab95, /* CHEROKEE SMALL LETTER NV */ + /*1720*/ 0x13c6, 1, 0xab96, /* CHEROKEE SMALL LETTER QUA */ + /*1723*/ 0x13c7, 1, 0xab97, /* CHEROKEE SMALL LETTER QUE */ + /*1726*/ 0x13c8, 1, 0xab98, /* CHEROKEE SMALL LETTER QUI */ + /*1729*/ 0x13c9, 1, 0xab99, /* CHEROKEE SMALL LETTER QUO */ + /*1732*/ 0x13ca, 1, 0xab9a, /* CHEROKEE SMALL LETTER QUU */ + /*1735*/ 0x13cb, 1, 0xab9b, /* CHEROKEE SMALL LETTER QUV */ + /*1738*/ 0x13cc, 1, 0xab9c, /* CHEROKEE SMALL LETTER SA */ + /*1741*/ 0x13cd, 1, 0xab9d, /* CHEROKEE SMALL LETTER S */ + /*1744*/ 0x13ce, 1, 0xab9e, /* CHEROKEE SMALL LETTER SE */ + /*1747*/ 0x13cf, 1, 0xab9f, /* CHEROKEE SMALL LETTER SI */ + /*1750*/ 0x13d0, 1, 0xaba0, /* CHEROKEE SMALL LETTER SO */ + /*1753*/ 0x13d1, 1, 0xaba1, /* CHEROKEE SMALL LETTER SU */ + /*1756*/ 0x13d2, 1, 0xaba2, /* CHEROKEE SMALL LETTER SV */ + /*1759*/ 0x13d3, 1, 0xaba3, /* CHEROKEE SMALL LETTER DA */ + /*1762*/ 0x13d4, 1, 0xaba4, /* CHEROKEE SMALL LETTER TA */ + /*1765*/ 0x13d5, 1, 0xaba5, /* CHEROKEE SMALL LETTER DE */ + /*1768*/ 0x13d6, 1, 0xaba6, /* CHEROKEE SMALL LETTER TE */ + /*1771*/ 0x13d7, 1, 0xaba7, /* CHEROKEE SMALL LETTER DI */ + /*1774*/ 0x13d8, 1, 0xaba8, /* CHEROKEE SMALL LETTER TI */ + /*1777*/ 0x13d9, 1, 0xaba9, /* CHEROKEE SMALL LETTER DO */ + /*1780*/ 0x13da, 1, 0xabaa, /* CHEROKEE SMALL LETTER DU */ + /*1783*/ 0x13db, 1, 0xabab, /* CHEROKEE SMALL LETTER DV */ + /*1786*/ 0x13dc, 1, 0xabac, /* CHEROKEE SMALL LETTER DLA */ + /*1789*/ 0x13dd, 1, 0xabad, /* CHEROKEE SMALL LETTER TLA */ + /*1792*/ 0x13de, 1, 0xabae, /* CHEROKEE SMALL LETTER TLE */ + /*1795*/ 0x13df, 1, 0xabaf, /* CHEROKEE SMALL LETTER TLI */ + /*1798*/ 0x13e0, 1, 0xabb0, /* CHEROKEE SMALL LETTER TLO */ + /*1801*/ 0x13e1, 1, 0xabb1, /* CHEROKEE SMALL LETTER TLU */ + /*1804*/ 0x13e2, 1, 0xabb2, /* CHEROKEE SMALL LETTER TLV */ + /*1807*/ 0x13e3, 1, 0xabb3, /* CHEROKEE SMALL LETTER TSA */ + /*1810*/ 0x13e4, 1, 0xabb4, /* CHEROKEE SMALL LETTER TSE */ + /*1813*/ 0x13e5, 1, 0xabb5, /* CHEROKEE SMALL LETTER TSI */ + /*1816*/ 0x13e6, 1, 0xabb6, /* CHEROKEE SMALL LETTER TSO */ + /*1819*/ 0x13e7, 1, 0xabb7, /* CHEROKEE SMALL LETTER TSU */ + /*1822*/ 0x13e8, 1, 0xabb8, /* CHEROKEE SMALL LETTER TSV */ + /*1825*/ 0x13e9, 1, 0xabb9, /* CHEROKEE SMALL LETTER WA */ + /*1828*/ 0x13ea, 1, 0xabba, /* CHEROKEE SMALL LETTER WE */ + /*1831*/ 0x13eb, 1, 0xabbb, /* CHEROKEE SMALL LETTER WI */ + /*1834*/ 0x13ec, 1, 0xabbc, /* CHEROKEE SMALL LETTER WO */ + /*1837*/ 0x13ed, 1, 0xabbd, /* CHEROKEE SMALL LETTER WU */ + /*1840*/ 0x13ee, 1, 0xabbe, /* CHEROKEE SMALL LETTER WV */ + /*1843*/ 0x13ef, 1, 0xabbf, /* CHEROKEE SMALL LETTER YA */ + /*1846*/ 0x13f0, 1, 0x13f8, /* CHEROKEE SMALL LETTER YE */ + /*1849*/ 0x13f1, 1, 0x13f9, /* CHEROKEE SMALL LETTER YI */ + /*1852*/ 0x13f2, 1, 0x13fa, /* CHEROKEE SMALL LETTER YO */ + /*1855*/ 0x13f3, 1, 0x13fb, /* CHEROKEE SMALL LETTER YU */ + /*1858*/ 0x13f4, 1, 0x13fc, /* CHEROKEE SMALL LETTER YV */ + /*1861*/ 0x13f5, 1, 0x13fd, /* CHEROKEE SMALL LETTER MV */ + /*1864*/ 0x1c8a, 1, 0x1c89, /* CYRILLIC CAPITAL LETTER TJE */ + /*1867*/ 0x1d79, 1, 0xa77d, /* LATIN CAPITAL LETTER INSULAR G */ + /*1870*/ 0x1d7d, 1, 0x2c63, /* LATIN CAPITAL LETTER P WITH STROKE */ + /*1873*/ 0x1d8e, 1, 0xa7c6, /* LATIN CAPITAL LETTER Z WITH PALAT.. */ + /*1876*/ 0x1e01, 1, 0x1e00, /* LATIN CAPITAL LETTER A WITH RING .. */ + /*1879*/ 0x1e03, 1, 0x1e02, /* LATIN CAPITAL LETTER B WITH DOT A.. */ + /*1882*/ 0x1e05, 1, 0x1e04, /* LATIN CAPITAL LETTER B WITH DOT B.. */ + /*1885*/ 0x1e07, 1, 0x1e06, /* LATIN CAPITAL LETTER B WITH LINE .. */ + /*1888*/ 0x1e09, 1, 0x1e08, /* LATIN CAPITAL LETTER C WITH CEDIL.. */ + /*1891*/ 0x1e0b, 1, 0x1e0a, /* LATIN CAPITAL LETTER D WITH DOT A.. */ + /*1894*/ 0x1e0d, 1, 0x1e0c, /* LATIN CAPITAL LETTER D WITH DOT B.. */ + /*1897*/ 0x1e0f, 1, 0x1e0e, /* LATIN CAPITAL LETTER D WITH LINE .. */ + /*1900*/ 0x1e11, 1, 0x1e10, /* LATIN CAPITAL LETTER D WITH CEDIL.. */ + /*1903*/ 0x1e13, 1, 0x1e12, /* LATIN CAPITAL LETTER D WITH CIRCU.. */ + /*1906*/ 0x1e15, 1, 0x1e14, /* LATIN CAPITAL LETTER E WITH MACRO.. */ + /*1909*/ 0x1e17, 1, 0x1e16, /* LATIN CAPITAL LETTER E WITH MACRO.. */ + /*1912*/ 0x1e19, 1, 0x1e18, /* LATIN CAPITAL LETTER E WITH CIRCU.. */ + /*1915*/ 0x1e1b, 1, 0x1e1a, /* LATIN CAPITAL LETTER E WITH TILDE.. */ + /*1918*/ 0x1e1d, 1, 0x1e1c, /* LATIN CAPITAL LETTER E WITH CEDIL.. */ + /*1921*/ 0x1e1f, 1, 0x1e1e, /* LATIN CAPITAL LETTER F WITH DOT A.. */ + /*1924*/ 0x1e21, 1, 0x1e20, /* LATIN CAPITAL LETTER G WITH MACRON */ + /*1927*/ 0x1e23, 1, 0x1e22, /* LATIN CAPITAL LETTER H WITH DOT A.. */ + /*1930*/ 0x1e25, 1, 0x1e24, /* LATIN CAPITAL LETTER H WITH DOT B.. */ + /*1933*/ 0x1e27, 1, 0x1e26, /* LATIN CAPITAL LETTER H WITH DIAER.. */ + /*1936*/ 0x1e29, 1, 0x1e28, /* LATIN CAPITAL LETTER H WITH CEDIL.. */ + /*1939*/ 0x1e2b, 1, 0x1e2a, /* LATIN CAPITAL LETTER H WITH BREVE.. */ + /*1942*/ 0x1e2d, 1, 0x1e2c, /* LATIN CAPITAL LETTER I WITH TILDE.. */ + /*1945*/ 0x1e2f, 1, 0x1e2e, /* LATIN CAPITAL LETTER I WITH DIAER.. */ + /*1948*/ 0x1e31, 1, 0x1e30, /* LATIN CAPITAL LETTER K WITH ACUTE */ + /*1951*/ 0x1e33, 1, 0x1e32, /* LATIN CAPITAL LETTER K WITH DOT B.. */ + /*1954*/ 0x1e35, 1, 0x1e34, /* LATIN CAPITAL LETTER K WITH LINE .. */ + /*1957*/ 0x1e37, 1, 0x1e36, /* LATIN CAPITAL LETTER L WITH DOT B.. */ + /*1960*/ 0x1e39, 1, 0x1e38, /* LATIN CAPITAL LETTER L WITH DOT B.. */ + /*1963*/ 0x1e3b, 1, 0x1e3a, /* LATIN CAPITAL LETTER L WITH LINE .. */ + /*1966*/ 0x1e3d, 1, 0x1e3c, /* LATIN CAPITAL LETTER L WITH CIRCU.. */ + /*1969*/ 0x1e3f, 1, 0x1e3e, /* LATIN CAPITAL LETTER M WITH ACUTE */ + /*1972*/ 0x1e41, 1, 0x1e40, /* LATIN CAPITAL LETTER M WITH DOT A.. */ + /*1975*/ 0x1e43, 1, 0x1e42, /* LATIN CAPITAL LETTER M WITH DOT B.. */ + /*1978*/ 0x1e45, 1, 0x1e44, /* LATIN CAPITAL LETTER N WITH DOT A.. */ + /*1981*/ 0x1e47, 1, 0x1e46, /* LATIN CAPITAL LETTER N WITH DOT B.. */ + /*1984*/ 0x1e49, 1, 0x1e48, /* LATIN CAPITAL LETTER N WITH LINE .. */ + /*1987*/ 0x1e4b, 1, 0x1e4a, /* LATIN CAPITAL LETTER N WITH CIRCU.. */ + /*1990*/ 0x1e4d, 1, 0x1e4c, /* LATIN CAPITAL LETTER O WITH TILDE.. */ + /*1993*/ 0x1e4f, 1, 0x1e4e, /* LATIN CAPITAL LETTER O WITH TILDE.. */ + /*1996*/ 0x1e51, 1, 0x1e50, /* LATIN CAPITAL LETTER O WITH MACRO.. */ + /*1999*/ 0x1e53, 1, 0x1e52, /* LATIN CAPITAL LETTER O WITH MACRO.. */ + /*2002*/ 0x1e55, 1, 0x1e54, /* LATIN CAPITAL LETTER P WITH ACUTE */ + /*2005*/ 0x1e57, 1, 0x1e56, /* LATIN CAPITAL LETTER P WITH DOT A.. */ + /*2008*/ 0x1e59, 1, 0x1e58, /* LATIN CAPITAL LETTER R WITH DOT A.. */ + /*2011*/ 0x1e5b, 1, 0x1e5a, /* LATIN CAPITAL LETTER R WITH DOT B.. */ + /*2014*/ 0x1e5d, 1, 0x1e5c, /* LATIN CAPITAL LETTER R WITH DOT B.. */ + /*2017*/ 0x1e5f, 1, 0x1e5e, /* LATIN CAPITAL LETTER R WITH LINE .. */ + /*2020*/ 0x1e61, 2, 0x1e60, 0x1e9b, /* LATIN CAPITAL LETTER S WITH DOT A.. */ + /*2024*/ 0x1e63, 1, 0x1e62, /* LATIN CAPITAL LETTER S WITH DOT B.. */ + /*2027*/ 0x1e65, 1, 0x1e64, /* LATIN CAPITAL LETTER S WITH ACUTE.. */ + /*2030*/ 0x1e67, 1, 0x1e66, /* LATIN CAPITAL LETTER S WITH CARON.. */ + /*2033*/ 0x1e69, 1, 0x1e68, /* LATIN CAPITAL LETTER S WITH DOT B.. */ + /*2036*/ 0x1e6b, 1, 0x1e6a, /* LATIN CAPITAL LETTER T WITH DOT A.. */ + /*2039*/ 0x1e6d, 1, 0x1e6c, /* LATIN CAPITAL LETTER T WITH DOT B.. */ + /*2042*/ 0x1e6f, 1, 0x1e6e, /* LATIN CAPITAL LETTER T WITH LINE .. */ + /*2045*/ 0x1e71, 1, 0x1e70, /* LATIN CAPITAL LETTER T WITH CIRCU.. */ + /*2048*/ 0x1e73, 1, 0x1e72, /* LATIN CAPITAL LETTER U WITH DIAER.. */ + /*2051*/ 0x1e75, 1, 0x1e74, /* LATIN CAPITAL LETTER U WITH TILDE.. */ + /*2054*/ 0x1e77, 1, 0x1e76, /* LATIN CAPITAL LETTER U WITH CIRCU.. */ + /*2057*/ 0x1e79, 1, 0x1e78, /* LATIN CAPITAL LETTER U WITH TILDE.. */ + /*2060*/ 0x1e7b, 1, 0x1e7a, /* LATIN CAPITAL LETTER U WITH MACRO.. */ + /*2063*/ 0x1e7d, 1, 0x1e7c, /* LATIN CAPITAL LETTER V WITH TILDE */ + /*2066*/ 0x1e7f, 1, 0x1e7e, /* LATIN CAPITAL LETTER V WITH DOT B.. */ + /*2069*/ 0x1e81, 1, 0x1e80, /* LATIN CAPITAL LETTER W WITH GRAVE */ + /*2072*/ 0x1e83, 1, 0x1e82, /* LATIN CAPITAL LETTER W WITH ACUTE */ + /*2075*/ 0x1e85, 1, 0x1e84, /* LATIN CAPITAL LETTER W WITH DIAER.. */ + /*2078*/ 0x1e87, 1, 0x1e86, /* LATIN CAPITAL LETTER W WITH DOT A.. */ + /*2081*/ 0x1e89, 1, 0x1e88, /* LATIN CAPITAL LETTER W WITH DOT B.. */ + /*2084*/ 0x1e8b, 1, 0x1e8a, /* LATIN CAPITAL LETTER X WITH DOT A.. */ + /*2087*/ 0x1e8d, 1, 0x1e8c, /* LATIN CAPITAL LETTER X WITH DIAER.. */ + /*2090*/ 0x1e8f, 1, 0x1e8e, /* LATIN CAPITAL LETTER Y WITH DOT A.. */ + /*2093*/ 0x1e91, 1, 0x1e90, /* LATIN CAPITAL LETTER Z WITH CIRCU.. */ + /*2096*/ 0x1e93, 1, 0x1e92, /* LATIN CAPITAL LETTER Z WITH DOT B.. */ + /*2099*/ 0x1e95, 1, 0x1e94, /* LATIN CAPITAL LETTER Z WITH LINE .. */ + /*2102*/ 0x1ea1, 1, 0x1ea0, /* LATIN CAPITAL LETTER A WITH DOT B.. */ + /*2105*/ 0x1ea3, 1, 0x1ea2, /* LATIN CAPITAL LETTER A WITH HOOK .. */ + /*2108*/ 0x1ea5, 1, 0x1ea4, /* LATIN CAPITAL LETTER A WITH CIRCU.. */ + /*2111*/ 0x1ea7, 1, 0x1ea6, /* LATIN CAPITAL LETTER A WITH CIRCU.. */ + /*2114*/ 0x1ea9, 1, 0x1ea8, /* LATIN CAPITAL LETTER A WITH CIRCU.. */ + /*2117*/ 0x1eab, 1, 0x1eaa, /* LATIN CAPITAL LETTER A WITH CIRCU.. */ + /*2120*/ 0x1ead, 1, 0x1eac, /* LATIN CAPITAL LETTER A WITH CIRCU.. */ + /*2123*/ 0x1eaf, 1, 0x1eae, /* LATIN CAPITAL LETTER A WITH BREVE.. */ + /*2126*/ 0x1eb1, 1, 0x1eb0, /* LATIN CAPITAL LETTER A WITH BREVE.. */ + /*2129*/ 0x1eb3, 1, 0x1eb2, /* LATIN CAPITAL LETTER A WITH BREVE.. */ + /*2132*/ 0x1eb5, 1, 0x1eb4, /* LATIN CAPITAL LETTER A WITH BREVE.. */ + /*2135*/ 0x1eb7, 1, 0x1eb6, /* LATIN CAPITAL LETTER A WITH BREVE.. */ + /*2138*/ 0x1eb9, 1, 0x1eb8, /* LATIN CAPITAL LETTER E WITH DOT B.. */ + /*2141*/ 0x1ebb, 1, 0x1eba, /* LATIN CAPITAL LETTER E WITH HOOK .. */ + /*2144*/ 0x1ebd, 1, 0x1ebc, /* LATIN CAPITAL LETTER E WITH TILDE */ + /*2147*/ 0x1ebf, 1, 0x1ebe, /* LATIN CAPITAL LETTER E WITH CIRCU.. */ + /*2150*/ 0x1ec1, 1, 0x1ec0, /* LATIN CAPITAL LETTER E WITH CIRCU.. */ + /*2153*/ 0x1ec3, 1, 0x1ec2, /* LATIN CAPITAL LETTER E WITH CIRCU.. */ + /*2156*/ 0x1ec5, 1, 0x1ec4, /* LATIN CAPITAL LETTER E WITH CIRCU.. */ + /*2159*/ 0x1ec7, 1, 0x1ec6, /* LATIN CAPITAL LETTER E WITH CIRCU.. */ + /*2162*/ 0x1ec9, 1, 0x1ec8, /* LATIN CAPITAL LETTER I WITH HOOK .. */ + /*2165*/ 0x1ecb, 1, 0x1eca, /* LATIN CAPITAL LETTER I WITH DOT B.. */ + /*2168*/ 0x1ecd, 1, 0x1ecc, /* LATIN CAPITAL LETTER O WITH DOT B.. */ + /*2171*/ 0x1ecf, 1, 0x1ece, /* LATIN CAPITAL LETTER O WITH HOOK .. */ + /*2174*/ 0x1ed1, 1, 0x1ed0, /* LATIN CAPITAL LETTER O WITH CIRCU.. */ + /*2177*/ 0x1ed3, 1, 0x1ed2, /* LATIN CAPITAL LETTER O WITH CIRCU.. */ + /*2180*/ 0x1ed5, 1, 0x1ed4, /* LATIN CAPITAL LETTER O WITH CIRCU.. */ + /*2183*/ 0x1ed7, 1, 0x1ed6, /* LATIN CAPITAL LETTER O WITH CIRCU.. */ + /*2186*/ 0x1ed9, 1, 0x1ed8, /* LATIN CAPITAL LETTER O WITH CIRCU.. */ + /*2189*/ 0x1edb, 1, 0x1eda, /* LATIN CAPITAL LETTER O WITH HORN .. */ + /*2192*/ 0x1edd, 1, 0x1edc, /* LATIN CAPITAL LETTER O WITH HORN .. */ + /*2195*/ 0x1edf, 1, 0x1ede, /* LATIN CAPITAL LETTER O WITH HORN .. */ + /*2198*/ 0x1ee1, 1, 0x1ee0, /* LATIN CAPITAL LETTER O WITH HORN .. */ + /*2201*/ 0x1ee3, 1, 0x1ee2, /* LATIN CAPITAL LETTER O WITH HORN .. */ + /*2204*/ 0x1ee5, 1, 0x1ee4, /* LATIN CAPITAL LETTER U WITH DOT B.. */ + /*2207*/ 0x1ee7, 1, 0x1ee6, /* LATIN CAPITAL LETTER U WITH HOOK .. */ + /*2210*/ 0x1ee9, 1, 0x1ee8, /* LATIN CAPITAL LETTER U WITH HORN .. */ + /*2213*/ 0x1eeb, 1, 0x1eea, /* LATIN CAPITAL LETTER U WITH HORN .. */ + /*2216*/ 0x1eed, 1, 0x1eec, /* LATIN CAPITAL LETTER U WITH HORN .. */ + /*2219*/ 0x1eef, 1, 0x1eee, /* LATIN CAPITAL LETTER U WITH HORN .. */ + /*2222*/ 0x1ef1, 1, 0x1ef0, /* LATIN CAPITAL LETTER U WITH HORN .. */ + /*2225*/ 0x1ef3, 1, 0x1ef2, /* LATIN CAPITAL LETTER Y WITH GRAVE */ + /*2228*/ 0x1ef5, 1, 0x1ef4, /* LATIN CAPITAL LETTER Y WITH DOT B.. */ + /*2231*/ 0x1ef7, 1, 0x1ef6, /* LATIN CAPITAL LETTER Y WITH HOOK .. */ + /*2234*/ 0x1ef9, 1, 0x1ef8, /* LATIN CAPITAL LETTER Y WITH TILDE */ + /*2237*/ 0x1efb, 1, 0x1efa, /* LATIN CAPITAL LETTER MIDDLE-WELSH.. */ + /*2240*/ 0x1efd, 1, 0x1efc, /* LATIN CAPITAL LETTER MIDDLE-WELSH.. */ + /*2243*/ 0x1eff, 1, 0x1efe, /* LATIN CAPITAL LETTER Y WITH LOOP */ + /*2246*/ 0x1f00, 1, 0x1f08, /* GREEK CAPITAL LETTER ALPHA WITH P.. */ + /*2249*/ 0x1f01, 1, 0x1f09, /* GREEK CAPITAL LETTER ALPHA WITH D.. */ + /*2252*/ 0x1f02, 1, 0x1f0a, /* GREEK CAPITAL LETTER ALPHA WITH P.. */ + /*2255*/ 0x1f03, 1, 0x1f0b, /* GREEK CAPITAL LETTER ALPHA WITH D.. */ + /*2258*/ 0x1f04, 1, 0x1f0c, /* GREEK CAPITAL LETTER ALPHA WITH P.. */ + /*2261*/ 0x1f05, 1, 0x1f0d, /* GREEK CAPITAL LETTER ALPHA WITH D.. */ + /*2264*/ 0x1f06, 1, 0x1f0e, /* GREEK CAPITAL LETTER ALPHA WITH P.. */ + /*2267*/ 0x1f07, 1, 0x1f0f, /* GREEK CAPITAL LETTER ALPHA WITH D.. */ + /*2270*/ 0x1f10, 1, 0x1f18, /* GREEK CAPITAL LETTER EPSILON WITH.. */ + /*2273*/ 0x1f11, 1, 0x1f19, /* GREEK CAPITAL LETTER EPSILON WITH.. */ + /*2276*/ 0x1f12, 1, 0x1f1a, /* GREEK CAPITAL LETTER EPSILON WITH.. */ + /*2279*/ 0x1f13, 1, 0x1f1b, /* GREEK CAPITAL LETTER EPSILON WITH.. */ + /*2282*/ 0x1f14, 1, 0x1f1c, /* GREEK CAPITAL LETTER EPSILON WITH.. */ + /*2285*/ 0x1f15, 1, 0x1f1d, /* GREEK CAPITAL LETTER EPSILON WITH.. */ + /*2288*/ 0x1f20, 1, 0x1f28, /* GREEK CAPITAL LETTER ETA WITH PSI.. */ + /*2291*/ 0x1f21, 1, 0x1f29, /* GREEK CAPITAL LETTER ETA WITH DAS.. */ + /*2294*/ 0x1f22, 1, 0x1f2a, /* GREEK CAPITAL LETTER ETA WITH PSI.. */ + /*2297*/ 0x1f23, 1, 0x1f2b, /* GREEK CAPITAL LETTER ETA WITH DAS.. */ + /*2300*/ 0x1f24, 1, 0x1f2c, /* GREEK CAPITAL LETTER ETA WITH PSI.. */ + /*2303*/ 0x1f25, 1, 0x1f2d, /* GREEK CAPITAL LETTER ETA WITH DAS.. */ + /*2306*/ 0x1f26, 1, 0x1f2e, /* GREEK CAPITAL LETTER ETA WITH PSI.. */ + /*2309*/ 0x1f27, 1, 0x1f2f, /* GREEK CAPITAL LETTER ETA WITH DAS.. */ + /*2312*/ 0x1f30, 1, 0x1f38, /* GREEK CAPITAL LETTER IOTA WITH PS.. */ + /*2315*/ 0x1f31, 1, 0x1f39, /* GREEK CAPITAL LETTER IOTA WITH DA.. */ + /*2318*/ 0x1f32, 1, 0x1f3a, /* GREEK CAPITAL LETTER IOTA WITH PS.. */ + /*2321*/ 0x1f33, 1, 0x1f3b, /* GREEK CAPITAL LETTER IOTA WITH DA.. */ + /*2324*/ 0x1f34, 1, 0x1f3c, /* GREEK CAPITAL LETTER IOTA WITH PS.. */ + /*2327*/ 0x1f35, 1, 0x1f3d, /* GREEK CAPITAL LETTER IOTA WITH DA.. */ + /*2330*/ 0x1f36, 1, 0x1f3e, /* GREEK CAPITAL LETTER IOTA WITH PS.. */ + /*2333*/ 0x1f37, 1, 0x1f3f, /* GREEK CAPITAL LETTER IOTA WITH DA.. */ + /*2336*/ 0x1f40, 1, 0x1f48, /* GREEK CAPITAL LETTER OMICRON WITH.. */ + /*2339*/ 0x1f41, 1, 0x1f49, /* GREEK CAPITAL LETTER OMICRON WITH.. */ + /*2342*/ 0x1f42, 1, 0x1f4a, /* GREEK CAPITAL LETTER OMICRON WITH.. */ + /*2345*/ 0x1f43, 1, 0x1f4b, /* GREEK CAPITAL LETTER OMICRON WITH.. */ + /*2348*/ 0x1f44, 1, 0x1f4c, /* GREEK CAPITAL LETTER OMICRON WITH.. */ + /*2351*/ 0x1f45, 1, 0x1f4d, /* GREEK CAPITAL LETTER OMICRON WITH.. */ + /*2354*/ 0x1f51, 1, 0x1f59, /* GREEK CAPITAL LETTER UPSILON WITH.. */ + /*2357*/ 0x1f53, 1, 0x1f5b, /* GREEK CAPITAL LETTER UPSILON WITH.. */ + /*2360*/ 0x1f55, 1, 0x1f5d, /* GREEK CAPITAL LETTER UPSILON WITH.. */ + /*2363*/ 0x1f57, 1, 0x1f5f, /* GREEK CAPITAL LETTER UPSILON WITH.. */ + /*2366*/ 0x1f60, 1, 0x1f68, /* GREEK CAPITAL LETTER OMEGA WITH P.. */ + /*2369*/ 0x1f61, 1, 0x1f69, /* GREEK CAPITAL LETTER OMEGA WITH D.. */ + /*2372*/ 0x1f62, 1, 0x1f6a, /* GREEK CAPITAL LETTER OMEGA WITH P.. */ + /*2375*/ 0x1f63, 1, 0x1f6b, /* GREEK CAPITAL LETTER OMEGA WITH D.. */ + /*2378*/ 0x1f64, 1, 0x1f6c, /* GREEK CAPITAL LETTER OMEGA WITH P.. */ + /*2381*/ 0x1f65, 1, 0x1f6d, /* GREEK CAPITAL LETTER OMEGA WITH D.. */ + /*2384*/ 0x1f66, 1, 0x1f6e, /* GREEK CAPITAL LETTER OMEGA WITH P.. */ + /*2387*/ 0x1f67, 1, 0x1f6f, /* GREEK CAPITAL LETTER OMEGA WITH D.. */ + /*2390*/ 0x1f70, 1, 0x1fba, /* GREEK CAPITAL LETTER ALPHA WITH V.. */ + /*2393*/ 0x1f71, 1, 0x1fbb, /* GREEK CAPITAL LETTER ALPHA WITH O.. */ + /*2396*/ 0x1f72, 1, 0x1fc8, /* GREEK CAPITAL LETTER EPSILON WITH.. */ + /*2399*/ 0x1f73, 1, 0x1fc9, /* GREEK CAPITAL LETTER EPSILON WITH.. */ + /*2402*/ 0x1f74, 1, 0x1fca, /* GREEK CAPITAL LETTER ETA WITH VAR.. */ + /*2405*/ 0x1f75, 1, 0x1fcb, /* GREEK CAPITAL LETTER ETA WITH OXIA */ + /*2408*/ 0x1f76, 1, 0x1fda, /* GREEK CAPITAL LETTER IOTA WITH VA.. */ + /*2411*/ 0x1f77, 1, 0x1fdb, /* GREEK CAPITAL LETTER IOTA WITH OX.. */ + /*2414*/ 0x1f78, 1, 0x1ff8, /* GREEK CAPITAL LETTER OMICRON WITH.. */ + /*2417*/ 0x1f79, 1, 0x1ff9, /* GREEK CAPITAL LETTER OMICRON WITH.. */ + /*2420*/ 0x1f7a, 1, 0x1fea, /* GREEK CAPITAL LETTER UPSILON WITH.. */ + /*2423*/ 0x1f7b, 1, 0x1feb, /* GREEK CAPITAL LETTER UPSILON WITH.. */ + /*2426*/ 0x1f7c, 1, 0x1ffa, /* GREEK CAPITAL LETTER OMEGA WITH V.. */ + /*2429*/ 0x1f7d, 1, 0x1ffb, /* GREEK CAPITAL LETTER OMEGA WITH O.. */ + /*2432*/ 0x1fb0, 1, 0x1fb8, /* GREEK CAPITAL LETTER ALPHA WITH V.. */ + /*2435*/ 0x1fb1, 1, 0x1fb9, /* GREEK CAPITAL LETTER ALPHA WITH M.. */ + /*2438*/ 0x1fd0, 1, 0x1fd8, /* GREEK CAPITAL LETTER IOTA WITH VR.. */ + /*2441*/ 0x1fd1, 1, 0x1fd9, /* GREEK CAPITAL LETTER IOTA WITH MA.. */ + /*2444*/ 0x1fe0, 1, 0x1fe8, /* GREEK CAPITAL LETTER UPSILON WITH.. */ + /*2447*/ 0x1fe1, 1, 0x1fe9, /* GREEK CAPITAL LETTER UPSILON WITH.. */ + /*2450*/ 0x1fe5, 1, 0x1fec, /* GREEK CAPITAL LETTER RHO WITH DAS.. */ + /*2453*/ 0x214e, 1, 0x2132, /* TURNED CAPITAL F */ + /*2456*/ 0x2170, 1, 0x2160, /* ROMAN NUMERAL ONE */ + /*2459*/ 0x2171, 1, 0x2161, /* ROMAN NUMERAL TWO */ + /*2462*/ 0x2172, 1, 0x2162, /* ROMAN NUMERAL THREE */ + /*2465*/ 0x2173, 1, 0x2163, /* ROMAN NUMERAL FOUR */ + /*2468*/ 0x2174, 1, 0x2164, /* ROMAN NUMERAL FIVE */ + /*2471*/ 0x2175, 1, 0x2165, /* ROMAN NUMERAL SIX */ + /*2474*/ 0x2176, 1, 0x2166, /* ROMAN NUMERAL SEVEN */ + /*2477*/ 0x2177, 1, 0x2167, /* ROMAN NUMERAL EIGHT */ + /*2480*/ 0x2178, 1, 0x2168, /* ROMAN NUMERAL NINE */ + /*2483*/ 0x2179, 1, 0x2169, /* ROMAN NUMERAL TEN */ + /*2486*/ 0x217a, 1, 0x216a, /* ROMAN NUMERAL ELEVEN */ + /*2489*/ 0x217b, 1, 0x216b, /* ROMAN NUMERAL TWELVE */ + /*2492*/ 0x217c, 1, 0x216c, /* ROMAN NUMERAL FIFTY */ + /*2495*/ 0x217d, 1, 0x216d, /* ROMAN NUMERAL ONE HUNDRED */ + /*2498*/ 0x217e, 1, 0x216e, /* ROMAN NUMERAL FIVE HUNDRED */ + /*2501*/ 0x217f, 1, 0x216f, /* ROMAN NUMERAL ONE THOUSAND */ + /*2504*/ 0x2184, 1, 0x2183, /* ROMAN NUMERAL REVERSED ONE HUNDRED */ + /*2507*/ 0x24d0, 1, 0x24b6, /* CIRCLED LATIN CAPITAL LETTER A */ + /*2510*/ 0x24d1, 1, 0x24b7, /* CIRCLED LATIN CAPITAL LETTER B */ + /*2513*/ 0x24d2, 1, 0x24b8, /* CIRCLED LATIN CAPITAL LETTER C */ + /*2516*/ 0x24d3, 1, 0x24b9, /* CIRCLED LATIN CAPITAL LETTER D */ + /*2519*/ 0x24d4, 1, 0x24ba, /* CIRCLED LATIN CAPITAL LETTER E */ + /*2522*/ 0x24d5, 1, 0x24bb, /* CIRCLED LATIN CAPITAL LETTER F */ + /*2525*/ 0x24d6, 1, 0x24bc, /* CIRCLED LATIN CAPITAL LETTER G */ + /*2528*/ 0x24d7, 1, 0x24bd, /* CIRCLED LATIN CAPITAL LETTER H */ + /*2531*/ 0x24d8, 1, 0x24be, /* CIRCLED LATIN CAPITAL LETTER I */ + /*2534*/ 0x24d9, 1, 0x24bf, /* CIRCLED LATIN CAPITAL LETTER J */ + /*2537*/ 0x24da, 1, 0x24c0, /* CIRCLED LATIN CAPITAL LETTER K */ + /*2540*/ 0x24db, 1, 0x24c1, /* CIRCLED LATIN CAPITAL LETTER L */ + /*2543*/ 0x24dc, 1, 0x24c2, /* CIRCLED LATIN CAPITAL LETTER M */ + /*2546*/ 0x24dd, 1, 0x24c3, /* CIRCLED LATIN CAPITAL LETTER N */ + /*2549*/ 0x24de, 1, 0x24c4, /* CIRCLED LATIN CAPITAL LETTER O */ + /*2552*/ 0x24df, 1, 0x24c5, /* CIRCLED LATIN CAPITAL LETTER P */ + /*2555*/ 0x24e0, 1, 0x24c6, /* CIRCLED LATIN CAPITAL LETTER Q */ + /*2558*/ 0x24e1, 1, 0x24c7, /* CIRCLED LATIN CAPITAL LETTER R */ + /*2561*/ 0x24e2, 1, 0x24c8, /* CIRCLED LATIN CAPITAL LETTER S */ + /*2564*/ 0x24e3, 1, 0x24c9, /* CIRCLED LATIN CAPITAL LETTER T */ + /*2567*/ 0x24e4, 1, 0x24ca, /* CIRCLED LATIN CAPITAL LETTER U */ + /*2570*/ 0x24e5, 1, 0x24cb, /* CIRCLED LATIN CAPITAL LETTER V */ + /*2573*/ 0x24e6, 1, 0x24cc, /* CIRCLED LATIN CAPITAL LETTER W */ + /*2576*/ 0x24e7, 1, 0x24cd, /* CIRCLED LATIN CAPITAL LETTER X */ + /*2579*/ 0x24e8, 1, 0x24ce, /* CIRCLED LATIN CAPITAL LETTER Y */ + /*2582*/ 0x24e9, 1, 0x24cf, /* CIRCLED LATIN CAPITAL LETTER Z */ + /*2585*/ 0x2c30, 1, 0x2c00, /* GLAGOLITIC CAPITAL LETTER AZU */ + /*2588*/ 0x2c31, 1, 0x2c01, /* GLAGOLITIC CAPITAL LETTER BUKY */ + /*2591*/ 0x2c32, 1, 0x2c02, /* GLAGOLITIC CAPITAL LETTER VEDE */ + /*2594*/ 0x2c33, 1, 0x2c03, /* GLAGOLITIC CAPITAL LETTER GLAGOLI */ + /*2597*/ 0x2c34, 1, 0x2c04, /* GLAGOLITIC CAPITAL LETTER DOBRO */ + /*2600*/ 0x2c35, 1, 0x2c05, /* GLAGOLITIC CAPITAL LETTER YESTU */ + /*2603*/ 0x2c36, 1, 0x2c06, /* GLAGOLITIC CAPITAL LETTER ZHIVETE */ + /*2606*/ 0x2c37, 1, 0x2c07, /* GLAGOLITIC CAPITAL LETTER DZELO */ + /*2609*/ 0x2c38, 1, 0x2c08, /* GLAGOLITIC CAPITAL LETTER ZEMLJA */ + /*2612*/ 0x2c39, 1, 0x2c09, /* GLAGOLITIC CAPITAL LETTER IZHE */ + /*2615*/ 0x2c3a, 1, 0x2c0a, /* GLAGOLITIC CAPITAL LETTER INITIAL.. */ + /*2618*/ 0x2c3b, 1, 0x2c0b, /* GLAGOLITIC CAPITAL LETTER I */ + /*2621*/ 0x2c3c, 1, 0x2c0c, /* GLAGOLITIC CAPITAL LETTER DJERVI */ + /*2624*/ 0x2c3d, 1, 0x2c0d, /* GLAGOLITIC CAPITAL LETTER KAKO */ + /*2627*/ 0x2c3e, 1, 0x2c0e, /* GLAGOLITIC CAPITAL LETTER LJUDIJE */ + /*2630*/ 0x2c3f, 1, 0x2c0f, /* GLAGOLITIC CAPITAL LETTER MYSLITE */ + /*2633*/ 0x2c40, 1, 0x2c10, /* GLAGOLITIC CAPITAL LETTER NASHI */ + /*2636*/ 0x2c41, 1, 0x2c11, /* GLAGOLITIC CAPITAL LETTER ONU */ + /*2639*/ 0x2c42, 1, 0x2c12, /* GLAGOLITIC CAPITAL LETTER POKOJI */ + /*2642*/ 0x2c43, 1, 0x2c13, /* GLAGOLITIC CAPITAL LETTER RITSI */ + /*2645*/ 0x2c44, 1, 0x2c14, /* GLAGOLITIC CAPITAL LETTER SLOVO */ + /*2648*/ 0x2c45, 1, 0x2c15, /* GLAGOLITIC CAPITAL LETTER TVRIDO */ + /*2651*/ 0x2c46, 1, 0x2c16, /* GLAGOLITIC CAPITAL LETTER UKU */ + /*2654*/ 0x2c47, 1, 0x2c17, /* GLAGOLITIC CAPITAL LETTER FRITU */ + /*2657*/ 0x2c48, 1, 0x2c18, /* GLAGOLITIC CAPITAL LETTER HERU */ + /*2660*/ 0x2c49, 1, 0x2c19, /* GLAGOLITIC CAPITAL LETTER OTU */ + /*2663*/ 0x2c4a, 1, 0x2c1a, /* GLAGOLITIC CAPITAL LETTER PE */ + /*2666*/ 0x2c4b, 1, 0x2c1b, /* GLAGOLITIC CAPITAL LETTER SHTA */ + /*2669*/ 0x2c4c, 1, 0x2c1c, /* GLAGOLITIC CAPITAL LETTER TSI */ + /*2672*/ 0x2c4d, 1, 0x2c1d, /* GLAGOLITIC CAPITAL LETTER CHRIVI */ + /*2675*/ 0x2c4e, 1, 0x2c1e, /* GLAGOLITIC CAPITAL LETTER SHA */ + /*2678*/ 0x2c4f, 1, 0x2c1f, /* GLAGOLITIC CAPITAL LETTER YERU */ + /*2681*/ 0x2c50, 1, 0x2c20, /* GLAGOLITIC CAPITAL LETTER YERI */ + /*2684*/ 0x2c51, 1, 0x2c21, /* GLAGOLITIC CAPITAL LETTER YATI */ + /*2687*/ 0x2c52, 1, 0x2c22, /* GLAGOLITIC CAPITAL LETTER SPIDERY.. */ + /*2690*/ 0x2c53, 1, 0x2c23, /* GLAGOLITIC CAPITAL LETTER YU */ + /*2693*/ 0x2c54, 1, 0x2c24, /* GLAGOLITIC CAPITAL LETTER SMALL Y.. */ + /*2696*/ 0x2c55, 1, 0x2c25, /* GLAGOLITIC CAPITAL LETTER SMALL Y.. */ + /*2699*/ 0x2c56, 1, 0x2c26, /* GLAGOLITIC CAPITAL LETTER YO */ + /*2702*/ 0x2c57, 1, 0x2c27, /* GLAGOLITIC CAPITAL LETTER IOTATED.. */ + /*2705*/ 0x2c58, 1, 0x2c28, /* GLAGOLITIC CAPITAL LETTER BIG YUS */ + /*2708*/ 0x2c59, 1, 0x2c29, /* GLAGOLITIC CAPITAL LETTER IOTATED.. */ + /*2711*/ 0x2c5a, 1, 0x2c2a, /* GLAGOLITIC CAPITAL LETTER FITA */ + /*2714*/ 0x2c5b, 1, 0x2c2b, /* GLAGOLITIC CAPITAL LETTER IZHITSA */ + /*2717*/ 0x2c5c, 1, 0x2c2c, /* GLAGOLITIC CAPITAL LETTER SHTAPIC */ + /*2720*/ 0x2c5d, 1, 0x2c2d, /* GLAGOLITIC CAPITAL LETTER TROKUTA.. */ + /*2723*/ 0x2c5e, 1, 0x2c2e, /* GLAGOLITIC CAPITAL LETTER LATINAT.. */ + /*2726*/ 0x2c5f, 1, 0x2c2f, /* GLAGOLITIC CAPITAL LETTER CAUDATE.. */ + /*2729*/ 0x2c61, 1, 0x2c60, /* LATIN CAPITAL LETTER L WITH DOUBL.. */ + /*2732*/ 0x2c65, 1, 0x023a, /* LATIN CAPITAL LETTER A WITH STROKE */ + /*2735*/ 0x2c66, 1, 0x023e, /* LATIN CAPITAL LETTER T WITH DIAGO.. */ + /*2738*/ 0x2c68, 1, 0x2c67, /* LATIN CAPITAL LETTER H WITH DESCE.. */ + /*2741*/ 0x2c6a, 1, 0x2c69, /* LATIN CAPITAL LETTER K WITH DESCE.. */ + /*2744*/ 0x2c6c, 1, 0x2c6b, /* LATIN CAPITAL LETTER Z WITH DESCE.. */ + /*2747*/ 0x2c73, 1, 0x2c72, /* LATIN CAPITAL LETTER W WITH HOOK */ + /*2750*/ 0x2c76, 1, 0x2c75, /* LATIN CAPITAL LETTER HALF H */ + /*2753*/ 0x2c81, 1, 0x2c80, /* COPTIC CAPITAL LETTER ALFA */ + /*2756*/ 0x2c83, 1, 0x2c82, /* COPTIC CAPITAL LETTER VIDA */ + /*2759*/ 0x2c85, 1, 0x2c84, /* COPTIC CAPITAL LETTER GAMMA */ + /*2762*/ 0x2c87, 1, 0x2c86, /* COPTIC CAPITAL LETTER DALDA */ + /*2765*/ 0x2c89, 1, 0x2c88, /* COPTIC CAPITAL LETTER EIE */ + /*2768*/ 0x2c8b, 1, 0x2c8a, /* COPTIC CAPITAL LETTER SOU */ + /*2771*/ 0x2c8d, 1, 0x2c8c, /* COPTIC CAPITAL LETTER ZATA */ + /*2774*/ 0x2c8f, 1, 0x2c8e, /* COPTIC CAPITAL LETTER HATE */ + /*2777*/ 0x2c91, 1, 0x2c90, /* COPTIC CAPITAL LETTER THETHE */ + /*2780*/ 0x2c93, 1, 0x2c92, /* COPTIC CAPITAL LETTER IAUDA */ + /*2783*/ 0x2c95, 1, 0x2c94, /* COPTIC CAPITAL LETTER KAPA */ + /*2786*/ 0x2c97, 1, 0x2c96, /* COPTIC CAPITAL LETTER LAULA */ + /*2789*/ 0x2c99, 1, 0x2c98, /* COPTIC CAPITAL LETTER MI */ + /*2792*/ 0x2c9b, 1, 0x2c9a, /* COPTIC CAPITAL LETTER NI */ + /*2795*/ 0x2c9d, 1, 0x2c9c, /* COPTIC CAPITAL LETTER KSI */ + /*2798*/ 0x2c9f, 1, 0x2c9e, /* COPTIC CAPITAL LETTER O */ + /*2801*/ 0x2ca1, 1, 0x2ca0, /* COPTIC CAPITAL LETTER PI */ + /*2804*/ 0x2ca3, 1, 0x2ca2, /* COPTIC CAPITAL LETTER RO */ + /*2807*/ 0x2ca5, 1, 0x2ca4, /* COPTIC CAPITAL LETTER SIMA */ + /*2810*/ 0x2ca7, 1, 0x2ca6, /* COPTIC CAPITAL LETTER TAU */ + /*2813*/ 0x2ca9, 1, 0x2ca8, /* COPTIC CAPITAL LETTER UA */ + /*2816*/ 0x2cab, 1, 0x2caa, /* COPTIC CAPITAL LETTER FI */ + /*2819*/ 0x2cad, 1, 0x2cac, /* COPTIC CAPITAL LETTER KHI */ + /*2822*/ 0x2caf, 1, 0x2cae, /* COPTIC CAPITAL LETTER PSI */ + /*2825*/ 0x2cb1, 1, 0x2cb0, /* COPTIC CAPITAL LETTER OOU */ + /*2828*/ 0x2cb3, 1, 0x2cb2, /* COPTIC CAPITAL LETTER DIALECT-P A.. */ + /*2831*/ 0x2cb5, 1, 0x2cb4, /* COPTIC CAPITAL LETTER OLD COPTIC .. */ + /*2834*/ 0x2cb7, 1, 0x2cb6, /* COPTIC CAPITAL LETTER CRYPTOGRAMM.. */ + /*2837*/ 0x2cb9, 1, 0x2cb8, /* COPTIC CAPITAL LETTER DIALECT-P K.. */ + /*2840*/ 0x2cbb, 1, 0x2cba, /* COPTIC CAPITAL LETTER DIALECT-P NI */ + /*2843*/ 0x2cbd, 1, 0x2cbc, /* COPTIC CAPITAL LETTER CRYPTOGRAMM.. */ + /*2846*/ 0x2cbf, 1, 0x2cbe, /* COPTIC CAPITAL LETTER OLD COPTIC .. */ + /*2849*/ 0x2cc1, 1, 0x2cc0, /* COPTIC CAPITAL LETTER SAMPI */ + /*2852*/ 0x2cc3, 1, 0x2cc2, /* COPTIC CAPITAL LETTER CROSSED SHEI */ + /*2855*/ 0x2cc5, 1, 0x2cc4, /* COPTIC CAPITAL LETTER OLD COPTIC .. */ + /*2858*/ 0x2cc7, 1, 0x2cc6, /* COPTIC CAPITAL LETTER OLD COPTIC .. */ + /*2861*/ 0x2cc9, 1, 0x2cc8, /* COPTIC CAPITAL LETTER AKHMIMIC KH.. */ + /*2864*/ 0x2ccb, 1, 0x2cca, /* COPTIC CAPITAL LETTER DIALECT-P H.. */ + /*2867*/ 0x2ccd, 1, 0x2ccc, /* COPTIC CAPITAL LETTER OLD COPTIC .. */ + /*2870*/ 0x2ccf, 1, 0x2cce, /* COPTIC CAPITAL LETTER OLD COPTIC .. */ + /*2873*/ 0x2cd1, 1, 0x2cd0, /* COPTIC CAPITAL LETTER L-SHAPED HA */ + /*2876*/ 0x2cd3, 1, 0x2cd2, /* COPTIC CAPITAL LETTER OLD COPTIC .. */ + /*2879*/ 0x2cd5, 1, 0x2cd4, /* COPTIC CAPITAL LETTER OLD COPTIC .. */ + /*2882*/ 0x2cd7, 1, 0x2cd6, /* COPTIC CAPITAL LETTER OLD COPTIC .. */ + /*2885*/ 0x2cd9, 1, 0x2cd8, /* COPTIC CAPITAL LETTER OLD COPTIC .. */ + /*2888*/ 0x2cdb, 1, 0x2cda, /* COPTIC CAPITAL LETTER OLD COPTIC .. */ + /*2891*/ 0x2cdd, 1, 0x2cdc, /* COPTIC CAPITAL LETTER OLD NUBIAN .. */ + /*2894*/ 0x2cdf, 1, 0x2cde, /* COPTIC CAPITAL LETTER OLD NUBIAN .. */ + /*2897*/ 0x2ce1, 1, 0x2ce0, /* COPTIC CAPITAL LETTER OLD NUBIAN .. */ + /*2900*/ 0x2ce3, 1, 0x2ce2, /* COPTIC CAPITAL LETTER OLD NUBIAN .. */ + /*2903*/ 0x2cec, 1, 0x2ceb, /* COPTIC CAPITAL LETTER CRYPTOGRAMM.. */ + /*2906*/ 0x2cee, 1, 0x2ced, /* COPTIC CAPITAL LETTER CRYPTOGRAMM.. */ + /*2909*/ 0x2cf3, 1, 0x2cf2, /* COPTIC CAPITAL LETTER BOHAIRIC KH.. */ + /*2912*/ 0x2d00, 1, 0x10a0, /* GEORGIAN CAPITAL LETTER AN */ + /*2915*/ 0x2d01, 1, 0x10a1, /* GEORGIAN CAPITAL LETTER BAN */ + /*2918*/ 0x2d02, 1, 0x10a2, /* GEORGIAN CAPITAL LETTER GAN */ + /*2921*/ 0x2d03, 1, 0x10a3, /* GEORGIAN CAPITAL LETTER DON */ + /*2924*/ 0x2d04, 1, 0x10a4, /* GEORGIAN CAPITAL LETTER EN */ + /*2927*/ 0x2d05, 1, 0x10a5, /* GEORGIAN CAPITAL LETTER VIN */ + /*2930*/ 0x2d06, 1, 0x10a6, /* GEORGIAN CAPITAL LETTER ZEN */ + /*2933*/ 0x2d07, 1, 0x10a7, /* GEORGIAN CAPITAL LETTER TAN */ + /*2936*/ 0x2d08, 1, 0x10a8, /* GEORGIAN CAPITAL LETTER IN */ + /*2939*/ 0x2d09, 1, 0x10a9, /* GEORGIAN CAPITAL LETTER KAN */ + /*2942*/ 0x2d0a, 1, 0x10aa, /* GEORGIAN CAPITAL LETTER LAS */ + /*2945*/ 0x2d0b, 1, 0x10ab, /* GEORGIAN CAPITAL LETTER MAN */ + /*2948*/ 0x2d0c, 1, 0x10ac, /* GEORGIAN CAPITAL LETTER NAR */ + /*2951*/ 0x2d0d, 1, 0x10ad, /* GEORGIAN CAPITAL LETTER ON */ + /*2954*/ 0x2d0e, 1, 0x10ae, /* GEORGIAN CAPITAL LETTER PAR */ + /*2957*/ 0x2d0f, 1, 0x10af, /* GEORGIAN CAPITAL LETTER ZHAR */ + /*2960*/ 0x2d10, 1, 0x10b0, /* GEORGIAN CAPITAL LETTER RAE */ + /*2963*/ 0x2d11, 1, 0x10b1, /* GEORGIAN CAPITAL LETTER SAN */ + /*2966*/ 0x2d12, 1, 0x10b2, /* GEORGIAN CAPITAL LETTER TAR */ + /*2969*/ 0x2d13, 1, 0x10b3, /* GEORGIAN CAPITAL LETTER UN */ + /*2972*/ 0x2d14, 1, 0x10b4, /* GEORGIAN CAPITAL LETTER PHAR */ + /*2975*/ 0x2d15, 1, 0x10b5, /* GEORGIAN CAPITAL LETTER KHAR */ + /*2978*/ 0x2d16, 1, 0x10b6, /* GEORGIAN CAPITAL LETTER GHAN */ + /*2981*/ 0x2d17, 1, 0x10b7, /* GEORGIAN CAPITAL LETTER QAR */ + /*2984*/ 0x2d18, 1, 0x10b8, /* GEORGIAN CAPITAL LETTER SHIN */ + /*2987*/ 0x2d19, 1, 0x10b9, /* GEORGIAN CAPITAL LETTER CHIN */ + /*2990*/ 0x2d1a, 1, 0x10ba, /* GEORGIAN CAPITAL LETTER CAN */ + /*2993*/ 0x2d1b, 1, 0x10bb, /* GEORGIAN CAPITAL LETTER JIL */ + /*2996*/ 0x2d1c, 1, 0x10bc, /* GEORGIAN CAPITAL LETTER CIL */ + /*2999*/ 0x2d1d, 1, 0x10bd, /* GEORGIAN CAPITAL LETTER CHAR */ + /*3002*/ 0x2d1e, 1, 0x10be, /* GEORGIAN CAPITAL LETTER XAN */ + /*3005*/ 0x2d1f, 1, 0x10bf, /* GEORGIAN CAPITAL LETTER JHAN */ + /*3008*/ 0x2d20, 1, 0x10c0, /* GEORGIAN CAPITAL LETTER HAE */ + /*3011*/ 0x2d21, 1, 0x10c1, /* GEORGIAN CAPITAL LETTER HE */ + /*3014*/ 0x2d22, 1, 0x10c2, /* GEORGIAN CAPITAL LETTER HIE */ + /*3017*/ 0x2d23, 1, 0x10c3, /* GEORGIAN CAPITAL LETTER WE */ + /*3020*/ 0x2d24, 1, 0x10c4, /* GEORGIAN CAPITAL LETTER HAR */ + /*3023*/ 0x2d25, 1, 0x10c5, /* GEORGIAN CAPITAL LETTER HOE */ + /*3026*/ 0x2d27, 1, 0x10c7, /* GEORGIAN CAPITAL LETTER YN */ + /*3029*/ 0x2d2d, 1, 0x10cd, /* GEORGIAN CAPITAL LETTER AEN */ + /*3032*/ 0xa641, 1, 0xa640, /* CYRILLIC CAPITAL LETTER ZEMLYA */ + /*3035*/ 0xa643, 1, 0xa642, /* CYRILLIC CAPITAL LETTER DZELO */ + /*3038*/ 0xa645, 1, 0xa644, /* CYRILLIC CAPITAL LETTER REVERSED .. */ + /*3041*/ 0xa647, 1, 0xa646, /* CYRILLIC CAPITAL LETTER IOTA */ + /*3044*/ 0xa649, 1, 0xa648, /* CYRILLIC CAPITAL LETTER DJERV */ + /*3047*/ 0xa64b, 2, 0x1c88, 0xa64a, /* CYRILLIC SMALL LETTER UNBLENDED UK */ + /*3051*/ 0xa64d, 1, 0xa64c, /* CYRILLIC CAPITAL LETTER BROAD OME.. */ + /*3054*/ 0xa64f, 1, 0xa64e, /* CYRILLIC CAPITAL LETTER NEUTRAL Y.. */ + /*3057*/ 0xa651, 1, 0xa650, /* CYRILLIC CAPITAL LETTER YERU WITH.. */ + /*3060*/ 0xa653, 1, 0xa652, /* CYRILLIC CAPITAL LETTER IOTIFIED .. */ + /*3063*/ 0xa655, 1, 0xa654, /* CYRILLIC CAPITAL LETTER REVERSED .. */ + /*3066*/ 0xa657, 1, 0xa656, /* CYRILLIC CAPITAL LETTER IOTIFIED A */ + /*3069*/ 0xa659, 1, 0xa658, /* CYRILLIC CAPITAL LETTER CLOSED LI.. */ + /*3072*/ 0xa65b, 1, 0xa65a, /* CYRILLIC CAPITAL LETTER BLENDED Y.. */ + /*3075*/ 0xa65d, 1, 0xa65c, /* CYRILLIC CAPITAL LETTER IOTIFIED .. */ + /*3078*/ 0xa65f, 1, 0xa65e, /* CYRILLIC CAPITAL LETTER YN */ + /*3081*/ 0xa661, 1, 0xa660, /* CYRILLIC CAPITAL LETTER REVERSED .. */ + /*3084*/ 0xa663, 1, 0xa662, /* CYRILLIC CAPITAL LETTER SOFT DE */ + /*3087*/ 0xa665, 1, 0xa664, /* CYRILLIC CAPITAL LETTER SOFT EL */ + /*3090*/ 0xa667, 1, 0xa666, /* CYRILLIC CAPITAL LETTER SOFT EM */ + /*3093*/ 0xa669, 1, 0xa668, /* CYRILLIC CAPITAL LETTER MONOCULAR.. */ + /*3096*/ 0xa66b, 1, 0xa66a, /* CYRILLIC CAPITAL LETTER BINOCULAR.. */ + /*3099*/ 0xa66d, 1, 0xa66c, /* CYRILLIC CAPITAL LETTER DOUBLE MO.. */ + /*3102*/ 0xa681, 1, 0xa680, /* CYRILLIC CAPITAL LETTER DWE */ + /*3105*/ 0xa683, 1, 0xa682, /* CYRILLIC CAPITAL LETTER DZWE */ + /*3108*/ 0xa685, 1, 0xa684, /* CYRILLIC CAPITAL LETTER ZHWE */ + /*3111*/ 0xa687, 1, 0xa686, /* CYRILLIC CAPITAL LETTER CCHE */ + /*3114*/ 0xa689, 1, 0xa688, /* CYRILLIC CAPITAL LETTER DZZE */ + /*3117*/ 0xa68b, 1, 0xa68a, /* CYRILLIC CAPITAL LETTER TE WITH M.. */ + /*3120*/ 0xa68d, 1, 0xa68c, /* CYRILLIC CAPITAL LETTER TWE */ + /*3123*/ 0xa68f, 1, 0xa68e, /* CYRILLIC CAPITAL LETTER TSWE */ + /*3126*/ 0xa691, 1, 0xa690, /* CYRILLIC CAPITAL LETTER TSSE */ + /*3129*/ 0xa693, 1, 0xa692, /* CYRILLIC CAPITAL LETTER TCHE */ + /*3132*/ 0xa695, 1, 0xa694, /* CYRILLIC CAPITAL LETTER HWE */ + /*3135*/ 0xa697, 1, 0xa696, /* CYRILLIC CAPITAL LETTER SHWE */ + /*3138*/ 0xa699, 1, 0xa698, /* CYRILLIC CAPITAL LETTER DOUBLE O */ + /*3141*/ 0xa69b, 1, 0xa69a, /* CYRILLIC CAPITAL LETTER CROSSED O */ + /*3144*/ 0xa723, 1, 0xa722, /* LATIN CAPITAL LETTER EGYPTOLOGICA.. */ + /*3147*/ 0xa725, 1, 0xa724, /* LATIN CAPITAL LETTER EGYPTOLOGICA.. */ + /*3150*/ 0xa727, 1, 0xa726, /* LATIN CAPITAL LETTER HENG */ + /*3153*/ 0xa729, 1, 0xa728, /* LATIN CAPITAL LETTER TZ */ + /*3156*/ 0xa72b, 1, 0xa72a, /* LATIN CAPITAL LETTER TRESILLO */ + /*3159*/ 0xa72d, 1, 0xa72c, /* LATIN CAPITAL LETTER CUATRILLO */ + /*3162*/ 0xa72f, 1, 0xa72e, /* LATIN CAPITAL LETTER CUATRILLO WI.. */ + /*3165*/ 0xa733, 1, 0xa732, /* LATIN CAPITAL LETTER AA */ + /*3168*/ 0xa735, 1, 0xa734, /* LATIN CAPITAL LETTER AO */ + /*3171*/ 0xa737, 1, 0xa736, /* LATIN CAPITAL LETTER AU */ + /*3174*/ 0xa739, 1, 0xa738, /* LATIN CAPITAL LETTER AV */ + /*3177*/ 0xa73b, 1, 0xa73a, /* LATIN CAPITAL LETTER AV WITH HORI.. */ + /*3180*/ 0xa73d, 1, 0xa73c, /* LATIN CAPITAL LETTER AY */ + /*3183*/ 0xa73f, 1, 0xa73e, /* LATIN CAPITAL LETTER REVERSED C W.. */ + /*3186*/ 0xa741, 1, 0xa740, /* LATIN CAPITAL LETTER K WITH STROKE */ + /*3189*/ 0xa743, 1, 0xa742, /* LATIN CAPITAL LETTER K WITH DIAGO.. */ + /*3192*/ 0xa745, 1, 0xa744, /* LATIN CAPITAL LETTER K WITH STROK.. */ + /*3195*/ 0xa747, 1, 0xa746, /* LATIN CAPITAL LETTER BROKEN L */ + /*3198*/ 0xa749, 1, 0xa748, /* LATIN CAPITAL LETTER L WITH HIGH .. */ + /*3201*/ 0xa74b, 1, 0xa74a, /* LATIN CAPITAL LETTER O WITH LONG .. */ + /*3204*/ 0xa74d, 1, 0xa74c, /* LATIN CAPITAL LETTER O WITH LOOP */ + /*3207*/ 0xa74f, 1, 0xa74e, /* LATIN CAPITAL LETTER OO */ + /*3210*/ 0xa751, 1, 0xa750, /* LATIN CAPITAL LETTER P WITH STROK.. */ + /*3213*/ 0xa753, 1, 0xa752, /* LATIN CAPITAL LETTER P WITH FLOUR.. */ + /*3216*/ 0xa755, 1, 0xa754, /* LATIN CAPITAL LETTER P WITH SQUIR.. */ + /*3219*/ 0xa757, 1, 0xa756, /* LATIN CAPITAL LETTER Q WITH STROK.. */ + /*3222*/ 0xa759, 1, 0xa758, /* LATIN CAPITAL LETTER Q WITH DIAGO.. */ + /*3225*/ 0xa75b, 1, 0xa75a, /* LATIN CAPITAL LETTER R ROTUNDA */ + /*3228*/ 0xa75d, 1, 0xa75c, /* LATIN CAPITAL LETTER RUM ROTUNDA */ + /*3231*/ 0xa75f, 1, 0xa75e, /* LATIN CAPITAL LETTER V WITH DIAGO.. */ + /*3234*/ 0xa761, 1, 0xa760, /* LATIN CAPITAL LETTER VY */ + /*3237*/ 0xa763, 1, 0xa762, /* LATIN CAPITAL LETTER VISIGOTHIC Z */ + /*3240*/ 0xa765, 1, 0xa764, /* LATIN CAPITAL LETTER THORN WITH S.. */ + /*3243*/ 0xa767, 1, 0xa766, /* LATIN CAPITAL LETTER THORN WITH S.. */ + /*3246*/ 0xa769, 1, 0xa768, /* LATIN CAPITAL LETTER VEND */ + /*3249*/ 0xa76b, 1, 0xa76a, /* LATIN CAPITAL LETTER ET */ + /*3252*/ 0xa76d, 1, 0xa76c, /* LATIN CAPITAL LETTER IS */ + /*3255*/ 0xa76f, 1, 0xa76e, /* LATIN CAPITAL LETTER CON */ + /*3258*/ 0xa77a, 1, 0xa779, /* LATIN CAPITAL LETTER INSULAR D */ + /*3261*/ 0xa77c, 1, 0xa77b, /* LATIN CAPITAL LETTER INSULAR F */ + /*3264*/ 0xa77f, 1, 0xa77e, /* LATIN CAPITAL LETTER TURNED INSUL.. */ + /*3267*/ 0xa781, 1, 0xa780, /* LATIN CAPITAL LETTER TURNED L */ + /*3270*/ 0xa783, 1, 0xa782, /* LATIN CAPITAL LETTER INSULAR R */ + /*3273*/ 0xa785, 1, 0xa784, /* LATIN CAPITAL LETTER INSULAR S */ + /*3276*/ 0xa787, 1, 0xa786, /* LATIN CAPITAL LETTER INSULAR T */ + /*3279*/ 0xa78c, 1, 0xa78b, /* LATIN CAPITAL LETTER SALTILLO */ + /*3282*/ 0xa791, 1, 0xa790, /* LATIN CAPITAL LETTER N WITH DESCE.. */ + /*3285*/ 0xa793, 1, 0xa792, /* LATIN CAPITAL LETTER C WITH BAR */ + /*3288*/ 0xa794, 1, 0xa7c4, /* LATIN CAPITAL LETTER C WITH PALAT.. */ + /*3291*/ 0xa797, 1, 0xa796, /* LATIN CAPITAL LETTER B WITH FLOUR.. */ + /*3294*/ 0xa799, 1, 0xa798, /* LATIN CAPITAL LETTER F WITH STROKE */ + /*3297*/ 0xa79b, 1, 0xa79a, /* LATIN CAPITAL LETTER VOLAPUK AE */ + /*3300*/ 0xa79d, 1, 0xa79c, /* LATIN CAPITAL LETTER VOLAPUK OE */ + /*3303*/ 0xa79f, 1, 0xa79e, /* LATIN CAPITAL LETTER VOLAPUK UE */ + /*3306*/ 0xa7a1, 1, 0xa7a0, /* LATIN CAPITAL LETTER G WITH OBLIQ.. */ + /*3309*/ 0xa7a3, 1, 0xa7a2, /* LATIN CAPITAL LETTER K WITH OBLIQ.. */ + /*3312*/ 0xa7a5, 1, 0xa7a4, /* LATIN CAPITAL LETTER N WITH OBLIQ.. */ + /*3315*/ 0xa7a7, 1, 0xa7a6, /* LATIN CAPITAL LETTER R WITH OBLIQ.. */ + /*3318*/ 0xa7a9, 1, 0xa7a8, /* LATIN CAPITAL LETTER S WITH OBLIQ.. */ + /*3321*/ 0xa7b5, 1, 0xa7b4, /* LATIN CAPITAL LETTER BETA */ + /*3324*/ 0xa7b7, 1, 0xa7b6, /* LATIN CAPITAL LETTER OMEGA */ + /*3327*/ 0xa7b9, 1, 0xa7b8, /* LATIN CAPITAL LETTER U WITH STROKE */ + /*3330*/ 0xa7bb, 1, 0xa7ba, /* LATIN CAPITAL LETTER GLOTTAL A */ + /*3333*/ 0xa7bd, 1, 0xa7bc, /* LATIN CAPITAL LETTER GLOTTAL I */ + /*3336*/ 0xa7bf, 1, 0xa7be, /* LATIN CAPITAL LETTER GLOTTAL U */ + /*3339*/ 0xa7c1, 1, 0xa7c0, /* LATIN CAPITAL LETTER OLD POLISH O */ + /*3342*/ 0xa7c3, 1, 0xa7c2, /* LATIN CAPITAL LETTER ANGLICANA W */ + /*3345*/ 0xa7c8, 1, 0xa7c7, /* LATIN CAPITAL LETTER D WITH SHORT.. */ + /*3348*/ 0xa7ca, 1, 0xa7c9, /* LATIN CAPITAL LETTER S WITH SHORT.. */ + /*3351*/ 0xa7cd, 1, 0xa7cc, /* LATIN CAPITAL LETTER S WITH DIAGO.. */ + /*3354*/ 0xa7d1, 1, 0xa7d0, /* LATIN CAPITAL LETTER CLOSED INSUL.. */ + /*3357*/ 0xa7d7, 1, 0xa7d6, /* LATIN CAPITAL LETTER MIDDLE SCOTS.. */ + /*3360*/ 0xa7d9, 1, 0xa7d8, /* LATIN CAPITAL LETTER SIGMOID S */ + /*3363*/ 0xa7db, 1, 0xa7da, /* LATIN CAPITAL LETTER LAMBDA */ + /*3366*/ 0xa7f6, 1, 0xa7f5, /* LATIN CAPITAL LETTER REVERSED HAL.. */ + /*3369*/ 0xab53, 1, 0xa7b3, /* LATIN CAPITAL LETTER CHI */ + /*3372*/ 0xff41, 1, 0xff21, /* FULLWIDTH LATIN CAPITAL LETTER A */ + /*3375*/ 0xff42, 1, 0xff22, /* FULLWIDTH LATIN CAPITAL LETTER B */ + /*3378*/ 0xff43, 1, 0xff23, /* FULLWIDTH LATIN CAPITAL LETTER C */ + /*3381*/ 0xff44, 1, 0xff24, /* FULLWIDTH LATIN CAPITAL LETTER D */ + /*3384*/ 0xff45, 1, 0xff25, /* FULLWIDTH LATIN CAPITAL LETTER E */ + /*3387*/ 0xff46, 1, 0xff26, /* FULLWIDTH LATIN CAPITAL LETTER F */ + /*3390*/ 0xff47, 1, 0xff27, /* FULLWIDTH LATIN CAPITAL LETTER G */ + /*3393*/ 0xff48, 1, 0xff28, /* FULLWIDTH LATIN CAPITAL LETTER H */ + /*3396*/ 0xff49, 1, 0xff29, /* FULLWIDTH LATIN CAPITAL LETTER I */ + /*3399*/ 0xff4a, 1, 0xff2a, /* FULLWIDTH LATIN CAPITAL LETTER J */ + /*3402*/ 0xff4b, 1, 0xff2b, /* FULLWIDTH LATIN CAPITAL LETTER K */ + /*3405*/ 0xff4c, 1, 0xff2c, /* FULLWIDTH LATIN CAPITAL LETTER L */ + /*3408*/ 0xff4d, 1, 0xff2d, /* FULLWIDTH LATIN CAPITAL LETTER M */ + /*3411*/ 0xff4e, 1, 0xff2e, /* FULLWIDTH LATIN CAPITAL LETTER N */ + /*3414*/ 0xff4f, 1, 0xff2f, /* FULLWIDTH LATIN CAPITAL LETTER O */ + /*3417*/ 0xff50, 1, 0xff30, /* FULLWIDTH LATIN CAPITAL LETTER P */ + /*3420*/ 0xff51, 1, 0xff31, /* FULLWIDTH LATIN CAPITAL LETTER Q */ + /*3423*/ 0xff52, 1, 0xff32, /* FULLWIDTH LATIN CAPITAL LETTER R */ + /*3426*/ 0xff53, 1, 0xff33, /* FULLWIDTH LATIN CAPITAL LETTER S */ + /*3429*/ 0xff54, 1, 0xff34, /* FULLWIDTH LATIN CAPITAL LETTER T */ + /*3432*/ 0xff55, 1, 0xff35, /* FULLWIDTH LATIN CAPITAL LETTER U */ + /*3435*/ 0xff56, 1, 0xff36, /* FULLWIDTH LATIN CAPITAL LETTER V */ + /*3438*/ 0xff57, 1, 0xff37, /* FULLWIDTH LATIN CAPITAL LETTER W */ + /*3441*/ 0xff58, 1, 0xff38, /* FULLWIDTH LATIN CAPITAL LETTER X */ + /*3444*/ 0xff59, 1, 0xff39, /* FULLWIDTH LATIN CAPITAL LETTER Y */ + /*3447*/ 0xff5a, 1, 0xff3a, /* FULLWIDTH LATIN CAPITAL LETTER Z */ + /*3450*/ 0x010428, 1, 0x010400, /* DESERET CAPITAL LETTER LONG I */ + /*3453*/ 0x010429, 1, 0x010401, /* DESERET CAPITAL LETTER LONG E */ + /*3456*/ 0x01042a, 1, 0x010402, /* DESERET CAPITAL LETTER LONG A */ + /*3459*/ 0x01042b, 1, 0x010403, /* DESERET CAPITAL LETTER LONG AH */ + /*3462*/ 0x01042c, 1, 0x010404, /* DESERET CAPITAL LETTER LONG O */ + /*3465*/ 0x01042d, 1, 0x010405, /* DESERET CAPITAL LETTER LONG OO */ + /*3468*/ 0x01042e, 1, 0x010406, /* DESERET CAPITAL LETTER SHORT I */ + /*3471*/ 0x01042f, 1, 0x010407, /* DESERET CAPITAL LETTER SHORT E */ + /*3474*/ 0x010430, 1, 0x010408, /* DESERET CAPITAL LETTER SHORT A */ + /*3477*/ 0x010431, 1, 0x010409, /* DESERET CAPITAL LETTER SHORT AH */ + /*3480*/ 0x010432, 1, 0x01040a, /* DESERET CAPITAL LETTER SHORT O */ + /*3483*/ 0x010433, 1, 0x01040b, /* DESERET CAPITAL LETTER SHORT OO */ + /*3486*/ 0x010434, 1, 0x01040c, /* DESERET CAPITAL LETTER AY */ + /*3489*/ 0x010435, 1, 0x01040d, /* DESERET CAPITAL LETTER OW */ + /*3492*/ 0x010436, 1, 0x01040e, /* DESERET CAPITAL LETTER WU */ + /*3495*/ 0x010437, 1, 0x01040f, /* DESERET CAPITAL LETTER YEE */ + /*3498*/ 0x010438, 1, 0x010410, /* DESERET CAPITAL LETTER H */ + /*3501*/ 0x010439, 1, 0x010411, /* DESERET CAPITAL LETTER PEE */ + /*3504*/ 0x01043a, 1, 0x010412, /* DESERET CAPITAL LETTER BEE */ + /*3507*/ 0x01043b, 1, 0x010413, /* DESERET CAPITAL LETTER TEE */ + /*3510*/ 0x01043c, 1, 0x010414, /* DESERET CAPITAL LETTER DEE */ + /*3513*/ 0x01043d, 1, 0x010415, /* DESERET CAPITAL LETTER CHEE */ + /*3516*/ 0x01043e, 1, 0x010416, /* DESERET CAPITAL LETTER JEE */ + /*3519*/ 0x01043f, 1, 0x010417, /* DESERET CAPITAL LETTER KAY */ + /*3522*/ 0x010440, 1, 0x010418, /* DESERET CAPITAL LETTER GAY */ + /*3525*/ 0x010441, 1, 0x010419, /* DESERET CAPITAL LETTER EF */ + /*3528*/ 0x010442, 1, 0x01041a, /* DESERET CAPITAL LETTER VEE */ + /*3531*/ 0x010443, 1, 0x01041b, /* DESERET CAPITAL LETTER ETH */ + /*3534*/ 0x010444, 1, 0x01041c, /* DESERET CAPITAL LETTER THEE */ + /*3537*/ 0x010445, 1, 0x01041d, /* DESERET CAPITAL LETTER ES */ + /*3540*/ 0x010446, 1, 0x01041e, /* DESERET CAPITAL LETTER ZEE */ + /*3543*/ 0x010447, 1, 0x01041f, /* DESERET CAPITAL LETTER ESH */ + /*3546*/ 0x010448, 1, 0x010420, /* DESERET CAPITAL LETTER ZHEE */ + /*3549*/ 0x010449, 1, 0x010421, /* DESERET CAPITAL LETTER ER */ + /*3552*/ 0x01044a, 1, 0x010422, /* DESERET CAPITAL LETTER EL */ + /*3555*/ 0x01044b, 1, 0x010423, /* DESERET CAPITAL LETTER EM */ + /*3558*/ 0x01044c, 1, 0x010424, /* DESERET CAPITAL LETTER EN */ + /*3561*/ 0x01044d, 1, 0x010425, /* DESERET CAPITAL LETTER ENG */ + /*3564*/ 0x01044e, 1, 0x010426, /* DESERET CAPITAL LETTER OI */ + /*3567*/ 0x01044f, 1, 0x010427, /* DESERET CAPITAL LETTER EW */ + /*3570*/ 0x0104d8, 1, 0x0104b0, /* OSAGE CAPITAL LETTER A */ + /*3573*/ 0x0104d9, 1, 0x0104b1, /* OSAGE CAPITAL LETTER AI */ + /*3576*/ 0x0104da, 1, 0x0104b2, /* OSAGE CAPITAL LETTER AIN */ + /*3579*/ 0x0104db, 1, 0x0104b3, /* OSAGE CAPITAL LETTER AH */ + /*3582*/ 0x0104dc, 1, 0x0104b4, /* OSAGE CAPITAL LETTER BRA */ + /*3585*/ 0x0104dd, 1, 0x0104b5, /* OSAGE CAPITAL LETTER CHA */ + /*3588*/ 0x0104de, 1, 0x0104b6, /* OSAGE CAPITAL LETTER EHCHA */ + /*3591*/ 0x0104df, 1, 0x0104b7, /* OSAGE CAPITAL LETTER E */ + /*3594*/ 0x0104e0, 1, 0x0104b8, /* OSAGE CAPITAL LETTER EIN */ + /*3597*/ 0x0104e1, 1, 0x0104b9, /* OSAGE CAPITAL LETTER HA */ + /*3600*/ 0x0104e2, 1, 0x0104ba, /* OSAGE CAPITAL LETTER HYA */ + /*3603*/ 0x0104e3, 1, 0x0104bb, /* OSAGE CAPITAL LETTER I */ + /*3606*/ 0x0104e4, 1, 0x0104bc, /* OSAGE CAPITAL LETTER KA */ + /*3609*/ 0x0104e5, 1, 0x0104bd, /* OSAGE CAPITAL LETTER EHKA */ + /*3612*/ 0x0104e6, 1, 0x0104be, /* OSAGE CAPITAL LETTER KYA */ + /*3615*/ 0x0104e7, 1, 0x0104bf, /* OSAGE CAPITAL LETTER LA */ + /*3618*/ 0x0104e8, 1, 0x0104c0, /* OSAGE CAPITAL LETTER MA */ + /*3621*/ 0x0104e9, 1, 0x0104c1, /* OSAGE CAPITAL LETTER NA */ + /*3624*/ 0x0104ea, 1, 0x0104c2, /* OSAGE CAPITAL LETTER O */ + /*3627*/ 0x0104eb, 1, 0x0104c3, /* OSAGE CAPITAL LETTER OIN */ + /*3630*/ 0x0104ec, 1, 0x0104c4, /* OSAGE CAPITAL LETTER PA */ + /*3633*/ 0x0104ed, 1, 0x0104c5, /* OSAGE CAPITAL LETTER EHPA */ + /*3636*/ 0x0104ee, 1, 0x0104c6, /* OSAGE CAPITAL LETTER SA */ + /*3639*/ 0x0104ef, 1, 0x0104c7, /* OSAGE CAPITAL LETTER SHA */ + /*3642*/ 0x0104f0, 1, 0x0104c8, /* OSAGE CAPITAL LETTER TA */ + /*3645*/ 0x0104f1, 1, 0x0104c9, /* OSAGE CAPITAL LETTER EHTA */ + /*3648*/ 0x0104f2, 1, 0x0104ca, /* OSAGE CAPITAL LETTER TSA */ + /*3651*/ 0x0104f3, 1, 0x0104cb, /* OSAGE CAPITAL LETTER EHTSA */ + /*3654*/ 0x0104f4, 1, 0x0104cc, /* OSAGE CAPITAL LETTER TSHA */ + /*3657*/ 0x0104f5, 1, 0x0104cd, /* OSAGE CAPITAL LETTER DHA */ + /*3660*/ 0x0104f6, 1, 0x0104ce, /* OSAGE CAPITAL LETTER U */ + /*3663*/ 0x0104f7, 1, 0x0104cf, /* OSAGE CAPITAL LETTER WA */ + /*3666*/ 0x0104f8, 1, 0x0104d0, /* OSAGE CAPITAL LETTER KHA */ + /*3669*/ 0x0104f9, 1, 0x0104d1, /* OSAGE CAPITAL LETTER GHA */ + /*3672*/ 0x0104fa, 1, 0x0104d2, /* OSAGE CAPITAL LETTER ZA */ + /*3675*/ 0x0104fb, 1, 0x0104d3, /* OSAGE CAPITAL LETTER ZHA */ + /*3678*/ 0x010597, 1, 0x010570, /* VITHKUQI CAPITAL LETTER A */ + /*3681*/ 0x010598, 1, 0x010571, /* VITHKUQI CAPITAL LETTER BBE */ + /*3684*/ 0x010599, 1, 0x010572, /* VITHKUQI CAPITAL LETTER BE */ + /*3687*/ 0x01059a, 1, 0x010573, /* VITHKUQI CAPITAL LETTER CE */ + /*3690*/ 0x01059b, 1, 0x010574, /* VITHKUQI CAPITAL LETTER CHE */ + /*3693*/ 0x01059c, 1, 0x010575, /* VITHKUQI CAPITAL LETTER DE */ + /*3696*/ 0x01059d, 1, 0x010576, /* VITHKUQI CAPITAL LETTER DHE */ + /*3699*/ 0x01059e, 1, 0x010577, /* VITHKUQI CAPITAL LETTER EI */ + /*3702*/ 0x01059f, 1, 0x010578, /* VITHKUQI CAPITAL LETTER E */ + /*3705*/ 0x0105a0, 1, 0x010579, /* VITHKUQI CAPITAL LETTER FE */ + /*3708*/ 0x0105a1, 1, 0x01057a, /* VITHKUQI CAPITAL LETTER GA */ + /*3711*/ 0x0105a3, 1, 0x01057c, /* VITHKUQI CAPITAL LETTER HA */ + /*3714*/ 0x0105a4, 1, 0x01057d, /* VITHKUQI CAPITAL LETTER HHA */ + /*3717*/ 0x0105a5, 1, 0x01057e, /* VITHKUQI CAPITAL LETTER I */ + /*3720*/ 0x0105a6, 1, 0x01057f, /* VITHKUQI CAPITAL LETTER IJE */ + /*3723*/ 0x0105a7, 1, 0x010580, /* VITHKUQI CAPITAL LETTER JE */ + /*3726*/ 0x0105a8, 1, 0x010581, /* VITHKUQI CAPITAL LETTER KA */ + /*3729*/ 0x0105a9, 1, 0x010582, /* VITHKUQI CAPITAL LETTER LA */ + /*3732*/ 0x0105aa, 1, 0x010583, /* VITHKUQI CAPITAL LETTER LLA */ + /*3735*/ 0x0105ab, 1, 0x010584, /* VITHKUQI CAPITAL LETTER ME */ + /*3738*/ 0x0105ac, 1, 0x010585, /* VITHKUQI CAPITAL LETTER NE */ + /*3741*/ 0x0105ad, 1, 0x010586, /* VITHKUQI CAPITAL LETTER NJE */ + /*3744*/ 0x0105ae, 1, 0x010587, /* VITHKUQI CAPITAL LETTER O */ + /*3747*/ 0x0105af, 1, 0x010588, /* VITHKUQI CAPITAL LETTER PE */ + /*3750*/ 0x0105b0, 1, 0x010589, /* VITHKUQI CAPITAL LETTER QA */ + /*3753*/ 0x0105b1, 1, 0x01058a, /* VITHKUQI CAPITAL LETTER RE */ + /*3756*/ 0x0105b3, 1, 0x01058c, /* VITHKUQI CAPITAL LETTER SE */ + /*3759*/ 0x0105b4, 1, 0x01058d, /* VITHKUQI CAPITAL LETTER SHE */ + /*3762*/ 0x0105b5, 1, 0x01058e, /* VITHKUQI CAPITAL LETTER TE */ + /*3765*/ 0x0105b6, 1, 0x01058f, /* VITHKUQI CAPITAL LETTER THE */ + /*3768*/ 0x0105b7, 1, 0x010590, /* VITHKUQI CAPITAL LETTER U */ + /*3771*/ 0x0105b8, 1, 0x010591, /* VITHKUQI CAPITAL LETTER VE */ + /*3774*/ 0x0105b9, 1, 0x010592, /* VITHKUQI CAPITAL LETTER XE */ + /*3777*/ 0x0105bb, 1, 0x010594, /* VITHKUQI CAPITAL LETTER Y */ + /*3780*/ 0x0105bc, 1, 0x010595, /* VITHKUQI CAPITAL LETTER ZE */ + /*3783*/ 0x010cc0, 1, 0x010c80, /* OLD HUNGARIAN CAPITAL LETTER A */ + /*3786*/ 0x010cc1, 1, 0x010c81, /* OLD HUNGARIAN CAPITAL LETTER AA */ + /*3789*/ 0x010cc2, 1, 0x010c82, /* OLD HUNGARIAN CAPITAL LETTER EB */ + /*3792*/ 0x010cc3, 1, 0x010c83, /* OLD HUNGARIAN CAPITAL LETTER AMB */ + /*3795*/ 0x010cc4, 1, 0x010c84, /* OLD HUNGARIAN CAPITAL LETTER EC */ + /*3798*/ 0x010cc5, 1, 0x010c85, /* OLD HUNGARIAN CAPITAL LETTER ENC */ + /*3801*/ 0x010cc6, 1, 0x010c86, /* OLD HUNGARIAN CAPITAL LETTER ECS */ + /*3804*/ 0x010cc7, 1, 0x010c87, /* OLD HUNGARIAN CAPITAL LETTER ED */ + /*3807*/ 0x010cc8, 1, 0x010c88, /* OLD HUNGARIAN CAPITAL LETTER AND */ + /*3810*/ 0x010cc9, 1, 0x010c89, /* OLD HUNGARIAN CAPITAL LETTER E */ + /*3813*/ 0x010cca, 1, 0x010c8a, /* OLD HUNGARIAN CAPITAL LETTER CLOS.. */ + /*3816*/ 0x010ccb, 1, 0x010c8b, /* OLD HUNGARIAN CAPITAL LETTER EE */ + /*3819*/ 0x010ccc, 1, 0x010c8c, /* OLD HUNGARIAN CAPITAL LETTER EF */ + /*3822*/ 0x010ccd, 1, 0x010c8d, /* OLD HUNGARIAN CAPITAL LETTER EG */ + /*3825*/ 0x010cce, 1, 0x010c8e, /* OLD HUNGARIAN CAPITAL LETTER EGY */ + /*3828*/ 0x010ccf, 1, 0x010c8f, /* OLD HUNGARIAN CAPITAL LETTER EH */ + /*3831*/ 0x010cd0, 1, 0x010c90, /* OLD HUNGARIAN CAPITAL LETTER I */ + /*3834*/ 0x010cd1, 1, 0x010c91, /* OLD HUNGARIAN CAPITAL LETTER II */ + /*3837*/ 0x010cd2, 1, 0x010c92, /* OLD HUNGARIAN CAPITAL LETTER EJ */ + /*3840*/ 0x010cd3, 1, 0x010c93, /* OLD HUNGARIAN CAPITAL LETTER EK */ + /*3843*/ 0x010cd4, 1, 0x010c94, /* OLD HUNGARIAN CAPITAL LETTER AK */ + /*3846*/ 0x010cd5, 1, 0x010c95, /* OLD HUNGARIAN CAPITAL LETTER UNK */ + /*3849*/ 0x010cd6, 1, 0x010c96, /* OLD HUNGARIAN CAPITAL LETTER EL */ + /*3852*/ 0x010cd7, 1, 0x010c97, /* OLD HUNGARIAN CAPITAL LETTER ELY */ + /*3855*/ 0x010cd8, 1, 0x010c98, /* OLD HUNGARIAN CAPITAL LETTER EM */ + /*3858*/ 0x010cd9, 1, 0x010c99, /* OLD HUNGARIAN CAPITAL LETTER EN */ + /*3861*/ 0x010cda, 1, 0x010c9a, /* OLD HUNGARIAN CAPITAL LETTER ENY */ + /*3864*/ 0x010cdb, 1, 0x010c9b, /* OLD HUNGARIAN CAPITAL LETTER O */ + /*3867*/ 0x010cdc, 1, 0x010c9c, /* OLD HUNGARIAN CAPITAL LETTER OO */ + /*3870*/ 0x010cdd, 1, 0x010c9d, /* OLD HUNGARIAN CAPITAL LETTER NIKO.. */ + /*3873*/ 0x010cde, 1, 0x010c9e, /* OLD HUNGARIAN CAPITAL LETTER RUDI.. */ + /*3876*/ 0x010cdf, 1, 0x010c9f, /* OLD HUNGARIAN CAPITAL LETTER OEE */ + /*3879*/ 0x010ce0, 1, 0x010ca0, /* OLD HUNGARIAN CAPITAL LETTER EP */ + /*3882*/ 0x010ce1, 1, 0x010ca1, /* OLD HUNGARIAN CAPITAL LETTER EMP */ + /*3885*/ 0x010ce2, 1, 0x010ca2, /* OLD HUNGARIAN CAPITAL LETTER ER */ + /*3888*/ 0x010ce3, 1, 0x010ca3, /* OLD HUNGARIAN CAPITAL LETTER SHOR.. */ + /*3891*/ 0x010ce4, 1, 0x010ca4, /* OLD HUNGARIAN CAPITAL LETTER ES */ + /*3894*/ 0x010ce5, 1, 0x010ca5, /* OLD HUNGARIAN CAPITAL LETTER ESZ */ + /*3897*/ 0x010ce6, 1, 0x010ca6, /* OLD HUNGARIAN CAPITAL LETTER ET */ + /*3900*/ 0x010ce7, 1, 0x010ca7, /* OLD HUNGARIAN CAPITAL LETTER ENT */ + /*3903*/ 0x010ce8, 1, 0x010ca8, /* OLD HUNGARIAN CAPITAL LETTER ETY */ + /*3906*/ 0x010ce9, 1, 0x010ca9, /* OLD HUNGARIAN CAPITAL LETTER ECH */ + /*3909*/ 0x010cea, 1, 0x010caa, /* OLD HUNGARIAN CAPITAL LETTER U */ + /*3912*/ 0x010ceb, 1, 0x010cab, /* OLD HUNGARIAN CAPITAL LETTER UU */ + /*3915*/ 0x010cec, 1, 0x010cac, /* OLD HUNGARIAN CAPITAL LETTER NIKO.. */ + /*3918*/ 0x010ced, 1, 0x010cad, /* OLD HUNGARIAN CAPITAL LETTER RUDI.. */ + /*3921*/ 0x010cee, 1, 0x010cae, /* OLD HUNGARIAN CAPITAL LETTER EV */ + /*3924*/ 0x010cef, 1, 0x010caf, /* OLD HUNGARIAN CAPITAL LETTER EZ */ + /*3927*/ 0x010cf0, 1, 0x010cb0, /* OLD HUNGARIAN CAPITAL LETTER EZS */ + /*3930*/ 0x010cf1, 1, 0x010cb1, /* OLD HUNGARIAN CAPITAL LETTER ENT-.. */ + /*3933*/ 0x010cf2, 1, 0x010cb2, /* OLD HUNGARIAN CAPITAL LETTER US */ + /*3936*/ 0x010d70, 1, 0x010d50, /* GARAY CAPITAL LETTER A */ + /*3939*/ 0x010d71, 1, 0x010d51, /* GARAY CAPITAL LETTER CA */ + /*3942*/ 0x010d72, 1, 0x010d52, /* GARAY CAPITAL LETTER MA */ + /*3945*/ 0x010d73, 1, 0x010d53, /* GARAY CAPITAL LETTER KA */ + /*3948*/ 0x010d74, 1, 0x010d54, /* GARAY CAPITAL LETTER BA */ + /*3951*/ 0x010d75, 1, 0x010d55, /* GARAY CAPITAL LETTER JA */ + /*3954*/ 0x010d76, 1, 0x010d56, /* GARAY CAPITAL LETTER SA */ + /*3957*/ 0x010d77, 1, 0x010d57, /* GARAY CAPITAL LETTER WA */ + /*3960*/ 0x010d78, 1, 0x010d58, /* GARAY CAPITAL LETTER LA */ + /*3963*/ 0x010d79, 1, 0x010d59, /* GARAY CAPITAL LETTER GA */ + /*3966*/ 0x010d7a, 1, 0x010d5a, /* GARAY CAPITAL LETTER DA */ + /*3969*/ 0x010d7b, 1, 0x010d5b, /* GARAY CAPITAL LETTER XA */ + /*3972*/ 0x010d7c, 1, 0x010d5c, /* GARAY CAPITAL LETTER YA */ + /*3975*/ 0x010d7d, 1, 0x010d5d, /* GARAY CAPITAL LETTER TA */ + /*3978*/ 0x010d7e, 1, 0x010d5e, /* GARAY CAPITAL LETTER RA */ + /*3981*/ 0x010d7f, 1, 0x010d5f, /* GARAY CAPITAL LETTER NYA */ + /*3984*/ 0x010d80, 1, 0x010d60, /* GARAY CAPITAL LETTER FA */ + /*3987*/ 0x010d81, 1, 0x010d61, /* GARAY CAPITAL LETTER NA */ + /*3990*/ 0x010d82, 1, 0x010d62, /* GARAY CAPITAL LETTER PA */ + /*3993*/ 0x010d83, 1, 0x010d63, /* GARAY CAPITAL LETTER HA */ + /*3996*/ 0x010d84, 1, 0x010d64, /* GARAY CAPITAL LETTER OLD KA */ + /*3999*/ 0x010d85, 1, 0x010d65, /* GARAY CAPITAL LETTER OLD NA */ + /*4002*/ 0x0118c0, 1, 0x0118a0, /* WARANG CITI CAPITAL LETTER NGAA */ + /*4005*/ 0x0118c1, 1, 0x0118a1, /* WARANG CITI CAPITAL LETTER A */ + /*4008*/ 0x0118c2, 1, 0x0118a2, /* WARANG CITI CAPITAL LETTER WI */ + /*4011*/ 0x0118c3, 1, 0x0118a3, /* WARANG CITI CAPITAL LETTER YU */ + /*4014*/ 0x0118c4, 1, 0x0118a4, /* WARANG CITI CAPITAL LETTER YA */ + /*4017*/ 0x0118c5, 1, 0x0118a5, /* WARANG CITI CAPITAL LETTER YO */ + /*4020*/ 0x0118c6, 1, 0x0118a6, /* WARANG CITI CAPITAL LETTER II */ + /*4023*/ 0x0118c7, 1, 0x0118a7, /* WARANG CITI CAPITAL LETTER UU */ + /*4026*/ 0x0118c8, 1, 0x0118a8, /* WARANG CITI CAPITAL LETTER E */ + /*4029*/ 0x0118c9, 1, 0x0118a9, /* WARANG CITI CAPITAL LETTER O */ + /*4032*/ 0x0118ca, 1, 0x0118aa, /* WARANG CITI CAPITAL LETTER ANG */ + /*4035*/ 0x0118cb, 1, 0x0118ab, /* WARANG CITI CAPITAL LETTER GA */ + /*4038*/ 0x0118cc, 1, 0x0118ac, /* WARANG CITI CAPITAL LETTER KO */ + /*4041*/ 0x0118cd, 1, 0x0118ad, /* WARANG CITI CAPITAL LETTER ENY */ + /*4044*/ 0x0118ce, 1, 0x0118ae, /* WARANG CITI CAPITAL LETTER YUJ */ + /*4047*/ 0x0118cf, 1, 0x0118af, /* WARANG CITI CAPITAL LETTER UC */ + /*4050*/ 0x0118d0, 1, 0x0118b0, /* WARANG CITI CAPITAL LETTER ENN */ + /*4053*/ 0x0118d1, 1, 0x0118b1, /* WARANG CITI CAPITAL LETTER ODD */ + /*4056*/ 0x0118d2, 1, 0x0118b2, /* WARANG CITI CAPITAL LETTER TTE */ + /*4059*/ 0x0118d3, 1, 0x0118b3, /* WARANG CITI CAPITAL LETTER NUNG */ + /*4062*/ 0x0118d4, 1, 0x0118b4, /* WARANG CITI CAPITAL LETTER DA */ + /*4065*/ 0x0118d5, 1, 0x0118b5, /* WARANG CITI CAPITAL LETTER AT */ + /*4068*/ 0x0118d6, 1, 0x0118b6, /* WARANG CITI CAPITAL LETTER AM */ + /*4071*/ 0x0118d7, 1, 0x0118b7, /* WARANG CITI CAPITAL LETTER BU */ + /*4074*/ 0x0118d8, 1, 0x0118b8, /* WARANG CITI CAPITAL LETTER PU */ + /*4077*/ 0x0118d9, 1, 0x0118b9, /* WARANG CITI CAPITAL LETTER HIYO */ + /*4080*/ 0x0118da, 1, 0x0118ba, /* WARANG CITI CAPITAL LETTER HOLO */ + /*4083*/ 0x0118db, 1, 0x0118bb, /* WARANG CITI CAPITAL LETTER HORR */ + /*4086*/ 0x0118dc, 1, 0x0118bc, /* WARANG CITI CAPITAL LETTER HAR */ + /*4089*/ 0x0118dd, 1, 0x0118bd, /* WARANG CITI CAPITAL LETTER SSUU */ + /*4092*/ 0x0118de, 1, 0x0118be, /* WARANG CITI CAPITAL LETTER SII */ + /*4095*/ 0x0118df, 1, 0x0118bf, /* WARANG CITI CAPITAL LETTER VIYO */ + /*4098*/ 0x016e60, 1, 0x016e40, /* MEDEFAIDRIN CAPITAL LETTER M */ + /*4101*/ 0x016e61, 1, 0x016e41, /* MEDEFAIDRIN CAPITAL LETTER S */ + /*4104*/ 0x016e62, 1, 0x016e42, /* MEDEFAIDRIN CAPITAL LETTER V */ + /*4107*/ 0x016e63, 1, 0x016e43, /* MEDEFAIDRIN CAPITAL LETTER W */ + /*4110*/ 0x016e64, 1, 0x016e44, /* MEDEFAIDRIN CAPITAL LETTER ATIU */ + /*4113*/ 0x016e65, 1, 0x016e45, /* MEDEFAIDRIN CAPITAL LETTER Z */ + /*4116*/ 0x016e66, 1, 0x016e46, /* MEDEFAIDRIN CAPITAL LETTER KP */ + /*4119*/ 0x016e67, 1, 0x016e47, /* MEDEFAIDRIN CAPITAL LETTER P */ + /*4122*/ 0x016e68, 1, 0x016e48, /* MEDEFAIDRIN CAPITAL LETTER T */ + /*4125*/ 0x016e69, 1, 0x016e49, /* MEDEFAIDRIN CAPITAL LETTER G */ + /*4128*/ 0x016e6a, 1, 0x016e4a, /* MEDEFAIDRIN CAPITAL LETTER F */ + /*4131*/ 0x016e6b, 1, 0x016e4b, /* MEDEFAIDRIN CAPITAL LETTER I */ + /*4134*/ 0x016e6c, 1, 0x016e4c, /* MEDEFAIDRIN CAPITAL LETTER K */ + /*4137*/ 0x016e6d, 1, 0x016e4d, /* MEDEFAIDRIN CAPITAL LETTER A */ + /*4140*/ 0x016e6e, 1, 0x016e4e, /* MEDEFAIDRIN CAPITAL LETTER J */ + /*4143*/ 0x016e6f, 1, 0x016e4f, /* MEDEFAIDRIN CAPITAL LETTER E */ + /*4146*/ 0x016e70, 1, 0x016e50, /* MEDEFAIDRIN CAPITAL LETTER B */ + /*4149*/ 0x016e71, 1, 0x016e51, /* MEDEFAIDRIN CAPITAL LETTER C */ + /*4152*/ 0x016e72, 1, 0x016e52, /* MEDEFAIDRIN CAPITAL LETTER U */ + /*4155*/ 0x016e73, 1, 0x016e53, /* MEDEFAIDRIN CAPITAL LETTER YU */ + /*4158*/ 0x016e74, 1, 0x016e54, /* MEDEFAIDRIN CAPITAL LETTER L */ + /*4161*/ 0x016e75, 1, 0x016e55, /* MEDEFAIDRIN CAPITAL LETTER Q */ + /*4164*/ 0x016e76, 1, 0x016e56, /* MEDEFAIDRIN CAPITAL LETTER HP */ + /*4167*/ 0x016e77, 1, 0x016e57, /* MEDEFAIDRIN CAPITAL LETTER NY */ + /*4170*/ 0x016e78, 1, 0x016e58, /* MEDEFAIDRIN CAPITAL LETTER X */ + /*4173*/ 0x016e79, 1, 0x016e59, /* MEDEFAIDRIN CAPITAL LETTER D */ + /*4176*/ 0x016e7a, 1, 0x016e5a, /* MEDEFAIDRIN CAPITAL LETTER OE */ + /*4179*/ 0x016e7b, 1, 0x016e5b, /* MEDEFAIDRIN CAPITAL LETTER N */ + /*4182*/ 0x016e7c, 1, 0x016e5c, /* MEDEFAIDRIN CAPITAL LETTER R */ + /*4185*/ 0x016e7d, 1, 0x016e5d, /* MEDEFAIDRIN CAPITAL LETTER O */ + /*4188*/ 0x016e7e, 1, 0x016e5e, /* MEDEFAIDRIN CAPITAL LETTER AI */ + /*4191*/ 0x016e7f, 1, 0x016e5f, /* MEDEFAIDRIN CAPITAL LETTER Y */ + /*4194*/ 0x01e922, 1, 0x01e900, /* ADLAM CAPITAL LETTER ALIF */ + /*4197*/ 0x01e923, 1, 0x01e901, /* ADLAM CAPITAL LETTER DAALI */ + /*4200*/ 0x01e924, 1, 0x01e902, /* ADLAM CAPITAL LETTER LAAM */ + /*4203*/ 0x01e925, 1, 0x01e903, /* ADLAM CAPITAL LETTER MIIM */ + /*4206*/ 0x01e926, 1, 0x01e904, /* ADLAM CAPITAL LETTER BA */ + /*4209*/ 0x01e927, 1, 0x01e905, /* ADLAM CAPITAL LETTER SINNYIIYHE */ + /*4212*/ 0x01e928, 1, 0x01e906, /* ADLAM CAPITAL LETTER PE */ + /*4215*/ 0x01e929, 1, 0x01e907, /* ADLAM CAPITAL LETTER BHE */ + /*4218*/ 0x01e92a, 1, 0x01e908, /* ADLAM CAPITAL LETTER RA */ + /*4221*/ 0x01e92b, 1, 0x01e909, /* ADLAM CAPITAL LETTER E */ + /*4224*/ 0x01e92c, 1, 0x01e90a, /* ADLAM CAPITAL LETTER FA */ + /*4227*/ 0x01e92d, 1, 0x01e90b, /* ADLAM CAPITAL LETTER I */ + /*4230*/ 0x01e92e, 1, 0x01e90c, /* ADLAM CAPITAL LETTER O */ + /*4233*/ 0x01e92f, 1, 0x01e90d, /* ADLAM CAPITAL LETTER DHA */ + /*4236*/ 0x01e930, 1, 0x01e90e, /* ADLAM CAPITAL LETTER YHE */ + /*4239*/ 0x01e931, 1, 0x01e90f, /* ADLAM CAPITAL LETTER WAW */ + /*4242*/ 0x01e932, 1, 0x01e910, /* ADLAM CAPITAL LETTER NUN */ + /*4245*/ 0x01e933, 1, 0x01e911, /* ADLAM CAPITAL LETTER KAF */ + /*4248*/ 0x01e934, 1, 0x01e912, /* ADLAM CAPITAL LETTER YA */ + /*4251*/ 0x01e935, 1, 0x01e913, /* ADLAM CAPITAL LETTER U */ + /*4254*/ 0x01e936, 1, 0x01e914, /* ADLAM CAPITAL LETTER JIIM */ + /*4257*/ 0x01e937, 1, 0x01e915, /* ADLAM CAPITAL LETTER CHI */ + /*4260*/ 0x01e938, 1, 0x01e916, /* ADLAM CAPITAL LETTER HA */ + /*4263*/ 0x01e939, 1, 0x01e917, /* ADLAM CAPITAL LETTER QAAF */ + /*4266*/ 0x01e93a, 1, 0x01e918, /* ADLAM CAPITAL LETTER GA */ + /*4269*/ 0x01e93b, 1, 0x01e919, /* ADLAM CAPITAL LETTER NYA */ + /*4272*/ 0x01e93c, 1, 0x01e91a, /* ADLAM CAPITAL LETTER TU */ + /*4275*/ 0x01e93d, 1, 0x01e91b, /* ADLAM CAPITAL LETTER NHA */ + /*4278*/ 0x01e93e, 1, 0x01e91c, /* ADLAM CAPITAL LETTER VA */ + /*4281*/ 0x01e93f, 1, 0x01e91d, /* ADLAM CAPITAL LETTER KHA */ + /*4284*/ 0x01e940, 1, 0x01e91e, /* ADLAM CAPITAL LETTER GBE */ + /*4287*/ 0x01e941, 1, 0x01e91f, /* ADLAM CAPITAL LETTER ZAL */ + /*4290*/ 0x01e942, 1, 0x01e920, /* ADLAM CAPITAL LETTER KPO */ + /*4293*/ 0x01e943, 1, 0x01e921, /* ADLAM CAPITAL LETTER SHA */ +#define FOLDS1_NORMAL_END_INDEX 4296 + /* ----- LOCALE ----- */ + /*4296*/ 0x0069, 1, 0x0049, /* LATIN CAPITAL LETTER I */ +#define FOLDS1_END_INDEX 4299 +}; + +OnigCodePoint OnigUnicodeFolds2[] = { + /* LATIN SMALL LETTER A WITH RIGHT HALF RING */ + /* 0*/ 0x0061, 0x02be, 1, 0x1e9a, + /* LATIN SMALL LIGATURE FF */ + /* 4*/ 0x0066, 0x0066, 1, 0xfb00, + /* LATIN SMALL LIGATURE FI */ + /* 8*/ 0x0066, 0x0069, 1, 0xfb01, + /* LATIN SMALL LIGATURE FL */ + /* 12*/ 0x0066, 0x006c, 1, 0xfb02, + /* LATIN SMALL LETTER H WITH LINE BELOW */ + /* 16*/ 0x0068, 0x0331, 1, 0x1e96, + /* LATIN SMALL LETTER J WITH CARON */ + /* 20*/ 0x006a, 0x030c, 1, 0x01f0, + /* LATIN SMALL LETTER SHARP S */ + /* 24*/ 0x0073, 0x0073, 2, 0x00df, 0x1e9e, + /* LATIN SMALL LIGATURE LONG S T */ + /* 29*/ 0x0073, 0x0074, 2, 0xfb05, 0xfb06, + /* LATIN SMALL LETTER T WITH DIAERESIS */ + /* 34*/ 0x0074, 0x0308, 1, 0x1e97, + /* LATIN SMALL LETTER W WITH RING ABOVE */ + /* 38*/ 0x0077, 0x030a, 1, 0x1e98, + /* LATIN SMALL LETTER Y WITH RING ABOVE */ + /* 42*/ 0x0079, 0x030a, 1, 0x1e99, + /* LATIN SMALL LETTER N PRECEDED BY APOSTROPHE */ + /* 46*/ 0x02bc, 0x006e, 1, 0x0149, + /* GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI */ + /* 50*/ 0x03ac, 0x03b9, 1, 0x1fb4, + /* GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI */ + /* 54*/ 0x03ae, 0x03b9, 1, 0x1fc4, + /* GREEK SMALL LETTER ALPHA WITH PERISPOMENI */ + /* 58*/ 0x03b1, 0x0342, 1, 0x1fb6, + /* GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI */ + /* 62*/ 0x03b1, 0x03b9, 2, 0x1fb3, 0x1fbc, + /* GREEK SMALL LETTER ETA WITH PERISPOMENI */ + /* 67*/ 0x03b7, 0x0342, 1, 0x1fc6, + /* GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI */ + /* 71*/ 0x03b7, 0x03b9, 2, 0x1fc3, 0x1fcc, + /* GREEK SMALL LETTER IOTA WITH PERISPOMENI */ + /* 76*/ 0x03b9, 0x0342, 1, 0x1fd6, + /* GREEK SMALL LETTER RHO WITH PSILI */ + /* 80*/ 0x03c1, 0x0313, 1, 0x1fe4, + /* GREEK SMALL LETTER UPSILON WITH PSILI */ + /* 84*/ 0x03c5, 0x0313, 1, 0x1f50, + /* GREEK SMALL LETTER UPSILON WITH PERISPOMENI */ + /* 88*/ 0x03c5, 0x0342, 1, 0x1fe6, + /* GREEK SMALL LETTER OMEGA WITH PERISPOMENI */ + /* 92*/ 0x03c9, 0x0342, 1, 0x1ff6, + /* GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI */ + /* 96*/ 0x03c9, 0x03b9, 2, 0x1ff3, 0x1ffc, + /* GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI */ + /* 101*/ 0x03ce, 0x03b9, 1, 0x1ff4, + /* ARMENIAN SMALL LIGATURE ECH YIWN */ + /* 105*/ 0x0565, 0x0582, 1, 0x0587, + /* ARMENIAN SMALL LIGATURE MEN ECH */ + /* 109*/ 0x0574, 0x0565, 1, 0xfb14, + /* ARMENIAN SMALL LIGATURE MEN INI */ + /* 113*/ 0x0574, 0x056b, 1, 0xfb15, + /* ARMENIAN SMALL LIGATURE MEN XEH */ + /* 117*/ 0x0574, 0x056d, 1, 0xfb17, + /* ARMENIAN SMALL LIGATURE MEN NOW */ + /* 121*/ 0x0574, 0x0576, 1, 0xfb13, + /* ARMENIAN SMALL LIGATURE VEW NOW */ + /* 125*/ 0x057e, 0x0576, 1, 0xfb16, + /* GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI */ + /* 129*/ 0x1f00, 0x03b9, 2, 0x1f80, 0x1f88, + /* GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI */ + /* 134*/ 0x1f01, 0x03b9, 2, 0x1f81, 0x1f89, + /* GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI */ + /* 139*/ 0x1f02, 0x03b9, 2, 0x1f82, 0x1f8a, + /* GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI */ + /* 144*/ 0x1f03, 0x03b9, 2, 0x1f83, 0x1f8b, + /* GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI */ + /* 149*/ 0x1f04, 0x03b9, 2, 0x1f84, 0x1f8c, + /* GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI */ + /* 154*/ 0x1f05, 0x03b9, 2, 0x1f85, 0x1f8d, + /* GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI */ + /* 159*/ 0x1f06, 0x03b9, 2, 0x1f86, 0x1f8e, + /* GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI */ + /* 164*/ 0x1f07, 0x03b9, 2, 0x1f87, 0x1f8f, + /* GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI */ + /* 169*/ 0x1f20, 0x03b9, 2, 0x1f90, 0x1f98, + /* GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI */ + /* 174*/ 0x1f21, 0x03b9, 2, 0x1f91, 0x1f99, + /* GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI */ + /* 179*/ 0x1f22, 0x03b9, 2, 0x1f92, 0x1f9a, + /* GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI */ + /* 184*/ 0x1f23, 0x03b9, 2, 0x1f93, 0x1f9b, + /* GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI */ + /* 189*/ 0x1f24, 0x03b9, 2, 0x1f94, 0x1f9c, + /* GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI */ + /* 194*/ 0x1f25, 0x03b9, 2, 0x1f95, 0x1f9d, + /* GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI */ + /* 199*/ 0x1f26, 0x03b9, 2, 0x1f96, 0x1f9e, + /* GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI */ + /* 204*/ 0x1f27, 0x03b9, 2, 0x1f97, 0x1f9f, + /* GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI */ + /* 209*/ 0x1f60, 0x03b9, 2, 0x1fa0, 0x1fa8, + /* GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI */ + /* 214*/ 0x1f61, 0x03b9, 2, 0x1fa1, 0x1fa9, + /* GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI */ + /* 219*/ 0x1f62, 0x03b9, 2, 0x1fa2, 0x1faa, + /* GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI */ + /* 224*/ 0x1f63, 0x03b9, 2, 0x1fa3, 0x1fab, + /* GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI */ + /* 229*/ 0x1f64, 0x03b9, 2, 0x1fa4, 0x1fac, + /* GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI */ + /* 234*/ 0x1f65, 0x03b9, 2, 0x1fa5, 0x1fad, + /* GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI */ + /* 239*/ 0x1f66, 0x03b9, 2, 0x1fa6, 0x1fae, + /* GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI */ + /* 244*/ 0x1f67, 0x03b9, 2, 0x1fa7, 0x1faf, + /* GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI */ + /* 249*/ 0x1f70, 0x03b9, 1, 0x1fb2, + /* GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI */ + /* 253*/ 0x1f74, 0x03b9, 1, 0x1fc2, + /* GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI */ + /* 257*/ 0x1f7c, 0x03b9, 1, 0x1ff2, +#define FOLDS2_NORMAL_END_INDEX 261 + /* ----- LOCALE ----- */ + /* LATIN CAPITAL LETTER I WITH DOT ABOVE */ + /* 261*/ 0x0069, 0x0307, 1, 0x0130, +#define FOLDS2_END_INDEX 265 +}; + +OnigCodePoint OnigUnicodeFolds3[] = { + /* LATIN SMALL LIGATURE FFI */ + /* 0*/ 0x0066, 0x0066, 0x0069, 1, 0xfb03, + /* LATIN SMALL LIGATURE FFL */ + /* 5*/ 0x0066, 0x0066, 0x006c, 1, 0xfb04, + /* GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI */ + /* 10*/ 0x03b1, 0x0342, 0x03b9, 1, 0x1fb7, + /* GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI */ + /* 15*/ 0x03b7, 0x0342, 0x03b9, 1, 0x1fc7, + /* GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA */ + /* 20*/ 0x03b9, 0x0308, 0x0300, 1, 0x1fd2, + /* GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS */ + /* 25*/ 0x03b9, 0x0308, 0x0301, 2, 0x0390, 0x1fd3, + /* GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI */ + /* 31*/ 0x03b9, 0x0308, 0x0342, 1, 0x1fd7, + /* GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA */ + /* 36*/ 0x03c5, 0x0308, 0x0300, 1, 0x1fe2, + /* GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS */ + /* 41*/ 0x03c5, 0x0308, 0x0301, 2, 0x03b0, 0x1fe3, + /* GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI */ + /* 47*/ 0x03c5, 0x0308, 0x0342, 1, 0x1fe7, + /* GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA */ + /* 52*/ 0x03c5, 0x0313, 0x0300, 1, 0x1f52, + /* GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA */ + /* 57*/ 0x03c5, 0x0313, 0x0301, 1, 0x1f54, + /* GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI */ + /* 62*/ 0x03c5, 0x0313, 0x0342, 1, 0x1f56, + /* GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI */ + /* 67*/ 0x03c9, 0x0342, 0x03b9, 1, 0x1ff7, +#define FOLDS3_NORMAL_END_INDEX 72 + /* ----- LOCALE ----- */ +#define FOLDS3_END_INDEX 72 +}; diff --git a/vendor/oniguruma/oniguruma/src/unicode_property_data.c b/vendor/oniguruma/oniguruma/src/unicode_property_data.c new file mode 100644 index 0000000..2329f07 --- /dev/null +++ b/vendor/oniguruma/oniguruma/src/unicode_property_data.c @@ -0,0 +1,33930 @@ +/* ANSI-C code produced by gperf version 3.1 */ +/* 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 gperf1.tmp unicode_property_data.gperf */ +/* Computed positions: -k'1-3,5-6,12,16,$' */ + +#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ + && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \ + && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \ + && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \ + && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \ + && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \ + && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \ + && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \ + && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \ + && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \ + && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \ + && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \ + && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \ + && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \ + && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \ + && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \ + && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \ + && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \ + && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \ + && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \ + && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \ + && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \ + && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126)) +/* The character set is not based on ISO-646. */ +#error "gperf generated tables don't work with this execution character set. Please report a bug to ." +#endif + + + +/* Generated by make_unicode_property_data.py. */ + +/*- + * Copyright (c) 2016-2024 K.Kosako + * 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. + */ + + +/* PROPERTY: 'NEWLINE': POSIX [[:NEWLINE:]] */ +static const OnigCodePoint +CR_NEWLINE[] = { 1, +0x000a, 0x000a, +}; /* END of CR_NEWLINE */ + +/* PROPERTY: 'Alpha': POSIX [[:Alpha:]] */ +static const OnigCodePoint +CR_Alpha[] = { 757, +0x0041, 0x005a, +0x0061, 0x007a, +0x00aa, 0x00aa, +0x00b5, 0x00b5, +0x00ba, 0x00ba, +0x00c0, 0x00d6, +0x00d8, 0x00f6, +0x00f8, 0x02c1, +0x02c6, 0x02d1, +0x02e0, 0x02e4, +0x02ec, 0x02ec, +0x02ee, 0x02ee, +0x0345, 0x0345, +0x0363, 0x0374, +0x0376, 0x0377, +0x037a, 0x037d, +0x037f, 0x037f, +0x0386, 0x0386, +0x0388, 0x038a, +0x038c, 0x038c, +0x038e, 0x03a1, +0x03a3, 0x03f5, +0x03f7, 0x0481, +0x048a, 0x052f, +0x0531, 0x0556, +0x0559, 0x0559, +0x0560, 0x0588, +0x05b0, 0x05bd, +0x05bf, 0x05bf, +0x05c1, 0x05c2, +0x05c4, 0x05c5, +0x05c7, 0x05c7, +0x05d0, 0x05ea, +0x05ef, 0x05f2, +0x0610, 0x061a, +0x0620, 0x0657, +0x0659, 0x065f, +0x066e, 0x06d3, +0x06d5, 0x06dc, +0x06e1, 0x06e8, +0x06ed, 0x06ef, +0x06fa, 0x06fc, +0x06ff, 0x06ff, +0x0710, 0x073f, +0x074d, 0x07b1, +0x07ca, 0x07ea, +0x07f4, 0x07f5, +0x07fa, 0x07fa, +0x0800, 0x0817, +0x081a, 0x082c, +0x0840, 0x0858, +0x0860, 0x086a, +0x0870, 0x0887, +0x0889, 0x088e, +0x0897, 0x0897, +0x08a0, 0x08c9, +0x08d4, 0x08df, +0x08e3, 0x08e9, +0x08f0, 0x093b, +0x093d, 0x094c, +0x094e, 0x0950, +0x0955, 0x0963, +0x0971, 0x0983, +0x0985, 0x098c, +0x098f, 0x0990, +0x0993, 0x09a8, +0x09aa, 0x09b0, +0x09b2, 0x09b2, +0x09b6, 0x09b9, +0x09bd, 0x09c4, +0x09c7, 0x09c8, +0x09cb, 0x09cc, +0x09ce, 0x09ce, +0x09d7, 0x09d7, +0x09dc, 0x09dd, +0x09df, 0x09e3, +0x09f0, 0x09f1, +0x09fc, 0x09fc, +0x0a01, 0x0a03, +0x0a05, 0x0a0a, +0x0a0f, 0x0a10, +0x0a13, 0x0a28, +0x0a2a, 0x0a30, +0x0a32, 0x0a33, +0x0a35, 0x0a36, +0x0a38, 0x0a39, +0x0a3e, 0x0a42, +0x0a47, 0x0a48, +0x0a4b, 0x0a4c, +0x0a51, 0x0a51, +0x0a59, 0x0a5c, +0x0a5e, 0x0a5e, +0x0a70, 0x0a75, +0x0a81, 0x0a83, +0x0a85, 0x0a8d, +0x0a8f, 0x0a91, +0x0a93, 0x0aa8, +0x0aaa, 0x0ab0, +0x0ab2, 0x0ab3, +0x0ab5, 0x0ab9, +0x0abd, 0x0ac5, +0x0ac7, 0x0ac9, +0x0acb, 0x0acc, +0x0ad0, 0x0ad0, +0x0ae0, 0x0ae3, +0x0af9, 0x0afc, +0x0b01, 0x0b03, +0x0b05, 0x0b0c, +0x0b0f, 0x0b10, +0x0b13, 0x0b28, +0x0b2a, 0x0b30, +0x0b32, 0x0b33, +0x0b35, 0x0b39, +0x0b3d, 0x0b44, +0x0b47, 0x0b48, +0x0b4b, 0x0b4c, +0x0b56, 0x0b57, +0x0b5c, 0x0b5d, +0x0b5f, 0x0b63, +0x0b71, 0x0b71, +0x0b82, 0x0b83, +0x0b85, 0x0b8a, +0x0b8e, 0x0b90, +0x0b92, 0x0b95, +0x0b99, 0x0b9a, +0x0b9c, 0x0b9c, +0x0b9e, 0x0b9f, +0x0ba3, 0x0ba4, +0x0ba8, 0x0baa, +0x0bae, 0x0bb9, +0x0bbe, 0x0bc2, +0x0bc6, 0x0bc8, +0x0bca, 0x0bcc, +0x0bd0, 0x0bd0, +0x0bd7, 0x0bd7, +0x0c00, 0x0c0c, +0x0c0e, 0x0c10, +0x0c12, 0x0c28, +0x0c2a, 0x0c39, +0x0c3d, 0x0c44, +0x0c46, 0x0c48, +0x0c4a, 0x0c4c, +0x0c55, 0x0c56, +0x0c58, 0x0c5a, +0x0c5d, 0x0c5d, +0x0c60, 0x0c63, +0x0c80, 0x0c83, +0x0c85, 0x0c8c, +0x0c8e, 0x0c90, +0x0c92, 0x0ca8, +0x0caa, 0x0cb3, +0x0cb5, 0x0cb9, +0x0cbd, 0x0cc4, +0x0cc6, 0x0cc8, +0x0cca, 0x0ccc, +0x0cd5, 0x0cd6, +0x0cdd, 0x0cde, +0x0ce0, 0x0ce3, +0x0cf1, 0x0cf3, +0x0d00, 0x0d0c, +0x0d0e, 0x0d10, +0x0d12, 0x0d3a, +0x0d3d, 0x0d44, +0x0d46, 0x0d48, +0x0d4a, 0x0d4c, +0x0d4e, 0x0d4e, +0x0d54, 0x0d57, +0x0d5f, 0x0d63, +0x0d7a, 0x0d7f, +0x0d81, 0x0d83, +0x0d85, 0x0d96, +0x0d9a, 0x0db1, +0x0db3, 0x0dbb, +0x0dbd, 0x0dbd, +0x0dc0, 0x0dc6, +0x0dcf, 0x0dd4, +0x0dd6, 0x0dd6, +0x0dd8, 0x0ddf, +0x0df2, 0x0df3, +0x0e01, 0x0e3a, +0x0e40, 0x0e46, +0x0e4d, 0x0e4d, +0x0e81, 0x0e82, +0x0e84, 0x0e84, +0x0e86, 0x0e8a, +0x0e8c, 0x0ea3, +0x0ea5, 0x0ea5, +0x0ea7, 0x0eb9, +0x0ebb, 0x0ebd, +0x0ec0, 0x0ec4, +0x0ec6, 0x0ec6, +0x0ecd, 0x0ecd, +0x0edc, 0x0edf, +0x0f00, 0x0f00, +0x0f40, 0x0f47, +0x0f49, 0x0f6c, +0x0f71, 0x0f83, +0x0f88, 0x0f97, +0x0f99, 0x0fbc, +0x1000, 0x1036, +0x1038, 0x1038, +0x103b, 0x103f, +0x1050, 0x108f, +0x109a, 0x109d, +0x10a0, 0x10c5, +0x10c7, 0x10c7, +0x10cd, 0x10cd, +0x10d0, 0x10fa, +0x10fc, 0x1248, +0x124a, 0x124d, +0x1250, 0x1256, +0x1258, 0x1258, +0x125a, 0x125d, +0x1260, 0x1288, +0x128a, 0x128d, +0x1290, 0x12b0, +0x12b2, 0x12b5, +0x12b8, 0x12be, +0x12c0, 0x12c0, +0x12c2, 0x12c5, +0x12c8, 0x12d6, +0x12d8, 0x1310, +0x1312, 0x1315, +0x1318, 0x135a, +0x1380, 0x138f, +0x13a0, 0x13f5, +0x13f8, 0x13fd, +0x1401, 0x166c, +0x166f, 0x167f, +0x1681, 0x169a, +0x16a0, 0x16ea, +0x16ee, 0x16f8, +0x1700, 0x1713, +0x171f, 0x1733, +0x1740, 0x1753, +0x1760, 0x176c, +0x176e, 0x1770, +0x1772, 0x1773, +0x1780, 0x17b3, +0x17b6, 0x17c8, +0x17d7, 0x17d7, +0x17dc, 0x17dc, +0x1820, 0x1878, +0x1880, 0x18aa, +0x18b0, 0x18f5, +0x1900, 0x191e, +0x1920, 0x192b, +0x1930, 0x1938, +0x1950, 0x196d, +0x1970, 0x1974, +0x1980, 0x19ab, +0x19b0, 0x19c9, +0x1a00, 0x1a1b, +0x1a20, 0x1a5e, +0x1a61, 0x1a74, +0x1aa7, 0x1aa7, +0x1abf, 0x1ac0, +0x1acc, 0x1ace, +0x1b00, 0x1b33, +0x1b35, 0x1b43, +0x1b45, 0x1b4c, +0x1b80, 0x1ba9, +0x1bac, 0x1baf, +0x1bba, 0x1be5, +0x1be7, 0x1bf1, +0x1c00, 0x1c36, +0x1c4d, 0x1c4f, +0x1c5a, 0x1c7d, +0x1c80, 0x1c8a, +0x1c90, 0x1cba, +0x1cbd, 0x1cbf, +0x1ce9, 0x1cec, +0x1cee, 0x1cf3, +0x1cf5, 0x1cf6, +0x1cfa, 0x1cfa, +0x1d00, 0x1dbf, +0x1dd3, 0x1df4, +0x1e00, 0x1f15, +0x1f18, 0x1f1d, +0x1f20, 0x1f45, +0x1f48, 0x1f4d, +0x1f50, 0x1f57, +0x1f59, 0x1f59, +0x1f5b, 0x1f5b, +0x1f5d, 0x1f5d, +0x1f5f, 0x1f7d, +0x1f80, 0x1fb4, +0x1fb6, 0x1fbc, +0x1fbe, 0x1fbe, +0x1fc2, 0x1fc4, +0x1fc6, 0x1fcc, +0x1fd0, 0x1fd3, +0x1fd6, 0x1fdb, +0x1fe0, 0x1fec, +0x1ff2, 0x1ff4, +0x1ff6, 0x1ffc, +0x2071, 0x2071, +0x207f, 0x207f, +0x2090, 0x209c, +0x2102, 0x2102, +0x2107, 0x2107, +0x210a, 0x2113, +0x2115, 0x2115, +0x2119, 0x211d, +0x2124, 0x2124, +0x2126, 0x2126, +0x2128, 0x2128, +0x212a, 0x212d, +0x212f, 0x2139, +0x213c, 0x213f, +0x2145, 0x2149, +0x214e, 0x214e, +0x2160, 0x2188, +0x24b6, 0x24e9, +0x2c00, 0x2ce4, +0x2ceb, 0x2cee, +0x2cf2, 0x2cf3, +0x2d00, 0x2d25, +0x2d27, 0x2d27, +0x2d2d, 0x2d2d, +0x2d30, 0x2d67, +0x2d6f, 0x2d6f, +0x2d80, 0x2d96, +0x2da0, 0x2da6, +0x2da8, 0x2dae, +0x2db0, 0x2db6, +0x2db8, 0x2dbe, +0x2dc0, 0x2dc6, +0x2dc8, 0x2dce, +0x2dd0, 0x2dd6, +0x2dd8, 0x2dde, +0x2de0, 0x2dff, +0x2e2f, 0x2e2f, +0x3005, 0x3007, +0x3021, 0x3029, +0x3031, 0x3035, +0x3038, 0x303c, +0x3041, 0x3096, +0x309d, 0x309f, +0x30a1, 0x30fa, +0x30fc, 0x30ff, +0x3105, 0x312f, +0x3131, 0x318e, +0x31a0, 0x31bf, +0x31f0, 0x31ff, +0x3400, 0x4dbf, +0x4e00, 0xa48c, +0xa4d0, 0xa4fd, +0xa500, 0xa60c, +0xa610, 0xa61f, +0xa62a, 0xa62b, +0xa640, 0xa66e, +0xa674, 0xa67b, +0xa67f, 0xa6ef, +0xa717, 0xa71f, +0xa722, 0xa788, +0xa78b, 0xa7cd, +0xa7d0, 0xa7d1, +0xa7d3, 0xa7d3, +0xa7d5, 0xa7dc, +0xa7f2, 0xa805, +0xa807, 0xa827, +0xa840, 0xa873, +0xa880, 0xa8c3, +0xa8c5, 0xa8c5, +0xa8f2, 0xa8f7, +0xa8fb, 0xa8fb, +0xa8fd, 0xa8ff, +0xa90a, 0xa92a, +0xa930, 0xa952, +0xa960, 0xa97c, +0xa980, 0xa9b2, +0xa9b4, 0xa9bf, +0xa9cf, 0xa9cf, +0xa9e0, 0xa9ef, +0xa9fa, 0xa9fe, +0xaa00, 0xaa36, +0xaa40, 0xaa4d, +0xaa60, 0xaa76, +0xaa7a, 0xaabe, +0xaac0, 0xaac0, +0xaac2, 0xaac2, +0xaadb, 0xaadd, +0xaae0, 0xaaef, +0xaaf2, 0xaaf5, +0xab01, 0xab06, +0xab09, 0xab0e, +0xab11, 0xab16, +0xab20, 0xab26, +0xab28, 0xab2e, +0xab30, 0xab5a, +0xab5c, 0xab69, +0xab70, 0xabea, +0xac00, 0xd7a3, +0xd7b0, 0xd7c6, +0xd7cb, 0xd7fb, +0xf900, 0xfa6d, +0xfa70, 0xfad9, +0xfb00, 0xfb06, +0xfb13, 0xfb17, +0xfb1d, 0xfb28, +0xfb2a, 0xfb36, +0xfb38, 0xfb3c, +0xfb3e, 0xfb3e, +0xfb40, 0xfb41, +0xfb43, 0xfb44, +0xfb46, 0xfbb1, +0xfbd3, 0xfd3d, +0xfd50, 0xfd8f, +0xfd92, 0xfdc7, +0xfdf0, 0xfdfb, +0xfe70, 0xfe74, +0xfe76, 0xfefc, +0xff21, 0xff3a, +0xff41, 0xff5a, +0xff66, 0xffbe, +0xffc2, 0xffc7, +0xffca, 0xffcf, +0xffd2, 0xffd7, +0xffda, 0xffdc, +0x10000, 0x1000b, +0x1000d, 0x10026, +0x10028, 0x1003a, +0x1003c, 0x1003d, +0x1003f, 0x1004d, +0x10050, 0x1005d, +0x10080, 0x100fa, +0x10140, 0x10174, +0x10280, 0x1029c, +0x102a0, 0x102d0, +0x10300, 0x1031f, +0x1032d, 0x1034a, +0x10350, 0x1037a, +0x10380, 0x1039d, +0x103a0, 0x103c3, +0x103c8, 0x103cf, +0x103d1, 0x103d5, +0x10400, 0x1049d, +0x104b0, 0x104d3, +0x104d8, 0x104fb, +0x10500, 0x10527, +0x10530, 0x10563, +0x10570, 0x1057a, +0x1057c, 0x1058a, +0x1058c, 0x10592, +0x10594, 0x10595, +0x10597, 0x105a1, +0x105a3, 0x105b1, +0x105b3, 0x105b9, +0x105bb, 0x105bc, +0x105c0, 0x105f3, +0x10600, 0x10736, +0x10740, 0x10755, +0x10760, 0x10767, +0x10780, 0x10785, +0x10787, 0x107b0, +0x107b2, 0x107ba, +0x10800, 0x10805, +0x10808, 0x10808, +0x1080a, 0x10835, +0x10837, 0x10838, +0x1083c, 0x1083c, +0x1083f, 0x10855, +0x10860, 0x10876, +0x10880, 0x1089e, +0x108e0, 0x108f2, +0x108f4, 0x108f5, +0x10900, 0x10915, +0x10920, 0x10939, +0x10980, 0x109b7, +0x109be, 0x109bf, +0x10a00, 0x10a03, +0x10a05, 0x10a06, +0x10a0c, 0x10a13, +0x10a15, 0x10a17, +0x10a19, 0x10a35, +0x10a60, 0x10a7c, +0x10a80, 0x10a9c, +0x10ac0, 0x10ac7, +0x10ac9, 0x10ae4, +0x10b00, 0x10b35, +0x10b40, 0x10b55, +0x10b60, 0x10b72, +0x10b80, 0x10b91, +0x10c00, 0x10c48, +0x10c80, 0x10cb2, +0x10cc0, 0x10cf2, +0x10d00, 0x10d27, +0x10d4a, 0x10d65, +0x10d69, 0x10d69, +0x10d6f, 0x10d85, +0x10e80, 0x10ea9, +0x10eab, 0x10eac, +0x10eb0, 0x10eb1, +0x10ec2, 0x10ec4, +0x10efc, 0x10efc, +0x10f00, 0x10f1c, +0x10f27, 0x10f27, +0x10f30, 0x10f45, +0x10f70, 0x10f81, +0x10fb0, 0x10fc4, +0x10fe0, 0x10ff6, +0x11000, 0x11045, +0x11071, 0x11075, +0x11080, 0x110b8, +0x110c2, 0x110c2, +0x110d0, 0x110e8, +0x11100, 0x11132, +0x11144, 0x11147, +0x11150, 0x11172, +0x11176, 0x11176, +0x11180, 0x111bf, +0x111c1, 0x111c4, +0x111ce, 0x111cf, +0x111da, 0x111da, +0x111dc, 0x111dc, +0x11200, 0x11211, +0x11213, 0x11234, +0x11237, 0x11237, +0x1123e, 0x11241, +0x11280, 0x11286, +0x11288, 0x11288, +0x1128a, 0x1128d, +0x1128f, 0x1129d, +0x1129f, 0x112a8, +0x112b0, 0x112e8, +0x11300, 0x11303, +0x11305, 0x1130c, +0x1130f, 0x11310, +0x11313, 0x11328, +0x1132a, 0x11330, +0x11332, 0x11333, +0x11335, 0x11339, +0x1133d, 0x11344, +0x11347, 0x11348, +0x1134b, 0x1134c, +0x11350, 0x11350, +0x11357, 0x11357, +0x1135d, 0x11363, +0x11380, 0x11389, +0x1138b, 0x1138b, +0x1138e, 0x1138e, +0x11390, 0x113b5, +0x113b7, 0x113c0, +0x113c2, 0x113c2, +0x113c5, 0x113c5, +0x113c7, 0x113ca, +0x113cc, 0x113cd, +0x113d1, 0x113d1, +0x113d3, 0x113d3, +0x11400, 0x11441, +0x11443, 0x11445, +0x11447, 0x1144a, +0x1145f, 0x11461, +0x11480, 0x114c1, +0x114c4, 0x114c5, +0x114c7, 0x114c7, +0x11580, 0x115b5, +0x115b8, 0x115be, +0x115d8, 0x115dd, +0x11600, 0x1163e, +0x11640, 0x11640, +0x11644, 0x11644, +0x11680, 0x116b5, +0x116b8, 0x116b8, +0x11700, 0x1171a, +0x1171d, 0x1172a, +0x11740, 0x11746, +0x11800, 0x11838, +0x118a0, 0x118df, +0x118ff, 0x11906, +0x11909, 0x11909, +0x1190c, 0x11913, +0x11915, 0x11916, +0x11918, 0x11935, +0x11937, 0x11938, +0x1193b, 0x1193c, +0x1193f, 0x11942, +0x119a0, 0x119a7, +0x119aa, 0x119d7, +0x119da, 0x119df, +0x119e1, 0x119e1, +0x119e3, 0x119e4, +0x11a00, 0x11a32, +0x11a35, 0x11a3e, +0x11a50, 0x11a97, +0x11a9d, 0x11a9d, +0x11ab0, 0x11af8, +0x11bc0, 0x11be0, +0x11c00, 0x11c08, +0x11c0a, 0x11c36, +0x11c38, 0x11c3e, +0x11c40, 0x11c40, +0x11c72, 0x11c8f, +0x11c92, 0x11ca7, +0x11ca9, 0x11cb6, +0x11d00, 0x11d06, +0x11d08, 0x11d09, +0x11d0b, 0x11d36, +0x11d3a, 0x11d3a, +0x11d3c, 0x11d3d, +0x11d3f, 0x11d41, +0x11d43, 0x11d43, +0x11d46, 0x11d47, +0x11d60, 0x11d65, +0x11d67, 0x11d68, +0x11d6a, 0x11d8e, +0x11d90, 0x11d91, +0x11d93, 0x11d96, +0x11d98, 0x11d98, +0x11ee0, 0x11ef6, +0x11f00, 0x11f10, +0x11f12, 0x11f3a, +0x11f3e, 0x11f40, +0x11fb0, 0x11fb0, +0x12000, 0x12399, +0x12400, 0x1246e, +0x12480, 0x12543, +0x12f90, 0x12ff0, +0x13000, 0x1342f, +0x13441, 0x13446, +0x13460, 0x143fa, +0x14400, 0x14646, +0x16100, 0x1612e, +0x16800, 0x16a38, +0x16a40, 0x16a5e, +0x16a70, 0x16abe, +0x16ad0, 0x16aed, +0x16b00, 0x16b2f, +0x16b40, 0x16b43, +0x16b63, 0x16b77, +0x16b7d, 0x16b8f, +0x16d40, 0x16d6c, +0x16e40, 0x16e7f, +0x16f00, 0x16f4a, +0x16f4f, 0x16f87, +0x16f8f, 0x16f9f, +0x16fe0, 0x16fe1, +0x16fe3, 0x16fe3, +0x16ff0, 0x16ff1, +0x17000, 0x187f7, +0x18800, 0x18cd5, +0x18cff, 0x18d08, +0x1aff0, 0x1aff3, +0x1aff5, 0x1affb, +0x1affd, 0x1affe, +0x1b000, 0x1b122, +0x1b132, 0x1b132, +0x1b150, 0x1b152, +0x1b155, 0x1b155, +0x1b164, 0x1b167, +0x1b170, 0x1b2fb, +0x1bc00, 0x1bc6a, +0x1bc70, 0x1bc7c, +0x1bc80, 0x1bc88, +0x1bc90, 0x1bc99, +0x1bc9e, 0x1bc9e, +0x1d400, 0x1d454, +0x1d456, 0x1d49c, +0x1d49e, 0x1d49f, +0x1d4a2, 0x1d4a2, +0x1d4a5, 0x1d4a6, +0x1d4a9, 0x1d4ac, +0x1d4ae, 0x1d4b9, +0x1d4bb, 0x1d4bb, +0x1d4bd, 0x1d4c3, +0x1d4c5, 0x1d505, +0x1d507, 0x1d50a, +0x1d50d, 0x1d514, +0x1d516, 0x1d51c, +0x1d51e, 0x1d539, +0x1d53b, 0x1d53e, +0x1d540, 0x1d544, +0x1d546, 0x1d546, +0x1d54a, 0x1d550, +0x1d552, 0x1d6a5, +0x1d6a8, 0x1d6c0, +0x1d6c2, 0x1d6da, +0x1d6dc, 0x1d6fa, +0x1d6fc, 0x1d714, +0x1d716, 0x1d734, +0x1d736, 0x1d74e, +0x1d750, 0x1d76e, +0x1d770, 0x1d788, +0x1d78a, 0x1d7a8, +0x1d7aa, 0x1d7c2, +0x1d7c4, 0x1d7cb, +0x1df00, 0x1df1e, +0x1df25, 0x1df2a, +0x1e000, 0x1e006, +0x1e008, 0x1e018, +0x1e01b, 0x1e021, +0x1e023, 0x1e024, +0x1e026, 0x1e02a, +0x1e030, 0x1e06d, +0x1e08f, 0x1e08f, +0x1e100, 0x1e12c, +0x1e137, 0x1e13d, +0x1e14e, 0x1e14e, +0x1e290, 0x1e2ad, +0x1e2c0, 0x1e2eb, +0x1e4d0, 0x1e4eb, +0x1e5d0, 0x1e5ed, +0x1e5f0, 0x1e5f0, +0x1e7e0, 0x1e7e6, +0x1e7e8, 0x1e7eb, +0x1e7ed, 0x1e7ee, +0x1e7f0, 0x1e7fe, +0x1e800, 0x1e8c4, +0x1e900, 0x1e943, +0x1e947, 0x1e947, +0x1e94b, 0x1e94b, +0x1ee00, 0x1ee03, +0x1ee05, 0x1ee1f, +0x1ee21, 0x1ee22, +0x1ee24, 0x1ee24, +0x1ee27, 0x1ee27, +0x1ee29, 0x1ee32, +0x1ee34, 0x1ee37, +0x1ee39, 0x1ee39, +0x1ee3b, 0x1ee3b, +0x1ee42, 0x1ee42, +0x1ee47, 0x1ee47, +0x1ee49, 0x1ee49, +0x1ee4b, 0x1ee4b, +0x1ee4d, 0x1ee4f, +0x1ee51, 0x1ee52, +0x1ee54, 0x1ee54, +0x1ee57, 0x1ee57, +0x1ee59, 0x1ee59, +0x1ee5b, 0x1ee5b, +0x1ee5d, 0x1ee5d, +0x1ee5f, 0x1ee5f, +0x1ee61, 0x1ee62, +0x1ee64, 0x1ee64, +0x1ee67, 0x1ee6a, +0x1ee6c, 0x1ee72, +0x1ee74, 0x1ee77, +0x1ee79, 0x1ee7c, +0x1ee7e, 0x1ee7e, +0x1ee80, 0x1ee89, +0x1ee8b, 0x1ee9b, +0x1eea1, 0x1eea3, +0x1eea5, 0x1eea9, +0x1eeab, 0x1eebb, +0x1f130, 0x1f149, +0x1f150, 0x1f169, +0x1f170, 0x1f189, +0x20000, 0x2a6df, +0x2a700, 0x2b739, +0x2b740, 0x2b81d, +0x2b820, 0x2cea1, +0x2ceb0, 0x2ebe0, +0x2ebf0, 0x2ee5d, +0x2f800, 0x2fa1d, +0x30000, 0x3134a, +0x31350, 0x323af, +}; /* END of CR_Alpha */ + +/* PROPERTY: 'Blank': POSIX [[:Blank:]] */ +static const OnigCodePoint +CR_Blank[] = { 8, +0x0009, 0x0009, +0x0020, 0x0020, +0x00a0, 0x00a0, +0x1680, 0x1680, +0x2000, 0x200a, +0x202f, 0x202f, +0x205f, 0x205f, +0x3000, 0x3000, +}; /* END of CR_Blank */ + +/* PROPERTY: 'Cntrl': POSIX [[:Cntrl:]] */ +static const OnigCodePoint +CR_Cntrl[] = { 2, +0x0000, 0x001f, +0x007f, 0x009f, +}; /* END of CR_Cntrl */ + +/* PROPERTY: 'Digit': POSIX [[:Digit:]] */ +static const OnigCodePoint +CR_Digit[] = { 71, +0x0030, 0x0039, +0x0660, 0x0669, +0x06f0, 0x06f9, +0x07c0, 0x07c9, +0x0966, 0x096f, +0x09e6, 0x09ef, +0x0a66, 0x0a6f, +0x0ae6, 0x0aef, +0x0b66, 0x0b6f, +0x0be6, 0x0bef, +0x0c66, 0x0c6f, +0x0ce6, 0x0cef, +0x0d66, 0x0d6f, +0x0de6, 0x0def, +0x0e50, 0x0e59, +0x0ed0, 0x0ed9, +0x0f20, 0x0f29, +0x1040, 0x1049, +0x1090, 0x1099, +0x17e0, 0x17e9, +0x1810, 0x1819, +0x1946, 0x194f, +0x19d0, 0x19d9, +0x1a80, 0x1a89, +0x1a90, 0x1a99, +0x1b50, 0x1b59, +0x1bb0, 0x1bb9, +0x1c40, 0x1c49, +0x1c50, 0x1c59, +0xa620, 0xa629, +0xa8d0, 0xa8d9, +0xa900, 0xa909, +0xa9d0, 0xa9d9, +0xa9f0, 0xa9f9, +0xaa50, 0xaa59, +0xabf0, 0xabf9, +0xff10, 0xff19, +0x104a0, 0x104a9, +0x10d30, 0x10d39, +0x10d40, 0x10d49, +0x11066, 0x1106f, +0x110f0, 0x110f9, +0x11136, 0x1113f, +0x111d0, 0x111d9, +0x112f0, 0x112f9, +0x11450, 0x11459, +0x114d0, 0x114d9, +0x11650, 0x11659, +0x116c0, 0x116c9, +0x116d0, 0x116e3, +0x11730, 0x11739, +0x118e0, 0x118e9, +0x11950, 0x11959, +0x11bf0, 0x11bf9, +0x11c50, 0x11c59, +0x11d50, 0x11d59, +0x11da0, 0x11da9, +0x11f50, 0x11f59, +0x16130, 0x16139, +0x16a60, 0x16a69, +0x16ac0, 0x16ac9, +0x16b50, 0x16b59, +0x16d70, 0x16d79, +0x1ccf0, 0x1ccf9, +0x1d7ce, 0x1d7ff, +0x1e140, 0x1e149, +0x1e2f0, 0x1e2f9, +0x1e4f0, 0x1e4f9, +0x1e5f1, 0x1e5fa, +0x1e950, 0x1e959, +0x1fbf0, 0x1fbf9, +}; /* END of CR_Digit */ + +/* PROPERTY: 'Graph': POSIX [[:Graph:]] */ +static const OnigCodePoint +CR_Graph[] = { 737, +0x0021, 0x007e, +0x00a1, 0x0377, +0x037a, 0x037f, +0x0384, 0x038a, +0x038c, 0x038c, +0x038e, 0x03a1, +0x03a3, 0x052f, +0x0531, 0x0556, +0x0559, 0x058a, +0x058d, 0x058f, +0x0591, 0x05c7, +0x05d0, 0x05ea, +0x05ef, 0x05f4, +0x0600, 0x070d, +0x070f, 0x074a, +0x074d, 0x07b1, +0x07c0, 0x07fa, +0x07fd, 0x082d, +0x0830, 0x083e, +0x0840, 0x085b, +0x085e, 0x085e, +0x0860, 0x086a, +0x0870, 0x088e, +0x0890, 0x0891, +0x0897, 0x0983, +0x0985, 0x098c, +0x098f, 0x0990, +0x0993, 0x09a8, +0x09aa, 0x09b0, +0x09b2, 0x09b2, +0x09b6, 0x09b9, +0x09bc, 0x09c4, +0x09c7, 0x09c8, +0x09cb, 0x09ce, +0x09d7, 0x09d7, +0x09dc, 0x09dd, +0x09df, 0x09e3, +0x09e6, 0x09fe, +0x0a01, 0x0a03, +0x0a05, 0x0a0a, +0x0a0f, 0x0a10, +0x0a13, 0x0a28, +0x0a2a, 0x0a30, +0x0a32, 0x0a33, +0x0a35, 0x0a36, +0x0a38, 0x0a39, +0x0a3c, 0x0a3c, +0x0a3e, 0x0a42, +0x0a47, 0x0a48, +0x0a4b, 0x0a4d, +0x0a51, 0x0a51, +0x0a59, 0x0a5c, +0x0a5e, 0x0a5e, +0x0a66, 0x0a76, +0x0a81, 0x0a83, +0x0a85, 0x0a8d, +0x0a8f, 0x0a91, +0x0a93, 0x0aa8, +0x0aaa, 0x0ab0, +0x0ab2, 0x0ab3, +0x0ab5, 0x0ab9, +0x0abc, 0x0ac5, +0x0ac7, 0x0ac9, +0x0acb, 0x0acd, +0x0ad0, 0x0ad0, +0x0ae0, 0x0ae3, +0x0ae6, 0x0af1, +0x0af9, 0x0aff, +0x0b01, 0x0b03, +0x0b05, 0x0b0c, +0x0b0f, 0x0b10, +0x0b13, 0x0b28, +0x0b2a, 0x0b30, +0x0b32, 0x0b33, +0x0b35, 0x0b39, +0x0b3c, 0x0b44, +0x0b47, 0x0b48, +0x0b4b, 0x0b4d, +0x0b55, 0x0b57, +0x0b5c, 0x0b5d, +0x0b5f, 0x0b63, +0x0b66, 0x0b77, +0x0b82, 0x0b83, +0x0b85, 0x0b8a, +0x0b8e, 0x0b90, +0x0b92, 0x0b95, +0x0b99, 0x0b9a, +0x0b9c, 0x0b9c, +0x0b9e, 0x0b9f, +0x0ba3, 0x0ba4, +0x0ba8, 0x0baa, +0x0bae, 0x0bb9, +0x0bbe, 0x0bc2, +0x0bc6, 0x0bc8, +0x0bca, 0x0bcd, +0x0bd0, 0x0bd0, +0x0bd7, 0x0bd7, +0x0be6, 0x0bfa, +0x0c00, 0x0c0c, +0x0c0e, 0x0c10, +0x0c12, 0x0c28, +0x0c2a, 0x0c39, +0x0c3c, 0x0c44, +0x0c46, 0x0c48, +0x0c4a, 0x0c4d, +0x0c55, 0x0c56, +0x0c58, 0x0c5a, +0x0c5d, 0x0c5d, +0x0c60, 0x0c63, +0x0c66, 0x0c6f, +0x0c77, 0x0c8c, +0x0c8e, 0x0c90, +0x0c92, 0x0ca8, +0x0caa, 0x0cb3, +0x0cb5, 0x0cb9, +0x0cbc, 0x0cc4, +0x0cc6, 0x0cc8, +0x0cca, 0x0ccd, +0x0cd5, 0x0cd6, +0x0cdd, 0x0cde, +0x0ce0, 0x0ce3, +0x0ce6, 0x0cef, +0x0cf1, 0x0cf3, +0x0d00, 0x0d0c, +0x0d0e, 0x0d10, +0x0d12, 0x0d44, +0x0d46, 0x0d48, +0x0d4a, 0x0d4f, +0x0d54, 0x0d63, +0x0d66, 0x0d7f, +0x0d81, 0x0d83, +0x0d85, 0x0d96, +0x0d9a, 0x0db1, +0x0db3, 0x0dbb, +0x0dbd, 0x0dbd, +0x0dc0, 0x0dc6, +0x0dca, 0x0dca, +0x0dcf, 0x0dd4, +0x0dd6, 0x0dd6, +0x0dd8, 0x0ddf, +0x0de6, 0x0def, +0x0df2, 0x0df4, +0x0e01, 0x0e3a, +0x0e3f, 0x0e5b, +0x0e81, 0x0e82, +0x0e84, 0x0e84, +0x0e86, 0x0e8a, +0x0e8c, 0x0ea3, +0x0ea5, 0x0ea5, +0x0ea7, 0x0ebd, +0x0ec0, 0x0ec4, +0x0ec6, 0x0ec6, +0x0ec8, 0x0ece, +0x0ed0, 0x0ed9, +0x0edc, 0x0edf, +0x0f00, 0x0f47, +0x0f49, 0x0f6c, +0x0f71, 0x0f97, +0x0f99, 0x0fbc, +0x0fbe, 0x0fcc, +0x0fce, 0x0fda, +0x1000, 0x10c5, +0x10c7, 0x10c7, +0x10cd, 0x10cd, +0x10d0, 0x1248, +0x124a, 0x124d, +0x1250, 0x1256, +0x1258, 0x1258, +0x125a, 0x125d, +0x1260, 0x1288, +0x128a, 0x128d, +0x1290, 0x12b0, +0x12b2, 0x12b5, +0x12b8, 0x12be, +0x12c0, 0x12c0, +0x12c2, 0x12c5, +0x12c8, 0x12d6, +0x12d8, 0x1310, +0x1312, 0x1315, +0x1318, 0x135a, +0x135d, 0x137c, +0x1380, 0x1399, +0x13a0, 0x13f5, +0x13f8, 0x13fd, +0x1400, 0x167f, +0x1681, 0x169c, +0x16a0, 0x16f8, +0x1700, 0x1715, +0x171f, 0x1736, +0x1740, 0x1753, +0x1760, 0x176c, +0x176e, 0x1770, +0x1772, 0x1773, +0x1780, 0x17dd, +0x17e0, 0x17e9, +0x17f0, 0x17f9, +0x1800, 0x1819, +0x1820, 0x1878, +0x1880, 0x18aa, +0x18b0, 0x18f5, +0x1900, 0x191e, +0x1920, 0x192b, +0x1930, 0x193b, +0x1940, 0x1940, +0x1944, 0x196d, +0x1970, 0x1974, +0x1980, 0x19ab, +0x19b0, 0x19c9, +0x19d0, 0x19da, +0x19de, 0x1a1b, +0x1a1e, 0x1a5e, +0x1a60, 0x1a7c, +0x1a7f, 0x1a89, +0x1a90, 0x1a99, +0x1aa0, 0x1aad, +0x1ab0, 0x1ace, +0x1b00, 0x1b4c, +0x1b4e, 0x1bf3, +0x1bfc, 0x1c37, +0x1c3b, 0x1c49, +0x1c4d, 0x1c8a, +0x1c90, 0x1cba, +0x1cbd, 0x1cc7, +0x1cd0, 0x1cfa, +0x1d00, 0x1f15, +0x1f18, 0x1f1d, +0x1f20, 0x1f45, +0x1f48, 0x1f4d, +0x1f50, 0x1f57, +0x1f59, 0x1f59, +0x1f5b, 0x1f5b, +0x1f5d, 0x1f5d, +0x1f5f, 0x1f7d, +0x1f80, 0x1fb4, +0x1fb6, 0x1fc4, +0x1fc6, 0x1fd3, +0x1fd6, 0x1fdb, +0x1fdd, 0x1fef, +0x1ff2, 0x1ff4, +0x1ff6, 0x1ffe, +0x200b, 0x2027, +0x202a, 0x202e, +0x2030, 0x205e, +0x2060, 0x2064, +0x2066, 0x2071, +0x2074, 0x208e, +0x2090, 0x209c, +0x20a0, 0x20c0, +0x20d0, 0x20f0, +0x2100, 0x218b, +0x2190, 0x2429, +0x2440, 0x244a, +0x2460, 0x2b73, +0x2b76, 0x2b95, +0x2b97, 0x2cf3, +0x2cf9, 0x2d25, +0x2d27, 0x2d27, +0x2d2d, 0x2d2d, +0x2d30, 0x2d67, +0x2d6f, 0x2d70, +0x2d7f, 0x2d96, +0x2da0, 0x2da6, +0x2da8, 0x2dae, +0x2db0, 0x2db6, +0x2db8, 0x2dbe, +0x2dc0, 0x2dc6, +0x2dc8, 0x2dce, +0x2dd0, 0x2dd6, +0x2dd8, 0x2dde, +0x2de0, 0x2e5d, +0x2e80, 0x2e99, +0x2e9b, 0x2ef3, +0x2f00, 0x2fd5, +0x2ff0, 0x2fff, +0x3001, 0x303f, +0x3041, 0x3096, +0x3099, 0x30ff, +0x3105, 0x312f, +0x3131, 0x318e, +0x3190, 0x31e5, +0x31ef, 0x321e, +0x3220, 0xa48c, +0xa490, 0xa4c6, +0xa4d0, 0xa62b, +0xa640, 0xa6f7, +0xa700, 0xa7cd, +0xa7d0, 0xa7d1, +0xa7d3, 0xa7d3, +0xa7d5, 0xa7dc, +0xa7f2, 0xa82c, +0xa830, 0xa839, +0xa840, 0xa877, +0xa880, 0xa8c5, +0xa8ce, 0xa8d9, +0xa8e0, 0xa953, +0xa95f, 0xa97c, +0xa980, 0xa9cd, +0xa9cf, 0xa9d9, +0xa9de, 0xa9fe, +0xaa00, 0xaa36, +0xaa40, 0xaa4d, +0xaa50, 0xaa59, +0xaa5c, 0xaac2, +0xaadb, 0xaaf6, +0xab01, 0xab06, +0xab09, 0xab0e, +0xab11, 0xab16, +0xab20, 0xab26, +0xab28, 0xab2e, +0xab30, 0xab6b, +0xab70, 0xabed, +0xabf0, 0xabf9, +0xac00, 0xd7a3, +0xd7b0, 0xd7c6, +0xd7cb, 0xd7fb, +0xe000, 0xfa6d, +0xfa70, 0xfad9, +0xfb00, 0xfb06, +0xfb13, 0xfb17, +0xfb1d, 0xfb36, +0xfb38, 0xfb3c, +0xfb3e, 0xfb3e, +0xfb40, 0xfb41, +0xfb43, 0xfb44, +0xfb46, 0xfbc2, +0xfbd3, 0xfd8f, +0xfd92, 0xfdc7, +0xfdcf, 0xfdcf, +0xfdf0, 0xfe19, +0xfe20, 0xfe52, +0xfe54, 0xfe66, +0xfe68, 0xfe6b, +0xfe70, 0xfe74, +0xfe76, 0xfefc, +0xfeff, 0xfeff, +0xff01, 0xffbe, +0xffc2, 0xffc7, +0xffca, 0xffcf, +0xffd2, 0xffd7, +0xffda, 0xffdc, +0xffe0, 0xffe6, +0xffe8, 0xffee, +0xfff9, 0xfffd, +0x10000, 0x1000b, +0x1000d, 0x10026, +0x10028, 0x1003a, +0x1003c, 0x1003d, +0x1003f, 0x1004d, +0x10050, 0x1005d, +0x10080, 0x100fa, +0x10100, 0x10102, +0x10107, 0x10133, +0x10137, 0x1018e, +0x10190, 0x1019c, +0x101a0, 0x101a0, +0x101d0, 0x101fd, +0x10280, 0x1029c, +0x102a0, 0x102d0, +0x102e0, 0x102fb, +0x10300, 0x10323, +0x1032d, 0x1034a, +0x10350, 0x1037a, +0x10380, 0x1039d, +0x1039f, 0x103c3, +0x103c8, 0x103d5, +0x10400, 0x1049d, +0x104a0, 0x104a9, +0x104b0, 0x104d3, +0x104d8, 0x104fb, +0x10500, 0x10527, +0x10530, 0x10563, +0x1056f, 0x1057a, +0x1057c, 0x1058a, +0x1058c, 0x10592, +0x10594, 0x10595, +0x10597, 0x105a1, +0x105a3, 0x105b1, +0x105b3, 0x105b9, +0x105bb, 0x105bc, +0x105c0, 0x105f3, +0x10600, 0x10736, +0x10740, 0x10755, +0x10760, 0x10767, +0x10780, 0x10785, +0x10787, 0x107b0, +0x107b2, 0x107ba, +0x10800, 0x10805, +0x10808, 0x10808, +0x1080a, 0x10835, +0x10837, 0x10838, +0x1083c, 0x1083c, +0x1083f, 0x10855, +0x10857, 0x1089e, +0x108a7, 0x108af, +0x108e0, 0x108f2, +0x108f4, 0x108f5, +0x108fb, 0x1091b, +0x1091f, 0x10939, +0x1093f, 0x1093f, +0x10980, 0x109b7, +0x109bc, 0x109cf, +0x109d2, 0x10a03, +0x10a05, 0x10a06, +0x10a0c, 0x10a13, +0x10a15, 0x10a17, +0x10a19, 0x10a35, +0x10a38, 0x10a3a, +0x10a3f, 0x10a48, +0x10a50, 0x10a58, +0x10a60, 0x10a9f, +0x10ac0, 0x10ae6, +0x10aeb, 0x10af6, +0x10b00, 0x10b35, +0x10b39, 0x10b55, +0x10b58, 0x10b72, +0x10b78, 0x10b91, +0x10b99, 0x10b9c, +0x10ba9, 0x10baf, +0x10c00, 0x10c48, +0x10c80, 0x10cb2, +0x10cc0, 0x10cf2, +0x10cfa, 0x10d27, +0x10d30, 0x10d39, +0x10d40, 0x10d65, +0x10d69, 0x10d85, +0x10d8e, 0x10d8f, +0x10e60, 0x10e7e, +0x10e80, 0x10ea9, +0x10eab, 0x10ead, +0x10eb0, 0x10eb1, +0x10ec2, 0x10ec4, +0x10efc, 0x10f27, +0x10f30, 0x10f59, +0x10f70, 0x10f89, +0x10fb0, 0x10fcb, +0x10fe0, 0x10ff6, +0x11000, 0x1104d, +0x11052, 0x11075, +0x1107f, 0x110c2, +0x110cd, 0x110cd, +0x110d0, 0x110e8, +0x110f0, 0x110f9, +0x11100, 0x11134, +0x11136, 0x11147, +0x11150, 0x11176, +0x11180, 0x111df, +0x111e1, 0x111f4, +0x11200, 0x11211, +0x11213, 0x11241, +0x11280, 0x11286, +0x11288, 0x11288, +0x1128a, 0x1128d, +0x1128f, 0x1129d, +0x1129f, 0x112a9, +0x112b0, 0x112ea, +0x112f0, 0x112f9, +0x11300, 0x11303, +0x11305, 0x1130c, +0x1130f, 0x11310, +0x11313, 0x11328, +0x1132a, 0x11330, +0x11332, 0x11333, +0x11335, 0x11339, +0x1133b, 0x11344, +0x11347, 0x11348, +0x1134b, 0x1134d, +0x11350, 0x11350, +0x11357, 0x11357, +0x1135d, 0x11363, +0x11366, 0x1136c, +0x11370, 0x11374, +0x11380, 0x11389, +0x1138b, 0x1138b, +0x1138e, 0x1138e, +0x11390, 0x113b5, +0x113b7, 0x113c0, +0x113c2, 0x113c2, +0x113c5, 0x113c5, +0x113c7, 0x113ca, +0x113cc, 0x113d5, +0x113d7, 0x113d8, +0x113e1, 0x113e2, +0x11400, 0x1145b, +0x1145d, 0x11461, +0x11480, 0x114c7, +0x114d0, 0x114d9, +0x11580, 0x115b5, +0x115b8, 0x115dd, +0x11600, 0x11644, +0x11650, 0x11659, +0x11660, 0x1166c, +0x11680, 0x116b9, +0x116c0, 0x116c9, +0x116d0, 0x116e3, +0x11700, 0x1171a, +0x1171d, 0x1172b, +0x11730, 0x11746, +0x11800, 0x1183b, +0x118a0, 0x118f2, +0x118ff, 0x11906, +0x11909, 0x11909, +0x1190c, 0x11913, +0x11915, 0x11916, +0x11918, 0x11935, +0x11937, 0x11938, +0x1193b, 0x11946, +0x11950, 0x11959, +0x119a0, 0x119a7, +0x119aa, 0x119d7, +0x119da, 0x119e4, +0x11a00, 0x11a47, +0x11a50, 0x11aa2, +0x11ab0, 0x11af8, +0x11b00, 0x11b09, +0x11bc0, 0x11be1, +0x11bf0, 0x11bf9, +0x11c00, 0x11c08, +0x11c0a, 0x11c36, +0x11c38, 0x11c45, +0x11c50, 0x11c6c, +0x11c70, 0x11c8f, +0x11c92, 0x11ca7, +0x11ca9, 0x11cb6, +0x11d00, 0x11d06, +0x11d08, 0x11d09, +0x11d0b, 0x11d36, +0x11d3a, 0x11d3a, +0x11d3c, 0x11d3d, +0x11d3f, 0x11d47, +0x11d50, 0x11d59, +0x11d60, 0x11d65, +0x11d67, 0x11d68, +0x11d6a, 0x11d8e, +0x11d90, 0x11d91, +0x11d93, 0x11d98, +0x11da0, 0x11da9, +0x11ee0, 0x11ef8, +0x11f00, 0x11f10, +0x11f12, 0x11f3a, +0x11f3e, 0x11f5a, +0x11fb0, 0x11fb0, +0x11fc0, 0x11ff1, +0x11fff, 0x12399, +0x12400, 0x1246e, +0x12470, 0x12474, +0x12480, 0x12543, +0x12f90, 0x12ff2, +0x13000, 0x13455, +0x13460, 0x143fa, +0x14400, 0x14646, +0x16100, 0x16139, +0x16800, 0x16a38, +0x16a40, 0x16a5e, +0x16a60, 0x16a69, +0x16a6e, 0x16abe, +0x16ac0, 0x16ac9, +0x16ad0, 0x16aed, +0x16af0, 0x16af5, +0x16b00, 0x16b45, +0x16b50, 0x16b59, +0x16b5b, 0x16b61, +0x16b63, 0x16b77, +0x16b7d, 0x16b8f, +0x16d40, 0x16d79, +0x16e40, 0x16e9a, +0x16f00, 0x16f4a, +0x16f4f, 0x16f87, +0x16f8f, 0x16f9f, +0x16fe0, 0x16fe4, +0x16ff0, 0x16ff1, +0x17000, 0x187f7, +0x18800, 0x18cd5, +0x18cff, 0x18d08, +0x1aff0, 0x1aff3, +0x1aff5, 0x1affb, +0x1affd, 0x1affe, +0x1b000, 0x1b122, +0x1b132, 0x1b132, +0x1b150, 0x1b152, +0x1b155, 0x1b155, +0x1b164, 0x1b167, +0x1b170, 0x1b2fb, +0x1bc00, 0x1bc6a, +0x1bc70, 0x1bc7c, +0x1bc80, 0x1bc88, +0x1bc90, 0x1bc99, +0x1bc9c, 0x1bca3, +0x1cc00, 0x1ccf9, +0x1cd00, 0x1ceb3, +0x1cf00, 0x1cf2d, +0x1cf30, 0x1cf46, +0x1cf50, 0x1cfc3, +0x1d000, 0x1d0f5, +0x1d100, 0x1d126, +0x1d129, 0x1d1ea, +0x1d200, 0x1d245, +0x1d2c0, 0x1d2d3, +0x1d2e0, 0x1d2f3, +0x1d300, 0x1d356, +0x1d360, 0x1d378, +0x1d400, 0x1d454, +0x1d456, 0x1d49c, +0x1d49e, 0x1d49f, +0x1d4a2, 0x1d4a2, +0x1d4a5, 0x1d4a6, +0x1d4a9, 0x1d4ac, +0x1d4ae, 0x1d4b9, +0x1d4bb, 0x1d4bb, +0x1d4bd, 0x1d4c3, +0x1d4c5, 0x1d505, +0x1d507, 0x1d50a, +0x1d50d, 0x1d514, +0x1d516, 0x1d51c, +0x1d51e, 0x1d539, +0x1d53b, 0x1d53e, +0x1d540, 0x1d544, +0x1d546, 0x1d546, +0x1d54a, 0x1d550, +0x1d552, 0x1d6a5, +0x1d6a8, 0x1d7cb, +0x1d7ce, 0x1da8b, +0x1da9b, 0x1da9f, +0x1daa1, 0x1daaf, +0x1df00, 0x1df1e, +0x1df25, 0x1df2a, +0x1e000, 0x1e006, +0x1e008, 0x1e018, +0x1e01b, 0x1e021, +0x1e023, 0x1e024, +0x1e026, 0x1e02a, +0x1e030, 0x1e06d, +0x1e08f, 0x1e08f, +0x1e100, 0x1e12c, +0x1e130, 0x1e13d, +0x1e140, 0x1e149, +0x1e14e, 0x1e14f, +0x1e290, 0x1e2ae, +0x1e2c0, 0x1e2f9, +0x1e2ff, 0x1e2ff, +0x1e4d0, 0x1e4f9, +0x1e5d0, 0x1e5fa, +0x1e5ff, 0x1e5ff, +0x1e7e0, 0x1e7e6, +0x1e7e8, 0x1e7eb, +0x1e7ed, 0x1e7ee, +0x1e7f0, 0x1e7fe, +0x1e800, 0x1e8c4, +0x1e8c7, 0x1e8d6, +0x1e900, 0x1e94b, +0x1e950, 0x1e959, +0x1e95e, 0x1e95f, +0x1ec71, 0x1ecb4, +0x1ed01, 0x1ed3d, +0x1ee00, 0x1ee03, +0x1ee05, 0x1ee1f, +0x1ee21, 0x1ee22, +0x1ee24, 0x1ee24, +0x1ee27, 0x1ee27, +0x1ee29, 0x1ee32, +0x1ee34, 0x1ee37, +0x1ee39, 0x1ee39, +0x1ee3b, 0x1ee3b, +0x1ee42, 0x1ee42, +0x1ee47, 0x1ee47, +0x1ee49, 0x1ee49, +0x1ee4b, 0x1ee4b, +0x1ee4d, 0x1ee4f, +0x1ee51, 0x1ee52, +0x1ee54, 0x1ee54, +0x1ee57, 0x1ee57, +0x1ee59, 0x1ee59, +0x1ee5b, 0x1ee5b, +0x1ee5d, 0x1ee5d, +0x1ee5f, 0x1ee5f, +0x1ee61, 0x1ee62, +0x1ee64, 0x1ee64, +0x1ee67, 0x1ee6a, +0x1ee6c, 0x1ee72, +0x1ee74, 0x1ee77, +0x1ee79, 0x1ee7c, +0x1ee7e, 0x1ee7e, +0x1ee80, 0x1ee89, +0x1ee8b, 0x1ee9b, +0x1eea1, 0x1eea3, +0x1eea5, 0x1eea9, +0x1eeab, 0x1eebb, +0x1eef0, 0x1eef1, +0x1f000, 0x1f02b, +0x1f030, 0x1f093, +0x1f0a0, 0x1f0ae, +0x1f0b1, 0x1f0bf, +0x1f0c1, 0x1f0cf, +0x1f0d1, 0x1f0f5, +0x1f100, 0x1f1ad, +0x1f1e6, 0x1f202, +0x1f210, 0x1f23b, +0x1f240, 0x1f248, +0x1f250, 0x1f251, +0x1f260, 0x1f265, +0x1f300, 0x1f6d7, +0x1f6dc, 0x1f6ec, +0x1f6f0, 0x1f6fc, +0x1f700, 0x1f776, +0x1f77b, 0x1f7d9, +0x1f7e0, 0x1f7eb, +0x1f7f0, 0x1f7f0, +0x1f800, 0x1f80b, +0x1f810, 0x1f847, +0x1f850, 0x1f859, +0x1f860, 0x1f887, +0x1f890, 0x1f8ad, +0x1f8b0, 0x1f8bb, +0x1f8c0, 0x1f8c1, +0x1f900, 0x1fa53, +0x1fa60, 0x1fa6d, +0x1fa70, 0x1fa7c, +0x1fa80, 0x1fa89, +0x1fa8f, 0x1fac6, +0x1face, 0x1fadc, +0x1fadf, 0x1fae9, +0x1faf0, 0x1faf8, +0x1fb00, 0x1fb92, +0x1fb94, 0x1fbf9, +0x20000, 0x2a6df, +0x2a700, 0x2b739, +0x2b740, 0x2b81d, +0x2b820, 0x2cea1, +0x2ceb0, 0x2ebe0, +0x2ebf0, 0x2ee5d, +0x2f800, 0x2fa1d, +0x30000, 0x3134a, +0x31350, 0x323af, +0xe0001, 0xe0001, +0xe0020, 0xe007f, +0xe0100, 0xe01ef, +0xf0000, 0xffffd, +0x100000, 0x10fffd, +}; /* END of CR_Graph */ + +/* PROPERTY: 'Lower': POSIX [[:Lower:]] */ +static const OnigCodePoint +CR_Lower[] = { 675, +0x0061, 0x007a, +0x00aa, 0x00aa, +0x00b5, 0x00b5, +0x00ba, 0x00ba, +0x00df, 0x00f6, +0x00f8, 0x00ff, +0x0101, 0x0101, +0x0103, 0x0103, +0x0105, 0x0105, +0x0107, 0x0107, +0x0109, 0x0109, +0x010b, 0x010b, +0x010d, 0x010d, +0x010f, 0x010f, +0x0111, 0x0111, +0x0113, 0x0113, +0x0115, 0x0115, +0x0117, 0x0117, +0x0119, 0x0119, +0x011b, 0x011b, +0x011d, 0x011d, +0x011f, 0x011f, +0x0121, 0x0121, +0x0123, 0x0123, +0x0125, 0x0125, +0x0127, 0x0127, +0x0129, 0x0129, +0x012b, 0x012b, +0x012d, 0x012d, +0x012f, 0x012f, +0x0131, 0x0131, +0x0133, 0x0133, +0x0135, 0x0135, +0x0137, 0x0138, +0x013a, 0x013a, +0x013c, 0x013c, +0x013e, 0x013e, +0x0140, 0x0140, +0x0142, 0x0142, +0x0144, 0x0144, +0x0146, 0x0146, +0x0148, 0x0149, +0x014b, 0x014b, +0x014d, 0x014d, +0x014f, 0x014f, +0x0151, 0x0151, +0x0153, 0x0153, +0x0155, 0x0155, +0x0157, 0x0157, +0x0159, 0x0159, +0x015b, 0x015b, +0x015d, 0x015d, +0x015f, 0x015f, +0x0161, 0x0161, +0x0163, 0x0163, +0x0165, 0x0165, +0x0167, 0x0167, +0x0169, 0x0169, +0x016b, 0x016b, +0x016d, 0x016d, +0x016f, 0x016f, +0x0171, 0x0171, +0x0173, 0x0173, +0x0175, 0x0175, +0x0177, 0x0177, +0x017a, 0x017a, +0x017c, 0x017c, +0x017e, 0x0180, +0x0183, 0x0183, +0x0185, 0x0185, +0x0188, 0x0188, +0x018c, 0x018d, +0x0192, 0x0192, +0x0195, 0x0195, +0x0199, 0x019b, +0x019e, 0x019e, +0x01a1, 0x01a1, +0x01a3, 0x01a3, +0x01a5, 0x01a5, +0x01a8, 0x01a8, +0x01aa, 0x01ab, +0x01ad, 0x01ad, +0x01b0, 0x01b0, +0x01b4, 0x01b4, +0x01b6, 0x01b6, +0x01b9, 0x01ba, +0x01bd, 0x01bf, +0x01c6, 0x01c6, +0x01c9, 0x01c9, +0x01cc, 0x01cc, +0x01ce, 0x01ce, +0x01d0, 0x01d0, +0x01d2, 0x01d2, +0x01d4, 0x01d4, +0x01d6, 0x01d6, +0x01d8, 0x01d8, +0x01da, 0x01da, +0x01dc, 0x01dd, +0x01df, 0x01df, +0x01e1, 0x01e1, +0x01e3, 0x01e3, +0x01e5, 0x01e5, +0x01e7, 0x01e7, +0x01e9, 0x01e9, +0x01eb, 0x01eb, +0x01ed, 0x01ed, +0x01ef, 0x01f0, +0x01f3, 0x01f3, +0x01f5, 0x01f5, +0x01f9, 0x01f9, +0x01fb, 0x01fb, +0x01fd, 0x01fd, +0x01ff, 0x01ff, +0x0201, 0x0201, +0x0203, 0x0203, +0x0205, 0x0205, +0x0207, 0x0207, +0x0209, 0x0209, +0x020b, 0x020b, +0x020d, 0x020d, +0x020f, 0x020f, +0x0211, 0x0211, +0x0213, 0x0213, +0x0215, 0x0215, +0x0217, 0x0217, +0x0219, 0x0219, +0x021b, 0x021b, +0x021d, 0x021d, +0x021f, 0x021f, +0x0221, 0x0221, +0x0223, 0x0223, +0x0225, 0x0225, +0x0227, 0x0227, +0x0229, 0x0229, +0x022b, 0x022b, +0x022d, 0x022d, +0x022f, 0x022f, +0x0231, 0x0231, +0x0233, 0x0239, +0x023c, 0x023c, +0x023f, 0x0240, +0x0242, 0x0242, +0x0247, 0x0247, +0x0249, 0x0249, +0x024b, 0x024b, +0x024d, 0x024d, +0x024f, 0x0293, +0x0295, 0x02b8, +0x02c0, 0x02c1, +0x02e0, 0x02e4, +0x0345, 0x0345, +0x0371, 0x0371, +0x0373, 0x0373, +0x0377, 0x0377, +0x037a, 0x037d, +0x0390, 0x0390, +0x03ac, 0x03ce, +0x03d0, 0x03d1, +0x03d5, 0x03d7, +0x03d9, 0x03d9, +0x03db, 0x03db, +0x03dd, 0x03dd, +0x03df, 0x03df, +0x03e1, 0x03e1, +0x03e3, 0x03e3, +0x03e5, 0x03e5, +0x03e7, 0x03e7, +0x03e9, 0x03e9, +0x03eb, 0x03eb, +0x03ed, 0x03ed, +0x03ef, 0x03f3, +0x03f5, 0x03f5, +0x03f8, 0x03f8, +0x03fb, 0x03fc, +0x0430, 0x045f, +0x0461, 0x0461, +0x0463, 0x0463, +0x0465, 0x0465, +0x0467, 0x0467, +0x0469, 0x0469, +0x046b, 0x046b, +0x046d, 0x046d, +0x046f, 0x046f, +0x0471, 0x0471, +0x0473, 0x0473, +0x0475, 0x0475, +0x0477, 0x0477, +0x0479, 0x0479, +0x047b, 0x047b, +0x047d, 0x047d, +0x047f, 0x047f, +0x0481, 0x0481, +0x048b, 0x048b, +0x048d, 0x048d, +0x048f, 0x048f, +0x0491, 0x0491, +0x0493, 0x0493, +0x0495, 0x0495, +0x0497, 0x0497, +0x0499, 0x0499, +0x049b, 0x049b, +0x049d, 0x049d, +0x049f, 0x049f, +0x04a1, 0x04a1, +0x04a3, 0x04a3, +0x04a5, 0x04a5, +0x04a7, 0x04a7, +0x04a9, 0x04a9, +0x04ab, 0x04ab, +0x04ad, 0x04ad, +0x04af, 0x04af, +0x04b1, 0x04b1, +0x04b3, 0x04b3, +0x04b5, 0x04b5, +0x04b7, 0x04b7, +0x04b9, 0x04b9, +0x04bb, 0x04bb, +0x04bd, 0x04bd, +0x04bf, 0x04bf, +0x04c2, 0x04c2, +0x04c4, 0x04c4, +0x04c6, 0x04c6, +0x04c8, 0x04c8, +0x04ca, 0x04ca, +0x04cc, 0x04cc, +0x04ce, 0x04cf, +0x04d1, 0x04d1, +0x04d3, 0x04d3, +0x04d5, 0x04d5, +0x04d7, 0x04d7, +0x04d9, 0x04d9, +0x04db, 0x04db, +0x04dd, 0x04dd, +0x04df, 0x04df, +0x04e1, 0x04e1, +0x04e3, 0x04e3, +0x04e5, 0x04e5, +0x04e7, 0x04e7, +0x04e9, 0x04e9, +0x04eb, 0x04eb, +0x04ed, 0x04ed, +0x04ef, 0x04ef, +0x04f1, 0x04f1, +0x04f3, 0x04f3, +0x04f5, 0x04f5, +0x04f7, 0x04f7, +0x04f9, 0x04f9, +0x04fb, 0x04fb, +0x04fd, 0x04fd, +0x04ff, 0x04ff, +0x0501, 0x0501, +0x0503, 0x0503, +0x0505, 0x0505, +0x0507, 0x0507, +0x0509, 0x0509, +0x050b, 0x050b, +0x050d, 0x050d, +0x050f, 0x050f, +0x0511, 0x0511, +0x0513, 0x0513, +0x0515, 0x0515, +0x0517, 0x0517, +0x0519, 0x0519, +0x051b, 0x051b, +0x051d, 0x051d, +0x051f, 0x051f, +0x0521, 0x0521, +0x0523, 0x0523, +0x0525, 0x0525, +0x0527, 0x0527, +0x0529, 0x0529, +0x052b, 0x052b, +0x052d, 0x052d, +0x052f, 0x052f, +0x0560, 0x0588, +0x10d0, 0x10fa, +0x10fc, 0x10ff, +0x13f8, 0x13fd, +0x1c80, 0x1c88, +0x1c8a, 0x1c8a, +0x1d00, 0x1dbf, +0x1e01, 0x1e01, +0x1e03, 0x1e03, +0x1e05, 0x1e05, +0x1e07, 0x1e07, +0x1e09, 0x1e09, +0x1e0b, 0x1e0b, +0x1e0d, 0x1e0d, +0x1e0f, 0x1e0f, +0x1e11, 0x1e11, +0x1e13, 0x1e13, +0x1e15, 0x1e15, +0x1e17, 0x1e17, +0x1e19, 0x1e19, +0x1e1b, 0x1e1b, +0x1e1d, 0x1e1d, +0x1e1f, 0x1e1f, +0x1e21, 0x1e21, +0x1e23, 0x1e23, +0x1e25, 0x1e25, +0x1e27, 0x1e27, +0x1e29, 0x1e29, +0x1e2b, 0x1e2b, +0x1e2d, 0x1e2d, +0x1e2f, 0x1e2f, +0x1e31, 0x1e31, +0x1e33, 0x1e33, +0x1e35, 0x1e35, +0x1e37, 0x1e37, +0x1e39, 0x1e39, +0x1e3b, 0x1e3b, +0x1e3d, 0x1e3d, +0x1e3f, 0x1e3f, +0x1e41, 0x1e41, +0x1e43, 0x1e43, +0x1e45, 0x1e45, +0x1e47, 0x1e47, +0x1e49, 0x1e49, +0x1e4b, 0x1e4b, +0x1e4d, 0x1e4d, +0x1e4f, 0x1e4f, +0x1e51, 0x1e51, +0x1e53, 0x1e53, +0x1e55, 0x1e55, +0x1e57, 0x1e57, +0x1e59, 0x1e59, +0x1e5b, 0x1e5b, +0x1e5d, 0x1e5d, +0x1e5f, 0x1e5f, +0x1e61, 0x1e61, +0x1e63, 0x1e63, +0x1e65, 0x1e65, +0x1e67, 0x1e67, +0x1e69, 0x1e69, +0x1e6b, 0x1e6b, +0x1e6d, 0x1e6d, +0x1e6f, 0x1e6f, +0x1e71, 0x1e71, +0x1e73, 0x1e73, +0x1e75, 0x1e75, +0x1e77, 0x1e77, +0x1e79, 0x1e79, +0x1e7b, 0x1e7b, +0x1e7d, 0x1e7d, +0x1e7f, 0x1e7f, +0x1e81, 0x1e81, +0x1e83, 0x1e83, +0x1e85, 0x1e85, +0x1e87, 0x1e87, +0x1e89, 0x1e89, +0x1e8b, 0x1e8b, +0x1e8d, 0x1e8d, +0x1e8f, 0x1e8f, +0x1e91, 0x1e91, +0x1e93, 0x1e93, +0x1e95, 0x1e9d, +0x1e9f, 0x1e9f, +0x1ea1, 0x1ea1, +0x1ea3, 0x1ea3, +0x1ea5, 0x1ea5, +0x1ea7, 0x1ea7, +0x1ea9, 0x1ea9, +0x1eab, 0x1eab, +0x1ead, 0x1ead, +0x1eaf, 0x1eaf, +0x1eb1, 0x1eb1, +0x1eb3, 0x1eb3, +0x1eb5, 0x1eb5, +0x1eb7, 0x1eb7, +0x1eb9, 0x1eb9, +0x1ebb, 0x1ebb, +0x1ebd, 0x1ebd, +0x1ebf, 0x1ebf, +0x1ec1, 0x1ec1, +0x1ec3, 0x1ec3, +0x1ec5, 0x1ec5, +0x1ec7, 0x1ec7, +0x1ec9, 0x1ec9, +0x1ecb, 0x1ecb, +0x1ecd, 0x1ecd, +0x1ecf, 0x1ecf, +0x1ed1, 0x1ed1, +0x1ed3, 0x1ed3, +0x1ed5, 0x1ed5, +0x1ed7, 0x1ed7, +0x1ed9, 0x1ed9, +0x1edb, 0x1edb, +0x1edd, 0x1edd, +0x1edf, 0x1edf, +0x1ee1, 0x1ee1, +0x1ee3, 0x1ee3, +0x1ee5, 0x1ee5, +0x1ee7, 0x1ee7, +0x1ee9, 0x1ee9, +0x1eeb, 0x1eeb, +0x1eed, 0x1eed, +0x1eef, 0x1eef, +0x1ef1, 0x1ef1, +0x1ef3, 0x1ef3, +0x1ef5, 0x1ef5, +0x1ef7, 0x1ef7, +0x1ef9, 0x1ef9, +0x1efb, 0x1efb, +0x1efd, 0x1efd, +0x1eff, 0x1f07, +0x1f10, 0x1f15, +0x1f20, 0x1f27, +0x1f30, 0x1f37, +0x1f40, 0x1f45, +0x1f50, 0x1f57, +0x1f60, 0x1f67, +0x1f70, 0x1f7d, +0x1f80, 0x1f87, +0x1f90, 0x1f97, +0x1fa0, 0x1fa7, +0x1fb0, 0x1fb4, +0x1fb6, 0x1fb7, +0x1fbe, 0x1fbe, +0x1fc2, 0x1fc4, +0x1fc6, 0x1fc7, +0x1fd0, 0x1fd3, +0x1fd6, 0x1fd7, +0x1fe0, 0x1fe7, +0x1ff2, 0x1ff4, +0x1ff6, 0x1ff7, +0x2071, 0x2071, +0x207f, 0x207f, +0x2090, 0x209c, +0x210a, 0x210a, +0x210e, 0x210f, +0x2113, 0x2113, +0x212f, 0x212f, +0x2134, 0x2134, +0x2139, 0x2139, +0x213c, 0x213d, +0x2146, 0x2149, +0x214e, 0x214e, +0x2170, 0x217f, +0x2184, 0x2184, +0x24d0, 0x24e9, +0x2c30, 0x2c5f, +0x2c61, 0x2c61, +0x2c65, 0x2c66, +0x2c68, 0x2c68, +0x2c6a, 0x2c6a, +0x2c6c, 0x2c6c, +0x2c71, 0x2c71, +0x2c73, 0x2c74, +0x2c76, 0x2c7d, +0x2c81, 0x2c81, +0x2c83, 0x2c83, +0x2c85, 0x2c85, +0x2c87, 0x2c87, +0x2c89, 0x2c89, +0x2c8b, 0x2c8b, +0x2c8d, 0x2c8d, +0x2c8f, 0x2c8f, +0x2c91, 0x2c91, +0x2c93, 0x2c93, +0x2c95, 0x2c95, +0x2c97, 0x2c97, +0x2c99, 0x2c99, +0x2c9b, 0x2c9b, +0x2c9d, 0x2c9d, +0x2c9f, 0x2c9f, +0x2ca1, 0x2ca1, +0x2ca3, 0x2ca3, +0x2ca5, 0x2ca5, +0x2ca7, 0x2ca7, +0x2ca9, 0x2ca9, +0x2cab, 0x2cab, +0x2cad, 0x2cad, +0x2caf, 0x2caf, +0x2cb1, 0x2cb1, +0x2cb3, 0x2cb3, +0x2cb5, 0x2cb5, +0x2cb7, 0x2cb7, +0x2cb9, 0x2cb9, +0x2cbb, 0x2cbb, +0x2cbd, 0x2cbd, +0x2cbf, 0x2cbf, +0x2cc1, 0x2cc1, +0x2cc3, 0x2cc3, +0x2cc5, 0x2cc5, +0x2cc7, 0x2cc7, +0x2cc9, 0x2cc9, +0x2ccb, 0x2ccb, +0x2ccd, 0x2ccd, +0x2ccf, 0x2ccf, +0x2cd1, 0x2cd1, +0x2cd3, 0x2cd3, +0x2cd5, 0x2cd5, +0x2cd7, 0x2cd7, +0x2cd9, 0x2cd9, +0x2cdb, 0x2cdb, +0x2cdd, 0x2cdd, +0x2cdf, 0x2cdf, +0x2ce1, 0x2ce1, +0x2ce3, 0x2ce4, +0x2cec, 0x2cec, +0x2cee, 0x2cee, +0x2cf3, 0x2cf3, +0x2d00, 0x2d25, +0x2d27, 0x2d27, +0x2d2d, 0x2d2d, +0xa641, 0xa641, +0xa643, 0xa643, +0xa645, 0xa645, +0xa647, 0xa647, +0xa649, 0xa649, +0xa64b, 0xa64b, +0xa64d, 0xa64d, +0xa64f, 0xa64f, +0xa651, 0xa651, +0xa653, 0xa653, +0xa655, 0xa655, +0xa657, 0xa657, +0xa659, 0xa659, +0xa65b, 0xa65b, +0xa65d, 0xa65d, +0xa65f, 0xa65f, +0xa661, 0xa661, +0xa663, 0xa663, +0xa665, 0xa665, +0xa667, 0xa667, +0xa669, 0xa669, +0xa66b, 0xa66b, +0xa66d, 0xa66d, +0xa681, 0xa681, +0xa683, 0xa683, +0xa685, 0xa685, +0xa687, 0xa687, +0xa689, 0xa689, +0xa68b, 0xa68b, +0xa68d, 0xa68d, +0xa68f, 0xa68f, +0xa691, 0xa691, +0xa693, 0xa693, +0xa695, 0xa695, +0xa697, 0xa697, +0xa699, 0xa699, +0xa69b, 0xa69d, +0xa723, 0xa723, +0xa725, 0xa725, +0xa727, 0xa727, +0xa729, 0xa729, +0xa72b, 0xa72b, +0xa72d, 0xa72d, +0xa72f, 0xa731, +0xa733, 0xa733, +0xa735, 0xa735, +0xa737, 0xa737, +0xa739, 0xa739, +0xa73b, 0xa73b, +0xa73d, 0xa73d, +0xa73f, 0xa73f, +0xa741, 0xa741, +0xa743, 0xa743, +0xa745, 0xa745, +0xa747, 0xa747, +0xa749, 0xa749, +0xa74b, 0xa74b, +0xa74d, 0xa74d, +0xa74f, 0xa74f, +0xa751, 0xa751, +0xa753, 0xa753, +0xa755, 0xa755, +0xa757, 0xa757, +0xa759, 0xa759, +0xa75b, 0xa75b, +0xa75d, 0xa75d, +0xa75f, 0xa75f, +0xa761, 0xa761, +0xa763, 0xa763, +0xa765, 0xa765, +0xa767, 0xa767, +0xa769, 0xa769, +0xa76b, 0xa76b, +0xa76d, 0xa76d, +0xa76f, 0xa778, +0xa77a, 0xa77a, +0xa77c, 0xa77c, +0xa77f, 0xa77f, +0xa781, 0xa781, +0xa783, 0xa783, +0xa785, 0xa785, +0xa787, 0xa787, +0xa78c, 0xa78c, +0xa78e, 0xa78e, +0xa791, 0xa791, +0xa793, 0xa795, +0xa797, 0xa797, +0xa799, 0xa799, +0xa79b, 0xa79b, +0xa79d, 0xa79d, +0xa79f, 0xa79f, +0xa7a1, 0xa7a1, +0xa7a3, 0xa7a3, +0xa7a5, 0xa7a5, +0xa7a7, 0xa7a7, +0xa7a9, 0xa7a9, +0xa7af, 0xa7af, +0xa7b5, 0xa7b5, +0xa7b7, 0xa7b7, +0xa7b9, 0xa7b9, +0xa7bb, 0xa7bb, +0xa7bd, 0xa7bd, +0xa7bf, 0xa7bf, +0xa7c1, 0xa7c1, +0xa7c3, 0xa7c3, +0xa7c8, 0xa7c8, +0xa7ca, 0xa7ca, +0xa7cd, 0xa7cd, +0xa7d1, 0xa7d1, +0xa7d3, 0xa7d3, +0xa7d5, 0xa7d5, +0xa7d7, 0xa7d7, +0xa7d9, 0xa7d9, +0xa7db, 0xa7db, +0xa7f2, 0xa7f4, +0xa7f6, 0xa7f6, +0xa7f8, 0xa7fa, +0xab30, 0xab5a, +0xab5c, 0xab69, +0xab70, 0xabbf, +0xfb00, 0xfb06, +0xfb13, 0xfb17, +0xff41, 0xff5a, +0x10428, 0x1044f, +0x104d8, 0x104fb, +0x10597, 0x105a1, +0x105a3, 0x105b1, +0x105b3, 0x105b9, +0x105bb, 0x105bc, +0x10780, 0x10780, +0x10783, 0x10785, +0x10787, 0x107b0, +0x107b2, 0x107ba, +0x10cc0, 0x10cf2, +0x10d70, 0x10d85, +0x118c0, 0x118df, +0x16e60, 0x16e7f, +0x1d41a, 0x1d433, +0x1d44e, 0x1d454, +0x1d456, 0x1d467, +0x1d482, 0x1d49b, +0x1d4b6, 0x1d4b9, +0x1d4bb, 0x1d4bb, +0x1d4bd, 0x1d4c3, +0x1d4c5, 0x1d4cf, +0x1d4ea, 0x1d503, +0x1d51e, 0x1d537, +0x1d552, 0x1d56b, +0x1d586, 0x1d59f, +0x1d5ba, 0x1d5d3, +0x1d5ee, 0x1d607, +0x1d622, 0x1d63b, +0x1d656, 0x1d66f, +0x1d68a, 0x1d6a5, +0x1d6c2, 0x1d6da, +0x1d6dc, 0x1d6e1, +0x1d6fc, 0x1d714, +0x1d716, 0x1d71b, +0x1d736, 0x1d74e, +0x1d750, 0x1d755, +0x1d770, 0x1d788, +0x1d78a, 0x1d78f, +0x1d7aa, 0x1d7c2, +0x1d7c4, 0x1d7c9, +0x1d7cb, 0x1d7cb, +0x1df00, 0x1df09, +0x1df0b, 0x1df1e, +0x1df25, 0x1df2a, +0x1e030, 0x1e06d, +0x1e922, 0x1e943, +}; /* END of CR_Lower */ + +/* PROPERTY: 'Print': POSIX [[:Print:]] */ +static const OnigCodePoint +CR_Print[] = { 733, +0x0020, 0x007e, +0x00a0, 0x0377, +0x037a, 0x037f, +0x0384, 0x038a, +0x038c, 0x038c, +0x038e, 0x03a1, +0x03a3, 0x052f, +0x0531, 0x0556, +0x0559, 0x058a, +0x058d, 0x058f, +0x0591, 0x05c7, +0x05d0, 0x05ea, +0x05ef, 0x05f4, +0x0600, 0x070d, +0x070f, 0x074a, +0x074d, 0x07b1, +0x07c0, 0x07fa, +0x07fd, 0x082d, +0x0830, 0x083e, +0x0840, 0x085b, +0x085e, 0x085e, +0x0860, 0x086a, +0x0870, 0x088e, +0x0890, 0x0891, +0x0897, 0x0983, +0x0985, 0x098c, +0x098f, 0x0990, +0x0993, 0x09a8, +0x09aa, 0x09b0, +0x09b2, 0x09b2, +0x09b6, 0x09b9, +0x09bc, 0x09c4, +0x09c7, 0x09c8, +0x09cb, 0x09ce, +0x09d7, 0x09d7, +0x09dc, 0x09dd, +0x09df, 0x09e3, +0x09e6, 0x09fe, +0x0a01, 0x0a03, +0x0a05, 0x0a0a, +0x0a0f, 0x0a10, +0x0a13, 0x0a28, +0x0a2a, 0x0a30, +0x0a32, 0x0a33, +0x0a35, 0x0a36, +0x0a38, 0x0a39, +0x0a3c, 0x0a3c, +0x0a3e, 0x0a42, +0x0a47, 0x0a48, +0x0a4b, 0x0a4d, +0x0a51, 0x0a51, +0x0a59, 0x0a5c, +0x0a5e, 0x0a5e, +0x0a66, 0x0a76, +0x0a81, 0x0a83, +0x0a85, 0x0a8d, +0x0a8f, 0x0a91, +0x0a93, 0x0aa8, +0x0aaa, 0x0ab0, +0x0ab2, 0x0ab3, +0x0ab5, 0x0ab9, +0x0abc, 0x0ac5, +0x0ac7, 0x0ac9, +0x0acb, 0x0acd, +0x0ad0, 0x0ad0, +0x0ae0, 0x0ae3, +0x0ae6, 0x0af1, +0x0af9, 0x0aff, +0x0b01, 0x0b03, +0x0b05, 0x0b0c, +0x0b0f, 0x0b10, +0x0b13, 0x0b28, +0x0b2a, 0x0b30, +0x0b32, 0x0b33, +0x0b35, 0x0b39, +0x0b3c, 0x0b44, +0x0b47, 0x0b48, +0x0b4b, 0x0b4d, +0x0b55, 0x0b57, +0x0b5c, 0x0b5d, +0x0b5f, 0x0b63, +0x0b66, 0x0b77, +0x0b82, 0x0b83, +0x0b85, 0x0b8a, +0x0b8e, 0x0b90, +0x0b92, 0x0b95, +0x0b99, 0x0b9a, +0x0b9c, 0x0b9c, +0x0b9e, 0x0b9f, +0x0ba3, 0x0ba4, +0x0ba8, 0x0baa, +0x0bae, 0x0bb9, +0x0bbe, 0x0bc2, +0x0bc6, 0x0bc8, +0x0bca, 0x0bcd, +0x0bd0, 0x0bd0, +0x0bd7, 0x0bd7, +0x0be6, 0x0bfa, +0x0c00, 0x0c0c, +0x0c0e, 0x0c10, +0x0c12, 0x0c28, +0x0c2a, 0x0c39, +0x0c3c, 0x0c44, +0x0c46, 0x0c48, +0x0c4a, 0x0c4d, +0x0c55, 0x0c56, +0x0c58, 0x0c5a, +0x0c5d, 0x0c5d, +0x0c60, 0x0c63, +0x0c66, 0x0c6f, +0x0c77, 0x0c8c, +0x0c8e, 0x0c90, +0x0c92, 0x0ca8, +0x0caa, 0x0cb3, +0x0cb5, 0x0cb9, +0x0cbc, 0x0cc4, +0x0cc6, 0x0cc8, +0x0cca, 0x0ccd, +0x0cd5, 0x0cd6, +0x0cdd, 0x0cde, +0x0ce0, 0x0ce3, +0x0ce6, 0x0cef, +0x0cf1, 0x0cf3, +0x0d00, 0x0d0c, +0x0d0e, 0x0d10, +0x0d12, 0x0d44, +0x0d46, 0x0d48, +0x0d4a, 0x0d4f, +0x0d54, 0x0d63, +0x0d66, 0x0d7f, +0x0d81, 0x0d83, +0x0d85, 0x0d96, +0x0d9a, 0x0db1, +0x0db3, 0x0dbb, +0x0dbd, 0x0dbd, +0x0dc0, 0x0dc6, +0x0dca, 0x0dca, +0x0dcf, 0x0dd4, +0x0dd6, 0x0dd6, +0x0dd8, 0x0ddf, +0x0de6, 0x0def, +0x0df2, 0x0df4, +0x0e01, 0x0e3a, +0x0e3f, 0x0e5b, +0x0e81, 0x0e82, +0x0e84, 0x0e84, +0x0e86, 0x0e8a, +0x0e8c, 0x0ea3, +0x0ea5, 0x0ea5, +0x0ea7, 0x0ebd, +0x0ec0, 0x0ec4, +0x0ec6, 0x0ec6, +0x0ec8, 0x0ece, +0x0ed0, 0x0ed9, +0x0edc, 0x0edf, +0x0f00, 0x0f47, +0x0f49, 0x0f6c, +0x0f71, 0x0f97, +0x0f99, 0x0fbc, +0x0fbe, 0x0fcc, +0x0fce, 0x0fda, +0x1000, 0x10c5, +0x10c7, 0x10c7, +0x10cd, 0x10cd, +0x10d0, 0x1248, +0x124a, 0x124d, +0x1250, 0x1256, +0x1258, 0x1258, +0x125a, 0x125d, +0x1260, 0x1288, +0x128a, 0x128d, +0x1290, 0x12b0, +0x12b2, 0x12b5, +0x12b8, 0x12be, +0x12c0, 0x12c0, +0x12c2, 0x12c5, +0x12c8, 0x12d6, +0x12d8, 0x1310, +0x1312, 0x1315, +0x1318, 0x135a, +0x135d, 0x137c, +0x1380, 0x1399, +0x13a0, 0x13f5, +0x13f8, 0x13fd, +0x1400, 0x169c, +0x16a0, 0x16f8, +0x1700, 0x1715, +0x171f, 0x1736, +0x1740, 0x1753, +0x1760, 0x176c, +0x176e, 0x1770, +0x1772, 0x1773, +0x1780, 0x17dd, +0x17e0, 0x17e9, +0x17f0, 0x17f9, +0x1800, 0x1819, +0x1820, 0x1878, +0x1880, 0x18aa, +0x18b0, 0x18f5, +0x1900, 0x191e, +0x1920, 0x192b, +0x1930, 0x193b, +0x1940, 0x1940, +0x1944, 0x196d, +0x1970, 0x1974, +0x1980, 0x19ab, +0x19b0, 0x19c9, +0x19d0, 0x19da, +0x19de, 0x1a1b, +0x1a1e, 0x1a5e, +0x1a60, 0x1a7c, +0x1a7f, 0x1a89, +0x1a90, 0x1a99, +0x1aa0, 0x1aad, +0x1ab0, 0x1ace, +0x1b00, 0x1b4c, +0x1b4e, 0x1bf3, +0x1bfc, 0x1c37, +0x1c3b, 0x1c49, +0x1c4d, 0x1c8a, +0x1c90, 0x1cba, +0x1cbd, 0x1cc7, +0x1cd0, 0x1cfa, +0x1d00, 0x1f15, +0x1f18, 0x1f1d, +0x1f20, 0x1f45, +0x1f48, 0x1f4d, +0x1f50, 0x1f57, +0x1f59, 0x1f59, +0x1f5b, 0x1f5b, +0x1f5d, 0x1f5d, +0x1f5f, 0x1f7d, +0x1f80, 0x1fb4, +0x1fb6, 0x1fc4, +0x1fc6, 0x1fd3, +0x1fd6, 0x1fdb, +0x1fdd, 0x1fef, +0x1ff2, 0x1ff4, +0x1ff6, 0x1ffe, +0x2000, 0x2027, +0x202a, 0x2064, +0x2066, 0x2071, +0x2074, 0x208e, +0x2090, 0x209c, +0x20a0, 0x20c0, +0x20d0, 0x20f0, +0x2100, 0x218b, +0x2190, 0x2429, +0x2440, 0x244a, +0x2460, 0x2b73, +0x2b76, 0x2b95, +0x2b97, 0x2cf3, +0x2cf9, 0x2d25, +0x2d27, 0x2d27, +0x2d2d, 0x2d2d, +0x2d30, 0x2d67, +0x2d6f, 0x2d70, +0x2d7f, 0x2d96, +0x2da0, 0x2da6, +0x2da8, 0x2dae, +0x2db0, 0x2db6, +0x2db8, 0x2dbe, +0x2dc0, 0x2dc6, +0x2dc8, 0x2dce, +0x2dd0, 0x2dd6, +0x2dd8, 0x2dde, +0x2de0, 0x2e5d, +0x2e80, 0x2e99, +0x2e9b, 0x2ef3, +0x2f00, 0x2fd5, +0x2ff0, 0x303f, +0x3041, 0x3096, +0x3099, 0x30ff, +0x3105, 0x312f, +0x3131, 0x318e, +0x3190, 0x31e5, +0x31ef, 0x321e, +0x3220, 0xa48c, +0xa490, 0xa4c6, +0xa4d0, 0xa62b, +0xa640, 0xa6f7, +0xa700, 0xa7cd, +0xa7d0, 0xa7d1, +0xa7d3, 0xa7d3, +0xa7d5, 0xa7dc, +0xa7f2, 0xa82c, +0xa830, 0xa839, +0xa840, 0xa877, +0xa880, 0xa8c5, +0xa8ce, 0xa8d9, +0xa8e0, 0xa953, +0xa95f, 0xa97c, +0xa980, 0xa9cd, +0xa9cf, 0xa9d9, +0xa9de, 0xa9fe, +0xaa00, 0xaa36, +0xaa40, 0xaa4d, +0xaa50, 0xaa59, +0xaa5c, 0xaac2, +0xaadb, 0xaaf6, +0xab01, 0xab06, +0xab09, 0xab0e, +0xab11, 0xab16, +0xab20, 0xab26, +0xab28, 0xab2e, +0xab30, 0xab6b, +0xab70, 0xabed, +0xabf0, 0xabf9, +0xac00, 0xd7a3, +0xd7b0, 0xd7c6, +0xd7cb, 0xd7fb, +0xe000, 0xfa6d, +0xfa70, 0xfad9, +0xfb00, 0xfb06, +0xfb13, 0xfb17, +0xfb1d, 0xfb36, +0xfb38, 0xfb3c, +0xfb3e, 0xfb3e, +0xfb40, 0xfb41, +0xfb43, 0xfb44, +0xfb46, 0xfbc2, +0xfbd3, 0xfd8f, +0xfd92, 0xfdc7, +0xfdcf, 0xfdcf, +0xfdf0, 0xfe19, +0xfe20, 0xfe52, +0xfe54, 0xfe66, +0xfe68, 0xfe6b, +0xfe70, 0xfe74, +0xfe76, 0xfefc, +0xfeff, 0xfeff, +0xff01, 0xffbe, +0xffc2, 0xffc7, +0xffca, 0xffcf, +0xffd2, 0xffd7, +0xffda, 0xffdc, +0xffe0, 0xffe6, +0xffe8, 0xffee, +0xfff9, 0xfffd, +0x10000, 0x1000b, +0x1000d, 0x10026, +0x10028, 0x1003a, +0x1003c, 0x1003d, +0x1003f, 0x1004d, +0x10050, 0x1005d, +0x10080, 0x100fa, +0x10100, 0x10102, +0x10107, 0x10133, +0x10137, 0x1018e, +0x10190, 0x1019c, +0x101a0, 0x101a0, +0x101d0, 0x101fd, +0x10280, 0x1029c, +0x102a0, 0x102d0, +0x102e0, 0x102fb, +0x10300, 0x10323, +0x1032d, 0x1034a, +0x10350, 0x1037a, +0x10380, 0x1039d, +0x1039f, 0x103c3, +0x103c8, 0x103d5, +0x10400, 0x1049d, +0x104a0, 0x104a9, +0x104b0, 0x104d3, +0x104d8, 0x104fb, +0x10500, 0x10527, +0x10530, 0x10563, +0x1056f, 0x1057a, +0x1057c, 0x1058a, +0x1058c, 0x10592, +0x10594, 0x10595, +0x10597, 0x105a1, +0x105a3, 0x105b1, +0x105b3, 0x105b9, +0x105bb, 0x105bc, +0x105c0, 0x105f3, +0x10600, 0x10736, +0x10740, 0x10755, +0x10760, 0x10767, +0x10780, 0x10785, +0x10787, 0x107b0, +0x107b2, 0x107ba, +0x10800, 0x10805, +0x10808, 0x10808, +0x1080a, 0x10835, +0x10837, 0x10838, +0x1083c, 0x1083c, +0x1083f, 0x10855, +0x10857, 0x1089e, +0x108a7, 0x108af, +0x108e0, 0x108f2, +0x108f4, 0x108f5, +0x108fb, 0x1091b, +0x1091f, 0x10939, +0x1093f, 0x1093f, +0x10980, 0x109b7, +0x109bc, 0x109cf, +0x109d2, 0x10a03, +0x10a05, 0x10a06, +0x10a0c, 0x10a13, +0x10a15, 0x10a17, +0x10a19, 0x10a35, +0x10a38, 0x10a3a, +0x10a3f, 0x10a48, +0x10a50, 0x10a58, +0x10a60, 0x10a9f, +0x10ac0, 0x10ae6, +0x10aeb, 0x10af6, +0x10b00, 0x10b35, +0x10b39, 0x10b55, +0x10b58, 0x10b72, +0x10b78, 0x10b91, +0x10b99, 0x10b9c, +0x10ba9, 0x10baf, +0x10c00, 0x10c48, +0x10c80, 0x10cb2, +0x10cc0, 0x10cf2, +0x10cfa, 0x10d27, +0x10d30, 0x10d39, +0x10d40, 0x10d65, +0x10d69, 0x10d85, +0x10d8e, 0x10d8f, +0x10e60, 0x10e7e, +0x10e80, 0x10ea9, +0x10eab, 0x10ead, +0x10eb0, 0x10eb1, +0x10ec2, 0x10ec4, +0x10efc, 0x10f27, +0x10f30, 0x10f59, +0x10f70, 0x10f89, +0x10fb0, 0x10fcb, +0x10fe0, 0x10ff6, +0x11000, 0x1104d, +0x11052, 0x11075, +0x1107f, 0x110c2, +0x110cd, 0x110cd, +0x110d0, 0x110e8, +0x110f0, 0x110f9, +0x11100, 0x11134, +0x11136, 0x11147, +0x11150, 0x11176, +0x11180, 0x111df, +0x111e1, 0x111f4, +0x11200, 0x11211, +0x11213, 0x11241, +0x11280, 0x11286, +0x11288, 0x11288, +0x1128a, 0x1128d, +0x1128f, 0x1129d, +0x1129f, 0x112a9, +0x112b0, 0x112ea, +0x112f0, 0x112f9, +0x11300, 0x11303, +0x11305, 0x1130c, +0x1130f, 0x11310, +0x11313, 0x11328, +0x1132a, 0x11330, +0x11332, 0x11333, +0x11335, 0x11339, +0x1133b, 0x11344, +0x11347, 0x11348, +0x1134b, 0x1134d, +0x11350, 0x11350, +0x11357, 0x11357, +0x1135d, 0x11363, +0x11366, 0x1136c, +0x11370, 0x11374, +0x11380, 0x11389, +0x1138b, 0x1138b, +0x1138e, 0x1138e, +0x11390, 0x113b5, +0x113b7, 0x113c0, +0x113c2, 0x113c2, +0x113c5, 0x113c5, +0x113c7, 0x113ca, +0x113cc, 0x113d5, +0x113d7, 0x113d8, +0x113e1, 0x113e2, +0x11400, 0x1145b, +0x1145d, 0x11461, +0x11480, 0x114c7, +0x114d0, 0x114d9, +0x11580, 0x115b5, +0x115b8, 0x115dd, +0x11600, 0x11644, +0x11650, 0x11659, +0x11660, 0x1166c, +0x11680, 0x116b9, +0x116c0, 0x116c9, +0x116d0, 0x116e3, +0x11700, 0x1171a, +0x1171d, 0x1172b, +0x11730, 0x11746, +0x11800, 0x1183b, +0x118a0, 0x118f2, +0x118ff, 0x11906, +0x11909, 0x11909, +0x1190c, 0x11913, +0x11915, 0x11916, +0x11918, 0x11935, +0x11937, 0x11938, +0x1193b, 0x11946, +0x11950, 0x11959, +0x119a0, 0x119a7, +0x119aa, 0x119d7, +0x119da, 0x119e4, +0x11a00, 0x11a47, +0x11a50, 0x11aa2, +0x11ab0, 0x11af8, +0x11b00, 0x11b09, +0x11bc0, 0x11be1, +0x11bf0, 0x11bf9, +0x11c00, 0x11c08, +0x11c0a, 0x11c36, +0x11c38, 0x11c45, +0x11c50, 0x11c6c, +0x11c70, 0x11c8f, +0x11c92, 0x11ca7, +0x11ca9, 0x11cb6, +0x11d00, 0x11d06, +0x11d08, 0x11d09, +0x11d0b, 0x11d36, +0x11d3a, 0x11d3a, +0x11d3c, 0x11d3d, +0x11d3f, 0x11d47, +0x11d50, 0x11d59, +0x11d60, 0x11d65, +0x11d67, 0x11d68, +0x11d6a, 0x11d8e, +0x11d90, 0x11d91, +0x11d93, 0x11d98, +0x11da0, 0x11da9, +0x11ee0, 0x11ef8, +0x11f00, 0x11f10, +0x11f12, 0x11f3a, +0x11f3e, 0x11f5a, +0x11fb0, 0x11fb0, +0x11fc0, 0x11ff1, +0x11fff, 0x12399, +0x12400, 0x1246e, +0x12470, 0x12474, +0x12480, 0x12543, +0x12f90, 0x12ff2, +0x13000, 0x13455, +0x13460, 0x143fa, +0x14400, 0x14646, +0x16100, 0x16139, +0x16800, 0x16a38, +0x16a40, 0x16a5e, +0x16a60, 0x16a69, +0x16a6e, 0x16abe, +0x16ac0, 0x16ac9, +0x16ad0, 0x16aed, +0x16af0, 0x16af5, +0x16b00, 0x16b45, +0x16b50, 0x16b59, +0x16b5b, 0x16b61, +0x16b63, 0x16b77, +0x16b7d, 0x16b8f, +0x16d40, 0x16d79, +0x16e40, 0x16e9a, +0x16f00, 0x16f4a, +0x16f4f, 0x16f87, +0x16f8f, 0x16f9f, +0x16fe0, 0x16fe4, +0x16ff0, 0x16ff1, +0x17000, 0x187f7, +0x18800, 0x18cd5, +0x18cff, 0x18d08, +0x1aff0, 0x1aff3, +0x1aff5, 0x1affb, +0x1affd, 0x1affe, +0x1b000, 0x1b122, +0x1b132, 0x1b132, +0x1b150, 0x1b152, +0x1b155, 0x1b155, +0x1b164, 0x1b167, +0x1b170, 0x1b2fb, +0x1bc00, 0x1bc6a, +0x1bc70, 0x1bc7c, +0x1bc80, 0x1bc88, +0x1bc90, 0x1bc99, +0x1bc9c, 0x1bca3, +0x1cc00, 0x1ccf9, +0x1cd00, 0x1ceb3, +0x1cf00, 0x1cf2d, +0x1cf30, 0x1cf46, +0x1cf50, 0x1cfc3, +0x1d000, 0x1d0f5, +0x1d100, 0x1d126, +0x1d129, 0x1d1ea, +0x1d200, 0x1d245, +0x1d2c0, 0x1d2d3, +0x1d2e0, 0x1d2f3, +0x1d300, 0x1d356, +0x1d360, 0x1d378, +0x1d400, 0x1d454, +0x1d456, 0x1d49c, +0x1d49e, 0x1d49f, +0x1d4a2, 0x1d4a2, +0x1d4a5, 0x1d4a6, +0x1d4a9, 0x1d4ac, +0x1d4ae, 0x1d4b9, +0x1d4bb, 0x1d4bb, +0x1d4bd, 0x1d4c3, +0x1d4c5, 0x1d505, +0x1d507, 0x1d50a, +0x1d50d, 0x1d514, +0x1d516, 0x1d51c, +0x1d51e, 0x1d539, +0x1d53b, 0x1d53e, +0x1d540, 0x1d544, +0x1d546, 0x1d546, +0x1d54a, 0x1d550, +0x1d552, 0x1d6a5, +0x1d6a8, 0x1d7cb, +0x1d7ce, 0x1da8b, +0x1da9b, 0x1da9f, +0x1daa1, 0x1daaf, +0x1df00, 0x1df1e, +0x1df25, 0x1df2a, +0x1e000, 0x1e006, +0x1e008, 0x1e018, +0x1e01b, 0x1e021, +0x1e023, 0x1e024, +0x1e026, 0x1e02a, +0x1e030, 0x1e06d, +0x1e08f, 0x1e08f, +0x1e100, 0x1e12c, +0x1e130, 0x1e13d, +0x1e140, 0x1e149, +0x1e14e, 0x1e14f, +0x1e290, 0x1e2ae, +0x1e2c0, 0x1e2f9, +0x1e2ff, 0x1e2ff, +0x1e4d0, 0x1e4f9, +0x1e5d0, 0x1e5fa, +0x1e5ff, 0x1e5ff, +0x1e7e0, 0x1e7e6, +0x1e7e8, 0x1e7eb, +0x1e7ed, 0x1e7ee, +0x1e7f0, 0x1e7fe, +0x1e800, 0x1e8c4, +0x1e8c7, 0x1e8d6, +0x1e900, 0x1e94b, +0x1e950, 0x1e959, +0x1e95e, 0x1e95f, +0x1ec71, 0x1ecb4, +0x1ed01, 0x1ed3d, +0x1ee00, 0x1ee03, +0x1ee05, 0x1ee1f, +0x1ee21, 0x1ee22, +0x1ee24, 0x1ee24, +0x1ee27, 0x1ee27, +0x1ee29, 0x1ee32, +0x1ee34, 0x1ee37, +0x1ee39, 0x1ee39, +0x1ee3b, 0x1ee3b, +0x1ee42, 0x1ee42, +0x1ee47, 0x1ee47, +0x1ee49, 0x1ee49, +0x1ee4b, 0x1ee4b, +0x1ee4d, 0x1ee4f, +0x1ee51, 0x1ee52, +0x1ee54, 0x1ee54, +0x1ee57, 0x1ee57, +0x1ee59, 0x1ee59, +0x1ee5b, 0x1ee5b, +0x1ee5d, 0x1ee5d, +0x1ee5f, 0x1ee5f, +0x1ee61, 0x1ee62, +0x1ee64, 0x1ee64, +0x1ee67, 0x1ee6a, +0x1ee6c, 0x1ee72, +0x1ee74, 0x1ee77, +0x1ee79, 0x1ee7c, +0x1ee7e, 0x1ee7e, +0x1ee80, 0x1ee89, +0x1ee8b, 0x1ee9b, +0x1eea1, 0x1eea3, +0x1eea5, 0x1eea9, +0x1eeab, 0x1eebb, +0x1eef0, 0x1eef1, +0x1f000, 0x1f02b, +0x1f030, 0x1f093, +0x1f0a0, 0x1f0ae, +0x1f0b1, 0x1f0bf, +0x1f0c1, 0x1f0cf, +0x1f0d1, 0x1f0f5, +0x1f100, 0x1f1ad, +0x1f1e6, 0x1f202, +0x1f210, 0x1f23b, +0x1f240, 0x1f248, +0x1f250, 0x1f251, +0x1f260, 0x1f265, +0x1f300, 0x1f6d7, +0x1f6dc, 0x1f6ec, +0x1f6f0, 0x1f6fc, +0x1f700, 0x1f776, +0x1f77b, 0x1f7d9, +0x1f7e0, 0x1f7eb, +0x1f7f0, 0x1f7f0, +0x1f800, 0x1f80b, +0x1f810, 0x1f847, +0x1f850, 0x1f859, +0x1f860, 0x1f887, +0x1f890, 0x1f8ad, +0x1f8b0, 0x1f8bb, +0x1f8c0, 0x1f8c1, +0x1f900, 0x1fa53, +0x1fa60, 0x1fa6d, +0x1fa70, 0x1fa7c, +0x1fa80, 0x1fa89, +0x1fa8f, 0x1fac6, +0x1face, 0x1fadc, +0x1fadf, 0x1fae9, +0x1faf0, 0x1faf8, +0x1fb00, 0x1fb92, +0x1fb94, 0x1fbf9, +0x20000, 0x2a6df, +0x2a700, 0x2b739, +0x2b740, 0x2b81d, +0x2b820, 0x2cea1, +0x2ceb0, 0x2ebe0, +0x2ebf0, 0x2ee5d, +0x2f800, 0x2fa1d, +0x30000, 0x3134a, +0x31350, 0x323af, +0xe0001, 0xe0001, +0xe0020, 0xe007f, +0xe0100, 0xe01ef, +0xf0000, 0xffffd, +0x100000, 0x10fffd, +}; /* END of CR_Print */ + +/* PROPERTY: 'PosixPunct': POSIX [[:punct:]] */ +static const OnigCodePoint +CR_PosixPunct[] = { 349, +0x0021, 0x002f, +0x003a, 0x0040, +0x005b, 0x0060, +0x007b, 0x007e, +0x00a1, 0x00a9, +0x00ab, 0x00ac, +0x00ae, 0x00b1, +0x00b4, 0x00b4, +0x00b6, 0x00b8, +0x00bb, 0x00bb, +0x00bf, 0x00bf, +0x00d7, 0x00d7, +0x00f7, 0x00f7, +0x02c2, 0x02c5, +0x02d2, 0x02df, +0x02e5, 0x02eb, +0x02ed, 0x02ed, +0x02ef, 0x02ff, +0x0375, 0x0375, +0x037e, 0x037e, +0x0384, 0x0385, +0x0387, 0x0387, +0x03f6, 0x03f6, +0x0482, 0x0482, +0x055a, 0x055f, +0x0589, 0x058a, +0x058d, 0x058f, +0x05be, 0x05be, +0x05c0, 0x05c0, +0x05c3, 0x05c3, +0x05c6, 0x05c6, +0x05f3, 0x05f4, +0x0606, 0x060f, +0x061b, 0x061b, +0x061d, 0x061f, +0x066a, 0x066d, +0x06d4, 0x06d4, +0x06de, 0x06de, +0x06e9, 0x06e9, +0x06fd, 0x06fe, +0x0700, 0x070d, +0x07f6, 0x07f9, +0x07fe, 0x07ff, +0x0830, 0x083e, +0x085e, 0x085e, +0x0888, 0x0888, +0x0964, 0x0965, +0x0970, 0x0970, +0x09f2, 0x09f3, +0x09fa, 0x09fb, +0x09fd, 0x09fd, +0x0a76, 0x0a76, +0x0af0, 0x0af1, +0x0b70, 0x0b70, +0x0bf3, 0x0bfa, +0x0c77, 0x0c77, +0x0c7f, 0x0c7f, +0x0c84, 0x0c84, +0x0d4f, 0x0d4f, +0x0d79, 0x0d79, +0x0df4, 0x0df4, +0x0e3f, 0x0e3f, +0x0e4f, 0x0e4f, +0x0e5a, 0x0e5b, +0x0f01, 0x0f17, +0x0f1a, 0x0f1f, +0x0f34, 0x0f34, +0x0f36, 0x0f36, +0x0f38, 0x0f38, +0x0f3a, 0x0f3d, +0x0f85, 0x0f85, +0x0fbe, 0x0fc5, +0x0fc7, 0x0fcc, +0x0fce, 0x0fda, +0x104a, 0x104f, +0x109e, 0x109f, +0x10fb, 0x10fb, +0x1360, 0x1368, +0x1390, 0x1399, +0x1400, 0x1400, +0x166d, 0x166e, +0x169b, 0x169c, +0x16eb, 0x16ed, +0x1735, 0x1736, +0x17d4, 0x17d6, +0x17d8, 0x17db, +0x1800, 0x180a, +0x1940, 0x1940, +0x1944, 0x1945, +0x19de, 0x19ff, +0x1a1e, 0x1a1f, +0x1aa0, 0x1aa6, +0x1aa8, 0x1aad, +0x1b4e, 0x1b4f, +0x1b5a, 0x1b6a, +0x1b74, 0x1b7f, +0x1bfc, 0x1bff, +0x1c3b, 0x1c3f, +0x1c7e, 0x1c7f, +0x1cc0, 0x1cc7, +0x1cd3, 0x1cd3, +0x1fbd, 0x1fbd, +0x1fbf, 0x1fc1, +0x1fcd, 0x1fcf, +0x1fdd, 0x1fdf, +0x1fed, 0x1fef, +0x1ffd, 0x1ffe, +0x2010, 0x2027, +0x2030, 0x205e, +0x207a, 0x207e, +0x208a, 0x208e, +0x20a0, 0x20c0, +0x2100, 0x2101, +0x2103, 0x2106, +0x2108, 0x2109, +0x2114, 0x2114, +0x2116, 0x2118, +0x211e, 0x2123, +0x2125, 0x2125, +0x2127, 0x2127, +0x2129, 0x2129, +0x212e, 0x212e, +0x213a, 0x213b, +0x2140, 0x2144, +0x214a, 0x214d, +0x214f, 0x214f, +0x218a, 0x218b, +0x2190, 0x2429, +0x2440, 0x244a, +0x249c, 0x24e9, +0x2500, 0x2775, +0x2794, 0x2b73, +0x2b76, 0x2b95, +0x2b97, 0x2bff, +0x2ce5, 0x2cea, +0x2cf9, 0x2cfc, +0x2cfe, 0x2cff, +0x2d70, 0x2d70, +0x2e00, 0x2e2e, +0x2e30, 0x2e5d, +0x2e80, 0x2e99, +0x2e9b, 0x2ef3, +0x2f00, 0x2fd5, +0x2ff0, 0x2fff, +0x3001, 0x3004, +0x3008, 0x3020, +0x3030, 0x3030, +0x3036, 0x3037, +0x303d, 0x303f, +0x309b, 0x309c, +0x30a0, 0x30a0, +0x30fb, 0x30fb, +0x3190, 0x3191, +0x3196, 0x319f, +0x31c0, 0x31e5, +0x31ef, 0x31ef, +0x3200, 0x321e, +0x322a, 0x3247, +0x3250, 0x3250, +0x3260, 0x327f, +0x328a, 0x32b0, +0x32c0, 0x33ff, +0x4dc0, 0x4dff, +0xa490, 0xa4c6, +0xa4fe, 0xa4ff, +0xa60d, 0xa60f, +0xa673, 0xa673, +0xa67e, 0xa67e, +0xa6f2, 0xa6f7, +0xa700, 0xa716, +0xa720, 0xa721, +0xa789, 0xa78a, +0xa828, 0xa82b, +0xa836, 0xa839, +0xa874, 0xa877, +0xa8ce, 0xa8cf, +0xa8f8, 0xa8fa, +0xa8fc, 0xa8fc, +0xa92e, 0xa92f, +0xa95f, 0xa95f, +0xa9c1, 0xa9cd, +0xa9de, 0xa9df, +0xaa5c, 0xaa5f, +0xaa77, 0xaa79, +0xaade, 0xaadf, +0xaaf0, 0xaaf1, +0xab5b, 0xab5b, +0xab6a, 0xab6b, +0xabeb, 0xabeb, +0xfb29, 0xfb29, +0xfbb2, 0xfbc2, +0xfd3e, 0xfd4f, +0xfdcf, 0xfdcf, +0xfdfc, 0xfdff, +0xfe10, 0xfe19, +0xfe30, 0xfe52, +0xfe54, 0xfe66, +0xfe68, 0xfe6b, +0xff01, 0xff0f, +0xff1a, 0xff20, +0xff3b, 0xff40, +0xff5b, 0xff65, +0xffe0, 0xffe6, +0xffe8, 0xffee, +0xfffc, 0xfffd, +0x10100, 0x10102, +0x10137, 0x1013f, +0x10179, 0x10189, +0x1018c, 0x1018e, +0x10190, 0x1019c, +0x101a0, 0x101a0, +0x101d0, 0x101fc, +0x1039f, 0x1039f, +0x103d0, 0x103d0, +0x1056f, 0x1056f, +0x10857, 0x10857, +0x10877, 0x10878, +0x1091f, 0x1091f, +0x1093f, 0x1093f, +0x10a50, 0x10a58, +0x10a7f, 0x10a7f, +0x10ac8, 0x10ac8, +0x10af0, 0x10af6, +0x10b39, 0x10b3f, +0x10b99, 0x10b9c, +0x10d6e, 0x10d6e, +0x10d8e, 0x10d8f, +0x10ead, 0x10ead, +0x10f55, 0x10f59, +0x10f86, 0x10f89, +0x11047, 0x1104d, +0x110bb, 0x110bc, +0x110be, 0x110c1, +0x11140, 0x11143, +0x11174, 0x11175, +0x111c5, 0x111c8, +0x111cd, 0x111cd, +0x111db, 0x111db, +0x111dd, 0x111df, +0x11238, 0x1123d, +0x112a9, 0x112a9, +0x113d4, 0x113d5, +0x113d7, 0x113d8, +0x1144b, 0x1144f, +0x1145a, 0x1145b, +0x1145d, 0x1145d, +0x114c6, 0x114c6, +0x115c1, 0x115d7, +0x11641, 0x11643, +0x11660, 0x1166c, +0x116b9, 0x116b9, +0x1173c, 0x1173f, +0x1183b, 0x1183b, +0x11944, 0x11946, +0x119e2, 0x119e2, +0x11a3f, 0x11a46, +0x11a9a, 0x11a9c, +0x11a9e, 0x11aa2, +0x11b00, 0x11b09, +0x11be1, 0x11be1, +0x11c41, 0x11c45, +0x11c70, 0x11c71, +0x11ef7, 0x11ef8, +0x11f43, 0x11f4f, +0x11fd5, 0x11ff1, +0x11fff, 0x11fff, +0x12470, 0x12474, +0x12ff1, 0x12ff2, +0x16a6e, 0x16a6f, +0x16af5, 0x16af5, +0x16b37, 0x16b3f, +0x16b44, 0x16b45, +0x16d6d, 0x16d6f, +0x16e97, 0x16e9a, +0x16fe2, 0x16fe2, +0x1bc9c, 0x1bc9c, +0x1bc9f, 0x1bc9f, +0x1cc00, 0x1ccef, +0x1cd00, 0x1ceb3, +0x1cf50, 0x1cfc3, +0x1d000, 0x1d0f5, +0x1d100, 0x1d126, +0x1d129, 0x1d164, +0x1d16a, 0x1d16c, +0x1d183, 0x1d184, +0x1d18c, 0x1d1a9, +0x1d1ae, 0x1d1ea, +0x1d200, 0x1d241, +0x1d245, 0x1d245, +0x1d300, 0x1d356, +0x1d6c1, 0x1d6c1, +0x1d6db, 0x1d6db, +0x1d6fb, 0x1d6fb, +0x1d715, 0x1d715, +0x1d735, 0x1d735, +0x1d74f, 0x1d74f, +0x1d76f, 0x1d76f, +0x1d789, 0x1d789, +0x1d7a9, 0x1d7a9, +0x1d7c3, 0x1d7c3, +0x1d800, 0x1d9ff, +0x1da37, 0x1da3a, +0x1da6d, 0x1da74, +0x1da76, 0x1da83, +0x1da85, 0x1da8b, +0x1e14f, 0x1e14f, +0x1e2ff, 0x1e2ff, +0x1e5ff, 0x1e5ff, +0x1e95e, 0x1e95f, +0x1ecac, 0x1ecac, +0x1ecb0, 0x1ecb0, +0x1ed2e, 0x1ed2e, +0x1eef0, 0x1eef1, +0x1f000, 0x1f02b, +0x1f030, 0x1f093, +0x1f0a0, 0x1f0ae, +0x1f0b1, 0x1f0bf, +0x1f0c1, 0x1f0cf, +0x1f0d1, 0x1f0f5, +0x1f10d, 0x1f1ad, +0x1f1e6, 0x1f202, +0x1f210, 0x1f23b, +0x1f240, 0x1f248, +0x1f250, 0x1f251, +0x1f260, 0x1f265, +0x1f300, 0x1f6d7, +0x1f6dc, 0x1f6ec, +0x1f6f0, 0x1f6fc, +0x1f700, 0x1f776, +0x1f77b, 0x1f7d9, +0x1f7e0, 0x1f7eb, +0x1f7f0, 0x1f7f0, +0x1f800, 0x1f80b, +0x1f810, 0x1f847, +0x1f850, 0x1f859, +0x1f860, 0x1f887, +0x1f890, 0x1f8ad, +0x1f8b0, 0x1f8bb, +0x1f8c0, 0x1f8c1, +0x1f900, 0x1fa53, +0x1fa60, 0x1fa6d, +0x1fa70, 0x1fa7c, +0x1fa80, 0x1fa89, +0x1fa8f, 0x1fac6, +0x1face, 0x1fadc, +0x1fadf, 0x1fae9, +0x1faf0, 0x1faf8, +0x1fb00, 0x1fb92, +0x1fb94, 0x1fbef, +}; /* END of CR_PosixPunct */ + +/* PROPERTY: 'Space': POSIX [[:Space:]] */ +static const OnigCodePoint +CR_Space[] = { 10, +0x0009, 0x000d, +0x0020, 0x0020, +0x0085, 0x0085, +0x00a0, 0x00a0, +0x1680, 0x1680, +0x2000, 0x200a, +0x2028, 0x2029, +0x202f, 0x202f, +0x205f, 0x205f, +0x3000, 0x3000, +}; /* END of CR_Space */ + +/* PROPERTY: 'Upper': POSIX [[:Upper:]] */ +static const OnigCodePoint +CR_Upper[] = { 656, +0x0041, 0x005a, +0x00c0, 0x00d6, +0x00d8, 0x00de, +0x0100, 0x0100, +0x0102, 0x0102, +0x0104, 0x0104, +0x0106, 0x0106, +0x0108, 0x0108, +0x010a, 0x010a, +0x010c, 0x010c, +0x010e, 0x010e, +0x0110, 0x0110, +0x0112, 0x0112, +0x0114, 0x0114, +0x0116, 0x0116, +0x0118, 0x0118, +0x011a, 0x011a, +0x011c, 0x011c, +0x011e, 0x011e, +0x0120, 0x0120, +0x0122, 0x0122, +0x0124, 0x0124, +0x0126, 0x0126, +0x0128, 0x0128, +0x012a, 0x012a, +0x012c, 0x012c, +0x012e, 0x012e, +0x0130, 0x0130, +0x0132, 0x0132, +0x0134, 0x0134, +0x0136, 0x0136, +0x0139, 0x0139, +0x013b, 0x013b, +0x013d, 0x013d, +0x013f, 0x013f, +0x0141, 0x0141, +0x0143, 0x0143, +0x0145, 0x0145, +0x0147, 0x0147, +0x014a, 0x014a, +0x014c, 0x014c, +0x014e, 0x014e, +0x0150, 0x0150, +0x0152, 0x0152, +0x0154, 0x0154, +0x0156, 0x0156, +0x0158, 0x0158, +0x015a, 0x015a, +0x015c, 0x015c, +0x015e, 0x015e, +0x0160, 0x0160, +0x0162, 0x0162, +0x0164, 0x0164, +0x0166, 0x0166, +0x0168, 0x0168, +0x016a, 0x016a, +0x016c, 0x016c, +0x016e, 0x016e, +0x0170, 0x0170, +0x0172, 0x0172, +0x0174, 0x0174, +0x0176, 0x0176, +0x0178, 0x0179, +0x017b, 0x017b, +0x017d, 0x017d, +0x0181, 0x0182, +0x0184, 0x0184, +0x0186, 0x0187, +0x0189, 0x018b, +0x018e, 0x0191, +0x0193, 0x0194, +0x0196, 0x0198, +0x019c, 0x019d, +0x019f, 0x01a0, +0x01a2, 0x01a2, +0x01a4, 0x01a4, +0x01a6, 0x01a7, +0x01a9, 0x01a9, +0x01ac, 0x01ac, +0x01ae, 0x01af, +0x01b1, 0x01b3, +0x01b5, 0x01b5, +0x01b7, 0x01b8, +0x01bc, 0x01bc, +0x01c4, 0x01c4, +0x01c7, 0x01c7, +0x01ca, 0x01ca, +0x01cd, 0x01cd, +0x01cf, 0x01cf, +0x01d1, 0x01d1, +0x01d3, 0x01d3, +0x01d5, 0x01d5, +0x01d7, 0x01d7, +0x01d9, 0x01d9, +0x01db, 0x01db, +0x01de, 0x01de, +0x01e0, 0x01e0, +0x01e2, 0x01e2, +0x01e4, 0x01e4, +0x01e6, 0x01e6, +0x01e8, 0x01e8, +0x01ea, 0x01ea, +0x01ec, 0x01ec, +0x01ee, 0x01ee, +0x01f1, 0x01f1, +0x01f4, 0x01f4, +0x01f6, 0x01f8, +0x01fa, 0x01fa, +0x01fc, 0x01fc, +0x01fe, 0x01fe, +0x0200, 0x0200, +0x0202, 0x0202, +0x0204, 0x0204, +0x0206, 0x0206, +0x0208, 0x0208, +0x020a, 0x020a, +0x020c, 0x020c, +0x020e, 0x020e, +0x0210, 0x0210, +0x0212, 0x0212, +0x0214, 0x0214, +0x0216, 0x0216, +0x0218, 0x0218, +0x021a, 0x021a, +0x021c, 0x021c, +0x021e, 0x021e, +0x0220, 0x0220, +0x0222, 0x0222, +0x0224, 0x0224, +0x0226, 0x0226, +0x0228, 0x0228, +0x022a, 0x022a, +0x022c, 0x022c, +0x022e, 0x022e, +0x0230, 0x0230, +0x0232, 0x0232, +0x023a, 0x023b, +0x023d, 0x023e, +0x0241, 0x0241, +0x0243, 0x0246, +0x0248, 0x0248, +0x024a, 0x024a, +0x024c, 0x024c, +0x024e, 0x024e, +0x0370, 0x0370, +0x0372, 0x0372, +0x0376, 0x0376, +0x037f, 0x037f, +0x0386, 0x0386, +0x0388, 0x038a, +0x038c, 0x038c, +0x038e, 0x038f, +0x0391, 0x03a1, +0x03a3, 0x03ab, +0x03cf, 0x03cf, +0x03d2, 0x03d4, +0x03d8, 0x03d8, +0x03da, 0x03da, +0x03dc, 0x03dc, +0x03de, 0x03de, +0x03e0, 0x03e0, +0x03e2, 0x03e2, +0x03e4, 0x03e4, +0x03e6, 0x03e6, +0x03e8, 0x03e8, +0x03ea, 0x03ea, +0x03ec, 0x03ec, +0x03ee, 0x03ee, +0x03f4, 0x03f4, +0x03f7, 0x03f7, +0x03f9, 0x03fa, +0x03fd, 0x042f, +0x0460, 0x0460, +0x0462, 0x0462, +0x0464, 0x0464, +0x0466, 0x0466, +0x0468, 0x0468, +0x046a, 0x046a, +0x046c, 0x046c, +0x046e, 0x046e, +0x0470, 0x0470, +0x0472, 0x0472, +0x0474, 0x0474, +0x0476, 0x0476, +0x0478, 0x0478, +0x047a, 0x047a, +0x047c, 0x047c, +0x047e, 0x047e, +0x0480, 0x0480, +0x048a, 0x048a, +0x048c, 0x048c, +0x048e, 0x048e, +0x0490, 0x0490, +0x0492, 0x0492, +0x0494, 0x0494, +0x0496, 0x0496, +0x0498, 0x0498, +0x049a, 0x049a, +0x049c, 0x049c, +0x049e, 0x049e, +0x04a0, 0x04a0, +0x04a2, 0x04a2, +0x04a4, 0x04a4, +0x04a6, 0x04a6, +0x04a8, 0x04a8, +0x04aa, 0x04aa, +0x04ac, 0x04ac, +0x04ae, 0x04ae, +0x04b0, 0x04b0, +0x04b2, 0x04b2, +0x04b4, 0x04b4, +0x04b6, 0x04b6, +0x04b8, 0x04b8, +0x04ba, 0x04ba, +0x04bc, 0x04bc, +0x04be, 0x04be, +0x04c0, 0x04c1, +0x04c3, 0x04c3, +0x04c5, 0x04c5, +0x04c7, 0x04c7, +0x04c9, 0x04c9, +0x04cb, 0x04cb, +0x04cd, 0x04cd, +0x04d0, 0x04d0, +0x04d2, 0x04d2, +0x04d4, 0x04d4, +0x04d6, 0x04d6, +0x04d8, 0x04d8, +0x04da, 0x04da, +0x04dc, 0x04dc, +0x04de, 0x04de, +0x04e0, 0x04e0, +0x04e2, 0x04e2, +0x04e4, 0x04e4, +0x04e6, 0x04e6, +0x04e8, 0x04e8, +0x04ea, 0x04ea, +0x04ec, 0x04ec, +0x04ee, 0x04ee, +0x04f0, 0x04f0, +0x04f2, 0x04f2, +0x04f4, 0x04f4, +0x04f6, 0x04f6, +0x04f8, 0x04f8, +0x04fa, 0x04fa, +0x04fc, 0x04fc, +0x04fe, 0x04fe, +0x0500, 0x0500, +0x0502, 0x0502, +0x0504, 0x0504, +0x0506, 0x0506, +0x0508, 0x0508, +0x050a, 0x050a, +0x050c, 0x050c, +0x050e, 0x050e, +0x0510, 0x0510, +0x0512, 0x0512, +0x0514, 0x0514, +0x0516, 0x0516, +0x0518, 0x0518, +0x051a, 0x051a, +0x051c, 0x051c, +0x051e, 0x051e, +0x0520, 0x0520, +0x0522, 0x0522, +0x0524, 0x0524, +0x0526, 0x0526, +0x0528, 0x0528, +0x052a, 0x052a, +0x052c, 0x052c, +0x052e, 0x052e, +0x0531, 0x0556, +0x10a0, 0x10c5, +0x10c7, 0x10c7, +0x10cd, 0x10cd, +0x13a0, 0x13f5, +0x1c89, 0x1c89, +0x1c90, 0x1cba, +0x1cbd, 0x1cbf, +0x1e00, 0x1e00, +0x1e02, 0x1e02, +0x1e04, 0x1e04, +0x1e06, 0x1e06, +0x1e08, 0x1e08, +0x1e0a, 0x1e0a, +0x1e0c, 0x1e0c, +0x1e0e, 0x1e0e, +0x1e10, 0x1e10, +0x1e12, 0x1e12, +0x1e14, 0x1e14, +0x1e16, 0x1e16, +0x1e18, 0x1e18, +0x1e1a, 0x1e1a, +0x1e1c, 0x1e1c, +0x1e1e, 0x1e1e, +0x1e20, 0x1e20, +0x1e22, 0x1e22, +0x1e24, 0x1e24, +0x1e26, 0x1e26, +0x1e28, 0x1e28, +0x1e2a, 0x1e2a, +0x1e2c, 0x1e2c, +0x1e2e, 0x1e2e, +0x1e30, 0x1e30, +0x1e32, 0x1e32, +0x1e34, 0x1e34, +0x1e36, 0x1e36, +0x1e38, 0x1e38, +0x1e3a, 0x1e3a, +0x1e3c, 0x1e3c, +0x1e3e, 0x1e3e, +0x1e40, 0x1e40, +0x1e42, 0x1e42, +0x1e44, 0x1e44, +0x1e46, 0x1e46, +0x1e48, 0x1e48, +0x1e4a, 0x1e4a, +0x1e4c, 0x1e4c, +0x1e4e, 0x1e4e, +0x1e50, 0x1e50, +0x1e52, 0x1e52, +0x1e54, 0x1e54, +0x1e56, 0x1e56, +0x1e58, 0x1e58, +0x1e5a, 0x1e5a, +0x1e5c, 0x1e5c, +0x1e5e, 0x1e5e, +0x1e60, 0x1e60, +0x1e62, 0x1e62, +0x1e64, 0x1e64, +0x1e66, 0x1e66, +0x1e68, 0x1e68, +0x1e6a, 0x1e6a, +0x1e6c, 0x1e6c, +0x1e6e, 0x1e6e, +0x1e70, 0x1e70, +0x1e72, 0x1e72, +0x1e74, 0x1e74, +0x1e76, 0x1e76, +0x1e78, 0x1e78, +0x1e7a, 0x1e7a, +0x1e7c, 0x1e7c, +0x1e7e, 0x1e7e, +0x1e80, 0x1e80, +0x1e82, 0x1e82, +0x1e84, 0x1e84, +0x1e86, 0x1e86, +0x1e88, 0x1e88, +0x1e8a, 0x1e8a, +0x1e8c, 0x1e8c, +0x1e8e, 0x1e8e, +0x1e90, 0x1e90, +0x1e92, 0x1e92, +0x1e94, 0x1e94, +0x1e9e, 0x1e9e, +0x1ea0, 0x1ea0, +0x1ea2, 0x1ea2, +0x1ea4, 0x1ea4, +0x1ea6, 0x1ea6, +0x1ea8, 0x1ea8, +0x1eaa, 0x1eaa, +0x1eac, 0x1eac, +0x1eae, 0x1eae, +0x1eb0, 0x1eb0, +0x1eb2, 0x1eb2, +0x1eb4, 0x1eb4, +0x1eb6, 0x1eb6, +0x1eb8, 0x1eb8, +0x1eba, 0x1eba, +0x1ebc, 0x1ebc, +0x1ebe, 0x1ebe, +0x1ec0, 0x1ec0, +0x1ec2, 0x1ec2, +0x1ec4, 0x1ec4, +0x1ec6, 0x1ec6, +0x1ec8, 0x1ec8, +0x1eca, 0x1eca, +0x1ecc, 0x1ecc, +0x1ece, 0x1ece, +0x1ed0, 0x1ed0, +0x1ed2, 0x1ed2, +0x1ed4, 0x1ed4, +0x1ed6, 0x1ed6, +0x1ed8, 0x1ed8, +0x1eda, 0x1eda, +0x1edc, 0x1edc, +0x1ede, 0x1ede, +0x1ee0, 0x1ee0, +0x1ee2, 0x1ee2, +0x1ee4, 0x1ee4, +0x1ee6, 0x1ee6, +0x1ee8, 0x1ee8, +0x1eea, 0x1eea, +0x1eec, 0x1eec, +0x1eee, 0x1eee, +0x1ef0, 0x1ef0, +0x1ef2, 0x1ef2, +0x1ef4, 0x1ef4, +0x1ef6, 0x1ef6, +0x1ef8, 0x1ef8, +0x1efa, 0x1efa, +0x1efc, 0x1efc, +0x1efe, 0x1efe, +0x1f08, 0x1f0f, +0x1f18, 0x1f1d, +0x1f28, 0x1f2f, +0x1f38, 0x1f3f, +0x1f48, 0x1f4d, +0x1f59, 0x1f59, +0x1f5b, 0x1f5b, +0x1f5d, 0x1f5d, +0x1f5f, 0x1f5f, +0x1f68, 0x1f6f, +0x1fb8, 0x1fbb, +0x1fc8, 0x1fcb, +0x1fd8, 0x1fdb, +0x1fe8, 0x1fec, +0x1ff8, 0x1ffb, +0x2102, 0x2102, +0x2107, 0x2107, +0x210b, 0x210d, +0x2110, 0x2112, +0x2115, 0x2115, +0x2119, 0x211d, +0x2124, 0x2124, +0x2126, 0x2126, +0x2128, 0x2128, +0x212a, 0x212d, +0x2130, 0x2133, +0x213e, 0x213f, +0x2145, 0x2145, +0x2160, 0x216f, +0x2183, 0x2183, +0x24b6, 0x24cf, +0x2c00, 0x2c2f, +0x2c60, 0x2c60, +0x2c62, 0x2c64, +0x2c67, 0x2c67, +0x2c69, 0x2c69, +0x2c6b, 0x2c6b, +0x2c6d, 0x2c70, +0x2c72, 0x2c72, +0x2c75, 0x2c75, +0x2c7e, 0x2c80, +0x2c82, 0x2c82, +0x2c84, 0x2c84, +0x2c86, 0x2c86, +0x2c88, 0x2c88, +0x2c8a, 0x2c8a, +0x2c8c, 0x2c8c, +0x2c8e, 0x2c8e, +0x2c90, 0x2c90, +0x2c92, 0x2c92, +0x2c94, 0x2c94, +0x2c96, 0x2c96, +0x2c98, 0x2c98, +0x2c9a, 0x2c9a, +0x2c9c, 0x2c9c, +0x2c9e, 0x2c9e, +0x2ca0, 0x2ca0, +0x2ca2, 0x2ca2, +0x2ca4, 0x2ca4, +0x2ca6, 0x2ca6, +0x2ca8, 0x2ca8, +0x2caa, 0x2caa, +0x2cac, 0x2cac, +0x2cae, 0x2cae, +0x2cb0, 0x2cb0, +0x2cb2, 0x2cb2, +0x2cb4, 0x2cb4, +0x2cb6, 0x2cb6, +0x2cb8, 0x2cb8, +0x2cba, 0x2cba, +0x2cbc, 0x2cbc, +0x2cbe, 0x2cbe, +0x2cc0, 0x2cc0, +0x2cc2, 0x2cc2, +0x2cc4, 0x2cc4, +0x2cc6, 0x2cc6, +0x2cc8, 0x2cc8, +0x2cca, 0x2cca, +0x2ccc, 0x2ccc, +0x2cce, 0x2cce, +0x2cd0, 0x2cd0, +0x2cd2, 0x2cd2, +0x2cd4, 0x2cd4, +0x2cd6, 0x2cd6, +0x2cd8, 0x2cd8, +0x2cda, 0x2cda, +0x2cdc, 0x2cdc, +0x2cde, 0x2cde, +0x2ce0, 0x2ce0, +0x2ce2, 0x2ce2, +0x2ceb, 0x2ceb, +0x2ced, 0x2ced, +0x2cf2, 0x2cf2, +0xa640, 0xa640, +0xa642, 0xa642, +0xa644, 0xa644, +0xa646, 0xa646, +0xa648, 0xa648, +0xa64a, 0xa64a, +0xa64c, 0xa64c, +0xa64e, 0xa64e, +0xa650, 0xa650, +0xa652, 0xa652, +0xa654, 0xa654, +0xa656, 0xa656, +0xa658, 0xa658, +0xa65a, 0xa65a, +0xa65c, 0xa65c, +0xa65e, 0xa65e, +0xa660, 0xa660, +0xa662, 0xa662, +0xa664, 0xa664, +0xa666, 0xa666, +0xa668, 0xa668, +0xa66a, 0xa66a, +0xa66c, 0xa66c, +0xa680, 0xa680, +0xa682, 0xa682, +0xa684, 0xa684, +0xa686, 0xa686, +0xa688, 0xa688, +0xa68a, 0xa68a, +0xa68c, 0xa68c, +0xa68e, 0xa68e, +0xa690, 0xa690, +0xa692, 0xa692, +0xa694, 0xa694, +0xa696, 0xa696, +0xa698, 0xa698, +0xa69a, 0xa69a, +0xa722, 0xa722, +0xa724, 0xa724, +0xa726, 0xa726, +0xa728, 0xa728, +0xa72a, 0xa72a, +0xa72c, 0xa72c, +0xa72e, 0xa72e, +0xa732, 0xa732, +0xa734, 0xa734, +0xa736, 0xa736, +0xa738, 0xa738, +0xa73a, 0xa73a, +0xa73c, 0xa73c, +0xa73e, 0xa73e, +0xa740, 0xa740, +0xa742, 0xa742, +0xa744, 0xa744, +0xa746, 0xa746, +0xa748, 0xa748, +0xa74a, 0xa74a, +0xa74c, 0xa74c, +0xa74e, 0xa74e, +0xa750, 0xa750, +0xa752, 0xa752, +0xa754, 0xa754, +0xa756, 0xa756, +0xa758, 0xa758, +0xa75a, 0xa75a, +0xa75c, 0xa75c, +0xa75e, 0xa75e, +0xa760, 0xa760, +0xa762, 0xa762, +0xa764, 0xa764, +0xa766, 0xa766, +0xa768, 0xa768, +0xa76a, 0xa76a, +0xa76c, 0xa76c, +0xa76e, 0xa76e, +0xa779, 0xa779, +0xa77b, 0xa77b, +0xa77d, 0xa77e, +0xa780, 0xa780, +0xa782, 0xa782, +0xa784, 0xa784, +0xa786, 0xa786, +0xa78b, 0xa78b, +0xa78d, 0xa78d, +0xa790, 0xa790, +0xa792, 0xa792, +0xa796, 0xa796, +0xa798, 0xa798, +0xa79a, 0xa79a, +0xa79c, 0xa79c, +0xa79e, 0xa79e, +0xa7a0, 0xa7a0, +0xa7a2, 0xa7a2, +0xa7a4, 0xa7a4, +0xa7a6, 0xa7a6, +0xa7a8, 0xa7a8, +0xa7aa, 0xa7ae, +0xa7b0, 0xa7b4, +0xa7b6, 0xa7b6, +0xa7b8, 0xa7b8, +0xa7ba, 0xa7ba, +0xa7bc, 0xa7bc, +0xa7be, 0xa7be, +0xa7c0, 0xa7c0, +0xa7c2, 0xa7c2, +0xa7c4, 0xa7c7, +0xa7c9, 0xa7c9, +0xa7cb, 0xa7cc, +0xa7d0, 0xa7d0, +0xa7d6, 0xa7d6, +0xa7d8, 0xa7d8, +0xa7da, 0xa7da, +0xa7dc, 0xa7dc, +0xa7f5, 0xa7f5, +0xff21, 0xff3a, +0x10400, 0x10427, +0x104b0, 0x104d3, +0x10570, 0x1057a, +0x1057c, 0x1058a, +0x1058c, 0x10592, +0x10594, 0x10595, +0x10c80, 0x10cb2, +0x10d50, 0x10d65, +0x118a0, 0x118bf, +0x16e40, 0x16e5f, +0x1d400, 0x1d419, +0x1d434, 0x1d44d, +0x1d468, 0x1d481, +0x1d49c, 0x1d49c, +0x1d49e, 0x1d49f, +0x1d4a2, 0x1d4a2, +0x1d4a5, 0x1d4a6, +0x1d4a9, 0x1d4ac, +0x1d4ae, 0x1d4b5, +0x1d4d0, 0x1d4e9, +0x1d504, 0x1d505, +0x1d507, 0x1d50a, +0x1d50d, 0x1d514, +0x1d516, 0x1d51c, +0x1d538, 0x1d539, +0x1d53b, 0x1d53e, +0x1d540, 0x1d544, +0x1d546, 0x1d546, +0x1d54a, 0x1d550, +0x1d56c, 0x1d585, +0x1d5a0, 0x1d5b9, +0x1d5d4, 0x1d5ed, +0x1d608, 0x1d621, +0x1d63c, 0x1d655, +0x1d670, 0x1d689, +0x1d6a8, 0x1d6c0, +0x1d6e2, 0x1d6fa, +0x1d71c, 0x1d734, +0x1d756, 0x1d76e, +0x1d790, 0x1d7a8, +0x1d7ca, 0x1d7ca, +0x1e900, 0x1e921, +0x1f130, 0x1f149, +0x1f150, 0x1f169, +0x1f170, 0x1f189, +}; /* END of CR_Upper */ + +/* PROPERTY: 'XDigit': POSIX [[:XDigit:]] */ +static const OnigCodePoint +CR_XDigit[] = { 3, +0x0030, 0x0039, +0x0041, 0x0046, +0x0061, 0x0066, +}; /* END of CR_XDigit */ + +/* PROPERTY: 'Word': POSIX [[:Word:]] */ +static const OnigCodePoint +CR_Word[] = { 795, +0x0030, 0x0039, +0x0041, 0x005a, +0x005f, 0x005f, +0x0061, 0x007a, +0x00aa, 0x00aa, +0x00b5, 0x00b5, +0x00ba, 0x00ba, +0x00c0, 0x00d6, +0x00d8, 0x00f6, +0x00f8, 0x02c1, +0x02c6, 0x02d1, +0x02e0, 0x02e4, +0x02ec, 0x02ec, +0x02ee, 0x02ee, +0x0300, 0x0374, +0x0376, 0x0377, +0x037a, 0x037d, +0x037f, 0x037f, +0x0386, 0x0386, +0x0388, 0x038a, +0x038c, 0x038c, +0x038e, 0x03a1, +0x03a3, 0x03f5, +0x03f7, 0x0481, +0x0483, 0x052f, +0x0531, 0x0556, +0x0559, 0x0559, +0x0560, 0x0588, +0x0591, 0x05bd, +0x05bf, 0x05bf, +0x05c1, 0x05c2, +0x05c4, 0x05c5, +0x05c7, 0x05c7, +0x05d0, 0x05ea, +0x05ef, 0x05f2, +0x0610, 0x061a, +0x0620, 0x0669, +0x066e, 0x06d3, +0x06d5, 0x06dc, +0x06df, 0x06e8, +0x06ea, 0x06fc, +0x06ff, 0x06ff, +0x0710, 0x074a, +0x074d, 0x07b1, +0x07c0, 0x07f5, +0x07fa, 0x07fa, +0x07fd, 0x07fd, +0x0800, 0x082d, +0x0840, 0x085b, +0x0860, 0x086a, +0x0870, 0x0887, +0x0889, 0x088e, +0x0897, 0x08e1, +0x08e3, 0x0963, +0x0966, 0x096f, +0x0971, 0x0983, +0x0985, 0x098c, +0x098f, 0x0990, +0x0993, 0x09a8, +0x09aa, 0x09b0, +0x09b2, 0x09b2, +0x09b6, 0x09b9, +0x09bc, 0x09c4, +0x09c7, 0x09c8, +0x09cb, 0x09ce, +0x09d7, 0x09d7, +0x09dc, 0x09dd, +0x09df, 0x09e3, +0x09e6, 0x09f1, +0x09fc, 0x09fc, +0x09fe, 0x09fe, +0x0a01, 0x0a03, +0x0a05, 0x0a0a, +0x0a0f, 0x0a10, +0x0a13, 0x0a28, +0x0a2a, 0x0a30, +0x0a32, 0x0a33, +0x0a35, 0x0a36, +0x0a38, 0x0a39, +0x0a3c, 0x0a3c, +0x0a3e, 0x0a42, +0x0a47, 0x0a48, +0x0a4b, 0x0a4d, +0x0a51, 0x0a51, +0x0a59, 0x0a5c, +0x0a5e, 0x0a5e, +0x0a66, 0x0a75, +0x0a81, 0x0a83, +0x0a85, 0x0a8d, +0x0a8f, 0x0a91, +0x0a93, 0x0aa8, +0x0aaa, 0x0ab0, +0x0ab2, 0x0ab3, +0x0ab5, 0x0ab9, +0x0abc, 0x0ac5, +0x0ac7, 0x0ac9, +0x0acb, 0x0acd, +0x0ad0, 0x0ad0, +0x0ae0, 0x0ae3, +0x0ae6, 0x0aef, +0x0af9, 0x0aff, +0x0b01, 0x0b03, +0x0b05, 0x0b0c, +0x0b0f, 0x0b10, +0x0b13, 0x0b28, +0x0b2a, 0x0b30, +0x0b32, 0x0b33, +0x0b35, 0x0b39, +0x0b3c, 0x0b44, +0x0b47, 0x0b48, +0x0b4b, 0x0b4d, +0x0b55, 0x0b57, +0x0b5c, 0x0b5d, +0x0b5f, 0x0b63, +0x0b66, 0x0b6f, +0x0b71, 0x0b71, +0x0b82, 0x0b83, +0x0b85, 0x0b8a, +0x0b8e, 0x0b90, +0x0b92, 0x0b95, +0x0b99, 0x0b9a, +0x0b9c, 0x0b9c, +0x0b9e, 0x0b9f, +0x0ba3, 0x0ba4, +0x0ba8, 0x0baa, +0x0bae, 0x0bb9, +0x0bbe, 0x0bc2, +0x0bc6, 0x0bc8, +0x0bca, 0x0bcd, +0x0bd0, 0x0bd0, +0x0bd7, 0x0bd7, +0x0be6, 0x0bef, +0x0c00, 0x0c0c, +0x0c0e, 0x0c10, +0x0c12, 0x0c28, +0x0c2a, 0x0c39, +0x0c3c, 0x0c44, +0x0c46, 0x0c48, +0x0c4a, 0x0c4d, +0x0c55, 0x0c56, +0x0c58, 0x0c5a, +0x0c5d, 0x0c5d, +0x0c60, 0x0c63, +0x0c66, 0x0c6f, +0x0c80, 0x0c83, +0x0c85, 0x0c8c, +0x0c8e, 0x0c90, +0x0c92, 0x0ca8, +0x0caa, 0x0cb3, +0x0cb5, 0x0cb9, +0x0cbc, 0x0cc4, +0x0cc6, 0x0cc8, +0x0cca, 0x0ccd, +0x0cd5, 0x0cd6, +0x0cdd, 0x0cde, +0x0ce0, 0x0ce3, +0x0ce6, 0x0cef, +0x0cf1, 0x0cf3, +0x0d00, 0x0d0c, +0x0d0e, 0x0d10, +0x0d12, 0x0d44, +0x0d46, 0x0d48, +0x0d4a, 0x0d4e, +0x0d54, 0x0d57, +0x0d5f, 0x0d63, +0x0d66, 0x0d6f, +0x0d7a, 0x0d7f, +0x0d81, 0x0d83, +0x0d85, 0x0d96, +0x0d9a, 0x0db1, +0x0db3, 0x0dbb, +0x0dbd, 0x0dbd, +0x0dc0, 0x0dc6, +0x0dca, 0x0dca, +0x0dcf, 0x0dd4, +0x0dd6, 0x0dd6, +0x0dd8, 0x0ddf, +0x0de6, 0x0def, +0x0df2, 0x0df3, +0x0e01, 0x0e3a, +0x0e40, 0x0e4e, +0x0e50, 0x0e59, +0x0e81, 0x0e82, +0x0e84, 0x0e84, +0x0e86, 0x0e8a, +0x0e8c, 0x0ea3, +0x0ea5, 0x0ea5, +0x0ea7, 0x0ebd, +0x0ec0, 0x0ec4, +0x0ec6, 0x0ec6, +0x0ec8, 0x0ece, +0x0ed0, 0x0ed9, +0x0edc, 0x0edf, +0x0f00, 0x0f00, +0x0f18, 0x0f19, +0x0f20, 0x0f29, +0x0f35, 0x0f35, +0x0f37, 0x0f37, +0x0f39, 0x0f39, +0x0f3e, 0x0f47, +0x0f49, 0x0f6c, +0x0f71, 0x0f84, +0x0f86, 0x0f97, +0x0f99, 0x0fbc, +0x0fc6, 0x0fc6, +0x1000, 0x1049, +0x1050, 0x109d, +0x10a0, 0x10c5, +0x10c7, 0x10c7, +0x10cd, 0x10cd, +0x10d0, 0x10fa, +0x10fc, 0x1248, +0x124a, 0x124d, +0x1250, 0x1256, +0x1258, 0x1258, +0x125a, 0x125d, +0x1260, 0x1288, +0x128a, 0x128d, +0x1290, 0x12b0, +0x12b2, 0x12b5, +0x12b8, 0x12be, +0x12c0, 0x12c0, +0x12c2, 0x12c5, +0x12c8, 0x12d6, +0x12d8, 0x1310, +0x1312, 0x1315, +0x1318, 0x135a, +0x135d, 0x135f, +0x1380, 0x138f, +0x13a0, 0x13f5, +0x13f8, 0x13fd, +0x1401, 0x166c, +0x166f, 0x167f, +0x1681, 0x169a, +0x16a0, 0x16ea, +0x16ee, 0x16f8, +0x1700, 0x1715, +0x171f, 0x1734, +0x1740, 0x1753, +0x1760, 0x176c, +0x176e, 0x1770, +0x1772, 0x1773, +0x1780, 0x17d3, +0x17d7, 0x17d7, +0x17dc, 0x17dd, +0x17e0, 0x17e9, +0x180b, 0x180d, +0x180f, 0x1819, +0x1820, 0x1878, +0x1880, 0x18aa, +0x18b0, 0x18f5, +0x1900, 0x191e, +0x1920, 0x192b, +0x1930, 0x193b, +0x1946, 0x196d, +0x1970, 0x1974, +0x1980, 0x19ab, +0x19b0, 0x19c9, +0x19d0, 0x19d9, +0x1a00, 0x1a1b, +0x1a20, 0x1a5e, +0x1a60, 0x1a7c, +0x1a7f, 0x1a89, +0x1a90, 0x1a99, +0x1aa7, 0x1aa7, +0x1ab0, 0x1ace, +0x1b00, 0x1b4c, +0x1b50, 0x1b59, +0x1b6b, 0x1b73, +0x1b80, 0x1bf3, +0x1c00, 0x1c37, +0x1c40, 0x1c49, +0x1c4d, 0x1c7d, +0x1c80, 0x1c8a, +0x1c90, 0x1cba, +0x1cbd, 0x1cbf, +0x1cd0, 0x1cd2, +0x1cd4, 0x1cfa, +0x1d00, 0x1f15, +0x1f18, 0x1f1d, +0x1f20, 0x1f45, +0x1f48, 0x1f4d, +0x1f50, 0x1f57, +0x1f59, 0x1f59, +0x1f5b, 0x1f5b, +0x1f5d, 0x1f5d, +0x1f5f, 0x1f7d, +0x1f80, 0x1fb4, +0x1fb6, 0x1fbc, +0x1fbe, 0x1fbe, +0x1fc2, 0x1fc4, +0x1fc6, 0x1fcc, +0x1fd0, 0x1fd3, +0x1fd6, 0x1fdb, +0x1fe0, 0x1fec, +0x1ff2, 0x1ff4, +0x1ff6, 0x1ffc, +0x203f, 0x2040, +0x2054, 0x2054, +0x2071, 0x2071, +0x207f, 0x207f, +0x2090, 0x209c, +0x20d0, 0x20f0, +0x2102, 0x2102, +0x2107, 0x2107, +0x210a, 0x2113, +0x2115, 0x2115, +0x2119, 0x211d, +0x2124, 0x2124, +0x2126, 0x2126, +0x2128, 0x2128, +0x212a, 0x212d, +0x212f, 0x2139, +0x213c, 0x213f, +0x2145, 0x2149, +0x214e, 0x214e, +0x2160, 0x2188, +0x24b6, 0x24e9, +0x2c00, 0x2ce4, +0x2ceb, 0x2cf3, +0x2d00, 0x2d25, +0x2d27, 0x2d27, +0x2d2d, 0x2d2d, +0x2d30, 0x2d67, +0x2d6f, 0x2d6f, +0x2d7f, 0x2d96, +0x2da0, 0x2da6, +0x2da8, 0x2dae, +0x2db0, 0x2db6, +0x2db8, 0x2dbe, +0x2dc0, 0x2dc6, +0x2dc8, 0x2dce, +0x2dd0, 0x2dd6, +0x2dd8, 0x2dde, +0x2de0, 0x2dff, +0x2e2f, 0x2e2f, +0x3005, 0x3007, +0x3021, 0x302f, +0x3031, 0x3035, +0x3038, 0x303c, +0x3041, 0x3096, +0x3099, 0x309a, +0x309d, 0x309f, +0x30a1, 0x30fa, +0x30fc, 0x30ff, +0x3105, 0x312f, +0x3131, 0x318e, +0x31a0, 0x31bf, +0x31f0, 0x31ff, +0x3400, 0x4dbf, +0x4e00, 0xa48c, +0xa4d0, 0xa4fd, +0xa500, 0xa60c, +0xa610, 0xa62b, +0xa640, 0xa672, +0xa674, 0xa67d, +0xa67f, 0xa6f1, +0xa717, 0xa71f, +0xa722, 0xa788, +0xa78b, 0xa7cd, +0xa7d0, 0xa7d1, +0xa7d3, 0xa7d3, +0xa7d5, 0xa7dc, +0xa7f2, 0xa827, +0xa82c, 0xa82c, +0xa840, 0xa873, +0xa880, 0xa8c5, +0xa8d0, 0xa8d9, +0xa8e0, 0xa8f7, +0xa8fb, 0xa8fb, +0xa8fd, 0xa92d, +0xa930, 0xa953, +0xa960, 0xa97c, +0xa980, 0xa9c0, +0xa9cf, 0xa9d9, +0xa9e0, 0xa9fe, +0xaa00, 0xaa36, +0xaa40, 0xaa4d, +0xaa50, 0xaa59, +0xaa60, 0xaa76, +0xaa7a, 0xaac2, +0xaadb, 0xaadd, +0xaae0, 0xaaef, +0xaaf2, 0xaaf6, +0xab01, 0xab06, +0xab09, 0xab0e, +0xab11, 0xab16, +0xab20, 0xab26, +0xab28, 0xab2e, +0xab30, 0xab5a, +0xab5c, 0xab69, +0xab70, 0xabea, +0xabec, 0xabed, +0xabf0, 0xabf9, +0xac00, 0xd7a3, +0xd7b0, 0xd7c6, +0xd7cb, 0xd7fb, +0xf900, 0xfa6d, +0xfa70, 0xfad9, +0xfb00, 0xfb06, +0xfb13, 0xfb17, +0xfb1d, 0xfb28, +0xfb2a, 0xfb36, +0xfb38, 0xfb3c, +0xfb3e, 0xfb3e, +0xfb40, 0xfb41, +0xfb43, 0xfb44, +0xfb46, 0xfbb1, +0xfbd3, 0xfd3d, +0xfd50, 0xfd8f, +0xfd92, 0xfdc7, +0xfdf0, 0xfdfb, +0xfe00, 0xfe0f, +0xfe20, 0xfe2f, +0xfe33, 0xfe34, +0xfe4d, 0xfe4f, +0xfe70, 0xfe74, +0xfe76, 0xfefc, +0xff10, 0xff19, +0xff21, 0xff3a, +0xff3f, 0xff3f, +0xff41, 0xff5a, +0xff66, 0xffbe, +0xffc2, 0xffc7, +0xffca, 0xffcf, +0xffd2, 0xffd7, +0xffda, 0xffdc, +0x10000, 0x1000b, +0x1000d, 0x10026, +0x10028, 0x1003a, +0x1003c, 0x1003d, +0x1003f, 0x1004d, +0x10050, 0x1005d, +0x10080, 0x100fa, +0x10140, 0x10174, +0x101fd, 0x101fd, +0x10280, 0x1029c, +0x102a0, 0x102d0, +0x102e0, 0x102e0, +0x10300, 0x1031f, +0x1032d, 0x1034a, +0x10350, 0x1037a, +0x10380, 0x1039d, +0x103a0, 0x103c3, +0x103c8, 0x103cf, +0x103d1, 0x103d5, +0x10400, 0x1049d, +0x104a0, 0x104a9, +0x104b0, 0x104d3, +0x104d8, 0x104fb, +0x10500, 0x10527, +0x10530, 0x10563, +0x10570, 0x1057a, +0x1057c, 0x1058a, +0x1058c, 0x10592, +0x10594, 0x10595, +0x10597, 0x105a1, +0x105a3, 0x105b1, +0x105b3, 0x105b9, +0x105bb, 0x105bc, +0x105c0, 0x105f3, +0x10600, 0x10736, +0x10740, 0x10755, +0x10760, 0x10767, +0x10780, 0x10785, +0x10787, 0x107b0, +0x107b2, 0x107ba, +0x10800, 0x10805, +0x10808, 0x10808, +0x1080a, 0x10835, +0x10837, 0x10838, +0x1083c, 0x1083c, +0x1083f, 0x10855, +0x10860, 0x10876, +0x10880, 0x1089e, +0x108e0, 0x108f2, +0x108f4, 0x108f5, +0x10900, 0x10915, +0x10920, 0x10939, +0x10980, 0x109b7, +0x109be, 0x109bf, +0x10a00, 0x10a03, +0x10a05, 0x10a06, +0x10a0c, 0x10a13, +0x10a15, 0x10a17, +0x10a19, 0x10a35, +0x10a38, 0x10a3a, +0x10a3f, 0x10a3f, +0x10a60, 0x10a7c, +0x10a80, 0x10a9c, +0x10ac0, 0x10ac7, +0x10ac9, 0x10ae6, +0x10b00, 0x10b35, +0x10b40, 0x10b55, +0x10b60, 0x10b72, +0x10b80, 0x10b91, +0x10c00, 0x10c48, +0x10c80, 0x10cb2, +0x10cc0, 0x10cf2, +0x10d00, 0x10d27, +0x10d30, 0x10d39, +0x10d40, 0x10d65, +0x10d69, 0x10d6d, +0x10d6f, 0x10d85, +0x10e80, 0x10ea9, +0x10eab, 0x10eac, +0x10eb0, 0x10eb1, +0x10ec2, 0x10ec4, +0x10efc, 0x10f1c, +0x10f27, 0x10f27, +0x10f30, 0x10f50, +0x10f70, 0x10f85, +0x10fb0, 0x10fc4, +0x10fe0, 0x10ff6, +0x11000, 0x11046, +0x11066, 0x11075, +0x1107f, 0x110ba, +0x110c2, 0x110c2, +0x110d0, 0x110e8, +0x110f0, 0x110f9, +0x11100, 0x11134, +0x11136, 0x1113f, +0x11144, 0x11147, +0x11150, 0x11173, +0x11176, 0x11176, +0x11180, 0x111c4, +0x111c9, 0x111cc, +0x111ce, 0x111da, +0x111dc, 0x111dc, +0x11200, 0x11211, +0x11213, 0x11237, +0x1123e, 0x11241, +0x11280, 0x11286, +0x11288, 0x11288, +0x1128a, 0x1128d, +0x1128f, 0x1129d, +0x1129f, 0x112a8, +0x112b0, 0x112ea, +0x112f0, 0x112f9, +0x11300, 0x11303, +0x11305, 0x1130c, +0x1130f, 0x11310, +0x11313, 0x11328, +0x1132a, 0x11330, +0x11332, 0x11333, +0x11335, 0x11339, +0x1133b, 0x11344, +0x11347, 0x11348, +0x1134b, 0x1134d, +0x11350, 0x11350, +0x11357, 0x11357, +0x1135d, 0x11363, +0x11366, 0x1136c, +0x11370, 0x11374, +0x11380, 0x11389, +0x1138b, 0x1138b, +0x1138e, 0x1138e, +0x11390, 0x113b5, +0x113b7, 0x113c0, +0x113c2, 0x113c2, +0x113c5, 0x113c5, +0x113c7, 0x113ca, +0x113cc, 0x113d3, +0x113e1, 0x113e2, +0x11400, 0x1144a, +0x11450, 0x11459, +0x1145e, 0x11461, +0x11480, 0x114c5, +0x114c7, 0x114c7, +0x114d0, 0x114d9, +0x11580, 0x115b5, +0x115b8, 0x115c0, +0x115d8, 0x115dd, +0x11600, 0x11640, +0x11644, 0x11644, +0x11650, 0x11659, +0x11680, 0x116b8, +0x116c0, 0x116c9, +0x116d0, 0x116e3, +0x11700, 0x1171a, +0x1171d, 0x1172b, +0x11730, 0x11739, +0x11740, 0x11746, +0x11800, 0x1183a, +0x118a0, 0x118e9, +0x118ff, 0x11906, +0x11909, 0x11909, +0x1190c, 0x11913, +0x11915, 0x11916, +0x11918, 0x11935, +0x11937, 0x11938, +0x1193b, 0x11943, +0x11950, 0x11959, +0x119a0, 0x119a7, +0x119aa, 0x119d7, +0x119da, 0x119e1, +0x119e3, 0x119e4, +0x11a00, 0x11a3e, +0x11a47, 0x11a47, +0x11a50, 0x11a99, +0x11a9d, 0x11a9d, +0x11ab0, 0x11af8, +0x11bc0, 0x11be0, +0x11bf0, 0x11bf9, +0x11c00, 0x11c08, +0x11c0a, 0x11c36, +0x11c38, 0x11c40, +0x11c50, 0x11c59, +0x11c72, 0x11c8f, +0x11c92, 0x11ca7, +0x11ca9, 0x11cb6, +0x11d00, 0x11d06, +0x11d08, 0x11d09, +0x11d0b, 0x11d36, +0x11d3a, 0x11d3a, +0x11d3c, 0x11d3d, +0x11d3f, 0x11d47, +0x11d50, 0x11d59, +0x11d60, 0x11d65, +0x11d67, 0x11d68, +0x11d6a, 0x11d8e, +0x11d90, 0x11d91, +0x11d93, 0x11d98, +0x11da0, 0x11da9, +0x11ee0, 0x11ef6, +0x11f00, 0x11f10, +0x11f12, 0x11f3a, +0x11f3e, 0x11f42, +0x11f50, 0x11f5a, +0x11fb0, 0x11fb0, +0x12000, 0x12399, +0x12400, 0x1246e, +0x12480, 0x12543, +0x12f90, 0x12ff0, +0x13000, 0x1342f, +0x13440, 0x13455, +0x13460, 0x143fa, +0x14400, 0x14646, +0x16100, 0x16139, +0x16800, 0x16a38, +0x16a40, 0x16a5e, +0x16a60, 0x16a69, +0x16a70, 0x16abe, +0x16ac0, 0x16ac9, +0x16ad0, 0x16aed, +0x16af0, 0x16af4, +0x16b00, 0x16b36, +0x16b40, 0x16b43, +0x16b50, 0x16b59, +0x16b63, 0x16b77, +0x16b7d, 0x16b8f, +0x16d40, 0x16d6c, +0x16d70, 0x16d79, +0x16e40, 0x16e7f, +0x16f00, 0x16f4a, +0x16f4f, 0x16f87, +0x16f8f, 0x16f9f, +0x16fe0, 0x16fe1, +0x16fe3, 0x16fe4, +0x16ff0, 0x16ff1, +0x17000, 0x187f7, +0x18800, 0x18cd5, +0x18cff, 0x18d08, +0x1aff0, 0x1aff3, +0x1aff5, 0x1affb, +0x1affd, 0x1affe, +0x1b000, 0x1b122, +0x1b132, 0x1b132, +0x1b150, 0x1b152, +0x1b155, 0x1b155, +0x1b164, 0x1b167, +0x1b170, 0x1b2fb, +0x1bc00, 0x1bc6a, +0x1bc70, 0x1bc7c, +0x1bc80, 0x1bc88, +0x1bc90, 0x1bc99, +0x1bc9d, 0x1bc9e, +0x1ccf0, 0x1ccf9, +0x1cf00, 0x1cf2d, +0x1cf30, 0x1cf46, +0x1d165, 0x1d169, +0x1d16d, 0x1d172, +0x1d17b, 0x1d182, +0x1d185, 0x1d18b, +0x1d1aa, 0x1d1ad, +0x1d242, 0x1d244, +0x1d400, 0x1d454, +0x1d456, 0x1d49c, +0x1d49e, 0x1d49f, +0x1d4a2, 0x1d4a2, +0x1d4a5, 0x1d4a6, +0x1d4a9, 0x1d4ac, +0x1d4ae, 0x1d4b9, +0x1d4bb, 0x1d4bb, +0x1d4bd, 0x1d4c3, +0x1d4c5, 0x1d505, +0x1d507, 0x1d50a, +0x1d50d, 0x1d514, +0x1d516, 0x1d51c, +0x1d51e, 0x1d539, +0x1d53b, 0x1d53e, +0x1d540, 0x1d544, +0x1d546, 0x1d546, +0x1d54a, 0x1d550, +0x1d552, 0x1d6a5, +0x1d6a8, 0x1d6c0, +0x1d6c2, 0x1d6da, +0x1d6dc, 0x1d6fa, +0x1d6fc, 0x1d714, +0x1d716, 0x1d734, +0x1d736, 0x1d74e, +0x1d750, 0x1d76e, +0x1d770, 0x1d788, +0x1d78a, 0x1d7a8, +0x1d7aa, 0x1d7c2, +0x1d7c4, 0x1d7cb, +0x1d7ce, 0x1d7ff, +0x1da00, 0x1da36, +0x1da3b, 0x1da6c, +0x1da75, 0x1da75, +0x1da84, 0x1da84, +0x1da9b, 0x1da9f, +0x1daa1, 0x1daaf, +0x1df00, 0x1df1e, +0x1df25, 0x1df2a, +0x1e000, 0x1e006, +0x1e008, 0x1e018, +0x1e01b, 0x1e021, +0x1e023, 0x1e024, +0x1e026, 0x1e02a, +0x1e030, 0x1e06d, +0x1e08f, 0x1e08f, +0x1e100, 0x1e12c, +0x1e130, 0x1e13d, +0x1e140, 0x1e149, +0x1e14e, 0x1e14e, +0x1e290, 0x1e2ae, +0x1e2c0, 0x1e2f9, +0x1e4d0, 0x1e4f9, +0x1e5d0, 0x1e5fa, +0x1e7e0, 0x1e7e6, +0x1e7e8, 0x1e7eb, +0x1e7ed, 0x1e7ee, +0x1e7f0, 0x1e7fe, +0x1e800, 0x1e8c4, +0x1e8d0, 0x1e8d6, +0x1e900, 0x1e94b, +0x1e950, 0x1e959, +0x1ee00, 0x1ee03, +0x1ee05, 0x1ee1f, +0x1ee21, 0x1ee22, +0x1ee24, 0x1ee24, +0x1ee27, 0x1ee27, +0x1ee29, 0x1ee32, +0x1ee34, 0x1ee37, +0x1ee39, 0x1ee39, +0x1ee3b, 0x1ee3b, +0x1ee42, 0x1ee42, +0x1ee47, 0x1ee47, +0x1ee49, 0x1ee49, +0x1ee4b, 0x1ee4b, +0x1ee4d, 0x1ee4f, +0x1ee51, 0x1ee52, +0x1ee54, 0x1ee54, +0x1ee57, 0x1ee57, +0x1ee59, 0x1ee59, +0x1ee5b, 0x1ee5b, +0x1ee5d, 0x1ee5d, +0x1ee5f, 0x1ee5f, +0x1ee61, 0x1ee62, +0x1ee64, 0x1ee64, +0x1ee67, 0x1ee6a, +0x1ee6c, 0x1ee72, +0x1ee74, 0x1ee77, +0x1ee79, 0x1ee7c, +0x1ee7e, 0x1ee7e, +0x1ee80, 0x1ee89, +0x1ee8b, 0x1ee9b, +0x1eea1, 0x1eea3, +0x1eea5, 0x1eea9, +0x1eeab, 0x1eebb, +0x1f130, 0x1f149, +0x1f150, 0x1f169, +0x1f170, 0x1f189, +0x1fbf0, 0x1fbf9, +0x20000, 0x2a6df, +0x2a700, 0x2b739, +0x2b740, 0x2b81d, +0x2b820, 0x2cea1, +0x2ceb0, 0x2ebe0, +0x2ebf0, 0x2ee5d, +0x2f800, 0x2fa1d, +0x30000, 0x3134a, +0x31350, 0x323af, +0xe0100, 0xe01ef, +}; /* END of CR_Word */ + +/* PROPERTY: 'Alnum': POSIX [[:Alnum:]] */ +static const OnigCodePoint +CR_Alnum[] = { 802, +0x0030, 0x0039, +0x0041, 0x005a, +0x0061, 0x007a, +0x00aa, 0x00aa, +0x00b5, 0x00b5, +0x00ba, 0x00ba, +0x00c0, 0x00d6, +0x00d8, 0x00f6, +0x00f8, 0x02c1, +0x02c6, 0x02d1, +0x02e0, 0x02e4, +0x02ec, 0x02ec, +0x02ee, 0x02ee, +0x0345, 0x0345, +0x0363, 0x0374, +0x0376, 0x0377, +0x037a, 0x037d, +0x037f, 0x037f, +0x0386, 0x0386, +0x0388, 0x038a, +0x038c, 0x038c, +0x038e, 0x03a1, +0x03a3, 0x03f5, +0x03f7, 0x0481, +0x048a, 0x052f, +0x0531, 0x0556, +0x0559, 0x0559, +0x0560, 0x0588, +0x05b0, 0x05bd, +0x05bf, 0x05bf, +0x05c1, 0x05c2, +0x05c4, 0x05c5, +0x05c7, 0x05c7, +0x05d0, 0x05ea, +0x05ef, 0x05f2, +0x0610, 0x061a, +0x0620, 0x0657, +0x0659, 0x0669, +0x066e, 0x06d3, +0x06d5, 0x06dc, +0x06e1, 0x06e8, +0x06ed, 0x06fc, +0x06ff, 0x06ff, +0x0710, 0x073f, +0x074d, 0x07b1, +0x07c0, 0x07ea, +0x07f4, 0x07f5, +0x07fa, 0x07fa, +0x0800, 0x0817, +0x081a, 0x082c, +0x0840, 0x0858, +0x0860, 0x086a, +0x0870, 0x0887, +0x0889, 0x088e, +0x0897, 0x0897, +0x08a0, 0x08c9, +0x08d4, 0x08df, +0x08e3, 0x08e9, +0x08f0, 0x093b, +0x093d, 0x094c, +0x094e, 0x0950, +0x0955, 0x0963, +0x0966, 0x096f, +0x0971, 0x0983, +0x0985, 0x098c, +0x098f, 0x0990, +0x0993, 0x09a8, +0x09aa, 0x09b0, +0x09b2, 0x09b2, +0x09b6, 0x09b9, +0x09bd, 0x09c4, +0x09c7, 0x09c8, +0x09cb, 0x09cc, +0x09ce, 0x09ce, +0x09d7, 0x09d7, +0x09dc, 0x09dd, +0x09df, 0x09e3, +0x09e6, 0x09f1, +0x09fc, 0x09fc, +0x0a01, 0x0a03, +0x0a05, 0x0a0a, +0x0a0f, 0x0a10, +0x0a13, 0x0a28, +0x0a2a, 0x0a30, +0x0a32, 0x0a33, +0x0a35, 0x0a36, +0x0a38, 0x0a39, +0x0a3e, 0x0a42, +0x0a47, 0x0a48, +0x0a4b, 0x0a4c, +0x0a51, 0x0a51, +0x0a59, 0x0a5c, +0x0a5e, 0x0a5e, +0x0a66, 0x0a75, +0x0a81, 0x0a83, +0x0a85, 0x0a8d, +0x0a8f, 0x0a91, +0x0a93, 0x0aa8, +0x0aaa, 0x0ab0, +0x0ab2, 0x0ab3, +0x0ab5, 0x0ab9, +0x0abd, 0x0ac5, +0x0ac7, 0x0ac9, +0x0acb, 0x0acc, +0x0ad0, 0x0ad0, +0x0ae0, 0x0ae3, +0x0ae6, 0x0aef, +0x0af9, 0x0afc, +0x0b01, 0x0b03, +0x0b05, 0x0b0c, +0x0b0f, 0x0b10, +0x0b13, 0x0b28, +0x0b2a, 0x0b30, +0x0b32, 0x0b33, +0x0b35, 0x0b39, +0x0b3d, 0x0b44, +0x0b47, 0x0b48, +0x0b4b, 0x0b4c, +0x0b56, 0x0b57, +0x0b5c, 0x0b5d, +0x0b5f, 0x0b63, +0x0b66, 0x0b6f, +0x0b71, 0x0b71, +0x0b82, 0x0b83, +0x0b85, 0x0b8a, +0x0b8e, 0x0b90, +0x0b92, 0x0b95, +0x0b99, 0x0b9a, +0x0b9c, 0x0b9c, +0x0b9e, 0x0b9f, +0x0ba3, 0x0ba4, +0x0ba8, 0x0baa, +0x0bae, 0x0bb9, +0x0bbe, 0x0bc2, +0x0bc6, 0x0bc8, +0x0bca, 0x0bcc, +0x0bd0, 0x0bd0, +0x0bd7, 0x0bd7, +0x0be6, 0x0bef, +0x0c00, 0x0c0c, +0x0c0e, 0x0c10, +0x0c12, 0x0c28, +0x0c2a, 0x0c39, +0x0c3d, 0x0c44, +0x0c46, 0x0c48, +0x0c4a, 0x0c4c, +0x0c55, 0x0c56, +0x0c58, 0x0c5a, +0x0c5d, 0x0c5d, +0x0c60, 0x0c63, +0x0c66, 0x0c6f, +0x0c80, 0x0c83, +0x0c85, 0x0c8c, +0x0c8e, 0x0c90, +0x0c92, 0x0ca8, +0x0caa, 0x0cb3, +0x0cb5, 0x0cb9, +0x0cbd, 0x0cc4, +0x0cc6, 0x0cc8, +0x0cca, 0x0ccc, +0x0cd5, 0x0cd6, +0x0cdd, 0x0cde, +0x0ce0, 0x0ce3, +0x0ce6, 0x0cef, +0x0cf1, 0x0cf3, +0x0d00, 0x0d0c, +0x0d0e, 0x0d10, +0x0d12, 0x0d3a, +0x0d3d, 0x0d44, +0x0d46, 0x0d48, +0x0d4a, 0x0d4c, +0x0d4e, 0x0d4e, +0x0d54, 0x0d57, +0x0d5f, 0x0d63, +0x0d66, 0x0d6f, +0x0d7a, 0x0d7f, +0x0d81, 0x0d83, +0x0d85, 0x0d96, +0x0d9a, 0x0db1, +0x0db3, 0x0dbb, +0x0dbd, 0x0dbd, +0x0dc0, 0x0dc6, +0x0dcf, 0x0dd4, +0x0dd6, 0x0dd6, +0x0dd8, 0x0ddf, +0x0de6, 0x0def, +0x0df2, 0x0df3, +0x0e01, 0x0e3a, +0x0e40, 0x0e46, +0x0e4d, 0x0e4d, +0x0e50, 0x0e59, +0x0e81, 0x0e82, +0x0e84, 0x0e84, +0x0e86, 0x0e8a, +0x0e8c, 0x0ea3, +0x0ea5, 0x0ea5, +0x0ea7, 0x0eb9, +0x0ebb, 0x0ebd, +0x0ec0, 0x0ec4, +0x0ec6, 0x0ec6, +0x0ecd, 0x0ecd, +0x0ed0, 0x0ed9, +0x0edc, 0x0edf, +0x0f00, 0x0f00, +0x0f20, 0x0f29, +0x0f40, 0x0f47, +0x0f49, 0x0f6c, +0x0f71, 0x0f83, +0x0f88, 0x0f97, +0x0f99, 0x0fbc, +0x1000, 0x1036, +0x1038, 0x1038, +0x103b, 0x1049, +0x1050, 0x109d, +0x10a0, 0x10c5, +0x10c7, 0x10c7, +0x10cd, 0x10cd, +0x10d0, 0x10fa, +0x10fc, 0x1248, +0x124a, 0x124d, +0x1250, 0x1256, +0x1258, 0x1258, +0x125a, 0x125d, +0x1260, 0x1288, +0x128a, 0x128d, +0x1290, 0x12b0, +0x12b2, 0x12b5, +0x12b8, 0x12be, +0x12c0, 0x12c0, +0x12c2, 0x12c5, +0x12c8, 0x12d6, +0x12d8, 0x1310, +0x1312, 0x1315, +0x1318, 0x135a, +0x1380, 0x138f, +0x13a0, 0x13f5, +0x13f8, 0x13fd, +0x1401, 0x166c, +0x166f, 0x167f, +0x1681, 0x169a, +0x16a0, 0x16ea, +0x16ee, 0x16f8, +0x1700, 0x1713, +0x171f, 0x1733, +0x1740, 0x1753, +0x1760, 0x176c, +0x176e, 0x1770, +0x1772, 0x1773, +0x1780, 0x17b3, +0x17b6, 0x17c8, +0x17d7, 0x17d7, +0x17dc, 0x17dc, +0x17e0, 0x17e9, +0x1810, 0x1819, +0x1820, 0x1878, +0x1880, 0x18aa, +0x18b0, 0x18f5, +0x1900, 0x191e, +0x1920, 0x192b, +0x1930, 0x1938, +0x1946, 0x196d, +0x1970, 0x1974, +0x1980, 0x19ab, +0x19b0, 0x19c9, +0x19d0, 0x19d9, +0x1a00, 0x1a1b, +0x1a20, 0x1a5e, +0x1a61, 0x1a74, +0x1a80, 0x1a89, +0x1a90, 0x1a99, +0x1aa7, 0x1aa7, +0x1abf, 0x1ac0, +0x1acc, 0x1ace, +0x1b00, 0x1b33, +0x1b35, 0x1b43, +0x1b45, 0x1b4c, +0x1b50, 0x1b59, +0x1b80, 0x1ba9, +0x1bac, 0x1be5, +0x1be7, 0x1bf1, +0x1c00, 0x1c36, +0x1c40, 0x1c49, +0x1c4d, 0x1c7d, +0x1c80, 0x1c8a, +0x1c90, 0x1cba, +0x1cbd, 0x1cbf, +0x1ce9, 0x1cec, +0x1cee, 0x1cf3, +0x1cf5, 0x1cf6, +0x1cfa, 0x1cfa, +0x1d00, 0x1dbf, +0x1dd3, 0x1df4, +0x1e00, 0x1f15, +0x1f18, 0x1f1d, +0x1f20, 0x1f45, +0x1f48, 0x1f4d, +0x1f50, 0x1f57, +0x1f59, 0x1f59, +0x1f5b, 0x1f5b, +0x1f5d, 0x1f5d, +0x1f5f, 0x1f7d, +0x1f80, 0x1fb4, +0x1fb6, 0x1fbc, +0x1fbe, 0x1fbe, +0x1fc2, 0x1fc4, +0x1fc6, 0x1fcc, +0x1fd0, 0x1fd3, +0x1fd6, 0x1fdb, +0x1fe0, 0x1fec, +0x1ff2, 0x1ff4, +0x1ff6, 0x1ffc, +0x2071, 0x2071, +0x207f, 0x207f, +0x2090, 0x209c, +0x2102, 0x2102, +0x2107, 0x2107, +0x210a, 0x2113, +0x2115, 0x2115, +0x2119, 0x211d, +0x2124, 0x2124, +0x2126, 0x2126, +0x2128, 0x2128, +0x212a, 0x212d, +0x212f, 0x2139, +0x213c, 0x213f, +0x2145, 0x2149, +0x214e, 0x214e, +0x2160, 0x2188, +0x24b6, 0x24e9, +0x2c00, 0x2ce4, +0x2ceb, 0x2cee, +0x2cf2, 0x2cf3, +0x2d00, 0x2d25, +0x2d27, 0x2d27, +0x2d2d, 0x2d2d, +0x2d30, 0x2d67, +0x2d6f, 0x2d6f, +0x2d80, 0x2d96, +0x2da0, 0x2da6, +0x2da8, 0x2dae, +0x2db0, 0x2db6, +0x2db8, 0x2dbe, +0x2dc0, 0x2dc6, +0x2dc8, 0x2dce, +0x2dd0, 0x2dd6, +0x2dd8, 0x2dde, +0x2de0, 0x2dff, +0x2e2f, 0x2e2f, +0x3005, 0x3007, +0x3021, 0x3029, +0x3031, 0x3035, +0x3038, 0x303c, +0x3041, 0x3096, +0x309d, 0x309f, +0x30a1, 0x30fa, +0x30fc, 0x30ff, +0x3105, 0x312f, +0x3131, 0x318e, +0x31a0, 0x31bf, +0x31f0, 0x31ff, +0x3400, 0x4dbf, +0x4e00, 0xa48c, +0xa4d0, 0xa4fd, +0xa500, 0xa60c, +0xa610, 0xa62b, +0xa640, 0xa66e, +0xa674, 0xa67b, +0xa67f, 0xa6ef, +0xa717, 0xa71f, +0xa722, 0xa788, +0xa78b, 0xa7cd, +0xa7d0, 0xa7d1, +0xa7d3, 0xa7d3, +0xa7d5, 0xa7dc, +0xa7f2, 0xa805, +0xa807, 0xa827, +0xa840, 0xa873, +0xa880, 0xa8c3, +0xa8c5, 0xa8c5, +0xa8d0, 0xa8d9, +0xa8f2, 0xa8f7, +0xa8fb, 0xa8fb, +0xa8fd, 0xa92a, +0xa930, 0xa952, +0xa960, 0xa97c, +0xa980, 0xa9b2, +0xa9b4, 0xa9bf, +0xa9cf, 0xa9d9, +0xa9e0, 0xa9fe, +0xaa00, 0xaa36, +0xaa40, 0xaa4d, +0xaa50, 0xaa59, +0xaa60, 0xaa76, +0xaa7a, 0xaabe, +0xaac0, 0xaac0, +0xaac2, 0xaac2, +0xaadb, 0xaadd, +0xaae0, 0xaaef, +0xaaf2, 0xaaf5, +0xab01, 0xab06, +0xab09, 0xab0e, +0xab11, 0xab16, +0xab20, 0xab26, +0xab28, 0xab2e, +0xab30, 0xab5a, +0xab5c, 0xab69, +0xab70, 0xabea, +0xabf0, 0xabf9, +0xac00, 0xd7a3, +0xd7b0, 0xd7c6, +0xd7cb, 0xd7fb, +0xf900, 0xfa6d, +0xfa70, 0xfad9, +0xfb00, 0xfb06, +0xfb13, 0xfb17, +0xfb1d, 0xfb28, +0xfb2a, 0xfb36, +0xfb38, 0xfb3c, +0xfb3e, 0xfb3e, +0xfb40, 0xfb41, +0xfb43, 0xfb44, +0xfb46, 0xfbb1, +0xfbd3, 0xfd3d, +0xfd50, 0xfd8f, +0xfd92, 0xfdc7, +0xfdf0, 0xfdfb, +0xfe70, 0xfe74, +0xfe76, 0xfefc, +0xff10, 0xff19, +0xff21, 0xff3a, +0xff41, 0xff5a, +0xff66, 0xffbe, +0xffc2, 0xffc7, +0xffca, 0xffcf, +0xffd2, 0xffd7, +0xffda, 0xffdc, +0x10000, 0x1000b, +0x1000d, 0x10026, +0x10028, 0x1003a, +0x1003c, 0x1003d, +0x1003f, 0x1004d, +0x10050, 0x1005d, +0x10080, 0x100fa, +0x10140, 0x10174, +0x10280, 0x1029c, +0x102a0, 0x102d0, +0x10300, 0x1031f, +0x1032d, 0x1034a, +0x10350, 0x1037a, +0x10380, 0x1039d, +0x103a0, 0x103c3, +0x103c8, 0x103cf, +0x103d1, 0x103d5, +0x10400, 0x1049d, +0x104a0, 0x104a9, +0x104b0, 0x104d3, +0x104d8, 0x104fb, +0x10500, 0x10527, +0x10530, 0x10563, +0x10570, 0x1057a, +0x1057c, 0x1058a, +0x1058c, 0x10592, +0x10594, 0x10595, +0x10597, 0x105a1, +0x105a3, 0x105b1, +0x105b3, 0x105b9, +0x105bb, 0x105bc, +0x105c0, 0x105f3, +0x10600, 0x10736, +0x10740, 0x10755, +0x10760, 0x10767, +0x10780, 0x10785, +0x10787, 0x107b0, +0x107b2, 0x107ba, +0x10800, 0x10805, +0x10808, 0x10808, +0x1080a, 0x10835, +0x10837, 0x10838, +0x1083c, 0x1083c, +0x1083f, 0x10855, +0x10860, 0x10876, +0x10880, 0x1089e, +0x108e0, 0x108f2, +0x108f4, 0x108f5, +0x10900, 0x10915, +0x10920, 0x10939, +0x10980, 0x109b7, +0x109be, 0x109bf, +0x10a00, 0x10a03, +0x10a05, 0x10a06, +0x10a0c, 0x10a13, +0x10a15, 0x10a17, +0x10a19, 0x10a35, +0x10a60, 0x10a7c, +0x10a80, 0x10a9c, +0x10ac0, 0x10ac7, +0x10ac9, 0x10ae4, +0x10b00, 0x10b35, +0x10b40, 0x10b55, +0x10b60, 0x10b72, +0x10b80, 0x10b91, +0x10c00, 0x10c48, +0x10c80, 0x10cb2, +0x10cc0, 0x10cf2, +0x10d00, 0x10d27, +0x10d30, 0x10d39, +0x10d40, 0x10d65, +0x10d69, 0x10d69, +0x10d6f, 0x10d85, +0x10e80, 0x10ea9, +0x10eab, 0x10eac, +0x10eb0, 0x10eb1, +0x10ec2, 0x10ec4, +0x10efc, 0x10efc, +0x10f00, 0x10f1c, +0x10f27, 0x10f27, +0x10f30, 0x10f45, +0x10f70, 0x10f81, +0x10fb0, 0x10fc4, +0x10fe0, 0x10ff6, +0x11000, 0x11045, +0x11066, 0x1106f, +0x11071, 0x11075, +0x11080, 0x110b8, +0x110c2, 0x110c2, +0x110d0, 0x110e8, +0x110f0, 0x110f9, +0x11100, 0x11132, +0x11136, 0x1113f, +0x11144, 0x11147, +0x11150, 0x11172, +0x11176, 0x11176, +0x11180, 0x111bf, +0x111c1, 0x111c4, +0x111ce, 0x111da, +0x111dc, 0x111dc, +0x11200, 0x11211, +0x11213, 0x11234, +0x11237, 0x11237, +0x1123e, 0x11241, +0x11280, 0x11286, +0x11288, 0x11288, +0x1128a, 0x1128d, +0x1128f, 0x1129d, +0x1129f, 0x112a8, +0x112b0, 0x112e8, +0x112f0, 0x112f9, +0x11300, 0x11303, +0x11305, 0x1130c, +0x1130f, 0x11310, +0x11313, 0x11328, +0x1132a, 0x11330, +0x11332, 0x11333, +0x11335, 0x11339, +0x1133d, 0x11344, +0x11347, 0x11348, +0x1134b, 0x1134c, +0x11350, 0x11350, +0x11357, 0x11357, +0x1135d, 0x11363, +0x11380, 0x11389, +0x1138b, 0x1138b, +0x1138e, 0x1138e, +0x11390, 0x113b5, +0x113b7, 0x113c0, +0x113c2, 0x113c2, +0x113c5, 0x113c5, +0x113c7, 0x113ca, +0x113cc, 0x113cd, +0x113d1, 0x113d1, +0x113d3, 0x113d3, +0x11400, 0x11441, +0x11443, 0x11445, +0x11447, 0x1144a, +0x11450, 0x11459, +0x1145f, 0x11461, +0x11480, 0x114c1, +0x114c4, 0x114c5, +0x114c7, 0x114c7, +0x114d0, 0x114d9, +0x11580, 0x115b5, +0x115b8, 0x115be, +0x115d8, 0x115dd, +0x11600, 0x1163e, +0x11640, 0x11640, +0x11644, 0x11644, +0x11650, 0x11659, +0x11680, 0x116b5, +0x116b8, 0x116b8, +0x116c0, 0x116c9, +0x116d0, 0x116e3, +0x11700, 0x1171a, +0x1171d, 0x1172a, +0x11730, 0x11739, +0x11740, 0x11746, +0x11800, 0x11838, +0x118a0, 0x118e9, +0x118ff, 0x11906, +0x11909, 0x11909, +0x1190c, 0x11913, +0x11915, 0x11916, +0x11918, 0x11935, +0x11937, 0x11938, +0x1193b, 0x1193c, +0x1193f, 0x11942, +0x11950, 0x11959, +0x119a0, 0x119a7, +0x119aa, 0x119d7, +0x119da, 0x119df, +0x119e1, 0x119e1, +0x119e3, 0x119e4, +0x11a00, 0x11a32, +0x11a35, 0x11a3e, +0x11a50, 0x11a97, +0x11a9d, 0x11a9d, +0x11ab0, 0x11af8, +0x11bc0, 0x11be0, +0x11bf0, 0x11bf9, +0x11c00, 0x11c08, +0x11c0a, 0x11c36, +0x11c38, 0x11c3e, +0x11c40, 0x11c40, +0x11c50, 0x11c59, +0x11c72, 0x11c8f, +0x11c92, 0x11ca7, +0x11ca9, 0x11cb6, +0x11d00, 0x11d06, +0x11d08, 0x11d09, +0x11d0b, 0x11d36, +0x11d3a, 0x11d3a, +0x11d3c, 0x11d3d, +0x11d3f, 0x11d41, +0x11d43, 0x11d43, +0x11d46, 0x11d47, +0x11d50, 0x11d59, +0x11d60, 0x11d65, +0x11d67, 0x11d68, +0x11d6a, 0x11d8e, +0x11d90, 0x11d91, +0x11d93, 0x11d96, +0x11d98, 0x11d98, +0x11da0, 0x11da9, +0x11ee0, 0x11ef6, +0x11f00, 0x11f10, +0x11f12, 0x11f3a, +0x11f3e, 0x11f40, +0x11f50, 0x11f59, +0x11fb0, 0x11fb0, +0x12000, 0x12399, +0x12400, 0x1246e, +0x12480, 0x12543, +0x12f90, 0x12ff0, +0x13000, 0x1342f, +0x13441, 0x13446, +0x13460, 0x143fa, +0x14400, 0x14646, +0x16100, 0x1612e, +0x16130, 0x16139, +0x16800, 0x16a38, +0x16a40, 0x16a5e, +0x16a60, 0x16a69, +0x16a70, 0x16abe, +0x16ac0, 0x16ac9, +0x16ad0, 0x16aed, +0x16b00, 0x16b2f, +0x16b40, 0x16b43, +0x16b50, 0x16b59, +0x16b63, 0x16b77, +0x16b7d, 0x16b8f, +0x16d40, 0x16d6c, +0x16d70, 0x16d79, +0x16e40, 0x16e7f, +0x16f00, 0x16f4a, +0x16f4f, 0x16f87, +0x16f8f, 0x16f9f, +0x16fe0, 0x16fe1, +0x16fe3, 0x16fe3, +0x16ff0, 0x16ff1, +0x17000, 0x187f7, +0x18800, 0x18cd5, +0x18cff, 0x18d08, +0x1aff0, 0x1aff3, +0x1aff5, 0x1affb, +0x1affd, 0x1affe, +0x1b000, 0x1b122, +0x1b132, 0x1b132, +0x1b150, 0x1b152, +0x1b155, 0x1b155, +0x1b164, 0x1b167, +0x1b170, 0x1b2fb, +0x1bc00, 0x1bc6a, +0x1bc70, 0x1bc7c, +0x1bc80, 0x1bc88, +0x1bc90, 0x1bc99, +0x1bc9e, 0x1bc9e, +0x1ccf0, 0x1ccf9, +0x1d400, 0x1d454, +0x1d456, 0x1d49c, +0x1d49e, 0x1d49f, +0x1d4a2, 0x1d4a2, +0x1d4a5, 0x1d4a6, +0x1d4a9, 0x1d4ac, +0x1d4ae, 0x1d4b9, +0x1d4bb, 0x1d4bb, +0x1d4bd, 0x1d4c3, +0x1d4c5, 0x1d505, +0x1d507, 0x1d50a, +0x1d50d, 0x1d514, +0x1d516, 0x1d51c, +0x1d51e, 0x1d539, +0x1d53b, 0x1d53e, +0x1d540, 0x1d544, +0x1d546, 0x1d546, +0x1d54a, 0x1d550, +0x1d552, 0x1d6a5, +0x1d6a8, 0x1d6c0, +0x1d6c2, 0x1d6da, +0x1d6dc, 0x1d6fa, +0x1d6fc, 0x1d714, +0x1d716, 0x1d734, +0x1d736, 0x1d74e, +0x1d750, 0x1d76e, +0x1d770, 0x1d788, +0x1d78a, 0x1d7a8, +0x1d7aa, 0x1d7c2, +0x1d7c4, 0x1d7cb, +0x1d7ce, 0x1d7ff, +0x1df00, 0x1df1e, +0x1df25, 0x1df2a, +0x1e000, 0x1e006, +0x1e008, 0x1e018, +0x1e01b, 0x1e021, +0x1e023, 0x1e024, +0x1e026, 0x1e02a, +0x1e030, 0x1e06d, +0x1e08f, 0x1e08f, +0x1e100, 0x1e12c, +0x1e137, 0x1e13d, +0x1e140, 0x1e149, +0x1e14e, 0x1e14e, +0x1e290, 0x1e2ad, +0x1e2c0, 0x1e2eb, +0x1e2f0, 0x1e2f9, +0x1e4d0, 0x1e4eb, +0x1e4f0, 0x1e4f9, +0x1e5d0, 0x1e5ed, +0x1e5f0, 0x1e5fa, +0x1e7e0, 0x1e7e6, +0x1e7e8, 0x1e7eb, +0x1e7ed, 0x1e7ee, +0x1e7f0, 0x1e7fe, +0x1e800, 0x1e8c4, +0x1e900, 0x1e943, +0x1e947, 0x1e947, +0x1e94b, 0x1e94b, +0x1e950, 0x1e959, +0x1ee00, 0x1ee03, +0x1ee05, 0x1ee1f, +0x1ee21, 0x1ee22, +0x1ee24, 0x1ee24, +0x1ee27, 0x1ee27, +0x1ee29, 0x1ee32, +0x1ee34, 0x1ee37, +0x1ee39, 0x1ee39, +0x1ee3b, 0x1ee3b, +0x1ee42, 0x1ee42, +0x1ee47, 0x1ee47, +0x1ee49, 0x1ee49, +0x1ee4b, 0x1ee4b, +0x1ee4d, 0x1ee4f, +0x1ee51, 0x1ee52, +0x1ee54, 0x1ee54, +0x1ee57, 0x1ee57, +0x1ee59, 0x1ee59, +0x1ee5b, 0x1ee5b, +0x1ee5d, 0x1ee5d, +0x1ee5f, 0x1ee5f, +0x1ee61, 0x1ee62, +0x1ee64, 0x1ee64, +0x1ee67, 0x1ee6a, +0x1ee6c, 0x1ee72, +0x1ee74, 0x1ee77, +0x1ee79, 0x1ee7c, +0x1ee7e, 0x1ee7e, +0x1ee80, 0x1ee89, +0x1ee8b, 0x1ee9b, +0x1eea1, 0x1eea3, +0x1eea5, 0x1eea9, +0x1eeab, 0x1eebb, +0x1f130, 0x1f149, +0x1f150, 0x1f169, +0x1f170, 0x1f189, +0x1fbf0, 0x1fbf9, +0x20000, 0x2a6df, +0x2a700, 0x2b739, +0x2b740, 0x2b81d, +0x2b820, 0x2cea1, +0x2ceb0, 0x2ebe0, +0x2ebf0, 0x2ee5d, +0x2f800, 0x2fa1d, +0x30000, 0x3134a, +0x31350, 0x323af, +}; /* END of CR_Alnum */ + +/* PROPERTY: 'ASCII': POSIX [[:ASCII:]] */ +static const OnigCodePoint +CR_ASCII[] = { 1, +0x0000, 0x007f, +}; /* END of CR_ASCII */ + + +/* PROPERTY: 'ASCII_Hex_Digit': Binary Property */ +#define CR_ASCII_Hex_Digit CR_XDigit + +/* PROPERTY: 'Adlam': Script */ +static const OnigCodePoint +CR_Adlam[] = { 3, +0x1e900, 0x1e94b, +0x1e950, 0x1e959, +0x1e95e, 0x1e95f, +}; /* END of CR_Adlam */ + +/* PROPERTY: 'Ahom': Script */ +static const OnigCodePoint +CR_Ahom[] = { 3, +0x11700, 0x1171a, +0x1171d, 0x1172b, +0x11730, 0x11746, +}; /* END of CR_Ahom */ + +/* PROPERTY: 'Alphabetic': Derived Property */ +#define CR_Alphabetic CR_Alpha + +/* PROPERTY: 'Anatolian_Hieroglyphs': Script */ +static const OnigCodePoint +CR_Anatolian_Hieroglyphs[] = { 1, +0x14400, 0x14646, +}; /* END of CR_Anatolian_Hieroglyphs */ + +/* PROPERTY: 'Any': - */ +static const OnigCodePoint +CR_Any[] = { 1, +0x0000, 0x10ffff, +}; /* END of CR_Any */ + +/* PROPERTY: 'Arabic': Script */ +static const OnigCodePoint +CR_Arabic[] = { 59, +0x0600, 0x0604, +0x0606, 0x060b, +0x060d, 0x061a, +0x061c, 0x061e, +0x0620, 0x063f, +0x0641, 0x064a, +0x0656, 0x066f, +0x0671, 0x06dc, +0x06de, 0x06ff, +0x0750, 0x077f, +0x0870, 0x088e, +0x0890, 0x0891, +0x0897, 0x08e1, +0x08e3, 0x08ff, +0xfb50, 0xfbc2, +0xfbd3, 0xfd3d, +0xfd40, 0xfd8f, +0xfd92, 0xfdc7, +0xfdcf, 0xfdcf, +0xfdf0, 0xfdff, +0xfe70, 0xfe74, +0xfe76, 0xfefc, +0x10e60, 0x10e7e, +0x10ec2, 0x10ec4, +0x10efc, 0x10eff, +0x1ee00, 0x1ee03, +0x1ee05, 0x1ee1f, +0x1ee21, 0x1ee22, +0x1ee24, 0x1ee24, +0x1ee27, 0x1ee27, +0x1ee29, 0x1ee32, +0x1ee34, 0x1ee37, +0x1ee39, 0x1ee39, +0x1ee3b, 0x1ee3b, +0x1ee42, 0x1ee42, +0x1ee47, 0x1ee47, +0x1ee49, 0x1ee49, +0x1ee4b, 0x1ee4b, +0x1ee4d, 0x1ee4f, +0x1ee51, 0x1ee52, +0x1ee54, 0x1ee54, +0x1ee57, 0x1ee57, +0x1ee59, 0x1ee59, +0x1ee5b, 0x1ee5b, +0x1ee5d, 0x1ee5d, +0x1ee5f, 0x1ee5f, +0x1ee61, 0x1ee62, +0x1ee64, 0x1ee64, +0x1ee67, 0x1ee6a, +0x1ee6c, 0x1ee72, +0x1ee74, 0x1ee77, +0x1ee79, 0x1ee7c, +0x1ee7e, 0x1ee7e, +0x1ee80, 0x1ee89, +0x1ee8b, 0x1ee9b, +0x1eea1, 0x1eea3, +0x1eea5, 0x1eea9, +0x1eeab, 0x1eebb, +0x1eef0, 0x1eef1, +}; /* END of CR_Arabic */ + +/* PROPERTY: 'Armenian': Script */ +static const OnigCodePoint +CR_Armenian[] = { 4, +0x0531, 0x0556, +0x0559, 0x058a, +0x058d, 0x058f, +0xfb13, 0xfb17, +}; /* END of CR_Armenian */ + +/* PROPERTY: 'Assigned': - */ +static const OnigCodePoint +CR_Assigned[] = { 731, +0x0000, 0x0377, +0x037a, 0x037f, +0x0384, 0x038a, +0x038c, 0x038c, +0x038e, 0x03a1, +0x03a3, 0x052f, +0x0531, 0x0556, +0x0559, 0x058a, +0x058d, 0x058f, +0x0591, 0x05c7, +0x05d0, 0x05ea, +0x05ef, 0x05f4, +0x0600, 0x070d, +0x070f, 0x074a, +0x074d, 0x07b1, +0x07c0, 0x07fa, +0x07fd, 0x082d, +0x0830, 0x083e, +0x0840, 0x085b, +0x085e, 0x085e, +0x0860, 0x086a, +0x0870, 0x088e, +0x0890, 0x0891, +0x0897, 0x0983, +0x0985, 0x098c, +0x098f, 0x0990, +0x0993, 0x09a8, +0x09aa, 0x09b0, +0x09b2, 0x09b2, +0x09b6, 0x09b9, +0x09bc, 0x09c4, +0x09c7, 0x09c8, +0x09cb, 0x09ce, +0x09d7, 0x09d7, +0x09dc, 0x09dd, +0x09df, 0x09e3, +0x09e6, 0x09fe, +0x0a01, 0x0a03, +0x0a05, 0x0a0a, +0x0a0f, 0x0a10, +0x0a13, 0x0a28, +0x0a2a, 0x0a30, +0x0a32, 0x0a33, +0x0a35, 0x0a36, +0x0a38, 0x0a39, +0x0a3c, 0x0a3c, +0x0a3e, 0x0a42, +0x0a47, 0x0a48, +0x0a4b, 0x0a4d, +0x0a51, 0x0a51, +0x0a59, 0x0a5c, +0x0a5e, 0x0a5e, +0x0a66, 0x0a76, +0x0a81, 0x0a83, +0x0a85, 0x0a8d, +0x0a8f, 0x0a91, +0x0a93, 0x0aa8, +0x0aaa, 0x0ab0, +0x0ab2, 0x0ab3, +0x0ab5, 0x0ab9, +0x0abc, 0x0ac5, +0x0ac7, 0x0ac9, +0x0acb, 0x0acd, +0x0ad0, 0x0ad0, +0x0ae0, 0x0ae3, +0x0ae6, 0x0af1, +0x0af9, 0x0aff, +0x0b01, 0x0b03, +0x0b05, 0x0b0c, +0x0b0f, 0x0b10, +0x0b13, 0x0b28, +0x0b2a, 0x0b30, +0x0b32, 0x0b33, +0x0b35, 0x0b39, +0x0b3c, 0x0b44, +0x0b47, 0x0b48, +0x0b4b, 0x0b4d, +0x0b55, 0x0b57, +0x0b5c, 0x0b5d, +0x0b5f, 0x0b63, +0x0b66, 0x0b77, +0x0b82, 0x0b83, +0x0b85, 0x0b8a, +0x0b8e, 0x0b90, +0x0b92, 0x0b95, +0x0b99, 0x0b9a, +0x0b9c, 0x0b9c, +0x0b9e, 0x0b9f, +0x0ba3, 0x0ba4, +0x0ba8, 0x0baa, +0x0bae, 0x0bb9, +0x0bbe, 0x0bc2, +0x0bc6, 0x0bc8, +0x0bca, 0x0bcd, +0x0bd0, 0x0bd0, +0x0bd7, 0x0bd7, +0x0be6, 0x0bfa, +0x0c00, 0x0c0c, +0x0c0e, 0x0c10, +0x0c12, 0x0c28, +0x0c2a, 0x0c39, +0x0c3c, 0x0c44, +0x0c46, 0x0c48, +0x0c4a, 0x0c4d, +0x0c55, 0x0c56, +0x0c58, 0x0c5a, +0x0c5d, 0x0c5d, +0x0c60, 0x0c63, +0x0c66, 0x0c6f, +0x0c77, 0x0c8c, +0x0c8e, 0x0c90, +0x0c92, 0x0ca8, +0x0caa, 0x0cb3, +0x0cb5, 0x0cb9, +0x0cbc, 0x0cc4, +0x0cc6, 0x0cc8, +0x0cca, 0x0ccd, +0x0cd5, 0x0cd6, +0x0cdd, 0x0cde, +0x0ce0, 0x0ce3, +0x0ce6, 0x0cef, +0x0cf1, 0x0cf3, +0x0d00, 0x0d0c, +0x0d0e, 0x0d10, +0x0d12, 0x0d44, +0x0d46, 0x0d48, +0x0d4a, 0x0d4f, +0x0d54, 0x0d63, +0x0d66, 0x0d7f, +0x0d81, 0x0d83, +0x0d85, 0x0d96, +0x0d9a, 0x0db1, +0x0db3, 0x0dbb, +0x0dbd, 0x0dbd, +0x0dc0, 0x0dc6, +0x0dca, 0x0dca, +0x0dcf, 0x0dd4, +0x0dd6, 0x0dd6, +0x0dd8, 0x0ddf, +0x0de6, 0x0def, +0x0df2, 0x0df4, +0x0e01, 0x0e3a, +0x0e3f, 0x0e5b, +0x0e81, 0x0e82, +0x0e84, 0x0e84, +0x0e86, 0x0e8a, +0x0e8c, 0x0ea3, +0x0ea5, 0x0ea5, +0x0ea7, 0x0ebd, +0x0ec0, 0x0ec4, +0x0ec6, 0x0ec6, +0x0ec8, 0x0ece, +0x0ed0, 0x0ed9, +0x0edc, 0x0edf, +0x0f00, 0x0f47, +0x0f49, 0x0f6c, +0x0f71, 0x0f97, +0x0f99, 0x0fbc, +0x0fbe, 0x0fcc, +0x0fce, 0x0fda, +0x1000, 0x10c5, +0x10c7, 0x10c7, +0x10cd, 0x10cd, +0x10d0, 0x1248, +0x124a, 0x124d, +0x1250, 0x1256, +0x1258, 0x1258, +0x125a, 0x125d, +0x1260, 0x1288, +0x128a, 0x128d, +0x1290, 0x12b0, +0x12b2, 0x12b5, +0x12b8, 0x12be, +0x12c0, 0x12c0, +0x12c2, 0x12c5, +0x12c8, 0x12d6, +0x12d8, 0x1310, +0x1312, 0x1315, +0x1318, 0x135a, +0x135d, 0x137c, +0x1380, 0x1399, +0x13a0, 0x13f5, +0x13f8, 0x13fd, +0x1400, 0x169c, +0x16a0, 0x16f8, +0x1700, 0x1715, +0x171f, 0x1736, +0x1740, 0x1753, +0x1760, 0x176c, +0x176e, 0x1770, +0x1772, 0x1773, +0x1780, 0x17dd, +0x17e0, 0x17e9, +0x17f0, 0x17f9, +0x1800, 0x1819, +0x1820, 0x1878, +0x1880, 0x18aa, +0x18b0, 0x18f5, +0x1900, 0x191e, +0x1920, 0x192b, +0x1930, 0x193b, +0x1940, 0x1940, +0x1944, 0x196d, +0x1970, 0x1974, +0x1980, 0x19ab, +0x19b0, 0x19c9, +0x19d0, 0x19da, +0x19de, 0x1a1b, +0x1a1e, 0x1a5e, +0x1a60, 0x1a7c, +0x1a7f, 0x1a89, +0x1a90, 0x1a99, +0x1aa0, 0x1aad, +0x1ab0, 0x1ace, +0x1b00, 0x1b4c, +0x1b4e, 0x1bf3, +0x1bfc, 0x1c37, +0x1c3b, 0x1c49, +0x1c4d, 0x1c8a, +0x1c90, 0x1cba, +0x1cbd, 0x1cc7, +0x1cd0, 0x1cfa, +0x1d00, 0x1f15, +0x1f18, 0x1f1d, +0x1f20, 0x1f45, +0x1f48, 0x1f4d, +0x1f50, 0x1f57, +0x1f59, 0x1f59, +0x1f5b, 0x1f5b, +0x1f5d, 0x1f5d, +0x1f5f, 0x1f7d, +0x1f80, 0x1fb4, +0x1fb6, 0x1fc4, +0x1fc6, 0x1fd3, +0x1fd6, 0x1fdb, +0x1fdd, 0x1fef, +0x1ff2, 0x1ff4, +0x1ff6, 0x1ffe, +0x2000, 0x2064, +0x2066, 0x2071, +0x2074, 0x208e, +0x2090, 0x209c, +0x20a0, 0x20c0, +0x20d0, 0x20f0, +0x2100, 0x218b, +0x2190, 0x2429, +0x2440, 0x244a, +0x2460, 0x2b73, +0x2b76, 0x2b95, +0x2b97, 0x2cf3, +0x2cf9, 0x2d25, +0x2d27, 0x2d27, +0x2d2d, 0x2d2d, +0x2d30, 0x2d67, +0x2d6f, 0x2d70, +0x2d7f, 0x2d96, +0x2da0, 0x2da6, +0x2da8, 0x2dae, +0x2db0, 0x2db6, +0x2db8, 0x2dbe, +0x2dc0, 0x2dc6, +0x2dc8, 0x2dce, +0x2dd0, 0x2dd6, +0x2dd8, 0x2dde, +0x2de0, 0x2e5d, +0x2e80, 0x2e99, +0x2e9b, 0x2ef3, +0x2f00, 0x2fd5, +0x2ff0, 0x303f, +0x3041, 0x3096, +0x3099, 0x30ff, +0x3105, 0x312f, +0x3131, 0x318e, +0x3190, 0x31e5, +0x31ef, 0x321e, +0x3220, 0xa48c, +0xa490, 0xa4c6, +0xa4d0, 0xa62b, +0xa640, 0xa6f7, +0xa700, 0xa7cd, +0xa7d0, 0xa7d1, +0xa7d3, 0xa7d3, +0xa7d5, 0xa7dc, +0xa7f2, 0xa82c, +0xa830, 0xa839, +0xa840, 0xa877, +0xa880, 0xa8c5, +0xa8ce, 0xa8d9, +0xa8e0, 0xa953, +0xa95f, 0xa97c, +0xa980, 0xa9cd, +0xa9cf, 0xa9d9, +0xa9de, 0xa9fe, +0xaa00, 0xaa36, +0xaa40, 0xaa4d, +0xaa50, 0xaa59, +0xaa5c, 0xaac2, +0xaadb, 0xaaf6, +0xab01, 0xab06, +0xab09, 0xab0e, +0xab11, 0xab16, +0xab20, 0xab26, +0xab28, 0xab2e, +0xab30, 0xab6b, +0xab70, 0xabed, +0xabf0, 0xabf9, +0xac00, 0xd7a3, +0xd7b0, 0xd7c6, +0xd7cb, 0xd7fb, +0xd800, 0xfa6d, +0xfa70, 0xfad9, +0xfb00, 0xfb06, +0xfb13, 0xfb17, +0xfb1d, 0xfb36, +0xfb38, 0xfb3c, +0xfb3e, 0xfb3e, +0xfb40, 0xfb41, +0xfb43, 0xfb44, +0xfb46, 0xfbc2, +0xfbd3, 0xfd8f, +0xfd92, 0xfdc7, +0xfdcf, 0xfdcf, +0xfdf0, 0xfe19, +0xfe20, 0xfe52, +0xfe54, 0xfe66, +0xfe68, 0xfe6b, +0xfe70, 0xfe74, +0xfe76, 0xfefc, +0xfeff, 0xfeff, +0xff01, 0xffbe, +0xffc2, 0xffc7, +0xffca, 0xffcf, +0xffd2, 0xffd7, +0xffda, 0xffdc, +0xffe0, 0xffe6, +0xffe8, 0xffee, +0xfff9, 0xfffd, +0x10000, 0x1000b, +0x1000d, 0x10026, +0x10028, 0x1003a, +0x1003c, 0x1003d, +0x1003f, 0x1004d, +0x10050, 0x1005d, +0x10080, 0x100fa, +0x10100, 0x10102, +0x10107, 0x10133, +0x10137, 0x1018e, +0x10190, 0x1019c, +0x101a0, 0x101a0, +0x101d0, 0x101fd, +0x10280, 0x1029c, +0x102a0, 0x102d0, +0x102e0, 0x102fb, +0x10300, 0x10323, +0x1032d, 0x1034a, +0x10350, 0x1037a, +0x10380, 0x1039d, +0x1039f, 0x103c3, +0x103c8, 0x103d5, +0x10400, 0x1049d, +0x104a0, 0x104a9, +0x104b0, 0x104d3, +0x104d8, 0x104fb, +0x10500, 0x10527, +0x10530, 0x10563, +0x1056f, 0x1057a, +0x1057c, 0x1058a, +0x1058c, 0x10592, +0x10594, 0x10595, +0x10597, 0x105a1, +0x105a3, 0x105b1, +0x105b3, 0x105b9, +0x105bb, 0x105bc, +0x105c0, 0x105f3, +0x10600, 0x10736, +0x10740, 0x10755, +0x10760, 0x10767, +0x10780, 0x10785, +0x10787, 0x107b0, +0x107b2, 0x107ba, +0x10800, 0x10805, +0x10808, 0x10808, +0x1080a, 0x10835, +0x10837, 0x10838, +0x1083c, 0x1083c, +0x1083f, 0x10855, +0x10857, 0x1089e, +0x108a7, 0x108af, +0x108e0, 0x108f2, +0x108f4, 0x108f5, +0x108fb, 0x1091b, +0x1091f, 0x10939, +0x1093f, 0x1093f, +0x10980, 0x109b7, +0x109bc, 0x109cf, +0x109d2, 0x10a03, +0x10a05, 0x10a06, +0x10a0c, 0x10a13, +0x10a15, 0x10a17, +0x10a19, 0x10a35, +0x10a38, 0x10a3a, +0x10a3f, 0x10a48, +0x10a50, 0x10a58, +0x10a60, 0x10a9f, +0x10ac0, 0x10ae6, +0x10aeb, 0x10af6, +0x10b00, 0x10b35, +0x10b39, 0x10b55, +0x10b58, 0x10b72, +0x10b78, 0x10b91, +0x10b99, 0x10b9c, +0x10ba9, 0x10baf, +0x10c00, 0x10c48, +0x10c80, 0x10cb2, +0x10cc0, 0x10cf2, +0x10cfa, 0x10d27, +0x10d30, 0x10d39, +0x10d40, 0x10d65, +0x10d69, 0x10d85, +0x10d8e, 0x10d8f, +0x10e60, 0x10e7e, +0x10e80, 0x10ea9, +0x10eab, 0x10ead, +0x10eb0, 0x10eb1, +0x10ec2, 0x10ec4, +0x10efc, 0x10f27, +0x10f30, 0x10f59, +0x10f70, 0x10f89, +0x10fb0, 0x10fcb, +0x10fe0, 0x10ff6, +0x11000, 0x1104d, +0x11052, 0x11075, +0x1107f, 0x110c2, +0x110cd, 0x110cd, +0x110d0, 0x110e8, +0x110f0, 0x110f9, +0x11100, 0x11134, +0x11136, 0x11147, +0x11150, 0x11176, +0x11180, 0x111df, +0x111e1, 0x111f4, +0x11200, 0x11211, +0x11213, 0x11241, +0x11280, 0x11286, +0x11288, 0x11288, +0x1128a, 0x1128d, +0x1128f, 0x1129d, +0x1129f, 0x112a9, +0x112b0, 0x112ea, +0x112f0, 0x112f9, +0x11300, 0x11303, +0x11305, 0x1130c, +0x1130f, 0x11310, +0x11313, 0x11328, +0x1132a, 0x11330, +0x11332, 0x11333, +0x11335, 0x11339, +0x1133b, 0x11344, +0x11347, 0x11348, +0x1134b, 0x1134d, +0x11350, 0x11350, +0x11357, 0x11357, +0x1135d, 0x11363, +0x11366, 0x1136c, +0x11370, 0x11374, +0x11380, 0x11389, +0x1138b, 0x1138b, +0x1138e, 0x1138e, +0x11390, 0x113b5, +0x113b7, 0x113c0, +0x113c2, 0x113c2, +0x113c5, 0x113c5, +0x113c7, 0x113ca, +0x113cc, 0x113d5, +0x113d7, 0x113d8, +0x113e1, 0x113e2, +0x11400, 0x1145b, +0x1145d, 0x11461, +0x11480, 0x114c7, +0x114d0, 0x114d9, +0x11580, 0x115b5, +0x115b8, 0x115dd, +0x11600, 0x11644, +0x11650, 0x11659, +0x11660, 0x1166c, +0x11680, 0x116b9, +0x116c0, 0x116c9, +0x116d0, 0x116e3, +0x11700, 0x1171a, +0x1171d, 0x1172b, +0x11730, 0x11746, +0x11800, 0x1183b, +0x118a0, 0x118f2, +0x118ff, 0x11906, +0x11909, 0x11909, +0x1190c, 0x11913, +0x11915, 0x11916, +0x11918, 0x11935, +0x11937, 0x11938, +0x1193b, 0x11946, +0x11950, 0x11959, +0x119a0, 0x119a7, +0x119aa, 0x119d7, +0x119da, 0x119e4, +0x11a00, 0x11a47, +0x11a50, 0x11aa2, +0x11ab0, 0x11af8, +0x11b00, 0x11b09, +0x11bc0, 0x11be1, +0x11bf0, 0x11bf9, +0x11c00, 0x11c08, +0x11c0a, 0x11c36, +0x11c38, 0x11c45, +0x11c50, 0x11c6c, +0x11c70, 0x11c8f, +0x11c92, 0x11ca7, +0x11ca9, 0x11cb6, +0x11d00, 0x11d06, +0x11d08, 0x11d09, +0x11d0b, 0x11d36, +0x11d3a, 0x11d3a, +0x11d3c, 0x11d3d, +0x11d3f, 0x11d47, +0x11d50, 0x11d59, +0x11d60, 0x11d65, +0x11d67, 0x11d68, +0x11d6a, 0x11d8e, +0x11d90, 0x11d91, +0x11d93, 0x11d98, +0x11da0, 0x11da9, +0x11ee0, 0x11ef8, +0x11f00, 0x11f10, +0x11f12, 0x11f3a, +0x11f3e, 0x11f5a, +0x11fb0, 0x11fb0, +0x11fc0, 0x11ff1, +0x11fff, 0x12399, +0x12400, 0x1246e, +0x12470, 0x12474, +0x12480, 0x12543, +0x12f90, 0x12ff2, +0x13000, 0x13455, +0x13460, 0x143fa, +0x14400, 0x14646, +0x16100, 0x16139, +0x16800, 0x16a38, +0x16a40, 0x16a5e, +0x16a60, 0x16a69, +0x16a6e, 0x16abe, +0x16ac0, 0x16ac9, +0x16ad0, 0x16aed, +0x16af0, 0x16af5, +0x16b00, 0x16b45, +0x16b50, 0x16b59, +0x16b5b, 0x16b61, +0x16b63, 0x16b77, +0x16b7d, 0x16b8f, +0x16d40, 0x16d79, +0x16e40, 0x16e9a, +0x16f00, 0x16f4a, +0x16f4f, 0x16f87, +0x16f8f, 0x16f9f, +0x16fe0, 0x16fe4, +0x16ff0, 0x16ff1, +0x17000, 0x187f7, +0x18800, 0x18cd5, +0x18cff, 0x18d08, +0x1aff0, 0x1aff3, +0x1aff5, 0x1affb, +0x1affd, 0x1affe, +0x1b000, 0x1b122, +0x1b132, 0x1b132, +0x1b150, 0x1b152, +0x1b155, 0x1b155, +0x1b164, 0x1b167, +0x1b170, 0x1b2fb, +0x1bc00, 0x1bc6a, +0x1bc70, 0x1bc7c, +0x1bc80, 0x1bc88, +0x1bc90, 0x1bc99, +0x1bc9c, 0x1bca3, +0x1cc00, 0x1ccf9, +0x1cd00, 0x1ceb3, +0x1cf00, 0x1cf2d, +0x1cf30, 0x1cf46, +0x1cf50, 0x1cfc3, +0x1d000, 0x1d0f5, +0x1d100, 0x1d126, +0x1d129, 0x1d1ea, +0x1d200, 0x1d245, +0x1d2c0, 0x1d2d3, +0x1d2e0, 0x1d2f3, +0x1d300, 0x1d356, +0x1d360, 0x1d378, +0x1d400, 0x1d454, +0x1d456, 0x1d49c, +0x1d49e, 0x1d49f, +0x1d4a2, 0x1d4a2, +0x1d4a5, 0x1d4a6, +0x1d4a9, 0x1d4ac, +0x1d4ae, 0x1d4b9, +0x1d4bb, 0x1d4bb, +0x1d4bd, 0x1d4c3, +0x1d4c5, 0x1d505, +0x1d507, 0x1d50a, +0x1d50d, 0x1d514, +0x1d516, 0x1d51c, +0x1d51e, 0x1d539, +0x1d53b, 0x1d53e, +0x1d540, 0x1d544, +0x1d546, 0x1d546, +0x1d54a, 0x1d550, +0x1d552, 0x1d6a5, +0x1d6a8, 0x1d7cb, +0x1d7ce, 0x1da8b, +0x1da9b, 0x1da9f, +0x1daa1, 0x1daaf, +0x1df00, 0x1df1e, +0x1df25, 0x1df2a, +0x1e000, 0x1e006, +0x1e008, 0x1e018, +0x1e01b, 0x1e021, +0x1e023, 0x1e024, +0x1e026, 0x1e02a, +0x1e030, 0x1e06d, +0x1e08f, 0x1e08f, +0x1e100, 0x1e12c, +0x1e130, 0x1e13d, +0x1e140, 0x1e149, +0x1e14e, 0x1e14f, +0x1e290, 0x1e2ae, +0x1e2c0, 0x1e2f9, +0x1e2ff, 0x1e2ff, +0x1e4d0, 0x1e4f9, +0x1e5d0, 0x1e5fa, +0x1e5ff, 0x1e5ff, +0x1e7e0, 0x1e7e6, +0x1e7e8, 0x1e7eb, +0x1e7ed, 0x1e7ee, +0x1e7f0, 0x1e7fe, +0x1e800, 0x1e8c4, +0x1e8c7, 0x1e8d6, +0x1e900, 0x1e94b, +0x1e950, 0x1e959, +0x1e95e, 0x1e95f, +0x1ec71, 0x1ecb4, +0x1ed01, 0x1ed3d, +0x1ee00, 0x1ee03, +0x1ee05, 0x1ee1f, +0x1ee21, 0x1ee22, +0x1ee24, 0x1ee24, +0x1ee27, 0x1ee27, +0x1ee29, 0x1ee32, +0x1ee34, 0x1ee37, +0x1ee39, 0x1ee39, +0x1ee3b, 0x1ee3b, +0x1ee42, 0x1ee42, +0x1ee47, 0x1ee47, +0x1ee49, 0x1ee49, +0x1ee4b, 0x1ee4b, +0x1ee4d, 0x1ee4f, +0x1ee51, 0x1ee52, +0x1ee54, 0x1ee54, +0x1ee57, 0x1ee57, +0x1ee59, 0x1ee59, +0x1ee5b, 0x1ee5b, +0x1ee5d, 0x1ee5d, +0x1ee5f, 0x1ee5f, +0x1ee61, 0x1ee62, +0x1ee64, 0x1ee64, +0x1ee67, 0x1ee6a, +0x1ee6c, 0x1ee72, +0x1ee74, 0x1ee77, +0x1ee79, 0x1ee7c, +0x1ee7e, 0x1ee7e, +0x1ee80, 0x1ee89, +0x1ee8b, 0x1ee9b, +0x1eea1, 0x1eea3, +0x1eea5, 0x1eea9, +0x1eeab, 0x1eebb, +0x1eef0, 0x1eef1, +0x1f000, 0x1f02b, +0x1f030, 0x1f093, +0x1f0a0, 0x1f0ae, +0x1f0b1, 0x1f0bf, +0x1f0c1, 0x1f0cf, +0x1f0d1, 0x1f0f5, +0x1f100, 0x1f1ad, +0x1f1e6, 0x1f202, +0x1f210, 0x1f23b, +0x1f240, 0x1f248, +0x1f250, 0x1f251, +0x1f260, 0x1f265, +0x1f300, 0x1f6d7, +0x1f6dc, 0x1f6ec, +0x1f6f0, 0x1f6fc, +0x1f700, 0x1f776, +0x1f77b, 0x1f7d9, +0x1f7e0, 0x1f7eb, +0x1f7f0, 0x1f7f0, +0x1f800, 0x1f80b, +0x1f810, 0x1f847, +0x1f850, 0x1f859, +0x1f860, 0x1f887, +0x1f890, 0x1f8ad, +0x1f8b0, 0x1f8bb, +0x1f8c0, 0x1f8c1, +0x1f900, 0x1fa53, +0x1fa60, 0x1fa6d, +0x1fa70, 0x1fa7c, +0x1fa80, 0x1fa89, +0x1fa8f, 0x1fac6, +0x1face, 0x1fadc, +0x1fadf, 0x1fae9, +0x1faf0, 0x1faf8, +0x1fb00, 0x1fb92, +0x1fb94, 0x1fbf9, +0x20000, 0x2a6df, +0x2a700, 0x2b739, +0x2b740, 0x2b81d, +0x2b820, 0x2cea1, +0x2ceb0, 0x2ebe0, +0x2ebf0, 0x2ee5d, +0x2f800, 0x2fa1d, +0x30000, 0x3134a, +0x31350, 0x323af, +0xe0001, 0xe0001, +0xe0020, 0xe007f, +0xe0100, 0xe01ef, +0xf0000, 0xffffd, +0x100000, 0x10fffd, +}; /* END of CR_Assigned */ + +/* PROPERTY: 'Avestan': Script */ +static const OnigCodePoint +CR_Avestan[] = { 2, +0x10b00, 0x10b35, +0x10b39, 0x10b3f, +}; /* END of CR_Avestan */ + +/* PROPERTY: 'Balinese': Script */ +static const OnigCodePoint +CR_Balinese[] = { 2, +0x1b00, 0x1b4c, +0x1b4e, 0x1b7f, +}; /* END of CR_Balinese */ + +/* PROPERTY: 'Bamum': Script */ +static const OnigCodePoint +CR_Bamum[] = { 2, +0xa6a0, 0xa6f7, +0x16800, 0x16a38, +}; /* END of CR_Bamum */ + +/* PROPERTY: 'Bassa_Vah': Script */ +static const OnigCodePoint +CR_Bassa_Vah[] = { 2, +0x16ad0, 0x16aed, +0x16af0, 0x16af5, +}; /* END of CR_Bassa_Vah */ + +/* PROPERTY: 'Batak': Script */ +static const OnigCodePoint +CR_Batak[] = { 2, +0x1bc0, 0x1bf3, +0x1bfc, 0x1bff, +}; /* END of CR_Batak */ + +/* PROPERTY: 'Bengali': Script */ +static const OnigCodePoint +CR_Bengali[] = { 14, +0x0980, 0x0983, +0x0985, 0x098c, +0x098f, 0x0990, +0x0993, 0x09a8, +0x09aa, 0x09b0, +0x09b2, 0x09b2, +0x09b6, 0x09b9, +0x09bc, 0x09c4, +0x09c7, 0x09c8, +0x09cb, 0x09ce, +0x09d7, 0x09d7, +0x09dc, 0x09dd, +0x09df, 0x09e3, +0x09e6, 0x09fe, +}; /* END of CR_Bengali */ + +/* PROPERTY: 'Bhaiksuki': Script */ +static const OnigCodePoint +CR_Bhaiksuki[] = { 4, +0x11c00, 0x11c08, +0x11c0a, 0x11c36, +0x11c38, 0x11c45, +0x11c50, 0x11c6c, +}; /* END of CR_Bhaiksuki */ + +/* PROPERTY: 'Bidi_Control': Binary Property */ +static const OnigCodePoint +CR_Bidi_Control[] = { 4, +0x061c, 0x061c, +0x200e, 0x200f, +0x202a, 0x202e, +0x2066, 0x2069, +}; /* END of CR_Bidi_Control */ + +/* PROPERTY: 'Bopomofo': Script */ +static const OnigCodePoint +CR_Bopomofo[] = { 3, +0x02ea, 0x02eb, +0x3105, 0x312f, +0x31a0, 0x31bf, +}; /* END of CR_Bopomofo */ + +/* PROPERTY: 'Brahmi': Script */ +static const OnigCodePoint +CR_Brahmi[] = { 3, +0x11000, 0x1104d, +0x11052, 0x11075, +0x1107f, 0x1107f, +}; /* END of CR_Brahmi */ + +/* PROPERTY: 'Braille': Script */ +static const OnigCodePoint +CR_Braille[] = { 1, +0x2800, 0x28ff, +}; /* END of CR_Braille */ + +/* PROPERTY: 'Buginese': Script */ +static const OnigCodePoint +CR_Buginese[] = { 2, +0x1a00, 0x1a1b, +0x1a1e, 0x1a1f, +}; /* END of CR_Buginese */ + +/* PROPERTY: 'Buhid': Script */ +static const OnigCodePoint +CR_Buhid[] = { 1, +0x1740, 0x1753, +}; /* END of CR_Buhid */ + +/* PROPERTY: 'C': Major Category */ +static const OnigCodePoint +CR_C[] = { 736, +0x0000, 0x001f, +0x007f, 0x009f, +0x00ad, 0x00ad, +0x0378, 0x0379, +0x0380, 0x0383, +0x038b, 0x038b, +0x038d, 0x038d, +0x03a2, 0x03a2, +0x0530, 0x0530, +0x0557, 0x0558, +0x058b, 0x058c, +0x0590, 0x0590, +0x05c8, 0x05cf, +0x05eb, 0x05ee, +0x05f5, 0x0605, +0x061c, 0x061c, +0x06dd, 0x06dd, +0x070e, 0x070f, +0x074b, 0x074c, +0x07b2, 0x07bf, +0x07fb, 0x07fc, +0x082e, 0x082f, +0x083f, 0x083f, +0x085c, 0x085d, +0x085f, 0x085f, +0x086b, 0x086f, +0x088f, 0x0896, +0x08e2, 0x08e2, +0x0984, 0x0984, +0x098d, 0x098e, +0x0991, 0x0992, +0x09a9, 0x09a9, +0x09b1, 0x09b1, +0x09b3, 0x09b5, +0x09ba, 0x09bb, +0x09c5, 0x09c6, +0x09c9, 0x09ca, +0x09cf, 0x09d6, +0x09d8, 0x09db, +0x09de, 0x09de, +0x09e4, 0x09e5, +0x09ff, 0x0a00, +0x0a04, 0x0a04, +0x0a0b, 0x0a0e, +0x0a11, 0x0a12, +0x0a29, 0x0a29, +0x0a31, 0x0a31, +0x0a34, 0x0a34, +0x0a37, 0x0a37, +0x0a3a, 0x0a3b, +0x0a3d, 0x0a3d, +0x0a43, 0x0a46, +0x0a49, 0x0a4a, +0x0a4e, 0x0a50, +0x0a52, 0x0a58, +0x0a5d, 0x0a5d, +0x0a5f, 0x0a65, +0x0a77, 0x0a80, +0x0a84, 0x0a84, +0x0a8e, 0x0a8e, +0x0a92, 0x0a92, +0x0aa9, 0x0aa9, +0x0ab1, 0x0ab1, +0x0ab4, 0x0ab4, +0x0aba, 0x0abb, +0x0ac6, 0x0ac6, +0x0aca, 0x0aca, +0x0ace, 0x0acf, +0x0ad1, 0x0adf, +0x0ae4, 0x0ae5, +0x0af2, 0x0af8, +0x0b00, 0x0b00, +0x0b04, 0x0b04, +0x0b0d, 0x0b0e, +0x0b11, 0x0b12, +0x0b29, 0x0b29, +0x0b31, 0x0b31, +0x0b34, 0x0b34, +0x0b3a, 0x0b3b, +0x0b45, 0x0b46, +0x0b49, 0x0b4a, +0x0b4e, 0x0b54, +0x0b58, 0x0b5b, +0x0b5e, 0x0b5e, +0x0b64, 0x0b65, +0x0b78, 0x0b81, +0x0b84, 0x0b84, +0x0b8b, 0x0b8d, +0x0b91, 0x0b91, +0x0b96, 0x0b98, +0x0b9b, 0x0b9b, +0x0b9d, 0x0b9d, +0x0ba0, 0x0ba2, +0x0ba5, 0x0ba7, +0x0bab, 0x0bad, +0x0bba, 0x0bbd, +0x0bc3, 0x0bc5, +0x0bc9, 0x0bc9, +0x0bce, 0x0bcf, +0x0bd1, 0x0bd6, +0x0bd8, 0x0be5, +0x0bfb, 0x0bff, +0x0c0d, 0x0c0d, +0x0c11, 0x0c11, +0x0c29, 0x0c29, +0x0c3a, 0x0c3b, +0x0c45, 0x0c45, +0x0c49, 0x0c49, +0x0c4e, 0x0c54, +0x0c57, 0x0c57, +0x0c5b, 0x0c5c, +0x0c5e, 0x0c5f, +0x0c64, 0x0c65, +0x0c70, 0x0c76, +0x0c8d, 0x0c8d, +0x0c91, 0x0c91, +0x0ca9, 0x0ca9, +0x0cb4, 0x0cb4, +0x0cba, 0x0cbb, +0x0cc5, 0x0cc5, +0x0cc9, 0x0cc9, +0x0cce, 0x0cd4, +0x0cd7, 0x0cdc, +0x0cdf, 0x0cdf, +0x0ce4, 0x0ce5, +0x0cf0, 0x0cf0, +0x0cf4, 0x0cff, +0x0d0d, 0x0d0d, +0x0d11, 0x0d11, +0x0d45, 0x0d45, +0x0d49, 0x0d49, +0x0d50, 0x0d53, +0x0d64, 0x0d65, +0x0d80, 0x0d80, +0x0d84, 0x0d84, +0x0d97, 0x0d99, +0x0db2, 0x0db2, +0x0dbc, 0x0dbc, +0x0dbe, 0x0dbf, +0x0dc7, 0x0dc9, +0x0dcb, 0x0dce, +0x0dd5, 0x0dd5, +0x0dd7, 0x0dd7, +0x0de0, 0x0de5, +0x0df0, 0x0df1, +0x0df5, 0x0e00, +0x0e3b, 0x0e3e, +0x0e5c, 0x0e80, +0x0e83, 0x0e83, +0x0e85, 0x0e85, +0x0e8b, 0x0e8b, +0x0ea4, 0x0ea4, +0x0ea6, 0x0ea6, +0x0ebe, 0x0ebf, +0x0ec5, 0x0ec5, +0x0ec7, 0x0ec7, +0x0ecf, 0x0ecf, +0x0eda, 0x0edb, +0x0ee0, 0x0eff, +0x0f48, 0x0f48, +0x0f6d, 0x0f70, +0x0f98, 0x0f98, +0x0fbd, 0x0fbd, +0x0fcd, 0x0fcd, +0x0fdb, 0x0fff, +0x10c6, 0x10c6, +0x10c8, 0x10cc, +0x10ce, 0x10cf, +0x1249, 0x1249, +0x124e, 0x124f, +0x1257, 0x1257, +0x1259, 0x1259, +0x125e, 0x125f, +0x1289, 0x1289, +0x128e, 0x128f, +0x12b1, 0x12b1, +0x12b6, 0x12b7, +0x12bf, 0x12bf, +0x12c1, 0x12c1, +0x12c6, 0x12c7, +0x12d7, 0x12d7, +0x1311, 0x1311, +0x1316, 0x1317, +0x135b, 0x135c, +0x137d, 0x137f, +0x139a, 0x139f, +0x13f6, 0x13f7, +0x13fe, 0x13ff, +0x169d, 0x169f, +0x16f9, 0x16ff, +0x1716, 0x171e, +0x1737, 0x173f, +0x1754, 0x175f, +0x176d, 0x176d, +0x1771, 0x1771, +0x1774, 0x177f, +0x17de, 0x17df, +0x17ea, 0x17ef, +0x17fa, 0x17ff, +0x180e, 0x180e, +0x181a, 0x181f, +0x1879, 0x187f, +0x18ab, 0x18af, +0x18f6, 0x18ff, +0x191f, 0x191f, +0x192c, 0x192f, +0x193c, 0x193f, +0x1941, 0x1943, +0x196e, 0x196f, +0x1975, 0x197f, +0x19ac, 0x19af, +0x19ca, 0x19cf, +0x19db, 0x19dd, +0x1a1c, 0x1a1d, +0x1a5f, 0x1a5f, +0x1a7d, 0x1a7e, +0x1a8a, 0x1a8f, +0x1a9a, 0x1a9f, +0x1aae, 0x1aaf, +0x1acf, 0x1aff, +0x1b4d, 0x1b4d, +0x1bf4, 0x1bfb, +0x1c38, 0x1c3a, +0x1c4a, 0x1c4c, +0x1c8b, 0x1c8f, +0x1cbb, 0x1cbc, +0x1cc8, 0x1ccf, +0x1cfb, 0x1cff, +0x1f16, 0x1f17, +0x1f1e, 0x1f1f, +0x1f46, 0x1f47, +0x1f4e, 0x1f4f, +0x1f58, 0x1f58, +0x1f5a, 0x1f5a, +0x1f5c, 0x1f5c, +0x1f5e, 0x1f5e, +0x1f7e, 0x1f7f, +0x1fb5, 0x1fb5, +0x1fc5, 0x1fc5, +0x1fd4, 0x1fd5, +0x1fdc, 0x1fdc, +0x1ff0, 0x1ff1, +0x1ff5, 0x1ff5, +0x1fff, 0x1fff, +0x200b, 0x200f, +0x202a, 0x202e, +0x2060, 0x206f, +0x2072, 0x2073, +0x208f, 0x208f, +0x209d, 0x209f, +0x20c1, 0x20cf, +0x20f1, 0x20ff, +0x218c, 0x218f, +0x242a, 0x243f, +0x244b, 0x245f, +0x2b74, 0x2b75, +0x2b96, 0x2b96, +0x2cf4, 0x2cf8, +0x2d26, 0x2d26, +0x2d28, 0x2d2c, +0x2d2e, 0x2d2f, +0x2d68, 0x2d6e, +0x2d71, 0x2d7e, +0x2d97, 0x2d9f, +0x2da7, 0x2da7, +0x2daf, 0x2daf, +0x2db7, 0x2db7, +0x2dbf, 0x2dbf, +0x2dc7, 0x2dc7, +0x2dcf, 0x2dcf, +0x2dd7, 0x2dd7, +0x2ddf, 0x2ddf, +0x2e5e, 0x2e7f, +0x2e9a, 0x2e9a, +0x2ef4, 0x2eff, +0x2fd6, 0x2fef, +0x3040, 0x3040, +0x3097, 0x3098, +0x3100, 0x3104, +0x3130, 0x3130, +0x318f, 0x318f, +0x31e6, 0x31ee, +0x321f, 0x321f, +0xa48d, 0xa48f, +0xa4c7, 0xa4cf, +0xa62c, 0xa63f, +0xa6f8, 0xa6ff, +0xa7ce, 0xa7cf, +0xa7d2, 0xa7d2, +0xa7d4, 0xa7d4, +0xa7dd, 0xa7f1, +0xa82d, 0xa82f, +0xa83a, 0xa83f, +0xa878, 0xa87f, +0xa8c6, 0xa8cd, +0xa8da, 0xa8df, +0xa954, 0xa95e, +0xa97d, 0xa97f, +0xa9ce, 0xa9ce, +0xa9da, 0xa9dd, +0xa9ff, 0xa9ff, +0xaa37, 0xaa3f, +0xaa4e, 0xaa4f, +0xaa5a, 0xaa5b, +0xaac3, 0xaada, +0xaaf7, 0xab00, +0xab07, 0xab08, +0xab0f, 0xab10, +0xab17, 0xab1f, +0xab27, 0xab27, +0xab2f, 0xab2f, +0xab6c, 0xab6f, +0xabee, 0xabef, +0xabfa, 0xabff, +0xd7a4, 0xd7af, +0xd7c7, 0xd7ca, +0xd7fc, 0xf8ff, +0xfa6e, 0xfa6f, +0xfada, 0xfaff, +0xfb07, 0xfb12, +0xfb18, 0xfb1c, +0xfb37, 0xfb37, +0xfb3d, 0xfb3d, +0xfb3f, 0xfb3f, +0xfb42, 0xfb42, +0xfb45, 0xfb45, +0xfbc3, 0xfbd2, +0xfd90, 0xfd91, +0xfdc8, 0xfdce, +0xfdd0, 0xfdef, +0xfe1a, 0xfe1f, +0xfe53, 0xfe53, +0xfe67, 0xfe67, +0xfe6c, 0xfe6f, +0xfe75, 0xfe75, +0xfefd, 0xff00, +0xffbf, 0xffc1, +0xffc8, 0xffc9, +0xffd0, 0xffd1, +0xffd8, 0xffd9, +0xffdd, 0xffdf, +0xffe7, 0xffe7, +0xffef, 0xfffb, +0xfffe, 0xffff, +0x1000c, 0x1000c, +0x10027, 0x10027, +0x1003b, 0x1003b, +0x1003e, 0x1003e, +0x1004e, 0x1004f, +0x1005e, 0x1007f, +0x100fb, 0x100ff, +0x10103, 0x10106, +0x10134, 0x10136, +0x1018f, 0x1018f, +0x1019d, 0x1019f, +0x101a1, 0x101cf, +0x101fe, 0x1027f, +0x1029d, 0x1029f, +0x102d1, 0x102df, +0x102fc, 0x102ff, +0x10324, 0x1032c, +0x1034b, 0x1034f, +0x1037b, 0x1037f, +0x1039e, 0x1039e, +0x103c4, 0x103c7, +0x103d6, 0x103ff, +0x1049e, 0x1049f, +0x104aa, 0x104af, +0x104d4, 0x104d7, +0x104fc, 0x104ff, +0x10528, 0x1052f, +0x10564, 0x1056e, +0x1057b, 0x1057b, +0x1058b, 0x1058b, +0x10593, 0x10593, +0x10596, 0x10596, +0x105a2, 0x105a2, +0x105b2, 0x105b2, +0x105ba, 0x105ba, +0x105bd, 0x105bf, +0x105f4, 0x105ff, +0x10737, 0x1073f, +0x10756, 0x1075f, +0x10768, 0x1077f, +0x10786, 0x10786, +0x107b1, 0x107b1, +0x107bb, 0x107ff, +0x10806, 0x10807, +0x10809, 0x10809, +0x10836, 0x10836, +0x10839, 0x1083b, +0x1083d, 0x1083e, +0x10856, 0x10856, +0x1089f, 0x108a6, +0x108b0, 0x108df, +0x108f3, 0x108f3, +0x108f6, 0x108fa, +0x1091c, 0x1091e, +0x1093a, 0x1093e, +0x10940, 0x1097f, +0x109b8, 0x109bb, +0x109d0, 0x109d1, +0x10a04, 0x10a04, +0x10a07, 0x10a0b, +0x10a14, 0x10a14, +0x10a18, 0x10a18, +0x10a36, 0x10a37, +0x10a3b, 0x10a3e, +0x10a49, 0x10a4f, +0x10a59, 0x10a5f, +0x10aa0, 0x10abf, +0x10ae7, 0x10aea, +0x10af7, 0x10aff, +0x10b36, 0x10b38, +0x10b56, 0x10b57, +0x10b73, 0x10b77, +0x10b92, 0x10b98, +0x10b9d, 0x10ba8, +0x10bb0, 0x10bff, +0x10c49, 0x10c7f, +0x10cb3, 0x10cbf, +0x10cf3, 0x10cf9, +0x10d28, 0x10d2f, +0x10d3a, 0x10d3f, +0x10d66, 0x10d68, +0x10d86, 0x10d8d, +0x10d90, 0x10e5f, +0x10e7f, 0x10e7f, +0x10eaa, 0x10eaa, +0x10eae, 0x10eaf, +0x10eb2, 0x10ec1, +0x10ec5, 0x10efb, +0x10f28, 0x10f2f, +0x10f5a, 0x10f6f, +0x10f8a, 0x10faf, +0x10fcc, 0x10fdf, +0x10ff7, 0x10fff, +0x1104e, 0x11051, +0x11076, 0x1107e, +0x110bd, 0x110bd, +0x110c3, 0x110cf, +0x110e9, 0x110ef, +0x110fa, 0x110ff, +0x11135, 0x11135, +0x11148, 0x1114f, +0x11177, 0x1117f, +0x111e0, 0x111e0, +0x111f5, 0x111ff, +0x11212, 0x11212, +0x11242, 0x1127f, +0x11287, 0x11287, +0x11289, 0x11289, +0x1128e, 0x1128e, +0x1129e, 0x1129e, +0x112aa, 0x112af, +0x112eb, 0x112ef, +0x112fa, 0x112ff, +0x11304, 0x11304, +0x1130d, 0x1130e, +0x11311, 0x11312, +0x11329, 0x11329, +0x11331, 0x11331, +0x11334, 0x11334, +0x1133a, 0x1133a, +0x11345, 0x11346, +0x11349, 0x1134a, +0x1134e, 0x1134f, +0x11351, 0x11356, +0x11358, 0x1135c, +0x11364, 0x11365, +0x1136d, 0x1136f, +0x11375, 0x1137f, +0x1138a, 0x1138a, +0x1138c, 0x1138d, +0x1138f, 0x1138f, +0x113b6, 0x113b6, +0x113c1, 0x113c1, +0x113c3, 0x113c4, +0x113c6, 0x113c6, +0x113cb, 0x113cb, +0x113d6, 0x113d6, +0x113d9, 0x113e0, +0x113e3, 0x113ff, +0x1145c, 0x1145c, +0x11462, 0x1147f, +0x114c8, 0x114cf, +0x114da, 0x1157f, +0x115b6, 0x115b7, +0x115de, 0x115ff, +0x11645, 0x1164f, +0x1165a, 0x1165f, +0x1166d, 0x1167f, +0x116ba, 0x116bf, +0x116ca, 0x116cf, +0x116e4, 0x116ff, +0x1171b, 0x1171c, +0x1172c, 0x1172f, +0x11747, 0x117ff, +0x1183c, 0x1189f, +0x118f3, 0x118fe, +0x11907, 0x11908, +0x1190a, 0x1190b, +0x11914, 0x11914, +0x11917, 0x11917, +0x11936, 0x11936, +0x11939, 0x1193a, +0x11947, 0x1194f, +0x1195a, 0x1199f, +0x119a8, 0x119a9, +0x119d8, 0x119d9, +0x119e5, 0x119ff, +0x11a48, 0x11a4f, +0x11aa3, 0x11aaf, +0x11af9, 0x11aff, +0x11b0a, 0x11bbf, +0x11be2, 0x11bef, +0x11bfa, 0x11bff, +0x11c09, 0x11c09, +0x11c37, 0x11c37, +0x11c46, 0x11c4f, +0x11c6d, 0x11c6f, +0x11c90, 0x11c91, +0x11ca8, 0x11ca8, +0x11cb7, 0x11cff, +0x11d07, 0x11d07, +0x11d0a, 0x11d0a, +0x11d37, 0x11d39, +0x11d3b, 0x11d3b, +0x11d3e, 0x11d3e, +0x11d48, 0x11d4f, +0x11d5a, 0x11d5f, +0x11d66, 0x11d66, +0x11d69, 0x11d69, +0x11d8f, 0x11d8f, +0x11d92, 0x11d92, +0x11d99, 0x11d9f, +0x11daa, 0x11edf, +0x11ef9, 0x11eff, +0x11f11, 0x11f11, +0x11f3b, 0x11f3d, +0x11f5b, 0x11faf, +0x11fb1, 0x11fbf, +0x11ff2, 0x11ffe, +0x1239a, 0x123ff, +0x1246f, 0x1246f, +0x12475, 0x1247f, +0x12544, 0x12f8f, +0x12ff3, 0x12fff, +0x13430, 0x1343f, +0x13456, 0x1345f, +0x143fb, 0x143ff, +0x14647, 0x160ff, +0x1613a, 0x167ff, +0x16a39, 0x16a3f, +0x16a5f, 0x16a5f, +0x16a6a, 0x16a6d, +0x16abf, 0x16abf, +0x16aca, 0x16acf, +0x16aee, 0x16aef, +0x16af6, 0x16aff, +0x16b46, 0x16b4f, +0x16b5a, 0x16b5a, +0x16b62, 0x16b62, +0x16b78, 0x16b7c, +0x16b90, 0x16d3f, +0x16d7a, 0x16e3f, +0x16e9b, 0x16eff, +0x16f4b, 0x16f4e, +0x16f88, 0x16f8e, +0x16fa0, 0x16fdf, +0x16fe5, 0x16fef, +0x16ff2, 0x16fff, +0x187f8, 0x187ff, +0x18cd6, 0x18cfe, +0x18d09, 0x1afef, +0x1aff4, 0x1aff4, +0x1affc, 0x1affc, +0x1afff, 0x1afff, +0x1b123, 0x1b131, +0x1b133, 0x1b14f, +0x1b153, 0x1b154, +0x1b156, 0x1b163, +0x1b168, 0x1b16f, +0x1b2fc, 0x1bbff, +0x1bc6b, 0x1bc6f, +0x1bc7d, 0x1bc7f, +0x1bc89, 0x1bc8f, +0x1bc9a, 0x1bc9b, +0x1bca0, 0x1cbff, +0x1ccfa, 0x1ccff, +0x1ceb4, 0x1ceff, +0x1cf2e, 0x1cf2f, +0x1cf47, 0x1cf4f, +0x1cfc4, 0x1cfff, +0x1d0f6, 0x1d0ff, +0x1d127, 0x1d128, +0x1d173, 0x1d17a, +0x1d1eb, 0x1d1ff, +0x1d246, 0x1d2bf, +0x1d2d4, 0x1d2df, +0x1d2f4, 0x1d2ff, +0x1d357, 0x1d35f, +0x1d379, 0x1d3ff, +0x1d455, 0x1d455, +0x1d49d, 0x1d49d, +0x1d4a0, 0x1d4a1, +0x1d4a3, 0x1d4a4, +0x1d4a7, 0x1d4a8, +0x1d4ad, 0x1d4ad, +0x1d4ba, 0x1d4ba, +0x1d4bc, 0x1d4bc, +0x1d4c4, 0x1d4c4, +0x1d506, 0x1d506, +0x1d50b, 0x1d50c, +0x1d515, 0x1d515, +0x1d51d, 0x1d51d, +0x1d53a, 0x1d53a, +0x1d53f, 0x1d53f, +0x1d545, 0x1d545, +0x1d547, 0x1d549, +0x1d551, 0x1d551, +0x1d6a6, 0x1d6a7, +0x1d7cc, 0x1d7cd, +0x1da8c, 0x1da9a, +0x1daa0, 0x1daa0, +0x1dab0, 0x1deff, +0x1df1f, 0x1df24, +0x1df2b, 0x1dfff, +0x1e007, 0x1e007, +0x1e019, 0x1e01a, +0x1e022, 0x1e022, +0x1e025, 0x1e025, +0x1e02b, 0x1e02f, +0x1e06e, 0x1e08e, +0x1e090, 0x1e0ff, +0x1e12d, 0x1e12f, +0x1e13e, 0x1e13f, +0x1e14a, 0x1e14d, +0x1e150, 0x1e28f, +0x1e2af, 0x1e2bf, +0x1e2fa, 0x1e2fe, +0x1e300, 0x1e4cf, +0x1e4fa, 0x1e5cf, +0x1e5fb, 0x1e5fe, +0x1e600, 0x1e7df, +0x1e7e7, 0x1e7e7, +0x1e7ec, 0x1e7ec, +0x1e7ef, 0x1e7ef, +0x1e7ff, 0x1e7ff, +0x1e8c5, 0x1e8c6, +0x1e8d7, 0x1e8ff, +0x1e94c, 0x1e94f, +0x1e95a, 0x1e95d, +0x1e960, 0x1ec70, +0x1ecb5, 0x1ed00, +0x1ed3e, 0x1edff, +0x1ee04, 0x1ee04, +0x1ee20, 0x1ee20, +0x1ee23, 0x1ee23, +0x1ee25, 0x1ee26, +0x1ee28, 0x1ee28, +0x1ee33, 0x1ee33, +0x1ee38, 0x1ee38, +0x1ee3a, 0x1ee3a, +0x1ee3c, 0x1ee41, +0x1ee43, 0x1ee46, +0x1ee48, 0x1ee48, +0x1ee4a, 0x1ee4a, +0x1ee4c, 0x1ee4c, +0x1ee50, 0x1ee50, +0x1ee53, 0x1ee53, +0x1ee55, 0x1ee56, +0x1ee58, 0x1ee58, +0x1ee5a, 0x1ee5a, +0x1ee5c, 0x1ee5c, +0x1ee5e, 0x1ee5e, +0x1ee60, 0x1ee60, +0x1ee63, 0x1ee63, +0x1ee65, 0x1ee66, +0x1ee6b, 0x1ee6b, +0x1ee73, 0x1ee73, +0x1ee78, 0x1ee78, +0x1ee7d, 0x1ee7d, +0x1ee7f, 0x1ee7f, +0x1ee8a, 0x1ee8a, +0x1ee9c, 0x1eea0, +0x1eea4, 0x1eea4, +0x1eeaa, 0x1eeaa, +0x1eebc, 0x1eeef, +0x1eef2, 0x1efff, +0x1f02c, 0x1f02f, +0x1f094, 0x1f09f, +0x1f0af, 0x1f0b0, +0x1f0c0, 0x1f0c0, +0x1f0d0, 0x1f0d0, +0x1f0f6, 0x1f0ff, +0x1f1ae, 0x1f1e5, +0x1f203, 0x1f20f, +0x1f23c, 0x1f23f, +0x1f249, 0x1f24f, +0x1f252, 0x1f25f, +0x1f266, 0x1f2ff, +0x1f6d8, 0x1f6db, +0x1f6ed, 0x1f6ef, +0x1f6fd, 0x1f6ff, +0x1f777, 0x1f77a, +0x1f7da, 0x1f7df, +0x1f7ec, 0x1f7ef, +0x1f7f1, 0x1f7ff, +0x1f80c, 0x1f80f, +0x1f848, 0x1f84f, +0x1f85a, 0x1f85f, +0x1f888, 0x1f88f, +0x1f8ae, 0x1f8af, +0x1f8bc, 0x1f8bf, +0x1f8c2, 0x1f8ff, +0x1fa54, 0x1fa5f, +0x1fa6e, 0x1fa6f, +0x1fa7d, 0x1fa7f, +0x1fa8a, 0x1fa8e, +0x1fac7, 0x1facd, +0x1fadd, 0x1fade, +0x1faea, 0x1faef, +0x1faf9, 0x1faff, +0x1fb93, 0x1fb93, +0x1fbfa, 0x1ffff, +0x2a6e0, 0x2a6ff, +0x2b73a, 0x2b73f, +0x2b81e, 0x2b81f, +0x2cea2, 0x2ceaf, +0x2ebe1, 0x2ebef, +0x2ee5e, 0x2f7ff, +0x2fa1e, 0x2ffff, +0x3134b, 0x3134f, +0x323b0, 0xe00ff, +0xe01f0, 0x10ffff, +}; /* END of CR_C */ + +/* PROPERTY: 'Canadian_Aboriginal': Script */ +static const OnigCodePoint +CR_Canadian_Aboriginal[] = { 3, +0x1400, 0x167f, +0x18b0, 0x18f5, +0x11ab0, 0x11abf, +}; /* END of CR_Canadian_Aboriginal */ + +/* PROPERTY: 'Carian': Script */ +static const OnigCodePoint +CR_Carian[] = { 1, +0x102a0, 0x102d0, +}; /* END of CR_Carian */ + +/* PROPERTY: 'Case_Ignorable': Derived Property */ +static const OnigCodePoint +CR_Case_Ignorable[] = { 452, +0x0027, 0x0027, +0x002e, 0x002e, +0x003a, 0x003a, +0x005e, 0x005e, +0x0060, 0x0060, +0x00a8, 0x00a8, +0x00ad, 0x00ad, +0x00af, 0x00af, +0x00b4, 0x00b4, +0x00b7, 0x00b8, +0x02b0, 0x036f, +0x0374, 0x0375, +0x037a, 0x037a, +0x0384, 0x0385, +0x0387, 0x0387, +0x0483, 0x0489, +0x0559, 0x0559, +0x055f, 0x055f, +0x0591, 0x05bd, +0x05bf, 0x05bf, +0x05c1, 0x05c2, +0x05c4, 0x05c5, +0x05c7, 0x05c7, +0x05f4, 0x05f4, +0x0600, 0x0605, +0x0610, 0x061a, +0x061c, 0x061c, +0x0640, 0x0640, +0x064b, 0x065f, +0x0670, 0x0670, +0x06d6, 0x06dd, +0x06df, 0x06e8, +0x06ea, 0x06ed, +0x070f, 0x070f, +0x0711, 0x0711, +0x0730, 0x074a, +0x07a6, 0x07b0, +0x07eb, 0x07f5, +0x07fa, 0x07fa, +0x07fd, 0x07fd, +0x0816, 0x082d, +0x0859, 0x085b, +0x0888, 0x0888, +0x0890, 0x0891, +0x0897, 0x089f, +0x08c9, 0x0902, +0x093a, 0x093a, +0x093c, 0x093c, +0x0941, 0x0948, +0x094d, 0x094d, +0x0951, 0x0957, +0x0962, 0x0963, +0x0971, 0x0971, +0x0981, 0x0981, +0x09bc, 0x09bc, +0x09c1, 0x09c4, +0x09cd, 0x09cd, +0x09e2, 0x09e3, +0x09fe, 0x09fe, +0x0a01, 0x0a02, +0x0a3c, 0x0a3c, +0x0a41, 0x0a42, +0x0a47, 0x0a48, +0x0a4b, 0x0a4d, +0x0a51, 0x0a51, +0x0a70, 0x0a71, +0x0a75, 0x0a75, +0x0a81, 0x0a82, +0x0abc, 0x0abc, +0x0ac1, 0x0ac5, +0x0ac7, 0x0ac8, +0x0acd, 0x0acd, +0x0ae2, 0x0ae3, +0x0afa, 0x0aff, +0x0b01, 0x0b01, +0x0b3c, 0x0b3c, +0x0b3f, 0x0b3f, +0x0b41, 0x0b44, +0x0b4d, 0x0b4d, +0x0b55, 0x0b56, +0x0b62, 0x0b63, +0x0b82, 0x0b82, +0x0bc0, 0x0bc0, +0x0bcd, 0x0bcd, +0x0c00, 0x0c00, +0x0c04, 0x0c04, +0x0c3c, 0x0c3c, +0x0c3e, 0x0c40, +0x0c46, 0x0c48, +0x0c4a, 0x0c4d, +0x0c55, 0x0c56, +0x0c62, 0x0c63, +0x0c81, 0x0c81, +0x0cbc, 0x0cbc, +0x0cbf, 0x0cbf, +0x0cc6, 0x0cc6, +0x0ccc, 0x0ccd, +0x0ce2, 0x0ce3, +0x0d00, 0x0d01, +0x0d3b, 0x0d3c, +0x0d41, 0x0d44, +0x0d4d, 0x0d4d, +0x0d62, 0x0d63, +0x0d81, 0x0d81, +0x0dca, 0x0dca, +0x0dd2, 0x0dd4, +0x0dd6, 0x0dd6, +0x0e31, 0x0e31, +0x0e34, 0x0e3a, +0x0e46, 0x0e4e, +0x0eb1, 0x0eb1, +0x0eb4, 0x0ebc, +0x0ec6, 0x0ec6, +0x0ec8, 0x0ece, +0x0f18, 0x0f19, +0x0f35, 0x0f35, +0x0f37, 0x0f37, +0x0f39, 0x0f39, +0x0f71, 0x0f7e, +0x0f80, 0x0f84, +0x0f86, 0x0f87, +0x0f8d, 0x0f97, +0x0f99, 0x0fbc, +0x0fc6, 0x0fc6, +0x102d, 0x1030, +0x1032, 0x1037, +0x1039, 0x103a, +0x103d, 0x103e, +0x1058, 0x1059, +0x105e, 0x1060, +0x1071, 0x1074, +0x1082, 0x1082, +0x1085, 0x1086, +0x108d, 0x108d, +0x109d, 0x109d, +0x10fc, 0x10fc, +0x135d, 0x135f, +0x1712, 0x1714, +0x1732, 0x1733, +0x1752, 0x1753, +0x1772, 0x1773, +0x17b4, 0x17b5, +0x17b7, 0x17bd, +0x17c6, 0x17c6, +0x17c9, 0x17d3, +0x17d7, 0x17d7, +0x17dd, 0x17dd, +0x180b, 0x180f, +0x1843, 0x1843, +0x1885, 0x1886, +0x18a9, 0x18a9, +0x1920, 0x1922, +0x1927, 0x1928, +0x1932, 0x1932, +0x1939, 0x193b, +0x1a17, 0x1a18, +0x1a1b, 0x1a1b, +0x1a56, 0x1a56, +0x1a58, 0x1a5e, +0x1a60, 0x1a60, +0x1a62, 0x1a62, +0x1a65, 0x1a6c, +0x1a73, 0x1a7c, +0x1a7f, 0x1a7f, +0x1aa7, 0x1aa7, +0x1ab0, 0x1ace, +0x1b00, 0x1b03, +0x1b34, 0x1b34, +0x1b36, 0x1b3a, +0x1b3c, 0x1b3c, +0x1b42, 0x1b42, +0x1b6b, 0x1b73, +0x1b80, 0x1b81, +0x1ba2, 0x1ba5, +0x1ba8, 0x1ba9, +0x1bab, 0x1bad, +0x1be6, 0x1be6, +0x1be8, 0x1be9, +0x1bed, 0x1bed, +0x1bef, 0x1bf1, +0x1c2c, 0x1c33, +0x1c36, 0x1c37, +0x1c78, 0x1c7d, +0x1cd0, 0x1cd2, +0x1cd4, 0x1ce0, +0x1ce2, 0x1ce8, +0x1ced, 0x1ced, +0x1cf4, 0x1cf4, +0x1cf8, 0x1cf9, +0x1d2c, 0x1d6a, +0x1d78, 0x1d78, +0x1d9b, 0x1dff, +0x1fbd, 0x1fbd, +0x1fbf, 0x1fc1, +0x1fcd, 0x1fcf, +0x1fdd, 0x1fdf, +0x1fed, 0x1fef, +0x1ffd, 0x1ffe, +0x200b, 0x200f, +0x2018, 0x2019, +0x2024, 0x2024, +0x2027, 0x2027, +0x202a, 0x202e, +0x2060, 0x2064, +0x2066, 0x206f, +0x2071, 0x2071, +0x207f, 0x207f, +0x2090, 0x209c, +0x20d0, 0x20f0, +0x2c7c, 0x2c7d, +0x2cef, 0x2cf1, +0x2d6f, 0x2d6f, +0x2d7f, 0x2d7f, +0x2de0, 0x2dff, +0x2e2f, 0x2e2f, +0x3005, 0x3005, +0x302a, 0x302d, +0x3031, 0x3035, +0x303b, 0x303b, +0x3099, 0x309e, +0x30fc, 0x30fe, +0xa015, 0xa015, +0xa4f8, 0xa4fd, +0xa60c, 0xa60c, +0xa66f, 0xa672, +0xa674, 0xa67d, +0xa67f, 0xa67f, +0xa69c, 0xa69f, +0xa6f0, 0xa6f1, +0xa700, 0xa721, +0xa770, 0xa770, +0xa788, 0xa78a, +0xa7f2, 0xa7f4, +0xa7f8, 0xa7f9, +0xa802, 0xa802, +0xa806, 0xa806, +0xa80b, 0xa80b, +0xa825, 0xa826, +0xa82c, 0xa82c, +0xa8c4, 0xa8c5, +0xa8e0, 0xa8f1, +0xa8ff, 0xa8ff, +0xa926, 0xa92d, +0xa947, 0xa951, +0xa980, 0xa982, +0xa9b3, 0xa9b3, +0xa9b6, 0xa9b9, +0xa9bc, 0xa9bd, +0xa9cf, 0xa9cf, +0xa9e5, 0xa9e6, +0xaa29, 0xaa2e, +0xaa31, 0xaa32, +0xaa35, 0xaa36, +0xaa43, 0xaa43, +0xaa4c, 0xaa4c, +0xaa70, 0xaa70, +0xaa7c, 0xaa7c, +0xaab0, 0xaab0, +0xaab2, 0xaab4, +0xaab7, 0xaab8, +0xaabe, 0xaabf, +0xaac1, 0xaac1, +0xaadd, 0xaadd, +0xaaec, 0xaaed, +0xaaf3, 0xaaf4, +0xaaf6, 0xaaf6, +0xab5b, 0xab5f, +0xab69, 0xab6b, +0xabe5, 0xabe5, +0xabe8, 0xabe8, +0xabed, 0xabed, +0xfb1e, 0xfb1e, +0xfbb2, 0xfbc2, +0xfe00, 0xfe0f, +0xfe13, 0xfe13, +0xfe20, 0xfe2f, +0xfe52, 0xfe52, +0xfe55, 0xfe55, +0xfeff, 0xfeff, +0xff07, 0xff07, +0xff0e, 0xff0e, +0xff1a, 0xff1a, +0xff3e, 0xff3e, +0xff40, 0xff40, +0xff70, 0xff70, +0xff9e, 0xff9f, +0xffe3, 0xffe3, +0xfff9, 0xfffb, +0x101fd, 0x101fd, +0x102e0, 0x102e0, +0x10376, 0x1037a, +0x10780, 0x10785, +0x10787, 0x107b0, +0x107b2, 0x107ba, +0x10a01, 0x10a03, +0x10a05, 0x10a06, +0x10a0c, 0x10a0f, +0x10a38, 0x10a3a, +0x10a3f, 0x10a3f, +0x10ae5, 0x10ae6, +0x10d24, 0x10d27, +0x10d4e, 0x10d4e, +0x10d69, 0x10d6d, +0x10d6f, 0x10d6f, +0x10eab, 0x10eac, +0x10efc, 0x10eff, +0x10f46, 0x10f50, +0x10f82, 0x10f85, +0x11001, 0x11001, +0x11038, 0x11046, +0x11070, 0x11070, +0x11073, 0x11074, +0x1107f, 0x11081, +0x110b3, 0x110b6, +0x110b9, 0x110ba, +0x110bd, 0x110bd, +0x110c2, 0x110c2, +0x110cd, 0x110cd, +0x11100, 0x11102, +0x11127, 0x1112b, +0x1112d, 0x11134, +0x11173, 0x11173, +0x11180, 0x11181, +0x111b6, 0x111be, +0x111c9, 0x111cc, +0x111cf, 0x111cf, +0x1122f, 0x11231, +0x11234, 0x11234, +0x11236, 0x11237, +0x1123e, 0x1123e, +0x11241, 0x11241, +0x112df, 0x112df, +0x112e3, 0x112ea, +0x11300, 0x11301, +0x1133b, 0x1133c, +0x11340, 0x11340, +0x11366, 0x1136c, +0x11370, 0x11374, +0x113bb, 0x113c0, +0x113ce, 0x113ce, +0x113d0, 0x113d0, +0x113d2, 0x113d2, +0x113e1, 0x113e2, +0x11438, 0x1143f, +0x11442, 0x11444, +0x11446, 0x11446, +0x1145e, 0x1145e, +0x114b3, 0x114b8, +0x114ba, 0x114ba, +0x114bf, 0x114c0, +0x114c2, 0x114c3, +0x115b2, 0x115b5, +0x115bc, 0x115bd, +0x115bf, 0x115c0, +0x115dc, 0x115dd, +0x11633, 0x1163a, +0x1163d, 0x1163d, +0x1163f, 0x11640, +0x116ab, 0x116ab, +0x116ad, 0x116ad, +0x116b0, 0x116b5, +0x116b7, 0x116b7, +0x1171d, 0x1171d, +0x1171f, 0x1171f, +0x11722, 0x11725, +0x11727, 0x1172b, +0x1182f, 0x11837, +0x11839, 0x1183a, +0x1193b, 0x1193c, +0x1193e, 0x1193e, +0x11943, 0x11943, +0x119d4, 0x119d7, +0x119da, 0x119db, +0x119e0, 0x119e0, +0x11a01, 0x11a0a, +0x11a33, 0x11a38, +0x11a3b, 0x11a3e, +0x11a47, 0x11a47, +0x11a51, 0x11a56, +0x11a59, 0x11a5b, +0x11a8a, 0x11a96, +0x11a98, 0x11a99, +0x11c30, 0x11c36, +0x11c38, 0x11c3d, +0x11c3f, 0x11c3f, +0x11c92, 0x11ca7, +0x11caa, 0x11cb0, +0x11cb2, 0x11cb3, +0x11cb5, 0x11cb6, +0x11d31, 0x11d36, +0x11d3a, 0x11d3a, +0x11d3c, 0x11d3d, +0x11d3f, 0x11d45, +0x11d47, 0x11d47, +0x11d90, 0x11d91, +0x11d95, 0x11d95, +0x11d97, 0x11d97, +0x11ef3, 0x11ef4, +0x11f00, 0x11f01, +0x11f36, 0x11f3a, +0x11f40, 0x11f40, +0x11f42, 0x11f42, +0x11f5a, 0x11f5a, +0x13430, 0x13440, +0x13447, 0x13455, +0x1611e, 0x16129, +0x1612d, 0x1612f, +0x16af0, 0x16af4, +0x16b30, 0x16b36, +0x16b40, 0x16b43, +0x16d40, 0x16d42, +0x16d6b, 0x16d6c, +0x16f4f, 0x16f4f, +0x16f8f, 0x16f9f, +0x16fe0, 0x16fe1, +0x16fe3, 0x16fe4, +0x1aff0, 0x1aff3, +0x1aff5, 0x1affb, +0x1affd, 0x1affe, +0x1bc9d, 0x1bc9e, +0x1bca0, 0x1bca3, +0x1cf00, 0x1cf2d, +0x1cf30, 0x1cf46, +0x1d167, 0x1d169, +0x1d173, 0x1d182, +0x1d185, 0x1d18b, +0x1d1aa, 0x1d1ad, +0x1d242, 0x1d244, +0x1da00, 0x1da36, +0x1da3b, 0x1da6c, +0x1da75, 0x1da75, +0x1da84, 0x1da84, +0x1da9b, 0x1da9f, +0x1daa1, 0x1daaf, +0x1e000, 0x1e006, +0x1e008, 0x1e018, +0x1e01b, 0x1e021, +0x1e023, 0x1e024, +0x1e026, 0x1e02a, +0x1e030, 0x1e06d, +0x1e08f, 0x1e08f, +0x1e130, 0x1e13d, +0x1e2ae, 0x1e2ae, +0x1e2ec, 0x1e2ef, +0x1e4eb, 0x1e4ef, +0x1e5ee, 0x1e5ef, +0x1e8d0, 0x1e8d6, +0x1e944, 0x1e94b, +0x1f3fb, 0x1f3ff, +0xe0001, 0xe0001, +0xe0020, 0xe007f, +0xe0100, 0xe01ef, +}; /* END of CR_Case_Ignorable */ + +/* PROPERTY: 'Cased': Derived Property */ +static const OnigCodePoint +CR_Cased[] = { 159, +0x0041, 0x005a, +0x0061, 0x007a, +0x00aa, 0x00aa, +0x00b5, 0x00b5, +0x00ba, 0x00ba, +0x00c0, 0x00d6, +0x00d8, 0x00f6, +0x00f8, 0x01ba, +0x01bc, 0x01bf, +0x01c4, 0x0293, +0x0295, 0x02b8, +0x02c0, 0x02c1, +0x02e0, 0x02e4, +0x0345, 0x0345, +0x0370, 0x0373, +0x0376, 0x0377, +0x037a, 0x037d, +0x037f, 0x037f, +0x0386, 0x0386, +0x0388, 0x038a, +0x038c, 0x038c, +0x038e, 0x03a1, +0x03a3, 0x03f5, +0x03f7, 0x0481, +0x048a, 0x052f, +0x0531, 0x0556, +0x0560, 0x0588, +0x10a0, 0x10c5, +0x10c7, 0x10c7, +0x10cd, 0x10cd, +0x10d0, 0x10fa, +0x10fc, 0x10ff, +0x13a0, 0x13f5, +0x13f8, 0x13fd, +0x1c80, 0x1c8a, +0x1c90, 0x1cba, +0x1cbd, 0x1cbf, +0x1d00, 0x1dbf, +0x1e00, 0x1f15, +0x1f18, 0x1f1d, +0x1f20, 0x1f45, +0x1f48, 0x1f4d, +0x1f50, 0x1f57, +0x1f59, 0x1f59, +0x1f5b, 0x1f5b, +0x1f5d, 0x1f5d, +0x1f5f, 0x1f7d, +0x1f80, 0x1fb4, +0x1fb6, 0x1fbc, +0x1fbe, 0x1fbe, +0x1fc2, 0x1fc4, +0x1fc6, 0x1fcc, +0x1fd0, 0x1fd3, +0x1fd6, 0x1fdb, +0x1fe0, 0x1fec, +0x1ff2, 0x1ff4, +0x1ff6, 0x1ffc, +0x2071, 0x2071, +0x207f, 0x207f, +0x2090, 0x209c, +0x2102, 0x2102, +0x2107, 0x2107, +0x210a, 0x2113, +0x2115, 0x2115, +0x2119, 0x211d, +0x2124, 0x2124, +0x2126, 0x2126, +0x2128, 0x2128, +0x212a, 0x212d, +0x212f, 0x2134, +0x2139, 0x2139, +0x213c, 0x213f, +0x2145, 0x2149, +0x214e, 0x214e, +0x2160, 0x217f, +0x2183, 0x2184, +0x24b6, 0x24e9, +0x2c00, 0x2ce4, +0x2ceb, 0x2cee, +0x2cf2, 0x2cf3, +0x2d00, 0x2d25, +0x2d27, 0x2d27, +0x2d2d, 0x2d2d, +0xa640, 0xa66d, +0xa680, 0xa69d, +0xa722, 0xa787, +0xa78b, 0xa78e, +0xa790, 0xa7cd, +0xa7d0, 0xa7d1, +0xa7d3, 0xa7d3, +0xa7d5, 0xa7dc, +0xa7f2, 0xa7f6, +0xa7f8, 0xa7fa, +0xab30, 0xab5a, +0xab5c, 0xab69, +0xab70, 0xabbf, +0xfb00, 0xfb06, +0xfb13, 0xfb17, +0xff21, 0xff3a, +0xff41, 0xff5a, +0x10400, 0x1044f, +0x104b0, 0x104d3, +0x104d8, 0x104fb, +0x10570, 0x1057a, +0x1057c, 0x1058a, +0x1058c, 0x10592, +0x10594, 0x10595, +0x10597, 0x105a1, +0x105a3, 0x105b1, +0x105b3, 0x105b9, +0x105bb, 0x105bc, +0x10780, 0x10780, +0x10783, 0x10785, +0x10787, 0x107b0, +0x107b2, 0x107ba, +0x10c80, 0x10cb2, +0x10cc0, 0x10cf2, +0x10d50, 0x10d65, +0x10d70, 0x10d85, +0x118a0, 0x118df, +0x16e40, 0x16e7f, +0x1d400, 0x1d454, +0x1d456, 0x1d49c, +0x1d49e, 0x1d49f, +0x1d4a2, 0x1d4a2, +0x1d4a5, 0x1d4a6, +0x1d4a9, 0x1d4ac, +0x1d4ae, 0x1d4b9, +0x1d4bb, 0x1d4bb, +0x1d4bd, 0x1d4c3, +0x1d4c5, 0x1d505, +0x1d507, 0x1d50a, +0x1d50d, 0x1d514, +0x1d516, 0x1d51c, +0x1d51e, 0x1d539, +0x1d53b, 0x1d53e, +0x1d540, 0x1d544, +0x1d546, 0x1d546, +0x1d54a, 0x1d550, +0x1d552, 0x1d6a5, +0x1d6a8, 0x1d6c0, +0x1d6c2, 0x1d6da, +0x1d6dc, 0x1d6fa, +0x1d6fc, 0x1d714, +0x1d716, 0x1d734, +0x1d736, 0x1d74e, +0x1d750, 0x1d76e, +0x1d770, 0x1d788, +0x1d78a, 0x1d7a8, +0x1d7aa, 0x1d7c2, +0x1d7c4, 0x1d7cb, +0x1df00, 0x1df09, +0x1df0b, 0x1df1e, +0x1df25, 0x1df2a, +0x1e030, 0x1e06d, +0x1e900, 0x1e943, +0x1f130, 0x1f149, +0x1f150, 0x1f169, +0x1f170, 0x1f189, +}; /* END of CR_Cased */ + +/* PROPERTY: 'Caucasian_Albanian': Script */ +static const OnigCodePoint +CR_Caucasian_Albanian[] = { 2, +0x10530, 0x10563, +0x1056f, 0x1056f, +}; /* END of CR_Caucasian_Albanian */ + +/* PROPERTY: 'Cc': General Category */ +#define CR_Cc CR_Cntrl + +/* PROPERTY: 'Cf': General Category */ +static const OnigCodePoint +CR_Cf[] = { 21, +0x00ad, 0x00ad, +0x0600, 0x0605, +0x061c, 0x061c, +0x06dd, 0x06dd, +0x070f, 0x070f, +0x0890, 0x0891, +0x08e2, 0x08e2, +0x180e, 0x180e, +0x200b, 0x200f, +0x202a, 0x202e, +0x2060, 0x2064, +0x2066, 0x206f, +0xfeff, 0xfeff, +0xfff9, 0xfffb, +0x110bd, 0x110bd, +0x110cd, 0x110cd, +0x13430, 0x1343f, +0x1bca0, 0x1bca3, +0x1d173, 0x1d17a, +0xe0001, 0xe0001, +0xe0020, 0xe007f, +}; /* END of CR_Cf */ + +/* PROPERTY: 'Chakma': Script */ +static const OnigCodePoint +CR_Chakma[] = { 2, +0x11100, 0x11134, +0x11136, 0x11147, +}; /* END of CR_Chakma */ + +/* PROPERTY: 'Cham': Script */ +static const OnigCodePoint +CR_Cham[] = { 4, +0xaa00, 0xaa36, +0xaa40, 0xaa4d, +0xaa50, 0xaa59, +0xaa5c, 0xaa5f, +}; /* END of CR_Cham */ + +/* PROPERTY: 'Changes_When_Casefolded': Derived Property */ +static const OnigCodePoint +CR_Changes_When_Casefolded[] = { 626, +0x0041, 0x005a, +0x00b5, 0x00b5, +0x00c0, 0x00d6, +0x00d8, 0x00df, +0x0100, 0x0100, +0x0102, 0x0102, +0x0104, 0x0104, +0x0106, 0x0106, +0x0108, 0x0108, +0x010a, 0x010a, +0x010c, 0x010c, +0x010e, 0x010e, +0x0110, 0x0110, +0x0112, 0x0112, +0x0114, 0x0114, +0x0116, 0x0116, +0x0118, 0x0118, +0x011a, 0x011a, +0x011c, 0x011c, +0x011e, 0x011e, +0x0120, 0x0120, +0x0122, 0x0122, +0x0124, 0x0124, +0x0126, 0x0126, +0x0128, 0x0128, +0x012a, 0x012a, +0x012c, 0x012c, +0x012e, 0x012e, +0x0130, 0x0130, +0x0132, 0x0132, +0x0134, 0x0134, +0x0136, 0x0136, +0x0139, 0x0139, +0x013b, 0x013b, +0x013d, 0x013d, +0x013f, 0x013f, +0x0141, 0x0141, +0x0143, 0x0143, +0x0145, 0x0145, +0x0147, 0x0147, +0x0149, 0x014a, +0x014c, 0x014c, +0x014e, 0x014e, +0x0150, 0x0150, +0x0152, 0x0152, +0x0154, 0x0154, +0x0156, 0x0156, +0x0158, 0x0158, +0x015a, 0x015a, +0x015c, 0x015c, +0x015e, 0x015e, +0x0160, 0x0160, +0x0162, 0x0162, +0x0164, 0x0164, +0x0166, 0x0166, +0x0168, 0x0168, +0x016a, 0x016a, +0x016c, 0x016c, +0x016e, 0x016e, +0x0170, 0x0170, +0x0172, 0x0172, +0x0174, 0x0174, +0x0176, 0x0176, +0x0178, 0x0179, +0x017b, 0x017b, +0x017d, 0x017d, +0x017f, 0x017f, +0x0181, 0x0182, +0x0184, 0x0184, +0x0186, 0x0187, +0x0189, 0x018b, +0x018e, 0x0191, +0x0193, 0x0194, +0x0196, 0x0198, +0x019c, 0x019d, +0x019f, 0x01a0, +0x01a2, 0x01a2, +0x01a4, 0x01a4, +0x01a6, 0x01a7, +0x01a9, 0x01a9, +0x01ac, 0x01ac, +0x01ae, 0x01af, +0x01b1, 0x01b3, +0x01b5, 0x01b5, +0x01b7, 0x01b8, +0x01bc, 0x01bc, +0x01c4, 0x01c5, +0x01c7, 0x01c8, +0x01ca, 0x01cb, +0x01cd, 0x01cd, +0x01cf, 0x01cf, +0x01d1, 0x01d1, +0x01d3, 0x01d3, +0x01d5, 0x01d5, +0x01d7, 0x01d7, +0x01d9, 0x01d9, +0x01db, 0x01db, +0x01de, 0x01de, +0x01e0, 0x01e0, +0x01e2, 0x01e2, +0x01e4, 0x01e4, +0x01e6, 0x01e6, +0x01e8, 0x01e8, +0x01ea, 0x01ea, +0x01ec, 0x01ec, +0x01ee, 0x01ee, +0x01f1, 0x01f2, +0x01f4, 0x01f4, +0x01f6, 0x01f8, +0x01fa, 0x01fa, +0x01fc, 0x01fc, +0x01fe, 0x01fe, +0x0200, 0x0200, +0x0202, 0x0202, +0x0204, 0x0204, +0x0206, 0x0206, +0x0208, 0x0208, +0x020a, 0x020a, +0x020c, 0x020c, +0x020e, 0x020e, +0x0210, 0x0210, +0x0212, 0x0212, +0x0214, 0x0214, +0x0216, 0x0216, +0x0218, 0x0218, +0x021a, 0x021a, +0x021c, 0x021c, +0x021e, 0x021e, +0x0220, 0x0220, +0x0222, 0x0222, +0x0224, 0x0224, +0x0226, 0x0226, +0x0228, 0x0228, +0x022a, 0x022a, +0x022c, 0x022c, +0x022e, 0x022e, +0x0230, 0x0230, +0x0232, 0x0232, +0x023a, 0x023b, +0x023d, 0x023e, +0x0241, 0x0241, +0x0243, 0x0246, +0x0248, 0x0248, +0x024a, 0x024a, +0x024c, 0x024c, +0x024e, 0x024e, +0x0345, 0x0345, +0x0370, 0x0370, +0x0372, 0x0372, +0x0376, 0x0376, +0x037f, 0x037f, +0x0386, 0x0386, +0x0388, 0x038a, +0x038c, 0x038c, +0x038e, 0x038f, +0x0391, 0x03a1, +0x03a3, 0x03ab, +0x03c2, 0x03c2, +0x03cf, 0x03d1, +0x03d5, 0x03d6, +0x03d8, 0x03d8, +0x03da, 0x03da, +0x03dc, 0x03dc, +0x03de, 0x03de, +0x03e0, 0x03e0, +0x03e2, 0x03e2, +0x03e4, 0x03e4, +0x03e6, 0x03e6, +0x03e8, 0x03e8, +0x03ea, 0x03ea, +0x03ec, 0x03ec, +0x03ee, 0x03ee, +0x03f0, 0x03f1, +0x03f4, 0x03f5, +0x03f7, 0x03f7, +0x03f9, 0x03fa, +0x03fd, 0x042f, +0x0460, 0x0460, +0x0462, 0x0462, +0x0464, 0x0464, +0x0466, 0x0466, +0x0468, 0x0468, +0x046a, 0x046a, +0x046c, 0x046c, +0x046e, 0x046e, +0x0470, 0x0470, +0x0472, 0x0472, +0x0474, 0x0474, +0x0476, 0x0476, +0x0478, 0x0478, +0x047a, 0x047a, +0x047c, 0x047c, +0x047e, 0x047e, +0x0480, 0x0480, +0x048a, 0x048a, +0x048c, 0x048c, +0x048e, 0x048e, +0x0490, 0x0490, +0x0492, 0x0492, +0x0494, 0x0494, +0x0496, 0x0496, +0x0498, 0x0498, +0x049a, 0x049a, +0x049c, 0x049c, +0x049e, 0x049e, +0x04a0, 0x04a0, +0x04a2, 0x04a2, +0x04a4, 0x04a4, +0x04a6, 0x04a6, +0x04a8, 0x04a8, +0x04aa, 0x04aa, +0x04ac, 0x04ac, +0x04ae, 0x04ae, +0x04b0, 0x04b0, +0x04b2, 0x04b2, +0x04b4, 0x04b4, +0x04b6, 0x04b6, +0x04b8, 0x04b8, +0x04ba, 0x04ba, +0x04bc, 0x04bc, +0x04be, 0x04be, +0x04c0, 0x04c1, +0x04c3, 0x04c3, +0x04c5, 0x04c5, +0x04c7, 0x04c7, +0x04c9, 0x04c9, +0x04cb, 0x04cb, +0x04cd, 0x04cd, +0x04d0, 0x04d0, +0x04d2, 0x04d2, +0x04d4, 0x04d4, +0x04d6, 0x04d6, +0x04d8, 0x04d8, +0x04da, 0x04da, +0x04dc, 0x04dc, +0x04de, 0x04de, +0x04e0, 0x04e0, +0x04e2, 0x04e2, +0x04e4, 0x04e4, +0x04e6, 0x04e6, +0x04e8, 0x04e8, +0x04ea, 0x04ea, +0x04ec, 0x04ec, +0x04ee, 0x04ee, +0x04f0, 0x04f0, +0x04f2, 0x04f2, +0x04f4, 0x04f4, +0x04f6, 0x04f6, +0x04f8, 0x04f8, +0x04fa, 0x04fa, +0x04fc, 0x04fc, +0x04fe, 0x04fe, +0x0500, 0x0500, +0x0502, 0x0502, +0x0504, 0x0504, +0x0506, 0x0506, +0x0508, 0x0508, +0x050a, 0x050a, +0x050c, 0x050c, +0x050e, 0x050e, +0x0510, 0x0510, +0x0512, 0x0512, +0x0514, 0x0514, +0x0516, 0x0516, +0x0518, 0x0518, +0x051a, 0x051a, +0x051c, 0x051c, +0x051e, 0x051e, +0x0520, 0x0520, +0x0522, 0x0522, +0x0524, 0x0524, +0x0526, 0x0526, +0x0528, 0x0528, +0x052a, 0x052a, +0x052c, 0x052c, +0x052e, 0x052e, +0x0531, 0x0556, +0x0587, 0x0587, +0x10a0, 0x10c5, +0x10c7, 0x10c7, +0x10cd, 0x10cd, +0x13f8, 0x13fd, +0x1c80, 0x1c89, +0x1c90, 0x1cba, +0x1cbd, 0x1cbf, +0x1e00, 0x1e00, +0x1e02, 0x1e02, +0x1e04, 0x1e04, +0x1e06, 0x1e06, +0x1e08, 0x1e08, +0x1e0a, 0x1e0a, +0x1e0c, 0x1e0c, +0x1e0e, 0x1e0e, +0x1e10, 0x1e10, +0x1e12, 0x1e12, +0x1e14, 0x1e14, +0x1e16, 0x1e16, +0x1e18, 0x1e18, +0x1e1a, 0x1e1a, +0x1e1c, 0x1e1c, +0x1e1e, 0x1e1e, +0x1e20, 0x1e20, +0x1e22, 0x1e22, +0x1e24, 0x1e24, +0x1e26, 0x1e26, +0x1e28, 0x1e28, +0x1e2a, 0x1e2a, +0x1e2c, 0x1e2c, +0x1e2e, 0x1e2e, +0x1e30, 0x1e30, +0x1e32, 0x1e32, +0x1e34, 0x1e34, +0x1e36, 0x1e36, +0x1e38, 0x1e38, +0x1e3a, 0x1e3a, +0x1e3c, 0x1e3c, +0x1e3e, 0x1e3e, +0x1e40, 0x1e40, +0x1e42, 0x1e42, +0x1e44, 0x1e44, +0x1e46, 0x1e46, +0x1e48, 0x1e48, +0x1e4a, 0x1e4a, +0x1e4c, 0x1e4c, +0x1e4e, 0x1e4e, +0x1e50, 0x1e50, +0x1e52, 0x1e52, +0x1e54, 0x1e54, +0x1e56, 0x1e56, +0x1e58, 0x1e58, +0x1e5a, 0x1e5a, +0x1e5c, 0x1e5c, +0x1e5e, 0x1e5e, +0x1e60, 0x1e60, +0x1e62, 0x1e62, +0x1e64, 0x1e64, +0x1e66, 0x1e66, +0x1e68, 0x1e68, +0x1e6a, 0x1e6a, +0x1e6c, 0x1e6c, +0x1e6e, 0x1e6e, +0x1e70, 0x1e70, +0x1e72, 0x1e72, +0x1e74, 0x1e74, +0x1e76, 0x1e76, +0x1e78, 0x1e78, +0x1e7a, 0x1e7a, +0x1e7c, 0x1e7c, +0x1e7e, 0x1e7e, +0x1e80, 0x1e80, +0x1e82, 0x1e82, +0x1e84, 0x1e84, +0x1e86, 0x1e86, +0x1e88, 0x1e88, +0x1e8a, 0x1e8a, +0x1e8c, 0x1e8c, +0x1e8e, 0x1e8e, +0x1e90, 0x1e90, +0x1e92, 0x1e92, +0x1e94, 0x1e94, +0x1e9a, 0x1e9b, +0x1e9e, 0x1e9e, +0x1ea0, 0x1ea0, +0x1ea2, 0x1ea2, +0x1ea4, 0x1ea4, +0x1ea6, 0x1ea6, +0x1ea8, 0x1ea8, +0x1eaa, 0x1eaa, +0x1eac, 0x1eac, +0x1eae, 0x1eae, +0x1eb0, 0x1eb0, +0x1eb2, 0x1eb2, +0x1eb4, 0x1eb4, +0x1eb6, 0x1eb6, +0x1eb8, 0x1eb8, +0x1eba, 0x1eba, +0x1ebc, 0x1ebc, +0x1ebe, 0x1ebe, +0x1ec0, 0x1ec0, +0x1ec2, 0x1ec2, +0x1ec4, 0x1ec4, +0x1ec6, 0x1ec6, +0x1ec8, 0x1ec8, +0x1eca, 0x1eca, +0x1ecc, 0x1ecc, +0x1ece, 0x1ece, +0x1ed0, 0x1ed0, +0x1ed2, 0x1ed2, +0x1ed4, 0x1ed4, +0x1ed6, 0x1ed6, +0x1ed8, 0x1ed8, +0x1eda, 0x1eda, +0x1edc, 0x1edc, +0x1ede, 0x1ede, +0x1ee0, 0x1ee0, +0x1ee2, 0x1ee2, +0x1ee4, 0x1ee4, +0x1ee6, 0x1ee6, +0x1ee8, 0x1ee8, +0x1eea, 0x1eea, +0x1eec, 0x1eec, +0x1eee, 0x1eee, +0x1ef0, 0x1ef0, +0x1ef2, 0x1ef2, +0x1ef4, 0x1ef4, +0x1ef6, 0x1ef6, +0x1ef8, 0x1ef8, +0x1efa, 0x1efa, +0x1efc, 0x1efc, +0x1efe, 0x1efe, +0x1f08, 0x1f0f, +0x1f18, 0x1f1d, +0x1f28, 0x1f2f, +0x1f38, 0x1f3f, +0x1f48, 0x1f4d, +0x1f59, 0x1f59, +0x1f5b, 0x1f5b, +0x1f5d, 0x1f5d, +0x1f5f, 0x1f5f, +0x1f68, 0x1f6f, +0x1f80, 0x1faf, +0x1fb2, 0x1fb4, +0x1fb7, 0x1fbc, +0x1fc2, 0x1fc4, +0x1fc7, 0x1fcc, +0x1fd8, 0x1fdb, +0x1fe8, 0x1fec, +0x1ff2, 0x1ff4, +0x1ff7, 0x1ffc, +0x2126, 0x2126, +0x212a, 0x212b, +0x2132, 0x2132, +0x2160, 0x216f, +0x2183, 0x2183, +0x24b6, 0x24cf, +0x2c00, 0x2c2f, +0x2c60, 0x2c60, +0x2c62, 0x2c64, +0x2c67, 0x2c67, +0x2c69, 0x2c69, +0x2c6b, 0x2c6b, +0x2c6d, 0x2c70, +0x2c72, 0x2c72, +0x2c75, 0x2c75, +0x2c7e, 0x2c80, +0x2c82, 0x2c82, +0x2c84, 0x2c84, +0x2c86, 0x2c86, +0x2c88, 0x2c88, +0x2c8a, 0x2c8a, +0x2c8c, 0x2c8c, +0x2c8e, 0x2c8e, +0x2c90, 0x2c90, +0x2c92, 0x2c92, +0x2c94, 0x2c94, +0x2c96, 0x2c96, +0x2c98, 0x2c98, +0x2c9a, 0x2c9a, +0x2c9c, 0x2c9c, +0x2c9e, 0x2c9e, +0x2ca0, 0x2ca0, +0x2ca2, 0x2ca2, +0x2ca4, 0x2ca4, +0x2ca6, 0x2ca6, +0x2ca8, 0x2ca8, +0x2caa, 0x2caa, +0x2cac, 0x2cac, +0x2cae, 0x2cae, +0x2cb0, 0x2cb0, +0x2cb2, 0x2cb2, +0x2cb4, 0x2cb4, +0x2cb6, 0x2cb6, +0x2cb8, 0x2cb8, +0x2cba, 0x2cba, +0x2cbc, 0x2cbc, +0x2cbe, 0x2cbe, +0x2cc0, 0x2cc0, +0x2cc2, 0x2cc2, +0x2cc4, 0x2cc4, +0x2cc6, 0x2cc6, +0x2cc8, 0x2cc8, +0x2cca, 0x2cca, +0x2ccc, 0x2ccc, +0x2cce, 0x2cce, +0x2cd0, 0x2cd0, +0x2cd2, 0x2cd2, +0x2cd4, 0x2cd4, +0x2cd6, 0x2cd6, +0x2cd8, 0x2cd8, +0x2cda, 0x2cda, +0x2cdc, 0x2cdc, +0x2cde, 0x2cde, +0x2ce0, 0x2ce0, +0x2ce2, 0x2ce2, +0x2ceb, 0x2ceb, +0x2ced, 0x2ced, +0x2cf2, 0x2cf2, +0xa640, 0xa640, +0xa642, 0xa642, +0xa644, 0xa644, +0xa646, 0xa646, +0xa648, 0xa648, +0xa64a, 0xa64a, +0xa64c, 0xa64c, +0xa64e, 0xa64e, +0xa650, 0xa650, +0xa652, 0xa652, +0xa654, 0xa654, +0xa656, 0xa656, +0xa658, 0xa658, +0xa65a, 0xa65a, +0xa65c, 0xa65c, +0xa65e, 0xa65e, +0xa660, 0xa660, +0xa662, 0xa662, +0xa664, 0xa664, +0xa666, 0xa666, +0xa668, 0xa668, +0xa66a, 0xa66a, +0xa66c, 0xa66c, +0xa680, 0xa680, +0xa682, 0xa682, +0xa684, 0xa684, +0xa686, 0xa686, +0xa688, 0xa688, +0xa68a, 0xa68a, +0xa68c, 0xa68c, +0xa68e, 0xa68e, +0xa690, 0xa690, +0xa692, 0xa692, +0xa694, 0xa694, +0xa696, 0xa696, +0xa698, 0xa698, +0xa69a, 0xa69a, +0xa722, 0xa722, +0xa724, 0xa724, +0xa726, 0xa726, +0xa728, 0xa728, +0xa72a, 0xa72a, +0xa72c, 0xa72c, +0xa72e, 0xa72e, +0xa732, 0xa732, +0xa734, 0xa734, +0xa736, 0xa736, +0xa738, 0xa738, +0xa73a, 0xa73a, +0xa73c, 0xa73c, +0xa73e, 0xa73e, +0xa740, 0xa740, +0xa742, 0xa742, +0xa744, 0xa744, +0xa746, 0xa746, +0xa748, 0xa748, +0xa74a, 0xa74a, +0xa74c, 0xa74c, +0xa74e, 0xa74e, +0xa750, 0xa750, +0xa752, 0xa752, +0xa754, 0xa754, +0xa756, 0xa756, +0xa758, 0xa758, +0xa75a, 0xa75a, +0xa75c, 0xa75c, +0xa75e, 0xa75e, +0xa760, 0xa760, +0xa762, 0xa762, +0xa764, 0xa764, +0xa766, 0xa766, +0xa768, 0xa768, +0xa76a, 0xa76a, +0xa76c, 0xa76c, +0xa76e, 0xa76e, +0xa779, 0xa779, +0xa77b, 0xa77b, +0xa77d, 0xa77e, +0xa780, 0xa780, +0xa782, 0xa782, +0xa784, 0xa784, +0xa786, 0xa786, +0xa78b, 0xa78b, +0xa78d, 0xa78d, +0xa790, 0xa790, +0xa792, 0xa792, +0xa796, 0xa796, +0xa798, 0xa798, +0xa79a, 0xa79a, +0xa79c, 0xa79c, +0xa79e, 0xa79e, +0xa7a0, 0xa7a0, +0xa7a2, 0xa7a2, +0xa7a4, 0xa7a4, +0xa7a6, 0xa7a6, +0xa7a8, 0xa7a8, +0xa7aa, 0xa7ae, +0xa7b0, 0xa7b4, +0xa7b6, 0xa7b6, +0xa7b8, 0xa7b8, +0xa7ba, 0xa7ba, +0xa7bc, 0xa7bc, +0xa7be, 0xa7be, +0xa7c0, 0xa7c0, +0xa7c2, 0xa7c2, +0xa7c4, 0xa7c7, +0xa7c9, 0xa7c9, +0xa7cb, 0xa7cc, +0xa7d0, 0xa7d0, +0xa7d6, 0xa7d6, +0xa7d8, 0xa7d8, +0xa7da, 0xa7da, +0xa7dc, 0xa7dc, +0xa7f5, 0xa7f5, +0xab70, 0xabbf, +0xfb00, 0xfb06, +0xfb13, 0xfb17, +0xff21, 0xff3a, +0x10400, 0x10427, +0x104b0, 0x104d3, +0x10570, 0x1057a, +0x1057c, 0x1058a, +0x1058c, 0x10592, +0x10594, 0x10595, +0x10c80, 0x10cb2, +0x10d50, 0x10d65, +0x118a0, 0x118bf, +0x16e40, 0x16e5f, +0x1e900, 0x1e921, +}; /* END of CR_Changes_When_Casefolded */ + +/* PROPERTY: 'Changes_When_Casemapped': Derived Property */ +static const OnigCodePoint +CR_Changes_When_Casemapped[] = { 131, +0x0041, 0x005a, +0x0061, 0x007a, +0x00b5, 0x00b5, +0x00c0, 0x00d6, +0x00d8, 0x00f6, +0x00f8, 0x0137, +0x0139, 0x018c, +0x018e, 0x01a9, +0x01ac, 0x01b9, +0x01bc, 0x01bd, +0x01bf, 0x01bf, +0x01c4, 0x0220, +0x0222, 0x0233, +0x023a, 0x0254, +0x0256, 0x0257, +0x0259, 0x0259, +0x025b, 0x025c, +0x0260, 0x0261, +0x0263, 0x0266, +0x0268, 0x026c, +0x026f, 0x026f, +0x0271, 0x0272, +0x0275, 0x0275, +0x027d, 0x027d, +0x0280, 0x0280, +0x0282, 0x0283, +0x0287, 0x028c, +0x0292, 0x0292, +0x029d, 0x029e, +0x0345, 0x0345, +0x0370, 0x0373, +0x0376, 0x0377, +0x037b, 0x037d, +0x037f, 0x037f, +0x0386, 0x0386, +0x0388, 0x038a, +0x038c, 0x038c, +0x038e, 0x03a1, +0x03a3, 0x03d1, +0x03d5, 0x03f5, +0x03f7, 0x03fb, +0x03fd, 0x0481, +0x048a, 0x052f, +0x0531, 0x0556, +0x0561, 0x0587, +0x10a0, 0x10c5, +0x10c7, 0x10c7, +0x10cd, 0x10cd, +0x10d0, 0x10fa, +0x10fd, 0x10ff, +0x13a0, 0x13f5, +0x13f8, 0x13fd, +0x1c80, 0x1c8a, +0x1c90, 0x1cba, +0x1cbd, 0x1cbf, +0x1d79, 0x1d79, +0x1d7d, 0x1d7d, +0x1d8e, 0x1d8e, +0x1e00, 0x1e9b, +0x1e9e, 0x1e9e, +0x1ea0, 0x1f15, +0x1f18, 0x1f1d, +0x1f20, 0x1f45, +0x1f48, 0x1f4d, +0x1f50, 0x1f57, +0x1f59, 0x1f59, +0x1f5b, 0x1f5b, +0x1f5d, 0x1f5d, +0x1f5f, 0x1f7d, +0x1f80, 0x1fb4, +0x1fb6, 0x1fbc, +0x1fbe, 0x1fbe, +0x1fc2, 0x1fc4, +0x1fc6, 0x1fcc, +0x1fd0, 0x1fd3, +0x1fd6, 0x1fdb, +0x1fe0, 0x1fec, +0x1ff2, 0x1ff4, +0x1ff6, 0x1ffc, +0x2126, 0x2126, +0x212a, 0x212b, +0x2132, 0x2132, +0x214e, 0x214e, +0x2160, 0x217f, +0x2183, 0x2184, +0x24b6, 0x24e9, +0x2c00, 0x2c70, +0x2c72, 0x2c73, +0x2c75, 0x2c76, +0x2c7e, 0x2ce3, +0x2ceb, 0x2cee, +0x2cf2, 0x2cf3, +0x2d00, 0x2d25, +0x2d27, 0x2d27, +0x2d2d, 0x2d2d, +0xa640, 0xa66d, +0xa680, 0xa69b, +0xa722, 0xa72f, +0xa732, 0xa76f, +0xa779, 0xa787, +0xa78b, 0xa78d, +0xa790, 0xa794, +0xa796, 0xa7ae, +0xa7b0, 0xa7cd, +0xa7d0, 0xa7d1, +0xa7d6, 0xa7dc, +0xa7f5, 0xa7f6, +0xab53, 0xab53, +0xab70, 0xabbf, +0xfb00, 0xfb06, +0xfb13, 0xfb17, +0xff21, 0xff3a, +0xff41, 0xff5a, +0x10400, 0x1044f, +0x104b0, 0x104d3, +0x104d8, 0x104fb, +0x10570, 0x1057a, +0x1057c, 0x1058a, +0x1058c, 0x10592, +0x10594, 0x10595, +0x10597, 0x105a1, +0x105a3, 0x105b1, +0x105b3, 0x105b9, +0x105bb, 0x105bc, +0x10c80, 0x10cb2, +0x10cc0, 0x10cf2, +0x10d50, 0x10d65, +0x10d70, 0x10d85, +0x118a0, 0x118df, +0x16e40, 0x16e7f, +0x1e900, 0x1e943, +}; /* END of CR_Changes_When_Casemapped */ + +/* PROPERTY: 'Changes_When_Lowercased': Derived Property */ +static const OnigCodePoint +CR_Changes_When_Lowercased[] = { 614, +0x0041, 0x005a, +0x00c0, 0x00d6, +0x00d8, 0x00de, +0x0100, 0x0100, +0x0102, 0x0102, +0x0104, 0x0104, +0x0106, 0x0106, +0x0108, 0x0108, +0x010a, 0x010a, +0x010c, 0x010c, +0x010e, 0x010e, +0x0110, 0x0110, +0x0112, 0x0112, +0x0114, 0x0114, +0x0116, 0x0116, +0x0118, 0x0118, +0x011a, 0x011a, +0x011c, 0x011c, +0x011e, 0x011e, +0x0120, 0x0120, +0x0122, 0x0122, +0x0124, 0x0124, +0x0126, 0x0126, +0x0128, 0x0128, +0x012a, 0x012a, +0x012c, 0x012c, +0x012e, 0x012e, +0x0130, 0x0130, +0x0132, 0x0132, +0x0134, 0x0134, +0x0136, 0x0136, +0x0139, 0x0139, +0x013b, 0x013b, +0x013d, 0x013d, +0x013f, 0x013f, +0x0141, 0x0141, +0x0143, 0x0143, +0x0145, 0x0145, +0x0147, 0x0147, +0x014a, 0x014a, +0x014c, 0x014c, +0x014e, 0x014e, +0x0150, 0x0150, +0x0152, 0x0152, +0x0154, 0x0154, +0x0156, 0x0156, +0x0158, 0x0158, +0x015a, 0x015a, +0x015c, 0x015c, +0x015e, 0x015e, +0x0160, 0x0160, +0x0162, 0x0162, +0x0164, 0x0164, +0x0166, 0x0166, +0x0168, 0x0168, +0x016a, 0x016a, +0x016c, 0x016c, +0x016e, 0x016e, +0x0170, 0x0170, +0x0172, 0x0172, +0x0174, 0x0174, +0x0176, 0x0176, +0x0178, 0x0179, +0x017b, 0x017b, +0x017d, 0x017d, +0x0181, 0x0182, +0x0184, 0x0184, +0x0186, 0x0187, +0x0189, 0x018b, +0x018e, 0x0191, +0x0193, 0x0194, +0x0196, 0x0198, +0x019c, 0x019d, +0x019f, 0x01a0, +0x01a2, 0x01a2, +0x01a4, 0x01a4, +0x01a6, 0x01a7, +0x01a9, 0x01a9, +0x01ac, 0x01ac, +0x01ae, 0x01af, +0x01b1, 0x01b3, +0x01b5, 0x01b5, +0x01b7, 0x01b8, +0x01bc, 0x01bc, +0x01c4, 0x01c5, +0x01c7, 0x01c8, +0x01ca, 0x01cb, +0x01cd, 0x01cd, +0x01cf, 0x01cf, +0x01d1, 0x01d1, +0x01d3, 0x01d3, +0x01d5, 0x01d5, +0x01d7, 0x01d7, +0x01d9, 0x01d9, +0x01db, 0x01db, +0x01de, 0x01de, +0x01e0, 0x01e0, +0x01e2, 0x01e2, +0x01e4, 0x01e4, +0x01e6, 0x01e6, +0x01e8, 0x01e8, +0x01ea, 0x01ea, +0x01ec, 0x01ec, +0x01ee, 0x01ee, +0x01f1, 0x01f2, +0x01f4, 0x01f4, +0x01f6, 0x01f8, +0x01fa, 0x01fa, +0x01fc, 0x01fc, +0x01fe, 0x01fe, +0x0200, 0x0200, +0x0202, 0x0202, +0x0204, 0x0204, +0x0206, 0x0206, +0x0208, 0x0208, +0x020a, 0x020a, +0x020c, 0x020c, +0x020e, 0x020e, +0x0210, 0x0210, +0x0212, 0x0212, +0x0214, 0x0214, +0x0216, 0x0216, +0x0218, 0x0218, +0x021a, 0x021a, +0x021c, 0x021c, +0x021e, 0x021e, +0x0220, 0x0220, +0x0222, 0x0222, +0x0224, 0x0224, +0x0226, 0x0226, +0x0228, 0x0228, +0x022a, 0x022a, +0x022c, 0x022c, +0x022e, 0x022e, +0x0230, 0x0230, +0x0232, 0x0232, +0x023a, 0x023b, +0x023d, 0x023e, +0x0241, 0x0241, +0x0243, 0x0246, +0x0248, 0x0248, +0x024a, 0x024a, +0x024c, 0x024c, +0x024e, 0x024e, +0x0370, 0x0370, +0x0372, 0x0372, +0x0376, 0x0376, +0x037f, 0x037f, +0x0386, 0x0386, +0x0388, 0x038a, +0x038c, 0x038c, +0x038e, 0x038f, +0x0391, 0x03a1, +0x03a3, 0x03ab, +0x03cf, 0x03cf, +0x03d8, 0x03d8, +0x03da, 0x03da, +0x03dc, 0x03dc, +0x03de, 0x03de, +0x03e0, 0x03e0, +0x03e2, 0x03e2, +0x03e4, 0x03e4, +0x03e6, 0x03e6, +0x03e8, 0x03e8, +0x03ea, 0x03ea, +0x03ec, 0x03ec, +0x03ee, 0x03ee, +0x03f4, 0x03f4, +0x03f7, 0x03f7, +0x03f9, 0x03fa, +0x03fd, 0x042f, +0x0460, 0x0460, +0x0462, 0x0462, +0x0464, 0x0464, +0x0466, 0x0466, +0x0468, 0x0468, +0x046a, 0x046a, +0x046c, 0x046c, +0x046e, 0x046e, +0x0470, 0x0470, +0x0472, 0x0472, +0x0474, 0x0474, +0x0476, 0x0476, +0x0478, 0x0478, +0x047a, 0x047a, +0x047c, 0x047c, +0x047e, 0x047e, +0x0480, 0x0480, +0x048a, 0x048a, +0x048c, 0x048c, +0x048e, 0x048e, +0x0490, 0x0490, +0x0492, 0x0492, +0x0494, 0x0494, +0x0496, 0x0496, +0x0498, 0x0498, +0x049a, 0x049a, +0x049c, 0x049c, +0x049e, 0x049e, +0x04a0, 0x04a0, +0x04a2, 0x04a2, +0x04a4, 0x04a4, +0x04a6, 0x04a6, +0x04a8, 0x04a8, +0x04aa, 0x04aa, +0x04ac, 0x04ac, +0x04ae, 0x04ae, +0x04b0, 0x04b0, +0x04b2, 0x04b2, +0x04b4, 0x04b4, +0x04b6, 0x04b6, +0x04b8, 0x04b8, +0x04ba, 0x04ba, +0x04bc, 0x04bc, +0x04be, 0x04be, +0x04c0, 0x04c1, +0x04c3, 0x04c3, +0x04c5, 0x04c5, +0x04c7, 0x04c7, +0x04c9, 0x04c9, +0x04cb, 0x04cb, +0x04cd, 0x04cd, +0x04d0, 0x04d0, +0x04d2, 0x04d2, +0x04d4, 0x04d4, +0x04d6, 0x04d6, +0x04d8, 0x04d8, +0x04da, 0x04da, +0x04dc, 0x04dc, +0x04de, 0x04de, +0x04e0, 0x04e0, +0x04e2, 0x04e2, +0x04e4, 0x04e4, +0x04e6, 0x04e6, +0x04e8, 0x04e8, +0x04ea, 0x04ea, +0x04ec, 0x04ec, +0x04ee, 0x04ee, +0x04f0, 0x04f0, +0x04f2, 0x04f2, +0x04f4, 0x04f4, +0x04f6, 0x04f6, +0x04f8, 0x04f8, +0x04fa, 0x04fa, +0x04fc, 0x04fc, +0x04fe, 0x04fe, +0x0500, 0x0500, +0x0502, 0x0502, +0x0504, 0x0504, +0x0506, 0x0506, +0x0508, 0x0508, +0x050a, 0x050a, +0x050c, 0x050c, +0x050e, 0x050e, +0x0510, 0x0510, +0x0512, 0x0512, +0x0514, 0x0514, +0x0516, 0x0516, +0x0518, 0x0518, +0x051a, 0x051a, +0x051c, 0x051c, +0x051e, 0x051e, +0x0520, 0x0520, +0x0522, 0x0522, +0x0524, 0x0524, +0x0526, 0x0526, +0x0528, 0x0528, +0x052a, 0x052a, +0x052c, 0x052c, +0x052e, 0x052e, +0x0531, 0x0556, +0x10a0, 0x10c5, +0x10c7, 0x10c7, +0x10cd, 0x10cd, +0x13a0, 0x13f5, +0x1c89, 0x1c89, +0x1c90, 0x1cba, +0x1cbd, 0x1cbf, +0x1e00, 0x1e00, +0x1e02, 0x1e02, +0x1e04, 0x1e04, +0x1e06, 0x1e06, +0x1e08, 0x1e08, +0x1e0a, 0x1e0a, +0x1e0c, 0x1e0c, +0x1e0e, 0x1e0e, +0x1e10, 0x1e10, +0x1e12, 0x1e12, +0x1e14, 0x1e14, +0x1e16, 0x1e16, +0x1e18, 0x1e18, +0x1e1a, 0x1e1a, +0x1e1c, 0x1e1c, +0x1e1e, 0x1e1e, +0x1e20, 0x1e20, +0x1e22, 0x1e22, +0x1e24, 0x1e24, +0x1e26, 0x1e26, +0x1e28, 0x1e28, +0x1e2a, 0x1e2a, +0x1e2c, 0x1e2c, +0x1e2e, 0x1e2e, +0x1e30, 0x1e30, +0x1e32, 0x1e32, +0x1e34, 0x1e34, +0x1e36, 0x1e36, +0x1e38, 0x1e38, +0x1e3a, 0x1e3a, +0x1e3c, 0x1e3c, +0x1e3e, 0x1e3e, +0x1e40, 0x1e40, +0x1e42, 0x1e42, +0x1e44, 0x1e44, +0x1e46, 0x1e46, +0x1e48, 0x1e48, +0x1e4a, 0x1e4a, +0x1e4c, 0x1e4c, +0x1e4e, 0x1e4e, +0x1e50, 0x1e50, +0x1e52, 0x1e52, +0x1e54, 0x1e54, +0x1e56, 0x1e56, +0x1e58, 0x1e58, +0x1e5a, 0x1e5a, +0x1e5c, 0x1e5c, +0x1e5e, 0x1e5e, +0x1e60, 0x1e60, +0x1e62, 0x1e62, +0x1e64, 0x1e64, +0x1e66, 0x1e66, +0x1e68, 0x1e68, +0x1e6a, 0x1e6a, +0x1e6c, 0x1e6c, +0x1e6e, 0x1e6e, +0x1e70, 0x1e70, +0x1e72, 0x1e72, +0x1e74, 0x1e74, +0x1e76, 0x1e76, +0x1e78, 0x1e78, +0x1e7a, 0x1e7a, +0x1e7c, 0x1e7c, +0x1e7e, 0x1e7e, +0x1e80, 0x1e80, +0x1e82, 0x1e82, +0x1e84, 0x1e84, +0x1e86, 0x1e86, +0x1e88, 0x1e88, +0x1e8a, 0x1e8a, +0x1e8c, 0x1e8c, +0x1e8e, 0x1e8e, +0x1e90, 0x1e90, +0x1e92, 0x1e92, +0x1e94, 0x1e94, +0x1e9e, 0x1e9e, +0x1ea0, 0x1ea0, +0x1ea2, 0x1ea2, +0x1ea4, 0x1ea4, +0x1ea6, 0x1ea6, +0x1ea8, 0x1ea8, +0x1eaa, 0x1eaa, +0x1eac, 0x1eac, +0x1eae, 0x1eae, +0x1eb0, 0x1eb0, +0x1eb2, 0x1eb2, +0x1eb4, 0x1eb4, +0x1eb6, 0x1eb6, +0x1eb8, 0x1eb8, +0x1eba, 0x1eba, +0x1ebc, 0x1ebc, +0x1ebe, 0x1ebe, +0x1ec0, 0x1ec0, +0x1ec2, 0x1ec2, +0x1ec4, 0x1ec4, +0x1ec6, 0x1ec6, +0x1ec8, 0x1ec8, +0x1eca, 0x1eca, +0x1ecc, 0x1ecc, +0x1ece, 0x1ece, +0x1ed0, 0x1ed0, +0x1ed2, 0x1ed2, +0x1ed4, 0x1ed4, +0x1ed6, 0x1ed6, +0x1ed8, 0x1ed8, +0x1eda, 0x1eda, +0x1edc, 0x1edc, +0x1ede, 0x1ede, +0x1ee0, 0x1ee0, +0x1ee2, 0x1ee2, +0x1ee4, 0x1ee4, +0x1ee6, 0x1ee6, +0x1ee8, 0x1ee8, +0x1eea, 0x1eea, +0x1eec, 0x1eec, +0x1eee, 0x1eee, +0x1ef0, 0x1ef0, +0x1ef2, 0x1ef2, +0x1ef4, 0x1ef4, +0x1ef6, 0x1ef6, +0x1ef8, 0x1ef8, +0x1efa, 0x1efa, +0x1efc, 0x1efc, +0x1efe, 0x1efe, +0x1f08, 0x1f0f, +0x1f18, 0x1f1d, +0x1f28, 0x1f2f, +0x1f38, 0x1f3f, +0x1f48, 0x1f4d, +0x1f59, 0x1f59, +0x1f5b, 0x1f5b, +0x1f5d, 0x1f5d, +0x1f5f, 0x1f5f, +0x1f68, 0x1f6f, +0x1f88, 0x1f8f, +0x1f98, 0x1f9f, +0x1fa8, 0x1faf, +0x1fb8, 0x1fbc, +0x1fc8, 0x1fcc, +0x1fd8, 0x1fdb, +0x1fe8, 0x1fec, +0x1ff8, 0x1ffc, +0x2126, 0x2126, +0x212a, 0x212b, +0x2132, 0x2132, +0x2160, 0x216f, +0x2183, 0x2183, +0x24b6, 0x24cf, +0x2c00, 0x2c2f, +0x2c60, 0x2c60, +0x2c62, 0x2c64, +0x2c67, 0x2c67, +0x2c69, 0x2c69, +0x2c6b, 0x2c6b, +0x2c6d, 0x2c70, +0x2c72, 0x2c72, +0x2c75, 0x2c75, +0x2c7e, 0x2c80, +0x2c82, 0x2c82, +0x2c84, 0x2c84, +0x2c86, 0x2c86, +0x2c88, 0x2c88, +0x2c8a, 0x2c8a, +0x2c8c, 0x2c8c, +0x2c8e, 0x2c8e, +0x2c90, 0x2c90, +0x2c92, 0x2c92, +0x2c94, 0x2c94, +0x2c96, 0x2c96, +0x2c98, 0x2c98, +0x2c9a, 0x2c9a, +0x2c9c, 0x2c9c, +0x2c9e, 0x2c9e, +0x2ca0, 0x2ca0, +0x2ca2, 0x2ca2, +0x2ca4, 0x2ca4, +0x2ca6, 0x2ca6, +0x2ca8, 0x2ca8, +0x2caa, 0x2caa, +0x2cac, 0x2cac, +0x2cae, 0x2cae, +0x2cb0, 0x2cb0, +0x2cb2, 0x2cb2, +0x2cb4, 0x2cb4, +0x2cb6, 0x2cb6, +0x2cb8, 0x2cb8, +0x2cba, 0x2cba, +0x2cbc, 0x2cbc, +0x2cbe, 0x2cbe, +0x2cc0, 0x2cc0, +0x2cc2, 0x2cc2, +0x2cc4, 0x2cc4, +0x2cc6, 0x2cc6, +0x2cc8, 0x2cc8, +0x2cca, 0x2cca, +0x2ccc, 0x2ccc, +0x2cce, 0x2cce, +0x2cd0, 0x2cd0, +0x2cd2, 0x2cd2, +0x2cd4, 0x2cd4, +0x2cd6, 0x2cd6, +0x2cd8, 0x2cd8, +0x2cda, 0x2cda, +0x2cdc, 0x2cdc, +0x2cde, 0x2cde, +0x2ce0, 0x2ce0, +0x2ce2, 0x2ce2, +0x2ceb, 0x2ceb, +0x2ced, 0x2ced, +0x2cf2, 0x2cf2, +0xa640, 0xa640, +0xa642, 0xa642, +0xa644, 0xa644, +0xa646, 0xa646, +0xa648, 0xa648, +0xa64a, 0xa64a, +0xa64c, 0xa64c, +0xa64e, 0xa64e, +0xa650, 0xa650, +0xa652, 0xa652, +0xa654, 0xa654, +0xa656, 0xa656, +0xa658, 0xa658, +0xa65a, 0xa65a, +0xa65c, 0xa65c, +0xa65e, 0xa65e, +0xa660, 0xa660, +0xa662, 0xa662, +0xa664, 0xa664, +0xa666, 0xa666, +0xa668, 0xa668, +0xa66a, 0xa66a, +0xa66c, 0xa66c, +0xa680, 0xa680, +0xa682, 0xa682, +0xa684, 0xa684, +0xa686, 0xa686, +0xa688, 0xa688, +0xa68a, 0xa68a, +0xa68c, 0xa68c, +0xa68e, 0xa68e, +0xa690, 0xa690, +0xa692, 0xa692, +0xa694, 0xa694, +0xa696, 0xa696, +0xa698, 0xa698, +0xa69a, 0xa69a, +0xa722, 0xa722, +0xa724, 0xa724, +0xa726, 0xa726, +0xa728, 0xa728, +0xa72a, 0xa72a, +0xa72c, 0xa72c, +0xa72e, 0xa72e, +0xa732, 0xa732, +0xa734, 0xa734, +0xa736, 0xa736, +0xa738, 0xa738, +0xa73a, 0xa73a, +0xa73c, 0xa73c, +0xa73e, 0xa73e, +0xa740, 0xa740, +0xa742, 0xa742, +0xa744, 0xa744, +0xa746, 0xa746, +0xa748, 0xa748, +0xa74a, 0xa74a, +0xa74c, 0xa74c, +0xa74e, 0xa74e, +0xa750, 0xa750, +0xa752, 0xa752, +0xa754, 0xa754, +0xa756, 0xa756, +0xa758, 0xa758, +0xa75a, 0xa75a, +0xa75c, 0xa75c, +0xa75e, 0xa75e, +0xa760, 0xa760, +0xa762, 0xa762, +0xa764, 0xa764, +0xa766, 0xa766, +0xa768, 0xa768, +0xa76a, 0xa76a, +0xa76c, 0xa76c, +0xa76e, 0xa76e, +0xa779, 0xa779, +0xa77b, 0xa77b, +0xa77d, 0xa77e, +0xa780, 0xa780, +0xa782, 0xa782, +0xa784, 0xa784, +0xa786, 0xa786, +0xa78b, 0xa78b, +0xa78d, 0xa78d, +0xa790, 0xa790, +0xa792, 0xa792, +0xa796, 0xa796, +0xa798, 0xa798, +0xa79a, 0xa79a, +0xa79c, 0xa79c, +0xa79e, 0xa79e, +0xa7a0, 0xa7a0, +0xa7a2, 0xa7a2, +0xa7a4, 0xa7a4, +0xa7a6, 0xa7a6, +0xa7a8, 0xa7a8, +0xa7aa, 0xa7ae, +0xa7b0, 0xa7b4, +0xa7b6, 0xa7b6, +0xa7b8, 0xa7b8, +0xa7ba, 0xa7ba, +0xa7bc, 0xa7bc, +0xa7be, 0xa7be, +0xa7c0, 0xa7c0, +0xa7c2, 0xa7c2, +0xa7c4, 0xa7c7, +0xa7c9, 0xa7c9, +0xa7cb, 0xa7cc, +0xa7d0, 0xa7d0, +0xa7d6, 0xa7d6, +0xa7d8, 0xa7d8, +0xa7da, 0xa7da, +0xa7dc, 0xa7dc, +0xa7f5, 0xa7f5, +0xff21, 0xff3a, +0x10400, 0x10427, +0x104b0, 0x104d3, +0x10570, 0x1057a, +0x1057c, 0x1058a, +0x1058c, 0x10592, +0x10594, 0x10595, +0x10c80, 0x10cb2, +0x10d50, 0x10d65, +0x118a0, 0x118bf, +0x16e40, 0x16e5f, +0x1e900, 0x1e921, +}; /* END of CR_Changes_When_Lowercased */ + +/* PROPERTY: 'Changes_When_Titlecased': Derived Property */ +static const OnigCodePoint +CR_Changes_When_Titlecased[] = { 629, +0x0061, 0x007a, +0x00b5, 0x00b5, +0x00df, 0x00f6, +0x00f8, 0x00ff, +0x0101, 0x0101, +0x0103, 0x0103, +0x0105, 0x0105, +0x0107, 0x0107, +0x0109, 0x0109, +0x010b, 0x010b, +0x010d, 0x010d, +0x010f, 0x010f, +0x0111, 0x0111, +0x0113, 0x0113, +0x0115, 0x0115, +0x0117, 0x0117, +0x0119, 0x0119, +0x011b, 0x011b, +0x011d, 0x011d, +0x011f, 0x011f, +0x0121, 0x0121, +0x0123, 0x0123, +0x0125, 0x0125, +0x0127, 0x0127, +0x0129, 0x0129, +0x012b, 0x012b, +0x012d, 0x012d, +0x012f, 0x012f, +0x0131, 0x0131, +0x0133, 0x0133, +0x0135, 0x0135, +0x0137, 0x0137, +0x013a, 0x013a, +0x013c, 0x013c, +0x013e, 0x013e, +0x0140, 0x0140, +0x0142, 0x0142, +0x0144, 0x0144, +0x0146, 0x0146, +0x0148, 0x0149, +0x014b, 0x014b, +0x014d, 0x014d, +0x014f, 0x014f, +0x0151, 0x0151, +0x0153, 0x0153, +0x0155, 0x0155, +0x0157, 0x0157, +0x0159, 0x0159, +0x015b, 0x015b, +0x015d, 0x015d, +0x015f, 0x015f, +0x0161, 0x0161, +0x0163, 0x0163, +0x0165, 0x0165, +0x0167, 0x0167, +0x0169, 0x0169, +0x016b, 0x016b, +0x016d, 0x016d, +0x016f, 0x016f, +0x0171, 0x0171, +0x0173, 0x0173, +0x0175, 0x0175, +0x0177, 0x0177, +0x017a, 0x017a, +0x017c, 0x017c, +0x017e, 0x0180, +0x0183, 0x0183, +0x0185, 0x0185, +0x0188, 0x0188, +0x018c, 0x018c, +0x0192, 0x0192, +0x0195, 0x0195, +0x0199, 0x019b, +0x019e, 0x019e, +0x01a1, 0x01a1, +0x01a3, 0x01a3, +0x01a5, 0x01a5, +0x01a8, 0x01a8, +0x01ad, 0x01ad, +0x01b0, 0x01b0, +0x01b4, 0x01b4, +0x01b6, 0x01b6, +0x01b9, 0x01b9, +0x01bd, 0x01bd, +0x01bf, 0x01bf, +0x01c4, 0x01c4, +0x01c6, 0x01c7, +0x01c9, 0x01ca, +0x01cc, 0x01cc, +0x01ce, 0x01ce, +0x01d0, 0x01d0, +0x01d2, 0x01d2, +0x01d4, 0x01d4, +0x01d6, 0x01d6, +0x01d8, 0x01d8, +0x01da, 0x01da, +0x01dc, 0x01dd, +0x01df, 0x01df, +0x01e1, 0x01e1, +0x01e3, 0x01e3, +0x01e5, 0x01e5, +0x01e7, 0x01e7, +0x01e9, 0x01e9, +0x01eb, 0x01eb, +0x01ed, 0x01ed, +0x01ef, 0x01f1, +0x01f3, 0x01f3, +0x01f5, 0x01f5, +0x01f9, 0x01f9, +0x01fb, 0x01fb, +0x01fd, 0x01fd, +0x01ff, 0x01ff, +0x0201, 0x0201, +0x0203, 0x0203, +0x0205, 0x0205, +0x0207, 0x0207, +0x0209, 0x0209, +0x020b, 0x020b, +0x020d, 0x020d, +0x020f, 0x020f, +0x0211, 0x0211, +0x0213, 0x0213, +0x0215, 0x0215, +0x0217, 0x0217, +0x0219, 0x0219, +0x021b, 0x021b, +0x021d, 0x021d, +0x021f, 0x021f, +0x0223, 0x0223, +0x0225, 0x0225, +0x0227, 0x0227, +0x0229, 0x0229, +0x022b, 0x022b, +0x022d, 0x022d, +0x022f, 0x022f, +0x0231, 0x0231, +0x0233, 0x0233, +0x023c, 0x023c, +0x023f, 0x0240, +0x0242, 0x0242, +0x0247, 0x0247, +0x0249, 0x0249, +0x024b, 0x024b, +0x024d, 0x024d, +0x024f, 0x0254, +0x0256, 0x0257, +0x0259, 0x0259, +0x025b, 0x025c, +0x0260, 0x0261, +0x0263, 0x0266, +0x0268, 0x026c, +0x026f, 0x026f, +0x0271, 0x0272, +0x0275, 0x0275, +0x027d, 0x027d, +0x0280, 0x0280, +0x0282, 0x0283, +0x0287, 0x028c, +0x0292, 0x0292, +0x029d, 0x029e, +0x0345, 0x0345, +0x0371, 0x0371, +0x0373, 0x0373, +0x0377, 0x0377, +0x037b, 0x037d, +0x0390, 0x0390, +0x03ac, 0x03ce, +0x03d0, 0x03d1, +0x03d5, 0x03d7, +0x03d9, 0x03d9, +0x03db, 0x03db, +0x03dd, 0x03dd, +0x03df, 0x03df, +0x03e1, 0x03e1, +0x03e3, 0x03e3, +0x03e5, 0x03e5, +0x03e7, 0x03e7, +0x03e9, 0x03e9, +0x03eb, 0x03eb, +0x03ed, 0x03ed, +0x03ef, 0x03f3, +0x03f5, 0x03f5, +0x03f8, 0x03f8, +0x03fb, 0x03fb, +0x0430, 0x045f, +0x0461, 0x0461, +0x0463, 0x0463, +0x0465, 0x0465, +0x0467, 0x0467, +0x0469, 0x0469, +0x046b, 0x046b, +0x046d, 0x046d, +0x046f, 0x046f, +0x0471, 0x0471, +0x0473, 0x0473, +0x0475, 0x0475, +0x0477, 0x0477, +0x0479, 0x0479, +0x047b, 0x047b, +0x047d, 0x047d, +0x047f, 0x047f, +0x0481, 0x0481, +0x048b, 0x048b, +0x048d, 0x048d, +0x048f, 0x048f, +0x0491, 0x0491, +0x0493, 0x0493, +0x0495, 0x0495, +0x0497, 0x0497, +0x0499, 0x0499, +0x049b, 0x049b, +0x049d, 0x049d, +0x049f, 0x049f, +0x04a1, 0x04a1, +0x04a3, 0x04a3, +0x04a5, 0x04a5, +0x04a7, 0x04a7, +0x04a9, 0x04a9, +0x04ab, 0x04ab, +0x04ad, 0x04ad, +0x04af, 0x04af, +0x04b1, 0x04b1, +0x04b3, 0x04b3, +0x04b5, 0x04b5, +0x04b7, 0x04b7, +0x04b9, 0x04b9, +0x04bb, 0x04bb, +0x04bd, 0x04bd, +0x04bf, 0x04bf, +0x04c2, 0x04c2, +0x04c4, 0x04c4, +0x04c6, 0x04c6, +0x04c8, 0x04c8, +0x04ca, 0x04ca, +0x04cc, 0x04cc, +0x04ce, 0x04cf, +0x04d1, 0x04d1, +0x04d3, 0x04d3, +0x04d5, 0x04d5, +0x04d7, 0x04d7, +0x04d9, 0x04d9, +0x04db, 0x04db, +0x04dd, 0x04dd, +0x04df, 0x04df, +0x04e1, 0x04e1, +0x04e3, 0x04e3, +0x04e5, 0x04e5, +0x04e7, 0x04e7, +0x04e9, 0x04e9, +0x04eb, 0x04eb, +0x04ed, 0x04ed, +0x04ef, 0x04ef, +0x04f1, 0x04f1, +0x04f3, 0x04f3, +0x04f5, 0x04f5, +0x04f7, 0x04f7, +0x04f9, 0x04f9, +0x04fb, 0x04fb, +0x04fd, 0x04fd, +0x04ff, 0x04ff, +0x0501, 0x0501, +0x0503, 0x0503, +0x0505, 0x0505, +0x0507, 0x0507, +0x0509, 0x0509, +0x050b, 0x050b, +0x050d, 0x050d, +0x050f, 0x050f, +0x0511, 0x0511, +0x0513, 0x0513, +0x0515, 0x0515, +0x0517, 0x0517, +0x0519, 0x0519, +0x051b, 0x051b, +0x051d, 0x051d, +0x051f, 0x051f, +0x0521, 0x0521, +0x0523, 0x0523, +0x0525, 0x0525, +0x0527, 0x0527, +0x0529, 0x0529, +0x052b, 0x052b, +0x052d, 0x052d, +0x052f, 0x052f, +0x0561, 0x0587, +0x13f8, 0x13fd, +0x1c80, 0x1c88, +0x1c8a, 0x1c8a, +0x1d79, 0x1d79, +0x1d7d, 0x1d7d, +0x1d8e, 0x1d8e, +0x1e01, 0x1e01, +0x1e03, 0x1e03, +0x1e05, 0x1e05, +0x1e07, 0x1e07, +0x1e09, 0x1e09, +0x1e0b, 0x1e0b, +0x1e0d, 0x1e0d, +0x1e0f, 0x1e0f, +0x1e11, 0x1e11, +0x1e13, 0x1e13, +0x1e15, 0x1e15, +0x1e17, 0x1e17, +0x1e19, 0x1e19, +0x1e1b, 0x1e1b, +0x1e1d, 0x1e1d, +0x1e1f, 0x1e1f, +0x1e21, 0x1e21, +0x1e23, 0x1e23, +0x1e25, 0x1e25, +0x1e27, 0x1e27, +0x1e29, 0x1e29, +0x1e2b, 0x1e2b, +0x1e2d, 0x1e2d, +0x1e2f, 0x1e2f, +0x1e31, 0x1e31, +0x1e33, 0x1e33, +0x1e35, 0x1e35, +0x1e37, 0x1e37, +0x1e39, 0x1e39, +0x1e3b, 0x1e3b, +0x1e3d, 0x1e3d, +0x1e3f, 0x1e3f, +0x1e41, 0x1e41, +0x1e43, 0x1e43, +0x1e45, 0x1e45, +0x1e47, 0x1e47, +0x1e49, 0x1e49, +0x1e4b, 0x1e4b, +0x1e4d, 0x1e4d, +0x1e4f, 0x1e4f, +0x1e51, 0x1e51, +0x1e53, 0x1e53, +0x1e55, 0x1e55, +0x1e57, 0x1e57, +0x1e59, 0x1e59, +0x1e5b, 0x1e5b, +0x1e5d, 0x1e5d, +0x1e5f, 0x1e5f, +0x1e61, 0x1e61, +0x1e63, 0x1e63, +0x1e65, 0x1e65, +0x1e67, 0x1e67, +0x1e69, 0x1e69, +0x1e6b, 0x1e6b, +0x1e6d, 0x1e6d, +0x1e6f, 0x1e6f, +0x1e71, 0x1e71, +0x1e73, 0x1e73, +0x1e75, 0x1e75, +0x1e77, 0x1e77, +0x1e79, 0x1e79, +0x1e7b, 0x1e7b, +0x1e7d, 0x1e7d, +0x1e7f, 0x1e7f, +0x1e81, 0x1e81, +0x1e83, 0x1e83, +0x1e85, 0x1e85, +0x1e87, 0x1e87, +0x1e89, 0x1e89, +0x1e8b, 0x1e8b, +0x1e8d, 0x1e8d, +0x1e8f, 0x1e8f, +0x1e91, 0x1e91, +0x1e93, 0x1e93, +0x1e95, 0x1e9b, +0x1ea1, 0x1ea1, +0x1ea3, 0x1ea3, +0x1ea5, 0x1ea5, +0x1ea7, 0x1ea7, +0x1ea9, 0x1ea9, +0x1eab, 0x1eab, +0x1ead, 0x1ead, +0x1eaf, 0x1eaf, +0x1eb1, 0x1eb1, +0x1eb3, 0x1eb3, +0x1eb5, 0x1eb5, +0x1eb7, 0x1eb7, +0x1eb9, 0x1eb9, +0x1ebb, 0x1ebb, +0x1ebd, 0x1ebd, +0x1ebf, 0x1ebf, +0x1ec1, 0x1ec1, +0x1ec3, 0x1ec3, +0x1ec5, 0x1ec5, +0x1ec7, 0x1ec7, +0x1ec9, 0x1ec9, +0x1ecb, 0x1ecb, +0x1ecd, 0x1ecd, +0x1ecf, 0x1ecf, +0x1ed1, 0x1ed1, +0x1ed3, 0x1ed3, +0x1ed5, 0x1ed5, +0x1ed7, 0x1ed7, +0x1ed9, 0x1ed9, +0x1edb, 0x1edb, +0x1edd, 0x1edd, +0x1edf, 0x1edf, +0x1ee1, 0x1ee1, +0x1ee3, 0x1ee3, +0x1ee5, 0x1ee5, +0x1ee7, 0x1ee7, +0x1ee9, 0x1ee9, +0x1eeb, 0x1eeb, +0x1eed, 0x1eed, +0x1eef, 0x1eef, +0x1ef1, 0x1ef1, +0x1ef3, 0x1ef3, +0x1ef5, 0x1ef5, +0x1ef7, 0x1ef7, +0x1ef9, 0x1ef9, +0x1efb, 0x1efb, +0x1efd, 0x1efd, +0x1eff, 0x1f07, +0x1f10, 0x1f15, +0x1f20, 0x1f27, +0x1f30, 0x1f37, +0x1f40, 0x1f45, +0x1f50, 0x1f57, +0x1f60, 0x1f67, +0x1f70, 0x1f7d, +0x1f80, 0x1f87, +0x1f90, 0x1f97, +0x1fa0, 0x1fa7, +0x1fb0, 0x1fb4, +0x1fb6, 0x1fb7, +0x1fbe, 0x1fbe, +0x1fc2, 0x1fc4, +0x1fc6, 0x1fc7, +0x1fd0, 0x1fd3, +0x1fd6, 0x1fd7, +0x1fe0, 0x1fe7, +0x1ff2, 0x1ff4, +0x1ff6, 0x1ff7, +0x214e, 0x214e, +0x2170, 0x217f, +0x2184, 0x2184, +0x24d0, 0x24e9, +0x2c30, 0x2c5f, +0x2c61, 0x2c61, +0x2c65, 0x2c66, +0x2c68, 0x2c68, +0x2c6a, 0x2c6a, +0x2c6c, 0x2c6c, +0x2c73, 0x2c73, +0x2c76, 0x2c76, +0x2c81, 0x2c81, +0x2c83, 0x2c83, +0x2c85, 0x2c85, +0x2c87, 0x2c87, +0x2c89, 0x2c89, +0x2c8b, 0x2c8b, +0x2c8d, 0x2c8d, +0x2c8f, 0x2c8f, +0x2c91, 0x2c91, +0x2c93, 0x2c93, +0x2c95, 0x2c95, +0x2c97, 0x2c97, +0x2c99, 0x2c99, +0x2c9b, 0x2c9b, +0x2c9d, 0x2c9d, +0x2c9f, 0x2c9f, +0x2ca1, 0x2ca1, +0x2ca3, 0x2ca3, +0x2ca5, 0x2ca5, +0x2ca7, 0x2ca7, +0x2ca9, 0x2ca9, +0x2cab, 0x2cab, +0x2cad, 0x2cad, +0x2caf, 0x2caf, +0x2cb1, 0x2cb1, +0x2cb3, 0x2cb3, +0x2cb5, 0x2cb5, +0x2cb7, 0x2cb7, +0x2cb9, 0x2cb9, +0x2cbb, 0x2cbb, +0x2cbd, 0x2cbd, +0x2cbf, 0x2cbf, +0x2cc1, 0x2cc1, +0x2cc3, 0x2cc3, +0x2cc5, 0x2cc5, +0x2cc7, 0x2cc7, +0x2cc9, 0x2cc9, +0x2ccb, 0x2ccb, +0x2ccd, 0x2ccd, +0x2ccf, 0x2ccf, +0x2cd1, 0x2cd1, +0x2cd3, 0x2cd3, +0x2cd5, 0x2cd5, +0x2cd7, 0x2cd7, +0x2cd9, 0x2cd9, +0x2cdb, 0x2cdb, +0x2cdd, 0x2cdd, +0x2cdf, 0x2cdf, +0x2ce1, 0x2ce1, +0x2ce3, 0x2ce3, +0x2cec, 0x2cec, +0x2cee, 0x2cee, +0x2cf3, 0x2cf3, +0x2d00, 0x2d25, +0x2d27, 0x2d27, +0x2d2d, 0x2d2d, +0xa641, 0xa641, +0xa643, 0xa643, +0xa645, 0xa645, +0xa647, 0xa647, +0xa649, 0xa649, +0xa64b, 0xa64b, +0xa64d, 0xa64d, +0xa64f, 0xa64f, +0xa651, 0xa651, +0xa653, 0xa653, +0xa655, 0xa655, +0xa657, 0xa657, +0xa659, 0xa659, +0xa65b, 0xa65b, +0xa65d, 0xa65d, +0xa65f, 0xa65f, +0xa661, 0xa661, +0xa663, 0xa663, +0xa665, 0xa665, +0xa667, 0xa667, +0xa669, 0xa669, +0xa66b, 0xa66b, +0xa66d, 0xa66d, +0xa681, 0xa681, +0xa683, 0xa683, +0xa685, 0xa685, +0xa687, 0xa687, +0xa689, 0xa689, +0xa68b, 0xa68b, +0xa68d, 0xa68d, +0xa68f, 0xa68f, +0xa691, 0xa691, +0xa693, 0xa693, +0xa695, 0xa695, +0xa697, 0xa697, +0xa699, 0xa699, +0xa69b, 0xa69b, +0xa723, 0xa723, +0xa725, 0xa725, +0xa727, 0xa727, +0xa729, 0xa729, +0xa72b, 0xa72b, +0xa72d, 0xa72d, +0xa72f, 0xa72f, +0xa733, 0xa733, +0xa735, 0xa735, +0xa737, 0xa737, +0xa739, 0xa739, +0xa73b, 0xa73b, +0xa73d, 0xa73d, +0xa73f, 0xa73f, +0xa741, 0xa741, +0xa743, 0xa743, +0xa745, 0xa745, +0xa747, 0xa747, +0xa749, 0xa749, +0xa74b, 0xa74b, +0xa74d, 0xa74d, +0xa74f, 0xa74f, +0xa751, 0xa751, +0xa753, 0xa753, +0xa755, 0xa755, +0xa757, 0xa757, +0xa759, 0xa759, +0xa75b, 0xa75b, +0xa75d, 0xa75d, +0xa75f, 0xa75f, +0xa761, 0xa761, +0xa763, 0xa763, +0xa765, 0xa765, +0xa767, 0xa767, +0xa769, 0xa769, +0xa76b, 0xa76b, +0xa76d, 0xa76d, +0xa76f, 0xa76f, +0xa77a, 0xa77a, +0xa77c, 0xa77c, +0xa77f, 0xa77f, +0xa781, 0xa781, +0xa783, 0xa783, +0xa785, 0xa785, +0xa787, 0xa787, +0xa78c, 0xa78c, +0xa791, 0xa791, +0xa793, 0xa794, +0xa797, 0xa797, +0xa799, 0xa799, +0xa79b, 0xa79b, +0xa79d, 0xa79d, +0xa79f, 0xa79f, +0xa7a1, 0xa7a1, +0xa7a3, 0xa7a3, +0xa7a5, 0xa7a5, +0xa7a7, 0xa7a7, +0xa7a9, 0xa7a9, +0xa7b5, 0xa7b5, +0xa7b7, 0xa7b7, +0xa7b9, 0xa7b9, +0xa7bb, 0xa7bb, +0xa7bd, 0xa7bd, +0xa7bf, 0xa7bf, +0xa7c1, 0xa7c1, +0xa7c3, 0xa7c3, +0xa7c8, 0xa7c8, +0xa7ca, 0xa7ca, +0xa7cd, 0xa7cd, +0xa7d1, 0xa7d1, +0xa7d7, 0xa7d7, +0xa7d9, 0xa7d9, +0xa7db, 0xa7db, +0xa7f6, 0xa7f6, +0xab53, 0xab53, +0xab70, 0xabbf, +0xfb00, 0xfb06, +0xfb13, 0xfb17, +0xff41, 0xff5a, +0x10428, 0x1044f, +0x104d8, 0x104fb, +0x10597, 0x105a1, +0x105a3, 0x105b1, +0x105b3, 0x105b9, +0x105bb, 0x105bc, +0x10cc0, 0x10cf2, +0x10d70, 0x10d85, +0x118c0, 0x118df, +0x16e60, 0x16e7f, +0x1e922, 0x1e943, +}; /* END of CR_Changes_When_Titlecased */ + +/* PROPERTY: 'Changes_When_Uppercased': Derived Property */ +static const OnigCodePoint +CR_Changes_When_Uppercased[] = { 630, +0x0061, 0x007a, +0x00b5, 0x00b5, +0x00df, 0x00f6, +0x00f8, 0x00ff, +0x0101, 0x0101, +0x0103, 0x0103, +0x0105, 0x0105, +0x0107, 0x0107, +0x0109, 0x0109, +0x010b, 0x010b, +0x010d, 0x010d, +0x010f, 0x010f, +0x0111, 0x0111, +0x0113, 0x0113, +0x0115, 0x0115, +0x0117, 0x0117, +0x0119, 0x0119, +0x011b, 0x011b, +0x011d, 0x011d, +0x011f, 0x011f, +0x0121, 0x0121, +0x0123, 0x0123, +0x0125, 0x0125, +0x0127, 0x0127, +0x0129, 0x0129, +0x012b, 0x012b, +0x012d, 0x012d, +0x012f, 0x012f, +0x0131, 0x0131, +0x0133, 0x0133, +0x0135, 0x0135, +0x0137, 0x0137, +0x013a, 0x013a, +0x013c, 0x013c, +0x013e, 0x013e, +0x0140, 0x0140, +0x0142, 0x0142, +0x0144, 0x0144, +0x0146, 0x0146, +0x0148, 0x0149, +0x014b, 0x014b, +0x014d, 0x014d, +0x014f, 0x014f, +0x0151, 0x0151, +0x0153, 0x0153, +0x0155, 0x0155, +0x0157, 0x0157, +0x0159, 0x0159, +0x015b, 0x015b, +0x015d, 0x015d, +0x015f, 0x015f, +0x0161, 0x0161, +0x0163, 0x0163, +0x0165, 0x0165, +0x0167, 0x0167, +0x0169, 0x0169, +0x016b, 0x016b, +0x016d, 0x016d, +0x016f, 0x016f, +0x0171, 0x0171, +0x0173, 0x0173, +0x0175, 0x0175, +0x0177, 0x0177, +0x017a, 0x017a, +0x017c, 0x017c, +0x017e, 0x0180, +0x0183, 0x0183, +0x0185, 0x0185, +0x0188, 0x0188, +0x018c, 0x018c, +0x0192, 0x0192, +0x0195, 0x0195, +0x0199, 0x019b, +0x019e, 0x019e, +0x01a1, 0x01a1, +0x01a3, 0x01a3, +0x01a5, 0x01a5, +0x01a8, 0x01a8, +0x01ad, 0x01ad, +0x01b0, 0x01b0, +0x01b4, 0x01b4, +0x01b6, 0x01b6, +0x01b9, 0x01b9, +0x01bd, 0x01bd, +0x01bf, 0x01bf, +0x01c5, 0x01c6, +0x01c8, 0x01c9, +0x01cb, 0x01cc, +0x01ce, 0x01ce, +0x01d0, 0x01d0, +0x01d2, 0x01d2, +0x01d4, 0x01d4, +0x01d6, 0x01d6, +0x01d8, 0x01d8, +0x01da, 0x01da, +0x01dc, 0x01dd, +0x01df, 0x01df, +0x01e1, 0x01e1, +0x01e3, 0x01e3, +0x01e5, 0x01e5, +0x01e7, 0x01e7, +0x01e9, 0x01e9, +0x01eb, 0x01eb, +0x01ed, 0x01ed, +0x01ef, 0x01f0, +0x01f2, 0x01f3, +0x01f5, 0x01f5, +0x01f9, 0x01f9, +0x01fb, 0x01fb, +0x01fd, 0x01fd, +0x01ff, 0x01ff, +0x0201, 0x0201, +0x0203, 0x0203, +0x0205, 0x0205, +0x0207, 0x0207, +0x0209, 0x0209, +0x020b, 0x020b, +0x020d, 0x020d, +0x020f, 0x020f, +0x0211, 0x0211, +0x0213, 0x0213, +0x0215, 0x0215, +0x0217, 0x0217, +0x0219, 0x0219, +0x021b, 0x021b, +0x021d, 0x021d, +0x021f, 0x021f, +0x0223, 0x0223, +0x0225, 0x0225, +0x0227, 0x0227, +0x0229, 0x0229, +0x022b, 0x022b, +0x022d, 0x022d, +0x022f, 0x022f, +0x0231, 0x0231, +0x0233, 0x0233, +0x023c, 0x023c, +0x023f, 0x0240, +0x0242, 0x0242, +0x0247, 0x0247, +0x0249, 0x0249, +0x024b, 0x024b, +0x024d, 0x024d, +0x024f, 0x0254, +0x0256, 0x0257, +0x0259, 0x0259, +0x025b, 0x025c, +0x0260, 0x0261, +0x0263, 0x0266, +0x0268, 0x026c, +0x026f, 0x026f, +0x0271, 0x0272, +0x0275, 0x0275, +0x027d, 0x027d, +0x0280, 0x0280, +0x0282, 0x0283, +0x0287, 0x028c, +0x0292, 0x0292, +0x029d, 0x029e, +0x0345, 0x0345, +0x0371, 0x0371, +0x0373, 0x0373, +0x0377, 0x0377, +0x037b, 0x037d, +0x0390, 0x0390, +0x03ac, 0x03ce, +0x03d0, 0x03d1, +0x03d5, 0x03d7, +0x03d9, 0x03d9, +0x03db, 0x03db, +0x03dd, 0x03dd, +0x03df, 0x03df, +0x03e1, 0x03e1, +0x03e3, 0x03e3, +0x03e5, 0x03e5, +0x03e7, 0x03e7, +0x03e9, 0x03e9, +0x03eb, 0x03eb, +0x03ed, 0x03ed, +0x03ef, 0x03f3, +0x03f5, 0x03f5, +0x03f8, 0x03f8, +0x03fb, 0x03fb, +0x0430, 0x045f, +0x0461, 0x0461, +0x0463, 0x0463, +0x0465, 0x0465, +0x0467, 0x0467, +0x0469, 0x0469, +0x046b, 0x046b, +0x046d, 0x046d, +0x046f, 0x046f, +0x0471, 0x0471, +0x0473, 0x0473, +0x0475, 0x0475, +0x0477, 0x0477, +0x0479, 0x0479, +0x047b, 0x047b, +0x047d, 0x047d, +0x047f, 0x047f, +0x0481, 0x0481, +0x048b, 0x048b, +0x048d, 0x048d, +0x048f, 0x048f, +0x0491, 0x0491, +0x0493, 0x0493, +0x0495, 0x0495, +0x0497, 0x0497, +0x0499, 0x0499, +0x049b, 0x049b, +0x049d, 0x049d, +0x049f, 0x049f, +0x04a1, 0x04a1, +0x04a3, 0x04a3, +0x04a5, 0x04a5, +0x04a7, 0x04a7, +0x04a9, 0x04a9, +0x04ab, 0x04ab, +0x04ad, 0x04ad, +0x04af, 0x04af, +0x04b1, 0x04b1, +0x04b3, 0x04b3, +0x04b5, 0x04b5, +0x04b7, 0x04b7, +0x04b9, 0x04b9, +0x04bb, 0x04bb, +0x04bd, 0x04bd, +0x04bf, 0x04bf, +0x04c2, 0x04c2, +0x04c4, 0x04c4, +0x04c6, 0x04c6, +0x04c8, 0x04c8, +0x04ca, 0x04ca, +0x04cc, 0x04cc, +0x04ce, 0x04cf, +0x04d1, 0x04d1, +0x04d3, 0x04d3, +0x04d5, 0x04d5, +0x04d7, 0x04d7, +0x04d9, 0x04d9, +0x04db, 0x04db, +0x04dd, 0x04dd, +0x04df, 0x04df, +0x04e1, 0x04e1, +0x04e3, 0x04e3, +0x04e5, 0x04e5, +0x04e7, 0x04e7, +0x04e9, 0x04e9, +0x04eb, 0x04eb, +0x04ed, 0x04ed, +0x04ef, 0x04ef, +0x04f1, 0x04f1, +0x04f3, 0x04f3, +0x04f5, 0x04f5, +0x04f7, 0x04f7, +0x04f9, 0x04f9, +0x04fb, 0x04fb, +0x04fd, 0x04fd, +0x04ff, 0x04ff, +0x0501, 0x0501, +0x0503, 0x0503, +0x0505, 0x0505, +0x0507, 0x0507, +0x0509, 0x0509, +0x050b, 0x050b, +0x050d, 0x050d, +0x050f, 0x050f, +0x0511, 0x0511, +0x0513, 0x0513, +0x0515, 0x0515, +0x0517, 0x0517, +0x0519, 0x0519, +0x051b, 0x051b, +0x051d, 0x051d, +0x051f, 0x051f, +0x0521, 0x0521, +0x0523, 0x0523, +0x0525, 0x0525, +0x0527, 0x0527, +0x0529, 0x0529, +0x052b, 0x052b, +0x052d, 0x052d, +0x052f, 0x052f, +0x0561, 0x0587, +0x10d0, 0x10fa, +0x10fd, 0x10ff, +0x13f8, 0x13fd, +0x1c80, 0x1c88, +0x1c8a, 0x1c8a, +0x1d79, 0x1d79, +0x1d7d, 0x1d7d, +0x1d8e, 0x1d8e, +0x1e01, 0x1e01, +0x1e03, 0x1e03, +0x1e05, 0x1e05, +0x1e07, 0x1e07, +0x1e09, 0x1e09, +0x1e0b, 0x1e0b, +0x1e0d, 0x1e0d, +0x1e0f, 0x1e0f, +0x1e11, 0x1e11, +0x1e13, 0x1e13, +0x1e15, 0x1e15, +0x1e17, 0x1e17, +0x1e19, 0x1e19, +0x1e1b, 0x1e1b, +0x1e1d, 0x1e1d, +0x1e1f, 0x1e1f, +0x1e21, 0x1e21, +0x1e23, 0x1e23, +0x1e25, 0x1e25, +0x1e27, 0x1e27, +0x1e29, 0x1e29, +0x1e2b, 0x1e2b, +0x1e2d, 0x1e2d, +0x1e2f, 0x1e2f, +0x1e31, 0x1e31, +0x1e33, 0x1e33, +0x1e35, 0x1e35, +0x1e37, 0x1e37, +0x1e39, 0x1e39, +0x1e3b, 0x1e3b, +0x1e3d, 0x1e3d, +0x1e3f, 0x1e3f, +0x1e41, 0x1e41, +0x1e43, 0x1e43, +0x1e45, 0x1e45, +0x1e47, 0x1e47, +0x1e49, 0x1e49, +0x1e4b, 0x1e4b, +0x1e4d, 0x1e4d, +0x1e4f, 0x1e4f, +0x1e51, 0x1e51, +0x1e53, 0x1e53, +0x1e55, 0x1e55, +0x1e57, 0x1e57, +0x1e59, 0x1e59, +0x1e5b, 0x1e5b, +0x1e5d, 0x1e5d, +0x1e5f, 0x1e5f, +0x1e61, 0x1e61, +0x1e63, 0x1e63, +0x1e65, 0x1e65, +0x1e67, 0x1e67, +0x1e69, 0x1e69, +0x1e6b, 0x1e6b, +0x1e6d, 0x1e6d, +0x1e6f, 0x1e6f, +0x1e71, 0x1e71, +0x1e73, 0x1e73, +0x1e75, 0x1e75, +0x1e77, 0x1e77, +0x1e79, 0x1e79, +0x1e7b, 0x1e7b, +0x1e7d, 0x1e7d, +0x1e7f, 0x1e7f, +0x1e81, 0x1e81, +0x1e83, 0x1e83, +0x1e85, 0x1e85, +0x1e87, 0x1e87, +0x1e89, 0x1e89, +0x1e8b, 0x1e8b, +0x1e8d, 0x1e8d, +0x1e8f, 0x1e8f, +0x1e91, 0x1e91, +0x1e93, 0x1e93, +0x1e95, 0x1e9b, +0x1ea1, 0x1ea1, +0x1ea3, 0x1ea3, +0x1ea5, 0x1ea5, +0x1ea7, 0x1ea7, +0x1ea9, 0x1ea9, +0x1eab, 0x1eab, +0x1ead, 0x1ead, +0x1eaf, 0x1eaf, +0x1eb1, 0x1eb1, +0x1eb3, 0x1eb3, +0x1eb5, 0x1eb5, +0x1eb7, 0x1eb7, +0x1eb9, 0x1eb9, +0x1ebb, 0x1ebb, +0x1ebd, 0x1ebd, +0x1ebf, 0x1ebf, +0x1ec1, 0x1ec1, +0x1ec3, 0x1ec3, +0x1ec5, 0x1ec5, +0x1ec7, 0x1ec7, +0x1ec9, 0x1ec9, +0x1ecb, 0x1ecb, +0x1ecd, 0x1ecd, +0x1ecf, 0x1ecf, +0x1ed1, 0x1ed1, +0x1ed3, 0x1ed3, +0x1ed5, 0x1ed5, +0x1ed7, 0x1ed7, +0x1ed9, 0x1ed9, +0x1edb, 0x1edb, +0x1edd, 0x1edd, +0x1edf, 0x1edf, +0x1ee1, 0x1ee1, +0x1ee3, 0x1ee3, +0x1ee5, 0x1ee5, +0x1ee7, 0x1ee7, +0x1ee9, 0x1ee9, +0x1eeb, 0x1eeb, +0x1eed, 0x1eed, +0x1eef, 0x1eef, +0x1ef1, 0x1ef1, +0x1ef3, 0x1ef3, +0x1ef5, 0x1ef5, +0x1ef7, 0x1ef7, +0x1ef9, 0x1ef9, +0x1efb, 0x1efb, +0x1efd, 0x1efd, +0x1eff, 0x1f07, +0x1f10, 0x1f15, +0x1f20, 0x1f27, +0x1f30, 0x1f37, +0x1f40, 0x1f45, +0x1f50, 0x1f57, +0x1f60, 0x1f67, +0x1f70, 0x1f7d, +0x1f80, 0x1fb4, +0x1fb6, 0x1fb7, +0x1fbc, 0x1fbc, +0x1fbe, 0x1fbe, +0x1fc2, 0x1fc4, +0x1fc6, 0x1fc7, +0x1fcc, 0x1fcc, +0x1fd0, 0x1fd3, +0x1fd6, 0x1fd7, +0x1fe0, 0x1fe7, +0x1ff2, 0x1ff4, +0x1ff6, 0x1ff7, +0x1ffc, 0x1ffc, +0x214e, 0x214e, +0x2170, 0x217f, +0x2184, 0x2184, +0x24d0, 0x24e9, +0x2c30, 0x2c5f, +0x2c61, 0x2c61, +0x2c65, 0x2c66, +0x2c68, 0x2c68, +0x2c6a, 0x2c6a, +0x2c6c, 0x2c6c, +0x2c73, 0x2c73, +0x2c76, 0x2c76, +0x2c81, 0x2c81, +0x2c83, 0x2c83, +0x2c85, 0x2c85, +0x2c87, 0x2c87, +0x2c89, 0x2c89, +0x2c8b, 0x2c8b, +0x2c8d, 0x2c8d, +0x2c8f, 0x2c8f, +0x2c91, 0x2c91, +0x2c93, 0x2c93, +0x2c95, 0x2c95, +0x2c97, 0x2c97, +0x2c99, 0x2c99, +0x2c9b, 0x2c9b, +0x2c9d, 0x2c9d, +0x2c9f, 0x2c9f, +0x2ca1, 0x2ca1, +0x2ca3, 0x2ca3, +0x2ca5, 0x2ca5, +0x2ca7, 0x2ca7, +0x2ca9, 0x2ca9, +0x2cab, 0x2cab, +0x2cad, 0x2cad, +0x2caf, 0x2caf, +0x2cb1, 0x2cb1, +0x2cb3, 0x2cb3, +0x2cb5, 0x2cb5, +0x2cb7, 0x2cb7, +0x2cb9, 0x2cb9, +0x2cbb, 0x2cbb, +0x2cbd, 0x2cbd, +0x2cbf, 0x2cbf, +0x2cc1, 0x2cc1, +0x2cc3, 0x2cc3, +0x2cc5, 0x2cc5, +0x2cc7, 0x2cc7, +0x2cc9, 0x2cc9, +0x2ccb, 0x2ccb, +0x2ccd, 0x2ccd, +0x2ccf, 0x2ccf, +0x2cd1, 0x2cd1, +0x2cd3, 0x2cd3, +0x2cd5, 0x2cd5, +0x2cd7, 0x2cd7, +0x2cd9, 0x2cd9, +0x2cdb, 0x2cdb, +0x2cdd, 0x2cdd, +0x2cdf, 0x2cdf, +0x2ce1, 0x2ce1, +0x2ce3, 0x2ce3, +0x2cec, 0x2cec, +0x2cee, 0x2cee, +0x2cf3, 0x2cf3, +0x2d00, 0x2d25, +0x2d27, 0x2d27, +0x2d2d, 0x2d2d, +0xa641, 0xa641, +0xa643, 0xa643, +0xa645, 0xa645, +0xa647, 0xa647, +0xa649, 0xa649, +0xa64b, 0xa64b, +0xa64d, 0xa64d, +0xa64f, 0xa64f, +0xa651, 0xa651, +0xa653, 0xa653, +0xa655, 0xa655, +0xa657, 0xa657, +0xa659, 0xa659, +0xa65b, 0xa65b, +0xa65d, 0xa65d, +0xa65f, 0xa65f, +0xa661, 0xa661, +0xa663, 0xa663, +0xa665, 0xa665, +0xa667, 0xa667, +0xa669, 0xa669, +0xa66b, 0xa66b, +0xa66d, 0xa66d, +0xa681, 0xa681, +0xa683, 0xa683, +0xa685, 0xa685, +0xa687, 0xa687, +0xa689, 0xa689, +0xa68b, 0xa68b, +0xa68d, 0xa68d, +0xa68f, 0xa68f, +0xa691, 0xa691, +0xa693, 0xa693, +0xa695, 0xa695, +0xa697, 0xa697, +0xa699, 0xa699, +0xa69b, 0xa69b, +0xa723, 0xa723, +0xa725, 0xa725, +0xa727, 0xa727, +0xa729, 0xa729, +0xa72b, 0xa72b, +0xa72d, 0xa72d, +0xa72f, 0xa72f, +0xa733, 0xa733, +0xa735, 0xa735, +0xa737, 0xa737, +0xa739, 0xa739, +0xa73b, 0xa73b, +0xa73d, 0xa73d, +0xa73f, 0xa73f, +0xa741, 0xa741, +0xa743, 0xa743, +0xa745, 0xa745, +0xa747, 0xa747, +0xa749, 0xa749, +0xa74b, 0xa74b, +0xa74d, 0xa74d, +0xa74f, 0xa74f, +0xa751, 0xa751, +0xa753, 0xa753, +0xa755, 0xa755, +0xa757, 0xa757, +0xa759, 0xa759, +0xa75b, 0xa75b, +0xa75d, 0xa75d, +0xa75f, 0xa75f, +0xa761, 0xa761, +0xa763, 0xa763, +0xa765, 0xa765, +0xa767, 0xa767, +0xa769, 0xa769, +0xa76b, 0xa76b, +0xa76d, 0xa76d, +0xa76f, 0xa76f, +0xa77a, 0xa77a, +0xa77c, 0xa77c, +0xa77f, 0xa77f, +0xa781, 0xa781, +0xa783, 0xa783, +0xa785, 0xa785, +0xa787, 0xa787, +0xa78c, 0xa78c, +0xa791, 0xa791, +0xa793, 0xa794, +0xa797, 0xa797, +0xa799, 0xa799, +0xa79b, 0xa79b, +0xa79d, 0xa79d, +0xa79f, 0xa79f, +0xa7a1, 0xa7a1, +0xa7a3, 0xa7a3, +0xa7a5, 0xa7a5, +0xa7a7, 0xa7a7, +0xa7a9, 0xa7a9, +0xa7b5, 0xa7b5, +0xa7b7, 0xa7b7, +0xa7b9, 0xa7b9, +0xa7bb, 0xa7bb, +0xa7bd, 0xa7bd, +0xa7bf, 0xa7bf, +0xa7c1, 0xa7c1, +0xa7c3, 0xa7c3, +0xa7c8, 0xa7c8, +0xa7ca, 0xa7ca, +0xa7cd, 0xa7cd, +0xa7d1, 0xa7d1, +0xa7d7, 0xa7d7, +0xa7d9, 0xa7d9, +0xa7db, 0xa7db, +0xa7f6, 0xa7f6, +0xab53, 0xab53, +0xab70, 0xabbf, +0xfb00, 0xfb06, +0xfb13, 0xfb17, +0xff41, 0xff5a, +0x10428, 0x1044f, +0x104d8, 0x104fb, +0x10597, 0x105a1, +0x105a3, 0x105b1, +0x105b3, 0x105b9, +0x105bb, 0x105bc, +0x10cc0, 0x10cf2, +0x10d70, 0x10d85, +0x118c0, 0x118df, +0x16e60, 0x16e7f, +0x1e922, 0x1e943, +}; /* END of CR_Changes_When_Uppercased */ + +/* PROPERTY: 'Cherokee': Script */ +static const OnigCodePoint +CR_Cherokee[] = { 3, +0x13a0, 0x13f5, +0x13f8, 0x13fd, +0xab70, 0xabbf, +}; /* END of CR_Cherokee */ + +/* PROPERTY: 'Chorasmian': Script */ +static const OnigCodePoint +CR_Chorasmian[] = { 1, +0x10fb0, 0x10fcb, +}; /* END of CR_Chorasmian */ + +/* PROPERTY: 'Cn': General Category */ +static const OnigCodePoint +CR_Cn[] = { 731, +0x0378, 0x0379, +0x0380, 0x0383, +0x038b, 0x038b, +0x038d, 0x038d, +0x03a2, 0x03a2, +0x0530, 0x0530, +0x0557, 0x0558, +0x058b, 0x058c, +0x0590, 0x0590, +0x05c8, 0x05cf, +0x05eb, 0x05ee, +0x05f5, 0x05ff, +0x070e, 0x070e, +0x074b, 0x074c, +0x07b2, 0x07bf, +0x07fb, 0x07fc, +0x082e, 0x082f, +0x083f, 0x083f, +0x085c, 0x085d, +0x085f, 0x085f, +0x086b, 0x086f, +0x088f, 0x088f, +0x0892, 0x0896, +0x0984, 0x0984, +0x098d, 0x098e, +0x0991, 0x0992, +0x09a9, 0x09a9, +0x09b1, 0x09b1, +0x09b3, 0x09b5, +0x09ba, 0x09bb, +0x09c5, 0x09c6, +0x09c9, 0x09ca, +0x09cf, 0x09d6, +0x09d8, 0x09db, +0x09de, 0x09de, +0x09e4, 0x09e5, +0x09ff, 0x0a00, +0x0a04, 0x0a04, +0x0a0b, 0x0a0e, +0x0a11, 0x0a12, +0x0a29, 0x0a29, +0x0a31, 0x0a31, +0x0a34, 0x0a34, +0x0a37, 0x0a37, +0x0a3a, 0x0a3b, +0x0a3d, 0x0a3d, +0x0a43, 0x0a46, +0x0a49, 0x0a4a, +0x0a4e, 0x0a50, +0x0a52, 0x0a58, +0x0a5d, 0x0a5d, +0x0a5f, 0x0a65, +0x0a77, 0x0a80, +0x0a84, 0x0a84, +0x0a8e, 0x0a8e, +0x0a92, 0x0a92, +0x0aa9, 0x0aa9, +0x0ab1, 0x0ab1, +0x0ab4, 0x0ab4, +0x0aba, 0x0abb, +0x0ac6, 0x0ac6, +0x0aca, 0x0aca, +0x0ace, 0x0acf, +0x0ad1, 0x0adf, +0x0ae4, 0x0ae5, +0x0af2, 0x0af8, +0x0b00, 0x0b00, +0x0b04, 0x0b04, +0x0b0d, 0x0b0e, +0x0b11, 0x0b12, +0x0b29, 0x0b29, +0x0b31, 0x0b31, +0x0b34, 0x0b34, +0x0b3a, 0x0b3b, +0x0b45, 0x0b46, +0x0b49, 0x0b4a, +0x0b4e, 0x0b54, +0x0b58, 0x0b5b, +0x0b5e, 0x0b5e, +0x0b64, 0x0b65, +0x0b78, 0x0b81, +0x0b84, 0x0b84, +0x0b8b, 0x0b8d, +0x0b91, 0x0b91, +0x0b96, 0x0b98, +0x0b9b, 0x0b9b, +0x0b9d, 0x0b9d, +0x0ba0, 0x0ba2, +0x0ba5, 0x0ba7, +0x0bab, 0x0bad, +0x0bba, 0x0bbd, +0x0bc3, 0x0bc5, +0x0bc9, 0x0bc9, +0x0bce, 0x0bcf, +0x0bd1, 0x0bd6, +0x0bd8, 0x0be5, +0x0bfb, 0x0bff, +0x0c0d, 0x0c0d, +0x0c11, 0x0c11, +0x0c29, 0x0c29, +0x0c3a, 0x0c3b, +0x0c45, 0x0c45, +0x0c49, 0x0c49, +0x0c4e, 0x0c54, +0x0c57, 0x0c57, +0x0c5b, 0x0c5c, +0x0c5e, 0x0c5f, +0x0c64, 0x0c65, +0x0c70, 0x0c76, +0x0c8d, 0x0c8d, +0x0c91, 0x0c91, +0x0ca9, 0x0ca9, +0x0cb4, 0x0cb4, +0x0cba, 0x0cbb, +0x0cc5, 0x0cc5, +0x0cc9, 0x0cc9, +0x0cce, 0x0cd4, +0x0cd7, 0x0cdc, +0x0cdf, 0x0cdf, +0x0ce4, 0x0ce5, +0x0cf0, 0x0cf0, +0x0cf4, 0x0cff, +0x0d0d, 0x0d0d, +0x0d11, 0x0d11, +0x0d45, 0x0d45, +0x0d49, 0x0d49, +0x0d50, 0x0d53, +0x0d64, 0x0d65, +0x0d80, 0x0d80, +0x0d84, 0x0d84, +0x0d97, 0x0d99, +0x0db2, 0x0db2, +0x0dbc, 0x0dbc, +0x0dbe, 0x0dbf, +0x0dc7, 0x0dc9, +0x0dcb, 0x0dce, +0x0dd5, 0x0dd5, +0x0dd7, 0x0dd7, +0x0de0, 0x0de5, +0x0df0, 0x0df1, +0x0df5, 0x0e00, +0x0e3b, 0x0e3e, +0x0e5c, 0x0e80, +0x0e83, 0x0e83, +0x0e85, 0x0e85, +0x0e8b, 0x0e8b, +0x0ea4, 0x0ea4, +0x0ea6, 0x0ea6, +0x0ebe, 0x0ebf, +0x0ec5, 0x0ec5, +0x0ec7, 0x0ec7, +0x0ecf, 0x0ecf, +0x0eda, 0x0edb, +0x0ee0, 0x0eff, +0x0f48, 0x0f48, +0x0f6d, 0x0f70, +0x0f98, 0x0f98, +0x0fbd, 0x0fbd, +0x0fcd, 0x0fcd, +0x0fdb, 0x0fff, +0x10c6, 0x10c6, +0x10c8, 0x10cc, +0x10ce, 0x10cf, +0x1249, 0x1249, +0x124e, 0x124f, +0x1257, 0x1257, +0x1259, 0x1259, +0x125e, 0x125f, +0x1289, 0x1289, +0x128e, 0x128f, +0x12b1, 0x12b1, +0x12b6, 0x12b7, +0x12bf, 0x12bf, +0x12c1, 0x12c1, +0x12c6, 0x12c7, +0x12d7, 0x12d7, +0x1311, 0x1311, +0x1316, 0x1317, +0x135b, 0x135c, +0x137d, 0x137f, +0x139a, 0x139f, +0x13f6, 0x13f7, +0x13fe, 0x13ff, +0x169d, 0x169f, +0x16f9, 0x16ff, +0x1716, 0x171e, +0x1737, 0x173f, +0x1754, 0x175f, +0x176d, 0x176d, +0x1771, 0x1771, +0x1774, 0x177f, +0x17de, 0x17df, +0x17ea, 0x17ef, +0x17fa, 0x17ff, +0x181a, 0x181f, +0x1879, 0x187f, +0x18ab, 0x18af, +0x18f6, 0x18ff, +0x191f, 0x191f, +0x192c, 0x192f, +0x193c, 0x193f, +0x1941, 0x1943, +0x196e, 0x196f, +0x1975, 0x197f, +0x19ac, 0x19af, +0x19ca, 0x19cf, +0x19db, 0x19dd, +0x1a1c, 0x1a1d, +0x1a5f, 0x1a5f, +0x1a7d, 0x1a7e, +0x1a8a, 0x1a8f, +0x1a9a, 0x1a9f, +0x1aae, 0x1aaf, +0x1acf, 0x1aff, +0x1b4d, 0x1b4d, +0x1bf4, 0x1bfb, +0x1c38, 0x1c3a, +0x1c4a, 0x1c4c, +0x1c8b, 0x1c8f, +0x1cbb, 0x1cbc, +0x1cc8, 0x1ccf, +0x1cfb, 0x1cff, +0x1f16, 0x1f17, +0x1f1e, 0x1f1f, +0x1f46, 0x1f47, +0x1f4e, 0x1f4f, +0x1f58, 0x1f58, +0x1f5a, 0x1f5a, +0x1f5c, 0x1f5c, +0x1f5e, 0x1f5e, +0x1f7e, 0x1f7f, +0x1fb5, 0x1fb5, +0x1fc5, 0x1fc5, +0x1fd4, 0x1fd5, +0x1fdc, 0x1fdc, +0x1ff0, 0x1ff1, +0x1ff5, 0x1ff5, +0x1fff, 0x1fff, +0x2065, 0x2065, +0x2072, 0x2073, +0x208f, 0x208f, +0x209d, 0x209f, +0x20c1, 0x20cf, +0x20f1, 0x20ff, +0x218c, 0x218f, +0x242a, 0x243f, +0x244b, 0x245f, +0x2b74, 0x2b75, +0x2b96, 0x2b96, +0x2cf4, 0x2cf8, +0x2d26, 0x2d26, +0x2d28, 0x2d2c, +0x2d2e, 0x2d2f, +0x2d68, 0x2d6e, +0x2d71, 0x2d7e, +0x2d97, 0x2d9f, +0x2da7, 0x2da7, +0x2daf, 0x2daf, +0x2db7, 0x2db7, +0x2dbf, 0x2dbf, +0x2dc7, 0x2dc7, +0x2dcf, 0x2dcf, +0x2dd7, 0x2dd7, +0x2ddf, 0x2ddf, +0x2e5e, 0x2e7f, +0x2e9a, 0x2e9a, +0x2ef4, 0x2eff, +0x2fd6, 0x2fef, +0x3040, 0x3040, +0x3097, 0x3098, +0x3100, 0x3104, +0x3130, 0x3130, +0x318f, 0x318f, +0x31e6, 0x31ee, +0x321f, 0x321f, +0xa48d, 0xa48f, +0xa4c7, 0xa4cf, +0xa62c, 0xa63f, +0xa6f8, 0xa6ff, +0xa7ce, 0xa7cf, +0xa7d2, 0xa7d2, +0xa7d4, 0xa7d4, +0xa7dd, 0xa7f1, +0xa82d, 0xa82f, +0xa83a, 0xa83f, +0xa878, 0xa87f, +0xa8c6, 0xa8cd, +0xa8da, 0xa8df, +0xa954, 0xa95e, +0xa97d, 0xa97f, +0xa9ce, 0xa9ce, +0xa9da, 0xa9dd, +0xa9ff, 0xa9ff, +0xaa37, 0xaa3f, +0xaa4e, 0xaa4f, +0xaa5a, 0xaa5b, +0xaac3, 0xaada, +0xaaf7, 0xab00, +0xab07, 0xab08, +0xab0f, 0xab10, +0xab17, 0xab1f, +0xab27, 0xab27, +0xab2f, 0xab2f, +0xab6c, 0xab6f, +0xabee, 0xabef, +0xabfa, 0xabff, +0xd7a4, 0xd7af, +0xd7c7, 0xd7ca, +0xd7fc, 0xd7ff, +0xfa6e, 0xfa6f, +0xfada, 0xfaff, +0xfb07, 0xfb12, +0xfb18, 0xfb1c, +0xfb37, 0xfb37, +0xfb3d, 0xfb3d, +0xfb3f, 0xfb3f, +0xfb42, 0xfb42, +0xfb45, 0xfb45, +0xfbc3, 0xfbd2, +0xfd90, 0xfd91, +0xfdc8, 0xfdce, +0xfdd0, 0xfdef, +0xfe1a, 0xfe1f, +0xfe53, 0xfe53, +0xfe67, 0xfe67, +0xfe6c, 0xfe6f, +0xfe75, 0xfe75, +0xfefd, 0xfefe, +0xff00, 0xff00, +0xffbf, 0xffc1, +0xffc8, 0xffc9, +0xffd0, 0xffd1, +0xffd8, 0xffd9, +0xffdd, 0xffdf, +0xffe7, 0xffe7, +0xffef, 0xfff8, +0xfffe, 0xffff, +0x1000c, 0x1000c, +0x10027, 0x10027, +0x1003b, 0x1003b, +0x1003e, 0x1003e, +0x1004e, 0x1004f, +0x1005e, 0x1007f, +0x100fb, 0x100ff, +0x10103, 0x10106, +0x10134, 0x10136, +0x1018f, 0x1018f, +0x1019d, 0x1019f, +0x101a1, 0x101cf, +0x101fe, 0x1027f, +0x1029d, 0x1029f, +0x102d1, 0x102df, +0x102fc, 0x102ff, +0x10324, 0x1032c, +0x1034b, 0x1034f, +0x1037b, 0x1037f, +0x1039e, 0x1039e, +0x103c4, 0x103c7, +0x103d6, 0x103ff, +0x1049e, 0x1049f, +0x104aa, 0x104af, +0x104d4, 0x104d7, +0x104fc, 0x104ff, +0x10528, 0x1052f, +0x10564, 0x1056e, +0x1057b, 0x1057b, +0x1058b, 0x1058b, +0x10593, 0x10593, +0x10596, 0x10596, +0x105a2, 0x105a2, +0x105b2, 0x105b2, +0x105ba, 0x105ba, +0x105bd, 0x105bf, +0x105f4, 0x105ff, +0x10737, 0x1073f, +0x10756, 0x1075f, +0x10768, 0x1077f, +0x10786, 0x10786, +0x107b1, 0x107b1, +0x107bb, 0x107ff, +0x10806, 0x10807, +0x10809, 0x10809, +0x10836, 0x10836, +0x10839, 0x1083b, +0x1083d, 0x1083e, +0x10856, 0x10856, +0x1089f, 0x108a6, +0x108b0, 0x108df, +0x108f3, 0x108f3, +0x108f6, 0x108fa, +0x1091c, 0x1091e, +0x1093a, 0x1093e, +0x10940, 0x1097f, +0x109b8, 0x109bb, +0x109d0, 0x109d1, +0x10a04, 0x10a04, +0x10a07, 0x10a0b, +0x10a14, 0x10a14, +0x10a18, 0x10a18, +0x10a36, 0x10a37, +0x10a3b, 0x10a3e, +0x10a49, 0x10a4f, +0x10a59, 0x10a5f, +0x10aa0, 0x10abf, +0x10ae7, 0x10aea, +0x10af7, 0x10aff, +0x10b36, 0x10b38, +0x10b56, 0x10b57, +0x10b73, 0x10b77, +0x10b92, 0x10b98, +0x10b9d, 0x10ba8, +0x10bb0, 0x10bff, +0x10c49, 0x10c7f, +0x10cb3, 0x10cbf, +0x10cf3, 0x10cf9, +0x10d28, 0x10d2f, +0x10d3a, 0x10d3f, +0x10d66, 0x10d68, +0x10d86, 0x10d8d, +0x10d90, 0x10e5f, +0x10e7f, 0x10e7f, +0x10eaa, 0x10eaa, +0x10eae, 0x10eaf, +0x10eb2, 0x10ec1, +0x10ec5, 0x10efb, +0x10f28, 0x10f2f, +0x10f5a, 0x10f6f, +0x10f8a, 0x10faf, +0x10fcc, 0x10fdf, +0x10ff7, 0x10fff, +0x1104e, 0x11051, +0x11076, 0x1107e, +0x110c3, 0x110cc, +0x110ce, 0x110cf, +0x110e9, 0x110ef, +0x110fa, 0x110ff, +0x11135, 0x11135, +0x11148, 0x1114f, +0x11177, 0x1117f, +0x111e0, 0x111e0, +0x111f5, 0x111ff, +0x11212, 0x11212, +0x11242, 0x1127f, +0x11287, 0x11287, +0x11289, 0x11289, +0x1128e, 0x1128e, +0x1129e, 0x1129e, +0x112aa, 0x112af, +0x112eb, 0x112ef, +0x112fa, 0x112ff, +0x11304, 0x11304, +0x1130d, 0x1130e, +0x11311, 0x11312, +0x11329, 0x11329, +0x11331, 0x11331, +0x11334, 0x11334, +0x1133a, 0x1133a, +0x11345, 0x11346, +0x11349, 0x1134a, +0x1134e, 0x1134f, +0x11351, 0x11356, +0x11358, 0x1135c, +0x11364, 0x11365, +0x1136d, 0x1136f, +0x11375, 0x1137f, +0x1138a, 0x1138a, +0x1138c, 0x1138d, +0x1138f, 0x1138f, +0x113b6, 0x113b6, +0x113c1, 0x113c1, +0x113c3, 0x113c4, +0x113c6, 0x113c6, +0x113cb, 0x113cb, +0x113d6, 0x113d6, +0x113d9, 0x113e0, +0x113e3, 0x113ff, +0x1145c, 0x1145c, +0x11462, 0x1147f, +0x114c8, 0x114cf, +0x114da, 0x1157f, +0x115b6, 0x115b7, +0x115de, 0x115ff, +0x11645, 0x1164f, +0x1165a, 0x1165f, +0x1166d, 0x1167f, +0x116ba, 0x116bf, +0x116ca, 0x116cf, +0x116e4, 0x116ff, +0x1171b, 0x1171c, +0x1172c, 0x1172f, +0x11747, 0x117ff, +0x1183c, 0x1189f, +0x118f3, 0x118fe, +0x11907, 0x11908, +0x1190a, 0x1190b, +0x11914, 0x11914, +0x11917, 0x11917, +0x11936, 0x11936, +0x11939, 0x1193a, +0x11947, 0x1194f, +0x1195a, 0x1199f, +0x119a8, 0x119a9, +0x119d8, 0x119d9, +0x119e5, 0x119ff, +0x11a48, 0x11a4f, +0x11aa3, 0x11aaf, +0x11af9, 0x11aff, +0x11b0a, 0x11bbf, +0x11be2, 0x11bef, +0x11bfa, 0x11bff, +0x11c09, 0x11c09, +0x11c37, 0x11c37, +0x11c46, 0x11c4f, +0x11c6d, 0x11c6f, +0x11c90, 0x11c91, +0x11ca8, 0x11ca8, +0x11cb7, 0x11cff, +0x11d07, 0x11d07, +0x11d0a, 0x11d0a, +0x11d37, 0x11d39, +0x11d3b, 0x11d3b, +0x11d3e, 0x11d3e, +0x11d48, 0x11d4f, +0x11d5a, 0x11d5f, +0x11d66, 0x11d66, +0x11d69, 0x11d69, +0x11d8f, 0x11d8f, +0x11d92, 0x11d92, +0x11d99, 0x11d9f, +0x11daa, 0x11edf, +0x11ef9, 0x11eff, +0x11f11, 0x11f11, +0x11f3b, 0x11f3d, +0x11f5b, 0x11faf, +0x11fb1, 0x11fbf, +0x11ff2, 0x11ffe, +0x1239a, 0x123ff, +0x1246f, 0x1246f, +0x12475, 0x1247f, +0x12544, 0x12f8f, +0x12ff3, 0x12fff, +0x13456, 0x1345f, +0x143fb, 0x143ff, +0x14647, 0x160ff, +0x1613a, 0x167ff, +0x16a39, 0x16a3f, +0x16a5f, 0x16a5f, +0x16a6a, 0x16a6d, +0x16abf, 0x16abf, +0x16aca, 0x16acf, +0x16aee, 0x16aef, +0x16af6, 0x16aff, +0x16b46, 0x16b4f, +0x16b5a, 0x16b5a, +0x16b62, 0x16b62, +0x16b78, 0x16b7c, +0x16b90, 0x16d3f, +0x16d7a, 0x16e3f, +0x16e9b, 0x16eff, +0x16f4b, 0x16f4e, +0x16f88, 0x16f8e, +0x16fa0, 0x16fdf, +0x16fe5, 0x16fef, +0x16ff2, 0x16fff, +0x187f8, 0x187ff, +0x18cd6, 0x18cfe, +0x18d09, 0x1afef, +0x1aff4, 0x1aff4, +0x1affc, 0x1affc, +0x1afff, 0x1afff, +0x1b123, 0x1b131, +0x1b133, 0x1b14f, +0x1b153, 0x1b154, +0x1b156, 0x1b163, +0x1b168, 0x1b16f, +0x1b2fc, 0x1bbff, +0x1bc6b, 0x1bc6f, +0x1bc7d, 0x1bc7f, +0x1bc89, 0x1bc8f, +0x1bc9a, 0x1bc9b, +0x1bca4, 0x1cbff, +0x1ccfa, 0x1ccff, +0x1ceb4, 0x1ceff, +0x1cf2e, 0x1cf2f, +0x1cf47, 0x1cf4f, +0x1cfc4, 0x1cfff, +0x1d0f6, 0x1d0ff, +0x1d127, 0x1d128, +0x1d1eb, 0x1d1ff, +0x1d246, 0x1d2bf, +0x1d2d4, 0x1d2df, +0x1d2f4, 0x1d2ff, +0x1d357, 0x1d35f, +0x1d379, 0x1d3ff, +0x1d455, 0x1d455, +0x1d49d, 0x1d49d, +0x1d4a0, 0x1d4a1, +0x1d4a3, 0x1d4a4, +0x1d4a7, 0x1d4a8, +0x1d4ad, 0x1d4ad, +0x1d4ba, 0x1d4ba, +0x1d4bc, 0x1d4bc, +0x1d4c4, 0x1d4c4, +0x1d506, 0x1d506, +0x1d50b, 0x1d50c, +0x1d515, 0x1d515, +0x1d51d, 0x1d51d, +0x1d53a, 0x1d53a, +0x1d53f, 0x1d53f, +0x1d545, 0x1d545, +0x1d547, 0x1d549, +0x1d551, 0x1d551, +0x1d6a6, 0x1d6a7, +0x1d7cc, 0x1d7cd, +0x1da8c, 0x1da9a, +0x1daa0, 0x1daa0, +0x1dab0, 0x1deff, +0x1df1f, 0x1df24, +0x1df2b, 0x1dfff, +0x1e007, 0x1e007, +0x1e019, 0x1e01a, +0x1e022, 0x1e022, +0x1e025, 0x1e025, +0x1e02b, 0x1e02f, +0x1e06e, 0x1e08e, +0x1e090, 0x1e0ff, +0x1e12d, 0x1e12f, +0x1e13e, 0x1e13f, +0x1e14a, 0x1e14d, +0x1e150, 0x1e28f, +0x1e2af, 0x1e2bf, +0x1e2fa, 0x1e2fe, +0x1e300, 0x1e4cf, +0x1e4fa, 0x1e5cf, +0x1e5fb, 0x1e5fe, +0x1e600, 0x1e7df, +0x1e7e7, 0x1e7e7, +0x1e7ec, 0x1e7ec, +0x1e7ef, 0x1e7ef, +0x1e7ff, 0x1e7ff, +0x1e8c5, 0x1e8c6, +0x1e8d7, 0x1e8ff, +0x1e94c, 0x1e94f, +0x1e95a, 0x1e95d, +0x1e960, 0x1ec70, +0x1ecb5, 0x1ed00, +0x1ed3e, 0x1edff, +0x1ee04, 0x1ee04, +0x1ee20, 0x1ee20, +0x1ee23, 0x1ee23, +0x1ee25, 0x1ee26, +0x1ee28, 0x1ee28, +0x1ee33, 0x1ee33, +0x1ee38, 0x1ee38, +0x1ee3a, 0x1ee3a, +0x1ee3c, 0x1ee41, +0x1ee43, 0x1ee46, +0x1ee48, 0x1ee48, +0x1ee4a, 0x1ee4a, +0x1ee4c, 0x1ee4c, +0x1ee50, 0x1ee50, +0x1ee53, 0x1ee53, +0x1ee55, 0x1ee56, +0x1ee58, 0x1ee58, +0x1ee5a, 0x1ee5a, +0x1ee5c, 0x1ee5c, +0x1ee5e, 0x1ee5e, +0x1ee60, 0x1ee60, +0x1ee63, 0x1ee63, +0x1ee65, 0x1ee66, +0x1ee6b, 0x1ee6b, +0x1ee73, 0x1ee73, +0x1ee78, 0x1ee78, +0x1ee7d, 0x1ee7d, +0x1ee7f, 0x1ee7f, +0x1ee8a, 0x1ee8a, +0x1ee9c, 0x1eea0, +0x1eea4, 0x1eea4, +0x1eeaa, 0x1eeaa, +0x1eebc, 0x1eeef, +0x1eef2, 0x1efff, +0x1f02c, 0x1f02f, +0x1f094, 0x1f09f, +0x1f0af, 0x1f0b0, +0x1f0c0, 0x1f0c0, +0x1f0d0, 0x1f0d0, +0x1f0f6, 0x1f0ff, +0x1f1ae, 0x1f1e5, +0x1f203, 0x1f20f, +0x1f23c, 0x1f23f, +0x1f249, 0x1f24f, +0x1f252, 0x1f25f, +0x1f266, 0x1f2ff, +0x1f6d8, 0x1f6db, +0x1f6ed, 0x1f6ef, +0x1f6fd, 0x1f6ff, +0x1f777, 0x1f77a, +0x1f7da, 0x1f7df, +0x1f7ec, 0x1f7ef, +0x1f7f1, 0x1f7ff, +0x1f80c, 0x1f80f, +0x1f848, 0x1f84f, +0x1f85a, 0x1f85f, +0x1f888, 0x1f88f, +0x1f8ae, 0x1f8af, +0x1f8bc, 0x1f8bf, +0x1f8c2, 0x1f8ff, +0x1fa54, 0x1fa5f, +0x1fa6e, 0x1fa6f, +0x1fa7d, 0x1fa7f, +0x1fa8a, 0x1fa8e, +0x1fac7, 0x1facd, +0x1fadd, 0x1fade, +0x1faea, 0x1faef, +0x1faf9, 0x1faff, +0x1fb93, 0x1fb93, +0x1fbfa, 0x1ffff, +0x2a6e0, 0x2a6ff, +0x2b73a, 0x2b73f, +0x2b81e, 0x2b81f, +0x2cea2, 0x2ceaf, +0x2ebe1, 0x2ebef, +0x2ee5e, 0x2f7ff, +0x2fa1e, 0x2ffff, +0x3134b, 0x3134f, +0x323b0, 0xe0000, +0xe0002, 0xe001f, +0xe0080, 0xe00ff, +0xe01f0, 0xeffff, +0xffffe, 0xfffff, +0x10fffe, 0x10ffff, +}; /* END of CR_Cn */ + +/* PROPERTY: 'Co': General Category */ +static const OnigCodePoint +CR_Co[] = { 3, +0xe000, 0xf8ff, +0xf0000, 0xffffd, +0x100000, 0x10fffd, +}; /* END of CR_Co */ + +/* PROPERTY: 'Common': Script */ +static const OnigCodePoint +CR_Common[] = { 174, +0x0000, 0x0040, +0x005b, 0x0060, +0x007b, 0x00a9, +0x00ab, 0x00b9, +0x00bb, 0x00bf, +0x00d7, 0x00d7, +0x00f7, 0x00f7, +0x02b9, 0x02df, +0x02e5, 0x02e9, +0x02ec, 0x02ff, +0x0374, 0x0374, +0x037e, 0x037e, +0x0385, 0x0385, +0x0387, 0x0387, +0x0605, 0x0605, +0x060c, 0x060c, +0x061b, 0x061b, +0x061f, 0x061f, +0x0640, 0x0640, +0x06dd, 0x06dd, +0x08e2, 0x08e2, +0x0964, 0x0965, +0x0e3f, 0x0e3f, +0x0fd5, 0x0fd8, +0x10fb, 0x10fb, +0x16eb, 0x16ed, +0x1735, 0x1736, +0x1802, 0x1803, +0x1805, 0x1805, +0x1cd3, 0x1cd3, +0x1ce1, 0x1ce1, +0x1ce9, 0x1cec, +0x1cee, 0x1cf3, +0x1cf5, 0x1cf7, +0x1cfa, 0x1cfa, +0x2000, 0x200b, +0x200e, 0x2064, +0x2066, 0x2070, +0x2074, 0x207e, +0x2080, 0x208e, +0x20a0, 0x20c0, +0x2100, 0x2125, +0x2127, 0x2129, +0x212c, 0x2131, +0x2133, 0x214d, +0x214f, 0x215f, +0x2189, 0x218b, +0x2190, 0x2429, +0x2440, 0x244a, +0x2460, 0x27ff, +0x2900, 0x2b73, +0x2b76, 0x2b95, +0x2b97, 0x2bff, +0x2e00, 0x2e5d, +0x2ff0, 0x3004, +0x3006, 0x3006, +0x3008, 0x3020, +0x3030, 0x3037, +0x303c, 0x303f, +0x309b, 0x309c, +0x30a0, 0x30a0, +0x30fb, 0x30fc, +0x3190, 0x319f, +0x31c0, 0x31e5, +0x31ef, 0x31ef, +0x3220, 0x325f, +0x327f, 0x32cf, +0x32ff, 0x32ff, +0x3358, 0x33ff, +0x4dc0, 0x4dff, +0xa700, 0xa721, +0xa788, 0xa78a, +0xa830, 0xa839, +0xa92e, 0xa92e, +0xa9cf, 0xa9cf, +0xab5b, 0xab5b, +0xab6a, 0xab6b, +0xfd3e, 0xfd3f, +0xfe10, 0xfe19, +0xfe30, 0xfe52, +0xfe54, 0xfe66, +0xfe68, 0xfe6b, +0xfeff, 0xfeff, +0xff01, 0xff20, +0xff3b, 0xff40, +0xff5b, 0xff65, +0xff70, 0xff70, +0xff9e, 0xff9f, +0xffe0, 0xffe6, +0xffe8, 0xffee, +0xfff9, 0xfffd, +0x10100, 0x10102, +0x10107, 0x10133, +0x10137, 0x1013f, +0x10190, 0x1019c, +0x101d0, 0x101fc, +0x102e1, 0x102fb, +0x1bca0, 0x1bca3, +0x1cc00, 0x1ccf9, +0x1cd00, 0x1ceb3, +0x1cf50, 0x1cfc3, +0x1d000, 0x1d0f5, +0x1d100, 0x1d126, +0x1d129, 0x1d166, +0x1d16a, 0x1d17a, +0x1d183, 0x1d184, +0x1d18c, 0x1d1a9, +0x1d1ae, 0x1d1ea, +0x1d2c0, 0x1d2d3, +0x1d2e0, 0x1d2f3, +0x1d300, 0x1d356, +0x1d360, 0x1d378, +0x1d400, 0x1d454, +0x1d456, 0x1d49c, +0x1d49e, 0x1d49f, +0x1d4a2, 0x1d4a2, +0x1d4a5, 0x1d4a6, +0x1d4a9, 0x1d4ac, +0x1d4ae, 0x1d4b9, +0x1d4bb, 0x1d4bb, +0x1d4bd, 0x1d4c3, +0x1d4c5, 0x1d505, +0x1d507, 0x1d50a, +0x1d50d, 0x1d514, +0x1d516, 0x1d51c, +0x1d51e, 0x1d539, +0x1d53b, 0x1d53e, +0x1d540, 0x1d544, +0x1d546, 0x1d546, +0x1d54a, 0x1d550, +0x1d552, 0x1d6a5, +0x1d6a8, 0x1d7cb, +0x1d7ce, 0x1d7ff, +0x1ec71, 0x1ecb4, +0x1ed01, 0x1ed3d, +0x1f000, 0x1f02b, +0x1f030, 0x1f093, +0x1f0a0, 0x1f0ae, +0x1f0b1, 0x1f0bf, +0x1f0c1, 0x1f0cf, +0x1f0d1, 0x1f0f5, +0x1f100, 0x1f1ad, +0x1f1e6, 0x1f1ff, +0x1f201, 0x1f202, +0x1f210, 0x1f23b, +0x1f240, 0x1f248, +0x1f250, 0x1f251, +0x1f260, 0x1f265, +0x1f300, 0x1f6d7, +0x1f6dc, 0x1f6ec, +0x1f6f0, 0x1f6fc, +0x1f700, 0x1f776, +0x1f77b, 0x1f7d9, +0x1f7e0, 0x1f7eb, +0x1f7f0, 0x1f7f0, +0x1f800, 0x1f80b, +0x1f810, 0x1f847, +0x1f850, 0x1f859, +0x1f860, 0x1f887, +0x1f890, 0x1f8ad, +0x1f8b0, 0x1f8bb, +0x1f8c0, 0x1f8c1, +0x1f900, 0x1fa53, +0x1fa60, 0x1fa6d, +0x1fa70, 0x1fa7c, +0x1fa80, 0x1fa89, +0x1fa8f, 0x1fac6, +0x1face, 0x1fadc, +0x1fadf, 0x1fae9, +0x1faf0, 0x1faf8, +0x1fb00, 0x1fb92, +0x1fb94, 0x1fbf9, +0xe0001, 0xe0001, +0xe0020, 0xe007f, +}; /* END of CR_Common */ + +/* PROPERTY: 'Coptic': Script */ +static const OnigCodePoint +CR_Coptic[] = { 3, +0x03e2, 0x03ef, +0x2c80, 0x2cf3, +0x2cf9, 0x2cff, +}; /* END of CR_Coptic */ + +/* PROPERTY: 'Cs': General Category */ +static const OnigCodePoint +CR_Cs[] = { 1, +0xd800, 0xdfff, +}; /* END of CR_Cs */ + +/* PROPERTY: 'Cuneiform': Script */ +static const OnigCodePoint +CR_Cuneiform[] = { 4, +0x12000, 0x12399, +0x12400, 0x1246e, +0x12470, 0x12474, +0x12480, 0x12543, +}; /* END of CR_Cuneiform */ + +/* PROPERTY: 'Cypriot': Script */ +static const OnigCodePoint +CR_Cypriot[] = { 6, +0x10800, 0x10805, +0x10808, 0x10808, +0x1080a, 0x10835, +0x10837, 0x10838, +0x1083c, 0x1083c, +0x1083f, 0x1083f, +}; /* END of CR_Cypriot */ + +/* PROPERTY: 'Cypro_Minoan': Script */ +static const OnigCodePoint +CR_Cypro_Minoan[] = { 1, +0x12f90, 0x12ff2, +}; /* END of CR_Cypro_Minoan */ + +/* PROPERTY: 'Cyrillic': Script */ +static const OnigCodePoint +CR_Cyrillic[] = { 10, +0x0400, 0x0484, +0x0487, 0x052f, +0x1c80, 0x1c8a, +0x1d2b, 0x1d2b, +0x1d78, 0x1d78, +0x2de0, 0x2dff, +0xa640, 0xa69f, +0xfe2e, 0xfe2f, +0x1e030, 0x1e06d, +0x1e08f, 0x1e08f, +}; /* END of CR_Cyrillic */ + +/* PROPERTY: 'Dash': Binary Property */ +static const OnigCodePoint +CR_Dash[] = { 24, +0x002d, 0x002d, +0x058a, 0x058a, +0x05be, 0x05be, +0x1400, 0x1400, +0x1806, 0x1806, +0x2010, 0x2015, +0x2053, 0x2053, +0x207b, 0x207b, +0x208b, 0x208b, +0x2212, 0x2212, +0x2e17, 0x2e17, +0x2e1a, 0x2e1a, +0x2e3a, 0x2e3b, +0x2e40, 0x2e40, +0x2e5d, 0x2e5d, +0x301c, 0x301c, +0x3030, 0x3030, +0x30a0, 0x30a0, +0xfe31, 0xfe32, +0xfe58, 0xfe58, +0xfe63, 0xfe63, +0xff0d, 0xff0d, +0x10d6e, 0x10d6e, +0x10ead, 0x10ead, +}; /* END of CR_Dash */ + +/* PROPERTY: 'Default_Ignorable_Code_Point': Derived Property */ +static const OnigCodePoint +CR_Default_Ignorable_Code_Point[] = { 17, +0x00ad, 0x00ad, +0x034f, 0x034f, +0x061c, 0x061c, +0x115f, 0x1160, +0x17b4, 0x17b5, +0x180b, 0x180f, +0x200b, 0x200f, +0x202a, 0x202e, +0x2060, 0x206f, +0x3164, 0x3164, +0xfe00, 0xfe0f, +0xfeff, 0xfeff, +0xffa0, 0xffa0, +0xfff0, 0xfff8, +0x1bca0, 0x1bca3, +0x1d173, 0x1d17a, +0xe0000, 0xe0fff, +}; /* END of CR_Default_Ignorable_Code_Point */ + +/* PROPERTY: 'Deprecated': Binary Property */ +static const OnigCodePoint +CR_Deprecated[] = { 8, +0x0149, 0x0149, +0x0673, 0x0673, +0x0f77, 0x0f77, +0x0f79, 0x0f79, +0x17a3, 0x17a4, +0x206a, 0x206f, +0x2329, 0x232a, +0xe0001, 0xe0001, +}; /* END of CR_Deprecated */ + +/* PROPERTY: 'Deseret': Script */ +static const OnigCodePoint +CR_Deseret[] = { 1, +0x10400, 0x1044f, +}; /* END of CR_Deseret */ + +/* PROPERTY: 'Devanagari': Script */ +static const OnigCodePoint +CR_Devanagari[] = { 5, +0x0900, 0x0950, +0x0955, 0x0963, +0x0966, 0x097f, +0xa8e0, 0xa8ff, +0x11b00, 0x11b09, +}; /* END of CR_Devanagari */ + +/* PROPERTY: 'Diacritic': Binary Property */ +static const OnigCodePoint +CR_Diacritic[] = { 214, +0x005e, 0x005e, +0x0060, 0x0060, +0x00a8, 0x00a8, +0x00af, 0x00af, +0x00b4, 0x00b4, +0x00b7, 0x00b8, +0x02b0, 0x034e, +0x0350, 0x0357, +0x035d, 0x0362, +0x0374, 0x0375, +0x037a, 0x037a, +0x0384, 0x0385, +0x0483, 0x0487, +0x0559, 0x0559, +0x0591, 0x05a1, +0x05a3, 0x05bd, +0x05bf, 0x05bf, +0x05c1, 0x05c2, +0x05c4, 0x05c4, +0x064b, 0x0652, +0x0657, 0x0658, +0x06df, 0x06e0, +0x06e5, 0x06e6, +0x06ea, 0x06ec, +0x0730, 0x074a, +0x07a6, 0x07b0, +0x07eb, 0x07f5, +0x0818, 0x0819, +0x0898, 0x089f, +0x08c9, 0x08d2, +0x08e3, 0x08fe, +0x093c, 0x093c, +0x094d, 0x094d, +0x0951, 0x0954, +0x0971, 0x0971, +0x09bc, 0x09bc, +0x09cd, 0x09cd, +0x0a3c, 0x0a3c, +0x0a4d, 0x0a4d, +0x0abc, 0x0abc, +0x0acd, 0x0acd, +0x0afd, 0x0aff, +0x0b3c, 0x0b3c, +0x0b4d, 0x0b4d, +0x0b55, 0x0b55, +0x0bcd, 0x0bcd, +0x0c3c, 0x0c3c, +0x0c4d, 0x0c4d, +0x0cbc, 0x0cbc, +0x0ccd, 0x0ccd, +0x0d3b, 0x0d3c, +0x0d4d, 0x0d4d, +0x0dca, 0x0dca, +0x0e3a, 0x0e3a, +0x0e47, 0x0e4c, +0x0e4e, 0x0e4e, +0x0eba, 0x0eba, +0x0ec8, 0x0ecc, +0x0f18, 0x0f19, +0x0f35, 0x0f35, +0x0f37, 0x0f37, +0x0f39, 0x0f39, +0x0f3e, 0x0f3f, +0x0f82, 0x0f84, +0x0f86, 0x0f87, +0x0fc6, 0x0fc6, +0x1037, 0x1037, +0x1039, 0x103a, +0x1063, 0x1064, +0x1069, 0x106d, +0x1087, 0x108d, +0x108f, 0x108f, +0x109a, 0x109b, +0x135d, 0x135f, +0x1714, 0x1715, +0x1734, 0x1734, +0x17c9, 0x17d3, +0x17dd, 0x17dd, +0x1939, 0x193b, +0x1a60, 0x1a60, +0x1a75, 0x1a7c, +0x1a7f, 0x1a7f, +0x1ab0, 0x1abe, +0x1ac1, 0x1acb, +0x1b34, 0x1b34, +0x1b44, 0x1b44, +0x1b6b, 0x1b73, +0x1baa, 0x1bab, +0x1be6, 0x1be6, +0x1bf2, 0x1bf3, +0x1c36, 0x1c37, +0x1c78, 0x1c7d, +0x1cd0, 0x1ce8, +0x1ced, 0x1ced, +0x1cf4, 0x1cf4, +0x1cf7, 0x1cf9, +0x1d2c, 0x1d6a, +0x1dc4, 0x1dcf, +0x1df5, 0x1dff, +0x1fbd, 0x1fbd, +0x1fbf, 0x1fc1, +0x1fcd, 0x1fcf, +0x1fdd, 0x1fdf, +0x1fed, 0x1fef, +0x1ffd, 0x1ffe, +0x2cef, 0x2cf1, +0x2e2f, 0x2e2f, +0x302a, 0x302f, +0x3099, 0x309c, +0x30fc, 0x30fc, +0xa66f, 0xa66f, +0xa67c, 0xa67d, +0xa67f, 0xa67f, +0xa69c, 0xa69d, +0xa6f0, 0xa6f1, +0xa700, 0xa721, +0xa788, 0xa78a, +0xa7f8, 0xa7f9, +0xa806, 0xa806, +0xa82c, 0xa82c, +0xa8c4, 0xa8c4, +0xa8e0, 0xa8f1, +0xa92b, 0xa92e, +0xa953, 0xa953, +0xa9b3, 0xa9b3, +0xa9c0, 0xa9c0, +0xa9e5, 0xa9e5, +0xaa7b, 0xaa7d, +0xaabf, 0xaac2, +0xaaf6, 0xaaf6, +0xab5b, 0xab5f, +0xab69, 0xab6b, +0xabec, 0xabed, +0xfb1e, 0xfb1e, +0xfe20, 0xfe2f, +0xff3e, 0xff3e, +0xff40, 0xff40, +0xff70, 0xff70, +0xff9e, 0xff9f, +0xffe3, 0xffe3, +0x102e0, 0x102e0, +0x10780, 0x10785, +0x10787, 0x107b0, +0x107b2, 0x107ba, +0x10a38, 0x10a3a, +0x10a3f, 0x10a3f, +0x10ae5, 0x10ae6, +0x10d22, 0x10d27, +0x10d4e, 0x10d4e, +0x10d69, 0x10d6d, +0x10efd, 0x10eff, +0x10f46, 0x10f50, +0x10f82, 0x10f85, +0x11046, 0x11046, +0x11070, 0x11070, +0x110b9, 0x110ba, +0x11133, 0x11134, +0x11173, 0x11173, +0x111c0, 0x111c0, +0x111ca, 0x111cc, +0x11235, 0x11236, +0x112e9, 0x112ea, +0x1133b, 0x1133c, +0x1134d, 0x1134d, +0x11366, 0x1136c, +0x11370, 0x11374, +0x113ce, 0x113d0, +0x113d2, 0x113d3, +0x113e1, 0x113e2, +0x11442, 0x11442, +0x11446, 0x11446, +0x114c2, 0x114c3, +0x115bf, 0x115c0, +0x1163f, 0x1163f, +0x116b6, 0x116b7, +0x1172b, 0x1172b, +0x11839, 0x1183a, +0x1193d, 0x1193e, +0x11943, 0x11943, +0x119e0, 0x119e0, +0x11a34, 0x11a34, +0x11a47, 0x11a47, +0x11a99, 0x11a99, +0x11c3f, 0x11c3f, +0x11d42, 0x11d42, +0x11d44, 0x11d45, +0x11d97, 0x11d97, +0x11f41, 0x11f42, +0x11f5a, 0x11f5a, +0x13447, 0x13455, +0x1612f, 0x1612f, +0x16af0, 0x16af4, +0x16b30, 0x16b36, +0x16d6b, 0x16d6c, +0x16f8f, 0x16f9f, +0x16ff0, 0x16ff1, +0x1aff0, 0x1aff3, +0x1aff5, 0x1affb, +0x1affd, 0x1affe, +0x1cf00, 0x1cf2d, +0x1cf30, 0x1cf46, +0x1d167, 0x1d169, +0x1d16d, 0x1d172, +0x1d17b, 0x1d182, +0x1d185, 0x1d18b, +0x1d1aa, 0x1d1ad, +0x1e030, 0x1e06d, +0x1e130, 0x1e136, +0x1e2ae, 0x1e2ae, +0x1e2ec, 0x1e2ef, +0x1e5ee, 0x1e5ef, +0x1e8d0, 0x1e8d6, +0x1e944, 0x1e946, +0x1e948, 0x1e94a, +}; /* END of CR_Diacritic */ + +/* PROPERTY: 'Dives_Akuru': Script */ +static const OnigCodePoint +CR_Dives_Akuru[] = { 8, +0x11900, 0x11906, +0x11909, 0x11909, +0x1190c, 0x11913, +0x11915, 0x11916, +0x11918, 0x11935, +0x11937, 0x11938, +0x1193b, 0x11946, +0x11950, 0x11959, +}; /* END of CR_Dives_Akuru */ + +/* PROPERTY: 'Dogra': Script */ +static const OnigCodePoint +CR_Dogra[] = { 1, +0x11800, 0x1183b, +}; /* END of CR_Dogra */ + +/* PROPERTY: 'Duployan': Script */ +static const OnigCodePoint +CR_Duployan[] = { 5, +0x1bc00, 0x1bc6a, +0x1bc70, 0x1bc7c, +0x1bc80, 0x1bc88, +0x1bc90, 0x1bc99, +0x1bc9c, 0x1bc9f, +}; /* END of CR_Duployan */ + +/* PROPERTY: 'Egyptian_Hieroglyphs': Script */ +static const OnigCodePoint +CR_Egyptian_Hieroglyphs[] = { 2, +0x13000, 0x13455, +0x13460, 0x143fa, +}; /* END of CR_Egyptian_Hieroglyphs */ + +/* PROPERTY: 'Elbasan': Script */ +static const OnigCodePoint +CR_Elbasan[] = { 1, +0x10500, 0x10527, +}; /* END of CR_Elbasan */ + +/* PROPERTY: 'Elymaic': Script */ +static const OnigCodePoint +CR_Elymaic[] = { 1, +0x10fe0, 0x10ff6, +}; /* END of CR_Elymaic */ + +/* PROPERTY: 'Emoji': Emoji Property */ +static const OnigCodePoint +CR_Emoji[] = { 150, +0x0023, 0x0023, +0x002a, 0x002a, +0x0030, 0x0039, +0x00a9, 0x00a9, +0x00ae, 0x00ae, +0x203c, 0x203c, +0x2049, 0x2049, +0x2122, 0x2122, +0x2139, 0x2139, +0x2194, 0x2199, +0x21a9, 0x21aa, +0x231a, 0x231b, +0x2328, 0x2328, +0x23cf, 0x23cf, +0x23e9, 0x23f3, +0x23f8, 0x23fa, +0x24c2, 0x24c2, +0x25aa, 0x25ab, +0x25b6, 0x25b6, +0x25c0, 0x25c0, +0x25fb, 0x25fe, +0x2600, 0x2604, +0x260e, 0x260e, +0x2611, 0x2611, +0x2614, 0x2615, +0x2618, 0x2618, +0x261d, 0x261d, +0x2620, 0x2620, +0x2622, 0x2623, +0x2626, 0x2626, +0x262a, 0x262a, +0x262e, 0x262f, +0x2638, 0x263a, +0x2640, 0x2640, +0x2642, 0x2642, +0x2648, 0x2653, +0x265f, 0x2660, +0x2663, 0x2663, +0x2665, 0x2666, +0x2668, 0x2668, +0x267b, 0x267b, +0x267e, 0x267f, +0x2692, 0x2697, +0x2699, 0x2699, +0x269b, 0x269c, +0x26a0, 0x26a1, +0x26a7, 0x26a7, +0x26aa, 0x26ab, +0x26b0, 0x26b1, +0x26bd, 0x26be, +0x26c4, 0x26c5, +0x26c8, 0x26c8, +0x26ce, 0x26cf, +0x26d1, 0x26d1, +0x26d3, 0x26d4, +0x26e9, 0x26ea, +0x26f0, 0x26f5, +0x26f7, 0x26fa, +0x26fd, 0x26fd, +0x2702, 0x2702, +0x2705, 0x2705, +0x2708, 0x270d, +0x270f, 0x270f, +0x2712, 0x2712, +0x2714, 0x2714, +0x2716, 0x2716, +0x271d, 0x271d, +0x2721, 0x2721, +0x2728, 0x2728, +0x2733, 0x2734, +0x2744, 0x2744, +0x2747, 0x2747, +0x274c, 0x274c, +0x274e, 0x274e, +0x2753, 0x2755, +0x2757, 0x2757, +0x2763, 0x2764, +0x2795, 0x2797, +0x27a1, 0x27a1, +0x27b0, 0x27b0, +0x27bf, 0x27bf, +0x2934, 0x2935, +0x2b05, 0x2b07, +0x2b1b, 0x2b1c, +0x2b50, 0x2b50, +0x2b55, 0x2b55, +0x3030, 0x3030, +0x303d, 0x303d, +0x3297, 0x3297, +0x3299, 0x3299, +0x1f004, 0x1f004, +0x1f0cf, 0x1f0cf, +0x1f170, 0x1f171, +0x1f17e, 0x1f17f, +0x1f18e, 0x1f18e, +0x1f191, 0x1f19a, +0x1f1e6, 0x1f1ff, +0x1f201, 0x1f202, +0x1f21a, 0x1f21a, +0x1f22f, 0x1f22f, +0x1f232, 0x1f23a, +0x1f250, 0x1f251, +0x1f300, 0x1f321, +0x1f324, 0x1f393, +0x1f396, 0x1f397, +0x1f399, 0x1f39b, +0x1f39e, 0x1f3f0, +0x1f3f3, 0x1f3f5, +0x1f3f7, 0x1f4fd, +0x1f4ff, 0x1f53d, +0x1f549, 0x1f54e, +0x1f550, 0x1f567, +0x1f56f, 0x1f570, +0x1f573, 0x1f57a, +0x1f587, 0x1f587, +0x1f58a, 0x1f58d, +0x1f590, 0x1f590, +0x1f595, 0x1f596, +0x1f5a4, 0x1f5a5, +0x1f5a8, 0x1f5a8, +0x1f5b1, 0x1f5b2, +0x1f5bc, 0x1f5bc, +0x1f5c2, 0x1f5c4, +0x1f5d1, 0x1f5d3, +0x1f5dc, 0x1f5de, +0x1f5e1, 0x1f5e1, +0x1f5e3, 0x1f5e3, +0x1f5e8, 0x1f5e8, +0x1f5ef, 0x1f5ef, +0x1f5f3, 0x1f5f3, +0x1f5fa, 0x1f64f, +0x1f680, 0x1f6c5, +0x1f6cb, 0x1f6d2, +0x1f6d5, 0x1f6d7, +0x1f6dc, 0x1f6e5, +0x1f6e9, 0x1f6e9, +0x1f6eb, 0x1f6ec, +0x1f6f0, 0x1f6f0, +0x1f6f3, 0x1f6fc, +0x1f7e0, 0x1f7eb, +0x1f7f0, 0x1f7f0, +0x1f90c, 0x1f93a, +0x1f93c, 0x1f945, +0x1f947, 0x1f9ff, +0x1fa70, 0x1fa7c, +0x1fa80, 0x1fa89, +0x1fa8f, 0x1fac6, +0x1face, 0x1fadc, +0x1fadf, 0x1fae9, +0x1faf0, 0x1faf8, +}; /* END of CR_Emoji */ + +/* PROPERTY: 'Emoji_Component': Emoji Property */ +static const OnigCodePoint +CR_Emoji_Component[] = { 10, +0x0023, 0x0023, +0x002a, 0x002a, +0x0030, 0x0039, +0x200d, 0x200d, +0x20e3, 0x20e3, +0xfe0f, 0xfe0f, +0x1f1e6, 0x1f1ff, +0x1f3fb, 0x1f3ff, +0x1f9b0, 0x1f9b3, +0xe0020, 0xe007f, +}; /* END of CR_Emoji_Component */ + +/* PROPERTY: 'Emoji_Modifier': Emoji Property */ +static const OnigCodePoint +CR_Emoji_Modifier[] = { 1, +0x1f3fb, 0x1f3ff, +}; /* END of CR_Emoji_Modifier */ + +/* PROPERTY: 'Emoji_Modifier_Base': Emoji Property */ +static const OnigCodePoint +CR_Emoji_Modifier_Base[] = { 40, +0x261d, 0x261d, +0x26f9, 0x26f9, +0x270a, 0x270d, +0x1f385, 0x1f385, +0x1f3c2, 0x1f3c4, +0x1f3c7, 0x1f3c7, +0x1f3ca, 0x1f3cc, +0x1f442, 0x1f443, +0x1f446, 0x1f450, +0x1f466, 0x1f478, +0x1f47c, 0x1f47c, +0x1f481, 0x1f483, +0x1f485, 0x1f487, +0x1f48f, 0x1f48f, +0x1f491, 0x1f491, +0x1f4aa, 0x1f4aa, +0x1f574, 0x1f575, +0x1f57a, 0x1f57a, +0x1f590, 0x1f590, +0x1f595, 0x1f596, +0x1f645, 0x1f647, +0x1f64b, 0x1f64f, +0x1f6a3, 0x1f6a3, +0x1f6b4, 0x1f6b6, +0x1f6c0, 0x1f6c0, +0x1f6cc, 0x1f6cc, +0x1f90c, 0x1f90c, +0x1f90f, 0x1f90f, +0x1f918, 0x1f91f, +0x1f926, 0x1f926, +0x1f930, 0x1f939, +0x1f93c, 0x1f93e, +0x1f977, 0x1f977, +0x1f9b5, 0x1f9b6, +0x1f9b8, 0x1f9b9, +0x1f9bb, 0x1f9bb, +0x1f9cd, 0x1f9cf, +0x1f9d1, 0x1f9dd, +0x1fac3, 0x1fac5, +0x1faf0, 0x1faf8, +}; /* END of CR_Emoji_Modifier_Base */ + +/* PROPERTY: 'Emoji_Presentation': Emoji Property */ +static const OnigCodePoint +CR_Emoji_Presentation[] = { 80, +0x231a, 0x231b, +0x23e9, 0x23ec, +0x23f0, 0x23f0, +0x23f3, 0x23f3, +0x25fd, 0x25fe, +0x2614, 0x2615, +0x2648, 0x2653, +0x267f, 0x267f, +0x2693, 0x2693, +0x26a1, 0x26a1, +0x26aa, 0x26ab, +0x26bd, 0x26be, +0x26c4, 0x26c5, +0x26ce, 0x26ce, +0x26d4, 0x26d4, +0x26ea, 0x26ea, +0x26f2, 0x26f3, +0x26f5, 0x26f5, +0x26fa, 0x26fa, +0x26fd, 0x26fd, +0x2705, 0x2705, +0x270a, 0x270b, +0x2728, 0x2728, +0x274c, 0x274c, +0x274e, 0x274e, +0x2753, 0x2755, +0x2757, 0x2757, +0x2795, 0x2797, +0x27b0, 0x27b0, +0x27bf, 0x27bf, +0x2b1b, 0x2b1c, +0x2b50, 0x2b50, +0x2b55, 0x2b55, +0x1f004, 0x1f004, +0x1f0cf, 0x1f0cf, +0x1f18e, 0x1f18e, +0x1f191, 0x1f19a, +0x1f1e6, 0x1f1ff, +0x1f201, 0x1f201, +0x1f21a, 0x1f21a, +0x1f22f, 0x1f22f, +0x1f232, 0x1f236, +0x1f238, 0x1f23a, +0x1f250, 0x1f251, +0x1f300, 0x1f320, +0x1f32d, 0x1f335, +0x1f337, 0x1f37c, +0x1f37e, 0x1f393, +0x1f3a0, 0x1f3ca, +0x1f3cf, 0x1f3d3, +0x1f3e0, 0x1f3f0, +0x1f3f4, 0x1f3f4, +0x1f3f8, 0x1f43e, +0x1f440, 0x1f440, +0x1f442, 0x1f4fc, +0x1f4ff, 0x1f53d, +0x1f54b, 0x1f54e, +0x1f550, 0x1f567, +0x1f57a, 0x1f57a, +0x1f595, 0x1f596, +0x1f5a4, 0x1f5a4, +0x1f5fb, 0x1f64f, +0x1f680, 0x1f6c5, +0x1f6cc, 0x1f6cc, +0x1f6d0, 0x1f6d2, +0x1f6d5, 0x1f6d7, +0x1f6dc, 0x1f6df, +0x1f6eb, 0x1f6ec, +0x1f6f4, 0x1f6fc, +0x1f7e0, 0x1f7eb, +0x1f7f0, 0x1f7f0, +0x1f90c, 0x1f93a, +0x1f93c, 0x1f945, +0x1f947, 0x1f9ff, +0x1fa70, 0x1fa7c, +0x1fa80, 0x1fa89, +0x1fa8f, 0x1fac6, +0x1face, 0x1fadc, +0x1fadf, 0x1fae9, +0x1faf0, 0x1faf8, +}; /* END of CR_Emoji_Presentation */ + +/* PROPERTY: 'Ethiopic': Script */ +static const OnigCodePoint +CR_Ethiopic[] = { 36, +0x1200, 0x1248, +0x124a, 0x124d, +0x1250, 0x1256, +0x1258, 0x1258, +0x125a, 0x125d, +0x1260, 0x1288, +0x128a, 0x128d, +0x1290, 0x12b0, +0x12b2, 0x12b5, +0x12b8, 0x12be, +0x12c0, 0x12c0, +0x12c2, 0x12c5, +0x12c8, 0x12d6, +0x12d8, 0x1310, +0x1312, 0x1315, +0x1318, 0x135a, +0x135d, 0x137c, +0x1380, 0x1399, +0x2d80, 0x2d96, +0x2da0, 0x2da6, +0x2da8, 0x2dae, +0x2db0, 0x2db6, +0x2db8, 0x2dbe, +0x2dc0, 0x2dc6, +0x2dc8, 0x2dce, +0x2dd0, 0x2dd6, +0x2dd8, 0x2dde, +0xab01, 0xab06, +0xab09, 0xab0e, +0xab11, 0xab16, +0xab20, 0xab26, +0xab28, 0xab2e, +0x1e7e0, 0x1e7e6, +0x1e7e8, 0x1e7eb, +0x1e7ed, 0x1e7ee, +0x1e7f0, 0x1e7fe, +}; /* END of CR_Ethiopic */ + +/* PROPERTY: 'Extended_Pictographic': Emoji Property */ +static const OnigCodePoint +CR_Extended_Pictographic[] = { 78, +0x00a9, 0x00a9, +0x00ae, 0x00ae, +0x203c, 0x203c, +0x2049, 0x2049, +0x2122, 0x2122, +0x2139, 0x2139, +0x2194, 0x2199, +0x21a9, 0x21aa, +0x231a, 0x231b, +0x2328, 0x2328, +0x2388, 0x2388, +0x23cf, 0x23cf, +0x23e9, 0x23f3, +0x23f8, 0x23fa, +0x24c2, 0x24c2, +0x25aa, 0x25ab, +0x25b6, 0x25b6, +0x25c0, 0x25c0, +0x25fb, 0x25fe, +0x2600, 0x2605, +0x2607, 0x2612, +0x2614, 0x2685, +0x2690, 0x2705, +0x2708, 0x2712, +0x2714, 0x2714, +0x2716, 0x2716, +0x271d, 0x271d, +0x2721, 0x2721, +0x2728, 0x2728, +0x2733, 0x2734, +0x2744, 0x2744, +0x2747, 0x2747, +0x274c, 0x274c, +0x274e, 0x274e, +0x2753, 0x2755, +0x2757, 0x2757, +0x2763, 0x2767, +0x2795, 0x2797, +0x27a1, 0x27a1, +0x27b0, 0x27b0, +0x27bf, 0x27bf, +0x2934, 0x2935, +0x2b05, 0x2b07, +0x2b1b, 0x2b1c, +0x2b50, 0x2b50, +0x2b55, 0x2b55, +0x3030, 0x3030, +0x303d, 0x303d, +0x3297, 0x3297, +0x3299, 0x3299, +0x1f000, 0x1f0ff, +0x1f10d, 0x1f10f, +0x1f12f, 0x1f12f, +0x1f16c, 0x1f171, +0x1f17e, 0x1f17f, +0x1f18e, 0x1f18e, +0x1f191, 0x1f19a, +0x1f1ad, 0x1f1e5, +0x1f201, 0x1f20f, +0x1f21a, 0x1f21a, +0x1f22f, 0x1f22f, +0x1f232, 0x1f23a, +0x1f23c, 0x1f23f, +0x1f249, 0x1f3fa, +0x1f400, 0x1f53d, +0x1f546, 0x1f64f, +0x1f680, 0x1f6ff, +0x1f774, 0x1f77f, +0x1f7d5, 0x1f7ff, +0x1f80c, 0x1f80f, +0x1f848, 0x1f84f, +0x1f85a, 0x1f85f, +0x1f888, 0x1f88f, +0x1f8ae, 0x1f8ff, +0x1f90c, 0x1f93a, +0x1f93c, 0x1f945, +0x1f947, 0x1faff, +0x1fc00, 0x1fffd, +}; /* END of CR_Extended_Pictographic */ + +/* PROPERTY: 'Extender': Binary Property */ +static const OnigCodePoint +CR_Extender[] = { 41, +0x00b7, 0x00b7, +0x02d0, 0x02d1, +0x0640, 0x0640, +0x07fa, 0x07fa, +0x0a71, 0x0a71, +0x0afb, 0x0afb, +0x0b55, 0x0b55, +0x0e46, 0x0e46, +0x0ec6, 0x0ec6, +0x180a, 0x180a, +0x1843, 0x1843, +0x1aa7, 0x1aa7, +0x1c36, 0x1c36, +0x1c7b, 0x1c7b, +0x3005, 0x3005, +0x3031, 0x3035, +0x309d, 0x309e, +0x30fc, 0x30fe, +0xa015, 0xa015, +0xa60c, 0xa60c, +0xa9cf, 0xa9cf, +0xa9e6, 0xa9e6, +0xaa70, 0xaa70, +0xaadd, 0xaadd, +0xaaf3, 0xaaf4, +0xff70, 0xff70, +0x10781, 0x10782, +0x10d4e, 0x10d4e, +0x10d6a, 0x10d6a, +0x10d6f, 0x10d6f, +0x11237, 0x11237, +0x1135d, 0x1135d, +0x113d2, 0x113d3, +0x115c6, 0x115c8, +0x11a98, 0x11a98, +0x16b42, 0x16b43, +0x16fe0, 0x16fe1, +0x16fe3, 0x16fe3, +0x1e13c, 0x1e13d, +0x1e5ef, 0x1e5ef, +0x1e944, 0x1e946, +}; /* END of CR_Extender */ + +/* PROPERTY: 'Garay': Script */ +static const OnigCodePoint +CR_Garay[] = { 3, +0x10d40, 0x10d65, +0x10d69, 0x10d85, +0x10d8e, 0x10d8f, +}; /* END of CR_Garay */ + +/* PROPERTY: 'Georgian': Script */ +static const OnigCodePoint +CR_Georgian[] = { 10, +0x10a0, 0x10c5, +0x10c7, 0x10c7, +0x10cd, 0x10cd, +0x10d0, 0x10fa, +0x10fc, 0x10ff, +0x1c90, 0x1cba, +0x1cbd, 0x1cbf, +0x2d00, 0x2d25, +0x2d27, 0x2d27, +0x2d2d, 0x2d2d, +}; /* END of CR_Georgian */ + +/* PROPERTY: 'Glagolitic': Script */ +static const OnigCodePoint +CR_Glagolitic[] = { 6, +0x2c00, 0x2c5f, +0x1e000, 0x1e006, +0x1e008, 0x1e018, +0x1e01b, 0x1e021, +0x1e023, 0x1e024, +0x1e026, 0x1e02a, +}; /* END of CR_Glagolitic */ + +/* PROPERTY: 'Gothic': Script */ +static const OnigCodePoint +CR_Gothic[] = { 1, +0x10330, 0x1034a, +}; /* END of CR_Gothic */ + +/* PROPERTY: 'Grantha': Script */ +static const OnigCodePoint +CR_Grantha[] = { 15, +0x11300, 0x11303, +0x11305, 0x1130c, +0x1130f, 0x11310, +0x11313, 0x11328, +0x1132a, 0x11330, +0x11332, 0x11333, +0x11335, 0x11339, +0x1133c, 0x11344, +0x11347, 0x11348, +0x1134b, 0x1134d, +0x11350, 0x11350, +0x11357, 0x11357, +0x1135d, 0x11363, +0x11366, 0x1136c, +0x11370, 0x11374, +}; /* END of CR_Grantha */ + +/* PROPERTY: 'Grapheme_Base': Derived Property */ +static const OnigCodePoint +CR_Grapheme_Base[] = { 894, +0x0020, 0x007e, +0x00a0, 0x00ac, +0x00ae, 0x02ff, +0x0370, 0x0377, +0x037a, 0x037f, +0x0384, 0x038a, +0x038c, 0x038c, +0x038e, 0x03a1, +0x03a3, 0x0482, +0x048a, 0x052f, +0x0531, 0x0556, +0x0559, 0x058a, +0x058d, 0x058f, +0x05be, 0x05be, +0x05c0, 0x05c0, +0x05c3, 0x05c3, +0x05c6, 0x05c6, +0x05d0, 0x05ea, +0x05ef, 0x05f4, +0x0606, 0x060f, +0x061b, 0x061b, +0x061d, 0x064a, +0x0660, 0x066f, +0x0671, 0x06d5, +0x06de, 0x06de, +0x06e5, 0x06e6, +0x06e9, 0x06e9, +0x06ee, 0x070d, +0x0710, 0x0710, +0x0712, 0x072f, +0x074d, 0x07a5, +0x07b1, 0x07b1, +0x07c0, 0x07ea, +0x07f4, 0x07fa, +0x07fe, 0x0815, +0x081a, 0x081a, +0x0824, 0x0824, +0x0828, 0x0828, +0x0830, 0x083e, +0x0840, 0x0858, +0x085e, 0x085e, +0x0860, 0x086a, +0x0870, 0x088e, +0x08a0, 0x08c9, +0x0903, 0x0939, +0x093b, 0x093b, +0x093d, 0x0940, +0x0949, 0x094c, +0x094e, 0x0950, +0x0958, 0x0961, +0x0964, 0x0980, +0x0982, 0x0983, +0x0985, 0x098c, +0x098f, 0x0990, +0x0993, 0x09a8, +0x09aa, 0x09b0, +0x09b2, 0x09b2, +0x09b6, 0x09b9, +0x09bd, 0x09bd, +0x09bf, 0x09c0, +0x09c7, 0x09c8, +0x09cb, 0x09cc, +0x09ce, 0x09ce, +0x09dc, 0x09dd, +0x09df, 0x09e1, +0x09e6, 0x09fd, +0x0a03, 0x0a03, +0x0a05, 0x0a0a, +0x0a0f, 0x0a10, +0x0a13, 0x0a28, +0x0a2a, 0x0a30, +0x0a32, 0x0a33, +0x0a35, 0x0a36, +0x0a38, 0x0a39, +0x0a3e, 0x0a40, +0x0a59, 0x0a5c, +0x0a5e, 0x0a5e, +0x0a66, 0x0a6f, +0x0a72, 0x0a74, +0x0a76, 0x0a76, +0x0a83, 0x0a83, +0x0a85, 0x0a8d, +0x0a8f, 0x0a91, +0x0a93, 0x0aa8, +0x0aaa, 0x0ab0, +0x0ab2, 0x0ab3, +0x0ab5, 0x0ab9, +0x0abd, 0x0ac0, +0x0ac9, 0x0ac9, +0x0acb, 0x0acc, +0x0ad0, 0x0ad0, +0x0ae0, 0x0ae1, +0x0ae6, 0x0af1, +0x0af9, 0x0af9, +0x0b02, 0x0b03, +0x0b05, 0x0b0c, +0x0b0f, 0x0b10, +0x0b13, 0x0b28, +0x0b2a, 0x0b30, +0x0b32, 0x0b33, +0x0b35, 0x0b39, +0x0b3d, 0x0b3d, +0x0b40, 0x0b40, +0x0b47, 0x0b48, +0x0b4b, 0x0b4c, +0x0b5c, 0x0b5d, +0x0b5f, 0x0b61, +0x0b66, 0x0b77, +0x0b83, 0x0b83, +0x0b85, 0x0b8a, +0x0b8e, 0x0b90, +0x0b92, 0x0b95, +0x0b99, 0x0b9a, +0x0b9c, 0x0b9c, +0x0b9e, 0x0b9f, +0x0ba3, 0x0ba4, +0x0ba8, 0x0baa, +0x0bae, 0x0bb9, +0x0bbf, 0x0bbf, +0x0bc1, 0x0bc2, +0x0bc6, 0x0bc8, +0x0bca, 0x0bcc, +0x0bd0, 0x0bd0, +0x0be6, 0x0bfa, +0x0c01, 0x0c03, +0x0c05, 0x0c0c, +0x0c0e, 0x0c10, +0x0c12, 0x0c28, +0x0c2a, 0x0c39, +0x0c3d, 0x0c3d, +0x0c41, 0x0c44, +0x0c58, 0x0c5a, +0x0c5d, 0x0c5d, +0x0c60, 0x0c61, +0x0c66, 0x0c6f, +0x0c77, 0x0c80, +0x0c82, 0x0c8c, +0x0c8e, 0x0c90, +0x0c92, 0x0ca8, +0x0caa, 0x0cb3, +0x0cb5, 0x0cb9, +0x0cbd, 0x0cbe, +0x0cc1, 0x0cc1, +0x0cc3, 0x0cc4, +0x0cdd, 0x0cde, +0x0ce0, 0x0ce1, +0x0ce6, 0x0cef, +0x0cf1, 0x0cf3, +0x0d02, 0x0d0c, +0x0d0e, 0x0d10, +0x0d12, 0x0d3a, +0x0d3d, 0x0d3d, +0x0d3f, 0x0d40, +0x0d46, 0x0d48, +0x0d4a, 0x0d4c, +0x0d4e, 0x0d4f, +0x0d54, 0x0d56, +0x0d58, 0x0d61, +0x0d66, 0x0d7f, +0x0d82, 0x0d83, +0x0d85, 0x0d96, +0x0d9a, 0x0db1, +0x0db3, 0x0dbb, +0x0dbd, 0x0dbd, +0x0dc0, 0x0dc6, +0x0dd0, 0x0dd1, +0x0dd8, 0x0dde, +0x0de6, 0x0def, +0x0df2, 0x0df4, +0x0e01, 0x0e30, +0x0e32, 0x0e33, +0x0e3f, 0x0e46, +0x0e4f, 0x0e5b, +0x0e81, 0x0e82, +0x0e84, 0x0e84, +0x0e86, 0x0e8a, +0x0e8c, 0x0ea3, +0x0ea5, 0x0ea5, +0x0ea7, 0x0eb0, +0x0eb2, 0x0eb3, +0x0ebd, 0x0ebd, +0x0ec0, 0x0ec4, +0x0ec6, 0x0ec6, +0x0ed0, 0x0ed9, +0x0edc, 0x0edf, +0x0f00, 0x0f17, +0x0f1a, 0x0f34, +0x0f36, 0x0f36, +0x0f38, 0x0f38, +0x0f3a, 0x0f47, +0x0f49, 0x0f6c, +0x0f7f, 0x0f7f, +0x0f85, 0x0f85, +0x0f88, 0x0f8c, +0x0fbe, 0x0fc5, +0x0fc7, 0x0fcc, +0x0fce, 0x0fda, +0x1000, 0x102c, +0x1031, 0x1031, +0x1038, 0x1038, +0x103b, 0x103c, +0x103f, 0x1057, +0x105a, 0x105d, +0x1061, 0x1070, +0x1075, 0x1081, +0x1083, 0x1084, +0x1087, 0x108c, +0x108e, 0x109c, +0x109e, 0x10c5, +0x10c7, 0x10c7, +0x10cd, 0x10cd, +0x10d0, 0x1248, +0x124a, 0x124d, +0x1250, 0x1256, +0x1258, 0x1258, +0x125a, 0x125d, +0x1260, 0x1288, +0x128a, 0x128d, +0x1290, 0x12b0, +0x12b2, 0x12b5, +0x12b8, 0x12be, +0x12c0, 0x12c0, +0x12c2, 0x12c5, +0x12c8, 0x12d6, +0x12d8, 0x1310, +0x1312, 0x1315, +0x1318, 0x135a, +0x1360, 0x137c, +0x1380, 0x1399, +0x13a0, 0x13f5, +0x13f8, 0x13fd, +0x1400, 0x169c, +0x16a0, 0x16f8, +0x1700, 0x1711, +0x171f, 0x1731, +0x1735, 0x1736, +0x1740, 0x1751, +0x1760, 0x176c, +0x176e, 0x1770, +0x1780, 0x17b3, +0x17b6, 0x17b6, +0x17be, 0x17c5, +0x17c7, 0x17c8, +0x17d4, 0x17dc, +0x17e0, 0x17e9, +0x17f0, 0x17f9, +0x1800, 0x180a, +0x1810, 0x1819, +0x1820, 0x1878, +0x1880, 0x1884, +0x1887, 0x18a8, +0x18aa, 0x18aa, +0x18b0, 0x18f5, +0x1900, 0x191e, +0x1923, 0x1926, +0x1929, 0x192b, +0x1930, 0x1931, +0x1933, 0x1938, +0x1940, 0x1940, +0x1944, 0x196d, +0x1970, 0x1974, +0x1980, 0x19ab, +0x19b0, 0x19c9, +0x19d0, 0x19da, +0x19de, 0x1a16, +0x1a19, 0x1a1a, +0x1a1e, 0x1a55, +0x1a57, 0x1a57, +0x1a61, 0x1a61, +0x1a63, 0x1a64, +0x1a6d, 0x1a72, +0x1a80, 0x1a89, +0x1a90, 0x1a99, +0x1aa0, 0x1aad, +0x1b04, 0x1b33, +0x1b3e, 0x1b41, +0x1b45, 0x1b4c, +0x1b4e, 0x1b6a, +0x1b74, 0x1b7f, +0x1b82, 0x1ba1, +0x1ba6, 0x1ba7, +0x1bae, 0x1be5, +0x1be7, 0x1be7, +0x1bea, 0x1bec, +0x1bee, 0x1bee, +0x1bfc, 0x1c2b, +0x1c34, 0x1c35, +0x1c3b, 0x1c49, +0x1c4d, 0x1c8a, +0x1c90, 0x1cba, +0x1cbd, 0x1cc7, +0x1cd3, 0x1cd3, +0x1ce1, 0x1ce1, +0x1ce9, 0x1cec, +0x1cee, 0x1cf3, +0x1cf5, 0x1cf7, +0x1cfa, 0x1cfa, +0x1d00, 0x1dbf, +0x1e00, 0x1f15, +0x1f18, 0x1f1d, +0x1f20, 0x1f45, +0x1f48, 0x1f4d, +0x1f50, 0x1f57, +0x1f59, 0x1f59, +0x1f5b, 0x1f5b, +0x1f5d, 0x1f5d, +0x1f5f, 0x1f7d, +0x1f80, 0x1fb4, +0x1fb6, 0x1fc4, +0x1fc6, 0x1fd3, +0x1fd6, 0x1fdb, +0x1fdd, 0x1fef, +0x1ff2, 0x1ff4, +0x1ff6, 0x1ffe, +0x2000, 0x200a, +0x2010, 0x2027, +0x202f, 0x205f, +0x2070, 0x2071, +0x2074, 0x208e, +0x2090, 0x209c, +0x20a0, 0x20c0, +0x2100, 0x218b, +0x2190, 0x2429, +0x2440, 0x244a, +0x2460, 0x2b73, +0x2b76, 0x2b95, +0x2b97, 0x2cee, +0x2cf2, 0x2cf3, +0x2cf9, 0x2d25, +0x2d27, 0x2d27, +0x2d2d, 0x2d2d, +0x2d30, 0x2d67, +0x2d6f, 0x2d70, +0x2d80, 0x2d96, +0x2da0, 0x2da6, +0x2da8, 0x2dae, +0x2db0, 0x2db6, +0x2db8, 0x2dbe, +0x2dc0, 0x2dc6, +0x2dc8, 0x2dce, +0x2dd0, 0x2dd6, +0x2dd8, 0x2dde, +0x2e00, 0x2e5d, +0x2e80, 0x2e99, +0x2e9b, 0x2ef3, +0x2f00, 0x2fd5, +0x2ff0, 0x3029, +0x3030, 0x303f, +0x3041, 0x3096, +0x309b, 0x30ff, +0x3105, 0x312f, +0x3131, 0x318e, +0x3190, 0x31e5, +0x31ef, 0x321e, +0x3220, 0xa48c, +0xa490, 0xa4c6, +0xa4d0, 0xa62b, +0xa640, 0xa66e, +0xa673, 0xa673, +0xa67e, 0xa69d, +0xa6a0, 0xa6ef, +0xa6f2, 0xa6f7, +0xa700, 0xa7cd, +0xa7d0, 0xa7d1, +0xa7d3, 0xa7d3, +0xa7d5, 0xa7dc, +0xa7f2, 0xa801, +0xa803, 0xa805, +0xa807, 0xa80a, +0xa80c, 0xa824, +0xa827, 0xa82b, +0xa830, 0xa839, +0xa840, 0xa877, +0xa880, 0xa8c3, +0xa8ce, 0xa8d9, +0xa8f2, 0xa8fe, +0xa900, 0xa925, +0xa92e, 0xa946, +0xa952, 0xa952, +0xa95f, 0xa97c, +0xa983, 0xa9b2, +0xa9b4, 0xa9b5, +0xa9ba, 0xa9bb, +0xa9be, 0xa9bf, +0xa9c1, 0xa9cd, +0xa9cf, 0xa9d9, +0xa9de, 0xa9e4, +0xa9e6, 0xa9fe, +0xaa00, 0xaa28, +0xaa2f, 0xaa30, +0xaa33, 0xaa34, +0xaa40, 0xaa42, +0xaa44, 0xaa4b, +0xaa4d, 0xaa4d, +0xaa50, 0xaa59, +0xaa5c, 0xaa7b, +0xaa7d, 0xaaaf, +0xaab1, 0xaab1, +0xaab5, 0xaab6, +0xaab9, 0xaabd, +0xaac0, 0xaac0, +0xaac2, 0xaac2, +0xaadb, 0xaaeb, +0xaaee, 0xaaf5, +0xab01, 0xab06, +0xab09, 0xab0e, +0xab11, 0xab16, +0xab20, 0xab26, +0xab28, 0xab2e, +0xab30, 0xab6b, +0xab70, 0xabe4, +0xabe6, 0xabe7, +0xabe9, 0xabec, +0xabf0, 0xabf9, +0xac00, 0xd7a3, +0xd7b0, 0xd7c6, +0xd7cb, 0xd7fb, +0xf900, 0xfa6d, +0xfa70, 0xfad9, +0xfb00, 0xfb06, +0xfb13, 0xfb17, +0xfb1d, 0xfb1d, +0xfb1f, 0xfb36, +0xfb38, 0xfb3c, +0xfb3e, 0xfb3e, +0xfb40, 0xfb41, +0xfb43, 0xfb44, +0xfb46, 0xfbc2, +0xfbd3, 0xfd8f, +0xfd92, 0xfdc7, +0xfdcf, 0xfdcf, +0xfdf0, 0xfdff, +0xfe10, 0xfe19, +0xfe30, 0xfe52, +0xfe54, 0xfe66, +0xfe68, 0xfe6b, +0xfe70, 0xfe74, +0xfe76, 0xfefc, +0xff01, 0xff9d, +0xffa0, 0xffbe, +0xffc2, 0xffc7, +0xffca, 0xffcf, +0xffd2, 0xffd7, +0xffda, 0xffdc, +0xffe0, 0xffe6, +0xffe8, 0xffee, +0xfffc, 0xfffd, +0x10000, 0x1000b, +0x1000d, 0x10026, +0x10028, 0x1003a, +0x1003c, 0x1003d, +0x1003f, 0x1004d, +0x10050, 0x1005d, +0x10080, 0x100fa, +0x10100, 0x10102, +0x10107, 0x10133, +0x10137, 0x1018e, +0x10190, 0x1019c, +0x101a0, 0x101a0, +0x101d0, 0x101fc, +0x10280, 0x1029c, +0x102a0, 0x102d0, +0x102e1, 0x102fb, +0x10300, 0x10323, +0x1032d, 0x1034a, +0x10350, 0x10375, +0x10380, 0x1039d, +0x1039f, 0x103c3, +0x103c8, 0x103d5, +0x10400, 0x1049d, +0x104a0, 0x104a9, +0x104b0, 0x104d3, +0x104d8, 0x104fb, +0x10500, 0x10527, +0x10530, 0x10563, +0x1056f, 0x1057a, +0x1057c, 0x1058a, +0x1058c, 0x10592, +0x10594, 0x10595, +0x10597, 0x105a1, +0x105a3, 0x105b1, +0x105b3, 0x105b9, +0x105bb, 0x105bc, +0x105c0, 0x105f3, +0x10600, 0x10736, +0x10740, 0x10755, +0x10760, 0x10767, +0x10780, 0x10785, +0x10787, 0x107b0, +0x107b2, 0x107ba, +0x10800, 0x10805, +0x10808, 0x10808, +0x1080a, 0x10835, +0x10837, 0x10838, +0x1083c, 0x1083c, +0x1083f, 0x10855, +0x10857, 0x1089e, +0x108a7, 0x108af, +0x108e0, 0x108f2, +0x108f4, 0x108f5, +0x108fb, 0x1091b, +0x1091f, 0x10939, +0x1093f, 0x1093f, +0x10980, 0x109b7, +0x109bc, 0x109cf, +0x109d2, 0x10a00, +0x10a10, 0x10a13, +0x10a15, 0x10a17, +0x10a19, 0x10a35, +0x10a40, 0x10a48, +0x10a50, 0x10a58, +0x10a60, 0x10a9f, +0x10ac0, 0x10ae4, +0x10aeb, 0x10af6, +0x10b00, 0x10b35, +0x10b39, 0x10b55, +0x10b58, 0x10b72, +0x10b78, 0x10b91, +0x10b99, 0x10b9c, +0x10ba9, 0x10baf, +0x10c00, 0x10c48, +0x10c80, 0x10cb2, +0x10cc0, 0x10cf2, +0x10cfa, 0x10d23, +0x10d30, 0x10d39, +0x10d40, 0x10d65, +0x10d6e, 0x10d85, +0x10d8e, 0x10d8f, +0x10e60, 0x10e7e, +0x10e80, 0x10ea9, +0x10ead, 0x10ead, +0x10eb0, 0x10eb1, +0x10ec2, 0x10ec4, +0x10f00, 0x10f27, +0x10f30, 0x10f45, +0x10f51, 0x10f59, +0x10f70, 0x10f81, +0x10f86, 0x10f89, +0x10fb0, 0x10fcb, +0x10fe0, 0x10ff6, +0x11000, 0x11000, +0x11002, 0x11037, +0x11047, 0x1104d, +0x11052, 0x1106f, +0x11071, 0x11072, +0x11075, 0x11075, +0x11082, 0x110b2, +0x110b7, 0x110b8, +0x110bb, 0x110bc, +0x110be, 0x110c1, +0x110d0, 0x110e8, +0x110f0, 0x110f9, +0x11103, 0x11126, +0x1112c, 0x1112c, +0x11136, 0x11147, +0x11150, 0x11172, +0x11174, 0x11176, +0x11182, 0x111b5, +0x111bf, 0x111bf, +0x111c1, 0x111c8, +0x111cd, 0x111ce, +0x111d0, 0x111df, +0x111e1, 0x111f4, +0x11200, 0x11211, +0x11213, 0x1122e, +0x11232, 0x11233, +0x11238, 0x1123d, +0x1123f, 0x11240, +0x11280, 0x11286, +0x11288, 0x11288, +0x1128a, 0x1128d, +0x1128f, 0x1129d, +0x1129f, 0x112a9, +0x112b0, 0x112de, +0x112e0, 0x112e2, +0x112f0, 0x112f9, +0x11302, 0x11303, +0x11305, 0x1130c, +0x1130f, 0x11310, +0x11313, 0x11328, +0x1132a, 0x11330, +0x11332, 0x11333, +0x11335, 0x11339, +0x1133d, 0x1133d, +0x1133f, 0x1133f, +0x11341, 0x11344, +0x11347, 0x11348, +0x1134b, 0x1134c, +0x11350, 0x11350, +0x1135d, 0x11363, +0x11380, 0x11389, +0x1138b, 0x1138b, +0x1138e, 0x1138e, +0x11390, 0x113b5, +0x113b7, 0x113b7, +0x113b9, 0x113ba, +0x113ca, 0x113ca, +0x113cc, 0x113cd, +0x113d1, 0x113d1, +0x113d3, 0x113d5, +0x113d7, 0x113d8, +0x11400, 0x11437, +0x11440, 0x11441, +0x11445, 0x11445, +0x11447, 0x1145b, +0x1145d, 0x1145d, +0x1145f, 0x11461, +0x11480, 0x114af, +0x114b1, 0x114b2, +0x114b9, 0x114b9, +0x114bb, 0x114bc, +0x114be, 0x114be, +0x114c1, 0x114c1, +0x114c4, 0x114c7, +0x114d0, 0x114d9, +0x11580, 0x115ae, +0x115b0, 0x115b1, +0x115b8, 0x115bb, +0x115be, 0x115be, +0x115c1, 0x115db, +0x11600, 0x11632, +0x1163b, 0x1163c, +0x1163e, 0x1163e, +0x11641, 0x11644, +0x11650, 0x11659, +0x11660, 0x1166c, +0x11680, 0x116aa, +0x116ac, 0x116ac, +0x116ae, 0x116af, +0x116b8, 0x116b9, +0x116c0, 0x116c9, +0x116d0, 0x116e3, +0x11700, 0x1171a, +0x1171e, 0x1171e, +0x11720, 0x11721, +0x11726, 0x11726, +0x11730, 0x11746, +0x11800, 0x1182e, +0x11838, 0x11838, +0x1183b, 0x1183b, +0x118a0, 0x118f2, +0x118ff, 0x11906, +0x11909, 0x11909, +0x1190c, 0x11913, +0x11915, 0x11916, +0x11918, 0x1192f, +0x11931, 0x11935, +0x11937, 0x11938, +0x1193f, 0x11942, +0x11944, 0x11946, +0x11950, 0x11959, +0x119a0, 0x119a7, +0x119aa, 0x119d3, +0x119dc, 0x119df, +0x119e1, 0x119e4, +0x11a00, 0x11a00, +0x11a0b, 0x11a32, +0x11a39, 0x11a3a, +0x11a3f, 0x11a46, +0x11a50, 0x11a50, +0x11a57, 0x11a58, +0x11a5c, 0x11a89, +0x11a97, 0x11a97, +0x11a9a, 0x11aa2, +0x11ab0, 0x11af8, +0x11b00, 0x11b09, +0x11bc0, 0x11be1, +0x11bf0, 0x11bf9, +0x11c00, 0x11c08, +0x11c0a, 0x11c2f, +0x11c3e, 0x11c3e, +0x11c40, 0x11c45, +0x11c50, 0x11c6c, +0x11c70, 0x11c8f, +0x11ca9, 0x11ca9, +0x11cb1, 0x11cb1, +0x11cb4, 0x11cb4, +0x11d00, 0x11d06, +0x11d08, 0x11d09, +0x11d0b, 0x11d30, +0x11d46, 0x11d46, +0x11d50, 0x11d59, +0x11d60, 0x11d65, +0x11d67, 0x11d68, +0x11d6a, 0x11d8e, +0x11d93, 0x11d94, +0x11d96, 0x11d96, +0x11d98, 0x11d98, +0x11da0, 0x11da9, +0x11ee0, 0x11ef2, +0x11ef5, 0x11ef8, +0x11f02, 0x11f10, +0x11f12, 0x11f35, +0x11f3e, 0x11f3f, +0x11f43, 0x11f59, +0x11fb0, 0x11fb0, +0x11fc0, 0x11ff1, +0x11fff, 0x12399, +0x12400, 0x1246e, +0x12470, 0x12474, +0x12480, 0x12543, +0x12f90, 0x12ff2, +0x13000, 0x1342f, +0x13441, 0x13446, +0x13460, 0x143fa, +0x14400, 0x14646, +0x16100, 0x1611d, +0x1612a, 0x1612c, +0x16130, 0x16139, +0x16800, 0x16a38, +0x16a40, 0x16a5e, +0x16a60, 0x16a69, +0x16a6e, 0x16abe, +0x16ac0, 0x16ac9, +0x16ad0, 0x16aed, +0x16af5, 0x16af5, +0x16b00, 0x16b2f, +0x16b37, 0x16b45, +0x16b50, 0x16b59, +0x16b5b, 0x16b61, +0x16b63, 0x16b77, +0x16b7d, 0x16b8f, +0x16d40, 0x16d79, +0x16e40, 0x16e9a, +0x16f00, 0x16f4a, +0x16f50, 0x16f87, +0x16f93, 0x16f9f, +0x16fe0, 0x16fe3, +0x17000, 0x187f7, +0x18800, 0x18cd5, +0x18cff, 0x18d08, +0x1aff0, 0x1aff3, +0x1aff5, 0x1affb, +0x1affd, 0x1affe, +0x1b000, 0x1b122, +0x1b132, 0x1b132, +0x1b150, 0x1b152, +0x1b155, 0x1b155, +0x1b164, 0x1b167, +0x1b170, 0x1b2fb, +0x1bc00, 0x1bc6a, +0x1bc70, 0x1bc7c, +0x1bc80, 0x1bc88, +0x1bc90, 0x1bc99, +0x1bc9c, 0x1bc9c, +0x1bc9f, 0x1bc9f, +0x1cc00, 0x1ccf9, +0x1cd00, 0x1ceb3, +0x1cf50, 0x1cfc3, +0x1d000, 0x1d0f5, +0x1d100, 0x1d126, +0x1d129, 0x1d164, +0x1d16a, 0x1d16c, +0x1d183, 0x1d184, +0x1d18c, 0x1d1a9, +0x1d1ae, 0x1d1ea, +0x1d200, 0x1d241, +0x1d245, 0x1d245, +0x1d2c0, 0x1d2d3, +0x1d2e0, 0x1d2f3, +0x1d300, 0x1d356, +0x1d360, 0x1d378, +0x1d400, 0x1d454, +0x1d456, 0x1d49c, +0x1d49e, 0x1d49f, +0x1d4a2, 0x1d4a2, +0x1d4a5, 0x1d4a6, +0x1d4a9, 0x1d4ac, +0x1d4ae, 0x1d4b9, +0x1d4bb, 0x1d4bb, +0x1d4bd, 0x1d4c3, +0x1d4c5, 0x1d505, +0x1d507, 0x1d50a, +0x1d50d, 0x1d514, +0x1d516, 0x1d51c, +0x1d51e, 0x1d539, +0x1d53b, 0x1d53e, +0x1d540, 0x1d544, +0x1d546, 0x1d546, +0x1d54a, 0x1d550, +0x1d552, 0x1d6a5, +0x1d6a8, 0x1d7cb, +0x1d7ce, 0x1d9ff, +0x1da37, 0x1da3a, +0x1da6d, 0x1da74, +0x1da76, 0x1da83, +0x1da85, 0x1da8b, +0x1df00, 0x1df1e, +0x1df25, 0x1df2a, +0x1e030, 0x1e06d, +0x1e100, 0x1e12c, +0x1e137, 0x1e13d, +0x1e140, 0x1e149, +0x1e14e, 0x1e14f, +0x1e290, 0x1e2ad, +0x1e2c0, 0x1e2eb, +0x1e2f0, 0x1e2f9, +0x1e2ff, 0x1e2ff, +0x1e4d0, 0x1e4eb, +0x1e4f0, 0x1e4f9, +0x1e5d0, 0x1e5ed, +0x1e5f0, 0x1e5fa, +0x1e5ff, 0x1e5ff, +0x1e7e0, 0x1e7e6, +0x1e7e8, 0x1e7eb, +0x1e7ed, 0x1e7ee, +0x1e7f0, 0x1e7fe, +0x1e800, 0x1e8c4, +0x1e8c7, 0x1e8cf, +0x1e900, 0x1e943, +0x1e94b, 0x1e94b, +0x1e950, 0x1e959, +0x1e95e, 0x1e95f, +0x1ec71, 0x1ecb4, +0x1ed01, 0x1ed3d, +0x1ee00, 0x1ee03, +0x1ee05, 0x1ee1f, +0x1ee21, 0x1ee22, +0x1ee24, 0x1ee24, +0x1ee27, 0x1ee27, +0x1ee29, 0x1ee32, +0x1ee34, 0x1ee37, +0x1ee39, 0x1ee39, +0x1ee3b, 0x1ee3b, +0x1ee42, 0x1ee42, +0x1ee47, 0x1ee47, +0x1ee49, 0x1ee49, +0x1ee4b, 0x1ee4b, +0x1ee4d, 0x1ee4f, +0x1ee51, 0x1ee52, +0x1ee54, 0x1ee54, +0x1ee57, 0x1ee57, +0x1ee59, 0x1ee59, +0x1ee5b, 0x1ee5b, +0x1ee5d, 0x1ee5d, +0x1ee5f, 0x1ee5f, +0x1ee61, 0x1ee62, +0x1ee64, 0x1ee64, +0x1ee67, 0x1ee6a, +0x1ee6c, 0x1ee72, +0x1ee74, 0x1ee77, +0x1ee79, 0x1ee7c, +0x1ee7e, 0x1ee7e, +0x1ee80, 0x1ee89, +0x1ee8b, 0x1ee9b, +0x1eea1, 0x1eea3, +0x1eea5, 0x1eea9, +0x1eeab, 0x1eebb, +0x1eef0, 0x1eef1, +0x1f000, 0x1f02b, +0x1f030, 0x1f093, +0x1f0a0, 0x1f0ae, +0x1f0b1, 0x1f0bf, +0x1f0c1, 0x1f0cf, +0x1f0d1, 0x1f0f5, +0x1f100, 0x1f1ad, +0x1f1e6, 0x1f202, +0x1f210, 0x1f23b, +0x1f240, 0x1f248, +0x1f250, 0x1f251, +0x1f260, 0x1f265, +0x1f300, 0x1f6d7, +0x1f6dc, 0x1f6ec, +0x1f6f0, 0x1f6fc, +0x1f700, 0x1f776, +0x1f77b, 0x1f7d9, +0x1f7e0, 0x1f7eb, +0x1f7f0, 0x1f7f0, +0x1f800, 0x1f80b, +0x1f810, 0x1f847, +0x1f850, 0x1f859, +0x1f860, 0x1f887, +0x1f890, 0x1f8ad, +0x1f8b0, 0x1f8bb, +0x1f8c0, 0x1f8c1, +0x1f900, 0x1fa53, +0x1fa60, 0x1fa6d, +0x1fa70, 0x1fa7c, +0x1fa80, 0x1fa89, +0x1fa8f, 0x1fac6, +0x1face, 0x1fadc, +0x1fadf, 0x1fae9, +0x1faf0, 0x1faf8, +0x1fb00, 0x1fb92, +0x1fb94, 0x1fbf9, +0x20000, 0x2a6df, +0x2a700, 0x2b739, +0x2b740, 0x2b81d, +0x2b820, 0x2cea1, +0x2ceb0, 0x2ebe0, +0x2ebf0, 0x2ee5d, +0x2f800, 0x2fa1d, +0x30000, 0x3134a, +0x31350, 0x323af, +}; /* END of CR_Grapheme_Base */ + +/* PROPERTY: 'Grapheme_Extend': Derived Property */ +static const OnigCodePoint +CR_Grapheme_Extend[] = { 375, +0x0300, 0x036f, +0x0483, 0x0489, +0x0591, 0x05bd, +0x05bf, 0x05bf, +0x05c1, 0x05c2, +0x05c4, 0x05c5, +0x05c7, 0x05c7, +0x0610, 0x061a, +0x064b, 0x065f, +0x0670, 0x0670, +0x06d6, 0x06dc, +0x06df, 0x06e4, +0x06e7, 0x06e8, +0x06ea, 0x06ed, +0x0711, 0x0711, +0x0730, 0x074a, +0x07a6, 0x07b0, +0x07eb, 0x07f3, +0x07fd, 0x07fd, +0x0816, 0x0819, +0x081b, 0x0823, +0x0825, 0x0827, +0x0829, 0x082d, +0x0859, 0x085b, +0x0897, 0x089f, +0x08ca, 0x08e1, +0x08e3, 0x0902, +0x093a, 0x093a, +0x093c, 0x093c, +0x0941, 0x0948, +0x094d, 0x094d, +0x0951, 0x0957, +0x0962, 0x0963, +0x0981, 0x0981, +0x09bc, 0x09bc, +0x09be, 0x09be, +0x09c1, 0x09c4, +0x09cd, 0x09cd, +0x09d7, 0x09d7, +0x09e2, 0x09e3, +0x09fe, 0x09fe, +0x0a01, 0x0a02, +0x0a3c, 0x0a3c, +0x0a41, 0x0a42, +0x0a47, 0x0a48, +0x0a4b, 0x0a4d, +0x0a51, 0x0a51, +0x0a70, 0x0a71, +0x0a75, 0x0a75, +0x0a81, 0x0a82, +0x0abc, 0x0abc, +0x0ac1, 0x0ac5, +0x0ac7, 0x0ac8, +0x0acd, 0x0acd, +0x0ae2, 0x0ae3, +0x0afa, 0x0aff, +0x0b01, 0x0b01, +0x0b3c, 0x0b3c, +0x0b3e, 0x0b3f, +0x0b41, 0x0b44, +0x0b4d, 0x0b4d, +0x0b55, 0x0b57, +0x0b62, 0x0b63, +0x0b82, 0x0b82, +0x0bbe, 0x0bbe, +0x0bc0, 0x0bc0, +0x0bcd, 0x0bcd, +0x0bd7, 0x0bd7, +0x0c00, 0x0c00, +0x0c04, 0x0c04, +0x0c3c, 0x0c3c, +0x0c3e, 0x0c40, +0x0c46, 0x0c48, +0x0c4a, 0x0c4d, +0x0c55, 0x0c56, +0x0c62, 0x0c63, +0x0c81, 0x0c81, +0x0cbc, 0x0cbc, +0x0cbf, 0x0cc0, +0x0cc2, 0x0cc2, +0x0cc6, 0x0cc8, +0x0cca, 0x0ccd, +0x0cd5, 0x0cd6, +0x0ce2, 0x0ce3, +0x0d00, 0x0d01, +0x0d3b, 0x0d3c, +0x0d3e, 0x0d3e, +0x0d41, 0x0d44, +0x0d4d, 0x0d4d, +0x0d57, 0x0d57, +0x0d62, 0x0d63, +0x0d81, 0x0d81, +0x0dca, 0x0dca, +0x0dcf, 0x0dcf, +0x0dd2, 0x0dd4, +0x0dd6, 0x0dd6, +0x0ddf, 0x0ddf, +0x0e31, 0x0e31, +0x0e34, 0x0e3a, +0x0e47, 0x0e4e, +0x0eb1, 0x0eb1, +0x0eb4, 0x0ebc, +0x0ec8, 0x0ece, +0x0f18, 0x0f19, +0x0f35, 0x0f35, +0x0f37, 0x0f37, +0x0f39, 0x0f39, +0x0f71, 0x0f7e, +0x0f80, 0x0f84, +0x0f86, 0x0f87, +0x0f8d, 0x0f97, +0x0f99, 0x0fbc, +0x0fc6, 0x0fc6, +0x102d, 0x1030, +0x1032, 0x1037, +0x1039, 0x103a, +0x103d, 0x103e, +0x1058, 0x1059, +0x105e, 0x1060, +0x1071, 0x1074, +0x1082, 0x1082, +0x1085, 0x1086, +0x108d, 0x108d, +0x109d, 0x109d, +0x135d, 0x135f, +0x1712, 0x1715, +0x1732, 0x1734, +0x1752, 0x1753, +0x1772, 0x1773, +0x17b4, 0x17b5, +0x17b7, 0x17bd, +0x17c6, 0x17c6, +0x17c9, 0x17d3, +0x17dd, 0x17dd, +0x180b, 0x180d, +0x180f, 0x180f, +0x1885, 0x1886, +0x18a9, 0x18a9, +0x1920, 0x1922, +0x1927, 0x1928, +0x1932, 0x1932, +0x1939, 0x193b, +0x1a17, 0x1a18, +0x1a1b, 0x1a1b, +0x1a56, 0x1a56, +0x1a58, 0x1a5e, +0x1a60, 0x1a60, +0x1a62, 0x1a62, +0x1a65, 0x1a6c, +0x1a73, 0x1a7c, +0x1a7f, 0x1a7f, +0x1ab0, 0x1ace, +0x1b00, 0x1b03, +0x1b34, 0x1b3d, +0x1b42, 0x1b44, +0x1b6b, 0x1b73, +0x1b80, 0x1b81, +0x1ba2, 0x1ba5, +0x1ba8, 0x1bad, +0x1be6, 0x1be6, +0x1be8, 0x1be9, +0x1bed, 0x1bed, +0x1bef, 0x1bf3, +0x1c2c, 0x1c33, +0x1c36, 0x1c37, +0x1cd0, 0x1cd2, +0x1cd4, 0x1ce0, +0x1ce2, 0x1ce8, +0x1ced, 0x1ced, +0x1cf4, 0x1cf4, +0x1cf8, 0x1cf9, +0x1dc0, 0x1dff, +0x200c, 0x200c, +0x20d0, 0x20f0, +0x2cef, 0x2cf1, +0x2d7f, 0x2d7f, +0x2de0, 0x2dff, +0x302a, 0x302f, +0x3099, 0x309a, +0xa66f, 0xa672, +0xa674, 0xa67d, +0xa69e, 0xa69f, +0xa6f0, 0xa6f1, +0xa802, 0xa802, +0xa806, 0xa806, +0xa80b, 0xa80b, +0xa825, 0xa826, +0xa82c, 0xa82c, +0xa8c4, 0xa8c5, +0xa8e0, 0xa8f1, +0xa8ff, 0xa8ff, +0xa926, 0xa92d, +0xa947, 0xa951, +0xa953, 0xa953, +0xa980, 0xa982, +0xa9b3, 0xa9b3, +0xa9b6, 0xa9b9, +0xa9bc, 0xa9bd, +0xa9c0, 0xa9c0, +0xa9e5, 0xa9e5, +0xaa29, 0xaa2e, +0xaa31, 0xaa32, +0xaa35, 0xaa36, +0xaa43, 0xaa43, +0xaa4c, 0xaa4c, +0xaa7c, 0xaa7c, +0xaab0, 0xaab0, +0xaab2, 0xaab4, +0xaab7, 0xaab8, +0xaabe, 0xaabf, +0xaac1, 0xaac1, +0xaaec, 0xaaed, +0xaaf6, 0xaaf6, +0xabe5, 0xabe5, +0xabe8, 0xabe8, +0xabed, 0xabed, +0xfb1e, 0xfb1e, +0xfe00, 0xfe0f, +0xfe20, 0xfe2f, +0xff9e, 0xff9f, +0x101fd, 0x101fd, +0x102e0, 0x102e0, +0x10376, 0x1037a, +0x10a01, 0x10a03, +0x10a05, 0x10a06, +0x10a0c, 0x10a0f, +0x10a38, 0x10a3a, +0x10a3f, 0x10a3f, +0x10ae5, 0x10ae6, +0x10d24, 0x10d27, +0x10d69, 0x10d6d, +0x10eab, 0x10eac, +0x10efc, 0x10eff, +0x10f46, 0x10f50, +0x10f82, 0x10f85, +0x11001, 0x11001, +0x11038, 0x11046, +0x11070, 0x11070, +0x11073, 0x11074, +0x1107f, 0x11081, +0x110b3, 0x110b6, +0x110b9, 0x110ba, +0x110c2, 0x110c2, +0x11100, 0x11102, +0x11127, 0x1112b, +0x1112d, 0x11134, +0x11173, 0x11173, +0x11180, 0x11181, +0x111b6, 0x111be, +0x111c0, 0x111c0, +0x111c9, 0x111cc, +0x111cf, 0x111cf, +0x1122f, 0x11231, +0x11234, 0x11237, +0x1123e, 0x1123e, +0x11241, 0x11241, +0x112df, 0x112df, +0x112e3, 0x112ea, +0x11300, 0x11301, +0x1133b, 0x1133c, +0x1133e, 0x1133e, +0x11340, 0x11340, +0x1134d, 0x1134d, +0x11357, 0x11357, +0x11366, 0x1136c, +0x11370, 0x11374, +0x113b8, 0x113b8, +0x113bb, 0x113c0, +0x113c2, 0x113c2, +0x113c5, 0x113c5, +0x113c7, 0x113c9, +0x113ce, 0x113d0, +0x113d2, 0x113d2, +0x113e1, 0x113e2, +0x11438, 0x1143f, +0x11442, 0x11444, +0x11446, 0x11446, +0x1145e, 0x1145e, +0x114b0, 0x114b0, +0x114b3, 0x114b8, +0x114ba, 0x114ba, +0x114bd, 0x114bd, +0x114bf, 0x114c0, +0x114c2, 0x114c3, +0x115af, 0x115af, +0x115b2, 0x115b5, +0x115bc, 0x115bd, +0x115bf, 0x115c0, +0x115dc, 0x115dd, +0x11633, 0x1163a, +0x1163d, 0x1163d, +0x1163f, 0x11640, +0x116ab, 0x116ab, +0x116ad, 0x116ad, +0x116b0, 0x116b7, +0x1171d, 0x1171d, +0x1171f, 0x1171f, +0x11722, 0x11725, +0x11727, 0x1172b, +0x1182f, 0x11837, +0x11839, 0x1183a, +0x11930, 0x11930, +0x1193b, 0x1193e, +0x11943, 0x11943, +0x119d4, 0x119d7, +0x119da, 0x119db, +0x119e0, 0x119e0, +0x11a01, 0x11a0a, +0x11a33, 0x11a38, +0x11a3b, 0x11a3e, +0x11a47, 0x11a47, +0x11a51, 0x11a56, +0x11a59, 0x11a5b, +0x11a8a, 0x11a96, +0x11a98, 0x11a99, +0x11c30, 0x11c36, +0x11c38, 0x11c3d, +0x11c3f, 0x11c3f, +0x11c92, 0x11ca7, +0x11caa, 0x11cb0, +0x11cb2, 0x11cb3, +0x11cb5, 0x11cb6, +0x11d31, 0x11d36, +0x11d3a, 0x11d3a, +0x11d3c, 0x11d3d, +0x11d3f, 0x11d45, +0x11d47, 0x11d47, +0x11d90, 0x11d91, +0x11d95, 0x11d95, +0x11d97, 0x11d97, +0x11ef3, 0x11ef4, +0x11f00, 0x11f01, +0x11f36, 0x11f3a, +0x11f40, 0x11f42, +0x11f5a, 0x11f5a, +0x13440, 0x13440, +0x13447, 0x13455, +0x1611e, 0x16129, +0x1612d, 0x1612f, +0x16af0, 0x16af4, +0x16b30, 0x16b36, +0x16f4f, 0x16f4f, +0x16f8f, 0x16f92, +0x16fe4, 0x16fe4, +0x16ff0, 0x16ff1, +0x1bc9d, 0x1bc9e, +0x1cf00, 0x1cf2d, +0x1cf30, 0x1cf46, +0x1d165, 0x1d169, +0x1d16d, 0x1d172, +0x1d17b, 0x1d182, +0x1d185, 0x1d18b, +0x1d1aa, 0x1d1ad, +0x1d242, 0x1d244, +0x1da00, 0x1da36, +0x1da3b, 0x1da6c, +0x1da75, 0x1da75, +0x1da84, 0x1da84, +0x1da9b, 0x1da9f, +0x1daa1, 0x1daaf, +0x1e000, 0x1e006, +0x1e008, 0x1e018, +0x1e01b, 0x1e021, +0x1e023, 0x1e024, +0x1e026, 0x1e02a, +0x1e08f, 0x1e08f, +0x1e130, 0x1e136, +0x1e2ae, 0x1e2ae, +0x1e2ec, 0x1e2ef, +0x1e4ec, 0x1e4ef, +0x1e5ee, 0x1e5ef, +0x1e8d0, 0x1e8d6, +0x1e944, 0x1e94a, +0xe0020, 0xe007f, +0xe0100, 0xe01ef, +}; /* END of CR_Grapheme_Extend */ + +/* PROPERTY: 'Grapheme_Link': Derived Property */ +static const OnigCodePoint +CR_Grapheme_Link[] = { 58, +0x094d, 0x094d, +0x09cd, 0x09cd, +0x0a4d, 0x0a4d, +0x0acd, 0x0acd, +0x0b4d, 0x0b4d, +0x0bcd, 0x0bcd, +0x0c4d, 0x0c4d, +0x0ccd, 0x0ccd, +0x0d3b, 0x0d3c, +0x0d4d, 0x0d4d, +0x0dca, 0x0dca, +0x0e3a, 0x0e3a, +0x0eba, 0x0eba, +0x0f84, 0x0f84, +0x1039, 0x103a, +0x1714, 0x1715, +0x1734, 0x1734, +0x17d2, 0x17d2, +0x1a60, 0x1a60, +0x1b44, 0x1b44, +0x1baa, 0x1bab, +0x1bf2, 0x1bf3, +0x2d7f, 0x2d7f, +0xa806, 0xa806, +0xa82c, 0xa82c, +0xa8c4, 0xa8c4, +0xa953, 0xa953, +0xa9c0, 0xa9c0, +0xaaf6, 0xaaf6, +0xabed, 0xabed, +0x10a3f, 0x10a3f, +0x11046, 0x11046, +0x11070, 0x11070, +0x1107f, 0x1107f, +0x110b9, 0x110b9, +0x11133, 0x11134, +0x111c0, 0x111c0, +0x11235, 0x11235, +0x112ea, 0x112ea, +0x1134d, 0x1134d, +0x113ce, 0x113d0, +0x11442, 0x11442, +0x114c2, 0x114c2, +0x115bf, 0x115bf, +0x1163f, 0x1163f, +0x116b6, 0x116b6, +0x1172b, 0x1172b, +0x11839, 0x11839, +0x1193d, 0x1193e, +0x119e0, 0x119e0, +0x11a34, 0x11a34, +0x11a47, 0x11a47, +0x11a99, 0x11a99, +0x11c3f, 0x11c3f, +0x11d44, 0x11d45, +0x11d97, 0x11d97, +0x11f41, 0x11f42, +0x1612f, 0x1612f, +}; /* END of CR_Grapheme_Link */ + +/* PROPERTY: 'Greek': Script */ +static const OnigCodePoint +CR_Greek[] = { 36, +0x0370, 0x0373, +0x0375, 0x0377, +0x037a, 0x037d, +0x037f, 0x037f, +0x0384, 0x0384, +0x0386, 0x0386, +0x0388, 0x038a, +0x038c, 0x038c, +0x038e, 0x03a1, +0x03a3, 0x03e1, +0x03f0, 0x03ff, +0x1d26, 0x1d2a, +0x1d5d, 0x1d61, +0x1d66, 0x1d6a, +0x1dbf, 0x1dbf, +0x1f00, 0x1f15, +0x1f18, 0x1f1d, +0x1f20, 0x1f45, +0x1f48, 0x1f4d, +0x1f50, 0x1f57, +0x1f59, 0x1f59, +0x1f5b, 0x1f5b, +0x1f5d, 0x1f5d, +0x1f5f, 0x1f7d, +0x1f80, 0x1fb4, +0x1fb6, 0x1fc4, +0x1fc6, 0x1fd3, +0x1fd6, 0x1fdb, +0x1fdd, 0x1fef, +0x1ff2, 0x1ff4, +0x1ff6, 0x1ffe, +0x2126, 0x2126, +0xab65, 0xab65, +0x10140, 0x1018e, +0x101a0, 0x101a0, +0x1d200, 0x1d245, +}; /* END of CR_Greek */ + +/* PROPERTY: 'Gujarati': Script */ +static const OnigCodePoint +CR_Gujarati[] = { 14, +0x0a81, 0x0a83, +0x0a85, 0x0a8d, +0x0a8f, 0x0a91, +0x0a93, 0x0aa8, +0x0aaa, 0x0ab0, +0x0ab2, 0x0ab3, +0x0ab5, 0x0ab9, +0x0abc, 0x0ac5, +0x0ac7, 0x0ac9, +0x0acb, 0x0acd, +0x0ad0, 0x0ad0, +0x0ae0, 0x0ae3, +0x0ae6, 0x0af1, +0x0af9, 0x0aff, +}; /* END of CR_Gujarati */ + +/* PROPERTY: 'Gunjala_Gondi': Script */ +static const OnigCodePoint +CR_Gunjala_Gondi[] = { 6, +0x11d60, 0x11d65, +0x11d67, 0x11d68, +0x11d6a, 0x11d8e, +0x11d90, 0x11d91, +0x11d93, 0x11d98, +0x11da0, 0x11da9, +}; /* END of CR_Gunjala_Gondi */ + +/* PROPERTY: 'Gurmukhi': Script */ +static const OnigCodePoint +CR_Gurmukhi[] = { 16, +0x0a01, 0x0a03, +0x0a05, 0x0a0a, +0x0a0f, 0x0a10, +0x0a13, 0x0a28, +0x0a2a, 0x0a30, +0x0a32, 0x0a33, +0x0a35, 0x0a36, +0x0a38, 0x0a39, +0x0a3c, 0x0a3c, +0x0a3e, 0x0a42, +0x0a47, 0x0a48, +0x0a4b, 0x0a4d, +0x0a51, 0x0a51, +0x0a59, 0x0a5c, +0x0a5e, 0x0a5e, +0x0a66, 0x0a76, +}; /* END of CR_Gurmukhi */ + +/* PROPERTY: 'Gurung_Khema': Script */ +static const OnigCodePoint +CR_Gurung_Khema[] = { 1, +0x16100, 0x16139, +}; /* END of CR_Gurung_Khema */ + +/* PROPERTY: 'Han': Script */ +static const OnigCodePoint +CR_Han[] = { 22, +0x2e80, 0x2e99, +0x2e9b, 0x2ef3, +0x2f00, 0x2fd5, +0x3005, 0x3005, +0x3007, 0x3007, +0x3021, 0x3029, +0x3038, 0x303b, +0x3400, 0x4dbf, +0x4e00, 0x9fff, +0xf900, 0xfa6d, +0xfa70, 0xfad9, +0x16fe2, 0x16fe3, +0x16ff0, 0x16ff1, +0x20000, 0x2a6df, +0x2a700, 0x2b739, +0x2b740, 0x2b81d, +0x2b820, 0x2cea1, +0x2ceb0, 0x2ebe0, +0x2ebf0, 0x2ee5d, +0x2f800, 0x2fa1d, +0x30000, 0x3134a, +0x31350, 0x323af, +}; /* END of CR_Han */ + +/* PROPERTY: 'Hangul': Script */ +static const OnigCodePoint +CR_Hangul[] = { 14, +0x1100, 0x11ff, +0x302e, 0x302f, +0x3131, 0x318e, +0x3200, 0x321e, +0x3260, 0x327e, +0xa960, 0xa97c, +0xac00, 0xd7a3, +0xd7b0, 0xd7c6, +0xd7cb, 0xd7fb, +0xffa0, 0xffbe, +0xffc2, 0xffc7, +0xffca, 0xffcf, +0xffd2, 0xffd7, +0xffda, 0xffdc, +}; /* END of CR_Hangul */ + +/* PROPERTY: 'Hanifi_Rohingya': Script */ +static const OnigCodePoint +CR_Hanifi_Rohingya[] = { 2, +0x10d00, 0x10d27, +0x10d30, 0x10d39, +}; /* END of CR_Hanifi_Rohingya */ + +/* PROPERTY: 'Hanunoo': Script */ +static const OnigCodePoint +CR_Hanunoo[] = { 1, +0x1720, 0x1734, +}; /* END of CR_Hanunoo */ + +/* PROPERTY: 'Hatran': Script */ +static const OnigCodePoint +CR_Hatran[] = { 3, +0x108e0, 0x108f2, +0x108f4, 0x108f5, +0x108fb, 0x108ff, +}; /* END of CR_Hatran */ + +/* PROPERTY: 'Hebrew': Script */ +static const OnigCodePoint +CR_Hebrew[] = { 9, +0x0591, 0x05c7, +0x05d0, 0x05ea, +0x05ef, 0x05f4, +0xfb1d, 0xfb36, +0xfb38, 0xfb3c, +0xfb3e, 0xfb3e, +0xfb40, 0xfb41, +0xfb43, 0xfb44, +0xfb46, 0xfb4f, +}; /* END of CR_Hebrew */ + +/* PROPERTY: 'Hex_Digit': Binary Property */ +static const OnigCodePoint +CR_Hex_Digit[] = { 6, +0x0030, 0x0039, +0x0041, 0x0046, +0x0061, 0x0066, +0xff10, 0xff19, +0xff21, 0xff26, +0xff41, 0xff46, +}; /* END of CR_Hex_Digit */ + +/* PROPERTY: 'Hiragana': Script */ +static const OnigCodePoint +CR_Hiragana[] = { 6, +0x3041, 0x3096, +0x309d, 0x309f, +0x1b001, 0x1b11f, +0x1b132, 0x1b132, +0x1b150, 0x1b152, +0x1f200, 0x1f200, +}; /* END of CR_Hiragana */ + +/* PROPERTY: 'Hyphen': Binary Property */ +static const OnigCodePoint +CR_Hyphen[] = { 10, +0x002d, 0x002d, +0x00ad, 0x00ad, +0x058a, 0x058a, +0x1806, 0x1806, +0x2010, 0x2011, +0x2e17, 0x2e17, +0x30fb, 0x30fb, +0xfe63, 0xfe63, +0xff0d, 0xff0d, +0xff65, 0xff65, +}; /* END of CR_Hyphen */ + +/* PROPERTY: 'IDS_Binary_Operator': Binary Property */ +static const OnigCodePoint +CR_IDS_Binary_Operator[] = { 3, +0x2ff0, 0x2ff1, +0x2ff4, 0x2ffd, +0x31ef, 0x31ef, +}; /* END of CR_IDS_Binary_Operator */ + +/* PROPERTY: 'IDS_Trinary_Operator': Binary Property */ +static const OnigCodePoint +CR_IDS_Trinary_Operator[] = { 1, +0x2ff2, 0x2ff3, +}; /* END of CR_IDS_Trinary_Operator */ + +/* PROPERTY: 'IDS_Unary_Operator': Binary Property */ +static const OnigCodePoint +CR_IDS_Unary_Operator[] = { 1, +0x2ffe, 0x2fff, +}; /* END of CR_IDS_Unary_Operator */ + +/* PROPERTY: 'ID_Compat_Math_Continue': Binary Property */ +static const OnigCodePoint +CR_ID_Compat_Math_Continue[] = { 18, +0x00b2, 0x00b3, +0x00b9, 0x00b9, +0x2070, 0x2070, +0x2074, 0x207e, +0x2080, 0x208e, +0x2202, 0x2202, +0x2207, 0x2207, +0x221e, 0x221e, +0x1d6c1, 0x1d6c1, +0x1d6db, 0x1d6db, +0x1d6fb, 0x1d6fb, +0x1d715, 0x1d715, +0x1d735, 0x1d735, +0x1d74f, 0x1d74f, +0x1d76f, 0x1d76f, +0x1d789, 0x1d789, +0x1d7a9, 0x1d7a9, +0x1d7c3, 0x1d7c3, +}; /* END of CR_ID_Compat_Math_Continue */ + +/* PROPERTY: 'ID_Compat_Math_Start': Binary Property */ +static const OnigCodePoint +CR_ID_Compat_Math_Start[] = { 13, +0x2202, 0x2202, +0x2207, 0x2207, +0x221e, 0x221e, +0x1d6c1, 0x1d6c1, +0x1d6db, 0x1d6db, +0x1d6fb, 0x1d6fb, +0x1d715, 0x1d715, +0x1d735, 0x1d735, +0x1d74f, 0x1d74f, +0x1d76f, 0x1d76f, +0x1d789, 0x1d789, +0x1d7a9, 0x1d7a9, +0x1d7c3, 0x1d7c3, +}; /* END of CR_ID_Compat_Math_Start */ + +/* PROPERTY: 'ID_Continue': Derived Property */ +static const OnigCodePoint +CR_ID_Continue[] = { 793, +0x0030, 0x0039, +0x0041, 0x005a, +0x005f, 0x005f, +0x0061, 0x007a, +0x00aa, 0x00aa, +0x00b5, 0x00b5, +0x00b7, 0x00b7, +0x00ba, 0x00ba, +0x00c0, 0x00d6, +0x00d8, 0x00f6, +0x00f8, 0x02c1, +0x02c6, 0x02d1, +0x02e0, 0x02e4, +0x02ec, 0x02ec, +0x02ee, 0x02ee, +0x0300, 0x0374, +0x0376, 0x0377, +0x037a, 0x037d, +0x037f, 0x037f, +0x0386, 0x038a, +0x038c, 0x038c, +0x038e, 0x03a1, +0x03a3, 0x03f5, +0x03f7, 0x0481, +0x0483, 0x0487, +0x048a, 0x052f, +0x0531, 0x0556, +0x0559, 0x0559, +0x0560, 0x0588, +0x0591, 0x05bd, +0x05bf, 0x05bf, +0x05c1, 0x05c2, +0x05c4, 0x05c5, +0x05c7, 0x05c7, +0x05d0, 0x05ea, +0x05ef, 0x05f2, +0x0610, 0x061a, +0x0620, 0x0669, +0x066e, 0x06d3, +0x06d5, 0x06dc, +0x06df, 0x06e8, +0x06ea, 0x06fc, +0x06ff, 0x06ff, +0x0710, 0x074a, +0x074d, 0x07b1, +0x07c0, 0x07f5, +0x07fa, 0x07fa, +0x07fd, 0x07fd, +0x0800, 0x082d, +0x0840, 0x085b, +0x0860, 0x086a, +0x0870, 0x0887, +0x0889, 0x088e, +0x0897, 0x08e1, +0x08e3, 0x0963, +0x0966, 0x096f, +0x0971, 0x0983, +0x0985, 0x098c, +0x098f, 0x0990, +0x0993, 0x09a8, +0x09aa, 0x09b0, +0x09b2, 0x09b2, +0x09b6, 0x09b9, +0x09bc, 0x09c4, +0x09c7, 0x09c8, +0x09cb, 0x09ce, +0x09d7, 0x09d7, +0x09dc, 0x09dd, +0x09df, 0x09e3, +0x09e6, 0x09f1, +0x09fc, 0x09fc, +0x09fe, 0x09fe, +0x0a01, 0x0a03, +0x0a05, 0x0a0a, +0x0a0f, 0x0a10, +0x0a13, 0x0a28, +0x0a2a, 0x0a30, +0x0a32, 0x0a33, +0x0a35, 0x0a36, +0x0a38, 0x0a39, +0x0a3c, 0x0a3c, +0x0a3e, 0x0a42, +0x0a47, 0x0a48, +0x0a4b, 0x0a4d, +0x0a51, 0x0a51, +0x0a59, 0x0a5c, +0x0a5e, 0x0a5e, +0x0a66, 0x0a75, +0x0a81, 0x0a83, +0x0a85, 0x0a8d, +0x0a8f, 0x0a91, +0x0a93, 0x0aa8, +0x0aaa, 0x0ab0, +0x0ab2, 0x0ab3, +0x0ab5, 0x0ab9, +0x0abc, 0x0ac5, +0x0ac7, 0x0ac9, +0x0acb, 0x0acd, +0x0ad0, 0x0ad0, +0x0ae0, 0x0ae3, +0x0ae6, 0x0aef, +0x0af9, 0x0aff, +0x0b01, 0x0b03, +0x0b05, 0x0b0c, +0x0b0f, 0x0b10, +0x0b13, 0x0b28, +0x0b2a, 0x0b30, +0x0b32, 0x0b33, +0x0b35, 0x0b39, +0x0b3c, 0x0b44, +0x0b47, 0x0b48, +0x0b4b, 0x0b4d, +0x0b55, 0x0b57, +0x0b5c, 0x0b5d, +0x0b5f, 0x0b63, +0x0b66, 0x0b6f, +0x0b71, 0x0b71, +0x0b82, 0x0b83, +0x0b85, 0x0b8a, +0x0b8e, 0x0b90, +0x0b92, 0x0b95, +0x0b99, 0x0b9a, +0x0b9c, 0x0b9c, +0x0b9e, 0x0b9f, +0x0ba3, 0x0ba4, +0x0ba8, 0x0baa, +0x0bae, 0x0bb9, +0x0bbe, 0x0bc2, +0x0bc6, 0x0bc8, +0x0bca, 0x0bcd, +0x0bd0, 0x0bd0, +0x0bd7, 0x0bd7, +0x0be6, 0x0bef, +0x0c00, 0x0c0c, +0x0c0e, 0x0c10, +0x0c12, 0x0c28, +0x0c2a, 0x0c39, +0x0c3c, 0x0c44, +0x0c46, 0x0c48, +0x0c4a, 0x0c4d, +0x0c55, 0x0c56, +0x0c58, 0x0c5a, +0x0c5d, 0x0c5d, +0x0c60, 0x0c63, +0x0c66, 0x0c6f, +0x0c80, 0x0c83, +0x0c85, 0x0c8c, +0x0c8e, 0x0c90, +0x0c92, 0x0ca8, +0x0caa, 0x0cb3, +0x0cb5, 0x0cb9, +0x0cbc, 0x0cc4, +0x0cc6, 0x0cc8, +0x0cca, 0x0ccd, +0x0cd5, 0x0cd6, +0x0cdd, 0x0cde, +0x0ce0, 0x0ce3, +0x0ce6, 0x0cef, +0x0cf1, 0x0cf3, +0x0d00, 0x0d0c, +0x0d0e, 0x0d10, +0x0d12, 0x0d44, +0x0d46, 0x0d48, +0x0d4a, 0x0d4e, +0x0d54, 0x0d57, +0x0d5f, 0x0d63, +0x0d66, 0x0d6f, +0x0d7a, 0x0d7f, +0x0d81, 0x0d83, +0x0d85, 0x0d96, +0x0d9a, 0x0db1, +0x0db3, 0x0dbb, +0x0dbd, 0x0dbd, +0x0dc0, 0x0dc6, +0x0dca, 0x0dca, +0x0dcf, 0x0dd4, +0x0dd6, 0x0dd6, +0x0dd8, 0x0ddf, +0x0de6, 0x0def, +0x0df2, 0x0df3, +0x0e01, 0x0e3a, +0x0e40, 0x0e4e, +0x0e50, 0x0e59, +0x0e81, 0x0e82, +0x0e84, 0x0e84, +0x0e86, 0x0e8a, +0x0e8c, 0x0ea3, +0x0ea5, 0x0ea5, +0x0ea7, 0x0ebd, +0x0ec0, 0x0ec4, +0x0ec6, 0x0ec6, +0x0ec8, 0x0ece, +0x0ed0, 0x0ed9, +0x0edc, 0x0edf, +0x0f00, 0x0f00, +0x0f18, 0x0f19, +0x0f20, 0x0f29, +0x0f35, 0x0f35, +0x0f37, 0x0f37, +0x0f39, 0x0f39, +0x0f3e, 0x0f47, +0x0f49, 0x0f6c, +0x0f71, 0x0f84, +0x0f86, 0x0f97, +0x0f99, 0x0fbc, +0x0fc6, 0x0fc6, +0x1000, 0x1049, +0x1050, 0x109d, +0x10a0, 0x10c5, +0x10c7, 0x10c7, +0x10cd, 0x10cd, +0x10d0, 0x10fa, +0x10fc, 0x1248, +0x124a, 0x124d, +0x1250, 0x1256, +0x1258, 0x1258, +0x125a, 0x125d, +0x1260, 0x1288, +0x128a, 0x128d, +0x1290, 0x12b0, +0x12b2, 0x12b5, +0x12b8, 0x12be, +0x12c0, 0x12c0, +0x12c2, 0x12c5, +0x12c8, 0x12d6, +0x12d8, 0x1310, +0x1312, 0x1315, +0x1318, 0x135a, +0x135d, 0x135f, +0x1369, 0x1371, +0x1380, 0x138f, +0x13a0, 0x13f5, +0x13f8, 0x13fd, +0x1401, 0x166c, +0x166f, 0x167f, +0x1681, 0x169a, +0x16a0, 0x16ea, +0x16ee, 0x16f8, +0x1700, 0x1715, +0x171f, 0x1734, +0x1740, 0x1753, +0x1760, 0x176c, +0x176e, 0x1770, +0x1772, 0x1773, +0x1780, 0x17d3, +0x17d7, 0x17d7, +0x17dc, 0x17dd, +0x17e0, 0x17e9, +0x180b, 0x180d, +0x180f, 0x1819, +0x1820, 0x1878, +0x1880, 0x18aa, +0x18b0, 0x18f5, +0x1900, 0x191e, +0x1920, 0x192b, +0x1930, 0x193b, +0x1946, 0x196d, +0x1970, 0x1974, +0x1980, 0x19ab, +0x19b0, 0x19c9, +0x19d0, 0x19da, +0x1a00, 0x1a1b, +0x1a20, 0x1a5e, +0x1a60, 0x1a7c, +0x1a7f, 0x1a89, +0x1a90, 0x1a99, +0x1aa7, 0x1aa7, +0x1ab0, 0x1abd, +0x1abf, 0x1ace, +0x1b00, 0x1b4c, +0x1b50, 0x1b59, +0x1b6b, 0x1b73, +0x1b80, 0x1bf3, +0x1c00, 0x1c37, +0x1c40, 0x1c49, +0x1c4d, 0x1c7d, +0x1c80, 0x1c8a, +0x1c90, 0x1cba, +0x1cbd, 0x1cbf, +0x1cd0, 0x1cd2, +0x1cd4, 0x1cfa, +0x1d00, 0x1f15, +0x1f18, 0x1f1d, +0x1f20, 0x1f45, +0x1f48, 0x1f4d, +0x1f50, 0x1f57, +0x1f59, 0x1f59, +0x1f5b, 0x1f5b, +0x1f5d, 0x1f5d, +0x1f5f, 0x1f7d, +0x1f80, 0x1fb4, +0x1fb6, 0x1fbc, +0x1fbe, 0x1fbe, +0x1fc2, 0x1fc4, +0x1fc6, 0x1fcc, +0x1fd0, 0x1fd3, +0x1fd6, 0x1fdb, +0x1fe0, 0x1fec, +0x1ff2, 0x1ff4, +0x1ff6, 0x1ffc, +0x200c, 0x200d, +0x203f, 0x2040, +0x2054, 0x2054, +0x2071, 0x2071, +0x207f, 0x207f, +0x2090, 0x209c, +0x20d0, 0x20dc, +0x20e1, 0x20e1, +0x20e5, 0x20f0, +0x2102, 0x2102, +0x2107, 0x2107, +0x210a, 0x2113, +0x2115, 0x2115, +0x2118, 0x211d, +0x2124, 0x2124, +0x2126, 0x2126, +0x2128, 0x2128, +0x212a, 0x2139, +0x213c, 0x213f, +0x2145, 0x2149, +0x214e, 0x214e, +0x2160, 0x2188, +0x2c00, 0x2ce4, +0x2ceb, 0x2cf3, +0x2d00, 0x2d25, +0x2d27, 0x2d27, +0x2d2d, 0x2d2d, +0x2d30, 0x2d67, +0x2d6f, 0x2d6f, +0x2d7f, 0x2d96, +0x2da0, 0x2da6, +0x2da8, 0x2dae, +0x2db0, 0x2db6, +0x2db8, 0x2dbe, +0x2dc0, 0x2dc6, +0x2dc8, 0x2dce, +0x2dd0, 0x2dd6, +0x2dd8, 0x2dde, +0x2de0, 0x2dff, +0x3005, 0x3007, +0x3021, 0x302f, +0x3031, 0x3035, +0x3038, 0x303c, +0x3041, 0x3096, +0x3099, 0x309f, +0x30a1, 0x30ff, +0x3105, 0x312f, +0x3131, 0x318e, +0x31a0, 0x31bf, +0x31f0, 0x31ff, +0x3400, 0x4dbf, +0x4e00, 0xa48c, +0xa4d0, 0xa4fd, +0xa500, 0xa60c, +0xa610, 0xa62b, +0xa640, 0xa66f, +0xa674, 0xa67d, +0xa67f, 0xa6f1, +0xa717, 0xa71f, +0xa722, 0xa788, +0xa78b, 0xa7cd, +0xa7d0, 0xa7d1, +0xa7d3, 0xa7d3, +0xa7d5, 0xa7dc, +0xa7f2, 0xa827, +0xa82c, 0xa82c, +0xa840, 0xa873, +0xa880, 0xa8c5, +0xa8d0, 0xa8d9, +0xa8e0, 0xa8f7, +0xa8fb, 0xa8fb, +0xa8fd, 0xa92d, +0xa930, 0xa953, +0xa960, 0xa97c, +0xa980, 0xa9c0, +0xa9cf, 0xa9d9, +0xa9e0, 0xa9fe, +0xaa00, 0xaa36, +0xaa40, 0xaa4d, +0xaa50, 0xaa59, +0xaa60, 0xaa76, +0xaa7a, 0xaac2, +0xaadb, 0xaadd, +0xaae0, 0xaaef, +0xaaf2, 0xaaf6, +0xab01, 0xab06, +0xab09, 0xab0e, +0xab11, 0xab16, +0xab20, 0xab26, +0xab28, 0xab2e, +0xab30, 0xab5a, +0xab5c, 0xab69, +0xab70, 0xabea, +0xabec, 0xabed, +0xabf0, 0xabf9, +0xac00, 0xd7a3, +0xd7b0, 0xd7c6, +0xd7cb, 0xd7fb, +0xf900, 0xfa6d, +0xfa70, 0xfad9, +0xfb00, 0xfb06, +0xfb13, 0xfb17, +0xfb1d, 0xfb28, +0xfb2a, 0xfb36, +0xfb38, 0xfb3c, +0xfb3e, 0xfb3e, +0xfb40, 0xfb41, +0xfb43, 0xfb44, +0xfb46, 0xfbb1, +0xfbd3, 0xfd3d, +0xfd50, 0xfd8f, +0xfd92, 0xfdc7, +0xfdf0, 0xfdfb, +0xfe00, 0xfe0f, +0xfe20, 0xfe2f, +0xfe33, 0xfe34, +0xfe4d, 0xfe4f, +0xfe70, 0xfe74, +0xfe76, 0xfefc, +0xff10, 0xff19, +0xff21, 0xff3a, +0xff3f, 0xff3f, +0xff41, 0xff5a, +0xff65, 0xffbe, +0xffc2, 0xffc7, +0xffca, 0xffcf, +0xffd2, 0xffd7, +0xffda, 0xffdc, +0x10000, 0x1000b, +0x1000d, 0x10026, +0x10028, 0x1003a, +0x1003c, 0x1003d, +0x1003f, 0x1004d, +0x10050, 0x1005d, +0x10080, 0x100fa, +0x10140, 0x10174, +0x101fd, 0x101fd, +0x10280, 0x1029c, +0x102a0, 0x102d0, +0x102e0, 0x102e0, +0x10300, 0x1031f, +0x1032d, 0x1034a, +0x10350, 0x1037a, +0x10380, 0x1039d, +0x103a0, 0x103c3, +0x103c8, 0x103cf, +0x103d1, 0x103d5, +0x10400, 0x1049d, +0x104a0, 0x104a9, +0x104b0, 0x104d3, +0x104d8, 0x104fb, +0x10500, 0x10527, +0x10530, 0x10563, +0x10570, 0x1057a, +0x1057c, 0x1058a, +0x1058c, 0x10592, +0x10594, 0x10595, +0x10597, 0x105a1, +0x105a3, 0x105b1, +0x105b3, 0x105b9, +0x105bb, 0x105bc, +0x105c0, 0x105f3, +0x10600, 0x10736, +0x10740, 0x10755, +0x10760, 0x10767, +0x10780, 0x10785, +0x10787, 0x107b0, +0x107b2, 0x107ba, +0x10800, 0x10805, +0x10808, 0x10808, +0x1080a, 0x10835, +0x10837, 0x10838, +0x1083c, 0x1083c, +0x1083f, 0x10855, +0x10860, 0x10876, +0x10880, 0x1089e, +0x108e0, 0x108f2, +0x108f4, 0x108f5, +0x10900, 0x10915, +0x10920, 0x10939, +0x10980, 0x109b7, +0x109be, 0x109bf, +0x10a00, 0x10a03, +0x10a05, 0x10a06, +0x10a0c, 0x10a13, +0x10a15, 0x10a17, +0x10a19, 0x10a35, +0x10a38, 0x10a3a, +0x10a3f, 0x10a3f, +0x10a60, 0x10a7c, +0x10a80, 0x10a9c, +0x10ac0, 0x10ac7, +0x10ac9, 0x10ae6, +0x10b00, 0x10b35, +0x10b40, 0x10b55, +0x10b60, 0x10b72, +0x10b80, 0x10b91, +0x10c00, 0x10c48, +0x10c80, 0x10cb2, +0x10cc0, 0x10cf2, +0x10d00, 0x10d27, +0x10d30, 0x10d39, +0x10d40, 0x10d65, +0x10d69, 0x10d6d, +0x10d6f, 0x10d85, +0x10e80, 0x10ea9, +0x10eab, 0x10eac, +0x10eb0, 0x10eb1, +0x10ec2, 0x10ec4, +0x10efc, 0x10f1c, +0x10f27, 0x10f27, +0x10f30, 0x10f50, +0x10f70, 0x10f85, +0x10fb0, 0x10fc4, +0x10fe0, 0x10ff6, +0x11000, 0x11046, +0x11066, 0x11075, +0x1107f, 0x110ba, +0x110c2, 0x110c2, +0x110d0, 0x110e8, +0x110f0, 0x110f9, +0x11100, 0x11134, +0x11136, 0x1113f, +0x11144, 0x11147, +0x11150, 0x11173, +0x11176, 0x11176, +0x11180, 0x111c4, +0x111c9, 0x111cc, +0x111ce, 0x111da, +0x111dc, 0x111dc, +0x11200, 0x11211, +0x11213, 0x11237, +0x1123e, 0x11241, +0x11280, 0x11286, +0x11288, 0x11288, +0x1128a, 0x1128d, +0x1128f, 0x1129d, +0x1129f, 0x112a8, +0x112b0, 0x112ea, +0x112f0, 0x112f9, +0x11300, 0x11303, +0x11305, 0x1130c, +0x1130f, 0x11310, +0x11313, 0x11328, +0x1132a, 0x11330, +0x11332, 0x11333, +0x11335, 0x11339, +0x1133b, 0x11344, +0x11347, 0x11348, +0x1134b, 0x1134d, +0x11350, 0x11350, +0x11357, 0x11357, +0x1135d, 0x11363, +0x11366, 0x1136c, +0x11370, 0x11374, +0x11380, 0x11389, +0x1138b, 0x1138b, +0x1138e, 0x1138e, +0x11390, 0x113b5, +0x113b7, 0x113c0, +0x113c2, 0x113c2, +0x113c5, 0x113c5, +0x113c7, 0x113ca, +0x113cc, 0x113d3, +0x113e1, 0x113e2, +0x11400, 0x1144a, +0x11450, 0x11459, +0x1145e, 0x11461, +0x11480, 0x114c5, +0x114c7, 0x114c7, +0x114d0, 0x114d9, +0x11580, 0x115b5, +0x115b8, 0x115c0, +0x115d8, 0x115dd, +0x11600, 0x11640, +0x11644, 0x11644, +0x11650, 0x11659, +0x11680, 0x116b8, +0x116c0, 0x116c9, +0x116d0, 0x116e3, +0x11700, 0x1171a, +0x1171d, 0x1172b, +0x11730, 0x11739, +0x11740, 0x11746, +0x11800, 0x1183a, +0x118a0, 0x118e9, +0x118ff, 0x11906, +0x11909, 0x11909, +0x1190c, 0x11913, +0x11915, 0x11916, +0x11918, 0x11935, +0x11937, 0x11938, +0x1193b, 0x11943, +0x11950, 0x11959, +0x119a0, 0x119a7, +0x119aa, 0x119d7, +0x119da, 0x119e1, +0x119e3, 0x119e4, +0x11a00, 0x11a3e, +0x11a47, 0x11a47, +0x11a50, 0x11a99, +0x11a9d, 0x11a9d, +0x11ab0, 0x11af8, +0x11bc0, 0x11be0, +0x11bf0, 0x11bf9, +0x11c00, 0x11c08, +0x11c0a, 0x11c36, +0x11c38, 0x11c40, +0x11c50, 0x11c59, +0x11c72, 0x11c8f, +0x11c92, 0x11ca7, +0x11ca9, 0x11cb6, +0x11d00, 0x11d06, +0x11d08, 0x11d09, +0x11d0b, 0x11d36, +0x11d3a, 0x11d3a, +0x11d3c, 0x11d3d, +0x11d3f, 0x11d47, +0x11d50, 0x11d59, +0x11d60, 0x11d65, +0x11d67, 0x11d68, +0x11d6a, 0x11d8e, +0x11d90, 0x11d91, +0x11d93, 0x11d98, +0x11da0, 0x11da9, +0x11ee0, 0x11ef6, +0x11f00, 0x11f10, +0x11f12, 0x11f3a, +0x11f3e, 0x11f42, +0x11f50, 0x11f5a, +0x11fb0, 0x11fb0, +0x12000, 0x12399, +0x12400, 0x1246e, +0x12480, 0x12543, +0x12f90, 0x12ff0, +0x13000, 0x1342f, +0x13440, 0x13455, +0x13460, 0x143fa, +0x14400, 0x14646, +0x16100, 0x16139, +0x16800, 0x16a38, +0x16a40, 0x16a5e, +0x16a60, 0x16a69, +0x16a70, 0x16abe, +0x16ac0, 0x16ac9, +0x16ad0, 0x16aed, +0x16af0, 0x16af4, +0x16b00, 0x16b36, +0x16b40, 0x16b43, +0x16b50, 0x16b59, +0x16b63, 0x16b77, +0x16b7d, 0x16b8f, +0x16d40, 0x16d6c, +0x16d70, 0x16d79, +0x16e40, 0x16e7f, +0x16f00, 0x16f4a, +0x16f4f, 0x16f87, +0x16f8f, 0x16f9f, +0x16fe0, 0x16fe1, +0x16fe3, 0x16fe4, +0x16ff0, 0x16ff1, +0x17000, 0x187f7, +0x18800, 0x18cd5, +0x18cff, 0x18d08, +0x1aff0, 0x1aff3, +0x1aff5, 0x1affb, +0x1affd, 0x1affe, +0x1b000, 0x1b122, +0x1b132, 0x1b132, +0x1b150, 0x1b152, +0x1b155, 0x1b155, +0x1b164, 0x1b167, +0x1b170, 0x1b2fb, +0x1bc00, 0x1bc6a, +0x1bc70, 0x1bc7c, +0x1bc80, 0x1bc88, +0x1bc90, 0x1bc99, +0x1bc9d, 0x1bc9e, +0x1ccf0, 0x1ccf9, +0x1cf00, 0x1cf2d, +0x1cf30, 0x1cf46, +0x1d165, 0x1d169, +0x1d16d, 0x1d172, +0x1d17b, 0x1d182, +0x1d185, 0x1d18b, +0x1d1aa, 0x1d1ad, +0x1d242, 0x1d244, +0x1d400, 0x1d454, +0x1d456, 0x1d49c, +0x1d49e, 0x1d49f, +0x1d4a2, 0x1d4a2, +0x1d4a5, 0x1d4a6, +0x1d4a9, 0x1d4ac, +0x1d4ae, 0x1d4b9, +0x1d4bb, 0x1d4bb, +0x1d4bd, 0x1d4c3, +0x1d4c5, 0x1d505, +0x1d507, 0x1d50a, +0x1d50d, 0x1d514, +0x1d516, 0x1d51c, +0x1d51e, 0x1d539, +0x1d53b, 0x1d53e, +0x1d540, 0x1d544, +0x1d546, 0x1d546, +0x1d54a, 0x1d550, +0x1d552, 0x1d6a5, +0x1d6a8, 0x1d6c0, +0x1d6c2, 0x1d6da, +0x1d6dc, 0x1d6fa, +0x1d6fc, 0x1d714, +0x1d716, 0x1d734, +0x1d736, 0x1d74e, +0x1d750, 0x1d76e, +0x1d770, 0x1d788, +0x1d78a, 0x1d7a8, +0x1d7aa, 0x1d7c2, +0x1d7c4, 0x1d7cb, +0x1d7ce, 0x1d7ff, +0x1da00, 0x1da36, +0x1da3b, 0x1da6c, +0x1da75, 0x1da75, +0x1da84, 0x1da84, +0x1da9b, 0x1da9f, +0x1daa1, 0x1daaf, +0x1df00, 0x1df1e, +0x1df25, 0x1df2a, +0x1e000, 0x1e006, +0x1e008, 0x1e018, +0x1e01b, 0x1e021, +0x1e023, 0x1e024, +0x1e026, 0x1e02a, +0x1e030, 0x1e06d, +0x1e08f, 0x1e08f, +0x1e100, 0x1e12c, +0x1e130, 0x1e13d, +0x1e140, 0x1e149, +0x1e14e, 0x1e14e, +0x1e290, 0x1e2ae, +0x1e2c0, 0x1e2f9, +0x1e4d0, 0x1e4f9, +0x1e5d0, 0x1e5fa, +0x1e7e0, 0x1e7e6, +0x1e7e8, 0x1e7eb, +0x1e7ed, 0x1e7ee, +0x1e7f0, 0x1e7fe, +0x1e800, 0x1e8c4, +0x1e8d0, 0x1e8d6, +0x1e900, 0x1e94b, +0x1e950, 0x1e959, +0x1ee00, 0x1ee03, +0x1ee05, 0x1ee1f, +0x1ee21, 0x1ee22, +0x1ee24, 0x1ee24, +0x1ee27, 0x1ee27, +0x1ee29, 0x1ee32, +0x1ee34, 0x1ee37, +0x1ee39, 0x1ee39, +0x1ee3b, 0x1ee3b, +0x1ee42, 0x1ee42, +0x1ee47, 0x1ee47, +0x1ee49, 0x1ee49, +0x1ee4b, 0x1ee4b, +0x1ee4d, 0x1ee4f, +0x1ee51, 0x1ee52, +0x1ee54, 0x1ee54, +0x1ee57, 0x1ee57, +0x1ee59, 0x1ee59, +0x1ee5b, 0x1ee5b, +0x1ee5d, 0x1ee5d, +0x1ee5f, 0x1ee5f, +0x1ee61, 0x1ee62, +0x1ee64, 0x1ee64, +0x1ee67, 0x1ee6a, +0x1ee6c, 0x1ee72, +0x1ee74, 0x1ee77, +0x1ee79, 0x1ee7c, +0x1ee7e, 0x1ee7e, +0x1ee80, 0x1ee89, +0x1ee8b, 0x1ee9b, +0x1eea1, 0x1eea3, +0x1eea5, 0x1eea9, +0x1eeab, 0x1eebb, +0x1fbf0, 0x1fbf9, +0x20000, 0x2a6df, +0x2a700, 0x2b739, +0x2b740, 0x2b81d, +0x2b820, 0x2cea1, +0x2ceb0, 0x2ebe0, +0x2ebf0, 0x2ee5d, +0x2f800, 0x2fa1d, +0x30000, 0x3134a, +0x31350, 0x323af, +0xe0100, 0xe01ef, +}; /* END of CR_ID_Continue */ + +/* PROPERTY: 'ID_Start': Derived Property */ +static const OnigCodePoint +CR_ID_Start[] = { 677, +0x0041, 0x005a, +0x0061, 0x007a, +0x00aa, 0x00aa, +0x00b5, 0x00b5, +0x00ba, 0x00ba, +0x00c0, 0x00d6, +0x00d8, 0x00f6, +0x00f8, 0x02c1, +0x02c6, 0x02d1, +0x02e0, 0x02e4, +0x02ec, 0x02ec, +0x02ee, 0x02ee, +0x0370, 0x0374, +0x0376, 0x0377, +0x037a, 0x037d, +0x037f, 0x037f, +0x0386, 0x0386, +0x0388, 0x038a, +0x038c, 0x038c, +0x038e, 0x03a1, +0x03a3, 0x03f5, +0x03f7, 0x0481, +0x048a, 0x052f, +0x0531, 0x0556, +0x0559, 0x0559, +0x0560, 0x0588, +0x05d0, 0x05ea, +0x05ef, 0x05f2, +0x0620, 0x064a, +0x066e, 0x066f, +0x0671, 0x06d3, +0x06d5, 0x06d5, +0x06e5, 0x06e6, +0x06ee, 0x06ef, +0x06fa, 0x06fc, +0x06ff, 0x06ff, +0x0710, 0x0710, +0x0712, 0x072f, +0x074d, 0x07a5, +0x07b1, 0x07b1, +0x07ca, 0x07ea, +0x07f4, 0x07f5, +0x07fa, 0x07fa, +0x0800, 0x0815, +0x081a, 0x081a, +0x0824, 0x0824, +0x0828, 0x0828, +0x0840, 0x0858, +0x0860, 0x086a, +0x0870, 0x0887, +0x0889, 0x088e, +0x08a0, 0x08c9, +0x0904, 0x0939, +0x093d, 0x093d, +0x0950, 0x0950, +0x0958, 0x0961, +0x0971, 0x0980, +0x0985, 0x098c, +0x098f, 0x0990, +0x0993, 0x09a8, +0x09aa, 0x09b0, +0x09b2, 0x09b2, +0x09b6, 0x09b9, +0x09bd, 0x09bd, +0x09ce, 0x09ce, +0x09dc, 0x09dd, +0x09df, 0x09e1, +0x09f0, 0x09f1, +0x09fc, 0x09fc, +0x0a05, 0x0a0a, +0x0a0f, 0x0a10, +0x0a13, 0x0a28, +0x0a2a, 0x0a30, +0x0a32, 0x0a33, +0x0a35, 0x0a36, +0x0a38, 0x0a39, +0x0a59, 0x0a5c, +0x0a5e, 0x0a5e, +0x0a72, 0x0a74, +0x0a85, 0x0a8d, +0x0a8f, 0x0a91, +0x0a93, 0x0aa8, +0x0aaa, 0x0ab0, +0x0ab2, 0x0ab3, +0x0ab5, 0x0ab9, +0x0abd, 0x0abd, +0x0ad0, 0x0ad0, +0x0ae0, 0x0ae1, +0x0af9, 0x0af9, +0x0b05, 0x0b0c, +0x0b0f, 0x0b10, +0x0b13, 0x0b28, +0x0b2a, 0x0b30, +0x0b32, 0x0b33, +0x0b35, 0x0b39, +0x0b3d, 0x0b3d, +0x0b5c, 0x0b5d, +0x0b5f, 0x0b61, +0x0b71, 0x0b71, +0x0b83, 0x0b83, +0x0b85, 0x0b8a, +0x0b8e, 0x0b90, +0x0b92, 0x0b95, +0x0b99, 0x0b9a, +0x0b9c, 0x0b9c, +0x0b9e, 0x0b9f, +0x0ba3, 0x0ba4, +0x0ba8, 0x0baa, +0x0bae, 0x0bb9, +0x0bd0, 0x0bd0, +0x0c05, 0x0c0c, +0x0c0e, 0x0c10, +0x0c12, 0x0c28, +0x0c2a, 0x0c39, +0x0c3d, 0x0c3d, +0x0c58, 0x0c5a, +0x0c5d, 0x0c5d, +0x0c60, 0x0c61, +0x0c80, 0x0c80, +0x0c85, 0x0c8c, +0x0c8e, 0x0c90, +0x0c92, 0x0ca8, +0x0caa, 0x0cb3, +0x0cb5, 0x0cb9, +0x0cbd, 0x0cbd, +0x0cdd, 0x0cde, +0x0ce0, 0x0ce1, +0x0cf1, 0x0cf2, +0x0d04, 0x0d0c, +0x0d0e, 0x0d10, +0x0d12, 0x0d3a, +0x0d3d, 0x0d3d, +0x0d4e, 0x0d4e, +0x0d54, 0x0d56, +0x0d5f, 0x0d61, +0x0d7a, 0x0d7f, +0x0d85, 0x0d96, +0x0d9a, 0x0db1, +0x0db3, 0x0dbb, +0x0dbd, 0x0dbd, +0x0dc0, 0x0dc6, +0x0e01, 0x0e30, +0x0e32, 0x0e33, +0x0e40, 0x0e46, +0x0e81, 0x0e82, +0x0e84, 0x0e84, +0x0e86, 0x0e8a, +0x0e8c, 0x0ea3, +0x0ea5, 0x0ea5, +0x0ea7, 0x0eb0, +0x0eb2, 0x0eb3, +0x0ebd, 0x0ebd, +0x0ec0, 0x0ec4, +0x0ec6, 0x0ec6, +0x0edc, 0x0edf, +0x0f00, 0x0f00, +0x0f40, 0x0f47, +0x0f49, 0x0f6c, +0x0f88, 0x0f8c, +0x1000, 0x102a, +0x103f, 0x103f, +0x1050, 0x1055, +0x105a, 0x105d, +0x1061, 0x1061, +0x1065, 0x1066, +0x106e, 0x1070, +0x1075, 0x1081, +0x108e, 0x108e, +0x10a0, 0x10c5, +0x10c7, 0x10c7, +0x10cd, 0x10cd, +0x10d0, 0x10fa, +0x10fc, 0x1248, +0x124a, 0x124d, +0x1250, 0x1256, +0x1258, 0x1258, +0x125a, 0x125d, +0x1260, 0x1288, +0x128a, 0x128d, +0x1290, 0x12b0, +0x12b2, 0x12b5, +0x12b8, 0x12be, +0x12c0, 0x12c0, +0x12c2, 0x12c5, +0x12c8, 0x12d6, +0x12d8, 0x1310, +0x1312, 0x1315, +0x1318, 0x135a, +0x1380, 0x138f, +0x13a0, 0x13f5, +0x13f8, 0x13fd, +0x1401, 0x166c, +0x166f, 0x167f, +0x1681, 0x169a, +0x16a0, 0x16ea, +0x16ee, 0x16f8, +0x1700, 0x1711, +0x171f, 0x1731, +0x1740, 0x1751, +0x1760, 0x176c, +0x176e, 0x1770, +0x1780, 0x17b3, +0x17d7, 0x17d7, +0x17dc, 0x17dc, +0x1820, 0x1878, +0x1880, 0x18a8, +0x18aa, 0x18aa, +0x18b0, 0x18f5, +0x1900, 0x191e, +0x1950, 0x196d, +0x1970, 0x1974, +0x1980, 0x19ab, +0x19b0, 0x19c9, +0x1a00, 0x1a16, +0x1a20, 0x1a54, +0x1aa7, 0x1aa7, +0x1b05, 0x1b33, +0x1b45, 0x1b4c, +0x1b83, 0x1ba0, +0x1bae, 0x1baf, +0x1bba, 0x1be5, +0x1c00, 0x1c23, +0x1c4d, 0x1c4f, +0x1c5a, 0x1c7d, +0x1c80, 0x1c8a, +0x1c90, 0x1cba, +0x1cbd, 0x1cbf, +0x1ce9, 0x1cec, +0x1cee, 0x1cf3, +0x1cf5, 0x1cf6, +0x1cfa, 0x1cfa, +0x1d00, 0x1dbf, +0x1e00, 0x1f15, +0x1f18, 0x1f1d, +0x1f20, 0x1f45, +0x1f48, 0x1f4d, +0x1f50, 0x1f57, +0x1f59, 0x1f59, +0x1f5b, 0x1f5b, +0x1f5d, 0x1f5d, +0x1f5f, 0x1f7d, +0x1f80, 0x1fb4, +0x1fb6, 0x1fbc, +0x1fbe, 0x1fbe, +0x1fc2, 0x1fc4, +0x1fc6, 0x1fcc, +0x1fd0, 0x1fd3, +0x1fd6, 0x1fdb, +0x1fe0, 0x1fec, +0x1ff2, 0x1ff4, +0x1ff6, 0x1ffc, +0x2071, 0x2071, +0x207f, 0x207f, +0x2090, 0x209c, +0x2102, 0x2102, +0x2107, 0x2107, +0x210a, 0x2113, +0x2115, 0x2115, +0x2118, 0x211d, +0x2124, 0x2124, +0x2126, 0x2126, +0x2128, 0x2128, +0x212a, 0x2139, +0x213c, 0x213f, +0x2145, 0x2149, +0x214e, 0x214e, +0x2160, 0x2188, +0x2c00, 0x2ce4, +0x2ceb, 0x2cee, +0x2cf2, 0x2cf3, +0x2d00, 0x2d25, +0x2d27, 0x2d27, +0x2d2d, 0x2d2d, +0x2d30, 0x2d67, +0x2d6f, 0x2d6f, +0x2d80, 0x2d96, +0x2da0, 0x2da6, +0x2da8, 0x2dae, +0x2db0, 0x2db6, +0x2db8, 0x2dbe, +0x2dc0, 0x2dc6, +0x2dc8, 0x2dce, +0x2dd0, 0x2dd6, +0x2dd8, 0x2dde, +0x3005, 0x3007, +0x3021, 0x3029, +0x3031, 0x3035, +0x3038, 0x303c, +0x3041, 0x3096, +0x309b, 0x309f, +0x30a1, 0x30fa, +0x30fc, 0x30ff, +0x3105, 0x312f, +0x3131, 0x318e, +0x31a0, 0x31bf, +0x31f0, 0x31ff, +0x3400, 0x4dbf, +0x4e00, 0xa48c, +0xa4d0, 0xa4fd, +0xa500, 0xa60c, +0xa610, 0xa61f, +0xa62a, 0xa62b, +0xa640, 0xa66e, +0xa67f, 0xa69d, +0xa6a0, 0xa6ef, +0xa717, 0xa71f, +0xa722, 0xa788, +0xa78b, 0xa7cd, +0xa7d0, 0xa7d1, +0xa7d3, 0xa7d3, +0xa7d5, 0xa7dc, +0xa7f2, 0xa801, +0xa803, 0xa805, +0xa807, 0xa80a, +0xa80c, 0xa822, +0xa840, 0xa873, +0xa882, 0xa8b3, +0xa8f2, 0xa8f7, +0xa8fb, 0xa8fb, +0xa8fd, 0xa8fe, +0xa90a, 0xa925, +0xa930, 0xa946, +0xa960, 0xa97c, +0xa984, 0xa9b2, +0xa9cf, 0xa9cf, +0xa9e0, 0xa9e4, +0xa9e6, 0xa9ef, +0xa9fa, 0xa9fe, +0xaa00, 0xaa28, +0xaa40, 0xaa42, +0xaa44, 0xaa4b, +0xaa60, 0xaa76, +0xaa7a, 0xaa7a, +0xaa7e, 0xaaaf, +0xaab1, 0xaab1, +0xaab5, 0xaab6, +0xaab9, 0xaabd, +0xaac0, 0xaac0, +0xaac2, 0xaac2, +0xaadb, 0xaadd, +0xaae0, 0xaaea, +0xaaf2, 0xaaf4, +0xab01, 0xab06, +0xab09, 0xab0e, +0xab11, 0xab16, +0xab20, 0xab26, +0xab28, 0xab2e, +0xab30, 0xab5a, +0xab5c, 0xab69, +0xab70, 0xabe2, +0xac00, 0xd7a3, +0xd7b0, 0xd7c6, +0xd7cb, 0xd7fb, +0xf900, 0xfa6d, +0xfa70, 0xfad9, +0xfb00, 0xfb06, +0xfb13, 0xfb17, +0xfb1d, 0xfb1d, +0xfb1f, 0xfb28, +0xfb2a, 0xfb36, +0xfb38, 0xfb3c, +0xfb3e, 0xfb3e, +0xfb40, 0xfb41, +0xfb43, 0xfb44, +0xfb46, 0xfbb1, +0xfbd3, 0xfd3d, +0xfd50, 0xfd8f, +0xfd92, 0xfdc7, +0xfdf0, 0xfdfb, +0xfe70, 0xfe74, +0xfe76, 0xfefc, +0xff21, 0xff3a, +0xff41, 0xff5a, +0xff66, 0xffbe, +0xffc2, 0xffc7, +0xffca, 0xffcf, +0xffd2, 0xffd7, +0xffda, 0xffdc, +0x10000, 0x1000b, +0x1000d, 0x10026, +0x10028, 0x1003a, +0x1003c, 0x1003d, +0x1003f, 0x1004d, +0x10050, 0x1005d, +0x10080, 0x100fa, +0x10140, 0x10174, +0x10280, 0x1029c, +0x102a0, 0x102d0, +0x10300, 0x1031f, +0x1032d, 0x1034a, +0x10350, 0x10375, +0x10380, 0x1039d, +0x103a0, 0x103c3, +0x103c8, 0x103cf, +0x103d1, 0x103d5, +0x10400, 0x1049d, +0x104b0, 0x104d3, +0x104d8, 0x104fb, +0x10500, 0x10527, +0x10530, 0x10563, +0x10570, 0x1057a, +0x1057c, 0x1058a, +0x1058c, 0x10592, +0x10594, 0x10595, +0x10597, 0x105a1, +0x105a3, 0x105b1, +0x105b3, 0x105b9, +0x105bb, 0x105bc, +0x105c0, 0x105f3, +0x10600, 0x10736, +0x10740, 0x10755, +0x10760, 0x10767, +0x10780, 0x10785, +0x10787, 0x107b0, +0x107b2, 0x107ba, +0x10800, 0x10805, +0x10808, 0x10808, +0x1080a, 0x10835, +0x10837, 0x10838, +0x1083c, 0x1083c, +0x1083f, 0x10855, +0x10860, 0x10876, +0x10880, 0x1089e, +0x108e0, 0x108f2, +0x108f4, 0x108f5, +0x10900, 0x10915, +0x10920, 0x10939, +0x10980, 0x109b7, +0x109be, 0x109bf, +0x10a00, 0x10a00, +0x10a10, 0x10a13, +0x10a15, 0x10a17, +0x10a19, 0x10a35, +0x10a60, 0x10a7c, +0x10a80, 0x10a9c, +0x10ac0, 0x10ac7, +0x10ac9, 0x10ae4, +0x10b00, 0x10b35, +0x10b40, 0x10b55, +0x10b60, 0x10b72, +0x10b80, 0x10b91, +0x10c00, 0x10c48, +0x10c80, 0x10cb2, +0x10cc0, 0x10cf2, +0x10d00, 0x10d23, +0x10d4a, 0x10d65, +0x10d6f, 0x10d85, +0x10e80, 0x10ea9, +0x10eb0, 0x10eb1, +0x10ec2, 0x10ec4, +0x10f00, 0x10f1c, +0x10f27, 0x10f27, +0x10f30, 0x10f45, +0x10f70, 0x10f81, +0x10fb0, 0x10fc4, +0x10fe0, 0x10ff6, +0x11003, 0x11037, +0x11071, 0x11072, +0x11075, 0x11075, +0x11083, 0x110af, +0x110d0, 0x110e8, +0x11103, 0x11126, +0x11144, 0x11144, +0x11147, 0x11147, +0x11150, 0x11172, +0x11176, 0x11176, +0x11183, 0x111b2, +0x111c1, 0x111c4, +0x111da, 0x111da, +0x111dc, 0x111dc, +0x11200, 0x11211, +0x11213, 0x1122b, +0x1123f, 0x11240, +0x11280, 0x11286, +0x11288, 0x11288, +0x1128a, 0x1128d, +0x1128f, 0x1129d, +0x1129f, 0x112a8, +0x112b0, 0x112de, +0x11305, 0x1130c, +0x1130f, 0x11310, +0x11313, 0x11328, +0x1132a, 0x11330, +0x11332, 0x11333, +0x11335, 0x11339, +0x1133d, 0x1133d, +0x11350, 0x11350, +0x1135d, 0x11361, +0x11380, 0x11389, +0x1138b, 0x1138b, +0x1138e, 0x1138e, +0x11390, 0x113b5, +0x113b7, 0x113b7, +0x113d1, 0x113d1, +0x113d3, 0x113d3, +0x11400, 0x11434, +0x11447, 0x1144a, +0x1145f, 0x11461, +0x11480, 0x114af, +0x114c4, 0x114c5, +0x114c7, 0x114c7, +0x11580, 0x115ae, +0x115d8, 0x115db, +0x11600, 0x1162f, +0x11644, 0x11644, +0x11680, 0x116aa, +0x116b8, 0x116b8, +0x11700, 0x1171a, +0x11740, 0x11746, +0x11800, 0x1182b, +0x118a0, 0x118df, +0x118ff, 0x11906, +0x11909, 0x11909, +0x1190c, 0x11913, +0x11915, 0x11916, +0x11918, 0x1192f, +0x1193f, 0x1193f, +0x11941, 0x11941, +0x119a0, 0x119a7, +0x119aa, 0x119d0, +0x119e1, 0x119e1, +0x119e3, 0x119e3, +0x11a00, 0x11a00, +0x11a0b, 0x11a32, +0x11a3a, 0x11a3a, +0x11a50, 0x11a50, +0x11a5c, 0x11a89, +0x11a9d, 0x11a9d, +0x11ab0, 0x11af8, +0x11bc0, 0x11be0, +0x11c00, 0x11c08, +0x11c0a, 0x11c2e, +0x11c40, 0x11c40, +0x11c72, 0x11c8f, +0x11d00, 0x11d06, +0x11d08, 0x11d09, +0x11d0b, 0x11d30, +0x11d46, 0x11d46, +0x11d60, 0x11d65, +0x11d67, 0x11d68, +0x11d6a, 0x11d89, +0x11d98, 0x11d98, +0x11ee0, 0x11ef2, +0x11f02, 0x11f02, +0x11f04, 0x11f10, +0x11f12, 0x11f33, +0x11fb0, 0x11fb0, +0x12000, 0x12399, +0x12400, 0x1246e, +0x12480, 0x12543, +0x12f90, 0x12ff0, +0x13000, 0x1342f, +0x13441, 0x13446, +0x13460, 0x143fa, +0x14400, 0x14646, +0x16100, 0x1611d, +0x16800, 0x16a38, +0x16a40, 0x16a5e, +0x16a70, 0x16abe, +0x16ad0, 0x16aed, +0x16b00, 0x16b2f, +0x16b40, 0x16b43, +0x16b63, 0x16b77, +0x16b7d, 0x16b8f, +0x16d40, 0x16d6c, +0x16e40, 0x16e7f, +0x16f00, 0x16f4a, +0x16f50, 0x16f50, +0x16f93, 0x16f9f, +0x16fe0, 0x16fe1, +0x16fe3, 0x16fe3, +0x17000, 0x187f7, +0x18800, 0x18cd5, +0x18cff, 0x18d08, +0x1aff0, 0x1aff3, +0x1aff5, 0x1affb, +0x1affd, 0x1affe, +0x1b000, 0x1b122, +0x1b132, 0x1b132, +0x1b150, 0x1b152, +0x1b155, 0x1b155, +0x1b164, 0x1b167, +0x1b170, 0x1b2fb, +0x1bc00, 0x1bc6a, +0x1bc70, 0x1bc7c, +0x1bc80, 0x1bc88, +0x1bc90, 0x1bc99, +0x1d400, 0x1d454, +0x1d456, 0x1d49c, +0x1d49e, 0x1d49f, +0x1d4a2, 0x1d4a2, +0x1d4a5, 0x1d4a6, +0x1d4a9, 0x1d4ac, +0x1d4ae, 0x1d4b9, +0x1d4bb, 0x1d4bb, +0x1d4bd, 0x1d4c3, +0x1d4c5, 0x1d505, +0x1d507, 0x1d50a, +0x1d50d, 0x1d514, +0x1d516, 0x1d51c, +0x1d51e, 0x1d539, +0x1d53b, 0x1d53e, +0x1d540, 0x1d544, +0x1d546, 0x1d546, +0x1d54a, 0x1d550, +0x1d552, 0x1d6a5, +0x1d6a8, 0x1d6c0, +0x1d6c2, 0x1d6da, +0x1d6dc, 0x1d6fa, +0x1d6fc, 0x1d714, +0x1d716, 0x1d734, +0x1d736, 0x1d74e, +0x1d750, 0x1d76e, +0x1d770, 0x1d788, +0x1d78a, 0x1d7a8, +0x1d7aa, 0x1d7c2, +0x1d7c4, 0x1d7cb, +0x1df00, 0x1df1e, +0x1df25, 0x1df2a, +0x1e030, 0x1e06d, +0x1e100, 0x1e12c, +0x1e137, 0x1e13d, +0x1e14e, 0x1e14e, +0x1e290, 0x1e2ad, +0x1e2c0, 0x1e2eb, +0x1e4d0, 0x1e4eb, +0x1e5d0, 0x1e5ed, +0x1e5f0, 0x1e5f0, +0x1e7e0, 0x1e7e6, +0x1e7e8, 0x1e7eb, +0x1e7ed, 0x1e7ee, +0x1e7f0, 0x1e7fe, +0x1e800, 0x1e8c4, +0x1e900, 0x1e943, +0x1e94b, 0x1e94b, +0x1ee00, 0x1ee03, +0x1ee05, 0x1ee1f, +0x1ee21, 0x1ee22, +0x1ee24, 0x1ee24, +0x1ee27, 0x1ee27, +0x1ee29, 0x1ee32, +0x1ee34, 0x1ee37, +0x1ee39, 0x1ee39, +0x1ee3b, 0x1ee3b, +0x1ee42, 0x1ee42, +0x1ee47, 0x1ee47, +0x1ee49, 0x1ee49, +0x1ee4b, 0x1ee4b, +0x1ee4d, 0x1ee4f, +0x1ee51, 0x1ee52, +0x1ee54, 0x1ee54, +0x1ee57, 0x1ee57, +0x1ee59, 0x1ee59, +0x1ee5b, 0x1ee5b, +0x1ee5d, 0x1ee5d, +0x1ee5f, 0x1ee5f, +0x1ee61, 0x1ee62, +0x1ee64, 0x1ee64, +0x1ee67, 0x1ee6a, +0x1ee6c, 0x1ee72, +0x1ee74, 0x1ee77, +0x1ee79, 0x1ee7c, +0x1ee7e, 0x1ee7e, +0x1ee80, 0x1ee89, +0x1ee8b, 0x1ee9b, +0x1eea1, 0x1eea3, +0x1eea5, 0x1eea9, +0x1eeab, 0x1eebb, +0x20000, 0x2a6df, +0x2a700, 0x2b739, +0x2b740, 0x2b81d, +0x2b820, 0x2cea1, +0x2ceb0, 0x2ebe0, +0x2ebf0, 0x2ee5d, +0x2f800, 0x2fa1d, +0x30000, 0x3134a, +0x31350, 0x323af, +}; /* END of CR_ID_Start */ + +/* PROPERTY: 'Ideographic': Binary Property */ +static const OnigCodePoint +CR_Ideographic[] = { 21, +0x3006, 0x3007, +0x3021, 0x3029, +0x3038, 0x303a, +0x3400, 0x4dbf, +0x4e00, 0x9fff, +0xf900, 0xfa6d, +0xfa70, 0xfad9, +0x16fe4, 0x16fe4, +0x17000, 0x187f7, +0x18800, 0x18cd5, +0x18cff, 0x18d08, +0x1b170, 0x1b2fb, +0x20000, 0x2a6df, +0x2a700, 0x2b739, +0x2b740, 0x2b81d, +0x2b820, 0x2cea1, +0x2ceb0, 0x2ebe0, +0x2ebf0, 0x2ee5d, +0x2f800, 0x2fa1d, +0x30000, 0x3134a, +0x31350, 0x323af, +}; /* END of CR_Ideographic */ + +/* PROPERTY: 'Imperial_Aramaic': Script */ +static const OnigCodePoint +CR_Imperial_Aramaic[] = { 2, +0x10840, 0x10855, +0x10857, 0x1085f, +}; /* END of CR_Imperial_Aramaic */ + +/* PROPERTY: 'InCB': Derived Property */ +static const OnigCodePoint +CR_InCB[] = { 293, +0x094d, 0x094d, +0x09cd, 0x09cd, +0x0acd, 0x0acd, +0x0b4d, 0x0b4d, +0x0c4d, 0x0c4d, +0x0d4d, 0x0d4d, +0x0d57, 0x0d57, +0x0d62, 0x0d63, +0x0d81, 0x0d81, +0x0dca, 0x0dca, +0x0dcf, 0x0dcf, +0x0dd2, 0x0dd4, +0x0dd6, 0x0dd6, +0x0ddf, 0x0ddf, +0x0e31, 0x0e31, +0x0e34, 0x0e3a, +0x0e47, 0x0e4e, +0x0eb1, 0x0eb1, +0x0eb4, 0x0ebc, +0x0ec8, 0x0ece, +0x0f18, 0x0f19, +0x0f35, 0x0f35, +0x0f37, 0x0f37, +0x0f39, 0x0f39, +0x0f71, 0x0f7e, +0x0f80, 0x0f84, +0x0f86, 0x0f87, +0x0f8d, 0x0f97, +0x0f99, 0x0fbc, +0x0fc6, 0x0fc6, +0x102d, 0x1030, +0x1032, 0x1037, +0x1039, 0x103a, +0x103d, 0x103e, +0x1058, 0x1059, +0x105e, 0x1060, +0x1071, 0x1074, +0x1082, 0x1082, +0x1085, 0x1086, +0x108d, 0x108d, +0x109d, 0x109d, +0x135d, 0x135f, +0x1712, 0x1715, +0x1732, 0x1734, +0x1752, 0x1753, +0x1772, 0x1773, +0x17b4, 0x17b5, +0x17b7, 0x17bd, +0x17c6, 0x17c6, +0x17c9, 0x17d3, +0x17dd, 0x17dd, +0x180b, 0x180d, +0x180f, 0x180f, +0x1885, 0x1886, +0x18a9, 0x18a9, +0x1920, 0x1922, +0x1927, 0x1928, +0x1932, 0x1932, +0x1939, 0x193b, +0x1a17, 0x1a18, +0x1a1b, 0x1a1b, +0x1a56, 0x1a56, +0x1a58, 0x1a5e, +0x1a60, 0x1a60, +0x1a62, 0x1a62, +0x1a65, 0x1a6c, +0x1a73, 0x1a7c, +0x1a7f, 0x1a7f, +0x1ab0, 0x1ace, +0x1b00, 0x1b03, +0x1b34, 0x1b3d, +0x1b42, 0x1b44, +0x1b6b, 0x1b73, +0x1b80, 0x1b81, +0x1ba2, 0x1ba5, +0x1ba8, 0x1bad, +0x1be6, 0x1be6, +0x1be8, 0x1be9, +0x1bed, 0x1bed, +0x1bef, 0x1bf3, +0x1c2c, 0x1c33, +0x1c36, 0x1c37, +0x1cd0, 0x1cd2, +0x1cd4, 0x1ce0, +0x1ce2, 0x1ce8, +0x1ced, 0x1ced, +0x1cf4, 0x1cf4, +0x1cf8, 0x1cf9, +0x1dc0, 0x1dff, +0x200d, 0x200d, +0x20d0, 0x20f0, +0x2cef, 0x2cf1, +0x2d7f, 0x2d7f, +0x2de0, 0x2dff, +0x302a, 0x302f, +0x3099, 0x309a, +0xa66f, 0xa672, +0xa674, 0xa67d, +0xa69e, 0xa69f, +0xa6f0, 0xa6f1, +0xa802, 0xa802, +0xa806, 0xa806, +0xa80b, 0xa80b, +0xa825, 0xa826, +0xa82c, 0xa82c, +0xa8c4, 0xa8c5, +0xa8e0, 0xa8f1, +0xa8ff, 0xa8ff, +0xa926, 0xa92d, +0xa947, 0xa951, +0xa953, 0xa953, +0xa980, 0xa982, +0xa9b3, 0xa9b3, +0xa9b6, 0xa9b9, +0xa9bc, 0xa9bd, +0xa9c0, 0xa9c0, +0xa9e5, 0xa9e5, +0xaa29, 0xaa2e, +0xaa31, 0xaa32, +0xaa35, 0xaa36, +0xaa43, 0xaa43, +0xaa4c, 0xaa4c, +0xaa7c, 0xaa7c, +0xaab0, 0xaab0, +0xaab2, 0xaab4, +0xaab7, 0xaab8, +0xaabe, 0xaabf, +0xaac1, 0xaac1, +0xaaec, 0xaaed, +0xaaf6, 0xaaf6, +0xabe5, 0xabe5, +0xabe8, 0xabe8, +0xabed, 0xabed, +0xfb1e, 0xfb1e, +0xfe00, 0xfe0f, +0xfe20, 0xfe2f, +0xff9e, 0xff9f, +0x101fd, 0x101fd, +0x102e0, 0x102e0, +0x10376, 0x1037a, +0x10a01, 0x10a03, +0x10a05, 0x10a06, +0x10a0c, 0x10a0f, +0x10a38, 0x10a3a, +0x10a3f, 0x10a3f, +0x10ae5, 0x10ae6, +0x10d24, 0x10d27, +0x10d69, 0x10d6d, +0x10eab, 0x10eac, +0x10efc, 0x10eff, +0x10f46, 0x10f50, +0x10f82, 0x10f85, +0x11001, 0x11001, +0x11038, 0x11046, +0x11070, 0x11070, +0x11073, 0x11074, +0x1107f, 0x11081, +0x110b3, 0x110b6, +0x110b9, 0x110ba, +0x110c2, 0x110c2, +0x11100, 0x11102, +0x11127, 0x1112b, +0x1112d, 0x11134, +0x11173, 0x11173, +0x11180, 0x11181, +0x111b6, 0x111be, +0x111c0, 0x111c0, +0x111c9, 0x111cc, +0x111cf, 0x111cf, +0x1122f, 0x11231, +0x11234, 0x11237, +0x1123e, 0x1123e, +0x11241, 0x11241, +0x112df, 0x112df, +0x112e3, 0x112ea, +0x11300, 0x11301, +0x1133b, 0x1133c, +0x1133e, 0x1133e, +0x11340, 0x11340, +0x1134d, 0x1134d, +0x11357, 0x11357, +0x11366, 0x1136c, +0x11370, 0x11374, +0x113b8, 0x113b8, +0x113bb, 0x113c0, +0x113c2, 0x113c2, +0x113c5, 0x113c5, +0x113c7, 0x113c9, +0x113ce, 0x113d0, +0x113d2, 0x113d2, +0x113e1, 0x113e2, +0x11438, 0x1143f, +0x11442, 0x11444, +0x11446, 0x11446, +0x1145e, 0x1145e, +0x114b0, 0x114b0, +0x114b3, 0x114b8, +0x114ba, 0x114ba, +0x114bd, 0x114bd, +0x114bf, 0x114c0, +0x114c2, 0x114c3, +0x115af, 0x115af, +0x115b2, 0x115b5, +0x115bc, 0x115bd, +0x115bf, 0x115c0, +0x115dc, 0x115dd, +0x11633, 0x1163a, +0x1163d, 0x1163d, +0x1163f, 0x11640, +0x116ab, 0x116ab, +0x116ad, 0x116ad, +0x116b0, 0x116b7, +0x1171d, 0x1171d, +0x1171f, 0x1171f, +0x11722, 0x11725, +0x11727, 0x1172b, +0x1182f, 0x11837, +0x11839, 0x1183a, +0x11930, 0x11930, +0x1193b, 0x1193e, +0x11943, 0x11943, +0x119d4, 0x119d7, +0x119da, 0x119db, +0x119e0, 0x119e0, +0x11a01, 0x11a0a, +0x11a33, 0x11a38, +0x11a3b, 0x11a3e, +0x11a47, 0x11a47, +0x11a51, 0x11a56, +0x11a59, 0x11a5b, +0x11a8a, 0x11a96, +0x11a98, 0x11a99, +0x11c30, 0x11c36, +0x11c38, 0x11c3d, +0x11c3f, 0x11c3f, +0x11c92, 0x11ca7, +0x11caa, 0x11cb0, +0x11cb2, 0x11cb3, +0x11cb5, 0x11cb6, +0x11d31, 0x11d36, +0x11d3a, 0x11d3a, +0x11d3c, 0x11d3d, +0x11d3f, 0x11d45, +0x11d47, 0x11d47, +0x11d90, 0x11d91, +0x11d95, 0x11d95, +0x11d97, 0x11d97, +0x11ef3, 0x11ef4, +0x11f00, 0x11f01, +0x11f36, 0x11f3a, +0x11f40, 0x11f42, +0x11f5a, 0x11f5a, +0x13440, 0x13440, +0x13447, 0x13455, +0x1611e, 0x16129, +0x1612d, 0x1612f, +0x16af0, 0x16af4, +0x16b30, 0x16b36, +0x16f4f, 0x16f4f, +0x16f8f, 0x16f92, +0x16fe4, 0x16fe4, +0x16ff0, 0x16ff1, +0x1bc9d, 0x1bc9e, +0x1cf00, 0x1cf2d, +0x1cf30, 0x1cf46, +0x1d165, 0x1d169, +0x1d16d, 0x1d172, +0x1d17b, 0x1d182, +0x1d185, 0x1d18b, +0x1d1aa, 0x1d1ad, +0x1d242, 0x1d244, +0x1da00, 0x1da36, +0x1da3b, 0x1da6c, +0x1da75, 0x1da75, +0x1da84, 0x1da84, +0x1da9b, 0x1da9f, +0x1daa1, 0x1daaf, +0x1e000, 0x1e006, +0x1e008, 0x1e018, +0x1e01b, 0x1e021, +0x1e023, 0x1e024, +0x1e026, 0x1e02a, +0x1e08f, 0x1e08f, +0x1e130, 0x1e136, +0x1e2ae, 0x1e2ae, +0x1e2ec, 0x1e2ef, +0x1e4ec, 0x1e4ef, +0x1e5ee, 0x1e5ef, +0x1e8d0, 0x1e8d6, +0x1e944, 0x1e94a, +0x1f3fb, 0x1f3ff, +0xe0020, 0xe007f, +0xe0100, 0xe01ef, +}; /* END of CR_InCB */ + +/* PROPERTY: 'Inherited': Script */ +static const OnigCodePoint +CR_Inherited[] = { 29, +0x0300, 0x036f, +0x0485, 0x0486, +0x064b, 0x0655, +0x0670, 0x0670, +0x0951, 0x0954, +0x1ab0, 0x1ace, +0x1cd0, 0x1cd2, +0x1cd4, 0x1ce0, +0x1ce2, 0x1ce8, +0x1ced, 0x1ced, +0x1cf4, 0x1cf4, +0x1cf8, 0x1cf9, +0x1dc0, 0x1dff, +0x200c, 0x200d, +0x20d0, 0x20f0, +0x302a, 0x302d, +0x3099, 0x309a, +0xfe00, 0xfe0f, +0xfe20, 0xfe2d, +0x101fd, 0x101fd, +0x102e0, 0x102e0, +0x1133b, 0x1133b, +0x1cf00, 0x1cf2d, +0x1cf30, 0x1cf46, +0x1d167, 0x1d169, +0x1d17b, 0x1d182, +0x1d185, 0x1d18b, +0x1d1aa, 0x1d1ad, +0xe0100, 0xe01ef, +}; /* END of CR_Inherited */ + +/* PROPERTY: 'Inscriptional_Pahlavi': Script */ +static const OnigCodePoint +CR_Inscriptional_Pahlavi[] = { 2, +0x10b60, 0x10b72, +0x10b78, 0x10b7f, +}; /* END of CR_Inscriptional_Pahlavi */ + +/* PROPERTY: 'Inscriptional_Parthian': Script */ +static const OnigCodePoint +CR_Inscriptional_Parthian[] = { 2, +0x10b40, 0x10b55, +0x10b58, 0x10b5f, +}; /* END of CR_Inscriptional_Parthian */ + +/* PROPERTY: 'Javanese': Script */ +static const OnigCodePoint +CR_Javanese[] = { 3, +0xa980, 0xa9cd, +0xa9d0, 0xa9d9, +0xa9de, 0xa9df, +}; /* END of CR_Javanese */ + +/* PROPERTY: 'Join_Control': Binary Property */ +static const OnigCodePoint +CR_Join_Control[] = { 1, +0x200c, 0x200d, +}; /* END of CR_Join_Control */ + +/* PROPERTY: 'Kaithi': Script */ +static const OnigCodePoint +CR_Kaithi[] = { 2, +0x11080, 0x110c2, +0x110cd, 0x110cd, +}; /* END of CR_Kaithi */ + +/* PROPERTY: 'Kannada': Script */ +static const OnigCodePoint +CR_Kannada[] = { 13, +0x0c80, 0x0c8c, +0x0c8e, 0x0c90, +0x0c92, 0x0ca8, +0x0caa, 0x0cb3, +0x0cb5, 0x0cb9, +0x0cbc, 0x0cc4, +0x0cc6, 0x0cc8, +0x0cca, 0x0ccd, +0x0cd5, 0x0cd6, +0x0cdd, 0x0cde, +0x0ce0, 0x0ce3, +0x0ce6, 0x0cef, +0x0cf1, 0x0cf3, +}; /* END of CR_Kannada */ + +/* PROPERTY: 'Katakana': Script */ +static const OnigCodePoint +CR_Katakana[] = { 14, +0x30a1, 0x30fa, +0x30fd, 0x30ff, +0x31f0, 0x31ff, +0x32d0, 0x32fe, +0x3300, 0x3357, +0xff66, 0xff6f, +0xff71, 0xff9d, +0x1aff0, 0x1aff3, +0x1aff5, 0x1affb, +0x1affd, 0x1affe, +0x1b000, 0x1b000, +0x1b120, 0x1b122, +0x1b155, 0x1b155, +0x1b164, 0x1b167, +}; /* END of CR_Katakana */ + +/* PROPERTY: 'Kawi': Script */ +static const OnigCodePoint +CR_Kawi[] = { 3, +0x11f00, 0x11f10, +0x11f12, 0x11f3a, +0x11f3e, 0x11f5a, +}; /* END of CR_Kawi */ + +/* PROPERTY: 'Kayah_Li': Script */ +static const OnigCodePoint +CR_Kayah_Li[] = { 2, +0xa900, 0xa92d, +0xa92f, 0xa92f, +}; /* END of CR_Kayah_Li */ + +/* PROPERTY: 'Kharoshthi': Script */ +static const OnigCodePoint +CR_Kharoshthi[] = { 8, +0x10a00, 0x10a03, +0x10a05, 0x10a06, +0x10a0c, 0x10a13, +0x10a15, 0x10a17, +0x10a19, 0x10a35, +0x10a38, 0x10a3a, +0x10a3f, 0x10a48, +0x10a50, 0x10a58, +}; /* END of CR_Kharoshthi */ + +/* PROPERTY: 'Khitan_Small_Script': Script */ +static const OnigCodePoint +CR_Khitan_Small_Script[] = { 3, +0x16fe4, 0x16fe4, +0x18b00, 0x18cd5, +0x18cff, 0x18cff, +}; /* END of CR_Khitan_Small_Script */ + +/* PROPERTY: 'Khmer': Script */ +static const OnigCodePoint +CR_Khmer[] = { 4, +0x1780, 0x17dd, +0x17e0, 0x17e9, +0x17f0, 0x17f9, +0x19e0, 0x19ff, +}; /* END of CR_Khmer */ + +/* PROPERTY: 'Khojki': Script */ +static const OnigCodePoint +CR_Khojki[] = { 2, +0x11200, 0x11211, +0x11213, 0x11241, +}; /* END of CR_Khojki */ + +/* PROPERTY: 'Khudawadi': Script */ +static const OnigCodePoint +CR_Khudawadi[] = { 2, +0x112b0, 0x112ea, +0x112f0, 0x112f9, +}; /* END of CR_Khudawadi */ + +/* PROPERTY: 'Kirat_Rai': Script */ +static const OnigCodePoint +CR_Kirat_Rai[] = { 1, +0x16d40, 0x16d79, +}; /* END of CR_Kirat_Rai */ + +/* PROPERTY: 'L': Major Category */ +static const OnigCodePoint +CR_L[] = { 677, +0x0041, 0x005a, +0x0061, 0x007a, +0x00aa, 0x00aa, +0x00b5, 0x00b5, +0x00ba, 0x00ba, +0x00c0, 0x00d6, +0x00d8, 0x00f6, +0x00f8, 0x02c1, +0x02c6, 0x02d1, +0x02e0, 0x02e4, +0x02ec, 0x02ec, +0x02ee, 0x02ee, +0x0370, 0x0374, +0x0376, 0x0377, +0x037a, 0x037d, +0x037f, 0x037f, +0x0386, 0x0386, +0x0388, 0x038a, +0x038c, 0x038c, +0x038e, 0x03a1, +0x03a3, 0x03f5, +0x03f7, 0x0481, +0x048a, 0x052f, +0x0531, 0x0556, +0x0559, 0x0559, +0x0560, 0x0588, +0x05d0, 0x05ea, +0x05ef, 0x05f2, +0x0620, 0x064a, +0x066e, 0x066f, +0x0671, 0x06d3, +0x06d5, 0x06d5, +0x06e5, 0x06e6, +0x06ee, 0x06ef, +0x06fa, 0x06fc, +0x06ff, 0x06ff, +0x0710, 0x0710, +0x0712, 0x072f, +0x074d, 0x07a5, +0x07b1, 0x07b1, +0x07ca, 0x07ea, +0x07f4, 0x07f5, +0x07fa, 0x07fa, +0x0800, 0x0815, +0x081a, 0x081a, +0x0824, 0x0824, +0x0828, 0x0828, +0x0840, 0x0858, +0x0860, 0x086a, +0x0870, 0x0887, +0x0889, 0x088e, +0x08a0, 0x08c9, +0x0904, 0x0939, +0x093d, 0x093d, +0x0950, 0x0950, +0x0958, 0x0961, +0x0971, 0x0980, +0x0985, 0x098c, +0x098f, 0x0990, +0x0993, 0x09a8, +0x09aa, 0x09b0, +0x09b2, 0x09b2, +0x09b6, 0x09b9, +0x09bd, 0x09bd, +0x09ce, 0x09ce, +0x09dc, 0x09dd, +0x09df, 0x09e1, +0x09f0, 0x09f1, +0x09fc, 0x09fc, +0x0a05, 0x0a0a, +0x0a0f, 0x0a10, +0x0a13, 0x0a28, +0x0a2a, 0x0a30, +0x0a32, 0x0a33, +0x0a35, 0x0a36, +0x0a38, 0x0a39, +0x0a59, 0x0a5c, +0x0a5e, 0x0a5e, +0x0a72, 0x0a74, +0x0a85, 0x0a8d, +0x0a8f, 0x0a91, +0x0a93, 0x0aa8, +0x0aaa, 0x0ab0, +0x0ab2, 0x0ab3, +0x0ab5, 0x0ab9, +0x0abd, 0x0abd, +0x0ad0, 0x0ad0, +0x0ae0, 0x0ae1, +0x0af9, 0x0af9, +0x0b05, 0x0b0c, +0x0b0f, 0x0b10, +0x0b13, 0x0b28, +0x0b2a, 0x0b30, +0x0b32, 0x0b33, +0x0b35, 0x0b39, +0x0b3d, 0x0b3d, +0x0b5c, 0x0b5d, +0x0b5f, 0x0b61, +0x0b71, 0x0b71, +0x0b83, 0x0b83, +0x0b85, 0x0b8a, +0x0b8e, 0x0b90, +0x0b92, 0x0b95, +0x0b99, 0x0b9a, +0x0b9c, 0x0b9c, +0x0b9e, 0x0b9f, +0x0ba3, 0x0ba4, +0x0ba8, 0x0baa, +0x0bae, 0x0bb9, +0x0bd0, 0x0bd0, +0x0c05, 0x0c0c, +0x0c0e, 0x0c10, +0x0c12, 0x0c28, +0x0c2a, 0x0c39, +0x0c3d, 0x0c3d, +0x0c58, 0x0c5a, +0x0c5d, 0x0c5d, +0x0c60, 0x0c61, +0x0c80, 0x0c80, +0x0c85, 0x0c8c, +0x0c8e, 0x0c90, +0x0c92, 0x0ca8, +0x0caa, 0x0cb3, +0x0cb5, 0x0cb9, +0x0cbd, 0x0cbd, +0x0cdd, 0x0cde, +0x0ce0, 0x0ce1, +0x0cf1, 0x0cf2, +0x0d04, 0x0d0c, +0x0d0e, 0x0d10, +0x0d12, 0x0d3a, +0x0d3d, 0x0d3d, +0x0d4e, 0x0d4e, +0x0d54, 0x0d56, +0x0d5f, 0x0d61, +0x0d7a, 0x0d7f, +0x0d85, 0x0d96, +0x0d9a, 0x0db1, +0x0db3, 0x0dbb, +0x0dbd, 0x0dbd, +0x0dc0, 0x0dc6, +0x0e01, 0x0e30, +0x0e32, 0x0e33, +0x0e40, 0x0e46, +0x0e81, 0x0e82, +0x0e84, 0x0e84, +0x0e86, 0x0e8a, +0x0e8c, 0x0ea3, +0x0ea5, 0x0ea5, +0x0ea7, 0x0eb0, +0x0eb2, 0x0eb3, +0x0ebd, 0x0ebd, +0x0ec0, 0x0ec4, +0x0ec6, 0x0ec6, +0x0edc, 0x0edf, +0x0f00, 0x0f00, +0x0f40, 0x0f47, +0x0f49, 0x0f6c, +0x0f88, 0x0f8c, +0x1000, 0x102a, +0x103f, 0x103f, +0x1050, 0x1055, +0x105a, 0x105d, +0x1061, 0x1061, +0x1065, 0x1066, +0x106e, 0x1070, +0x1075, 0x1081, +0x108e, 0x108e, +0x10a0, 0x10c5, +0x10c7, 0x10c7, +0x10cd, 0x10cd, +0x10d0, 0x10fa, +0x10fc, 0x1248, +0x124a, 0x124d, +0x1250, 0x1256, +0x1258, 0x1258, +0x125a, 0x125d, +0x1260, 0x1288, +0x128a, 0x128d, +0x1290, 0x12b0, +0x12b2, 0x12b5, +0x12b8, 0x12be, +0x12c0, 0x12c0, +0x12c2, 0x12c5, +0x12c8, 0x12d6, +0x12d8, 0x1310, +0x1312, 0x1315, +0x1318, 0x135a, +0x1380, 0x138f, +0x13a0, 0x13f5, +0x13f8, 0x13fd, +0x1401, 0x166c, +0x166f, 0x167f, +0x1681, 0x169a, +0x16a0, 0x16ea, +0x16f1, 0x16f8, +0x1700, 0x1711, +0x171f, 0x1731, +0x1740, 0x1751, +0x1760, 0x176c, +0x176e, 0x1770, +0x1780, 0x17b3, +0x17d7, 0x17d7, +0x17dc, 0x17dc, +0x1820, 0x1878, +0x1880, 0x1884, +0x1887, 0x18a8, +0x18aa, 0x18aa, +0x18b0, 0x18f5, +0x1900, 0x191e, +0x1950, 0x196d, +0x1970, 0x1974, +0x1980, 0x19ab, +0x19b0, 0x19c9, +0x1a00, 0x1a16, +0x1a20, 0x1a54, +0x1aa7, 0x1aa7, +0x1b05, 0x1b33, +0x1b45, 0x1b4c, +0x1b83, 0x1ba0, +0x1bae, 0x1baf, +0x1bba, 0x1be5, +0x1c00, 0x1c23, +0x1c4d, 0x1c4f, +0x1c5a, 0x1c7d, +0x1c80, 0x1c8a, +0x1c90, 0x1cba, +0x1cbd, 0x1cbf, +0x1ce9, 0x1cec, +0x1cee, 0x1cf3, +0x1cf5, 0x1cf6, +0x1cfa, 0x1cfa, +0x1d00, 0x1dbf, +0x1e00, 0x1f15, +0x1f18, 0x1f1d, +0x1f20, 0x1f45, +0x1f48, 0x1f4d, +0x1f50, 0x1f57, +0x1f59, 0x1f59, +0x1f5b, 0x1f5b, +0x1f5d, 0x1f5d, +0x1f5f, 0x1f7d, +0x1f80, 0x1fb4, +0x1fb6, 0x1fbc, +0x1fbe, 0x1fbe, +0x1fc2, 0x1fc4, +0x1fc6, 0x1fcc, +0x1fd0, 0x1fd3, +0x1fd6, 0x1fdb, +0x1fe0, 0x1fec, +0x1ff2, 0x1ff4, +0x1ff6, 0x1ffc, +0x2071, 0x2071, +0x207f, 0x207f, +0x2090, 0x209c, +0x2102, 0x2102, +0x2107, 0x2107, +0x210a, 0x2113, +0x2115, 0x2115, +0x2119, 0x211d, +0x2124, 0x2124, +0x2126, 0x2126, +0x2128, 0x2128, +0x212a, 0x212d, +0x212f, 0x2139, +0x213c, 0x213f, +0x2145, 0x2149, +0x214e, 0x214e, +0x2183, 0x2184, +0x2c00, 0x2ce4, +0x2ceb, 0x2cee, +0x2cf2, 0x2cf3, +0x2d00, 0x2d25, +0x2d27, 0x2d27, +0x2d2d, 0x2d2d, +0x2d30, 0x2d67, +0x2d6f, 0x2d6f, +0x2d80, 0x2d96, +0x2da0, 0x2da6, +0x2da8, 0x2dae, +0x2db0, 0x2db6, +0x2db8, 0x2dbe, +0x2dc0, 0x2dc6, +0x2dc8, 0x2dce, +0x2dd0, 0x2dd6, +0x2dd8, 0x2dde, +0x2e2f, 0x2e2f, +0x3005, 0x3006, +0x3031, 0x3035, +0x303b, 0x303c, +0x3041, 0x3096, +0x309d, 0x309f, +0x30a1, 0x30fa, +0x30fc, 0x30ff, +0x3105, 0x312f, +0x3131, 0x318e, +0x31a0, 0x31bf, +0x31f0, 0x31ff, +0x3400, 0x4dbf, +0x4e00, 0xa48c, +0xa4d0, 0xa4fd, +0xa500, 0xa60c, +0xa610, 0xa61f, +0xa62a, 0xa62b, +0xa640, 0xa66e, +0xa67f, 0xa69d, +0xa6a0, 0xa6e5, +0xa717, 0xa71f, +0xa722, 0xa788, +0xa78b, 0xa7cd, +0xa7d0, 0xa7d1, +0xa7d3, 0xa7d3, +0xa7d5, 0xa7dc, +0xa7f2, 0xa801, +0xa803, 0xa805, +0xa807, 0xa80a, +0xa80c, 0xa822, +0xa840, 0xa873, +0xa882, 0xa8b3, +0xa8f2, 0xa8f7, +0xa8fb, 0xa8fb, +0xa8fd, 0xa8fe, +0xa90a, 0xa925, +0xa930, 0xa946, +0xa960, 0xa97c, +0xa984, 0xa9b2, +0xa9cf, 0xa9cf, +0xa9e0, 0xa9e4, +0xa9e6, 0xa9ef, +0xa9fa, 0xa9fe, +0xaa00, 0xaa28, +0xaa40, 0xaa42, +0xaa44, 0xaa4b, +0xaa60, 0xaa76, +0xaa7a, 0xaa7a, +0xaa7e, 0xaaaf, +0xaab1, 0xaab1, +0xaab5, 0xaab6, +0xaab9, 0xaabd, +0xaac0, 0xaac0, +0xaac2, 0xaac2, +0xaadb, 0xaadd, +0xaae0, 0xaaea, +0xaaf2, 0xaaf4, +0xab01, 0xab06, +0xab09, 0xab0e, +0xab11, 0xab16, +0xab20, 0xab26, +0xab28, 0xab2e, +0xab30, 0xab5a, +0xab5c, 0xab69, +0xab70, 0xabe2, +0xac00, 0xd7a3, +0xd7b0, 0xd7c6, +0xd7cb, 0xd7fb, +0xf900, 0xfa6d, +0xfa70, 0xfad9, +0xfb00, 0xfb06, +0xfb13, 0xfb17, +0xfb1d, 0xfb1d, +0xfb1f, 0xfb28, +0xfb2a, 0xfb36, +0xfb38, 0xfb3c, +0xfb3e, 0xfb3e, +0xfb40, 0xfb41, +0xfb43, 0xfb44, +0xfb46, 0xfbb1, +0xfbd3, 0xfd3d, +0xfd50, 0xfd8f, +0xfd92, 0xfdc7, +0xfdf0, 0xfdfb, +0xfe70, 0xfe74, +0xfe76, 0xfefc, +0xff21, 0xff3a, +0xff41, 0xff5a, +0xff66, 0xffbe, +0xffc2, 0xffc7, +0xffca, 0xffcf, +0xffd2, 0xffd7, +0xffda, 0xffdc, +0x10000, 0x1000b, +0x1000d, 0x10026, +0x10028, 0x1003a, +0x1003c, 0x1003d, +0x1003f, 0x1004d, +0x10050, 0x1005d, +0x10080, 0x100fa, +0x10280, 0x1029c, +0x102a0, 0x102d0, +0x10300, 0x1031f, +0x1032d, 0x10340, +0x10342, 0x10349, +0x10350, 0x10375, +0x10380, 0x1039d, +0x103a0, 0x103c3, +0x103c8, 0x103cf, +0x10400, 0x1049d, +0x104b0, 0x104d3, +0x104d8, 0x104fb, +0x10500, 0x10527, +0x10530, 0x10563, +0x10570, 0x1057a, +0x1057c, 0x1058a, +0x1058c, 0x10592, +0x10594, 0x10595, +0x10597, 0x105a1, +0x105a3, 0x105b1, +0x105b3, 0x105b9, +0x105bb, 0x105bc, +0x105c0, 0x105f3, +0x10600, 0x10736, +0x10740, 0x10755, +0x10760, 0x10767, +0x10780, 0x10785, +0x10787, 0x107b0, +0x107b2, 0x107ba, +0x10800, 0x10805, +0x10808, 0x10808, +0x1080a, 0x10835, +0x10837, 0x10838, +0x1083c, 0x1083c, +0x1083f, 0x10855, +0x10860, 0x10876, +0x10880, 0x1089e, +0x108e0, 0x108f2, +0x108f4, 0x108f5, +0x10900, 0x10915, +0x10920, 0x10939, +0x10980, 0x109b7, +0x109be, 0x109bf, +0x10a00, 0x10a00, +0x10a10, 0x10a13, +0x10a15, 0x10a17, +0x10a19, 0x10a35, +0x10a60, 0x10a7c, +0x10a80, 0x10a9c, +0x10ac0, 0x10ac7, +0x10ac9, 0x10ae4, +0x10b00, 0x10b35, +0x10b40, 0x10b55, +0x10b60, 0x10b72, +0x10b80, 0x10b91, +0x10c00, 0x10c48, +0x10c80, 0x10cb2, +0x10cc0, 0x10cf2, +0x10d00, 0x10d23, +0x10d4a, 0x10d65, +0x10d6f, 0x10d85, +0x10e80, 0x10ea9, +0x10eb0, 0x10eb1, +0x10ec2, 0x10ec4, +0x10f00, 0x10f1c, +0x10f27, 0x10f27, +0x10f30, 0x10f45, +0x10f70, 0x10f81, +0x10fb0, 0x10fc4, +0x10fe0, 0x10ff6, +0x11003, 0x11037, +0x11071, 0x11072, +0x11075, 0x11075, +0x11083, 0x110af, +0x110d0, 0x110e8, +0x11103, 0x11126, +0x11144, 0x11144, +0x11147, 0x11147, +0x11150, 0x11172, +0x11176, 0x11176, +0x11183, 0x111b2, +0x111c1, 0x111c4, +0x111da, 0x111da, +0x111dc, 0x111dc, +0x11200, 0x11211, +0x11213, 0x1122b, +0x1123f, 0x11240, +0x11280, 0x11286, +0x11288, 0x11288, +0x1128a, 0x1128d, +0x1128f, 0x1129d, +0x1129f, 0x112a8, +0x112b0, 0x112de, +0x11305, 0x1130c, +0x1130f, 0x11310, +0x11313, 0x11328, +0x1132a, 0x11330, +0x11332, 0x11333, +0x11335, 0x11339, +0x1133d, 0x1133d, +0x11350, 0x11350, +0x1135d, 0x11361, +0x11380, 0x11389, +0x1138b, 0x1138b, +0x1138e, 0x1138e, +0x11390, 0x113b5, +0x113b7, 0x113b7, +0x113d1, 0x113d1, +0x113d3, 0x113d3, +0x11400, 0x11434, +0x11447, 0x1144a, +0x1145f, 0x11461, +0x11480, 0x114af, +0x114c4, 0x114c5, +0x114c7, 0x114c7, +0x11580, 0x115ae, +0x115d8, 0x115db, +0x11600, 0x1162f, +0x11644, 0x11644, +0x11680, 0x116aa, +0x116b8, 0x116b8, +0x11700, 0x1171a, +0x11740, 0x11746, +0x11800, 0x1182b, +0x118a0, 0x118df, +0x118ff, 0x11906, +0x11909, 0x11909, +0x1190c, 0x11913, +0x11915, 0x11916, +0x11918, 0x1192f, +0x1193f, 0x1193f, +0x11941, 0x11941, +0x119a0, 0x119a7, +0x119aa, 0x119d0, +0x119e1, 0x119e1, +0x119e3, 0x119e3, +0x11a00, 0x11a00, +0x11a0b, 0x11a32, +0x11a3a, 0x11a3a, +0x11a50, 0x11a50, +0x11a5c, 0x11a89, +0x11a9d, 0x11a9d, +0x11ab0, 0x11af8, +0x11bc0, 0x11be0, +0x11c00, 0x11c08, +0x11c0a, 0x11c2e, +0x11c40, 0x11c40, +0x11c72, 0x11c8f, +0x11d00, 0x11d06, +0x11d08, 0x11d09, +0x11d0b, 0x11d30, +0x11d46, 0x11d46, +0x11d60, 0x11d65, +0x11d67, 0x11d68, +0x11d6a, 0x11d89, +0x11d98, 0x11d98, +0x11ee0, 0x11ef2, +0x11f02, 0x11f02, +0x11f04, 0x11f10, +0x11f12, 0x11f33, +0x11fb0, 0x11fb0, +0x12000, 0x12399, +0x12480, 0x12543, +0x12f90, 0x12ff0, +0x13000, 0x1342f, +0x13441, 0x13446, +0x13460, 0x143fa, +0x14400, 0x14646, +0x16100, 0x1611d, +0x16800, 0x16a38, +0x16a40, 0x16a5e, +0x16a70, 0x16abe, +0x16ad0, 0x16aed, +0x16b00, 0x16b2f, +0x16b40, 0x16b43, +0x16b63, 0x16b77, +0x16b7d, 0x16b8f, +0x16d40, 0x16d6c, +0x16e40, 0x16e7f, +0x16f00, 0x16f4a, +0x16f50, 0x16f50, +0x16f93, 0x16f9f, +0x16fe0, 0x16fe1, +0x16fe3, 0x16fe3, +0x17000, 0x187f7, +0x18800, 0x18cd5, +0x18cff, 0x18d08, +0x1aff0, 0x1aff3, +0x1aff5, 0x1affb, +0x1affd, 0x1affe, +0x1b000, 0x1b122, +0x1b132, 0x1b132, +0x1b150, 0x1b152, +0x1b155, 0x1b155, +0x1b164, 0x1b167, +0x1b170, 0x1b2fb, +0x1bc00, 0x1bc6a, +0x1bc70, 0x1bc7c, +0x1bc80, 0x1bc88, +0x1bc90, 0x1bc99, +0x1d400, 0x1d454, +0x1d456, 0x1d49c, +0x1d49e, 0x1d49f, +0x1d4a2, 0x1d4a2, +0x1d4a5, 0x1d4a6, +0x1d4a9, 0x1d4ac, +0x1d4ae, 0x1d4b9, +0x1d4bb, 0x1d4bb, +0x1d4bd, 0x1d4c3, +0x1d4c5, 0x1d505, +0x1d507, 0x1d50a, +0x1d50d, 0x1d514, +0x1d516, 0x1d51c, +0x1d51e, 0x1d539, +0x1d53b, 0x1d53e, +0x1d540, 0x1d544, +0x1d546, 0x1d546, +0x1d54a, 0x1d550, +0x1d552, 0x1d6a5, +0x1d6a8, 0x1d6c0, +0x1d6c2, 0x1d6da, +0x1d6dc, 0x1d6fa, +0x1d6fc, 0x1d714, +0x1d716, 0x1d734, +0x1d736, 0x1d74e, +0x1d750, 0x1d76e, +0x1d770, 0x1d788, +0x1d78a, 0x1d7a8, +0x1d7aa, 0x1d7c2, +0x1d7c4, 0x1d7cb, +0x1df00, 0x1df1e, +0x1df25, 0x1df2a, +0x1e030, 0x1e06d, +0x1e100, 0x1e12c, +0x1e137, 0x1e13d, +0x1e14e, 0x1e14e, +0x1e290, 0x1e2ad, +0x1e2c0, 0x1e2eb, +0x1e4d0, 0x1e4eb, +0x1e5d0, 0x1e5ed, +0x1e5f0, 0x1e5f0, +0x1e7e0, 0x1e7e6, +0x1e7e8, 0x1e7eb, +0x1e7ed, 0x1e7ee, +0x1e7f0, 0x1e7fe, +0x1e800, 0x1e8c4, +0x1e900, 0x1e943, +0x1e94b, 0x1e94b, +0x1ee00, 0x1ee03, +0x1ee05, 0x1ee1f, +0x1ee21, 0x1ee22, +0x1ee24, 0x1ee24, +0x1ee27, 0x1ee27, +0x1ee29, 0x1ee32, +0x1ee34, 0x1ee37, +0x1ee39, 0x1ee39, +0x1ee3b, 0x1ee3b, +0x1ee42, 0x1ee42, +0x1ee47, 0x1ee47, +0x1ee49, 0x1ee49, +0x1ee4b, 0x1ee4b, +0x1ee4d, 0x1ee4f, +0x1ee51, 0x1ee52, +0x1ee54, 0x1ee54, +0x1ee57, 0x1ee57, +0x1ee59, 0x1ee59, +0x1ee5b, 0x1ee5b, +0x1ee5d, 0x1ee5d, +0x1ee5f, 0x1ee5f, +0x1ee61, 0x1ee62, +0x1ee64, 0x1ee64, +0x1ee67, 0x1ee6a, +0x1ee6c, 0x1ee72, +0x1ee74, 0x1ee77, +0x1ee79, 0x1ee7c, +0x1ee7e, 0x1ee7e, +0x1ee80, 0x1ee89, +0x1ee8b, 0x1ee9b, +0x1eea1, 0x1eea3, +0x1eea5, 0x1eea9, +0x1eeab, 0x1eebb, +0x20000, 0x2a6df, +0x2a700, 0x2b739, +0x2b740, 0x2b81d, +0x2b820, 0x2cea1, +0x2ceb0, 0x2ebe0, +0x2ebf0, 0x2ee5d, +0x2f800, 0x2fa1d, +0x30000, 0x3134a, +0x31350, 0x323af, +}; /* END of CR_L */ + +/* PROPERTY: 'LC': General Category */ +static const OnigCodePoint +CR_LC[] = { 145, +0x0041, 0x005a, +0x0061, 0x007a, +0x00b5, 0x00b5, +0x00c0, 0x00d6, +0x00d8, 0x00f6, +0x00f8, 0x01ba, +0x01bc, 0x01bf, +0x01c4, 0x0293, +0x0295, 0x02af, +0x0370, 0x0373, +0x0376, 0x0377, +0x037b, 0x037d, +0x037f, 0x037f, +0x0386, 0x0386, +0x0388, 0x038a, +0x038c, 0x038c, +0x038e, 0x03a1, +0x03a3, 0x03f5, +0x03f7, 0x0481, +0x048a, 0x052f, +0x0531, 0x0556, +0x0560, 0x0588, +0x10a0, 0x10c5, +0x10c7, 0x10c7, +0x10cd, 0x10cd, +0x10d0, 0x10fa, +0x10fd, 0x10ff, +0x13a0, 0x13f5, +0x13f8, 0x13fd, +0x1c80, 0x1c8a, +0x1c90, 0x1cba, +0x1cbd, 0x1cbf, +0x1d00, 0x1d2b, +0x1d6b, 0x1d77, +0x1d79, 0x1d9a, +0x1e00, 0x1f15, +0x1f18, 0x1f1d, +0x1f20, 0x1f45, +0x1f48, 0x1f4d, +0x1f50, 0x1f57, +0x1f59, 0x1f59, +0x1f5b, 0x1f5b, +0x1f5d, 0x1f5d, +0x1f5f, 0x1f7d, +0x1f80, 0x1fb4, +0x1fb6, 0x1fbc, +0x1fbe, 0x1fbe, +0x1fc2, 0x1fc4, +0x1fc6, 0x1fcc, +0x1fd0, 0x1fd3, +0x1fd6, 0x1fdb, +0x1fe0, 0x1fec, +0x1ff2, 0x1ff4, +0x1ff6, 0x1ffc, +0x2102, 0x2102, +0x2107, 0x2107, +0x210a, 0x2113, +0x2115, 0x2115, +0x2119, 0x211d, +0x2124, 0x2124, +0x2126, 0x2126, +0x2128, 0x2128, +0x212a, 0x212d, +0x212f, 0x2134, +0x2139, 0x2139, +0x213c, 0x213f, +0x2145, 0x2149, +0x214e, 0x214e, +0x2183, 0x2184, +0x2c00, 0x2c7b, +0x2c7e, 0x2ce4, +0x2ceb, 0x2cee, +0x2cf2, 0x2cf3, +0x2d00, 0x2d25, +0x2d27, 0x2d27, +0x2d2d, 0x2d2d, +0xa640, 0xa66d, +0xa680, 0xa69b, +0xa722, 0xa76f, +0xa771, 0xa787, +0xa78b, 0xa78e, +0xa790, 0xa7cd, +0xa7d0, 0xa7d1, +0xa7d3, 0xa7d3, +0xa7d5, 0xa7dc, +0xa7f5, 0xa7f6, +0xa7fa, 0xa7fa, +0xab30, 0xab5a, +0xab60, 0xab68, +0xab70, 0xabbf, +0xfb00, 0xfb06, +0xfb13, 0xfb17, +0xff21, 0xff3a, +0xff41, 0xff5a, +0x10400, 0x1044f, +0x104b0, 0x104d3, +0x104d8, 0x104fb, +0x10570, 0x1057a, +0x1057c, 0x1058a, +0x1058c, 0x10592, +0x10594, 0x10595, +0x10597, 0x105a1, +0x105a3, 0x105b1, +0x105b3, 0x105b9, +0x105bb, 0x105bc, +0x10c80, 0x10cb2, +0x10cc0, 0x10cf2, +0x10d50, 0x10d65, +0x10d70, 0x10d85, +0x118a0, 0x118df, +0x16e40, 0x16e7f, +0x1d400, 0x1d454, +0x1d456, 0x1d49c, +0x1d49e, 0x1d49f, +0x1d4a2, 0x1d4a2, +0x1d4a5, 0x1d4a6, +0x1d4a9, 0x1d4ac, +0x1d4ae, 0x1d4b9, +0x1d4bb, 0x1d4bb, +0x1d4bd, 0x1d4c3, +0x1d4c5, 0x1d505, +0x1d507, 0x1d50a, +0x1d50d, 0x1d514, +0x1d516, 0x1d51c, +0x1d51e, 0x1d539, +0x1d53b, 0x1d53e, +0x1d540, 0x1d544, +0x1d546, 0x1d546, +0x1d54a, 0x1d550, +0x1d552, 0x1d6a5, +0x1d6a8, 0x1d6c0, +0x1d6c2, 0x1d6da, +0x1d6dc, 0x1d6fa, +0x1d6fc, 0x1d714, +0x1d716, 0x1d734, +0x1d736, 0x1d74e, +0x1d750, 0x1d76e, +0x1d770, 0x1d788, +0x1d78a, 0x1d7a8, +0x1d7aa, 0x1d7c2, +0x1d7c4, 0x1d7cb, +0x1df00, 0x1df09, +0x1df0b, 0x1df1e, +0x1df25, 0x1df2a, +0x1e900, 0x1e943, +}; /* END of CR_LC */ + +/* PROPERTY: 'Lao': Script */ +static const OnigCodePoint +CR_Lao[] = { 11, +0x0e81, 0x0e82, +0x0e84, 0x0e84, +0x0e86, 0x0e8a, +0x0e8c, 0x0ea3, +0x0ea5, 0x0ea5, +0x0ea7, 0x0ebd, +0x0ec0, 0x0ec4, +0x0ec6, 0x0ec6, +0x0ec8, 0x0ece, +0x0ed0, 0x0ed9, +0x0edc, 0x0edf, +}; /* END of CR_Lao */ + +/* PROPERTY: 'Latin': Script */ +static const OnigCodePoint +CR_Latin[] = { 39, +0x0041, 0x005a, +0x0061, 0x007a, +0x00aa, 0x00aa, +0x00ba, 0x00ba, +0x00c0, 0x00d6, +0x00d8, 0x00f6, +0x00f8, 0x02b8, +0x02e0, 0x02e4, +0x1d00, 0x1d25, +0x1d2c, 0x1d5c, +0x1d62, 0x1d65, +0x1d6b, 0x1d77, +0x1d79, 0x1dbe, +0x1e00, 0x1eff, +0x2071, 0x2071, +0x207f, 0x207f, +0x2090, 0x209c, +0x212a, 0x212b, +0x2132, 0x2132, +0x214e, 0x214e, +0x2160, 0x2188, +0x2c60, 0x2c7f, +0xa722, 0xa787, +0xa78b, 0xa7cd, +0xa7d0, 0xa7d1, +0xa7d3, 0xa7d3, +0xa7d5, 0xa7dc, +0xa7f2, 0xa7ff, +0xab30, 0xab5a, +0xab5c, 0xab64, +0xab66, 0xab69, +0xfb00, 0xfb06, +0xff21, 0xff3a, +0xff41, 0xff5a, +0x10780, 0x10785, +0x10787, 0x107b0, +0x107b2, 0x107ba, +0x1df00, 0x1df1e, +0x1df25, 0x1df2a, +}; /* END of CR_Latin */ + +/* PROPERTY: 'Lepcha': Script */ +static const OnigCodePoint +CR_Lepcha[] = { 3, +0x1c00, 0x1c37, +0x1c3b, 0x1c49, +0x1c4d, 0x1c4f, +}; /* END of CR_Lepcha */ + +/* PROPERTY: 'Limbu': Script */ +static const OnigCodePoint +CR_Limbu[] = { 5, +0x1900, 0x191e, +0x1920, 0x192b, +0x1930, 0x193b, +0x1940, 0x1940, +0x1944, 0x194f, +}; /* END of CR_Limbu */ + +/* PROPERTY: 'Linear_A': Script */ +static const OnigCodePoint +CR_Linear_A[] = { 3, +0x10600, 0x10736, +0x10740, 0x10755, +0x10760, 0x10767, +}; /* END of CR_Linear_A */ + +/* PROPERTY: 'Linear_B': Script */ +static const OnigCodePoint +CR_Linear_B[] = { 7, +0x10000, 0x1000b, +0x1000d, 0x10026, +0x10028, 0x1003a, +0x1003c, 0x1003d, +0x1003f, 0x1004d, +0x10050, 0x1005d, +0x10080, 0x100fa, +}; /* END of CR_Linear_B */ + +/* PROPERTY: 'Lisu': Script */ +static const OnigCodePoint +CR_Lisu[] = { 2, +0xa4d0, 0xa4ff, +0x11fb0, 0x11fb0, +}; /* END of CR_Lisu */ + +/* PROPERTY: 'Ll': General Category */ +static const OnigCodePoint +CR_Ll[] = { 662, +0x0061, 0x007a, +0x00b5, 0x00b5, +0x00df, 0x00f6, +0x00f8, 0x00ff, +0x0101, 0x0101, +0x0103, 0x0103, +0x0105, 0x0105, +0x0107, 0x0107, +0x0109, 0x0109, +0x010b, 0x010b, +0x010d, 0x010d, +0x010f, 0x010f, +0x0111, 0x0111, +0x0113, 0x0113, +0x0115, 0x0115, +0x0117, 0x0117, +0x0119, 0x0119, +0x011b, 0x011b, +0x011d, 0x011d, +0x011f, 0x011f, +0x0121, 0x0121, +0x0123, 0x0123, +0x0125, 0x0125, +0x0127, 0x0127, +0x0129, 0x0129, +0x012b, 0x012b, +0x012d, 0x012d, +0x012f, 0x012f, +0x0131, 0x0131, +0x0133, 0x0133, +0x0135, 0x0135, +0x0137, 0x0138, +0x013a, 0x013a, +0x013c, 0x013c, +0x013e, 0x013e, +0x0140, 0x0140, +0x0142, 0x0142, +0x0144, 0x0144, +0x0146, 0x0146, +0x0148, 0x0149, +0x014b, 0x014b, +0x014d, 0x014d, +0x014f, 0x014f, +0x0151, 0x0151, +0x0153, 0x0153, +0x0155, 0x0155, +0x0157, 0x0157, +0x0159, 0x0159, +0x015b, 0x015b, +0x015d, 0x015d, +0x015f, 0x015f, +0x0161, 0x0161, +0x0163, 0x0163, +0x0165, 0x0165, +0x0167, 0x0167, +0x0169, 0x0169, +0x016b, 0x016b, +0x016d, 0x016d, +0x016f, 0x016f, +0x0171, 0x0171, +0x0173, 0x0173, +0x0175, 0x0175, +0x0177, 0x0177, +0x017a, 0x017a, +0x017c, 0x017c, +0x017e, 0x0180, +0x0183, 0x0183, +0x0185, 0x0185, +0x0188, 0x0188, +0x018c, 0x018d, +0x0192, 0x0192, +0x0195, 0x0195, +0x0199, 0x019b, +0x019e, 0x019e, +0x01a1, 0x01a1, +0x01a3, 0x01a3, +0x01a5, 0x01a5, +0x01a8, 0x01a8, +0x01aa, 0x01ab, +0x01ad, 0x01ad, +0x01b0, 0x01b0, +0x01b4, 0x01b4, +0x01b6, 0x01b6, +0x01b9, 0x01ba, +0x01bd, 0x01bf, +0x01c6, 0x01c6, +0x01c9, 0x01c9, +0x01cc, 0x01cc, +0x01ce, 0x01ce, +0x01d0, 0x01d0, +0x01d2, 0x01d2, +0x01d4, 0x01d4, +0x01d6, 0x01d6, +0x01d8, 0x01d8, +0x01da, 0x01da, +0x01dc, 0x01dd, +0x01df, 0x01df, +0x01e1, 0x01e1, +0x01e3, 0x01e3, +0x01e5, 0x01e5, +0x01e7, 0x01e7, +0x01e9, 0x01e9, +0x01eb, 0x01eb, +0x01ed, 0x01ed, +0x01ef, 0x01f0, +0x01f3, 0x01f3, +0x01f5, 0x01f5, +0x01f9, 0x01f9, +0x01fb, 0x01fb, +0x01fd, 0x01fd, +0x01ff, 0x01ff, +0x0201, 0x0201, +0x0203, 0x0203, +0x0205, 0x0205, +0x0207, 0x0207, +0x0209, 0x0209, +0x020b, 0x020b, +0x020d, 0x020d, +0x020f, 0x020f, +0x0211, 0x0211, +0x0213, 0x0213, +0x0215, 0x0215, +0x0217, 0x0217, +0x0219, 0x0219, +0x021b, 0x021b, +0x021d, 0x021d, +0x021f, 0x021f, +0x0221, 0x0221, +0x0223, 0x0223, +0x0225, 0x0225, +0x0227, 0x0227, +0x0229, 0x0229, +0x022b, 0x022b, +0x022d, 0x022d, +0x022f, 0x022f, +0x0231, 0x0231, +0x0233, 0x0239, +0x023c, 0x023c, +0x023f, 0x0240, +0x0242, 0x0242, +0x0247, 0x0247, +0x0249, 0x0249, +0x024b, 0x024b, +0x024d, 0x024d, +0x024f, 0x0293, +0x0295, 0x02af, +0x0371, 0x0371, +0x0373, 0x0373, +0x0377, 0x0377, +0x037b, 0x037d, +0x0390, 0x0390, +0x03ac, 0x03ce, +0x03d0, 0x03d1, +0x03d5, 0x03d7, +0x03d9, 0x03d9, +0x03db, 0x03db, +0x03dd, 0x03dd, +0x03df, 0x03df, +0x03e1, 0x03e1, +0x03e3, 0x03e3, +0x03e5, 0x03e5, +0x03e7, 0x03e7, +0x03e9, 0x03e9, +0x03eb, 0x03eb, +0x03ed, 0x03ed, +0x03ef, 0x03f3, +0x03f5, 0x03f5, +0x03f8, 0x03f8, +0x03fb, 0x03fc, +0x0430, 0x045f, +0x0461, 0x0461, +0x0463, 0x0463, +0x0465, 0x0465, +0x0467, 0x0467, +0x0469, 0x0469, +0x046b, 0x046b, +0x046d, 0x046d, +0x046f, 0x046f, +0x0471, 0x0471, +0x0473, 0x0473, +0x0475, 0x0475, +0x0477, 0x0477, +0x0479, 0x0479, +0x047b, 0x047b, +0x047d, 0x047d, +0x047f, 0x047f, +0x0481, 0x0481, +0x048b, 0x048b, +0x048d, 0x048d, +0x048f, 0x048f, +0x0491, 0x0491, +0x0493, 0x0493, +0x0495, 0x0495, +0x0497, 0x0497, +0x0499, 0x0499, +0x049b, 0x049b, +0x049d, 0x049d, +0x049f, 0x049f, +0x04a1, 0x04a1, +0x04a3, 0x04a3, +0x04a5, 0x04a5, +0x04a7, 0x04a7, +0x04a9, 0x04a9, +0x04ab, 0x04ab, +0x04ad, 0x04ad, +0x04af, 0x04af, +0x04b1, 0x04b1, +0x04b3, 0x04b3, +0x04b5, 0x04b5, +0x04b7, 0x04b7, +0x04b9, 0x04b9, +0x04bb, 0x04bb, +0x04bd, 0x04bd, +0x04bf, 0x04bf, +0x04c2, 0x04c2, +0x04c4, 0x04c4, +0x04c6, 0x04c6, +0x04c8, 0x04c8, +0x04ca, 0x04ca, +0x04cc, 0x04cc, +0x04ce, 0x04cf, +0x04d1, 0x04d1, +0x04d3, 0x04d3, +0x04d5, 0x04d5, +0x04d7, 0x04d7, +0x04d9, 0x04d9, +0x04db, 0x04db, +0x04dd, 0x04dd, +0x04df, 0x04df, +0x04e1, 0x04e1, +0x04e3, 0x04e3, +0x04e5, 0x04e5, +0x04e7, 0x04e7, +0x04e9, 0x04e9, +0x04eb, 0x04eb, +0x04ed, 0x04ed, +0x04ef, 0x04ef, +0x04f1, 0x04f1, +0x04f3, 0x04f3, +0x04f5, 0x04f5, +0x04f7, 0x04f7, +0x04f9, 0x04f9, +0x04fb, 0x04fb, +0x04fd, 0x04fd, +0x04ff, 0x04ff, +0x0501, 0x0501, +0x0503, 0x0503, +0x0505, 0x0505, +0x0507, 0x0507, +0x0509, 0x0509, +0x050b, 0x050b, +0x050d, 0x050d, +0x050f, 0x050f, +0x0511, 0x0511, +0x0513, 0x0513, +0x0515, 0x0515, +0x0517, 0x0517, +0x0519, 0x0519, +0x051b, 0x051b, +0x051d, 0x051d, +0x051f, 0x051f, +0x0521, 0x0521, +0x0523, 0x0523, +0x0525, 0x0525, +0x0527, 0x0527, +0x0529, 0x0529, +0x052b, 0x052b, +0x052d, 0x052d, +0x052f, 0x052f, +0x0560, 0x0588, +0x10d0, 0x10fa, +0x10fd, 0x10ff, +0x13f8, 0x13fd, +0x1c80, 0x1c88, +0x1c8a, 0x1c8a, +0x1d00, 0x1d2b, +0x1d6b, 0x1d77, +0x1d79, 0x1d9a, +0x1e01, 0x1e01, +0x1e03, 0x1e03, +0x1e05, 0x1e05, +0x1e07, 0x1e07, +0x1e09, 0x1e09, +0x1e0b, 0x1e0b, +0x1e0d, 0x1e0d, +0x1e0f, 0x1e0f, +0x1e11, 0x1e11, +0x1e13, 0x1e13, +0x1e15, 0x1e15, +0x1e17, 0x1e17, +0x1e19, 0x1e19, +0x1e1b, 0x1e1b, +0x1e1d, 0x1e1d, +0x1e1f, 0x1e1f, +0x1e21, 0x1e21, +0x1e23, 0x1e23, +0x1e25, 0x1e25, +0x1e27, 0x1e27, +0x1e29, 0x1e29, +0x1e2b, 0x1e2b, +0x1e2d, 0x1e2d, +0x1e2f, 0x1e2f, +0x1e31, 0x1e31, +0x1e33, 0x1e33, +0x1e35, 0x1e35, +0x1e37, 0x1e37, +0x1e39, 0x1e39, +0x1e3b, 0x1e3b, +0x1e3d, 0x1e3d, +0x1e3f, 0x1e3f, +0x1e41, 0x1e41, +0x1e43, 0x1e43, +0x1e45, 0x1e45, +0x1e47, 0x1e47, +0x1e49, 0x1e49, +0x1e4b, 0x1e4b, +0x1e4d, 0x1e4d, +0x1e4f, 0x1e4f, +0x1e51, 0x1e51, +0x1e53, 0x1e53, +0x1e55, 0x1e55, +0x1e57, 0x1e57, +0x1e59, 0x1e59, +0x1e5b, 0x1e5b, +0x1e5d, 0x1e5d, +0x1e5f, 0x1e5f, +0x1e61, 0x1e61, +0x1e63, 0x1e63, +0x1e65, 0x1e65, +0x1e67, 0x1e67, +0x1e69, 0x1e69, +0x1e6b, 0x1e6b, +0x1e6d, 0x1e6d, +0x1e6f, 0x1e6f, +0x1e71, 0x1e71, +0x1e73, 0x1e73, +0x1e75, 0x1e75, +0x1e77, 0x1e77, +0x1e79, 0x1e79, +0x1e7b, 0x1e7b, +0x1e7d, 0x1e7d, +0x1e7f, 0x1e7f, +0x1e81, 0x1e81, +0x1e83, 0x1e83, +0x1e85, 0x1e85, +0x1e87, 0x1e87, +0x1e89, 0x1e89, +0x1e8b, 0x1e8b, +0x1e8d, 0x1e8d, +0x1e8f, 0x1e8f, +0x1e91, 0x1e91, +0x1e93, 0x1e93, +0x1e95, 0x1e9d, +0x1e9f, 0x1e9f, +0x1ea1, 0x1ea1, +0x1ea3, 0x1ea3, +0x1ea5, 0x1ea5, +0x1ea7, 0x1ea7, +0x1ea9, 0x1ea9, +0x1eab, 0x1eab, +0x1ead, 0x1ead, +0x1eaf, 0x1eaf, +0x1eb1, 0x1eb1, +0x1eb3, 0x1eb3, +0x1eb5, 0x1eb5, +0x1eb7, 0x1eb7, +0x1eb9, 0x1eb9, +0x1ebb, 0x1ebb, +0x1ebd, 0x1ebd, +0x1ebf, 0x1ebf, +0x1ec1, 0x1ec1, +0x1ec3, 0x1ec3, +0x1ec5, 0x1ec5, +0x1ec7, 0x1ec7, +0x1ec9, 0x1ec9, +0x1ecb, 0x1ecb, +0x1ecd, 0x1ecd, +0x1ecf, 0x1ecf, +0x1ed1, 0x1ed1, +0x1ed3, 0x1ed3, +0x1ed5, 0x1ed5, +0x1ed7, 0x1ed7, +0x1ed9, 0x1ed9, +0x1edb, 0x1edb, +0x1edd, 0x1edd, +0x1edf, 0x1edf, +0x1ee1, 0x1ee1, +0x1ee3, 0x1ee3, +0x1ee5, 0x1ee5, +0x1ee7, 0x1ee7, +0x1ee9, 0x1ee9, +0x1eeb, 0x1eeb, +0x1eed, 0x1eed, +0x1eef, 0x1eef, +0x1ef1, 0x1ef1, +0x1ef3, 0x1ef3, +0x1ef5, 0x1ef5, +0x1ef7, 0x1ef7, +0x1ef9, 0x1ef9, +0x1efb, 0x1efb, +0x1efd, 0x1efd, +0x1eff, 0x1f07, +0x1f10, 0x1f15, +0x1f20, 0x1f27, +0x1f30, 0x1f37, +0x1f40, 0x1f45, +0x1f50, 0x1f57, +0x1f60, 0x1f67, +0x1f70, 0x1f7d, +0x1f80, 0x1f87, +0x1f90, 0x1f97, +0x1fa0, 0x1fa7, +0x1fb0, 0x1fb4, +0x1fb6, 0x1fb7, +0x1fbe, 0x1fbe, +0x1fc2, 0x1fc4, +0x1fc6, 0x1fc7, +0x1fd0, 0x1fd3, +0x1fd6, 0x1fd7, +0x1fe0, 0x1fe7, +0x1ff2, 0x1ff4, +0x1ff6, 0x1ff7, +0x210a, 0x210a, +0x210e, 0x210f, +0x2113, 0x2113, +0x212f, 0x212f, +0x2134, 0x2134, +0x2139, 0x2139, +0x213c, 0x213d, +0x2146, 0x2149, +0x214e, 0x214e, +0x2184, 0x2184, +0x2c30, 0x2c5f, +0x2c61, 0x2c61, +0x2c65, 0x2c66, +0x2c68, 0x2c68, +0x2c6a, 0x2c6a, +0x2c6c, 0x2c6c, +0x2c71, 0x2c71, +0x2c73, 0x2c74, +0x2c76, 0x2c7b, +0x2c81, 0x2c81, +0x2c83, 0x2c83, +0x2c85, 0x2c85, +0x2c87, 0x2c87, +0x2c89, 0x2c89, +0x2c8b, 0x2c8b, +0x2c8d, 0x2c8d, +0x2c8f, 0x2c8f, +0x2c91, 0x2c91, +0x2c93, 0x2c93, +0x2c95, 0x2c95, +0x2c97, 0x2c97, +0x2c99, 0x2c99, +0x2c9b, 0x2c9b, +0x2c9d, 0x2c9d, +0x2c9f, 0x2c9f, +0x2ca1, 0x2ca1, +0x2ca3, 0x2ca3, +0x2ca5, 0x2ca5, +0x2ca7, 0x2ca7, +0x2ca9, 0x2ca9, +0x2cab, 0x2cab, +0x2cad, 0x2cad, +0x2caf, 0x2caf, +0x2cb1, 0x2cb1, +0x2cb3, 0x2cb3, +0x2cb5, 0x2cb5, +0x2cb7, 0x2cb7, +0x2cb9, 0x2cb9, +0x2cbb, 0x2cbb, +0x2cbd, 0x2cbd, +0x2cbf, 0x2cbf, +0x2cc1, 0x2cc1, +0x2cc3, 0x2cc3, +0x2cc5, 0x2cc5, +0x2cc7, 0x2cc7, +0x2cc9, 0x2cc9, +0x2ccb, 0x2ccb, +0x2ccd, 0x2ccd, +0x2ccf, 0x2ccf, +0x2cd1, 0x2cd1, +0x2cd3, 0x2cd3, +0x2cd5, 0x2cd5, +0x2cd7, 0x2cd7, +0x2cd9, 0x2cd9, +0x2cdb, 0x2cdb, +0x2cdd, 0x2cdd, +0x2cdf, 0x2cdf, +0x2ce1, 0x2ce1, +0x2ce3, 0x2ce4, +0x2cec, 0x2cec, +0x2cee, 0x2cee, +0x2cf3, 0x2cf3, +0x2d00, 0x2d25, +0x2d27, 0x2d27, +0x2d2d, 0x2d2d, +0xa641, 0xa641, +0xa643, 0xa643, +0xa645, 0xa645, +0xa647, 0xa647, +0xa649, 0xa649, +0xa64b, 0xa64b, +0xa64d, 0xa64d, +0xa64f, 0xa64f, +0xa651, 0xa651, +0xa653, 0xa653, +0xa655, 0xa655, +0xa657, 0xa657, +0xa659, 0xa659, +0xa65b, 0xa65b, +0xa65d, 0xa65d, +0xa65f, 0xa65f, +0xa661, 0xa661, +0xa663, 0xa663, +0xa665, 0xa665, +0xa667, 0xa667, +0xa669, 0xa669, +0xa66b, 0xa66b, +0xa66d, 0xa66d, +0xa681, 0xa681, +0xa683, 0xa683, +0xa685, 0xa685, +0xa687, 0xa687, +0xa689, 0xa689, +0xa68b, 0xa68b, +0xa68d, 0xa68d, +0xa68f, 0xa68f, +0xa691, 0xa691, +0xa693, 0xa693, +0xa695, 0xa695, +0xa697, 0xa697, +0xa699, 0xa699, +0xa69b, 0xa69b, +0xa723, 0xa723, +0xa725, 0xa725, +0xa727, 0xa727, +0xa729, 0xa729, +0xa72b, 0xa72b, +0xa72d, 0xa72d, +0xa72f, 0xa731, +0xa733, 0xa733, +0xa735, 0xa735, +0xa737, 0xa737, +0xa739, 0xa739, +0xa73b, 0xa73b, +0xa73d, 0xa73d, +0xa73f, 0xa73f, +0xa741, 0xa741, +0xa743, 0xa743, +0xa745, 0xa745, +0xa747, 0xa747, +0xa749, 0xa749, +0xa74b, 0xa74b, +0xa74d, 0xa74d, +0xa74f, 0xa74f, +0xa751, 0xa751, +0xa753, 0xa753, +0xa755, 0xa755, +0xa757, 0xa757, +0xa759, 0xa759, +0xa75b, 0xa75b, +0xa75d, 0xa75d, +0xa75f, 0xa75f, +0xa761, 0xa761, +0xa763, 0xa763, +0xa765, 0xa765, +0xa767, 0xa767, +0xa769, 0xa769, +0xa76b, 0xa76b, +0xa76d, 0xa76d, +0xa76f, 0xa76f, +0xa771, 0xa778, +0xa77a, 0xa77a, +0xa77c, 0xa77c, +0xa77f, 0xa77f, +0xa781, 0xa781, +0xa783, 0xa783, +0xa785, 0xa785, +0xa787, 0xa787, +0xa78c, 0xa78c, +0xa78e, 0xa78e, +0xa791, 0xa791, +0xa793, 0xa795, +0xa797, 0xa797, +0xa799, 0xa799, +0xa79b, 0xa79b, +0xa79d, 0xa79d, +0xa79f, 0xa79f, +0xa7a1, 0xa7a1, +0xa7a3, 0xa7a3, +0xa7a5, 0xa7a5, +0xa7a7, 0xa7a7, +0xa7a9, 0xa7a9, +0xa7af, 0xa7af, +0xa7b5, 0xa7b5, +0xa7b7, 0xa7b7, +0xa7b9, 0xa7b9, +0xa7bb, 0xa7bb, +0xa7bd, 0xa7bd, +0xa7bf, 0xa7bf, +0xa7c1, 0xa7c1, +0xa7c3, 0xa7c3, +0xa7c8, 0xa7c8, +0xa7ca, 0xa7ca, +0xa7cd, 0xa7cd, +0xa7d1, 0xa7d1, +0xa7d3, 0xa7d3, +0xa7d5, 0xa7d5, +0xa7d7, 0xa7d7, +0xa7d9, 0xa7d9, +0xa7db, 0xa7db, +0xa7f6, 0xa7f6, +0xa7fa, 0xa7fa, +0xab30, 0xab5a, +0xab60, 0xab68, +0xab70, 0xabbf, +0xfb00, 0xfb06, +0xfb13, 0xfb17, +0xff41, 0xff5a, +0x10428, 0x1044f, +0x104d8, 0x104fb, +0x10597, 0x105a1, +0x105a3, 0x105b1, +0x105b3, 0x105b9, +0x105bb, 0x105bc, +0x10cc0, 0x10cf2, +0x10d70, 0x10d85, +0x118c0, 0x118df, +0x16e60, 0x16e7f, +0x1d41a, 0x1d433, +0x1d44e, 0x1d454, +0x1d456, 0x1d467, +0x1d482, 0x1d49b, +0x1d4b6, 0x1d4b9, +0x1d4bb, 0x1d4bb, +0x1d4bd, 0x1d4c3, +0x1d4c5, 0x1d4cf, +0x1d4ea, 0x1d503, +0x1d51e, 0x1d537, +0x1d552, 0x1d56b, +0x1d586, 0x1d59f, +0x1d5ba, 0x1d5d3, +0x1d5ee, 0x1d607, +0x1d622, 0x1d63b, +0x1d656, 0x1d66f, +0x1d68a, 0x1d6a5, +0x1d6c2, 0x1d6da, +0x1d6dc, 0x1d6e1, +0x1d6fc, 0x1d714, +0x1d716, 0x1d71b, +0x1d736, 0x1d74e, +0x1d750, 0x1d755, +0x1d770, 0x1d788, +0x1d78a, 0x1d78f, +0x1d7aa, 0x1d7c2, +0x1d7c4, 0x1d7c9, +0x1d7cb, 0x1d7cb, +0x1df00, 0x1df09, +0x1df0b, 0x1df1e, +0x1df25, 0x1df2a, +0x1e922, 0x1e943, +}; /* END of CR_Ll */ + +/* PROPERTY: 'Lm': General Category */ +static const OnigCodePoint +CR_Lm[] = { 75, +0x02b0, 0x02c1, +0x02c6, 0x02d1, +0x02e0, 0x02e4, +0x02ec, 0x02ec, +0x02ee, 0x02ee, +0x0374, 0x0374, +0x037a, 0x037a, +0x0559, 0x0559, +0x0640, 0x0640, +0x06e5, 0x06e6, +0x07f4, 0x07f5, +0x07fa, 0x07fa, +0x081a, 0x081a, +0x0824, 0x0824, +0x0828, 0x0828, +0x08c9, 0x08c9, +0x0971, 0x0971, +0x0e46, 0x0e46, +0x0ec6, 0x0ec6, +0x10fc, 0x10fc, +0x17d7, 0x17d7, +0x1843, 0x1843, +0x1aa7, 0x1aa7, +0x1c78, 0x1c7d, +0x1d2c, 0x1d6a, +0x1d78, 0x1d78, +0x1d9b, 0x1dbf, +0x2071, 0x2071, +0x207f, 0x207f, +0x2090, 0x209c, +0x2c7c, 0x2c7d, +0x2d6f, 0x2d6f, +0x2e2f, 0x2e2f, +0x3005, 0x3005, +0x3031, 0x3035, +0x303b, 0x303b, +0x309d, 0x309e, +0x30fc, 0x30fe, +0xa015, 0xa015, +0xa4f8, 0xa4fd, +0xa60c, 0xa60c, +0xa67f, 0xa67f, +0xa69c, 0xa69d, +0xa717, 0xa71f, +0xa770, 0xa770, +0xa788, 0xa788, +0xa7f2, 0xa7f4, +0xa7f8, 0xa7f9, +0xa9cf, 0xa9cf, +0xa9e6, 0xa9e6, +0xaa70, 0xaa70, +0xaadd, 0xaadd, +0xaaf3, 0xaaf4, +0xab5c, 0xab5f, +0xab69, 0xab69, +0xff70, 0xff70, +0xff9e, 0xff9f, +0x10780, 0x10785, +0x10787, 0x107b0, +0x107b2, 0x107ba, +0x10d4e, 0x10d4e, +0x10d6f, 0x10d6f, +0x16b40, 0x16b43, +0x16d40, 0x16d42, +0x16d6b, 0x16d6c, +0x16f93, 0x16f9f, +0x16fe0, 0x16fe1, +0x16fe3, 0x16fe3, +0x1aff0, 0x1aff3, +0x1aff5, 0x1affb, +0x1affd, 0x1affe, +0x1e030, 0x1e06d, +0x1e137, 0x1e13d, +0x1e4eb, 0x1e4eb, +0x1e94b, 0x1e94b, +}; /* END of CR_Lm */ + +/* PROPERTY: 'Lo': General Category */ +static const OnigCodePoint +CR_Lo[] = { 528, +0x00aa, 0x00aa, +0x00ba, 0x00ba, +0x01bb, 0x01bb, +0x01c0, 0x01c3, +0x0294, 0x0294, +0x05d0, 0x05ea, +0x05ef, 0x05f2, +0x0620, 0x063f, +0x0641, 0x064a, +0x066e, 0x066f, +0x0671, 0x06d3, +0x06d5, 0x06d5, +0x06ee, 0x06ef, +0x06fa, 0x06fc, +0x06ff, 0x06ff, +0x0710, 0x0710, +0x0712, 0x072f, +0x074d, 0x07a5, +0x07b1, 0x07b1, +0x07ca, 0x07ea, +0x0800, 0x0815, +0x0840, 0x0858, +0x0860, 0x086a, +0x0870, 0x0887, +0x0889, 0x088e, +0x08a0, 0x08c8, +0x0904, 0x0939, +0x093d, 0x093d, +0x0950, 0x0950, +0x0958, 0x0961, +0x0972, 0x0980, +0x0985, 0x098c, +0x098f, 0x0990, +0x0993, 0x09a8, +0x09aa, 0x09b0, +0x09b2, 0x09b2, +0x09b6, 0x09b9, +0x09bd, 0x09bd, +0x09ce, 0x09ce, +0x09dc, 0x09dd, +0x09df, 0x09e1, +0x09f0, 0x09f1, +0x09fc, 0x09fc, +0x0a05, 0x0a0a, +0x0a0f, 0x0a10, +0x0a13, 0x0a28, +0x0a2a, 0x0a30, +0x0a32, 0x0a33, +0x0a35, 0x0a36, +0x0a38, 0x0a39, +0x0a59, 0x0a5c, +0x0a5e, 0x0a5e, +0x0a72, 0x0a74, +0x0a85, 0x0a8d, +0x0a8f, 0x0a91, +0x0a93, 0x0aa8, +0x0aaa, 0x0ab0, +0x0ab2, 0x0ab3, +0x0ab5, 0x0ab9, +0x0abd, 0x0abd, +0x0ad0, 0x0ad0, +0x0ae0, 0x0ae1, +0x0af9, 0x0af9, +0x0b05, 0x0b0c, +0x0b0f, 0x0b10, +0x0b13, 0x0b28, +0x0b2a, 0x0b30, +0x0b32, 0x0b33, +0x0b35, 0x0b39, +0x0b3d, 0x0b3d, +0x0b5c, 0x0b5d, +0x0b5f, 0x0b61, +0x0b71, 0x0b71, +0x0b83, 0x0b83, +0x0b85, 0x0b8a, +0x0b8e, 0x0b90, +0x0b92, 0x0b95, +0x0b99, 0x0b9a, +0x0b9c, 0x0b9c, +0x0b9e, 0x0b9f, +0x0ba3, 0x0ba4, +0x0ba8, 0x0baa, +0x0bae, 0x0bb9, +0x0bd0, 0x0bd0, +0x0c05, 0x0c0c, +0x0c0e, 0x0c10, +0x0c12, 0x0c28, +0x0c2a, 0x0c39, +0x0c3d, 0x0c3d, +0x0c58, 0x0c5a, +0x0c5d, 0x0c5d, +0x0c60, 0x0c61, +0x0c80, 0x0c80, +0x0c85, 0x0c8c, +0x0c8e, 0x0c90, +0x0c92, 0x0ca8, +0x0caa, 0x0cb3, +0x0cb5, 0x0cb9, +0x0cbd, 0x0cbd, +0x0cdd, 0x0cde, +0x0ce0, 0x0ce1, +0x0cf1, 0x0cf2, +0x0d04, 0x0d0c, +0x0d0e, 0x0d10, +0x0d12, 0x0d3a, +0x0d3d, 0x0d3d, +0x0d4e, 0x0d4e, +0x0d54, 0x0d56, +0x0d5f, 0x0d61, +0x0d7a, 0x0d7f, +0x0d85, 0x0d96, +0x0d9a, 0x0db1, +0x0db3, 0x0dbb, +0x0dbd, 0x0dbd, +0x0dc0, 0x0dc6, +0x0e01, 0x0e30, +0x0e32, 0x0e33, +0x0e40, 0x0e45, +0x0e81, 0x0e82, +0x0e84, 0x0e84, +0x0e86, 0x0e8a, +0x0e8c, 0x0ea3, +0x0ea5, 0x0ea5, +0x0ea7, 0x0eb0, +0x0eb2, 0x0eb3, +0x0ebd, 0x0ebd, +0x0ec0, 0x0ec4, +0x0edc, 0x0edf, +0x0f00, 0x0f00, +0x0f40, 0x0f47, +0x0f49, 0x0f6c, +0x0f88, 0x0f8c, +0x1000, 0x102a, +0x103f, 0x103f, +0x1050, 0x1055, +0x105a, 0x105d, +0x1061, 0x1061, +0x1065, 0x1066, +0x106e, 0x1070, +0x1075, 0x1081, +0x108e, 0x108e, +0x1100, 0x1248, +0x124a, 0x124d, +0x1250, 0x1256, +0x1258, 0x1258, +0x125a, 0x125d, +0x1260, 0x1288, +0x128a, 0x128d, +0x1290, 0x12b0, +0x12b2, 0x12b5, +0x12b8, 0x12be, +0x12c0, 0x12c0, +0x12c2, 0x12c5, +0x12c8, 0x12d6, +0x12d8, 0x1310, +0x1312, 0x1315, +0x1318, 0x135a, +0x1380, 0x138f, +0x1401, 0x166c, +0x166f, 0x167f, +0x1681, 0x169a, +0x16a0, 0x16ea, +0x16f1, 0x16f8, +0x1700, 0x1711, +0x171f, 0x1731, +0x1740, 0x1751, +0x1760, 0x176c, +0x176e, 0x1770, +0x1780, 0x17b3, +0x17dc, 0x17dc, +0x1820, 0x1842, +0x1844, 0x1878, +0x1880, 0x1884, +0x1887, 0x18a8, +0x18aa, 0x18aa, +0x18b0, 0x18f5, +0x1900, 0x191e, +0x1950, 0x196d, +0x1970, 0x1974, +0x1980, 0x19ab, +0x19b0, 0x19c9, +0x1a00, 0x1a16, +0x1a20, 0x1a54, +0x1b05, 0x1b33, +0x1b45, 0x1b4c, +0x1b83, 0x1ba0, +0x1bae, 0x1baf, +0x1bba, 0x1be5, +0x1c00, 0x1c23, +0x1c4d, 0x1c4f, +0x1c5a, 0x1c77, +0x1ce9, 0x1cec, +0x1cee, 0x1cf3, +0x1cf5, 0x1cf6, +0x1cfa, 0x1cfa, +0x2135, 0x2138, +0x2d30, 0x2d67, +0x2d80, 0x2d96, +0x2da0, 0x2da6, +0x2da8, 0x2dae, +0x2db0, 0x2db6, +0x2db8, 0x2dbe, +0x2dc0, 0x2dc6, +0x2dc8, 0x2dce, +0x2dd0, 0x2dd6, +0x2dd8, 0x2dde, +0x3006, 0x3006, +0x303c, 0x303c, +0x3041, 0x3096, +0x309f, 0x309f, +0x30a1, 0x30fa, +0x30ff, 0x30ff, +0x3105, 0x312f, +0x3131, 0x318e, +0x31a0, 0x31bf, +0x31f0, 0x31ff, +0x3400, 0x4dbf, +0x4e00, 0xa014, +0xa016, 0xa48c, +0xa4d0, 0xa4f7, +0xa500, 0xa60b, +0xa610, 0xa61f, +0xa62a, 0xa62b, +0xa66e, 0xa66e, +0xa6a0, 0xa6e5, +0xa78f, 0xa78f, +0xa7f7, 0xa7f7, +0xa7fb, 0xa801, +0xa803, 0xa805, +0xa807, 0xa80a, +0xa80c, 0xa822, +0xa840, 0xa873, +0xa882, 0xa8b3, +0xa8f2, 0xa8f7, +0xa8fb, 0xa8fb, +0xa8fd, 0xa8fe, +0xa90a, 0xa925, +0xa930, 0xa946, +0xa960, 0xa97c, +0xa984, 0xa9b2, +0xa9e0, 0xa9e4, +0xa9e7, 0xa9ef, +0xa9fa, 0xa9fe, +0xaa00, 0xaa28, +0xaa40, 0xaa42, +0xaa44, 0xaa4b, +0xaa60, 0xaa6f, +0xaa71, 0xaa76, +0xaa7a, 0xaa7a, +0xaa7e, 0xaaaf, +0xaab1, 0xaab1, +0xaab5, 0xaab6, +0xaab9, 0xaabd, +0xaac0, 0xaac0, +0xaac2, 0xaac2, +0xaadb, 0xaadc, +0xaae0, 0xaaea, +0xaaf2, 0xaaf2, +0xab01, 0xab06, +0xab09, 0xab0e, +0xab11, 0xab16, +0xab20, 0xab26, +0xab28, 0xab2e, +0xabc0, 0xabe2, +0xac00, 0xd7a3, +0xd7b0, 0xd7c6, +0xd7cb, 0xd7fb, +0xf900, 0xfa6d, +0xfa70, 0xfad9, +0xfb1d, 0xfb1d, +0xfb1f, 0xfb28, +0xfb2a, 0xfb36, +0xfb38, 0xfb3c, +0xfb3e, 0xfb3e, +0xfb40, 0xfb41, +0xfb43, 0xfb44, +0xfb46, 0xfbb1, +0xfbd3, 0xfd3d, +0xfd50, 0xfd8f, +0xfd92, 0xfdc7, +0xfdf0, 0xfdfb, +0xfe70, 0xfe74, +0xfe76, 0xfefc, +0xff66, 0xff6f, +0xff71, 0xff9d, +0xffa0, 0xffbe, +0xffc2, 0xffc7, +0xffca, 0xffcf, +0xffd2, 0xffd7, +0xffda, 0xffdc, +0x10000, 0x1000b, +0x1000d, 0x10026, +0x10028, 0x1003a, +0x1003c, 0x1003d, +0x1003f, 0x1004d, +0x10050, 0x1005d, +0x10080, 0x100fa, +0x10280, 0x1029c, +0x102a0, 0x102d0, +0x10300, 0x1031f, +0x1032d, 0x10340, +0x10342, 0x10349, +0x10350, 0x10375, +0x10380, 0x1039d, +0x103a0, 0x103c3, +0x103c8, 0x103cf, +0x10450, 0x1049d, +0x10500, 0x10527, +0x10530, 0x10563, +0x105c0, 0x105f3, +0x10600, 0x10736, +0x10740, 0x10755, +0x10760, 0x10767, +0x10800, 0x10805, +0x10808, 0x10808, +0x1080a, 0x10835, +0x10837, 0x10838, +0x1083c, 0x1083c, +0x1083f, 0x10855, +0x10860, 0x10876, +0x10880, 0x1089e, +0x108e0, 0x108f2, +0x108f4, 0x108f5, +0x10900, 0x10915, +0x10920, 0x10939, +0x10980, 0x109b7, +0x109be, 0x109bf, +0x10a00, 0x10a00, +0x10a10, 0x10a13, +0x10a15, 0x10a17, +0x10a19, 0x10a35, +0x10a60, 0x10a7c, +0x10a80, 0x10a9c, +0x10ac0, 0x10ac7, +0x10ac9, 0x10ae4, +0x10b00, 0x10b35, +0x10b40, 0x10b55, +0x10b60, 0x10b72, +0x10b80, 0x10b91, +0x10c00, 0x10c48, +0x10d00, 0x10d23, +0x10d4a, 0x10d4d, +0x10d4f, 0x10d4f, +0x10e80, 0x10ea9, +0x10eb0, 0x10eb1, +0x10ec2, 0x10ec4, +0x10f00, 0x10f1c, +0x10f27, 0x10f27, +0x10f30, 0x10f45, +0x10f70, 0x10f81, +0x10fb0, 0x10fc4, +0x10fe0, 0x10ff6, +0x11003, 0x11037, +0x11071, 0x11072, +0x11075, 0x11075, +0x11083, 0x110af, +0x110d0, 0x110e8, +0x11103, 0x11126, +0x11144, 0x11144, +0x11147, 0x11147, +0x11150, 0x11172, +0x11176, 0x11176, +0x11183, 0x111b2, +0x111c1, 0x111c4, +0x111da, 0x111da, +0x111dc, 0x111dc, +0x11200, 0x11211, +0x11213, 0x1122b, +0x1123f, 0x11240, +0x11280, 0x11286, +0x11288, 0x11288, +0x1128a, 0x1128d, +0x1128f, 0x1129d, +0x1129f, 0x112a8, +0x112b0, 0x112de, +0x11305, 0x1130c, +0x1130f, 0x11310, +0x11313, 0x11328, +0x1132a, 0x11330, +0x11332, 0x11333, +0x11335, 0x11339, +0x1133d, 0x1133d, +0x11350, 0x11350, +0x1135d, 0x11361, +0x11380, 0x11389, +0x1138b, 0x1138b, +0x1138e, 0x1138e, +0x11390, 0x113b5, +0x113b7, 0x113b7, +0x113d1, 0x113d1, +0x113d3, 0x113d3, +0x11400, 0x11434, +0x11447, 0x1144a, +0x1145f, 0x11461, +0x11480, 0x114af, +0x114c4, 0x114c5, +0x114c7, 0x114c7, +0x11580, 0x115ae, +0x115d8, 0x115db, +0x11600, 0x1162f, +0x11644, 0x11644, +0x11680, 0x116aa, +0x116b8, 0x116b8, +0x11700, 0x1171a, +0x11740, 0x11746, +0x11800, 0x1182b, +0x118ff, 0x11906, +0x11909, 0x11909, +0x1190c, 0x11913, +0x11915, 0x11916, +0x11918, 0x1192f, +0x1193f, 0x1193f, +0x11941, 0x11941, +0x119a0, 0x119a7, +0x119aa, 0x119d0, +0x119e1, 0x119e1, +0x119e3, 0x119e3, +0x11a00, 0x11a00, +0x11a0b, 0x11a32, +0x11a3a, 0x11a3a, +0x11a50, 0x11a50, +0x11a5c, 0x11a89, +0x11a9d, 0x11a9d, +0x11ab0, 0x11af8, +0x11bc0, 0x11be0, +0x11c00, 0x11c08, +0x11c0a, 0x11c2e, +0x11c40, 0x11c40, +0x11c72, 0x11c8f, +0x11d00, 0x11d06, +0x11d08, 0x11d09, +0x11d0b, 0x11d30, +0x11d46, 0x11d46, +0x11d60, 0x11d65, +0x11d67, 0x11d68, +0x11d6a, 0x11d89, +0x11d98, 0x11d98, +0x11ee0, 0x11ef2, +0x11f02, 0x11f02, +0x11f04, 0x11f10, +0x11f12, 0x11f33, +0x11fb0, 0x11fb0, +0x12000, 0x12399, +0x12480, 0x12543, +0x12f90, 0x12ff0, +0x13000, 0x1342f, +0x13441, 0x13446, +0x13460, 0x143fa, +0x14400, 0x14646, +0x16100, 0x1611d, +0x16800, 0x16a38, +0x16a40, 0x16a5e, +0x16a70, 0x16abe, +0x16ad0, 0x16aed, +0x16b00, 0x16b2f, +0x16b63, 0x16b77, +0x16b7d, 0x16b8f, +0x16d43, 0x16d6a, +0x16f00, 0x16f4a, +0x16f50, 0x16f50, +0x17000, 0x187f7, +0x18800, 0x18cd5, +0x18cff, 0x18d08, +0x1b000, 0x1b122, +0x1b132, 0x1b132, +0x1b150, 0x1b152, +0x1b155, 0x1b155, +0x1b164, 0x1b167, +0x1b170, 0x1b2fb, +0x1bc00, 0x1bc6a, +0x1bc70, 0x1bc7c, +0x1bc80, 0x1bc88, +0x1bc90, 0x1bc99, +0x1df0a, 0x1df0a, +0x1e100, 0x1e12c, +0x1e14e, 0x1e14e, +0x1e290, 0x1e2ad, +0x1e2c0, 0x1e2eb, +0x1e4d0, 0x1e4ea, +0x1e5d0, 0x1e5ed, +0x1e5f0, 0x1e5f0, +0x1e7e0, 0x1e7e6, +0x1e7e8, 0x1e7eb, +0x1e7ed, 0x1e7ee, +0x1e7f0, 0x1e7fe, +0x1e800, 0x1e8c4, +0x1ee00, 0x1ee03, +0x1ee05, 0x1ee1f, +0x1ee21, 0x1ee22, +0x1ee24, 0x1ee24, +0x1ee27, 0x1ee27, +0x1ee29, 0x1ee32, +0x1ee34, 0x1ee37, +0x1ee39, 0x1ee39, +0x1ee3b, 0x1ee3b, +0x1ee42, 0x1ee42, +0x1ee47, 0x1ee47, +0x1ee49, 0x1ee49, +0x1ee4b, 0x1ee4b, +0x1ee4d, 0x1ee4f, +0x1ee51, 0x1ee52, +0x1ee54, 0x1ee54, +0x1ee57, 0x1ee57, +0x1ee59, 0x1ee59, +0x1ee5b, 0x1ee5b, +0x1ee5d, 0x1ee5d, +0x1ee5f, 0x1ee5f, +0x1ee61, 0x1ee62, +0x1ee64, 0x1ee64, +0x1ee67, 0x1ee6a, +0x1ee6c, 0x1ee72, +0x1ee74, 0x1ee77, +0x1ee79, 0x1ee7c, +0x1ee7e, 0x1ee7e, +0x1ee80, 0x1ee89, +0x1ee8b, 0x1ee9b, +0x1eea1, 0x1eea3, +0x1eea5, 0x1eea9, +0x1eeab, 0x1eebb, +0x20000, 0x2a6df, +0x2a700, 0x2b739, +0x2b740, 0x2b81d, +0x2b820, 0x2cea1, +0x2ceb0, 0x2ebe0, +0x2ebf0, 0x2ee5d, +0x2f800, 0x2fa1d, +0x30000, 0x3134a, +0x31350, 0x323af, +}; /* END of CR_Lo */ + +/* PROPERTY: 'Logical_Order_Exception': Binary Property */ +static const OnigCodePoint +CR_Logical_Order_Exception[] = { 7, +0x0e40, 0x0e44, +0x0ec0, 0x0ec4, +0x19b5, 0x19b7, +0x19ba, 0x19ba, +0xaab5, 0xaab6, +0xaab9, 0xaab9, +0xaabb, 0xaabc, +}; /* END of CR_Logical_Order_Exception */ + +/* PROPERTY: 'Lowercase': Derived Property */ +#define CR_Lowercase CR_Lower + +/* PROPERTY: 'Lt': General Category */ +static const OnigCodePoint +CR_Lt[] = { 10, +0x01c5, 0x01c5, +0x01c8, 0x01c8, +0x01cb, 0x01cb, +0x01f2, 0x01f2, +0x1f88, 0x1f8f, +0x1f98, 0x1f9f, +0x1fa8, 0x1faf, +0x1fbc, 0x1fbc, +0x1fcc, 0x1fcc, +0x1ffc, 0x1ffc, +}; /* END of CR_Lt */ + +/* PROPERTY: 'Lu': General Category */ +static const OnigCodePoint +CR_Lu[] = { 651, +0x0041, 0x005a, +0x00c0, 0x00d6, +0x00d8, 0x00de, +0x0100, 0x0100, +0x0102, 0x0102, +0x0104, 0x0104, +0x0106, 0x0106, +0x0108, 0x0108, +0x010a, 0x010a, +0x010c, 0x010c, +0x010e, 0x010e, +0x0110, 0x0110, +0x0112, 0x0112, +0x0114, 0x0114, +0x0116, 0x0116, +0x0118, 0x0118, +0x011a, 0x011a, +0x011c, 0x011c, +0x011e, 0x011e, +0x0120, 0x0120, +0x0122, 0x0122, +0x0124, 0x0124, +0x0126, 0x0126, +0x0128, 0x0128, +0x012a, 0x012a, +0x012c, 0x012c, +0x012e, 0x012e, +0x0130, 0x0130, +0x0132, 0x0132, +0x0134, 0x0134, +0x0136, 0x0136, +0x0139, 0x0139, +0x013b, 0x013b, +0x013d, 0x013d, +0x013f, 0x013f, +0x0141, 0x0141, +0x0143, 0x0143, +0x0145, 0x0145, +0x0147, 0x0147, +0x014a, 0x014a, +0x014c, 0x014c, +0x014e, 0x014e, +0x0150, 0x0150, +0x0152, 0x0152, +0x0154, 0x0154, +0x0156, 0x0156, +0x0158, 0x0158, +0x015a, 0x015a, +0x015c, 0x015c, +0x015e, 0x015e, +0x0160, 0x0160, +0x0162, 0x0162, +0x0164, 0x0164, +0x0166, 0x0166, +0x0168, 0x0168, +0x016a, 0x016a, +0x016c, 0x016c, +0x016e, 0x016e, +0x0170, 0x0170, +0x0172, 0x0172, +0x0174, 0x0174, +0x0176, 0x0176, +0x0178, 0x0179, +0x017b, 0x017b, +0x017d, 0x017d, +0x0181, 0x0182, +0x0184, 0x0184, +0x0186, 0x0187, +0x0189, 0x018b, +0x018e, 0x0191, +0x0193, 0x0194, +0x0196, 0x0198, +0x019c, 0x019d, +0x019f, 0x01a0, +0x01a2, 0x01a2, +0x01a4, 0x01a4, +0x01a6, 0x01a7, +0x01a9, 0x01a9, +0x01ac, 0x01ac, +0x01ae, 0x01af, +0x01b1, 0x01b3, +0x01b5, 0x01b5, +0x01b7, 0x01b8, +0x01bc, 0x01bc, +0x01c4, 0x01c4, +0x01c7, 0x01c7, +0x01ca, 0x01ca, +0x01cd, 0x01cd, +0x01cf, 0x01cf, +0x01d1, 0x01d1, +0x01d3, 0x01d3, +0x01d5, 0x01d5, +0x01d7, 0x01d7, +0x01d9, 0x01d9, +0x01db, 0x01db, +0x01de, 0x01de, +0x01e0, 0x01e0, +0x01e2, 0x01e2, +0x01e4, 0x01e4, +0x01e6, 0x01e6, +0x01e8, 0x01e8, +0x01ea, 0x01ea, +0x01ec, 0x01ec, +0x01ee, 0x01ee, +0x01f1, 0x01f1, +0x01f4, 0x01f4, +0x01f6, 0x01f8, +0x01fa, 0x01fa, +0x01fc, 0x01fc, +0x01fe, 0x01fe, +0x0200, 0x0200, +0x0202, 0x0202, +0x0204, 0x0204, +0x0206, 0x0206, +0x0208, 0x0208, +0x020a, 0x020a, +0x020c, 0x020c, +0x020e, 0x020e, +0x0210, 0x0210, +0x0212, 0x0212, +0x0214, 0x0214, +0x0216, 0x0216, +0x0218, 0x0218, +0x021a, 0x021a, +0x021c, 0x021c, +0x021e, 0x021e, +0x0220, 0x0220, +0x0222, 0x0222, +0x0224, 0x0224, +0x0226, 0x0226, +0x0228, 0x0228, +0x022a, 0x022a, +0x022c, 0x022c, +0x022e, 0x022e, +0x0230, 0x0230, +0x0232, 0x0232, +0x023a, 0x023b, +0x023d, 0x023e, +0x0241, 0x0241, +0x0243, 0x0246, +0x0248, 0x0248, +0x024a, 0x024a, +0x024c, 0x024c, +0x024e, 0x024e, +0x0370, 0x0370, +0x0372, 0x0372, +0x0376, 0x0376, +0x037f, 0x037f, +0x0386, 0x0386, +0x0388, 0x038a, +0x038c, 0x038c, +0x038e, 0x038f, +0x0391, 0x03a1, +0x03a3, 0x03ab, +0x03cf, 0x03cf, +0x03d2, 0x03d4, +0x03d8, 0x03d8, +0x03da, 0x03da, +0x03dc, 0x03dc, +0x03de, 0x03de, +0x03e0, 0x03e0, +0x03e2, 0x03e2, +0x03e4, 0x03e4, +0x03e6, 0x03e6, +0x03e8, 0x03e8, +0x03ea, 0x03ea, +0x03ec, 0x03ec, +0x03ee, 0x03ee, +0x03f4, 0x03f4, +0x03f7, 0x03f7, +0x03f9, 0x03fa, +0x03fd, 0x042f, +0x0460, 0x0460, +0x0462, 0x0462, +0x0464, 0x0464, +0x0466, 0x0466, +0x0468, 0x0468, +0x046a, 0x046a, +0x046c, 0x046c, +0x046e, 0x046e, +0x0470, 0x0470, +0x0472, 0x0472, +0x0474, 0x0474, +0x0476, 0x0476, +0x0478, 0x0478, +0x047a, 0x047a, +0x047c, 0x047c, +0x047e, 0x047e, +0x0480, 0x0480, +0x048a, 0x048a, +0x048c, 0x048c, +0x048e, 0x048e, +0x0490, 0x0490, +0x0492, 0x0492, +0x0494, 0x0494, +0x0496, 0x0496, +0x0498, 0x0498, +0x049a, 0x049a, +0x049c, 0x049c, +0x049e, 0x049e, +0x04a0, 0x04a0, +0x04a2, 0x04a2, +0x04a4, 0x04a4, +0x04a6, 0x04a6, +0x04a8, 0x04a8, +0x04aa, 0x04aa, +0x04ac, 0x04ac, +0x04ae, 0x04ae, +0x04b0, 0x04b0, +0x04b2, 0x04b2, +0x04b4, 0x04b4, +0x04b6, 0x04b6, +0x04b8, 0x04b8, +0x04ba, 0x04ba, +0x04bc, 0x04bc, +0x04be, 0x04be, +0x04c0, 0x04c1, +0x04c3, 0x04c3, +0x04c5, 0x04c5, +0x04c7, 0x04c7, +0x04c9, 0x04c9, +0x04cb, 0x04cb, +0x04cd, 0x04cd, +0x04d0, 0x04d0, +0x04d2, 0x04d2, +0x04d4, 0x04d4, +0x04d6, 0x04d6, +0x04d8, 0x04d8, +0x04da, 0x04da, +0x04dc, 0x04dc, +0x04de, 0x04de, +0x04e0, 0x04e0, +0x04e2, 0x04e2, +0x04e4, 0x04e4, +0x04e6, 0x04e6, +0x04e8, 0x04e8, +0x04ea, 0x04ea, +0x04ec, 0x04ec, +0x04ee, 0x04ee, +0x04f0, 0x04f0, +0x04f2, 0x04f2, +0x04f4, 0x04f4, +0x04f6, 0x04f6, +0x04f8, 0x04f8, +0x04fa, 0x04fa, +0x04fc, 0x04fc, +0x04fe, 0x04fe, +0x0500, 0x0500, +0x0502, 0x0502, +0x0504, 0x0504, +0x0506, 0x0506, +0x0508, 0x0508, +0x050a, 0x050a, +0x050c, 0x050c, +0x050e, 0x050e, +0x0510, 0x0510, +0x0512, 0x0512, +0x0514, 0x0514, +0x0516, 0x0516, +0x0518, 0x0518, +0x051a, 0x051a, +0x051c, 0x051c, +0x051e, 0x051e, +0x0520, 0x0520, +0x0522, 0x0522, +0x0524, 0x0524, +0x0526, 0x0526, +0x0528, 0x0528, +0x052a, 0x052a, +0x052c, 0x052c, +0x052e, 0x052e, +0x0531, 0x0556, +0x10a0, 0x10c5, +0x10c7, 0x10c7, +0x10cd, 0x10cd, +0x13a0, 0x13f5, +0x1c89, 0x1c89, +0x1c90, 0x1cba, +0x1cbd, 0x1cbf, +0x1e00, 0x1e00, +0x1e02, 0x1e02, +0x1e04, 0x1e04, +0x1e06, 0x1e06, +0x1e08, 0x1e08, +0x1e0a, 0x1e0a, +0x1e0c, 0x1e0c, +0x1e0e, 0x1e0e, +0x1e10, 0x1e10, +0x1e12, 0x1e12, +0x1e14, 0x1e14, +0x1e16, 0x1e16, +0x1e18, 0x1e18, +0x1e1a, 0x1e1a, +0x1e1c, 0x1e1c, +0x1e1e, 0x1e1e, +0x1e20, 0x1e20, +0x1e22, 0x1e22, +0x1e24, 0x1e24, +0x1e26, 0x1e26, +0x1e28, 0x1e28, +0x1e2a, 0x1e2a, +0x1e2c, 0x1e2c, +0x1e2e, 0x1e2e, +0x1e30, 0x1e30, +0x1e32, 0x1e32, +0x1e34, 0x1e34, +0x1e36, 0x1e36, +0x1e38, 0x1e38, +0x1e3a, 0x1e3a, +0x1e3c, 0x1e3c, +0x1e3e, 0x1e3e, +0x1e40, 0x1e40, +0x1e42, 0x1e42, +0x1e44, 0x1e44, +0x1e46, 0x1e46, +0x1e48, 0x1e48, +0x1e4a, 0x1e4a, +0x1e4c, 0x1e4c, +0x1e4e, 0x1e4e, +0x1e50, 0x1e50, +0x1e52, 0x1e52, +0x1e54, 0x1e54, +0x1e56, 0x1e56, +0x1e58, 0x1e58, +0x1e5a, 0x1e5a, +0x1e5c, 0x1e5c, +0x1e5e, 0x1e5e, +0x1e60, 0x1e60, +0x1e62, 0x1e62, +0x1e64, 0x1e64, +0x1e66, 0x1e66, +0x1e68, 0x1e68, +0x1e6a, 0x1e6a, +0x1e6c, 0x1e6c, +0x1e6e, 0x1e6e, +0x1e70, 0x1e70, +0x1e72, 0x1e72, +0x1e74, 0x1e74, +0x1e76, 0x1e76, +0x1e78, 0x1e78, +0x1e7a, 0x1e7a, +0x1e7c, 0x1e7c, +0x1e7e, 0x1e7e, +0x1e80, 0x1e80, +0x1e82, 0x1e82, +0x1e84, 0x1e84, +0x1e86, 0x1e86, +0x1e88, 0x1e88, +0x1e8a, 0x1e8a, +0x1e8c, 0x1e8c, +0x1e8e, 0x1e8e, +0x1e90, 0x1e90, +0x1e92, 0x1e92, +0x1e94, 0x1e94, +0x1e9e, 0x1e9e, +0x1ea0, 0x1ea0, +0x1ea2, 0x1ea2, +0x1ea4, 0x1ea4, +0x1ea6, 0x1ea6, +0x1ea8, 0x1ea8, +0x1eaa, 0x1eaa, +0x1eac, 0x1eac, +0x1eae, 0x1eae, +0x1eb0, 0x1eb0, +0x1eb2, 0x1eb2, +0x1eb4, 0x1eb4, +0x1eb6, 0x1eb6, +0x1eb8, 0x1eb8, +0x1eba, 0x1eba, +0x1ebc, 0x1ebc, +0x1ebe, 0x1ebe, +0x1ec0, 0x1ec0, +0x1ec2, 0x1ec2, +0x1ec4, 0x1ec4, +0x1ec6, 0x1ec6, +0x1ec8, 0x1ec8, +0x1eca, 0x1eca, +0x1ecc, 0x1ecc, +0x1ece, 0x1ece, +0x1ed0, 0x1ed0, +0x1ed2, 0x1ed2, +0x1ed4, 0x1ed4, +0x1ed6, 0x1ed6, +0x1ed8, 0x1ed8, +0x1eda, 0x1eda, +0x1edc, 0x1edc, +0x1ede, 0x1ede, +0x1ee0, 0x1ee0, +0x1ee2, 0x1ee2, +0x1ee4, 0x1ee4, +0x1ee6, 0x1ee6, +0x1ee8, 0x1ee8, +0x1eea, 0x1eea, +0x1eec, 0x1eec, +0x1eee, 0x1eee, +0x1ef0, 0x1ef0, +0x1ef2, 0x1ef2, +0x1ef4, 0x1ef4, +0x1ef6, 0x1ef6, +0x1ef8, 0x1ef8, +0x1efa, 0x1efa, +0x1efc, 0x1efc, +0x1efe, 0x1efe, +0x1f08, 0x1f0f, +0x1f18, 0x1f1d, +0x1f28, 0x1f2f, +0x1f38, 0x1f3f, +0x1f48, 0x1f4d, +0x1f59, 0x1f59, +0x1f5b, 0x1f5b, +0x1f5d, 0x1f5d, +0x1f5f, 0x1f5f, +0x1f68, 0x1f6f, +0x1fb8, 0x1fbb, +0x1fc8, 0x1fcb, +0x1fd8, 0x1fdb, +0x1fe8, 0x1fec, +0x1ff8, 0x1ffb, +0x2102, 0x2102, +0x2107, 0x2107, +0x210b, 0x210d, +0x2110, 0x2112, +0x2115, 0x2115, +0x2119, 0x211d, +0x2124, 0x2124, +0x2126, 0x2126, +0x2128, 0x2128, +0x212a, 0x212d, +0x2130, 0x2133, +0x213e, 0x213f, +0x2145, 0x2145, +0x2183, 0x2183, +0x2c00, 0x2c2f, +0x2c60, 0x2c60, +0x2c62, 0x2c64, +0x2c67, 0x2c67, +0x2c69, 0x2c69, +0x2c6b, 0x2c6b, +0x2c6d, 0x2c70, +0x2c72, 0x2c72, +0x2c75, 0x2c75, +0x2c7e, 0x2c80, +0x2c82, 0x2c82, +0x2c84, 0x2c84, +0x2c86, 0x2c86, +0x2c88, 0x2c88, +0x2c8a, 0x2c8a, +0x2c8c, 0x2c8c, +0x2c8e, 0x2c8e, +0x2c90, 0x2c90, +0x2c92, 0x2c92, +0x2c94, 0x2c94, +0x2c96, 0x2c96, +0x2c98, 0x2c98, +0x2c9a, 0x2c9a, +0x2c9c, 0x2c9c, +0x2c9e, 0x2c9e, +0x2ca0, 0x2ca0, +0x2ca2, 0x2ca2, +0x2ca4, 0x2ca4, +0x2ca6, 0x2ca6, +0x2ca8, 0x2ca8, +0x2caa, 0x2caa, +0x2cac, 0x2cac, +0x2cae, 0x2cae, +0x2cb0, 0x2cb0, +0x2cb2, 0x2cb2, +0x2cb4, 0x2cb4, +0x2cb6, 0x2cb6, +0x2cb8, 0x2cb8, +0x2cba, 0x2cba, +0x2cbc, 0x2cbc, +0x2cbe, 0x2cbe, +0x2cc0, 0x2cc0, +0x2cc2, 0x2cc2, +0x2cc4, 0x2cc4, +0x2cc6, 0x2cc6, +0x2cc8, 0x2cc8, +0x2cca, 0x2cca, +0x2ccc, 0x2ccc, +0x2cce, 0x2cce, +0x2cd0, 0x2cd0, +0x2cd2, 0x2cd2, +0x2cd4, 0x2cd4, +0x2cd6, 0x2cd6, +0x2cd8, 0x2cd8, +0x2cda, 0x2cda, +0x2cdc, 0x2cdc, +0x2cde, 0x2cde, +0x2ce0, 0x2ce0, +0x2ce2, 0x2ce2, +0x2ceb, 0x2ceb, +0x2ced, 0x2ced, +0x2cf2, 0x2cf2, +0xa640, 0xa640, +0xa642, 0xa642, +0xa644, 0xa644, +0xa646, 0xa646, +0xa648, 0xa648, +0xa64a, 0xa64a, +0xa64c, 0xa64c, +0xa64e, 0xa64e, +0xa650, 0xa650, +0xa652, 0xa652, +0xa654, 0xa654, +0xa656, 0xa656, +0xa658, 0xa658, +0xa65a, 0xa65a, +0xa65c, 0xa65c, +0xa65e, 0xa65e, +0xa660, 0xa660, +0xa662, 0xa662, +0xa664, 0xa664, +0xa666, 0xa666, +0xa668, 0xa668, +0xa66a, 0xa66a, +0xa66c, 0xa66c, +0xa680, 0xa680, +0xa682, 0xa682, +0xa684, 0xa684, +0xa686, 0xa686, +0xa688, 0xa688, +0xa68a, 0xa68a, +0xa68c, 0xa68c, +0xa68e, 0xa68e, +0xa690, 0xa690, +0xa692, 0xa692, +0xa694, 0xa694, +0xa696, 0xa696, +0xa698, 0xa698, +0xa69a, 0xa69a, +0xa722, 0xa722, +0xa724, 0xa724, +0xa726, 0xa726, +0xa728, 0xa728, +0xa72a, 0xa72a, +0xa72c, 0xa72c, +0xa72e, 0xa72e, +0xa732, 0xa732, +0xa734, 0xa734, +0xa736, 0xa736, +0xa738, 0xa738, +0xa73a, 0xa73a, +0xa73c, 0xa73c, +0xa73e, 0xa73e, +0xa740, 0xa740, +0xa742, 0xa742, +0xa744, 0xa744, +0xa746, 0xa746, +0xa748, 0xa748, +0xa74a, 0xa74a, +0xa74c, 0xa74c, +0xa74e, 0xa74e, +0xa750, 0xa750, +0xa752, 0xa752, +0xa754, 0xa754, +0xa756, 0xa756, +0xa758, 0xa758, +0xa75a, 0xa75a, +0xa75c, 0xa75c, +0xa75e, 0xa75e, +0xa760, 0xa760, +0xa762, 0xa762, +0xa764, 0xa764, +0xa766, 0xa766, +0xa768, 0xa768, +0xa76a, 0xa76a, +0xa76c, 0xa76c, +0xa76e, 0xa76e, +0xa779, 0xa779, +0xa77b, 0xa77b, +0xa77d, 0xa77e, +0xa780, 0xa780, +0xa782, 0xa782, +0xa784, 0xa784, +0xa786, 0xa786, +0xa78b, 0xa78b, +0xa78d, 0xa78d, +0xa790, 0xa790, +0xa792, 0xa792, +0xa796, 0xa796, +0xa798, 0xa798, +0xa79a, 0xa79a, +0xa79c, 0xa79c, +0xa79e, 0xa79e, +0xa7a0, 0xa7a0, +0xa7a2, 0xa7a2, +0xa7a4, 0xa7a4, +0xa7a6, 0xa7a6, +0xa7a8, 0xa7a8, +0xa7aa, 0xa7ae, +0xa7b0, 0xa7b4, +0xa7b6, 0xa7b6, +0xa7b8, 0xa7b8, +0xa7ba, 0xa7ba, +0xa7bc, 0xa7bc, +0xa7be, 0xa7be, +0xa7c0, 0xa7c0, +0xa7c2, 0xa7c2, +0xa7c4, 0xa7c7, +0xa7c9, 0xa7c9, +0xa7cb, 0xa7cc, +0xa7d0, 0xa7d0, +0xa7d6, 0xa7d6, +0xa7d8, 0xa7d8, +0xa7da, 0xa7da, +0xa7dc, 0xa7dc, +0xa7f5, 0xa7f5, +0xff21, 0xff3a, +0x10400, 0x10427, +0x104b0, 0x104d3, +0x10570, 0x1057a, +0x1057c, 0x1058a, +0x1058c, 0x10592, +0x10594, 0x10595, +0x10c80, 0x10cb2, +0x10d50, 0x10d65, +0x118a0, 0x118bf, +0x16e40, 0x16e5f, +0x1d400, 0x1d419, +0x1d434, 0x1d44d, +0x1d468, 0x1d481, +0x1d49c, 0x1d49c, +0x1d49e, 0x1d49f, +0x1d4a2, 0x1d4a2, +0x1d4a5, 0x1d4a6, +0x1d4a9, 0x1d4ac, +0x1d4ae, 0x1d4b5, +0x1d4d0, 0x1d4e9, +0x1d504, 0x1d505, +0x1d507, 0x1d50a, +0x1d50d, 0x1d514, +0x1d516, 0x1d51c, +0x1d538, 0x1d539, +0x1d53b, 0x1d53e, +0x1d540, 0x1d544, +0x1d546, 0x1d546, +0x1d54a, 0x1d550, +0x1d56c, 0x1d585, +0x1d5a0, 0x1d5b9, +0x1d5d4, 0x1d5ed, +0x1d608, 0x1d621, +0x1d63c, 0x1d655, +0x1d670, 0x1d689, +0x1d6a8, 0x1d6c0, +0x1d6e2, 0x1d6fa, +0x1d71c, 0x1d734, +0x1d756, 0x1d76e, +0x1d790, 0x1d7a8, +0x1d7ca, 0x1d7ca, +0x1e900, 0x1e921, +}; /* END of CR_Lu */ + +/* PROPERTY: 'Lycian': Script */ +static const OnigCodePoint +CR_Lycian[] = { 1, +0x10280, 0x1029c, +}; /* END of CR_Lycian */ + +/* PROPERTY: 'Lydian': Script */ +static const OnigCodePoint +CR_Lydian[] = { 2, +0x10920, 0x10939, +0x1093f, 0x1093f, +}; /* END of CR_Lydian */ + +/* PROPERTY: 'M': Major Category */ +static const OnigCodePoint +CR_M[] = { 321, +0x0300, 0x036f, +0x0483, 0x0489, +0x0591, 0x05bd, +0x05bf, 0x05bf, +0x05c1, 0x05c2, +0x05c4, 0x05c5, +0x05c7, 0x05c7, +0x0610, 0x061a, +0x064b, 0x065f, +0x0670, 0x0670, +0x06d6, 0x06dc, +0x06df, 0x06e4, +0x06e7, 0x06e8, +0x06ea, 0x06ed, +0x0711, 0x0711, +0x0730, 0x074a, +0x07a6, 0x07b0, +0x07eb, 0x07f3, +0x07fd, 0x07fd, +0x0816, 0x0819, +0x081b, 0x0823, +0x0825, 0x0827, +0x0829, 0x082d, +0x0859, 0x085b, +0x0897, 0x089f, +0x08ca, 0x08e1, +0x08e3, 0x0903, +0x093a, 0x093c, +0x093e, 0x094f, +0x0951, 0x0957, +0x0962, 0x0963, +0x0981, 0x0983, +0x09bc, 0x09bc, +0x09be, 0x09c4, +0x09c7, 0x09c8, +0x09cb, 0x09cd, +0x09d7, 0x09d7, +0x09e2, 0x09e3, +0x09fe, 0x09fe, +0x0a01, 0x0a03, +0x0a3c, 0x0a3c, +0x0a3e, 0x0a42, +0x0a47, 0x0a48, +0x0a4b, 0x0a4d, +0x0a51, 0x0a51, +0x0a70, 0x0a71, +0x0a75, 0x0a75, +0x0a81, 0x0a83, +0x0abc, 0x0abc, +0x0abe, 0x0ac5, +0x0ac7, 0x0ac9, +0x0acb, 0x0acd, +0x0ae2, 0x0ae3, +0x0afa, 0x0aff, +0x0b01, 0x0b03, +0x0b3c, 0x0b3c, +0x0b3e, 0x0b44, +0x0b47, 0x0b48, +0x0b4b, 0x0b4d, +0x0b55, 0x0b57, +0x0b62, 0x0b63, +0x0b82, 0x0b82, +0x0bbe, 0x0bc2, +0x0bc6, 0x0bc8, +0x0bca, 0x0bcd, +0x0bd7, 0x0bd7, +0x0c00, 0x0c04, +0x0c3c, 0x0c3c, +0x0c3e, 0x0c44, +0x0c46, 0x0c48, +0x0c4a, 0x0c4d, +0x0c55, 0x0c56, +0x0c62, 0x0c63, +0x0c81, 0x0c83, +0x0cbc, 0x0cbc, +0x0cbe, 0x0cc4, +0x0cc6, 0x0cc8, +0x0cca, 0x0ccd, +0x0cd5, 0x0cd6, +0x0ce2, 0x0ce3, +0x0cf3, 0x0cf3, +0x0d00, 0x0d03, +0x0d3b, 0x0d3c, +0x0d3e, 0x0d44, +0x0d46, 0x0d48, +0x0d4a, 0x0d4d, +0x0d57, 0x0d57, +0x0d62, 0x0d63, +0x0d81, 0x0d83, +0x0dca, 0x0dca, +0x0dcf, 0x0dd4, +0x0dd6, 0x0dd6, +0x0dd8, 0x0ddf, +0x0df2, 0x0df3, +0x0e31, 0x0e31, +0x0e34, 0x0e3a, +0x0e47, 0x0e4e, +0x0eb1, 0x0eb1, +0x0eb4, 0x0ebc, +0x0ec8, 0x0ece, +0x0f18, 0x0f19, +0x0f35, 0x0f35, +0x0f37, 0x0f37, +0x0f39, 0x0f39, +0x0f3e, 0x0f3f, +0x0f71, 0x0f84, +0x0f86, 0x0f87, +0x0f8d, 0x0f97, +0x0f99, 0x0fbc, +0x0fc6, 0x0fc6, +0x102b, 0x103e, +0x1056, 0x1059, +0x105e, 0x1060, +0x1062, 0x1064, +0x1067, 0x106d, +0x1071, 0x1074, +0x1082, 0x108d, +0x108f, 0x108f, +0x109a, 0x109d, +0x135d, 0x135f, +0x1712, 0x1715, +0x1732, 0x1734, +0x1752, 0x1753, +0x1772, 0x1773, +0x17b4, 0x17d3, +0x17dd, 0x17dd, +0x180b, 0x180d, +0x180f, 0x180f, +0x1885, 0x1886, +0x18a9, 0x18a9, +0x1920, 0x192b, +0x1930, 0x193b, +0x1a17, 0x1a1b, +0x1a55, 0x1a5e, +0x1a60, 0x1a7c, +0x1a7f, 0x1a7f, +0x1ab0, 0x1ace, +0x1b00, 0x1b04, +0x1b34, 0x1b44, +0x1b6b, 0x1b73, +0x1b80, 0x1b82, +0x1ba1, 0x1bad, +0x1be6, 0x1bf3, +0x1c24, 0x1c37, +0x1cd0, 0x1cd2, +0x1cd4, 0x1ce8, +0x1ced, 0x1ced, +0x1cf4, 0x1cf4, +0x1cf7, 0x1cf9, +0x1dc0, 0x1dff, +0x20d0, 0x20f0, +0x2cef, 0x2cf1, +0x2d7f, 0x2d7f, +0x2de0, 0x2dff, +0x302a, 0x302f, +0x3099, 0x309a, +0xa66f, 0xa672, +0xa674, 0xa67d, +0xa69e, 0xa69f, +0xa6f0, 0xa6f1, +0xa802, 0xa802, +0xa806, 0xa806, +0xa80b, 0xa80b, +0xa823, 0xa827, +0xa82c, 0xa82c, +0xa880, 0xa881, +0xa8b4, 0xa8c5, +0xa8e0, 0xa8f1, +0xa8ff, 0xa8ff, +0xa926, 0xa92d, +0xa947, 0xa953, +0xa980, 0xa983, +0xa9b3, 0xa9c0, +0xa9e5, 0xa9e5, +0xaa29, 0xaa36, +0xaa43, 0xaa43, +0xaa4c, 0xaa4d, +0xaa7b, 0xaa7d, +0xaab0, 0xaab0, +0xaab2, 0xaab4, +0xaab7, 0xaab8, +0xaabe, 0xaabf, +0xaac1, 0xaac1, +0xaaeb, 0xaaef, +0xaaf5, 0xaaf6, +0xabe3, 0xabea, +0xabec, 0xabed, +0xfb1e, 0xfb1e, +0xfe00, 0xfe0f, +0xfe20, 0xfe2f, +0x101fd, 0x101fd, +0x102e0, 0x102e0, +0x10376, 0x1037a, +0x10a01, 0x10a03, +0x10a05, 0x10a06, +0x10a0c, 0x10a0f, +0x10a38, 0x10a3a, +0x10a3f, 0x10a3f, +0x10ae5, 0x10ae6, +0x10d24, 0x10d27, +0x10d69, 0x10d6d, +0x10eab, 0x10eac, +0x10efc, 0x10eff, +0x10f46, 0x10f50, +0x10f82, 0x10f85, +0x11000, 0x11002, +0x11038, 0x11046, +0x11070, 0x11070, +0x11073, 0x11074, +0x1107f, 0x11082, +0x110b0, 0x110ba, +0x110c2, 0x110c2, +0x11100, 0x11102, +0x11127, 0x11134, +0x11145, 0x11146, +0x11173, 0x11173, +0x11180, 0x11182, +0x111b3, 0x111c0, +0x111c9, 0x111cc, +0x111ce, 0x111cf, +0x1122c, 0x11237, +0x1123e, 0x1123e, +0x11241, 0x11241, +0x112df, 0x112ea, +0x11300, 0x11303, +0x1133b, 0x1133c, +0x1133e, 0x11344, +0x11347, 0x11348, +0x1134b, 0x1134d, +0x11357, 0x11357, +0x11362, 0x11363, +0x11366, 0x1136c, +0x11370, 0x11374, +0x113b8, 0x113c0, +0x113c2, 0x113c2, +0x113c5, 0x113c5, +0x113c7, 0x113ca, +0x113cc, 0x113d0, +0x113d2, 0x113d2, +0x113e1, 0x113e2, +0x11435, 0x11446, +0x1145e, 0x1145e, +0x114b0, 0x114c3, +0x115af, 0x115b5, +0x115b8, 0x115c0, +0x115dc, 0x115dd, +0x11630, 0x11640, +0x116ab, 0x116b7, +0x1171d, 0x1172b, +0x1182c, 0x1183a, +0x11930, 0x11935, +0x11937, 0x11938, +0x1193b, 0x1193e, +0x11940, 0x11940, +0x11942, 0x11943, +0x119d1, 0x119d7, +0x119da, 0x119e0, +0x119e4, 0x119e4, +0x11a01, 0x11a0a, +0x11a33, 0x11a39, +0x11a3b, 0x11a3e, +0x11a47, 0x11a47, +0x11a51, 0x11a5b, +0x11a8a, 0x11a99, +0x11c2f, 0x11c36, +0x11c38, 0x11c3f, +0x11c92, 0x11ca7, +0x11ca9, 0x11cb6, +0x11d31, 0x11d36, +0x11d3a, 0x11d3a, +0x11d3c, 0x11d3d, +0x11d3f, 0x11d45, +0x11d47, 0x11d47, +0x11d8a, 0x11d8e, +0x11d90, 0x11d91, +0x11d93, 0x11d97, +0x11ef3, 0x11ef6, +0x11f00, 0x11f01, +0x11f03, 0x11f03, +0x11f34, 0x11f3a, +0x11f3e, 0x11f42, +0x11f5a, 0x11f5a, +0x13440, 0x13440, +0x13447, 0x13455, +0x1611e, 0x1612f, +0x16af0, 0x16af4, +0x16b30, 0x16b36, +0x16f4f, 0x16f4f, +0x16f51, 0x16f87, +0x16f8f, 0x16f92, +0x16fe4, 0x16fe4, +0x16ff0, 0x16ff1, +0x1bc9d, 0x1bc9e, +0x1cf00, 0x1cf2d, +0x1cf30, 0x1cf46, +0x1d165, 0x1d169, +0x1d16d, 0x1d172, +0x1d17b, 0x1d182, +0x1d185, 0x1d18b, +0x1d1aa, 0x1d1ad, +0x1d242, 0x1d244, +0x1da00, 0x1da36, +0x1da3b, 0x1da6c, +0x1da75, 0x1da75, +0x1da84, 0x1da84, +0x1da9b, 0x1da9f, +0x1daa1, 0x1daaf, +0x1e000, 0x1e006, +0x1e008, 0x1e018, +0x1e01b, 0x1e021, +0x1e023, 0x1e024, +0x1e026, 0x1e02a, +0x1e08f, 0x1e08f, +0x1e130, 0x1e136, +0x1e2ae, 0x1e2ae, +0x1e2ec, 0x1e2ef, +0x1e4ec, 0x1e4ef, +0x1e5ee, 0x1e5ef, +0x1e8d0, 0x1e8d6, +0x1e944, 0x1e94a, +0xe0100, 0xe01ef, +}; /* END of CR_M */ + +/* PROPERTY: 'Mahajani': Script */ +static const OnigCodePoint +CR_Mahajani[] = { 1, +0x11150, 0x11176, +}; /* END of CR_Mahajani */ + +/* PROPERTY: 'Makasar': Script */ +static const OnigCodePoint +CR_Makasar[] = { 1, +0x11ee0, 0x11ef8, +}; /* END of CR_Makasar */ + +/* PROPERTY: 'Malayalam': Script */ +static const OnigCodePoint +CR_Malayalam[] = { 7, +0x0d00, 0x0d0c, +0x0d0e, 0x0d10, +0x0d12, 0x0d44, +0x0d46, 0x0d48, +0x0d4a, 0x0d4f, +0x0d54, 0x0d63, +0x0d66, 0x0d7f, +}; /* END of CR_Malayalam */ + +/* PROPERTY: 'Mandaic': Script */ +static const OnigCodePoint +CR_Mandaic[] = { 2, +0x0840, 0x085b, +0x085e, 0x085e, +}; /* END of CR_Mandaic */ + +/* PROPERTY: 'Manichaean': Script */ +static const OnigCodePoint +CR_Manichaean[] = { 2, +0x10ac0, 0x10ae6, +0x10aeb, 0x10af6, +}; /* END of CR_Manichaean */ + +/* PROPERTY: 'Marchen': Script */ +static const OnigCodePoint +CR_Marchen[] = { 3, +0x11c70, 0x11c8f, +0x11c92, 0x11ca7, +0x11ca9, 0x11cb6, +}; /* END of CR_Marchen */ + +/* PROPERTY: 'Masaram_Gondi': Script */ +static const OnigCodePoint +CR_Masaram_Gondi[] = { 7, +0x11d00, 0x11d06, +0x11d08, 0x11d09, +0x11d0b, 0x11d36, +0x11d3a, 0x11d3a, +0x11d3c, 0x11d3d, +0x11d3f, 0x11d47, +0x11d50, 0x11d59, +}; /* END of CR_Masaram_Gondi */ + +/* PROPERTY: 'Math': Derived Property */ +static const OnigCodePoint +CR_Math[] = { 139, +0x002b, 0x002b, +0x003c, 0x003e, +0x005e, 0x005e, +0x007c, 0x007c, +0x007e, 0x007e, +0x00ac, 0x00ac, +0x00b1, 0x00b1, +0x00d7, 0x00d7, +0x00f7, 0x00f7, +0x03d0, 0x03d2, +0x03d5, 0x03d5, +0x03f0, 0x03f1, +0x03f4, 0x03f6, +0x0606, 0x0608, +0x2016, 0x2016, +0x2032, 0x2034, +0x2040, 0x2040, +0x2044, 0x2044, +0x2052, 0x2052, +0x2061, 0x2064, +0x207a, 0x207e, +0x208a, 0x208e, +0x20d0, 0x20dc, +0x20e1, 0x20e1, +0x20e5, 0x20e6, +0x20eb, 0x20ef, +0x2102, 0x2102, +0x2107, 0x2107, +0x210a, 0x2113, +0x2115, 0x2115, +0x2118, 0x211d, +0x2124, 0x2124, +0x2128, 0x2129, +0x212c, 0x212d, +0x212f, 0x2131, +0x2133, 0x2138, +0x213c, 0x2149, +0x214b, 0x214b, +0x2190, 0x21a7, +0x21a9, 0x21ae, +0x21b0, 0x21b1, +0x21b6, 0x21b7, +0x21bc, 0x21db, +0x21dd, 0x21dd, +0x21e4, 0x21e5, +0x21f4, 0x22ff, +0x2308, 0x230b, +0x2320, 0x2321, +0x237c, 0x237c, +0x239b, 0x23b5, +0x23b7, 0x23b7, +0x23d0, 0x23d0, +0x23dc, 0x23e2, +0x25a0, 0x25a1, +0x25ae, 0x25b7, +0x25bc, 0x25c1, +0x25c6, 0x25c7, +0x25ca, 0x25cb, +0x25cf, 0x25d3, +0x25e2, 0x25e2, +0x25e4, 0x25e4, +0x25e7, 0x25ec, +0x25f8, 0x25ff, +0x2605, 0x2606, +0x2640, 0x2640, +0x2642, 0x2642, +0x2660, 0x2663, +0x266d, 0x266f, +0x27c0, 0x27ff, +0x2900, 0x2aff, +0x2b30, 0x2b44, +0x2b47, 0x2b4c, +0xfb29, 0xfb29, +0xfe61, 0xfe66, +0xfe68, 0xfe68, +0xff0b, 0xff0b, +0xff1c, 0xff1e, +0xff3c, 0xff3c, +0xff3e, 0xff3e, +0xff5c, 0xff5c, +0xff5e, 0xff5e, +0xffe2, 0xffe2, +0xffe9, 0xffec, +0x10d8e, 0x10d8f, +0x1d400, 0x1d454, +0x1d456, 0x1d49c, +0x1d49e, 0x1d49f, +0x1d4a2, 0x1d4a2, +0x1d4a5, 0x1d4a6, +0x1d4a9, 0x1d4ac, +0x1d4ae, 0x1d4b9, +0x1d4bb, 0x1d4bb, +0x1d4bd, 0x1d4c3, +0x1d4c5, 0x1d505, +0x1d507, 0x1d50a, +0x1d50d, 0x1d514, +0x1d516, 0x1d51c, +0x1d51e, 0x1d539, +0x1d53b, 0x1d53e, +0x1d540, 0x1d544, +0x1d546, 0x1d546, +0x1d54a, 0x1d550, +0x1d552, 0x1d6a5, +0x1d6a8, 0x1d7cb, +0x1d7ce, 0x1d7ff, +0x1ee00, 0x1ee03, +0x1ee05, 0x1ee1f, +0x1ee21, 0x1ee22, +0x1ee24, 0x1ee24, +0x1ee27, 0x1ee27, +0x1ee29, 0x1ee32, +0x1ee34, 0x1ee37, +0x1ee39, 0x1ee39, +0x1ee3b, 0x1ee3b, +0x1ee42, 0x1ee42, +0x1ee47, 0x1ee47, +0x1ee49, 0x1ee49, +0x1ee4b, 0x1ee4b, +0x1ee4d, 0x1ee4f, +0x1ee51, 0x1ee52, +0x1ee54, 0x1ee54, +0x1ee57, 0x1ee57, +0x1ee59, 0x1ee59, +0x1ee5b, 0x1ee5b, +0x1ee5d, 0x1ee5d, +0x1ee5f, 0x1ee5f, +0x1ee61, 0x1ee62, +0x1ee64, 0x1ee64, +0x1ee67, 0x1ee6a, +0x1ee6c, 0x1ee72, +0x1ee74, 0x1ee77, +0x1ee79, 0x1ee7c, +0x1ee7e, 0x1ee7e, +0x1ee80, 0x1ee89, +0x1ee8b, 0x1ee9b, +0x1eea1, 0x1eea3, +0x1eea5, 0x1eea9, +0x1eeab, 0x1eebb, +0x1eef0, 0x1eef1, +}; /* END of CR_Math */ + +/* PROPERTY: 'Mc': General Category */ +static const OnigCodePoint +CR_Mc[] = { 190, +0x0903, 0x0903, +0x093b, 0x093b, +0x093e, 0x0940, +0x0949, 0x094c, +0x094e, 0x094f, +0x0982, 0x0983, +0x09be, 0x09c0, +0x09c7, 0x09c8, +0x09cb, 0x09cc, +0x09d7, 0x09d7, +0x0a03, 0x0a03, +0x0a3e, 0x0a40, +0x0a83, 0x0a83, +0x0abe, 0x0ac0, +0x0ac9, 0x0ac9, +0x0acb, 0x0acc, +0x0b02, 0x0b03, +0x0b3e, 0x0b3e, +0x0b40, 0x0b40, +0x0b47, 0x0b48, +0x0b4b, 0x0b4c, +0x0b57, 0x0b57, +0x0bbe, 0x0bbf, +0x0bc1, 0x0bc2, +0x0bc6, 0x0bc8, +0x0bca, 0x0bcc, +0x0bd7, 0x0bd7, +0x0c01, 0x0c03, +0x0c41, 0x0c44, +0x0c82, 0x0c83, +0x0cbe, 0x0cbe, +0x0cc0, 0x0cc4, +0x0cc7, 0x0cc8, +0x0cca, 0x0ccb, +0x0cd5, 0x0cd6, +0x0cf3, 0x0cf3, +0x0d02, 0x0d03, +0x0d3e, 0x0d40, +0x0d46, 0x0d48, +0x0d4a, 0x0d4c, +0x0d57, 0x0d57, +0x0d82, 0x0d83, +0x0dcf, 0x0dd1, +0x0dd8, 0x0ddf, +0x0df2, 0x0df3, +0x0f3e, 0x0f3f, +0x0f7f, 0x0f7f, +0x102b, 0x102c, +0x1031, 0x1031, +0x1038, 0x1038, +0x103b, 0x103c, +0x1056, 0x1057, +0x1062, 0x1064, +0x1067, 0x106d, +0x1083, 0x1084, +0x1087, 0x108c, +0x108f, 0x108f, +0x109a, 0x109c, +0x1715, 0x1715, +0x1734, 0x1734, +0x17b6, 0x17b6, +0x17be, 0x17c5, +0x17c7, 0x17c8, +0x1923, 0x1926, +0x1929, 0x192b, +0x1930, 0x1931, +0x1933, 0x1938, +0x1a19, 0x1a1a, +0x1a55, 0x1a55, +0x1a57, 0x1a57, +0x1a61, 0x1a61, +0x1a63, 0x1a64, +0x1a6d, 0x1a72, +0x1b04, 0x1b04, +0x1b35, 0x1b35, +0x1b3b, 0x1b3b, +0x1b3d, 0x1b41, +0x1b43, 0x1b44, +0x1b82, 0x1b82, +0x1ba1, 0x1ba1, +0x1ba6, 0x1ba7, +0x1baa, 0x1baa, +0x1be7, 0x1be7, +0x1bea, 0x1bec, +0x1bee, 0x1bee, +0x1bf2, 0x1bf3, +0x1c24, 0x1c2b, +0x1c34, 0x1c35, +0x1ce1, 0x1ce1, +0x1cf7, 0x1cf7, +0x302e, 0x302f, +0xa823, 0xa824, +0xa827, 0xa827, +0xa880, 0xa881, +0xa8b4, 0xa8c3, +0xa952, 0xa953, +0xa983, 0xa983, +0xa9b4, 0xa9b5, +0xa9ba, 0xa9bb, +0xa9be, 0xa9c0, +0xaa2f, 0xaa30, +0xaa33, 0xaa34, +0xaa4d, 0xaa4d, +0xaa7b, 0xaa7b, +0xaa7d, 0xaa7d, +0xaaeb, 0xaaeb, +0xaaee, 0xaaef, +0xaaf5, 0xaaf5, +0xabe3, 0xabe4, +0xabe6, 0xabe7, +0xabe9, 0xabea, +0xabec, 0xabec, +0x11000, 0x11000, +0x11002, 0x11002, +0x11082, 0x11082, +0x110b0, 0x110b2, +0x110b7, 0x110b8, +0x1112c, 0x1112c, +0x11145, 0x11146, +0x11182, 0x11182, +0x111b3, 0x111b5, +0x111bf, 0x111c0, +0x111ce, 0x111ce, +0x1122c, 0x1122e, +0x11232, 0x11233, +0x11235, 0x11235, +0x112e0, 0x112e2, +0x11302, 0x11303, +0x1133e, 0x1133f, +0x11341, 0x11344, +0x11347, 0x11348, +0x1134b, 0x1134d, +0x11357, 0x11357, +0x11362, 0x11363, +0x113b8, 0x113ba, +0x113c2, 0x113c2, +0x113c5, 0x113c5, +0x113c7, 0x113ca, +0x113cc, 0x113cd, +0x113cf, 0x113cf, +0x11435, 0x11437, +0x11440, 0x11441, +0x11445, 0x11445, +0x114b0, 0x114b2, +0x114b9, 0x114b9, +0x114bb, 0x114be, +0x114c1, 0x114c1, +0x115af, 0x115b1, +0x115b8, 0x115bb, +0x115be, 0x115be, +0x11630, 0x11632, +0x1163b, 0x1163c, +0x1163e, 0x1163e, +0x116ac, 0x116ac, +0x116ae, 0x116af, +0x116b6, 0x116b6, +0x1171e, 0x1171e, +0x11720, 0x11721, +0x11726, 0x11726, +0x1182c, 0x1182e, +0x11838, 0x11838, +0x11930, 0x11935, +0x11937, 0x11938, +0x1193d, 0x1193d, +0x11940, 0x11940, +0x11942, 0x11942, +0x119d1, 0x119d3, +0x119dc, 0x119df, +0x119e4, 0x119e4, +0x11a39, 0x11a39, +0x11a57, 0x11a58, +0x11a97, 0x11a97, +0x11c2f, 0x11c2f, +0x11c3e, 0x11c3e, +0x11ca9, 0x11ca9, +0x11cb1, 0x11cb1, +0x11cb4, 0x11cb4, +0x11d8a, 0x11d8e, +0x11d93, 0x11d94, +0x11d96, 0x11d96, +0x11ef5, 0x11ef6, +0x11f03, 0x11f03, +0x11f34, 0x11f35, +0x11f3e, 0x11f3f, +0x11f41, 0x11f41, +0x1612a, 0x1612c, +0x16f51, 0x16f87, +0x16ff0, 0x16ff1, +0x1d165, 0x1d166, +0x1d16d, 0x1d172, +}; /* END of CR_Mc */ + +/* PROPERTY: 'Me': General Category */ +static const OnigCodePoint +CR_Me[] = { 5, +0x0488, 0x0489, +0x1abe, 0x1abe, +0x20dd, 0x20e0, +0x20e2, 0x20e4, +0xa670, 0xa672, +}; /* END of CR_Me */ + +/* PROPERTY: 'Medefaidrin': Script */ +static const OnigCodePoint +CR_Medefaidrin[] = { 1, +0x16e40, 0x16e9a, +}; /* END of CR_Medefaidrin */ + +/* PROPERTY: 'Meetei_Mayek': Script */ +static const OnigCodePoint +CR_Meetei_Mayek[] = { 3, +0xaae0, 0xaaf6, +0xabc0, 0xabed, +0xabf0, 0xabf9, +}; /* END of CR_Meetei_Mayek */ + +/* PROPERTY: 'Mende_Kikakui': Script */ +static const OnigCodePoint +CR_Mende_Kikakui[] = { 2, +0x1e800, 0x1e8c4, +0x1e8c7, 0x1e8d6, +}; /* END of CR_Mende_Kikakui */ + +/* PROPERTY: 'Meroitic_Cursive': Script */ +static const OnigCodePoint +CR_Meroitic_Cursive[] = { 3, +0x109a0, 0x109b7, +0x109bc, 0x109cf, +0x109d2, 0x109ff, +}; /* END of CR_Meroitic_Cursive */ + +/* PROPERTY: 'Meroitic_Hieroglyphs': Script */ +static const OnigCodePoint +CR_Meroitic_Hieroglyphs[] = { 1, +0x10980, 0x1099f, +}; /* END of CR_Meroitic_Hieroglyphs */ + +/* PROPERTY: 'Miao': Script */ +static const OnigCodePoint +CR_Miao[] = { 3, +0x16f00, 0x16f4a, +0x16f4f, 0x16f87, +0x16f8f, 0x16f9f, +}; /* END of CR_Miao */ + +/* PROPERTY: 'Mn': General Category */ +static const OnigCodePoint +CR_Mn[] = { 357, +0x0300, 0x036f, +0x0483, 0x0487, +0x0591, 0x05bd, +0x05bf, 0x05bf, +0x05c1, 0x05c2, +0x05c4, 0x05c5, +0x05c7, 0x05c7, +0x0610, 0x061a, +0x064b, 0x065f, +0x0670, 0x0670, +0x06d6, 0x06dc, +0x06df, 0x06e4, +0x06e7, 0x06e8, +0x06ea, 0x06ed, +0x0711, 0x0711, +0x0730, 0x074a, +0x07a6, 0x07b0, +0x07eb, 0x07f3, +0x07fd, 0x07fd, +0x0816, 0x0819, +0x081b, 0x0823, +0x0825, 0x0827, +0x0829, 0x082d, +0x0859, 0x085b, +0x0897, 0x089f, +0x08ca, 0x08e1, +0x08e3, 0x0902, +0x093a, 0x093a, +0x093c, 0x093c, +0x0941, 0x0948, +0x094d, 0x094d, +0x0951, 0x0957, +0x0962, 0x0963, +0x0981, 0x0981, +0x09bc, 0x09bc, +0x09c1, 0x09c4, +0x09cd, 0x09cd, +0x09e2, 0x09e3, +0x09fe, 0x09fe, +0x0a01, 0x0a02, +0x0a3c, 0x0a3c, +0x0a41, 0x0a42, +0x0a47, 0x0a48, +0x0a4b, 0x0a4d, +0x0a51, 0x0a51, +0x0a70, 0x0a71, +0x0a75, 0x0a75, +0x0a81, 0x0a82, +0x0abc, 0x0abc, +0x0ac1, 0x0ac5, +0x0ac7, 0x0ac8, +0x0acd, 0x0acd, +0x0ae2, 0x0ae3, +0x0afa, 0x0aff, +0x0b01, 0x0b01, +0x0b3c, 0x0b3c, +0x0b3f, 0x0b3f, +0x0b41, 0x0b44, +0x0b4d, 0x0b4d, +0x0b55, 0x0b56, +0x0b62, 0x0b63, +0x0b82, 0x0b82, +0x0bc0, 0x0bc0, +0x0bcd, 0x0bcd, +0x0c00, 0x0c00, +0x0c04, 0x0c04, +0x0c3c, 0x0c3c, +0x0c3e, 0x0c40, +0x0c46, 0x0c48, +0x0c4a, 0x0c4d, +0x0c55, 0x0c56, +0x0c62, 0x0c63, +0x0c81, 0x0c81, +0x0cbc, 0x0cbc, +0x0cbf, 0x0cbf, +0x0cc6, 0x0cc6, +0x0ccc, 0x0ccd, +0x0ce2, 0x0ce3, +0x0d00, 0x0d01, +0x0d3b, 0x0d3c, +0x0d41, 0x0d44, +0x0d4d, 0x0d4d, +0x0d62, 0x0d63, +0x0d81, 0x0d81, +0x0dca, 0x0dca, +0x0dd2, 0x0dd4, +0x0dd6, 0x0dd6, +0x0e31, 0x0e31, +0x0e34, 0x0e3a, +0x0e47, 0x0e4e, +0x0eb1, 0x0eb1, +0x0eb4, 0x0ebc, +0x0ec8, 0x0ece, +0x0f18, 0x0f19, +0x0f35, 0x0f35, +0x0f37, 0x0f37, +0x0f39, 0x0f39, +0x0f71, 0x0f7e, +0x0f80, 0x0f84, +0x0f86, 0x0f87, +0x0f8d, 0x0f97, +0x0f99, 0x0fbc, +0x0fc6, 0x0fc6, +0x102d, 0x1030, +0x1032, 0x1037, +0x1039, 0x103a, +0x103d, 0x103e, +0x1058, 0x1059, +0x105e, 0x1060, +0x1071, 0x1074, +0x1082, 0x1082, +0x1085, 0x1086, +0x108d, 0x108d, +0x109d, 0x109d, +0x135d, 0x135f, +0x1712, 0x1714, +0x1732, 0x1733, +0x1752, 0x1753, +0x1772, 0x1773, +0x17b4, 0x17b5, +0x17b7, 0x17bd, +0x17c6, 0x17c6, +0x17c9, 0x17d3, +0x17dd, 0x17dd, +0x180b, 0x180d, +0x180f, 0x180f, +0x1885, 0x1886, +0x18a9, 0x18a9, +0x1920, 0x1922, +0x1927, 0x1928, +0x1932, 0x1932, +0x1939, 0x193b, +0x1a17, 0x1a18, +0x1a1b, 0x1a1b, +0x1a56, 0x1a56, +0x1a58, 0x1a5e, +0x1a60, 0x1a60, +0x1a62, 0x1a62, +0x1a65, 0x1a6c, +0x1a73, 0x1a7c, +0x1a7f, 0x1a7f, +0x1ab0, 0x1abd, +0x1abf, 0x1ace, +0x1b00, 0x1b03, +0x1b34, 0x1b34, +0x1b36, 0x1b3a, +0x1b3c, 0x1b3c, +0x1b42, 0x1b42, +0x1b6b, 0x1b73, +0x1b80, 0x1b81, +0x1ba2, 0x1ba5, +0x1ba8, 0x1ba9, +0x1bab, 0x1bad, +0x1be6, 0x1be6, +0x1be8, 0x1be9, +0x1bed, 0x1bed, +0x1bef, 0x1bf1, +0x1c2c, 0x1c33, +0x1c36, 0x1c37, +0x1cd0, 0x1cd2, +0x1cd4, 0x1ce0, +0x1ce2, 0x1ce8, +0x1ced, 0x1ced, +0x1cf4, 0x1cf4, +0x1cf8, 0x1cf9, +0x1dc0, 0x1dff, +0x20d0, 0x20dc, +0x20e1, 0x20e1, +0x20e5, 0x20f0, +0x2cef, 0x2cf1, +0x2d7f, 0x2d7f, +0x2de0, 0x2dff, +0x302a, 0x302d, +0x3099, 0x309a, +0xa66f, 0xa66f, +0xa674, 0xa67d, +0xa69e, 0xa69f, +0xa6f0, 0xa6f1, +0xa802, 0xa802, +0xa806, 0xa806, +0xa80b, 0xa80b, +0xa825, 0xa826, +0xa82c, 0xa82c, +0xa8c4, 0xa8c5, +0xa8e0, 0xa8f1, +0xa8ff, 0xa8ff, +0xa926, 0xa92d, +0xa947, 0xa951, +0xa980, 0xa982, +0xa9b3, 0xa9b3, +0xa9b6, 0xa9b9, +0xa9bc, 0xa9bd, +0xa9e5, 0xa9e5, +0xaa29, 0xaa2e, +0xaa31, 0xaa32, +0xaa35, 0xaa36, +0xaa43, 0xaa43, +0xaa4c, 0xaa4c, +0xaa7c, 0xaa7c, +0xaab0, 0xaab0, +0xaab2, 0xaab4, +0xaab7, 0xaab8, +0xaabe, 0xaabf, +0xaac1, 0xaac1, +0xaaec, 0xaaed, +0xaaf6, 0xaaf6, +0xabe5, 0xabe5, +0xabe8, 0xabe8, +0xabed, 0xabed, +0xfb1e, 0xfb1e, +0xfe00, 0xfe0f, +0xfe20, 0xfe2f, +0x101fd, 0x101fd, +0x102e0, 0x102e0, +0x10376, 0x1037a, +0x10a01, 0x10a03, +0x10a05, 0x10a06, +0x10a0c, 0x10a0f, +0x10a38, 0x10a3a, +0x10a3f, 0x10a3f, +0x10ae5, 0x10ae6, +0x10d24, 0x10d27, +0x10d69, 0x10d6d, +0x10eab, 0x10eac, +0x10efc, 0x10eff, +0x10f46, 0x10f50, +0x10f82, 0x10f85, +0x11001, 0x11001, +0x11038, 0x11046, +0x11070, 0x11070, +0x11073, 0x11074, +0x1107f, 0x11081, +0x110b3, 0x110b6, +0x110b9, 0x110ba, +0x110c2, 0x110c2, +0x11100, 0x11102, +0x11127, 0x1112b, +0x1112d, 0x11134, +0x11173, 0x11173, +0x11180, 0x11181, +0x111b6, 0x111be, +0x111c9, 0x111cc, +0x111cf, 0x111cf, +0x1122f, 0x11231, +0x11234, 0x11234, +0x11236, 0x11237, +0x1123e, 0x1123e, +0x11241, 0x11241, +0x112df, 0x112df, +0x112e3, 0x112ea, +0x11300, 0x11301, +0x1133b, 0x1133c, +0x11340, 0x11340, +0x11366, 0x1136c, +0x11370, 0x11374, +0x113bb, 0x113c0, +0x113ce, 0x113ce, +0x113d0, 0x113d0, +0x113d2, 0x113d2, +0x113e1, 0x113e2, +0x11438, 0x1143f, +0x11442, 0x11444, +0x11446, 0x11446, +0x1145e, 0x1145e, +0x114b3, 0x114b8, +0x114ba, 0x114ba, +0x114bf, 0x114c0, +0x114c2, 0x114c3, +0x115b2, 0x115b5, +0x115bc, 0x115bd, +0x115bf, 0x115c0, +0x115dc, 0x115dd, +0x11633, 0x1163a, +0x1163d, 0x1163d, +0x1163f, 0x11640, +0x116ab, 0x116ab, +0x116ad, 0x116ad, +0x116b0, 0x116b5, +0x116b7, 0x116b7, +0x1171d, 0x1171d, +0x1171f, 0x1171f, +0x11722, 0x11725, +0x11727, 0x1172b, +0x1182f, 0x11837, +0x11839, 0x1183a, +0x1193b, 0x1193c, +0x1193e, 0x1193e, +0x11943, 0x11943, +0x119d4, 0x119d7, +0x119da, 0x119db, +0x119e0, 0x119e0, +0x11a01, 0x11a0a, +0x11a33, 0x11a38, +0x11a3b, 0x11a3e, +0x11a47, 0x11a47, +0x11a51, 0x11a56, +0x11a59, 0x11a5b, +0x11a8a, 0x11a96, +0x11a98, 0x11a99, +0x11c30, 0x11c36, +0x11c38, 0x11c3d, +0x11c3f, 0x11c3f, +0x11c92, 0x11ca7, +0x11caa, 0x11cb0, +0x11cb2, 0x11cb3, +0x11cb5, 0x11cb6, +0x11d31, 0x11d36, +0x11d3a, 0x11d3a, +0x11d3c, 0x11d3d, +0x11d3f, 0x11d45, +0x11d47, 0x11d47, +0x11d90, 0x11d91, +0x11d95, 0x11d95, +0x11d97, 0x11d97, +0x11ef3, 0x11ef4, +0x11f00, 0x11f01, +0x11f36, 0x11f3a, +0x11f40, 0x11f40, +0x11f42, 0x11f42, +0x11f5a, 0x11f5a, +0x13440, 0x13440, +0x13447, 0x13455, +0x1611e, 0x16129, +0x1612d, 0x1612f, +0x16af0, 0x16af4, +0x16b30, 0x16b36, +0x16f4f, 0x16f4f, +0x16f8f, 0x16f92, +0x16fe4, 0x16fe4, +0x1bc9d, 0x1bc9e, +0x1cf00, 0x1cf2d, +0x1cf30, 0x1cf46, +0x1d167, 0x1d169, +0x1d17b, 0x1d182, +0x1d185, 0x1d18b, +0x1d1aa, 0x1d1ad, +0x1d242, 0x1d244, +0x1da00, 0x1da36, +0x1da3b, 0x1da6c, +0x1da75, 0x1da75, +0x1da84, 0x1da84, +0x1da9b, 0x1da9f, +0x1daa1, 0x1daaf, +0x1e000, 0x1e006, +0x1e008, 0x1e018, +0x1e01b, 0x1e021, +0x1e023, 0x1e024, +0x1e026, 0x1e02a, +0x1e08f, 0x1e08f, +0x1e130, 0x1e136, +0x1e2ae, 0x1e2ae, +0x1e2ec, 0x1e2ef, +0x1e4ec, 0x1e4ef, +0x1e5ee, 0x1e5ef, +0x1e8d0, 0x1e8d6, +0x1e944, 0x1e94a, +0xe0100, 0xe01ef, +}; /* END of CR_Mn */ + +/* PROPERTY: 'Modi': Script */ +static const OnigCodePoint +CR_Modi[] = { 2, +0x11600, 0x11644, +0x11650, 0x11659, +}; /* END of CR_Modi */ + +/* PROPERTY: 'Modifier_Combining_Mark': Binary Property */ +static const OnigCodePoint +CR_Modifier_Combining_Mark[] = { 9, +0x0654, 0x0655, +0x0658, 0x0658, +0x06dc, 0x06dc, +0x06e3, 0x06e3, +0x06e7, 0x06e8, +0x08ca, 0x08cb, +0x08cd, 0x08cf, +0x08d3, 0x08d3, +0x08f3, 0x08f3, +}; /* END of CR_Modifier_Combining_Mark */ + +/* PROPERTY: 'Mongolian': Script */ +static const OnigCodePoint +CR_Mongolian[] = { 6, +0x1800, 0x1801, +0x1804, 0x1804, +0x1806, 0x1819, +0x1820, 0x1878, +0x1880, 0x18aa, +0x11660, 0x1166c, +}; /* END of CR_Mongolian */ + +/* PROPERTY: 'Mro': Script */ +static const OnigCodePoint +CR_Mro[] = { 3, +0x16a40, 0x16a5e, +0x16a60, 0x16a69, +0x16a6e, 0x16a6f, +}; /* END of CR_Mro */ + +/* PROPERTY: 'Multani': Script */ +static const OnigCodePoint +CR_Multani[] = { 5, +0x11280, 0x11286, +0x11288, 0x11288, +0x1128a, 0x1128d, +0x1128f, 0x1129d, +0x1129f, 0x112a9, +}; /* END of CR_Multani */ + +/* PROPERTY: 'Myanmar': Script */ +static const OnigCodePoint +CR_Myanmar[] = { 4, +0x1000, 0x109f, +0xa9e0, 0xa9fe, +0xaa60, 0xaa7f, +0x116d0, 0x116e3, +}; /* END of CR_Myanmar */ + +/* PROPERTY: 'N': Major Category */ +static const OnigCodePoint +CR_N[] = { 144, +0x0030, 0x0039, +0x00b2, 0x00b3, +0x00b9, 0x00b9, +0x00bc, 0x00be, +0x0660, 0x0669, +0x06f0, 0x06f9, +0x07c0, 0x07c9, +0x0966, 0x096f, +0x09e6, 0x09ef, +0x09f4, 0x09f9, +0x0a66, 0x0a6f, +0x0ae6, 0x0aef, +0x0b66, 0x0b6f, +0x0b72, 0x0b77, +0x0be6, 0x0bf2, +0x0c66, 0x0c6f, +0x0c78, 0x0c7e, +0x0ce6, 0x0cef, +0x0d58, 0x0d5e, +0x0d66, 0x0d78, +0x0de6, 0x0def, +0x0e50, 0x0e59, +0x0ed0, 0x0ed9, +0x0f20, 0x0f33, +0x1040, 0x1049, +0x1090, 0x1099, +0x1369, 0x137c, +0x16ee, 0x16f0, +0x17e0, 0x17e9, +0x17f0, 0x17f9, +0x1810, 0x1819, +0x1946, 0x194f, +0x19d0, 0x19da, +0x1a80, 0x1a89, +0x1a90, 0x1a99, +0x1b50, 0x1b59, +0x1bb0, 0x1bb9, +0x1c40, 0x1c49, +0x1c50, 0x1c59, +0x2070, 0x2070, +0x2074, 0x2079, +0x2080, 0x2089, +0x2150, 0x2182, +0x2185, 0x2189, +0x2460, 0x249b, +0x24ea, 0x24ff, +0x2776, 0x2793, +0x2cfd, 0x2cfd, +0x3007, 0x3007, +0x3021, 0x3029, +0x3038, 0x303a, +0x3192, 0x3195, +0x3220, 0x3229, +0x3248, 0x324f, +0x3251, 0x325f, +0x3280, 0x3289, +0x32b1, 0x32bf, +0xa620, 0xa629, +0xa6e6, 0xa6ef, +0xa830, 0xa835, +0xa8d0, 0xa8d9, +0xa900, 0xa909, +0xa9d0, 0xa9d9, +0xa9f0, 0xa9f9, +0xaa50, 0xaa59, +0xabf0, 0xabf9, +0xff10, 0xff19, +0x10107, 0x10133, +0x10140, 0x10178, +0x1018a, 0x1018b, +0x102e1, 0x102fb, +0x10320, 0x10323, +0x10341, 0x10341, +0x1034a, 0x1034a, +0x103d1, 0x103d5, +0x104a0, 0x104a9, +0x10858, 0x1085f, +0x10879, 0x1087f, +0x108a7, 0x108af, +0x108fb, 0x108ff, +0x10916, 0x1091b, +0x109bc, 0x109bd, +0x109c0, 0x109cf, +0x109d2, 0x109ff, +0x10a40, 0x10a48, +0x10a7d, 0x10a7e, +0x10a9d, 0x10a9f, +0x10aeb, 0x10aef, +0x10b58, 0x10b5f, +0x10b78, 0x10b7f, +0x10ba9, 0x10baf, +0x10cfa, 0x10cff, +0x10d30, 0x10d39, +0x10d40, 0x10d49, +0x10e60, 0x10e7e, +0x10f1d, 0x10f26, +0x10f51, 0x10f54, +0x10fc5, 0x10fcb, +0x11052, 0x1106f, +0x110f0, 0x110f9, +0x11136, 0x1113f, +0x111d0, 0x111d9, +0x111e1, 0x111f4, +0x112f0, 0x112f9, +0x11450, 0x11459, +0x114d0, 0x114d9, +0x11650, 0x11659, +0x116c0, 0x116c9, +0x116d0, 0x116e3, +0x11730, 0x1173b, +0x118e0, 0x118f2, +0x11950, 0x11959, +0x11bf0, 0x11bf9, +0x11c50, 0x11c6c, +0x11d50, 0x11d59, +0x11da0, 0x11da9, +0x11f50, 0x11f59, +0x11fc0, 0x11fd4, +0x12400, 0x1246e, +0x16130, 0x16139, +0x16a60, 0x16a69, +0x16ac0, 0x16ac9, +0x16b50, 0x16b59, +0x16b5b, 0x16b61, +0x16d70, 0x16d79, +0x16e80, 0x16e96, +0x1ccf0, 0x1ccf9, +0x1d2c0, 0x1d2d3, +0x1d2e0, 0x1d2f3, +0x1d360, 0x1d378, +0x1d7ce, 0x1d7ff, +0x1e140, 0x1e149, +0x1e2f0, 0x1e2f9, +0x1e4f0, 0x1e4f9, +0x1e5f1, 0x1e5fa, +0x1e8c7, 0x1e8cf, +0x1e950, 0x1e959, +0x1ec71, 0x1ecab, +0x1ecad, 0x1ecaf, +0x1ecb1, 0x1ecb4, +0x1ed01, 0x1ed2d, +0x1ed2f, 0x1ed3d, +0x1f100, 0x1f10c, +0x1fbf0, 0x1fbf9, +}; /* END of CR_N */ + +/* PROPERTY: 'Nabataean': Script */ +static const OnigCodePoint +CR_Nabataean[] = { 2, +0x10880, 0x1089e, +0x108a7, 0x108af, +}; /* END of CR_Nabataean */ + +/* PROPERTY: 'Nag_Mundari': Script */ +static const OnigCodePoint +CR_Nag_Mundari[] = { 1, +0x1e4d0, 0x1e4f9, +}; /* END of CR_Nag_Mundari */ + +/* PROPERTY: 'Nandinagari': Script */ +static const OnigCodePoint +CR_Nandinagari[] = { 3, +0x119a0, 0x119a7, +0x119aa, 0x119d7, +0x119da, 0x119e4, +}; /* END of CR_Nandinagari */ + +/* PROPERTY: 'Nd': General Category */ +#define CR_Nd CR_Digit + +/* PROPERTY: 'New_Tai_Lue': Script */ +static const OnigCodePoint +CR_New_Tai_Lue[] = { 4, +0x1980, 0x19ab, +0x19b0, 0x19c9, +0x19d0, 0x19da, +0x19de, 0x19df, +}; /* END of CR_New_Tai_Lue */ + +/* PROPERTY: 'Newa': Script */ +static const OnigCodePoint +CR_Newa[] = { 2, +0x11400, 0x1145b, +0x1145d, 0x11461, +}; /* END of CR_Newa */ + +/* PROPERTY: 'Nko': Script */ +static const OnigCodePoint +CR_Nko[] = { 2, +0x07c0, 0x07fa, +0x07fd, 0x07ff, +}; /* END of CR_Nko */ + +/* PROPERTY: 'Nl': General Category */ +static const OnigCodePoint +CR_Nl[] = { 12, +0x16ee, 0x16f0, +0x2160, 0x2182, +0x2185, 0x2188, +0x3007, 0x3007, +0x3021, 0x3029, +0x3038, 0x303a, +0xa6e6, 0xa6ef, +0x10140, 0x10174, +0x10341, 0x10341, +0x1034a, 0x1034a, +0x103d1, 0x103d5, +0x12400, 0x1246e, +}; /* END of CR_Nl */ + +/* PROPERTY: 'No': General Category */ +static const OnigCodePoint +CR_No[] = { 72, +0x00b2, 0x00b3, +0x00b9, 0x00b9, +0x00bc, 0x00be, +0x09f4, 0x09f9, +0x0b72, 0x0b77, +0x0bf0, 0x0bf2, +0x0c78, 0x0c7e, +0x0d58, 0x0d5e, +0x0d70, 0x0d78, +0x0f2a, 0x0f33, +0x1369, 0x137c, +0x17f0, 0x17f9, +0x19da, 0x19da, +0x2070, 0x2070, +0x2074, 0x2079, +0x2080, 0x2089, +0x2150, 0x215f, +0x2189, 0x2189, +0x2460, 0x249b, +0x24ea, 0x24ff, +0x2776, 0x2793, +0x2cfd, 0x2cfd, +0x3192, 0x3195, +0x3220, 0x3229, +0x3248, 0x324f, +0x3251, 0x325f, +0x3280, 0x3289, +0x32b1, 0x32bf, +0xa830, 0xa835, +0x10107, 0x10133, +0x10175, 0x10178, +0x1018a, 0x1018b, +0x102e1, 0x102fb, +0x10320, 0x10323, +0x10858, 0x1085f, +0x10879, 0x1087f, +0x108a7, 0x108af, +0x108fb, 0x108ff, +0x10916, 0x1091b, +0x109bc, 0x109bd, +0x109c0, 0x109cf, +0x109d2, 0x109ff, +0x10a40, 0x10a48, +0x10a7d, 0x10a7e, +0x10a9d, 0x10a9f, +0x10aeb, 0x10aef, +0x10b58, 0x10b5f, +0x10b78, 0x10b7f, +0x10ba9, 0x10baf, +0x10cfa, 0x10cff, +0x10e60, 0x10e7e, +0x10f1d, 0x10f26, +0x10f51, 0x10f54, +0x10fc5, 0x10fcb, +0x11052, 0x11065, +0x111e1, 0x111f4, +0x1173a, 0x1173b, +0x118ea, 0x118f2, +0x11c5a, 0x11c6c, +0x11fc0, 0x11fd4, +0x16b5b, 0x16b61, +0x16e80, 0x16e96, +0x1d2c0, 0x1d2d3, +0x1d2e0, 0x1d2f3, +0x1d360, 0x1d378, +0x1e8c7, 0x1e8cf, +0x1ec71, 0x1ecab, +0x1ecad, 0x1ecaf, +0x1ecb1, 0x1ecb4, +0x1ed01, 0x1ed2d, +0x1ed2f, 0x1ed3d, +0x1f100, 0x1f10c, +}; /* END of CR_No */ + +/* PROPERTY: 'Noncharacter_Code_Point': Binary Property */ +static const OnigCodePoint +CR_Noncharacter_Code_Point[] = { 18, +0xfdd0, 0xfdef, +0xfffe, 0xffff, +0x1fffe, 0x1ffff, +0x2fffe, 0x2ffff, +0x3fffe, 0x3ffff, +0x4fffe, 0x4ffff, +0x5fffe, 0x5ffff, +0x6fffe, 0x6ffff, +0x7fffe, 0x7ffff, +0x8fffe, 0x8ffff, +0x9fffe, 0x9ffff, +0xafffe, 0xaffff, +0xbfffe, 0xbffff, +0xcfffe, 0xcffff, +0xdfffe, 0xdffff, +0xefffe, 0xeffff, +0xffffe, 0xfffff, +0x10fffe, 0x10ffff, +}; /* END of CR_Noncharacter_Code_Point */ + +/* PROPERTY: 'Nushu': Script */ +static const OnigCodePoint +CR_Nushu[] = { 2, +0x16fe1, 0x16fe1, +0x1b170, 0x1b2fb, +}; /* END of CR_Nushu */ + +/* PROPERTY: 'Nyiakeng_Puachue_Hmong': Script */ +static const OnigCodePoint +CR_Nyiakeng_Puachue_Hmong[] = { 4, +0x1e100, 0x1e12c, +0x1e130, 0x1e13d, +0x1e140, 0x1e149, +0x1e14e, 0x1e14f, +}; /* END of CR_Nyiakeng_Puachue_Hmong */ + +/* PROPERTY: 'Ogham': Script */ +static const OnigCodePoint +CR_Ogham[] = { 1, +0x1680, 0x169c, +}; /* END of CR_Ogham */ + +/* PROPERTY: 'Ol_Chiki': Script */ +static const OnigCodePoint +CR_Ol_Chiki[] = { 1, +0x1c50, 0x1c7f, +}; /* END of CR_Ol_Chiki */ + +/* PROPERTY: 'Ol_Onal': Script */ +static const OnigCodePoint +CR_Ol_Onal[] = { 2, +0x1e5d0, 0x1e5fa, +0x1e5ff, 0x1e5ff, +}; /* END of CR_Ol_Onal */ + +/* PROPERTY: 'Old_Hungarian': Script */ +static const OnigCodePoint +CR_Old_Hungarian[] = { 3, +0x10c80, 0x10cb2, +0x10cc0, 0x10cf2, +0x10cfa, 0x10cff, +}; /* END of CR_Old_Hungarian */ + +/* PROPERTY: 'Old_Italic': Script */ +static const OnigCodePoint +CR_Old_Italic[] = { 2, +0x10300, 0x10323, +0x1032d, 0x1032f, +}; /* END of CR_Old_Italic */ + +/* PROPERTY: 'Old_North_Arabian': Script */ +static const OnigCodePoint +CR_Old_North_Arabian[] = { 1, +0x10a80, 0x10a9f, +}; /* END of CR_Old_North_Arabian */ + +/* PROPERTY: 'Old_Permic': Script */ +static const OnigCodePoint +CR_Old_Permic[] = { 1, +0x10350, 0x1037a, +}; /* END of CR_Old_Permic */ + +/* PROPERTY: 'Old_Persian': Script */ +static const OnigCodePoint +CR_Old_Persian[] = { 2, +0x103a0, 0x103c3, +0x103c8, 0x103d5, +}; /* END of CR_Old_Persian */ + +/* PROPERTY: 'Old_Sogdian': Script */ +static const OnigCodePoint +CR_Old_Sogdian[] = { 1, +0x10f00, 0x10f27, +}; /* END of CR_Old_Sogdian */ + +/* PROPERTY: 'Old_South_Arabian': Script */ +static const OnigCodePoint +CR_Old_South_Arabian[] = { 1, +0x10a60, 0x10a7f, +}; /* END of CR_Old_South_Arabian */ + +/* PROPERTY: 'Old_Turkic': Script */ +static const OnigCodePoint +CR_Old_Turkic[] = { 1, +0x10c00, 0x10c48, +}; /* END of CR_Old_Turkic */ + +/* PROPERTY: 'Old_Uyghur': Script */ +static const OnigCodePoint +CR_Old_Uyghur[] = { 1, +0x10f70, 0x10f89, +}; /* END of CR_Old_Uyghur */ + +/* PROPERTY: 'Oriya': Script */ +static const OnigCodePoint +CR_Oriya[] = { 14, +0x0b01, 0x0b03, +0x0b05, 0x0b0c, +0x0b0f, 0x0b10, +0x0b13, 0x0b28, +0x0b2a, 0x0b30, +0x0b32, 0x0b33, +0x0b35, 0x0b39, +0x0b3c, 0x0b44, +0x0b47, 0x0b48, +0x0b4b, 0x0b4d, +0x0b55, 0x0b57, +0x0b5c, 0x0b5d, +0x0b5f, 0x0b63, +0x0b66, 0x0b77, +}; /* END of CR_Oriya */ + +/* PROPERTY: 'Osage': Script */ +static const OnigCodePoint +CR_Osage[] = { 2, +0x104b0, 0x104d3, +0x104d8, 0x104fb, +}; /* END of CR_Osage */ + +/* PROPERTY: 'Osmanya': Script */ +static const OnigCodePoint +CR_Osmanya[] = { 2, +0x10480, 0x1049d, +0x104a0, 0x104a9, +}; /* END of CR_Osmanya */ + +/* PROPERTY: 'Other_Alphabetic': Binary Property */ +static const OnigCodePoint +CR_Other_Alphabetic[] = { 250, +0x0345, 0x0345, +0x0363, 0x036f, +0x05b0, 0x05bd, +0x05bf, 0x05bf, +0x05c1, 0x05c2, +0x05c4, 0x05c5, +0x05c7, 0x05c7, +0x0610, 0x061a, +0x064b, 0x0657, +0x0659, 0x065f, +0x0670, 0x0670, +0x06d6, 0x06dc, +0x06e1, 0x06e4, +0x06e7, 0x06e8, +0x06ed, 0x06ed, +0x0711, 0x0711, +0x0730, 0x073f, +0x07a6, 0x07b0, +0x0816, 0x0817, +0x081b, 0x0823, +0x0825, 0x0827, +0x0829, 0x082c, +0x0897, 0x0897, +0x08d4, 0x08df, +0x08e3, 0x08e9, +0x08f0, 0x0903, +0x093a, 0x093b, +0x093e, 0x094c, +0x094e, 0x094f, +0x0955, 0x0957, +0x0962, 0x0963, +0x0981, 0x0983, +0x09be, 0x09c4, +0x09c7, 0x09c8, +0x09cb, 0x09cc, +0x09d7, 0x09d7, +0x09e2, 0x09e3, +0x0a01, 0x0a03, +0x0a3e, 0x0a42, +0x0a47, 0x0a48, +0x0a4b, 0x0a4c, +0x0a51, 0x0a51, +0x0a70, 0x0a71, +0x0a75, 0x0a75, +0x0a81, 0x0a83, +0x0abe, 0x0ac5, +0x0ac7, 0x0ac9, +0x0acb, 0x0acc, +0x0ae2, 0x0ae3, +0x0afa, 0x0afc, +0x0b01, 0x0b03, +0x0b3e, 0x0b44, +0x0b47, 0x0b48, +0x0b4b, 0x0b4c, +0x0b56, 0x0b57, +0x0b62, 0x0b63, +0x0b82, 0x0b82, +0x0bbe, 0x0bc2, +0x0bc6, 0x0bc8, +0x0bca, 0x0bcc, +0x0bd7, 0x0bd7, +0x0c00, 0x0c04, +0x0c3e, 0x0c44, +0x0c46, 0x0c48, +0x0c4a, 0x0c4c, +0x0c55, 0x0c56, +0x0c62, 0x0c63, +0x0c81, 0x0c83, +0x0cbe, 0x0cc4, +0x0cc6, 0x0cc8, +0x0cca, 0x0ccc, +0x0cd5, 0x0cd6, +0x0ce2, 0x0ce3, +0x0cf3, 0x0cf3, +0x0d00, 0x0d03, +0x0d3e, 0x0d44, +0x0d46, 0x0d48, +0x0d4a, 0x0d4c, +0x0d57, 0x0d57, +0x0d62, 0x0d63, +0x0d81, 0x0d83, +0x0dcf, 0x0dd4, +0x0dd6, 0x0dd6, +0x0dd8, 0x0ddf, +0x0df2, 0x0df3, +0x0e31, 0x0e31, +0x0e34, 0x0e3a, +0x0e4d, 0x0e4d, +0x0eb1, 0x0eb1, +0x0eb4, 0x0eb9, +0x0ebb, 0x0ebc, +0x0ecd, 0x0ecd, +0x0f71, 0x0f83, +0x0f8d, 0x0f97, +0x0f99, 0x0fbc, +0x102b, 0x1036, +0x1038, 0x1038, +0x103b, 0x103e, +0x1056, 0x1059, +0x105e, 0x1060, +0x1062, 0x1064, +0x1067, 0x106d, +0x1071, 0x1074, +0x1082, 0x108d, +0x108f, 0x108f, +0x109a, 0x109d, +0x1712, 0x1713, +0x1732, 0x1733, +0x1752, 0x1753, +0x1772, 0x1773, +0x17b6, 0x17c8, +0x1885, 0x1886, +0x18a9, 0x18a9, +0x1920, 0x192b, +0x1930, 0x1938, +0x1a17, 0x1a1b, +0x1a55, 0x1a5e, +0x1a61, 0x1a74, +0x1abf, 0x1ac0, +0x1acc, 0x1ace, +0x1b00, 0x1b04, +0x1b35, 0x1b43, +0x1b80, 0x1b82, +0x1ba1, 0x1ba9, +0x1bac, 0x1bad, +0x1be7, 0x1bf1, +0x1c24, 0x1c36, +0x1dd3, 0x1df4, +0x24b6, 0x24e9, +0x2de0, 0x2dff, +0xa674, 0xa67b, +0xa69e, 0xa69f, +0xa802, 0xa802, +0xa80b, 0xa80b, +0xa823, 0xa827, +0xa880, 0xa881, +0xa8b4, 0xa8c3, +0xa8c5, 0xa8c5, +0xa8ff, 0xa8ff, +0xa926, 0xa92a, +0xa947, 0xa952, +0xa980, 0xa983, +0xa9b4, 0xa9bf, +0xa9e5, 0xa9e5, +0xaa29, 0xaa36, +0xaa43, 0xaa43, +0xaa4c, 0xaa4d, +0xaa7b, 0xaa7d, +0xaab0, 0xaab0, +0xaab2, 0xaab4, +0xaab7, 0xaab8, +0xaabe, 0xaabe, +0xaaeb, 0xaaef, +0xaaf5, 0xaaf5, +0xabe3, 0xabea, +0xfb1e, 0xfb1e, +0x10376, 0x1037a, +0x10a01, 0x10a03, +0x10a05, 0x10a06, +0x10a0c, 0x10a0f, +0x10d24, 0x10d27, +0x10d69, 0x10d69, +0x10eab, 0x10eac, +0x10efc, 0x10efc, +0x11000, 0x11002, +0x11038, 0x11045, +0x11073, 0x11074, +0x11080, 0x11082, +0x110b0, 0x110b8, +0x110c2, 0x110c2, +0x11100, 0x11102, +0x11127, 0x11132, +0x11145, 0x11146, +0x11180, 0x11182, +0x111b3, 0x111bf, +0x111ce, 0x111cf, +0x1122c, 0x11234, +0x11237, 0x11237, +0x1123e, 0x1123e, +0x11241, 0x11241, +0x112df, 0x112e8, +0x11300, 0x11303, +0x1133e, 0x11344, +0x11347, 0x11348, +0x1134b, 0x1134c, +0x11357, 0x11357, +0x11362, 0x11363, +0x113b8, 0x113c0, +0x113c2, 0x113c2, +0x113c5, 0x113c5, +0x113c7, 0x113ca, +0x113cc, 0x113cd, +0x11435, 0x11441, +0x11443, 0x11445, +0x114b0, 0x114c1, +0x115af, 0x115b5, +0x115b8, 0x115be, +0x115dc, 0x115dd, +0x11630, 0x1163e, +0x11640, 0x11640, +0x116ab, 0x116b5, +0x1171d, 0x1172a, +0x1182c, 0x11838, +0x11930, 0x11935, +0x11937, 0x11938, +0x1193b, 0x1193c, +0x11940, 0x11940, +0x11942, 0x11942, +0x119d1, 0x119d7, +0x119da, 0x119df, +0x119e4, 0x119e4, +0x11a01, 0x11a0a, +0x11a35, 0x11a39, +0x11a3b, 0x11a3e, +0x11a51, 0x11a5b, +0x11a8a, 0x11a97, +0x11c2f, 0x11c36, +0x11c38, 0x11c3e, +0x11c92, 0x11ca7, +0x11ca9, 0x11cb6, +0x11d31, 0x11d36, +0x11d3a, 0x11d3a, +0x11d3c, 0x11d3d, +0x11d3f, 0x11d41, +0x11d43, 0x11d43, +0x11d47, 0x11d47, +0x11d8a, 0x11d8e, +0x11d90, 0x11d91, +0x11d93, 0x11d96, +0x11ef3, 0x11ef6, +0x11f00, 0x11f01, +0x11f03, 0x11f03, +0x11f34, 0x11f3a, +0x11f3e, 0x11f40, +0x1611e, 0x1612e, +0x16f4f, 0x16f4f, +0x16f51, 0x16f87, +0x16f8f, 0x16f92, +0x16ff0, 0x16ff1, +0x1bc9e, 0x1bc9e, +0x1e000, 0x1e006, +0x1e008, 0x1e018, +0x1e01b, 0x1e021, +0x1e023, 0x1e024, +0x1e026, 0x1e02a, +0x1e08f, 0x1e08f, +0x1e947, 0x1e947, +0x1f130, 0x1f149, +0x1f150, 0x1f169, +0x1f170, 0x1f189, +}; /* END of CR_Other_Alphabetic */ + +/* PROPERTY: 'Other_Default_Ignorable_Code_Point': Binary Property */ +static const OnigCodePoint +CR_Other_Default_Ignorable_Code_Point[] = { 11, +0x034f, 0x034f, +0x115f, 0x1160, +0x17b4, 0x17b5, +0x2065, 0x2065, +0x3164, 0x3164, +0xffa0, 0xffa0, +0xfff0, 0xfff8, +0xe0000, 0xe0000, +0xe0002, 0xe001f, +0xe0080, 0xe00ff, +0xe01f0, 0xe0fff, +}; /* END of CR_Other_Default_Ignorable_Code_Point */ + +/* PROPERTY: 'Other_Grapheme_Extend': Binary Property */ +static const OnigCodePoint +CR_Other_Grapheme_Extend[] = { 49, +0x09be, 0x09be, +0x09d7, 0x09d7, +0x0b3e, 0x0b3e, +0x0b57, 0x0b57, +0x0bbe, 0x0bbe, +0x0bd7, 0x0bd7, +0x0cc0, 0x0cc0, +0x0cc2, 0x0cc2, +0x0cc7, 0x0cc8, +0x0cca, 0x0ccb, +0x0cd5, 0x0cd6, +0x0d3e, 0x0d3e, +0x0d57, 0x0d57, +0x0dcf, 0x0dcf, +0x0ddf, 0x0ddf, +0x1715, 0x1715, +0x1734, 0x1734, +0x1b35, 0x1b35, +0x1b3b, 0x1b3b, +0x1b3d, 0x1b3d, +0x1b43, 0x1b44, +0x1baa, 0x1baa, +0x1bf2, 0x1bf3, +0x200c, 0x200c, +0x302e, 0x302f, +0xa953, 0xa953, +0xa9c0, 0xa9c0, +0xff9e, 0xff9f, +0x111c0, 0x111c0, +0x11235, 0x11235, +0x1133e, 0x1133e, +0x1134d, 0x1134d, +0x11357, 0x11357, +0x113b8, 0x113b8, +0x113c2, 0x113c2, +0x113c5, 0x113c5, +0x113c7, 0x113c9, +0x113cf, 0x113cf, +0x114b0, 0x114b0, +0x114bd, 0x114bd, +0x115af, 0x115af, +0x116b6, 0x116b6, +0x11930, 0x11930, +0x1193d, 0x1193d, +0x11f41, 0x11f41, +0x16ff0, 0x16ff1, +0x1d165, 0x1d166, +0x1d16d, 0x1d172, +0xe0020, 0xe007f, +}; /* END of CR_Other_Grapheme_Extend */ + +/* PROPERTY: 'Other_ID_Continue': Binary Property */ +static const OnigCodePoint +CR_Other_ID_Continue[] = { 7, +0x00b7, 0x00b7, +0x0387, 0x0387, +0x1369, 0x1371, +0x19da, 0x19da, +0x200c, 0x200d, +0x30fb, 0x30fb, +0xff65, 0xff65, +}; /* END of CR_Other_ID_Continue */ + +/* PROPERTY: 'Other_ID_Start': Binary Property */ +static const OnigCodePoint +CR_Other_ID_Start[] = { 4, +0x1885, 0x1886, +0x2118, 0x2118, +0x212e, 0x212e, +0x309b, 0x309c, +}; /* END of CR_Other_ID_Start */ + +/* PROPERTY: 'Other_Lowercase': Binary Property */ +static const OnigCodePoint +CR_Other_Lowercase[] = { 28, +0x00aa, 0x00aa, +0x00ba, 0x00ba, +0x02b0, 0x02b8, +0x02c0, 0x02c1, +0x02e0, 0x02e4, +0x0345, 0x0345, +0x037a, 0x037a, +0x10fc, 0x10fc, +0x1d2c, 0x1d6a, +0x1d78, 0x1d78, +0x1d9b, 0x1dbf, +0x2071, 0x2071, +0x207f, 0x207f, +0x2090, 0x209c, +0x2170, 0x217f, +0x24d0, 0x24e9, +0x2c7c, 0x2c7d, +0xa69c, 0xa69d, +0xa770, 0xa770, +0xa7f2, 0xa7f4, +0xa7f8, 0xa7f9, +0xab5c, 0xab5f, +0xab69, 0xab69, +0x10780, 0x10780, +0x10783, 0x10785, +0x10787, 0x107b0, +0x107b2, 0x107ba, +0x1e030, 0x1e06d, +}; /* END of CR_Other_Lowercase */ + +/* PROPERTY: 'Other_Math': Binary Property */ +static const OnigCodePoint +CR_Other_Math[] = { 134, +0x005e, 0x005e, +0x03d0, 0x03d2, +0x03d5, 0x03d5, +0x03f0, 0x03f1, +0x03f4, 0x03f5, +0x2016, 0x2016, +0x2032, 0x2034, +0x2040, 0x2040, +0x2061, 0x2064, +0x207d, 0x207e, +0x208d, 0x208e, +0x20d0, 0x20dc, +0x20e1, 0x20e1, +0x20e5, 0x20e6, +0x20eb, 0x20ef, +0x2102, 0x2102, +0x2107, 0x2107, +0x210a, 0x2113, +0x2115, 0x2115, +0x2119, 0x211d, +0x2124, 0x2124, +0x2128, 0x2129, +0x212c, 0x212d, +0x212f, 0x2131, +0x2133, 0x2138, +0x213c, 0x213f, +0x2145, 0x2149, +0x2195, 0x2199, +0x219c, 0x219f, +0x21a1, 0x21a2, +0x21a4, 0x21a5, +0x21a7, 0x21a7, +0x21a9, 0x21ad, +0x21b0, 0x21b1, +0x21b6, 0x21b7, +0x21bc, 0x21cd, +0x21d0, 0x21d1, +0x21d3, 0x21d3, +0x21d5, 0x21db, +0x21dd, 0x21dd, +0x21e4, 0x21e5, +0x2308, 0x230b, +0x23b4, 0x23b5, +0x23b7, 0x23b7, +0x23d0, 0x23d0, +0x23e2, 0x23e2, +0x25a0, 0x25a1, +0x25ae, 0x25b6, +0x25bc, 0x25c0, +0x25c6, 0x25c7, +0x25ca, 0x25cb, +0x25cf, 0x25d3, +0x25e2, 0x25e2, +0x25e4, 0x25e4, +0x25e7, 0x25ec, +0x2605, 0x2606, +0x2640, 0x2640, +0x2642, 0x2642, +0x2660, 0x2663, +0x266d, 0x266e, +0x27c5, 0x27c6, +0x27e6, 0x27ef, +0x2983, 0x2998, +0x29d8, 0x29db, +0x29fc, 0x29fd, +0xfe61, 0xfe61, +0xfe63, 0xfe63, +0xfe68, 0xfe68, +0xff3c, 0xff3c, +0xff3e, 0xff3e, +0x1d400, 0x1d454, +0x1d456, 0x1d49c, +0x1d49e, 0x1d49f, +0x1d4a2, 0x1d4a2, +0x1d4a5, 0x1d4a6, +0x1d4a9, 0x1d4ac, +0x1d4ae, 0x1d4b9, +0x1d4bb, 0x1d4bb, +0x1d4bd, 0x1d4c3, +0x1d4c5, 0x1d505, +0x1d507, 0x1d50a, +0x1d50d, 0x1d514, +0x1d516, 0x1d51c, +0x1d51e, 0x1d539, +0x1d53b, 0x1d53e, +0x1d540, 0x1d544, +0x1d546, 0x1d546, +0x1d54a, 0x1d550, +0x1d552, 0x1d6a5, +0x1d6a8, 0x1d6c0, +0x1d6c2, 0x1d6da, +0x1d6dc, 0x1d6fa, +0x1d6fc, 0x1d714, +0x1d716, 0x1d734, +0x1d736, 0x1d74e, +0x1d750, 0x1d76e, +0x1d770, 0x1d788, +0x1d78a, 0x1d7a8, +0x1d7aa, 0x1d7c2, +0x1d7c4, 0x1d7cb, +0x1d7ce, 0x1d7ff, +0x1ee00, 0x1ee03, +0x1ee05, 0x1ee1f, +0x1ee21, 0x1ee22, +0x1ee24, 0x1ee24, +0x1ee27, 0x1ee27, +0x1ee29, 0x1ee32, +0x1ee34, 0x1ee37, +0x1ee39, 0x1ee39, +0x1ee3b, 0x1ee3b, +0x1ee42, 0x1ee42, +0x1ee47, 0x1ee47, +0x1ee49, 0x1ee49, +0x1ee4b, 0x1ee4b, +0x1ee4d, 0x1ee4f, +0x1ee51, 0x1ee52, +0x1ee54, 0x1ee54, +0x1ee57, 0x1ee57, +0x1ee59, 0x1ee59, +0x1ee5b, 0x1ee5b, +0x1ee5d, 0x1ee5d, +0x1ee5f, 0x1ee5f, +0x1ee61, 0x1ee62, +0x1ee64, 0x1ee64, +0x1ee67, 0x1ee6a, +0x1ee6c, 0x1ee72, +0x1ee74, 0x1ee77, +0x1ee79, 0x1ee7c, +0x1ee7e, 0x1ee7e, +0x1ee80, 0x1ee89, +0x1ee8b, 0x1ee9b, +0x1eea1, 0x1eea3, +0x1eea5, 0x1eea9, +0x1eeab, 0x1eebb, +}; /* END of CR_Other_Math */ + +/* PROPERTY: 'Other_Uppercase': Binary Property */ +static const OnigCodePoint +CR_Other_Uppercase[] = { 5, +0x2160, 0x216f, +0x24b6, 0x24cf, +0x1f130, 0x1f149, +0x1f150, 0x1f169, +0x1f170, 0x1f189, +}; /* END of CR_Other_Uppercase */ + +/* PROPERTY: 'P': Major Category */ +static const OnigCodePoint +CR_P[] = { 198, +0x0021, 0x0023, +0x0025, 0x002a, +0x002c, 0x002f, +0x003a, 0x003b, +0x003f, 0x0040, +0x005b, 0x005d, +0x005f, 0x005f, +0x007b, 0x007b, +0x007d, 0x007d, +0x00a1, 0x00a1, +0x00a7, 0x00a7, +0x00ab, 0x00ab, +0x00b6, 0x00b7, +0x00bb, 0x00bb, +0x00bf, 0x00bf, +0x037e, 0x037e, +0x0387, 0x0387, +0x055a, 0x055f, +0x0589, 0x058a, +0x05be, 0x05be, +0x05c0, 0x05c0, +0x05c3, 0x05c3, +0x05c6, 0x05c6, +0x05f3, 0x05f4, +0x0609, 0x060a, +0x060c, 0x060d, +0x061b, 0x061b, +0x061d, 0x061f, +0x066a, 0x066d, +0x06d4, 0x06d4, +0x0700, 0x070d, +0x07f7, 0x07f9, +0x0830, 0x083e, +0x085e, 0x085e, +0x0964, 0x0965, +0x0970, 0x0970, +0x09fd, 0x09fd, +0x0a76, 0x0a76, +0x0af0, 0x0af0, +0x0c77, 0x0c77, +0x0c84, 0x0c84, +0x0df4, 0x0df4, +0x0e4f, 0x0e4f, +0x0e5a, 0x0e5b, +0x0f04, 0x0f12, +0x0f14, 0x0f14, +0x0f3a, 0x0f3d, +0x0f85, 0x0f85, +0x0fd0, 0x0fd4, +0x0fd9, 0x0fda, +0x104a, 0x104f, +0x10fb, 0x10fb, +0x1360, 0x1368, +0x1400, 0x1400, +0x166e, 0x166e, +0x169b, 0x169c, +0x16eb, 0x16ed, +0x1735, 0x1736, +0x17d4, 0x17d6, +0x17d8, 0x17da, +0x1800, 0x180a, +0x1944, 0x1945, +0x1a1e, 0x1a1f, +0x1aa0, 0x1aa6, +0x1aa8, 0x1aad, +0x1b4e, 0x1b4f, +0x1b5a, 0x1b60, +0x1b7d, 0x1b7f, +0x1bfc, 0x1bff, +0x1c3b, 0x1c3f, +0x1c7e, 0x1c7f, +0x1cc0, 0x1cc7, +0x1cd3, 0x1cd3, +0x2010, 0x2027, +0x2030, 0x2043, +0x2045, 0x2051, +0x2053, 0x205e, +0x207d, 0x207e, +0x208d, 0x208e, +0x2308, 0x230b, +0x2329, 0x232a, +0x2768, 0x2775, +0x27c5, 0x27c6, +0x27e6, 0x27ef, +0x2983, 0x2998, +0x29d8, 0x29db, +0x29fc, 0x29fd, +0x2cf9, 0x2cfc, +0x2cfe, 0x2cff, +0x2d70, 0x2d70, +0x2e00, 0x2e2e, +0x2e30, 0x2e4f, +0x2e52, 0x2e5d, +0x3001, 0x3003, +0x3008, 0x3011, +0x3014, 0x301f, +0x3030, 0x3030, +0x303d, 0x303d, +0x30a0, 0x30a0, +0x30fb, 0x30fb, +0xa4fe, 0xa4ff, +0xa60d, 0xa60f, +0xa673, 0xa673, +0xa67e, 0xa67e, +0xa6f2, 0xa6f7, +0xa874, 0xa877, +0xa8ce, 0xa8cf, +0xa8f8, 0xa8fa, +0xa8fc, 0xa8fc, +0xa92e, 0xa92f, +0xa95f, 0xa95f, +0xa9c1, 0xa9cd, +0xa9de, 0xa9df, +0xaa5c, 0xaa5f, +0xaade, 0xaadf, +0xaaf0, 0xaaf1, +0xabeb, 0xabeb, +0xfd3e, 0xfd3f, +0xfe10, 0xfe19, +0xfe30, 0xfe52, +0xfe54, 0xfe61, +0xfe63, 0xfe63, +0xfe68, 0xfe68, +0xfe6a, 0xfe6b, +0xff01, 0xff03, +0xff05, 0xff0a, +0xff0c, 0xff0f, +0xff1a, 0xff1b, +0xff1f, 0xff20, +0xff3b, 0xff3d, +0xff3f, 0xff3f, +0xff5b, 0xff5b, +0xff5d, 0xff5d, +0xff5f, 0xff65, +0x10100, 0x10102, +0x1039f, 0x1039f, +0x103d0, 0x103d0, +0x1056f, 0x1056f, +0x10857, 0x10857, +0x1091f, 0x1091f, +0x1093f, 0x1093f, +0x10a50, 0x10a58, +0x10a7f, 0x10a7f, +0x10af0, 0x10af6, +0x10b39, 0x10b3f, +0x10b99, 0x10b9c, +0x10d6e, 0x10d6e, +0x10ead, 0x10ead, +0x10f55, 0x10f59, +0x10f86, 0x10f89, +0x11047, 0x1104d, +0x110bb, 0x110bc, +0x110be, 0x110c1, +0x11140, 0x11143, +0x11174, 0x11175, +0x111c5, 0x111c8, +0x111cd, 0x111cd, +0x111db, 0x111db, +0x111dd, 0x111df, +0x11238, 0x1123d, +0x112a9, 0x112a9, +0x113d4, 0x113d5, +0x113d7, 0x113d8, +0x1144b, 0x1144f, +0x1145a, 0x1145b, +0x1145d, 0x1145d, +0x114c6, 0x114c6, +0x115c1, 0x115d7, +0x11641, 0x11643, +0x11660, 0x1166c, +0x116b9, 0x116b9, +0x1173c, 0x1173e, +0x1183b, 0x1183b, +0x11944, 0x11946, +0x119e2, 0x119e2, +0x11a3f, 0x11a46, +0x11a9a, 0x11a9c, +0x11a9e, 0x11aa2, +0x11b00, 0x11b09, +0x11be1, 0x11be1, +0x11c41, 0x11c45, +0x11c70, 0x11c71, +0x11ef7, 0x11ef8, +0x11f43, 0x11f4f, +0x11fff, 0x11fff, +0x12470, 0x12474, +0x12ff1, 0x12ff2, +0x16a6e, 0x16a6f, +0x16af5, 0x16af5, +0x16b37, 0x16b3b, +0x16b44, 0x16b44, +0x16d6d, 0x16d6f, +0x16e97, 0x16e9a, +0x16fe2, 0x16fe2, +0x1bc9f, 0x1bc9f, +0x1da87, 0x1da8b, +0x1e5ff, 0x1e5ff, +0x1e95e, 0x1e95f, +}; /* END of CR_P */ + +/* PROPERTY: 'Pahawh_Hmong': Script */ +static const OnigCodePoint +CR_Pahawh_Hmong[] = { 5, +0x16b00, 0x16b45, +0x16b50, 0x16b59, +0x16b5b, 0x16b61, +0x16b63, 0x16b77, +0x16b7d, 0x16b8f, +}; /* END of CR_Pahawh_Hmong */ + +/* PROPERTY: 'Palmyrene': Script */ +static const OnigCodePoint +CR_Palmyrene[] = { 1, +0x10860, 0x1087f, +}; /* END of CR_Palmyrene */ + +/* PROPERTY: 'Pattern_Syntax': Binary Property */ +static const OnigCodePoint +CR_Pattern_Syntax[] = { 28, +0x0021, 0x002f, +0x003a, 0x0040, +0x005b, 0x005e, +0x0060, 0x0060, +0x007b, 0x007e, +0x00a1, 0x00a7, +0x00a9, 0x00a9, +0x00ab, 0x00ac, +0x00ae, 0x00ae, +0x00b0, 0x00b1, +0x00b6, 0x00b6, +0x00bb, 0x00bb, +0x00bf, 0x00bf, +0x00d7, 0x00d7, +0x00f7, 0x00f7, +0x2010, 0x2027, +0x2030, 0x203e, +0x2041, 0x2053, +0x2055, 0x205e, +0x2190, 0x245f, +0x2500, 0x2775, +0x2794, 0x2bff, +0x2e00, 0x2e7f, +0x3001, 0x3003, +0x3008, 0x3020, +0x3030, 0x3030, +0xfd3e, 0xfd3f, +0xfe45, 0xfe46, +}; /* END of CR_Pattern_Syntax */ + +/* PROPERTY: 'Pattern_White_Space': Binary Property */ +static const OnigCodePoint +CR_Pattern_White_Space[] = { 5, +0x0009, 0x000d, +0x0020, 0x0020, +0x0085, 0x0085, +0x200e, 0x200f, +0x2028, 0x2029, +}; /* END of CR_Pattern_White_Space */ + +/* PROPERTY: 'Pau_Cin_Hau': Script */ +static const OnigCodePoint +CR_Pau_Cin_Hau[] = { 1, +0x11ac0, 0x11af8, +}; /* END of CR_Pau_Cin_Hau */ + +/* PROPERTY: 'Pc': General Category */ +static const OnigCodePoint +CR_Pc[] = { 6, +0x005f, 0x005f, +0x203f, 0x2040, +0x2054, 0x2054, +0xfe33, 0xfe34, +0xfe4d, 0xfe4f, +0xff3f, 0xff3f, +}; /* END of CR_Pc */ + +/* PROPERTY: 'Pd': General Category */ +static const OnigCodePoint +CR_Pd[] = { 20, +0x002d, 0x002d, +0x058a, 0x058a, +0x05be, 0x05be, +0x1400, 0x1400, +0x1806, 0x1806, +0x2010, 0x2015, +0x2e17, 0x2e17, +0x2e1a, 0x2e1a, +0x2e3a, 0x2e3b, +0x2e40, 0x2e40, +0x2e5d, 0x2e5d, +0x301c, 0x301c, +0x3030, 0x3030, +0x30a0, 0x30a0, +0xfe31, 0xfe32, +0xfe58, 0xfe58, +0xfe63, 0xfe63, +0xff0d, 0xff0d, +0x10d6e, 0x10d6e, +0x10ead, 0x10ead, +}; /* END of CR_Pd */ + +/* PROPERTY: 'Pe': General Category */ +static const OnigCodePoint +CR_Pe[] = { 76, +0x0029, 0x0029, +0x005d, 0x005d, +0x007d, 0x007d, +0x0f3b, 0x0f3b, +0x0f3d, 0x0f3d, +0x169c, 0x169c, +0x2046, 0x2046, +0x207e, 0x207e, +0x208e, 0x208e, +0x2309, 0x2309, +0x230b, 0x230b, +0x232a, 0x232a, +0x2769, 0x2769, +0x276b, 0x276b, +0x276d, 0x276d, +0x276f, 0x276f, +0x2771, 0x2771, +0x2773, 0x2773, +0x2775, 0x2775, +0x27c6, 0x27c6, +0x27e7, 0x27e7, +0x27e9, 0x27e9, +0x27eb, 0x27eb, +0x27ed, 0x27ed, +0x27ef, 0x27ef, +0x2984, 0x2984, +0x2986, 0x2986, +0x2988, 0x2988, +0x298a, 0x298a, +0x298c, 0x298c, +0x298e, 0x298e, +0x2990, 0x2990, +0x2992, 0x2992, +0x2994, 0x2994, +0x2996, 0x2996, +0x2998, 0x2998, +0x29d9, 0x29d9, +0x29db, 0x29db, +0x29fd, 0x29fd, +0x2e23, 0x2e23, +0x2e25, 0x2e25, +0x2e27, 0x2e27, +0x2e29, 0x2e29, +0x2e56, 0x2e56, +0x2e58, 0x2e58, +0x2e5a, 0x2e5a, +0x2e5c, 0x2e5c, +0x3009, 0x3009, +0x300b, 0x300b, +0x300d, 0x300d, +0x300f, 0x300f, +0x3011, 0x3011, +0x3015, 0x3015, +0x3017, 0x3017, +0x3019, 0x3019, +0x301b, 0x301b, +0x301e, 0x301f, +0xfd3e, 0xfd3e, +0xfe18, 0xfe18, +0xfe36, 0xfe36, +0xfe38, 0xfe38, +0xfe3a, 0xfe3a, +0xfe3c, 0xfe3c, +0xfe3e, 0xfe3e, +0xfe40, 0xfe40, +0xfe42, 0xfe42, +0xfe44, 0xfe44, +0xfe48, 0xfe48, +0xfe5a, 0xfe5a, +0xfe5c, 0xfe5c, +0xfe5e, 0xfe5e, +0xff09, 0xff09, +0xff3d, 0xff3d, +0xff5d, 0xff5d, +0xff60, 0xff60, +0xff63, 0xff63, +}; /* END of CR_Pe */ + +/* PROPERTY: 'Pf': General Category */ +static const OnigCodePoint +CR_Pf[] = { 10, +0x00bb, 0x00bb, +0x2019, 0x2019, +0x201d, 0x201d, +0x203a, 0x203a, +0x2e03, 0x2e03, +0x2e05, 0x2e05, +0x2e0a, 0x2e0a, +0x2e0d, 0x2e0d, +0x2e1d, 0x2e1d, +0x2e21, 0x2e21, +}; /* END of CR_Pf */ + +/* PROPERTY: 'Phags_Pa': Script */ +static const OnigCodePoint +CR_Phags_Pa[] = { 1, +0xa840, 0xa877, +}; /* END of CR_Phags_Pa */ + +/* PROPERTY: 'Phoenician': Script */ +static const OnigCodePoint +CR_Phoenician[] = { 2, +0x10900, 0x1091b, +0x1091f, 0x1091f, +}; /* END of CR_Phoenician */ + +/* PROPERTY: 'Pi': General Category */ +static const OnigCodePoint +CR_Pi[] = { 11, +0x00ab, 0x00ab, +0x2018, 0x2018, +0x201b, 0x201c, +0x201f, 0x201f, +0x2039, 0x2039, +0x2e02, 0x2e02, +0x2e04, 0x2e04, +0x2e09, 0x2e09, +0x2e0c, 0x2e0c, +0x2e1c, 0x2e1c, +0x2e20, 0x2e20, +}; /* END of CR_Pi */ + +/* PROPERTY: 'Po': General Category */ +static const OnigCodePoint +CR_Po[] = { 193, +0x0021, 0x0023, +0x0025, 0x0027, +0x002a, 0x002a, +0x002c, 0x002c, +0x002e, 0x002f, +0x003a, 0x003b, +0x003f, 0x0040, +0x005c, 0x005c, +0x00a1, 0x00a1, +0x00a7, 0x00a7, +0x00b6, 0x00b7, +0x00bf, 0x00bf, +0x037e, 0x037e, +0x0387, 0x0387, +0x055a, 0x055f, +0x0589, 0x0589, +0x05c0, 0x05c0, +0x05c3, 0x05c3, +0x05c6, 0x05c6, +0x05f3, 0x05f4, +0x0609, 0x060a, +0x060c, 0x060d, +0x061b, 0x061b, +0x061d, 0x061f, +0x066a, 0x066d, +0x06d4, 0x06d4, +0x0700, 0x070d, +0x07f7, 0x07f9, +0x0830, 0x083e, +0x085e, 0x085e, +0x0964, 0x0965, +0x0970, 0x0970, +0x09fd, 0x09fd, +0x0a76, 0x0a76, +0x0af0, 0x0af0, +0x0c77, 0x0c77, +0x0c84, 0x0c84, +0x0df4, 0x0df4, +0x0e4f, 0x0e4f, +0x0e5a, 0x0e5b, +0x0f04, 0x0f12, +0x0f14, 0x0f14, +0x0f85, 0x0f85, +0x0fd0, 0x0fd4, +0x0fd9, 0x0fda, +0x104a, 0x104f, +0x10fb, 0x10fb, +0x1360, 0x1368, +0x166e, 0x166e, +0x16eb, 0x16ed, +0x1735, 0x1736, +0x17d4, 0x17d6, +0x17d8, 0x17da, +0x1800, 0x1805, +0x1807, 0x180a, +0x1944, 0x1945, +0x1a1e, 0x1a1f, +0x1aa0, 0x1aa6, +0x1aa8, 0x1aad, +0x1b4e, 0x1b4f, +0x1b5a, 0x1b60, +0x1b7d, 0x1b7f, +0x1bfc, 0x1bff, +0x1c3b, 0x1c3f, +0x1c7e, 0x1c7f, +0x1cc0, 0x1cc7, +0x1cd3, 0x1cd3, +0x2016, 0x2017, +0x2020, 0x2027, +0x2030, 0x2038, +0x203b, 0x203e, +0x2041, 0x2043, +0x2047, 0x2051, +0x2053, 0x2053, +0x2055, 0x205e, +0x2cf9, 0x2cfc, +0x2cfe, 0x2cff, +0x2d70, 0x2d70, +0x2e00, 0x2e01, +0x2e06, 0x2e08, +0x2e0b, 0x2e0b, +0x2e0e, 0x2e16, +0x2e18, 0x2e19, +0x2e1b, 0x2e1b, +0x2e1e, 0x2e1f, +0x2e2a, 0x2e2e, +0x2e30, 0x2e39, +0x2e3c, 0x2e3f, +0x2e41, 0x2e41, +0x2e43, 0x2e4f, +0x2e52, 0x2e54, +0x3001, 0x3003, +0x303d, 0x303d, +0x30fb, 0x30fb, +0xa4fe, 0xa4ff, +0xa60d, 0xa60f, +0xa673, 0xa673, +0xa67e, 0xa67e, +0xa6f2, 0xa6f7, +0xa874, 0xa877, +0xa8ce, 0xa8cf, +0xa8f8, 0xa8fa, +0xa8fc, 0xa8fc, +0xa92e, 0xa92f, +0xa95f, 0xa95f, +0xa9c1, 0xa9cd, +0xa9de, 0xa9df, +0xaa5c, 0xaa5f, +0xaade, 0xaadf, +0xaaf0, 0xaaf1, +0xabeb, 0xabeb, +0xfe10, 0xfe16, +0xfe19, 0xfe19, +0xfe30, 0xfe30, +0xfe45, 0xfe46, +0xfe49, 0xfe4c, +0xfe50, 0xfe52, +0xfe54, 0xfe57, +0xfe5f, 0xfe61, +0xfe68, 0xfe68, +0xfe6a, 0xfe6b, +0xff01, 0xff03, +0xff05, 0xff07, +0xff0a, 0xff0a, +0xff0c, 0xff0c, +0xff0e, 0xff0f, +0xff1a, 0xff1b, +0xff1f, 0xff20, +0xff3c, 0xff3c, +0xff61, 0xff61, +0xff64, 0xff65, +0x10100, 0x10102, +0x1039f, 0x1039f, +0x103d0, 0x103d0, +0x1056f, 0x1056f, +0x10857, 0x10857, +0x1091f, 0x1091f, +0x1093f, 0x1093f, +0x10a50, 0x10a58, +0x10a7f, 0x10a7f, +0x10af0, 0x10af6, +0x10b39, 0x10b3f, +0x10b99, 0x10b9c, +0x10f55, 0x10f59, +0x10f86, 0x10f89, +0x11047, 0x1104d, +0x110bb, 0x110bc, +0x110be, 0x110c1, +0x11140, 0x11143, +0x11174, 0x11175, +0x111c5, 0x111c8, +0x111cd, 0x111cd, +0x111db, 0x111db, +0x111dd, 0x111df, +0x11238, 0x1123d, +0x112a9, 0x112a9, +0x113d4, 0x113d5, +0x113d7, 0x113d8, +0x1144b, 0x1144f, +0x1145a, 0x1145b, +0x1145d, 0x1145d, +0x114c6, 0x114c6, +0x115c1, 0x115d7, +0x11641, 0x11643, +0x11660, 0x1166c, +0x116b9, 0x116b9, +0x1173c, 0x1173e, +0x1183b, 0x1183b, +0x11944, 0x11946, +0x119e2, 0x119e2, +0x11a3f, 0x11a46, +0x11a9a, 0x11a9c, +0x11a9e, 0x11aa2, +0x11b00, 0x11b09, +0x11be1, 0x11be1, +0x11c41, 0x11c45, +0x11c70, 0x11c71, +0x11ef7, 0x11ef8, +0x11f43, 0x11f4f, +0x11fff, 0x11fff, +0x12470, 0x12474, +0x12ff1, 0x12ff2, +0x16a6e, 0x16a6f, +0x16af5, 0x16af5, +0x16b37, 0x16b3b, +0x16b44, 0x16b44, +0x16d6d, 0x16d6f, +0x16e97, 0x16e9a, +0x16fe2, 0x16fe2, +0x1bc9f, 0x1bc9f, +0x1da87, 0x1da8b, +0x1e5ff, 0x1e5ff, +0x1e95e, 0x1e95f, +}; /* END of CR_Po */ + +/* PROPERTY: 'Prepended_Concatenation_Mark': Binary Property */ +static const OnigCodePoint +CR_Prepended_Concatenation_Mark[] = { 7, +0x0600, 0x0605, +0x06dd, 0x06dd, +0x070f, 0x070f, +0x0890, 0x0891, +0x08e2, 0x08e2, +0x110bd, 0x110bd, +0x110cd, 0x110cd, +}; /* END of CR_Prepended_Concatenation_Mark */ + +/* PROPERTY: 'Ps': General Category */ +static const OnigCodePoint +CR_Ps[] = { 79, +0x0028, 0x0028, +0x005b, 0x005b, +0x007b, 0x007b, +0x0f3a, 0x0f3a, +0x0f3c, 0x0f3c, +0x169b, 0x169b, +0x201a, 0x201a, +0x201e, 0x201e, +0x2045, 0x2045, +0x207d, 0x207d, +0x208d, 0x208d, +0x2308, 0x2308, +0x230a, 0x230a, +0x2329, 0x2329, +0x2768, 0x2768, +0x276a, 0x276a, +0x276c, 0x276c, +0x276e, 0x276e, +0x2770, 0x2770, +0x2772, 0x2772, +0x2774, 0x2774, +0x27c5, 0x27c5, +0x27e6, 0x27e6, +0x27e8, 0x27e8, +0x27ea, 0x27ea, +0x27ec, 0x27ec, +0x27ee, 0x27ee, +0x2983, 0x2983, +0x2985, 0x2985, +0x2987, 0x2987, +0x2989, 0x2989, +0x298b, 0x298b, +0x298d, 0x298d, +0x298f, 0x298f, +0x2991, 0x2991, +0x2993, 0x2993, +0x2995, 0x2995, +0x2997, 0x2997, +0x29d8, 0x29d8, +0x29da, 0x29da, +0x29fc, 0x29fc, +0x2e22, 0x2e22, +0x2e24, 0x2e24, +0x2e26, 0x2e26, +0x2e28, 0x2e28, +0x2e42, 0x2e42, +0x2e55, 0x2e55, +0x2e57, 0x2e57, +0x2e59, 0x2e59, +0x2e5b, 0x2e5b, +0x3008, 0x3008, +0x300a, 0x300a, +0x300c, 0x300c, +0x300e, 0x300e, +0x3010, 0x3010, +0x3014, 0x3014, +0x3016, 0x3016, +0x3018, 0x3018, +0x301a, 0x301a, +0x301d, 0x301d, +0xfd3f, 0xfd3f, +0xfe17, 0xfe17, +0xfe35, 0xfe35, +0xfe37, 0xfe37, +0xfe39, 0xfe39, +0xfe3b, 0xfe3b, +0xfe3d, 0xfe3d, +0xfe3f, 0xfe3f, +0xfe41, 0xfe41, +0xfe43, 0xfe43, +0xfe47, 0xfe47, +0xfe59, 0xfe59, +0xfe5b, 0xfe5b, +0xfe5d, 0xfe5d, +0xff08, 0xff08, +0xff3b, 0xff3b, +0xff5b, 0xff5b, +0xff5f, 0xff5f, +0xff62, 0xff62, +}; /* END of CR_Ps */ + +/* PROPERTY: 'Psalter_Pahlavi': Script */ +static const OnigCodePoint +CR_Psalter_Pahlavi[] = { 3, +0x10b80, 0x10b91, +0x10b99, 0x10b9c, +0x10ba9, 0x10baf, +}; /* END of CR_Psalter_Pahlavi */ + +/* PROPERTY: 'Quotation_Mark': Binary Property */ +static const OnigCodePoint +CR_Quotation_Mark[] = { 13, +0x0022, 0x0022, +0x0027, 0x0027, +0x00ab, 0x00ab, +0x00bb, 0x00bb, +0x2018, 0x201f, +0x2039, 0x203a, +0x2e42, 0x2e42, +0x300c, 0x300f, +0x301d, 0x301f, +0xfe41, 0xfe44, +0xff02, 0xff02, +0xff07, 0xff07, +0xff62, 0xff63, +}; /* END of CR_Quotation_Mark */ + +/* PROPERTY: 'Radical': Binary Property */ +static const OnigCodePoint +CR_Radical[] = { 3, +0x2e80, 0x2e99, +0x2e9b, 0x2ef3, +0x2f00, 0x2fd5, +}; /* END of CR_Radical */ + +/* PROPERTY: 'Regional_Indicator': Binary Property */ +static const OnigCodePoint +CR_Regional_Indicator[] = { 1, +0x1f1e6, 0x1f1ff, +}; /* END of CR_Regional_Indicator */ + +/* PROPERTY: 'Rejang': Script */ +static const OnigCodePoint +CR_Rejang[] = { 2, +0xa930, 0xa953, +0xa95f, 0xa95f, +}; /* END of CR_Rejang */ + +/* PROPERTY: 'Runic': Script */ +static const OnigCodePoint +CR_Runic[] = { 2, +0x16a0, 0x16ea, +0x16ee, 0x16f8, +}; /* END of CR_Runic */ + +/* PROPERTY: 'S': Major Category */ +static const OnigCodePoint +CR_S[] = { 236, +0x0024, 0x0024, +0x002b, 0x002b, +0x003c, 0x003e, +0x005e, 0x005e, +0x0060, 0x0060, +0x007c, 0x007c, +0x007e, 0x007e, +0x00a2, 0x00a6, +0x00a8, 0x00a9, +0x00ac, 0x00ac, +0x00ae, 0x00b1, +0x00b4, 0x00b4, +0x00b8, 0x00b8, +0x00d7, 0x00d7, +0x00f7, 0x00f7, +0x02c2, 0x02c5, +0x02d2, 0x02df, +0x02e5, 0x02eb, +0x02ed, 0x02ed, +0x02ef, 0x02ff, +0x0375, 0x0375, +0x0384, 0x0385, +0x03f6, 0x03f6, +0x0482, 0x0482, +0x058d, 0x058f, +0x0606, 0x0608, +0x060b, 0x060b, +0x060e, 0x060f, +0x06de, 0x06de, +0x06e9, 0x06e9, +0x06fd, 0x06fe, +0x07f6, 0x07f6, +0x07fe, 0x07ff, +0x0888, 0x0888, +0x09f2, 0x09f3, +0x09fa, 0x09fb, +0x0af1, 0x0af1, +0x0b70, 0x0b70, +0x0bf3, 0x0bfa, +0x0c7f, 0x0c7f, +0x0d4f, 0x0d4f, +0x0d79, 0x0d79, +0x0e3f, 0x0e3f, +0x0f01, 0x0f03, +0x0f13, 0x0f13, +0x0f15, 0x0f17, +0x0f1a, 0x0f1f, +0x0f34, 0x0f34, +0x0f36, 0x0f36, +0x0f38, 0x0f38, +0x0fbe, 0x0fc5, +0x0fc7, 0x0fcc, +0x0fce, 0x0fcf, +0x0fd5, 0x0fd8, +0x109e, 0x109f, +0x1390, 0x1399, +0x166d, 0x166d, +0x17db, 0x17db, +0x1940, 0x1940, +0x19de, 0x19ff, +0x1b61, 0x1b6a, +0x1b74, 0x1b7c, +0x1fbd, 0x1fbd, +0x1fbf, 0x1fc1, +0x1fcd, 0x1fcf, +0x1fdd, 0x1fdf, +0x1fed, 0x1fef, +0x1ffd, 0x1ffe, +0x2044, 0x2044, +0x2052, 0x2052, +0x207a, 0x207c, +0x208a, 0x208c, +0x20a0, 0x20c0, +0x2100, 0x2101, +0x2103, 0x2106, +0x2108, 0x2109, +0x2114, 0x2114, +0x2116, 0x2118, +0x211e, 0x2123, +0x2125, 0x2125, +0x2127, 0x2127, +0x2129, 0x2129, +0x212e, 0x212e, +0x213a, 0x213b, +0x2140, 0x2144, +0x214a, 0x214d, +0x214f, 0x214f, +0x218a, 0x218b, +0x2190, 0x2307, +0x230c, 0x2328, +0x232b, 0x2429, +0x2440, 0x244a, +0x249c, 0x24e9, +0x2500, 0x2767, +0x2794, 0x27c4, +0x27c7, 0x27e5, +0x27f0, 0x2982, +0x2999, 0x29d7, +0x29dc, 0x29fb, +0x29fe, 0x2b73, +0x2b76, 0x2b95, +0x2b97, 0x2bff, +0x2ce5, 0x2cea, +0x2e50, 0x2e51, +0x2e80, 0x2e99, +0x2e9b, 0x2ef3, +0x2f00, 0x2fd5, +0x2ff0, 0x2fff, +0x3004, 0x3004, +0x3012, 0x3013, +0x3020, 0x3020, +0x3036, 0x3037, +0x303e, 0x303f, +0x309b, 0x309c, +0x3190, 0x3191, +0x3196, 0x319f, +0x31c0, 0x31e5, +0x31ef, 0x31ef, +0x3200, 0x321e, +0x322a, 0x3247, +0x3250, 0x3250, +0x3260, 0x327f, +0x328a, 0x32b0, +0x32c0, 0x33ff, +0x4dc0, 0x4dff, +0xa490, 0xa4c6, +0xa700, 0xa716, +0xa720, 0xa721, +0xa789, 0xa78a, +0xa828, 0xa82b, +0xa836, 0xa839, +0xaa77, 0xaa79, +0xab5b, 0xab5b, +0xab6a, 0xab6b, +0xfb29, 0xfb29, +0xfbb2, 0xfbc2, +0xfd40, 0xfd4f, +0xfdcf, 0xfdcf, +0xfdfc, 0xfdff, +0xfe62, 0xfe62, +0xfe64, 0xfe66, +0xfe69, 0xfe69, +0xff04, 0xff04, +0xff0b, 0xff0b, +0xff1c, 0xff1e, +0xff3e, 0xff3e, +0xff40, 0xff40, +0xff5c, 0xff5c, +0xff5e, 0xff5e, +0xffe0, 0xffe6, +0xffe8, 0xffee, +0xfffc, 0xfffd, +0x10137, 0x1013f, +0x10179, 0x10189, +0x1018c, 0x1018e, +0x10190, 0x1019c, +0x101a0, 0x101a0, +0x101d0, 0x101fc, +0x10877, 0x10878, +0x10ac8, 0x10ac8, +0x10d8e, 0x10d8f, +0x1173f, 0x1173f, +0x11fd5, 0x11ff1, +0x16b3c, 0x16b3f, +0x16b45, 0x16b45, +0x1bc9c, 0x1bc9c, +0x1cc00, 0x1ccef, +0x1cd00, 0x1ceb3, +0x1cf50, 0x1cfc3, +0x1d000, 0x1d0f5, +0x1d100, 0x1d126, +0x1d129, 0x1d164, +0x1d16a, 0x1d16c, +0x1d183, 0x1d184, +0x1d18c, 0x1d1a9, +0x1d1ae, 0x1d1ea, +0x1d200, 0x1d241, +0x1d245, 0x1d245, +0x1d300, 0x1d356, +0x1d6c1, 0x1d6c1, +0x1d6db, 0x1d6db, +0x1d6fb, 0x1d6fb, +0x1d715, 0x1d715, +0x1d735, 0x1d735, +0x1d74f, 0x1d74f, +0x1d76f, 0x1d76f, +0x1d789, 0x1d789, +0x1d7a9, 0x1d7a9, +0x1d7c3, 0x1d7c3, +0x1d800, 0x1d9ff, +0x1da37, 0x1da3a, +0x1da6d, 0x1da74, +0x1da76, 0x1da83, +0x1da85, 0x1da86, +0x1e14f, 0x1e14f, +0x1e2ff, 0x1e2ff, +0x1ecac, 0x1ecac, +0x1ecb0, 0x1ecb0, +0x1ed2e, 0x1ed2e, +0x1eef0, 0x1eef1, +0x1f000, 0x1f02b, +0x1f030, 0x1f093, +0x1f0a0, 0x1f0ae, +0x1f0b1, 0x1f0bf, +0x1f0c1, 0x1f0cf, +0x1f0d1, 0x1f0f5, +0x1f10d, 0x1f1ad, +0x1f1e6, 0x1f202, +0x1f210, 0x1f23b, +0x1f240, 0x1f248, +0x1f250, 0x1f251, +0x1f260, 0x1f265, +0x1f300, 0x1f6d7, +0x1f6dc, 0x1f6ec, +0x1f6f0, 0x1f6fc, +0x1f700, 0x1f776, +0x1f77b, 0x1f7d9, +0x1f7e0, 0x1f7eb, +0x1f7f0, 0x1f7f0, +0x1f800, 0x1f80b, +0x1f810, 0x1f847, +0x1f850, 0x1f859, +0x1f860, 0x1f887, +0x1f890, 0x1f8ad, +0x1f8b0, 0x1f8bb, +0x1f8c0, 0x1f8c1, +0x1f900, 0x1fa53, +0x1fa60, 0x1fa6d, +0x1fa70, 0x1fa7c, +0x1fa80, 0x1fa89, +0x1fa8f, 0x1fac6, +0x1face, 0x1fadc, +0x1fadf, 0x1fae9, +0x1faf0, 0x1faf8, +0x1fb00, 0x1fb92, +0x1fb94, 0x1fbef, +}; /* END of CR_S */ + +/* PROPERTY: 'Samaritan': Script */ +static const OnigCodePoint +CR_Samaritan[] = { 2, +0x0800, 0x082d, +0x0830, 0x083e, +}; /* END of CR_Samaritan */ + +/* PROPERTY: 'Saurashtra': Script */ +static const OnigCodePoint +CR_Saurashtra[] = { 2, +0xa880, 0xa8c5, +0xa8ce, 0xa8d9, +}; /* END of CR_Saurashtra */ + +/* PROPERTY: 'Sc': General Category */ +static const OnigCodePoint +CR_Sc[] = { 21, +0x0024, 0x0024, +0x00a2, 0x00a5, +0x058f, 0x058f, +0x060b, 0x060b, +0x07fe, 0x07ff, +0x09f2, 0x09f3, +0x09fb, 0x09fb, +0x0af1, 0x0af1, +0x0bf9, 0x0bf9, +0x0e3f, 0x0e3f, +0x17db, 0x17db, +0x20a0, 0x20c0, +0xa838, 0xa838, +0xfdfc, 0xfdfc, +0xfe69, 0xfe69, +0xff04, 0xff04, +0xffe0, 0xffe1, +0xffe5, 0xffe6, +0x11fdd, 0x11fe0, +0x1e2ff, 0x1e2ff, +0x1ecb0, 0x1ecb0, +}; /* END of CR_Sc */ + +/* PROPERTY: 'Sentence_Terminal': Binary Property */ +static const OnigCodePoint +CR_Sentence_Terminal[] = { 88, +0x0021, 0x0021, +0x002e, 0x002e, +0x003f, 0x003f, +0x0589, 0x0589, +0x061d, 0x061f, +0x06d4, 0x06d4, +0x0700, 0x0702, +0x07f9, 0x07f9, +0x0837, 0x0837, +0x0839, 0x0839, +0x083d, 0x083e, +0x0964, 0x0965, +0x104a, 0x104b, +0x1362, 0x1362, +0x1367, 0x1368, +0x166e, 0x166e, +0x1735, 0x1736, +0x17d4, 0x17d5, +0x1803, 0x1803, +0x1809, 0x1809, +0x1944, 0x1945, +0x1aa8, 0x1aab, +0x1b4e, 0x1b4f, +0x1b5a, 0x1b5b, +0x1b5e, 0x1b5f, +0x1b7d, 0x1b7f, +0x1c3b, 0x1c3c, +0x1c7e, 0x1c7f, +0x2024, 0x2024, +0x203c, 0x203d, +0x2047, 0x2049, +0x2cf9, 0x2cfb, +0x2e2e, 0x2e2e, +0x2e3c, 0x2e3c, +0x2e53, 0x2e54, +0x3002, 0x3002, +0xa4ff, 0xa4ff, +0xa60e, 0xa60f, +0xa6f3, 0xa6f3, +0xa6f7, 0xa6f7, +0xa876, 0xa877, +0xa8ce, 0xa8cf, +0xa92f, 0xa92f, +0xa9c8, 0xa9c9, +0xaa5d, 0xaa5f, +0xaaf0, 0xaaf1, +0xabeb, 0xabeb, +0xfe12, 0xfe12, +0xfe15, 0xfe16, +0xfe52, 0xfe52, +0xfe56, 0xfe57, +0xff01, 0xff01, +0xff0e, 0xff0e, +0xff1f, 0xff1f, +0xff61, 0xff61, +0x10a56, 0x10a57, +0x10f55, 0x10f59, +0x10f86, 0x10f89, +0x11047, 0x11048, +0x110be, 0x110c1, +0x11141, 0x11143, +0x111c5, 0x111c6, +0x111cd, 0x111cd, +0x111de, 0x111df, +0x11238, 0x11239, +0x1123b, 0x1123c, +0x112a9, 0x112a9, +0x113d4, 0x113d5, +0x1144b, 0x1144c, +0x115c2, 0x115c3, +0x115c9, 0x115d7, +0x11641, 0x11642, +0x1173c, 0x1173e, +0x11944, 0x11944, +0x11946, 0x11946, +0x11a42, 0x11a43, +0x11a9b, 0x11a9c, +0x11c41, 0x11c42, +0x11ef7, 0x11ef8, +0x11f43, 0x11f44, +0x16a6e, 0x16a6f, +0x16af5, 0x16af5, +0x16b37, 0x16b38, +0x16b44, 0x16b44, +0x16d6e, 0x16d6f, +0x16e98, 0x16e98, +0x1bc9f, 0x1bc9f, +0x1da88, 0x1da88, +}; /* END of CR_Sentence_Terminal */ + +/* PROPERTY: 'Sharada': Script */ +static const OnigCodePoint +CR_Sharada[] = { 1, +0x11180, 0x111df, +}; /* END of CR_Sharada */ + +/* PROPERTY: 'Shavian': Script */ +static const OnigCodePoint +CR_Shavian[] = { 1, +0x10450, 0x1047f, +}; /* END of CR_Shavian */ + +/* PROPERTY: 'Siddham': Script */ +static const OnigCodePoint +CR_Siddham[] = { 2, +0x11580, 0x115b5, +0x115b8, 0x115dd, +}; /* END of CR_Siddham */ + +/* PROPERTY: 'SignWriting': Script */ +static const OnigCodePoint +CR_SignWriting[] = { 3, +0x1d800, 0x1da8b, +0x1da9b, 0x1da9f, +0x1daa1, 0x1daaf, +}; /* END of CR_SignWriting */ + +/* PROPERTY: 'Sinhala': Script */ +static const OnigCodePoint +CR_Sinhala[] = { 13, +0x0d81, 0x0d83, +0x0d85, 0x0d96, +0x0d9a, 0x0db1, +0x0db3, 0x0dbb, +0x0dbd, 0x0dbd, +0x0dc0, 0x0dc6, +0x0dca, 0x0dca, +0x0dcf, 0x0dd4, +0x0dd6, 0x0dd6, +0x0dd8, 0x0ddf, +0x0de6, 0x0def, +0x0df2, 0x0df4, +0x111e1, 0x111f4, +}; /* END of CR_Sinhala */ + +/* PROPERTY: 'Sk': General Category */ +static const OnigCodePoint +CR_Sk[] = { 31, +0x005e, 0x005e, +0x0060, 0x0060, +0x00a8, 0x00a8, +0x00af, 0x00af, +0x00b4, 0x00b4, +0x00b8, 0x00b8, +0x02c2, 0x02c5, +0x02d2, 0x02df, +0x02e5, 0x02eb, +0x02ed, 0x02ed, +0x02ef, 0x02ff, +0x0375, 0x0375, +0x0384, 0x0385, +0x0888, 0x0888, +0x1fbd, 0x1fbd, +0x1fbf, 0x1fc1, +0x1fcd, 0x1fcf, +0x1fdd, 0x1fdf, +0x1fed, 0x1fef, +0x1ffd, 0x1ffe, +0x309b, 0x309c, +0xa700, 0xa716, +0xa720, 0xa721, +0xa789, 0xa78a, +0xab5b, 0xab5b, +0xab6a, 0xab6b, +0xfbb2, 0xfbc2, +0xff3e, 0xff3e, +0xff40, 0xff40, +0xffe3, 0xffe3, +0x1f3fb, 0x1f3ff, +}; /* END of CR_Sk */ + +/* PROPERTY: 'Sm': General Category */ +static const OnigCodePoint +CR_Sm[] = { 65, +0x002b, 0x002b, +0x003c, 0x003e, +0x007c, 0x007c, +0x007e, 0x007e, +0x00ac, 0x00ac, +0x00b1, 0x00b1, +0x00d7, 0x00d7, +0x00f7, 0x00f7, +0x03f6, 0x03f6, +0x0606, 0x0608, +0x2044, 0x2044, +0x2052, 0x2052, +0x207a, 0x207c, +0x208a, 0x208c, +0x2118, 0x2118, +0x2140, 0x2144, +0x214b, 0x214b, +0x2190, 0x2194, +0x219a, 0x219b, +0x21a0, 0x21a0, +0x21a3, 0x21a3, +0x21a6, 0x21a6, +0x21ae, 0x21ae, +0x21ce, 0x21cf, +0x21d2, 0x21d2, +0x21d4, 0x21d4, +0x21f4, 0x22ff, +0x2320, 0x2321, +0x237c, 0x237c, +0x239b, 0x23b3, +0x23dc, 0x23e1, +0x25b7, 0x25b7, +0x25c1, 0x25c1, +0x25f8, 0x25ff, +0x266f, 0x266f, +0x27c0, 0x27c4, +0x27c7, 0x27e5, +0x27f0, 0x27ff, +0x2900, 0x2982, +0x2999, 0x29d7, +0x29dc, 0x29fb, +0x29fe, 0x2aff, +0x2b30, 0x2b44, +0x2b47, 0x2b4c, +0xfb29, 0xfb29, +0xfe62, 0xfe62, +0xfe64, 0xfe66, +0xff0b, 0xff0b, +0xff1c, 0xff1e, +0xff5c, 0xff5c, +0xff5e, 0xff5e, +0xffe2, 0xffe2, +0xffe9, 0xffec, +0x10d8e, 0x10d8f, +0x1d6c1, 0x1d6c1, +0x1d6db, 0x1d6db, +0x1d6fb, 0x1d6fb, +0x1d715, 0x1d715, +0x1d735, 0x1d735, +0x1d74f, 0x1d74f, +0x1d76f, 0x1d76f, +0x1d789, 0x1d789, +0x1d7a9, 0x1d7a9, +0x1d7c3, 0x1d7c3, +0x1eef0, 0x1eef1, +}; /* END of CR_Sm */ + +/* PROPERTY: 'So': General Category */ +static const OnigCodePoint +CR_So[] = { 187, +0x00a6, 0x00a6, +0x00a9, 0x00a9, +0x00ae, 0x00ae, +0x00b0, 0x00b0, +0x0482, 0x0482, +0x058d, 0x058e, +0x060e, 0x060f, +0x06de, 0x06de, +0x06e9, 0x06e9, +0x06fd, 0x06fe, +0x07f6, 0x07f6, +0x09fa, 0x09fa, +0x0b70, 0x0b70, +0x0bf3, 0x0bf8, +0x0bfa, 0x0bfa, +0x0c7f, 0x0c7f, +0x0d4f, 0x0d4f, +0x0d79, 0x0d79, +0x0f01, 0x0f03, +0x0f13, 0x0f13, +0x0f15, 0x0f17, +0x0f1a, 0x0f1f, +0x0f34, 0x0f34, +0x0f36, 0x0f36, +0x0f38, 0x0f38, +0x0fbe, 0x0fc5, +0x0fc7, 0x0fcc, +0x0fce, 0x0fcf, +0x0fd5, 0x0fd8, +0x109e, 0x109f, +0x1390, 0x1399, +0x166d, 0x166d, +0x1940, 0x1940, +0x19de, 0x19ff, +0x1b61, 0x1b6a, +0x1b74, 0x1b7c, +0x2100, 0x2101, +0x2103, 0x2106, +0x2108, 0x2109, +0x2114, 0x2114, +0x2116, 0x2117, +0x211e, 0x2123, +0x2125, 0x2125, +0x2127, 0x2127, +0x2129, 0x2129, +0x212e, 0x212e, +0x213a, 0x213b, +0x214a, 0x214a, +0x214c, 0x214d, +0x214f, 0x214f, +0x218a, 0x218b, +0x2195, 0x2199, +0x219c, 0x219f, +0x21a1, 0x21a2, +0x21a4, 0x21a5, +0x21a7, 0x21ad, +0x21af, 0x21cd, +0x21d0, 0x21d1, +0x21d3, 0x21d3, +0x21d5, 0x21f3, +0x2300, 0x2307, +0x230c, 0x231f, +0x2322, 0x2328, +0x232b, 0x237b, +0x237d, 0x239a, +0x23b4, 0x23db, +0x23e2, 0x2429, +0x2440, 0x244a, +0x249c, 0x24e9, +0x2500, 0x25b6, +0x25b8, 0x25c0, +0x25c2, 0x25f7, +0x2600, 0x266e, +0x2670, 0x2767, +0x2794, 0x27bf, +0x2800, 0x28ff, +0x2b00, 0x2b2f, +0x2b45, 0x2b46, +0x2b4d, 0x2b73, +0x2b76, 0x2b95, +0x2b97, 0x2bff, +0x2ce5, 0x2cea, +0x2e50, 0x2e51, +0x2e80, 0x2e99, +0x2e9b, 0x2ef3, +0x2f00, 0x2fd5, +0x2ff0, 0x2fff, +0x3004, 0x3004, +0x3012, 0x3013, +0x3020, 0x3020, +0x3036, 0x3037, +0x303e, 0x303f, +0x3190, 0x3191, +0x3196, 0x319f, +0x31c0, 0x31e5, +0x31ef, 0x31ef, +0x3200, 0x321e, +0x322a, 0x3247, +0x3250, 0x3250, +0x3260, 0x327f, +0x328a, 0x32b0, +0x32c0, 0x33ff, +0x4dc0, 0x4dff, +0xa490, 0xa4c6, +0xa828, 0xa82b, +0xa836, 0xa837, +0xa839, 0xa839, +0xaa77, 0xaa79, +0xfd40, 0xfd4f, +0xfdcf, 0xfdcf, +0xfdfd, 0xfdff, +0xffe4, 0xffe4, +0xffe8, 0xffe8, +0xffed, 0xffee, +0xfffc, 0xfffd, +0x10137, 0x1013f, +0x10179, 0x10189, +0x1018c, 0x1018e, +0x10190, 0x1019c, +0x101a0, 0x101a0, +0x101d0, 0x101fc, +0x10877, 0x10878, +0x10ac8, 0x10ac8, +0x1173f, 0x1173f, +0x11fd5, 0x11fdc, +0x11fe1, 0x11ff1, +0x16b3c, 0x16b3f, +0x16b45, 0x16b45, +0x1bc9c, 0x1bc9c, +0x1cc00, 0x1ccef, +0x1cd00, 0x1ceb3, +0x1cf50, 0x1cfc3, +0x1d000, 0x1d0f5, +0x1d100, 0x1d126, +0x1d129, 0x1d164, +0x1d16a, 0x1d16c, +0x1d183, 0x1d184, +0x1d18c, 0x1d1a9, +0x1d1ae, 0x1d1ea, +0x1d200, 0x1d241, +0x1d245, 0x1d245, +0x1d300, 0x1d356, +0x1d800, 0x1d9ff, +0x1da37, 0x1da3a, +0x1da6d, 0x1da74, +0x1da76, 0x1da83, +0x1da85, 0x1da86, +0x1e14f, 0x1e14f, +0x1ecac, 0x1ecac, +0x1ed2e, 0x1ed2e, +0x1f000, 0x1f02b, +0x1f030, 0x1f093, +0x1f0a0, 0x1f0ae, +0x1f0b1, 0x1f0bf, +0x1f0c1, 0x1f0cf, +0x1f0d1, 0x1f0f5, +0x1f10d, 0x1f1ad, +0x1f1e6, 0x1f202, +0x1f210, 0x1f23b, +0x1f240, 0x1f248, +0x1f250, 0x1f251, +0x1f260, 0x1f265, +0x1f300, 0x1f3fa, +0x1f400, 0x1f6d7, +0x1f6dc, 0x1f6ec, +0x1f6f0, 0x1f6fc, +0x1f700, 0x1f776, +0x1f77b, 0x1f7d9, +0x1f7e0, 0x1f7eb, +0x1f7f0, 0x1f7f0, +0x1f800, 0x1f80b, +0x1f810, 0x1f847, +0x1f850, 0x1f859, +0x1f860, 0x1f887, +0x1f890, 0x1f8ad, +0x1f8b0, 0x1f8bb, +0x1f8c0, 0x1f8c1, +0x1f900, 0x1fa53, +0x1fa60, 0x1fa6d, +0x1fa70, 0x1fa7c, +0x1fa80, 0x1fa89, +0x1fa8f, 0x1fac6, +0x1face, 0x1fadc, +0x1fadf, 0x1fae9, +0x1faf0, 0x1faf8, +0x1fb00, 0x1fb92, +0x1fb94, 0x1fbef, +}; /* END of CR_So */ + +/* PROPERTY: 'Soft_Dotted': Binary Property */ +static const OnigCodePoint +CR_Soft_Dotted[] = { 34, +0x0069, 0x006a, +0x012f, 0x012f, +0x0249, 0x0249, +0x0268, 0x0268, +0x029d, 0x029d, +0x02b2, 0x02b2, +0x03f3, 0x03f3, +0x0456, 0x0456, +0x0458, 0x0458, +0x1d62, 0x1d62, +0x1d96, 0x1d96, +0x1da4, 0x1da4, +0x1da8, 0x1da8, +0x1e2d, 0x1e2d, +0x1ecb, 0x1ecb, +0x2071, 0x2071, +0x2148, 0x2149, +0x2c7c, 0x2c7c, +0x1d422, 0x1d423, +0x1d456, 0x1d457, +0x1d48a, 0x1d48b, +0x1d4be, 0x1d4bf, +0x1d4f2, 0x1d4f3, +0x1d526, 0x1d527, +0x1d55a, 0x1d55b, +0x1d58e, 0x1d58f, +0x1d5c2, 0x1d5c3, +0x1d5f6, 0x1d5f7, +0x1d62a, 0x1d62b, +0x1d65e, 0x1d65f, +0x1d692, 0x1d693, +0x1df1a, 0x1df1a, +0x1e04c, 0x1e04d, +0x1e068, 0x1e068, +}; /* END of CR_Soft_Dotted */ + +/* PROPERTY: 'Sogdian': Script */ +static const OnigCodePoint +CR_Sogdian[] = { 1, +0x10f30, 0x10f59, +}; /* END of CR_Sogdian */ + +/* PROPERTY: 'Sora_Sompeng': Script */ +static const OnigCodePoint +CR_Sora_Sompeng[] = { 2, +0x110d0, 0x110e8, +0x110f0, 0x110f9, +}; /* END of CR_Sora_Sompeng */ + +/* PROPERTY: 'Soyombo': Script */ +static const OnigCodePoint +CR_Soyombo[] = { 1, +0x11a50, 0x11aa2, +}; /* END of CR_Soyombo */ + +/* PROPERTY: 'Sundanese': Script */ +static const OnigCodePoint +CR_Sundanese[] = { 2, +0x1b80, 0x1bbf, +0x1cc0, 0x1cc7, +}; /* END of CR_Sundanese */ + +/* PROPERTY: 'Sunuwar': Script */ +static const OnigCodePoint +CR_Sunuwar[] = { 2, +0x11bc0, 0x11be1, +0x11bf0, 0x11bf9, +}; /* END of CR_Sunuwar */ + +/* PROPERTY: 'Syloti_Nagri': Script */ +static const OnigCodePoint +CR_Syloti_Nagri[] = { 1, +0xa800, 0xa82c, +}; /* END of CR_Syloti_Nagri */ + +/* PROPERTY: 'Syriac': Script */ +static const OnigCodePoint +CR_Syriac[] = { 4, +0x0700, 0x070d, +0x070f, 0x074a, +0x074d, 0x074f, +0x0860, 0x086a, +}; /* END of CR_Syriac */ + +/* PROPERTY: 'Tagalog': Script */ +static const OnigCodePoint +CR_Tagalog[] = { 2, +0x1700, 0x1715, +0x171f, 0x171f, +}; /* END of CR_Tagalog */ + +/* PROPERTY: 'Tagbanwa': Script */ +static const OnigCodePoint +CR_Tagbanwa[] = { 3, +0x1760, 0x176c, +0x176e, 0x1770, +0x1772, 0x1773, +}; /* END of CR_Tagbanwa */ + +/* PROPERTY: 'Tai_Le': Script */ +static const OnigCodePoint +CR_Tai_Le[] = { 2, +0x1950, 0x196d, +0x1970, 0x1974, +}; /* END of CR_Tai_Le */ + +/* PROPERTY: 'Tai_Tham': Script */ +static const OnigCodePoint +CR_Tai_Tham[] = { 5, +0x1a20, 0x1a5e, +0x1a60, 0x1a7c, +0x1a7f, 0x1a89, +0x1a90, 0x1a99, +0x1aa0, 0x1aad, +}; /* END of CR_Tai_Tham */ + +/* PROPERTY: 'Tai_Viet': Script */ +static const OnigCodePoint +CR_Tai_Viet[] = { 2, +0xaa80, 0xaac2, +0xaadb, 0xaadf, +}; /* END of CR_Tai_Viet */ + +/* PROPERTY: 'Takri': Script */ +static const OnigCodePoint +CR_Takri[] = { 2, +0x11680, 0x116b9, +0x116c0, 0x116c9, +}; /* END of CR_Takri */ + +/* PROPERTY: 'Tamil': Script */ +static const OnigCodePoint +CR_Tamil[] = { 18, +0x0b82, 0x0b83, +0x0b85, 0x0b8a, +0x0b8e, 0x0b90, +0x0b92, 0x0b95, +0x0b99, 0x0b9a, +0x0b9c, 0x0b9c, +0x0b9e, 0x0b9f, +0x0ba3, 0x0ba4, +0x0ba8, 0x0baa, +0x0bae, 0x0bb9, +0x0bbe, 0x0bc2, +0x0bc6, 0x0bc8, +0x0bca, 0x0bcd, +0x0bd0, 0x0bd0, +0x0bd7, 0x0bd7, +0x0be6, 0x0bfa, +0x11fc0, 0x11ff1, +0x11fff, 0x11fff, +}; /* END of CR_Tamil */ + +/* PROPERTY: 'Tangsa': Script */ +static const OnigCodePoint +CR_Tangsa[] = { 2, +0x16a70, 0x16abe, +0x16ac0, 0x16ac9, +}; /* END of CR_Tangsa */ + +/* PROPERTY: 'Tangut': Script */ +static const OnigCodePoint +CR_Tangut[] = { 4, +0x16fe0, 0x16fe0, +0x17000, 0x187f7, +0x18800, 0x18aff, +0x18d00, 0x18d08, +}; /* END of CR_Tangut */ + +/* PROPERTY: 'Telugu': Script */ +static const OnigCodePoint +CR_Telugu[] = { 13, +0x0c00, 0x0c0c, +0x0c0e, 0x0c10, +0x0c12, 0x0c28, +0x0c2a, 0x0c39, +0x0c3c, 0x0c44, +0x0c46, 0x0c48, +0x0c4a, 0x0c4d, +0x0c55, 0x0c56, +0x0c58, 0x0c5a, +0x0c5d, 0x0c5d, +0x0c60, 0x0c63, +0x0c66, 0x0c6f, +0x0c77, 0x0c7f, +}; /* END of CR_Telugu */ + +/* PROPERTY: 'Terminal_Punctuation': Binary Property */ +static const OnigCodePoint +CR_Terminal_Punctuation[] = { 116, +0x0021, 0x0021, +0x002c, 0x002c, +0x002e, 0x002e, +0x003a, 0x003b, +0x003f, 0x003f, +0x037e, 0x037e, +0x0387, 0x0387, +0x0589, 0x0589, +0x05c3, 0x05c3, +0x060c, 0x060c, +0x061b, 0x061b, +0x061d, 0x061f, +0x06d4, 0x06d4, +0x0700, 0x070a, +0x070c, 0x070c, +0x07f8, 0x07f9, +0x0830, 0x0835, +0x0837, 0x083e, +0x085e, 0x085e, +0x0964, 0x0965, +0x0e5a, 0x0e5b, +0x0f08, 0x0f08, +0x0f0d, 0x0f12, +0x104a, 0x104b, +0x1361, 0x1368, +0x166e, 0x166e, +0x16eb, 0x16ed, +0x1735, 0x1736, +0x17d4, 0x17d6, +0x17da, 0x17da, +0x1802, 0x1805, +0x1808, 0x1809, +0x1944, 0x1945, +0x1aa8, 0x1aab, +0x1b4e, 0x1b4f, +0x1b5a, 0x1b5b, +0x1b5d, 0x1b5f, +0x1b7d, 0x1b7f, +0x1c3b, 0x1c3f, +0x1c7e, 0x1c7f, +0x2024, 0x2024, +0x203c, 0x203d, +0x2047, 0x2049, +0x2cf9, 0x2cfb, +0x2e2e, 0x2e2e, +0x2e3c, 0x2e3c, +0x2e41, 0x2e41, +0x2e4c, 0x2e4c, +0x2e4e, 0x2e4f, +0x2e53, 0x2e54, +0x3001, 0x3002, +0xa4fe, 0xa4ff, +0xa60d, 0xa60f, +0xa6f3, 0xa6f7, +0xa876, 0xa877, +0xa8ce, 0xa8cf, +0xa92f, 0xa92f, +0xa9c7, 0xa9c9, +0xaa5d, 0xaa5f, +0xaadf, 0xaadf, +0xaaf0, 0xaaf1, +0xabeb, 0xabeb, +0xfe12, 0xfe12, +0xfe15, 0xfe16, +0xfe50, 0xfe52, +0xfe54, 0xfe57, +0xff01, 0xff01, +0xff0c, 0xff0c, +0xff0e, 0xff0e, +0xff1a, 0xff1b, +0xff1f, 0xff1f, +0xff61, 0xff61, +0xff64, 0xff64, +0x1039f, 0x1039f, +0x103d0, 0x103d0, +0x10857, 0x10857, +0x1091f, 0x1091f, +0x10a56, 0x10a57, +0x10af0, 0x10af5, +0x10b3a, 0x10b3f, +0x10b99, 0x10b9c, +0x10f55, 0x10f59, +0x10f86, 0x10f89, +0x11047, 0x1104d, +0x110be, 0x110c1, +0x11141, 0x11143, +0x111c5, 0x111c6, +0x111cd, 0x111cd, +0x111de, 0x111df, +0x11238, 0x1123c, +0x112a9, 0x112a9, +0x113d4, 0x113d5, +0x1144b, 0x1144d, +0x1145a, 0x1145b, +0x115c2, 0x115c5, +0x115c9, 0x115d7, +0x11641, 0x11642, +0x1173c, 0x1173e, +0x11944, 0x11944, +0x11946, 0x11946, +0x11a42, 0x11a43, +0x11a9b, 0x11a9c, +0x11aa1, 0x11aa2, +0x11c41, 0x11c43, +0x11c71, 0x11c71, +0x11ef7, 0x11ef8, +0x11f43, 0x11f44, +0x12470, 0x12474, +0x16a6e, 0x16a6f, +0x16af5, 0x16af5, +0x16b37, 0x16b39, +0x16b44, 0x16b44, +0x16d6e, 0x16d6f, +0x16e97, 0x16e98, +0x1bc9f, 0x1bc9f, +0x1da87, 0x1da8a, +}; /* END of CR_Terminal_Punctuation */ + +/* PROPERTY: 'Thaana': Script */ +static const OnigCodePoint +CR_Thaana[] = { 1, +0x0780, 0x07b1, +}; /* END of CR_Thaana */ + +/* PROPERTY: 'Thai': Script */ +static const OnigCodePoint +CR_Thai[] = { 2, +0x0e01, 0x0e3a, +0x0e40, 0x0e5b, +}; /* END of CR_Thai */ + +/* PROPERTY: 'Tibetan': Script */ +static const OnigCodePoint +CR_Tibetan[] = { 7, +0x0f00, 0x0f47, +0x0f49, 0x0f6c, +0x0f71, 0x0f97, +0x0f99, 0x0fbc, +0x0fbe, 0x0fcc, +0x0fce, 0x0fd4, +0x0fd9, 0x0fda, +}; /* END of CR_Tibetan */ + +/* PROPERTY: 'Tifinagh': Script */ +static const OnigCodePoint +CR_Tifinagh[] = { 3, +0x2d30, 0x2d67, +0x2d6f, 0x2d70, +0x2d7f, 0x2d7f, +}; /* END of CR_Tifinagh */ + +/* PROPERTY: 'Tirhuta': Script */ +static const OnigCodePoint +CR_Tirhuta[] = { 2, +0x11480, 0x114c7, +0x114d0, 0x114d9, +}; /* END of CR_Tirhuta */ + +/* PROPERTY: 'Todhri': Script */ +static const OnigCodePoint +CR_Todhri[] = { 1, +0x105c0, 0x105f3, +}; /* END of CR_Todhri */ + +/* PROPERTY: 'Toto': Script */ +static const OnigCodePoint +CR_Toto[] = { 1, +0x1e290, 0x1e2ae, +}; /* END of CR_Toto */ + +/* PROPERTY: 'Tulu_Tigalari': Script */ +static const OnigCodePoint +CR_Tulu_Tigalari[] = { 11, +0x11380, 0x11389, +0x1138b, 0x1138b, +0x1138e, 0x1138e, +0x11390, 0x113b5, +0x113b7, 0x113c0, +0x113c2, 0x113c2, +0x113c5, 0x113c5, +0x113c7, 0x113ca, +0x113cc, 0x113d5, +0x113d7, 0x113d8, +0x113e1, 0x113e2, +}; /* END of CR_Tulu_Tigalari */ + +/* PROPERTY: 'Ugaritic': Script */ +static const OnigCodePoint +CR_Ugaritic[] = { 2, +0x10380, 0x1039d, +0x1039f, 0x1039f, +}; /* END of CR_Ugaritic */ + +/* PROPERTY: 'Unified_Ideograph': Binary Property */ +static const OnigCodePoint +CR_Unified_Ideograph[] = { 17, +0x3400, 0x4dbf, +0x4e00, 0x9fff, +0xfa0e, 0xfa0f, +0xfa11, 0xfa11, +0xfa13, 0xfa14, +0xfa1f, 0xfa1f, +0xfa21, 0xfa21, +0xfa23, 0xfa24, +0xfa27, 0xfa29, +0x20000, 0x2a6df, +0x2a700, 0x2b739, +0x2b740, 0x2b81d, +0x2b820, 0x2cea1, +0x2ceb0, 0x2ebe0, +0x2ebf0, 0x2ee5d, +0x30000, 0x3134a, +0x31350, 0x323af, +}; /* END of CR_Unified_Ideograph */ + +/* PROPERTY: 'Unknown': Script */ +static const OnigCodePoint +CR_Unknown[] = { 729, +0x0378, 0x0379, +0x0380, 0x0383, +0x038b, 0x038b, +0x038d, 0x038d, +0x03a2, 0x03a2, +0x0530, 0x0530, +0x0557, 0x0558, +0x058b, 0x058c, +0x0590, 0x0590, +0x05c8, 0x05cf, +0x05eb, 0x05ee, +0x05f5, 0x05ff, +0x070e, 0x070e, +0x074b, 0x074c, +0x07b2, 0x07bf, +0x07fb, 0x07fc, +0x082e, 0x082f, +0x083f, 0x083f, +0x085c, 0x085d, +0x085f, 0x085f, +0x086b, 0x086f, +0x088f, 0x088f, +0x0892, 0x0896, +0x0984, 0x0984, +0x098d, 0x098e, +0x0991, 0x0992, +0x09a9, 0x09a9, +0x09b1, 0x09b1, +0x09b3, 0x09b5, +0x09ba, 0x09bb, +0x09c5, 0x09c6, +0x09c9, 0x09ca, +0x09cf, 0x09d6, +0x09d8, 0x09db, +0x09de, 0x09de, +0x09e4, 0x09e5, +0x09ff, 0x0a00, +0x0a04, 0x0a04, +0x0a0b, 0x0a0e, +0x0a11, 0x0a12, +0x0a29, 0x0a29, +0x0a31, 0x0a31, +0x0a34, 0x0a34, +0x0a37, 0x0a37, +0x0a3a, 0x0a3b, +0x0a3d, 0x0a3d, +0x0a43, 0x0a46, +0x0a49, 0x0a4a, +0x0a4e, 0x0a50, +0x0a52, 0x0a58, +0x0a5d, 0x0a5d, +0x0a5f, 0x0a65, +0x0a77, 0x0a80, +0x0a84, 0x0a84, +0x0a8e, 0x0a8e, +0x0a92, 0x0a92, +0x0aa9, 0x0aa9, +0x0ab1, 0x0ab1, +0x0ab4, 0x0ab4, +0x0aba, 0x0abb, +0x0ac6, 0x0ac6, +0x0aca, 0x0aca, +0x0ace, 0x0acf, +0x0ad1, 0x0adf, +0x0ae4, 0x0ae5, +0x0af2, 0x0af8, +0x0b00, 0x0b00, +0x0b04, 0x0b04, +0x0b0d, 0x0b0e, +0x0b11, 0x0b12, +0x0b29, 0x0b29, +0x0b31, 0x0b31, +0x0b34, 0x0b34, +0x0b3a, 0x0b3b, +0x0b45, 0x0b46, +0x0b49, 0x0b4a, +0x0b4e, 0x0b54, +0x0b58, 0x0b5b, +0x0b5e, 0x0b5e, +0x0b64, 0x0b65, +0x0b78, 0x0b81, +0x0b84, 0x0b84, +0x0b8b, 0x0b8d, +0x0b91, 0x0b91, +0x0b96, 0x0b98, +0x0b9b, 0x0b9b, +0x0b9d, 0x0b9d, +0x0ba0, 0x0ba2, +0x0ba5, 0x0ba7, +0x0bab, 0x0bad, +0x0bba, 0x0bbd, +0x0bc3, 0x0bc5, +0x0bc9, 0x0bc9, +0x0bce, 0x0bcf, +0x0bd1, 0x0bd6, +0x0bd8, 0x0be5, +0x0bfb, 0x0bff, +0x0c0d, 0x0c0d, +0x0c11, 0x0c11, +0x0c29, 0x0c29, +0x0c3a, 0x0c3b, +0x0c45, 0x0c45, +0x0c49, 0x0c49, +0x0c4e, 0x0c54, +0x0c57, 0x0c57, +0x0c5b, 0x0c5c, +0x0c5e, 0x0c5f, +0x0c64, 0x0c65, +0x0c70, 0x0c76, +0x0c8d, 0x0c8d, +0x0c91, 0x0c91, +0x0ca9, 0x0ca9, +0x0cb4, 0x0cb4, +0x0cba, 0x0cbb, +0x0cc5, 0x0cc5, +0x0cc9, 0x0cc9, +0x0cce, 0x0cd4, +0x0cd7, 0x0cdc, +0x0cdf, 0x0cdf, +0x0ce4, 0x0ce5, +0x0cf0, 0x0cf0, +0x0cf4, 0x0cff, +0x0d0d, 0x0d0d, +0x0d11, 0x0d11, +0x0d45, 0x0d45, +0x0d49, 0x0d49, +0x0d50, 0x0d53, +0x0d64, 0x0d65, +0x0d80, 0x0d80, +0x0d84, 0x0d84, +0x0d97, 0x0d99, +0x0db2, 0x0db2, +0x0dbc, 0x0dbc, +0x0dbe, 0x0dbf, +0x0dc7, 0x0dc9, +0x0dcb, 0x0dce, +0x0dd5, 0x0dd5, +0x0dd7, 0x0dd7, +0x0de0, 0x0de5, +0x0df0, 0x0df1, +0x0df5, 0x0e00, +0x0e3b, 0x0e3e, +0x0e5c, 0x0e80, +0x0e83, 0x0e83, +0x0e85, 0x0e85, +0x0e8b, 0x0e8b, +0x0ea4, 0x0ea4, +0x0ea6, 0x0ea6, +0x0ebe, 0x0ebf, +0x0ec5, 0x0ec5, +0x0ec7, 0x0ec7, +0x0ecf, 0x0ecf, +0x0eda, 0x0edb, +0x0ee0, 0x0eff, +0x0f48, 0x0f48, +0x0f6d, 0x0f70, +0x0f98, 0x0f98, +0x0fbd, 0x0fbd, +0x0fcd, 0x0fcd, +0x0fdb, 0x0fff, +0x10c6, 0x10c6, +0x10c8, 0x10cc, +0x10ce, 0x10cf, +0x1249, 0x1249, +0x124e, 0x124f, +0x1257, 0x1257, +0x1259, 0x1259, +0x125e, 0x125f, +0x1289, 0x1289, +0x128e, 0x128f, +0x12b1, 0x12b1, +0x12b6, 0x12b7, +0x12bf, 0x12bf, +0x12c1, 0x12c1, +0x12c6, 0x12c7, +0x12d7, 0x12d7, +0x1311, 0x1311, +0x1316, 0x1317, +0x135b, 0x135c, +0x137d, 0x137f, +0x139a, 0x139f, +0x13f6, 0x13f7, +0x13fe, 0x13ff, +0x169d, 0x169f, +0x16f9, 0x16ff, +0x1716, 0x171e, +0x1737, 0x173f, +0x1754, 0x175f, +0x176d, 0x176d, +0x1771, 0x1771, +0x1774, 0x177f, +0x17de, 0x17df, +0x17ea, 0x17ef, +0x17fa, 0x17ff, +0x181a, 0x181f, +0x1879, 0x187f, +0x18ab, 0x18af, +0x18f6, 0x18ff, +0x191f, 0x191f, +0x192c, 0x192f, +0x193c, 0x193f, +0x1941, 0x1943, +0x196e, 0x196f, +0x1975, 0x197f, +0x19ac, 0x19af, +0x19ca, 0x19cf, +0x19db, 0x19dd, +0x1a1c, 0x1a1d, +0x1a5f, 0x1a5f, +0x1a7d, 0x1a7e, +0x1a8a, 0x1a8f, +0x1a9a, 0x1a9f, +0x1aae, 0x1aaf, +0x1acf, 0x1aff, +0x1b4d, 0x1b4d, +0x1bf4, 0x1bfb, +0x1c38, 0x1c3a, +0x1c4a, 0x1c4c, +0x1c8b, 0x1c8f, +0x1cbb, 0x1cbc, +0x1cc8, 0x1ccf, +0x1cfb, 0x1cff, +0x1f16, 0x1f17, +0x1f1e, 0x1f1f, +0x1f46, 0x1f47, +0x1f4e, 0x1f4f, +0x1f58, 0x1f58, +0x1f5a, 0x1f5a, +0x1f5c, 0x1f5c, +0x1f5e, 0x1f5e, +0x1f7e, 0x1f7f, +0x1fb5, 0x1fb5, +0x1fc5, 0x1fc5, +0x1fd4, 0x1fd5, +0x1fdc, 0x1fdc, +0x1ff0, 0x1ff1, +0x1ff5, 0x1ff5, +0x1fff, 0x1fff, +0x2065, 0x2065, +0x2072, 0x2073, +0x208f, 0x208f, +0x209d, 0x209f, +0x20c1, 0x20cf, +0x20f1, 0x20ff, +0x218c, 0x218f, +0x242a, 0x243f, +0x244b, 0x245f, +0x2b74, 0x2b75, +0x2b96, 0x2b96, +0x2cf4, 0x2cf8, +0x2d26, 0x2d26, +0x2d28, 0x2d2c, +0x2d2e, 0x2d2f, +0x2d68, 0x2d6e, +0x2d71, 0x2d7e, +0x2d97, 0x2d9f, +0x2da7, 0x2da7, +0x2daf, 0x2daf, +0x2db7, 0x2db7, +0x2dbf, 0x2dbf, +0x2dc7, 0x2dc7, +0x2dcf, 0x2dcf, +0x2dd7, 0x2dd7, +0x2ddf, 0x2ddf, +0x2e5e, 0x2e7f, +0x2e9a, 0x2e9a, +0x2ef4, 0x2eff, +0x2fd6, 0x2fef, +0x3040, 0x3040, +0x3097, 0x3098, +0x3100, 0x3104, +0x3130, 0x3130, +0x318f, 0x318f, +0x31e6, 0x31ee, +0x321f, 0x321f, +0xa48d, 0xa48f, +0xa4c7, 0xa4cf, +0xa62c, 0xa63f, +0xa6f8, 0xa6ff, +0xa7ce, 0xa7cf, +0xa7d2, 0xa7d2, +0xa7d4, 0xa7d4, +0xa7dd, 0xa7f1, +0xa82d, 0xa82f, +0xa83a, 0xa83f, +0xa878, 0xa87f, +0xa8c6, 0xa8cd, +0xa8da, 0xa8df, +0xa954, 0xa95e, +0xa97d, 0xa97f, +0xa9ce, 0xa9ce, +0xa9da, 0xa9dd, +0xa9ff, 0xa9ff, +0xaa37, 0xaa3f, +0xaa4e, 0xaa4f, +0xaa5a, 0xaa5b, +0xaac3, 0xaada, +0xaaf7, 0xab00, +0xab07, 0xab08, +0xab0f, 0xab10, +0xab17, 0xab1f, +0xab27, 0xab27, +0xab2f, 0xab2f, +0xab6c, 0xab6f, +0xabee, 0xabef, +0xabfa, 0xabff, +0xd7a4, 0xd7af, +0xd7c7, 0xd7ca, +0xd7fc, 0xf8ff, +0xfa6e, 0xfa6f, +0xfada, 0xfaff, +0xfb07, 0xfb12, +0xfb18, 0xfb1c, +0xfb37, 0xfb37, +0xfb3d, 0xfb3d, +0xfb3f, 0xfb3f, +0xfb42, 0xfb42, +0xfb45, 0xfb45, +0xfbc3, 0xfbd2, +0xfd90, 0xfd91, +0xfdc8, 0xfdce, +0xfdd0, 0xfdef, +0xfe1a, 0xfe1f, +0xfe53, 0xfe53, +0xfe67, 0xfe67, +0xfe6c, 0xfe6f, +0xfe75, 0xfe75, +0xfefd, 0xfefe, +0xff00, 0xff00, +0xffbf, 0xffc1, +0xffc8, 0xffc9, +0xffd0, 0xffd1, +0xffd8, 0xffd9, +0xffdd, 0xffdf, +0xffe7, 0xffe7, +0xffef, 0xfff8, +0xfffe, 0xffff, +0x1000c, 0x1000c, +0x10027, 0x10027, +0x1003b, 0x1003b, +0x1003e, 0x1003e, +0x1004e, 0x1004f, +0x1005e, 0x1007f, +0x100fb, 0x100ff, +0x10103, 0x10106, +0x10134, 0x10136, +0x1018f, 0x1018f, +0x1019d, 0x1019f, +0x101a1, 0x101cf, +0x101fe, 0x1027f, +0x1029d, 0x1029f, +0x102d1, 0x102df, +0x102fc, 0x102ff, +0x10324, 0x1032c, +0x1034b, 0x1034f, +0x1037b, 0x1037f, +0x1039e, 0x1039e, +0x103c4, 0x103c7, +0x103d6, 0x103ff, +0x1049e, 0x1049f, +0x104aa, 0x104af, +0x104d4, 0x104d7, +0x104fc, 0x104ff, +0x10528, 0x1052f, +0x10564, 0x1056e, +0x1057b, 0x1057b, +0x1058b, 0x1058b, +0x10593, 0x10593, +0x10596, 0x10596, +0x105a2, 0x105a2, +0x105b2, 0x105b2, +0x105ba, 0x105ba, +0x105bd, 0x105bf, +0x105f4, 0x105ff, +0x10737, 0x1073f, +0x10756, 0x1075f, +0x10768, 0x1077f, +0x10786, 0x10786, +0x107b1, 0x107b1, +0x107bb, 0x107ff, +0x10806, 0x10807, +0x10809, 0x10809, +0x10836, 0x10836, +0x10839, 0x1083b, +0x1083d, 0x1083e, +0x10856, 0x10856, +0x1089f, 0x108a6, +0x108b0, 0x108df, +0x108f3, 0x108f3, +0x108f6, 0x108fa, +0x1091c, 0x1091e, +0x1093a, 0x1093e, +0x10940, 0x1097f, +0x109b8, 0x109bb, +0x109d0, 0x109d1, +0x10a04, 0x10a04, +0x10a07, 0x10a0b, +0x10a14, 0x10a14, +0x10a18, 0x10a18, +0x10a36, 0x10a37, +0x10a3b, 0x10a3e, +0x10a49, 0x10a4f, +0x10a59, 0x10a5f, +0x10aa0, 0x10abf, +0x10ae7, 0x10aea, +0x10af7, 0x10aff, +0x10b36, 0x10b38, +0x10b56, 0x10b57, +0x10b73, 0x10b77, +0x10b92, 0x10b98, +0x10b9d, 0x10ba8, +0x10bb0, 0x10bff, +0x10c49, 0x10c7f, +0x10cb3, 0x10cbf, +0x10cf3, 0x10cf9, +0x10d28, 0x10d2f, +0x10d3a, 0x10d3f, +0x10d66, 0x10d68, +0x10d86, 0x10d8d, +0x10d90, 0x10e5f, +0x10e7f, 0x10e7f, +0x10eaa, 0x10eaa, +0x10eae, 0x10eaf, +0x10eb2, 0x10ec1, +0x10ec5, 0x10efb, +0x10f28, 0x10f2f, +0x10f5a, 0x10f6f, +0x10f8a, 0x10faf, +0x10fcc, 0x10fdf, +0x10ff7, 0x10fff, +0x1104e, 0x11051, +0x11076, 0x1107e, +0x110c3, 0x110cc, +0x110ce, 0x110cf, +0x110e9, 0x110ef, +0x110fa, 0x110ff, +0x11135, 0x11135, +0x11148, 0x1114f, +0x11177, 0x1117f, +0x111e0, 0x111e0, +0x111f5, 0x111ff, +0x11212, 0x11212, +0x11242, 0x1127f, +0x11287, 0x11287, +0x11289, 0x11289, +0x1128e, 0x1128e, +0x1129e, 0x1129e, +0x112aa, 0x112af, +0x112eb, 0x112ef, +0x112fa, 0x112ff, +0x11304, 0x11304, +0x1130d, 0x1130e, +0x11311, 0x11312, +0x11329, 0x11329, +0x11331, 0x11331, +0x11334, 0x11334, +0x1133a, 0x1133a, +0x11345, 0x11346, +0x11349, 0x1134a, +0x1134e, 0x1134f, +0x11351, 0x11356, +0x11358, 0x1135c, +0x11364, 0x11365, +0x1136d, 0x1136f, +0x11375, 0x1137f, +0x1138a, 0x1138a, +0x1138c, 0x1138d, +0x1138f, 0x1138f, +0x113b6, 0x113b6, +0x113c1, 0x113c1, +0x113c3, 0x113c4, +0x113c6, 0x113c6, +0x113cb, 0x113cb, +0x113d6, 0x113d6, +0x113d9, 0x113e0, +0x113e3, 0x113ff, +0x1145c, 0x1145c, +0x11462, 0x1147f, +0x114c8, 0x114cf, +0x114da, 0x1157f, +0x115b6, 0x115b7, +0x115de, 0x115ff, +0x11645, 0x1164f, +0x1165a, 0x1165f, +0x1166d, 0x1167f, +0x116ba, 0x116bf, +0x116ca, 0x116cf, +0x116e4, 0x116ff, +0x1171b, 0x1171c, +0x1172c, 0x1172f, +0x11747, 0x117ff, +0x1183c, 0x1189f, +0x118f3, 0x118fe, +0x11907, 0x11908, +0x1190a, 0x1190b, +0x11914, 0x11914, +0x11917, 0x11917, +0x11936, 0x11936, +0x11939, 0x1193a, +0x11947, 0x1194f, +0x1195a, 0x1199f, +0x119a8, 0x119a9, +0x119d8, 0x119d9, +0x119e5, 0x119ff, +0x11a48, 0x11a4f, +0x11aa3, 0x11aaf, +0x11af9, 0x11aff, +0x11b0a, 0x11bbf, +0x11be2, 0x11bef, +0x11bfa, 0x11bff, +0x11c09, 0x11c09, +0x11c37, 0x11c37, +0x11c46, 0x11c4f, +0x11c6d, 0x11c6f, +0x11c90, 0x11c91, +0x11ca8, 0x11ca8, +0x11cb7, 0x11cff, +0x11d07, 0x11d07, +0x11d0a, 0x11d0a, +0x11d37, 0x11d39, +0x11d3b, 0x11d3b, +0x11d3e, 0x11d3e, +0x11d48, 0x11d4f, +0x11d5a, 0x11d5f, +0x11d66, 0x11d66, +0x11d69, 0x11d69, +0x11d8f, 0x11d8f, +0x11d92, 0x11d92, +0x11d99, 0x11d9f, +0x11daa, 0x11edf, +0x11ef9, 0x11eff, +0x11f11, 0x11f11, +0x11f3b, 0x11f3d, +0x11f5b, 0x11faf, +0x11fb1, 0x11fbf, +0x11ff2, 0x11ffe, +0x1239a, 0x123ff, +0x1246f, 0x1246f, +0x12475, 0x1247f, +0x12544, 0x12f8f, +0x12ff3, 0x12fff, +0x13456, 0x1345f, +0x143fb, 0x143ff, +0x14647, 0x160ff, +0x1613a, 0x167ff, +0x16a39, 0x16a3f, +0x16a5f, 0x16a5f, +0x16a6a, 0x16a6d, +0x16abf, 0x16abf, +0x16aca, 0x16acf, +0x16aee, 0x16aef, +0x16af6, 0x16aff, +0x16b46, 0x16b4f, +0x16b5a, 0x16b5a, +0x16b62, 0x16b62, +0x16b78, 0x16b7c, +0x16b90, 0x16d3f, +0x16d7a, 0x16e3f, +0x16e9b, 0x16eff, +0x16f4b, 0x16f4e, +0x16f88, 0x16f8e, +0x16fa0, 0x16fdf, +0x16fe5, 0x16fef, +0x16ff2, 0x16fff, +0x187f8, 0x187ff, +0x18cd6, 0x18cfe, +0x18d09, 0x1afef, +0x1aff4, 0x1aff4, +0x1affc, 0x1affc, +0x1afff, 0x1afff, +0x1b123, 0x1b131, +0x1b133, 0x1b14f, +0x1b153, 0x1b154, +0x1b156, 0x1b163, +0x1b168, 0x1b16f, +0x1b2fc, 0x1bbff, +0x1bc6b, 0x1bc6f, +0x1bc7d, 0x1bc7f, +0x1bc89, 0x1bc8f, +0x1bc9a, 0x1bc9b, +0x1bca4, 0x1cbff, +0x1ccfa, 0x1ccff, +0x1ceb4, 0x1ceff, +0x1cf2e, 0x1cf2f, +0x1cf47, 0x1cf4f, +0x1cfc4, 0x1cfff, +0x1d0f6, 0x1d0ff, +0x1d127, 0x1d128, +0x1d1eb, 0x1d1ff, +0x1d246, 0x1d2bf, +0x1d2d4, 0x1d2df, +0x1d2f4, 0x1d2ff, +0x1d357, 0x1d35f, +0x1d379, 0x1d3ff, +0x1d455, 0x1d455, +0x1d49d, 0x1d49d, +0x1d4a0, 0x1d4a1, +0x1d4a3, 0x1d4a4, +0x1d4a7, 0x1d4a8, +0x1d4ad, 0x1d4ad, +0x1d4ba, 0x1d4ba, +0x1d4bc, 0x1d4bc, +0x1d4c4, 0x1d4c4, +0x1d506, 0x1d506, +0x1d50b, 0x1d50c, +0x1d515, 0x1d515, +0x1d51d, 0x1d51d, +0x1d53a, 0x1d53a, +0x1d53f, 0x1d53f, +0x1d545, 0x1d545, +0x1d547, 0x1d549, +0x1d551, 0x1d551, +0x1d6a6, 0x1d6a7, +0x1d7cc, 0x1d7cd, +0x1da8c, 0x1da9a, +0x1daa0, 0x1daa0, +0x1dab0, 0x1deff, +0x1df1f, 0x1df24, +0x1df2b, 0x1dfff, +0x1e007, 0x1e007, +0x1e019, 0x1e01a, +0x1e022, 0x1e022, +0x1e025, 0x1e025, +0x1e02b, 0x1e02f, +0x1e06e, 0x1e08e, +0x1e090, 0x1e0ff, +0x1e12d, 0x1e12f, +0x1e13e, 0x1e13f, +0x1e14a, 0x1e14d, +0x1e150, 0x1e28f, +0x1e2af, 0x1e2bf, +0x1e2fa, 0x1e2fe, +0x1e300, 0x1e4cf, +0x1e4fa, 0x1e5cf, +0x1e5fb, 0x1e5fe, +0x1e600, 0x1e7df, +0x1e7e7, 0x1e7e7, +0x1e7ec, 0x1e7ec, +0x1e7ef, 0x1e7ef, +0x1e7ff, 0x1e7ff, +0x1e8c5, 0x1e8c6, +0x1e8d7, 0x1e8ff, +0x1e94c, 0x1e94f, +0x1e95a, 0x1e95d, +0x1e960, 0x1ec70, +0x1ecb5, 0x1ed00, +0x1ed3e, 0x1edff, +0x1ee04, 0x1ee04, +0x1ee20, 0x1ee20, +0x1ee23, 0x1ee23, +0x1ee25, 0x1ee26, +0x1ee28, 0x1ee28, +0x1ee33, 0x1ee33, +0x1ee38, 0x1ee38, +0x1ee3a, 0x1ee3a, +0x1ee3c, 0x1ee41, +0x1ee43, 0x1ee46, +0x1ee48, 0x1ee48, +0x1ee4a, 0x1ee4a, +0x1ee4c, 0x1ee4c, +0x1ee50, 0x1ee50, +0x1ee53, 0x1ee53, +0x1ee55, 0x1ee56, +0x1ee58, 0x1ee58, +0x1ee5a, 0x1ee5a, +0x1ee5c, 0x1ee5c, +0x1ee5e, 0x1ee5e, +0x1ee60, 0x1ee60, +0x1ee63, 0x1ee63, +0x1ee65, 0x1ee66, +0x1ee6b, 0x1ee6b, +0x1ee73, 0x1ee73, +0x1ee78, 0x1ee78, +0x1ee7d, 0x1ee7d, +0x1ee7f, 0x1ee7f, +0x1ee8a, 0x1ee8a, +0x1ee9c, 0x1eea0, +0x1eea4, 0x1eea4, +0x1eeaa, 0x1eeaa, +0x1eebc, 0x1eeef, +0x1eef2, 0x1efff, +0x1f02c, 0x1f02f, +0x1f094, 0x1f09f, +0x1f0af, 0x1f0b0, +0x1f0c0, 0x1f0c0, +0x1f0d0, 0x1f0d0, +0x1f0f6, 0x1f0ff, +0x1f1ae, 0x1f1e5, +0x1f203, 0x1f20f, +0x1f23c, 0x1f23f, +0x1f249, 0x1f24f, +0x1f252, 0x1f25f, +0x1f266, 0x1f2ff, +0x1f6d8, 0x1f6db, +0x1f6ed, 0x1f6ef, +0x1f6fd, 0x1f6ff, +0x1f777, 0x1f77a, +0x1f7da, 0x1f7df, +0x1f7ec, 0x1f7ef, +0x1f7f1, 0x1f7ff, +0x1f80c, 0x1f80f, +0x1f848, 0x1f84f, +0x1f85a, 0x1f85f, +0x1f888, 0x1f88f, +0x1f8ae, 0x1f8af, +0x1f8bc, 0x1f8bf, +0x1f8c2, 0x1f8ff, +0x1fa54, 0x1fa5f, +0x1fa6e, 0x1fa6f, +0x1fa7d, 0x1fa7f, +0x1fa8a, 0x1fa8e, +0x1fac7, 0x1facd, +0x1fadd, 0x1fade, +0x1faea, 0x1faef, +0x1faf9, 0x1faff, +0x1fb93, 0x1fb93, +0x1fbfa, 0x1ffff, +0x2a6e0, 0x2a6ff, +0x2b73a, 0x2b73f, +0x2b81e, 0x2b81f, +0x2cea2, 0x2ceaf, +0x2ebe1, 0x2ebef, +0x2ee5e, 0x2f7ff, +0x2fa1e, 0x2ffff, +0x3134b, 0x3134f, +0x323b0, 0xe0000, +0xe0002, 0xe001f, +0xe0080, 0xe00ff, +0xe01f0, 0x10ffff, +}; /* END of CR_Unknown */ + +/* PROPERTY: 'Uppercase': Derived Property */ +#define CR_Uppercase CR_Upper + +/* PROPERTY: 'Vai': Script */ +static const OnigCodePoint +CR_Vai[] = { 1, +0xa500, 0xa62b, +}; /* END of CR_Vai */ + +/* PROPERTY: 'Variation_Selector': Binary Property */ +static const OnigCodePoint +CR_Variation_Selector[] = { 4, +0x180b, 0x180d, +0x180f, 0x180f, +0xfe00, 0xfe0f, +0xe0100, 0xe01ef, +}; /* END of CR_Variation_Selector */ + +/* PROPERTY: 'Vithkuqi': Script */ +static const OnigCodePoint +CR_Vithkuqi[] = { 8, +0x10570, 0x1057a, +0x1057c, 0x1058a, +0x1058c, 0x10592, +0x10594, 0x10595, +0x10597, 0x105a1, +0x105a3, 0x105b1, +0x105b3, 0x105b9, +0x105bb, 0x105bc, +}; /* END of CR_Vithkuqi */ + +/* PROPERTY: 'Wancho': Script */ +static const OnigCodePoint +CR_Wancho[] = { 2, +0x1e2c0, 0x1e2f9, +0x1e2ff, 0x1e2ff, +}; /* END of CR_Wancho */ + +/* PROPERTY: 'Warang_Citi': Script */ +static const OnigCodePoint +CR_Warang_Citi[] = { 2, +0x118a0, 0x118f2, +0x118ff, 0x118ff, +}; /* END of CR_Warang_Citi */ + +/* PROPERTY: 'White_Space': Binary Property */ +#define CR_White_Space CR_Space + +/* PROPERTY: 'XID_Continue': Derived Property */ +static const OnigCodePoint +CR_XID_Continue[] = { 800, +0x0030, 0x0039, +0x0041, 0x005a, +0x005f, 0x005f, +0x0061, 0x007a, +0x00aa, 0x00aa, +0x00b5, 0x00b5, +0x00b7, 0x00b7, +0x00ba, 0x00ba, +0x00c0, 0x00d6, +0x00d8, 0x00f6, +0x00f8, 0x02c1, +0x02c6, 0x02d1, +0x02e0, 0x02e4, +0x02ec, 0x02ec, +0x02ee, 0x02ee, +0x0300, 0x0374, +0x0376, 0x0377, +0x037b, 0x037d, +0x037f, 0x037f, +0x0386, 0x038a, +0x038c, 0x038c, +0x038e, 0x03a1, +0x03a3, 0x03f5, +0x03f7, 0x0481, +0x0483, 0x0487, +0x048a, 0x052f, +0x0531, 0x0556, +0x0559, 0x0559, +0x0560, 0x0588, +0x0591, 0x05bd, +0x05bf, 0x05bf, +0x05c1, 0x05c2, +0x05c4, 0x05c5, +0x05c7, 0x05c7, +0x05d0, 0x05ea, +0x05ef, 0x05f2, +0x0610, 0x061a, +0x0620, 0x0669, +0x066e, 0x06d3, +0x06d5, 0x06dc, +0x06df, 0x06e8, +0x06ea, 0x06fc, +0x06ff, 0x06ff, +0x0710, 0x074a, +0x074d, 0x07b1, +0x07c0, 0x07f5, +0x07fa, 0x07fa, +0x07fd, 0x07fd, +0x0800, 0x082d, +0x0840, 0x085b, +0x0860, 0x086a, +0x0870, 0x0887, +0x0889, 0x088e, +0x0897, 0x08e1, +0x08e3, 0x0963, +0x0966, 0x096f, +0x0971, 0x0983, +0x0985, 0x098c, +0x098f, 0x0990, +0x0993, 0x09a8, +0x09aa, 0x09b0, +0x09b2, 0x09b2, +0x09b6, 0x09b9, +0x09bc, 0x09c4, +0x09c7, 0x09c8, +0x09cb, 0x09ce, +0x09d7, 0x09d7, +0x09dc, 0x09dd, +0x09df, 0x09e3, +0x09e6, 0x09f1, +0x09fc, 0x09fc, +0x09fe, 0x09fe, +0x0a01, 0x0a03, +0x0a05, 0x0a0a, +0x0a0f, 0x0a10, +0x0a13, 0x0a28, +0x0a2a, 0x0a30, +0x0a32, 0x0a33, +0x0a35, 0x0a36, +0x0a38, 0x0a39, +0x0a3c, 0x0a3c, +0x0a3e, 0x0a42, +0x0a47, 0x0a48, +0x0a4b, 0x0a4d, +0x0a51, 0x0a51, +0x0a59, 0x0a5c, +0x0a5e, 0x0a5e, +0x0a66, 0x0a75, +0x0a81, 0x0a83, +0x0a85, 0x0a8d, +0x0a8f, 0x0a91, +0x0a93, 0x0aa8, +0x0aaa, 0x0ab0, +0x0ab2, 0x0ab3, +0x0ab5, 0x0ab9, +0x0abc, 0x0ac5, +0x0ac7, 0x0ac9, +0x0acb, 0x0acd, +0x0ad0, 0x0ad0, +0x0ae0, 0x0ae3, +0x0ae6, 0x0aef, +0x0af9, 0x0aff, +0x0b01, 0x0b03, +0x0b05, 0x0b0c, +0x0b0f, 0x0b10, +0x0b13, 0x0b28, +0x0b2a, 0x0b30, +0x0b32, 0x0b33, +0x0b35, 0x0b39, +0x0b3c, 0x0b44, +0x0b47, 0x0b48, +0x0b4b, 0x0b4d, +0x0b55, 0x0b57, +0x0b5c, 0x0b5d, +0x0b5f, 0x0b63, +0x0b66, 0x0b6f, +0x0b71, 0x0b71, +0x0b82, 0x0b83, +0x0b85, 0x0b8a, +0x0b8e, 0x0b90, +0x0b92, 0x0b95, +0x0b99, 0x0b9a, +0x0b9c, 0x0b9c, +0x0b9e, 0x0b9f, +0x0ba3, 0x0ba4, +0x0ba8, 0x0baa, +0x0bae, 0x0bb9, +0x0bbe, 0x0bc2, +0x0bc6, 0x0bc8, +0x0bca, 0x0bcd, +0x0bd0, 0x0bd0, +0x0bd7, 0x0bd7, +0x0be6, 0x0bef, +0x0c00, 0x0c0c, +0x0c0e, 0x0c10, +0x0c12, 0x0c28, +0x0c2a, 0x0c39, +0x0c3c, 0x0c44, +0x0c46, 0x0c48, +0x0c4a, 0x0c4d, +0x0c55, 0x0c56, +0x0c58, 0x0c5a, +0x0c5d, 0x0c5d, +0x0c60, 0x0c63, +0x0c66, 0x0c6f, +0x0c80, 0x0c83, +0x0c85, 0x0c8c, +0x0c8e, 0x0c90, +0x0c92, 0x0ca8, +0x0caa, 0x0cb3, +0x0cb5, 0x0cb9, +0x0cbc, 0x0cc4, +0x0cc6, 0x0cc8, +0x0cca, 0x0ccd, +0x0cd5, 0x0cd6, +0x0cdd, 0x0cde, +0x0ce0, 0x0ce3, +0x0ce6, 0x0cef, +0x0cf1, 0x0cf3, +0x0d00, 0x0d0c, +0x0d0e, 0x0d10, +0x0d12, 0x0d44, +0x0d46, 0x0d48, +0x0d4a, 0x0d4e, +0x0d54, 0x0d57, +0x0d5f, 0x0d63, +0x0d66, 0x0d6f, +0x0d7a, 0x0d7f, +0x0d81, 0x0d83, +0x0d85, 0x0d96, +0x0d9a, 0x0db1, +0x0db3, 0x0dbb, +0x0dbd, 0x0dbd, +0x0dc0, 0x0dc6, +0x0dca, 0x0dca, +0x0dcf, 0x0dd4, +0x0dd6, 0x0dd6, +0x0dd8, 0x0ddf, +0x0de6, 0x0def, +0x0df2, 0x0df3, +0x0e01, 0x0e3a, +0x0e40, 0x0e4e, +0x0e50, 0x0e59, +0x0e81, 0x0e82, +0x0e84, 0x0e84, +0x0e86, 0x0e8a, +0x0e8c, 0x0ea3, +0x0ea5, 0x0ea5, +0x0ea7, 0x0ebd, +0x0ec0, 0x0ec4, +0x0ec6, 0x0ec6, +0x0ec8, 0x0ece, +0x0ed0, 0x0ed9, +0x0edc, 0x0edf, +0x0f00, 0x0f00, +0x0f18, 0x0f19, +0x0f20, 0x0f29, +0x0f35, 0x0f35, +0x0f37, 0x0f37, +0x0f39, 0x0f39, +0x0f3e, 0x0f47, +0x0f49, 0x0f6c, +0x0f71, 0x0f84, +0x0f86, 0x0f97, +0x0f99, 0x0fbc, +0x0fc6, 0x0fc6, +0x1000, 0x1049, +0x1050, 0x109d, +0x10a0, 0x10c5, +0x10c7, 0x10c7, +0x10cd, 0x10cd, +0x10d0, 0x10fa, +0x10fc, 0x1248, +0x124a, 0x124d, +0x1250, 0x1256, +0x1258, 0x1258, +0x125a, 0x125d, +0x1260, 0x1288, +0x128a, 0x128d, +0x1290, 0x12b0, +0x12b2, 0x12b5, +0x12b8, 0x12be, +0x12c0, 0x12c0, +0x12c2, 0x12c5, +0x12c8, 0x12d6, +0x12d8, 0x1310, +0x1312, 0x1315, +0x1318, 0x135a, +0x135d, 0x135f, +0x1369, 0x1371, +0x1380, 0x138f, +0x13a0, 0x13f5, +0x13f8, 0x13fd, +0x1401, 0x166c, +0x166f, 0x167f, +0x1681, 0x169a, +0x16a0, 0x16ea, +0x16ee, 0x16f8, +0x1700, 0x1715, +0x171f, 0x1734, +0x1740, 0x1753, +0x1760, 0x176c, +0x176e, 0x1770, +0x1772, 0x1773, +0x1780, 0x17d3, +0x17d7, 0x17d7, +0x17dc, 0x17dd, +0x17e0, 0x17e9, +0x180b, 0x180d, +0x180f, 0x1819, +0x1820, 0x1878, +0x1880, 0x18aa, +0x18b0, 0x18f5, +0x1900, 0x191e, +0x1920, 0x192b, +0x1930, 0x193b, +0x1946, 0x196d, +0x1970, 0x1974, +0x1980, 0x19ab, +0x19b0, 0x19c9, +0x19d0, 0x19da, +0x1a00, 0x1a1b, +0x1a20, 0x1a5e, +0x1a60, 0x1a7c, +0x1a7f, 0x1a89, +0x1a90, 0x1a99, +0x1aa7, 0x1aa7, +0x1ab0, 0x1abd, +0x1abf, 0x1ace, +0x1b00, 0x1b4c, +0x1b50, 0x1b59, +0x1b6b, 0x1b73, +0x1b80, 0x1bf3, +0x1c00, 0x1c37, +0x1c40, 0x1c49, +0x1c4d, 0x1c7d, +0x1c80, 0x1c8a, +0x1c90, 0x1cba, +0x1cbd, 0x1cbf, +0x1cd0, 0x1cd2, +0x1cd4, 0x1cfa, +0x1d00, 0x1f15, +0x1f18, 0x1f1d, +0x1f20, 0x1f45, +0x1f48, 0x1f4d, +0x1f50, 0x1f57, +0x1f59, 0x1f59, +0x1f5b, 0x1f5b, +0x1f5d, 0x1f5d, +0x1f5f, 0x1f7d, +0x1f80, 0x1fb4, +0x1fb6, 0x1fbc, +0x1fbe, 0x1fbe, +0x1fc2, 0x1fc4, +0x1fc6, 0x1fcc, +0x1fd0, 0x1fd3, +0x1fd6, 0x1fdb, +0x1fe0, 0x1fec, +0x1ff2, 0x1ff4, +0x1ff6, 0x1ffc, +0x200c, 0x200d, +0x203f, 0x2040, +0x2054, 0x2054, +0x2071, 0x2071, +0x207f, 0x207f, +0x2090, 0x209c, +0x20d0, 0x20dc, +0x20e1, 0x20e1, +0x20e5, 0x20f0, +0x2102, 0x2102, +0x2107, 0x2107, +0x210a, 0x2113, +0x2115, 0x2115, +0x2118, 0x211d, +0x2124, 0x2124, +0x2126, 0x2126, +0x2128, 0x2128, +0x212a, 0x2139, +0x213c, 0x213f, +0x2145, 0x2149, +0x214e, 0x214e, +0x2160, 0x2188, +0x2c00, 0x2ce4, +0x2ceb, 0x2cf3, +0x2d00, 0x2d25, +0x2d27, 0x2d27, +0x2d2d, 0x2d2d, +0x2d30, 0x2d67, +0x2d6f, 0x2d6f, +0x2d7f, 0x2d96, +0x2da0, 0x2da6, +0x2da8, 0x2dae, +0x2db0, 0x2db6, +0x2db8, 0x2dbe, +0x2dc0, 0x2dc6, +0x2dc8, 0x2dce, +0x2dd0, 0x2dd6, +0x2dd8, 0x2dde, +0x2de0, 0x2dff, +0x3005, 0x3007, +0x3021, 0x302f, +0x3031, 0x3035, +0x3038, 0x303c, +0x3041, 0x3096, +0x3099, 0x309a, +0x309d, 0x309f, +0x30a1, 0x30ff, +0x3105, 0x312f, +0x3131, 0x318e, +0x31a0, 0x31bf, +0x31f0, 0x31ff, +0x3400, 0x4dbf, +0x4e00, 0xa48c, +0xa4d0, 0xa4fd, +0xa500, 0xa60c, +0xa610, 0xa62b, +0xa640, 0xa66f, +0xa674, 0xa67d, +0xa67f, 0xa6f1, +0xa717, 0xa71f, +0xa722, 0xa788, +0xa78b, 0xa7cd, +0xa7d0, 0xa7d1, +0xa7d3, 0xa7d3, +0xa7d5, 0xa7dc, +0xa7f2, 0xa827, +0xa82c, 0xa82c, +0xa840, 0xa873, +0xa880, 0xa8c5, +0xa8d0, 0xa8d9, +0xa8e0, 0xa8f7, +0xa8fb, 0xa8fb, +0xa8fd, 0xa92d, +0xa930, 0xa953, +0xa960, 0xa97c, +0xa980, 0xa9c0, +0xa9cf, 0xa9d9, +0xa9e0, 0xa9fe, +0xaa00, 0xaa36, +0xaa40, 0xaa4d, +0xaa50, 0xaa59, +0xaa60, 0xaa76, +0xaa7a, 0xaac2, +0xaadb, 0xaadd, +0xaae0, 0xaaef, +0xaaf2, 0xaaf6, +0xab01, 0xab06, +0xab09, 0xab0e, +0xab11, 0xab16, +0xab20, 0xab26, +0xab28, 0xab2e, +0xab30, 0xab5a, +0xab5c, 0xab69, +0xab70, 0xabea, +0xabec, 0xabed, +0xabf0, 0xabf9, +0xac00, 0xd7a3, +0xd7b0, 0xd7c6, +0xd7cb, 0xd7fb, +0xf900, 0xfa6d, +0xfa70, 0xfad9, +0xfb00, 0xfb06, +0xfb13, 0xfb17, +0xfb1d, 0xfb28, +0xfb2a, 0xfb36, +0xfb38, 0xfb3c, +0xfb3e, 0xfb3e, +0xfb40, 0xfb41, +0xfb43, 0xfb44, +0xfb46, 0xfbb1, +0xfbd3, 0xfc5d, +0xfc64, 0xfd3d, +0xfd50, 0xfd8f, +0xfd92, 0xfdc7, +0xfdf0, 0xfdf9, +0xfe00, 0xfe0f, +0xfe20, 0xfe2f, +0xfe33, 0xfe34, +0xfe4d, 0xfe4f, +0xfe71, 0xfe71, +0xfe73, 0xfe73, +0xfe77, 0xfe77, +0xfe79, 0xfe79, +0xfe7b, 0xfe7b, +0xfe7d, 0xfe7d, +0xfe7f, 0xfefc, +0xff10, 0xff19, +0xff21, 0xff3a, +0xff3f, 0xff3f, +0xff41, 0xff5a, +0xff65, 0xffbe, +0xffc2, 0xffc7, +0xffca, 0xffcf, +0xffd2, 0xffd7, +0xffda, 0xffdc, +0x10000, 0x1000b, +0x1000d, 0x10026, +0x10028, 0x1003a, +0x1003c, 0x1003d, +0x1003f, 0x1004d, +0x10050, 0x1005d, +0x10080, 0x100fa, +0x10140, 0x10174, +0x101fd, 0x101fd, +0x10280, 0x1029c, +0x102a0, 0x102d0, +0x102e0, 0x102e0, +0x10300, 0x1031f, +0x1032d, 0x1034a, +0x10350, 0x1037a, +0x10380, 0x1039d, +0x103a0, 0x103c3, +0x103c8, 0x103cf, +0x103d1, 0x103d5, +0x10400, 0x1049d, +0x104a0, 0x104a9, +0x104b0, 0x104d3, +0x104d8, 0x104fb, +0x10500, 0x10527, +0x10530, 0x10563, +0x10570, 0x1057a, +0x1057c, 0x1058a, +0x1058c, 0x10592, +0x10594, 0x10595, +0x10597, 0x105a1, +0x105a3, 0x105b1, +0x105b3, 0x105b9, +0x105bb, 0x105bc, +0x105c0, 0x105f3, +0x10600, 0x10736, +0x10740, 0x10755, +0x10760, 0x10767, +0x10780, 0x10785, +0x10787, 0x107b0, +0x107b2, 0x107ba, +0x10800, 0x10805, +0x10808, 0x10808, +0x1080a, 0x10835, +0x10837, 0x10838, +0x1083c, 0x1083c, +0x1083f, 0x10855, +0x10860, 0x10876, +0x10880, 0x1089e, +0x108e0, 0x108f2, +0x108f4, 0x108f5, +0x10900, 0x10915, +0x10920, 0x10939, +0x10980, 0x109b7, +0x109be, 0x109bf, +0x10a00, 0x10a03, +0x10a05, 0x10a06, +0x10a0c, 0x10a13, +0x10a15, 0x10a17, +0x10a19, 0x10a35, +0x10a38, 0x10a3a, +0x10a3f, 0x10a3f, +0x10a60, 0x10a7c, +0x10a80, 0x10a9c, +0x10ac0, 0x10ac7, +0x10ac9, 0x10ae6, +0x10b00, 0x10b35, +0x10b40, 0x10b55, +0x10b60, 0x10b72, +0x10b80, 0x10b91, +0x10c00, 0x10c48, +0x10c80, 0x10cb2, +0x10cc0, 0x10cf2, +0x10d00, 0x10d27, +0x10d30, 0x10d39, +0x10d40, 0x10d65, +0x10d69, 0x10d6d, +0x10d6f, 0x10d85, +0x10e80, 0x10ea9, +0x10eab, 0x10eac, +0x10eb0, 0x10eb1, +0x10ec2, 0x10ec4, +0x10efc, 0x10f1c, +0x10f27, 0x10f27, +0x10f30, 0x10f50, +0x10f70, 0x10f85, +0x10fb0, 0x10fc4, +0x10fe0, 0x10ff6, +0x11000, 0x11046, +0x11066, 0x11075, +0x1107f, 0x110ba, +0x110c2, 0x110c2, +0x110d0, 0x110e8, +0x110f0, 0x110f9, +0x11100, 0x11134, +0x11136, 0x1113f, +0x11144, 0x11147, +0x11150, 0x11173, +0x11176, 0x11176, +0x11180, 0x111c4, +0x111c9, 0x111cc, +0x111ce, 0x111da, +0x111dc, 0x111dc, +0x11200, 0x11211, +0x11213, 0x11237, +0x1123e, 0x11241, +0x11280, 0x11286, +0x11288, 0x11288, +0x1128a, 0x1128d, +0x1128f, 0x1129d, +0x1129f, 0x112a8, +0x112b0, 0x112ea, +0x112f0, 0x112f9, +0x11300, 0x11303, +0x11305, 0x1130c, +0x1130f, 0x11310, +0x11313, 0x11328, +0x1132a, 0x11330, +0x11332, 0x11333, +0x11335, 0x11339, +0x1133b, 0x11344, +0x11347, 0x11348, +0x1134b, 0x1134d, +0x11350, 0x11350, +0x11357, 0x11357, +0x1135d, 0x11363, +0x11366, 0x1136c, +0x11370, 0x11374, +0x11380, 0x11389, +0x1138b, 0x1138b, +0x1138e, 0x1138e, +0x11390, 0x113b5, +0x113b7, 0x113c0, +0x113c2, 0x113c2, +0x113c5, 0x113c5, +0x113c7, 0x113ca, +0x113cc, 0x113d3, +0x113e1, 0x113e2, +0x11400, 0x1144a, +0x11450, 0x11459, +0x1145e, 0x11461, +0x11480, 0x114c5, +0x114c7, 0x114c7, +0x114d0, 0x114d9, +0x11580, 0x115b5, +0x115b8, 0x115c0, +0x115d8, 0x115dd, +0x11600, 0x11640, +0x11644, 0x11644, +0x11650, 0x11659, +0x11680, 0x116b8, +0x116c0, 0x116c9, +0x116d0, 0x116e3, +0x11700, 0x1171a, +0x1171d, 0x1172b, +0x11730, 0x11739, +0x11740, 0x11746, +0x11800, 0x1183a, +0x118a0, 0x118e9, +0x118ff, 0x11906, +0x11909, 0x11909, +0x1190c, 0x11913, +0x11915, 0x11916, +0x11918, 0x11935, +0x11937, 0x11938, +0x1193b, 0x11943, +0x11950, 0x11959, +0x119a0, 0x119a7, +0x119aa, 0x119d7, +0x119da, 0x119e1, +0x119e3, 0x119e4, +0x11a00, 0x11a3e, +0x11a47, 0x11a47, +0x11a50, 0x11a99, +0x11a9d, 0x11a9d, +0x11ab0, 0x11af8, +0x11bc0, 0x11be0, +0x11bf0, 0x11bf9, +0x11c00, 0x11c08, +0x11c0a, 0x11c36, +0x11c38, 0x11c40, +0x11c50, 0x11c59, +0x11c72, 0x11c8f, +0x11c92, 0x11ca7, +0x11ca9, 0x11cb6, +0x11d00, 0x11d06, +0x11d08, 0x11d09, +0x11d0b, 0x11d36, +0x11d3a, 0x11d3a, +0x11d3c, 0x11d3d, +0x11d3f, 0x11d47, +0x11d50, 0x11d59, +0x11d60, 0x11d65, +0x11d67, 0x11d68, +0x11d6a, 0x11d8e, +0x11d90, 0x11d91, +0x11d93, 0x11d98, +0x11da0, 0x11da9, +0x11ee0, 0x11ef6, +0x11f00, 0x11f10, +0x11f12, 0x11f3a, +0x11f3e, 0x11f42, +0x11f50, 0x11f5a, +0x11fb0, 0x11fb0, +0x12000, 0x12399, +0x12400, 0x1246e, +0x12480, 0x12543, +0x12f90, 0x12ff0, +0x13000, 0x1342f, +0x13440, 0x13455, +0x13460, 0x143fa, +0x14400, 0x14646, +0x16100, 0x16139, +0x16800, 0x16a38, +0x16a40, 0x16a5e, +0x16a60, 0x16a69, +0x16a70, 0x16abe, +0x16ac0, 0x16ac9, +0x16ad0, 0x16aed, +0x16af0, 0x16af4, +0x16b00, 0x16b36, +0x16b40, 0x16b43, +0x16b50, 0x16b59, +0x16b63, 0x16b77, +0x16b7d, 0x16b8f, +0x16d40, 0x16d6c, +0x16d70, 0x16d79, +0x16e40, 0x16e7f, +0x16f00, 0x16f4a, +0x16f4f, 0x16f87, +0x16f8f, 0x16f9f, +0x16fe0, 0x16fe1, +0x16fe3, 0x16fe4, +0x16ff0, 0x16ff1, +0x17000, 0x187f7, +0x18800, 0x18cd5, +0x18cff, 0x18d08, +0x1aff0, 0x1aff3, +0x1aff5, 0x1affb, +0x1affd, 0x1affe, +0x1b000, 0x1b122, +0x1b132, 0x1b132, +0x1b150, 0x1b152, +0x1b155, 0x1b155, +0x1b164, 0x1b167, +0x1b170, 0x1b2fb, +0x1bc00, 0x1bc6a, +0x1bc70, 0x1bc7c, +0x1bc80, 0x1bc88, +0x1bc90, 0x1bc99, +0x1bc9d, 0x1bc9e, +0x1ccf0, 0x1ccf9, +0x1cf00, 0x1cf2d, +0x1cf30, 0x1cf46, +0x1d165, 0x1d169, +0x1d16d, 0x1d172, +0x1d17b, 0x1d182, +0x1d185, 0x1d18b, +0x1d1aa, 0x1d1ad, +0x1d242, 0x1d244, +0x1d400, 0x1d454, +0x1d456, 0x1d49c, +0x1d49e, 0x1d49f, +0x1d4a2, 0x1d4a2, +0x1d4a5, 0x1d4a6, +0x1d4a9, 0x1d4ac, +0x1d4ae, 0x1d4b9, +0x1d4bb, 0x1d4bb, +0x1d4bd, 0x1d4c3, +0x1d4c5, 0x1d505, +0x1d507, 0x1d50a, +0x1d50d, 0x1d514, +0x1d516, 0x1d51c, +0x1d51e, 0x1d539, +0x1d53b, 0x1d53e, +0x1d540, 0x1d544, +0x1d546, 0x1d546, +0x1d54a, 0x1d550, +0x1d552, 0x1d6a5, +0x1d6a8, 0x1d6c0, +0x1d6c2, 0x1d6da, +0x1d6dc, 0x1d6fa, +0x1d6fc, 0x1d714, +0x1d716, 0x1d734, +0x1d736, 0x1d74e, +0x1d750, 0x1d76e, +0x1d770, 0x1d788, +0x1d78a, 0x1d7a8, +0x1d7aa, 0x1d7c2, +0x1d7c4, 0x1d7cb, +0x1d7ce, 0x1d7ff, +0x1da00, 0x1da36, +0x1da3b, 0x1da6c, +0x1da75, 0x1da75, +0x1da84, 0x1da84, +0x1da9b, 0x1da9f, +0x1daa1, 0x1daaf, +0x1df00, 0x1df1e, +0x1df25, 0x1df2a, +0x1e000, 0x1e006, +0x1e008, 0x1e018, +0x1e01b, 0x1e021, +0x1e023, 0x1e024, +0x1e026, 0x1e02a, +0x1e030, 0x1e06d, +0x1e08f, 0x1e08f, +0x1e100, 0x1e12c, +0x1e130, 0x1e13d, +0x1e140, 0x1e149, +0x1e14e, 0x1e14e, +0x1e290, 0x1e2ae, +0x1e2c0, 0x1e2f9, +0x1e4d0, 0x1e4f9, +0x1e5d0, 0x1e5fa, +0x1e7e0, 0x1e7e6, +0x1e7e8, 0x1e7eb, +0x1e7ed, 0x1e7ee, +0x1e7f0, 0x1e7fe, +0x1e800, 0x1e8c4, +0x1e8d0, 0x1e8d6, +0x1e900, 0x1e94b, +0x1e950, 0x1e959, +0x1ee00, 0x1ee03, +0x1ee05, 0x1ee1f, +0x1ee21, 0x1ee22, +0x1ee24, 0x1ee24, +0x1ee27, 0x1ee27, +0x1ee29, 0x1ee32, +0x1ee34, 0x1ee37, +0x1ee39, 0x1ee39, +0x1ee3b, 0x1ee3b, +0x1ee42, 0x1ee42, +0x1ee47, 0x1ee47, +0x1ee49, 0x1ee49, +0x1ee4b, 0x1ee4b, +0x1ee4d, 0x1ee4f, +0x1ee51, 0x1ee52, +0x1ee54, 0x1ee54, +0x1ee57, 0x1ee57, +0x1ee59, 0x1ee59, +0x1ee5b, 0x1ee5b, +0x1ee5d, 0x1ee5d, +0x1ee5f, 0x1ee5f, +0x1ee61, 0x1ee62, +0x1ee64, 0x1ee64, +0x1ee67, 0x1ee6a, +0x1ee6c, 0x1ee72, +0x1ee74, 0x1ee77, +0x1ee79, 0x1ee7c, +0x1ee7e, 0x1ee7e, +0x1ee80, 0x1ee89, +0x1ee8b, 0x1ee9b, +0x1eea1, 0x1eea3, +0x1eea5, 0x1eea9, +0x1eeab, 0x1eebb, +0x1fbf0, 0x1fbf9, +0x20000, 0x2a6df, +0x2a700, 0x2b739, +0x2b740, 0x2b81d, +0x2b820, 0x2cea1, +0x2ceb0, 0x2ebe0, +0x2ebf0, 0x2ee5d, +0x2f800, 0x2fa1d, +0x30000, 0x3134a, +0x31350, 0x323af, +0xe0100, 0xe01ef, +}; /* END of CR_XID_Continue */ + +/* PROPERTY: 'XID_Start': Derived Property */ +static const OnigCodePoint +CR_XID_Start[] = { 684, +0x0041, 0x005a, +0x0061, 0x007a, +0x00aa, 0x00aa, +0x00b5, 0x00b5, +0x00ba, 0x00ba, +0x00c0, 0x00d6, +0x00d8, 0x00f6, +0x00f8, 0x02c1, +0x02c6, 0x02d1, +0x02e0, 0x02e4, +0x02ec, 0x02ec, +0x02ee, 0x02ee, +0x0370, 0x0374, +0x0376, 0x0377, +0x037b, 0x037d, +0x037f, 0x037f, +0x0386, 0x0386, +0x0388, 0x038a, +0x038c, 0x038c, +0x038e, 0x03a1, +0x03a3, 0x03f5, +0x03f7, 0x0481, +0x048a, 0x052f, +0x0531, 0x0556, +0x0559, 0x0559, +0x0560, 0x0588, +0x05d0, 0x05ea, +0x05ef, 0x05f2, +0x0620, 0x064a, +0x066e, 0x066f, +0x0671, 0x06d3, +0x06d5, 0x06d5, +0x06e5, 0x06e6, +0x06ee, 0x06ef, +0x06fa, 0x06fc, +0x06ff, 0x06ff, +0x0710, 0x0710, +0x0712, 0x072f, +0x074d, 0x07a5, +0x07b1, 0x07b1, +0x07ca, 0x07ea, +0x07f4, 0x07f5, +0x07fa, 0x07fa, +0x0800, 0x0815, +0x081a, 0x081a, +0x0824, 0x0824, +0x0828, 0x0828, +0x0840, 0x0858, +0x0860, 0x086a, +0x0870, 0x0887, +0x0889, 0x088e, +0x08a0, 0x08c9, +0x0904, 0x0939, +0x093d, 0x093d, +0x0950, 0x0950, +0x0958, 0x0961, +0x0971, 0x0980, +0x0985, 0x098c, +0x098f, 0x0990, +0x0993, 0x09a8, +0x09aa, 0x09b0, +0x09b2, 0x09b2, +0x09b6, 0x09b9, +0x09bd, 0x09bd, +0x09ce, 0x09ce, +0x09dc, 0x09dd, +0x09df, 0x09e1, +0x09f0, 0x09f1, +0x09fc, 0x09fc, +0x0a05, 0x0a0a, +0x0a0f, 0x0a10, +0x0a13, 0x0a28, +0x0a2a, 0x0a30, +0x0a32, 0x0a33, +0x0a35, 0x0a36, +0x0a38, 0x0a39, +0x0a59, 0x0a5c, +0x0a5e, 0x0a5e, +0x0a72, 0x0a74, +0x0a85, 0x0a8d, +0x0a8f, 0x0a91, +0x0a93, 0x0aa8, +0x0aaa, 0x0ab0, +0x0ab2, 0x0ab3, +0x0ab5, 0x0ab9, +0x0abd, 0x0abd, +0x0ad0, 0x0ad0, +0x0ae0, 0x0ae1, +0x0af9, 0x0af9, +0x0b05, 0x0b0c, +0x0b0f, 0x0b10, +0x0b13, 0x0b28, +0x0b2a, 0x0b30, +0x0b32, 0x0b33, +0x0b35, 0x0b39, +0x0b3d, 0x0b3d, +0x0b5c, 0x0b5d, +0x0b5f, 0x0b61, +0x0b71, 0x0b71, +0x0b83, 0x0b83, +0x0b85, 0x0b8a, +0x0b8e, 0x0b90, +0x0b92, 0x0b95, +0x0b99, 0x0b9a, +0x0b9c, 0x0b9c, +0x0b9e, 0x0b9f, +0x0ba3, 0x0ba4, +0x0ba8, 0x0baa, +0x0bae, 0x0bb9, +0x0bd0, 0x0bd0, +0x0c05, 0x0c0c, +0x0c0e, 0x0c10, +0x0c12, 0x0c28, +0x0c2a, 0x0c39, +0x0c3d, 0x0c3d, +0x0c58, 0x0c5a, +0x0c5d, 0x0c5d, +0x0c60, 0x0c61, +0x0c80, 0x0c80, +0x0c85, 0x0c8c, +0x0c8e, 0x0c90, +0x0c92, 0x0ca8, +0x0caa, 0x0cb3, +0x0cb5, 0x0cb9, +0x0cbd, 0x0cbd, +0x0cdd, 0x0cde, +0x0ce0, 0x0ce1, +0x0cf1, 0x0cf2, +0x0d04, 0x0d0c, +0x0d0e, 0x0d10, +0x0d12, 0x0d3a, +0x0d3d, 0x0d3d, +0x0d4e, 0x0d4e, +0x0d54, 0x0d56, +0x0d5f, 0x0d61, +0x0d7a, 0x0d7f, +0x0d85, 0x0d96, +0x0d9a, 0x0db1, +0x0db3, 0x0dbb, +0x0dbd, 0x0dbd, +0x0dc0, 0x0dc6, +0x0e01, 0x0e30, +0x0e32, 0x0e32, +0x0e40, 0x0e46, +0x0e81, 0x0e82, +0x0e84, 0x0e84, +0x0e86, 0x0e8a, +0x0e8c, 0x0ea3, +0x0ea5, 0x0ea5, +0x0ea7, 0x0eb0, +0x0eb2, 0x0eb2, +0x0ebd, 0x0ebd, +0x0ec0, 0x0ec4, +0x0ec6, 0x0ec6, +0x0edc, 0x0edf, +0x0f00, 0x0f00, +0x0f40, 0x0f47, +0x0f49, 0x0f6c, +0x0f88, 0x0f8c, +0x1000, 0x102a, +0x103f, 0x103f, +0x1050, 0x1055, +0x105a, 0x105d, +0x1061, 0x1061, +0x1065, 0x1066, +0x106e, 0x1070, +0x1075, 0x1081, +0x108e, 0x108e, +0x10a0, 0x10c5, +0x10c7, 0x10c7, +0x10cd, 0x10cd, +0x10d0, 0x10fa, +0x10fc, 0x1248, +0x124a, 0x124d, +0x1250, 0x1256, +0x1258, 0x1258, +0x125a, 0x125d, +0x1260, 0x1288, +0x128a, 0x128d, +0x1290, 0x12b0, +0x12b2, 0x12b5, +0x12b8, 0x12be, +0x12c0, 0x12c0, +0x12c2, 0x12c5, +0x12c8, 0x12d6, +0x12d8, 0x1310, +0x1312, 0x1315, +0x1318, 0x135a, +0x1380, 0x138f, +0x13a0, 0x13f5, +0x13f8, 0x13fd, +0x1401, 0x166c, +0x166f, 0x167f, +0x1681, 0x169a, +0x16a0, 0x16ea, +0x16ee, 0x16f8, +0x1700, 0x1711, +0x171f, 0x1731, +0x1740, 0x1751, +0x1760, 0x176c, +0x176e, 0x1770, +0x1780, 0x17b3, +0x17d7, 0x17d7, +0x17dc, 0x17dc, +0x1820, 0x1878, +0x1880, 0x18a8, +0x18aa, 0x18aa, +0x18b0, 0x18f5, +0x1900, 0x191e, +0x1950, 0x196d, +0x1970, 0x1974, +0x1980, 0x19ab, +0x19b0, 0x19c9, +0x1a00, 0x1a16, +0x1a20, 0x1a54, +0x1aa7, 0x1aa7, +0x1b05, 0x1b33, +0x1b45, 0x1b4c, +0x1b83, 0x1ba0, +0x1bae, 0x1baf, +0x1bba, 0x1be5, +0x1c00, 0x1c23, +0x1c4d, 0x1c4f, +0x1c5a, 0x1c7d, +0x1c80, 0x1c8a, +0x1c90, 0x1cba, +0x1cbd, 0x1cbf, +0x1ce9, 0x1cec, +0x1cee, 0x1cf3, +0x1cf5, 0x1cf6, +0x1cfa, 0x1cfa, +0x1d00, 0x1dbf, +0x1e00, 0x1f15, +0x1f18, 0x1f1d, +0x1f20, 0x1f45, +0x1f48, 0x1f4d, +0x1f50, 0x1f57, +0x1f59, 0x1f59, +0x1f5b, 0x1f5b, +0x1f5d, 0x1f5d, +0x1f5f, 0x1f7d, +0x1f80, 0x1fb4, +0x1fb6, 0x1fbc, +0x1fbe, 0x1fbe, +0x1fc2, 0x1fc4, +0x1fc6, 0x1fcc, +0x1fd0, 0x1fd3, +0x1fd6, 0x1fdb, +0x1fe0, 0x1fec, +0x1ff2, 0x1ff4, +0x1ff6, 0x1ffc, +0x2071, 0x2071, +0x207f, 0x207f, +0x2090, 0x209c, +0x2102, 0x2102, +0x2107, 0x2107, +0x210a, 0x2113, +0x2115, 0x2115, +0x2118, 0x211d, +0x2124, 0x2124, +0x2126, 0x2126, +0x2128, 0x2128, +0x212a, 0x2139, +0x213c, 0x213f, +0x2145, 0x2149, +0x214e, 0x214e, +0x2160, 0x2188, +0x2c00, 0x2ce4, +0x2ceb, 0x2cee, +0x2cf2, 0x2cf3, +0x2d00, 0x2d25, +0x2d27, 0x2d27, +0x2d2d, 0x2d2d, +0x2d30, 0x2d67, +0x2d6f, 0x2d6f, +0x2d80, 0x2d96, +0x2da0, 0x2da6, +0x2da8, 0x2dae, +0x2db0, 0x2db6, +0x2db8, 0x2dbe, +0x2dc0, 0x2dc6, +0x2dc8, 0x2dce, +0x2dd0, 0x2dd6, +0x2dd8, 0x2dde, +0x3005, 0x3007, +0x3021, 0x3029, +0x3031, 0x3035, +0x3038, 0x303c, +0x3041, 0x3096, +0x309d, 0x309f, +0x30a1, 0x30fa, +0x30fc, 0x30ff, +0x3105, 0x312f, +0x3131, 0x318e, +0x31a0, 0x31bf, +0x31f0, 0x31ff, +0x3400, 0x4dbf, +0x4e00, 0xa48c, +0xa4d0, 0xa4fd, +0xa500, 0xa60c, +0xa610, 0xa61f, +0xa62a, 0xa62b, +0xa640, 0xa66e, +0xa67f, 0xa69d, +0xa6a0, 0xa6ef, +0xa717, 0xa71f, +0xa722, 0xa788, +0xa78b, 0xa7cd, +0xa7d0, 0xa7d1, +0xa7d3, 0xa7d3, +0xa7d5, 0xa7dc, +0xa7f2, 0xa801, +0xa803, 0xa805, +0xa807, 0xa80a, +0xa80c, 0xa822, +0xa840, 0xa873, +0xa882, 0xa8b3, +0xa8f2, 0xa8f7, +0xa8fb, 0xa8fb, +0xa8fd, 0xa8fe, +0xa90a, 0xa925, +0xa930, 0xa946, +0xa960, 0xa97c, +0xa984, 0xa9b2, +0xa9cf, 0xa9cf, +0xa9e0, 0xa9e4, +0xa9e6, 0xa9ef, +0xa9fa, 0xa9fe, +0xaa00, 0xaa28, +0xaa40, 0xaa42, +0xaa44, 0xaa4b, +0xaa60, 0xaa76, +0xaa7a, 0xaa7a, +0xaa7e, 0xaaaf, +0xaab1, 0xaab1, +0xaab5, 0xaab6, +0xaab9, 0xaabd, +0xaac0, 0xaac0, +0xaac2, 0xaac2, +0xaadb, 0xaadd, +0xaae0, 0xaaea, +0xaaf2, 0xaaf4, +0xab01, 0xab06, +0xab09, 0xab0e, +0xab11, 0xab16, +0xab20, 0xab26, +0xab28, 0xab2e, +0xab30, 0xab5a, +0xab5c, 0xab69, +0xab70, 0xabe2, +0xac00, 0xd7a3, +0xd7b0, 0xd7c6, +0xd7cb, 0xd7fb, +0xf900, 0xfa6d, +0xfa70, 0xfad9, +0xfb00, 0xfb06, +0xfb13, 0xfb17, +0xfb1d, 0xfb1d, +0xfb1f, 0xfb28, +0xfb2a, 0xfb36, +0xfb38, 0xfb3c, +0xfb3e, 0xfb3e, +0xfb40, 0xfb41, +0xfb43, 0xfb44, +0xfb46, 0xfbb1, +0xfbd3, 0xfc5d, +0xfc64, 0xfd3d, +0xfd50, 0xfd8f, +0xfd92, 0xfdc7, +0xfdf0, 0xfdf9, +0xfe71, 0xfe71, +0xfe73, 0xfe73, +0xfe77, 0xfe77, +0xfe79, 0xfe79, +0xfe7b, 0xfe7b, +0xfe7d, 0xfe7d, +0xfe7f, 0xfefc, +0xff21, 0xff3a, +0xff41, 0xff5a, +0xff66, 0xff9d, +0xffa0, 0xffbe, +0xffc2, 0xffc7, +0xffca, 0xffcf, +0xffd2, 0xffd7, +0xffda, 0xffdc, +0x10000, 0x1000b, +0x1000d, 0x10026, +0x10028, 0x1003a, +0x1003c, 0x1003d, +0x1003f, 0x1004d, +0x10050, 0x1005d, +0x10080, 0x100fa, +0x10140, 0x10174, +0x10280, 0x1029c, +0x102a0, 0x102d0, +0x10300, 0x1031f, +0x1032d, 0x1034a, +0x10350, 0x10375, +0x10380, 0x1039d, +0x103a0, 0x103c3, +0x103c8, 0x103cf, +0x103d1, 0x103d5, +0x10400, 0x1049d, +0x104b0, 0x104d3, +0x104d8, 0x104fb, +0x10500, 0x10527, +0x10530, 0x10563, +0x10570, 0x1057a, +0x1057c, 0x1058a, +0x1058c, 0x10592, +0x10594, 0x10595, +0x10597, 0x105a1, +0x105a3, 0x105b1, +0x105b3, 0x105b9, +0x105bb, 0x105bc, +0x105c0, 0x105f3, +0x10600, 0x10736, +0x10740, 0x10755, +0x10760, 0x10767, +0x10780, 0x10785, +0x10787, 0x107b0, +0x107b2, 0x107ba, +0x10800, 0x10805, +0x10808, 0x10808, +0x1080a, 0x10835, +0x10837, 0x10838, +0x1083c, 0x1083c, +0x1083f, 0x10855, +0x10860, 0x10876, +0x10880, 0x1089e, +0x108e0, 0x108f2, +0x108f4, 0x108f5, +0x10900, 0x10915, +0x10920, 0x10939, +0x10980, 0x109b7, +0x109be, 0x109bf, +0x10a00, 0x10a00, +0x10a10, 0x10a13, +0x10a15, 0x10a17, +0x10a19, 0x10a35, +0x10a60, 0x10a7c, +0x10a80, 0x10a9c, +0x10ac0, 0x10ac7, +0x10ac9, 0x10ae4, +0x10b00, 0x10b35, +0x10b40, 0x10b55, +0x10b60, 0x10b72, +0x10b80, 0x10b91, +0x10c00, 0x10c48, +0x10c80, 0x10cb2, +0x10cc0, 0x10cf2, +0x10d00, 0x10d23, +0x10d4a, 0x10d65, +0x10d6f, 0x10d85, +0x10e80, 0x10ea9, +0x10eb0, 0x10eb1, +0x10ec2, 0x10ec4, +0x10f00, 0x10f1c, +0x10f27, 0x10f27, +0x10f30, 0x10f45, +0x10f70, 0x10f81, +0x10fb0, 0x10fc4, +0x10fe0, 0x10ff6, +0x11003, 0x11037, +0x11071, 0x11072, +0x11075, 0x11075, +0x11083, 0x110af, +0x110d0, 0x110e8, +0x11103, 0x11126, +0x11144, 0x11144, +0x11147, 0x11147, +0x11150, 0x11172, +0x11176, 0x11176, +0x11183, 0x111b2, +0x111c1, 0x111c4, +0x111da, 0x111da, +0x111dc, 0x111dc, +0x11200, 0x11211, +0x11213, 0x1122b, +0x1123f, 0x11240, +0x11280, 0x11286, +0x11288, 0x11288, +0x1128a, 0x1128d, +0x1128f, 0x1129d, +0x1129f, 0x112a8, +0x112b0, 0x112de, +0x11305, 0x1130c, +0x1130f, 0x11310, +0x11313, 0x11328, +0x1132a, 0x11330, +0x11332, 0x11333, +0x11335, 0x11339, +0x1133d, 0x1133d, +0x11350, 0x11350, +0x1135d, 0x11361, +0x11380, 0x11389, +0x1138b, 0x1138b, +0x1138e, 0x1138e, +0x11390, 0x113b5, +0x113b7, 0x113b7, +0x113d1, 0x113d1, +0x113d3, 0x113d3, +0x11400, 0x11434, +0x11447, 0x1144a, +0x1145f, 0x11461, +0x11480, 0x114af, +0x114c4, 0x114c5, +0x114c7, 0x114c7, +0x11580, 0x115ae, +0x115d8, 0x115db, +0x11600, 0x1162f, +0x11644, 0x11644, +0x11680, 0x116aa, +0x116b8, 0x116b8, +0x11700, 0x1171a, +0x11740, 0x11746, +0x11800, 0x1182b, +0x118a0, 0x118df, +0x118ff, 0x11906, +0x11909, 0x11909, +0x1190c, 0x11913, +0x11915, 0x11916, +0x11918, 0x1192f, +0x1193f, 0x1193f, +0x11941, 0x11941, +0x119a0, 0x119a7, +0x119aa, 0x119d0, +0x119e1, 0x119e1, +0x119e3, 0x119e3, +0x11a00, 0x11a00, +0x11a0b, 0x11a32, +0x11a3a, 0x11a3a, +0x11a50, 0x11a50, +0x11a5c, 0x11a89, +0x11a9d, 0x11a9d, +0x11ab0, 0x11af8, +0x11bc0, 0x11be0, +0x11c00, 0x11c08, +0x11c0a, 0x11c2e, +0x11c40, 0x11c40, +0x11c72, 0x11c8f, +0x11d00, 0x11d06, +0x11d08, 0x11d09, +0x11d0b, 0x11d30, +0x11d46, 0x11d46, +0x11d60, 0x11d65, +0x11d67, 0x11d68, +0x11d6a, 0x11d89, +0x11d98, 0x11d98, +0x11ee0, 0x11ef2, +0x11f02, 0x11f02, +0x11f04, 0x11f10, +0x11f12, 0x11f33, +0x11fb0, 0x11fb0, +0x12000, 0x12399, +0x12400, 0x1246e, +0x12480, 0x12543, +0x12f90, 0x12ff0, +0x13000, 0x1342f, +0x13441, 0x13446, +0x13460, 0x143fa, +0x14400, 0x14646, +0x16100, 0x1611d, +0x16800, 0x16a38, +0x16a40, 0x16a5e, +0x16a70, 0x16abe, +0x16ad0, 0x16aed, +0x16b00, 0x16b2f, +0x16b40, 0x16b43, +0x16b63, 0x16b77, +0x16b7d, 0x16b8f, +0x16d40, 0x16d6c, +0x16e40, 0x16e7f, +0x16f00, 0x16f4a, +0x16f50, 0x16f50, +0x16f93, 0x16f9f, +0x16fe0, 0x16fe1, +0x16fe3, 0x16fe3, +0x17000, 0x187f7, +0x18800, 0x18cd5, +0x18cff, 0x18d08, +0x1aff0, 0x1aff3, +0x1aff5, 0x1affb, +0x1affd, 0x1affe, +0x1b000, 0x1b122, +0x1b132, 0x1b132, +0x1b150, 0x1b152, +0x1b155, 0x1b155, +0x1b164, 0x1b167, +0x1b170, 0x1b2fb, +0x1bc00, 0x1bc6a, +0x1bc70, 0x1bc7c, +0x1bc80, 0x1bc88, +0x1bc90, 0x1bc99, +0x1d400, 0x1d454, +0x1d456, 0x1d49c, +0x1d49e, 0x1d49f, +0x1d4a2, 0x1d4a2, +0x1d4a5, 0x1d4a6, +0x1d4a9, 0x1d4ac, +0x1d4ae, 0x1d4b9, +0x1d4bb, 0x1d4bb, +0x1d4bd, 0x1d4c3, +0x1d4c5, 0x1d505, +0x1d507, 0x1d50a, +0x1d50d, 0x1d514, +0x1d516, 0x1d51c, +0x1d51e, 0x1d539, +0x1d53b, 0x1d53e, +0x1d540, 0x1d544, +0x1d546, 0x1d546, +0x1d54a, 0x1d550, +0x1d552, 0x1d6a5, +0x1d6a8, 0x1d6c0, +0x1d6c2, 0x1d6da, +0x1d6dc, 0x1d6fa, +0x1d6fc, 0x1d714, +0x1d716, 0x1d734, +0x1d736, 0x1d74e, +0x1d750, 0x1d76e, +0x1d770, 0x1d788, +0x1d78a, 0x1d7a8, +0x1d7aa, 0x1d7c2, +0x1d7c4, 0x1d7cb, +0x1df00, 0x1df1e, +0x1df25, 0x1df2a, +0x1e030, 0x1e06d, +0x1e100, 0x1e12c, +0x1e137, 0x1e13d, +0x1e14e, 0x1e14e, +0x1e290, 0x1e2ad, +0x1e2c0, 0x1e2eb, +0x1e4d0, 0x1e4eb, +0x1e5d0, 0x1e5ed, +0x1e5f0, 0x1e5f0, +0x1e7e0, 0x1e7e6, +0x1e7e8, 0x1e7eb, +0x1e7ed, 0x1e7ee, +0x1e7f0, 0x1e7fe, +0x1e800, 0x1e8c4, +0x1e900, 0x1e943, +0x1e94b, 0x1e94b, +0x1ee00, 0x1ee03, +0x1ee05, 0x1ee1f, +0x1ee21, 0x1ee22, +0x1ee24, 0x1ee24, +0x1ee27, 0x1ee27, +0x1ee29, 0x1ee32, +0x1ee34, 0x1ee37, +0x1ee39, 0x1ee39, +0x1ee3b, 0x1ee3b, +0x1ee42, 0x1ee42, +0x1ee47, 0x1ee47, +0x1ee49, 0x1ee49, +0x1ee4b, 0x1ee4b, +0x1ee4d, 0x1ee4f, +0x1ee51, 0x1ee52, +0x1ee54, 0x1ee54, +0x1ee57, 0x1ee57, +0x1ee59, 0x1ee59, +0x1ee5b, 0x1ee5b, +0x1ee5d, 0x1ee5d, +0x1ee5f, 0x1ee5f, +0x1ee61, 0x1ee62, +0x1ee64, 0x1ee64, +0x1ee67, 0x1ee6a, +0x1ee6c, 0x1ee72, +0x1ee74, 0x1ee77, +0x1ee79, 0x1ee7c, +0x1ee7e, 0x1ee7e, +0x1ee80, 0x1ee89, +0x1ee8b, 0x1ee9b, +0x1eea1, 0x1eea3, +0x1eea5, 0x1eea9, +0x1eeab, 0x1eebb, +0x20000, 0x2a6df, +0x2a700, 0x2b739, +0x2b740, 0x2b81d, +0x2b820, 0x2cea1, +0x2ceb0, 0x2ebe0, +0x2ebf0, 0x2ee5d, +0x2f800, 0x2fa1d, +0x30000, 0x3134a, +0x31350, 0x323af, +}; /* END of CR_XID_Start */ + +/* PROPERTY: 'Yezidi': Script */ +static const OnigCodePoint +CR_Yezidi[] = { 3, +0x10e80, 0x10ea9, +0x10eab, 0x10ead, +0x10eb0, 0x10eb1, +}; /* END of CR_Yezidi */ + +/* PROPERTY: 'Yi': Script */ +static const OnigCodePoint +CR_Yi[] = { 2, +0xa000, 0xa48c, +0xa490, 0xa4c6, +}; /* END of CR_Yi */ + +/* PROPERTY: 'Z': Major Category */ +static const OnigCodePoint +CR_Z[] = { 8, +0x0020, 0x0020, +0x00a0, 0x00a0, +0x1680, 0x1680, +0x2000, 0x200a, +0x2028, 0x2029, +0x202f, 0x202f, +0x205f, 0x205f, +0x3000, 0x3000, +}; /* END of CR_Z */ + +/* PROPERTY: 'Zanabazar_Square': Script */ +static const OnigCodePoint +CR_Zanabazar_Square[] = { 1, +0x11a00, 0x11a47, +}; /* END of CR_Zanabazar_Square */ + +/* PROPERTY: 'Zl': General Category */ +static const OnigCodePoint +CR_Zl[] = { 1, +0x2028, 0x2028, +}; /* END of CR_Zl */ + +/* PROPERTY: 'Zp': General Category */ +static const OnigCodePoint +CR_Zp[] = { 1, +0x2029, 0x2029, +}; /* END of CR_Zp */ + +/* PROPERTY: 'Zs': General Category */ +static const OnigCodePoint +CR_Zs[] = { 7, +0x0020, 0x0020, +0x00a0, 0x00a0, +0x1680, 0x1680, +0x2000, 0x200a, +0x202f, 0x202f, +0x205f, 0x205f, +0x3000, 0x3000, +}; /* END of CR_Zs */ + +/* PROPERTY: 'In_Basic_Latin': Block */ +#define CR_In_Basic_Latin CR_ASCII + +/* PROPERTY: 'In_Latin_1_Supplement': Block */ +static const OnigCodePoint +CR_In_Latin_1_Supplement[] = { 1, +0x0080, 0x00ff, +}; /* END of CR_In_Latin_1_Supplement */ + +/* PROPERTY: 'In_Latin_Extended_A': Block */ +static const OnigCodePoint +CR_In_Latin_Extended_A[] = { 1, +0x0100, 0x017f, +}; /* END of CR_In_Latin_Extended_A */ + +/* PROPERTY: 'In_Latin_Extended_B': Block */ +static const OnigCodePoint +CR_In_Latin_Extended_B[] = { 1, +0x0180, 0x024f, +}; /* END of CR_In_Latin_Extended_B */ + +/* PROPERTY: 'In_IPA_Extensions': Block */ +static const OnigCodePoint +CR_In_IPA_Extensions[] = { 1, +0x0250, 0x02af, +}; /* END of CR_In_IPA_Extensions */ + +/* PROPERTY: 'In_Spacing_Modifier_Letters': Block */ +static const OnigCodePoint +CR_In_Spacing_Modifier_Letters[] = { 1, +0x02b0, 0x02ff, +}; /* END of CR_In_Spacing_Modifier_Letters */ + +/* PROPERTY: 'In_Combining_Diacritical_Marks': Block */ +static const OnigCodePoint +CR_In_Combining_Diacritical_Marks[] = { 1, +0x0300, 0x036f, +}; /* END of CR_In_Combining_Diacritical_Marks */ + +/* PROPERTY: 'In_Greek_and_Coptic': Block */ +static const OnigCodePoint +CR_In_Greek_and_Coptic[] = { 1, +0x0370, 0x03ff, +}; /* END of CR_In_Greek_and_Coptic */ + +/* PROPERTY: 'In_Cyrillic': Block */ +static const OnigCodePoint +CR_In_Cyrillic[] = { 1, +0x0400, 0x04ff, +}; /* END of CR_In_Cyrillic */ + +/* PROPERTY: 'In_Cyrillic_Supplement': Block */ +static const OnigCodePoint +CR_In_Cyrillic_Supplement[] = { 1, +0x0500, 0x052f, +}; /* END of CR_In_Cyrillic_Supplement */ + +/* PROPERTY: 'In_Armenian': Block */ +static const OnigCodePoint +CR_In_Armenian[] = { 1, +0x0530, 0x058f, +}; /* END of CR_In_Armenian */ + +/* PROPERTY: 'In_Hebrew': Block */ +static const OnigCodePoint +CR_In_Hebrew[] = { 1, +0x0590, 0x05ff, +}; /* END of CR_In_Hebrew */ + +/* PROPERTY: 'In_Arabic': Block */ +static const OnigCodePoint +CR_In_Arabic[] = { 1, +0x0600, 0x06ff, +}; /* END of CR_In_Arabic */ + +/* PROPERTY: 'In_Syriac': Block */ +static const OnigCodePoint +CR_In_Syriac[] = { 1, +0x0700, 0x074f, +}; /* END of CR_In_Syriac */ + +/* PROPERTY: 'In_Arabic_Supplement': Block */ +static const OnigCodePoint +CR_In_Arabic_Supplement[] = { 1, +0x0750, 0x077f, +}; /* END of CR_In_Arabic_Supplement */ + +/* PROPERTY: 'In_Thaana': Block */ +static const OnigCodePoint +CR_In_Thaana[] = { 1, +0x0780, 0x07bf, +}; /* END of CR_In_Thaana */ + +/* PROPERTY: 'In_NKo': Block */ +static const OnigCodePoint +CR_In_NKo[] = { 1, +0x07c0, 0x07ff, +}; /* END of CR_In_NKo */ + +/* PROPERTY: 'In_Samaritan': Block */ +static const OnigCodePoint +CR_In_Samaritan[] = { 1, +0x0800, 0x083f, +}; /* END of CR_In_Samaritan */ + +/* PROPERTY: 'In_Mandaic': Block */ +static const OnigCodePoint +CR_In_Mandaic[] = { 1, +0x0840, 0x085f, +}; /* END of CR_In_Mandaic */ + +/* PROPERTY: 'In_Syriac_Supplement': Block */ +static const OnigCodePoint +CR_In_Syriac_Supplement[] = { 1, +0x0860, 0x086f, +}; /* END of CR_In_Syriac_Supplement */ + +/* PROPERTY: 'In_Arabic_Extended_B': Block */ +static const OnigCodePoint +CR_In_Arabic_Extended_B[] = { 1, +0x0870, 0x089f, +}; /* END of CR_In_Arabic_Extended_B */ + +/* PROPERTY: 'In_Arabic_Extended_A': Block */ +static const OnigCodePoint +CR_In_Arabic_Extended_A[] = { 1, +0x08a0, 0x08ff, +}; /* END of CR_In_Arabic_Extended_A */ + +/* PROPERTY: 'In_Devanagari': Block */ +static const OnigCodePoint +CR_In_Devanagari[] = { 1, +0x0900, 0x097f, +}; /* END of CR_In_Devanagari */ + +/* PROPERTY: 'In_Bengali': Block */ +static const OnigCodePoint +CR_In_Bengali[] = { 1, +0x0980, 0x09ff, +}; /* END of CR_In_Bengali */ + +/* PROPERTY: 'In_Gurmukhi': Block */ +static const OnigCodePoint +CR_In_Gurmukhi[] = { 1, +0x0a00, 0x0a7f, +}; /* END of CR_In_Gurmukhi */ + +/* PROPERTY: 'In_Gujarati': Block */ +static const OnigCodePoint +CR_In_Gujarati[] = { 1, +0x0a80, 0x0aff, +}; /* END of CR_In_Gujarati */ + +/* PROPERTY: 'In_Oriya': Block */ +static const OnigCodePoint +CR_In_Oriya[] = { 1, +0x0b00, 0x0b7f, +}; /* END of CR_In_Oriya */ + +/* PROPERTY: 'In_Tamil': Block */ +static const OnigCodePoint +CR_In_Tamil[] = { 1, +0x0b80, 0x0bff, +}; /* END of CR_In_Tamil */ + +/* PROPERTY: 'In_Telugu': Block */ +static const OnigCodePoint +CR_In_Telugu[] = { 1, +0x0c00, 0x0c7f, +}; /* END of CR_In_Telugu */ + +/* PROPERTY: 'In_Kannada': Block */ +static const OnigCodePoint +CR_In_Kannada[] = { 1, +0x0c80, 0x0cff, +}; /* END of CR_In_Kannada */ + +/* PROPERTY: 'In_Malayalam': Block */ +static const OnigCodePoint +CR_In_Malayalam[] = { 1, +0x0d00, 0x0d7f, +}; /* END of CR_In_Malayalam */ + +/* PROPERTY: 'In_Sinhala': Block */ +static const OnigCodePoint +CR_In_Sinhala[] = { 1, +0x0d80, 0x0dff, +}; /* END of CR_In_Sinhala */ + +/* PROPERTY: 'In_Thai': Block */ +static const OnigCodePoint +CR_In_Thai[] = { 1, +0x0e00, 0x0e7f, +}; /* END of CR_In_Thai */ + +/* PROPERTY: 'In_Lao': Block */ +static const OnigCodePoint +CR_In_Lao[] = { 1, +0x0e80, 0x0eff, +}; /* END of CR_In_Lao */ + +/* PROPERTY: 'In_Tibetan': Block */ +static const OnigCodePoint +CR_In_Tibetan[] = { 1, +0x0f00, 0x0fff, +}; /* END of CR_In_Tibetan */ + +/* PROPERTY: 'In_Myanmar': Block */ +static const OnigCodePoint +CR_In_Myanmar[] = { 1, +0x1000, 0x109f, +}; /* END of CR_In_Myanmar */ + +/* PROPERTY: 'In_Georgian': Block */ +static const OnigCodePoint +CR_In_Georgian[] = { 1, +0x10a0, 0x10ff, +}; /* END of CR_In_Georgian */ + +/* PROPERTY: 'In_Hangul_Jamo': Block */ +static const OnigCodePoint +CR_In_Hangul_Jamo[] = { 1, +0x1100, 0x11ff, +}; /* END of CR_In_Hangul_Jamo */ + +/* PROPERTY: 'In_Ethiopic': Block */ +static const OnigCodePoint +CR_In_Ethiopic[] = { 1, +0x1200, 0x137f, +}; /* END of CR_In_Ethiopic */ + +/* PROPERTY: 'In_Ethiopic_Supplement': Block */ +static const OnigCodePoint +CR_In_Ethiopic_Supplement[] = { 1, +0x1380, 0x139f, +}; /* END of CR_In_Ethiopic_Supplement */ + +/* PROPERTY: 'In_Cherokee': Block */ +static const OnigCodePoint +CR_In_Cherokee[] = { 1, +0x13a0, 0x13ff, +}; /* END of CR_In_Cherokee */ + +/* PROPERTY: 'In_Unified_Canadian_Aboriginal_Syllabics': Block */ +static const OnigCodePoint +CR_In_Unified_Canadian_Aboriginal_Syllabics[] = { 1, +0x1400, 0x167f, +}; /* END of CR_In_Unified_Canadian_Aboriginal_Syllabics */ + +/* PROPERTY: 'In_Ogham': Block */ +static const OnigCodePoint +CR_In_Ogham[] = { 1, +0x1680, 0x169f, +}; /* END of CR_In_Ogham */ + +/* PROPERTY: 'In_Runic': Block */ +static const OnigCodePoint +CR_In_Runic[] = { 1, +0x16a0, 0x16ff, +}; /* END of CR_In_Runic */ + +/* PROPERTY: 'In_Tagalog': Block */ +static const OnigCodePoint +CR_In_Tagalog[] = { 1, +0x1700, 0x171f, +}; /* END of CR_In_Tagalog */ + +/* PROPERTY: 'In_Hanunoo': Block */ +static const OnigCodePoint +CR_In_Hanunoo[] = { 1, +0x1720, 0x173f, +}; /* END of CR_In_Hanunoo */ + +/* PROPERTY: 'In_Buhid': Block */ +static const OnigCodePoint +CR_In_Buhid[] = { 1, +0x1740, 0x175f, +}; /* END of CR_In_Buhid */ + +/* PROPERTY: 'In_Tagbanwa': Block */ +static const OnigCodePoint +CR_In_Tagbanwa[] = { 1, +0x1760, 0x177f, +}; /* END of CR_In_Tagbanwa */ + +/* PROPERTY: 'In_Khmer': Block */ +static const OnigCodePoint +CR_In_Khmer[] = { 1, +0x1780, 0x17ff, +}; /* END of CR_In_Khmer */ + +/* PROPERTY: 'In_Mongolian': Block */ +static const OnigCodePoint +CR_In_Mongolian[] = { 1, +0x1800, 0x18af, +}; /* END of CR_In_Mongolian */ + +/* PROPERTY: 'In_Unified_Canadian_Aboriginal_Syllabics_Extended': Block */ +static const OnigCodePoint +CR_In_Unified_Canadian_Aboriginal_Syllabics_Extended[] = { 1, +0x18b0, 0x18ff, +}; /* END of CR_In_Unified_Canadian_Aboriginal_Syllabics_Extended */ + +/* PROPERTY: 'In_Limbu': Block */ +static const OnigCodePoint +CR_In_Limbu[] = { 1, +0x1900, 0x194f, +}; /* END of CR_In_Limbu */ + +/* PROPERTY: 'In_Tai_Le': Block */ +static const OnigCodePoint +CR_In_Tai_Le[] = { 1, +0x1950, 0x197f, +}; /* END of CR_In_Tai_Le */ + +/* PROPERTY: 'In_New_Tai_Lue': Block */ +static const OnigCodePoint +CR_In_New_Tai_Lue[] = { 1, +0x1980, 0x19df, +}; /* END of CR_In_New_Tai_Lue */ + +/* PROPERTY: 'In_Khmer_Symbols': Block */ +static const OnigCodePoint +CR_In_Khmer_Symbols[] = { 1, +0x19e0, 0x19ff, +}; /* END of CR_In_Khmer_Symbols */ + +/* PROPERTY: 'In_Buginese': Block */ +static const OnigCodePoint +CR_In_Buginese[] = { 1, +0x1a00, 0x1a1f, +}; /* END of CR_In_Buginese */ + +/* PROPERTY: 'In_Tai_Tham': Block */ +static const OnigCodePoint +CR_In_Tai_Tham[] = { 1, +0x1a20, 0x1aaf, +}; /* END of CR_In_Tai_Tham */ + +/* PROPERTY: 'In_Combining_Diacritical_Marks_Extended': Block */ +static const OnigCodePoint +CR_In_Combining_Diacritical_Marks_Extended[] = { 1, +0x1ab0, 0x1aff, +}; /* END of CR_In_Combining_Diacritical_Marks_Extended */ + +/* PROPERTY: 'In_Balinese': Block */ +static const OnigCodePoint +CR_In_Balinese[] = { 1, +0x1b00, 0x1b7f, +}; /* END of CR_In_Balinese */ + +/* PROPERTY: 'In_Sundanese': Block */ +static const OnigCodePoint +CR_In_Sundanese[] = { 1, +0x1b80, 0x1bbf, +}; /* END of CR_In_Sundanese */ + +/* PROPERTY: 'In_Batak': Block */ +static const OnigCodePoint +CR_In_Batak[] = { 1, +0x1bc0, 0x1bff, +}; /* END of CR_In_Batak */ + +/* PROPERTY: 'In_Lepcha': Block */ +static const OnigCodePoint +CR_In_Lepcha[] = { 1, +0x1c00, 0x1c4f, +}; /* END of CR_In_Lepcha */ + +/* PROPERTY: 'In_Ol_Chiki': Block */ +#define CR_In_Ol_Chiki CR_Ol_Chiki + +/* PROPERTY: 'In_Cyrillic_Extended_C': Block */ +static const OnigCodePoint +CR_In_Cyrillic_Extended_C[] = { 1, +0x1c80, 0x1c8f, +}; /* END of CR_In_Cyrillic_Extended_C */ + +/* PROPERTY: 'In_Georgian_Extended': Block */ +static const OnigCodePoint +CR_In_Georgian_Extended[] = { 1, +0x1c90, 0x1cbf, +}; /* END of CR_In_Georgian_Extended */ + +/* PROPERTY: 'In_Sundanese_Supplement': Block */ +static const OnigCodePoint +CR_In_Sundanese_Supplement[] = { 1, +0x1cc0, 0x1ccf, +}; /* END of CR_In_Sundanese_Supplement */ + +/* PROPERTY: 'In_Vedic_Extensions': Block */ +static const OnigCodePoint +CR_In_Vedic_Extensions[] = { 1, +0x1cd0, 0x1cff, +}; /* END of CR_In_Vedic_Extensions */ + +/* PROPERTY: 'In_Phonetic_Extensions': Block */ +static const OnigCodePoint +CR_In_Phonetic_Extensions[] = { 1, +0x1d00, 0x1d7f, +}; /* END of CR_In_Phonetic_Extensions */ + +/* PROPERTY: 'In_Phonetic_Extensions_Supplement': Block */ +static const OnigCodePoint +CR_In_Phonetic_Extensions_Supplement[] = { 1, +0x1d80, 0x1dbf, +}; /* END of CR_In_Phonetic_Extensions_Supplement */ + +/* PROPERTY: 'In_Combining_Diacritical_Marks_Supplement': Block */ +static const OnigCodePoint +CR_In_Combining_Diacritical_Marks_Supplement[] = { 1, +0x1dc0, 0x1dff, +}; /* END of CR_In_Combining_Diacritical_Marks_Supplement */ + +/* PROPERTY: 'In_Latin_Extended_Additional': Block */ +static const OnigCodePoint +CR_In_Latin_Extended_Additional[] = { 1, +0x1e00, 0x1eff, +}; /* END of CR_In_Latin_Extended_Additional */ + +/* PROPERTY: 'In_Greek_Extended': Block */ +static const OnigCodePoint +CR_In_Greek_Extended[] = { 1, +0x1f00, 0x1fff, +}; /* END of CR_In_Greek_Extended */ + +/* PROPERTY: 'In_General_Punctuation': Block */ +static const OnigCodePoint +CR_In_General_Punctuation[] = { 1, +0x2000, 0x206f, +}; /* END of CR_In_General_Punctuation */ + +/* PROPERTY: 'In_Superscripts_and_Subscripts': Block */ +static const OnigCodePoint +CR_In_Superscripts_and_Subscripts[] = { 1, +0x2070, 0x209f, +}; /* END of CR_In_Superscripts_and_Subscripts */ + +/* PROPERTY: 'In_Currency_Symbols': Block */ +static const OnigCodePoint +CR_In_Currency_Symbols[] = { 1, +0x20a0, 0x20cf, +}; /* END of CR_In_Currency_Symbols */ + +/* PROPERTY: 'In_Combining_Diacritical_Marks_for_Symbols': Block */ +static const OnigCodePoint +CR_In_Combining_Diacritical_Marks_for_Symbols[] = { 1, +0x20d0, 0x20ff, +}; /* END of CR_In_Combining_Diacritical_Marks_for_Symbols */ + +/* PROPERTY: 'In_Letterlike_Symbols': Block */ +static const OnigCodePoint +CR_In_Letterlike_Symbols[] = { 1, +0x2100, 0x214f, +}; /* END of CR_In_Letterlike_Symbols */ + +/* PROPERTY: 'In_Number_Forms': Block */ +static const OnigCodePoint +CR_In_Number_Forms[] = { 1, +0x2150, 0x218f, +}; /* END of CR_In_Number_Forms */ + +/* PROPERTY: 'In_Arrows': Block */ +static const OnigCodePoint +CR_In_Arrows[] = { 1, +0x2190, 0x21ff, +}; /* END of CR_In_Arrows */ + +/* PROPERTY: 'In_Mathematical_Operators': Block */ +static const OnigCodePoint +CR_In_Mathematical_Operators[] = { 1, +0x2200, 0x22ff, +}; /* END of CR_In_Mathematical_Operators */ + +/* PROPERTY: 'In_Miscellaneous_Technical': Block */ +static const OnigCodePoint +CR_In_Miscellaneous_Technical[] = { 1, +0x2300, 0x23ff, +}; /* END of CR_In_Miscellaneous_Technical */ + +/* PROPERTY: 'In_Control_Pictures': Block */ +static const OnigCodePoint +CR_In_Control_Pictures[] = { 1, +0x2400, 0x243f, +}; /* END of CR_In_Control_Pictures */ + +/* PROPERTY: 'In_Optical_Character_Recognition': Block */ +static const OnigCodePoint +CR_In_Optical_Character_Recognition[] = { 1, +0x2440, 0x245f, +}; /* END of CR_In_Optical_Character_Recognition */ + +/* PROPERTY: 'In_Enclosed_Alphanumerics': Block */ +static const OnigCodePoint +CR_In_Enclosed_Alphanumerics[] = { 1, +0x2460, 0x24ff, +}; /* END of CR_In_Enclosed_Alphanumerics */ + +/* PROPERTY: 'In_Box_Drawing': Block */ +static const OnigCodePoint +CR_In_Box_Drawing[] = { 1, +0x2500, 0x257f, +}; /* END of CR_In_Box_Drawing */ + +/* PROPERTY: 'In_Block_Elements': Block */ +static const OnigCodePoint +CR_In_Block_Elements[] = { 1, +0x2580, 0x259f, +}; /* END of CR_In_Block_Elements */ + +/* PROPERTY: 'In_Geometric_Shapes': Block */ +static const OnigCodePoint +CR_In_Geometric_Shapes[] = { 1, +0x25a0, 0x25ff, +}; /* END of CR_In_Geometric_Shapes */ + +/* PROPERTY: 'In_Miscellaneous_Symbols': Block */ +static const OnigCodePoint +CR_In_Miscellaneous_Symbols[] = { 1, +0x2600, 0x26ff, +}; /* END of CR_In_Miscellaneous_Symbols */ + +/* PROPERTY: 'In_Dingbats': Block */ +static const OnigCodePoint +CR_In_Dingbats[] = { 1, +0x2700, 0x27bf, +}; /* END of CR_In_Dingbats */ + +/* PROPERTY: 'In_Miscellaneous_Mathematical_Symbols_A': Block */ +static const OnigCodePoint +CR_In_Miscellaneous_Mathematical_Symbols_A[] = { 1, +0x27c0, 0x27ef, +}; /* END of CR_In_Miscellaneous_Mathematical_Symbols_A */ + +/* PROPERTY: 'In_Supplemental_Arrows_A': Block */ +static const OnigCodePoint +CR_In_Supplemental_Arrows_A[] = { 1, +0x27f0, 0x27ff, +}; /* END of CR_In_Supplemental_Arrows_A */ + +/* PROPERTY: 'In_Braille_Patterns': Block */ +#define CR_In_Braille_Patterns CR_Braille + +/* PROPERTY: 'In_Supplemental_Arrows_B': Block */ +static const OnigCodePoint +CR_In_Supplemental_Arrows_B[] = { 1, +0x2900, 0x297f, +}; /* END of CR_In_Supplemental_Arrows_B */ + +/* PROPERTY: 'In_Miscellaneous_Mathematical_Symbols_B': Block */ +static const OnigCodePoint +CR_In_Miscellaneous_Mathematical_Symbols_B[] = { 1, +0x2980, 0x29ff, +}; /* END of CR_In_Miscellaneous_Mathematical_Symbols_B */ + +/* PROPERTY: 'In_Supplemental_Mathematical_Operators': Block */ +static const OnigCodePoint +CR_In_Supplemental_Mathematical_Operators[] = { 1, +0x2a00, 0x2aff, +}; /* END of CR_In_Supplemental_Mathematical_Operators */ + +/* PROPERTY: 'In_Miscellaneous_Symbols_and_Arrows': Block */ +static const OnigCodePoint +CR_In_Miscellaneous_Symbols_and_Arrows[] = { 1, +0x2b00, 0x2bff, +}; /* END of CR_In_Miscellaneous_Symbols_and_Arrows */ + +/* PROPERTY: 'In_Glagolitic': Block */ +static const OnigCodePoint +CR_In_Glagolitic[] = { 1, +0x2c00, 0x2c5f, +}; /* END of CR_In_Glagolitic */ + +/* PROPERTY: 'In_Latin_Extended_C': Block */ +static const OnigCodePoint +CR_In_Latin_Extended_C[] = { 1, +0x2c60, 0x2c7f, +}; /* END of CR_In_Latin_Extended_C */ + +/* PROPERTY: 'In_Coptic': Block */ +static const OnigCodePoint +CR_In_Coptic[] = { 1, +0x2c80, 0x2cff, +}; /* END of CR_In_Coptic */ + +/* PROPERTY: 'In_Georgian_Supplement': Block */ +static const OnigCodePoint +CR_In_Georgian_Supplement[] = { 1, +0x2d00, 0x2d2f, +}; /* END of CR_In_Georgian_Supplement */ + +/* PROPERTY: 'In_Tifinagh': Block */ +static const OnigCodePoint +CR_In_Tifinagh[] = { 1, +0x2d30, 0x2d7f, +}; /* END of CR_In_Tifinagh */ + +/* PROPERTY: 'In_Ethiopic_Extended': Block */ +static const OnigCodePoint +CR_In_Ethiopic_Extended[] = { 1, +0x2d80, 0x2ddf, +}; /* END of CR_In_Ethiopic_Extended */ + +/* PROPERTY: 'In_Cyrillic_Extended_A': Block */ +static const OnigCodePoint +CR_In_Cyrillic_Extended_A[] = { 1, +0x2de0, 0x2dff, +}; /* END of CR_In_Cyrillic_Extended_A */ + +/* PROPERTY: 'In_Supplemental_Punctuation': Block */ +static const OnigCodePoint +CR_In_Supplemental_Punctuation[] = { 1, +0x2e00, 0x2e7f, +}; /* END of CR_In_Supplemental_Punctuation */ + +/* PROPERTY: 'In_CJK_Radicals_Supplement': Block */ +static const OnigCodePoint +CR_In_CJK_Radicals_Supplement[] = { 1, +0x2e80, 0x2eff, +}; /* END of CR_In_CJK_Radicals_Supplement */ + +/* PROPERTY: 'In_Kangxi_Radicals': Block */ +static const OnigCodePoint +CR_In_Kangxi_Radicals[] = { 1, +0x2f00, 0x2fdf, +}; /* END of CR_In_Kangxi_Radicals */ + +/* PROPERTY: 'In_Ideographic_Description_Characters': Block */ +static const OnigCodePoint +CR_In_Ideographic_Description_Characters[] = { 1, +0x2ff0, 0x2fff, +}; /* END of CR_In_Ideographic_Description_Characters */ + +/* PROPERTY: 'In_CJK_Symbols_and_Punctuation': Block */ +static const OnigCodePoint +CR_In_CJK_Symbols_and_Punctuation[] = { 1, +0x3000, 0x303f, +}; /* END of CR_In_CJK_Symbols_and_Punctuation */ + +/* PROPERTY: 'In_Hiragana': Block */ +static const OnigCodePoint +CR_In_Hiragana[] = { 1, +0x3040, 0x309f, +}; /* END of CR_In_Hiragana */ + +/* PROPERTY: 'In_Katakana': Block */ +static const OnigCodePoint +CR_In_Katakana[] = { 1, +0x30a0, 0x30ff, +}; /* END of CR_In_Katakana */ + +/* PROPERTY: 'In_Bopomofo': Block */ +static const OnigCodePoint +CR_In_Bopomofo[] = { 1, +0x3100, 0x312f, +}; /* END of CR_In_Bopomofo */ + +/* PROPERTY: 'In_Hangul_Compatibility_Jamo': Block */ +static const OnigCodePoint +CR_In_Hangul_Compatibility_Jamo[] = { 1, +0x3130, 0x318f, +}; /* END of CR_In_Hangul_Compatibility_Jamo */ + +/* PROPERTY: 'In_Kanbun': Block */ +static const OnigCodePoint +CR_In_Kanbun[] = { 1, +0x3190, 0x319f, +}; /* END of CR_In_Kanbun */ + +/* PROPERTY: 'In_Bopomofo_Extended': Block */ +static const OnigCodePoint +CR_In_Bopomofo_Extended[] = { 1, +0x31a0, 0x31bf, +}; /* END of CR_In_Bopomofo_Extended */ + +/* PROPERTY: 'In_CJK_Strokes': Block */ +static const OnigCodePoint +CR_In_CJK_Strokes[] = { 1, +0x31c0, 0x31ef, +}; /* END of CR_In_CJK_Strokes */ + +/* PROPERTY: 'In_Katakana_Phonetic_Extensions': Block */ +static const OnigCodePoint +CR_In_Katakana_Phonetic_Extensions[] = { 1, +0x31f0, 0x31ff, +}; /* END of CR_In_Katakana_Phonetic_Extensions */ + +/* PROPERTY: 'In_Enclosed_CJK_Letters_and_Months': Block */ +static const OnigCodePoint +CR_In_Enclosed_CJK_Letters_and_Months[] = { 1, +0x3200, 0x32ff, +}; /* END of CR_In_Enclosed_CJK_Letters_and_Months */ + +/* PROPERTY: 'In_CJK_Compatibility': Block */ +static const OnigCodePoint +CR_In_CJK_Compatibility[] = { 1, +0x3300, 0x33ff, +}; /* END of CR_In_CJK_Compatibility */ + +/* PROPERTY: 'In_CJK_Unified_Ideographs_Extension_A': Block */ +static const OnigCodePoint +CR_In_CJK_Unified_Ideographs_Extension_A[] = { 1, +0x3400, 0x4dbf, +}; /* END of CR_In_CJK_Unified_Ideographs_Extension_A */ + +/* PROPERTY: 'In_Yijing_Hexagram_Symbols': Block */ +static const OnigCodePoint +CR_In_Yijing_Hexagram_Symbols[] = { 1, +0x4dc0, 0x4dff, +}; /* END of CR_In_Yijing_Hexagram_Symbols */ + +/* PROPERTY: 'In_CJK_Unified_Ideographs': Block */ +static const OnigCodePoint +CR_In_CJK_Unified_Ideographs[] = { 1, +0x4e00, 0x9fff, +}; /* END of CR_In_CJK_Unified_Ideographs */ + +/* PROPERTY: 'In_Yi_Syllables': Block */ +static const OnigCodePoint +CR_In_Yi_Syllables[] = { 1, +0xa000, 0xa48f, +}; /* END of CR_In_Yi_Syllables */ + +/* PROPERTY: 'In_Yi_Radicals': Block */ +static const OnigCodePoint +CR_In_Yi_Radicals[] = { 1, +0xa490, 0xa4cf, +}; /* END of CR_In_Yi_Radicals */ + +/* PROPERTY: 'In_Lisu': Block */ +static const OnigCodePoint +CR_In_Lisu[] = { 1, +0xa4d0, 0xa4ff, +}; /* END of CR_In_Lisu */ + +/* PROPERTY: 'In_Vai': Block */ +static const OnigCodePoint +CR_In_Vai[] = { 1, +0xa500, 0xa63f, +}; /* END of CR_In_Vai */ + +/* PROPERTY: 'In_Cyrillic_Extended_B': Block */ +static const OnigCodePoint +CR_In_Cyrillic_Extended_B[] = { 1, +0xa640, 0xa69f, +}; /* END of CR_In_Cyrillic_Extended_B */ + +/* PROPERTY: 'In_Bamum': Block */ +static const OnigCodePoint +CR_In_Bamum[] = { 1, +0xa6a0, 0xa6ff, +}; /* END of CR_In_Bamum */ + +/* PROPERTY: 'In_Modifier_Tone_Letters': Block */ +static const OnigCodePoint +CR_In_Modifier_Tone_Letters[] = { 1, +0xa700, 0xa71f, +}; /* END of CR_In_Modifier_Tone_Letters */ + +/* PROPERTY: 'In_Latin_Extended_D': Block */ +static const OnigCodePoint +CR_In_Latin_Extended_D[] = { 1, +0xa720, 0xa7ff, +}; /* END of CR_In_Latin_Extended_D */ + +/* PROPERTY: 'In_Syloti_Nagri': Block */ +static const OnigCodePoint +CR_In_Syloti_Nagri[] = { 1, +0xa800, 0xa82f, +}; /* END of CR_In_Syloti_Nagri */ + +/* PROPERTY: 'In_Common_Indic_Number_Forms': Block */ +static const OnigCodePoint +CR_In_Common_Indic_Number_Forms[] = { 1, +0xa830, 0xa83f, +}; /* END of CR_In_Common_Indic_Number_Forms */ + +/* PROPERTY: 'In_Phags_pa': Block */ +static const OnigCodePoint +CR_In_Phags_pa[] = { 1, +0xa840, 0xa87f, +}; /* END of CR_In_Phags_pa */ + +/* PROPERTY: 'In_Saurashtra': Block */ +static const OnigCodePoint +CR_In_Saurashtra[] = { 1, +0xa880, 0xa8df, +}; /* END of CR_In_Saurashtra */ + +/* PROPERTY: 'In_Devanagari_Extended': Block */ +static const OnigCodePoint +CR_In_Devanagari_Extended[] = { 1, +0xa8e0, 0xa8ff, +}; /* END of CR_In_Devanagari_Extended */ + +/* PROPERTY: 'In_Kayah_Li': Block */ +static const OnigCodePoint +CR_In_Kayah_Li[] = { 1, +0xa900, 0xa92f, +}; /* END of CR_In_Kayah_Li */ + +/* PROPERTY: 'In_Rejang': Block */ +static const OnigCodePoint +CR_In_Rejang[] = { 1, +0xa930, 0xa95f, +}; /* END of CR_In_Rejang */ + +/* PROPERTY: 'In_Hangul_Jamo_Extended_A': Block */ +static const OnigCodePoint +CR_In_Hangul_Jamo_Extended_A[] = { 1, +0xa960, 0xa97f, +}; /* END of CR_In_Hangul_Jamo_Extended_A */ + +/* PROPERTY: 'In_Javanese': Block */ +static const OnigCodePoint +CR_In_Javanese[] = { 1, +0xa980, 0xa9df, +}; /* END of CR_In_Javanese */ + +/* PROPERTY: 'In_Myanmar_Extended_B': Block */ +static const OnigCodePoint +CR_In_Myanmar_Extended_B[] = { 1, +0xa9e0, 0xa9ff, +}; /* END of CR_In_Myanmar_Extended_B */ + +/* PROPERTY: 'In_Cham': Block */ +static const OnigCodePoint +CR_In_Cham[] = { 1, +0xaa00, 0xaa5f, +}; /* END of CR_In_Cham */ + +/* PROPERTY: 'In_Myanmar_Extended_A': Block */ +static const OnigCodePoint +CR_In_Myanmar_Extended_A[] = { 1, +0xaa60, 0xaa7f, +}; /* END of CR_In_Myanmar_Extended_A */ + +/* PROPERTY: 'In_Tai_Viet': Block */ +static const OnigCodePoint +CR_In_Tai_Viet[] = { 1, +0xaa80, 0xaadf, +}; /* END of CR_In_Tai_Viet */ + +/* PROPERTY: 'In_Meetei_Mayek_Extensions': Block */ +static const OnigCodePoint +CR_In_Meetei_Mayek_Extensions[] = { 1, +0xaae0, 0xaaff, +}; /* END of CR_In_Meetei_Mayek_Extensions */ + +/* PROPERTY: 'In_Ethiopic_Extended_A': Block */ +static const OnigCodePoint +CR_In_Ethiopic_Extended_A[] = { 1, +0xab00, 0xab2f, +}; /* END of CR_In_Ethiopic_Extended_A */ + +/* PROPERTY: 'In_Latin_Extended_E': Block */ +static const OnigCodePoint +CR_In_Latin_Extended_E[] = { 1, +0xab30, 0xab6f, +}; /* END of CR_In_Latin_Extended_E */ + +/* PROPERTY: 'In_Cherokee_Supplement': Block */ +static const OnigCodePoint +CR_In_Cherokee_Supplement[] = { 1, +0xab70, 0xabbf, +}; /* END of CR_In_Cherokee_Supplement */ + +/* PROPERTY: 'In_Meetei_Mayek': Block */ +static const OnigCodePoint +CR_In_Meetei_Mayek[] = { 1, +0xabc0, 0xabff, +}; /* END of CR_In_Meetei_Mayek */ + +/* PROPERTY: 'In_Hangul_Syllables': Block */ +static const OnigCodePoint +CR_In_Hangul_Syllables[] = { 1, +0xac00, 0xd7af, +}; /* END of CR_In_Hangul_Syllables */ + +/* PROPERTY: 'In_Hangul_Jamo_Extended_B': Block */ +static const OnigCodePoint +CR_In_Hangul_Jamo_Extended_B[] = { 1, +0xd7b0, 0xd7ff, +}; /* END of CR_In_Hangul_Jamo_Extended_B */ + +/* PROPERTY: 'In_High_Surrogates': Block */ +static const OnigCodePoint +CR_In_High_Surrogates[] = { 1, +0xd800, 0xdb7f, +}; /* END of CR_In_High_Surrogates */ + +/* PROPERTY: 'In_High_Private_Use_Surrogates': Block */ +static const OnigCodePoint +CR_In_High_Private_Use_Surrogates[] = { 1, +0xdb80, 0xdbff, +}; /* END of CR_In_High_Private_Use_Surrogates */ + +/* PROPERTY: 'In_Low_Surrogates': Block */ +static const OnigCodePoint +CR_In_Low_Surrogates[] = { 1, +0xdc00, 0xdfff, +}; /* END of CR_In_Low_Surrogates */ + +/* PROPERTY: 'In_Private_Use_Area': Block */ +static const OnigCodePoint +CR_In_Private_Use_Area[] = { 1, +0xe000, 0xf8ff, +}; /* END of CR_In_Private_Use_Area */ + +/* PROPERTY: 'In_CJK_Compatibility_Ideographs': Block */ +static const OnigCodePoint +CR_In_CJK_Compatibility_Ideographs[] = { 1, +0xf900, 0xfaff, +}; /* END of CR_In_CJK_Compatibility_Ideographs */ + +/* PROPERTY: 'In_Alphabetic_Presentation_Forms': Block */ +static const OnigCodePoint +CR_In_Alphabetic_Presentation_Forms[] = { 1, +0xfb00, 0xfb4f, +}; /* END of CR_In_Alphabetic_Presentation_Forms */ + +/* PROPERTY: 'In_Arabic_Presentation_Forms_A': Block */ +static const OnigCodePoint +CR_In_Arabic_Presentation_Forms_A[] = { 1, +0xfb50, 0xfdff, +}; /* END of CR_In_Arabic_Presentation_Forms_A */ + +/* PROPERTY: 'In_Variation_Selectors': Block */ +static const OnigCodePoint +CR_In_Variation_Selectors[] = { 1, +0xfe00, 0xfe0f, +}; /* END of CR_In_Variation_Selectors */ + +/* PROPERTY: 'In_Vertical_Forms': Block */ +static const OnigCodePoint +CR_In_Vertical_Forms[] = { 1, +0xfe10, 0xfe1f, +}; /* END of CR_In_Vertical_Forms */ + +/* PROPERTY: 'In_Combining_Half_Marks': Block */ +static const OnigCodePoint +CR_In_Combining_Half_Marks[] = { 1, +0xfe20, 0xfe2f, +}; /* END of CR_In_Combining_Half_Marks */ + +/* PROPERTY: 'In_CJK_Compatibility_Forms': Block */ +static const OnigCodePoint +CR_In_CJK_Compatibility_Forms[] = { 1, +0xfe30, 0xfe4f, +}; /* END of CR_In_CJK_Compatibility_Forms */ + +/* PROPERTY: 'In_Small_Form_Variants': Block */ +static const OnigCodePoint +CR_In_Small_Form_Variants[] = { 1, +0xfe50, 0xfe6f, +}; /* END of CR_In_Small_Form_Variants */ + +/* PROPERTY: 'In_Arabic_Presentation_Forms_B': Block */ +static const OnigCodePoint +CR_In_Arabic_Presentation_Forms_B[] = { 1, +0xfe70, 0xfeff, +}; /* END of CR_In_Arabic_Presentation_Forms_B */ + +/* PROPERTY: 'In_Halfwidth_and_Fullwidth_Forms': Block */ +static const OnigCodePoint +CR_In_Halfwidth_and_Fullwidth_Forms[] = { 1, +0xff00, 0xffef, +}; /* END of CR_In_Halfwidth_and_Fullwidth_Forms */ + +/* PROPERTY: 'In_Specials': Block */ +static const OnigCodePoint +CR_In_Specials[] = { 1, +0xfff0, 0xffff, +}; /* END of CR_In_Specials */ + +/* PROPERTY: 'In_Linear_B_Syllabary': Block */ +static const OnigCodePoint +CR_In_Linear_B_Syllabary[] = { 1, +0x10000, 0x1007f, +}; /* END of CR_In_Linear_B_Syllabary */ + +/* PROPERTY: 'In_Linear_B_Ideograms': Block */ +static const OnigCodePoint +CR_In_Linear_B_Ideograms[] = { 1, +0x10080, 0x100ff, +}; /* END of CR_In_Linear_B_Ideograms */ + +/* PROPERTY: 'In_Aegean_Numbers': Block */ +static const OnigCodePoint +CR_In_Aegean_Numbers[] = { 1, +0x10100, 0x1013f, +}; /* END of CR_In_Aegean_Numbers */ + +/* PROPERTY: 'In_Ancient_Greek_Numbers': Block */ +static const OnigCodePoint +CR_In_Ancient_Greek_Numbers[] = { 1, +0x10140, 0x1018f, +}; /* END of CR_In_Ancient_Greek_Numbers */ + +/* PROPERTY: 'In_Ancient_Symbols': Block */ +static const OnigCodePoint +CR_In_Ancient_Symbols[] = { 1, +0x10190, 0x101cf, +}; /* END of CR_In_Ancient_Symbols */ + +/* PROPERTY: 'In_Phaistos_Disc': Block */ +static const OnigCodePoint +CR_In_Phaistos_Disc[] = { 1, +0x101d0, 0x101ff, +}; /* END of CR_In_Phaistos_Disc */ + +/* PROPERTY: 'In_Lycian': Block */ +static const OnigCodePoint +CR_In_Lycian[] = { 1, +0x10280, 0x1029f, +}; /* END of CR_In_Lycian */ + +/* PROPERTY: 'In_Carian': Block */ +static const OnigCodePoint +CR_In_Carian[] = { 1, +0x102a0, 0x102df, +}; /* END of CR_In_Carian */ + +/* PROPERTY: 'In_Coptic_Epact_Numbers': Block */ +static const OnigCodePoint +CR_In_Coptic_Epact_Numbers[] = { 1, +0x102e0, 0x102ff, +}; /* END of CR_In_Coptic_Epact_Numbers */ + +/* PROPERTY: 'In_Old_Italic': Block */ +static const OnigCodePoint +CR_In_Old_Italic[] = { 1, +0x10300, 0x1032f, +}; /* END of CR_In_Old_Italic */ + +/* PROPERTY: 'In_Gothic': Block */ +static const OnigCodePoint +CR_In_Gothic[] = { 1, +0x10330, 0x1034f, +}; /* END of CR_In_Gothic */ + +/* PROPERTY: 'In_Old_Permic': Block */ +static const OnigCodePoint +CR_In_Old_Permic[] = { 1, +0x10350, 0x1037f, +}; /* END of CR_In_Old_Permic */ + +/* PROPERTY: 'In_Ugaritic': Block */ +static const OnigCodePoint +CR_In_Ugaritic[] = { 1, +0x10380, 0x1039f, +}; /* END of CR_In_Ugaritic */ + +/* PROPERTY: 'In_Old_Persian': Block */ +static const OnigCodePoint +CR_In_Old_Persian[] = { 1, +0x103a0, 0x103df, +}; /* END of CR_In_Old_Persian */ + +/* PROPERTY: 'In_Deseret': Block */ +#define CR_In_Deseret CR_Deseret + +/* PROPERTY: 'In_Shavian': Block */ +#define CR_In_Shavian CR_Shavian + +/* PROPERTY: 'In_Osmanya': Block */ +static const OnigCodePoint +CR_In_Osmanya[] = { 1, +0x10480, 0x104af, +}; /* END of CR_In_Osmanya */ + +/* PROPERTY: 'In_Osage': Block */ +static const OnigCodePoint +CR_In_Osage[] = { 1, +0x104b0, 0x104ff, +}; /* END of CR_In_Osage */ + +/* PROPERTY: 'In_Elbasan': Block */ +static const OnigCodePoint +CR_In_Elbasan[] = { 1, +0x10500, 0x1052f, +}; /* END of CR_In_Elbasan */ + +/* PROPERTY: 'In_Caucasian_Albanian': Block */ +static const OnigCodePoint +CR_In_Caucasian_Albanian[] = { 1, +0x10530, 0x1056f, +}; /* END of CR_In_Caucasian_Albanian */ + +/* PROPERTY: 'In_Vithkuqi': Block */ +static const OnigCodePoint +CR_In_Vithkuqi[] = { 1, +0x10570, 0x105bf, +}; /* END of CR_In_Vithkuqi */ + +/* PROPERTY: 'In_Todhri': Block */ +static const OnigCodePoint +CR_In_Todhri[] = { 1, +0x105c0, 0x105ff, +}; /* END of CR_In_Todhri */ + +/* PROPERTY: 'In_Linear_A': Block */ +static const OnigCodePoint +CR_In_Linear_A[] = { 1, +0x10600, 0x1077f, +}; /* END of CR_In_Linear_A */ + +/* PROPERTY: 'In_Latin_Extended_F': Block */ +static const OnigCodePoint +CR_In_Latin_Extended_F[] = { 1, +0x10780, 0x107bf, +}; /* END of CR_In_Latin_Extended_F */ + +/* PROPERTY: 'In_Cypriot_Syllabary': Block */ +static const OnigCodePoint +CR_In_Cypriot_Syllabary[] = { 1, +0x10800, 0x1083f, +}; /* END of CR_In_Cypriot_Syllabary */ + +/* PROPERTY: 'In_Imperial_Aramaic': Block */ +static const OnigCodePoint +CR_In_Imperial_Aramaic[] = { 1, +0x10840, 0x1085f, +}; /* END of CR_In_Imperial_Aramaic */ + +/* PROPERTY: 'In_Palmyrene': Block */ +#define CR_In_Palmyrene CR_Palmyrene + +/* PROPERTY: 'In_Nabataean': Block */ +static const OnigCodePoint +CR_In_Nabataean[] = { 1, +0x10880, 0x108af, +}; /* END of CR_In_Nabataean */ + +/* PROPERTY: 'In_Hatran': Block */ +static const OnigCodePoint +CR_In_Hatran[] = { 1, +0x108e0, 0x108ff, +}; /* END of CR_In_Hatran */ + +/* PROPERTY: 'In_Phoenician': Block */ +static const OnigCodePoint +CR_In_Phoenician[] = { 1, +0x10900, 0x1091f, +}; /* END of CR_In_Phoenician */ + +/* PROPERTY: 'In_Lydian': Block */ +static const OnigCodePoint +CR_In_Lydian[] = { 1, +0x10920, 0x1093f, +}; /* END of CR_In_Lydian */ + +/* PROPERTY: 'In_Meroitic_Hieroglyphs': Block */ +#define CR_In_Meroitic_Hieroglyphs CR_Meroitic_Hieroglyphs + +/* PROPERTY: 'In_Meroitic_Cursive': Block */ +static const OnigCodePoint +CR_In_Meroitic_Cursive[] = { 1, +0x109a0, 0x109ff, +}; /* END of CR_In_Meroitic_Cursive */ + +/* PROPERTY: 'In_Kharoshthi': Block */ +static const OnigCodePoint +CR_In_Kharoshthi[] = { 1, +0x10a00, 0x10a5f, +}; /* END of CR_In_Kharoshthi */ + +/* PROPERTY: 'In_Old_South_Arabian': Block */ +#define CR_In_Old_South_Arabian CR_Old_South_Arabian + +/* PROPERTY: 'In_Old_North_Arabian': Block */ +#define CR_In_Old_North_Arabian CR_Old_North_Arabian + +/* PROPERTY: 'In_Manichaean': Block */ +static const OnigCodePoint +CR_In_Manichaean[] = { 1, +0x10ac0, 0x10aff, +}; /* END of CR_In_Manichaean */ + +/* PROPERTY: 'In_Avestan': Block */ +static const OnigCodePoint +CR_In_Avestan[] = { 1, +0x10b00, 0x10b3f, +}; /* END of CR_In_Avestan */ + +/* PROPERTY: 'In_Inscriptional_Parthian': Block */ +static const OnigCodePoint +CR_In_Inscriptional_Parthian[] = { 1, +0x10b40, 0x10b5f, +}; /* END of CR_In_Inscriptional_Parthian */ + +/* PROPERTY: 'In_Inscriptional_Pahlavi': Block */ +static const OnigCodePoint +CR_In_Inscriptional_Pahlavi[] = { 1, +0x10b60, 0x10b7f, +}; /* END of CR_In_Inscriptional_Pahlavi */ + +/* PROPERTY: 'In_Psalter_Pahlavi': Block */ +static const OnigCodePoint +CR_In_Psalter_Pahlavi[] = { 1, +0x10b80, 0x10baf, +}; /* END of CR_In_Psalter_Pahlavi */ + +/* PROPERTY: 'In_Old_Turkic': Block */ +static const OnigCodePoint +CR_In_Old_Turkic[] = { 1, +0x10c00, 0x10c4f, +}; /* END of CR_In_Old_Turkic */ + +/* PROPERTY: 'In_Old_Hungarian': Block */ +static const OnigCodePoint +CR_In_Old_Hungarian[] = { 1, +0x10c80, 0x10cff, +}; /* END of CR_In_Old_Hungarian */ + +/* PROPERTY: 'In_Hanifi_Rohingya': Block */ +static const OnigCodePoint +CR_In_Hanifi_Rohingya[] = { 1, +0x10d00, 0x10d3f, +}; /* END of CR_In_Hanifi_Rohingya */ + +/* PROPERTY: 'In_Garay': Block */ +static const OnigCodePoint +CR_In_Garay[] = { 1, +0x10d40, 0x10d8f, +}; /* END of CR_In_Garay */ + +/* PROPERTY: 'In_Rumi_Numeral_Symbols': Block */ +static const OnigCodePoint +CR_In_Rumi_Numeral_Symbols[] = { 1, +0x10e60, 0x10e7f, +}; /* END of CR_In_Rumi_Numeral_Symbols */ + +/* PROPERTY: 'In_Yezidi': Block */ +static const OnigCodePoint +CR_In_Yezidi[] = { 1, +0x10e80, 0x10ebf, +}; /* END of CR_In_Yezidi */ + +/* PROPERTY: 'In_Arabic_Extended_C': Block */ +static const OnigCodePoint +CR_In_Arabic_Extended_C[] = { 1, +0x10ec0, 0x10eff, +}; /* END of CR_In_Arabic_Extended_C */ + +/* PROPERTY: 'In_Old_Sogdian': Block */ +static const OnigCodePoint +CR_In_Old_Sogdian[] = { 1, +0x10f00, 0x10f2f, +}; /* END of CR_In_Old_Sogdian */ + +/* PROPERTY: 'In_Sogdian': Block */ +static const OnigCodePoint +CR_In_Sogdian[] = { 1, +0x10f30, 0x10f6f, +}; /* END of CR_In_Sogdian */ + +/* PROPERTY: 'In_Old_Uyghur': Block */ +static const OnigCodePoint +CR_In_Old_Uyghur[] = { 1, +0x10f70, 0x10faf, +}; /* END of CR_In_Old_Uyghur */ + +/* PROPERTY: 'In_Chorasmian': Block */ +static const OnigCodePoint +CR_In_Chorasmian[] = { 1, +0x10fb0, 0x10fdf, +}; /* END of CR_In_Chorasmian */ + +/* PROPERTY: 'In_Elymaic': Block */ +static const OnigCodePoint +CR_In_Elymaic[] = { 1, +0x10fe0, 0x10fff, +}; /* END of CR_In_Elymaic */ + +/* PROPERTY: 'In_Brahmi': Block */ +static const OnigCodePoint +CR_In_Brahmi[] = { 1, +0x11000, 0x1107f, +}; /* END of CR_In_Brahmi */ + +/* PROPERTY: 'In_Kaithi': Block */ +static const OnigCodePoint +CR_In_Kaithi[] = { 1, +0x11080, 0x110cf, +}; /* END of CR_In_Kaithi */ + +/* PROPERTY: 'In_Sora_Sompeng': Block */ +static const OnigCodePoint +CR_In_Sora_Sompeng[] = { 1, +0x110d0, 0x110ff, +}; /* END of CR_In_Sora_Sompeng */ + +/* PROPERTY: 'In_Chakma': Block */ +static const OnigCodePoint +CR_In_Chakma[] = { 1, +0x11100, 0x1114f, +}; /* END of CR_In_Chakma */ + +/* PROPERTY: 'In_Mahajani': Block */ +static const OnigCodePoint +CR_In_Mahajani[] = { 1, +0x11150, 0x1117f, +}; /* END of CR_In_Mahajani */ + +/* PROPERTY: 'In_Sharada': Block */ +#define CR_In_Sharada CR_Sharada + +/* PROPERTY: 'In_Sinhala_Archaic_Numbers': Block */ +static const OnigCodePoint +CR_In_Sinhala_Archaic_Numbers[] = { 1, +0x111e0, 0x111ff, +}; /* END of CR_In_Sinhala_Archaic_Numbers */ + +/* PROPERTY: 'In_Khojki': Block */ +static const OnigCodePoint +CR_In_Khojki[] = { 1, +0x11200, 0x1124f, +}; /* END of CR_In_Khojki */ + +/* PROPERTY: 'In_Multani': Block */ +static const OnigCodePoint +CR_In_Multani[] = { 1, +0x11280, 0x112af, +}; /* END of CR_In_Multani */ + +/* PROPERTY: 'In_Khudawadi': Block */ +static const OnigCodePoint +CR_In_Khudawadi[] = { 1, +0x112b0, 0x112ff, +}; /* END of CR_In_Khudawadi */ + +/* PROPERTY: 'In_Grantha': Block */ +static const OnigCodePoint +CR_In_Grantha[] = { 1, +0x11300, 0x1137f, +}; /* END of CR_In_Grantha */ + +/* PROPERTY: 'In_Tulu_Tigalari': Block */ +static const OnigCodePoint +CR_In_Tulu_Tigalari[] = { 1, +0x11380, 0x113ff, +}; /* END of CR_In_Tulu_Tigalari */ + +/* PROPERTY: 'In_Newa': Block */ +static const OnigCodePoint +CR_In_Newa[] = { 1, +0x11400, 0x1147f, +}; /* END of CR_In_Newa */ + +/* PROPERTY: 'In_Tirhuta': Block */ +static const OnigCodePoint +CR_In_Tirhuta[] = { 1, +0x11480, 0x114df, +}; /* END of CR_In_Tirhuta */ + +/* PROPERTY: 'In_Siddham': Block */ +static const OnigCodePoint +CR_In_Siddham[] = { 1, +0x11580, 0x115ff, +}; /* END of CR_In_Siddham */ + +/* PROPERTY: 'In_Modi': Block */ +static const OnigCodePoint +CR_In_Modi[] = { 1, +0x11600, 0x1165f, +}; /* END of CR_In_Modi */ + +/* PROPERTY: 'In_Mongolian_Supplement': Block */ +static const OnigCodePoint +CR_In_Mongolian_Supplement[] = { 1, +0x11660, 0x1167f, +}; /* END of CR_In_Mongolian_Supplement */ + +/* PROPERTY: 'In_Takri': Block */ +static const OnigCodePoint +CR_In_Takri[] = { 1, +0x11680, 0x116cf, +}; /* END of CR_In_Takri */ + +/* PROPERTY: 'In_Myanmar_Extended_C': Block */ +static const OnigCodePoint +CR_In_Myanmar_Extended_C[] = { 1, +0x116d0, 0x116ff, +}; /* END of CR_In_Myanmar_Extended_C */ + +/* PROPERTY: 'In_Ahom': Block */ +static const OnigCodePoint +CR_In_Ahom[] = { 1, +0x11700, 0x1174f, +}; /* END of CR_In_Ahom */ + +/* PROPERTY: 'In_Dogra': Block */ +static const OnigCodePoint +CR_In_Dogra[] = { 1, +0x11800, 0x1184f, +}; /* END of CR_In_Dogra */ + +/* PROPERTY: 'In_Warang_Citi': Block */ +static const OnigCodePoint +CR_In_Warang_Citi[] = { 1, +0x118a0, 0x118ff, +}; /* END of CR_In_Warang_Citi */ + +/* PROPERTY: 'In_Dives_Akuru': Block */ +static const OnigCodePoint +CR_In_Dives_Akuru[] = { 1, +0x11900, 0x1195f, +}; /* END of CR_In_Dives_Akuru */ + +/* PROPERTY: 'In_Nandinagari': Block */ +static const OnigCodePoint +CR_In_Nandinagari[] = { 1, +0x119a0, 0x119ff, +}; /* END of CR_In_Nandinagari */ + +/* PROPERTY: 'In_Zanabazar_Square': Block */ +static const OnigCodePoint +CR_In_Zanabazar_Square[] = { 1, +0x11a00, 0x11a4f, +}; /* END of CR_In_Zanabazar_Square */ + +/* PROPERTY: 'In_Soyombo': Block */ +static const OnigCodePoint +CR_In_Soyombo[] = { 1, +0x11a50, 0x11aaf, +}; /* END of CR_In_Soyombo */ + +/* PROPERTY: 'In_Unified_Canadian_Aboriginal_Syllabics_Extended_A': Block */ +static const OnigCodePoint +CR_In_Unified_Canadian_Aboriginal_Syllabics_Extended_A[] = { 1, +0x11ab0, 0x11abf, +}; /* END of CR_In_Unified_Canadian_Aboriginal_Syllabics_Extended_A */ + +/* PROPERTY: 'In_Pau_Cin_Hau': Block */ +static const OnigCodePoint +CR_In_Pau_Cin_Hau[] = { 1, +0x11ac0, 0x11aff, +}; /* END of CR_In_Pau_Cin_Hau */ + +/* PROPERTY: 'In_Devanagari_Extended_A': Block */ +static const OnigCodePoint +CR_In_Devanagari_Extended_A[] = { 1, +0x11b00, 0x11b5f, +}; /* END of CR_In_Devanagari_Extended_A */ + +/* PROPERTY: 'In_Sunuwar': Block */ +static const OnigCodePoint +CR_In_Sunuwar[] = { 1, +0x11bc0, 0x11bff, +}; /* END of CR_In_Sunuwar */ + +/* PROPERTY: 'In_Bhaiksuki': Block */ +static const OnigCodePoint +CR_In_Bhaiksuki[] = { 1, +0x11c00, 0x11c6f, +}; /* END of CR_In_Bhaiksuki */ + +/* PROPERTY: 'In_Marchen': Block */ +static const OnigCodePoint +CR_In_Marchen[] = { 1, +0x11c70, 0x11cbf, +}; /* END of CR_In_Marchen */ + +/* PROPERTY: 'In_Masaram_Gondi': Block */ +static const OnigCodePoint +CR_In_Masaram_Gondi[] = { 1, +0x11d00, 0x11d5f, +}; /* END of CR_In_Masaram_Gondi */ + +/* PROPERTY: 'In_Gunjala_Gondi': Block */ +static const OnigCodePoint +CR_In_Gunjala_Gondi[] = { 1, +0x11d60, 0x11daf, +}; /* END of CR_In_Gunjala_Gondi */ + +/* PROPERTY: 'In_Makasar': Block */ +static const OnigCodePoint +CR_In_Makasar[] = { 1, +0x11ee0, 0x11eff, +}; /* END of CR_In_Makasar */ + +/* PROPERTY: 'In_Kawi': Block */ +static const OnigCodePoint +CR_In_Kawi[] = { 1, +0x11f00, 0x11f5f, +}; /* END of CR_In_Kawi */ + +/* PROPERTY: 'In_Lisu_Supplement': Block */ +static const OnigCodePoint +CR_In_Lisu_Supplement[] = { 1, +0x11fb0, 0x11fbf, +}; /* END of CR_In_Lisu_Supplement */ + +/* PROPERTY: 'In_Tamil_Supplement': Block */ +static const OnigCodePoint +CR_In_Tamil_Supplement[] = { 1, +0x11fc0, 0x11fff, +}; /* END of CR_In_Tamil_Supplement */ + +/* PROPERTY: 'In_Cuneiform': Block */ +static const OnigCodePoint +CR_In_Cuneiform[] = { 1, +0x12000, 0x123ff, +}; /* END of CR_In_Cuneiform */ + +/* PROPERTY: 'In_Cuneiform_Numbers_and_Punctuation': Block */ +static const OnigCodePoint +CR_In_Cuneiform_Numbers_and_Punctuation[] = { 1, +0x12400, 0x1247f, +}; /* END of CR_In_Cuneiform_Numbers_and_Punctuation */ + +/* PROPERTY: 'In_Early_Dynastic_Cuneiform': Block */ +static const OnigCodePoint +CR_In_Early_Dynastic_Cuneiform[] = { 1, +0x12480, 0x1254f, +}; /* END of CR_In_Early_Dynastic_Cuneiform */ + +/* PROPERTY: 'In_Cypro_Minoan': Block */ +static const OnigCodePoint +CR_In_Cypro_Minoan[] = { 1, +0x12f90, 0x12fff, +}; /* END of CR_In_Cypro_Minoan */ + +/* PROPERTY: 'In_Egyptian_Hieroglyphs': Block */ +static const OnigCodePoint +CR_In_Egyptian_Hieroglyphs[] = { 1, +0x13000, 0x1342f, +}; /* END of CR_In_Egyptian_Hieroglyphs */ + +/* PROPERTY: 'In_Egyptian_Hieroglyph_Format_Controls': Block */ +static const OnigCodePoint +CR_In_Egyptian_Hieroglyph_Format_Controls[] = { 1, +0x13430, 0x1345f, +}; /* END of CR_In_Egyptian_Hieroglyph_Format_Controls */ + +/* PROPERTY: 'In_Egyptian_Hieroglyphs_Extended_A': Block */ +static const OnigCodePoint +CR_In_Egyptian_Hieroglyphs_Extended_A[] = { 1, +0x13460, 0x143ff, +}; /* END of CR_In_Egyptian_Hieroglyphs_Extended_A */ + +/* PROPERTY: 'In_Anatolian_Hieroglyphs': Block */ +static const OnigCodePoint +CR_In_Anatolian_Hieroglyphs[] = { 1, +0x14400, 0x1467f, +}; /* END of CR_In_Anatolian_Hieroglyphs */ + +/* PROPERTY: 'In_Gurung_Khema': Block */ +static const OnigCodePoint +CR_In_Gurung_Khema[] = { 1, +0x16100, 0x1613f, +}; /* END of CR_In_Gurung_Khema */ + +/* PROPERTY: 'In_Bamum_Supplement': Block */ +static const OnigCodePoint +CR_In_Bamum_Supplement[] = { 1, +0x16800, 0x16a3f, +}; /* END of CR_In_Bamum_Supplement */ + +/* PROPERTY: 'In_Mro': Block */ +static const OnigCodePoint +CR_In_Mro[] = { 1, +0x16a40, 0x16a6f, +}; /* END of CR_In_Mro */ + +/* PROPERTY: 'In_Tangsa': Block */ +static const OnigCodePoint +CR_In_Tangsa[] = { 1, +0x16a70, 0x16acf, +}; /* END of CR_In_Tangsa */ + +/* PROPERTY: 'In_Bassa_Vah': Block */ +static const OnigCodePoint +CR_In_Bassa_Vah[] = { 1, +0x16ad0, 0x16aff, +}; /* END of CR_In_Bassa_Vah */ + +/* PROPERTY: 'In_Pahawh_Hmong': Block */ +static const OnigCodePoint +CR_In_Pahawh_Hmong[] = { 1, +0x16b00, 0x16b8f, +}; /* END of CR_In_Pahawh_Hmong */ + +/* PROPERTY: 'In_Kirat_Rai': Block */ +static const OnigCodePoint +CR_In_Kirat_Rai[] = { 1, +0x16d40, 0x16d7f, +}; /* END of CR_In_Kirat_Rai */ + +/* PROPERTY: 'In_Medefaidrin': Block */ +static const OnigCodePoint +CR_In_Medefaidrin[] = { 1, +0x16e40, 0x16e9f, +}; /* END of CR_In_Medefaidrin */ + +/* PROPERTY: 'In_Miao': Block */ +static const OnigCodePoint +CR_In_Miao[] = { 1, +0x16f00, 0x16f9f, +}; /* END of CR_In_Miao */ + +/* PROPERTY: 'In_Ideographic_Symbols_and_Punctuation': Block */ +static const OnigCodePoint +CR_In_Ideographic_Symbols_and_Punctuation[] = { 1, +0x16fe0, 0x16fff, +}; /* END of CR_In_Ideographic_Symbols_and_Punctuation */ + +/* PROPERTY: 'In_Tangut': Block */ +static const OnigCodePoint +CR_In_Tangut[] = { 1, +0x17000, 0x187ff, +}; /* END of CR_In_Tangut */ + +/* PROPERTY: 'In_Tangut_Components': Block */ +static const OnigCodePoint +CR_In_Tangut_Components[] = { 1, +0x18800, 0x18aff, +}; /* END of CR_In_Tangut_Components */ + +/* PROPERTY: 'In_Khitan_Small_Script': Block */ +static const OnigCodePoint +CR_In_Khitan_Small_Script[] = { 1, +0x18b00, 0x18cff, +}; /* END of CR_In_Khitan_Small_Script */ + +/* PROPERTY: 'In_Tangut_Supplement': Block */ +static const OnigCodePoint +CR_In_Tangut_Supplement[] = { 1, +0x18d00, 0x18d7f, +}; /* END of CR_In_Tangut_Supplement */ + +/* PROPERTY: 'In_Kana_Extended_B': Block */ +static const OnigCodePoint +CR_In_Kana_Extended_B[] = { 1, +0x1aff0, 0x1afff, +}; /* END of CR_In_Kana_Extended_B */ + +/* PROPERTY: 'In_Kana_Supplement': Block */ +static const OnigCodePoint +CR_In_Kana_Supplement[] = { 1, +0x1b000, 0x1b0ff, +}; /* END of CR_In_Kana_Supplement */ + +/* PROPERTY: 'In_Kana_Extended_A': Block */ +static const OnigCodePoint +CR_In_Kana_Extended_A[] = { 1, +0x1b100, 0x1b12f, +}; /* END of CR_In_Kana_Extended_A */ + +/* PROPERTY: 'In_Small_Kana_Extension': Block */ +static const OnigCodePoint +CR_In_Small_Kana_Extension[] = { 1, +0x1b130, 0x1b16f, +}; /* END of CR_In_Small_Kana_Extension */ + +/* PROPERTY: 'In_Nushu': Block */ +static const OnigCodePoint +CR_In_Nushu[] = { 1, +0x1b170, 0x1b2ff, +}; /* END of CR_In_Nushu */ + +/* PROPERTY: 'In_Duployan': Block */ +static const OnigCodePoint +CR_In_Duployan[] = { 1, +0x1bc00, 0x1bc9f, +}; /* END of CR_In_Duployan */ + +/* PROPERTY: 'In_Shorthand_Format_Controls': Block */ +static const OnigCodePoint +CR_In_Shorthand_Format_Controls[] = { 1, +0x1bca0, 0x1bcaf, +}; /* END of CR_In_Shorthand_Format_Controls */ + +/* PROPERTY: 'In_Symbols_for_Legacy_Computing_Supplement': Block */ +static const OnigCodePoint +CR_In_Symbols_for_Legacy_Computing_Supplement[] = { 1, +0x1cc00, 0x1cebf, +}; /* END of CR_In_Symbols_for_Legacy_Computing_Supplement */ + +/* PROPERTY: 'In_Znamenny_Musical_Notation': Block */ +static const OnigCodePoint +CR_In_Znamenny_Musical_Notation[] = { 1, +0x1cf00, 0x1cfcf, +}; /* END of CR_In_Znamenny_Musical_Notation */ + +/* PROPERTY: 'In_Byzantine_Musical_Symbols': Block */ +static const OnigCodePoint +CR_In_Byzantine_Musical_Symbols[] = { 1, +0x1d000, 0x1d0ff, +}; /* END of CR_In_Byzantine_Musical_Symbols */ + +/* PROPERTY: 'In_Musical_Symbols': Block */ +static const OnigCodePoint +CR_In_Musical_Symbols[] = { 1, +0x1d100, 0x1d1ff, +}; /* END of CR_In_Musical_Symbols */ + +/* PROPERTY: 'In_Ancient_Greek_Musical_Notation': Block */ +static const OnigCodePoint +CR_In_Ancient_Greek_Musical_Notation[] = { 1, +0x1d200, 0x1d24f, +}; /* END of CR_In_Ancient_Greek_Musical_Notation */ + +/* PROPERTY: 'In_Kaktovik_Numerals': Block */ +static const OnigCodePoint +CR_In_Kaktovik_Numerals[] = { 1, +0x1d2c0, 0x1d2df, +}; /* END of CR_In_Kaktovik_Numerals */ + +/* PROPERTY: 'In_Mayan_Numerals': Block */ +static const OnigCodePoint +CR_In_Mayan_Numerals[] = { 1, +0x1d2e0, 0x1d2ff, +}; /* END of CR_In_Mayan_Numerals */ + +/* PROPERTY: 'In_Tai_Xuan_Jing_Symbols': Block */ +static const OnigCodePoint +CR_In_Tai_Xuan_Jing_Symbols[] = { 1, +0x1d300, 0x1d35f, +}; /* END of CR_In_Tai_Xuan_Jing_Symbols */ + +/* PROPERTY: 'In_Counting_Rod_Numerals': Block */ +static const OnigCodePoint +CR_In_Counting_Rod_Numerals[] = { 1, +0x1d360, 0x1d37f, +}; /* END of CR_In_Counting_Rod_Numerals */ + +/* PROPERTY: 'In_Mathematical_Alphanumeric_Symbols': Block */ +static const OnigCodePoint +CR_In_Mathematical_Alphanumeric_Symbols[] = { 1, +0x1d400, 0x1d7ff, +}; /* END of CR_In_Mathematical_Alphanumeric_Symbols */ + +/* PROPERTY: 'In_Sutton_SignWriting': Block */ +static const OnigCodePoint +CR_In_Sutton_SignWriting[] = { 1, +0x1d800, 0x1daaf, +}; /* END of CR_In_Sutton_SignWriting */ + +/* PROPERTY: 'In_Latin_Extended_G': Block */ +static const OnigCodePoint +CR_In_Latin_Extended_G[] = { 1, +0x1df00, 0x1dfff, +}; /* END of CR_In_Latin_Extended_G */ + +/* PROPERTY: 'In_Glagolitic_Supplement': Block */ +static const OnigCodePoint +CR_In_Glagolitic_Supplement[] = { 1, +0x1e000, 0x1e02f, +}; /* END of CR_In_Glagolitic_Supplement */ + +/* PROPERTY: 'In_Cyrillic_Extended_D': Block */ +static const OnigCodePoint +CR_In_Cyrillic_Extended_D[] = { 1, +0x1e030, 0x1e08f, +}; /* END of CR_In_Cyrillic_Extended_D */ + +/* PROPERTY: 'In_Nyiakeng_Puachue_Hmong': Block */ +static const OnigCodePoint +CR_In_Nyiakeng_Puachue_Hmong[] = { 1, +0x1e100, 0x1e14f, +}; /* END of CR_In_Nyiakeng_Puachue_Hmong */ + +/* PROPERTY: 'In_Toto': Block */ +static const OnigCodePoint +CR_In_Toto[] = { 1, +0x1e290, 0x1e2bf, +}; /* END of CR_In_Toto */ + +/* PROPERTY: 'In_Wancho': Block */ +static const OnigCodePoint +CR_In_Wancho[] = { 1, +0x1e2c0, 0x1e2ff, +}; /* END of CR_In_Wancho */ + +/* PROPERTY: 'In_Nag_Mundari': Block */ +static const OnigCodePoint +CR_In_Nag_Mundari[] = { 1, +0x1e4d0, 0x1e4ff, +}; /* END of CR_In_Nag_Mundari */ + +/* PROPERTY: 'In_Ol_Onal': Block */ +static const OnigCodePoint +CR_In_Ol_Onal[] = { 1, +0x1e5d0, 0x1e5ff, +}; /* END of CR_In_Ol_Onal */ + +/* PROPERTY: 'In_Ethiopic_Extended_B': Block */ +static const OnigCodePoint +CR_In_Ethiopic_Extended_B[] = { 1, +0x1e7e0, 0x1e7ff, +}; /* END of CR_In_Ethiopic_Extended_B */ + +/* PROPERTY: 'In_Mende_Kikakui': Block */ +static const OnigCodePoint +CR_In_Mende_Kikakui[] = { 1, +0x1e800, 0x1e8df, +}; /* END of CR_In_Mende_Kikakui */ + +/* PROPERTY: 'In_Adlam': Block */ +static const OnigCodePoint +CR_In_Adlam[] = { 1, +0x1e900, 0x1e95f, +}; /* END of CR_In_Adlam */ + +/* PROPERTY: 'In_Indic_Siyaq_Numbers': Block */ +static const OnigCodePoint +CR_In_Indic_Siyaq_Numbers[] = { 1, +0x1ec70, 0x1ecbf, +}; /* END of CR_In_Indic_Siyaq_Numbers */ + +/* PROPERTY: 'In_Ottoman_Siyaq_Numbers': Block */ +static const OnigCodePoint +CR_In_Ottoman_Siyaq_Numbers[] = { 1, +0x1ed00, 0x1ed4f, +}; /* END of CR_In_Ottoman_Siyaq_Numbers */ + +/* PROPERTY: 'In_Arabic_Mathematical_Alphabetic_Symbols': Block */ +static const OnigCodePoint +CR_In_Arabic_Mathematical_Alphabetic_Symbols[] = { 1, +0x1ee00, 0x1eeff, +}; /* END of CR_In_Arabic_Mathematical_Alphabetic_Symbols */ + +/* PROPERTY: 'In_Mahjong_Tiles': Block */ +static const OnigCodePoint +CR_In_Mahjong_Tiles[] = { 1, +0x1f000, 0x1f02f, +}; /* END of CR_In_Mahjong_Tiles */ + +/* PROPERTY: 'In_Domino_Tiles': Block */ +static const OnigCodePoint +CR_In_Domino_Tiles[] = { 1, +0x1f030, 0x1f09f, +}; /* END of CR_In_Domino_Tiles */ + +/* PROPERTY: 'In_Playing_Cards': Block */ +static const OnigCodePoint +CR_In_Playing_Cards[] = { 1, +0x1f0a0, 0x1f0ff, +}; /* END of CR_In_Playing_Cards */ + +/* PROPERTY: 'In_Enclosed_Alphanumeric_Supplement': Block */ +static const OnigCodePoint +CR_In_Enclosed_Alphanumeric_Supplement[] = { 1, +0x1f100, 0x1f1ff, +}; /* END of CR_In_Enclosed_Alphanumeric_Supplement */ + +/* PROPERTY: 'In_Enclosed_Ideographic_Supplement': Block */ +static const OnigCodePoint +CR_In_Enclosed_Ideographic_Supplement[] = { 1, +0x1f200, 0x1f2ff, +}; /* END of CR_In_Enclosed_Ideographic_Supplement */ + +/* PROPERTY: 'In_Miscellaneous_Symbols_and_Pictographs': Block */ +static const OnigCodePoint +CR_In_Miscellaneous_Symbols_and_Pictographs[] = { 1, +0x1f300, 0x1f5ff, +}; /* END of CR_In_Miscellaneous_Symbols_and_Pictographs */ + +/* PROPERTY: 'In_Emoticons': Block */ +static const OnigCodePoint +CR_In_Emoticons[] = { 1, +0x1f600, 0x1f64f, +}; /* END of CR_In_Emoticons */ + +/* PROPERTY: 'In_Ornamental_Dingbats': Block */ +static const OnigCodePoint +CR_In_Ornamental_Dingbats[] = { 1, +0x1f650, 0x1f67f, +}; /* END of CR_In_Ornamental_Dingbats */ + +/* PROPERTY: 'In_Transport_and_Map_Symbols': Block */ +static const OnigCodePoint +CR_In_Transport_and_Map_Symbols[] = { 1, +0x1f680, 0x1f6ff, +}; /* END of CR_In_Transport_and_Map_Symbols */ + +/* PROPERTY: 'In_Alchemical_Symbols': Block */ +static const OnigCodePoint +CR_In_Alchemical_Symbols[] = { 1, +0x1f700, 0x1f77f, +}; /* END of CR_In_Alchemical_Symbols */ + +/* PROPERTY: 'In_Geometric_Shapes_Extended': Block */ +static const OnigCodePoint +CR_In_Geometric_Shapes_Extended[] = { 1, +0x1f780, 0x1f7ff, +}; /* END of CR_In_Geometric_Shapes_Extended */ + +/* PROPERTY: 'In_Supplemental_Arrows_C': Block */ +static const OnigCodePoint +CR_In_Supplemental_Arrows_C[] = { 1, +0x1f800, 0x1f8ff, +}; /* END of CR_In_Supplemental_Arrows_C */ + +/* PROPERTY: 'In_Supplemental_Symbols_and_Pictographs': Block */ +static const OnigCodePoint +CR_In_Supplemental_Symbols_and_Pictographs[] = { 1, +0x1f900, 0x1f9ff, +}; /* END of CR_In_Supplemental_Symbols_and_Pictographs */ + +/* PROPERTY: 'In_Chess_Symbols': Block */ +static const OnigCodePoint +CR_In_Chess_Symbols[] = { 1, +0x1fa00, 0x1fa6f, +}; /* END of CR_In_Chess_Symbols */ + +/* PROPERTY: 'In_Symbols_and_Pictographs_Extended_A': Block */ +static const OnigCodePoint +CR_In_Symbols_and_Pictographs_Extended_A[] = { 1, +0x1fa70, 0x1faff, +}; /* END of CR_In_Symbols_and_Pictographs_Extended_A */ + +/* PROPERTY: 'In_Symbols_for_Legacy_Computing': Block */ +static const OnigCodePoint +CR_In_Symbols_for_Legacy_Computing[] = { 1, +0x1fb00, 0x1fbff, +}; /* END of CR_In_Symbols_for_Legacy_Computing */ + +/* PROPERTY: 'In_CJK_Unified_Ideographs_Extension_B': Block */ +static const OnigCodePoint +CR_In_CJK_Unified_Ideographs_Extension_B[] = { 1, +0x20000, 0x2a6df, +}; /* END of CR_In_CJK_Unified_Ideographs_Extension_B */ + +/* PROPERTY: 'In_CJK_Unified_Ideographs_Extension_C': Block */ +static const OnigCodePoint +CR_In_CJK_Unified_Ideographs_Extension_C[] = { 1, +0x2a700, 0x2b73f, +}; /* END of CR_In_CJK_Unified_Ideographs_Extension_C */ + +/* PROPERTY: 'In_CJK_Unified_Ideographs_Extension_D': Block */ +static const OnigCodePoint +CR_In_CJK_Unified_Ideographs_Extension_D[] = { 1, +0x2b740, 0x2b81f, +}; /* END of CR_In_CJK_Unified_Ideographs_Extension_D */ + +/* PROPERTY: 'In_CJK_Unified_Ideographs_Extension_E': Block */ +static const OnigCodePoint +CR_In_CJK_Unified_Ideographs_Extension_E[] = { 1, +0x2b820, 0x2ceaf, +}; /* END of CR_In_CJK_Unified_Ideographs_Extension_E */ + +/* PROPERTY: 'In_CJK_Unified_Ideographs_Extension_F': Block */ +static const OnigCodePoint +CR_In_CJK_Unified_Ideographs_Extension_F[] = { 1, +0x2ceb0, 0x2ebef, +}; /* END of CR_In_CJK_Unified_Ideographs_Extension_F */ + +/* PROPERTY: 'In_CJK_Unified_Ideographs_Extension_I': Block */ +static const OnigCodePoint +CR_In_CJK_Unified_Ideographs_Extension_I[] = { 1, +0x2ebf0, 0x2ee5f, +}; /* END of CR_In_CJK_Unified_Ideographs_Extension_I */ + +/* PROPERTY: 'In_CJK_Compatibility_Ideographs_Supplement': Block */ +static const OnigCodePoint +CR_In_CJK_Compatibility_Ideographs_Supplement[] = { 1, +0x2f800, 0x2fa1f, +}; /* END of CR_In_CJK_Compatibility_Ideographs_Supplement */ + +/* PROPERTY: 'In_CJK_Unified_Ideographs_Extension_G': Block */ +static const OnigCodePoint +CR_In_CJK_Unified_Ideographs_Extension_G[] = { 1, +0x30000, 0x3134f, +}; /* END of CR_In_CJK_Unified_Ideographs_Extension_G */ + +/* PROPERTY: 'In_CJK_Unified_Ideographs_Extension_H': Block */ +static const OnigCodePoint +CR_In_CJK_Unified_Ideographs_Extension_H[] = { 1, +0x31350, 0x323af, +}; /* END of CR_In_CJK_Unified_Ideographs_Extension_H */ + +/* PROPERTY: 'In_Tags': Block */ +static const OnigCodePoint +CR_In_Tags[] = { 1, +0xe0000, 0xe007f, +}; /* END of CR_In_Tags */ + +/* PROPERTY: 'In_Variation_Selectors_Supplement': Block */ +static const OnigCodePoint +CR_In_Variation_Selectors_Supplement[] = { 1, +0xe0100, 0xe01ef, +}; /* END of CR_In_Variation_Selectors_Supplement */ + +/* PROPERTY: 'In_Supplementary_Private_Use_Area_A': Block */ +static const OnigCodePoint +CR_In_Supplementary_Private_Use_Area_A[] = { 1, +0xf0000, 0xfffff, +}; /* END of CR_In_Supplementary_Private_Use_Area_A */ + +/* PROPERTY: 'In_Supplementary_Private_Use_Area_B': Block */ +static const OnigCodePoint +CR_In_Supplementary_Private_Use_Area_B[] = { 1, +0x100000, 0x10ffff, +}; /* END of CR_In_Supplementary_Private_Use_Area_B */ + +/* PROPERTY: 'In_No_Block': Block */ +static const OnigCodePoint +CR_In_No_Block[] = { 51, +0x2fe0, 0x2fef, +0x10200, 0x1027f, +0x103e0, 0x103ff, +0x107c0, 0x107ff, +0x108b0, 0x108df, +0x10940, 0x1097f, +0x10aa0, 0x10abf, +0x10bb0, 0x10bff, +0x10c50, 0x10c7f, +0x10d90, 0x10e5f, +0x11250, 0x1127f, +0x114e0, 0x1157f, +0x11750, 0x117ff, +0x11850, 0x1189f, +0x11960, 0x1199f, +0x11b60, 0x11bbf, +0x11cc0, 0x11cff, +0x11db0, 0x11edf, +0x11f60, 0x11faf, +0x12550, 0x12f8f, +0x14680, 0x160ff, +0x16140, 0x167ff, +0x16b90, 0x16d3f, +0x16d80, 0x16e3f, +0x16ea0, 0x16eff, +0x16fa0, 0x16fdf, +0x18d80, 0x1afef, +0x1b300, 0x1bbff, +0x1bcb0, 0x1cbff, +0x1cec0, 0x1ceff, +0x1cfd0, 0x1cfff, +0x1d250, 0x1d2bf, +0x1d380, 0x1d3ff, +0x1dab0, 0x1deff, +0x1e090, 0x1e0ff, +0x1e150, 0x1e28f, +0x1e300, 0x1e4cf, +0x1e500, 0x1e5cf, +0x1e600, 0x1e7df, +0x1e8e0, 0x1e8ff, +0x1e960, 0x1ec6f, +0x1ecc0, 0x1ecff, +0x1ed50, 0x1edff, +0x1ef00, 0x1efff, +0x1fc00, 0x1ffff, +0x2a6e0, 0x2a6ff, +0x2ee60, 0x2f7ff, +0x2fa20, 0x2ffff, +0x323b0, 0xdffff, +0xe0080, 0xe00ff, +0xe01f0, 0xeffff, +}; /* END of CR_In_No_Block */ + +static const OnigCodePoint* +const CodeRanges[] = { + CR_NEWLINE, + CR_Alpha, + CR_Blank, + CR_Cntrl, + CR_Digit, + CR_Graph, + CR_Lower, + CR_Print, + CR_PosixPunct, + CR_Space, + CR_Upper, + CR_XDigit, + CR_Word, + CR_Alnum, + CR_ASCII, + CR_ASCII_Hex_Digit, + CR_Adlam, + CR_Ahom, + CR_Alphabetic, + CR_Anatolian_Hieroglyphs, + CR_Any, + CR_Arabic, + CR_Armenian, + CR_Assigned, + CR_Avestan, + CR_Balinese, + CR_Bamum, + CR_Bassa_Vah, + CR_Batak, + CR_Bengali, + CR_Bhaiksuki, + CR_Bidi_Control, + CR_Bopomofo, + CR_Brahmi, + CR_Braille, + CR_Buginese, + CR_Buhid, + CR_C, + CR_Canadian_Aboriginal, + CR_Carian, + CR_Case_Ignorable, + CR_Cased, + CR_Caucasian_Albanian, + CR_Cc, + CR_Cf, + CR_Chakma, + CR_Cham, + CR_Changes_When_Casefolded, + CR_Changes_When_Casemapped, + CR_Changes_When_Lowercased, + CR_Changes_When_Titlecased, + CR_Changes_When_Uppercased, + CR_Cherokee, + CR_Chorasmian, + CR_Cn, + CR_Co, + CR_Common, + CR_Coptic, + CR_Cs, + CR_Cuneiform, + CR_Cypriot, + CR_Cypro_Minoan, + CR_Cyrillic, + CR_Dash, + CR_Default_Ignorable_Code_Point, + CR_Deprecated, + CR_Deseret, + CR_Devanagari, + CR_Diacritic, + CR_Dives_Akuru, + CR_Dogra, + CR_Duployan, + CR_Egyptian_Hieroglyphs, + CR_Elbasan, + CR_Elymaic, + CR_Emoji, + CR_Emoji_Component, + CR_Emoji_Modifier, + CR_Emoji_Modifier_Base, + CR_Emoji_Presentation, + CR_Ethiopic, + CR_Extended_Pictographic, + CR_Extender, + CR_Garay, + CR_Georgian, + CR_Glagolitic, + CR_Gothic, + CR_Grantha, + CR_Grapheme_Base, + CR_Grapheme_Extend, + CR_Grapheme_Link, + CR_Greek, + CR_Gujarati, + CR_Gunjala_Gondi, + CR_Gurmukhi, + CR_Gurung_Khema, + CR_Han, + CR_Hangul, + CR_Hanifi_Rohingya, + CR_Hanunoo, + CR_Hatran, + CR_Hebrew, + CR_Hex_Digit, + CR_Hiragana, + CR_Hyphen, + CR_IDS_Binary_Operator, + CR_IDS_Trinary_Operator, + CR_IDS_Unary_Operator, + CR_ID_Compat_Math_Continue, + CR_ID_Compat_Math_Start, + CR_ID_Continue, + CR_ID_Start, + CR_Ideographic, + CR_Imperial_Aramaic, + CR_InCB, + CR_Inherited, + CR_Inscriptional_Pahlavi, + CR_Inscriptional_Parthian, + CR_Javanese, + CR_Join_Control, + CR_Kaithi, + CR_Kannada, + CR_Katakana, + CR_Kawi, + CR_Kayah_Li, + CR_Kharoshthi, + CR_Khitan_Small_Script, + CR_Khmer, + CR_Khojki, + CR_Khudawadi, + CR_Kirat_Rai, + CR_L, + CR_LC, + CR_Lao, + CR_Latin, + CR_Lepcha, + CR_Limbu, + CR_Linear_A, + CR_Linear_B, + CR_Lisu, + CR_Ll, + CR_Lm, + CR_Lo, + CR_Logical_Order_Exception, + CR_Lowercase, + CR_Lt, + CR_Lu, + CR_Lycian, + CR_Lydian, + CR_M, + CR_Mahajani, + CR_Makasar, + CR_Malayalam, + CR_Mandaic, + CR_Manichaean, + CR_Marchen, + CR_Masaram_Gondi, + CR_Math, + CR_Mc, + CR_Me, + CR_Medefaidrin, + CR_Meetei_Mayek, + CR_Mende_Kikakui, + CR_Meroitic_Cursive, + CR_Meroitic_Hieroglyphs, + CR_Miao, + CR_Mn, + CR_Modi, + CR_Modifier_Combining_Mark, + CR_Mongolian, + CR_Mro, + CR_Multani, + CR_Myanmar, + CR_N, + CR_Nabataean, + CR_Nag_Mundari, + CR_Nandinagari, + CR_Nd, + CR_New_Tai_Lue, + CR_Newa, + CR_Nko, + CR_Nl, + CR_No, + CR_Noncharacter_Code_Point, + CR_Nushu, + CR_Nyiakeng_Puachue_Hmong, + CR_Ogham, + CR_Ol_Chiki, + CR_Ol_Onal, + CR_Old_Hungarian, + CR_Old_Italic, + CR_Old_North_Arabian, + CR_Old_Permic, + CR_Old_Persian, + CR_Old_Sogdian, + CR_Old_South_Arabian, + CR_Old_Turkic, + CR_Old_Uyghur, + CR_Oriya, + CR_Osage, + CR_Osmanya, + CR_Other_Alphabetic, + CR_Other_Default_Ignorable_Code_Point, + CR_Other_Grapheme_Extend, + CR_Other_ID_Continue, + CR_Other_ID_Start, + CR_Other_Lowercase, + CR_Other_Math, + CR_Other_Uppercase, + CR_P, + CR_Pahawh_Hmong, + CR_Palmyrene, + CR_Pattern_Syntax, + CR_Pattern_White_Space, + CR_Pau_Cin_Hau, + CR_Pc, + CR_Pd, + CR_Pe, + CR_Pf, + CR_Phags_Pa, + CR_Phoenician, + CR_Pi, + CR_Po, + CR_Prepended_Concatenation_Mark, + CR_Ps, + CR_Psalter_Pahlavi, + CR_Quotation_Mark, + CR_Radical, + CR_Regional_Indicator, + CR_Rejang, + CR_Runic, + CR_S, + CR_Samaritan, + CR_Saurashtra, + CR_Sc, + CR_Sentence_Terminal, + CR_Sharada, + CR_Shavian, + CR_Siddham, + CR_SignWriting, + CR_Sinhala, + CR_Sk, + CR_Sm, + CR_So, + CR_Soft_Dotted, + CR_Sogdian, + CR_Sora_Sompeng, + CR_Soyombo, + CR_Sundanese, + CR_Sunuwar, + CR_Syloti_Nagri, + CR_Syriac, + CR_Tagalog, + CR_Tagbanwa, + CR_Tai_Le, + CR_Tai_Tham, + CR_Tai_Viet, + CR_Takri, + CR_Tamil, + CR_Tangsa, + CR_Tangut, + CR_Telugu, + CR_Terminal_Punctuation, + CR_Thaana, + CR_Thai, + CR_Tibetan, + CR_Tifinagh, + CR_Tirhuta, + CR_Todhri, + CR_Toto, + CR_Tulu_Tigalari, + CR_Ugaritic, + CR_Unified_Ideograph, + CR_Unknown, + CR_Uppercase, + CR_Vai, + CR_Variation_Selector, + CR_Vithkuqi, + CR_Wancho, + CR_Warang_Citi, + CR_White_Space, + CR_XID_Continue, + CR_XID_Start, + CR_Yezidi, + CR_Yi, + CR_Z, + CR_Zanabazar_Square, + CR_Zl, + CR_Zp, + CR_Zs, + CR_In_Basic_Latin, + CR_In_Latin_1_Supplement, + CR_In_Latin_Extended_A, + CR_In_Latin_Extended_B, + CR_In_IPA_Extensions, + CR_In_Spacing_Modifier_Letters, + CR_In_Combining_Diacritical_Marks, + CR_In_Greek_and_Coptic, + CR_In_Cyrillic, + CR_In_Cyrillic_Supplement, + CR_In_Armenian, + CR_In_Hebrew, + CR_In_Arabic, + CR_In_Syriac, + CR_In_Arabic_Supplement, + CR_In_Thaana, + CR_In_NKo, + CR_In_Samaritan, + CR_In_Mandaic, + CR_In_Syriac_Supplement, + CR_In_Arabic_Extended_B, + CR_In_Arabic_Extended_A, + CR_In_Devanagari, + CR_In_Bengali, + CR_In_Gurmukhi, + CR_In_Gujarati, + CR_In_Oriya, + CR_In_Tamil, + CR_In_Telugu, + CR_In_Kannada, + CR_In_Malayalam, + CR_In_Sinhala, + CR_In_Thai, + CR_In_Lao, + CR_In_Tibetan, + CR_In_Myanmar, + CR_In_Georgian, + CR_In_Hangul_Jamo, + CR_In_Ethiopic, + CR_In_Ethiopic_Supplement, + CR_In_Cherokee, + CR_In_Unified_Canadian_Aboriginal_Syllabics, + CR_In_Ogham, + CR_In_Runic, + CR_In_Tagalog, + CR_In_Hanunoo, + CR_In_Buhid, + CR_In_Tagbanwa, + CR_In_Khmer, + CR_In_Mongolian, + CR_In_Unified_Canadian_Aboriginal_Syllabics_Extended, + CR_In_Limbu, + CR_In_Tai_Le, + CR_In_New_Tai_Lue, + CR_In_Khmer_Symbols, + CR_In_Buginese, + CR_In_Tai_Tham, + CR_In_Combining_Diacritical_Marks_Extended, + CR_In_Balinese, + CR_In_Sundanese, + CR_In_Batak, + CR_In_Lepcha, + CR_In_Ol_Chiki, + CR_In_Cyrillic_Extended_C, + CR_In_Georgian_Extended, + CR_In_Sundanese_Supplement, + CR_In_Vedic_Extensions, + CR_In_Phonetic_Extensions, + CR_In_Phonetic_Extensions_Supplement, + CR_In_Combining_Diacritical_Marks_Supplement, + CR_In_Latin_Extended_Additional, + CR_In_Greek_Extended, + CR_In_General_Punctuation, + CR_In_Superscripts_and_Subscripts, + CR_In_Currency_Symbols, + CR_In_Combining_Diacritical_Marks_for_Symbols, + CR_In_Letterlike_Symbols, + CR_In_Number_Forms, + CR_In_Arrows, + CR_In_Mathematical_Operators, + CR_In_Miscellaneous_Technical, + CR_In_Control_Pictures, + CR_In_Optical_Character_Recognition, + CR_In_Enclosed_Alphanumerics, + CR_In_Box_Drawing, + CR_In_Block_Elements, + CR_In_Geometric_Shapes, + CR_In_Miscellaneous_Symbols, + CR_In_Dingbats, + CR_In_Miscellaneous_Mathematical_Symbols_A, + CR_In_Supplemental_Arrows_A, + CR_In_Braille_Patterns, + CR_In_Supplemental_Arrows_B, + CR_In_Miscellaneous_Mathematical_Symbols_B, + CR_In_Supplemental_Mathematical_Operators, + CR_In_Miscellaneous_Symbols_and_Arrows, + CR_In_Glagolitic, + CR_In_Latin_Extended_C, + CR_In_Coptic, + CR_In_Georgian_Supplement, + CR_In_Tifinagh, + CR_In_Ethiopic_Extended, + CR_In_Cyrillic_Extended_A, + CR_In_Supplemental_Punctuation, + CR_In_CJK_Radicals_Supplement, + CR_In_Kangxi_Radicals, + CR_In_Ideographic_Description_Characters, + CR_In_CJK_Symbols_and_Punctuation, + CR_In_Hiragana, + CR_In_Katakana, + CR_In_Bopomofo, + CR_In_Hangul_Compatibility_Jamo, + CR_In_Kanbun, + CR_In_Bopomofo_Extended, + CR_In_CJK_Strokes, + CR_In_Katakana_Phonetic_Extensions, + CR_In_Enclosed_CJK_Letters_and_Months, + CR_In_CJK_Compatibility, + CR_In_CJK_Unified_Ideographs_Extension_A, + CR_In_Yijing_Hexagram_Symbols, + CR_In_CJK_Unified_Ideographs, + CR_In_Yi_Syllables, + CR_In_Yi_Radicals, + CR_In_Lisu, + CR_In_Vai, + CR_In_Cyrillic_Extended_B, + CR_In_Bamum, + CR_In_Modifier_Tone_Letters, + CR_In_Latin_Extended_D, + CR_In_Syloti_Nagri, + CR_In_Common_Indic_Number_Forms, + CR_In_Phags_pa, + CR_In_Saurashtra, + CR_In_Devanagari_Extended, + CR_In_Kayah_Li, + CR_In_Rejang, + CR_In_Hangul_Jamo_Extended_A, + CR_In_Javanese, + CR_In_Myanmar_Extended_B, + CR_In_Cham, + CR_In_Myanmar_Extended_A, + CR_In_Tai_Viet, + CR_In_Meetei_Mayek_Extensions, + CR_In_Ethiopic_Extended_A, + CR_In_Latin_Extended_E, + CR_In_Cherokee_Supplement, + CR_In_Meetei_Mayek, + CR_In_Hangul_Syllables, + CR_In_Hangul_Jamo_Extended_B, + CR_In_High_Surrogates, + CR_In_High_Private_Use_Surrogates, + CR_In_Low_Surrogates, + CR_In_Private_Use_Area, + CR_In_CJK_Compatibility_Ideographs, + CR_In_Alphabetic_Presentation_Forms, + CR_In_Arabic_Presentation_Forms_A, + CR_In_Variation_Selectors, + CR_In_Vertical_Forms, + CR_In_Combining_Half_Marks, + CR_In_CJK_Compatibility_Forms, + CR_In_Small_Form_Variants, + CR_In_Arabic_Presentation_Forms_B, + CR_In_Halfwidth_and_Fullwidth_Forms, + CR_In_Specials, + CR_In_Linear_B_Syllabary, + CR_In_Linear_B_Ideograms, + CR_In_Aegean_Numbers, + CR_In_Ancient_Greek_Numbers, + CR_In_Ancient_Symbols, + CR_In_Phaistos_Disc, + CR_In_Lycian, + CR_In_Carian, + CR_In_Coptic_Epact_Numbers, + CR_In_Old_Italic, + CR_In_Gothic, + CR_In_Old_Permic, + CR_In_Ugaritic, + CR_In_Old_Persian, + CR_In_Deseret, + CR_In_Shavian, + CR_In_Osmanya, + CR_In_Osage, + CR_In_Elbasan, + CR_In_Caucasian_Albanian, + CR_In_Vithkuqi, + CR_In_Todhri, + CR_In_Linear_A, + CR_In_Latin_Extended_F, + CR_In_Cypriot_Syllabary, + CR_In_Imperial_Aramaic, + CR_In_Palmyrene, + CR_In_Nabataean, + CR_In_Hatran, + CR_In_Phoenician, + CR_In_Lydian, + CR_In_Meroitic_Hieroglyphs, + CR_In_Meroitic_Cursive, + CR_In_Kharoshthi, + CR_In_Old_South_Arabian, + CR_In_Old_North_Arabian, + CR_In_Manichaean, + CR_In_Avestan, + CR_In_Inscriptional_Parthian, + CR_In_Inscriptional_Pahlavi, + CR_In_Psalter_Pahlavi, + CR_In_Old_Turkic, + CR_In_Old_Hungarian, + CR_In_Hanifi_Rohingya, + CR_In_Garay, + CR_In_Rumi_Numeral_Symbols, + CR_In_Yezidi, + CR_In_Arabic_Extended_C, + CR_In_Old_Sogdian, + CR_In_Sogdian, + CR_In_Old_Uyghur, + CR_In_Chorasmian, + CR_In_Elymaic, + CR_In_Brahmi, + CR_In_Kaithi, + CR_In_Sora_Sompeng, + CR_In_Chakma, + CR_In_Mahajani, + CR_In_Sharada, + CR_In_Sinhala_Archaic_Numbers, + CR_In_Khojki, + CR_In_Multani, + CR_In_Khudawadi, + CR_In_Grantha, + CR_In_Tulu_Tigalari, + CR_In_Newa, + CR_In_Tirhuta, + CR_In_Siddham, + CR_In_Modi, + CR_In_Mongolian_Supplement, + CR_In_Takri, + CR_In_Myanmar_Extended_C, + CR_In_Ahom, + CR_In_Dogra, + CR_In_Warang_Citi, + CR_In_Dives_Akuru, + CR_In_Nandinagari, + CR_In_Zanabazar_Square, + CR_In_Soyombo, + CR_In_Unified_Canadian_Aboriginal_Syllabics_Extended_A, + CR_In_Pau_Cin_Hau, + CR_In_Devanagari_Extended_A, + CR_In_Sunuwar, + CR_In_Bhaiksuki, + CR_In_Marchen, + CR_In_Masaram_Gondi, + CR_In_Gunjala_Gondi, + CR_In_Makasar, + CR_In_Kawi, + CR_In_Lisu_Supplement, + CR_In_Tamil_Supplement, + CR_In_Cuneiform, + CR_In_Cuneiform_Numbers_and_Punctuation, + CR_In_Early_Dynastic_Cuneiform, + CR_In_Cypro_Minoan, + CR_In_Egyptian_Hieroglyphs, + CR_In_Egyptian_Hieroglyph_Format_Controls, + CR_In_Egyptian_Hieroglyphs_Extended_A, + CR_In_Anatolian_Hieroglyphs, + CR_In_Gurung_Khema, + CR_In_Bamum_Supplement, + CR_In_Mro, + CR_In_Tangsa, + CR_In_Bassa_Vah, + CR_In_Pahawh_Hmong, + CR_In_Kirat_Rai, + CR_In_Medefaidrin, + CR_In_Miao, + CR_In_Ideographic_Symbols_and_Punctuation, + CR_In_Tangut, + CR_In_Tangut_Components, + CR_In_Khitan_Small_Script, + CR_In_Tangut_Supplement, + CR_In_Kana_Extended_B, + CR_In_Kana_Supplement, + CR_In_Kana_Extended_A, + CR_In_Small_Kana_Extension, + CR_In_Nushu, + CR_In_Duployan, + CR_In_Shorthand_Format_Controls, + CR_In_Symbols_for_Legacy_Computing_Supplement, + CR_In_Znamenny_Musical_Notation, + CR_In_Byzantine_Musical_Symbols, + CR_In_Musical_Symbols, + CR_In_Ancient_Greek_Musical_Notation, + CR_In_Kaktovik_Numerals, + CR_In_Mayan_Numerals, + CR_In_Tai_Xuan_Jing_Symbols, + CR_In_Counting_Rod_Numerals, + CR_In_Mathematical_Alphanumeric_Symbols, + CR_In_Sutton_SignWriting, + CR_In_Latin_Extended_G, + CR_In_Glagolitic_Supplement, + CR_In_Cyrillic_Extended_D, + CR_In_Nyiakeng_Puachue_Hmong, + CR_In_Toto, + CR_In_Wancho, + CR_In_Nag_Mundari, + CR_In_Ol_Onal, + CR_In_Ethiopic_Extended_B, + CR_In_Mende_Kikakui, + CR_In_Adlam, + CR_In_Indic_Siyaq_Numbers, + CR_In_Ottoman_Siyaq_Numbers, + CR_In_Arabic_Mathematical_Alphabetic_Symbols, + CR_In_Mahjong_Tiles, + CR_In_Domino_Tiles, + CR_In_Playing_Cards, + CR_In_Enclosed_Alphanumeric_Supplement, + CR_In_Enclosed_Ideographic_Supplement, + CR_In_Miscellaneous_Symbols_and_Pictographs, + CR_In_Emoticons, + CR_In_Ornamental_Dingbats, + CR_In_Transport_and_Map_Symbols, + CR_In_Alchemical_Symbols, + CR_In_Geometric_Shapes_Extended, + CR_In_Supplemental_Arrows_C, + CR_In_Supplemental_Symbols_and_Pictographs, + CR_In_Chess_Symbols, + CR_In_Symbols_and_Pictographs_Extended_A, + CR_In_Symbols_for_Legacy_Computing, + CR_In_CJK_Unified_Ideographs_Extension_B, + CR_In_CJK_Unified_Ideographs_Extension_C, + CR_In_CJK_Unified_Ideographs_Extension_D, + CR_In_CJK_Unified_Ideographs_Extension_E, + CR_In_CJK_Unified_Ideographs_Extension_F, + CR_In_CJK_Unified_Ideographs_Extension_I, + CR_In_CJK_Compatibility_Ideographs_Supplement, + CR_In_CJK_Unified_Ideographs_Extension_G, + CR_In_CJK_Unified_Ideographs_Extension_H, + CR_In_Tags, + CR_In_Variation_Selectors_Supplement, + CR_In_Supplementary_Private_Use_Area_A, + CR_In_Supplementary_Private_Use_Area_B, + CR_In_No_Block, +}; + +#define pool_offset(s) offsetof(struct unicode_prop_name_pool_t, unicode_prop_name_pool_str##s) + + +#define TOTAL_KEYWORDS 886 +#define MIN_WORD_LENGTH 1 +#define MAX_WORD_LENGTH 45 +#define MIN_HASH_VALUE 12 +#define MAX_HASH_VALUE 6900 +/* maximum key range = 6889, duplicates = 0 */ + +#ifndef GPERF_DOWNCASE +#define GPERF_DOWNCASE 1 +static unsigned char gperf_downcase[256] = + { + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255 + }; +#endif + +#ifndef GPERF_CASE_STRNCMP +#define GPERF_CASE_STRNCMP 1 +static int +gperf_case_strncmp (register const char *s1, register const char *s2, register size_t n) +{ + for (; n > 0;) + { + unsigned char c1 = gperf_downcase[(unsigned char)*s1++]; + unsigned char c2 = gperf_downcase[(unsigned char)*s2++]; + if (c1 != 0 && c1 == c2) + { + n--; + continue; + } + return (int)c1 - (int)c2; + } + return 0; +} +#endif + +#ifdef __GNUC__ +__inline +#else +#ifdef __cplusplus +inline +#endif +#endif +static unsigned int +hash (register const char *str, register size_t len) +{ + static const unsigned short asso_values[] = + { + 6901, 6901, 6901, 6901, 6901, 6901, 6901, 6901, 6901, 6901, + 6901, 6901, 6901, 6901, 6901, 6901, 6901, 6901, 6901, 6901, + 6901, 6901, 6901, 6901, 6901, 6901, 6901, 6901, 6901, 6901, + 6901, 6901, 6901, 6901, 6901, 6901, 6901, 6901, 6901, 6901, + 6901, 6901, 6901, 6901, 6901, 6901, 6901, 6901, 6901, 6901, + 6901, 6901, 6901, 6901, 6901, 6901, 6901, 6901, 6901, 6901, + 6901, 6901, 6901, 6901, 6901, 0, 1564, 118, 343, 36, + 1531, 1146, 1071, 7, 1812, 8, 684, 99, 4, 16, + 1399, 824, 47, 173, 241, 486, 2191, 1723, 940, 1648, + 9, 0, 24, 6901, 6901, 6901, 6901, 0, 1564, 118, + 343, 36, 1531, 1146, 1071, 7, 1812, 8, 684, 99, + 4, 16, 1399, 824, 47, 173, 241, 486, 2191, 1723, + 940, 1648, 9, 0, 24, 6901, 6901, 6901, 6901, 6901, + 6901, 6901, 6901, 6901, 6901, 6901, 6901, 6901, 6901, 6901, + 6901, 6901, 6901, 6901, 6901, 6901, 6901, 6901, 6901, 6901, + 6901, 6901, 6901, 6901, 6901, 6901, 6901, 6901, 6901, 6901, + 6901, 6901, 6901, 6901, 6901, 6901, 6901, 6901, 6901, 6901, + 6901, 6901, 6901, 6901, 6901, 6901, 6901, 6901, 6901, 6901, + 6901, 6901, 6901, 6901, 6901, 6901, 6901, 6901, 6901, 6901, + 6901, 6901, 6901, 6901, 6901, 6901, 6901, 6901, 6901, 6901, + 6901, 6901, 6901, 6901, 6901, 6901, 6901, 6901, 6901, 6901, + 6901, 6901, 6901, 6901, 6901, 6901, 6901, 6901, 6901, 6901, + 6901, 6901, 6901, 6901, 6901, 6901, 6901, 6901, 6901, 6901, + 6901, 6901, 6901, 6901, 6901, 6901, 6901, 6901, 6901, 6901, + 6901, 6901, 6901, 6901, 6901, 6901, 6901, 6901, 6901, 6901, + 6901, 6901, 6901, 6901, 6901, 6901, 6901, 6901 + }; + register unsigned int hval = (unsigned int )len; + + switch (hval) + { + default: + hval += asso_values[(unsigned char)str[15]]; + /*FALLTHROUGH*/ + case 15: + case 14: + case 13: + case 12: + hval += asso_values[(unsigned char)str[11]]; + /*FALLTHROUGH*/ + case 11: + case 10: + case 9: + case 8: + case 7: + case 6: + hval += asso_values[(unsigned char)str[5]]; + /*FALLTHROUGH*/ + case 5: + hval += asso_values[(unsigned char)str[4]]; + /*FALLTHROUGH*/ + case 4: + case 3: + hval += asso_values[(unsigned char)str[2]]; + /*FALLTHROUGH*/ + case 2: + hval += asso_values[(unsigned char)str[1]]; + /*FALLTHROUGH*/ + case 1: + hval += asso_values[(unsigned char)str[0]+2]; + break; + } + return hval + asso_values[(unsigned char)str[len - 1]]; +} + +struct unicode_prop_name_pool_t + { + char unicode_prop_name_pool_str12[sizeof("lana")]; + char unicode_prop_name_pool_str16[sizeof("yi")]; + char unicode_prop_name_pool_str19[sizeof("lina")]; + char unicode_prop_name_pool_str25[sizeof("yiii")]; + char unicode_prop_name_pool_str26[sizeof("mn")]; + char unicode_prop_name_pool_str28[sizeof("maka")]; + char unicode_prop_name_pool_str31[sizeof("mani")]; + char unicode_prop_name_pool_str34[sizeof("z")]; + char unicode_prop_name_pool_str37[sizeof("inkannada")]; + char unicode_prop_name_pool_str38[sizeof("lo")]; + char unicode_prop_name_pool_str39[sizeof("lao")]; + char unicode_prop_name_pool_str40[sizeof("laoo")]; + char unicode_prop_name_pool_str43[sizeof("miao")]; + char unicode_prop_name_pool_str46[sizeof("cn")]; + char unicode_prop_name_pool_str52[sizeof("ci")]; + char unicode_prop_name_pool_str53[sizeof("innko")]; + char unicode_prop_name_pool_str55[sizeof("zzzz")]; + char unicode_prop_name_pool_str56[sizeof("yezi")]; + char unicode_prop_name_pool_str58[sizeof("gara")]; + char unicode_prop_name_pool_str62[sizeof("gran")]; + char unicode_prop_name_pool_str63[sizeof("pi")]; + char unicode_prop_name_pool_str69[sizeof("lineara")]; + char unicode_prop_name_pool_str70[sizeof("co")]; + char unicode_prop_name_pool_str75[sizeof("mark")]; + char unicode_prop_name_pool_str81[sizeof("po")]; + char unicode_prop_name_pool_str84[sizeof("inkiratrai")]; + char unicode_prop_name_pool_str90[sizeof("me")]; + char unicode_prop_name_pool_str93[sizeof("inkharoshthi")]; + char unicode_prop_name_pool_str94[sizeof("cari")]; + char unicode_prop_name_pool_str95[sizeof("loe")]; + char unicode_prop_name_pool_str97[sizeof("carian")]; + char unicode_prop_name_pool_str98[sizeof("mro")]; + char unicode_prop_name_pool_str99[sizeof("mroo")]; + char unicode_prop_name_pool_str102[sizeof("grek")]; + char unicode_prop_name_pool_str107[sizeof("kana")]; + char unicode_prop_name_pool_str110[sizeof("geor")]; + char unicode_prop_name_pool_str111[sizeof("greek")]; + char unicode_prop_name_pool_str116[sizeof("m")]; + char unicode_prop_name_pool_str119[sizeof("mero")]; + char unicode_prop_name_pool_str121[sizeof("pe")]; + char unicode_prop_name_pool_str126[sizeof("mendekikakui")]; + char unicode_prop_name_pool_str130[sizeof("gonm")]; + char unicode_prop_name_pool_str136[sizeof("inosmanya")]; + char unicode_prop_name_pool_str142[sizeof("inmanichaean")]; + char unicode_prop_name_pool_str146[sizeof("inchakma")]; + char unicode_prop_name_pool_str147[sizeof("cakm")]; + char unicode_prop_name_pool_str148[sizeof("inmro")]; + char unicode_prop_name_pool_str149[sizeof("inmiao")]; + char unicode_prop_name_pool_str150[sizeof("meeteimayek")]; + char unicode_prop_name_pool_str152[sizeof("mandaic")]; + char unicode_prop_name_pool_str155[sizeof("c")]; + char unicode_prop_name_pool_str157[sizeof("krai")]; + char unicode_prop_name_pool_str161[sizeof("inarmenian")]; + char unicode_prop_name_pool_str171[sizeof("inmyanmar")]; + char unicode_prop_name_pool_str175[sizeof("inmakasar")]; + char unicode_prop_name_pool_str181[sizeof("common")]; + char unicode_prop_name_pool_str184[sizeof("qaai")]; + char unicode_prop_name_pool_str185[sizeof("marc")]; + char unicode_prop_name_pool_str195[sizeof("inrunic")]; + char unicode_prop_name_pool_str196[sizeof("incarian")]; + char unicode_prop_name_pool_str204[sizeof("lm")]; + char unicode_prop_name_pool_str209[sizeof("inkhmer")]; + char unicode_prop_name_pool_str213[sizeof("inchorasmian")]; + char unicode_prop_name_pool_str215[sizeof("inideographicsymbolsandpunctuation")]; + char unicode_prop_name_pool_str217[sizeof("cans")]; + char unicode_prop_name_pool_str221[sizeof("merc")]; + char unicode_prop_name_pool_str230[sizeof("combiningmark")]; + char unicode_prop_name_pool_str232[sizeof("inahom")]; + char unicode_prop_name_pool_str233[sizeof("perm")]; + char unicode_prop_name_pool_str234[sizeof("inavestan")]; + char unicode_prop_name_pool_str238[sizeof("connectorpunctuation")]; + char unicode_prop_name_pool_str241[sizeof("insharada")]; + char unicode_prop_name_pool_str242[sizeof("lc")]; + char unicode_prop_name_pool_str244[sizeof("prependedconcatenationmark")]; + char unicode_prop_name_pool_str246[sizeof("incuneiformnumbersandpunctuation")]; + char unicode_prop_name_pool_str250[sizeof("inipaextensions")]; + char unicode_prop_name_pool_str251[sizeof("makasar")]; + char unicode_prop_name_pool_str253[sizeof("latn")]; + char unicode_prop_name_pool_str254[sizeof("mc")]; + char unicode_prop_name_pool_str256[sizeof("inarrows")]; + char unicode_prop_name_pool_str257[sizeof("ri")]; + char unicode_prop_name_pool_str258[sizeof("latin")]; + char unicode_prop_name_pool_str259[sizeof("incherokee")]; + char unicode_prop_name_pool_str261[sizeof("inthaana")]; + char unicode_prop_name_pool_str262[sizeof("masaramgondi")]; + char unicode_prop_name_pool_str271[sizeof("inkatakana")]; + char unicode_prop_name_pool_str272[sizeof("armn")]; + char unicode_prop_name_pool_str273[sizeof("inthai")]; + char unicode_prop_name_pool_str274[sizeof("cc")]; + char unicode_prop_name_pool_str275[sizeof("armi")]; + char unicode_prop_name_pool_str280[sizeof("incuneiform")]; + char unicode_prop_name_pool_str283[sizeof("inkaithi")]; + char unicode_prop_name_pool_str285[sizeof("pc")]; + char unicode_prop_name_pool_str287[sizeof("armenian")]; + char unicode_prop_name_pool_str289[sizeof("inmarchen")]; + char unicode_prop_name_pool_str293[sizeof("qmark")]; + char unicode_prop_name_pool_str295[sizeof("qaac")]; + char unicode_prop_name_pool_str296[sizeof("initialpunctuation")]; + char unicode_prop_name_pool_str298[sizeof("inzanabazarsquare")]; + char unicode_prop_name_pool_str299[sizeof("insamaritan")]; + char unicode_prop_name_pool_str300[sizeof("lineseparator")]; + char unicode_prop_name_pool_str304[sizeof("mtei")]; + char unicode_prop_name_pool_str309[sizeof("inmasaramgondi")]; + char unicode_prop_name_pool_str311[sizeof("inscriptionalparthian")]; + char unicode_prop_name_pool_str312[sizeof("incyrillic")]; + char unicode_prop_name_pool_str322[sizeof("intakri")]; + char unicode_prop_name_pool_str334[sizeof("incham")]; + char unicode_prop_name_pool_str335[sizeof("mcm")]; + char unicode_prop_name_pool_str346[sizeof("prti")]; + char unicode_prop_name_pool_str356[sizeof("katakana")]; + char unicode_prop_name_pool_str358[sizeof("inkhmersymbols")]; + char unicode_prop_name_pool_str365[sizeof("insyriac")]; + char unicode_prop_name_pool_str366[sizeof("pcm")]; + char unicode_prop_name_pool_str367[sizeof("mand")]; + char unicode_prop_name_pool_str372[sizeof("zs")]; + char unicode_prop_name_pool_str382[sizeof("inkanaextendeda")]; + char unicode_prop_name_pool_str384[sizeof("cs")]; + char unicode_prop_name_pool_str386[sizeof("modi")]; + char unicode_prop_name_pool_str388[sizeof("privateuse")]; + char unicode_prop_name_pool_str395[sizeof("ps")]; + char unicode_prop_name_pool_str401[sizeof("brai")]; + char unicode_prop_name_pool_str403[sizeof("mend")]; + char unicode_prop_name_pool_str407[sizeof("ideo")]; + char unicode_prop_name_pool_str408[sizeof("yezidi")]; + char unicode_prop_name_pool_str410[sizeof("inmyanmarextendeda")]; + char unicode_prop_name_pool_str414[sizeof("arabic")]; + char unicode_prop_name_pool_str417[sizeof("letter")]; + char unicode_prop_name_pool_str426[sizeof("xidcontinue")]; + char unicode_prop_name_pool_str428[sizeof("ascii")]; + char unicode_prop_name_pool_str430[sizeof("innandinagari")]; + char unicode_prop_name_pool_str443[sizeof("inoldnortharabian")]; + char unicode_prop_name_pool_str445[sizeof("inmeeteimayek")]; + char unicode_prop_name_pool_str450[sizeof("knda")]; + char unicode_prop_name_pool_str453[sizeof("kannada")]; + char unicode_prop_name_pool_str454[sizeof("intransportandmapsymbols")]; + char unicode_prop_name_pool_str456[sizeof("kiratrai")]; + char unicode_prop_name_pool_str457[sizeof("inruminumeralsymbols")]; + char unicode_prop_name_pool_str458[sizeof("inideographicdescriptioncharacters")]; + char unicode_prop_name_pool_str466[sizeof("incjkcompatibilityforms")]; + char unicode_prop_name_pool_str470[sizeof("letternumber")]; + char unicode_prop_name_pool_str471[sizeof("incjkcompatibilityideographs")]; + char unicode_prop_name_pool_str474[sizeof("inmodi")]; + char unicode_prop_name_pool_str481[sizeof("xidc")]; + char unicode_prop_name_pool_str487[sizeof("inmendekikakui")]; + char unicode_prop_name_pool_str488[sizeof("lt")]; + char unicode_prop_name_pool_str489[sizeof("inemoticons")]; + char unicode_prop_name_pool_str504[sizeof("sk")]; + char unicode_prop_name_pool_str507[sizeof("inolditalic")]; + char unicode_prop_name_pool_str509[sizeof("brahmi")]; + char unicode_prop_name_pool_str513[sizeof("gothic")]; + char unicode_prop_name_pool_str514[sizeof("inmedefaidrin")]; + char unicode_prop_name_pool_str518[sizeof("psalterpahlavi")]; + char unicode_prop_name_pool_str520[sizeof("so")]; + char unicode_prop_name_pool_str522[sizeof("inspecials")]; + char unicode_prop_name_pool_str524[sizeof("kits")]; + char unicode_prop_name_pool_str528[sizeof("inmyanmarextendedc")]; + char unicode_prop_name_pool_str532[sizeof("intoto")]; + char unicode_prop_name_pool_str536[sizeof("xids")]; + char unicode_prop_name_pool_str542[sizeof("inchesssymbols")]; + char unicode_prop_name_pool_str549[sizeof("incjkcompatibilityideographssupplement")]; + char unicode_prop_name_pool_str550[sizeof("inopticalcharacterrecognition")]; + char unicode_prop_name_pool_str553[sizeof("sora")]; + char unicode_prop_name_pool_str558[sizeof("inkanasupplement")]; + char unicode_prop_name_pool_str564[sizeof("inoldsogdian")]; + char unicode_prop_name_pool_str571[sizeof("meroiticcursive")]; + char unicode_prop_name_pool_str572[sizeof("inmiscellaneousmathematicalsymbolsa")]; + char unicode_prop_name_pool_str577[sizeof("grext")]; + char unicode_prop_name_pool_str578[sizeof("patternwhitespace")]; + char unicode_prop_name_pool_str579[sizeof("insundanese")]; + char unicode_prop_name_pool_str585[sizeof("inmandaic")]; + char unicode_prop_name_pool_str588[sizeof("print")]; + char unicode_prop_name_pool_str590[sizeof("idc")]; + char unicode_prop_name_pool_str596[sizeof("batk")]; + char unicode_prop_name_pool_str598[sizeof("inancientsymbols")]; + char unicode_prop_name_pool_str605[sizeof("batak")]; + char unicode_prop_name_pool_str609[sizeof("intaitham")]; + char unicode_prop_name_pool_str612[sizeof("inoldsoutharabian")]; + char unicode_prop_name_pool_str631[sizeof("incommonindicnumberforms")]; + char unicode_prop_name_pool_str635[sizeof("inznamennymusicalnotation")]; + char unicode_prop_name_pool_str636[sizeof("samr")]; + char unicode_prop_name_pool_str639[sizeof("patws")]; + char unicode_prop_name_pool_str645[sizeof("bamum")]; + char unicode_prop_name_pool_str651[sizeof("idsbinaryoperator")]; + char unicode_prop_name_pool_str652[sizeof("samaritan")]; + char unicode_prop_name_pool_str655[sizeof("pauc")]; + char unicode_prop_name_pool_str660[sizeof("s")]; + char unicode_prop_name_pool_str669[sizeof("incjkstrokes")]; + char unicode_prop_name_pool_str673[sizeof("inugaritic")]; + char unicode_prop_name_pool_str674[sizeof("lisu")]; + char unicode_prop_name_pool_str683[sizeof("indominotiles")]; + char unicode_prop_name_pool_str685[sizeof("idsunaryoperator")]; + char unicode_prop_name_pool_str686[sizeof("sm")]; + char unicode_prop_name_pool_str689[sizeof("l")]; + char unicode_prop_name_pool_str692[sizeof("inancientgreekmusicalnotation")]; + char unicode_prop_name_pool_str693[sizeof("bass")]; + char unicode_prop_name_pool_str700[sizeof("ids")]; + char unicode_prop_name_pool_str707[sizeof("inmodifiertoneletters")]; + char unicode_prop_name_pool_str719[sizeof("incontrolpictures")]; + char unicode_prop_name_pool_str724[sizeof("sc")]; + char unicode_prop_name_pool_str730[sizeof("insaurashtra")]; + char unicode_prop_name_pool_str731[sizeof("insunuwar")]; + char unicode_prop_name_pool_str733[sizeof("inlao")]; + char unicode_prop_name_pool_str735[sizeof("pd")]; + char unicode_prop_name_pool_str740[sizeof("inolonal")]; + char unicode_prop_name_pool_str741[sizeof("inoldturkic")]; + char unicode_prop_name_pool_str745[sizeof("inlineara")]; + char unicode_prop_name_pool_str749[sizeof("mongolian")]; + char unicode_prop_name_pool_str752[sizeof("inmusicalsymbols")]; + char unicode_prop_name_pool_str760[sizeof("idcontinue")]; + char unicode_prop_name_pool_str761[sizeof("incaucasianalbanian")]; + char unicode_prop_name_pool_str764[sizeof("grlink")]; + char unicode_prop_name_pool_str769[sizeof("idst")]; + char unicode_prop_name_pool_str782[sizeof("runr")]; + char unicode_prop_name_pool_str794[sizeof("kali")]; + char unicode_prop_name_pool_str802[sizeof("inadlam")]; + char unicode_prop_name_pool_str806[sizeof("inmiscellaneoussymbols")]; + char unicode_prop_name_pool_str810[sizeof("control")]; + char unicode_prop_name_pool_str814[sizeof("indeseret")]; + char unicode_prop_name_pool_str815[sizeof("inmiscellaneoussymbolsandarrows")]; + char unicode_prop_name_pool_str819[sizeof("idstart")]; + char unicode_prop_name_pool_str820[sizeof("inmiscellaneoussymbolsandpictographs")]; + char unicode_prop_name_pool_str833[sizeof("inlycian")]; + char unicode_prop_name_pool_str834[sizeof("palm")]; + char unicode_prop_name_pool_str844[sizeof("sind")]; + char unicode_prop_name_pool_str848[sizeof("onao")]; + char unicode_prop_name_pool_str849[sizeof("xidstart")]; + char unicode_prop_name_pool_str853[sizeof("inancientgreeknumbers")]; + char unicode_prop_name_pool_str854[sizeof("xdigit")]; + char unicode_prop_name_pool_str861[sizeof("inmeeteimayekextensions")]; + char unicode_prop_name_pool_str867[sizeof("inkhudawadi")]; + char unicode_prop_name_pool_str879[sizeof("inspacingmodifierletters")]; + char unicode_prop_name_pool_str883[sizeof("oriya")]; + char unicode_prop_name_pool_str900[sizeof("cased")]; + char unicode_prop_name_pool_str905[sizeof("inmalayalam")]; + char unicode_prop_name_pool_str915[sizeof("inolduyghur")]; + char unicode_prop_name_pool_str929[sizeof("incountingrodnumerals")]; + char unicode_prop_name_pool_str932[sizeof("bamu")]; + char unicode_prop_name_pool_str933[sizeof("insmallkanaextension")]; + char unicode_prop_name_pool_str934[sizeof("bidic")]; + char unicode_prop_name_pool_str937[sizeof("ital")]; + char unicode_prop_name_pool_str946[sizeof("inkaktoviknumerals")]; + char unicode_prop_name_pool_str948[sizeof("joinc")]; + char unicode_prop_name_pool_str952[sizeof("insylotinagri")]; + char unicode_prop_name_pool_str957[sizeof("vai")]; + char unicode_prop_name_pool_str958[sizeof("vaii")]; + char unicode_prop_name_pool_str963[sizeof("inlinearbideograms")]; + char unicode_prop_name_pool_str964[sizeof("inlatinextendeda")]; + char unicode_prop_name_pool_str966[sizeof("sterm")]; + char unicode_prop_name_pool_str967[sizeof("incyrillicsupplement")]; + char unicode_prop_name_pool_str972[sizeof("runic")]; + char unicode_prop_name_pool_str978[sizeof("lu")]; + char unicode_prop_name_pool_str979[sizeof("insiddham")]; + char unicode_prop_name_pool_str984[sizeof("quotationmark")]; + char unicode_prop_name_pool_str987[sizeof("intaile")]; + char unicode_prop_name_pool_str996[sizeof("incherokeesupplement")]; + char unicode_prop_name_pool_str1009[sizeof("alnum")]; + char unicode_prop_name_pool_str1014[sizeof("idsu")]; + char unicode_prop_name_pool_str1015[sizeof("incjkunifiedideographsextensiona")]; + char unicode_prop_name_pool_str1022[sizeof("incjkunifiedideographsextensioni")]; + char unicode_prop_name_pool_str1023[sizeof("saur")]; + char unicode_prop_name_pool_str1024[sizeof("punct")]; + char unicode_prop_name_pool_str1025[sizeof("sundanese")]; + char unicode_prop_name_pool_str1030[sizeof("guru")]; + char unicode_prop_name_pool_str1036[sizeof("inlatinextendede")]; + char unicode_prop_name_pool_str1038[sizeof("bali")]; + char unicode_prop_name_pool_str1039[sizeof("paucinhau")]; + char unicode_prop_name_pool_str1048[sizeof("blank")]; + char unicode_prop_name_pool_str1049[sizeof("gurmukhi")]; + char unicode_prop_name_pool_str1050[sizeof("intamil")]; + char unicode_prop_name_pool_str1051[sizeof("incjkunifiedideographsextensione")]; + char unicode_prop_name_pool_str1052[sizeof("inmultani")]; + char unicode_prop_name_pool_str1058[sizeof("inlydian")]; + char unicode_prop_name_pool_str1074[sizeof("osage")]; + char unicode_prop_name_pool_str1081[sizeof("bengali")]; + char unicode_prop_name_pool_str1087[sizeof("limbu")]; + char unicode_prop_name_pool_str1100[sizeof("osma")]; + char unicode_prop_name_pool_str1110[sizeof("zinh")]; + char unicode_prop_name_pool_str1111[sizeof("balinese")]; + char unicode_prop_name_pool_str1117[sizeof("inhanifirohingya")]; + char unicode_prop_name_pool_str1125[sizeof("plrd")]; + char unicode_prop_name_pool_str1133[sizeof("incjkunifiedideographsextensionc")]; + char unicode_prop_name_pool_str1140[sizeof("inhiragana")]; + char unicode_prop_name_pool_str1143[sizeof("canadianaboriginal")]; + char unicode_prop_name_pool_str1155[sizeof("saurashtra")]; + char unicode_prop_name_pool_str1159[sizeof("phoenician")]; + char unicode_prop_name_pool_str1171[sizeof("ingrantha")]; + char unicode_prop_name_pool_str1174[sizeof("sd")]; + char unicode_prop_name_pool_str1177[sizeof("gong")]; + char unicode_prop_name_pool_str1178[sizeof("incjkunifiedideographs")]; + char unicode_prop_name_pool_str1181[sizeof("marchen")]; + char unicode_prop_name_pool_str1183[sizeof("sidd")]; + char unicode_prop_name_pool_str1184[sizeof("odi")]; + char unicode_prop_name_pool_str1186[sizeof("mong")]; + char unicode_prop_name_pool_str1188[sizeof("sinhala")]; + char unicode_prop_name_pool_str1189[sizeof("graphemelink")]; + char unicode_prop_name_pool_str1193[sizeof("inearlydynasticcuneiform")]; + char unicode_prop_name_pool_str1194[sizeof("cher")]; + char unicode_prop_name_pool_str1197[sizeof("kaithi")]; + char unicode_prop_name_pool_str1199[sizeof("inmahajani")]; + char unicode_prop_name_pool_str1200[sizeof("inlatinextendedc")]; + char unicode_prop_name_pool_str1204[sizeof("multani")]; + char unicode_prop_name_pool_str1205[sizeof("inogham")]; + char unicode_prop_name_pool_str1207[sizeof("gunjalagondi")]; + char unicode_prop_name_pool_str1210[sizeof("cham")]; + char unicode_prop_name_pool_str1211[sizeof("cherokee")]; + char unicode_prop_name_pool_str1212[sizeof("chakma")]; + char unicode_prop_name_pool_str1214[sizeof("khojki")]; + char unicode_prop_name_pool_str1217[sizeof("inosage")]; + char unicode_prop_name_pool_str1221[sizeof("khar")]; + char unicode_prop_name_pool_str1223[sizeof("manichaean")]; + char unicode_prop_name_pool_str1224[sizeof("georgian")]; + char unicode_prop_name_pool_str1226[sizeof("ingeneralpunctuation")]; + char unicode_prop_name_pool_str1233[sizeof("inolchiki")]; + char unicode_prop_name_pool_str1235[sizeof("ingeorgian")]; + char unicode_prop_name_pool_str1245[sizeof("graphemebase")]; + char unicode_prop_name_pool_str1248[sizeof("adlm")]; + char unicode_prop_name_pool_str1254[sizeof("inethiopic")]; + char unicode_prop_name_pool_str1259[sizeof("inkhitansmallscript")]; + char unicode_prop_name_pool_str1269[sizeof("insinhala")]; + char unicode_prop_name_pool_str1276[sizeof("inmongolian")]; + char unicode_prop_name_pool_str1279[sizeof("punctuation")]; + char unicode_prop_name_pool_str1280[sizeof("emoji")]; + char unicode_prop_name_pool_str1287[sizeof("innagmundari")]; + char unicode_prop_name_pool_str1288[sizeof("vs")]; + char unicode_prop_name_pool_str1294[sizeof("casedletter")]; + char unicode_prop_name_pool_str1296[sizeof("oidc")]; + char unicode_prop_name_pool_str1305[sizeof("intamilsupplement")]; + char unicode_prop_name_pool_str1308[sizeof("ahom")]; + char unicode_prop_name_pool_str1310[sizeof("chorasmian")]; + char unicode_prop_name_pool_str1320[sizeof("khmr")]; + char unicode_prop_name_pool_str1321[sizeof("ingurmukhi")]; + char unicode_prop_name_pool_str1323[sizeof("sund")]; + char unicode_prop_name_pool_str1324[sizeof("patternsyntax")]; + char unicode_prop_name_pool_str1331[sizeof("chrs")]; + char unicode_prop_name_pool_str1332[sizeof("math")]; + char unicode_prop_name_pool_str1337[sizeof("inscriptionalpahlavi")]; + char unicode_prop_name_pool_str1339[sizeof("goth")]; + char unicode_prop_name_pool_str1348[sizeof("adlam")]; + char unicode_prop_name_pool_str1351[sizeof("oids")]; + char unicode_prop_name_pool_str1358[sizeof("incjkunifiedideographsextensiond")]; + char unicode_prop_name_pool_str1368[sizeof("khmer")]; + char unicode_prop_name_pool_str1373[sizeof("grantha")]; + char unicode_prop_name_pool_str1374[sizeof("ll")]; + char unicode_prop_name_pool_str1376[sizeof("kharoshthi")]; + char unicode_prop_name_pool_str1380[sizeof("intirhuta")]; + char unicode_prop_name_pool_str1383[sizeof("inhatran")]; + char unicode_prop_name_pool_str1387[sizeof("inmiscellaneoustechnical")]; + char unicode_prop_name_pool_str1392[sizeof("logicalorderexception")]; + char unicode_prop_name_pool_str1393[sizeof("radical")]; + char unicode_prop_name_pool_str1394[sizeof("zl")]; + char unicode_prop_name_pool_str1395[sizeof("insorasompeng")]; + char unicode_prop_name_pool_str1404[sizeof("n")]; + char unicode_prop_name_pool_str1411[sizeof("intangsa")]; + char unicode_prop_name_pool_str1422[sizeof("kthi")]; + char unicode_prop_name_pool_str1431[sizeof("mult")]; + char unicode_prop_name_pool_str1432[sizeof("nandinagari")]; + char unicode_prop_name_pool_str1433[sizeof("no")]; + char unicode_prop_name_pool_str1442[sizeof("nko")]; + char unicode_prop_name_pool_str1443[sizeof("nkoo")]; + char unicode_prop_name_pool_str1444[sizeof("intulutigalari")]; + char unicode_prop_name_pool_str1447[sizeof("p")]; + char unicode_prop_name_pool_str1463[sizeof("emojimodifier")]; + char unicode_prop_name_pool_str1464[sizeof("xpeo")]; + char unicode_prop_name_pool_str1465[sizeof("brah")]; + char unicode_prop_name_pool_str1466[sizeof("sunu")]; + char unicode_prop_name_pool_str1467[sizeof("inoldhungarian")]; + char unicode_prop_name_pool_str1483[sizeof("inphoenician")]; + char unicode_prop_name_pool_str1486[sizeof("incyrillicextendeda")]; + char unicode_prop_name_pool_str1489[sizeof("inherited")]; + char unicode_prop_name_pool_str1496[sizeof("intaixuanjingsymbols")]; + char unicode_prop_name_pool_str1498[sizeof("ingreekandcoptic")]; + char unicode_prop_name_pool_str1512[sizeof("inenclosedideographicsupplement")]; + char unicode_prop_name_pool_str1519[sizeof("glagolitic")]; + char unicode_prop_name_pool_str1521[sizeof("inmeroitichieroglyphs")]; + char unicode_prop_name_pool_str1522[sizeof("bidicontrol")]; + char unicode_prop_name_pool_str1525[sizeof("enclosingmark")]; + char unicode_prop_name_pool_str1530[sizeof("regionalindicator")]; + char unicode_prop_name_pool_str1533[sizeof("beng")]; + char unicode_prop_name_pool_str1535[sizeof("inanatolianhieroglyphs")]; + char unicode_prop_name_pool_str1536[sizeof("joincontrol")]; + char unicode_prop_name_pool_str1539[sizeof("inkangxiradicals")]; + char unicode_prop_name_pool_str1541[sizeof("dia")]; + char unicode_prop_name_pool_str1542[sizeof("cpmn")]; + char unicode_prop_name_pool_str1547[sizeof("di")]; + char unicode_prop_name_pool_str1550[sizeof("diak")]; + char unicode_prop_name_pool_str1554[sizeof("graphemeextend")]; + char unicode_prop_name_pool_str1555[sizeof("indogra")]; + char unicode_prop_name_pool_str1557[sizeof("inphaistosdisc")]; + char unicode_prop_name_pool_str1561[sizeof("lepc")]; + char unicode_prop_name_pool_str1572[sizeof("sinh")]; + char unicode_prop_name_pool_str1575[sizeof("shavian")]; + char unicode_prop_name_pool_str1576[sizeof("gukh")]; + char unicode_prop_name_pool_str1583[sizeof("linb")]; + char unicode_prop_name_pool_str1592[sizeof("ingreekextended")]; + char unicode_prop_name_pool_str1593[sizeof("incyprominoan")]; + char unicode_prop_name_pool_str1595[sizeof("innabataean")]; + char unicode_prop_name_pool_str1596[sizeof("zanb")]; + char unicode_prop_name_pool_str1598[sizeof("inhanunoo")]; + char unicode_prop_name_pool_str1599[sizeof("bhks")]; + char unicode_prop_name_pool_str1600[sizeof("inkanbun")]; + char unicode_prop_name_pool_str1601[sizeof("inbhaiksuki")]; + char unicode_prop_name_pool_str1604[sizeof("incyrillicextendedc")]; + char unicode_prop_name_pool_str1608[sizeof("emod")]; + char unicode_prop_name_pool_str1611[sizeof("bhaiksuki")]; + char unicode_prop_name_pool_str1612[sizeof("xsux")]; + char unicode_prop_name_pool_str1622[sizeof("format")]; + char unicode_prop_name_pool_str1625[sizeof("inelbasan")]; + char unicode_prop_name_pool_str1629[sizeof("emojimodifierbase")]; + char unicode_prop_name_pool_str1633[sizeof("linearb")]; + char unicode_prop_name_pool_str1638[sizeof("olck")]; + char unicode_prop_name_pool_str1643[sizeof("inimperialaramaic")]; + char unicode_prop_name_pool_str1650[sizeof("inlatinextendedd")]; + char unicode_prop_name_pool_str1651[sizeof("insundanesesupplement")]; + char unicode_prop_name_pool_str1652[sizeof("intangut")]; + char unicode_prop_name_pool_str1654[sizeof("cntrl")]; + char unicode_prop_name_pool_str1655[sizeof("olchiki")]; + char unicode_prop_name_pool_str1657[sizeof("inlatinextendedadditional")]; + char unicode_prop_name_pool_str1660[sizeof("olower")]; + char unicode_prop_name_pool_str1666[sizeof("sogdian")]; + char unicode_prop_name_pool_str1668[sizeof("sogo")]; + char unicode_prop_name_pool_str1672[sizeof("ingeometricshapes")]; + char unicode_prop_name_pool_str1677[sizeof("emojicomponent")]; + char unicode_prop_name_pool_str1678[sizeof("limb")]; + char unicode_prop_name_pool_str1682[sizeof("intodhri")]; + char unicode_prop_name_pool_str1684[sizeof("inkayahli")]; + char unicode_prop_name_pool_str1687[sizeof("insogdian")]; + char unicode_prop_name_pool_str1688[sizeof("indingbats")]; + char unicode_prop_name_pool_str1690[sizeof("inoriya")]; + char unicode_prop_name_pool_str1691[sizeof("inyezidi")]; + char unicode_prop_name_pool_str1692[sizeof("insinhalaarchaicnumbers")]; + char unicode_prop_name_pool_str1696[sizeof("copt")]; + char unicode_prop_name_pool_str1697[sizeof("vithkuqi")]; + char unicode_prop_name_pool_str1698[sizeof("incb")]; + char unicode_prop_name_pool_str1699[sizeof("wara")]; + char unicode_prop_name_pool_str1700[sizeof("coptic")]; + char unicode_prop_name_pool_str1701[sizeof("gurungkhema")]; + char unicode_prop_name_pool_str1702[sizeof("inarabic")]; + char unicode_prop_name_pool_str1709[sizeof("ideographic")]; + char unicode_prop_name_pool_str1719[sizeof("diacritic")]; + char unicode_prop_name_pool_str1727[sizeof("cprt")]; + char unicode_prop_name_pool_str1733[sizeof("arab")]; + char unicode_prop_name_pool_str1734[sizeof("inenclosedalphanumerics")]; + char unicode_prop_name_pool_str1735[sizeof("anatolianhieroglyphs")]; + char unicode_prop_name_pool_str1745[sizeof("innewa")]; + char unicode_prop_name_pool_str1748[sizeof("asciihexdigit")]; + char unicode_prop_name_pool_str1750[sizeof("nand")]; + char unicode_prop_name_pool_str1751[sizeof("intags")]; + char unicode_prop_name_pool_str1752[sizeof("ininscriptionalparthian")]; + char unicode_prop_name_pool_str1753[sizeof("innushu")]; + char unicode_prop_name_pool_str1754[sizeof("ininscriptionalpahlavi")]; + char unicode_prop_name_pool_str1763[sizeof("inkawi")]; + char unicode_prop_name_pool_str1774[sizeof("inkatakanaphoneticextensions")]; + char unicode_prop_name_pool_str1775[sizeof("inarabicpresentationformsa")]; + char unicode_prop_name_pool_str1776[sizeof("inbasiclatin")]; + char unicode_prop_name_pool_str1778[sizeof("bopo")]; + char unicode_prop_name_pool_str1781[sizeof("lyci")]; + char unicode_prop_name_pool_str1784[sizeof("lycian")]; + char unicode_prop_name_pool_str1790[sizeof("inoldpersian")]; + char unicode_prop_name_pool_str1792[sizeof("imperialaramaic")]; + char unicode_prop_name_pool_str1801[sizeof("braille")]; + char unicode_prop_name_pool_str1803[sizeof("ingurungkhema")]; + char unicode_prop_name_pool_str1808[sizeof("inwarangciti")]; + char unicode_prop_name_pool_str1811[sizeof("inenclosedalphanumericsupplement")]; + char unicode_prop_name_pool_str1813[sizeof("phli")]; + char unicode_prop_name_pool_str1814[sizeof("mymr")]; + char unicode_prop_name_pool_str1817[sizeof("myanmar")]; + char unicode_prop_name_pool_str1823[sizeof("han")]; + char unicode_prop_name_pool_str1827[sizeof("hani")]; + char unicode_prop_name_pool_str1829[sizeof("incyrillicextendedd")]; + char unicode_prop_name_pool_str1832[sizeof("inbatak")]; + char unicode_prop_name_pool_str1833[sizeof("kawi")]; + char unicode_prop_name_pool_str1836[sizeof("hano")]; + char unicode_prop_name_pool_str1841[sizeof("glag")]; + char unicode_prop_name_pool_str1842[sizeof("lower")]; + char unicode_prop_name_pool_str1847[sizeof("inlisu")]; + char unicode_prop_name_pool_str1850[sizeof("ingeometricshapesextended")]; + char unicode_prop_name_pool_str1859[sizeof("hanunoo")]; + char unicode_prop_name_pool_str1863[sizeof("inkhojki")]; + char unicode_prop_name_pool_str1866[sizeof("intibetan")]; + char unicode_prop_name_pool_str1869[sizeof("grbase")]; + char unicode_prop_name_pool_str1870[sizeof("hira")]; + char unicode_prop_name_pool_str1874[sizeof("insoyombo")]; + char unicode_prop_name_pool_str1880[sizeof("decimalnumber")]; + char unicode_prop_name_pool_str1881[sizeof("inwancho")]; + char unicode_prop_name_pool_str1889[sizeof("inlisusupplement")]; + char unicode_prop_name_pool_str1895[sizeof("sorasompeng")]; + char unicode_prop_name_pool_str1896[sizeof("incoptic")]; + char unicode_prop_name_pool_str1897[sizeof("bopomofo")]; + char unicode_prop_name_pool_str1899[sizeof("inoldpermic")]; + char unicode_prop_name_pool_str1907[sizeof("sharada")]; + char unicode_prop_name_pool_str1909[sizeof("inethiopicsupplement")]; + char unicode_prop_name_pool_str1913[sizeof("incjksymbolsandpunctuation")]; + char unicode_prop_name_pool_str1915[sizeof("spacingmark")]; + char unicode_prop_name_pool_str1917[sizeof("intelugu")]; + char unicode_prop_name_pool_str1922[sizeof("inelymaic")]; + char unicode_prop_name_pool_str1930[sizeof("medf")]; + char unicode_prop_name_pool_str1933[sizeof("insyriacsupplement")]; + char unicode_prop_name_pool_str1934[sizeof("inblockelements")]; + char unicode_prop_name_pool_str1936[sizeof("incjkcompatibility")]; + char unicode_prop_name_pool_str1941[sizeof("medefaidrin")]; + char unicode_prop_name_pool_str1946[sizeof("inkanaextendedb")]; + char unicode_prop_name_pool_str1948[sizeof("oldpersian")]; + char unicode_prop_name_pool_str1950[sizeof("patsyn")]; + char unicode_prop_name_pool_str1951[sizeof("shrd")]; + char unicode_prop_name_pool_str1953[sizeof("lowercase")]; + char unicode_prop_name_pool_str1954[sizeof("orkh")]; + char unicode_prop_name_pool_str1962[sizeof("space")]; + char unicode_prop_name_pool_str1964[sizeof("innumberforms")]; + char unicode_prop_name_pool_str1965[sizeof("assigned")]; + char unicode_prop_name_pool_str1972[sizeof("inarabicextendeda")]; + char unicode_prop_name_pool_str1974[sizeof("inmyanmarextendedb")]; + char unicode_prop_name_pool_str1977[sizeof("inshorthandformatcontrols")]; + char unicode_prop_name_pool_str1980[sizeof("cwcm")]; + char unicode_prop_name_pool_str1986[sizeof("bugi")]; + char unicode_prop_name_pool_str1992[sizeof("variationselector")]; + char unicode_prop_name_pool_str1994[sizeof("inmayannumerals")]; + char unicode_prop_name_pool_str1995[sizeof("sogd")]; + char unicode_prop_name_pool_str1996[sizeof("dsrt")]; + char unicode_prop_name_pool_str2000[sizeof("inbyzantinemusicalsymbols")]; + char unicode_prop_name_pool_str2004[sizeof("ingeorgiansupplement")]; + char unicode_prop_name_pool_str2006[sizeof("lydi")]; + char unicode_prop_name_pool_str2009[sizeof("lydian")]; + char unicode_prop_name_pool_str2013[sizeof("siddham")]; + char unicode_prop_name_pool_str2018[sizeof("inbraillepatterns")]; + char unicode_prop_name_pool_str2024[sizeof("separator")]; + char unicode_prop_name_pool_str2027[sizeof("innewtailue")]; + char unicode_prop_name_pool_str2049[sizeof("sentenceterminal")]; + char unicode_prop_name_pool_str2055[sizeof("inornamentaldingbats")]; + char unicode_prop_name_pool_str2058[sizeof("word")]; + char unicode_prop_name_pool_str2059[sizeof("buginese")]; + char unicode_prop_name_pool_str2061[sizeof("oldpermic")]; + char unicode_prop_name_pool_str2065[sizeof("inyiradicals")]; + char unicode_prop_name_pool_str2066[sizeof("phnx")]; + char unicode_prop_name_pool_str2067[sizeof("hatran")]; + char unicode_prop_name_pool_str2071[sizeof("deseret")]; + char unicode_prop_name_pool_str2073[sizeof("ogam")]; + char unicode_prop_name_pool_str2077[sizeof("insuttonsignwriting")]; + char unicode_prop_name_pool_str2085[sizeof("inunifiedcanadianaboriginalsyllabicsextendeda")]; + char unicode_prop_name_pool_str2086[sizeof("incjkunifiedideographsextensionh")]; + char unicode_prop_name_pool_str2087[sizeof("nd")]; + char unicode_prop_name_pool_str2090[sizeof("inarabicextendedc")]; + char unicode_prop_name_pool_str2092[sizeof("idsb")]; + char unicode_prop_name_pool_str2095[sizeof("caseignorable")]; + char unicode_prop_name_pool_str2101[sizeof("sarb")]; + char unicode_prop_name_pool_str2104[sizeof("hatr")]; + char unicode_prop_name_pool_str2110[sizeof("uideo")]; + char unicode_prop_name_pool_str2120[sizeof("number")]; + char unicode_prop_name_pool_str2129[sizeof("zanabazarsquare")]; + char unicode_prop_name_pool_str2136[sizeof("inmiscellaneousmathematicalsymbolsb")]; + char unicode_prop_name_pool_str2161[sizeof("incjkunifiedideographsextensiong")]; + char unicode_prop_name_pool_str2163[sizeof("innyiakengpuachuehmong")]; + char unicode_prop_name_pool_str2169[sizeof("ahex")]; + char unicode_prop_name_pool_str2170[sizeof("soyo")]; + char unicode_prop_name_pool_str2172[sizeof("cuneiform")]; + char unicode_prop_name_pool_str2173[sizeof("insymbolsforlegacycomputingsupplement")]; + char unicode_prop_name_pool_str2180[sizeof("incopticepactnumbers")]; + char unicode_prop_name_pool_str2183[sizeof("osge")]; + char unicode_prop_name_pool_str2195[sizeof("closepunctuation")]; + char unicode_prop_name_pool_str2201[sizeof("graph")]; + char unicode_prop_name_pool_str2206[sizeof("alpha")]; + char unicode_prop_name_pool_str2211[sizeof("lowercaseletter")]; + char unicode_prop_name_pool_str2215[sizeof("modifierletter")]; + char unicode_prop_name_pool_str2218[sizeof("takri")]; + char unicode_prop_name_pool_str2219[sizeof("olditalic")]; + char unicode_prop_name_pool_str2221[sizeof("inlepcha")]; + char unicode_prop_name_pool_str2222[sizeof("invai")]; + char unicode_prop_name_pool_str2226[sizeof("surrogate")]; + char unicode_prop_name_pool_str2234[sizeof("meroitichieroglyphs")]; + char unicode_prop_name_pool_str2235[sizeof("other")]; + char unicode_prop_name_pool_str2241[sizeof("inpalmyrene")]; + char unicode_prop_name_pool_str2244[sizeof("cwt")]; + char unicode_prop_name_pool_str2245[sizeof("othernumber")]; + char unicode_prop_name_pool_str2247[sizeof("buhd")]; + char unicode_prop_name_pool_str2248[sizeof("otheridcontinue")]; + char unicode_prop_name_pool_str2249[sizeof("inunifiedcanadianaboriginalsyllabics")]; + char unicode_prop_name_pool_str2250[sizeof("takr")]; + char unicode_prop_name_pool_str2260[sizeof("unassigned")]; + char unicode_prop_name_pool_str2263[sizeof("vith")]; + char unicode_prop_name_pool_str2267[sizeof("inbamum")]; + char unicode_prop_name_pool_str2268[sizeof("phag")]; + char unicode_prop_name_pool_str2275[sizeof("taile")]; + char unicode_prop_name_pool_str2277[sizeof("inhanguljamo")]; + char unicode_prop_name_pool_str2280[sizeof("caucasianalbanian")]; + char unicode_prop_name_pool_str2281[sizeof("innoblock")]; + char unicode_prop_name_pool_str2283[sizeof("idstrinaryoperator")]; + char unicode_prop_name_pool_str2303[sizeof("syrc")]; + char unicode_prop_name_pool_str2306[sizeof("inhanguljamoextendeda")]; + char unicode_prop_name_pool_str2313[sizeof("inbalinese")]; + char unicode_prop_name_pool_str2352[sizeof("otheralphabetic")]; + char unicode_prop_name_pool_str2356[sizeof("gujr")]; + char unicode_prop_name_pool_str2361[sizeof("oldhungarian")]; + char unicode_prop_name_pool_str2367[sizeof("gujarati")]; + char unicode_prop_name_pool_str2372[sizeof("tnsa")]; + char unicode_prop_name_pool_str2374[sizeof("tangsa")]; + char unicode_prop_name_pool_str2377[sizeof("term")]; + char unicode_prop_name_pool_str2380[sizeof("inmongoliansupplement")]; + char unicode_prop_name_pool_str2383[sizeof("incombiningdiacriticalmarks")]; + char unicode_prop_name_pool_str2389[sizeof("inshavian")]; + char unicode_prop_name_pool_str2393[sizeof("incombiningdiacriticalmarksforsymbols")]; + char unicode_prop_name_pool_str2396[sizeof("spaceseparator")]; + char unicode_prop_name_pool_str2419[sizeof("cyrl")]; + char unicode_prop_name_pool_str2423[sizeof("syriac")]; + char unicode_prop_name_pool_str2427[sizeof("inunifiedcanadianaboriginalsyllabicsextended")]; + char unicode_prop_name_pool_str2428[sizeof("inethiopicextendeda")]; + char unicode_prop_name_pool_str2431[sizeof("inmathematicalalphanumericsymbols")]; + char unicode_prop_name_pool_str2451[sizeof("mlym")]; + char unicode_prop_name_pool_str2452[sizeof("induployan")]; + char unicode_prop_name_pool_str2456[sizeof("malayalam")]; + char unicode_prop_name_pool_str2461[sizeof("incombiningdiacriticalmarkssupplement")]; + char unicode_prop_name_pool_str2464[sizeof("insymbolsandpictographsextendeda")]; + char unicode_prop_name_pool_str2468[sizeof("toto")]; + char unicode_prop_name_pool_str2469[sizeof("ethi")]; + char unicode_prop_name_pool_str2471[sizeof("palmyrene")]; + char unicode_prop_name_pool_str2478[sizeof("rohg")]; + char unicode_prop_name_pool_str2489[sizeof("taiviet")]; + char unicode_prop_name_pool_str2507[sizeof("ougr")]; + char unicode_prop_name_pool_str2511[sizeof("oldturkic")]; + char unicode_prop_name_pool_str2512[sizeof("inpaucinhau")]; + char unicode_prop_name_pool_str2516[sizeof("lepcha")]; + char unicode_prop_name_pool_str2523[sizeof("orya")]; + char unicode_prop_name_pool_str2532[sizeof("incjkradicalssupplement")]; + char unicode_prop_name_pool_str2546[sizeof("incjkunifiedideographsextensionf")]; + char unicode_prop_name_pool_str2552[sizeof("inglagolitic")]; + char unicode_prop_name_pool_str2554[sizeof("intagalog")]; + char unicode_prop_name_pool_str2561[sizeof("incombiningdiacriticalmarksextended")]; + char unicode_prop_name_pool_str2566[sizeof("inphagspa")]; + char unicode_prop_name_pool_str2571[sizeof("ext")]; + char unicode_prop_name_pool_str2572[sizeof("indevanagari")]; + char unicode_prop_name_pool_str2579[sizeof("incjkunifiedideographsextensionb")]; + char unicode_prop_name_pool_str2585[sizeof("oalpha")]; + char unicode_prop_name_pool_str2591[sizeof("buhid")]; + char unicode_prop_name_pool_str2596[sizeof("ingothic")]; + char unicode_prop_name_pool_str2597[sizeof("avestan")]; + char unicode_prop_name_pool_str2601[sizeof("todr")]; + char unicode_prop_name_pool_str2610[sizeof("indevanagariextendeda")]; + char unicode_prop_name_pool_str2613[sizeof("inottomansiyaqnumbers")]; + char unicode_prop_name_pool_str2617[sizeof("todhri")]; + char unicode_prop_name_pool_str2638[sizeof("inlatin1supplement")]; + char unicode_prop_name_pool_str2648[sizeof("nagm")]; + char unicode_prop_name_pool_str2662[sizeof("inbrahmi")]; + char unicode_prop_name_pool_str2667[sizeof("terminalpunctuation")]; + char unicode_prop_name_pool_str2684[sizeof("otheridstart")]; + char unicode_prop_name_pool_str2687[sizeof("nchar")]; + char unicode_prop_name_pool_str2695[sizeof("inverticalforms")]; + char unicode_prop_name_pool_str2697[sizeof("phagspa")]; + char unicode_prop_name_pool_str2698[sizeof("dogra")]; + char unicode_prop_name_pool_str2700[sizeof("extpict")]; + char unicode_prop_name_pool_str2701[sizeof("intaiviet")]; + char unicode_prop_name_pool_str2719[sizeof("otheruppercase")]; + char unicode_prop_name_pool_str2727[sizeof("avst")]; + char unicode_prop_name_pool_str2729[sizeof("extender")]; + char unicode_prop_name_pool_str2734[sizeof("cwu")]; + char unicode_prop_name_pool_str2737[sizeof("inphoneticextensions")]; + char unicode_prop_name_pool_str2741[sizeof("invariationselectors")]; + char unicode_prop_name_pool_str2742[sizeof("inbengali")]; + char unicode_prop_name_pool_str2744[sizeof("dogr")]; + char unicode_prop_name_pool_str2745[sizeof("softdotted")]; + char unicode_prop_name_pool_str2746[sizeof("incurrencysymbols")]; + char unicode_prop_name_pool_str2751[sizeof("invedicextensions")]; + char unicode_prop_name_pool_str2753[sizeof("sunuwar")]; + char unicode_prop_name_pool_str2755[sizeof("osmanya")]; + char unicode_prop_name_pool_str2761[sizeof("wancho")]; + char unicode_prop_name_pool_str2769[sizeof("nl")]; + char unicode_prop_name_pool_str2770[sizeof("inethiopicextended")]; + char unicode_prop_name_pool_str2772[sizeof("mathsymbol")]; + char unicode_prop_name_pool_str2775[sizeof("inbuginese")]; + char unicode_prop_name_pool_str2779[sizeof("dash")]; + char unicode_prop_name_pool_str2780[sizeof("inlowsurrogates")]; + char unicode_prop_name_pool_str2787[sizeof("ebase")]; + char unicode_prop_name_pool_str2815[sizeof("inphoneticextensionssupplement")]; + char unicode_prop_name_pool_str2819[sizeof("invariationselectorssupplement")]; + char unicode_prop_name_pool_str2824[sizeof("zp")]; + char unicode_prop_name_pool_str2826[sizeof("posixpunct")]; + char unicode_prop_name_pool_str2835[sizeof("noncharactercodepoint")]; + char unicode_prop_name_pool_str2838[sizeof("sylo")]; + char unicode_prop_name_pool_str2840[sizeof("nonspacingmark")]; + char unicode_prop_name_pool_str2845[sizeof("oupper")]; + char unicode_prop_name_pool_str2852[sizeof("inlimbu")]; + char unicode_prop_name_pool_str2857[sizeof("wcho")]; + char unicode_prop_name_pool_str2860[sizeof("ingaray")]; + char unicode_prop_name_pool_str2862[sizeof("warangciti")]; + char unicode_prop_name_pool_str2865[sizeof("ingeorgianextended")]; + char unicode_prop_name_pool_str2870[sizeof("changeswhencasemapped")]; + char unicode_prop_name_pool_str2871[sizeof("currencysymbol")]; + char unicode_prop_name_pool_str2872[sizeof("intifinagh")]; + char unicode_prop_name_pool_str2879[sizeof("java")]; + char unicode_prop_name_pool_str2896[sizeof("titlecaseletter")]; + char unicode_prop_name_pool_str2898[sizeof("olonal")]; + char unicode_prop_name_pool_str2903[sizeof("mahj")]; + char unicode_prop_name_pool_str2904[sizeof("inmeroiticcursive")]; + char unicode_prop_name_pool_str2914[sizeof("mahajani")]; + char unicode_prop_name_pool_str2915[sizeof("tale")]; + char unicode_prop_name_pool_str2917[sizeof("otherlowercase")]; + char unicode_prop_name_pool_str2920[sizeof("ugar")]; + char unicode_prop_name_pool_str2925[sizeof("otherletter")]; + char unicode_prop_name_pool_str2930[sizeof("changeswhentitlecased")]; + char unicode_prop_name_pool_str2943[sizeof("epres")]; + char unicode_prop_name_pool_str2945[sizeof("emojipresentation")]; + char unicode_prop_name_pool_str2946[sizeof("inaegeannumbers")]; + char unicode_prop_name_pool_str2949[sizeof("inindicsiyaqnumbers")]; + char unicode_prop_name_pool_str2952[sizeof("indevanagariextended")]; + char unicode_prop_name_pool_str2959[sizeof("javanese")]; + char unicode_prop_name_pool_str2966[sizeof("hang")]; + char unicode_prop_name_pool_str2970[sizeof("inletterlikesymbols")]; + char unicode_prop_name_pool_str2973[sizeof("intagbanwa")]; + char unicode_prop_name_pool_str2975[sizeof("inalphabeticpresentationforms")]; + char unicode_prop_name_pool_str2978[sizeof("taml")]; + char unicode_prop_name_pool_str2979[sizeof("tirhuta")]; + char unicode_prop_name_pool_str2981[sizeof("whitespace")]; + char unicode_prop_name_pool_str2987[sizeof("ingujarati")]; + char unicode_prop_name_pool_str2992[sizeof("paragraphseparator")]; + char unicode_prop_name_pool_str2997[sizeof("intangutcomponents")]; + char unicode_prop_name_pool_str2999[sizeof("ingunjalagondi")]; + char unicode_prop_name_pool_str3002[sizeof("khoj")]; + char unicode_prop_name_pool_str3003[sizeof("inbassavah")]; + char unicode_prop_name_pool_str3004[sizeof("inbuhid")]; + char unicode_prop_name_pool_str3011[sizeof("khitansmallscript")]; + char unicode_prop_name_pool_str3014[sizeof("narb")]; + char unicode_prop_name_pool_str3017[sizeof("inbopomofo")]; + char unicode_prop_name_pool_str3020[sizeof("hiragana")]; + char unicode_prop_name_pool_str3025[sizeof("inrejang")]; + char unicode_prop_name_pool_str3027[sizeof("oldsogdian")]; + char unicode_prop_name_pool_str3035[sizeof("nushu")]; + char unicode_prop_name_pool_str3050[sizeof("incyrillicextendedb")]; + char unicode_prop_name_pool_str3051[sizeof("othersymbol")]; + char unicode_prop_name_pool_str3052[sizeof("nagmundari")]; + char unicode_prop_name_pool_str3053[sizeof("extendedpictographic")]; + char unicode_prop_name_pool_str3054[sizeof("otherdefaultignorablecodepoint")]; + char unicode_prop_name_pool_str3065[sizeof("hmng")]; + char unicode_prop_name_pool_str3068[sizeof("insymbolsforlegacycomputing")]; + char unicode_prop_name_pool_str3070[sizeof("omath")]; + char unicode_prop_name_pool_str3084[sizeof("sylotinagri")]; + char unicode_prop_name_pool_str3086[sizeof("inlinearbsyllabary")]; + char unicode_prop_name_pool_str3097[sizeof("intangutsupplement")]; + char unicode_prop_name_pool_str3098[sizeof("inarabicmathematicalalphabeticsymbols")]; + char unicode_prop_name_pool_str3100[sizeof("cf")]; + char unicode_prop_name_pool_str3105[sizeof("inenclosedcjklettersandmonths")]; + char unicode_prop_name_pool_str3107[sizeof("inbamumsupplement")]; + char unicode_prop_name_pool_str3111[sizeof("pf")]; + char unicode_prop_name_pool_str3130[sizeof("cwl")]; + char unicode_prop_name_pool_str3133[sizeof("nshu")]; + char unicode_prop_name_pool_str3136[sizeof("inmathematicaloperators")]; + char unicode_prop_name_pool_str3143[sizeof("inhangulsyllables")]; + char unicode_prop_name_pool_str3156[sizeof("incombininghalfmarks")]; + char unicode_prop_name_pool_str3162[sizeof("newa")]; + char unicode_prop_name_pool_str3169[sizeof("tangut")]; + char unicode_prop_name_pool_str3171[sizeof("digit")]; + char unicode_prop_name_pool_str3186[sizeof("changeswhenuppercased")]; + char unicode_prop_name_pool_str3189[sizeof("finalpunctuation")]; + char unicode_prop_name_pool_str3196[sizeof("inpsalterpahlavi")]; + char unicode_prop_name_pool_str3205[sizeof("phlp")]; + char unicode_prop_name_pool_str3207[sizeof("rjng")]; + char unicode_prop_name_pool_str3208[sizeof("nbat")]; + char unicode_prop_name_pool_str3210[sizeof("newtailue")]; + char unicode_prop_name_pool_str3212[sizeof("newline")]; + char unicode_prop_name_pool_str3213[sizeof("cyprominoan")]; + char unicode_prop_name_pool_str3217[sizeof("nabataean")]; + char unicode_prop_name_pool_str3223[sizeof("insuperscriptsandsubscripts")]; + char unicode_prop_name_pool_str3225[sizeof("cyrillic")]; + char unicode_prop_name_pool_str3243[sizeof("ugaritic")]; + char unicode_prop_name_pool_str3244[sizeof("ogham")]; + char unicode_prop_name_pool_str3252[sizeof("insmallformvariants")]; + char unicode_prop_name_pool_str3256[sizeof("inlatinextendedg")]; + char unicode_prop_name_pool_str3266[sizeof("thaa")]; + char unicode_prop_name_pool_str3270[sizeof("inarabicsupplement")]; + char unicode_prop_name_pool_str3272[sizeof("thaana")]; + char unicode_prop_name_pool_str3273[sizeof("thai")]; + char unicode_prop_name_pool_str3284[sizeof("shaw")]; + char unicode_prop_name_pool_str3292[sizeof("insupplementalarrowsa")]; + char unicode_prop_name_pool_str3293[sizeof("inplayingcards")]; + char unicode_prop_name_pool_str3318[sizeof("hmnp")]; + char unicode_prop_name_pool_str3320[sizeof("tirh")]; + char unicode_prop_name_pool_str3335[sizeof("idcompatmathcontinue")]; + char unicode_prop_name_pool_str3339[sizeof("inarabicpresentationformsb")]; + char unicode_prop_name_pool_str3343[sizeof("idcompatmathstart")]; + char unicode_prop_name_pool_str3345[sizeof("tang")]; + char unicode_prop_name_pool_str3349[sizeof("tagbanwa")]; + char unicode_prop_name_pool_str3354[sizeof("cypriot")]; + char unicode_prop_name_pool_str3355[sizeof("garay")]; + char unicode_prop_name_pool_str3362[sizeof("othermath")]; + char unicode_prop_name_pool_str3363[sizeof("sgnw")]; + char unicode_prop_name_pool_str3365[sizeof("talu")]; + char unicode_prop_name_pool_str3375[sizeof("taitham")]; + char unicode_prop_name_pool_str3384[sizeof("changeswhenlowercased")]; + char unicode_prop_name_pool_str3395[sizeof("khudawadi")]; + char unicode_prop_name_pool_str3398[sizeof("elba")]; + char unicode_prop_name_pool_str3401[sizeof("telu")]; + char unicode_prop_name_pool_str3410[sizeof("insupplementalarrowsc")]; + char unicode_prop_name_pool_str3412[sizeof("cwcf")]; + char unicode_prop_name_pool_str3416[sizeof("wspace")]; + char unicode_prop_name_pool_str3421[sizeof("any")]; + char unicode_prop_name_pool_str3432[sizeof("insupplementalmathematicaloperators")]; + char unicode_prop_name_pool_str3445[sizeof("ogrext")]; + char unicode_prop_name_pool_str3452[sizeof("hung")]; + char unicode_prop_name_pool_str3463[sizeof("hebr")]; + char unicode_prop_name_pool_str3473[sizeof("deprecated")]; + char unicode_prop_name_pool_str3485[sizeof("unknown")]; + char unicode_prop_name_pool_str3497[sizeof("oldnortharabian")]; + char unicode_prop_name_pool_str3510[sizeof("modifiercombiningmark")]; + char unicode_prop_name_pool_str3516[sizeof("kayahli")]; + char unicode_prop_name_pool_str3532[sizeof("invithkuqi")]; + char unicode_prop_name_pool_str3536[sizeof("inarabicextendedb")]; + char unicode_prop_name_pool_str3566[sizeof("indivesakuru")]; + char unicode_prop_name_pool_str3578[sizeof("elbasan")]; + char unicode_prop_name_pool_str3581[sizeof("elym")]; + char unicode_prop_name_pool_str3606[sizeof("otherpunctuation")]; + char unicode_prop_name_pool_str3610[sizeof("elymaic")]; + char unicode_prop_name_pool_str3623[sizeof("symbol")]; + char unicode_prop_name_pool_str3635[sizeof("tulutigalari")]; + char unicode_prop_name_pool_str3641[sizeof("inalchemicalsymbols")]; + char unicode_prop_name_pool_str3645[sizeof("inpahawhhmong")]; + char unicode_prop_name_pool_str3661[sizeof("inprivateusearea")]; + char unicode_prop_name_pool_str3663[sizeof("tamil")]; + char unicode_prop_name_pool_str3676[sizeof("hangul")]; + char unicode_prop_name_pool_str3703[sizeof("inyisyllables")]; + char unicode_prop_name_pool_str3731[sizeof("hex")]; + char unicode_prop_name_pool_str3739[sizeof("insupplementalpunctuation")]; + char unicode_prop_name_pool_str3762[sizeof("deva")]; + char unicode_prop_name_pool_str3774[sizeof("inyijinghexagramsymbols")]; + char unicode_prop_name_pool_str3776[sizeof("inhighprivateusesurrogates")]; + char unicode_prop_name_pool_str3779[sizeof("devanagari")]; + char unicode_prop_name_pool_str3786[sizeof("bassavah")]; + char unicode_prop_name_pool_str3836[sizeof("soyombo")]; + char unicode_prop_name_pool_str3849[sizeof("dashpunctuation")]; + char unicode_prop_name_pool_str3865[sizeof("inmahjongtiles")]; + char unicode_prop_name_pool_str3870[sizeof("inhanguljamoextendedb")]; + char unicode_prop_name_pool_str3893[sizeof("alphabetic")]; + char unicode_prop_name_pool_str3903[sizeof("aghb")]; + char unicode_prop_name_pool_str3926[sizeof("incypriotsyllabary")]; + char unicode_prop_name_pool_str3936[sizeof("oldsoutharabian")]; + char unicode_prop_name_pool_str3985[sizeof("inhalfwidthandfullwidthforms")]; + char unicode_prop_name_pool_str3992[sizeof("inethiopicextendedb")]; + char unicode_prop_name_pool_str3999[sizeof("ethiopic")]; + char unicode_prop_name_pool_str4007[sizeof("tibt")]; + char unicode_prop_name_pool_str4014[sizeof("tibetan")]; + char unicode_prop_name_pool_str4026[sizeof("inlatinextendedf")]; + char unicode_prop_name_pool_str4031[sizeof("othergraphemeextend")]; + char unicode_prop_name_pool_str4061[sizeof("injavanese")]; + char unicode_prop_name_pool_str4068[sizeof("tutg")]; + char unicode_prop_name_pool_str4083[sizeof("ecomp")]; + char unicode_prop_name_pool_str4084[sizeof("inglagoliticsupplement")]; + char unicode_prop_name_pool_str4092[sizeof("inlatinextendedb")]; + char unicode_prop_name_pool_str4104[sizeof("dupl")]; + char unicode_prop_name_pool_str4175[sizeof("modifiersymbol")]; + char unicode_prop_name_pool_str4190[sizeof("hexdigit")]; + char unicode_prop_name_pool_str4278[sizeof("inegyptianhieroglyphsextendeda")]; + char unicode_prop_name_pool_str4302[sizeof("changeswhencasefolded")]; + char unicode_prop_name_pool_str4368[sizeof("dep")]; + char unicode_prop_name_pool_str4391[sizeof("rejang")]; + char unicode_prop_name_pool_str4398[sizeof("divesakuru")]; + char unicode_prop_name_pool_str4404[sizeof("openpunctuation")]; + char unicode_prop_name_pool_str4425[sizeof("inhebrew")]; + char unicode_prop_name_pool_str4442[sizeof("inegyptianhieroglyphs")]; + char unicode_prop_name_pool_str4455[sizeof("inegyptianhieroglyphformatcontrols")]; + char unicode_prop_name_pool_str4514[sizeof("hanifirohingya")]; + char unicode_prop_name_pool_str4566[sizeof("signwriting")]; + char unicode_prop_name_pool_str4617[sizeof("defaultignorablecodepoint")]; + char unicode_prop_name_pool_str4620[sizeof("upper")]; + char unicode_prop_name_pool_str4627[sizeof("tavt")]; + char unicode_prop_name_pool_str4635[sizeof("inbopomofoextended")]; + char unicode_prop_name_pool_str4653[sizeof("insupplementaryprivateuseareaa")]; + char unicode_prop_name_pool_str4701[sizeof("olduyghur")]; + char unicode_prop_name_pool_str4709[sizeof("hluw")]; + char unicode_prop_name_pool_str4731[sizeof("uppercase")]; + char unicode_prop_name_pool_str4808[sizeof("inhighsurrogates")]; + char unicode_prop_name_pool_str4812[sizeof("tifinagh")]; + char unicode_prop_name_pool_str4856[sizeof("insupplementalarrowsb")]; + char unicode_prop_name_pool_str4876[sizeof("tfng")]; + char unicode_prop_name_pool_str4905[sizeof("tagb")]; + char unicode_prop_name_pool_str4909[sizeof("hyphen")]; + char unicode_prop_name_pool_str4972[sizeof("zyyy")]; + char unicode_prop_name_pool_str4989[sizeof("uppercaseletter")]; + char unicode_prop_name_pool_str5035[sizeof("telugu")]; + char unicode_prop_name_pool_str5069[sizeof("pahawhhmong")]; + char unicode_prop_name_pool_str5080[sizeof("insupplementalsymbolsandpictographs")]; + char unicode_prop_name_pool_str5081[sizeof("unifiedideograph")]; + char unicode_prop_name_pool_str5092[sizeof("duployan")]; + char unicode_prop_name_pool_str5163[sizeof("inboxdrawing")]; + char unicode_prop_name_pool_str5171[sizeof("tglg")]; + char unicode_prop_name_pool_str5190[sizeof("tagalog")]; + char unicode_prop_name_pool_str5237[sizeof("inhangulcompatibilityjamo")]; + char unicode_prop_name_pool_str5343[sizeof("egyp")]; + char unicode_prop_name_pool_str5453[sizeof("nyiakengpuachuehmong")]; + char unicode_prop_name_pool_str6075[sizeof("egyptianhieroglyphs")]; + char unicode_prop_name_pool_str6217[sizeof("insupplementaryprivateuseareab")]; + char unicode_prop_name_pool_str6900[sizeof("hebrew")]; + }; +static const struct unicode_prop_name_pool_t unicode_prop_name_pool_contents = + { + "lana", + "yi", + "lina", + "yiii", + "mn", + "maka", + "mani", + "z", + "inkannada", + "lo", + "lao", + "laoo", + "miao", + "cn", + "ci", + "innko", + "zzzz", + "yezi", + "gara", + "gran", + "pi", + "lineara", + "co", + "mark", + "po", + "inkiratrai", + "me", + "inkharoshthi", + "cari", + "loe", + "carian", + "mro", + "mroo", + "grek", + "kana", + "geor", + "greek", + "m", + "mero", + "pe", + "mendekikakui", + "gonm", + "inosmanya", + "inmanichaean", + "inchakma", + "cakm", + "inmro", + "inmiao", + "meeteimayek", + "mandaic", + "c", + "krai", + "inarmenian", + "inmyanmar", + "inmakasar", + "common", + "qaai", + "marc", + "inrunic", + "incarian", + "lm", + "inkhmer", + "inchorasmian", + "inideographicsymbolsandpunctuation", + "cans", + "merc", + "combiningmark", + "inahom", + "perm", + "inavestan", + "connectorpunctuation", + "insharada", + "lc", + "prependedconcatenationmark", + "incuneiformnumbersandpunctuation", + "inipaextensions", + "makasar", + "latn", + "mc", + "inarrows", + "ri", + "latin", + "incherokee", + "inthaana", + "masaramgondi", + "inkatakana", + "armn", + "inthai", + "cc", + "armi", + "incuneiform", + "inkaithi", + "pc", + "armenian", + "inmarchen", + "qmark", + "qaac", + "initialpunctuation", + "inzanabazarsquare", + "insamaritan", + "lineseparator", + "mtei", + "inmasaramgondi", + "inscriptionalparthian", + "incyrillic", + "intakri", + "incham", + "mcm", + "prti", + "katakana", + "inkhmersymbols", + "insyriac", + "pcm", + "mand", + "zs", + "inkanaextendeda", + "cs", + "modi", + "privateuse", + "ps", + "brai", + "mend", + "ideo", + "yezidi", + "inmyanmarextendeda", + "arabic", + "letter", + "xidcontinue", + "ascii", + "innandinagari", + "inoldnortharabian", + "inmeeteimayek", + "knda", + "kannada", + "intransportandmapsymbols", + "kiratrai", + "inruminumeralsymbols", + "inideographicdescriptioncharacters", + "incjkcompatibilityforms", + "letternumber", + "incjkcompatibilityideographs", + "inmodi", + "xidc", + "inmendekikakui", + "lt", + "inemoticons", + "sk", + "inolditalic", + "brahmi", + "gothic", + "inmedefaidrin", + "psalterpahlavi", + "so", + "inspecials", + "kits", + "inmyanmarextendedc", + "intoto", + "xids", + "inchesssymbols", + "incjkcompatibilityideographssupplement", + "inopticalcharacterrecognition", + "sora", + "inkanasupplement", + "inoldsogdian", + "meroiticcursive", + "inmiscellaneousmathematicalsymbolsa", + "grext", + "patternwhitespace", + "insundanese", + "inmandaic", + "print", + "idc", + "batk", + "inancientsymbols", + "batak", + "intaitham", + "inoldsoutharabian", + "incommonindicnumberforms", + "inznamennymusicalnotation", + "samr", + "patws", + "bamum", + "idsbinaryoperator", + "samaritan", + "pauc", + "s", + "incjkstrokes", + "inugaritic", + "lisu", + "indominotiles", + "idsunaryoperator", + "sm", + "l", + "inancientgreekmusicalnotation", + "bass", + "ids", + "inmodifiertoneletters", + "incontrolpictures", + "sc", + "insaurashtra", + "insunuwar", + "inlao", + "pd", + "inolonal", + "inoldturkic", + "inlineara", + "mongolian", + "inmusicalsymbols", + "idcontinue", + "incaucasianalbanian", + "grlink", + "idst", + "runr", + "kali", + "inadlam", + "inmiscellaneoussymbols", + "control", + "indeseret", + "inmiscellaneoussymbolsandarrows", + "idstart", + "inmiscellaneoussymbolsandpictographs", + "inlycian", + "palm", + "sind", + "onao", + "xidstart", + "inancientgreeknumbers", + "xdigit", + "inmeeteimayekextensions", + "inkhudawadi", + "inspacingmodifierletters", + "oriya", + "cased", + "inmalayalam", + "inolduyghur", + "incountingrodnumerals", + "bamu", + "insmallkanaextension", + "bidic", + "ital", + "inkaktoviknumerals", + "joinc", + "insylotinagri", + "vai", + "vaii", + "inlinearbideograms", + "inlatinextendeda", + "sterm", + "incyrillicsupplement", + "runic", + "lu", + "insiddham", + "quotationmark", + "intaile", + "incherokeesupplement", + "alnum", + "idsu", + "incjkunifiedideographsextensiona", + "incjkunifiedideographsextensioni", + "saur", + "punct", + "sundanese", + "guru", + "inlatinextendede", + "bali", + "paucinhau", + "blank", + "gurmukhi", + "intamil", + "incjkunifiedideographsextensione", + "inmultani", + "inlydian", + "osage", + "bengali", + "limbu", + "osma", + "zinh", + "balinese", + "inhanifirohingya", + "plrd", + "incjkunifiedideographsextensionc", + "inhiragana", + "canadianaboriginal", + "saurashtra", + "phoenician", + "ingrantha", + "sd", + "gong", + "incjkunifiedideographs", + "marchen", + "sidd", + "odi", + "mong", + "sinhala", + "graphemelink", + "inearlydynasticcuneiform", + "cher", + "kaithi", + "inmahajani", + "inlatinextendedc", + "multani", + "inogham", + "gunjalagondi", + "cham", + "cherokee", + "chakma", + "khojki", + "inosage", + "khar", + "manichaean", + "georgian", + "ingeneralpunctuation", + "inolchiki", + "ingeorgian", + "graphemebase", + "adlm", + "inethiopic", + "inkhitansmallscript", + "insinhala", + "inmongolian", + "punctuation", + "emoji", + "innagmundari", + "vs", + "casedletter", + "oidc", + "intamilsupplement", + "ahom", + "chorasmian", + "khmr", + "ingurmukhi", + "sund", + "patternsyntax", + "chrs", + "math", + "inscriptionalpahlavi", + "goth", + "adlam", + "oids", + "incjkunifiedideographsextensiond", + "khmer", + "grantha", + "ll", + "kharoshthi", + "intirhuta", + "inhatran", + "inmiscellaneoustechnical", + "logicalorderexception", + "radical", + "zl", + "insorasompeng", + "n", + "intangsa", + "kthi", + "mult", + "nandinagari", + "no", + "nko", + "nkoo", + "intulutigalari", + "p", + "emojimodifier", + "xpeo", + "brah", + "sunu", + "inoldhungarian", + "inphoenician", + "incyrillicextendeda", + "inherited", + "intaixuanjingsymbols", + "ingreekandcoptic", + "inenclosedideographicsupplement", + "glagolitic", + "inmeroitichieroglyphs", + "bidicontrol", + "enclosingmark", + "regionalindicator", + "beng", + "inanatolianhieroglyphs", + "joincontrol", + "inkangxiradicals", + "dia", + "cpmn", + "di", + "diak", + "graphemeextend", + "indogra", + "inphaistosdisc", + "lepc", + "sinh", + "shavian", + "gukh", + "linb", + "ingreekextended", + "incyprominoan", + "innabataean", + "zanb", + "inhanunoo", + "bhks", + "inkanbun", + "inbhaiksuki", + "incyrillicextendedc", + "emod", + "bhaiksuki", + "xsux", + "format", + "inelbasan", + "emojimodifierbase", + "linearb", + "olck", + "inimperialaramaic", + "inlatinextendedd", + "insundanesesupplement", + "intangut", + "cntrl", + "olchiki", + "inlatinextendedadditional", + "olower", + "sogdian", + "sogo", + "ingeometricshapes", + "emojicomponent", + "limb", + "intodhri", + "inkayahli", + "insogdian", + "indingbats", + "inoriya", + "inyezidi", + "insinhalaarchaicnumbers", + "copt", + "vithkuqi", + "incb", + "wara", + "coptic", + "gurungkhema", + "inarabic", + "ideographic", + "diacritic", + "cprt", + "arab", + "inenclosedalphanumerics", + "anatolianhieroglyphs", + "innewa", + "asciihexdigit", + "nand", + "intags", + "ininscriptionalparthian", + "innushu", + "ininscriptionalpahlavi", + "inkawi", + "inkatakanaphoneticextensions", + "inarabicpresentationformsa", + "inbasiclatin", + "bopo", + "lyci", + "lycian", + "inoldpersian", + "imperialaramaic", + "braille", + "ingurungkhema", + "inwarangciti", + "inenclosedalphanumericsupplement", + "phli", + "mymr", + "myanmar", + "han", + "hani", + "incyrillicextendedd", + "inbatak", + "kawi", + "hano", + "glag", + "lower", + "inlisu", + "ingeometricshapesextended", + "hanunoo", + "inkhojki", + "intibetan", + "grbase", + "hira", + "insoyombo", + "decimalnumber", + "inwancho", + "inlisusupplement", + "sorasompeng", + "incoptic", + "bopomofo", + "inoldpermic", + "sharada", + "inethiopicsupplement", + "incjksymbolsandpunctuation", + "spacingmark", + "intelugu", + "inelymaic", + "medf", + "insyriacsupplement", + "inblockelements", + "incjkcompatibility", + "medefaidrin", + "inkanaextendedb", + "oldpersian", + "patsyn", + "shrd", + "lowercase", + "orkh", + "space", + "innumberforms", + "assigned", + "inarabicextendeda", + "inmyanmarextendedb", + "inshorthandformatcontrols", + "cwcm", + "bugi", + "variationselector", + "inmayannumerals", + "sogd", + "dsrt", + "inbyzantinemusicalsymbols", + "ingeorgiansupplement", + "lydi", + "lydian", + "siddham", + "inbraillepatterns", + "separator", + "innewtailue", + "sentenceterminal", + "inornamentaldingbats", + "word", + "buginese", + "oldpermic", + "inyiradicals", + "phnx", + "hatran", + "deseret", + "ogam", + "insuttonsignwriting", + "inunifiedcanadianaboriginalsyllabicsextendeda", + "incjkunifiedideographsextensionh", + "nd", + "inarabicextendedc", + "idsb", + "caseignorable", + "sarb", + "hatr", + "uideo", + "number", + "zanabazarsquare", + "inmiscellaneousmathematicalsymbolsb", + "incjkunifiedideographsextensiong", + "innyiakengpuachuehmong", + "ahex", + "soyo", + "cuneiform", + "insymbolsforlegacycomputingsupplement", + "incopticepactnumbers", + "osge", + "closepunctuation", + "graph", + "alpha", + "lowercaseletter", + "modifierletter", + "takri", + "olditalic", + "inlepcha", + "invai", + "surrogate", + "meroitichieroglyphs", + "other", + "inpalmyrene", + "cwt", + "othernumber", + "buhd", + "otheridcontinue", + "inunifiedcanadianaboriginalsyllabics", + "takr", + "unassigned", + "vith", + "inbamum", + "phag", + "taile", + "inhanguljamo", + "caucasianalbanian", + "innoblock", + "idstrinaryoperator", + "syrc", + "inhanguljamoextendeda", + "inbalinese", + "otheralphabetic", + "gujr", + "oldhungarian", + "gujarati", + "tnsa", + "tangsa", + "term", + "inmongoliansupplement", + "incombiningdiacriticalmarks", + "inshavian", + "incombiningdiacriticalmarksforsymbols", + "spaceseparator", + "cyrl", + "syriac", + "inunifiedcanadianaboriginalsyllabicsextended", + "inethiopicextendeda", + "inmathematicalalphanumericsymbols", + "mlym", + "induployan", + "malayalam", + "incombiningdiacriticalmarkssupplement", + "insymbolsandpictographsextendeda", + "toto", + "ethi", + "palmyrene", + "rohg", + "taiviet", + "ougr", + "oldturkic", + "inpaucinhau", + "lepcha", + "orya", + "incjkradicalssupplement", + "incjkunifiedideographsextensionf", + "inglagolitic", + "intagalog", + "incombiningdiacriticalmarksextended", + "inphagspa", + "ext", + "indevanagari", + "incjkunifiedideographsextensionb", + "oalpha", + "buhid", + "ingothic", + "avestan", + "todr", + "indevanagariextendeda", + "inottomansiyaqnumbers", + "todhri", + "inlatin1supplement", + "nagm", + "inbrahmi", + "terminalpunctuation", + "otheridstart", + "nchar", + "inverticalforms", + "phagspa", + "dogra", + "extpict", + "intaiviet", + "otheruppercase", + "avst", + "extender", + "cwu", + "inphoneticextensions", + "invariationselectors", + "inbengali", + "dogr", + "softdotted", + "incurrencysymbols", + "invedicextensions", + "sunuwar", + "osmanya", + "wancho", + "nl", + "inethiopicextended", + "mathsymbol", + "inbuginese", + "dash", + "inlowsurrogates", + "ebase", + "inphoneticextensionssupplement", + "invariationselectorssupplement", + "zp", + "posixpunct", + "noncharactercodepoint", + "sylo", + "nonspacingmark", + "oupper", + "inlimbu", + "wcho", + "ingaray", + "warangciti", + "ingeorgianextended", + "changeswhencasemapped", + "currencysymbol", + "intifinagh", + "java", + "titlecaseletter", + "olonal", + "mahj", + "inmeroiticcursive", + "mahajani", + "tale", + "otherlowercase", + "ugar", + "otherletter", + "changeswhentitlecased", + "epres", + "emojipresentation", + "inaegeannumbers", + "inindicsiyaqnumbers", + "indevanagariextended", + "javanese", + "hang", + "inletterlikesymbols", + "intagbanwa", + "inalphabeticpresentationforms", + "taml", + "tirhuta", + "whitespace", + "ingujarati", + "paragraphseparator", + "intangutcomponents", + "ingunjalagondi", + "khoj", + "inbassavah", + "inbuhid", + "khitansmallscript", + "narb", + "inbopomofo", + "hiragana", + "inrejang", + "oldsogdian", + "nushu", + "incyrillicextendedb", + "othersymbol", + "nagmundari", + "extendedpictographic", + "otherdefaultignorablecodepoint", + "hmng", + "insymbolsforlegacycomputing", + "omath", + "sylotinagri", + "inlinearbsyllabary", + "intangutsupplement", + "inarabicmathematicalalphabeticsymbols", + "cf", + "inenclosedcjklettersandmonths", + "inbamumsupplement", + "pf", + "cwl", + "nshu", + "inmathematicaloperators", + "inhangulsyllables", + "incombininghalfmarks", + "newa", + "tangut", + "digit", + "changeswhenuppercased", + "finalpunctuation", + "inpsalterpahlavi", + "phlp", + "rjng", + "nbat", + "newtailue", + "newline", + "cyprominoan", + "nabataean", + "insuperscriptsandsubscripts", + "cyrillic", + "ugaritic", + "ogham", + "insmallformvariants", + "inlatinextendedg", + "thaa", + "inarabicsupplement", + "thaana", + "thai", + "shaw", + "insupplementalarrowsa", + "inplayingcards", + "hmnp", + "tirh", + "idcompatmathcontinue", + "inarabicpresentationformsb", + "idcompatmathstart", + "tang", + "tagbanwa", + "cypriot", + "garay", + "othermath", + "sgnw", + "talu", + "taitham", + "changeswhenlowercased", + "khudawadi", + "elba", + "telu", + "insupplementalarrowsc", + "cwcf", + "wspace", + "any", + "insupplementalmathematicaloperators", + "ogrext", + "hung", + "hebr", + "deprecated", + "unknown", + "oldnortharabian", + "modifiercombiningmark", + "kayahli", + "invithkuqi", + "inarabicextendedb", + "indivesakuru", + "elbasan", + "elym", + "otherpunctuation", + "elymaic", + "symbol", + "tulutigalari", + "inalchemicalsymbols", + "inpahawhhmong", + "inprivateusearea", + "tamil", + "hangul", + "inyisyllables", + "hex", + "insupplementalpunctuation", + "deva", + "inyijinghexagramsymbols", + "inhighprivateusesurrogates", + "devanagari", + "bassavah", + "soyombo", + "dashpunctuation", + "inmahjongtiles", + "inhanguljamoextendedb", + "alphabetic", + "aghb", + "incypriotsyllabary", + "oldsoutharabian", + "inhalfwidthandfullwidthforms", + "inethiopicextendedb", + "ethiopic", + "tibt", + "tibetan", + "inlatinextendedf", + "othergraphemeextend", + "injavanese", + "tutg", + "ecomp", + "inglagoliticsupplement", + "inlatinextendedb", + "dupl", + "modifiersymbol", + "hexdigit", + "inegyptianhieroglyphsextendeda", + "changeswhencasefolded", + "dep", + "rejang", + "divesakuru", + "openpunctuation", + "inhebrew", + "inegyptianhieroglyphs", + "inegyptianhieroglyphformatcontrols", + "hanifirohingya", + "signwriting", + "defaultignorablecodepoint", + "upper", + "tavt", + "inbopomofoextended", + "insupplementaryprivateuseareaa", + "olduyghur", + "hluw", + "uppercase", + "inhighsurrogates", + "tifinagh", + "insupplementalarrowsb", + "tfng", + "tagb", + "hyphen", + "zyyy", + "uppercaseletter", + "telugu", + "pahawhhmong", + "insupplementalsymbolsandpictographs", + "unifiedideograph", + "duployan", + "inboxdrawing", + "tglg", + "tagalog", + "inhangulcompatibilityjamo", + "egyp", + "nyiakengpuachuehmong", + "egyptianhieroglyphs", + "insupplementaryprivateuseareab", + "hebrew" + }; +#define unicode_prop_name_pool ((const char *) &unicode_prop_name_pool_contents) +static const struct PoolPropertyNameCtype * +unicode_lookup_property_name (register const char *str, register size_t len) +{ + static const struct PoolPropertyNameCtype wordlist[] = + { + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, + + {pool_offset(12), 255}, + {-1}, {-1}, {-1}, + + {pool_offset(16), 284}, + {-1}, {-1}, + + {pool_offset(19), 137}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(25), 284}, + + {pool_offset(26), 166}, + {-1}, + + {pool_offset(28), 151}, + {-1}, {-1}, + + {pool_offset(31), 154}, + {-1}, {-1}, + + {pool_offset(34), 285}, + {-1}, {-1}, + + {pool_offset(37), 319}, + + {pool_offset(38), 142}, + + {pool_offset(39), 133}, + + {pool_offset(40), 133}, + {-1}, {-1}, + + {pool_offset(43), 165}, + {-1}, {-1}, + + {pool_offset(46), 54}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(52), 40}, + + {pool_offset(53), 306}, + {-1}, + + {pool_offset(55), 273}, + + {pool_offset(56), 283}, + {-1}, + + {pool_offset(58), 83}, + {-1}, {-1}, {-1}, + + {pool_offset(62), 87}, + + {pool_offset(63), 221}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(69), 137}, + + {pool_offset(70), 55}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(75), 149}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(81), 222}, + {-1}, {-1}, + + {pool_offset(84), 559}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(90), 159}, + {-1}, {-1}, + + {pool_offset(93), 487}, + + {pool_offset(94), 39}, + + {pool_offset(95), 143}, + {-1}, + + {pool_offset(97), 39}, + + {pool_offset(98), 170}, + + {pool_offset(99), 170}, + {-1}, {-1}, + + {pool_offset(102), 91}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(107), 122}, + {-1}, {-1}, + + {pool_offset(110), 84}, + + {pool_offset(111), 91}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(116), 149}, + {-1}, {-1}, + + {pool_offset(119), 164}, + {-1}, + + {pool_offset(121), 217}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(126), 162}, + {-1}, {-1}, {-1}, + + {pool_offset(130), 156}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(136), 470}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(142), 490}, + {-1}, {-1}, {-1}, + + {pool_offset(146), 510}, + + {pool_offset(147), 45}, + + {pool_offset(148), 555}, + + {pool_offset(149), 561}, + + {pool_offset(150), 161}, + {-1}, + + {pool_offset(152), 153}, + {-1}, {-1}, + + {pool_offset(155), 37}, + {-1}, + + {pool_offset(157), 130}, + {-1}, {-1}, {-1}, + + {pool_offset(161), 300}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(171), 325}, + {-1}, {-1}, {-1}, + + {pool_offset(175), 541}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(181), 56}, + {-1}, {-1}, + + {pool_offset(184), 115}, + + {pool_offset(185), 155}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(195), 333}, + + {pool_offset(196), 461}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(204), 141}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(209), 338}, + {-1}, {-1}, {-1}, + + {pool_offset(213), 505}, + {-1}, + + {pool_offset(215), 562}, + {-1}, + + {pool_offset(217), 38}, + {-1}, {-1}, {-1}, + + {pool_offset(221), 163}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(230), 149}, + {-1}, + + {pool_offset(232), 526}, + + {pool_offset(233), 192}, + + {pool_offset(234), 491}, + {-1}, {-1}, {-1}, + + {pool_offset(238), 215}, + {-1}, {-1}, + + {pool_offset(241), 512}, + + {pool_offset(242), 132}, + {-1}, + + {pool_offset(244), 223}, + {-1}, + + {pool_offset(246), 546}, + {-1}, {-1}, {-1}, + + {pool_offset(250), 294}, + + {pool_offset(251), 151}, + {-1}, + + {pool_offset(253), 134}, + + {pool_offset(254), 158}, + {-1}, + + {pool_offset(256), 368}, + + {pool_offset(257), 228}, + + {pool_offset(258), 134}, + + {pool_offset(259), 330}, + {-1}, + + {pool_offset(261), 305}, + + {pool_offset(262), 156}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(271), 399}, + + {pool_offset(272), 22}, + + {pool_offset(273), 322}, + + {pool_offset(274), 43}, + + {pool_offset(275), 113}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(280), 545}, + {-1}, {-1}, + + {pool_offset(283), 508}, + {-1}, + + {pool_offset(285), 215}, + {-1}, + + {pool_offset(287), 22}, + {-1}, + + {pool_offset(289), 538}, + {-1}, {-1}, {-1}, + + {pool_offset(293), 226}, + {-1}, + + {pool_offset(295), 57}, + + {pool_offset(296), 221}, + {-1}, + + {pool_offset(298), 531}, + + {pool_offset(299), 307}, + + {pool_offset(300), 287}, + {-1}, {-1}, {-1}, + + {pool_offset(304), 161}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(309), 539}, + {-1}, + + {pool_offset(311), 117}, + + {pool_offset(312), 298}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(322), 524}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, + + {pool_offset(334), 429}, + + {pool_offset(335), 168}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, + + {pool_offset(346), 117}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(356), 122}, + {-1}, + + {pool_offset(358), 344}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(365), 303}, + + {pool_offset(366), 223}, + + {pool_offset(367), 153}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(372), 289}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(382), 569}, + {-1}, + + {pool_offset(384), 58}, + {-1}, + + {pool_offset(386), 167}, + {-1}, + + {pool_offset(388), 55}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(395), 224}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(401), 34}, + {-1}, + + {pool_offset(403), 162}, + {-1}, {-1}, {-1}, + + {pool_offset(407), 112}, + + {pool_offset(408), 283}, + {-1}, + + {pool_offset(410), 430}, + {-1}, {-1}, {-1}, + + {pool_offset(414), 21}, + {-1}, {-1}, + + {pool_offset(417), 131}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(426), 281}, + {-1}, + + {pool_offset(428), 14}, + {-1}, + + {pool_offset(430), 530}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, + + {pool_offset(443), 489}, + {-1}, + + {pool_offset(445), 436}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(450), 121}, + {-1}, {-1}, + + {pool_offset(453), 121}, + + {pool_offset(454), 607}, + {-1}, + + {pool_offset(456), 130}, + + {pool_offset(457), 499}, + + {pool_offset(458), 396}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(466), 449}, + {-1}, {-1}, {-1}, + + {pool_offset(470), 181}, + + {pool_offset(471), 443}, + {-1}, {-1}, + + {pool_offset(474), 522}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(481), 281}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(487), 594}, + + {pool_offset(488), 145}, + + {pool_offset(489), 605}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(504), 241}, + {-1}, {-1}, + + {pool_offset(507), 463}, + {-1}, + + {pool_offset(509), 33}, + {-1}, {-1}, {-1}, + + {pool_offset(513), 86}, + + {pool_offset(514), 560}, + {-1}, {-1}, {-1}, + + {pool_offset(518), 225}, + {-1}, + + {pool_offset(520), 243}, + {-1}, + + {pool_offset(522), 453}, + {-1}, + + {pool_offset(524), 126}, + {-1}, {-1}, {-1}, + + {pool_offset(528), 525}, + {-1}, {-1}, {-1}, + + {pool_offset(532), 589}, + {-1}, {-1}, {-1}, + + {pool_offset(536), 282}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(542), 612}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(549), 621}, + + {pool_offset(550), 372}, + {-1}, {-1}, + + {pool_offset(553), 246}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(558), 568}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(564), 502}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(571), 163}, + + {pool_offset(572), 379}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(577), 89}, + + {pool_offset(578), 213}, + + {pool_offset(579), 349}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(585), 308}, + {-1}, {-1}, + + {pool_offset(588), 7}, + {-1}, + + {pool_offset(590), 110}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(596), 28}, + {-1}, + + {pool_offset(598), 458}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(605), 28}, + {-1}, {-1}, {-1}, + + {pool_offset(609), 346}, + {-1}, {-1}, + + {pool_offset(612), 488}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(631), 420}, + {-1}, {-1}, {-1}, + + {pool_offset(635), 575}, + + {pool_offset(636), 232}, + {-1}, {-1}, + + {pool_offset(639), 213}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(645), 26}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(651), 105}, + + {pool_offset(652), 232}, + {-1}, {-1}, + + {pool_offset(655), 214}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(660), 231}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(669), 404}, + {-1}, {-1}, {-1}, + + {pool_offset(673), 466}, + + {pool_offset(674), 139}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(683), 600}, + {-1}, + + {pool_offset(685), 107}, + + {pool_offset(686), 242}, + {-1}, {-1}, + + {pool_offset(689), 131}, + {-1}, {-1}, + + {pool_offset(692), 578}, + + {pool_offset(693), 27}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(700), 111}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(707), 417}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, + + {pool_offset(719), 371}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(724), 234}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(730), 422}, + + {pool_offset(731), 536}, + {-1}, + + {pool_offset(733), 323}, + {-1}, + + {pool_offset(735), 216}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(740), 592}, + + {pool_offset(741), 495}, + {-1}, {-1}, {-1}, + + {pool_offset(745), 476}, + {-1}, {-1}, {-1}, + + {pool_offset(749), 169}, + {-1}, {-1}, + + {pool_offset(752), 577}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(760), 110}, + + {pool_offset(761), 473}, + {-1}, {-1}, + + {pool_offset(764), 90}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(769), 106}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, + + {pool_offset(782), 230}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, + + {pool_offset(794), 124}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(802), 595}, + {-1}, {-1}, {-1}, + + {pool_offset(806), 377}, + {-1}, {-1}, {-1}, + + {pool_offset(810), 43}, + {-1}, {-1}, {-1}, + + {pool_offset(814), 468}, + + {pool_offset(815), 385}, + {-1}, {-1}, {-1}, + + {pool_offset(819), 111}, + + {pool_offset(820), 604}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, + + {pool_offset(833), 460}, + + {pool_offset(834), 211}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(844), 129}, + {-1}, {-1}, {-1}, + + {pool_offset(848), 188}, + + {pool_offset(849), 282}, + {-1}, {-1}, {-1}, + + {pool_offset(853), 457}, + + {pool_offset(854), 11}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(861), 432}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(867), 516}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, + + {pool_offset(879), 295}, + {-1}, {-1}, {-1}, + + {pool_offset(883), 198}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(900), 41}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(905), 320}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(915), 504}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(929), 582}, + {-1}, {-1}, + + {pool_offset(932), 26}, + + {pool_offset(933), 570}, + + {pool_offset(934), 31}, + {-1}, {-1}, + + {pool_offset(937), 190}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(946), 579}, + {-1}, + + {pool_offset(948), 119}, + {-1}, {-1}, {-1}, + + {pool_offset(952), 419}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(957), 275}, + + {pool_offset(958), 275}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(963), 455}, + + {pool_offset(964), 292}, + {-1}, + + {pool_offset(966), 235}, + + {pool_offset(967), 299}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(972), 230}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(978), 146}, + + {pool_offset(979), 521}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(984), 226}, + {-1}, {-1}, + + {pool_offset(987), 342}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(996), 435}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, + + {pool_offset(1009), 13}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1014), 107}, + + {pool_offset(1015), 408}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1022), 620}, + + {pool_offset(1023), 233}, + + {pool_offset(1024), 209}, + + {pool_offset(1025), 248}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1030), 94}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1036), 434}, + {-1}, + + {pool_offset(1038), 25}, + + {pool_offset(1039), 214}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1048), 2}, + + {pool_offset(1049), 94}, + + {pool_offset(1050), 317}, + + {pool_offset(1051), 618}, + + {pool_offset(1052), 515}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1058), 484}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1074), 199}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1081), 29}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1087), 136}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, + + {pool_offset(1100), 200}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1110), 115}, + + {pool_offset(1111), 25}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1117), 497}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1125), 165}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1133), 616}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1140), 398}, + {-1}, {-1}, + + {pool_offset(1143), 38}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, + + {pool_offset(1155), 233}, + {-1}, {-1}, {-1}, + + {pool_offset(1159), 220}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, + + {pool_offset(1171), 517}, + {-1}, {-1}, + + {pool_offset(1174), 244}, + {-1}, {-1}, + + {pool_offset(1177), 93}, + + {pool_offset(1178), 410}, + {-1}, {-1}, + + {pool_offset(1181), 155}, + {-1}, + + {pool_offset(1183), 238}, + + {pool_offset(1184), 202}, + {-1}, + + {pool_offset(1186), 169}, + {-1}, + + {pool_offset(1188), 240}, + + {pool_offset(1189), 90}, + {-1}, {-1}, {-1}, + + {pool_offset(1193), 547}, + + {pool_offset(1194), 52}, + {-1}, {-1}, + + {pool_offset(1197), 120}, + {-1}, + + {pool_offset(1199), 511}, + + {pool_offset(1200), 387}, + {-1}, {-1}, {-1}, + + {pool_offset(1204), 171}, + + {pool_offset(1205), 332}, + {-1}, + + {pool_offset(1207), 93}, + {-1}, {-1}, + + {pool_offset(1210), 46}, + + {pool_offset(1211), 52}, + + {pool_offset(1212), 45}, + {-1}, + + {pool_offset(1214), 128}, + {-1}, {-1}, + + {pool_offset(1217), 471}, + {-1}, {-1}, {-1}, + + {pool_offset(1221), 125}, + {-1}, + + {pool_offset(1223), 154}, + + {pool_offset(1224), 84}, + {-1}, + + {pool_offset(1226), 362}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1233), 352}, + {-1}, + + {pool_offset(1235), 326}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1245), 88}, + {-1}, {-1}, + + {pool_offset(1248), 16}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1254), 328}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1259), 565}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1269), 321}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1276), 339}, + {-1}, {-1}, + + {pool_offset(1279), 209}, + + {pool_offset(1280), 75}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1287), 591}, + + {pool_offset(1288), 276}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1294), 132}, + {-1}, + + {pool_offset(1296), 204}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1305), 544}, + {-1}, {-1}, + + {pool_offset(1308), 17}, + {-1}, + + {pool_offset(1310), 53}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1320), 127}, + + {pool_offset(1321), 314}, + {-1}, + + {pool_offset(1323), 248}, + + {pool_offset(1324), 212}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1331), 53}, + + {pool_offset(1332), 157}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1337), 116}, + {-1}, + + {pool_offset(1339), 86}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1348), 16}, + {-1}, {-1}, + + {pool_offset(1351), 205}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1358), 617}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1368), 127}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1373), 87}, + + {pool_offset(1374), 140}, + {-1}, + + {pool_offset(1376), 125}, + {-1}, {-1}, {-1}, + + {pool_offset(1380), 520}, + {-1}, {-1}, + + {pool_offset(1383), 482}, + {-1}, {-1}, {-1}, + + {pool_offset(1387), 370}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1392), 143}, + + {pool_offset(1393), 227}, + + {pool_offset(1394), 287}, + + {pool_offset(1395), 509}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1404), 173}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1411), 556}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, + + {pool_offset(1422), 120}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1431), 171}, + + {pool_offset(1432), 176}, + + {pool_offset(1433), 182}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1442), 180}, + + {pool_offset(1443), 180}, + + {pool_offset(1444), 518}, + {-1}, {-1}, + + {pool_offset(1447), 209}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1463), 77}, + + {pool_offset(1464), 193}, + + {pool_offset(1465), 33}, + + {pool_offset(1466), 249}, + + {pool_offset(1467), 496}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1483), 483}, + {-1}, {-1}, + + {pool_offset(1486), 392}, + {-1}, {-1}, + + {pool_offset(1489), 115}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1496), 581}, + {-1}, + + {pool_offset(1498), 297}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1512), 603}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1519), 85}, + {-1}, + + {pool_offset(1521), 485}, + + {pool_offset(1522), 31}, + {-1}, {-1}, + + {pool_offset(1525), 159}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1530), 228}, + {-1}, {-1}, + + {pool_offset(1533), 29}, + {-1}, + + {pool_offset(1535), 552}, + + {pool_offset(1536), 119}, + {-1}, {-1}, + + {pool_offset(1539), 395}, + {-1}, + + {pool_offset(1541), 68}, + + {pool_offset(1542), 61}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1547), 64}, + {-1}, {-1}, + + {pool_offset(1550), 69}, + {-1}, {-1}, {-1}, + + {pool_offset(1554), 89}, + + {pool_offset(1555), 527}, + {-1}, + + {pool_offset(1557), 459}, + {-1}, {-1}, {-1}, + + {pool_offset(1561), 135}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, + + {pool_offset(1572), 240}, + {-1}, {-1}, + + {pool_offset(1575), 237}, + + {pool_offset(1576), 95}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1583), 138}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1592), 361}, + + {pool_offset(1593), 548}, + {-1}, + + {pool_offset(1595), 481}, + + {pool_offset(1596), 286}, + {-1}, + + {pool_offset(1598), 335}, + + {pool_offset(1599), 30}, + + {pool_offset(1600), 402}, + + {pool_offset(1601), 537}, + {-1}, {-1}, + + {pool_offset(1604), 353}, + {-1}, {-1}, {-1}, + + {pool_offset(1608), 77}, + {-1}, {-1}, + + {pool_offset(1611), 30}, + + {pool_offset(1612), 59}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1622), 44}, + {-1}, {-1}, + + {pool_offset(1625), 472}, + {-1}, {-1}, {-1}, + + {pool_offset(1629), 78}, + {-1}, {-1}, {-1}, + + {pool_offset(1633), 138}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1638), 187}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1643), 479}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1650), 418}, + + {pool_offset(1651), 355}, + + {pool_offset(1652), 563}, + {-1}, + + {pool_offset(1654), 3}, + + {pool_offset(1655), 187}, + {-1}, + + {pool_offset(1657), 360}, + {-1}, {-1}, + + {pool_offset(1660), 206}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1666), 245}, + {-1}, + + {pool_offset(1668), 194}, + {-1}, {-1}, {-1}, + + {pool_offset(1672), 376}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1677), 76}, + + {pool_offset(1678), 136}, + {-1}, {-1}, {-1}, + + {pool_offset(1682), 475}, + {-1}, + + {pool_offset(1684), 424}, + {-1}, {-1}, + + {pool_offset(1687), 503}, + + {pool_offset(1688), 378}, + {-1}, + + {pool_offset(1690), 316}, + + {pool_offset(1691), 500}, + + {pool_offset(1692), 513}, + {-1}, {-1}, {-1}, + + {pool_offset(1696), 57}, + + {pool_offset(1697), 277}, + + {pool_offset(1698), 114}, + + {pool_offset(1699), 279}, + + {pool_offset(1700), 57}, + + {pool_offset(1701), 95}, + + {pool_offset(1702), 302}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1709), 112}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1719), 68}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1727), 60}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1733), 21}, + + {pool_offset(1734), 373}, + + {pool_offset(1735), 19}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1745), 519}, + {-1}, {-1}, + + {pool_offset(1748), 15}, + {-1}, + + {pool_offset(1750), 176}, + + {pool_offset(1751), 624}, + + {pool_offset(1752), 492}, + + {pool_offset(1753), 571}, + + {pool_offset(1754), 493}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1763), 542}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, + + {pool_offset(1774), 405}, + + {pool_offset(1775), 445}, + + {pool_offset(1776), 290}, + {-1}, + + {pool_offset(1778), 32}, + {-1}, {-1}, + + {pool_offset(1781), 147}, + {-1}, {-1}, + + {pool_offset(1784), 147}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1790), 467}, + {-1}, + + {pool_offset(1792), 113}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1801), 34}, + {-1}, + + {pool_offset(1803), 553}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1808), 528}, + {-1}, {-1}, + + {pool_offset(1811), 602}, + {-1}, + + {pool_offset(1813), 116}, + + {pool_offset(1814), 172}, + {-1}, {-1}, + + {pool_offset(1817), 172}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1823), 96}, + {-1}, {-1}, {-1}, + + {pool_offset(1827), 96}, + {-1}, + + {pool_offset(1829), 587}, + {-1}, {-1}, + + {pool_offset(1832), 350}, + + {pool_offset(1833), 123}, + {-1}, {-1}, + + {pool_offset(1836), 99}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1841), 85}, + + {pool_offset(1842), 6}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1847), 413}, + {-1}, {-1}, + + {pool_offset(1850), 609}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1859), 99}, + {-1}, {-1}, {-1}, + + {pool_offset(1863), 514}, + {-1}, {-1}, + + {pool_offset(1866), 324}, + {-1}, {-1}, + + {pool_offset(1869), 88}, + + {pool_offset(1870), 103}, + {-1}, {-1}, {-1}, + + {pool_offset(1874), 532}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1880), 177}, + + {pool_offset(1881), 590}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1889), 543}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1895), 246}, + + {pool_offset(1896), 388}, + + {pool_offset(1897), 32}, + {-1}, + + {pool_offset(1899), 465}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1907), 236}, + {-1}, + + {pool_offset(1909), 329}, + {-1}, {-1}, {-1}, + + {pool_offset(1913), 397}, + {-1}, + + {pool_offset(1915), 158}, + {-1}, + + {pool_offset(1917), 318}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1922), 506}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1930), 160}, + {-1}, {-1}, + + {pool_offset(1933), 309}, + + {pool_offset(1934), 375}, + {-1}, + + {pool_offset(1936), 407}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1941), 160}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1946), 567}, + {-1}, + + {pool_offset(1948), 193}, + {-1}, + + {pool_offset(1950), 212}, + + {pool_offset(1951), 236}, + {-1}, + + {pool_offset(1953), 144}, + + {pool_offset(1954), 196}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1962), 9}, + {-1}, + + {pool_offset(1964), 367}, + + {pool_offset(1965), 23}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1972), 311}, + {-1}, + + {pool_offset(1974), 428}, + {-1}, {-1}, + + {pool_offset(1977), 573}, + {-1}, {-1}, + + {pool_offset(1980), 48}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1986), 35}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1992), 276}, + {-1}, + + {pool_offset(1994), 580}, + + {pool_offset(1995), 245}, + + {pool_offset(1996), 66}, + {-1}, {-1}, {-1}, + + {pool_offset(2000), 576}, + {-1}, {-1}, {-1}, + + {pool_offset(2004), 389}, + {-1}, + + {pool_offset(2006), 148}, + {-1}, {-1}, + + {pool_offset(2009), 148}, + {-1}, {-1}, {-1}, + + {pool_offset(2013), 238}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2018), 381}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2024), 285}, + {-1}, {-1}, + + {pool_offset(2027), 343}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, + + {pool_offset(2049), 235}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2055), 606}, + {-1}, {-1}, + + {pool_offset(2058), 12}, + + {pool_offset(2059), 35}, + {-1}, + + {pool_offset(2061), 192}, + {-1}, {-1}, {-1}, + + {pool_offset(2065), 412}, + + {pool_offset(2066), 220}, + + {pool_offset(2067), 100}, + {-1}, {-1}, {-1}, + + {pool_offset(2071), 66}, + {-1}, + + {pool_offset(2073), 186}, + {-1}, {-1}, {-1}, + + {pool_offset(2077), 584}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2085), 533}, + + {pool_offset(2086), 623}, + + {pool_offset(2087), 177}, + {-1}, {-1}, + + {pool_offset(2090), 501}, + {-1}, + + {pool_offset(2092), 105}, + {-1}, {-1}, + + {pool_offset(2095), 40}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2101), 195}, + {-1}, {-1}, + + {pool_offset(2104), 100}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2110), 272}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2120), 173}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2129), 286}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2136), 383}, + {-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(2161), 622}, + {-1}, + + {pool_offset(2163), 588}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2169), 15}, + + {pool_offset(2170), 247}, + {-1}, + + {pool_offset(2172), 59}, + + {pool_offset(2173), 574}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2180), 462}, + {-1}, {-1}, + + {pool_offset(2183), 199}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, + + {pool_offset(2195), 217}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2201), 5}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2206), 1}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2211), 140}, + {-1}, {-1}, {-1}, + + {pool_offset(2215), 141}, + {-1}, {-1}, + + {pool_offset(2218), 257}, + + {pool_offset(2219), 190}, + {-1}, + + {pool_offset(2221), 351}, + + {pool_offset(2222), 414}, + {-1}, {-1}, {-1}, + + {pool_offset(2226), 58}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2234), 164}, + + {pool_offset(2235), 37}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2241), 480}, + {-1}, {-1}, + + {pool_offset(2244), 50}, + + {pool_offset(2245), 182}, + {-1}, + + {pool_offset(2247), 36}, + + {pool_offset(2248), 204}, + + {pool_offset(2249), 331}, + + {pool_offset(2250), 257}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2260), 54}, + {-1}, {-1}, + + {pool_offset(2263), 277}, + {-1}, {-1}, {-1}, + + {pool_offset(2267), 416}, + + {pool_offset(2268), 219}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2275), 254}, + {-1}, + + {pool_offset(2277), 327}, + {-1}, {-1}, + + {pool_offset(2280), 42}, + + {pool_offset(2281), 628}, + {-1}, + + {pool_offset(2283), 106}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, + + {pool_offset(2303), 251}, + {-1}, {-1}, + + {pool_offset(2306), 426}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2313), 348}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-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(2352), 201}, + {-1}, {-1}, {-1}, + + {pool_offset(2356), 92}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2361), 189}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2367), 92}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2372), 259}, + {-1}, + + {pool_offset(2374), 259}, + {-1}, {-1}, + + {pool_offset(2377), 262}, + {-1}, {-1}, + + {pool_offset(2380), 523}, + {-1}, {-1}, + + {pool_offset(2383), 296}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2389), 469}, + {-1}, {-1}, {-1}, + + {pool_offset(2393), 365}, + {-1}, {-1}, + + {pool_offset(2396), 289}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2419), 62}, + {-1}, {-1}, {-1}, + + {pool_offset(2423), 251}, + {-1}, {-1}, {-1}, + + {pool_offset(2427), 340}, + + {pool_offset(2428), 433}, + {-1}, {-1}, + + {pool_offset(2431), 583}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, + + {pool_offset(2451), 152}, + + {pool_offset(2452), 572}, + {-1}, {-1}, {-1}, + + {pool_offset(2456), 152}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2461), 359}, + {-1}, {-1}, + + {pool_offset(2464), 613}, + {-1}, {-1}, {-1}, + + {pool_offset(2468), 269}, + + {pool_offset(2469), 80}, + {-1}, + + {pool_offset(2471), 211}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2478), 98}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, + + {pool_offset(2489), 256}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2507), 197}, + {-1}, {-1}, {-1}, + + {pool_offset(2511), 196}, + + {pool_offset(2512), 534}, + {-1}, {-1}, {-1}, + + {pool_offset(2516), 135}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2523), 198}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2532), 394}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2546), 619}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2552), 386}, + {-1}, + + {pool_offset(2554), 334}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2561), 347}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2566), 421}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2571), 82}, + + {pool_offset(2572), 312}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2579), 615}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2585), 201}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2591), 36}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2596), 464}, + + {pool_offset(2597), 24}, + {-1}, {-1}, {-1}, + + {pool_offset(2601), 268}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2610), 535}, + {-1}, {-1}, + + {pool_offset(2613), 597}, + {-1}, {-1}, {-1}, + + {pool_offset(2617), 268}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, + + {pool_offset(2638), 291}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2648), 175}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2662), 507}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2667), 262}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2684), 205}, + {-1}, {-1}, + + {pool_offset(2687), 183}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2695), 447}, + {-1}, + + {pool_offset(2697), 219}, + + {pool_offset(2698), 70}, + {-1}, + + {pool_offset(2700), 81}, + + {pool_offset(2701), 431}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2719), 208}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2727), 24}, + {-1}, + + {pool_offset(2729), 82}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2734), 51}, + {-1}, {-1}, + + {pool_offset(2737), 357}, + {-1}, {-1}, {-1}, + + {pool_offset(2741), 446}, + + {pool_offset(2742), 313}, + {-1}, + + {pool_offset(2744), 70}, + + {pool_offset(2745), 244}, + + {pool_offset(2746), 364}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2751), 356}, + {-1}, + + {pool_offset(2753), 249}, + {-1}, + + {pool_offset(2755), 200}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2761), 278}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2769), 181}, + + {pool_offset(2770), 391}, + {-1}, + + {pool_offset(2772), 242}, + {-1}, {-1}, + + {pool_offset(2775), 345}, + {-1}, {-1}, {-1}, + + {pool_offset(2779), 63}, + + {pool_offset(2780), 441}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2787), 78}, + {-1}, {-1}, {-1}, {-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(2815), 358}, + {-1}, {-1}, {-1}, + + {pool_offset(2819), 625}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2824), 288}, + {-1}, + + {pool_offset(2826), 8}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2835), 183}, + {-1}, {-1}, + + {pool_offset(2838), 250}, + {-1}, + + {pool_offset(2840), 166}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2845), 208}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2852), 341}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2857), 278}, + {-1}, {-1}, + + {pool_offset(2860), 498}, + {-1}, + + {pool_offset(2862), 279}, + {-1}, {-1}, + + {pool_offset(2865), 354}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2870), 48}, + + {pool_offset(2871), 234}, + + {pool_offset(2872), 390}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2879), 118}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2896), 145}, + {-1}, + + {pool_offset(2898), 188}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2903), 150}, + + {pool_offset(2904), 486}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2914), 150}, + + {pool_offset(2915), 254}, + {-1}, + + {pool_offset(2917), 206}, + {-1}, {-1}, + + {pool_offset(2920), 271}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2925), 142}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2930), 50}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, + + {pool_offset(2943), 79}, + {-1}, + + {pool_offset(2945), 79}, + + {pool_offset(2946), 456}, + {-1}, {-1}, + + {pool_offset(2949), 596}, + {-1}, {-1}, + + {pool_offset(2952), 423}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2959), 118}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2966), 97}, + {-1}, {-1}, {-1}, + + {pool_offset(2970), 366}, + {-1}, {-1}, + + {pool_offset(2973), 337}, + {-1}, + + {pool_offset(2975), 444}, + {-1}, {-1}, + + {pool_offset(2978), 258}, + + {pool_offset(2979), 267}, + {-1}, + + {pool_offset(2981), 280}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2987), 315}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2992), 288}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2997), 564}, + {-1}, + + {pool_offset(2999), 540}, + {-1}, {-1}, + + {pool_offset(3002), 128}, + + {pool_offset(3003), 557}, + + {pool_offset(3004), 336}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3011), 126}, + {-1}, {-1}, + + {pool_offset(3014), 191}, + {-1}, {-1}, + + {pool_offset(3017), 400}, + {-1}, {-1}, + + {pool_offset(3020), 103}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3025), 425}, + {-1}, + + {pool_offset(3027), 194}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3035), 184}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3050), 415}, + + {pool_offset(3051), 243}, + + {pool_offset(3052), 175}, + + {pool_offset(3053), 81}, + + {pool_offset(3054), 202}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, + + {pool_offset(3065), 210}, + {-1}, {-1}, + + {pool_offset(3068), 614}, + {-1}, + + {pool_offset(3070), 207}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3084), 250}, + {-1}, + + {pool_offset(3086), 454}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, + + {pool_offset(3097), 566}, + + {pool_offset(3098), 598}, + {-1}, + + {pool_offset(3100), 44}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3105), 406}, + {-1}, + + {pool_offset(3107), 554}, + {-1}, {-1}, {-1}, + + {pool_offset(3111), 218}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3130), 49}, + {-1}, {-1}, + + {pool_offset(3133), 184}, + {-1}, {-1}, + + {pool_offset(3136), 369}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3143), 437}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, + + {pool_offset(3156), 448}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3162), 179}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3169), 260}, + {-1}, + + {pool_offset(3171), 4}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3186), 51}, + {-1}, {-1}, + + {pool_offset(3189), 218}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3196), 494}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3205), 225}, + {-1}, + + {pool_offset(3207), 229}, + + {pool_offset(3208), 174}, + {-1}, + + {pool_offset(3210), 178}, + {-1}, + + {pool_offset(3212), 0}, + + {pool_offset(3213), 61}, + {-1}, {-1}, {-1}, + + {pool_offset(3217), 174}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3223), 363}, + {-1}, + + {pool_offset(3225), 62}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3243), 271}, + + {pool_offset(3244), 186}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3252), 450}, + {-1}, {-1}, {-1}, + + {pool_offset(3256), 585}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3266), 263}, + {-1}, {-1}, {-1}, + + {pool_offset(3270), 304}, + {-1}, + + {pool_offset(3272), 263}, + + {pool_offset(3273), 264}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, + + {pool_offset(3284), 237}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3292), 380}, + + {pool_offset(3293), 601}, + {-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(3318), 185}, + {-1}, + + {pool_offset(3320), 267}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3335), 108}, + {-1}, {-1}, {-1}, + + {pool_offset(3339), 451}, + {-1}, {-1}, {-1}, + + {pool_offset(3343), 109}, + {-1}, + + {pool_offset(3345), 260}, + {-1}, {-1}, {-1}, + + {pool_offset(3349), 253}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3354), 60}, + + {pool_offset(3355), 83}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3362), 207}, + + {pool_offset(3363), 239}, + {-1}, + + {pool_offset(3365), 178}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3375), 255}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3384), 49}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, + + {pool_offset(3395), 129}, + {-1}, {-1}, + + {pool_offset(3398), 73}, + {-1}, {-1}, + + {pool_offset(3401), 261}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3410), 610}, + {-1}, + + {pool_offset(3412), 47}, + {-1}, {-1}, {-1}, + + {pool_offset(3416), 280}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3421), 20}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, + + {pool_offset(3432), 384}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, + + {pool_offset(3445), 203}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3452), 189}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, + + {pool_offset(3463), 101}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3473), 65}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, + + {pool_offset(3485), 273}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, + + {pool_offset(3497), 191}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, + + {pool_offset(3510), 168}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3516), 124}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3532), 474}, + {-1}, {-1}, {-1}, + + {pool_offset(3536), 310}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-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(3566), 529}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, + + {pool_offset(3578), 73}, + {-1}, {-1}, + + {pool_offset(3581), 74}, + {-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(3606), 222}, + {-1}, {-1}, {-1}, + + {pool_offset(3610), 74}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, + + {pool_offset(3623), 231}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, + + {pool_offset(3635), 270}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3641), 608}, + {-1}, {-1}, {-1}, + + {pool_offset(3645), 558}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3661), 442}, + {-1}, + + {pool_offset(3663), 258}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, + + {pool_offset(3676), 97}, + {-1}, {-1}, {-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(3703), 411}, + {-1}, {-1}, {-1}, {-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(3731), 102}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3739), 393}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3762), 67}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, + + {pool_offset(3774), 409}, + {-1}, + + {pool_offset(3776), 440}, + {-1}, {-1}, + + {pool_offset(3779), 67}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3786), 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}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3836), 247}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, + + {pool_offset(3849), 216}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3865), 599}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3870), 438}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3893), 18}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3903), 42}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3926), 478}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3936), 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}, {-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(3985), 452}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3992), 593}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3999), 80}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(4007), 265}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(4014), 265}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, + + {pool_offset(4026), 477}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(4031), 203}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-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(4061), 427}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(4068), 270}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(4083), 76}, + + {pool_offset(4084), 586}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(4092), 293}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, + + {pool_offset(4104), 71}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-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(4175), 241}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(4190), 102}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-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(4278), 551}, + {-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(4302), 47}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-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(4368), 65}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(4391), 229}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(4398), 69}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(4404), 224}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, + + {pool_offset(4425), 301}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(4442), 549}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, + + {pool_offset(4455), 550}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-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(4514), 98}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-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(4566), 239}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-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(4617), 64}, + {-1}, {-1}, + + {pool_offset(4620), 10}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(4627), 256}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(4635), 403}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(4653), 626}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-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(4701), 197}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(4709), 19}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, + + {pool_offset(4731), 274}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-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(4808), 439}, + {-1}, {-1}, {-1}, + + {pool_offset(4812), 266}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-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(4856), 382}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, + + {pool_offset(4876), 266}, + {-1}, {-1}, {-1}, {-1}, {-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(4905), 253}, + {-1}, {-1}, {-1}, + + {pool_offset(4909), 104}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-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(4972), 56}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(4989), 146}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-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(5035), 261}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-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(5069), 210}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, + + {pool_offset(5080), 611}, + + {pool_offset(5081), 272}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, + + {pool_offset(5092), 71}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-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(5163), 374}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(5171), 252}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(5190), 252}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-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(5237), 401}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-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(5343), 72}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-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(5453), 185}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-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(6075), 72}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-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(6217), 627}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-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(6900), 101} + }; + + if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) + { + register unsigned int key = hash (str, len); + + if (key <= MAX_HASH_VALUE) + { + 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; +} + + + +#define UNICODE_PROPERTY_VERSION 160000 +#define UNICODE_EMOJI_VERSION 1600 + +#define PROPERTY_NAME_MAX_SIZE 61 +#define CODE_RANGES_NUM 629 + +#define PROP_INDEX_NEWLINE 0 +#define PROP_INDEX_ALPHA 1 +#define PROP_INDEX_BLANK 2 +#define PROP_INDEX_CNTRL 3 +#define PROP_INDEX_DIGIT 4 +#define PROP_INDEX_GRAPH 5 +#define PROP_INDEX_LOWER 6 +#define PROP_INDEX_PRINT 7 +#define PROP_INDEX_POSIXPUNCT 8 +#define PROP_INDEX_SPACE 9 +#define PROP_INDEX_UPPER 10 +#define PROP_INDEX_XDIGIT 11 +#define PROP_INDEX_WORD 12 +#define PROP_INDEX_ALNUM 13 +#define PROP_INDEX_ASCII 14 +#define PROP_INDEX_ASCIIHEXDIGIT 15 +#define PROP_INDEX_AHEX 15 +#define PROP_INDEX_ADLAM 16 +#define PROP_INDEX_ADLM 16 +#define PROP_INDEX_AHOM 17 +#define PROP_INDEX_ALPHABETIC 18 +#define PROP_INDEX_ANATOLIANHIEROGLYPHS 19 +#define PROP_INDEX_HLUW 19 +#define PROP_INDEX_ANY 20 +#define PROP_INDEX_ARABIC 21 +#define PROP_INDEX_ARAB 21 +#define PROP_INDEX_ARMENIAN 22 +#define PROP_INDEX_ARMN 22 +#define PROP_INDEX_ASSIGNED 23 +#define PROP_INDEX_AVESTAN 24 +#define PROP_INDEX_AVST 24 +#define PROP_INDEX_BALINESE 25 +#define PROP_INDEX_BALI 25 +#define PROP_INDEX_BAMUM 26 +#define PROP_INDEX_BAMU 26 +#define PROP_INDEX_BASSAVAH 27 +#define PROP_INDEX_BASS 27 +#define PROP_INDEX_BATAK 28 +#define PROP_INDEX_BATK 28 +#define PROP_INDEX_BENGALI 29 +#define PROP_INDEX_BENG 29 +#define PROP_INDEX_BHAIKSUKI 30 +#define PROP_INDEX_BHKS 30 +#define PROP_INDEX_BIDICONTROL 31 +#define PROP_INDEX_BIDIC 31 +#define PROP_INDEX_BOPOMOFO 32 +#define PROP_INDEX_BOPO 32 +#define PROP_INDEX_BRAHMI 33 +#define PROP_INDEX_BRAH 33 +#define PROP_INDEX_BRAILLE 34 +#define PROP_INDEX_BRAI 34 +#define PROP_INDEX_BUGINESE 35 +#define PROP_INDEX_BUGI 35 +#define PROP_INDEX_BUHID 36 +#define PROP_INDEX_BUHD 36 +#define PROP_INDEX_C 37 +#define PROP_INDEX_OTHER 37 +#define PROP_INDEX_CANADIANABORIGINAL 38 +#define PROP_INDEX_CANS 38 +#define PROP_INDEX_CARIAN 39 +#define PROP_INDEX_CARI 39 +#define PROP_INDEX_CASEIGNORABLE 40 +#define PROP_INDEX_CI 40 +#define PROP_INDEX_CASED 41 +#define PROP_INDEX_CAUCASIANALBANIAN 42 +#define PROP_INDEX_AGHB 42 +#define PROP_INDEX_CC 43 +#define PROP_INDEX_CONTROL 43 +#define PROP_INDEX_CF 44 +#define PROP_INDEX_FORMAT 44 +#define PROP_INDEX_CHAKMA 45 +#define PROP_INDEX_CAKM 45 +#define PROP_INDEX_CHAM 46 +#define PROP_INDEX_CHANGESWHENCASEFOLDED 47 +#define PROP_INDEX_CWCF 47 +#define PROP_INDEX_CHANGESWHENCASEMAPPED 48 +#define PROP_INDEX_CWCM 48 +#define PROP_INDEX_CHANGESWHENLOWERCASED 49 +#define PROP_INDEX_CWL 49 +#define PROP_INDEX_CHANGESWHENTITLECASED 50 +#define PROP_INDEX_CWT 50 +#define PROP_INDEX_CHANGESWHENUPPERCASED 51 +#define PROP_INDEX_CWU 51 +#define PROP_INDEX_CHEROKEE 52 +#define PROP_INDEX_CHER 52 +#define PROP_INDEX_CHORASMIAN 53 +#define PROP_INDEX_CHRS 53 +#define PROP_INDEX_CN 54 +#define PROP_INDEX_UNASSIGNED 54 +#define PROP_INDEX_CO 55 +#define PROP_INDEX_PRIVATEUSE 55 +#define PROP_INDEX_COMMON 56 +#define PROP_INDEX_ZYYY 56 +#define PROP_INDEX_COPTIC 57 +#define PROP_INDEX_COPT 57 +#define PROP_INDEX_QAAC 57 +#define PROP_INDEX_CS 58 +#define PROP_INDEX_SURROGATE 58 +#define PROP_INDEX_CUNEIFORM 59 +#define PROP_INDEX_XSUX 59 +#define PROP_INDEX_CYPRIOT 60 +#define PROP_INDEX_CPRT 60 +#define PROP_INDEX_CYPROMINOAN 61 +#define PROP_INDEX_CPMN 61 +#define PROP_INDEX_CYRILLIC 62 +#define PROP_INDEX_CYRL 62 +#define PROP_INDEX_DASH 63 +#define PROP_INDEX_DEFAULTIGNORABLECODEPOINT 64 +#define PROP_INDEX_DI 64 +#define PROP_INDEX_DEPRECATED 65 +#define PROP_INDEX_DEP 65 +#define PROP_INDEX_DESERET 66 +#define PROP_INDEX_DSRT 66 +#define PROP_INDEX_DEVANAGARI 67 +#define PROP_INDEX_DEVA 67 +#define PROP_INDEX_DIACRITIC 68 +#define PROP_INDEX_DIA 68 +#define PROP_INDEX_DIVESAKURU 69 +#define PROP_INDEX_DIAK 69 +#define PROP_INDEX_DOGRA 70 +#define PROP_INDEX_DOGR 70 +#define PROP_INDEX_DUPLOYAN 71 +#define PROP_INDEX_DUPL 71 +#define PROP_INDEX_EGYPTIANHIEROGLYPHS 72 +#define PROP_INDEX_EGYP 72 +#define PROP_INDEX_ELBASAN 73 +#define PROP_INDEX_ELBA 73 +#define PROP_INDEX_ELYMAIC 74 +#define PROP_INDEX_ELYM 74 +#define PROP_INDEX_EMOJI 75 +#define PROP_INDEX_EMOJICOMPONENT 76 +#define PROP_INDEX_ECOMP 76 +#define PROP_INDEX_EMOJIMODIFIER 77 +#define PROP_INDEX_EMOD 77 +#define PROP_INDEX_EMOJIMODIFIERBASE 78 +#define PROP_INDEX_EBASE 78 +#define PROP_INDEX_EMOJIPRESENTATION 79 +#define PROP_INDEX_EPRES 79 +#define PROP_INDEX_ETHIOPIC 80 +#define PROP_INDEX_ETHI 80 +#define PROP_INDEX_EXTENDEDPICTOGRAPHIC 81 +#define PROP_INDEX_EXTPICT 81 +#define PROP_INDEX_EXTENDER 82 +#define PROP_INDEX_EXT 82 +#define PROP_INDEX_GARAY 83 +#define PROP_INDEX_GARA 83 +#define PROP_INDEX_GEORGIAN 84 +#define PROP_INDEX_GEOR 84 +#define PROP_INDEX_GLAGOLITIC 85 +#define PROP_INDEX_GLAG 85 +#define PROP_INDEX_GOTHIC 86 +#define PROP_INDEX_GOTH 86 +#define PROP_INDEX_GRANTHA 87 +#define PROP_INDEX_GRAN 87 +#define PROP_INDEX_GRAPHEMEBASE 88 +#define PROP_INDEX_GRBASE 88 +#define PROP_INDEX_GRAPHEMEEXTEND 89 +#define PROP_INDEX_GREXT 89 +#define PROP_INDEX_GRAPHEMELINK 90 +#define PROP_INDEX_GRLINK 90 +#define PROP_INDEX_GREEK 91 +#define PROP_INDEX_GREK 91 +#define PROP_INDEX_GUJARATI 92 +#define PROP_INDEX_GUJR 92 +#define PROP_INDEX_GUNJALAGONDI 93 +#define PROP_INDEX_GONG 93 +#define PROP_INDEX_GURMUKHI 94 +#define PROP_INDEX_GURU 94 +#define PROP_INDEX_GURUNGKHEMA 95 +#define PROP_INDEX_GUKH 95 +#define PROP_INDEX_HAN 96 +#define PROP_INDEX_HANI 96 +#define PROP_INDEX_HANGUL 97 +#define PROP_INDEX_HANG 97 +#define PROP_INDEX_HANIFIROHINGYA 98 +#define PROP_INDEX_ROHG 98 +#define PROP_INDEX_HANUNOO 99 +#define PROP_INDEX_HANO 99 +#define PROP_INDEX_HATRAN 100 +#define PROP_INDEX_HATR 100 +#define PROP_INDEX_HEBREW 101 +#define PROP_INDEX_HEBR 101 +#define PROP_INDEX_HEXDIGIT 102 +#define PROP_INDEX_HEX 102 +#define PROP_INDEX_HIRAGANA 103 +#define PROP_INDEX_HIRA 103 +#define PROP_INDEX_HYPHEN 104 +#define PROP_INDEX_IDSBINARYOPERATOR 105 +#define PROP_INDEX_IDSB 105 +#define PROP_INDEX_IDSTRINARYOPERATOR 106 +#define PROP_INDEX_IDST 106 +#define PROP_INDEX_IDSUNARYOPERATOR 107 +#define PROP_INDEX_IDSU 107 +#define PROP_INDEX_IDCOMPATMATHCONTINUE 108 +#define PROP_INDEX_IDCOMPATMATHSTART 109 +#define PROP_INDEX_IDCONTINUE 110 +#define PROP_INDEX_IDC 110 +#define PROP_INDEX_IDSTART 111 +#define PROP_INDEX_IDS 111 +#define PROP_INDEX_IDEOGRAPHIC 112 +#define PROP_INDEX_IDEO 112 +#define PROP_INDEX_IMPERIALARAMAIC 113 +#define PROP_INDEX_ARMI 113 +#define PROP_INDEX_INCB 114 +#define PROP_INDEX_INHERITED 115 +#define PROP_INDEX_QAAI 115 +#define PROP_INDEX_ZINH 115 +#define PROP_INDEX_INSCRIPTIONALPAHLAVI 116 +#define PROP_INDEX_PHLI 116 +#define PROP_INDEX_INSCRIPTIONALPARTHIAN 117 +#define PROP_INDEX_PRTI 117 +#define PROP_INDEX_JAVANESE 118 +#define PROP_INDEX_JAVA 118 +#define PROP_INDEX_JOINCONTROL 119 +#define PROP_INDEX_JOINC 119 +#define PROP_INDEX_KAITHI 120 +#define PROP_INDEX_KTHI 120 +#define PROP_INDEX_KANNADA 121 +#define PROP_INDEX_KNDA 121 +#define PROP_INDEX_KATAKANA 122 +#define PROP_INDEX_KANA 122 +#define PROP_INDEX_KAWI 123 +#define PROP_INDEX_KAYAHLI 124 +#define PROP_INDEX_KALI 124 +#define PROP_INDEX_KHAROSHTHI 125 +#define PROP_INDEX_KHAR 125 +#define PROP_INDEX_KHITANSMALLSCRIPT 126 +#define PROP_INDEX_KITS 126 +#define PROP_INDEX_KHMER 127 +#define PROP_INDEX_KHMR 127 +#define PROP_INDEX_KHOJKI 128 +#define PROP_INDEX_KHOJ 128 +#define PROP_INDEX_KHUDAWADI 129 +#define PROP_INDEX_SIND 129 +#define PROP_INDEX_KIRATRAI 130 +#define PROP_INDEX_KRAI 130 +#define PROP_INDEX_L 131 +#define PROP_INDEX_LETTER 131 +#define PROP_INDEX_LC 132 +#define PROP_INDEX_CASEDLETTER 132 +#define PROP_INDEX_LAO 133 +#define PROP_INDEX_LAOO 133 +#define PROP_INDEX_LATIN 134 +#define PROP_INDEX_LATN 134 +#define PROP_INDEX_LEPCHA 135 +#define PROP_INDEX_LEPC 135 +#define PROP_INDEX_LIMBU 136 +#define PROP_INDEX_LIMB 136 +#define PROP_INDEX_LINEARA 137 +#define PROP_INDEX_LINA 137 +#define PROP_INDEX_LINEARB 138 +#define PROP_INDEX_LINB 138 +#define PROP_INDEX_LISU 139 +#define PROP_INDEX_LL 140 +#define PROP_INDEX_LOWERCASELETTER 140 +#define PROP_INDEX_LM 141 +#define PROP_INDEX_MODIFIERLETTER 141 +#define PROP_INDEX_LO 142 +#define PROP_INDEX_OTHERLETTER 142 +#define PROP_INDEX_LOGICALORDEREXCEPTION 143 +#define PROP_INDEX_LOE 143 +#define PROP_INDEX_LOWERCASE 144 +#define PROP_INDEX_LT 145 +#define PROP_INDEX_TITLECASELETTER 145 +#define PROP_INDEX_LU 146 +#define PROP_INDEX_UPPERCASELETTER 146 +#define PROP_INDEX_LYCIAN 147 +#define PROP_INDEX_LYCI 147 +#define PROP_INDEX_LYDIAN 148 +#define PROP_INDEX_LYDI 148 +#define PROP_INDEX_M 149 +#define PROP_INDEX_COMBININGMARK 149 +#define PROP_INDEX_MARK 149 +#define PROP_INDEX_MAHAJANI 150 +#define PROP_INDEX_MAHJ 150 +#define PROP_INDEX_MAKASAR 151 +#define PROP_INDEX_MAKA 151 +#define PROP_INDEX_MALAYALAM 152 +#define PROP_INDEX_MLYM 152 +#define PROP_INDEX_MANDAIC 153 +#define PROP_INDEX_MAND 153 +#define PROP_INDEX_MANICHAEAN 154 +#define PROP_INDEX_MANI 154 +#define PROP_INDEX_MARCHEN 155 +#define PROP_INDEX_MARC 155 +#define PROP_INDEX_MASARAMGONDI 156 +#define PROP_INDEX_GONM 156 +#define PROP_INDEX_MATH 157 +#define PROP_INDEX_MC 158 +#define PROP_INDEX_SPACINGMARK 158 +#define PROP_INDEX_ME 159 +#define PROP_INDEX_ENCLOSINGMARK 159 +#define PROP_INDEX_MEDEFAIDRIN 160 +#define PROP_INDEX_MEDF 160 +#define PROP_INDEX_MEETEIMAYEK 161 +#define PROP_INDEX_MTEI 161 +#define PROP_INDEX_MENDEKIKAKUI 162 +#define PROP_INDEX_MEND 162 +#define PROP_INDEX_MEROITICCURSIVE 163 +#define PROP_INDEX_MERC 163 +#define PROP_INDEX_MEROITICHIEROGLYPHS 164 +#define PROP_INDEX_MERO 164 +#define PROP_INDEX_MIAO 165 +#define PROP_INDEX_PLRD 165 +#define PROP_INDEX_MN 166 +#define PROP_INDEX_NONSPACINGMARK 166 +#define PROP_INDEX_MODI 167 +#define PROP_INDEX_MODIFIERCOMBININGMARK 168 +#define PROP_INDEX_MCM 168 +#define PROP_INDEX_MONGOLIAN 169 +#define PROP_INDEX_MONG 169 +#define PROP_INDEX_MRO 170 +#define PROP_INDEX_MROO 170 +#define PROP_INDEX_MULTANI 171 +#define PROP_INDEX_MULT 171 +#define PROP_INDEX_MYANMAR 172 +#define PROP_INDEX_MYMR 172 +#define PROP_INDEX_N 173 +#define PROP_INDEX_NUMBER 173 +#define PROP_INDEX_NABATAEAN 174 +#define PROP_INDEX_NBAT 174 +#define PROP_INDEX_NAGMUNDARI 175 +#define PROP_INDEX_NAGM 175 +#define PROP_INDEX_NANDINAGARI 176 +#define PROP_INDEX_NAND 176 +#define PROP_INDEX_ND 177 +#define PROP_INDEX_DECIMALNUMBER 177 +#define PROP_INDEX_NEWTAILUE 178 +#define PROP_INDEX_TALU 178 +#define PROP_INDEX_NEWA 179 +#define PROP_INDEX_NKO 180 +#define PROP_INDEX_NKOO 180 +#define PROP_INDEX_NL 181 +#define PROP_INDEX_LETTERNUMBER 181 +#define PROP_INDEX_NO 182 +#define PROP_INDEX_OTHERNUMBER 182 +#define PROP_INDEX_NONCHARACTERCODEPOINT 183 +#define PROP_INDEX_NCHAR 183 +#define PROP_INDEX_NUSHU 184 +#define PROP_INDEX_NSHU 184 +#define PROP_INDEX_NYIAKENGPUACHUEHMONG 185 +#define PROP_INDEX_HMNP 185 +#define PROP_INDEX_OGHAM 186 +#define PROP_INDEX_OGAM 186 +#define PROP_INDEX_OLCHIKI 187 +#define PROP_INDEX_OLCK 187 +#define PROP_INDEX_OLONAL 188 +#define PROP_INDEX_ONAO 188 +#define PROP_INDEX_OLDHUNGARIAN 189 +#define PROP_INDEX_HUNG 189 +#define PROP_INDEX_OLDITALIC 190 +#define PROP_INDEX_ITAL 190 +#define PROP_INDEX_OLDNORTHARABIAN 191 +#define PROP_INDEX_NARB 191 +#define PROP_INDEX_OLDPERMIC 192 +#define PROP_INDEX_PERM 192 +#define PROP_INDEX_OLDPERSIAN 193 +#define PROP_INDEX_XPEO 193 +#define PROP_INDEX_OLDSOGDIAN 194 +#define PROP_INDEX_SOGO 194 +#define PROP_INDEX_OLDSOUTHARABIAN 195 +#define PROP_INDEX_SARB 195 +#define PROP_INDEX_OLDTURKIC 196 +#define PROP_INDEX_ORKH 196 +#define PROP_INDEX_OLDUYGHUR 197 +#define PROP_INDEX_OUGR 197 +#define PROP_INDEX_ORIYA 198 +#define PROP_INDEX_ORYA 198 +#define PROP_INDEX_OSAGE 199 +#define PROP_INDEX_OSGE 199 +#define PROP_INDEX_OSMANYA 200 +#define PROP_INDEX_OSMA 200 +#define PROP_INDEX_OTHERALPHABETIC 201 +#define PROP_INDEX_OALPHA 201 +#define PROP_INDEX_OTHERDEFAULTIGNORABLECODEPOINT 202 +#define PROP_INDEX_ODI 202 +#define PROP_INDEX_OTHERGRAPHEMEEXTEND 203 +#define PROP_INDEX_OGREXT 203 +#define PROP_INDEX_OTHERIDCONTINUE 204 +#define PROP_INDEX_OIDC 204 +#define PROP_INDEX_OTHERIDSTART 205 +#define PROP_INDEX_OIDS 205 +#define PROP_INDEX_OTHERLOWERCASE 206 +#define PROP_INDEX_OLOWER 206 +#define PROP_INDEX_OTHERMATH 207 +#define PROP_INDEX_OMATH 207 +#define PROP_INDEX_OTHERUPPERCASE 208 +#define PROP_INDEX_OUPPER 208 +#define PROP_INDEX_P 209 +#define PROP_INDEX_PUNCT 209 +#define PROP_INDEX_PUNCTUATION 209 +#define PROP_INDEX_PAHAWHHMONG 210 +#define PROP_INDEX_HMNG 210 +#define PROP_INDEX_PALMYRENE 211 +#define PROP_INDEX_PALM 211 +#define PROP_INDEX_PATTERNSYNTAX 212 +#define PROP_INDEX_PATSYN 212 +#define PROP_INDEX_PATTERNWHITESPACE 213 +#define PROP_INDEX_PATWS 213 +#define PROP_INDEX_PAUCINHAU 214 +#define PROP_INDEX_PAUC 214 +#define PROP_INDEX_PC 215 +#define PROP_INDEX_CONNECTORPUNCTUATION 215 +#define PROP_INDEX_PD 216 +#define PROP_INDEX_DASHPUNCTUATION 216 +#define PROP_INDEX_PE 217 +#define PROP_INDEX_CLOSEPUNCTUATION 217 +#define PROP_INDEX_PF 218 +#define PROP_INDEX_FINALPUNCTUATION 218 +#define PROP_INDEX_PHAGSPA 219 +#define PROP_INDEX_PHAG 219 +#define PROP_INDEX_PHOENICIAN 220 +#define PROP_INDEX_PHNX 220 +#define PROP_INDEX_PI 221 +#define PROP_INDEX_INITIALPUNCTUATION 221 +#define PROP_INDEX_PO 222 +#define PROP_INDEX_OTHERPUNCTUATION 222 +#define PROP_INDEX_PREPENDEDCONCATENATIONMARK 223 +#define PROP_INDEX_PCM 223 +#define PROP_INDEX_PS 224 +#define PROP_INDEX_OPENPUNCTUATION 224 +#define PROP_INDEX_PSALTERPAHLAVI 225 +#define PROP_INDEX_PHLP 225 +#define PROP_INDEX_QUOTATIONMARK 226 +#define PROP_INDEX_QMARK 226 +#define PROP_INDEX_RADICAL 227 +#define PROP_INDEX_REGIONALINDICATOR 228 +#define PROP_INDEX_RI 228 +#define PROP_INDEX_REJANG 229 +#define PROP_INDEX_RJNG 229 +#define PROP_INDEX_RUNIC 230 +#define PROP_INDEX_RUNR 230 +#define PROP_INDEX_S 231 +#define PROP_INDEX_SYMBOL 231 +#define PROP_INDEX_SAMARITAN 232 +#define PROP_INDEX_SAMR 232 +#define PROP_INDEX_SAURASHTRA 233 +#define PROP_INDEX_SAUR 233 +#define PROP_INDEX_SC 234 +#define PROP_INDEX_CURRENCYSYMBOL 234 +#define PROP_INDEX_SENTENCETERMINAL 235 +#define PROP_INDEX_STERM 235 +#define PROP_INDEX_SHARADA 236 +#define PROP_INDEX_SHRD 236 +#define PROP_INDEX_SHAVIAN 237 +#define PROP_INDEX_SHAW 237 +#define PROP_INDEX_SIDDHAM 238 +#define PROP_INDEX_SIDD 238 +#define PROP_INDEX_SIGNWRITING 239 +#define PROP_INDEX_SGNW 239 +#define PROP_INDEX_SINHALA 240 +#define PROP_INDEX_SINH 240 +#define PROP_INDEX_SK 241 +#define PROP_INDEX_MODIFIERSYMBOL 241 +#define PROP_INDEX_SM 242 +#define PROP_INDEX_MATHSYMBOL 242 +#define PROP_INDEX_SO 243 +#define PROP_INDEX_OTHERSYMBOL 243 +#define PROP_INDEX_SOFTDOTTED 244 +#define PROP_INDEX_SD 244 +#define PROP_INDEX_SOGDIAN 245 +#define PROP_INDEX_SOGD 245 +#define PROP_INDEX_SORASOMPENG 246 +#define PROP_INDEX_SORA 246 +#define PROP_INDEX_SOYOMBO 247 +#define PROP_INDEX_SOYO 247 +#define PROP_INDEX_SUNDANESE 248 +#define PROP_INDEX_SUND 248 +#define PROP_INDEX_SUNUWAR 249 +#define PROP_INDEX_SUNU 249 +#define PROP_INDEX_SYLOTINAGRI 250 +#define PROP_INDEX_SYLO 250 +#define PROP_INDEX_SYRIAC 251 +#define PROP_INDEX_SYRC 251 +#define PROP_INDEX_TAGALOG 252 +#define PROP_INDEX_TGLG 252 +#define PROP_INDEX_TAGBANWA 253 +#define PROP_INDEX_TAGB 253 +#define PROP_INDEX_TAILE 254 +#define PROP_INDEX_TALE 254 +#define PROP_INDEX_TAITHAM 255 +#define PROP_INDEX_LANA 255 +#define PROP_INDEX_TAIVIET 256 +#define PROP_INDEX_TAVT 256 +#define PROP_INDEX_TAKRI 257 +#define PROP_INDEX_TAKR 257 +#define PROP_INDEX_TAMIL 258 +#define PROP_INDEX_TAML 258 +#define PROP_INDEX_TANGSA 259 +#define PROP_INDEX_TNSA 259 +#define PROP_INDEX_TANGUT 260 +#define PROP_INDEX_TANG 260 +#define PROP_INDEX_TELUGU 261 +#define PROP_INDEX_TELU 261 +#define PROP_INDEX_TERMINALPUNCTUATION 262 +#define PROP_INDEX_TERM 262 +#define PROP_INDEX_THAANA 263 +#define PROP_INDEX_THAA 263 +#define PROP_INDEX_THAI 264 +#define PROP_INDEX_TIBETAN 265 +#define PROP_INDEX_TIBT 265 +#define PROP_INDEX_TIFINAGH 266 +#define PROP_INDEX_TFNG 266 +#define PROP_INDEX_TIRHUTA 267 +#define PROP_INDEX_TIRH 267 +#define PROP_INDEX_TODHRI 268 +#define PROP_INDEX_TODR 268 +#define PROP_INDEX_TOTO 269 +#define PROP_INDEX_TULUTIGALARI 270 +#define PROP_INDEX_TUTG 270 +#define PROP_INDEX_UGARITIC 271 +#define PROP_INDEX_UGAR 271 +#define PROP_INDEX_UNIFIEDIDEOGRAPH 272 +#define PROP_INDEX_UIDEO 272 +#define PROP_INDEX_UNKNOWN 273 +#define PROP_INDEX_ZZZZ 273 +#define PROP_INDEX_UPPERCASE 274 +#define PROP_INDEX_VAI 275 +#define PROP_INDEX_VAII 275 +#define PROP_INDEX_VARIATIONSELECTOR 276 +#define PROP_INDEX_VS 276 +#define PROP_INDEX_VITHKUQI 277 +#define PROP_INDEX_VITH 277 +#define PROP_INDEX_WANCHO 278 +#define PROP_INDEX_WCHO 278 +#define PROP_INDEX_WARANGCITI 279 +#define PROP_INDEX_WARA 279 +#define PROP_INDEX_WHITESPACE 280 +#define PROP_INDEX_WSPACE 280 +#define PROP_INDEX_XIDCONTINUE 281 +#define PROP_INDEX_XIDC 281 +#define PROP_INDEX_XIDSTART 282 +#define PROP_INDEX_XIDS 282 +#define PROP_INDEX_YEZIDI 283 +#define PROP_INDEX_YEZI 283 +#define PROP_INDEX_YI 284 +#define PROP_INDEX_YIII 284 +#define PROP_INDEX_Z 285 +#define PROP_INDEX_SEPARATOR 285 +#define PROP_INDEX_ZANABAZARSQUARE 286 +#define PROP_INDEX_ZANB 286 +#define PROP_INDEX_ZL 287 +#define PROP_INDEX_LINESEPARATOR 287 +#define PROP_INDEX_ZP 288 +#define PROP_INDEX_PARAGRAPHSEPARATOR 288 +#define PROP_INDEX_ZS 289 +#define PROP_INDEX_SPACESEPARATOR 289 +#define PROP_INDEX_INBASICLATIN 290 +#define PROP_INDEX_INLATIN1SUPPLEMENT 291 +#define PROP_INDEX_INLATINEXTENDEDA 292 +#define PROP_INDEX_INLATINEXTENDEDB 293 +#define PROP_INDEX_INIPAEXTENSIONS 294 +#define PROP_INDEX_INSPACINGMODIFIERLETTERS 295 +#define PROP_INDEX_INCOMBININGDIACRITICALMARKS 296 +#define PROP_INDEX_INGREEKANDCOPTIC 297 +#define PROP_INDEX_INCYRILLIC 298 +#define PROP_INDEX_INCYRILLICSUPPLEMENT 299 +#define PROP_INDEX_INARMENIAN 300 +#define PROP_INDEX_INHEBREW 301 +#define PROP_INDEX_INARABIC 302 +#define PROP_INDEX_INSYRIAC 303 +#define PROP_INDEX_INARABICSUPPLEMENT 304 +#define PROP_INDEX_INTHAANA 305 +#define PROP_INDEX_INNKO 306 +#define PROP_INDEX_INSAMARITAN 307 +#define PROP_INDEX_INMANDAIC 308 +#define PROP_INDEX_INSYRIACSUPPLEMENT 309 +#define PROP_INDEX_INARABICEXTENDEDB 310 +#define PROP_INDEX_INARABICEXTENDEDA 311 +#define PROP_INDEX_INDEVANAGARI 312 +#define PROP_INDEX_INBENGALI 313 +#define PROP_INDEX_INGURMUKHI 314 +#define PROP_INDEX_INGUJARATI 315 +#define PROP_INDEX_INORIYA 316 +#define PROP_INDEX_INTAMIL 317 +#define PROP_INDEX_INTELUGU 318 +#define PROP_INDEX_INKANNADA 319 +#define PROP_INDEX_INMALAYALAM 320 +#define PROP_INDEX_INSINHALA 321 +#define PROP_INDEX_INTHAI 322 +#define PROP_INDEX_INLAO 323 +#define PROP_INDEX_INTIBETAN 324 +#define PROP_INDEX_INMYANMAR 325 +#define PROP_INDEX_INGEORGIAN 326 +#define PROP_INDEX_INHANGULJAMO 327 +#define PROP_INDEX_INETHIOPIC 328 +#define PROP_INDEX_INETHIOPICSUPPLEMENT 329 +#define PROP_INDEX_INCHEROKEE 330 +#define PROP_INDEX_INUNIFIEDCANADIANABORIGINALSYLLABICS 331 +#define PROP_INDEX_INOGHAM 332 +#define PROP_INDEX_INRUNIC 333 +#define PROP_INDEX_INTAGALOG 334 +#define PROP_INDEX_INHANUNOO 335 +#define PROP_INDEX_INBUHID 336 +#define PROP_INDEX_INTAGBANWA 337 +#define PROP_INDEX_INKHMER 338 +#define PROP_INDEX_INMONGOLIAN 339 +#define PROP_INDEX_INUNIFIEDCANADIANABORIGINALSYLLABICSEXTENDED 340 +#define PROP_INDEX_INLIMBU 341 +#define PROP_INDEX_INTAILE 342 +#define PROP_INDEX_INNEWTAILUE 343 +#define PROP_INDEX_INKHMERSYMBOLS 344 +#define PROP_INDEX_INBUGINESE 345 +#define PROP_INDEX_INTAITHAM 346 +#define PROP_INDEX_INCOMBININGDIACRITICALMARKSEXTENDED 347 +#define PROP_INDEX_INBALINESE 348 +#define PROP_INDEX_INSUNDANESE 349 +#define PROP_INDEX_INBATAK 350 +#define PROP_INDEX_INLEPCHA 351 +#define PROP_INDEX_INOLCHIKI 352 +#define PROP_INDEX_INCYRILLICEXTENDEDC 353 +#define PROP_INDEX_INGEORGIANEXTENDED 354 +#define PROP_INDEX_INSUNDANESESUPPLEMENT 355 +#define PROP_INDEX_INVEDICEXTENSIONS 356 +#define PROP_INDEX_INPHONETICEXTENSIONS 357 +#define PROP_INDEX_INPHONETICEXTENSIONSSUPPLEMENT 358 +#define PROP_INDEX_INCOMBININGDIACRITICALMARKSSUPPLEMENT 359 +#define PROP_INDEX_INLATINEXTENDEDADDITIONAL 360 +#define PROP_INDEX_INGREEKEXTENDED 361 +#define PROP_INDEX_INGENERALPUNCTUATION 362 +#define PROP_INDEX_INSUPERSCRIPTSANDSUBSCRIPTS 363 +#define PROP_INDEX_INCURRENCYSYMBOLS 364 +#define PROP_INDEX_INCOMBININGDIACRITICALMARKSFORSYMBOLS 365 +#define PROP_INDEX_INLETTERLIKESYMBOLS 366 +#define PROP_INDEX_INNUMBERFORMS 367 +#define PROP_INDEX_INARROWS 368 +#define PROP_INDEX_INMATHEMATICALOPERATORS 369 +#define PROP_INDEX_INMISCELLANEOUSTECHNICAL 370 +#define PROP_INDEX_INCONTROLPICTURES 371 +#define PROP_INDEX_INOPTICALCHARACTERRECOGNITION 372 +#define PROP_INDEX_INENCLOSEDALPHANUMERICS 373 +#define PROP_INDEX_INBOXDRAWING 374 +#define PROP_INDEX_INBLOCKELEMENTS 375 +#define PROP_INDEX_INGEOMETRICSHAPES 376 +#define PROP_INDEX_INMISCELLANEOUSSYMBOLS 377 +#define PROP_INDEX_INDINGBATS 378 +#define PROP_INDEX_INMISCELLANEOUSMATHEMATICALSYMBOLSA 379 +#define PROP_INDEX_INSUPPLEMENTALARROWSA 380 +#define PROP_INDEX_INBRAILLEPATTERNS 381 +#define PROP_INDEX_INSUPPLEMENTALARROWSB 382 +#define PROP_INDEX_INMISCELLANEOUSMATHEMATICALSYMBOLSB 383 +#define PROP_INDEX_INSUPPLEMENTALMATHEMATICALOPERATORS 384 +#define PROP_INDEX_INMISCELLANEOUSSYMBOLSANDARROWS 385 +#define PROP_INDEX_INGLAGOLITIC 386 +#define PROP_INDEX_INLATINEXTENDEDC 387 +#define PROP_INDEX_INCOPTIC 388 +#define PROP_INDEX_INGEORGIANSUPPLEMENT 389 +#define PROP_INDEX_INTIFINAGH 390 +#define PROP_INDEX_INETHIOPICEXTENDED 391 +#define PROP_INDEX_INCYRILLICEXTENDEDA 392 +#define PROP_INDEX_INSUPPLEMENTALPUNCTUATION 393 +#define PROP_INDEX_INCJKRADICALSSUPPLEMENT 394 +#define PROP_INDEX_INKANGXIRADICALS 395 +#define PROP_INDEX_INIDEOGRAPHICDESCRIPTIONCHARACTERS 396 +#define PROP_INDEX_INCJKSYMBOLSANDPUNCTUATION 397 +#define PROP_INDEX_INHIRAGANA 398 +#define PROP_INDEX_INKATAKANA 399 +#define PROP_INDEX_INBOPOMOFO 400 +#define PROP_INDEX_INHANGULCOMPATIBILITYJAMO 401 +#define PROP_INDEX_INKANBUN 402 +#define PROP_INDEX_INBOPOMOFOEXTENDED 403 +#define PROP_INDEX_INCJKSTROKES 404 +#define PROP_INDEX_INKATAKANAPHONETICEXTENSIONS 405 +#define PROP_INDEX_INENCLOSEDCJKLETTERSANDMONTHS 406 +#define PROP_INDEX_INCJKCOMPATIBILITY 407 +#define PROP_INDEX_INCJKUNIFIEDIDEOGRAPHSEXTENSIONA 408 +#define PROP_INDEX_INYIJINGHEXAGRAMSYMBOLS 409 +#define PROP_INDEX_INCJKUNIFIEDIDEOGRAPHS 410 +#define PROP_INDEX_INYISYLLABLES 411 +#define PROP_INDEX_INYIRADICALS 412 +#define PROP_INDEX_INLISU 413 +#define PROP_INDEX_INVAI 414 +#define PROP_INDEX_INCYRILLICEXTENDEDB 415 +#define PROP_INDEX_INBAMUM 416 +#define PROP_INDEX_INMODIFIERTONELETTERS 417 +#define PROP_INDEX_INLATINEXTENDEDD 418 +#define PROP_INDEX_INSYLOTINAGRI 419 +#define PROP_INDEX_INCOMMONINDICNUMBERFORMS 420 +#define PROP_INDEX_INPHAGSPA 421 +#define PROP_INDEX_INSAURASHTRA 422 +#define PROP_INDEX_INDEVANAGARIEXTENDED 423 +#define PROP_INDEX_INKAYAHLI 424 +#define PROP_INDEX_INREJANG 425 +#define PROP_INDEX_INHANGULJAMOEXTENDEDA 426 +#define PROP_INDEX_INJAVANESE 427 +#define PROP_INDEX_INMYANMAREXTENDEDB 428 +#define PROP_INDEX_INCHAM 429 +#define PROP_INDEX_INMYANMAREXTENDEDA 430 +#define PROP_INDEX_INTAIVIET 431 +#define PROP_INDEX_INMEETEIMAYEKEXTENSIONS 432 +#define PROP_INDEX_INETHIOPICEXTENDEDA 433 +#define PROP_INDEX_INLATINEXTENDEDE 434 +#define PROP_INDEX_INCHEROKEESUPPLEMENT 435 +#define PROP_INDEX_INMEETEIMAYEK 436 +#define PROP_INDEX_INHANGULSYLLABLES 437 +#define PROP_INDEX_INHANGULJAMOEXTENDEDB 438 +#define PROP_INDEX_INHIGHSURROGATES 439 +#define PROP_INDEX_INHIGHPRIVATEUSESURROGATES 440 +#define PROP_INDEX_INLOWSURROGATES 441 +#define PROP_INDEX_INPRIVATEUSEAREA 442 +#define PROP_INDEX_INCJKCOMPATIBILITYIDEOGRAPHS 443 +#define PROP_INDEX_INALPHABETICPRESENTATIONFORMS 444 +#define PROP_INDEX_INARABICPRESENTATIONFORMSA 445 +#define PROP_INDEX_INVARIATIONSELECTORS 446 +#define PROP_INDEX_INVERTICALFORMS 447 +#define PROP_INDEX_INCOMBININGHALFMARKS 448 +#define PROP_INDEX_INCJKCOMPATIBILITYFORMS 449 +#define PROP_INDEX_INSMALLFORMVARIANTS 450 +#define PROP_INDEX_INARABICPRESENTATIONFORMSB 451 +#define PROP_INDEX_INHALFWIDTHANDFULLWIDTHFORMS 452 +#define PROP_INDEX_INSPECIALS 453 +#define PROP_INDEX_INLINEARBSYLLABARY 454 +#define PROP_INDEX_INLINEARBIDEOGRAMS 455 +#define PROP_INDEX_INAEGEANNUMBERS 456 +#define PROP_INDEX_INANCIENTGREEKNUMBERS 457 +#define PROP_INDEX_INANCIENTSYMBOLS 458 +#define PROP_INDEX_INPHAISTOSDISC 459 +#define PROP_INDEX_INLYCIAN 460 +#define PROP_INDEX_INCARIAN 461 +#define PROP_INDEX_INCOPTICEPACTNUMBERS 462 +#define PROP_INDEX_INOLDITALIC 463 +#define PROP_INDEX_INGOTHIC 464 +#define PROP_INDEX_INOLDPERMIC 465 +#define PROP_INDEX_INUGARITIC 466 +#define PROP_INDEX_INOLDPERSIAN 467 +#define PROP_INDEX_INDESERET 468 +#define PROP_INDEX_INSHAVIAN 469 +#define PROP_INDEX_INOSMANYA 470 +#define PROP_INDEX_INOSAGE 471 +#define PROP_INDEX_INELBASAN 472 +#define PROP_INDEX_INCAUCASIANALBANIAN 473 +#define PROP_INDEX_INVITHKUQI 474 +#define PROP_INDEX_INTODHRI 475 +#define PROP_INDEX_INLINEARA 476 +#define PROP_INDEX_INLATINEXTENDEDF 477 +#define PROP_INDEX_INCYPRIOTSYLLABARY 478 +#define PROP_INDEX_INIMPERIALARAMAIC 479 +#define PROP_INDEX_INPALMYRENE 480 +#define PROP_INDEX_INNABATAEAN 481 +#define PROP_INDEX_INHATRAN 482 +#define PROP_INDEX_INPHOENICIAN 483 +#define PROP_INDEX_INLYDIAN 484 +#define PROP_INDEX_INMEROITICHIEROGLYPHS 485 +#define PROP_INDEX_INMEROITICCURSIVE 486 +#define PROP_INDEX_INKHAROSHTHI 487 +#define PROP_INDEX_INOLDSOUTHARABIAN 488 +#define PROP_INDEX_INOLDNORTHARABIAN 489 +#define PROP_INDEX_INMANICHAEAN 490 +#define PROP_INDEX_INAVESTAN 491 +#define PROP_INDEX_ININSCRIPTIONALPARTHIAN 492 +#define PROP_INDEX_ININSCRIPTIONALPAHLAVI 493 +#define PROP_INDEX_INPSALTERPAHLAVI 494 +#define PROP_INDEX_INOLDTURKIC 495 +#define PROP_INDEX_INOLDHUNGARIAN 496 +#define PROP_INDEX_INHANIFIROHINGYA 497 +#define PROP_INDEX_INGARAY 498 +#define PROP_INDEX_INRUMINUMERALSYMBOLS 499 +#define PROP_INDEX_INYEZIDI 500 +#define PROP_INDEX_INARABICEXTENDEDC 501 +#define PROP_INDEX_INOLDSOGDIAN 502 +#define PROP_INDEX_INSOGDIAN 503 +#define PROP_INDEX_INOLDUYGHUR 504 +#define PROP_INDEX_INCHORASMIAN 505 +#define PROP_INDEX_INELYMAIC 506 +#define PROP_INDEX_INBRAHMI 507 +#define PROP_INDEX_INKAITHI 508 +#define PROP_INDEX_INSORASOMPENG 509 +#define PROP_INDEX_INCHAKMA 510 +#define PROP_INDEX_INMAHAJANI 511 +#define PROP_INDEX_INSHARADA 512 +#define PROP_INDEX_INSINHALAARCHAICNUMBERS 513 +#define PROP_INDEX_INKHOJKI 514 +#define PROP_INDEX_INMULTANI 515 +#define PROP_INDEX_INKHUDAWADI 516 +#define PROP_INDEX_INGRANTHA 517 +#define PROP_INDEX_INTULUTIGALARI 518 +#define PROP_INDEX_INNEWA 519 +#define PROP_INDEX_INTIRHUTA 520 +#define PROP_INDEX_INSIDDHAM 521 +#define PROP_INDEX_INMODI 522 +#define PROP_INDEX_INMONGOLIANSUPPLEMENT 523 +#define PROP_INDEX_INTAKRI 524 +#define PROP_INDEX_INMYANMAREXTENDEDC 525 +#define PROP_INDEX_INAHOM 526 +#define PROP_INDEX_INDOGRA 527 +#define PROP_INDEX_INWARANGCITI 528 +#define PROP_INDEX_INDIVESAKURU 529 +#define PROP_INDEX_INNANDINAGARI 530 +#define PROP_INDEX_INZANABAZARSQUARE 531 +#define PROP_INDEX_INSOYOMBO 532 +#define PROP_INDEX_INUNIFIEDCANADIANABORIGINALSYLLABICSEXTENDEDA 533 +#define PROP_INDEX_INPAUCINHAU 534 +#define PROP_INDEX_INDEVANAGARIEXTENDEDA 535 +#define PROP_INDEX_INSUNUWAR 536 +#define PROP_INDEX_INBHAIKSUKI 537 +#define PROP_INDEX_INMARCHEN 538 +#define PROP_INDEX_INMASARAMGONDI 539 +#define PROP_INDEX_INGUNJALAGONDI 540 +#define PROP_INDEX_INMAKASAR 541 +#define PROP_INDEX_INKAWI 542 +#define PROP_INDEX_INLISUSUPPLEMENT 543 +#define PROP_INDEX_INTAMILSUPPLEMENT 544 +#define PROP_INDEX_INCUNEIFORM 545 +#define PROP_INDEX_INCUNEIFORMNUMBERSANDPUNCTUATION 546 +#define PROP_INDEX_INEARLYDYNASTICCUNEIFORM 547 +#define PROP_INDEX_INCYPROMINOAN 548 +#define PROP_INDEX_INEGYPTIANHIEROGLYPHS 549 +#define PROP_INDEX_INEGYPTIANHIEROGLYPHFORMATCONTROLS 550 +#define PROP_INDEX_INEGYPTIANHIEROGLYPHSEXTENDEDA 551 +#define PROP_INDEX_INANATOLIANHIEROGLYPHS 552 +#define PROP_INDEX_INGURUNGKHEMA 553 +#define PROP_INDEX_INBAMUMSUPPLEMENT 554 +#define PROP_INDEX_INMRO 555 +#define PROP_INDEX_INTANGSA 556 +#define PROP_INDEX_INBASSAVAH 557 +#define PROP_INDEX_INPAHAWHHMONG 558 +#define PROP_INDEX_INKIRATRAI 559 +#define PROP_INDEX_INMEDEFAIDRIN 560 +#define PROP_INDEX_INMIAO 561 +#define PROP_INDEX_INIDEOGRAPHICSYMBOLSANDPUNCTUATION 562 +#define PROP_INDEX_INTANGUT 563 +#define PROP_INDEX_INTANGUTCOMPONENTS 564 +#define PROP_INDEX_INKHITANSMALLSCRIPT 565 +#define PROP_INDEX_INTANGUTSUPPLEMENT 566 +#define PROP_INDEX_INKANAEXTENDEDB 567 +#define PROP_INDEX_INKANASUPPLEMENT 568 +#define PROP_INDEX_INKANAEXTENDEDA 569 +#define PROP_INDEX_INSMALLKANAEXTENSION 570 +#define PROP_INDEX_INNUSHU 571 +#define PROP_INDEX_INDUPLOYAN 572 +#define PROP_INDEX_INSHORTHANDFORMATCONTROLS 573 +#define PROP_INDEX_INSYMBOLSFORLEGACYCOMPUTINGSUPPLEMENT 574 +#define PROP_INDEX_INZNAMENNYMUSICALNOTATION 575 +#define PROP_INDEX_INBYZANTINEMUSICALSYMBOLS 576 +#define PROP_INDEX_INMUSICALSYMBOLS 577 +#define PROP_INDEX_INANCIENTGREEKMUSICALNOTATION 578 +#define PROP_INDEX_INKAKTOVIKNUMERALS 579 +#define PROP_INDEX_INMAYANNUMERALS 580 +#define PROP_INDEX_INTAIXUANJINGSYMBOLS 581 +#define PROP_INDEX_INCOUNTINGRODNUMERALS 582 +#define PROP_INDEX_INMATHEMATICALALPHANUMERICSYMBOLS 583 +#define PROP_INDEX_INSUTTONSIGNWRITING 584 +#define PROP_INDEX_INLATINEXTENDEDG 585 +#define PROP_INDEX_INGLAGOLITICSUPPLEMENT 586 +#define PROP_INDEX_INCYRILLICEXTENDEDD 587 +#define PROP_INDEX_INNYIAKENGPUACHUEHMONG 588 +#define PROP_INDEX_INTOTO 589 +#define PROP_INDEX_INWANCHO 590 +#define PROP_INDEX_INNAGMUNDARI 591 +#define PROP_INDEX_INOLONAL 592 +#define PROP_INDEX_INETHIOPICEXTENDEDB 593 +#define PROP_INDEX_INMENDEKIKAKUI 594 +#define PROP_INDEX_INADLAM 595 +#define PROP_INDEX_ININDICSIYAQNUMBERS 596 +#define PROP_INDEX_INOTTOMANSIYAQNUMBERS 597 +#define PROP_INDEX_INARABICMATHEMATICALALPHABETICSYMBOLS 598 +#define PROP_INDEX_INMAHJONGTILES 599 +#define PROP_INDEX_INDOMINOTILES 600 +#define PROP_INDEX_INPLAYINGCARDS 601 +#define PROP_INDEX_INENCLOSEDALPHANUMERICSUPPLEMENT 602 +#define PROP_INDEX_INENCLOSEDIDEOGRAPHICSUPPLEMENT 603 +#define PROP_INDEX_INMISCELLANEOUSSYMBOLSANDPICTOGRAPHS 604 +#define PROP_INDEX_INEMOTICONS 605 +#define PROP_INDEX_INORNAMENTALDINGBATS 606 +#define PROP_INDEX_INTRANSPORTANDMAPSYMBOLS 607 +#define PROP_INDEX_INALCHEMICALSYMBOLS 608 +#define PROP_INDEX_INGEOMETRICSHAPESEXTENDED 609 +#define PROP_INDEX_INSUPPLEMENTALARROWSC 610 +#define PROP_INDEX_INSUPPLEMENTALSYMBOLSANDPICTOGRAPHS 611 +#define PROP_INDEX_INCHESSSYMBOLS 612 +#define PROP_INDEX_INSYMBOLSANDPICTOGRAPHSEXTENDEDA 613 +#define PROP_INDEX_INSYMBOLSFORLEGACYCOMPUTING 614 +#define PROP_INDEX_INCJKUNIFIEDIDEOGRAPHSEXTENSIONB 615 +#define PROP_INDEX_INCJKUNIFIEDIDEOGRAPHSEXTENSIONC 616 +#define PROP_INDEX_INCJKUNIFIEDIDEOGRAPHSEXTENSIOND 617 +#define PROP_INDEX_INCJKUNIFIEDIDEOGRAPHSEXTENSIONE 618 +#define PROP_INDEX_INCJKUNIFIEDIDEOGRAPHSEXTENSIONF 619 +#define PROP_INDEX_INCJKUNIFIEDIDEOGRAPHSEXTENSIONI 620 +#define PROP_INDEX_INCJKCOMPATIBILITYIDEOGRAPHSSUPPLEMENT 621 +#define PROP_INDEX_INCJKUNIFIEDIDEOGRAPHSEXTENSIONG 622 +#define PROP_INDEX_INCJKUNIFIEDIDEOGRAPHSEXTENSIONH 623 +#define PROP_INDEX_INTAGS 624 +#define PROP_INDEX_INVARIATIONSELECTORSSUPPLEMENT 625 +#define PROP_INDEX_INSUPPLEMENTARYPRIVATEUSEAREAA 626 +#define PROP_INDEX_INSUPPLEMENTARYPRIVATEUSEAREAB 627 +#define PROP_INDEX_INNOBLOCK 628 diff --git a/vendor/oniguruma/oniguruma/src/unicode_property_data_posix.c b/vendor/oniguruma/oniguruma/src/unicode_property_data_posix.c new file mode 100644 index 0000000..5edb6d8 --- /dev/null +++ b/vendor/oniguruma/oniguruma/src/unicode_property_data_posix.c @@ -0,0 +1,5968 @@ +/* ANSI-C code produced by gperf version 3.1 */ +/* 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 gperf2.tmp unicode_property_data_posix.gperf */ +/* Computed positions: -k'1,3' */ + +#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ + && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \ + && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \ + && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \ + && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \ + && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \ + && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \ + && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \ + && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \ + && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \ + && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \ + && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \ + && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \ + && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \ + && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \ + && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \ + && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \ + && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \ + && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \ + && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \ + && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \ + && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \ + && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126)) +/* The character set is not based on ISO-646. */ +#error "gperf generated tables don't work with this execution character set. Please report a bug to ." +#endif + + + +/* Generated by make_unicode_property_data.py. */ + +/*- + * Copyright (c) 2016-2024 K.Kosako + * 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. + */ + + +/* PROPERTY: 'NEWLINE': POSIX [[:NEWLINE:]] */ +static const OnigCodePoint +CR_NEWLINE[] = { 1, +0x000a, 0x000a, +}; /* END of CR_NEWLINE */ + +/* PROPERTY: 'Alpha': POSIX [[:Alpha:]] */ +static const OnigCodePoint +CR_Alpha[] = { 757, +0x0041, 0x005a, +0x0061, 0x007a, +0x00aa, 0x00aa, +0x00b5, 0x00b5, +0x00ba, 0x00ba, +0x00c0, 0x00d6, +0x00d8, 0x00f6, +0x00f8, 0x02c1, +0x02c6, 0x02d1, +0x02e0, 0x02e4, +0x02ec, 0x02ec, +0x02ee, 0x02ee, +0x0345, 0x0345, +0x0363, 0x0374, +0x0376, 0x0377, +0x037a, 0x037d, +0x037f, 0x037f, +0x0386, 0x0386, +0x0388, 0x038a, +0x038c, 0x038c, +0x038e, 0x03a1, +0x03a3, 0x03f5, +0x03f7, 0x0481, +0x048a, 0x052f, +0x0531, 0x0556, +0x0559, 0x0559, +0x0560, 0x0588, +0x05b0, 0x05bd, +0x05bf, 0x05bf, +0x05c1, 0x05c2, +0x05c4, 0x05c5, +0x05c7, 0x05c7, +0x05d0, 0x05ea, +0x05ef, 0x05f2, +0x0610, 0x061a, +0x0620, 0x0657, +0x0659, 0x065f, +0x066e, 0x06d3, +0x06d5, 0x06dc, +0x06e1, 0x06e8, +0x06ed, 0x06ef, +0x06fa, 0x06fc, +0x06ff, 0x06ff, +0x0710, 0x073f, +0x074d, 0x07b1, +0x07ca, 0x07ea, +0x07f4, 0x07f5, +0x07fa, 0x07fa, +0x0800, 0x0817, +0x081a, 0x082c, +0x0840, 0x0858, +0x0860, 0x086a, +0x0870, 0x0887, +0x0889, 0x088e, +0x0897, 0x0897, +0x08a0, 0x08c9, +0x08d4, 0x08df, +0x08e3, 0x08e9, +0x08f0, 0x093b, +0x093d, 0x094c, +0x094e, 0x0950, +0x0955, 0x0963, +0x0971, 0x0983, +0x0985, 0x098c, +0x098f, 0x0990, +0x0993, 0x09a8, +0x09aa, 0x09b0, +0x09b2, 0x09b2, +0x09b6, 0x09b9, +0x09bd, 0x09c4, +0x09c7, 0x09c8, +0x09cb, 0x09cc, +0x09ce, 0x09ce, +0x09d7, 0x09d7, +0x09dc, 0x09dd, +0x09df, 0x09e3, +0x09f0, 0x09f1, +0x09fc, 0x09fc, +0x0a01, 0x0a03, +0x0a05, 0x0a0a, +0x0a0f, 0x0a10, +0x0a13, 0x0a28, +0x0a2a, 0x0a30, +0x0a32, 0x0a33, +0x0a35, 0x0a36, +0x0a38, 0x0a39, +0x0a3e, 0x0a42, +0x0a47, 0x0a48, +0x0a4b, 0x0a4c, +0x0a51, 0x0a51, +0x0a59, 0x0a5c, +0x0a5e, 0x0a5e, +0x0a70, 0x0a75, +0x0a81, 0x0a83, +0x0a85, 0x0a8d, +0x0a8f, 0x0a91, +0x0a93, 0x0aa8, +0x0aaa, 0x0ab0, +0x0ab2, 0x0ab3, +0x0ab5, 0x0ab9, +0x0abd, 0x0ac5, +0x0ac7, 0x0ac9, +0x0acb, 0x0acc, +0x0ad0, 0x0ad0, +0x0ae0, 0x0ae3, +0x0af9, 0x0afc, +0x0b01, 0x0b03, +0x0b05, 0x0b0c, +0x0b0f, 0x0b10, +0x0b13, 0x0b28, +0x0b2a, 0x0b30, +0x0b32, 0x0b33, +0x0b35, 0x0b39, +0x0b3d, 0x0b44, +0x0b47, 0x0b48, +0x0b4b, 0x0b4c, +0x0b56, 0x0b57, +0x0b5c, 0x0b5d, +0x0b5f, 0x0b63, +0x0b71, 0x0b71, +0x0b82, 0x0b83, +0x0b85, 0x0b8a, +0x0b8e, 0x0b90, +0x0b92, 0x0b95, +0x0b99, 0x0b9a, +0x0b9c, 0x0b9c, +0x0b9e, 0x0b9f, +0x0ba3, 0x0ba4, +0x0ba8, 0x0baa, +0x0bae, 0x0bb9, +0x0bbe, 0x0bc2, +0x0bc6, 0x0bc8, +0x0bca, 0x0bcc, +0x0bd0, 0x0bd0, +0x0bd7, 0x0bd7, +0x0c00, 0x0c0c, +0x0c0e, 0x0c10, +0x0c12, 0x0c28, +0x0c2a, 0x0c39, +0x0c3d, 0x0c44, +0x0c46, 0x0c48, +0x0c4a, 0x0c4c, +0x0c55, 0x0c56, +0x0c58, 0x0c5a, +0x0c5d, 0x0c5d, +0x0c60, 0x0c63, +0x0c80, 0x0c83, +0x0c85, 0x0c8c, +0x0c8e, 0x0c90, +0x0c92, 0x0ca8, +0x0caa, 0x0cb3, +0x0cb5, 0x0cb9, +0x0cbd, 0x0cc4, +0x0cc6, 0x0cc8, +0x0cca, 0x0ccc, +0x0cd5, 0x0cd6, +0x0cdd, 0x0cde, +0x0ce0, 0x0ce3, +0x0cf1, 0x0cf3, +0x0d00, 0x0d0c, +0x0d0e, 0x0d10, +0x0d12, 0x0d3a, +0x0d3d, 0x0d44, +0x0d46, 0x0d48, +0x0d4a, 0x0d4c, +0x0d4e, 0x0d4e, +0x0d54, 0x0d57, +0x0d5f, 0x0d63, +0x0d7a, 0x0d7f, +0x0d81, 0x0d83, +0x0d85, 0x0d96, +0x0d9a, 0x0db1, +0x0db3, 0x0dbb, +0x0dbd, 0x0dbd, +0x0dc0, 0x0dc6, +0x0dcf, 0x0dd4, +0x0dd6, 0x0dd6, +0x0dd8, 0x0ddf, +0x0df2, 0x0df3, +0x0e01, 0x0e3a, +0x0e40, 0x0e46, +0x0e4d, 0x0e4d, +0x0e81, 0x0e82, +0x0e84, 0x0e84, +0x0e86, 0x0e8a, +0x0e8c, 0x0ea3, +0x0ea5, 0x0ea5, +0x0ea7, 0x0eb9, +0x0ebb, 0x0ebd, +0x0ec0, 0x0ec4, +0x0ec6, 0x0ec6, +0x0ecd, 0x0ecd, +0x0edc, 0x0edf, +0x0f00, 0x0f00, +0x0f40, 0x0f47, +0x0f49, 0x0f6c, +0x0f71, 0x0f83, +0x0f88, 0x0f97, +0x0f99, 0x0fbc, +0x1000, 0x1036, +0x1038, 0x1038, +0x103b, 0x103f, +0x1050, 0x108f, +0x109a, 0x109d, +0x10a0, 0x10c5, +0x10c7, 0x10c7, +0x10cd, 0x10cd, +0x10d0, 0x10fa, +0x10fc, 0x1248, +0x124a, 0x124d, +0x1250, 0x1256, +0x1258, 0x1258, +0x125a, 0x125d, +0x1260, 0x1288, +0x128a, 0x128d, +0x1290, 0x12b0, +0x12b2, 0x12b5, +0x12b8, 0x12be, +0x12c0, 0x12c0, +0x12c2, 0x12c5, +0x12c8, 0x12d6, +0x12d8, 0x1310, +0x1312, 0x1315, +0x1318, 0x135a, +0x1380, 0x138f, +0x13a0, 0x13f5, +0x13f8, 0x13fd, +0x1401, 0x166c, +0x166f, 0x167f, +0x1681, 0x169a, +0x16a0, 0x16ea, +0x16ee, 0x16f8, +0x1700, 0x1713, +0x171f, 0x1733, +0x1740, 0x1753, +0x1760, 0x176c, +0x176e, 0x1770, +0x1772, 0x1773, +0x1780, 0x17b3, +0x17b6, 0x17c8, +0x17d7, 0x17d7, +0x17dc, 0x17dc, +0x1820, 0x1878, +0x1880, 0x18aa, +0x18b0, 0x18f5, +0x1900, 0x191e, +0x1920, 0x192b, +0x1930, 0x1938, +0x1950, 0x196d, +0x1970, 0x1974, +0x1980, 0x19ab, +0x19b0, 0x19c9, +0x1a00, 0x1a1b, +0x1a20, 0x1a5e, +0x1a61, 0x1a74, +0x1aa7, 0x1aa7, +0x1abf, 0x1ac0, +0x1acc, 0x1ace, +0x1b00, 0x1b33, +0x1b35, 0x1b43, +0x1b45, 0x1b4c, +0x1b80, 0x1ba9, +0x1bac, 0x1baf, +0x1bba, 0x1be5, +0x1be7, 0x1bf1, +0x1c00, 0x1c36, +0x1c4d, 0x1c4f, +0x1c5a, 0x1c7d, +0x1c80, 0x1c8a, +0x1c90, 0x1cba, +0x1cbd, 0x1cbf, +0x1ce9, 0x1cec, +0x1cee, 0x1cf3, +0x1cf5, 0x1cf6, +0x1cfa, 0x1cfa, +0x1d00, 0x1dbf, +0x1dd3, 0x1df4, +0x1e00, 0x1f15, +0x1f18, 0x1f1d, +0x1f20, 0x1f45, +0x1f48, 0x1f4d, +0x1f50, 0x1f57, +0x1f59, 0x1f59, +0x1f5b, 0x1f5b, +0x1f5d, 0x1f5d, +0x1f5f, 0x1f7d, +0x1f80, 0x1fb4, +0x1fb6, 0x1fbc, +0x1fbe, 0x1fbe, +0x1fc2, 0x1fc4, +0x1fc6, 0x1fcc, +0x1fd0, 0x1fd3, +0x1fd6, 0x1fdb, +0x1fe0, 0x1fec, +0x1ff2, 0x1ff4, +0x1ff6, 0x1ffc, +0x2071, 0x2071, +0x207f, 0x207f, +0x2090, 0x209c, +0x2102, 0x2102, +0x2107, 0x2107, +0x210a, 0x2113, +0x2115, 0x2115, +0x2119, 0x211d, +0x2124, 0x2124, +0x2126, 0x2126, +0x2128, 0x2128, +0x212a, 0x212d, +0x212f, 0x2139, +0x213c, 0x213f, +0x2145, 0x2149, +0x214e, 0x214e, +0x2160, 0x2188, +0x24b6, 0x24e9, +0x2c00, 0x2ce4, +0x2ceb, 0x2cee, +0x2cf2, 0x2cf3, +0x2d00, 0x2d25, +0x2d27, 0x2d27, +0x2d2d, 0x2d2d, +0x2d30, 0x2d67, +0x2d6f, 0x2d6f, +0x2d80, 0x2d96, +0x2da0, 0x2da6, +0x2da8, 0x2dae, +0x2db0, 0x2db6, +0x2db8, 0x2dbe, +0x2dc0, 0x2dc6, +0x2dc8, 0x2dce, +0x2dd0, 0x2dd6, +0x2dd8, 0x2dde, +0x2de0, 0x2dff, +0x2e2f, 0x2e2f, +0x3005, 0x3007, +0x3021, 0x3029, +0x3031, 0x3035, +0x3038, 0x303c, +0x3041, 0x3096, +0x309d, 0x309f, +0x30a1, 0x30fa, +0x30fc, 0x30ff, +0x3105, 0x312f, +0x3131, 0x318e, +0x31a0, 0x31bf, +0x31f0, 0x31ff, +0x3400, 0x4dbf, +0x4e00, 0xa48c, +0xa4d0, 0xa4fd, +0xa500, 0xa60c, +0xa610, 0xa61f, +0xa62a, 0xa62b, +0xa640, 0xa66e, +0xa674, 0xa67b, +0xa67f, 0xa6ef, +0xa717, 0xa71f, +0xa722, 0xa788, +0xa78b, 0xa7cd, +0xa7d0, 0xa7d1, +0xa7d3, 0xa7d3, +0xa7d5, 0xa7dc, +0xa7f2, 0xa805, +0xa807, 0xa827, +0xa840, 0xa873, +0xa880, 0xa8c3, +0xa8c5, 0xa8c5, +0xa8f2, 0xa8f7, +0xa8fb, 0xa8fb, +0xa8fd, 0xa8ff, +0xa90a, 0xa92a, +0xa930, 0xa952, +0xa960, 0xa97c, +0xa980, 0xa9b2, +0xa9b4, 0xa9bf, +0xa9cf, 0xa9cf, +0xa9e0, 0xa9ef, +0xa9fa, 0xa9fe, +0xaa00, 0xaa36, +0xaa40, 0xaa4d, +0xaa60, 0xaa76, +0xaa7a, 0xaabe, +0xaac0, 0xaac0, +0xaac2, 0xaac2, +0xaadb, 0xaadd, +0xaae0, 0xaaef, +0xaaf2, 0xaaf5, +0xab01, 0xab06, +0xab09, 0xab0e, +0xab11, 0xab16, +0xab20, 0xab26, +0xab28, 0xab2e, +0xab30, 0xab5a, +0xab5c, 0xab69, +0xab70, 0xabea, +0xac00, 0xd7a3, +0xd7b0, 0xd7c6, +0xd7cb, 0xd7fb, +0xf900, 0xfa6d, +0xfa70, 0xfad9, +0xfb00, 0xfb06, +0xfb13, 0xfb17, +0xfb1d, 0xfb28, +0xfb2a, 0xfb36, +0xfb38, 0xfb3c, +0xfb3e, 0xfb3e, +0xfb40, 0xfb41, +0xfb43, 0xfb44, +0xfb46, 0xfbb1, +0xfbd3, 0xfd3d, +0xfd50, 0xfd8f, +0xfd92, 0xfdc7, +0xfdf0, 0xfdfb, +0xfe70, 0xfe74, +0xfe76, 0xfefc, +0xff21, 0xff3a, +0xff41, 0xff5a, +0xff66, 0xffbe, +0xffc2, 0xffc7, +0xffca, 0xffcf, +0xffd2, 0xffd7, +0xffda, 0xffdc, +0x10000, 0x1000b, +0x1000d, 0x10026, +0x10028, 0x1003a, +0x1003c, 0x1003d, +0x1003f, 0x1004d, +0x10050, 0x1005d, +0x10080, 0x100fa, +0x10140, 0x10174, +0x10280, 0x1029c, +0x102a0, 0x102d0, +0x10300, 0x1031f, +0x1032d, 0x1034a, +0x10350, 0x1037a, +0x10380, 0x1039d, +0x103a0, 0x103c3, +0x103c8, 0x103cf, +0x103d1, 0x103d5, +0x10400, 0x1049d, +0x104b0, 0x104d3, +0x104d8, 0x104fb, +0x10500, 0x10527, +0x10530, 0x10563, +0x10570, 0x1057a, +0x1057c, 0x1058a, +0x1058c, 0x10592, +0x10594, 0x10595, +0x10597, 0x105a1, +0x105a3, 0x105b1, +0x105b3, 0x105b9, +0x105bb, 0x105bc, +0x105c0, 0x105f3, +0x10600, 0x10736, +0x10740, 0x10755, +0x10760, 0x10767, +0x10780, 0x10785, +0x10787, 0x107b0, +0x107b2, 0x107ba, +0x10800, 0x10805, +0x10808, 0x10808, +0x1080a, 0x10835, +0x10837, 0x10838, +0x1083c, 0x1083c, +0x1083f, 0x10855, +0x10860, 0x10876, +0x10880, 0x1089e, +0x108e0, 0x108f2, +0x108f4, 0x108f5, +0x10900, 0x10915, +0x10920, 0x10939, +0x10980, 0x109b7, +0x109be, 0x109bf, +0x10a00, 0x10a03, +0x10a05, 0x10a06, +0x10a0c, 0x10a13, +0x10a15, 0x10a17, +0x10a19, 0x10a35, +0x10a60, 0x10a7c, +0x10a80, 0x10a9c, +0x10ac0, 0x10ac7, +0x10ac9, 0x10ae4, +0x10b00, 0x10b35, +0x10b40, 0x10b55, +0x10b60, 0x10b72, +0x10b80, 0x10b91, +0x10c00, 0x10c48, +0x10c80, 0x10cb2, +0x10cc0, 0x10cf2, +0x10d00, 0x10d27, +0x10d4a, 0x10d65, +0x10d69, 0x10d69, +0x10d6f, 0x10d85, +0x10e80, 0x10ea9, +0x10eab, 0x10eac, +0x10eb0, 0x10eb1, +0x10ec2, 0x10ec4, +0x10efc, 0x10efc, +0x10f00, 0x10f1c, +0x10f27, 0x10f27, +0x10f30, 0x10f45, +0x10f70, 0x10f81, +0x10fb0, 0x10fc4, +0x10fe0, 0x10ff6, +0x11000, 0x11045, +0x11071, 0x11075, +0x11080, 0x110b8, +0x110c2, 0x110c2, +0x110d0, 0x110e8, +0x11100, 0x11132, +0x11144, 0x11147, +0x11150, 0x11172, +0x11176, 0x11176, +0x11180, 0x111bf, +0x111c1, 0x111c4, +0x111ce, 0x111cf, +0x111da, 0x111da, +0x111dc, 0x111dc, +0x11200, 0x11211, +0x11213, 0x11234, +0x11237, 0x11237, +0x1123e, 0x11241, +0x11280, 0x11286, +0x11288, 0x11288, +0x1128a, 0x1128d, +0x1128f, 0x1129d, +0x1129f, 0x112a8, +0x112b0, 0x112e8, +0x11300, 0x11303, +0x11305, 0x1130c, +0x1130f, 0x11310, +0x11313, 0x11328, +0x1132a, 0x11330, +0x11332, 0x11333, +0x11335, 0x11339, +0x1133d, 0x11344, +0x11347, 0x11348, +0x1134b, 0x1134c, +0x11350, 0x11350, +0x11357, 0x11357, +0x1135d, 0x11363, +0x11380, 0x11389, +0x1138b, 0x1138b, +0x1138e, 0x1138e, +0x11390, 0x113b5, +0x113b7, 0x113c0, +0x113c2, 0x113c2, +0x113c5, 0x113c5, +0x113c7, 0x113ca, +0x113cc, 0x113cd, +0x113d1, 0x113d1, +0x113d3, 0x113d3, +0x11400, 0x11441, +0x11443, 0x11445, +0x11447, 0x1144a, +0x1145f, 0x11461, +0x11480, 0x114c1, +0x114c4, 0x114c5, +0x114c7, 0x114c7, +0x11580, 0x115b5, +0x115b8, 0x115be, +0x115d8, 0x115dd, +0x11600, 0x1163e, +0x11640, 0x11640, +0x11644, 0x11644, +0x11680, 0x116b5, +0x116b8, 0x116b8, +0x11700, 0x1171a, +0x1171d, 0x1172a, +0x11740, 0x11746, +0x11800, 0x11838, +0x118a0, 0x118df, +0x118ff, 0x11906, +0x11909, 0x11909, +0x1190c, 0x11913, +0x11915, 0x11916, +0x11918, 0x11935, +0x11937, 0x11938, +0x1193b, 0x1193c, +0x1193f, 0x11942, +0x119a0, 0x119a7, +0x119aa, 0x119d7, +0x119da, 0x119df, +0x119e1, 0x119e1, +0x119e3, 0x119e4, +0x11a00, 0x11a32, +0x11a35, 0x11a3e, +0x11a50, 0x11a97, +0x11a9d, 0x11a9d, +0x11ab0, 0x11af8, +0x11bc0, 0x11be0, +0x11c00, 0x11c08, +0x11c0a, 0x11c36, +0x11c38, 0x11c3e, +0x11c40, 0x11c40, +0x11c72, 0x11c8f, +0x11c92, 0x11ca7, +0x11ca9, 0x11cb6, +0x11d00, 0x11d06, +0x11d08, 0x11d09, +0x11d0b, 0x11d36, +0x11d3a, 0x11d3a, +0x11d3c, 0x11d3d, +0x11d3f, 0x11d41, +0x11d43, 0x11d43, +0x11d46, 0x11d47, +0x11d60, 0x11d65, +0x11d67, 0x11d68, +0x11d6a, 0x11d8e, +0x11d90, 0x11d91, +0x11d93, 0x11d96, +0x11d98, 0x11d98, +0x11ee0, 0x11ef6, +0x11f00, 0x11f10, +0x11f12, 0x11f3a, +0x11f3e, 0x11f40, +0x11fb0, 0x11fb0, +0x12000, 0x12399, +0x12400, 0x1246e, +0x12480, 0x12543, +0x12f90, 0x12ff0, +0x13000, 0x1342f, +0x13441, 0x13446, +0x13460, 0x143fa, +0x14400, 0x14646, +0x16100, 0x1612e, +0x16800, 0x16a38, +0x16a40, 0x16a5e, +0x16a70, 0x16abe, +0x16ad0, 0x16aed, +0x16b00, 0x16b2f, +0x16b40, 0x16b43, +0x16b63, 0x16b77, +0x16b7d, 0x16b8f, +0x16d40, 0x16d6c, +0x16e40, 0x16e7f, +0x16f00, 0x16f4a, +0x16f4f, 0x16f87, +0x16f8f, 0x16f9f, +0x16fe0, 0x16fe1, +0x16fe3, 0x16fe3, +0x16ff0, 0x16ff1, +0x17000, 0x187f7, +0x18800, 0x18cd5, +0x18cff, 0x18d08, +0x1aff0, 0x1aff3, +0x1aff5, 0x1affb, +0x1affd, 0x1affe, +0x1b000, 0x1b122, +0x1b132, 0x1b132, +0x1b150, 0x1b152, +0x1b155, 0x1b155, +0x1b164, 0x1b167, +0x1b170, 0x1b2fb, +0x1bc00, 0x1bc6a, +0x1bc70, 0x1bc7c, +0x1bc80, 0x1bc88, +0x1bc90, 0x1bc99, +0x1bc9e, 0x1bc9e, +0x1d400, 0x1d454, +0x1d456, 0x1d49c, +0x1d49e, 0x1d49f, +0x1d4a2, 0x1d4a2, +0x1d4a5, 0x1d4a6, +0x1d4a9, 0x1d4ac, +0x1d4ae, 0x1d4b9, +0x1d4bb, 0x1d4bb, +0x1d4bd, 0x1d4c3, +0x1d4c5, 0x1d505, +0x1d507, 0x1d50a, +0x1d50d, 0x1d514, +0x1d516, 0x1d51c, +0x1d51e, 0x1d539, +0x1d53b, 0x1d53e, +0x1d540, 0x1d544, +0x1d546, 0x1d546, +0x1d54a, 0x1d550, +0x1d552, 0x1d6a5, +0x1d6a8, 0x1d6c0, +0x1d6c2, 0x1d6da, +0x1d6dc, 0x1d6fa, +0x1d6fc, 0x1d714, +0x1d716, 0x1d734, +0x1d736, 0x1d74e, +0x1d750, 0x1d76e, +0x1d770, 0x1d788, +0x1d78a, 0x1d7a8, +0x1d7aa, 0x1d7c2, +0x1d7c4, 0x1d7cb, +0x1df00, 0x1df1e, +0x1df25, 0x1df2a, +0x1e000, 0x1e006, +0x1e008, 0x1e018, +0x1e01b, 0x1e021, +0x1e023, 0x1e024, +0x1e026, 0x1e02a, +0x1e030, 0x1e06d, +0x1e08f, 0x1e08f, +0x1e100, 0x1e12c, +0x1e137, 0x1e13d, +0x1e14e, 0x1e14e, +0x1e290, 0x1e2ad, +0x1e2c0, 0x1e2eb, +0x1e4d0, 0x1e4eb, +0x1e5d0, 0x1e5ed, +0x1e5f0, 0x1e5f0, +0x1e7e0, 0x1e7e6, +0x1e7e8, 0x1e7eb, +0x1e7ed, 0x1e7ee, +0x1e7f0, 0x1e7fe, +0x1e800, 0x1e8c4, +0x1e900, 0x1e943, +0x1e947, 0x1e947, +0x1e94b, 0x1e94b, +0x1ee00, 0x1ee03, +0x1ee05, 0x1ee1f, +0x1ee21, 0x1ee22, +0x1ee24, 0x1ee24, +0x1ee27, 0x1ee27, +0x1ee29, 0x1ee32, +0x1ee34, 0x1ee37, +0x1ee39, 0x1ee39, +0x1ee3b, 0x1ee3b, +0x1ee42, 0x1ee42, +0x1ee47, 0x1ee47, +0x1ee49, 0x1ee49, +0x1ee4b, 0x1ee4b, +0x1ee4d, 0x1ee4f, +0x1ee51, 0x1ee52, +0x1ee54, 0x1ee54, +0x1ee57, 0x1ee57, +0x1ee59, 0x1ee59, +0x1ee5b, 0x1ee5b, +0x1ee5d, 0x1ee5d, +0x1ee5f, 0x1ee5f, +0x1ee61, 0x1ee62, +0x1ee64, 0x1ee64, +0x1ee67, 0x1ee6a, +0x1ee6c, 0x1ee72, +0x1ee74, 0x1ee77, +0x1ee79, 0x1ee7c, +0x1ee7e, 0x1ee7e, +0x1ee80, 0x1ee89, +0x1ee8b, 0x1ee9b, +0x1eea1, 0x1eea3, +0x1eea5, 0x1eea9, +0x1eeab, 0x1eebb, +0x1f130, 0x1f149, +0x1f150, 0x1f169, +0x1f170, 0x1f189, +0x20000, 0x2a6df, +0x2a700, 0x2b739, +0x2b740, 0x2b81d, +0x2b820, 0x2cea1, +0x2ceb0, 0x2ebe0, +0x2ebf0, 0x2ee5d, +0x2f800, 0x2fa1d, +0x30000, 0x3134a, +0x31350, 0x323af, +}; /* END of CR_Alpha */ + +/* PROPERTY: 'Blank': POSIX [[:Blank:]] */ +static const OnigCodePoint +CR_Blank[] = { 8, +0x0009, 0x0009, +0x0020, 0x0020, +0x00a0, 0x00a0, +0x1680, 0x1680, +0x2000, 0x200a, +0x202f, 0x202f, +0x205f, 0x205f, +0x3000, 0x3000, +}; /* END of CR_Blank */ + +/* PROPERTY: 'Cntrl': POSIX [[:Cntrl:]] */ +static const OnigCodePoint +CR_Cntrl[] = { 2, +0x0000, 0x001f, +0x007f, 0x009f, +}; /* END of CR_Cntrl */ + +/* PROPERTY: 'Digit': POSIX [[:Digit:]] */ +static const OnigCodePoint +CR_Digit[] = { 71, +0x0030, 0x0039, +0x0660, 0x0669, +0x06f0, 0x06f9, +0x07c0, 0x07c9, +0x0966, 0x096f, +0x09e6, 0x09ef, +0x0a66, 0x0a6f, +0x0ae6, 0x0aef, +0x0b66, 0x0b6f, +0x0be6, 0x0bef, +0x0c66, 0x0c6f, +0x0ce6, 0x0cef, +0x0d66, 0x0d6f, +0x0de6, 0x0def, +0x0e50, 0x0e59, +0x0ed0, 0x0ed9, +0x0f20, 0x0f29, +0x1040, 0x1049, +0x1090, 0x1099, +0x17e0, 0x17e9, +0x1810, 0x1819, +0x1946, 0x194f, +0x19d0, 0x19d9, +0x1a80, 0x1a89, +0x1a90, 0x1a99, +0x1b50, 0x1b59, +0x1bb0, 0x1bb9, +0x1c40, 0x1c49, +0x1c50, 0x1c59, +0xa620, 0xa629, +0xa8d0, 0xa8d9, +0xa900, 0xa909, +0xa9d0, 0xa9d9, +0xa9f0, 0xa9f9, +0xaa50, 0xaa59, +0xabf0, 0xabf9, +0xff10, 0xff19, +0x104a0, 0x104a9, +0x10d30, 0x10d39, +0x10d40, 0x10d49, +0x11066, 0x1106f, +0x110f0, 0x110f9, +0x11136, 0x1113f, +0x111d0, 0x111d9, +0x112f0, 0x112f9, +0x11450, 0x11459, +0x114d0, 0x114d9, +0x11650, 0x11659, +0x116c0, 0x116c9, +0x116d0, 0x116e3, +0x11730, 0x11739, +0x118e0, 0x118e9, +0x11950, 0x11959, +0x11bf0, 0x11bf9, +0x11c50, 0x11c59, +0x11d50, 0x11d59, +0x11da0, 0x11da9, +0x11f50, 0x11f59, +0x16130, 0x16139, +0x16a60, 0x16a69, +0x16ac0, 0x16ac9, +0x16b50, 0x16b59, +0x16d70, 0x16d79, +0x1ccf0, 0x1ccf9, +0x1d7ce, 0x1d7ff, +0x1e140, 0x1e149, +0x1e2f0, 0x1e2f9, +0x1e4f0, 0x1e4f9, +0x1e5f1, 0x1e5fa, +0x1e950, 0x1e959, +0x1fbf0, 0x1fbf9, +}; /* END of CR_Digit */ + +/* PROPERTY: 'Graph': POSIX [[:Graph:]] */ +static const OnigCodePoint +CR_Graph[] = { 737, +0x0021, 0x007e, +0x00a1, 0x0377, +0x037a, 0x037f, +0x0384, 0x038a, +0x038c, 0x038c, +0x038e, 0x03a1, +0x03a3, 0x052f, +0x0531, 0x0556, +0x0559, 0x058a, +0x058d, 0x058f, +0x0591, 0x05c7, +0x05d0, 0x05ea, +0x05ef, 0x05f4, +0x0600, 0x070d, +0x070f, 0x074a, +0x074d, 0x07b1, +0x07c0, 0x07fa, +0x07fd, 0x082d, +0x0830, 0x083e, +0x0840, 0x085b, +0x085e, 0x085e, +0x0860, 0x086a, +0x0870, 0x088e, +0x0890, 0x0891, +0x0897, 0x0983, +0x0985, 0x098c, +0x098f, 0x0990, +0x0993, 0x09a8, +0x09aa, 0x09b0, +0x09b2, 0x09b2, +0x09b6, 0x09b9, +0x09bc, 0x09c4, +0x09c7, 0x09c8, +0x09cb, 0x09ce, +0x09d7, 0x09d7, +0x09dc, 0x09dd, +0x09df, 0x09e3, +0x09e6, 0x09fe, +0x0a01, 0x0a03, +0x0a05, 0x0a0a, +0x0a0f, 0x0a10, +0x0a13, 0x0a28, +0x0a2a, 0x0a30, +0x0a32, 0x0a33, +0x0a35, 0x0a36, +0x0a38, 0x0a39, +0x0a3c, 0x0a3c, +0x0a3e, 0x0a42, +0x0a47, 0x0a48, +0x0a4b, 0x0a4d, +0x0a51, 0x0a51, +0x0a59, 0x0a5c, +0x0a5e, 0x0a5e, +0x0a66, 0x0a76, +0x0a81, 0x0a83, +0x0a85, 0x0a8d, +0x0a8f, 0x0a91, +0x0a93, 0x0aa8, +0x0aaa, 0x0ab0, +0x0ab2, 0x0ab3, +0x0ab5, 0x0ab9, +0x0abc, 0x0ac5, +0x0ac7, 0x0ac9, +0x0acb, 0x0acd, +0x0ad0, 0x0ad0, +0x0ae0, 0x0ae3, +0x0ae6, 0x0af1, +0x0af9, 0x0aff, +0x0b01, 0x0b03, +0x0b05, 0x0b0c, +0x0b0f, 0x0b10, +0x0b13, 0x0b28, +0x0b2a, 0x0b30, +0x0b32, 0x0b33, +0x0b35, 0x0b39, +0x0b3c, 0x0b44, +0x0b47, 0x0b48, +0x0b4b, 0x0b4d, +0x0b55, 0x0b57, +0x0b5c, 0x0b5d, +0x0b5f, 0x0b63, +0x0b66, 0x0b77, +0x0b82, 0x0b83, +0x0b85, 0x0b8a, +0x0b8e, 0x0b90, +0x0b92, 0x0b95, +0x0b99, 0x0b9a, +0x0b9c, 0x0b9c, +0x0b9e, 0x0b9f, +0x0ba3, 0x0ba4, +0x0ba8, 0x0baa, +0x0bae, 0x0bb9, +0x0bbe, 0x0bc2, +0x0bc6, 0x0bc8, +0x0bca, 0x0bcd, +0x0bd0, 0x0bd0, +0x0bd7, 0x0bd7, +0x0be6, 0x0bfa, +0x0c00, 0x0c0c, +0x0c0e, 0x0c10, +0x0c12, 0x0c28, +0x0c2a, 0x0c39, +0x0c3c, 0x0c44, +0x0c46, 0x0c48, +0x0c4a, 0x0c4d, +0x0c55, 0x0c56, +0x0c58, 0x0c5a, +0x0c5d, 0x0c5d, +0x0c60, 0x0c63, +0x0c66, 0x0c6f, +0x0c77, 0x0c8c, +0x0c8e, 0x0c90, +0x0c92, 0x0ca8, +0x0caa, 0x0cb3, +0x0cb5, 0x0cb9, +0x0cbc, 0x0cc4, +0x0cc6, 0x0cc8, +0x0cca, 0x0ccd, +0x0cd5, 0x0cd6, +0x0cdd, 0x0cde, +0x0ce0, 0x0ce3, +0x0ce6, 0x0cef, +0x0cf1, 0x0cf3, +0x0d00, 0x0d0c, +0x0d0e, 0x0d10, +0x0d12, 0x0d44, +0x0d46, 0x0d48, +0x0d4a, 0x0d4f, +0x0d54, 0x0d63, +0x0d66, 0x0d7f, +0x0d81, 0x0d83, +0x0d85, 0x0d96, +0x0d9a, 0x0db1, +0x0db3, 0x0dbb, +0x0dbd, 0x0dbd, +0x0dc0, 0x0dc6, +0x0dca, 0x0dca, +0x0dcf, 0x0dd4, +0x0dd6, 0x0dd6, +0x0dd8, 0x0ddf, +0x0de6, 0x0def, +0x0df2, 0x0df4, +0x0e01, 0x0e3a, +0x0e3f, 0x0e5b, +0x0e81, 0x0e82, +0x0e84, 0x0e84, +0x0e86, 0x0e8a, +0x0e8c, 0x0ea3, +0x0ea5, 0x0ea5, +0x0ea7, 0x0ebd, +0x0ec0, 0x0ec4, +0x0ec6, 0x0ec6, +0x0ec8, 0x0ece, +0x0ed0, 0x0ed9, +0x0edc, 0x0edf, +0x0f00, 0x0f47, +0x0f49, 0x0f6c, +0x0f71, 0x0f97, +0x0f99, 0x0fbc, +0x0fbe, 0x0fcc, +0x0fce, 0x0fda, +0x1000, 0x10c5, +0x10c7, 0x10c7, +0x10cd, 0x10cd, +0x10d0, 0x1248, +0x124a, 0x124d, +0x1250, 0x1256, +0x1258, 0x1258, +0x125a, 0x125d, +0x1260, 0x1288, +0x128a, 0x128d, +0x1290, 0x12b0, +0x12b2, 0x12b5, +0x12b8, 0x12be, +0x12c0, 0x12c0, +0x12c2, 0x12c5, +0x12c8, 0x12d6, +0x12d8, 0x1310, +0x1312, 0x1315, +0x1318, 0x135a, +0x135d, 0x137c, +0x1380, 0x1399, +0x13a0, 0x13f5, +0x13f8, 0x13fd, +0x1400, 0x167f, +0x1681, 0x169c, +0x16a0, 0x16f8, +0x1700, 0x1715, +0x171f, 0x1736, +0x1740, 0x1753, +0x1760, 0x176c, +0x176e, 0x1770, +0x1772, 0x1773, +0x1780, 0x17dd, +0x17e0, 0x17e9, +0x17f0, 0x17f9, +0x1800, 0x1819, +0x1820, 0x1878, +0x1880, 0x18aa, +0x18b0, 0x18f5, +0x1900, 0x191e, +0x1920, 0x192b, +0x1930, 0x193b, +0x1940, 0x1940, +0x1944, 0x196d, +0x1970, 0x1974, +0x1980, 0x19ab, +0x19b0, 0x19c9, +0x19d0, 0x19da, +0x19de, 0x1a1b, +0x1a1e, 0x1a5e, +0x1a60, 0x1a7c, +0x1a7f, 0x1a89, +0x1a90, 0x1a99, +0x1aa0, 0x1aad, +0x1ab0, 0x1ace, +0x1b00, 0x1b4c, +0x1b4e, 0x1bf3, +0x1bfc, 0x1c37, +0x1c3b, 0x1c49, +0x1c4d, 0x1c8a, +0x1c90, 0x1cba, +0x1cbd, 0x1cc7, +0x1cd0, 0x1cfa, +0x1d00, 0x1f15, +0x1f18, 0x1f1d, +0x1f20, 0x1f45, +0x1f48, 0x1f4d, +0x1f50, 0x1f57, +0x1f59, 0x1f59, +0x1f5b, 0x1f5b, +0x1f5d, 0x1f5d, +0x1f5f, 0x1f7d, +0x1f80, 0x1fb4, +0x1fb6, 0x1fc4, +0x1fc6, 0x1fd3, +0x1fd6, 0x1fdb, +0x1fdd, 0x1fef, +0x1ff2, 0x1ff4, +0x1ff6, 0x1ffe, +0x200b, 0x2027, +0x202a, 0x202e, +0x2030, 0x205e, +0x2060, 0x2064, +0x2066, 0x2071, +0x2074, 0x208e, +0x2090, 0x209c, +0x20a0, 0x20c0, +0x20d0, 0x20f0, +0x2100, 0x218b, +0x2190, 0x2429, +0x2440, 0x244a, +0x2460, 0x2b73, +0x2b76, 0x2b95, +0x2b97, 0x2cf3, +0x2cf9, 0x2d25, +0x2d27, 0x2d27, +0x2d2d, 0x2d2d, +0x2d30, 0x2d67, +0x2d6f, 0x2d70, +0x2d7f, 0x2d96, +0x2da0, 0x2da6, +0x2da8, 0x2dae, +0x2db0, 0x2db6, +0x2db8, 0x2dbe, +0x2dc0, 0x2dc6, +0x2dc8, 0x2dce, +0x2dd0, 0x2dd6, +0x2dd8, 0x2dde, +0x2de0, 0x2e5d, +0x2e80, 0x2e99, +0x2e9b, 0x2ef3, +0x2f00, 0x2fd5, +0x2ff0, 0x2fff, +0x3001, 0x303f, +0x3041, 0x3096, +0x3099, 0x30ff, +0x3105, 0x312f, +0x3131, 0x318e, +0x3190, 0x31e5, +0x31ef, 0x321e, +0x3220, 0xa48c, +0xa490, 0xa4c6, +0xa4d0, 0xa62b, +0xa640, 0xa6f7, +0xa700, 0xa7cd, +0xa7d0, 0xa7d1, +0xa7d3, 0xa7d3, +0xa7d5, 0xa7dc, +0xa7f2, 0xa82c, +0xa830, 0xa839, +0xa840, 0xa877, +0xa880, 0xa8c5, +0xa8ce, 0xa8d9, +0xa8e0, 0xa953, +0xa95f, 0xa97c, +0xa980, 0xa9cd, +0xa9cf, 0xa9d9, +0xa9de, 0xa9fe, +0xaa00, 0xaa36, +0xaa40, 0xaa4d, +0xaa50, 0xaa59, +0xaa5c, 0xaac2, +0xaadb, 0xaaf6, +0xab01, 0xab06, +0xab09, 0xab0e, +0xab11, 0xab16, +0xab20, 0xab26, +0xab28, 0xab2e, +0xab30, 0xab6b, +0xab70, 0xabed, +0xabf0, 0xabf9, +0xac00, 0xd7a3, +0xd7b0, 0xd7c6, +0xd7cb, 0xd7fb, +0xe000, 0xfa6d, +0xfa70, 0xfad9, +0xfb00, 0xfb06, +0xfb13, 0xfb17, +0xfb1d, 0xfb36, +0xfb38, 0xfb3c, +0xfb3e, 0xfb3e, +0xfb40, 0xfb41, +0xfb43, 0xfb44, +0xfb46, 0xfbc2, +0xfbd3, 0xfd8f, +0xfd92, 0xfdc7, +0xfdcf, 0xfdcf, +0xfdf0, 0xfe19, +0xfe20, 0xfe52, +0xfe54, 0xfe66, +0xfe68, 0xfe6b, +0xfe70, 0xfe74, +0xfe76, 0xfefc, +0xfeff, 0xfeff, +0xff01, 0xffbe, +0xffc2, 0xffc7, +0xffca, 0xffcf, +0xffd2, 0xffd7, +0xffda, 0xffdc, +0xffe0, 0xffe6, +0xffe8, 0xffee, +0xfff9, 0xfffd, +0x10000, 0x1000b, +0x1000d, 0x10026, +0x10028, 0x1003a, +0x1003c, 0x1003d, +0x1003f, 0x1004d, +0x10050, 0x1005d, +0x10080, 0x100fa, +0x10100, 0x10102, +0x10107, 0x10133, +0x10137, 0x1018e, +0x10190, 0x1019c, +0x101a0, 0x101a0, +0x101d0, 0x101fd, +0x10280, 0x1029c, +0x102a0, 0x102d0, +0x102e0, 0x102fb, +0x10300, 0x10323, +0x1032d, 0x1034a, +0x10350, 0x1037a, +0x10380, 0x1039d, +0x1039f, 0x103c3, +0x103c8, 0x103d5, +0x10400, 0x1049d, +0x104a0, 0x104a9, +0x104b0, 0x104d3, +0x104d8, 0x104fb, +0x10500, 0x10527, +0x10530, 0x10563, +0x1056f, 0x1057a, +0x1057c, 0x1058a, +0x1058c, 0x10592, +0x10594, 0x10595, +0x10597, 0x105a1, +0x105a3, 0x105b1, +0x105b3, 0x105b9, +0x105bb, 0x105bc, +0x105c0, 0x105f3, +0x10600, 0x10736, +0x10740, 0x10755, +0x10760, 0x10767, +0x10780, 0x10785, +0x10787, 0x107b0, +0x107b2, 0x107ba, +0x10800, 0x10805, +0x10808, 0x10808, +0x1080a, 0x10835, +0x10837, 0x10838, +0x1083c, 0x1083c, +0x1083f, 0x10855, +0x10857, 0x1089e, +0x108a7, 0x108af, +0x108e0, 0x108f2, +0x108f4, 0x108f5, +0x108fb, 0x1091b, +0x1091f, 0x10939, +0x1093f, 0x1093f, +0x10980, 0x109b7, +0x109bc, 0x109cf, +0x109d2, 0x10a03, +0x10a05, 0x10a06, +0x10a0c, 0x10a13, +0x10a15, 0x10a17, +0x10a19, 0x10a35, +0x10a38, 0x10a3a, +0x10a3f, 0x10a48, +0x10a50, 0x10a58, +0x10a60, 0x10a9f, +0x10ac0, 0x10ae6, +0x10aeb, 0x10af6, +0x10b00, 0x10b35, +0x10b39, 0x10b55, +0x10b58, 0x10b72, +0x10b78, 0x10b91, +0x10b99, 0x10b9c, +0x10ba9, 0x10baf, +0x10c00, 0x10c48, +0x10c80, 0x10cb2, +0x10cc0, 0x10cf2, +0x10cfa, 0x10d27, +0x10d30, 0x10d39, +0x10d40, 0x10d65, +0x10d69, 0x10d85, +0x10d8e, 0x10d8f, +0x10e60, 0x10e7e, +0x10e80, 0x10ea9, +0x10eab, 0x10ead, +0x10eb0, 0x10eb1, +0x10ec2, 0x10ec4, +0x10efc, 0x10f27, +0x10f30, 0x10f59, +0x10f70, 0x10f89, +0x10fb0, 0x10fcb, +0x10fe0, 0x10ff6, +0x11000, 0x1104d, +0x11052, 0x11075, +0x1107f, 0x110c2, +0x110cd, 0x110cd, +0x110d0, 0x110e8, +0x110f0, 0x110f9, +0x11100, 0x11134, +0x11136, 0x11147, +0x11150, 0x11176, +0x11180, 0x111df, +0x111e1, 0x111f4, +0x11200, 0x11211, +0x11213, 0x11241, +0x11280, 0x11286, +0x11288, 0x11288, +0x1128a, 0x1128d, +0x1128f, 0x1129d, +0x1129f, 0x112a9, +0x112b0, 0x112ea, +0x112f0, 0x112f9, +0x11300, 0x11303, +0x11305, 0x1130c, +0x1130f, 0x11310, +0x11313, 0x11328, +0x1132a, 0x11330, +0x11332, 0x11333, +0x11335, 0x11339, +0x1133b, 0x11344, +0x11347, 0x11348, +0x1134b, 0x1134d, +0x11350, 0x11350, +0x11357, 0x11357, +0x1135d, 0x11363, +0x11366, 0x1136c, +0x11370, 0x11374, +0x11380, 0x11389, +0x1138b, 0x1138b, +0x1138e, 0x1138e, +0x11390, 0x113b5, +0x113b7, 0x113c0, +0x113c2, 0x113c2, +0x113c5, 0x113c5, +0x113c7, 0x113ca, +0x113cc, 0x113d5, +0x113d7, 0x113d8, +0x113e1, 0x113e2, +0x11400, 0x1145b, +0x1145d, 0x11461, +0x11480, 0x114c7, +0x114d0, 0x114d9, +0x11580, 0x115b5, +0x115b8, 0x115dd, +0x11600, 0x11644, +0x11650, 0x11659, +0x11660, 0x1166c, +0x11680, 0x116b9, +0x116c0, 0x116c9, +0x116d0, 0x116e3, +0x11700, 0x1171a, +0x1171d, 0x1172b, +0x11730, 0x11746, +0x11800, 0x1183b, +0x118a0, 0x118f2, +0x118ff, 0x11906, +0x11909, 0x11909, +0x1190c, 0x11913, +0x11915, 0x11916, +0x11918, 0x11935, +0x11937, 0x11938, +0x1193b, 0x11946, +0x11950, 0x11959, +0x119a0, 0x119a7, +0x119aa, 0x119d7, +0x119da, 0x119e4, +0x11a00, 0x11a47, +0x11a50, 0x11aa2, +0x11ab0, 0x11af8, +0x11b00, 0x11b09, +0x11bc0, 0x11be1, +0x11bf0, 0x11bf9, +0x11c00, 0x11c08, +0x11c0a, 0x11c36, +0x11c38, 0x11c45, +0x11c50, 0x11c6c, +0x11c70, 0x11c8f, +0x11c92, 0x11ca7, +0x11ca9, 0x11cb6, +0x11d00, 0x11d06, +0x11d08, 0x11d09, +0x11d0b, 0x11d36, +0x11d3a, 0x11d3a, +0x11d3c, 0x11d3d, +0x11d3f, 0x11d47, +0x11d50, 0x11d59, +0x11d60, 0x11d65, +0x11d67, 0x11d68, +0x11d6a, 0x11d8e, +0x11d90, 0x11d91, +0x11d93, 0x11d98, +0x11da0, 0x11da9, +0x11ee0, 0x11ef8, +0x11f00, 0x11f10, +0x11f12, 0x11f3a, +0x11f3e, 0x11f5a, +0x11fb0, 0x11fb0, +0x11fc0, 0x11ff1, +0x11fff, 0x12399, +0x12400, 0x1246e, +0x12470, 0x12474, +0x12480, 0x12543, +0x12f90, 0x12ff2, +0x13000, 0x13455, +0x13460, 0x143fa, +0x14400, 0x14646, +0x16100, 0x16139, +0x16800, 0x16a38, +0x16a40, 0x16a5e, +0x16a60, 0x16a69, +0x16a6e, 0x16abe, +0x16ac0, 0x16ac9, +0x16ad0, 0x16aed, +0x16af0, 0x16af5, +0x16b00, 0x16b45, +0x16b50, 0x16b59, +0x16b5b, 0x16b61, +0x16b63, 0x16b77, +0x16b7d, 0x16b8f, +0x16d40, 0x16d79, +0x16e40, 0x16e9a, +0x16f00, 0x16f4a, +0x16f4f, 0x16f87, +0x16f8f, 0x16f9f, +0x16fe0, 0x16fe4, +0x16ff0, 0x16ff1, +0x17000, 0x187f7, +0x18800, 0x18cd5, +0x18cff, 0x18d08, +0x1aff0, 0x1aff3, +0x1aff5, 0x1affb, +0x1affd, 0x1affe, +0x1b000, 0x1b122, +0x1b132, 0x1b132, +0x1b150, 0x1b152, +0x1b155, 0x1b155, +0x1b164, 0x1b167, +0x1b170, 0x1b2fb, +0x1bc00, 0x1bc6a, +0x1bc70, 0x1bc7c, +0x1bc80, 0x1bc88, +0x1bc90, 0x1bc99, +0x1bc9c, 0x1bca3, +0x1cc00, 0x1ccf9, +0x1cd00, 0x1ceb3, +0x1cf00, 0x1cf2d, +0x1cf30, 0x1cf46, +0x1cf50, 0x1cfc3, +0x1d000, 0x1d0f5, +0x1d100, 0x1d126, +0x1d129, 0x1d1ea, +0x1d200, 0x1d245, +0x1d2c0, 0x1d2d3, +0x1d2e0, 0x1d2f3, +0x1d300, 0x1d356, +0x1d360, 0x1d378, +0x1d400, 0x1d454, +0x1d456, 0x1d49c, +0x1d49e, 0x1d49f, +0x1d4a2, 0x1d4a2, +0x1d4a5, 0x1d4a6, +0x1d4a9, 0x1d4ac, +0x1d4ae, 0x1d4b9, +0x1d4bb, 0x1d4bb, +0x1d4bd, 0x1d4c3, +0x1d4c5, 0x1d505, +0x1d507, 0x1d50a, +0x1d50d, 0x1d514, +0x1d516, 0x1d51c, +0x1d51e, 0x1d539, +0x1d53b, 0x1d53e, +0x1d540, 0x1d544, +0x1d546, 0x1d546, +0x1d54a, 0x1d550, +0x1d552, 0x1d6a5, +0x1d6a8, 0x1d7cb, +0x1d7ce, 0x1da8b, +0x1da9b, 0x1da9f, +0x1daa1, 0x1daaf, +0x1df00, 0x1df1e, +0x1df25, 0x1df2a, +0x1e000, 0x1e006, +0x1e008, 0x1e018, +0x1e01b, 0x1e021, +0x1e023, 0x1e024, +0x1e026, 0x1e02a, +0x1e030, 0x1e06d, +0x1e08f, 0x1e08f, +0x1e100, 0x1e12c, +0x1e130, 0x1e13d, +0x1e140, 0x1e149, +0x1e14e, 0x1e14f, +0x1e290, 0x1e2ae, +0x1e2c0, 0x1e2f9, +0x1e2ff, 0x1e2ff, +0x1e4d0, 0x1e4f9, +0x1e5d0, 0x1e5fa, +0x1e5ff, 0x1e5ff, +0x1e7e0, 0x1e7e6, +0x1e7e8, 0x1e7eb, +0x1e7ed, 0x1e7ee, +0x1e7f0, 0x1e7fe, +0x1e800, 0x1e8c4, +0x1e8c7, 0x1e8d6, +0x1e900, 0x1e94b, +0x1e950, 0x1e959, +0x1e95e, 0x1e95f, +0x1ec71, 0x1ecb4, +0x1ed01, 0x1ed3d, +0x1ee00, 0x1ee03, +0x1ee05, 0x1ee1f, +0x1ee21, 0x1ee22, +0x1ee24, 0x1ee24, +0x1ee27, 0x1ee27, +0x1ee29, 0x1ee32, +0x1ee34, 0x1ee37, +0x1ee39, 0x1ee39, +0x1ee3b, 0x1ee3b, +0x1ee42, 0x1ee42, +0x1ee47, 0x1ee47, +0x1ee49, 0x1ee49, +0x1ee4b, 0x1ee4b, +0x1ee4d, 0x1ee4f, +0x1ee51, 0x1ee52, +0x1ee54, 0x1ee54, +0x1ee57, 0x1ee57, +0x1ee59, 0x1ee59, +0x1ee5b, 0x1ee5b, +0x1ee5d, 0x1ee5d, +0x1ee5f, 0x1ee5f, +0x1ee61, 0x1ee62, +0x1ee64, 0x1ee64, +0x1ee67, 0x1ee6a, +0x1ee6c, 0x1ee72, +0x1ee74, 0x1ee77, +0x1ee79, 0x1ee7c, +0x1ee7e, 0x1ee7e, +0x1ee80, 0x1ee89, +0x1ee8b, 0x1ee9b, +0x1eea1, 0x1eea3, +0x1eea5, 0x1eea9, +0x1eeab, 0x1eebb, +0x1eef0, 0x1eef1, +0x1f000, 0x1f02b, +0x1f030, 0x1f093, +0x1f0a0, 0x1f0ae, +0x1f0b1, 0x1f0bf, +0x1f0c1, 0x1f0cf, +0x1f0d1, 0x1f0f5, +0x1f100, 0x1f1ad, +0x1f1e6, 0x1f202, +0x1f210, 0x1f23b, +0x1f240, 0x1f248, +0x1f250, 0x1f251, +0x1f260, 0x1f265, +0x1f300, 0x1f6d7, +0x1f6dc, 0x1f6ec, +0x1f6f0, 0x1f6fc, +0x1f700, 0x1f776, +0x1f77b, 0x1f7d9, +0x1f7e0, 0x1f7eb, +0x1f7f0, 0x1f7f0, +0x1f800, 0x1f80b, +0x1f810, 0x1f847, +0x1f850, 0x1f859, +0x1f860, 0x1f887, +0x1f890, 0x1f8ad, +0x1f8b0, 0x1f8bb, +0x1f8c0, 0x1f8c1, +0x1f900, 0x1fa53, +0x1fa60, 0x1fa6d, +0x1fa70, 0x1fa7c, +0x1fa80, 0x1fa89, +0x1fa8f, 0x1fac6, +0x1face, 0x1fadc, +0x1fadf, 0x1fae9, +0x1faf0, 0x1faf8, +0x1fb00, 0x1fb92, +0x1fb94, 0x1fbf9, +0x20000, 0x2a6df, +0x2a700, 0x2b739, +0x2b740, 0x2b81d, +0x2b820, 0x2cea1, +0x2ceb0, 0x2ebe0, +0x2ebf0, 0x2ee5d, +0x2f800, 0x2fa1d, +0x30000, 0x3134a, +0x31350, 0x323af, +0xe0001, 0xe0001, +0xe0020, 0xe007f, +0xe0100, 0xe01ef, +0xf0000, 0xffffd, +0x100000, 0x10fffd, +}; /* END of CR_Graph */ + +/* PROPERTY: 'Lower': POSIX [[:Lower:]] */ +static const OnigCodePoint +CR_Lower[] = { 675, +0x0061, 0x007a, +0x00aa, 0x00aa, +0x00b5, 0x00b5, +0x00ba, 0x00ba, +0x00df, 0x00f6, +0x00f8, 0x00ff, +0x0101, 0x0101, +0x0103, 0x0103, +0x0105, 0x0105, +0x0107, 0x0107, +0x0109, 0x0109, +0x010b, 0x010b, +0x010d, 0x010d, +0x010f, 0x010f, +0x0111, 0x0111, +0x0113, 0x0113, +0x0115, 0x0115, +0x0117, 0x0117, +0x0119, 0x0119, +0x011b, 0x011b, +0x011d, 0x011d, +0x011f, 0x011f, +0x0121, 0x0121, +0x0123, 0x0123, +0x0125, 0x0125, +0x0127, 0x0127, +0x0129, 0x0129, +0x012b, 0x012b, +0x012d, 0x012d, +0x012f, 0x012f, +0x0131, 0x0131, +0x0133, 0x0133, +0x0135, 0x0135, +0x0137, 0x0138, +0x013a, 0x013a, +0x013c, 0x013c, +0x013e, 0x013e, +0x0140, 0x0140, +0x0142, 0x0142, +0x0144, 0x0144, +0x0146, 0x0146, +0x0148, 0x0149, +0x014b, 0x014b, +0x014d, 0x014d, +0x014f, 0x014f, +0x0151, 0x0151, +0x0153, 0x0153, +0x0155, 0x0155, +0x0157, 0x0157, +0x0159, 0x0159, +0x015b, 0x015b, +0x015d, 0x015d, +0x015f, 0x015f, +0x0161, 0x0161, +0x0163, 0x0163, +0x0165, 0x0165, +0x0167, 0x0167, +0x0169, 0x0169, +0x016b, 0x016b, +0x016d, 0x016d, +0x016f, 0x016f, +0x0171, 0x0171, +0x0173, 0x0173, +0x0175, 0x0175, +0x0177, 0x0177, +0x017a, 0x017a, +0x017c, 0x017c, +0x017e, 0x0180, +0x0183, 0x0183, +0x0185, 0x0185, +0x0188, 0x0188, +0x018c, 0x018d, +0x0192, 0x0192, +0x0195, 0x0195, +0x0199, 0x019b, +0x019e, 0x019e, +0x01a1, 0x01a1, +0x01a3, 0x01a3, +0x01a5, 0x01a5, +0x01a8, 0x01a8, +0x01aa, 0x01ab, +0x01ad, 0x01ad, +0x01b0, 0x01b0, +0x01b4, 0x01b4, +0x01b6, 0x01b6, +0x01b9, 0x01ba, +0x01bd, 0x01bf, +0x01c6, 0x01c6, +0x01c9, 0x01c9, +0x01cc, 0x01cc, +0x01ce, 0x01ce, +0x01d0, 0x01d0, +0x01d2, 0x01d2, +0x01d4, 0x01d4, +0x01d6, 0x01d6, +0x01d8, 0x01d8, +0x01da, 0x01da, +0x01dc, 0x01dd, +0x01df, 0x01df, +0x01e1, 0x01e1, +0x01e3, 0x01e3, +0x01e5, 0x01e5, +0x01e7, 0x01e7, +0x01e9, 0x01e9, +0x01eb, 0x01eb, +0x01ed, 0x01ed, +0x01ef, 0x01f0, +0x01f3, 0x01f3, +0x01f5, 0x01f5, +0x01f9, 0x01f9, +0x01fb, 0x01fb, +0x01fd, 0x01fd, +0x01ff, 0x01ff, +0x0201, 0x0201, +0x0203, 0x0203, +0x0205, 0x0205, +0x0207, 0x0207, +0x0209, 0x0209, +0x020b, 0x020b, +0x020d, 0x020d, +0x020f, 0x020f, +0x0211, 0x0211, +0x0213, 0x0213, +0x0215, 0x0215, +0x0217, 0x0217, +0x0219, 0x0219, +0x021b, 0x021b, +0x021d, 0x021d, +0x021f, 0x021f, +0x0221, 0x0221, +0x0223, 0x0223, +0x0225, 0x0225, +0x0227, 0x0227, +0x0229, 0x0229, +0x022b, 0x022b, +0x022d, 0x022d, +0x022f, 0x022f, +0x0231, 0x0231, +0x0233, 0x0239, +0x023c, 0x023c, +0x023f, 0x0240, +0x0242, 0x0242, +0x0247, 0x0247, +0x0249, 0x0249, +0x024b, 0x024b, +0x024d, 0x024d, +0x024f, 0x0293, +0x0295, 0x02b8, +0x02c0, 0x02c1, +0x02e0, 0x02e4, +0x0345, 0x0345, +0x0371, 0x0371, +0x0373, 0x0373, +0x0377, 0x0377, +0x037a, 0x037d, +0x0390, 0x0390, +0x03ac, 0x03ce, +0x03d0, 0x03d1, +0x03d5, 0x03d7, +0x03d9, 0x03d9, +0x03db, 0x03db, +0x03dd, 0x03dd, +0x03df, 0x03df, +0x03e1, 0x03e1, +0x03e3, 0x03e3, +0x03e5, 0x03e5, +0x03e7, 0x03e7, +0x03e9, 0x03e9, +0x03eb, 0x03eb, +0x03ed, 0x03ed, +0x03ef, 0x03f3, +0x03f5, 0x03f5, +0x03f8, 0x03f8, +0x03fb, 0x03fc, +0x0430, 0x045f, +0x0461, 0x0461, +0x0463, 0x0463, +0x0465, 0x0465, +0x0467, 0x0467, +0x0469, 0x0469, +0x046b, 0x046b, +0x046d, 0x046d, +0x046f, 0x046f, +0x0471, 0x0471, +0x0473, 0x0473, +0x0475, 0x0475, +0x0477, 0x0477, +0x0479, 0x0479, +0x047b, 0x047b, +0x047d, 0x047d, +0x047f, 0x047f, +0x0481, 0x0481, +0x048b, 0x048b, +0x048d, 0x048d, +0x048f, 0x048f, +0x0491, 0x0491, +0x0493, 0x0493, +0x0495, 0x0495, +0x0497, 0x0497, +0x0499, 0x0499, +0x049b, 0x049b, +0x049d, 0x049d, +0x049f, 0x049f, +0x04a1, 0x04a1, +0x04a3, 0x04a3, +0x04a5, 0x04a5, +0x04a7, 0x04a7, +0x04a9, 0x04a9, +0x04ab, 0x04ab, +0x04ad, 0x04ad, +0x04af, 0x04af, +0x04b1, 0x04b1, +0x04b3, 0x04b3, +0x04b5, 0x04b5, +0x04b7, 0x04b7, +0x04b9, 0x04b9, +0x04bb, 0x04bb, +0x04bd, 0x04bd, +0x04bf, 0x04bf, +0x04c2, 0x04c2, +0x04c4, 0x04c4, +0x04c6, 0x04c6, +0x04c8, 0x04c8, +0x04ca, 0x04ca, +0x04cc, 0x04cc, +0x04ce, 0x04cf, +0x04d1, 0x04d1, +0x04d3, 0x04d3, +0x04d5, 0x04d5, +0x04d7, 0x04d7, +0x04d9, 0x04d9, +0x04db, 0x04db, +0x04dd, 0x04dd, +0x04df, 0x04df, +0x04e1, 0x04e1, +0x04e3, 0x04e3, +0x04e5, 0x04e5, +0x04e7, 0x04e7, +0x04e9, 0x04e9, +0x04eb, 0x04eb, +0x04ed, 0x04ed, +0x04ef, 0x04ef, +0x04f1, 0x04f1, +0x04f3, 0x04f3, +0x04f5, 0x04f5, +0x04f7, 0x04f7, +0x04f9, 0x04f9, +0x04fb, 0x04fb, +0x04fd, 0x04fd, +0x04ff, 0x04ff, +0x0501, 0x0501, +0x0503, 0x0503, +0x0505, 0x0505, +0x0507, 0x0507, +0x0509, 0x0509, +0x050b, 0x050b, +0x050d, 0x050d, +0x050f, 0x050f, +0x0511, 0x0511, +0x0513, 0x0513, +0x0515, 0x0515, +0x0517, 0x0517, +0x0519, 0x0519, +0x051b, 0x051b, +0x051d, 0x051d, +0x051f, 0x051f, +0x0521, 0x0521, +0x0523, 0x0523, +0x0525, 0x0525, +0x0527, 0x0527, +0x0529, 0x0529, +0x052b, 0x052b, +0x052d, 0x052d, +0x052f, 0x052f, +0x0560, 0x0588, +0x10d0, 0x10fa, +0x10fc, 0x10ff, +0x13f8, 0x13fd, +0x1c80, 0x1c88, +0x1c8a, 0x1c8a, +0x1d00, 0x1dbf, +0x1e01, 0x1e01, +0x1e03, 0x1e03, +0x1e05, 0x1e05, +0x1e07, 0x1e07, +0x1e09, 0x1e09, +0x1e0b, 0x1e0b, +0x1e0d, 0x1e0d, +0x1e0f, 0x1e0f, +0x1e11, 0x1e11, +0x1e13, 0x1e13, +0x1e15, 0x1e15, +0x1e17, 0x1e17, +0x1e19, 0x1e19, +0x1e1b, 0x1e1b, +0x1e1d, 0x1e1d, +0x1e1f, 0x1e1f, +0x1e21, 0x1e21, +0x1e23, 0x1e23, +0x1e25, 0x1e25, +0x1e27, 0x1e27, +0x1e29, 0x1e29, +0x1e2b, 0x1e2b, +0x1e2d, 0x1e2d, +0x1e2f, 0x1e2f, +0x1e31, 0x1e31, +0x1e33, 0x1e33, +0x1e35, 0x1e35, +0x1e37, 0x1e37, +0x1e39, 0x1e39, +0x1e3b, 0x1e3b, +0x1e3d, 0x1e3d, +0x1e3f, 0x1e3f, +0x1e41, 0x1e41, +0x1e43, 0x1e43, +0x1e45, 0x1e45, +0x1e47, 0x1e47, +0x1e49, 0x1e49, +0x1e4b, 0x1e4b, +0x1e4d, 0x1e4d, +0x1e4f, 0x1e4f, +0x1e51, 0x1e51, +0x1e53, 0x1e53, +0x1e55, 0x1e55, +0x1e57, 0x1e57, +0x1e59, 0x1e59, +0x1e5b, 0x1e5b, +0x1e5d, 0x1e5d, +0x1e5f, 0x1e5f, +0x1e61, 0x1e61, +0x1e63, 0x1e63, +0x1e65, 0x1e65, +0x1e67, 0x1e67, +0x1e69, 0x1e69, +0x1e6b, 0x1e6b, +0x1e6d, 0x1e6d, +0x1e6f, 0x1e6f, +0x1e71, 0x1e71, +0x1e73, 0x1e73, +0x1e75, 0x1e75, +0x1e77, 0x1e77, +0x1e79, 0x1e79, +0x1e7b, 0x1e7b, +0x1e7d, 0x1e7d, +0x1e7f, 0x1e7f, +0x1e81, 0x1e81, +0x1e83, 0x1e83, +0x1e85, 0x1e85, +0x1e87, 0x1e87, +0x1e89, 0x1e89, +0x1e8b, 0x1e8b, +0x1e8d, 0x1e8d, +0x1e8f, 0x1e8f, +0x1e91, 0x1e91, +0x1e93, 0x1e93, +0x1e95, 0x1e9d, +0x1e9f, 0x1e9f, +0x1ea1, 0x1ea1, +0x1ea3, 0x1ea3, +0x1ea5, 0x1ea5, +0x1ea7, 0x1ea7, +0x1ea9, 0x1ea9, +0x1eab, 0x1eab, +0x1ead, 0x1ead, +0x1eaf, 0x1eaf, +0x1eb1, 0x1eb1, +0x1eb3, 0x1eb3, +0x1eb5, 0x1eb5, +0x1eb7, 0x1eb7, +0x1eb9, 0x1eb9, +0x1ebb, 0x1ebb, +0x1ebd, 0x1ebd, +0x1ebf, 0x1ebf, +0x1ec1, 0x1ec1, +0x1ec3, 0x1ec3, +0x1ec5, 0x1ec5, +0x1ec7, 0x1ec7, +0x1ec9, 0x1ec9, +0x1ecb, 0x1ecb, +0x1ecd, 0x1ecd, +0x1ecf, 0x1ecf, +0x1ed1, 0x1ed1, +0x1ed3, 0x1ed3, +0x1ed5, 0x1ed5, +0x1ed7, 0x1ed7, +0x1ed9, 0x1ed9, +0x1edb, 0x1edb, +0x1edd, 0x1edd, +0x1edf, 0x1edf, +0x1ee1, 0x1ee1, +0x1ee3, 0x1ee3, +0x1ee5, 0x1ee5, +0x1ee7, 0x1ee7, +0x1ee9, 0x1ee9, +0x1eeb, 0x1eeb, +0x1eed, 0x1eed, +0x1eef, 0x1eef, +0x1ef1, 0x1ef1, +0x1ef3, 0x1ef3, +0x1ef5, 0x1ef5, +0x1ef7, 0x1ef7, +0x1ef9, 0x1ef9, +0x1efb, 0x1efb, +0x1efd, 0x1efd, +0x1eff, 0x1f07, +0x1f10, 0x1f15, +0x1f20, 0x1f27, +0x1f30, 0x1f37, +0x1f40, 0x1f45, +0x1f50, 0x1f57, +0x1f60, 0x1f67, +0x1f70, 0x1f7d, +0x1f80, 0x1f87, +0x1f90, 0x1f97, +0x1fa0, 0x1fa7, +0x1fb0, 0x1fb4, +0x1fb6, 0x1fb7, +0x1fbe, 0x1fbe, +0x1fc2, 0x1fc4, +0x1fc6, 0x1fc7, +0x1fd0, 0x1fd3, +0x1fd6, 0x1fd7, +0x1fe0, 0x1fe7, +0x1ff2, 0x1ff4, +0x1ff6, 0x1ff7, +0x2071, 0x2071, +0x207f, 0x207f, +0x2090, 0x209c, +0x210a, 0x210a, +0x210e, 0x210f, +0x2113, 0x2113, +0x212f, 0x212f, +0x2134, 0x2134, +0x2139, 0x2139, +0x213c, 0x213d, +0x2146, 0x2149, +0x214e, 0x214e, +0x2170, 0x217f, +0x2184, 0x2184, +0x24d0, 0x24e9, +0x2c30, 0x2c5f, +0x2c61, 0x2c61, +0x2c65, 0x2c66, +0x2c68, 0x2c68, +0x2c6a, 0x2c6a, +0x2c6c, 0x2c6c, +0x2c71, 0x2c71, +0x2c73, 0x2c74, +0x2c76, 0x2c7d, +0x2c81, 0x2c81, +0x2c83, 0x2c83, +0x2c85, 0x2c85, +0x2c87, 0x2c87, +0x2c89, 0x2c89, +0x2c8b, 0x2c8b, +0x2c8d, 0x2c8d, +0x2c8f, 0x2c8f, +0x2c91, 0x2c91, +0x2c93, 0x2c93, +0x2c95, 0x2c95, +0x2c97, 0x2c97, +0x2c99, 0x2c99, +0x2c9b, 0x2c9b, +0x2c9d, 0x2c9d, +0x2c9f, 0x2c9f, +0x2ca1, 0x2ca1, +0x2ca3, 0x2ca3, +0x2ca5, 0x2ca5, +0x2ca7, 0x2ca7, +0x2ca9, 0x2ca9, +0x2cab, 0x2cab, +0x2cad, 0x2cad, +0x2caf, 0x2caf, +0x2cb1, 0x2cb1, +0x2cb3, 0x2cb3, +0x2cb5, 0x2cb5, +0x2cb7, 0x2cb7, +0x2cb9, 0x2cb9, +0x2cbb, 0x2cbb, +0x2cbd, 0x2cbd, +0x2cbf, 0x2cbf, +0x2cc1, 0x2cc1, +0x2cc3, 0x2cc3, +0x2cc5, 0x2cc5, +0x2cc7, 0x2cc7, +0x2cc9, 0x2cc9, +0x2ccb, 0x2ccb, +0x2ccd, 0x2ccd, +0x2ccf, 0x2ccf, +0x2cd1, 0x2cd1, +0x2cd3, 0x2cd3, +0x2cd5, 0x2cd5, +0x2cd7, 0x2cd7, +0x2cd9, 0x2cd9, +0x2cdb, 0x2cdb, +0x2cdd, 0x2cdd, +0x2cdf, 0x2cdf, +0x2ce1, 0x2ce1, +0x2ce3, 0x2ce4, +0x2cec, 0x2cec, +0x2cee, 0x2cee, +0x2cf3, 0x2cf3, +0x2d00, 0x2d25, +0x2d27, 0x2d27, +0x2d2d, 0x2d2d, +0xa641, 0xa641, +0xa643, 0xa643, +0xa645, 0xa645, +0xa647, 0xa647, +0xa649, 0xa649, +0xa64b, 0xa64b, +0xa64d, 0xa64d, +0xa64f, 0xa64f, +0xa651, 0xa651, +0xa653, 0xa653, +0xa655, 0xa655, +0xa657, 0xa657, +0xa659, 0xa659, +0xa65b, 0xa65b, +0xa65d, 0xa65d, +0xa65f, 0xa65f, +0xa661, 0xa661, +0xa663, 0xa663, +0xa665, 0xa665, +0xa667, 0xa667, +0xa669, 0xa669, +0xa66b, 0xa66b, +0xa66d, 0xa66d, +0xa681, 0xa681, +0xa683, 0xa683, +0xa685, 0xa685, +0xa687, 0xa687, +0xa689, 0xa689, +0xa68b, 0xa68b, +0xa68d, 0xa68d, +0xa68f, 0xa68f, +0xa691, 0xa691, +0xa693, 0xa693, +0xa695, 0xa695, +0xa697, 0xa697, +0xa699, 0xa699, +0xa69b, 0xa69d, +0xa723, 0xa723, +0xa725, 0xa725, +0xa727, 0xa727, +0xa729, 0xa729, +0xa72b, 0xa72b, +0xa72d, 0xa72d, +0xa72f, 0xa731, +0xa733, 0xa733, +0xa735, 0xa735, +0xa737, 0xa737, +0xa739, 0xa739, +0xa73b, 0xa73b, +0xa73d, 0xa73d, +0xa73f, 0xa73f, +0xa741, 0xa741, +0xa743, 0xa743, +0xa745, 0xa745, +0xa747, 0xa747, +0xa749, 0xa749, +0xa74b, 0xa74b, +0xa74d, 0xa74d, +0xa74f, 0xa74f, +0xa751, 0xa751, +0xa753, 0xa753, +0xa755, 0xa755, +0xa757, 0xa757, +0xa759, 0xa759, +0xa75b, 0xa75b, +0xa75d, 0xa75d, +0xa75f, 0xa75f, +0xa761, 0xa761, +0xa763, 0xa763, +0xa765, 0xa765, +0xa767, 0xa767, +0xa769, 0xa769, +0xa76b, 0xa76b, +0xa76d, 0xa76d, +0xa76f, 0xa778, +0xa77a, 0xa77a, +0xa77c, 0xa77c, +0xa77f, 0xa77f, +0xa781, 0xa781, +0xa783, 0xa783, +0xa785, 0xa785, +0xa787, 0xa787, +0xa78c, 0xa78c, +0xa78e, 0xa78e, +0xa791, 0xa791, +0xa793, 0xa795, +0xa797, 0xa797, +0xa799, 0xa799, +0xa79b, 0xa79b, +0xa79d, 0xa79d, +0xa79f, 0xa79f, +0xa7a1, 0xa7a1, +0xa7a3, 0xa7a3, +0xa7a5, 0xa7a5, +0xa7a7, 0xa7a7, +0xa7a9, 0xa7a9, +0xa7af, 0xa7af, +0xa7b5, 0xa7b5, +0xa7b7, 0xa7b7, +0xa7b9, 0xa7b9, +0xa7bb, 0xa7bb, +0xa7bd, 0xa7bd, +0xa7bf, 0xa7bf, +0xa7c1, 0xa7c1, +0xa7c3, 0xa7c3, +0xa7c8, 0xa7c8, +0xa7ca, 0xa7ca, +0xa7cd, 0xa7cd, +0xa7d1, 0xa7d1, +0xa7d3, 0xa7d3, +0xa7d5, 0xa7d5, +0xa7d7, 0xa7d7, +0xa7d9, 0xa7d9, +0xa7db, 0xa7db, +0xa7f2, 0xa7f4, +0xa7f6, 0xa7f6, +0xa7f8, 0xa7fa, +0xab30, 0xab5a, +0xab5c, 0xab69, +0xab70, 0xabbf, +0xfb00, 0xfb06, +0xfb13, 0xfb17, +0xff41, 0xff5a, +0x10428, 0x1044f, +0x104d8, 0x104fb, +0x10597, 0x105a1, +0x105a3, 0x105b1, +0x105b3, 0x105b9, +0x105bb, 0x105bc, +0x10780, 0x10780, +0x10783, 0x10785, +0x10787, 0x107b0, +0x107b2, 0x107ba, +0x10cc0, 0x10cf2, +0x10d70, 0x10d85, +0x118c0, 0x118df, +0x16e60, 0x16e7f, +0x1d41a, 0x1d433, +0x1d44e, 0x1d454, +0x1d456, 0x1d467, +0x1d482, 0x1d49b, +0x1d4b6, 0x1d4b9, +0x1d4bb, 0x1d4bb, +0x1d4bd, 0x1d4c3, +0x1d4c5, 0x1d4cf, +0x1d4ea, 0x1d503, +0x1d51e, 0x1d537, +0x1d552, 0x1d56b, +0x1d586, 0x1d59f, +0x1d5ba, 0x1d5d3, +0x1d5ee, 0x1d607, +0x1d622, 0x1d63b, +0x1d656, 0x1d66f, +0x1d68a, 0x1d6a5, +0x1d6c2, 0x1d6da, +0x1d6dc, 0x1d6e1, +0x1d6fc, 0x1d714, +0x1d716, 0x1d71b, +0x1d736, 0x1d74e, +0x1d750, 0x1d755, +0x1d770, 0x1d788, +0x1d78a, 0x1d78f, +0x1d7aa, 0x1d7c2, +0x1d7c4, 0x1d7c9, +0x1d7cb, 0x1d7cb, +0x1df00, 0x1df09, +0x1df0b, 0x1df1e, +0x1df25, 0x1df2a, +0x1e030, 0x1e06d, +0x1e922, 0x1e943, +}; /* END of CR_Lower */ + +/* PROPERTY: 'Print': POSIX [[:Print:]] */ +static const OnigCodePoint +CR_Print[] = { 733, +0x0020, 0x007e, +0x00a0, 0x0377, +0x037a, 0x037f, +0x0384, 0x038a, +0x038c, 0x038c, +0x038e, 0x03a1, +0x03a3, 0x052f, +0x0531, 0x0556, +0x0559, 0x058a, +0x058d, 0x058f, +0x0591, 0x05c7, +0x05d0, 0x05ea, +0x05ef, 0x05f4, +0x0600, 0x070d, +0x070f, 0x074a, +0x074d, 0x07b1, +0x07c0, 0x07fa, +0x07fd, 0x082d, +0x0830, 0x083e, +0x0840, 0x085b, +0x085e, 0x085e, +0x0860, 0x086a, +0x0870, 0x088e, +0x0890, 0x0891, +0x0897, 0x0983, +0x0985, 0x098c, +0x098f, 0x0990, +0x0993, 0x09a8, +0x09aa, 0x09b0, +0x09b2, 0x09b2, +0x09b6, 0x09b9, +0x09bc, 0x09c4, +0x09c7, 0x09c8, +0x09cb, 0x09ce, +0x09d7, 0x09d7, +0x09dc, 0x09dd, +0x09df, 0x09e3, +0x09e6, 0x09fe, +0x0a01, 0x0a03, +0x0a05, 0x0a0a, +0x0a0f, 0x0a10, +0x0a13, 0x0a28, +0x0a2a, 0x0a30, +0x0a32, 0x0a33, +0x0a35, 0x0a36, +0x0a38, 0x0a39, +0x0a3c, 0x0a3c, +0x0a3e, 0x0a42, +0x0a47, 0x0a48, +0x0a4b, 0x0a4d, +0x0a51, 0x0a51, +0x0a59, 0x0a5c, +0x0a5e, 0x0a5e, +0x0a66, 0x0a76, +0x0a81, 0x0a83, +0x0a85, 0x0a8d, +0x0a8f, 0x0a91, +0x0a93, 0x0aa8, +0x0aaa, 0x0ab0, +0x0ab2, 0x0ab3, +0x0ab5, 0x0ab9, +0x0abc, 0x0ac5, +0x0ac7, 0x0ac9, +0x0acb, 0x0acd, +0x0ad0, 0x0ad0, +0x0ae0, 0x0ae3, +0x0ae6, 0x0af1, +0x0af9, 0x0aff, +0x0b01, 0x0b03, +0x0b05, 0x0b0c, +0x0b0f, 0x0b10, +0x0b13, 0x0b28, +0x0b2a, 0x0b30, +0x0b32, 0x0b33, +0x0b35, 0x0b39, +0x0b3c, 0x0b44, +0x0b47, 0x0b48, +0x0b4b, 0x0b4d, +0x0b55, 0x0b57, +0x0b5c, 0x0b5d, +0x0b5f, 0x0b63, +0x0b66, 0x0b77, +0x0b82, 0x0b83, +0x0b85, 0x0b8a, +0x0b8e, 0x0b90, +0x0b92, 0x0b95, +0x0b99, 0x0b9a, +0x0b9c, 0x0b9c, +0x0b9e, 0x0b9f, +0x0ba3, 0x0ba4, +0x0ba8, 0x0baa, +0x0bae, 0x0bb9, +0x0bbe, 0x0bc2, +0x0bc6, 0x0bc8, +0x0bca, 0x0bcd, +0x0bd0, 0x0bd0, +0x0bd7, 0x0bd7, +0x0be6, 0x0bfa, +0x0c00, 0x0c0c, +0x0c0e, 0x0c10, +0x0c12, 0x0c28, +0x0c2a, 0x0c39, +0x0c3c, 0x0c44, +0x0c46, 0x0c48, +0x0c4a, 0x0c4d, +0x0c55, 0x0c56, +0x0c58, 0x0c5a, +0x0c5d, 0x0c5d, +0x0c60, 0x0c63, +0x0c66, 0x0c6f, +0x0c77, 0x0c8c, +0x0c8e, 0x0c90, +0x0c92, 0x0ca8, +0x0caa, 0x0cb3, +0x0cb5, 0x0cb9, +0x0cbc, 0x0cc4, +0x0cc6, 0x0cc8, +0x0cca, 0x0ccd, +0x0cd5, 0x0cd6, +0x0cdd, 0x0cde, +0x0ce0, 0x0ce3, +0x0ce6, 0x0cef, +0x0cf1, 0x0cf3, +0x0d00, 0x0d0c, +0x0d0e, 0x0d10, +0x0d12, 0x0d44, +0x0d46, 0x0d48, +0x0d4a, 0x0d4f, +0x0d54, 0x0d63, +0x0d66, 0x0d7f, +0x0d81, 0x0d83, +0x0d85, 0x0d96, +0x0d9a, 0x0db1, +0x0db3, 0x0dbb, +0x0dbd, 0x0dbd, +0x0dc0, 0x0dc6, +0x0dca, 0x0dca, +0x0dcf, 0x0dd4, +0x0dd6, 0x0dd6, +0x0dd8, 0x0ddf, +0x0de6, 0x0def, +0x0df2, 0x0df4, +0x0e01, 0x0e3a, +0x0e3f, 0x0e5b, +0x0e81, 0x0e82, +0x0e84, 0x0e84, +0x0e86, 0x0e8a, +0x0e8c, 0x0ea3, +0x0ea5, 0x0ea5, +0x0ea7, 0x0ebd, +0x0ec0, 0x0ec4, +0x0ec6, 0x0ec6, +0x0ec8, 0x0ece, +0x0ed0, 0x0ed9, +0x0edc, 0x0edf, +0x0f00, 0x0f47, +0x0f49, 0x0f6c, +0x0f71, 0x0f97, +0x0f99, 0x0fbc, +0x0fbe, 0x0fcc, +0x0fce, 0x0fda, +0x1000, 0x10c5, +0x10c7, 0x10c7, +0x10cd, 0x10cd, +0x10d0, 0x1248, +0x124a, 0x124d, +0x1250, 0x1256, +0x1258, 0x1258, +0x125a, 0x125d, +0x1260, 0x1288, +0x128a, 0x128d, +0x1290, 0x12b0, +0x12b2, 0x12b5, +0x12b8, 0x12be, +0x12c0, 0x12c0, +0x12c2, 0x12c5, +0x12c8, 0x12d6, +0x12d8, 0x1310, +0x1312, 0x1315, +0x1318, 0x135a, +0x135d, 0x137c, +0x1380, 0x1399, +0x13a0, 0x13f5, +0x13f8, 0x13fd, +0x1400, 0x169c, +0x16a0, 0x16f8, +0x1700, 0x1715, +0x171f, 0x1736, +0x1740, 0x1753, +0x1760, 0x176c, +0x176e, 0x1770, +0x1772, 0x1773, +0x1780, 0x17dd, +0x17e0, 0x17e9, +0x17f0, 0x17f9, +0x1800, 0x1819, +0x1820, 0x1878, +0x1880, 0x18aa, +0x18b0, 0x18f5, +0x1900, 0x191e, +0x1920, 0x192b, +0x1930, 0x193b, +0x1940, 0x1940, +0x1944, 0x196d, +0x1970, 0x1974, +0x1980, 0x19ab, +0x19b0, 0x19c9, +0x19d0, 0x19da, +0x19de, 0x1a1b, +0x1a1e, 0x1a5e, +0x1a60, 0x1a7c, +0x1a7f, 0x1a89, +0x1a90, 0x1a99, +0x1aa0, 0x1aad, +0x1ab0, 0x1ace, +0x1b00, 0x1b4c, +0x1b4e, 0x1bf3, +0x1bfc, 0x1c37, +0x1c3b, 0x1c49, +0x1c4d, 0x1c8a, +0x1c90, 0x1cba, +0x1cbd, 0x1cc7, +0x1cd0, 0x1cfa, +0x1d00, 0x1f15, +0x1f18, 0x1f1d, +0x1f20, 0x1f45, +0x1f48, 0x1f4d, +0x1f50, 0x1f57, +0x1f59, 0x1f59, +0x1f5b, 0x1f5b, +0x1f5d, 0x1f5d, +0x1f5f, 0x1f7d, +0x1f80, 0x1fb4, +0x1fb6, 0x1fc4, +0x1fc6, 0x1fd3, +0x1fd6, 0x1fdb, +0x1fdd, 0x1fef, +0x1ff2, 0x1ff4, +0x1ff6, 0x1ffe, +0x2000, 0x2027, +0x202a, 0x2064, +0x2066, 0x2071, +0x2074, 0x208e, +0x2090, 0x209c, +0x20a0, 0x20c0, +0x20d0, 0x20f0, +0x2100, 0x218b, +0x2190, 0x2429, +0x2440, 0x244a, +0x2460, 0x2b73, +0x2b76, 0x2b95, +0x2b97, 0x2cf3, +0x2cf9, 0x2d25, +0x2d27, 0x2d27, +0x2d2d, 0x2d2d, +0x2d30, 0x2d67, +0x2d6f, 0x2d70, +0x2d7f, 0x2d96, +0x2da0, 0x2da6, +0x2da8, 0x2dae, +0x2db0, 0x2db6, +0x2db8, 0x2dbe, +0x2dc0, 0x2dc6, +0x2dc8, 0x2dce, +0x2dd0, 0x2dd6, +0x2dd8, 0x2dde, +0x2de0, 0x2e5d, +0x2e80, 0x2e99, +0x2e9b, 0x2ef3, +0x2f00, 0x2fd5, +0x2ff0, 0x303f, +0x3041, 0x3096, +0x3099, 0x30ff, +0x3105, 0x312f, +0x3131, 0x318e, +0x3190, 0x31e5, +0x31ef, 0x321e, +0x3220, 0xa48c, +0xa490, 0xa4c6, +0xa4d0, 0xa62b, +0xa640, 0xa6f7, +0xa700, 0xa7cd, +0xa7d0, 0xa7d1, +0xa7d3, 0xa7d3, +0xa7d5, 0xa7dc, +0xa7f2, 0xa82c, +0xa830, 0xa839, +0xa840, 0xa877, +0xa880, 0xa8c5, +0xa8ce, 0xa8d9, +0xa8e0, 0xa953, +0xa95f, 0xa97c, +0xa980, 0xa9cd, +0xa9cf, 0xa9d9, +0xa9de, 0xa9fe, +0xaa00, 0xaa36, +0xaa40, 0xaa4d, +0xaa50, 0xaa59, +0xaa5c, 0xaac2, +0xaadb, 0xaaf6, +0xab01, 0xab06, +0xab09, 0xab0e, +0xab11, 0xab16, +0xab20, 0xab26, +0xab28, 0xab2e, +0xab30, 0xab6b, +0xab70, 0xabed, +0xabf0, 0xabf9, +0xac00, 0xd7a3, +0xd7b0, 0xd7c6, +0xd7cb, 0xd7fb, +0xe000, 0xfa6d, +0xfa70, 0xfad9, +0xfb00, 0xfb06, +0xfb13, 0xfb17, +0xfb1d, 0xfb36, +0xfb38, 0xfb3c, +0xfb3e, 0xfb3e, +0xfb40, 0xfb41, +0xfb43, 0xfb44, +0xfb46, 0xfbc2, +0xfbd3, 0xfd8f, +0xfd92, 0xfdc7, +0xfdcf, 0xfdcf, +0xfdf0, 0xfe19, +0xfe20, 0xfe52, +0xfe54, 0xfe66, +0xfe68, 0xfe6b, +0xfe70, 0xfe74, +0xfe76, 0xfefc, +0xfeff, 0xfeff, +0xff01, 0xffbe, +0xffc2, 0xffc7, +0xffca, 0xffcf, +0xffd2, 0xffd7, +0xffda, 0xffdc, +0xffe0, 0xffe6, +0xffe8, 0xffee, +0xfff9, 0xfffd, +0x10000, 0x1000b, +0x1000d, 0x10026, +0x10028, 0x1003a, +0x1003c, 0x1003d, +0x1003f, 0x1004d, +0x10050, 0x1005d, +0x10080, 0x100fa, +0x10100, 0x10102, +0x10107, 0x10133, +0x10137, 0x1018e, +0x10190, 0x1019c, +0x101a0, 0x101a0, +0x101d0, 0x101fd, +0x10280, 0x1029c, +0x102a0, 0x102d0, +0x102e0, 0x102fb, +0x10300, 0x10323, +0x1032d, 0x1034a, +0x10350, 0x1037a, +0x10380, 0x1039d, +0x1039f, 0x103c3, +0x103c8, 0x103d5, +0x10400, 0x1049d, +0x104a0, 0x104a9, +0x104b0, 0x104d3, +0x104d8, 0x104fb, +0x10500, 0x10527, +0x10530, 0x10563, +0x1056f, 0x1057a, +0x1057c, 0x1058a, +0x1058c, 0x10592, +0x10594, 0x10595, +0x10597, 0x105a1, +0x105a3, 0x105b1, +0x105b3, 0x105b9, +0x105bb, 0x105bc, +0x105c0, 0x105f3, +0x10600, 0x10736, +0x10740, 0x10755, +0x10760, 0x10767, +0x10780, 0x10785, +0x10787, 0x107b0, +0x107b2, 0x107ba, +0x10800, 0x10805, +0x10808, 0x10808, +0x1080a, 0x10835, +0x10837, 0x10838, +0x1083c, 0x1083c, +0x1083f, 0x10855, +0x10857, 0x1089e, +0x108a7, 0x108af, +0x108e0, 0x108f2, +0x108f4, 0x108f5, +0x108fb, 0x1091b, +0x1091f, 0x10939, +0x1093f, 0x1093f, +0x10980, 0x109b7, +0x109bc, 0x109cf, +0x109d2, 0x10a03, +0x10a05, 0x10a06, +0x10a0c, 0x10a13, +0x10a15, 0x10a17, +0x10a19, 0x10a35, +0x10a38, 0x10a3a, +0x10a3f, 0x10a48, +0x10a50, 0x10a58, +0x10a60, 0x10a9f, +0x10ac0, 0x10ae6, +0x10aeb, 0x10af6, +0x10b00, 0x10b35, +0x10b39, 0x10b55, +0x10b58, 0x10b72, +0x10b78, 0x10b91, +0x10b99, 0x10b9c, +0x10ba9, 0x10baf, +0x10c00, 0x10c48, +0x10c80, 0x10cb2, +0x10cc0, 0x10cf2, +0x10cfa, 0x10d27, +0x10d30, 0x10d39, +0x10d40, 0x10d65, +0x10d69, 0x10d85, +0x10d8e, 0x10d8f, +0x10e60, 0x10e7e, +0x10e80, 0x10ea9, +0x10eab, 0x10ead, +0x10eb0, 0x10eb1, +0x10ec2, 0x10ec4, +0x10efc, 0x10f27, +0x10f30, 0x10f59, +0x10f70, 0x10f89, +0x10fb0, 0x10fcb, +0x10fe0, 0x10ff6, +0x11000, 0x1104d, +0x11052, 0x11075, +0x1107f, 0x110c2, +0x110cd, 0x110cd, +0x110d0, 0x110e8, +0x110f0, 0x110f9, +0x11100, 0x11134, +0x11136, 0x11147, +0x11150, 0x11176, +0x11180, 0x111df, +0x111e1, 0x111f4, +0x11200, 0x11211, +0x11213, 0x11241, +0x11280, 0x11286, +0x11288, 0x11288, +0x1128a, 0x1128d, +0x1128f, 0x1129d, +0x1129f, 0x112a9, +0x112b0, 0x112ea, +0x112f0, 0x112f9, +0x11300, 0x11303, +0x11305, 0x1130c, +0x1130f, 0x11310, +0x11313, 0x11328, +0x1132a, 0x11330, +0x11332, 0x11333, +0x11335, 0x11339, +0x1133b, 0x11344, +0x11347, 0x11348, +0x1134b, 0x1134d, +0x11350, 0x11350, +0x11357, 0x11357, +0x1135d, 0x11363, +0x11366, 0x1136c, +0x11370, 0x11374, +0x11380, 0x11389, +0x1138b, 0x1138b, +0x1138e, 0x1138e, +0x11390, 0x113b5, +0x113b7, 0x113c0, +0x113c2, 0x113c2, +0x113c5, 0x113c5, +0x113c7, 0x113ca, +0x113cc, 0x113d5, +0x113d7, 0x113d8, +0x113e1, 0x113e2, +0x11400, 0x1145b, +0x1145d, 0x11461, +0x11480, 0x114c7, +0x114d0, 0x114d9, +0x11580, 0x115b5, +0x115b8, 0x115dd, +0x11600, 0x11644, +0x11650, 0x11659, +0x11660, 0x1166c, +0x11680, 0x116b9, +0x116c0, 0x116c9, +0x116d0, 0x116e3, +0x11700, 0x1171a, +0x1171d, 0x1172b, +0x11730, 0x11746, +0x11800, 0x1183b, +0x118a0, 0x118f2, +0x118ff, 0x11906, +0x11909, 0x11909, +0x1190c, 0x11913, +0x11915, 0x11916, +0x11918, 0x11935, +0x11937, 0x11938, +0x1193b, 0x11946, +0x11950, 0x11959, +0x119a0, 0x119a7, +0x119aa, 0x119d7, +0x119da, 0x119e4, +0x11a00, 0x11a47, +0x11a50, 0x11aa2, +0x11ab0, 0x11af8, +0x11b00, 0x11b09, +0x11bc0, 0x11be1, +0x11bf0, 0x11bf9, +0x11c00, 0x11c08, +0x11c0a, 0x11c36, +0x11c38, 0x11c45, +0x11c50, 0x11c6c, +0x11c70, 0x11c8f, +0x11c92, 0x11ca7, +0x11ca9, 0x11cb6, +0x11d00, 0x11d06, +0x11d08, 0x11d09, +0x11d0b, 0x11d36, +0x11d3a, 0x11d3a, +0x11d3c, 0x11d3d, +0x11d3f, 0x11d47, +0x11d50, 0x11d59, +0x11d60, 0x11d65, +0x11d67, 0x11d68, +0x11d6a, 0x11d8e, +0x11d90, 0x11d91, +0x11d93, 0x11d98, +0x11da0, 0x11da9, +0x11ee0, 0x11ef8, +0x11f00, 0x11f10, +0x11f12, 0x11f3a, +0x11f3e, 0x11f5a, +0x11fb0, 0x11fb0, +0x11fc0, 0x11ff1, +0x11fff, 0x12399, +0x12400, 0x1246e, +0x12470, 0x12474, +0x12480, 0x12543, +0x12f90, 0x12ff2, +0x13000, 0x13455, +0x13460, 0x143fa, +0x14400, 0x14646, +0x16100, 0x16139, +0x16800, 0x16a38, +0x16a40, 0x16a5e, +0x16a60, 0x16a69, +0x16a6e, 0x16abe, +0x16ac0, 0x16ac9, +0x16ad0, 0x16aed, +0x16af0, 0x16af5, +0x16b00, 0x16b45, +0x16b50, 0x16b59, +0x16b5b, 0x16b61, +0x16b63, 0x16b77, +0x16b7d, 0x16b8f, +0x16d40, 0x16d79, +0x16e40, 0x16e9a, +0x16f00, 0x16f4a, +0x16f4f, 0x16f87, +0x16f8f, 0x16f9f, +0x16fe0, 0x16fe4, +0x16ff0, 0x16ff1, +0x17000, 0x187f7, +0x18800, 0x18cd5, +0x18cff, 0x18d08, +0x1aff0, 0x1aff3, +0x1aff5, 0x1affb, +0x1affd, 0x1affe, +0x1b000, 0x1b122, +0x1b132, 0x1b132, +0x1b150, 0x1b152, +0x1b155, 0x1b155, +0x1b164, 0x1b167, +0x1b170, 0x1b2fb, +0x1bc00, 0x1bc6a, +0x1bc70, 0x1bc7c, +0x1bc80, 0x1bc88, +0x1bc90, 0x1bc99, +0x1bc9c, 0x1bca3, +0x1cc00, 0x1ccf9, +0x1cd00, 0x1ceb3, +0x1cf00, 0x1cf2d, +0x1cf30, 0x1cf46, +0x1cf50, 0x1cfc3, +0x1d000, 0x1d0f5, +0x1d100, 0x1d126, +0x1d129, 0x1d1ea, +0x1d200, 0x1d245, +0x1d2c0, 0x1d2d3, +0x1d2e0, 0x1d2f3, +0x1d300, 0x1d356, +0x1d360, 0x1d378, +0x1d400, 0x1d454, +0x1d456, 0x1d49c, +0x1d49e, 0x1d49f, +0x1d4a2, 0x1d4a2, +0x1d4a5, 0x1d4a6, +0x1d4a9, 0x1d4ac, +0x1d4ae, 0x1d4b9, +0x1d4bb, 0x1d4bb, +0x1d4bd, 0x1d4c3, +0x1d4c5, 0x1d505, +0x1d507, 0x1d50a, +0x1d50d, 0x1d514, +0x1d516, 0x1d51c, +0x1d51e, 0x1d539, +0x1d53b, 0x1d53e, +0x1d540, 0x1d544, +0x1d546, 0x1d546, +0x1d54a, 0x1d550, +0x1d552, 0x1d6a5, +0x1d6a8, 0x1d7cb, +0x1d7ce, 0x1da8b, +0x1da9b, 0x1da9f, +0x1daa1, 0x1daaf, +0x1df00, 0x1df1e, +0x1df25, 0x1df2a, +0x1e000, 0x1e006, +0x1e008, 0x1e018, +0x1e01b, 0x1e021, +0x1e023, 0x1e024, +0x1e026, 0x1e02a, +0x1e030, 0x1e06d, +0x1e08f, 0x1e08f, +0x1e100, 0x1e12c, +0x1e130, 0x1e13d, +0x1e140, 0x1e149, +0x1e14e, 0x1e14f, +0x1e290, 0x1e2ae, +0x1e2c0, 0x1e2f9, +0x1e2ff, 0x1e2ff, +0x1e4d0, 0x1e4f9, +0x1e5d0, 0x1e5fa, +0x1e5ff, 0x1e5ff, +0x1e7e0, 0x1e7e6, +0x1e7e8, 0x1e7eb, +0x1e7ed, 0x1e7ee, +0x1e7f0, 0x1e7fe, +0x1e800, 0x1e8c4, +0x1e8c7, 0x1e8d6, +0x1e900, 0x1e94b, +0x1e950, 0x1e959, +0x1e95e, 0x1e95f, +0x1ec71, 0x1ecb4, +0x1ed01, 0x1ed3d, +0x1ee00, 0x1ee03, +0x1ee05, 0x1ee1f, +0x1ee21, 0x1ee22, +0x1ee24, 0x1ee24, +0x1ee27, 0x1ee27, +0x1ee29, 0x1ee32, +0x1ee34, 0x1ee37, +0x1ee39, 0x1ee39, +0x1ee3b, 0x1ee3b, +0x1ee42, 0x1ee42, +0x1ee47, 0x1ee47, +0x1ee49, 0x1ee49, +0x1ee4b, 0x1ee4b, +0x1ee4d, 0x1ee4f, +0x1ee51, 0x1ee52, +0x1ee54, 0x1ee54, +0x1ee57, 0x1ee57, +0x1ee59, 0x1ee59, +0x1ee5b, 0x1ee5b, +0x1ee5d, 0x1ee5d, +0x1ee5f, 0x1ee5f, +0x1ee61, 0x1ee62, +0x1ee64, 0x1ee64, +0x1ee67, 0x1ee6a, +0x1ee6c, 0x1ee72, +0x1ee74, 0x1ee77, +0x1ee79, 0x1ee7c, +0x1ee7e, 0x1ee7e, +0x1ee80, 0x1ee89, +0x1ee8b, 0x1ee9b, +0x1eea1, 0x1eea3, +0x1eea5, 0x1eea9, +0x1eeab, 0x1eebb, +0x1eef0, 0x1eef1, +0x1f000, 0x1f02b, +0x1f030, 0x1f093, +0x1f0a0, 0x1f0ae, +0x1f0b1, 0x1f0bf, +0x1f0c1, 0x1f0cf, +0x1f0d1, 0x1f0f5, +0x1f100, 0x1f1ad, +0x1f1e6, 0x1f202, +0x1f210, 0x1f23b, +0x1f240, 0x1f248, +0x1f250, 0x1f251, +0x1f260, 0x1f265, +0x1f300, 0x1f6d7, +0x1f6dc, 0x1f6ec, +0x1f6f0, 0x1f6fc, +0x1f700, 0x1f776, +0x1f77b, 0x1f7d9, +0x1f7e0, 0x1f7eb, +0x1f7f0, 0x1f7f0, +0x1f800, 0x1f80b, +0x1f810, 0x1f847, +0x1f850, 0x1f859, +0x1f860, 0x1f887, +0x1f890, 0x1f8ad, +0x1f8b0, 0x1f8bb, +0x1f8c0, 0x1f8c1, +0x1f900, 0x1fa53, +0x1fa60, 0x1fa6d, +0x1fa70, 0x1fa7c, +0x1fa80, 0x1fa89, +0x1fa8f, 0x1fac6, +0x1face, 0x1fadc, +0x1fadf, 0x1fae9, +0x1faf0, 0x1faf8, +0x1fb00, 0x1fb92, +0x1fb94, 0x1fbf9, +0x20000, 0x2a6df, +0x2a700, 0x2b739, +0x2b740, 0x2b81d, +0x2b820, 0x2cea1, +0x2ceb0, 0x2ebe0, +0x2ebf0, 0x2ee5d, +0x2f800, 0x2fa1d, +0x30000, 0x3134a, +0x31350, 0x323af, +0xe0001, 0xe0001, +0xe0020, 0xe007f, +0xe0100, 0xe01ef, +0xf0000, 0xffffd, +0x100000, 0x10fffd, +}; /* END of CR_Print */ + +/* PROPERTY: 'PosixPunct': POSIX [[:punct:]] */ +static const OnigCodePoint +CR_PosixPunct[] = { 349, +0x0021, 0x002f, +0x003a, 0x0040, +0x005b, 0x0060, +0x007b, 0x007e, +0x00a1, 0x00a9, +0x00ab, 0x00ac, +0x00ae, 0x00b1, +0x00b4, 0x00b4, +0x00b6, 0x00b8, +0x00bb, 0x00bb, +0x00bf, 0x00bf, +0x00d7, 0x00d7, +0x00f7, 0x00f7, +0x02c2, 0x02c5, +0x02d2, 0x02df, +0x02e5, 0x02eb, +0x02ed, 0x02ed, +0x02ef, 0x02ff, +0x0375, 0x0375, +0x037e, 0x037e, +0x0384, 0x0385, +0x0387, 0x0387, +0x03f6, 0x03f6, +0x0482, 0x0482, +0x055a, 0x055f, +0x0589, 0x058a, +0x058d, 0x058f, +0x05be, 0x05be, +0x05c0, 0x05c0, +0x05c3, 0x05c3, +0x05c6, 0x05c6, +0x05f3, 0x05f4, +0x0606, 0x060f, +0x061b, 0x061b, +0x061d, 0x061f, +0x066a, 0x066d, +0x06d4, 0x06d4, +0x06de, 0x06de, +0x06e9, 0x06e9, +0x06fd, 0x06fe, +0x0700, 0x070d, +0x07f6, 0x07f9, +0x07fe, 0x07ff, +0x0830, 0x083e, +0x085e, 0x085e, +0x0888, 0x0888, +0x0964, 0x0965, +0x0970, 0x0970, +0x09f2, 0x09f3, +0x09fa, 0x09fb, +0x09fd, 0x09fd, +0x0a76, 0x0a76, +0x0af0, 0x0af1, +0x0b70, 0x0b70, +0x0bf3, 0x0bfa, +0x0c77, 0x0c77, +0x0c7f, 0x0c7f, +0x0c84, 0x0c84, +0x0d4f, 0x0d4f, +0x0d79, 0x0d79, +0x0df4, 0x0df4, +0x0e3f, 0x0e3f, +0x0e4f, 0x0e4f, +0x0e5a, 0x0e5b, +0x0f01, 0x0f17, +0x0f1a, 0x0f1f, +0x0f34, 0x0f34, +0x0f36, 0x0f36, +0x0f38, 0x0f38, +0x0f3a, 0x0f3d, +0x0f85, 0x0f85, +0x0fbe, 0x0fc5, +0x0fc7, 0x0fcc, +0x0fce, 0x0fda, +0x104a, 0x104f, +0x109e, 0x109f, +0x10fb, 0x10fb, +0x1360, 0x1368, +0x1390, 0x1399, +0x1400, 0x1400, +0x166d, 0x166e, +0x169b, 0x169c, +0x16eb, 0x16ed, +0x1735, 0x1736, +0x17d4, 0x17d6, +0x17d8, 0x17db, +0x1800, 0x180a, +0x1940, 0x1940, +0x1944, 0x1945, +0x19de, 0x19ff, +0x1a1e, 0x1a1f, +0x1aa0, 0x1aa6, +0x1aa8, 0x1aad, +0x1b4e, 0x1b4f, +0x1b5a, 0x1b6a, +0x1b74, 0x1b7f, +0x1bfc, 0x1bff, +0x1c3b, 0x1c3f, +0x1c7e, 0x1c7f, +0x1cc0, 0x1cc7, +0x1cd3, 0x1cd3, +0x1fbd, 0x1fbd, +0x1fbf, 0x1fc1, +0x1fcd, 0x1fcf, +0x1fdd, 0x1fdf, +0x1fed, 0x1fef, +0x1ffd, 0x1ffe, +0x2010, 0x2027, +0x2030, 0x205e, +0x207a, 0x207e, +0x208a, 0x208e, +0x20a0, 0x20c0, +0x2100, 0x2101, +0x2103, 0x2106, +0x2108, 0x2109, +0x2114, 0x2114, +0x2116, 0x2118, +0x211e, 0x2123, +0x2125, 0x2125, +0x2127, 0x2127, +0x2129, 0x2129, +0x212e, 0x212e, +0x213a, 0x213b, +0x2140, 0x2144, +0x214a, 0x214d, +0x214f, 0x214f, +0x218a, 0x218b, +0x2190, 0x2429, +0x2440, 0x244a, +0x249c, 0x24e9, +0x2500, 0x2775, +0x2794, 0x2b73, +0x2b76, 0x2b95, +0x2b97, 0x2bff, +0x2ce5, 0x2cea, +0x2cf9, 0x2cfc, +0x2cfe, 0x2cff, +0x2d70, 0x2d70, +0x2e00, 0x2e2e, +0x2e30, 0x2e5d, +0x2e80, 0x2e99, +0x2e9b, 0x2ef3, +0x2f00, 0x2fd5, +0x2ff0, 0x2fff, +0x3001, 0x3004, +0x3008, 0x3020, +0x3030, 0x3030, +0x3036, 0x3037, +0x303d, 0x303f, +0x309b, 0x309c, +0x30a0, 0x30a0, +0x30fb, 0x30fb, +0x3190, 0x3191, +0x3196, 0x319f, +0x31c0, 0x31e5, +0x31ef, 0x31ef, +0x3200, 0x321e, +0x322a, 0x3247, +0x3250, 0x3250, +0x3260, 0x327f, +0x328a, 0x32b0, +0x32c0, 0x33ff, +0x4dc0, 0x4dff, +0xa490, 0xa4c6, +0xa4fe, 0xa4ff, +0xa60d, 0xa60f, +0xa673, 0xa673, +0xa67e, 0xa67e, +0xa6f2, 0xa6f7, +0xa700, 0xa716, +0xa720, 0xa721, +0xa789, 0xa78a, +0xa828, 0xa82b, +0xa836, 0xa839, +0xa874, 0xa877, +0xa8ce, 0xa8cf, +0xa8f8, 0xa8fa, +0xa8fc, 0xa8fc, +0xa92e, 0xa92f, +0xa95f, 0xa95f, +0xa9c1, 0xa9cd, +0xa9de, 0xa9df, +0xaa5c, 0xaa5f, +0xaa77, 0xaa79, +0xaade, 0xaadf, +0xaaf0, 0xaaf1, +0xab5b, 0xab5b, +0xab6a, 0xab6b, +0xabeb, 0xabeb, +0xfb29, 0xfb29, +0xfbb2, 0xfbc2, +0xfd3e, 0xfd4f, +0xfdcf, 0xfdcf, +0xfdfc, 0xfdff, +0xfe10, 0xfe19, +0xfe30, 0xfe52, +0xfe54, 0xfe66, +0xfe68, 0xfe6b, +0xff01, 0xff0f, +0xff1a, 0xff20, +0xff3b, 0xff40, +0xff5b, 0xff65, +0xffe0, 0xffe6, +0xffe8, 0xffee, +0xfffc, 0xfffd, +0x10100, 0x10102, +0x10137, 0x1013f, +0x10179, 0x10189, +0x1018c, 0x1018e, +0x10190, 0x1019c, +0x101a0, 0x101a0, +0x101d0, 0x101fc, +0x1039f, 0x1039f, +0x103d0, 0x103d0, +0x1056f, 0x1056f, +0x10857, 0x10857, +0x10877, 0x10878, +0x1091f, 0x1091f, +0x1093f, 0x1093f, +0x10a50, 0x10a58, +0x10a7f, 0x10a7f, +0x10ac8, 0x10ac8, +0x10af0, 0x10af6, +0x10b39, 0x10b3f, +0x10b99, 0x10b9c, +0x10d6e, 0x10d6e, +0x10d8e, 0x10d8f, +0x10ead, 0x10ead, +0x10f55, 0x10f59, +0x10f86, 0x10f89, +0x11047, 0x1104d, +0x110bb, 0x110bc, +0x110be, 0x110c1, +0x11140, 0x11143, +0x11174, 0x11175, +0x111c5, 0x111c8, +0x111cd, 0x111cd, +0x111db, 0x111db, +0x111dd, 0x111df, +0x11238, 0x1123d, +0x112a9, 0x112a9, +0x113d4, 0x113d5, +0x113d7, 0x113d8, +0x1144b, 0x1144f, +0x1145a, 0x1145b, +0x1145d, 0x1145d, +0x114c6, 0x114c6, +0x115c1, 0x115d7, +0x11641, 0x11643, +0x11660, 0x1166c, +0x116b9, 0x116b9, +0x1173c, 0x1173f, +0x1183b, 0x1183b, +0x11944, 0x11946, +0x119e2, 0x119e2, +0x11a3f, 0x11a46, +0x11a9a, 0x11a9c, +0x11a9e, 0x11aa2, +0x11b00, 0x11b09, +0x11be1, 0x11be1, +0x11c41, 0x11c45, +0x11c70, 0x11c71, +0x11ef7, 0x11ef8, +0x11f43, 0x11f4f, +0x11fd5, 0x11ff1, +0x11fff, 0x11fff, +0x12470, 0x12474, +0x12ff1, 0x12ff2, +0x16a6e, 0x16a6f, +0x16af5, 0x16af5, +0x16b37, 0x16b3f, +0x16b44, 0x16b45, +0x16d6d, 0x16d6f, +0x16e97, 0x16e9a, +0x16fe2, 0x16fe2, +0x1bc9c, 0x1bc9c, +0x1bc9f, 0x1bc9f, +0x1cc00, 0x1ccef, +0x1cd00, 0x1ceb3, +0x1cf50, 0x1cfc3, +0x1d000, 0x1d0f5, +0x1d100, 0x1d126, +0x1d129, 0x1d164, +0x1d16a, 0x1d16c, +0x1d183, 0x1d184, +0x1d18c, 0x1d1a9, +0x1d1ae, 0x1d1ea, +0x1d200, 0x1d241, +0x1d245, 0x1d245, +0x1d300, 0x1d356, +0x1d6c1, 0x1d6c1, +0x1d6db, 0x1d6db, +0x1d6fb, 0x1d6fb, +0x1d715, 0x1d715, +0x1d735, 0x1d735, +0x1d74f, 0x1d74f, +0x1d76f, 0x1d76f, +0x1d789, 0x1d789, +0x1d7a9, 0x1d7a9, +0x1d7c3, 0x1d7c3, +0x1d800, 0x1d9ff, +0x1da37, 0x1da3a, +0x1da6d, 0x1da74, +0x1da76, 0x1da83, +0x1da85, 0x1da8b, +0x1e14f, 0x1e14f, +0x1e2ff, 0x1e2ff, +0x1e5ff, 0x1e5ff, +0x1e95e, 0x1e95f, +0x1ecac, 0x1ecac, +0x1ecb0, 0x1ecb0, +0x1ed2e, 0x1ed2e, +0x1eef0, 0x1eef1, +0x1f000, 0x1f02b, +0x1f030, 0x1f093, +0x1f0a0, 0x1f0ae, +0x1f0b1, 0x1f0bf, +0x1f0c1, 0x1f0cf, +0x1f0d1, 0x1f0f5, +0x1f10d, 0x1f1ad, +0x1f1e6, 0x1f202, +0x1f210, 0x1f23b, +0x1f240, 0x1f248, +0x1f250, 0x1f251, +0x1f260, 0x1f265, +0x1f300, 0x1f6d7, +0x1f6dc, 0x1f6ec, +0x1f6f0, 0x1f6fc, +0x1f700, 0x1f776, +0x1f77b, 0x1f7d9, +0x1f7e0, 0x1f7eb, +0x1f7f0, 0x1f7f0, +0x1f800, 0x1f80b, +0x1f810, 0x1f847, +0x1f850, 0x1f859, +0x1f860, 0x1f887, +0x1f890, 0x1f8ad, +0x1f8b0, 0x1f8bb, +0x1f8c0, 0x1f8c1, +0x1f900, 0x1fa53, +0x1fa60, 0x1fa6d, +0x1fa70, 0x1fa7c, +0x1fa80, 0x1fa89, +0x1fa8f, 0x1fac6, +0x1face, 0x1fadc, +0x1fadf, 0x1fae9, +0x1faf0, 0x1faf8, +0x1fb00, 0x1fb92, +0x1fb94, 0x1fbef, +}; /* END of CR_PosixPunct */ + +/* PROPERTY: 'Space': POSIX [[:Space:]] */ +static const OnigCodePoint +CR_Space[] = { 10, +0x0009, 0x000d, +0x0020, 0x0020, +0x0085, 0x0085, +0x00a0, 0x00a0, +0x1680, 0x1680, +0x2000, 0x200a, +0x2028, 0x2029, +0x202f, 0x202f, +0x205f, 0x205f, +0x3000, 0x3000, +}; /* END of CR_Space */ + +/* PROPERTY: 'Upper': POSIX [[:Upper:]] */ +static const OnigCodePoint +CR_Upper[] = { 656, +0x0041, 0x005a, +0x00c0, 0x00d6, +0x00d8, 0x00de, +0x0100, 0x0100, +0x0102, 0x0102, +0x0104, 0x0104, +0x0106, 0x0106, +0x0108, 0x0108, +0x010a, 0x010a, +0x010c, 0x010c, +0x010e, 0x010e, +0x0110, 0x0110, +0x0112, 0x0112, +0x0114, 0x0114, +0x0116, 0x0116, +0x0118, 0x0118, +0x011a, 0x011a, +0x011c, 0x011c, +0x011e, 0x011e, +0x0120, 0x0120, +0x0122, 0x0122, +0x0124, 0x0124, +0x0126, 0x0126, +0x0128, 0x0128, +0x012a, 0x012a, +0x012c, 0x012c, +0x012e, 0x012e, +0x0130, 0x0130, +0x0132, 0x0132, +0x0134, 0x0134, +0x0136, 0x0136, +0x0139, 0x0139, +0x013b, 0x013b, +0x013d, 0x013d, +0x013f, 0x013f, +0x0141, 0x0141, +0x0143, 0x0143, +0x0145, 0x0145, +0x0147, 0x0147, +0x014a, 0x014a, +0x014c, 0x014c, +0x014e, 0x014e, +0x0150, 0x0150, +0x0152, 0x0152, +0x0154, 0x0154, +0x0156, 0x0156, +0x0158, 0x0158, +0x015a, 0x015a, +0x015c, 0x015c, +0x015e, 0x015e, +0x0160, 0x0160, +0x0162, 0x0162, +0x0164, 0x0164, +0x0166, 0x0166, +0x0168, 0x0168, +0x016a, 0x016a, +0x016c, 0x016c, +0x016e, 0x016e, +0x0170, 0x0170, +0x0172, 0x0172, +0x0174, 0x0174, +0x0176, 0x0176, +0x0178, 0x0179, +0x017b, 0x017b, +0x017d, 0x017d, +0x0181, 0x0182, +0x0184, 0x0184, +0x0186, 0x0187, +0x0189, 0x018b, +0x018e, 0x0191, +0x0193, 0x0194, +0x0196, 0x0198, +0x019c, 0x019d, +0x019f, 0x01a0, +0x01a2, 0x01a2, +0x01a4, 0x01a4, +0x01a6, 0x01a7, +0x01a9, 0x01a9, +0x01ac, 0x01ac, +0x01ae, 0x01af, +0x01b1, 0x01b3, +0x01b5, 0x01b5, +0x01b7, 0x01b8, +0x01bc, 0x01bc, +0x01c4, 0x01c4, +0x01c7, 0x01c7, +0x01ca, 0x01ca, +0x01cd, 0x01cd, +0x01cf, 0x01cf, +0x01d1, 0x01d1, +0x01d3, 0x01d3, +0x01d5, 0x01d5, +0x01d7, 0x01d7, +0x01d9, 0x01d9, +0x01db, 0x01db, +0x01de, 0x01de, +0x01e0, 0x01e0, +0x01e2, 0x01e2, +0x01e4, 0x01e4, +0x01e6, 0x01e6, +0x01e8, 0x01e8, +0x01ea, 0x01ea, +0x01ec, 0x01ec, +0x01ee, 0x01ee, +0x01f1, 0x01f1, +0x01f4, 0x01f4, +0x01f6, 0x01f8, +0x01fa, 0x01fa, +0x01fc, 0x01fc, +0x01fe, 0x01fe, +0x0200, 0x0200, +0x0202, 0x0202, +0x0204, 0x0204, +0x0206, 0x0206, +0x0208, 0x0208, +0x020a, 0x020a, +0x020c, 0x020c, +0x020e, 0x020e, +0x0210, 0x0210, +0x0212, 0x0212, +0x0214, 0x0214, +0x0216, 0x0216, +0x0218, 0x0218, +0x021a, 0x021a, +0x021c, 0x021c, +0x021e, 0x021e, +0x0220, 0x0220, +0x0222, 0x0222, +0x0224, 0x0224, +0x0226, 0x0226, +0x0228, 0x0228, +0x022a, 0x022a, +0x022c, 0x022c, +0x022e, 0x022e, +0x0230, 0x0230, +0x0232, 0x0232, +0x023a, 0x023b, +0x023d, 0x023e, +0x0241, 0x0241, +0x0243, 0x0246, +0x0248, 0x0248, +0x024a, 0x024a, +0x024c, 0x024c, +0x024e, 0x024e, +0x0370, 0x0370, +0x0372, 0x0372, +0x0376, 0x0376, +0x037f, 0x037f, +0x0386, 0x0386, +0x0388, 0x038a, +0x038c, 0x038c, +0x038e, 0x038f, +0x0391, 0x03a1, +0x03a3, 0x03ab, +0x03cf, 0x03cf, +0x03d2, 0x03d4, +0x03d8, 0x03d8, +0x03da, 0x03da, +0x03dc, 0x03dc, +0x03de, 0x03de, +0x03e0, 0x03e0, +0x03e2, 0x03e2, +0x03e4, 0x03e4, +0x03e6, 0x03e6, +0x03e8, 0x03e8, +0x03ea, 0x03ea, +0x03ec, 0x03ec, +0x03ee, 0x03ee, +0x03f4, 0x03f4, +0x03f7, 0x03f7, +0x03f9, 0x03fa, +0x03fd, 0x042f, +0x0460, 0x0460, +0x0462, 0x0462, +0x0464, 0x0464, +0x0466, 0x0466, +0x0468, 0x0468, +0x046a, 0x046a, +0x046c, 0x046c, +0x046e, 0x046e, +0x0470, 0x0470, +0x0472, 0x0472, +0x0474, 0x0474, +0x0476, 0x0476, +0x0478, 0x0478, +0x047a, 0x047a, +0x047c, 0x047c, +0x047e, 0x047e, +0x0480, 0x0480, +0x048a, 0x048a, +0x048c, 0x048c, +0x048e, 0x048e, +0x0490, 0x0490, +0x0492, 0x0492, +0x0494, 0x0494, +0x0496, 0x0496, +0x0498, 0x0498, +0x049a, 0x049a, +0x049c, 0x049c, +0x049e, 0x049e, +0x04a0, 0x04a0, +0x04a2, 0x04a2, +0x04a4, 0x04a4, +0x04a6, 0x04a6, +0x04a8, 0x04a8, +0x04aa, 0x04aa, +0x04ac, 0x04ac, +0x04ae, 0x04ae, +0x04b0, 0x04b0, +0x04b2, 0x04b2, +0x04b4, 0x04b4, +0x04b6, 0x04b6, +0x04b8, 0x04b8, +0x04ba, 0x04ba, +0x04bc, 0x04bc, +0x04be, 0x04be, +0x04c0, 0x04c1, +0x04c3, 0x04c3, +0x04c5, 0x04c5, +0x04c7, 0x04c7, +0x04c9, 0x04c9, +0x04cb, 0x04cb, +0x04cd, 0x04cd, +0x04d0, 0x04d0, +0x04d2, 0x04d2, +0x04d4, 0x04d4, +0x04d6, 0x04d6, +0x04d8, 0x04d8, +0x04da, 0x04da, +0x04dc, 0x04dc, +0x04de, 0x04de, +0x04e0, 0x04e0, +0x04e2, 0x04e2, +0x04e4, 0x04e4, +0x04e6, 0x04e6, +0x04e8, 0x04e8, +0x04ea, 0x04ea, +0x04ec, 0x04ec, +0x04ee, 0x04ee, +0x04f0, 0x04f0, +0x04f2, 0x04f2, +0x04f4, 0x04f4, +0x04f6, 0x04f6, +0x04f8, 0x04f8, +0x04fa, 0x04fa, +0x04fc, 0x04fc, +0x04fe, 0x04fe, +0x0500, 0x0500, +0x0502, 0x0502, +0x0504, 0x0504, +0x0506, 0x0506, +0x0508, 0x0508, +0x050a, 0x050a, +0x050c, 0x050c, +0x050e, 0x050e, +0x0510, 0x0510, +0x0512, 0x0512, +0x0514, 0x0514, +0x0516, 0x0516, +0x0518, 0x0518, +0x051a, 0x051a, +0x051c, 0x051c, +0x051e, 0x051e, +0x0520, 0x0520, +0x0522, 0x0522, +0x0524, 0x0524, +0x0526, 0x0526, +0x0528, 0x0528, +0x052a, 0x052a, +0x052c, 0x052c, +0x052e, 0x052e, +0x0531, 0x0556, +0x10a0, 0x10c5, +0x10c7, 0x10c7, +0x10cd, 0x10cd, +0x13a0, 0x13f5, +0x1c89, 0x1c89, +0x1c90, 0x1cba, +0x1cbd, 0x1cbf, +0x1e00, 0x1e00, +0x1e02, 0x1e02, +0x1e04, 0x1e04, +0x1e06, 0x1e06, +0x1e08, 0x1e08, +0x1e0a, 0x1e0a, +0x1e0c, 0x1e0c, +0x1e0e, 0x1e0e, +0x1e10, 0x1e10, +0x1e12, 0x1e12, +0x1e14, 0x1e14, +0x1e16, 0x1e16, +0x1e18, 0x1e18, +0x1e1a, 0x1e1a, +0x1e1c, 0x1e1c, +0x1e1e, 0x1e1e, +0x1e20, 0x1e20, +0x1e22, 0x1e22, +0x1e24, 0x1e24, +0x1e26, 0x1e26, +0x1e28, 0x1e28, +0x1e2a, 0x1e2a, +0x1e2c, 0x1e2c, +0x1e2e, 0x1e2e, +0x1e30, 0x1e30, +0x1e32, 0x1e32, +0x1e34, 0x1e34, +0x1e36, 0x1e36, +0x1e38, 0x1e38, +0x1e3a, 0x1e3a, +0x1e3c, 0x1e3c, +0x1e3e, 0x1e3e, +0x1e40, 0x1e40, +0x1e42, 0x1e42, +0x1e44, 0x1e44, +0x1e46, 0x1e46, +0x1e48, 0x1e48, +0x1e4a, 0x1e4a, +0x1e4c, 0x1e4c, +0x1e4e, 0x1e4e, +0x1e50, 0x1e50, +0x1e52, 0x1e52, +0x1e54, 0x1e54, +0x1e56, 0x1e56, +0x1e58, 0x1e58, +0x1e5a, 0x1e5a, +0x1e5c, 0x1e5c, +0x1e5e, 0x1e5e, +0x1e60, 0x1e60, +0x1e62, 0x1e62, +0x1e64, 0x1e64, +0x1e66, 0x1e66, +0x1e68, 0x1e68, +0x1e6a, 0x1e6a, +0x1e6c, 0x1e6c, +0x1e6e, 0x1e6e, +0x1e70, 0x1e70, +0x1e72, 0x1e72, +0x1e74, 0x1e74, +0x1e76, 0x1e76, +0x1e78, 0x1e78, +0x1e7a, 0x1e7a, +0x1e7c, 0x1e7c, +0x1e7e, 0x1e7e, +0x1e80, 0x1e80, +0x1e82, 0x1e82, +0x1e84, 0x1e84, +0x1e86, 0x1e86, +0x1e88, 0x1e88, +0x1e8a, 0x1e8a, +0x1e8c, 0x1e8c, +0x1e8e, 0x1e8e, +0x1e90, 0x1e90, +0x1e92, 0x1e92, +0x1e94, 0x1e94, +0x1e9e, 0x1e9e, +0x1ea0, 0x1ea0, +0x1ea2, 0x1ea2, +0x1ea4, 0x1ea4, +0x1ea6, 0x1ea6, +0x1ea8, 0x1ea8, +0x1eaa, 0x1eaa, +0x1eac, 0x1eac, +0x1eae, 0x1eae, +0x1eb0, 0x1eb0, +0x1eb2, 0x1eb2, +0x1eb4, 0x1eb4, +0x1eb6, 0x1eb6, +0x1eb8, 0x1eb8, +0x1eba, 0x1eba, +0x1ebc, 0x1ebc, +0x1ebe, 0x1ebe, +0x1ec0, 0x1ec0, +0x1ec2, 0x1ec2, +0x1ec4, 0x1ec4, +0x1ec6, 0x1ec6, +0x1ec8, 0x1ec8, +0x1eca, 0x1eca, +0x1ecc, 0x1ecc, +0x1ece, 0x1ece, +0x1ed0, 0x1ed0, +0x1ed2, 0x1ed2, +0x1ed4, 0x1ed4, +0x1ed6, 0x1ed6, +0x1ed8, 0x1ed8, +0x1eda, 0x1eda, +0x1edc, 0x1edc, +0x1ede, 0x1ede, +0x1ee0, 0x1ee0, +0x1ee2, 0x1ee2, +0x1ee4, 0x1ee4, +0x1ee6, 0x1ee6, +0x1ee8, 0x1ee8, +0x1eea, 0x1eea, +0x1eec, 0x1eec, +0x1eee, 0x1eee, +0x1ef0, 0x1ef0, +0x1ef2, 0x1ef2, +0x1ef4, 0x1ef4, +0x1ef6, 0x1ef6, +0x1ef8, 0x1ef8, +0x1efa, 0x1efa, +0x1efc, 0x1efc, +0x1efe, 0x1efe, +0x1f08, 0x1f0f, +0x1f18, 0x1f1d, +0x1f28, 0x1f2f, +0x1f38, 0x1f3f, +0x1f48, 0x1f4d, +0x1f59, 0x1f59, +0x1f5b, 0x1f5b, +0x1f5d, 0x1f5d, +0x1f5f, 0x1f5f, +0x1f68, 0x1f6f, +0x1fb8, 0x1fbb, +0x1fc8, 0x1fcb, +0x1fd8, 0x1fdb, +0x1fe8, 0x1fec, +0x1ff8, 0x1ffb, +0x2102, 0x2102, +0x2107, 0x2107, +0x210b, 0x210d, +0x2110, 0x2112, +0x2115, 0x2115, +0x2119, 0x211d, +0x2124, 0x2124, +0x2126, 0x2126, +0x2128, 0x2128, +0x212a, 0x212d, +0x2130, 0x2133, +0x213e, 0x213f, +0x2145, 0x2145, +0x2160, 0x216f, +0x2183, 0x2183, +0x24b6, 0x24cf, +0x2c00, 0x2c2f, +0x2c60, 0x2c60, +0x2c62, 0x2c64, +0x2c67, 0x2c67, +0x2c69, 0x2c69, +0x2c6b, 0x2c6b, +0x2c6d, 0x2c70, +0x2c72, 0x2c72, +0x2c75, 0x2c75, +0x2c7e, 0x2c80, +0x2c82, 0x2c82, +0x2c84, 0x2c84, +0x2c86, 0x2c86, +0x2c88, 0x2c88, +0x2c8a, 0x2c8a, +0x2c8c, 0x2c8c, +0x2c8e, 0x2c8e, +0x2c90, 0x2c90, +0x2c92, 0x2c92, +0x2c94, 0x2c94, +0x2c96, 0x2c96, +0x2c98, 0x2c98, +0x2c9a, 0x2c9a, +0x2c9c, 0x2c9c, +0x2c9e, 0x2c9e, +0x2ca0, 0x2ca0, +0x2ca2, 0x2ca2, +0x2ca4, 0x2ca4, +0x2ca6, 0x2ca6, +0x2ca8, 0x2ca8, +0x2caa, 0x2caa, +0x2cac, 0x2cac, +0x2cae, 0x2cae, +0x2cb0, 0x2cb0, +0x2cb2, 0x2cb2, +0x2cb4, 0x2cb4, +0x2cb6, 0x2cb6, +0x2cb8, 0x2cb8, +0x2cba, 0x2cba, +0x2cbc, 0x2cbc, +0x2cbe, 0x2cbe, +0x2cc0, 0x2cc0, +0x2cc2, 0x2cc2, +0x2cc4, 0x2cc4, +0x2cc6, 0x2cc6, +0x2cc8, 0x2cc8, +0x2cca, 0x2cca, +0x2ccc, 0x2ccc, +0x2cce, 0x2cce, +0x2cd0, 0x2cd0, +0x2cd2, 0x2cd2, +0x2cd4, 0x2cd4, +0x2cd6, 0x2cd6, +0x2cd8, 0x2cd8, +0x2cda, 0x2cda, +0x2cdc, 0x2cdc, +0x2cde, 0x2cde, +0x2ce0, 0x2ce0, +0x2ce2, 0x2ce2, +0x2ceb, 0x2ceb, +0x2ced, 0x2ced, +0x2cf2, 0x2cf2, +0xa640, 0xa640, +0xa642, 0xa642, +0xa644, 0xa644, +0xa646, 0xa646, +0xa648, 0xa648, +0xa64a, 0xa64a, +0xa64c, 0xa64c, +0xa64e, 0xa64e, +0xa650, 0xa650, +0xa652, 0xa652, +0xa654, 0xa654, +0xa656, 0xa656, +0xa658, 0xa658, +0xa65a, 0xa65a, +0xa65c, 0xa65c, +0xa65e, 0xa65e, +0xa660, 0xa660, +0xa662, 0xa662, +0xa664, 0xa664, +0xa666, 0xa666, +0xa668, 0xa668, +0xa66a, 0xa66a, +0xa66c, 0xa66c, +0xa680, 0xa680, +0xa682, 0xa682, +0xa684, 0xa684, +0xa686, 0xa686, +0xa688, 0xa688, +0xa68a, 0xa68a, +0xa68c, 0xa68c, +0xa68e, 0xa68e, +0xa690, 0xa690, +0xa692, 0xa692, +0xa694, 0xa694, +0xa696, 0xa696, +0xa698, 0xa698, +0xa69a, 0xa69a, +0xa722, 0xa722, +0xa724, 0xa724, +0xa726, 0xa726, +0xa728, 0xa728, +0xa72a, 0xa72a, +0xa72c, 0xa72c, +0xa72e, 0xa72e, +0xa732, 0xa732, +0xa734, 0xa734, +0xa736, 0xa736, +0xa738, 0xa738, +0xa73a, 0xa73a, +0xa73c, 0xa73c, +0xa73e, 0xa73e, +0xa740, 0xa740, +0xa742, 0xa742, +0xa744, 0xa744, +0xa746, 0xa746, +0xa748, 0xa748, +0xa74a, 0xa74a, +0xa74c, 0xa74c, +0xa74e, 0xa74e, +0xa750, 0xa750, +0xa752, 0xa752, +0xa754, 0xa754, +0xa756, 0xa756, +0xa758, 0xa758, +0xa75a, 0xa75a, +0xa75c, 0xa75c, +0xa75e, 0xa75e, +0xa760, 0xa760, +0xa762, 0xa762, +0xa764, 0xa764, +0xa766, 0xa766, +0xa768, 0xa768, +0xa76a, 0xa76a, +0xa76c, 0xa76c, +0xa76e, 0xa76e, +0xa779, 0xa779, +0xa77b, 0xa77b, +0xa77d, 0xa77e, +0xa780, 0xa780, +0xa782, 0xa782, +0xa784, 0xa784, +0xa786, 0xa786, +0xa78b, 0xa78b, +0xa78d, 0xa78d, +0xa790, 0xa790, +0xa792, 0xa792, +0xa796, 0xa796, +0xa798, 0xa798, +0xa79a, 0xa79a, +0xa79c, 0xa79c, +0xa79e, 0xa79e, +0xa7a0, 0xa7a0, +0xa7a2, 0xa7a2, +0xa7a4, 0xa7a4, +0xa7a6, 0xa7a6, +0xa7a8, 0xa7a8, +0xa7aa, 0xa7ae, +0xa7b0, 0xa7b4, +0xa7b6, 0xa7b6, +0xa7b8, 0xa7b8, +0xa7ba, 0xa7ba, +0xa7bc, 0xa7bc, +0xa7be, 0xa7be, +0xa7c0, 0xa7c0, +0xa7c2, 0xa7c2, +0xa7c4, 0xa7c7, +0xa7c9, 0xa7c9, +0xa7cb, 0xa7cc, +0xa7d0, 0xa7d0, +0xa7d6, 0xa7d6, +0xa7d8, 0xa7d8, +0xa7da, 0xa7da, +0xa7dc, 0xa7dc, +0xa7f5, 0xa7f5, +0xff21, 0xff3a, +0x10400, 0x10427, +0x104b0, 0x104d3, +0x10570, 0x1057a, +0x1057c, 0x1058a, +0x1058c, 0x10592, +0x10594, 0x10595, +0x10c80, 0x10cb2, +0x10d50, 0x10d65, +0x118a0, 0x118bf, +0x16e40, 0x16e5f, +0x1d400, 0x1d419, +0x1d434, 0x1d44d, +0x1d468, 0x1d481, +0x1d49c, 0x1d49c, +0x1d49e, 0x1d49f, +0x1d4a2, 0x1d4a2, +0x1d4a5, 0x1d4a6, +0x1d4a9, 0x1d4ac, +0x1d4ae, 0x1d4b5, +0x1d4d0, 0x1d4e9, +0x1d504, 0x1d505, +0x1d507, 0x1d50a, +0x1d50d, 0x1d514, +0x1d516, 0x1d51c, +0x1d538, 0x1d539, +0x1d53b, 0x1d53e, +0x1d540, 0x1d544, +0x1d546, 0x1d546, +0x1d54a, 0x1d550, +0x1d56c, 0x1d585, +0x1d5a0, 0x1d5b9, +0x1d5d4, 0x1d5ed, +0x1d608, 0x1d621, +0x1d63c, 0x1d655, +0x1d670, 0x1d689, +0x1d6a8, 0x1d6c0, +0x1d6e2, 0x1d6fa, +0x1d71c, 0x1d734, +0x1d756, 0x1d76e, +0x1d790, 0x1d7a8, +0x1d7ca, 0x1d7ca, +0x1e900, 0x1e921, +0x1f130, 0x1f149, +0x1f150, 0x1f169, +0x1f170, 0x1f189, +}; /* END of CR_Upper */ + +/* PROPERTY: 'XDigit': POSIX [[:XDigit:]] */ +static const OnigCodePoint +CR_XDigit[] = { 3, +0x0030, 0x0039, +0x0041, 0x0046, +0x0061, 0x0066, +}; /* END of CR_XDigit */ + +/* PROPERTY: 'Word': POSIX [[:Word:]] */ +static const OnigCodePoint +CR_Word[] = { 795, +0x0030, 0x0039, +0x0041, 0x005a, +0x005f, 0x005f, +0x0061, 0x007a, +0x00aa, 0x00aa, +0x00b5, 0x00b5, +0x00ba, 0x00ba, +0x00c0, 0x00d6, +0x00d8, 0x00f6, +0x00f8, 0x02c1, +0x02c6, 0x02d1, +0x02e0, 0x02e4, +0x02ec, 0x02ec, +0x02ee, 0x02ee, +0x0300, 0x0374, +0x0376, 0x0377, +0x037a, 0x037d, +0x037f, 0x037f, +0x0386, 0x0386, +0x0388, 0x038a, +0x038c, 0x038c, +0x038e, 0x03a1, +0x03a3, 0x03f5, +0x03f7, 0x0481, +0x0483, 0x052f, +0x0531, 0x0556, +0x0559, 0x0559, +0x0560, 0x0588, +0x0591, 0x05bd, +0x05bf, 0x05bf, +0x05c1, 0x05c2, +0x05c4, 0x05c5, +0x05c7, 0x05c7, +0x05d0, 0x05ea, +0x05ef, 0x05f2, +0x0610, 0x061a, +0x0620, 0x0669, +0x066e, 0x06d3, +0x06d5, 0x06dc, +0x06df, 0x06e8, +0x06ea, 0x06fc, +0x06ff, 0x06ff, +0x0710, 0x074a, +0x074d, 0x07b1, +0x07c0, 0x07f5, +0x07fa, 0x07fa, +0x07fd, 0x07fd, +0x0800, 0x082d, +0x0840, 0x085b, +0x0860, 0x086a, +0x0870, 0x0887, +0x0889, 0x088e, +0x0897, 0x08e1, +0x08e3, 0x0963, +0x0966, 0x096f, +0x0971, 0x0983, +0x0985, 0x098c, +0x098f, 0x0990, +0x0993, 0x09a8, +0x09aa, 0x09b0, +0x09b2, 0x09b2, +0x09b6, 0x09b9, +0x09bc, 0x09c4, +0x09c7, 0x09c8, +0x09cb, 0x09ce, +0x09d7, 0x09d7, +0x09dc, 0x09dd, +0x09df, 0x09e3, +0x09e6, 0x09f1, +0x09fc, 0x09fc, +0x09fe, 0x09fe, +0x0a01, 0x0a03, +0x0a05, 0x0a0a, +0x0a0f, 0x0a10, +0x0a13, 0x0a28, +0x0a2a, 0x0a30, +0x0a32, 0x0a33, +0x0a35, 0x0a36, +0x0a38, 0x0a39, +0x0a3c, 0x0a3c, +0x0a3e, 0x0a42, +0x0a47, 0x0a48, +0x0a4b, 0x0a4d, +0x0a51, 0x0a51, +0x0a59, 0x0a5c, +0x0a5e, 0x0a5e, +0x0a66, 0x0a75, +0x0a81, 0x0a83, +0x0a85, 0x0a8d, +0x0a8f, 0x0a91, +0x0a93, 0x0aa8, +0x0aaa, 0x0ab0, +0x0ab2, 0x0ab3, +0x0ab5, 0x0ab9, +0x0abc, 0x0ac5, +0x0ac7, 0x0ac9, +0x0acb, 0x0acd, +0x0ad0, 0x0ad0, +0x0ae0, 0x0ae3, +0x0ae6, 0x0aef, +0x0af9, 0x0aff, +0x0b01, 0x0b03, +0x0b05, 0x0b0c, +0x0b0f, 0x0b10, +0x0b13, 0x0b28, +0x0b2a, 0x0b30, +0x0b32, 0x0b33, +0x0b35, 0x0b39, +0x0b3c, 0x0b44, +0x0b47, 0x0b48, +0x0b4b, 0x0b4d, +0x0b55, 0x0b57, +0x0b5c, 0x0b5d, +0x0b5f, 0x0b63, +0x0b66, 0x0b6f, +0x0b71, 0x0b71, +0x0b82, 0x0b83, +0x0b85, 0x0b8a, +0x0b8e, 0x0b90, +0x0b92, 0x0b95, +0x0b99, 0x0b9a, +0x0b9c, 0x0b9c, +0x0b9e, 0x0b9f, +0x0ba3, 0x0ba4, +0x0ba8, 0x0baa, +0x0bae, 0x0bb9, +0x0bbe, 0x0bc2, +0x0bc6, 0x0bc8, +0x0bca, 0x0bcd, +0x0bd0, 0x0bd0, +0x0bd7, 0x0bd7, +0x0be6, 0x0bef, +0x0c00, 0x0c0c, +0x0c0e, 0x0c10, +0x0c12, 0x0c28, +0x0c2a, 0x0c39, +0x0c3c, 0x0c44, +0x0c46, 0x0c48, +0x0c4a, 0x0c4d, +0x0c55, 0x0c56, +0x0c58, 0x0c5a, +0x0c5d, 0x0c5d, +0x0c60, 0x0c63, +0x0c66, 0x0c6f, +0x0c80, 0x0c83, +0x0c85, 0x0c8c, +0x0c8e, 0x0c90, +0x0c92, 0x0ca8, +0x0caa, 0x0cb3, +0x0cb5, 0x0cb9, +0x0cbc, 0x0cc4, +0x0cc6, 0x0cc8, +0x0cca, 0x0ccd, +0x0cd5, 0x0cd6, +0x0cdd, 0x0cde, +0x0ce0, 0x0ce3, +0x0ce6, 0x0cef, +0x0cf1, 0x0cf3, +0x0d00, 0x0d0c, +0x0d0e, 0x0d10, +0x0d12, 0x0d44, +0x0d46, 0x0d48, +0x0d4a, 0x0d4e, +0x0d54, 0x0d57, +0x0d5f, 0x0d63, +0x0d66, 0x0d6f, +0x0d7a, 0x0d7f, +0x0d81, 0x0d83, +0x0d85, 0x0d96, +0x0d9a, 0x0db1, +0x0db3, 0x0dbb, +0x0dbd, 0x0dbd, +0x0dc0, 0x0dc6, +0x0dca, 0x0dca, +0x0dcf, 0x0dd4, +0x0dd6, 0x0dd6, +0x0dd8, 0x0ddf, +0x0de6, 0x0def, +0x0df2, 0x0df3, +0x0e01, 0x0e3a, +0x0e40, 0x0e4e, +0x0e50, 0x0e59, +0x0e81, 0x0e82, +0x0e84, 0x0e84, +0x0e86, 0x0e8a, +0x0e8c, 0x0ea3, +0x0ea5, 0x0ea5, +0x0ea7, 0x0ebd, +0x0ec0, 0x0ec4, +0x0ec6, 0x0ec6, +0x0ec8, 0x0ece, +0x0ed0, 0x0ed9, +0x0edc, 0x0edf, +0x0f00, 0x0f00, +0x0f18, 0x0f19, +0x0f20, 0x0f29, +0x0f35, 0x0f35, +0x0f37, 0x0f37, +0x0f39, 0x0f39, +0x0f3e, 0x0f47, +0x0f49, 0x0f6c, +0x0f71, 0x0f84, +0x0f86, 0x0f97, +0x0f99, 0x0fbc, +0x0fc6, 0x0fc6, +0x1000, 0x1049, +0x1050, 0x109d, +0x10a0, 0x10c5, +0x10c7, 0x10c7, +0x10cd, 0x10cd, +0x10d0, 0x10fa, +0x10fc, 0x1248, +0x124a, 0x124d, +0x1250, 0x1256, +0x1258, 0x1258, +0x125a, 0x125d, +0x1260, 0x1288, +0x128a, 0x128d, +0x1290, 0x12b0, +0x12b2, 0x12b5, +0x12b8, 0x12be, +0x12c0, 0x12c0, +0x12c2, 0x12c5, +0x12c8, 0x12d6, +0x12d8, 0x1310, +0x1312, 0x1315, +0x1318, 0x135a, +0x135d, 0x135f, +0x1380, 0x138f, +0x13a0, 0x13f5, +0x13f8, 0x13fd, +0x1401, 0x166c, +0x166f, 0x167f, +0x1681, 0x169a, +0x16a0, 0x16ea, +0x16ee, 0x16f8, +0x1700, 0x1715, +0x171f, 0x1734, +0x1740, 0x1753, +0x1760, 0x176c, +0x176e, 0x1770, +0x1772, 0x1773, +0x1780, 0x17d3, +0x17d7, 0x17d7, +0x17dc, 0x17dd, +0x17e0, 0x17e9, +0x180b, 0x180d, +0x180f, 0x1819, +0x1820, 0x1878, +0x1880, 0x18aa, +0x18b0, 0x18f5, +0x1900, 0x191e, +0x1920, 0x192b, +0x1930, 0x193b, +0x1946, 0x196d, +0x1970, 0x1974, +0x1980, 0x19ab, +0x19b0, 0x19c9, +0x19d0, 0x19d9, +0x1a00, 0x1a1b, +0x1a20, 0x1a5e, +0x1a60, 0x1a7c, +0x1a7f, 0x1a89, +0x1a90, 0x1a99, +0x1aa7, 0x1aa7, +0x1ab0, 0x1ace, +0x1b00, 0x1b4c, +0x1b50, 0x1b59, +0x1b6b, 0x1b73, +0x1b80, 0x1bf3, +0x1c00, 0x1c37, +0x1c40, 0x1c49, +0x1c4d, 0x1c7d, +0x1c80, 0x1c8a, +0x1c90, 0x1cba, +0x1cbd, 0x1cbf, +0x1cd0, 0x1cd2, +0x1cd4, 0x1cfa, +0x1d00, 0x1f15, +0x1f18, 0x1f1d, +0x1f20, 0x1f45, +0x1f48, 0x1f4d, +0x1f50, 0x1f57, +0x1f59, 0x1f59, +0x1f5b, 0x1f5b, +0x1f5d, 0x1f5d, +0x1f5f, 0x1f7d, +0x1f80, 0x1fb4, +0x1fb6, 0x1fbc, +0x1fbe, 0x1fbe, +0x1fc2, 0x1fc4, +0x1fc6, 0x1fcc, +0x1fd0, 0x1fd3, +0x1fd6, 0x1fdb, +0x1fe0, 0x1fec, +0x1ff2, 0x1ff4, +0x1ff6, 0x1ffc, +0x203f, 0x2040, +0x2054, 0x2054, +0x2071, 0x2071, +0x207f, 0x207f, +0x2090, 0x209c, +0x20d0, 0x20f0, +0x2102, 0x2102, +0x2107, 0x2107, +0x210a, 0x2113, +0x2115, 0x2115, +0x2119, 0x211d, +0x2124, 0x2124, +0x2126, 0x2126, +0x2128, 0x2128, +0x212a, 0x212d, +0x212f, 0x2139, +0x213c, 0x213f, +0x2145, 0x2149, +0x214e, 0x214e, +0x2160, 0x2188, +0x24b6, 0x24e9, +0x2c00, 0x2ce4, +0x2ceb, 0x2cf3, +0x2d00, 0x2d25, +0x2d27, 0x2d27, +0x2d2d, 0x2d2d, +0x2d30, 0x2d67, +0x2d6f, 0x2d6f, +0x2d7f, 0x2d96, +0x2da0, 0x2da6, +0x2da8, 0x2dae, +0x2db0, 0x2db6, +0x2db8, 0x2dbe, +0x2dc0, 0x2dc6, +0x2dc8, 0x2dce, +0x2dd0, 0x2dd6, +0x2dd8, 0x2dde, +0x2de0, 0x2dff, +0x2e2f, 0x2e2f, +0x3005, 0x3007, +0x3021, 0x302f, +0x3031, 0x3035, +0x3038, 0x303c, +0x3041, 0x3096, +0x3099, 0x309a, +0x309d, 0x309f, +0x30a1, 0x30fa, +0x30fc, 0x30ff, +0x3105, 0x312f, +0x3131, 0x318e, +0x31a0, 0x31bf, +0x31f0, 0x31ff, +0x3400, 0x4dbf, +0x4e00, 0xa48c, +0xa4d0, 0xa4fd, +0xa500, 0xa60c, +0xa610, 0xa62b, +0xa640, 0xa672, +0xa674, 0xa67d, +0xa67f, 0xa6f1, +0xa717, 0xa71f, +0xa722, 0xa788, +0xa78b, 0xa7cd, +0xa7d0, 0xa7d1, +0xa7d3, 0xa7d3, +0xa7d5, 0xa7dc, +0xa7f2, 0xa827, +0xa82c, 0xa82c, +0xa840, 0xa873, +0xa880, 0xa8c5, +0xa8d0, 0xa8d9, +0xa8e0, 0xa8f7, +0xa8fb, 0xa8fb, +0xa8fd, 0xa92d, +0xa930, 0xa953, +0xa960, 0xa97c, +0xa980, 0xa9c0, +0xa9cf, 0xa9d9, +0xa9e0, 0xa9fe, +0xaa00, 0xaa36, +0xaa40, 0xaa4d, +0xaa50, 0xaa59, +0xaa60, 0xaa76, +0xaa7a, 0xaac2, +0xaadb, 0xaadd, +0xaae0, 0xaaef, +0xaaf2, 0xaaf6, +0xab01, 0xab06, +0xab09, 0xab0e, +0xab11, 0xab16, +0xab20, 0xab26, +0xab28, 0xab2e, +0xab30, 0xab5a, +0xab5c, 0xab69, +0xab70, 0xabea, +0xabec, 0xabed, +0xabf0, 0xabf9, +0xac00, 0xd7a3, +0xd7b0, 0xd7c6, +0xd7cb, 0xd7fb, +0xf900, 0xfa6d, +0xfa70, 0xfad9, +0xfb00, 0xfb06, +0xfb13, 0xfb17, +0xfb1d, 0xfb28, +0xfb2a, 0xfb36, +0xfb38, 0xfb3c, +0xfb3e, 0xfb3e, +0xfb40, 0xfb41, +0xfb43, 0xfb44, +0xfb46, 0xfbb1, +0xfbd3, 0xfd3d, +0xfd50, 0xfd8f, +0xfd92, 0xfdc7, +0xfdf0, 0xfdfb, +0xfe00, 0xfe0f, +0xfe20, 0xfe2f, +0xfe33, 0xfe34, +0xfe4d, 0xfe4f, +0xfe70, 0xfe74, +0xfe76, 0xfefc, +0xff10, 0xff19, +0xff21, 0xff3a, +0xff3f, 0xff3f, +0xff41, 0xff5a, +0xff66, 0xffbe, +0xffc2, 0xffc7, +0xffca, 0xffcf, +0xffd2, 0xffd7, +0xffda, 0xffdc, +0x10000, 0x1000b, +0x1000d, 0x10026, +0x10028, 0x1003a, +0x1003c, 0x1003d, +0x1003f, 0x1004d, +0x10050, 0x1005d, +0x10080, 0x100fa, +0x10140, 0x10174, +0x101fd, 0x101fd, +0x10280, 0x1029c, +0x102a0, 0x102d0, +0x102e0, 0x102e0, +0x10300, 0x1031f, +0x1032d, 0x1034a, +0x10350, 0x1037a, +0x10380, 0x1039d, +0x103a0, 0x103c3, +0x103c8, 0x103cf, +0x103d1, 0x103d5, +0x10400, 0x1049d, +0x104a0, 0x104a9, +0x104b0, 0x104d3, +0x104d8, 0x104fb, +0x10500, 0x10527, +0x10530, 0x10563, +0x10570, 0x1057a, +0x1057c, 0x1058a, +0x1058c, 0x10592, +0x10594, 0x10595, +0x10597, 0x105a1, +0x105a3, 0x105b1, +0x105b3, 0x105b9, +0x105bb, 0x105bc, +0x105c0, 0x105f3, +0x10600, 0x10736, +0x10740, 0x10755, +0x10760, 0x10767, +0x10780, 0x10785, +0x10787, 0x107b0, +0x107b2, 0x107ba, +0x10800, 0x10805, +0x10808, 0x10808, +0x1080a, 0x10835, +0x10837, 0x10838, +0x1083c, 0x1083c, +0x1083f, 0x10855, +0x10860, 0x10876, +0x10880, 0x1089e, +0x108e0, 0x108f2, +0x108f4, 0x108f5, +0x10900, 0x10915, +0x10920, 0x10939, +0x10980, 0x109b7, +0x109be, 0x109bf, +0x10a00, 0x10a03, +0x10a05, 0x10a06, +0x10a0c, 0x10a13, +0x10a15, 0x10a17, +0x10a19, 0x10a35, +0x10a38, 0x10a3a, +0x10a3f, 0x10a3f, +0x10a60, 0x10a7c, +0x10a80, 0x10a9c, +0x10ac0, 0x10ac7, +0x10ac9, 0x10ae6, +0x10b00, 0x10b35, +0x10b40, 0x10b55, +0x10b60, 0x10b72, +0x10b80, 0x10b91, +0x10c00, 0x10c48, +0x10c80, 0x10cb2, +0x10cc0, 0x10cf2, +0x10d00, 0x10d27, +0x10d30, 0x10d39, +0x10d40, 0x10d65, +0x10d69, 0x10d6d, +0x10d6f, 0x10d85, +0x10e80, 0x10ea9, +0x10eab, 0x10eac, +0x10eb0, 0x10eb1, +0x10ec2, 0x10ec4, +0x10efc, 0x10f1c, +0x10f27, 0x10f27, +0x10f30, 0x10f50, +0x10f70, 0x10f85, +0x10fb0, 0x10fc4, +0x10fe0, 0x10ff6, +0x11000, 0x11046, +0x11066, 0x11075, +0x1107f, 0x110ba, +0x110c2, 0x110c2, +0x110d0, 0x110e8, +0x110f0, 0x110f9, +0x11100, 0x11134, +0x11136, 0x1113f, +0x11144, 0x11147, +0x11150, 0x11173, +0x11176, 0x11176, +0x11180, 0x111c4, +0x111c9, 0x111cc, +0x111ce, 0x111da, +0x111dc, 0x111dc, +0x11200, 0x11211, +0x11213, 0x11237, +0x1123e, 0x11241, +0x11280, 0x11286, +0x11288, 0x11288, +0x1128a, 0x1128d, +0x1128f, 0x1129d, +0x1129f, 0x112a8, +0x112b0, 0x112ea, +0x112f0, 0x112f9, +0x11300, 0x11303, +0x11305, 0x1130c, +0x1130f, 0x11310, +0x11313, 0x11328, +0x1132a, 0x11330, +0x11332, 0x11333, +0x11335, 0x11339, +0x1133b, 0x11344, +0x11347, 0x11348, +0x1134b, 0x1134d, +0x11350, 0x11350, +0x11357, 0x11357, +0x1135d, 0x11363, +0x11366, 0x1136c, +0x11370, 0x11374, +0x11380, 0x11389, +0x1138b, 0x1138b, +0x1138e, 0x1138e, +0x11390, 0x113b5, +0x113b7, 0x113c0, +0x113c2, 0x113c2, +0x113c5, 0x113c5, +0x113c7, 0x113ca, +0x113cc, 0x113d3, +0x113e1, 0x113e2, +0x11400, 0x1144a, +0x11450, 0x11459, +0x1145e, 0x11461, +0x11480, 0x114c5, +0x114c7, 0x114c7, +0x114d0, 0x114d9, +0x11580, 0x115b5, +0x115b8, 0x115c0, +0x115d8, 0x115dd, +0x11600, 0x11640, +0x11644, 0x11644, +0x11650, 0x11659, +0x11680, 0x116b8, +0x116c0, 0x116c9, +0x116d0, 0x116e3, +0x11700, 0x1171a, +0x1171d, 0x1172b, +0x11730, 0x11739, +0x11740, 0x11746, +0x11800, 0x1183a, +0x118a0, 0x118e9, +0x118ff, 0x11906, +0x11909, 0x11909, +0x1190c, 0x11913, +0x11915, 0x11916, +0x11918, 0x11935, +0x11937, 0x11938, +0x1193b, 0x11943, +0x11950, 0x11959, +0x119a0, 0x119a7, +0x119aa, 0x119d7, +0x119da, 0x119e1, +0x119e3, 0x119e4, +0x11a00, 0x11a3e, +0x11a47, 0x11a47, +0x11a50, 0x11a99, +0x11a9d, 0x11a9d, +0x11ab0, 0x11af8, +0x11bc0, 0x11be0, +0x11bf0, 0x11bf9, +0x11c00, 0x11c08, +0x11c0a, 0x11c36, +0x11c38, 0x11c40, +0x11c50, 0x11c59, +0x11c72, 0x11c8f, +0x11c92, 0x11ca7, +0x11ca9, 0x11cb6, +0x11d00, 0x11d06, +0x11d08, 0x11d09, +0x11d0b, 0x11d36, +0x11d3a, 0x11d3a, +0x11d3c, 0x11d3d, +0x11d3f, 0x11d47, +0x11d50, 0x11d59, +0x11d60, 0x11d65, +0x11d67, 0x11d68, +0x11d6a, 0x11d8e, +0x11d90, 0x11d91, +0x11d93, 0x11d98, +0x11da0, 0x11da9, +0x11ee0, 0x11ef6, +0x11f00, 0x11f10, +0x11f12, 0x11f3a, +0x11f3e, 0x11f42, +0x11f50, 0x11f5a, +0x11fb0, 0x11fb0, +0x12000, 0x12399, +0x12400, 0x1246e, +0x12480, 0x12543, +0x12f90, 0x12ff0, +0x13000, 0x1342f, +0x13440, 0x13455, +0x13460, 0x143fa, +0x14400, 0x14646, +0x16100, 0x16139, +0x16800, 0x16a38, +0x16a40, 0x16a5e, +0x16a60, 0x16a69, +0x16a70, 0x16abe, +0x16ac0, 0x16ac9, +0x16ad0, 0x16aed, +0x16af0, 0x16af4, +0x16b00, 0x16b36, +0x16b40, 0x16b43, +0x16b50, 0x16b59, +0x16b63, 0x16b77, +0x16b7d, 0x16b8f, +0x16d40, 0x16d6c, +0x16d70, 0x16d79, +0x16e40, 0x16e7f, +0x16f00, 0x16f4a, +0x16f4f, 0x16f87, +0x16f8f, 0x16f9f, +0x16fe0, 0x16fe1, +0x16fe3, 0x16fe4, +0x16ff0, 0x16ff1, +0x17000, 0x187f7, +0x18800, 0x18cd5, +0x18cff, 0x18d08, +0x1aff0, 0x1aff3, +0x1aff5, 0x1affb, +0x1affd, 0x1affe, +0x1b000, 0x1b122, +0x1b132, 0x1b132, +0x1b150, 0x1b152, +0x1b155, 0x1b155, +0x1b164, 0x1b167, +0x1b170, 0x1b2fb, +0x1bc00, 0x1bc6a, +0x1bc70, 0x1bc7c, +0x1bc80, 0x1bc88, +0x1bc90, 0x1bc99, +0x1bc9d, 0x1bc9e, +0x1ccf0, 0x1ccf9, +0x1cf00, 0x1cf2d, +0x1cf30, 0x1cf46, +0x1d165, 0x1d169, +0x1d16d, 0x1d172, +0x1d17b, 0x1d182, +0x1d185, 0x1d18b, +0x1d1aa, 0x1d1ad, +0x1d242, 0x1d244, +0x1d400, 0x1d454, +0x1d456, 0x1d49c, +0x1d49e, 0x1d49f, +0x1d4a2, 0x1d4a2, +0x1d4a5, 0x1d4a6, +0x1d4a9, 0x1d4ac, +0x1d4ae, 0x1d4b9, +0x1d4bb, 0x1d4bb, +0x1d4bd, 0x1d4c3, +0x1d4c5, 0x1d505, +0x1d507, 0x1d50a, +0x1d50d, 0x1d514, +0x1d516, 0x1d51c, +0x1d51e, 0x1d539, +0x1d53b, 0x1d53e, +0x1d540, 0x1d544, +0x1d546, 0x1d546, +0x1d54a, 0x1d550, +0x1d552, 0x1d6a5, +0x1d6a8, 0x1d6c0, +0x1d6c2, 0x1d6da, +0x1d6dc, 0x1d6fa, +0x1d6fc, 0x1d714, +0x1d716, 0x1d734, +0x1d736, 0x1d74e, +0x1d750, 0x1d76e, +0x1d770, 0x1d788, +0x1d78a, 0x1d7a8, +0x1d7aa, 0x1d7c2, +0x1d7c4, 0x1d7cb, +0x1d7ce, 0x1d7ff, +0x1da00, 0x1da36, +0x1da3b, 0x1da6c, +0x1da75, 0x1da75, +0x1da84, 0x1da84, +0x1da9b, 0x1da9f, +0x1daa1, 0x1daaf, +0x1df00, 0x1df1e, +0x1df25, 0x1df2a, +0x1e000, 0x1e006, +0x1e008, 0x1e018, +0x1e01b, 0x1e021, +0x1e023, 0x1e024, +0x1e026, 0x1e02a, +0x1e030, 0x1e06d, +0x1e08f, 0x1e08f, +0x1e100, 0x1e12c, +0x1e130, 0x1e13d, +0x1e140, 0x1e149, +0x1e14e, 0x1e14e, +0x1e290, 0x1e2ae, +0x1e2c0, 0x1e2f9, +0x1e4d0, 0x1e4f9, +0x1e5d0, 0x1e5fa, +0x1e7e0, 0x1e7e6, +0x1e7e8, 0x1e7eb, +0x1e7ed, 0x1e7ee, +0x1e7f0, 0x1e7fe, +0x1e800, 0x1e8c4, +0x1e8d0, 0x1e8d6, +0x1e900, 0x1e94b, +0x1e950, 0x1e959, +0x1ee00, 0x1ee03, +0x1ee05, 0x1ee1f, +0x1ee21, 0x1ee22, +0x1ee24, 0x1ee24, +0x1ee27, 0x1ee27, +0x1ee29, 0x1ee32, +0x1ee34, 0x1ee37, +0x1ee39, 0x1ee39, +0x1ee3b, 0x1ee3b, +0x1ee42, 0x1ee42, +0x1ee47, 0x1ee47, +0x1ee49, 0x1ee49, +0x1ee4b, 0x1ee4b, +0x1ee4d, 0x1ee4f, +0x1ee51, 0x1ee52, +0x1ee54, 0x1ee54, +0x1ee57, 0x1ee57, +0x1ee59, 0x1ee59, +0x1ee5b, 0x1ee5b, +0x1ee5d, 0x1ee5d, +0x1ee5f, 0x1ee5f, +0x1ee61, 0x1ee62, +0x1ee64, 0x1ee64, +0x1ee67, 0x1ee6a, +0x1ee6c, 0x1ee72, +0x1ee74, 0x1ee77, +0x1ee79, 0x1ee7c, +0x1ee7e, 0x1ee7e, +0x1ee80, 0x1ee89, +0x1ee8b, 0x1ee9b, +0x1eea1, 0x1eea3, +0x1eea5, 0x1eea9, +0x1eeab, 0x1eebb, +0x1f130, 0x1f149, +0x1f150, 0x1f169, +0x1f170, 0x1f189, +0x1fbf0, 0x1fbf9, +0x20000, 0x2a6df, +0x2a700, 0x2b739, +0x2b740, 0x2b81d, +0x2b820, 0x2cea1, +0x2ceb0, 0x2ebe0, +0x2ebf0, 0x2ee5d, +0x2f800, 0x2fa1d, +0x30000, 0x3134a, +0x31350, 0x323af, +0xe0100, 0xe01ef, +}; /* END of CR_Word */ + +/* PROPERTY: 'Alnum': POSIX [[:Alnum:]] */ +static const OnigCodePoint +CR_Alnum[] = { 802, +0x0030, 0x0039, +0x0041, 0x005a, +0x0061, 0x007a, +0x00aa, 0x00aa, +0x00b5, 0x00b5, +0x00ba, 0x00ba, +0x00c0, 0x00d6, +0x00d8, 0x00f6, +0x00f8, 0x02c1, +0x02c6, 0x02d1, +0x02e0, 0x02e4, +0x02ec, 0x02ec, +0x02ee, 0x02ee, +0x0345, 0x0345, +0x0363, 0x0374, +0x0376, 0x0377, +0x037a, 0x037d, +0x037f, 0x037f, +0x0386, 0x0386, +0x0388, 0x038a, +0x038c, 0x038c, +0x038e, 0x03a1, +0x03a3, 0x03f5, +0x03f7, 0x0481, +0x048a, 0x052f, +0x0531, 0x0556, +0x0559, 0x0559, +0x0560, 0x0588, +0x05b0, 0x05bd, +0x05bf, 0x05bf, +0x05c1, 0x05c2, +0x05c4, 0x05c5, +0x05c7, 0x05c7, +0x05d0, 0x05ea, +0x05ef, 0x05f2, +0x0610, 0x061a, +0x0620, 0x0657, +0x0659, 0x0669, +0x066e, 0x06d3, +0x06d5, 0x06dc, +0x06e1, 0x06e8, +0x06ed, 0x06fc, +0x06ff, 0x06ff, +0x0710, 0x073f, +0x074d, 0x07b1, +0x07c0, 0x07ea, +0x07f4, 0x07f5, +0x07fa, 0x07fa, +0x0800, 0x0817, +0x081a, 0x082c, +0x0840, 0x0858, +0x0860, 0x086a, +0x0870, 0x0887, +0x0889, 0x088e, +0x0897, 0x0897, +0x08a0, 0x08c9, +0x08d4, 0x08df, +0x08e3, 0x08e9, +0x08f0, 0x093b, +0x093d, 0x094c, +0x094e, 0x0950, +0x0955, 0x0963, +0x0966, 0x096f, +0x0971, 0x0983, +0x0985, 0x098c, +0x098f, 0x0990, +0x0993, 0x09a8, +0x09aa, 0x09b0, +0x09b2, 0x09b2, +0x09b6, 0x09b9, +0x09bd, 0x09c4, +0x09c7, 0x09c8, +0x09cb, 0x09cc, +0x09ce, 0x09ce, +0x09d7, 0x09d7, +0x09dc, 0x09dd, +0x09df, 0x09e3, +0x09e6, 0x09f1, +0x09fc, 0x09fc, +0x0a01, 0x0a03, +0x0a05, 0x0a0a, +0x0a0f, 0x0a10, +0x0a13, 0x0a28, +0x0a2a, 0x0a30, +0x0a32, 0x0a33, +0x0a35, 0x0a36, +0x0a38, 0x0a39, +0x0a3e, 0x0a42, +0x0a47, 0x0a48, +0x0a4b, 0x0a4c, +0x0a51, 0x0a51, +0x0a59, 0x0a5c, +0x0a5e, 0x0a5e, +0x0a66, 0x0a75, +0x0a81, 0x0a83, +0x0a85, 0x0a8d, +0x0a8f, 0x0a91, +0x0a93, 0x0aa8, +0x0aaa, 0x0ab0, +0x0ab2, 0x0ab3, +0x0ab5, 0x0ab9, +0x0abd, 0x0ac5, +0x0ac7, 0x0ac9, +0x0acb, 0x0acc, +0x0ad0, 0x0ad0, +0x0ae0, 0x0ae3, +0x0ae6, 0x0aef, +0x0af9, 0x0afc, +0x0b01, 0x0b03, +0x0b05, 0x0b0c, +0x0b0f, 0x0b10, +0x0b13, 0x0b28, +0x0b2a, 0x0b30, +0x0b32, 0x0b33, +0x0b35, 0x0b39, +0x0b3d, 0x0b44, +0x0b47, 0x0b48, +0x0b4b, 0x0b4c, +0x0b56, 0x0b57, +0x0b5c, 0x0b5d, +0x0b5f, 0x0b63, +0x0b66, 0x0b6f, +0x0b71, 0x0b71, +0x0b82, 0x0b83, +0x0b85, 0x0b8a, +0x0b8e, 0x0b90, +0x0b92, 0x0b95, +0x0b99, 0x0b9a, +0x0b9c, 0x0b9c, +0x0b9e, 0x0b9f, +0x0ba3, 0x0ba4, +0x0ba8, 0x0baa, +0x0bae, 0x0bb9, +0x0bbe, 0x0bc2, +0x0bc6, 0x0bc8, +0x0bca, 0x0bcc, +0x0bd0, 0x0bd0, +0x0bd7, 0x0bd7, +0x0be6, 0x0bef, +0x0c00, 0x0c0c, +0x0c0e, 0x0c10, +0x0c12, 0x0c28, +0x0c2a, 0x0c39, +0x0c3d, 0x0c44, +0x0c46, 0x0c48, +0x0c4a, 0x0c4c, +0x0c55, 0x0c56, +0x0c58, 0x0c5a, +0x0c5d, 0x0c5d, +0x0c60, 0x0c63, +0x0c66, 0x0c6f, +0x0c80, 0x0c83, +0x0c85, 0x0c8c, +0x0c8e, 0x0c90, +0x0c92, 0x0ca8, +0x0caa, 0x0cb3, +0x0cb5, 0x0cb9, +0x0cbd, 0x0cc4, +0x0cc6, 0x0cc8, +0x0cca, 0x0ccc, +0x0cd5, 0x0cd6, +0x0cdd, 0x0cde, +0x0ce0, 0x0ce3, +0x0ce6, 0x0cef, +0x0cf1, 0x0cf3, +0x0d00, 0x0d0c, +0x0d0e, 0x0d10, +0x0d12, 0x0d3a, +0x0d3d, 0x0d44, +0x0d46, 0x0d48, +0x0d4a, 0x0d4c, +0x0d4e, 0x0d4e, +0x0d54, 0x0d57, +0x0d5f, 0x0d63, +0x0d66, 0x0d6f, +0x0d7a, 0x0d7f, +0x0d81, 0x0d83, +0x0d85, 0x0d96, +0x0d9a, 0x0db1, +0x0db3, 0x0dbb, +0x0dbd, 0x0dbd, +0x0dc0, 0x0dc6, +0x0dcf, 0x0dd4, +0x0dd6, 0x0dd6, +0x0dd8, 0x0ddf, +0x0de6, 0x0def, +0x0df2, 0x0df3, +0x0e01, 0x0e3a, +0x0e40, 0x0e46, +0x0e4d, 0x0e4d, +0x0e50, 0x0e59, +0x0e81, 0x0e82, +0x0e84, 0x0e84, +0x0e86, 0x0e8a, +0x0e8c, 0x0ea3, +0x0ea5, 0x0ea5, +0x0ea7, 0x0eb9, +0x0ebb, 0x0ebd, +0x0ec0, 0x0ec4, +0x0ec6, 0x0ec6, +0x0ecd, 0x0ecd, +0x0ed0, 0x0ed9, +0x0edc, 0x0edf, +0x0f00, 0x0f00, +0x0f20, 0x0f29, +0x0f40, 0x0f47, +0x0f49, 0x0f6c, +0x0f71, 0x0f83, +0x0f88, 0x0f97, +0x0f99, 0x0fbc, +0x1000, 0x1036, +0x1038, 0x1038, +0x103b, 0x1049, +0x1050, 0x109d, +0x10a0, 0x10c5, +0x10c7, 0x10c7, +0x10cd, 0x10cd, +0x10d0, 0x10fa, +0x10fc, 0x1248, +0x124a, 0x124d, +0x1250, 0x1256, +0x1258, 0x1258, +0x125a, 0x125d, +0x1260, 0x1288, +0x128a, 0x128d, +0x1290, 0x12b0, +0x12b2, 0x12b5, +0x12b8, 0x12be, +0x12c0, 0x12c0, +0x12c2, 0x12c5, +0x12c8, 0x12d6, +0x12d8, 0x1310, +0x1312, 0x1315, +0x1318, 0x135a, +0x1380, 0x138f, +0x13a0, 0x13f5, +0x13f8, 0x13fd, +0x1401, 0x166c, +0x166f, 0x167f, +0x1681, 0x169a, +0x16a0, 0x16ea, +0x16ee, 0x16f8, +0x1700, 0x1713, +0x171f, 0x1733, +0x1740, 0x1753, +0x1760, 0x176c, +0x176e, 0x1770, +0x1772, 0x1773, +0x1780, 0x17b3, +0x17b6, 0x17c8, +0x17d7, 0x17d7, +0x17dc, 0x17dc, +0x17e0, 0x17e9, +0x1810, 0x1819, +0x1820, 0x1878, +0x1880, 0x18aa, +0x18b0, 0x18f5, +0x1900, 0x191e, +0x1920, 0x192b, +0x1930, 0x1938, +0x1946, 0x196d, +0x1970, 0x1974, +0x1980, 0x19ab, +0x19b0, 0x19c9, +0x19d0, 0x19d9, +0x1a00, 0x1a1b, +0x1a20, 0x1a5e, +0x1a61, 0x1a74, +0x1a80, 0x1a89, +0x1a90, 0x1a99, +0x1aa7, 0x1aa7, +0x1abf, 0x1ac0, +0x1acc, 0x1ace, +0x1b00, 0x1b33, +0x1b35, 0x1b43, +0x1b45, 0x1b4c, +0x1b50, 0x1b59, +0x1b80, 0x1ba9, +0x1bac, 0x1be5, +0x1be7, 0x1bf1, +0x1c00, 0x1c36, +0x1c40, 0x1c49, +0x1c4d, 0x1c7d, +0x1c80, 0x1c8a, +0x1c90, 0x1cba, +0x1cbd, 0x1cbf, +0x1ce9, 0x1cec, +0x1cee, 0x1cf3, +0x1cf5, 0x1cf6, +0x1cfa, 0x1cfa, +0x1d00, 0x1dbf, +0x1dd3, 0x1df4, +0x1e00, 0x1f15, +0x1f18, 0x1f1d, +0x1f20, 0x1f45, +0x1f48, 0x1f4d, +0x1f50, 0x1f57, +0x1f59, 0x1f59, +0x1f5b, 0x1f5b, +0x1f5d, 0x1f5d, +0x1f5f, 0x1f7d, +0x1f80, 0x1fb4, +0x1fb6, 0x1fbc, +0x1fbe, 0x1fbe, +0x1fc2, 0x1fc4, +0x1fc6, 0x1fcc, +0x1fd0, 0x1fd3, +0x1fd6, 0x1fdb, +0x1fe0, 0x1fec, +0x1ff2, 0x1ff4, +0x1ff6, 0x1ffc, +0x2071, 0x2071, +0x207f, 0x207f, +0x2090, 0x209c, +0x2102, 0x2102, +0x2107, 0x2107, +0x210a, 0x2113, +0x2115, 0x2115, +0x2119, 0x211d, +0x2124, 0x2124, +0x2126, 0x2126, +0x2128, 0x2128, +0x212a, 0x212d, +0x212f, 0x2139, +0x213c, 0x213f, +0x2145, 0x2149, +0x214e, 0x214e, +0x2160, 0x2188, +0x24b6, 0x24e9, +0x2c00, 0x2ce4, +0x2ceb, 0x2cee, +0x2cf2, 0x2cf3, +0x2d00, 0x2d25, +0x2d27, 0x2d27, +0x2d2d, 0x2d2d, +0x2d30, 0x2d67, +0x2d6f, 0x2d6f, +0x2d80, 0x2d96, +0x2da0, 0x2da6, +0x2da8, 0x2dae, +0x2db0, 0x2db6, +0x2db8, 0x2dbe, +0x2dc0, 0x2dc6, +0x2dc8, 0x2dce, +0x2dd0, 0x2dd6, +0x2dd8, 0x2dde, +0x2de0, 0x2dff, +0x2e2f, 0x2e2f, +0x3005, 0x3007, +0x3021, 0x3029, +0x3031, 0x3035, +0x3038, 0x303c, +0x3041, 0x3096, +0x309d, 0x309f, +0x30a1, 0x30fa, +0x30fc, 0x30ff, +0x3105, 0x312f, +0x3131, 0x318e, +0x31a0, 0x31bf, +0x31f0, 0x31ff, +0x3400, 0x4dbf, +0x4e00, 0xa48c, +0xa4d0, 0xa4fd, +0xa500, 0xa60c, +0xa610, 0xa62b, +0xa640, 0xa66e, +0xa674, 0xa67b, +0xa67f, 0xa6ef, +0xa717, 0xa71f, +0xa722, 0xa788, +0xa78b, 0xa7cd, +0xa7d0, 0xa7d1, +0xa7d3, 0xa7d3, +0xa7d5, 0xa7dc, +0xa7f2, 0xa805, +0xa807, 0xa827, +0xa840, 0xa873, +0xa880, 0xa8c3, +0xa8c5, 0xa8c5, +0xa8d0, 0xa8d9, +0xa8f2, 0xa8f7, +0xa8fb, 0xa8fb, +0xa8fd, 0xa92a, +0xa930, 0xa952, +0xa960, 0xa97c, +0xa980, 0xa9b2, +0xa9b4, 0xa9bf, +0xa9cf, 0xa9d9, +0xa9e0, 0xa9fe, +0xaa00, 0xaa36, +0xaa40, 0xaa4d, +0xaa50, 0xaa59, +0xaa60, 0xaa76, +0xaa7a, 0xaabe, +0xaac0, 0xaac0, +0xaac2, 0xaac2, +0xaadb, 0xaadd, +0xaae0, 0xaaef, +0xaaf2, 0xaaf5, +0xab01, 0xab06, +0xab09, 0xab0e, +0xab11, 0xab16, +0xab20, 0xab26, +0xab28, 0xab2e, +0xab30, 0xab5a, +0xab5c, 0xab69, +0xab70, 0xabea, +0xabf0, 0xabf9, +0xac00, 0xd7a3, +0xd7b0, 0xd7c6, +0xd7cb, 0xd7fb, +0xf900, 0xfa6d, +0xfa70, 0xfad9, +0xfb00, 0xfb06, +0xfb13, 0xfb17, +0xfb1d, 0xfb28, +0xfb2a, 0xfb36, +0xfb38, 0xfb3c, +0xfb3e, 0xfb3e, +0xfb40, 0xfb41, +0xfb43, 0xfb44, +0xfb46, 0xfbb1, +0xfbd3, 0xfd3d, +0xfd50, 0xfd8f, +0xfd92, 0xfdc7, +0xfdf0, 0xfdfb, +0xfe70, 0xfe74, +0xfe76, 0xfefc, +0xff10, 0xff19, +0xff21, 0xff3a, +0xff41, 0xff5a, +0xff66, 0xffbe, +0xffc2, 0xffc7, +0xffca, 0xffcf, +0xffd2, 0xffd7, +0xffda, 0xffdc, +0x10000, 0x1000b, +0x1000d, 0x10026, +0x10028, 0x1003a, +0x1003c, 0x1003d, +0x1003f, 0x1004d, +0x10050, 0x1005d, +0x10080, 0x100fa, +0x10140, 0x10174, +0x10280, 0x1029c, +0x102a0, 0x102d0, +0x10300, 0x1031f, +0x1032d, 0x1034a, +0x10350, 0x1037a, +0x10380, 0x1039d, +0x103a0, 0x103c3, +0x103c8, 0x103cf, +0x103d1, 0x103d5, +0x10400, 0x1049d, +0x104a0, 0x104a9, +0x104b0, 0x104d3, +0x104d8, 0x104fb, +0x10500, 0x10527, +0x10530, 0x10563, +0x10570, 0x1057a, +0x1057c, 0x1058a, +0x1058c, 0x10592, +0x10594, 0x10595, +0x10597, 0x105a1, +0x105a3, 0x105b1, +0x105b3, 0x105b9, +0x105bb, 0x105bc, +0x105c0, 0x105f3, +0x10600, 0x10736, +0x10740, 0x10755, +0x10760, 0x10767, +0x10780, 0x10785, +0x10787, 0x107b0, +0x107b2, 0x107ba, +0x10800, 0x10805, +0x10808, 0x10808, +0x1080a, 0x10835, +0x10837, 0x10838, +0x1083c, 0x1083c, +0x1083f, 0x10855, +0x10860, 0x10876, +0x10880, 0x1089e, +0x108e0, 0x108f2, +0x108f4, 0x108f5, +0x10900, 0x10915, +0x10920, 0x10939, +0x10980, 0x109b7, +0x109be, 0x109bf, +0x10a00, 0x10a03, +0x10a05, 0x10a06, +0x10a0c, 0x10a13, +0x10a15, 0x10a17, +0x10a19, 0x10a35, +0x10a60, 0x10a7c, +0x10a80, 0x10a9c, +0x10ac0, 0x10ac7, +0x10ac9, 0x10ae4, +0x10b00, 0x10b35, +0x10b40, 0x10b55, +0x10b60, 0x10b72, +0x10b80, 0x10b91, +0x10c00, 0x10c48, +0x10c80, 0x10cb2, +0x10cc0, 0x10cf2, +0x10d00, 0x10d27, +0x10d30, 0x10d39, +0x10d40, 0x10d65, +0x10d69, 0x10d69, +0x10d6f, 0x10d85, +0x10e80, 0x10ea9, +0x10eab, 0x10eac, +0x10eb0, 0x10eb1, +0x10ec2, 0x10ec4, +0x10efc, 0x10efc, +0x10f00, 0x10f1c, +0x10f27, 0x10f27, +0x10f30, 0x10f45, +0x10f70, 0x10f81, +0x10fb0, 0x10fc4, +0x10fe0, 0x10ff6, +0x11000, 0x11045, +0x11066, 0x1106f, +0x11071, 0x11075, +0x11080, 0x110b8, +0x110c2, 0x110c2, +0x110d0, 0x110e8, +0x110f0, 0x110f9, +0x11100, 0x11132, +0x11136, 0x1113f, +0x11144, 0x11147, +0x11150, 0x11172, +0x11176, 0x11176, +0x11180, 0x111bf, +0x111c1, 0x111c4, +0x111ce, 0x111da, +0x111dc, 0x111dc, +0x11200, 0x11211, +0x11213, 0x11234, +0x11237, 0x11237, +0x1123e, 0x11241, +0x11280, 0x11286, +0x11288, 0x11288, +0x1128a, 0x1128d, +0x1128f, 0x1129d, +0x1129f, 0x112a8, +0x112b0, 0x112e8, +0x112f0, 0x112f9, +0x11300, 0x11303, +0x11305, 0x1130c, +0x1130f, 0x11310, +0x11313, 0x11328, +0x1132a, 0x11330, +0x11332, 0x11333, +0x11335, 0x11339, +0x1133d, 0x11344, +0x11347, 0x11348, +0x1134b, 0x1134c, +0x11350, 0x11350, +0x11357, 0x11357, +0x1135d, 0x11363, +0x11380, 0x11389, +0x1138b, 0x1138b, +0x1138e, 0x1138e, +0x11390, 0x113b5, +0x113b7, 0x113c0, +0x113c2, 0x113c2, +0x113c5, 0x113c5, +0x113c7, 0x113ca, +0x113cc, 0x113cd, +0x113d1, 0x113d1, +0x113d3, 0x113d3, +0x11400, 0x11441, +0x11443, 0x11445, +0x11447, 0x1144a, +0x11450, 0x11459, +0x1145f, 0x11461, +0x11480, 0x114c1, +0x114c4, 0x114c5, +0x114c7, 0x114c7, +0x114d0, 0x114d9, +0x11580, 0x115b5, +0x115b8, 0x115be, +0x115d8, 0x115dd, +0x11600, 0x1163e, +0x11640, 0x11640, +0x11644, 0x11644, +0x11650, 0x11659, +0x11680, 0x116b5, +0x116b8, 0x116b8, +0x116c0, 0x116c9, +0x116d0, 0x116e3, +0x11700, 0x1171a, +0x1171d, 0x1172a, +0x11730, 0x11739, +0x11740, 0x11746, +0x11800, 0x11838, +0x118a0, 0x118e9, +0x118ff, 0x11906, +0x11909, 0x11909, +0x1190c, 0x11913, +0x11915, 0x11916, +0x11918, 0x11935, +0x11937, 0x11938, +0x1193b, 0x1193c, +0x1193f, 0x11942, +0x11950, 0x11959, +0x119a0, 0x119a7, +0x119aa, 0x119d7, +0x119da, 0x119df, +0x119e1, 0x119e1, +0x119e3, 0x119e4, +0x11a00, 0x11a32, +0x11a35, 0x11a3e, +0x11a50, 0x11a97, +0x11a9d, 0x11a9d, +0x11ab0, 0x11af8, +0x11bc0, 0x11be0, +0x11bf0, 0x11bf9, +0x11c00, 0x11c08, +0x11c0a, 0x11c36, +0x11c38, 0x11c3e, +0x11c40, 0x11c40, +0x11c50, 0x11c59, +0x11c72, 0x11c8f, +0x11c92, 0x11ca7, +0x11ca9, 0x11cb6, +0x11d00, 0x11d06, +0x11d08, 0x11d09, +0x11d0b, 0x11d36, +0x11d3a, 0x11d3a, +0x11d3c, 0x11d3d, +0x11d3f, 0x11d41, +0x11d43, 0x11d43, +0x11d46, 0x11d47, +0x11d50, 0x11d59, +0x11d60, 0x11d65, +0x11d67, 0x11d68, +0x11d6a, 0x11d8e, +0x11d90, 0x11d91, +0x11d93, 0x11d96, +0x11d98, 0x11d98, +0x11da0, 0x11da9, +0x11ee0, 0x11ef6, +0x11f00, 0x11f10, +0x11f12, 0x11f3a, +0x11f3e, 0x11f40, +0x11f50, 0x11f59, +0x11fb0, 0x11fb0, +0x12000, 0x12399, +0x12400, 0x1246e, +0x12480, 0x12543, +0x12f90, 0x12ff0, +0x13000, 0x1342f, +0x13441, 0x13446, +0x13460, 0x143fa, +0x14400, 0x14646, +0x16100, 0x1612e, +0x16130, 0x16139, +0x16800, 0x16a38, +0x16a40, 0x16a5e, +0x16a60, 0x16a69, +0x16a70, 0x16abe, +0x16ac0, 0x16ac9, +0x16ad0, 0x16aed, +0x16b00, 0x16b2f, +0x16b40, 0x16b43, +0x16b50, 0x16b59, +0x16b63, 0x16b77, +0x16b7d, 0x16b8f, +0x16d40, 0x16d6c, +0x16d70, 0x16d79, +0x16e40, 0x16e7f, +0x16f00, 0x16f4a, +0x16f4f, 0x16f87, +0x16f8f, 0x16f9f, +0x16fe0, 0x16fe1, +0x16fe3, 0x16fe3, +0x16ff0, 0x16ff1, +0x17000, 0x187f7, +0x18800, 0x18cd5, +0x18cff, 0x18d08, +0x1aff0, 0x1aff3, +0x1aff5, 0x1affb, +0x1affd, 0x1affe, +0x1b000, 0x1b122, +0x1b132, 0x1b132, +0x1b150, 0x1b152, +0x1b155, 0x1b155, +0x1b164, 0x1b167, +0x1b170, 0x1b2fb, +0x1bc00, 0x1bc6a, +0x1bc70, 0x1bc7c, +0x1bc80, 0x1bc88, +0x1bc90, 0x1bc99, +0x1bc9e, 0x1bc9e, +0x1ccf0, 0x1ccf9, +0x1d400, 0x1d454, +0x1d456, 0x1d49c, +0x1d49e, 0x1d49f, +0x1d4a2, 0x1d4a2, +0x1d4a5, 0x1d4a6, +0x1d4a9, 0x1d4ac, +0x1d4ae, 0x1d4b9, +0x1d4bb, 0x1d4bb, +0x1d4bd, 0x1d4c3, +0x1d4c5, 0x1d505, +0x1d507, 0x1d50a, +0x1d50d, 0x1d514, +0x1d516, 0x1d51c, +0x1d51e, 0x1d539, +0x1d53b, 0x1d53e, +0x1d540, 0x1d544, +0x1d546, 0x1d546, +0x1d54a, 0x1d550, +0x1d552, 0x1d6a5, +0x1d6a8, 0x1d6c0, +0x1d6c2, 0x1d6da, +0x1d6dc, 0x1d6fa, +0x1d6fc, 0x1d714, +0x1d716, 0x1d734, +0x1d736, 0x1d74e, +0x1d750, 0x1d76e, +0x1d770, 0x1d788, +0x1d78a, 0x1d7a8, +0x1d7aa, 0x1d7c2, +0x1d7c4, 0x1d7cb, +0x1d7ce, 0x1d7ff, +0x1df00, 0x1df1e, +0x1df25, 0x1df2a, +0x1e000, 0x1e006, +0x1e008, 0x1e018, +0x1e01b, 0x1e021, +0x1e023, 0x1e024, +0x1e026, 0x1e02a, +0x1e030, 0x1e06d, +0x1e08f, 0x1e08f, +0x1e100, 0x1e12c, +0x1e137, 0x1e13d, +0x1e140, 0x1e149, +0x1e14e, 0x1e14e, +0x1e290, 0x1e2ad, +0x1e2c0, 0x1e2eb, +0x1e2f0, 0x1e2f9, +0x1e4d0, 0x1e4eb, +0x1e4f0, 0x1e4f9, +0x1e5d0, 0x1e5ed, +0x1e5f0, 0x1e5fa, +0x1e7e0, 0x1e7e6, +0x1e7e8, 0x1e7eb, +0x1e7ed, 0x1e7ee, +0x1e7f0, 0x1e7fe, +0x1e800, 0x1e8c4, +0x1e900, 0x1e943, +0x1e947, 0x1e947, +0x1e94b, 0x1e94b, +0x1e950, 0x1e959, +0x1ee00, 0x1ee03, +0x1ee05, 0x1ee1f, +0x1ee21, 0x1ee22, +0x1ee24, 0x1ee24, +0x1ee27, 0x1ee27, +0x1ee29, 0x1ee32, +0x1ee34, 0x1ee37, +0x1ee39, 0x1ee39, +0x1ee3b, 0x1ee3b, +0x1ee42, 0x1ee42, +0x1ee47, 0x1ee47, +0x1ee49, 0x1ee49, +0x1ee4b, 0x1ee4b, +0x1ee4d, 0x1ee4f, +0x1ee51, 0x1ee52, +0x1ee54, 0x1ee54, +0x1ee57, 0x1ee57, +0x1ee59, 0x1ee59, +0x1ee5b, 0x1ee5b, +0x1ee5d, 0x1ee5d, +0x1ee5f, 0x1ee5f, +0x1ee61, 0x1ee62, +0x1ee64, 0x1ee64, +0x1ee67, 0x1ee6a, +0x1ee6c, 0x1ee72, +0x1ee74, 0x1ee77, +0x1ee79, 0x1ee7c, +0x1ee7e, 0x1ee7e, +0x1ee80, 0x1ee89, +0x1ee8b, 0x1ee9b, +0x1eea1, 0x1eea3, +0x1eea5, 0x1eea9, +0x1eeab, 0x1eebb, +0x1f130, 0x1f149, +0x1f150, 0x1f169, +0x1f170, 0x1f189, +0x1fbf0, 0x1fbf9, +0x20000, 0x2a6df, +0x2a700, 0x2b739, +0x2b740, 0x2b81d, +0x2b820, 0x2cea1, +0x2ceb0, 0x2ebe0, +0x2ebf0, 0x2ee5d, +0x2f800, 0x2fa1d, +0x30000, 0x3134a, +0x31350, 0x323af, +}; /* END of CR_Alnum */ + +/* PROPERTY: 'ASCII': POSIX [[:ASCII:]] */ +static const OnigCodePoint +CR_ASCII[] = { 1, +0x0000, 0x007f, +}; /* END of CR_ASCII */ + + +static const OnigCodePoint* +const CodeRanges[] = { + CR_NEWLINE, + CR_Alpha, + CR_Blank, + CR_Cntrl, + CR_Digit, + CR_Graph, + CR_Lower, + CR_Print, + CR_PosixPunct, + CR_Space, + CR_Upper, + CR_XDigit, + CR_Word, + CR_Alnum, + 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 10 +#define MIN_HASH_VALUE 5 +#define MAX_HASH_VALUE 19 +/* maximum key range = 15, duplicates = 0 */ + +#ifndef GPERF_DOWNCASE +#define GPERF_DOWNCASE 1 +static unsigned char gperf_downcase[256] = + { + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255 + }; +#endif + +#ifndef GPERF_CASE_STRNCMP +#define GPERF_CASE_STRNCMP 1 +static int +gperf_case_strncmp (register const char *s1, register const char *s2, register size_t n) +{ + for (; n > 0;) + { + unsigned char c1 = gperf_downcase[(unsigned char)*s1++]; + unsigned char c2 = gperf_downcase[(unsigned char)*s2++]; + if (c1 != 0 && c1 == c2) + { + n--; + continue; + } + return (int)c1 - (int)c2; + } + return 0; +} +#endif + +#ifdef __GNUC__ +__inline +#else +#ifdef __cplusplus +inline +#endif +#endif +static unsigned int +hash (register const char *str, register size_t len) +{ + static const unsigned char asso_values[] = + { + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 0, 14, 8, 1, 20, + 20, 12, 20, 1, 20, 20, 10, 20, 4, 20, + 1, 20, 10, 0, 1, 4, 20, 1, 1, 20, + 20, 20, 20, 20, 20, 20, 20, 0, 14, 8, + 1, 20, 20, 12, 20, 1, 20, 20, 10, 20, + 4, 20, 1, 20, 10, 0, 1, 4, 20, 1, + 1, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20 + }; + 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("space")]; + char unicode_prop_name_pool_str6[sizeof("alpha")]; + char unicode_prop_name_pool_str7[sizeof("print")]; + char unicode_prop_name_pool_str8[sizeof("xdigit")]; + char unicode_prop_name_pool_str9[sizeof("alnum")]; + char unicode_prop_name_pool_str10[sizeof("upper")]; + char unicode_prop_name_pool_str11[sizeof("posixpunct")]; + char unicode_prop_name_pool_str12[sizeof("newline")]; + char unicode_prop_name_pool_str13[sizeof("ascii")]; + char unicode_prop_name_pool_str14[sizeof("cntrl")]; + 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 = + { + "space", + "alpha", + "print", + "xdigit", + "alnum", + "upper", + "posixpunct", + "newline", + "ascii", + "cntrl", + "word", + "lower", + "graph", + "digit", + "blank" + }; +#define unicode_prop_name_pool ((const char *) &unicode_prop_name_pool_contents) +static const struct PoolPropertyNameCtype * +unicode_lookup_property_name (register const char *str, register size_t len) +{ + static const struct PoolPropertyNameCtype wordlist[] = + { + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(5), 9}, + + {pool_offset(6), 1}, + + {pool_offset(7), 7}, + + {pool_offset(8), 11}, + + {pool_offset(9), 13}, + + {pool_offset(10), 10}, + + {pool_offset(11), 8}, + + {pool_offset(12), 0}, + + {pool_offset(13), 14}, + + {pool_offset(14), 3}, + + {pool_offset(15), 12}, + + {pool_offset(16), 6}, + + {pool_offset(17), 5}, + + {pool_offset(18), 4}, + + {pool_offset(19), 2} + }; + + if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) + { + register unsigned int key = hash (str, len); + + if (key <= MAX_HASH_VALUE) + { + 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; +} + + + +#define PROPERTY_NAME_MAX_SIZE 20 +#define CODE_RANGES_NUM 15 + +#define PROP_INDEX_NEWLINE 0 +#define PROP_INDEX_ALPHA 1 +#define PROP_INDEX_BLANK 2 +#define PROP_INDEX_CNTRL 3 +#define PROP_INDEX_DIGIT 4 +#define PROP_INDEX_GRAPH 5 +#define PROP_INDEX_LOWER 6 +#define PROP_INDEX_PRINT 7 +#define PROP_INDEX_POSIXPUNCT 8 +#define PROP_INDEX_SPACE 9 +#define PROP_INDEX_UPPER 10 +#define PROP_INDEX_XDIGIT 11 +#define PROP_INDEX_WORD 12 +#define PROP_INDEX_ALNUM 13 +#define PROP_INDEX_ASCII 14 diff --git a/vendor/oniguruma/oniguruma/src/unicode_unfold_key.c b/vendor/oniguruma/oniguruma/src/unicode_unfold_key.c new file mode 100644 index 0000000..37f49b9 --- /dev/null +++ b/vendor/oniguruma/oniguruma/src/unicode_unfold_key.c @@ -0,0 +1,3497 @@ +/* This file was converted by gperf_unfold_key_conv.py + from gperf output file. */ +/* ANSI-C code produced by gperf version 3.1 */ +/* Command-line: gperf -n -C -T -c -t -j1 -L ANSI-C -F,-1,0 -N onigenc_unicode_unfold_key unicode_unfold_key.gperf */ +/* Computed positions: -k'1-3' */ + + + +/* This gperf source file was generated by make_unicode_fold_data.py */ + +/*- + * Copyright (c) 2017-2024 K.Kosako + * 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. + */ +#include "regint.h" + +#define TOTAL_KEYWORDS 1557 +#define MIN_WORD_LENGTH 3 +#define MAX_WORD_LENGTH 3 +#define MIN_HASH_VALUE 8 +#define MAX_HASH_VALUE 2248 +/* maximum key range = 2241, duplicates = 0 */ + +#ifdef __GNUC__ +__inline +#else +#ifdef __cplusplus +inline +#endif +#endif +/*ARGSUSED*/ +static unsigned int +hash(OnigCodePoint codes[]) +{ + static const unsigned short asso_values[] = + { + 9, 7, 4, 52, 130, 1, 169, 2249, 2249, 2249, + 2249, 2249, 2249, 21, 155, 2249, 2249, 78, 2249, 2249, + 100, 2249, 2249, 2249, 2249, 84, 2249, 2249, 2249, 8, + 2249, 2, 3, 2249, 834, 718, 1614, 141, 1598, 712, + 1570, 694, 1668, 706, 1606, 0, 1593, 680, 1584, 651, + 1579, 1006, 1665, 1000, 1560, 688, 1553, 410, 1539, 645, + 1545, 639, 1530, 633, 269, 988, 1662, 966, 1122, 817, + 1647, 751, 994, 743, 379, 789, 1657, 261, 959, 783, + 1651, 771, 599, 826, 381, 1151, 286, 1521, 206, 1516, + 68, 1511, 915, 1431, 1607, 1640, 697, 671, 1531, 1507, + 1434, 1420, 1367, 1257, 1387, 1243, 717, 920, 1125, 613, + 1363, 331, 178, 909, 774, 843, 1451, 829, 1422, 822, + 1026, 724, 510, 1239, 754, 1222, 1324, 1413, 1072, 1409, + 764, 949, 316, 473, 384, 27, 169, 1405, 63, 1206, + 888, 1197, 879, 1189, 873, 386, 371, 1161, 903, 1139, + 807, 347, 613, 1398, 272, 197, 1633, 1449, 279, 1180, + 1, 1383, 286, 510, 1374, 490, 228, 15, 5, 398, + 1130, 595, 6, 464, 363, 574, 566, 457, 1228, 35, + 1112, 357, 1357, 324, 1330, 240, 158, 220, 1348, 432, + 1340, 548, 1326, 539, 1318, 97, 1106, 127, 1105, 85, + 1098, 76, 902, 211, 500, 189, 848, 118, 760, 106, + 1088, 151, 866, 56, 895, 419, 584, 315, 856, 66, + 1048, 303, 1290, 295, 1275, 274, 1257, 805, 657, 443, + 1312, 531, 1081, 1074, 253, 1065, 1311, 482, 1056, 561, + 1301, 1508, 1433, 1043, 1520, 1285, 929, 1634, 392, 1034, + 183, 1022, 42, 1014, 246, 1275, 26, 1266, 76, 1502, + 2249, 604, 70, 1497, 2249, 1491, 50, 1487, 41, 1478, + 342, 1471, 26, 1251, 2249, 666, 88, 1465, 19, 1460, + 46, 1627, 44, 1621, 207, 1443, 13, 1096, 17, 427, + 9 + }; + return asso_values[(unsigned char)onig_codes_byte_at(codes, 2)+35] + asso_values[(unsigned char)onig_codes_byte_at(codes, 1)+1] + asso_values[(unsigned char)onig_codes_byte_at(codes, 0)]; +} + +const struct ByUnfoldKey * +onigenc_unicode_unfold_key(OnigCodePoint code) +{ + static const struct ByUnfoldKey wordlist[] = + { + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x1040a, 3480, 1}, + + {0x2c0a, 2615, 1}, + + {0x040a, 1035, 1}, + + {0x1e0a, 1891, 1}, + + {0x1f0a, 2252, 1}, + + {0x010a, 186, 1}, + + {0x017d, 351, 1}, + + {0xa77d, 1867, 1}, + + {0xab7d, 1645, 1}, + + {0x1f85, 154, 2}, + + {0x1f89, 134, 2}, + + {0x0189, 622, 1}, + + {0xab85, 1669, 1}, + + {0xab89, 1681, 1}, + + {0x1c85, 960, 1}, + + {0x1c89, 1864, 1}, + + {0x2c84, 2759, 1}, + + {0x1ffb, 2429, 1}, + + {0x1e84, 2075, 1}, + + {0x1f84, 149, 2}, + + {0x0184, 360, 1}, + + {0xa784, 3273, 1}, + + {0xab84, 1666, 1}, + + {0x1ff3, 96, 2}, + + {0x1c84, 960, 1}, + + {0x10c85, 3798, 1}, + + {0x10c89, 3810, 1}, + + {0x2ced, 2906, 1}, + + {0x2c64, 682, 1}, + + {0x0464, 1060, 1}, + + {0x1e64, 2027, 1}, + + {0xa684, 3108, 1}, + + {0x0164, 315, 1}, + + {0xa764, 3240, 1}, + + {0x00dd, 162, 1}, + + {0x10c84, 3795, 1}, + + {0x2c90, 2777, 1}, + + {0x0490, 1114, 1}, + + {0x1e90, 2093, 1}, + + {0x1f90, 169, 2}, + + {0x0190, 631, 1}, + + {0xa790, 3282, 1}, + + {0xab90, 1702, 1}, + + {0xa664, 3087, 1}, + + {0x1c90, 1468, 1}, + + {0x1fe9, 2447, 1}, + + {0x1fd9, 2441, 1}, + + {0x01d9, 450, 1}, + + {0x1ff7, 67, 3}, + + {0x01f7, 417, 1}, + + {0x00d9, 150, 1}, + + {0xa690, 3126, 1}, + + {0xa7f5, 3366, 1}, + + {0x020a, 520, 1}, + + {0x1fe7, 47, 3}, + + {0x10c90, 3831, 1}, + + {0x104b2, 3576, 1}, + + {0x2cb2, 2828, 1}, + + {0x04b2, 1165, 1}, + + {0x1eb2, 2129, 1}, + + {0x1fb2, 249, 2}, + + {0x01b2, 706, 1}, + + {0xa7b2, 715, 1}, + + {0xabb2, 1804, 1}, + + {0x2c67, 2738, 1}, + + {0x1cb2, 1570, 1}, + + {0x104b8, 3594, 1}, + + {0x2cb8, 2837, 1}, + + {0x04b8, 1174, 1}, + + {0x1eb8, 2138, 1}, + + {0x1fb8, 2432, 1}, + + {0x01b8, 411, 1}, + + {0xa7b8, 3327, 1}, + + {0xabb8, 1822, 1}, + + {0x1fe3, 41, 3}, + + {0x1cb8, 1588, 1}, + + {0x10cb2, 3933, 1}, + + {0x2ca6, 2810, 1}, + + {0x04a6, 1147, 1}, + + {0x1ea6, 2111, 1}, + + {0x1fa6, 239, 2}, + + {0x01a6, 685, 1}, + + {0xa7a6, 3315, 1}, + + {0xaba6, 1768, 1}, + + {0x00df, 24, 2}, + + {0x1ca6, 1534, 1}, + + {0x2ca4, 2807, 1}, + + {0x04a4, 1144, 1}, + + {0x1ea4, 2108, 1}, + + {0x1fa4, 229, 2}, + + {0x01a4, 393, 1}, + + {0xa7a4, 3312, 1}, + + {0xaba4, 1762, 1}, + + {0x01f1, 486, 1}, + + {0x1ca4, 1528, 1}, + + {0xff37, 3438, 1}, + + {0x10ca6, 3897, 1}, + {0xffffffff, -1, 0}, + + {0x2ca0, 2801, 1}, + + {0x04a0, 1138, 1}, + + {0x1ea0, 2102, 1}, + + {0x1fa0, 209, 2}, + + {0x01a0, 387, 1}, + + {0xa7a0, 3306, 1}, + + {0xaba0, 1750, 1}, + + {0x10ca4, 3891, 1}, + + {0x1ca0, 1516, 1}, + + {0x2cae, 2822, 1}, + + {0x04ae, 1159, 1}, + + {0x1eae, 2123, 1}, + + {0x1fae, 239, 2}, + + {0x01ae, 697, 1}, + + {0xa7ae, 661, 1}, + + {0xabae, 1792, 1}, + + {0x13fb, 1855, 1}, + + {0x1cae, 1558, 1}, + {0xffffffff, -1, 0}, + + {0x10ca0, 3879, 1}, + + {0x13fd, 1861, 1}, + + {0x2cac, 2819, 1}, + + {0x04ac, 1156, 1}, + + {0x1eac, 2120, 1}, + + {0x1fac, 229, 2}, + + {0x01ac, 399, 1}, + + {0xa7ac, 640, 1}, + + {0xabac, 1786, 1}, + + {0x10cae, 3921, 1}, + + {0x1cac, 1552, 1}, + + {0x2ca2, 2804, 1}, + + {0x04a2, 1141, 1}, + + {0x1ea2, 2105, 1}, + + {0x1fa2, 219, 2}, + + {0x01a2, 390, 1}, + + {0xa7a2, 3309, 1}, + + {0xaba2, 1756, 1}, + + {0x10b2, 2966, 1}, + + {0x1ca2, 1522, 1}, + + {0x0389, 745, 1}, + + {0x10cac, 3915, 1}, + + {0x118b2, 4056, 1}, + + {0x03ff, 736, 1}, + + {0x10402, 3456, 1}, + + {0x2c02, 2591, 1}, + + {0x0402, 1011, 1}, + + {0x1e02, 1879, 1}, + + {0x10b8, 2984, 1}, + + {0x0102, 174, 1}, + + {0x10ca2, 3885, 1}, + + {0x03fd, 730, 1}, + + {0x118b8, 4074, 1}, + {0xffffffff, -1, 0}, + + {0x104b0, 3570, 1}, + + {0x2cb0, 2825, 1}, + + {0x04b0, 1162, 1}, + + {0x1eb0, 2126, 1}, + + {0x10a6, 2930, 1}, + {0xffffffff, -1, 0}, + + {0xa7b0, 718, 1}, + + {0xabb0, 1798, 1}, + + {0x118a6, 4020, 1}, + + {0x1cb0, 1564, 1}, + + {0x1e97, 34, 2}, + + {0x1f97, 204, 2}, + + {0x0197, 655, 1}, + + {0x10a4, 2924, 1}, + + {0xab97, 1723, 1}, + + {0x0390, 25, 3}, + + {0x1c97, 1489, 1}, + + {0x118a4, 4014, 1}, + + {0x1057d, 3714, 1}, + + {0x050a, 1297, 1}, + + {0x10cb0, 3927, 1}, + {0xffffffff, -1, 0}, + + {0x10585, 3738, 1}, + + {0x10589, 3750, 1}, + + {0x03f7, 896, 1}, + + {0x10a0, 2912, 1}, + + {0x03f5, 764, 1}, + + {0x10c97, 3852, 1}, + {0xffffffff, -1, 0}, + + {0x118a0, 4002, 1}, + + {0x10d64, 3996, 1}, + + {0x1f4d, 2351, 1}, + + {0x10584, 3735, 1}, + + {0xfb02, 12, 2}, + + {0x10ae, 2954, 1}, + + {0x004d, 34, 1}, + + {0x1fd7, 31, 3}, + + {0x01d7, 447, 1}, + + {0x118ae, 4044, 1}, + + {0x2caa, 2816, 1}, + + {0x04aa, 1153, 1}, + + {0x1eaa, 2117, 1}, + + {0x1faa, 219, 2}, + + {0x0202, 508, 1}, + + {0xa7aa, 652, 1}, + + {0xabaa, 1780, 1}, + + {0x10ac, 2948, 1}, + + {0x1caa, 1546, 1}, + + {0x0478, 1090, 1}, + + {0x1e78, 2057, 1}, + + {0x118ac, 4038, 1}, + + {0x0178, 168, 1}, + + {0x10590, 3768, 1}, + + {0xab78, 1630, 1}, + {0xffffffff, -1, 0}, + + {0x10a2, 2918, 1}, + + {0x03a6, 822, 1}, + + {0x24b8, 2513, 1}, + + {0x10caa, 3909, 1}, + + {0x118a2, 4008, 1}, + + {0x1ff9, 2417, 1}, + + {0x2ca8, 2813, 1}, + + {0x04a8, 1150, 1}, + + {0x1ea8, 2114, 1}, + + {0x1fa8, 209, 2}, + + {0x03a4, 816, 1}, + + {0xa7a8, 3318, 1}, + + {0xaba8, 1774, 1}, + + {0x03f1, 808, 1}, + + {0x1ca8, 1540, 1}, + + {0x2c98, 2789, 1}, + + {0x0498, 1126, 1}, + + {0x1e98, 38, 2}, + + {0x1f98, 169, 2}, + + {0x0198, 375, 1}, + + {0xa798, 3294, 1}, + + {0xab98, 1726, 1}, + + {0x03a0, 804, 1}, + + {0x1c98, 1492, 1}, + + {0x10b0, 2960, 1}, + + {0x10ca8, 3903, 1}, + + {0x1f83, 144, 2}, + + {0xff35, 3432, 1}, + + {0x118b0, 4050, 1}, + + {0xab83, 1663, 1}, + + {0xa698, 3138, 1}, + + {0x1c83, 956, 1}, + + {0x0537, 1372, 1}, + {0xffffffff, -1, 0}, + + {0x10c98, 3855, 1}, + + {0x2c96, 2786, 1}, + + {0x0496, 1123, 1}, + + {0x1e96, 16, 2}, + + {0x1f96, 199, 2}, + + {0x0196, 658, 1}, + + {0xa796, 3291, 1}, + + {0xab96, 1720, 1}, + + {0x10c83, 3792, 1}, + + {0x1c96, 1486, 1}, + + {0x1fdb, 2411, 1}, + + {0x01db, 453, 1}, + + {0x1e90a, 4224, 1}, + + {0x104c7, 3639, 1}, + + {0x00db, 156, 1}, + + {0x04c7, 1195, 1}, + + {0xa696, 3135, 1}, + + {0x1fc7, 15, 3}, + + {0x01c7, 424, 1}, + + {0xa7c7, 3345, 1}, + + {0x10c96, 3849, 1}, + + {0x00c7, 99, 1}, + + {0x2c2a, 2711, 1}, + + {0x042a, 986, 1}, + + {0x1e2a, 1939, 1}, + + {0x1f2a, 2294, 1}, + + {0x012a, 234, 1}, + + {0xa72a, 3156, 1}, + + {0x10aa, 2942, 1}, + + {0x1041d, 3537, 1}, + + {0x2c1d, 2672, 1}, + + {0x041d, 943, 1}, + + {0x118aa, 4032, 1}, + + {0x1f1d, 2285, 1}, + + {0x104be, 3612, 1}, + + {0x2cbe, 2846, 1}, + + {0x04be, 1183, 1}, + + {0x1ebe, 2147, 1}, + + {0x1fbe, 779, 1}, + + {0xab77, 1627, 1}, + + {0xa7be, 3336, 1}, + + {0xabbe, 1840, 1}, + + {0x03b0, 41, 3}, + + {0x1cbe, 1600, 1}, + + {0x017b, 348, 1}, + + {0xa77b, 3261, 1}, + + {0xab7b, 1639, 1}, + + {0x2c7f, 586, 1}, + + {0xff2a, 3399, 1}, + + {0x0397, 771, 1}, + + {0x10a8, 2936, 1}, + + {0x017f, 52, 1}, + {0xffffffff, -1, 0}, + + {0xab7f, 1651, 1}, + + {0x118a8, 4026, 1}, + + {0x104bc, 3606, 1}, + + {0x2cbc, 2843, 1}, + + {0x04bc, 1180, 1}, + + {0x1ebc, 2144, 1}, + + {0x1fbc, 62, 2}, + + {0x01bc, 414, 1}, + + {0xa7bc, 3333, 1}, + + {0xabbc, 1834, 1}, + + {0x104ba, 3600, 1}, + + {0x2cba, 2840, 1}, + + {0x04ba, 1177, 1}, + + {0x1eba, 2141, 1}, + + {0x1fba, 2390, 1}, + + {0x13f9, 1849, 1}, + + {0xa7ba, 3330, 1}, + + {0xabba, 1828, 1}, + + {0x0502, 1285, 1}, + + {0x1cba, 1594, 1}, + + {0xff33, 3426, 1}, + + {0x022a, 565, 1}, + + {0x104b6, 3588, 1}, + + {0x2cb6, 2834, 1}, + + {0x04b6, 1171, 1}, + + {0x1eb6, 2135, 1}, + + {0x1fb6, 58, 2}, + + {0x03aa, 836, 1}, + + {0xa7b6, 3324, 1}, + + {0xabb6, 1816, 1}, + + {0x10d65, 3999, 1}, + + {0x1cb6, 1582, 1}, + + {0x2c94, 2783, 1}, + + {0x0494, 1120, 1}, + + {0x1e94, 2099, 1}, + + {0x1f94, 189, 2}, + + {0x0194, 643, 1}, + {0xffffffff, -1, 0}, + + {0xab94, 1714, 1}, + + {0x10c7, 3026, 1}, + + {0x1c94, 1480, 1}, + + {0x1e4c, 1990, 1}, + + {0x1f4c, 2348, 1}, + + {0x014c, 279, 1}, + + {0xa74c, 3204, 1}, + + {0x03f9, 890, 1}, + + {0x004c, 31, 1}, + + {0xa694, 3132, 1}, + {0xffffffff, -1, 0}, + + {0x03a8, 829, 1}, + + {0x2ceb, 2903, 1}, + + {0x10c94, 3843, 1}, + {0xffffffff, -1, 0}, + + {0x1feb, 2423, 1}, + + {0xa64c, 3051, 1}, + + {0x054d, 1438, 1}, + + {0x0474, 1084, 1}, + + {0x1e74, 2051, 1}, + + {0x0398, 774, 1}, + + {0x0174, 339, 1}, + + {0x10be, 3002, 1}, + + {0xab74, 1618, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x118be, 4092, 1}, + + {0x2c92, 2780, 1}, + + {0x0492, 1117, 1}, + + {0x1e92, 2096, 1}, + + {0x1f92, 179, 2}, + {0xffffffff, -1, 0}, + + {0xa792, 3285, 1}, + + {0xab92, 1708, 1}, + + {0x10578, 3702, 1}, + + {0x1c92, 1474, 1}, + + {0x1f8b, 144, 2}, + + {0x018b, 366, 1}, + + {0xa78b, 3279, 1}, + + {0xab8b, 1687, 1}, + + {0x0396, 768, 1}, + + {0x2c6f, 607, 1}, + + {0xa692, 3129, 1}, + + {0x10bc, 2996, 1}, + + {0x1f6f, 2387, 1}, + + {0x0535, 1366, 1}, + + {0x10c92, 3837, 1}, + + {0x118bc, 4086, 1}, + + {0x10427, 3567, 1}, + + {0x2c27, 2702, 1}, + + {0x0427, 977, 1}, + + {0x10ba, 2990, 1}, + + {0x10c8b, 3816, 1}, + + {0x024c, 601, 1}, + + {0x2c63, 1870, 1}, + + {0x118ba, 4080, 1}, + + {0x2c6e, 673, 1}, + + {0x046e, 1075, 1}, + + {0x1e6e, 2042, 1}, + + {0x1f6e, 2384, 1}, + + {0x016e, 330, 1}, + + {0xa76e, 3255, 1}, + + {0x1e902, 4200, 1}, + + {0x10b6, 2978, 1}, + + {0x24c7, 2558, 1}, + + {0x10583, 3732, 1}, + + {0x01d5, 444, 1}, + + {0x118b6, 4068, 1}, + + {0x2c86, 2762, 1}, + + {0x00d5, 141, 1}, + + {0x1e86, 2078, 1}, + + {0x1f86, 159, 2}, + + {0x0186, 619, 1}, + + {0xa786, 3276, 1}, + + {0xab86, 1672, 1}, + + {0xff27, 3390, 1}, + + {0x1c86, 986, 1}, + + {0xff31, 3420, 1}, + {0xffffffff, -1, 0}, + + {0x10416, 3516, 1}, + + {0x2c16, 2651, 1}, + + {0x0416, 922, 1}, + + {0x1e16, 1909, 1}, + + {0xa686, 3111, 1}, + + {0x0116, 204, 1}, + + {0x24be, 2531, 1}, + + {0x037f, 893, 1}, + + {0x10c86, 3801, 1}, + + {0x104b4, 3582, 1}, + + {0x2cb4, 2831, 1}, + + {0x04b4, 1168, 1}, + + {0x1eb4, 2132, 1}, + + {0x1fb4, 50, 2}, + {0xffffffff, -1, 0}, + + {0xa7b4, 3321, 1}, + + {0xabb4, 1810, 1}, + {0xffffffff, -1, 0}, + + {0x1cb4, 1576, 1}, + + {0x04fe, 1279, 1}, + + {0x1efe, 2243, 1}, + + {0x052a, 1345, 1}, + + {0x01fe, 502, 1}, + + {0x2c9a, 2792, 1}, + + {0x049a, 1129, 1}, + + {0x1e9a, 0, 2}, + + {0x1f9a, 179, 2}, + + {0x24bc, 2525, 1}, + + {0xa79a, 3297, 1}, + + {0xab9a, 1732, 1}, + + {0x10577, 3699, 1}, + + {0x1c9a, 1498, 1}, + {0xffffffff, -1, 0}, + + {0x104c2, 3624, 1}, + + {0x2cc2, 2852, 1}, + + {0x24ba, 2519, 1}, + + {0x1ec2, 2153, 1}, + + {0x1fc2, 253, 2}, + + {0xa69a, 3141, 1}, + + {0xa7c2, 3342, 1}, + {0xffffffff, -1, 0}, + + {0x00c2, 83, 1}, + + {0x10c9a, 3861, 1}, + + {0xfb16, 125, 2}, + + {0x1057f, 3720, 1}, + + {0x0394, 761, 1}, + + {0x0533, 1360, 1}, + + {0x24b6, 2507, 1}, + + {0x2c8e, 2774, 1}, + + {0x048e, 1111, 1}, + + {0x1e8e, 2090, 1}, + + {0x1f8e, 159, 2}, + + {0x018e, 456, 1}, + + {0x0216, 538, 1}, + + {0xab8e, 1696, 1}, + + {0x2c8a, 2768, 1}, + + {0x048a, 1105, 1}, + + {0x1e8a, 2084, 1}, + + {0x1f8a, 139, 2}, + + {0x018a, 625, 1}, + + {0x10d61, 3987, 1}, + + {0xab8a, 1684, 1}, + {0xffffffff, -1, 0}, + + {0xa68e, 3123, 1}, + + {0x2c62, 664, 1}, + + {0x0462, 1056, 1}, + + {0x1e62, 2024, 1}, + + {0x10c8e, 3825, 1}, + + {0x0162, 312, 1}, + + {0xa762, 3237, 1}, + + {0xa68a, 3117, 1}, + {0xffffffff, -1, 0}, + + {0x104ca, 3648, 1}, + + {0x2cca, 2864, 1}, + + {0x10c8a, 3813, 1}, + + {0x1eca, 2165, 1}, + + {0x1fca, 2402, 1}, + + {0x01ca, 428, 1}, + + {0x0392, 754, 1}, + + {0xa662, 3084, 1}, + + {0x00ca, 108, 1}, + + {0x2c82, 2756, 1}, + + {0x10594, 3777, 1}, + + {0x1e82, 2072, 1}, + + {0x1f82, 139, 2}, + + {0x0182, 357, 1}, + + {0xa782, 3270, 1}, + + {0xab82, 1660, 1}, + + {0x10b4, 2972, 1}, + + {0x1c82, 946, 1}, + {0xffffffff, -1, 0}, + + {0x054c, 1435, 1}, + + {0x118b4, 4062, 1}, + {0xffffffff, -1, 0}, + + {0x1fa9, 214, 2}, + + {0x01a9, 691, 1}, + + {0xa682, 3105, 1}, + + {0xaba9, 1777, 1}, + + {0x16e4d, 4137, 1}, + + {0x1ca9, 1543, 1}, + + {0x10c82, 3789, 1}, + + {0x2c80, 2753, 1}, + + {0x0480, 1102, 1}, + + {0x1e80, 2069, 1}, + + {0x1f80, 129, 2}, + + {0x10574, 3690, 1}, + + {0xa780, 3267, 1}, + + {0xab80, 1654, 1}, + + {0x0057, 65, 1}, + + {0x1c80, 908, 1}, + + {0x10ca9, 3906, 1}, + + {0x1e91d, 4281, 1}, + + {0x10c2, 3014, 1}, + + {0x03d5, 822, 1}, + {0xffffffff, -1, 0}, + + {0x10592, 3774, 1}, + + {0xa680, 3102, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x0386, 739, 1}, + + {0x10c80, 3783, 1}, + + {0x104c4, 3630, 1}, + + {0x2cc4, 2855, 1}, + {0xffffffff, -1, 0}, + + {0x1ec4, 2156, 1}, + + {0x1fc4, 54, 2}, + + {0x01c4, 420, 1}, + + {0xa7c4, 3288, 1}, + + {0x10d63, 3993, 1}, + + {0x00c4, 89, 1}, + + {0x2c9e, 2798, 1}, + + {0x049e, 1135, 1}, + + {0x1e9e, 24, 2}, + + {0x1f9e, 199, 2}, + {0xffffffff, -1, 0}, + + {0xa79e, 3303, 1}, + + {0xab9e, 1744, 1}, + {0xffffffff, -1, 0}, + + {0x1c9e, 1510, 1}, + + {0x2c9c, 2795, 1}, + + {0x049c, 1132, 1}, + + {0x0531, 1354, 1}, + + {0x1f9c, 189, 2}, + + {0x019c, 670, 1}, + + {0xa79c, 3300, 1}, + + {0xab9c, 1738, 1}, + {0xffffffff, -1, 0}, + + {0x1c9c, 1504, 1}, + + {0x03fe, 733, 1}, + + {0x10c9e, 3873, 1}, + {0xffffffff, -1, 0}, + + {0x104cc, 3654, 1}, + + {0x2ccc, 2867, 1}, + + {0x039a, 784, 1}, + + {0x1ecc, 2168, 1}, + + {0x1fcc, 71, 2}, + + {0x10586, 3741, 1}, + + {0xa7cc, 3351, 1}, + + {0x10c9c, 3867, 1}, + + {0x00cc, 114, 1}, + + {0x1f8d, 154, 2}, + {0xffffffff, -1, 0}, + + {0xa78d, 649, 1}, + + {0xab8d, 1693, 1}, + + {0x03c2, 812, 1}, + + {0x2c8c, 2771, 1}, + + {0x048c, 1108, 1}, + + {0x1e8c, 2087, 1}, + + {0x1f8c, 149, 2}, + + {0x10a9, 2939, 1}, + + {0x0516, 1315, 1}, + + {0xab8c, 1690, 1}, + {0xffffffff, -1, 0}, + + {0x118a9, 4029, 1}, + + {0x104b5, 3585, 1}, + + {0x24c2, 2543, 1}, + + {0x10c8d, 3822, 1}, + {0xffffffff, -1, 0}, + + {0x038e, 845, 1}, + + {0x01b5, 408, 1}, + + {0xa68c, 3120, 1}, + + {0xabb5, 1813, 1}, + + {0x00b5, 791, 1}, + + {0x1cb5, 1579, 1}, + + {0x10c8c, 3819, 1}, + + {0x038a, 748, 1}, + + {0x2c88, 2765, 1}, + {0xffffffff, -1, 0}, + + {0x1e88, 2081, 1}, + + {0x1f88, 129, 2}, + + {0x2c2f, 2726, 1}, + + {0x042f, 1002, 1}, + + {0xab88, 1678, 1}, + + {0x1f2f, 2309, 1}, + + {0x1c88, 3047, 1}, + + {0x2ce2, 2900, 1}, + + {0x04e2, 1237, 1}, + + {0x1ee2, 2201, 1}, + + {0x1fe2, 36, 3}, + + {0x01e2, 465, 1}, + + {0x10c4, 3020, 1}, + + {0xa688, 3114, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x2c75, 2750, 1}, + + {0x10c88, 3807, 1}, + + {0x1e4a, 1987, 1}, + + {0x1f4a, 2342, 1}, + + {0x014a, 276, 1}, + + {0xa74a, 3201, 1}, + + {0xab75, 1621, 1}, + + {0x004a, 24, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x24ca, 2567, 1}, + + {0x1058e, 3762, 1}, + + {0xff2f, 3414, 1}, + + {0x10d62, 3990, 1}, + {0xffffffff, -1, 0}, + + {0xa64a, 3047, 1}, + {0xffffffff, -1, 0}, + + {0x03a9, 832, 1}, + + {0x1058a, 3753, 1}, + + {0x1041c, 3534, 1}, + + {0x2c1c, 2669, 1}, + + {0x041c, 940, 1}, + + {0x1e1c, 1918, 1}, + + {0x1f1c, 2282, 1}, + + {0x011c, 213, 1}, + + {0x1041a, 3528, 1}, + + {0x2c1a, 2663, 1}, + + {0x041a, 934, 1}, + + {0x1e1a, 1915, 1}, + + {0x1f1a, 2276, 1}, + + {0x011a, 210, 1}, + + {0x10418, 3522, 1}, + + {0x2c18, 2657, 1}, + + {0x0418, 928, 1}, + + {0x1e18, 1912, 1}, + + {0x1f18, 2270, 1}, + + {0x0118, 207, 1}, + + {0x1040e, 3492, 1}, + + {0x2c0e, 2627, 1}, + + {0x040e, 1047, 1}, + + {0x1e0e, 1897, 1}, + + {0x1f0e, 2264, 1}, + + {0x010e, 192, 1}, + + {0x104c1, 3621, 1}, + + {0x10582, 3729, 1}, + + {0x04c1, 1186, 1}, + {0xffffffff, -1, 0}, + + {0x16e4c, 4134, 1}, + + {0x1e916, 4260, 1}, + + {0x10b5, 2975, 1}, + + {0x10d57, 3957, 1}, + + {0x00c1, 80, 1}, + + {0x024a, 598, 1}, + + {0x118b5, 4065, 1}, + + {0x04f0, 1258, 1}, + + {0x1ef0, 2222, 1}, + + {0x039e, 798, 1}, + + {0x01f0, 20, 2}, + {0xffffffff, -1, 0}, + + {0x24c4, 2549, 1}, + + {0x1e3e, 1969, 1}, + + {0x1f3e, 2330, 1}, + {0xffffffff, -1, 0}, + + {0xa73e, 3183, 1}, + + {0x10580, 3723, 1}, + + {0x039c, 791, 1}, + + {0x1040c, 3486, 1}, + + {0x2c0c, 2621, 1}, + + {0x040c, 1041, 1}, + + {0x1e0c, 1894, 1}, + + {0x1f0c, 2258, 1}, + + {0x010c, 189, 1}, + + {0x021c, 547, 1}, + {0xffffffff, -1, 0}, + + {0x10414, 3510, 1}, + + {0x2c14, 2645, 1}, + + {0x0414, 915, 1}, + + {0x1e14, 1906, 1}, + + {0x021a, 544, 1}, + + {0x0114, 201, 1}, + + {0x10406, 3468, 1}, + + {0x2c06, 2603, 1}, + + {0x0406, 1023, 1}, + + {0x1e06, 1885, 1}, + + {0x0218, 541, 1}, + + {0x0106, 180, 1}, + {0xffffffff, -1, 0}, + + {0x1f3d, 2327, 1}, + + {0x013d, 258, 1}, + + {0x24cc, 2573, 1}, + + {0x020e, 526, 1}, + + {0x038c, 842, 1}, + + {0x10408, 3474, 1}, + + {0x2c08, 2609, 1}, + + {0x0408, 1029, 1}, + + {0x1e08, 1888, 1}, + + {0x1f08, 2246, 1}, + + {0x0108, 183, 1}, + + {0x10404, 3462, 1}, + + {0x2c04, 2597, 1}, + + {0x0404, 1017, 1}, + + {0x1e04, 1882, 1}, + {0xffffffff, -1, 0}, + + {0x0104, 177, 1}, + + {0x10400, 3450, 1}, + + {0x2c00, 2585, 1}, + + {0x0400, 1005, 1}, + + {0x1e00, 1876, 1}, + + {0x0147, 273, 1}, + + {0x0100, 171, 1}, + + {0x023e, 2735, 1}, + + {0x0047, 18, 1}, + + {0x0388, 742, 1}, + + {0x1e56, 2005, 1}, + + {0x1f56, 62, 3}, + + {0x0156, 294, 1}, + + {0xa756, 3219, 1}, + + {0xfb14, 109, 2}, + + {0x0056, 62, 1}, + + {0x020c, 523, 1}, + + {0x1058d, 3759, 1}, + + {0x03e2, 869, 1}, + + {0x10c1, 3011, 1}, + + {0xfb06, 29, 2}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0xa656, 3066, 1}, + + {0x0214, 535, 1}, + + {0x1058c, 3756, 1}, + + {0x10426, 3564, 1}, + + {0x2c26, 2699, 1}, + + {0x0426, 974, 1}, + + {0x1e26, 1933, 1}, + + {0x0206, 514, 1}, + + {0x0126, 228, 1}, + + {0xa726, 3150, 1}, + + {0x023d, 378, 1}, + + {0x10424, 3558, 1}, + + {0x2c24, 2693, 1}, + + {0x0424, 968, 1}, + + {0x1e24, 1930, 1}, + + {0xfb04, 5, 3}, + + {0x0124, 225, 1}, + + {0xa724, 3147, 1}, + + {0x1f59, 2354, 1}, + + {0x0208, 517, 1}, + {0xffffffff, -1, 0}, + + {0xfb00, 4, 2}, + + {0x0059, 71, 1}, + + {0x10588, 3747, 1}, + + {0x1fad, 234, 2}, + + {0x0204, 511, 1}, + + {0xa7ad, 667, 1}, + + {0xabad, 1789, 1}, + + {0x1f5f, 2363, 1}, + + {0x1cad, 1555, 1}, + + {0xff26, 3387, 1}, + + {0x0200, 505, 1}, + + {0x2c2e, 2723, 1}, + + {0x042e, 999, 1}, + + {0x1e2e, 1945, 1}, + + {0x1f2e, 2306, 1}, + + {0x012e, 240, 1}, + + {0xa72e, 3162, 1}, + + {0xff24, 3381, 1}, + {0xffffffff, -1, 0}, + + {0x10cad, 3918, 1}, + + {0x10575, 3693, 1}, + + {0x004f, 40, 1}, + + {0x054a, 1429, 1}, + + {0x2c2c, 2717, 1}, + + {0x042c, 993, 1}, + + {0x1e2c, 1942, 1}, + + {0x1f2c, 2300, 1}, + + {0x012c, 237, 1}, + + {0xa72c, 3159, 1}, + + {0x2c28, 2705, 1}, + + {0x0428, 980, 1}, + + {0x1e28, 1936, 1}, + + {0x1f28, 2288, 1}, + + {0x0128, 231, 1}, + + {0xa728, 3153, 1}, + + {0x0226, 559, 1}, + + {0x03f0, 784, 1}, + + {0xff2e, 3411, 1}, + + {0x24c1, 2540, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x051c, 1324, 1}, + + {0x0224, 556, 1}, + + {0x104c0, 3618, 1}, + + {0x2cc0, 2849, 1}, + + {0x04c0, 1207, 1}, + + {0x1ec0, 2150, 1}, + + {0x051a, 1321, 1}, + + {0xff2c, 3405, 1}, + + {0xa7c0, 3339, 1}, + {0xffffffff, -1, 0}, + + {0x00c0, 77, 1}, + + {0xab73, 1615, 1}, + + {0x0518, 1318, 1}, + + {0xff28, 3393, 1}, + + {0x10422, 3552, 1}, + + {0x2c22, 2687, 1}, + + {0x0422, 960, 1}, + + {0x1e22, 1927, 1}, + + {0x050e, 1303, 1}, + + {0x0122, 222, 1}, + + {0xa722, 3144, 1}, + + {0x022e, 571, 1}, + + {0x1e54, 2002, 1}, + + {0x1f54, 57, 3}, + + {0x0154, 291, 1}, + + {0xa754, 3216, 1}, + + {0x1e30, 1948, 1}, + + {0x0054, 56, 1}, + + {0x0130, 261, 2}, + + {0x1e52, 1999, 1}, + + {0x1f52, 52, 3}, + + {0x0152, 288, 1}, + + {0xa752, 3213, 1}, + + {0x022c, 568, 1}, + + {0x0052, 49, 1}, + + {0xa654, 3063, 1}, + + {0x10ad, 2951, 1}, + + {0x16e57, 4167, 1}, + + {0x053e, 1393, 1}, + + {0x0228, 562, 1}, + + {0x118ad, 4041, 1}, + + {0xff22, 3375, 1}, + + {0xa652, 3060, 1}, + + {0x1e50, 1996, 1}, + + {0x1f50, 84, 2}, + + {0x0150, 285, 1}, + + {0xa750, 3210, 1}, + + {0x050c, 1300, 1}, + + {0x0050, 43, 1}, + + {0x1fab, 224, 2}, + + {0xff30, 3417, 1}, + + {0xa7ab, 634, 1}, + + {0xabab, 1783, 1}, + + {0x104b7, 3591, 1}, + + {0x1cab, 1549, 1}, + + {0x0514, 1312, 1}, + + {0xa650, 3057, 1}, + + {0x1fb7, 10, 3}, + + {0x01b7, 712, 1}, + + {0x2164, 2468, 1}, + + {0xabb7, 1819, 1}, + + {0x0506, 1291, 1}, + + {0x1cb7, 1585, 1}, + + {0x104b1, 3573, 1}, + + {0x053d, 1390, 1}, + + {0x10cab, 3912, 1}, + {0xffffffff, -1, 0}, + + {0x0222, 553, 1}, + + {0x01b1, 703, 1}, + + {0xa7b1, 694, 1}, + + {0xabb1, 1801, 1}, + + {0x2c6d, 610, 1}, + + {0x1cb1, 1567, 1}, + + {0x0508, 1294, 1}, + + {0x1f6d, 2381, 1}, + + {0x10d56, 3954, 1}, + + {0x0230, 574, 1}, + + {0x2c6b, 2744, 1}, + {0xffffffff, -1, 0}, + + {0x0504, 1288, 1}, + + {0x1f6b, 2375, 1}, + + {0x10c0, 3008, 1}, + + {0x1e91c, 4278, 1}, + + {0x10cb1, 3930, 1}, + + {0x0547, 1420, 1}, + + {0x0500, 1282, 1}, + + {0x2c69, 2741, 1}, + {0xffffffff, -1, 0}, + + {0x1e91a, 4272, 1}, + + {0x1f69, 2369, 1}, + {0xffffffff, -1, 0}, + + {0x0556, 1465, 1}, + + {0x104b3, 3579, 1}, + {0xffffffff, -1, 0}, + + {0x1e918, 4266, 1}, + + {0x2167, 2477, 1}, + + {0x1fb3, 62, 2}, + + {0x01b3, 405, 1}, + + {0xa7b3, 3369, 1}, + + {0xabb3, 1807, 1}, + + {0x1e90e, 4236, 1}, + + {0x1cb3, 1573, 1}, + {0xffffffff, -1, 0}, + + {0x1fa7, 244, 2}, + + {0x01a7, 396, 1}, + + {0x10d59, 3963, 1}, + + {0xaba7, 1771, 1}, + + {0xab71, 1609, 1}, + + {0x1ca7, 1537, 1}, + + {0x1e4e, 1993, 1}, + + {0x0526, 1339, 1}, + + {0x014e, 282, 1}, + + {0xa74e, 3207, 1}, + {0xffffffff, -1, 0}, + + {0x004e, 37, 1}, + + {0x10d5f, 3981, 1}, + + {0x1f39, 2315, 1}, + + {0x0139, 252, 1}, + + {0x0524, 1336, 1}, + + {0x10ca7, 3900, 1}, + + {0x1e48, 1984, 1}, + + {0x1f48, 2336, 1}, + + {0xa64e, 3054, 1}, + + {0xa748, 3198, 1}, + + {0x10ab, 2945, 1}, + + {0x0048, 21, 1}, + + {0x104d3, 3675, 1}, + {0xffffffff, -1, 0}, + + {0x118ab, 4035, 1}, + + {0x1e90c, 4230, 1}, + + {0x1fd3, 25, 3}, + + {0x01d3, 441, 1}, + + {0x10b7, 2981, 1}, + + {0xa648, 3044, 1}, + + {0x00d3, 135, 1}, + {0xffffffff, -1, 0}, + + {0x118b7, 4071, 1}, + + {0x1e914, 4254, 1}, + + {0x052e, 1351, 1}, + + {0xff39, 3444, 1}, + + {0x16e4a, 4128, 1}, + + {0x054f, 1444, 1}, + + {0x10b1, 2963, 1}, + + {0x1e906, 4212, 1}, + + {0x24c0, 2537, 1}, + {0xffffffff, -1, 0}, + + {0x118b1, 4053, 1}, + + {0x2c60, 2729, 1}, + + {0x0460, 1053, 1}, + + {0x1e60, 2020, 1}, + + {0x052c, 1348, 1}, + + {0x0160, 309, 1}, + + {0xa760, 3234, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x1e908, 4218, 1}, + + {0x0528, 1342, 1}, + + {0x2c2b, 2714, 1}, + + {0x042b, 990, 1}, + + {0x024e, 604, 1}, + + {0x1f2b, 2297, 1}, + + {0x1e904, 4206, 1}, + + {0xa660, 3081, 1}, + + {0x10420, 3546, 1}, + + {0x2c20, 2681, 1}, + + {0x0420, 953, 1}, + + {0x1e20, 1924, 1}, + + {0x1e900, 4194, 1}, + + {0x0120, 219, 1}, + {0xffffffff, -1, 0}, + + {0x0248, 595, 1}, + + {0x10b3, 2969, 1}, + + {0x10573, 3687, 1}, + + {0x10d54, 3948, 1}, + {0xffffffff, -1, 0}, + + {0x118b3, 4059, 1}, + + {0x03ab, 839, 1}, + {0xffffffff, -1, 0}, + + {0x10a7, 2933, 1}, + {0xffffffff, -1, 0}, + + {0x10d52, 3942, 1}, + {0xffffffff, -1, 0}, + + {0x118a7, 4023, 1}, + + {0xff2b, 3402, 1}, + + {0x0522, 1333, 1}, + + {0x1041e, 3540, 1}, + + {0x2c1e, 2675, 1}, + + {0x041e, 946, 1}, + + {0x1e1e, 1921, 1}, + + {0x0554, 1459, 1}, + + {0x011e, 216, 1}, + + {0x10425, 3561, 1}, + + {0x2c25, 2696, 1}, + + {0x0425, 971, 1}, + + {0x10d50, 3936, 1}, + + {0x24b7, 2510, 1}, + + {0x0552, 1453, 1}, + + {0x10412, 3504, 1}, + + {0x2c12, 2639, 1}, + + {0x0412, 908, 1}, + + {0x1e12, 1903, 1}, + + {0x2165, 2471, 1}, + + {0x0112, 198, 1}, + + {0x10410, 3498, 1}, + + {0x2c10, 2633, 1}, + + {0x0410, 902, 1}, + + {0x1e10, 1900, 1}, + {0xffffffff, -1, 0}, + + {0x0110, 195, 1}, + {0xffffffff, -1, 0}, + + {0x0550, 1447, 1}, + {0xffffffff, -1, 0}, + + {0x2cda, 2888, 1}, + + {0x04da, 1225, 1}, + + {0x1eda, 2189, 1}, + + {0x1fda, 2408, 1}, + + {0x0220, 384, 1}, + + {0xa7da, 3363, 1}, + + {0xff25, 3384, 1}, + + {0x00da, 153, 1}, + + {0x2cd8, 2885, 1}, + + {0x04d8, 1222, 1}, + + {0x1ed8, 2186, 1}, + + {0x1fd8, 2438, 1}, + {0xffffffff, -1, 0}, + + {0xa7d8, 3360, 1}, + {0xffffffff, -1, 0}, + + {0x00d8, 147, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x03a7, 826, 1}, + + {0x0055, 59, 1}, + + {0x2cd6, 2882, 1}, + + {0x04d6, 1219, 1}, + + {0x1ed6, 2183, 1}, + + {0x1fd6, 76, 2}, + {0xffffffff, -1, 0}, + + {0xa7d6, 3357, 1}, + + {0x021e, 550, 1}, + + {0x00d6, 144, 1}, + + {0x104d0, 3666, 1}, + + {0x2cd0, 2873, 1}, + + {0x04d0, 1210, 1}, + + {0x1ed0, 2174, 1}, + + {0x16e47, 4119, 1}, + + {0x104b9, 3597, 1}, + + {0xa7d0, 3354, 1}, + {0xffffffff, -1, 0}, + + {0x00d0, 126, 1}, + + {0x1fb9, 2435, 1}, + + {0x0212, 532, 1}, + + {0x16e56, 4164, 1}, + + {0xabb9, 1825, 1}, + + {0x104cb, 3651, 1}, + + {0x1cb9, 1591, 1}, + + {0x04cb, 1201, 1}, + + {0x0210, 529, 1}, + + {0x1fcb, 2405, 1}, + + {0x01cb, 428, 1}, + + {0xa7cb, 646, 1}, + + {0x2183, 2504, 1}, + + {0x00cb, 111, 1}, + + {0x104c8, 3642, 1}, + + {0x2cc8, 2861, 1}, + {0xffffffff, -1, 0}, + + {0x1ec8, 2162, 1}, + + {0x1fc8, 2396, 1}, + + {0x01c8, 424, 1}, + + {0x10571, 3681, 1}, + {0xffffffff, -1, 0}, + + {0x00c8, 102, 1}, + + {0x104c6, 3636, 1}, + + {0x2cc6, 2858, 1}, + + {0x1f5d, 2360, 1}, + + {0x1ec6, 2159, 1}, + + {0x1fc6, 67, 2}, + + {0x054e, 1441, 1}, + + {0xa7c6, 1873, 1}, + + {0x104c5, 3633, 1}, + + {0x00c6, 96, 1}, + + {0x04c5, 1192, 1}, + + {0x16e59, 4173, 1}, + + {0x0539, 1378, 1}, + + {0x01c5, 420, 1}, + + {0xa7c5, 688, 1}, + {0xffffffff, -1, 0}, + + {0x00c5, 92, 1}, + + {0x0548, 1423, 1}, + {0xffffffff, -1, 0}, + + {0x1faf, 244, 2}, + + {0x01af, 402, 1}, + + {0x16e5f, 4191, 1}, + + {0xabaf, 1795, 1}, + + {0x212a, 27, 1}, + + {0x1caf, 1561, 1}, + + {0x04fc, 1276, 1}, + + {0x1efc, 2240, 1}, + + {0x1ffc, 96, 2}, + + {0x01fc, 499, 1}, + + {0x1fa5, 234, 2}, + + {0x10d60, 3984, 1}, + + {0x16e4f, 4143, 1}, + + {0xaba5, 1765, 1}, + {0xffffffff, -1, 0}, + + {0x1ca5, 1531, 1}, + + {0x10caf, 3924, 1}, + + {0x1fa3, 224, 2}, + + {0x1fa1, 214, 2}, + {0xffffffff, -1, 0}, + + {0xaba3, 1759, 1}, + + {0xaba1, 1753, 1}, + + {0x1ca3, 1525, 1}, + + {0x1ca1, 1519, 1}, + + {0x1f91, 174, 2}, + + {0x0191, 369, 1}, + + {0x10ca5, 3894, 1}, + + {0xab91, 1705, 1}, + {0xffffffff, -1, 0}, + + {0x1c91, 1471, 1}, + + {0x10421, 3549, 1}, + + {0x2c21, 2684, 1}, + + {0x0421, 956, 1}, + + {0x10ca3, 3888, 1}, + + {0x10ca1, 3882, 1}, + + {0x10b9, 2987, 1}, + {0xffffffff, -1, 0}, + + {0x1f49, 2339, 1}, + + {0x0149, 46, 2}, + + {0x118b9, 4077, 1}, + + {0x10c91, 3834, 1}, + + {0x0049, 4296, 1}, + + {0x1f87, 164, 2}, + + {0x0187, 363, 1}, + + {0x0520, 1330, 1}, + + {0xab87, 1675, 1}, + {0xffffffff, -1, 0}, + + {0x1c87, 1056, 1}, + + {0x2c72, 2747, 1}, + + {0x0472, 1081, 1}, + + {0x1e72, 2048, 1}, + {0xffffffff, -1, 0}, + + {0x0172, 336, 1}, + + {0x03da, 857, 1}, + + {0xab72, 1612, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0xff21, 3372, 1}, + + {0x10c87, 3804, 1}, + + {0x2161, 2459, 1}, + + {0x16e54, 4158, 1}, + + {0x03d8, 854, 1}, + + {0x1e32, 1951, 1}, + {0xffffffff, -1, 0}, + + {0x0132, 243, 1}, + + {0xa732, 3165, 1}, + + {0x051e, 1327, 1}, + + {0x16e52, 4152, 1}, + + {0x10c5, 3023, 1}, + {0xffffffff, -1, 0}, + + {0x2c70, 613, 1}, + + {0x0470, 1078, 1}, + + {0x1e70, 2045, 1}, + + {0x03d6, 804, 1}, + + {0x0170, 333, 1}, + + {0x10af, 2957, 1}, + + {0xab70, 1606, 1}, + {0xffffffff, -1, 0}, + + {0x0512, 1309, 1}, + + {0x118af, 4047, 1}, + {0xffffffff, -1, 0}, + + {0x16e50, 4146, 1}, + + {0x03d0, 754, 1}, + {0xffffffff, -1, 0}, + + {0x0510, 1306, 1}, + + {0x10a5, 2927, 1}, + + {0xff32, 3423, 1}, + {0xffffffff, -1, 0}, + + {0x10d55, 3951, 1}, + + {0x118a5, 4017, 1}, + + {0x047c, 1096, 1}, + + {0x1e7c, 2063, 1}, + + {0x10a3, 2921, 1}, + + {0x10a1, 2915, 1}, + {0xffffffff, -1, 0}, + + {0xab7c, 1642, 1}, + + {0x118a3, 4011, 1}, + + {0x118a1, 4005, 1}, + + {0x24b9, 2516, 1}, + + {0x046c, 1072, 1}, + + {0x1e6c, 2039, 1}, + + {0x1f6c, 2378, 1}, + + {0x016c, 327, 1}, + + {0xa76c, 3252, 1}, + + {0x0555, 1462, 1}, + + {0x13fc, 1858, 1}, + + {0x24cb, 2570, 1}, + + {0x046a, 1069, 1}, + + {0x1e6a, 2036, 1}, + + {0x1f6a, 2372, 1}, + + {0x016a, 324, 1}, + + {0xa76a, 3249, 1}, + + {0x0232, 577, 1}, + + {0xa66c, 3099, 1}, + + {0x216f, 2501, 1}, + + {0x24c8, 2561, 1}, + + {0x0468, 1066, 1}, + + {0x1e68, 2033, 1}, + + {0x1f68, 2366, 1}, + + {0x0168, 321, 1}, + + {0xa768, 3246, 1}, + + {0xa66a, 3096, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x24c6, 2555, 1}, + {0xffffffff, -1, 0}, + + {0x1e920, 4290, 1}, + + {0x2163, 2465, 1}, + {0xffffffff, -1, 0}, + + {0x216e, 2498, 1}, + + {0xa668, 3093, 1}, + + {0x24c5, 2552, 1}, + {0xffffffff, -1, 0}, + + {0x1e5a, 2011, 1}, + + {0x10d5d, 3975, 1}, + + {0x015a, 300, 1}, + + {0xa75a, 3225, 1}, + + {0x03a5, 819, 1}, + + {0x005a, 74, 1}, + {0xffffffff, -1, 0}, + + {0x1f8f, 164, 2}, + + {0x018f, 628, 1}, + {0xffffffff, -1, 0}, + + {0xab8f, 1699, 1}, + + {0x03a3, 812, 1}, + + {0x03a1, 808, 1}, + + {0xa65a, 3072, 1}, + + {0x16e4e, 4140, 1}, + + {0x1e91e, 4284, 1}, + {0xffffffff, -1, 0}, + + {0x1e58, 2008, 1}, + + {0x0391, 751, 1}, + + {0x0158, 297, 1}, + + {0xa758, 3222, 1}, + + {0x1e46, 1981, 1}, + + {0x0058, 68, 1}, + + {0x10c8f, 3828, 1}, + + {0xa746, 3195, 1}, + + {0x16e48, 4122, 1}, + + {0x0046, 15, 1}, + + {0x1e912, 4248, 1}, + + {0x04ee, 1255, 1}, + + {0x1eee, 2219, 1}, + + {0xa658, 3069, 1}, + + {0x01ee, 483, 1}, + + {0x104bf, 3615, 1}, + + {0x1e910, 4242, 1}, + + {0xa646, 3041, 1}, + + {0x1e44, 1978, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0xa744, 3192, 1}, + + {0xabbf, 1843, 1}, + + {0x0044, 9, 1}, + + {0x1cbf, 1603, 1}, + + {0x2cde, 2894, 1}, + + {0x04de, 1231, 1}, + + {0x1ede, 2195, 1}, + + {0x0372, 724, 1}, + + {0x01de, 459, 1}, + {0xffffffff, -1, 0}, + + {0xa644, 3038, 1}, + + {0x00de, 165, 1}, + + {0x104bd, 3609, 1}, + + {0x2cdc, 2891, 1}, + + {0x04dc, 1228, 1}, + + {0x1edc, 2192, 1}, + {0xffffffff, -1, 0}, + + {0x10591, 3771, 1}, + + {0xa7dc, 381, 1}, + + {0xabbd, 1837, 1}, + + {0x00dc, 159, 1}, + + {0x1cbd, 1597, 1}, + + {0x104d2, 3672, 1}, + + {0x2cd2, 2876, 1}, + + {0x04d2, 1213, 1}, + + {0x1ed2, 2177, 1}, + + {0x1fd2, 20, 3}, + + {0x104bb, 3603, 1}, + {0xffffffff, -1, 0}, + + {0x0370, 721, 1}, + + {0x00d2, 132, 1}, + + {0x1fbb, 2393, 1}, + + {0x0549, 1426, 1}, + + {0x0246, 592, 1}, + + {0xabbb, 1831, 1}, + + {0x10587, 3744, 1}, + {0xffffffff, -1, 0}, + + {0x0587, 105, 2}, + + {0x104cd, 3657, 1}, + {0xffffffff, -1, 0}, + + {0x04cd, 1204, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x01cd, 432, 1}, + + {0x10572, 3684, 1}, + + {0x2162, 2462, 1}, + + {0x00cd, 117, 1}, + + {0x0244, 700, 1}, + + {0x104c9, 3645, 1}, + + {0x104c3, 3627, 1}, + + {0x04c9, 1198, 1}, + + {0x04c3, 1189, 1}, + + {0x1fc9, 2399, 1}, + + {0x1fc3, 71, 2}, + + {0xa7c9, 3348, 1}, + {0xffffffff, -1, 0}, + + {0x00c9, 105, 1}, + + {0x00c3, 86, 1}, + + {0x0532, 1357, 1}, + + {0x1f9f, 204, 2}, + + {0x019f, 679, 1}, + {0xffffffff, -1, 0}, + + {0xab9f, 1747, 1}, + {0xffffffff, -1, 0}, + + {0x1c9f, 1513, 1}, + + {0x1f5b, 2357, 1}, + + {0x10570, 3678, 1}, + + {0x1f9d, 194, 2}, + + {0x019d, 676, 1}, + {0xffffffff, -1, 0}, + + {0xab9d, 1741, 1}, + + {0x1f95, 194, 2}, + + {0x1c9d, 1507, 1}, + + {0x10bf, 3005, 1}, + + {0xab95, 1717, 1}, + + {0x10c9f, 3876, 1}, + + {0x1c95, 1483, 1}, + + {0x118bf, 4095, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x1e9b, 2020, 1}, + + {0x1f9b, 184, 2}, + {0xffffffff, -1, 0}, + + {0x10c9d, 3870, 1}, + + {0xab9b, 1735, 1}, + + {0x1057c, 3711, 1}, + + {0x1c9b, 1501, 1}, + + {0x10c95, 3846, 1}, + + {0x1e99, 42, 2}, + + {0x1f99, 174, 2}, + {0xffffffff, -1, 0}, + + {0x10bd, 2999, 1}, + + {0xab99, 1729, 1}, + + {0x16e55, 4161, 1}, + + {0x1c99, 1495, 1}, + + {0x118bd, 4089, 1}, + + {0x038f, 848, 1}, + + {0x10c9b, 3864, 1}, + + {0x1f93, 184, 2}, + + {0x0193, 637, 1}, + {0xffffffff, -1, 0}, + + {0xab93, 1711, 1}, + {0xffffffff, -1, 0}, + + {0x1c93, 1477, 1}, + + {0x1f4b, 2345, 1}, + + {0x10c99, 3858, 1}, + + {0x10bb, 2993, 1}, + {0xffffffff, -1, 0}, + + {0x004b, 27, 1}, + + {0x0143, 267, 1}, + + {0x118bb, 4083, 1}, + + {0x1e921, 4293, 1}, + + {0x0043, 6, 1}, + + {0x10d5a, 3966, 1}, + + {0x10c93, 3840, 1}, + + {0x1f81, 134, 2}, + + {0x0181, 616, 1}, + + {0x10cd, 3029, 1}, + + {0xab81, 1657, 1}, + + {0x03ee, 887, 1}, + + {0x1c81, 915, 1}, + + {0x2c7e, 583, 1}, + + {0x047e, 1099, 1}, + + {0x1e7e, 2066, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0xa77e, 3264, 1}, + + {0xab7e, 1648, 1}, + + {0x10c3, 3017, 1}, + + {0x0145, 270, 1}, + + {0x10d58, 3960, 1}, + + {0x10c81, 3786, 1}, + + {0x0045, 12, 1}, + + {0x1058f, 3765, 1}, + + {0x03de, 863, 1}, + {0xffffffff, -1, 0}, + + {0x24bf, 2534, 1}, + + {0x0476, 1087, 1}, + + {0x1e76, 2054, 1}, + + {0x16e5d, 4185, 1}, + + {0x0176, 342, 1}, + {0xffffffff, -1, 0}, + + {0xab76, 1624, 1}, + + {0x03dc, 860, 1}, + + {0x0466, 1063, 1}, + + {0x1e66, 2030, 1}, + {0xffffffff, -1, 0}, + + {0x0166, 318, 1}, + + {0xa766, 3243, 1}, + + {0x1e5e, 2017, 1}, + + {0x0546, 1417, 1}, + + {0x015e, 306, 1}, + + {0xa75e, 3231, 1}, + + {0x1e5c, 2014, 1}, + + {0x24bd, 2528, 1}, + + {0x015c, 303, 1}, + + {0xa75c, 3228, 1}, + + {0x0243, 354, 1}, + + {0xa666, 3090, 1}, + {0xffffffff, -1, 0}, + + {0x1e42, 1975, 1}, + {0xffffffff, -1, 0}, + + {0xa65e, 3078, 1}, + + {0xa742, 3189, 1}, + + {0x0544, 1411, 1}, + + {0x0042, 3, 1}, + + {0xa65c, 3075, 1}, + + {0x0053, 52, 1}, + {0xffffffff, -1, 0}, + + {0x24bb, 2522, 1}, + + {0x104cf, 3663, 1}, + + {0x1e3a, 1963, 1}, + + {0x1f3a, 2318, 1}, + + {0xa642, 3035, 1}, + + {0xa73a, 3177, 1}, + + {0x01cf, 435, 1}, + + {0x0141, 264, 1}, + + {0x0245, 709, 1}, + + {0x00cf, 123, 1}, + + {0x0041, 0, 1}, + + {0x24cd, 2576, 1}, + {0xffffffff, -1, 0}, + + {0x04fa, 1273, 1}, + + {0x1efa, 2237, 1}, + + {0x1ffa, 2426, 1}, + + {0x01fa, 496, 1}, + + {0x039f, 801, 1}, + {0xffffffff, -1, 0}, + + {0x047a, 1093, 1}, + + {0x1e7a, 2060, 1}, + + {0x24c9, 2564, 1}, + + {0x24c3, 2546, 1}, + + {0x16e49, 4125, 1}, + + {0xab7a, 1636, 1}, + + {0x039d, 795, 1}, + + {0xff3a, 3447, 1}, + + {0x0051, 46, 1}, + {0xffffffff, -1, 0}, + + {0x0395, 764, 1}, + + {0x04f4, 1264, 1}, + + {0x1ef4, 2228, 1}, + + {0x1ff4, 101, 2}, + + {0x01f4, 490, 1}, + + {0x2cf2, 2909, 1}, + + {0x04f2, 1261, 1}, + + {0x1ef2, 2225, 1}, + + {0x1ff2, 257, 2}, + + {0x01f2, 486, 1}, + + {0x039b, 788, 1}, + {0xffffffff, -1, 0}, + + {0x04ec, 1252, 1}, + + {0x1eec, 2216, 1}, + + {0x1fec, 2450, 1}, + + {0x01ec, 480, 1}, + {0xffffffff, -1, 0}, + + {0x10d5b, 3969, 1}, + + {0x0399, 779, 1}, + + {0x04ea, 1249, 1}, + + {0x1eea, 2213, 1}, + + {0x1fea, 2420, 1}, + + {0x01ea, 477, 1}, + + {0x023a, 2732, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x0241, 589, 1}, + + {0x0393, 758, 1}, + + {0x04e8, 1246, 1}, + + {0x1ee8, 2210, 1}, + + {0x1fe8, 2444, 1}, + + {0x01e8, 474, 1}, + + {0x04e6, 1243, 1}, + + {0x1ee6, 2207, 1}, + + {0x1fe6, 88, 2}, + + {0x01e6, 471, 1}, + {0xffffffff, -1, 0}, + + {0x10595, 3780, 1}, + + {0x04e4, 1240, 1}, + + {0x1ee4, 2204, 1}, + + {0x1fe4, 80, 2}, + + {0x01e4, 468, 1}, + + {0x2ce0, 2897, 1}, + + {0x04e0, 1234, 1}, + + {0x1ee0, 2198, 1}, + {0xffffffff, -1, 0}, + + {0x01e0, 462, 1}, + + {0x104ce, 3660, 1}, + + {0x2cce, 2870, 1}, + + {0x1e40, 1972, 1}, + + {0x1ece, 2171, 1}, + {0xffffffff, -1, 0}, + + {0xa740, 3186, 1}, + + {0x1e38, 1960, 1}, + + {0x1f38, 2312, 1}, + + {0x00ce, 120, 1}, + + {0xa738, 3174, 1}, + + {0x0345, 779, 1}, + + {0x1e36, 1957, 1}, + + {0x104d1, 3669, 1}, + + {0x0136, 249, 1}, + + {0xa736, 3171, 1}, + + {0xa640, 3032, 1}, + + {0x1e34, 1954, 1}, + + {0x01d1, 438, 1}, + + {0x0134, 246, 1}, + + {0xa734, 3168, 1}, + + {0x00d1, 129, 1}, + + {0x0376, 727, 1}, + + {0x1041b, 3531, 1}, + + {0x2c1b, 2666, 1}, + + {0x041b, 937, 1}, + + {0x054b, 1432, 1}, + + {0x1f1b, 2279, 1}, + + {0x1f3f, 2333, 1}, + + {0x013f, 261, 1}, + + {0x0543, 1408, 1}, + + {0xff38, 3441, 1}, + + {0x10417, 3519, 1}, + + {0x2c17, 2654, 1}, + + {0x0417, 925, 1}, + + {0x10581, 3726, 1}, + + {0xff36, 3435, 1}, + + {0x13fa, 1852, 1}, + + {0x10419, 3525, 1}, + + {0x2c19, 2660, 1}, + + {0x0419, 931, 1}, + + {0xff34, 3429, 1}, + + {0x1f19, 2273, 1}, + {0xffffffff, -1, 0}, + + {0x1057e, 3717, 1}, + + {0x16e5a, 4176, 1}, + + {0x10415, 3513, 1}, + + {0x2c15, 2648, 1}, + + {0x0415, 919, 1}, + {0xffffffff, -1, 0}, + + {0x0545, 1414, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x10413, 3507, 1}, + + {0x2c13, 2642, 1}, + + {0x0413, 912, 1}, + + {0x10d5e, 3978, 1}, + + {0x03cf, 851, 1}, + {0xffffffff, -1, 0}, + + {0x10576, 3696, 1}, + + {0x10d5c, 3972, 1}, + {0xffffffff, -1, 0}, + + {0x16e58, 4170, 1}, + + {0x10405, 3465, 1}, + + {0x2c05, 2600, 1}, + + {0x0405, 1020, 1}, + + {0x16e46, 4116, 1}, + + {0x03fa, 899, 1}, + + {0x24cf, 2582, 1}, + + {0x10d53, 3945, 1}, + {0xffffffff, -1, 0}, + + {0x2126, 832, 1}, + + {0x1040f, 3495, 1}, + + {0x2c0f, 2630, 1}, + + {0x040f, 1050, 1}, + + {0xfb17, 117, 2}, + + {0x1f0f, 2267, 1}, + + {0x1040d, 3489, 1}, + + {0x2c0d, 2624, 1}, + + {0x040d, 1044, 1}, + + {0x16e44, 4110, 1}, + + {0x1f0d, 2261, 1}, + {0xffffffff, -1, 0}, + + {0x0542, 1405, 1}, + + {0x03f4, 774, 1}, + + {0x0553, 1456, 1}, + + {0x1040b, 3483, 1}, + + {0x2c0b, 2618, 1}, + + {0x040b, 1038, 1}, + + {0xfb15, 113, 2}, + + {0x1f0b, 2255, 1}, + + {0x10403, 3459, 1}, + + {0x2c03, 2594, 1}, + + {0x0403, 1014, 1}, + + {0x053a, 1381, 1}, + + {0x03ec, 884, 1}, + + {0xfb13, 121, 2}, + + {0x0541, 1402, 1}, + + {0x10d51, 3939, 1}, + + {0x10409, 3477, 1}, + + {0x2c09, 2612, 1}, + + {0x0409, 1032, 1}, + + {0x03ea, 881, 1}, + + {0x1f09, 2249, 1}, + + {0x1f3b, 2321, 1}, + + {0x013b, 255, 1}, + + {0xfb05, 29, 2}, + + {0x10401, 3453, 1}, + + {0x2c01, 2588, 1}, + + {0x0401, 1008, 1}, + + {0x1057a, 3708, 1}, + + {0x03e8, 878, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x0551, 1450, 1}, + + {0x03e6, 875, 1}, + + {0x04f8, 1270, 1}, + + {0x1ef8, 2234, 1}, + + {0x1ff8, 2414, 1}, + + {0x01f8, 493, 1}, + {0xffffffff, -1, 0}, + + {0x03e4, 872, 1}, + + {0x04f6, 1267, 1}, + + {0x1ef6, 2231, 1}, + + {0x1ff6, 92, 2}, + + {0x01f6, 372, 1}, + + {0x03e0, 866, 1}, + {0xffffffff, -1, 0}, + + {0x2cd4, 2879, 1}, + + {0x04d4, 1216, 1}, + + {0x1ed4, 2180, 1}, + + {0x0179, 345, 1}, + + {0xa779, 3258, 1}, + + {0xab79, 1633, 1}, + + {0xfb03, 0, 3}, + + {0x00d4, 138, 1}, + + {0x1e3c, 1966, 1}, + + {0x1f3c, 2324, 1}, + {0xffffffff, -1, 0}, + + {0xa73c, 3180, 1}, + + {0x10423, 3555, 1}, + + {0x2c23, 2690, 1}, + + {0x0423, 965, 1}, + + {0x24ce, 2579, 1}, + + {0x03d1, 774, 1}, + + {0x2c2d, 2720, 1}, + + {0x042d, 996, 1}, + + {0x16e5b, 4179, 1}, + + {0x1f2d, 2303, 1}, + {0xffffffff, -1, 0}, + + {0xfb01, 8, 2}, + + {0x2c29, 2708, 1}, + + {0x0429, 983, 1}, + + {0x023b, 580, 1}, + + {0x1f29, 2291, 1}, + + {0x1041f, 3543, 1}, + + {0x2c1f, 2678, 1}, + + {0x041f, 950, 1}, + + {0x10411, 3501, 1}, + + {0x2c11, 2636, 1}, + + {0x0411, 905, 1}, + + {0x10407, 3471, 1}, + + {0x2c07, 2606, 1}, + + {0x0407, 1026, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0xff23, 3378, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x0540, 1399, 1}, + + {0xff2d, 3408, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x0538, 1375, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0xff29, 3396, 1}, + {0xffffffff, -1, 0}, + + {0x0536, 1369, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x0534, 1363, 1}, + {0xffffffff, -1, 0}, + + {0x16e4b, 4131, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x16e43, 4107, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x053f, 1396, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, + + {0x216d, 2495, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x216b, 2489, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x16e45, 4113, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x13f8, 1846, 1}, + + {0x2169, 2483, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x16e5e, 4188, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x16e5c, 4182, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, + + {0x16e42, 4104, 1}, + {0xffffffff, -1, 0}, + + {0x16e53, 4155, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, + + {0x16e41, 4101, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x053b, 1384, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x16e51, 4149, 1}, + + {0x1e91b, 4275, 1}, + {0xffffffff, -1, 0}, + + {0x2160, 2456, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, + + {0x1e917, 4263, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x212b, 92, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x1e919, 4269, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x10579, 3705, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x1e915, 4257, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x053c, 1387, 1}, + {0xffffffff, -1, 0}, + + {0x1e913, 4251, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x1e905, 4209, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x1e90f, 4239, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x1e90d, 4233, 1}, + + {0x16e40, 4098, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x1e90b, 4227, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x1e903, 4203, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x1e909, 4221, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x1e901, 4197, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x1e91f, 4287, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x1e911, 4245, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x1e907, 4215, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x2132, 2453, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x216c, 2492, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x216a, 2486, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x2168, 2480, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x2166, 2474, 1} + }; + + + { + int key = hash(&code); + + if (key <= MAX_HASH_VALUE) + { + OnigCodePoint gcode = wordlist[key].code; + + if (code == gcode && wordlist[key].index >= 0) + return &wordlist[key]; + } + } + return 0; +} diff --git a/vendor/oniguruma/oniguruma/src/unicode_wb_data.c b/vendor/oniguruma/oniguruma/src/unicode_wb_data.c new file mode 100644 index 0000000..aa078fb --- /dev/null +++ b/vendor/oniguruma/oniguruma/src/unicode_wb_data.c @@ -0,0 +1,1138 @@ +/* unicode_wb_data.c: Generated by make_unicode_wb_data.py. */ +/*- + * Copyright (c) 2019-2024 K.Kosako + * 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 WORD_BREAK_PROPERTY_VERSION 160000 + +/* +ALetter +CR +Double_Quote +Extend +ExtendNumLet +Format +Hebrew_Letter +Katakana +LF +MidLetter +MidNum +MidNumLet +Newline +Numeric +Regional_Indicator +Single_Quote +WSegSpace +ZWJ +*/ + +static int WB_RANGE_NUM = 1085; +static WB_RANGE_TYPE WB_RANGES[] = { + {0x00000a, 0x00000a, WB_LF }, + {0x00000b, 0x00000c, WB_Newline }, + {0x00000d, 0x00000d, WB_CR }, + {0x000020, 0x000020, WB_WSegSpace }, + {0x000022, 0x000022, WB_Double_Quote }, + {0x000027, 0x000027, WB_Single_Quote }, + {0x00002c, 0x00002c, WB_MidNum }, + {0x00002e, 0x00002e, WB_MidNumLet }, + {0x000030, 0x000039, WB_Numeric }, + {0x00003a, 0x00003a, WB_MidLetter }, + {0x00003b, 0x00003b, WB_MidNum }, + {0x000041, 0x00005a, WB_ALetter }, + {0x00005f, 0x00005f, WB_ExtendNumLet }, + {0x000061, 0x00007a, WB_ALetter }, + {0x000085, 0x000085, WB_Newline }, + {0x0000aa, 0x0000aa, WB_ALetter }, + {0x0000ad, 0x0000ad, WB_Format }, + {0x0000b5, 0x0000b5, WB_ALetter }, + {0x0000b7, 0x0000b7, WB_MidLetter }, + {0x0000ba, 0x0000ba, WB_ALetter }, + {0x0000c0, 0x0000d6, WB_ALetter }, + {0x0000d8, 0x0000f6, WB_ALetter }, + {0x0000f8, 0x0002d7, WB_ALetter }, + {0x0002de, 0x0002ff, WB_ALetter }, + {0x000300, 0x00036f, WB_Extend }, + {0x000370, 0x000374, WB_ALetter }, + {0x000376, 0x000377, WB_ALetter }, + {0x00037a, 0x00037d, WB_ALetter }, + {0x00037e, 0x00037e, WB_MidNum }, + {0x00037f, 0x00037f, WB_ALetter }, + {0x000386, 0x000386, WB_ALetter }, + {0x000387, 0x000387, WB_MidLetter }, + {0x000388, 0x00038a, WB_ALetter }, + {0x00038c, 0x00038c, WB_ALetter }, + {0x00038e, 0x0003a1, WB_ALetter }, + {0x0003a3, 0x0003f5, WB_ALetter }, + {0x0003f7, 0x000481, WB_ALetter }, + {0x000483, 0x000489, WB_Extend }, + {0x00048a, 0x00052f, WB_ALetter }, + {0x000531, 0x000556, WB_ALetter }, + {0x000559, 0x00055c, WB_ALetter }, + {0x00055e, 0x00055e, WB_ALetter }, + {0x00055f, 0x00055f, WB_MidLetter }, + {0x000560, 0x000588, WB_ALetter }, + {0x000589, 0x000589, WB_MidNum }, + {0x00058a, 0x00058a, WB_ALetter }, + {0x000591, 0x0005bd, WB_Extend }, + {0x0005bf, 0x0005bf, WB_Extend }, + {0x0005c1, 0x0005c2, WB_Extend }, + {0x0005c4, 0x0005c5, WB_Extend }, + {0x0005c7, 0x0005c7, WB_Extend }, + {0x0005d0, 0x0005ea, WB_Hebrew_Letter }, + {0x0005ef, 0x0005f2, WB_Hebrew_Letter }, + {0x0005f3, 0x0005f3, WB_ALetter }, + {0x0005f4, 0x0005f4, WB_MidLetter }, + {0x000600, 0x000605, WB_Numeric }, + {0x00060c, 0x00060d, WB_MidNum }, + {0x000610, 0x00061a, WB_Extend }, + {0x00061c, 0x00061c, WB_Format }, + {0x000620, 0x00064a, WB_ALetter }, + {0x00064b, 0x00065f, WB_Extend }, + {0x000660, 0x000669, WB_Numeric }, + {0x00066b, 0x00066b, WB_Numeric }, + {0x00066c, 0x00066c, WB_MidNum }, + {0x00066e, 0x00066f, WB_ALetter }, + {0x000670, 0x000670, WB_Extend }, + {0x000671, 0x0006d3, WB_ALetter }, + {0x0006d5, 0x0006d5, WB_ALetter }, + {0x0006d6, 0x0006dc, WB_Extend }, + {0x0006dd, 0x0006dd, WB_Numeric }, + {0x0006df, 0x0006e4, WB_Extend }, + {0x0006e5, 0x0006e6, WB_ALetter }, + {0x0006e7, 0x0006e8, WB_Extend }, + {0x0006ea, 0x0006ed, WB_Extend }, + {0x0006ee, 0x0006ef, WB_ALetter }, + {0x0006f0, 0x0006f9, WB_Numeric }, + {0x0006fa, 0x0006fc, WB_ALetter }, + {0x0006ff, 0x0006ff, WB_ALetter }, + {0x00070f, 0x000710, WB_ALetter }, + {0x000711, 0x000711, WB_Extend }, + {0x000712, 0x00072f, WB_ALetter }, + {0x000730, 0x00074a, WB_Extend }, + {0x00074d, 0x0007a5, WB_ALetter }, + {0x0007a6, 0x0007b0, WB_Extend }, + {0x0007b1, 0x0007b1, WB_ALetter }, + {0x0007c0, 0x0007c9, WB_Numeric }, + {0x0007ca, 0x0007ea, WB_ALetter }, + {0x0007eb, 0x0007f3, WB_Extend }, + {0x0007f4, 0x0007f5, WB_ALetter }, + {0x0007f8, 0x0007f8, WB_MidNum }, + {0x0007fa, 0x0007fa, WB_ALetter }, + {0x0007fd, 0x0007fd, WB_Extend }, + {0x000800, 0x000815, WB_ALetter }, + {0x000816, 0x000819, WB_Extend }, + {0x00081a, 0x00081a, WB_ALetter }, + {0x00081b, 0x000823, WB_Extend }, + {0x000824, 0x000824, WB_ALetter }, + {0x000825, 0x000827, WB_Extend }, + {0x000828, 0x000828, WB_ALetter }, + {0x000829, 0x00082d, WB_Extend }, + {0x000840, 0x000858, WB_ALetter }, + {0x000859, 0x00085b, WB_Extend }, + {0x000860, 0x00086a, WB_ALetter }, + {0x000870, 0x000887, WB_ALetter }, + {0x000889, 0x00088e, WB_ALetter }, + {0x000890, 0x000891, WB_Numeric }, + {0x000897, 0x00089f, WB_Extend }, + {0x0008a0, 0x0008c9, WB_ALetter }, + {0x0008ca, 0x0008e1, WB_Extend }, + {0x0008e2, 0x0008e2, WB_Numeric }, + {0x0008e3, 0x000903, WB_Extend }, + {0x000904, 0x000939, WB_ALetter }, + {0x00093a, 0x00093c, WB_Extend }, + {0x00093d, 0x00093d, WB_ALetter }, + {0x00093e, 0x00094f, WB_Extend }, + {0x000950, 0x000950, WB_ALetter }, + {0x000951, 0x000957, WB_Extend }, + {0x000958, 0x000961, WB_ALetter }, + {0x000962, 0x000963, WB_Extend }, + {0x000966, 0x00096f, WB_Numeric }, + {0x000971, 0x000980, WB_ALetter }, + {0x000981, 0x000983, WB_Extend }, + {0x000985, 0x00098c, WB_ALetter }, + {0x00098f, 0x000990, WB_ALetter }, + {0x000993, 0x0009a8, WB_ALetter }, + {0x0009aa, 0x0009b0, WB_ALetter }, + {0x0009b2, 0x0009b2, WB_ALetter }, + {0x0009b6, 0x0009b9, WB_ALetter }, + {0x0009bc, 0x0009bc, WB_Extend }, + {0x0009bd, 0x0009bd, WB_ALetter }, + {0x0009be, 0x0009c4, WB_Extend }, + {0x0009c7, 0x0009c8, WB_Extend }, + {0x0009cb, 0x0009cd, WB_Extend }, + {0x0009ce, 0x0009ce, WB_ALetter }, + {0x0009d7, 0x0009d7, WB_Extend }, + {0x0009dc, 0x0009dd, WB_ALetter }, + {0x0009df, 0x0009e1, WB_ALetter }, + {0x0009e2, 0x0009e3, WB_Extend }, + {0x0009e6, 0x0009ef, WB_Numeric }, + {0x0009f0, 0x0009f1, WB_ALetter }, + {0x0009fc, 0x0009fc, WB_ALetter }, + {0x0009fe, 0x0009fe, WB_Extend }, + {0x000a01, 0x000a03, WB_Extend }, + {0x000a05, 0x000a0a, WB_ALetter }, + {0x000a0f, 0x000a10, WB_ALetter }, + {0x000a13, 0x000a28, WB_ALetter }, + {0x000a2a, 0x000a30, WB_ALetter }, + {0x000a32, 0x000a33, WB_ALetter }, + {0x000a35, 0x000a36, WB_ALetter }, + {0x000a38, 0x000a39, WB_ALetter }, + {0x000a3c, 0x000a3c, WB_Extend }, + {0x000a3e, 0x000a42, WB_Extend }, + {0x000a47, 0x000a48, WB_Extend }, + {0x000a4b, 0x000a4d, WB_Extend }, + {0x000a51, 0x000a51, WB_Extend }, + {0x000a59, 0x000a5c, WB_ALetter }, + {0x000a5e, 0x000a5e, WB_ALetter }, + {0x000a66, 0x000a6f, WB_Numeric }, + {0x000a70, 0x000a71, WB_Extend }, + {0x000a72, 0x000a74, WB_ALetter }, + {0x000a75, 0x000a75, WB_Extend }, + {0x000a81, 0x000a83, WB_Extend }, + {0x000a85, 0x000a8d, WB_ALetter }, + {0x000a8f, 0x000a91, WB_ALetter }, + {0x000a93, 0x000aa8, WB_ALetter }, + {0x000aaa, 0x000ab0, WB_ALetter }, + {0x000ab2, 0x000ab3, WB_ALetter }, + {0x000ab5, 0x000ab9, WB_ALetter }, + {0x000abc, 0x000abc, WB_Extend }, + {0x000abd, 0x000abd, WB_ALetter }, + {0x000abe, 0x000ac5, WB_Extend }, + {0x000ac7, 0x000ac9, WB_Extend }, + {0x000acb, 0x000acd, WB_Extend }, + {0x000ad0, 0x000ad0, WB_ALetter }, + {0x000ae0, 0x000ae1, WB_ALetter }, + {0x000ae2, 0x000ae3, WB_Extend }, + {0x000ae6, 0x000aef, WB_Numeric }, + {0x000af9, 0x000af9, WB_ALetter }, + {0x000afa, 0x000aff, WB_Extend }, + {0x000b01, 0x000b03, WB_Extend }, + {0x000b05, 0x000b0c, WB_ALetter }, + {0x000b0f, 0x000b10, WB_ALetter }, + {0x000b13, 0x000b28, WB_ALetter }, + {0x000b2a, 0x000b30, WB_ALetter }, + {0x000b32, 0x000b33, WB_ALetter }, + {0x000b35, 0x000b39, WB_ALetter }, + {0x000b3c, 0x000b3c, WB_Extend }, + {0x000b3d, 0x000b3d, WB_ALetter }, + {0x000b3e, 0x000b44, WB_Extend }, + {0x000b47, 0x000b48, WB_Extend }, + {0x000b4b, 0x000b4d, WB_Extend }, + {0x000b55, 0x000b57, WB_Extend }, + {0x000b5c, 0x000b5d, WB_ALetter }, + {0x000b5f, 0x000b61, WB_ALetter }, + {0x000b62, 0x000b63, WB_Extend }, + {0x000b66, 0x000b6f, WB_Numeric }, + {0x000b71, 0x000b71, WB_ALetter }, + {0x000b82, 0x000b82, WB_Extend }, + {0x000b83, 0x000b83, WB_ALetter }, + {0x000b85, 0x000b8a, WB_ALetter }, + {0x000b8e, 0x000b90, WB_ALetter }, + {0x000b92, 0x000b95, WB_ALetter }, + {0x000b99, 0x000b9a, WB_ALetter }, + {0x000b9c, 0x000b9c, WB_ALetter }, + {0x000b9e, 0x000b9f, WB_ALetter }, + {0x000ba3, 0x000ba4, WB_ALetter }, + {0x000ba8, 0x000baa, WB_ALetter }, + {0x000bae, 0x000bb9, WB_ALetter }, + {0x000bbe, 0x000bc2, WB_Extend }, + {0x000bc6, 0x000bc8, WB_Extend }, + {0x000bca, 0x000bcd, WB_Extend }, + {0x000bd0, 0x000bd0, WB_ALetter }, + {0x000bd7, 0x000bd7, WB_Extend }, + {0x000be6, 0x000bef, WB_Numeric }, + {0x000c00, 0x000c04, WB_Extend }, + {0x000c05, 0x000c0c, WB_ALetter }, + {0x000c0e, 0x000c10, WB_ALetter }, + {0x000c12, 0x000c28, WB_ALetter }, + {0x000c2a, 0x000c39, WB_ALetter }, + {0x000c3c, 0x000c3c, WB_Extend }, + {0x000c3d, 0x000c3d, WB_ALetter }, + {0x000c3e, 0x000c44, WB_Extend }, + {0x000c46, 0x000c48, WB_Extend }, + {0x000c4a, 0x000c4d, WB_Extend }, + {0x000c55, 0x000c56, WB_Extend }, + {0x000c58, 0x000c5a, WB_ALetter }, + {0x000c5d, 0x000c5d, WB_ALetter }, + {0x000c60, 0x000c61, WB_ALetter }, + {0x000c62, 0x000c63, WB_Extend }, + {0x000c66, 0x000c6f, WB_Numeric }, + {0x000c80, 0x000c80, WB_ALetter }, + {0x000c81, 0x000c83, WB_Extend }, + {0x000c85, 0x000c8c, WB_ALetter }, + {0x000c8e, 0x000c90, WB_ALetter }, + {0x000c92, 0x000ca8, WB_ALetter }, + {0x000caa, 0x000cb3, WB_ALetter }, + {0x000cb5, 0x000cb9, WB_ALetter }, + {0x000cbc, 0x000cbc, WB_Extend }, + {0x000cbd, 0x000cbd, WB_ALetter }, + {0x000cbe, 0x000cc4, WB_Extend }, + {0x000cc6, 0x000cc8, WB_Extend }, + {0x000cca, 0x000ccd, WB_Extend }, + {0x000cd5, 0x000cd6, WB_Extend }, + {0x000cdd, 0x000cde, WB_ALetter }, + {0x000ce0, 0x000ce1, WB_ALetter }, + {0x000ce2, 0x000ce3, WB_Extend }, + {0x000ce6, 0x000cef, WB_Numeric }, + {0x000cf1, 0x000cf2, WB_ALetter }, + {0x000cf3, 0x000cf3, WB_Extend }, + {0x000d00, 0x000d03, WB_Extend }, + {0x000d04, 0x000d0c, WB_ALetter }, + {0x000d0e, 0x000d10, WB_ALetter }, + {0x000d12, 0x000d3a, WB_ALetter }, + {0x000d3b, 0x000d3c, WB_Extend }, + {0x000d3d, 0x000d3d, WB_ALetter }, + {0x000d3e, 0x000d44, WB_Extend }, + {0x000d46, 0x000d48, WB_Extend }, + {0x000d4a, 0x000d4d, WB_Extend }, + {0x000d4e, 0x000d4e, WB_ALetter }, + {0x000d54, 0x000d56, WB_ALetter }, + {0x000d57, 0x000d57, WB_Extend }, + {0x000d5f, 0x000d61, WB_ALetter }, + {0x000d62, 0x000d63, WB_Extend }, + {0x000d66, 0x000d6f, WB_Numeric }, + {0x000d7a, 0x000d7f, WB_ALetter }, + {0x000d81, 0x000d83, WB_Extend }, + {0x000d85, 0x000d96, WB_ALetter }, + {0x000d9a, 0x000db1, WB_ALetter }, + {0x000db3, 0x000dbb, WB_ALetter }, + {0x000dbd, 0x000dbd, WB_ALetter }, + {0x000dc0, 0x000dc6, WB_ALetter }, + {0x000dca, 0x000dca, WB_Extend }, + {0x000dcf, 0x000dd4, WB_Extend }, + {0x000dd6, 0x000dd6, WB_Extend }, + {0x000dd8, 0x000ddf, WB_Extend }, + {0x000de6, 0x000def, WB_Numeric }, + {0x000df2, 0x000df3, WB_Extend }, + {0x000e31, 0x000e31, WB_Extend }, + {0x000e34, 0x000e3a, WB_Extend }, + {0x000e47, 0x000e4e, WB_Extend }, + {0x000e50, 0x000e59, WB_Numeric }, + {0x000eb1, 0x000eb1, WB_Extend }, + {0x000eb4, 0x000ebc, WB_Extend }, + {0x000ec8, 0x000ece, WB_Extend }, + {0x000ed0, 0x000ed9, WB_Numeric }, + {0x000f00, 0x000f00, WB_ALetter }, + {0x000f18, 0x000f19, WB_Extend }, + {0x000f20, 0x000f29, WB_Numeric }, + {0x000f35, 0x000f35, WB_Extend }, + {0x000f37, 0x000f37, WB_Extend }, + {0x000f39, 0x000f39, WB_Extend }, + {0x000f3e, 0x000f3f, WB_Extend }, + {0x000f40, 0x000f47, WB_ALetter }, + {0x000f49, 0x000f6c, WB_ALetter }, + {0x000f71, 0x000f84, WB_Extend }, + {0x000f86, 0x000f87, WB_Extend }, + {0x000f88, 0x000f8c, WB_ALetter }, + {0x000f8d, 0x000f97, WB_Extend }, + {0x000f99, 0x000fbc, WB_Extend }, + {0x000fc6, 0x000fc6, WB_Extend }, + {0x00102b, 0x00103e, WB_Extend }, + {0x001040, 0x001049, WB_Numeric }, + {0x001056, 0x001059, WB_Extend }, + {0x00105e, 0x001060, WB_Extend }, + {0x001062, 0x001064, WB_Extend }, + {0x001067, 0x00106d, WB_Extend }, + {0x001071, 0x001074, WB_Extend }, + {0x001082, 0x00108d, WB_Extend }, + {0x00108f, 0x00108f, WB_Extend }, + {0x001090, 0x001099, WB_Numeric }, + {0x00109a, 0x00109d, WB_Extend }, + {0x0010a0, 0x0010c5, WB_ALetter }, + {0x0010c7, 0x0010c7, WB_ALetter }, + {0x0010cd, 0x0010cd, WB_ALetter }, + {0x0010d0, 0x0010fa, WB_ALetter }, + {0x0010fc, 0x001248, WB_ALetter }, + {0x00124a, 0x00124d, WB_ALetter }, + {0x001250, 0x001256, WB_ALetter }, + {0x001258, 0x001258, WB_ALetter }, + {0x00125a, 0x00125d, WB_ALetter }, + {0x001260, 0x001288, WB_ALetter }, + {0x00128a, 0x00128d, WB_ALetter }, + {0x001290, 0x0012b0, WB_ALetter }, + {0x0012b2, 0x0012b5, WB_ALetter }, + {0x0012b8, 0x0012be, WB_ALetter }, + {0x0012c0, 0x0012c0, WB_ALetter }, + {0x0012c2, 0x0012c5, WB_ALetter }, + {0x0012c8, 0x0012d6, WB_ALetter }, + {0x0012d8, 0x001310, WB_ALetter }, + {0x001312, 0x001315, WB_ALetter }, + {0x001318, 0x00135a, WB_ALetter }, + {0x00135d, 0x00135f, WB_Extend }, + {0x001380, 0x00138f, WB_ALetter }, + {0x0013a0, 0x0013f5, WB_ALetter }, + {0x0013f8, 0x0013fd, WB_ALetter }, + {0x001401, 0x00166c, WB_ALetter }, + {0x00166f, 0x00167f, WB_ALetter }, + {0x001680, 0x001680, WB_WSegSpace }, + {0x001681, 0x00169a, WB_ALetter }, + {0x0016a0, 0x0016ea, WB_ALetter }, + {0x0016ee, 0x0016f8, WB_ALetter }, + {0x001700, 0x001711, WB_ALetter }, + {0x001712, 0x001715, WB_Extend }, + {0x00171f, 0x001731, WB_ALetter }, + {0x001732, 0x001734, WB_Extend }, + {0x001740, 0x001751, WB_ALetter }, + {0x001752, 0x001753, WB_Extend }, + {0x001760, 0x00176c, WB_ALetter }, + {0x00176e, 0x001770, WB_ALetter }, + {0x001772, 0x001773, WB_Extend }, + {0x0017b4, 0x0017d3, WB_Extend }, + {0x0017dd, 0x0017dd, WB_Extend }, + {0x0017e0, 0x0017e9, WB_Numeric }, + {0x00180b, 0x00180d, WB_Extend }, + {0x00180e, 0x00180e, WB_Format }, + {0x00180f, 0x00180f, WB_Extend }, + {0x001810, 0x001819, WB_Numeric }, + {0x001820, 0x001878, WB_ALetter }, + {0x001880, 0x001884, WB_ALetter }, + {0x001885, 0x001886, WB_Extend }, + {0x001887, 0x0018a8, WB_ALetter }, + {0x0018a9, 0x0018a9, WB_Extend }, + {0x0018aa, 0x0018aa, WB_ALetter }, + {0x0018b0, 0x0018f5, WB_ALetter }, + {0x001900, 0x00191e, WB_ALetter }, + {0x001920, 0x00192b, WB_Extend }, + {0x001930, 0x00193b, WB_Extend }, + {0x001946, 0x00194f, WB_Numeric }, + {0x0019d0, 0x0019da, WB_Numeric }, + {0x001a00, 0x001a16, WB_ALetter }, + {0x001a17, 0x001a1b, WB_Extend }, + {0x001a55, 0x001a5e, WB_Extend }, + {0x001a60, 0x001a7c, WB_Extend }, + {0x001a7f, 0x001a7f, WB_Extend }, + {0x001a80, 0x001a89, WB_Numeric }, + {0x001a90, 0x001a99, WB_Numeric }, + {0x001ab0, 0x001ace, WB_Extend }, + {0x001b00, 0x001b04, WB_Extend }, + {0x001b05, 0x001b33, WB_ALetter }, + {0x001b34, 0x001b44, WB_Extend }, + {0x001b45, 0x001b4c, WB_ALetter }, + {0x001b50, 0x001b59, WB_Numeric }, + {0x001b6b, 0x001b73, WB_Extend }, + {0x001b80, 0x001b82, WB_Extend }, + {0x001b83, 0x001ba0, WB_ALetter }, + {0x001ba1, 0x001bad, WB_Extend }, + {0x001bae, 0x001baf, WB_ALetter }, + {0x001bb0, 0x001bb9, WB_Numeric }, + {0x001bba, 0x001be5, WB_ALetter }, + {0x001be6, 0x001bf3, WB_Extend }, + {0x001c00, 0x001c23, WB_ALetter }, + {0x001c24, 0x001c37, WB_Extend }, + {0x001c40, 0x001c49, WB_Numeric }, + {0x001c4d, 0x001c4f, WB_ALetter }, + {0x001c50, 0x001c59, WB_Numeric }, + {0x001c5a, 0x001c7d, WB_ALetter }, + {0x001c80, 0x001c8a, WB_ALetter }, + {0x001c90, 0x001cba, WB_ALetter }, + {0x001cbd, 0x001cbf, WB_ALetter }, + {0x001cd0, 0x001cd2, WB_Extend }, + {0x001cd4, 0x001ce8, WB_Extend }, + {0x001ce9, 0x001cec, WB_ALetter }, + {0x001ced, 0x001ced, WB_Extend }, + {0x001cee, 0x001cf3, WB_ALetter }, + {0x001cf4, 0x001cf4, WB_Extend }, + {0x001cf5, 0x001cf6, WB_ALetter }, + {0x001cf7, 0x001cf9, WB_Extend }, + {0x001cfa, 0x001cfa, WB_ALetter }, + {0x001d00, 0x001dbf, WB_ALetter }, + {0x001dc0, 0x001dff, WB_Extend }, + {0x001e00, 0x001f15, WB_ALetter }, + {0x001f18, 0x001f1d, WB_ALetter }, + {0x001f20, 0x001f45, WB_ALetter }, + {0x001f48, 0x001f4d, WB_ALetter }, + {0x001f50, 0x001f57, WB_ALetter }, + {0x001f59, 0x001f59, WB_ALetter }, + {0x001f5b, 0x001f5b, WB_ALetter }, + {0x001f5d, 0x001f5d, WB_ALetter }, + {0x001f5f, 0x001f7d, WB_ALetter }, + {0x001f80, 0x001fb4, WB_ALetter }, + {0x001fb6, 0x001fbc, WB_ALetter }, + {0x001fbe, 0x001fbe, WB_ALetter }, + {0x001fc2, 0x001fc4, WB_ALetter }, + {0x001fc6, 0x001fcc, WB_ALetter }, + {0x001fd0, 0x001fd3, WB_ALetter }, + {0x001fd6, 0x001fdb, WB_ALetter }, + {0x001fe0, 0x001fec, WB_ALetter }, + {0x001ff2, 0x001ff4, WB_ALetter }, + {0x001ff6, 0x001ffc, WB_ALetter }, + {0x002000, 0x002006, WB_WSegSpace }, + {0x002008, 0x00200a, WB_WSegSpace }, + {0x00200c, 0x00200c, WB_Extend }, + {0x00200d, 0x00200d, WB_ZWJ }, + {0x00200e, 0x00200f, WB_Format }, + {0x002018, 0x002019, WB_MidNumLet }, + {0x002024, 0x002024, WB_MidNumLet }, + {0x002027, 0x002027, WB_MidLetter }, + {0x002028, 0x002029, WB_Newline }, + {0x00202a, 0x00202e, WB_Format }, + {0x00202f, 0x00202f, WB_ExtendNumLet }, + {0x00203f, 0x002040, WB_ExtendNumLet }, + {0x002044, 0x002044, WB_MidNum }, + {0x002054, 0x002054, WB_ExtendNumLet }, + {0x00205f, 0x00205f, WB_WSegSpace }, + {0x002060, 0x002064, WB_Format }, + {0x002066, 0x00206f, WB_Format }, + {0x002071, 0x002071, WB_ALetter }, + {0x00207f, 0x00207f, WB_ALetter }, + {0x002090, 0x00209c, WB_ALetter }, + {0x0020d0, 0x0020f0, WB_Extend }, + {0x002102, 0x002102, WB_ALetter }, + {0x002107, 0x002107, WB_ALetter }, + {0x00210a, 0x002113, WB_ALetter }, + {0x002115, 0x002115, WB_ALetter }, + {0x002119, 0x00211d, WB_ALetter }, + {0x002124, 0x002124, WB_ALetter }, + {0x002126, 0x002126, WB_ALetter }, + {0x002128, 0x002128, WB_ALetter }, + {0x00212a, 0x00212d, WB_ALetter }, + {0x00212f, 0x002139, WB_ALetter }, + {0x00213c, 0x00213f, WB_ALetter }, + {0x002145, 0x002149, WB_ALetter }, + {0x00214e, 0x00214e, WB_ALetter }, + {0x002160, 0x002188, WB_ALetter }, + {0x0024b6, 0x0024e9, WB_ALetter }, + {0x002c00, 0x002ce4, WB_ALetter }, + {0x002ceb, 0x002cee, WB_ALetter }, + {0x002cef, 0x002cf1, WB_Extend }, + {0x002cf2, 0x002cf3, WB_ALetter }, + {0x002d00, 0x002d25, WB_ALetter }, + {0x002d27, 0x002d27, WB_ALetter }, + {0x002d2d, 0x002d2d, WB_ALetter }, + {0x002d30, 0x002d67, WB_ALetter }, + {0x002d6f, 0x002d6f, WB_ALetter }, + {0x002d7f, 0x002d7f, WB_Extend }, + {0x002d80, 0x002d96, WB_ALetter }, + {0x002da0, 0x002da6, WB_ALetter }, + {0x002da8, 0x002dae, WB_ALetter }, + {0x002db0, 0x002db6, WB_ALetter }, + {0x002db8, 0x002dbe, WB_ALetter }, + {0x002dc0, 0x002dc6, WB_ALetter }, + {0x002dc8, 0x002dce, WB_ALetter }, + {0x002dd0, 0x002dd6, WB_ALetter }, + {0x002dd8, 0x002dde, WB_ALetter }, + {0x002de0, 0x002dff, WB_Extend }, + {0x002e2f, 0x002e2f, WB_ALetter }, + {0x003000, 0x003000, WB_WSegSpace }, + {0x003005, 0x003005, WB_ALetter }, + {0x00302a, 0x00302f, WB_Extend }, + {0x003031, 0x003035, WB_Katakana }, + {0x00303b, 0x00303c, WB_ALetter }, + {0x003099, 0x00309a, WB_Extend }, + {0x00309b, 0x00309c, WB_Katakana }, + {0x0030a0, 0x0030fa, WB_Katakana }, + {0x0030fc, 0x0030ff, WB_Katakana }, + {0x003105, 0x00312f, WB_ALetter }, + {0x003131, 0x00318e, WB_ALetter }, + {0x0031a0, 0x0031bf, WB_ALetter }, + {0x0031f0, 0x0031ff, WB_Katakana }, + {0x0032d0, 0x0032fe, WB_Katakana }, + {0x003300, 0x003357, WB_Katakana }, + {0x00a000, 0x00a48c, WB_ALetter }, + {0x00a4d0, 0x00a4fd, WB_ALetter }, + {0x00a500, 0x00a60c, WB_ALetter }, + {0x00a610, 0x00a61f, WB_ALetter }, + {0x00a620, 0x00a629, WB_Numeric }, + {0x00a62a, 0x00a62b, WB_ALetter }, + {0x00a640, 0x00a66e, WB_ALetter }, + {0x00a66f, 0x00a672, WB_Extend }, + {0x00a674, 0x00a67d, WB_Extend }, + {0x00a67f, 0x00a69d, WB_ALetter }, + {0x00a69e, 0x00a69f, WB_Extend }, + {0x00a6a0, 0x00a6ef, WB_ALetter }, + {0x00a6f0, 0x00a6f1, WB_Extend }, + {0x00a708, 0x00a7cd, WB_ALetter }, + {0x00a7d0, 0x00a7d1, WB_ALetter }, + {0x00a7d3, 0x00a7d3, WB_ALetter }, + {0x00a7d5, 0x00a7dc, WB_ALetter }, + {0x00a7f2, 0x00a801, WB_ALetter }, + {0x00a802, 0x00a802, WB_Extend }, + {0x00a803, 0x00a805, WB_ALetter }, + {0x00a806, 0x00a806, WB_Extend }, + {0x00a807, 0x00a80a, WB_ALetter }, + {0x00a80b, 0x00a80b, WB_Extend }, + {0x00a80c, 0x00a822, WB_ALetter }, + {0x00a823, 0x00a827, WB_Extend }, + {0x00a82c, 0x00a82c, WB_Extend }, + {0x00a840, 0x00a873, WB_ALetter }, + {0x00a880, 0x00a881, WB_Extend }, + {0x00a882, 0x00a8b3, WB_ALetter }, + {0x00a8b4, 0x00a8c5, WB_Extend }, + {0x00a8d0, 0x00a8d9, WB_Numeric }, + {0x00a8e0, 0x00a8f1, WB_Extend }, + {0x00a8f2, 0x00a8f7, WB_ALetter }, + {0x00a8fb, 0x00a8fb, WB_ALetter }, + {0x00a8fd, 0x00a8fe, WB_ALetter }, + {0x00a8ff, 0x00a8ff, WB_Extend }, + {0x00a900, 0x00a909, WB_Numeric }, + {0x00a90a, 0x00a925, WB_ALetter }, + {0x00a926, 0x00a92d, WB_Extend }, + {0x00a930, 0x00a946, WB_ALetter }, + {0x00a947, 0x00a953, WB_Extend }, + {0x00a960, 0x00a97c, WB_ALetter }, + {0x00a980, 0x00a983, WB_Extend }, + {0x00a984, 0x00a9b2, WB_ALetter }, + {0x00a9b3, 0x00a9c0, WB_Extend }, + {0x00a9cf, 0x00a9cf, WB_ALetter }, + {0x00a9d0, 0x00a9d9, WB_Numeric }, + {0x00a9e5, 0x00a9e5, WB_Extend }, + {0x00a9f0, 0x00a9f9, WB_Numeric }, + {0x00aa00, 0x00aa28, WB_ALetter }, + {0x00aa29, 0x00aa36, WB_Extend }, + {0x00aa40, 0x00aa42, WB_ALetter }, + {0x00aa43, 0x00aa43, WB_Extend }, + {0x00aa44, 0x00aa4b, WB_ALetter }, + {0x00aa4c, 0x00aa4d, WB_Extend }, + {0x00aa50, 0x00aa59, WB_Numeric }, + {0x00aa7b, 0x00aa7d, WB_Extend }, + {0x00aab0, 0x00aab0, WB_Extend }, + {0x00aab2, 0x00aab4, WB_Extend }, + {0x00aab7, 0x00aab8, WB_Extend }, + {0x00aabe, 0x00aabf, WB_Extend }, + {0x00aac1, 0x00aac1, WB_Extend }, + {0x00aae0, 0x00aaea, WB_ALetter }, + {0x00aaeb, 0x00aaef, WB_Extend }, + {0x00aaf2, 0x00aaf4, WB_ALetter }, + {0x00aaf5, 0x00aaf6, WB_Extend }, + {0x00ab01, 0x00ab06, WB_ALetter }, + {0x00ab09, 0x00ab0e, WB_ALetter }, + {0x00ab11, 0x00ab16, WB_ALetter }, + {0x00ab20, 0x00ab26, WB_ALetter }, + {0x00ab28, 0x00ab2e, WB_ALetter }, + {0x00ab30, 0x00ab69, WB_ALetter }, + {0x00ab70, 0x00abe2, WB_ALetter }, + {0x00abe3, 0x00abea, WB_Extend }, + {0x00abec, 0x00abed, WB_Extend }, + {0x00abf0, 0x00abf9, WB_Numeric }, + {0x00ac00, 0x00d7a3, WB_ALetter }, + {0x00d7b0, 0x00d7c6, WB_ALetter }, + {0x00d7cb, 0x00d7fb, WB_ALetter }, + {0x00fb00, 0x00fb06, WB_ALetter }, + {0x00fb13, 0x00fb17, WB_ALetter }, + {0x00fb1d, 0x00fb1d, WB_Hebrew_Letter }, + {0x00fb1e, 0x00fb1e, WB_Extend }, + {0x00fb1f, 0x00fb28, WB_Hebrew_Letter }, + {0x00fb2a, 0x00fb36, WB_Hebrew_Letter }, + {0x00fb38, 0x00fb3c, WB_Hebrew_Letter }, + {0x00fb3e, 0x00fb3e, WB_Hebrew_Letter }, + {0x00fb40, 0x00fb41, WB_Hebrew_Letter }, + {0x00fb43, 0x00fb44, WB_Hebrew_Letter }, + {0x00fb46, 0x00fb4f, WB_Hebrew_Letter }, + {0x00fb50, 0x00fbb1, WB_ALetter }, + {0x00fbd3, 0x00fd3d, WB_ALetter }, + {0x00fd50, 0x00fd8f, WB_ALetter }, + {0x00fd92, 0x00fdc7, WB_ALetter }, + {0x00fdf0, 0x00fdfb, WB_ALetter }, + {0x00fe00, 0x00fe0f, WB_Extend }, + {0x00fe13, 0x00fe13, WB_MidLetter }, + {0x00fe20, 0x00fe2f, WB_Extend }, + {0x00fe33, 0x00fe34, WB_ExtendNumLet }, + {0x00fe4d, 0x00fe4f, WB_ExtendNumLet }, + {0x00fe50, 0x00fe50, WB_MidNum }, + {0x00fe52, 0x00fe52, WB_MidNumLet }, + {0x00fe54, 0x00fe54, WB_MidNum }, + {0x00fe55, 0x00fe55, WB_MidLetter }, + {0x00fe70, 0x00fe74, WB_ALetter }, + {0x00fe76, 0x00fefc, WB_ALetter }, + {0x00feff, 0x00feff, WB_Format }, + {0x00ff07, 0x00ff07, WB_MidNumLet }, + {0x00ff0c, 0x00ff0c, WB_MidNum }, + {0x00ff0e, 0x00ff0e, WB_MidNumLet }, + {0x00ff10, 0x00ff19, WB_Numeric }, + {0x00ff1a, 0x00ff1a, WB_MidLetter }, + {0x00ff1b, 0x00ff1b, WB_MidNum }, + {0x00ff21, 0x00ff3a, WB_ALetter }, + {0x00ff3f, 0x00ff3f, WB_ExtendNumLet }, + {0x00ff41, 0x00ff5a, WB_ALetter }, + {0x00ff66, 0x00ff9d, WB_Katakana }, + {0x00ff9e, 0x00ff9f, WB_Extend }, + {0x00ffa0, 0x00ffbe, WB_ALetter }, + {0x00ffc2, 0x00ffc7, WB_ALetter }, + {0x00ffca, 0x00ffcf, WB_ALetter }, + {0x00ffd2, 0x00ffd7, WB_ALetter }, + {0x00ffda, 0x00ffdc, WB_ALetter }, + {0x00fff9, 0x00fffb, WB_Format }, + {0x010000, 0x01000b, WB_ALetter }, + {0x01000d, 0x010026, WB_ALetter }, + {0x010028, 0x01003a, WB_ALetter }, + {0x01003c, 0x01003d, WB_ALetter }, + {0x01003f, 0x01004d, WB_ALetter }, + {0x010050, 0x01005d, WB_ALetter }, + {0x010080, 0x0100fa, WB_ALetter }, + {0x010140, 0x010174, WB_ALetter }, + {0x0101fd, 0x0101fd, WB_Extend }, + {0x010280, 0x01029c, WB_ALetter }, + {0x0102a0, 0x0102d0, WB_ALetter }, + {0x0102e0, 0x0102e0, WB_Extend }, + {0x010300, 0x01031f, WB_ALetter }, + {0x01032d, 0x01034a, WB_ALetter }, + {0x010350, 0x010375, WB_ALetter }, + {0x010376, 0x01037a, WB_Extend }, + {0x010380, 0x01039d, WB_ALetter }, + {0x0103a0, 0x0103c3, WB_ALetter }, + {0x0103c8, 0x0103cf, WB_ALetter }, + {0x0103d1, 0x0103d5, WB_ALetter }, + {0x010400, 0x01049d, WB_ALetter }, + {0x0104a0, 0x0104a9, WB_Numeric }, + {0x0104b0, 0x0104d3, WB_ALetter }, + {0x0104d8, 0x0104fb, WB_ALetter }, + {0x010500, 0x010527, WB_ALetter }, + {0x010530, 0x010563, WB_ALetter }, + {0x010570, 0x01057a, WB_ALetter }, + {0x01057c, 0x01058a, WB_ALetter }, + {0x01058c, 0x010592, WB_ALetter }, + {0x010594, 0x010595, WB_ALetter }, + {0x010597, 0x0105a1, WB_ALetter }, + {0x0105a3, 0x0105b1, WB_ALetter }, + {0x0105b3, 0x0105b9, WB_ALetter }, + {0x0105bb, 0x0105bc, WB_ALetter }, + {0x0105c0, 0x0105f3, WB_ALetter }, + {0x010600, 0x010736, WB_ALetter }, + {0x010740, 0x010755, WB_ALetter }, + {0x010760, 0x010767, WB_ALetter }, + {0x010780, 0x010785, WB_ALetter }, + {0x010787, 0x0107b0, WB_ALetter }, + {0x0107b2, 0x0107ba, WB_ALetter }, + {0x010800, 0x010805, WB_ALetter }, + {0x010808, 0x010808, WB_ALetter }, + {0x01080a, 0x010835, WB_ALetter }, + {0x010837, 0x010838, WB_ALetter }, + {0x01083c, 0x01083c, WB_ALetter }, + {0x01083f, 0x010855, WB_ALetter }, + {0x010860, 0x010876, WB_ALetter }, + {0x010880, 0x01089e, WB_ALetter }, + {0x0108e0, 0x0108f2, WB_ALetter }, + {0x0108f4, 0x0108f5, WB_ALetter }, + {0x010900, 0x010915, WB_ALetter }, + {0x010920, 0x010939, WB_ALetter }, + {0x010980, 0x0109b7, WB_ALetter }, + {0x0109be, 0x0109bf, WB_ALetter }, + {0x010a00, 0x010a00, WB_ALetter }, + {0x010a01, 0x010a03, WB_Extend }, + {0x010a05, 0x010a06, WB_Extend }, + {0x010a0c, 0x010a0f, WB_Extend }, + {0x010a10, 0x010a13, WB_ALetter }, + {0x010a15, 0x010a17, WB_ALetter }, + {0x010a19, 0x010a35, WB_ALetter }, + {0x010a38, 0x010a3a, WB_Extend }, + {0x010a3f, 0x010a3f, WB_Extend }, + {0x010a60, 0x010a7c, WB_ALetter }, + {0x010a80, 0x010a9c, WB_ALetter }, + {0x010ac0, 0x010ac7, WB_ALetter }, + {0x010ac9, 0x010ae4, WB_ALetter }, + {0x010ae5, 0x010ae6, WB_Extend }, + {0x010b00, 0x010b35, WB_ALetter }, + {0x010b40, 0x010b55, WB_ALetter }, + {0x010b60, 0x010b72, WB_ALetter }, + {0x010b80, 0x010b91, WB_ALetter }, + {0x010c00, 0x010c48, WB_ALetter }, + {0x010c80, 0x010cb2, WB_ALetter }, + {0x010cc0, 0x010cf2, WB_ALetter }, + {0x010d00, 0x010d23, WB_ALetter }, + {0x010d24, 0x010d27, WB_Extend }, + {0x010d30, 0x010d39, WB_Numeric }, + {0x010d40, 0x010d49, WB_Numeric }, + {0x010d4a, 0x010d65, WB_ALetter }, + {0x010d69, 0x010d6d, WB_Extend }, + {0x010d6f, 0x010d85, WB_ALetter }, + {0x010e80, 0x010ea9, WB_ALetter }, + {0x010eab, 0x010eac, WB_Extend }, + {0x010eb0, 0x010eb1, WB_ALetter }, + {0x010ec2, 0x010ec4, WB_ALetter }, + {0x010efc, 0x010eff, WB_Extend }, + {0x010f00, 0x010f1c, WB_ALetter }, + {0x010f27, 0x010f27, WB_ALetter }, + {0x010f30, 0x010f45, WB_ALetter }, + {0x010f46, 0x010f50, WB_Extend }, + {0x010f70, 0x010f81, WB_ALetter }, + {0x010f82, 0x010f85, WB_Extend }, + {0x010fb0, 0x010fc4, WB_ALetter }, + {0x010fe0, 0x010ff6, WB_ALetter }, + {0x011000, 0x011002, WB_Extend }, + {0x011003, 0x011037, WB_ALetter }, + {0x011038, 0x011046, WB_Extend }, + {0x011066, 0x01106f, WB_Numeric }, + {0x011070, 0x011070, WB_Extend }, + {0x011071, 0x011072, WB_ALetter }, + {0x011073, 0x011074, WB_Extend }, + {0x011075, 0x011075, WB_ALetter }, + {0x01107f, 0x011082, WB_Extend }, + {0x011083, 0x0110af, WB_ALetter }, + {0x0110b0, 0x0110ba, WB_Extend }, + {0x0110bd, 0x0110bd, WB_Numeric }, + {0x0110c2, 0x0110c2, WB_Extend }, + {0x0110cd, 0x0110cd, WB_Numeric }, + {0x0110d0, 0x0110e8, WB_ALetter }, + {0x0110f0, 0x0110f9, WB_Numeric }, + {0x011100, 0x011102, WB_Extend }, + {0x011103, 0x011126, WB_ALetter }, + {0x011127, 0x011134, WB_Extend }, + {0x011136, 0x01113f, WB_Numeric }, + {0x011144, 0x011144, WB_ALetter }, + {0x011145, 0x011146, WB_Extend }, + {0x011147, 0x011147, WB_ALetter }, + {0x011150, 0x011172, WB_ALetter }, + {0x011173, 0x011173, WB_Extend }, + {0x011176, 0x011176, WB_ALetter }, + {0x011180, 0x011182, WB_Extend }, + {0x011183, 0x0111b2, WB_ALetter }, + {0x0111b3, 0x0111c0, WB_Extend }, + {0x0111c1, 0x0111c4, WB_ALetter }, + {0x0111c9, 0x0111cc, WB_Extend }, + {0x0111ce, 0x0111cf, WB_Extend }, + {0x0111d0, 0x0111d9, WB_Numeric }, + {0x0111da, 0x0111da, WB_ALetter }, + {0x0111dc, 0x0111dc, WB_ALetter }, + {0x011200, 0x011211, WB_ALetter }, + {0x011213, 0x01122b, WB_ALetter }, + {0x01122c, 0x011237, WB_Extend }, + {0x01123e, 0x01123e, WB_Extend }, + {0x01123f, 0x011240, WB_ALetter }, + {0x011241, 0x011241, WB_Extend }, + {0x011280, 0x011286, WB_ALetter }, + {0x011288, 0x011288, WB_ALetter }, + {0x01128a, 0x01128d, WB_ALetter }, + {0x01128f, 0x01129d, WB_ALetter }, + {0x01129f, 0x0112a8, WB_ALetter }, + {0x0112b0, 0x0112de, WB_ALetter }, + {0x0112df, 0x0112ea, WB_Extend }, + {0x0112f0, 0x0112f9, WB_Numeric }, + {0x011300, 0x011303, WB_Extend }, + {0x011305, 0x01130c, WB_ALetter }, + {0x01130f, 0x011310, WB_ALetter }, + {0x011313, 0x011328, WB_ALetter }, + {0x01132a, 0x011330, WB_ALetter }, + {0x011332, 0x011333, WB_ALetter }, + {0x011335, 0x011339, WB_ALetter }, + {0x01133b, 0x01133c, WB_Extend }, + {0x01133d, 0x01133d, WB_ALetter }, + {0x01133e, 0x011344, WB_Extend }, + {0x011347, 0x011348, WB_Extend }, + {0x01134b, 0x01134d, WB_Extend }, + {0x011350, 0x011350, WB_ALetter }, + {0x011357, 0x011357, WB_Extend }, + {0x01135d, 0x011361, WB_ALetter }, + {0x011362, 0x011363, WB_Extend }, + {0x011366, 0x01136c, WB_Extend }, + {0x011370, 0x011374, WB_Extend }, + {0x011380, 0x011389, WB_ALetter }, + {0x01138b, 0x01138b, WB_ALetter }, + {0x01138e, 0x01138e, WB_ALetter }, + {0x011390, 0x0113b5, WB_ALetter }, + {0x0113b7, 0x0113b7, WB_ALetter }, + {0x0113b8, 0x0113c0, WB_Extend }, + {0x0113c2, 0x0113c2, WB_Extend }, + {0x0113c5, 0x0113c5, WB_Extend }, + {0x0113c7, 0x0113ca, WB_Extend }, + {0x0113cc, 0x0113d0, WB_Extend }, + {0x0113d1, 0x0113d1, WB_ALetter }, + {0x0113d2, 0x0113d2, WB_Extend }, + {0x0113d3, 0x0113d3, WB_ALetter }, + {0x0113e1, 0x0113e2, WB_Extend }, + {0x011400, 0x011434, WB_ALetter }, + {0x011435, 0x011446, WB_Extend }, + {0x011447, 0x01144a, WB_ALetter }, + {0x011450, 0x011459, WB_Numeric }, + {0x01145e, 0x01145e, WB_Extend }, + {0x01145f, 0x011461, WB_ALetter }, + {0x011480, 0x0114af, WB_ALetter }, + {0x0114b0, 0x0114c3, WB_Extend }, + {0x0114c4, 0x0114c5, WB_ALetter }, + {0x0114c7, 0x0114c7, WB_ALetter }, + {0x0114d0, 0x0114d9, WB_Numeric }, + {0x011580, 0x0115ae, WB_ALetter }, + {0x0115af, 0x0115b5, WB_Extend }, + {0x0115b8, 0x0115c0, WB_Extend }, + {0x0115d8, 0x0115db, WB_ALetter }, + {0x0115dc, 0x0115dd, WB_Extend }, + {0x011600, 0x01162f, WB_ALetter }, + {0x011630, 0x011640, WB_Extend }, + {0x011644, 0x011644, WB_ALetter }, + {0x011650, 0x011659, WB_Numeric }, + {0x011680, 0x0116aa, WB_ALetter }, + {0x0116ab, 0x0116b7, WB_Extend }, + {0x0116b8, 0x0116b8, WB_ALetter }, + {0x0116c0, 0x0116c9, WB_Numeric }, + {0x0116d0, 0x0116e3, WB_Numeric }, + {0x01171d, 0x01172b, WB_Extend }, + {0x011730, 0x011739, WB_Numeric }, + {0x011800, 0x01182b, WB_ALetter }, + {0x01182c, 0x01183a, WB_Extend }, + {0x0118a0, 0x0118df, WB_ALetter }, + {0x0118e0, 0x0118e9, WB_Numeric }, + {0x0118ff, 0x011906, WB_ALetter }, + {0x011909, 0x011909, WB_ALetter }, + {0x01190c, 0x011913, WB_ALetter }, + {0x011915, 0x011916, WB_ALetter }, + {0x011918, 0x01192f, WB_ALetter }, + {0x011930, 0x011935, WB_Extend }, + {0x011937, 0x011938, WB_Extend }, + {0x01193b, 0x01193e, WB_Extend }, + {0x01193f, 0x01193f, WB_ALetter }, + {0x011940, 0x011940, WB_Extend }, + {0x011941, 0x011941, WB_ALetter }, + {0x011942, 0x011943, WB_Extend }, + {0x011950, 0x011959, WB_Numeric }, + {0x0119a0, 0x0119a7, WB_ALetter }, + {0x0119aa, 0x0119d0, WB_ALetter }, + {0x0119d1, 0x0119d7, WB_Extend }, + {0x0119da, 0x0119e0, WB_Extend }, + {0x0119e1, 0x0119e1, WB_ALetter }, + {0x0119e3, 0x0119e3, WB_ALetter }, + {0x0119e4, 0x0119e4, WB_Extend }, + {0x011a00, 0x011a00, WB_ALetter }, + {0x011a01, 0x011a0a, WB_Extend }, + {0x011a0b, 0x011a32, WB_ALetter }, + {0x011a33, 0x011a39, WB_Extend }, + {0x011a3a, 0x011a3a, WB_ALetter }, + {0x011a3b, 0x011a3e, WB_Extend }, + {0x011a47, 0x011a47, WB_Extend }, + {0x011a50, 0x011a50, WB_ALetter }, + {0x011a51, 0x011a5b, WB_Extend }, + {0x011a5c, 0x011a89, WB_ALetter }, + {0x011a8a, 0x011a99, WB_Extend }, + {0x011a9d, 0x011a9d, WB_ALetter }, + {0x011ab0, 0x011af8, WB_ALetter }, + {0x011bc0, 0x011be0, WB_ALetter }, + {0x011bf0, 0x011bf9, WB_Numeric }, + {0x011c00, 0x011c08, WB_ALetter }, + {0x011c0a, 0x011c2e, WB_ALetter }, + {0x011c2f, 0x011c36, WB_Extend }, + {0x011c38, 0x011c3f, WB_Extend }, + {0x011c40, 0x011c40, WB_ALetter }, + {0x011c50, 0x011c59, WB_Numeric }, + {0x011c72, 0x011c8f, WB_ALetter }, + {0x011c92, 0x011ca7, WB_Extend }, + {0x011ca9, 0x011cb6, WB_Extend }, + {0x011d00, 0x011d06, WB_ALetter }, + {0x011d08, 0x011d09, WB_ALetter }, + {0x011d0b, 0x011d30, WB_ALetter }, + {0x011d31, 0x011d36, WB_Extend }, + {0x011d3a, 0x011d3a, WB_Extend }, + {0x011d3c, 0x011d3d, WB_Extend }, + {0x011d3f, 0x011d45, WB_Extend }, + {0x011d46, 0x011d46, WB_ALetter }, + {0x011d47, 0x011d47, WB_Extend }, + {0x011d50, 0x011d59, WB_Numeric }, + {0x011d60, 0x011d65, WB_ALetter }, + {0x011d67, 0x011d68, WB_ALetter }, + {0x011d6a, 0x011d89, WB_ALetter }, + {0x011d8a, 0x011d8e, WB_Extend }, + {0x011d90, 0x011d91, WB_Extend }, + {0x011d93, 0x011d97, WB_Extend }, + {0x011d98, 0x011d98, WB_ALetter }, + {0x011da0, 0x011da9, WB_Numeric }, + {0x011ee0, 0x011ef2, WB_ALetter }, + {0x011ef3, 0x011ef6, WB_Extend }, + {0x011f00, 0x011f01, WB_Extend }, + {0x011f02, 0x011f02, WB_ALetter }, + {0x011f03, 0x011f03, WB_Extend }, + {0x011f04, 0x011f10, WB_ALetter }, + {0x011f12, 0x011f33, WB_ALetter }, + {0x011f34, 0x011f3a, WB_Extend }, + {0x011f3e, 0x011f42, WB_Extend }, + {0x011f50, 0x011f59, WB_Numeric }, + {0x011f5a, 0x011f5a, WB_Extend }, + {0x011fb0, 0x011fb0, WB_ALetter }, + {0x012000, 0x012399, WB_ALetter }, + {0x012400, 0x01246e, WB_ALetter }, + {0x012480, 0x012543, WB_ALetter }, + {0x012f90, 0x012ff0, WB_ALetter }, + {0x013000, 0x01342f, WB_ALetter }, + {0x013430, 0x01343f, WB_Format }, + {0x013440, 0x013440, WB_Extend }, + {0x013441, 0x013446, WB_ALetter }, + {0x013447, 0x013455, WB_Extend }, + {0x013460, 0x0143fa, WB_ALetter }, + {0x014400, 0x014646, WB_ALetter }, + {0x016100, 0x01611d, WB_ALetter }, + {0x01611e, 0x01612f, WB_Extend }, + {0x016130, 0x016139, WB_Numeric }, + {0x016800, 0x016a38, WB_ALetter }, + {0x016a40, 0x016a5e, WB_ALetter }, + {0x016a60, 0x016a69, WB_Numeric }, + {0x016a70, 0x016abe, WB_ALetter }, + {0x016ac0, 0x016ac9, WB_Numeric }, + {0x016ad0, 0x016aed, WB_ALetter }, + {0x016af0, 0x016af4, WB_Extend }, + {0x016b00, 0x016b2f, WB_ALetter }, + {0x016b30, 0x016b36, WB_Extend }, + {0x016b40, 0x016b43, WB_ALetter }, + {0x016b50, 0x016b59, WB_Numeric }, + {0x016b63, 0x016b77, WB_ALetter }, + {0x016b7d, 0x016b8f, WB_ALetter }, + {0x016d40, 0x016d6c, WB_ALetter }, + {0x016d70, 0x016d79, WB_Numeric }, + {0x016e40, 0x016e7f, WB_ALetter }, + {0x016f00, 0x016f4a, WB_ALetter }, + {0x016f4f, 0x016f4f, WB_Extend }, + {0x016f50, 0x016f50, WB_ALetter }, + {0x016f51, 0x016f87, WB_Extend }, + {0x016f8f, 0x016f92, WB_Extend }, + {0x016f93, 0x016f9f, WB_ALetter }, + {0x016fe0, 0x016fe1, WB_ALetter }, + {0x016fe3, 0x016fe3, WB_ALetter }, + {0x016fe4, 0x016fe4, WB_Extend }, + {0x016ff0, 0x016ff1, WB_Extend }, + {0x01aff0, 0x01aff3, WB_Katakana }, + {0x01aff5, 0x01affb, WB_Katakana }, + {0x01affd, 0x01affe, WB_Katakana }, + {0x01b000, 0x01b000, WB_Katakana }, + {0x01b120, 0x01b122, WB_Katakana }, + {0x01b155, 0x01b155, WB_Katakana }, + {0x01b164, 0x01b167, WB_Katakana }, + {0x01bc00, 0x01bc6a, WB_ALetter }, + {0x01bc70, 0x01bc7c, WB_ALetter }, + {0x01bc80, 0x01bc88, WB_ALetter }, + {0x01bc90, 0x01bc99, WB_ALetter }, + {0x01bc9d, 0x01bc9e, WB_Extend }, + {0x01bca0, 0x01bca3, WB_Format }, + {0x01ccf0, 0x01ccf9, WB_Numeric }, + {0x01cf00, 0x01cf2d, WB_Extend }, + {0x01cf30, 0x01cf46, WB_Extend }, + {0x01d165, 0x01d169, WB_Extend }, + {0x01d16d, 0x01d172, WB_Extend }, + {0x01d173, 0x01d17a, WB_Format }, + {0x01d17b, 0x01d182, WB_Extend }, + {0x01d185, 0x01d18b, WB_Extend }, + {0x01d1aa, 0x01d1ad, WB_Extend }, + {0x01d242, 0x01d244, WB_Extend }, + {0x01d400, 0x01d454, WB_ALetter }, + {0x01d456, 0x01d49c, WB_ALetter }, + {0x01d49e, 0x01d49f, WB_ALetter }, + {0x01d4a2, 0x01d4a2, WB_ALetter }, + {0x01d4a5, 0x01d4a6, WB_ALetter }, + {0x01d4a9, 0x01d4ac, WB_ALetter }, + {0x01d4ae, 0x01d4b9, WB_ALetter }, + {0x01d4bb, 0x01d4bb, WB_ALetter }, + {0x01d4bd, 0x01d4c3, WB_ALetter }, + {0x01d4c5, 0x01d505, WB_ALetter }, + {0x01d507, 0x01d50a, WB_ALetter }, + {0x01d50d, 0x01d514, WB_ALetter }, + {0x01d516, 0x01d51c, WB_ALetter }, + {0x01d51e, 0x01d539, WB_ALetter }, + {0x01d53b, 0x01d53e, WB_ALetter }, + {0x01d540, 0x01d544, WB_ALetter }, + {0x01d546, 0x01d546, WB_ALetter }, + {0x01d54a, 0x01d550, WB_ALetter }, + {0x01d552, 0x01d6a5, WB_ALetter }, + {0x01d6a8, 0x01d6c0, WB_ALetter }, + {0x01d6c2, 0x01d6da, WB_ALetter }, + {0x01d6dc, 0x01d6fa, WB_ALetter }, + {0x01d6fc, 0x01d714, WB_ALetter }, + {0x01d716, 0x01d734, WB_ALetter }, + {0x01d736, 0x01d74e, WB_ALetter }, + {0x01d750, 0x01d76e, WB_ALetter }, + {0x01d770, 0x01d788, WB_ALetter }, + {0x01d78a, 0x01d7a8, WB_ALetter }, + {0x01d7aa, 0x01d7c2, WB_ALetter }, + {0x01d7c4, 0x01d7cb, WB_ALetter }, + {0x01d7ce, 0x01d7ff, WB_Numeric }, + {0x01da00, 0x01da36, WB_Extend }, + {0x01da3b, 0x01da6c, WB_Extend }, + {0x01da75, 0x01da75, WB_Extend }, + {0x01da84, 0x01da84, WB_Extend }, + {0x01da9b, 0x01da9f, WB_Extend }, + {0x01daa1, 0x01daaf, WB_Extend }, + {0x01df00, 0x01df1e, WB_ALetter }, + {0x01df25, 0x01df2a, WB_ALetter }, + {0x01e000, 0x01e006, WB_Extend }, + {0x01e008, 0x01e018, WB_Extend }, + {0x01e01b, 0x01e021, WB_Extend }, + {0x01e023, 0x01e024, WB_Extend }, + {0x01e026, 0x01e02a, WB_Extend }, + {0x01e030, 0x01e06d, WB_ALetter }, + {0x01e08f, 0x01e08f, WB_Extend }, + {0x01e100, 0x01e12c, WB_ALetter }, + {0x01e130, 0x01e136, WB_Extend }, + {0x01e137, 0x01e13d, WB_ALetter }, + {0x01e140, 0x01e149, WB_Numeric }, + {0x01e14e, 0x01e14e, WB_ALetter }, + {0x01e290, 0x01e2ad, WB_ALetter }, + {0x01e2ae, 0x01e2ae, WB_Extend }, + {0x01e2c0, 0x01e2eb, WB_ALetter }, + {0x01e2ec, 0x01e2ef, WB_Extend }, + {0x01e2f0, 0x01e2f9, WB_Numeric }, + {0x01e4d0, 0x01e4eb, WB_ALetter }, + {0x01e4ec, 0x01e4ef, WB_Extend }, + {0x01e4f0, 0x01e4f9, WB_Numeric }, + {0x01e5d0, 0x01e5ed, WB_ALetter }, + {0x01e5ee, 0x01e5ef, WB_Extend }, + {0x01e5f0, 0x01e5f0, WB_ALetter }, + {0x01e5f1, 0x01e5fa, WB_Numeric }, + {0x01e7e0, 0x01e7e6, WB_ALetter }, + {0x01e7e8, 0x01e7eb, WB_ALetter }, + {0x01e7ed, 0x01e7ee, WB_ALetter }, + {0x01e7f0, 0x01e7fe, WB_ALetter }, + {0x01e800, 0x01e8c4, WB_ALetter }, + {0x01e8d0, 0x01e8d6, WB_Extend }, + {0x01e900, 0x01e943, WB_ALetter }, + {0x01e944, 0x01e94a, WB_Extend }, + {0x01e94b, 0x01e94b, WB_ALetter }, + {0x01e950, 0x01e959, WB_Numeric }, + {0x01ee00, 0x01ee03, WB_ALetter }, + {0x01ee05, 0x01ee1f, WB_ALetter }, + {0x01ee21, 0x01ee22, WB_ALetter }, + {0x01ee24, 0x01ee24, WB_ALetter }, + {0x01ee27, 0x01ee27, WB_ALetter }, + {0x01ee29, 0x01ee32, WB_ALetter }, + {0x01ee34, 0x01ee37, WB_ALetter }, + {0x01ee39, 0x01ee39, WB_ALetter }, + {0x01ee3b, 0x01ee3b, WB_ALetter }, + {0x01ee42, 0x01ee42, WB_ALetter }, + {0x01ee47, 0x01ee47, WB_ALetter }, + {0x01ee49, 0x01ee49, WB_ALetter }, + {0x01ee4b, 0x01ee4b, WB_ALetter }, + {0x01ee4d, 0x01ee4f, WB_ALetter }, + {0x01ee51, 0x01ee52, WB_ALetter }, + {0x01ee54, 0x01ee54, WB_ALetter }, + {0x01ee57, 0x01ee57, WB_ALetter }, + {0x01ee59, 0x01ee59, WB_ALetter }, + {0x01ee5b, 0x01ee5b, WB_ALetter }, + {0x01ee5d, 0x01ee5d, WB_ALetter }, + {0x01ee5f, 0x01ee5f, WB_ALetter }, + {0x01ee61, 0x01ee62, WB_ALetter }, + {0x01ee64, 0x01ee64, WB_ALetter }, + {0x01ee67, 0x01ee6a, WB_ALetter }, + {0x01ee6c, 0x01ee72, WB_ALetter }, + {0x01ee74, 0x01ee77, WB_ALetter }, + {0x01ee79, 0x01ee7c, WB_ALetter }, + {0x01ee7e, 0x01ee7e, WB_ALetter }, + {0x01ee80, 0x01ee89, WB_ALetter }, + {0x01ee8b, 0x01ee9b, WB_ALetter }, + {0x01eea1, 0x01eea3, WB_ALetter }, + {0x01eea5, 0x01eea9, WB_ALetter }, + {0x01eeab, 0x01eebb, WB_ALetter }, + {0x01f130, 0x01f149, WB_ALetter }, + {0x01f150, 0x01f169, WB_ALetter }, + {0x01f170, 0x01f189, WB_ALetter }, + {0x01f1e6, 0x01f1ff, WB_Regional_Indicator }, + {0x01f3fb, 0x01f3ff, WB_Extend }, + {0x01fbf0, 0x01fbf9, WB_Numeric }, + {0x0e0001, 0x0e0001, WB_Format }, + {0x0e0020, 0x0e007f, WB_Extend }, + {0x0e0100, 0x0e01ef, WB_Extend } +}; diff --git a/vendor/onig/enc/utf_16be.c b/vendor/oniguruma/oniguruma/src/utf16_be.c similarity index 52% rename from vendor/onig/enc/utf_16be.c rename to vendor/oniguruma/oniguruma/src/utf16_be.c index f9dd711..69f99e2 100644 --- a/vendor/onig/enc/utf_16be.c +++ b/vendor/oniguruma/oniguruma/src/utf16_be.c @@ -1,8 +1,8 @@ /********************************************************************** - utf_16be.c - Oniguruma (regular expression library) + utf16_be.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2008 K.Kosako + * Copyright (c) 2002-2024 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -27,10 +27,55 @@ * SUCH DAMAGE. */ -#include "regenc.h" -#include "iso_8859.h" +#include "regint.h" /* for USE_CALLOUT */ + + +static int +init(void) +{ +#ifdef USE_CALLOUT + + int id; + OnigEncoding enc; + char* name; + unsigned int args[4]; + OnigValue opts[4]; + + enc = ONIG_ENCODING_UTF16_BE; + + name = "\000F\000A\000I\000L\000\000"; BC0_P(name, fail); + name = "\000M\000I\000S\000M\000A\000T\000C\000H\000\000"; BC0_P(name, mismatch); + name = "\000S\000K\000I\000P\000\000"; BC0_P(name, skip); + + name = "\000M\000A\000X\000\000"; + args[0] = ONIG_TYPE_TAG | ONIG_TYPE_LONG; + args[1] = ONIG_TYPE_CHAR; + opts[0].c = 'X'; + BC_B_O(name, max, 2, args, 1, opts); + + name = "\000E\000R\000R\000O\000R\000\000"; + args[0] = ONIG_TYPE_LONG; opts[0].l = ONIG_ABORT; + BC_P_O(name, error, 1, args, 1, opts); + + name = "\000C\000O\000U\000N\000T\000\000"; + args[0] = ONIG_TYPE_CHAR; opts[0].c = '>'; + BC_B_O(name, count, 1, args, 1, opts); + + name = "\000T\000O\000T\000A\000L\000_\000C\000O\000U\000N\000T\000\000"; + args[0] = ONIG_TYPE_CHAR; opts[0].c = '>'; + BC_B_O(name, total_count, 1, args, 1, opts); + + name = "\000C\000M\000P\000\000"; + args[0] = ONIG_TYPE_TAG | ONIG_TYPE_LONG; + args[1] = ONIG_TYPE_STRING; + args[2] = ONIG_TYPE_TAG | ONIG_TYPE_LONG; + BC_P(name, cmp, 3, args); + +#endif /* USE_CALLOUT */ + + return ONIG_NORMAL; +} -#if 0 static const int EncLen_UTF16[] = { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -49,47 +94,51 @@ static const int EncLen_UTF16[] = { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 }; -#endif static int -utf16be_mbc_enc_len(const UChar* p, const OnigUChar* e ARG_UNUSED, - OnigEncoding enc ARG_UNUSED) +utf16be_mbc_enc_len(const UChar* p) { - int byte = p[0]; - if (!UTF16_IS_SURROGATE(byte)) { - if (2 <= e-p) - return ONIGENC_CONSTRUCT_MBCLEN_CHARFOUND(2); - else - return ONIGENC_CONSTRUCT_MBCLEN_NEEDMORE(1); - } - if (UTF16_IS_SURROGATE_FIRST(byte)) { - switch (e-p) { - case 1: return ONIGENC_CONSTRUCT_MBCLEN_NEEDMORE(3); - case 2: return ONIGENC_CONSTRUCT_MBCLEN_NEEDMORE(2); - case 3: - if (UTF16_IS_SURROGATE_SECOND(p[2])) - return ONIGENC_CONSTRUCT_MBCLEN_NEEDMORE(1); - break; - default: - if (UTF16_IS_SURROGATE_SECOND(p[2])) - return ONIGENC_CONSTRUCT_MBCLEN_CHARFOUND(4); - break; + return EncLen_UTF16[*p]; +} + +static int +is_valid_mbc_string(const UChar* s, const UChar* end) +{ + while (s < end) { + int len = utf16be_mbc_enc_len(s); + if (len == 4) { + if (s + 2 >= end) + return FALSE; + if (! UTF16_IS_SURROGATE_SECOND(*(s+2))) + return FALSE; } + else + if (UTF16_IS_SURROGATE_SECOND(*s)) + return FALSE; + + s += len; } - return ONIGENC_CONSTRUCT_MBCLEN_INVALID(); + + if (s != end) + return FALSE; + else + return TRUE; } static int -utf16be_is_mbc_newline(const UChar* p, const UChar* end, - OnigEncoding enc) +utf16be_is_mbc_newline(const UChar* p, const UChar* end) { if (p + 1 < end) { - if (*(p+1) == 0x0a && *p == 0x00) + if (*(p+1) == NEWLINE_CODE && *p == 0x00) return 1; #ifdef USE_UNICODE_ALL_LINE_TERMINATORS - if ((*(p+1) == 0x0b || *(p+1) == 0x0c || *(p+1) == 0x0d || *(p+1) == 0x85) - && *p == 0x00) + if (( +#ifndef USE_CRNL_AS_LINE_TERMINATOR + *(p+1) == 0x0d || +#endif + *(p+1) == 0x85) && *p == 0x00) return 1; + if (*p == 0x20 && (*(p+1) == 0x29 || *(p+1) == 0x28)) return 1; #endif @@ -98,14 +147,14 @@ utf16be_is_mbc_newline(const UChar* p, const UChar* end, } static OnigCodePoint -utf16be_mbc_to_code(const UChar* p, const UChar* end ARG_UNUSED, - OnigEncoding enc) +utf16be_mbc_to_code(const UChar* p, const UChar* end ARG_UNUSED) { OnigCodePoint code; if (UTF16_IS_SURROGATE_FIRST(*p)) { - code = ((((p[0] << 8) + p[1]) & 0x03ff) << 10) - + (((p[2] << 8) + p[3]) & 0x03ff) + 0x10000; + code = ((((p[0] - 0xd8) << 2) + ((p[1] & 0xc0) >> 6) + 1) << 16) + + ((((p[1] & 0x3f) << 2) + (p[2] - 0xdc)) << 8) + + p[3]; } else { code = p[0] * 256 + p[1]; @@ -114,38 +163,45 @@ utf16be_mbc_to_code(const UChar* p, const UChar* end ARG_UNUSED, } static int -utf16be_code_to_mbclen(OnigCodePoint code, - OnigEncoding enc) +utf16be_code_to_mbclen(OnigCodePoint code) { - return (code > 0xffff ? 4 : 2); + if (code > 0xffff) { + if (code > 0x10ffff) + return ONIGERR_INVALID_CODE_POINT_VALUE; + else + return 4; + } + else { + return 2; + } } static int -utf16be_code_to_mbc(OnigCodePoint code, UChar *buf, - OnigEncoding enc) +utf16be_code_to_mbc(OnigCodePoint code, UChar *buf) { UChar* p = buf; if (code > 0xffff) { - unsigned int high = (code >> 10) + 0xD7C0; - unsigned int low = (code & 0x3FF) + 0xDC00; - *p++ = (high >> 8) & 0xFF; - *p++ = high & 0xFF; - *p++ = (low >> 8) & 0xFF; - *p++ = low & 0xFF; + unsigned int plane, high; + + plane = (code >> 16) - 1; + *p++ = (plane >> 2) + 0xd8; + high = (code & 0xff00) >> 8; + *p++ = ((plane & 0x03) << 6) + (high >> 2); + *p++ = (high & 0x03) + 0xdc; + *p = (UChar )(code & 0xff); return 4; } else { *p++ = (UChar )((code & 0xff00) >> 8); - *p++ = (UChar )(code & 0xff); + *p = (UChar )(code & 0xff); return 2; } } static int utf16be_mbc_case_fold(OnigCaseFoldType flag, - const UChar** pp, const UChar* end, UChar* fold, - OnigEncoding enc) + const UChar** pp, const UChar* end, UChar* fold) { const UChar* p = *pp; @@ -154,10 +210,10 @@ utf16be_mbc_case_fold(OnigCaseFoldType flag, #ifdef USE_UNICODE_CASE_FOLD_TURKISH_AZERI if ((flag & ONIGENC_CASE_FOLD_TURKISH_AZERI) != 0) { if (*p == 0x49) { - *fold++ = 0x01; - *fold = 0x31; - (*pp) += 2; - return 2; + *fold++ = 0x01; + *fold = 0x31; + (*pp) += 2; + return 2; } } #endif @@ -168,47 +224,12 @@ utf16be_mbc_case_fold(OnigCaseFoldType flag, return 2; } else - return onigenc_unicode_mbc_case_fold(enc, flag, - pp, end, fold); + return onigenc_unicode_mbc_case_fold(ONIG_ENCODING_UTF16_BE, flag, + pp, end, fold); } -#if 0 -static int -utf16be_is_mbc_ambiguous(OnigCaseFoldType flag, const UChar** pp, const UChar* end) -{ - const UChar* p = *pp; - - (*pp) += EncLen_UTF16[*p]; - - if (*p == 0) { - int c, v; - - p++; - if (*p == SHARP_s && (flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { - return TRUE; - } - - c = *p; - v = ONIGENC_IS_UNICODE_ISO_8859_1_BIT_CTYPE(c, - (BIT_CTYPE_UPPER | BIT_CTYPE_LOWER)); - - if ((v | BIT_CTYPE_LOWER) != 0) { - /* 0xaa, 0xb5, 0xba are lower case letter, but can't convert. */ - if (c >= 0xaa && c <= 0xba) - return FALSE; - else - return TRUE; - } - return (v != 0 ? TRUE : FALSE); - } - - return FALSE; -} -#endif - static UChar* -utf16be_left_adjust_char_head(const UChar* start, const UChar* s, const UChar* end, - OnigEncoding enc ARG_UNUSED) +utf16be_left_adjust_char_head(const UChar* start, const UChar* s) { if (s <= start) return (UChar* )s; @@ -216,7 +237,8 @@ utf16be_left_adjust_char_head(const UChar* start, const UChar* s, const UChar* e s--; } - if (UTF16_IS_SURROGATE_SECOND(*s) && s > start + 1) + if (UTF16_IS_SURROGATE_SECOND(*s) && s > start + 1 && + UTF16_IS_SURROGATE_FIRST(*(s-2))) s -= 2; return (UChar* )s; @@ -224,19 +246,17 @@ utf16be_left_adjust_char_head(const UChar* start, const UChar* s, const UChar* e static int utf16be_get_case_fold_codes_by_str(OnigCaseFoldType flag, - const OnigUChar* p, const OnigUChar* end, - OnigCaseFoldCodeItem items[], - OnigEncoding enc) + const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]) { - return onigenc_unicode_get_case_fold_codes_by_str(enc, - flag, p, end, items); + return onigenc_unicode_get_case_fold_codes_by_str(ONIG_ENCODING_UTF16_BE, + flag, p, end, items); } -OnigEncodingDefine(utf_16be, UTF_16BE) = { +OnigEncodingType OnigEncodingUTF16_BE = { utf16be_mbc_enc_len, "UTF-16BE", /* name */ - 4, /* max byte length */ - 2, /* min byte length */ + 4, /* max enc length */ + 2, /* min enc length */ utf16be_is_mbc_newline, utf16be_mbc_to_code, utf16be_code_to_mbclen, @@ -249,8 +269,9 @@ OnigEncodingDefine(utf_16be, UTF_16BE) = { onigenc_utf16_32_get_ctype_code_range, utf16be_left_adjust_char_head, onigenc_always_false_is_allowed_reverse_match, - onigenc_unicode_case_map, - 0, - ONIGENC_FLAG_UNICODE, + init, + 0, /* is_initialized */ + is_valid_mbc_string, + ENC_FLAG_UNICODE|ENC_FLAG_SKIP_OFFSET_2, + 0, 0 }; -ENC_ALIAS("UCS-2BE", "UTF-16BE") diff --git a/vendor/onig/enc/utf_16le.c b/vendor/oniguruma/oniguruma/src/utf16_le.c similarity index 52% rename from vendor/onig/enc/utf_16le.c rename to vendor/oniguruma/oniguruma/src/utf16_le.c index 2c8438d..11804fe 100644 --- a/vendor/onig/enc/utf_16le.c +++ b/vendor/oniguruma/oniguruma/src/utf16_le.c @@ -1,8 +1,8 @@ /********************************************************************** - utf_16le.c - Oniguruma (regular expression library) + utf16_le.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2008 K.Kosako + * Copyright (c) 2002-2024 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -26,11 +26,54 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ +#include "regint.h" /* for USE_CALLOUT */ -#include "regenc.h" -#include "iso_8859.h" +static int +init(void) +{ +#ifdef USE_CALLOUT + + int id; + OnigEncoding enc; + char* name; + unsigned int args[4]; + OnigValue opts[4]; + + enc = ONIG_ENCODING_UTF16_LE; + + name = "F\000A\000I\000L\000\000\000"; BC0_P(name, fail); + name = "M\000I\000S\000M\000A\000T\000C\000H\000\000\000"; BC0_P(name, mismatch); + name = "S\000K\000I\000P\000\000\000"; BC0_P(name, skip); + + name = "M\000A\000X\000\000\000"; + args[0] = ONIG_TYPE_TAG | ONIG_TYPE_LONG; + args[1] = ONIG_TYPE_CHAR; + opts[0].c = 'X'; + BC_B_O(name, max, 2, args, 1, opts); + + name = "E\000R\000R\000O\000R\000\000\000"; + args[0] = ONIG_TYPE_LONG; opts[0].l = ONIG_ABORT; + BC_P_O(name, error, 1, args, 1, opts); + + name = "C\000O\000U\000N\000T\000\000\000"; + args[0] = ONIG_TYPE_CHAR; opts[0].c = '>'; + BC_B_O(name, count, 1, args, 1, opts); + + name = "T\000O\000T\000A\000L\000_\000C\000O\000U\000N\000T\000\000\000"; + args[0] = ONIG_TYPE_CHAR; opts[0].c = '>'; + BC_B_O(name, total_count, 1, args, 1, opts); + + name = "C\000M\000P\000\000\000"; + args[0] = ONIG_TYPE_TAG | ONIG_TYPE_LONG; + args[1] = ONIG_TYPE_STRING; + args[2] = ONIG_TYPE_TAG | ONIG_TYPE_LONG; + BC_P(name, cmp, 3, args); + +#endif /* USE_CALLOUT */ + + return ONIG_NORMAL; +} -#if 0 static const int EncLen_UTF16[] = { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -49,40 +92,65 @@ static const int EncLen_UTF16[] = { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 }; -#endif static int -utf16le_mbc_enc_len(const UChar* p, const OnigUChar* e, - OnigEncoding enc ARG_UNUSED) +utf16le_code_to_mbclen(OnigCodePoint code) { - int len = (int)(e - p); - UChar byte; - if (len < 2) - return ONIGENC_CONSTRUCT_MBCLEN_NEEDMORE(1); - byte = p[1]; - if (!UTF16_IS_SURROGATE(byte)) { - return ONIGENC_CONSTRUCT_MBCLEN_CHARFOUND(2); + if (code > 0xffff) { + if (code > 0x10ffff) + return ONIGERR_INVALID_CODE_POINT_VALUE; + else + return 4; + } + else { + return 2; } - if (UTF16_IS_SURROGATE_FIRST(byte)) { - if (len < 4) - return ONIGENC_CONSTRUCT_MBCLEN_NEEDMORE(4-len); - if (UTF16_IS_SURROGATE_SECOND(p[3])) - return ONIGENC_CONSTRUCT_MBCLEN_CHARFOUND(4); +} + +static int +utf16le_mbc_enc_len(const UChar* p) +{ + return EncLen_UTF16[*(p+1)]; +} + +static int +is_valid_mbc_string(const UChar* p, const UChar* end) +{ + const UChar* end1 = end - 1; + + while (p < end1) { + int len = utf16le_mbc_enc_len(p); + if (len == 4) { + if (p + 3 < end && ! UTF16_IS_SURROGATE_SECOND(*(p + 3))) + return FALSE; + } + else + if (UTF16_IS_SURROGATE_SECOND(*(p + 1))) + return FALSE; + + p += len; } - return ONIGENC_CONSTRUCT_MBCLEN_INVALID(); + + if (p != end) + return FALSE; + else + return TRUE; } static int -utf16le_is_mbc_newline(const UChar* p, const UChar* end, - OnigEncoding enc ARG_UNUSED) +utf16le_is_mbc_newline(const UChar* p, const UChar* end) { if (p + 1 < end) { - if (*p == 0x0a && *(p+1) == 0x00) + if (*p == NEWLINE_CODE && *(p+1) == 0x00) return 1; #ifdef USE_UNICODE_ALL_LINE_TERMINATORS - if ((*p == 0x0b || *p == 0x0c || *p == 0x0d || *p == 0x85) - && *(p+1) == 0x00) + if (( +#ifndef USE_CRNL_AS_LINE_TERMINATOR + *p == 0x0d || +#endif + *p == 0x85) && *(p+1) == 0x00) return 1; + if (*(p+1) == 0x20 && (*p == 0x29 || *p == 0x28)) return 1; #endif @@ -91,16 +159,16 @@ utf16le_is_mbc_newline(const UChar* p, const UChar* end, } static OnigCodePoint -utf16le_mbc_to_code(const UChar* p, const UChar* end ARG_UNUSED, - OnigEncoding enc ARG_UNUSED) +utf16le_mbc_to_code(const UChar* p, const UChar* end ARG_UNUSED) { OnigCodePoint code; UChar c0 = *p; UChar c1 = *(p+1); if (UTF16_IS_SURROGATE_FIRST(c1)) { - code = ((((c1 << 8) + c0) & 0x03ff) << 10) - + (((p[3] << 8) + p[2]) & 0x03ff) + 0x10000; + code = ((((c1 - 0xd8) << 2) + ((c0 & 0xc0) >> 6) + 1) << 16) + + ((((c0 & 0x3f) << 2) + (p[3] - 0xdc)) << 8) + + p[2]; } else { code = c1 * 256 + p[0]; @@ -109,38 +177,32 @@ utf16le_mbc_to_code(const UChar* p, const UChar* end ARG_UNUSED, } static int -utf16le_code_to_mbclen(OnigCodePoint code, - OnigEncoding enc ARG_UNUSED) -{ - return (code > 0xffff ? 4 : 2); -} - -static int -utf16le_code_to_mbc(OnigCodePoint code, UChar *buf, - OnigEncoding enc ARG_UNUSED) +utf16le_code_to_mbc(OnigCodePoint code, UChar *buf) { UChar* p = buf; if (code > 0xffff) { - unsigned int high = (code >> 10) + 0xD7C0; - unsigned int low = (code & 0x3FF) + 0xDC00; - *p++ = high & 0xFF; - *p++ = (high >> 8) & 0xFF; - *p++ = low & 0xFF; - *p++ = (low >> 8) & 0xFF; + unsigned int plane, high; + + plane = (code >> 16) - 1; + high = (code & 0xff00) >> 8; + + *p++ = ((plane & 0x03) << 6) + (high >> 2); + *p++ = (plane >> 2) + 0xd8; + *p++ = (UChar )(code & 0xff); + *p = (high & 0x03) + 0xdc; return 4; } else { *p++ = (UChar )(code & 0xff); - *p++ = (UChar )((code & 0xff00) >> 8); + *p = (UChar )((code & 0xff00) >> 8); return 2; } } static int utf16le_mbc_case_fold(OnigCaseFoldType flag, - const UChar** pp, const UChar* end, UChar* fold, - OnigEncoding enc) + const UChar** pp, const UChar* end, UChar* fold) { const UChar* p = *pp; @@ -148,10 +210,10 @@ utf16le_mbc_case_fold(OnigCaseFoldType flag, #ifdef USE_UNICODE_CASE_FOLD_TURKISH_AZERI if ((flag & ONIGENC_CASE_FOLD_TURKISH_AZERI) != 0) { if (*p == 0x49) { - *fold++ = 0x31; - *fold = 0x01; - (*pp) += 2; - return 2; + *fold++ = 0x31; + *fold = 0x01; + (*pp) += 2; + return 2; } } #endif @@ -162,54 +224,21 @@ utf16le_mbc_case_fold(OnigCaseFoldType flag, return 2; } else - return onigenc_unicode_mbc_case_fold(enc, flag, pp, - end, fold); + return onigenc_unicode_mbc_case_fold(ONIG_ENCODING_UTF16_LE, flag, pp, end, + fold); } -#if 0 -static int -utf16le_is_mbc_ambiguous(OnigCaseFoldType flag, const UChar** pp, - const UChar* end) -{ - const UChar* p = *pp; - - (*pp) += EncLen_UTF16[*(p+1)]; - - if (*(p+1) == 0) { - int c, v; - - if (*p == SHARP_s && (flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { - return TRUE; - } - - c = *p; - v = ONIGENC_IS_UNICODE_ISO_8859_1_BIT_CTYPE(c, - (BIT_CTYPE_UPPER | BIT_CTYPE_LOWER)); - if ((v | BIT_CTYPE_LOWER) != 0) { - /* 0xaa, 0xb5, 0xba are lower case letter, but can't convert. */ - if (c >= 0xaa && c <= 0xba) - return FALSE; - else - return TRUE; - } - return (v != 0 ? TRUE : FALSE); - } - - return FALSE; -} -#endif - static UChar* -utf16le_left_adjust_char_head(const UChar* start, const UChar* s, const UChar* end, - OnigEncoding enc ARG_UNUSED) +utf16le_left_adjust_char_head(const UChar* start, const UChar* s) { if (s <= start) return (UChar* )s; - if ((s - start) % 2 == 1) { + if ((s - start) % 2 != 0) { s--; } - if (UTF16_IS_SURROGATE_SECOND(*(s+1)) && s > start + 1) + if (UTF16_IS_SURROGATE_SECOND(*(s+1)) && s > start + 1 && + UTF16_IS_SURROGATE_FIRST(*(s-1))) s -= 2; return (UChar* )s; @@ -217,19 +246,17 @@ utf16le_left_adjust_char_head(const UChar* start, const UChar* s, const UChar* e static int utf16le_get_case_fold_codes_by_str(OnigCaseFoldType flag, - const OnigUChar* p, const OnigUChar* end, - OnigCaseFoldCodeItem items[], - OnigEncoding enc) + const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]) { - return onigenc_unicode_get_case_fold_codes_by_str(enc, - flag, p, end, items); + return onigenc_unicode_get_case_fold_codes_by_str(ONIG_ENCODING_UTF16_LE, + flag, p, end, items); } -OnigEncodingDefine(utf_16le, UTF_16LE) = { +OnigEncodingType OnigEncodingUTF16_LE = { utf16le_mbc_enc_len, "UTF-16LE", /* name */ - 4, /* max byte length */ - 2, /* min byte length */ + 4, /* max enc length */ + 2, /* min enc length */ utf16le_is_mbc_newline, utf16le_mbc_to_code, utf16le_code_to_mbclen, @@ -242,7 +269,9 @@ OnigEncodingDefine(utf_16le, UTF_16LE) = { onigenc_utf16_32_get_ctype_code_range, utf16le_left_adjust_char_head, onigenc_always_false_is_allowed_reverse_match, - onigenc_unicode_case_map, - 0, - ONIGENC_FLAG_UNICODE, + init, + 0, /* is_initialized */ + is_valid_mbc_string, + ENC_FLAG_UNICODE|ENC_FLAG_SKIP_OFFSET_1, + 0, 0 }; diff --git a/vendor/onig/enc/utf_32be.c b/vendor/oniguruma/oniguruma/src/utf32_be.c similarity index 53% rename from vendor/onig/enc/utf_32be.c rename to vendor/oniguruma/oniguruma/src/utf32_be.c index 17841e5..31bd98b 100644 --- a/vendor/onig/enc/utf_32be.c +++ b/vendor/oniguruma/oniguruma/src/utf32_be.c @@ -1,8 +1,8 @@ /********************************************************************** - utf_32be.c - Oniguruma (regular expression library) + utf32_be.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2007 K.Kosako + * Copyright (c) 2002-2020 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -28,40 +28,36 @@ */ #include "regenc.h" -#include "iso_8859.h" -static OnigCodePoint utf32be_mbc_to_code(const UChar* p, const UChar* end, OnigEncoding enc); static int -utf32be_mbc_enc_len(const UChar* p ARG_UNUSED, const OnigUChar* e, - OnigEncoding enc) +utf32be_mbc_enc_len(const UChar* p ARG_UNUSED) { - if (e < p) { - return ONIGENC_CONSTRUCT_MBCLEN_INVALID(); - } - else if (e-p < 4) { - return ONIGENC_CONSTRUCT_MBCLEN_NEEDMORE(4-(int)(e-p)); - } - else { - OnigCodePoint c = utf32be_mbc_to_code(p, e, enc); - if (!UNICODE_VALID_CODEPOINT_P(c)) - return ONIGENC_CONSTRUCT_MBCLEN_INVALID(); - return ONIGENC_CONSTRUCT_MBCLEN_CHARFOUND(4); - } + return 4; } static int -utf32be_is_mbc_newline(const UChar* p, const UChar* end, - OnigEncoding enc ARG_UNUSED) +is_valid_mbc_string(const UChar* s, const UChar* end) +{ + return onigenc_length_check_is_valid_mbc_string(ONIG_ENCODING_UTF32_BE, s, end); +} + +static int +utf32be_is_mbc_newline(const UChar* p, const UChar* end) { if (p + 3 < end) { - if (*(p+3) == 0x0a && *(p+2) == 0 && *(p+1) == 0 && *p == 0) + if (*(p+3) == NEWLINE_CODE && *(p+2) == 0 && *(p+1) == 0 && *p == 0) return 1; #ifdef USE_UNICODE_ALL_LINE_TERMINATORS - if ((*(p+3) == 0x0b || *(p+3) == 0x0c || *(p+3) == 0x0d || *(p+3) == 0x85) - && *(p+2) == 0 && *(p+1) == 0 && *p == 0x00) + if (( +#ifndef USE_CRNL_AS_LINE_TERMINATOR + *(p+3) == 0x0d || +#endif + *(p+3) == 0x85) + && *(p+2) == 0 && *(p+1) == 0 && *p == 0x00) return 1; + if (*(p+2) == 0x20 && (*(p+3) == 0x29 || *(p+3) == 0x28) - && *(p+1) == 0 && *p == 0) + && *(p+1) == 0 && *p == 0) return 1; #endif } @@ -69,22 +65,22 @@ utf32be_is_mbc_newline(const UChar* p, const UChar* end, } static OnigCodePoint -utf32be_mbc_to_code(const UChar* p, const UChar* end ARG_UNUSED, - OnigEncoding enc ARG_UNUSED) +utf32be_mbc_to_code(const UChar* p, const UChar* end ARG_UNUSED) { - return (OnigCodePoint )(((p[0] * 256 + p[1]) * 256 + p[2]) * 256 + p[3]); + OnigCodePoint code; + + code = (OnigCodePoint )((((p[0] & 0x7f) * 256 + p[1]) * 256 + p[2]) * 256 + p[3]); + return code; } static int -utf32be_code_to_mbclen(OnigCodePoint code ARG_UNUSED, - OnigEncoding enc ARG_UNUSED) +utf32be_code_to_mbclen(OnigCodePoint code ARG_UNUSED) { return 4; } static int -utf32be_code_to_mbc(OnigCodePoint code, UChar *buf, - OnigEncoding enc ARG_UNUSED) +utf32be_code_to_mbc(OnigCodePoint code, UChar *buf) { UChar* p = buf; @@ -97,8 +93,7 @@ utf32be_code_to_mbc(OnigCodePoint code, UChar *buf, static int utf32be_mbc_case_fold(OnigCaseFoldType flag, - const UChar** pp, const UChar* end, UChar* fold, - OnigEncoding enc) + const UChar** pp, const UChar* end, UChar* fold) { const UChar* p = *pp; @@ -109,10 +104,10 @@ utf32be_mbc_case_fold(OnigCaseFoldType flag, #ifdef USE_UNICODE_CASE_FOLD_TURKISH_AZERI if ((flag & ONIGENC_CASE_FOLD_TURKISH_AZERI) != 0) { if (*(p+3) == 0x49) { - *fold++ = 0x01; - *fold = 0x31; - (*pp) += 4; - return 4; + *fold++ = 0x01; + *fold = 0x31; + (*pp) += 4; + return 4; } } #endif @@ -123,70 +118,34 @@ utf32be_mbc_case_fold(OnigCaseFoldType flag, return 4; } else - return onigenc_unicode_mbc_case_fold(enc, flag, pp, - end, fold); + return onigenc_unicode_mbc_case_fold(ONIG_ENCODING_UTF32_BE, flag, pp, end, + fold); } -#if 0 -static int -utf32be_is_mbc_ambiguous(OnigCaseFoldType flag, const UChar** pp, const UChar* end) -{ - const UChar* p = *pp; - - (*pp) += 4; - - if (*(p+2) == 0 && *(p+1) == 0 && *p == 0) { - int c, v; - - p += 3; - if (*p == SHARP_s && (flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { - return TRUE; - } - - c = *p; - v = ONIGENC_IS_UNICODE_ISO_8859_1_BIT_CTYPE(c, - (BIT_CTYPE_UPPER | BIT_CTYPE_LOWER)); - if ((v | BIT_CTYPE_LOWER) != 0) { - /* 0xaa, 0xb5, 0xba are lower case letter, but can't convert. */ - if (c >= 0xaa && c <= 0xba) - return FALSE; - else - return TRUE; - } - return (v != 0 ? TRUE : FALSE); - } - - return FALSE; -} -#endif - static UChar* -utf32be_left_adjust_char_head(const UChar* start, const UChar* s, const UChar* end, - OnigEncoding enc ARG_UNUSED) +utf32be_left_adjust_char_head(const UChar* start, const UChar* s) { - ptrdiff_t rem; + int rem; if (s <= start) return (UChar* )s; - rem = (int )((s - start) % 4); + rem = (s - start) % 4; return (UChar* )(s - rem); } static int utf32be_get_case_fold_codes_by_str(OnigCaseFoldType flag, - const OnigUChar* p, const OnigUChar* end, - OnigCaseFoldCodeItem items[], - OnigEncoding enc) + const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]) { - return onigenc_unicode_get_case_fold_codes_by_str(enc, - flag, p, end, items); + return onigenc_unicode_get_case_fold_codes_by_str(ONIG_ENCODING_UTF32_BE, + flag, p, end, items); } -OnigEncodingDefine(utf_32be, UTF_32BE) = { +OnigEncodingType OnigEncodingUTF32_BE = { utf32be_mbc_enc_len, "UTF-32BE", /* name */ - 4, /* max byte length */ - 4, /* min byte length */ + 4, /* max enc length */ + 4, /* min enc length */ utf32be_is_mbc_newline, utf32be_mbc_to_code, utf32be_code_to_mbclen, @@ -199,8 +158,9 @@ OnigEncodingDefine(utf_32be, UTF_32BE) = { onigenc_utf16_32_get_ctype_code_range, utf32be_left_adjust_char_head, onigenc_always_false_is_allowed_reverse_match, - onigenc_unicode_case_map, - 0, - ONIGENC_FLAG_UNICODE, + NULL, /* init */ + NULL, /* is_initialized */ + is_valid_mbc_string, + ENC_FLAG_UNICODE|ENC_FLAG_SKIP_OFFSET_4, + 0, 0 }; -ENC_ALIAS("UCS-4BE", "UTF-32BE") diff --git a/vendor/onig/enc/utf_32le.c b/vendor/oniguruma/oniguruma/src/utf32_le.c similarity index 53% rename from vendor/onig/enc/utf_32le.c rename to vendor/oniguruma/oniguruma/src/utf32_le.c index 18b798f..f50cab7 100644 --- a/vendor/onig/enc/utf_32le.c +++ b/vendor/oniguruma/oniguruma/src/utf32_le.c @@ -1,8 +1,8 @@ /********************************************************************** - utf_32le.c - Oniguruma (regular expression library) + utf32_le.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2007 K.Kosako + * Copyright (c) 2002-2020 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -28,40 +28,36 @@ */ #include "regenc.h" -#include "iso_8859.h" -static OnigCodePoint utf32le_mbc_to_code(const UChar* p, const UChar* end, OnigEncoding enc); static int -utf32le_mbc_enc_len(const UChar* p ARG_UNUSED, const OnigUChar* e, - OnigEncoding enc) +utf32le_mbc_enc_len(const UChar* p ARG_UNUSED) { - if (e < p) { - return ONIGENC_CONSTRUCT_MBCLEN_INVALID(); - } - else if (e-p < 4) { - return ONIGENC_CONSTRUCT_MBCLEN_NEEDMORE(4-(int)(e-p)); - } - else { - OnigCodePoint c = utf32le_mbc_to_code(p, e, enc); - if (!UNICODE_VALID_CODEPOINT_P(c)) - return ONIGENC_CONSTRUCT_MBCLEN_INVALID(); - return ONIGENC_CONSTRUCT_MBCLEN_CHARFOUND(4); - } + return 4; } static int -utf32le_is_mbc_newline(const UChar* p, const UChar* end, - OnigEncoding enc ARG_UNUSED) +is_valid_mbc_string(const UChar* s, const UChar* end) +{ + return onigenc_length_check_is_valid_mbc_string(ONIG_ENCODING_UTF32_LE, s, end); +} + +static int +utf32le_is_mbc_newline(const UChar* p, const UChar* end) { if (p + 3 < end) { - if (*p == 0x0a && *(p+1) == 0 && *(p+2) == 0 && *(p+3) == 0) + if (*p == NEWLINE_CODE && *(p+1) == 0 && *(p+2) == 0 && *(p+3) == 0) return 1; #ifdef USE_UNICODE_ALL_LINE_TERMINATORS - if ((*p == 0x0b ||*p == 0x0c ||*p == 0x0d || *p == 0x85) - && *(p+1) == 0x00 && (p+2) == 0x00 && *(p+3) == 0x00) + if (( +#ifndef USE_CRNL_AS_LINE_TERMINATOR + *p == 0x0d || +#endif + *p == 0x85) + && *(p+1) == 0x00 && (p+2) == 0x00 && *(p+3) == 0x00) return 1; + if (*(p+1) == 0x20 && (*p == 0x29 || *p == 0x28) - && *(p+2) == 0x00 && *(p+3) == 0x00) + && *(p+2) == 0x00 && *(p+3) == 0x00) return 1; #endif } @@ -69,22 +65,22 @@ utf32le_is_mbc_newline(const UChar* p, const UChar* end, } static OnigCodePoint -utf32le_mbc_to_code(const UChar* p, const UChar* end ARG_UNUSED, - OnigEncoding enc ARG_UNUSED) +utf32le_mbc_to_code(const UChar* p, const UChar* end ARG_UNUSED) { - return (OnigCodePoint )(((p[3] * 256 + p[2]) * 256 + p[1]) * 256 + p[0]); + OnigCodePoint code; + + code = (OnigCodePoint )((((p[3] & 0x7f) * 256 + p[2]) * 256 + p[1]) * 256 + p[0]); + return code; } static int -utf32le_code_to_mbclen(OnigCodePoint code ARG_UNUSED, - OnigEncoding enc ARG_UNUSED) +utf32le_code_to_mbclen(OnigCodePoint code ARG_UNUSED) { return 4; } static int -utf32le_code_to_mbc(OnigCodePoint code, UChar *buf, - OnigEncoding enc ARG_UNUSED) +utf32le_code_to_mbc(OnigCodePoint code, UChar *buf) { UChar* p = buf; @@ -97,8 +93,7 @@ utf32le_code_to_mbc(OnigCodePoint code, UChar *buf, static int utf32le_mbc_case_fold(OnigCaseFoldType flag, - const UChar** pp, const UChar* end, UChar* fold, - OnigEncoding enc) + const UChar** pp, const UChar* end, UChar* fold) { const UChar* p = *pp; @@ -106,8 +101,8 @@ utf32le_mbc_case_fold(OnigCaseFoldType flag, #ifdef USE_UNICODE_CASE_FOLD_TURKISH_AZERI if ((flag & ONIGENC_CASE_FOLD_TURKISH_AZERI) != 0) { if (*p == 0x49) { - *fold++ = 0x31; - *fold++ = 0x01; + *fold++ = 0x31; + *fold++ = 0x01; } } else { @@ -124,69 +119,34 @@ utf32le_mbc_case_fold(OnigCaseFoldType flag, return 4; } else - return onigenc_unicode_mbc_case_fold(enc, flag, pp, - end, fold); + return onigenc_unicode_mbc_case_fold(ONIG_ENCODING_UTF32_LE, flag, pp, end, + fold); } -#if 0 -static int -utf32le_is_mbc_ambiguous(OnigCaseFoldType flag, const UChar** pp, const UChar* end) -{ - const UChar* p = *pp; - - (*pp) += 4; - - if (*(p+1) == 0 && *(p+2) == 0 && *(p+3) == 0) { - int c, v; - - if (*p == SHARP_s && (flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { - return TRUE; - } - - c = *p; - v = ONIGENC_IS_UNICODE_ISO_8859_1_BIT_CTYPE(c, - (BIT_CTYPE_UPPER | BIT_CTYPE_LOWER)); - if ((v | BIT_CTYPE_LOWER) != 0) { - /* 0xaa, 0xb5, 0xba are lower case letter, but can't convert. */ - if (c >= 0xaa && c <= 0xba) - return FALSE; - else - return TRUE; - } - return (v != 0 ? TRUE : FALSE); - } - - return FALSE; -} -#endif - static UChar* -utf32le_left_adjust_char_head(const UChar* start, const UChar* s, const UChar* end, - OnigEncoding enc ARG_UNUSED) +utf32le_left_adjust_char_head(const UChar* start, const UChar* s) { - ptrdiff_t rem; + int rem; if (s <= start) return (UChar* )s; - rem = (int )((s - start) % 4); + rem = (s - start) % 4; return (UChar* )(s - rem); } static int utf32le_get_case_fold_codes_by_str(OnigCaseFoldType flag, - const OnigUChar* p, const OnigUChar* end, - OnigCaseFoldCodeItem items[], - OnigEncoding enc) + const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]) { - return onigenc_unicode_get_case_fold_codes_by_str(enc, - flag, p, end, items); + return onigenc_unicode_get_case_fold_codes_by_str(ONIG_ENCODING_UTF32_LE, + flag, p, end, items); } -OnigEncodingDefine(utf_32le, UTF_32LE) = { +OnigEncodingType OnigEncodingUTF32_LE = { utf32le_mbc_enc_len, "UTF-32LE", /* name */ - 4, /* max byte length */ - 4, /* min byte length */ + 4, /* max enc length */ + 4, /* min enc length */ utf32le_is_mbc_newline, utf32le_mbc_to_code, utf32le_code_to_mbclen, @@ -199,8 +159,9 @@ OnigEncodingDefine(utf_32le, UTF_32LE) = { onigenc_utf16_32_get_ctype_code_range, utf32le_left_adjust_char_head, onigenc_always_false_is_allowed_reverse_match, - onigenc_unicode_case_map, - 0, - ONIGENC_FLAG_UNICODE, + NULL, /* init */ + NULL, /* is_initialized */ + is_valid_mbc_string, + ENC_FLAG_UNICODE|ENC_FLAG_SKIP_OFFSET_1, + 0, 0 }; -ENC_ALIAS("UCS-4LE", "UTF-32LE") diff --git a/vendor/oniguruma/oniguruma/src/utf8.c b/vendor/oniguruma/oniguruma/src/utf8.c new file mode 100644 index 0000000..1178d09 --- /dev/null +++ b/vendor/oniguruma/oniguruma/src/utf8.c @@ -0,0 +1,290 @@ +/********************************************************************** + utf8.c - Oniguruma (regular expression library) +**********************************************************************/ +/*- + * Copyright (c) 2002-2019 K.Kosako + * 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. + */ + +#include "regenc.h" + +/* U+0000 - U+10FFFF */ +#define USE_RFC3629_RANGE + +/* #define USE_INVALID_CODE_SCHEME */ + +#ifdef USE_INVALID_CODE_SCHEME +/* virtual codepoint values for invalid encoding byte 0xfe and 0xff */ +#define INVALID_CODE_FE 0xfffffffe +#define INVALID_CODE_FF 0xffffffff +#define VALID_CODE_LIMIT 0x7fffffff +#endif + +#define utf8_islead(c) ((UChar )((c) & 0xc0) != 0x80) +#define utf8_istail(c) ((UChar )((c) & 0xc0) == 0x80) + +static const int EncLen_UTF8[] = { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, +#ifdef USE_RFC3629_RANGE + 4, 4, 4, 4, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 +#else + 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 1, 1 +#endif +}; + +static int +mbc_enc_len(const UChar* p) +{ + return EncLen_UTF8[*p]; +} + +static int +is_valid_mbc_string(const UChar* p, const UChar* end) +{ + int i, len; + + while (p < end) { + if (! utf8_islead(*p)) + return FALSE; + + len = mbc_enc_len(p++); + if (len > 1) { + for (i = 1; i < len; i++) { + if (p == end) + return FALSE; + + if (! utf8_istail(*p++)) + return FALSE; + } + } + } + + return TRUE; +} + +static OnigCodePoint +mbc_to_code(const UChar* p, const UChar* end) +{ + int c, len; + OnigCodePoint n; + + len = mbc_enc_len(p); + if (len > (int )(end - p)) len = (int )(end - p); + + c = *p++; + if (len > 1) { + len--; + n = c & ((1 << (6 - len)) - 1); + while (len--) { + c = *p++; + n = (n << 6) | (c & ((1 << 6) - 1)); + } + return n; + } + else { +#ifdef USE_INVALID_CODE_SCHEME + if (c > 0xfd) { + return ((c == 0xfe) ? INVALID_CODE_FE : INVALID_CODE_FF); + } +#endif + return (OnigCodePoint )c; + } +} + +static int +code_to_mbclen(OnigCodePoint code) +{ + if ((code & 0xffffff80) == 0) return 1; + else if ((code & 0xfffff800) == 0) return 2; + else if ((code & 0xffff0000) == 0) return 3; + else if ((code & 0xffe00000) == 0) return 4; +#ifndef USE_RFC3629_RANGE + else if ((code & 0xfc000000) == 0) return 5; + else if ((code & 0x80000000) == 0) return 6; +#endif +#ifdef USE_INVALID_CODE_SCHEME + else if (code == INVALID_CODE_FE) return 1; + else if (code == INVALID_CODE_FF) return 1; +#endif + else + return ONIGERR_INVALID_CODE_POINT_VALUE; +} + +static int +code_to_mbc(OnigCodePoint code, UChar *buf) +{ +#define UTF8_TRAILS(code, shift) (UChar )((((code) >> (shift)) & 0x3f) | 0x80) +#define UTF8_TRAIL0(code) (UChar )(((code) & 0x3f) | 0x80) + + if ((code & 0xffffff80) == 0) { + *buf = (UChar )code; + return 1; + } + else { + UChar *p = buf; + + if ((code & 0xfffff800) == 0) { + *p++ = (UChar )(((code>>6)& 0x1f) | 0xc0); + } + else if ((code & 0xffff0000) == 0) { + *p++ = (UChar )(((code>>12) & 0x0f) | 0xe0); + *p++ = UTF8_TRAILS(code, 6); + } + else if ((code & 0xffe00000) == 0) { + *p++ = (UChar )(((code>>18) & 0x07) | 0xf0); + *p++ = UTF8_TRAILS(code, 12); + *p++ = UTF8_TRAILS(code, 6); + } +#ifndef USE_RFC3629_RANGE + else if ((code & 0xfc000000) == 0) { + *p++ = (UChar )(((code>>24) & 0x03) | 0xf8); + *p++ = UTF8_TRAILS(code, 18); + *p++ = UTF8_TRAILS(code, 12); + *p++ = UTF8_TRAILS(code, 6); + } + else if ((code & 0x80000000) == 0) { + *p++ = (UChar )(((code>>30) & 0x01) | 0xfc); + *p++ = UTF8_TRAILS(code, 24); + *p++ = UTF8_TRAILS(code, 18); + *p++ = UTF8_TRAILS(code, 12); + *p++ = UTF8_TRAILS(code, 6); + } +#endif +#ifdef USE_INVALID_CODE_SCHEME + else if (code == INVALID_CODE_FE) { + *p = 0xfe; + return 1; + } + else if (code == INVALID_CODE_FF) { + *p = 0xff; + return 1; + } +#endif + else { + return ONIGERR_TOO_BIG_WIDE_CHAR_VALUE; + } + + *p++ = UTF8_TRAIL0(code); + return (int )(p - buf); + } +} + +static int +mbc_case_fold(OnigCaseFoldType flag, const UChar** pp, + const UChar* end, UChar* fold) +{ + const UChar* p = *pp; + + if (ONIGENC_IS_MBC_ASCII(p)) { +#ifdef USE_UNICODE_CASE_FOLD_TURKISH_AZERI + if ((flag & ONIGENC_CASE_FOLD_TURKISH_AZERI) != 0) { + if (*p == 0x49) { + *fold++ = 0xc4; + *fold = 0xb1; + (*pp)++; + return 2; + } + } +#endif + + *fold = ONIGENC_ASCII_CODE_TO_LOWER_CASE(*p); + (*pp)++; + return 1; /* return byte length of converted char to lower */ + } + else { + return onigenc_unicode_mbc_case_fold(ONIG_ENCODING_UTF8, flag, + pp, end, fold); + } +} + +static int +get_ctype_code_range(OnigCtype ctype, OnigCodePoint *sb_out, + const OnigCodePoint* ranges[]) +{ + *sb_out = 0x80; + return onigenc_unicode_ctype_code_range(ctype, ranges); +} + + +static UChar* +left_adjust_char_head(const UChar* start, const UChar* s) +{ + const UChar *p; + + if (s <= start) return (UChar* )s; + p = s; + + while (!utf8_islead(*p) && p > start) p--; + return (UChar* )p; +} + +static int +get_case_fold_codes_by_str(OnigCaseFoldType flag, + const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]) +{ + return onigenc_unicode_get_case_fold_codes_by_str(ONIG_ENCODING_UTF8, + flag, p, end, items); +} + +OnigEncodingType OnigEncodingUTF8 = { + mbc_enc_len, + "UTF-8", /* name */ +#ifdef USE_RFC3629_RANGE + 4, /* max enc length */ +#else + 6, +#endif + 1, /* min enc length */ + onigenc_is_mbc_newline_0x0a, + mbc_to_code, + code_to_mbclen, + code_to_mbc, + mbc_case_fold, + onigenc_unicode_apply_all_case_fold, + get_case_fold_codes_by_str, + onigenc_unicode_property_name_to_ctype, + onigenc_unicode_is_code_ctype, + get_ctype_code_range, + left_adjust_char_head, + onigenc_always_true_is_allowed_reverse_match, + NULL, /* init */ + NULL, /* is_initialized */ + is_valid_mbc_string, + ENC_FLAG_ASCII_COMPATIBLE|ENC_FLAG_UNICODE|ENC_FLAG_SKIP_OFFSET_1_OR_0, + 0, 0 +}; diff --git a/vendor/oniguruma/oniguruma/test-driver b/vendor/oniguruma/oniguruma/test-driver new file mode 100755 index 0000000..9759384 --- /dev/null +++ b/vendor/oniguruma/oniguruma/test-driver @@ -0,0 +1,150 @@ +#! /bin/sh +# test-driver - basic testsuite driver script. + +scriptversion=2018-03-07.03; # UTC + +# Copyright (C) 2011-2020 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + +# Make unconditional expansion of undefined variables an error. This +# helps a lot in preventing typo-related bugs. +set -u + +usage_error () +{ + echo "$0: $*" >&2 + print_usage >&2 + exit 2 +} + +print_usage () +{ + cat <$log_file 2>&1 +estatus=$? + +if test $enable_hard_errors = no && test $estatus -eq 99; then + tweaked_estatus=1 +else + tweaked_estatus=$estatus +fi + +case $tweaked_estatus:$expect_failure in + 0:yes) col=$red res=XPASS recheck=yes gcopy=yes;; + 0:*) col=$grn res=PASS recheck=no gcopy=no;; + 77:*) col=$blu res=SKIP recheck=no gcopy=yes;; + 99:*) col=$mgn res=ERROR recheck=yes gcopy=yes;; + *:yes) col=$lgn res=XFAIL recheck=no gcopy=yes;; + *:*) col=$red res=FAIL recheck=yes gcopy=yes;; +esac + +# Report the test outcome and exit status in the logs, so that one can +# know whether the test passed or failed simply by looking at the '.log' +# file, without the need of also peaking into the corresponding '.trs' +# file (automake bug#11814). +echo "$res $test_name (exit status: $estatus)" >>$log_file + +# Report outcome to console. +echo "${col}${res}${std}: $test_name" + +# Register the test result, and other relevant metadata. +echo ":test-result: $res" > $trs_file +echo ":global-test-result: $res" >> $trs_file +echo ":recheck: $recheck" >> $trs_file +echo ":copy-in-global-log: $gcopy" >> $trs_file + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: diff --git a/vendor/oniguruma/oniguruma/test/CMakeLists.txt b/vendor/oniguruma/oniguruma/test/CMakeLists.txt new file mode 100644 index 0000000..a508f6a --- /dev/null +++ b/vendor/oniguruma/oniguruma/test/CMakeLists.txt @@ -0,0 +1,55 @@ +if(MSVC) + if(MSVC_VERSION LESS "1900") + # < VS2015, no "/utf-8" option, can not build test + return() + endif() +endif() + +enable_testing() + +add_executable(test_utf8 test_utf8.c) +target_link_libraries(test_utf8 onig) +if(MSVC) + target_compile_options(test_utf8 PRIVATE /utf-8) +endif(MSVC) + +add_executable(test_syntax test_syntax.c) +target_link_libraries(test_syntax onig) +if(MSVC) + target_compile_options(test_syntax PRIVATE /utf-8) +endif(MSVC) + +add_executable(test_options test_options.c) +target_link_libraries(test_options onig) +if(MSVC) + target_compile_options(test_options PRIVATE /utf-8) +endif(MSVC) + +if(NOT MSVC) + # EUC + add_executable(testc testc.c) + target_link_libraries(testc onig) + if (CMAKE_C_COMPILER_ID MATCHES "Clang|GNU") + target_compile_options(testc PRIVATE -Wall -Wno-invalid-source-encoding) + endif() +endif(NOT MSVC) + +if(ENABLE_POSIX_API) + add_executable(testp testp.c) + target_link_libraries(testp onig) +endif() + +add_executable(testcu testu.c) +target_link_libraries(testcu onig) + +add_executable(test_regset test_regset.c) +target_link_libraries(test_regset onig) +if(MSVC) + target_compile_options(test_regset PRIVATE /utf-8) +endif(MSVC) + +add_executable(test_back test_back.c) +target_link_libraries(test_back onig) +if(MSVC) + target_compile_options(test_back PRIVATE /utf-8) +endif(MSVC) diff --git a/vendor/oniguruma/oniguruma/test/Makefile.am b/vendor/oniguruma/oniguruma/test/Makefile.am new file mode 100644 index 0000000..94739a2 --- /dev/null +++ b/vendor/oniguruma/oniguruma/test/Makefile.am @@ -0,0 +1,83 @@ +## Makefile.am for Oniguruma +lib_onig = ../src/libonig.la + +AM_LDFLAGS = -L$(libdir) +AM_CFLAGS = -Wall -Wno-invalid-source-encoding +AM_CPPFLAGS = -I$(top_srcdir)/src + +if ENABLE_POSIX_API +TESTS = test_utf8 test_syntax test_options testc testp testcu test_regset test_back +else +TESTS = test_utf8 test_syntax test_options testc testcu test_regset test_back +endif + +check_PROGRAMS = $(TESTS) + +test: test_uchar test_regex_t $(TESTS) + @echo "[Oniguruma API, UTF-8 check]" + @./test_utf8 | grep RESULT + @echo "[Oniguruma API, SYNTAX check]" + @./test_syntax | grep RESULT + @echo "[Oniguruma API, Options check]" + @./test_options | grep RESULT + @echo "[Oniguruma API, EUC-JP check]" + @./testc | grep RESULT +if ENABLE_POSIX_API + @echo "[POSIX API, UTF-8 check]" + @./testp | grep RESULT +endif + @echo "[Oniguruma API, UTF-16 check]" + @./testcu | grep RESULT + @echo "" + @echo "[Oniguruma API, regset check]" + @./test_regset + @echo "[Oniguruma API, backward search check]" + @./test_back | grep RESULT + +test_uchar: + @echo "[UChar in oniguruma.h check]" + @grep "\(^\|[^g]\)UChar" $(top_srcdir)/src/oniguruma.h + @echo "" + +test_regex_t: + @echo "[regex_t in oniguruma.h check]" + @grep "\(^\|[^[:alnum:]]\)regex_t" $(top_srcdir)/src/oniguruma.h + @echo "" + + +test_utf8_SOURCES = test_utf8.c +test_utf8_LDADD = $(lib_onig) + +test_syntax_SOURCES = test_syntax.c +test_syntax_LDADD = $(lib_onig) + +test_options_SOURCES = test_options.c +test_options_LDADD = $(lib_onig) + +testc_SOURCES = testc.c +testc_LDADD = $(lib_onig) + +testp_SOURCES = testp.c +testp_LDADD = $(lib_onig) + +testcu_SOURCES = testu.c +testcu_LDADD = $(lib_onig) + +test_regset_SOURCES = test_regset.c +test_regset_LDADD = $(lib_onig) + +test_back_SOURCES = test_back.c +test_back_LDADD = $(lib_onig) + + +gcov: + make CFLAGS="--coverage" test_utf8 + make CFLAGS="--coverage" test_syntax + make CFLAGS="--coverage" test_options + make CFLAGS="--coverage" testc +if ENABLE_POSIX_API + make CFLAGS="--coverage" testp +endif + make CFLAGS="--coverage" testcu + make CFLAGS="--coverage" test_regset + make CFLAGS="--coverage" test_back diff --git a/vendor/oniguruma/oniguruma/test/test.sh b/vendor/oniguruma/oniguruma/test/test.sh new file mode 100755 index 0000000..08c52a8 --- /dev/null +++ b/vendor/oniguruma/oniguruma/test/test.sh @@ -0,0 +1,17 @@ +#!/bin/sh + +echo "[Oniguruma API, UTF-8 check]" +./test_utf8 | grep RESULT +echo "[Oniguruma API, SYNTAX check]" +./test_syntax | grep RESULT +echo "[Oniguruma API, Options check]" +./test_options | grep RESULT +echo "[Oniguruma API, EUC-JP check]" +./testc | grep RESULT +echo "[Oniguruma API, UTF-16 check]" +./testcu | grep RESULT +echo "" +echo "[Oniguruma API, regset check]" +./test_regset +echo "[Oniguruma API, backward search check]" +./test_back | grep RESULT diff --git a/vendor/oniguruma/oniguruma/test/test_back.c b/vendor/oniguruma/oniguruma/test/test_back.c new file mode 100644 index 0000000..52f2e58 --- /dev/null +++ b/vendor/oniguruma/oniguruma/test/test_back.c @@ -0,0 +1,1450 @@ +/* + * test_back.c + * Copyright (c) 2020-2024 K.Kosako + */ +#ifdef ONIG_ESCAPE_UCHAR_COLLISION +#undef ONIG_ESCAPE_UCHAR_COLLISION +#endif +#include + +#include "oniguruma.h" + +#include + +#define SLEN(s) strlen(s) + +static int nsucc = 0; +static int nfail = 0; +static int nerror = 0; + +#ifdef __TRUSTINSOFT_ANALYZER__ +static int nall = 0; +#endif + +static FILE* err_file; + +static OnigRegion* region; + +static void xx(char* pattern, char* str, int from, int to, int mem, int not, + int error_no, int line_no) +{ +#ifdef __TRUSTINSOFT_ANALYZER__ + if (nall++ % TIS_TEST_CHOOSE_MAX != TIS_TEST_CHOOSE_CURRENT) return; +#endif + + int r; + regex_t* reg; + OnigErrorInfo einfo; + + r = onig_new(®, (UChar* )pattern, (UChar* )(pattern + SLEN(pattern)), + ONIG_OPTION_DEFAULT, ONIG_ENCODING_UTF8, ONIG_SYNTAX_DEFAULT, &einfo); + if (r) { + char s[ONIG_MAX_ERROR_MESSAGE_LEN]; + + if (error_no == 0) { + onig_error_code_to_str((UChar* )s, r, &einfo); + fprintf(err_file, "ERROR: %s /%s/ #%d\n", s, pattern, line_no); + nerror++; + } + else { + if (r == error_no) { + fprintf(stdout, "OK(ERROR): /%s/ %d #%d\n", pattern, r, line_no); + nsucc++; + } + else { + fprintf(stdout, "FAIL(ERROR): /%s/ '%s', %d, %d #%d\n", pattern, str, + error_no, r, line_no); + nfail++; + } + } + + return ; + } + + r = onig_search(reg, (UChar* )str, (UChar* )(str + SLEN(str)), + (UChar* )(str + SLEN(str)), (UChar* )str, + region, ONIG_OPTION_NONE); + if (r < ONIG_MISMATCH || error_no < ONIG_MISMATCH) { + char s[ONIG_MAX_ERROR_MESSAGE_LEN]; + + if (error_no == 0) { + onig_error_code_to_str((UChar* )s, r); + fprintf(err_file, "ERROR: %s /%s/ #%d\n", s, pattern, line_no); + nerror++; + } + else { + if (r == error_no) { + fprintf(stdout, "OK(ERROR): /%s/ '%s', %d #%d\n", pattern, str, r, line_no); + nsucc++; + } + else { + fprintf(stdout, "FAIL ERROR NO: /%s/ '%s', %d, %d #%d\n", pattern, + str, error_no, r, line_no); + nfail++; + } + } + + return ; + } + + if (r == ONIG_MISMATCH) { + if (not) { + fprintf(stdout, "OK(N): /%s/ '%s' #%d\n", pattern, str, line_no); + nsucc++; + } + else { + fprintf(stdout, "FAIL: /%s/ '%s' #%d\n", pattern, str, line_no); + nfail++; + } + } + else { + if (not) { + fprintf(stdout, "FAIL(N): /%s/ '%s' #%d\n", pattern, str, line_no); + nfail++; + } + else { + if (region->beg[mem] == from && region->end[mem] == to) { + fprintf(stdout, "OK: /%s/ '%s' #%d\n", pattern, str, line_no); + nsucc++; + } + else { + fprintf(stdout, "FAIL: /%s/ '%s' %d-%d : %d-%d #%d\n", pattern, str, + from, to, region->beg[mem], region->end[mem], line_no); + nfail++; + } + } + } + onig_free(reg); +} + +static void xx2(char* pattern, char* str, int from, int to, int line_no) +{ + xx(pattern, str, from, to, 0, 0, 0, line_no); +} + +static void xx3(char* pattern, char* str, int from, int to, int mem, int line_no) +{ + xx(pattern, str, from, to, mem, 0, 0, line_no); +} + +static void xn(char* pattern, char* str, int line_no) +{ + xx(pattern, str, 0, 0, 0, 1, 0, line_no); +} + +static void xe(char* pattern, char* str, int error_no, int line_no) +{ + xx(pattern, str, 0, 0, 0, 0, error_no, line_no); +} + +#define x2(p,s,f,t) xx2(p,s,f,t, __LINE__) +#define x3(p,s,f,t,m) xx3(p,s,f,t,m, __LINE__) +#define n(p,s) xn(p,s, __LINE__) +#define e(p,s,en) xe(p,s,en, __LINE__) + +extern int main(int argc, char* argv[]) +{ + OnigEncoding use_encs[1]; + + use_encs[0] = ONIG_ENCODING_UTF8; + onig_initialize(use_encs, sizeof(use_encs)/sizeof(use_encs[0])); + + err_file = stdout; + + region = onig_region_new(); + + x2("", "", 0, 0); + x2("^", "", 0, 0); + x2("^a", "\na", 1, 2); + x2("$", "", 0, 0); + x2("$\\O", "bb\n", 2, 3); + x2("\\G", "", 0, 0); + x2("\\A", "", 0, 0); + x2("\\Z", "", 0, 0); + x2("\\z", "", 0, 0); + x2("^$", "", 0, 0); + x2("\\ca", "\001", 0, 1); + x2("\\C-b", "\002", 0, 1); + x2("\\c\\\\", "\034", 0, 1); + x2("q[\\c\\\\]", "q\034", 0, 2); + x2("", "a", 1, 1); + x2("a", "a", 0, 1); + x2("\\x61", "a", 0, 1); + x2("aa", "aa", 0, 2); + x2("aaa", "aaa", 0, 3); + x2("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 0, 35); + x2("ab", "ab", 0, 2); + x2("b", "ab", 1, 2); + x2("bc", "abc", 1, 3); + x2("(?i:#RET#)", "#INS##RET#", 5, 10); + x2("\\17", "\017", 0, 1); + x2("\\x1f", "\x1f", 0, 1); + x2("a(?#....\\\\JJJJ)b", "ab", 0, 2); + x2("(?x) G (o O(?-x)oO) g L", "GoOoOgLe", 0, 7); + x2(".", "a", 0, 1); + n(".", ""); + x2("..", "ab", 0, 2); + x2("\\w", "e", 0, 1); + n("\\W", "e"); + x2("\\s", " ", 0, 1); + x2("\\S", "b", 0, 1); + x2("\\d", "4", 0, 1); + n("\\D", "4"); + x2("\\b", "z ", 1, 1); + x2("\\b", " z", 2, 2); + x2("\\b", " z ", 3, 3); + x2("\\B", "zz ", 3, 3); + x2("\\B", "z ", 2, 2); + x2("\\B", " z", 0, 0); + x2("[ab]", "b", 0, 1); + n("[ab]", "c"); + x2("[a-z]", "t", 0, 1); + n("[^a]", "a"); + x2("[^a]", "\n", 0, 1); + x2("[]]", "]", 0, 1); + n("[^]]", "]"); + x2("[\\^]+", "0^^1", 2, 3); + x2("[b-]", "b", 0, 1); + x2("[b-]", "-", 0, 1); + x2("[\\w]", "z", 0, 1); + n("[\\w]", " "); + x2("[\\W]", "b$", 1, 2); + x2("[\\d]", "5", 0, 1); + n("[\\d]", "e"); + x2("[\\D]", "t", 0, 1); + n("[\\D]", "3"); + x2("[\\s]", " ", 0, 1); + n("[\\s]", "a"); + x2("[\\S]", "b", 0, 1); + n("[\\S]", " "); + x2("[\\w\\d]", "2", 0, 1); + n("[\\w\\d]", " "); + x2("[[:upper:]]", "B", 0, 1); + x2("[*[:xdigit:]+]", "+", 0, 1); + x2("[*[:xdigit:]+]", "GHIKK-9+*", 8, 9); + x2("[*[:xdigit:]+]", "-@^+", 3, 4); + n("[[:upper]]", "A"); + x2("[[:upper]]", ":", 0, 1); + x2("[\\044-\\047]", "\046", 0, 1); + x2("[\\x5a-\\x5c]", "\x5b", 0, 1); + x2("[\\x6A-\\x6D]", "\x6c", 0, 1); + n("[\\x6A-\\x6D]", "\x6E"); + n("^[0-9A-F]+ 0+ UNDEF ", "75F 00000000 SECT14A notype () External | _rb_apply"); + x2("[\\[]", "[", 0, 1); + x2("[\\]]", "]", 0, 1); + x2("[&]", "&", 0, 1); + x2("[[ab]]", "b", 0, 1); + x2("[[ab]c]", "c", 0, 1); + n("[[^a]]", "a"); + n("[^[a]]", "a"); + x2("[[ab]&&bc]", "b", 0, 1); + n("[[ab]&&bc]", "a"); + n("[[ab]&&bc]", "c"); + x2("[a-z&&b-y&&c-x]", "w", 0, 1); + n("[^a-z&&b-y&&c-x]", "w"); + x2("[[^a&&a]&&a-z]", "b", 0, 1); + n("[[^a&&a]&&a-z]", "a"); + x2("[[^a-z&&bcdef]&&[^c-g]]", "h", 0, 1); + n("[[^a-z&&bcdef]&&[^c-g]]", "c"); + x2("[^[^abc]&&[^cde]]", "c", 0, 1); + x2("[^[^abc]&&[^cde]]", "e", 0, 1); + n("[^[^abc]&&[^cde]]", "f"); + x2("[a-&&-a]", "-", 0, 1); + n("[a\\-&&\\-a]", "&"); + n("\\wabc", " abc"); + x2("a\\Wbc", "a bc", 0, 4); + x2("a.b.c", "aabbc", 0, 5); + x2(".\\wb\\W..c", "abb bcc", 0, 7); + x2("\\s\\wzzz", " zzzz", 0, 5); + x2("aa.b", "aabb", 0, 4); + n(".a", "ab"); + x2(".a", "aa", 0, 2); + x2("^a", "a", 0, 1); + x2("^a$", "a", 0, 1); + x2("^\\w$", "a", 0, 1); + n("^\\w$", " "); + x2("^\\wab$", "zab", 0, 3); + x2("^\\wabcdef$", "zabcdef", 0, 7); + x2("^\\w...def$", "zabcdef", 0, 7); + x2("\\w\\w\\s\\Waaa\\d", "aa aaa4", 0, 8); + x2("\\A\\Z", "", 0, 0); + x2("\\Axyz", "xyz", 0, 3); + x2("xyz\\Z", "xyz", 0, 3); + x2("xyz\\z", "xyz", 0, 3); + x2("a\\Z", "a", 0, 1); + n("\\Gaz", "az"); + n("\\Gz", "bza"); + x2("az\\G", "az", 0, 2); + n("az\\A", "az"); + n("a\\Az", "az"); + x2("\\^\\$", "^$", 0, 2); + x2("^x?y", "xy", 0, 2); + x2("^(x?y)", "xy", 0, 2); + x2("\\w", "_", 0, 1); + n("\\W", "_"); + x2("(?=z)z", "z", 0, 1); + n("(?=z).", "a"); + x2("(?!z)a", "a", 0, 1); + n("(?!z)a", "z"); + x2("(?i:a)", "a", 0, 1); + x2("(?i:a)", "A", 0, 1); + x2("(?i:A)", "a", 0, 1); + x2("(?i:i)", "I", 0, 1); + x2("(?i:I)", "i", 0, 1); + x2("(?i:[A-Z])", "i", 0, 1); + x2("(?i:[a-z])", "I", 0, 1); + n("(?i:A)", "b"); + x2("(?i:ss)", "ss", 0, 2); + x2("(?i:ss)", "Ss", 0, 2); + x2("(?i:ss)", "SS", 0, 2); + /* 0xc5,0xbf == 017F: # LATIN SMALL LETTER LONG S */ + x2("(?i:ss)", "\xc5\xbfS", 0, 3); + x2("(?i:ss)", "s\xc5\xbf", 0, 3); + /* 0xc3,0x9f == 00DF: # LATIN SMALL LETTER SHARP S */ + x2("(?i:ss)", "\xc3\x9f", 0, 2); + /* 0xe1,0xba,0x9e == 1E9E # LATIN CAPITAL LETTER SHARP S */ + x2("(?i:ss)", "\xe1\xba\x9e", 0, 3); + x2("(?i:xssy)", "xssy", 0, 4); + x2("(?i:xssy)", "xSsy", 0, 4); + x2("(?i:xssy)", "xSSy", 0, 4); + x2("(?i:xssy)", "x\xc5\xbfSy", 0, 5); + x2("(?i:xssy)", "xs\xc5\xbfy", 0, 5); + x2("(?i:xssy)", "x\xc3\x9fy", 0, 4); + x2("(?i:xssy)", "x\xe1\xba\x9ey", 0, 5); + x2("(?i:x\xc3\x9fy)", "xssy", 0, 4); + x2("(?i:x\xc3\x9fy)", "xSSy", 0, 4); + x2("(?i:\xc3\x9f)", "ss", 0, 2); + x2("(?i:\xc3\x9f)", "SS", 0, 2); + x2("(?i:[\xc3\x9f])", "ss", 0, 2); + x2("(?i:[\xc3\x9f])", "SS", 0, 2); + x2("(?i)(?a|abd)c", "abdc"); + x2("(?>abd|a)c", "abdc", 0, 4); + x2("a?|b", "a", 1, 1); + x2("a?|b", "b", 1, 1); + x2("a?|b", "", 0, 0); + x2("a*|b", "aa", 2, 2); + x2("a*|b*", "ba", 2, 2); + x2("a*|b*", "ab", 2, 2); + x2("a+|b*", "", 0, 0); + x2("a+|b*", "bbb", 3, 3); + x2("a+|b*", "abbb", 4, 4); + n("a+|b+", ""); + x2("(a|b)?", "b", 1, 1); + x2("(a|b)*", "ba", 2, 2); + x2("(a|b)+", "bab", 2, 3); + x2("(ab|ca)+", "caabbc", 2, 4); + x2("(ab|ca)+", "aabca", 3, 5); + x2("(ab|ca)+", "abzca", 3, 5); + x2("(a|bab)+", "ababa", 4, 5); + x2("(a|bab)+", "ba", 1, 2); + x2("(a|bab)+", "baaaba", 5, 6); + x2("(?:a|b)(?:a|b)", "ab", 0, 2); + x2("(?:a*|b*)(?:a*|b*)", "aaabbb", 6, 6); + x2("(?:a*|b*)(?:a+|b+)", "aaabbb", 5, 6); + x2("(?:a+|b+){2}", "aaabbb", 4, 6); + x2("h{0,}", "hhhh", 4, 4); + x2("(?:a+|b+){1,2}", "aaabbb", 5, 6); + n("ax{2}*a", "0axxxa1"); + n("a.{0,2}a", "0aXXXa0"); + n("a.{0,2}?a", "0aXXXa0"); + n("a.{0,2}?a", "0aXXXXa0"); + x2("^a{2,}?a$", "aaa", 0, 3); + x2("^[a-z]{2,}?$", "aaa", 0, 3); + x2("(?:a+|\\Ab*)cc", "cc", 0, 2); + n("(?:a+|\\Ab*)cc", "abcc"); + x2("(?:^a+|b+)*c", "aabbbabc", 7, 8); + x2("(?:^a+|b+)*c", "aabbbbc", 6, 7); + x2("a|(?i)c", "C", 0, 1); + x2("(?i)c|a", "C", 0, 1); + x2("(?i)c|a", "A", 0, 1); + x2("a(?i)b|c", "aB", 0, 2); + x2("a(?i)b|c", "aC", 0, 2); + n("a(?i)b|c", "AC"); + n("a(?:(?i)b)|c", "aC"); + x2("(?i:c)|a", "C", 0, 1); + n("(?i:c)|a", "A"); + x2("[abc]?", "abc", 3, 3); + x2("[abc]*", "abc", 3, 3); + x2("[^abc]*", "abc", 3, 3); + n("[^abc]+", "abc"); + x2("a?\?", "aaa", 3, 3); + x2("ba?\?b", "bab", 0, 3); + x2("a*?", "aaa", 3, 3); + x2("ba*?", "baa", 0, 1); + x2("ba*?b", "baab", 0, 4); + x2("a+?", "aaa", 2, 3); + x2("ba+?", "baa", 0, 2); + x2("ba+?b", "baab", 0, 4); + x2("(?:a?)?\?", "a", 1, 1); + x2("(?:a?\?)?", "a", 1, 1); + x2("(?:a?)+?", "aaa", 3, 3); + x2("(?:a+)?\?", "aaa", 3, 3); + x2("(?:a+)?\?b", "aaab", 3, 4); + x2("(?:ab)?{2}", "", 0, 0); + x2("(?:ab)?{2}", "ababa", 5, 5); + x2("(?:ab)*{0}", "ababa", 5, 5); + x2("(?:ab){3,}", "abababab", 2, 8); + n("(?:ab){3,}", "abab"); + x2("(?:ab){2,4}", "ababab", 2, 6); + x2("(?:ab){2,4}", "ababababab", 6, 10); + x2("(?:ab){2,4}?", "ababababab", 6, 10); + x2("(?:ab){,}", "ab{,}", 0, 5); + x2("(?:abc)+?{2}", "abcabcabc", 3, 9); + x2("(?:X*)(?i:xa)", "XXXa", 2, 4); + x2("(d+)([^abc]z)", "dddz", 1, 4); + x2("([^abc]*)([^abc]z)", "dddz", 2, 4); + x2("(\\w+)(\\wz)", "dddz", 1, 4); + x3("(a)", "a", 0, 1, 1); + x3("(ab)", "ab", 0, 2, 1); + x2("((ab))", "ab", 0, 2); + x3("((ab))", "ab", 0, 2, 1); + x3("((ab))", "ab", 0, 2, 2); + x3("((((((((((((((((((((ab))))))))))))))))))))", "ab", 0, 2, 20); + x3("(ab)(cd)", "abcd", 0, 2, 1); + x3("(ab)(cd)", "abcd", 2, 4, 2); + x3("()(a)bc(def)ghijk", "abcdefghijk", 3, 6, 3); + x3("(()(a)bc(def)ghijk)", "abcdefghijk", 3, 6, 4); + x2("(^a)", "a", 0, 1); + x3("(a)|(a)", "ba", 1, 2, 1); + x3("(^a)|(a)", "ba", 1, 2, 2); + x3("(a?)", "aaa", 3, 3, 1); + x3("(a*)", "aaa", 3, 3, 1); + x3("(a*)", "", 0, 0, 1); + x3("(a+)", "aaaaaaa", 6, 7, 1); + x3("(a+|b*)", "bbbaa", 5, 5, 1); + x3("(a+|b?)", "bbbaa", 5, 5, 1); + x3("(abc)?", "abc", -1, -1, 1); + x3("(abc)*", "abc", -1, -1, 1); + x3("(abc)+", "abc", 0, 3, 1); + x3("(xyz|abc)+", "abc", 0, 3, 1); + x3("([xyz][abc]|abc)+", "abc", 0, 3, 1); + x3("((?i:abc))", "AbC", 0, 3, 1); + x2("(abc)(?i:\\1)", "abcABC", 0, 6); + x3("((?m:a.c))", "a\nc", 0, 3, 1); + x3("((?=az)a)", "azb", 0, 1, 1); + x3("abc|(.abd)", "zabd", 0, 4, 1); + x2("(?:abc)|(ABC)", "abc", 0, 3); + x3("(?i:(abc))|(zzz)", "ABC", 0, 3, 1); + x3("a*(.)", "aaaaz", 4, 5, 1); + x3("a*?(.)", "aaaaz", 4, 5, 1); + x3("a*?(c)", "aaaac", 4, 5, 1); + x3("[bcd]a*(.)", "caaaaz", 5, 6, 1); + x3("(\\Abb)cc", "bbcc", 0, 2, 1); + n("(\\Abb)cc", "zbbcc"); + x3("(^bb)cc", "bbcc", 0, 2, 1); + n("(^bb)cc", "zbbcc"); + x3("cc(bb$)", "ccbb", 2, 4, 1); + n("cc(bb$)", "ccbbb"); + n("(\\1)", ""); + n("\\1(a)", "aa"); + n("(a(b)\\1)\\2+", "ababb"); + n("(?:(?:\\1|z)(a))+$", "zaa"); + x2("(?:(?:\\1|z)(a))+$", "zaaa", 0, 4); + x2("(a)(?=\\1)", "aa", 0, 1); + n("(a)$|\\1", "az"); + x2("(a)\\1", "aa", 0, 2); + n("(a)\\1", "ab"); + x2("(a?)\\1", "aa", 2, 2); + x2("(a?\?)\\1", "aa", 2, 2); + x2("(a*)\\1", "aaaaa", 5, 5); + x3("(a*)\\1", "aaaaa", 5, 5, 1); + x2("a(b*)\\1", "abbbb", 0, 5); + x2("a(b*)\\1", "ab", 0, 1); + x2("(a*)(b*)\\1\\2", "aaabbaaabb", 10, 10); + x2("(a*)(b*)\\2", "aaabbbb", 7, 7); + x2("(((((((a*)b))))))c\\7", "aaabcaaa", 3, 5); + x3("(((((((a*)b))))))c\\7", "aaabcaaa", 3, 3, 7); + x2("(a)(b)(c)\\2\\1\\3", "abcbac", 0, 6); + x2("([a-d])\\1", "cc", 0, 2); + x2("(\\w\\d\\s)\\1", "f5 f5 ", 0, 6); + n("(\\w\\d\\s)\\1", "f5 f5"); + x2("(who|[a-c]{3})\\1", "whowho", 0, 6); + x2("...(who|[a-c]{3})\\1", "abcwhowho", 0, 9); + x2("(who|[a-c]{3})\\1", "cbccbc", 0, 6); + x2("(^a)\\1", "aa", 0, 2); + n("(^a)\\1", "baa"); + n("(a$)\\1", "aa"); + n("(ab\\Z)\\1", "ab"); + x2("(a*\\Z)\\1", "a", 1, 1); + x2(".(a*\\Z)\\1", "ba", 1, 2); + x3("(.(abc)\\2)", "zabcabc", 0, 7, 1); + x3("(.(..\\d.)\\2)", "z12341234", 0, 9, 1); + x2("((?i:az))\\1", "AzAz", 0, 4); + n("((?i:az))\\1", "Azaz"); + x2("(?<=a)b", "ab", 1, 2); + n("(?<=a)b", "bb"); + x2("(?<=a|b)b", "bb", 1, 2); + x2("(?<=a|bc)b", "bcb", 2, 3); + x2("(?<=a|bc)b", "ab", 1, 2); + x2("(?<=a|bc||defghij|klmnopq|r)z", "rz", 1, 2); + x3("(?<=(abc))d", "abcd", 0, 3, 1); + x2("(?<=(?i:abc))d", "ABCd", 3, 4); + x2("(a)\\g<1>", "aa", 0, 2); + x2("(?a)", "a", 0, 1); + x2("(?ab)\\g", "abab", 0, 4); + x2("(?.zv.)\\k", "azvbazvb", 0, 8); + x2("(?<=\\g)|-\\zEND (?XyZ)", "XyZ", 3, 3); + x2("(?|a\\g)+", "", 0, 0); + x2("(?|\\(\\g\\))+$", "()(())", 6, 6); + x3("\\g(?.){0}", "X", 0, 1, 1); + x2("\\g(abc|df(?.YZ){2,8}){0}", "XYZ", 0, 3); + x2("\\A(?(a\\g)|)\\z", "aaaa", 0, 4); + x2("(?|\\g\\g)\\z|\\zEND (?a|(b)\\g)", "bbbbabba", 8, 8); + x2("(?\\w+\\sx)a+\\k", " fg xaaaaaaaafg x", 2, 18); + x3("(z)()()(?<_9>a)\\g<_9>", "zaa", 2, 3, 1); + x2("(.)(((?<_>a)))\\k<_>", "zaa", 0, 3); + x2("((?\\d)|(?\\w))(\\k|\\k)", "ff", 0, 2); + x2("(?:(?)|(?efg))\\k", "", 0, 0); + x2("(?:(?abc)|(?efg))\\k", "abcefgefg", 3, 9); + n("(?:(?abc)|(?efg))\\k", "abcefg"); + x2("(?:(?.)|(?..)|(?...)|(?....)|(?.....)|(?......)|(?.......)|(?........)|(?.........)|(?..........)|(?...........)|(?............)|(?.............)|(?..............))\\k$", "a-pyumpyum", 2, 10); + x3("(?:(?.)|(?..)|(?...)|(?....)|(?.....)|(?......)|(?.......)|(?........)|(?.........)|(?..........)|(?...........)|(?............)|(?.............)|(?..............))\\k$", "xxxxabcdefghijklmnabcdefghijklmn", 4, 18, 14); + x3("(?)(?)(?)(?)(?)(?)(?)(?)(?)(?)(?)(?)(?)(?)(?)(?aaa)(?)$", "aaa", 0, 3, 16); + x2("(?a|\\(\\g\\))", "a", 0, 1); + x2("(?a|\\(\\g\\))", "((((((a))))))", 6, 7); + x3("(?a|\\(\\g\\))", "((((((((a))))))))", 8, 9, 1); + x2("\\g|\\zEND(?.*abc$)", "abcxxxabc", 6, 9); + x2("\\g<1>|\\zEND(.a.)", "bac", 0, 3); + x3("\\g<_A>\\g<_A>|\\zEND(.a.)(?<_A>.b.)", "xbxyby", 3, 6, 1); + x2("\\A(?:\\g|\\g|\\zEND (?a|c\\gc)(?b|d\\gd))$", "cdcbcdc", 0, 7); + x2("\\A(?|a\\g)\\z|\\zEND (?\\g)", "aaaa", 0, 4); + x2("(?(a|b\\gc){3,5})", "baaaaca", 2, 5); + x2("(?(a|b\\gc){3,5})", "baaaacaaaaa", 8, 11); + x2("(?\\(([^\\(\\)]++|\\g)*+\\))", "((a))", 1, 4); + x2("()*\\1", "", 0, 0); + x2("(?:()|())*\\1\\2", "", 0, 0); + x2("(?:a*|b*)*c", "abadc", 4, 5); + x3("(?:\\1a|())*", "a", 1, 1, 1); + x2("x((.)*)*x", "0x1x2x3", 3, 6); + x2("x((.)*)*x(?i:\\1)\\Z", "0x1x2x1X2", 1, 9); + x2("(?:()|()|()|()|()|())*\\2\\5", "", 0, 0); + x2("(?:()|()|()|(x)|()|())*\\2b\\5", "b", 0, 1); + x2("[0-9-a]", "-", 0, 1); // PR#44 + n("[0-9-a]", ":"); // PR#44 + x3("(\\(((?:[^(]|\\g<1>)*)\\))", "(abc)(abc)", 6, 9, 2); // PR#43 + x2("\\o{101}", "A", 0, 1); + x2("\\A(a|b\\g<1>c)\\k<1+3>\\z", "bbacca", 0, 6); + n("\\A(a|b\\g<1>c)\\k<1+3>\\z", "bbaccb"); + x2("(?i)\\A(a|b\\g<1>c)\\k<1+2>\\z", "bBACcbac", 0, 8); + x2("(?i)(?aa)|(?bb)\\k", "BBbb", 0, 4); + x2("(?:\\k'+1'B|(A)C)*", "ACAB", 4, 4); // relative backref by positive number + x2("\\g<+2>(abc)(ABC){0}", "ABCabc", 0, 6); // relative call by positive number + x2("A\\g'0'|B()", "AAAAB", 4, 5); + x3("(A\\g'0')|B", "AAAAB", -1, -1, 1); + x2("(a*)(?(1))aa", "aaaaa", 3, 5); + x2("(a*)(?(-1))aa", "aaaaa", 3, 5); + x2("(?aaa)(?('name'))aa", "aaaaa", 0, 5); + x2("(a)(?(1)aa|bb)a", "aaaaa", 1, 5); + x2("(?:aa|())(?(<1>)aa|bb)a", "aabba", 0, 5); + x2("(?:aa|())(?('1')aa|bb|cc)a", "aacca", 0, 5); + x3("(a*)(?(1)aa|a)b", "aaab", 1, 1, 1); + n("(a)(?(1)a|b)c", "abc"); + x2("(a)(?(1)|)c", "ac", 0, 2); + n("(?()aaa|bbb)", "bbb"); + x2("(a)(?(1+0)b|c)d", "abd", 0, 3); + x2("(?:(?'name'a)|(?'name'b))(?('name')c|d)e", "ace", 0, 3); + x2("(?:(?'name'a)|(?'name'b))(?('name')c|d)e", "bce", 0, 3); + x2("\\R", "\r\n", 1, 2); + x2("\\R", "\r", 0, 1); + x2("\\R", "\n", 0, 1); + x2("\\R", "\x0b", 0, 1); + n("\\R\\n", "\r\n"); + x2("\\R", "\xc2\x85", 0, 2); + x2("\\N", "a", 0, 1); + n("\\N", "\n"); + n("(?m:\\N)", "\n"); + n("(?-m:\\N)", "\n"); + x2("\\O", "a", 0, 1); + x2("\\O", "\n", 0, 1); + x2("(?m:\\O)", "\n", 0, 1); + x2("(?-m:\\O)", "\n", 0, 1); + x2("\\K", "a", 1, 1); + x2("a\\K", "a", 1, 1); + x2("a\\Kb", "ab", 1, 2); + x2("(a\\Kb|ac\\Kd)", "acd", 2, 3); + x2("(a\\Kb|\\Kac\\K)*", "acababacab", 10, 10); + x2("(?:()|())*\\1", "abc", 3, 3); + x2("(?:()|())*\\2", "abc", 3, 3); + x2("(?:()|()|())*\\3\\1", "abc", 3, 3); + x2("(|(?:a(?:\\g'1')*))b|", "abc", 3, 3); + x2("^(\"|)(.*)\\1$", "XX", 0, 2); + x2("(abc|def|ghi|jkl|mno|pqr|stu){0,10}?\\z", "admno", 5, 5); + x2("(abc|(def|ghi|jkl|mno|pqr){0,7}?){5}\\z", "adpqrpqrpqr", 11, 11); // cover OP_REPEAT_INC_NG_SG + x2("(?!abc).*\\z", "abcde", 5, 5); // cover OP_PREC_READ_NOT_END + x2("(.{2,})?", "abcde", 5, 5); // up coverage + x2("((a|b|c|d|e|f|g|h|i|j|k|l|m|n)+)?", "abcde", 5, 5); // up coverage + x2("((a|b|c|d|e|f|g|h|i|j|k|l|m|n){3,})?", "abcde", 5, 5); // up coverage + x2("((?:a(?:b|c|d|e|f|g|h|i|j|k|l|m|n))+)?", "abacadae", 8, 8); // up coverage + x2("((?:a(?:b|c|d|e|f|g|h|i|j|k|l|m|n))+?)?z", "abacadaez", 8, 9); // up coverage + x2("\\A((a|b)\?\?)?z", "bz", 0, 2); // up coverage + x2("((?abc){0}a\\gd)+", "aabcd", 0, 5); // up coverage + x2("((?(abc)true|false))+", "false", 0, 5); // up coverage + x2("((?i:abc)d)+", "abcdABCd", 4, 8); // up coverage + x2("((?ab)(?()a|b)", "aba", 0, 3); // up coverage + x2("(?<=a.b)c", "azbc", 3, 4); // up coverage + n("(?<=(?:abcde){30})z", "abc"); // up coverage + x2("(?<=(?(a)a|bb))z", "aaz", 2, 3); // up coverage + x2("[a]*\\W", "aa@", 2, 3); // up coverage + x2("[a]*[b]", "aab", 2, 3); // up coverage + n("a*\\W", "aaa"); // up coverage + n("(?W)a*\\W", "aaa"); // up coverage + x2("(?<=ab(?<=ab))", "ab", 2, 2); // up coverage + x2("(?a)(?b)(\\k)+", "abbaab", 0, 6); // up coverage + x2("()(\\1)(\\2)", "abc", 3, 3); // up coverage + x2("((?(a)b|c))(\\1)", "abab", 0, 4); // up coverage + x2("(?$|b\\g)", "bbb", 3, 3); // up coverage + x2("(?(?(a)a|b)|c\\g)", "cccb", 3, 4); // up coverage + x2("(a)(?(1)a*|b*)+", "aaaa", 3, 4); // up coverage + x2("[[^abc]&&cde]*", "de", 2, 2); // up coverage + n("(a){10}{10}", "aa"); // up coverage + x2("(?:a?)+", "aa", 2, 2); // up coverage + x2("(?:a?)*?", "a", 1, 1); // up coverage + x2("(?:a*)*?", "a", 1, 1); // up coverage + x2("(?:a+?)*", "a", 1, 1); // up coverage + x2("\\h", "5", 0, 1); // up coverage + x2("\\H", "z", 0, 1); // up coverage + x2("[\\h]", "5", 0, 1); // up coverage + x2("[\\H]", "z", 0, 1); // up coverage + x2("[\\o{101}]", "A", 0, 1); // up coverage + x2("[\\u0041]", "A", 0, 1); // up coverage + + x2("(?~)", "", 0, 0); + x2("(?~)", "A", 1, 1); + x2("aaaaa(?~)", "aaaaaaaaaa", 5, 10); + x2("(?~(?:|aaa))", "aaa", 3, 3); + x2("(?~aaa|)", "aaa", 3, 3); + x2("a(?~(?~)).", "abcdefghijklmnopqrstuvwxyz", 0, 26); // !!! + x2("/\\*(?~\\*/)\\*/", "/* */ */", 0, 5); + x2("(?~\\w+)zzzzz", "zzzzz", 0, 5); + x2("(?~\\w*)zzzzz", "zzzzz", 0, 5); + x2("(?~A.C|B)", "ABC", 3, 3); + x2("(?~XYZ|ABC)a", "ABCa", 3, 4); + x2("(?~XYZ|ABC)a", "aABCa", 4, 5); + x2("<[^>]*>(?~[<>])]*>", "vvv ", 13, 22); + x2("(?~ab)", "ccc\ndab", 7, 7); + x2("(?m:(?~ab))", "ccc\ndab", 7, 7); + x2("(?-m:(?~ab))", "ccc\ndab", 7, 7); + x2("(?~abc)xyz", "xyz012345678901234567890123456789abc", 0, 3); + + // absent with expr + x2("(?~|78|\\d*)", "123456789", 9, 9); + x2("(?~|def|(?:abc|de|f){0,100})", "abcdedeabcfdefabc", 17, 17); + x2("(?~|ab|.*)", "ccc\nddd", 7, 7); + x2("(?~|ab|\\O*)", "ccc\ndab", 7, 7); + x2("(?~|ab|\\O{2,10})", "ccc\ndab", 3, 5); + x2("(?~|ab|\\O{1,10})", "ab", 1, 2); + n("(?~|ab|\\O{2,10})", "ab"); + x2("(?~|abc|\\O{1,10})", "abc", 2, 3); + x2("(?~|ab|\\O{5,10})|abc", "abc", 0, 3); + x2("(?~|ab|\\O{1,10})", "cccccccccccab", 12, 13); + x2("(?~|aaa|)", "aaa", 3, 3); + x2("(?~||a*)", "aaaaaa", 6, 6); + x2("(?~||a*?)", "aaaaaa", 6, 6); + x2("(a)(?~|b|\\1)", "aaaaaa", 4, 6); + x2("(a)(?~|bb|(?:a\\1)*)", "aaaaaa", 5, 6); + x2("(b|c)(?~|abac|(?:a\\1)*)", "abababacabab", 11, 12); + n("(?~|c|a*+)a", "aaaaa"); + x2("(?~|aaaaa|a*+)", "aaaaa", 5, 5); + x2("(?~|aaaaaa|a*+)b", "aaaaaab", 6, 7); + x2("(?~|abcd|(?>))", "zzzabcd", 7, 7); + x2("(?~|abc|a*?)", "aaaabc", 6, 6); + + // absent range cutter + x2("(?~|abc)a*", "aaaaaabc", 8, 8); + x2("(?~|abc)a*z|aaaaaabc", "aaaaaabc", 0, 8); + x2("(?~|aaaaaa)a*", "aaaaaa", 6, 6); + x2("(?~|abc)aaaa|aaaabc", "aaaabc", 0, 6); + x2("(?>(?~|abc))aaaa|aaaabc", "aaaabc", 0, 6); + x2("(?~|)a", "a", 0, 1); + n("(?~|a)a", "a"); + x2("(?~|a)(?~|)a", "a", 0, 1); + x2("(?~|a).*(?~|)a", "bbbbbbbbbbbbbbbbbbbba", 20, 21); + x2("(?~|abc).*(xyz|pqr)(?~|)abc", "aaaaxyzaaapqrabc", 10, 16); + x2("(?~|abc).*(xyz|pqr)(?~|)abc", "aaaaxyzaaaabcpqrabc", 13, 19); + n("\\A(?~|abc).*(xyz|pqrabc)(?~|)abc", "aaaaxyzaaaabcpqrabcabc"); + + x2("", "縺", 3, 3); + x2("縺", "縺", 0, 3); + n("縺", "縺"); + x2("縺縺", "縺縺", 0, 6); + x2("縺ゅ>縺", "縺ゅ>縺", 0, 9); + x2("縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺", "縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺", 0, 105); + x2("縺", "縺縺", 3, 6); + x2("縺縺", "縺ゅ>縺", 3, 9); + x2("\\xca\\xb8", "\xca\xb8", 0, 2); + x2(".", "縺", 0, 3); + x2("..", "縺九″", 0, 6); + x2("\\w", "縺", 0, 3); + n("\\W", "縺"); + x2("[\\W]", "縺$", 3, 4); + x2("\\S", "縺", 0, 3); + x2("\\S", "貍「", 0, 3); + x2("\\b", "豌 ", 3, 3); + x2("\\b", " 縺サ", 4, 4); + x2("\\B", "縺帙◎ ", 7, 7); + x2("\\B", "縺 ", 4, 4); + x2("\\B", " 縺", 0, 0); + x2("[縺溘■]", "縺。", 0, 3); + n("[縺ェ縺ォ]", "縺ャ"); + x2("[縺-縺馨", "縺", 0, 3); + n("[^縺曽", "縺"); + x2("[\\w]", "縺ュ", 0, 3); + n("[\\d]", "縺オ"); + x2("[\\D]", "縺ッ", 0, 3); + n("[\\s]", "縺"); + x2("[\\S]", "縺ク", 0, 3); + x2("[\\w\\d]", "繧", 0, 3); + x2("[\\w\\d]", " 繧", 3, 6); + n("\\w鬯シ霆", " 鬯シ霆"); + x2("鬯シ\\W霆", "鬯シ 霆", 0, 7); + x2("縺.縺.縺", "縺ゅ≠縺縺縺", 0, 15); + x2(".\\w縺\\W..縺", "縺医≧縺 縺縺槭◇", 0, 19); + x2("\\s\\w縺薙%縺", " 縺薙%縺薙%", 0, 13); + x2("縺ゅ≠.縺", "縺ゅ≠縺代¢", 0, 12); + n(".縺", "縺縺"); + x2(".縺", "縺翫♀", 0, 6); + x2("^縺", "縺", 0, 3); + x2("^繧$", "繧", 0, 3); + x2("^\\w$", "縺ォ", 0, 3); + x2("^\\w縺九″縺上¢縺$", "z縺九″縺上¢縺", 0, 16); + x2("^\\w...縺縺医♀$", "z縺ゅ>縺縺縺医♀", 0, 19); + x2("\\w\\w\\s\\W縺翫♀縺浬\d", "a縺 縺翫♀縺4", 0, 16); + x2("\\A縺溘■縺、", "縺溘■縺、", 0, 9); + x2("繧繧√b\\Z", "繧繧√b", 0, 9); + x2("縺九″縺十\z", "縺九″縺", 0, 9); + x2("縺九″縺十\Z", "縺九″縺十n", 0, 9); + n("\\G縺ス縺エ", "縺ス縺エ"); + n("\\G縺", "縺縺医♀"); + x2("縺ィ縺ヲ\\G", "縺ィ縺ヲ", 0, 6); + n("縺セ縺ソ\\A", "縺セ縺ソ"); + n("縺セ\\A縺ソ", "縺セ縺ソ"); + x2("(?=縺)縺", "縺", 0, 3); + n("(?=縺).", "縺"); + x2("(?!縺)縺", "縺", 0, 3); + n("(?!縺ィ)縺", "縺ィ"); + x2("(?i:縺)", "縺", 0, 3); + x2("(?i:縺カ縺ケ)", "縺カ縺ケ", 0, 6); + n("(?i:縺)", "縺"); + x2("(?m:繧.)", "繧\n", 0, 4); + x2("(?m:.繧)", "縺セ\n繧", 3, 7); + x2("縺?", "", 0, 0); + x2("螟?", "蛹", 3, 3); + x2("螟?", "螟", 3, 3); + x2("驥*", "", 0, 0); + x2("驥*", "驥", 3, 3); + x2("蟄*", "蟄仙ュ仙ュ", 9, 9); + x2("鬥ャ*", "鮖ソ鬥ャ鬥ャ鬥ャ鬥ャ", 15, 15); + n("螻ア+", ""); + x2("豐ウ+", "豐ウ", 0, 3); + x2("譎+", "譎よ凾譎よ凾", 9, 12); + x2("縺+", "縺医∴縺縺縺", 3, 6); + x2("縺+", "縺翫≧縺縺縺", 12, 15); + x2(".?", "縺", 3, 3); + x2(".*", "縺ア縺エ縺キ縺コ", 12, 12); + x2(".+", "繧", 0, 3); + x2(".+", "縺縺縺医°\n", 9, 12); + x2("縺|縺", "縺", 0, 3); + x2("縺|縺", "縺", 0, 3); + x2("縺ゅ>|縺縺", "縺ゅ>", 0, 6); + x2("縺ゅ>|縺縺", "縺縺", 0, 6); + x2("繧(?:縺九″|縺阪¥)", "繧偵°縺", 0, 9); + x2("繧(?:縺九″|縺阪¥)縺", "繧偵″縺上¢", 0, 12); + x2("縺ゅ>|(?:縺ゅ≧|縺ゅr)", "縺ゅr", 0, 6); + x2("縺|縺л縺", "縺医≧", 3, 6); + x2("縺|縺л縺縺|縺翫°縺鋼縺楯縺代%縺怖縺励☆縺斈縺掟縺溘■|縺、縺ヲ縺ィ縺ェ縺ォ|縺ャ縺ュ", "縺励☆縺", 0, 9); + n("縺|縺л縺縺|縺翫°縺鋼縺楯縺代%縺怖縺励☆縺斈縺掟縺溘■|縺、縺ヲ縺ィ縺ェ縺ォ|縺ャ縺ュ", "縺吶○"); + x2("縺|^繧", "縺カ縺", 3, 6); + x2("縺|^繧", "繧偵≠", 3, 6); + x2("鬯シ|\\G霆", "縺題サ企ャシ", 6, 9); + x2("鬯シ|\\G霆", "霆企ャシ", 3, 6); + x2("鬯シ|\\A霆", "b霆企ャシ", 4, 7); + x2("鬯シ|\\A霆", "霆", 0, 3); + x2("鬯シ|霆浬\Z", "霆企ャシ", 3, 6); + x2("鬯シ|霆浬\Z", "霆", 0, 3); + x2("鬯シ|霆浬\Z", "霆浬n", 0, 3); + x2("鬯シ|霆浬\z", "霆企ャシ", 3, 6); + x2("鬯シ|霆浬\z", "霆", 0, 3); + x2("\\w|\\s", "縺", 0, 3); + x2("\\w|%", "%縺", 1, 4); + x2("\\w|[&$]", "縺&", 3, 4); + x2("[縺-縺曽", "縺", 0, 3); + x2("[縺-縺曽|[^縺-縺転", "縺", 0, 3); + x2("[縺-縺曽|[^縺-縺転", "縺", 0, 3); + x2("[^縺]", "\n", 0, 1); + x2("(?:縺|[縺-縺江)|縺繧", "縺繧", 0, 3); + x2("(?:縺|[縺-縺江)|縺繧", "縺繧", 0, 6); + x2("縺ゅ>縺|(?=縺代¢)..縺サ", "縺代¢縺サ", 0, 9); + x2("縺ゅ>縺|(?!縺代¢)..縺サ", "縺ゅ>縺サ", 0, 9); + x2("(?=繧偵≠)..縺|(?=繧偵r)..縺", "繧偵r縺", 0, 9); + x2("(?<=縺|縺縺)縺", "縺縺縺", 6, 9); + n("(?>縺|縺ゅ>縺)縺", "縺ゅ>縺医≧"); + x2("(?>縺ゅ>縺|縺)縺", "縺ゅ>縺医≧", 0, 12); + x2("縺?|縺", "縺", 3, 3); + x2("縺?|縺", "縺", 3, 3); + x2("縺?|縺", "", 0, 0); + x2("縺*|縺", "縺ゅ≠", 6, 6); + x2("縺*|縺*", "縺縺", 6, 6); + x2("縺*|縺*", "縺ゅ>", 6, 6); + x2("[a縺]*|縺*", "a縺ゅ>縺縺", 13, 13); + x2("縺+|縺*", "", 0, 0); + x2("縺+|縺*", "縺縺縺", 9, 9); + x2("縺+|縺*", "縺ゅ>縺縺", 12, 12); + x2("縺+|縺*", "a縺ゅ>縺縺", 13, 13); + n("縺+|縺+", ""); + x2("(縺|縺)?", "縺", 3, 3); + x2("(縺|縺)*", "縺縺", 6, 6); + x2("(縺|縺)+", "縺縺ゅ>", 6, 9); + x2("(縺ゅ>|縺縺)+", "縺縺ゅ≠縺縺縺", 6, 12); + x2("(縺ゅ>|縺縺)+", "縺縺ゅ≠縺縺縺", 12, 18); + x2("(縺ゅ>|縺縺)+", "縺ゅ≠縺縺縺", 9, 15); + x2("(縺ゅ>|縺縺)+", "縺ゅ>繧偵≧縺", 9, 15); + x2("(縺ゅ>|縺縺)+", "$$zzzz縺ゅ>繧偵≧縺", 15, 21); + x2("(縺|縺縺ゅ>)+", "縺ゅ>縺ゅ>縺", 12, 15); + x2("(縺|縺縺ゅ>)+", "縺縺", 3, 6); + x2("(縺|縺縺ゅ>)+", "縺縺ゅ≠縺ゅ>縺", 15, 18); + x2("(?:縺|縺)(?:縺|縺)", "縺ゅ>", 0, 6); + x2("(?:縺*|縺*)(?:縺*|縺*)", "縺ゅ≠縺ゅ>縺縺", 18, 18); + x2("(?:縺*|縺*)(?:縺+|縺+)", "縺ゅ≠縺ゅ>縺縺", 15, 18); + x2("(?:縺+|縺+){2}", "縺ゅ≠縺ゅ>縺縺", 12, 18); + x2("(?:縺+|縺+){1,2}", "縺ゅ≠縺ゅ>縺縺", 15, 18); + x2("(?:縺+|\\A縺*)縺縺", "縺縺", 0, 6); + n("(?:縺+|\\A縺*)縺縺", "縺ゅ>縺縺"); + x2("(?:^縺+|縺+)*縺", "縺ゅ≠縺縺縺縺ゅ>縺", 21, 24); + x2("(?:^縺+|縺+)*縺", "縺ゅ≠縺縺縺縺縺", 18, 21); + x2("縺{0,}", "縺縺縺縺", 12, 12); + x2("縺|(?i)c", "C", 0, 1); + x2("(?i)c|縺", "C", 0, 1); + x2("(?i:縺)|a", "a", 0, 1); + n("(?i:縺)|a", "A"); + x2("[縺ゅ>縺]?", "縺ゅ>縺", 9, 9); + x2("[縺ゅ>縺]*", "縺ゅ>縺", 9, 9); + x2("[^縺ゅ>縺]*", "縺ゅ>縺", 9, 9); + n("[^縺ゅ>縺]+", "縺ゅ>縺"); + x2("縺?\?", "縺ゅ≠縺", 9, 9); + x2("縺縺?\?縺", "縺縺ゅ>", 0, 9); + x2("縺*?", "縺ゅ≠縺", 9, 9); + x2("縺縺*?", "縺縺ゅ≠", 0, 3); + x2("縺縺*?縺", "縺縺ゅ≠縺", 0, 12); + x2("縺+?", "縺ゅ≠縺", 6, 9); + x2("縺縺+?", "縺縺ゅ≠", 0, 6); + x2("縺縺+?縺", "縺縺ゅ≠縺", 0, 12); + x2("(?:螟ゥ?)?\?", "螟ゥ", 3, 3); + x2("(?:螟ゥ?\?)?", "螟ゥ", 3, 3); + x2("(?:螟「?)+?", "螟「螟「螟「", 9, 9); + x2("(?:鬚ィ+)?\?", "鬚ィ鬚ィ鬚ィ", 9, 9); + x2("(?:髮ェ+)?\?髴", "髮ェ髮ェ髮ェ髴", 9, 12); + x2("(?:縺ゅ>)?{2}", "", 0, 0); + x2("(?:鬯シ霆)?{2}", "鬯シ霆企ャシ霆企ャシ", 15, 15); + x2("(?:鬯シ霆)*{0}", "鬯シ霆企ャシ霆企ャシ", 15, 15); + x2("(?:鬯シ霆){3,}", "鬯シ霆企ャシ霆企ャシ霆企ャシ霆", 6, 24); + n("(?:鬯シ霆){3,}", "鬯シ霆企ャシ霆"); + x2("(?:鬯シ霆){2,4}", "鬯シ霆企ャシ霆企ャシ霆", 6, 18); + x2("(?:鬯シ霆){2,4}", "鬯シ霆企ャシ霆企ャシ霆企ャシ霆企ャシ霆", 18, 30); + x2("(?:鬯シ霆){2,4}?", "鬯シ霆企ャシ霆企ャシ霆企ャシ霆企ャシ霆", 18, 30); + x2("(?:鬯シ霆){,}", "鬯シ霆顎,}", 0, 9); + x2("(?:縺九″縺)+?{2}", "縺九″縺上°縺阪¥縺九″縺", 9, 27); + x3("(轣ォ)", "轣ォ", 0, 3, 1); + x3("(轣ォ豌エ)", "轣ォ豌エ", 0, 6, 1); + x2("((譎る俣))", "譎る俣", 0, 6); + x3("((鬚ィ豌エ))", "鬚ィ豌エ", 0, 6, 1); + x3("((譏ィ譌・))", "譏ィ譌・", 0, 6, 2); + x3("((((((((((((((((((((驥丞ュ))))))))))))))))))))", "驥丞ュ", 0, 6, 20); + x3("(縺ゅ>)(縺縺)", "縺ゅ>縺縺", 0, 6, 1); + x3("(縺ゅ>)(縺縺)", "縺ゅ>縺縺", 6, 12, 2); + x3("()(縺)縺縺(縺医♀縺)縺阪¥縺代%", "縺ゅ>縺縺医♀縺九″縺上¢縺", 9, 18, 3); + x3("(()(縺)縺縺(縺医♀縺)縺阪¥縺代%)", "縺ゅ>縺縺医♀縺九″縺上¢縺", 9, 18, 4); + x3(".*(繝輔か)繝ウ繝サ繝(繝ウ()繧キ繝・繧ソ)繧、繝ウ", "繝輔か繝ウ繝サ繝槭Φ繧キ繝・繧ソ繧、繝ウ", 15, 27, 2); + x2("(^縺)", "縺", 0, 3); + x3("(縺)|(縺)", "縺縺", 3, 6, 1); + x3("(^縺)|(縺)", "縺縺", 3, 6, 2); + x3("(縺?)", "縺ゅ≠縺", 9, 9, 1); + x3("(縺セ*)", "縺セ縺セ縺セ", 9, 9, 1); + x3("(縺ィ*)", "", 0, 0, 1); + x3("(繧+)", "繧九k繧九k繧九k繧", 18, 21, 1); + x3("(縺オ+|縺ク*)", "縺オ縺オ縺オ縺ク縺ク", 15, 15, 1); + x3("(縺+|縺?)", "縺縺縺縺ゅ≠", 15, 15, 1); + x3("(縺ゅ>縺)?", "縺ゅ>縺", -1, -1, 1); + x3("(縺ゅ>縺)*", "縺ゅ>縺", -1, -1, 1); + x3("(縺ゅ>縺)+", "縺ゅ>縺", 0, 9, 1); + x3("(縺輔@縺處縺ゅ>縺)+", "縺ゅ>縺", 0, 9, 1); + x3("([縺ェ縺ォ縺ャ][縺九″縺従|縺九″縺)+", "縺九″縺", 0, 9, 1); + x3("((?i:縺ゅ>縺))", "縺ゅ>縺", 0, 9, 1); + x3("((?m:縺.縺))", "縺\n縺", 0, 7, 1); + x3("((?=縺ゅs)縺)", "縺ゅs縺", 0, 3, 1); + x3("縺ゅ>縺|(.縺ゅ>縺)", "繧薙≠縺縺", 0, 12, 1); + x3("縺*(.)", "縺ゅ≠縺ゅ≠繧", 12, 15, 1); + x3("縺*?(.)", "縺ゅ≠縺ゅ≠繧", 12, 15, 1); + x3("縺*?(繧)", "縺ゅ≠縺ゅ≠繧", 12, 15, 1); + x3("[縺縺縺]縺*(.)", "縺医≠縺ゅ≠縺ゅs", 15, 18, 1); + x3("(\\A縺縺)縺縺", "縺縺縺縺", 0, 6, 1); + n("(\\A縺縺)縺縺", "繧薙>縺縺縺"); + x3("(^縺縺)縺縺", "縺縺縺縺", 0, 6, 1); + n("(^縺縺)縺縺", "繧薙>縺縺縺"); + x3("繧阪m(繧九k$)", "繧阪m繧九k", 6, 12, 1); + n("繧阪m(繧九k$)", "繧阪m繧九k繧"); + x2("(辟。)\\1", "辟。辟。", 0, 6); + n("(辟。)\\1", "辟。豁ヲ"); + x2("(遨コ?)\\1", "遨コ遨コ", 6, 6); + x2("(遨コ?\?)\\1", "遨コ遨コ", 6, 6); + x2("(遨コ*)\\1", "遨コ遨コ遨コ遨コ遨コ", 15, 15); + x3("(遨コ*)\\1", "遨コ遨コ遨コ遨コ遨コ", 15, 15, 1); + x2("縺(縺*)\\1", "縺ゅ>縺縺縺", 0, 15); + x2("縺(縺*)\\1", "縺ゅ>", 0, 3); + x2("(縺*)(縺*)\\1\\2", "縺ゅ≠縺ゅ>縺縺ゅ≠縺ゅ>縺", 30, 30); + x2("(縺*)(縺*)\\2", "縺ゅ≠縺ゅ>縺縺縺", 21, 21); + x3("(縺*)(縺*)\\2", "縺ゅ≠縺ゅ>縺縺縺", 21, 21, 2); + x2("(((((((縺ス*)縺コ))))))縺エ\\7", "縺ス縺ス縺ス縺コ縺エ縺ス縺ス縺ス", 9, 15); + x3("(((((((縺ス*)縺コ))))))縺エ\\7", "縺ス縺ス縺ス縺コ縺エ縺ス縺ス縺ス", 9, 9, 7); + x2("(縺ッ)(縺イ)(縺オ)\\2\\1\\3", "縺ッ縺イ縺オ縺イ縺ッ縺オ", 0, 18); + x2("([縺-縺曽)\\1", "縺上¥", 0, 6); + x2("(\\w\\d\\s)\\1", "縺5 縺5 ", 0, 10); + n("(\\w\\d\\s)\\1", "縺5 縺5"); + x2("(隱ーシ毫[縺-縺]{3})\\1", "隱ーシ溯ェーシ", 0, 12); + x2("...(隱ーシ毫[縺-縺]{3})\\1", "縺B縺りェーシ溯ェーシ", 0, 19); + x2("(隱ーシ毫[縺-縺]{3})\\1", "縺縺縺縺縺縺", 0, 18); + x2("(^縺)\\1", "縺薙%", 0, 6); + n("(^繧)\\1", "繧√繧"); + n("(縺$)\\1", "縺ゅ≠"); + n("(縺ゅ>\\Z)\\1", "縺ゅ>"); + x2("(縺*\\Z)\\1", "縺", 3, 3); + x2(".(縺*\\Z)\\1", "縺縺", 3, 6); + x3("(.(繧縺繧)\\2)", "z繧縺繧繧縺繧", 0, 19, 1); + x3("(.(..\\d.)\\2)", "縺12341234", 0, 11, 1); + x2("((?i:縺W縺))\\1", "縺W縺壹≠v縺", 0, 14); + x2("(?<諢壹°>螟榎\\(\\g<諢壹°>\\))", "((((((螟))))))", 6, 9); + x2("\\A(?:\\g<髦ソ_1>|\\g<莠狙2>|\\z邨ゆコ (?<髦ソ_1>隕ウ|閾ェ\\g<莠狙2>閾ェ)(?<莠狙2>蝨ィ|闖ゥ阮ゥ\\g<髦ソ_1>闖ゥ阮ゥ))$", "闖ゥ阮ゥ閾ェ闖ゥ阮ゥ閾ェ蝨ィ閾ェ闖ゥ阮ゥ閾ェ闖ゥ阮ゥ", 0, 39); + x2("[[縺イ縺オ]]", "縺オ", 0, 3); + x2("[[縺縺翫≧]縺犠", "縺", 0, 3); + n("[[^縺]]", "縺"); + n("[^[縺]]", "縺"); + x2("[^[^縺]]", "縺", 0, 3); + x2("[[縺九″縺従&&縺阪¥]", "縺", 0, 3); + n("[[縺九″縺従&&縺阪¥]", "縺"); + n("[[縺九″縺従&&縺阪¥]", "縺"); + x2("[縺-繧&&縺-繧&&縺-繧曽", "繧", 0, 3); + n("[^縺-繧&&縺-繧&&縺-繧曽", "繧"); + x2("[[^縺&&縺]&&縺-繧転", "縺", 0, 3); + n("[[^縺&&縺]&&縺-繧転", "縺"); + x2("[[^縺-繧&&縺縺縺医♀]&&[^縺-縺犠]", "縺", 0, 3); + n("[[^縺-繧&&縺縺縺医♀]&&[^縺-縺犠]", "縺"); + x2("[^[^縺ゅ>縺]&&[^縺縺医♀]]", "縺", 0, 3); + x2("[^[^縺ゅ>縺]&&[^縺縺医♀]]", "縺", 0, 3); + n("[^[^縺ゅ>縺]&&[^縺縺医♀]]", "縺"); + x2("[縺-&&-縺]", "-", 0, 1); + x2("[^[^a-z縺ゅ>縺]&&[^bcdefg縺縺医♀]q-w]", "縺", 0, 3); + x2("[^[^a-z縺ゅ>縺]&&[^bcdefg縺縺医♀]g-w]", "f", 0, 1); + x2("[^[^a-z縺ゅ>縺]&&[^bcdefg縺縺医♀]g-w]", "g", 0, 1); + n("[^[^a-z縺ゅ>縺]&&[^bcdefg縺縺医♀]g-w]", "2"); + x2("a繝舌シ繧ク繝ァ繝ウ縺ョ繝繧ヲ繝ウ繝ュ繝シ繝<\\/b>", "a繝舌シ繧ク繝ァ繝ウ縺ョ繝繧ヲ繝ウ繝ュ繝シ繝", 0, 44); + x2(".繝舌シ繧ク繝ァ繝ウ縺ョ繝繧ヲ繝ウ繝ュ繝シ繝<\\/b>", "a繝舌シ繧ク繝ァ繝ウ縺ョ繝繧ヲ繝ウ繝ュ繝シ繝", 0, 44); + x2("\\n?\\z", "縺薙s縺ォ縺。縺ッ", 15, 15); + x2("(?m).*", "髱定オ、鮟", 9, 9); + x2("(?m).*a", "髱定オ、鮟a", 9, 10); + + x2("\\p{Hiragana}", "縺エ", 0, 3); + n("\\P{Hiragana}", "縺エ"); + x2("\\p{Emoji}", "\xE2\xAD\x90", 0, 3); + x2("\\p{^Emoji}", "\xEF\xBC\x93", 0, 3); + x2("\\p{Extended_Pictographic}", "\xE2\x9A\xA1", 0, 3); + n("\\p{Extended_Pictographic}", "\xE3\x81\x82"); + + x2("\\p{Word}", "縺", 0, 3); + n("\\p{^Word}", "縺"); + x2("[\\p{Word}]", "縺", 0, 3); + n("[\\p{^Word}]", "縺"); + n("[^\\p{Word}]", "縺"); + x2("[^\\p{^Word}]", "縺", 0, 3); + x2("[^\\p{^Word}&&\\p{ASCII}]", "縺", 0, 3); + x2("[^\\p{^Word}&&\\p{ASCII}]", "a", 0, 1); + n("[^\\p{^Word}&&\\p{ASCII}]", "#"); + x2("[^[\\p{^Word}]&&[\\p{ASCII}]]", "縺", 0, 3); + x2("[^[\\p{ASCII}]&&[^\\p{Word}]]", "縺", 0, 3); + n("[[\\p{ASCII}]&&[^\\p{Word}]]", "縺"); + x2("[^[\\p{^Word}]&&[^\\p{ASCII}]]", "縺", 0, 3); + x2("[^\\x{104a}]", "縺", 0, 3); + x2("[^\\p{^Word}&&[^\\x{104a}]]", "縺", 0, 3); + x2("[^[\\p{^Word}]&&[^\\x{104a}]]", "縺", 0, 3); + n("[^\\p{Word}||[^\\x{104a}]]", "縺"); + + x2("\\p{^Cntrl}", "縺", 0, 3); + n("\\p{Cntrl}", "縺"); + x2("[\\p{^Cntrl}]", "縺", 0, 3); + n("[\\p{Cntrl}]", "縺"); + n("[^\\p{^Cntrl}]", "縺"); + x2("[^\\p{Cntrl}]", "縺", 0, 3); + x2("[^\\p{Cntrl}&&\\p{ASCII}]", "縺", 0, 3); + x2("[^\\p{Cntrl}&&\\p{ASCII}]", "a", 0, 1); + n("[^\\p{^Cntrl}&&\\p{ASCII}]", "#"); + x2("[^[\\p{^Cntrl}]&&[\\p{ASCII}]]", "縺", 0, 3); + x2("[^[\\p{ASCII}]&&[^\\p{Cntrl}]]", "縺", 0, 3); + n("[[\\p{ASCII}]&&[^\\p{Cntrl}]]", "縺"); + n("[^[\\p{^Cntrl}]&&[^\\p{ASCII}]]", "縺"); + n("[^\\p{^Cntrl}&&[^\\x{104a}]]", "縺"); + n("[^[\\p{^Cntrl}]&&[^\\x{104a}]]", "縺"); + n("[^\\p{Cntrl}||[^\\x{104a}]]", "縺"); + + x2("(?-W:\\p{Word})", "縺", 0, 3); + n("(?W:\\p{Word})", "縺"); + x2("(?W:\\p{Word})", "k", 0, 1); + x2("(?-W:[[:word:]])", "縺", 0, 3); + n("(?W:[[:word:]])", "縺"); + x2("(?-D:\\p{Digit})", "シ", 0, 3); + n("(?D:\\p{Digit})", "シ"); + x2("(?-S:\\p{Space})", "\xc2\x85", 0, 2); + n("(?S:\\p{Space})", "\xc2\x85"); + x2("(?-P:\\p{Word})", "縺", 0, 3); + n("(?P:\\p{Word})", "縺"); + x2("(?-W:\\w)", "縺", 0, 3); + n("(?W:\\w)", "縺"); + x2("(?-W:\\w)", "k", 0, 1); + x2("(?W:\\w)", "k", 0, 1); + n("(?-W:\\W)", "縺"); + x2("(?W:\\W)", "縺", 0, 3); + n("(?-W:\\W)", "k"); + n("(?W:\\W)", "k"); + + x2("(?-W:\\b)", "縺", 3, 3); + n("(?W:\\b)", "縺"); + x2("(?-W:\\b)", "h", 1, 1); + x2("(?W:\\b)", "h", 1, 1); + n("(?-W:\\B)", "縺"); + x2("(?W:\\B)", "縺", 3, 3); + n("(?-W:\\B)", "h"); + n("(?W:\\B)", "h"); + x2("(?-P:\\b)", "縺", 3, 3); + n("(?P:\\b)", "縺"); + x2("(?-P:\\b)", "h", 1, 1); + x2("(?P:\\b)", "h", 1, 1); + n("(?-P:\\B)", "縺"); + x2("(?P:\\B)", "縺", 3, 3); + n("(?-P:\\B)", "h"); + n("(?P:\\B)", "h"); + + x2("\\p{InBasicLatin}", "\x41", 0, 1); + //x2("\\p{Grapheme_Cluster_Break_Regional_Indicator}", "\xF0\x9F\x87\xA9", 0, 4); + //n("\\p{Grapheme_Cluster_Break_Regional_Indicator}", "\xF0\x9F\x87\xA5"); + + // extended grapheme cluster + + // CR + LF + n(".\\y\\O", "\x0d\x0a"); + x2(".\\Y\\O", "\x0d\x0a", 0, 2); + + // LATIN SMALL LETTER G, COMBINING DIAERESIS + n("^.\\y.$", "\x67\xCC\x88"); + x2(".\\Y.", "\x67\xCC\x88", 0, 3); + x2("\\y.\\Y.\\y", "\x67\xCC\x88", 0, 3); + // HANGUL SYLLABLE GAG + x2("\\y.\\y", "\xEA\xB0\x81", 0, 3); + // HANGUL CHOSEONG KIYEOK, HANGUL JUNGSEONG A, HANGUL JONGSEONG KIYEOK + x2("^.\\Y.\\Y.$", "\xE1\x84\x80\xE1\x85\xA1\xE1\x86\xA8", 0, 9); + n("^.\\y.\\Y.$", "\xE1\x84\x80\xE1\x85\xA1\xE1\x86\xA8"); + // TAMIL LETTER NA, TAMIL VOWEL SIGN I, + x2(".\\Y.", "\xE0\xAE\xA8\xE0\xAE\xBF", 0, 6); + n(".\\y.", "\xE0\xAE\xA8\xE0\xAE\xBF"); + // THAI CHARACTER KO KAI, THAI CHARACTER SARA AM + x2(".\\Y.", "\xE0\xB8\x81\xE0\xB8\xB3", 0, 6); + n(".\\y.", "\xE0\xB8\x81\xE0\xB8\xB3"); + // DEVANAGARI LETTER SSA, DEVANAGARI VOWEL SIGN I + x2(".\\Y.", "\xE0\xA4\xB7\xE0\xA4\xBF", 0, 6); + n(".\\y.", "\xE0\xA4\xB7\xE0\xA4\xBF"); + + // {Extended_Pictographic} Extend* ZWJ x {Extended_Pictographic} + x2("..\\Y.", "\xE3\x80\xB0\xE2\x80\x8D\xE2\xAD\x95", 0, 9); + x2("...\\Y.", "\xE3\x80\xB0\xCC\x82\xE2\x80\x8D\xE2\xAD\x95", 0, 11); + n("...\\Y.", "\xE3\x80\xB0\xCD\xB0\xE2\x80\x8D\xE2\xAD\x95"); + + // CR + LF + n("^\\X\\X$", "\x0d\x0a"); + x2("^\\X$", "\x0d\x0a", 0, 2); + // LATIN SMALL LETTER G, COMBINING DIAERESIS + n("^\\X\\X.$", "\x67\xCC\x88"); + x2("^\\X$", "\x67\xCC\x88", 0, 3); + // HANGUL CHOSEONG KIYEOK, HANGUL JUNGSEONG A, HANGUL JONGSEONG KIYEOK + x2("^\\X$", "\xE1\x84\x80\xE1\x85\xA1\xE1\x86\xA8", 0, 9); + n("^\\X\\X\\X$", "\xE1\x84\x80\xE1\x85\xA1\xE1\x86\xA8"); + // TAMIL LETTER NA, TAMIL VOWEL SIGN I, + x2("^\\X$", "\xE0\xAE\xA8\xE0\xAE\xBF", 0, 6); + n("\\X\\X", "\xE0\xAE\xA8\xE0\xAE\xBF"); + // THAI CHARACTER KO KAI, THAI CHARACTER SARA AM + x2("^\\X$", "\xE0\xB8\x81\xE0\xB8\xB3", 0, 6); + n("\\X\\X", "\xE0\xB8\x81\xE0\xB8\xB3"); + // DEVANAGARI LETTER SSA, DEVANAGARI VOWEL SIGN I + x2("^\\X$", "\xE0\xA4\xB7\xE0\xA4\xBF", 0, 6); + n("\\X\\X", "\xE0\xA4\xB7\xE0\xA4\xBF"); + + n("^\\X.$", "\xE0\xAE\xA8\xE0\xAE\xBF"); + + // a + COMBINING GRAVE ACCENT (U+0300) + x2("h\\Xllo", "ha\xCC\x80llo", 0, 7); + + // Text Segment: Extended Grapheme Cluster <-> Word Boundary + x2("(?y{g})\\yabc\\y", "abc", 0, 3); + x2("(?y{g})\\y\\X\\y", "abc", 2, 3); + x2("(?y{w})\\yabc\\y", "abc", 0, 3); // WB1, WB2 + x2("(?y{w})\\y\\X", "\r\n", 0, 2); // WB3 + x2("(?y{w})\\X", "\x0cz", 1, 2); // WB3a + x2("(?y{w})\\X", "q\x0c", 1, 2); // WB3b + x2("(?y{w})\\y\\X", "\xE2\x80\x8D\xE2\x9D\x87", 0, 6); // WB3c + x2("(?y{w})\\y\\X", "\x20\x20", 0, 2); // WB3d + x2("(?y{w})\\y\\X", "a\xE2\x80\x8D", 0, 4); // WB4 + x2("(?y{w})\\y\\X\\y", "abc", 0, 3); // WB5 + x2("(?y{w})\\y\\X\\y", "v\xCE\x87w", 0, 4); // WB6, WB7 + x2("(?y{w})\\y\\X\\y", "\xD7\x93\x27", 0, 3); // WB7a + x2("(?y{w})\\y\\X\\y", "\xD7\x93\x22\xD7\x93", 0, 5); // WB7b, WB7c + x2("(?y{w})\\y\\X", "14 45", 3, 5); // WB8 + x2("(?y{w})\\y\\X", "a14", 0, 3); // WB9 + x2("(?y{w})\\y\\X", "832e", 0, 4); // WB10 + x2("(?y{w})\\y\\X", "8\xEF\xBC\x8C\xDB\xB0", 0, 6); // WB11, WB12 + x2("(?y{w})\\y\\X\\y", "繧ア繝ウ", 0, 6); // WB13 + x2("(?y{w})\\y\\X\\y", "繧ア繝ウ\xE2\x80\xAF繧ソ", 0, 12); // WB13a, WB13b + x2("(?y{w})\\y\\X\\y", "\x21\x23", 1, 2); // WB999 + x2("(?y{w})\\y\\X\\y", "螻ア繧「", 3, 6); + x2("(?y{w})\\y\\X", "3.14", 0, 4); + x2("(?y{w})\\y\\X", "3 14", 2, 4); + + 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); + x2("((?()0+)+++(((0\\g<0>)0)|())++++((?(1)(0\\g<0>))++++++0*())++++((?(1)(0\\g<1>)+)++++++++++*())++++((?(1)((0)\\g<0>)+)++())+0++*+++(((0\\g<0>))*())++++((?(1)(0\\g<0>)+)++++++++++*|)++++*+++((?(1)((0)\\g<0>)+)+++++++++())++*|)++++((?()0))|", "abcde", 5, 5); // #139 + + n("(*FAIL)", "abcdefg"); + n("abcd(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)", "abcdefg"); + x2("(?:[ab]|(*MAX{2}).)*", "abcbaaccaaa", 11, 11); + x2("(?:(*COUNT[AB]{X})[ab]|(*COUNT[CD]{X})[cd])*(*CMP{AB,<,CD})", + "abababcdab", 7, 8); + x2("(?(?{....})123|456)", "123", 0, 3); + x2("(?(*FAIL)123|456)", "456", 0, 3); + + x2("\\g'0'++{,0}", "abcdefgh", 8, 8); + x2("\\g'0'++{,0}?", "abcdefgh", 8, 8); + x2("\\g'0'++{,0}b", "abcdefgh", 1, 2); + x2("\\g'0'++{,0}?def", "abcdefgh", 3, 6); + x2("a{1,3}?", "aaa", 2, 3); + x2("a{3}", "aaa", 0, 3); + x2("a{3}?", "aaa", 3, 3); + x2("a{3}?", "aa", 2, 2); + x2("a{3,3}?", "aaa", 0, 3); + n("a{3,3}?", "aa"); + x2("a{1,3}+", "aaaaaa", 5, 6); + x2("a{3}+", "aaaaaa", 3, 6); + x2("a{3,3}+", "aaaaaa", 3, 6); + n("a{2,3}?", "a"); + n("a{3,2}a", "aaa"); + x2("a{3,2}b", "aaab", 1, 4); + x2("a{3,2}b", "aaaab", 2, 5); + x2("a{3,2}b", "aab", 0, 3); + x2("a{3,2}?", "", 0, 0); /* == (?:a{3,2})?*/ + x2("a{2,3}+a", "aaa", 0, 3); /* == (?:a{2,3})+*/ + x2("[\\x{0}-\\x{7fffffff}]", "a", 0, 1); + x2("[\\x{7f}-\\x{7fffffff}]", "\xe5\xae\xb6", 0, 3); + x2("[a[cdef]]", "a", 0, 1); + n("[a[xyz]-c]", "b"); + x2("[a[xyz]-c]", "a", 0, 1); + x2("[a[xyz]-c]", "-", 0, 1); + x2("[a[xyz]-c]", "c", 0, 1); + x2("(a.c|def)(.{4})(?<=\\1)", "abcdabc", 0, 7); + x2("(a.c|de)(.{4})(?<=\\1)", "abcdabc", 0, 7); + x2("(a.c|def)(.{5})(?<=d\\1e)", "abcdabce", 0, 8); + x2("(a.c|.)d(?<=\\k<1>d)", "zzzzzabcdabc", 7, 9); + x2("(?<=az*)abc", "azzzzzzzzzzabcdabcabc", 11, 14); + x2("(?<=ab|abc|abcd)ef", "abcdef", 4, 6); + x2("(?<=ta+|tb+|tc+|td+)zz", "tcccccccccczz", 11, 13); + x2("(?<=t.{7}|t.{5}|t.{2}|t.)zz", "tczz", 2, 4); + x2("(?<=t.{7}|t.{5}|t.{2})zz", "tczzzz", 3, 5); + x2("(?<=t.{7}|t.{5}|t.{3})zz", "tczzazzbzz", 8, 10); + n("(?<=t.{7}|t.{5}|t.{3})zz", "tczzazzbczz"); + x2("(?<=(ab|abc|abcd))ef", "abcdef", 4, 6); + x2("(?<=(ta+|tb+|tc+|td+))zz", "tcccccccccczz", 11, 13); + x2("(?<=(t.{7}|t.{5}|t.{2}|t.))zz", "tczz", 2, 4); + x2("(?<=(t.{7}|t.{5}|t.{2}))zz", "tczzzz", 3, 5); + x2("(?<=(t.{7}|t.{5}|t.{3}))zz", "tczzazzbzz", 8, 10); + n("(?<=(t.{7}|t.{5}|t.{3}))zz", "tczzazzbczz"); + x2("(.{1,4})(.{1,4})(?<=\\2\\1)", "abaaba", 2, 4); + x2("(.{1,4})(.{1,4})(?<=\\2\\1)", "ababab", 2, 6); + n("(.{1,4})(.{1,4})(?<=\\2\\1)", "abcdabce"); + x2("(.{1,4})(.{1,4})(?<=\\2\\1)", "abcdabceabce", 4, 12); + x2("(?<=a)", "a", 1, 1); + x2("(?<=a.*\\w)z", "abbbz", 4, 5); + n("(?<=a.*\\w)z", "abb z"); + x2("(?<=a.*\\W)z", "abb z", 4, 5); + x2("(?<=a.*\\b)z", "abb z", 4, 5); + x2("(?<=(?>abc))", "abc", 3, 3); + x2("(?<=a\\Xz)", "abz", 3, 3); + n("(?<=^a*)bc", "zabc"); + n("(?<=a*\\b)b", "abc"); + x2("(?<=a+.*[efg])z", "abcdfz", 5, 6); + x2("(?<=a+.*[efg])z", "abcdfgz", 6, 7); + n("(?<=a+.*[efg])z", "bcdfz"); + x2("(?<=a*.*[efg])z", "bcdfz", 4, 5); + n("(?<=a+.*[efg])z", "abcdz"); + x2("(?<=v|t|a+.*[efg])z", "abcdfz", 5, 6); + x2("(?<=v|t|^a+.*[efg])z", "abcdfz", 5, 6); + x2("(?<=^(?:v|t|a+.*[efg]))z", "abcdfz", 5, 6); + x2("(?<=v|^t|a+.*[efg])z", "uabcdfz", 6, 7); + n("^..(?<=(a{,2}))\\1z", "aaaaz"); // !!! look-behind is shortest priority + x2("^..(?<=(a{,2}))\\1z", "aaz", 0, 3); // shortest priority + e("(?<=(?~|zoo)a.*z)", "abcdefz", ONIGERR_INVALID_LOOK_BEHIND_PATTERN); + e("(?<=(?~|)a.*z)", "abcdefz", ONIGERR_INVALID_LOOK_BEHIND_PATTERN); + e("(a(?~|boo)z){0}(?<=\\g<1>)", "abcdefz", ONIGERR_INVALID_LOOK_BEHIND_PATTERN); + x2("(?<=(?<= )| )", "abcde fg", 6, 6); // #173 + x2("(?<=D|)(?<=@!nnnnnnnnnIIIIn;{1}D?()|;{1}x)", "(?<=D|)(?<=@!nnnnnnnnnIIIIn;{1}D?()|;{1}x)", 55, 55); // #173 + x2("(?<=;()|)\\g<1>", "", 0, 0); // reduced #173 + x2("(?<=;()|)\\k<1>", ";", 1, 1); + x2("(())\\g<3>{0}(?<=|())", "abc", 3, 3); // #175 + x2("(?<=()|)\\1{0}", "abc", 3, 3); + e("(?|b))", "aab", 2, 3); + x2("((?(a)\\g<1>))", "aab", 3, 3); + x2("(b(?(a)|\\g<1>))", "bba", 1, 3); + e("(()(?(2)\\g<1>))", "", ONIGERR_NEVER_ENDING_RECURSION); + x2("(?(a)(?:b|c))", "ac", 2, 2); + n("^(?(a)b|c)", "ac"); + x2("(?i)a|b", "B", 0, 1); + n("((?i)a|b.)|c", "C"); + n("c(?i)a.|b.", "Caz"); + x2("c(?i)a|b", "cB", 0, 2); /* == c(?i:a|b) */ + x2("c(?i)a.|b.", "cBb", 0, 3); + + x2("(?i)st", "st", 0, 2); + x2("(?i)st", "St", 0, 2); + x2("(?i)st", "sT", 0, 2); + x2("(?i)st", "\xC5\xBFt", 0, 3); // U+017F + x2("(?i)st", "\xEF\xAC\x85", 0, 3); // U+FB05 + x2("(?i)st", "\xEF\xAC\x86", 0, 3); // U+FB06 + x2("(?i)ast", "Ast", 0, 3); + x2("(?i)ast", "ASt", 0, 3); + x2("(?i)ast", "AsT", 0, 3); + x2("(?i)ast", "A\xC5\xBFt", 0, 4); // U+017F + x2("(?i)ast", "A\xEF\xAC\x85", 0, 4); // U+FB05 + x2("(?i)ast", "A\xEF\xAC\x86", 0, 4); // U+FB06 + x2("(?i)stZ", "stz", 0, 3); + x2("(?i)stZ", "Stz", 0, 3); + x2("(?i)stZ", "sTz", 0, 3); + x2("(?i)stZ", "\xC5\xBFtz", 0, 4); // U+017F + x2("(?i)stZ", "\xEF\xAC\x85z", 0, 4); // U+FB05 + x2("(?i)stZ", "\xEF\xAC\x86z", 0, 4); // U+FB06 + x2("(?i)BstZ", "bstz", 0, 4); + x2("(?i)BstZ", "bStz", 0, 4); + x2("(?i)BstZ", "bsTz", 0, 4); + x2("(?i)BstZ", "b\xC5\xBFtz", 0, 5); // U+017F + x2("(?i)BstZ", "b\xEF\xAC\x85z", 0, 5); // U+FB05 + x2("(?i)BstZ", "b\xEF\xAC\x86z", 0, 5); // U+FB06 + x2("(?i).*st\\z", "tttssss\xC5\xBFt", 7, 10); // U+017F + x2("(?i).*st\\z", "tttssss\xEF\xAC\x85", 7, 10); // U+FB05 + x2("(?i).*st\\z", "tttssss\xEF\xAC\x86", 7, 10); // U+FB06 + x2("(?i).*縺Tt縺Ы\z", "tttssss縺\xC5\xBFt縺", 7, 16); // U+017F + x2("(?i).*縺Tt縺Ы\z", "tttssss縺\xEF\xAC\x85縺", 7, 16); // U+FB05 + x2("(?i).*縺Tt縺Ы\z", "tttssss縺\xEF\xAC\x86縺", 7, 16); // U+FB06 + x2("(?i).*\xC5\xBFt\\z", "tttssssst", 7, 9); // U+017F + x2("(?i).*\xEF\xAC\x85\\z", "tttssss縺Tt", 10, 12); // U+FB05 + x2("(?i).*\xEF\xAC\x86縺Ы\z", "tttssssst縺", 7, 12); // U+FB06 + x2("(?i).*\xEF\xAC\x85\\z", "tttssss縺\xEF\xAC\x85", 10, 13); + + x2("(?i).*ss", "abcdefghijklmnopqrstuvwxyz\xc3\x9f", 26, 28); // U+00DF + x2("(?i).*ss.*", "abcdefghijklmnopqrstuvwxyz\xc3\x9fxyz", 26, 31); // U+00DF + x2("(?i).*\xc3\x9f", "abcdefghijklmnopqrstuvwxyzss", 26, 28); // U+00DF + x2("(?i).*ss.*", "abcdefghijklmnopqrstuvwxyzSSxyz", 26, 31); + + x2("(?i)ssv", "\xc3\x9fv", 0, 3); // U+00DF + x2("(?i)(?<=ss)v", "SSv", 2, 3); + x2("(?i)(?<=\xc3\x9f)v", "\xc3\x9fv", 2, 3); + //x2("(?i)(?<=\xc3\x9f)v", "ssv", 2, 3); + //x2("(?i)(?<=ss)v", "\xc3\x9fv", 2, 3); + + /* #156 U+01F0 (UTF-8: C7 B0) */ + x2("(?i).+Isssヌー", ".+Isssヌー", 1, 8); + x2(".+Isssヌー", ".+Isssヌー", 1, 8); + x2("(?i)ヌー", "ヌー", 0, 2); + x2("(?i)ヌー", "j\xcc\x8c", 0, 3); + x2("(?i)j\xcc\x8c", "ヌー", 0, 2); + x2("(?i)5ヌー", "5ヌー", 0, 3); + x2("(?i)5ヌー", "5j\xcc\x8c", 0, 4); + x2("(?i)5j\xcc\x8c", "5ヌー", 0, 3); + x2("(?i)ヌーv", "ヌーV", 0, 3); + x2("(?i)ヌーv", "j\xcc\x8cV", 0, 4); + x2("(?i)j\xcc\x8cv", "ヌーV", 0, 3); + x2("(?i)[ヌー]", "ヌー", 0, 2); + x2("(?i)[ヌー]", "j\xcc\x8c", 0, 3); + //x2("(?i)[j]\xcc\x8c", "ヌー", 0, 2); + x2("(?i)\ufb00a", "ffa", 0, 3); + x2("(?i)ffz", "\xef\xac\x80z", 0, 4); + x2("(?i)\u2126", "\xcf\x89", 0, 2); + x2("a(?i)\u2126", "a\xcf\x89", 0, 3); + x2("(?i)A\u2126", "a\xcf\x89", 0, 3); + x2("(?i)A\u2126=", "a\xcf\x89=", 0, 4); + x2("(?i:ss)=1234567890", "\xc5\xbf\xc5\xbf=1234567890", 0, 15); + + n("a(b|)+d", "abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbcd"); /* https://www.haijin-boys.com/discussions/5079 */ + n(" \xfd", ""); /* https://bugs.php.net/bug.php?id=77370 */ + /* can't use \xfc00.. because compiler error: hex escape sequence out of range */ + n("()0\\xfc00000\\xfc00000\\xfc00000\xfc", ""); /* https://bugs.php.net/bug.php?id=77371 */ + x2("000||0\xfa", "0", 1, 1); + e("(?i)000000000000000000000\xf0", "", ONIGERR_INVALID_CODE_POINT_VALUE); /* https://bugs.php.net/bug.php?id=77382 */ + n("0000\\\xf5", "0"); /* https://bugs.php.net/bug.php?id=77385 */ + n("(?i)FFF00000000000000000\xfd", ""); /* https://bugs.php.net/bug.php?id=77394 */ + e("x{55380}{77590}", "", ONIGERR_TOO_BIG_NUMBER_FOR_REPEAT_RANGE); + e("(xyz){40000}{99999}(?vv)", "", ONIGERR_TOO_BIG_NUMBER_FOR_REPEAT_RANGE); + e("f{90000,90000}{80000,80000}", "", ONIGERR_TOO_BIG_NUMBER_FOR_REPEAT_RANGE); + n("f{90000,90000}{80000,80001}", ""); + + x2("\\p{Common}", "\xe3\x8b\xbf", 0, 3); /* U+32FF */ + x2("\\p{In_Enclosed_CJK_Letters_and_Months}", "\xe3\x8b\xbf", 0, 3); /* U+32FF */ + + e("\\x{7fffffff}", "", ONIGERR_INVALID_CODE_POINT_VALUE); + e("[\\x{7fffffff}]", "", ONIGERR_INVALID_CODE_POINT_VALUE); + e("\\u040", "@", ONIGERR_INVALID_CODE_POINT_VALUE); + e("(?\\g)", "zzzz", ONIGERR_NEVER_ENDING_RECURSION); + e("(*FOO)", "abcdefg", ONIGERR_UNDEFINED_CALLOUT_NAME); + e("*", "abc", ONIGERR_TARGET_OF_REPEAT_OPERATOR_NOT_SPECIFIED); + e("|*", "abc", ONIGERR_TARGET_OF_REPEAT_OPERATOR_NOT_SPECIFIED); + e("(?i)*", "abc", ONIGERR_TARGET_OF_REPEAT_OPERATOR_NOT_SPECIFIED); + e("(?:*)", "abc", ONIGERR_TARGET_OF_REPEAT_OPERATOR_NOT_SPECIFIED); + e("(?m:*)", "abc", ONIGERR_TARGET_OF_REPEAT_OPERATOR_NOT_SPECIFIED); + x2("(?:)*", "abc", 3, 3); + e("^*", "abc", ONIGERR_TARGET_OF_REPEAT_OPERATOR_INVALID); + + fprintf(stdout, + "\nRESULT SUCC: %4d, FAIL: %d, ERROR: %d (by Oniguruma %s)\n", + nsucc, nfail, nerror, onig_version()); + + onig_region_free(region, 1); + onig_end(); + + return ((nfail == 0 && nerror == 0) ? 0 : -1); +} diff --git a/vendor/oniguruma/oniguruma/test/test_options.c b/vendor/oniguruma/oniguruma/test/test_options.c new file mode 100644 index 0000000..9aa2538 --- /dev/null +++ b/vendor/oniguruma/oniguruma/test/test_options.c @@ -0,0 +1,228 @@ +/* + * test_options.c + * Copyright (c) 2020-2024 K.Kosako + */ +#ifdef ONIG_ESCAPE_UCHAR_COLLISION +#undef ONIG_ESCAPE_UCHAR_COLLISION +#endif +#include + +#include "oniguruma.h" + +#include + +#define SLEN(s) strlen(s) + +static int nsucc = 0; +static int nfail = 0; +static int nerror = 0; + +#ifdef __TRUSTINSOFT_ANALYZER__ +static int nall = 0; +#endif + +static FILE* err_file; + +static OnigRegion* region; + +static void xx(OnigOptionType options, char* pattern, char* str, + int from, int to, int mem, int not, int error_no, int line_no) +{ +#ifdef __TRUSTINSOFT_ANALYZER__ + if (nall++ % TIS_TEST_CHOOSE_MAX != TIS_TEST_CHOOSE_CURRENT) return; +#endif + + int r; + regex_t* reg; + OnigErrorInfo einfo; + + r = onig_new(®, (UChar* )pattern, (UChar* )(pattern + SLEN(pattern)), + options, ONIG_ENCODING_UTF8, ONIG_SYNTAX_DEFAULT, &einfo); + if (r) { + char s[ONIG_MAX_ERROR_MESSAGE_LEN]; + + if (error_no == 0) { + onig_error_code_to_str((UChar* )s, r, &einfo); + fprintf(err_file, "ERROR: %s /%s/ #%d\n", s, pattern, line_no); + nerror++; + } + else { + if (r == error_no) { + fprintf(stdout, "OK(ERROR): /%s/ %d #%d\n", pattern, r, line_no); + nsucc++; + } + else { + fprintf(stdout, "FAIL(ERROR): /%s/ '%s', %d, %d #%d\n", pattern, str, + error_no, r, line_no); + nfail++; + } + } + + return ; + } + + r = onig_search(reg, (UChar* )str, (UChar* )(str + SLEN(str)), + (UChar* )str, (UChar* )(str + SLEN(str)), + region, options); + if (r < ONIG_MISMATCH || error_no < ONIG_MISMATCH) { + char s[ONIG_MAX_ERROR_MESSAGE_LEN]; + + if (error_no == 0) { + onig_error_code_to_str((UChar* )s, r); + fprintf(err_file, "ERROR: %s /%s/ #%d\n", s, pattern, line_no); + nerror++; + } + else { + if (r == error_no) { + fprintf(stdout, "OK(ERROR): /%s/ '%s', %d #%d\n", + pattern, str, r, line_no); + nsucc++; + } + else { + fprintf(stdout, "FAIL ERROR NO: /%s/ '%s', %d, %d #%d\n", + pattern, str, error_no, r, line_no); + nfail++; + } + } + + return ; + } + + if (r == ONIG_MISMATCH) { + if (not) { + fprintf(stdout, "OK(N): /%s/ '%s' #%d\n", pattern, str, line_no); + nsucc++; + } + else { + fprintf(stdout, "FAIL: /%s/ '%s' #%d\n", pattern, str, line_no); + nfail++; + } + } + else { + if (not) { + fprintf(stdout, "FAIL(N): /%s/ '%s' #%d\n", pattern, str, line_no); + nfail++; + } + else { + if (region->beg[mem] == from && region->end[mem] == to) { + fprintf(stdout, "OK: /%s/ '%s' #%d\n", pattern, str, line_no); + nsucc++; + } + else { + fprintf(stdout, "FAIL: /%s/ '%s' %d-%d : %d-%d #%d\n", pattern, str, + from, to, region->beg[mem], region->end[mem], line_no); + nfail++; + } + } + } + onig_free(reg); +} + +static void xx2(OnigOptionType options, char* pattern, char* str, + int from, int to, int line_no) +{ + xx(options, pattern, str, from, to, 0, 0, 0, line_no); +} + +static void xx3(OnigOptionType options, char* pattern, char* str, + int from, int to, int mem, int line_no) +{ + xx(options, pattern, str, from, to, mem, 0, 0, line_no); +} + +static void xn(OnigOptionType options, char* pattern, char* str, int line_no) +{ + xx(options, pattern, str, 0, 0, 0, 1, 0, line_no); +} + +#if 0 +static void xe(OnigOptionType options, char* pattern, char* str, + int error_no, int line_no) +{ + xx(options, pattern, str, 0, 0, 0, 0, error_no, line_no); +} +#endif + +#define x2(o,p,s,f,t) xx2(o,p,s,f,t, __LINE__) +#define x3(o,p,s,f,t,m) xx3(o,p,s,f,t,m, __LINE__) +#define n(o,p,s) xn(o,p,s, __LINE__) +#define e(o,p,s,en) xe(o,p,s,en, __LINE__) + +#define OIA (ONIG_OPTION_IGNORECASE | ONIG_OPTION_IGNORECASE_IS_ASCII) + +extern int main(int argc, char* argv[]) +{ + OnigEncoding use_encs[1]; + + use_encs[0] = ONIG_ENCODING_UTF8; + onig_initialize(use_encs, sizeof(use_encs)/sizeof(use_encs[0])); + + err_file = stdout; + + region = onig_region_new(); + + x2(ONIG_OPTION_IGNORECASE, "a", "A", 0, 1); + n(ONIG_OPTION_IGNORECASE_IS_ASCII, "a", "A"); + /* KELVIN SIGN */ + x2(ONIG_OPTION_IGNORECASE, "\xe2\x84\xaa", "k", 0, 1); + x2(ONIG_OPTION_IGNORECASE, "k", "\xe2\x84\xaa", 0, 3); + n(OIA, "\xe2\x84\xaa", "k"); + n(OIA, "k", "\xe2\x84\xaa"); + x2(OIA, "a", "a", 0, 1); + x2(OIA, "A", "A", 0, 1); + x2(OIA, "a", "A", 0, 1); + x2(OIA, "A", "a", 0, 1); + x2(OIA, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "abcdefghijklmnopqrstuvwxyz", 0, 26); + x2(OIA, "abcdefghijklmnopqrstuvwxyz", "ABCDEFGHIJKLMNOPQRSTUVWXYZ", 0, 26); + x2(OIA, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "ABCabcdefghijklmnopqrstuvwxyz", 3, 29); + x2(OIA, "abcdefghijklmnopqrstuvwxyz", "abcABCDEFGHIJKLMNOPQRSTUVWXYZ", 3, 29); + x3(OIA, "#%(a!;)(b&)", "#%A!;B&", 5, 7, 2); + + x2(ONIG_OPTION_IGNORECASE, "ss", "\xc3\x9f", 0, 2); + x2(ONIG_OPTION_IGNORECASE, "\xc3\x9f", "SS", 0, 2); + n(OIA, "ss", "\xc3\x9f"); + n(OIA, "\xc3\x9f", "ss"); + x2(OIA, "ss", "SS", 0, 2); + x2(OIA, "Ss", "sS", 0, 2); + + n(ONIG_OPTION_NOTBOL, "^ab", "ab"); + n(ONIG_OPTION_NOTBOL, "\\Aab", "ab"); + n(ONIG_OPTION_NOTEOL, "ab$", "ab"); + n(ONIG_OPTION_NOTEOL, "ab\\z", "ab"); + n(ONIG_OPTION_NOTEOL, "ab\\Z", "ab"); + n(ONIG_OPTION_NOTEOL, "ab\\Z", "ab\n"); + + n(ONIG_OPTION_NOT_BEGIN_STRING, "\\Aab", "ab"); + n(ONIG_OPTION_NOT_END_STRING, "ab\\z", "ab"); + n(ONIG_OPTION_NOT_END_STRING, "ab\\Z", "ab"); + n(ONIG_OPTION_NOT_END_STRING, "ab\\Z", "ab\n"); + + x2(ONIG_OPTION_NONE, "a|abc", "abc", 0, 1); + x2(ONIG_OPTION_NONE, "(a|abc)\\Z", "abc", 0, 3); + x2(ONIG_OPTION_MATCH_WHOLE_STRING, "a|abc", "abc", 0, 3); + x2(ONIG_OPTION_MATCH_WHOLE_STRING, "a|abc", "a", 0, 1); + + x2(ONIG_OPTION_WORD_IS_ASCII, "\\w", "@g", 1, 2); + n(ONIG_OPTION_WORD_IS_ASCII, "\\w", "縺"); + x2(ONIG_OPTION_NONE, "\\d", "シ", 0, 3); + n(ONIG_OPTION_DIGIT_IS_ASCII, "\\d", "シ"); + x2(ONIG_OPTION_SPACE_IS_ASCII, "\\s", " ", 0, 1); + x2(ONIG_OPTION_NONE, "\\s", "縲", 0, 3); + n(ONIG_OPTION_SPACE_IS_ASCII, "\\s", "縲"); + + x2(ONIG_OPTION_POSIX_IS_ASCII, "\\w\\d\\s", "c3 ", 0, 3); + n(ONIG_OPTION_POSIX_IS_ASCII, "\\w|\\d|\\s", "縺ゑシ斐"); + + x2(ONIG_OPTION_EXTEND, " abc \n def", "abcdef", 0, 6); + x2(ONIG_OPTION_FIND_LONGEST, "\\w+", "abc defg hij", 4, 8); + x2(ONIG_OPTION_FIND_NOT_EMPTY, "\\w*", "@@@ abc defg hij", 4, 7); + + + fprintf(stdout, + "\nRESULT SUCC: %4d, FAIL: %d, ERROR: %d (by Oniguruma %s)\n", + nsucc, nfail, nerror, onig_version()); + + onig_region_free(region, 1); + onig_end(); + return ((nfail == 0 && nerror == 0) ? 0 : -1); +} diff --git a/vendor/oniguruma/oniguruma/test/test_regset.c b/vendor/oniguruma/oniguruma/test/test_regset.c new file mode 100644 index 0000000..7476ec4 --- /dev/null +++ b/vendor/oniguruma/oniguruma/test/test_regset.c @@ -0,0 +1,466 @@ +/* + * test_regset.c --- test for regset API + * Copyright (c) 2019 K.Kosako + */ +#include +#include +#include +#include + +#include "oniguruma.h" + +static int nsucc = 0; +static int nfail = 0; +static int nerror = 0; + + +static int +make_regset(int line_no, int n, char* pat[], OnigRegSet** rset, int error_no) +{ + int r; + int i; + OnigRegSet* set; + regex_t* reg; + OnigErrorInfo einfo; + + *rset = NULL; + r = onig_regset_new(&set, 0, NULL); + if (r != 0) return r; + + for (i = 0; i < n; i++) { + r = onig_new(®, (UChar* )pat[i], (UChar* )(pat[i] + strlen(pat[i])), + ONIG_OPTION_DEFAULT, ONIG_ENCODING_UTF8, ONIG_SYNTAX_DEFAULT, + &einfo); + if (r != 0) { + char s[ONIG_MAX_ERROR_MESSAGE_LEN]; + + if (error_no == 0) { + onig_error_code_to_str((UChar* )s, r, &einfo); + fprintf(stderr, "ERROR: %d: %s /%s/\n", line_no, s, pat[i]); + nerror++; + } + else { + if (r == error_no) { + fprintf(stdout, "OK(ERROR): %d: /%s/ %d\n", line_no, pat[i], r); + nsucc++; + } + else { + fprintf(stdout, "FAIL(ERROR): %d: /%s/ %d, %d\n", + line_no, pat[i], error_no, r); + nfail++; + } + } + onig_regset_free(set); + return r; + } + + r = onig_regset_add(set, reg); + if (r != 0) { + onig_regset_free(set); + fprintf(stderr, "ERROR: %d: onig_regset_add(): /%s/\n", line_no, pat[i]); + nerror++; + return r; + } + } + + *rset = set; + return 0; +} + +static double +get_sec(clock_t start, clock_t end) +{ + double t; + + t = (double )(end - start) / CLOCKS_PER_SEC; + return t; +} + +/* use clock(), because clock_gettime() doesn't exist in Windows and old Unix. */ + +static int +time_test(int repeat, int n, char* ps[], char* s, char* end, double* rt_set, double* rt_reg) +{ + int r; + int i; + int match_pos; + OnigRegSet* set; + clock_t ts1, ts2; + double t_set, t_reg; + + r = make_regset(0, n, ps, &set, 0); + if (r != 0) return r; + + ts1 = clock(); + for (i = 0; i < repeat; i++) { + r = onig_regset_search(set, (UChar* )s, (UChar* )end, (UChar* )s, (UChar* )end, + ONIG_REGSET_POSITION_LEAD, ONIG_OPTION_NONE, &match_pos); + if (r < 0) { + fprintf(stderr, "FAIL onig_regset_search(POSITION_LEAD): %d\n", r); + onig_regset_free(set); + return r; + } + } + + ts2 = clock(); + t_set = get_sec(ts1, ts2); + + ts1 = clock(); + for (i = 0; i < repeat; i++) { + r = onig_regset_search(set, (UChar* )s, (UChar* )end, (UChar* )s, (UChar* )end, + ONIG_REGSET_REGEX_LEAD, ONIG_OPTION_NONE, &match_pos); + if (r < 0) { + fprintf(stderr, "FAIL onig_regset_search(REGEX_LEAD): %d\n", r); + onig_regset_free(set); + return r; + } + } + + ts2 = clock(); + t_reg = get_sec(ts1, ts2); + + onig_regset_free(set); + + *rt_set = t_set; + *rt_reg = t_reg; + return 0; +} + +static void +fisher_yates_shuffle(int n, char* ps[], char* cps[]) +{ +#define GET_RAND(n) (rand()%(n+1)) +#define SWAP(a,b) { char* tmp = a; a = b; b = tmp; } + + int i; + + for (i = 0; i < n; i++) + cps[i] = ps[i]; + + for (i = n - 1; i > 0; i--) { + int x = GET_RAND(i); + SWAP(cps[i], cps[x]); + } +} + +static void +time_compare(int n, char* ps[], char* s, char* end) +{ + int r; + int i; + int repeat; + double t_set, t_reg; + double total_set, total_reg; + char** cps; + + cps = (char** )malloc(sizeof(char*) * n); + if (cps == 0) return ; + + repeat = 100 / n; + total_set = total_reg = 0.0; + for (i = 0; i < n; i++) { + fisher_yates_shuffle(n, ps, cps); + r = time_test(repeat, n, cps, s, end, &t_set, &t_reg); + if (r != 0) { + free(cps); + return ; + } + total_set += t_set; + total_reg += t_reg; + } + + free(cps); + + fprintf(stdout, "POS lead: %6.2lfmsec. REG lead: %6.2lfmsec.\n", + total_set * 1000.0, total_reg * 1000.0); +} + + +static OnigRegSetLead XX_LEAD = ONIG_REGSET_POSITION_LEAD; + +static void +xx(int line_no, int n, char* ps[], char* s, int from, int to, int mem, int not, int error_no) +{ + int r; + int match_pos; + int match_index; + OnigRegSet* set; + char *end; + + r = make_regset(line_no, n, ps, &set, error_no); + if (r != 0) return ; + + end = s + strlen(s); + + r = onig_regset_search(set, (UChar* )s, (UChar* )end, (UChar* )s, (UChar* )end, + XX_LEAD, ONIG_OPTION_NONE, &match_pos); + if (r < 0) { + if (r == ONIG_MISMATCH) { + if (not) { + fprintf(stdout, "OK(N): %d\n", line_no); + nsucc++; + } + else { + fprintf(stdout, "FAIL: %d\n", line_no); + nfail++; + } + } + else { + if (error_no == 0) { + char buf[ONIG_MAX_ERROR_MESSAGE_LEN]; + onig_error_code_to_str((UChar* )buf, r); + fprintf(stderr, "ERROR: %d: %s\n", line_no, buf); + nerror++; + } + else { + if (r == error_no) { + fprintf(stdout, "OK(ERROR): %d: %d\n", line_no, r); + nsucc++; + } + else { + fprintf(stdout, "FAIL ERROR NO: %d: %d, %d\n", line_no, error_no, r); + nfail++; + } + } + } + } + else { + if (not) { + fprintf(stdout, "FAIL(N): %d\n", line_no); + nfail++; + } + else { + OnigRegion* region; + + match_index = r; + region = onig_regset_get_region(set, match_index); + if (region == 0) { + fprintf(stderr, "ERROR: %d: can't get region.\n", line_no); + nerror++; + onig_regset_free(set); + return ; + } + + if (region->beg[mem] == from && region->end[mem] == to) { + fprintf(stdout, "OK: %d\n", line_no); + nsucc++; + } + else { + char buf[1000]; + int len; + len = region->end[mem] - region->beg[mem]; + strncpy(buf, s + region->beg[mem], len); + buf[len] = '\0'; + fprintf(stdout, "FAIL: %d: %d-%d : %d-%d (%s)\n", line_no, + from, to, region->beg[mem], region->end[mem], buf); + nfail++; + } + } + } + + onig_regset_free(set); +} + +static void +x2(int line_no, int n, char* ps[], char* s, int from, int to) +{ + xx(line_no, n, ps, s, from, to, 0, 0, 0); +} + +static void +x3(int line_no, int n, char* ps[], char* s, int from, int to, int mem) +{ + xx(line_no, n, ps, s, from, to, mem, 0, 0); +} + +static void +n(int line_no, int n, char* ps[], char* s) +{ + xx(line_no, n, ps, s, 0, 0, 0, 1, 0); +} + +#define ASIZE(a) sizeof(a)/sizeof(a[0]) +#define X2(ps,s,from,to) x2(__LINE__,ASIZE(ps),ps,s,from,to) +#define X3(ps,s,from,to,mem) x3(__LINE__,ASIZE(ps),ps,s,from,to,mem) +#define N(ps,s) n(__LINE__,ASIZE(ps),ps,s) +#define NZERO(s) n(__LINE__,0,(char** )0,s) + +#ifndef _WIN32 + +/* getdelim() doesn't exist in Windows */ + +static int +get_all_content_of_file(char* path, char** rs, char** rend) +{ + ssize_t len; + size_t n; + char* line; + FILE* fp; + + fp = fopen(path, "r"); + if (fp == 0) return -1; + + n = 0; + line = NULL; + len = getdelim(&line, &n, EOF, fp); + fclose(fp); + if (len < 0) return -2; + + *rs = line; + *rend = line + len; + return 0; +} +#endif + + +#define TEXT_PATH "kofu-utf8.txt" + +/* --- To get kofu.txt --- + $ wget https://www.aozora.gr.jp/cards/000148/files/774_ruby_1640.zip + $ unzip 774_ruby_1640.zip + $ nkf -Lu -w8 kofu.txt > kofu-utf8.txt + (convert encoding to utf-8 with BOM and line terminator to be Unix-form) +*/ + +static char* p1[] = { + "abc", + "(bca)", + "(cab)" +}; + +static char* p2[] = { + "蟆剰ェャ", + "9", + "螟冗岼貍ア遏ウ", +}; + +static char* p3[] = { + "^縺繧九", + "^譬。豁」", + "^蠎墓悽", + "^縲鄙梧律", +}; + +static char* p4[] = { + "縲骸^縲犠{5}縲", + "縲骸^縲犠{6}縲", + "縲骸^縲犠{7}縲", + "縲骸^縲犠{8}縲", + "縲骸^縲犠{9}縲", + "縲骸^縲犠{10}縲", + "縲骸^縲犠{11}縲", + "縲骸^縲犠{12}縲", + "縲骸^縲犠{13}縲", + "縲骸^縲犠{14}縲", + "縲骸^縲犠{15}縲", + "縲骸^縲犠{16}縲", + "縲骸^縲犠{17}縲", + "縲骸^縲犠{18}縲", + "縲骸^縲犠{19}縲", + "縲骸^縲犠{20}縲", +}; + +static char* p5[] = { + "蟆丞ョ、蝨ュ", + "bbbbbb", + "繝峨リ繝ォ繝峨サ繝医Λ繝ウ繝", + "遲第束譖ク謌ソ", + "譚セ蜴", + "aaaaaaaaa", + "bbbbbbbbb", + "ccccc", + "ddddddddddd", + "eee", + "ffffffffffff", + "gggggggggg", + "hhhhhhhhhhhhhh", + "iiiiiii", +}; + +static char* p6[] = { + "^.{1000,}", + "譚セ蜴", + "蟆丞ョ、蝨ュ", + "繝峨リ繝ォ繝峨サ繝医Λ繝ウ繝", + "遲第束譖ク謌ソ", +}; + +static char* p7[] = { + "0+", "1+", "2+", "3+", "4+", "5+", "6+", "7+", "8+", "9+", +}; + +static char* p8[] = {"a", ".*"}; + +extern int +main(int argc, char* argv[]) +{ +#ifndef _WIN32 + int file_exist; +#endif + int r; + char *s, *end; + OnigEncoding use_encs[1]; + + use_encs[0] = ONIG_ENCODING_UTF8; + onig_initialize(use_encs, sizeof(use_encs)/sizeof(use_encs[0])); + + srand(12345); + + XX_LEAD = ONIG_REGSET_POSITION_LEAD; + + NZERO(" abab bccab ca"); + X2(p1, " abab bccab ca", 8, 11); + X3(p1, " abab bccab ca", 8, 11, 1); + N(p2, " XXXX AAA 1223 012345678bbb"); + X2(p2, "0123456789", 9, 10); + X2(p7, "abcde 555 qwert", 6, 9); + X2(p8, "", 0, 0); + + XX_LEAD = ONIG_REGSET_REGEX_LEAD; + + NZERO(" abab bccab ca"); + X2(p1, " abab bccab ca", 8, 11); + X3(p1, " abab bccab ca", 8, 11, 1); + N(p2, " XXXX AAA 1223 012345678bbb"); + X2(p2, "0123456789", 9, 10); + X2(p7, "abcde 555 qwert", 6, 9); + +#ifndef _WIN32 + r = get_all_content_of_file(TEXT_PATH, &s, &end); + if (r == 0) { + fprintf(stdout, "FILE: %s, size: %d\n", TEXT_PATH, (int )(end - s)); + file_exist = 1; + } + else { + fprintf(stdout, "Ignore %s\n", TEXT_PATH); + file_exist = 0; + } + + if (file_exist != 0) { + X2(p2, s, 10, 22); + X2(p3, s, 496079, 496088); + X2(p4, s, 1294, 1315); + } +#endif + + fprintf(stdout, + "\nRESULT SUCC: %4d, FAIL: %d, ERROR: %d (by Oniguruma %s)\n", + nsucc, nfail, nerror, onig_version()); + +#ifndef _WIN32 + if (file_exist != 0) { + fprintf(stdout, "\n"); + time_compare(ASIZE(p2), p2, s, end); + time_compare(ASIZE(p3), p3, s, end); + time_compare(ASIZE(p4), p4, s, end); + time_compare(ASIZE(p5), p5, s, end); + time_compare(ASIZE(p6), p6, s, end); + fprintf(stdout, "\n"); + free(s); + } +#endif + + onig_end(); + + return ((nfail == 0 && nerror == 0) ? 0 : -1); +} diff --git a/vendor/oniguruma/oniguruma/test/test_syntax.c b/vendor/oniguruma/oniguruma/test/test_syntax.c new file mode 100644 index 0000000..4dcecf8 --- /dev/null +++ b/vendor/oniguruma/oniguruma/test/test_syntax.c @@ -0,0 +1,417 @@ +/* + * test_syntax.c + * Copyright (c) 2019-2024 K.Kosako + */ +#ifdef ONIG_ESCAPE_UCHAR_COLLISION +#undef ONIG_ESCAPE_UCHAR_COLLISION +#endif + +#include +#include +#include "oniguruma.h" + +#define SLEN(s) strlen(s) + +static int nsucc = 0; +static int nfail = 0; +static int nerror = 0; + +#ifdef __TRUSTINSOFT_ANALYZER__ +static int nall = 0; +#endif + +static FILE* err_file; + +static OnigRegion* region; + +static OnigSyntaxType* Syntax; + +static void xx(char* pattern, char* str, int from, int to, int mem, int not, + int error_no) +{ +#ifdef __TRUSTINSOFT_ANALYZER__ + if (nall++ % TIS_TEST_CHOOSE_MAX != TIS_TEST_CHOOSE_CURRENT) return; +#endif + + int r; + regex_t* reg; + OnigErrorInfo einfo; + + r = onig_new(®, (UChar* )pattern, (UChar* )(pattern + SLEN(pattern)), + ONIG_OPTION_DEFAULT, ONIG_ENCODING_UTF8, Syntax, &einfo); + if (r) { + char s[ONIG_MAX_ERROR_MESSAGE_LEN]; + + if (error_no == 0) { + onig_error_code_to_str((UChar* )s, r, &einfo); + fprintf(err_file, "ERROR: %s /%s/\n", s, pattern); + nerror++; + } + else { + if (r == error_no) { + fprintf(stdout, "OK(ERROR): /%s/ %d\n", pattern, r); + nsucc++; + } + else { + fprintf(stdout, "FAIL(ERROR): /%s/ '%s', %d, %d\n", pattern, str, + error_no, r); + nfail++; + } + } + + return ; + } + + r = onig_search(reg, (UChar* )str, (UChar* )(str + SLEN(str)), + (UChar* )str, (UChar* )(str + SLEN(str)), + region, ONIG_OPTION_NONE); + if (r < ONIG_MISMATCH || error_no < ONIG_MISMATCH) { + char s[ONIG_MAX_ERROR_MESSAGE_LEN]; + + if (error_no == 0) { + onig_error_code_to_str((UChar* )s, r); + fprintf(err_file, "ERROR: %s /%s/\n", s, pattern); + nerror++; + } + else { + if (r == error_no) { + fprintf(stdout, "OK(ERROR): /%s/ '%s', %d\n", pattern, str, r); + nsucc++; + } + else { + fprintf(stdout, "FAIL ERROR NO: /%s/ '%s', %d, %d\n", pattern, str, + error_no, r); + nfail++; + } + } + + return ; + } + + if (r == ONIG_MISMATCH) { + if (not) { + fprintf(stdout, "OK(N): /%s/ '%s'\n", pattern, str); + nsucc++; + } + else { + fprintf(stdout, "FAIL: /%s/ '%s'\n", pattern, str); + nfail++; + } + } + else { + if (not) { + fprintf(stdout, "FAIL(N): /%s/ '%s'\n", pattern, str); + nfail++; + } + else { + if (region->beg[mem] == from && region->end[mem] == to) { + fprintf(stdout, "OK: /%s/ '%s'\n", pattern, str); + nsucc++; + } + else { + fprintf(stdout, "FAIL: /%s/ '%s' %d-%d : %d-%d\n", pattern, str, + from, to, region->beg[mem], region->end[mem]); + nfail++; + } + } + } + onig_free(reg); +} + +static void x2(char* pattern, char* str, int from, int to) +{ + xx(pattern, str, from, to, 0, 0, 0); +} + +static void x3(char* pattern, char* str, int from, int to, int mem) +{ + xx(pattern, str, from, to, mem, 0, 0); +} + +static void n(char* pattern, char* str) +{ + xx(pattern, str, 0, 0, 0, 1, 0); +} + +static void e(char* pattern, char* str, int error_no) +{ + xx(pattern, str, 0, 0, 0, 0, error_no); +} + +static int test_reluctant_interval() +{ + x2("a{1,3}?", "aaa", 0, 1); + x2("a{3}", "aaa", 0, 3); + x2("a{3}?", "aaa", 0, 3); + n("a{3}?", "aa"); + x2("a{3,3}?", "aaa", 0, 3); + n("a{3,3}?", "aa"); + + return 0; +} + +static int test_possessive_interval() +{ + x2("a{1,3}+", "aaaaaa", 0, 3); + x2("a{3}+", "aaaaaa", 0, 3); + x2("a{3,3}+", "aaaaaa", 0, 3); + + return 0; +} + +static int test_isolated_option() +{ + x2("", "", 0, 0); + x2("^", "", 0, 0); + n("^a", "\na"); + n(".", "\n"); + x2("(?s:.)", "\n", 0, 1); + x2("(?s).", "\n", 0, 1); + x2("(?s)a|.", "\n", 0, 1); + n("(?s:a)|.", "\n"); + x2("b(?s)a|.", "\n", 0, 1); + n("((?s)a)|.", "\n"); + n("b(?:(?s)a)|z|.", "\n"); + n(".|b(?s)a", "\n"); + n(".(?s)", "\n"); + n("(?s)(?-s)a|.", "\n"); + x2("(?s)a|.(?-s)", "\n", 0, 1); + x2("(?s)a|((?-s)).", "\n", 0, 1); + x2("(?s)a|(?:(?-s)).", "\n", 0, 1); // !!! Perl 5.26.1 returns empty match + x2("(?s)a|(?:).", "\n", 0, 1); // !!! Perl 5.26.1 returns empty match + x2("(?s)a|(?:.)", "\n", 0, 1); + x2("(?s)a|(?:a*).", "\n", 0, 1); + n("a|(?:).", "\n"); // !!! Perl 5.26.1 returns empty match + n("a|(?:)(.)", "\n"); + x2("(?s)a|(?:)(.)", "\n", 0, 1); + x2("b(?s)a|(?:)(.)", "\n", 0, 1); + n("b((?s)a)|(?:)(.)", "\n"); + + return 0; +} + +static int test_prec_read() +{ + x2("(?=a).b", "ab", 0, 2); + x2("(?=ab|(.))\\1", "ab", 1, 2); // doesn't backtrack if success once in prec-read + n("(?!(.)z)a\\1", "aa"); // ! Perl 5.26.1 match with "aa" + + return 0; +} + +static int test_look_behind() +{ + x2("(?<=a)b", "ab", 1, 2); + x2("(?<=a|b)c", "abc", 2, 3); + x2("(?<=a|(.))\\1", "abcc", 3, 4); + + // #295 + n("(?abc)", "abc", 0, 3); + x2("(?Pabc)(?P=name)", "abcabc", 0, 6); + x2("(?Pabc){0}(?P>name)", "abc", 0, 3); + x2("(?P[^()]+|\\((?P>expr)\\)){0}(?P>expr)", "((((xyz))))", 0, 11); + x2("\\u0041", "A", 0, 1); + x2("\\U00000041", "A", 0, 1); + e("\\U0041", "A", ONIGERR_INVALID_CODE_POINT_VALUE); + + Syntax = ONIG_SYNTAX_POSIX_BASIC; + test_BRE_anchors(); + + Syntax = ONIG_SYNTAX_GREP; + test_BRE_anchors(); + x2("zz\\|^ab", "ab", 0, 2); + x2("ab$\\|zz", "ab", 0, 2); + x2("*", "*", 0, 1); + x2("^*", "*", 0, 1); + x2("abc\\|?", "?", 0, 1); + x2("\\{1\\}", "{1}", 0, 3); + x2("^\\{1\\}", "{1}", 0, 3); + x2("\\(\\{1\\}\\)", "{1}", 0, 3); + x2("^\\(\\{1\\}\\)", "{1}", 0, 3); + x2("{1}", "{1}", 0, 3); + x2("^{1}", "{1}", 0, 3); + x2("\\({1}\\)", "{1}", 0, 3); + x2("^\\({1}\\)", "{1}", 0, 3); + x2("{1,2}", "{1,2}", 0, 5); + x2("^{1,2}", "{1,2}", 0, 5); + x2("\\({1,2}\\)", "{1,2}", 0, 5); + x2("^\\({1,2}\\)", "{1,2}", 0, 5); + + Syntax = ONIG_SYNTAX_EMACS; + x2("\\(abc\\)", "abc", 0, 3); + x2("\\(?:abc\\)", "abc", 0, 3); + x3("\\(?:abc\\)\\(xyz\\)", "abcxyz", 3, 6, 1); + + Syntax = ONIG_SYNTAX_PERL_NG; + + x2("(?i)test", "test", 0, 4); + x2("(?-i)test", "test", 0, 4); + x2("(?i)test", "TEST", 0, 4); + n("(?-i)test", "teSt"); + x2("(?i)te(?-i)st", "TEst", 0, 4); + n("(?i)te(?-i)st", "TesT"); + + x2("(abc)(?-1)", "abcabc", 0, 6); + x2("(?+1)(abc)", "abcabc", 0, 6); + x2("(abc)(?1)", "abcabc", 0, 6); + + fprintf(stdout, + "\nRESULT SUCC: %4d, FAIL: %d, ERROR: %d (by Oniguruma %s)\n", + nsucc, nfail, nerror, onig_version()); + + onig_region_free(region, 1); + onig_end(); + + return ((nfail == 0 && nerror == 0) ? 0 : -1); +} diff --git a/vendor/oniguruma/oniguruma/test/test_utf8.c b/vendor/oniguruma/oniguruma/test/test_utf8.c new file mode 100644 index 0000000..01c0a5c --- /dev/null +++ b/vendor/oniguruma/oniguruma/test/test_utf8.c @@ -0,0 +1,1775 @@ +/* + * test_utf8.c + * Copyright (c) 2019-2024 K.Kosako + */ +#ifdef ONIG_ESCAPE_UCHAR_COLLISION +#undef ONIG_ESCAPE_UCHAR_COLLISION +#endif +#include + +#include "oniguruma.h" + +#include + +#define SLEN(s) strlen(s) + +static int nsucc = 0; +static int nfail = 0; +static int nerror = 0; + +#ifdef __TRUSTINSOFT_ANALYZER__ +static int nall = 0; +#endif + +static FILE* err_file; + +static OnigRegion* region; + +static void xx(char* pattern, char* str, int from, int to, int mem, int not, + int error_no, int line_no) +{ +#ifdef __TRUSTINSOFT_ANALYZER__ + if (nall++ % TIS_TEST_CHOOSE_MAX != TIS_TEST_CHOOSE_CURRENT) return; +#endif + + int r; + regex_t* reg; + OnigErrorInfo einfo; + + r = onig_new(®, (UChar* )pattern, (UChar* )(pattern + SLEN(pattern)), + ONIG_OPTION_DEFAULT, ONIG_ENCODING_UTF8, ONIG_SYNTAX_DEFAULT, &einfo); + if (r) { + char s[ONIG_MAX_ERROR_MESSAGE_LEN]; + + if (error_no == 0) { + onig_error_code_to_str((UChar* )s, r, &einfo); + fprintf(err_file, "ERROR: %s /%s/ #%d\n", s, pattern, line_no); + nerror++; + } + else { + if (r == error_no) { + fprintf(stdout, "OK(ERROR): /%s/ %d #%d\n", pattern, r, line_no); + nsucc++; + } + else { + fprintf(stdout, "FAIL(ERROR): /%s/ '%s', %d, %d #%d\n", pattern, str, + error_no, r, line_no); + nfail++; + } + } + + return ; + } + + r = onig_search(reg, (UChar* )str, (UChar* )(str + SLEN(str)), + (UChar* )str, (UChar* )(str + SLEN(str)), + region, ONIG_OPTION_NONE); + if (r < ONIG_MISMATCH || error_no < ONIG_MISMATCH) { + char s[ONIG_MAX_ERROR_MESSAGE_LEN]; + + if (error_no == 0) { + onig_error_code_to_str((UChar* )s, r); + fprintf(err_file, "ERROR: %s /%s/ #%d\n", s, pattern, line_no); + nerror++; + } + else { + if (r == error_no) { + fprintf(stdout, "OK(ERROR): /%s/ '%s', %d #%d\n", + pattern, str, r, line_no); + nsucc++; + } + else { + fprintf(stdout, "FAIL ERROR NO: /%s/ '%s', %d, %d #%d\n", + pattern, str, error_no, r, line_no); + nfail++; + } + } + + return ; + } + + if (r == ONIG_MISMATCH) { + if (not) { + fprintf(stdout, "OK(N): /%s/ '%s' #%d\n", pattern, str, line_no); + nsucc++; + } + else { + fprintf(stdout, "FAIL: /%s/ '%s' #%d\n", pattern, str, line_no); + nfail++; + } + } + else { + if (not) { + fprintf(stdout, "FAIL(N): /%s/ '%s' #%d\n", pattern, str, line_no); + nfail++; + } + else { + if (region->beg[mem] == from && region->end[mem] == to) { + fprintf(stdout, "OK: /%s/ '%s' #%d\n", pattern, str, line_no); + nsucc++; + } + else { + fprintf(stdout, "FAIL: /%s/ '%s' %d-%d : %d-%d #%d\n", pattern, str, + from, to, region->beg[mem], region->end[mem], line_no); + nfail++; + } + } + } + onig_free(reg); +} + +static void xx2(char* pattern, char* str, int from, int to, int line_no) +{ + xx(pattern, str, from, to, 0, 0, 0, line_no); +} + +static void xx3(char* pattern, char* str, int from, int to, int mem, int line_no) +{ + xx(pattern, str, from, to, mem, 0, 0, line_no); +} + +static void xn(char* pattern, char* str, int line_no) +{ + xx(pattern, str, 0, 0, 0, 1, 0, line_no); +} + +static void xe(char* pattern, char* str, int error_no, int line_no) +{ + xx(pattern, str, 0, 0, 0, 0, error_no, line_no); +} + +#define x2(p,s,f,t) xx2(p,s,f,t, __LINE__) +#define x3(p,s,f,t,m) xx3(p,s,f,t,m, __LINE__) +#define n(p,s) xn(p,s, __LINE__) +#define e(p,s,en) xe(p,s,en, __LINE__) + +extern int main(int argc, char* argv[]) +{ + OnigEncoding use_encs[1]; + + use_encs[0] = ONIG_ENCODING_UTF8; + onig_initialize(use_encs, sizeof(use_encs)/sizeof(use_encs[0])); + + err_file = stdout; + + region = onig_region_new(); + + x2("", "", 0, 0); + x2("^", "", 0, 0); + x2("^a", "\na", 1, 2); + x2("$", "", 0, 0); + x2("$\\O", "bb\n", 2, 3); + x2("\\G", "", 0, 0); + x2("\\A", "", 0, 0); + x2("\\Z", "", 0, 0); + x2("\\z", "", 0, 0); + x2("^$", "", 0, 0); + x2("\\ca", "\001", 0, 1); + x2("\\C-b", "\002", 0, 1); + x2("\\c\\\\", "\034", 0, 1); + x2("q[\\c\\\\]", "q\034", 0, 2); + x2("", "a", 0, 0); + x2("a", "a", 0, 1); + x2("\\x61", "a", 0, 1); + x2("aa", "aa", 0, 2); + x2("aaa", "aaa", 0, 3); + x2("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 0, 35); + x2("ab", "ab", 0, 2); + x2("b", "ab", 1, 2); + x2("bc", "abc", 1, 3); + x2("(?i:#RET#)", "#INS##RET#", 5, 10); + x2("\\17", "\017", 0, 1); + x2("\\x1f", "\x1f", 0, 1); + x2("a(?#....\\\\JJJJ)b", "ab", 0, 2); + x2("(?x) G (o O(?-x)oO) g L", "GoOoOgLe", 0, 7); + x2(".", "a", 0, 1); + n(".", ""); + x2("..", "ab", 0, 2); + x2("\\w", "e", 0, 1); + n("\\W", "e"); + x2("\\s", " ", 0, 1); + x2("\\S", "b", 0, 1); + x2("\\d", "4", 0, 1); + n("\\D", "4"); + x2("\\b", "z ", 0, 0); + x2("\\b", " z", 1, 1); + x2("\\b", " z ", 2, 2); + x2("\\B", "zz ", 1, 1); + x2("\\B", "z ", 2, 2); + x2("\\B", " z", 0, 0); + x2("[ab]", "b", 0, 1); + n("[ab]", "c"); + x2("[a-z]", "t", 0, 1); + n("[^a]", "a"); + x2("[^a]", "\n", 0, 1); + x2("[]]", "]", 0, 1); + n("[^]]", "]"); + x2("[\\^]+", "0^^1", 1, 3); + x2("[b-]", "b", 0, 1); + x2("[b-]", "-", 0, 1); + x2("[\\w]", "z", 0, 1); + n("[\\w]", " "); + x2("[\\W]", "b$", 1, 2); + x2("[\\d]", "5", 0, 1); + n("[\\d]", "e"); + x2("[\\D]", "t", 0, 1); + n("[\\D]", "3"); + x2("[\\s]", " ", 0, 1); + n("[\\s]", "a"); + x2("[\\S]", "b", 0, 1); + n("[\\S]", " "); + x2("[\\w\\d]", "2", 0, 1); + n("[\\w\\d]", " "); + x2("[[:upper:]]", "B", 0, 1); + x2("[*[:xdigit:]+]", "+", 0, 1); + x2("[*[:xdigit:]+]", "GHIKK-9+*", 6, 7); + x2("[*[:xdigit:]+]", "-@^+", 3, 4); + n("[[:upper]]", "A"); + x2("[[:upper]]", ":", 0, 1); + n("[[:upper:]]", "a"); + x2("[[:^upper:]]", "a", 0, 1); + n("[[:lower:]]", "A"); + x2("[[:^lower:]]", "A", 0, 1); + + // Issue #253 + e("[[:::]", ":[", ONIGERR_PREMATURE_END_OF_CHAR_CLASS); + e("[[:\\]:]", ":]", ONIGERR_PREMATURE_END_OF_CHAR_CLASS); + e("[[:\\[:]", ":[", ONIGERR_PREMATURE_END_OF_CHAR_CLASS); + e("[[:\\]]", ":]", ONIGERR_PREMATURE_END_OF_CHAR_CLASS); + e("[[:u:]]", "", ONIGERR_INVALID_POSIX_BRACKET_TYPE); + e("[[:upp:]]", "", ONIGERR_INVALID_POSIX_BRACKET_TYPE); + e("[[:uppers:]]", "", ONIGERR_INVALID_POSIX_BRACKET_TYPE); + x2("[[:upper\\] :]]", "]", 0, 1); + + x2("[[::]]", ":", 0, 1); + x2("[[:::]]", ":", 0, 1); + x2("[[:\\]:]]*", ":]", 0, 2); + x2("[[:\\[:]]*", ":[", 0, 2); + x2("[[:\\]]]*", ":]", 0, 2); + + x2("[\\044-\\047]", "\046", 0, 1); + x2("[\\x5a-\\x5c]", "\x5b", 0, 1); + x2("[\\x6A-\\x6D]", "\x6c", 0, 1); + n("[\\x6A-\\x6D]", "\x6E"); + n("^[0-9A-F]+ 0+ UNDEF ", "75F 00000000 SECT14A notype () External | _rb_apply"); + x2("[\\[]", "[", 0, 1); + x2("[\\]]", "]", 0, 1); + x2("[&]", "&", 0, 1); + x2("[[ab]]", "b", 0, 1); + x2("[[ab]c]", "c", 0, 1); + n("[[^a]]", "a"); + n("[^[a]]", "a"); + x2("[[ab]&&bc]", "b", 0, 1); + n("[[ab]&&bc]", "a"); + n("[[ab]&&bc]", "c"); + x2("[a-z&&b-y&&c-x]", "w", 0, 1); + n("[^a-z&&b-y&&c-x]", "w"); + x2("[[^a&&a]&&a-z]", "b", 0, 1); + n("[[^a&&a]&&a-z]", "a"); + x2("[[^a-z&&bcdef]&&[^c-g]]", "h", 0, 1); + n("[[^a-z&&bcdef]&&[^c-g]]", "c"); + x2("[^[^abc]&&[^cde]]", "c", 0, 1); + x2("[^[^abc]&&[^cde]]", "e", 0, 1); + n("[^[^abc]&&[^cde]]", "f"); + x2("[a-&&-a]", "-", 0, 1); + n("[a\\-&&\\-a]", "&"); + n("\\wabc", " abc"); + x2("a\\Wbc", "a bc", 0, 4); + x2("a.b.c", "aabbc", 0, 5); + x2(".\\wb\\W..c", "abb bcc", 0, 7); + x2("\\s\\wzzz", " zzzz", 0, 5); + x2("aa.b", "aabb", 0, 4); + n(".a", "ab"); + x2(".a", "aa", 0, 2); + x2("^a", "a", 0, 1); + x2("^a$", "a", 0, 1); + x2("^\\w$", "a", 0, 1); + n("^\\w$", " "); + x2("^\\wab$", "zab", 0, 3); + x2("^\\wabcdef$", "zabcdef", 0, 7); + x2("^\\w...def$", "zabcdef", 0, 7); + x2("\\w\\w\\s\\Waaa\\d", "aa aaa4", 0, 8); + x2("\\A\\Z", "", 0, 0); + x2("\\Axyz", "xyz", 0, 3); + x2("xyz\\Z", "xyz", 0, 3); + x2("xyz\\z", "xyz", 0, 3); + x2("a\\Z", "a", 0, 1); + x2("\\Gaz", "az", 0, 2); + n("\\Gz", "bza"); + n("az\\G", "az"); + n("az\\A", "az"); + n("a\\Az", "az"); + x2("\\^\\$", "^$", 0, 2); + x2("^x?y", "xy", 0, 2); + x2("^(x?y)", "xy", 0, 2); + x2("\\w", "_", 0, 1); + n("\\W", "_"); + x2("(?=z)z", "z", 0, 1); + n("(?=z).", "a"); + x2("(?!z)a", "a", 0, 1); + n("(?!z)a", "z"); + x2("(?i:a)", "a", 0, 1); + x2("(?i:a)", "A", 0, 1); + x2("(?i:A)", "a", 0, 1); + x2("(?i:i)", "I", 0, 1); + x2("(?i:I)", "i", 0, 1); + x2("(?i:[A-Z])", "i", 0, 1); + x2("(?i:[a-z])", "I", 0, 1); + n("(?i:A)", "b"); + x2("(?i:ss)", "ss", 0, 2); + x2("(?i:ss)", "Ss", 0, 2); + x2("(?i:ss)", "SS", 0, 2); + /* 0xc5,0xbf == 017F: # LATIN SMALL LETTER LONG S */ + x2("(?i:ss)", "\xc5\xbfS", 0, 3); + x2("(?i:ss)", "s\xc5\xbf", 0, 3); + /* 0xc3,0x9f == 00DF: # LATIN SMALL LETTER SHARP S */ + x2("(?i:ss)", "\xc3\x9f", 0, 2); + /* 0xe1,0xba,0x9e == 1E9E # LATIN CAPITAL LETTER SHARP S */ + x2("(?i:ss)", "\xe1\xba\x9e", 0, 3); + x2("(?i:xssy)", "xssy", 0, 4); + x2("(?i:xssy)", "xSsy", 0, 4); + x2("(?i:xssy)", "xSSy", 0, 4); + x2("(?i:xssy)", "x\xc5\xbfSy", 0, 5); + x2("(?i:xssy)", "xs\xc5\xbfy", 0, 5); + x2("(?i:xssy)", "x\xc3\x9fy", 0, 4); + x2("(?i:xssy)", "x\xe1\xba\x9ey", 0, 5); + x2("(?i:x\xc3\x9fy)", "xssy", 0, 4); + x2("(?i:x\xc3\x9fy)", "xSSy", 0, 4); + x2("(?i:\xc3\x9f)", "ss", 0, 2); + x2("(?i:\xc3\x9f)", "SS", 0, 2); + x2("(?i:[\xc3\x9f])", "ss", 0, 2); + x2("(?i:[\xc3\x9f])", "SS", 0, 2); + x2("(?i)(?a|abd)c", "abdc"); + x2("(?>abd|a)c", "abdc", 0, 4); + x2("a?|b", "a", 0, 1); + x2("a?|b", "b", 0, 0); + x2("a?|b", "", 0, 0); + x2("a*|b", "aa", 0, 2); + x2("a*|b*", "ba", 0, 0); + x2("a*|b*", "ab", 0, 1); + x2("a+|b*", "", 0, 0); + x2("a+|b*", "bbb", 0, 3); + x2("a+|b*", "abbb", 0, 1); + n("a+|b+", ""); + x2("(a|b)?", "b", 0, 1); + x2("(a|b)*", "ba", 0, 2); + x2("(a|b)+", "bab", 0, 3); + x2("(ab|ca)+", "caabbc", 0, 4); + x2("(ab|ca)+", "aabca", 1, 5); + x2("(ab|ca)+", "abzca", 0, 2); + x2("(a|bab)+", "ababa", 0, 5); + x2("(a|bab)+", "ba", 1, 2); + x2("(a|bab)+", "baaaba", 1, 4); + x2("(?:a|b)(?:a|b)", "ab", 0, 2); + x2("(?:a*|b*)(?:a*|b*)", "aaabbb", 0, 3); + x2("(?:a*|b*)(?:a+|b+)", "aaabbb", 0, 6); + x2("(?:a+|b+){2}", "aaabbb", 0, 6); + x2("h{0,}", "hhhh", 0, 4); + x2("(?:a+|b+){1,2}", "aaabbb", 0, 6); + n("ax{2}*a", "0axxxa1"); + n("a.{0,2}a", "0aXXXa0"); + n("a.{0,2}?a", "0aXXXa0"); + n("a.{0,2}?a", "0aXXXXa0"); + x2("^a{2,}?a$", "aaa", 0, 3); + x2("^[a-z]{2,}?$", "aaa", 0, 3); + x2("(?:a+|\\Ab*)cc", "cc", 0, 2); + n("(?:a+|\\Ab*)cc", "abcc"); + x2("(?:^a+|b+)*c", "aabbbabc", 6, 8); + x2("(?:^a+|b+)*c", "aabbbbc", 0, 7); + x2("a|(?i)c", "C", 0, 1); + x2("(?i)c|a", "C", 0, 1); + x2("(?i)c|a", "A", 0, 1); + x2("a(?i)b|c", "aB", 0, 2); + x2("a(?i)b|c", "aC", 0, 2); + n("a(?i)b|c", "AC"); + n("a(?:(?i)b)|c", "aC"); + x2("(?i:c)|a", "C", 0, 1); + n("(?i:c)|a", "A"); + x2("[abc]?", "abc", 0, 1); + x2("[abc]*", "abc", 0, 3); + x2("[^abc]*", "abc", 0, 0); + n("[^abc]+", "abc"); + x2("a?\?", "aaa", 0, 0); + x2("ba?\?b", "bab", 0, 3); + x2("a*?", "aaa", 0, 0); + x2("ba*?", "baa", 0, 1); + x2("ba*?b", "baab", 0, 4); + x2("a+?", "aaa", 0, 1); + x2("ba+?", "baa", 0, 2); + x2("ba+?b", "baab", 0, 4); + x2("(?:a?)?\?", "a", 0, 0); + x2("(?:a?\?)?", "a", 0, 0); + x2("(?:a?)+?", "aaa", 0, 1); + x2("(?:a+)?\?", "aaa", 0, 0); + x2("(?:a+)?\?b", "aaab", 0, 4); + x2("(?:ab)?{2}", "", 0, 0); + x2("(?:ab)?{2}", "ababa", 0, 4); + x2("(?:ab)*{0}", "ababa", 0, 0); + x2("(?:ab){3,}", "abababab", 0, 8); + n("(?:ab){3,}", "abab"); + x2("(?:ab){2,4}", "ababab", 0, 6); + x2("(?:ab){2,4}", "ababababab", 0, 8); + x2("(?:ab){2,4}?", "ababababab", 0, 4); + x2("(?:ab){,}", "ab{,}", 0, 5); + x2("(?:abc)+?{2}", "abcabcabc", 0, 6); + x2("(?:X*)(?i:xa)", "XXXa", 0, 4); + x2("(d+)([^abc]z)", "dddz", 0, 4); + x2("([^abc]*)([^abc]z)", "dddz", 0, 4); + x2("(\\w+)(\\wz)", "dddz", 0, 4); + x3("(a)", "a", 0, 1, 1); + x3("(ab)", "ab", 0, 2, 1); + x2("((ab))", "ab", 0, 2); + x3("((ab))", "ab", 0, 2, 1); + x3("((ab))", "ab", 0, 2, 2); + x3("((((((((((((((((((((ab))))))))))))))))))))", "ab", 0, 2, 20); + x3("(ab)(cd)", "abcd", 0, 2, 1); + x3("(ab)(cd)", "abcd", 2, 4, 2); + x3("()(a)bc(def)ghijk", "abcdefghijk", 3, 6, 3); + x3("(()(a)bc(def)ghijk)", "abcdefghijk", 3, 6, 4); + x2("(^a)", "a", 0, 1); + x3("(a)|(a)", "ba", 1, 2, 1); + x3("(^a)|(a)", "ba", 1, 2, 2); + x3("(a?)", "aaa", 0, 1, 1); + x3("(a*)", "aaa", 0, 3, 1); + x3("(a*)", "", 0, 0, 1); + x3("(a+)", "aaaaaaa", 0, 7, 1); + x3("(a+|b*)", "bbbaa", 0, 3, 1); + x3("(a+|b?)", "bbbaa", 0, 1, 1); + x3("(abc)?", "abc", 0, 3, 1); + x3("(abc)*", "abc", 0, 3, 1); + x3("(abc)+", "abc", 0, 3, 1); + x3("(xyz|abc)+", "abc", 0, 3, 1); + x3("([xyz][abc]|abc)+", "abc", 0, 3, 1); + x3("((?i:abc))", "AbC", 0, 3, 1); + x2("(abc)(?i:\\1)", "abcABC", 0, 6); + x3("((?m:a.c))", "a\nc", 0, 3, 1); + x3("((?=az)a)", "azb", 0, 1, 1); + x3("abc|(.abd)", "zabd", 0, 4, 1); + x2("(?:abc)|(ABC)", "abc", 0, 3); + x3("(?i:(abc))|(zzz)", "ABC", 0, 3, 1); + x3("a*(.)", "aaaaz", 4, 5, 1); + x3("a*?(.)", "aaaaz", 0, 1, 1); + x3("a*?(c)", "aaaac", 4, 5, 1); + x3("[bcd]a*(.)", "caaaaz", 5, 6, 1); + x3("(\\Abb)cc", "bbcc", 0, 2, 1); + n("(\\Abb)cc", "zbbcc"); + x3("(^bb)cc", "bbcc", 0, 2, 1); + n("(^bb)cc", "zbbcc"); + x3("cc(bb$)", "ccbb", 2, 4, 1); + n("cc(bb$)", "ccbbb"); + n("(\\1)", ""); + n("\\1(a)", "aa"); + n("(a(b)\\1)\\2+", "ababb"); + n("(?:(?:\\1|z)(a))+$", "zaa"); + x2("(?:(?:\\1|z)(a))+$", "zaaa", 0, 4); + x2("(a)(?=\\1)", "aa", 0, 1); + n("(a)$|\\1", "az"); + x2("(a)\\1", "aa", 0, 2); + n("(a)\\1", "ab"); + x2("(a?)\\1", "aa", 0, 2); + x2("(a?\?)\\1", "aa", 0, 0); + x2("(a*)\\1", "aaaaa", 0, 4); + x3("(a*)\\1", "aaaaa", 0, 2, 1); + x2("a(b*)\\1", "abbbb", 0, 5); + x2("a(b*)\\1", "ab", 0, 1); + x2("(a*)(b*)\\1\\2", "aaabbaaabb", 0, 10); + x2("(a*)(b*)\\2", "aaabbbb", 0, 7); + x2("(((((((a*)b))))))c\\7", "aaabcaaa", 0, 8); + x3("(((((((a*)b))))))c\\7", "aaabcaaa", 0, 3, 7); + x2("(a)(b)(c)\\2\\1\\3", "abcbac", 0, 6); + x2("([a-d])\\1", "cc", 0, 2); + x2("(\\w\\d\\s)\\1", "f5 f5 ", 0, 6); + n("(\\w\\d\\s)\\1", "f5 f5"); + x2("(who|[a-c]{3})\\1", "whowho", 0, 6); + x2("...(who|[a-c]{3})\\1", "abcwhowho", 0, 9); + x2("(who|[a-c]{3})\\1", "cbccbc", 0, 6); + x2("(^a)\\1", "aa", 0, 2); + n("(^a)\\1", "baa"); + n("(a$)\\1", "aa"); + n("(ab\\Z)\\1", "ab"); + x2("(a*\\Z)\\1", "a", 1, 1); + x2(".(a*\\Z)\\1", "ba", 1, 2); + x3("(.(abc)\\2)", "zabcabc", 0, 7, 1); + x3("(.(..\\d.)\\2)", "z12341234", 0, 9, 1); + x2("((?i:az))\\1", "AzAz", 0, 4); + n("((?i:az))\\1", "Azaz"); + x2("(?<=a)b", "ab", 1, 2); + n("(?<=a)b", "bb"); + x2("(?<=a|b)b", "bb", 1, 2); + x2("(?<=a|bc)b", "bcb", 2, 3); + x2("(?<=a|bc)b", "ab", 1, 2); + x2("(?<=a|bc||defghij|klmnopq|r)z", "rz", 1, 2); + x3("(?<=(abc))d", "abcd", 0, 3, 1); + x2("(?<=(?i:abc))d", "ABCd", 3, 4); + x2("(?<=^|b)c", " cbc", 3, 4); + x2("(?<=a|^|b)c", " cbc", 3, 4); + x2("(?<=a|(^)|b)c", " cbc", 3, 4); + x2("(?<=a|(^)|b)c", "cbc", 0, 1); + n("(Q)|(?<=a|(?(1))|b)c", "czc"); + x2("(Q)(?<=a|(?(1))|b)c", "cQc", 1, 3); + x2("(?<=a|(?~END)|b)c", "ENDc", 3, 4); + n("(?", "aa", 0, 2); + x2("(?a)", "a", 0, 1); + x2("(?ab)\\g", "abab", 0, 4); + x2("(?.zv.)\\k", "azvbazvb", 0, 8); + x2("(?<=\\g)|-\\zEND (?XyZ)", "XyZ", 3, 3); + x2("(?|a\\g)+", "", 0, 0); + x2("(?|\\(\\g\\))+$", "()(())", 0, 6); + x3("\\g(?.){0}", "X", 0, 1, 1); + x2("\\g(abc|df(?.YZ){2,8}){0}", "XYZ", 0, 3); + x2("\\A(?(a\\g)|)\\z", "aaaa", 0, 4); + x2("(?|\\g\\g)\\z|\\zEND (?a|(b)\\g)", "bbbbabba", 0, 8); + x2("(?\\w+\\sx)a+\\k", " fg xaaaaaaaafg x", 2, 18); + x3("(z)()()(?<_9>a)\\g<_9>", "zaa", 2, 3, 1); + x2("(.)(((?<_>a)))\\k<_>", "zaa", 0, 3); + x2("((?\\d)|(?\\w))(\\k|\\k)", "ff", 0, 2); + x2("(?:(?)|(?efg))\\k", "", 0, 0); + x2("(?:(?abc)|(?efg))\\k", "abcefgefg", 3, 9); + n("(?:(?abc)|(?efg))\\k", "abcefg"); + x2("(?x)(?xx)\\k", "xxxx", 0, 4); + x2("(?x)(?xx)\\k", "xxxxz", 0, 4); + x2("(?:(?.)|(?..)|(?...)|(?....)|(?.....)|(?......)|(?.......)|(?........)|(?.........)|(?..........)|(?...........)|(?............)|(?.............)|(?..............))\\k$", "a-pyumpyum", 2, 10); + x3("(?:(?.)|(?..)|(?...)|(?....)|(?.....)|(?......)|(?.......)|(?........)|(?.........)|(?..........)|(?...........)|(?............)|(?.............)|(?..............))\\k$", "xxxxabcdefghijklmnabcdefghijklmn", 4, 18, 14); + x3("(?)(?)(?)(?)(?)(?)(?)(?)(?)(?)(?)(?)(?)(?)(?)(?aaa)(?)$", "aaa", 0, 3, 16); + x2("(?a|\\(\\g\\))", "a", 0, 1); + x2("(?a|\\(\\g\\))", "((((((a))))))", 0, 13); + x3("(?a|\\(\\g\\))", "((((((((a))))))))", 0, 17, 1); + x2("\\g|\\zEND(?.*abc$)", "abcxxxabc", 0, 9); + x2("\\g<1>|\\zEND(.a.)", "bac", 0, 3); + x3("\\g<_A>\\g<_A>|\\zEND(.a.)(?<_A>.b.)", "xbxyby", 3, 6, 1); + x2("\\A(?:\\g|\\g|\\zEND (?a|c\\gc)(?b|d\\gd))$", "cdcbcdc", 0, 7); + x2("\\A(?|a\\g)\\z|\\zEND (?\\g)", "aaaa", 0, 4); + x2("(?(a|b\\gc){3,5})", "baaaaca", 1, 5); + x2("(?(a|b\\gc){3,5})", "baaaacaaaaa", 0, 10); + x2("(?\\(([^\\(\\)]++|\\g)*+\\))", "((a))", 0, 5); + x2("()*\\1", "", 0, 0); + x2("(?:()|())*\\1\\2", "", 0, 0); + x2("(?:a*|b*)*c", "abadc", 4, 5); + x3("(?:\\1a|())*", "a", 0, 0, 1); + x2("x((.)*)*x", "0x1x2x3", 1, 6); + x2("x((.)*)*x(?i:\\1)\\Z", "0x1x2x1X2", 1, 9); + x2("(?:()|()|()|()|()|())*\\2\\5", "", 0, 0); + x2("(?:()|()|()|(x)|()|())*\\2b\\5", "b", 0, 1); + x2("[0-9-a]", "-", 0, 1); // PR#44 + n("[0-9-a]", ":"); // PR#44 + x3("(\\(((?:[^(]|\\g<1>)*)\\))", "(abc)(abc)", 1, 4, 2); // PR#43 + x2("\\o{101}", "A", 0, 1); + x2("\\A(a|b\\g<1>c)\\k<1+3>\\z", "bbacca", 0, 6); + n("\\A(a|b\\g<1>c)\\k<1+3>\\z", "bbaccb"); + x2("(?i)\\A(a|b\\g<1>c)\\k<1+2>\\z", "bBACcbac", 0, 8); + x2("(?i)(?aa)|(?bb)\\k", "BBbb", 0, 4); + x2("(?:\\k'+1'B|(A)C)*", "ACAB", 0, 4); // relative backref by positive number + x2("\\g<+2>(abc)(ABC){0}", "ABCabc", 0, 6); // relative call by positive number + x2("A\\g'0'|B()", "AAAAB", 0, 5); + x3("(A\\g'0')|B", "AAAAB", 0, 5, 1); + x2("(a*)(?(1))aa", "aaaaa", 0, 5); + x2("(a*)(?(-1))aa", "aaaaa", 0, 5); + x2("(?aaa)(?('name'))aa", "aaaaa", 0, 5); + x2("(a)(?(1)aa|bb)a", "aaaaa", 0, 4); + x2("(?:aa|())(?(<1>)aa|bb)a", "aabba", 0, 5); + x2("(?:aa|())(?('1')aa|bb|cc)a", "aacca", 0, 5); + x3("(a*)(?(1)aa|a)b", "aaab", 0, 1, 1); + n("(a)(?(1)a|b)c", "abc"); + x2("(a)(?(1)|)c", "ac", 0, 2); + n("(?()aaa|bbb)", "bbb"); + x2("(a)(?(1+0)b|c)d", "abd", 0, 3); + x2("(?:(?'name'a)|(?'name'b))(?('name')c|d)e", "ace", 0, 3); + x2("(?:(?'name'a)|(?'name'b))(?('name')c|d)e", "bce", 0, 3); + x2("\\R", "\r\n", 0, 2); + x2("\\R", "\r", 0, 1); + x2("\\R", "\n", 0, 1); + x2("\\R", "\x0b", 0, 1); + n("\\R\\n", "\r\n"); + x2("\\R", "\xc2\x85", 0, 2); + x2("\\N", "a", 0, 1); + n("\\N", "\n"); + n("(?m:\\N)", "\n"); + n("(?-m:\\N)", "\n"); + x2("\\O", "a", 0, 1); + x2("\\O", "\n", 0, 1); + x2("(?m:\\O)", "\n", 0, 1); + x2("(?-m:\\O)", "\n", 0, 1); + x2("\\K", "a", 0, 0); + x2("a\\K", "a", 1, 1); + x2("a\\Kb", "ab", 1, 2); + x2("(a\\Kb|ac\\Kd)", "acd", 2, 3); + x2("(a\\Kb|\\Kac\\K)*", "acababacab", 9, 10); + x2("(?:()|())*\\1", "abc", 0, 0); + x2("(?:()|())*\\2", "abc", 0, 0); + x2("(?:()|()|())*\\3\\1", "abc", 0, 0); + x2("(|(?:a(?:\\g'1')*))b|", "abc", 0, 2); + x2("^(\"|)(.*)\\1$", "XX", 0, 2); + x2("(abc|def|ghi|jkl|mno|pqr|stu){0,10}?\\z", "admno", 2, 5); + x2("(abc|(def|ghi|jkl|mno|pqr){0,7}?){5}\\z", "adpqrpqrpqr", 2, 11); // cover OP_REPEAT_INC_NG_SG + x2("(?!abc).*\\z", "abcde", 1, 5); // cover OP_PREC_READ_NOT_END + x2("(.{2,})?", "abcde", 0, 5); // up coverage + x2("((a|b|c|d|e|f|g|h|i|j|k|l|m|n)+)?", "abcde", 0, 5); // up coverage + x2("((a|b|c|d|e|f|g|h|i|j|k|l|m|n){3,})?", "abcde", 0, 5); // up coverage + x2("((?:a(?:b|c|d|e|f|g|h|i|j|k|l|m|n))+)?", "abacadae", 0, 8); // up coverage + x2("((?:a(?:b|c|d|e|f|g|h|i|j|k|l|m|n))+?)?z", "abacadaez", 0, 9); // up coverage + x2("\\A((a|b)\?\?)?z", "bz", 0, 2); // up coverage + x2("((?abc){0}a\\gd)+", "aabcd", 0, 5); // up coverage + x2("((?(abc)true|false))+", "false", 0, 5); // up coverage + x2("((?i:abc)d)+", "abcdABCd", 0, 8); // up coverage + x2("((?ab)(?()a|b)", "aba", 0, 3); // up coverage + x2("(?<=a.b)c", "azbc", 3, 4); // up coverage + n("(?<=(?:abcde){30})z", "abc"); // up coverage + x2("(?<=(?(a)a|bb))z", "aaz", 2, 3); // up coverage + x2("[a]*\\W", "aa@", 0, 3); // up coverage + x2("[a]*[b]", "aab", 0, 3); // up coverage + n("a*\\W", "aaa"); // up coverage + n("(?W)a*\\W", "aaa"); // up coverage + x2("(?<=ab(?<=ab))", "ab", 2, 2); // up coverage + x2("(?a)(?b)(\\k)+", "abbaab", 0, 6); // up coverage + x2("()(\\1)(\\2)", "abc", 0, 0); // up coverage + x2("((?(a)b|c))(\\1)", "abab", 0, 4); // up coverage + x2("(?$|b\\g)", "bbb", 0, 3); // up coverage + x2("(?(?(a)a|b)|c\\g)", "cccb", 0, 4); // up coverage + x2("(a)(?(1)a*|b*)+", "aaaa", 0, 4); // up coverage + x2("[[^abc]&&cde]*", "de", 0, 2); // up coverage + n("(a){10}{10}", "aa"); // up coverage + x2("(?:a?)+", "aa", 0, 2); // up coverage + x2("(?:a?)*?", "a", 0, 0); // up coverage + x2("(?:a*)*?", "a", 0, 0); // up coverage + x2("(?:a+?)*", "a", 0, 1); // up coverage + x2("\\h", "5", 0, 1); // up coverage + x2("\\H", "z", 0, 1); // up coverage + x2("[\\h]", "5", 0, 1); // up coverage + x2("[\\H]", "z", 0, 1); // up coverage + x2("[\\o{101}]", "A", 0, 1); // up coverage + x2("[\\u0041]", "A", 0, 1); // up coverage + + x2("(?~)", "", 0, 0); + x2("(?~)", "A", 0, 0); + x2("(?~ab)", "abc", 0, 0); + x2("(?~abc)", "abc", 0, 0); + x2("(?~abc|ab)", "abc", 0, 0); + x2("(?~ab|abc)", "abc", 0, 0); + x2("(?~a.c)", "abc", 0, 0); + x2("(?~a.c|ab)", "abc", 0, 0); + x2("(?~ab|a.c)", "abc", 0, 0); + x2("aaaaa(?~)", "aaaaaaaaaa", 0, 5); + x2("(?~(?:|aaa))", "aaa", 0, 0); + x2("(?~aaa|)", "aaa", 0, 0); + x2("a(?~(?~)).", "abcdefghijklmnopqrstuvwxyz", 0, 26); // nested absent functions cause strange result + x2("/\\*(?~\\*/)\\*/", "/* */ */", 0, 5); + x2("(?~\\w+)zzzzz", "zzzzz", 0, 5); + x2("(?~\\w*)zzzzz", "zzzzz", 0, 5); + x2("(?~A.C|B)", "ABC", 0, 0); + x2("(?~XYZ|ABC)a", "ABCa", 1, 4); + x2("(?~XYZ|ABC)a", "aABCa", 0, 1); + x2("<[^>]*>(?~[<>])]*>", "vvv ", 0, 10); + x2("(?~ab)", "ccc\ndab", 0, 5); + x2("(?m:(?~ab))", "ccc\ndab", 0, 5); + x2("(?-m:(?~ab))", "ccc\ndab", 0, 5); + x2("(?~abc)xyz", "xyz012345678901234567890123456789abc", 0, 3); + + // absent with expr + x2("(?~|78|\\d*)", "123456789", 0, 6); + x2("(?~|def|(?:abc|de|f){0,100})", "abcdedeabcfdefabc", 0, 11); + x2("(?~|ab|.*)", "ccc\nddd", 0, 3); + x2("(?~|ab|\\O*)", "ccc\ndab", 0, 5); + x2("(?~|ab|\\O{2,10})", "ccc\ndab", 0, 5); + x2("(?~|ab|\\O{1,10})", "ab", 1, 2); + n("(?~|ab|\\O{2,10})", "ab"); + x2("(?~|abc|\\O{1,10})", "abc", 1, 3); + x2("(?~|ab|\\O{5,10})|abc", "abc", 0, 3); + x2("(?~|ab|\\O{1,10})", "cccccccccccab", 0, 10); + x2("(?~|aaa|)", "aaa", 0, 0); + x2("(?~||a*)", "aaaaaa", 0, 0); + x2("(?~||a*?)", "aaaaaa", 0, 0); + x2("(a)(?~|b|\\1)", "aaaaaa", 0, 2); + x2("(a)(?~|bb|(?:a\\1)*)", "aaaaaa", 0, 5); + x2("(b|c)(?~|abac|(?:a\\1)*)", "abababacabab", 1, 4); + n("(?~|c|a*+)a", "aaaaa"); + x2("(?~|aaaaa|a*+)", "aaaaa", 0, 0); + x2("(?~|aaaaaa|a*+)b", "aaaaaab", 1, 7); + x2("(?~|abcd|(?>))", "zzzabcd", 0, 0); + x2("(?~|abc|a*?)", "aaaabc", 0, 0); + + // absent range cutter + x2("(?~|abc)a*", "aaaaaabc", 0, 5); + x2("(?~|abc)a*z|aaaaaabc", "aaaaaabc", 0, 8); + x2("(?~|aaaaaa)a*", "aaaaaa", 0, 0); + x2("(?~|abc)aaaa|aaaabc", "aaaabc", 0, 6); + x2("(?>(?~|abc))aaaa|aaaabc", "aaaabc", 0, 6); + x2("(?~|)a", "a", 0, 1); + n("(?~|a)a", "a"); + x2("(?~|a)(?~|)a", "a", 0, 1); + x2("(?~|a).*(?~|)a", "bbbbbbbbbbbbbbbbbbbba", 0, 21); + x2("(?~|abc).*(xyz|pqr)(?~|)abc", "aaaaxyzaaapqrabc", 0, 16); + x2("(?~|abc).*(xyz|pqr)(?~|)abc", "aaaaxyzaaaabcpqrabc", 11, 19); + n("\\A(?~|abc).*(xyz|pqrabc)(?~|)abc", "aaaaxyzaaaabcpqrabcabc"); + + x2("", "縺", 0, 0); + x2("縺", "縺", 0, 3); + n("縺", "縺"); + x2("縺縺", "縺縺", 0, 6); + x2("縺ゅ>縺", "縺ゅ>縺", 0, 9); + x2("縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺", "縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺薙%縺", 0, 105); + x2("縺", "縺縺", 3, 6); + x2("縺縺", "縺ゅ>縺", 3, 9); + x2("\\xca\\xb8", "\xca\xb8", 0, 2); + x2(".", "縺", 0, 3); + x2("..", "縺九″", 0, 6); + x2("\\w", "縺", 0, 3); + n("\\W", "縺"); + x2("[\\W]", "縺$", 3, 4); + x2("\\S", "縺", 0, 3); + x2("\\S", "貍「", 0, 3); + x2("\\b", "豌 ", 0, 0); + x2("\\b", " 縺サ", 1, 1); + x2("\\B", "縺帙◎ ", 3, 3); + x2("\\B", "縺 ", 4, 4); + x2("\\B", " 縺", 0, 0); + x2("[縺溘■]", "縺。", 0, 3); + n("[縺ェ縺ォ]", "縺ャ"); + x2("[縺-縺馨", "縺", 0, 3); + n("[^縺曽", "縺"); + x2("[\\w]", "縺ュ", 0, 3); + n("[\\d]", "縺オ"); + x2("[\\D]", "縺ッ", 0, 3); + n("[\\s]", "縺"); + x2("[\\S]", "縺ク", 0, 3); + x2("[\\w\\d]", "繧", 0, 3); + x2("[\\w\\d]", " 繧", 3, 6); + n("\\w鬯シ霆", " 鬯シ霆"); + x2("鬯シ\\W霆", "鬯シ 霆", 0, 7); + x2("縺.縺.縺", "縺ゅ≠縺縺縺", 0, 15); + x2(".\\w縺\\W..縺", "縺医≧縺 縺縺槭◇", 0, 19); + x2("\\s\\w縺薙%縺", " 縺薙%縺薙%", 0, 13); + x2("縺ゅ≠.縺", "縺ゅ≠縺代¢", 0, 12); + n(".縺", "縺縺"); + x2(".縺", "縺翫♀", 0, 6); + x2("^縺", "縺", 0, 3); + x2("^繧$", "繧", 0, 3); + x2("^\\w$", "縺ォ", 0, 3); + x2("^\\w縺九″縺上¢縺$", "z縺九″縺上¢縺", 0, 16); + x2("^\\w...縺縺医♀$", "z縺ゅ>縺縺縺医♀", 0, 19); + x2("\\w\\w\\s\\W縺翫♀縺浬\d", "a縺 縺翫♀縺4", 0, 16); + x2("\\A縺溘■縺、", "縺溘■縺、", 0, 9); + x2("繧繧√b\\Z", "繧繧√b", 0, 9); + x2("縺九″縺十\z", "縺九″縺", 0, 9); + x2("縺九″縺十\Z", "縺九″縺十n", 0, 9); + x2("\\G縺ス縺エ", "縺ス縺エ", 0, 6); + n("\\G縺", "縺縺医♀"); + n("縺ィ縺ヲ\\G", "縺ィ縺ヲ"); + n("縺セ縺ソ\\A", "縺セ縺ソ"); + n("縺セ\\A縺ソ", "縺セ縺ソ"); + x2("(?=縺)縺", "縺", 0, 3); + n("(?=縺).", "縺"); + x2("(?!縺)縺", "縺", 0, 3); + n("(?!縺ィ)縺", "縺ィ"); + x2("(?i:縺)", "縺", 0, 3); + x2("(?i:縺カ縺ケ)", "縺カ縺ケ", 0, 6); + n("(?i:縺)", "縺"); + x2("(?m:繧.)", "繧\n", 0, 4); + x2("(?m:.繧)", "縺セ\n繧", 3, 7); + x2("縺?", "", 0, 0); + x2("螟?", "蛹", 0, 0); + x2("螟?", "螟", 0, 3); + x2("驥*", "", 0, 0); + x2("驥*", "驥", 0, 3); + x2("蟄*", "蟄仙ュ仙ュ", 0, 9); + x2("鬥ャ*", "鮖ソ鬥ャ鬥ャ鬥ャ鬥ャ", 0, 0); + n("螻ア+", ""); + x2("豐ウ+", "豐ウ", 0, 3); + x2("譎+", "譎よ凾譎よ凾", 0, 12); + x2("縺+", "縺医∴縺縺縺", 0, 6); + x2("縺+", "縺翫≧縺縺縺", 3, 15); + x2(".?", "縺", 0, 3); + x2(".*", "縺ア縺エ縺キ縺コ", 0, 12); + x2(".+", "繧", 0, 3); + x2(".+", "縺縺縺医°\n", 0, 12); + x2("縺|縺", "縺", 0, 3); + x2("縺|縺", "縺", 0, 3); + x2("縺ゅ>|縺縺", "縺ゅ>", 0, 6); + x2("縺ゅ>|縺縺", "縺縺", 0, 6); + x2("繧(?:縺九″|縺阪¥)", "繧偵°縺", 0, 9); + x2("繧(?:縺九″|縺阪¥)縺", "繧偵″縺上¢", 0, 12); + x2("縺ゅ>|(?:縺ゅ≧|縺ゅr)", "縺ゅr", 0, 6); + x2("縺|縺л縺", "縺医≧", 3, 6); + x2("縺|縺л縺縺|縺翫°縺鋼縺楯縺代%縺怖縺励☆縺斈縺掟縺溘■|縺、縺ヲ縺ィ縺ェ縺ォ|縺ャ縺ュ", "縺励☆縺", 0, 9); + n("縺|縺л縺縺|縺翫°縺鋼縺楯縺代%縺怖縺励☆縺斈縺掟縺溘■|縺、縺ヲ縺ィ縺ェ縺ォ|縺ャ縺ュ", "縺吶○"); + x2("縺|^繧", "縺カ縺", 3, 6); + x2("縺|^繧", "繧偵≠", 0, 3); + x2("鬯シ|\\G霆", "縺題サ企ャシ", 6, 9); + x2("鬯シ|\\G霆", "霆企ャシ", 0, 3); + x2("鬯シ|\\A霆", "b霆企ャシ", 4, 7); + x2("鬯シ|\\A霆", "霆", 0, 3); + x2("鬯シ|霆浬\Z", "霆企ャシ", 3, 6); + x2("鬯シ|霆浬\Z", "霆", 0, 3); + x2("鬯シ|霆浬\Z", "霆浬n", 0, 3); + x2("鬯シ|霆浬\z", "霆企ャシ", 3, 6); + x2("鬯シ|霆浬\z", "霆", 0, 3); + x2("\\w|\\s", "縺", 0, 3); + x2("\\w|%", "%縺", 0, 1); + x2("\\w|[&$]", "縺&", 0, 3); + x2("[縺-縺曽", "縺", 0, 3); + x2("[縺-縺曽|[^縺-縺転", "縺", 0, 3); + x2("[縺-縺曽|[^縺-縺転", "縺", 0, 3); + x2("[^縺]", "\n", 0, 1); + x2("(?:縺|[縺-縺江)|縺繧", "縺繧", 0, 3); + x2("(?:縺|[縺-縺江)|縺繧", "縺繧", 0, 6); + x2("縺ゅ>縺|(?=縺代¢)..縺サ", "縺代¢縺サ", 0, 9); + x2("縺ゅ>縺|(?!縺代¢)..縺サ", "縺ゅ>縺サ", 0, 9); + x2("(?=繧偵≠)..縺|(?=繧偵r)..縺", "繧偵r縺", 0, 9); + x2("(?<=縺|縺縺)縺", "縺縺縺", 6, 9); + n("(?>縺|縺ゅ>縺)縺", "縺ゅ>縺医≧"); + x2("(?>縺ゅ>縺|縺)縺", "縺ゅ>縺医≧", 0, 12); + x2("縺?|縺", "縺", 0, 3); + x2("縺?|縺", "縺", 0, 0); + x2("縺?|縺", "", 0, 0); + x2("縺*|縺", "縺ゅ≠", 0, 6); + x2("縺*|縺*", "縺縺", 0, 0); + x2("縺*|縺*", "縺ゅ>", 0, 3); + x2("[a縺]*|縺*", "a縺ゅ>縺縺", 0, 4); + x2("縺+|縺*", "", 0, 0); + x2("縺+|縺*", "縺縺縺", 0, 9); + x2("縺+|縺*", "縺ゅ>縺縺", 0, 3); + x2("縺+|縺*", "a縺ゅ>縺縺", 0, 0); + n("縺+|縺+", ""); + x2("(縺|縺)?", "縺", 0, 3); + x2("(縺|縺)*", "縺縺", 0, 6); + x2("(縺|縺)+", "縺縺ゅ>", 0, 9); + x2("(縺ゅ>|縺縺)+", "縺縺ゅ≠縺縺縺", 0, 12); + x2("(縺ゅ>|縺縺)+", "縺縺ゅ≠縺縺縺", 6, 18); + x2("(縺ゅ>|縺縺)+", "縺ゅ≠縺縺縺", 3, 15); + x2("(縺ゅ>|縺縺)+", "縺ゅ>繧偵≧縺", 0, 6); + x2("(縺ゅ>|縺縺)+", "$$zzzz縺ゅ>繧偵≧縺", 6, 12); + x2("(縺|縺縺ゅ>)+", "縺ゅ>縺ゅ>縺", 0, 15); + x2("(縺|縺縺ゅ>)+", "縺縺", 3, 6); + x2("(縺|縺縺ゅ>)+", "縺縺ゅ≠縺ゅ>縺", 3, 12); + x2("(?:縺|縺)(?:縺|縺)", "縺ゅ>", 0, 6); + x2("(?:縺*|縺*)(?:縺*|縺*)", "縺ゅ≠縺ゅ>縺縺", 0, 9); + x2("(?:縺*|縺*)(?:縺+|縺+)", "縺ゅ≠縺ゅ>縺縺", 0, 18); + x2("(?:縺+|縺+){2}", "縺ゅ≠縺ゅ>縺縺", 0, 18); + x2("(?:縺+|縺+){1,2}", "縺ゅ≠縺ゅ>縺縺", 0, 18); + x2("(?:縺+|\\A縺*)縺縺", "縺縺", 0, 6); + n("(?:縺+|\\A縺*)縺縺", "縺ゅ>縺縺"); + x2("(?:^縺+|縺+)*縺", "縺ゅ≠縺縺縺縺ゅ>縺", 18, 24); + x2("(?:^縺+|縺+)*縺", "縺ゅ≠縺縺縺縺縺", 0, 21); + x2("縺{0,}", "縺縺縺縺", 0, 12); + x2("縺|(?i)c", "C", 0, 1); + x2("(?i)c|縺", "C", 0, 1); + x2("(?i:縺)|a", "a", 0, 1); + n("(?i:縺)|a", "A"); + x2("[縺ゅ>縺]?", "縺ゅ>縺", 0, 3); + x2("[縺ゅ>縺]*", "縺ゅ>縺", 0, 9); + x2("[^縺ゅ>縺]*", "縺ゅ>縺", 0, 0); + n("[^縺ゅ>縺]+", "縺ゅ>縺"); + x2("縺?\?", "縺ゅ≠縺", 0, 0); + x2("縺縺?\?縺", "縺縺ゅ>", 0, 9); + x2("縺*?", "縺ゅ≠縺", 0, 0); + x2("縺縺*?", "縺縺ゅ≠", 0, 3); + x2("縺縺*?縺", "縺縺ゅ≠縺", 0, 12); + x2("縺+?", "縺ゅ≠縺", 0, 3); + x2("縺縺+?", "縺縺ゅ≠", 0, 6); + x2("縺縺+?縺", "縺縺ゅ≠縺", 0, 12); + x2("(?:螟ゥ?)?\?", "螟ゥ", 0, 0); + x2("(?:螟ゥ?\?)?", "螟ゥ", 0, 0); + x2("(?:螟「?)+?", "螟「螟「螟「", 0, 3); + x2("(?:鬚ィ+)?\?", "鬚ィ鬚ィ鬚ィ", 0, 0); + x2("(?:髮ェ+)?\?髴", "髮ェ髮ェ髮ェ髴", 0, 12); + x2("(?:縺ゅ>)?{2}", "", 0, 0); + x2("(?:鬯シ霆)?{2}", "鬯シ霆企ャシ霆企ャシ", 0, 12); + x2("(?:鬯シ霆)*{0}", "鬯シ霆企ャシ霆企ャシ", 0, 0); + x2("(?:鬯シ霆){3,}", "鬯シ霆企ャシ霆企ャシ霆企ャシ霆", 0, 24); + n("(?:鬯シ霆){3,}", "鬯シ霆企ャシ霆"); + x2("(?:鬯シ霆){2,4}", "鬯シ霆企ャシ霆企ャシ霆", 0, 18); + x2("(?:鬯シ霆){2,4}", "鬯シ霆企ャシ霆企ャシ霆企ャシ霆企ャシ霆", 0, 24); + x2("(?:鬯シ霆){2,4}?", "鬯シ霆企ャシ霆企ャシ霆企ャシ霆企ャシ霆", 0, 12); + x2("(?:鬯シ霆){,}", "鬯シ霆顎,}", 0, 9); + x2("(?:縺九″縺)+?{2}", "縺九″縺上°縺阪¥縺九″縺", 0, 18); + x3("(轣ォ)", "轣ォ", 0, 3, 1); + x3("(轣ォ豌エ)", "轣ォ豌エ", 0, 6, 1); + x2("((譎る俣))", "譎る俣", 0, 6); + x3("((鬚ィ豌エ))", "鬚ィ豌エ", 0, 6, 1); + x3("((譏ィ譌・))", "譏ィ譌・", 0, 6, 2); + x3("((((((((((((((((((((驥丞ュ))))))))))))))))))))", "驥丞ュ", 0, 6, 20); + x3("(縺ゅ>)(縺縺)", "縺ゅ>縺縺", 0, 6, 1); + x3("(縺ゅ>)(縺縺)", "縺ゅ>縺縺", 6, 12, 2); + x3("()(縺)縺縺(縺医♀縺)縺阪¥縺代%", "縺ゅ>縺縺医♀縺九″縺上¢縺", 9, 18, 3); + x3("(()(縺)縺縺(縺医♀縺)縺阪¥縺代%)", "縺ゅ>縺縺医♀縺九″縺上¢縺", 9, 18, 4); + x3(".*(繝輔か)繝ウ繝サ繝(繝ウ()繧キ繝・繧ソ)繧、繝ウ", "繝輔か繝ウ繝サ繝槭Φ繧キ繝・繧ソ繧、繝ウ", 15, 27, 2); + x2("(^縺)", "縺", 0, 3); + x3("(縺)|(縺)", "縺縺", 3, 6, 1); + x3("(^縺)|(縺)", "縺縺", 3, 6, 2); + x3("(縺?)", "縺ゅ≠縺", 0, 3, 1); + x3("(縺セ*)", "縺セ縺セ縺セ", 0, 9, 1); + x3("(縺ィ*)", "", 0, 0, 1); + x3("(繧+)", "繧九k繧九k繧九k繧", 0, 21, 1); + x3("(縺オ+|縺ク*)", "縺オ縺オ縺オ縺ク縺ク", 0, 9, 1); + x3("(縺+|縺?)", "縺縺縺縺ゅ≠", 0, 3, 1); + x3("(縺ゅ>縺)?", "縺ゅ>縺", 0, 9, 1); + x3("(縺ゅ>縺)*", "縺ゅ>縺", 0, 9, 1); + x3("(縺ゅ>縺)+", "縺ゅ>縺", 0, 9, 1); + x3("(縺輔@縺處縺ゅ>縺)+", "縺ゅ>縺", 0, 9, 1); + x3("([縺ェ縺ォ縺ャ][縺九″縺従|縺九″縺)+", "縺九″縺", 0, 9, 1); + x3("((?i:縺ゅ>縺))", "縺ゅ>縺", 0, 9, 1); + x3("((?m:縺.縺))", "縺\n縺", 0, 7, 1); + x3("((?=縺ゅs)縺)", "縺ゅs縺", 0, 3, 1); + x3("縺ゅ>縺|(.縺ゅ>縺)", "繧薙≠縺縺", 0, 12, 1); + x3("縺*(.)", "縺ゅ≠縺ゅ≠繧", 12, 15, 1); + x3("縺*?(.)", "縺ゅ≠縺ゅ≠繧", 0, 3, 1); + x3("縺*?(繧)", "縺ゅ≠縺ゅ≠繧", 12, 15, 1); + x3("[縺縺縺]縺*(.)", "縺医≠縺ゅ≠縺ゅs", 15, 18, 1); + x3("(\\A縺縺)縺縺", "縺縺縺縺", 0, 6, 1); + n("(\\A縺縺)縺縺", "繧薙>縺縺縺"); + x3("(^縺縺)縺縺", "縺縺縺縺", 0, 6, 1); + n("(^縺縺)縺縺", "繧薙>縺縺縺"); + x3("繧阪m(繧九k$)", "繧阪m繧九k", 6, 12, 1); + n("繧阪m(繧九k$)", "繧阪m繧九k繧"); + x2("(辟。)\\1", "辟。辟。", 0, 6); + n("(辟。)\\1", "辟。豁ヲ"); + x2("(遨コ?)\\1", "遨コ遨コ", 0, 6); + x2("(遨コ?\?)\\1", "遨コ遨コ", 0, 0); + x2("(遨コ*)\\1", "遨コ遨コ遨コ遨コ遨コ", 0, 12); + x3("(遨コ*)\\1", "遨コ遨コ遨コ遨コ遨コ", 0, 6, 1); + x2("縺(縺*)\\1", "縺ゅ>縺縺縺", 0, 15); + x2("縺(縺*)\\1", "縺ゅ>", 0, 3); + x2("(縺*)(縺*)\\1\\2", "縺ゅ≠縺ゅ>縺縺ゅ≠縺ゅ>縺", 0, 30); + x2("(縺*)(縺*)\\2", "縺ゅ≠縺ゅ>縺縺縺", 0, 21); + x3("(縺*)(縺*)\\2", "縺ゅ≠縺ゅ>縺縺縺", 9, 15, 2); + x2("(((((((縺ス*)縺コ))))))縺エ\\7", "縺ス縺ス縺ス縺コ縺エ縺ス縺ス縺ス", 0, 24); + x3("(((((((縺ス*)縺コ))))))縺エ\\7", "縺ス縺ス縺ス縺コ縺エ縺ス縺ス縺ス", 0, 9, 7); + x2("(縺ッ)(縺イ)(縺オ)\\2\\1\\3", "縺ッ縺イ縺オ縺イ縺ッ縺オ", 0, 18); + x2("([縺-縺曽)\\1", "縺上¥", 0, 6); + x2("(\\w\\d\\s)\\1", "縺5 縺5 ", 0, 10); + n("(\\w\\d\\s)\\1", "縺5 縺5"); + x2("(隱ーシ毫[縺-縺]{3})\\1", "隱ーシ溯ェーシ", 0, 12); + x2("...(隱ーシ毫[縺-縺]{3})\\1", "縺B縺りェーシ溯ェーシ", 0, 19); + x2("(隱ーシ毫[縺-縺]{3})\\1", "縺縺縺縺縺縺", 0, 18); + x2("(^縺)\\1", "縺薙%", 0, 6); + n("(^繧)\\1", "繧√繧"); + n("(縺$)\\1", "縺ゅ≠"); + n("(縺ゅ>\\Z)\\1", "縺ゅ>"); + x2("(縺*\\Z)\\1", "縺", 3, 3); + x2(".(縺*\\Z)\\1", "縺縺", 3, 6); + x3("(.(繧縺繧)\\2)", "z繧縺繧繧縺繧", 0, 19, 1); + x3("(.(..\\d.)\\2)", "縺12341234", 0, 11, 1); + x2("((?i:縺W縺))\\1", "縺W縺壹≠v縺", 0, 14); + x2("(?<諢壹°>螟榎\\(\\g<諢壹°>\\))", "((((((螟))))))", 0, 15); + x2("\\A(?:\\g<髦ソ_1>|\\g<莠狙2>|\\z邨ゆコ (?<髦ソ_1>隕ウ|閾ェ\\g<莠狙2>閾ェ)(?<莠狙2>蝨ィ|闖ゥ阮ゥ\\g<髦ソ_1>闖ゥ阮ゥ))$", "闖ゥ阮ゥ閾ェ闖ゥ阮ゥ閾ェ蝨ィ閾ェ闖ゥ阮ゥ閾ェ闖ゥ阮ゥ", 0, 39); + x2("[[縺イ縺オ]]", "縺オ", 0, 3); + x2("[[縺縺翫≧]縺犠", "縺", 0, 3); + n("[[^縺]]", "縺"); + n("[^[縺]]", "縺"); + x2("[^[^縺]]", "縺", 0, 3); + x2("[[縺九″縺従&&縺阪¥]", "縺", 0, 3); + n("[[縺九″縺従&&縺阪¥]", "縺"); + n("[[縺九″縺従&&縺阪¥]", "縺"); + x2("[縺-繧&&縺-繧&&縺-繧曽", "繧", 0, 3); + n("[^縺-繧&&縺-繧&&縺-繧曽", "繧"); + x2("[[^縺&&縺]&&縺-繧転", "縺", 0, 3); + n("[[^縺&&縺]&&縺-繧転", "縺"); + x2("[[^縺-繧&&縺縺縺医♀]&&[^縺-縺犠]", "縺", 0, 3); + n("[[^縺-繧&&縺縺縺医♀]&&[^縺-縺犠]", "縺"); + x2("[^[^縺ゅ>縺]&&[^縺縺医♀]]", "縺", 0, 3); + x2("[^[^縺ゅ>縺]&&[^縺縺医♀]]", "縺", 0, 3); + n("[^[^縺ゅ>縺]&&[^縺縺医♀]]", "縺"); + x2("[縺-&&-縺]", "-", 0, 1); + x2("[^[^a-z縺ゅ>縺]&&[^bcdefg縺縺医♀]q-w]", "縺", 0, 3); + x2("[^[^a-z縺ゅ>縺]&&[^bcdefg縺縺医♀]g-w]", "f", 0, 1); + x2("[^[^a-z縺ゅ>縺]&&[^bcdefg縺縺医♀]g-w]", "g", 0, 1); + n("[^[^a-z縺ゅ>縺]&&[^bcdefg縺縺医♀]g-w]", "2"); + x2("a繝舌シ繧ク繝ァ繝ウ縺ョ繝繧ヲ繝ウ繝ュ繝シ繝<\\/b>", "a繝舌シ繧ク繝ァ繝ウ縺ョ繝繧ヲ繝ウ繝ュ繝シ繝", 0, 44); + x2(".繝舌シ繧ク繝ァ繝ウ縺ョ繝繧ヲ繝ウ繝ュ繝シ繝<\\/b>", "a繝舌シ繧ク繝ァ繝ウ縺ョ繝繧ヲ繝ウ繝ュ繝シ繝", 0, 44); + x2("\\n?\\z", "縺薙s縺ォ縺。縺ッ", 15, 15); + x2("(?m).*", "髱定オ、鮟", 0, 9); + x2("(?m).*a", "髱定オ、鮟a", 0, 10); + + x2("\\p{Hiragana}", "縺エ", 0, 3); + n("\\P{Hiragana}", "縺エ"); + x2("\\p{Emoji}", "\xE2\xAD\x90", 0, 3); + x2("\\p{^Emoji}", "\xEF\xBC\x93", 0, 3); + x2("\\p{Extended_Pictographic}", "\xE2\x9A\xA1", 0, 3); + n("\\p{Extended_Pictographic}", "\xE3\x81\x82"); + + x2("\\p{Word}", "縺", 0, 3); + n("\\p{^Word}", "縺"); + x2("[\\p{Word}]", "縺", 0, 3); + n("[\\p{^Word}]", "縺"); + n("[^\\p{Word}]", "縺"); + x2("[^\\p{^Word}]", "縺", 0, 3); + x2("[^\\p{^Word}&&\\p{ASCII}]", "縺", 0, 3); + x2("[^\\p{^Word}&&\\p{ASCII}]", "a", 0, 1); + n("[^\\p{^Word}&&\\p{ASCII}]", "#"); + x2("[^[\\p{^Word}]&&[\\p{ASCII}]]", "縺", 0, 3); + x2("[^[\\p{ASCII}]&&[^\\p{Word}]]", "縺", 0, 3); + n("[[\\p{ASCII}]&&[^\\p{Word}]]", "縺"); + x2("[^[\\p{^Word}]&&[^\\p{ASCII}]]", "縺", 0, 3); + x2("[^\\x{104a}]", "縺", 0, 3); + x2("[^\\p{^Word}&&[^\\x{104a}]]", "縺", 0, 3); + x2("[^[\\p{^Word}]&&[^\\x{104a}]]", "縺", 0, 3); + n("[^\\p{Word}||[^\\x{104a}]]", "縺"); + + x2("\\p{^Cntrl}", "縺", 0, 3); + n("\\p{Cntrl}", "縺"); + x2("[\\p{^Cntrl}]", "縺", 0, 3); + n("[\\p{Cntrl}]", "縺"); + n("[^\\p{^Cntrl}]", "縺"); + x2("[^\\p{Cntrl}]", "縺", 0, 3); + x2("[^\\p{Cntrl}&&\\p{ASCII}]", "縺", 0, 3); + x2("[^\\p{Cntrl}&&\\p{ASCII}]", "a", 0, 1); + n("[^\\p{^Cntrl}&&\\p{ASCII}]", "#"); + x2("[^[\\p{^Cntrl}]&&[\\p{ASCII}]]", "縺", 0, 3); + x2("[^[\\p{ASCII}]&&[^\\p{Cntrl}]]", "縺", 0, 3); + n("[[\\p{ASCII}]&&[^\\p{Cntrl}]]", "縺"); + n("[^[\\p{^Cntrl}]&&[^\\p{ASCII}]]", "縺"); + n("[^\\p{^Cntrl}&&[^\\x{104a}]]", "縺"); + n("[^[\\p{^Cntrl}]&&[^\\x{104a}]]", "縺"); + n("[^\\p{Cntrl}||[^\\x{104a}]]", "縺"); + + x2("(?-W:\\p{Word})", "縺", 0, 3); + n("(?W:\\p{Word})", "縺"); + x2("(?W:\\p{Word})", "k", 0, 1); + x2("(?-W:[[:word:]])", "縺", 0, 3); + n("(?W:[[:word:]])", "縺"); + x2("(?-D:\\p{Digit})", "シ", 0, 3); + n("(?D:\\p{Digit})", "シ"); + x2("(?-S:\\p{Space})", "\xc2\x85", 0, 2); + n("(?S:\\p{Space})", "\xc2\x85"); + x2("(?-P:\\p{Word})", "縺", 0, 3); + n("(?P:\\p{Word})", "縺"); + x2("(?-W:\\w)", "縺", 0, 3); + n("(?W:\\w)", "縺"); + x2("(?-W:\\w)", "k", 0, 1); + x2("(?W:\\w)", "k", 0, 1); + n("(?-W:\\W)", "縺"); + x2("(?W:\\W)", "縺", 0, 3); + n("(?-W:\\W)", "k"); + n("(?W:\\W)", "k"); + + x2("(?-W:\\b)", "縺", 0, 0); + n("(?W:\\b)", "縺"); + x2("(?-W:\\b)", "h", 0, 0); + x2("(?W:\\b)", "h", 0, 0); + n("(?-W:\\B)", "縺"); + x2("(?W:\\B)", "縺", 0, 0); + n("(?-W:\\B)", "h"); + n("(?W:\\B)", "h"); + x2("(?-P:\\b)", "縺", 0, 0); + n("(?P:\\b)", "縺"); + x2("(?-P:\\b)", "h", 0, 0); + x2("(?P:\\b)", "h", 0, 0); + n("(?-P:\\B)", "縺"); + x2("(?P:\\B)", "縺", 0, 0); + n("(?-P:\\B)", "h"); + n("(?P:\\B)", "h"); + + x2("\\p{InBasicLatin}", "\x41", 0, 1); + //x2("\\p{Grapheme_Cluster_Break_Regional_Indicator}", "\xF0\x9F\x87\xA9", 0, 4); + //n("\\p{Grapheme_Cluster_Break_Regional_Indicator}", "\xF0\x9F\x87\xA5"); + + // extended grapheme cluster + + // CR + LF + n(".\\y\\O", "\x0d\x0a"); + x2(".\\Y\\O", "\x0d\x0a", 0, 2); + + // LATIN SMALL LETTER G, COMBINING DIAERESIS + n("^.\\y.$", "\x67\xCC\x88"); + x2(".\\Y.", "\x67\xCC\x88", 0, 3); + x2("\\y.\\Y.\\y", "\x67\xCC\x88", 0, 3); + // HANGUL SYLLABLE GAG + x2("\\y.\\y", "\xEA\xB0\x81", 0, 3); + // HANGUL CHOSEONG KIYEOK, HANGUL JUNGSEONG A, HANGUL JONGSEONG KIYEOK + x2("^.\\Y.\\Y.$", "\xE1\x84\x80\xE1\x85\xA1\xE1\x86\xA8", 0, 9); + n("^.\\y.\\Y.$", "\xE1\x84\x80\xE1\x85\xA1\xE1\x86\xA8"); + // TAMIL LETTER NA, TAMIL VOWEL SIGN I, + x2(".\\Y.", "\xE0\xAE\xA8\xE0\xAE\xBF", 0, 6); + n(".\\y.", "\xE0\xAE\xA8\xE0\xAE\xBF"); + // THAI CHARACTER KO KAI, THAI CHARACTER SARA AM + x2(".\\Y.", "\xE0\xB8\x81\xE0\xB8\xB3", 0, 6); + n(".\\y.", "\xE0\xB8\x81\xE0\xB8\xB3"); + // DEVANAGARI LETTER SSA, DEVANAGARI VOWEL SIGN I + x2(".\\Y.", "\xE0\xA4\xB7\xE0\xA4\xBF", 0, 6); + n(".\\y.", "\xE0\xA4\xB7\xE0\xA4\xBF"); + + // {Extended_Pictographic} Extend* ZWJ x {Extended_Pictographic} + x2("..\\Y.", "\xE3\x80\xB0\xE2\x80\x8D\xE2\xAD\x95", 0, 9); + x2("...\\Y.", "\xE3\x80\xB0\xCC\x82\xE2\x80\x8D\xE2\xAD\x95", 0, 11); + n("...\\Y.", "\xE3\x80\xB0\xCD\xB0\xE2\x80\x8D\xE2\xAD\x95"); + + // CR + LF + n("^\\X\\X$", "\x0d\x0a"); + x2("^\\X$", "\x0d\x0a", 0, 2); + // LATIN SMALL LETTER G, COMBINING DIAERESIS + n("^\\X\\X.$", "\x67\xCC\x88"); + x2("^\\X$", "\x67\xCC\x88", 0, 3); + // HANGUL CHOSEONG KIYEOK, HANGUL JUNGSEONG A, HANGUL JONGSEONG KIYEOK + x2("^\\X$", "\xE1\x84\x80\xE1\x85\xA1\xE1\x86\xA8", 0, 9); + n("^\\X\\X\\X$", "\xE1\x84\x80\xE1\x85\xA1\xE1\x86\xA8"); + // TAMIL LETTER NA, TAMIL VOWEL SIGN I, + x2("^\\X$", "\xE0\xAE\xA8\xE0\xAE\xBF", 0, 6); + n("\\X\\X", "\xE0\xAE\xA8\xE0\xAE\xBF"); + // THAI CHARACTER KO KAI, THAI CHARACTER SARA AM + x2("^\\X$", "\xE0\xB8\x81\xE0\xB8\xB3", 0, 6); + n("\\X\\X", "\xE0\xB8\x81\xE0\xB8\xB3"); + // DEVANAGARI LETTER SSA, DEVANAGARI VOWEL SIGN I + x2("^\\X$", "\xE0\xA4\xB7\xE0\xA4\xBF", 0, 6); + n("\\X\\X", "\xE0\xA4\xB7\xE0\xA4\xBF"); + + n("^\\X.$", "\xE0\xAE\xA8\xE0\xAE\xBF"); + + // a + COMBINING GRAVE ACCENT (U+0300) + x2("h\\Xllo", "ha\xCC\x80llo", 0, 7); + + // Text Segment: Extended Grapheme Cluster <-> Word Boundary + x2("(?y{g})\\yabc\\y", "abc", 0, 3); + x2("(?y{g})\\y\\X\\y", "abc", 0, 1); + x2("(?y{w})\\yabc\\y", "abc", 0, 3); // WB1, WB2 + x2("(?y{w})\\X", "\r\n", 0, 2); // WB3 + x2("(?y{w})\\X", "\x0cz", 0, 1); // WB3a + x2("(?y{w})\\X", "q\x0c", 0, 1); // WB3b + x2("(?y{w})\\X", "\xE2\x80\x8D\xE2\x9D\x87", 0, 6); // WB3c + x2("(?y{w})\\X", "\x20\x20", 0, 2); // WB3d + x2("(?y{w})\\X", "a\xE2\x80\x8D", 0, 4); // WB4 + x2("(?y{w})\\y\\X\\y", "abc", 0, 3); // WB5 + x2("(?y{w})\\y\\X\\y", "v\xCE\x87w", 0, 4); // WB6, WB7 + x2("(?y{w})\\y\\X\\y", "\xD7\x93\x27", 0, 3); // WB7a + x2("(?y{w})\\y\\X\\y", "\xD7\x93\x22\xD7\x93", 0, 5); // WB7b, WB7c + x2("(?y{w})\\X", "14 45", 0, 2); // WB8 + x2("(?y{w})\\X", "a14", 0, 3); // WB9 + x2("(?y{w})\\X", "832e", 0, 4); // WB10 + x2("(?y{w})\\X", "8\xEF\xBC\x8C\xDB\xB0", 0, 6); // WB11, WB12 + x2("(?y{w})\\y\\X\\y", "繧ア繝ウ", 0, 6); // WB13 + x2("(?y{w})\\y\\X\\y", "繧ア繝ウ\xE2\x80\xAF繧ソ", 0, 12); // WB13a, WB13b + x2("(?y{w})\\y\\X\\y", "\x21\x23", 0, 1); // WB999 + x2("(?y{w})\\y\\X\\y", "螻ア繧「", 0, 3); + x2("(?y{w})\\X", "3.14", 0, 4); + x2("(?y{w})\\X", "3 14", 0, 1); + + 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); + x2("((?()0+)+++(((0\\g<0>)0)|())++++((?(1)(0\\g<0>))++++++0*())++++((?(1)(0\\g<1>)+)++++++++++*())++++((?(1)((0)\\g<0>)+)++())+0++*+++(((0\\g<0>))*())++++((?(1)(0\\g<0>)+)++++++++++*|)++++*+++((?(1)((0)\\g<0>)+)+++++++++())++*|)++++((?()0))|", "abcde", 0, 0); // #139 + + n("(*FAIL)", "abcdefg"); + n("abcd(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)(*FAIL)", "abcdefg"); + x2("(?:[ab]|(*MAX{2}).)*", "abcbaaccaaa", 0, 7); + x2("(?:(*COUNT[AB]{X})[ab]|(*COUNT[CD]{X})[cd])*(*CMP{AB,<,CD})", + "abababcdab", 5, 8); + x2("(?(?{....})123|456)", "123", 0, 3); + x2("(?(*FAIL)123|456)", "456", 0, 3); + + x2("\\g'0'++{,0}", "abcdefgh", 0, 0); + x2("\\g'0'++{,0}?", "abcdefgh", 0, 0); + x2("\\g'0'++{,0}b", "abcdefgh", 1, 2); + x2("\\g'0'++{,0}?def", "abcdefgh", 3, 6); + x2("a{1,3}?", "aaa", 0, 1); + x2("a{3}", "aaa", 0, 3); + x2("a{3}?", "aaa", 0, 3); + x2("a{3}?", "aa", 0, 0); + x2("a{3,3}?", "aaa", 0, 3); + n("a{3,3}?", "aa"); + x2("a{1,3}+", "aaaaaa", 0, 6); + x2("a{3}+", "aaaaaa", 0, 6); + x2("a{3,3}+", "aaaaaa", 0, 6); + n("a{2,3}?", "a"); + n("a{3,2}a", "aaa"); + x2("a{3,2}b", "aaab", 0, 4); + x2("a{3,2}b", "aaaab", 1, 5); + x2("a{3,2}b", "aab", 0, 3); + x2("a{3,2}?", "", 0, 0); /* == (?:a{3,2})?*/ + x2("a{2,3}+a", "aaa", 0, 3); /* == (?:a{2,3})+*/ + x2("[\\x{0}-\\x{7fffffff}]", "a", 0, 1); + x2("[\\x{7f}-\\x{7fffffff}]", "\xe5\xae\xb6", 0, 3); + x2("[a[cdef]]", "a", 0, 1); + n("[a[xyz]-c]", "b"); + x2("[a[xyz]-c]", "a", 0, 1); + x2("[a[xyz]-c]", "-", 0, 1); + x2("[a[xyz]-c]", "c", 0, 1); + x2("(a.c|def)(.{4})(?<=\\1)", "abcdabc", 0, 7); + x2("(a.c|de)(.{4})(?<=\\1)", "abcdabc", 0, 7); + x2("(a.c|def)(.{5})(?<=d\\1e)", "abcdabce", 0, 8); + x2("(a.c|.)d(?<=\\k<1>d)", "zzzzzabcdabc", 5, 9); + x2("(?<=az*)abc", "azzzzzzzzzzabcdabcabc", 11, 14); + x2("(?<=ab|abc|abcd)ef", "abcdef", 4, 6); + x2("(?<=ta+|tb+|tc+|td+)zz", "tcccccccccczz", 11, 13); + x2("(?<=t.{7}|t.{5}|t.{2}|t.)zz", "tczz", 2, 4); + x2("(?<=t.{7}|t.{5}|t.{2})zz", "tczzzz", 3, 5); + x2("(?<=t.{7}|t.{5}|t.{3})zz", "tczzazzbzz", 8, 10); + n("(?<=t.{7}|t.{5}|t.{3})zz", "tczzazzbczz"); + x2("(?<=(ab|abc|abcd))ef", "abcdef", 4, 6); + x2("(?<=(ta+|tb+|tc+|td+))zz", "tcccccccccczz", 11, 13); + x2("(?<=(t.{7}|t.{5}|t.{2}|t.))zz", "tczz", 2, 4); + x2("(?<=(t.{7}|t.{5}|t.{2}))zz", "tczzzz", 3, 5); + x2("(?<=(t.{7}|t.{5}|t.{3}))zz", "tczzazzbzz", 8, 10); + n("(?<=(t.{7}|t.{5}|t.{3}))zz", "tczzazzbczz"); + x2("(.{1,4})(.{1,4})(?<=\\2\\1)", "abaaba", 0, 6); + x2("(.{1,4})(.{1,4})(?<=\\2\\1)", "ababab", 0, 6); + n("(.{1,4})(.{1,4})(?<=\\2\\1)", "abcdabce"); + x2("(.{1,4})(.{1,4})(?<=\\2\\1)", "abcdabceabce", 4, 12); + x2("(?<=a)", "a", 1, 1); + x2("(?<=a.*\\w)z", "abbbz", 4, 5); + n("(?<=a.*\\w)z", "abb z"); + x2("(?<=a.*\\W)z", "abb z", 4, 5); + x2("(?<=a.*\\b)z", "abb z", 4, 5); + x2("(?<=(?>abc))", "abc", 3, 3); + x2("(?<=a\\Xz)", "abz", 3, 3); + n("(?<=^a*)bc", "zabc"); + n("(?<=a*\\b)b", "abc"); + x2("(?<=a+.*[efg])z", "abcdfz", 5, 6); + x2("(?<=a+.*[efg])z", "abcdfgz", 6, 7); + n("(?<=a+.*[efg])z", "bcdfz"); + x2("(?<=a*.*[efg])z", "bcdfz", 4, 5); + n("(?<=a+.*[efg])z", "abcdz"); + x2("(?<=v|t|a+.*[efg])z", "abcdfz", 5, 6); + x2("(?<=v|t|^a+.*[efg])z", "abcdfz", 5, 6); + x2("(?<=^(?:v|t|a+.*[efg]))z", "abcdfz", 5, 6); + x2("(?<=v|^t|a+.*[efg])z", "uabcdfz", 6, 7); + n("^..(?<=(a{,2}))\\1z", "aaaaz"); // !!! look-behind is shortest priority + x2("^..(?<=(a{,2}))\\1z", "aaz", 0, 3); // shortest priority + e("(?<=(?~|zoo)a.*z)", "abcdefz", ONIGERR_INVALID_LOOK_BEHIND_PATTERN); + e("(?<=(?~|)a.*z)", "abcdefz", ONIGERR_INVALID_LOOK_BEHIND_PATTERN); + e("(a(?~|boo)z){0}(?<=\\g<1>)", "abcdefz", ONIGERR_INVALID_LOOK_BEHIND_PATTERN); + x2("(?<=(?<= )| )", "abcde fg", 6, 6); // #173 + x2("(?<=D|)(?<=@!nnnnnnnnnIIIIn;{1}D?()|;{1}x)", "(?<=D|)(?<=@!nnnnnnnnnIIIIn;{1}D?()|;{1}x)", 55, 55); // #173 + x2("(?<=;()|)\\g<1>", "", 0, 0); // reduced #173 + x2("(?<=;()|)\\k<1>", ";", 1, 1); + x2("(())\\g<3>{0}(?<=|())", "abc", 0, 0); // #175 + x2("(?<=()|)\\1{0}", "abc", 0, 0); + e("(?)|(?<=(\\k<1>))", ""); + x2("(a|\\k<2>)|(?<=(\\k<1>))", "a", 0, 1); + x2("(a|\\k<2>)|(?<=b(\\k<1>))", "ba", 1, 2); + // #295 + n("(?|b))", "aab", 0, 3); + x2("((?(a)\\g<1>))", "aab", 0, 2); + x2("((?(a)\\g<1>))", "", 0, 0); + x2("(b(?(a)|\\g<1>))", "bba", 0, 3); + e("(()(?(2)\\g<1>))", "", ONIGERR_NEVER_ENDING_RECURSION); + x2("(?(a)(?:b|c))", "ac", 0, 2); + x2("(?(a)(?:b|c))", "", 0, 0); + x2("(?(a)b)", "", 0, 0); + n("^(?(a)b|c)", "ac"); + x2("(?i)a|b", "B", 0, 1); + n("((?i)a|b.)|c", "C"); + n("c(?i)a.|b.", "Caz"); + x2("c(?i)a|b", "cB", 0, 2); /* == c(?i:a|b) */ + x2("c(?i)a.|b.", "cBb", 0, 3); + + x2("(?i)st", "st", 0, 2); + x2("(?i)st", "St", 0, 2); + x2("(?i)st", "sT", 0, 2); + x2("(?i)st", "\xC5\xBFt", 0, 3); // U+017F + x2("(?i)st", "\xEF\xAC\x85", 0, 3); // U+FB05 + x2("(?i)st", "\xEF\xAC\x86", 0, 3); // U+FB06 + x2("(?i)ast", "Ast", 0, 3); + x2("(?i)ast", "ASt", 0, 3); + x2("(?i)ast", "AsT", 0, 3); + x2("(?i)ast", "A\xC5\xBFt", 0, 4); // U+017F + x2("(?i)ast", "A\xEF\xAC\x85", 0, 4); // U+FB05 + x2("(?i)ast", "A\xEF\xAC\x86", 0, 4); // U+FB06 + x2("(?i)stZ", "stz", 0, 3); + x2("(?i)stZ", "Stz", 0, 3); + x2("(?i)stZ", "sTz", 0, 3); + x2("(?i)stZ", "\xC5\xBFtz", 0, 4); // U+017F + x2("(?i)stZ", "\xEF\xAC\x85z", 0, 4); // U+FB05 + x2("(?i)stZ", "\xEF\xAC\x86z", 0, 4); // U+FB06 + x2("(?i)BstZ", "bstz", 0, 4); + x2("(?i)BstZ", "bStz", 0, 4); + x2("(?i)BstZ", "bsTz", 0, 4); + x2("(?i)BstZ", "b\xC5\xBFtz", 0, 5); // U+017F + x2("(?i)BstZ", "b\xEF\xAC\x85z", 0, 5); // U+FB05 + x2("(?i)BstZ", "b\xEF\xAC\x86z", 0, 5); // U+FB06 + x2("(?i).*st\\z", "tttssss\xC5\xBFt", 0, 10); // U+017F + x2("(?i).*st\\z", "tttssss\xEF\xAC\x85", 0, 10); // U+FB05 + x2("(?i).*st\\z", "tttssss\xEF\xAC\x86", 0, 10); // U+FB06 + x2("(?i).*縺Tt縺Ы\z", "tttssss縺\xC5\xBFt縺", 0, 16); // U+017F + x2("(?i).*縺Tt縺Ы\z", "tttssss縺\xEF\xAC\x85縺", 0, 16); // U+FB05 + x2("(?i).*縺Tt縺Ы\z", "tttssss縺\xEF\xAC\x86縺", 0, 16); // U+FB06 + x2("(?i).*\xC5\xBFt\\z", "tttssssst", 0, 9); // U+017F + x2("(?i).*\xEF\xAC\x85\\z", "tttssss縺Tt", 0, 12); // U+FB05 + x2("(?i).*\xEF\xAC\x86縺Ы\z", "tttssssst縺", 0, 12); // U+FB06 + x2("(?i).*\xEF\xAC\x85\\z", "tttssss縺\xEF\xAC\x85", 0, 13); + + x2("(?i).*ss", "abcdefghijklmnopqrstuvwxyz\xc3\x9f", 0, 28); // U+00DF + x2("(?i).*ss.*", "abcdefghijklmnopqrstuvwxyz\xc3\x9fxyz", 0, 31); // U+00DF + x2("(?i).*\xc3\x9f", "abcdefghijklmnopqrstuvwxyzss", 0, 28); // U+00DF + x2("(?i).*ss.*", "abcdefghijklmnopqrstuvwxyzSSxyz", 0, 31); + + x2("(?i)ssv", "\xc3\x9fv", 0, 3); // U+00DF + x2("(?i)(?<=ss)v", "SSv", 2, 3); + x2("(?i)(?<=\xc3\x9f)v", "\xc3\x9fv", 2, 3); + //x2("(?i)(?<=\xc3\x9f)v", "ssv", 2, 3); + //x2("(?i)(?<=ss)v", "\xc3\x9fv", 2, 3); + + /* #156 U+01F0 (UTF-8: C7 B0) */ + x2("(?i).+Isssヌー", ".+Isssヌー", 0, 8); + x2(".+Isssヌー", ".+Isssヌー", 0, 8); + x2("(?i)ヌー", "ヌー", 0, 2); + x2("(?i)ヌー", "j\xcc\x8c", 0, 3); + x2("(?i)j\xcc\x8c", "ヌー", 0, 2); + x2("(?i)5ヌー", "5ヌー", 0, 3); + x2("(?i)5ヌー", "5j\xcc\x8c", 0, 4); + x2("(?i)5j\xcc\x8c", "5ヌー", 0, 3); + x2("(?i)ヌーv", "ヌーV", 0, 3); + x2("(?i)ヌーv", "j\xcc\x8cV", 0, 4); + x2("(?i)j\xcc\x8cv", "ヌーV", 0, 3); + x2("(?i)[ヌー]", "ヌー", 0, 2); + x2("(?i)[ヌー]", "j\xcc\x8c", 0, 3); + //x2("(?i)[j]\xcc\x8c", "ヌー", 0, 2); + x2("(?i)\ufb00a", "ffa", 0, 3); + x2("(?i)ffz", "\xef\xac\x80z", 0, 4); + x2("(?i)\u2126", "\xcf\x89", 0, 2); + x2("a(?i)\u2126", "a\xcf\x89", 0, 3); + x2("(?i)A\u2126", "a\xcf\x89", 0, 3); + x2("(?i)A\u2126=", "a\xcf\x89=", 0, 4); + x2("(?i:ss)=1234567890", "\xc5\xbf\xc5\xbf=1234567890", 0, 15); + + x2("\\x{000A}", "\x0a", 0, 1); + x2("\\x{000A 002f}", "\x0a\x2f", 0, 2); + x2("\\x{000A 002f }", "\x0a\x2f", 0, 2); + x2("\\x{007C 001b}", "\x7c\x1b", 0, 2); + x2("\\x{1 2 3 4 5 6 7 8 9 a b c d e f}", "\x01\x02\x3\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f", 0, 15); + x2("a\\x{000A 002f}@", "a\x0a\x2f@", 0, 4); + x2("a\\x{0060\n0063}@", "a\x60\x63@", 0, 4); + e("\\x{00000001 000000012}", "", ONIGERR_TOO_LONG_WIDE_CHAR_VALUE); + e("\\x{000A 00000002f}", "", ONIGERR_TOO_LONG_WIDE_CHAR_VALUE); + e("\\x{000A 002f/", "", ONIGERR_INVALID_CODE_POINT_VALUE); + e("\\x{000A 002f /", "", ONIGERR_INVALID_CODE_POINT_VALUE); + e("\\x{000A", "", ONIGERR_INVALID_CODE_POINT_VALUE); + e("\\x{000A ", "", ONIGERR_INVALID_CODE_POINT_VALUE); + e("\\x{000A 002f ", "", ONIGERR_INVALID_CODE_POINT_VALUE); + x2("\\o{102}", "B", 0, 1); + x2("\\o{102 103}", "BC", 0, 2); + x2("\\o{0160 0000161}", "pq", 0, 2); + x2("\\o{1 2 3 4 5 6 7 10 11 12 13 14 15 16 17}", "\x01\x02\x3\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f", 0, 15); + x2("\\o{0007 0010 }", "\x07\x08", 0, 2); + e("\\o{0000 0015/", "", ONIGERR_INVALID_CODE_POINT_VALUE); + e("\\o{0000 0015 /", "", ONIGERR_INVALID_CODE_POINT_VALUE); + e("\\o{0015", "", ONIGERR_INVALID_CODE_POINT_VALUE); + e("\\o{0015 ", "", ONIGERR_INVALID_CODE_POINT_VALUE); + e("\\o{0007 002f}", "", ONIGERR_INVALID_CODE_POINT_VALUE); + x2("[\\x{000A}]", "\x0a", 0, 1); + x2("[\\x{000A 002f}]+", "\x0a\x2f\x2e", 0, 2); + x2("[\\x{01 0F 1A 2c 4B}]+", "\x20\x01\x0f\x1a\x2c\x4b\x1b", 1, 6); + x2("[\\x{0020 0024}-\\x{0026}]+", "\x25\x24\x26\x23", 0, 3); + x2("[\\x{0030}-\\x{0033 005a}]+", "\x30\x31\x32\x33\x5a\34", 0, 5); + e("[\\x{000A]", "", ONIGERR_INVALID_CODE_POINT_VALUE); + e("[\\x{000A ]", "", ONIGERR_INVALID_CODE_POINT_VALUE); + e("[\\x{000A }]", "", ONIGERR_INVALID_CODE_POINT_VALUE); + x2("[\\o{102}]", "B", 0, 1); + x2("[\\o{102 103}]*", "BC", 0, 2); + e("[a\\o{002 003]bcde|zzz", "", ONIGERR_INVALID_CODE_POINT_VALUE); + x2("[\\x{0030-0039}]+", "abc0123456789def", 3, 13); + x2("[\\x{0030 - 0039 }]+", "abc0123456789def", 3, 13); + x2("[\\x{0030 - 0039 0063 0064}]+", "abc0123456789def", 2, 14); + x2("[\\x{0030 - 0039 0063-0065}]+", "acde019b", 1, 7); + e("[\\x{0030 - 0039-0063 0064}]+", "", ONIGERR_INVALID_CODE_POINT_VALUE); + e("[\\x{0030 - }]+", "", ONIGERR_INVALID_CODE_POINT_VALUE); + e("[\\x{0030 -- 0040}]+", "", ONIGERR_INVALID_CODE_POINT_VALUE); + e("[\\x{0030--0040}]+", "", ONIGERR_INVALID_CODE_POINT_VALUE); + e("[\\x{0030 - - 0040}]+", "", ONIGERR_INVALID_CODE_POINT_VALUE); + e("[\\x{0030 0044 - }]+", "", ONIGERR_INVALID_CODE_POINT_VALUE); + e("[a-\\x{0070 - 0039}]+", "", ONIGERR_INVALID_CODE_POINT_VALUE); + x2("[a-\\x{0063 0071}]+", "dabcqz", 1, 5); + x2("[-\\x{0063-0065}]+", "ace-df", 1, 5); + x2("[\\x61-\\x{0063 0065}]+", "abced", 0, 4); + e("[\\x61-\\x{0063-0065}]+", "", ONIGERR_INVALID_CODE_POINT_VALUE); + x2("[t\\x{0063 0071}]+", "tcqb", 0, 3); + x2("[\\W\\x{0063 0071}]+", "*cqa", 0, 3); + x2("(\\O|(?=z\\g<2>*))(\\g<0>){0}", "a", 0, 1); + + /* whole options */ + x2("(?Ii)abc", "abc", 0, 3); + x2("(?Ii)abc", "ABC", 0, 3); + x2("(?Ii:abc)", "abc", 0, 3); + x2("(?Ii)xyz|abc", "aBc", 0, 3); + x2("(?Ii:zz|abc|AZ)", "ABc", 0, 3); + e("(?Ii:abc)d", "abc", ONIGERR_INVALID_GROUP_OPTION); + e("(?-Ii:abc)", "abc", ONIGERR_INVALID_GROUP_OPTION); + x2("(?I-i:abc)", "abc", 0, 3); + e("(?i-I:abc)", "abc", ONIGERR_INVALID_GROUP_OPTION); + x2("(?i)\xe2\x84\xaa", "k", 0, 1); + n("(?Ii)\xe2\x84\xaa", "k"); + e("((?Ii)abc)", "", ONIGERR_INVALID_GROUP_OPTION); + x2("(?:(?Ii)abc)", "ABC", 0, 3); + x2("(?:(?:(?Ii)abc))", "ABC", 0, 3); + e("x(?Ii)", "", ONIGERR_INVALID_GROUP_OPTION); + e("()(?Ii)", "", ONIGERR_INVALID_GROUP_OPTION); + e("(?:)(?Ii)", "", ONIGERR_INVALID_GROUP_OPTION); + e("^(?Ii)", "", ONIGERR_INVALID_GROUP_OPTION); + x2("(?Ii)$", "", 0, 0); + x2("(?Ii)|", "", 0, 0); + e("(?Ii)|(?Ii)", "", ONIGERR_INVALID_GROUP_OPTION); + x2("a*", "aabcaaa", 0, 2); + x2("(?L)a*", "aabcaaa", 4, 7); + x2("(?L)a{4}|a{3}|b*", "baaaaabbb", 1, 5); + x2("(?L)a{3}|a{4}|b*", "baaaaabbb", 1, 5); + e("x(?L)xxxxx", "", ONIGERR_INVALID_GROUP_OPTION); + e("(?-L)x", "", ONIGERR_INVALID_GROUP_OPTION); + x3("(..)\\1", "abab", 0, 2, 1); + e("(?C)(..)\\1", "abab", ONIGERR_INVALID_BACKREF); + e("(?-C)", "", ONIGERR_INVALID_GROUP_OPTION); + e("(?C)(.)(.)(.)(?.)\\1", "abcdd", ONIGERR_NUMBERED_BACKREF_OR_CALL_NOT_ALLOWED); + x2("(?L)z|a\\g<0>a", "aazaa", 0, 5); + x2("(?Li)z|a\\g<0>a", "aazAA", 0, 5); + x2("(?Li:z|a\\g<0>a)", "aazAA", 0, 5); + x2("(?L)z|a\\g<0>a", "aazaaaazaaaa", 3, 12); + + // Issue #264 + n("(?iI)s", "\xc5\xbf"); + n("(?iI)[s]", "\xc5\xbf"); // FAIL + n("(?iI:s)", "\xc5\xbf"); + n("(?iI:[s])", "\xc5\xbf"); // FAIL + x2("(?iI)(?:[[:word:]])", "\xc5\xbf", 0, 2); + n("(?iI)(?W:[[:word:]])", "\xc5\xbf"); // FAIL + n("(?iI)(?W:\\w)", "\xc5\xbf"); + n("(?iI)(?W:[\\w])", "\xc5\xbf"); // FAIL + n("(?iI)(?W:\\p{Word})", "\xc5\xbf"); + n("(?iI)(?W:[\\p{Word}])", "\xc5\xbf"); // FAIL + + x2("(?iW:[[:word:]])", "\xc5\xbf", 0, 2); + x2("(?iW:[\\p{Word}])", "\xc5\xbf", 0, 2); + x2("(?iW:[\\w])", "\xc5\xbf", 0, 2); + n("(?iW:\\p{Word})", "\xc5\xbf"); + n("(?iW:\\w)", "\xc5\xbf"); + x2("(?i)\\p{Word}", "\xc5\xbf", 0, 2); + x2("(?i)\\w", "\xc5\xbf", 0, 2); + + x2("(?iW:[[:^word:]])", "\xc5\xbf", 0, 2); + x2("(?iW:[\\P{Word}])", "\xc5\xbf", 0, 2); + x2("(?iW:[\\W])", "\xc5\xbf", 0, 2); + x2("(?iW:\\P{Word})", "\xc5\xbf", 0, 2); + x2("(?iW:\\W)", "\xc5\xbf", 0, 2); + n("(?i)\\P{Word}", "\xc5\xbf"); + n("(?i)\\W", "\xc5\xbf"); + + x2("(?iW:[[:^word:]])", "s", 0, 1); + x2("(?iW:[\\P{Word}])", "s", 0, 1); + x2("(?iW:[\\W])", "s", 0, 1); + n("(?iW:\\P{Word})", "s"); + n("(?iW:\\W)", "s"); + n("(?i)\\P{Word}", "s"); + n("(?i)\\W", "s"); + + x2("[[:punct:]]", ":", 0, 1); + x2("[[:punct:]]", "$", 0, 1); + x2("[[:punct:]]+", "$+<=>^`|~", 0, 9); + n("[[:punct:]]", "a"); + n("[[:punct:]]", "7"); + x2("\\p{PosixPunct}+", "$ツヲ", 0, 3); + + x2("\\A.*\\R", "\n", 0, 1); + x2("\\A\\O*\\R", "\n", 0, 1); + x2("\\A\\n*\\R", "\n", 0, 1); + x2("\\A\\R*\\R", "\n", 0, 1); + x2("\\At*\\R", "\n", 0, 1); + + x2("\\A.{0,99}\\R", "\n", 0, 1); + x2("\\A\\O{0,99}\\R", "\n", 0, 1); + x2("\\A\\n{0,99}\\R", "\n", 0, 1); + x2("\\A\\R{0,99}\\R", "\n", 0, 1); + x2("\\At{0,99}\\R", "\n", 0, 1); + + x2("\\A.*\\n", "\n", 0, 1); // \n + x2("\\A.{0,99}\\n", "\n", 0, 1); + x2("\\A.*\\O", "\n", 0, 1); // \O + x2("\\A.{0,99}\\O", "\n", 0, 1); + x2("\\A.*\\s", "\n", 0, 1); // \s + x2("\\A.{0,99}\\s", "\n", 0, 1); + + + n("a(b|)+d", "abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbcd"); /* https://www.haijin-boys.com/discussions/5079 */ + n(" \xfd", ""); /* https://bugs.php.net/bug.php?id=77370 */ + /* can't use \xfc00.. because compiler error: hex escape sequence out of range */ + n("()0\\xfc00000\\xfc00000\\xfc00000\xfc", ""); /* https://bugs.php.net/bug.php?id=77371 */ + x2("000||0\xfa", "0", 0, 0); /* https://bugs.php.net/bug.php?id=77381 */ + e("(?i)000000000000000000000\xf0", "", ONIGERR_INVALID_CODE_POINT_VALUE); /* https://bugs.php.net/bug.php?id=77382 */ + n("0000\\\xf5", "0"); /* https://bugs.php.net/bug.php?id=77385 */ + n("(?i)FFF00000000000000000\xfd", ""); /* https://bugs.php.net/bug.php?id=77394 */ + n("(?x)\n (?:*]|&&|\\|\\||\\?|\\*\\/|^await|[^\\._$[:alnum:]]await|^return|[^\\._$[:alnum:]]return|^default|[^\\._$[:alnum:]]default|^yield|[^\\._$[:alnum:]]yield|^)\\s*\n (?!<\\s*[_$[:alpha:]][_$[:alnum:]]*((\\s+extends\\s+[^=>])|,)) # look ahead is not type parameter of arrow\n (?=(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?))", " while (i < len && f(array[i]))"); /* Issue #192 */ + + x2("aaaaaaaaaaaaaaaaaaaaaaa縺C", "aaaaaaaaaaaaaaaaaaaaaaa縺C", 0, 27); /* Issue #221 */ + n("d{65538}+{61533} ", "d{65538}+{61533} "); + + e("x{55380}{77590}", "", ONIGERR_TOO_BIG_NUMBER_FOR_REPEAT_RANGE); + e("(xyz){40000}{99999}(?vv)", "", ONIGERR_TOO_BIG_NUMBER_FOR_REPEAT_RANGE); + e("f{90000,90000}{80000,80000}", "", ONIGERR_TOO_BIG_NUMBER_FOR_REPEAT_RANGE); + n("f{90000,90000}{80000,80001}", ""); + + x2("\\p{Common}", "\xe3\x8b\xbf", 0, 3); /* U+32FF */ + x2("\\p{In_Enclosed_CJK_Letters_and_Months}", "\xe3\x8b\xbf", 0, 3); /* U+32FF */ + + e("\\x{7fffffff}", "", ONIGERR_INVALID_CODE_POINT_VALUE); + e("[\\x{7fffffff}]", "", ONIGERR_INVALID_CODE_POINT_VALUE); + e("\\u040", "@", ONIGERR_INVALID_CODE_POINT_VALUE); + e("(?\\g)", "zzzz", ONIGERR_NEVER_ENDING_RECURSION); + e("(*FOO)", "abcdefg", ONIGERR_UNDEFINED_CALLOUT_NAME); + e("*", "abc", ONIGERR_TARGET_OF_REPEAT_OPERATOR_NOT_SPECIFIED); + e("|*", "abc", ONIGERR_TARGET_OF_REPEAT_OPERATOR_NOT_SPECIFIED); + e("(?i)*", "abc", ONIGERR_TARGET_OF_REPEAT_OPERATOR_NOT_SPECIFIED); + e("(?:*)", "abc", ONIGERR_TARGET_OF_REPEAT_OPERATOR_NOT_SPECIFIED); + e("(?m:*)", "abc", ONIGERR_TARGET_OF_REPEAT_OPERATOR_NOT_SPECIFIED); + x2("(?:)*", "abc", 0, 0); + e("^*", "abc", ONIGERR_TARGET_OF_REPEAT_OPERATOR_INVALID); + e("abc|?", "", ONIGERR_TARGET_OF_REPEAT_OPERATOR_NOT_SPECIFIED); + + fprintf(stdout, + "\nRESULT SUCC: %4d, FAIL: %d, ERROR: %d (by Oniguruma %s)\n", + nsucc, nfail, nerror, onig_version()); + + onig_region_free(region, 1); + onig_end(); + + return ((nfail == 0 && nerror == 0) ? 0 : -1); +} diff --git a/vendor/onig/testc.c b/vendor/oniguruma/oniguruma/test/testc.c similarity index 82% rename from vendor/onig/testc.c rename to vendor/oniguruma/oniguruma/test/testc.c index 52cbce4..6c4125c 100644 --- a/vendor/onig/testc.c +++ b/vendor/oniguruma/oniguruma/test/testc.c @@ -1,95 +1,37 @@ /* - * This program was generated by testconv.rb. + * testc.c + * Copyright (c) 2019-2021 K.Kosako */ -#include "config.h" -#ifdef ONIG_ESCAPE_UCHAR_COLLISION -#undef ONIG_ESCAPE_UCHAR_COLLISION -#endif #include - -#ifdef POSIX_TEST -#include "onigmoposix.h" -#else -#include "onigmo.h" -#endif - #include +#include "oniguruma.h" + #define SLEN(s) strlen(s) static int nsucc = 0; static int nfail = 0; static int nerror = 0; -static FILE* err_file; +#ifdef __TRUSTINSOFT_ANALYZER__ +static int nall = 0; +#endif -#ifndef POSIX_TEST +static FILE* err_file; static OnigRegion* region; -#endif static void xx(char* pattern, char* str, int from, int to, int mem, int not) { - int r; - -#ifdef POSIX_TEST - regex_t reg; - char buf[200]; - regmatch_t pmatch[25]; - - r = regcomp(®, pattern, REG_EXTENDED | REG_NEWLINE); - if (r) { - regerror(r, ®, buf, sizeof(buf)); - fprintf(err_file, "ERROR: %s\n", buf); - nerror++; - return ; - } - - r = regexec(®, str, reg.re_nsub + 1, pmatch, 0); - if (r != 0 && r != REG_NOMATCH) { - regerror(r, ®, buf, sizeof(buf)); - fprintf(err_file, "ERROR: %s\n", buf); - nerror++; - return ; - } - - if (r == REG_NOMATCH) { - if (not) { - fprintf(stdout, "OK(N): /%s/ '%s'\n", pattern, str); - nsucc++; - } - else { - fprintf(stdout, "FAIL: /%s/ '%s'\n", pattern, str); - nfail++; - } - } - else { - if (not) { - fprintf(stdout, "FAIL(N): /%s/ '%s'\n", pattern, str); - nfail++; - } - else { - if (pmatch[mem].rm_so == from && pmatch[mem].rm_eo == to) { - fprintf(stdout, "OK: /%s/ '%s'\n", pattern, str); - nsucc++; - } - else { - fprintf(stdout, "FAIL: /%s/ '%s' %d-%d : %d-%d\n", pattern, str, - (int)from, (int)to, (int)pmatch[mem].rm_so, (int)pmatch[mem].rm_eo); - nfail++; - } - } - } - regfree(®); +#ifdef __TRUSTINSOFT_ANALYZER__ + if (nall++ % TIS_TEST_CHOOSE_MAX != TIS_TEST_CHOOSE_CURRENT) return; +#endif -#else + int r; regex_t* reg; OnigErrorInfo einfo; - OnigSyntaxType syn = *ONIG_SYNTAX_DEFAULT; - - /* ONIG_OPTION_OFF(syn.options, ONIG_OPTION_ASCII_RANGE); */ r = onig_new(®, (UChar* )pattern, (UChar* )(pattern + SLEN(pattern)), - ONIG_OPTION_DEFAULT, ONIG_ENCODING_EUC_JP, &syn, &einfo); + ONIG_OPTION_DEFAULT, ONIG_ENCODING_EUC_JP, ONIG_SYNTAX_DEFAULT, &einfo); if (r) { char s[ONIG_MAX_ERROR_MESSAGE_LEN]; onig_error_code_to_str((UChar* )s, r, &einfo); @@ -99,8 +41,8 @@ static void xx(char* pattern, char* str, int from, int to, int mem, int not) } r = onig_search(reg, (UChar* )str, (UChar* )(str + SLEN(str)), - (UChar* )str, (UChar* )(str + SLEN(str)), - region, ONIG_OPTION_NONE); + (UChar* )str, (UChar* )(str + SLEN(str)), + region, ONIG_OPTION_NONE); if (r < ONIG_MISMATCH) { char s[ONIG_MAX_ERROR_MESSAGE_LEN]; onig_error_code_to_str((UChar* )s, r); @@ -131,13 +73,12 @@ static void xx(char* pattern, char* str, int from, int to, int mem, int not) } else { fprintf(stdout, "FAIL: /%s/ '%s' %d-%d : %d-%d\n", pattern, str, - (int)from, (int)to, (int)region->beg[mem], (int)region->end[mem]); + from, to, region->beg[mem], region->end[mem]); nfail++; } } } onig_free(reg); -#endif } static void x2(char* pattern, char* str, int from, int to) @@ -157,13 +98,13 @@ static void n(char* pattern, char* str) extern int main(int argc, char* argv[]) { - err_file = stdout; + OnigEncoding use_encs[1]; + + use_encs[0] = ONIG_ENCODING_EUC_JP; + onig_initialize(use_encs, sizeof(use_encs)/sizeof(use_encs[0])); -#ifdef POSIX_TEST - reg_set_encoding(REG_POSIX_ENCODING_EUC_JP); -#else + err_file = stdout; region = onig_region_new(); -#endif x2("", "", 0, 0); x2("^", "", 0, 0); @@ -575,6 +516,114 @@ extern int main(int argc, char* argv[]) x2("(?:()|()|()|()|()|())*\\2\\5", "", 0, 0); x2("(?:()|()|()|(x)|()|())*\\2b\\5", "b", 0, 1); x2("\\xED\\xF2", "\xed\xf2", 0, 2); + x2("[0-9-a]", "-", 0, 1); // PR#44 + n("[0-9-a]", ":"); // PR#44 + x3("(\\(((?:[^(]|\\g<1>)*)\\))", "(abc)(abc)", 1, 4, 2); // PR#43 + x2("\\o{101}", "A", 0, 1); + x2("(?:\\k'+1'B|(A)C)*", "ACAB", 0, 4); // relative backref by positive number + x2("\\g<+2>(abc)(ABC){0}", "ABCabc", 0, 6); // relative call by positive number + x2("A\\g'0'|B()", "AAAAB", 0, 5); + x3("(A\\g'0')|B", "AAAAB", 0, 5, 1); + x2("(a*)(?(1))aa", "aaaaa", 0, 5); + x2("(a*)(?(-1))aa", "aaaaa", 0, 5); + x2("(?aaa)(?('name'))aa", "aaaaa", 0, 5); + x2("(a)(?(1)aa|bb)a", "aaaaa", 0, 4); + x2("(?:aa|())(?(<1>)aa|bb)a", "aabba", 0, 5); + x2("(?:aa|())(?('1')aa|bb|cc)a", "aacca", 0, 5); + x3("(a*)(?(1)aa|a)b", "aaab", 0, 1, 1); + n("(a)(?(1)a|b)c", "abc"); + x2("(a)(?(1)|)c", "ac", 0, 2); + n("(?()aaa|bbb)", "bbb"); + x2("(a)(?(1+0)b|c)d", "abd", 0, 3); + x2("(?:(?'name'a)|(?'name'b))(?('name')c|d)e", "ace", 0, 3); + x2("(?:(?'name'a)|(?'name'b))(?('name')c|d)e", "bce", 0, 3); + x2("\\R", "\r\n", 0, 2); + x2("\\R", "\r", 0, 1); + x2("\\R", "\n", 0, 1); + x2("\\R", "\x0b", 0, 1); + n("\\R\\n", "\r\n"); + n("\\R", "\xc2\x85"); // because euc-jp is not Unicode + x2("\\N", "a", 0, 1); + n("\\N", "\n"); + n("(?m:\\N)", "\n"); + n("(?-m:\\N)", "\n"); + x2("\\O", "a", 0, 1); + x2("\\O", "\n", 0, 1); + x2("(?m:\\O)", "\n", 0, 1); + x2("(?-m:\\O)", "\n", 0, 1); + x2("\\K", "a", 0, 0); + x2("a\\K", "a", 1, 1); + x2("a\\Kb", "ab", 1, 2); + x2("(a\\Kb|ac\\Kd)", "acd", 2, 3); + x2("(a\\Kb|\\Kac\\K)*", "acababacab", 9, 10); + + x2("(?~)", "", 0, 0); + x2("(?~)", "A", 0, 0); + x2("aaaaa(?~)", "aaaaaaaaaa", 0, 5); + x2("(?~(?:|aaa))", "aaa", 0, 0); + x2("(?~aaa|)", "aaa", 0, 0); + x2("a(?~(?~)).", "abcdefghijklmnopqrstuvwxyz", 0, 26); // !!! + x2("/\\*(?~\\*/)\\*/", "/* */ */", 0, 5); + x2("(?~\\w+)zzzzz", "zzzzz", 0, 5); + x2("(?~\\w*)zzzzz", "zzzzz", 0, 5); + x2("(?~A.C|B)", "ABC", 0, 0); + x2("(?~XYZ|ABC)a", "ABCa", 1, 4); + x2("(?~XYZ|ABC)a", "aABCa", 0, 1); + x2("<[^>]*>(?~[<>])]*>", "vvv ", 0, 10); + x2("(?~ab)", "ccc\ndab", 0, 5); + x2("(?m:(?~ab))", "ccc\ndab", 0, 5); + x2("(?-m:(?~ab))", "ccc\ndab", 0, 5); + x2("(?~abc)xyz", "xyz012345678901234567890123456789abc", 0, 3); + + // absent with expr + x2("(?~|78|\\d*)", "123456789", 0, 6); + x2("(?~|def|(?:abc|de|f){0,100})", "abcdedeabcfdefabc", 0, 11); + x2("(?~|ab|.*)", "ccc\nddd", 0, 3); + x2("(?~|ab|\\O*)", "ccc\ndab", 0, 5); + x2("(?~|ab|\\O{2,10})", "ccc\ndab", 0, 5); + x2("(?~|ab|\\O{1,10})", "ab", 1, 2); + n("(?~|ab|\\O{2,10})", "ab"); + x2("(?~|abc|\\O{1,10})", "abc", 1, 3); + x2("(?~|ab|\\O{5,10})|abc", "abc", 0, 3); + x2("(?~|ab|\\O{1,10})", "cccccccccccab", 0, 10); + x2("(?~|aaa|)", "aaa", 0, 0); + x2("(?~||a*)", "aaaaaa", 0, 0); + x2("(?~||a*?)", "aaaaaa", 0, 0); + x2("(a)(?~|b|\\1)", "aaaaaa", 0, 2); + x2("(a)(?~|bb|(?:a\\1)*)", "aaaaaa", 0, 5); + x2("(b|c)(?~|abac|(?:a\\1)*)", "abababacabab", 1, 4); + n("(?~|c|a*+)a", "aaaaa"); + x2("(?~|aaaaa|a*+)", "aaaaa", 0, 0); + x2("(?~|aaaaaa|a*+)b", "aaaaaab", 1, 7); + x2("(?~|abcd|(?>))", "zzzabcd", 0, 0); + x2("(?~|abc|a*?)", "aaaabc", 0, 0); + + // absent stopper + x2("(?~|abc)a*", "aaaaaabc", 0, 5); + x2("(?~|abc)a*z|aaaaaabc", "aaaaaabc", 0, 8); + x2("(?~|aaaaaa)a*", "aaaaaa", 0, 0); + x2("(?~|abc)aaaa|aaaabc", "aaaabc", 0, 6); + x2("(?>(?~|abc))aaaa|aaaabc", "aaaabc", 0, 6); + x2("(?~|)a", "a", 0, 1); + n("(?~|a)a", "a"); + x2("(?~|a)(?~|)a", "a", 0, 1); + x2("(?~|a).*(?~|)a", "bbbbbbbbbbbbbbbbbbbba", 0, 21); + x2("(?~|abc).*(xyz|pqr)(?~|)abc", "aaaaxyzaaapqrabc", 0, 16); + x2("(?~|abc).*(xyz|pqr)(?~|)abc", "aaaaxyzaaaabcpqrabc", 11, 19); + n("\\A(?~|abc).*(xyz|pqrabc)(?~|)abc", "aaaaxyzaaaabcpqrabcabc"); + x2("(?~|a)(?~|)c|ab|a|", "ab", 0, 2); + x2("(?~|a)((?~|)c|ab|a|)", "ab", 0, 0); + x2("(?~|a)((?>(?~|))c|ab|a|)", "ab", 0, 0); + + // extended grapheme cluster + + // CR + LF + n(".\\y\\O", "\x0d\x0a"); + x2(".\\Y\\O", "\x0d\x0a", 0, 2); + n("\\X\\X", "\x0d\x0a"); + x2("^\\X$", "\x0d\x0a", 0, 2); + x2("^\\X\\X\\X$", "ab\x0d\x0a", 0, 4); + x2("", "、「", 0, 0); x2("、「", "、「", 0, 2); n("、、", "、「"); @@ -586,9 +635,9 @@ extern int main(int argc, char* argv[]) x2("\\xca\\xb8", "\xca\xb8", 0, 2); x2(".", "、「", 0, 2); x2("..", "、ォ、ュ", 0, 4); - x2("(?u)\\w", "、ェ", 0, 2); - n("(?u)\\W", "、「"); - x2("(?u)[\\W]", "、ヲ$", 2, 3); + x2("\\w", "、ェ", 0, 2); + n("\\W", "、「"); + x2("[\\W]", "、ヲ$", 2, 3); x2("\\S", "、ス", 0, 2); x2("\\S", "エチ", 0, 2); x2("\\b", "オ、 ", 0, 0); @@ -600,27 +649,27 @@ extern int main(int argc, char* argv[]) n("[、ハ、ヒ]", "、フ"); x2("[、ヲ-、ェ]", "、ィ", 0, 2); n("[^、ア]", "、ア"); - x2("(?u)[\\w]", "、ヘ", 0, 2); + x2("[\\w]", "、ヘ", 0, 2); n("[\\d]", "、ユ"); x2("[\\D]", "、マ", 0, 2); n("[\\s]", "、ッ"); x2("[\\S]", "、リ", 0, 2); - x2("(?u)[\\w\\d]", "、", 0, 2); - x2("(?u)[\\w\\d]", " 、", 3, 5); - n("(?u)\\wオエシヨ", " オエシヨ"); - x2("(?u)オエ\\Wシヨ", "オエ シヨ", 0, 5); + x2("[\\w\\d]", "、", 0, 2); + x2("[\\w\\d]", " 、", 3, 5); + n("\\wオエシヨ", " オエシヨ"); + x2("オエ\\Wシヨ", "オエ シヨ", 0, 5); x2("、「.、、.、ヲ", "、「、「、、、、、ヲ", 0, 10); - x2("(?u).\\w、ヲ\\W..、セ", "、ィ、ヲ、ヲ 、ヲ、セ、セ", 0, 13); - x2("(?u)\\s\\w、ウ、ウ、ウ", " 、ウ、ウ、ウ、ウ", 0, 9); + x2(".\\w、ヲ\\W..、セ", "、ィ、ヲ、ヲ 、ヲ、セ、セ", 0, 13); + x2("\\s\\w、ウ、ウ、ウ", " 、ウ、ウ、ウ、ウ", 0, 9); x2("、「、「.、ア", "、「、「、ア、ア", 0, 8); n(".、、", "、、、ィ"); x2(".、ェ", "、ェ、ェ", 0, 4); x2("^、「", "、「", 0, 2); x2("^、$", "、", 0, 2); - x2("(?u)^\\w$", "、ヒ", 0, 2); - x2("(?u)^\\w、ォ、ュ、ッ、ア、ウ$", "z、ォ、ュ、ッ、ア、ウ", 0, 11); - x2("(?u)^\\w...、ヲ、ィ、ェ$", "z、「、、、ヲ、ヲ、ィ、ェ", 0, 13); - x2("(?u)\\w\\w\\s\\W、ェ、ェ、ェ\\d", "a、ェ 、ェ、ェ、ェ4", 0, 12); + x2("^\\w$", "、ヒ", 0, 2); + x2("^\\w、ォ、ュ、ッ、ア、ウ$", "z、ォ、ュ、ッ、ア、ウ", 0, 11); + x2("^\\w...、ヲ、ィ、ェ$", "z、「、、、ヲ、ヲ、ィ、ェ", 0, 13); + x2("\\w\\w\\s\\W、ェ、ェ、ェ\\d", "a、ェ 、ェ、ェ、ェ4", 0, 12); x2("\\A、ソ、チ、ト", "、ソ、チ、ト", 0, 6); x2("、爨皃秉\Z", "、爨皃", 0, 6); x2("、ォ、ュ、ッ\\z", "、ォ、ュ、ッ", 0, 6); @@ -676,9 +725,9 @@ extern int main(int argc, char* argv[]) x2("オエ|シヨ\\Z", "シヨ\n", 0, 2); x2("オエ|シヨ\\z", "シヨオエ", 2, 4); x2("オエ|シヨ\\z", "シヨ", 0, 2); - x2("(?u)\\w|\\s", "、ェ", 0, 2); - x2("(?u)\\w|%", "%、ェ", 0, 1); - x2("(?u)\\w|[&$]", "、ヲ&", 0, 2); + x2("\\w|\\s", "、ェ", 0, 2); + x2("\\w|%", "%、ェ", 0, 1); + x2("\\w|[&$]", "、ヲ&", 0, 2); x2("[、、-、ア]", "、ヲ", 0, 2); x2("[、、-、ア]|[^、ォ-、ウ]", "、「", 0, 2); x2("[、、-、ア]|[^、ォ-、ウ]", "、ォ", 0, 2); @@ -809,8 +858,8 @@ extern int main(int argc, char* argv[]) x3("(((((((、ン*)、レ))))))、ヤ\\7", "、ン、ン、ン、レ、ヤ、ン、ン、ン", 0, 6, 7); x2("(、マ)(、メ)(、ユ)\\2\\1\\3", "、マ、メ、ユ、メ、マ、ユ", 0, 12); x2("([、ュ-、ア])\\1", "、ッ、ッ", 0, 4); - x2("(?u)(\\w\\d\\s)\\1", "、「5 、「5 ", 0, 8); - n("(?u)(\\w\\d\\s)\\1", "、「5 、「5"); + x2("(\\w\\d\\s)\\1", "、「5 、「5 ", 0, 8); + n("(\\w\\d\\s)\\1", "、「5 、「5"); x2("(テッ。ゥ|[、「-、ヲ]{3})\\1", "テッ。ゥテッ。ゥ", 0, 8); x2("...(テッ。ゥ|[、「-、ヲ]{3})\\1", "、「a、「テッ。ゥテッ。ゥ", 0, 13); x2("(テッ。ゥ|[、「-、ヲ]{3})\\1", "、ヲ、、、ヲ、ヲ、、、ヲ", 0, 12); @@ -849,14 +898,17 @@ extern int main(int argc, char* argv[]) n("[^[^a-z、「、、、ヲ]&&[^bcdefg、ヲ、ィ、ェ]g-w]", "2"); x2("a・ミ。シ・ク・逾、ホ・タ・ヲ・・。シ・ノ<\\/b>", "a・ミ。シ・ク・逾、ホ・タ・ヲ・・。シ・ノ", 0, 32); x2(".・ミ。シ・ク・逾、ホ・タ・ヲ・・。シ・ノ<\\/b>", "a・ミ。シ・ク・逾、ホ・タ・ヲ・・。シ・ノ", 0, 32); + x2("\\n?\\z", "、ウ、、ヒ、チ、マ", 10, 10); + + x2("\\p{Hiragana}", "、ヤ", 0, 2); + n("\\P{Hiragana}", "、ヤ"); + fprintf(stdout, - "\nRESULT SUCC: %d, FAIL: %d, ERROR: %d (by Onigmo %s)\n", + "\nRESULT SUCC: %4d, FAIL: %d, ERROR: %d (by Oniguruma %s)\n", nsucc, nfail, nerror, onig_version()); -#ifndef POSIX_TEST onig_region_free(region, 1); onig_end(); -#endif return ((nfail == 0 && nerror == 0) ? 0 : -1); } diff --git a/vendor/oniguruma/oniguruma/test/testp.c b/vendor/oniguruma/oniguruma/test/testp.c new file mode 100644 index 0000000..de577a2 --- /dev/null +++ b/vendor/oniguruma/oniguruma/test/testp.c @@ -0,0 +1,613 @@ +/* + * testp.c + * Copyright (c) 2020-2021 K.Kosako + */ +#include +#include + +#include "onigposix.h" + +#define SLEN(s) strlen(s) + +static int nsucc = 0; +static int nfail = 0; +static int nerror = 0; + +static FILE* err_file; + +static void +xx(char* pattern, char* str, int from, int to, int mem, int not) +{ + int r; + regex_t reg; + char buf[200]; + regmatch_t pmatch[25]; + + r = regcomp(®, pattern, REG_EXTENDED | REG_NEWLINE); + if (r) { + regerror(r, ®, buf, sizeof(buf)); + fprintf(err_file, "ERROR: %s\n", buf); + nerror++; + return ; + } + + r = regexec(®, str, reg.re_nsub + 1, pmatch, 0); + if (r != 0 && r != REG_NOMATCH) { + regerror(r, ®, buf, sizeof(buf)); + fprintf(err_file, "ERROR: %s\n", buf); + nerror++; + return ; + } + + if (r == REG_NOMATCH) { + if (not) { + fprintf(stdout, "OK(N): /%s/ '%s'\n", pattern, str); + nsucc++; + } + else { + fprintf(stdout, "FAIL: /%s/ '%s'\n", pattern, str); + nfail++; + } + } + else { + if (not) { + fprintf(stdout, "FAIL(N): /%s/ '%s'\n", pattern, str); + nfail++; + } + else { + if (pmatch[mem].rm_so == from && pmatch[mem].rm_eo == to) { + fprintf(stdout, "OK: /%s/ '%s'\n", pattern, str); + nsucc++; + } + else { + fprintf(stdout, "FAIL: /%s/ '%s' %d-%d : %d-%d\n", pattern, str, + from, to, pmatch[mem].rm_so, pmatch[mem].rm_eo); + nfail++; + } + } + } + regfree(®); +} + +static void x2(char* pattern, char* str, int from, int to) +{ + xx(pattern, str, from, to, 0, 0); +} + +static void x3(char* pattern, char* str, int from, int to, int mem) +{ + xx(pattern, str, from, to, mem, 0); +} + +static void n(char* pattern, char* str) +{ + xx(pattern, str, 0, 0, 0, 1); +} + +extern int main(int argc, char* argv[]) +{ + err_file = stdout; + + reg_set_encoding(REG_POSIX_ENCODING_UTF8); + + x2("", "", 0, 0); + x2("^", "", 0, 0); + x2("$", "", 0, 0); + x2("\\G", "", 0, 0); + x2("\\A", "", 0, 0); + x2("\\Z", "", 0, 0); + x2("\\z", "", 0, 0); + x2("^$", "", 0, 0); + x2("\\ca", "\001", 0, 1); + x2("\\C-b", "\002", 0, 1); + x2("\\c\\\\", "\034", 0, 1); + x2("q[\\c\\\\]", "q\034", 0, 2); + x2("", "a", 0, 0); + x2("a", "a", 0, 1); + x2("\\x61", "a", 0, 1); + x2("aa", "aa", 0, 2); + x2("aaa", "aaa", 0, 3); + x2("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 0, 35); + x2("ab", "ab", 0, 2); + x2("b", "ab", 1, 2); + x2("bc", "abc", 1, 3); + x2("(?i:#RET#)", "#INS##RET#", 5, 10); + x2("\\17", "\017", 0, 1); + x2("\\x1f", "\x1f", 0, 1); + x2("a(?#....\\\\JJJJ)b", "ab", 0, 2); + x2("(?x) G (o O(?-x)oO) g L", "GoOoOgLe", 0, 7); + x2(".", "a", 0, 1); + n(".", ""); + x2("..", "ab", 0, 2); + x2("\\w", "e", 0, 1); + n("\\W", "e"); + x2("\\s", " ", 0, 1); + x2("\\S", "b", 0, 1); + x2("\\d", "4", 0, 1); + n("\\D", "4"); + x2("\\b", "z ", 0, 0); + x2("\\b", " z", 1, 1); + x2("\\B", "zz ", 1, 1); + x2("\\B", "z ", 2, 2); + x2("\\B", " z", 0, 0); + x2("[ab]", "b", 0, 1); + n("[ab]", "c"); + x2("[a-z]", "t", 0, 1); + n("[^a]", "a"); + x2("[^a]", "\n", 0, 1); + x2("[]]", "]", 0, 1); + n("[^]]", "]"); + x2("[\\^]+", "0^^1", 1, 3); + x2("[b-]", "b", 0, 1); + x2("[b-]", "-", 0, 1); + x2("[\\w]", "z", 0, 1); + n("[\\w]", " "); + x2("[\\W]", "b$", 1, 2); + x2("[\\d]", "5", 0, 1); + n("[\\d]", "e"); + x2("[\\D]", "t", 0, 1); + n("[\\D]", "3"); + x2("[\\s]", " ", 0, 1); + n("[\\s]", "a"); + x2("[\\S]", "b", 0, 1); + n("[\\S]", " "); + x2("[\\w\\d]", "2", 0, 1); + n("[\\w\\d]", " "); + x2("[[:upper:]]", "B", 0, 1); + x2("[*[:xdigit:]+]", "+", 0, 1); + x2("[*[:xdigit:]+]", "GHIKK-9+*", 6, 7); + x2("[*[:xdigit:]+]", "-@^+", 3, 4); + n("[[:upper]]", "A"); + x2("[[:upper]]", ":", 0, 1); + x2("[\\044-\\047]", "\046", 0, 1); + x2("[\\x5a-\\x5c]", "\x5b", 0, 1); + x2("[\\x6A-\\x6D]", "\x6c", 0, 1); + n("[\\x6A-\\x6D]", "\x6E"); + n("^[0-9A-F]+ 0+ UNDEF ", "75F 00000000 SECT14A notype () External | _rb_apply"); + x2("[\\[]", "[", 0, 1); + x2("[\\]]", "]", 0, 1); + x2("[&]", "&", 0, 1); + x2("[[ab]]", "b", 0, 1); + x2("[[ab]c]", "c", 0, 1); + n("[[^a]]", "a"); + n("[^[a]]", "a"); + x2("[[ab]&&bc]", "b", 0, 1); + n("[[ab]&&bc]", "a"); + n("[[ab]&&bc]", "c"); + x2("[a-z&&b-y&&c-x]", "w", 0, 1); + n("[^a-z&&b-y&&c-x]", "w"); + x2("[[^a&&a]&&a-z]", "b", 0, 1); + n("[[^a&&a]&&a-z]", "a"); + x2("[[^a-z&&bcdef]&&[^c-g]]", "h", 0, 1); + n("[[^a-z&&bcdef]&&[^c-g]]", "c"); + x2("[^[^abc]&&[^cde]]", "c", 0, 1); + x2("[^[^abc]&&[^cde]]", "e", 0, 1); + n("[^[^abc]&&[^cde]]", "f"); + x2("[a-&&-a]", "-", 0, 1); + n("[a\\-&&\\-a]", "&"); + n("\\wabc", " abc"); + x2("a\\Wbc", "a bc", 0, 4); + x2("a.b.c", "aabbc", 0, 5); + x2(".\\wb\\W..c", "abb bcc", 0, 7); + x2("\\s\\wzzz", " zzzz", 0, 5); + x2("aa.b", "aabb", 0, 4); + n(".a", "ab"); + x2(".a", "aa", 0, 2); + x2("^a", "a", 0, 1); + x2("^a$", "a", 0, 1); + x2("^\\w$", "a", 0, 1); + n("^\\w$", " "); + x2("^\\wab$", "zab", 0, 3); + x2("^\\wabcdef$", "zabcdef", 0, 7); + x2("^\\w...def$", "zabcdef", 0, 7); + x2("\\w\\w\\s\\Waaa\\d", "aa aaa4", 0, 8); + x2("\\A\\Z", "", 0, 0); + x2("\\Axyz", "xyz", 0, 3); + x2("xyz\\Z", "xyz", 0, 3); + x2("xyz\\z", "xyz", 0, 3); + x2("a\\Z", "a", 0, 1); + x2("\\Gaz", "az", 0, 2); + n("\\Gz", "bza"); + n("az\\G", "az"); + n("az\\A", "az"); + n("a\\Az", "az"); + x2("\\^\\$", "^$", 0, 2); + x2("^x?y", "xy", 0, 2); + x2("^(x?y)", "xy", 0, 2); + x2("\\w", "_", 0, 1); + n("\\W", "_"); + x2("(?=z)z", "z", 0, 1); + n("(?=z).", "a"); + x2("(?!z)a", "a", 0, 1); + n("(?!z)a", "z"); + x2("(?i:a)", "a", 0, 1); + x2("(?i:a)", "A", 0, 1); + x2("(?i:A)", "a", 0, 1); + n("(?i:A)", "b"); + x2("(?i:[A-Z])", "a", 0, 1); + x2("(?i:[f-m])", "H", 0, 1); + x2("(?i:[f-m])", "h", 0, 1); + n("(?i:[f-m])", "e"); + x2("(?i:[A-c])", "D", 0, 1); + n("(?i:[^a-z])", "A"); + n("(?i:[^a-z])", "a"); + x2("(?i:[!-k])", "Z", 0, 1); + x2("(?i:[!-k])", "7", 0, 1); + x2("(?i:[T-}])", "b", 0, 1); + x2("(?i:[T-}])", "{", 0, 1); + x2("(?i:\\?a)", "?A", 0, 2); + x2("(?i:\\*A)", "*a", 0, 2); + n(".", "\n"); + x2("(?m:.)", "\n", 0, 1); + x2("(?m:a.)", "a\n", 0, 2); + x2("(?m:.b)", "a\nb", 1, 3); + x2(".*abc", "dddabdd\nddabc", 8, 13); + x2("(?m:.*abc)", "dddabddabc", 0, 10); + n("(?i)(?-i)a", "A"); + n("(?i)(?-i:a)", "A"); + x2("a?", "", 0, 0); + x2("a?", "b", 0, 0); + x2("a?", "a", 0, 1); + x2("a*", "", 0, 0); + x2("a*", "a", 0, 1); + x2("a*", "aaa", 0, 3); + x2("a*", "baaaa", 0, 0); + n("a+", ""); + x2("a+", "a", 0, 1); + x2("a+", "aaaa", 0, 4); + x2("a+", "aabbb", 0, 2); + x2("a+", "baaaa", 1, 5); + x2(".?", "", 0, 0); + x2(".?", "f", 0, 1); + x2(".?", "\n", 0, 0); + x2(".*", "", 0, 0); + x2(".*", "abcde", 0, 5); + x2(".+", "z", 0, 1); + x2(".+", "zdswer\n", 0, 6); + x2("(.*)a\\1f", "babfbac", 0, 4); + x2("(.*)a\\1f", "bacbabf", 3, 7); + x2("((.*)a\\2f)", "bacbabf", 3, 7); + x2("(.*)a\\1f", "baczzzzzz\nbazz\nzzzzbabf", 19, 23); + x2("a|b", "a", 0, 1); + x2("a|b", "b", 0, 1); + x2("|a", "a", 0, 0); + x2("(|a)", "a", 0, 0); + x2("ab|bc", "ab", 0, 2); + x2("ab|bc", "bc", 0, 2); + x2("z(?:ab|bc)", "zbc", 0, 3); + x2("a(?:ab|bc)c", "aabc", 0, 4); + x2("ab|(?:ac|az)", "az", 0, 2); + x2("a|b|c", "dc", 1, 2); + x2("a|b|cd|efg|h|ijk|lmn|o|pq|rstuvwx|yz", "pqr", 0, 2); + n("a|b|cd|efg|h|ijk|lmn|o|pq|rstuvwx|yz", "mn"); + x2("a|^z", "ba", 1, 2); + x2("a|^z", "za", 0, 1); + x2("a|\\Gz", "bza", 2, 3); + x2("a|\\Gz", "za", 0, 1); + x2("a|\\Az", "bza", 2, 3); + x2("a|\\Az", "za", 0, 1); + x2("a|b\\Z", "ba", 1, 2); + x2("a|b\\Z", "b", 0, 1); + x2("a|b\\z", "ba", 1, 2); + x2("a|b\\z", "b", 0, 1); + x2("\\w|\\s", " ", 0, 1); + n("\\w|\\w", " "); + x2("\\w|%", "%", 0, 1); + x2("\\w|[&$]", "&", 0, 1); + x2("[b-d]|[^e-z]", "a", 0, 1); + x2("(?:a|[c-f])|bz", "dz", 0, 1); + x2("(?:a|[c-f])|bz", "bz", 0, 2); + x2("abc|(?=zz)..f", "zzf", 0, 3); + x2("abc|(?!zz)..f", "abf", 0, 3); + x2("(?=za)..a|(?=zz)..a", "zza", 0, 3); + n("(?>a|abd)c", "abdc"); + x2("(?>abd|a)c", "abdc", 0, 4); + x2("a?|b", "a", 0, 1); + x2("a?|b", "b", 0, 0); + x2("a?|b", "", 0, 0); + x2("a*|b", "aa", 0, 2); + x2("a*|b*", "ba", 0, 0); + x2("a*|b*", "ab", 0, 1); + x2("a+|b*", "", 0, 0); + x2("a+|b*", "bbb", 0, 3); + x2("a+|b*", "abbb", 0, 1); + n("a+|b+", ""); + x2("(a|b)?", "b", 0, 1); + x2("(a|b)*", "ba", 0, 2); + x2("(a|b)+", "bab", 0, 3); + x2("(ab|ca)+", "caabbc", 0, 4); + x2("(ab|ca)+", "aabca", 1, 5); + x2("(ab|ca)+", "abzca", 0, 2); + x2("(a|bab)+", "ababa", 0, 5); + x2("(a|bab)+", "ba", 1, 2); + x2("(a|bab)+", "baaaba", 1, 4); + x2("(?:a|b)(?:a|b)", "ab", 0, 2); + x2("(?:a*|b*)(?:a*|b*)", "aaabbb", 0, 3); + x2("(?:a*|b*)(?:a+|b+)", "aaabbb", 0, 6); + x2("(?:a+|b+){2}", "aaabbb", 0, 6); + x2("h{0,}", "hhhh", 0, 4); + x2("(?:a+|b+){1,2}", "aaabbb", 0, 6); + n("ax{2}*a", "0axxxa1"); + n("a.{0,2}a", "0aXXXa0"); + n("a.{0,2}?a", "0aXXXa0"); + n("a.{0,2}?a", "0aXXXXa0"); + x2("^a{2,}?a$", "aaa", 0, 3); + x2("^[a-z]{2,}?$", "aaa", 0, 3); + x2("(?:a+|\\Ab*)cc", "cc", 0, 2); + n("(?:a+|\\Ab*)cc", "abcc"); + x2("(?:^a+|b+)*c", "aabbbabc", 6, 8); + x2("(?:^a+|b+)*c", "aabbbbc", 0, 7); + x2("a|(?i)c", "C", 0, 1); + x2("(?i)c|a", "C", 0, 1); + x2("(?i)c|a", "A", 0, 1); + x2("(?i:c)|a", "C", 0, 1); + n("(?i:c)|a", "A"); + x2("[abc]?", "abc", 0, 1); + x2("[abc]*", "abc", 0, 3); + x2("[^abc]*", "abc", 0, 0); + n("[^abc]+", "abc"); + x2("a?\?", "aaa", 0, 0); + x2("ba?\?b", "bab", 0, 3); + x2("a*?", "aaa", 0, 0); + x2("ba*?", "baa", 0, 1); + x2("ba*?b", "baab", 0, 4); + x2("a+?", "aaa", 0, 1); + x2("ba+?", "baa", 0, 2); + x2("ba+?b", "baab", 0, 4); + x2("(?:a?)?\?", "a", 0, 0); + x2("(?:a?\?)?", "a", 0, 0); + x2("(?:a?)+?", "aaa", 0, 1); + x2("(?:a+)?\?", "aaa", 0, 0); + x2("(?:a+)?\?b", "aaab", 0, 4); + x2("(?:ab)?{2}", "", 0, 0); + x2("(?:ab)?{2}", "ababa", 0, 4); + x2("(?:ab)*{0}", "ababa", 0, 0); + x2("(?:ab){3,}", "abababab", 0, 8); + n("(?:ab){3,}", "abab"); + x2("(?:ab){2,4}", "ababab", 0, 6); + x2("(?:ab){2,4}", "ababababab", 0, 8); + x2("(?:ab){2,4}?", "ababababab", 0, 4); + x2("(?:ab){,}", "ab{,}", 0, 5); + x2("(?:abc)+?{2}", "abcabcabc", 0, 6); + x2("(?:X*)(?i:xa)", "XXXa", 0, 4); + x2("(d+)([^abc]z)", "dddz", 0, 4); + x2("([^abc]*)([^abc]z)", "dddz", 0, 4); + x2("(\\w+)(\\wz)", "dddz", 0, 4); + x3("(a)", "a", 0, 1, 1); + x3("(ab)", "ab", 0, 2, 1); + x2("((ab))", "ab", 0, 2); + x3("((ab))", "ab", 0, 2, 1); + x3("((ab))", "ab", 0, 2, 2); + x3("((((((((((((((((((((ab))))))))))))))))))))", "ab", 0, 2, 20); + x3("(ab)(cd)", "abcd", 0, 2, 1); + x3("(ab)(cd)", "abcd", 2, 4, 2); + x3("()(a)bc(def)ghijk", "abcdefghijk", 3, 6, 3); + x3("(()(a)bc(def)ghijk)", "abcdefghijk", 3, 6, 4); + x2("(^a)", "a", 0, 1); + x3("(a)|(a)", "ba", 1, 2, 1); + x3("(^a)|(a)", "ba", 1, 2, 2); + x3("(a?)", "aaa", 0, 1, 1); + x3("(a*)", "aaa", 0, 3, 1); + x3("(a*)", "", 0, 0, 1); + x3("(a+)", "aaaaaaa", 0, 7, 1); + x3("(a+|b*)", "bbbaa", 0, 3, 1); + x3("(a+|b?)", "bbbaa", 0, 1, 1); + x3("(abc)?", "abc", 0, 3, 1); + x3("(abc)*", "abc", 0, 3, 1); + x3("(abc)+", "abc", 0, 3, 1); + x3("(xyz|abc)+", "abc", 0, 3, 1); + x3("([xyz][abc]|abc)+", "abc", 0, 3, 1); + x3("((?i:abc))", "AbC", 0, 3, 1); + x2("(abc)(?i:\\1)", "abcABC", 0, 6); + x3("((?m:a.c))", "a\nc", 0, 3, 1); + x3("((?=az)a)", "azb", 0, 1, 1); + x3("abc|(.abd)", "zabd", 0, 4, 1); + x2("(?:abc)|(ABC)", "abc", 0, 3); + x3("(?i:(abc))|(zzz)", "ABC", 0, 3, 1); + x3("a*(.)", "aaaaz", 4, 5, 1); + x3("a*?(.)", "aaaaz", 0, 1, 1); + x3("a*?(c)", "aaaac", 4, 5, 1); + x3("[bcd]a*(.)", "caaaaz", 5, 6, 1); + x3("(\\Abb)cc", "bbcc", 0, 2, 1); + n("(\\Abb)cc", "zbbcc"); + x3("(^bb)cc", "bbcc", 0, 2, 1); + n("(^bb)cc", "zbbcc"); + x3("cc(bb$)", "ccbb", 2, 4, 1); + n("cc(bb$)", "ccbbb"); + n("(\\1)", ""); + n("\\1(a)", "aa"); + n("(a(b)\\1)\\2+", "ababb"); + n("(?:(?:\\1|z)(a))+$", "zaa"); + x2("(?:(?:\\1|z)(a))+$", "zaaa", 0, 4); + x2("(a)(?=\\1)", "aa", 0, 1); + n("(a)$|\\1", "az"); + x2("(a)\\1", "aa", 0, 2); + n("(a)\\1", "ab"); + x2("(a?)\\1", "aa", 0, 2); + x2("(a?\?)\\1", "aa", 0, 0); + x2("(a*)\\1", "aaaaa", 0, 4); + x3("(a*)\\1", "aaaaa", 0, 2, 1); + x2("a(b*)\\1", "abbbb", 0, 5); + x2("a(b*)\\1", "ab", 0, 1); + x2("(a*)(b*)\\1\\2", "aaabbaaabb", 0, 10); + x2("(a*)(b*)\\2", "aaabbbb", 0, 7); + x2("(((((((a*)b))))))c\\7", "aaabcaaa", 0, 8); + x3("(((((((a*)b))))))c\\7", "aaabcaaa", 0, 3, 7); + x2("(a)(b)(c)\\2\\1\\3", "abcbac", 0, 6); + x2("([a-d])\\1", "cc", 0, 2); + x2("(\\w\\d\\s)\\1", "f5 f5 ", 0, 6); + n("(\\w\\d\\s)\\1", "f5 f5"); + x2("(who|[a-c]{3})\\1", "whowho", 0, 6); + x2("...(who|[a-c]{3})\\1", "abcwhowho", 0, 9); + x2("(who|[a-c]{3})\\1", "cbccbc", 0, 6); + x2("(^a)\\1", "aa", 0, 2); + n("(^a)\\1", "baa"); + n("(a$)\\1", "aa"); + n("(ab\\Z)\\1", "ab"); + x2("(a*\\Z)\\1", "a", 1, 1); + x2(".(a*\\Z)\\1", "ba", 1, 2); + x3("(.(abc)\\2)", "zabcabc", 0, 7, 1); + x3("(.(..\\d.)\\2)", "z12341234", 0, 9, 1); + x2("((?i:az))\\1", "AzAz", 0, 4); + n("((?i:az))\\1", "Azaz"); + x2("(?<=a)b", "ab", 1, 2); + n("(?<=a)b", "bb"); + x2("(?<=a|b)b", "bb", 1, 2); + x2("(?<=a|bc)b", "bcb", 2, 3); + x2("(?<=a|bc)b", "ab", 1, 2); + x2("(?<=a|bc||defghij|klmnopq|r)z", "rz", 1, 2); + x2("(a)\\g<1>", "aa", 0, 2); + x2("(?a)", "a", 0, 1); + x2("(?ab)\\g", "abab", 0, 4); + x2("(?.zv.)\\k", "azvbazvb", 0, 8); + x2("(?<=\\g)|-\\zEND (?XyZ)", "XyZ", 3, 3); + x2("(?|a\\g)+", "", 0, 0); + x2("(?|\\(\\g\\))+$", "()(())", 0, 6); + x3("\\g(?.){0}", "X", 0, 1, 1); + x2("\\g(abc|df(?.YZ){2,8}){0}", "XYZ", 0, 3); + x2("\\A(?(a\\g)|)\\z", "aaaa", 0, 4); + x2("(?|\\g\\g)\\z|\\zEND (?a|(b)\\g)", "bbbbabba", 0, 8); + x2("(?\\w+\\sx)a+\\k", " fg xaaaaaaaafg x", 2, 18); + x3("(z)()()(?<_9>a)\\g<_9>", "zaa", 2, 3, 1); + x2("(.)(((?<_>a)))\\k<_>", "zaa", 0, 3); + x2("((?\\d)|(?\\w))(\\k|\\k)", "ff", 0, 2); + x2("(?:(?)|(?efg))\\k", "", 0, 0); + x2("(?:(?abc)|(?efg))\\k", "abcefgefg", 3, 9); + n("(?:(?abc)|(?efg))\\k", "abcefg"); + x2("(?:(?.)|(?..)|(?...)|(?....)|(?.....)|(?......)|(?.......)|(?........)|(?.........)|(?..........)|(?...........)|(?............)|(?.............)|(?..............))\\k$", "a-pyumpyum", 2, 10); + x3("(?:(?.)|(?..)|(?...)|(?....)|(?.....)|(?......)|(?.......)|(?........)|(?.........)|(?..........)|(?...........)|(?............)|(?.............)|(?..............))\\k$", "xxxxabcdefghijklmnabcdefghijklmn", 4, 18, 14); + x3("(?)(?)(?)(?)(?)(?)(?)(?)(?)(?)(?)(?)(?)(?)(?)(?aaa)(?)$", "aaa", 0, 3, 16); + x2("(?a|\\(\\g\\))", "a", 0, 1); + x2("(?a|\\(\\g\\))", "((((((a))))))", 0, 13); + x3("(?a|\\(\\g\\))", "((((((((a))))))))", 0, 17, 1); + x2("\\g|\\zEND(?.*abc$)", "abcxxxabc", 0, 9); + x2("\\g<1>|\\zEND(.a.)", "bac", 0, 3); + x3("\\g<_A>\\g<_A>|\\zEND(.a.)(?<_A>.b.)", "xbxyby", 3, 6, 1); + x2("\\A(?:\\g|\\g|\\zEND (?a|c\\gc)(?b|d\\gd))$", "cdcbcdc", 0, 7); + x2("\\A(?|a\\g)\\z|\\zEND (?\\g)", "aaaa", 0, 4); + x2("(?(a|b\\gc){3,5})", "baaaaca", 1, 5); + x2("(?(a|b\\gc){3,5})", "baaaacaaaaa", 0, 10); + x2("(?\\(([^\\(\\)]++|\\g)*+\\))", "((a))", 0, 5); + x2("()*\\1", "", 0, 0); + x2("(?:()|())*\\1\\2", "", 0, 0); + x3("(?:\\1a|())*", "a", 0, 0, 1); + x2("x((.)*)*x", "0x1x2x3", 1, 6); + x2("x((.)*)*x(?i:\\1)\\Z", "0x1x2x1X2", 1, 9); + x2("(?:()|()|()|()|()|())*\\2\\5", "", 0, 0); + x2("(?:()|()|()|(x)|()|())*\\2b\\5", "b", 0, 1); + x2("[0-9-a]", "-", 0, 1); // PR#44 + n("[0-9-a]", ":"); // PR#44 + x3("(\\(((?:[^(]|\\g<1>)*)\\))", "(abc)(abc)", 1, 4, 2); // PR#43 + x2("\\o{101}", "A", 0, 1); + x2("(?:\\k'+1'B|(A)C)*", "ACAB", 0, 4); // relative backref by positive number + x2("\\g<+2>(abc)(ABC){0}", "ABCabc", 0, 6); // relative call by positive number + x2("A\\g'0'|B()", "AAAAB", 0, 5); + x3("(A\\g'0')|B", "AAAAB", 0, 5, 1); + x2("(a*)(?(1))aa", "aaaaa", 0, 5); + x2("(a*)(?(-1))aa", "aaaaa", 0, 5); + x2("(?aaa)(?('name'))aa", "aaaaa", 0, 5); + x2("(a)(?(1)aa|bb)a", "aaaaa", 0, 4); + x2("(?:aa|())(?(<1>)aa|bb)a", "aabba", 0, 5); + x2("(?:aa|())(?('1')aa|bb|cc)a", "aacca", 0, 5); + x3("(a*)(?(1)aa|a)b", "aaab", 0, 1, 1); + n("(a)(?(1)a|b)c", "abc"); + x2("(a)(?(1)|)c", "ac", 0, 2); + n("(?()aaa|bbb)", "bbb"); + x2("(a)(?(1+0)b|c)d", "abd", 0, 3); + x2("(?:(?'name'a)|(?'name'b))(?('name')c|d)e", "ace", 0, 3); + x2("(?:(?'name'a)|(?'name'b))(?('name')c|d)e", "bce", 0, 3); + x2("\\R", "\r\n", 0, 2); + x2("\\R", "\r", 0, 1); + x2("\\R", "\n", 0, 1); + x2("\\R", "\x0b", 0, 1); + n("\\R\\n", "\r\n"); + x2("\\N", "a", 0, 1); + n("\\N", "\n"); + n("(?m:\\N)", "\n"); + n("(?-m:\\N)", "\n"); + x2("\\O", "a", 0, 1); + x2("\\O", "\n", 0, 1); + x2("(?m:\\O)", "\n", 0, 1); + x2("(?-m:\\O)", "\n", 0, 1); + x2("\\K", "a", 0, 0); + x2("a\\K", "a", 1, 1); + x2("a\\Kb", "ab", 1, 2); + x2("(a\\Kb|ac\\Kd)", "acd", 2, 3); + x2("(a\\Kb|\\Kac\\K)*", "acababacab", 9, 10); + + x2("(?~)", "", 0, 0); + x2("(?~)", "A", 0, 0); + x2("aaaaa(?~)", "aaaaaaaaaa", 0, 5); + x2("(?~(?:|aaa))", "aaa", 0, 0); + x2("(?~aaa|)", "aaa", 0, 0); + x2("a(?~(?~)).", "abcdefghijklmnopqrstuvwxyz", 0, 26); // !!! + x2("/\\*(?~\\*/)\\*/", "/* */ */", 0, 5); + x2("(?~\\w+)zzzzz", "zzzzz", 0, 5); + x2("(?~\\w*)zzzzz", "zzzzz", 0, 5); + x2("(?~A.C|B)", "ABC", 0, 0); + x2("(?~XYZ|ABC)a", "ABCa", 1, 4); + x2("(?~XYZ|ABC)a", "aABCa", 0, 1); + x2("<[^>]*>(?~[<>])]*>", "vvv ", 0, 10); + x2("(?~ab)", "ccc\ndab", 0, 5); + x2("(?m:(?~ab))", "ccc\ndab", 0, 5); + x2("(?-m:(?~ab))", "ccc\ndab", 0, 5); + x2("(?~abc)xyz", "xyz012345678901234567890123456789abc", 0, 3); + + // absent with expr + x2("(?~|78|\\d*)", "123456789", 0, 6); + x2("(?~|def|(?:abc|de|f){0,100})", "abcdedeabcfdefabc", 0, 11); + x2("(?~|ab|.*)", "ccc\nddd", 0, 3); + x2("(?~|ab|\\O*)", "ccc\ndab", 0, 5); + x2("(?~|ab|\\O{2,10})", "ccc\ndab", 0, 5); + x2("(?~|ab|\\O{1,10})", "ab", 1, 2); + n("(?~|ab|\\O{2,10})", "ab"); + x2("(?~|abc|\\O{1,10})", "abc", 1, 3); + x2("(?~|ab|\\O{5,10})|abc", "abc", 0, 3); + x2("(?~|ab|\\O{1,10})", "cccccccccccab", 0, 10); + x2("(?~|aaa|)", "aaa", 0, 0); + x2("(?~||a*)", "aaaaaa", 0, 0); + x2("(?~||a*?)", "aaaaaa", 0, 0); + x2("(a)(?~|b|\\1)", "aaaaaa", 0, 2); + x2("(a)(?~|bb|(?:a\\1)*)", "aaaaaa", 0, 5); + x2("(b|c)(?~|abac|(?:a\\1)*)", "abababacabab", 1, 4); + n("(?~|c|a*+)a", "aaaaa"); + x2("(?~|aaaaa|a*+)", "aaaaa", 0, 0); + x2("(?~|aaaaaa|a*+)b", "aaaaaab", 1, 7); + x2("(?~|abcd|(?>))", "zzzabcd", 0, 0); + x2("(?~|abc|a*?)", "aaaabc", 0, 0); + + // absent stopper + x2("(?~|abc)a*", "aaaaaabc", 0, 5); + x2("(?~|abc)a*z|aaaaaabc", "aaaaaabc", 0, 8); + x2("(?~|aaaaaa)a*", "aaaaaa", 0, 0); + x2("(?~|abc)aaaa|aaaabc", "aaaabc", 0, 6); + x2("(?>(?~|abc))aaaa|aaaabc", "aaaabc", 0, 6); + x2("(?~|)a", "a", 0, 1); + n("(?~|a)a", "a"); + x2("(?~|a)(?~|)a", "a", 0, 1); + x2("(?~|a).*(?~|)a", "bbbbbbbbbbbbbbbbbbbba", 0, 21); + x2("(?~|abc).*(xyz|pqr)(?~|)abc", "aaaaxyzaaapqrabc", 0, 16); + x2("(?~|abc).*(xyz|pqr)(?~|)abc", "aaaaxyzaaaabcpqrabc", 11, 19); + n("\\A(?~|abc).*(xyz|pqrabc)(?~|)abc", "aaaaxyzaaaabcpqrabcabc"); + x2("(?~|a)(?~|)c|ab|a|", "ab", 0, 2); + x2("(?~|a)((?~|)c|ab|a|)", "ab", 0, 0); + x2("(?~|a)((?>(?~|))c|ab|a|)", "ab", 0, 0); + + // extended grapheme cluster + // CR + LF + n(".\\y\\O", "\x0d\x0a"); + x2(".\\Y\\O", "\x0d\x0a", 0, 2); + n("\\X\\X", "\x0d\x0a"); + x2("^\\X$", "\x0d\x0a", 0, 2); + x2("^\\X\\X\\X$", "ab\x0d\x0a", 0, 4); + + fprintf(stdout, + "\nRESULT SUCC: %4d, FAIL: %d, ERROR: %d (by Oniguruma %s)\n", + nsucc, nfail, nerror, onig_version()); + + return ((nfail == 0 && nerror == 0) ? 0 : -1); +} diff --git a/vendor/onig/testu.c b/vendor/oniguruma/oniguruma/test/testu.c similarity index 93% rename from vendor/onig/testu.c rename to vendor/oniguruma/oniguruma/test/testu.c index fdcb70d..c1971e7 100644 --- a/vendor/onig/testu.c +++ b/vendor/oniguruma/oniguruma/test/testu.c @@ -1,18 +1,23 @@ /* - * This program was generated by testconv.rb. + * testu.c + * Copyright (c) 2019 K.Kosako */ #include #ifdef POSIX_TEST -#include "onigmoposix.h" +#include "onigposix.h" #else -#include "onigmo.h" +#include "oniguruma.h" #endif static int nsucc = 0; static int nfail = 0; static int nerror = 0; +#ifdef __TRUSTINSOFT_ANALYZER__ +static int nall = 0; +#endif + static FILE* err_file; #ifndef POSIX_TEST @@ -35,7 +40,7 @@ static void uconv(char* from, char* to, int len) if (c == 0) { c = (unsigned char )from[i+1]; if (c < 0x20 || c >= 0x7f || c == 0x5c || c == 0x22) { - sprintf(q, "\\%03o", c); + sprintf(q, "\\%03o", (unsigned int )c); q += 4; } else { @@ -44,10 +49,10 @@ static void uconv(char* from, char* to, int len) } } else { - sprintf(q, "\\%03o", c); + sprintf(q, "\\%03o", (unsigned int )c); q += 4; c = (unsigned char )from[i+1]; - sprintf(q, "\\%03o", c); + sprintf(q, "\\%03o", (unsigned int )c); q += 4; } } @@ -57,6 +62,10 @@ static void uconv(char* from, char* to, int len) static void xx(char* pattern, char* str, int from, int to, int mem, int not) { +#ifdef __TRUSTINSOFT_ANALYZER__ + if (nall++ % TIS_TEST_CHOOSE_MAX != TIS_TEST_CHOOSE_CURRENT) return; +#endif + int r; char cpat[4000], cstr[4000]; @@ -106,7 +115,7 @@ static void xx(char* pattern, char* str, int from, int to, int mem, int not) } else { fprintf(stdout, "FAIL: /%s/ '%s' %d-%d : %d-%d\n", cpat, cstr, - (int)from, (int)to, (int)pmatch[mem].rm_so, (int)pmatch[mem].rm_eo); + from, to, pmatch[mem].rm_so, pmatch[mem].rm_eo); nfail++; } } @@ -115,31 +124,13 @@ static void xx(char* pattern, char* str, int from, int to, int mem, int not) #else regex_t* reg; - OnigCompileInfo ci; OnigErrorInfo einfo; - OnigSyntaxType syn = *ONIG_SYNTAX_DEFAULT; - - /* ONIG_OPTION_OFF(syn.options, ONIG_OPTION_ASCII_RANGE); */ uconv(pattern, cpat, ulen(pattern)); uconv(str, cstr, ulen(str)); -#if 0 r = onig_new(®, (UChar* )pattern, (UChar* )(pattern + ulen(pattern)), - ONIG_OPTION_DEFAULT, ENC, &syn, &einfo); -#else - ci.num_of_elements = 5; - ci.pattern_enc = ENC; - ci.target_enc = ENC; - ci.syntax = &syn; - ci.option = ONIG_OPTION_DEFAULT; - ci.case_fold_flag = ONIGENC_CASE_FOLD_DEFAULT; - - r = onig_new_deluxe(®, (UChar* )pattern, - (UChar* )(pattern + ulen(pattern)), - &ci, &einfo); -#endif - + ONIG_OPTION_DEFAULT, ENC, ONIG_SYNTAX_DEFAULT, &einfo); if (r) { char s[ONIG_MAX_ERROR_MESSAGE_LEN]; onig_error_code_to_str((UChar* )s, r, &einfo); @@ -149,8 +140,8 @@ static void xx(char* pattern, char* str, int from, int to, int mem, int not) } r = onig_search(reg, (UChar* )str, (UChar* )(str + ulen(str)), - (UChar* )str, (UChar* )(str + ulen(str)), - region, ONIG_OPTION_NONE); + (UChar* )str, (UChar* )(str + ulen(str)), + region, ONIG_OPTION_NONE); if (r < ONIG_MISMATCH) { char s[ONIG_MAX_ERROR_MESSAGE_LEN]; onig_error_code_to_str((UChar* )s, r); @@ -181,7 +172,7 @@ static void xx(char* pattern, char* str, int from, int to, int mem, int not) } else { fprintf(stdout, "FAIL: /%s/ '%s' %d-%d : %d-%d\n", cpat, cstr, - (int)from, (int)to, (int)region->beg[mem], (int)region->end[mem]); + from, to, region->beg[mem], region->end[mem]); nfail++; } } @@ -207,6 +198,11 @@ static void n(char* pattern, char* str) extern int main(int argc, char* argv[]) { + OnigEncoding use_encs[1]; + + use_encs[0] = ONIG_ENCODING_UTF16_BE; + onig_initialize(use_encs, sizeof(use_encs)/sizeof(use_encs[0])); + err_file = stdout; #ifndef POSIX_TEST @@ -638,9 +634,9 @@ extern int main(int argc, char* argv[]) x2("e\207\000\000", "e\207\000\000", 0, 2); x2("\000.\000\000", "0B\000\000", 0, 2); x2("\000.\000.\000\000", "0K0M\000\000", 0, 4); - x2("\000(\000?\000u\000)\000\134\000w\000\000", "0J\000\000", 0, 2); - n("\000(\000?\000u\000)\000\134\000W\000\000", "0B\000\000"); - x2("\000(\000?\000u\000)\000[\000\134\000W\000]\000\000", "0F\000$\000\000", 2, 4); + x2("\000\134\000w\000\000", "0J\000\000", 0, 2); + n("\000\134\000W\000\000", "0B\000\000"); + x2("\000[\000\134\000W\000]\000\000", "0F\000$\000\000", 2, 4); x2("\000\134\000S\000\000", "0]\000\000", 0, 2); x2("\000\134\000S\000\000", "o\042\000\000", 0, 2); x2("\000\134\000b\000\000", "l\027\000 \000\000", 0, 0); @@ -652,27 +648,27 @@ extern int main(int argc, char* argv[]) n("\000[0j0k\000]\000\000", "0l\000\000"); x2("\000[0F\000-0J\000]\000\000", "0H\000\000", 0, 2); n("\000[\000^0Q\000]\000\000", "0Q\000\000"); - x2("\000(\000?\000u\000)\000[\000\134\000w\000]\000\000", "0m\000\000", 0, 2); + x2("\000[\000\134\000w\000]\000\000", "0m\000\000", 0, 2); n("\000[\000\134\000d\000]\000\000", "0u\000\000"); x2("\000[\000\134\000D\000]\000\000", "0o\000\000", 0, 2); n("\000[\000\134\000s\000]\000\000", "0O\000\000"); x2("\000[\000\134\000S\000]\000\000", "0x\000\000", 0, 2); - x2("\000(\000?\000u\000)\000[\000\134\000w\000\134\000d\000]\000\000", "0\210\000\000", 0, 2); - x2("\000(\000?\000u\000)\000[\000\134\000w\000\134\000d\000]\000\000", "\000 \000 \000 0\210\000\000", 6, 8); - n("\000(\000?\000u\000)\000\134\000w\233<\216\312\000\000", "\000 \233<\216\312\000\000"); - x2("\000(\000?\000u\000)\233<\000\134\000W\216\312\000\000", "\233<\000 \216\312\000\000", 0, 6); + x2("\000[\000\134\000w\000\134\000d\000]\000\000", "0\210\000\000", 0, 2); + x2("\000[\000\134\000w\000\134\000d\000]\000\000", "\000 \000 \000 0\210\000\000", 6, 8); + n("\000\134\000w\233<\216\312\000\000", "\000 \233<\216\312\000\000"); + x2("\233<\000\134\000W\216\312\000\000", "\233<\000 \216\312\000\000", 0, 6); x2("0B\000.0D\000.0F\000\000", "0B0B0D0D0F\000\000", 0, 10); - x2("\000(\000?\000u\000)\000.\000\134\000w0F\000\134\000W\000.\000.0^\000\000", "0H0F0F\000 0F0^0^\000\000", 0, 14); - x2("\000(\000?\000u\000)\000\134\000s\000\134\000w0S0S0S\000\000", "\000 0S0S0S0S\000\000", 0, 10); + x2("\000.\000\134\000w0F\000\134\000W\000.\000.0^\000\000", "0H0F0F\000 0F0^0^\000\000", 0, 14); + x2("\000\134\000s\000\134\000w0S0S0S\000\000", "\000 0S0S0S0S\000\000", 0, 10); x2("0B0B\000.0Q\000\000", "0B0B0Q0Q\000\000", 0, 8); n("\000.0D\000\000", "0D0H\000\000"); x2("\000.0J\000\000", "0J0J\000\000", 0, 4); x2("\000^0B\000\000", "0B\000\000", 0, 2); x2("\000^0\200\000$\000\000", "0\200\000\000", 0, 2); - x2("\000(\000?\000u\000)\000^\000\134\000w\000$\000\000", "0k\000\000", 0, 2); - x2("\000(\000?\000u\000)\000^\000\134\000w0K0M0O0Q0S\000$\000\000", "\000z0K0M0O0Q0S\000\000", 0, 12); - x2("\000(\000?\000u\000)\000^\000\134\000w\000.\000.\000.0F0H0J\000$\000\000", "\000z0B0D0F0F0H0J\000\000", 0, 14); - x2("\000(\000?\000u\000)\000\134\000w\000\134\000w\000\134\000s\000\134\000W0J0J0J\000\134\000d\000\000", "\000a0J\000 \000 0J0J0J\0004\000\000", 0, 16); + x2("\000^\000\134\000w\000$\000\000", "0k\000\000", 0, 2); + x2("\000^\000\134\000w0K0M0O0Q0S\000$\000\000", "\000z0K0M0O0Q0S\000\000", 0, 12); + x2("\000^\000\134\000w\000.\000.\000.0F0H0J\000$\000\000", "\000z0B0D0F0F0H0J\000\000", 0, 14); + x2("\000\134\000w\000\134\000w\000\134\000s\000\134\000W0J0J0J\000\134\000d\000\000", "\000a0J\000 \000 0J0J0J\0004\000\000", 0, 16); x2("\000\134\000A0_0a0d\000\000", "0_0a0d\000\000", 0, 6); x2("0\2000\2010\202\000\134\000Z\000\000", "0\2000\2010\202\000\000", 0, 6); x2("0K0M0O\000\134\000z\000\000", "0K0M0O\000\000", 0, 6); @@ -728,9 +724,9 @@ extern int main(int argc, char* argv[]) x2("\233<\000|\216\312\000\134\000Z\000\000", "\216\312\000\012\000\000", 0, 2); x2("\233<\000|\216\312\000\134\000z\000\000", "\216\312\233<\000\000", 2, 4); x2("\233<\000|\216\312\000\134\000z\000\000", "\216\312\000\000", 0, 2); - x2("\000(\000?\000u\000)\000\134\000w\000|\000\134\000s\000\000", "0J\000\000", 0, 2); - x2("\000(\000?\000u\000)\000\134\000w\000|\000%\000\000", "\000%0J\000\000", 0, 2); - x2("\000(\000?\000u\000)\000\134\000w\000|\000[\000&\000$\000]\000\000", "0F\000&\000\000", 0, 2); + x2("\000\134\000w\000|\000\134\000s\000\000", "0J\000\000", 0, 2); + x2("\000\134\000w\000|\000%\000\000", "\000%0J\000\000", 0, 2); + x2("\000\134\000w\000|\000[\000&\000$\000]\000\000", "0F\000&\000\000", 0, 2); x2("\000[0D\000-0Q\000]\000\000", "0F\000\000", 0, 2); x2("\000[0D\000-0Q\000]\000|\000[\000^0K\000-0S\000]\000\000", "0B\000\000", 0, 2); x2("\000[0D\000-0Q\000]\000|\000[\000^0K\000-0S\000]\000\000", "0K\000\000", 0, 2); @@ -861,8 +857,8 @@ extern int main(int argc, char* argv[]) x3("\000(\000(\000(\000(\000(\000(\000(0}\000*\000)0z\000)\000)\000)\000)\000)\000)0t\000\134\0007\000\000", "0}0}0}0z0t0}0}0}\000\000", 0, 6, 7); x2("\000(0o\000)\000(0r\000)\000(0u\000)\000\134\0002\000\134\0001\000\134\0003\000\000", "0o0r0u0r0o0u\000\000", 0, 12); x2("\000(\000[0M\000-0Q\000]\000)\000\134\0001\000\000", "0O0O\000\000", 0, 4); - x2("\000(\000?\000u\000)\000(\000\134\000w\000\134\000d\000\134\000s\000)\000\134\0001\000\000", "0B\0005\000 0B\0005\000 \000\000", 0, 12); - n("\000(\000?\000u\000)\000(\000\134\000w\000\134\000d\000\134\000s\000)\000\134\0001\000\000", "0B\0005\000 0B\0005\000\000"); + x2("\000(\000\134\000w\000\134\000d\000\134\000s\000)\000\134\0001\000\000", "0B\0005\000 0B\0005\000 \000\000", 0, 12); + n("\000(\000\134\000w\000\134\000d\000\134\000s\000)\000\134\0001\000\000", "0B\0005\000 0B\0005\000\000"); x2("\000(\212\260\377\037\000|\000[0B\000-0F\000]\000{\0003\000}\000)\000\134\0001\000\000", "\212\260\377\037\212\260\377\037\000\000", 0, 8); x2("\000.\000.\000.\000(\212\260\377\037\000|\000[0B\000-0F\000]\000{\0003\000}\000)\000\134\0001\000\000", "0B\000a0B\212\260\377\037\212\260\377\037\000\000", 0, 14); x2("\000(\212\260\377\037\000|\000[0B\000-0F\000]\000{\0003\000}\000)\000\134\0001\000\000", "0F0D0F0F0D0F\000\000", 0, 12); @@ -901,8 +897,61 @@ extern int main(int argc, char* argv[]) n("\000[\000^\000[\000^\000a\000-\000z0B0D0F\000]\000&\000&\000[\000^\000b\000c\000d\000e\000f\000g0F0H0J\000]\000g\000-\000w\000]\000\000", "\0002\000\000"); x2("\000a\000<\000b\000>0\3200\3740\2700\3470\3630n0\3000\2460\3630\3550\3740\311\000<\000\134\000/\000b\000>\000\000", "\000a\000<\000b\000>0\3200\3740\2700\3470\3630n0\3000\2460\3630\3550\3740\311\000<\000/\000b\000>\000\000", 0, 40); x2("\000.\000<\000b\000>0\3200\3740\2700\3470\3630n0\3000\2460\3630\3550\3740\311\000<\000\134\000/\000b\000>\000\000", "\000a\000<\000b\000>0\3200\3740\2700\3470\3630n0\3000\2460\3630\3550\3740\311\000<\000/\000b\000>\000\000", 0, 40); + x2("\000^\000\\\000p\000{\000K\000a\000t\000a\000k\000a\000n\000a\000}\000$\000\000", "\060\277\000\000", 0, 2); + x2("\000\\\000o\000{\0001\0000\0001\000}\000\000", "\000A\000\000", 0, 2); + x2("\000\\\000o\000{\0001\0001\0000\0007\0002\0001\000}\000\000", "\221\321\000\000", 0, 2); + x2("\000\\\000R\000\000", "\000\015\000\012\000\000", 0, 4); // \R: general newline + x2("\000\\\000R\000\000", "\000\012\000\000", 0, 2); + x2("\000\\\000R\000\000", "\000\015\000\000", 0, 2); + x2("\000\\\000R\000\000", "\000\013\000\000", 0, 2); + n("\000\\\000R\000\012\000\000", "\000\015\000\012\000\000"); + x2("\000\\\000R\000\000", "\x00\x85\000\000", 0, 2); + x2("\000\\\000R\000\000", "\x20\x28\000\000", 0, 2); + x2("\000\\\000R\000\000", "\x20\x29\000\000", 0, 2); + n("\000\\\000R\000\000", "\x20\x2a\000\000"); + + x2("\000\\\000w\000\000", "\x01\x00\000\000", 0, 2); + n("\000\\\000W\000\000", "\x01\x00\000\000"); + x2("\000\\\000d\000\000", "\x0b\x66\000\000", 0, 2); + n("\000\\\000D\000\000", "\x0b\x66\000\000"); + x2("\000\\\000s\000\000", "\x20\x01\000\000", 0, 2); + n("\000\\\000S\000\000", "\x20\x01\000\000"); + x2("\000\\\000b\000\000", "\x00\x20\x01\x00\000\000", 2, 2); + n("\000\\\000B\000\000", "\x01\x00\000\000"); + x2("\000\\\000B\000\000", "\x00\x20\000\000", 0, 0); + x2("\000[\000[\000:\000g\000r\000a\000p\000h\000:\000]\000]\000\000", + "\x0d\x30\000\000", 0, 2); + n("\000[\000[\000:\000g\000r\000a\000p\000h\000:\000]\000]\000\000", + "\x0a\x00\000\000"); + + // extended grapheme cluster + + // CR + LF + n("\000.\000\\\000y\000\\\000O\000\000", "\x00\x0d\x00\x0a\000\000"); + x2("\000.\000\\\000Y\000\\\000O\000\000", "\x00\x0d\x00\x0a\000\000", 0, 4); + + // LATIN SMALL LETTER G, COMBINING DIAERESIS + n("\000^\000.\000\\\000y\000.\000$\000\000", "\x00\x67\x03\x08\000\000"); + x2("\000.\000\\\000Y\000.\000\000", "\x00\x67\x03\x08\000\000", 0, 4); + x2("\000\\\000y\000.\000\\\000Y\000.\000\\\000y\000\000", + "\x00\x67\x03\x08\000\000", 0, 4); + // TAMIL LETTER NA, TAMIL VOWEL SIGN I, + x2("\000.\000\\\000Y\000.\000\000", "\x0B\xA8\x0B\xBF\000\000", 0, 4); + n("\000.\000\\\000y\000.\000\000", "\x0B\xA8\x0B\xBF\000\000"); + + // CR + LF + n("\000\\\000X\000\\\000X\000\000", "\x00\x0d\x00\x0a\000\000"); + x2("\000^\000\\\000X\000$\000\000", "\x00\x0d\x00\x0a\000\000", 0, 4); + // LATIN SMALL LETTER G, COMBINING DIAERESIS + n("\000\\\000X\000\\\000X\000\000", "\x00\x67\x03\x08\000\000"); + x2("\000^\000\\\000X\000$\000\000", "\x00\x67\x03\x08\000\000", 0, 4); + // TAMIL LETTER NA, TAMIL VOWEL SIGN I, + x2("\000^\000\\\000X\000$\000\000", "\x0B\xA8\x0B\xBF\000\000", 0, 4); + n("\000\\\000X\000\\\000X\000\000", "\x0B\xA8\x0B\xBF\000\000"); + + fprintf(stdout, - "\nRESULT SUCC: %d, FAIL: %d, ERROR: %d (by Onigmo %s)\n", + "\nRESULT SUCC: %4d, FAIL: %d, ERROR: %d (by Oniguruma %s)\n", nsucc, nfail, nerror, onig_version()); #ifndef POSIX_TEST diff --git a/vendor/onig/config.h b/vendor/oniguruma/oniguruma/tis-ci/config.h similarity index 73% rename from vendor/onig/config.h rename to vendor/oniguruma/oniguruma/tis-ci/config.h index d9cfe82..9400605 100644 --- a/vendor/onig/config.h +++ b/vendor/oniguruma/oniguruma/tis-ci/config.h @@ -1,19 +1,5 @@ -/* config.h. Generated from config.h.in by configure. */ -/* config.h.in. Generated from configure.ac by autoheader. */ - -#include "config-onig-edbee.h" - -#ifdef _WIN32 - - #include "win32/config.h" - - // Rick: added to make it compile on windows - #define ONIG_EXTERN extern - - // Rick: added to decrease the numberr of warnings for onig - #define _CRT_SECURE_NO_WARNINGS - -#else +/* src/config.h. Generated from config.h.in by configure. */ +/* src/config.h.in. Generated from configure.ac by autoheader. */ /* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP systems. This function is required for `alloca.c' support on those systems. @@ -69,29 +55,26 @@ /* Define to the sub-directory where libtool stores uninstalled libraries. */ #define LT_OBJDIR ".libs/" -/* Define to 1 if your C compiler doesn't accept -c and -o together. */ -/* #undef NO_MINUS_C_MINUS_O */ - /* Name of package */ -#define PACKAGE "onigmo" +#define PACKAGE "onig" /* Define to the address where bug reports for this package should be sent. */ #define PACKAGE_BUGREPORT "" /* Define to the full name of this package. */ -#define PACKAGE_NAME "onigmo" +#define PACKAGE_NAME "onig" /* Define to the full name and version of this package. */ -#define PACKAGE_STRING "onigmo 6.1.2" +#define PACKAGE_STRING "onig 6.9.4" /* Define to the one symbol short name of this package. */ -#define PACKAGE_TARNAME "onigmo" +#define PACKAGE_TARNAME "onig" /* Define to the home page for this package. */ #define PACKAGE_URL "" /* Define to the version of this package. */ -#define PACKAGE_VERSION "6.1.2" +#define PACKAGE_VERSION "6.9.4" /* The size of `int', as computed by sizeof. */ #define SIZEOF_INT 4 @@ -102,9 +85,6 @@ /* The size of `long long', as computed by sizeof. */ #define SIZEOF_LONG_LONG 8 -/* The size of `short', as computed by sizeof. */ -#define SIZEOF_SHORT 2 - /* The size of `void*', as computed by sizeof. */ #define SIZEOF_VOIDP 8 @@ -119,22 +99,11 @@ /* Define to 1 if you have the ANSI C header files. */ #define STDC_HEADERS 1 -/* Define to 1 if you can safely include both and . */ -#define TIME_WITH_SYS_TIME 1 - -/* Define if combination explosion check */ -/* #undef USE_COMBINATION_EXPLOSION_CHECK */ - /* Define if enable CR+NL as line terminator */ /* #undef USE_CRNL_AS_LINE_TERMINATOR */ /* Version number of package */ -#define VERSION "6.1.2" - -/* Define to empty if `const' does not conform to ANSI C. */ -/* #undef const */ +#define VERSION "6.9.4" /* Define to `unsigned int' if does not define. */ /* #undef size_t */ - -#endif diff --git a/vendor/oniguruma/oniguruma/tis-ci/stub.c b/vendor/oniguruma/oniguruma/tis-ci/stub.c new file mode 100644 index 0000000..11f1570 --- /dev/null +++ b/vendor/oniguruma/oniguruma/tis-ci/stub.c @@ -0,0 +1,3 @@ +void srand(unsigned int seed) { + return; +} diff --git a/vendor/oniguruma/oniguruma/tis-ci/test_back.config b/vendor/oniguruma/oniguruma/tis-ci/test_back.config new file mode 100644 index 0000000..a0ab67f --- /dev/null +++ b/vendor/oniguruma/oniguruma/tis-ci/test_back.config @@ -0,0 +1,26 @@ +{ + "compilation_cmd": "-I ../tis-ci -I ../src -D alloca=__builtin_alloca", + "files": [ + "../test/test_back.c", + "../src/unicode.c", + "../src/regcomp.c", + "../src/regenc.c", + "../src/utf16_be.c", + "../src/regparse.c", + "../src/st.c", + "../src/regexec.c", + "../src/unicode_unfold_key.c", + "../src/unicode_fold3_key.c", + "../src/unicode_fold2_key.c", + "../src/unicode_fold1_key.c", + "../src/utf8.c", + "../src/regerror.c", + "../src/regversion.c", + "../src/ascii.c" + ], + "machdep": "gcc_x86_64", + "main": "main", + "name": "test_back.c FULL", + "address-alignment": 65536, /* hexadecimal 0x10000 */ + "val-warn-undefined-pointer-comparison": "none" +} diff --git a/vendor/oniguruma/oniguruma/tis-ci/test_regset.config b/vendor/oniguruma/oniguruma/tis-ci/test_regset.config new file mode 100644 index 0000000..2589b5a --- /dev/null +++ b/vendor/oniguruma/oniguruma/tis-ci/test_regset.config @@ -0,0 +1,20 @@ +{ + "compilation_cmd": "-I ../tis-ci -I ../src -D alloca=__builtin_alloca", + "files": [ + "../test/test_regset.c", + "../tis-ci/stub.c", + "../src/regcomp.c", + "../src/regenc.c", + "../src/utf8.c", + "../src/regexec.c", + "../src/ascii.c", + "../src/regparse.c", + "../src/st.c", + "../src/regversion.c" + ], + "machdep": "gcc_x86_64", + "main": "main", + "name": "test_regset.c FULL", + "address-alignment": 65536, /* hexadecimal 0x10000 */ + "val-warn-undefined-pointer-comparison": "none" +} diff --git a/vendor/oniguruma/oniguruma/tis-ci/test_syntax.config b/vendor/oniguruma/oniguruma/tis-ci/test_syntax.config new file mode 100644 index 0000000..92b040f --- /dev/null +++ b/vendor/oniguruma/oniguruma/tis-ci/test_syntax.config @@ -0,0 +1,26 @@ +{ + "compilation_cmd": "-I ../tis-ci -I ../src -D alloca=__builtin_alloca", + "files": [ + "../test/test_syntax.c", + "../src/unicode.c", + "../src/regcomp.c", + "../src/regenc.c", + "../src/utf16_be.c", + "../src/regparse.c", + "../src/st.c", + "../src/regexec.c", + "../src/unicode_unfold_key.c", + "../src/unicode_fold3_key.c", + "../src/unicode_fold2_key.c", + "../src/unicode_fold1_key.c", + "../src/utf8.c", + "../src/regsyntax.c", + "../src/ascii.c", + "../src/regversion.c" + ], + "machdep": "gcc_x86_64", + "main": "main", + "name": "test_syntax.c FULL", + "address-alignment": 65536, /* hexadecimal 0x10000 */ + "val-warn-undefined-pointer-comparison": "none" +} diff --git a/vendor/oniguruma/oniguruma/tis-ci/test_utf8.config b/vendor/oniguruma/oniguruma/tis-ci/test_utf8.config new file mode 100644 index 0000000..5ae259e --- /dev/null +++ b/vendor/oniguruma/oniguruma/tis-ci/test_utf8.config @@ -0,0 +1,25 @@ +{ + "compilation_cmd": "-I ../tis-ci -I ../src -D alloca=__builtin_alloca", + "files": [ + "../test/test_utf8.c", + "../tis-ci/stub.c", + "../src/regcomp.c", + "../src/regenc.c", + "../src/utf8.c", + "../src/regexec.c", + "../src/ascii.c", + "../src/regparse.c", + "../src/st.c", + "../src/unicode.c", + "../src/unicode_unfold_key.c", + "../src/unicode_fold3_key.c", + "../src/unicode_fold2_key.c", + "../src/unicode_fold1_key.c", + "../src/regversion.c" + ], + "machdep": "gcc_x86_64", + "main": "main", + "name": "test_utf8.c FULL", + "address-alignment": 65536, /* hexadecimal 0x10000 */ + "val-warn-undefined-pointer-comparison": "none" +} diff --git a/vendor/oniguruma/oniguruma/tis-ci/testc.config b/vendor/oniguruma/oniguruma/tis-ci/testc.config new file mode 100644 index 0000000..57a1e6f --- /dev/null +++ b/vendor/oniguruma/oniguruma/tis-ci/testc.config @@ -0,0 +1,26 @@ +{ + "compilation_cmd": "-I ../tis-ci -I ../src -D alloca=__builtin_alloca", + "files": [ + "../test/testc.c", + "../src/unicode.c", + "../src/regcomp.c", + "../src/regenc.c", + "../src/utf16_be.c", + "../src/regparse.c", + "../src/st.c", + "../src/regexec.c", + "../src/unicode_unfold_key.c", + "../src/unicode_fold3_key.c", + "../src/unicode_fold2_key.c", + "../src/unicode_fold1_key.c", + "../src/euc_jp.c", + "../src/euc_jp_prop.c", + "../src/ascii.c", + "../src/regversion.c" + ], + "machdep": "gcc_x86_64", + "main": "main", + "name": "testc.c FULL", + "address-alignment": 65536, /* hexadecimal 0x10000 */ + "val-warn-undefined-pointer-comparison": "none" +} diff --git a/vendor/oniguruma/oniguruma/tis-ci/testu.config b/vendor/oniguruma/oniguruma/tis-ci/testu.config new file mode 100644 index 0000000..c4f88a7 --- /dev/null +++ b/vendor/oniguruma/oniguruma/tis-ci/testu.config @@ -0,0 +1,24 @@ +{ + "compilation_cmd": "-I ../tis-ci -I ../src -D alloca=__builtin_alloca", + "files": [ + "../test/testu.c", + "../src/unicode.c", + "../src/regcomp.c", + "../src/regenc.c", + "../src/utf16_be.c", + "../src/regparse.c", + "../src/st.c", + "../src/regexec.c", + "../src/unicode_unfold_key.c", + "../src/unicode_fold3_key.c", + "../src/unicode_fold2_key.c", + "../src/unicode_fold1_key.c", + "../src/utf8.c", + "../src/regversion.c" + ], + "machdep": "gcc_x86_64", + "main": "main", + "name": "testu.c FULL", + "address-alignment": 65536, /* hexadecimal 0x10000 */ + "val-warn-undefined-pointer-comparison": "none" +} diff --git a/vendor/oniguruma/oniguruma/tis.config b/vendor/oniguruma/oniguruma/tis.config new file mode 100644 index 0000000..aba448e --- /dev/null +++ b/vendor/oniguruma/oniguruma/tis.config @@ -0,0 +1,1336 @@ +[ + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=1", + "name": "test_utf8.c (1/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=2", + "name": "test_utf8.c (2/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=3", + "name": "test_utf8.c (3/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=4", + "name": "test_utf8.c (4/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=5", + "name": "test_utf8.c (5/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=6", + "name": "test_utf8.c (6/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=7", + "name": "test_utf8.c (7/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=8", + "name": "test_utf8.c (8/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=9", + "name": "test_utf8.c (9/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=10", + "name": "test_utf8.c (10/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=11", + "name": "test_utf8.c (11/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=12", + "name": "test_utf8.c (12/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=13", + "name": "test_utf8.c (13/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=14", + "name": "test_utf8.c (14/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=15", + "name": "test_utf8.c (15/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=16", + "name": "test_utf8.c (16/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=17", + "name": "test_utf8.c (17/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=18", + "name": "test_utf8.c (18/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=19", + "name": "test_utf8.c (19/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=20", + "name": "test_utf8.c (20/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=21", + "name": "test_utf8.c (21/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=22", + "name": "test_utf8.c (22/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=23", + "name": "test_utf8.c (23/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=24", + "name": "test_utf8.c (24/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=25", + "name": "test_utf8.c (25/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=26", + "name": "test_utf8.c (26/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=27", + "name": "test_utf8.c (27/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=28", + "name": "test_utf8.c (28/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=29", + "name": "test_utf8.c (29/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=30", + "name": "test_utf8.c (30/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=31", + "name": "test_utf8.c (31/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=32", + "name": "test_utf8.c (32/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=33", + "name": "test_utf8.c (33/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=34", + "name": "test_utf8.c (34/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=35", + "name": "test_utf8.c (35/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=36", + "name": "test_utf8.c (36/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=37", + "name": "test_utf8.c (37/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=38", + "name": "test_utf8.c (38/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=39", + "name": "test_utf8.c (39/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=40", + "name": "test_utf8.c (40/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=41", + "name": "test_utf8.c (41/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=42", + "name": "test_utf8.c (42/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=43", + "name": "test_utf8.c (43/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=44", + "name": "test_utf8.c (44/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=45", + "name": "test_utf8.c (45/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=46", + "name": "test_utf8.c (46/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=47", + "name": "test_utf8.c (47/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=48", + "name": "test_utf8.c (48/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=49", + "name": "test_utf8.c (49/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=50", + "name": "test_utf8.c (50/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=51", + "name": "test_utf8.c (51/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=52", + "name": "test_utf8.c (52/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=53", + "name": "test_utf8.c (53/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=54", + "name": "test_utf8.c (54/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=55", + "name": "test_utf8.c (55/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=56", + "name": "test_utf8.c (56/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=57", + "name": "test_utf8.c (57/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=58", + "name": "test_utf8.c (58/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=59", + "name": "test_utf8.c (59/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=60", + "name": "test_utf8.c (60/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=61", + "name": "test_utf8.c (61/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=62", + "name": "test_utf8.c (62/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=63", + "name": "test_utf8.c (63/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=64", + "name": "test_utf8.c (64/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=65", + "name": "test_utf8.c (65/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=66", + "name": "test_utf8.c (66/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=67", + "name": "test_utf8.c (67/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=68", + "name": "test_utf8.c (68/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=69", + "name": "test_utf8.c (69/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=70", + "name": "test_utf8.c (70/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=71", + "name": "test_utf8.c (71/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=72", + "name": "test_utf8.c (72/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=73", + "name": "test_utf8.c (73/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=74", + "name": "test_utf8.c (74/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=75", + "name": "test_utf8.c (75/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=76", + "name": "test_utf8.c (76/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=77", + "name": "test_utf8.c (77/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=78", + "name": "test_utf8.c (78/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=79", + "name": "test_utf8.c (79/80)" + }, + { + "include": "tis-ci/test_utf8.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=0", + "name": "test_utf8.c (80/80)" + }, + { + "include": "tis-ci/test_regset.config", + "name": "test_regset.c FULL" + }, + { + "include": "tis-ci/test_syntax.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=6 -DTIS_TEST_CHOOSE_CURRENT=1", + "name": "test_syntax.c (1/6)" + }, + { + "include": "tis-ci/test_syntax.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=6 -DTIS_TEST_CHOOSE_CURRENT=2", + "name": "test_syntax.c (2/6)" + }, + { + "include": "tis-ci/test_syntax.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=6 -DTIS_TEST_CHOOSE_CURRENT=3", + "name": "test_syntax.c (3/6)" + }, + { + "include": "tis-ci/test_syntax.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=6 -DTIS_TEST_CHOOSE_CURRENT=4", + "name": "test_syntax.c (4/6)" + }, + { + "include": "tis-ci/test_syntax.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=6 -DTIS_TEST_CHOOSE_CURRENT=5", + "name": "test_syntax.c (5/6)" + }, + { + "include": "tis-ci/test_syntax.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=6 -DTIS_TEST_CHOOSE_CURRENT=0", + "name": "test_syntax.c (6/6)" + }, + { + "include": "tis-ci/testu.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=1", + "name": "testu.c (1/50)" + }, + { + "include": "tis-ci/testu.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=2", + "name": "testu.c (2/50)" + }, + { + "include": "tis-ci/testu.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=3", + "name": "testu.c (3/50)" + }, + { + "include": "tis-ci/testu.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=4", + "name": "testu.c (4/50)" + }, + { + "include": "tis-ci/testu.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=5", + "name": "testu.c (5/50)" + }, + { + "include": "tis-ci/testu.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=6", + "name": "testu.c (6/50)" + }, + { + "include": "tis-ci/testu.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=7", + "name": "testu.c (7/50)" + }, + { + "include": "tis-ci/testu.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=8", + "name": "testu.c (8/50)" + }, + { + "include": "tis-ci/testu.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=9", + "name": "testu.c (9/50)" + }, + { + "include": "tis-ci/testu.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=10", + "name": "testu.c (10/50)" + }, + { + "include": "tis-ci/testu.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=11", + "name": "testu.c (11/50)" + }, + { + "include": "tis-ci/testu.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=12", + "name": "testu.c (12/50)" + }, + { + "include": "tis-ci/testu.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=13", + "name": "testu.c (13/50)" + }, + { + "include": "tis-ci/testu.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=14", + "name": "testu.c (14/50)" + }, + { + "include": "tis-ci/testu.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=15", + "name": "testu.c (15/50)" + }, + { + "include": "tis-ci/testu.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=16", + "name": "testu.c (16/50)" + }, + { + "include": "tis-ci/testu.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=17", + "name": "testu.c (17/50)" + }, + { + "include": "tis-ci/testu.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=18", + "name": "testu.c (18/50)" + }, + { + "include": "tis-ci/testu.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=19", + "name": "testu.c (19/50)" + }, + { + "include": "tis-ci/testu.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=20", + "name": "testu.c (20/50)" + }, + { + "include": "tis-ci/testu.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=21", + "name": "testu.c (21/50)" + }, + { + "include": "tis-ci/testu.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=22", + "name": "testu.c (22/50)" + }, + { + "include": "tis-ci/testu.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=23", + "name": "testu.c (23/50)" + }, + { + "include": "tis-ci/testu.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=24", + "name": "testu.c (24/50)" + }, + { + "include": "tis-ci/testu.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=25", + "name": "testu.c (25/50)" + }, + { + "include": "tis-ci/testu.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=26", + "name": "testu.c (26/50)" + }, + { + "include": "tis-ci/testu.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=27", + "name": "testu.c (27/50)" + }, + { + "include": "tis-ci/testu.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=28", + "name": "testu.c (28/50)" + }, + { + "include": "tis-ci/testu.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=29", + "name": "testu.c (29/50)" + }, + { + "include": "tis-ci/testu.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=30", + "name": "testu.c (30/50)" + }, + { + "include": "tis-ci/testu.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=31", + "name": "testu.c (31/50)" + }, + { + "include": "tis-ci/testu.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=32", + "name": "testu.c (32/50)" + }, + { + "include": "tis-ci/testu.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=33", + "name": "testu.c (33/50)" + }, + { + "include": "tis-ci/testu.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=34", + "name": "testu.c (34/50)" + }, + { + "include": "tis-ci/testu.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=35", + "name": "testu.c (35/50)" + }, + { + "include": "tis-ci/testu.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=36", + "name": "testu.c (36/50)" + }, + { + "include": "tis-ci/testu.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=37", + "name": "testu.c (37/50)" + }, + { + "include": "tis-ci/testu.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=38", + "name": "testu.c (38/50)" + }, + { + "include": "tis-ci/testu.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=39", + "name": "testu.c (39/50)" + }, + { + "include": "tis-ci/testu.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=40", + "name": "testu.c (40/50)" + }, + { + "include": "tis-ci/testu.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=41", + "name": "testu.c (41/50)" + }, + { + "include": "tis-ci/testu.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=42", + "name": "testu.c (42/50)" + }, + { + "include": "tis-ci/testu.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=43", + "name": "testu.c (43/50)" + }, + { + "include": "tis-ci/testu.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=44", + "name": "testu.c (44/50)" + }, + { + "include": "tis-ci/testu.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=45", + "name": "testu.c (45/50)" + }, + { + "include": "tis-ci/testu.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=46", + "name": "testu.c (46/50)" + }, + { + "include": "tis-ci/testu.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=47", + "name": "testu.c (47/50)" + }, + { + "include": "tis-ci/testu.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=48", + "name": "testu.c (48/50)" + }, + { + "include": "tis-ci/testu.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=49", + "name": "testu.c (49/50)" + }, + { + "include": "tis-ci/testu.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=0", + "name": "testu.c (50/50)" + }, + { + "include": "tis-ci/testc.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=1", + "name": "testc.c (1/50)" + }, + { + "include": "tis-ci/testc.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=2", + "name": "testc.c (2/50)" + }, + { + "include": "tis-ci/testc.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=3", + "name": "testc.c (3/50)" + }, + { + "include": "tis-ci/testc.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=4", + "name": "testc.c (4/50)" + }, + { + "include": "tis-ci/testc.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=5", + "name": "testc.c (5/50)" + }, + { + "include": "tis-ci/testc.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=6", + "name": "testc.c (6/50)" + }, + { + "include": "tis-ci/testc.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=7", + "name": "testc.c (7/50)" + }, + { + "include": "tis-ci/testc.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=8", + "name": "testc.c (8/50)" + }, + { + "include": "tis-ci/testc.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=9", + "name": "testc.c (9/50)" + }, + { + "include": "tis-ci/testc.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=10", + "name": "testc.c (10/50)" + }, + { + "include": "tis-ci/testc.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=11", + "name": "testc.c (11/50)" + }, + { + "include": "tis-ci/testc.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=12", + "name": "testc.c (12/50)" + }, + { + "include": "tis-ci/testc.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=13", + "name": "testc.c (13/50)" + }, + { + "include": "tis-ci/testc.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=14", + "name": "testc.c (14/50)" + }, + { + "include": "tis-ci/testc.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=15", + "name": "testc.c (15/50)" + }, + { + "include": "tis-ci/testc.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=16", + "name": "testc.c (16/50)" + }, + { + "include": "tis-ci/testc.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=17", + "name": "testc.c (17/50)" + }, + { + "include": "tis-ci/testc.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=18", + "name": "testc.c (18/50)" + }, + { + "include": "tis-ci/testc.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=19", + "name": "testc.c (19/50)" + }, + { + "include": "tis-ci/testc.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=20", + "name": "testc.c (20/50)" + }, + { + "include": "tis-ci/testc.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=21", + "name": "testc.c (21/50)" + }, + { + "include": "tis-ci/testc.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=22", + "name": "testc.c (22/50)" + }, + { + "include": "tis-ci/testc.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=23", + "name": "testc.c (23/50)" + }, + { + "include": "tis-ci/testc.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=24", + "name": "testc.c (24/50)" + }, + { + "include": "tis-ci/testc.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=25", + "name": "testc.c (25/50)" + }, + { + "include": "tis-ci/testc.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=26", + "name": "testc.c (26/50)" + }, + { + "include": "tis-ci/testc.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=27", + "name": "testc.c (27/50)" + }, + { + "include": "tis-ci/testc.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=28", + "name": "testc.c (28/50)" + }, + { + "include": "tis-ci/testc.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=29", + "name": "testc.c (29/50)" + }, + { + "include": "tis-ci/testc.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=30", + "name": "testc.c (30/50)" + }, + { + "include": "tis-ci/testc.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=31", + "name": "testc.c (31/50)" + }, + { + "include": "tis-ci/testc.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=32", + "name": "testc.c (32/50)" + }, + { + "include": "tis-ci/testc.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=33", + "name": "testc.c (33/50)" + }, + { + "include": "tis-ci/testc.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=34", + "name": "testc.c (34/50)" + }, + { + "include": "tis-ci/testc.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=35", + "name": "testc.c (35/50)" + }, + { + "include": "tis-ci/testc.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=36", + "name": "testc.c (36/50)" + }, + { + "include": "tis-ci/testc.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=37", + "name": "testc.c (37/50)" + }, + { + "include": "tis-ci/testc.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=38", + "name": "testc.c (38/50)" + }, + { + "include": "tis-ci/testc.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=39", + "name": "testc.c (39/50)" + }, + { + "include": "tis-ci/testc.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=40", + "name": "testc.c (40/50)" + }, + { + "include": "tis-ci/testc.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=41", + "name": "testc.c (41/50)" + }, + { + "include": "tis-ci/testc.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=42", + "name": "testc.c (42/50)" + }, + { + "include": "tis-ci/testc.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=43", + "name": "testc.c (43/50)" + }, + { + "include": "tis-ci/testc.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=44", + "name": "testc.c (44/50)" + }, + { + "include": "tis-ci/testc.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=45", + "name": "testc.c (45/50)" + }, + { + "include": "tis-ci/testc.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=46", + "name": "testc.c (46/50)" + }, + { + "include": "tis-ci/testc.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=47", + "name": "testc.c (47/50)" + }, + { + "include": "tis-ci/testc.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=48", + "name": "testc.c (48/50)" + }, + { + "include": "tis-ci/testc.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=49", + "name": "testc.c (49/50)" + }, + { + "include": "tis-ci/testc.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=50 -DTIS_TEST_CHOOSE_CURRENT=0", + "name": "testc.c (50/50)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=1", + "name": "test_back.c (1/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=2", + "name": "test_back.c (2/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=3", + "name": "test_back.c (3/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=4", + "name": "test_back.c (4/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=5", + "name": "test_back.c (5/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=6", + "name": "test_back.c (6/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=7", + "name": "test_back.c (7/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=8", + "name": "test_back.c (8/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=9", + "name": "test_back.c (9/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=10", + "name": "test_back.c (10/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=11", + "name": "test_back.c (11/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=12", + "name": "test_back.c (12/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=13", + "name": "test_back.c (13/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=14", + "name": "test_back.c (14/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=15", + "name": "test_back.c (15/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=16", + "name": "test_back.c (16/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=17", + "name": "test_back.c (17/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=18", + "name": "test_back.c (18/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=19", + "name": "test_back.c (19/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=20", + "name": "test_back.c (20/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=21", + "name": "test_back.c (21/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=22", + "name": "test_back.c (22/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=23", + "name": "test_back.c (23/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=24", + "name": "test_back.c (24/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=25", + "name": "test_back.c (25/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=26", + "name": "test_back.c (26/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=27", + "name": "test_back.c (27/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=28", + "name": "test_back.c (28/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=29", + "name": "test_back.c (29/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=30", + "name": "test_back.c (30/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=31", + "name": "test_back.c (31/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=32", + "name": "test_back.c (32/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=33", + "name": "test_back.c (33/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=34", + "name": "test_back.c (34/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=35", + "name": "test_back.c (35/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=36", + "name": "test_back.c (36/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=37", + "name": "test_back.c (37/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=38", + "name": "test_back.c (38/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=39", + "name": "test_back.c (39/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=40", + "name": "test_back.c (40/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=41", + "name": "test_back.c (41/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=42", + "name": "test_back.c (42/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=43", + "name": "test_back.c (43/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=44", + "name": "test_back.c (44/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=45", + "name": "test_back.c (45/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=46", + "name": "test_back.c (46/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=47", + "name": "test_back.c (47/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=48", + "name": "test_back.c (48/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=49", + "name": "test_back.c (49/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=50", + "name": "test_back.c (50/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=51", + "name": "test_back.c (51/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=52", + "name": "test_back.c (52/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=53", + "name": "test_back.c (53/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=54", + "name": "test_back.c (54/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=55", + "name": "test_back.c (55/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=56", + "name": "test_back.c (56/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=57", + "name": "test_back.c (57/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=58", + "name": "test_back.c (58/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=59", + "name": "test_back.c (59/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=60", + "name": "test_back.c (60/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=61", + "name": "test_back.c (61/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=62", + "name": "test_back.c (62/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=63", + "name": "test_back.c (63/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=64", + "name": "test_back.c (64/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=65", + "name": "test_back.c (65/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=66", + "name": "test_back.c (66/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=67", + "name": "test_back.c (67/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=68", + "name": "test_back.c (68/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=69", + "name": "test_back.c (69/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=70", + "name": "test_back.c (70/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=71", + "name": "test_back.c (71/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=72", + "name": "test_back.c (72/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=73", + "name": "test_back.c (73/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=74", + "name": "test_back.c (74/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=75", + "name": "test_back.c (75/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=76", + "name": "test_back.c (76/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=77", + "name": "test_back.c (77/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=78", + "name": "test_back.c (78/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=79", + "name": "test_back.c (79/80)" + }, + { + "include": "tis-ci/test_back.config", + "compilation_cmd": "-DTIS_TEST_CHOOSE_MAX=80 -DTIS_TEST_CHOOSE_CURRENT=0", + "name": "test_back.c (80/80)" + } +] diff --git a/vendor/oniguruma/oniguruma/windows/CMakeLists.txt b/vendor/oniguruma/oniguruma/windows/CMakeLists.txt new file mode 100644 index 0000000..ed59211 --- /dev/null +++ b/vendor/oniguruma/oniguruma/windows/CMakeLists.txt @@ -0,0 +1,8 @@ + +add_executable(testc_windows testc.c) +target_link_libraries(testc_windows onig) +if(NOT MSVC) + target_compile_options(testc_windows + PRIVATE -finput-charset=cp932 -fexec-charset=cp932 + ) +endif(NOT MSVC) diff --git a/vendor/onig/win32/testc.c b/vendor/oniguruma/oniguruma/windows/testc.c similarity index 92% rename from vendor/onig/win32/testc.c rename to vendor/oniguruma/oniguruma/windows/testc.c index 7210b69..b657682 100644 --- a/vendor/onig/win32/testc.c +++ b/vendor/oniguruma/oniguruma/windows/testc.c @@ -1,862 +1,865 @@ -/* - * This program was generated by testconv.rb. - */ -#include "config.h" -#ifdef ONIG_ESCAPE_UCHAR_COLLISION -#undef ONIG_ESCAPE_UCHAR_COLLISION -#endif -#include - -#ifdef POSIX_TEST -#include "onigmoposix.h" -#else -#include "onigmo.h" -#endif - -#include - -#define SLEN(s) strlen(s) - -static int nsucc = 0; -static int nfail = 0; -static int nerror = 0; - -static FILE* err_file; - -#ifndef POSIX_TEST -static OnigRegion* region; -#endif - -static void xx(char* pattern, char* str, int from, int to, int mem, int not) -{ - int r; - -#ifdef POSIX_TEST - regex_t reg; - char buf[200]; - regmatch_t pmatch[25]; - - r = regcomp(®, pattern, REG_EXTENDED | REG_NEWLINE); - if (r) { - regerror(r, ®, buf, sizeof(buf)); - fprintf(err_file, "ERROR: %s\n", buf); - nerror++; - return ; - } - - r = regexec(®, str, reg.re_nsub + 1, pmatch, 0); - if (r != 0 && r != REG_NOMATCH) { - regerror(r, ®, buf, sizeof(buf)); - fprintf(err_file, "ERROR: %s\n", buf); - nerror++; - return ; - } - - if (r == REG_NOMATCH) { - if (not) { - fprintf(stdout, "OK(N): /%s/ '%s'\n", pattern, str); - nsucc++; - } - else { - fprintf(stdout, "FAIL: /%s/ '%s'\n", pattern, str); - nfail++; - } - } - else { - if (not) { - fprintf(stdout, "FAIL(N): /%s/ '%s'\n", pattern, str); - nfail++; - } - else { - if (pmatch[mem].rm_so == from && pmatch[mem].rm_eo == to) { - fprintf(stdout, "OK: /%s/ '%s'\n", pattern, str); - nsucc++; - } - else { - fprintf(stdout, "FAIL: /%s/ '%s' %d-%d : %d-%d\n", pattern, str, - (int)from, (int)to, (int)pmatch[mem].rm_so, (int)pmatch[mem].rm_eo); - nfail++; - } - } - } - regfree(®); - -#else - regex_t* reg; - OnigErrorInfo einfo; - OnigSyntaxType syn = *ONIG_SYNTAX_DEFAULT; - - /* ONIG_OPTION_OFF(syn.options, ONIG_OPTION_ASCII_RANGE); */ - - r = onig_new(®, (UChar* )pattern, (UChar* )(pattern + SLEN(pattern)), - ONIG_OPTION_DEFAULT, ONIG_ENCODING_SJIS, &syn, &einfo); - if (r) { - char s[ONIG_MAX_ERROR_MESSAGE_LEN]; - onig_error_code_to_str((UChar* )s, r, &einfo); - fprintf(err_file, "ERROR: %s\n", s); - nerror++; - return ; - } - - r = onig_search(reg, (UChar* )str, (UChar* )(str + SLEN(str)), - (UChar* )str, (UChar* )(str + SLEN(str)), - region, ONIG_OPTION_NONE); - if (r < ONIG_MISMATCH) { - char s[ONIG_MAX_ERROR_MESSAGE_LEN]; - onig_error_code_to_str((UChar* )s, r); - fprintf(err_file, "ERROR: %s\n", s); - nerror++; - return ; - } - - if (r == ONIG_MISMATCH) { - if (not) { - fprintf(stdout, "OK(N): /%s/ '%s'\n", pattern, str); - nsucc++; - } - else { - fprintf(stdout, "FAIL: /%s/ '%s'\n", pattern, str); - nfail++; - } - } - else { - if (not) { - fprintf(stdout, "FAIL(N): /%s/ '%s'\n", pattern, str); - nfail++; - } - else { - if (region->beg[mem] == from && region->end[mem] == to) { - fprintf(stdout, "OK: /%s/ '%s'\n", pattern, str); - nsucc++; - } - else { - fprintf(stdout, "FAIL: /%s/ '%s' %d-%d : %d-%d\n", pattern, str, - (int)from, (int)to, (int)region->beg[mem], (int)region->end[mem]); - nfail++; - } - } - } - onig_free(reg); -#endif -} - -static void x2(char* pattern, char* str, int from, int to) -{ - xx(pattern, str, from, to, 0, 0); -} - -static void x3(char* pattern, char* str, int from, int to, int mem) -{ - xx(pattern, str, from, to, mem, 0); -} - -static void n(char* pattern, char* str) -{ - xx(pattern, str, 0, 0, 0, 1); -} - -extern int main(int argc, char* argv[]) -{ - err_file = stdout; - -#ifdef POSIX_TEST - reg_set_encoding(REG_POSIX_ENCODING_SJIS); -#else - region = onig_region_new(); -#endif - - x2("", "", 0, 0); - x2("^", "", 0, 0); - x2("$", "", 0, 0); - x2("\\G", "", 0, 0); - x2("\\A", "", 0, 0); - x2("\\Z", "", 0, 0); - x2("\\z", "", 0, 0); - x2("^$", "", 0, 0); - x2("\\ca", "\001", 0, 1); - x2("\\C-b", "\002", 0, 1); - x2("\\c\\\\", "\034", 0, 1); - x2("q[\\c\\\\]", "q\034", 0, 2); - x2("", "a", 0, 0); - x2("a", "a", 0, 1); - x2("\\x61", "a", 0, 1); - x2("aa", "aa", 0, 2); - x2("aaa", "aaa", 0, 3); - x2("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 0, 35); - x2("ab", "ab", 0, 2); - x2("b", "ab", 1, 2); - x2("bc", "abc", 1, 3); - x2("(?i:#RET#)", "#INS##RET#", 5, 10); - x2("\\17", "\017", 0, 1); - x2("\\x1f", "\x1f", 0, 1); - x2("a(?#....\\\\JJJJ)b", "ab", 0, 2); - x2("(?x) G (o O(?-x)oO) g L", "GoOoOgLe", 0, 7); - x2(".", "a", 0, 1); - n(".", ""); - x2("..", "ab", 0, 2); - x2("\\w", "e", 0, 1); - n("\\W", "e"); - x2("\\s", " ", 0, 1); - x2("\\S", "b", 0, 1); - x2("\\d", "4", 0, 1); - n("\\D", "4"); - x2("\\b", "z ", 0, 0); - x2("\\b", " z", 1, 1); - x2("\\B", "zz ", 1, 1); - x2("\\B", "z ", 2, 2); - x2("\\B", " z", 0, 0); - x2("[ab]", "b", 0, 1); - n("[ab]", "c"); - x2("[a-z]", "t", 0, 1); - n("[^a]", "a"); - x2("[^a]", "\n", 0, 1); - x2("[]]", "]", 0, 1); - n("[^]]", "]"); - x2("[\\^]+", "0^^1", 1, 3); - x2("[b-]", "b", 0, 1); - x2("[b-]", "-", 0, 1); - x2("[\\w]", "z", 0, 1); - n("[\\w]", " "); - x2("[\\W]", "b$", 1, 2); - x2("[\\d]", "5", 0, 1); - n("[\\d]", "e"); - x2("[\\D]", "t", 0, 1); - n("[\\D]", "3"); - x2("[\\s]", " ", 0, 1); - n("[\\s]", "a"); - x2("[\\S]", "b", 0, 1); - n("[\\S]", " "); - x2("[\\w\\d]", "2", 0, 1); - n("[\\w\\d]", " "); - x2("[[:upper:]]", "B", 0, 1); - x2("[*[:xdigit:]+]", "+", 0, 1); - x2("[*[:xdigit:]+]", "GHIKK-9+*", 6, 7); - x2("[*[:xdigit:]+]", "-@^+", 3, 4); - n("[[:upper]]", "A"); - x2("[[:upper]]", ":", 0, 1); - x2("[\\044-\\047]", "\046", 0, 1); - x2("[\\x5a-\\x5c]", "\x5b", 0, 1); - x2("[\\x6A-\\x6D]", "\x6c", 0, 1); - n("[\\x6A-\\x6D]", "\x6E"); - n("^[0-9A-F]+ 0+ UNDEF ", "75F 00000000 SECT14A notype () External | _rb_apply"); - x2("[\\[]", "[", 0, 1); - x2("[\\]]", "]", 0, 1); - x2("[&]", "&", 0, 1); - x2("[[ab]]", "b", 0, 1); - x2("[[ab]c]", "c", 0, 1); - n("[[^a]]", "a"); - n("[^[a]]", "a"); - x2("[[ab]&&bc]", "b", 0, 1); - n("[[ab]&&bc]", "a"); - n("[[ab]&&bc]", "c"); - x2("[a-z&&b-y&&c-x]", "w", 0, 1); - n("[^a-z&&b-y&&c-x]", "w"); - x2("[[^a&&a]&&a-z]", "b", 0, 1); - n("[[^a&&a]&&a-z]", "a"); - x2("[[^a-z&&bcdef]&&[^c-g]]", "h", 0, 1); - n("[[^a-z&&bcdef]&&[^c-g]]", "c"); - x2("[^[^abc]&&[^cde]]", "c", 0, 1); - x2("[^[^abc]&&[^cde]]", "e", 0, 1); - n("[^[^abc]&&[^cde]]", "f"); - x2("[a-&&-a]", "-", 0, 1); - n("[a\\-&&\\-a]", "&"); - n("\\wabc", " abc"); - x2("a\\Wbc", "a bc", 0, 4); - x2("a.b.c", "aabbc", 0, 5); - x2(".\\wb\\W..c", "abb bcc", 0, 7); - x2("\\s\\wzzz", " zzzz", 0, 5); - x2("aa.b", "aabb", 0, 4); - n(".a", "ab"); - x2(".a", "aa", 0, 2); - x2("^a", "a", 0, 1); - x2("^a$", "a", 0, 1); - x2("^\\w$", "a", 0, 1); - n("^\\w$", " "); - x2("^\\wab$", "zab", 0, 3); - x2("^\\wabcdef$", "zabcdef", 0, 7); - x2("^\\w...def$", "zabcdef", 0, 7); - x2("\\w\\w\\s\\Waaa\\d", "aa aaa4", 0, 8); - x2("\\A\\Z", "", 0, 0); - x2("\\Axyz", "xyz", 0, 3); - x2("xyz\\Z", "xyz", 0, 3); - x2("xyz\\z", "xyz", 0, 3); - x2("a\\Z", "a", 0, 1); - x2("\\Gaz", "az", 0, 2); - n("\\Gz", "bza"); - n("az\\G", "az"); - n("az\\A", "az"); - n("a\\Az", "az"); - x2("\\^\\$", "^$", 0, 2); - x2("^x?y", "xy", 0, 2); - x2("^(x?y)", "xy", 0, 2); - x2("\\w", "_", 0, 1); - n("\\W", "_"); - x2("(?=z)z", "z", 0, 1); - n("(?=z).", "a"); - x2("(?!z)a", "a", 0, 1); - n("(?!z)a", "z"); - x2("(?i:a)", "a", 0, 1); - x2("(?i:a)", "A", 0, 1); - x2("(?i:A)", "a", 0, 1); - n("(?i:A)", "b"); - x2("(?i:[A-Z])", "a", 0, 1); - x2("(?i:[f-m])", "H", 0, 1); - x2("(?i:[f-m])", "h", 0, 1); - n("(?i:[f-m])", "e"); - x2("(?i:[A-c])", "D", 0, 1); - n("(?i:[^a-z])", "A"); - n("(?i:[^a-z])", "a"); - x2("(?i:[!-k])", "Z", 0, 1); - x2("(?i:[!-k])", "7", 0, 1); - x2("(?i:[T-}])", "b", 0, 1); - x2("(?i:[T-}])", "{", 0, 1); - x2("(?i:\\?a)", "?A", 0, 2); - x2("(?i:\\*A)", "*a", 0, 2); - n(".", "\n"); - x2("(?m:.)", "\n", 0, 1); - x2("(?m:a.)", "a\n", 0, 2); - x2("(?m:.b)", "a\nb", 1, 3); - x2(".*abc", "dddabdd\nddabc", 8, 13); - x2("(?m:.*abc)", "dddabddabc", 0, 10); - n("(?i)(?-i)a", "A"); - n("(?i)(?-i:a)", "A"); - x2("a?", "", 0, 0); - x2("a?", "b", 0, 0); - x2("a?", "a", 0, 1); - x2("a*", "", 0, 0); - x2("a*", "a", 0, 1); - x2("a*", "aaa", 0, 3); - x2("a*", "baaaa", 0, 0); - n("a+", ""); - x2("a+", "a", 0, 1); - x2("a+", "aaaa", 0, 4); - x2("a+", "aabbb", 0, 2); - x2("a+", "baaaa", 1, 5); - x2(".?", "", 0, 0); - x2(".?", "f", 0, 1); - x2(".?", "\n", 0, 0); - x2(".*", "", 0, 0); - x2(".*", "abcde", 0, 5); - x2(".+", "z", 0, 1); - x2(".+", "zdswer\n", 0, 6); - x2("(.*)a\\1f", "babfbac", 0, 4); - x2("(.*)a\\1f", "bacbabf", 3, 7); - x2("((.*)a\\2f)", "bacbabf", 3, 7); - x2("(.*)a\\1f", "baczzzzzz\nbazz\nzzzzbabf", 19, 23); - x2("a|b", "a", 0, 1); - x2("a|b", "b", 0, 1); - x2("|a", "a", 0, 0); - x2("(|a)", "a", 0, 0); - x2("ab|bc", "ab", 0, 2); - x2("ab|bc", "bc", 0, 2); - x2("z(?:ab|bc)", "zbc", 0, 3); - x2("a(?:ab|bc)c", "aabc", 0, 4); - x2("ab|(?:ac|az)", "az", 0, 2); - x2("a|b|c", "dc", 1, 2); - x2("a|b|cd|efg|h|ijk|lmn|o|pq|rstuvwx|yz", "pqr", 0, 2); - n("a|b|cd|efg|h|ijk|lmn|o|pq|rstuvwx|yz", "mn"); - x2("a|^z", "ba", 1, 2); - x2("a|^z", "za", 0, 1); - x2("a|\\Gz", "bza", 2, 3); - x2("a|\\Gz", "za", 0, 1); - x2("a|\\Az", "bza", 2, 3); - x2("a|\\Az", "za", 0, 1); - x2("a|b\\Z", "ba", 1, 2); - x2("a|b\\Z", "b", 0, 1); - x2("a|b\\z", "ba", 1, 2); - x2("a|b\\z", "b", 0, 1); - x2("\\w|\\s", " ", 0, 1); - n("\\w|\\w", " "); - x2("\\w|%", "%", 0, 1); - x2("\\w|[&$]", "&", 0, 1); - x2("[b-d]|[^e-z]", "a", 0, 1); - x2("(?:a|[c-f])|bz", "dz", 0, 1); - x2("(?:a|[c-f])|bz", "bz", 0, 2); - x2("abc|(?=zz)..f", "zzf", 0, 3); - x2("abc|(?!zz)..f", "abf", 0, 3); - x2("(?=za)..a|(?=zz)..a", "zza", 0, 3); - n("(?>a|abd)c", "abdc"); - x2("(?>abd|a)c", "abdc", 0, 4); - x2("a?|b", "a", 0, 1); - x2("a?|b", "b", 0, 0); - x2("a?|b", "", 0, 0); - x2("a*|b", "aa", 0, 2); - x2("a*|b*", "ba", 0, 0); - x2("a*|b*", "ab", 0, 1); - x2("a+|b*", "", 0, 0); - x2("a+|b*", "bbb", 0, 3); - x2("a+|b*", "abbb", 0, 1); - n("a+|b+", ""); - x2("(a|b)?", "b", 0, 1); - x2("(a|b)*", "ba", 0, 2); - x2("(a|b)+", "bab", 0, 3); - x2("(ab|ca)+", "caabbc", 0, 4); - x2("(ab|ca)+", "aabca", 1, 5); - x2("(ab|ca)+", "abzca", 0, 2); - x2("(a|bab)+", "ababa", 0, 5); - x2("(a|bab)+", "ba", 1, 2); - x2("(a|bab)+", "baaaba", 1, 4); - x2("(?:a|b)(?:a|b)", "ab", 0, 2); - x2("(?:a*|b*)(?:a*|b*)", "aaabbb", 0, 3); - x2("(?:a*|b*)(?:a+|b+)", "aaabbb", 0, 6); - x2("(?:a+|b+){2}", "aaabbb", 0, 6); - x2("h{0,}", "hhhh", 0, 4); - x2("(?:a+|b+){1,2}", "aaabbb", 0, 6); - n("ax{2}*a", "0axxxa1"); - n("a.{0,2}a", "0aXXXa0"); - n("a.{0,2}?a", "0aXXXa0"); - n("a.{0,2}?a", "0aXXXXa0"); - x2("^a{2,}?a$", "aaa", 0, 3); - x2("^[a-z]{2,}?$", "aaa", 0, 3); - x2("(?:a+|\\Ab*)cc", "cc", 0, 2); - n("(?:a+|\\Ab*)cc", "abcc"); - x2("(?:^a+|b+)*c", "aabbbabc", 6, 8); - x2("(?:^a+|b+)*c", "aabbbbc", 0, 7); - x2("a|(?i)c", "C", 0, 1); - x2("(?i)c|a", "C", 0, 1); - x2("(?i)c|a", "A", 0, 1); - x2("(?i:c)|a", "C", 0, 1); - n("(?i:c)|a", "A"); - x2("[abc]?", "abc", 0, 1); - x2("[abc]*", "abc", 0, 3); - x2("[^abc]*", "abc", 0, 0); - n("[^abc]+", "abc"); - x2("a?\?", "aaa", 0, 0); - x2("ba?\?b", "bab", 0, 3); - x2("a*?", "aaa", 0, 0); - x2("ba*?", "baa", 0, 1); - x2("ba*?b", "baab", 0, 4); - x2("a+?", "aaa", 0, 1); - x2("ba+?", "baa", 0, 2); - x2("ba+?b", "baab", 0, 4); - x2("(?:a?)?\?", "a", 0, 0); - x2("(?:a?\?)?", "a", 0, 0); - x2("(?:a?)+?", "aaa", 0, 1); - x2("(?:a+)?\?", "aaa", 0, 0); - x2("(?:a+)?\?b", "aaab", 0, 4); - x2("(?:ab)?{2}", "", 0, 0); - x2("(?:ab)?{2}", "ababa", 0, 4); - x2("(?:ab)*{0}", "ababa", 0, 0); - x2("(?:ab){3,}", "abababab", 0, 8); - n("(?:ab){3,}", "abab"); - x2("(?:ab){2,4}", "ababab", 0, 6); - x2("(?:ab){2,4}", "ababababab", 0, 8); - x2("(?:ab){2,4}?", "ababababab", 0, 4); - x2("(?:ab){,}", "ab{,}", 0, 5); - x2("(?:abc)+?{2}", "abcabcabc", 0, 6); - x2("(?:X*)(?i:xa)", "XXXa", 0, 4); - x2("(d+)([^abc]z)", "dddz", 0, 4); - x2("([^abc]*)([^abc]z)", "dddz", 0, 4); - x2("(\\w+)(\\wz)", "dddz", 0, 4); - x3("(a)", "a", 0, 1, 1); - x3("(ab)", "ab", 0, 2, 1); - x2("((ab))", "ab", 0, 2); - x3("((ab))", "ab", 0, 2, 1); - x3("((ab))", "ab", 0, 2, 2); - x3("((((((((((((((((((((ab))))))))))))))))))))", "ab", 0, 2, 20); - x3("(ab)(cd)", "abcd", 0, 2, 1); - x3("(ab)(cd)", "abcd", 2, 4, 2); - x3("()(a)bc(def)ghijk", "abcdefghijk", 3, 6, 3); - x3("(()(a)bc(def)ghijk)", "abcdefghijk", 3, 6, 4); - x2("(^a)", "a", 0, 1); - x3("(a)|(a)", "ba", 1, 2, 1); - x3("(^a)|(a)", "ba", 1, 2, 2); - x3("(a?)", "aaa", 0, 1, 1); - x3("(a*)", "aaa", 0, 3, 1); - x3("(a*)", "", 0, 0, 1); - x3("(a+)", "aaaaaaa", 0, 7, 1); - x3("(a+|b*)", "bbbaa", 0, 3, 1); - x3("(a+|b?)", "bbbaa", 0, 1, 1); - x3("(abc)?", "abc", 0, 3, 1); - x3("(abc)*", "abc", 0, 3, 1); - x3("(abc)+", "abc", 0, 3, 1); - x3("(xyz|abc)+", "abc", 0, 3, 1); - x3("([xyz][abc]|abc)+", "abc", 0, 3, 1); - x3("((?i:abc))", "AbC", 0, 3, 1); - x2("(abc)(?i:\\1)", "abcABC", 0, 6); - x3("((?m:a.c))", "a\nc", 0, 3, 1); - x3("((?=az)a)", "azb", 0, 1, 1); - x3("abc|(.abd)", "zabd", 0, 4, 1); - x2("(?:abc)|(ABC)", "abc", 0, 3); - x3("(?i:(abc))|(zzz)", "ABC", 0, 3, 1); - x3("a*(.)", "aaaaz", 4, 5, 1); - x3("a*?(.)", "aaaaz", 0, 1, 1); - x3("a*?(c)", "aaaac", 4, 5, 1); - x3("[bcd]a*(.)", "caaaaz", 5, 6, 1); - x3("(\\Abb)cc", "bbcc", 0, 2, 1); - n("(\\Abb)cc", "zbbcc"); - x3("(^bb)cc", "bbcc", 0, 2, 1); - n("(^bb)cc", "zbbcc"); - x3("cc(bb$)", "ccbb", 2, 4, 1); - n("cc(bb$)", "ccbbb"); - n("(\\1)", ""); - n("\\1(a)", "aa"); - n("(a(b)\\1)\\2+", "ababb"); - n("(?:(?:\\1|z)(a))+$", "zaa"); - x2("(?:(?:\\1|z)(a))+$", "zaaa", 0, 4); - x2("(a)(?=\\1)", "aa", 0, 1); - n("(a)$|\\1", "az"); - x2("(a)\\1", "aa", 0, 2); - n("(a)\\1", "ab"); - x2("(a?)\\1", "aa", 0, 2); - x2("(a?\?)\\1", "aa", 0, 0); - x2("(a*)\\1", "aaaaa", 0, 4); - x3("(a*)\\1", "aaaaa", 0, 2, 1); - x2("a(b*)\\1", "abbbb", 0, 5); - x2("a(b*)\\1", "ab", 0, 1); - x2("(a*)(b*)\\1\\2", "aaabbaaabb", 0, 10); - x2("(a*)(b*)\\2", "aaabbbb", 0, 7); - x2("(((((((a*)b))))))c\\7", "aaabcaaa", 0, 8); - x3("(((((((a*)b))))))c\\7", "aaabcaaa", 0, 3, 7); - x2("(a)(b)(c)\\2\\1\\3", "abcbac", 0, 6); - x2("([a-d])\\1", "cc", 0, 2); - x2("(\\w\\d\\s)\\1", "f5 f5 ", 0, 6); - n("(\\w\\d\\s)\\1", "f5 f5"); - x2("(who|[a-c]{3})\\1", "whowho", 0, 6); - x2("...(who|[a-c]{3})\\1", "abcwhowho", 0, 9); - x2("(who|[a-c]{3})\\1", "cbccbc", 0, 6); - x2("(^a)\\1", "aa", 0, 2); - n("(^a)\\1", "baa"); - n("(a$)\\1", "aa"); - n("(ab\\Z)\\1", "ab"); - x2("(a*\\Z)\\1", "a", 1, 1); - x2(".(a*\\Z)\\1", "ba", 1, 2); - x3("(.(abc)\\2)", "zabcabc", 0, 7, 1); - x3("(.(..\\d.)\\2)", "z12341234", 0, 9, 1); - x2("((?i:az))\\1", "AzAz", 0, 4); - n("((?i:az))\\1", "Azaz"); - x2("(?<=a)b", "ab", 1, 2); - n("(?<=a)b", "bb"); - x2("(?<=a|b)b", "bb", 1, 2); - x2("(?<=a|bc)b", "bcb", 2, 3); - x2("(?<=a|bc)b", "ab", 1, 2); - x2("(?<=a|bc||defghij|klmnopq|r)z", "rz", 1, 2); - x2("(a)\\g<1>", "aa", 0, 2); - x2("(?a)", "a", 0, 1); - x2("(?ab)\\g", "abab", 0, 4); - x2("(?.zv.)\\k", "azvbazvb", 0, 8); - x2("(?<=\\g)|-\\zEND (?XyZ)", "XyZ", 3, 3); - x2("(?|a\\g)+", "", 0, 0); - x2("(?|\\(\\g\\))+$", "()(())", 0, 6); - x3("\\g(?.){0}", "X", 0, 1, 1); - x2("\\g(abc|df(?.YZ){2,8}){0}", "XYZ", 0, 3); - x2("\\A(?(a\\g)|)\\z", "aaaa", 0, 4); - x2("(?|\\g\\g)\\z|\\zEND (?a|(b)\\g)", "bbbbabba", 0, 8); - x2("(?\\w+\\sx)a+\\k", " fg xaaaaaaaafg x", 2, 18); - x3("(z)()()(?<_9>a)\\g<_9>", "zaa", 2, 3, 1); - x2("(.)(((?<_>a)))\\k<_>", "zaa", 0, 3); - x2("((?\\d)|(?\\w))(\\k|\\k)", "ff", 0, 2); - x2("(?:(?)|(?efg))\\k", "", 0, 0); - x2("(?:(?abc)|(?efg))\\k", "abcefgefg", 3, 9); - n("(?:(?abc)|(?efg))\\k", "abcefg"); - x2("(?:(?.)|(?..)|(?...)|(?....)|(?.....)|(?......)|(?.......)|(?........)|(?.........)|(?..........)|(?...........)|(?............)|(?.............)|(?..............))\\k$", "a-pyumpyum", 2, 10); - x3("(?:(?.)|(?..)|(?...)|(?....)|(?.....)|(?......)|(?.......)|(?........)|(?.........)|(?..........)|(?...........)|(?............)|(?.............)|(?..............))\\k$", "xxxxabcdefghijklmnabcdefghijklmn", 4, 18, 14); - x3("(?)(?)(?)(?)(?)(?)(?)(?)(?)(?)(?)(?)(?)(?)(?)(?aaa)(?)$", "aaa", 0, 3, 16); - x2("(?a|\\(\\g\\))", "a", 0, 1); - x2("(?a|\\(\\g\\))", "((((((a))))))", 0, 13); - x3("(?a|\\(\\g\\))", "((((((((a))))))))", 0, 17, 1); - x2("\\g|\\zEND(?.*abc$)", "abcxxxabc", 0, 9); - x2("\\g<1>|\\zEND(.a.)", "bac", 0, 3); - x3("\\g<_A>\\g<_A>|\\zEND(.a.)(?<_A>.b.)", "xbxyby", 3, 6, 1); - x2("\\A(?:\\g|\\g|\\zEND (?a|c\\gc)(?b|d\\gd))$", "cdcbcdc", 0, 7); - x2("\\A(?|a\\g)\\z|\\zEND (?\\g)", "aaaa", 0, 4); - x2("(?(a|b\\gc){3,5})", "baaaaca", 1, 5); - x2("(?(a|b\\gc){3,5})", "baaaacaaaaa", 0, 10); - x2("(?\\(([^\\(\\)]++|\\g)*+\\))", "((a))", 0, 5); - x2("()*\\1", "", 0, 0); - x2("(?:()|())*\\1\\2", "", 0, 0); - x3("(?:\\1a|())*", "a", 0, 0, 1); - x2("x((.)*)*x", "0x1x2x3", 1, 6); - x2("x((.)*)*x(?i:\\1)\\Z", "0x1x2x1X2", 1, 9); - x2("(?:()|()|()|()|()|())*\\2\\5", "", 0, 0); - x2("(?:()|()|()|(x)|()|())*\\2b\\5", "b", 0, 1); - x2("\\xED\\xF2", "\xed\xf2", 0, 2); - x2("", "あ", 0, 0); - x2("あ", "あ", 0, 2); - n("い", "あ"); - x2("うう", "うう", 0, 4); - x2("あいう", "あいう", 0, 6); - x2("こここここここここここここここここここここここここここここここここここ", "こここここここここここここここここここここここここここここここここここ", 0, 70); - x2("あ", "いあ", 2, 4); - x2("いう", "あいう", 2, 6); - x2("\\xca\\xb8", "\xca\xb8", 0, 2); - x2(".", "あ", 0, 2); - x2("..", "かき", 0, 4); - x2("(?u)\\w", "お", 0, 2); - n("(?u)\\W", "あ"); - x2("(?u)[\\W]", "う$", 2, 3); - x2("\\S", "そ", 0, 2); - x2("\\S", "漢", 0, 2); - x2("\\b", "気 ", 0, 0); - x2("\\b", " ほ", 1, 1); - x2("\\B", "せそ ", 2, 2); - x2("\\B", "う ", 3, 3); - x2("\\B", " い", 0, 0); - x2("[たち]", "ち", 0, 2); - n("[なに]", "ぬ"); - x2("[う-お]", "え", 0, 2); - n("[^け]", "け"); - x2("(?u)[\\w]", "ね", 0, 2); - n("[\\d]", "ふ"); - x2("[\\D]", "は", 0, 2); - n("[\\s]", "く"); - x2("[\\S]", "へ", 0, 2); - x2("(?u)[\\w\\d]", "よ", 0, 2); - x2("(?u)[\\w\\d]", " よ", 3, 5); - n("(?u)\\w鬼車", " 鬼車"); - x2("(?u)鬼\\W車", "鬼 車", 0, 5); - x2("あ.い.う", "ああいいう", 0, 10); - x2("(?u).\\wう\\W..ぞ", "えうう うぞぞ", 0, 13); - x2("(?u)\\s\\wこここ", " ここここ", 0, 9); - x2("ああ.け", "ああけけ", 0, 8); - n(".い", "いえ"); - x2(".お", "おお", 0, 4); - x2("^あ", "あ", 0, 2); - x2("^む$", "む", 0, 2); - x2("(?u)^\\w$", "に", 0, 2); - x2("(?u)^\\wかきくけこ$", "zかきくけこ", 0, 11); - x2("(?u)^\\w...うえお$", "zあいううえお", 0, 13); - x2("(?u)\\w\\w\\s\\Wおおお\\d", "aお おおお4", 0, 12); - x2("\\Aたちつ", "たちつ", 0, 6); - x2("むめも\\Z", "むめも", 0, 6); - x2("かきく\\z", "かきく", 0, 6); - x2("かきく\\Z", "かきく\n", 0, 6); - x2("\\Gぽぴ", "ぽぴ", 0, 4); - n("\\Gえ", "うえお"); - n("とて\\G", "とて"); - n("まみ\\A", "まみ"); - n("ま\\Aみ", "まみ"); - x2("(?=せ)せ", "せ", 0, 2); - n("(?=う).", "い"); - x2("(?!う)か", "か", 0, 2); - n("(?!と)あ", "と"); - x2("(?i:あ)", "あ", 0, 2); - x2("(?i:ぶべ)", "ぶべ", 0, 4); - n("(?i:い)", "う"); - x2("(?m:よ.)", "よ\n", 0, 3); - x2("(?m:.め)", "ま\nめ", 2, 5); - x2("あ?", "", 0, 0); - x2("変?", "化", 0, 0); - x2("変?", "変", 0, 2); - x2("量*", "", 0, 0); - x2("量*", "量", 0, 2); - x2("子*", "子子子", 0, 6); - x2("馬*", "鹿馬馬馬馬", 0, 0); - n("山+", ""); - x2("河+", "河", 0, 2); - x2("時+", "時時時時", 0, 8); - x2("え+", "ええううう", 0, 4); - x2("う+", "おうううう", 2, 10); - x2(".?", "た", 0, 2); - x2(".*", "ぱぴぷぺ", 0, 8); - x2(".+", "ろ", 0, 2); - x2(".+", "いうえか\n", 0, 8); - x2("あ|い", "あ", 0, 2); - x2("あ|い", "い", 0, 2); - x2("あい|いう", "あい", 0, 4); - x2("あい|いう", "いう", 0, 4); - x2("を(?:かき|きく)", "をかき", 0, 6); - x2("を(?:かき|きく)け", "をきくけ", 0, 8); - x2("あい|(?:あう|あを)", "あを", 0, 4); - x2("あ|い|う", "えう", 2, 4); - x2("あ|い|うえ|おかき|く|けこさ|しすせ|そ|たち|つてとなに|ぬね", "しすせ", 0, 6); - n("あ|い|うえ|おかき|く|けこさ|しすせ|そ|たち|つてとなに|ぬね", "すせ"); - x2("あ|^わ", "ぶあ", 2, 4); - x2("あ|^を", "をあ", 0, 2); - x2("鬼|\\G車", "け車鬼", 4, 6); - x2("鬼|\\G車", "車鬼", 0, 2); - x2("鬼|\\A車", "b車鬼", 3, 5); - x2("鬼|\\A車", "車", 0, 2); - x2("鬼|車\\Z", "車鬼", 2, 4); - x2("鬼|車\\Z", "車", 0, 2); - x2("鬼|車\\Z", "車\n", 0, 2); - x2("鬼|車\\z", "車鬼", 2, 4); - x2("鬼|車\\z", "車", 0, 2); - x2("(?u)\\w|\\s", "お", 0, 2); - x2("(?u)\\w|%", "%お", 0, 1); - x2("(?u)\\w|[&$]", "う&", 0, 2); - x2("[い-け]", "う", 0, 2); - x2("[い-け]|[^か-こ]", "あ", 0, 2); - x2("[い-け]|[^か-こ]", "か", 0, 2); - x2("[^あ]", "\n", 0, 1); - x2("(?:あ|[う-き])|いを", "うを", 0, 2); - x2("(?:あ|[う-き])|いを", "いを", 0, 4); - x2("あいう|(?=けけ)..ほ", "けけほ", 0, 6); - x2("あいう|(?!けけ)..ほ", "あいほ", 0, 6); - x2("(?=をあ)..あ|(?=をを)..あ", "ををあ", 0, 6); - x2("(?<=あ|いう)い", "いうい", 4, 6); - n("(?>あ|あいえ)う", "あいえう"); - x2("(?>あいえ|あ)う", "あいえう", 0, 8); - x2("あ?|い", "あ", 0, 2); - x2("あ?|い", "い", 0, 0); - x2("あ?|い", "", 0, 0); - x2("あ*|い", "ああ", 0, 4); - x2("あ*|い*", "いあ", 0, 0); - x2("あ*|い*", "あい", 0, 2); - x2("[aあ]*|い*", "aあいいい", 0, 3); - x2("あ+|い*", "", 0, 0); - x2("あ+|い*", "いいい", 0, 6); - x2("あ+|い*", "あいいい", 0, 2); - x2("あ+|い*", "aあいいい", 0, 0); - n("あ+|い+", ""); - x2("(あ|い)?", "い", 0, 2); - x2("(あ|い)*", "いあ", 0, 4); - x2("(あ|い)+", "いあい", 0, 6); - x2("(あい|うあ)+", "うああいうえ", 0, 8); - x2("(あい|うえ)+", "うああいうえ", 4, 12); - x2("(あい|うあ)+", "ああいうあ", 2, 10); - x2("(あい|うあ)+", "あいをうあ", 0, 4); - x2("(あい|うあ)+", "$$zzzzあいをうあ", 6, 10); - x2("(あ|いあい)+", "あいあいあ", 0, 10); - x2("(あ|いあい)+", "いあ", 2, 4); - x2("(あ|いあい)+", "いあああいあ", 2, 8); - x2("(?:あ|い)(?:あ|い)", "あい", 0, 4); - x2("(?:あ*|い*)(?:あ*|い*)", "あああいいい", 0, 6); - x2("(?:あ*|い*)(?:あ+|い+)", "あああいいい", 0, 12); - x2("(?:あ+|い+){2}", "あああいいい", 0, 12); - x2("(?:あ+|い+){1,2}", "あああいいい", 0, 12); - x2("(?:あ+|\\Aい*)うう", "うう", 0, 4); - n("(?:あ+|\\Aい*)うう", "あいうう"); - x2("(?:^あ+|い+)*う", "ああいいいあいう", 12, 16); - x2("(?:^あ+|い+)*う", "ああいいいいう", 0, 14); - x2("う{0,}", "うううう", 0, 8); - x2("あ|(?i)c", "C", 0, 1); - x2("(?i)c|あ", "C", 0, 1); - x2("(?i:あ)|a", "a", 0, 1); - n("(?i:あ)|a", "A"); - x2("[あいう]?", "あいう", 0, 2); - x2("[あいう]*", "あいう", 0, 6); - x2("[^あいう]*", "あいう", 0, 0); - n("[^あいう]+", "あいう"); - x2("あ?\?", "あああ", 0, 0); - x2("いあ?\?い", "いあい", 0, 6); - x2("あ*?", "あああ", 0, 0); - x2("いあ*?", "いああ", 0, 2); - x2("いあ*?い", "いああい", 0, 8); - x2("あ+?", "あああ", 0, 2); - x2("いあ+?", "いああ", 0, 4); - x2("いあ+?い", "いああい", 0, 8); - x2("(?:天?)?\?", "天", 0, 0); - x2("(?:天?\?)?", "天", 0, 0); - x2("(?:夢?)+?", "夢夢夢", 0, 2); - x2("(?:風+)?\?", "風風風", 0, 0); - x2("(?:雪+)?\?霜", "雪雪雪霜", 0, 8); - x2("(?:あい)?{2}", "", 0, 0); - x2("(?:鬼車)?{2}", "鬼車鬼車鬼", 0, 8); - x2("(?:鬼車)*{0}", "鬼車鬼車鬼", 0, 0); - x2("(?:鬼車){3,}", "鬼車鬼車鬼車鬼車", 0, 16); - n("(?:鬼車){3,}", "鬼車鬼車"); - x2("(?:鬼車){2,4}", "鬼車鬼車鬼車", 0, 12); - x2("(?:鬼車){2,4}", "鬼車鬼車鬼車鬼車鬼車", 0, 16); - x2("(?:鬼車){2,4}?", "鬼車鬼車鬼車鬼車鬼車", 0, 8); - x2("(?:鬼車){,}", "鬼車{,}", 0, 7); - x2("(?:かきく)+?{2}", "かきくかきくかきく", 0, 12); - x3("(火)", "火", 0, 2, 1); - x3("(火水)", "火水", 0, 4, 1); - x2("((時間))", "時間", 0, 4); - x3("((風水))", "風水", 0, 4, 1); - x3("((昨日))", "昨日", 0, 4, 2); - x3("((((((((((((((((((((量子))))))))))))))))))))", "量子", 0, 4, 20); - x3("(あい)(うえ)", "あいうえ", 0, 4, 1); - x3("(あい)(うえ)", "あいうえ", 4, 8, 2); - x3("()(あ)いう(えおか)きくけこ", "あいうえおかきくけこ", 6, 12, 3); - x3("(()(あ)いう(えおか)きくけこ)", "あいうえおかきくけこ", 6, 12, 4); - x3(".*(フォ)ン・マ(ン()シュタ)イン", "フォン・マンシュタイン", 10, 18, 2); - x2("(^あ)", "あ", 0, 2); - x3("(あ)|(あ)", "いあ", 2, 4, 1); - x3("(^あ)|(あ)", "いあ", 2, 4, 2); - x3("(あ?)", "あああ", 0, 2, 1); - x3("(ま*)", "ままま", 0, 6, 1); - x3("(と*)", "", 0, 0, 1); - x3("(る+)", "るるるるるるる", 0, 14, 1); - x3("(ふ+|へ*)", "ふふふへへ", 0, 6, 1); - x3("(あ+|い?)", "いいいああ", 0, 2, 1); - x3("(あいう)?", "あいう", 0, 6, 1); - x3("(あいう)*", "あいう", 0, 6, 1); - x3("(あいう)+", "あいう", 0, 6, 1); - x3("(さしす|あいう)+", "あいう", 0, 6, 1); - x3("([なにぬ][かきく]|かきく)+", "かきく", 0, 6, 1); - x3("((?i:あいう))", "あいう", 0, 6, 1); - x3("((?m:あ.う))", "あ\nう", 0, 5, 1); - x3("((?=あん)あ)", "あんい", 0, 2, 1); - x3("あいう|(.あいえ)", "んあいえ", 0, 8, 1); - x3("あ*(.)", "ああああん", 8, 10, 1); - x3("あ*?(.)", "ああああん", 0, 2, 1); - x3("あ*?(ん)", "ああああん", 8, 10, 1); - x3("[いうえ]あ*(.)", "えああああん", 10, 12, 1); - x3("(\\Aいい)うう", "いいうう", 0, 4, 1); - n("(\\Aいい)うう", "んいいうう"); - x3("(^いい)うう", "いいうう", 0, 4, 1); - n("(^いい)うう", "んいいうう"); - x3("ろろ(るる$)", "ろろるる", 4, 8, 1); - n("ろろ(るる$)", "ろろるるる"); - x2("(無)\\1", "無無", 0, 4); - n("(無)\\1", "無武"); - x2("(空?)\\1", "空空", 0, 4); - x2("(空?\?)\\1", "空空", 0, 0); - x2("(空*)\\1", "空空空空空", 0, 8); - x3("(空*)\\1", "空空空空空", 0, 4, 1); - x2("あ(い*)\\1", "あいいいい", 0, 10); - x2("あ(い*)\\1", "あい", 0, 2); - x2("(あ*)(い*)\\1\\2", "あああいいあああいい", 0, 20); - x2("(あ*)(い*)\\2", "あああいいいい", 0, 14); - x3("(あ*)(い*)\\2", "あああいいいい", 6, 10, 2); - x2("(((((((ぽ*)ぺ))))))ぴ\\7", "ぽぽぽぺぴぽぽぽ", 0, 16); - x3("(((((((ぽ*)ぺ))))))ぴ\\7", "ぽぽぽぺぴぽぽぽ", 0, 6, 7); - x2("(は)(ひ)(ふ)\\2\\1\\3", "はひふひはふ", 0, 12); - x2("([き-け])\\1", "くく", 0, 4); - x2("(?u)(\\w\\d\\s)\\1", "あ5 あ5 ", 0, 8); - n("(?u)(\\w\\d\\s)\\1", "あ5 あ5"); - x2("(誰?|[あ-う]{3})\\1", "誰?誰?", 0, 8); - x2("...(誰?|[あ-う]{3})\\1", "あaあ誰?誰?", 0, 13); - x2("(誰?|[あ-う]{3})\\1", "ういうういう", 0, 12); - x2("(^こ)\\1", "ここ", 0, 4); - n("(^む)\\1", "めむむ"); - n("(あ$)\\1", "ああ"); - n("(あい\\Z)\\1", "あい"); - x2("(あ*\\Z)\\1", "あ", 2, 2); - x2(".(あ*\\Z)\\1", "いあ", 2, 4); - x3("(.(やいゆ)\\2)", "zやいゆやいゆ", 0, 13, 1); - x3("(.(..\\d.)\\2)", "あ12341234", 0, 10, 1); - x2("((?i:あvず))\\1", "あvずあvず", 0, 10); - x2("(?<愚か>変|\\(\\g<愚か>\\))", "((((((変))))))", 0, 14); - x2("\\A(?:\\g<阿_1>|\\g<云_2>|\\z終了 (?<阿_1>観|自\\g<云_2>自)(?<云_2>在|菩薩\\g<阿_1>菩薩))$", "菩薩自菩薩自在自菩薩自菩薩", 0, 26); - x2("[[ひふ]]", "ふ", 0, 2); - x2("[[いおう]か]", "か", 0, 2); - n("[[^あ]]", "あ"); - n("[^[あ]]", "あ"); - x2("[^[^あ]]", "あ", 0, 2); - x2("[[かきく]&&きく]", "く", 0, 2); - n("[[かきく]&&きく]", "か"); - n("[[かきく]&&きく]", "け"); - x2("[あ-ん&&い-を&&う-ゑ]", "ゑ", 0, 2); - n("[^あ-ん&&い-を&&う-ゑ]", "ゑ"); - x2("[[^あ&&あ]&&あ-ん]", "い", 0, 2); - n("[[^あ&&あ]&&あ-ん]", "あ"); - x2("[[^あ-ん&&いうえお]&&[^う-か]]", "き", 0, 2); - n("[[^あ-ん&&いうえお]&&[^う-か]]", "い"); - x2("[^[^あいう]&&[^うえお]]", "う", 0, 2); - x2("[^[^あいう]&&[^うえお]]", "え", 0, 2); - n("[^[^あいう]&&[^うえお]]", "か"); - x2("[あ-&&-あ]", "-", 0, 1); - x2("[^[^a-zあいう]&&[^bcdefgうえお]q-w]", "え", 0, 2); - x2("[^[^a-zあいう]&&[^bcdefgうえお]g-w]", "f", 0, 1); - x2("[^[^a-zあいう]&&[^bcdefgうえお]g-w]", "g", 0, 1); - n("[^[^a-zあいう]&&[^bcdefgうえお]g-w]", "2"); - x2("aバージョンのダウンロード<\\/b>", "aバージョンのダウンロード", 0, 32); - x2(".バージョンのダウンロード<\\/b>", "aバージョンのダウンロード", 0, 32); - fprintf(stdout, - "\nRESULT SUCC: %d, FAIL: %d, ERROR: %d (by Onigmo %s)\n", - nsucc, nfail, nerror, onig_version()); - -#ifndef POSIX_TEST - onig_region_free(region, 1); - onig_end(); -#endif - - return ((nfail == 0 && nerror == 0) ? 0 : -1); -} +/* + * This program was generated by testconv.rb. + */ +#ifdef ONIG_ESCAPE_UCHAR_COLLISION +#undef ONIG_ESCAPE_UCHAR_COLLISION +#endif +#include + +#ifdef POSIX_TEST +#include "onigposix.h" +#else +#include "oniguruma.h" +#endif + +#include + +#define SLEN(s) strlen(s) + +static int nsucc = 0; +static int nfail = 0; +static int nerror = 0; + +static FILE* err_file; + +#ifndef POSIX_TEST +static OnigRegion* region; +#endif + +static void xx(char* pattern, char* str, int from, int to, int mem, int not) +{ + int r; + +#ifdef POSIX_TEST + regex_t reg; + char buf[200]; + regmatch_t pmatch[25]; + + r = regcomp(®, pattern, REG_EXTENDED | REG_NEWLINE); + if (r) { + regerror(r, ®, buf, sizeof(buf)); + fprintf(err_file, "ERROR: %s\n", buf); + nerror++; + return ; + } + + r = regexec(®, str, reg.re_nsub + 1, pmatch, 0); + if (r != 0 && r != REG_NOMATCH) { + regerror(r, ®, buf, sizeof(buf)); + fprintf(err_file, "ERROR: %s\n", buf); + nerror++; + return ; + } + + if (r == REG_NOMATCH) { + if (not) { + fprintf(stdout, "OK(N): /%s/ '%s'\n", pattern, str); + nsucc++; + } + else { + fprintf(stdout, "FAIL: /%s/ '%s'\n", pattern, str); + nfail++; + } + } + else { + if (not) { + fprintf(stdout, "FAIL(N): /%s/ '%s'\n", pattern, str); + nfail++; + } + else { + if (pmatch[mem].rm_so == from && pmatch[mem].rm_eo == to) { + fprintf(stdout, "OK: /%s/ '%s'\n", pattern, str); + nsucc++; + } + else { + fprintf(stdout, "FAIL: /%s/ '%s' %d-%d : %d-%d\n", pattern, str, + from, to, pmatch[mem].rm_so, pmatch[mem].rm_eo); + nfail++; + } + } + } + regfree(®); + +#else + regex_t* reg; + OnigErrorInfo einfo; + + r = onig_new(®, (UChar* )pattern, (UChar* )(pattern + SLEN(pattern)), + ONIG_OPTION_DEFAULT, ONIG_ENCODING_SJIS, ONIG_SYNTAX_DEFAULT, &einfo); + if (r) { + char s[ONIG_MAX_ERROR_MESSAGE_LEN]; + onig_error_code_to_str((UChar* )s, r, &einfo); + fprintf(err_file, "ERROR: %s\n", s); + nerror++; + return ; + } + + r = onig_search(reg, (UChar* )str, (UChar* )(str + SLEN(str)), + (UChar* )str, (UChar* )(str + SLEN(str)), + region, ONIG_OPTION_NONE); + if (r < ONIG_MISMATCH) { + char s[ONIG_MAX_ERROR_MESSAGE_LEN]; + onig_error_code_to_str((UChar* )s, r); + fprintf(err_file, "ERROR: %s\n", s); + nerror++; + return ; + } + + if (r == ONIG_MISMATCH) { + if (not) { + fprintf(stdout, "OK(N): /%s/ '%s'\n", pattern, str); + nsucc++; + } + else { + fprintf(stdout, "FAIL: /%s/ '%s'\n", pattern, str); + nfail++; + } + } + else { + if (not) { + fprintf(stdout, "FAIL(N): /%s/ '%s'\n", pattern, str); + nfail++; + } + else { + if (region->beg[mem] == from && region->end[mem] == to) { + fprintf(stdout, "OK: /%s/ '%s'\n", pattern, str); + nsucc++; + } + else { + fprintf(stdout, "FAIL: /%s/ '%s' %d-%d : %d-%d\n", pattern, str, + from, to, region->beg[mem], region->end[mem]); + nfail++; + } + } + } + onig_free(reg); +#endif +} + +static void x2(char* pattern, char* str, int from, int to) +{ + xx(pattern, str, from, to, 0, 0); +} + +static void x3(char* pattern, char* str, int from, int to, int mem) +{ + xx(pattern, str, from, to, mem, 0); +} + +static void n(char* pattern, char* str) +{ + xx(pattern, str, 0, 0, 0, 1); +} + +extern int main(int argc, char* argv[]) +{ +#ifndef POSIX_TEST + static OnigEncoding use_encs[1]; + + use_encs[0] = ONIG_ENCODING_SJIS; + onig_initialize(use_encs, sizeof(use_encs)/sizeof(use_encs[0])); +#endif + + err_file = stdout; + +#ifdef POSIX_TEST + reg_set_encoding(REG_POSIX_ENCODING_SJIS); +#else + region = onig_region_new(); +#endif + + x2("", "", 0, 0); + x2("^", "", 0, 0); + x2("$", "", 0, 0); + x2("\\G", "", 0, 0); + x2("\\A", "", 0, 0); + x2("\\Z", "", 0, 0); + x2("\\z", "", 0, 0); + x2("^$", "", 0, 0); + x2("\\ca", "\001", 0, 1); + x2("\\C-b", "\002", 0, 1); + x2("\\c\\\\", "\034", 0, 1); + x2("q[\\c\\\\]", "q\034", 0, 2); + x2("", "a", 0, 0); + x2("a", "a", 0, 1); + x2("\\x61", "a", 0, 1); + x2("aa", "aa", 0, 2); + x2("aaa", "aaa", 0, 3); + x2("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 0, 35); + x2("ab", "ab", 0, 2); + x2("b", "ab", 1, 2); + x2("bc", "abc", 1, 3); + x2("(?i:#RET#)", "#INS##RET#", 5, 10); + x2("\\17", "\017", 0, 1); + x2("\\x1f", "\x1f", 0, 1); + x2("a(?#....\\\\JJJJ)b", "ab", 0, 2); + x2("(?x) G (o O(?-x)oO) g L", "GoOoOgLe", 0, 7); + x2(".", "a", 0, 1); + n(".", ""); + x2("..", "ab", 0, 2); + x2("\\w", "e", 0, 1); + n("\\W", "e"); + x2("\\s", " ", 0, 1); + x2("\\S", "b", 0, 1); + x2("\\d", "4", 0, 1); + n("\\D", "4"); + x2("\\b", "z ", 0, 0); + x2("\\b", " z", 1, 1); + x2("\\B", "zz ", 1, 1); + x2("\\B", "z ", 2, 2); + x2("\\B", " z", 0, 0); + x2("[ab]", "b", 0, 1); + n("[ab]", "c"); + x2("[a-z]", "t", 0, 1); + n("[^a]", "a"); + x2("[^a]", "\n", 0, 1); + x2("[]]", "]", 0, 1); + n("[^]]", "]"); + x2("[\\^]+", "0^^1", 1, 3); + x2("[b-]", "b", 0, 1); + x2("[b-]", "-", 0, 1); + x2("[\\w]", "z", 0, 1); + n("[\\w]", " "); + x2("[\\W]", "b$", 1, 2); + x2("[\\d]", "5", 0, 1); + n("[\\d]", "e"); + x2("[\\D]", "t", 0, 1); + n("[\\D]", "3"); + x2("[\\s]", " ", 0, 1); + n("[\\s]", "a"); + x2("[\\S]", "b", 0, 1); + n("[\\S]", " "); + x2("[\\w\\d]", "2", 0, 1); + n("[\\w\\d]", " "); + x2("[[:upper:]]", "B", 0, 1); + x2("[*[:xdigit:]+]", "+", 0, 1); + x2("[*[:xdigit:]+]", "GHIKK-9+*", 6, 7); + x2("[*[:xdigit:]+]", "-@^+", 3, 4); + n("[[:upper]]", "A"); + x2("[[:upper]]", ":", 0, 1); + x2("[\\044-\\047]", "\046", 0, 1); + x2("[\\x5a-\\x5c]", "\x5b", 0, 1); + x2("[\\x6A-\\x6D]", "\x6c", 0, 1); + n("[\\x6A-\\x6D]", "\x6E"); + n("^[0-9A-F]+ 0+ UNDEF ", "75F 00000000 SECT14A notype () External | _rb_apply"); + x2("[\\[]", "[", 0, 1); + x2("[\\]]", "]", 0, 1); + x2("[&]", "&", 0, 1); + x2("[[ab]]", "b", 0, 1); + x2("[[ab]c]", "c", 0, 1); + n("[[^a]]", "a"); + n("[^[a]]", "a"); + x2("[[ab]&&bc]", "b", 0, 1); + n("[[ab]&&bc]", "a"); + n("[[ab]&&bc]", "c"); + x2("[a-z&&b-y&&c-x]", "w", 0, 1); + n("[^a-z&&b-y&&c-x]", "w"); + x2("[[^a&&a]&&a-z]", "b", 0, 1); + n("[[^a&&a]&&a-z]", "a"); + x2("[[^a-z&&bcdef]&&[^c-g]]", "h", 0, 1); + n("[[^a-z&&bcdef]&&[^c-g]]", "c"); + x2("[^[^abc]&&[^cde]]", "c", 0, 1); + x2("[^[^abc]&&[^cde]]", "e", 0, 1); + n("[^[^abc]&&[^cde]]", "f"); + x2("[a-&&-a]", "-", 0, 1); + n("[a\\-&&\\-a]", "&"); + n("\\wabc", " abc"); + x2("a\\Wbc", "a bc", 0, 4); + x2("a.b.c", "aabbc", 0, 5); + x2(".\\wb\\W..c", "abb bcc", 0, 7); + x2("\\s\\wzzz", " zzzz", 0, 5); + x2("aa.b", "aabb", 0, 4); + n(".a", "ab"); + x2(".a", "aa", 0, 2); + x2("^a", "a", 0, 1); + x2("^a$", "a", 0, 1); + x2("^\\w$", "a", 0, 1); + n("^\\w$", " "); + x2("^\\wab$", "zab", 0, 3); + x2("^\\wabcdef$", "zabcdef", 0, 7); + x2("^\\w...def$", "zabcdef", 0, 7); + x2("\\w\\w\\s\\Waaa\\d", "aa aaa4", 0, 8); + x2("\\A\\Z", "", 0, 0); + x2("\\Axyz", "xyz", 0, 3); + x2("xyz\\Z", "xyz", 0, 3); + x2("xyz\\z", "xyz", 0, 3); + x2("a\\Z", "a", 0, 1); + x2("\\Gaz", "az", 0, 2); + n("\\Gz", "bza"); + n("az\\G", "az"); + n("az\\A", "az"); + n("a\\Az", "az"); + x2("\\^\\$", "^$", 0, 2); + x2("^x?y", "xy", 0, 2); + x2("^(x?y)", "xy", 0, 2); + x2("\\w", "_", 0, 1); + n("\\W", "_"); + x2("(?=z)z", "z", 0, 1); + n("(?=z).", "a"); + x2("(?!z)a", "a", 0, 1); + n("(?!z)a", "z"); + x2("(?i:a)", "a", 0, 1); + x2("(?i:a)", "A", 0, 1); + x2("(?i:A)", "a", 0, 1); + n("(?i:A)", "b"); + x2("(?i:[A-Z])", "a", 0, 1); + x2("(?i:[f-m])", "H", 0, 1); + x2("(?i:[f-m])", "h", 0, 1); + n("(?i:[f-m])", "e"); + x2("(?i:[A-c])", "D", 0, 1); + n("(?i:[^a-z])", "A"); + n("(?i:[^a-z])", "a"); + x2("(?i:[!-k])", "Z", 0, 1); + x2("(?i:[!-k])", "7", 0, 1); + x2("(?i:[T-}])", "b", 0, 1); + x2("(?i:[T-}])", "{", 0, 1); + x2("(?i:\\?a)", "?A", 0, 2); + x2("(?i:\\*A)", "*a", 0, 2); + n(".", "\n"); + x2("(?m:.)", "\n", 0, 1); + x2("(?m:a.)", "a\n", 0, 2); + x2("(?m:.b)", "a\nb", 1, 3); + x2(".*abc", "dddabdd\nddabc", 8, 13); + x2("(?m:.*abc)", "dddabddabc", 0, 10); + n("(?i)(?-i)a", "A"); + n("(?i)(?-i:a)", "A"); + x2("a?", "", 0, 0); + x2("a?", "b", 0, 0); + x2("a?", "a", 0, 1); + x2("a*", "", 0, 0); + x2("a*", "a", 0, 1); + x2("a*", "aaa", 0, 3); + x2("a*", "baaaa", 0, 0); + n("a+", ""); + x2("a+", "a", 0, 1); + x2("a+", "aaaa", 0, 4); + x2("a+", "aabbb", 0, 2); + x2("a+", "baaaa", 1, 5); + x2(".?", "", 0, 0); + x2(".?", "f", 0, 1); + x2(".?", "\n", 0, 0); + x2(".*", "", 0, 0); + x2(".*", "abcde", 0, 5); + x2(".+", "z", 0, 1); + x2(".+", "zdswer\n", 0, 6); + x2("(.*)a\\1f", "babfbac", 0, 4); + x2("(.*)a\\1f", "bacbabf", 3, 7); + x2("((.*)a\\2f)", "bacbabf", 3, 7); + x2("(.*)a\\1f", "baczzzzzz\nbazz\nzzzzbabf", 19, 23); + x2("a|b", "a", 0, 1); + x2("a|b", "b", 0, 1); + x2("|a", "a", 0, 0); + x2("(|a)", "a", 0, 0); + x2("ab|bc", "ab", 0, 2); + x2("ab|bc", "bc", 0, 2); + x2("z(?:ab|bc)", "zbc", 0, 3); + x2("a(?:ab|bc)c", "aabc", 0, 4); + x2("ab|(?:ac|az)", "az", 0, 2); + x2("a|b|c", "dc", 1, 2); + x2("a|b|cd|efg|h|ijk|lmn|o|pq|rstuvwx|yz", "pqr", 0, 2); + n("a|b|cd|efg|h|ijk|lmn|o|pq|rstuvwx|yz", "mn"); + x2("a|^z", "ba", 1, 2); + x2("a|^z", "za", 0, 1); + x2("a|\\Gz", "bza", 2, 3); + x2("a|\\Gz", "za", 0, 1); + x2("a|\\Az", "bza", 2, 3); + x2("a|\\Az", "za", 0, 1); + x2("a|b\\Z", "ba", 1, 2); + x2("a|b\\Z", "b", 0, 1); + x2("a|b\\z", "ba", 1, 2); + x2("a|b\\z", "b", 0, 1); + x2("\\w|\\s", " ", 0, 1); + n("\\w|\\w", " "); + x2("\\w|%", "%", 0, 1); + x2("\\w|[&$]", "&", 0, 1); + x2("[b-d]|[^e-z]", "a", 0, 1); + x2("(?:a|[c-f])|bz", "dz", 0, 1); + x2("(?:a|[c-f])|bz", "bz", 0, 2); + x2("abc|(?=zz)..f", "zzf", 0, 3); + x2("abc|(?!zz)..f", "abf", 0, 3); + x2("(?=za)..a|(?=zz)..a", "zza", 0, 3); + n("(?>a|abd)c", "abdc"); + x2("(?>abd|a)c", "abdc", 0, 4); + x2("a?|b", "a", 0, 1); + x2("a?|b", "b", 0, 0); + x2("a?|b", "", 0, 0); + x2("a*|b", "aa", 0, 2); + x2("a*|b*", "ba", 0, 0); + x2("a*|b*", "ab", 0, 1); + x2("a+|b*", "", 0, 0); + x2("a+|b*", "bbb", 0, 3); + x2("a+|b*", "abbb", 0, 1); + n("a+|b+", ""); + x2("(a|b)?", "b", 0, 1); + x2("(a|b)*", "ba", 0, 2); + x2("(a|b)+", "bab", 0, 3); + x2("(ab|ca)+", "caabbc", 0, 4); + x2("(ab|ca)+", "aabca", 1, 5); + x2("(ab|ca)+", "abzca", 0, 2); + x2("(a|bab)+", "ababa", 0, 5); + x2("(a|bab)+", "ba", 1, 2); + x2("(a|bab)+", "baaaba", 1, 4); + x2("(?:a|b)(?:a|b)", "ab", 0, 2); + x2("(?:a*|b*)(?:a*|b*)", "aaabbb", 0, 3); + x2("(?:a*|b*)(?:a+|b+)", "aaabbb", 0, 6); + x2("(?:a+|b+){2}", "aaabbb", 0, 6); + x2("h{0,}", "hhhh", 0, 4); + x2("(?:a+|b+){1,2}", "aaabbb", 0, 6); + n("ax{2}*a", "0axxxa1"); + n("a.{0,2}a", "0aXXXa0"); + n("a.{0,2}?a", "0aXXXa0"); + n("a.{0,2}?a", "0aXXXXa0"); + x2("^a{2,}?a$", "aaa", 0, 3); + x2("^[a-z]{2,}?$", "aaa", 0, 3); + x2("(?:a+|\\Ab*)cc", "cc", 0, 2); + n("(?:a+|\\Ab*)cc", "abcc"); + x2("(?:^a+|b+)*c", "aabbbabc", 6, 8); + x2("(?:^a+|b+)*c", "aabbbbc", 0, 7); + x2("a|(?i)c", "C", 0, 1); + x2("(?i)c|a", "C", 0, 1); + x2("(?i)c|a", "A", 0, 1); + x2("(?i:c)|a", "C", 0, 1); + n("(?i:c)|a", "A"); + x2("[abc]?", "abc", 0, 1); + x2("[abc]*", "abc", 0, 3); + x2("[^abc]*", "abc", 0, 0); + n("[^abc]+", "abc"); + x2("a?\?", "aaa", 0, 0); + x2("ba?\?b", "bab", 0, 3); + x2("a*?", "aaa", 0, 0); + x2("ba*?", "baa", 0, 1); + x2("ba*?b", "baab", 0, 4); + x2("a+?", "aaa", 0, 1); + x2("ba+?", "baa", 0, 2); + x2("ba+?b", "baab", 0, 4); + x2("(?:a?)?\?", "a", 0, 0); + x2("(?:a?\?)?", "a", 0, 0); + x2("(?:a?)+?", "aaa", 0, 1); + x2("(?:a+)?\?", "aaa", 0, 0); + x2("(?:a+)?\?b", "aaab", 0, 4); + x2("(?:ab)?{2}", "", 0, 0); + x2("(?:ab)?{2}", "ababa", 0, 4); + x2("(?:ab)*{0}", "ababa", 0, 0); + x2("(?:ab){3,}", "abababab", 0, 8); + n("(?:ab){3,}", "abab"); + x2("(?:ab){2,4}", "ababab", 0, 6); + x2("(?:ab){2,4}", "ababababab", 0, 8); + x2("(?:ab){2,4}?", "ababababab", 0, 4); + x2("(?:ab){,}", "ab{,}", 0, 5); + x2("(?:abc)+?{2}", "abcabcabc", 0, 6); + x2("(?:X*)(?i:xa)", "XXXa", 0, 4); + x2("(d+)([^abc]z)", "dddz", 0, 4); + x2("([^abc]*)([^abc]z)", "dddz", 0, 4); + x2("(\\w+)(\\wz)", "dddz", 0, 4); + x3("(a)", "a", 0, 1, 1); + x3("(ab)", "ab", 0, 2, 1); + x2("((ab))", "ab", 0, 2); + x3("((ab))", "ab", 0, 2, 1); + x3("((ab))", "ab", 0, 2, 2); + x3("((((((((((((((((((((ab))))))))))))))))))))", "ab", 0, 2, 20); + x3("(ab)(cd)", "abcd", 0, 2, 1); + x3("(ab)(cd)", "abcd", 2, 4, 2); + x3("()(a)bc(def)ghijk", "abcdefghijk", 3, 6, 3); + x3("(()(a)bc(def)ghijk)", "abcdefghijk", 3, 6, 4); + x2("(^a)", "a", 0, 1); + x3("(a)|(a)", "ba", 1, 2, 1); + x3("(^a)|(a)", "ba", 1, 2, 2); + x3("(a?)", "aaa", 0, 1, 1); + x3("(a*)", "aaa", 0, 3, 1); + x3("(a*)", "", 0, 0, 1); + x3("(a+)", "aaaaaaa", 0, 7, 1); + x3("(a+|b*)", "bbbaa", 0, 3, 1); + x3("(a+|b?)", "bbbaa", 0, 1, 1); + x3("(abc)?", "abc", 0, 3, 1); + x3("(abc)*", "abc", 0, 3, 1); + x3("(abc)+", "abc", 0, 3, 1); + x3("(xyz|abc)+", "abc", 0, 3, 1); + x3("([xyz][abc]|abc)+", "abc", 0, 3, 1); + x3("((?i:abc))", "AbC", 0, 3, 1); + x2("(abc)(?i:\\1)", "abcABC", 0, 6); + x3("((?m:a.c))", "a\nc", 0, 3, 1); + x3("((?=az)a)", "azb", 0, 1, 1); + x3("abc|(.abd)", "zabd", 0, 4, 1); + x2("(?:abc)|(ABC)", "abc", 0, 3); + x3("(?i:(abc))|(zzz)", "ABC", 0, 3, 1); + x3("a*(.)", "aaaaz", 4, 5, 1); + x3("a*?(.)", "aaaaz", 0, 1, 1); + x3("a*?(c)", "aaaac", 4, 5, 1); + x3("[bcd]a*(.)", "caaaaz", 5, 6, 1); + x3("(\\Abb)cc", "bbcc", 0, 2, 1); + n("(\\Abb)cc", "zbbcc"); + x3("(^bb)cc", "bbcc", 0, 2, 1); + n("(^bb)cc", "zbbcc"); + x3("cc(bb$)", "ccbb", 2, 4, 1); + n("cc(bb$)", "ccbbb"); + n("(\\1)", ""); + n("\\1(a)", "aa"); + n("(a(b)\\1)\\2+", "ababb"); + n("(?:(?:\\1|z)(a))+$", "zaa"); + x2("(?:(?:\\1|z)(a))+$", "zaaa", 0, 4); + x2("(a)(?=\\1)", "aa", 0, 1); + n("(a)$|\\1", "az"); + x2("(a)\\1", "aa", 0, 2); + n("(a)\\1", "ab"); + x2("(a?)\\1", "aa", 0, 2); + x2("(a?\?)\\1", "aa", 0, 0); + x2("(a*)\\1", "aaaaa", 0, 4); + x3("(a*)\\1", "aaaaa", 0, 2, 1); + x2("a(b*)\\1", "abbbb", 0, 5); + x2("a(b*)\\1", "ab", 0, 1); + x2("(a*)(b*)\\1\\2", "aaabbaaabb", 0, 10); + x2("(a*)(b*)\\2", "aaabbbb", 0, 7); + x2("(((((((a*)b))))))c\\7", "aaabcaaa", 0, 8); + x3("(((((((a*)b))))))c\\7", "aaabcaaa", 0, 3, 7); + x2("(a)(b)(c)\\2\\1\\3", "abcbac", 0, 6); + x2("([a-d])\\1", "cc", 0, 2); + x2("(\\w\\d\\s)\\1", "f5 f5 ", 0, 6); + n("(\\w\\d\\s)\\1", "f5 f5"); + x2("(who|[a-c]{3})\\1", "whowho", 0, 6); + x2("...(who|[a-c]{3})\\1", "abcwhowho", 0, 9); + x2("(who|[a-c]{3})\\1", "cbccbc", 0, 6); + x2("(^a)\\1", "aa", 0, 2); + n("(^a)\\1", "baa"); + n("(a$)\\1", "aa"); + n("(ab\\Z)\\1", "ab"); + x2("(a*\\Z)\\1", "a", 1, 1); + x2(".(a*\\Z)\\1", "ba", 1, 2); + x3("(.(abc)\\2)", "zabcabc", 0, 7, 1); + x3("(.(..\\d.)\\2)", "z12341234", 0, 9, 1); + x2("((?i:az))\\1", "AzAz", 0, 4); + n("((?i:az))\\1", "Azaz"); + x2("(?<=a)b", "ab", 1, 2); + n("(?<=a)b", "bb"); + x2("(?<=a|b)b", "bb", 1, 2); + x2("(?<=a|bc)b", "bcb", 2, 3); + x2("(?<=a|bc)b", "ab", 1, 2); + x2("(?<=a|bc||defghij|klmnopq|r)z", "rz", 1, 2); + x2("(a)\\g<1>", "aa", 0, 2); + x2("(?a)", "a", 0, 1); + x2("(?ab)\\g", "abab", 0, 4); + x2("(?.zv.)\\k", "azvbazvb", 0, 8); + x2("(?<=\\g)|-\\zEND (?XyZ)", "XyZ", 3, 3); + x2("(?|a\\g)+", "", 0, 0); + x2("(?|\\(\\g\\))+$", "()(())", 0, 6); + x3("\\g(?.){0}", "X", 0, 1, 1); + x2("\\g(abc|df(?.YZ){2,8}){0}", "XYZ", 0, 3); + x2("\\A(?(a\\g)|)\\z", "aaaa", 0, 4); + x2("(?|\\g\\g)\\z|\\zEND (?a|(b)\\g)", "bbbbabba", 0, 8); + x2("(?\\w+\\sx)a+\\k", " fg xaaaaaaaafg x", 2, 18); + x3("(z)()()(?<_9>a)\\g<_9>", "zaa", 2, 3, 1); + x2("(.)(((?<_>a)))\\k<_>", "zaa", 0, 3); + x2("((?\\d)|(?\\w))(\\k|\\k)", "ff", 0, 2); + x2("(?:(?)|(?efg))\\k", "", 0, 0); + x2("(?:(?abc)|(?efg))\\k", "abcefgefg", 3, 9); + n("(?:(?abc)|(?efg))\\k", "abcefg"); + x2("(?:(?.)|(?..)|(?...)|(?....)|(?.....)|(?......)|(?.......)|(?........)|(?.........)|(?..........)|(?...........)|(?............)|(?.............)|(?..............))\\k$", "a-pyumpyum", 2, 10); + x3("(?:(?.)|(?..)|(?...)|(?....)|(?.....)|(?......)|(?.......)|(?........)|(?.........)|(?..........)|(?...........)|(?............)|(?.............)|(?..............))\\k$", "xxxxabcdefghijklmnabcdefghijklmn", 4, 18, 14); + x3("(?)(?)(?)(?)(?)(?)(?)(?)(?)(?)(?)(?)(?)(?)(?)(?aaa)(?)$", "aaa", 0, 3, 16); + x2("(?a|\\(\\g\\))", "a", 0, 1); + x2("(?a|\\(\\g\\))", "((((((a))))))", 0, 13); + x3("(?a|\\(\\g\\))", "((((((((a))))))))", 0, 17, 1); + x2("\\g|\\zEND(?.*abc$)", "abcxxxabc", 0, 9); + x2("\\g<1>|\\zEND(.a.)", "bac", 0, 3); + x3("\\g<_A>\\g<_A>|\\zEND(.a.)(?<_A>.b.)", "xbxyby", 3, 6, 1); + x2("\\A(?:\\g|\\g|\\zEND (?a|c\\gc)(?b|d\\gd))$", "cdcbcdc", 0, 7); + x2("\\A(?|a\\g)\\z|\\zEND (?\\g)", "aaaa", 0, 4); + x2("(?(a|b\\gc){3,5})", "baaaaca", 1, 5); + x2("(?(a|b\\gc){3,5})", "baaaacaaaaa", 0, 10); + x2("(?\\(([^\\(\\)]++|\\g)*+\\))", "((a))", 0, 5); + x2("()*\\1", "", 0, 0); + x2("(?:()|())*\\1\\2", "", 0, 0); + x3("(?:\\1a|())*", "a", 0, 0, 1); + x2("x((.)*)*x", "0x1x2x3", 1, 6); + x2("x((.)*)*x(?i:\\1)\\Z", "0x1x2x1X2", 1, 9); + x2("(?:()|()|()|()|()|())*\\2\\5", "", 0, 0); + x2("(?:()|()|()|(x)|()|())*\\2b\\5", "b", 0, 1); + x2("\\xED\\xF2", "\xed\xf2", 0, 2); + x2("", "あ", 0, 0); + x2("あ", "あ", 0, 2); + n("い", "あ"); + x2("うう", "うう", 0, 4); + x2("あいう", "あいう", 0, 6); + x2("こここここここここここここここここここここここここここここここここここ", "こここここここここここここここここここここここここここここここここここ", 0, 70); + x2("あ", "いあ", 2, 4); + x2("いう", "あいう", 2, 6); + x2("\\xca\\xb8", "\xca\xb8", 0, 2); + x2(".", "あ", 0, 2); + x2("..", "かき", 0, 4); + x2("\\w", "お", 0, 2); + n("\\W", "あ"); + x2("[\\W]", "う$", 2, 3); + x2("\\S", "そ", 0, 2); + x2("\\S", "漢", 0, 2); + x2("\\b", "気 ", 0, 0); + x2("\\b", " ほ", 1, 1); + x2("\\B", "せそ ", 2, 2); + x2("\\B", "う ", 3, 3); + x2("\\B", " い", 0, 0); + x2("[たち]", "ち", 0, 2); + n("[なに]", "ぬ"); + x2("[う-お]", "え", 0, 2); + n("[^け]", "け"); + x2("[\\w]", "ね", 0, 2); + n("[\\d]", "ふ"); + x2("[\\D]", "は", 0, 2); + n("[\\s]", "く"); + x2("[\\S]", "へ", 0, 2); + x2("[\\w\\d]", "よ", 0, 2); + x2("[\\w\\d]", " よ", 3, 5); + n("\\w鬼車", " 鬼車"); + x2("鬼\\W車", "鬼 車", 0, 5); + x2("あ.い.う", "ああいいう", 0, 10); + x2(".\\wう\\W..ぞ", "えうう うぞぞ", 0, 13); + x2("\\s\\wこここ", " ここここ", 0, 9); + x2("ああ.け", "ああけけ", 0, 8); + n(".い", "いえ"); + x2(".お", "おお", 0, 4); + x2("^あ", "あ", 0, 2); + x2("^む$", "む", 0, 2); + x2("^\\w$", "に", 0, 2); + x2("^\\wかきくけこ$", "zかきくけこ", 0, 11); + x2("^\\w...うえお$", "zあいううえお", 0, 13); + x2("\\w\\w\\s\\Wおおお\\d", "aお おおお4", 0, 12); + x2("\\Aたちつ", "たちつ", 0, 6); + x2("むめも\\Z", "むめも", 0, 6); + x2("かきく\\z", "かきく", 0, 6); + x2("かきく\\Z", "かきく\n", 0, 6); + x2("\\Gぽぴ", "ぽぴ", 0, 4); + n("\\Gえ", "うえお"); + n("とて\\G", "とて"); + n("まみ\\A", "まみ"); + n("ま\\Aみ", "まみ"); + x2("(?=せ)せ", "せ", 0, 2); + n("(?=う).", "い"); + x2("(?!う)か", "か", 0, 2); + n("(?!と)あ", "と"); + x2("(?i:あ)", "あ", 0, 2); + x2("(?i:ぶべ)", "ぶべ", 0, 4); + n("(?i:い)", "う"); + x2("(?m:よ.)", "よ\n", 0, 3); + x2("(?m:.め)", "ま\nめ", 2, 5); + x2("あ?", "", 0, 0); + x2("変?", "化", 0, 0); + x2("変?", "変", 0, 2); + x2("量*", "", 0, 0); + x2("量*", "量", 0, 2); + x2("子*", "子子子", 0, 6); + x2("馬*", "鹿馬馬馬馬", 0, 0); + n("山+", ""); + x2("河+", "河", 0, 2); + x2("時+", "時時時時", 0, 8); + x2("え+", "ええううう", 0, 4); + x2("う+", "おうううう", 2, 10); + x2(".?", "た", 0, 2); + x2(".*", "ぱぴぷぺ", 0, 8); + x2(".+", "ろ", 0, 2); + x2(".+", "いうえか\n", 0, 8); + x2("あ|い", "あ", 0, 2); + x2("あ|い", "い", 0, 2); + x2("あい|いう", "あい", 0, 4); + x2("あい|いう", "いう", 0, 4); + x2("を(?:かき|きく)", "をかき", 0, 6); + x2("を(?:かき|きく)け", "をきくけ", 0, 8); + x2("あい|(?:あう|あを)", "あを", 0, 4); + x2("あ|い|う", "えう", 2, 4); + x2("あ|い|うえ|おかき|く|けこさ|しすせ|そ|たち|つてとなに|ぬね", "しすせ", 0, 6); + n("あ|い|うえ|おかき|く|けこさ|しすせ|そ|たち|つてとなに|ぬね", "すせ"); + x2("あ|^わ", "ぶあ", 2, 4); + x2("あ|^を", "をあ", 0, 2); + x2("鬼|\\G車", "け車鬼", 4, 6); + x2("鬼|\\G車", "車鬼", 0, 2); + x2("鬼|\\A車", "b車鬼", 3, 5); + x2("鬼|\\A車", "車", 0, 2); + x2("鬼|車\\Z", "車鬼", 2, 4); + x2("鬼|車\\Z", "車", 0, 2); + x2("鬼|車\\Z", "車\n", 0, 2); + x2("鬼|車\\z", "車鬼", 2, 4); + x2("鬼|車\\z", "車", 0, 2); + x2("\\w|\\s", "お", 0, 2); + x2("\\w|%", "%お", 0, 1); + x2("\\w|[&$]", "う&", 0, 2); + x2("[い-け]", "う", 0, 2); + x2("[い-け]|[^か-こ]", "あ", 0, 2); + x2("[い-け]|[^か-こ]", "か", 0, 2); + x2("[^あ]", "\n", 0, 1); + x2("(?:あ|[う-き])|いを", "うを", 0, 2); + x2("(?:あ|[う-き])|いを", "いを", 0, 4); + x2("あいう|(?=けけ)..ほ", "けけほ", 0, 6); + x2("あいう|(?!けけ)..ほ", "あいほ", 0, 6); + x2("(?=をあ)..あ|(?=をを)..あ", "ををあ", 0, 6); + x2("(?<=あ|いう)い", "いうい", 4, 6); + n("(?>あ|あいえ)う", "あいえう"); + x2("(?>あいえ|あ)う", "あいえう", 0, 8); + x2("あ?|い", "あ", 0, 2); + x2("あ?|い", "い", 0, 0); + x2("あ?|い", "", 0, 0); + x2("あ*|い", "ああ", 0, 4); + x2("あ*|い*", "いあ", 0, 0); + x2("あ*|い*", "あい", 0, 2); + x2("[aあ]*|い*", "aあいいい", 0, 3); + x2("あ+|い*", "", 0, 0); + x2("あ+|い*", "いいい", 0, 6); + x2("あ+|い*", "あいいい", 0, 2); + x2("あ+|い*", "aあいいい", 0, 0); + n("あ+|い+", ""); + x2("(あ|い)?", "い", 0, 2); + x2("(あ|い)*", "いあ", 0, 4); + x2("(あ|い)+", "いあい", 0, 6); + x2("(あい|うあ)+", "うああいうえ", 0, 8); + x2("(あい|うえ)+", "うああいうえ", 4, 12); + x2("(あい|うあ)+", "ああいうあ", 2, 10); + x2("(あい|うあ)+", "あいをうあ", 0, 4); + x2("(あい|うあ)+", "$$zzzzあいをうあ", 6, 10); + x2("(あ|いあい)+", "あいあいあ", 0, 10); + x2("(あ|いあい)+", "いあ", 2, 4); + x2("(あ|いあい)+", "いあああいあ", 2, 8); + x2("(?:あ|い)(?:あ|い)", "あい", 0, 4); + x2("(?:あ*|い*)(?:あ*|い*)", "あああいいい", 0, 6); + x2("(?:あ*|い*)(?:あ+|い+)", "あああいいい", 0, 12); + x2("(?:あ+|い+){2}", "あああいいい", 0, 12); + x2("(?:あ+|い+){1,2}", "あああいいい", 0, 12); + x2("(?:あ+|\\Aい*)うう", "うう", 0, 4); + n("(?:あ+|\\Aい*)うう", "あいうう"); + x2("(?:^あ+|い+)*う", "ああいいいあいう", 12, 16); + x2("(?:^あ+|い+)*う", "ああいいいいう", 0, 14); + x2("う{0,}", "うううう", 0, 8); + x2("あ|(?i)c", "C", 0, 1); + x2("(?i)c|あ", "C", 0, 1); + x2("(?i:あ)|a", "a", 0, 1); + n("(?i:あ)|a", "A"); + x2("[あいう]?", "あいう", 0, 2); + x2("[あいう]*", "あいう", 0, 6); + x2("[^あいう]*", "あいう", 0, 0); + n("[^あいう]+", "あいう"); + x2("あ?\?", "あああ", 0, 0); + x2("いあ?\?い", "いあい", 0, 6); + x2("あ*?", "あああ", 0, 0); + x2("いあ*?", "いああ", 0, 2); + x2("いあ*?い", "いああい", 0, 8); + x2("あ+?", "あああ", 0, 2); + x2("いあ+?", "いああ", 0, 4); + x2("いあ+?い", "いああい", 0, 8); + x2("(?:天?)?\?", "天", 0, 0); + x2("(?:天?\?)?", "天", 0, 0); + x2("(?:夢?)+?", "夢夢夢", 0, 2); + x2("(?:風+)?\?", "風風風", 0, 0); + x2("(?:雪+)?\?霜", "雪雪雪霜", 0, 8); + x2("(?:あい)?{2}", "", 0, 0); + x2("(?:鬼車)?{2}", "鬼車鬼車鬼", 0, 8); + x2("(?:鬼車)*{0}", "鬼車鬼車鬼", 0, 0); + x2("(?:鬼車){3,}", "鬼車鬼車鬼車鬼車", 0, 16); + n("(?:鬼車){3,}", "鬼車鬼車"); + x2("(?:鬼車){2,4}", "鬼車鬼車鬼車", 0, 12); + x2("(?:鬼車){2,4}", "鬼車鬼車鬼車鬼車鬼車", 0, 16); + x2("(?:鬼車){2,4}?", "鬼車鬼車鬼車鬼車鬼車", 0, 8); + x2("(?:鬼車){,}", "鬼車{,}", 0, 7); + x2("(?:かきく)+?{2}", "かきくかきくかきく", 0, 12); + x3("(火)", "火", 0, 2, 1); + x3("(火水)", "火水", 0, 4, 1); + x2("((時間))", "時間", 0, 4); + x3("((風水))", "風水", 0, 4, 1); + x3("((昨日))", "昨日", 0, 4, 2); + x3("((((((((((((((((((((量子))))))))))))))))))))", "量子", 0, 4, 20); + x3("(あい)(うえ)", "あいうえ", 0, 4, 1); + x3("(あい)(うえ)", "あいうえ", 4, 8, 2); + x3("()(あ)いう(えおか)きくけこ", "あいうえおかきくけこ", 6, 12, 3); + x3("(()(あ)いう(えおか)きくけこ)", "あいうえおかきくけこ", 6, 12, 4); + x3(".*(フォ)ン・マ(ン()シュタ)イン", "フォン・マンシュタイン", 10, 18, 2); + x2("(^あ)", "あ", 0, 2); + x3("(あ)|(あ)", "いあ", 2, 4, 1); + x3("(^あ)|(あ)", "いあ", 2, 4, 2); + x3("(あ?)", "あああ", 0, 2, 1); + x3("(ま*)", "ままま", 0, 6, 1); + x3("(と*)", "", 0, 0, 1); + x3("(る+)", "るるるるるるる", 0, 14, 1); + x3("(ふ+|へ*)", "ふふふへへ", 0, 6, 1); + x3("(あ+|い?)", "いいいああ", 0, 2, 1); + x3("(あいう)?", "あいう", 0, 6, 1); + x3("(あいう)*", "あいう", 0, 6, 1); + x3("(あいう)+", "あいう", 0, 6, 1); + x3("(さしす|あいう)+", "あいう", 0, 6, 1); + x3("([なにぬ][かきく]|かきく)+", "かきく", 0, 6, 1); + x3("((?i:あいう))", "あいう", 0, 6, 1); + x3("((?m:あ.う))", "あ\nう", 0, 5, 1); + x3("((?=あん)あ)", "あんい", 0, 2, 1); + x3("あいう|(.あいえ)", "んあいえ", 0, 8, 1); + x3("あ*(.)", "ああああん", 8, 10, 1); + x3("あ*?(.)", "ああああん", 0, 2, 1); + x3("あ*?(ん)", "ああああん", 8, 10, 1); + x3("[いうえ]あ*(.)", "えああああん", 10, 12, 1); + x3("(\\Aいい)うう", "いいうう", 0, 4, 1); + n("(\\Aいい)うう", "んいいうう"); + x3("(^いい)うう", "いいうう", 0, 4, 1); + n("(^いい)うう", "んいいうう"); + x3("ろろ(るる$)", "ろろるる", 4, 8, 1); + n("ろろ(るる$)", "ろろるるる"); + x2("(無)\\1", "無無", 0, 4); + n("(無)\\1", "無武"); + x2("(空?)\\1", "空空", 0, 4); + x2("(空?\?)\\1", "空空", 0, 0); + x2("(空*)\\1", "空空空空空", 0, 8); + x3("(空*)\\1", "空空空空空", 0, 4, 1); + x2("あ(い*)\\1", "あいいいい", 0, 10); + x2("あ(い*)\\1", "あい", 0, 2); + x2("(あ*)(い*)\\1\\2", "あああいいあああいい", 0, 20); + x2("(あ*)(い*)\\2", "あああいいいい", 0, 14); + x3("(あ*)(い*)\\2", "あああいいいい", 6, 10, 2); + x2("(((((((ぽ*)ぺ))))))ぴ\\7", "ぽぽぽぺぴぽぽぽ", 0, 16); + x3("(((((((ぽ*)ぺ))))))ぴ\\7", "ぽぽぽぺぴぽぽぽ", 0, 6, 7); + x2("(は)(ひ)(ふ)\\2\\1\\3", "はひふひはふ", 0, 12); + x2("([き-け])\\1", "くく", 0, 4); + x2("(\\w\\d\\s)\\1", "あ5 あ5 ", 0, 8); + n("(\\w\\d\\s)\\1", "あ5 あ5"); + x2("(誰?|[あ-う]{3})\\1", "誰?誰?", 0, 8); + x2("...(誰?|[あ-う]{3})\\1", "あaあ誰?誰?", 0, 13); + x2("(誰?|[あ-う]{3})\\1", "ういうういう", 0, 12); + x2("(^こ)\\1", "ここ", 0, 4); + n("(^む)\\1", "めむむ"); + n("(あ$)\\1", "ああ"); + n("(あい\\Z)\\1", "あい"); + x2("(あ*\\Z)\\1", "あ", 2, 2); + x2(".(あ*\\Z)\\1", "いあ", 2, 4); + x3("(.(やいゆ)\\2)", "zやいゆやいゆ", 0, 13, 1); + x3("(.(..\\d.)\\2)", "あ12341234", 0, 10, 1); + x2("((?i:あvず))\\1", "あvずあvず", 0, 10); + x2("(?<愚か>変|\\(\\g<愚か>\\))", "((((((変))))))", 0, 14); + x2("\\A(?:\\g<阿_1>|\\g<云_2>|\\z終了 (?<阿_1>観|自\\g<云_2>自)(?<云_2>在|菩薩\\g<阿_1>菩薩))$", "菩薩自菩薩自在自菩薩自菩薩", 0, 26); + x2("[[ひふ]]", "ふ", 0, 2); + x2("[[いおう]か]", "か", 0, 2); + n("[[^あ]]", "あ"); + n("[^[あ]]", "あ"); + x2("[^[^あ]]", "あ", 0, 2); + x2("[[かきく]&&きく]", "く", 0, 2); + n("[[かきく]&&きく]", "か"); + n("[[かきく]&&きく]", "け"); + x2("[あ-ん&&い-を&&う-ゑ]", "ゑ", 0, 2); + n("[^あ-ん&&い-を&&う-ゑ]", "ゑ"); + x2("[[^あ&&あ]&&あ-ん]", "い", 0, 2); + n("[[^あ&&あ]&&あ-ん]", "あ"); + x2("[[^あ-ん&&いうえお]&&[^う-か]]", "き", 0, 2); + n("[[^あ-ん&&いうえお]&&[^う-か]]", "い"); + x2("[^[^あいう]&&[^うえお]]", "う", 0, 2); + x2("[^[^あいう]&&[^うえお]]", "え", 0, 2); + n("[^[^あいう]&&[^うえお]]", "か"); + x2("[あ-&&-あ]", "-", 0, 1); + x2("[^[^a-zあいう]&&[^bcdefgうえお]q-w]", "え", 0, 2); + x2("[^[^a-zあいう]&&[^bcdefgうえお]g-w]", "f", 0, 1); + x2("[^[^a-zあいう]&&[^bcdefgうえお]g-w]", "g", 0, 1); + n("[^[^a-zあいう]&&[^bcdefgうえお]g-w]", "2"); + x2("aバージョンのダウンロード<\\/b>", "aバージョンのダウンロード", 0, 32); + x2(".バージョンのダウンロード<\\/b>", "aバージョンのダウンロード", 0, 32); + fprintf(stdout, + "\nRESULT SUCC: %d, FAIL: %d, ERROR: %d (by Oniguruma %s)\n", + nsucc, nfail, nerror, onig_version()); + +#ifndef POSIX_TEST + onig_region_free(region, 1); + onig_end(); +#endif + + return ((nfail == 0 && nerror == 0) ? 0 : -1); +} diff --git a/vendor/oniguruma/patch/src/.gitignore b/vendor/oniguruma/patch/src/.gitignore new file mode 100644 index 0000000..7f2077a --- /dev/null +++ b/vendor/oniguruma/patch/src/.gitignore @@ -0,0 +1,87 @@ +Makefile +autom4te.cache/ +ltmain.sh +stamp-h1 +configure +config.status +config.h +config.h.in +onig-config +libtool +aclocal.m4 +Makefile.in +.python-version +*.o +*.obj +*.so +*.lo +*.la +*.pc +*.log +*.trs +*.dll +*.lib +*.exe +*.exp +*.gcno +*.gcda +*.gcov +*~ +.libs/ +.deps/ +/build +/onig-*.tar.gz +m4/*.m4 +/coverage +/coverage.info +/fuzzers +/.vscode + +# src/ +/src/unicode_fold?_key.gperf +/src/unicode_unfold_key.gperf +/src/UNICODE_PROPERTIES +/src/*.txt +/src/mktable + +# test/ +/test/test_utf8 +/test/test_options +/test/testc +/test/testcu +/test/testp +/test/test_regset +/test/test_syntax +/test/test_back +/test/kofu-utf8.txt + +# sample/ +/sample/crnl +/sample/encode +/sample/listcap +/sample/names +/sample/posix +/sample/simple +/sample/sql +/sample/syntax +/sample/user_property +/sample/callout +/sample/echo +/sample/count +/sample/bug_fix +/sample/regset +/sample/scan +/sample/callback_each_match +/sample/log* + +/harnesses/utf16*.dict +/harnesses/fuzzer-* +/harnesses/read-* +/harnesses/libfuzzer-onig +/harnesses/libfuzzer-onig-full +/harnesses/slow-unit-* +/harnesses/timeout-* +/harnesses/crash-* +/harnesses/oom-* + +!config.h diff --git a/vendor/oniguruma/patch/src/config-oniguruma-edbee.h b/vendor/oniguruma/patch/src/config-oniguruma-edbee.h new file mode 100644 index 0000000..bb514b0 --- /dev/null +++ b/vendor/oniguruma/patch/src/config-oniguruma-edbee.h @@ -0,0 +1,27 @@ +#ifndef CONFIG_ONIGURUMA_EDBEE_H +#define CONFIG_ONIGURUMA_EDBEE_H + +#ifdef __clang__ + //#pragma clang diagnostic ignored "-Wunused-variable" + #pragma clang diagnostic ignored "-Wunused-parameter" + #pragma clang diagnostic ignored "-Wmissing-field-initializers" + #pragma clang diagnostic ignored "-Wsign-compare" +#else + #ifdef __GNUC__ + //#pragma GCC diagnostic ignored "-Wunused-variable" + #pragma GCC diagnostic ignored "-Wunused-parameter" + #pragma GCC diagnostic ignored "-Wmissing-field-initializers" + #pragma GCC diagnostic ignored "-Wsign-compare" + #pragma GCC diagnostic ignored "-Wimplicit-fallthrough" + #endif +#endif + +#ifdef _MSC_VER + // Visual studio directives + // C4100: unreferenced formal parameter + #pragma warning( disable : 4100 ) +#endif + +// TODO: Add more visual studio and other compiler directives + +#endif // CONFIG_ONIGURUMA_EDBEE_H diff --git a/vendor/oniguruma/patch/src/config.h b/vendor/oniguruma/patch/src/config.h new file mode 100644 index 0000000..e394985 --- /dev/null +++ b/vendor/oniguruma/patch/src/config.h @@ -0,0 +1,8 @@ +#include "config-oniguruma-edbee.h" + +#ifdef _WIN32 + #include "config.win.h" +#else + #include "config.unix.h" +#endif + diff --git a/vendor/oniguruma/patch/src/config.unix.h b/vendor/oniguruma/patch/src/config.unix.h new file mode 100644 index 0000000..dcb77c7 --- /dev/null +++ b/vendor/oniguruma/patch/src/config.unix.h @@ -0,0 +1,102 @@ +/* Define to 1 if using 'alloca.c'. */ +/* #undef C_ALLOCA */ + +/* Define to 1 if you have 'alloca', as a function or macro. */ +#define HAVE_ALLOCA 1 + +/* Define to 1 if works. */ +#define HAVE_ALLOCA_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_DLFCN_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDIO_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDLIB_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRINGS_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TIMES_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TIME_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_UNISTD_H 1 + +/* Define to the sub-directory where libtool stores uninstalled libraries. */ +#define LT_OBJDIR ".libs/" + +/* Name of package */ +#define PACKAGE "onig" + +/* Define to the address where bug reports for this package should be sent. */ +#define PACKAGE_BUGREPORT "" + +/* Define to the full name of this package. */ +#define PACKAGE_NAME "onig" + +/* Define to the full name and version of this package. */ +#define PACKAGE_STRING "onig 6.9.10" + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "onig" + +/* Define to the home page for this package. */ +#define PACKAGE_URL "" + +/* Define to the version of this package. */ +#define PACKAGE_VERSION "6.9.10" + +/* The size of 'int', as computed by sizeof. */ +#define SIZEOF_INT 4 + +/* The size of 'long', as computed by sizeof. */ +#define SIZEOF_LONG 8 + +/* The size of 'long long', as computed by sizeof. */ +#define SIZEOF_LONG_LONG 8 + +/* The size of 'void*', as computed by sizeof. */ +#define SIZEOF_VOIDP 8 + +/* If using the C implementation of alloca, define if you know the + direction of stack growth for your system; otherwise it will be + automatically deduced at runtime. + STACK_DIRECTION > 0 => grows toward higher addresses + STACK_DIRECTION < 0 => grows toward lower addresses + STACK_DIRECTION = 0 => direction of growth unknown */ +/* #undef STACK_DIRECTION */ + +/* Define to 1 if all of the C89 standard headers exist (not just the ones + required in a freestanding environment). This macro is provided for + backward compatibility; new code need not use it. */ +#define STDC_HEADERS 1 + +/* Define if enable CR+NL as line terminator */ +/* #undef USE_CRNL_AS_LINE_TERMINATOR */ + +/* Version number of package */ +#define VERSION "6.9.10" + +/* Define as 'unsigned int' if doesn't define. */ +/* #undef size_t */ diff --git a/vendor/oniguruma/patch/src/config.win.h b/vendor/oniguruma/patch/src/config.win.h new file mode 100644 index 0000000..d4f73d7 --- /dev/null +++ b/vendor/oniguruma/patch/src/config.win.h @@ -0,0 +1,62 @@ +#if defined(__MINGW32__) || _MSC_VER >= 1600 +#define HAVE_STDINT_H 1 +#endif +#if defined(__MINGW32__) || _MSC_VER >= 1800 +#define HAVE_INTTYPES_H 1 +#endif +#define HAVE_SYS_TYPES_H 1 +#define HAVE_SYS_STAT_H 1 +#define HAVE_MEMORY_H 1 +#define HAVE_OFF_T 1 + +#define SIZEOF_INT 4 +#define SIZEOF_LONG 4 +#define SIZEOF_LONG_LONG 8 +#define SIZEOF___INT64 8 +#define SIZEOF_OFF_T 4 +#ifdef _WIN64 +#define SIZEOF_VOIDP 8 +#define SIZEOF_SIZE_T 8 +#else +#define SIZEOF_VOIDP 4 +#define SIZEOF_SIZE_T 4 +#endif +#define SIZEOF_FLOAT 4 +#define SIZEOF_DOUBLE 8 +#define TOKEN_PASTE(x,y) x##y +#ifndef NORETURN +#if _MSC_VER > 1100 +#define NORETURN(x) __declspec(noreturn) x +#else +#define NORETURN(x) x +#endif +#endif +#define HAVE_DECL_SYS_NERR 1 +#define HAVE_FCNTL_H 1 +#define HAVE_SYS_UTIME_H 1 +#define HAVE_MEMORY_H 1 +#define uid_t int +#define gid_t int +#define GETGROUPS_T int +#define HAVE_ALLOCA 1 +#define HAVE_DUP2 1 +#define HAVE_MKDIR 1 +#define HAVE_FLOCK 1 +#define HAVE_FINITE 1 +#define HAVE_HYPOT 1 +#define HAVE_WAITPID 1 +#define HAVE_CHSIZE 1 +#define HAVE_TIMES 1 +#define HAVE_TELLDIR 1 +#define HAVE_SEEKDIR 1 +#define HAVE_EXECVE 1 +#define HAVE_DAYLIGHT 1 +#define SETPGRP_VOID 1 +#define inline __inline +#define NEED_IO_SEEK_BETWEEN_RW 1 +#define RSHIFT(x,y) ((x)>>(int)y) +#define FILE_COUNT _cnt +#define FILE_READPTR _ptr +#define DEFAULT_KCODE KCODE_NONE +#define DLEXT ".so" +#define DLEXT2 ".dll"