{-# language CPP #-}
-- No documentation found for Chapter "ExternalMemoryFeatureFlagBits"
module Vulkan.Core11.Enums.ExternalMemoryFeatureFlagBits  ( ExternalMemoryFeatureFlags
                                                          , ExternalMemoryFeatureFlagBits( EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT
                                                                                         , EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT
                                                                                         , EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT
                                                                                         , ..
                                                                                         )
                                                          ) 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)
type ExternalMemoryFeatureFlags = ExternalMemoryFeatureFlagBits

-- | VkExternalMemoryFeatureFlagBits - Bitmask specifying features of an
-- external memory handle type
--
-- = Description
--
-- Because their semantics in external APIs roughly align with that of an
-- image or buffer with a dedicated allocation in Vulkan, implementations
-- are /required/ to report 'EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT'
-- for the following external handle types:
--
-- Implementations /must/ not report
-- 'EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT' for buffers with external
-- handle type
-- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID'.
-- Implementations /must/ not report
-- 'EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT' for buffers with external
-- handle type
-- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_SCREEN_BUFFER_BIT_QNX'.
-- Implementations /must/ not report
-- 'EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT' for images or buffers with
-- external handle type
-- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT',
-- or
-- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT'.
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
-- 'ExternalMemoryFeatureFlags'
newtype ExternalMemoryFeatureFlagBits = ExternalMemoryFeatureFlagBits Flags
  deriving newtype (ExternalMemoryFeatureFlagBits
-> ExternalMemoryFeatureFlagBits -> Bool
(ExternalMemoryFeatureFlagBits
 -> ExternalMemoryFeatureFlagBits -> Bool)
-> (ExternalMemoryFeatureFlagBits
    -> ExternalMemoryFeatureFlagBits -> Bool)
-> Eq ExternalMemoryFeatureFlagBits
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ExternalMemoryFeatureFlagBits
-> ExternalMemoryFeatureFlagBits -> Bool
== :: ExternalMemoryFeatureFlagBits
-> ExternalMemoryFeatureFlagBits -> Bool
$c/= :: ExternalMemoryFeatureFlagBits
-> ExternalMemoryFeatureFlagBits -> Bool
/= :: ExternalMemoryFeatureFlagBits
-> ExternalMemoryFeatureFlagBits -> Bool
Eq, Eq ExternalMemoryFeatureFlagBits
Eq ExternalMemoryFeatureFlagBits =>
(ExternalMemoryFeatureFlagBits
 -> ExternalMemoryFeatureFlagBits -> Ordering)
-> (ExternalMemoryFeatureFlagBits
    -> ExternalMemoryFeatureFlagBits -> Bool)
-> (ExternalMemoryFeatureFlagBits
    -> ExternalMemoryFeatureFlagBits -> Bool)
-> (ExternalMemoryFeatureFlagBits
    -> ExternalMemoryFeatureFlagBits -> Bool)
-> (ExternalMemoryFeatureFlagBits
    -> ExternalMemoryFeatureFlagBits -> Bool)
-> (ExternalMemoryFeatureFlagBits
    -> ExternalMemoryFeatureFlagBits -> ExternalMemoryFeatureFlagBits)
-> (ExternalMemoryFeatureFlagBits
    -> ExternalMemoryFeatureFlagBits -> ExternalMemoryFeatureFlagBits)
-> Ord ExternalMemoryFeatureFlagBits
ExternalMemoryFeatureFlagBits
-> ExternalMemoryFeatureFlagBits -> Bool
ExternalMemoryFeatureFlagBits
-> ExternalMemoryFeatureFlagBits -> Ordering
ExternalMemoryFeatureFlagBits
-> ExternalMemoryFeatureFlagBits -> ExternalMemoryFeatureFlagBits
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 :: ExternalMemoryFeatureFlagBits
-> ExternalMemoryFeatureFlagBits -> Ordering
compare :: ExternalMemoryFeatureFlagBits
-> ExternalMemoryFeatureFlagBits -> Ordering
$c< :: ExternalMemoryFeatureFlagBits
-> ExternalMemoryFeatureFlagBits -> Bool
< :: ExternalMemoryFeatureFlagBits
-> ExternalMemoryFeatureFlagBits -> Bool
$c<= :: ExternalMemoryFeatureFlagBits
-> ExternalMemoryFeatureFlagBits -> Bool
<= :: ExternalMemoryFeatureFlagBits
-> ExternalMemoryFeatureFlagBits -> Bool
$c> :: ExternalMemoryFeatureFlagBits
-> ExternalMemoryFeatureFlagBits -> Bool
> :: ExternalMemoryFeatureFlagBits
-> ExternalMemoryFeatureFlagBits -> Bool
$c>= :: ExternalMemoryFeatureFlagBits
-> ExternalMemoryFeatureFlagBits -> Bool
>= :: ExternalMemoryFeatureFlagBits
-> ExternalMemoryFeatureFlagBits -> Bool
$cmax :: ExternalMemoryFeatureFlagBits
-> ExternalMemoryFeatureFlagBits -> ExternalMemoryFeatureFlagBits
max :: ExternalMemoryFeatureFlagBits
-> ExternalMemoryFeatureFlagBits -> ExternalMemoryFeatureFlagBits
$cmin :: ExternalMemoryFeatureFlagBits
-> ExternalMemoryFeatureFlagBits -> ExternalMemoryFeatureFlagBits
min :: ExternalMemoryFeatureFlagBits
-> ExternalMemoryFeatureFlagBits -> ExternalMemoryFeatureFlagBits
Ord, Ptr ExternalMemoryFeatureFlagBits
-> IO ExternalMemoryFeatureFlagBits
Ptr ExternalMemoryFeatureFlagBits
-> Int -> IO ExternalMemoryFeatureFlagBits
Ptr ExternalMemoryFeatureFlagBits
-> Int -> ExternalMemoryFeatureFlagBits -> IO ()
Ptr ExternalMemoryFeatureFlagBits
-> ExternalMemoryFeatureFlagBits -> IO ()
ExternalMemoryFeatureFlagBits -> Int
(ExternalMemoryFeatureFlagBits -> Int)
-> (ExternalMemoryFeatureFlagBits -> Int)
-> (Ptr ExternalMemoryFeatureFlagBits
    -> Int -> IO ExternalMemoryFeatureFlagBits)
-> (Ptr ExternalMemoryFeatureFlagBits
    -> Int -> ExternalMemoryFeatureFlagBits -> IO ())
-> (forall b. Ptr b -> Int -> IO ExternalMemoryFeatureFlagBits)
-> (forall b.
    Ptr b -> Int -> ExternalMemoryFeatureFlagBits -> IO ())
-> (Ptr ExternalMemoryFeatureFlagBits
    -> IO ExternalMemoryFeatureFlagBits)
-> (Ptr ExternalMemoryFeatureFlagBits
    -> ExternalMemoryFeatureFlagBits -> IO ())
-> Storable ExternalMemoryFeatureFlagBits
forall b. Ptr b -> Int -> IO ExternalMemoryFeatureFlagBits
forall b. Ptr b -> Int -> ExternalMemoryFeatureFlagBits -> 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 :: ExternalMemoryFeatureFlagBits -> Int
sizeOf :: ExternalMemoryFeatureFlagBits -> Int
$calignment :: ExternalMemoryFeatureFlagBits -> Int
alignment :: ExternalMemoryFeatureFlagBits -> Int
$cpeekElemOff :: Ptr ExternalMemoryFeatureFlagBits
-> Int -> IO ExternalMemoryFeatureFlagBits
peekElemOff :: Ptr ExternalMemoryFeatureFlagBits
-> Int -> IO ExternalMemoryFeatureFlagBits
$cpokeElemOff :: Ptr ExternalMemoryFeatureFlagBits
-> Int -> ExternalMemoryFeatureFlagBits -> IO ()
pokeElemOff :: Ptr ExternalMemoryFeatureFlagBits
-> Int -> ExternalMemoryFeatureFlagBits -> IO ()
$cpeekByteOff :: forall b. Ptr b -> Int -> IO ExternalMemoryFeatureFlagBits
peekByteOff :: forall b. Ptr b -> Int -> IO ExternalMemoryFeatureFlagBits
$cpokeByteOff :: forall b. Ptr b -> Int -> ExternalMemoryFeatureFlagBits -> IO ()
pokeByteOff :: forall b. Ptr b -> Int -> ExternalMemoryFeatureFlagBits -> IO ()
$cpeek :: Ptr ExternalMemoryFeatureFlagBits
-> IO ExternalMemoryFeatureFlagBits
peek :: Ptr ExternalMemoryFeatureFlagBits
-> IO ExternalMemoryFeatureFlagBits
$cpoke :: Ptr ExternalMemoryFeatureFlagBits
-> ExternalMemoryFeatureFlagBits -> IO ()
poke :: Ptr ExternalMemoryFeatureFlagBits
-> ExternalMemoryFeatureFlagBits -> IO ()
Storable, ExternalMemoryFeatureFlagBits
ExternalMemoryFeatureFlagBits -> Zero ExternalMemoryFeatureFlagBits
forall a. a -> Zero a
$czero :: ExternalMemoryFeatureFlagBits
zero :: ExternalMemoryFeatureFlagBits
Zero, Eq ExternalMemoryFeatureFlagBits
ExternalMemoryFeatureFlagBits
Eq ExternalMemoryFeatureFlagBits =>
(ExternalMemoryFeatureFlagBits
 -> ExternalMemoryFeatureFlagBits -> ExternalMemoryFeatureFlagBits)
-> (ExternalMemoryFeatureFlagBits
    -> ExternalMemoryFeatureFlagBits -> ExternalMemoryFeatureFlagBits)
-> (ExternalMemoryFeatureFlagBits
    -> ExternalMemoryFeatureFlagBits -> ExternalMemoryFeatureFlagBits)
-> (ExternalMemoryFeatureFlagBits -> ExternalMemoryFeatureFlagBits)
-> (ExternalMemoryFeatureFlagBits
    -> Int -> ExternalMemoryFeatureFlagBits)
-> (ExternalMemoryFeatureFlagBits
    -> Int -> ExternalMemoryFeatureFlagBits)
-> ExternalMemoryFeatureFlagBits
-> (Int -> ExternalMemoryFeatureFlagBits)
-> (ExternalMemoryFeatureFlagBits
    -> Int -> ExternalMemoryFeatureFlagBits)
-> (ExternalMemoryFeatureFlagBits
    -> Int -> ExternalMemoryFeatureFlagBits)
-> (ExternalMemoryFeatureFlagBits
    -> Int -> ExternalMemoryFeatureFlagBits)
-> (ExternalMemoryFeatureFlagBits -> Int -> Bool)
-> (ExternalMemoryFeatureFlagBits -> Maybe Int)
-> (ExternalMemoryFeatureFlagBits -> Int)
-> (ExternalMemoryFeatureFlagBits -> Bool)
-> (ExternalMemoryFeatureFlagBits
    -> Int -> ExternalMemoryFeatureFlagBits)
-> (ExternalMemoryFeatureFlagBits
    -> Int -> ExternalMemoryFeatureFlagBits)
-> (ExternalMemoryFeatureFlagBits
    -> Int -> ExternalMemoryFeatureFlagBits)
-> (ExternalMemoryFeatureFlagBits
    -> Int -> ExternalMemoryFeatureFlagBits)
-> (ExternalMemoryFeatureFlagBits
    -> Int -> ExternalMemoryFeatureFlagBits)
-> (ExternalMemoryFeatureFlagBits
    -> Int -> ExternalMemoryFeatureFlagBits)
-> (ExternalMemoryFeatureFlagBits -> Int)
-> Bits ExternalMemoryFeatureFlagBits
Int -> ExternalMemoryFeatureFlagBits
ExternalMemoryFeatureFlagBits -> Bool
ExternalMemoryFeatureFlagBits -> Int
ExternalMemoryFeatureFlagBits -> Maybe Int
ExternalMemoryFeatureFlagBits -> ExternalMemoryFeatureFlagBits
ExternalMemoryFeatureFlagBits -> Int -> Bool
ExternalMemoryFeatureFlagBits
-> Int -> ExternalMemoryFeatureFlagBits
ExternalMemoryFeatureFlagBits
-> ExternalMemoryFeatureFlagBits -> ExternalMemoryFeatureFlagBits
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.&. :: ExternalMemoryFeatureFlagBits
-> ExternalMemoryFeatureFlagBits -> ExternalMemoryFeatureFlagBits
.&. :: ExternalMemoryFeatureFlagBits
-> ExternalMemoryFeatureFlagBits -> ExternalMemoryFeatureFlagBits
$c.|. :: ExternalMemoryFeatureFlagBits
-> ExternalMemoryFeatureFlagBits -> ExternalMemoryFeatureFlagBits
.|. :: ExternalMemoryFeatureFlagBits
-> ExternalMemoryFeatureFlagBits -> ExternalMemoryFeatureFlagBits
$cxor :: ExternalMemoryFeatureFlagBits
-> ExternalMemoryFeatureFlagBits -> ExternalMemoryFeatureFlagBits
xor :: ExternalMemoryFeatureFlagBits
-> ExternalMemoryFeatureFlagBits -> ExternalMemoryFeatureFlagBits
$ccomplement :: ExternalMemoryFeatureFlagBits -> ExternalMemoryFeatureFlagBits
complement :: ExternalMemoryFeatureFlagBits -> ExternalMemoryFeatureFlagBits
$cshift :: ExternalMemoryFeatureFlagBits
-> Int -> ExternalMemoryFeatureFlagBits
shift :: ExternalMemoryFeatureFlagBits
-> Int -> ExternalMemoryFeatureFlagBits
$crotate :: ExternalMemoryFeatureFlagBits
-> Int -> ExternalMemoryFeatureFlagBits
rotate :: ExternalMemoryFeatureFlagBits
-> Int -> ExternalMemoryFeatureFlagBits
$czeroBits :: ExternalMemoryFeatureFlagBits
zeroBits :: ExternalMemoryFeatureFlagBits
$cbit :: Int -> ExternalMemoryFeatureFlagBits
bit :: Int -> ExternalMemoryFeatureFlagBits
$csetBit :: ExternalMemoryFeatureFlagBits
-> Int -> ExternalMemoryFeatureFlagBits
setBit :: ExternalMemoryFeatureFlagBits
-> Int -> ExternalMemoryFeatureFlagBits
$cclearBit :: ExternalMemoryFeatureFlagBits
-> Int -> ExternalMemoryFeatureFlagBits
clearBit :: ExternalMemoryFeatureFlagBits
-> Int -> ExternalMemoryFeatureFlagBits
$ccomplementBit :: ExternalMemoryFeatureFlagBits
-> Int -> ExternalMemoryFeatureFlagBits
complementBit :: ExternalMemoryFeatureFlagBits
-> Int -> ExternalMemoryFeatureFlagBits
$ctestBit :: ExternalMemoryFeatureFlagBits -> Int -> Bool
testBit :: ExternalMemoryFeatureFlagBits -> Int -> Bool
$cbitSizeMaybe :: ExternalMemoryFeatureFlagBits -> Maybe Int
bitSizeMaybe :: ExternalMemoryFeatureFlagBits -> Maybe Int
$cbitSize :: ExternalMemoryFeatureFlagBits -> Int
bitSize :: ExternalMemoryFeatureFlagBits -> Int
$cisSigned :: ExternalMemoryFeatureFlagBits -> Bool
isSigned :: ExternalMemoryFeatureFlagBits -> Bool
$cshiftL :: ExternalMemoryFeatureFlagBits
-> Int -> ExternalMemoryFeatureFlagBits
shiftL :: ExternalMemoryFeatureFlagBits
-> Int -> ExternalMemoryFeatureFlagBits
$cunsafeShiftL :: ExternalMemoryFeatureFlagBits
-> Int -> ExternalMemoryFeatureFlagBits
unsafeShiftL :: ExternalMemoryFeatureFlagBits
-> Int -> ExternalMemoryFeatureFlagBits
$cshiftR :: ExternalMemoryFeatureFlagBits
-> Int -> ExternalMemoryFeatureFlagBits
shiftR :: ExternalMemoryFeatureFlagBits
-> Int -> ExternalMemoryFeatureFlagBits
$cunsafeShiftR :: ExternalMemoryFeatureFlagBits
-> Int -> ExternalMemoryFeatureFlagBits
unsafeShiftR :: ExternalMemoryFeatureFlagBits
-> Int -> ExternalMemoryFeatureFlagBits
$crotateL :: ExternalMemoryFeatureFlagBits
-> Int -> ExternalMemoryFeatureFlagBits
rotateL :: ExternalMemoryFeatureFlagBits
-> Int -> ExternalMemoryFeatureFlagBits
$crotateR :: ExternalMemoryFeatureFlagBits
-> Int -> ExternalMemoryFeatureFlagBits
rotateR :: ExternalMemoryFeatureFlagBits
-> Int -> ExternalMemoryFeatureFlagBits
$cpopCount :: ExternalMemoryFeatureFlagBits -> Int
popCount :: ExternalMemoryFeatureFlagBits -> Int
Bits, Bits ExternalMemoryFeatureFlagBits
Bits ExternalMemoryFeatureFlagBits =>
(ExternalMemoryFeatureFlagBits -> Int)
-> (ExternalMemoryFeatureFlagBits -> Int)
-> (ExternalMemoryFeatureFlagBits -> Int)
-> FiniteBits ExternalMemoryFeatureFlagBits
ExternalMemoryFeatureFlagBits -> Int
forall b.
Bits b =>
(b -> Int) -> (b -> Int) -> (b -> Int) -> FiniteBits b
$cfiniteBitSize :: ExternalMemoryFeatureFlagBits -> Int
finiteBitSize :: ExternalMemoryFeatureFlagBits -> Int
$ccountLeadingZeros :: ExternalMemoryFeatureFlagBits -> Int
countLeadingZeros :: ExternalMemoryFeatureFlagBits -> Int
$ccountTrailingZeros :: ExternalMemoryFeatureFlagBits -> Int
countTrailingZeros :: ExternalMemoryFeatureFlagBits -> Int
FiniteBits)

