summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorchenxiajian <chenxiajian1985@gmail.com>2011-08-26 16:50:28 +0000
committerchenxiajian <chenxiajian1985@gmail.com>2011-08-26 16:50:28 +0000
commit817f3d4f401d8aac90bee71706cea1fd0712c84a (patch)
treebf0d6e6278e8fca8c3dcbbdfe99fe77973b25409
parentbf8102bccffb249b801fb72f7289c06ac3a8c1f8 (diff)
downloadenchant-gsoc2011hyphenation.tar.gz
enchant++.cppgsoc2011hyphenation
git-svn-id: svn+ssh://svn.abisource.com/svnroot/enchant/branches/gsoc2011hyphenation@30295 bcba8976-2d24-0410-9c9c-aab3bd5fdfd6
-rw-r--r--src/enchant++.cpp118
1 files changed, 118 insertions, 0 deletions
diff --git a/src/enchant++.cpp b/src/enchant++.cpp
new file mode 100644
index 0000000..a1ebba2
--- /dev/null
+++ b/src/enchant++.cpp
@@ -0,0 +1,118 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/* enchant
+* Copyright (C) 2003 Dom Lachowicz
+*
+* 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 <enchant.h>
+#include <string>
+#include <vector>
+#include <exception>
+#include "enchant++.h"
+
+namespace enchant
+{
+
+ bool Dict::check (const std::string & utf8word) {
+ int val;
+
+ val = enchant_dict_check (m_dict, utf8word.c_str(),
+ utf8word.size());
+ if (val == 0)
+ return true;
+ else if (val > 0)
+ return false;
+ else {
+ throw enchant::Exception (enchant_dict_get_error (m_dict));
+ }
+
+ return false; // never reached
+ }
+
+ void Dict::suggest (const std::string & utf8word,
+ std::vector<std::string> & out_suggestions) {
+ size_t n_suggs;
+ char ** suggs;
+
+ out_suggestions.clear ();
+
+ suggs = enchant_dict_suggest (m_dict, utf8word.c_str(),
+ utf8word.size(), &n_suggs);
+
+ if (suggs && n_suggs) {
+ for (size_t i = 0; i < n_suggs; i++) {
+ out_suggestions.push_back (suggs[i]);
+ }
+
+ enchant_dict_free_string_list (m_dict, suggs);
+ }
+ }
+
+ std::vector<std::string> Dict::suggest (const std::string & utf8word) {
+ std::vector<std::string> result;
+ suggest (utf8word, result);
+ return result;
+ }
+
+ //void hyphenate (const std::string & utf8word,
+ // std::string & out_suggestions) {
+ // // we only need to return one result
+ // // so delete it
+ //}
+
+ std::string Dict::hyphenate (const std::string & utf8word) {
+ std::string result;
+ result=enchant_dict_hyphenate (m_dict,utf8word.c_str(), -1);
+ return result;
+ }
+
+
+
+ Dict * Broker::request_dict (const std::string & lang) {
+ EnchantDict * dict = enchant_broker_request_dict (m_broker, lang.c_str());
+
+ if (!dict) {
+ throw enchant::Exception (enchant_broker_get_error (m_broker));
+ return 0; // never reached
+ }
+
+ return new Dict (dict, m_broker);
+ }
+
+ Dict * Broker::request_pwl_dict (const std::string & pwl) {
+ EnchantDict * dict = enchant_broker_request_pwl_dict (m_broker, pwl.c_str());
+
+ if (!dict) {
+ throw enchant::Exception (enchant_broker_get_error (m_broker));
+ return 0; // never reached
+ }
+
+ return new Dict (dict, m_broker);
+ }
+} // enchant namespace
+