{-# LANGUAGE PatternSynonyms #-}
-- For HasCallStack compatibility
{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module JSDOM.Generated.WebGPUCommandQueue
       (createCommandBuffer, createCommandBuffer_,
        createCommandBufferUnsafe, createCommandBufferUnchecked, setLabel,
        getLabel, WebGPUCommandQueue(..), gTypeWebGPUCommandQueue)
       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/WebGPUCommandQueue.createCommandBuffer Mozilla WebGPUCommandQueue.createCommandBuffer documentation> 
createCommandBuffer ::
                    (MonadDOM m) => WebGPUCommandQueue -> m (Maybe WebGPUCommandBuffer)
createCommandBuffer :: WebGPUCommandQueue -> m (Maybe WebGPUCommandBuffer)
createCommandBuffer WebGPUCommandQueue
self
  = DOM (Maybe WebGPUCommandBuffer) -> m (Maybe WebGPUCommandBuffer)
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((WebGPUCommandQueue
self WebGPUCommandQueue
-> Getting (JSM JSVal) WebGPUCommandQueue (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> () -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"createCommandBuffer" ()) JSM JSVal
-> (JSVal -> DOM (Maybe WebGPUCommandBuffer))
-> DOM (Maybe WebGPUCommandBuffer)
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM (Maybe WebGPUCommandBuffer)
forall a. FromJSVal a => JSVal -> JSM (Maybe a)
fromJSVal)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUCommandQueue.createCommandBuffer Mozilla WebGPUCommandQueue.createCommandBuffer documentation> 
createCommandBuffer_ :: (MonadDOM m) => WebGPUCommandQueue -> m ()
createCommandBuffer_ :: WebGPUCommandQueue -> m ()
createCommandBuffer_ WebGPUCommandQueue
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 (WebGPUCommandQueue
self WebGPUCommandQueue
-> Getting (JSM JSVal) WebGPUCommandQueue (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> () -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"createCommandBuffer" ()))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUCommandQueue.createCommandBuffer Mozilla WebGPUCommandQueue.createCommandBuffer documentation> 
createCommandBufferUnsafe ::
                          (MonadDOM m, HasCallStack) =>
                            WebGPUCommandQueue -> m WebGPUCommandBuffer
createCommandBufferUnsafe :: WebGPUCommandQueue -> m WebGPUCommandBuffer
createCommandBufferUnsafe WebGPUCommandQueue
self
  = DOM WebGPUCommandBuffer -> m WebGPUCommandBuffer
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((WebGPUCommandQueue
self WebGPUCommandQueue
-> Getting (JSM JSVal) WebGPUCommandQueue (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> () -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"createCommandBuffer" ()) JSM JSVal
-> (JSVal -> DOM (Maybe WebGPUCommandBuffer))
-> DOM (Maybe WebGPUCommandBuffer)
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM (Maybe WebGPUCommandBuffer)
forall a. FromJSVal a => JSVal -> JSM (Maybe a)
fromJSVal) DOM (Maybe WebGPUCommandBuffer)
-> (Maybe WebGPUCommandBuffer -> DOM WebGPUCommandBuffer)
-> DOM WebGPUCommandBuffer
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>=
         DOM WebGPUCommandBuffer
-> (WebGPUCommandBuffer -> DOM WebGPUCommandBuffer)
-> Maybe WebGPUCommandBuffer
-> DOM WebGPUCommandBuffer
forall b a. b -> (a -> b) -> Maybe a -> b
maybe ([Char] -> DOM WebGPUCommandBuffer
forall a. HasCallStack => [Char] -> a
Prelude.error [Char]
"Nothing to return") WebGPUCommandBuffer -> DOM WebGPUCommandBuffer
forall (m :: * -> *) a. Monad m => a -> m a
return)

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

-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUCommandQueue.label Mozilla WebGPUCommandQueue.label documentation> 
setLabel ::
         (MonadDOM m, ToJSString val) => WebGPUCommandQueue -> val -> m ()
setLabel :: WebGPUCommandQueue -> val -> m ()
setLabel WebGPUCommandQueue
self val
val = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (WebGPUCommandQueue
self WebGPUCommandQueue
-> Getting (DOM ()) WebGPUCommandQueue (DOM ()) -> DOM ()
forall s a. s -> Getting a s a -> a
^. [Char]
-> JSM JSVal
-> forall o. MakeObject o => IndexPreservingGetter o (DOM ())
forall name val.
(ToJSString name, ToJSVal val) =>
name
-> val
-> forall o. MakeObject o => IndexPreservingGetter o (DOM ())
jss [Char]
"label" (val -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal val
val))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUCommandQueue.label Mozilla WebGPUCommandQueue.label documentation> 
getLabel ::
         (MonadDOM m, FromJSString result) => WebGPUCommandQueue -> m result
getLabel :: WebGPUCommandQueue -> m result
getLabel WebGPUCommandQueue
self
  = DOM result -> m result
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((WebGPUCommandQueue
self WebGPUCommandQueue
-> Getting (JSM JSVal) WebGPUCommandQueue (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter WebGPUCommandQueue (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"label") JSM JSVal -> (JSVal -> DOM result) -> DOM result
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM result
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)