module Sound.MED.Raw.MMDDumpData where import qualified Sound.MED.Raw.MMDDump as MMDDump import Sound.MED.Raw.MMDDump(MMDDump) import Sound.MED.Basic.Amiga import Sound.MED.Basic.Utility data MMDDumpData = MMDDumpData { MMDDumpData -> UWORD numdumps :: UWORD , MMDDumpData -> [UWORD] reserved :: [ UWORD ] , MMDDumpData -> [MMDDump] dumps :: [ MMDDump ] } deriving (Int -> MMDDumpData -> ShowS [MMDDumpData] -> ShowS MMDDumpData -> String forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [MMDDumpData] -> ShowS $cshowList :: [MMDDumpData] -> ShowS show :: MMDDumpData -> String $cshow :: MMDDumpData -> String showsPrec :: Int -> MMDDumpData -> ShowS $cshowsPrec :: Int -> MMDDumpData -> ShowS Show) {-# SPECIALISE peek :: PTR -> StorableReader MMDDumpData #-} {-# SPECIALISE peek :: PTR -> ByteStringReader MMDDumpData #-} peek :: (Reader m) => PTR -> m MMDDumpData peek :: forall (m :: * -> *). Reader m => PTR -> m MMDDumpData peek PTR p = do UWORD numdumps' <- forall (m :: * -> *). Reader m => Peek m UWORD peekUWORD PTR p [UWORD] reserved' <- forall (t :: * -> *) (m :: * -> *) a b. (Traversable t, Monad m) => (a -> m b) -> t a -> m (t b) mapM forall (m :: * -> *). Reader m => Peek m UWORD peekUWORD forall a b. (a -> b) -> a -> b $ PTR -> PTR -> Int -> [PTR] pointerRange (PTR pforall a. Num a => a -> a -> a +PTR 2) PTR 2 Int 3 [PTR] dumps'' <- forall (t :: * -> *) (m :: * -> *) a b. (Traversable t, Monad m) => (a -> m b) -> t a -> m (t b) mapM forall (m :: * -> *). Reader m => Peek m PTR peekPTR forall a b. (a -> b) -> a -> b $ forall i. Integral i => PTR -> PTR -> i -> [PTR] pointerRangeGen (PTR pforall a. Num a => a -> a -> a +PTR 8) PTR 4 UWORD numdumps' [MMDDump] dumps' <- forall (t :: * -> *) (m :: * -> *) a b. (Traversable t, Monad m) => (a -> m b) -> t a -> m (t b) mapM forall (m :: * -> *). Reader m => PTR -> m MMDDump MMDDump.peek [PTR] dumps'' forall (m :: * -> *) a. Monad m => a -> m a return forall a b. (a -> b) -> a -> b $ UWORD -> [UWORD] -> [MMDDump] -> MMDDumpData MMDDumpData UWORD numdumps' [UWORD] reserved' [MMDDump] dumps'