-- OperandEncoding.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.OperandEncoding
  ( OperandEncoding(..)
  )
where

import           Zydis.Util

data OperandEncoding
  = OperandEncodingNone
  | OperandEncodingModrmReg
  | OperandEncodingModrmRm
  | OperandEncodingOpcode
  | OperandEncodingNdsndd
  | OperandEncodingIs4
  | OperandEncodingMask
  | OperandEncodingDisp8
  | OperandEncodingDisp16
  | OperandEncodingDisp32
  | OperandEncodingDisp64
  | OperandEncodingDisp163264
  | OperandEncodingDisp323264
  | OperandEncodingDisp163232
  | OperandEncodingUimm8
  | OperandEncodingUimm16
  | OperandEncodingUimm32
  | OperandEncodingUimm64
  | OperandEncodingUimm163264
  | OperandEncodingUimm323264
  | OperandEncodingUimm163232
  | OperandEncodingSimm8
  | OperandEncodingSimm16
  | OperandEncodingSimm32
  | OperandEncodingSimm64
  | OperandEncodingSimm163264
  | OperandEncodingSimm323264
  | OperandEncodingSimm163232
  | OperandEncodingJimm8
  | OperandEncodingJimm16
  | OperandEncodingJimm32
  | OperandEncodingJimm64
  | OperandEncodingJimm163264
  | OperandEncodingJimm323264
  | OperandEncodingJimm163232
  deriving stock (Int -> OperandEncoding -> ShowS
[OperandEncoding] -> ShowS
OperandEncoding -> String
(Int -> OperandEncoding -> ShowS)
-> (OperandEncoding -> String)
-> ([OperandEncoding] -> ShowS)
-> Show OperandEncoding
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [OperandEncoding] -> ShowS
$cshowList :: [OperandEncoding] -> ShowS
show :: OperandEncoding -> String
$cshow :: OperandEncoding -> String
showsPrec :: Int -> OperandEncoding -> ShowS
$cshowsPrec :: Int -> OperandEncoding -> ShowS
Show, OperandEncoding -> OperandEncoding -> Bool
(OperandEncoding -> OperandEncoding -> Bool)
-> (OperandEncoding -> OperandEncoding -> Bool)
-> Eq OperandEncoding
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: OperandEncoding -> OperandEncoding -> Bool
$c/= :: OperandEncoding -> OperandEncoding -> Bool
== :: OperandEncoding -> OperandEncoding -> Bool
$c== :: OperandEncoding -> OperandEncoding -> Bool
Eq, OperandEncoding
OperandEncoding -> OperandEncoding -> Bounded OperandEncoding
forall a. a -> a -> Bounded a
maxBound :: OperandEncoding
$cmaxBound :: OperandEncoding
minBound :: OperandEncoding
$cminBound :: OperandEncoding
Bounded, Int -> OperandEncoding
OperandEncoding -> Int
OperandEncoding -> [OperandEncoding]
OperandEncoding -> OperandEncoding
OperandEncoding -> OperandEncoding -> [OperandEncoding]
OperandEncoding
-> OperandEncoding -> OperandEncoding -> [OperandEncoding]
(OperandEncoding -> OperandEncoding)
-> (OperandEncoding -> OperandEncoding)
-> (Int -> OperandEncoding)
-> (OperandEncoding -> Int)
-> (OperandEncoding -> [OperandEncoding])
-> (OperandEncoding -> OperandEncoding -> [OperandEncoding])
-> (OperandEncoding -> OperandEncoding -> [OperandEncoding])
-> (OperandEncoding
    -> OperandEncoding -> OperandEncoding -> [OperandEncoding])
-> Enum OperandEncoding
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 :: OperandEncoding
-> OperandEncoding -> OperandEncoding -> [OperandEncoding]
$cenumFromThenTo :: OperandEncoding
-> OperandEncoding -> OperandEncoding -> [OperandEncoding]
enumFromTo :: OperandEncoding -> OperandEncoding -> [OperandEncoding]
$cenumFromTo :: OperandEncoding -> OperandEncoding -> [OperandEncoding]
enumFromThen :: OperandEncoding -> OperandEncoding -> [OperandEncoding]
$cenumFromThen :: OperandEncoding -> OperandEncoding -> [OperandEncoding]
enumFrom :: OperandEncoding -> [OperandEncoding]
$cenumFrom :: OperandEncoding -> [OperandEncoding]
fromEnum :: OperandEncoding -> Int
$cfromEnum :: OperandEncoding -> Int
toEnum :: Int -> OperandEncoding
$ctoEnum :: Int -> OperandEncoding
pred :: OperandEncoding -> OperandEncoding
$cpred :: OperandEncoding -> OperandEncoding
succ :: OperandEncoding -> OperandEncoding
$csucc :: OperandEncoding -> OperandEncoding
Enum)
  deriving Ptr b -> Int -> IO OperandEncoding
Ptr b -> Int -> OperandEncoding -> IO ()
Ptr OperandEncoding -> IO OperandEncoding
Ptr OperandEncoding -> Int -> IO OperandEncoding
Ptr OperandEncoding -> Int -> OperandEncoding -> IO ()
Ptr OperandEncoding -> OperandEncoding -> IO ()
OperandEncoding -> Int
(OperandEncoding -> Int)
-> (OperandEncoding -> Int)
-> (Ptr OperandEncoding -> Int -> IO OperandEncoding)
-> (Ptr OperandEncoding -> Int -> OperandEncoding -> IO ())
-> (forall b. Ptr b -> Int -> IO OperandEncoding)
-> (forall b. Ptr b -> Int -> OperandEncoding -> IO ())
-> (Ptr OperandEncoding -> IO OperandEncoding)
-> (Ptr OperandEncoding -> OperandEncoding -> IO ())
-> Storable OperandEncoding
forall b. Ptr b -> Int -> IO OperandEncoding
forall b. Ptr b -> Int -> OperandEncoding -> 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 OperandEncoding -> OperandEncoding -> IO ()
$cpoke :: Ptr OperandEncoding -> OperandEncoding -> IO ()
peek :: Ptr OperandEncoding -> IO OperandEncoding
$cpeek :: Ptr OperandEncoding -> IO OperandEncoding
pokeByteOff :: Ptr b -> Int -> OperandEncoding -> IO ()
$cpokeByteOff :: forall b. Ptr b -> Int -> OperandEncoding -> IO ()
peekByteOff :: Ptr b -> Int -> IO OperandEncoding
$cpeekByteOff :: forall b. Ptr b -> Int -> IO OperandEncoding
pokeElemOff :: Ptr OperandEncoding -> Int -> OperandEncoding -> IO ()
$cpokeElemOff :: Ptr OperandEncoding -> Int -> OperandEncoding -> IO ()
peekElemOff :: Ptr OperandEncoding -> Int -> IO OperandEncoding
$cpeekElemOff :: Ptr OperandEncoding -> Int -> IO OperandEncoding
alignment :: OperandEncoding -> Int
$calignment :: OperandEncoding -> Int
sizeOf :: OperandEncoding -> Int
$csizeOf :: OperandEncoding -> Int
Storable via StorableExt OperandEncoding