Smart Pointers
Sric provides C++-style smart pointers including SharedPtr, and WeakPtr.
SharedPtr
Reference-counted with some overhead. Can be created from existing own*:
var p = new Int
var sp: SharedPtr$<Int> = toShared(p)
Convertible with own*:
var p = sharedPtr.getOwn()
sharedPtr.set(p)
WeakPtr
Breaks circular references that could cause memory leaks with own*/SharedPtr:
var p = new Int
var wp: WeakPtr$<Int> = toWeak(p)
Use via lock() which returns nullable own*:
var sp : own*? Int = wp.lock()
Returns null if referenced object was freed.