{-# LINE 1 "src/Sound/ALSA/Sequencer/Marshal/RealTime.hsc" #-}
module Sound.ALSA.Sequencer.Marshal.RealTime where




import qualified Sound.ALSA.Sequencer.Utility as U

import qualified Data.Word as Word
import Foreign.Storable
          (Storable, sizeOf, alignment, peek, poke, pokeByteOff, peekByteOff, )


data T = Cons
   { T -> Word32
secs :: !(Word.Word32)
{-# LINE 15 "src/Sound/ALSA/Sequencer/Marshal/RealTime.hsc" #-}
   , nano :: !(Word.Word32)
{-# LINE 16 "src/Sound/ALSA/Sequencer/Marshal/RealTime.hsc" #-}
   }
   deriving (T -> T -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: T -> T -> Bool
$c/= :: T -> T -> Bool
== :: T -> T -> Bool
$c== :: T -> T -> Bool
Eq)

instance Show T where
   showsPrec :: Int -> T -> ShowS
showsPrec Int
prec (Cons Word32
s Word32
n) =
      Int -> String -> [ShowS] -> ShowS
U.showsRecord Int
prec String
"RealTime" [forall a. Show a => a -> ShowS
U.showsField Word32
s, forall a. Show a => a -> ShowS
U.showsField Word32
n]


instance Storable T where
  sizeOf :: T -> Int
sizeOf T
_    = (Int
8)
{-# LINE 26 "src/Sound/ALSA/Sequencer/Marshal/RealTime.hsc" #-}
  alignment _ = 4
{-# LINE 27 "src/Sound/ALSA/Sequencer/Marshal/RealTime.hsc" #-}
  peek p      = do s <- (\hsc_ptr -> peekByteOff hsc_ptr 0) p
{-# LINE 28 "src/Sound/ALSA/Sequencer/Marshal/RealTime.hsc" #-}
                   n <- (\hsc_ptr -> peekByteOff hsc_ptr 4) p
{-# LINE 29 "src/Sound/ALSA/Sequencer/Marshal/RealTime.hsc" #-}
                   return Cons { secs = s, nano = n }
  poke :: Ptr T -> T -> IO ()
poke Ptr T
p T
v    = (\Ptr T
hsc_ptr -> forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr T
hsc_ptr Int
0) Ptr T
p (T -> Word32
secs T
v)
{-# LINE 31 "src/Sound/ALSA/Sequencer/Marshal/RealTime.hsc" #-}
             forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> (\Ptr T
hsc_ptr -> forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr T
hsc_ptr Int
4) Ptr T
p (T -> Word32
nano T
v)
{-# LINE 32 "src/Sound/ALSA/Sequencer/Marshal/RealTime.hsc" #-}