com php-src: update the functions for checking the names of encodings: ext/mbstring/mbstring.c

From: Date: Fri, 27 Feb 2015 10:31:34 +0000
Subject: com php-src: update the functions for checking the names of encodings: ext/mbstring/mbstring.c
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-96509@lists.php.net to get a copy of this message
Commit: 45a8a9c6858a49118330002b59dbd88b37e31e9d Author: Masaki Kagaya <masakielastic@gmail.com> Fri, 27 Feb 2015 19:31:34 +0900 Parents: 32de1cf57a78d518466c9dca13e9bfedb14f2de3 Branches: master Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=45a8a9c6858a49118330002b59dbd88b37e31e9d Log: update the functions for checking the names of encodings Changed paths: M ext/mbstring/mbstring.c Diff: diff --git a/ext/mbstring/mbstring.c b/ext/mbstring/mbstring.c index 2580218..86f6969 100644 --- a/ext/mbstring/mbstring.c +++ b/ext/mbstring/mbstring.c @@ -1970,77 +1970,109 @@ PHP_FUNCTION(mb_detect_order) } /* }}} */ -static inline int php_mb_check_unicode_encoding(enum mbfl_no_encoding no_enc) +static const enum mbfl_no_encoding php_mb_unsupported_no_encoding_list[] = { + mbfl_no_encoding_pass, + mbfl_no_encoding_auto, + mbfl_no_encoding_wchar, + mbfl_no_encoding_byte2be, + mbfl_no_encoding_byte2le, + mbfl_no_encoding_byte4be, + mbfl_no_encoding_byte4le, + mbfl_no_encoding_base64, + mbfl_no_encoding_uuencode, + mbfl_no_encoding_html_ent, + mbfl_no_encoding_qprint, + mbfl_no_encoding_utf7, + mbfl_no_encoding_utf7imap, + mbfl_no_encoding_2022kr, + mbfl_no_encoding_jis, + mbfl_no_encoding_2022jp, + mbfl_no_encoding_2022jpms, + mbfl_no_encoding_jis_ms, + mbfl_no_encoding_2022jp_2004, + mbfl_no_encoding_2022jp_kddi, + mbfl_no_encoding_cp50220, + mbfl_no_encoding_cp50220raw, + mbfl_no_encoding_cp50221, + mbfl_no_encoding_cp50222 +}; + +static inline int php_mb_is_unsupported_no_encoding(enum mbfl_no_encoding no_enc) { - if (no_enc == mbfl_no_encoding_utf8 - || no_enc == mbfl_no_encoding_utf8_docomo - || no_enc == mbfl_no_encoding_utf8_kddi_a - || no_enc == mbfl_no_encoding_utf8_kddi_b - || no_enc == mbfl_no_encoding_utf8_sb - || no_enc == mbfl_no_encoding_ucs4 - || no_enc == mbfl_no_encoding_ucs4be - || no_enc == mbfl_no_encoding_ucs4le - || no_enc == mbfl_no_encoding_utf32 - || no_enc == mbfl_no_encoding_utf32be - || no_enc == mbfl_no_encoding_utf32le - || no_enc == mbfl_no_encoding_ucs2 - || no_enc == mbfl_no_encoding_ucs2be - || no_enc == mbfl_no_encoding_ucs2le - || no_enc == mbfl_no_encoding_utf16 - || no_enc == mbfl_no_encoding_utf16be - || no_enc == mbfl_no_encoding_utf16le - ) { - return 1; + int i; + int size = sizeof(php_mb_unsupported_no_encoding_list)/sizeof(php_mb_unsupported_no_encoding_list[0]); + + for (i = 0; i < size; i++) { + + if (no_enc == php_mb_unsupported_no_encoding_list[i]) { + return 1; + } + } return 0; } -static inline int php_mb_check_utf8_encoding(enum mbfl_no_encoding no_enc) +static const enum mbfl_no_encoding php_mb_no_encoding_unicode_list[] = { + mbfl_no_encoding_utf8, + mbfl_no_encoding_utf8_docomo, + mbfl_no_encoding_utf8_kddi_a, + mbfl_no_encoding_utf8_kddi_b, + mbfl_no_encoding_utf8_sb, + mbfl_no_encoding_ucs4, + mbfl_no_encoding_ucs4be, + mbfl_no_encoding_ucs4le, + mbfl_no_encoding_utf32, + mbfl_no_encoding_utf32be, + mbfl_no_encoding_utf32le, + mbfl_no_encoding_ucs2, + mbfl_no_encoding_ucs2be, + mbfl_no_encoding_ucs2le, + mbfl_no_encoding_utf16, + mbfl_no_encoding_utf16be, + mbfl_no_encoding_utf16le +}; + +static inline int php_mb_is_no_encoding_unicode(enum mbfl_no_encoding no_enc) { - if (no_enc == mbfl_no_encoding_utf8 - || no_enc == mbfl_no_encoding_utf8_docomo - || no_enc == mbfl_no_encoding_utf8_kddi_a - || no_enc == mbfl_no_encoding_utf8_kddi_b - || no_enc == mbfl_no_encoding_utf8_sb - ) { - return 1; + int i; + int size = sizeof(php_mb_no_encoding_unicode_list)/sizeof(php_mb_no_encoding_unicode_list[0]); + + for (i = 0; i < size; i++) { + + if (no_enc == php_mb_no_encoding_unicode_list[i]) { + return 1; + } + } return 0; } -static inline int php_mb_check_unsupported_encoding(enum mbfl_no_encoding no_enc) + +static const enum mbfl_no_encoding php_mb_no_encoding_utf8_list[] = { + mbfl_no_encoding_utf8, + mbfl_no_encoding_utf8_docomo, + mbfl_no_encoding_utf8_kddi_a, + mbfl_no_encoding_utf8_kddi_b, + mbfl_no_encoding_utf8_sb +}; + +static inline int php_mb_is_no_encoding_utf8(enum mbfl_no_encoding no_enc) { - if (no_enc == mbfl_no_encoding_pass - || no_enc == mbfl_no_encoding_auto - || no_enc == mbfl_no_encoding_wchar - || no_enc == mbfl_no_encoding_byte2be - || no_enc == mbfl_no_encoding_byte2le - || no_enc == mbfl_no_encoding_byte4be - || no_enc == mbfl_no_encoding_byte4le - || no_enc == mbfl_no_encoding_base64 - || no_enc == mbfl_no_encoding_uuencode - || no_enc == mbfl_no_encoding_html_ent - || no_enc == mbfl_no_encoding_qprint - || no_enc == mbfl_no_encoding_utf7 - || no_enc == mbfl_no_encoding_utf7imap - || no_enc == mbfl_no_encoding_2022kr - || no_enc == mbfl_no_encoding_jis - || no_enc == mbfl_no_encoding_2022jp - || no_enc == mbfl_no_encoding_2022jpms - || no_enc == mbfl_no_encoding_jis_ms - || no_enc == mbfl_no_encoding_2022jp_2004 - || no_enc == mbfl_no_encoding_2022jp_kddi - || no_enc == mbfl_no_encoding_cp50220 - || no_enc == mbfl_no_encoding_cp50220raw - || no_enc == mbfl_no_encoding_cp50221 - || no_enc == mbfl_no_encoding_cp50222 - ) { - return 1; + int i; + int size = sizeof(php_mb_no_encoding_utf8_list)/sizeof(php_mb_no_encoding_utf8_list[0]); + + for (i = 0; i < size; i++) { + + if (no_enc == php_mb_no_encoding_utf8_list[i]) { + return 1; + } + } return 0; } + static inline int php_mb_check_code_point(long cp) { enum mbfl_no_encoding no_enc; @@ -2049,14 +2081,14 @@ static inline int php_mb_check_code_point(long cp) no_enc = MBSTRG(current_internal_encoding)->no_encoding; - if (php_mb_check_utf8_encoding(no_enc)) { + if (php_mb_is_no_encoding_utf8(no_enc)) { if ((cp > 0 && 0xd800 > cp) || (cp > 0xdfff && 0x110000 > cp)) { return 1; } return 0; - } else if (php_mb_check_unicode_encoding(no_enc)) { + } else if (php_mb_is_no_encoding_unicode(no_enc)) { if (0 > cp || cp > 0x10ffff) { return 0; @@ -2065,7 +2097,7 @@ static inline int php_mb_check_code_point(long cp) return 1; // backward compatibility - } else if (php_mb_check_unsupported_encoding(no_enc)) { + } else if (php_mb_is_unsupported_no_encoding(no_enc)) { return cp < 0xffff && cp > 0x0; }

« previous php.cvs (#96509) next »