Skip to content

Commit 11cac40

Browse files
authored
Optimize Flags code (#164)
1 parent ef661ef commit 11cac40

File tree

7 files changed

+24
-19
lines changed

7 files changed

+24
-19
lines changed

Package.resolved

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Sources/OpenGraph/Attribute/Attribute/AnyAttribute.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ extension AnyAttribute {
3333
create(offset: offset)
3434
}
3535

36-
public func setFlags(_ newFlags: Subgraph.Flags, mask: Subgraph.Flags) {
36+
public func setFlags(_ newFlags: Flags, mask: Flags) {
3737
flags = flags.subtracting(mask).union(newFlags.intersection(mask))
3838
}
3939

Sources/OpenGraph/Attribute/Attribute/Attribute.swift

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -194,12 +194,14 @@ public struct Attribute<Value> {
194194

195195
// MARK: - Flags
196196

197-
public var flags: Subgraph.Flags {
197+
public typealias Flags = AnyAttribute.Flags
198+
199+
public var flags: Flags {
198200
get { identifier.flags }
199201
nonmutating set { identifier.flags = newValue }
200202
}
201203

202-
public func setFlags(_ newFlags: Subgraph.Flags, mask: Subgraph.Flags) {
204+
public func setFlags(_ newFlags: Flags, mask: Flags) {
203205
identifier.setFlags(newFlags, mask: mask)
204206
}
205207
}

Sources/OpenGraph/Graph/Subgraph.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ extension Subgraph {
3434
#endif
3535
}
3636

37-
public func forEach(_ flags: Subgraph.Flags, _ callback: (AnyAttribute) -> Void) {
37+
public func forEach(_ flags: Flags, _ callback: (AnyAttribute) -> Void) {
3838
Subgraph.apply(self, flags: flags, callback: callback)
3939
}
4040
}
@@ -62,7 +62,7 @@ extension Subgraph {
6262
// FIXME: migrate to use @_extern(c, "xx") in Swift 6
6363
extension Subgraph {
6464
@_silgen_name("OGSubgraphApply")
65-
private static func apply(_ graph: Subgraph, flags: Subgraph.Flags, callback: (AnyAttribute) -> Void)
65+
private static func apply(_ graph: Subgraph, flags: Flags, callback: (AnyAttribute) -> Void)
6666

6767
@_silgen_name("OGSubgraphAddObserver")
6868
private static func addObserver(_ graph: Subgraph, observer: () -> Void) -> Int

Tests/OpenGraphCompatibilityTests/Attribute/Attribute/AnyAttributeCompatibilityTests.swift

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -46,34 +46,36 @@ final class AnyAttributeCompatibilityTests: AttributeTestBase {
4646

4747
@Test
4848
func setFlags() throws {
49+
typealias Flags = AnyAttribute.Flags
50+
4951
let attribute = AnyAttribute(Attribute(value: 0))
5052
#expect(attribute.flags == [])
5153

5254
// Test mask = []
5355
attribute.flags = []
5456

55-
attribute.setFlags([Subgraph.Flags(rawValue: 1)], mask: [])
57+
attribute.setFlags([Flags(rawValue: 1)], mask: [])
5658
#expect(attribute.flags == [])
5759

58-
attribute.setFlags([Subgraph.Flags(rawValue: 2)], mask: [])
60+
attribute.setFlags([Flags(rawValue: 2)], mask: [])
5961
#expect(attribute.flags == [])
6062

61-
attribute.setFlags([Subgraph.Flags(rawValue: 1), Subgraph.Flags(rawValue: 4)], mask: [])
63+
attribute.setFlags([Flags(rawValue: 1), Flags(rawValue: 4)], mask: [])
6264
#expect(attribute.flags == [])
6365

6466
// Test mask
6567
attribute.flags = []
66-
attribute.setFlags([Subgraph.Flags(rawValue: 1)], mask: [Subgraph.Flags(rawValue: 1)])
67-
#expect(attribute.flags == [Subgraph.Flags(rawValue: 1)])
68+
attribute.setFlags([Flags(rawValue: 1)], mask: [Flags(rawValue: 1)])
69+
#expect(attribute.flags == [Flags(rawValue: 1)])
6870

69-
attribute.setFlags([Subgraph.Flags(rawValue: 2)], mask: [Subgraph.Flags(rawValue: 2)])
70-
#expect(attribute.flags == [Subgraph.Flags(rawValue: 1), Subgraph.Flags(rawValue: 2)])
71+
attribute.setFlags([Flags(rawValue: 2)], mask: [Flags(rawValue: 2)])
72+
#expect(attribute.flags == [Flags(rawValue: 1), Flags(rawValue: 2)])
7173

72-
attribute.setFlags([Subgraph.Flags(rawValue: 4)], mask: [Subgraph.Flags(rawValue: 1)])
73-
#expect(attribute.flags == [Subgraph.Flags(rawValue: 2)])
74+
attribute.setFlags([Flags(rawValue: 4)], mask: [Flags(rawValue: 1)])
75+
#expect(attribute.flags == [Flags(rawValue: 2)])
7476

75-
attribute.setFlags([Subgraph.Flags(rawValue: 1), Subgraph.Flags(rawValue: 4)], mask: [Subgraph.Flags(rawValue: 1), Subgraph.Flags(rawValue: 2), Subgraph.Flags(rawValue: 4)])
76-
#expect(attribute.flags == [Subgraph.Flags(rawValue: 1), Subgraph.Flags(rawValue: 4)])
77+
attribute.setFlags([Flags(rawValue: 1), Flags(rawValue: 4)], mask: [Flags(rawValue: 1), Flags(rawValue: 2), Flags(rawValue: 4)])
78+
#expect(attribute.flags == [Flags(rawValue: 1), Flags(rawValue: 4)])
7779
}
7880

7981
@Test

Tests/OpenGraphCompatibilityTests/Attribute/Attribute/AttributeCompatibilityTests.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,8 @@ final class AttributeCompatibilityTests: AttributeTestBase {
7575
@Test
7676
func flagSetter() {
7777
let attribute = Attribute(value: ())
78-
attribute.flags = Subgraph.Flags(rawValue: 1)
79-
#expect(attribute.flags == Subgraph.Flags(rawValue: 1))
78+
attribute.flags = .init(rawValue: 1)
79+
#expect(attribute.flags == .init(rawValue: 1))
8080
}
8181
}
8282
#endif

Tests/OpenGraphCompatibilityTests/Graph/GraphCompatibilityTests.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import Testing
66
import Foundation
77

8+
@MainActor
89
struct GraphCompatibilityTests {
910
@Test
1011
func graphCreate() throws {

0 commit comments

Comments
 (0)