From af1bf65bd9bc9a4d14d0aa836aded405b5e76661 Mon Sep 17 00:00:00 2001 From: chenxiajian Date: Sat, 20 Aug 2011 04:18:54 +0000 Subject: reslove Zemberek exception git-svn-id: svn+ssh://svn.abisource.com/svnroot/enchant/branches/gsoc2011hyphenation@30261 bcba8976-2d24-0410-9c9c-aab3bd5fdfd6 --- src/zemberek/zemberek.cpp | 275 ++++++++++++++++++------------------- src/zemberek/zemberek_provider.cpp | 4 +- 2 files changed, 140 insertions(+), 139 deletions(-) diff --git a/src/zemberek/zemberek.cpp b/src/zemberek/zemberek.cpp index ada14ea..3438006 100644 --- a/src/zemberek/zemberek.cpp +++ b/src/zemberek/zemberek.cpp @@ -1,139 +1,138 @@ -/* Copyright (C) 2006 Barış Metin - * Copyright (C) 2007 Serkan Kaba - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02110-1301, USA. - * - * In addition, as a special exception, Dom Lachowicz - * gives permission to link the code of this program with - * non-LGPL Spelling Provider libraries (eg: a MSFT Office - * spell checker backend) and distribute linked combinations including - * the two. You must obey the GNU Lesser General Public License in all - * respects for all of the code used other than said providers. If you modify - * this file, you may extend this exception to your version of the - * file, but you are not obligated to do so. If you do not wish to - * do so, delete this exception statement from your version. - */ - -#include "zemberek.h" - -bool zemberek_service_is_running () -{ - DBusGConnection *connection; - DBusGProxy *proxy; - - GError *Error = NULL; - g_type_init (); - - connection = dbus_g_bus_get (DBUS_BUS_SYSTEM, - &Error); - if (connection == NULL) { - g_error_free (Error); - return false; - } - proxy = dbus_g_proxy_new_for_name_owner (connection, - "net.zemberekserver.server.dbus", - "/net/zemberekserver/server/dbus/ZemberekDbus", - "net.zemberekserver.server.dbus.ZemberekDbusInterface", - &Error); - - dbus_g_connection_unref (connection); - if (proxy == NULL) { - return false; - } - - g_object_unref (proxy); - return true; -} - -Zemberek::Zemberek() - : connection(NULL), proxy(NULL) -{ - GError *Error = NULL; - g_type_init (); - - connection = dbus_g_bus_get (DBUS_BUS_SYSTEM, - &Error); - if (connection == NULL) { - g_error_free (Error); - throw "couldn't connect to the system bus"; - } - proxy = dbus_g_proxy_new_for_name (connection, - "net.zemberekserver.server.dbus", - "/net/zemberekserver/server/dbus/ZemberekDbus", - "net.zemberekserver.server.dbus.ZemberekDbusInterface"); - - if (proxy == NULL) { - throw "couldn't connect to the Zemberek service"; - } -} - - -Zemberek::~Zemberek() -{ - if(proxy) - g_object_unref (proxy); - if(connection) - dbus_g_connection_unref (connection); -} - - -int Zemberek::checkWord(const char* word) const -{ - gboolean result; - GError *Error = NULL; - if (!dbus_g_proxy_call (proxy, "kelimeDenetle", &Error, - G_TYPE_STRING,word,G_TYPE_INVALID, - G_TYPE_BOOLEAN, &result, G_TYPE_INVALID)) { - g_error_free (Error); - return -1; - } - else { - if (result) - return 0; - else - return 1; - } -} - - -char** Zemberek::suggestWord(const char* word, size_t *out_n_suggs) -{ - char** suggs; - GError *Error = NULL; - if (!dbus_g_proxy_call (proxy, "oner", &Error, - G_TYPE_STRING,word,G_TYPE_INVALID, - G_TYPE_STRV, &suggs,G_TYPE_INVALID)) { - g_error_free (Error); - return NULL; - } - *out_n_suggs = g_strv_length(suggs); - return suggs; -} - -char* Zemberek::hyphenate(const char* word) -{ - char* result; - GError *Error = NULL; - if (!dbus_g_proxy_call (proxy, "hecele", &Error, - G_TYPE_STRING,word,G_TYPE_INVALID, - G_TYPE_STRV, &result,G_TYPE_INVALID)) { - g_error_free (Error); - return NULL; - } - - char*result=0; - return result; +/* Copyright (C) 2006 Barış Metin + * Copyright (C) 2007 Serkan Kaba + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02110-1301, USA. + * + * In addition, as a special exception, Dom Lachowicz + * gives permission to link the code of this program with + * non-LGPL Spelling Provider libraries (eg: a MSFT Office + * spell checker backend) and distribute linked combinations including + * the two. You must obey the GNU Lesser General Public License in all + * respects for all of the code used other than said providers. If you modify + * this file, you may extend this exception to your version of the + * file, but you are not obligated to do so. If you do not wish to + * do so, delete this exception statement from your version. + */ + +#include "zemberek.h" + +bool zemberek_service_is_running () +{ + DBusGConnection *connection; + DBusGProxy *proxy; + + GError *Error = NULL; + g_type_init (); + + connection = dbus_g_bus_get (DBUS_BUS_SYSTEM, + &Error); + if (connection == NULL) { + g_error_free (Error); + return false; + } + proxy = dbus_g_proxy_new_for_name_owner (connection, + "net.zemberekserver.server.dbus", + "/net/zemberekserver/server/dbus/ZemberekDbus", + "net.zemberekserver.server.dbus.ZemberekDbusInterface", + &Error); + + dbus_g_connection_unref (connection); + if (proxy == NULL) { + return false; + } + + g_object_unref (proxy); + return true; +} + +Zemberek::Zemberek() + : connection(NULL), proxy(NULL) +{ + GError *Error = NULL; + g_type_init (); + + connection = dbus_g_bus_get (DBUS_BUS_SYSTEM, + &Error); + if (connection == NULL) { + g_error_free (Error); + throw "couldn't connect to the system bus"; + } + proxy = dbus_g_proxy_new_for_name (connection, + "net.zemberekserver.server.dbus", + "/net/zemberekserver/server/dbus/ZemberekDbus", + "net.zemberekserver.server.dbus.ZemberekDbusInterface"); + + if (proxy == NULL) { + throw "couldn't connect to the Zemberek service"; + } +} + + +Zemberek::~Zemberek() +{ + if(proxy) + g_object_unref (proxy); + if(connection) + dbus_g_connection_unref (connection); +} + + +int Zemberek::checkWord(const char* word) const +{ + gboolean result; + GError *Error = NULL; + if (!dbus_g_proxy_call (proxy, "kelimeDenetle", &Error, + G_TYPE_STRING,word,G_TYPE_INVALID, + G_TYPE_BOOLEAN, &result, G_TYPE_INVALID)) { + g_error_free (Error); + return -1; + } + else { + if (result) + return 0; + else + return 1; + } +} + + +char** Zemberek::suggestWord(const char* word, size_t *out_n_suggs) +{ + char** suggs; + GError *Error = NULL; + if (!dbus_g_proxy_call (proxy, "oner", &Error, + G_TYPE_STRING,word,G_TYPE_INVALID, + G_TYPE_STRV, &suggs,G_TYPE_INVALID)) { + g_error_free (Error); + return NULL; + } + *out_n_suggs = g_strv_length(suggs); + return suggs; +} + +char* Zemberek::hyphenate(const char* word) +{ + char* result= NULL; + GError *Error = NULL; + if (!dbus_g_proxy_call (proxy, "hecele", &Error, + G_TYPE_STRING,word,G_TYPE_INVALID, + G_TYPE_STRV, &result,G_TYPE_INVALID)) { + g_error_free (Error); + return NULL; + } + + return result; } \ No newline at end of file diff --git a/src/zemberek/zemberek_provider.cpp b/src/zemberek/zemberek_provider.cpp index 7ae925a..d110546 100644 --- a/src/zemberek/zemberek_provider.cpp +++ b/src/zemberek/zemberek_provider.cpp @@ -64,7 +64,9 @@ zemberek_dict_hyphenate (EnchantDict * me, const char *const word) { Zemberek *checker; checker = (Zemberek *) me->user_data; - return checker->hyphenate (word); + if(checker!=NULL) + return checker->hyphenate (word); + return NULL; } -- cgit v1.2.1