{-# language CPP #-}
module OpenXR.Extensions.XR_MSFT_spatial_graph_bridge ( createSpatialGraphNodeSpaceMSFT
, withSpatialGraphNodeSpaceMSFT
, SpatialGraphNodeSpaceCreateInfoMSFT(..)
, SpatialGraphNodeTypeMSFT( SPATIAL_GRAPH_NODE_TYPE_STATIC_MSFT
, SPATIAL_GRAPH_NODE_TYPE_DYNAMIC_MSFT
, ..
)
, MSFT_spatial_graph_bridge_SPEC_VERSION
, pattern MSFT_spatial_graph_bridge_SPEC_VERSION
, MSFT_SPATIAL_GRAPH_BRIDGE_EXTENSION_NAME
, pattern MSFT_SPATIAL_GRAPH_BRIDGE_EXTENSION_NAME
) where
import OpenXR.CStruct.Utils (FixedArray)
import OpenXR.Internal.Utils (enumReadPrec)
import OpenXR.Internal.Utils (enumShowsPrec)
import OpenXR.Internal.Utils (traceAroundEvent)
import Control.Exception.Base (bracket)
import Control.Monad (unless)
import Control.Monad.IO.Class (liftIO)
import Foreign.Marshal.Alloc (allocaBytesAligned)
import Foreign.Marshal.Alloc (callocBytes)
import Foreign.Marshal.Alloc (free)
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 Control.Monad.Trans.Class (lift)
import Control.Monad.Trans.Cont (evalContT)
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.Word (Word8)
import Data.ByteString (ByteString)
import Data.Kind (Type)
import Control.Monad.Trans.Cont (ContT(..))
import OpenXR.Core10.Space (destroySpace)
import OpenXR.CStruct.Utils (peekByteStringFromSizedVectorPtr)
import OpenXR.CStruct.Utils (pokeFixedLengthByteString)
import OpenXR.Dynamic (InstanceCmds(pXrCreateSpatialGraphNodeSpaceMSFT))
import OpenXR.Exception (OpenXrException(..))
import OpenXR.Core10.Space (Posef)
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.Handles (Space)
import OpenXR.Core10.Handles (Space(Space))
import OpenXR.Core10.Handles (Space_T)
import OpenXR.Core10.Enums.StructureType (StructureType)
import OpenXR.Core10.Enums.Result (Result(SUCCESS))
import OpenXR.Core10.Enums.StructureType (StructureType(TYPE_SPATIAL_GRAPH_NODE_SPACE_CREATE_INFO_MSFT))
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
unsafe
#endif
"dynamic" mkXrCreateSpatialGraphNodeSpaceMSFT
:: FunPtr (Ptr Session_T -> Ptr SpatialGraphNodeSpaceCreateInfoMSFT -> Ptr (Ptr Space_T) -> IO Result) -> Ptr Session_T -> Ptr SpatialGraphNodeSpaceCreateInfoMSFT -> Ptr (Ptr Space_T) -> IO Result
createSpatialGraphNodeSpaceMSFT :: forall io
. (MonadIO io)
=>
Session
->
SpatialGraphNodeSpaceCreateInfoMSFT
-> io (Space)
createSpatialGraphNodeSpaceMSFT :: Session -> SpatialGraphNodeSpaceCreateInfoMSFT -> io Space
createSpatialGraphNodeSpaceMSFT session :: Session
session createInfo :: SpatialGraphNodeSpaceCreateInfoMSFT
createInfo = IO Space -> io Space
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Space -> io Space)
-> (ContT Space IO Space -> IO Space)
-> ContT Space IO Space
-> io Space
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ContT Space IO Space -> IO Space
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT Space IO Space -> io Space)
-> ContT Space IO Space -> io Space
forall a b. (a -> b) -> a -> b
$ do
let cmds :: InstanceCmds
cmds = Session -> InstanceCmds
instanceCmds (Session
session :: Session)
let xrCreateSpatialGraphNodeSpaceMSFTPtr :: FunPtr
(Ptr Session_T
-> Ptr SpatialGraphNodeSpaceCreateInfoMSFT
-> ("space" ::: Ptr (Ptr Space_T))
-> IO Result)
xrCreateSpatialGraphNodeSpaceMSFTPtr = InstanceCmds
-> FunPtr
(Ptr Session_T
-> Ptr SpatialGraphNodeSpaceCreateInfoMSFT
-> ("space" ::: Ptr (Ptr Space_T))
-> IO Result)
pXrCreateSpatialGraphNodeSpaceMSFT InstanceCmds
cmds
IO () -> ContT Space IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT Space IO ()) -> IO () -> ContT Space IO ()
forall a b. (a -> b) -> a -> b
$ Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (FunPtr
(Ptr Session_T
-> Ptr SpatialGraphNodeSpaceCreateInfoMSFT
-> ("space" ::: Ptr (Ptr Space_T))
-> IO Result)
xrCreateSpatialGraphNodeSpaceMSFTPtr FunPtr
(Ptr Session_T
-> Ptr SpatialGraphNodeSpaceCreateInfoMSFT
-> ("space" ::: Ptr (Ptr Space_T))
-> IO Result)
-> FunPtr
(Ptr Session_T
-> Ptr SpatialGraphNodeSpaceCreateInfoMSFT
-> ("space" ::: Ptr (Ptr Space_T))
-> IO Result)
-> Bool
forall a. Eq a => a -> a -> Bool
/= FunPtr
(Ptr Session_T
-> Ptr SpatialGraphNodeSpaceCreateInfoMSFT
-> ("space" ::: Ptr (Ptr Space_T))
-> 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 xrCreateSpatialGraphNodeSpaceMSFT is null" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
let xrCreateSpatialGraphNodeSpaceMSFT' :: Ptr Session_T
-> Ptr SpatialGraphNodeSpaceCreateInfoMSFT
-> ("space" ::: Ptr (Ptr Space_T))
-> IO Result
xrCreateSpatialGraphNodeSpaceMSFT' = FunPtr
(Ptr Session_T
-> Ptr SpatialGraphNodeSpaceCreateInfoMSFT
-> ("space" ::: Ptr (Ptr Space_T))
-> IO Result)
-> Ptr Session_T
-> Ptr SpatialGraphNodeSpaceCreateInfoMSFT
-> ("space" ::: Ptr (Ptr Space_T))
-> IO Result
mkXrCreateSpatialGraphNodeSpaceMSFT FunPtr
(Ptr Session_T
-> Ptr SpatialGraphNodeSpaceCreateInfoMSFT
-> ("space" ::: Ptr (Ptr Space_T))
-> IO Result)
xrCreateSpatialGraphNodeSpaceMSFTPtr
Ptr SpatialGraphNodeSpaceCreateInfoMSFT
createInfo' <- ((Ptr SpatialGraphNodeSpaceCreateInfoMSFT -> IO Space) -> IO Space)
-> ContT Space IO (Ptr SpatialGraphNodeSpaceCreateInfoMSFT)
forall k (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr SpatialGraphNodeSpaceCreateInfoMSFT -> IO Space)
-> IO Space)
-> ContT Space IO (Ptr SpatialGraphNodeSpaceCreateInfoMSFT))
-> ((Ptr SpatialGraphNodeSpaceCreateInfoMSFT -> IO Space)
-> IO Space)
-> ContT Space IO (Ptr SpatialGraphNodeSpaceCreateInfoMSFT)
forall a b. (a -> b) -> a -> b
$ SpatialGraphNodeSpaceCreateInfoMSFT
-> (Ptr SpatialGraphNodeSpaceCreateInfoMSFT -> IO Space)
-> IO Space
forall a b. ToCStruct a => a -> (Ptr a -> IO b) -> IO b
withCStruct (SpatialGraphNodeSpaceCreateInfoMSFT
createInfo)
"space" ::: Ptr (Ptr Space_T)
pSpace <- ((("space" ::: Ptr (Ptr Space_T)) -> IO Space) -> IO Space)
-> ContT Space IO ("space" ::: Ptr (Ptr Space_T))
forall k (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((("space" ::: Ptr (Ptr Space_T)) -> IO Space) -> IO Space)
-> ContT Space IO ("space" ::: Ptr (Ptr Space_T)))
-> ((("space" ::: Ptr (Ptr Space_T)) -> IO Space) -> IO Space)
-> ContT Space IO ("space" ::: Ptr (Ptr Space_T))
forall a b. (a -> b) -> a -> b
$ IO ("space" ::: Ptr (Ptr Space_T))
-> (("space" ::: Ptr (Ptr Space_T)) -> IO ())
-> (("space" ::: Ptr (Ptr Space_T)) -> IO Space)
-> IO Space
forall a b c. IO a -> (a -> IO b) -> (a -> IO c) -> IO c
bracket (Int -> IO ("space" ::: Ptr (Ptr Space_T))
forall a. Int -> IO (Ptr a)
callocBytes @(Ptr Space_T) 8) ("space" ::: Ptr (Ptr Space_T)) -> IO ()
forall a. Ptr a -> IO ()
free
Result
r <- IO Result -> ContT Space IO Result
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO Result -> ContT Space IO Result)
-> IO Result -> ContT Space IO Result
forall a b. (a -> b) -> a -> b
$ String -> IO Result -> IO Result
forall a. String -> IO a -> IO a
traceAroundEvent "xrCreateSpatialGraphNodeSpaceMSFT" (Ptr Session_T
-> Ptr SpatialGraphNodeSpaceCreateInfoMSFT
-> ("space" ::: Ptr (Ptr Space_T))
-> IO Result
xrCreateSpatialGraphNodeSpaceMSFT' (Session -> Ptr Session_T
sessionHandle (Session
session)) Ptr SpatialGraphNodeSpaceCreateInfoMSFT
createInfo' ("space" ::: Ptr (Ptr Space_T)
pSpace))
IO () -> ContT Space IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT Space IO ()) -> IO () -> ContT Space IO ()
forall a b. (a -> b) -> a -> b
$ 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))
Ptr Space_T
space <- IO (Ptr Space_T) -> ContT Space IO (Ptr Space_T)
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO (Ptr Space_T) -> ContT Space IO (Ptr Space_T))
-> IO (Ptr Space_T) -> ContT Space IO (Ptr Space_T)
forall a b. (a -> b) -> a -> b
$ ("space" ::: Ptr (Ptr Space_T)) -> IO (Ptr Space_T)
forall a. Storable a => Ptr a -> IO a
peek @(Ptr Space_T) "space" ::: Ptr (Ptr Space_T)
pSpace
Space -> ContT Space IO Space
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Space -> ContT Space IO Space) -> Space -> ContT Space IO Space
forall a b. (a -> b) -> a -> b
$ (((\h :: Ptr Space_T
h -> Ptr Space_T -> InstanceCmds -> Space
Space Ptr Space_T
h InstanceCmds
cmds ) Ptr Space_T
space))
withSpatialGraphNodeSpaceMSFT :: forall io r . MonadIO io => Session -> SpatialGraphNodeSpaceCreateInfoMSFT -> (io Space -> (Space -> io ()) -> r) -> r
withSpatialGraphNodeSpaceMSFT :: Session
-> SpatialGraphNodeSpaceCreateInfoMSFT
-> (io Space -> (Space -> io ()) -> r)
-> r
withSpatialGraphNodeSpaceMSFT session :: Session
session createInfo :: SpatialGraphNodeSpaceCreateInfoMSFT
createInfo b :: io Space -> (Space -> io ()) -> r
b =
io Space -> (Space -> io ()) -> r
b (Session -> SpatialGraphNodeSpaceCreateInfoMSFT -> io Space
forall (io :: * -> *).
MonadIO io =>
Session -> SpatialGraphNodeSpaceCreateInfoMSFT -> io Space
createSpatialGraphNodeSpaceMSFT Session
session SpatialGraphNodeSpaceCreateInfoMSFT
createInfo)
(\(Space
o0) -> Space -> io ()
forall (io :: * -> *). MonadIO io => Space -> io ()
destroySpace Space
o0)
data SpatialGraphNodeSpaceCreateInfoMSFT = SpatialGraphNodeSpaceCreateInfoMSFT
{
SpatialGraphNodeSpaceCreateInfoMSFT -> SpatialGraphNodeTypeMSFT
nodeType :: SpatialGraphNodeTypeMSFT
,
SpatialGraphNodeSpaceCreateInfoMSFT -> ByteString
nodeId :: ByteString
,
SpatialGraphNodeSpaceCreateInfoMSFT -> Posef
pose :: Posef
}
deriving (Typeable)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (SpatialGraphNodeSpaceCreateInfoMSFT)
#endif
deriving instance Show SpatialGraphNodeSpaceCreateInfoMSFT
instance ToCStruct SpatialGraphNodeSpaceCreateInfoMSFT where
withCStruct :: SpatialGraphNodeSpaceCreateInfoMSFT
-> (Ptr SpatialGraphNodeSpaceCreateInfoMSFT -> IO b) -> IO b
withCStruct x :: SpatialGraphNodeSpaceCreateInfoMSFT
x f :: Ptr SpatialGraphNodeSpaceCreateInfoMSFT -> IO b
f = Int
-> Int -> (Ptr SpatialGraphNodeSpaceCreateInfoMSFT -> IO b) -> IO b
forall a b. Int -> Int -> (Ptr a -> IO b) -> IO b
allocaBytesAligned 64 8 ((Ptr SpatialGraphNodeSpaceCreateInfoMSFT -> IO b) -> IO b)
-> (Ptr SpatialGraphNodeSpaceCreateInfoMSFT -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \p :: Ptr SpatialGraphNodeSpaceCreateInfoMSFT
p -> Ptr SpatialGraphNodeSpaceCreateInfoMSFT
-> SpatialGraphNodeSpaceCreateInfoMSFT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr SpatialGraphNodeSpaceCreateInfoMSFT
p SpatialGraphNodeSpaceCreateInfoMSFT
x (Ptr SpatialGraphNodeSpaceCreateInfoMSFT -> IO b
f Ptr SpatialGraphNodeSpaceCreateInfoMSFT
p)
pokeCStruct :: Ptr SpatialGraphNodeSpaceCreateInfoMSFT
-> SpatialGraphNodeSpaceCreateInfoMSFT -> IO b -> IO b
pokeCStruct p :: Ptr SpatialGraphNodeSpaceCreateInfoMSFT
p SpatialGraphNodeSpaceCreateInfoMSFT{..} f :: IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr SpatialGraphNodeSpaceCreateInfoMSFT
p Ptr SpatialGraphNodeSpaceCreateInfoMSFT -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 0 :: Ptr StructureType)) (StructureType
TYPE_SPATIAL_GRAPH_NODE_SPACE_CREATE_INFO_MSFT)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr SpatialGraphNodeSpaceCreateInfoMSFT
p Ptr SpatialGraphNodeSpaceCreateInfoMSFT -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr SpatialGraphNodeTypeMSFT -> SpatialGraphNodeTypeMSFT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr SpatialGraphNodeSpaceCreateInfoMSFT
p Ptr SpatialGraphNodeSpaceCreateInfoMSFT
-> Int -> Ptr SpatialGraphNodeTypeMSFT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr SpatialGraphNodeTypeMSFT)) (SpatialGraphNodeTypeMSFT
nodeType)
Ptr (FixedArray 16 Word8) -> ByteString -> IO ()
forall (n :: Nat).
KnownNat n =>
Ptr (FixedArray n Word8) -> ByteString -> IO ()
pokeFixedLengthByteString ((Ptr SpatialGraphNodeSpaceCreateInfoMSFT
p Ptr SpatialGraphNodeSpaceCreateInfoMSFT
-> Int -> Ptr (FixedArray 16 Word8)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 20 :: Ptr (FixedArray 16 Word8))) (ByteString
nodeId)
Ptr Posef -> Posef -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr SpatialGraphNodeSpaceCreateInfoMSFT
p Ptr SpatialGraphNodeSpaceCreateInfoMSFT -> Int -> Ptr Posef
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 36 :: Ptr Posef)) (Posef
pose)
IO b
f
cStructSize :: Int
cStructSize = 64
cStructAlignment :: Int
cStructAlignment = 8
pokeZeroCStruct :: Ptr SpatialGraphNodeSpaceCreateInfoMSFT -> IO b -> IO b
pokeZeroCStruct p :: Ptr SpatialGraphNodeSpaceCreateInfoMSFT
p f :: IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr SpatialGraphNodeSpaceCreateInfoMSFT
p Ptr SpatialGraphNodeSpaceCreateInfoMSFT -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 0 :: Ptr StructureType)) (StructureType
TYPE_SPATIAL_GRAPH_NODE_SPACE_CREATE_INFO_MSFT)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr SpatialGraphNodeSpaceCreateInfoMSFT
p Ptr SpatialGraphNodeSpaceCreateInfoMSFT -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr SpatialGraphNodeTypeMSFT -> SpatialGraphNodeTypeMSFT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr SpatialGraphNodeSpaceCreateInfoMSFT
p Ptr SpatialGraphNodeSpaceCreateInfoMSFT
-> Int -> Ptr SpatialGraphNodeTypeMSFT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr SpatialGraphNodeTypeMSFT)) (SpatialGraphNodeTypeMSFT
forall a. Zero a => a
zero)
Ptr (FixedArray 16 Word8) -> ByteString -> IO ()
forall (n :: Nat).
KnownNat n =>
Ptr (FixedArray n Word8) -> ByteString -> IO ()
pokeFixedLengthByteString ((Ptr SpatialGraphNodeSpaceCreateInfoMSFT
p Ptr SpatialGraphNodeSpaceCreateInfoMSFT
-> Int -> Ptr (FixedArray 16 Word8)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 20 :: Ptr (FixedArray 16 Word8))) (ByteString
forall a. Monoid a => a
mempty)
Ptr Posef -> Posef -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr SpatialGraphNodeSpaceCreateInfoMSFT
p Ptr SpatialGraphNodeSpaceCreateInfoMSFT -> Int -> Ptr Posef
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 36 :: Ptr Posef)) (Posef
forall a. Zero a => a
zero)
IO b
f
instance FromCStruct SpatialGraphNodeSpaceCreateInfoMSFT where
peekCStruct :: Ptr SpatialGraphNodeSpaceCreateInfoMSFT
-> IO SpatialGraphNodeSpaceCreateInfoMSFT
peekCStruct p :: Ptr SpatialGraphNodeSpaceCreateInfoMSFT
p = do
SpatialGraphNodeTypeMSFT
nodeType <- Ptr SpatialGraphNodeTypeMSFT -> IO SpatialGraphNodeTypeMSFT
forall a. Storable a => Ptr a -> IO a
peek @SpatialGraphNodeTypeMSFT ((Ptr SpatialGraphNodeSpaceCreateInfoMSFT
p Ptr SpatialGraphNodeSpaceCreateInfoMSFT
-> Int -> Ptr SpatialGraphNodeTypeMSFT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr SpatialGraphNodeTypeMSFT))
ByteString
nodeId <- Ptr (FixedArray 16 Word8) -> IO ByteString
forall (n :: Nat).
KnownNat n =>
Ptr (FixedArray n Word8) -> IO ByteString
peekByteStringFromSizedVectorPtr ((Ptr SpatialGraphNodeSpaceCreateInfoMSFT
p Ptr SpatialGraphNodeSpaceCreateInfoMSFT
-> Int -> Ptr (FixedArray 16 Word8)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 20 :: Ptr (FixedArray 16 Word8)))
Posef
pose <- Ptr Posef -> IO Posef
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct @Posef ((Ptr SpatialGraphNodeSpaceCreateInfoMSFT
p Ptr SpatialGraphNodeSpaceCreateInfoMSFT -> Int -> Ptr Posef
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 36 :: Ptr Posef))
SpatialGraphNodeSpaceCreateInfoMSFT
-> IO SpatialGraphNodeSpaceCreateInfoMSFT
forall (f :: * -> *) a. Applicative f => a -> f a
pure (SpatialGraphNodeSpaceCreateInfoMSFT
-> IO SpatialGraphNodeSpaceCreateInfoMSFT)
-> SpatialGraphNodeSpaceCreateInfoMSFT
-> IO SpatialGraphNodeSpaceCreateInfoMSFT
forall a b. (a -> b) -> a -> b
$ SpatialGraphNodeTypeMSFT
-> ByteString -> Posef -> SpatialGraphNodeSpaceCreateInfoMSFT
SpatialGraphNodeSpaceCreateInfoMSFT
SpatialGraphNodeTypeMSFT
nodeType ByteString
nodeId Posef
pose
instance Storable SpatialGraphNodeSpaceCreateInfoMSFT where
sizeOf :: SpatialGraphNodeSpaceCreateInfoMSFT -> Int
sizeOf ~SpatialGraphNodeSpaceCreateInfoMSFT
_ = 64
alignment :: SpatialGraphNodeSpaceCreateInfoMSFT -> Int
alignment ~SpatialGraphNodeSpaceCreateInfoMSFT
_ = 8
peek :: Ptr SpatialGraphNodeSpaceCreateInfoMSFT
-> IO SpatialGraphNodeSpaceCreateInfoMSFT
peek = Ptr SpatialGraphNodeSpaceCreateInfoMSFT
-> IO SpatialGraphNodeSpaceCreateInfoMSFT
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr SpatialGraphNodeSpaceCreateInfoMSFT
-> SpatialGraphNodeSpaceCreateInfoMSFT -> IO ()
poke ptr :: Ptr SpatialGraphNodeSpaceCreateInfoMSFT
ptr poked :: SpatialGraphNodeSpaceCreateInfoMSFT
poked = Ptr SpatialGraphNodeSpaceCreateInfoMSFT
-> SpatialGraphNodeSpaceCreateInfoMSFT -> IO () -> IO ()
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr SpatialGraphNodeSpaceCreateInfoMSFT
ptr SpatialGraphNodeSpaceCreateInfoMSFT
poked (() -> IO ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero SpatialGraphNodeSpaceCreateInfoMSFT where
zero :: SpatialGraphNodeSpaceCreateInfoMSFT
zero = SpatialGraphNodeTypeMSFT
-> ByteString -> Posef -> SpatialGraphNodeSpaceCreateInfoMSFT
SpatialGraphNodeSpaceCreateInfoMSFT
SpatialGraphNodeTypeMSFT
forall a. Zero a => a
zero
ByteString
forall a. Monoid a => a
mempty
Posef
forall a. Zero a => a
zero
newtype SpatialGraphNodeTypeMSFT = SpatialGraphNodeTypeMSFT Int32
deriving newtype (SpatialGraphNodeTypeMSFT -> SpatialGraphNodeTypeMSFT -> Bool
(SpatialGraphNodeTypeMSFT -> SpatialGraphNodeTypeMSFT -> Bool)
-> (SpatialGraphNodeTypeMSFT -> SpatialGraphNodeTypeMSFT -> Bool)
-> Eq SpatialGraphNodeTypeMSFT
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: SpatialGraphNodeTypeMSFT -> SpatialGraphNodeTypeMSFT -> Bool
$c/= :: SpatialGraphNodeTypeMSFT -> SpatialGraphNodeTypeMSFT -> Bool
== :: SpatialGraphNodeTypeMSFT -> SpatialGraphNodeTypeMSFT -> Bool
$c== :: SpatialGraphNodeTypeMSFT -> SpatialGraphNodeTypeMSFT -> Bool
Eq, Eq SpatialGraphNodeTypeMSFT
Eq SpatialGraphNodeTypeMSFT =>
(SpatialGraphNodeTypeMSFT -> SpatialGraphNodeTypeMSFT -> Ordering)
-> (SpatialGraphNodeTypeMSFT -> SpatialGraphNodeTypeMSFT -> Bool)
-> (SpatialGraphNodeTypeMSFT -> SpatialGraphNodeTypeMSFT -> Bool)
-> (SpatialGraphNodeTypeMSFT -> SpatialGraphNodeTypeMSFT -> Bool)
-> (SpatialGraphNodeTypeMSFT -> SpatialGraphNodeTypeMSFT -> Bool)
-> (SpatialGraphNodeTypeMSFT
-> SpatialGraphNodeTypeMSFT -> SpatialGraphNodeTypeMSFT)
-> (SpatialGraphNodeTypeMSFT
-> SpatialGraphNodeTypeMSFT -> SpatialGraphNodeTypeMSFT)
-> Ord SpatialGraphNodeTypeMSFT
SpatialGraphNodeTypeMSFT -> SpatialGraphNodeTypeMSFT -> Bool
SpatialGraphNodeTypeMSFT -> SpatialGraphNodeTypeMSFT -> Ordering
SpatialGraphNodeTypeMSFT
-> SpatialGraphNodeTypeMSFT -> SpatialGraphNodeTypeMSFT
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 :: SpatialGraphNodeTypeMSFT
-> SpatialGraphNodeTypeMSFT -> SpatialGraphNodeTypeMSFT
$cmin :: SpatialGraphNodeTypeMSFT
-> SpatialGraphNodeTypeMSFT -> SpatialGraphNodeTypeMSFT
max :: SpatialGraphNodeTypeMSFT
-> SpatialGraphNodeTypeMSFT -> SpatialGraphNodeTypeMSFT
$cmax :: SpatialGraphNodeTypeMSFT
-> SpatialGraphNodeTypeMSFT -> SpatialGraphNodeTypeMSFT
>= :: SpatialGraphNodeTypeMSFT -> SpatialGraphNodeTypeMSFT -> Bool
$c>= :: SpatialGraphNodeTypeMSFT -> SpatialGraphNodeTypeMSFT -> Bool
> :: SpatialGraphNodeTypeMSFT -> SpatialGraphNodeTypeMSFT -> Bool
$c> :: SpatialGraphNodeTypeMSFT -> SpatialGraphNodeTypeMSFT -> Bool
<= :: SpatialGraphNodeTypeMSFT -> SpatialGraphNodeTypeMSFT -> Bool
$c<= :: SpatialGraphNodeTypeMSFT -> SpatialGraphNodeTypeMSFT -> Bool
< :: SpatialGraphNodeTypeMSFT -> SpatialGraphNodeTypeMSFT -> Bool
$c< :: SpatialGraphNodeTypeMSFT -> SpatialGraphNodeTypeMSFT -> Bool
compare :: SpatialGraphNodeTypeMSFT -> SpatialGraphNodeTypeMSFT -> Ordering
$ccompare :: SpatialGraphNodeTypeMSFT -> SpatialGraphNodeTypeMSFT -> Ordering
$cp1Ord :: Eq SpatialGraphNodeTypeMSFT
Ord, Ptr b -> Int -> IO SpatialGraphNodeTypeMSFT
Ptr b -> Int -> SpatialGraphNodeTypeMSFT -> IO ()
Ptr SpatialGraphNodeTypeMSFT -> IO SpatialGraphNodeTypeMSFT
Ptr SpatialGraphNodeTypeMSFT -> Int -> IO SpatialGraphNodeTypeMSFT
Ptr SpatialGraphNodeTypeMSFT
-> Int -> SpatialGraphNodeTypeMSFT -> IO ()
Ptr SpatialGraphNodeTypeMSFT -> SpatialGraphNodeTypeMSFT -> IO ()
SpatialGraphNodeTypeMSFT -> Int
(SpatialGraphNodeTypeMSFT -> Int)
-> (SpatialGraphNodeTypeMSFT -> Int)
-> (Ptr SpatialGraphNodeTypeMSFT
-> Int -> IO SpatialGraphNodeTypeMSFT)
-> (Ptr SpatialGraphNodeTypeMSFT
-> Int -> SpatialGraphNodeTypeMSFT -> IO ())
-> (forall b. Ptr b -> Int -> IO SpatialGraphNodeTypeMSFT)
-> (forall b. Ptr b -> Int -> SpatialGraphNodeTypeMSFT -> IO ())
-> (Ptr SpatialGraphNodeTypeMSFT -> IO SpatialGraphNodeTypeMSFT)
-> (Ptr SpatialGraphNodeTypeMSFT
-> SpatialGraphNodeTypeMSFT -> IO ())
-> Storable SpatialGraphNodeTypeMSFT
forall b. Ptr b -> Int -> IO SpatialGraphNodeTypeMSFT
forall b. Ptr b -> Int -> SpatialGraphNodeTypeMSFT -> 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 SpatialGraphNodeTypeMSFT -> SpatialGraphNodeTypeMSFT -> IO ()
$cpoke :: Ptr SpatialGraphNodeTypeMSFT -> SpatialGraphNodeTypeMSFT -> IO ()
peek :: Ptr SpatialGraphNodeTypeMSFT -> IO SpatialGraphNodeTypeMSFT
$cpeek :: Ptr SpatialGraphNodeTypeMSFT -> IO SpatialGraphNodeTypeMSFT
pokeByteOff :: Ptr b -> Int -> SpatialGraphNodeTypeMSFT -> IO ()
$cpokeByteOff :: forall b. Ptr b -> Int -> SpatialGraphNodeTypeMSFT -> IO ()
peekByteOff :: Ptr b -> Int -> IO SpatialGraphNodeTypeMSFT
$cpeekByteOff :: forall b. Ptr b -> Int -> IO SpatialGraphNodeTypeMSFT
pokeElemOff :: Ptr SpatialGraphNodeTypeMSFT
-> Int -> SpatialGraphNodeTypeMSFT -> IO ()
$cpokeElemOff :: Ptr SpatialGraphNodeTypeMSFT
-> Int -> SpatialGraphNodeTypeMSFT -> IO ()
peekElemOff :: Ptr SpatialGraphNodeTypeMSFT -> Int -> IO SpatialGraphNodeTypeMSFT
$cpeekElemOff :: Ptr SpatialGraphNodeTypeMSFT -> Int -> IO SpatialGraphNodeTypeMSFT
alignment :: SpatialGraphNodeTypeMSFT -> Int
$calignment :: SpatialGraphNodeTypeMSFT -> Int
sizeOf :: SpatialGraphNodeTypeMSFT -> Int
$csizeOf :: SpatialGraphNodeTypeMSFT -> Int
Storable, SpatialGraphNodeTypeMSFT
SpatialGraphNodeTypeMSFT -> Zero SpatialGraphNodeTypeMSFT
forall a. a -> Zero a
zero :: SpatialGraphNodeTypeMSFT
$czero :: SpatialGraphNodeTypeMSFT
Zero)
pattern $bSPATIAL_GRAPH_NODE_TYPE_STATIC_MSFT :: SpatialGraphNodeTypeMSFT
$mSPATIAL_GRAPH_NODE_TYPE_STATIC_MSFT :: forall r.
SpatialGraphNodeTypeMSFT -> (Void# -> r) -> (Void# -> r) -> r
SPATIAL_GRAPH_NODE_TYPE_STATIC_MSFT = SpatialGraphNodeTypeMSFT 1
pattern $bSPATIAL_GRAPH_NODE_TYPE_DYNAMIC_MSFT :: SpatialGraphNodeTypeMSFT
$mSPATIAL_GRAPH_NODE_TYPE_DYNAMIC_MSFT :: forall r.
SpatialGraphNodeTypeMSFT -> (Void# -> r) -> (Void# -> r) -> r
SPATIAL_GRAPH_NODE_TYPE_DYNAMIC_MSFT = SpatialGraphNodeTypeMSFT 2
{-# complete SPATIAL_GRAPH_NODE_TYPE_STATIC_MSFT,
SPATIAL_GRAPH_NODE_TYPE_DYNAMIC_MSFT :: SpatialGraphNodeTypeMSFT #-}
conNameSpatialGraphNodeTypeMSFT :: String
conNameSpatialGraphNodeTypeMSFT :: String
conNameSpatialGraphNodeTypeMSFT = "SpatialGraphNodeTypeMSFT"
enumPrefixSpatialGraphNodeTypeMSFT :: String
enumPrefixSpatialGraphNodeTypeMSFT :: String
enumPrefixSpatialGraphNodeTypeMSFT = "SPATIAL_GRAPH_NODE_TYPE_"
showTableSpatialGraphNodeTypeMSFT :: [(SpatialGraphNodeTypeMSFT, String)]
showTableSpatialGraphNodeTypeMSFT :: [(SpatialGraphNodeTypeMSFT, String)]
showTableSpatialGraphNodeTypeMSFT =
[(SpatialGraphNodeTypeMSFT
SPATIAL_GRAPH_NODE_TYPE_STATIC_MSFT, "STATIC_MSFT"), (SpatialGraphNodeTypeMSFT
SPATIAL_GRAPH_NODE_TYPE_DYNAMIC_MSFT, "DYNAMIC_MSFT")]
instance Show SpatialGraphNodeTypeMSFT where
showsPrec :: Int -> SpatialGraphNodeTypeMSFT -> ShowS
showsPrec = String
-> [(SpatialGraphNodeTypeMSFT, String)]
-> String
-> (SpatialGraphNodeTypeMSFT -> Int32)
-> (Int32 -> ShowS)
-> Int
-> SpatialGraphNodeTypeMSFT
-> ShowS
forall a i.
Eq a =>
String
-> [(a, String)]
-> String
-> (a -> i)
-> (i -> ShowS)
-> Int
-> a
-> ShowS
enumShowsPrec String
enumPrefixSpatialGraphNodeTypeMSFT
[(SpatialGraphNodeTypeMSFT, String)]
showTableSpatialGraphNodeTypeMSFT
String
conNameSpatialGraphNodeTypeMSFT
(\(SpatialGraphNodeTypeMSFT x :: Int32
x) -> Int32
x)
(Int -> Int32 -> ShowS
forall a. Show a => Int -> a -> ShowS
showsPrec 11)
instance Read SpatialGraphNodeTypeMSFT where
readPrec :: ReadPrec SpatialGraphNodeTypeMSFT
readPrec = String
-> [(SpatialGraphNodeTypeMSFT, String)]
-> String
-> (Int32 -> SpatialGraphNodeTypeMSFT)
-> ReadPrec SpatialGraphNodeTypeMSFT
forall i a.
Read i =>
String -> [(a, String)] -> String -> (i -> a) -> ReadPrec a
enumReadPrec String
enumPrefixSpatialGraphNodeTypeMSFT
[(SpatialGraphNodeTypeMSFT, String)]
showTableSpatialGraphNodeTypeMSFT
String
conNameSpatialGraphNodeTypeMSFT
Int32 -> SpatialGraphNodeTypeMSFT
SpatialGraphNodeTypeMSFT
type MSFT_spatial_graph_bridge_SPEC_VERSION = 1
pattern MSFT_spatial_graph_bridge_SPEC_VERSION :: forall a . Integral a => a
pattern $bMSFT_spatial_graph_bridge_SPEC_VERSION :: a
$mMSFT_spatial_graph_bridge_SPEC_VERSION :: forall r a. Integral a => a -> (Void# -> r) -> (Void# -> r) -> r
MSFT_spatial_graph_bridge_SPEC_VERSION = 1
type MSFT_SPATIAL_GRAPH_BRIDGE_EXTENSION_NAME = "XR_MSFT_spatial_graph_bridge"
pattern MSFT_SPATIAL_GRAPH_BRIDGE_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
pattern $bMSFT_SPATIAL_GRAPH_BRIDGE_EXTENSION_NAME :: a
$mMSFT_SPATIAL_GRAPH_BRIDGE_EXTENSION_NAME :: forall r a.
(Eq a, IsString a) =>
a -> (Void# -> r) -> (Void# -> r) -> r
MSFT_SPATIAL_GRAPH_BRIDGE_EXTENSION_NAME = "XR_MSFT_spatial_graph_bridge"