mirror of
https://github.com/php/php-src.git
synced 2026-04-28 18:53:33 +02:00
Combine MBFL_ENCTYPE_WCS{2,4}{BE,LE} constants
These flags identify text encodings in mbstring which use a constant number of bytes per character. While some parts of the code do use these flags, usually to detect cases which can be optimized due to constant-width encoding, nothing cares whether the encodings are 'LE' (little-endian) or 'BE' (big-endian). So we can simplify things by combining constants.
This commit is contained in:
@@ -47,7 +47,7 @@ const mbfl_encoding mbfl_encoding_ucs2 = {
|
||||
"UCS-2",
|
||||
mbfl_encoding_ucs2_aliases,
|
||||
NULL,
|
||||
MBFL_ENCTYPE_WCS2BE,
|
||||
MBFL_ENCTYPE_WCS2,
|
||||
&vtbl_ucs2_wchar,
|
||||
&vtbl_wchar_ucs2
|
||||
};
|
||||
@@ -58,7 +58,7 @@ const mbfl_encoding mbfl_encoding_ucs2be = {
|
||||
"UCS-2BE",
|
||||
mbfl_encoding_ucs2be_aliases,
|
||||
NULL,
|
||||
MBFL_ENCTYPE_WCS2BE,
|
||||
MBFL_ENCTYPE_WCS2,
|
||||
&vtbl_ucs2be_wchar,
|
||||
&vtbl_wchar_ucs2be
|
||||
};
|
||||
@@ -69,7 +69,7 @@ const mbfl_encoding mbfl_encoding_ucs2le = {
|
||||
"UCS-2LE",
|
||||
mbfl_encoding_ucs2le_aliases,
|
||||
NULL,
|
||||
MBFL_ENCTYPE_WCS2LE,
|
||||
MBFL_ENCTYPE_WCS2,
|
||||
&vtbl_ucs2le_wchar,
|
||||
&vtbl_wchar_ucs2le
|
||||
};
|
||||
|
||||
@@ -44,7 +44,7 @@ const mbfl_encoding mbfl_encoding_ucs4 = {
|
||||
"UCS-4",
|
||||
mbfl_encoding_ucs4_aliases,
|
||||
NULL,
|
||||
MBFL_ENCTYPE_WCS4BE,
|
||||
MBFL_ENCTYPE_WCS4,
|
||||
&vtbl_ucs4_wchar,
|
||||
&vtbl_wchar_ucs4
|
||||
};
|
||||
@@ -55,7 +55,7 @@ const mbfl_encoding mbfl_encoding_ucs4be = {
|
||||
"UCS-4BE",
|
||||
mbfl_encoding_ucs4be_aliases,
|
||||
NULL,
|
||||
MBFL_ENCTYPE_WCS4BE,
|
||||
MBFL_ENCTYPE_WCS4,
|
||||
&vtbl_ucs4be_wchar,
|
||||
&vtbl_wchar_ucs4be
|
||||
};
|
||||
@@ -66,7 +66,7 @@ const mbfl_encoding mbfl_encoding_ucs4le = {
|
||||
"UCS-4LE",
|
||||
mbfl_encoding_ucs4le_aliases,
|
||||
NULL,
|
||||
MBFL_ENCTYPE_WCS4LE,
|
||||
MBFL_ENCTYPE_WCS4,
|
||||
&vtbl_ucs4le_wchar,
|
||||
&vtbl_wchar_ucs4le
|
||||
};
|
||||
|
||||
@@ -40,7 +40,7 @@ const mbfl_encoding mbfl_encoding_utf32 = {
|
||||
"UTF-32",
|
||||
mbfl_encoding_utf32_aliases,
|
||||
NULL,
|
||||
MBFL_ENCTYPE_WCS4BE,
|
||||
MBFL_ENCTYPE_WCS4,
|
||||
&vtbl_utf32_wchar,
|
||||
&vtbl_wchar_utf32
|
||||
};
|
||||
@@ -51,7 +51,7 @@ const mbfl_encoding mbfl_encoding_utf32be = {
|
||||
"UTF-32BE",
|
||||
NULL,
|
||||
NULL,
|
||||
MBFL_ENCTYPE_WCS4BE,
|
||||
MBFL_ENCTYPE_WCS4,
|
||||
&vtbl_utf32be_wchar,
|
||||
&vtbl_wchar_utf32be
|
||||
};
|
||||
@@ -62,7 +62,7 @@ const mbfl_encoding mbfl_encoding_utf32le = {
|
||||
"UTF-32LE",
|
||||
NULL,
|
||||
NULL,
|
||||
MBFL_ENCTYPE_WCS4LE,
|
||||
MBFL_ENCTYPE_WCS4,
|
||||
&vtbl_utf32le_wchar,
|
||||
&vtbl_wchar_utf32le
|
||||
};
|
||||
|
||||
@@ -484,9 +484,9 @@ mbfl_strlen(const mbfl_string *string)
|
||||
len = 0;
|
||||
if (encoding->flag & MBFL_ENCTYPE_SBCS) {
|
||||
len = string->len;
|
||||
} else if (encoding->flag & (MBFL_ENCTYPE_WCS2BE | MBFL_ENCTYPE_WCS2LE)) {
|
||||
} else if (encoding->flag & MBFL_ENCTYPE_WCS2) {
|
||||
len = string->len/2;
|
||||
} else if (encoding->flag & (MBFL_ENCTYPE_WCS4BE | MBFL_ENCTYPE_WCS4LE)) {
|
||||
} else if (encoding->flag & MBFL_ENCTYPE_WCS4) {
|
||||
len = string->len/4;
|
||||
} else if (encoding->mblen_table != NULL) {
|
||||
const unsigned char *mbtab = encoding->mblen_table;
|
||||
@@ -837,14 +837,14 @@ mbfl_substr(
|
||||
mbfl_string_init(result);
|
||||
result->encoding = string->encoding;
|
||||
|
||||
if ((encoding->flag & (MBFL_ENCTYPE_SBCS | MBFL_ENCTYPE_WCS2BE | MBFL_ENCTYPE_WCS2LE | MBFL_ENCTYPE_WCS4BE | MBFL_ENCTYPE_WCS4LE)) ||
|
||||
if ((encoding->flag & (MBFL_ENCTYPE_SBCS | MBFL_ENCTYPE_WCS2 | MBFL_ENCTYPE_WCS4)) ||
|
||||
encoding->mblen_table != NULL) {
|
||||
len = string->len;
|
||||
if (encoding->flag & MBFL_ENCTYPE_SBCS) {
|
||||
start = from;
|
||||
} else if (encoding->flag & (MBFL_ENCTYPE_WCS2BE | MBFL_ENCTYPE_WCS2LE)) {
|
||||
} else if (encoding->flag & MBFL_ENCTYPE_WCS2) {
|
||||
start = from*2;
|
||||
} else if (encoding->flag & (MBFL_ENCTYPE_WCS4BE | MBFL_ENCTYPE_WCS4LE)) {
|
||||
} else if (encoding->flag & MBFL_ENCTYPE_WCS4) {
|
||||
start = from*4;
|
||||
} else {
|
||||
const unsigned char *mbtab = encoding->mblen_table;
|
||||
@@ -869,9 +869,9 @@ mbfl_substr(
|
||||
end = len;
|
||||
} else if (encoding->flag & MBFL_ENCTYPE_SBCS) {
|
||||
end = start + length;
|
||||
} else if (encoding->flag & (MBFL_ENCTYPE_WCS2BE | MBFL_ENCTYPE_WCS2LE)) {
|
||||
} else if (encoding->flag & MBFL_ENCTYPE_WCS2) {
|
||||
end = start + length*2;
|
||||
} else if (encoding->flag & (MBFL_ENCTYPE_WCS4BE | MBFL_ENCTYPE_WCS4LE)) {
|
||||
} else if (encoding->flag & MBFL_ENCTYPE_WCS4) {
|
||||
end = start + length*4;
|
||||
} else {
|
||||
const unsigned char *mbtab = encoding->mblen_table;
|
||||
@@ -984,18 +984,13 @@ mbfl_strcut(
|
||||
mbfl_string_init(result);
|
||||
result->encoding = string->encoding;
|
||||
|
||||
if ((encoding->flag & (MBFL_ENCTYPE_SBCS
|
||||
| MBFL_ENCTYPE_WCS2BE
|
||||
| MBFL_ENCTYPE_WCS2LE
|
||||
| MBFL_ENCTYPE_WCS4BE
|
||||
| MBFL_ENCTYPE_WCS4LE))
|
||||
|| encoding->mblen_table != NULL) {
|
||||
if ((encoding->flag & (MBFL_ENCTYPE_SBCS | MBFL_ENCTYPE_WCS2 | MBFL_ENCTYPE_WCS4)) || encoding->mblen_table != NULL) {
|
||||
const unsigned char *start = NULL;
|
||||
const unsigned char *end = NULL;
|
||||
unsigned char *w;
|
||||
size_t sz;
|
||||
|
||||
if (encoding->flag & (MBFL_ENCTYPE_WCS2BE | MBFL_ENCTYPE_WCS2LE)) {
|
||||
if (encoding->flag & MBFL_ENCTYPE_WCS2) {
|
||||
from &= -2;
|
||||
|
||||
if (length >= string->len - from) {
|
||||
@@ -1004,7 +999,7 @@ mbfl_strcut(
|
||||
|
||||
start = string->val + from;
|
||||
end = start + (length & -2);
|
||||
} else if (encoding->flag & (MBFL_ENCTYPE_WCS4BE | MBFL_ENCTYPE_WCS4LE)) {
|
||||
} else if (encoding->flag & MBFL_ENCTYPE_WCS4) {
|
||||
from &= -4;
|
||||
|
||||
if (length >= string->len - from) {
|
||||
|
||||
@@ -38,7 +38,7 @@ const mbfl_encoding mbfl_encoding_wchar = {
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
MBFL_ENCTYPE_WCS4BE,
|
||||
MBFL_ENCTYPE_WCS4,
|
||||
NULL,
|
||||
NULL
|
||||
};
|
||||
|
||||
@@ -33,12 +33,10 @@
|
||||
|
||||
#define MBFL_ENCTYPE_SBCS 0x00000001 /* single-byte encoding */
|
||||
#define MBFL_ENCTYPE_MBCS 0x00000002 /* multi-byte encoding */
|
||||
#define MBFL_ENCTYPE_WCS2BE 0x00000010 /* 2 bytes/char, big endian */
|
||||
#define MBFL_ENCTYPE_WCS2LE 0x00000020 /* 2 bytes/char, little endian */
|
||||
#define MBFL_ENCTYPE_WCS2 0x00000010 /* 2 bytes/char */
|
||||
#define MBFL_ENCTYPE_MWC2BE 0x00000040 /* 2+ bytes/char, big endian */
|
||||
#define MBFL_ENCTYPE_MWC2LE 0x00000080 /* 2+ bytes/char, little endian */
|
||||
#define MBFL_ENCTYPE_WCS4BE 0x00000100 /* 4 bytes/char, big endian */
|
||||
#define MBFL_ENCTYPE_WCS4LE 0x00000200 /* 4 bytes/char, little endian */
|
||||
#define MBFL_ENCTYPE_WCS4 0x00000100 /* 4 bytes/char */
|
||||
#define MBFL_ENCTYPE_GL_UNSAFE 0x00004000
|
||||
|
||||
/* wchar plane, special character */
|
||||
|
||||
@@ -1714,10 +1714,10 @@ PHP_FUNCTION(mb_str_split)
|
||||
if (mbfl_encoding->flag & MBFL_ENCTYPE_SBCS) { /* 1 byte */
|
||||
mb_len = string.len;
|
||||
chunk_len = (size_t)split_length; /* chunk length in bytes */
|
||||
} else if (mbfl_encoding->flag & (MBFL_ENCTYPE_WCS2BE | MBFL_ENCTYPE_WCS2LE)) { /* 2 bytes */
|
||||
} else if (mbfl_encoding->flag & MBFL_ENCTYPE_WCS2) { /* 2 bytes */
|
||||
mb_len = string.len / 2;
|
||||
chunk_len = split_length * 2;
|
||||
} else if (mbfl_encoding->flag & (MBFL_ENCTYPE_WCS4BE | MBFL_ENCTYPE_WCS4LE)) { /* 4 bytes */
|
||||
} else if (mbfl_encoding->flag & MBFL_ENCTYPE_WCS4) { /* 4 bytes */
|
||||
mb_len = string.len / 4;
|
||||
chunk_len = split_length * 4;
|
||||
} else if (mbfl_encoding->mblen_table != NULL) {
|
||||
@@ -4215,9 +4215,9 @@ MBSTRING_API size_t php_mb_mbchar_bytes_ex(const char *s, const mbfl_encoding *e
|
||||
if (enc->mblen_table != NULL) {
|
||||
if (s != NULL) return enc->mblen_table[*(unsigned char *)s];
|
||||
}
|
||||
} else if (enc->flag & (MBFL_ENCTYPE_WCS2BE | MBFL_ENCTYPE_WCS2LE)) {
|
||||
} else if (enc->flag & MBFL_ENCTYPE_WCS2) {
|
||||
return 2;
|
||||
} else if (enc->flag & (MBFL_ENCTYPE_WCS4BE | MBFL_ENCTYPE_WCS4LE)) {
|
||||
} else if (enc->flag & MBFL_ENCTYPE_WCS4) {
|
||||
return 4;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user