From 96f0a94e636bc6852f152021005c55964a753ba3 Mon Sep 17 00:00:00 2001 From: Pierre Joye Date: Tue, 21 Mar 2006 18:10:45 +0000 Subject: [PATCH] - add enchant_broker_list_dicts --- ext/enchant/enchant.c | 43 +++++++++++++++++++++++++++++++++++++++ ext/enchant/package.xml | 5 +++-- ext/enchant/php_enchant.h | 1 + 3 files changed, 47 insertions(+), 2 deletions(-) diff --git a/ext/enchant/enchant.c b/ext/enchant/enchant.c index 2666c8a848..07ae10207c 100755 --- a/ext/enchant/enchant.c +++ b/ext/enchant/enchant.c @@ -68,6 +68,7 @@ function_entry enchant_functions[] = { PHP_FE(enchant_broker_init, NULL) PHP_FE(enchant_broker_free, NULL) PHP_FE(enchant_broker_get_error, NULL) + PHP_FE(enchant_broker_list_dicts, NULL) PHP_FE(enchant_broker_request_dict, NULL) PHP_FE(enchant_broker_request_pwl_dict, NULL) PHP_FE(enchant_broker_free_dict, NULL) @@ -152,6 +153,28 @@ describe_dict_fn (const char * const lang, } /* }}} */ +static void php_enchant_list_dicts_fn( const char * const lang_tag, + const char * const provider_name, const char * const provider_desc, + const char * const provider_file, void * ud) /* {{{ */ +{ + zval *zdesc = (zval *) ud; + zval *tmp_array; + + MAKE_STD_ZVAL(tmp_array); + array_init(tmp_array); + add_assoc_string(tmp_array, "lang_tag", (char *)lang_tag, 1); + add_assoc_string(tmp_array, "provider_name", (char *)provider_name, 1); + add_assoc_string(tmp_array, "provider_desc", (char *)provider_desc, 1); + add_assoc_string(tmp_array, "provider_file", (char *)provider_file, 1); + + if (Z_TYPE_P(zdesc) != IS_ARRAY) { + array_init(zdesc); + } + add_next_index_zval(zdesc, tmp_array); + +} +/* }}} */ + static void php_enchant_broker_free(zend_rsrc_list_entry *rsrc TSRMLS_DC) /* {{{ */ { if (rsrc->ptr) { @@ -323,6 +346,26 @@ PHP_FUNCTION(enchant_broker_get_error) } /* }}} */ +/* {{{ proto string enchant_broker_list_dicts(resource broker) + Returns the last error of the broker */ +PHP_FUNCTION(enchant_broker_list_dicts) +{ + zval *broker; + enchant_broker *pbroker; + EnchantDictDescribeFn describetozval = php_enchant_list_dicts_fn; + + char *msg; + + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &broker) == FAILURE) { + RETURN_FALSE; + } + + PHP_ENCHANT_GET_BROKER; + + enchant_broker_list_dicts(pbroker->pbroker, php_enchant_list_dicts_fn, (void *)return_value); +} +/* }}} */ + /* {{{ proto resource enchant_broker_request_dict(resource broker, string tag) create a new dictionary using tag, the non-empty language tag you wish to request a dictionary for ("en_US", "de_DE", ...) */ diff --git a/ext/enchant/package.xml b/ext/enchant/package.xml index 60b7b26a26..caf5a614ce 100755 --- a/ext/enchant/package.xml +++ b/ext/enchant/package.xml @@ -8,7 +8,7 @@ API for many spell libraries: - aspell/pspell (intended to replace ispell) - hspell (hebrew) - ispell -- myspell (OpenOffice project, mozilla) +- myspell/hunspell (OpenOffice project, mozilla) - uspell (primarily Yiddish, Hebrew, and Eastern European languages) A plugin system allows to add custom spell support. see www.abisource.com/enchant/ @@ -35,7 +35,8 @@ see www.abisource.com/enchant/ stable PHP - - fix compilation warnings + - add enchant_broker_list_dicts to get a list of available dictionnaries +- fix compilation warnings - add examples - add tests diff --git a/ext/enchant/php_enchant.h b/ext/enchant/php_enchant.h index e0d98730ca..33f2441519 100644 --- a/ext/enchant/php_enchant.h +++ b/ext/enchant/php_enchant.h @@ -44,6 +44,7 @@ PHP_MINFO_FUNCTION(enchant); PHP_FUNCTION(enchant_broker_init); PHP_FUNCTION(enchant_broker_free); PHP_FUNCTION(enchant_broker_get_error); +PHP_FUNCTION(enchant_broker_list_dicts); PHP_FUNCTION(enchant_broker_request_dict); PHP_FUNCTION(enchant_broker_request_pwl_dict); PHP_FUNCTION(enchant_broker_free_dict); -- 2.40.0