summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDom Lachowicz <domlachowicz@gmail.com>2009-05-22 21:24:38 +0000
committerDom Lachowicz <domlachowicz@gmail.com>2009-05-22 21:24:38 +0000
commit38d3b1737836861a1bed5d8b4f05e8b3c0aa4a89 (patch)
tree830c2c1671c5eee280c001751ac9f3e45023b1e8
parenta339c36b768e1d295ef865f10bd8df9e898c3050 (diff)
downloadenchant-38d3b1737836861a1bed5d8b4f05e8b3c0aa4a89.tar.gz
pass the broker to the correct classes and functions; will be useful in setting dictionary paths
git-svn-id: svn+ssh://svn.abisource.com/svnroot/enchant/trunk@26481 bcba8976-2d24-0410-9c9c-aab3bd5fdfd6
-rw-r--r--src/ispell/ispell_checker.cpp23
-rw-r--r--src/ispell/ispell_checker.h6
-rw-r--r--src/myspell/myspell_checker.cpp41
3 files changed, 38 insertions, 32 deletions
diff --git a/src/ispell/ispell_checker.cpp b/src/ispell/ispell_checker.cpp
index bfdc6fb..fd1fdf4 100644
--- a/src/ispell/ispell_checker.cpp
+++ b/src/ispell/ispell_checker.cpp
@@ -115,8 +115,9 @@ ISpellChecker::try_autodetect_charset(const char * const inEncoding)
/***************************************************************************/
/***************************************************************************/
-ISpellChecker::ISpellChecker()
- : deftflag(-1),
+ISpellChecker::ISpellChecker(EnchantBroker * broker)
+: m_broker(broker),
+ deftflag(-1),
prefstringchar(-1),
m_bSuccessfulInit(false),
m_BC(NULL),
@@ -301,7 +302,7 @@ ISpellChecker::suggestWord(const char * const utf8Word, size_t length,
}
static GSList *
-ispell_checker_get_dictionary_dirs (void)
+ispell_checker_get_dictionary_dirs (EnchantBroker * broker)
{
GSList *dirs = NULL;
@@ -360,13 +361,13 @@ ispell_checker_get_dictionary_dirs (void)
}
static void
-s_buildHashNames (std::vector<std::string> & names, const char * dict)
+s_buildHashNames (std::vector<std::string> & names, EnchantBroker * broker, const char * dict)
{
names.clear ();
GSList *dirs, *iter;
- dirs = ispell_checker_get_dictionary_dirs();
+ dirs = ispell_checker_get_dictionary_dirs(broker);
for (iter = dirs; iter; iter = iter->next)
{
char *tmp;
@@ -385,7 +386,7 @@ ISpellChecker::loadDictionary (const char * szdict)
{
std::vector<std::string> dict_names;
- s_buildHashNames (dict_names, szdict);
+ s_buildHashNames (dict_names, m_broker, szdict);
for (size_t i = 0; i < dict_names.size(); i++)
{
@@ -562,7 +563,7 @@ ispell_provider_request_dict (EnchantProvider * me, const char *const tag)
EnchantDict *dict;
ISpellChecker * checker;
- checker = new ISpellChecker ();
+ checker = new ISpellChecker (me->owner);
if (!checker)
{
@@ -595,11 +596,11 @@ ispell_provider_dispose_dict (EnchantProvider * me, EnchantDict * dict)
}
static int
-_ispell_provider_dictionary_exists (const char *const szFile)
+_ispell_provider_dictionary_exists (EnchantBroker * broker, const char *const szFile)
{
std::vector <std::string> names;
- s_buildHashNames (names, szFile);
+ s_buildHashNames (names, broker, szFile);
for (size_t i = 0; i < names.size(); i++) {
if (g_file_test (names[i].c_str(), G_FILE_TEST_EXISTS))
return 1;
@@ -619,7 +620,7 @@ ispell_provider_list_dictionaries (EnchantProvider * me,
nb = 0;
for (i = 0; i < size_ispell_map; i++)
- if (_ispell_provider_dictionary_exists (ispell_map[i].dict))
+ if (_ispell_provider_dictionary_exists (me->owner, ispell_map[i].dict))
out_dicts[nb++] = g_strdup (ispell_map[i].lang);
*out_n_dicts = nb;
@@ -644,7 +645,7 @@ ispell_provider_dictionary_exists (struct str_enchant_provider * me,
{
const IspellMap * mapping = (const IspellMap *)(&(ispell_map[i]));
if (!strcmp (tag, mapping->lang) || !strcmp (shortened_dict.c_str(), mapping->lang))
- return _ispell_provider_dictionary_exists(mapping->dict);
+ return _ispell_provider_dictionary_exists(me->owner, mapping->dict);
}
return 0;
diff --git a/src/ispell/ispell_checker.h b/src/ispell/ispell_checker.h
index be14fc1..7e34e13 100644
--- a/src/ispell/ispell_checker.h
+++ b/src/ispell/ispell_checker.h
@@ -33,11 +33,12 @@
#include <glib.h> // give glib a chance to override MAXPATHLEN first before it is set in ispell.h
#include "ispell.h"
+#include "enchant.h"
class ISpellChecker
{
public:
- ISpellChecker();
+ ISpellChecker(EnchantBroker * broker);
~ISpellChecker();
bool checkWord(const char * const word, size_t len);
@@ -46,6 +47,9 @@ public:
bool requestDictionary (const char * szLang);
private:
+ EnchantBroker* m_broker;
+
+ ISpellChecker();
ISpellChecker(const ISpellChecker&); // no impl
void operator=(const ISpellChecker&); // no impl
diff --git a/src/myspell/myspell_checker.cpp b/src/myspell/myspell_checker.cpp
index dcadb43..88f9636 100644
--- a/src/myspell/myspell_checker.cpp
+++ b/src/myspell/myspell_checker.cpp
@@ -57,7 +57,7 @@ ENCHANT_PLUGIN_DECLARE("Myspell")
class MySpellChecker
{
public:
- MySpellChecker();
+ MySpellChecker(EnchantBroker * broker);
~MySpellChecker();
bool checkWord (const char *word, size_t len);
@@ -69,6 +69,7 @@ private:
GIConv m_translate_in; /* Selected translation from/to Unicode */
GIConv m_translate_out;
Hunspell *myspell;
+ EnchantBroker *m_broker;
};
/***************************************************************************/
@@ -129,8 +130,8 @@ g_iconv_is_valid(GIConv i)
return (i != G_ICONV_INVALID);
}
-MySpellChecker::MySpellChecker()
- : m_translate_in(G_ICONV_INVALID), m_translate_out(G_ICONV_INVALID), myspell(0)
+MySpellChecker::MySpellChecker(EnchantBroker * broker)
+: m_translate_in(G_ICONV_INVALID), m_translate_out(G_ICONV_INVALID), myspell(0), m_broker(broker)
{
}
@@ -218,7 +219,7 @@ MySpellChecker::suggestWord(const char* const utf8Word, size_t len, size_t *nsug
}
static GSList *
-myspell_checker_get_dictionary_dirs (void)
+myspell_checker_get_dictionary_dirs (EnchantBroker * broker)
{
GSList *dirs = NULL;
@@ -283,13 +284,13 @@ myspell_checker_get_dictionary_dirs (void)
}
static void
-s_buildDictionaryDirs (std::vector<std::string> & dirs)
+s_buildDictionaryDirs (std::vector<std::string> & dirs, EnchantBroker * broker)
{
GSList *myspell_dirs, *iter;
dirs.clear ();
- myspell_dirs = myspell_checker_get_dictionary_dirs ();
+ myspell_dirs = myspell_checker_get_dictionary_dirs (broker);
for (iter = myspell_dirs; iter; iter = iter->next)
{
dirs.push_back ((const char *)iter->data);
@@ -300,12 +301,12 @@ s_buildDictionaryDirs (std::vector<std::string> & dirs)
}
static void
-s_buildHashNames (std::vector<std::string> & names, const char * dict)
+s_buildHashNames (std::vector<std::string> & names, EnchantBroker * broker, const char * dict)
{
names.clear ();
std::vector<std::string> dirs;
- s_buildDictionaryDirs (dirs);
+ s_buildDictionaryDirs (dirs, broker);
char *dict_dic = g_strconcat(dict, ".dic", NULL);
for (size_t i = 0; i < dirs.size(); i++)
@@ -327,22 +328,22 @@ s_hasCorrespondingAffFile(const std::string & dicFile)
}
static char *
-myspell_request_dictionary (const char * tag)
+myspell_request_dictionary (EnchantBroker * broker, const char * tag)
{
std::vector<std::string> names;
- s_buildHashNames (names, tag);
+ s_buildHashNames (names, broker, tag);
for (size_t i = 0; i < names.size (); i++) {
- if (g_file_test(names[i].c_str(), G_FILE_TEST_EXISTS)) {
- if(s_hasCorrespondingAffFile(names[i])){
- return g_strdup (names[i].c_str());
- }
- }
+ if (g_file_test(names[i].c_str(), G_FILE_TEST_EXISTS)) {
+ if(s_hasCorrespondingAffFile(names[i])){
+ return g_strdup (names[i].c_str());
+ }
+ }
}
std::vector<std::string> dirs;
- s_buildDictionaryDirs (dirs);
+ s_buildDictionaryDirs (dirs, broker);
for (size_t i = 0; i < dirs.size(); i++) {
GDir *dir = g_dir_open (dirs[i].c_str(), 0, NULL);
@@ -372,7 +373,7 @@ MySpellChecker::requestDictionary(const char *szLang)
{
char *dic = NULL, *aff = NULL;
- dic = myspell_request_dictionary (szLang);
+ dic = myspell_request_dictionary (m_broker, szLang);
if (!dic)
return false;
@@ -467,7 +468,7 @@ myspell_provider_list_dicts (EnchantProvider * me,
std::vector<std::string> dict_dirs, dicts;
char ** dictionary_list = NULL;
- s_buildDictionaryDirs (dict_dirs);
+ s_buildDictionaryDirs (dict_dirs, me->owner);
for (size_t i = 0; i < dict_dirs.size(); i++)
{
@@ -497,7 +498,7 @@ myspell_provider_request_dict(EnchantProvider * me, const char *const tag)
EnchantDict *dict;
MySpellChecker * checker;
- checker = new MySpellChecker();
+ checker = new MySpellChecker(me->owner);
if (!checker)
return NULL;
@@ -533,7 +534,7 @@ myspell_provider_dictionary_exists (struct str_enchant_provider * me,
{
std::vector <std::string> names;
- s_buildHashNames (names, tag);
+ s_buildHashNames (names, me->owner, tag);
for (size_t i = 0; i < names.size(); i++) {
if (g_file_test (names[i].c_str(), G_FILE_TEST_EXISTS))
{