{-# language CPP #-}
-- No documentation found for Chapter "APIConstants"
module OpenXR.Core10.APIConstants  ( pattern MIN_HAPTIC_DURATION
                                   , MAX_EXTENSION_NAME_SIZE
                                   , pattern MAX_EXTENSION_NAME_SIZE
                                   , MAX_API_LAYER_NAME_SIZE
                                   , pattern MAX_API_LAYER_NAME_SIZE
                                   , MAX_API_LAYER_DESCRIPTION_SIZE
                                   , pattern MAX_API_LAYER_DESCRIPTION_SIZE
                                   , MAX_SYSTEM_NAME_SIZE
                                   , pattern MAX_SYSTEM_NAME_SIZE
                                   , MAX_APPLICATION_NAME_SIZE
                                   , pattern MAX_APPLICATION_NAME_SIZE
                                   , MAX_ENGINE_NAME_SIZE
                                   , pattern MAX_ENGINE_NAME_SIZE
                                   , MAX_RUNTIME_NAME_SIZE
                                   , pattern MAX_RUNTIME_NAME_SIZE
                                   , MAX_PATH_LENGTH
                                   , pattern MAX_PATH_LENGTH
                                   , MAX_STRUCTURE_NAME_SIZE
                                   , pattern MAX_STRUCTURE_NAME_SIZE
                                   , MAX_RESULT_STRING_SIZE
                                   , pattern MAX_RESULT_STRING_SIZE
                                   , MAX_GRAPHICS_APIS_SUPPORTED
                                   , pattern MAX_GRAPHICS_APIS_SUPPORTED
                                   , MAX_ACTION_SET_NAME_SIZE
                                   , pattern MAX_ACTION_SET_NAME_SIZE
                                   , MAX_ACTION_NAME_SIZE
                                   , pattern MAX_ACTION_NAME_SIZE
                                   , MAX_LOCALIZED_ACTION_SET_NAME_SIZE
                                   , pattern MAX_LOCALIZED_ACTION_SET_NAME_SIZE
                                   , MAX_LOCALIZED_ACTION_NAME_SIZE
                                   , pattern MAX_LOCALIZED_ACTION_NAME_SIZE
                                   , MIN_COMPOSITION_LAYERS_SUPPORTED
                                   , pattern MIN_COMPOSITION_LAYERS_SUPPORTED
                                   , NULL_PATH
                                   , pattern NULL_PATH
                                   , NULL_SYSTEM_ID
                                   , pattern NULL_SYSTEM_ID
                                   , NO_DURATION
                                   , pattern NO_DURATION
                                   , INFINITE_DURATION
                                   , pattern INFINITE_DURATION
                                   , FREQUENCY_UNSPECIFIED
                                   , pattern FREQUENCY_UNSPECIFIED
                                   , MAX_EVENT_DATA_SIZE
                                   , pattern MAX_EVENT_DATA_SIZE
                                   , HAND_JOINT_COUNT_EXT
                                   , pattern HAND_JOINT_COUNT_EXT
                                   , NULL_CONTROLLER_MODEL_KEY_MSFT
                                   , pattern NULL_CONTROLLER_MODEL_KEY_MSFT
                                   , pattern VK_NULL_HANDLE
                                   , IsHandle
                                   , HasObjectType(..)
                                   , Bool32(..)
                                   ) where

import OpenXR.Zero (Zero(..))
import Data.Int (Int64)
import Data.Word (Word64)
import OpenXR.Core10.Enums.ObjectType (ObjectType)
import OpenXR.Core10.FundamentalTypes (Bool32(..))
-- | XR_MIN_HAPTIC_DURATION - Indicates the shortest valid duration for the
-- device
--
-- = See Also
--
-- 'OpenXR.Core10.Haptics.applyHapticFeedback'
pattern MIN_HAPTIC_DURATION :: forall a . Integral a => a
pattern $bMIN_HAPTIC_DURATION :: a
$mMIN_HAPTIC_DURATION :: forall r a. Integral a => a -> (Void# -> r) -> (Void# -> r) -> r
MIN_HAPTIC_DURATION = -1


type MAX_EXTENSION_NAME_SIZE = 128

-- No documentation found for TopLevel "XR_MAX_EXTENSION_NAME_SIZE"
pattern MAX_EXTENSION_NAME_SIZE :: forall a . Integral a => a
pattern $bMAX_EXTENSION_NAME_SIZE :: a
$mMAX_EXTENSION_NAME_SIZE :: forall r a. Integral a => a -> (Void# -> r) -> (Void# -> r) -> r
MAX_EXTENSION_NAME_SIZE = 128


type MAX_API_LAYER_NAME_SIZE = 256

-- No documentation found for TopLevel "XR_MAX_API_LAYER_NAME_SIZE"
pattern MAX_API_LAYER_NAME_SIZE :: forall a . Integral a => a
pattern $bMAX_API_LAYER_NAME_SIZE :: a
$mMAX_API_LAYER_NAME_SIZE :: forall r a. Integral a => a -> (Void# -> r) -> (Void# -> r) -> r
MAX_API_LAYER_NAME_SIZE = 256


type MAX_API_LAYER_DESCRIPTION_SIZE = 256

-- No documentation found for TopLevel "XR_MAX_API_LAYER_DESCRIPTION_SIZE"
pattern MAX_API_LAYER_DESCRIPTION_SIZE :: forall a . Integral a => a
pattern $bMAX_API_LAYER_DESCRIPTION_SIZE :: a
$mMAX_API_LAYER_DESCRIPTION_SIZE :: forall r a. Integral a => a -> (Void# -> r) -> (Void# -> r) -> r
MAX_API_LAYER_DESCRIPTION_SIZE = 256


type MAX_SYSTEM_NAME_SIZE = 256

-- No documentation found for TopLevel "XR_MAX_SYSTEM_NAME_SIZE"
pattern MAX_SYSTEM_NAME_SIZE :: forall a . Integral a => a
pattern $bMAX_SYSTEM_NAME_SIZE :: a
$mMAX_SYSTEM_NAME_SIZE :: forall r a. Integral a => a -> (Void# -> r) -> (Void# -> r) -> r
MAX_SYSTEM_NAME_SIZE = 256


type MAX_APPLICATION_NAME_SIZE = 128

-- No documentation found for TopLevel "XR_MAX_APPLICATION_NAME_SIZE"
pattern MAX_APPLICATION_NAME_SIZE :: forall a . Integral a => a
pattern $bMAX_APPLICATION_NAME_SIZE :: a
$mMAX_APPLICATION_NAME_SIZE :: forall r a. Integral a => a -> (Void# -> r) -> (Void# -> r) -> r
MAX_APPLICATION_NAME_SIZE = 128


type MAX_ENGINE_NAME_SIZE = 128

-- No documentation found for TopLevel "XR_MAX_ENGINE_NAME_SIZE"
pattern MAX_ENGINE_NAME_SIZE :: forall a . Integral a => a
pattern $bMAX_ENGINE_NAME_SIZE :: a
$mMAX_ENGINE_NAME_SIZE :: forall r a. Integral a => a -> (Void# -> r) -> (Void# -> r) -> r
MAX_ENGINE_NAME_SIZE = 128


type MAX_RUNTIME_NAME_SIZE = 128

-- No documentation found for TopLevel "XR_MAX_RUNTIME_NAME_SIZE"
pattern MAX_RUNTIME_NAME_SIZE :: forall a . Integral a => a
pattern $bMAX_RUNTIME_NAME_SIZE :: a
$mMAX_RUNTIME_NAME_SIZE :: forall r a. Integral a => a -> (Void# -> r) -> (Void# -> r) -> r
MAX_RUNTIME_NAME_SIZE = 128


type MAX_PATH_LENGTH = 256

-- No documentation found for TopLevel "XR_MAX_PATH_LENGTH"
pattern MAX_PATH_LENGTH :: forall a . Integral a => a
pattern $bMAX_PATH_LENGTH :: a
$mMAX_PATH_LENGTH :: forall r a. Integral a => a -> (Void# -> r) -> (Void# -> r) -> r
MAX_PATH_LENGTH = 256


type MAX_STRUCTURE_NAME_SIZE = 64

-- No documentation found for TopLevel "XR_MAX_STRUCTURE_NAME_SIZE"
pattern MAX_STRUCTURE_NAME_SIZE :: forall a . Integral a => a
pattern $bMAX_STRUCTURE_NAME_SIZE :: a
$mMAX_STRUCTURE_NAME_SIZE :: forall r a. Integral a => a -> (Void# -> r) -> (Void# -> r) -> r
MAX_STRUCTURE_NAME_SIZE = 64


type MAX_RESULT_STRING_SIZE = 64

-- No documentation found for TopLevel "XR_MAX_RESULT_STRING_SIZE"
pattern MAX_RESULT_STRING_SIZE :: forall a . Integral a => a
pattern $bMAX_RESULT_STRING_SIZE :: a
$mMAX_RESULT_STRING_SIZE :: forall r a. Integral a => a -> (Void# -> r) -> (Void# -> r) -> r
MAX_RESULT_STRING_SIZE = 64


type MAX_GRAPHICS_APIS_SUPPORTED = 32

-- No documentation found for TopLevel "XR_MAX_GRAPHICS_APIS_SUPPORTED"
pattern MAX_GRAPHICS_APIS_SUPPORTED :: forall a . Integral a => a
pattern $bMAX_GRAPHICS_APIS_SUPPORTED :: a
$mMAX_GRAPHICS_APIS_SUPPORTED :: forall r a. Integral a => a -> (Void# -> r) -> (Void# -> r) -> r
MAX_GRAPHICS_APIS_SUPPORTED = 32


type MAX_ACTION_SET_NAME_SIZE = 64

-- No documentation found for TopLevel "XR_MAX_ACTION_SET_NAME_SIZE"
pattern MAX_ACTION_SET_NAME_SIZE :: forall a . Integral a => a
pattern $bMAX_ACTION_SET_NAME_SIZE :: a
$mMAX_ACTION_SET_NAME_SIZE :: forall r a. Integral a => a -> (Void# -> r) -> (Void# -> r) -> r
MAX_ACTION_SET_NAME_SIZE = 64


type MAX_ACTION_NAME_SIZE = 64

-- No documentation found for TopLevel "XR_MAX_ACTION_NAME_SIZE"
pattern MAX_ACTION_NAME_SIZE :: forall a . Integral a => a
pattern $bMAX_ACTION_NAME_SIZE :: a
$mMAX_ACTION_NAME_SIZE :: forall r a. Integral a => a -> (Void# -> r) -> (Void# -> r) -> r
MAX_ACTION_NAME_SIZE = 64


type MAX_LOCALIZED_ACTION_SET_NAME_SIZE = 128

-- No documentation found for TopLevel "XR_MAX_LOCALIZED_ACTION_SET_NAME_SIZE"
pattern MAX_LOCALIZED_ACTION_SET_NAME_SIZE :: forall a . Integral a => a
pattern $bMAX_LOCALIZED_ACTION_SET_NAME_SIZE :: a
$mMAX_LOCALIZED_ACTION_SET_NAME_SIZE :: forall r a. Integral a => a -> (Void# -> r) -> (Void# -> r) -> r
MAX_LOCALIZED_ACTION_SET_NAME_SIZE = 128


type MAX_LOCALIZED_ACTION_NAME_SIZE = 128

-- No documentation found for TopLevel "XR_MAX_LOCALIZED_ACTION_NAME_SIZE"
pattern MAX_LOCALIZED_ACTION_NAME_SIZE :: forall a . Integral a => a
pattern $bMAX_LOCALIZED_ACTION_NAME_SIZE :: a
$mMAX_LOCALIZED_ACTION_NAME_SIZE :: forall r a. Integral a => a -> (Void# -> r) -> (Void# -> r) -> r
MAX_LOCALIZED_ACTION_NAME_SIZE = 128


type MIN_COMPOSITION_LAYERS_SUPPORTED = 16

-- No documentation found for TopLevel "XR_MIN_COMPOSITION_LAYERS_SUPPORTED"
pattern MIN_COMPOSITION_LAYERS_SUPPORTED :: forall a . Integral a => a
pattern $bMIN_COMPOSITION_LAYERS_SUPPORTED :: a
$mMIN_COMPOSITION_LAYERS_SUPPORTED :: forall r a. Integral a => a -> (Void# -> r) -> (Void# -> r) -> r
MIN_COMPOSITION_LAYERS_SUPPORTED = 16


type NULL_PATH = 0

-- | XR_NULL_PATH - A NULL semantic path
--
-- = Description
--
-- The only
-- <https://www.khronos.org/registry/OpenXR/specs/1.0/html/xrspec.html#XrPath >
-- value defined to be constant across all instances is the invalid path
-- 'NULL_PATH'. No well-formed path string is associated with 'NULL_PATH'.
-- Unless explicitly permitted, it /should/ not be passed to API calls or
-- used as a structure attribute when a valid
-- <https://www.khronos.org/registry/OpenXR/specs/1.0/html/xrspec.html#XrPath >
-- is required.
--
-- = See Also
--
-- <https://www.khronos.org/registry/OpenXR/specs/1.0/html/xrspec.html#XrPath >
pattern NULL_PATH :: forall a . Integral a => a
pattern $bNULL_PATH :: a
$mNULL_PATH :: forall r a. Integral a => a -> (Void# -> r) -> (Void# -> r) -> r
NULL_PATH = 0


type NULL_SYSTEM_ID = 0

-- | XR_NULL_SYSTEM_ID - NULL system identifier
--
-- = Description
--
-- The only
-- <https://www.khronos.org/registry/OpenXR/specs/1.0/html/xrspec.html#XrSystemId >
-- value defined to be constant across all instances is the invalid system
-- 'NULL_SYSTEM_ID'. No supported system is associated with
-- 'NULL_SYSTEM_ID'. Unless explicitly permitted, it /should/ not be passed
-- to API calls or used as a structure attribute when a valid
-- <https://www.khronos.org/registry/OpenXR/specs/1.0/html/xrspec.html#XrSystemId >
-- is required.
--
-- = See Also
--
-- <https://www.khronos.org/registry/OpenXR/specs/1.0/html/xrspec.html#XrSystemId >,
-- 'OpenXR.Core10.Device.getSystem'
pattern NULL_SYSTEM_ID :: forall a . Integral a => a
pattern $bNULL_SYSTEM_ID :: a
$mNULL_SYSTEM_ID :: forall r a. Integral a => a -> (Void# -> r) -> (Void# -> r) -> r
NULL_SYSTEM_ID = 0


type NO_DURATION = 0

-- | XR_NO_DURATION - Constant for no duration\/immediate timeout
--
-- = Description
--
-- For the case of timeout durations, 'NO_DURATION' /may/ be used to
-- indicate that the timeout is immediate.
--
-- = See Also
--
-- <https://www.khronos.org/registry/OpenXR/specs/1.0/html/xrspec.html#XrDuration >
pattern NO_DURATION :: forall a . Integral a => a
pattern $bNO_DURATION :: a
$mNO_DURATION :: forall r a. Integral a => a -> (Void# -> r) -> (Void# -> r) -> r
NO_DURATION = 0


type INFINITE_DURATION = 0x7fffffffffffffff

-- | XR_INFINITE_DURATION - Constant for infinite duration\/never times out
--
-- = Description
--
-- 'INFINITE_DURATION' is a special value that /may/ be used to indicate
-- that the timeout never occurs. A timeout with a duration that refers to
-- the past has the same effect as a timeout of 'NO_DURATION'.
--
-- = See Also
--
-- <https://www.khronos.org/registry/OpenXR/specs/1.0/html/xrspec.html#XrDuration >
pattern INFINITE_DURATION :: Int64
pattern $bINFINITE_DURATION :: Int64
$mINFINITE_DURATION :: forall r. Int64 -> (Void# -> r) -> (Void# -> r) -> r
INFINITE_DURATION = 0x7fffffffffffffff


type FREQUENCY_UNSPECIFIED = 0

-- | XR_FREQUENCY_UNSPECIFIED - Runtime should determine optimal frequency
-- for haptic pulse
--
-- = See Also
--
-- 'OpenXR.Core10.Haptics.applyHapticFeedback'
pattern FREQUENCY_UNSPECIFIED :: forall a . Integral a => a
pattern $bFREQUENCY_UNSPECIFIED :: a
$mFREQUENCY_UNSPECIFIED :: forall r a. Integral a => a -> (Void# -> r) -> (Void# -> r) -> r
FREQUENCY_UNSPECIFIED = 0


type MAX_EVENT_DATA_SIZE = 4016 {- sizeof(XrEventDataBuffer) -}

-- | XR_MAX_EVENT_DATA_SIZE - Maximum event data buffer size
--
-- = See Also
--
-- 'OpenXR.Core10.Instance.EventDataBuffer'
pattern MAX_EVENT_DATA_SIZE :: Int
pattern $bMAX_EVENT_DATA_SIZE :: Int
$mMAX_EVENT_DATA_SIZE :: forall r. Int -> (Void# -> r) -> (Void# -> r) -> r
MAX_EVENT_DATA_SIZE = 4016 {- sizeof(XrEventDataBuffer) -}


type HAND_JOINT_COUNT_EXT = 26

-- | XR_HAND_JOINT_COUNT_EXT - The number of hand joint enums defined in
-- XrHandJointEXT
--
-- = Description
--
-- 'HAND_JOINT_COUNT_EXT' defines the number of hand joint enumerants
-- defined in 'OpenXR.Extensions.XR_EXT_hand_tracking.HandJointEXT'
--
-- = See Also
--
-- 'OpenXR.Extensions.XR_EXT_hand_tracking.HandJointEXT'
pattern HAND_JOINT_COUNT_EXT :: forall a . Integral a => a
pattern $bHAND_JOINT_COUNT_EXT :: a
$mHAND_JOINT_COUNT_EXT :: forall r a. Integral a => a -> (Void# -> r) -> (Void# -> r) -> r
HAND_JOINT_COUNT_EXT = 26


type NULL_CONTROLLER_MODEL_KEY_MSFT = 0

-- | XR_NULL_CONTROLLER_MODEL_KEY_MSFT - The value representing an invalid
-- model key
--
-- = Description
--
-- 'NULL_CONTROLLER_MODEL_KEY_MSFT' defines an invalid model key value.
--
-- = See Also
--
-- <https://www.khronos.org/registry/OpenXR/specs/1.0/html/xrspec.html#XrControllerModelKeyMSFT >
pattern NULL_CONTROLLER_MODEL_KEY_MSFT :: forall a . Integral a => a
pattern $bNULL_CONTROLLER_MODEL_KEY_MSFT :: a
$mNULL_CONTROLLER_MODEL_KEY_MSFT :: forall r a. Integral a => a -> (Void# -> r) -> (Void# -> r) -> r
NULL_CONTROLLER_MODEL_KEY_MSFT = 0


-- No documentation found for TopLevel "VK_NULL_HANDLE"
pattern VK_NULL_HANDLE :: IsHandle a => a
pattern $bVK_NULL_HANDLE :: a
$mVK_NULL_HANDLE :: forall r a. IsHandle a => a -> (Void# -> r) -> (Void# -> r) -> r
VK_NULL_HANDLE <- ((== zero) -> True)
  where VK_NULL_HANDLE = a
forall a. Zero a => a
zero

-- | A class for things which can be created with 'VK_NULL_HANDLE'.
class (Eq a, Zero a) => IsHandle a where


class HasObjectType a where
  objectTypeAndHandle :: a -> (ObjectType, Word64)