{-# language CPP #-}
-- | = Name
--
-- XR_EXT_performance_settings - instance extension
--
-- = Specification
--
-- See
-- <https://www.khronos.org/registry/OpenXR/specs/1.0/html/xrspec.html#XR_EXT_performance_settings  XR_EXT_performance_settings>
-- in the main specification for complete information.
--
-- = Registered Extension Number
--
-- 16
--
-- = Revision
--
-- 1
--
-- = Extension and Version Dependencies
--
-- -   Requires OpenXR 1.0
--
-- = See Also
--
-- 'EventDataPerfSettingsEXT', 'PerfSettingsDomainEXT',
-- 'PerfSettingsLevelEXT', 'PerfSettingsNotificationLevelEXT',
-- 'PerfSettingsSubDomainEXT', 'perfSettingsSetPerformanceLevelEXT'
--
-- = Document Notes
--
-- For more information, see the
-- <https://www.khronos.org/registry/OpenXR/specs/1.0/html/xrspec.html#XR_EXT_performance_settings OpenXR Specification>
--
-- This page is a generated document. Fixes and changes should be made to
-- the generator scripts, not directly.
module OpenXR.Extensions.XR_EXT_performance_settings  ( perfSettingsSetPerformanceLevelEXT
                                                      , EventDataPerfSettingsEXT(..)
                                                      , PerfSettingsLevelEXT( PERF_SETTINGS_LEVEL_POWER_SAVINGS_EXT
                                                                            , PERF_SETTINGS_LEVEL_SUSTAINED_LOW_EXT
                                                                            , PERF_SETTINGS_LEVEL_SUSTAINED_HIGH_EXT
                                                                            , PERF_SETTINGS_LEVEL_BOOST_EXT
                                                                            , ..
                                                                            )
                                                      , PerfSettingsDomainEXT( PERF_SETTINGS_DOMAIN_CPU_EXT
                                                                             , PERF_SETTINGS_DOMAIN_GPU_EXT
                                                                             , ..
                                                                             )
                                                      , PerfSettingsSubDomainEXT( PERF_SETTINGS_SUB_DOMAIN_COMPOSITING_EXT
                                                                                , PERF_SETTINGS_SUB_DOMAIN_RENDERING_EXT
                                                                                , PERF_SETTINGS_SUB_DOMAIN_THERMAL_EXT
                                                                                , ..
                                                                                )
                                                      , PerfSettingsNotificationLevelEXT( PERF_SETTINGS_NOTIF_LEVEL_NORMAL_EXT
                                                                                        , PERF_SETTINGS_NOTIF_LEVEL_WARNING_EXT
                                                                                        , PERF_SETTINGS_NOTIF_LEVEL_IMPAIRED_EXT
                                                                                        , ..
                                                                                        )
                                                      , EXT_performance_settings_SPEC_VERSION
                                                      , pattern EXT_performance_settings_SPEC_VERSION
                                                      , EXT_PERFORMANCE_SETTINGS_EXTENSION_NAME
                                                      , pattern EXT_PERFORMANCE_SETTINGS_EXTENSION_NAME
                                                      ) where

import OpenXR.Internal.Utils (enumReadPrec)
import OpenXR.Internal.Utils (enumShowsPrec)
import OpenXR.Internal.Utils (traceAroundEvent)
import Control.Monad (unless)
import Control.Monad.IO.Class (liftIO)
import Foreign.Marshal.Alloc (allocaBytesAligned)
import GHC.Base (when)
import GHC.IO (throwIO)
import GHC.Ptr (nullFunPtr)
import Foreign.Ptr (nullPtr)
import Foreign.Ptr (plusPtr)
import GHC.Show (showsPrec)
import OpenXR.CStruct (FromCStruct)
import OpenXR.CStruct (FromCStruct(..))
import OpenXR.CStruct (ToCStruct)
import OpenXR.CStruct (ToCStruct(..))
import OpenXR.Zero (Zero)
import OpenXR.Zero (Zero(..))
import Control.Monad.IO.Class (MonadIO)
import Data.String (IsString)
import Data.Typeable (Typeable)
import Foreign.Storable (Storable)
import Foreign.Storable (Storable(peek))
import Foreign.Storable (Storable(poke))
import qualified Foreign.Storable (Storable(..))
import GHC.Generics (Generic)
import GHC.IO.Exception (IOErrorType(..))
import GHC.IO.Exception (IOException(..))
import Data.Int (Int32)
import Foreign.Ptr (FunPtr)
import Foreign.Ptr (Ptr)
import GHC.Read (Read(readPrec))
import GHC.Show (Show(showsPrec))
import Data.Kind (Type)
import OpenXR.Core10.OtherTypes (EventDataBaseHeader(..))
import OpenXR.Dynamic (InstanceCmds(pXrPerfSettingsSetPerformanceLevelEXT))
import OpenXR.Core10.OtherTypes (IsEventData(..))
import OpenXR.Exception (OpenXrException(..))
import OpenXR.Core10.Enums.Result (Result)
import OpenXR.Core10.Enums.Result (Result(..))
import OpenXR.Core10.Handles (Session)
import OpenXR.Core10.Handles (Session(..))
import OpenXR.Core10.Handles (Session_T)
import OpenXR.Core10.Enums.StructureType (StructureType)
import OpenXR.Core10.Enums.Result (Result(SUCCESS))
import OpenXR.Core10.Enums.StructureType (StructureType(TYPE_EVENT_DATA_PERF_SETTINGS_EXT))
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
  unsafe
#endif
  "dynamic" mkXrPerfSettingsSetPerformanceLevelEXT
  :: FunPtr (Ptr Session_T -> PerfSettingsDomainEXT -> PerfSettingsLevelEXT -> IO Result) -> Ptr Session_T -> PerfSettingsDomainEXT -> PerfSettingsLevelEXT -> IO Result

-- | xrPerfSettingsSetPerformanceLevelEXT -
-- xrPerfSettingsSetPerformanceLevelEXT
--
-- == Valid Usage (Implicit)
--
-- -   #VUID-xrPerfSettingsSetPerformanceLevelEXT-extension-notenabled# The
--     @@ extension /must/ be enabled prior to calling
--     'perfSettingsSetPerformanceLevelEXT'
--
-- -   #VUID-xrPerfSettingsSetPerformanceLevelEXT-session-parameter#
--     @session@ /must/ be a valid 'OpenXR.Core10.Handles.Session' handle
--
-- -   #VUID-xrPerfSettingsSetPerformanceLevelEXT-domain-parameter#
--     @domain@ /must/ be a valid 'PerfSettingsDomainEXT' value
--
-- -   #VUID-xrPerfSettingsSetPerformanceLevelEXT-level-parameter# @level@
--     /must/ be a valid 'PerfSettingsLevelEXT' value
--
-- == Return Codes
--
-- [<https://www.khronos.org/registry/OpenXR/specs/1.0/html/xrspec.html#fundamentals-successcodes Success>]
--
--     -   'OpenXR.Core10.Enums.Result.SUCCESS'
--
--     -   'OpenXR.Core10.Enums.Result.SESSION_LOSS_PENDING'
--
-- [<https://www.khronos.org/registry/OpenXR/specs/1.0/html/xrspec.html#fundamentals-errorcodes Failure>]
--
--     -   'OpenXR.Core10.Enums.Result.ERROR_SESSION_LOST'
--
--     -   'OpenXR.Core10.Enums.Result.ERROR_HANDLE_INVALID'
--
--     -   'OpenXR.Core10.Enums.Result.ERROR_VALIDATION_FAILURE'
--
--     -   'OpenXR.Core10.Enums.Result.ERROR_RUNTIME_FAILURE'
--
--     -   'OpenXR.Core10.Enums.Result.ERROR_FUNCTION_UNSUPPORTED'
--
-- = See Also
--
-- 'PerfSettingsDomainEXT', 'PerfSettingsLevelEXT',
-- 'OpenXR.Core10.Handles.Session'
perfSettingsSetPerformanceLevelEXT :: forall io
                                    . (MonadIO io)
                                   => -- | @session@ is a valid 'OpenXR.Core10.Handles.Session' handle.
                                      Session
                                   -> -- | @domain@: the processing domain for which the level hint is applied
                                      PerfSettingsDomainEXT
                                   -> -- | @level@: the level hint to be applied
                                      PerfSettingsLevelEXT
                                   -> io (Result)
perfSettingsSetPerformanceLevelEXT :: Session
-> PerfSettingsDomainEXT -> PerfSettingsLevelEXT -> io Result
perfSettingsSetPerformanceLevelEXT session :: Session
session domain :: PerfSettingsDomainEXT
domain level :: PerfSettingsLevelEXT
level = IO Result -> io Result
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Result -> io Result) -> IO Result -> io Result
forall a b. (a -> b) -> a -> b
$ do
  let xrPerfSettingsSetPerformanceLevelEXTPtr :: FunPtr
  (Ptr Session_T
   -> PerfSettingsDomainEXT -> PerfSettingsLevelEXT -> IO Result)
xrPerfSettingsSetPerformanceLevelEXTPtr = InstanceCmds
-> FunPtr
     (Ptr Session_T
      -> PerfSettingsDomainEXT -> PerfSettingsLevelEXT -> IO Result)
pXrPerfSettingsSetPerformanceLevelEXT (Session -> InstanceCmds
instanceCmds (Session
session :: Session))
  Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (FunPtr
  (Ptr Session_T
   -> PerfSettingsDomainEXT -> PerfSettingsLevelEXT -> IO Result)
xrPerfSettingsSetPerformanceLevelEXTPtr FunPtr
  (Ptr Session_T
   -> PerfSettingsDomainEXT -> PerfSettingsLevelEXT -> IO Result)
-> FunPtr
     (Ptr Session_T
      -> PerfSettingsDomainEXT -> PerfSettingsLevelEXT -> IO Result)
-> Bool
forall a. Eq a => a -> a -> Bool
/= FunPtr
  (Ptr Session_T
   -> PerfSettingsDomainEXT -> PerfSettingsLevelEXT -> IO Result)
forall a. FunPtr a
nullFunPtr) (IO () -> IO ()) -> IO () -> IO ()
forall a b. (a -> b) -> a -> b
$
    IOException -> IO ()
forall e a. Exception e => e -> IO a
throwIO (IOException -> IO ()) -> IOException -> IO ()
forall a b. (a -> b) -> a -> b
$ Maybe Handle
-> IOErrorType
-> String
-> String
-> Maybe CInt
-> Maybe String
-> IOException
IOError Maybe Handle
forall a. Maybe a
Nothing IOErrorType
InvalidArgument "" "The function pointer for xrPerfSettingsSetPerformanceLevelEXT is null" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
  let xrPerfSettingsSetPerformanceLevelEXT' :: Ptr Session_T
-> PerfSettingsDomainEXT -> PerfSettingsLevelEXT -> IO Result
xrPerfSettingsSetPerformanceLevelEXT' = FunPtr
  (Ptr Session_T
   -> PerfSettingsDomainEXT -> PerfSettingsLevelEXT -> IO Result)
-> Ptr Session_T
-> PerfSettingsDomainEXT
-> PerfSettingsLevelEXT
-> IO Result
mkXrPerfSettingsSetPerformanceLevelEXT FunPtr
  (Ptr Session_T
   -> PerfSettingsDomainEXT -> PerfSettingsLevelEXT -> IO Result)
xrPerfSettingsSetPerformanceLevelEXTPtr
  Result
r <- String -> IO Result -> IO Result
forall a. String -> IO a -> IO a
traceAroundEvent "xrPerfSettingsSetPerformanceLevelEXT" (Ptr Session_T
-> PerfSettingsDomainEXT -> PerfSettingsLevelEXT -> IO Result
xrPerfSettingsSetPerformanceLevelEXT' (Session -> Ptr Session_T
sessionHandle (Session
session)) (PerfSettingsDomainEXT
domain) (PerfSettingsLevelEXT
level))
  Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (Result
r Result -> Result -> Bool
forall a. Ord a => a -> a -> Bool
< Result
SUCCESS) (OpenXrException -> IO ()
forall e a. Exception e => e -> IO a
throwIO (Result -> OpenXrException
OpenXrException Result
r))
  Result -> IO Result
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Result -> IO Result) -> Result -> IO Result
forall a b. (a -> b) -> a -> b
$ (Result
r)


