From cd4e4dff9d0cc585d62111fc42c6176eb1e2fd0c Mon Sep 17 00:00:00 2001 From: david-swift Date: Sun, 29 Sep 2024 16:44:14 +0200 Subject: [PATCH] Remove pointer type --- Sources/Model/Extensions/OpaquePointer.swift | 8 +++++ .../User Interface/Scene/SceneStorage.swift | 4 +-- .../User Interface/View/Pointer/Pointer.swift | 30 ------------------- .../User Interface/View/ViewStorage.swift | 16 ++-------- 4 files changed, 13 insertions(+), 45 deletions(-) create mode 100644 Sources/Model/Extensions/OpaquePointer.swift delete mode 100644 Sources/Model/User Interface/View/Pointer/Pointer.swift diff --git a/Sources/Model/Extensions/OpaquePointer.swift b/Sources/Model/Extensions/OpaquePointer.swift new file mode 100644 index 0000000..b6630c5 --- /dev/null +++ b/Sources/Model/Extensions/OpaquePointer.swift @@ -0,0 +1,8 @@ +// +// OpaquePointer.swift +// Meta +// +// Created by david-swift on 29.09.24. +// + +extension OpaquePointer: @retroactive @unchecked Sendable { } diff --git a/Sources/Model/User Interface/Scene/SceneStorage.swift b/Sources/Model/User Interface/Scene/SceneStorage.swift index 0e3c509..9aa7d97 100644 --- a/Sources/Model/User Interface/Scene/SceneStorage.swift +++ b/Sources/Model/User Interface/Scene/SceneStorage.swift @@ -26,9 +26,9 @@ public actor SceneStorage { public var previousState: SceneElement? /// The pointer as an opaque pointer, as this may be needed with backends interoperating with C or C++. - public var opaquePointer: Pointer? { + public var opaquePointer: OpaquePointer? { get { - pointer as? Pointer + pointer as? OpaquePointer } set { pointer = newValue diff --git a/Sources/Model/User Interface/View/Pointer/Pointer.swift b/Sources/Model/User Interface/View/Pointer/Pointer.swift deleted file mode 100644 index 83a317e..0000000 --- a/Sources/Model/User Interface/View/Pointer/Pointer.swift +++ /dev/null @@ -1,30 +0,0 @@ -// -// Pointer.swift -// Meta -// -// Created by david-swift on 10.07.24. -// - -/// A sendable pointer type. -public struct Pointer: Sendable { - - /// The pointer's bit pattern. - var bitPattern: Int - - /// Get the opaque pointer. - public var opaquePointer: OpaquePointer? { - get { - .init(bitPattern: bitPattern) - } - set { - bitPattern = .init(bitPattern: newValue) - } - } - - /// Initialize the pointer. - /// - Parameter pointer: The opaque pointer. - public init(_ pointer: OpaquePointer?) { - bitPattern = .init(bitPattern: pointer) - } - -} diff --git a/Sources/Model/User Interface/View/ViewStorage.swift b/Sources/Model/User Interface/View/ViewStorage.swift index 7a56c57..6994244 100644 --- a/Sources/Model/User Interface/View/ViewStorage.swift +++ b/Sources/Model/User Interface/View/ViewStorage.swift @@ -21,23 +21,13 @@ public actor ViewStorage: Sendable { /// The previous state of the widget. public var previousState: Widget? - /// The pointer as an actual pointer, e.g. for interoperating with C or C++. - public var actualPointer: Pointer? { - get { - pointer as? Pointer - } - set { - pointer = newValue - } - } - /// The pointer as an opaque pointer, as this is needed with backends interoperating with C or C++. public var opaquePointer: OpaquePointer? { get { - actualPointer?.opaquePointer + pointer as? OpaquePointer } set { - actualPointer?.opaquePointer = newValue + pointer = newValue } } @@ -64,7 +54,7 @@ public actor ViewStorage: Sendable { content: [String: [ViewStorage]] = [:], state: Widget? = nil ) { - self.pointer = Pointer(pointer) + self.pointer = pointer self.content = content self.previousState = state }