Skip to content

Commit 02e63d8

Browse files
authored
Merge pull request rescript-lang#1401 from ul/master
add DataView bindings
2 parents 87372ac + ec163c1 commit 02e63d8

File tree

5 files changed

+560
-1
lines changed

5 files changed

+560
-1
lines changed

jscomp/runtime/js_typed_array.ml

+74
Original file line numberDiff line numberDiff line change
@@ -373,3 +373,77 @@ module Float64Array = struct
373373
end
374374
module Float64_array = Float64Array
375375
[@ocaml.deprecated "use `Float64Array` instead"]
376+
377+
module DataView = struct
378+
(** The DataView view provides a low-level interface for reading and writing
379+
multiple number types in an ArrayBuffer irrespective of the platform's endianness.
380+
381+
@see <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView> MDN
382+
*)
383+
384+
type t
385+
386+
external make : array_buffer -> t = "DataView" [@@bs.new]
387+
external fromBuffer : array_buffer -> t = "DataView" [@@bs.new]
388+
external fromBufferOffset : array_buffer -> int -> t = "DataView" [@@bs.new]
389+
external fromBufferRange : array_buffer -> offset:int -> length:int -> t = "DataView" [@@bs.new]
390+
391+
external buffer : t -> array_buffer = "" [@@bs.get]
392+
external byteLength : t -> int = "" [@@bs.get]
393+
external byteOffset : t -> int = "" [@@bs.get]
394+
395+
external getInt8 : t -> int -> int = "" [@@bs.send]
396+
external getUint8 : t -> int -> int = "" [@@bs.send]
397+
398+
external getInt16: t -> int -> int = "" [@@bs.send]
399+
external getInt16LittleEndian : t -> int -> (_ [@bs.as 1]) -> int =
400+
"getInt16" [@@bs.send]
401+
402+
external getUint16: t -> int -> int = "" [@@bs.send]
403+
external getUint16LittleEndian : t -> int -> (_ [@bs.as 1]) -> int =
404+
"getUint16" [@@bs.send]
405+
406+
external getInt32: t -> int -> int = "" [@@bs.send]
407+
external getInt32LittleEndian : t -> int -> (_ [@bs.as 1]) -> int =
408+
"getInt32" [@@bs.send]
409+
410+
external getUint32: t -> int -> int = "" [@@bs.send]
411+
external getUint32LittleEndian : t -> int -> (_ [@bs.as 1]) -> int =
412+
"getUint32" [@@bs.send]
413+
414+
external getFloat32: t -> int -> float = "" [@@bs.send]
415+
external getFloat32LittleEndian : t -> int -> (_ [@bs.as 1]) -> float =
416+
"getFloat32" [@@bs.send]
417+
418+
external getFloat64: t -> int -> float = "" [@@bs.send]
419+
external getFloat64LittleEndian : t -> int -> (_ [@bs.as 1]) -> float =
420+
"getFloat64" [@@bs.send]
421+
422+
external setInt8 : t -> int -> int -> unit = "" [@@bs.send]
423+
external setUint8 : t -> int -> int -> unit = "" [@@bs.send]
424+
425+
external setInt16: t -> int -> int -> unit = "" [@@bs.send]
426+
external setInt16LittleEndian : t -> int -> int -> (_ [@bs.as 1]) -> unit =
427+
"setInt16" [@@bs.send]
428+
429+
external setUint16: t -> int -> int -> unit = "" [@@bs.send]
430+
external setUint16LittleEndian : t -> int -> int -> (_ [@bs.as 1]) -> unit =
431+
"setUint16" [@@bs.send]
432+
433+
external setInt32: t -> int -> int -> unit = "" [@@bs.send]
434+
external setInt32LittleEndian : t -> int -> int -> (_ [@bs.as 1]) -> unit =
435+
"setInt32" [@@bs.send]
436+
437+
external setUint32: t -> int -> int -> unit = "" [@@bs.send]
438+
external setUint32LittleEndian : t -> int -> int -> (_ [@bs.as 1]) -> unit =
439+
"setUint32" [@@bs.send]
440+
441+
external setFloat32: t -> int -> float -> unit = "" [@@bs.send]
442+
external setFloat32LittleEndian : t -> int -> float -> (_ [@bs.as 1]) -> unit =
443+
"setFloat32" [@@bs.send]
444+
445+
external setFloat64: t -> int -> float -> unit = "" [@@bs.send]
446+
external setFloat64LittleEndian : t -> int -> float -> (_ [@bs.as 1]) -> unit =
447+
"setFloat64" [@@bs.send]
448+
449+
end

0 commit comments

Comments
 (0)