UNPKG

@neo-one/smart-contract-compiler

Version:

NEO•ONE TypeScript smart contract compiler.

43 lines (41 loc) 6.37 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const Helper_1 = require("../Helper"); class RawIteratorSomeBaseHelper extends Helper_1.Helper { constructor(options) { super(); this.each = options.each; } emit(sb, node, optionsIn) { const options = sb.pushValueOptions(optionsIn); sb.emitPushBoolean(node, false); sb.emitHelper(node, options, sb.helpers.forLoop({ condition: () => { sb.emitOp(node, 'SWAP'); sb.emitOp(node, 'TUCK'); sb.emitOp(node, 'OVER'); sb.emitOp(node, 'NOT'); sb.emitOp(node, 'SWAP'); sb.emitSysCall(node, 'Neo.Enumerator.Next'); sb.emitOp(node, 'BOOLAND'); }, each: (innerOptions) => { sb.emitOp(node, 'DROP'); sb.emitOp(node, 'DUP'); this.each(sb.pushValueOptions(innerOptions)); }, handleReturn: () => { sb.emitOp(node, 'DROP'); sb.emitOp(node, 'DROP'); }, cleanup: () => { sb.emitOp(node, 'NIP'); if (!optionsIn.pushValue) { sb.emitOp(node, 'DROP'); } }, })); } } exports.RawIteratorSomeBaseHelper = RawIteratorSomeBaseHelper; //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlJhd0l0ZXJhdG9yU29tZUJhc2VIZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFHQSxzQ0FBbUM7QUFRbkMsTUFBYSx5QkFBMEIsU0FBUSxlQUFNO0lBR25ELFlBQW1CLE9BQXlDO1FBQzFELEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO0lBQzNCLENBQUM7SUFFTSxJQUFJLENBQUMsRUFBaUIsRUFBRSxJQUFhLEVBQUUsU0FBdUI7UUFDbkUsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRy9DLEVBQUUsQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLEVBQUUsQ0FBQyxVQUFVLENBQ1gsSUFBSSxFQUNKLE9BQU8sRUFDUCxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztZQUNqQixTQUFTLEVBQUUsR0FBRyxFQUFFO2dCQUVkLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUV4QixFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFFeEIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBRXhCLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUV2QixFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFFeEIsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUscUJBQXFCLENBQUMsQ0FBQztnQkFFNUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDN0IsQ0FBQztZQUNELElBQUksRUFBRSxDQUFDLFlBQVksRUFBRSxFQUFFO2dCQUVyQixFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFFeEIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBRXZCLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7WUFDL0MsQ0FBQztZQUNELFlBQVksRUFBRSxHQUFHLEVBQUU7Z0JBRWpCLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUV4QixFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztZQUMxQixDQUFDO1lBQ0QsT0FBTyxFQUFFLEdBQUcsRUFBRTtnQkFFWixFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFFdkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUU7b0JBRXhCLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2lCQUN6QjtZQUNILENBQUM7U0FDRixDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQTNERCw4REEyREMiLCJmaWxlIjoibmVvLW9uZS1zbWFydC1jb250cmFjdC1jb21waWxlci9zcmMvY29tcGlsZS9oZWxwZXIvaXRlcmF0b3IvUmF3SXRlcmF0b3JTb21lQmFzZUhlbHBlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0cyBmcm9tICd0eXBlc2NyaXB0JztcbmltcG9ydCB7IFNjcmlwdEJ1aWxkZXIgfSBmcm9tICcuLi8uLi9zYic7XG5pbXBvcnQgeyBWaXNpdE9wdGlvbnMgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBIZWxwZXIgfSBmcm9tICcuLi9IZWxwZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJhd0l0ZXJhdG9yU29tZUJhc2VIZWxwZXJPcHRpb25zIHtcbiAgcmVhZG9ubHkgZWFjaDogKG9wdGlvbnM6IFZpc2l0T3B0aW9ucykgPT4gdm9pZDtcbn1cblxuLy8gSW5wdXQ6IFtpdGVyYXRvcl1cbi8vIE91dHB1dDogW2Jvb2xlYW5dXG5leHBvcnQgY2xhc3MgUmF3SXRlcmF0b3JTb21lQmFzZUhlbHBlciBleHRlbmRzIEhlbHBlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZWFjaDogKG9wdGlvbnM6IFZpc2l0T3B0aW9ucykgPT4gdm9pZDtcblxuICBwdWJsaWMgY29uc3RydWN0b3Iob3B0aW9uczogUmF3SXRlcmF0b3JTb21lQmFzZUhlbHBlck9wdGlvbnMpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuZWFjaCA9IG9wdGlvbnMuZWFjaDtcbiAgfVxuXG4gIHB1YmxpYyBlbWl0KHNiOiBTY3JpcHRCdWlsZGVyLCBub2RlOiB0cy5Ob2RlLCBvcHRpb25zSW46IFZpc2l0T3B0aW9ucyk6IHZvaWQge1xuICAgIGNvbnN0IG9wdGlvbnMgPSBzYi5wdXNoVmFsdWVPcHRpb25zKG9wdGlvbnNJbik7XG5cbiAgICAvLyBbcmVzdWx0LCBpdGVyYXRvcl1cbiAgICBzYi5lbWl0UHVzaEJvb2xlYW4obm9kZSwgZmFsc2UpO1xuICAgIHNiLmVtaXRIZWxwZXIoXG4gICAgICBub2RlLFxuICAgICAgb3B0aW9ucyxcbiAgICAgIHNiLmhlbHBlcnMuZm9yTG9vcCh7XG4gICAgICAgIGNvbmRpdGlvbjogKCkgPT4ge1xuICAgICAgICAgIC8vIFtpdGVyYXRvciwgcmVzdWx0XVxuICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnU1dBUCcpO1xuICAgICAgICAgIC8vIFtpdGVyYXRvciwgcmVzdWx0LCBpdGVyYXRvcl1cbiAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ1RVQ0snKTtcbiAgICAgICAgICAvLyBbcmVzdWx0LCBpdGVyYXRvciwgcmVzdWx0LCBpdGVyYXRvcl1cbiAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ09WRVInKTtcbiAgICAgICAgICAvLyBbIXJlc3VsdCwgaXRlcmF0b3IsIHJlc3VsdCwgaXRlcmF0b3JdXG4gICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdOT1QnKTtcbiAgICAgICAgICAvLyBbaXRlcmF0b3IsICFyZXN1bHQsIHJlc3VsdCwgaXRlcmF0b3JdXG4gICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdTV0FQJyk7XG4gICAgICAgICAgLy8gW2Jvb2xlYW4sICFyZXN1bHQsIHJlc3VsdCwgaXRlcmF0b3JdXG4gICAgICAgICAgc2IuZW1pdFN5c0NhbGwobm9kZSwgJ05lby5FbnVtZXJhdG9yLk5leHQnKTtcbiAgICAgICAgICAvLyBbYm9vbGVhbiwgcmVzdWx0LCBpdGVyYXRvcl1cbiAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ0JPT0xBTkQnKTtcbiAgICAgICAgfSxcbiAgICAgICAgZWFjaDogKGlubmVyT3B0aW9ucykgPT4ge1xuICAgICAgICAgIC8vIFtpdGVyYXRvcl1cbiAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ0RST1AnKTtcbiAgICAgICAgICAvLyBbaXRlcmF0b3IsIGl0ZXJhdG9yXVxuICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnRFVQJyk7XG4gICAgICAgICAgLy8gW3Jlc3VsdCwgaXRlcmF0b3JdXG4gICAgICAgICAgdGhpcy5lYWNoKHNiLnB1c2hWYWx1ZU9wdGlvbnMoaW5uZXJPcHRpb25zKSk7XG4gICAgICAgIH0sXG4gICAgICAgIGhhbmRsZVJldHVybjogKCkgPT4ge1xuICAgICAgICAgIC8vIFtpdGVyYXRvcl1cbiAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ0RST1AnKTtcbiAgICAgICAgICAvLyBbXVxuICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnRFJPUCcpO1xuICAgICAgICB9LFxuICAgICAgICBjbGVhbnVwOiAoKSA9PiB7XG4gICAgICAgICAgLy8gW3Jlc3VsdF1cbiAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ05JUCcpO1xuXG4gICAgICAgICAgaWYgKCFvcHRpb25zSW4ucHVzaFZhbHVlKSB7XG4gICAgICAgICAgICAvLyBbXVxuICAgICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdEUk9QJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgfSksXG4gICAgKTtcbiAgfVxufVxuIl19