@@ -7,29 +7,42 @@ module Data.ArrayBuffer.DataView( READER()
7
7
, byteLength
8
8
, Getter ()
9
9
, getInt8
10
- , getInt16
11
- , getInt32
10
+ , getInt16be
11
+ , getInt32be
12
12
, getUint8
13
- , getUint16
14
- , getUint32
15
- , getFloat32
16
- , getFloat64
13
+ , getUint16be
14
+ , getUint32be
15
+ , getFloat32be
16
+ , getFloat64be
17
+ , getInt16le
18
+ , getInt32le
19
+ , getUint16le
20
+ , getUint32le
21
+ , getFloat32le
22
+ , getFloat64le
17
23
, Setter ()
18
24
, setInt8
19
- , setInt16
20
- , setInt32
25
+ , setInt16be
26
+ , setInt32be
21
27
, setUint8
22
- , setUint16
23
- , setUint32
24
- , setFloat32
25
- , setFloat64
28
+ , setUint16be
29
+ , setUint32be
30
+ , setFloat32be
31
+ , setFloat64be
32
+ , setInt16le
33
+ , setInt32le
34
+ , setUint16le
35
+ , setUint32le
36
+ , setFloat32le
37
+ , setFloat64le
26
38
) where
27
39
28
40
import Prelude
29
41
import Data.ArrayBuffer.Types (ByteOffset , DataView , ByteLength , ArrayBuffer )
30
- import Data.Function.Uncurried (Fn5 , Fn6 , runFn5 , runFn6 )
42
+ import Data.Function.Uncurried (Fn5 , Fn7 , runFn5 , runFn7 )
31
43
import Data.Maybe (Maybe (..))
32
44
import Control.Monad.Eff (Eff )
45
+ import Data.Int53 (Int53 )
33
46
34
47
-- | Type for all fetching functions.
35
48
type Getter r = forall e . DataView -> ByteOffset -> Eff (reader :: READER | e ) (Maybe r )
@@ -58,77 +71,115 @@ foreign import byteLength :: DataView -> ByteLength
58
71
59
72
foreign import data READER :: !
60
73
61
- foreign import getterImpl :: forall e r . Fn6 ( r -> Maybe r ) ( Maybe r ) String ByteLength DataView ByteOffset ( Eff ( reader :: READER | e ) ( Maybe r ))
74
+ type Endianness = Boolean
62
75
63
- getter :: forall e r . String -> ByteLength -> DataView -> ByteOffset -> Eff (reader :: READER | e ) (Maybe r )
64
- getter = runFn6 getterImpl Just Nothing
76
+ foreign import getterImpl :: forall e r . Fn7 (r -> Maybe r ) (Maybe r ) String ByteLength Endianness DataView ByteOffset (Eff (reader :: READER | e ) (Maybe r ))
77
+
78
+ getter :: forall e r . String -> ByteLength -> Endianness -> DataView -> ByteOffset -> Eff (reader :: READER | e ) (Maybe r )
79
+ getter = runFn7 getterImpl Just Nothing
65
80
66
81
67
82
foreign import data WRITER :: !
68
83
69
- foreign import setter :: forall e r . String -> DataView -> r -> ByteOffset -> Eff (writer :: WRITER | e ) Unit
84
+ foreign import setter :: forall e r . String -> Endianness -> DataView -> r -> ByteOffset -> Eff (writer :: WRITER | e ) Unit
70
85
71
86
72
87
-- | Fetch int8 value at a certain index in a `DataView`.
73
88
getInt8 :: Getter Int
74
- getInt8 = getter " getInt8" 1
89
+ getInt8 = getter " getInt8" 1 false
75
90
76
91
-- | Fetch int16 value at a certain index in a `DataView`.
77
- getInt16 :: Getter Int
78
- getInt16 = getter " getInt16" 2
92
+ getInt16be :: Getter Int
93
+ getInt16be = getter " getInt16" 2 false
94
+
95
+ getInt16le :: Getter Int
96
+ getInt16le = getter " getInt16" 2 true
79
97
80
98
-- | Fetch int32 value at a certain index in a `DataView`.
81
- getInt32 :: Getter Int
82
- getInt32 = getter " getInt32" 4
99
+ getInt32be :: Getter Int
100
+ getInt32be = getter " getInt32" 4 false
101
+
102
+ getInt32le :: Getter Int
103
+ getInt32le = getter " getInt32" 4 true
83
104
84
105
-- | Fetch uint8 value at a certain index in a `DataView`.
85
106
getUint8 :: Getter Int
86
- getUint8 = getter " getUint8" 1
107
+ getUint8 = getter " getUint8" 1 false
87
108
88
109
-- | Fetch uint16 value at a certain index in a `DataView`.
89
- getUint16 :: Getter Int
90
- getUint16 = getter " getUint16" 2
110
+ getUint16be :: Getter Int
111
+ getUint16be = getter " getUint16" 2 false
112
+
113
+ getUint16le :: Getter Int
114
+ getUint16le = getter " getUint16" 2 true
91
115
92
116
-- | Fetch uint32 value at a certain index in a `DataView`.
93
- getUint32 :: Getter Int
94
- getUint32 = getter " getUint32" 4
117
+ getUint32be :: Getter Int53
118
+ getUint32be = getter " getUint32" 4 false
119
+
120
+ getUint32le :: Getter Int53
121
+ getUint32le = getter " getUint32" 4 true
95
122
96
123
-- | Fetch float32 value at a certain index in a `DataView`.
97
- getFloat32 :: Getter Number
98
- getFloat32 = getter " getFloat32" 4
124
+ getFloat32be :: Getter Number
125
+ getFloat32be = getter " getFloat32" 4 false
126
+
127
+ getFloat32le :: Getter Number
128
+ getFloat32le = getter " getFloat32" 4 true
99
129
100
130
-- | Fetch float64 value at a certain index in a `DataView`.
101
- getFloat64 :: Getter Number
102
- getFloat64 = getter " getFloat64" 8
131
+ getFloat64be :: Getter Number
132
+ getFloat64be = getter " getFloat64" 8 false
133
+
134
+ getFloat64le :: Getter Number
135
+ getFloat64le = getter " getFloat64" 8 true
103
136
104
137
-- | Store int8 value at a certain index in a `DataView`.
105
138
setInt8 :: Setter Int
106
- setInt8 = setter " setInt8"
139
+ setInt8 = setter " setInt8" false
107
140
108
141
-- | Store int16 value at a certain index in a `DataView`.
109
- setInt16 :: Setter Int
110
- setInt16 = setter " setInt16"
142
+ setInt16be :: Setter Int
143
+ setInt16be = setter " setInt16" false
144
+
145
+ setInt16le :: Setter Int
146
+ setInt16le = setter " setInt16" true
111
147
112
148
-- | Store int32 value at a certain index in a `DataView`.
113
- setInt32 :: Setter Int
114
- setInt32 = setter " setInt32"
149
+ setInt32be :: Setter Int
150
+ setInt32be = setter " setInt32" false
151
+
152
+ setInt32le :: Setter Int
153
+ setInt32le = setter " setInt32" true
115
154
116
155
-- | Store uint8 value at a certain index in a `DataView`.
117
156
setUint8 :: Setter Int
118
- setUint8 = setter " setUint8"
157
+ setUint8 = setter " setUint8" false
119
158
120
159
-- | Store uint16 value at a certain index in a `DataView`.
121
- setUint16 :: Setter Int
122
- setUint16 = setter " setUint16"
160
+ setUint16be :: Setter Int
161
+ setUint16be = setter " setUint16" false
162
+
163
+ setUint16le :: Setter Int
164
+ setUint16le = setter " setUint16" true
123
165
124
166
-- | Store uint32 value at a certain index in a `DataView`.
125
- setUint32 :: Setter Int
126
- setUint32 = setter " setUint32"
167
+ setUint32be :: Setter Int53
168
+ setUint32be = setter " setUint32" false
169
+
170
+ setUint32le :: Setter Int53
171
+ setUint32le = setter " setUint32" true
127
172
128
173
-- | Store float32 value at a certain index in a `DataView`.
129
- setFloat32 :: Setter Number
130
- setFloat32 = setter " setFloat32"
174
+ setFloat32be :: Setter Number
175
+ setFloat32be = setter " setFloat32" false
176
+
177
+ setFloat32le :: Setter Number
178
+ setFloat32le = setter " setFloat32" true
131
179
132
180
-- | Store float64 value at a certain index in a `DataView`.
133
- setFloat64 :: Setter Number
134
- setFloat64 = setter " setFloat64"
181
+ setFloat64be :: Setter Number
182
+ setFloat64be = setter " setFloat64" false
183
+
184
+ setFloat64le :: Setter Number
185
+ setFloat64le = setter " setFloat64" true
0 commit comments