UNPKG

@neo-one/smart-contract-compiler

Version:

NEO•ONE TypeScript smart contract compiler.

34 lines (32 loc) 6.01 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const constants_1 = require("../../constants"); const Helper_1 = require("../Helper"); class SetArrayStorageHelper extends Helper_1.Helper { emit(sb, node, optionsIn) { const options = sb.pushValueOptions(optionsIn); sb.emitOp(node, 'ROT'); sb.emitOp(node, 'DUP'); sb.emitHelper(node, options, sb.helpers.getArrayStorageLength); sb.emitPushInt(node, 3); sb.emitOp(node, 'PICK'); sb.emitHelper(node, options, sb.helpers.if({ condition: () => { sb.emitOp(node, 'LTE'); }, whenTrue: () => { sb.emitOp(node, 'DUP'); sb.emitPushInt(node, 3); sb.emitOp(node, 'PICK'); sb.emitOp(node, 'INC'); sb.emitHelper(node, options, sb.helpers.putArrayStorageLength); }, })); sb.emitOp(node, 'ROT'); sb.emitHelper(node, options, sb.helpers.wrapNumber); sb.emitOp(node, 'ROT'); sb.emitHelper(node, options, sb.helpers.setStructuredStorage({ type: constants_1.Types.ArrayStorage, keyType: undefined, knownKeyType: constants_1.Types.Number })); } } exports.SetArrayStorageHelper = SetArrayStorageHelper; //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNldEFycmF5U3RvcmFnZUhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLCtDQUF3QztBQUd4QyxzQ0FBbUM7QUFJbkMsTUFBYSxxQkFBc0IsU0FBUSxlQUFNO0lBQ3hDLElBQUksQ0FBQyxFQUFpQixFQUFFLElBQWEsRUFBRSxTQUF1QjtRQUNuRSxNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFL0MsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFdkIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFdkIsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUUvRCxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUV4QixFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN4QixFQUFFLENBQUMsVUFBVSxDQUNYLElBQUksRUFDSixPQUFPLEVBQ1AsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWixTQUFTLEVBQUUsR0FBRyxFQUFFO2dCQUVkLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3pCLENBQUM7WUFDRCxRQUFRLEVBQUUsR0FBRyxFQUFFO2dCQUViLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUV2QixFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFFeEIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBRXhCLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUV2QixFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1lBQ2pFLENBQUM7U0FDRixDQUFDLENBQ0gsQ0FBQztRQUVGLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXZCLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRXBELEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXZCLEVBQUUsQ0FBQyxVQUFVLENBQ1gsSUFBSSxFQUNKLE9BQU8sRUFDUCxFQUFFLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLEVBQUUsSUFBSSxFQUFFLGlCQUFLLENBQUMsWUFBWSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLGlCQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FDOUcsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQWhERCxzREFnREMiLCJmaWxlIjoibmVvLW9uZS1zbWFydC1jb250cmFjdC1jb21waWxlci9zcmMvY29tcGlsZS9oZWxwZXIvc3RvcmFnZS9TZXRBcnJheVN0b3JhZ2VIZWxwZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5pbXBvcnQgeyBUeXBlcyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBTY3JpcHRCdWlsZGVyIH0gZnJvbSAnLi4vLi4vc2InO1xuaW1wb3J0IHsgVmlzaXRPcHRpb25zIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgSGVscGVyIH0gZnJvbSAnLi4vSGVscGVyJztcblxuLy8gSW5wdXQ6IFt2YWx1ZVZhbCwgbnVtYmVyLCB2YWxdXG4vLyBPdXRwdXQ6IFtdXG5leHBvcnQgY2xhc3MgU2V0QXJyYXlTdG9yYWdlSGVscGVyIGV4dGVuZHMgSGVscGVyIHtcbiAgcHVibGljIGVtaXQoc2I6IFNjcmlwdEJ1aWxkZXIsIG5vZGU6IHRzLk5vZGUsIG9wdGlvbnNJbjogVmlzaXRPcHRpb25zKTogdm9pZCB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHNiLnB1c2hWYWx1ZU9wdGlvbnMob3B0aW9uc0luKTtcbiAgICAvLyBbdmFsLCB2YWx1ZVZhbCwgbnVtYmVyXVxuICAgIHNiLmVtaXRPcChub2RlLCAnUk9UJyk7XG4gICAgLy8gW3ZhbCwgdmFsLCB2YWx1ZVZhbCwgbnVtYmVyXVxuICAgIHNiLmVtaXRPcChub2RlLCAnRFVQJyk7XG4gICAgLy8gW2xlbmd0aCwgdmFsLCB2YWx1ZVZhbCwgbnVtYmVyXVxuICAgIHNiLmVtaXRIZWxwZXIobm9kZSwgb3B0aW9ucywgc2IuaGVscGVycy5nZXRBcnJheVN0b3JhZ2VMZW5ndGgpO1xuICAgIC8vIFszLCBsZW5ndGgsIHZhbCwgdmFsdWVWYWwsIG51bWJlcl1cbiAgICBzYi5lbWl0UHVzaEludChub2RlLCAzKTtcbiAgICAvLyBbbnVtYmVyLCBsZW5ndGgsIHZhbCwgdmFsdWVWYWwsIG51bWJlcl1cbiAgICBzYi5lbWl0T3Aobm9kZSwgJ1BJQ0snKTtcbiAgICBzYi5lbWl0SGVscGVyKFxuICAgICAgbm9kZSxcbiAgICAgIG9wdGlvbnMsXG4gICAgICBzYi5oZWxwZXJzLmlmKHtcbiAgICAgICAgY29uZGl0aW9uOiAoKSA9PiB7XG4gICAgICAgICAgLy8gW2xlbmd0aCA8PSBudW1iZXIsIHZhbCwgdmFsdWVWYWwsIG51bWJlcl1cbiAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ0xURScpO1xuICAgICAgICB9LFxuICAgICAgICB3aGVuVHJ1ZTogKCkgPT4ge1xuICAgICAgICAgIC8vIFt2YWwsIHZhbCwgdmFsdWVWYWwsIG51bWJlcl1cbiAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ0RVUCcpO1xuICAgICAgICAgIC8vIFszLCB2YWwsIHZhbCwgdmFsdWVWYWwsIG51bWJlcl1cbiAgICAgICAgICBzYi5lbWl0UHVzaEludChub2RlLCAzKTtcbiAgICAgICAgICAvLyBbbnVtYmVyLCB2YWwsIHZhbCwgdmFsdWVWYWwsIG51bWJlcl1cbiAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ1BJQ0snKTtcbiAgICAgICAgICAvLyBbbnVtYmVyLCB2YWwsIHZhbCwgdmFsdWVWYWwsIG51bWJlcl1cbiAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ0lOQycpO1xuICAgICAgICAgIC8vIFt2YWwsIHZhbHVlVmFsLCBudW1iZXJdXG4gICAgICAgICAgc2IuZW1pdEhlbHBlcihub2RlLCBvcHRpb25zLCBzYi5oZWxwZXJzLnB1dEFycmF5U3RvcmFnZUxlbmd0aCk7XG4gICAgICAgIH0sXG4gICAgICB9KSxcbiAgICApO1xuICAgIC8vIFtudW1iZXIsIHZhbCwgdmFsdWVWYWxdXG4gICAgc2IuZW1pdE9wKG5vZGUsICdST1QnKTtcbiAgICAvLyBbbnVtYmVyVmFsLCB2YWwsIHZhbHVlVmFsXVxuICAgIHNiLmVtaXRIZWxwZXIobm9kZSwgb3B0aW9ucywgc2IuaGVscGVycy53cmFwTnVtYmVyKTtcbiAgICAvLyBbdmFsdWVWYWwsIG51bWJlclZhbCwgdmFsXVxuICAgIHNiLmVtaXRPcChub2RlLCAnUk9UJyk7XG4gICAgLy8gW11cbiAgICBzYi5lbWl0SGVscGVyKFxuICAgICAgbm9kZSxcbiAgICAgIG9wdGlvbnMsXG4gICAgICBzYi5oZWxwZXJzLnNldFN0cnVjdHVyZWRTdG9yYWdlKHsgdHlwZTogVHlwZXMuQXJyYXlTdG9yYWdlLCBrZXlUeXBlOiB1bmRlZmluZWQsIGtub3duS2V5VHlwZTogVHlwZXMuTnVtYmVyIH0pLFxuICAgICk7XG4gIH1cbn1cbiJdfQ==