Initial prototype for Swift 6 mode

This commit is contained in:
John Estropia
2026-07-07 11:18:17 +09:00
parent 38ec439b18
commit 49f65601cd
71 changed files with 998 additions and 684 deletions
+38 -14
View File
@@ -24,6 +24,7 @@
//
import Foundation
import os
// MARK: - CoreStoreDefaults
@@ -36,7 +37,29 @@ public enum CoreStoreDefaults {
/**
The `CoreStoreLogger` instance to be used. The default logger is an instance of a `DefaultLogger`.
*/
public static var logger: CoreStoreLogger = DefaultLogger()
public static var logger: CoreStoreLogger {
get {
return self.loggerInstance.withLock {
if let logger = $0 {
return logger
}
let logger = DefaultLogger()
$0 = logger
return logger
}
}
set {
self.loggerInstance.withLock {
$0 = newValue
}
}
}
/**
The default `DataStack` instance to be used. If `defaultStack` is not set during the first time accessed, a default-configured `DataStack` will be created.
@@ -47,21 +70,23 @@ public enum CoreStoreDefaults {
public static var dataStack: DataStack {
get {
self.defaultStackBarrierQueue.sync(flags: .barrier) {
if self.defaultStackInstance == nil {
self.defaultStackInstance = DataStack()
return self.defaultStackInstance.withLock {
if let dataStack = $0 {
return dataStack
}
let dataStack = DataStack()
$0 = dataStack
return dataStack
}
return self.defaultStackInstance!
}
set {
self.defaultStackBarrierQueue.async(flags: .barrier) {
self.defaultStackInstance = newValue
self.defaultStackInstance.withLock {
$0 = newValue
}
}
}
@@ -69,7 +94,6 @@ public enum CoreStoreDefaults {
// MARK: Private
private static let defaultStackBarrierQueue = DispatchQueue.concurrent("com.coreStore.defaultStackBarrierQueue", qos: .userInteractive)
private static var defaultStackInstance: DataStack?
private static let defaultStackInstance: OSAllocatedUnfairLock<DataStack?> = .init(initialState: nil)
private static let loggerInstance: OSAllocatedUnfairLock<(any CoreStoreLogger)?> = .init(initialState: nil)
}