UNPKG

@neo-one/smart-contract-compiler

Version:

NEO•ONE TypeScript smart contract compiler.

96 lines (94 loc) 15.2 kB
"use strict"; 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=