UNPKG

@neo-one/smart-contract-compiler

Version:

NEO•ONE TypeScript smart contract compiler.

47 lines (45 loc) 8.19 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const Helper_1 = require("../Helper"); class CallHelper extends Helper_1.Helper { emit(sb, node, optionsIn) { const options = sb.pushValueOptions(optionsIn); sb.emitOp(node, 'DUP'); sb.emitPushInt(node, 1); sb.emitOp(node, 'PICKITEM'); sb.emitHelper(node, options, sb.helpers.cloneArray); sb.emitOp(node, 'DUP'); sb.emitPushInt(node, 0); sb.emitOp(node, 'OVER'); sb.emitPushInt(node, 0); sb.emitOp(node, 'PICKITEM'); sb.emitHelper(node, options, sb.helpers.cloneArray); sb.emitOp(node, 'SETITEM'); sb.emitOp(node, 'OVER'); sb.emitHelper(node, options, sb.helpers.if({ condition: () => { sb.emitOp(node, 'ARRAYSIZE'); sb.emitPushInt(node, 3); sb.emitOp(node, 'NUMEQUAL'); }, whenTrue: () => { sb.emitOp(node, 'OVER'); sb.emitPushInt(node, 2); sb.emitOp(node, 'PICKITEM'); sb.emitOp(node, 'OVER'); sb.emitPushInt(node, 1); sb.emitOp(node, 'ROT'); sb.emitOp(node, 'SETITEM'); }, })); sb.emitOp(node, 'TOALTSTACK'); sb.emitPushInt(node, 0); sb.emitOp(node, 'PICKITEM'); sb.emitCall(node); sb.emitOp(node, 'FROMALTSTACK'); sb.emitOp(node, 'DROP'); sb.emitHelper(node, optionsIn, sb.helpers.handleCompletion); } } exports.CallHelper = CallHelper; //# sourceMappingURL=data:application/json;charset=utf8;base64,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QyxDQUFDO1FBQ2hDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRXhCLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDOUQsQ0FBQztDQUNGO0FBOUVELGdDQThFQyIsImZpbGUiOiJuZW8tb25lLXNtYXJ0LWNvbnRyYWN0LWNvbXBpbGVyL3NyYy9jb21waWxlL2hlbHBlci9mdW5jdGlvbi9DYWxsSGVscGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuXG5pbXBvcnQgeyBTY3JpcHRCdWlsZGVyIH0gZnJvbSAnLi4vLi4vc2InO1xuaW1wb3J0IHsgVmlzaXRPcHRpb25zIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgSGVscGVyIH0gZnJvbSAnLi4vSGVscGVyJztcblxuZXhwb3J0IGNsYXNzIENhbGxIZWxwZXIgZXh0ZW5kcyBIZWxwZXIge1xuICBwdWJsaWMgZW1pdChzYjogU2NyaXB0QnVpbGRlciwgbm9kZTogdHMuTm9kZSwgb3B0aW9uc0luOiBWaXNpdE9wdGlvbnMpOiB2b2lkIHtcbiAgICBjb25zdCBvcHRpb25zID0gc2IucHVzaFZhbHVlT3B0aW9ucyhvcHRpb25zSW4pO1xuICAgIC8vIFB1c2ggdGhlIHNjb3BlcyBhbmQgdGhpcyB0byB0aGUgYWx0IHN0YWNrXG4gICAgLy8gW2Z1bmMsIGZ1bmNdXG4gICAgc2IuZW1pdE9wKG5vZGUsICdEVVAnKTtcbiAgICAvLyBbMSwgZnVuYywgZnVuY11cbiAgICBzYi5lbWl0UHVzaEludChub2RlLCAxKTtcbiAgICAvLyBbW3Njb3BlcywgdGhpc10sIGZ1bmNdXG4gICAgc2IuZW1pdE9wKG5vZGUsICdQSUNLSVRFTScpO1xuICAgIC8vIFtbc2NvcGVzLCB0aGlzXSwgZnVuY11cbiAgICBzYi5lbWl0SGVscGVyKG5vZGUsIG9wdGlvbnMsIHNiLmhlbHBlcnMuY2xvbmVBcnJheSk7XG4gICAgLy8gW1tzY29wZXMsIHRoaXNdLCBbc2NvcGVzLCB0aGlzXSwgZnVuY11cbiAgICBzYi5lbWl0T3Aobm9kZSwgJ0RVUCcpO1xuICAgIC8vIFswLCBbc2NvcGVzLCB0aGlzXSwgW3Njb3BlcywgdGhpc10sIGZ1bmNdXG4gICAgc2IuZW1pdFB1c2hJbnQobm9kZSwgMCk7XG4gICAgLy8gW1tzY29wZXMsIHRoaXNdLCAwLCBbc2NvcGVzLCB0aGlzXSwgW3Njb3BlcywgdGhpc10sIGZ1bmNdXG4gICAgc2IuZW1pdE9wKG5vZGUsICdPVkVSJyk7XG4gICAgLy8gWzAsIFtzY29wZXMsIHRoaXNdLCAwLCBbc2NvcGVzLCB0aGlzXSwgW3Njb3BlcywgdGhpc10sIGZ1bmNdXG4gICAgc2IuZW1pdFB1c2hJbnQobm9kZSwgMCk7XG4gICAgLy8gW3Njb3BlcywgMCwgW3Njb3BlcywgdGhpc10sIFtzY29wZXMsIHRoaXNdLCBmdW5jXVxuICAgIHNiLmVtaXRPcChub2RlLCAnUElDS0lURU0nKTtcbiAgICAvLyBbc2NvcGVzLCAwLCBbc2NvcGVzLCB0aGlzXSwgW3Njb3BlcywgdGhpc10sIGZ1bmNdXG4gICAgc2IuZW1pdEhlbHBlcihub2RlLCBvcHRpb25zLCBzYi5oZWxwZXJzLmNsb25lQXJyYXkpO1xuICAgIC8vIFtbc2NvcGVzLCB0aGlzXSwgZnVuY11cbiAgICBzYi5lbWl0T3Aobm9kZSwgJ1NFVElURU0nKTtcbiAgICAvLyBbZnVuYywgW3Njb3BlcywgdGhpc10sIGZ1bmNdXG4gICAgc2IuZW1pdE9wKG5vZGUsICdPVkVSJyk7XG4gICAgLy8gW1tzY29wZXMsIHRoaXNdLCBmdW5jXVxuICAgIHNiLmVtaXRIZWxwZXIoXG4gICAgICBub2RlLFxuICAgICAgb3B0aW9ucyxcbiAgICAgIHNiLmhlbHBlcnMuaWYoe1xuICAgICAgICBjb25kaXRpb246ICgpID0+IHtcbiAgICAgICAgICAvLyBbc2l6ZSwgW3Njb3BlcywgdGhpc10sIGZ1bmNdXG4gICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdBUlJBWVNJWkUnKTtcbiAgICAgICAgICAvLyBbMywgc2l6ZSwgW3Njb3BlcywgdGhpc10sIGZ1bmNdXG4gICAgICAgICAgc2IuZW1pdFB1c2hJbnQobm9kZSwgMyk7XG4gICAgICAgICAgLy8gW3NpemUgPT09IDMsIFtzY29wZXMsIHRoaXNdLCBmdW5jXVxuICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnTlVNRVFVQUwnKTtcbiAgICAgICAgfSxcbiAgICAgICAgd2hlblRydWU6ICgpID0+IHtcbiAgICAgICAgICAvLyBbZnVuYywgW3Njb3BlcywgdGhpc10sIGZ1bmNdXG4gICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdPVkVSJyk7XG4gICAgICAgICAgLy8gWzIsIGZ1bmMsIFtzY29wZXMsIHRoaXNdLCBmdW5jXVxuICAgICAgICAgIHNiLmVtaXRQdXNoSW50KG5vZGUsIDIpO1xuICAgICAgICAgIC8vIFt0aGlzLCBbc2NvcGVzLCB0aGlzXSwgZnVuY11cbiAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ1BJQ0tJVEVNJyk7XG4gICAgICAgICAgLy8gW1tzY29wZXMsIHRoaXNdLCB0aGlzLCBbc2NvcGVzLCB0aGlzXSwgZnVuY11cbiAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ09WRVInKTtcbiAgICAgICAgICAvLyBbMSwgW3Njb3BlcywgdGhpc10sIHRoaXMsIFtzY29wZXMsIHRoaXNdLCBmdW5jXVxuICAgICAgICAgIHNiLmVtaXRQdXNoSW50KG5vZGUsIDEpO1xuICAgICAgICAgIC8vIFt0aGlzLCAxLCBbc2NvcGVzLCB0aGlzXSwgW3Njb3BlcywgdGhpc10sIGZ1bmNdXG4gICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdST1QnKTtcbiAgICAgICAgICAvLyBbW3Njb3BlcywgdGhpc10sIGZ1bmNdXG4gICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdTRVRJVEVNJyk7XG4gICAgICAgIH0sXG4gICAgICB9KSxcbiAgICApO1xuXG4gICAgLy8gW2Z1bmNdXG4gICAgc2IuZW1pdE9wKG5vZGUsICdUT0FMVFNUQUNLJyk7XG5cbiAgICAvLyBQdXNoIHRoZSB0YXJnZXQgb24gdGhlIHN0YWNrXG4gICAgLy8gWzAsIGZ1bmNdXG4gICAgc2IuZW1pdFB1c2hJbnQobm9kZSwgMCk7XG4gICAgLy8gW3RhcmdldF1cbiAgICBzYi5lbWl0T3Aobm9kZSwgJ1BJQ0tJVEVNJyk7XG5cbiAgICAvLyBDYWxsIGZ1bmN0aW9uXG4gICAgc2IuZW1pdENhbGwobm9kZSk7XG5cbiAgICAvLyBSZW1vdmUgc2NvcGVcbiAgICBzYi5lbWl0T3Aobm9kZSwgJ0ZST01BTFRTVEFDSycpO1xuICAgIHNiLmVtaXRPcChub2RlLCAnRFJPUCcpO1xuXG4gICAgc2IuZW1pdEhlbHBlcihub2RlLCBvcHRpb25zSW4sIHNiLmhlbHBlcnMuaGFuZGxlQ29tcGxldGlvbik7XG4gIH1cbn1cbiJdfQ==