UNPKG

@neo-one/smart-contract-compiler

Version:

NEO•ONE TypeScript smart contract compiler.

34 lines (32 loc) 4.61 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const Helper_1 = require("../../Helper"); class GetArrayIndexHelper 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.unwrapArray); sb.emitOp(node, 'TUCK'); sb.emitOp(node, 'ARRAYSIZE'); sb.emitOp(node, 'OVER'); sb.emitHelper(node, options, sb.helpers.if({ condition: () => { sb.emitOp(node, 'GT'); }, whenTrue: () => { sb.emitOp(node, 'PICKITEM'); }, whenFalse: () => { sb.emitOp(node, 'DROP'); sb.emitOp(node, 'DROP'); sb.emitHelper(node, options, sb.helpers.wrapUndefined); }, })); } } exports.GetArrayIndexHelper = GetArrayIndexHelper; //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkdldEFycmF5SW5kZXhIZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFHQSx5Q0FBc0M7QUFJdEMsTUFBYSxtQkFBb0IsU0FBUSxlQUFNO0lBQ3RDLElBQUksQ0FBQyxFQUFpQixFQUFFLElBQWEsRUFBRSxPQUFxQjtRQUNqRSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRTtZQUN0QixFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztZQUN4QixFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztZQUV4QixPQUFPO1NBQ1I7UUFHRCxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUV4QixFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUVyRCxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUV4QixFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztRQUU3QixFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUV4QixFQUFFLENBQUMsVUFBVSxDQUNYLElBQUksRUFDSixPQUFPLEVBQ1AsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWixTQUFTLEVBQUUsR0FBRyxFQUFFO2dCQUVkLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3hCLENBQUM7WUFDRCxRQUFRLEVBQUUsR0FBRyxFQUFFO2dCQUViLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQzlCLENBQUM7WUFDRCxTQUFTLEVBQUUsR0FBRyxFQUFFO2dCQUVkLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUV4QixFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFFeEIsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDekQsQ0FBQztTQUNGLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBM0NELGtEQTJDQyIsImZpbGUiOiJuZW8tb25lLXNtYXJ0LWNvbnRyYWN0LWNvbXBpbGVyL3NyYy9jb21waWxlL2hlbHBlci90eXBlcy9hcnJheS9HZXRBcnJheUluZGV4SGVscGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuaW1wb3J0IHsgU2NyaXB0QnVpbGRlciB9IGZyb20gJy4uLy4uLy4uL3NiJztcbmltcG9ydCB7IFZpc2l0T3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IEhlbHBlciB9IGZyb20gJy4uLy4uL0hlbHBlcic7XG5cbi8vIElucHV0OiBbaW5kZXhOdW1iZXIsIGFycmF5VmFsXVxuLy8gT3V0cHV0OiBbdmFsXVxuZXhwb3J0IGNsYXNzIEdldEFycmF5SW5kZXhIZWxwZXIgZXh0ZW5kcyBIZWxwZXIge1xuICBwdWJsaWMgZW1pdChzYjogU2NyaXB0QnVpbGRlciwgbm9kZTogdHMuTm9kZSwgb3B0aW9uczogVmlzaXRPcHRpb25zKTogdm9pZCB7XG4gICAgaWYgKCFvcHRpb25zLnB1c2hWYWx1ZSkge1xuICAgICAgc2IuZW1pdE9wKG5vZGUsICdEUk9QJyk7XG4gICAgICBzYi5lbWl0T3Aobm9kZSwgJ0RST1AnKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFthcnJheVZhbCwgaW5kZXhOdW1iZXJdXG4gICAgc2IuZW1pdE9wKG5vZGUsICdTV0FQJyk7XG4gICAgLy8gW2FyciwgaW5kZXhOdW1iZXJdXG4gICAgc2IuZW1pdEhlbHBlcihub2RlLCBvcHRpb25zLCBzYi5oZWxwZXJzLnVud3JhcEFycmF5KTtcbiAgICAvLyBbYXJyLCBpbmRleE51bWJlciwgYXJyXVxuICAgIHNiLmVtaXRPcChub2RlLCAnVFVDSycpO1xuICAgIC8vIFtzaXplLCBpbmRleE51bWJlciwgYXJyXVxuICAgIHNiLmVtaXRPcChub2RlLCAnQVJSQVlTSVpFJyk7XG4gICAgLy8gW2luZGV4TnVtYmVyLCBzaXplLCBpbmRleE51bWJlciwgYXJyXVxuICAgIHNiLmVtaXRPcChub2RlLCAnT1ZFUicpO1xuXG4gICAgc2IuZW1pdEhlbHBlcihcbiAgICAgIG5vZGUsXG4gICAgICBvcHRpb25zLFxuICAgICAgc2IuaGVscGVycy5pZih7XG4gICAgICAgIGNvbmRpdGlvbjogKCkgPT4ge1xuICAgICAgICAgIC8vIFtzaXplID4gaW5kZXhOdW1iZXIsIGluZGV4TnVtYmVyLCBhcnJdXG4gICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdHVCcpO1xuICAgICAgICB9LFxuICAgICAgICB3aGVuVHJ1ZTogKCkgPT4ge1xuICAgICAgICAgIC8vIFt2YWxdXG4gICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdQSUNLSVRFTScpO1xuICAgICAgICB9LFxuICAgICAgICB3aGVuRmFsc2U6ICgpID0+IHtcbiAgICAgICAgICAvLyBbaW5kZXhOdW1iZXJdXG4gICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdEUk9QJyk7XG4gICAgICAgICAgLy8gW11cbiAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ0RST1AnKTtcbiAgICAgICAgICAvLyBbdmFsXVxuICAgICAgICAgIHNiLmVtaXRIZWxwZXIobm9kZSwgb3B0aW9ucywgc2IuaGVscGVycy53cmFwVW5kZWZpbmVkKTtcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cbn1cbiJdfQ==