1 /* Copyright (C) 2006 Barış Metin <baris@pardus.org.tr>
2 * Copyright (C) 2007 Serkan Kaba <serkan_kaba@yahoo.com>
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
17 * Boston, MA 02110-1301, USA.
19 * In addition, as a special exception, Dom Lachowicz
20 * gives permission to link the code of this program with
21 * non-LGPL Spelling Provider libraries (eg: a MSFT Office
22 * spell checker backend) and distribute linked combinations including
23 * the two. You must obey the GNU Lesser General Public License in all
24 * respects for all of the code used other than said providers. If you modify
25 * this file, you may extend this exception to your version of the
26 * file, but you are not obligated to do so. If you do not wish to
27 * do so, delete this exception statement from your version.
34 #include "enchant-provider.h"
38 ENCHANT_PLUGIN_DECLARE("Zemberek")
42 ENCHANT_MODULE_EXPORT(EnchantProvider *)
43 init_enchant_provider(void);
46 zemberek_dict_check (EnchantDict * me, const char *const word, size_t len)
49 checker = (Zemberek *) me->user_data;
50 return checker->checkWord(word);
54 zemberek_dict_suggest (EnchantDict * me, const char *const word,
55 size_t len, size_t * out_n_suggs)
58 checker = (Zemberek *) me->user_data;
59 return checker->suggestWord (word, out_n_suggs);
63 zemberek_provider_dispose(EnchantProvider *me)
69 zemberek_provider_request_dict(EnchantProvider *me, const char *tag)
71 if (!((strcmp(tag, "tr") == 0) || (strncmp(tag, "tr_", 3) == 0)))
72 return NULL; // only handle turkish
76 Zemberek* checker = new Zemberek();
78 EnchantDict* dict = g_new0(EnchantDict, 1);
79 dict->user_data = (void *) checker;
80 dict->check = zemberek_dict_check;
81 dict->suggest = zemberek_dict_suggest;
87 // will fail if zemberek service isn't running
93 zemberek_provider_dispose_dict (EnchantProvider * me, EnchantDict * dict)
96 checker = (Zemberek *) dict->user_data;
102 zemberek_provider_identify (EnchantProvider * me)
108 zemberek_provider_describe (EnchantProvider * me)
110 return "Zemberek Provider";
114 zemberek_provider_free_string_list (EnchantProvider * me, char **str_list)
116 g_strfreev (str_list);
120 zemberek_provider_list_dicts (EnchantProvider * me,
121 size_t * out_n_dicts)
123 if (!zemberek_service_is_running ())
130 char ** out_list = NULL;
132 out_list = g_new0 (char *, 2);
133 out_list[0] = g_strdup ("tr");
140 init_enchant_provider(void)
142 EnchantProvider *provider;
144 provider = g_new0(EnchantProvider, 1);
145 provider->dispose = zemberek_provider_dispose;
146 provider->request_dict = zemberek_provider_request_dict;
147 provider->dispose_dict = zemberek_provider_dispose_dict;
148 provider->identify = zemberek_provider_identify;
149 provider->describe = zemberek_provider_describe;
150 provider->list_dicts = zemberek_provider_list_dicts;
151 provider->free_string_list = zemberek_provider_free_string_list;