-- | 'EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT' specifies that images or
-- buffers created with the specified parameters and handle type /must/ use
-- the mechanisms defined by
-- 'Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedRequirements'
-- and
-- 'Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo'
-- to create (or import) a dedicated allocation for the image or buffer.
pattern $bEXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT :: ExternalMemoryFeatureFlagBits
$mEXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT :: forall {r}.
ExternalMemoryFeatureFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT = ExternalMemoryFeatureFlagBits 0x00000001

-- | 'EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT' specifies that handles of this
-- type /can/ be exported from Vulkan memory objects.
pattern $bEXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT :: ExternalMemoryFeatureFlagBits
$mEXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT :: forall {r}.
ExternalMemoryFeatureFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT = ExternalMemoryFeatureFlagBits 0x00000002

-- | 'EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT' specifies that handles of this
-- type /can/ be imported as Vulkan memory objects.
pattern $bEXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT :: ExternalMemoryFeatureFlagBits
$mEXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT :: forall {r}.
ExternalMemoryFeatureFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT = ExternalMemoryFeatureFlagBits 0x00000004

conNameExternalMemoryFeatureFlagBits :: String
conNameExternalMemoryFeatureFlagBits :: String
conNameExternalMemoryFeatureFlagBits = String
"ExternalMemoryFeatureFlagBits"

