module Binrep.Type.Assembly where

import GHC.Generics ( Generic )
import Data.Data ( Typeable, Data )

import Data.ByteString.Short ( ShortByteString )
import Data.ByteString ( ByteString )
import Data.Text.Short ( ShortText )
import Data.Aeson ( ToJSON, FromJSON )

import Binrep.Extra.HexByteString

import Binrep

data Arch
  = ArmV8ThumbLE
    deriving stock ((forall x. Arch -> Rep Arch x)
-> (forall x. Rep Arch x -> Arch) -> Generic Arch
forall x. Rep Arch x -> Arch
forall x. Arch -> Rep Arch x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Arch x -> Arch
$cfrom :: forall x. Arch -> Rep Arch x
Generic, Typeable, Typeable Arch
Typeable Arch
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> Arch -> c Arch)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c Arch)
-> (Arch -> Constr)
-> (Arch -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c Arch))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Arch))
-> ((forall b. Data b => b -> b) -> Arch -> Arch)
-> (forall r r'.
    (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Arch -> r)
-> (forall r r'.
    (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Arch -> r)
-> (forall u. (forall d. Data d => d -> u) -> Arch -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> Arch -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> Arch -> m Arch)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> Arch -> m Arch)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> Arch -> m Arch)
-> Data Arch
Arch -> DataType
Arch -> Constr
(forall b. Data b => b -> b) -> Arch -> Arch
forall a.
Typeable a
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
    (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
    (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> Arch -> u
forall u. (forall d. Data d => d -> u) -> Arch -> [u]
forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Arch -> r
forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Arch -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Arch -> m Arch
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Arch -> m Arch
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Arch
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Arch -> c Arch
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Arch)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Arch)
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Arch -> m Arch
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Arch -> m Arch
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Arch -> m Arch
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Arch -> m Arch
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Arch -> m Arch
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Arch -> m Arch
gmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> Arch -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> Arch -> u
gmapQ :: forall u. (forall d. Data d => d -> u) -> Arch -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> Arch -> [u]
gmapQr :: forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Arch -> r
$cgmapQr :: forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Arch -> r
gmapQl :: forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Arch -> r
$cgmapQl :: forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Arch -> r
gmapT :: (forall b. Data b => b -> b) -> Arch -> Arch
$cgmapT :: (forall b. Data b => b -> b) -> Arch -> Arch
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Arch)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Arch)
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Arch)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Arch)
dataTypeOf :: Arch -> DataType
$cdataTypeOf :: Arch -> DataType
toConstr :: Arch -> Constr
$ctoConstr :: Arch -> Constr
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Arch
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Arch
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Arch -> c Arch
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Arch -> c Arch
Data, Int -> Arch -> ShowS
[Arch] -> ShowS
Arch -> String
(Int -> Arch -> ShowS)
-> (Arch -> String) -> ([Arch] -> ShowS) -> Show Arch
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Arch] -> ShowS
$cshowList :: [Arch] -> ShowS
show :: Arch -> String
$cshow :: Arch -> String
showsPrec :: Int -> Arch -> ShowS
$cshowsPrec :: Int -> Arch -> ShowS
Show, Arch -> Arch -> Bool
(Arch -> Arch -> Bool) -> (Arch -> Arch -> Bool) -> Eq Arch
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Arch -> Arch -> Bool
$c/= :: Arch -> Arch -> Bool
== :: Arch -> Arch -> Bool
$c== :: Arch -> Arch -> Bool
Eq)

newtype MachineInstr (arch :: Arch) = MachineInstr { forall (arch :: Arch). MachineInstr arch -> ShortByteString
getMachineInstr :: ShortByteString }
    deriving stock ((forall x. MachineInstr arch -> Rep (MachineInstr arch) x)
-> (forall x. Rep (MachineInstr arch) x -> MachineInstr arch)
-> Generic (MachineInstr arch)
forall x. Rep (MachineInstr arch) x -> MachineInstr arch
forall x. MachineInstr arch -> Rep (MachineInstr arch) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall (arch :: Arch) x.
Rep (MachineInstr arch) x -> MachineInstr arch
forall (arch :: Arch) x.
MachineInstr arch -> Rep (MachineInstr arch) x
$cto :: forall (arch :: Arch) x.
Rep (MachineInstr arch) x -> MachineInstr arch
$cfrom :: forall (arch :: Arch) x.
MachineInstr arch -> Rep (MachineInstr arch) x
Generic, Typeable, Typeable (MachineInstr arch)
Typeable (MachineInstr arch)
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g)
    -> MachineInstr arch
    -> c (MachineInstr arch))
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c (MachineInstr arch))
-> (MachineInstr arch -> Constr)
-> (MachineInstr arch -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c (MachineInstr arch)))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e))
    -> Maybe (c (MachineInstr arch)))
