{-# LANGUAGE PatternSynonyms #-}
-- For HasCallStack compatibility
{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module JSDOM.Generated.WebGPUCommandBuffer
       (createRenderCommandEncoderWithDescriptor,
        createRenderCommandEncoderWithDescriptor_,
        createComputeCommandEncoder, createComputeCommandEncoder_, commit,
        presentDrawable, getCompleted, WebGPUCommandBuffer(..),
        gTypeWebGPUCommandBuffer)
       where
import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
import qualified Prelude (error)
import Data.Typeable (Typeable)
import Data.Traversable (mapM)
import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
import Data.Int (Int64)
import Data.Word (Word, Word64)
import JSDOM.Types
import Control.Applicative ((<$>))
import Control.Monad (void)
import Control.Lens.Operators ((^.))
import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
import JSDOM.Enums

-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUCommandBuffer.createRenderCommandEncoderWithDescriptor Mozilla WebGPUCommandBuffer.createRenderCommandEncoderWithDescriptor documentation> 
createRenderCommandEncoderWithDescriptor ::
                                         (MonadDOM m) =>
                                           WebGPUCommandBuffer ->
                                             WebGPURenderPassDescriptor ->
                                               m WebGPURenderCommandEncoder
createRenderCommandEncoderWithDescriptor :: forall (m :: * -> *).
MonadDOM m =>
WebGPUCommandBuffer
-> WebGPURenderPassDescriptor -> m WebGPURenderCommandEncoder
createRenderCommandEncoderWithDescriptor WebGPUCommandBuffer
self WebGPURenderPassDescriptor
descriptor
  = DOM WebGPURenderCommandEncoder -> m WebGPURenderCommandEncoder
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      ((WebGPUCommandBuffer
self WebGPUCommandBuffer
-> Getting (JSM JSVal) WebGPUCommandBuffer (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"createRenderCommandEncoderWithDescriptor"
          [WebGPURenderPassDescriptor -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal WebGPURenderPassDescriptor
descriptor])
         JSM JSVal
-> (JSVal -> DOM WebGPURenderCommandEncoder)
-> DOM WebGPURenderCommandEncoder
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM WebGPURenderCommandEncoder
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUCommandBuffer.createRenderCommandEncoderWithDescriptor Mozilla WebGPUCommandBuffer.createRenderCommandEncoderWithDescriptor documentation> 
createRenderCommandEncoderWithDescriptor_ ::
                                          (MonadDOM m) =>
                                            WebGPUCommandBuffer ->
                                              WebGPURenderPassDescriptor -> m ()
createRenderCommandEncoderWithDescriptor_ :: forall (m :: * -> *).
MonadDOM m =>
WebGPUCommandBuffer -> WebGPURenderPassDescriptor -> m ()
createRenderCommandEncoderWithDescriptor_ WebGPUCommandBuffer
self WebGPURenderPassDescriptor
descriptor
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         (WebGPUCommandBuffer
self WebGPUCommandBuffer
-> Getting (JSM JSVal) WebGPUCommandBuffer (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"createRenderCommandEncoderWithDescriptor"
            [WebGPURenderPassDescriptor -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal WebGPURenderPassDescriptor
descriptor]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUCommandBuffer.createComputeCommandEncoder Mozilla WebGPUCommandBuffer.createComputeCommandEncoder documentation> 
createComputeCommandEncoder ::
                            (MonadDOM m) =>
                              WebGPUCommandBuffer -> m WebGPUComputeCommandEncoder
createComputeCommandEncoder :: forall (m :: * -> *).
MonadDOM m =>
WebGPUCommandBuffer -> m WebGPUComputeCommandEncoder
createComputeCommandEncoder WebGPUCommandBuffer
self
  = DOM WebGPUComputeCommandEncoder -> m WebGPUComputeCommandEncoder
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      ((WebGPUCommandBuffer
self WebGPUCommandBuffer
-> Getting (JSM JSVal) WebGPUCommandBuffer (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> () -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"createComputeCommandEncoder" ()) JSM JSVal
-> (JSVal -> DOM WebGPUComputeCommandEncoder)
-> DOM WebGPUComputeCommandEncoder
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>=
         JSVal -> DOM WebGPUComputeCommandEncoder
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUCommandBuffer.createComputeCommandEncoder Mozilla WebGPUCommandBuffer.createComputeCommandEncoder documentation> 
createComputeCommandEncoder_ ::
                             (MonadDOM m) => WebGPUCommandBuffer -> m ()
createComputeCommandEncoder_ :: forall (m :: * -> *). MonadDOM m => WebGPUCommandBuffer -> m ()
createComputeCommandEncoder_ WebGPUCommandBuffer
self
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (WebGPUCommandBuffer
self WebGPUCommandBuffer
-> Getting (JSM JSVal) WebGPUCommandBuffer (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> () -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"createComputeCommandEncoder" ()))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUCommandBuffer.commit Mozilla WebGPUCommandBuffer.commit documentation> 
commit :: (MonadDOM m) => WebGPUCommandBuffer -> m ()
commit :: forall (m :: * -> *). MonadDOM m => WebGPUCommandBuffer -> m ()
commit WebGPUCommandBuffer
self = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (WebGPUCommandBuffer
self WebGPUCommandBuffer
-> Getting (JSM JSVal) WebGPUCommandBuffer (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> () -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"commit" ()))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUCommandBuffer.presentDrawable Mozilla WebGPUCommandBuffer.presentDrawable documentation> 
presentDrawable ::
                (MonadDOM m) => WebGPUCommandBuffer -> WebGPUDrawable -> m ()
presentDrawable :: forall (m :: * -> *).
MonadDOM m =>
WebGPUCommandBuffer -> WebGPUDrawable -> m ()
presentDrawable WebGPUCommandBuffer
self WebGPUDrawable
drawable
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (WebGPUCommandBuffer
self WebGPUCommandBuffer
-> Getting (JSM JSVal) WebGPUCommandBuffer (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"presentDrawable" [WebGPUDrawable -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal WebGPUDrawable
drawable]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUCommandBuffer.completed Mozilla WebGPUCommandBuffer.completed documentation> 
getCompleted :: (MonadDOM m) => WebGPUCommandBuffer -> m ()
getCompleted :: forall (m :: * -> *). MonadDOM m => WebGPUCommandBuffer -> m ()
getCompleted WebGPUCommandBuffer
self
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void ((WebGPUCommandBuffer
self WebGPUCommandBuffer
-> Getting (JSM JSVal) WebGPUCommandBuffer (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> IndexPreservingGetter WebGPUCommandBuffer (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"completed") JSM JSVal -> (JSVal -> JSM JSVal) -> JSM JSVal
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> JSM JSVal
readPromise))