capnp-js
Version:
Capnproto run-time decoding and encoding for Node
61 lines (60 loc) • 2.1 kB
JavaScript
var Reader = require('../../reader/list/Bool');
var builder = require('../layout/list');
var primitives = require('../primitives');
var field = require('./field/index');
var statics = require('./statics');
var methods = require('./methods');
var t = Reader._TYPE;
var ct = Reader._CT;
var Bools = function(arena, isOrphan, layout) {
this._arena = arena;
this._isOrphan = isOrphan;
this._segment = layout.segment;
this._begin = layout.begin;
this._length = layout.length;
this._dataBytes = layout.dataBytes;
this._pointersBytes = layout.pointersBytes;
this._stride = layout.dataBytes + layout.pointersBytes;
};
Bools._READER = Reader;
Bools._TYPE = t;
Bools._CT = ct;
Bools._FIELD = {};
Bools._HASH = Reader._HASH;
statics.deref(Bools);
statics.set(Bools);
Bools._init = function(arena, pointer, length) {
var ell = (length >>> 3) + (length & 7 ? 1 : 0);
var blob = arena._preallocate(pointer.segment, ell);
arena._zero(blob, ell);
builder.preallocated(pointer, blob, Bools._CT, length);
return Bools._deref(arena, pointer);
};
Bools._initOrphan = function(arena, length) {
var ell = (length >>> 3) + (length & 7 ? 1 : 0);
var blob = arena._allocate(ell);
arena._zero(blob, ell);
return new Bools(arena, true, {
segment: blob.segment,
begin: blob.position,
length: length,
dataBytes: ct.dataBytes,
pointersBytes: ct.pointersBytes
});
};
field.install(Bools);
Bools.prototype = {
_TYPE: t,
_CT: ct,
_rt: methods.rt,
_layout: methods.layout
};
methods.install(Bools.prototype);
Bools.prototype.get = Reader.prototype.get;
Bools.prototype.set = function(index, value) {
if (typeof value !== "boolean") {
throw new TypeError();
}
primitives.bool(value, this._segment, this._begin + (index >>> 3), index & 7);
};
module.exports = Bools;