-> ((forall b. Data b => b -> b)
    -> MachineInstr arch -> MachineInstr arch)
-> (forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> MachineInstr arch -> r)
-> (forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> MachineInstr arch -> r)
-> (forall u.
    (forall d. Data d => d -> u) -> MachineInstr arch -> [u])
-> (forall u.
    Int -> (forall d. Data d => d -> u) -> MachineInstr arch -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d)
    -> MachineInstr arch -> m (MachineInstr arch))
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> MachineInstr arch -> m (MachineInstr arch))
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> MachineInstr arch -> m (MachineInstr arch))
-> Data (MachineInstr arch)
MachineInstr arch -> DataType
MachineInstr arch -> Constr
(forall b. Data b => b -> b)
-> MachineInstr arch -> MachineInstr arch
forall a.
Typeable a
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
    (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
    (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u.
Int -> (forall d. Data d => d -> u) -> MachineInstr arch -> u
forall u. (forall d. Data d => d -> u) -> MachineInstr arch -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> MachineInstr arch -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> MachineInstr arch -> r
forall {arch :: Arch}.
Typeable arch =>
Typeable (MachineInstr arch)
forall (arch :: Arch).
Typeable arch =>
MachineInstr arch -> DataType
forall (arch :: Arch). Typeable arch => MachineInstr arch -> Constr
forall (arch :: Arch).
Typeable arch =>
(forall b. Data b => b -> b)
-> MachineInstr arch -> MachineInstr arch
forall (arch :: Arch) u.
Typeable arch =>
Int -> (forall d. Data d => d -> u) -> MachineInstr arch -> u
forall (arch :: Arch) u.
Typeable arch =>
(forall d. Data d => d -> u) -> MachineInstr arch -> [u]
forall (arch :: Arch) r r'.
Typeable arch =>
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> MachineInstr arch -> r
forall (arch :: Arch) r r'.
Typeable arch =>
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> MachineInstr arch -> r
forall (arch :: Arch) (m :: * -> *).
(Typeable arch, Monad m) =>
(forall d. Data d => d -> m d)
-> MachineInstr arch -> m (MachineInstr arch)
forall (arch :: Arch) (m :: * -> *).
(Typeable arch, MonadPlus m) =>
(forall d. Data d => d -> m d)
-> MachineInstr arch -> m (MachineInstr arch)
forall (arch :: Arch) (c :: * -> *).
Typeable arch =>
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (MachineInstr arch)
forall (arch :: Arch) (c :: * -> *).
Typeable arch =>
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g)
-> MachineInstr arch
-> c (MachineInstr arch)
forall (arch :: Arch) (t :: * -> *) (c :: * -> *).
(Typeable arch, Typeable t) =>
(forall d. Data d => c (t d)) -> Maybe (c (MachineInstr arch))
forall (arch :: Arch) (t :: * -> * -> *) (c :: * -> *).
(Typeable arch, Typeable t) =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (MachineInstr arch))
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> MachineInstr arch -> m (MachineInstr arch)
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> MachineInstr arch -> m (MachineInstr arch)
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (MachineInstr arch)
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g)
-> MachineInstr arch
-> c (MachineInstr arch)
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c (MachineInstr arch))
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (MachineInstr arch))
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> MachineInstr arch -> m (MachineInstr arch)
$cgmapMo :: forall (arch :: Arch) (m :: * -> *).
(Typeable arch, MonadPlus m) =>
(forall d. Data d => d -> m d)
-> MachineInstr arch -> m (MachineInstr arch)
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> MachineInstr arch -> m (MachineInstr arch)
$cgmapMp :: forall (arch :: Arch) (m :: * -> *).
(Typeable arch, MonadPlus m) =>
(forall d. Data d => d -> m d)
-> MachineInstr arch -> m (MachineInstr arch)
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> MachineInstr arch -> m (MachineInstr arch)
$cgmapM :: forall (arch :: Arch) (m :: * -> *).
(Typeable arch, Monad m) =>
(forall d. Data d => d -> m d)
-> MachineInstr arch -> m (MachineInstr arch)
gmapQi :: forall u.
Int -> (forall d. Data d => d -> u) -> MachineInstr arch -> u
$cgmapQi :: forall (arch :: Arch) u.
Typeable arch =>
Int -> (forall d. Data d => d -> u) -> MachineInstr arch -> u
gmapQ :: forall u. (forall d. Data d => d -> u) -> MachineInstr arch -> [u]
$cgmapQ :: forall (arch :: Arch) u.
Typeable arch =>
(forall d. Data d => d -> u) -> MachineInstr arch -> [u]
gmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> MachineInstr arch -> r
$cgmapQr :: forall (arch :: Arch) r r'.
Typeable arch =>
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> MachineInstr arch -> r
gmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> MachineInstr arch -> r
$cgmapQl :: forall (arch :: Arch) r r'.
Typeable arch =>
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> MachineInstr arch -> r
gmapT :: (forall b. Data b => b -> b)
-> MachineInstr arch -> MachineInstr arch
$cgmapT :: forall (arch :: Arch).
Typeable arch =>
(forall b. Data b => b -> b)
-> MachineInstr arch -> MachineInstr arch
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (MachineInstr arch))
$cdataCast2 :: forall (arch :: Arch) (t :: * -> * -> *) (c :: * -> *).
(Typeable arch, Typeable t) =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (MachineInstr arch))
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c (MachineInstr arch))
$cdataCast1 :: forall (arch :: Arch) (t :: * -> *) (c :: * -> *).
(Typeable arch, Typeable t) =>
(forall d. Data d => c (t d)) -> Maybe (c (MachineInstr arch))
dataTypeOf :: MachineInstr arch -> DataType
$cdataTypeOf :: forall (arch :: Arch).
Typeable arch =>
MachineInstr arch -> DataType
toConstr :: MachineInstr arch -> Constr
$ctoConstr :: forall (arch :: Arch). Typeable arch => MachineInstr arch -> Constr
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (MachineInstr arch)
$cgunfold :: forall (arch :: Arch) (c :: * -> *).
Typeable arch =>
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (MachineInstr arch)
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g)
-> MachineInstr arch
-> c (MachineInstr arch)
$cgfoldl :: forall (arch :: Arch) (c :: * -> *).
Typeable arch =>
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g)
-> MachineInstr arch
-> c (MachineInstr arch)
Data)
    deriving Int -> MachineInstr arch -> ShowS
