@@ -7,29 +7,42 @@ module Data.ArrayBuffer.DataView( READER()
77 , byteLength
88 , Getter ()
99 , getInt8
10- , getInt16
11- , getInt32
10+ , getInt16be
11+ , getInt32be
1212 , 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
1723 , Setter ()
1824 , setInt8
19- , setInt16
20- , setInt32
25+ , setInt16be
26+ , setInt32be
2127 , 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
2638 ) where
2739
2840import Prelude
2941import 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 )
3143import Data.Maybe (Maybe (..))
3244import Control.Monad.Eff (Eff )
45+ import Data.Int53 (Int53 )
3346
3447-- | Type for all fetching functions.
3548type Getter r = forall e . DataView -> ByteOffset -> Eff (reader :: READER | e ) (Maybe r )
@@ -58,77 +71,115 @@ foreign import byteLength :: DataView -> ByteLength
5871
5972foreign import data READER :: !
6073
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
6275
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
6580
6681
6782foreign import data WRITER :: !
6883
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
7085
7186
7287-- | Fetch int8 value at a certain index in a `DataView`.
7388getInt8 :: Getter Int
74- getInt8 = getter " getInt8" 1
89+ getInt8 = getter " getInt8" 1 false
7590
7691-- | 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
7997
8098-- | 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
83104
84105-- | Fetch uint8 value at a certain index in a `DataView`.
85106getUint8 :: Getter Int
86- getUint8 = getter " getUint8" 1
107+ getUint8 = getter " getUint8" 1 false
87108
88109-- | 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
91115
92116-- | 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
95122
96123-- | 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
99129
100130-- | 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
103136
104137-- | Store int8 value at a certain index in a `DataView`.
105138setInt8 :: Setter Int
106- setInt8 = setter " setInt8"
139+ setInt8 = setter " setInt8" false
107140
108141-- | 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
111147
112148-- | 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
115154
116155-- | Store uint8 value at a certain index in a `DataView`.
117156setUint8 :: Setter Int
118- setUint8 = setter " setUint8"
157+ setUint8 = setter " setUint8" false
119158
120159-- | 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
123165
124166-- | 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
127172
128173-- | 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
131179
132180-- | 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