{-# LINE 1 "src/Sound/ALSA/Sequencer/Queue/Status.hsc" #-}
module Sound.ALSA.Sequencer.Queue.Status
( T
, get
, copy
, clone
, getQueue
, getEvents
, getTickTime
, getRealTime
) where
import qualified Sound.ALSA.Sequencer.Marshal.Sequencer as Seq
import qualified Sound.ALSA.Sequencer.Marshal.RealTime as RealTime
import qualified Sound.ALSA.Sequencer.Marshal.Time as Time
import qualified Sound.ALSA.Sequencer.Marshal.Queue as Queue
import qualified Sound.ALSA.Sequencer.Area as Area
import qualified Sound.ALSA.Exception as Exc
import qualified Foreign.C.Types as C
data T_
newtype T = Cons (Area.ForeignPtr T_)
with :: T -> (Area.Ptr T_ -> IO a) -> IO a
with :: forall a. T -> (Ptr T_ -> IO a) -> IO a
with (Cons ForeignPtr T_
p) Ptr T_ -> IO a
f = forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
Area.withForeignPtr ForeignPtr T_
p Ptr T_ -> IO a
f
malloc :: IO T
malloc = Area.alloca $ \p ->
do Exc.checkResult_ "Sequencer.queue_status" =<< malloc_ p
fmap Cons (Area.newForeignPtr free =<< Area.peek p)
foreign import ccall unsafe "alsa/asoundlib.h snd_seq_queue_status_malloc"
malloc_ :: Area.Ptr (Area.Ptr T_) -> IO C.CInt
foreign import ccall unsafe "alsa/asoundlib.h &snd_seq_queue_status_free"
free :: Area.FunPtr (Area.Ptr T_ -> IO ())
copy
:: T
-> T
-> IO ()
copy :: T -> T -> IO ()
copy T
to T
from =
forall a. T -> (Ptr T_ -> IO a) -> IO a
with T
to forall a b. (a -> b) -> a -> b
$ \Ptr T_
p1 ->
forall a. T -> (Ptr T_ -> IO a) -> IO a
with T
from forall a b. (a -> b) -> a -> b
$ \Ptr T_
p2 ->
Ptr T_ -> Ptr T_ -> IO ()
copy_ Ptr T_
p1 Ptr T_
p2
foreign import ccall unsafe "alsa/asoundlib.h snd_seq_queue_status_copy"
copy_ :: Area.Ptr T_ -> Area.Ptr T_ -> IO ()
clone :: T -> IO T
clone :: T -> IO T
clone T
from =
do T
to <- IO T
malloc
T -> T -> IO ()
copy T
to T
from
forall (m :: * -> *) a. Monad m => a -> m a
return T
to
instance Area.C T where
malloc :: IO T
malloc = IO T
malloc
copy :: T -> T -> IO ()
copy = T -> T -> IO ()
copy
clone :: T -> IO T
clone = T -> IO T
clone
{-# LINE 41 "src/Sound/ALSA/Sequencer/Queue/Status.hsc" #-}
get :: Seq.T mode -> Queue.T -> IO T
get h q =
do status <- malloc
Exc.checkResult_ "get_queue_status"
=<< with status (get_ h q)
return status
foreign import ccall unsafe "alsa/asoundlib.h snd_seq_get_queue_status"
get_ :: Seq.T mode -> Queue.T -> Area.Ptr T_ -> IO C.CInt
{-# LINE 44 "src/Sound/ALSA/Sequencer/Queue/Status.hsc" #-}
getTickTime :: T -> IO Time.Tick
getTickTime i =
fmap fromIntegral $ with i getTickTime_
foreign import ccall unsafe "alsa/asoundlib.h snd_seq_queue_status_get_tick_time"
getTickTime_ :: Area.Ptr T_ -> IO C.CInt
{-# LINE 46 "src/Sound/ALSA/Sequencer/Queue/Status.hsc" #-}
getRealTime :: T -> IO RealTime.T
getRealTime i =
Area.peek =<< with i getRealTime_
foreign import ccall unsafe "alsa/asoundlib.h snd_seq_queue_status_get_real_time"
getRealTime_ :: Area.Ptr T_ -> IO (Area.Ptr RealTime.T)
{-# LINE 47 "src/Sound/ALSA/Sequencer/Queue/Status.hsc" #-}
getQueue :: T -> IO Queue.T
getQueue i =
fmap Queue.imp $ with i getQueue_
foreign import ccall unsafe "alsa/asoundlib.h snd_seq_queue_status_get_queue"
getQueue_ :: Area.Ptr T_ -> IO C.CInt
{-# LINE 48 "src/Sound/ALSA/Sequencer/Queue/Status.hsc" #-}
getEvents :: T -> IO Int
getEvents i =
fmap fromIntegral $ with i getEvents_
foreign import ccall unsafe "alsa/asoundlib.h snd_seq_queue_status_get_events"
getEvents_ :: Area.Ptr T_ -> IO C.CInt
{-# LINE 49 "src/Sound/ALSA/Sequencer/Queue/Status.hsc" #-}