UNPKG

@neo-one/smart-contract-compiler

Version:

NEO•ONE TypeScript smart contract compiler.

29 lines (27 loc) 4.86 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const Helper_1 = require("../Helper"); class CreateFunctionArrayHelper extends Helper_1.Helper { constructor({ body }) { super(); this.body = body; } emit(sb, node, options) { if (options.pushValue) { sb.scope.pushAll(sb, node, options); sb.emitHelper(node, options, sb.helpers.cloneArray); sb.emitOp(node, 'DUP'); sb.emitPushInt(node, 0); sb.emitOp(node, 'OVER'); sb.emitOp(node, 'OVER'); sb.emitOp(node, 'PICKITEM'); sb.emitHelper(node, options, sb.helpers.cloneArray); sb.emitOp(node, 'SETITEM'); sb.emitHelper(node, options, sb.helpers.function({ body: this.body })); sb.emitPushInt(node, 2); sb.emitOp(node, 'PACK'); } } } exports.CreateFunctionArrayHelper = CreateFunctionArrayHelper; //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNyZWF0ZUZ1bmN0aW9uQXJyYXlIZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFJQSxzQ0FBbUM7QUFRbkMsTUFBYSx5QkFBMEIsU0FBUSxlQUFNO0lBR25ELFlBQW1CLEVBQUUsSUFBSSxFQUFvQztRQUMzRCxLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFFTSxJQUFJLENBQUMsRUFBaUIsRUFBRSxJQUFhLEVBQUUsT0FBcUI7UUFDakUsSUFBSSxPQUFPLENBQUMsU0FBUyxFQUFFO1lBR3JCLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFFcEMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7WUFFcEQsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFFdkIsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFFeEIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFFeEIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFFeEIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFFNUIsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7WUFFcEQsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFFM0IsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFFdkUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFFeEIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDekI7SUFDSCxDQUFDO0NBQ0Y7QUFyQ0QsOERBcUNDIiwiZmlsZSI6Im5lby1vbmUtc21hcnQtY29udHJhY3QtY29tcGlsZXIvc3JjL2NvbXBpbGUvaGVscGVyL2Z1bmN0aW9uL0NyZWF0ZUZ1bmN0aW9uQXJyYXlIZWxwZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5cbmltcG9ydCB7IFNjcmlwdEJ1aWxkZXIgfSBmcm9tICcuLi8uLi9zYic7XG5pbXBvcnQgeyBWaXNpdE9wdGlvbnMgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBIZWxwZXIgfSBmcm9tICcuLi9IZWxwZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZUZ1bmN0aW9uQXJyYXlIZWxwZXJPcHRpb25zIHtcbiAgcmVhZG9ubHkgYm9keTogKG9wdGlvbnM6IFZpc2l0T3B0aW9ucykgPT4gdm9pZDtcbn1cblxuLy8gSW5wdXQ6IFtdXG4vLyBPdXRwdXQ6IFtmYXJyXVxuZXhwb3J0IGNsYXNzIENyZWF0ZUZ1bmN0aW9uQXJyYXlIZWxwZXIgZXh0ZW5kcyBIZWxwZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IGJvZHk6IChvcHRpb25zOiBWaXNpdE9wdGlvbnMpID0+IHZvaWQ7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHsgYm9keSB9OiBDcmVhdGVGdW5jdGlvbkFycmF5SGVscGVyT3B0aW9ucykge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5ib2R5ID0gYm9keTtcbiAgfVxuXG4gIHB1YmxpYyBlbWl0KHNiOiBTY3JpcHRCdWlsZGVyLCBub2RlOiB0cy5Ob2RlLCBvcHRpb25zOiBWaXNpdE9wdGlvbnMpOiB2b2lkIHtcbiAgICBpZiAob3B0aW9ucy5wdXNoVmFsdWUpIHtcbiAgICAgIC8vIGNyZWF0ZSBmdW5jdGlvblxuICAgICAgLy8gW1tzY29wZXMsIHRoaXNdXVxuICAgICAgc2Iuc2NvcGUucHVzaEFsbChzYiwgbm9kZSwgb3B0aW9ucyk7XG4gICAgICAvLyBbW3Njb3BlcywgdGhpc11dXG4gICAgICBzYi5lbWl0SGVscGVyKG5vZGUsIG9wdGlvbnMsIHNiLmhlbHBlcnMuY2xvbmVBcnJheSk7XG4gICAgICAvLyBbW3Njb3BlcywgdGhpc10sIFtzY29wZXMsIHRoaXNdXVxuICAgICAgc2IuZW1pdE9wKG5vZGUsICdEVVAnKTtcbiAgICAgIC8vIFswLCBbc2NvcGVzLCB0aGlzXSwgW3Njb3BlcywgdGhpc11dXG4gICAgICBzYi5lbWl0UHVzaEludChub2RlLCAwKTtcbiAgICAgIC8vIFtbc2NvcGVzLCB0aGlzXSwgMCwgW3Njb3BlcywgdGhpc10sIFtzY29wZXMsIHRoaXNdXVxuICAgICAgc2IuZW1pdE9wKG5vZGUsICdPVkVSJyk7XG4gICAgICAvLyBbMCwgW3Njb3BlcywgdGhpc10sIDAsIFtzY29wZXMsIHRoaXNdLCBbc2NvcGVzLCB0aGlzXV1cbiAgICAgIHNiLmVtaXRPcChub2RlLCAnT1ZFUicpO1xuICAgICAgLy8gW3Njb3BlcywgMCwgW3Njb3BlcywgdGhpc10sIFtzY29wZXMsIHRoaXNdXVxuICAgICAgc2IuZW1pdE9wKG5vZGUsICdQSUNLSVRFTScpO1xuICAgICAgLy8gW3Njb3BlcywgMCwgW3Njb3BlcywgdGhpc10sIFtzY29wZXMsIHRoaXNdXVxuICAgICAgc2IuZW1pdEhlbHBlcihub2RlLCBvcHRpb25zLCBzYi5oZWxwZXJzLmNsb25lQXJyYXkpO1xuICAgICAgLy8gW1tzY29wZXMsIHRoaXNdXVxuICAgICAgc2IuZW1pdE9wKG5vZGUsICdTRVRJVEVNJyk7XG4gICAgICAvLyBbdGFyZ2V0LCBzY29wZXNdXG4gICAgICBzYi5lbWl0SGVscGVyKG5vZGUsIG9wdGlvbnMsIHNiLmhlbHBlcnMuZnVuY3Rpb24oeyBib2R5OiB0aGlzLmJvZHkgfSkpO1xuICAgICAgLy8gWzIsIHRhcmdldCwgc2NvcGVzXVxuICAgICAgc2IuZW1pdFB1c2hJbnQobm9kZSwgMik7XG4gICAgICAvLyBbYXJyXVxuICAgICAgc2IuZW1pdE9wKG5vZGUsICdQQUNLJyk7XG4gICAgfVxuICB9XG59XG4iXX0=