-- | XrEventDataPerfSettingsEXT - XrEventDataPerfSettingsEXT
--
-- == Valid Usage (Implicit)
--
-- -   #VUID-XrEventDataPerfSettingsEXT-extension-notenabled# The @@
--     extension /must/ be enabled prior to using
--     'EventDataPerfSettingsEXT'
--
-- -   #VUID-XrEventDataPerfSettingsEXT-type-type# @type@ /must/ be
--     'OpenXR.Core10.Enums.StructureType.TYPE_EVENT_DATA_PERF_SETTINGS_EXT'
--
-- -   #VUID-XrEventDataPerfSettingsEXT-next-next# @next@ /must/ be @NULL@
--     or a valid pointer to the
--     <https://www.khronos.org/registry/OpenXR/specs/1.0/html/xrspec.html#valid-usage-for-structure-pointer-chains next structure in a structure chain>
--
-- -   #VUID-XrEventDataPerfSettingsEXT-domain-parameter# @domain@ /must/
--     be a valid 'PerfSettingsDomainEXT' value
--
-- -   #VUID-XrEventDataPerfSettingsEXT-subDomain-parameter# @subDomain@
--     /must/ be a valid 'PerfSettingsSubDomainEXT' value
--
-- -   #VUID-XrEventDataPerfSettingsEXT-fromLevel-parameter# @fromLevel@
--     /must/ be a valid 'PerfSettingsNotificationLevelEXT' value
--
-- -   #VUID-XrEventDataPerfSettingsEXT-toLevel-parameter# @toLevel@ /must/
--     be a valid 'PerfSettingsNotificationLevelEXT' value
--
-- = See Also
--
-- 'PerfSettingsDomainEXT', 'PerfSettingsNotificationLevelEXT',
-- 'PerfSettingsSubDomainEXT',
-- 'OpenXR.Core10.Enums.StructureType.StructureType'
data EventDataPerfSettingsEXT = EventDataPerfSettingsEXT
  { -- | @domain@ : processing domain in which a threshold has been crossed
    EventDataPerfSettingsEXT -> PerfSettingsDomainEXT
domain :: PerfSettingsDomainEXT
  , -- | @subDomain@ : system area in which a threshold has been crossed
    EventDataPerfSettingsEXT -> PerfSettingsSubDomainEXT
subDomain :: PerfSettingsSubDomainEXT
  , -- | @fromLevel@ : enumerated notification level which has been exited
    EventDataPerfSettingsEXT -> PerfSettingsNotificationLevelEXT
fromLevel :: PerfSettingsNotificationLevelEXT
  , -- | @toLevel@ : enumerated notification level which has been entered
    EventDataPerfSettingsEXT -> PerfSettingsNotificationLevelEXT
toLevel :: PerfSettingsNotificationLevelEXT
  }
  deriving (Typeable, EventDataPerfSettingsEXT -> EventDataPerfSettingsEXT -> Bool
(EventDataPerfSettingsEXT -> EventDataPerfSettingsEXT -> Bool)
-> (EventDataPerfSettingsEXT -> EventDataPerfSettingsEXT -> Bool)
-> Eq EventDataPerfSettingsEXT
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: EventDataPerfSettingsEXT -> EventDataPerfSettingsEXT -> Bool
$c/= :: EventDataPerfSettingsEXT -> EventDataPerfSettingsEXT -> Bool
== :: EventDataPerfSettingsEXT -> EventDataPerfSettingsEXT -> Bool
$c== :: EventDataPerfSettingsEXT -> EventDataPerfSettingsEXT -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (EventDataPerfSettingsEXT)
#endif
deriving instance Show EventDataPerfSettingsEXT

instance IsEventData EventDataPerfSettingsEXT where
  toEventDataBaseHeader :: EventDataPerfSettingsEXT -> EventDataBaseHeader
toEventDataBaseHeader EventDataPerfSettingsEXT{} = $WEventDataBaseHeader :: StructureType -> EventDataBaseHeader
EventDataBaseHeader{$sel:type':EventDataBaseHeader :: StructureType
type' = StructureType
TYPE_EVENT_DATA_PERF_SETTINGS_EXT}

instance ToCStruct EventDataPerfSettingsEXT where
  withCStruct :: EventDataPerfSettingsEXT
-> (Ptr EventDataPerfSettingsEXT -> IO b) -> IO b
withCStruct x :: EventDataPerfSettingsEXT
x f :: Ptr EventDataPerfSettingsEXT -> IO b
f = Int -> Int -> (Ptr EventDataPerfSettingsEXT -> IO b) -> IO b
forall a b. Int -> Int -> (Ptr a -> IO b) -> IO b
allocaBytesAligned 32 8 ((Ptr EventDataPerfSettingsEXT -> IO b) -> IO b)
-> (Ptr EventDataPerfSettingsEXT -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \p :: Ptr EventDataPerfSettingsEXT
p -> Ptr EventDataPerfSettingsEXT
-> EventDataPerfSettingsEXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr EventDataPerfSettingsEXT
p EventDataPerfSettingsEXT
x (Ptr EventDataPerfSettingsEXT -> IO b
f Ptr EventDataPerfSettingsEXT
p)
  pokeCStruct :: Ptr EventDataPerfSettingsEXT
-> EventDataPerfSettingsEXT -> IO b -> IO b
pokeCStruct p :: Ptr EventDataPerfSettingsEXT
p EventDataPerfSettingsEXT{..} f :: IO b
f = do
    Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr EventDataPerfSettingsEXT
p Ptr EventDataPerfSettingsEXT -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 0 :: Ptr StructureType)) (StructureType
TYPE_EVENT_DATA_PERF_SETTINGS_EXT)
    Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr EventDataPerfSettingsEXT
p Ptr EventDataPerfSettingsEXT -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
    Ptr PerfSettingsDomainEXT -> PerfSettingsDomainEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr EventDataPerfSettingsEXT
p Ptr EventDataPerfSettingsEXT -> Int -> Ptr PerfSettingsDomainEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr PerfSettingsDomainEXT)) (PerfSettingsDomainEXT
domain)
    Ptr PerfSettingsSubDomainEXT -> PerfSettingsSubDomainEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr EventDataPerfSettingsEXT
p Ptr EventDataPerfSettingsEXT -> Int -> Ptr PerfSettingsSubDomainEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 20 :: Ptr PerfSettingsSubDomainEXT)) (PerfSettingsSubDomainEXT
subDomain)
    Ptr PerfSettingsNotificationLevelEXT
-> PerfSettingsNotificationLevelEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr EventDataPerfSettingsEXT
p Ptr EventDataPerfSettingsEXT
-> Int -> Ptr PerfSettingsNotificationLevelEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 24 :: Ptr PerfSettingsNotificationLevelEXT)) (PerfSettingsNotificationLevelEXT
fromLevel)
    Ptr PerfSettingsNotificationLevelEXT
-> PerfSettingsNotificationLevelEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr EventDataPerfSettingsEXT
p Ptr EventDataPerfSettingsEXT
-> Int -> Ptr PerfSettingsNotificationLevelEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 28 :: Ptr PerfSettingsNotificationLevelEXT)) (PerfSettingsNotificationLevelEXT
toLevel)
    IO b
