mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-07 19:18:19 +02:00
64 lines
No EOL
1.5 KiB
C++
64 lines
No EOL
1.5 KiB
C++
#include "BeefySysLib/Common.h"
|
|
#include "Beef/BfCommon.h"
|
|
|
|
#define HUNSPELL_STATIC
|
|
#include "../../extern/hunspell/src/hunspell/hunspell.h"
|
|
|
|
USING_NS_BF;
|
|
|
|
class SpellChecker
|
|
{
|
|
public:
|
|
Hunhandle* mHunHandle;
|
|
|
|
~SpellChecker()
|
|
{
|
|
Hunspell_destroy(mHunHandle);
|
|
}
|
|
};
|
|
|
|
BF_EXPORT SpellChecker* BF_CALLTYPE SpellChecker_Create(const char* langPath)
|
|
{
|
|
String langPathStr = langPath;
|
|
auto hunHandle = Hunspell_create((langPathStr + ".aff").c_str(), (langPathStr + ".dic").c_str());
|
|
if (hunHandle == 0)
|
|
{
|
|
return NULL;
|
|
}
|
|
|
|
SpellChecker* spellChecker = new SpellChecker();
|
|
spellChecker->mHunHandle = hunHandle;
|
|
|
|
return spellChecker;
|
|
}
|
|
|
|
BF_EXPORT void BF_CALLTYPE SpellChecker_Delete(SpellChecker* spellChecker)
|
|
{
|
|
delete spellChecker;
|
|
}
|
|
|
|
BF_EXPORT bool BF_CALLTYPE SpellChecker_IsWord(SpellChecker* spellChecker, const char* word)
|
|
{
|
|
return Hunspell_spell(spellChecker->mHunHandle, word) != 0;
|
|
}
|
|
|
|
BF_EXPORT void BF_CALLTYPE SpellChecker_AddWord(SpellChecker* spellChecker, const char* word)
|
|
{
|
|
Hunspell_add(spellChecker->mHunHandle, word);
|
|
}
|
|
|
|
BF_EXPORT const char* BF_CALLTYPE SpellChecker_GetSuggestions(SpellChecker* spellChecker, const char* word)
|
|
{
|
|
String& returnString = *gTLStrReturn.Get();
|
|
returnString.clear();
|
|
char** suggestList = NULL;
|
|
int suggestCount = Hunspell_suggest(spellChecker->mHunHandle, &suggestList, word);
|
|
for (int i = 0; i < suggestCount; i++)
|
|
{
|
|
if (!returnString.empty())
|
|
returnString += "\n";
|
|
returnString += suggestList[i];
|
|
}
|
|
Hunspell_free_list(spellChecker->mHunHandle, &suggestList, suggestCount);
|
|
return returnString.c_str();
|
|
} |