UNPKG

@neo-one/smart-contract-compiler

Version:

NEO•ONE TypeScript smart contract compiler.

41 lines (39 loc) 6.17 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const Helper_1 = require("../../Helper"); class GetBufferIndexHelper extends Helper_1.Helper { emit(sb, node, options) { if (!options.pushValue) { sb.emitOp(node, 'DROP'); sb.emitOp(node, 'DROP'); return; } sb.emitOp(node, 'SWAP'); sb.emitHelper(node, options, sb.helpers.unwrapBuffer); sb.emitOp(node, 'TUCK'); sb.emitOp(node, 'SIZE'); sb.emitOp(node, 'OVER'); sb.emitHelper(node, options, sb.helpers.if({ condition: () => { sb.emitOp(node, 'GT'); }, whenTrue: () => { sb.emitOp(node, 'OVER'); sb.emitOp(node, 'SIZE'); sb.emitOp(node, 'SWAP'); sb.emitOp(node, 'SUB'); sb.emitOp(node, 'RIGHT'); sb.emitPushInt(node, 1); sb.emitOp(node, 'LEFT'); sb.emitHelper(node, options, sb.helpers.wrapNumber); }, whenFalse: () => { sb.emitOp(node, 'DROP'); sb.emitOp(node, 'DROP'); sb.emitHelper(node, options, sb.helpers.wrapUndefined); }, })); } } exports.GetBufferIndexHelper = GetBufferIndexHelper; //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkdldEJ1ZmZlckluZGV4SGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBR0EseUNBQXNDO0FBSXRDLE1BQWEsb0JBQXFCLFNBQVEsZUFBTTtJQUN2QyxJQUFJLENBQUMsRUFBaUIsRUFBRSxJQUFhLEVBQUUsT0FBcUI7UUFDakUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUU7WUFDdEIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDeEIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFFeEIsT0FBTztTQUNSO1FBR0QsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFeEIsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFdEQsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFeEIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFeEIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFeEIsRUFBRSxDQUFDLFVBQVUsQ0FDWCxJQUFJLEVBQ0osT0FBTyxFQUNQLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1osU0FBUyxFQUFFLEdBQUcsRUFBRTtnQkFFZCxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztZQUN4QixDQUFDO1lBQ0QsUUFBUSxFQUFFLEdBQUcsRUFBRTtnQkFFYixFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFFeEIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBRXhCLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUV4QixFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFFdkIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBRXpCLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUV4QixFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFFeEIsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDdEQsQ0FBQztZQUNELFNBQVMsRUFBRSxHQUFHLEVBQUU7Z0JBRWQsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBRXhCLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUV4QixFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUN6RCxDQUFDO1NBQ0YsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0NBQ0Y7QUF6REQsb0RBeURDIiwiZmlsZSI6Im5lby1vbmUtc21hcnQtY29udHJhY3QtY29tcGlsZXIvc3JjL2NvbXBpbGUvaGVscGVyL3R5cGVzL2J1ZmZlci9HZXRCdWZmZXJJbmRleEhlbHBlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0cyBmcm9tICd0eXBlc2NyaXB0JztcbmltcG9ydCB7IFNjcmlwdEJ1aWxkZXIgfSBmcm9tICcuLi8uLi8uLi9zYic7XG5pbXBvcnQgeyBWaXNpdE9wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBIZWxwZXIgfSBmcm9tICcuLi8uLi9IZWxwZXInO1xuXG4vLyBJbnB1dDogW2luZGV4TnVtYmVyLCBidWZmZXJWYWxdXG4vLyBPdXRwdXQ6IFt2YWxdXG5leHBvcnQgY2xhc3MgR2V0QnVmZmVySW5kZXhIZWxwZXIgZXh0ZW5kcyBIZWxwZXIge1xuICBwdWJsaWMgZW1pdChzYjogU2NyaXB0QnVpbGRlciwgbm9kZTogdHMuTm9kZSwgb3B0aW9uczogVmlzaXRPcHRpb25zKTogdm9pZCB7XG4gICAgaWYgKCFvcHRpb25zLnB1c2hWYWx1ZSkge1xuICAgICAgc2IuZW1pdE9wKG5vZGUsICdEUk9QJyk7XG4gICAgICBzYi5lbWl0T3Aobm9kZSwgJ0RST1AnKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFtidWZmZXJWYWwsIGluZGV4TnVtYmVyXVxuICAgIHNiLmVtaXRPcChub2RlLCAnU1dBUCcpO1xuICAgIC8vIFtidWZmZXIsIGluZGV4TnVtYmVyXVxuICAgIHNiLmVtaXRIZWxwZXIobm9kZSwgb3B0aW9ucywgc2IuaGVscGVycy51bndyYXBCdWZmZXIpO1xuICAgIC8vIFtidWZmZXIsIGluZGV4TnVtYmVyLCBidWZmZXJdXG4gICAgc2IuZW1pdE9wKG5vZGUsICdUVUNLJyk7XG4gICAgLy8gW3NpemUsIGluZGV4TnVtYmVyLCBidWZmZXJdXG4gICAgc2IuZW1pdE9wKG5vZGUsICdTSVpFJyk7XG4gICAgLy8gW2luZGV4TnVtYmVyLCBzaXplLCBpbmRleE51bWJlciwgYnVmZmVyXVxuICAgIHNiLmVtaXRPcChub2RlLCAnT1ZFUicpO1xuXG4gICAgc2IuZW1pdEhlbHBlcihcbiAgICAgIG5vZGUsXG4gICAgICBvcHRpb25zLFxuICAgICAgc2IuaGVscGVycy5pZih7XG4gICAgICAgIGNvbmRpdGlvbjogKCkgPT4ge1xuICAgICAgICAgIC8vIFtzaXplID4gaW5kZXhOdW1iZXIsIGluZGV4TnVtYmVyLCBidWZmZXJdXG4gICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdHVCcpO1xuICAgICAgICB9LFxuICAgICAgICB3aGVuVHJ1ZTogKCkgPT4ge1xuICAgICAgICAgIC8vIFtidWZmZXIsIGluZGV4TnVtYmVyLCBidWZmZXJdXG4gICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdPVkVSJyk7XG4gICAgICAgICAgLy8gW3NpemUsIGluZGV4TnVtYmVyLCBidWZmZXJdXG4gICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdTSVpFJyk7XG4gICAgICAgICAgLy8gW2luZGV4TnVtYmVyLCBzaXplLCBidWZmZXJdXG4gICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdTV0FQJyk7XG4gICAgICAgICAgLy8gW3NpemUgLSBpbmRleE51bWJlciwgYnVmZmVyXVxuICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnU1VCJyk7XG4gICAgICAgICAgLy8gW2J1ZmZlcl1cbiAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ1JJR0hUJyk7XG4gICAgICAgICAgLy8gWzEsIGJ1ZmZlcl1cbiAgICAgICAgICBzYi5lbWl0UHVzaEludChub2RlLCAxKTtcbiAgICAgICAgICAvLyBbYnVmZmVyXVxuICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnTEVGVCcpO1xuICAgICAgICAgIC8vIFt2YWxdXG4gICAgICAgICAgc2IuZW1pdEhlbHBlcihub2RlLCBvcHRpb25zLCBzYi5oZWxwZXJzLndyYXBOdW1iZXIpO1xuICAgICAgICB9LFxuICAgICAgICB3aGVuRmFsc2U6ICgpID0+IHtcbiAgICAgICAgICAvLyBbaW5kZXhOdW1iZXJdXG4gICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdEUk9QJyk7XG4gICAgICAgICAgLy8gW11cbiAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ0RST1AnKTtcbiAgICAgICAgICAvLyBbdmFsXVxuICAgICAgICAgIHNiLmVtaXRIZWxwZXIobm9kZSwgb3B0aW9ucywgc2IuaGVscGVycy53cmFwVW5kZWZpbmVkKTtcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cbn1cbiJdfQ==