f
  cStructSize :: Int
cStructSize = 32
  cStructAlignment :: Int
cStructAlignment = 8
  pokeZeroCStruct :: Ptr EventDataPerfSettingsEXT -> IO b -> IO b
pokeZeroCStruct p :: Ptr EventDataPerfSettingsEXT
p f :: IO b
f = do
    Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr EventDataPerfSettingsEXT
p Ptr EventDataPerfSettingsEXT -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 0 :: Ptr StructureType)) (StructureType
TYPE_EVENT_DATA_PERF_SETTINGS_EXT)
    Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr EventDataPerfSettingsEXT
p Ptr EventDataPerfSettingsEXT -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
    Ptr PerfSettingsDomainEXT -> PerfSettingsDomainEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr EventDataPerfSettingsEXT
p Ptr EventDataPerfSettingsEXT -> Int -> Ptr PerfSettingsDomainEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr PerfSettingsDomainEXT)) (PerfSettingsDomainEXT
forall a. Zero a => a
zero)
    Ptr PerfSettingsSubDomainEXT -> PerfSettingsSubDomainEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr EventDataPerfSettingsEXT
p Ptr EventDataPerfSettingsEXT -> Int -> Ptr PerfSettingsSubDomainEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 20 :: Ptr PerfSettingsSubDomainEXT)) (PerfSettingsSubDomainEXT
forall a. Zero a => a
zero)
    Ptr PerfSettingsNotificationLevelEXT
-> PerfSettingsNotificationLevelEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr EventDataPerfSettingsEXT
p Ptr EventDataPerfSettingsEXT
-> Int -> Ptr PerfSettingsNotificationLevelEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 24 :: Ptr PerfSettingsNotificationLevelEXT)) (PerfSettingsNotificationLevelEXT
forall a. Zero a => a
zero)
    Ptr PerfSettingsNotificationLevelEXT
-> PerfSettingsNotificationLevelEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr EventDataPerfSettingsEXT
p Ptr EventDataPerfSettingsEXT
-> Int -> Ptr PerfSettingsNotificationLevelEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 28 :: Ptr PerfSettingsNotificationLevelEXT)) (PerfSettingsNotificationLevelEXT
forall a. Zero a => a
zero)
    IO b
f

instance FromCStruct EventDataPerfSettingsEXT where
  peekCStruct :: Ptr EventDataPerfSettingsEXT -> IO EventDataPerfSettingsEXT
peekCStruct p :: Ptr EventDataPerfSettingsEXT
p = do
    PerfSettingsDomainEXT
domain <- Ptr PerfSettingsDomainEXT -> IO PerfSettingsDomainEXT
forall a. Storable a => Ptr a -> IO a
peek @PerfSettingsDomainEXT ((Ptr EventDataPerfSettingsEXT
p Ptr EventDataPerfSettingsEXT -> Int -> Ptr PerfSettingsDomainEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr PerfSettingsDomainEXT))
    PerfSettingsSubDomainEXT
subDomain <- Ptr PerfSettingsSubDomainEXT -> IO PerfSettingsSubDomainEXT
forall a. Storable a => Ptr a -> IO a
peek @PerfSettingsSubDomainEXT ((Ptr EventDataPerfSettingsEXT
p Ptr EventDataPerfSettingsEXT -> Int -> Ptr PerfSettingsSubDomainEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 20 :: Ptr PerfSettingsSubDomainEXT))
    PerfSettingsNotificationLevelEXT
fromLevel <- Ptr PerfSettingsNotificationLevelEXT
-> IO PerfSettingsNotificationLevelEXT
forall a. Storable a => Ptr a -> IO a
peek @PerfSettingsNotificationLevelEXT ((Ptr EventDataPerfSettingsEXT
p Ptr EventDataPerfSettingsEXT
-> Int -> Ptr PerfSettingsNotificationLevelEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 24 :: Ptr PerfSettingsNotificationLevelEXT))
    PerfSettingsNotificationLevelEXT
toLevel <- Ptr PerfSettingsNotificationLevelEXT
-> IO PerfSettingsNotificationLevelEXT
forall a. Storable a => Ptr a -> IO a
peek @PerfSettingsNotificationLevelEXT ((Ptr EventDataPerfSettingsEXT
p Ptr EventDataPerfSettingsEXT
-> Int -> Ptr PerfSettingsNotificationLevelEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 28 :: Ptr PerfSettingsNotificationLevelEXT))
    EventDataPerfSettingsEXT -> IO EventDataPerfSettingsEXT
forall (f :: * -> *) a. Applicative f => a -> f a
pure (EventDataPerfSettingsEXT -> IO EventDataPerfSettingsEXT)
-> EventDataPerfSettingsEXT -> IO EventDataPerfSettingsEXT
forall a b. (a -> b) -> a -> b
$ PerfSettingsDomainEXT
-> PerfSettingsSubDomainEXT
-> PerfSettingsNotificationLevelEXT
-> PerfSettingsNotificationLevelEXT
-> EventDataPerfSettingsEXT
EventDataPerfSettingsEXT
             PerfSettingsDomainEXT
domain PerfSettingsSubDomainEXT
subDomain PerfSettingsNotificationLevelEXT
fromLevel PerfSettingsNotificationLevelEXT
toLevel

instance Storable EventDataPerfSettingsEXT where
  sizeOf :: EventDataPerfSettingsEXT -> Int
sizeOf ~EventDataPerfSettingsEXT
_ = 32
  alignment :: EventDataPerfSettingsEXT -> Int
alignment ~EventDataPerfSettingsEXT
_ = 8
  peek :: Ptr EventDataPerfSettingsEXT -> IO EventDataPerfSettingsEXT
peek = Ptr EventDataPerfSettingsEXT -> IO EventDataPerfSettingsEXT
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
  poke :: Ptr EventDataPerfSettingsEXT -> EventDataPerfSettingsEXT -> IO ()
poke ptr :: Ptr EventDataPerfSettingsEXT
ptr poked :: EventDataPerfSettingsEXT
poked = Ptr EventDataPerfSettingsEXT
-> EventDataPerfSettingsEXT -> IO () -> IO ()
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr EventDataPerfSettingsEXT
ptr EventDataPerfSettingsEXT
poked (() -> IO ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())

instance Zero EventDataPerfSettingsEXT where
  zero :: EventDataPerfSettingsEXT
zero = PerfSettingsDomainEXT
-> PerfSettingsSubDomainEXT
-> PerfSettingsNotificationLevelEXT
-> PerfSettingsNotificationLevelEXT
-> EventDataPerfSettingsEXT
EventDataPerfSettingsEXT
           PerfSettingsDomainEXT
forall a. Zero a => a
zero
           PerfSettingsSubDomainEXT
forall a. Zero a => a
zero
           PerfSettingsNotificationLevelEXT
forall a. Zero a => a
zero
           PerfSettingsNotificationLevelEXT
forall a. Zero a => a
zero


