{-# OPTIONS_HADDOCK ignore-exports#-}
{-# LANGUAGE DataKinds                  #-}
{-# LANGUAGE FlexibleInstances          #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE KindSignatures             #-}
{-# LANGUAGE PatternSynonyms            #-}
{-# LANGUAGE StandaloneDeriving         #-}
{-# LANGUAGE Strict                     #-}
{-# LANGUAGE TypeSynonymInstances       #-}
module Graphics.Vulkan.Types.Enum.SwapchainCreateFlagsKHR
       (VkSwapchainCreateBitmaskKHR(VkSwapchainCreateBitmaskKHR,
                                    VkSwapchainCreateFlagsKHR, VkSwapchainCreateFlagBitsKHR),
        VkSwapchainCreateFlagsKHR, VkSwapchainCreateFlagBitsKHR)
       where
import Data.Bits                       (Bits, FiniteBits)
import Foreign.Storable                (Storable)
import GHC.Read                        (choose, expectP)
import Graphics.Vulkan.Marshal         (FlagBit, FlagMask, FlagType)
import Graphics.Vulkan.Types.BaseTypes (VkFlags (..))
import Text.ParserCombinators.ReadPrec (prec, step, (+++))
import Text.Read                       (Read (..), parens)
import Text.Read.Lex                   (Lexeme (..))

newtype VkSwapchainCreateBitmaskKHR (a ::
                                       FlagType) = VkSwapchainCreateBitmaskKHR VkFlags
                                                   deriving (Eq, Ord, Storable)

type VkSwapchainCreateFlagsKHR =
     VkSwapchainCreateBitmaskKHR FlagMask

type VkSwapchainCreateFlagBitsKHR =
     VkSwapchainCreateBitmaskKHR FlagBit

pattern VkSwapchainCreateFlagBitsKHR ::
        VkFlags -> VkSwapchainCreateBitmaskKHR FlagBit

pattern VkSwapchainCreateFlagBitsKHR n =
        VkSwapchainCreateBitmaskKHR n

pattern VkSwapchainCreateFlagsKHR ::
        VkFlags -> VkSwapchainCreateBitmaskKHR FlagMask

pattern VkSwapchainCreateFlagsKHR n = VkSwapchainCreateBitmaskKHR n

deriving instance Bits (VkSwapchainCreateBitmaskKHR FlagMask)

deriving instance FiniteBits (VkSwapchainCreateBitmaskKHR FlagMask)

instance Show (VkSwapchainCreateBitmaskKHR a) where
    showsPrec p (VkSwapchainCreateBitmaskKHR x)
      = showParen (p >= 11)
          (showString "VkSwapchainCreateBitmaskKHR " . showsPrec 11 x)

instance Read (VkSwapchainCreateBitmaskKHR a) where
    readPrec
      = parens
          (choose [] +++
             prec 10
               (expectP (Ident "VkSwapchainCreateBitmaskKHR") >>
                  (VkSwapchainCreateBitmaskKHR <$> step readPrec)))