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

import           Zydis.Util

data MaskMode
  = MaskModeInvalid
  | MaskModeDisabled
  | MaskModeMerging
  | MaskModeZeroing
  | MaskModeControl
  | MaskModeControlZeroing
  deriving stock (Int -> MaskMode -> ShowS
[MaskMode] -> ShowS
MaskMode -> String
(Int -> MaskMode -> ShowS)
-> (MaskMode -> String) -> ([MaskMode] -> ShowS) -> Show MaskMode
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MaskMode] -> ShowS
$cshowList :: [MaskMode] -> ShowS
show :: MaskMode -> String
$cshow :: MaskMode -> String
showsPrec :: Int -> MaskMode -> ShowS
$cshowsPrec :: Int -> MaskMode -> ShowS
Show, MaskMode -> MaskMode -> Bool
(MaskMode -> MaskMode -> Bool)
-> (MaskMode -> MaskMode -> Bool) -> Eq MaskMode
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MaskMode -> MaskMode -> Bool
$c/= :: MaskMode -> MaskMode -> Bool
== :: MaskMode -> MaskMode -> Bool
$c== :: MaskMode -> MaskMode -> Bool
Eq, MaskMode
MaskMode -> MaskMode -> Bounded MaskMode
forall a. a -> a -> Bounded a
maxBound :: MaskMode
$cmaxBound :: MaskMode
minBound :: MaskMode
$cminBound :: MaskMode
Bounded, Int -> MaskMode
MaskMode -> Int
MaskMode -> [MaskMode]
MaskMode -> MaskMode
MaskMode -> MaskMode -> [MaskMode]
MaskMode -> MaskMode -> MaskMode -> [MaskMode]
(MaskMode -> MaskMode)
-> (MaskMode -> MaskMode)
-> (Int -> MaskMode)
-> (MaskMode -> Int)
-> (MaskMode -> [MaskMode])
-> (MaskMode -> MaskMode -> [MaskMode])
-> (MaskMode -> MaskMode -> [MaskMode])
-> (MaskMode -> MaskMode -> MaskMode -> [MaskMode])
-> Enum MaskMode
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 :: MaskMode -> MaskMode -> MaskMode -> [MaskMode]
$cenumFromThenTo :: MaskMode -> MaskMode -> MaskMode -> [MaskMode]
enumFromTo :: MaskMode -> MaskMode -> [MaskMode]
$cenumFromTo :: MaskMode -> MaskMode -> [MaskMode]
enumFromThen :: MaskMode -> MaskMode -> [MaskMode]
$cenumFromThen :: MaskMode -> MaskMode -> [MaskMode]
enumFrom :: MaskMode -> [MaskMode]
$cenumFrom :: MaskMode -> [MaskMode]
fromEnum :: MaskMode -> Int
$cfromEnum :: MaskMode -> Int
toEnum :: Int -> MaskMode
$ctoEnum :: Int -> MaskMode
pred :: MaskMode -> MaskMode
$cpred :: MaskMode -> MaskMode
succ :: MaskMode -> MaskMode
$csucc :: MaskMode -> MaskMode
Enum)
  deriving Ptr b -> Int -> IO MaskMode
Ptr b -> Int -> MaskMode -> IO ()
Ptr MaskMode -> IO MaskMode
Ptr MaskMode -> Int -> IO MaskMode
Ptr MaskMode -> Int -> MaskMode -> IO ()
Ptr MaskMode -> MaskMode -> IO ()
MaskMode -> Int
(MaskMode -> Int)
-> (MaskMode -> Int)
-> (Ptr MaskMode -> Int -> IO MaskMode)
-> (Ptr MaskMode -> Int -> MaskMode -> IO ())
-> (forall b. Ptr b -> Int -> IO MaskMode)
-> (forall b. Ptr b -> Int -> MaskMode -> IO ())
-> (Ptr MaskMode -> IO MaskMode)
-> (Ptr MaskMode -> MaskMode -> IO ())
-> Storable MaskMode
forall b. Ptr b -> Int -> IO MaskMode
forall b. Ptr b -> Int -> MaskMode -> 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 MaskMode -> MaskMode -> IO ()
$cpoke :: Ptr MaskMode -> MaskMode -> IO ()
peek :: Ptr MaskMode -> IO MaskMode
$cpeek :: Ptr MaskMode -> IO MaskMode
pokeByteOff :: Ptr b -> Int -> MaskMode -> IO ()
$cpokeByteOff :: forall b. Ptr b -> Int -> MaskMode -> IO ()
peekByteOff :: Ptr b -> Int -> IO MaskMode
$cpeekByteOff :: forall b. Ptr b -> Int -> IO MaskMode
pokeElemOff :: Ptr MaskMode -> Int -> MaskMode -> IO ()
$cpokeElemOff :: Ptr MaskMode -> Int -> MaskMode -> IO ()
peekElemOff :: Ptr MaskMode -> Int -> IO MaskMode
$cpeekElemOff :: Ptr MaskMode -> Int -> IO MaskMode
alignment :: MaskMode -> Int
$calignment :: MaskMode -> Int
sizeOf :: MaskMode -> Int
$csizeOf :: MaskMode -> Int
Storable via StorableExt MaskMode