{-# language CPP #-}
-- No documentation found for Chapter "ToolPurposeFlagBits"
module Vulkan.Core13.Enums.ToolPurposeFlagBits  ( ToolPurposeFlags
                                                , ToolPurposeFlagBits( TOOL_PURPOSE_VALIDATION_BIT
                                                                     , TOOL_PURPOSE_PROFILING_BIT
                                                                     , TOOL_PURPOSE_TRACING_BIT
                                                                     , TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT
                                                                     , TOOL_PURPOSE_MODIFYING_FEATURES_BIT
                                                                     , TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT
                                                                     , TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT
                                                                     , ..
                                                                     )
                                                ) 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 ToolPurposeFlags = ToolPurposeFlagBits

-- | VkToolPurposeFlagBits - Bitmask specifying the purposes of an active
-- tool
--
-- = Description
--
-- -   'TOOL_PURPOSE_VALIDATION_BIT' specifies that the tool provides
--     validation of API usage.
--
-- -   'TOOL_PURPOSE_PROFILING_BIT' specifies that the tool provides
--     profiling of API usage.
--
-- -   'TOOL_PURPOSE_TRACING_BIT' specifies that the tool is capturing data
--     about the application’s API usage, including anything from simple
--     logging to capturing data for later replay.
--
-- -   'TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT' specifies that the tool
--     provides additional API features\/extensions on top of the
--     underlying implementation.
--
-- -   'TOOL_PURPOSE_MODIFYING_FEATURES_BIT' specifies that the tool
--     modifies the API features\/limits\/extensions presented to the
--     application.
--
-- -   'TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT' specifies that the tool
--     reports additional information to the application via callbacks
--     specified by
--     'Vulkan.Extensions.VK_EXT_debug_report.createDebugReportCallbackEXT'
--     or
--     'Vulkan.Extensions.VK_EXT_debug_utils.createDebugUtilsMessengerEXT'
--
-- -   'TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT' specifies that the tool
--     consumes
--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#debugging-debug-markers debug markers>
--     or
--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#debugging-object-debug-annotation object debug annotation>,
--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#debugging-queue-labels queue labels>,
--     or
--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#debugging-command-buffer-labels command buffer labels>
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_tooling_info VK_EXT_tooling_info>,
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
-- 'ToolPurposeFlags'
newtype ToolPurposeFlagBits = ToolPurposeFlagBits Flags
  deriving newtype (ToolPurposeFlagBits -> ToolPurposeFlagBits -> Bool
(ToolPurposeFlagBits -> ToolPurposeFlagBits -> Bool)
-> (ToolPurposeFlagBits -> ToolPurposeFlagBits -> Bool)
-> Eq ToolPurposeFlagBits
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ToolPurposeFlagBits -> ToolPurposeFlagBits -> Bool
== :: ToolPurposeFlagBits -> ToolPurposeFlagBits -> Bool
$c/= :: ToolPurposeFlagBits -> ToolPurposeFlagBits -> Bool
/= :: ToolPurposeFlagBits -> ToolPurposeFlagBits -> Bool
Eq, Eq ToolPurposeFlagBits
Eq ToolPurposeFlagBits =>
(ToolPurposeFlagBits -> ToolPurposeFlagBits -> Ordering)
-> (ToolPurposeFlagBits -> ToolPurposeFlagBits -> Bool)
-> (ToolPurposeFlagBits -> ToolPurposeFlagBits -> Bool)
-> (ToolPurposeFlagBits -> ToolPurposeFlagBits -> Bool)
-> (ToolPurposeFlagBits -> ToolPurposeFlagBits -> Bool)
-> (ToolPurposeFlagBits
    -> ToolPurposeFlagBits -> ToolPurposeFlagBits)
-> (ToolPurposeFlagBits
    -> ToolPurposeFlagBits -> ToolPurposeFlagBits)
-> Ord ToolPurposeFlagBits
ToolPurposeFlagBits -> ToolPurposeFlagBits -> Bool
ToolPurposeFlagBits -> ToolPurposeFlagBits -> Ordering
ToolPurposeFlagBits -> ToolPurposeFlagBits -> ToolPurposeFlagBits
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 :: ToolPurposeFlagBits -> ToolPurposeFlagBits -> Ordering
compare :: ToolPurposeFlagBits -> ToolPurposeFlagBits -> Ordering
$c< :: ToolPurposeFlagBits -> ToolPurposeFlagBits -> Bool
< :: ToolPurposeFlagBits -> ToolPurposeFlagBits -> Bool
$c<= :: ToolPurposeFlagBits -> ToolPurposeFlagBits -> Bool
<= :: ToolPurposeFlagBits -> ToolPurposeFlagBits -> Bool
$c> :: ToolPurposeFlagBits -> ToolPurposeFlagBits -> Bool
> :: ToolPurposeFlagBits -> ToolPurposeFlagBits -> Bool
$c>= :: ToolPurposeFlagBits -> ToolPurposeFlagBits -> Bool
>= :: ToolPurposeFlagBits -> ToolPurposeFlagBits -> Bool
$cmax :: ToolPurposeFlagBits -> ToolPurposeFlagBits -> ToolPurposeFlagBits
max :: ToolPurposeFlagBits -> ToolPurposeFlagBits -> ToolPurposeFlagBits
$cmin :: ToolPurposeFlagBits -> ToolPurposeFlagBits -> ToolPurposeFlagBits
min :: ToolPurposeFlagBits -> ToolPurposeFlagBits -> ToolPurposeFlagBits
Ord, Ptr ToolPurposeFlagBits -> IO ToolPurposeFlagBits
Ptr ToolPurposeFlagBits -> Int -> IO ToolPurposeFlagBits
Ptr ToolPurposeFlagBits -> Int -> ToolPurposeFlagBits -> IO ()
Ptr ToolPurposeFlagBits -> ToolPurposeFlagBits -> IO ()
ToolPurposeFlagBits -> Int
(ToolPurposeFlagBits -> Int)
-> (ToolPurposeFlagBits -> Int)
-> (Ptr ToolPurposeFlagBits -> Int -> IO ToolPurposeFlagBits)
-> (Ptr ToolPurposeFlagBits -> Int -> ToolPurposeFlagBits -> IO ())
-> (forall b. Ptr b -> Int -> IO ToolPurposeFlagBits)
-> (forall b. Ptr b -> Int -> ToolPurposeFlagBits -> IO ())
-> (Ptr ToolPurposeFlagBits -> IO ToolPurposeFlagBits)
-> (Ptr ToolPurposeFlagBits -> ToolPurposeFlagBits -> IO ())
-> Storable ToolPurposeFlagBits
forall b. Ptr b -> Int -> IO ToolPurposeFlagBits
forall b. Ptr b -> Int -> ToolPurposeFlagBits -> 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 :: ToolPurposeFlagBits -> Int
sizeOf :: ToolPurposeFlagBits -> Int
$calignment :: ToolPurposeFlagBits -> Int
alignment :: ToolPurposeFlagBits -> Int
$cpeekElemOff :: Ptr ToolPurposeFlagBits -> Int -> IO ToolPurposeFlagBits
peekElemOff :: Ptr ToolPurposeFlagBits -> Int -> IO ToolPurposeFlagBits
$cpokeElemOff :: Ptr ToolPurposeFlagBits -> Int -> ToolPurposeFlagBits -> IO ()
pokeElemOff :: Ptr ToolPurposeFlagBits -> Int -> ToolPurposeFlagBits -> IO ()
$cpeekByteOff :: forall b. Ptr b -> Int -> IO ToolPurposeFlagBits
peekByteOff :: forall b. Ptr b -> Int -> IO ToolPurposeFlagBits
$cpokeByteOff :: forall b. Ptr b -> Int -> ToolPurposeFlagBits -> IO ()
pokeByteOff :: forall b. Ptr b -> Int -> ToolPurposeFlagBits -> IO ()
$cpeek :: Ptr ToolPurposeFlagBits -> IO ToolPurposeFlagBits
peek :: Ptr ToolPurposeFlagBits -> IO ToolPurposeFlagBits
$cpoke :: Ptr ToolPurposeFlagBits -> ToolPurposeFlagBits -> IO ()
poke :: Ptr ToolPurposeFlagBits -> ToolPurposeFlagBits -> IO ()
Storable, ToolPurposeFlagBits
ToolPurposeFlagBits -> Zero ToolPurposeFlagBits
forall a. a -> Zero a
$czero :: ToolPurposeFlagBits
zero :: ToolPurposeFlagBits
Zero, Eq ToolPurposeFlagBits
ToolPurposeFlagBits
Eq ToolPurposeFlagBits =>
(ToolPurposeFlagBits -> ToolPurposeFlagBits -> ToolPurposeFlagBits)
-> (ToolPurposeFlagBits
    -> ToolPurposeFlagBits -> ToolPurposeFlagBits)
-> (ToolPurposeFlagBits
    -> ToolPurposeFlagBits -> ToolPurposeFlagBits)
-> (ToolPurposeFlagBits -> ToolPurposeFlagBits)
-> (ToolPurposeFlagBits -> Int -> ToolPurposeFlagBits)
-> (ToolPurposeFlagBits -> Int -> ToolPurposeFlagBits)
-> ToolPurposeFlagBits
-> (Int -> ToolPurposeFlagBits)
-> (ToolPurposeFlagBits -> Int -> ToolPurposeFlagBits)
-> (ToolPurposeFlagBits -> Int -> ToolPurposeFlagBits)
-> (ToolPurposeFlagBits -> Int -> ToolPurposeFlagBits)
-> (ToolPurposeFlagBits -> Int -> Bool)
-> (ToolPurposeFlagBits -> Maybe Int)
-> (ToolPurposeFlagBits -> Int)
-> (ToolPurposeFlagBits -> Bool)
-> (ToolPurposeFlagBits -> Int -> ToolPurposeFlagBits)
-> (ToolPurposeFlagBits -> Int -> ToolPurposeFlagBits)
-> (ToolPurposeFlagBits -> Int -> ToolPurposeFlagBits)
-> (ToolPurposeFlagBits -> Int -> ToolPurposeFlagBits)
-> (ToolPurposeFlagBits -> Int -> ToolPurposeFlagBits)
-> (ToolPurposeFlagBits -> Int -> ToolPurposeFlagBits)
-> (ToolPurposeFlagBits -> Int)
-> Bits ToolPurposeFlagBits
Int -> ToolPurposeFlagBits
ToolPurposeFlagBits -> Bool
ToolPurposeFlagBits -> Int
ToolPurposeFlagBits -> Maybe Int
ToolPurposeFlagBits -> ToolPurposeFlagBits
ToolPurposeFlagBits -> Int -> Bool
ToolPurposeFlagBits -> Int -> ToolPurposeFlagBits
ToolPurposeFlagBits -> ToolPurposeFlagBits -> ToolPurposeFlagBits
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.&. :: ToolPurposeFlagBits -> ToolPurposeFlagBits -> ToolPurposeFlagBits
.&. :: ToolPurposeFlagBits -> ToolPurposeFlagBits -> ToolPurposeFlagBits
$c.|. :: ToolPurposeFlagBits -> ToolPurposeFlagBits -> ToolPurposeFlagBits
.|. :: ToolPurposeFlagBits -> ToolPurposeFlagBits -> ToolPurposeFlagBits
$cxor :: ToolPurposeFlagBits -> ToolPurposeFlagBits -> ToolPurposeFlagBits
xor :: ToolPurposeFlagBits -> ToolPurposeFlagBits -> ToolPurposeFlagBits
$ccomplement :: ToolPurposeFlagBits -> ToolPurposeFlagBits
complement :: ToolPurposeFlagBits -> ToolPurposeFlagBits
$cshift :: ToolPurposeFlagBits -> Int -> ToolPurposeFlagBits
shift :: ToolPurposeFlagBits -> Int -> ToolPurposeFlagBits
$crotate :: ToolPurposeFlagBits -> Int -> ToolPurposeFlagBits
rotate :: ToolPurposeFlagBits -> Int -> ToolPurposeFlagBits
$czeroBits :: ToolPurposeFlagBits
zeroBits :: ToolPurposeFlagBits
$cbit :: Int -> ToolPurposeFlagBits
bit :: Int -> ToolPurposeFlagBits
$csetBit :: ToolPurposeFlagBits -> Int -> ToolPurposeFlagBits
setBit :: ToolPurposeFlagBits -> Int -> ToolPurposeFlagBits
$cclearBit :: ToolPurposeFlagBits -> Int -> ToolPurposeFlagBits
clearBit :: ToolPurposeFlagBits -> Int -> ToolPurposeFlagBits
$ccomplementBit :: ToolPurposeFlagBits -> Int -> ToolPurposeFlagBits
complementBit :: ToolPurposeFlagBits -> Int -> ToolPurposeFlagBits
$ctestBit :: ToolPurposeFlagBits -> Int -> Bool
testBit :: ToolPurposeFlagBits -> Int -> Bool
$cbitSizeMaybe :: ToolPurposeFlagBits -> Maybe Int
bitSizeMaybe :: ToolPurposeFlagBits -> Maybe Int
$cbitSize :: ToolPurposeFlagBits -> Int
bitSize :: ToolPurposeFlagBits -> Int
$cisSigned :: ToolPurposeFlagBits -> Bool
isSigned :: ToolPurposeFlagBits -> Bool
$cshiftL :: ToolPurposeFlagBits -> Int -> ToolPurposeFlagBits
shiftL :: ToolPurposeFlagBits -> Int -> ToolPurposeFlagBits
$cunsafeShiftL :: ToolPurposeFlagBits -> Int -> ToolPurposeFlagBits
unsafeShiftL :: ToolPurposeFlagBits -> Int -> ToolPurposeFlagBits
$cshiftR :: ToolPurposeFlagBits -> Int -> ToolPurposeFlagBits
shiftR :: ToolPurposeFlagBits -> Int -> ToolPurposeFlagBits
$cunsafeShiftR :: ToolPurposeFlagBits -> Int -> ToolPurposeFlagBits
unsafeShiftR :: ToolPurposeFlagBits -> Int -> ToolPurposeFlagBits
$crotateL :: ToolPurposeFlagBits -> Int -> ToolPurposeFlagBits
rotateL :: ToolPurposeFlagBits -> Int -> ToolPurposeFlagBits
$crotateR :: ToolPurposeFlagBits -> Int -> ToolPurposeFlagBits
rotateR :: ToolPurposeFlagBits -> Int -> ToolPurposeFlagBits
$cpopCount :: ToolPurposeFlagBits -> Int
popCount :: ToolPurposeFlagBits -> Int
Bits, Bits ToolPurposeFlagBits
Bits ToolPurposeFlagBits =>
(ToolPurposeFlagBits -> Int)
-> (ToolPurposeFlagBits -> Int)
-> (ToolPurposeFlagBits -> Int)
-> FiniteBits ToolPurposeFlagBits
ToolPurposeFlagBits -> Int
forall b.
Bits b =>
(b -> Int) -> (b -> Int) -> (b -> Int) -> FiniteBits b
$cfiniteBitSize :: ToolPurposeFlagBits -> Int
finiteBitSize :: ToolPurposeFlagBits -> Int
$ccountLeadingZeros :: ToolPurposeFlagBits -> Int
countLeadingZeros :: ToolPurposeFlagBits -> Int
$ccountTrailingZeros :: ToolPurposeFlagBits -> Int
countTrailingZeros :: ToolPurposeFlagBits -> Int
FiniteBits)

-- No documentation found for Nested "VkToolPurposeFlagBits" "VK_TOOL_PURPOSE_VALIDATION_BIT"
pattern $mTOOL_PURPOSE_VALIDATION_BIT :: forall {r}.
ToolPurposeFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
$bTOOL_PURPOSE_VALIDATION_BIT :: ToolPurposeFlagBits
TOOL_PURPOSE_VALIDATION_BIT = ToolPurposeFlagBits 0x00000001

-- No documentation found for Nested "VkToolPurposeFlagBits" "VK_TOOL_PURPOSE_PROFILING_BIT"
pattern $mTOOL_PURPOSE_PROFILING_BIT :: forall {r}.
ToolPurposeFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
$bTOOL_PURPOSE_PROFILING_BIT :: ToolPurposeFlagBits
TOOL_PURPOSE_PROFILING_BIT = ToolPurposeFlagBits 0x00000002

-- No documentation found for Nested "VkToolPurposeFlagBits" "VK_TOOL_PURPOSE_TRACING_BIT"
pattern $mTOOL_PURPOSE_TRACING_BIT :: forall {r}.
ToolPurposeFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
$bTOOL_PURPOSE_TRACING_BIT :: ToolPurposeFlagBits
TOOL_PURPOSE_TRACING_BIT = ToolPurposeFlagBits 0x00000004

-- No documentation found for Nested "VkToolPurposeFlagBits" "VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT"
pattern $mTOOL_PURPOSE_ADDITIONAL_FEATURES_BIT :: forall {r}.
ToolPurposeFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
$bTOOL_PURPOSE_ADDITIONAL_FEATURES_BIT :: ToolPurposeFlagBits
TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT = ToolPurposeFlagBits 0x00000008

-- No documentation found for Nested "VkToolPurposeFlagBits" "VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT"
pattern $mTOOL_PURPOSE_MODIFYING_FEATURES_BIT :: forall {r}.
ToolPurposeFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
$bTOOL_PURPOSE_MODIFYING_FEATURES_BIT :: ToolPurposeFlagBits
TOOL_PURPOSE_MODIFYING_FEATURES_BIT = ToolPurposeFlagBits 0x00000010

-- No documentation found for Nested "VkToolPurposeFlagBits" "VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT"
pattern $mTOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT :: forall {r}.
ToolPurposeFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
$bTOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT :: ToolPurposeFlagBits
TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT = ToolPurposeFlagBits 0x00000040

-- No documentation found for Nested "VkToolPurposeFlagBits" "VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT"
pattern $mTOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT :: forall {r}.
ToolPurposeFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
$bTOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT :: ToolPurposeFlagBits
TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT = ToolPurposeFlagBits 0x00000020

conNameToolPurposeFlagBits :: String
conNameToolPurposeFlagBits :: String
conNameToolPurposeFlagBits = String
"ToolPurposeFlagBits"

enumPrefixToolPurposeFlagBits :: String
enumPrefixToolPurposeFlagBits :: String
enumPrefixToolPurposeFlagBits = String
"TOOL_PURPOSE_"

showTableToolPurposeFlagBits :: [(ToolPurposeFlagBits, String)]
showTableToolPurposeFlagBits :: [(ToolPurposeFlagBits, String)]
showTableToolPurposeFlagBits =
  [ (ToolPurposeFlagBits
TOOL_PURPOSE_VALIDATION_BIT, String
"VALIDATION_BIT")
  , (ToolPurposeFlagBits
TOOL_PURPOSE_PROFILING_BIT, String
"PROFILING_BIT")
  , (ToolPurposeFlagBits
TOOL_PURPOSE_TRACING_BIT, String
"TRACING_BIT")
  ,
    ( ToolPurposeFlagBits
TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT
    , String
"ADDITIONAL_FEATURES_BIT"
    )
  ,
    ( ToolPurposeFlagBits
TOOL_PURPOSE_MODIFYING_FEATURES_BIT
    , String
"MODIFYING_FEATURES_BIT"
    )
  ,
    ( ToolPurposeFlagBits
TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT
    , String
"DEBUG_MARKERS_BIT_EXT"
    )
  ,
    ( ToolPurposeFlagBits
TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT
    , String
"DEBUG_REPORTING_BIT_EXT"
    )
  ]

instance Show ToolPurposeFlagBits where
  showsPrec :: Int -> ToolPurposeFlagBits -> ShowS
showsPrec =
    String
-> [(ToolPurposeFlagBits, String)]
-> String
-> (ToolPurposeFlagBits -> Word32)
-> (Word32 -> ShowS)
-> Int
-> ToolPurposeFlagBits
-> ShowS
forall a i.
Eq a =>
String
-> [(a, String)]
-> String
-> (a -> i)
-> (i -> ShowS)
-> Int
-> a
-> ShowS
enumShowsPrec
      String
enumPrefixToolPurposeFlagBits
      [(ToolPurposeFlagBits, String)]
showTableToolPurposeFlagBits
      String
conNameToolPurposeFlagBits
      (\(ToolPurposeFlagBits Word32
x) -> Word32
x)
      (\Word32
x -> String -> ShowS
showString String
"0x" ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Word32 -> ShowS
forall a. Integral a => a -> ShowS
showHex Word32
x)

instance Read ToolPurposeFlagBits where
  readPrec :: ReadPrec ToolPurposeFlagBits
readPrec =
    String
-> [(ToolPurposeFlagBits, String)]
-> String
-> (Word32 -> ToolPurposeFlagBits)
-> ReadPrec ToolPurposeFlagBits
forall i a.
Read i =>
String -> [(a, String)] -> String -> (i -> a) -> ReadPrec a
enumReadPrec
      String
enumPrefixToolPurposeFlagBits
      [(ToolPurposeFlagBits, String)]
showTableToolPurposeFlagBits
      String
conNameToolPurposeFlagBits
      Word32 -> ToolPurposeFlagBits
ToolPurposeFlagBits