jale/src/jale/event.nim

36 lines
712 B
Nim
Raw Normal View History

2021-02-15 20:18:31 +01:00
# event.nim
import tables
type
Event*[T] = TableRef[T, seq[proc ()]]
2021-02-19 11:49:18 +01:00
proc newEvent*[T]: Event[T] =
new(result)
2021-02-15 20:18:31 +01:00
proc call*[T](evt: Event[T], key: T) =
if evt.hasKey(key):
for callback in evt[key]:
callback()
proc add*[T](event: Event[T], key: T, callback: proc) =
if not event.hasKey(key):
event[key] = @[]
event[key].add(callback)
2021-02-19 11:49:18 +01:00
proc remove*[T](event: Event[T], key: T, callback: proc): bool =
result = false
if event.hasKey(key):
var i = 0
while i < event[key].len():
if event[key][i] == callback:
event[key].del(i)
result = true
else:
inc i
proc purge*[T](event: Event[T], key: T) =
if event.hasKey(key):
event[key] = @[]