UNPKG

capnp-js

Version:

Capnproto run-time decoding and encoding for Node

51 lines (49 loc) 1.69 kB
// Float conversion helpers var buffer = new ArrayBuffer(8); var view = new DataView(buffer); var int8 = function(value, bytes, position) { bytes[position] = value; }; var int16 = function(value, bytes, position) { bytes[position] = value; bytes[position + 1] = value >> 8; }; var int32 = function(value, bytes, position) { bytes[position] = value; bytes[position + 1] = value >> 8; bytes[position + 2] = value >> 16; bytes[position + 3] = value >> 24; }; exports.bool = function(value, bytes, position, bitPosition) { // Mask out and then set the target bit. bytes[position] &= ~(1 << bitPosition); bytes[position] |= value << bitPosition; }; exports.int8 = int8; exports.int16 = int16; exports.int32 = int32; exports.int64 = function(value, bytes, position) { int32(value[0], bytes, position + 4); int32(value[1], bytes, position); }; exports.uint8 = int8; exports.uint16 = int16; exports.uint32 = int32; exports.uint64 = function(value, bytes, position) { int32(value[0], bytes, position + 4); int32(value[1], bytes, position); }; exports.float32 = function(value, bytes, position) { view.setFloat32(0, value, true); var i = 3; do { bytes[position + i] = buffer[i]; } while (i--); }; exports.float64 = function(value, bytes, position) { view.setFloat64(0, value, true); var i = 7; do { bytes[position + i] = buffer[i]; } while (i--); };