-
Notifications
You must be signed in to change notification settings - Fork 441
/
Copy pathMemoryLayout.swift
42 lines (38 loc) · 1.35 KB
/
MemoryLayout.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
//===----------------------------------------------------------------------===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2014 - 2023 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See https://swift.org/LICENSE.txt for license information
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//
//===----------------------------------------------------------------------===//
// See `MemoryLayoutTest.swift`.
@_spi(Testing) public enum SyntaxMemoryLayout: Sendable {
public struct Value: Equatable, Sendable {
public let size: Int
public let stride: Int
public let alignment: Int
public init(size: Int, stride: Int, alignment: Int) {
self.size = size
self.stride = stride
self.alignment = alignment
}
init<T>(_: T.Type) {
self.init(
size: MemoryLayout<T>.size,
stride: MemoryLayout<T>.stride,
alignment: MemoryLayout<T>.alignment
)
}
}
public static var values: [String: Value] {
let uniq: (Value, Value) -> Value = { _, _ in preconditionFailure() }
var result: [String: Value] = [:]
result.merge(RawSyntaxDataMemoryLayouts, uniquingKeysWith: uniq)
result.merge(SyntaxMemoryLayouts, uniquingKeysWith: uniq)
return result
}
}