-- | XrPerfSettingsLevelEXT - XrPerfSettingsLevelEXT
--
-- = See Also
--
-- 'perfSettingsSetPerformanceLevelEXT'
newtype PerfSettingsLevelEXT = PerfSettingsLevelEXT Int32
  deriving newtype (PerfSettingsLevelEXT -> PerfSettingsLevelEXT -> Bool
(PerfSettingsLevelEXT -> PerfSettingsLevelEXT -> Bool)
-> (PerfSettingsLevelEXT -> PerfSettingsLevelEXT -> Bool)
-> Eq PerfSettingsLevelEXT
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PerfSettingsLevelEXT -> PerfSettingsLevelEXT -> Bool
$c/= :: PerfSettingsLevelEXT -> PerfSettingsLevelEXT -> Bool
== :: PerfSettingsLevelEXT -> PerfSettingsLevelEXT -> Bool
$c== :: PerfSettingsLevelEXT -> PerfSettingsLevelEXT -> Bool
Eq, Eq PerfSettingsLevelEXT
Eq PerfSettingsLevelEXT =>
(PerfSettingsLevelEXT -> PerfSettingsLevelEXT -> Ordering)
-> (PerfSettingsLevelEXT -> PerfSettingsLevelEXT -> Bool)
-> (PerfSettingsLevelEXT -> PerfSettingsLevelEXT -> Bool)
-> (PerfSettingsLevelEXT -> PerfSettingsLevelEXT -> Bool)
-> (PerfSettingsLevelEXT -> PerfSettingsLevelEXT -> Bool)
-> (PerfSettingsLevelEXT
    -> PerfSettingsLevelEXT -> PerfSettingsLevelEXT)
-> (PerfSettingsLevelEXT
    -> PerfSettingsLevelEXT -> PerfSettingsLevelEXT)
-> Ord PerfSettingsLevelEXT
PerfSettingsLevelEXT -> PerfSettingsLevelEXT -> Bool
PerfSettingsLevelEXT -> PerfSettingsLevelEXT -> Ordering
PerfSettingsLevelEXT
-> PerfSettingsLevelEXT -> PerfSettingsLevelEXT
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 :: PerfSettingsLevelEXT
-> PerfSettingsLevelEXT -> PerfSettingsLevelEXT
$cmin :: PerfSettingsLevelEXT
-> PerfSettingsLevelEXT -> PerfSettingsLevelEXT
max :: PerfSettingsLevelEXT
-> PerfSettingsLevelEXT -> PerfSettingsLevelEXT
$cmax :: PerfSettingsLevelEXT
-> PerfSettingsLevelEXT -> PerfSettingsLevelEXT
>= :: PerfSettingsLevelEXT -> PerfSettingsLevelEXT -> Bool
$c>= :: PerfSettingsLevelEXT -> PerfSettingsLevelEXT -> Bool
> :: PerfSettingsLevelEXT -> PerfSettingsLevelEXT -> Bool
$c> :: PerfSettingsLevelEXT -> PerfSettingsLevelEXT -> Bool
<= :: PerfSettingsLevelEXT -> PerfSettingsLevelEXT -> Bool
$c<= :: PerfSettingsLevelEXT -> PerfSettingsLevelEXT -> Bool
< :: PerfSettingsLevelEXT -> PerfSettingsLevelEXT -> Bool
$c< :: PerfSettingsLevelEXT -> PerfSettingsLevelEXT -> Bool
compare :: PerfSettingsLevelEXT -> PerfSettingsLevelEXT -> Ordering
$ccompare :: PerfSettingsLevelEXT -> PerfSettingsLevelEXT -> Ordering
$cp1Ord :: Eq PerfSettingsLevelEXT
Ord, Ptr b -> Int -> IO PerfSettingsLevelEXT
Ptr b -> Int -> PerfSettingsLevelEXT -> IO ()
Ptr PerfSettingsLevelEXT -> IO PerfSettingsLevelEXT
Ptr PerfSettingsLevelEXT -> Int -> IO PerfSettingsLevelEXT
Ptr PerfSettingsLevelEXT -> Int -> PerfSettingsLevelEXT -> IO ()
Ptr PerfSettingsLevelEXT -> PerfSettingsLevelEXT -> IO ()
PerfSettingsLevelEXT -> Int
(PerfSettingsLevelEXT -> Int)
-> (PerfSettingsLevelEXT -> Int)
-> (Ptr PerfSettingsLevelEXT -> Int -> IO PerfSettingsLevelEXT)
-> (Ptr PerfSettingsLevelEXT
    -> Int -> PerfSettingsLevelEXT -> IO ())
-> (forall b. Ptr b -> Int -> IO PerfSettingsLevelEXT)
-> (forall b. Ptr b -> Int -> PerfSettingsLevelEXT -> IO ())
-> (Ptr PerfSettingsLevelEXT -> IO PerfSettingsLevelEXT)
-> (Ptr PerfSettingsLevelEXT -> PerfSettingsLevelEXT -> IO ())
-> Storable PerfSettingsLevelEXT
forall b. Ptr b -> Int -> IO PerfSettingsLevelEXT
forall b. Ptr b -> Int -> PerfSettingsLevelEXT -> 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 PerfSettingsLevelEXT -> PerfSettingsLevelEXT -> IO ()
$cpoke :: Ptr PerfSettingsLevelEXT -> PerfSettingsLevelEXT -> IO ()
peek :: Ptr PerfSettingsLevelEXT -> IO PerfSettingsLevelEXT
$cpeek :: Ptr PerfSettingsLevelEXT -> IO PerfSettingsLevelEXT
pokeByteOff :: Ptr b -> Int -> PerfSettingsLevelEXT -> IO ()
$cpokeByteOff :: forall b. Ptr b -> Int -> PerfSettingsLevelEXT -> IO ()
peekByteOff :: Ptr b -> Int -> IO PerfSettingsLevelEXT
$cpeekByteOff :: forall b. Ptr b -> Int -> IO PerfSettingsLevelEXT
pokeElemOff :: Ptr PerfSettingsLevelEXT -> Int -> PerfSettingsLevelEXT -> IO ()
$cpokeElemOff :: Ptr PerfSettingsLevelEXT -> Int -> PerfSettingsLevelEXT -> IO ()
peekElemOff :: Ptr PerfSettingsLevelEXT -> Int -> IO PerfSettingsLevelEXT
$cpeekElemOff :: Ptr PerfSettingsLevelEXT -> Int -> IO PerfSettingsLevelEXT
alignment :: PerfSettingsLevelEXT -> Int
$calignment :: PerfSettingsLevelEXT -> Int
sizeOf :: PerfSettingsLevelEXT -> Int
$csizeOf :: PerfSettingsLevelEXT -> Int
Storable, PerfSettingsLevelEXT
PerfSettingsLevelEXT -> Zero PerfSettingsLevelEXT
forall a. a -> Zero a
zero :: PerfSettingsLevelEXT
$czero :: PerfSettingsLevelEXT
Zero)

