module Sound.MED.Raw.MMDARexxTrigCmd where import Sound.MED.Basic.Amiga import Sound.MED.Basic.Utility data MMDARexxTrigCmd = MMDARexxTrigCmd { MMDARexxTrigCmd -> Maybe MMDARexxTrigCmd next :: Maybe MMDARexxTrigCmd , MMDARexxTrigCmd -> UBYTE cmdnum :: UBYTE , MMDARexxTrigCmd -> UBYTE pad :: UBYTE , MMDARexxTrigCmd -> WORD cmdtype :: WORD , MMDARexxTrigCmd -> [UBYTE] cmd :: [ UBYTE ] , MMDARexxTrigCmd -> [UBYTE] port :: [ UBYTE ] , MMDARexxTrigCmd -> UWORD cmd_len :: UWORD , MMDARexxTrigCmd -> UWORD port_len :: UWORD } deriving (Int -> MMDARexxTrigCmd -> ShowS [MMDARexxTrigCmd] -> ShowS MMDARexxTrigCmd -> String (Int -> MMDARexxTrigCmd -> ShowS) -> (MMDARexxTrigCmd -> String) -> ([MMDARexxTrigCmd] -> ShowS) -> Show MMDARexxTrigCmd forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [MMDARexxTrigCmd] -> ShowS $cshowList :: [MMDARexxTrigCmd] -> ShowS show :: MMDARexxTrigCmd -> String $cshow :: MMDARexxTrigCmd -> String showsPrec :: Int -> MMDARexxTrigCmd -> ShowS $cshowsPrec :: Int -> MMDARexxTrigCmd -> ShowS Show) {-# SPECIALISE peek :: PTR -> StorableReader MMDARexxTrigCmd #-} {-# SPECIALISE peek :: PTR -> ByteStringReader MMDARexxTrigCmd #-} peek :: (Reader m) => PTR -> m MMDARexxTrigCmd peek :: PTR -> m MMDARexxTrigCmd peek PTR p = do PTR next''' <- Peek m PTR forall (m :: * -> *). Reader m => Peek m PTR peekPTR PTR p Maybe MMDARexxTrigCmd next' <- PTR -> m MMDARexxTrigCmd forall (m :: * -> *). Reader m => PTR -> m MMDARexxTrigCmd peek (PTR -> m MMDARexxTrigCmd) -> PTR -> m (Maybe MMDARexxTrigCmd) forall (m :: * -> *) a. Monad m => (PTR -> m a) -> PTR -> m (Maybe a) $? PTR next''' UBYTE cmdnum' <- Peek m UBYTE forall (m :: * -> *). Reader m => Peek m UBYTE peekUBYTE (PTR pPTR -> PTR -> PTR forall a. Num a => a -> a -> a +PTR 4) UBYTE pad' <- Peek m UBYTE forall (m :: * -> *). Reader m => Peek m UBYTE peekUBYTE (PTR pPTR -> PTR -> PTR forall a. Num a => a -> a -> a +PTR 5) WORD cmdtype' <- Peek m WORD forall (m :: * -> *). Reader m => Peek m WORD peekWORD (PTR pPTR -> PTR -> PTR forall a. Num a => a -> a -> a +PTR 6) PTR cmd'' <- Peek m PTR forall (m :: * -> *). Reader m => Peek m PTR peekPTR (PTR pPTR -> PTR -> PTR forall a. Num a => a -> a -> a +PTR 8) PTR port'' <- Peek m PTR forall (m :: * -> *). Reader m => Peek m PTR peekPTR (PTR pPTR -> PTR -> PTR forall a. Num a => a -> a -> a +PTR 12) UWORD cmd_len' <- Peek m UWORD forall (m :: * -> *). Reader m => Peek m UWORD peekUWORD (PTR pPTR -> PTR -> PTR forall a. Num a => a -> a -> a +PTR 16) UWORD port_len' <- Peek m UWORD forall (m :: * -> *). Reader m => Peek m UWORD peekUWORD (PTR pPTR -> PTR -> PTR forall a. Num a => a -> a -> a +PTR 18) [UBYTE] cmd' <- Peek m UBYTE -> [PTR] -> m [UBYTE] forall (t :: * -> *) (m :: * -> *) a b. (Traversable t, Monad m) => (a -> m b) -> t a -> m (t b) mapM Peek 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 -> UWORD -> [PTR] forall i. Integral i => PTR -> PTR -> i -> [PTR] pointerRangeGenCheck PTR cmd'' PTR 1 (UWORD cmd_len'UWORD -> UWORD -> UWORD forall a. Num a => a -> a -> a +UWORD 1) [UBYTE] port' <- Peek m UBYTE -> [PTR] -> m [UBYTE] forall (t :: * -> *) (m :: * -> *) a b. (Traversable t, Monad m) => (a -> m b) -> t a -> m (t b) mapM Peek 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 -> UWORD -> [PTR] forall i. Integral i => PTR -> PTR -> i -> [PTR] pointerRangeGenCheck PTR port'' PTR 1 (UWORD port_len'UWORD -> UWORD -> UWORD forall a. Num a => a -> a -> a +UWORD 1) MMDARexxTrigCmd -> m MMDARexxTrigCmd forall (m :: * -> *) a. Monad m => a -> m a return (MMDARexxTrigCmd -> m MMDARexxTrigCmd) -> MMDARexxTrigCmd -> m MMDARexxTrigCmd forall a b. (a -> b) -> a -> b $ Maybe MMDARexxTrigCmd -> UBYTE -> UBYTE -> WORD -> [UBYTE] -> [UBYTE] -> UWORD -> UWORD -> MMDARexxTrigCmd MMDARexxTrigCmd Maybe MMDARexxTrigCmd next' UBYTE cmdnum' UBYTE pad' WORD cmdtype' [UBYTE] cmd' [UBYTE] port' UWORD cmd_len' UWORD port_len'