UNPKG

@neo-one/smart-contract-compiler

Version:

NEO•ONE TypeScript smart contract compiler.

39 lines (37 loc) 7.24 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const constants_1 = require("../../constants"); const KeyStructuredStorageBaseHelper_1 = require("./KeyStructuredStorageBaseHelper"); class SetStructuredStorageHelper extends KeyStructuredStorageBaseHelper_1.KeyStructuredStorageBaseHelper { emit(sb, node, optionsIn) { const options = sb.pushValueOptions(optionsIn); sb.emitOp(node, 'SWAP'); sb.emitHelper(node, options, sb.helpers.unwrapKeyStructuredStorage({ type: this.keyType, knownType: this.knownKeyType, })); sb.emitOp(node, 'ROT'); 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, 'DUP'); sb.emitPushInt(node, constants_1.StructuredStorageSlots.prefix); sb.emitOp(node, 'PICKITEM'); sb.emitOp(node, 'SWAP'); sb.emitPushInt(node, constants_1.StructuredStorageSlots.prefixArray); sb.emitOp(node, 'PICKITEM'); sb.emitHelper(node, options, sb.helpers.wrapArray); sb.emitOp(node, 'ROT'); sb.emitOp(node, 'SWAP'); sb.emitPushInt(node, 2); sb.emitOp(node, 'PACK'); sb.emitSysCall(node, 'Neo.Runtime.Serialize'); sb.emitOp(node, 'SWAP'); sb.emitHelper(node, options, sb.helpers.putStorage); } } exports.SetStructuredStorageHelper = SetStructuredStorageHelper; //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNldFN0cnVjdHVyZWRTdG9yYWdlSGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQ0EsK0NBQXlEO0FBR3pELHFGQUFrRjtBQUlsRixNQUFhLDBCQUEyQixTQUFRLCtEQUE4QjtJQUNyRSxJQUFJLENBQUMsRUFBaUIsRUFBRSxJQUFhLEVBQUUsU0FBdUI7UUFDbkUsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRy9DLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRXhCLEVBQUUsQ0FBQyxVQUFVLENBQ1gsSUFBSSxFQUNKLE9BQU8sRUFDUCxFQUFFLENBQUMsT0FBTyxDQUFDLDBCQUEwQixDQUFDO1lBQ3BDLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTztZQUNsQixTQUFTLEVBQUUsSUFBSSxDQUFDLFlBQVk7U0FDN0IsQ0FBQyxDQUNILENBQUM7UUFFRixFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUV2QixFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUV4RSxFQUFFLENBQUMsVUFBVSxDQUNYLElBQUksRUFDSixPQUFPLEVBQ1AsRUFBRSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUM7WUFDbkIsSUFBSSxFQUFFLENBQUMsWUFBWSxFQUFFLEVBQUU7Z0JBRXJCLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLFlBQVksRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLGtDQUFrQyxDQUFDLENBQUM7WUFDbkYsQ0FBQztTQUNGLENBQUMsQ0FDSCxDQUFDO1FBRUYsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFdkIsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsa0NBQXNCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFcEQsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFNUIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFeEIsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsa0NBQXNCLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFekQsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFNUIsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFbkQsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFdkIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFeEIsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFeEIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFeEIsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsdUJBQXVCLENBQUMsQ0FBQztRQUU5QyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUV4QixFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN0RCxDQUFDO0NBQ0Y7QUEzREQsZ0VBMkRDIiwiZmlsZSI6Im5lby1vbmUtc21hcnQtY29udHJhY3QtY29tcGlsZXIvc3JjL2NvbXBpbGUvaGVscGVyL3N0b3JhZ2UvU2V0U3RydWN0dXJlZFN0b3JhZ2VIZWxwZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5pbXBvcnQgeyBTdHJ1Y3R1cmVkU3RvcmFnZVNsb3RzIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IFNjcmlwdEJ1aWxkZXIgfSBmcm9tICcuLi8uLi9zYic7XG5pbXBvcnQgeyBWaXNpdE9wdGlvbnMgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBLZXlTdHJ1Y3R1cmVkU3RvcmFnZUJhc2VIZWxwZXIgfSBmcm9tICcuL0tleVN0cnVjdHVyZWRTdG9yYWdlQmFzZUhlbHBlcic7XG5cbi8vIElucHV0OiBbdmFsVmFsdWUsIHZhbEtleSwgdmFsXVxuLy8gT3V0cHV0OiBbXVxuZXhwb3J0IGNsYXNzIFNldFN0cnVjdHVyZWRTdG9yYWdlSGVscGVyIGV4dGVuZHMgS2V5U3RydWN0dXJlZFN0b3JhZ2VCYXNlSGVscGVyIHtcbiAgcHVibGljIGVtaXQoc2I6IFNjcmlwdEJ1aWxkZXIsIG5vZGU6IHRzLk5vZGUsIG9wdGlvbnNJbjogVmlzaXRPcHRpb25zKTogdm9pZCB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHNiLnB1c2hWYWx1ZU9wdGlvbnMob3B0aW9uc0luKTtcblxuICAgIC8vIFt2YWxLZXksIHZhbFZhbHVlLCB2YWxdXG4gICAgc2IuZW1pdE9wKG5vZGUsICdTV0FQJyk7XG4gICAgLy8gW3ZhbEtleUFyciwgdmFsVmFsdWUsIHZhbF1cbiAgICBzYi5lbWl0SGVscGVyKFxuICAgICAgbm9kZSxcbiAgICAgIG9wdGlvbnMsXG4gICAgICBzYi5oZWxwZXJzLnVud3JhcEtleVN0cnVjdHVyZWRTdG9yYWdlKHtcbiAgICAgICAgdHlwZTogdGhpcy5rZXlUeXBlLFxuICAgICAgICBrbm93blR5cGU6IHRoaXMua25vd25LZXlUeXBlLFxuICAgICAgfSksXG4gICAgKTtcbiAgICAvLyBbdmFsLCB2YWxLZXlBcnIsIHZhbFZhbHVlXVxuICAgIHNiLmVtaXRPcChub2RlLCAnUk9UJyk7XG4gICAgLy8gW3N0cnVjdCwgdmFsS2V5QXJyLCB2YWxWYWx1ZV1cbiAgICBzYi5lbWl0SGVscGVyKG5vZGUsIG9wdGlvbnMsIHNiLmhlbHBlcnMudW53cmFwVmFsKHsgdHlwZTogdGhpcy50eXBlIH0pKTtcbiAgICAvLyBbc3RydWN0LCB2YWxWYWx1ZV1cbiAgICBzYi5lbWl0SGVscGVyKFxuICAgICAgbm9kZSxcbiAgICAgIG9wdGlvbnMsXG4gICAgICBzYi5oZWxwZXJzLmFyclJlZHVjZSh7XG4gICAgICAgIGVhY2g6IChpbm5lck9wdGlvbnMpID0+IHtcbiAgICAgICAgICAvLyBbc3RydWN0XVxuICAgICAgICAgIHNiLmVtaXRIZWxwZXIobm9kZSwgaW5uZXJPcHRpb25zLCBzYi5oZWxwZXJzLmhhbmRsZVByZWZpeEFycmF5U3RydWN0dXJlZFN0b3JhZ2UpO1xuICAgICAgICB9LFxuICAgICAgfSksXG4gICAgKTtcbiAgICAvLyBbc3RydWN0LCBzdHJ1Y3QsIHZhbFZhbHVlXVxuICAgIHNiLmVtaXRPcChub2RlLCAnRFVQJyk7XG4gICAgLy8gW251bWJlciwgc3RydWN0LCBzdHJ1Y3QsIHZhbFZhbHVlXVxuICAgIHNiLmVtaXRQdXNoSW50KG5vZGUsIFN0cnVjdHVyZWRTdG9yYWdlU2xvdHMucHJlZml4KTtcbiAgICAvLyBba2V5QnVmZmVyLCBzdHJ1Y3QsIHZhbFZhbHVlXVxuICAgIHNiLmVtaXRPcChub2RlLCAnUElDS0lURU0nKTtcbiAgICAvLyBbc3RydWN0LCBrZXlCdWZmZXIsIHZhbFZhbHVlXVxuICAgIHNiLmVtaXRPcChub2RlLCAnU1dBUCcpO1xuICAgIC8vIFtudW1iZXIsIHN0cnVjdCwga2V5QnVmZmVyLCB2YWxWYWx1ZV1cbiAgICBzYi5lbWl0UHVzaEludChub2RlLCBTdHJ1Y3R1cmVkU3RvcmFnZVNsb3RzLnByZWZpeEFycmF5KTtcbiAgICAvLyBba2V5QXJyYXksIGtleUJ1ZmZlciwgdmFsVmFsdWVdXG4gICAgc2IuZW1pdE9wKG5vZGUsICdQSUNLSVRFTScpO1xuICAgIC8vIFt2YWxLZXksIGtleUJ1ZmZlciwgdmFsVmFsdWVdXG4gICAgc2IuZW1pdEhlbHBlcihub2RlLCBvcHRpb25zLCBzYi5oZWxwZXJzLndyYXBBcnJheSk7XG4gICAgLy8gW3ZhbFZhbHVlLCB2YWxLZXksIGtleUJ1ZmZlcl1cbiAgICBzYi5lbWl0T3Aobm9kZSwgJ1JPVCcpO1xuICAgIC8vIFt2YWxLZXksIHZhbFZhbHVlLCBrZXlCdWZmZXJdXG4gICAgc2IuZW1pdE9wKG5vZGUsICdTV0FQJyk7XG4gICAgLy8gWzIsIHZhbEtleSwgdmFsVmFsdWUsIGtleUJ1ZmZlcl1cbiAgICBzYi5lbWl0UHVzaEludChub2RlLCAyKTtcbiAgICAvLyBbYXJyLCBrZXlCdWZmZXJdXG4gICAgc2IuZW1pdE9wKG5vZGUsICdQQUNLJyk7XG4gICAgLy8gW2J1ZmZlclZhbHVlLCBrZXlCdWZmZXJdXG4gICAgc2IuZW1pdFN5c0NhbGwobm9kZSwgJ05lby5SdW50aW1lLlNlcmlhbGl6ZScpO1xuICAgIC8vIFtrZXlCdWZmZXIsIGJ1ZmZlclZhbHVlXVxuICAgIHNiLmVtaXRPcChub2RlLCAnU1dBUCcpO1xuICAgIC8vIFtdXG4gICAgc2IuZW1pdEhlbHBlcihub2RlLCBvcHRpb25zLCBzYi5oZWxwZXJzLnB1dFN0b3JhZ2UpO1xuICB9XG59XG4iXX0=