Hey all, I used Swift macros to create make using classes without ARC possible. I called it NRC (no reference counting). Let me know what you think!
// Declaration
@NRC(
members: [
"var y": Int.self,
"private var x": Double.self,
"internal var z": Bool.self,
]
)
struct Example {
init() {
self = Self.allocate((
y: 5,
x: 4.3,
z: true
))
}
func flipZ() {
self.z.toggle()
}
func delete() {
self.deallocate()
}
}
// Usage
let example = Example()
// XCTAssertEqual(example.x, 4.3) // no access, x is private
XCTAssertEqual(example.y, 5)
XCTAssertEqual(example.z, true)
example.z = false
XCTAssertEqual(example.z, false)
func scoped(_ copiedRef: Example) {
copiedRef.y = 100
}
XCTAssertEqual(example.y, 5)
scoped(example)
XCTAssertEqual(example.y, 100)