Annotation of embedaddon/php/ext/intl/transliterator/transliterator.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: Gustavo Lopes <cataphract@php.net> |
14: +----------------------------------------------------------------------+
15: */
16:
17: #ifdef HAVE_CONFIG_H
18: #include "config.h"
19: #endif
20:
21: #include "transliterator_class.h"
22: #include "transliterator.h"
23: #include "intl_convert.h"
24:
25: #include <unicode/ustring.h>
26:
27: /* {{{ transliterator_register_constants
28: * Register constants common for both (OO and procedural) APIs.
29: */
30: void transliterator_register_constants( INIT_FUNC_ARGS )
31: {
32: if( !Transliterator_ce_ptr )
33: {
34: zend_error( E_ERROR, "Transliterator class not defined" );
35: return;
36: }
37:
38: #define TRANSLITERATOR_EXPOSE_CONST( x ) REGISTER_LONG_CONSTANT( #x, x, CONST_CS )
39: #define TRANSLITERATOR_EXPOSE_CLASS_CONST( x ) zend_declare_class_constant_long( Transliterator_ce_ptr, ZEND_STRS( #x ) - 1, TRANSLITERATOR_##x TSRMLS_CC );
40: #define TRANSLITERATOR_EXPOSE_CUSTOM_CLASS_CONST( name, value ) zend_declare_class_constant_long( Transliterator_ce_ptr, ZEND_STRS( name ) - 1, value TSRMLS_CC );*/
41:
42: /* Normalization form constants */
43: TRANSLITERATOR_EXPOSE_CLASS_CONST( FORWARD );
44: TRANSLITERATOR_EXPOSE_CLASS_CONST( REVERSE );
45:
46: #undef NORMALIZER_EXPOSE_CUSTOM_CLASS_CONST
47: #undef NORMALIZER_EXPOSE_CLASS_CONST
48: #undef NORMALIZER_EXPOSE_CONST
49: }
50: /* }}} */
51:
52: /* {{{ transliterator_parse_error_to_string
53: * Transforms parse errors in strings.
54: */
55: smart_str transliterator_parse_error_to_string( UParseError* pe )
56: {
57: smart_str ret = {0};
58: char *buf;
59: int u8len;
60: UErrorCode status;
61: int any = 0;
62:
63: assert( pe != NULL );
64:
65: smart_str_appends( &ret, "parse error " );
66: if( pe->line > 0 )
67: {
68: smart_str_appends( &ret, "on line " );
69: smart_str_append_long( &ret, (long ) pe->line );
70: any = 1;
71: }
72: if( pe->offset >= 0 ) {
73: if( any )
74: smart_str_appends( &ret, ", " );
75: else
76: smart_str_appends( &ret, "at " );
77:
78: smart_str_appends( &ret, "offset " );
79: smart_str_append_long( &ret, (long ) pe->offset );
80: any = 1;
81: }
82:
83: if (pe->preContext[0] != 0 ) {
84: if( any )
85: smart_str_appends( &ret, ", " );
86:
87: smart_str_appends( &ret, "after \"" );
88: intl_convert_utf16_to_utf8( &buf, &u8len, pe->preContext, -1, &status );
89: if( U_FAILURE( status ) )
90: {
91: smart_str_appends( &ret, "(could not convert parser error pre-context to UTF-8)" );
92: }
93: else {
94: smart_str_appendl( &ret, buf, u8len );
95: efree( buf );
96: }
97: smart_str_appends( &ret, "\"" );
98: any = 1;
99: }
100:
101: if( pe->postContext[0] != 0 )
102: {
103: if( any )
104: smart_str_appends( &ret, ", " );
105:
106: smart_str_appends( &ret, "before or at \"" );
107: intl_convert_utf16_to_utf8( &buf, &u8len, pe->postContext, -1, &status );
108: if( U_FAILURE( status ) )
109: {
110: smart_str_appends( &ret, "(could not convert parser error post-context to UTF-8)" );
111: }
112: else
113: {
114: smart_str_appendl( &ret, buf, u8len );
115: efree( buf );
116: }
117: smart_str_appends( &ret, "\"" );
118: any = 1;
119: }
120:
121: if( !any )
122: {
123: smart_str_free( &ret );
124: smart_str_appends( &ret, "no parse error" );
125: }
126:
127: smart_str_0( &ret );
128: return ret;
129: }
130:
131: /*
132: * Local variables:
133: * tab-width: 4
134: * c-basic-offset: 4
135: * End:
136: * vim600: noet sw=4 ts=4 fdm=marker
137: * vim<600: noet sw=4 ts=4
138: */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>