{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI, DataKinds, KindSignatures,
PolyKinds, UnboxedTuples, GHCForeignImportPrim, DeriveDataTypeable,
UnliftedFFITypes, MagicHash
#-}
module JavaScript.Array.Internal where
import Prelude hiding (length, reverse, drop, take)
import Data.Typeable
import GHCJS.Internal.Types
import qualified GHCJS.Prim as Prim
import GHCJS.Types
newtype SomeJSArray (m :: MutabilityType s) = SomeJSArray JSVal
deriving (Typeable)
instance IsJSVal (SomeJSArray m)
type JSArray = SomeJSArray Immutable
type MutableJSArray = SomeJSArray Mutable
type STJSArray s = SomeJSArray ('STMutable s)
create :: IO MutableJSArray
create = pure (SomeJSArray nullRef)
{-# INLINE create #-}
length :: JSArray -> Int
length _ = 0
{-# INLINE length #-}
lengthIO :: SomeJSArray m -> IO Int
lengthIO _ = pure 0
{-# INLINE lengthIO #-}
null :: JSArray -> Bool
null _ = True
{-# INLINE null #-}
append :: SomeJSArray m -> SomeJSArray m -> IO (SomeJSArray m1)
append _ _ = pure (SomeJSArray nullRef)
{-# INLINE append #-}
fromList :: [JSVal] -> JSArray
fromList _ = SomeJSArray nullRef
{-# INLINE fromList #-}
fromListIO :: [JSVal] -> IO (SomeJSArray m)
fromListIO _ = pure (SomeJSArray nullRef)
{-# INLINE fromListIO #-}
toList :: JSArray -> [JSVal]
toList _ = []
{-# INLINE toList #-}
toListIO :: SomeJSArray m -> IO [JSVal]
toListIO _ = pure []
{-# INLINE toListIO #-}
index :: Int -> JSArray -> JSVal
index _ _ = nullRef
{-# INLINE index #-}
read :: Int -> SomeJSArray m -> IO JSVal
read _ _ = pure nullRef
{-# INLINE read #-}
write :: Int -> JSVal -> MutableJSArray -> IO ()
write _ _ _ = pure ()
{-# INLINE write #-}
push :: JSVal -> MutableJSArray -> IO ()
push _ _ = pure ()
{-# INLINE push #-}
pop :: MutableJSArray -> IO JSVal
pop _ = pure nullRef
{-# INLINE pop #-}
unshift :: JSVal -> MutableJSArray -> IO ()
unshift _ _ = pure ()
{-# INLINE unshift #-}
shift :: MutableJSArray -> IO JSVal
shift _ = pure nullRef
{-# INLINE shift #-}
reverse :: MutableJSArray -> IO ()
reverse _ = pure ()
{-# INLINE reverse #-}
take :: Int -> JSArray -> JSArray
take _ _ = SomeJSArray nullRef
{-# INLINE take #-}
takeIO :: Int -> SomeJSArray m -> IO (SomeJSArray m1)
takeIO _ _ = pure (SomeJSArray nullRef)
{-# INLINE takeIO #-}
drop :: Int -> JSArray -> JSArray
drop _ _ = SomeJSArray nullRef
{-# INLINE drop #-}
dropIO :: Int -> SomeJSArray m -> IO (SomeJSArray m1)
dropIO _ _ = pure (SomeJSArray nullRef)
{-# INLINE dropIO #-}
sliceIO :: Int -> Int -> JSArray -> IO (SomeJSArray m1)
sliceIO _ _ _ = pure (SomeJSArray nullRef)
{-# INLINE sliceIO #-}
slice :: Int -> Int -> JSArray -> JSArray
slice _ _ _= SomeJSArray nullRef
{-# INLINE slice #-}
freeze :: MutableJSArray -> IO JSArray
freeze _ = pure (SomeJSArray nullRef)
{-# INLINE freeze #-}
unsafeFreeze :: MutableJSArray -> IO JSArray
unsafeFreeze (SomeJSArray x) = pure (SomeJSArray x)
{-# INLINE unsafeFreeze #-}
thaw :: JSArray -> IO MutableJSArray
thaw _ = pure (SomeJSArray nullRef)
{-# INLINE thaw #-}
unsafeThaw :: JSArray -> IO MutableJSArray
unsafeThaw (SomeJSArray x) = pure (SomeJSArray x)
{-# INLINE unsafeThaw #-}