[MachineInstr arch] -> ShowS
MachineInstr arch -> String
(Int -> MachineInstr arch -> ShowS)
-> (MachineInstr arch -> String)
-> ([MachineInstr arch] -> ShowS)
-> Show (MachineInstr arch)
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
forall (arch :: Arch). Int -> MachineInstr arch -> ShowS
forall (arch :: Arch). [MachineInstr arch] -> ShowS
forall (arch :: Arch). MachineInstr arch -> String
showList :: [MachineInstr arch] -> ShowS
$cshowList :: forall (arch :: Arch). [MachineInstr arch] -> ShowS
show :: MachineInstr arch -> String
$cshow :: forall (arch :: Arch). MachineInstr arch -> String
showsPrec :: Int -> MachineInstr arch -> ShowS
$cshowsPrec :: forall (arch :: Arch). Int -> MachineInstr arch -> ShowS
Show via (Hex ShortByteString)

newtype MachineCode  (arch :: Arch) = MachineCode  { forall (arch :: Arch). MachineCode arch -> ByteString
getMachineCode  :: ByteString }
    deriving stock ((forall x. MachineCode arch -> Rep (MachineCode arch) x)
-> (forall x. Rep (MachineCode arch) x -> MachineCode arch)
-> Generic (MachineCode arch)
forall x. Rep (MachineCode arch) x -> MachineCode arch
forall x. MachineCode arch -> Rep (MachineCode arch) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall (arch :: Arch) x.
Rep (MachineCode arch) x -> MachineCode arch
forall (arch :: Arch) x.
MachineCode arch -> Rep (MachineCode arch) x
$cto :: forall (arch :: Arch) x.
Rep (MachineCode arch) x -> MachineCode arch
$cfrom :: forall (arch :: Arch) x.
MachineCode arch -> Rep (MachineCode arch) x
Generic, Typeable, Typeable (MachineCode arch)
Typeable (MachineCode arch)
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g)
    -> MachineCode arch
    -> c (MachineCode arch))
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c (MachineCode arch))
-> (MachineCode arch -> Constr)
-> (MachineCode arch -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c (MachineCode arch)))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e))
    -> Maybe (c (MachineCode arch)))
