LMAssembly // Use class in lieu of struct.

This commit is contained in:
ShikiSuen 2022-10-18 18:23:18 +08:00
parent da891266f5
commit 5ca4138b63
8 changed files with 38 additions and 38 deletions

View File

@ -56,40 +56,40 @@ extension vChewingLM {
// //
// Reverse // Reverse
// Reverse // Reverse
var lmCore = LMCoreNS( let lmCore = LMCoreNS(
reverse: false, consolidate: false, defaultScore: -9.9, forceDefaultScore: false reverse: false, consolidate: false, defaultScore: -9.9, forceDefaultScore: false
) )
var lmMisc = LMCoreNS( let lmMisc = LMCoreNS(
reverse: true, consolidate: false, defaultScore: -1.0, forceDefaultScore: false reverse: true, consolidate: false, defaultScore: -1.0, forceDefaultScore: false
) )
// //
// 100MB // 100MB
static var lmCNS = vChewingLM.LMCoreNS( static let lmCNS = vChewingLM.LMCoreNS(
reverse: true, consolidate: false, defaultScore: -11.0, forceDefaultScore: false reverse: true, consolidate: false, defaultScore: -11.0, forceDefaultScore: false
) )
static var lmSymbols = vChewingLM.LMCoreNS( static let lmSymbols = vChewingLM.LMCoreNS(
reverse: true, consolidate: false, defaultScore: -13.0, forceDefaultScore: false reverse: true, consolidate: false, defaultScore: -13.0, forceDefaultScore: false
) )
// currentCassetteMetadata // currentCassetteMetadata
static var lmCassette = LMCassette() static let lmCassette = LMCassette()
public var currentCassette: LMCassette { Self.lmCassette } public var currentCassette: LMCassette { Self.lmCassette }
// 使 // 使
// 使使 // 使使
var lmUserPhrases = LMCoreEX( let lmUserPhrases = LMCoreEX(
reverse: true, consolidate: true, defaultScore: 0, forceDefaultScore: false reverse: true, consolidate: true, defaultScore: 0, forceDefaultScore: false
) )
var lmFiltered = LMCoreEX( let lmFiltered = LMCoreEX(
reverse: true, consolidate: true, defaultScore: 0, forceDefaultScore: true reverse: true, consolidate: true, defaultScore: 0, forceDefaultScore: true
) )
var lmUserSymbols = LMCoreEX( let lmUserSymbols = LMCoreEX(
reverse: true, consolidate: true, defaultScore: -12.0, forceDefaultScore: true reverse: true, consolidate: true, defaultScore: -12.0, forceDefaultScore: true
) )
var lmReplacements = LMReplacements() let lmReplacements = LMReplacements()
var lmAssociates = LMAssociates() let lmAssociates = LMAssociates()
var lmPlainBopomofo = LMPlainBopomofo() let lmPlainBopomofo = LMPlainBopomofo()
// MARK: - // MARK: -
@ -139,7 +139,7 @@ extension vChewingLM {
public func loadUserPhrasesData(path: String, filterPath: String) { public func loadUserPhrasesData(path: String, filterPath: String) {
DispatchQueue.main.async { DispatchQueue.main.async {
if FileManager.default.isReadableFile(atPath: path) { if FileManager.default.isReadableFile(atPath: path) {
self.lmUserPhrases.close() self.lmUserPhrases.clear()
self.lmUserPhrases.open(path) self.lmUserPhrases.open(path)
vCLog("lmUserPhrases: \(self.lmUserPhrases.count) entries of data loaded from: \(path)") vCLog("lmUserPhrases: \(self.lmUserPhrases.count) entries of data loaded from: \(path)")
} else { } else {
@ -148,7 +148,7 @@ extension vChewingLM {
} }
DispatchQueue.main.async { DispatchQueue.main.async {
if FileManager.default.isReadableFile(atPath: filterPath) { if FileManager.default.isReadableFile(atPath: filterPath) {
self.lmFiltered.close() self.lmFiltered.clear()
self.lmFiltered.open(filterPath) self.lmFiltered.open(filterPath)
vCLog("lmFiltered: \(self.lmFiltered.count) entries of data loaded from: \(path)") vCLog("lmFiltered: \(self.lmFiltered.count) entries of data loaded from: \(path)")
} else { } else {
@ -160,7 +160,7 @@ extension vChewingLM {
public func loadUserSymbolData(path: String) { public func loadUserSymbolData(path: String) {
DispatchQueue.main.async { DispatchQueue.main.async {
if FileManager.default.isReadableFile(atPath: path) { if FileManager.default.isReadableFile(atPath: path) {
self.lmUserSymbols.close() self.lmUserSymbols.clear()
self.lmUserSymbols.open(path) self.lmUserSymbols.open(path)
vCLog("lmUserSymbol: \(self.lmUserSymbols.count) entries of data loaded from: \(path)") vCLog("lmUserSymbol: \(self.lmUserSymbols.count) entries of data loaded from: \(path)")
} else { } else {
@ -172,7 +172,7 @@ extension vChewingLM {
public func loadUserAssociatesData(path: String) { public func loadUserAssociatesData(path: String) {
DispatchQueue.main.async { DispatchQueue.main.async {
if FileManager.default.isReadableFile(atPath: path) { if FileManager.default.isReadableFile(atPath: path) {
self.lmAssociates.close() self.lmAssociates.clear()
self.lmAssociates.open(path) self.lmAssociates.open(path)
vCLog("lmAssociates: \(self.lmAssociates.count) entries of data loaded from: \(path)") vCLog("lmAssociates: \(self.lmAssociates.count) entries of data loaded from: \(path)")
} else { } else {
@ -184,7 +184,7 @@ extension vChewingLM {
public func loadReplacementsData(path: String) { public func loadReplacementsData(path: String) {
DispatchQueue.main.async { DispatchQueue.main.async {
if FileManager.default.isReadableFile(atPath: path) { if FileManager.default.isReadableFile(atPath: path) {
self.lmReplacements.close() self.lmReplacements.clear()
self.lmReplacements.open(path) self.lmReplacements.open(path)
vCLog("lmReplacements: \(self.lmReplacements.count) entries of data loaded from: \(path)") vCLog("lmReplacements: \(self.lmReplacements.count) entries of data loaded from: \(path)")
} else { } else {
@ -196,7 +196,7 @@ extension vChewingLM {
public func loadUserSCPCSequencesData(path: String) { public func loadUserSCPCSequencesData(path: String) {
DispatchQueue.main.async { DispatchQueue.main.async {
if FileManager.default.isReadableFile(atPath: path) { if FileManager.default.isReadableFile(atPath: path) {
self.lmPlainBopomofo.close() self.lmPlainBopomofo.clear()
self.lmPlainBopomofo.open(path) self.lmPlainBopomofo.open(path)
vCLog("lmPlainBopomofo: \(self.lmPlainBopomofo.count) entries of data loaded from: \(path)") vCLog("lmPlainBopomofo: \(self.lmPlainBopomofo.count) entries of data loaded from: \(path)")
} else { } else {
@ -208,7 +208,7 @@ extension vChewingLM {
public static func loadCassetteData(path: String) { public static func loadCassetteData(path: String) {
DispatchQueue.main.async { DispatchQueue.main.async {
if FileManager.default.isReadableFile(atPath: path) { if FileManager.default.isReadableFile(atPath: path) {
Self.lmCassette.close() Self.lmCassette.clear()
Self.lmCassette.open(path) Self.lmCassette.open(path)
vCLog("lmCassette: \(Self.lmCassette.count) entries of data loaded from: \(path)") vCLog("lmCassette: \(Self.lmCassette.count) entries of data loaded from: \(path)")
} else { } else {

View File

@ -12,7 +12,7 @@ import PinyinPhonaConverter
import Shared import Shared
extension vChewingLM { extension vChewingLM {
@frozen public struct LMAssociates { public class LMAssociates {
var rangeMap: [String: [(Range<String.Index>, Int)]] = [:] var rangeMap: [String: [(Range<String.Index>, Int)]] = [:]
var strData: String = "" var strData: String = ""
@ -35,7 +35,7 @@ extension vChewingLM {
return "(\(arrTarget0),\(arrTarget[1]))" return "(\(arrTarget0),\(arrTarget[1]))"
} }
@discardableResult public mutating func open(_ path: String) -> Bool { @discardableResult public func open(_ path: String) -> Bool {
if isLoaded { return false } if isLoaded { return false }
LMConsolidator.fixEOF(path: path) LMConsolidator.fixEOF(path: path)
@ -65,7 +65,7 @@ extension vChewingLM {
return true return true
} }
public mutating func close() { public func clear() {
rangeMap.removeAll() rangeMap.removeAll()
} }

View File

@ -14,7 +14,7 @@ import Shared
extension vChewingLM { extension vChewingLM {
/// 便使 /// 便使
@frozen public struct LMCassette { public class LMCassette {
public private(set) var nameENG: String = "" public private(set) var nameENG: String = ""
public private(set) var nameCJK: String = "" public private(set) var nameCJK: String = ""
/// ///
@ -46,7 +46,7 @@ extension vChewingLM {
/// - `%chardef begin` `%chardef end` /// - `%chardef begin` `%chardef end`
/// - Parameter path: /// - Parameter path:
/// - Returns: /// - Returns:
@discardableResult public mutating func open(_ path: String) -> Bool { @discardableResult public func open(_ path: String) -> Bool {
if isLoaded { return false } if isLoaded { return false }
if FileManager.default.fileExists(atPath: path) { if FileManager.default.fileExists(atPath: path) {
do { do {
@ -111,7 +111,7 @@ extension vChewingLM {
return false return false
} }
public mutating func close() { public func clear() {
keyNameMap.removeAll() keyNameMap.removeAll()
charDefMap.removeAll() charDefMap.removeAll()
nameENG.removeAll() nameENG.removeAll()

View File

@ -16,7 +16,7 @@ extension vChewingLM {
/// range strData /// range strData
/// C++ ParselessLM Swift /// C++ ParselessLM Swift
/// For /// For
@frozen public struct LMCoreEX { public class LMCoreEX {
/// 便 strData /// 便 strData
var rangeMap: [String: [Range<String.Index>]] = [:] var rangeMap: [String: [Range<String.Index>]] = [:]
/// ///
@ -56,7 +56,7 @@ extension vChewingLM {
/// ///
/// - parameters: /// - parameters:
/// - path: /// - path:
@discardableResult public mutating func open(_ path: String) -> Bool { @discardableResult public func open(_ path: String) -> Bool {
if isLoaded { return false } if isLoaded { return false }
if allowConsolidation { if allowConsolidation {
@ -88,7 +88,7 @@ extension vChewingLM {
} }
/// ///
public mutating func close() { public func clear() {
rangeMap.removeAll() rangeMap.removeAll()
} }

View File

@ -14,7 +14,7 @@ extension vChewingLM {
/// LMCore LMCoreNS plist /// LMCore LMCoreNS plist
/// mac /// mac
/// 使 plist /// 使 plist
@frozen public struct LMCoreNS { public class LMCoreNS {
/// UTF8 /// UTF8
var rangeMap: [String: [Data]] = [:] var rangeMap: [String: [Data]] = [:]
/// LMCoreNS /// LMCoreNS
@ -57,7 +57,7 @@ extension vChewingLM {
/// ///
/// - parameters: /// - parameters:
/// - path: /// - path:
@discardableResult public mutating func open(_ path: String) -> Bool { @discardableResult public func open(_ path: String) -> Bool {
if isLoaded { return false } if isLoaded { return false }
do { do {
@ -74,7 +74,7 @@ extension vChewingLM {
} }
/// ///
public mutating func close() { public func clear() {
rangeMap.removeAll() rangeMap.removeAll()
} }

View File

@ -11,7 +11,7 @@ import Foundation
import Shared import Shared
extension vChewingLM { extension vChewingLM {
@frozen public struct LMPlainBopomofo { public class LMPlainBopomofo {
var rangeMap: [String: String] = [:] var rangeMap: [String: String] = [:]
public var count: Int { rangeMap.count } public var count: Int { rangeMap.count }
@ -22,7 +22,7 @@ extension vChewingLM {
public var isLoaded: Bool { !rangeMap.isEmpty } public var isLoaded: Bool { !rangeMap.isEmpty }
@discardableResult public mutating func open(_ path: String) -> Bool { @discardableResult public func open(_ path: String) -> Bool {
if isLoaded { return false } if isLoaded { return false }
do { do {
@ -39,7 +39,7 @@ extension vChewingLM {
return true return true
} }
public mutating func close() { public func clear() {
rangeMap.removeAll() rangeMap.removeAll()
} }

View File

@ -10,7 +10,7 @@
import Shared import Shared
extension vChewingLM { extension vChewingLM {
@frozen public struct LMReplacements { public class LMReplacements {
var rangeMap: [String: Range<String.Index>] = [:] var rangeMap: [String: Range<String.Index>] = [:]
var strData: String = "" var strData: String = ""
@ -22,7 +22,7 @@ extension vChewingLM {
public var isLoaded: Bool { !rangeMap.isEmpty } public var isLoaded: Bool { !rangeMap.isEmpty }
@discardableResult public mutating func open(_ path: String) -> Bool { @discardableResult public func open(_ path: String) -> Bool {
if isLoaded { return false } if isLoaded { return false }
LMConsolidator.fixEOF(path: path) LMConsolidator.fixEOF(path: path)
@ -50,7 +50,7 @@ extension vChewingLM {
return true return true
} }
public mutating func close() { public func clear() {
rangeMap.removeAll() rangeMap.removeAll()
} }

View File

@ -21,7 +21,7 @@ private let testDataPath: String = packageRootPath + "/Tests/TestCINData/"
final class LMCassetteTests: XCTestCase { final class LMCassetteTests: XCTestCase {
func testCassetteLoadWubi98() throws { func testCassetteLoadWubi98() throws {
let pathCINFile = testDataPath + "wubi98.cin" let pathCINFile = testDataPath + "wubi98.cin"
var lmCassette = vChewingLM.LMCassette() let lmCassette98 = vChewingLM.LMCassette()
NSLog("LMCassette: Start loading CIN.") NSLog("LMCassette: Start loading CIN.")
lmCassette98.open(pathCINFile) lmCassette98.open(pathCINFile)
NSLog("LMCassette: Finished loading CIN. Entries: \(lmCassette98.count)") NSLog("LMCassette: Finished loading CIN. Entries: \(lmCassette98.count)")
@ -36,7 +36,7 @@ final class LMCassetteTests: XCTestCase {
func testCassetteLoadWubi86() throws { func testCassetteLoadWubi86() throws {
let pathCINFile = testDataPath + "wubi86.cin" let pathCINFile = testDataPath + "wubi86.cin"
var lmCassette = vChewingLM.LMCassette() let lmCassette86 = vChewingLM.LMCassette()
NSLog("LMCassette: Start loading CIN.") NSLog("LMCassette: Start loading CIN.")
lmCassette86.open(pathCINFile) lmCassette86.open(pathCINFile)
NSLog("LMCassette: Finished loading CIN. Entries: \(lmCassette86.count)") NSLog("LMCassette: Finished loading CIN. Entries: \(lmCassette86.count)")