@neo-one/smart-contract-compiler
Version:
NEO•ONE TypeScript smart contract compiler.
96 lines (94 loc) • 15.2 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const Helper_1 = require("../Helper");
class ArrSliceHelper extends Helper_1.Helper {
constructor(options) {
super();
this.hasEnd = options.hasEnd === undefined ? false : options.hasEnd;
}
emit(sb, node, options) {
if (!options.pushValue) {
sb.emitOp(node, 'DROP');
if (this.hasEnd) {
sb.emitOp(node, 'DROP');
}
sb.emitOp(node, 'DROP');
return;
}
if (!this.hasEnd) {
sb.emitOp(node, 'OVER');
sb.emitOp(node, 'ARRAYSIZE');
sb.emitOp(node, 'SWAP');
}
sb.emitHelper(node, options, sb.helpers.if({
condition: () => {
sb.emitOp(node, 'TUCK');
sb.emitPushInt(node, 0);
sb.emitOp(node, 'LT');
},
whenTrue: () => {
sb.emitOp(node, 'SWAP');
sb.emitOp(node, 'ROT');
sb.emitOp(node, 'TUCK');
sb.emitOp(node, 'ARRAYSIZE');
sb.emitOp(node, 'ADD');
sb.emitOp(node, 'ROT');
},
}));
sb.emitHelper(node, options, sb.helpers.if({
condition: () => {
sb.emitOp(node, 'DUP');
sb.emitPushInt(node, 0);
sb.emitOp(node, 'LT');
},
whenTrue: () => {
sb.emitOp(node, 'ROT');
sb.emitOp(node, 'TUCK');
sb.emitOp(node, 'ARRAYSIZE');
sb.emitOp(node, 'ADD');
sb.emitOp(node, 'ROT');
sb.emitOp(node, 'SWAP');
},
}));
sb.emitOp(node, 'ROT');
sb.emitOp(node, 'TUCK');
sb.emitOp(node, 'ARRAYSIZE');
sb.emitOp(node, 'MIN');
sb.emitOp(node, 'ROT');
sb.emitPushInt(node, 0);
sb.emitOp(node, 'MAX');
sb.emitOp(node, 'SWAP');
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, 'SWAP');
sb.emitOp(node, 'TUCK');
sb.emitOp(node, 'OVER');
sb.emitOp(node, 'LT');
},
each: () => {
sb.emitOp(node, 'SWAP');
sb.emitOp(node, 'ROT');
sb.emitOp(node, 'TUCK');
sb.emitOp(node, 'OVER');
sb.emitPushInt(node, 5);
sb.emitOp(node, 'PICK');
sb.emitOp(node, 'SWAP');
sb.emitOp(node, 'PICKITEM');
sb.emitOp(node, 'APPEND');
sb.emitOp(node, 'INC');
sb.emitOp(node, 'ROT');
},
cleanup: () => {
},
}));
sb.emitOp(node, 'DROP');
sb.emitOp(node, 'DROP');
sb.emitOp(node, 'NIP');
}
}
exports.ArrSliceHelper = ArrSliceHelper;
//# sourceMappingURL=data:application/json;charset=utf8;base64,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QUdGLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRXhCLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRXhCLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3pCLENBQUM7Q0FDRjtBQXRLRCx3Q0FzS0MiLCJmaWxlIjoibmVvLW9uZS1zbWFydC1jb250cmFjdC1jb21waWxlci9zcmMvY29tcGlsZS9oZWxwZXIvY29tbW9uL0FyclNsaWNlSGVscGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuaW1wb3J0IHsgU2NyaXB0QnVpbGRlciB9IGZyb20gJy4uLy4uL3NiJztcbmltcG9ydCB7IFZpc2l0T3B0aW9ucyB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IEhlbHBlciB9IGZyb20gJy4uL0hlbHBlcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXJyU2xpY2VIZWxwZXJPcHRpb25zIHtcbiAgcmVhZG9ubHkgaGFzRW5kPzogYm9vbGVhbjtcbn1cblxuLy8gSW5wdXQ6IFtzdGFydCwgZW5kPywgYXJyXVxuLy8gT3V0cHV0OiBbYXJyXVxuZXhwb3J0IGNsYXNzIEFyclNsaWNlSGVscGVyIGV4dGVuZHMgSGVscGVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBoYXNFbmQ6IGJvb2xlYW47XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKG9wdGlvbnM6IEFyclNsaWNlSGVscGVyT3B0aW9ucykge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5oYXNFbmQgPSBvcHRpb25zLmhhc0VuZCA9PT0gdW5kZWZpbmVkID8gZmFsc2UgOiBvcHRpb25zLmhhc0VuZDtcbiAgfVxuXG4gIHB1YmxpYyBlbWl0KHNiOiBTY3JpcHRCdWlsZGVyLCBub2RlOiB0cy5Ob2RlLCBvcHRpb25zOiBWaXNpdE9wdGlvbnMpOiB2b2lkIHtcbiAgICBpZiAoIW9wdGlvbnMucHVzaFZhbHVlKSB7XG4gICAgICAvLyBbZW5kPywgYXJyXVxuICAgICAgc2IuZW1pdE9wKG5vZGUsICdEUk9QJyk7XG4gICAgICBpZiAodGhpcy5oYXNFbmQpIHtcbiAgICAgICAgLy8gW2Fycl1cbiAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdEUk9QJyk7XG4gICAgICB9XG4gICAgICAvLyBbXVxuICAgICAgc2IuZW1pdE9wKG5vZGUsICdEUk9QJyk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuaGFzRW5kKSB7XG4gICAgICAvLyBbYXJyLCBzdGFydCwgYXJyXVxuICAgICAgc2IuZW1pdE9wKG5vZGUsICdPVkVSJyk7XG4gICAgICAvLyBbZW5kLCBzdGFydCwgYXJyXVxuICAgICAgc2IuZW1pdE9wKG5vZGUsICdBUlJBWVNJWkUnKTtcbiAgICAgIC8vIFtzdGFydCwgZW5kLCBhcnJdXG4gICAgICBzYi5lbWl0T3Aobm9kZSwgJ1NXQVAnKTtcbiAgICB9XG5cbiAgICBzYi5lbWl0SGVscGVyKFxuICAgICAgbm9kZSxcbiAgICAgIG9wdGlvbnMsXG4gICAgICBzYi5oZWxwZXJzLmlmKHtcbiAgICAgICAgY29uZGl0aW9uOiAoKSA9PiB7XG4gICAgICAgICAgLy8gW3N0YXJ0LCBlbmQsIHN0YXJ0LCBhcnJdXG4gICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdUVUNLJyk7XG4gICAgICAgICAgLy8gWzAsIHN0YXJ0LCBlbmQsIHN0YXJ0LCBhcnJdXG4gICAgICAgICAgc2IuZW1pdFB1c2hJbnQobm9kZSwgMCk7XG4gICAgICAgICAgLy8gW3N0YXJ0IDwgMCwgZW5kLCBzdGFydCwgYXJyXVxuICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnTFQnKTtcbiAgICAgICAgfSxcbiAgICAgICAgd2hlblRydWU6ICgpID0+IHtcbiAgICAgICAgICAvLyBbc3RhcnQsIGVuZCwgYXJyXVxuICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnU1dBUCcpO1xuICAgICAgICAgIC8vIFthcnIsIHN0YXJ0LCBlbmRdXG4gICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdST1QnKTtcbiAgICAgICAgICAvLyBbYXJyLCBzdGFydCwgYXJyLCBlbmRdXG4gICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdUVUNLJyk7XG4gICAgICAgICAgLy8gW3NpemUsIHN0YXJ0LCBhcnIsIGVuZF1cbiAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ0FSUkFZU0laRScpO1xuICAgICAgICAgIC8vIFtzdGFydCwgYXJyLCBlbmRdXG4gICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdBREQnKTtcbiAgICAgICAgICAvLyBbZW5kLCBzdGFydCwgYXJyXVxuICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnUk9UJyk7XG4gICAgICAgIH0sXG4gICAgICB9KSxcbiAgICApO1xuXG4gICAgc2IuZW1pdEhlbHBlcihcbiAgICAgIG5vZGUsXG4gICAgICBvcHRpb25zLFxuICAgICAgc2IuaGVscGVycy5pZih7XG4gICAgICAgIGNvbmRpdGlvbjogKCkgPT4ge1xuICAgICAgICAgIC8vIFtlbmQsIGVuZCwgc3RhcnQsIGFycl1cbiAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ0RVUCcpO1xuICAgICAgICAgIC8vIFswLCBlbmQsIGVuZCwgc3RhcnQsIGFycl1cbiAgICAgICAgICBzYi5lbWl0UHVzaEludChub2RlLCAwKTtcbiAgICAgICAgICAvLyBbZW5kIDwgMCwgZW5kLCBzdGFydCwgYXJyXVxuICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnTFQnKTtcbiAgICAgICAgfSxcbiAgICAgICAgd2hlblRydWU6ICgpID0+IHtcbiAgICAgICAgICAvLyBbYXJyLCBlbmQsIHN0YXJ0XVxuICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnUk9UJyk7XG4gICAgICAgICAgLy8gW2FyciwgZW5kLCBhcnIsIHN0YXJ0XVxuICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnVFVDSycpO1xuICAgICAgICAgIC8vIFtzaXplLCBlbmQsIGFyciwgc3RhcnRdXG4gICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdBUlJBWVNJWkUnKTtcbiAgICAgICAgICAvLyBbZW5kLCBhcnIsIHN0YXJ0XVxuICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnQUREJyk7XG4gICAgICAgICAgLy8gW3N0YXJ0LCBlbmQsIGFycl1cbiAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ1JPVCcpO1xuICAgICAgICAgIC8vIFtlbmQsIHN0YXJ0LCBhcnJdXG4gICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdTV0FQJyk7XG4gICAgICAgIH0sXG4gICAgICB9KSxcbiAgICApO1xuXG4gICAgLy8gW2FyciwgZW5kLCBzdGFydF1cbiAgICBzYi5lbWl0T3Aobm9kZSwgJ1JPVCcpO1xuICAgIC8vIFthcnIsIGVuZCwgYXJyLCBzdGFydF1cbiAgICBzYi5lbWl0T3Aobm9kZSwgJ1RVQ0snKTtcbiAgICAvLyBbc2l6ZSwgZW5kLCBhcnIsIHN0YXJ0XVxuICAgIHNiLmVtaXRPcChub2RlLCAnQVJSQVlTSVpFJyk7XG4gICAgLy8gW2VuZCwgYXJyLCBzdGFydF1cbiAgICBzYi5lbWl0T3Aobm9kZSwgJ01JTicpO1xuICAgIC8vIFtzdGFydCwgZW5kLCBhcnJdXG4gICAgc2IuZW1pdE9wKG5vZGUsICdST1QnKTtcbiAgICAvLyBbMCwgc3RhcnQsIGVuZCwgYXJyXVxuICAgIHNiLmVtaXRQdXNoSW50KG5vZGUsIDApO1xuICAgIC8vIFtzdGFydCwgZW5kLCBhcnJdXG4gICAgc2IuZW1pdE9wKG5vZGUsICdNQVgnKTtcblxuICAgIC8vIFtlbmQsIGlkeCwgYXJyXVxuICAgIHNiLmVtaXRPcChub2RlLCAnU1dBUCcpO1xuICAgIC8vIFswLCBlbmQsIGlkeCwgYXJyXVxuICAgIHNiLmVtaXRQdXNoSW50KG5vZGUsIDApO1xuICAgIC8vIFtvdXRwdXRBcnIsIGVuZCwgaWR4LCBhcnJdXG4gICAgc2IuZW1pdE9wKG5vZGUsICdORVdBUlJBWScpO1xuICAgIC8vIFtpZHgsIG91dHB1dEFyciwgZW5kLCBhcnJdXG4gICAgc2IuZW1pdE9wKG5vZGUsICdST1QnKTtcbiAgICAvLyBbZW5kLCBpZHgsIG91dHB1dEFyciwgYXJyXVxuICAgIHNiLmVtaXRPcChub2RlLCAnUk9UJyk7XG5cbiAgICBzYi5lbWl0SGVscGVyKFxuICAgICAgbm9kZSxcbiAgICAgIG9wdGlvbnMsXG4gICAgICBzYi5oZWxwZXJzLmZvckxvb3Aoe1xuICAgICAgICBjb25kaXRpb246ICgpID0+IHtcbiAgICAgICAgICAvLyBbaWR4LCBlbmQsIG91dHB1dEFyciwgYXJyXVxuICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnU1dBUCcpO1xuICAgICAgICAgIC8vIFtpZHgsIGVuZCwgaWR4LCBvdXRwdXRBcnIsIGFycl1cbiAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ1RVQ0snKTtcbiAgICAgICAgICAvLyBbZW5kLCBpZHgsIGVuZCwgaWR4LCBvdXRwdXRBcnIsIGFycl1cbiAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ09WRVInKTtcbiAgICAgICAgICAvLyBbaWR4IDwgZW5kLCBlbmQsIGlkeCwgb3V0cHV0QXJyLCBhcnJdXG4gICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdMVCcpO1xuICAgICAgICB9LFxuICAgICAgICBlYWNoOiAoKSA9PiB7XG4gICAgICAgICAgLy8gW2lkeCwgZW5kLCBvdXRwdXRBcnIsIGFycl1cbiAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ1NXQVAnKTtcbiAgICAgICAgICAvLyBbb3V0cHV0QXJyLCBpZHgsIGVuZCwgYXJyXVxuICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnUk9UJyk7XG4gICAgICAgICAgLy8gW291dHB1dEFyciwgaWR4LCBvdXRwdXRBcnIsIGVuZCwgYXJyXVxuICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnVFVDSycpO1xuICAgICAgICAgIC8vIFtpZHgsIG91dHB1dEFyciwgaWR4LCBvdXRwdXRBcnIsIGVuZCwgYXJyXVxuICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnT1ZFUicpO1xuICAgICAgICAgIC8vIFs1LCBpZHgsIG91dHB1dEFyciwgaWR4LCBvdXRwdXRBcnIsIGVuZCwgYXJyXVxuICAgICAgICAgIHNiLmVtaXRQdXNoSW50KG5vZGUsIDUpO1xuICAgICAgICAgIC8vIFthcnIsIGlkeCwgb3V0cHV0QXJyLCBpZHgsIG91dHB1dEFyciwgZW5kLCBhcnJdXG4gICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdQSUNLJyk7XG4gICAgICAgICAgLy8gW2lkeCwgYXJyLCBvdXRwdXRBcnIsIGlkeCwgb3V0cHV0QXJyLCBlbmQsIGFycl1cbiAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ1NXQVAnKTtcbiAgICAgICAgICAvLyBbdmFsdWUsIG91dHB1dEFyciwgaWR4LCBvdXRwdXRBcnIsIGVuZCwgYXJyXVxuICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnUElDS0lURU0nKTtcbiAgICAgICAgICAvLyBbaWR4LCBvdXRwdXRBcnIsIGVuZCwgYXJyXVxuICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnQVBQRU5EJyk7XG4gICAgICAgICAgLy8gW2lkeCwgb3V0cHV0QXJyLCBlbmQsIGFycl1cbiAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ0lOQycpO1xuICAgICAgICAgIC8vIFtlbmQsIGlkeCwgb3V0cHV0QXJyLCBhcnJdXG4gICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdST1QnKTtcbiAgICAgICAgfSxcbiAgICAgICAgY2xlYW51cDogKCkgPT4ge1xuICAgICAgICAgIC8vIGRvIG5vdGhpbmdcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgICAvLyBbaWR4LCBvdXRwdXRBcnIsIGFycl1cbiAgICBzYi5lbWl0T3Aobm9kZSwgJ0RST1AnKTtcbiAgICAvLyBbb3V0cHV0QXJyLCBhcnJdXG4gICAgc2IuZW1pdE9wKG5vZGUsICdEUk9QJyk7XG4gICAgLy8gW291dHB1dEFycl1cbiAgICBzYi5lbWl0T3Aobm9kZSwgJ05JUCcpO1xuICB9XG59XG4iXX0=