UNPKG

@neo-one/smart-contract-compiler

Version:

NEO•ONE TypeScript smart contract compiler.

36 lines (34 loc) 5.11 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const Helper_1 = require("../Helper"); class ArrReduceHelper extends Helper_1.Helper { constructor(options) { super(); this.each = options.each; this.withIndex = options.withIndex || false; } emit(sb, node, options) { if (this.withIndex) { sb.emitOp(node, 'SWAP'); sb.emitSysCall(node, 'Neo.Iterator.Create'); sb.emitOp(node, 'SWAP'); sb.emitHelper(node, options, sb.helpers.rawIteratorReduce({ each: (innerOptions) => { sb.emitOp(node, 'ROT'); sb.emitOp(node, 'SWAP'); this.each(innerOptions); }, })); } else { sb.emitOp(node, 'SWAP'); sb.emitSysCall(node, 'Neo.Enumerator.Create'); sb.emitOp(node, 'SWAP'); sb.emitHelper(node, options, sb.helpers.rawEnumeratorReduce({ each: this.each, })); } } } exports.ArrReduceHelper = ArrReduceHelper; //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkFyclJlZHVjZUhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUdBLHNDQUFtQztBQVNuQyxNQUFhLGVBQWdCLFNBQVEsZUFBTTtJQUl6QyxZQUFtQixPQUErQjtRQUNoRCxLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztRQUN6QixJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxTQUFTLElBQUksS0FBSyxDQUFDO0lBQzlDLENBQUM7SUFFTSxJQUFJLENBQUMsRUFBaUIsRUFBRSxJQUFhLEVBQUUsT0FBcUI7UUFDakUsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBRWxCLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBRXhCLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLHFCQUFxQixDQUFDLENBQUM7WUFFNUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFFeEIsRUFBRSxDQUFDLFVBQVUsQ0FDWCxJQUFJLEVBQ0osT0FBTyxFQUNQLEVBQUUsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUM7Z0JBQzNCLElBQUksRUFBRSxDQUFDLFlBQVksRUFBRSxFQUFFO29CQUVyQixFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztvQkFFdkIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7b0JBRXhCLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBQzFCLENBQUM7YUFDRixDQUFDLENBQ0gsQ0FBQztTQUNIO2FBQU07WUFFTCxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztZQUV4QixFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO1lBRTlDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBRXhCLEVBQUUsQ0FBQyxVQUFVLENBQ1gsSUFBSSxFQUNKLE9BQU8sRUFDUCxFQUFFLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDO2dCQUM3QixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7YUFDaEIsQ0FBQyxDQUNILENBQUM7U0FDSDtJQUNILENBQUM7Q0FDRjtBQWxERCwwQ0FrREMiLCJmaWxlIjoibmVvLW9uZS1zbWFydC1jb250cmFjdC1jb21waWxlci9zcmMvY29tcGlsZS9oZWxwZXIvYXJyL0FyclJlZHVjZUhlbHBlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0cyBmcm9tICd0eXBlc2NyaXB0JztcbmltcG9ydCB7IFNjcmlwdEJ1aWxkZXIgfSBmcm9tICcuLi8uLi9zYic7XG5pbXBvcnQgeyBWaXNpdE9wdGlvbnMgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBIZWxwZXIgfSBmcm9tICcuLi9IZWxwZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFyclJlZHVjZUhlbHBlck9wdGlvbnMge1xuICByZWFkb25seSBlYWNoOiAob3B0aW9uczogVmlzaXRPcHRpb25zKSA9PiB2b2lkO1xuICByZWFkb25seSB3aXRoSW5kZXg/OiBib29sZWFuO1xufVxuXG4vLyBJbnB1dDogW2FjY3VtLCBhcnJdXG4vLyBPdXRwdXQ6IFthY2N1bV1cbmV4cG9ydCBjbGFzcyBBcnJSZWR1Y2VIZWxwZXIgZXh0ZW5kcyBIZWxwZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IGVhY2g6IChvcHRpb25zOiBWaXNpdE9wdGlvbnMpID0+IHZvaWQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgd2l0aEluZGV4OiBib29sZWFuO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihvcHRpb25zOiBBcnJSZWR1Y2VIZWxwZXJPcHRpb25zKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmVhY2ggPSBvcHRpb25zLmVhY2g7XG4gICAgdGhpcy53aXRoSW5kZXggPSBvcHRpb25zLndpdGhJbmRleCB8fCBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBlbWl0KHNiOiBTY3JpcHRCdWlsZGVyLCBub2RlOiB0cy5Ob2RlLCBvcHRpb25zOiBWaXNpdE9wdGlvbnMpOiB2b2lkIHtcbiAgICBpZiAodGhpcy53aXRoSW5kZXgpIHtcbiAgICAgIC8vIFthcnIsIGFjY3VtXVxuICAgICAgc2IuZW1pdE9wKG5vZGUsICdTV0FQJyk7XG4gICAgICAvLyBbaXRlcmF0b3IsIGFjY3VtXVxuICAgICAgc2IuZW1pdFN5c0NhbGwobm9kZSwgJ05lby5JdGVyYXRvci5DcmVhdGUnKTtcbiAgICAgIC8vIFthY2N1bSwgaXRlcmF0b3JdXG4gICAgICBzYi5lbWl0T3Aobm9kZSwgJ1NXQVAnKTtcbiAgICAgIC8vIFthY2N1bV1cbiAgICAgIHNiLmVtaXRIZWxwZXIoXG4gICAgICAgIG5vZGUsXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICAgIHNiLmhlbHBlcnMucmF3SXRlcmF0b3JSZWR1Y2Uoe1xuICAgICAgICAgIGVhY2g6IChpbm5lck9wdGlvbnMpID0+IHtcbiAgICAgICAgICAgIC8vIFt2YWwsIGFjY3VtLCBpZHhdXG4gICAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ1JPVCcpO1xuICAgICAgICAgICAgLy8gW2FjY3VtLCB2YWwsIGlkeF1cbiAgICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnU1dBUCcpO1xuICAgICAgICAgICAgLy8gW2FjY3VtXVxuICAgICAgICAgICAgdGhpcy5lYWNoKGlubmVyT3B0aW9ucyk7XG4gICAgICAgICAgfSxcbiAgICAgICAgfSksXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBbYXJyLCBhY2N1bV1cbiAgICAgIHNiLmVtaXRPcChub2RlLCAnU1dBUCcpO1xuICAgICAgLy8gW2VudW1lcmF0b3IsIGFjY3VtXVxuICAgICAgc2IuZW1pdFN5c0NhbGwobm9kZSwgJ05lby5FbnVtZXJhdG9yLkNyZWF0ZScpO1xuICAgICAgLy8gW2FjY3VtLCBlbnVtZXJhdG9yXVxuICAgICAgc2IuZW1pdE9wKG5vZGUsICdTV0FQJyk7XG4gICAgICAvLyBbYWNjdW1dXG4gICAgICBzYi5lbWl0SGVscGVyKFxuICAgICAgICBub2RlLFxuICAgICAgICBvcHRpb25zLFxuICAgICAgICBzYi5oZWxwZXJzLnJhd0VudW1lcmF0b3JSZWR1Y2Uoe1xuICAgICAgICAgIGVhY2g6IHRoaXMuZWFjaCxcbiAgICAgICAgfSksXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuIl19