{-# LANGUAGE PatternSynonyms #-}
-- For HasCallStack compatibility
{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module JSDOM.Generated.ConvolverNode
       (setBuffer, getBuffer, getBufferUnsafe, getBufferUnchecked,
        setNormalize, getNormalize, ConvolverNode(..), gTypeConvolverNode)
       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/ConvolverNode.buffer Mozilla ConvolverNode.buffer documentation> 
setBuffer ::
          (MonadDOM m) => ConvolverNode -> Maybe AudioBuffer -> m ()
setBuffer :: forall (m :: * -> *).
MonadDOM m =>
ConvolverNode -> Maybe AudioBuffer -> m ()
setBuffer ConvolverNode
self Maybe AudioBuffer
val = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (ConvolverNode
self ConvolverNode -> Getting (DOM ()) ConvolverNode (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
"buffer" (Maybe AudioBuffer -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe AudioBuffer
val))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/ConvolverNode.buffer Mozilla ConvolverNode.buffer documentation> 
getBuffer :: (MonadDOM m) => ConvolverNode -> m (Maybe AudioBuffer)
getBuffer :: forall (m :: * -> *).
MonadDOM m =>
ConvolverNode -> m (Maybe AudioBuffer)
getBuffer ConvolverNode
self = DOM (Maybe AudioBuffer) -> m (Maybe AudioBuffer)
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((ConvolverNode
self ConvolverNode
-> Getting (JSM JSVal) ConvolverNode (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> IndexPreservingGetter ConvolverNode (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"buffer") JSM JSVal
-> (JSVal -> DOM (Maybe AudioBuffer)) -> DOM (Maybe AudioBuffer)
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 AudioBuffer)
forall a. FromJSVal a => JSVal -> JSM (Maybe a)
fromJSVal)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/ConvolverNode.buffer Mozilla ConvolverNode.buffer documentation> 
getBufferUnsafe ::
                (MonadDOM m, HasCallStack) => ConvolverNode -> m AudioBuffer
getBufferUnsafe :: forall (m :: * -> *).
(MonadDOM m, HasCallStack) =>
ConvolverNode -> m AudioBuffer
getBufferUnsafe ConvolverNode
self
  = DOM AudioBuffer -> m AudioBuffer
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((ConvolverNode
self ConvolverNode
-> Getting (JSM JSVal) ConvolverNode (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> IndexPreservingGetter ConvolverNode (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"buffer") JSM JSVal
-> (JSVal -> DOM (Maybe AudioBuffer)) -> DOM (Maybe AudioBuffer)
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 AudioBuffer)
forall a. FromJSVal a => JSVal -> JSM (Maybe a)
fromJSVal) DOM (Maybe AudioBuffer)
-> (Maybe AudioBuffer -> DOM AudioBuffer) -> DOM AudioBuffer
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>=
         DOM AudioBuffer
-> (AudioBuffer -> DOM AudioBuffer)
-> Maybe AudioBuffer
-> DOM AudioBuffer
forall b a. b -> (a -> b) -> Maybe a -> b
maybe (String -> DOM AudioBuffer
forall a. HasCallStack => String -> a
Prelude.error String
"Nothing to return") AudioBuffer -> DOM AudioBuffer
forall a. a -> JSM a
forall (m :: * -> *) a. Monad m => a -> m a
return)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/ConvolverNode.buffer Mozilla ConvolverNode.buffer documentation> 
getBufferUnchecked ::
                   (MonadDOM m) => ConvolverNode -> m AudioBuffer
getBufferUnchecked :: forall (m :: * -> *). MonadDOM m => ConvolverNode -> m AudioBuffer
getBufferUnchecked ConvolverNode
self
  = DOM AudioBuffer -> m AudioBuffer
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((ConvolverNode
self ConvolverNode
-> Getting (JSM JSVal) ConvolverNode (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> IndexPreservingGetter ConvolverNode (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"buffer") JSM JSVal -> (JSVal -> DOM AudioBuffer) -> DOM AudioBuffer
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 AudioBuffer
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/ConvolverNode.normalize Mozilla ConvolverNode.normalize documentation> 
setNormalize :: (MonadDOM m) => ConvolverNode -> Bool -> m ()
setNormalize :: forall (m :: * -> *). MonadDOM m => ConvolverNode -> Bool -> m ()
setNormalize ConvolverNode
self Bool
val
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (ConvolverNode
self ConvolverNode -> Getting (DOM ()) ConvolverNode (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
"normalize" (Bool -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Bool
val))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/ConvolverNode.normalize Mozilla ConvolverNode.normalize documentation> 
getNormalize :: (MonadDOM m) => ConvolverNode -> m Bool
getNormalize :: forall (m :: * -> *). MonadDOM m => ConvolverNode -> m Bool
getNormalize ConvolverNode
self
  = DOM Bool -> m Bool
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((ConvolverNode
self ConvolverNode
-> Getting (JSM JSVal) ConvolverNode (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> IndexPreservingGetter ConvolverNode (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"normalize") JSM JSVal -> (JSVal -> DOM Bool) -> DOM Bool
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 Bool
forall value. ToJSVal value => value -> DOM Bool
valToBool)