@@ -0,0 +1,30 @@
1+{-# LANGUAGE CPP #-}
2+module Language.Javascript.JSaddle.Helper where
3+
4+import GHCJS.Types (JSVal)
5+import Language.Javascript.JSaddle.Types (JSM)
6+
7+#ifdef ghcjs_HOST_OS
8+import GHCJS.Marshal.Pure (pFromJSVal, pToJSVal)
9+import JavaScript.TypedArray.ArrayBuffer (MutableArrayBuffer)
10+#else
11+import JavaScript.TypedArray.ArrayBuffer.Internal (MutableArrayBuffer, SomeArrayBuffer(..))
12+#endif
13+
14+-- | Helper function needed because there is no FromJSVal instance for MutableArrayBuffer
15+mutableArrayBufferFromJSVal :: JSVal -> JSM MutableArrayBuffer
16+#ifdef ghcjs_HOST_OS
17+mutableArrayBufferFromJSVal = return . pFromJSVal
18+#else
19+mutableArrayBufferFromJSVal = return . SomeArrayBuffer
20+#endif
21+{-# INLINE mutableArrayBufferFromJSVal #-}
22+
23+-- | Helper function needed because there is no ToJSVal instance for MutableArrayBuffer
24+mutableArrayBufferToJSVal :: MutableArrayBuffer -> JSM JSVal
25+#ifdef ghcjs_HOST_OS
26+mutableArrayBufferToJSVal = return . pToJSVal
27+#else
28+mutableArrayBufferToJSVal (SomeArrayBuffer v) = return v
29+#endif
30+{-# INLINE mutableArrayBufferToJSVal #-}