Prevents loading data models repeatedly.

This commit is contained in:
zonble 2022-01-30 20:27:33 +08:00
parent fe67daceee
commit 8ba4b9dfdf
5 changed files with 28 additions and 4 deletions

View File

@ -39,6 +39,11 @@ McBopomofoLM::~McBopomofoLM()
m_phraseReplacement.close();
}
bool McBopomofoLM::isDataModelLoaded()
{
return m_languageModel.isLoaded();
}
void McBopomofoLM::loadLanguageModel(const char* languageModelDataPath)
{
if (languageModelDataPath) {

View File

@ -64,6 +64,8 @@ public:
/// Asks to load the primary language model a the given path.
/// @param languageModelPath Thw path of the language model.
void loadLanguageModel(const char* languageModelPath);
/// If the data model is already loaded.
bool isDataModelLoaded();
/// Asks to load the user phrases and excluded phrases at the given path.
/// @param userPhrasesPath The path of user phrases.
/// @param excludedPhrasesPath The path of excluded phrases.

View File

@ -32,6 +32,14 @@
McBopomofo::ParselessLM::~ParselessLM() { close(); }
bool McBopomofo::ParselessLM::isLoaded()
{
if (data_) {
return true;
}
return false;
}
bool McBopomofo::ParselessLM::open(const std::string_view& path)
{
if (data_) {

View File

@ -37,6 +37,7 @@ class ParselessLM : public Formosa::Gramambular::LanguageModel {
public:
~ParselessLM() override;
bool isLoaded();
bool open(const std::string_view& path);
void close();

View File

@ -55,17 +55,25 @@ static void LTLoadLanguageModelFile(NSString *filenameWithoutExtension, McBopomo
+ (void)loadDataModels
{
LTLoadLanguageModelFile(@"data", gLanguageModelMcBopomofo);
LTLoadLanguageModelFile(@"data-plain-bpmf", gLanguageModelPlainBopomofo);
if (!gLanguageModelMcBopomofo.isDataModelLoaded()) {
LTLoadLanguageModelFile(@"data", gLanguageModelMcBopomofo);
}
if (!gLanguageModelPlainBopomofo.isDataModelLoaded()) {
LTLoadLanguageModelFile(@"data-plain-bpmf", gLanguageModelPlainBopomofo);
}
}
+ (void)loadDataModel:(InputMode)mode
{
if ([mode isEqualToString:InputModeBopomofo]) {
LTLoadLanguageModelFile(@"data", gLanguageModelMcBopomofo);
if (!gLanguageModelMcBopomofo.isDataModelLoaded()) {
LTLoadLanguageModelFile(@"data", gLanguageModelMcBopomofo);
}
}
if ([mode isEqualToString:InputModePlainBopomofo]) {
LTLoadLanguageModelFile(@"data-plain-bpmf", gLanguageModelPlainBopomofo);
if (!gLanguageModelPlainBopomofo.isDataModelLoaded()) {
LTLoadLanguageModelFile(@"data-plain-bpmf", gLanguageModelPlainBopomofo);
}
}
}