diff options
| author | Stanislav Malyshev <stas@php.net> | 2008-07-22 20:23:47 +0000 |
|---|---|---|
| committer | Stanislav Malyshev <stas@php.net> | 2008-07-22 20:23:47 +0000 |
| commit | d54c396dcaaa220f620463ce750cd9180830b179 (patch) | |
| tree | c481a1a58250776ce01a582b5acc7002c79c7d23 /ext/intl/collator | |
| parent | 1fb3313f7584b8554f774d8351a0e283fe814ade (diff) | |
| download | php-git-d54c396dcaaa220f620463ce750cd9180830b179.tar.gz | |
refactor ctors, cleanup code
Diffstat (limited to 'ext/intl/collator')
| -rwxr-xr-x | ext/intl/collator/collator_class.h | 5 | ||||
| -rwxr-xr-x | ext/intl/collator/collator_create.c | 80 |
2 files changed, 18 insertions, 67 deletions
diff --git a/ext/intl/collator/collator_class.h b/ext/intl/collator/collator_class.h index 8d4c9d97f4..835abd66c8 100755 --- a/ext/intl/collator/collator_class.h +++ b/ext/intl/collator/collator_class.h @@ -28,12 +28,11 @@ typedef struct { zend_object zo; - // ICU collator - UCollator* ucoll; - // error handling intl_error err; + // ICU collator + UCollator* ucoll; } Collator_object; #define COLLATOR_ERROR(co) (co)->err diff --git a/ext/intl/collator/collator_create.c b/ext/intl/collator/collator_create.c index 6fbb3da8b3..404887b383 100755 --- a/ext/intl/collator/collator_create.c +++ b/ext/intl/collator/collator_create.c @@ -24,10 +24,8 @@ #include "collator_create.h" #include "intl_data.h" -/* {{{ proto Collator collator_create( string $locale ) - * Create collator. - */ -PHP_FUNCTION( collator_create ) +/* {{{ */ +static void collator_ctor(INTERNAL_FUNCTION_PARAMETERS) { char* locale; int locale_len = 0; @@ -35,44 +33,37 @@ PHP_FUNCTION( collator_create ) Collator_object* co; intl_error_reset( NULL TSRMLS_CC ); - + object = return_value; // Parse parameters. if( zend_parse_parameters( ZEND_NUM_ARGS() TSRMLS_CC, "s", &locale, &locale_len ) == FAILURE ) { intl_error_set( NULL, U_ILLEGAL_ARGUMENT_ERROR, "collator_create: unable to parse input params", 0 TSRMLS_CC ); - + zval_dtor(return_value); RETURN_NULL(); } INTL_CHECK_LOCALE_LEN(locale_len); - // Create a Collator object and save the ICU collator into it. - if( ( object = getThis() ) == NULL ) - object = return_value; - - if( Z_TYPE_P( object ) != IS_OBJECT ) - object_init_ex( object, Collator_ce_ptr ); - co = (Collator_object *) zend_object_store_get_object( object TSRMLS_CC ); - intl_error_reset( COLLATOR_ERROR_P( co ) TSRMLS_CC ); - if(locale_len == 0) { locale = INTL_G(default_locale); } // Open ICU collator. co->ucoll = ucol_open( locale, COLLATOR_ERROR_CODE_P( co ) ); + INTL_CTOR_CHECK_STATUS(co, "collator_create: unable to open ICU collator"); +} +/* }}} */ - if( U_FAILURE( COLLATOR_ERROR_CODE( co ) ) || co->ucoll == NULL ) - { - intl_error_set( NULL, COLLATOR_ERROR_CODE( co ), - "collator_create: unable to open ICU collator", 0 TSRMLS_CC ); - - // Collator creation failed. - RETURN_NULL(); - } +/* {{{ proto Collator collator_create( string $locale ) + * Create collator. + */ +PHP_FUNCTION( collator_create ) +{ + object_init_ex( return_value, Collator_ce_ptr ); + collator_ctor(INTERNAL_FUNCTION_PARAM_PASSTHRU); } /* }}} */ @@ -81,47 +72,8 @@ PHP_FUNCTION( collator_create ) */ PHP_METHOD( Collator, __construct ) { - char* locale = NULL; - int locale_len = 0; - - COLLATOR_METHOD_INIT_VARS - - object = getThis(); - // Parse parameters. - if( zend_parse_parameters( ZEND_NUM_ARGS() TSRMLS_CC, "s", - &locale, &locale_len ) == FAILURE ) - { - intl_error_set( NULL, U_ILLEGAL_ARGUMENT_ERROR, - "__construct: unable to parse input params", 0 TSRMLS_CC ); - - zval_dtor(object); - ZVAL_NULL(object); - RETURN_NULL(); - } - - INTL_CHECK_LOCALE_LEN_OBJ(locale_len, object); - /* Fetch the object. */ - co = (Collator_object*) zend_object_store_get_object( object TSRMLS_CC ); - - intl_error_reset( COLLATOR_ERROR_P( co ) TSRMLS_CC ); - - if(locale_len == 0) { - locale = INTL_G(default_locale); - } - - // Open ICU collator. - co->ucoll = ucol_open( locale, COLLATOR_ERROR_CODE_P( co ) ); - - if( U_FAILURE( COLLATOR_ERROR_CODE( co ) ) || co->ucoll == NULL ) - { - intl_error_set( NULL, COLLATOR_ERROR_CODE( co ), - "__construct: unable to open ICU collator", 0 TSRMLS_CC ); - - zval_dtor(object); - ZVAL_NULL(object); - RETURN_NULL(); - } - + return_value = getThis(); + collator_ctor(INTERNAL_FUNCTION_PARAM_PASSTHRU); } /* }}} */ |
