Files
fulpstation/code/__HELPERS/weakref.dm
John Willard da88f85361 [MDB IGNORE] [IDB IGNORE] Late September TGU (#367)
* tgu

* updated paths

* updating more paths

* master server

* more repaths

* tgu

* oh these were defined

* y

* tgu

* fixes fulp shuttles i think

* revert

* tgu

* fix checks and stuff

* Update sound.dm

* Update tg_edits.md

* tgu
2021-10-07 22:13:24 -06:00

46 lines
1.0 KiB
Plaintext

/// Checks if potential_weakref is a weakref of thing.
#define IS_WEAKREF_OF(thing, potential_weakref) (istype(thing, /datum) && !isnull(potential_weakref) && thing.weak_reference == potential_weakref)
//For these two procs refs MUST be ref = TRUE format like typecaches!
/proc/weakref_filter_list(list/things, list/refs)
if(!islist(things) || !islist(refs))
return
if(!refs.len)
return things
if(things.len > refs.len)
var/list/f = list()
for(var/i in refs)
var/datum/weakref/r = i
var/datum/d = r.resolve()
if(d)
f |= d
return things & f
else
. = list()
for(var/i in things)
if(!refs[WEAKREF(i)])
continue
. |= i
/proc/weakref_filter_list_reverse(list/things, list/refs)
if(!islist(things) || !islist(refs))
return
if(!refs.len)
return things
if(things.len > refs.len)
var/list/f = list()
for(var/i in refs)
var/datum/weakref/r = i
var/datum/d = r.resolve()
if(d)
f |= d
return things - f
else
. = list()
for(var/i in things)
if(refs[WEAKREF(i)])
continue
. |= i