Back to index

php5  5.3.10
Functions
msgformat.c File Reference
#include <unicode/ustring.h>
#include <unicode/umsg.h>
#include "php_intl.h"
#include "msgformat_class.h"
#include "intl_convert.h"

Go to the source code of this file.

Functions

static void msgfmt_ctor (INTERNAL_FUNCTION_PARAMETERS)
 PHP_FUNCTION (msgfmt_create)
 PHP_METHOD (MessageFormatter, __construct)
 PHP_FUNCTION (msgfmt_get_error_code)
 PHP_FUNCTION (msgfmt_get_error_message)

Function Documentation

static void msgfmt_ctor ( INTERNAL_FUNCTION_PARAMETERS  ) [static]

Definition at line 29 of file msgformat.c.

{
       char*       locale;
       char*       pattern;
       int         locale_len = 0, pattern_len = 0;
       UChar*      spattern     = NULL;
       int         spattern_len = 0;
       zval*       object;
       MessageFormatter_object* mfo;
       intl_error_reset( NULL TSRMLS_CC );

       object = return_value;
       /* Parse parameters. */
       if( zend_parse_parameters( ZEND_NUM_ARGS() TSRMLS_CC, "ss",
              &locale, &locale_len, &pattern, &pattern_len ) == FAILURE )
       {
              intl_error_set( NULL, U_ILLEGAL_ARGUMENT_ERROR,
                     "msgfmt_create: unable to parse input parameters", 0 TSRMLS_CC );
              zval_dtor(return_value);
              RETURN_NULL();
       }

       INTL_CHECK_LOCALE_LEN_OBJ(locale_len, return_value);
       MSG_FORMAT_METHOD_FETCH_OBJECT;

       /* Convert pattern (if specified) to UTF-16. */
       if(pattern && pattern_len) {
              intl_convert_utf8_to_utf16(&spattern, &spattern_len, pattern, pattern_len, &INTL_DATA_ERROR_CODE(mfo));
              INTL_CTOR_CHECK_STATUS(mfo, "msgfmt_create: error converting pattern to UTF-16");
       } else {
              spattern_len = 0;
              spattern = NULL;
       }

       if(locale_len == 0) {
              locale = INTL_G(default_locale);
       }

       if(msgformat_fix_quotes(&spattern, &spattern_len, &INTL_DATA_ERROR_CODE(mfo)) != SUCCESS) {
              INTL_CTOR_CHECK_STATUS(mfo, "msgfmt_create: error converting pattern to quote-friendly format");
       }

       (mfo)->mf_data.orig_format = estrndup(pattern, pattern_len);
       (mfo)->mf_data.orig_format_len = pattern_len;
       
       /* Create an ICU message formatter. */
       MSG_FORMAT_OBJECT(mfo) = umsg_open(spattern, spattern_len, locale, NULL, &INTL_DATA_ERROR_CODE(mfo));

       if(spattern) {
              efree(spattern);
       }

       INTL_CTOR_CHECK_STATUS(mfo, "msgfmt_create: message formatter creation failed");
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 90 of file msgformat.c.

Here is the call graph for this function:

Definition at line 112 of file msgformat.c.

{
       zval*                    object  = NULL;
       MessageFormatter_object*  mfo     = NULL;

       /* Parse parameters. */
       if( zend_parse_method_parameters( ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O",
              &object, MessageFormatter_ce_ptr ) == FAILURE )
       {
              intl_error_set( NULL, U_ILLEGAL_ARGUMENT_ERROR,
                     "msgfmt_get_error_code: unable to parse input params", 0 TSRMLS_CC );

              RETURN_FALSE;
       }

       mfo = (MessageFormatter_object *) zend_object_store_get_object( object TSRMLS_CC );

       /* Return formatter's last error code. */
       RETURN_LONG( INTL_DATA_ERROR_CODE(mfo) );
}

Here is the call graph for this function:

Definition at line 139 of file msgformat.c.

{
       char*                    message = NULL;
       zval*                    object  = NULL;
       MessageFormatter_object*  mfo     = NULL;

       /* Parse parameters. */
       if( zend_parse_method_parameters( ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O",
              &object, MessageFormatter_ce_ptr ) == FAILURE )
       {
              intl_error_set( NULL, U_ILLEGAL_ARGUMENT_ERROR,
                     "msgfmt_get_error_message: unable to parse input params", 0 TSRMLS_CC );

              RETURN_FALSE;
       }

       mfo = (MessageFormatter_object *) zend_object_store_get_object( object TSRMLS_CC );

       /* Return last error message. */
       message = intl_error_get_message( &mfo->mf_data.error TSRMLS_CC );
       RETURN_STRING( message, 0);
}

Here is the call graph for this function:

PHP_METHOD ( MessageFormatter  ,
__construct   
)

Definition at line 100 of file msgformat.c.

Here is the call graph for this function: