{-# 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 :: forall (m :: * -> *).
MonadDOM m =>
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
^. String -> () -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"createCommandBuffer" ()) JSM JSVal
-> (JSVal -> DOM (Maybe WebGPUCommandBuffer))
-> DOM (Maybe WebGPUCommandBuffer)
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 (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_ :: forall (m :: * -> *). MonadDOM m => 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
^. String -> () -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"createCommandBuffer" ()))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUCommandQueue.createCommandBuffer Mozilla WebGPUCommandQueue.createCommandBuffer documentation> 
createCommandBufferUnsafe ::
                          (MonadDOM m, HasCallStack) =>
                            WebGPUCommandQueue -> m WebGPUCommandBuffer
createCommandBufferUnsafe :: forall (m :: * -> *).
(MonadDOM m, HasCallStack) =>
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
^. String -> () -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"createCommandBuffer" ()) JSM JSVal
-> (JSVal -> DOM (Maybe WebGPUCommandBuffer))
-> DOM (Maybe WebGPUCommandBuffer)
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 (Maybe WebGPUCommandBuffer)
forall a. FromJSVal a => JSVal -> JSM (Maybe a)
fromJSVal) DOM (Maybe WebGPUCommandBuffer)
-> (Maybe WebGPUCommandBuffer -> DOM WebGPUCommandBuffer)
-> DOM WebGPUCommandBuffer
forall a b. JSM a -> (a -> JSM b) -> JSM b
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 (String -> DOM WebGPUCommandBuffer
forall a. HasCallStack => String -> a
Prelude.error String
"Nothing to return") WebGPUCommandBuffer -> DOM WebGPUCommandBuffer
forall a. a -> JSM a
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 :: forall (m :: * -> *).
MonadDOM m =>
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
^. String -> () -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"createCommandBuffer" ()) JSM JSVal
-> (JSVal -> DOM WebGPUCommandBuffer) -> DOM WebGPUCommandBuffer
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 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 :: forall (m :: * -> *) val.
(MonadDOM m, ToJSString val) =>
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
^. String
-> 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 String
"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 :: forall (m :: * -> *) result.
(MonadDOM m, FromJSString result) =>
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
^. String -> IndexPreservingGetter WebGPUCommandQueue (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"label") JSM JSVal -> (JSVal -> DOM result) -> DOM result
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 result
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)