27 lines
409 B
Nim
27 lines
409 B
Nim
discard """
|
|
output: "[p = nil]"
|
|
targets: "c cpp"
|
|
"""
|
|
|
|
import atomics
|
|
|
|
type
|
|
Pledge* {.exportc.} = object
|
|
p: PledgePtr
|
|
|
|
PledgeKind {.exportc.} = enum
|
|
Single
|
|
Iteration
|
|
|
|
PledgePtr {.exportc.} = ptr object
|
|
case kind: PledgeKind
|
|
of Single:
|
|
impl: PledgeImpl
|
|
of Iteration:
|
|
discard
|
|
|
|
PledgeImpl {.exportc.} = object
|
|
fulfilled: Atomic[bool]
|
|
|
|
var x: Pledge
|
|
echo x.repr
|