UNPKG

@neo-one/smart-contract-compiler

Version:

NEO•ONE TypeScript smart contract compiler.

46 lines (44 loc) 7.11 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const Helper_1 = require("../Helper"); class ArrLeftHelper extends Helper_1.Helper { emit(sb, node, options) { if (!options.pushValue) { sb.emitOp(node, 'DROP'); sb.emitOp(node, 'DROP'); return; } sb.emitOp(node, 'OVER'); sb.emitOp(node, 'ARRAYSIZE'); sb.emitPushInt(node, 0); sb.emitOp(node, 'NEWARRAY'); sb.emitOp(node, 'ROT'); sb.emitOp(node, 'ROT'); sb.emitHelper(node, options, sb.helpers.forLoop({ condition: () => { sb.emitOp(node, 'TUCK'); sb.emitOp(node, 'OVER'); sb.emitOp(node, 'GT'); }, each: () => { sb.emitPushInt(node, 2); sb.emitOp(node, 'PICK'); sb.emitPushInt(node, 4); sb.emitOp(node, 'PICK'); sb.emitPushInt(node, 2); sb.emitOp(node, 'PICK'); sb.emitOp(node, 'PICKITEM'); sb.emitOp(node, 'APPEND'); sb.emitOp(node, 'INC'); sb.emitOp(node, 'SWAP'); }, cleanup: () => { sb.emitOp(node, 'DROP'); sb.emitOp(node, 'DROP'); sb.emitOp(node, 'NIP'); }, })); } } exports.ArrLeftHelper = ArrLeftHelper; //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkFyckxlZnRIZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFHQSxzQ0FBbUM7QUFJbkMsTUFBYSxhQUFjLFNBQVEsZUFBTTtJQUNoQyxJQUFJLENBQUMsRUFBaUIsRUFBRSxJQUFhLEVBQUUsT0FBcUI7UUFDakUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUU7WUFFdEIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFFeEIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFFeEIsT0FBTztTQUNSO1FBR0QsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFeEIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFFN0IsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFeEIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFNUIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFdkIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFdkIsRUFBRSxDQUFDLFVBQVUsQ0FDWCxJQUFJLEVBQ0osT0FBTyxFQUNQLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO1lBQ2pCLFNBQVMsRUFBRSxHQUFHLEVBQUU7Z0JBRWQsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBRXhCLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUV4QixFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztZQUN4QixDQUFDO1lBQ0QsSUFBSSxFQUFFLEdBQUcsRUFBRTtnQkFFVCxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFFeEIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBRXhCLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUV4QixFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFFeEIsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBRXhCLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUV4QixFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztnQkFFNUIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBRTFCLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUV2QixFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztZQUMxQixDQUFDO1lBQ0QsT0FBTyxFQUFFLEdBQUcsRUFBRTtnQkFFWixFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFFeEIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBRXhCLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3pCLENBQUM7U0FDRixDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQXJFRCxzQ0FxRUMiLCJmaWxlIjoibmVvLW9uZS1zbWFydC1jb250cmFjdC1jb21waWxlci9zcmMvY29tcGlsZS9oZWxwZXIvYXJyL0FyckxlZnRIZWxwZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5pbXBvcnQgeyBTY3JpcHRCdWlsZGVyIH0gZnJvbSAnLi4vLi4vc2InO1xuaW1wb3J0IHsgVmlzaXRPcHRpb25zIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgSGVscGVyIH0gZnJvbSAnLi4vSGVscGVyJztcblxuLy8gSW5wdXQ6IFtzdGFydCwgYXJyXVxuLy8gT3V0cHV0OiBbYXJyXVxuZXhwb3J0IGNsYXNzIEFyckxlZnRIZWxwZXIgZXh0ZW5kcyBIZWxwZXIge1xuICBwdWJsaWMgZW1pdChzYjogU2NyaXB0QnVpbGRlciwgbm9kZTogdHMuTm9kZSwgb3B0aW9uczogVmlzaXRPcHRpb25zKTogdm9pZCB7XG4gICAgaWYgKCFvcHRpb25zLnB1c2hWYWx1ZSkge1xuICAgICAgLy8gW2Fycl1cbiAgICAgIHNiLmVtaXRPcChub2RlLCAnRFJPUCcpO1xuICAgICAgLy8gW11cbiAgICAgIHNiLmVtaXRPcChub2RlLCAnRFJPUCcpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gW2Fyciwgc3RhcnQsIGFycl1cbiAgICBzYi5lbWl0T3Aobm9kZSwgJ09WRVInKTtcbiAgICAvLyBbc2l6ZSwgc3RhcnQsIGFycl1cbiAgICBzYi5lbWl0T3Aobm9kZSwgJ0FSUkFZU0laRScpO1xuICAgIC8vIFswLCBzaXplLCBzdGFydCwgYXJyXVxuICAgIHNiLmVtaXRQdXNoSW50KG5vZGUsIDApO1xuICAgIC8vIFtvdXRwdXRBcnIsIHNpemUsIHN0YXJ0LCBhcnJdXG4gICAgc2IuZW1pdE9wKG5vZGUsICdORVdBUlJBWScpO1xuICAgIC8vIFtzdGFydCwgb3V0cHV0QXJyLCBzaXplLCBhcnJdXG4gICAgc2IuZW1pdE9wKG5vZGUsICdST1QnKTtcbiAgICAvLyBbc2l6ZSwgaWR4LCBvdXRwdXRBcnIsIGFycl1cbiAgICBzYi5lbWl0T3Aobm9kZSwgJ1JPVCcpO1xuXG4gICAgc2IuZW1pdEhlbHBlcihcbiAgICAgIG5vZGUsXG4gICAgICBvcHRpb25zLFxuICAgICAgc2IuaGVscGVycy5mb3JMb29wKHtcbiAgICAgICAgY29uZGl0aW9uOiAoKSA9PiB7XG4gICAgICAgICAgLy8gW3NpemUsIGlkeCwgc2l6ZSwgb3V0cHV0QXJyLCBhcnJdXG4gICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdUVUNLJyk7XG4gICAgICAgICAgLy8gW2lkeCwgc2l6ZSwgaWR4LCBzaXplLCBvdXRwdXRBcnIsIGFycl1cbiAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ09WRVInKTtcbiAgICAgICAgICAvLyBbc2l6ZSA+IGlkeCwgaWR4LCBzaXplLCBvdXRwdXRBcnIsIGFycl1cbiAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ0dUJyk7XG4gICAgICAgIH0sXG4gICAgICAgIGVhY2g6ICgpID0+IHtcbiAgICAgICAgICAvLyBbMiwgaWR4LCBzaXplLCBvdXRwdXRBcnIsIGFycl1cbiAgICAgICAgICBzYi5lbWl0UHVzaEludChub2RlLCAyKTtcbiAgICAgICAgICAvLyBbb3V0cHV0QXJyLCBpZHgsIHNpemUsIG91dHB1dEFyciwgYXJyXVxuICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnUElDSycpO1xuICAgICAgICAgIC8vIFs0LCBvdXRwdXRBcnIsIGlkeCwgc2l6ZSwgb3V0cHV0QXJyLCBhcnJdXG4gICAgICAgICAgc2IuZW1pdFB1c2hJbnQobm9kZSwgNCk7XG4gICAgICAgICAgLy8gW2Fyciwgb3V0cHV0QXJyLCBpZHgsIHNpemUsIG91dHB1dEFyciwgYXJyXVxuICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnUElDSycpO1xuICAgICAgICAgIC8vIFsyLCBhcnIsIG91dHB1dEFyciwgaWR4LCBzaXplLCBvdXRwdXRBcnIsIGFycl1cbiAgICAgICAgICBzYi5lbWl0UHVzaEludChub2RlLCAyKTtcbiAgICAgICAgICAvLyBbaWR4LCBhcnIsIG91dHB1dEFyciwgaWR4LCBzaXplLCBvdXRwdXRBcnIsIGFycl1cbiAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ1BJQ0snKTtcbiAgICAgICAgICAvLyBbdmFsdWUsIG91dHB1dEFyciwgaWR4LCBzaXplLCBvdXRwdXRBcnIsIGFycl1cbiAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ1BJQ0tJVEVNJyk7XG4gICAgICAgICAgLy8gW2lkeCwgc2l6ZSwgb3V0cHV0QXJyLCBhcnJdXG4gICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdBUFBFTkQnKTtcbiAgICAgICAgICAvLyBbaWR4LCBzaXplLCBvdXRwdXRBcnIsIGFycl1cbiAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ0lOQycpO1xuICAgICAgICAgIC8vIFtzaXplLCBpZHgsIG91dHB1dEFyciwgYXJyXVxuICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnU1dBUCcpO1xuICAgICAgICB9LFxuICAgICAgICBjbGVhbnVwOiAoKSA9PiB7XG4gICAgICAgICAgLy8gW2lkeCwgb3V0cHV0QXJyLCBhcnJdXG4gICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdEUk9QJyk7XG4gICAgICAgICAgLy8gW291dHB1dEFyciwgYXJyXVxuICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnRFJPUCcpO1xuICAgICAgICAgIC8vIFtvdXRwdXRBcnJdXG4gICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdOSVAnKTtcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cbn1cbiJdfQ==