mirror of
https://github.com/yonaskolb/XcodeGen.git
synced 2024-08-17 08:40:28 +03:00
Merge 74e99ecc51
into 0301741002
This commit is contained in:
commit
4a3a347bea
37
Sources/XcodeGenKit/NSCacheExtensions.swift
Normal file
37
Sources/XcodeGenKit/NSCacheExtensions.swift
Normal file
@ -0,0 +1,37 @@
|
||||
import XcodeProj
|
||||
import Foundation
|
||||
|
||||
enum Cached<T> {
|
||||
case cached(T)
|
||||
case nothing
|
||||
|
||||
var value: T? {
|
||||
switch self {
|
||||
case let .cached(value): return value
|
||||
case .nothing: return nil
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
final class CacheContainer {
|
||||
let value: Cached<BuildSettings>
|
||||
|
||||
init(value: Cached<BuildSettings>) {
|
||||
self.value = value
|
||||
}
|
||||
}
|
||||
|
||||
extension NSCache where KeyType == NSString, ObjectType == CacheContainer {
|
||||
subscript(aKey: String) -> Cached<BuildSettings>? {
|
||||
get {
|
||||
object(forKey: aKey as NSString)?.value
|
||||
}
|
||||
set {
|
||||
if let value = newValue {
|
||||
setObject(CacheContainer(value: value), forKey: aKey as NSString)
|
||||
} else {
|
||||
removeObject(forKey: aKey as NSString)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -207,23 +207,11 @@ extension Project {
|
||||
}
|
||||
}
|
||||
|
||||
private enum Cached<T> {
|
||||
case cached(T)
|
||||
case nothing
|
||||
|
||||
var value: T? {
|
||||
switch self {
|
||||
case let .cached(value): return value
|
||||
case .nothing: return nil
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// cached flattened xcconfig file settings
|
||||
private var configFileSettings: [String: Cached<BuildSettings>] = [:]
|
||||
private var configFileSettings = NSCache<NSString, CacheContainer>()
|
||||
|
||||
// cached setting preset settings
|
||||
private var settingPresetSettings: [String: Cached<BuildSettings>] = [:]
|
||||
private var settingPresetSettings = NSCache<NSString, CacheContainer>()
|
||||
|
||||
extension SettingsPresetFile {
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user