ruby-changes:3455
From: ko1@a...
Date: 8 Jan 2008 16:28:05 +0900
Subject: [ruby-changes:3455] nobu - Ruby:r14949: * enc/utf_{16,32}{be,le}.c: renamed to match with encoding names.
nobu 2008-01-08 16:27:53 +0900 (Tue, 08 Jan 2008) New Revision: 14949 Removed files: trunk/enc/utf16_be.c trunk/enc/utf16_le.c trunk/enc/utf32_be.c trunk/enc/utf32_le.c Log: * enc/utf_{16,32}{be,le}.c: renamed to match with encoding names. http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/enc/utf32_be.c http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/enc/utf32_le.c http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/enc/utf16_be.c http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/enc/utf16_le.c Index: enc/utf32_be.c =================================================================== --- enc/utf32_be.c (revision 14948) +++ enc/utf32_be.c (revision 14949) @@ -1,195 +0,0 @@ -/********************************************************************** - utf32_be.c - Oniguruma (regular expression library) -**********************************************************************/ -/*- - * Copyright (c) 2002-2007 K.Kosako <sndgk393 AT ybb DOT ne DOT jp> - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#include "regenc.h" - -OnigEncodingDeclare(UTF32_BE); - -static int -utf32be_mbc_enc_len(const UChar* p ARG_UNUSED, const OnigUChar* e ARG_UNUSED, - struct OnigEncodingTypeST* enc ARG_UNUSED) -{ - return 4; -} - -static int -utf32be_is_mbc_newline(const UChar* p, const UChar* end, - struct OnigEncodingTypeST* enc ARG_UNUSED) -{ - if (p + 3 < end) { - if (*(p+3) == 0x0a && *(p+2) == 0 && *(p+1) == 0 && *p == 0) - return 1; -#ifdef USE_UNICODE_ALL_LINE_TERMINATORS - 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) - return 1; -#endif - } - return 0; -} - -static OnigCodePoint -utf32be_mbc_to_code(const UChar* p, const UChar* end ARG_UNUSED, - struct OnigEncodingTypeST* enc ARG_UNUSED) -{ - return (OnigCodePoint )(((p[0] * 256 + p[1]) * 256 + p[2]) * 256 + p[3]); -} - -static int -utf32be_code_to_mbclen(OnigCodePoint code ARG_UNUSED, - struct OnigEncodingTypeST* enc ARG_UNUSED) -{ - return 4; -} - -static int -utf32be_code_to_mbc(OnigCodePoint code, UChar *buf, - struct OnigEncodingTypeST* enc ARG_UNUSED) -{ - UChar* p = buf; - - *p++ = (UChar )((code & 0xff000000) >>24); - *p++ = (UChar )((code & 0xff0000) >>16); - *p++ = (UChar )((code & 0xff00) >> 8); - *p++ = (UChar ) (code & 0xff); - return 4; -} - -static int -utf32be_mbc_case_fold(OnigCaseFoldType flag, - const UChar** pp, const UChar* end, UChar* fold, - struct OnigEncodingTypeST* enc ARG_UNUSED) -{ - const UChar* p = *pp; - - if (ONIGENC_IS_ASCII_CODE(*(p+3)) && *(p+2) == 0 && *(p+1) == 0 && *p == 0) { - *fold++ = 0; - *fold++ = 0; - -#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; - } - } -#endif - - *fold++ = 0; - *fold = ONIGENC_ASCII_CODE_TO_LOWER_CASE(*(p+3)); - *pp += 4; - return 4; - } - else - return onigenc_unicode_mbc_case_fold(&OnigEncodingName(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 == 0xdf && (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, - struct OnigEncodingTypeST* enc ARG_UNUSED) -{ - int rem; - - if (s <= start) return (UChar* )s; - - 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[], - struct OnigEncodingTypeST* enc ARG_UNUSED) -{ - return onigenc_unicode_get_case_fold_codes_by_str(&OnigEncodingName(UTF32_BE), - flag, p, end, items); -} - -OnigEncodingDefine(utf32_be, UTF32_BE) = { - utf32be_mbc_enc_len, - "UTF-32BE", /* name */ - 4, /* max byte length */ - 4, /* min byte length */ - utf32be_is_mbc_newline, - utf32be_mbc_to_code, - utf32be_code_to_mbclen, - utf32be_code_to_mbc, - utf32be_mbc_case_fold, - onigenc_unicode_apply_all_case_fold, - utf32be_get_case_fold_codes_by_str, - onigenc_unicode_property_name_to_ctype, - onigenc_unicode_is_code_ctype, - onigenc_utf16_32_get_ctype_code_range, - utf32be_left_adjust_char_head, - onigenc_always_false_is_allowed_reverse_match -}; Index: enc/utf16_be.c =================================================================== --- enc/utf16_be.c (revision 14948) +++ enc/utf16_be.c (revision 14949) @@ -1,239 +0,0 @@ -/********************************************************************** - utf16_be.c - Oniguruma (regular expression library) -**********************************************************************/ -/*- - * Copyright (c) 2002-2007 K.Kosako <sndgk393 AT ybb DOT ne DOT jp> - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#include "regenc.h" - -OnigEncodingDeclare(UTF16_BE); - -#define UTF16_IS_SURROGATE_FIRST(c) (c >= 0xd8 && c <= 0xdb) -#define UTF16_IS_SURROGATE_SECOND(c) (c >= 0xdc && c <= 0xdf) - -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, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 4, 4, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 -}; - -static int -utf16be_mbc_enc_len(const UChar* p, const OnigUChar* e ARG_UNUSED, - struct OnigEncodingTypeST* enc ARG_UNUSED) -{ - return EncLen_UTF16[*p]; -} - -static int -utf16be_is_mbc_newline(const UChar* p, const UChar* end, - struct OnigEncodingTypeST* enc ARG_UNUSED) -{ - if (p + 1 < end) { - if (*(p+1) == 0x0a && *p == 0x00) - return 1; -#ifdef USE_UNICODE_ALL_LINE_TERMINATORS - 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 - } - return 0; -} - -static OnigCodePoint -utf16be_mbc_to_code(const UChar* p, const UChar* end ARG_UNUSED, - struct OnigEncodingTypeST* enc ARG_UNUSED) -{ - OnigCodePoint code; - - if (UTF16_IS_SURROGATE_FIRST(*p)) { - 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]; - } - return code; -} - -static int -utf16be_code_to_mbclen(OnigCodePoint code, - struct OnigEncodingTypeST* enc ARG_UNUSED) -{ - return (code > 0xffff ? 4 : 2); -} - -static int -utf16be_code_to_mbc(OnigCodePoint code, UChar *buf, - struct OnigEncodingTypeST* enc ARG_UNUSED) -{ - UChar* p = buf; - - if (code > 0xffff) { - unsigned int plane, high; - - plane = code >> 16; - *p++ = (plane >> 2) + 0xd8; - high = (code & 0xff00) >> 8; - *p++ = ((plane & 0x03) << 6) + (high >> 2); - *p++ = (high & 0x02) + 0xdc; - *p = (UChar )(code & 0xff); - return 4; - } - else { - *p++ = (UChar )((code & 0xff00) >> 8); - *p++ = (UChar )(code & 0xff); - return 2; - } -} - -static int -utf16be_mbc_case_fold(OnigCaseFoldType flag, - const UChar** pp, const UChar* end, UChar* fold, - struct OnigEncodingTypeST* enc ARG_UNUSED) -{ - const UChar* p = *pp; - - if (ONIGENC_IS_ASCII_CODE(*(p+1)) && *p == 0) { - p++; -#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; - } - } -#endif - - *fold++ = 0; - *fold = ONIGENC_ASCII_CODE_TO_LOWER_CASE(*p); - *pp += 2; - return 2; - } - else - return onigenc_unicode_mbc_case_fold(&OnigEncodingName(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 == 0xdf && (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, - struct OnigEncodingTypeST* enc ARG_UNUSED) -{ - if (s <= start) return (UChar* )s; - - if ((s - start) % 2 == 1) { - s--; - } - - if (UTF16_IS_SURROGATE_SECOND(*s) && s > start + 1) - s -= 2; - - return (UChar* )s; -} - -static int -utf16be_get_case_fold_codes_by_str(OnigCaseFoldType flag, - const OnigUChar* p, const OnigUChar* end, - OnigCaseFoldCodeItem items[], - struct OnigEncodingTypeST* enc ARG_UNUSED) -{ - return onigenc_unicode_get_case_fold_codes_by_str(&OnigEncodingName(UTF16_BE), - flag, p, end, items); -} - -OnigEncodingDefine(utf16_be, UTF16_BE) = { - utf16be_mbc_enc_len, - "UTF-16BE", /* name */ - 4, /* max byte length */ - 2, /* min byte length */ - utf16be_is_mbc_newline, - utf16be_mbc_to_code, - utf16be_code_to_mbclen, - utf16be_code_to_mbc, - utf16be_mbc_case_fold, - onigenc_unicode_apply_all_case_fold, - utf16be_get_case_fold_codes_by_str, - onigenc_unicode_property_name_to_ctype, - onigenc_unicode_is_code_ctype, - onigenc_utf16_32_get_ctype_code_range, - utf16be_left_adjust_char_head, - onigenc_always_false_is_allowed_reverse_match -}; Index: enc/utf32_le.c =================================================================== --- enc/utf32_le.c (revision 14948) +++ enc/utf32_le.c (revision 14949) @@ -1,195 +0,0 @@ -/********************************************************************** - utf32_le.c - Oniguruma (regular expression library) -**********************************************************************/ -/*- - * Copyright (c) 2002-2007 K.Kosako <sndgk393 AT ybb DOT ne DOT jp> - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#include "regenc.h" - -OnigEncodingDeclare(UTF32_LE); - -static int -utf32le_mbc_enc_len(const UChar* p ARG_UNUSED, const OnigUChar* e ARG_UNUSED, - struct OnigEncodingTypeST* enc ARG_UNUSED) -{ - return 4; -} - -static int -utf32le_is_mbc_newline(const UChar* p, const UChar* end, - struct OnigEncodingTypeST* enc ARG_UNUSED) -{ - if (p + 3 < end) { - if (*p == 0x0a && *(p+1) == 0 && *(p+2) == 0 && *(p+3) == 0) - return 1; -#ifdef USE_UNICODE_ALL_LINE_TERMINATORS - 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) - return 1; -#endif - } - return 0; -} - -static OnigCodePoint -utf32le_mbc_to_code(const UChar* p, const UChar* end ARG_UNUSED, - struct OnigEncodingTypeST* enc ARG_UNUSED) -{ - return (OnigCodePoint )(((p[3] * 256 + p[2]) * 256 + p[1]) * 256 + p[0]); -} - -static int -utf32le_code_to_mbclen(OnigCodePoint code ARG_UNUSED, - struct OnigEncodingTypeST* enc ARG_UNUSED) -{ - return 4; -} - -static int -utf32le_code_to_mbc(OnigCodePoint code, UChar *buf, - struct OnigEncodingTypeST* enc ARG_UNUSED) -{ - UChar* p = buf; - - *p++ = (UChar ) (code & 0xff); - *p++ = (UChar )((code & 0xff00) >> 8); - *p++ = (UChar )((code & 0xff0000) >>16); - *p++ = (UChar )((code & 0xff000000) >>24); - return 4; -} - -static int -utf32le_mbc_case_fold(OnigCaseFoldType flag, - const UChar** pp, const UChar* end, UChar* fold, - struct OnigEncodingTypeST* enc ARG_UNUSED) -{ - const UChar* p = *pp; - - if (ONIGENC_IS_ASCII_CODE(*p) && *(p+1) == 0 && *(p+2) == 0 && *(p+3) == 0) { -#ifdef USE_UNICODE_CASE_FOLD_TURKISH_AZERI - if ((flag & ONIGENC_CASE_FOLD_TURKISH_AZERI) != 0) { - if (*p == 0x49) { - *fold++ = 0x31; - *fold++ = 0x01; - } - } - else { -#endif - *fold++ = ONIGENC_ASCII_CODE_TO_LOWER_CASE(*p); - *fold++ = 0; -#ifdef USE_UNICODE_CASE_FOLD_TURKISH_AZERI - } -#endif - - *fold++ = 0; - *fold = 0; - *pp += 4; - return 4; - } - else - return onigenc_unicode_mbc_case_fold(&OnigEncodingName(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 == 0xdf && (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, - struct OnigEncodingTypeST* enc ARG_UNUSED) -{ - int rem; - - if (s <= start) return (UChar* )s; - - 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[], - struct OnigEncodingTypeST* enc ARG_UNUSED) -{ - return onigenc_unicode_get_case_fold_codes_by_str(&OnigEncodingName(UTF32_LE), - flag, p, end, items); -} - -OnigEncodingDefine(utf32_le, UTF32_LE) = { - utf32le_mbc_enc_len, - "UTF-32LE", /* name */ - 4, /* max byte length */ - 4, /* min byte length */ - utf32le_is_mbc_newline, - utf32le_mbc_to_code, - utf32le_code_to_mbclen, - utf32le_code_to_mbc, - utf32le_mbc_case_fold, - onigenc_unicode_apply_all_case_fold, - utf32le_get_case_fold_codes_by_str, - onigenc_unicode_property_name_to_ctype, - onigenc_unicode_is_code_ctype, - onigenc_utf16_32_get_ctype_code_range, - utf32le_left_adjust_char_head, - onigenc_always_false_is_allowed_reverse_match -}; Index: enc/utf16_le.c =================================================================== --- enc/utf16_le.c (revision 14948) +++ enc/utf16_le.c (revision 14949) @@ -1,240 +0,0 @@ -/********************************************************************** - utf16_le.c - Oniguruma (regular expression library) -**********************************************************************/ -/*- - * Copyright (c) 2002-2007 K.Kosako <sndgk393 AT ybb DOT ne DOT jp> - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#include "regenc.h" - -OnigEncodingDeclare(UTF16_LE); - -#define UTF16_IS_SURROGATE_FIRST(c) (c >= 0xd8 && c <= 0xdb) -#define UTF16_IS_SURROGATE_SECOND(c) (c >= 0xdc && c <= 0xdf) - -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, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 4, 4, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 -}; - -static int -utf16le_mbc_enc_len(const UChar* p, const OnigUChar* e ARG_UNUSED, - struct OnigEncodingTypeST* enc ARG_UNUSED) -{ - return EncLen_UTF16[*(p+1)]; -} - -static int -utf16le_is_mbc_newline(const UChar* p, const UChar* end, - struct OnigEncodingTypeST* enc ARG_UNUSED) -{ - if (p + 1 < end) { - if (*p == 0x0a && *(p+1) == 0x00) - return 1; -#ifdef USE_UNICODE_ALL_LINE_TERMINATORS - 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 - } - return 0; -} - -static OnigCodePoint -utf16le_mbc_to_code(const UChar* p, const UChar* end ARG_UNUSED, - struct OnigEncodingTypeST* enc ARG_UNUSED) -{ - OnigCodePoint code; - UChar c0 = *p; - UChar c1 = *(p+1); - - if (UTF16_IS_SURROGATE_FIRST(c1)) { - code = ((((c1 - 0xd8) << 2) + ((c0 & 0xc0) >> 6) + 1) << 16) - + ((((c0 & 0x3f) << 2) + (p[3] - 0xdc)) << 8) - + p[2]; - } - else { - code = c1 * 256 + p[0]; - } - return code; -} - -static int -utf16le_code_to_mbclen(OnigCodePoint code, - struct OnigEncodingTypeST* enc ARG_UNUSED) -{ - return (code > 0xffff ? 4 : 2); -} - -static int -utf16le_code_to_mbc(OnigCodePoint code, UChar *buf, - struct OnigEncodingTypeST* enc ARG_UNUSED) -{ - UChar* p = buf; - - if (code > 0xffff) { - unsigned int plane, high; - - plane = code >> 16; - high = (code & 0xff00) >> 8; - - *p++ = ((plane & 0x03) << 6) + (high >> 2); - *p++ = (plane >> 2) + 0xd8; - *p++ = (UChar )(code & 0xff); - *p = (high & 0x02) + 0xdc; - return 4; - } - else { - *p++ = (UChar )(code & 0xff); - *p++ = (UChar )((code & 0xff00) >> 8); - return 2; - } -} - -static int -utf16le_mbc_case_fold(OnigCaseFoldType flag, - const UChar** pp, const UChar* end, UChar* fold, - struct OnigEncodingTypeST* enc ARG_UNUSED) -{ - const UChar* p = *pp; - - if (ONIGENC_IS_ASCII_CODE(*p) && *(p+1) == 0) { -#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; - } - } -#endif - - *fold++ = ONIGENC_ASCII_CODE_TO_LOWER_CASE(*p); - *fold = 0; - *pp += 2; - return 2; - } - else - return onigenc_unicode_mbc_case_fold(&OnigEncodingName(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 == 0xdf && (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, - struct OnigEncodingTypeST* enc ARG_UNUSED) -{ - if (s <= start) return (UChar* )s; - - if ((s - start) % 2 == 1) { - s--; - } - - if (UTF16_IS_SURROGATE_SECOND(*(s+1)) && s > start + 1) - s -= 2; - - return (UChar* )s; -} - -static int -utf16le_get_case_fold_codes_by_str(OnigCaseFoldType flag, - const OnigUChar* p, const OnigUChar* end, - OnigCaseFoldCodeItem items[], - struct OnigEncodingTypeST* enc ARG_UNUSED) -{ - return onigenc_unicode_get_case_fold_codes_by_str(&OnigEncodingName(UTF16_LE), - flag, p, end, items); -} - -OnigEncodingDefine(utf16_le, UTF16_LE) = { - utf16le_mbc_enc_len, - "UTF-16LE", /* name */ - 4, /* max byte length */ - 2, /* min byte length */ - utf16le_is_mbc_newline, - utf16le_mbc_to_code, - utf16le_code_to_mbclen, - utf16le_code_to_mbc, - utf16le_mbc_case_fold, - onigenc_unicode_apply_all_case_fold, - utf16le_get_case_fold_codes_by_str, - onigenc_unicode_property_name_to_ctype, - onigenc_unicode_is_code_ctype, - onigenc_utf16_32_get_ctype_code_range, - utf16le_left_adjust_char_head, - onigenc_always_false_is_allowed_reverse_match -}; -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml