-- OpcodeMap.hs ---

-- Copyright (C) 2020 Nerd Ed

-- Author: Nerd Ed <nerded.nerded@gmail.com>

-- This program is free software; you can redistribute it and/or
-- modify it under the terms of the GNU General Public License
-- as published by the Free Software Foundation; either version 3
-- of the License, or (at your option) any later version.

-- This program is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-- GNU General Public License for more details.

-- You should have received a copy of the GNU General Public License
-- along with this program. If not, see <http://www.gnu.org/licenses/>.

{-# LANGUAGE DerivingVia #-}

module Zydis.OpcodeMap
  ( OpcodeMap(..)
  )
where

import           Zydis.Util

data OpcodeMap
  = OpcodeMapDefault
  | OpcodeMap0F
  | OpcodeMap0F38
  | OpcodeMap0F3A
  | OpcodeMap0F0F
  | OpcodeMapXop8
  | OpcodeMapXop9
  | OpcodeMapXopa
  deriving stock (Int -> OpcodeMap -> ShowS
[OpcodeMap] -> ShowS
OpcodeMap -> String
(Int -> OpcodeMap -> ShowS)
-> (OpcodeMap -> String)
-> ([OpcodeMap] -> ShowS)
-> Show OpcodeMap
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [OpcodeMap] -> ShowS
$cshowList :: [OpcodeMap] -> ShowS
show :: OpcodeMap -> String
$cshow :: OpcodeMap -> String
showsPrec :: Int -> OpcodeMap -> ShowS
$cshowsPrec :: Int -> OpcodeMap -> ShowS
Show, OpcodeMap -> OpcodeMap -> Bool
(OpcodeMap -> OpcodeMap -> Bool)
-> (OpcodeMap -> OpcodeMap -> Bool) -> Eq OpcodeMap
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: OpcodeMap -> OpcodeMap -> Bool
$c/= :: OpcodeMap -> OpcodeMap -> Bool
== :: OpcodeMap -> OpcodeMap -> Bool
$c== :: OpcodeMap -> OpcodeMap -> Bool
Eq, OpcodeMap
OpcodeMap -> OpcodeMap -> Bounded OpcodeMap
forall a. a -> a -> Bounded a
maxBound :: OpcodeMap
$cmaxBound :: OpcodeMap
minBound :: OpcodeMap
$cminBound :: OpcodeMap
Bounded, Int -> OpcodeMap
OpcodeMap -> Int
OpcodeMap -> [OpcodeMap]
OpcodeMap -> OpcodeMap
OpcodeMap -> OpcodeMap -> [OpcodeMap]
OpcodeMap -> OpcodeMap -> OpcodeMap -> [OpcodeMap]
(OpcodeMap -> OpcodeMap)
-> (OpcodeMap -> OpcodeMap)
-> (Int -> OpcodeMap)
-> (OpcodeMap -> Int)
-> (OpcodeMap -> [OpcodeMap])
-> (OpcodeMap -> OpcodeMap -> [OpcodeMap])
-> (OpcodeMap -> OpcodeMap -> [OpcodeMap])
-> (OpcodeMap -> OpcodeMap -> OpcodeMap -> [OpcodeMap])
-> Enum OpcodeMap
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
enumFromThenTo :: OpcodeMap -> OpcodeMap -> OpcodeMap -> [OpcodeMap]
$cenumFromThenTo :: OpcodeMap -> OpcodeMap -> OpcodeMap -> [OpcodeMap]
enumFromTo :: OpcodeMap -> OpcodeMap -> [OpcodeMap]
$cenumFromTo :: OpcodeMap -> OpcodeMap -> [OpcodeMap]
enumFromThen :: OpcodeMap -> OpcodeMap -> [OpcodeMap]
$cenumFromThen :: OpcodeMap -> OpcodeMap -> [OpcodeMap]
enumFrom :: OpcodeMap -> [OpcodeMap]
$cenumFrom :: OpcodeMap -> [OpcodeMap]
fromEnum :: OpcodeMap -> Int
$cfromEnum :: OpcodeMap -> Int
toEnum :: Int -> OpcodeMap
$ctoEnum :: Int -> OpcodeMap
pred :: OpcodeMap -> OpcodeMap
$cpred :: OpcodeMap -> OpcodeMap
succ :: OpcodeMap -> OpcodeMap
$csucc :: OpcodeMap -> OpcodeMap
Enum)
  deriving Ptr b -> Int -> IO OpcodeMap
Ptr b -> Int -> OpcodeMap -> IO ()
Ptr OpcodeMap -> IO OpcodeMap
Ptr OpcodeMap -> Int -> IO OpcodeMap
Ptr OpcodeMap -> Int -> OpcodeMap -> IO ()
Ptr OpcodeMap -> OpcodeMap -> IO ()
OpcodeMap -> Int
(OpcodeMap -> Int)
-> (OpcodeMap -> Int)
-> (Ptr OpcodeMap -> Int -> IO OpcodeMap)
-> (Ptr OpcodeMap -> Int -> OpcodeMap -> IO ())
-> (forall b. Ptr b -> Int -> IO OpcodeMap)
-> (forall b. Ptr b -> Int -> OpcodeMap -> IO ())
-> (Ptr OpcodeMap -> IO OpcodeMap)
-> (Ptr OpcodeMap -> OpcodeMap -> IO ())
-> Storable OpcodeMap
forall b. Ptr b -> Int -> IO OpcodeMap
forall b. Ptr b -> Int -> OpcodeMap -> IO ()
forall a.
(a -> Int)
-> (a -> Int)
-> (Ptr a -> Int -> IO a)
-> (Ptr a -> Int -> a -> IO ())
-> (forall b. Ptr b -> Int -> IO a)
-> (forall b. Ptr b -> Int -> a -> IO ())
-> (Ptr a -> IO a)
-> (Ptr a -> a -> IO ())
-> Storable a
poke :: Ptr OpcodeMap -> OpcodeMap -> IO ()
$cpoke :: Ptr OpcodeMap -> OpcodeMap -> IO ()
peek :: Ptr OpcodeMap -> IO OpcodeMap
$cpeek :: Ptr OpcodeMap -> IO OpcodeMap
pokeByteOff :: Ptr b -> Int -> OpcodeMap -> IO ()
$cpokeByteOff :: forall b. Ptr b -> Int -> OpcodeMap -> IO ()
peekByteOff :: Ptr b -> Int -> IO OpcodeMap
$cpeekByteOff :: forall b. Ptr b -> Int -> IO OpcodeMap
pokeElemOff :: Ptr OpcodeMap -> Int -> OpcodeMap -> IO ()
$cpokeElemOff :: Ptr OpcodeMap -> Int -> OpcodeMap -> IO ()
peekElemOff :: Ptr OpcodeMap -> Int -> IO OpcodeMap
$cpeekElemOff :: Ptr OpcodeMap -> Int -> IO OpcodeMap
alignment :: OpcodeMap -> Int
$calignment :: OpcodeMap -> Int
sizeOf :: OpcodeMap -> Int
$csizeOf :: OpcodeMap -> Int
Storable via StorableExt OpcodeMap