PHP  
 PHP: Test and Code Coverage Analysis
downloads | QA | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | my php.net 
 

LCOV - code coverage report
Current view: top level - ext/intl/dateformat - dateformat_attr.c (source / functions) Hit Total Coverage
Test: PHP Code Coverage Lines: 72 79 91.1 %
Date: 2014-08-04 Functions: 7 7 100.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /*
       2             :    +----------------------------------------------------------------------+
       3             :    | PHP Version 5                                                        |
       4             :    +----------------------------------------------------------------------+
       5             :    | This source file is subject to version 3.01 of the PHP license,      |
       6             :    | that is bundled with this package in the file LICENSE, and is        |
       7             :    | available through the world-wide-web at the following url:           |
       8             :    | http://www.php.net/license/3_01.txt                                  |
       9             :    | If you did not receive a copy of the PHP license and are unable to   |
      10             :    | obtain it through the world-wide-web, please send a note to          |
      11             :    | license@php.net so we can mail you a copy immediately.               |
      12             :    +----------------------------------------------------------------------+
      13             :    | Authors: Kirti Velankar <kirtig@yahoo-inc.com>                       |
      14             :    +----------------------------------------------------------------------+
      15             : */
      16             : #ifdef HAVE_CONFIG_H
      17             : #include "config.h"
      18             : #endif
      19             : 
      20             : #include "../php_intl.h"
      21             : #include "dateformat_class.h"
      22             : #include "../intl_convert.h"
      23             : #include "dateformat_class.h"
      24             : #include "dateformat_attr.h"
      25             : 
      26             : #include <unicode/ustring.h>
      27             : #include <unicode/udat.h>
      28             : 
      29             : /* {{{ proto unicode IntlDateFormatter::getDateType( )
      30             :  * Get formatter datetype. }}} */
      31             : /* {{{ proto string datefmt_get_datetype( IntlDateFormatter $mf )
      32             :  * Get formatter datetype.
      33             :  */
      34          11 : PHP_FUNCTION( datefmt_get_datetype )
      35             : {
      36          11 :         DATE_FORMAT_METHOD_INIT_VARS;
      37             : 
      38             :         /* Parse parameters. */
      39          11 :         if( zend_parse_method_parameters( ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &object, IntlDateFormatter_ce_ptr ) == FAILURE )
      40             :         {
      41           1 :                 intl_error_set( NULL, U_ILLEGAL_ARGUMENT_ERROR, 
      42             :                         "datefmt_get_datetype: unable to parse input params", 0 TSRMLS_CC );
      43           1 :                 RETURN_FALSE;
      44             :         }
      45             : 
      46             :         /* Fetch the object. */
      47          10 :         DATE_FORMAT_METHOD_FETCH_OBJECT;
      48             : 
      49          10 :         INTL_METHOD_CHECK_STATUS(dfo, "Error getting formatter datetype." );
      50             : 
      51          10 :         RETURN_LONG(dfo->date_type );
      52             : }
      53             : /* }}} */
      54             : 
      55             : /* {{{ proto unicode IntlDateFormatter::getTimeType( )
      56             :  * Get formatter timetype. }}} */
      57             : /* {{{ proto string datefmt_get_timetype( IntlDateFormatter $mf )
      58             :  * Get formatter timetype.
      59             :  */
      60          11 : PHP_FUNCTION( datefmt_get_timetype )
      61             : {
      62          11 :         DATE_FORMAT_METHOD_INIT_VARS;
      63             : 
      64             :         /* Parse parameters. */
      65          11 :         if( zend_parse_method_parameters( ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &object, IntlDateFormatter_ce_ptr ) == FAILURE )
      66             :         {
      67           1 :                 intl_error_set( NULL, U_ILLEGAL_ARGUMENT_ERROR, 
      68             :                         "datefmt_get_timetype: unable to parse input params", 0 TSRMLS_CC );
      69           1 :                 RETURN_FALSE;
      70             :         }
      71             : 
      72             :         /* Fetch the object. */
      73          10 :         DATE_FORMAT_METHOD_FETCH_OBJECT;
      74             : 
      75          10 :         INTL_METHOD_CHECK_STATUS(dfo, "Error getting formatter timetype." );
      76             : 
      77          10 :         RETURN_LONG(dfo->time_type );
      78             : }
      79             : /* }}} */
      80             : 
      81             : /* {{{ proto string IntlDateFormatter::getPattern( )
      82             :  * Get formatter pattern. }}} */
      83             : /* {{{ proto string datefmt_get_pattern( IntlDateFormatter $mf )
      84             :  * Get formatter pattern.
      85             :  */
      86          11 : PHP_FUNCTION( datefmt_get_pattern )
      87             : {
      88             :         UChar  value_buf[64];
      89          11 :         int    length = USIZE( value_buf );
      90          11 :         UChar* value  = value_buf;
      91          11 :         zend_bool   is_pattern_localized =FALSE;
      92             : 
      93          11 :         DATE_FORMAT_METHOD_INIT_VARS;
      94             : 
      95             :         /* Parse parameters. */
      96          11 :         if( zend_parse_method_parameters( ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &object, IntlDateFormatter_ce_ptr ) == FAILURE )
      97             :         {
      98           1 :                 intl_error_set( NULL, U_ILLEGAL_ARGUMENT_ERROR, 
      99             :                         "datefmt_get_pattern: unable to parse input params", 0 TSRMLS_CC );
     100           1 :                 RETURN_FALSE;
     101             :         }
     102             : 
     103             :         /* Fetch the object. */
     104          10 :         DATE_FORMAT_METHOD_FETCH_OBJECT;
     105             : 
     106          10 :         length = udat_toPattern(DATE_FORMAT_OBJECT(dfo), is_pattern_localized, value, length, &INTL_DATA_ERROR_CODE(dfo));
     107          10 :         if(INTL_DATA_ERROR_CODE(dfo) == U_BUFFER_OVERFLOW_ERROR && length >= USIZE( value_buf )) {
     108           0 :                 ++length; /* to avoid U_STRING_NOT_TERMINATED_WARNING */
     109           0 :                 INTL_DATA_ERROR_CODE(dfo) = U_ZERO_ERROR;
     110           0 :                 value = eumalloc(length);
     111           0 :                 length = udat_toPattern(DATE_FORMAT_OBJECT(dfo), is_pattern_localized, value, length, &INTL_DATA_ERROR_CODE(dfo) );
     112           0 :                 if(U_FAILURE(INTL_DATA_ERROR_CODE(dfo))) {
     113           0 :                         efree(value);
     114           0 :                         value = value_buf;
     115             :                 }
     116             :         }
     117          10 :         INTL_METHOD_CHECK_STATUS(dfo, "Error getting formatter pattern" );
     118             : 
     119          10 :         INTL_METHOD_RETVAL_UTF8( dfo, value, length, ( value != value_buf ) );
     120             : }
     121             : /* }}} */
     122             : 
     123             : /* {{{ proto bool IntlDateFormatter::setPattern( string $pattern )
     124             :  * Set formatter pattern. }}} */
     125             : /* {{{ proto bool datefmt_set_pattern( IntlDateFormatter $mf, string $pattern )
     126             :  * Set formatter pattern.
     127             :  */
     128          10 : PHP_FUNCTION( datefmt_set_pattern )
     129             : {
     130          10 :         char*       value = NULL;
     131          10 :         int         value_len = 0;
     132          10 :         int         slength = 0;
     133          10 :         UChar*      svalue  = NULL;
     134          10 :         zend_bool   is_pattern_localized =FALSE;
     135             : 
     136             : 
     137          10 :         DATE_FORMAT_METHOD_INIT_VARS;
     138             : 
     139             :         /* Parse parameters. */
     140          10 :         if( zend_parse_method_parameters( ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os",
     141             :                 &object, IntlDateFormatter_ce_ptr,  &value, &value_len ) == FAILURE )
     142             :         {
     143           1 :                 intl_error_set(NULL, U_ILLEGAL_ARGUMENT_ERROR,  
     144             :                         "datefmt_set_pattern: unable to parse input params", 0 TSRMLS_CC);
     145           1 :                 RETURN_FALSE;
     146             :         }
     147             : 
     148           9 :         DATE_FORMAT_METHOD_FETCH_OBJECT;
     149             : 
     150             :         /* Convert given pattern to UTF-16. */
     151           9 :         intl_convert_utf8_to_utf16(&svalue, &slength, value, value_len, &INTL_DATA_ERROR_CODE(dfo));
     152           9 :         INTL_METHOD_CHECK_STATUS(dfo, "Error converting pattern to UTF-16" );
     153             : 
     154           9 :         udat_applyPattern(DATE_FORMAT_OBJECT(dfo), (UBool)is_pattern_localized, svalue, slength);
     155             : 
     156           9 :         if (svalue) {
     157           9 :                 efree(svalue);
     158             :         }
     159           9 :         INTL_METHOD_CHECK_STATUS(dfo, "Error setting symbol value");
     160             : 
     161           9 :         RETURN_TRUE;
     162             : }
     163             : /* }}} */
     164             : 
     165             : /* {{{ proto string IntlDateFormatter::getLocale()
     166             :  * Get formatter locale. }}} */
     167             : /* {{{ proto string datefmt_get_locale(IntlDateFormatter $mf)
     168             :  * Get formatter locale.
     169             :  */
     170          15 : PHP_FUNCTION( datefmt_get_locale )
     171             : {
     172             :         char *loc;
     173          15 :         long  loc_type =ULOC_ACTUAL_LOCALE;
     174             : 
     175          15 :         DATE_FORMAT_METHOD_INIT_VARS;
     176             : 
     177             :         /* Parse parameters. */
     178          15 :         if( zend_parse_method_parameters( ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O|l",
     179             :                 &object, IntlDateFormatter_ce_ptr,&loc_type) == FAILURE )
     180             :         {
     181           1 :                 intl_error_set( NULL, U_ILLEGAL_ARGUMENT_ERROR,
     182             :                         "datefmt_get_locale: unable to parse input params", 0 TSRMLS_CC );
     183             : 
     184           1 :                 RETURN_FALSE;
     185             :         }
     186             : 
     187             :         /* Fetch the object. */
     188          14 :         DATE_FORMAT_METHOD_FETCH_OBJECT;
     189             : 
     190          14 :         loc = (char *)udat_getLocaleByType(DATE_FORMAT_OBJECT(dfo), loc_type,&INTL_DATA_ERROR_CODE(dfo));
     191          14 :         INTL_METHOD_CHECK_STATUS(dfo, "Error getting locale");
     192           8 :         RETURN_STRING(loc, 1);
     193             : }
     194             : /* }}} */
     195             : 
     196             : /* {{{ proto string IntlDateFormatter::isLenient()
     197             :  * Get formatter isLenient. }}} */
     198             : /* {{{ proto string datefmt_isLenient(IntlDateFormatter $mf)
     199             :  * Get formatter locale.
     200             :  */
     201           7 : PHP_FUNCTION( datefmt_is_lenient )
     202             : {
     203             :         
     204           7 :         DATE_FORMAT_METHOD_INIT_VARS;
     205             : 
     206             :         /* Parse parameters. */
     207           7 :         if( zend_parse_method_parameters( ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O",
     208             :                 &object, IntlDateFormatter_ce_ptr ) == FAILURE )
     209             :         {
     210           1 :                 intl_error_set( NULL, U_ILLEGAL_ARGUMENT_ERROR,
     211             :                         "datefmt_is_lenient: unable to parse input params", 0 TSRMLS_CC );
     212             : 
     213           1 :                 RETURN_FALSE;
     214             :         }
     215             : 
     216             :         /* Fetch the object. */
     217           6 :         DATE_FORMAT_METHOD_FETCH_OBJECT;
     218             : 
     219           6 :         RETVAL_BOOL(udat_isLenient(DATE_FORMAT_OBJECT(dfo)));
     220             : }
     221             : /* }}} */
     222             : 
     223             : /* {{{ proto string IntlDateFormatter::setLenient()
     224             :  * Set formatter lenient. }}} */
     225             : /* {{{ proto string datefmt_setLenient(IntlDateFormatter $mf)
     226             :  * Set formatter lenient.
     227             :  */
     228           5 : PHP_FUNCTION( datefmt_set_lenient )
     229             : {
     230           5 :         zend_bool isLenient  = FALSE;
     231             : 
     232           5 :         DATE_FORMAT_METHOD_INIT_VARS;
     233             : 
     234             :         /* Parse parameters. */
     235           5 :         if( zend_parse_method_parameters( ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Ob",
     236             :         &object, IntlDateFormatter_ce_ptr,&isLenient ) == FAILURE )
     237             :         {
     238           1 :                 intl_error_set( NULL, U_ILLEGAL_ARGUMENT_ERROR,
     239             :                         "datefmt_set_lenient: unable to parse input params", 0 TSRMLS_CC );
     240           1 :                 RETURN_FALSE;
     241             :         }
     242             : 
     243             :         /* Fetch the object. */
     244           4 :         DATE_FORMAT_METHOD_FETCH_OBJECT;
     245             : 
     246           4 :         udat_setLenient(DATE_FORMAT_OBJECT(dfo), (UBool)isLenient );
     247             : }
     248             : /* }}} */

Generated by: LCOV version 1.10

Generated at Mon, 04 Aug 2014 15:49:05 +0000 (17 days ago)

Copyright © 2005-2014 The PHP Group
All rights reserved.