-> ((forall b. Data b => b -> b)
    -> MachineCode arch -> MachineCode arch)
-> (forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> MachineCode arch -> r)
-> (forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> MachineCode arch -> r)
-> (forall u.
    (forall d. Data d => d -> u) -> MachineCode arch -> [u])
-> (forall u.
    Int -> (forall d. Data d => d -> u) -> MachineCode arch -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d)
    -> MachineCode arch -> m (MachineCode arch))
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> MachineCode arch -> m (MachineCode arch))
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> MachineCode arch -> m (MachineCode arch))
-> Data (MachineCode arch)
MachineCode arch -> DataType
MachineCode arch -> Constr
(forall b. Data b => b -> b)
-> MachineCode arch -> MachineCode arch
forall a.
Typeable a
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
    (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
    (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u.
Int -> (forall d. Data d => d -> u) -> MachineCode arch -> u
forall u. (forall d. Data d => d -> u) -> MachineCode arch -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> MachineCode arch -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> MachineCode arch -> r
forall {arch :: Arch}. Typeable arch => Typeable (MachineCode arch)
forall (arch :: Arch).
Typeable arch =>
MachineCode arch -> DataType
forall (arch :: Arch). Typeable arch => MachineCode arch -> Constr
forall (arch :: Arch).
Typeable arch =>
(forall b. Data b => b -> b)
-> MachineCode arch -> MachineCode arch
forall (arch :: Arch) u.
Typeable arch =>
Int -> (forall d. Data d => d -> u) -> MachineCode arch -> u
forall (arch :: Arch) u.
Typeable arch =>
(forall d. Data d => d -> u) -> MachineCode arch -> [u]
forall (arch :: Arch) r r'.
Typeable arch =>
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> MachineCode arch -> r
forall (arch :: Arch) r r'.
Typeable arch =>
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> MachineCode arch -> r
forall (arch :: Arch) (m :: * -> *).
(Typeable arch, Monad m) =>
(forall d. Data d => d -> m d)
-> MachineCode arch -> m (MachineCode arch)
forall (arch :: Arch) (m :: * -> *).
(Typeable arch, MonadPlus m) =>
(forall d. Data d => d -> m d)
-> MachineCode arch -> m (MachineCode arch)
forall (arch :: Arch) (c :: * -> *).
Typeable arch =>
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (MachineCode arch)
forall (arch :: Arch) (c :: * -> *).
Typeable arch =>
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> MachineCode arch -> c (MachineCode arch)
forall (arch :: Arch) (t :: * -> *) (c :: * -> *).
(Typeable arch, Typeable t) =>
(forall d. Data d => c (t d)) -> Maybe (c (MachineCode arch))
forall (arch :: Arch) (t :: * -> * -> *) (c :: * -> *).
(Typeable arch, Typeable t) =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (MachineCode arch))
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> MachineCode arch -> m (MachineCode arch)
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> MachineCode arch -> m (MachineCode arch)
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (MachineCode arch)
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> MachineCode arch -> c (MachineCode arch)
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c (MachineCode arch))
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (MachineCode arch))
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> MachineCode arch -> m (MachineCode arch)
$cgmapMo :: forall (arch :: Arch) (m :: * -> *).
(Typeable arch, MonadPlus m) =>
(forall d. Data d => d -> m d)
-> MachineCode arch -> m (MachineCode arch)
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> MachineCode arch -> m (MachineCode arch)
$cgmapMp :: forall (arch :: Arch) (m :: * -> *).
(Typeable arch, MonadPlus m) =>
(forall d. Data d => d -> m d)
-> MachineCode arch -> m (MachineCode arch)
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> MachineCode arch -> m (MachineCode arch)
$cgmapM :: forall (arch :: Arch) (m :: * -> *).
(Typeable arch, Monad m) =>
(forall d. Data d => d -> m d)
-> MachineCode arch -> m (MachineCode arch)
gmapQi :: forall u.
Int -> (forall d. Data d => d -> u) -> MachineCode arch -> u
$cgmapQi :: forall (arch :: Arch) u.
Typeable arch =>
Int -> (forall d. Data d => d -> u) -> MachineCode arch -> u
gmapQ :: forall u. (forall d. Data d => d -> u) -> MachineCode arch -> [u]
$cgmapQ :: forall (arch :: Arch) u.
Typeable arch =>
(forall d. Data d => d -> u) -> MachineCode arch -> [u]
gmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> MachineCode arch -> r
$cgmapQr :: forall (arch :: Arch) r r'.
Typeable arch =>
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> MachineCode arch -> r
gmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> MachineCode arch -> r
$cgmapQl :: forall (arch :: Arch) r r'.
Typeable arch =>
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> MachineCode arch -> r
gmapT :: (forall b. Data b => b -> b)
-> MachineCode arch -> MachineCode arch
$cgmapT :: forall (arch :: Arch).
Typeable arch =>
(forall b. Data b => b -> b)
-> MachineCode arch -> MachineCode arch
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (MachineCode arch))
$cdataCast2 :: forall (arch :: Arch) (t :: * -> * -> *) (c :: * -> *).
(Typeable arch, Typeable t) =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (MachineCode arch))
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c (MachineCode arch))
$cdataCast1 :: forall (arch :: Arch) (t :: * -> *) (c :: * -> *).
(Typeable arch, Typeable t) =>
(forall d. Data d => c (t d)) -> Maybe (c (MachineCode arch))
dataTypeOf :: MachineCode arch -> DataType
$cdataTypeOf :: forall (arch :: Arch).
Typeable arch =>
MachineCode arch -> DataType
toConstr :: MachineCode arch -> Constr
$ctoConstr :: forall (arch :: Arch). Typeable arch => MachineCode arch -> Constr
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (MachineCode arch)
$cgunfold :: forall (arch :: Arch) (c :: * -> *).
Typeable arch =>
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (MachineCode arch)
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> MachineCode arch -> c (MachineCode arch)
$cgfoldl :: forall (arch :: Arch) (c :: * -> *).
Typeable arch =>
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> MachineCode arch -> c (MachineCode arch)
Data)
    deriving MachineCode arch -> MachineCode arch -> Bool
