UNPKG

capnp-js

Version:

Capnproto run-time decoding and encoding for Node

48 lines (46 loc) 1.78 kB
// Float conversion helpers var buffer = new ArrayBuffer(8); var view = new DataView(buffer); var int32 = function(bytes, position) { return bytes[position] | bytes[position + 1] << 8 | bytes[position + 2] << 16 | bytes[position + 3] << 24; }; uint32 = function(bytes, position) { return (bytes[position] | bytes[position + 1] << 8 | bytes[position + 2] << 16 | bytes[position + 3] << 24) >>> 0; }; exports.bool = function(bytes, position, bitPosition) { return bytes[position] >>> bitPosition & 1 | 0; }; exports.int8 = function(bytes, position) { return bytes[position] << 24 >> 24; }; exports.int16 = function(bytes, position) { return (bytes[position] << 16 | bytes[position + 1] << 24) >> 16; }; exports.int32 = int32; exports.int64 = function(bytes, position) { return [ int32(bytes, position + 4), uint32(bytes, position) ]; }; exports.uint8 = function(bytes, position) { return bytes[position] >>> 0; }; exports.uint16 = function(bytes, position) { return (bytes[position] | bytes[position + 1] << 8) >>> 0; }; exports.uint32 = uint32; exports.uint64 = function(bytes, position) { return [ uint32(bytes, position + 4), uint32(bytes, position) ]; }; exports.float32 = function(bytes, position) { var i = 3; do { buffer[i] = bytes[position + i]; } while (i--); return view.getFloat32(0, true); }; exports.float64 = function(bytes, position) { var i = 7; do { buffer[i] = bytes[position + i]; } while (i--); return view.getFloat64(0, true); };