@neo-one/smart-contract-compiler
Version:
NEO•ONE TypeScript smart contract compiler.
47 lines (45 loc) • 8.19 kB
JavaScript
;
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==