(MachineCode arch -> MachineCode arch -> Bool)
-> (MachineCode arch -> MachineCode arch -> Bool)
-> Eq (MachineCode arch)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall (arch :: Arch). MachineCode arch -> MachineCode arch -> Bool
/= :: MachineCode arch -> MachineCode arch -> Bool
$c/= :: forall (arch :: Arch). MachineCode arch -> MachineCode arch -> Bool
== :: MachineCode arch -> MachineCode arch -> Bool
$c== :: forall (arch :: Arch). MachineCode arch -> MachineCode arch -> Bool
Eq via ByteString
    deriving Int -> MachineCode arch -> ShowS
[MachineCode arch] -> ShowS
MachineCode arch -> String
(Int -> MachineCode arch -> ShowS)
-> (MachineCode arch -> String)
-> ([MachineCode arch] -> ShowS)
-> Show (MachineCode arch)
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
forall (arch :: Arch). Int -> MachineCode arch -> ShowS
forall (arch :: Arch). [MachineCode arch] -> ShowS
forall (arch :: Arch). MachineCode arch -> String
showList :: [MachineCode arch] -> ShowS
$cshowList :: forall (arch :: Arch). [MachineCode arch] -> ShowS
show :: MachineCode arch -> String
$cshow :: forall (arch :: Arch). MachineCode arch -> String
showsPrec :: Int -> MachineCode arch -> ShowS
$cshowsPrec :: forall (arch :: Arch). Int -> MachineCode arch -> ShowS
Show via (Hex ByteString)
    deriving (MachineCode arch -> Int
(MachineCode arch -> Int) -> BLen (MachineCode arch)
forall a. (a -> Int) -> BLen a
forall (arch :: Arch). MachineCode arch -> Int
blen :: MachineCode arch -> Int
$cblen :: forall (arch :: Arch). MachineCode arch -> Int
BLen, MachineCode arch -> Builder
(MachineCode arch -> Builder) -> Put (MachineCode arch)
forall a. (a -> Builder) -> Put a
forall (arch :: Arch). MachineCode arch -> Builder
put :: MachineCode arch -> Builder
$cput :: forall (arch :: Arch). MachineCode arch -> Builder
Put, Getter (MachineCode arch)
Getter (MachineCode arch) -> Get (MachineCode arch)
forall a. Getter a -> Get a
forall (arch :: Arch). Getter (MachineCode arch)
get :: Getter (MachineCode arch)
$cget :: forall (arch :: Arch). Getter (MachineCode arch)
Get) via ByteString

