module Sound.MED.Raw.MMDInstrInfo where import Sound.MED.Basic.Amiga import Sound.MED.Basic.Utility data MMDInstrInfo = MMDInstrInfo { MMDInstrInfo -> Maybe [UBYTE] name :: Maybe [ UBYTE ] } deriving (Int -> MMDInstrInfo -> ShowS [MMDInstrInfo] -> ShowS MMDInstrInfo -> String forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [MMDInstrInfo] -> ShowS $cshowList :: [MMDInstrInfo] -> ShowS show :: MMDInstrInfo -> String $cshow :: MMDInstrInfo -> String showsPrec :: Int -> MMDInstrInfo -> ShowS $cshowsPrec :: Int -> MMDInstrInfo -> ShowS Show) {-# SPECIALISE peek :: UWORD -> PTR -> StorableReader MMDInstrInfo #-} {-# SPECIALISE peek :: UWORD -> PTR -> ByteStringReader MMDInstrInfo #-} peek :: (Reader m) => UWORD -> PTR -> m MMDInstrInfo peek :: forall (m :: * -> *). Reader m => UWORD -> PTR -> m MMDInstrInfo peek UWORD size PTR p = do Maybe [UBYTE] name' <- forall (m :: * -> *) a. Monad m => Bool -> m a -> m (Maybe a) skipIf (UWORD size forall a. Ord a => a -> a -> Bool < UWORD 40) forall a b. (a -> b) -> a -> b $ forall (t :: * -> *) (m :: * -> *) a b. (Traversable t, Monad m) => (a -> m b) -> t a -> m (t b) mapM forall (m :: * -> *). Reader m => Peek m UBYTE peekUBYTE forall a b. (a -> b) -> a -> b $ PTR -> PTR -> Int -> [PTR] pointerRange PTR p PTR 1 Int 40 forall (m :: * -> *) a. Monad m => a -> m a return forall a b. (a -> b) -> a -> b $ Maybe [UBYTE] -> MMDInstrInfo MMDInstrInfo Maybe [UBYTE] name'