{-# 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 Vulkan.Internal.Utils (enumReadPrec)
import Vulkan.Internal.Utils (enumShowsPrec)
import GHC.Show (showString)
import Numeric (showHex)
import Vulkan.Zero (Zero)
import Data.Bits (Bits)
import Data.Bits (FiniteBits)
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 -> (Void# -> r) -> (Void# -> 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
/= :: StencilFaceFlagBits -> StencilFaceFlagBits -> Bool
$c/= :: StencilFaceFlagBits -> StencilFaceFlagBits -> Bool
== :: StencilFaceFlagBits -> StencilFaceFlagBits -> Bool
$c== :: 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
min :: StencilFaceFlagBits -> StencilFaceFlagBits -> StencilFaceFlagBits
$cmin :: StencilFaceFlagBits -> StencilFaceFlagBits -> StencilFaceFlagBits
max :: StencilFaceFlagBits -> StencilFaceFlagBits -> StencilFaceFlagBits
$cmax :: StencilFaceFlagBits -> StencilFaceFlagBits -> StencilFaceFlagBits
>= :: StencilFaceFlagBits -> StencilFaceFlagBits -> Bool
$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
compare :: StencilFaceFlagBits -> StencilFaceFlagBits -> Ordering
$ccompare :: StencilFaceFlagBits -> StencilFaceFlagBits -> Ordering
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
poke :: Ptr StencilFaceFlagBits -> StencilFaceFlagBits -> IO ()
$cpoke :: Ptr StencilFaceFlagBits -> StencilFaceFlagBits -> IO ()
peek :: Ptr StencilFaceFlagBits -> IO StencilFaceFlagBits
$cpeek :: Ptr StencilFaceFlagBits -> IO StencilFaceFlagBits
pokeByteOff :: forall b. Ptr b -> Int -> StencilFaceFlagBits -> IO ()
$cpokeByteOff :: forall b. Ptr b -> Int -> StencilFaceFlagBits -> IO ()
peekByteOff :: forall b. Ptr b -> Int -> IO StencilFaceFlagBits
$cpeekByteOff :: forall b. Ptr b -> Int -> IO StencilFaceFlagBits
pokeElemOff :: Ptr StencilFaceFlagBits -> Int -> StencilFaceFlagBits -> IO ()
$cpokeElemOff :: Ptr StencilFaceFlagBits -> Int -> StencilFaceFlagBits -> IO ()
peekElemOff :: Ptr StencilFaceFlagBits -> Int -> IO StencilFaceFlagBits
$cpeekElemOff :: Ptr StencilFaceFlagBits -> Int -> IO StencilFaceFlagBits
alignment :: StencilFaceFlagBits -> Int
$calignment :: StencilFaceFlagBits -> Int
sizeOf :: StencilFaceFlagBits -> Int
$csizeOf :: StencilFaceFlagBits -> Int
Storable, StencilFaceFlagBits
StencilFaceFlagBits -> Zero StencilFaceFlagBits
forall a. a -> Zero a
zero :: StencilFaceFlagBits
$czero :: 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
popCount :: StencilFaceFlagBits -> Int
$cpopCount :: StencilFaceFlagBits -> Int
rotateR :: StencilFaceFlagBits -> Int -> StencilFaceFlagBits
$crotateR :: StencilFaceFlagBits -> Int -> StencilFaceFlagBits
rotateL :: StencilFaceFlagBits -> Int -> StencilFaceFlagBits
$crotateL :: StencilFaceFlagBits -> Int -> StencilFaceFlagBits
unsafeShiftR :: StencilFaceFlagBits -> Int -> StencilFaceFlagBits
$cunsafeShiftR :: StencilFaceFlagBits -> Int -> StencilFaceFlagBits
shiftR :: StencilFaceFlagBits -> Int -> StencilFaceFlagBits
$cshiftR :: StencilFaceFlagBits -> Int -> StencilFaceFlagBits
unsafeShiftL :: StencilFaceFlagBits -> Int -> StencilFaceFlagBits
$cunsafeShiftL :: StencilFaceFlagBits -> Int -> StencilFaceFlagBits
shiftL :: StencilFaceFlagBits -> Int -> StencilFaceFlagBits
$cshiftL :: StencilFaceFlagBits -> Int -> StencilFaceFlagBits
isSigned :: StencilFaceFlagBits -> Bool
$cisSigned :: StencilFaceFlagBits -> Bool
bitSize :: StencilFaceFlagBits -> Int
$cbitSize :: StencilFaceFlagBits -> Int
bitSizeMaybe :: StencilFaceFlagBits -> Maybe Int
$cbitSizeMaybe :: StencilFaceFlagBits -> Maybe Int
testBit :: StencilFaceFlagBits -> Int -> Bool
$ctestBit :: StencilFaceFlagBits -> Int -> Bool
complementBit :: StencilFaceFlagBits -> Int -> StencilFaceFlagBits
$ccomplementBit :: StencilFaceFlagBits -> Int -> StencilFaceFlagBits
clearBit :: StencilFaceFlagBits -> Int -> StencilFaceFlagBits
$cclearBit :: StencilFaceFlagBits -> Int -> StencilFaceFlagBits
setBit :: StencilFaceFlagBits -> Int -> StencilFaceFlagBits
$csetBit :: StencilFaceFlagBits -> Int -> StencilFaceFlagBits
bit :: Int -> StencilFaceFlagBits
$cbit :: Int -> StencilFaceFlagBits
zeroBits :: StencilFaceFlagBits
$czeroBits :: StencilFaceFlagBits
rotate :: StencilFaceFlagBits -> Int -> StencilFaceFlagBits
$crotate :: StencilFaceFlagBits -> Int -> StencilFaceFlagBits
shift :: StencilFaceFlagBits -> Int -> StencilFaceFlagBits
$cshift :: StencilFaceFlagBits -> Int -> StencilFaceFlagBits
complement :: StencilFaceFlagBits -> StencilFaceFlagBits
$ccomplement :: StencilFaceFlagBits -> StencilFaceFlagBits
xor :: StencilFaceFlagBits -> StencilFaceFlagBits -> StencilFaceFlagBits
$cxor :: StencilFaceFlagBits -> StencilFaceFlagBits -> StencilFaceFlagBits
.|. :: StencilFaceFlagBits -> StencilFaceFlagBits -> StencilFaceFlagBits
$c.|. :: StencilFaceFlagBits -> StencilFaceFlagBits -> StencilFaceFlagBits
.&. :: StencilFaceFlagBits -> StencilFaceFlagBits -> StencilFaceFlagBits
$c.&. :: StencilFaceFlagBits -> StencilFaceFlagBits -> StencilFaceFlagBits
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
countTrailingZeros :: StencilFaceFlagBits -> Int
$ccountTrailingZeros :: StencilFaceFlagBits -> Int
countLeadingZeros :: StencilFaceFlagBits -> Int
$ccountLeadingZeros :: StencilFaceFlagBits -> Int
finiteBitSize :: StencilFaceFlagBits -> Int
$cfiniteBitSize :: 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 -> (Void# -> r) -> (Void# -> 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 -> (Void# -> r) -> (Void# -> 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 -> (Void# -> r) -> (Void# -> 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, Show 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