UNPKG

@neo-one/smart-contract-compiler

Version:

NEO•ONE TypeScript smart contract compiler.

64 lines (62 loc) 2.22 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.add = void 0; const BuiltinInterface_1 = require("../BuiltinInterface"); const BuiltinNew_1 = require("../BuiltinNew"); const delete_1 = require("./delete"); const forEach_1 = require("./forEach"); const get_1 = require("./get"); const has_1 = require("./has"); const iterator_1 = require("./iterator"); const set_1 = require("./set"); const size_1 = require("./size"); class MapInterface extends BuiltinInterface_1.BuiltinInterface { } class ReadonlyMapInterface extends BuiltinInterface_1.BuiltinInterface { } class MapValue extends BuiltinNew_1.BuiltinNew { constructor() { super(...arguments); this.type = 'MapConstructor'; } emitInstanceOf(sb, node, optionsIn) { const options = sb.pushValueOptions(optionsIn); sb.visit(node, options); if (optionsIn.pushValue) { sb.emitHelper(node, options, sb.helpers.isMap); sb.emitHelper(node, options, sb.helpers.wrapBoolean); } else { sb.emitOp(node, 'DROP'); } } emitNew(sb, node, options) { if (!options.pushValue) { return; } sb.emitOp(node, 'NEWMAP'); sb.emitHelper(node, options, sb.helpers.wrapMap); } } class MapConstructorInterface extends BuiltinInterface_1.BuiltinInterface { } const COMMON = [ ['__@iterator', new iterator_1.MapIterator()], ['forEach', new forEach_1.MapForEach()], ['get', new get_1.MapGet()], ['has', new has_1.MapHas()], ['size', new size_1.MapSize()], ]; exports.add = (builtins) => { builtins.addInterface('Map', new MapInterface()); builtins.addInterface('ReadonlyMap', new ReadonlyMapInterface()); builtins.addValue('Map', new MapValue()); COMMON.forEach(([name, builtin]) => { builtins.addGlobalMember('Map', name, builtin); builtins.addGlobalMember('ReadonlyMap', name, builtin); }); builtins.addGlobalMember('Map', 'delete', new delete_1.MapDelete()); builtins.addGlobalMember('Map', 'set', new set_1.MapSet()); builtins.addInterface('MapConstructor', new MapConstructorInterface()); }; //# sourceMappingURL=index.js.map