Refs #11 HL Memory Model // dev phase 1: Fixed

This commit is contained in:
Hiraku 2022-01-10 16:23:32 +08:00
parent ef97bc5db9
commit c4ff702f42
1 changed files with 5 additions and 0 deletions

View File

@ -119,6 +119,7 @@ FastLM gLanguageModelSimpBopomofo;
static const int kUserOverrideModelCapacity = 500; static const int kUserOverrideModelCapacity = 500;
static const double kObservedOverrideHalflife = 5400.0; // 1.5 hr. static const double kObservedOverrideHalflife = 5400.0; // 1.5 hr.
vChewing::UserOverrideModel gUserOverrideModel(kUserOverrideModelCapacity, kObservedOverrideHalflife); vChewing::UserOverrideModel gUserOverrideModel(kUserOverrideModelCapacity, kObservedOverrideHalflife);
vChewing::UserOverrideModel gUserOverrideModelSimpBopomofo(kUserOverrideModelCapacity, kObservedOverrideHalflife);
// https://clang-analyzer.llvm.org/faq.html // https://clang-analyzer.llvm.org/faq.html
__attribute__((annotate("returns_localized_nsstring"))) __attribute__((annotate("returns_localized_nsstring")))
@ -328,14 +329,17 @@ static double FindHighestScore(const vector<NodeAnchor>& nodes, double epsilon)
{ {
NSString *newInputMode; NSString *newInputMode;
Formosa::Gramambular::FastLM *newLanguageModel; Formosa::Gramambular::FastLM *newLanguageModel;
vChewing::UserOverrideModel *newUom;
if ([value isKindOfClass:[NSString class]] && [value isEqual:kSimpBopomofoModeIdentifier]) { if ([value isKindOfClass:[NSString class]] && [value isEqual:kSimpBopomofoModeIdentifier]) {
newInputMode = kSimpBopomofoModeIdentifier; newInputMode = kSimpBopomofoModeIdentifier;
newLanguageModel = &gLanguageModelSimpBopomofo; newLanguageModel = &gLanguageModelSimpBopomofo;
newUom = &gUserOverrideModelSimpBopomofo;
} }
else { else {
newInputMode = kBopomofoModeIdentifier; newInputMode = kBopomofoModeIdentifier;
newLanguageModel = &gLanguageModel; newLanguageModel = &gLanguageModel;
newUom = &gUserOverrideModel;
} }
// Only apply the changes if the value is changed // Only apply the changes if the value is changed
@ -366,6 +370,7 @@ static double FindHighestScore(const vector<NodeAnchor>& nodes, double epsilon)
_builder = new BlockReadingBuilder(_languageModel); _builder = new BlockReadingBuilder(_languageModel);
_builder->setJoinSeparator("-"); _builder->setJoinSeparator("-");
} }
_uom = newUom;
} }
} }