File tree Expand file tree Collapse file tree 2 files changed +66
-0
lines changed
Sources/OpenSwiftUICore/Util
Tests/OpenSwiftUICoreTests/Util Expand file tree Collapse file tree 2 files changed +66
-0
lines changed Original file line number Diff line number Diff line change 1+ //
2+ // UnsafePointer+Extension.swift
3+ // OpenSwiftUICore
4+ //
5+ // Audited for RELEASE_2024
6+ // Status: Complete
7+
8+ extension UnsafePointer {
9+ package subscript( ) -> Pointee {
10+ @_transparent
11+ unsafeAddress {
12+ self
13+ }
14+ }
15+
16+ @_transparent
17+ package static var null : UnsafePointer < Pointee > {
18+ UnsafePointer ( bitPattern: Int ( bitPattern: 0xffff_ffff_ffff_ff00 ) | ( - MemoryLayout < Pointee > . alignment) ) !
19+ }
20+ }
21+
22+ extension UnsafeMutablePointer {
23+ package subscript( ) -> Pointee {
24+ @_transparent
25+ unsafeAddress { UnsafePointer ( self ) }
26+ @_transparent
27+ nonmutating unsafeMutableAddress { self }
28+ }
29+
30+ @_transparent
31+ package static var null : UnsafeMutablePointer < Pointee > {
32+ UnsafeMutablePointer ( bitPattern: Int ( bitPattern: 0xffff_ffff_ffff_ff00 ) | ( - MemoryLayout < Pointee > . alignment) ) !
33+ }
34+ }
35+
36+ extension UnsafeBufferPointer {
37+ @_transparent
38+ package var startAddress : UnsafePointer < Element > {
39+ baseAddress ?? . null
40+ }
41+ }
42+
43+
44+ extension UnsafeMutableBufferPointer {
45+ @_transparent
46+ package var startAddress : UnsafeMutablePointer < Element > {
47+ baseAddress ?? . null
48+ }
49+ }
Original file line number Diff line number Diff line change 1+ //
2+ // UnsafePointer+ExtensionTests.swift
3+ // OpenSwiftUICoreTests
4+
5+ import Testing
6+ import OpenSwiftUICore
7+
8+ struct UnsafePointer_ExtensionTests {
9+ @Test
10+ func nullPointer( ) {
11+ #expect( UnsafePointer< Int64> . null == UnsafePointer ( bitPattern: Int ( bitPattern: 0xffff_ffff_ffff_fff8 ) ) )
12+ #expect( UnsafePointer< Int32> . null == UnsafePointer ( bitPattern: Int ( bitPattern: 0xffff_ffff_ffff_fffc ) ) )
13+ #expect( UnsafePointer< Int16> . null == UnsafePointer ( bitPattern: Int ( bitPattern: 0xffff_ffff_ffff_fffe ) ) )
14+ #expect( UnsafePointer< Int8> . null == UnsafePointer ( bitPattern: Int ( bitPattern: 0xffff_ffff_ffff_ffff ) ) )
15+ #expect( UnsafePointer< Bool> . null == UnsafePointer ( bitPattern: Int ( bitPattern: 0xffff_ffff_ffff_ffff ) ) )
16+ }
17+ }
You can’t perform that action at this time.
0 commit comments