1
0
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:
Alex Dowad
2020-09-20 16:29:32 +02:00
parent 5ffcf563bd
commit 72660c416a
7 changed files with 26 additions and 33 deletions
+3 -3
View File
@@ -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
};
+3 -3
View File
@@ -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
};
+10 -15
View File
@@ -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) {
+1 -1
View File
@@ -38,7 +38,7 @@ const mbfl_encoding mbfl_encoding_wchar = {
NULL,
NULL,
NULL,
MBFL_ENCTYPE_WCS4BE,
MBFL_ENCTYPE_WCS4,
NULL,
NULL
};
+2 -4
View File
@@ -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 */
+4 -4
View File
@@ -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;
}
}