-- No documentation found for Nested "XrPerfSettingsLevelEXT" "XR_PERF_SETTINGS_LEVEL_POWER_SAVINGS_EXT"
pattern $bPERF_SETTINGS_LEVEL_POWER_SAVINGS_EXT :: PerfSettingsLevelEXT
$mPERF_SETTINGS_LEVEL_POWER_SAVINGS_EXT :: forall r. PerfSettingsLevelEXT -> (Void# -> r) -> (Void# -> r) -> r
PERF_SETTINGS_LEVEL_POWER_SAVINGS_EXT  = PerfSettingsLevelEXT 0
-- No documentation found for Nested "XrPerfSettingsLevelEXT" "XR_PERF_SETTINGS_LEVEL_SUSTAINED_LOW_EXT"
pattern $bPERF_SETTINGS_LEVEL_SUSTAINED_LOW_EXT :: PerfSettingsLevelEXT
$mPERF_SETTINGS_LEVEL_SUSTAINED_LOW_EXT :: forall r. PerfSettingsLevelEXT -> (Void# -> r) -> (Void# -> r) -> r
PERF_SETTINGS_LEVEL_SUSTAINED_LOW_EXT  = PerfSettingsLevelEXT 25
-- No documentation found for Nested "XrPerfSettingsLevelEXT" "XR_PERF_SETTINGS_LEVEL_SUSTAINED_HIGH_EXT"
pattern $bPERF_SETTINGS_LEVEL_SUSTAINED_HIGH_EXT :: PerfSettingsLevelEXT
$mPERF_SETTINGS_LEVEL_SUSTAINED_HIGH_EXT :: forall r. PerfSettingsLevelEXT -> (Void# -> r) -> (Void# -> r) -> r
PERF_SETTINGS_LEVEL_SUSTAINED_HIGH_EXT = PerfSettingsLevelEXT 50
-- No documentation found for Nested "XrPerfSettingsLevelEXT" "XR_PERF_SETTINGS_LEVEL_BOOST_EXT"
pattern $bPERF_SETTINGS_LEVEL_BOOST_EXT :: PerfSettingsLevelEXT
$mPERF_SETTINGS_LEVEL_BOOST_EXT :: forall r. PerfSettingsLevelEXT -> (Void# -> r) -> (Void# -> r) -> r
PERF_SETTINGS_LEVEL_BOOST_EXT          = PerfSettingsLevelEXT 75
{-# complete PERF_SETTINGS_LEVEL_POWER_SAVINGS_EXT,
             PERF_SETTINGS_LEVEL_SUSTAINED_LOW_EXT,
             PERF_SETTINGS_LEVEL_SUSTAINED_HIGH_EXT,
             PERF_SETTINGS_LEVEL_BOOST_EXT :: PerfSettingsLevelEXT #-}

conNamePerfSettingsLevelEXT :: String
conNamePerfSettingsLevelEXT :: String
conNamePerfSettingsLevelEXT = "PerfSettingsLevelEXT"

enumPrefixPerfSettingsLevelEXT :: String
enumPrefixPerfSettingsLevelEXT :: String
enumPrefixPerfSettingsLevelEXT = "PERF_SETTINGS_LEVEL_"

showTablePerfSettingsLevelEXT :: [(PerfSettingsLevelEXT, String)]
showTablePerfSettingsLevelEXT :: [(PerfSettingsLevelEXT, String)]
showTablePerfSettingsLevelEXT =
  [ (PerfSettingsLevelEXT
PERF_SETTINGS_LEVEL_POWER_SAVINGS_EXT , "POWER_SAVINGS_EXT")
  , (PerfSettingsLevelEXT
PERF_SETTINGS_LEVEL_SUSTAINED_LOW_EXT , "SUSTAINED_LOW_EXT")
  , (PerfSettingsLevelEXT
PERF_SETTINGS_LEVEL_SUSTAINED_HIGH_EXT, "SUSTAINED_HIGH_EXT")
  , (PerfSettingsLevelEXT
PERF_SETTINGS_LEVEL_BOOST_EXT         , "BOOST_EXT")
  ]

instance Show PerfSettingsLevelEXT where
  showsPrec :: Int -> PerfSettingsLevelEXT -> ShowS
showsPrec = String
-> [(PerfSettingsLevelEXT, String)]
-> String
-> (PerfSettingsLevelEXT -> Int32)
-> (Int32 -> ShowS)
-> Int
-> PerfSettingsLevelEXT
-> ShowS
forall a i.
Eq a =>
String
-> [(a, String)]
-> String
-> (a -> i)
-> (i -> ShowS)
-> Int
-> a
-> ShowS
enumShowsPrec String
enumPrefixPerfSettingsLevelEXT
                            [(PerfSettingsLevelEXT, String)]
showTablePerfSettingsLevelEXT
                            String
conNamePerfSettingsLevelEXT
                            (\(PerfSettingsLevelEXT x :: Int32
x) -> Int32
x)
                            (Int -> Int32 -> ShowS
forall a. Show a => Int -> a -> ShowS
showsPrec 11)

instance Read PerfSettingsLevelEXT where
  readPrec :: ReadPrec PerfSettingsLevelEXT
readPrec = String
-> [(PerfSettingsLevelEXT, String)]
-> String
-> (Int32 -> PerfSettingsLevelEXT)
-> ReadPrec PerfSettingsLevelEXT
forall i a.
Read i =>
String -> [(a, String)] -> String -> (i -> a) -> ReadPrec a
enumReadPrec String
enumPrefixPerfSettingsLevelEXT
                          [(PerfSettingsLevelEXT, String)]
showTablePerfSettingsLevelEXT
                          String
conNamePerfSettingsLevelEXT
                          Int32 -> PerfSettingsLevelEXT
PerfSettingsLevelEXT


-- | XrPerfSettingsDomainEXT - XrPerfSettingsDomainEXT
--
-- = See Also
--
-- 'EventDataPerfSettingsEXT', 'perfSettingsSetPerformanceLevelEXT',
-- 'OpenXR.Extensions.XR_EXT_thermal_query.thermalGetTemperatureTrendEXT'
newtype PerfSettingsDomainEXT = PerfSettingsDomainEXT Int32
  deriving newtype (PerfSettingsDomainEXT -> PerfSettingsDomainEXT -> Bool
(PerfSettingsDomainEXT -> PerfSettingsDomainEXT -> Bool)
-> (PerfSettingsDomainEXT -> PerfSettingsDomainEXT -> Bool)
-> Eq PerfSettingsDomainEXT
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PerfSettingsDomainEXT -> PerfSettingsDomainEXT -> Bool
$c/= :: PerfSettingsDomainEXT -> PerfSettingsDomainEXT -> Bool
== :: PerfSettingsDomainEXT -> PerfSettingsDomainEXT -> Bool
$c== :: PerfSettingsDomainEXT -> PerfSettingsDomainEXT -> Bool
Eq, Eq PerfSettingsDomainEXT
Eq PerfSettingsDomainEXT =>
(PerfSettingsDomainEXT -> PerfSettingsDomainEXT -> Ordering)
-> (PerfSettingsDomainEXT -> PerfSettingsDomainEXT -> Bool)
-> (PerfSettingsDomainEXT -> PerfSettingsDomainEXT -> Bool)
-> (PerfSettingsDomainEXT -> PerfSettingsDomainEXT -> Bool)
-> (PerfSettingsDomainEXT -> PerfSettingsDomainEXT -> Bool)
-> (PerfSettingsDomainEXT
    -> PerfSettingsDomainEXT -> PerfSettingsDomainEXT)
-> (PerfSettingsDomainEXT
    -> PerfSettingsDomainEXT -> PerfSettingsDomainEXT)
-> Ord PerfSettingsDomainEXT
PerfSettingsDomainEXT -> PerfSettingsDomainEXT -> Bool
PerfSettingsDomainEXT -> PerfSettingsDomainEXT -> Ordering
PerfSettingsDomainEXT
-> PerfSettingsDomainEXT -> PerfSettingsDomainEXT
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 :: PerfSettingsDomainEXT
-> PerfSettingsDomainEXT -> PerfSettingsDomainEXT
$cmin :: PerfSettingsDomainEXT
-> PerfSettingsDomainEXT -> PerfSettingsDomainEXT
max :: PerfSettingsDomainEXT
-> PerfSettingsDomainEXT -> PerfSettingsDomainEXT
$cmax :: PerfSettingsDomainEXT
-> PerfSettingsDomainEXT -> PerfSettingsDomainEXT
>= :: PerfSettingsDomainEXT -> PerfSettingsDomainEXT -> Bool
$c>= :: PerfSettingsDomainEXT -> PerfSettingsDomainEXT -> Bool
> :: PerfSettingsDomainEXT -> PerfSettingsDomainEXT -> Bool
$c> :: PerfSettingsDomainEXT -> PerfSettingsDomainEXT -> Bool
<= :: PerfSettingsDomainEXT -> PerfSettingsDomainEXT -> Bool
$c<= :: PerfSettingsDomainEXT -> PerfSettingsDomainEXT -> Bool
< :: PerfSettingsDomainEXT -> PerfSettingsDomainEXT -> Bool
$c< :: PerfSettingsDomainEXT -> PerfSettingsDomainEXT -> Bool
compare :: PerfSettingsDomainEXT -> PerfSettingsDomainEXT -> Ordering
$ccompare :: PerfSettingsDomainEXT -> PerfSettingsDomainEXT -> Ordering
$cp1Ord :: Eq PerfSettingsDomainEXT
Ord, Ptr b -> Int -> IO PerfSettingsDomainEXT
Ptr b -> Int -> PerfSettingsDomainEXT -> IO ()
Ptr PerfSettingsDomainEXT -> IO PerfSettingsDomainEXT
Ptr PerfSettingsDomainEXT -> Int -> IO PerfSettingsDomainEXT
Ptr PerfSettingsDomainEXT -> Int -> PerfSettingsDomainEXT -> IO ()
Ptr PerfSettingsDomainEXT -> PerfSettingsDomainEXT -> IO ()
PerfSettingsDomainEXT -> Int
(PerfSettingsDomainEXT -> Int)
-> (PerfSettingsDomainEXT -> Int)
-> (Ptr PerfSettingsDomainEXT -> Int -> IO PerfSettingsDomainEXT)
-> (Ptr PerfSettingsDomainEXT
    -> Int -> PerfSettingsDomainEXT -> IO ())
-> (forall b. Ptr b -> Int -> IO PerfSettingsDomainEXT)
-> (forall b. Ptr b -> Int -> PerfSettingsDomainEXT -> IO ())
-> (Ptr PerfSettingsDomainEXT -> IO PerfSettingsDomainEXT)
-> (Ptr PerfSettingsDomainEXT -> PerfSettingsDomainEXT -> IO ())
-> Storable PerfSettingsDomainEXT
forall b. Ptr b -> Int -> IO PerfSettingsDomainEXT
forall b. Ptr b -> Int -> PerfSettingsDomainEXT -> 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 PerfSettingsDomainEXT -> PerfSettingsDomainEXT -> IO ()
$cpoke :: Ptr PerfSettingsDomainEXT -> PerfSettingsDomainEXT -> IO ()
peek :: Ptr PerfSettingsDomainEXT -> IO PerfSettingsDomainEXT
$cpeek :: Ptr PerfSettingsDomainEXT -> IO PerfSettingsDomainEXT
pokeByteOff :: Ptr b -> Int -> PerfSettingsDomainEXT -> IO ()
$cpokeByteOff :: forall b. Ptr b -> Int -> PerfSettingsDomainEXT -> IO ()
peekByteOff :: Ptr b -> Int -> IO PerfSettingsDomainEXT
$cpeekByteOff :: forall b. Ptr b -> Int -> IO PerfSettingsDomainEXT
pokeElemOff :: Ptr PerfSettingsDomainEXT -> Int -> PerfSettingsDomainEXT -> IO ()
$cpokeElemOff :: Ptr PerfSettingsDomainEXT -> Int -> PerfSettingsDomainEXT -> IO ()
peekElemOff :: Ptr PerfSettingsDomainEXT -> Int -> IO PerfSettingsDomainEXT
$cpeekElemOff :: Ptr PerfSettingsDomainEXT -> Int -> IO PerfSettingsDomainEXT
alignment :: PerfSettingsDomainEXT -> Int
$calignment :: PerfSettingsDomainEXT -> Int
sizeOf :: PerfSettingsDomainEXT -> Int
$csizeOf :: PerfSettingsDomainEXT -> Int
Storable, PerfSettingsDomainEXT
PerfSettingsDomainEXT -> Zero PerfSettingsDomainEXT
forall a. a -> Zero a
zero :: PerfSettingsDomainEXT
$czero :: PerfSettingsDomainEXT
Zero)
-- Note that the zero instance does not produce a valid value, passing 'zero' to Vulkan will result in an error

-- No documentation found for Nested "XrPerfSettingsDomainEXT" "XR_PERF_SETTINGS_DOMAIN_CPU_EXT"
pattern $bPERF_SETTINGS_DOMAIN_CPU_EXT :: PerfSettingsDomainEXT
$mPERF_SETTINGS_DOMAIN_CPU_EXT :: forall r.
PerfSettingsDomainEXT -> (Void# -> r) -> (Void# -> r) -> r
PERF_SETTINGS_DOMAIN_CPU_EXT = PerfSettingsDomainEXT 1
-- No documentation found for Nested "XrPerfSettingsDomainEXT" "XR_PERF_SETTINGS_DOMAIN_GPU_EXT"
pattern $bPERF_SETTINGS_DOMAIN_GPU_EXT :: PerfSettingsDomainEXT
$mPERF_SETTINGS_DOMAIN_GPU_EXT :: forall r.
PerfSettingsDomainEXT -> (Void# -> r) -> (Void# -> r) -> r
PERF_SETTINGS_DOMAIN_GPU_EXT = PerfSettingsDomainEXT 2
{-# complete PERF_SETTINGS_DOMAIN_CPU_EXT,
             PERF_SETTINGS_DOMAIN_GPU_EXT :: PerfSettingsDomainEXT #-}

conNamePerfSettingsDomainEXT :: String
conNamePerfSettingsDomainEXT :: String
conNamePerfSettingsDomainEXT = "PerfSettingsDomainEXT"

enumPrefixPerfSettingsDomainEXT :: String
enumPrefixPerfSettingsDomainEXT :: String
enumPrefixPerfSettingsDomainEXT = "PERF_SETTINGS_DOMAIN_"

showTablePerfSettingsDomainEXT :: [(PerfSettingsDomainEXT, String)]
showTablePerfSettingsDomainEXT :: [(PerfSettingsDomainEXT, String)]
showTablePerfSettingsDomainEXT = [(PerfSettingsDomainEXT
PERF_SETTINGS_DOMAIN_CPU_EXT, "CPU_EXT"), (PerfSettingsDomainEXT
PERF_SETTINGS_DOMAIN_GPU_EXT, "GPU_EXT")]

instance Show PerfSettingsDomainEXT where
  showsPrec :: Int -> PerfSettingsDomainEXT -> ShowS
showsPrec = String
-> [(PerfSettingsDomainEXT, String)]
-> String
-> (PerfSettingsDomainEXT -> Int32)
-> (Int32 -> ShowS)
-> Int
-> PerfSettingsDomainEXT
-> ShowS
forall a i.
Eq a =>
String
-> [(a, String)]
-> String
-> (a -> i)
-> (i -> ShowS)
-> Int
-> a
-> ShowS
enumShowsPrec String
enumPrefixPerfSettingsDomainEXT
                            [(PerfSettingsDomainEXT, String)]
showTablePerfSettingsDomainEXT
                            String
conNamePerfSettingsDomainEXT
                            (\(PerfSettingsDomainEXT x :: Int32
x) -> Int32
x)
                            (Int -> Int32 -> ShowS
forall a. Show a => Int -> a -> ShowS
showsPrec 11)

instance Read PerfSettingsDomainEXT where
  readPrec :: ReadPrec PerfSettingsDomainEXT
readPrec = String
-> [(PerfSettingsDomainEXT, String)]
-> String
-> (Int32 -> PerfSettingsDomainEXT)
-> ReadPrec PerfSettingsDomainEXT
forall i a.
Read i =>
String -> [(a, String)] -> String -> (i -> a) -> ReadPrec a
enumReadPrec String
enumPrefixPerfSettingsDomainEXT
                          [(PerfSettingsDomainEXT, String)]
showTablePerfSettingsDomainEXT
                          String
conNamePerfSettingsDomainEXT
                          Int32 -> PerfSettingsDomainEXT
PerfSettingsDomainEXT


-- | XrPerfSettingsSubDomainEXT - XrPerfSettingsSubDomainEXT
--
-- = See Also
--
-- 'EventDataPerfSettingsEXT'
newtype PerfSettingsSubDomainEXT = PerfSettingsSubDomainEXT Int32
  deriving newtype (PerfSettingsSubDomainEXT -> PerfSettingsSubDomainEXT -> Bool
(PerfSettingsSubDomainEXT -> PerfSettingsSubDomainEXT -> Bool)
-> (PerfSettingsSubDomainEXT -> PerfSettingsSubDomainEXT -> Bool)
-> Eq PerfSettingsSubDomainEXT
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PerfSettingsSubDomainEXT -> PerfSettingsSubDomainEXT -> Bool
$c/= :: PerfSettingsSubDomainEXT -> PerfSettingsSubDomainEXT -> Bool
== :: PerfSettingsSubDomainEXT -> PerfSettingsSubDomainEXT -> Bool
$c== :: PerfSettingsSubDomainEXT -> PerfSettingsSubDomainEXT -> Bool
Eq, Eq PerfSettingsSubDomainEXT
Eq PerfSettingsSubDomainEXT =>
(PerfSettingsSubDomainEXT -> PerfSettingsSubDomainEXT -> Ordering)
-> (PerfSettingsSubDomainEXT -> PerfSettingsSubDomainEXT -> Bool)
-> (PerfSettingsSubDomainEXT -> PerfSettingsSubDomainEXT -> Bool)
-> (PerfSettingsSubDomainEXT -> PerfSettingsSubDomainEXT -> Bool)
-> (PerfSettingsSubDomainEXT -> PerfSettingsSubDomainEXT -> Bool)
-> (PerfSettingsSubDomainEXT
    -> PerfSettingsSubDomainEXT -> PerfSettingsSubDomainEXT)
-> (PerfSettingsSubDomainEXT
    -> PerfSettingsSubDomainEXT -> PerfSettingsSubDomainEXT)
-> Ord PerfSettingsSubDomainEXT
PerfSettingsSubDomainEXT -> PerfSettingsSubDomainEXT -> Bool
PerfSettingsSubDomainEXT -> PerfSettingsSubDomainEXT -> Ordering
PerfSettingsSubDomainEXT
-> PerfSettingsSubDomainEXT -> PerfSettingsSubDomainEXT
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 :: PerfSettingsSubDomainEXT
-> PerfSettingsSubDomainEXT -> PerfSettingsSubDomainEXT
$cmin :: PerfSettingsSubDomainEXT
-> PerfSettingsSubDomainEXT -> PerfSettingsSubDomainEXT
max :: PerfSettingsSubDomainEXT
-> PerfSettingsSubDomainEXT -> PerfSettingsSubDomainEXT
$cmax :: PerfSettingsSubDomainEXT
-> PerfSettingsSubDomainEXT -> PerfSettingsSubDomainEXT
>= :: PerfSettingsSubDomainEXT -> PerfSettingsSubDomainEXT -> Bool
$c>= :: PerfSettingsSubDomainEXT -> PerfSettingsSubDomainEXT -> Bool
> :: PerfSettingsSubDomainEXT -> PerfSettingsSubDomainEXT -> Bool
$c> :: PerfSettingsSubDomainEXT -> PerfSettingsSubDomainEXT -> Bool
<= :: PerfSettingsSubDomainEXT -> PerfSettingsSubDomainEXT -> Bool
$c<= :: PerfSettingsSubDomainEXT -> PerfSettingsSubDomainEXT -> Bool
< :: PerfSettingsSubDomainEXT -> PerfSettingsSubDomainEXT -> Bool
$c< :: PerfSettingsSubDomainEXT -> PerfSettingsSubDomainEXT -> Bool
compare :: PerfSettingsSubDomainEXT -> PerfSettingsSubDomainEXT -> Ordering
$ccompare :: PerfSettingsSubDomainEXT -> PerfSettingsSubDomainEXT -> Ordering
$cp1Ord :: Eq PerfSettingsSubDomainEXT
Ord, Ptr b -> Int -> IO PerfSettingsSubDomainEXT
Ptr b -> Int -> PerfSettingsSubDomainEXT -> IO ()
Ptr PerfSettingsSubDomainEXT -> IO PerfSettingsSubDomainEXT
Ptr PerfSettingsSubDomainEXT -> Int -> IO PerfSettingsSubDomainEXT
Ptr PerfSettingsSubDomainEXT
-> Int -> PerfSettingsSubDomainEXT -> IO ()
Ptr PerfSettingsSubDomainEXT -> PerfSettingsSubDomainEXT -> IO ()
PerfSettingsSubDomainEXT -> Int
(PerfSettingsSubDomainEXT -> Int)
-> (PerfSettingsSubDomainEXT -> Int)
-> (Ptr PerfSettingsSubDomainEXT
    -> Int -> IO PerfSettingsSubDomainEXT)
-> (Ptr PerfSettingsSubDomainEXT
    -> Int -> PerfSettingsSubDomainEXT -> IO ())
-> (forall b. Ptr b -> Int -> IO PerfSettingsSubDomainEXT)
-> (forall b. Ptr b -> Int -> PerfSettingsSubDomainEXT -> IO ())
-> (Ptr PerfSettingsSubDomainEXT -> IO PerfSettingsSubDomainEXT)
-> (Ptr PerfSettingsSubDomainEXT
    -> PerfSettingsSubDomainEXT -> IO ())
-> Storable PerfSettingsSubDomainEXT
forall b. Ptr b -> Int -> IO PerfSettingsSubDomainEXT
forall b. Ptr b -> Int -> PerfSettingsSubDomainEXT -> 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 PerfSettingsSubDomainEXT -> PerfSettingsSubDomainEXT -> IO ()
$cpoke :: Ptr PerfSettingsSubDomainEXT -> PerfSettingsSubDomainEXT -> IO ()
peek :: Ptr PerfSettingsSubDomainEXT -> IO PerfSettingsSubDomainEXT
$cpeek :: Ptr PerfSettingsSubDomainEXT -> IO PerfSettingsSubDomainEXT
pokeByteOff :: Ptr b -> Int -> PerfSettingsSubDomainEXT -> IO ()
$cpokeByteOff :: forall b. Ptr b -> Int -> PerfSettingsSubDomainEXT -> IO ()
peekByteOff :: Ptr b -> Int -> IO PerfSettingsSubDomainEXT
$cpeekByteOff :: forall b. Ptr b -> Int -> IO PerfSettingsSubDomainEXT
pokeElemOff :: Ptr PerfSettingsSubDomainEXT
-> Int -> PerfSettingsSubDomainEXT -> IO ()
$cpokeElemOff :: Ptr PerfSettingsSubDomainEXT
-> Int -> PerfSettingsSubDomainEXT -> IO ()
peekElemOff :: Ptr PerfSettingsSubDomainEXT -> Int -> IO PerfSettingsSubDomainEXT
$cpeekElemOff :: Ptr PerfSettingsSubDomainEXT -> Int -> IO PerfSettingsSubDomainEXT
alignment :: PerfSettingsSubDomainEXT -> Int
$calignment :: PerfSettingsSubDomainEXT -> Int
sizeOf :: PerfSettingsSubDomainEXT -> Int
$csizeOf :: PerfSettingsSubDomainEXT -> Int
Storable, PerfSettingsSubDomainEXT
PerfSettingsSubDomainEXT -> Zero PerfSettingsSubDomainEXT
forall a. a -> Zero a
zero :: PerfSettingsSubDomainEXT
$czero :: PerfSettingsSubDomainEXT
Zero)
-- Note that the zero instance does not produce a valid value, passing 'zero' to Vulkan will result in an error

-- No documentation found for Nested "XrPerfSettingsSubDomainEXT" "XR_PERF_SETTINGS_SUB_DOMAIN_COMPOSITING_EXT"
pattern $bPERF_SETTINGS_SUB_DOMAIN_COMPOSITING_EXT :: PerfSettingsSubDomainEXT
$mPERF_SETTINGS_SUB_DOMAIN_COMPOSITING_EXT :: forall r.
PerfSettingsSubDomainEXT -> (Void# -> r) -> (Void# -> r) -> r
PERF_SETTINGS_SUB_DOMAIN_COMPOSITING_EXT = PerfSettingsSubDomainEXT 1
-- No documentation found for Nested "XrPerfSettingsSubDomainEXT" "XR_PERF_SETTINGS_SUB_DOMAIN_RENDERING_EXT"
pattern $bPERF_SETTINGS_SUB_DOMAIN_RENDERING_EXT :: PerfSettingsSubDomainEXT
$mPERF_SETTINGS_SUB_DOMAIN_RENDERING_EXT :: forall r.
PerfSettingsSubDomainEXT -> (Void# -> r) -> (Void# -> r) -> r
PERF_SETTINGS_SUB_DOMAIN_RENDERING_EXT   = PerfSettingsSubDomainEXT 2
-- No documentation found for Nested "XrPerfSettingsSubDomainEXT" "XR_PERF_SETTINGS_SUB_DOMAIN_THERMAL_EXT"
pattern $bPERF_SETTINGS_SUB_DOMAIN_THERMAL_EXT :: PerfSettingsSubDomainEXT
$mPERF_SETTINGS_SUB_DOMAIN_THERMAL_EXT :: forall r.
PerfSettingsSubDomainEXT -> (Void# -> r) -> (Void# -> r) -> r
PERF_SETTINGS_SUB_DOMAIN_THERMAL_EXT     = PerfSettingsSubDomainEXT 3
{-# complete PERF_SETTINGS_SUB_DOMAIN_COMPOSITING_EXT,
             PERF_SETTINGS_SUB_DOMAIN_RENDERING_EXT,
             PERF_SETTINGS_SUB_DOMAIN_THERMAL_EXT :: PerfSettingsSubDomainEXT #-}

conNamePerfSettingsSubDomainEXT :: String
conNamePerfSettingsSubDomainEXT :: String
conNamePerfSettingsSubDomainEXT = "PerfSettingsSubDomainEXT"

enumPrefixPerfSettingsSubDomainEXT :: String
enumPrefixPerfSettingsSubDomainEXT :: String
enumPrefixPerfSettingsSubDomainEXT = "PERF_SETTINGS_SUB_DOMAIN_"

showTablePerfSettingsSubDomainEXT :: [(PerfSettingsSubDomainEXT, String)]
showTablePerfSettingsSubDomainEXT :: [(PerfSettingsSubDomainEXT, String)]
showTablePerfSettingsSubDomainEXT =
  [ (PerfSettingsSubDomainEXT
PERF_SETTINGS_SUB_DOMAIN_COMPOSITING_EXT, "COMPOSITING_EXT")
  , (PerfSettingsSubDomainEXT
PERF_SETTINGS_SUB_DOMAIN_RENDERING_EXT  , "RENDERING_EXT")
  , (PerfSettingsSubDomainEXT
PERF_SETTINGS_SUB_DOMAIN_THERMAL_EXT    , "THERMAL_EXT")
  ]

instance Show PerfSettingsSubDomainEXT where
  showsPrec :: Int -> PerfSettingsSubDomainEXT -> ShowS
showsPrec = String
-> [(PerfSettingsSubDomainEXT, String)]
-> String
-> (PerfSettingsSubDomainEXT -> Int32)
-> (Int32 -> ShowS)
-> Int
-> PerfSettingsSubDomainEXT
-> ShowS
forall a i.
Eq a =>
String
-> [(a, String)]
-> String
-> (a -> i)
-> (i -> ShowS)
-> Int
-> a
-> ShowS
enumShowsPrec String
enumPrefixPerfSettingsSubDomainEXT
                            [(PerfSettingsSubDomainEXT, String)]
showTablePerfSettingsSubDomainEXT
                            String
conNamePerfSettingsSubDomainEXT
                            (\(PerfSettingsSubDomainEXT x :: Int32
x) -> Int32
x)
                            (Int -> Int32 -> ShowS
forall a. Show a => Int -> a -> ShowS
showsPrec 11)

instance Read PerfSettingsSubDomainEXT where
  readPrec :: ReadPrec PerfSettingsSubDomainEXT
readPrec = String
-> [(PerfSettingsSubDomainEXT, String)]
-> String
-> (Int32 -> PerfSettingsSubDomainEXT)
-> ReadPrec PerfSettingsSubDomainEXT
forall i a.
Read i =>
String -> [(a, String)] -> String -> (i -> a) -> ReadPrec a
enumReadPrec String
enumPrefixPerfSettingsSubDomainEXT
                          [(PerfSettingsSubDomainEXT, String)]
showTablePerfSettingsSubDomainEXT
                          String
conNamePerfSettingsSubDomainEXT
                          Int32 -> PerfSettingsSubDomainEXT
PerfSettingsSubDomainEXT


-- | XrPerfSettingsNotificationLevelEXT - XrPerfSettingsNotificationLevelEXT
--
-- = See Also
--
-- 'EventDataPerfSettingsEXT',
-- 'OpenXR.Extensions.XR_EXT_thermal_query.thermalGetTemperatureTrendEXT'
newtype PerfSettingsNotificationLevelEXT = PerfSettingsNotificationLevelEXT Int32
  deriving newtype (PerfSettingsNotificationLevelEXT
-> PerfSettingsNotificationLevelEXT -> Bool
(PerfSettingsNotificationLevelEXT
 -> PerfSettingsNotificationLevelEXT -> Bool)
-> (PerfSettingsNotificationLevelEXT
    -> PerfSettingsNotificationLevelEXT -> Bool)
-> Eq PerfSettingsNotificationLevelEXT
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PerfSettingsNotificationLevelEXT
-> PerfSettingsNotificationLevelEXT -> Bool
$c/= :: PerfSettingsNotificationLevelEXT
-> PerfSettingsNotificationLevelEXT -> Bool
== :: PerfSettingsNotificationLevelEXT
-> PerfSettingsNotificationLevelEXT -> Bool
$c== :: PerfSettingsNotificationLevelEXT
-> PerfSettingsNotificationLevelEXT -> Bool
Eq, Eq PerfSettingsNotificationLevelEXT
Eq PerfSettingsNotificationLevelEXT =>
(PerfSettingsNotificationLevelEXT
 -> PerfSettingsNotificationLevelEXT -> Ordering)
-> (PerfSettingsNotificationLevelEXT
    -> PerfSettingsNotificationLevelEXT -> Bool)
-> (PerfSettingsNotificationLevelEXT
    -> PerfSettingsNotificationLevelEXT -> Bool)
-> (PerfSettingsNotificationLevelEXT
    -> PerfSettingsNotificationLevelEXT -> Bool)
-> (PerfSettingsNotificationLevelEXT
    -> PerfSettingsNotificationLevelEXT -> Bool)
-> (PerfSettingsNotificationLevelEXT
    -> PerfSettingsNotificationLevelEXT
    -> PerfSettingsNotificationLevelEXT)
-> (PerfSettingsNotificationLevelEXT
    -> PerfSettingsNotificationLevelEXT
    -> PerfSettingsNotificationLevelEXT)
-> Ord PerfSettingsNotificationLevelEXT
PerfSettingsNotificationLevelEXT
-> PerfSettingsNotificationLevelEXT -> Bool
PerfSettingsNotificationLevelEXT
-> PerfSettingsNotificationLevelEXT -> Ordering
PerfSettingsNotificationLevelEXT
-> PerfSettingsNotificationLevelEXT
-> PerfSettingsNotificationLevelEXT
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 :: PerfSettingsNotificationLevelEXT
-> PerfSettingsNotificationLevelEXT
-> PerfSettingsNotificationLevelEXT
$cmin :: PerfSettingsNotificationLevelEXT
-> PerfSettingsNotificationLevelEXT
-> PerfSettingsNotificationLevelEXT
max :: PerfSettingsNotificationLevelEXT
-> PerfSettingsNotificationLevelEXT
-> PerfSettingsNotificationLevelEXT
$cmax :: PerfSettingsNotificationLevelEXT
-> PerfSettingsNotificationLevelEXT
-> PerfSettingsNotificationLevelEXT
>= :: PerfSettingsNotificationLevelEXT
-> PerfSettingsNotificationLevelEXT -> Bool
$c>= :: PerfSettingsNotificationLevelEXT
-> PerfSettingsNotificationLevelEXT -> Bool
> :: PerfSettingsNotificationLevelEXT
-> PerfSettingsNotificationLevelEXT -> Bool
$c> :: PerfSettingsNotificationLevelEXT
-> PerfSettingsNotificationLevelEXT -> Bool
<= :: PerfSettingsNotificationLevelEXT
-> PerfSettingsNotificationLevelEXT -> Bool
$c<= :: PerfSettingsNotificationLevelEXT
-> PerfSettingsNotificationLevelEXT -> Bool
< :: PerfSettingsNotificationLevelEXT
-> PerfSettingsNotificationLevelEXT -> Bool
$c< :: PerfSettingsNotificationLevelEXT
-> PerfSettingsNotificationLevelEXT -> Bool
compare :: PerfSettingsNotificationLevelEXT
-> PerfSettingsNotificationLevelEXT -> Ordering
$ccompare :: PerfSettingsNotificationLevelEXT
-> PerfSettingsNotificationLevelEXT -> Ordering
$cp1Ord :: Eq PerfSettingsNotificationLevelEXT
Ord, Ptr b -> Int -> IO PerfSettingsNotificationLevelEXT
Ptr b -> Int -> PerfSettingsNotificationLevelEXT -> IO ()
Ptr PerfSettingsNotificationLevelEXT
-> IO PerfSettingsNotificationLevelEXT
Ptr PerfSettingsNotificationLevelEXT
-> Int -> IO PerfSettingsNotificationLevelEXT
Ptr PerfSettingsNotificationLevelEXT
-> Int -> PerfSettingsNotificationLevelEXT -> IO ()
Ptr PerfSettingsNotificationLevelEXT
-> PerfSettingsNotificationLevelEXT -> IO ()
PerfSettingsNotificationLevelEXT -> Int
(PerfSettingsNotificationLevelEXT -> Int)
-> (PerfSettingsNotificationLevelEXT -> Int)
-> (Ptr PerfSettingsNotificationLevelEXT
    -> Int -> IO PerfSettingsNotificationLevelEXT)
-> (Ptr PerfSettingsNotificationLevelEXT
    -> Int -> PerfSettingsNotificationLevelEXT -> IO ())
-> (forall b. Ptr b -> Int -> IO PerfSettingsNotificationLevelEXT)
-> (forall b.
    Ptr b -> Int -> PerfSettingsNotificationLevelEXT -> IO ())
-> (Ptr PerfSettingsNotificationLevelEXT
    -> IO PerfSettingsNotificationLevelEXT)
-> (Ptr PerfSettingsNotificationLevelEXT
    -> PerfSettingsNotificationLevelEXT -> IO ())
-> Storable PerfSettingsNotificationLevelEXT
forall b. Ptr b -> Int -> IO PerfSettingsNotificationLevelEXT
forall b. Ptr b -> Int -> PerfSettingsNotificationLevelEXT -> 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 PerfSettingsNotificationLevelEXT
-> PerfSettingsNotificationLevelEXT -> IO ()
$cpoke :: Ptr PerfSettingsNotificationLevelEXT
-> PerfSettingsNotificationLevelEXT -> IO ()
peek :: Ptr PerfSettingsNotificationLevelEXT
-> IO PerfSettingsNotificationLevelEXT
$cpeek :: Ptr PerfSettingsNotificationLevelEXT
-> IO PerfSettingsNotificationLevelEXT
pokeByteOff :: Ptr b -> Int -> PerfSettingsNotificationLevelEXT -> IO ()
$cpokeByteOff :: forall b. Ptr b -> Int -> PerfSettingsNotificationLevelEXT -> IO ()
peekByteOff :: Ptr b -> Int -> IO PerfSettingsNotificationLevelEXT
$cpeekByteOff :: forall b. Ptr b -> Int -> IO PerfSettingsNotificationLevelEXT
pokeElemOff :: Ptr PerfSettingsNotificationLevelEXT
-> Int -> PerfSettingsNotificationLevelEXT -> IO ()
$cpokeElemOff :: Ptr PerfSettingsNotificationLevelEXT
-> Int -> PerfSettingsNotificationLevelEXT -> IO ()
peekElemOff :: Ptr PerfSettingsNotificationLevelEXT
-> Int -> IO PerfSettingsNotificationLevelEXT
$cpeekElemOff :: Ptr PerfSettingsNotificationLevelEXT
-> Int -> IO PerfSettingsNotificationLevelEXT
alignment :: PerfSettingsNotificationLevelEXT -> Int
$calignment :: PerfSettingsNotificationLevelEXT -> Int
sizeOf :: PerfSettingsNotificationLevelEXT -> Int
$csizeOf :: PerfSettingsNotificationLevelEXT -> Int
Storable, PerfSettingsNotificationLevelEXT
PerfSettingsNotificationLevelEXT
-> Zero PerfSettingsNotificationLevelEXT
forall a. a -> Zero a
zero :: PerfSettingsNotificationLevelEXT
$czero :: PerfSettingsNotificationLevelEXT
Zero)

-- No documentation found for Nested "XrPerfSettingsNotificationLevelEXT" "XR_PERF_SETTINGS_NOTIF_LEVEL_NORMAL_EXT"
pattern $bPERF_SETTINGS_NOTIF_LEVEL_NORMAL_EXT :: PerfSettingsNotificationLevelEXT
$mPERF_SETTINGS_NOTIF_LEVEL_NORMAL_EXT :: forall r.
PerfSettingsNotificationLevelEXT
-> (Void# -> r) -> (Void# -> r) -> r
PERF_SETTINGS_NOTIF_LEVEL_NORMAL_EXT   = PerfSettingsNotificationLevelEXT 0
-- No documentation found for Nested "XrPerfSettingsNotificationLevelEXT" "XR_PERF_SETTINGS_NOTIF_LEVEL_WARNING_EXT"
pattern $bPERF_SETTINGS_NOTIF_LEVEL_WARNING_EXT :: PerfSettingsNotificationLevelEXT
$mPERF_SETTINGS_NOTIF_LEVEL_WARNING_EXT :: forall r.
PerfSettingsNotificationLevelEXT
-> (Void# -> r) -> (Void# -> r) -> r
PERF_SETTINGS_NOTIF_LEVEL_WARNING_EXT  = PerfSettingsNotificationLevelEXT 25
-- No documentation found for Nested "XrPerfSettingsNotificationLevelEXT" "XR_PERF_SETTINGS_NOTIF_LEVEL_IMPAIRED_EXT"
pattern $bPERF_SETTINGS_NOTIF_LEVEL_IMPAIRED_EXT :: PerfSettingsNotificationLevelEXT
$mPERF_SETTINGS_NOTIF_LEVEL_IMPAIRED_EXT :: forall r.
PerfSettingsNotificationLevelEXT
-> (Void# -> r) -> (Void# -> r) -> r
PERF_SETTINGS_NOTIF_LEVEL_IMPAIRED_EXT = PerfSettingsNotificationLevelEXT 75
{-# complete PERF_SETTINGS_NOTIF_LEVEL_NORMAL_EXT,
             PERF_SETTINGS_NOTIF_LEVEL_WARNING_EXT,
             PERF_SETTINGS_NOTIF_LEVEL_IMPAIRED_EXT :: PerfSettingsNotificationLevelEXT #-}

conNamePerfSettingsNotificationLevelEXT :: String
conNamePerfSettingsNotificationLevelEXT :: String
conNamePerfSettingsNotificationLevelEXT = "PerfSettingsNotificationLevelEXT"

enumPrefixPerfSettingsNotificationLevelEXT :: String
enumPrefixPerfSettingsNotificationLevelEXT :: String
enumPrefixPerfSettingsNotificationLevelEXT = "PERF_SETTINGS_NOTIF_LEVEL_"

showTablePerfSettingsNotificationLevelEXT :: [(PerfSettingsNotificationLevelEXT, String)]
showTablePerfSettingsNotificationLevelEXT :: [(PerfSettingsNotificationLevelEXT, String)]
showTablePerfSettingsNotificationLevelEXT =
  [ (PerfSettingsNotificationLevelEXT
PERF_SETTINGS_NOTIF_LEVEL_NORMAL_EXT  , "NORMAL_EXT")
  , (PerfSettingsNotificationLevelEXT
PERF_SETTINGS_NOTIF_LEVEL_WARNING_EXT , "WARNING_EXT")
  , (PerfSettingsNotificationLevelEXT
PERF_SETTINGS_NOTIF_LEVEL_IMPAIRED_EXT, "IMPAIRED_EXT")
  ]

instance Show PerfSettingsNotificationLevelEXT where
  showsPrec :: Int -> PerfSettingsNotificationLevelEXT -> ShowS
showsPrec = String
-> [(PerfSettingsNotificationLevelEXT, String)]
-> String
-> (PerfSettingsNotificationLevelEXT -> Int32)
-> (Int32 -> ShowS)
-> Int
-> PerfSettingsNotificationLevelEXT
-> ShowS
forall a i.
Eq a =>
String
-> [(a, String)]
-> String
-> (a -> i)
-> (i -> ShowS)
-> Int
-> a
-> ShowS
enumShowsPrec String
enumPrefixPerfSettingsNotificationLevelEXT
                            [(PerfSettingsNotificationLevelEXT, String)]
showTablePerfSettingsNotificationLevelEXT
                            String
conNamePerfSettingsNotificationLevelEXT
                            (\(PerfSettingsNotificationLevelEXT x :: Int32
x) -> Int32
x)
                            (Int -> Int32 -> ShowS
forall a. Show a => Int -> a -> ShowS
showsPrec 11)

instance Read PerfSettingsNotificationLevelEXT where
  readPrec :: ReadPrec PerfSettingsNotificationLevelEXT
readPrec = String
-> [(PerfSettingsNotificationLevelEXT, String)]
-> String
-> (Int32 -> PerfSettingsNotificationLevelEXT)
-> ReadPrec PerfSettingsNotificationLevelEXT
forall i a.
Read i =>
String -> [(a, String)] -> String -> (i -> a) -> ReadPrec a
enumReadPrec String
enumPrefixPerfSettingsNotificationLevelEXT
                          [(PerfSettingsNotificationLevelEXT, String)]
showTablePerfSettingsNotificationLevelEXT
                          String
conNamePerfSettingsNotificationLevelEXT
                          Int32 -> PerfSettingsNotificationLevelEXT
PerfSettingsNotificationLevelEXT


type EXT_performance_settings_SPEC_VERSION = 1

-- No documentation found for TopLevel "XR_EXT_performance_settings_SPEC_VERSION"
pattern EXT_performance_settings_SPEC_VERSION :: forall a . Integral a => a
pattern $bEXT_performance_settings_SPEC_VERSION :: a
$mEXT_performance_settings_SPEC_VERSION :: forall r a. Integral a => a -> (Void# -> r) -> (Void# -> r) -> r
EXT_performance_settings_SPEC_VERSION = 1


type EXT_PERFORMANCE_SETTINGS_EXTENSION_NAME = "XR_EXT_performance_settings"

-- No documentation found for TopLevel "XR_EXT_PERFORMANCE_SETTINGS_EXTENSION_NAME"
pattern EXT_PERFORMANCE_SETTINGS_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
pattern $bEXT_PERFORMANCE_SETTINGS_EXTENSION_NAME :: a
$mEXT_PERFORMANCE_SETTINGS_EXTENSION_NAME :: forall r a.
(Eq a, IsString a) =>
a -> (Void# -> r) -> (Void# -> r) -> r
EXT_PERFORMANCE_SETTINGS_EXTENSION_NAME = "XR_EXT_performance_settings"