@neo-one/smart-contract-compiler
Version:
NEO•ONE TypeScript smart contract compiler.
34 lines (32 loc) • 6.01 kB
JavaScript
;
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==