capnp-js
Version:
Capnproto run-time decoding and encoding for Node
22 lines (20 loc) • 940 B
JavaScript
var far = function(pointer, blob, ab) {
/* Non-bitshift to avoid possible sign-bit truncation. */
var offset = blob.position / 8;
var id = blob.segment._id;
pointer.segment[pointer.position] = ab | offset << 3;
pointer.segment[pointer.position + 1] = offset >>> 5;
pointer.segment[pointer.position + 2] = offset >>> 13;
pointer.segment[pointer.position + 3] = offset >>> 21;
pointer.segment[pointer.position + 4] = id;
pointer.segment[pointer.position + 5] = id >>> 8;
pointer.segment[pointer.position + 6] = id >>> 16;
pointer.segment[pointer.position + 7] = id >>> 24;
};
exports.terminal = function(pointer, target) {
// target - local pointer if no preterminal; blob otherwise
far(pointer, target, 2);
};
exports.preterminal = function(pointer, target) {
far(pointer, target, 6);
};