bugfixes; step one for 'var T' as return type support
This commit is contained in:
parent
e7135c449d
commit
2f066395ba
27 changed files with 234 additions and 68 deletions
23
tests/accept/run/teventemitter.nim
Normal file
23
tests/accept/run/teventemitter.nim
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
import tables
|
||||
import lists
|
||||
type
|
||||
TEventArgs = object of TObject
|
||||
type
|
||||
TEventEmitter = object of TObject
|
||||
events*: TTable[string, TDoublyLinkedList[proc(e : TEventArgs)]]
|
||||
proc on*(emitter : var TEventEmitter, event : string, func : proc(e : TEventArgs)) =
|
||||
if hasKey(emitter.events, event) == false:
|
||||
var list: TDoublyLinkedList[proc(e : TEventArgs)]
|
||||
add(emitter.events,event,list) #if not, add it.
|
||||
append(emitter.events[event], func) #adds the function to the event's list. I get a error here too.
|
||||
|
||||
proc emit*(emitter : TEventEmitter, event : string, args : TEventArgs) =
|
||||
for func in items(emitter.events[event]):
|
||||
func(args) #call function with args.
|
||||
proc initEmitter(emitter : TEventEmitter) =
|
||||
emitter.events = initTable[string, TSinglyLinkedList[TObject]]()
|
||||
|
||||
var ee : TEventEmitter
|
||||
ee.on("print", proc(e : TEventArgs) = echo("pie"))
|
||||
ee.emit("print")
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue