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(); m_phraseReplacement.close();
} }
bool McBopomofoLM::isDataModelLoaded()
{
return m_languageModel.isLoaded();
}
void McBopomofoLM::loadLanguageModel(const char* languageModelDataPath) void McBopomofoLM::loadLanguageModel(const char* languageModelDataPath)
{ {
if (languageModelDataPath) { if (languageModelDataPath) {

View File

@ -64,6 +64,8 @@ public:
/// Asks to load the primary language model a the given path. /// Asks to load the primary language model a the given path.
/// @param languageModelPath Thw path of the language model. /// @param languageModelPath Thw path of the language model.
void loadLanguageModel(const char* languageModelPath); 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. /// Asks to load the user phrases and excluded phrases at the given path.
/// @param userPhrasesPath The path of user phrases. /// @param userPhrasesPath The path of user phrases.
/// @param excludedPhrasesPath The path of excluded phrases. /// @param excludedPhrasesPath The path of excluded phrases.

View File

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

View File

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

View File

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