newtype AsmInstr     (arch :: Arch) = AsmInstr     { forall (arch :: Arch). AsmInstr arch -> ShortText
getAsmInstr     :: ShortText }
    deriving stock ((forall x. AsmInstr arch -> Rep (AsmInstr arch) x)
-> (forall x. Rep (AsmInstr arch) x -> AsmInstr arch)
-> Generic (AsmInstr arch)
forall x. Rep (AsmInstr arch) x -> AsmInstr arch
forall x. AsmInstr arch -> Rep (AsmInstr arch) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall (arch :: Arch) x. Rep (AsmInstr arch) x -> AsmInstr arch
forall (arch :: Arch) x. AsmInstr arch -> Rep (AsmInstr arch) x
$cto :: forall (arch :: Arch) x. Rep (AsmInstr arch) x -> AsmInstr arch
$cfrom :: forall (arch :: Arch) x. AsmInstr arch -> Rep (AsmInstr arch) x
Generic, Typeable, Typeable (AsmInstr arch)
Typeable (AsmInstr arch)
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> AsmInstr arch -> c (AsmInstr arch))
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c (AsmInstr arch))
-> (AsmInstr arch -> Constr)
-> (AsmInstr arch -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c (AsmInstr arch)))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e))
    -> Maybe (c (AsmInstr arch)))
