Skip to content

Commit a69c109

Browse files
committed
ext/intl converter and formatter using fast ZPP
1 parent 4fca8a6 commit a69c109

File tree

2 files changed

+61
-62
lines changed

2 files changed

+61
-62
lines changed

ext/intl/converter/converter.c

Lines changed: 53 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -109,10 +109,12 @@ PHP_METHOD(UConverter, toUCallback) {
109109
zend_string *source, *codeUnits;
110110
zval *error;
111111

112-
if (zend_parse_parameters(ZEND_NUM_ARGS(), "lSSz",
113-
&reason, &source, &codeUnits, &error) == FAILURE) {
114-
RETURN_THROWS();
115-
}
112+
ZEND_PARSE_PARAMETERS_START(4, 4)
113+
Z_PARAM_LONG(reason)
114+
Z_PARAM_STR(source)
115+
Z_PARAM_STR(codeUnits)
116+
Z_PARAM_ZVAL(error)
117+
ZEND_PARSE_PARAMETERS_END();
116118

117119
php_converter_default_callback(return_value, ZEND_THIS, reason, error);
118120
}
@@ -124,10 +126,12 @@ PHP_METHOD(UConverter, fromUCallback) {
124126
zval *source, *error;
125127
zend_long codePoint;
126128

127-
if (zend_parse_parameters(ZEND_NUM_ARGS(), "lalz",
128-
&reason, &source, &codePoint, &error) == FAILURE) {
129-
RETURN_THROWS();
130-
}
129+
ZEND_PARSE_PARAMETERS_START(4, 4)
130+
Z_PARAM_LONG(reason)
131+
Z_PARAM_ARRAY(source)
132+
Z_PARAM_LONG(codePoint)
133+
Z_PARAM_ZVAL(error)
134+
ZEND_PARSE_PARAMETERS_END();
131135

132136
php_converter_default_callback(return_value, ZEND_THIS, reason, error);
133137
}
@@ -333,7 +337,7 @@ static void php_converter_from_u_callback(const void *context,
333337

334338
/* {{{ php_converter_set_callbacks */
335339
static inline bool php_converter_set_callbacks(php_converter_object *objval, UConverter *cnv) {
336-
bool ret = 1;
340+
bool ret = true;
337341
UErrorCode error = U_ZERO_ERROR;
338342

339343
if (objval->obj.ce == php_converter_ce) {
@@ -403,9 +407,10 @@ static void php_converter_do_set_encoding(UConverter **pcnv, INTERNAL_FUNCTION_P
403407
char *enc;
404408
size_t enc_len;
405409

406-
if (zend_parse_parameters(ZEND_NUM_ARGS(), "s", &enc, &enc_len) == FAILURE) {
407-
RETURN_THROWS();
408-
}
410+
ZEND_PARSE_PARAMETERS_START(1, 1)
411+
Z_PARAM_STRING(enc, enc_len)
412+
ZEND_PARSE_PARAMETERS_END();
413+
409414
intl_errors_reset(&objval->error);
410415

411416
RETURN_BOOL(php_converter_set_encoding(objval, pcnv, enc, enc_len));
@@ -430,9 +435,7 @@ PHP_METHOD(UConverter, setDestinationEncoding) {
430435
static void php_converter_do_get_encoding(php_converter_object *objval, UConverter *cnv, INTERNAL_FUNCTION_PARAMETERS) {
431436
const char *name;
432437

433-
if (zend_parse_parameters_none() == FAILURE) {
434-
RETURN_THROWS();
435-
}
438+
ZEND_PARSE_PARAMETERS_NONE();
436439

437440
intl_errors_reset(&objval->error);
438441

@@ -468,9 +471,7 @@ PHP_METHOD(UConverter, getDestinationEncoding) {
468471
static void php_converter_do_get_type(php_converter_object *objval, UConverter *cnv, INTERNAL_FUNCTION_PARAMETERS) {
469472
UConverterType t;
470473

471-
if (zend_parse_parameters_none() == FAILURE) {
472-
RETURN_THROWS();
473-
}
474+
ZEND_PARSE_PARAMETERS_NONE();
474475
intl_errors_reset(&objval->error);
475476

476477
if (!cnv) {
@@ -535,9 +536,11 @@ PHP_METHOD(UConverter, __construct) {
535536

536537
intl_error_reset(NULL);
537538

538-
if (zend_parse_parameters(ZEND_NUM_ARGS(), "|s!s!", &dest, &dest_len, &src, &src_len) == FAILURE) {
539-
RETURN_THROWS();
540-
}
539+
ZEND_PARSE_PARAMETERS_START(0, 2)
540+
Z_PARAM_OPTIONAL
541+
Z_PARAM_STRING_OR_NULL(dest, dest_len)
542+
Z_PARAM_STRING_OR_NULL(src, src_len)
543+
ZEND_PARSE_PARAMETERS_END();
541544

542545
php_converter_set_encoding(objval, &(objval->src), src, src_len );
543546
php_converter_set_encoding(objval, &(objval->dest), dest, dest_len);
@@ -553,9 +556,10 @@ PHP_METHOD(UConverter, setSubstChars) {
553556
size_t chars_len;
554557
int ret = 1;
555558

556-
if (zend_parse_parameters(ZEND_NUM_ARGS(), "s", &chars, &chars_len) == FAILURE) {
557-
RETURN_THROWS();
558-
}
559+
ZEND_PARSE_PARAMETERS_START(1, 1)
560+
Z_PARAM_STRING(chars, chars_len)
561+
ZEND_PARSE_PARAMETERS_END();
562+
559563
intl_errors_reset(&objval->error);
560564

561565
if (objval->src) {
@@ -593,9 +597,7 @@ PHP_METHOD(UConverter, getSubstChars) {
593597
int8_t chars_len = sizeof(chars);
594598
UErrorCode error = U_ZERO_ERROR;
595599

596-
if (zend_parse_parameters_none() == FAILURE) {
597-
RETURN_THROWS();
598-
}
600+
ZEND_PARSE_PARAMETERS_NONE();
599601
intl_errors_reset(&objval->error);
600602

601603
if (!objval->src) {
@@ -678,9 +680,9 @@ static zend_string* php_converter_do_convert(UConverter *dest_cnv,
678680
PHP_METHOD(UConverter, reasonText) {
679681
zend_long reason;
680682

681-
if (zend_parse_parameters(ZEND_NUM_ARGS(), "l", &reason) == FAILURE) {
682-
RETURN_THROWS();
683-
}
683+
ZEND_PARSE_PARAMETERS_START(1, 1)
684+
Z_PARAM_LONG(reason)
685+
ZEND_PARSE_PARAMETERS_END();
684686
intl_error_reset(NULL);
685687

686688
switch (reason) {
@@ -703,12 +705,13 @@ PHP_METHOD(UConverter, convert) {
703705
char *str;
704706
size_t str_len;
705707
zend_string *ret;
706-
bool reverse = 0;
708+
bool reverse = false;
707709

708-
if (zend_parse_parameters(ZEND_NUM_ARGS(), "s|b",
709-
&str, &str_len, &reverse) == FAILURE) {
710-
RETURN_THROWS();
711-
}
710+
ZEND_PARSE_PARAMETERS_START(1, 2)
711+
Z_PARAM_STRING(str, str_len)
712+
Z_PARAM_OPTIONAL
713+
Z_PARAM_BOOL(reverse)
714+
ZEND_PARSE_PARAMETERS_END();
712715
intl_errors_reset(&objval->error);
713716

714717
ret = php_converter_do_convert(reverse ? objval->src : objval->dest,
@@ -730,10 +733,13 @@ PHP_METHOD(UConverter, transcode) {
730733
zval *options = NULL;
731734
UConverter *src_cnv = NULL, *dest_cnv = NULL;
732735

733-
if (zend_parse_parameters(ZEND_NUM_ARGS(), "sss|a!",
734-
&str, &str_len, &dest, &dest_len, &src, &src_len, &options) == FAILURE) {
735-
RETURN_THROWS();
736-
}
736+
ZEND_PARSE_PARAMETERS_START(3, 4)
737+
Z_PARAM_STRING(str, str_len)
738+
Z_PARAM_STRING(dest, dest_len)
739+
Z_PARAM_STRING(src, src_len)
740+
Z_PARAM_OPTIONAL
741+
Z_PARAM_ARRAY_OR_NULL(options)
742+
ZEND_PARSE_PARAMETERS_END();
737743
intl_error_reset(NULL);
738744

739745
if (php_converter_set_encoding(NULL, &src_cnv, src, src_len) &&
@@ -784,9 +790,7 @@ PHP_METHOD(UConverter, transcode) {
784790
PHP_METHOD(UConverter, getErrorCode) {
785791
php_converter_object *objval = CONV_GET(ZEND_THIS);
786792

787-
if (zend_parse_parameters_none() == FAILURE) {
788-
RETURN_THROWS();
789-
}
793+
ZEND_PARSE_PARAMETERS_NONE();
790794

791795
RETURN_LONG(intl_error_get_code(&(objval->error)));
792796
}
@@ -796,9 +800,7 @@ PHP_METHOD(UConverter, getErrorCode) {
796800
PHP_METHOD(UConverter, getErrorMessage) {
797801
php_converter_object *objval = CONV_GET(ZEND_THIS);
798802

799-
if (zend_parse_parameters_none() == FAILURE) {
800-
RETURN_THROWS();
801-
}
803+
ZEND_PARSE_PARAMETERS_NONE();
802804

803805
zend_string *message = intl_error_get_message(&(objval->error));
804806
if (message) {
@@ -814,9 +816,8 @@ PHP_METHOD(UConverter, getAvailable) {
814816
int32_t i,
815817
count = ucnv_countAvailable();
816818

817-
if (zend_parse_parameters_none() == FAILURE) {
818-
RETURN_THROWS();
819-
}
819+
ZEND_PARSE_PARAMETERS_NONE();
820+
820821
intl_error_reset(NULL);
821822

822823
array_init(return_value);
@@ -834,9 +835,9 @@ PHP_METHOD(UConverter, getAliases) {
834835
UErrorCode error = U_ZERO_ERROR;
835836
uint16_t i, count;
836837

837-
if (zend_parse_parameters(ZEND_NUM_ARGS(), "s", &name, &name_len) == FAILURE) {
838-
RETURN_THROWS();
839-
}
838+
ZEND_PARSE_PARAMETERS_START(1, 1)
839+
Z_PARAM_STRING(name, name_len)
840+
ZEND_PARSE_PARAMETERS_END();
840841
intl_error_reset(NULL);
841842

842843
count = ucnv_countAliases(name, &error);
@@ -865,9 +866,7 @@ PHP_METHOD(UConverter, getAliases) {
865866
PHP_METHOD(UConverter, getStandards) {
866867
uint16_t i, count;
867868

868-
if (zend_parse_parameters_none() == FAILURE) {
869-
RETURN_THROWS();
870-
}
869+
ZEND_PARSE_PARAMETERS_NONE();
871870
intl_error_reset(NULL);
872871

873872
array_init(return_value);

ext/intl/formatter/formatter_main.c

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,20 +26,20 @@
2626
/* {{{ */
2727
static int numfmt_ctor(INTERNAL_FUNCTION_PARAMETERS, zend_error_handling *error_handling, bool *error_handling_replaced)
2828
{
29-
const char* locale;
29+
char* locale;
3030
char* pattern = NULL;
3131
size_t locale_len = 0, pattern_len = 0;
3232
zend_long style;
3333
UChar* spattern = NULL;
3434
int32_t spattern_len = 0;
3535
FORMATTER_METHOD_INIT_VARS;
3636

37-
/* Parse parameters. */
38-
if( zend_parse_parameters( ZEND_NUM_ARGS(), "sl|s!",
39-
&locale, &locale_len, &style, &pattern, &pattern_len ) == FAILURE )
40-
{
41-
return FAILURE;
42-
}
37+
ZEND_PARSE_PARAMETERS_START(2, 3)
38+
Z_PARAM_STRING(locale, locale_len)
39+
Z_PARAM_LONG(style)
40+
Z_PARAM_OPTIONAL
41+
Z_PARAM_STRING_OR_NULL(pattern, pattern_len)
42+
ZEND_PARSE_PARAMETERS_END_EX(return FAILURE);
4343

4444
if (error_handling != NULL) {
4545
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_
6161
}
6262

6363
if(locale_len == 0) {
64-
locale = intl_locale_get_default();
64+
locale = (char *)intl_locale_get_default();
6565
}
6666

6767
if (strlen(uloc_getISO3Language(locale)) == 0) {

0 commit comments

Comments
 (0)