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 (Int -> MMDInstrInfo -> ShowS) -> (MMDInstrInfo -> String) -> ([MMDInstrInfo] -> ShowS) -> Show MMDInstrInfo 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 :: UWORD -> PTR -> m MMDInstrInfo peek UWORD size PTR p = do Maybe [UBYTE] name' <- Bool -> m [UBYTE] -> m (Maybe [UBYTE]) forall (m :: * -> *) a. Monad m => Bool -> m a -> m (Maybe a) skipIf (UWORD size UWORD -> UWORD -> Bool forall a. Ord a => a -> a -> Bool < UWORD 40) (m [UBYTE] -> m (Maybe [UBYTE])) -> m [UBYTE] -> m (Maybe [UBYTE]) forall a b. (a -> b) -> a -> b $ (PTR -> m UBYTE) -> [PTR] -> m [UBYTE] forall (t :: * -> *) (m :: * -> *) a b. (Traversable t, Monad m) => (a -> m b) -> t a -> m (t b) mapM PTR -> m UBYTE forall (m :: * -> *). Reader m => Peek m UBYTE peekUBYTE ([PTR] -> m [UBYTE]) -> [PTR] -> m [UBYTE] forall a b. (a -> b) -> a -> b $ PTR -> PTR -> Int -> [PTR] pointerRange PTR p PTR 1 Int 40 MMDInstrInfo -> m MMDInstrInfo forall (m :: * -> *) a. Monad m => a -> m a return (MMDInstrInfo -> m MMDInstrInfo) -> MMDInstrInfo -> m MMDInstrInfo forall a b. (a -> b) -> a -> b $ Maybe [UBYTE] -> MMDInstrInfo MMDInstrInfo Maybe [UBYTE] name'