{-# language CPP #-}
-- No documentation found for Chapter "StencilFaceFlagBits"
module Vulkan.Core10.Enums.StencilFaceFlagBits  ( pattern STENCIL_FRONT_AND_BACK
                                                , StencilFaceFlags
                                                , StencilFaceFlagBits( STENCIL_FACE_FRONT_BIT
                                                                     , STENCIL_FACE_BACK_BIT
                                                                     , STENCIL_FACE_FRONT_AND_BACK
                                                                     , ..
                                                                     )
                                                ) where

import Data.Bits (Bits)
import Data.Bits (FiniteBits)
import Vulkan.Internal.Utils (enumReadPrec)
import Vulkan.Internal.Utils (enumShowsPrec)
import GHC.Show (showString)
import Numeric (showHex)
import Vulkan.Zero (Zero)
import Foreign.Storable (Storable)
import GHC.Read (Read(readPrec))
import GHC.Show (Show(showsPrec))
import Vulkan.Core10.FundamentalTypes (Flags)
-- No documentation found for TopLevel "VK_STENCIL_FRONT_AND_BACK"
pattern $bSTENCIL_FRONT_AND_BACK :: StencilFaceFlagBits
$mSTENCIL_FRONT_AND_BACK :: forall {r}.
StencilFaceFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
STENCIL_FRONT_AND_BACK = STENCIL_FACE_FRONT_AND_BACK


type StencilFaceFlags = StencilFaceFlagBits

-- | VkStencilFaceFlagBits - Bitmask specifying sets of stencil state for
-- which to update the compare mask
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
-- 'StencilFaceFlags'
newtype StencilFaceFlagBits = StencilFaceFlagBits Flags
  deriving newtype (StencilFaceFlagBits -> StencilFaceFlagBits -> Bool
(StencilFaceFlagBits -> StencilFaceFlagBits -> Bool)
-> (StencilFaceFlagBits -> StencilFaceFlagBits -> Bool)
-> Eq StencilFaceFlagBits
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: StencilFaceFlagBits -> StencilFaceFlagBits -> Bool
== :: StencilFaceFlagBits -> StencilFaceFlagBits -> Bool
$c/= :: StencilFaceFlagBits -> StencilFaceFlagBits -> Bool
/= :: StencilFaceFlagBits -> StencilFaceFlagBits -> Bool
Eq, Eq StencilFaceFlagBits
Eq StencilFaceFlagBits =>
(StencilFaceFlagBits -> StencilFaceFlagBits -> Ordering)
-> (StencilFaceFlagBits -> StencilFaceFlagBits -> Bool)
-> (StencilFaceFlagBits -> StencilFaceFlagBits -> Bool)
-> (StencilFaceFlagBits -> StencilFaceFlagBits -> Bool)
-> (StencilFaceFlagBits -> StencilFaceFlagBits -> Bool)
-> (StencilFaceFlagBits
    -> StencilFaceFlagBits -> StencilFaceFlagBits)
-> (StencilFaceFlagBits
    -> StencilFaceFlagBits -> StencilFaceFlagBits)
-> Ord StencilFaceFlagBits
StencilFaceFlagBits -> StencilFaceFlagBits -> Bool
StencilFaceFlagBits -> StencilFaceFlagBits -> Ordering
StencilFaceFlagBits -> StencilFaceFlagBits -> StencilFaceFlagBits
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: StencilFaceFlagBits -> StencilFaceFlagBits -> Ordering
compare :: StencilFaceFlagBits -> StencilFaceFlagBits -> Ordering
$c< :: StencilFaceFlagBits -> StencilFaceFlagBits -> Bool
< :: StencilFaceFlagBits -> StencilFaceFlagBits -> Bool
$c<= :: StencilFaceFlagBits -> StencilFaceFlagBits -> Bool
<= :: StencilFaceFlagBits -> StencilFaceFlagBits -> Bool
$c> :: StencilFaceFlagBits -> StencilFaceFlagBits -> Bool
> :: StencilFaceFlagBits -> StencilFaceFlagBits -> Bool
$c>= :: StencilFaceFlagBits -> StencilFaceFlagBits -> Bool
>= :: StencilFaceFlagBits -> StencilFaceFlagBits -> Bool
$cmax :: StencilFaceFlagBits -> StencilFaceFlagBits -> StencilFaceFlagBits
max :: StencilFaceFlagBits -> StencilFaceFlagBits -> StencilFaceFlagBits
$cmin :: StencilFaceFlagBits -> StencilFaceFlagBits -> StencilFaceFlagBits
min :: StencilFaceFlagBits -> StencilFaceFlagBits -> StencilFaceFlagBits
Ord, Ptr StencilFaceFlagBits -> IO StencilFaceFlagBits
Ptr StencilFaceFlagBits -> Int -> IO StencilFaceFlagBits
Ptr StencilFaceFlagBits -> Int -> StencilFaceFlagBits -> IO ()
Ptr StencilFaceFlagBits -> StencilFaceFlagBits -> IO ()
StencilFaceFlagBits -> Int
(StencilFaceFlagBits -> Int)
-> (StencilFaceFlagBits -> Int)
-> (Ptr StencilFaceFlagBits -> Int -> IO StencilFaceFlagBits)
-> (Ptr StencilFaceFlagBits -> Int -> StencilFaceFlagBits -> IO ())
-> (forall b. Ptr b -> Int -> IO StencilFaceFlagBits)
-> (forall b. Ptr b -> Int -> StencilFaceFlagBits -> IO ())
-> (Ptr StencilFaceFlagBits -> IO StencilFaceFlagBits)
-> (Ptr StencilFaceFlagBits -> StencilFaceFlagBits -> IO ())
-> Storable StencilFaceFlagBits
forall b. Ptr b -> Int -> IO StencilFaceFlagBits
forall b. Ptr b -> Int -> StencilFaceFlagBits -> 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
$csizeOf :: StencilFaceFlagBits -> Int
sizeOf :: StencilFaceFlagBits -> Int
$calignment :: StencilFaceFlagBits -> Int
alignment :: StencilFaceFlagBits -> Int
$cpeekElemOff :: Ptr StencilFaceFlagBits -> Int -> IO StencilFaceFlagBits
peekElemOff :: Ptr StencilFaceFlagBits -> Int -> IO StencilFaceFlagBits
$cpokeElemOff :: Ptr StencilFaceFlagBits -> Int -> StencilFaceFlagBits -> IO ()
pokeElemOff :: Ptr StencilFaceFlagBits -> Int -> StencilFaceFlagBits -> IO ()
$cpeekByteOff :: forall b. Ptr b -> Int -> IO StencilFaceFlagBits
peekByteOff :: forall b. Ptr b -> Int -> IO StencilFaceFlagBits
$cpokeByteOff :: forall b. Ptr b -> Int -> StencilFaceFlagBits -> IO ()
pokeByteOff :: forall b. Ptr b -> Int -> StencilFaceFlagBits -> IO ()
$cpeek :: Ptr StencilFaceFlagBits -> IO StencilFaceFlagBits
peek :: Ptr StencilFaceFlagBits -> IO StencilFaceFlagBits
$cpoke :: Ptr StencilFaceFlagBits -> StencilFaceFlagBits -> IO ()
poke :: Ptr StencilFaceFlagBits -> StencilFaceFlagBits -> IO ()
Storable, StencilFaceFlagBits
StencilFaceFlagBits -> Zero StencilFaceFlagBits
forall a. a -> Zero a
$czero :: StencilFaceFlagBits
zero :: StencilFaceFlagBits
Zero, Eq StencilFaceFlagBits
StencilFaceFlagBits
Eq StencilFaceFlagBits =>
(StencilFaceFlagBits -> StencilFaceFlagBits -> StencilFaceFlagBits)
-> (StencilFaceFlagBits
    -> StencilFaceFlagBits -> StencilFaceFlagBits)
-> (StencilFaceFlagBits
    -> StencilFaceFlagBits -> StencilFaceFlagBits)
-> (StencilFaceFlagBits -> StencilFaceFlagBits)
-> (StencilFaceFlagBits -> Int -> StencilFaceFlagBits)
-> (StencilFaceFlagBits -> Int -> StencilFaceFlagBits)
-> StencilFaceFlagBits
-> (Int -> StencilFaceFlagBits)
-> (StencilFaceFlagBits -> Int -> StencilFaceFlagBits)
-> (StencilFaceFlagBits -> Int -> StencilFaceFlagBits)
-> (StencilFaceFlagBits -> Int -> StencilFaceFlagBits)
-> (StencilFaceFlagBits -> Int -> Bool)
-> (StencilFaceFlagBits -> Maybe Int)
-> (StencilFaceFlagBits -> Int)
-> (StencilFaceFlagBits -> Bool)
-> (StencilFaceFlagBits -> Int -> StencilFaceFlagBits)
-> (StencilFaceFlagBits -> Int -> StencilFaceFlagBits)
-> (StencilFaceFlagBits -> Int -> StencilFaceFlagBits)
-> (StencilFaceFlagBits -> Int -> StencilFaceFlagBits)
-> (StencilFaceFlagBits -> Int -> StencilFaceFlagBits)
-> (StencilFaceFlagBits -> Int -> StencilFaceFlagBits)
-> (StencilFaceFlagBits -> Int)
-> Bits StencilFaceFlagBits
Int -> StencilFaceFlagBits
StencilFaceFlagBits -> Bool
StencilFaceFlagBits -> Int
StencilFaceFlagBits -> Maybe Int
StencilFaceFlagBits -> StencilFaceFlagBits
StencilFaceFlagBits -> Int -> Bool
StencilFaceFlagBits -> Int -> StencilFaceFlagBits
StencilFaceFlagBits -> StencilFaceFlagBits -> StencilFaceFlagBits
forall a.
Eq a =>
(a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> a
-> (Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> Bool)
-> (a -> Maybe Int)
-> (a -> Int)
-> (a -> Bool)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int)
-> Bits a
$c.&. :: StencilFaceFlagBits -> StencilFaceFlagBits -> StencilFaceFlagBits
.&. :: StencilFaceFlagBits -> StencilFaceFlagBits -> StencilFaceFlagBits
$c.|. :: StencilFaceFlagBits -> StencilFaceFlagBits -> StencilFaceFlagBits
.|. :: StencilFaceFlagBits -> StencilFaceFlagBits -> StencilFaceFlagBits
$cxor :: StencilFaceFlagBits -> StencilFaceFlagBits -> StencilFaceFlagBits
xor :: StencilFaceFlagBits -> StencilFaceFlagBits -> StencilFaceFlagBits
$ccomplement :: StencilFaceFlagBits -> StencilFaceFlagBits
complement :: StencilFaceFlagBits -> StencilFaceFlagBits
$cshift :: StencilFaceFlagBits -> Int -> StencilFaceFlagBits
shift :: StencilFaceFlagBits -> Int -> StencilFaceFlagBits
$crotate :: StencilFaceFlagBits -> Int -> StencilFaceFlagBits
rotate :: StencilFaceFlagBits -> Int -> StencilFaceFlagBits
$czeroBits :: StencilFaceFlagBits
zeroBits :: StencilFaceFlagBits
$cbit :: Int -> StencilFaceFlagBits
bit :: Int -> StencilFaceFlagBits
$csetBit :: StencilFaceFlagBits -> Int -> StencilFaceFlagBits
setBit :: StencilFaceFlagBits -> Int -> StencilFaceFlagBits
$cclearBit :: StencilFaceFlagBits -> Int -> StencilFaceFlagBits
clearBit :: StencilFaceFlagBits -> Int -> StencilFaceFlagBits
$ccomplementBit :: StencilFaceFlagBits -> Int -> StencilFaceFlagBits
complementBit :: StencilFaceFlagBits -> Int -> StencilFaceFlagBits
$ctestBit :: StencilFaceFlagBits -> Int -> Bool
testBit :: StencilFaceFlagBits -> Int -> Bool
$cbitSizeMaybe :: StencilFaceFlagBits -> Maybe Int
bitSizeMaybe :: StencilFaceFlagBits -> Maybe Int
$cbitSize :: StencilFaceFlagBits -> Int
bitSize :: StencilFaceFlagBits -> Int
$cisSigned :: StencilFaceFlagBits -> Bool
isSigned :: StencilFaceFlagBits -> Bool
$cshiftL :: StencilFaceFlagBits -> Int -> StencilFaceFlagBits
shiftL :: StencilFaceFlagBits -> Int -> StencilFaceFlagBits
$cunsafeShiftL :: StencilFaceFlagBits -> Int -> StencilFaceFlagBits
unsafeShiftL :: StencilFaceFlagBits -> Int -> StencilFaceFlagBits
$cshiftR :: StencilFaceFlagBits -> Int -> StencilFaceFlagBits
shiftR :: StencilFaceFlagBits -> Int -> StencilFaceFlagBits
$cunsafeShiftR :: StencilFaceFlagBits -> Int -> StencilFaceFlagBits
unsafeShiftR :: StencilFaceFlagBits -> Int -> StencilFaceFlagBits
$crotateL :: StencilFaceFlagBits -> Int -> StencilFaceFlagBits
rotateL :: StencilFaceFlagBits -> Int -> StencilFaceFlagBits
$crotateR :: StencilFaceFlagBits -> Int -> StencilFaceFlagBits
rotateR :: StencilFaceFlagBits -> Int -> StencilFaceFlagBits
$cpopCount :: StencilFaceFlagBits -> Int
popCount :: StencilFaceFlagBits -> Int
Bits, Bits StencilFaceFlagBits
Bits StencilFaceFlagBits =>
(StencilFaceFlagBits -> Int)
-> (StencilFaceFlagBits -> Int)
-> (StencilFaceFlagBits -> Int)
-> FiniteBits StencilFaceFlagBits
StencilFaceFlagBits -> Int
forall b.
Bits b =>
(b -> Int) -> (b -> Int) -> (b -> Int) -> FiniteBits b
$cfiniteBitSize :: StencilFaceFlagBits -> Int
finiteBitSize :: StencilFaceFlagBits -> Int
$ccountLeadingZeros :: StencilFaceFlagBits -> Int
countLeadingZeros :: StencilFaceFlagBits -> Int
$ccountTrailingZeros :: StencilFaceFlagBits -> Int
countTrailingZeros :: StencilFaceFlagBits -> Int
FiniteBits)

-- | 'STENCIL_FACE_FRONT_BIT' specifies that only the front set of stencil
-- state is updated.
pattern $bSTENCIL_FACE_FRONT_BIT :: StencilFaceFlagBits
$mSTENCIL_FACE_FRONT_BIT :: forall {r}.
StencilFaceFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
STENCIL_FACE_FRONT_BIT = StencilFaceFlagBits 0x00000001

-- | 'STENCIL_FACE_BACK_BIT' specifies that only the back set of stencil
-- state is updated.
pattern $bSTENCIL_FACE_BACK_BIT :: StencilFaceFlagBits
$mSTENCIL_FACE_BACK_BIT :: forall {r}.
StencilFaceFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
STENCIL_FACE_BACK_BIT = StencilFaceFlagBits 0x00000002

-- | 'STENCIL_FACE_FRONT_AND_BACK' is the combination of
-- 'STENCIL_FACE_FRONT_BIT' and 'STENCIL_FACE_BACK_BIT', and specifies that
-- both sets of stencil state are updated.
pattern $bSTENCIL_FACE_FRONT_AND_BACK :: StencilFaceFlagBits
$mSTENCIL_FACE_FRONT_AND_BACK :: forall {r}.
StencilFaceFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
STENCIL_FACE_FRONT_AND_BACK = StencilFaceFlagBits 0x00000003

conNameStencilFaceFlagBits :: String
conNameStencilFaceFlagBits :: String
conNameStencilFaceFlagBits = String
"StencilFaceFlagBits"

enumPrefixStencilFaceFlagBits :: String
enumPrefixStencilFaceFlagBits :: String
enumPrefixStencilFaceFlagBits = String
"STENCIL_FACE_"

showTableStencilFaceFlagBits :: [(StencilFaceFlagBits, String)]
showTableStencilFaceFlagBits :: [(StencilFaceFlagBits, String)]
showTableStencilFaceFlagBits =
  [ (StencilFaceFlagBits
STENCIL_FACE_FRONT_BIT, String
"FRONT_BIT")
  , (StencilFaceFlagBits
STENCIL_FACE_BACK_BIT, String
"BACK_BIT")
  ,
    ( StencilFaceFlagBits
STENCIL_FACE_FRONT_AND_BACK
    , String
"FRONT_AND_BACK"
    )
  ]

instance Show StencilFaceFlagBits where
  showsPrec :: Int -> StencilFaceFlagBits -> ShowS
showsPrec =
    String
-> [(StencilFaceFlagBits, String)]
-> String
-> (StencilFaceFlagBits -> Flags)
-> (Flags -> ShowS)
-> Int
-> StencilFaceFlagBits
-> ShowS
forall a i.
Eq a =>
String
-> [(a, String)]
-> String
-> (a -> i)
-> (i -> ShowS)
-> Int
-> a
-> ShowS
enumShowsPrec
      String
enumPrefixStencilFaceFlagBits
      [(StencilFaceFlagBits, String)]
showTableStencilFaceFlagBits
      String
conNameStencilFaceFlagBits
      (\(StencilFaceFlagBits Flags
x) -> Flags
x)
      (\Flags
x -> String -> ShowS
showString String
"0x" ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Flags -> ShowS
forall a. Integral a => a -> ShowS
showHex Flags
x)

instance Read StencilFaceFlagBits where
  readPrec :: ReadPrec StencilFaceFlagBits
readPrec =
    String
-> [(StencilFaceFlagBits, String)]
-> String
-> (Flags -> StencilFaceFlagBits)
-> ReadPrec StencilFaceFlagBits
forall i a.
Read i =>
String -> [(a, String)] -> String -> (i -> a) -> ReadPrec a
enumReadPrec
      String
enumPrefixStencilFaceFlagBits
      [(StencilFaceFlagBits, String)]
showTableStencilFaceFlagBits
      String
conNameStencilFaceFlagBits
      Flags -> StencilFaceFlagBits
StencilFaceFlagBits