Safe Haskell | Safe |
---|---|
Language | Haskell98 |
Control.Event
Description
A simple event mechanism
- class (Eq delta, Ord delta, Show delta) => EventSelector delta
- class EventSelector delta => Event beta delta | beta -> delta, delta -> beta where
- class (Monad gamma, Event beta delta) => EventSource alpha beta gamma delta | alpha -> beta, alpha -> gamma where
- type Handlers beta gamma delta = Map delta [(Unique, beta -> gamma beta)]
- registerEvents :: EventSource alpha beta gamma delta => alpha -> [delta] -> (beta -> gamma beta) -> gamma [Unique]
Documentation
class (Eq delta, Ord delta, Show delta) => EventSelector delta #
Every event needs a selector, which should identify the type of event
Instances
class EventSelector delta => Event beta delta | beta -> delta, delta -> beta where #
Every event needs to know its selector and its source
Minimal complete definition
Methods
getSelector :: beta -> delta #
Instances
class (Monad gamma, Event beta delta) => EventSource alpha beta gamma delta | alpha -> beta, alpha -> gamma where #
Everything which is an event source needs this alpha is the Notifier beta is the event gamma is the monad delta is the event selector
Minimal complete definition
Methods
getHandlers :: alpha -> gamma (Handlers beta gamma delta) #
setHandlers :: alpha -> Handlers beta gamma delta -> gamma () #
myUnique :: alpha -> gamma Unique #
canTriggerEvent :: alpha -> delta -> Bool #
Reimplement this in instances to make triggering of events possible
triggerEvent :: alpha -> beta -> gamma beta #
Returns the event, so that you may get values back from an event Args: Notifier, Event
registerEvent :: alpha -> delta -> (beta -> gamma beta) -> gamma (Maybe Unique) #
unregisterEvent :: alpha -> delta -> Unique -> gamma () #
use Left to register and Right to unregister Args: Notifier, EventSelector, Unique
Instances
type Handlers beta gamma delta = Map delta [(Unique, beta -> gamma beta)] #
This shows the implementation of the event mechnism
registerEvents :: EventSource alpha beta gamma delta => alpha -> [delta] -> (beta -> gamma beta) -> gamma [Unique] #