{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE PolyKinds #-}
module JavaScript.TypedArray.Internal.Types where
import GHCJS.Types
import GHCJS.Internal.Types
import Language.Javascript.JSaddle (IsJSVal)
import Data.Int
import Data.Typeable
import Data.Word
newtype SomeTypedArray (e :: TypedArrayElem) (m :: MutabilityType s) =
SomeTypedArray JSVal deriving Typeable
instance IsJSVal (SomeTypedArray e m)
type SomeSTTypedArray s (e :: TypedArrayElem) = SomeTypedArray e (STMutable s)
data TypedArrayElem = Int8Elem
| Int16Elem
| Int32Elem
| Uint8Elem
| Uint16Elem
| Uint32Elem
| Uint8ClampedElem
| Float32Elem
| Float64Elem
type SomeInt8Array = SomeTypedArray Int8Elem
type SomeInt16Array = SomeTypedArray Int16Elem
type SomeInt32Array = SomeTypedArray Int32Elem
type SomeUint8Array = SomeTypedArray Uint8Elem
type SomeUint16Array = SomeTypedArray Uint16Elem
type SomeUint32Array = SomeTypedArray Uint32Elem
type SomeFloat32Array = SomeTypedArray Float32Elem
type SomeFloat64Array = SomeTypedArray Float64Elem
type SomeUint8ClampedArray = SomeTypedArray Uint8ClampedElem
type Int8Array = SomeInt8Array Immutable
type Int16Array = SomeInt16Array Immutable
type Int32Array = SomeInt32Array Immutable
type Uint8Array = SomeUint8Array Immutable
type Uint16Array = SomeUint16Array Immutable
type Uint32Array = SomeUint32Array Immutable
type Uint8ClampedArray = SomeUint8ClampedArray Immutable
type Float32Array = SomeFloat32Array Immutable
type Float64Array = SomeFloat64Array Immutable
type IOInt8Array = SomeInt8Array Mutable
type IOInt16Array = SomeInt16Array Mutable
type IOInt32Array = SomeInt32Array Mutable
type IOUint8Array = SomeUint8Array Mutable
type IOUint16Array = SomeUint16Array Mutable
type IOUint32Array = SomeUint32Array Mutable
type IOUint8ClampedArray = SomeUint8ClampedArray Mutable
type IOFloat32Array = SomeFloat32Array Mutable
type IOFloat64Array = SomeFloat64Array Mutable
type STInt8Array s = SomeSTTypedArray s Int8Elem
type STInt16Array s = SomeSTTypedArray s Int16Elem
type STInt32Array s = SomeSTTypedArray s Int32Elem
type STUint8Array s = SomeSTTypedArray s Uint8Elem
type STUint16Array s = SomeSTTypedArray s Uint16Elem
type STUint32Array s = SomeSTTypedArray s Uint32Elem
type STFloat32Array s = SomeSTTypedArray s Float32Elem
type STFloat64Array s = SomeSTTypedArray s Float64Elem
type STUint8ClampedArray s = SomeSTTypedArray s Uint8ClampedElem
type family Elem x where
Elem (SomeUint8Array m) = Word8
Elem (SomeUint8ClampedArray m) = Word8
Elem (SomeUint16Array m) = Word16
Elem (SomeUint32Array m) = Word
Elem (SomeInt8Array m) = Int8
Elem (SomeInt16Array m) = Int16
Elem (SomeInt32Array m) = Int
Elem (SomeFloat32Array m) = Double
Elem (SomeFloat64Array m) = Double
Elem (STUint8Array s) = Word8
Elem (STUint8ClampedArray s) = Word8
Elem (STUint16Array s) = Word16
Elem (STUint32Array s) = Word
Elem (STInt8Array s) = Int8
Elem (STInt16Array s) = Int16
Elem (STInt32Array s) = Int
Elem (STFloat32Array s) = Double
Elem (STFloat64Array s) = Double