Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
296 changes: 296 additions & 0 deletions .agents/interfaces/ios/Resettable.swiftinterface
Original file line number Diff line number Diff line change
@@ -0,0 +1,296 @@
// swift-interface-format-version: 1.0
// swift-compiler-version: Apple Swift version 6.3.3 (swiftlang-6.3.3.1.3 clang-2100.1.1.101)
// swift-module-flags: -target arm64-apple-ios13.0-simulator -enable-objc-interop -swift-version 6 -O -module-name Resettable -package-name swift_resettable
// swift-module-flags-ignorable: -formal-cxx-interoperability-mode=off -interface-compiler-version 6.3.3
import KeyPathMapping
import KeyPathsExtensions
import Swift
import SwiftMarkerProtocols
import _Concurrency
import _StringProcessing
import _SwiftConcurrencyShims
extension Resettable.Resettable where Base : Swift.Collection {
public var collection: Resettable.Resettable<Base>.WritableKeyPathContainer<Base> {
get
}
}
extension Resettable.Resettable.WritableKeyPathContainer where Value : Swift.Collection {
@discardableResult
public func swapAt<T>(_ idx1: Swift.Array<T>.Index, _ idx2: Swift.Array<T>.Index, operation: Resettable.Resettable<Base>.OperationBehavior = .default) -> Resettable.Resettable<Base> where Value == [T]
@discardableResult
public func remove<T>(at idx: Swift.Array<T>.Index, operation: Resettable.Resettable<Base>.OperationBehavior = .default) -> Resettable.Resettable<Base> where Value == [T]
@discardableResult
public func insert<T>(_ element: Swift.Array<T>.Element, at idx: Swift.Array<T>.Index, operation: Resettable.Resettable<Base>.OperationBehavior = .default) -> Resettable.Resettable<Base> where Value == [T]
@discardableResult
public func append<T>(_ element: Swift.Array<T>.Element, operation: Resettable.Resettable<Base>.OperationBehavior = .default) -> Resettable.Resettable<Base> where Value == [T]
}
extension Resettable.Resettable {
public enum OperationBehavior {
case `default`
case amend
case insert
case inject
@_semantics("derived_enum_equals") @_implements(Swift.Equatable, ==(_:_:)) public static func __derived_enum_equals(_ a: Resettable.Resettable<Base>.OperationBehavior, _ b: Resettable.Resettable<Base>.OperationBehavior) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
public var hashValue: Swift.Int {
get
}
}
}
@propertyWrapper @dynamicMemberLookup public class Resettable<Base> {
@available(*, deprecated, renamed: "Base")
public typealias Object = Base
convenience public init(wrappedValue: Base)
public init(_ base: Base)
@usableFromInline
internal var base: Base
@inlinable public var wrappedValue: Base {
_read { yield base }
}
@inlinable public var projectedValue: Resettable.Resettable<Base> {
get { self }
}
@discardableResult
public func undo() -> Resettable.Resettable<Base>
@discardableResult
public func redo() -> Resettable.Resettable<Base>
@discardableResult
@inlinable public func undo(_ count: Swift.Int) -> Resettable.Resettable<Base> {
for _ in 0..<count { undo() }
return self
}
@discardableResult
@inlinable public func redo(_ count: Swift.Int) -> Resettable.Resettable<Base> {
for _ in 0..<count { redo() }
return self
}
@discardableResult
public func undoAll() -> Resettable.Resettable<Base>
@discardableResult
public func redoAll() -> Resettable.Resettable<Base>
@discardableResult
public func _modify<Value>(operation: Resettable.Resettable<Base>.OperationBehavior = .default, _ keyPath: Swift.WritableKeyPath<Base, Value>, using action: @escaping (inout Value) -> Swift.Void) -> Resettable.Resettable<Base>
@discardableResult
public func _modify<Value>(operation: Resettable.Resettable<Base>.OperationBehavior = .default, _ keyPath: Swift.WritableKeyPath<Base, Value>, using action: @escaping (inout Value) -> Swift.Void, undo: @escaping (inout Value) -> Swift.Void) -> Resettable.Resettable<Base>
@discardableResult
public func _modify(operation: Resettable.Resettable<Base>.OperationBehavior = .default, using action: @escaping (inout Base) -> Swift.Void, undo: @escaping (inout Base) -> Swift.Void) -> Resettable.Resettable<Base>
@inlinable public subscript<Value>(dynamicMember keyPath: Swift.WritableKeyPath<Base, Value>) -> Resettable.Resettable<Base>.WritableKeyPathContainer<Value> {
get {
WritableKeyPathContainer(
resettable: self,
keyPath: keyPath
)
}
}
@inlinable public subscript<Value>(dynamicMember keyPath: Swift.KeyPath<Base, Value>) -> Resettable.Resettable<Base>.KeyPathContainer<Value> {
get {
KeyPathContainer(
resettable: self,
keyPath: keyPath
)
}
}
@objc deinit
}
extension Resettable.Resettable {
@dynamicMemberLookup public struct KeyPathContainer<Value> {
@usableFromInline
internal let resettable: Resettable.Resettable<Base>
@usableFromInline
internal let keyPath: Swift.KeyPath<Base, Value>
@usableFromInline
internal init(resettable: Resettable.Resettable<Base>, keyPath: Swift.KeyPath<Base, Value>)
@inlinable public subscript<LocalValue>(dynamicMember keyPath: Swift.ReferenceWritableKeyPath<Value, LocalValue>) -> Resettable.Resettable<Base>.WritableKeyPathContainer<LocalValue> {
get {
WritableKeyPathContainer<LocalValue>(
resettable: resettable,
keyPath: self.keyPath.appending(path: keyPath)
)
}
}
@inlinable public subscript<LocalValue>(dynamicMember keyPath: Swift.KeyPath<Value, LocalValue>) -> Resettable.Resettable<Base>.KeyPathContainer<LocalValue> {
get {
KeyPathContainer<LocalValue>(
resettable: resettable,
keyPath: self.keyPath.appending(path: keyPath)
)
}
}
}
@dynamicMemberLookup public struct WritableKeyPathContainer<Value> {
@usableFromInline
internal let resettable: Resettable.Resettable<Base>
@usableFromInline
internal let keyPath: Swift.WritableKeyPath<Base, Value>
@usableFromInline
internal init(resettable: Resettable.Resettable<Base>, keyPath: Swift.WritableKeyPath<Base, Value>)
@discardableResult
@inlinable public func callAsFunction(_ value: Value, operation: Resettable.Resettable<Base>.OperationBehavior = .default) -> Resettable.Resettable<Base> {
return self.callAsFunction(operation) { $0 = value }
}
@discardableResult
@inlinable public func callAsFunction(_ operation: Resettable.Resettable<Base>.OperationBehavior = .default, _ action: @escaping (inout Value) -> Swift.Void) -> Resettable.Resettable<Base> {
return resettable._modify(
operation: operation,
keyPath,
using: action
)
}
@discardableResult
@inlinable public func callAsFunction(_ operation: Resettable.Resettable<Base>.OperationBehavior = .default, _ action: @escaping (inout Value) -> Swift.Void, undo: @escaping (inout Value) -> Swift.Void) -> Resettable.Resettable<Base> {
return resettable._modify(
operation: operation,
keyPath,
using: action,
undo: undo
)
}
@inlinable public subscript<LocalValue>(dynamicMember keyPath: Swift.WritableKeyPath<Value, LocalValue>) -> Resettable.Resettable<Base>.WritableKeyPathContainer<LocalValue> {
get {
WritableKeyPathContainer<LocalValue>(
resettable: resettable,
keyPath: self.keyPath.appending(path: keyPath)
)
}
}
@inlinable public subscript<LocalValue>(dynamicMember keyPath: Swift.KeyPath<Value, LocalValue>) -> Resettable.Resettable<Base>.KeyPathContainer<LocalValue> {
get {
KeyPathContainer<LocalValue>(
resettable: resettable,
keyPath: self.keyPath.appending(path: keyPath)
)
}
}
}
@dynamicMemberLookup public struct IfLetKeyPathContainer<Wrapped> {
public typealias Value = Wrapped?
@usableFromInline
internal let resettable: Resettable.Resettable<Base>
@usableFromInline
internal let keyPath: Swift.KeyPath<Base, Resettable.Resettable<Base>.IfLetKeyPathContainer<Wrapped>.Value>
@usableFromInline
internal init(resettable: Resettable.Resettable<Base>, keyPath: Swift.KeyPath<Base, Resettable.Resettable<Base>.IfLetKeyPathContainer<Wrapped>.Value>)
@inlinable public subscript<LocalValue>(dynamicMember keyPath: Swift.ReferenceWritableKeyPath<Wrapped, LocalValue>) -> Resettable.Resettable<Base>.IfLetWritableKeyPathContainer<LocalValue> {
get {
IfLetWritableKeyPathContainer<LocalValue>(
resettable: resettable,
keyPath: self.keyPath.appending(path: keyPath)
)
}
}
@inlinable public subscript<LocalValue>(dynamicMember keyPath: Swift.KeyPath<Wrapped, LocalValue>) -> Resettable.Resettable<Base>.IfLetKeyPathContainer<LocalValue> {
get {
IfLetKeyPathContainer<LocalValue>(
resettable: resettable,
keyPath: self.keyPath.appending(path: keyPath)
)
}
}
}
@dynamicMemberLookup public struct IfLetWritableKeyPathContainer<Wrapped> {
public typealias Value = Wrapped?
@usableFromInline
internal let resettable: Resettable.Resettable<Base>
@usableFromInline
internal let keyPath: Swift.WritableKeyPath<Base, Resettable.Resettable<Base>.IfLetWritableKeyPathContainer<Wrapped>.Value>
@usableFromInline
internal init(resettable: Resettable.Resettable<Base>, keyPath: Swift.WritableKeyPath<Base, Resettable.Resettable<Base>.IfLetWritableKeyPathContainer<Wrapped>.Value>)
@discardableResult
@inlinable public func callAsFunction(_ value: Wrapped, operation: Resettable.Resettable<Base>.OperationBehavior = .default) -> Resettable.Resettable<Base> {
guard resettable.wrappedValue[keyPath: keyPath] != nil else { return resettable }
return self.callAsFunction(operation) { $0 = value }
}
@discardableResult
@inlinable public func callAsFunction(_ operation: Resettable.Resettable<Base>.OperationBehavior = .default, _ action: @escaping (inout Wrapped) -> Swift.Void) -> Resettable.Resettable<Base> {
guard let value = resettable.wrappedValue[keyPath: keyPath] else { return resettable }
return resettable._modify(
operation: operation,
keyPath.unwrapped(with: value),
using: action
)
}
@discardableResult
@inlinable public func callAsFunction(_ operation: Resettable.Resettable<Base>.OperationBehavior = .default, _ action: @escaping (inout Wrapped) -> Swift.Void, undo: @escaping (inout Wrapped) -> Swift.Void) -> Resettable.Resettable<Base> {
guard let value = resettable.wrappedValue[keyPath: keyPath] else { return resettable }
return resettable._modify(
operation: operation,
keyPath.unwrapped(with: value),
using: action,
undo: undo
)
}
@inlinable public subscript<LocalValue>(dynamicMember keyPath: Swift.WritableKeyPath<Wrapped, LocalValue>) -> Resettable.Resettable<Base>.IfLetWritableKeyPathContainer<LocalValue> {
get {
IfLetWritableKeyPathContainer<LocalValue>(
resettable: resettable,
keyPath: self.keyPath.appending(path: keyPath)
)
}
}
@inlinable public subscript<LocalValue>(dynamicMember keyPath: Swift.KeyPath<Wrapped, LocalValue>) -> Resettable.Resettable<Base>.IfLetKeyPathContainer<LocalValue> {
get {
IfLetKeyPathContainer<LocalValue>(
resettable: resettable,
keyPath: self.keyPath.appending(path: keyPath)
)
}
}
}
}
extension Resettable.Resettable where Base : SwiftMarkerProtocols._OptionalProtocol {
public var ifLet: Resettable.Resettable<Base>.IfLetWritableKeyPathContainer<Base.Wrapped> {
get
}
}
extension Resettable.Resettable {
public func ifLet<Wrapped>(_ keyPath: Swift.WritableKeyPath<Base, Wrapped?>) -> Resettable.Resettable<Base>.IfLetWritableKeyPathContainer<Wrapped>
public func ifLet<Wrapped>(_ keyPath: Swift.KeyPath<Base, Wrapped?>) -> Resettable.Resettable<Base>.IfLetKeyPathContainer<Wrapped>
}
extension Resettable.Resettable.WritableKeyPathContainer where Value : SwiftMarkerProtocols._OptionalProtocol {
public var ifLet: Resettable.Resettable<Base>.IfLetWritableKeyPathContainer<Value.Wrapped> {
get
}
public func ifNil(_ value: Value, operation: Resettable.Resettable<Base>.OperationBehavior = .default) -> Resettable.Resettable<Base>
}
extension Resettable.Resettable.KeyPathContainer where Value : SwiftMarkerProtocols._OptionalProtocol {
public var ifLet: Resettable.Resettable<Base>.IfLetKeyPathContainer<Value.Wrapped> {
get
}
}
extension Resettable.Resettable.IfLetWritableKeyPathContainer where Wrapped : SwiftMarkerProtocols._OptionalProtocol {
public var ifLet: Resettable.Resettable<Base>.IfLetWritableKeyPathContainer<Wrapped.Wrapped> {
get
}
}
extension Resettable.Resettable.IfLetKeyPathContainer where Wrapped : SwiftMarkerProtocols._OptionalProtocol {
public var ifLet: Resettable.Resettable<Base>.IfLetKeyPathContainer<Wrapped.Wrapped> {
get
}
}
extension Resettable.Resettable.WritableKeyPathContainer {
public func ifLet<Wrapped>(_ keyPath: Swift.WritableKeyPath<Value, Wrapped?>) -> Resettable.Resettable<Base>.IfLetWritableKeyPathContainer<Wrapped>
public func ifLet<Wrapped>(_ keyPath: Swift.KeyPath<Value, Wrapped?>) -> Resettable.Resettable<Base>.IfLetKeyPathContainer<Wrapped>
}
extension Resettable.Resettable.KeyPathContainer {
public func ifLet<Wrapped>(_ keyPath: Swift.ReferenceWritableKeyPath<Value, Wrapped?>) -> Resettable.Resettable<Base>.IfLetWritableKeyPathContainer<Wrapped>
public func ifLet<Wrapped>(_ keyPath: Swift.KeyPath<Value, Wrapped?>) -> Resettable.Resettable<Base>.IfLetKeyPathContainer<Wrapped>
}
extension Resettable.Resettable.IfLetWritableKeyPathContainer {
public func ifLet<LocalWrapped>(_ keyPath: Swift.WritableKeyPath<Wrapped, LocalWrapped?>) -> Resettable.Resettable<Base>.IfLetWritableKeyPathContainer<LocalWrapped>
public func ifLet<LocalWrapped>(_ keyPath: Swift.KeyPath<Wrapped, LocalWrapped?>) -> Resettable.Resettable<Base>.IfLetKeyPathContainer<LocalWrapped>
}
extension Resettable.Resettable.IfLetKeyPathContainer {
public func ifLet<LocalWrapped>(_ keyPath: Swift.ReferenceWritableKeyPath<Wrapped, LocalWrapped?>) -> Resettable.Resettable<Base>.IfLetWritableKeyPathContainer<LocalWrapped>
public func ifLet<LocalWrapped>(_ keyPath: Swift.KeyPath<Wrapped, LocalWrapped?>) -> Resettable.Resettable<Base>.IfLetKeyPathContainer<LocalWrapped>
}
@usableFromInline
@discardableResult
internal func modification<T>(of object: T, with action: (inout T) -> Swift.Void) -> T
extension Resettable.Resettable : Swift.Identifiable where Base : Swift.Identifiable {
@inlinable public var id: Base.ID {
get { wrappedValue.id }
}
public typealias ID = Base.ID
}
extension Resettable.Resettable.OperationBehavior : Swift.Equatable {}
extension Resettable.Resettable.OperationBehavior : Swift.Hashable {}
29 changes: 29 additions & 0 deletions .agents/interfaces/ios/_ResettableDebugging.swiftinterface
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
// swift-interface-format-version: 1.0
// swift-compiler-version: Apple Swift version 6.3.3 (swiftlang-6.3.3.1.3 clang-2100.1.1.101)
// swift-module-flags: -target arm64-apple-ios13.0-simulator -enable-objc-interop -swift-version 6 -O -module-name _ResettableDebugging -package-name swift_resettable
// swift-module-flags-ignorable: -formal-cxx-interoperability-mode=off -interface-compiler-version 6.3.3
import CustomDump
@_exported import Resettable
import Swift
import _Concurrency
import _StringProcessing
import _SwiftConcurrencyShims
extension Resettable.Resettable {
@available(*, deprecated, message: "Might be removed due to lack of Value type constraint, which makes the behavior unstable, consider re-implementing this feature locally if needed")
public struct ValuesDump {
@usableFromInline
internal init(items: [Resettable.Resettable<Base>.Object], currentIndex: Swift.Int)
public let items: [Resettable.Resettable<Base>.Object]
public let currentIndex: Swift.Int
}
}
extension Resettable.Resettable {
@available(*, deprecated, message: "Might be removed due to lack of Value type constraint, which makes the behavior unstable, consider re-implementing this feature locally if needed")
public func valuesDump() -> Resettable.Resettable<Base>.ValuesDump
@inlinable public func dump() -> Swift.String {
var buffer = ""
self.dump(to: &buffer)
return buffer
}
public func dump<TargetStream>(to stream: inout TargetStream) where TargetStream : Swift.TextOutputStream
}
Loading
Loading