-> ((forall b. Data b => b -> b) -> AsmInstr arch -> AsmInstr arch)
-> (forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> AsmInstr arch -> r)
-> (forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> AsmInstr arch -> r)
-> (forall u. (forall d. Data d => d -> u) -> AsmInstr arch -> [u])
-> (forall u.
    Int -> (forall d. Data d => d -> u) -> AsmInstr arch -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d)
    -> AsmInstr arch -> m (AsmInstr arch))
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> AsmInstr arch -> m (AsmInstr arch))
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> AsmInstr arch -> m (AsmInstr arch))
-> Data (AsmInstr arch)
AsmInstr arch -> DataType
AsmInstr arch -> Constr
(forall b. Data b => b -> b) -> AsmInstr arch -> AsmInstr arch
forall a.
Typeable a
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
    (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
    (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> AsmInstr arch -> u
forall u. (forall d. Data d => d -> u) -> AsmInstr arch -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> AsmInstr arch -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> AsmInstr arch -> r
forall {arch :: Arch}. Typeable arch => Typeable (AsmInstr arch)
forall (arch :: Arch). Typeable arch => AsmInstr arch -> DataType
forall (arch :: Arch). Typeable arch => AsmInstr arch -> Constr
forall (arch :: Arch).
Typeable arch =>
(forall b. Data b => b -> b) -> AsmInstr arch -> AsmInstr arch
forall (arch :: Arch) u.
Typeable arch =>
Int -> (forall d. Data d => d -> u) -> AsmInstr arch -> u
forall (arch :: Arch) u.
Typeable arch =>
(forall d. Data d => d -> u) -> AsmInstr arch -> [u]
forall (arch :: Arch) r r'.
Typeable arch =>
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> AsmInstr arch -> r
forall (arch :: Arch) r r'.
Typeable arch =>
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> AsmInstr arch -> r
forall (arch :: Arch) (m :: * -> *).
(Typeable arch, Monad m) =>
(forall d. Data d => d -> m d)
-> AsmInstr arch -> m (AsmInstr arch)
forall (arch :: Arch) (m :: * -> *).
(Typeable arch, MonadPlus m) =>
(forall d. Data d => d -> m d)
-> AsmInstr arch -> m (AsmInstr arch)
forall (arch :: Arch) (c :: * -> *).
Typeable arch =>
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (AsmInstr arch)
forall (arch :: Arch) (c :: * -> *).
Typeable arch =>
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> AsmInstr arch -> c (AsmInstr arch)
forall (arch :: Arch) (t :: * -> *) (c :: * -> *).
(Typeable arch, Typeable t) =>
(forall d. Data d => c (t d)) -> Maybe (c (AsmInstr arch))
forall (arch :: Arch) (t :: * -> * -> *) (c :: * -> *).
(Typeable arch, Typeable t) =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (AsmInstr arch))
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> AsmInstr arch -> m (AsmInstr arch)
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> AsmInstr arch -> m (AsmInstr arch)
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (AsmInstr arch)
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> AsmInstr arch -> c (AsmInstr arch)
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c (AsmInstr arch))
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (AsmInstr arch))
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> AsmInstr arch -> m (AsmInstr arch)
$cgmapMo :: forall (arch :: Arch) (m :: * -> *).
(Typeable arch, MonadPlus m) =>
(forall d. Data d => d -> m d)
-> AsmInstr arch -> m (AsmInstr arch)
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> AsmInstr arch -> m (AsmInstr arch)
$cgmapMp :: forall (arch :: Arch) (m :: * -> *).
(Typeable arch, MonadPlus m) =>
(forall d. Data d => d -> m d)
-> AsmInstr arch -> m (AsmInstr arch)
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> AsmInstr arch -> m (AsmInstr arch)
$cgmapM :: forall (arch :: Arch) (m :: * -> *).
(Typeable arch, Monad m) =>
(forall d. Data d => d -> m d)
-> AsmInstr arch -> m (AsmInstr arch)
gmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> AsmInstr arch -> u
$cgmapQi :: forall (arch :: Arch) u.
Typeable arch =>
Int -> (forall d. Data d => d -> u) -> AsmInstr arch -> u
gmapQ :: forall u. (forall d. Data d => d -> u) -> AsmInstr arch -> [u]
$cgmapQ :: forall (arch :: Arch) u.
Typeable arch =>
(forall d. Data d => d -> u) -> AsmInstr arch -> [u]
gmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> AsmInstr arch -> r
$cgmapQr :: forall (arch :: Arch) r r'.
Typeable arch =>
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> AsmInstr arch -> r
gmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> AsmInstr arch -> r
$cgmapQl :: forall (arch :: Arch) r r'.
Typeable arch =>
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> AsmInstr arch -> r
gmapT :: (forall b. Data b => b -> b) -> AsmInstr arch -> AsmInstr arch
$cgmapT :: forall (arch :: Arch).
Typeable arch =>
(forall b. Data b => b -> b) -> AsmInstr arch -> AsmInstr arch
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (AsmInstr arch))
$cdataCast2 :: forall (arch :: Arch) (t :: * -> * -> *) (c :: * -> *).
(Typeable arch, Typeable t) =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (AsmInstr arch))
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c (AsmInstr arch))
$cdataCast1 :: forall (arch :: Arch) (t :: * -> *) (c :: * -> *).
(Typeable arch, Typeable t) =>
(forall d. Data d => c (t d)) -> Maybe (c (AsmInstr arch))
dataTypeOf :: AsmInstr arch -> DataType
$cdataTypeOf :: forall (arch :: Arch). Typeable arch => AsmInstr arch -> DataType
toConstr :: AsmInstr arch -> Constr
$ctoConstr :: forall (arch :: Arch). Typeable arch => AsmInstr arch -> Constr
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (AsmInstr arch)
$cgunfold :: forall (arch :: Arch) (c :: * -> *).
Typeable arch =>
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (AsmInstr arch)
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> AsmInstr arch -> c (AsmInstr arch)
$cgfoldl :: forall (arch :: Arch) (c :: * -> *).
Typeable arch =>
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> AsmInstr arch -> c (AsmInstr arch)
Data, Int -> AsmInstr arch -> ShowS
[AsmInstr arch] -> ShowS
AsmInstr arch -> String
(Int -> AsmInstr arch -> ShowS)
-> (AsmInstr arch -> String)
-> ([AsmInstr arch] -> ShowS)
-> Show (AsmInstr arch)
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
forall (arch :: Arch). Int -> AsmInstr arch -> ShowS
forall (arch :: Arch). [AsmInstr arch] -> ShowS
forall (arch :: Arch). AsmInstr arch -> String
showList :: [AsmInstr arch] -> ShowS
$cshowList :: forall (arch :: Arch). [AsmInstr arch] -> ShowS
show :: AsmInstr arch -> String
$cshow :: forall (arch :: Arch). AsmInstr arch -> String
showsPrec :: Int -> AsmInstr arch -> ShowS
$cshowsPrec :: forall (arch :: Arch). Int -> AsmInstr arch -> ShowS
Show, AsmInstr arch -> AsmInstr arch -> Bool
(AsmInstr arch -> AsmInstr arch -> Bool)
-> (AsmInstr arch -> AsmInstr arch -> Bool) -> Eq (AsmInstr arch)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall (arch :: Arch). AsmInstr arch -> AsmInstr arch -> Bool
/= :: AsmInstr arch -> AsmInstr arch -> Bool
$c/= :: forall (arch :: Arch). AsmInstr arch -> AsmInstr arch -> Bool
== :: AsmInstr arch -> AsmInstr arch -> Bool
$c== :: forall (arch :: Arch). AsmInstr arch -> AsmInstr arch -> Bool
Eq)
    deriving ([AsmInstr arch] -> Encoding
[AsmInstr arch] -> Value
AsmInstr arch -> Encoding
AsmInstr arch -> Value
(AsmInstr arch -> Value)
-> (AsmInstr arch -> Encoding)
-> ([AsmInstr arch] -> Value)
-> ([AsmInstr arch] -> Encoding)
-> ToJSON (AsmInstr arch)
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
forall (arch :: Arch). [AsmInstr arch] -> Encoding
forall (arch :: Arch). [AsmInstr arch] -> Value
forall (arch :: Arch). AsmInstr arch -> Encoding
forall (arch :: Arch). AsmInstr arch -> Value
toEncodingList :: [AsmInstr arch] -> Encoding
$ctoEncodingList :: forall (arch :: Arch). [AsmInstr arch] -> Encoding
toJSONList :: [AsmInstr arch] -> Value
$ctoJSONList :: forall (arch :: Arch). [AsmInstr arch] -> Value
toEncoding :: AsmInstr arch -> Encoding
$ctoEncoding :: forall (arch :: Arch). AsmInstr arch -> Encoding
toJSON :: AsmInstr arch -> Value
$ctoJSON :: forall (arch :: Arch). AsmInstr arch -> Value
ToJSON, Value -> Parser [AsmInstr arch]
Value -> Parser (AsmInstr arch)
(Value -> Parser (AsmInstr arch))
-> (Value -> Parser [AsmInstr arch]) -> FromJSON (AsmInstr arch)
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
forall (arch :: Arch). Value -> Parser [AsmInstr arch]
forall (arch :: Arch). Value -> Parser (AsmInstr arch)
parseJSONList :: Value -> Parser [AsmInstr arch]
$cparseJSONList :: forall (arch :: Arch). Value -> Parser [AsmInstr arch]
parseJSON :: Value -> Parser (AsmInstr arch)
$cparseJSON :: forall (arch :: Arch). Value -> Parser (AsmInstr arch)
FromJSON) via ShortText