on develop help sign in
Avoid using CPP
commit5dbf17d47378f6079189317330a02ce11a82c863 authorMaciej Kazulak <kazulakm@gmail.com> dateThu 13 Apr 2017, 22:26 (10 years ago) parent1d87931
4 files changed+29−18
reflex-dom-core/reflex-dom-core.cabal+7−1 reflex-dom-core/src-ghc/Foreign/JavaScript/Internal/Utils.hs+9 reflex-dom-core/src-ghcjs/Foreign/JavaScript/Internal/Utils.hs+11 reflex-dom-core/src/Foreign/JavaScript/Utils.hs+2−17
reflex-dom-core/reflex-dom-core.cabal+7−1
@@ -11,7 +11,9 @@ Category: FRP, Web, GUI, HTML, Javascript, Reactive, Reactivity, User Interfaces
1111Build-type: Simple
1212Cabal-version: >=1.9.2
1313-- Deal with https://github.com/haskell/cabal/issues/2544 / https://github.com/haskell/cabal/issues/367
14−extra-source-files: src/Reflex/Dom/Xhr/Foreign.hs
14+extra-source-files: src-ghc/Foreign/JavaScript/Internal/Utils.hs
15+ src-ghcjs/Foreign/JavaScript/Internal/Utils.hs
16+ src/Reflex/Dom/Xhr/Foreign.hs
1517 src/Reflex/Dom/WebSocket/Foreign.hs
1618 src/Reflex/Dom/Xhr/ResponseType.hs
1719 src/Reflex/Dom/Xhr/Exception.hs
@@ -74,16 +76,19 @@ library
7476 zenc == 0.1.*
7577
7678 if impl(ghcjs)
79+ hs-source-dirs: src-ghcjs
7780 build-depends:
7881 ghcjs-base,
7982 hashable == 1.2.*
8083 else
84+ hs-source-dirs: src-ghc
8185 if !os(windows)
8286 build-depends: unix == 2.7.*
8387
8488 exposed-modules:
8589 Foreign.JavaScript.TH
8690 Foreign.JavaScript.Orphans
91+ Foreign.JavaScript.Utils
8792 Reflex.Dom.Builder.Class
8893 Reflex.Dom.Builder.Class.Events
8994 Reflex.Dom.Builder.Immediate
@@ -103,6 +108,7 @@ library
103108 Reflex.Dom.Widget.Resize
104109 Reflex.Dom.Xhr
105110 other-modules:
111+ Foreign.JavaScript.Internal.Utils
106112 Reflex.Dom.WebSocket.Foreign
107113 Reflex.Dom.Xhr.Foreign
108114 Reflex.Dom.Xhr.ResponseType
reflex-dom-core/src-ghc/Foreign/JavaScript/Internal/Utils.hsnew file+9
@@ -0,0 +1,9 @@
1+module Foreign.JavaScript.Internal.Utils
2+ ( js_dataView
3+ ) where
4+
5+import Language.Javascript.JSaddle.Types (JSVal, JSM)
6+import Language.Javascript.JSaddle.Object (new, jsg)
7+
8+js_dataView :: Int -> Int -> JSVal -> JSM JSVal
9+js_dataView off len ref = new (jsg "DataView") (ref, off, len)
reflex-dom-core/src-ghcjs/Foreign/JavaScript/Internal/Utils.hsnew file+11
@@ -0,0 +1,11 @@
1+{-# LANGUAGE ForeignFunctionInterface #-}
2+{-# LANGUAGE JavaScriptFFI #-}
3+
4+module Foreign.JavaScript.Internal.Utils
5+ ( js_dataView
6+ ) where
7+
8+import Language.Javascript.JSaddle.Types (JSVal)
9+
10+foreign import javascript safe "new DataView($3,$1,$2)"
11+ js_dataView :: Int -> Int -> JSVal -> IO JSVal
reflex-dom-core/src/Foreign/JavaScript/Utils.hs+2−17
@@ -1,9 +1,3 @@
1−{-# LANGUAGE CPP #-}
2−#ifdef __GHCJS__
3−{-# LANGUAGE ForeignFunctionInterface #-}
4−{-# LANGUAGE JavaScriptFFI #-}
5−#endif
6−
71module Foreign.JavaScript.Utils
82 ( bsFromMutableArrayBuffer
93 , bsToArrayBuffer
@@ -14,10 +8,8 @@ import qualified Data.ByteString as BS
148import qualified GHCJS.Buffer as JS
159import GHCJS.DOM.Types (ArrayBuffer (..))
1610import qualified JavaScript.TypedArray.ArrayBuffer as JS
17−import Language.Javascript.JSaddle.Types (JSVal, JSM, MonadJSM, liftJSM, ghcjsPure, jsval)
18−#ifndef __GHCJS__
19−import Language.Javascript.JSaddle.Object (new, jsg)
20−#endif
11+import Language.Javascript.JSaddle.Types (MonadJSM, liftJSM, ghcjsPure, jsval)
12+import Foreign.JavaScript.Internal.Utils (js_dataView)
2113
2214{-# INLINABLE bsFromMutableArrayBuffer #-}
2315bsFromMutableArrayBuffer :: MonadJSM m => JS.MutableArrayBuffer -> m ByteString
@@ -33,10 +25,3 @@ bsToArrayBuffer bs = liftJSM $ do
3325 else do
3426 ref <- ghcjsPure (JS.getArrayBuffer b) >>= ghcjsPure . jsval
3527 js_dataView off len ref
36−
37−#ifdef __GHCJS__
38−foreign import javascript safe "new DataView($3,$1,$2)" js_dataView :: Int -> Int -> JSVal -> IO JSVal
39−#else
40−js_dataView :: Int -> Int -> JSVal -> JSM JSVal
41−js_dataView off len ref = new (jsg "DataView") (ref, off, len)
42−#endif