From 817f3d4f401d8aac90bee71706cea1fd0712c84a Mon Sep 17 00:00:00 2001 From: chenxiajian Date: Fri, 26 Aug 2011 16:50:28 +0000 Subject: enchant++.cpp git-svn-id: svn+ssh://svn.abisource.com/svnroot/enchant/branches/gsoc2011hyphenation@30295 bcba8976-2d24-0410-9c9c-aab3bd5fdfd6 --- src/enchant++.cpp | 118 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 src/enchant++.cpp 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 +#include +#include +#include +#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 & 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 Dict::suggest (const std::string & utf8word) { + std::vector 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 + -- cgit v1.2.1