UNPKG

capnp-js

Version:

Capnproto run-time decoding and encoding for Node

70 lines (69 loc) 1.86 kB
var sizes = require('./sizes'); var length = function() { return this._length; }; var map = function(fn) { var arr = []; for (var i = 0; i < this._length; ++i) { arr.push(fn(this.get(i), i, this)); } return arr; }; var forEach = function(fn) { for (var i = 0; i < this._length; ++i) { fn(this.get(i), i, this); } }; var reduce = function(fn, acc) { var i = 0; if (acc === undefined) { if (this._length === 0) { throw new TypeError(); } acc = this.get(0); i = 1; } for (;i < this._length; ++i) { acc = fn(acc, this.get(i), i, this); } return acc; }; var rt = function() { var layout; if (this._dataBytes === null) { layout = 1; } else if (this._dataBytes + this._pointersBytes > 8) { layout = 7; } else { layout = sizes[this._dataBytes][this._pointersBytes]; } return { meta: 1, layout: layout, dataBytes: this._dataBytes, pointersBytes: this._pointersBytes }; }; var layout = function() { return { meta: 1, segment: this._segment, begin: this._begin, length: this._length, dataBytes: this._dataBytes, pointersBytes: this._pointersBytes }; }; var install = function(target) { target.length = length; target.map = map; target.forEach = forEach; target.reduce = reduce; }; exports.length = length; exports.map = map; exports.forEach = forEach; exports.reduce = reduce; exports.rt = rt; exports.layout = layout; exports.install = install;