UNPKG

@neo-one/smart-contract-compiler

Version:

NEO•ONE TypeScript smart contract compiler.

58 lines (56 loc) 10.3 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const Helper_1 = require("../Helper"); class ArrMapFuncHelper extends Helper_1.Helper { emit(sb, node, options) { if (!options.pushValue) { sb.emitOp(node, 'DROP'); return; } sb.emitHelper(node, options, sb.helpers.getCallable({})); sb.emitOp(node, 'SWAP'); sb.emitOp(node, 'UNPACK'); sb.emitOp(node, 'DUP'); sb.emitOp(node, 'INC'); sb.emitOp(node, 'ROLL'); sb.emitOp(node, 'SWAP'); sb.emitPushInt(node, 0); sb.emitOp(node, 'SWAP'); sb.emitHelper(node, options, sb.helpers.forLoop({ condition: () => { sb.emitOp(node, 'TUCK'); sb.emitOp(node, 'OVER'); sb.emitOp(node, 'GT'); }, each: (innerOptions) => { sb.emitOp(node, 'ROT'); sb.emitOp(node, 'TUCK'); sb.emitOp(node, 'OVER'); sb.emitOp(node, 'DUP'); sb.emitHelper(node, options, sb.helpers.wrapNumber); sb.emitOp(node, 'SWAP'); sb.emitPushInt(node, 5); sb.emitOp(node, 'ADD'); sb.emitOp(node, 'ROLL'); sb.emitPushInt(node, 2); sb.emitOp(node, 'PACK'); sb.emitOp(node, 'SWAP'); sb.emitHelper(node, innerOptions, sb.helpers.call); sb.emitOp(node, 'OVER'); sb.emitPushInt(node, 4); sb.emitOp(node, 'ADD'); sb.emitOp(node, 'XTUCK'); sb.emitOp(node, 'DROP'); sb.emitOp(node, 'INC'); sb.emitOp(node, 'ROT'); }, cleanup: () => { sb.emitOp(node, 'NIP'); sb.emitOp(node, 'NIP'); sb.emitOp(node, 'PACK'); }, })); } } exports.ArrMapFuncHelper = ArrMapFuncHelper; //# sourceMappingURL=data:application/json;charset=utf8;base64,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Z0JBRW5ELEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUV4QixFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFFeEIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBRXZCLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUV6QixFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFFeEIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBRXZCLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3pCLENBQUM7WUFDRCxPQUFPLEVBQUUsR0FBRyxFQUFFO2dCQUVaLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUV2QixFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFFdkIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDMUIsQ0FBQztTQUNGLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBM0ZELDRDQTJGQyIsImZpbGUiOiJuZW8tb25lLXNtYXJ0LWNvbnRyYWN0LWNvbXBpbGVyL3NyYy9jb21waWxlL2hlbHBlci9hcnIvQXJyTWFwRnVuY0hlbHBlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0cyBmcm9tICd0eXBlc2NyaXB0JztcbmltcG9ydCB7IFNjcmlwdEJ1aWxkZXIgfSBmcm9tICcuLi8uLi9zYic7XG5pbXBvcnQgeyBWaXNpdE9wdGlvbnMgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBIZWxwZXIgfSBmcm9tICcuLi9IZWxwZXInO1xuXG4vLyBJbnB1dDogW29iamVjdFZhbCwgYXJyXVxuLy8gT3V0cHV0OiBbYXJyXVxuZXhwb3J0IGNsYXNzIEFyck1hcEZ1bmNIZWxwZXIgZXh0ZW5kcyBIZWxwZXIge1xuICBwdWJsaWMgZW1pdChzYjogU2NyaXB0QnVpbGRlciwgbm9kZTogdHMuTm9kZSwgb3B0aW9uczogVmlzaXRPcHRpb25zKTogdm9pZCB7XG4gICAgaWYgKCFvcHRpb25zLnB1c2hWYWx1ZSkge1xuICAgICAgc2IuZW1pdE9wKG5vZGUsICdEUk9QJyk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBbY2FsbGFibGUsIGFycl1cbiAgICBzYi5lbWl0SGVscGVyKG5vZGUsIG9wdGlvbnMsIHNiLmhlbHBlcnMuZ2V0Q2FsbGFibGUoe30pKTtcbiAgICAvLyBbYXJyLCBjYWxsYWJsZV1cbiAgICBzYi5lbWl0T3Aobm9kZSwgJ1NXQVAnKTtcbiAgICAvLyBbc2l6ZSwgLi4uYXJyLCBjYWxsYWJsZV1cbiAgICBzYi5lbWl0T3Aobm9kZSwgJ1VOUEFDSycpO1xuICAgIC8vIFtzaXplLCBzaXplLCAuLi5hcnIsIGNhbGxhYmxlXVxuICAgIHNiLmVtaXRPcChub2RlLCAnRFVQJyk7XG4gICAgLy8gW3NpemUgKyAxLCBzaXplLCAuLi5hcnIsIGNhbGxhYmxlXVxuICAgIHNiLmVtaXRPcChub2RlLCAnSU5DJyk7XG4gICAgLy8gW2NhbGxhYmxlLCBzaXplLCAuLi5hcnJdXG4gICAgc2IuZW1pdE9wKG5vZGUsICdST0xMJyk7XG4gICAgLy8gW3NpemUsIGNhbGxhYmxlLCAuLi5hcnJdXG4gICAgc2IuZW1pdE9wKG5vZGUsICdTV0FQJyk7XG4gICAgLy8gW2lkeCwgc2l6ZSwgY2FsbGFibGUsIC4uLmFycl1cbiAgICBzYi5lbWl0UHVzaEludChub2RlLCAwKTtcbiAgICAvLyBbc2l6ZSwgaWR4LCBjYWxsYWJsZSwgLi4uYXJyXVxuICAgIHNiLmVtaXRPcChub2RlLCAnU1dBUCcpO1xuICAgIHNiLmVtaXRIZWxwZXIoXG4gICAgICBub2RlLFxuICAgICAgb3B0aW9ucyxcbiAgICAgIHNiLmhlbHBlcnMuZm9yTG9vcCh7XG4gICAgICAgIGNvbmRpdGlvbjogKCkgPT4ge1xuICAgICAgICAgIC8vIFtzaXplLCBpZHgsIHNpemUsIGNhbGxhYmxlLCAuLi5hcnJdXG4gICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdUVUNLJyk7XG4gICAgICAgICAgLy8gW2lkeCwgc2l6ZSwgaWR4LCBzaXplLCBjYWxsYWJsZSwgLi4uYXJyXVxuICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnT1ZFUicpO1xuICAgICAgICAgIC8vIFtzaXplID4gaWR4LCBpZHgsIHNpemUsIGNhbGxhYmxlLCAuLi5hcnJdXG4gICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdHVCcpO1xuICAgICAgICB9LFxuICAgICAgICBlYWNoOiAoaW5uZXJPcHRpb25zKSA9PiB7XG4gICAgICAgICAgLy8gW2NhbGxhYmxlLCBpZHgsIHNpemUsIC4uLmFycl1cbiAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ1JPVCcpO1xuICAgICAgICAgIC8vIFtjYWxsYWJsZSwgaWR4LCBjYWxsYWJsZSwgc2l6ZSwgLi4uYXJyXVxuICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnVFVDSycpO1xuICAgICAgICAgIC8vIFtpZHgsIGNhbGxhYmxlLCBpZHgsIGNhbGxhYmxlLCBzaXplLCAuLi5hcnJdXG4gICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdPVkVSJyk7XG4gICAgICAgICAgLy8gW2lkeCwgaWR4LCBjYWxsYWJsZSwgaWR4LCBjYWxsYWJsZSwgc2l6ZSwgLi4uYXJyXVxuICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnRFVQJyk7XG4gICAgICAgICAgLy8gW2lkeFZhbCwgaWR4LCBjYWxsYWJsZSwgaWR4LCBjYWxsYWJsZSwgc2l6ZSwgLi4uYXJyXVxuICAgICAgICAgIHNiLmVtaXRIZWxwZXIobm9kZSwgb3B0aW9ucywgc2IuaGVscGVycy53cmFwTnVtYmVyKTtcbiAgICAgICAgICAvLyBbaWR4LCBpZHhWYWwsIGNhbGxhYmxlLCBpZHgsIGNhbGxhYmxlLCBzaXplLCAuLi5hcnJdXG4gICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdTV0FQJyk7XG4gICAgICAgICAgLy8gWzUsIGlkeCwgaWR4VmFsLCBjYWxsYWJsZSwgaWR4LCBjYWxsYWJsZSwgc2l6ZSwgLi4uYXJyXVxuICAgICAgICAgIHNiLmVtaXRQdXNoSW50KG5vZGUsIDUpO1xuICAgICAgICAgIC8vIFtpZHggKyA1LCBpZHhWYWwsIGNhbGxhYmxlLCBpZHgsIGNhbGxhYmxlLCBzaXplLCAuLi5hcnJdXG4gICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdBREQnKTtcbiAgICAgICAgICAvLyBbdmFsLCBpZHhWYWwsIGNhbGxhYmxlLCBpZHgsIGNhbGxhYmxlLCBzaXplLCAuLi5hcnJdXG4gICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdST0xMJyk7XG4gICAgICAgICAgLy8gWzIsIHZhbCwgaWR4VmFsLCBjYWxsYWJsZSwgaWR4LCBjYWxsYWJsZSwgc2l6ZSwgLi4uYXJyXVxuICAgICAgICAgIHNiLmVtaXRQdXNoSW50KG5vZGUsIDIpO1xuICAgICAgICAgIC8vIFthcmdzYXJyLCBjYWxsYWJsZSwgaWR4LCBjYWxsYWJsZSwgc2l6ZSwgLi4uYXJyXVxuICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnUEFDSycpO1xuICAgICAgICAgIC8vIFtjYWxsYWJsZSwgYXJnc2FyciwgaWR4LCBjYWxsYWJsZSwgc2l6ZSwgLi4uYXJyXVxuICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnU1dBUCcpO1xuICAgICAgICAgIC8vIFt2YWwsIGlkeCwgY2FsbGFibGUsIHNpemUsIC4uLmFycl1cbiAgICAgICAgICBzYi5lbWl0SGVscGVyKG5vZGUsIGlubmVyT3B0aW9ucywgc2IuaGVscGVycy5jYWxsKTtcbiAgICAgICAgICAvLyBbaWR4LCB2YWwsIGlkeCwgY2FsbGFibGUsIHNpemUsIC4uLmFycl1cbiAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ09WRVInKTtcbiAgICAgICAgICAvLyBbNCwgaWR4LCB2YWwsIGlkeCwgY2FsbGFibGUsIHNpemUsIC4uLmFycl1cbiAgICAgICAgICBzYi5lbWl0UHVzaEludChub2RlLCA0KTtcbiAgICAgICAgICAvLyBbaWR4ICsgNCwgdmFsLCBpZHgsIGNhbGxhYmxlLCBzaXplLCAuLi5hcnJdXG4gICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdBREQnKTtcbiAgICAgICAgICAvLyBbdmFsLCBpZHgsIGNhbGxhYmxlLCBzaXplLCAuLi5hcnJdXG4gICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdYVFVDSycpO1xuICAgICAgICAgIC8vIFtpZHgsIGNhbGxhYmxlLCBzaXplLCAuLi5hcnJdXG4gICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdEUk9QJyk7XG4gICAgICAgICAgLy8gW2lkeCwgY2FsbGFibGUsIHNpemUsIC4uLmFycl1cbiAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ0lOQycpO1xuICAgICAgICAgIC8vIFtzaXplLCBpZHgsIGNhbGxhYmxlLCAuLi5hcnJdXG4gICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdST1QnKTtcbiAgICAgICAgfSxcbiAgICAgICAgY2xlYW51cDogKCkgPT4ge1xuICAgICAgICAgIC8vIFtzaXplLCBjYWxsYWJsZSwgLi4uYXJyXVxuICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnTklQJyk7XG4gICAgICAgICAgLy8gW3NpemUsIC4uLmFycl1cbiAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ05JUCcpO1xuICAgICAgICAgIC8vIFthcnJdXG4gICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdQQUNLJyk7XG4gICAgICAgIH0sXG4gICAgICB9KSxcbiAgICApO1xuICB9XG59XG4iXX0=