on develop help sign in
Avoid using CPP
5dbf17dMaciej Kazulak
reflex-dom-core/reflex-dom-core.cabal+7−1
@@ -11,7 +11,9 @@ Category: FRP, Web, GUI, HTML, Javascript, Reactive, Reactivity, User Interfaces
11Build-type: Simple
11Build-type: Simple
12Cabal-version: >=1.9.2
12Cabal-version: >=1.9.2
13-- Deal with https://github.com/haskell/cabal/issues/2544 / https://github.com/haskell/cabal/issues/367
13-- Deal with https://github.com/haskell/cabal/issues/2544 / https://github.com/haskell/cabal/issues/367
14+extra-source-files: src-ghc/Foreign/JavaScript/Internal/Utils.hs
15+ src-ghcjs/Foreign/JavaScript/Internal/Utils.hs
14−extra-source-files: src/Reflex/Dom/Xhr/Foreign.hs
16+ src/Reflex/Dom/Xhr/Foreign.hs
15 src/Reflex/Dom/WebSocket/Foreign.hs
17 src/Reflex/Dom/WebSocket/Foreign.hs
16 src/Reflex/Dom/Xhr/ResponseType.hs
18 src/Reflex/Dom/Xhr/ResponseType.hs
17 src/Reflex/Dom/Xhr/Exception.hs
19 src/Reflex/Dom/Xhr/Exception.hs
@@ -74,16 +76,19 @@ library
74 zenc == 0.1.*
76 zenc == 0.1.*
75
77
76 if impl(ghcjs)
78 if impl(ghcjs)
79+ hs-source-dirs: src-ghcjs
77 build-depends:
80 build-depends:
78 ghcjs-base,
81 ghcjs-base,
79 hashable == 1.2.*
82 hashable == 1.2.*
80 else
83 else
84+ hs-source-dirs: src-ghc
81 if !os(windows)
85 if !os(windows)
82 build-depends: unix == 2.7.*
86 build-depends: unix == 2.7.*
83
87
84 exposed-modules:
88 exposed-modules:
85 Foreign.JavaScript.TH
89 Foreign.JavaScript.TH
86 Foreign.JavaScript.Orphans
90 Foreign.JavaScript.Orphans
91+ Foreign.JavaScript.Utils
87 Reflex.Dom.Builder.Class
92 Reflex.Dom.Builder.Class
88 Reflex.Dom.Builder.Class.Events
93 Reflex.Dom.Builder.Class.Events
89 Reflex.Dom.Builder.Immediate
94 Reflex.Dom.Builder.Immediate
@@ -103,6 +108,7 @@ library
103 Reflex.Dom.Widget.Resize
108 Reflex.Dom.Widget.Resize
104 Reflex.Dom.Xhr
109 Reflex.Dom.Xhr
105 other-modules:
110 other-modules:
111+ Foreign.JavaScript.Internal.Utils
106 Reflex.Dom.WebSocket.Foreign
112 Reflex.Dom.WebSocket.Foreign
107 Reflex.Dom.Xhr.Foreign
113 Reflex.Dom.Xhr.Foreign
108 Reflex.Dom.Xhr.ResponseType
114 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−
7module Foreign.JavaScript.Utils
1module Foreign.JavaScript.Utils
8 ( bsFromMutableArrayBuffer
2 ( bsFromMutableArrayBuffer
9 , bsToArrayBuffer
3 , bsToArrayBuffer
@@ -14,10 +8,8 @@ import qualified Data.ByteString as BS
14import qualified GHCJS.Buffer as JS
8import qualified GHCJS.Buffer as JS
15import GHCJS.DOM.Types (ArrayBuffer (..))
9import GHCJS.DOM.Types (ArrayBuffer (..))
16import qualified JavaScript.TypedArray.ArrayBuffer as JS
10import qualified JavaScript.TypedArray.ArrayBuffer as JS
17−import Language.Javascript.JSaddle.Types (JSVal, JSM, MonadJSM, liftJSM, ghcjsPure, jsval)
11+import Language.Javascript.JSaddle.Types (MonadJSM, liftJSM, ghcjsPure, jsval)
18−#ifndef __GHCJS__
12+import Foreign.JavaScript.Internal.Utils (js_dataView)
19−import Language.Javascript.JSaddle.Object (new, jsg)
20−#endif
21
13
22{-# INLINABLE bsFromMutableArrayBuffer #-}
14{-# INLINABLE bsFromMutableArrayBuffer #-}
23bsFromMutableArrayBuffer :: MonadJSM m => JS.MutableArrayBuffer -> m ByteString
15bsFromMutableArrayBuffer :: MonadJSM m => JS.MutableArrayBuffer -> m ByteString
@@ -33,10 +25,3 @@ bsToArrayBuffer bs = liftJSM $ do
33 else do
25 else do
34 ref <- ghcjsPure (JS.getArrayBuffer b) >>= ghcjsPure . jsval
26 ref <- ghcjsPure (JS.getArrayBuffer b) >>= ghcjsPure . jsval
35 js_dataView off len ref
27 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