DataView
Functions for interacting with DataView.
See DataView on MDN.
t
type tType representing a DataView.
fromBuffer
let fromBuffer: (ArrayBuffer.t, ~byteOffset: int=?, ~length: int=?) => tfromBuffer(buffer) creates a DataView for the entire ArrayBuffer.
See DataView on MDN.
Examples
RESCRIPTDataView.fromBuffer(ArrayBuffer.make(16))
DataView.fromBuffer(ArrayBuffer.make(16), ~byteOffset=4)
DataView.fromBuffer(ArrayBuffer.make(16), ~byteOffset=4, ~length=8)
fromBufferToEnd
Deprecated
let fromBufferToEnd: (ArrayBuffer.t, ~byteOffset: int) => tfromBufferToEnd(buffer, ~byteOffset) creates a DataView starting at a given byte offset. See DataView on MDN.
Note: This is a potentially unsafe operation. Ensure the buffer is large enough and only accessed within its bounds.
Examples
RESCRIPTDataView.fromBufferToEnd(buffer, ~byteOffset=4)
fromBufferWithRange
Deprecated
let fromBufferWithRange: (ArrayBuffer.t, ~byteOffset: int, ~length: int) => tfromBufferWithRange(buffer, ~byteOffset, ~length) creates a DataView for a specific byte range.
See DataView on MDN.
Note: This is a potentially unsafe operation. Ensure the buffer is large enough and only accessed within its bounds.
Examples
RESCRIPTDataView.fromBufferWithRange(ArrayBuffer.make(16), ~byteOffset=2, ~length=8)
buffer
let buffer: t => ArrayBuffer.tbuffer(dataView) returns the underlying ArrayBuffer referenced by this DataView.
See DataView.buffer on MDN.
Examples
RESCRIPTlet array_buffer = ArrayBuffer.make(16)
let dv = DataView.fromBuffer(array_buffer)
DataView.buffer(dv) == array_buffer
byteLength
let byteLength: t => intbyteLength(dataView) returns the length (in bytes) of this DataView.
See DataView.byteLength on MDN.
Examples
RESCRIPTlet array_buffer = ArrayBuffer.make(16)
let dv = DataView.fromBuffer(array_buffer)
DataView.byteLength(dv) == 16
byteOffset
let byteOffset: t => intbyteOffset(dataView) returns the byte offset of this DataView from the start of its ArrayBuffer.
See DataView.byteOffset on MDN.
Examples
RESCRIPTlet array_buffer = ArrayBuffer.make(16)
let dv = DataView.fromBuffer(array_buffer, ~byteOffset=4)
DataView.byteOffset(dv) == 4
getInt8
let getInt8: (t, int) => intgetInt8(dataView, offset) reads an 8-bit signed integer at the specified byte offset.
See DataView.getInt8 on MDN.
Examples
RESCRIPTlet dv = DataView.fromBuffer(ArrayBuffer.make(16))
dv->DataView.setInt8(0, -12)
DataView.getInt8(dv, 0) == -12
getUint8
let getUint8: (t, int) => intgetUint8(dataView, offset) reads an 8-bit unsigned integer at the specified byte offset.
See DataView.getUint8 on MDN.
Examples
RESCRIPTlet dv = DataView.fromBuffer(ArrayBuffer.make(16))
dv->DataView.setUint8(1, 255)
DataView.getUint8(dv, 1) == 255
getInt16
let getInt16: (t, int, ~littleEndian: bool=?) => intgetInt16(dataView, offset, ~littleEndian=?) reads a 16-bit signed integer at the specified byte offset, with optional endianness.
See DataView.getInt16 on MDN.
Examples
RESCRIPTlet dv = DataView.fromBuffer(ArrayBuffer.make(16))
dv->DataView.setInt16(0, -1234)
dv->DataView.setInt16(2, -1234, ~littleEndian=true)
DataView.getInt16(dv, 0) == -1234
DataView.getInt16(dv, 2, ~littleEndian=true) == -1234
getUint16
let getUint16: (t, int, ~littleEndian: bool=?) => intgetUint16(dataView, offset, ~littleEndian=?) reads a 16-bit unsigned integer at the specified byte offset, with optional endianness.
See DataView.getUint16 on MDN.
Examples
RESCRIPTlet dv = DataView.fromBuffer(ArrayBuffer.make(16))
dv->DataView.setUint16(0, 1234)
dv->DataView.setUint16(2, 1234, ~littleEndian=true)
DataView.getUint16(dv, 0) == 1234
DataView.getUint16(dv, 2, ~littleEndian=true) == 1234
getInt32
let getInt32: (t, int, ~littleEndian: bool=?) => intgetInt32(dataView, offset, ~littleEndian=?) reads a 32-bit signed integer at the specified byte offset, with optional endianness.
See DataView.getInt32 on MDN.
Examples
RESCRIPTlet dv = DataView.fromBuffer(ArrayBuffer.make(16))
dv->DataView.setInt32(0, -123456)
dv->DataView.setInt32(4, -123456, ~littleEndian=true)
DataView.getInt32(dv, 0) == -123456
DataView.getInt32(dv, 4, ~littleEndian=true) == -123456
getUint32
let getUint32: (t, int, ~littleEndian: bool=?) => intgetUint32(dataView, offset, ~littleEndian=?) reads a 32-bit unsigned integer at the specified byte offset, with optional endianness.
See DataView.getUint32 on MDN.
Examples
RESCRIPTlet dv = DataView.fromBuffer(ArrayBuffer.make(16))
dv->DataView.setUint32(0, 123456)
dv->DataView.setUint32(4, 123456, ~littleEndian=true)
DataView.getUint32(dv, 0) == 123456
DataView.getUint32(dv, 4, ~littleEndian=true) == 123456
getFloat16
let getFloat16: (t, int, ~littleEndian: bool=?) => floatgetFloat16(dataView, offset, ~littleEndian=?) reads a 16-bit floating point number (if supported) at the specified byte offset, with optional endianness.
See DataView.getFloat16 on MDN.
Examples
RESCRIPTlet dv = DataView.fromBuffer(ArrayBuffer.make(16))
dv->DataView.setFloat16(0, 1.5)
dv->DataView.setFloat16(2, 1.5, ~littleEndian=true)
DataView.getFloat16(dv, 0) == 1.5
DataView.getFloat16(dv, 2, ~littleEndian=true) == 1.5
getFloat32
let getFloat32: (t, int, ~littleEndian: bool=?) => floatgetFloat32(dataView, offset, ~littleEndian=?) reads a 32-bit floating point number at the specified byte offset, with optional endianness.
See DataView.getFloat32 on MDN.
Examples
RESCRIPTlet dv = DataView.fromBuffer(ArrayBuffer.make(16))
dv->DataView.setFloat32(0, 3.14)
dv->DataView.setFloat32(4, 3.14, ~littleEndian=true)
// DataView.getFloat32(dv, 0) == 3.14
// DataView.getFloat32(dv, 4, ~littleEndian=true) == 3.14
getFloat64
let getFloat64: (t, int, ~littleEndian: bool=?) => floatgetFloat64(dataView, offset, ~littleEndian=?) reads a 64-bit floating point number at the specified byte offset, with optional endianness.
See DataView.getFloat64 on MDN.
Examples
RESCRIPTlet dv = DataView.fromBuffer(ArrayBuffer.make(16))
dv->DataView.setFloat64(0, 6.28)
dv->DataView.setFloat64(8, 6.28, ~littleEndian=true)
DataView.getFloat64(dv, 0) == 6.28
DataView.getFloat64(dv, 8, ~littleEndian=true) == 6.28
getBigInt64
let getBigInt64: (t, int, ~littleEndian: bool=?) => bigintgetBigInt64(dataView, offset, ~littleEndian=?) reads a 64-bit signed integer (BigInt) at the specified byte offset, with optional endianness.
See DataView.getBigInt64 on MDN.
Examples
RESCRIPTlet dv = DataView.fromBuffer(ArrayBuffer.make(16))
dv->DataView.setBigInt64(0, -123456789n)
dv->DataView.setBigInt64(8, -123456789n, ~littleEndian=true)
DataView.getBigInt64(dv, 0) == -123456789n
DataView.getBigInt64(dv, 8, ~littleEndian=true) == -123456789n
getBigUint64
let getBigUint64: (t, int, ~littleEndian: bool=?) => bigintgetBigUint64(dataView, offset, ~littleEndian=?) reads a 64-bit unsigned integer (BigInt) at the specified byte offset, with optional endianness.
See DataView.getBigUint64 on MDN.
Examples
RESCRIPTlet dv = DataView.fromBuffer(ArrayBuffer.make(16))
dv->DataView.setBigUint64(0, 123456789n)
dv->DataView.setBigUint64(8, 123456789n, ~littleEndian=true)
DataView.getBigUint64(dv, 0) == 123456789n
DataView.getBigUint64(dv, 8, ~littleEndian=true) == 123456789n
setInt8
let setInt8: (t, int, int) => unitsetInt8(dataView, offset, value) writes an 8-bit signed integer at the specified byte offset.
See DataView.setInt8 on MDN.
Examples
RESCRIPTlet dv = DataView.fromBuffer(ArrayBuffer.make(16))
DataView.setInt8(dv, 0, -12)
dv->DataView.getInt8(0) == -12
setUint8
let setUint8: (t, int, int) => unitsetUint8(dataView, offset, value) writes an 8-bit unsigned integer at the specified byte offset.
See DataView.setUint8 on MDN.
Examples
RESCRIPTlet dv = DataView.fromBuffer(ArrayBuffer.make(16))
DataView.setUint8(dv, 0, 255)
dv->DataView.getUint8(0) == 255
setInt16
let setInt16: (t, int, int, ~littleEndian: bool=?) => unitsetInt16(dataView, offset, value, ~littleEndian=?) writes a 16-bit signed integer at the specified byte offset, with optional endianness.
See DataView.setInt16 on MDN.
Examples
RESCRIPTlet dv = DataView.fromBuffer(ArrayBuffer.make(16))
DataView.setInt16(dv, 0, -1234)
DataView.setInt16(dv, 2, -1234, ~littleEndian=true)
dv->DataView.getInt16(0) == -1234
dv->DataView.getInt16(2, ~littleEndian=true) == -1234
setUint16
let setUint16: (t, int, int, ~littleEndian: bool=?) => unitsetUint16(dataView, offset, value, ~littleEndian=?) writes a 16-bit unsigned integer at the specified byte offset, with optional endianness.
See DataView.setUint16 on MDN.
Examples
RESCRIPTlet dv = DataView.fromBuffer(ArrayBuffer.make(16))
DataView.setUint16(dv, 0, 1234)
DataView.setUint16(dv, 2, 1234, ~littleEndian=true)
dv->DataView.getUint16(0) == 1234
dv->DataView.getUint16(2, ~littleEndian=true) == 1234
setInt32
let setInt32: (t, int, int, ~littleEndian: bool=?) => unitsetInt32(dataView, offset, value, ~littleEndian=?) writes a 32-bit signed integer at the specified byte offset, with optional endianness.
See DataView.setInt32 on MDN.
Examples
RESCRIPTlet dv = DataView.fromBuffer(ArrayBuffer.make(16))
DataView.setInt32(dv, 0, -123456)
DataView.setInt32(dv, 4, -123456, ~littleEndian=true)
dv->DataView.getInt32(0) == -123456
dv->DataView.getInt32(4, ~littleEndian=true) == -123456
setUint32
let setUint32: (t, int, int, ~littleEndian: bool=?) => unitsetUint32(dataView, offset, value, ~littleEndian=?) writes a 32-bit unsigned integer at the specified byte offset, with optional endianness.
See DataView.setUint32 on MDN.
Examples
RESCRIPTlet dv = DataView.fromBuffer(ArrayBuffer.make(16))
DataView.setUint32(dv, 0, 123456)
DataView.setUint32(dv, 4, 123456, ~littleEndian=true)
dv->DataView.getUint32(0) == 123456
dv->DataView.getUint32(4, ~littleEndian=true) == 123456
setFloat16
let setFloat16: (t, int, float, ~littleEndian: bool=?) => unitsetFloat16(dataView, offset, value, ~littleEndian=?) writes a 16-bit floating point number (if supported) at the specified byte offset, with optional endianness.
See DataView.setFloat16 on MDN.
Examples
RESCRIPTlet dv = DataView.fromBuffer(ArrayBuffer.make(16))
DataView.setFloat16(dv, 0, 1.5)
DataView.setFloat16(dv, 2, 1.5, ~littleEndian=true)
dv->DataView.getFloat16(0) == 1.5
dv->DataView.getFloat16(2, ~littleEndian=true) == 1.5
setFloat32
let setFloat32: (t, int, float, ~littleEndian: bool=?) => unitsetFloat32(dataView, offset, value, ~littleEndian=?) writes a 32-bit floating point number at the specified byte offset, with optional endianness.
See DataView.setFloat32 on MDN.
Examples
RESCRIPTlet dv = DataView.fromBuffer(ArrayBuffer.make(16))
DataView.setFloat32(dv, 0, 3.14)
DataView.setFloat32(dv, 4, 3.14, ~littleEndian=true)
// dv->DataView.getFloat32(0) == 3.14
// dv->DataView.getFloat32(4, ~littleEndian=true) == 3.14
setFloat64
let setFloat64: (t, int, float, ~littleEndian: bool=?) => unitsetFloat64(dataView, offset, value, ~littleEndian=?) writes a 64-bit floating point number at the specified byte offset, with optional endianness.
See DataView.setFloat64 on MDN.
Examples
RESCRIPTlet dv = DataView.fromBuffer(ArrayBuffer.make(16))
DataView.setFloat64(dv, 0, 6.28)
DataView.setFloat64(dv, 8, 6.28, ~littleEndian=true)
dv->DataView.getFloat64(0) == 6.28
dv->DataView.getFloat64(8, ~littleEndian=true) == 6.28
setBigInt64
let setBigInt64: (t, int, bigint, ~littleEndian: bool=?) => unitsetBigInt64(dataView, offset, value, ~littleEndian=?) writes a 64-bit signed integer (BigInt) at the specified byte offset, with optional endianness.
See DataView.setBigInt64 on MDN.
Examples
RESCRIPTlet dv = DataView.fromBuffer(ArrayBuffer.make(16))
DataView.setBigInt64(dv, 0, -123456789n)
DataView.setBigInt64(dv, 8, -123456789n, ~littleEndian=true)
dv->DataView.getBigInt64(0) == -123456789n
dv->DataView.getBigInt64(8, ~littleEndian=true) == -123456789n
setBigUint64
let setBigUint64: (t, int, bigint, ~littleEndian: bool=?) => unitsetBigUint64(dataView, offset, value, ~littleEndian=?) writes a 64-bit unsigned integer (BigInt) at the specified byte offset, with optional endianness.
See DataView.setBigUint64 on MDN.
Examples
RESCRIPTlet dv = DataView.fromBuffer(ArrayBuffer.make(16))
DataView.setBigUint64(dv, 0, 123456789n)
DataView.setBigUint64(dv, 8, 123456789n, ~littleEndian=true)
dv->DataView.getBigUint64(0) == 123456789n
dv->DataView.getBigUint64(8, ~littleEndian=true) == 123456789n
ignore
let ignore: t => unitignore(dataView) ignores the provided DataView and returns unit.
This helper is useful when you want to discard a value (for example, the result of an operation with side effects) without having to store or process it further.