enumPrefixExternalMemoryFeatureFlagBits :: String
enumPrefixExternalMemoryFeatureFlagBits :: String
enumPrefixExternalMemoryFeatureFlagBits = String
"EXTERNAL_MEMORY_FEATURE_"

showTableExternalMemoryFeatureFlagBits :: [(ExternalMemoryFeatureFlagBits, String)]
showTableExternalMemoryFeatureFlagBits :: [(ExternalMemoryFeatureFlagBits, String)]
showTableExternalMemoryFeatureFlagBits =
  [
    ( ExternalMemoryFeatureFlagBits
EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT
    , String
"DEDICATED_ONLY_BIT"
    )
  ,
    ( ExternalMemoryFeatureFlagBits
EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT
    , String
"EXPORTABLE_BIT"
    )
  ,
    ( ExternalMemoryFeatureFlagBits
EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT
    , String
"IMPORTABLE_BIT"
    )
  ]

instance Show ExternalMemoryFeatureFlagBits where
  showsPrec :: Int -> ExternalMemoryFeatureFlagBits -> ShowS
showsPrec =
    String
-> [(ExternalMemoryFeatureFlagBits, String)]
-> String
-> (ExternalMemoryFeatureFlagBits -> Flags)
-> (Flags -> ShowS)
-> Int
-> ExternalMemoryFeatureFlagBits
-> ShowS
forall a i.
Eq a =>
String
-> [(a, String)]
-> String
-> (a -> i)
-> (i -> ShowS)
-> Int
-> a
-> ShowS
enumShowsPrec
      String
enumPrefixExternalMemoryFeatureFlagBits
      [(ExternalMemoryFeatureFlagBits, String)]
showTableExternalMemoryFeatureFlagBits
      String
conNameExternalMemoryFeatureFlagBits
      (\(ExternalMemoryFeatureFlagBits 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 ExternalMemoryFeatureFlagBits where
  readPrec :: ReadPrec ExternalMemoryFeatureFlagBits
readPrec =
    String
-> [(ExternalMemoryFeatureFlagBits, String)]
-> String
-> (Flags -> ExternalMemoryFeatureFlagBits)
-> ReadPrec ExternalMemoryFeatureFlagBits
forall i a.
Read i =>
String -> [(a, String)] -> String -> (i -> a) -> ReadPrec a
enumReadPrec
      String
enumPrefixExternalMemoryFeatureFlagBits
      [(ExternalMemoryFeatureFlagBits, String)]
showTableExternalMemoryFeatureFlagBits
      String
conNameExternalMemoryFeatureFlagBits
      Flags -> ExternalMemoryFeatureFlagBits
ExternalMemoryFeatureFlagBits