Generic Event Handling

Adds to arbitrary objects the ability to define, raise and handle events.

Procedures

events:add-support! obj . slots

Enables events on an object. slots should contain symbol-names of events the object will implement. For example:

(define thing 'thing)
;Value: thing

(events:add-support! thing 'event1 'event2)
;Value: ok

(events:register-handler! thing 'event1 (lambda () (println "event1 handler A reporting")))
;Unspecified return value

(events:register-handler! thing 'event1 (lambda () (println "event1 handler B reporting")))
;Unspecified return value

(events:register-handler! thing 'event2 (lambda () (println "event2 handler A reporting")))
;Unspecified return value

(events:register-handler! thing 'event2 (lambda () (println "event2 handler B reporting")))
;Unspecified return value

(events:raise thing 'event1)
event1 handler B reporting
event1 handler A reporting
;Value: ok

(events:raise thing 'event1)
event1 handler B reporting
event1 handler A reporting
;Value: ok

(events:raise thing 'event2)
event2 handler B reporting
event2 handler A reporting
;Value: ok

(events:raise thing 'event1)
event1 handler B reporting
event1 handler A reporting
;Value: ok

events:has-slot? obj slot

Checks whether an object supports the given event

events:register-handler! obj slot handler

Registers a handler for an even with an object. See events:add-support! for an example.

events:raise obj slot . arguments

Raises an event. See events:add-support! for an example.


Scheme Power Tools Documentation
(c) Maciej Pacula 2010-2011
http://mpacula.com