1
- module Data.ArrayBuffer.DataView ( whole
2
- , slice
3
- , buffer
4
- , byteOffset
5
- , byteLength
6
- , Getter ()
7
- , getInt8
8
- , getInt16be
9
- , getInt32be
10
- , getUint8
11
- , getUint16be
12
- , getUint32be
13
- , getFloat32be
14
- , getFloat64be
15
- , getInt16le
16
- , getInt32le
17
- , getUint16le
18
- , getUint32le
19
- , getFloat32le
20
- , getFloat64le
21
- , Setter ()
22
- , setInt8
23
- , setInt16be
24
- , setInt32be
25
- , setUint8
26
- , setUint16be
27
- , setUint32be
28
- , setFloat32be
29
- , setFloat64be
30
- , setInt16le
31
- , setInt32le
32
- , setUint16le
33
- , setUint32le
34
- , setFloat32le
35
- , setFloat64le
36
- ) where
1
+ module Data.ArrayBuffer.DataView
2
+ ( whole
3
+ , part
4
+ , buffer
5
+ , byteOffset
6
+ , byteLength
7
+ , Getter ()
8
+ , getInt8
9
+ , getInt16be
10
+ , getInt32be
11
+ , getUint8
12
+ , getUint16be
13
+ , getUint32be
14
+ , getFloat32be
15
+ , getFloat64be
16
+ , getInt16le
17
+ , getInt32le
18
+ , getUint16le
19
+ , getUint32le
20
+ , getFloat32le
21
+ , getFloat64le
22
+ , Setter ()
23
+ , setInt8
24
+ , setInt16be
25
+ , setInt32be
26
+ , setUint8
27
+ , setUint16be
28
+ , setUint32be
29
+ , setFloat32be
30
+ , setFloat64be
31
+ , setInt16le
32
+ , setInt32le
33
+ , setUint16le
34
+ , setUint32le
35
+ , setFloat32le
36
+ , setFloat64le
37
+ ) where
37
38
38
39
import Prelude
39
40
import Data.ArrayBuffer.Types (ByteOffset , DataView , ByteLength , ArrayBuffer )
40
- import Data.Function.Uncurried (Fn5 , Fn7 , runFn5 , runFn7 )
41
41
import Data.Maybe (Maybe (..))
42
42
import Effect (Effect )
43
+ import Effect.Exception (catchException )
44
+ import Effect.Uncurried (EffectFn5 , EffectFn3 , runEffectFn5 , runEffectFn3 )
43
45
import Data.UInt (UInt )
44
46
45
47
-- | Type for all fetching functions.
@@ -51,11 +53,11 @@ type Setter r = DataView -> r -> ByteOffset -> Effect Unit
51
53
-- | View mapping the whole `ArrayBuffer`.
52
54
foreign import whole :: ArrayBuffer -> DataView
53
55
54
- foreign import sliceImpl :: Fn5 ( DataView -> Maybe DataView ) ( Maybe DataView ) ByteOffset ByteLength ArrayBuffer ( Maybe DataView )
56
+ foreign import partImpl :: EffectFn3 ArrayBuffer ByteOffset ByteLength DataView
55
57
56
58
-- | View mapping a region of the `ArrayBuffer`.
57
- slice :: ByteOffset -> ByteLength -> ArrayBuffer -> ( Maybe DataView )
58
- slice = runFn5 sliceImpl Just Nothing
59
+ part :: ArrayBuffer -> ByteOffset -> ByteLength -> Effect DataView
60
+ part = runEffectFn3 partImpl
59
61
60
62
-- | `ArrayBuffer` being mapped by the view.
61
63
foreign import buffer :: DataView -> ArrayBuffer
@@ -69,13 +71,18 @@ foreign import byteLength :: DataView -> ByteLength
69
71
70
72
type Endianness = Boolean
71
73
72
- foreign import getterImpl :: forall r . Fn7 ( r -> Maybe r ) ( Maybe r ) String ByteLength Endianness DataView ByteOffset ( Effect ( Maybe r ))
74
+ foreign import getterImpl :: forall r . EffectFn5 String ByteLength Endianness DataView ByteOffset r
73
75
74
- getter :: forall r . String -> ByteLength -> Endianness -> DataView -> ByteOffset -> Effect (Maybe r )
75
- getter = runFn7 getterImpl Just Nothing
76
+ getter :: forall r . String -> ByteLength -> Endianness -> Getter r
77
+ getter p l e d o =
78
+ let x = runEffectFn5 getterImpl p l e d o
79
+ in catchException (const (pure Nothing )) (Just <$> x)
76
80
81
+ foreign import setterImpl :: forall r . EffectFn5 String Endianness DataView r ByteOffset Unit
77
82
78
- foreign import setter :: forall r . String -> Endianness -> DataView -> r -> ByteOffset -> Effect Unit
83
+ setter :: forall r . String -> Endianness -> Setter r
84
+ setter p e d x o =
85
+ runEffectFn5 setterImpl p e d x o
79
86
80
87
81
88
-- | Fetch int8 value at a certain index in a `DataView`.
0 commit comments