socsvn commit: r269713 - in soc2014/ghostmansd/head: include lib/libc/string lib/libc/string/norm
ghostmansd at FreeBSD.org
ghostmansd at FreeBSD.org
Wed Jun 18 03:07:19 UTC 2014
Author: ghostmansd
Date: Wed Jun 18 03:07:16 2014
New Revision: 269713
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=269713
Log:
NFD quick check algorithm; style(9) fixes.
Added:
soc2014/ghostmansd/head/lib/libc/string/norm/
soc2014/ghostmansd/head/lib/libc/string/norm/hangul.h
soc2014/ghostmansd/head/lib/libc/string/norm/nfd.h
Deleted:
soc2014/ghostmansd/head/lib/libc/string/normalization.h
Modified:
soc2014/ghostmansd/head/include/string.h
soc2014/ghostmansd/head/include/wchar.h
soc2014/ghostmansd/head/lib/libc/string/strnorm.c
soc2014/ghostmansd/head/lib/libc/string/wcsnorm.c
Modified: soc2014/ghostmansd/head/include/string.h
==============================================================================
--- soc2014/ghostmansd/head/include/string.h Wed Jun 18 02:36:21 2014 (r269712)
+++ soc2014/ghostmansd/head/include/string.h Wed Jun 18 03:07:16 2014 (r269713)
@@ -141,25 +141,28 @@
#include <xlocale/_string.h>
#endif
+
/* Unicode Normalization algorithm */
#ifndef _WCHAR_H_
- #define __NORM_NFD 0
- #define __NORM_NFC 1
- #define __NORM_NFKD 2
- #define __NORM_NFKC 3
+#define __NORM_NFD 0
+#define __NORM_NFC 1
+#define __NORM_NFKD 2
+#define __NORM_NFKC 3
#endif
-size_t __strnorm(char*, size_t, char const*, int);
-size_t __strnorm_l(char*, size_t, char const*, int, locale_t);
+
+size_t __strnorm(char*, size_t, const char*, int);
+size_t __strnorm_l(char*, size_t, const char*, int, locale_t);
+
#ifdef _UNICODE_ADDENDA
- #define strnorm __strnorm
- #define wcsnorm __wcsnorm
+#define strnorm __strnorm
+#define wcsnorm __wcsnorm
#endif
-#if !defined(_WCHAR_H_) \
-&& defined(_UNICODE_ADDENDA)
- #define NORM_NFD __NORM_NFD
- #define NORM_NFC __NORM_NFC
- #define NORM_NFKD __NORM_NFKD
- #define NORM_NFKC __NORM_NFKC
+
+#if !defined(_WCHAR_H_) && defined(_UNICODE_ADDENDA)
+#define NORM_NFD __NORM_NFD
+#define NORM_NFC __NORM_NFC
+#define NORM_NFKD __NORM_NFKD
+#define NORM_NFKC __NORM_NFKC
#endif
__END_DECLS
Modified: soc2014/ghostmansd/head/include/wchar.h
==============================================================================
--- soc2014/ghostmansd/head/include/wchar.h Wed Jun 18 02:36:21 2014 (r269712)
+++ soc2014/ghostmansd/head/include/wchar.h Wed Jun 18 03:07:16 2014 (r269713)
@@ -228,23 +228,26 @@
#include <xlocale/_wchar.h>
#endif
+
/* Unicode Normalization Algorithm */
#ifndef _STRING_H_
- #define __NORM_NFD 0
- #define __NORM_NFC 1
- #define __NORM_NFKD 2
- #define __NORM_NFKC 3
+#define __NORM_NFD 0
+#define __NORM_NFC 1
+#define __NORM_NFKD 2
+#define __NORM_NFKC 3
#endif
-size_t __wcsnorm(wchar_t*, size_t, wchar_t const*, int);
+
+size_t __wcsnorm(wchar_t*, size_t, const wchar_t*, int);
+
#ifdef _UNICODE_ADDENDA
- #define wcscoll __wcscoll
+#define wcscoll __wcscoll
#endif
-#if !defined(_STRING_H_) \
-&& defined(_UNICODE_ADDENDA)
- #define NORM_NFD __NORM_NFD
- #define NORM_NFC __NORM_NFC
- #define NORM_NFKD __NORM_NFKD
- #define NORM_NFKC __NORM_NFKC
+
+#if !defined(_STRING_H_) && defined(_UNICODE_ADDENDA)
+#define NORM_NFD __NORM_NFD
+#define NORM_NFC __NORM_NFC
+#define NORM_NFKD __NORM_NFKD
+#define NORM_NFKC __NORM_NFKC
#endif
__END_DECLS
Added: soc2014/ghostmansd/head/lib/libc/string/norm/hangul.h
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ soc2014/ghostmansd/head/lib/libc/string/norm/hangul.h Wed Jun 18 03:07:16 2014 (r269713)
@@ -0,0 +1,619 @@
+/*
+ * Copyright (c) 2014 Dmitry Selyutin <ghostmansd at FreeBSD.org>
+ * at Lomonosov Moscow State University - www.msu.ru
+ * All rights reserved.
+ *
+ * Copyright (c) 2014 The FreeBSD Foundation
+ * All rights reserved.
+ * Portions of this software were developed by David Chisnall
+ * under sponsorship from the FreeBSD Foundation.
+ *
+ * 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 ``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 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 _NORM_H_
+#define _NORM_H_
+
+
+#define HANGUL_MIN 0xAC00
+#define HANGUL_MAX 0xD7A4
+#define HANGUL_BASE HANGUL_MIN
+
+#define HANGUL_LEAD_COUNT 19
+#define HANGUL_VOWEL_COUNT 21
+#define HANGUL_TRAIL_COUNT 28
+
+#define HANGUL_LEAD_MIN 0x1100
+#define HANGUL_VOWEL_MIN 0x1161
+#define HANGUL_TRAIL_MIN 0x11A7
+
+#define HANGUL_LEAD_MAX ((HANGUL_LEAD_MIN + HANGUL_LEAD_COUNT) - 1)
+#define HANGUL_VOWEL_MAX ((HANGUL_VOWEL_MIN + HANGUL_VOWEL_COUNT) - 1)
+#define HANGUL_TRAIL_MAX ((HANGUL_TRAIL_MIN + HANGUL_TRAIL_COUNT) - 1)
+
+#define HANGUL_BASE_COUNT 588
+#define HANGUL_FULL_COUNT 11172
+
+#define HANGUL_LEAD_TYPE 1
+#define HANGUL_VOWEL_TYPE 2
+#define HANGUL_TRAIL_TYPE 3
+#define HANGUL_LEAD_VOWEL_TYPE 4
+#define HANGUL_LEAD_VOWEL_TRAIL_TYPE 5
+
+
+/* The source code was automatically generated from HangulSyllableType.txt.
+ * This function is used to check type of the Hangul syllables. */
+static int hangul_syllable(wchar_t code)
+{
+ if (((0x1100 <= code) && (code <= 0x115F)) ||
+ ((0xA960 <= code) && (code <= 0xA97C)))
+ return HANGUL_LEAD_TYPE;
+
+ if (((0x1160 <= code) && (code <= 0x11A7)) ||
+ ((0xD7B0 <= code) && (code <= 0xD7C6)))
+ return HANGUL_VOWEL_TYPE;
+
+ if (((0x11A8 <= code) && (code <= 0x11FF)) ||
+ ((0xD7CB <= code) && (code <= 0xD7FB)))
+ return HANGUL_TRAIL_TYPE;
+
+ if ((code == 0xAC00) || (code == 0xAC1C) || (code == 0xAC38) ||
+ (code == 0xAC54) || (code == 0xAC70) || (code == 0xAC8C) ||
+ (code == 0xACA8) || (code == 0xACC4) || (code == 0xACE0) ||
+ (code == 0xACFC) || (code == 0xAD18) || (code == 0xAD34) ||
+ (code == 0xAD50) || (code == 0xAD6C) || (code == 0xAD88) ||
+ (code == 0xADA4) || (code == 0xADC0) || (code == 0xADDC) ||
+ (code == 0xADF8) || (code == 0xAE14) || (code == 0xAE30) ||
+ (code == 0xAE4C) || (code == 0xAE68) || (code == 0xAE84) ||
+ (code == 0xAEA0) || (code == 0xAEBC) || (code == 0xAED8) ||
+ (code == 0xAEF4) || (code == 0xAF10) || (code == 0xAF2C) ||
+ (code == 0xAF48) || (code == 0xAF64) || (code == 0xAF80) ||
+ (code == 0xAF9C) || (code == 0xAFB8) || (code == 0xAFD4) ||
+ (code == 0xAFF0) || (code == 0xB00C) || (code == 0xB028) ||
+ (code == 0xB044) || (code == 0xB060) || (code == 0xB07C) ||
+ (code == 0xB098) || (code == 0xB0B4) || (code == 0xB0D0) ||
+ (code == 0xB0EC) || (code == 0xB108) || (code == 0xB124) ||
+ (code == 0xB140) || (code == 0xB15C) || (code == 0xB178) ||
+ (code == 0xB194) || (code == 0xB1B0) || (code == 0xB1CC) ||
+ (code == 0xB1E8) || (code == 0xB204) || (code == 0xB220) ||
+ (code == 0xB23C) || (code == 0xB258) || (code == 0xB274) ||
+ (code == 0xB290) || (code == 0xB2AC) || (code == 0xB2C8) ||
+ (code == 0xB2E4) || (code == 0xB300) || (code == 0xB31C) ||
+ (code == 0xB338) || (code == 0xB354) || (code == 0xB370) ||
+ (code == 0xB38C) || (code == 0xB3A8) || (code == 0xB3C4) ||
+ (code == 0xB3E0) || (code == 0xB3FC) || (code == 0xB418) ||
+ (code == 0xB434) || (code == 0xB450) || (code == 0xB46C) ||
+ (code == 0xB488) || (code == 0xB4A4) || (code == 0xB4C0) ||
+ (code == 0xB4DC) || (code == 0xB4F8) || (code == 0xB514) ||
+ (code == 0xB530) || (code == 0xB54C) || (code == 0xB568) ||
+ (code == 0xB584) || (code == 0xB5A0) || (code == 0xB5BC) ||
+ (code == 0xB5D8) || (code == 0xB5F4) || (code == 0xB610) ||
+ (code == 0xB62C) || (code == 0xB648) || (code == 0xB664) ||
+ (code == 0xB680) || (code == 0xB69C) || (code == 0xB6B8) ||
+ (code == 0xB6D4) || (code == 0xB6F0) || (code == 0xB70C) ||
+ (code == 0xB728) || (code == 0xB744) || (code == 0xB760) ||
+ (code == 0xB77C) || (code == 0xB798) || (code == 0xB7B4) ||
+ (code == 0xB7D0) || (code == 0xB7EC) || (code == 0xB808) ||
+ (code == 0xB824) || (code == 0xB840) || (code == 0xB85C) ||
+ (code == 0xB878) || (code == 0xB894) || (code == 0xB8B0) ||
+ (code == 0xB8CC) || (code == 0xB8E8) || (code == 0xB904) ||
+ (code == 0xB920) || (code == 0xB93C) || (code == 0xB958) ||
+ (code == 0xB974) || (code == 0xB990) || (code == 0xB9AC) ||
+ (code == 0xB9C8) || (code == 0xB9E4) || (code == 0xBA00) ||
+ (code == 0xBA1C) || (code == 0xBA38) || (code == 0xBA54) ||
+ (code == 0xBA70) || (code == 0xBA8C) || (code == 0xBAA8) ||
+ (code == 0xBAC4) || (code == 0xBAE0) || (code == 0xBAFC) ||
+ (code == 0xBB18) || (code == 0xBB34) || (code == 0xBB50) ||
+ (code == 0xBB6C) || (code == 0xBB88) || (code == 0xBBA4) ||
+ (code == 0xBBC0) || (code == 0xBBDC) || (code == 0xBBF8) ||
+ (code == 0xBC14) || (code == 0xBC30) || (code == 0xBC4C) ||
+ (code == 0xBC68) || (code == 0xBC84) || (code == 0xBCA0) ||
+ (code == 0xBCBC) || (code == 0xBCD8) || (code == 0xBCF4) ||
+ (code == 0xBD10) || (code == 0xBD2C) || (code == 0xBD48) ||
+ (code == 0xBD64) || (code == 0xBD80) || (code == 0xBD9C) ||
+ (code == 0xBDB8) || (code == 0xBDD4) || (code == 0xBDF0) ||
+ (code == 0xBE0C) || (code == 0xBE28) || (code == 0xBE44) ||
+ (code == 0xBE60) || (code == 0xBE7C) || (code == 0xBE98) ||
+ (code == 0xBEB4) || (code == 0xBED0) || (code == 0xBEEC) ||
+ (code == 0xBF08) || (code == 0xBF24) || (code == 0xBF40) ||
+ (code == 0xBF5C) || (code == 0xBF78) || (code == 0xBF94) ||
+ (code == 0xBFB0) || (code == 0xBFCC) || (code == 0xBFE8) ||
+ (code == 0xC004) || (code == 0xC020) || (code == 0xC03C) ||
+ (code == 0xC058) || (code == 0xC074) || (code == 0xC090) ||
+ (code == 0xC0AC) || (code == 0xC0C8) || (code == 0xC0E4) ||
+ (code == 0xC100) || (code == 0xC11C) || (code == 0xC138) ||
+ (code == 0xC154) || (code == 0xC170) || (code == 0xC18C) ||
+ (code == 0xC1A8) || (code == 0xC1C4) || (code == 0xC1E0) ||
+ (code == 0xC1FC) || (code == 0xC218) || (code == 0xC234) ||
+ (code == 0xC250) || (code == 0xC26C) || (code == 0xC288) ||
+ (code == 0xC2A4) || (code == 0xC2C0) || (code == 0xC2DC) ||
+ (code == 0xC2F8) || (code == 0xC314) || (code == 0xC330) ||
+ (code == 0xC34C) || (code == 0xC368) || (code == 0xC384) ||
+ (code == 0xC3A0) || (code == 0xC3BC) || (code == 0xC3D8) ||
+ (code == 0xC3F4) || (code == 0xC410) || (code == 0xC42C) ||
+ (code == 0xC448) || (code == 0xC464) || (code == 0xC480) ||
+ (code == 0xC49C) || (code == 0xC4B8) || (code == 0xC4D4) ||
+ (code == 0xC4F0) || (code == 0xC50C) || (code == 0xC528) ||
+ (code == 0xC544) || (code == 0xC560) || (code == 0xC57C) ||
+ (code == 0xC598) || (code == 0xC5B4) || (code == 0xC5D0) ||
+ (code == 0xC5EC) || (code == 0xC608) || (code == 0xC624) ||
+ (code == 0xC640) || (code == 0xC65C) || (code == 0xC678) ||
+ (code == 0xC694) || (code == 0xC6B0) || (code == 0xC6CC) ||
+ (code == 0xC6E8) || (code == 0xC704) || (code == 0xC720) ||
+ (code == 0xC73C) || (code == 0xC758) || (code == 0xC774) ||
+ (code == 0xC790) || (code == 0xC7AC) || (code == 0xC7C8) ||
+ (code == 0xC7E4) || (code == 0xC800) || (code == 0xC81C) ||
+ (code == 0xC838) || (code == 0xC854) || (code == 0xC870) ||
+ (code == 0xC88C) || (code == 0xC8A8) || (code == 0xC8C4) ||
+ (code == 0xC8E0) || (code == 0xC8FC) || (code == 0xC918) ||
+ (code == 0xC934) || (code == 0xC950) || (code == 0xC96C) ||
+ (code == 0xC988) || (code == 0xC9A4) || (code == 0xC9C0) ||
+ (code == 0xC9DC) || (code == 0xC9F8) || (code == 0xCA14) ||
+ (code == 0xCA30) || (code == 0xCA4C) || (code == 0xCA68) ||
+ (code == 0xCA84) || (code == 0xCAA0) || (code == 0xCABC) ||
+ (code == 0xCAD8) || (code == 0xCAF4) || (code == 0xCB10) ||
+ (code == 0xCB2C) || (code == 0xCB48) || (code == 0xCB64) ||
+ (code == 0xCB80) || (code == 0xCB9C) || (code == 0xCBB8) ||
+ (code == 0xCBD4) || (code == 0xCBF0) || (code == 0xCC0C) ||
+ (code == 0xCC28) || (code == 0xCC44) || (code == 0xCC60) ||
+ (code == 0xCC7C) || (code == 0xCC98) || (code == 0xCCB4) ||
+ (code == 0xCCD0) || (code == 0xCCEC) || (code == 0xCD08) ||
+ (code == 0xCD24) || (code == 0xCD40) || (code == 0xCD5C) ||
+ (code == 0xCD78) || (code == 0xCD94) || (code == 0xCDB0) ||
+ (code == 0xCDCC) || (code == 0xCDE8) || (code == 0xCE04) ||
+ (code == 0xCE20) || (code == 0xCE3C) || (code == 0xCE58) ||
+ (code == 0xCE74) || (code == 0xCE90) || (code == 0xCEAC) ||
+ (code == 0xCEC8) || (code == 0xCEE4) || (code == 0xCF00) ||
+ (code == 0xCF1C) || (code == 0xCF38) || (code == 0xCF54) ||
+ (code == 0xCF70) || (code == 0xCF8C) || (code == 0xCFA8) ||
+ (code == 0xCFC4) || (code == 0xCFE0) || (code == 0xCFFC) ||
+ (code == 0xD018) || (code == 0xD034) || (code == 0xD050) ||
+ (code == 0xD06C) || (code == 0xD088) || (code == 0xD0A4) ||
+ (code == 0xD0C0) || (code == 0xD0DC) || (code == 0xD0F8) ||
+ (code == 0xD114) || (code == 0xD130) || (code == 0xD14C) ||
+ (code == 0xD168) || (code == 0xD184) || (code == 0xD1A0) ||
+ (code == 0xD1BC) || (code == 0xD1D8) || (code == 0xD1F4) ||
+ (code == 0xD210) || (code == 0xD22C) || (code == 0xD248) ||
+ (code == 0xD264) || (code == 0xD280) || (code == 0xD29C) ||
+ (code == 0xD2B8) || (code == 0xD2D4) || (code == 0xD2F0) ||
+ (code == 0xD30C) || (code == 0xD328) || (code == 0xD344) ||
+ (code == 0xD360) || (code == 0xD37C) || (code == 0xD398) ||
+ (code == 0xD3B4) || (code == 0xD3D0) || (code == 0xD3EC) ||
+ (code == 0xD408) || (code == 0xD424) || (code == 0xD440) ||
+ (code == 0xD45C) || (code == 0xD478) || (code == 0xD494) ||
+ (code == 0xD4B0) || (code == 0xD4CC) || (code == 0xD4E8) ||
+ (code == 0xD504) || (code == 0xD520) || (code == 0xD53C) ||
+ (code == 0xD558) || (code == 0xD574) || (code == 0xD590) ||
+ (code == 0xD5AC) || (code == 0xD5C8) || (code == 0xD5E4) ||
+ (code == 0xD600) || (code == 0xD61C) || (code == 0xD638) ||
+ (code == 0xD654) || (code == 0xD670) || (code == 0xD68C) ||
+ (code == 0xD6A8) || (code == 0xD6C4) || (code == 0xD6E0) ||
+ (code == 0xD6FC) || (code == 0xD718) || (code == 0xD734) ||
+ (code == 0xD750) || (code == 0xD76C) || (code == 0xD788))
+ return HANGUL_LEAD_VOWEL_TYPE;
+
+ if (((0xAC01 <= code) && (code <= 0xAC1B)) ||
+ ((0xAC1D <= code) && (code <= 0xAC37)) ||
+ ((0xAC39 <= code) && (code <= 0xAC53)) ||
+ ((0xAC55 <= code) && (code <= 0xAC6F)) ||
+ ((0xAC71 <= code) && (code <= 0xAC8B)) ||
+ ((0xAC8D <= code) && (code <= 0xACA7)) ||
+ ((0xACA9 <= code) && (code <= 0xACC3)) ||
+ ((0xACC5 <= code) && (code <= 0xACDF)) ||
+ ((0xACE1 <= code) && (code <= 0xACFB)) ||
+ ((0xACFD <= code) && (code <= 0xAD17)) ||
+ ((0xAD19 <= code) && (code <= 0xAD33)) ||
+ ((0xAD35 <= code) && (code <= 0xAD4F)) ||
+ ((0xAD51 <= code) && (code <= 0xAD6B)) ||
+ ((0xAD6D <= code) && (code <= 0xAD87)) ||
+ ((0xAD89 <= code) && (code <= 0xADA3)) ||
+ ((0xADA5 <= code) && (code <= 0xADBF)) ||
+ ((0xADC1 <= code) && (code <= 0xADDB)) ||
+ ((0xADDD <= code) && (code <= 0xADF7)) ||
+ ((0xADF9 <= code) && (code <= 0xAE13)) ||
+ ((0xAE15 <= code) && (code <= 0xAE2F)) ||
+ ((0xAE31 <= code) && (code <= 0xAE4B)) ||
+ ((0xAE4D <= code) && (code <= 0xAE67)) ||
+ ((0xAE69 <= code) && (code <= 0xAE83)) ||
+ ((0xAE85 <= code) && (code <= 0xAE9F)) ||
+ ((0xAEA1 <= code) && (code <= 0xAEBB)) ||
+ ((0xAEBD <= code) && (code <= 0xAED7)) ||
+ ((0xAED9 <= code) && (code <= 0xAEF3)) ||
+ ((0xAEF5 <= code) && (code <= 0xAF0F)) ||
+ ((0xAF11 <= code) && (code <= 0xAF2B)) ||
+ ((0xAF2D <= code) && (code <= 0xAF47)) ||
+ ((0xAF49 <= code) && (code <= 0xAF63)) ||
+ ((0xAF65 <= code) && (code <= 0xAF7F)) ||
+ ((0xAF81 <= code) && (code <= 0xAF9B)) ||
+ ((0xAF9D <= code) && (code <= 0xAFB7)) ||
+ ((0xAFB9 <= code) && (code <= 0xAFD3)) ||
+ ((0xAFD5 <= code) && (code <= 0xAFEF)) ||
+ ((0xAFF1 <= code) && (code <= 0xB00B)) ||
+ ((0xB00D <= code) && (code <= 0xB027)) ||
+ ((0xB029 <= code) && (code <= 0xB043)) ||
+ ((0xB045 <= code) && (code <= 0xB05F)) ||
+ ((0xB061 <= code) && (code <= 0xB07B)) ||
+ ((0xB07D <= code) && (code <= 0xB097)) ||
+ ((0xB099 <= code) && (code <= 0xB0B3)) ||
+ ((0xB0B5 <= code) && (code <= 0xB0CF)) ||
+ ((0xB0D1 <= code) && (code <= 0xB0EB)) ||
+ ((0xB0ED <= code) && (code <= 0xB107)) ||
+ ((0xB109 <= code) && (code <= 0xB123)) ||
+ ((0xB125 <= code) && (code <= 0xB13F)) ||
+ ((0xB141 <= code) && (code <= 0xB15B)) ||
+ ((0xB15D <= code) && (code <= 0xB177)) ||
+ ((0xB179 <= code) && (code <= 0xB193)) ||
+ ((0xB195 <= code) && (code <= 0xB1AF)) ||
+ ((0xB1B1 <= code) && (code <= 0xB1CB)) ||
+ ((0xB1CD <= code) && (code <= 0xB1E7)) ||
+ ((0xB1E9 <= code) && (code <= 0xB203)) ||
+ ((0xB205 <= code) && (code <= 0xB21F)) ||
+ ((0xB221 <= code) && (code <= 0xB23B)) ||
+ ((0xB23D <= code) && (code <= 0xB257)) ||
+ ((0xB259 <= code) && (code <= 0xB273)) ||
+ ((0xB275 <= code) && (code <= 0xB28F)) ||
+ ((0xB291 <= code) && (code <= 0xB2AB)) ||
+ ((0xB2AD <= code) && (code <= 0xB2C7)) ||
+ ((0xB2C9 <= code) && (code <= 0xB2E3)) ||
+ ((0xB2E5 <= code) && (code <= 0xB2FF)) ||
+ ((0xB301 <= code) && (code <= 0xB31B)) ||
+ ((0xB31D <= code) && (code <= 0xB337)) ||
+ ((0xB339 <= code) && (code <= 0xB353)) ||
+ ((0xB355 <= code) && (code <= 0xB36F)) ||
+ ((0xB371 <= code) && (code <= 0xB38B)) ||
+ ((0xB38D <= code) && (code <= 0xB3A7)) ||
+ ((0xB3A9 <= code) && (code <= 0xB3C3)) ||
+ ((0xB3C5 <= code) && (code <= 0xB3DF)) ||
+ ((0xB3E1 <= code) && (code <= 0xB3FB)) ||
+ ((0xB3FD <= code) && (code <= 0xB417)) ||
+ ((0xB419 <= code) && (code <= 0xB433)) ||
+ ((0xB435 <= code) && (code <= 0xB44F)) ||
+ ((0xB451 <= code) && (code <= 0xB46B)) ||
+ ((0xB46D <= code) && (code <= 0xB487)) ||
+ ((0xB489 <= code) && (code <= 0xB4A3)) ||
+ ((0xB4A5 <= code) && (code <= 0xB4BF)) ||
+ ((0xB4C1 <= code) && (code <= 0xB4DB)) ||
+ ((0xB4DD <= code) && (code <= 0xB4F7)) ||
+ ((0xB4F9 <= code) && (code <= 0xB513)) ||
+ ((0xB515 <= code) && (code <= 0xB52F)) ||
+ ((0xB531 <= code) && (code <= 0xB54B)) ||
+ ((0xB54D <= code) && (code <= 0xB567)) ||
+ ((0xB569 <= code) && (code <= 0xB583)) ||
+ ((0xB585 <= code) && (code <= 0xB59F)) ||
+ ((0xB5A1 <= code) && (code <= 0xB5BB)) ||
+ ((0xB5BD <= code) && (code <= 0xB5D7)) ||
+ ((0xB5D9 <= code) && (code <= 0xB5F3)) ||
+ ((0xB5F5 <= code) && (code <= 0xB60F)) ||
+ ((0xB611 <= code) && (code <= 0xB62B)) ||
+ ((0xB62D <= code) && (code <= 0xB647)) ||
+ ((0xB649 <= code) && (code <= 0xB663)) ||
+ ((0xB665 <= code) && (code <= 0xB67F)) ||
+ ((0xB681 <= code) && (code <= 0xB69B)) ||
+ ((0xB69D <= code) && (code <= 0xB6B7)) ||
+ ((0xB6B9 <= code) && (code <= 0xB6D3)) ||
+ ((0xB6D5 <= code) && (code <= 0xB6EF)) ||
+ ((0xB6F1 <= code) && (code <= 0xB70B)) ||
+ ((0xB70D <= code) && (code <= 0xB727)) ||
+ ((0xB729 <= code) && (code <= 0xB743)) ||
+ ((0xB745 <= code) && (code <= 0xB75F)) ||
+ ((0xB761 <= code) && (code <= 0xB77B)) ||
+ ((0xB77D <= code) && (code <= 0xB797)) ||
+ ((0xB799 <= code) && (code <= 0xB7B3)) ||
+ ((0xB7B5 <= code) && (code <= 0xB7CF)) ||
+ ((0xB7D1 <= code) && (code <= 0xB7EB)) ||
+ ((0xB7ED <= code) && (code <= 0xB807)) ||
+ ((0xB809 <= code) && (code <= 0xB823)) ||
+ ((0xB825 <= code) && (code <= 0xB83F)) ||
+ ((0xB841 <= code) && (code <= 0xB85B)) ||
+ ((0xB85D <= code) && (code <= 0xB877)) ||
+ ((0xB879 <= code) && (code <= 0xB893)) ||
+ ((0xB895 <= code) && (code <= 0xB8AF)) ||
+ ((0xB8B1 <= code) && (code <= 0xB8CB)) ||
+ ((0xB8CD <= code) && (code <= 0xB8E7)) ||
+ ((0xB8E9 <= code) && (code <= 0xB903)) ||
+ ((0xB905 <= code) && (code <= 0xB91F)) ||
+ ((0xB921 <= code) && (code <= 0xB93B)) ||
+ ((0xB93D <= code) && (code <= 0xB957)) ||
+ ((0xB959 <= code) && (code <= 0xB973)) ||
+ ((0xB975 <= code) && (code <= 0xB98F)) ||
+ ((0xB991 <= code) && (code <= 0xB9AB)) ||
+ ((0xB9AD <= code) && (code <= 0xB9C7)) ||
+ ((0xB9C9 <= code) && (code <= 0xB9E3)) ||
+ ((0xB9E5 <= code) && (code <= 0xB9FF)) ||
+ ((0xBA01 <= code) && (code <= 0xBA1B)) ||
+ ((0xBA1D <= code) && (code <= 0xBA37)) ||
+ ((0xBA39 <= code) && (code <= 0xBA53)) ||
+ ((0xBA55 <= code) && (code <= 0xBA6F)) ||
+ ((0xBA71 <= code) && (code <= 0xBA8B)) ||
+ ((0xBA8D <= code) && (code <= 0xBAA7)) ||
+ ((0xBAA9 <= code) && (code <= 0xBAC3)) ||
+ ((0xBAC5 <= code) && (code <= 0xBADF)) ||
+ ((0xBAE1 <= code) && (code <= 0xBAFB)) ||
+ ((0xBAFD <= code) && (code <= 0xBB17)) ||
+ ((0xBB19 <= code) && (code <= 0xBB33)) ||
+ ((0xBB35 <= code) && (code <= 0xBB4F)) ||
+ ((0xBB51 <= code) && (code <= 0xBB6B)) ||
+ ((0xBB6D <= code) && (code <= 0xBB87)) ||
+ ((0xBB89 <= code) && (code <= 0xBBA3)) ||
+ ((0xBBA5 <= code) && (code <= 0xBBBF)) ||
+ ((0xBBC1 <= code) && (code <= 0xBBDB)) ||
+ ((0xBBDD <= code) && (code <= 0xBBF7)) ||
+ ((0xBBF9 <= code) && (code <= 0xBC13)) ||
+ ((0xBC15 <= code) && (code <= 0xBC2F)) ||
+ ((0xBC31 <= code) && (code <= 0xBC4B)) ||
+ ((0xBC4D <= code) && (code <= 0xBC67)) ||
+ ((0xBC69 <= code) && (code <= 0xBC83)) ||
+ ((0xBC85 <= code) && (code <= 0xBC9F)) ||
+ ((0xBCA1 <= code) && (code <= 0xBCBB)) ||
+ ((0xBCBD <= code) && (code <= 0xBCD7)) ||
+ ((0xBCD9 <= code) && (code <= 0xBCF3)) ||
+ ((0xBCF5 <= code) && (code <= 0xBD0F)) ||
+ ((0xBD11 <= code) && (code <= 0xBD2B)) ||
+ ((0xBD2D <= code) && (code <= 0xBD47)) ||
+ ((0xBD49 <= code) && (code <= 0xBD63)) ||
+ ((0xBD65 <= code) && (code <= 0xBD7F)) ||
+ ((0xBD81 <= code) && (code <= 0xBD9B)) ||
+ ((0xBD9D <= code) && (code <= 0xBDB7)) ||
+ ((0xBDB9 <= code) && (code <= 0xBDD3)) ||
+ ((0xBDD5 <= code) && (code <= 0xBDEF)) ||
+ ((0xBDF1 <= code) && (code <= 0xBE0B)) ||
+ ((0xBE0D <= code) && (code <= 0xBE27)) ||
+ ((0xBE29 <= code) && (code <= 0xBE43)) ||
+ ((0xBE45 <= code) && (code <= 0xBE5F)) ||
+ ((0xBE61 <= code) && (code <= 0xBE7B)) ||
+ ((0xBE7D <= code) && (code <= 0xBE97)) ||
+ ((0xBE99 <= code) && (code <= 0xBEB3)) ||
+ ((0xBEB5 <= code) && (code <= 0xBECF)) ||
+ ((0xBED1 <= code) && (code <= 0xBEEB)) ||
+ ((0xBEED <= code) && (code <= 0xBF07)) ||
+ ((0xBF09 <= code) && (code <= 0xBF23)) ||
+ ((0xBF25 <= code) && (code <= 0xBF3F)) ||
+ ((0xBF41 <= code) && (code <= 0xBF5B)) ||
+ ((0xBF5D <= code) && (code <= 0xBF77)) ||
+ ((0xBF79 <= code) && (code <= 0xBF93)) ||
+ ((0xBF95 <= code) && (code <= 0xBFAF)) ||
+ ((0xBFB1 <= code) && (code <= 0xBFCB)) ||
+ ((0xBFCD <= code) && (code <= 0xBFE7)) ||
+ ((0xBFE9 <= code) && (code <= 0xC003)) ||
+ ((0xC005 <= code) && (code <= 0xC01F)) ||
+ ((0xC021 <= code) && (code <= 0xC03B)) ||
+ ((0xC03D <= code) && (code <= 0xC057)) ||
+ ((0xC059 <= code) && (code <= 0xC073)) ||
+ ((0xC075 <= code) && (code <= 0xC08F)) ||
+ ((0xC091 <= code) && (code <= 0xC0AB)) ||
+ ((0xC0AD <= code) && (code <= 0xC0C7)) ||
+ ((0xC0C9 <= code) && (code <= 0xC0E3)) ||
+ ((0xC0E5 <= code) && (code <= 0xC0FF)) ||
+ ((0xC101 <= code) && (code <= 0xC11B)) ||
+ ((0xC11D <= code) && (code <= 0xC137)) ||
+ ((0xC139 <= code) && (code <= 0xC153)) ||
+ ((0xC155 <= code) && (code <= 0xC16F)) ||
+ ((0xC171 <= code) && (code <= 0xC18B)) ||
+ ((0xC18D <= code) && (code <= 0xC1A7)) ||
+ ((0xC1A9 <= code) && (code <= 0xC1C3)) ||
+ ((0xC1C5 <= code) && (code <= 0xC1DF)) ||
+ ((0xC1E1 <= code) && (code <= 0xC1FB)) ||
+ ((0xC1FD <= code) && (code <= 0xC217)) ||
+ ((0xC219 <= code) && (code <= 0xC233)) ||
+ ((0xC235 <= code) && (code <= 0xC24F)) ||
+ ((0xC251 <= code) && (code <= 0xC26B)) ||
+ ((0xC26D <= code) && (code <= 0xC287)) ||
+ ((0xC289 <= code) && (code <= 0xC2A3)) ||
+ ((0xC2A5 <= code) && (code <= 0xC2BF)) ||
+ ((0xC2C1 <= code) && (code <= 0xC2DB)) ||
+ ((0xC2DD <= code) && (code <= 0xC2F7)) ||
+ ((0xC2F9 <= code) && (code <= 0xC313)) ||
+ ((0xC315 <= code) && (code <= 0xC32F)) ||
+ ((0xC331 <= code) && (code <= 0xC34B)) ||
+ ((0xC34D <= code) && (code <= 0xC367)) ||
+ ((0xC369 <= code) && (code <= 0xC383)) ||
+ ((0xC385 <= code) && (code <= 0xC39F)) ||
+ ((0xC3A1 <= code) && (code <= 0xC3BB)) ||
+ ((0xC3BD <= code) && (code <= 0xC3D7)) ||
+ ((0xC3D9 <= code) && (code <= 0xC3F3)) ||
+ ((0xC3F5 <= code) && (code <= 0xC40F)) ||
+ ((0xC411 <= code) && (code <= 0xC42B)) ||
+ ((0xC42D <= code) && (code <= 0xC447)) ||
+ ((0xC449 <= code) && (code <= 0xC463)) ||
+ ((0xC465 <= code) && (code <= 0xC47F)) ||
+ ((0xC481 <= code) && (code <= 0xC49B)) ||
+ ((0xC49D <= code) && (code <= 0xC4B7)) ||
+ ((0xC4B9 <= code) && (code <= 0xC4D3)) ||
+ ((0xC4D5 <= code) && (code <= 0xC4EF)) ||
+ ((0xC4F1 <= code) && (code <= 0xC50B)) ||
+ ((0xC50D <= code) && (code <= 0xC527)) ||
+ ((0xC529 <= code) && (code <= 0xC543)) ||
+ ((0xC545 <= code) && (code <= 0xC55F)) ||
+ ((0xC561 <= code) && (code <= 0xC57B)) ||
+ ((0xC57D <= code) && (code <= 0xC597)) ||
+ ((0xC599 <= code) && (code <= 0xC5B3)) ||
+ ((0xC5B5 <= code) && (code <= 0xC5CF)) ||
+ ((0xC5D1 <= code) && (code <= 0xC5EB)) ||
+ ((0xC5ED <= code) && (code <= 0xC607)) ||
+ ((0xC609 <= code) && (code <= 0xC623)) ||
+ ((0xC625 <= code) && (code <= 0xC63F)) ||
+ ((0xC641 <= code) && (code <= 0xC65B)) ||
+ ((0xC65D <= code) && (code <= 0xC677)) ||
+ ((0xC679 <= code) && (code <= 0xC693)) ||
+ ((0xC695 <= code) && (code <= 0xC6AF)) ||
+ ((0xC6B1 <= code) && (code <= 0xC6CB)) ||
+ ((0xC6CD <= code) && (code <= 0xC6E7)) ||
+ ((0xC6E9 <= code) && (code <= 0xC703)) ||
+ ((0xC705 <= code) && (code <= 0xC71F)) ||
+ ((0xC721 <= code) && (code <= 0xC73B)) ||
+ ((0xC73D <= code) && (code <= 0xC757)) ||
+ ((0xC759 <= code) && (code <= 0xC773)) ||
+ ((0xC775 <= code) && (code <= 0xC78F)) ||
+ ((0xC791 <= code) && (code <= 0xC7AB)) ||
+ ((0xC7AD <= code) && (code <= 0xC7C7)) ||
+ ((0xC7C9 <= code) && (code <= 0xC7E3)) ||
+ ((0xC7E5 <= code) && (code <= 0xC7FF)) ||
+ ((0xC801 <= code) && (code <= 0xC81B)) ||
+ ((0xC81D <= code) && (code <= 0xC837)) ||
+ ((0xC839 <= code) && (code <= 0xC853)) ||
+ ((0xC855 <= code) && (code <= 0xC86F)) ||
+ ((0xC871 <= code) && (code <= 0xC88B)) ||
+ ((0xC88D <= code) && (code <= 0xC8A7)) ||
+ ((0xC8A9 <= code) && (code <= 0xC8C3)) ||
+ ((0xC8C5 <= code) && (code <= 0xC8DF)) ||
+ ((0xC8E1 <= code) && (code <= 0xC8FB)) ||
+ ((0xC8FD <= code) && (code <= 0xC917)) ||
+ ((0xC919 <= code) && (code <= 0xC933)) ||
+ ((0xC935 <= code) && (code <= 0xC94F)) ||
+ ((0xC951 <= code) && (code <= 0xC96B)) ||
+ ((0xC96D <= code) && (code <= 0xC987)) ||
+ ((0xC989 <= code) && (code <= 0xC9A3)) ||
+ ((0xC9A5 <= code) && (code <= 0xC9BF)) ||
+ ((0xC9C1 <= code) && (code <= 0xC9DB)) ||
+ ((0xC9DD <= code) && (code <= 0xC9F7)) ||
+ ((0xC9F9 <= code) && (code <= 0xCA13)) ||
+ ((0xCA15 <= code) && (code <= 0xCA2F)) ||
+ ((0xCA31 <= code) && (code <= 0xCA4B)) ||
+ ((0xCA4D <= code) && (code <= 0xCA67)) ||
+ ((0xCA69 <= code) && (code <= 0xCA83)) ||
+ ((0xCA85 <= code) && (code <= 0xCA9F)) ||
+ ((0xCAA1 <= code) && (code <= 0xCABB)) ||
+ ((0xCABD <= code) && (code <= 0xCAD7)) ||
+ ((0xCAD9 <= code) && (code <= 0xCAF3)) ||
+ ((0xCAF5 <= code) && (code <= 0xCB0F)) ||
+ ((0xCB11 <= code) && (code <= 0xCB2B)) ||
+ ((0xCB2D <= code) && (code <= 0xCB47)) ||
+ ((0xCB49 <= code) && (code <= 0xCB63)) ||
+ ((0xCB65 <= code) && (code <= 0xCB7F)) ||
+ ((0xCB81 <= code) && (code <= 0xCB9B)) ||
+ ((0xCB9D <= code) && (code <= 0xCBB7)) ||
+ ((0xCBB9 <= code) && (code <= 0xCBD3)) ||
+ ((0xCBD5 <= code) && (code <= 0xCBEF)) ||
+ ((0xCBF1 <= code) && (code <= 0xCC0B)) ||
+ ((0xCC0D <= code) && (code <= 0xCC27)) ||
+ ((0xCC29 <= code) && (code <= 0xCC43)) ||
+ ((0xCC45 <= code) && (code <= 0xCC5F)) ||
+ ((0xCC61 <= code) && (code <= 0xCC7B)) ||
+ ((0xCC7D <= code) && (code <= 0xCC97)) ||
+ ((0xCC99 <= code) && (code <= 0xCCB3)) ||
+ ((0xCCB5 <= code) && (code <= 0xCCCF)) ||
+ ((0xCCD1 <= code) && (code <= 0xCCEB)) ||
+ ((0xCCED <= code) && (code <= 0xCD07)) ||
+ ((0xCD09 <= code) && (code <= 0xCD23)) ||
+ ((0xCD25 <= code) && (code <= 0xCD3F)) ||
+ ((0xCD41 <= code) && (code <= 0xCD5B)) ||
+ ((0xCD5D <= code) && (code <= 0xCD77)) ||
+ ((0xCD79 <= code) && (code <= 0xCD93)) ||
+ ((0xCD95 <= code) && (code <= 0xCDAF)) ||
+ ((0xCDB1 <= code) && (code <= 0xCDCB)) ||
+ ((0xCDCD <= code) && (code <= 0xCDE7)) ||
+ ((0xCDE9 <= code) && (code <= 0xCE03)) ||
+ ((0xCE05 <= code) && (code <= 0xCE1F)) ||
+ ((0xCE21 <= code) && (code <= 0xCE3B)) ||
+ ((0xCE3D <= code) && (code <= 0xCE57)) ||
+ ((0xCE59 <= code) && (code <= 0xCE73)) ||
+ ((0xCE75 <= code) && (code <= 0xCE8F)) ||
+ ((0xCE91 <= code) && (code <= 0xCEAB)) ||
+ ((0xCEAD <= code) && (code <= 0xCEC7)) ||
+ ((0xCEC9 <= code) && (code <= 0xCEE3)) ||
+ ((0xCEE5 <= code) && (code <= 0xCEFF)) ||
+ ((0xCF01 <= code) && (code <= 0xCF1B)) ||
+ ((0xCF1D <= code) && (code <= 0xCF37)) ||
+ ((0xCF39 <= code) && (code <= 0xCF53)) ||
+ ((0xCF55 <= code) && (code <= 0xCF6F)) ||
+ ((0xCF71 <= code) && (code <= 0xCF8B)) ||
+ ((0xCF8D <= code) && (code <= 0xCFA7)) ||
+ ((0xCFA9 <= code) && (code <= 0xCFC3)) ||
+ ((0xCFC5 <= code) && (code <= 0xCFDF)) ||
+ ((0xCFE1 <= code) && (code <= 0xCFFB)) ||
+ ((0xCFFD <= code) && (code <= 0xD017)) ||
+ ((0xD019 <= code) && (code <= 0xD033)) ||
+ ((0xD035 <= code) && (code <= 0xD04F)) ||
+ ((0xD051 <= code) && (code <= 0xD06B)) ||
+ ((0xD06D <= code) && (code <= 0xD087)) ||
+ ((0xD089 <= code) && (code <= 0xD0A3)) ||
+ ((0xD0A5 <= code) && (code <= 0xD0BF)) ||
+ ((0xD0C1 <= code) && (code <= 0xD0DB)) ||
+ ((0xD0DD <= code) && (code <= 0xD0F7)) ||
+ ((0xD0F9 <= code) && (code <= 0xD113)) ||
+ ((0xD115 <= code) && (code <= 0xD12F)) ||
+ ((0xD131 <= code) && (code <= 0xD14B)) ||
+ ((0xD14D <= code) && (code <= 0xD167)) ||
+ ((0xD169 <= code) && (code <= 0xD183)) ||
+ ((0xD185 <= code) && (code <= 0xD19F)) ||
+ ((0xD1A1 <= code) && (code <= 0xD1BB)) ||
+ ((0xD1BD <= code) && (code <= 0xD1D7)) ||
+ ((0xD1D9 <= code) && (code <= 0xD1F3)) ||
+ ((0xD1F5 <= code) && (code <= 0xD20F)) ||
+ ((0xD211 <= code) && (code <= 0xD22B)) ||
+ ((0xD22D <= code) && (code <= 0xD247)) ||
+ ((0xD249 <= code) && (code <= 0xD263)) ||
+ ((0xD265 <= code) && (code <= 0xD27F)) ||
+ ((0xD281 <= code) && (code <= 0xD29B)) ||
+ ((0xD29D <= code) && (code <= 0xD2B7)) ||
+ ((0xD2B9 <= code) && (code <= 0xD2D3)) ||
+ ((0xD2D5 <= code) && (code <= 0xD2EF)) ||
+ ((0xD2F1 <= code) && (code <= 0xD30B)) ||
+ ((0xD30D <= code) && (code <= 0xD327)) ||
+ ((0xD329 <= code) && (code <= 0xD343)) ||
+ ((0xD345 <= code) && (code <= 0xD35F)) ||
+ ((0xD361 <= code) && (code <= 0xD37B)) ||
+ ((0xD37D <= code) && (code <= 0xD397)) ||
+ ((0xD399 <= code) && (code <= 0xD3B3)) ||
+ ((0xD3B5 <= code) && (code <= 0xD3CF)) ||
+ ((0xD3D1 <= code) && (code <= 0xD3EB)) ||
+ ((0xD3ED <= code) && (code <= 0xD407)) ||
+ ((0xD409 <= code) && (code <= 0xD423)) ||
+ ((0xD425 <= code) && (code <= 0xD43F)) ||
+ ((0xD441 <= code) && (code <= 0xD45B)) ||
+ ((0xD45D <= code) && (code <= 0xD477)) ||
+ ((0xD479 <= code) && (code <= 0xD493)) ||
+ ((0xD495 <= code) && (code <= 0xD4AF)) ||
+ ((0xD4B1 <= code) && (code <= 0xD4CB)) ||
+ ((0xD4CD <= code) && (code <= 0xD4E7)) ||
+ ((0xD4E9 <= code) && (code <= 0xD503)) ||
+ ((0xD505 <= code) && (code <= 0xD51F)) ||
+ ((0xD521 <= code) && (code <= 0xD53B)) ||
+ ((0xD53D <= code) && (code <= 0xD557)) ||
+ ((0xD559 <= code) && (code <= 0xD573)) ||
+ ((0xD575 <= code) && (code <= 0xD58F)) ||
+ ((0xD591 <= code) && (code <= 0xD5AB)) ||
+ ((0xD5AD <= code) && (code <= 0xD5C7)) ||
+ ((0xD5C9 <= code) && (code <= 0xD5E3)) ||
+ ((0xD5E5 <= code) && (code <= 0xD5FF)) ||
+ ((0xD601 <= code) && (code <= 0xD61B)) ||
+ ((0xD61D <= code) && (code <= 0xD637)) ||
+ ((0xD639 <= code) && (code <= 0xD653)) ||
+ ((0xD655 <= code) && (code <= 0xD66F)) ||
+ ((0xD671 <= code) && (code <= 0xD68B)) ||
+ ((0xD68D <= code) && (code <= 0xD6A7)) ||
+ ((0xD6A9 <= code) && (code <= 0xD6C3)) ||
+ ((0xD6C5 <= code) && (code <= 0xD6DF)) ||
+ ((0xD6E1 <= code) && (code <= 0xD6FB)) ||
+ ((0xD6FD <= code) && (code <= 0xD717)) ||
+ ((0xD719 <= code) && (code <= 0xD733)) ||
+ ((0xD735 <= code) && (code <= 0xD74F)) ||
+ ((0xD751 <= code) && (code <= 0xD76B)) ||
+ ((0xD76D <= code) && (code <= 0xD787)) ||
+ ((0xD789 <= code) && (code <= 0xD7A3)))
+ return HANGUL_LEAD_VOWEL_TRAIL_TYPE;
+
+ return 0;
+}
+
+
+#endif /* _NORM_H_ */
Added: soc2014/ghostmansd/head/lib/libc/string/norm/nfd.h
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ soc2014/ghostmansd/head/lib/libc/string/norm/nfd.h Wed Jun 18 03:07:16 2014 (r269713)
@@ -0,0 +1,100 @@
+/*-
+ * Copyright (c) 2014 Dmitry Selyutin <ghostmansd at FreeBSD.org>
+ *
+ * Copyright (c) 2014 The FreeBSD Foundation
+ * All rights reserved.
+ * Portions of this software were developed by David Chisnall
+ * under sponsorship from the FreeBSD Foundation.
+ *
+ * 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 curr 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 ``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 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 NFD_QCHECK_MIN 000000C0
+#define NFD_QCHECK_MAX 0002FA1E
+
+static const wchar_t nfd_qc_single[] = {
+ 0x00000374, 0x0000037E, 0x00000385, 0x00000386, 0x00000387, 0x0000038C,
+ 0x00000403, 0x00000407, 0x00000419, 0x00000439, 0x00000453, 0x00000457,
+ 0x000006C0, 0x000006C2, 0x000006D3, 0x00000929, 0x00000931, 0x00000934,
+ 0x000009DF, 0x00000A33, 0x00000A36, 0x00000A5E, 0x00000B48, 0x00000B94,
+ 0x00000C48, 0x00000CC0, 0x00000DDA, 0x00000F43, 0x00000F4D, 0x00000F52,
+ 0x00000F57, 0x00000F5C, 0x00000F69, 0x00000F73, 0x00000F78, 0x00000F81,
+ 0x00000F93, 0x00000F9D, 0x00000FA2, 0x00000FA7, 0x00000FAC, 0x00000FB9,
+ 0x00001026, 0x00001B06, 0x00001B08, 0x00001B0A, 0x00001B0C, 0x00001B0E,
+ 0x00001B12, 0x00001B3B, 0x00001B3D, 0x00001B43, 0x00001E9B, 0x00001F59,
+ 0x00001F5B, 0x00001F5D, 0x00001FBE, 0x00001FC1, 0x00001FFD, 0x00002126,
+ 0x000021AE, 0x000021CD, 0x00002204, 0x00002209, 0x0000220C, 0x00002224,
+ 0x00002226, 0x00002241, 0x00002244, 0x00002247, 0x00002249, 0x00002260,
+ 0x00002262, 0x00002329, 0x0000232A, 0x00002ADC, 0x0000304C, 0x0000304E,
+ 0x00003050, 0x00003052, 0x00003054, 0x00003056, 0x00003058, 0x0000305A,
+ 0x0000305C, 0x0000305E, 0x00003060, 0x00003062, 0x00003065, 0x00003067,
+ 0x00003069, 0x00003094, 0x0000309E, 0x000030AC, 0x000030AE, 0x000030B0,
+ 0x000030B2, 0x000030B4, 0x000030B6, 0x000030B8, 0x000030BA, 0x000030BC,
+ 0x000030BE, 0x000030C0, 0x000030C2, 0x000030C5, 0x000030C7, 0x000030C9,
+ 0x000030F4, 0x000030FE, 0x0000FA10, 0x0000FA12, 0x0000FA20, 0x0000FA22,
+ 0x0000FB1D, 0x0000FB1F, 0x0000FB3E, 0x0001109A, 0x0001109C, 0x000110AB,
+ 0x000114BE, 0x0000FFFF
+}; /* static const wchar_t nfd_qc_single */
+
+static const wchar_t nfd_qc_ranges[] = {
+ 0x000000C0, 0x000000C5, 0x000000C7, 0x000000CF, 0x000000D1, 0x000000D6,
+ 0x000000D9, 0x000000DD, 0x000000E0, 0x000000E5, 0x000000E7, 0x000000EF,
+ 0x000000F1, 0x000000F6, 0x000000F9, 0x000000FD, 0x000000FF, 0x0000010F,
+ 0x00000112, 0x00000125, 0x00000128, 0x00000130, 0x00000134, 0x00000137,
+ 0x00000139, 0x0000013E, 0x00000143, 0x00000148, 0x0000014C, 0x00000151,
+ 0x00000154, 0x00000165, 0x00000168, 0x0000017E, 0x000001A0, 0x000001A1,
+ 0x000001AF, 0x000001B0, 0x000001CD, 0x000001DC, 0x000001DE, 0x000001E3,
+ 0x000001E6, 0x000001F0, 0x000001F4, 0x000001F5, 0x000001F8, 0x0000021B,
+ 0x0000021E, 0x0000021F, 0x00000226, 0x00000233, 0x00000340, 0x00000341,
+ 0x00000343, 0x00000344, 0x00000388, 0x0000038A, 0x0000038E, 0x00000390,
+ 0x000003AA, 0x000003B0, 0x000003CA, 0x000003CE, 0x000003D3, 0x000003D4,
+ 0x00000400, 0x00000401, 0x0000040C, 0x0000040E, 0x00000450, 0x00000451,
+ 0x0000045C, 0x0000045E, 0x00000476, 0x00000477, 0x000004C1, 0x000004C2,
+ 0x000004D0, 0x000004D3, 0x000004D6, 0x000004D7, 0x000004DA, 0x000004DF,
+ 0x000004E2, 0x000004E7, 0x000004EA, 0x000004F5, 0x000004F8, 0x000004F9,
+ 0x00000622, 0x00000626, 0x00000958, 0x0000095F, 0x000009CB, 0x000009CC,
+ 0x000009DC, 0x000009DD, 0x00000A59, 0x00000A5B, 0x00000B4B, 0x00000B4C,
+ 0x00000B5C, 0x00000B5D, 0x00000BCA, 0x00000BCC, 0x00000CC7, 0x00000CC8,
+ 0x00000CCA, 0x00000CCB, 0x00000D4A, 0x00000D4C, 0x00000DDC, 0x00000DDE,
+ 0x00000F75, 0x00000F76, 0x00001B40, 0x00001B41, 0x00001E00, 0x00001E99,
+ 0x00001EA0, 0x00001EF9, 0x00001F00, 0x00001F15, 0x00001F18, 0x00001F1D,
+ 0x00001F20, 0x00001F45, 0x00001F48, 0x00001F4D, 0x00001F50, 0x00001F57,
+ 0x00001F5F, 0x00001F7D, 0x00001F80, 0x00001FB4, 0x00001FB6, 0x00001FBC,
+ 0x00001FC2, 0x00001FC4, 0x00001FC6, 0x00001FCC, 0x00001FCD, 0x00001FCF,
+ 0x00001FD0, 0x00001FD3, 0x00001FD6, 0x00001FDB, 0x00001FDD, 0x00001FDF,
+ 0x00001FE0, 0x00001FEC, 0x00001FED, 0x00001FEF, 0x00001FF2, 0x00001FF4,
+ 0x00001FF6, 0x00001FFC, 0x00002000, 0x00002001, 0x0000212A, 0x0000212B,
+ 0x0000219A, 0x0000219B, 0x000021CE, 0x000021CF, 0x0000226D, 0x00002271,
+ 0x00002274, 0x00002275, 0x00002278, 0x00002279, 0x00002280, 0x00002281,
+ 0x00002284, 0x00002285, 0x00002288, 0x00002289, 0x000022AC, 0x000022AF,
+ 0x000022E0, 0x000022E3, 0x000022EA, 0x000022ED, 0x00003070, 0x00003071,
+ 0x00003073, 0x00003074, 0x00003076, 0x00003077, 0x00003079, 0x0000307A,
+ 0x0000307C, 0x0000307D, 0x000030D0, 0x000030D1, 0x000030D3, 0x000030D4,
+ 0x000030D6, 0x000030D7, 0x000030D9, 0x000030DA, 0x000030DC, 0x000030DD,
+ 0x000030F7, 0x000030FA, 0x0000AC00, 0x0000D7A3, 0x0000F900, 0x0000FA0D,
+ 0x0000FA15, 0x0000FA1E, 0x0000FA25, 0x0000FA26, 0x0000FA2A, 0x0000FA6D,
+ 0x0000FA70, 0x0000FAD9, 0x0000FB2A, 0x0000FB36, 0x0000FB38, 0x0000FB3C,
+ 0x0000FB40, 0x0000FB41, 0x0000FB43, 0x0000FB44, 0x0000FB46, 0x0000FB4E,
+ 0x0001112E, 0x0001112F, 0x0001134B, 0x0001134C, 0x000114BB, 0x000114BC,
+ 0x000115BA, 0x000115BB, 0x0001D15E, 0x0001D164, 0x0001D1BB, 0x0001D1C0,
+ 0x0002F800, 0x0002FA1D, 0x0000FFFF, 0x0000FFFF,
+}; /* static const wchar_t nfd_qc_ranges */
Modified: soc2014/ghostmansd/head/lib/libc/string/strnorm.c
==============================================================================
--- soc2014/ghostmansd/head/lib/libc/string/strnorm.c Wed Jun 18 02:36:21 2014 (r269712)
+++ soc2014/ghostmansd/head/lib/libc/string/strnorm.c Wed Jun 18 03:07:16 2014 (r269713)
@@ -1,7 +1,5 @@
-/*
+/*-
* Copyright (c) 2014 Dmitry Selyutin <ghostmansd at FreeBSD.org>
- * at Lomonosov Moscow State University - www.msu.ru
- * All rights reserved.
*
* Copyright (c) 2014 The FreeBSD Foundation
* All rights reserved.
@@ -33,9 +31,9 @@
#include <errno.h>
#include <stdlib.h>
#include <wchar.h>
+#include <string.h>
#include <xlocale.h>
#include "xlocale_private.h"
-#include "normalization.h"
static size_t __norm_encode(char *buffer, size_t size, wchar_t const *wstr,
@@ -44,7 +42,7 @@
static const mbstate_t initial;
size_t length = 0;
char *mbs = NULL;
- wchar_t const *wcs = wstr;
+ const wchar_t *wcs = wstr;
mbstate_t state = initial;
FIX_LOCALE(locale);
@@ -83,7 +81,7 @@
}
-size_t __strnorm_l(char *buffer, size_t size, char const *str, int form,
+size_t __strnorm_l(char *buffer, size_t size, const char *str, int form,
locale_t locale)
{
int error = 0;
@@ -146,5 +144,5 @@
}
-size_t __strnorm(char *buffer, size_t size, char const *str, int form)
+size_t __strnorm(char *buffer, size_t size, const char *str, int form)
{ return __strnorm_l(buffer, size, str, form, __get_locale()); }
Modified: soc2014/ghostmansd/head/lib/libc/string/wcsnorm.c
==============================================================================
--- soc2014/ghostmansd/head/lib/libc/string/wcsnorm.c Wed Jun 18 02:36:21 2014 (r269712)
+++ soc2014/ghostmansd/head/lib/libc/string/wcsnorm.c Wed Jun 18 03:07:16 2014 (r269713)
@@ -1,7 +1,5 @@
-/*
+/*-
* Copyright (c) 2014 Dmitry Selyutin <ghostmansd at FreeBSD.org>
- * at Lomonosov Moscow State University - www.msu.ru
- * All rights reserved.
*
* Copyright (c) 2014 The FreeBSD Foundation
* All rights reserved.
@@ -32,17 +30,41 @@
#include <errno.h>
#include <stdint.h>
-#include "normalization.h"
+#include "norm/hangul.h"
+#include "norm/nfd.h"
-static size_t compose(wchar_t *buffer, size_t size, wchar_t const *str)
+static inline int __check(wchar_t code, const wchar_t *single,
+ const wchar_t *range)
+{
+ wchar_t min = 0;
+ wchar_t max = 0;
+
+ for (; *single != 0x0000FFFF; ++single)
+ {
+ if (*single == code)
+ return 1;
+ }
+ while (*range != 0x0000FFFF)
+ {
+ min = *range++;
+ max = *range++;
+ if ((min <= code) && (code <= max))
+ return 1;
+ }
+ return 0;
+}
+
+
+static size_t __compose(wchar_t *buffer, size_t size, const wchar_t *str,
+ int compatibility)
{
int32_t prev = 0;
int32_t curr = 0;
size_t index = 0;
size_t length = 0;
size_t reqsize = 0;
- wchar_t const *iter = str;
+ const wchar_t *iter = str;
prev = *str++;
if (buffer != NULL)
@@ -90,13 +112,17 @@
if ((reqsize + 2) > size)
{
+ errno = ERANGE;
if (buffer != NULL)
*--buffer = L'\0';
return (reqsize + 2);
}
++reqsize;
if ((reqsize + 1) > size)
+ {
+ errno = ERANGE;
return ++reqsize;
+ }
if (buffer != NULL)
{
*buffer++ = prev;
@@ -106,7 +132,8 @@
}
-static size_t decompose(wchar_t *buffer, size_t size, wchar_t const *str)
+static size_t __decompose(wchar_t *buffer, size_t size, const wchar_t *str,
+ int compatibility)
{
size_t count = 0;
int32_t curr = 0;
@@ -114,7 +141,7 @@
int32_t vowel = 0;
int32_t trail = 0;
size_t reqsize = 0;
- wchar_t const *iter = str;
+ const wchar_t *iter = str;
do {
curr = *iter;
@@ -161,14 +188,17 @@
} while (++iter);
if ((reqsize + 1) > size)
+ {
+ errno = ERANGE;
return ++reqsize;
+ }
if (buffer != NULL)
*buffer++ = L'\0';
return reqsize;
}
-size_t __wcsnorm(wchar_t *buffer, size_t size, wchar_t const *str, int form)
+size_t __wcsnorm(wchar_t *buffer, size_t size, const wchar_t *str, int form)
{
size_t reqsize = 0;
@@ -177,29 +207,25 @@
errno = EINVAL;
return 0;
}
+ if (*str == 0)
+ {
+ if (buffer != NULL)
+ *buffer = L'\0';
+ return 1;
+ }
switch (form)
{
case __NORM_NFD:
+ return __decompose(buffer, size, str, 0);
case __NORM_NFC:
+ return __compose(buffer, size, str, 0);
case __NORM_NFKD:
+ return __decompose(buffer, size, str, 1);
case __NORM_NFKC:
- break;
+ return __compose(buffer, size, str, 0);
default:
errno = EINVAL;
return 0;
}
-
- if (*str == 0)
- {
- if (buffer != NULL)
- *buffer = L'\0';
*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
More information about the svn-soc-all
mailing list