Annotation of embedaddon/php/ext/intl/formatter/formatter.c, revision 1.1

1.1     ! misho       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: Stanislav Malyshev <stas@zend.com>                          |
        !            14:    +----------------------------------------------------------------------+
        !            15:  */
        !            16: 
        !            17: #ifdef HAVE_CONFIG_H
        !            18: #include "config.h"
        !            19: #endif
        !            20: 
        !            21: #include <unicode/utypes.h>
        !            22: #include <unicode/unum.h>
        !            23: #include <unicode/ustring.h>
        !            24: 
        !            25: #include "php_intl.h"
        !            26: #include "formatter_class.h"
        !            27: #include "formatter_format.h"
        !            28: 
        !            29: #if U_ICU_VERSION_MAJOR_NUM == 3 && U_ICU_VERSION_MINOR_NUM <= 4
        !            30: #define UNUM_MONETARY_GROUPING_SEPARATOR_SYMBOL 17
        !            31: #endif
        !            32: 
        !            33: /* {{{ formatter_register_constants
        !            34:  * Register constants common for the both (OO and procedural)
        !            35:  * APIs.
        !            36:  */
        !            37: void formatter_register_constants( INIT_FUNC_ARGS )
        !            38: {
        !            39:        if( NumberFormatter_ce_ptr == NULL) {
        !            40:                zend_error(E_ERROR, "NumberFormatter class not defined");
        !            41:        }
        !            42: 
        !            43:        #define FORMATTER_EXPOSE_CONST(x) REGISTER_LONG_CONSTANT(#x, x, CONST_CS)
        !            44:        #define FORMATTER_EXPOSE_CLASS_CONST(x) zend_declare_class_constant_long( NumberFormatter_ce_ptr, ZEND_STRS( #x ) - 1, UNUM_##x TSRMLS_CC );
        !            45:        #define FORMATTER_EXPOSE_CUSTOM_CLASS_CONST(name, value) zend_declare_class_constant_long( NumberFormatter_ce_ptr, ZEND_STRS( name ) - 1, value TSRMLS_CC );
        !            46: 
        !            47:        /* UNumberFormatStyle constants */
        !            48:        FORMATTER_EXPOSE_CLASS_CONST( PATTERN_DECIMAL );
        !            49:        FORMATTER_EXPOSE_CLASS_CONST( DECIMAL );
        !            50:        FORMATTER_EXPOSE_CLASS_CONST( CURRENCY );
        !            51:        FORMATTER_EXPOSE_CLASS_CONST( PERCENT );
        !            52:        FORMATTER_EXPOSE_CLASS_CONST( SCIENTIFIC );
        !            53:        FORMATTER_EXPOSE_CLASS_CONST( SPELLOUT );
        !            54:        FORMATTER_EXPOSE_CLASS_CONST( ORDINAL );
        !            55:        FORMATTER_EXPOSE_CLASS_CONST( DURATION );
        !            56:        FORMATTER_EXPOSE_CLASS_CONST( PATTERN_RULEBASED );
        !            57:        FORMATTER_EXPOSE_CLASS_CONST( IGNORE );
        !            58: 
        !            59:        FORMATTER_EXPOSE_CUSTOM_CLASS_CONST( "DEFAULT_STYLE",  UNUM_DEFAULT );
        !            60: 
        !            61: /* workaround for ICU bug */
        !            62: #if U_ICU_VERSION_MAJOR_NUM == 3 && U_ICU_VERSION_MINOR_NUM < 8
        !            63: #define UNUM_ROUND_HALFEVEN UNUM_FOUND_HALFEVEN
        !            64: #endif
        !            65: 
        !            66:        /* UNumberFormatRoundingMode */
        !            67:        FORMATTER_EXPOSE_CLASS_CONST( ROUND_CEILING );
        !            68:        FORMATTER_EXPOSE_CLASS_CONST( ROUND_FLOOR );
        !            69:        FORMATTER_EXPOSE_CLASS_CONST( ROUND_DOWN );
        !            70:        FORMATTER_EXPOSE_CLASS_CONST( ROUND_UP );
        !            71:        FORMATTER_EXPOSE_CLASS_CONST( ROUND_HALFEVEN );
        !            72:        FORMATTER_EXPOSE_CLASS_CONST( ROUND_HALFDOWN );
        !            73:        FORMATTER_EXPOSE_CLASS_CONST( ROUND_HALFUP );
        !            74: 
        !            75:        /* UNumberFormatPadPosition */
        !            76:        FORMATTER_EXPOSE_CLASS_CONST( PAD_BEFORE_PREFIX ); 
        !            77:        FORMATTER_EXPOSE_CLASS_CONST( PAD_AFTER_PREFIX ); 
        !            78:        FORMATTER_EXPOSE_CLASS_CONST( PAD_BEFORE_SUFFIX ); 
        !            79:        FORMATTER_EXPOSE_CLASS_CONST( PAD_AFTER_SUFFIX );
        !            80: 
        !            81:        /* UNumberFormatAttribute */
        !            82:        FORMATTER_EXPOSE_CLASS_CONST( PARSE_INT_ONLY ); 
        !            83:        FORMATTER_EXPOSE_CLASS_CONST( GROUPING_USED ); 
        !            84:        FORMATTER_EXPOSE_CLASS_CONST( DECIMAL_ALWAYS_SHOWN ); 
        !            85:        FORMATTER_EXPOSE_CLASS_CONST( MAX_INTEGER_DIGITS );
        !            86:        FORMATTER_EXPOSE_CLASS_CONST( MIN_INTEGER_DIGITS ); 
        !            87:        FORMATTER_EXPOSE_CLASS_CONST( INTEGER_DIGITS ); 
        !            88:        FORMATTER_EXPOSE_CLASS_CONST( MAX_FRACTION_DIGITS ); 
        !            89:        FORMATTER_EXPOSE_CLASS_CONST( MIN_FRACTION_DIGITS );
        !            90:        FORMATTER_EXPOSE_CLASS_CONST( FRACTION_DIGITS ); 
        !            91:        FORMATTER_EXPOSE_CLASS_CONST( MULTIPLIER ); 
        !            92:        FORMATTER_EXPOSE_CLASS_CONST( GROUPING_SIZE ); 
        !            93:        FORMATTER_EXPOSE_CLASS_CONST( ROUNDING_MODE );
        !            94:        FORMATTER_EXPOSE_CLASS_CONST( ROUNDING_INCREMENT ); 
        !            95:        FORMATTER_EXPOSE_CLASS_CONST( FORMAT_WIDTH ); 
        !            96:        FORMATTER_EXPOSE_CLASS_CONST( PADDING_POSITION ); 
        !            97:        FORMATTER_EXPOSE_CLASS_CONST( SECONDARY_GROUPING_SIZE );
        !            98:        FORMATTER_EXPOSE_CLASS_CONST( SIGNIFICANT_DIGITS_USED ); 
        !            99:        FORMATTER_EXPOSE_CLASS_CONST( MIN_SIGNIFICANT_DIGITS ); 
        !           100:        FORMATTER_EXPOSE_CLASS_CONST( MAX_SIGNIFICANT_DIGITS ); 
        !           101:        FORMATTER_EXPOSE_CLASS_CONST( LENIENT_PARSE ); 
        !           102: 
        !           103:        /* UNumberFormatTextAttribute */
        !           104:        FORMATTER_EXPOSE_CLASS_CONST( POSITIVE_PREFIX ); 
        !           105:        FORMATTER_EXPOSE_CLASS_CONST( POSITIVE_SUFFIX ); 
        !           106:        FORMATTER_EXPOSE_CLASS_CONST( NEGATIVE_PREFIX ); 
        !           107:        FORMATTER_EXPOSE_CLASS_CONST( NEGATIVE_SUFFIX );
        !           108:        FORMATTER_EXPOSE_CLASS_CONST( PADDING_CHARACTER ); 
        !           109:        FORMATTER_EXPOSE_CLASS_CONST( CURRENCY_CODE ); 
        !           110:        FORMATTER_EXPOSE_CLASS_CONST( DEFAULT_RULESET ); 
        !           111:        FORMATTER_EXPOSE_CLASS_CONST( PUBLIC_RULESETS );
        !           112: 
        !           113:        /* UNumberFormatSymbol */
        !           114:        FORMATTER_EXPOSE_CLASS_CONST( DECIMAL_SEPARATOR_SYMBOL ); 
        !           115:        FORMATTER_EXPOSE_CLASS_CONST( GROUPING_SEPARATOR_SYMBOL ); 
        !           116:        FORMATTER_EXPOSE_CLASS_CONST( PATTERN_SEPARATOR_SYMBOL ); 
        !           117:        FORMATTER_EXPOSE_CLASS_CONST( PERCENT_SYMBOL );
        !           118:        FORMATTER_EXPOSE_CLASS_CONST( ZERO_DIGIT_SYMBOL ); 
        !           119:        FORMATTER_EXPOSE_CLASS_CONST( DIGIT_SYMBOL ); 
        !           120:        FORMATTER_EXPOSE_CLASS_CONST( MINUS_SIGN_SYMBOL ); 
        !           121:        FORMATTER_EXPOSE_CLASS_CONST( PLUS_SIGN_SYMBOL );
        !           122:        FORMATTER_EXPOSE_CLASS_CONST( CURRENCY_SYMBOL ); 
        !           123:        FORMATTER_EXPOSE_CLASS_CONST( INTL_CURRENCY_SYMBOL );
        !           124:        FORMATTER_EXPOSE_CLASS_CONST( MONETARY_SEPARATOR_SYMBOL ); 
        !           125:        FORMATTER_EXPOSE_CLASS_CONST( EXPONENTIAL_SYMBOL );
        !           126:        FORMATTER_EXPOSE_CLASS_CONST( PERMILL_SYMBOL ); 
        !           127:        FORMATTER_EXPOSE_CLASS_CONST( PAD_ESCAPE_SYMBOL );
        !           128:        FORMATTER_EXPOSE_CLASS_CONST( INFINITY_SYMBOL );
        !           129:        FORMATTER_EXPOSE_CLASS_CONST( NAN_SYMBOL );
        !           130:        FORMATTER_EXPOSE_CLASS_CONST( SIGNIFICANT_DIGIT_SYMBOL );
        !           131:        FORMATTER_EXPOSE_CLASS_CONST( MONETARY_GROUPING_SEPARATOR_SYMBOL ); 
        !           132: 
        !           133:        FORMATTER_EXPOSE_CUSTOM_CLASS_CONST( "TYPE_DEFAULT", FORMAT_TYPE_DEFAULT );
        !           134:        FORMATTER_EXPOSE_CUSTOM_CLASS_CONST( "TYPE_INT32", FORMAT_TYPE_INT32 );
        !           135:        FORMATTER_EXPOSE_CUSTOM_CLASS_CONST( "TYPE_INT64", FORMAT_TYPE_INT64 );
        !           136:        FORMATTER_EXPOSE_CUSTOM_CLASS_CONST( "TYPE_DOUBLE", FORMAT_TYPE_DOUBLE );
        !           137:        FORMATTER_EXPOSE_CUSTOM_CLASS_CONST( "TYPE_CURRENCY", FORMAT_TYPE_CURRENCY );
        !           138: 
        !           139:        #undef FORMATTER_EXPOSE_CUSTOM_CLASS_CONST
        !           140:        #undef FORMATTER_EXPOSE_CLASS_CONST
        !           141:        #undef FORMATTER_EXPOSE_CONST
        !           142: }
        !           143: /* }}} */
        !           144: 
        !           145: /*
        !           146:  * Local variables:
        !           147:  * tab-width: 4
        !           148:  * c-basic-offset: 4
        !           149:  * End:
        !           150:  * vim600: noet sw=4 ts=4 fdm=marker
        !           151:  * vim<600: noet sw=4 ts=4
        !           152:  */

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>