{-# LANGUAGE MagicHash #-}
{-# LANGUAGE UnboxedTuples #-}
{-# LANGUAGE JavaScriptFFI #-}
{-# LANGUAGE ForeignFunctionInterface #-}
{-# LANGUAGE UnliftedFFITypes #-}
{-# LANGUAGE GHCForeignImportPrim #-}
{-# LANGUAGE EmptyDataDecls #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeSynonymInstances #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE PolyKinds #-}
{-# LANGUAGE KindSignatures #-}
module JavaScript.TypedArray.Internal where
import Data.Typeable
import GHC.Types
import GHC.Exts
import GHC.ST
import GHC.Int
import GHC.Word
import GHCJS.Internal.Types
import GHCJS.Buffer.Types
import GHCJS.Types
import JavaScript.Array.Internal (SomeJSArray(..), JSArray)
import JavaScript.TypedArray.ArrayBuffer
import JavaScript.TypedArray.ArrayBuffer.Internal (SomeArrayBuffer(..))
import JavaScript.TypedArray.Internal.Types
elemSize :: SomeTypedArray e m -> Int
elemSize a = js_elemSize a
{-# INLINE [1] elemSize #-}
{-# RULES "elemSizeUint8Clamped" forall (x :: SomeUint8ClampedArray m). elemSize x = 1 #-}
{-# RULES "elemSizeUint8" forall (x :: SomeUint8Array m). elemSize x = 1 #-}
{-# RULES "elemSizeUint16" forall (x :: SomeUint16Array m). elemSize x = 2 #-}
{-# RULES "elemSizeUint32" forall (x :: SomeUint32Array m). elemSize x = 4 #-}
{-# RULES "elemSizeInt8" forall (x :: SomeInt8Array m). elemSize x = 1 #-}
{-# RULES "elemSizeInt16" forall (x :: SomeInt16Array m). elemSize x = 2 #-}
{-# RULES "elemSizeInt32" forall (x :: SomeInt32Array m). elemSize x = 4 #-}
{-# RULES "elemSizeFloat32" forall (x :: SomeFloat32Array m). elemSize x = 4 #-}
{-# RULES "elemSizeFloat64" forall (x :: SomeFloat64Array m). elemSize x = 8 #-}
instance TypedArray IOInt8Array where
index i a = IO (indexI8 i a)
unsafeIndex i a = IO (unsafeIndexI8 i a)
setIndex i (I8# x) a = IO (setIndexI i x a)
unsafeSetIndex i (I8# x) a = IO (unsafeSetIndexI i x a)
indexOf s (I8# x) a = IO (indexOfI s x a)
lastIndexOf s (I8# x) a = IO (lastIndexOfI s x a)
create l = IO (js_createInt8Array l)
fromArray a = int8ArrayFrom a
fromArrayBuffer b = undefined
instance TypedArray IOInt16Array where
index i a = IO (indexI16 i a)
unsafeIndex i a = IO (unsafeIndexI16 i a)
setIndex i (I16# x) a = IO (setIndexI i x a)
unsafeSetIndex i (I16# x) a = IO (unsafeSetIndexI i x a)
indexOf s (I16# x) a = IO (indexOfI s x a)
lastIndexOf s (I16# x) a = IO (lastIndexOfI s x a)
create l = IO (js_createInt16Array l)
fromArray a = int16ArrayFrom a
fromArrayBuffer b = undefined
instance TypedArray IOInt32Array where
index i a = IO (indexI i a)
unsafeIndex i a = IO (unsafeIndexI i a)
setIndex i (I# x) a = IO (setIndexI i x a)
unsafeSetIndex i (I# x) a = IO (unsafeSetIndexI i x a)
indexOf s (I# x) a = IO (indexOfI s x a)
lastIndexOf s (I# x) a = IO (lastIndexOfI s x a)
create l = IO (js_createInt32Array l)
fromArray a = int32ArrayFrom a
fromArrayBuffer b = undefined
instance TypedArray IOUint8ClampedArray where
index i a = IO (indexW8 i a)
unsafeIndex i a = IO (unsafeIndexW8 i a)
setIndex i (W8# x) a = IO (setIndexW i x a)
unsafeSetIndex i (W8# x) a = IO (unsafeSetIndexW i x a)
indexOf s (W8# x) a = IO (indexOfW s x a)
lastIndexOf s (W8# x) a = IO (lastIndexOfW s x a)
create l = IO (js_createUint8ClampedArray l)
fromArray a = uint8ClampedArrayFrom a
fromArrayBuffer b = undefined
instance TypedArray IOUint8Array where
index i a = IO (indexW8 i a)
unsafeIndex i a = IO (unsafeIndexW8 i a)
setIndex i (W8# x) a = IO (setIndexW i x a)
unsafeSetIndex i (W8# x) a = IO (unsafeSetIndexW i x a)
indexOf s (W8# x) a = IO (indexOfW s x a)
lastIndexOf s (W8# x) a = IO (lastIndexOfW s x a)
create l = IO (js_createUint8Array l)
fromArray a = uint8ArrayFrom a
fromArrayBuffer b = undefined
instance TypedArray IOUint16Array where
index i a = IO (indexW16 i a)
unsafeIndex i a = IO (unsafeIndexW16 i a)
setIndex i (W16# x) a = IO (setIndexW i x a)
unsafeSetIndex i (W16# x) a = IO (unsafeSetIndexW i x a)
indexOf s (W16# x) a = IO (indexOfW s x a)
lastIndexOf s (W16# x) a = IO (lastIndexOfW s x a)
create l = IO (js_createUint16Array l)
fromArray a = uint16ArrayFrom a
fromArrayBuffer b = undefined
instance TypedArray IOUint32Array where
index i a = IO (indexW i a)
unsafeIndex i a = IO (unsafeIndexW i a)
setIndex i (W# x) a = IO (setIndexW i x a)
unsafeSetIndex i (W# x) a = IO (unsafeSetIndexW i x a)
indexOf s (W# x) a = IO (indexOfW s x a)
lastIndexOf s (W# x) a = IO (lastIndexOfW s x a)
create l = IO (js_createUint32Array l)
fromArray a = uint32ArrayFrom a
fromArrayBuffer b = undefined
instance TypedArray IOFloat32Array where
index i a = IO (indexD i a)
unsafeIndex i a = IO (unsafeIndexD i a)
setIndex i x a = IO (setIndexD i x a)
unsafeSetIndex i x a = IO (unsafeSetIndexD i x a)
indexOf s x a = IO (indexOfD s x a)
lastIndexOf s x a = IO (lastIndexOfD s x a)
create l = IO (js_createFloat32Array l)
fromArray a = float32ArrayFrom a
fromArrayBuffer b = undefined
instance TypedArray IOFloat64Array where
index i a = IO (indexD i a)
unsafeIndex i a = IO (unsafeIndexD i a)
setIndex i x a = IO (setIndexD i x a)
unsafeSetIndex i x a = IO (unsafeSetIndexD i x a)
indexOf s x a = IO (indexOfD s x a)
lastIndexOf s x a = IO (lastIndexOfD s x a)
create l = IO (js_createFloat64Array l)
fromArray a = float64ArrayFrom a
fromArrayBuffer b = undefined
class TypedArray a where
unsafeIndex :: Int -> a -> IO (Elem a)
index :: Int -> a -> IO (Elem a)
unsafeSetIndex :: Int -> Elem a -> a -> IO ()
setIndex :: Int -> Elem a -> a -> IO ()
create :: Int -> IO a
fromArray :: SomeJSArray m -> IO a
fromArrayBuffer :: MutableArrayBuffer -> Int -> Maybe Int -> IO a
indexOf :: Int -> Elem a -> a -> IO Int
lastIndexOf :: Int -> Elem a -> a -> IO Int
indexI :: Int -> SomeTypedArray e m -> State# s -> (# State# s, Int #)
indexI a i = \s -> case js_indexI a i s of (# s', v #) -> (# s', I# v #)
{-# INLINE indexI #-}
indexI16 :: Int -> SomeTypedArray e m -> State# s -> (# State# s, Int16 #)
indexI16 a i = \s -> case js_indexI a i s of (# s', v #) -> (# s', I16# v #)
{-# INLINE indexI16 #-}
indexI8 :: Int -> SomeTypedArray e m -> State# s -> (# State# s, Int8 #)
indexI8 a i = \s -> case js_indexI a i s of (# s', v #) -> (# s', I8# v #)
{-# INLINE indexI8 #-}
indexW :: Int -> SomeTypedArray e m -> State# s -> (# State# s, Word #)
indexW a i = \s -> case js_indexW a i s of (# s', v #) -> (# s', W# v #)
{-# INLINE indexW #-}
indexW16 :: Int -> SomeTypedArray e m -> State# s -> (# State# s, Word16 #)
indexW16 a i = \s -> case js_indexW a i s of (# s', v #) -> (# s', W16# v #)
{-# INLINE indexW16 #-}
indexW8 :: Int -> SomeTypedArray e m -> State# s -> (# State# s, Word8 #)
indexW8 a i = \s -> case js_indexW a i s of (# s', v #) -> (# s', W8# v #)
{-# INLINE indexW8 #-}
indexD :: Int -> SomeTypedArray e m -> State# s -> (# State# s, Double #)
indexD a i = \s -> js_indexD a i s
{-# INLINE indexD #-}
unsafeIndexI :: Int -> SomeTypedArray e m -> State# s -> (# State# s, Int #)
unsafeIndexI a i = \s -> case js_unsafeIndexI a i s of (# s', v #) -> (# s', I# v #)
{-# INLINE unsafeIndexI #-}
unsafeIndexI16 :: Int -> SomeTypedArray e m -> State# s -> (# State# s, Int16 #)
unsafeIndexI16 a i = \s -> case js_unsafeIndexI a i s of (# s', v #) -> (# s', I16# v #)
{-# INLINE unsafeIndexI16 #-}
unsafeIndexI8 :: Int -> SomeTypedArray e m -> State# s -> (# State# s, Int8 #)
unsafeIndexI8 a i = \s -> case js_unsafeIndexI a i s of (# s', v #) -> (# s', I8# v #)
{-# INLINE unsafeIndexI8 #-}
unsafeIndexW :: Int -> SomeTypedArray e m -> State# s -> (# State# s, Word #)
unsafeIndexW a i = \s -> case js_unsafeIndexW a i s of (# s', v #) -> (# s', W# v #)
{-# INLINE unsafeIndexW #-}
unsafeIndexW16 :: Int -> SomeTypedArray e m -> State# s -> (# State# s, Word16 #)
unsafeIndexW16 a i = \s -> case js_unsafeIndexW a i s of (# s', v #) -> (# s', W16# v #)
{-# INLINE unsafeIndexW16 #-}
unsafeIndexW8 :: Int -> SomeTypedArray e m -> State# s -> (# State# s, Word8 #)
unsafeIndexW8 a i = \s -> case js_unsafeIndexW a i s of (# s', v #) -> (# s', W8# v #)
{-# INLINE unsafeIndexW8 #-}
unsafeIndexD :: Int -> SomeTypedArray e m -> State# s -> (# State# s, Double #)
unsafeIndexD a i = \s -> js_unsafeIndexD a i s
{-# INLINE unsafeIndexD #-}
int8ArrayFrom :: SomeJSArray m0 -> IO (SomeInt8Array m1)
int8ArrayFrom a = js_int8ArrayFromArray a
{-# INLINE int8ArrayFrom #-}
int16ArrayFrom :: SomeJSArray m0 -> IO (SomeInt16Array m1)
int16ArrayFrom a = js_int16ArrayFromArray a
{-# INLINE int16ArrayFrom #-}
int32ArrayFrom :: SomeJSArray m0 -> IO (SomeInt32Array m1)
int32ArrayFrom a = js_int32ArrayFromArray a
{-# INLINE int32ArrayFrom #-}
uint8ArrayFrom :: SomeJSArray m0 -> IO (SomeUint8Array m1)
uint8ArrayFrom a = js_uint8ArrayFromArray a
{-# INLINE uint8ArrayFrom #-}
uint8ClampedArrayFrom :: SomeJSArray m0 -> IO (SomeUint8ClampedArray m1)
uint8ClampedArrayFrom a = js_uint8ClampedArrayFromArray a
{-# INLINE uint8ClampedArrayFrom #-}
uint16ArrayFrom :: SomeJSArray m0 -> IO (SomeUint16Array m1)
uint16ArrayFrom a = js_uint16ArrayFromArray a
{-# INLINE uint16ArrayFrom #-}
uint32ArrayFrom :: SomeJSArray m0 -> IO (SomeUint32Array m1)
uint32ArrayFrom a = js_uint32ArrayFromArray a
{-# INLINE uint32ArrayFrom #-}
float32ArrayFrom :: SomeJSArray m0 -> IO (SomeFloat32Array m1)
float32ArrayFrom a = js_float32ArrayFromArray a
{-# INLINE float32ArrayFrom #-}
float64ArrayFrom :: SomeJSArray m0 -> IO (SomeFloat64Array m1)
float64ArrayFrom a = js_float64ArrayFromArray a
{-# INLINE float64ArrayFrom #-}
setIndexI :: Mutability m ~ IsMutable
=> Int -> Int# -> SomeTypedArray e m -> State# s -> (# State# s, () #)
setIndexI i x a = js_setIndexI i x a
{-# INLINE setIndexI #-}
unsafeSetIndexI :: Mutability m ~ IsMutable
=> Int -> Int# -> SomeTypedArray e m -> State# s -> (# State# s, () #)
unsafeSetIndexI i x a = js_unsafeSetIndexI i x a
{-# INLINE unsafeSetIndexI #-}
setIndexW :: Mutability m ~ IsMutable
=> Int -> Word# -> SomeTypedArray e m -> State# s -> (# State# s, () #)
setIndexW i x a = js_setIndexW i x a
{-# INLINE setIndexW #-}
unsafeSetIndexW :: Mutability m ~ IsMutable
=> Int -> Word# -> SomeTypedArray e m -> State# s -> (# State# s, () #)
unsafeSetIndexW i x a = js_unsafeSetIndexW i x a
{-# INLINE unsafeSetIndexW #-}
setIndexD :: Mutability m ~ IsMutable
=> Int -> Double -> SomeTypedArray e m -> State# s -> (# State# s, () #)
setIndexD i x a = js_setIndexD i x a
{-# INLINE setIndexD #-}
unsafeSetIndexD :: Mutability m ~ IsMutable
=> Int -> Double -> SomeTypedArray e m -> State# s -> (# State# s, () #)
unsafeSetIndexD i x a = js_unsafeSetIndexD i x a
{-# INLINE unsafeSetIndexD #-}
indexOfI :: Mutability m ~ IsMutable
=> Int -> Int# -> SomeTypedArray e m -> State# s -> (# State# s, Int #)
indexOfI s x a = js_indexOfI s x a
{-# INLINE indexOfI #-}
indexOfW :: Int -> Word# -> SomeTypedArray e m -> State# s -> (# State# s, Int #)
indexOfW s x a = js_indexOfW s x a
{-# INLINE indexOfW #-}
indexOfD :: Int -> Double -> SomeTypedArray e m -> State# s -> (# State# s, Int #)
indexOfD s x a = js_indexOfD s x a
{-# INLINE indexOfD #-}
lastIndexOfI :: Int -> Int# -> SomeTypedArray e m -> State# s -> (# State# s, Int #)
lastIndexOfI s x a = js_lastIndexOfI s x a
{-# INLINE lastIndexOfI #-}
lastIndexOfW :: Int -> Word# -> SomeTypedArray e m -> State# s -> (# State# s, Int #)
lastIndexOfW s x a = js_lastIndexOfW s x a
{-# INLINE lastIndexOfW #-}
lastIndexOfD :: Int -> Double -> SomeTypedArray e m -> State# s -> (# State# s, Int #)
lastIndexOfD s x a = js_lastIndexOfD s x a
{-# INLINE lastIndexOfD #-}
length :: SomeTypedArray e m -> Int
length x = js_length x
{-# INLINE length #-}
byteLength :: SomeTypedArray e m -> Int
byteLength x = js_byteLength x
{-# INLINE byteLength #-}
byteOffset :: SomeTypedArray e m -> Int
byteOffset x = js_byteOffset x
{-# INLINE byteOffset #-}
buffer :: SomeTypedArray e m -> SomeArrayBuffer m
buffer x = js_buffer x
{-# INLINE buffer #-}
subarray :: Int -> Int -> SomeTypedArray e m -> SomeTypedArray e m
subarray begin end x = js_subarray begin end x
{-# INLINE subarray #-}
set :: Int -> SomeTypedArray e m -> SomeTypedArray e1 Mutable -> IO ()
set offset src dest = IO (js_set offset src dest)
{-# INLINE set #-}
unsafeSet :: Int -> SomeTypedArray e m -> SomeTypedArray e1 Mutable -> IO ()
unsafeSet offset src dest = IO (js_unsafeSet offset src dest)
{-# INLINE unsafeSet #-}
foreign import javascript unsafe
"$1.length" js_length :: SomeTypedArray e m -> Int
foreign import javascript unsafe
"$1.byteLength" js_byteLength :: SomeTypedArray e m -> Int
foreign import javascript unsafe
"$1.byteOffset" js_byteOffset :: SomeTypedArray e m -> Int
foreign import javascript unsafe
"$1.buffer" js_buffer :: SomeTypedArray e m -> SomeArrayBuffer m
foreign import javascript unsafe
"$3.subarray($1,$2)"
js_subarray :: Int -> Int -> SomeTypedArray e m -> SomeTypedArray e m
foreign import javascript safe
"$3.set($1,$2)"
js_set :: Int -> SomeTypedArray e m -> SomeTypedArray e1 m1 -> State# s -> (# State# s, () #)
foreign import javascript unsafe
"$3.set($1,$2)"
js_unsafeSet :: Int -> SomeTypedArray e m -> SomeTypedArray e1 m1 -> State# s -> (# State# s, () #)
foreign import javascript unsafe
"$1.BYTES_PER_ELEMENT"
js_elemSize :: SomeTypedArray e m -> Int
foreign import javascript safe
"$2[$1]" js_indexI
:: Int -> SomeTypedArray e m -> State# s -> (# State# s, Int# #)
foreign import javascript safe
"$2[$1]" js_indexW
:: Int -> SomeTypedArray e m -> State# s -> (# State# s, Word# #)
foreign import javascript safe
"$2[$1]" js_indexD
:: Int -> SomeTypedArray e m -> State# s -> (# State# s, Double #)
foreign import javascript unsafe
"$2[$1]" js_unsafeIndexI
:: Int -> SomeTypedArray e m -> State# s -> (# State# s, Int# #)
foreign import javascript unsafe
"$2[$1]" js_unsafeIndexW
:: Int -> SomeTypedArray e m -> State# s -> (# State# s, Word# #)
foreign import javascript unsafe
"$2[$1]" js_unsafeIndexD
:: Int -> SomeTypedArray e m -> State# s -> (# State# s, Double #)
foreign import javascript safe
"$3[$1] = $2;" js_setIndexI
:: Int -> Int# -> SomeTypedArray e m -> State# s -> (# State# s, () #)
foreign import javascript safe
"$3[$1] = $2;" js_setIndexW
:: Int -> Word# -> SomeTypedArray e m -> State# s -> (# State# s, () #)
foreign import javascript safe
"$3[$1] = $2;" js_setIndexD
:: Int -> Double -> SomeTypedArray e m -> State# s -> (# State# s, () #)
foreign import javascript unsafe
"$3[$1] = $2;" js_unsafeSetIndexI
:: Int -> Int# -> SomeTypedArray e m -> State# s -> (# State# s, () #)
foreign import javascript unsafe
"$3[$1] = $2;" js_unsafeSetIndexW
:: Int -> Word# -> SomeTypedArray e m -> State# s -> (# State# s, () #)
foreign import javascript unsafe
"$3[$1] = $2;" js_unsafeSetIndexD
:: Int -> Double -> SomeTypedArray e m -> State# s -> (# State# s, () #)
foreign import javascript unsafe
"$3.indexOf($2,$1)" js_indexOfI
:: Int -> Int# -> SomeTypedArray e m -> State# s -> (# State# s, Int #)
foreign import javascript unsafe
"$3.indexOf($2,$1)" js_indexOfW
:: Int -> Word# -> SomeTypedArray e m -> State# s -> (# State# s, Int #)
foreign import javascript unsafe
"$3.indexOf($2,$1)" js_indexOfD
:: Int -> Double -> SomeTypedArray e m -> State# s -> (# State# s, Int #)
foreign import javascript unsafe
"$3.lastIndexOf($2,$1)" js_lastIndexOfI
:: Int -> Int# -> SomeTypedArray e m -> State# s -> (# State# s, Int #)
foreign import javascript unsafe
"$3.lastIndexOf($2,$1)" js_lastIndexOfW
:: Int -> Word# -> SomeTypedArray e m -> State# s -> (# State# s, Int #)
foreign import javascript unsafe
"$3.lastIndexOf($2,$1)" js_lastIndexOfD
:: Int -> Double -> SomeTypedArray e m -> State# s -> (# State# s, Int #)
foreign import javascript unsafe
"new Int8Array($1)"
js_createInt8Array :: Int -> State# s -> (# State# s, SomeInt8Array m #)
foreign import javascript unsafe
"new Int16Array($1)"
js_createInt16Array :: Int -> State# s -> (# State# s, SomeInt16Array m #)
foreign import javascript unsafe
"new Int32Array($1)"
js_createInt32Array :: Int -> State# s -> (# State# s, SomeInt32Array m #)
foreign import javascript unsafe
"new Uint8ClampedArray($1)"
js_createUint8ClampedArray :: Int -> State# s -> (# State# s, SomeUint8ClampedArray m #)
foreign import javascript unsafe
"new Uint8Array($1)"
js_createUint8Array :: Int -> State# s -> (# State# s, SomeUint8Array m #)
foreign import javascript unsafe
"new Uint16Array($1)"
js_createUint16Array :: Int -> State# s -> (# State# s, SomeUint16Array m #)
foreign import javascript unsafe
"new Uint32Array($1)"
js_createUint32Array :: Int -> State# s -> (# State# s, SomeUint32Array m #)
foreign import javascript unsafe
"new Float32Array($1)"
js_createFloat32Array :: Int -> State# s -> (# State# s, SomeFloat32Array m #)
foreign import javascript unsafe
"new Float64Array($1)"
js_createFloat64Array :: Int -> State# s -> (# State# s, SomeFloat64Array m #)
foreign import javascript unsafe
"Int8Array.from($1)"
js_int8ArrayFromArray :: SomeJSArray m0 -> IO (SomeInt8Array m1)
foreign import javascript unsafe
"Int16Array.from($1)"
js_int16ArrayFromArray :: SomeJSArray m0 -> IO (SomeInt16Array m1)
foreign import javascript unsafe
"Int32Array.from($1)"
js_int32ArrayFromArray :: SomeJSArray m0 -> IO (SomeInt32Array m1)
foreign import javascript unsafe
"Uint8ClampedArray.from($1)"
js_uint8ClampedArrayFromArray :: SomeJSArray m0 -> IO (SomeUint8ClampedArray m1)
foreign import javascript unsafe
"Uint8Array.from($1)"
js_uint8ArrayFromArray :: SomeJSArray m0 -> IO (SomeUint8Array m1)
foreign import javascript unsafe
"Uint16Array.from($1)"
js_uint16ArrayFromArray :: SomeJSArray m0 -> IO (SomeUint16Array m1)
foreign import javascript unsafe
"Uint32Array.from($1)"
js_uint32ArrayFromArray :: SomeJSArray m0 -> IO (SomeUint32Array m1)
foreign import javascript unsafe
"Float32Array.from($1)"
js_float32ArrayFromArray :: SomeJSArray m0 -> IO (SomeFloat32Array m1)
foreign import javascript unsafe
"Float64Array.from($1)"
js_float64ArrayFromArray :: SomeJSArray m0 -> IO (SomeFloat64Array m1)
foreign import javascript unsafe
"new Int8Array($1)"
js_int8ArrayFromJSVal :: JSVal -> SomeInt8Array m
foreign import javascript unsafe
"new Int16Array($1)"
js_int16ArrayFromJSVal :: JSVal -> SomeInt16Array m
foreign import javascript unsafe
"new Int32Array($1)"
js_int32ArrayFromJSVal :: JSVal -> SomeInt32Array m
foreign import javascript unsafe
"new Uint8ClampedArray($1)"
js_uint8ClampedArrayFromJSVal :: JSVal -> SomeUint8ClampedArray m
foreign import javascript unsafe
"new Uint8Array($1)"
js_uint8ArrayFromJSVal :: JSVal -> SomeUint8Array m
foreign import javascript unsafe
"new Uint16Array($1)"
js_uint16ArrayFromJSVal :: JSVal -> SomeUint16Array m
foreign import javascript unsafe
"new Uint32Array($1)"
js_uint32ArrayFromJSVal :: JSVal -> SomeUint32Array m
foreign import javascript unsafe
"new Float32Array($1)"
js_float32ArrayFromJSVal :: JSVal -> SomeFloat32Array m
foreign import javascript unsafe
"new Float64Array($1)"
js_float64ArrayFromJSVal :: JSVal -> SomeFloat64Array m