andrei Tue Jun 13 23:46:04 2006 UTC Added files: /php-src/ext/unicode php_transform.h transform.c
Modified files: /php-src/ext/unicode config.m4 config.w32 unicode.c Log: transliterate() http://cvs.php.net/viewcvs.cgi/php-src/ext/unicode/config.m4?r1=1.9&r2=1.10&diff_format=u Index: php-src/ext/unicode/config.m4 diff -u php-src/ext/unicode/config.m4:1.9 php-src/ext/unicode/config.m4:1.10 --- php-src/ext/unicode/config.m4:1.9 Fri May 5 20:56:21 2006 +++ php-src/ext/unicode/config.m4 Tue Jun 13 23:46:04 2006 @@ -1,7 +1,7 @@ dnl -dnl $Id: config.m4,v 1.9 2006/05/05 20:56:21 andrei Exp $ +dnl $Id: config.m4,v 1.10 2006/06/13 23:46:04 andrei Exp $ dnl PHP_SUBST(UNICODE_SHARED_LIBADD) AC_DEFINE(HAVE_UNICODE, 1, [ ]) -PHP_NEW_EXTENSION(unicode, unicode.c locale.c unicode_iterators.c collator.c property.c constants.c, $ext_shared) +PHP_NEW_EXTENSION(unicode, unicode.c locale.c unicode_iterators.c collator.c property.c constants.c transform.c, $ext_shared) http://cvs.php.net/viewcvs.cgi/php-src/ext/unicode/config.w32?r1=1.10&r2=1.11&diff_format=u Index: php-src/ext/unicode/config.w32 diff -u php-src/ext/unicode/config.w32:1.10 php-src/ext/unicode/config.w32:1.11 --- php-src/ext/unicode/config.w32:1.10 Mon May 8 21:06:34 2006 +++ php-src/ext/unicode/config.w32 Tue Jun 13 23:46:04 2006 @@ -1,5 +1,5 @@ -// $Id: config.w32,v 1.10 2006/05/08 21:06:34 edink Exp $ +// $Id: config.w32,v 1.11 2006/06/13 23:46:04 andrei Exp $ // vim:ft=javascript -EXTENSION("unicode", "unicode.c unicode_iterators.c collator.c locale.c property.c constants.c", false); +EXTENSION("unicode", "unicode.c unicode_iterators.c collator.c locale.c property.c constants.c transform.c", false); AC_DEFINE('HAVE_UNICODE', 1, 'ICU API extension'); http://cvs.php.net/viewcvs.cgi/php-src/ext/unicode/unicode.c?r1=1.34&r2=1.35&diff_format=u Index: php-src/ext/unicode/unicode.c diff -u php-src/ext/unicode/unicode.c:1.34 php-src/ext/unicode/unicode.c:1.35 --- php-src/ext/unicode/unicode.c:1.34 Tue May 9 18:21:27 2006 +++ php-src/ext/unicode/unicode.c Tue Jun 13 23:46:04 2006 @@ -15,11 +15,12 @@ +----------------------------------------------------------------------+ */ -/* $Id: unicode.c,v 1.34 2006/05/09 18:21:27 andrei Exp $ */ +/* $Id: unicode.c,v 1.35 2006/06/13 23:46:04 andrei Exp $ */ #include "php_unicode.h" #include "zend_unicode.h" #include "php_property.h" +#include "php_transform.h" void php_register_unicode_iterators(TSRMLS_D); @@ -298,6 +299,10 @@ PHP_FE(char_enum_names, NULL) PHP_FE(char_enum_types, NULL) + /* text transformation functions */ + + PHP_FE(transliterate, NULL) + { NULL, NULL, NULL } }; /* }}} */ http://cvs.php.net/viewcvs.cgi/php-src/ext/unicode/php_transform.h?view=markup&rev=1.1 Index: php-src/ext/unicode/php_transform.h +++ php-src/ext/unicode/php_transform.h /* +----------------------------------------------------------------------+ | PHP Version 6 | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.txt | | If you did not receive a copy of the PHP license and are unable to | | obtain it through the world-wide-web, please send a note to | | [EMAIL PROTECTED] so we can mail you a copy immediately. | +----------------------------------------------------------------------+ | Authors: Andrei Zmievski <[EMAIL PROTECTED]> | +----------------------------------------------------------------------+ */ /* $Id: php_transform.h,v 1.1 2006/06/13 23:46:04 andrei Exp $ */ #ifndef PHP_TRANSFORM_H #define PHP_TRANSFORM_H PHP_FUNCTION(transliterate); #endif /* PHP_TRANSFORM_H */ /* * Local variables: * tab-width: 4 * c-basic-offset: 4 * End: * vim600: noet sw=4 ts=4 fdm=marker * vim<600: noet sw=4 ts=4 */ http://cvs.php.net/viewcvs.cgi/php-src/ext/unicode/transform.c?view=markup&rev=1.1 Index: php-src/ext/unicode/transform.c +++ php-src/ext/unicode/transform.c /* +----------------------------------------------------------------------+ | PHP Version 6 | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.txt | | If you did not receive a copy of the PHP license and are unable to | | obtain it through the world-wide-web, please send a note to | | [EMAIL PROTECTED] so we can mail you a copy immediately. | +----------------------------------------------------------------------+ | Authors: Andrei Zmievski <[EMAIL PROTECTED]> | +----------------------------------------------------------------------+ */ /* $Id: transform.c,v 1.1 2006/06/13 23:46:04 andrei Exp $ */ #include "php_unicode.h" PHP_FUNCTION(transliterate) { UChar *str, *from, *to, *variant = NULL; int str_len, from_len, to_len, variant_len = 0; UChar id[256]; int id_len; UChar *result = NULL; int result_len = 0; UTransliterator *trans = NULL; UErrorCode status = U_ZERO_ERROR; int32_t capacity, start, limit; /* { char *str; int32_t str_len; UEnumeration *ids; ids = utrans_openIDs(&status); printf("%d\n", uenum_count(ids, &status)); str = (char*)uenum_next(ids, &str_len, &status); while (str) { printf("id: %s\n", str); str = (char*)uenum_next(ids, &str_len, &status); } uenum_close(ids); } return; */ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "uuu|u", &str, &str_len, &from, &from_len, &to, &to_len, &variant, &variant_len) == FAILURE) { return; } if (variant) { id_len = u_snprintf(id, sizeof(id)-1, "%S-%S/%S", from, to, variant); } else { id_len = u_snprintf(id, sizeof(id)-1, "%S-%S", from, to); } if (id_len < 0) { php_error_docref("", E_WARNING, "Transliterator ID too long"); return; } id[id_len] = 0; trans = utrans_openU(id, id_len, UTRANS_FORWARD, NULL, 0, NULL, &status); if (U_FAILURE(status)) { php_error_docref("", E_WARNING, "Failed to create transliterator"); return; } result = eustrndup(str, str_len); result_len = limit = str_len; capacity = str_len + 1; while (1) { utrans_transUChars(trans, result, &result_len, capacity, 0, &limit, &status); if (status == U_BUFFER_OVERFLOW_ERROR) { result = eurealloc(result, result_len + 1); memcpy(result, str, UBYTES(str_len)); capacity = result_len + 1; result_len = limit = str_len; status = U_ZERO_ERROR; utrans_transUChars(trans, result, &result_len, capacity, 0, &limit, &status); } else { if (status == U_STRING_NOT_TERMINATED_WARNING) { result = eurealloc(result, result_len + 1); } break; } } result[result_len] = 0; utrans_close(trans); RETURN_UNICODEL(result, result_len, 0); } /* * Local variables: * tab-width: 4 * c-basic-offset: 4 * End: * vim600: noet sw=4 ts=4 fdm=marker * vim<600: noet sw=4 ts=4 */ -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php