alsa-seq-0.6: src/Sound/ALSA/Sequencer/Event/Accessor.hs
module Sound.ALSA.Sequencer.Event.Accessor (
highPriority,
tag,
queue,
time,
timeStamp,
source,
dest,
connect,
body,
) where
import qualified Sound.ALSA.Sequencer.Connect as Connect
import qualified Sound.ALSA.Sequencer.Address as Addr
import qualified Sound.ALSA.Sequencer.Queue as Queue
import qualified Sound.ALSA.Sequencer.Marshal.Time as Time
import qualified Sound.ALSA.Sequencer.Marshal.Event as Event
import qualified Data.Accessor.Basic as Acc
highPriority :: Acc.T Event.T Bool
tag :: Acc.T Event.T Event.Tag
queue :: Acc.T Event.T Queue.T
time :: Acc.T Event.T Time.T
timeStamp :: Acc.T Event.T Time.Stamp
source :: Acc.T Event.T Addr.T
dest :: Acc.T Event.T Addr.T
connect :: Acc.T Event.T Connect.T
body :: Acc.T Event.T Event.Data
highPriority =
Acc.fromSetGet (\x ev -> ev{Event.highPriority = x}) Event.highPriority
tag =
Acc.fromSetGet (\x ev -> ev{Event.tag = x}) Event.tag
queue =
Acc.fromSetGet (\x ev -> ev{Event.queue = x}) Event.queue
time =
Acc.fromSetGet (\x ev -> ev{Event.time = x}) Event.time
timeStamp = time Acc..> Time.stampAcc
source =
Acc.fromSetGet (\x ev -> ev{Event.source = x}) Event.source
dest =
Acc.fromSetGet (\x ev -> ev{Event.dest = x}) Event.dest
connect =
Acc.fromWrapper
(\(Connect.Cons src dst) -> (src, dst))
(uncurry Connect.Cons)
Acc.<.
Acc.merge source dest
body =
Acc.fromSetGet (\x ev -> ev{Event.body = x}) Event.body