LMs // Use frozen structs on all subLMs.

This commit is contained in:
ShikiSuen 2022-05-03 23:24:35 +08:00
parent 25f1a85e9e
commit d0425f78c5
5 changed files with 24 additions and 49 deletions

View File

@ -31,8 +31,8 @@ import Foundation
//
// LMInstantiator 100MB
private let lmCNS = vChewing.LMLite(consolidate: false)
private let lmSymbols = vChewing.LMCore(reverse: true, consolidate: false, defaultScore: -13.0, forceDefaultScore: true)
private var lmCNS = vChewing.LMLite(consolidate: false)
private var lmSymbols = vChewing.LMCore(reverse: true, consolidate: false, defaultScore: -13.0, forceDefaultScore: true)
extension vChewing {
/// LMInstantiator is a facade for managing a set of models including
@ -69,22 +69,21 @@ extension vChewing {
/// 使 LMLite
/// LMLite
/// LMLite LMCore
/// 使 LMLiteMono
/// LMReplacements LMAssociates 使
//
/// Reverse
/// Reverse
let lmCore = LMCore(reverse: false, consolidate: false, defaultScore: -9.5, forceDefaultScore: false)
let lmMisc = LMCore(reverse: true, consolidate: false, defaultScore: -1, forceDefaultScore: false)
var lmCore = LMCore(reverse: false, consolidate: false, defaultScore: -9.5, forceDefaultScore: false)
var lmMisc = LMCore(reverse: true, consolidate: false, defaultScore: -1, forceDefaultScore: false)
// 使
// 使使
let lmUserPhrases = LMLiteMono(consolidate: true)
let lmFiltered = LMLiteMono(consolidate: true)
let lmUserSymbols = LMLiteMono(consolidate: true)
let lmReplacements = LMReplacments()
let lmAssociates = LMAssociates()
var lmUserPhrases = LMLite(consolidate: true)
var lmFiltered = LMLite(consolidate: true)
var lmUserSymbols = LMLite(consolidate: true)
var lmReplacements = LMReplacments()
var lmAssociates = LMAssociates()
//
override init() {}

View File

@ -27,7 +27,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
import Foundation
extension vChewing {
public class LMAssociates {
@frozen public struct LMAssociates {
var keyValueMap: [String: [Megrez.KeyValuePair]] = [:]
var theData: String = ""
@ -36,17 +36,11 @@ extension vChewing {
theData = ""
}
deinit {
if isLoaded() {
close()
}
}
public func isLoaded() -> Bool {
!keyValueMap.isEmpty
}
@discardableResult public func open(_ path: String) -> Bool {
@discardableResult mutating public func open(_ path: String) -> Bool {
if isLoaded() {
return false
}
@ -98,7 +92,7 @@ extension vChewing {
return true
}
public func close() {
mutating public func close() {
if isLoaded() {
keyValueMap.removeAll()
}

View File

@ -27,7 +27,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
import Foundation
extension vChewing {
public class LMCore {
@frozen public struct LMCore {
var keyValueScoreMap: [String: [Megrez.Unigram]] = [:]
var theData: String = ""
var shouldReverse: Bool = false
@ -47,17 +47,11 @@ extension vChewing {
shouldForceDefaultScore = forceDefaultScore
}
deinit {
if isLoaded() {
close()
}
}
public func isLoaded() -> Bool {
!keyValueScoreMap.isEmpty
}
@discardableResult public func open(_ path: String) -> Bool {
@discardableResult mutating public func open(_ path: String) -> Bool {
if isLoaded() {
return false
}
@ -132,7 +126,7 @@ extension vChewing {
return true
}
public func close() {
mutating public func close() {
if isLoaded() {
keyValueScoreMap.removeAll()
}
@ -152,17 +146,17 @@ extension vChewing {
IME.prtDebugIntel(strDump)
}
open func bigramsForKeys(precedingKey: String, key: String) -> [Megrez.Bigram] {
public func bigramsForKeys(precedingKey: String, key: String) -> [Megrez.Bigram] {
// Swift
// [Megrez.Bigram]()
precedingKey == key ? [Megrez.Bigram]() : [Megrez.Bigram]()
}
open func unigramsFor(key: String) -> [Megrez.Unigram] {
public func unigramsFor(key: String) -> [Megrez.Unigram] {
keyValueScoreMap[key] ?? [Megrez.Unigram]()
}
open func hasUnigramsFor(key: String) -> Bool {
public func hasUnigramsFor(key: String) -> Bool {
keyValueScoreMap[key] != nil
}
}

View File

@ -27,7 +27,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
import Foundation
extension vChewing {
public class LMLite {
@frozen public struct LMLite {
var keyValueMap: [String: [Megrez.KeyValuePair]] = [:]
var theData: String = ""
var allowConsolidation = false
@ -38,17 +38,11 @@ extension vChewing {
allowConsolidation = consolidate
}
deinit {
if isLoaded() {
close()
}
}
public func isLoaded() -> Bool {
!keyValueMap.isEmpty
}
@discardableResult public func open(_ path: String) -> Bool {
@discardableResult mutating public func open(_ path: String) -> Bool {
if isLoaded() {
return false
}
@ -105,7 +99,7 @@ extension vChewing {
return true
}
public func close() {
mutating public func close() {
if isLoaded() {
keyValueMap.removeAll()
}

View File

@ -27,7 +27,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
import Foundation
extension vChewing {
public class LMReplacments {
@frozen public struct LMReplacments {
var keyValueMap: [String: String] = [:]
var theData: String = ""
@ -36,17 +36,11 @@ extension vChewing {
theData = ""
}
deinit {
if isLoaded() {
close()
}
}
public func isLoaded() -> Bool {
!keyValueMap.isEmpty
}
@discardableResult public func open(_ path: String) -> Bool {
@discardableResult mutating public func open(_ path: String) -> Bool {
if isLoaded() {
return false
}
@ -98,7 +92,7 @@ extension vChewing {
return true
}
public func close() {
mutating public func close() {
if isLoaded() {
keyValueMap.removeAll()
}