verifying types

This commit is contained in:
Jaremy Creechley 2023-09-13 14:42:59 -07:00
parent 1512f05245
commit 61461c9413
No known key found for this signature in database
GPG Key ID: 4E66FB67B21D3300

View File

@ -50,9 +50,9 @@ type
container*: ptr tuple[value: T, cnt: int]
proc incr*[T](a: var SharedPtr[T]) =
if a.container != nil and a.cnt != nil:
if a.container != nil:
let res = atomicAddFetch(a.cnt, 1, ATOMIC_RELAXED)
echoed "SharedPtr: manual incr: ", res
echoed "SharedPtr: incr: ", res
proc decr*[T](x: var SharedPtr[T]) =
if x.container != nil:
@ -88,7 +88,10 @@ proc `=dup`*[T](src: SharedPtr[T]): SharedPtr[T] =
proc `=copy`*[T](dest: var SharedPtr[T], src: SharedPtr[T]) =
if src.container != nil:
# echo "SharedPtr: copy: ", src.container.pointer.repr
echoed "SharedPtr: copy:src: ", src.container.pointer.repr, " cnt: ", src.container.cnt, " tp: ", $(typeof(T))
discard atomicAddFetch(addr src.container.cnt, 1, ATOMIC_RELAXED)
if dest.container != nil:
echoed "SharedPtr: copy:dest: ", dest.container.pointer.repr, " cnt: ", dest.container.cnt, " tp: ", $(typeof(T))
`=destroy`(dest)
dest.container = src.container