mirror of
https://github.com/php/php-src.git
synced 2025-08-15 13:38:49 +02:00
ext/intl converter and formatter using fast ZPP (#14413)
This commit is contained in:
parent
694bb32119
commit
d005ab20ea
2 changed files with 61 additions and 62 deletions
|
@ -109,10 +109,12 @@ PHP_METHOD(UConverter, toUCallback) {
|
|||
zend_string *source, *codeUnits;
|
||||
zval *error;
|
||||
|
||||
if (zend_parse_parameters(ZEND_NUM_ARGS(), "lSSz",
|
||||
&reason, &source, &codeUnits, &error) == FAILURE) {
|
||||
RETURN_THROWS();
|
||||
}
|
||||
ZEND_PARSE_PARAMETERS_START(4, 4)
|
||||
Z_PARAM_LONG(reason)
|
||||
Z_PARAM_STR(source)
|
||||
Z_PARAM_STR(codeUnits)
|
||||
Z_PARAM_ZVAL(error)
|
||||
ZEND_PARSE_PARAMETERS_END();
|
||||
|
||||
php_converter_default_callback(return_value, ZEND_THIS, reason, error);
|
||||
}
|
||||
|
@ -124,10 +126,12 @@ PHP_METHOD(UConverter, fromUCallback) {
|
|||
zval *source, *error;
|
||||
zend_long codePoint;
|
||||
|
||||
if (zend_parse_parameters(ZEND_NUM_ARGS(), "lalz",
|
||||
&reason, &source, &codePoint, &error) == FAILURE) {
|
||||
RETURN_THROWS();
|
||||
}
|
||||
ZEND_PARSE_PARAMETERS_START(4, 4)
|
||||
Z_PARAM_LONG(reason)
|
||||
Z_PARAM_ARRAY(source)
|
||||
Z_PARAM_LONG(codePoint)
|
||||
Z_PARAM_ZVAL(error)
|
||||
ZEND_PARSE_PARAMETERS_END();
|
||||
|
||||
php_converter_default_callback(return_value, ZEND_THIS, reason, error);
|
||||
}
|
||||
|
@ -333,7 +337,7 @@ static void php_converter_from_u_callback(const void *context,
|
|||
|
||||
/* {{{ php_converter_set_callbacks */
|
||||
static inline bool php_converter_set_callbacks(php_converter_object *objval, UConverter *cnv) {
|
||||
bool ret = 1;
|
||||
bool ret = true;
|
||||
UErrorCode error = U_ZERO_ERROR;
|
||||
|
||||
if (objval->obj.ce == php_converter_ce) {
|
||||
|
@ -403,9 +407,10 @@ static void php_converter_do_set_encoding(UConverter **pcnv, INTERNAL_FUNCTION_P
|
|||
char *enc;
|
||||
size_t enc_len;
|
||||
|
||||
if (zend_parse_parameters(ZEND_NUM_ARGS(), "s", &enc, &enc_len) == FAILURE) {
|
||||
RETURN_THROWS();
|
||||
}
|
||||
ZEND_PARSE_PARAMETERS_START(1, 1)
|
||||
Z_PARAM_STRING(enc, enc_len)
|
||||
ZEND_PARSE_PARAMETERS_END();
|
||||
|
||||
intl_errors_reset(&objval->error);
|
||||
|
||||
RETURN_BOOL(php_converter_set_encoding(objval, pcnv, enc, enc_len));
|
||||
|
@ -430,9 +435,7 @@ PHP_METHOD(UConverter, setDestinationEncoding) {
|
|||
static void php_converter_do_get_encoding(php_converter_object *objval, UConverter *cnv, INTERNAL_FUNCTION_PARAMETERS) {
|
||||
const char *name;
|
||||
|
||||
if (zend_parse_parameters_none() == FAILURE) {
|
||||
RETURN_THROWS();
|
||||
}
|
||||
ZEND_PARSE_PARAMETERS_NONE();
|
||||
|
||||
intl_errors_reset(&objval->error);
|
||||
|
||||
|
@ -468,9 +471,7 @@ PHP_METHOD(UConverter, getDestinationEncoding) {
|
|||
static void php_converter_do_get_type(php_converter_object *objval, UConverter *cnv, INTERNAL_FUNCTION_PARAMETERS) {
|
||||
UConverterType t;
|
||||
|
||||
if (zend_parse_parameters_none() == FAILURE) {
|
||||
RETURN_THROWS();
|
||||
}
|
||||
ZEND_PARSE_PARAMETERS_NONE();
|
||||
intl_errors_reset(&objval->error);
|
||||
|
||||
if (!cnv) {
|
||||
|
@ -535,9 +536,11 @@ PHP_METHOD(UConverter, __construct) {
|
|||
|
||||
intl_error_reset(NULL);
|
||||
|
||||
if (zend_parse_parameters(ZEND_NUM_ARGS(), "|s!s!", &dest, &dest_len, &src, &src_len) == FAILURE) {
|
||||
RETURN_THROWS();
|
||||
}
|
||||
ZEND_PARSE_PARAMETERS_START(0, 2)
|
||||
Z_PARAM_OPTIONAL
|
||||
Z_PARAM_STRING_OR_NULL(dest, dest_len)
|
||||
Z_PARAM_STRING_OR_NULL(src, src_len)
|
||||
ZEND_PARSE_PARAMETERS_END();
|
||||
|
||||
php_converter_set_encoding(objval, &(objval->src), src, src_len );
|
||||
php_converter_set_encoding(objval, &(objval->dest), dest, dest_len);
|
||||
|
@ -553,9 +556,10 @@ PHP_METHOD(UConverter, setSubstChars) {
|
|||
size_t chars_len;
|
||||
int ret = 1;
|
||||
|
||||
if (zend_parse_parameters(ZEND_NUM_ARGS(), "s", &chars, &chars_len) == FAILURE) {
|
||||
RETURN_THROWS();
|
||||
}
|
||||
ZEND_PARSE_PARAMETERS_START(1, 1)
|
||||
Z_PARAM_STRING(chars, chars_len)
|
||||
ZEND_PARSE_PARAMETERS_END();
|
||||
|
||||
intl_errors_reset(&objval->error);
|
||||
|
||||
if (objval->src) {
|
||||
|
@ -593,9 +597,7 @@ PHP_METHOD(UConverter, getSubstChars) {
|
|||
int8_t chars_len = sizeof(chars);
|
||||
UErrorCode error = U_ZERO_ERROR;
|
||||
|
||||
if (zend_parse_parameters_none() == FAILURE) {
|
||||
RETURN_THROWS();
|
||||
}
|
||||
ZEND_PARSE_PARAMETERS_NONE();
|
||||
intl_errors_reset(&objval->error);
|
||||
|
||||
if (!objval->src) {
|
||||
|
@ -678,9 +680,9 @@ static zend_string* php_converter_do_convert(UConverter *dest_cnv,
|
|||
PHP_METHOD(UConverter, reasonText) {
|
||||
zend_long reason;
|
||||
|
||||
if (zend_parse_parameters(ZEND_NUM_ARGS(), "l", &reason) == FAILURE) {
|
||||
RETURN_THROWS();
|
||||
}
|
||||
ZEND_PARSE_PARAMETERS_START(1, 1)
|
||||
Z_PARAM_LONG(reason)
|
||||
ZEND_PARSE_PARAMETERS_END();
|
||||
intl_error_reset(NULL);
|
||||
|
||||
switch (reason) {
|
||||
|
@ -703,12 +705,13 @@ PHP_METHOD(UConverter, convert) {
|
|||
char *str;
|
||||
size_t str_len;
|
||||
zend_string *ret;
|
||||
bool reverse = 0;
|
||||
bool reverse = false;
|
||||
|
||||
if (zend_parse_parameters(ZEND_NUM_ARGS(), "s|b",
|
||||
&str, &str_len, &reverse) == FAILURE) {
|
||||
RETURN_THROWS();
|
||||
}
|
||||
ZEND_PARSE_PARAMETERS_START(1, 2)
|
||||
Z_PARAM_STRING(str, str_len)
|
||||
Z_PARAM_OPTIONAL
|
||||
Z_PARAM_BOOL(reverse)
|
||||
ZEND_PARSE_PARAMETERS_END();
|
||||
intl_errors_reset(&objval->error);
|
||||
|
||||
ret = php_converter_do_convert(reverse ? objval->src : objval->dest,
|
||||
|
@ -730,10 +733,13 @@ PHP_METHOD(UConverter, transcode) {
|
|||
zval *options = NULL;
|
||||
UConverter *src_cnv = NULL, *dest_cnv = NULL;
|
||||
|
||||
if (zend_parse_parameters(ZEND_NUM_ARGS(), "sss|a!",
|
||||
&str, &str_len, &dest, &dest_len, &src, &src_len, &options) == FAILURE) {
|
||||
RETURN_THROWS();
|
||||
}
|
||||
ZEND_PARSE_PARAMETERS_START(3, 4)
|
||||
Z_PARAM_STRING(str, str_len)
|
||||
Z_PARAM_STRING(dest, dest_len)
|
||||
Z_PARAM_STRING(src, src_len)
|
||||
Z_PARAM_OPTIONAL
|
||||
Z_PARAM_ARRAY_OR_NULL(options)
|
||||
ZEND_PARSE_PARAMETERS_END();
|
||||
intl_error_reset(NULL);
|
||||
|
||||
if (php_converter_set_encoding(NULL, &src_cnv, src, src_len) &&
|
||||
|
@ -784,9 +790,7 @@ PHP_METHOD(UConverter, transcode) {
|
|||
PHP_METHOD(UConverter, getErrorCode) {
|
||||
php_converter_object *objval = CONV_GET(ZEND_THIS);
|
||||
|
||||
if (zend_parse_parameters_none() == FAILURE) {
|
||||
RETURN_THROWS();
|
||||
}
|
||||
ZEND_PARSE_PARAMETERS_NONE();
|
||||
|
||||
RETURN_LONG(intl_error_get_code(&(objval->error)));
|
||||
}
|
||||
|
@ -796,9 +800,7 @@ PHP_METHOD(UConverter, getErrorCode) {
|
|||
PHP_METHOD(UConverter, getErrorMessage) {
|
||||
php_converter_object *objval = CONV_GET(ZEND_THIS);
|
||||
|
||||
if (zend_parse_parameters_none() == FAILURE) {
|
||||
RETURN_THROWS();
|
||||
}
|
||||
ZEND_PARSE_PARAMETERS_NONE();
|
||||
|
||||
zend_string *message = intl_error_get_message(&(objval->error));
|
||||
if (message) {
|
||||
|
@ -814,9 +816,8 @@ PHP_METHOD(UConverter, getAvailable) {
|
|||
int32_t i,
|
||||
count = ucnv_countAvailable();
|
||||
|
||||
if (zend_parse_parameters_none() == FAILURE) {
|
||||
RETURN_THROWS();
|
||||
}
|
||||
ZEND_PARSE_PARAMETERS_NONE();
|
||||
|
||||
intl_error_reset(NULL);
|
||||
|
||||
array_init(return_value);
|
||||
|
@ -834,9 +835,9 @@ PHP_METHOD(UConverter, getAliases) {
|
|||
UErrorCode error = U_ZERO_ERROR;
|
||||
uint16_t i, count;
|
||||
|
||||
if (zend_parse_parameters(ZEND_NUM_ARGS(), "s", &name, &name_len) == FAILURE) {
|
||||
RETURN_THROWS();
|
||||
}
|
||||
ZEND_PARSE_PARAMETERS_START(1, 1)
|
||||
Z_PARAM_STRING(name, name_len)
|
||||
ZEND_PARSE_PARAMETERS_END();
|
||||
intl_error_reset(NULL);
|
||||
|
||||
count = ucnv_countAliases(name, &error);
|
||||
|
@ -865,9 +866,7 @@ PHP_METHOD(UConverter, getAliases) {
|
|||
PHP_METHOD(UConverter, getStandards) {
|
||||
uint16_t i, count;
|
||||
|
||||
if (zend_parse_parameters_none() == FAILURE) {
|
||||
RETURN_THROWS();
|
||||
}
|
||||
ZEND_PARSE_PARAMETERS_NONE();
|
||||
intl_error_reset(NULL);
|
||||
|
||||
array_init(return_value);
|
||||
|
|
|
@ -26,7 +26,7 @@
|
|||
/* {{{ */
|
||||
static int numfmt_ctor(INTERNAL_FUNCTION_PARAMETERS, zend_error_handling *error_handling, bool *error_handling_replaced)
|
||||
{
|
||||
const char* locale;
|
||||
char* locale;
|
||||
char* pattern = NULL;
|
||||
size_t locale_len = 0, pattern_len = 0;
|
||||
zend_long style;
|
||||
|
@ -34,12 +34,12 @@ static int numfmt_ctor(INTERNAL_FUNCTION_PARAMETERS, zend_error_handling *error_
|
|||
int32_t spattern_len = 0;
|
||||
FORMATTER_METHOD_INIT_VARS;
|
||||
|
||||
/* Parse parameters. */
|
||||
if( zend_parse_parameters( ZEND_NUM_ARGS(), "sl|s!",
|
||||
&locale, &locale_len, &style, &pattern, &pattern_len ) == FAILURE )
|
||||
{
|
||||
return FAILURE;
|
||||
}
|
||||
ZEND_PARSE_PARAMETERS_START(2, 3)
|
||||
Z_PARAM_STRING(locale, locale_len)
|
||||
Z_PARAM_LONG(style)
|
||||
Z_PARAM_OPTIONAL
|
||||
Z_PARAM_STRING_OR_NULL(pattern, pattern_len)
|
||||
ZEND_PARSE_PARAMETERS_END_EX(return FAILURE);
|
||||
|
||||
if (error_handling != NULL) {
|
||||
zend_replace_error_handling(EH_THROW, IntlException_ce_ptr, error_handling);
|
||||
|
@ -61,7 +61,7 @@ static int numfmt_ctor(INTERNAL_FUNCTION_PARAMETERS, zend_error_handling *error_
|
|||
}
|
||||
|
||||
if(locale_len == 0) {
|
||||
locale = intl_locale_get_default();
|
||||
locale = (char *)intl_locale_get_default();
|
||||
}
|
||||
|
||||
if (strlen(uloc_getISO3Language(locale)) == 0) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue