UNPKG

@neo-one/smart-contract-compiler

Version:

NEO•ONE TypeScript smart contract compiler.

36 lines (34 loc) 6.69 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const constants_1 = require("../../constants"); const KeyStructuredStorageBaseHelper_1 = require("./KeyStructuredStorageBaseHelper"); class AtStructuredStorageHelper extends KeyStructuredStorageBaseHelper_1.KeyStructuredStorageBaseHelper { emit(sb, node, optionsIn) { const options = sb.pushValueOptions(optionsIn); sb.emitHelper(node, options, sb.helpers.unwrapKeyStructuredStorage({ type: this.keyType, knownType: this.knownKeyType, })); sb.emitOp(node, 'TUCK'); sb.emitOp(node, 'SWAP'); sb.emitHelper(node, options, sb.helpers.unwrapVal({ type: this.type })); sb.emitHelper(node, options, sb.helpers.arrReduce({ each: (innerOptions) => { sb.emitHelper(node, innerOptions, sb.helpers.handlePrefixArrayStructuredStorage); }, })); sb.emitOp(node, 'TUCK'); sb.emitPushInt(node, constants_1.StructuredStorageSlots.size); sb.emitOp(node, 'OVER'); sb.emitPushInt(node, constants_1.StructuredStorageSlots.size); sb.emitOp(node, 'PICKITEM'); sb.emitPushInt(node, 3); sb.emitOp(node, 'ROLL'); sb.emitOp(node, 'ARRAYSIZE'); sb.emitOp(node, 'ADD'); sb.emitOp(node, 'SETITEM'); sb.emitHelper(node, options, sb.helpers.wrapVal({ type: this.type })); } } exports.AtStructuredStorageHelper = AtStructuredStorageHelper; //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkF0U3RydWN0dXJlZFN0b3JhZ2VIZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFDQSwrQ0FBeUQ7QUFHekQscUZBQWtGO0FBSWxGLE1BQWEseUJBQTBCLFNBQVEsK0RBQThCO0lBQ3BFLElBQUksQ0FBQyxFQUFpQixFQUFFLElBQWEsRUFBRSxTQUF1QjtRQUNuRSxNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFHL0MsRUFBRSxDQUFDLFVBQVUsQ0FDWCxJQUFJLEVBQ0osT0FBTyxFQUNQLEVBQUUsQ0FBQyxPQUFPLENBQUMsMEJBQTBCLENBQUM7WUFDcEMsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ2xCLFNBQVMsRUFBRSxJQUFJLENBQUMsWUFBWTtTQUM3QixDQUFDLENBQ0gsQ0FBQztRQUVGLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRXhCLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRXhCLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRXhFLEVBQUUsQ0FBQyxVQUFVLENBQ1gsSUFBSSxFQUNKLE9BQU8sRUFDUCxFQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQztZQUNuQixJQUFJLEVBQUUsQ0FBQyxZQUFZLEVBQUUsRUFBRTtnQkFFckIsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsa0NBQWtDLENBQUMsQ0FBQztZQUNuRixDQUFDO1NBQ0YsQ0FBQyxDQUNILENBQUM7UUFFRixFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUV4QixFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxrQ0FBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVsRCxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUV4QixFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxrQ0FBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVsRCxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztRQUU1QixFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUV4QixFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUV4QixFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztRQUU3QixFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUV2QixFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztRQUUzQixFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN4RSxDQUFDO0NBQ0Y7QUFyREQsOERBcURDIiwiZmlsZSI6Im5lby1vbmUtc21hcnQtY29udHJhY3QtY29tcGlsZXIvc3JjL2NvbXBpbGUvaGVscGVyL3N0b3JhZ2UvQXRTdHJ1Y3R1cmVkU3RvcmFnZUhlbHBlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0cyBmcm9tICd0eXBlc2NyaXB0JztcbmltcG9ydCB7IFN0cnVjdHVyZWRTdG9yYWdlU2xvdHMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgU2NyaXB0QnVpbGRlciB9IGZyb20gJy4uLy4uL3NiJztcbmltcG9ydCB7IFZpc2l0T3B0aW9ucyB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IEtleVN0cnVjdHVyZWRTdG9yYWdlQmFzZUhlbHBlciB9IGZyb20gJy4vS2V5U3RydWN0dXJlZFN0b3JhZ2VCYXNlSGVscGVyJztcblxuLy8gSW5wdXQ6IFt2YWxLZXksIHZhbF1cbi8vIE91dHB1dDogW11cbmV4cG9ydCBjbGFzcyBBdFN0cnVjdHVyZWRTdG9yYWdlSGVscGVyIGV4dGVuZHMgS2V5U3RydWN0dXJlZFN0b3JhZ2VCYXNlSGVscGVyIHtcbiAgcHVibGljIGVtaXQoc2I6IFNjcmlwdEJ1aWxkZXIsIG5vZGU6IHRzLk5vZGUsIG9wdGlvbnNJbjogVmlzaXRPcHRpb25zKTogdm9pZCB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHNiLnB1c2hWYWx1ZU9wdGlvbnMob3B0aW9uc0luKTtcblxuICAgIC8vIFt2YWxLZXlBcnIsIHZhbF1cbiAgICBzYi5lbWl0SGVscGVyKFxuICAgICAgbm9kZSxcbiAgICAgIG9wdGlvbnMsXG4gICAgICBzYi5oZWxwZXJzLnVud3JhcEtleVN0cnVjdHVyZWRTdG9yYWdlKHtcbiAgICAgICAgdHlwZTogdGhpcy5rZXlUeXBlLFxuICAgICAgICBrbm93blR5cGU6IHRoaXMua25vd25LZXlUeXBlLFxuICAgICAgfSksXG4gICAgKTtcbiAgICAvLyBbdmFsS2V5QXJyLCB2YWwsIHZhbEtleUFycl1cbiAgICBzYi5lbWl0T3Aobm9kZSwgJ1RVQ0snKTtcbiAgICAvLyBbdmFsLCB2YWxLZXlBcnIsIHZhbEtleUFycl1cbiAgICBzYi5lbWl0T3Aobm9kZSwgJ1NXQVAnKTtcbiAgICAvLyBbc3RydWN0LCB2YWxLZXlBcnIsIHZhbEtleUFycl1cbiAgICBzYi5lbWl0SGVscGVyKG5vZGUsIG9wdGlvbnMsIHNiLmhlbHBlcnMudW53cmFwVmFsKHsgdHlwZTogdGhpcy50eXBlIH0pKTtcbiAgICAvLyBbc3RydWN0LCB2YWxLZXlBcnJdXG4gICAgc2IuZW1pdEhlbHBlcihcbiAgICAgIG5vZGUsXG4gICAgICBvcHRpb25zLFxuICAgICAgc2IuaGVscGVycy5hcnJSZWR1Y2Uoe1xuICAgICAgICBlYWNoOiAoaW5uZXJPcHRpb25zKSA9PiB7XG4gICAgICAgICAgLy8gW3N0cnVjdF1cbiAgICAgICAgICBzYi5lbWl0SGVscGVyKG5vZGUsIGlubmVyT3B0aW9ucywgc2IuaGVscGVycy5oYW5kbGVQcmVmaXhBcnJheVN0cnVjdHVyZWRTdG9yYWdlKTtcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgICk7XG4gICAgLy8gW3N0cnVjdCwgdmFsS2V5QXJyLCBzdHJ1Y3RdXG4gICAgc2IuZW1pdE9wKG5vZGUsICdUVUNLJyk7XG4gICAgLy8gW251bWJlciwgc3RydWN0LCB2YWxLZXlBcnIsIHN0cnVjdF1cbiAgICBzYi5lbWl0UHVzaEludChub2RlLCBTdHJ1Y3R1cmVkU3RvcmFnZVNsb3RzLnNpemUpO1xuICAgIC8vIFtzdHJ1Y3QsIG51bWJlciwgc3RydWN0LCB2YWxLZXlBcnIsIHN0cnVjdF1cbiAgICBzYi5lbWl0T3Aobm9kZSwgJ09WRVInKTtcbiAgICAvLyBbbnVtYmVyLCBzdHJ1Y3QsIG51bWJlciwgc3RydWN0LCB2YWxLZXlBcnIsIHN0cnVjdF1cbiAgICBzYi5lbWl0UHVzaEludChub2RlLCBTdHJ1Y3R1cmVkU3RvcmFnZVNsb3RzLnNpemUpO1xuICAgIC8vIFtzaXplLCBudW1iZXIsIHN0cnVjdCwgdmFsS2V5QXJyLCBzdHJ1Y3RdXG4gICAgc2IuZW1pdE9wKG5vZGUsICdQSUNLSVRFTScpO1xuICAgIC8vIFszLCBzaXplLCBudW1iZXIsIHN0cnVjdCwgdmFsS2V5QXJyLCBzdHJ1Y3RdXG4gICAgc2IuZW1pdFB1c2hJbnQobm9kZSwgMyk7XG4gICAgLy8gW3ZhbEtleUFyciwgc2l6ZSwgbnVtYmVyLCBzdHJ1Y3QsIHN0cnVjdF1cbiAgICBzYi5lbWl0T3Aobm9kZSwgJ1JPTEwnKTtcbiAgICAvLyBbYWRkU2l6ZSwgc2l6ZSwgbnVtYmVyLCBzdHJ1Y3QsIHN0cnVjdF1cbiAgICBzYi5lbWl0T3Aobm9kZSwgJ0FSUkFZU0laRScpO1xuICAgIC8vIFtzaXplLCBudW1iZXIsIHN0cnVjdCwgc3RydWN0XVxuICAgIHNiLmVtaXRPcChub2RlLCAnQUREJyk7XG4gICAgLy8gW3N0cnVjdF1cbiAgICBzYi5lbWl0T3Aobm9kZSwgJ1NFVElURU0nKTtcbiAgICAvLyBbdmFsXVxuICAgIHNiLmVtaXRIZWxwZXIobm9kZSwgb3B0aW9ucywgc2IuaGVscGVycy53cmFwVmFsKHsgdHlwZTogdGhpcy50eXBlIH0pKTtcbiAgfVxufVxuIl19