module Sound.MED.Raw.MMDInfo where import Sound.MED.Basic.Amiga import Sound.MED.Basic.Utility data MMDInfo = MMDInfo { MMDInfo -> Maybe MMDInfo next :: Maybe MMDInfo , MMDInfo -> UWORD reserved :: UWORD , MMDInfo -> UWORD typ :: UWORD , MMDInfo -> ULONG len :: ULONG , MMDInfo -> [UBYTE] dat :: [ UBYTE ] } deriving (Int -> MMDInfo -> ShowS [MMDInfo] -> ShowS MMDInfo -> String (Int -> MMDInfo -> ShowS) -> (MMDInfo -> String) -> ([MMDInfo] -> ShowS) -> Show MMDInfo forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [MMDInfo] -> ShowS $cshowList :: [MMDInfo] -> ShowS show :: MMDInfo -> String $cshow :: MMDInfo -> String showsPrec :: Int -> MMDInfo -> ShowS $cshowsPrec :: Int -> MMDInfo -> ShowS Show) {-# SPECIALISE peek :: PTR -> StorableReader MMDInfo #-} {-# SPECIALISE peek :: PTR -> ByteStringReader MMDInfo #-} peek :: (Reader m) => PTR -> m MMDInfo peek :: ULONG -> m MMDInfo peek ULONG p = do ULONG next''' <- Peek m ULONG forall (m :: * -> *). Reader m => Peek m ULONG peekPTR ULONG p Maybe MMDInfo next' <- ULONG -> m MMDInfo forall (m :: * -> *). Reader m => ULONG -> m MMDInfo peek (ULONG -> m MMDInfo) -> ULONG -> m (Maybe MMDInfo) forall (m :: * -> *) a. Monad m => (ULONG -> m a) -> ULONG -> m (Maybe a) $? ULONG next''' UWORD reserved' <- Peek m UWORD forall (m :: * -> *). Reader m => Peek m UWORD peekUWORD (ULONG pULONG -> ULONG -> ULONG forall a. Num a => a -> a -> a +ULONG 4) UWORD typ' <- Peek m UWORD forall (m :: * -> *). Reader m => Peek m UWORD peekUWORD (ULONG pULONG -> ULONG -> ULONG forall a. Num a => a -> a -> a +ULONG 6) ULONG len' <- Peek m ULONG forall (m :: * -> *). Reader m => Peek m ULONG peekULONG (ULONG pULONG -> ULONG -> ULONG forall a. Num a => a -> a -> a +ULONG 8) [UBYTE] dat' <- (ULONG -> m UBYTE) -> [ULONG] -> m [UBYTE] forall (t :: * -> *) (m :: * -> *) a b. (Traversable t, Monad m) => (a -> m b) -> t a -> m (t b) mapM ULONG -> m UBYTE forall (m :: * -> *). Reader m => Peek m UBYTE peekUBYTE ([ULONG] -> m [UBYTE]) -> [ULONG] -> m [UBYTE] forall a b. (a -> b) -> a -> b $ ULONG -> ULONG -> ULONG -> [ULONG] forall i. Integral i => ULONG -> ULONG -> i -> [ULONG] pointerRangeGen (ULONG pULONG -> ULONG -> ULONG forall a. Num a => a -> a -> a +ULONG 12) ULONG 1 ULONG len' MMDInfo -> m MMDInfo forall (m :: * -> *) a. Monad m => a -> m a return (MMDInfo -> m MMDInfo) -> MMDInfo -> m MMDInfo forall a b. (a -> b) -> a -> b $ Maybe MMDInfo -> UWORD -> UWORD -> ULONG -> [UBYTE] -> MMDInfo MMDInfo Maybe MMDInfo next' UWORD reserved' UWORD typ' ULONG len' [UBYTE] dat'