capnp-js
Version:
Capnproto run-time decoding and encoding for Node
24 lines (23 loc) • 925 B
JavaScript
var primitives = require('./primitives');
var next = function(arena, pointer) {
return {
segment: arena.getSegment(primitives.uint32(pointer.segment, pointer.position + 4)),
position: primitives.uint32(pointer.segment, pointer.position) & 4294967288
};
};
exports.next = next;
exports.tag = function(arena, pointer) {
var land = next(arena, pointer);
land.position += (pointer.segment[pointer.position] & 4) << 1;
return land;
};
exports.blob = function(arena, pointer) {
var land = next(arena, pointer);
if (pointer.segment[pointer.position] & 4) {
return next(arena, land);
} else {
var half = primitives.uint32(land.segment, land.position) & 4294967292;
land.position += 8 + half + half;
return land;
}
};