Annotation of embedaddon/php/ext/intl/formatter/formatter.c, revision 1.1.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>