capnp-js
Version:
Capnproto run-time decoding and encoding for Node
31 lines (30 loc) • 1.03 kB
JavaScript
var type = require('../type');
var any = require('./layout/any');
var structure = require('./methods');
var list = require('./list/methods');
var t = new type.Terminal();
var Any = function(arena, depth, isOrphan, layout) {
this._arena = arena;
this._depth = depth;
this._isOrphan = isOrphan;
this.__layout = layout;
if (layout.meta === 0) {
this._arena.limiter.read(layout.segment, layout.dataSection, layout.end - layout.dataSection);
} else {
this._arena.limiter.read(layout.segment, layout.begin, layout.length);
}
};
Any._TYPE = t;
Any._deref = function(arena, pointer, depth) {
return new Any(arena, depth, false, any.safe(arena, pointer));
};
Any.prototype = {
_TYPE: t,
_rt: function() {
if (this.__layout.meta === 1) return list.rt(); else return structure.rt();
},
_layout: function() {
return this.__layout;
}
};
module.exports = Any;