mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 18:22:39 +00:00
Ports PsiOmegaDelta's port of integrated circuits, which has several improvements in code quality. Ports a few small things like the weakref datum and some macros.
31 lines
670 B
Plaintext
31 lines
670 B
Plaintext
/datum
|
|
var/weakref/weakref
|
|
|
|
/datum/Destroy()
|
|
weakref = null // Clear this reference to ensure it's kept for as brief duration as possible.
|
|
. = ..()
|
|
|
|
//obtain a weak reference to a datum
|
|
/proc/weakref(datum/D)
|
|
if(D.gcDestroyed)
|
|
return
|
|
if(!D.weakref)
|
|
D.weakref = new/weakref(D)
|
|
return D.weakref
|
|
|
|
/weakref
|
|
var/ref
|
|
|
|
/weakref/New(datum/D)
|
|
ref = "\ref[D]"
|
|
|
|
/weakref/Destroy()
|
|
// A weakref datum should not be manually destroyed as it is a shared resource,
|
|
// rather it should be automatically collected by the BYOND GC when all references are gone.
|
|
return 0
|
|
|
|
/weakref/proc/resolve()
|
|
var/datum/D = locate(ref)
|
|
if(D && D.weakref == src)
|
|
return D
|
|
return null |