UNPKG

@neo-one/smart-contract-compiler

Version:

NEO•ONE TypeScript smart contract compiler.

29 lines (27 loc) 5.29 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const StructuredStorageBaseHelper_1 = require("./StructuredStorageBaseHelper"); class ForEachKeyFuncStructuredStorageHelper extends StructuredStorageBaseHelper_1.StructuredStorageBaseHelper { emit(sb, node, optionsIn) { const options = sb.pushValueOptions(optionsIn); const size = sb.scope.addUnique(); sb.emitOp(node, 'OVER'); sb.emitHelper(node, options, sb.helpers.getStructuredStorageSize({ type: this.type })); sb.scope.set(sb, node, options, size); sb.emitHelper(node, optionsIn, sb.helpers.forEachFuncStructuredStorageBase({ type: this.type, handleNext: (innerOptions) => { sb.scope.get(sb, node, innerOptions, size); sb.emitHelper(node, innerOptions, sb.helpers.handleValueStructuredStorage); sb.emitOp(node, 'SWAP'); sb.emitOp(node, 'ROT'); sb.emitOp(node, 'DROP'); sb.emitPushInt(node, 1); sb.emitOp(node, 'PACK'); sb.emitOp(node, 'SWAP'); }, })); } } exports.ForEachKeyFuncStructuredStorageHelper = ForEachKeyFuncStructuredStorageHelper; //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkZvckVhY2hLZXlGdW5jU3RydWN0dXJlZFN0b3JhZ2VIZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFHQSwrRUFBNEU7QUFJNUUsTUFBYSxxQ0FBc0MsU0FBUSx5REFBMkI7SUFDN0UsSUFBSSxDQUFDLEVBQWlCLEVBQUUsSUFBYSxFQUFFLFNBQXVCO1FBQ25FLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUUvQyxNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBRWxDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRXhCLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLHdCQUF3QixDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFdkYsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdEMsRUFBRSxDQUFDLFVBQVUsQ0FDWCxJQUFJLEVBQ0osU0FBUyxFQUNULEVBQUUsQ0FBQyxPQUFPLENBQUMsZ0NBQWdDLENBQUM7WUFDMUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsVUFBVSxFQUFFLENBQUMsWUFBWSxFQUFFLEVBQUU7Z0JBRTNCLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUUzQyxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO2dCQUUzRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFFeEIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBRXZCLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUV4QixFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFFeEIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBRXhCLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQzFCLENBQUM7U0FDRixDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQXJDRCxzRkFxQ0MiLCJmaWxlIjoibmVvLW9uZS1zbWFydC1jb250cmFjdC1jb21waWxlci9zcmMvY29tcGlsZS9oZWxwZXIvc3RvcmFnZS9Gb3JFYWNoS2V5RnVuY1N0cnVjdHVyZWRTdG9yYWdlSGVscGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuaW1wb3J0IHsgU2NyaXB0QnVpbGRlciB9IGZyb20gJy4uLy4uL3NiJztcbmltcG9ydCB7IFZpc2l0T3B0aW9ucyB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IFN0cnVjdHVyZWRTdG9yYWdlQmFzZUhlbHBlciB9IGZyb20gJy4vU3RydWN0dXJlZFN0b3JhZ2VCYXNlSGVscGVyJztcblxuLy8gSW5wdXQ6IFtvYmplY3RWYWwsIHZhbF1cbi8vIE91dHB1dDogW3ZhbF1cbmV4cG9ydCBjbGFzcyBGb3JFYWNoS2V5RnVuY1N0cnVjdHVyZWRTdG9yYWdlSGVscGVyIGV4dGVuZHMgU3RydWN0dXJlZFN0b3JhZ2VCYXNlSGVscGVyIHtcbiAgcHVibGljIGVtaXQoc2I6IFNjcmlwdEJ1aWxkZXIsIG5vZGU6IHRzLk5vZGUsIG9wdGlvbnNJbjogVmlzaXRPcHRpb25zKTogdm9pZCB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHNiLnB1c2hWYWx1ZU9wdGlvbnMob3B0aW9uc0luKTtcblxuICAgIGNvbnN0IHNpemUgPSBzYi5zY29wZS5hZGRVbmlxdWUoKTtcbiAgICAvLyBbdmFsLCBvYmplY3RWYWwsIHZhbF1cbiAgICBzYi5lbWl0T3Aobm9kZSwgJ09WRVInKTtcbiAgICAvLyBbc2l6ZSwgb2JqZWN0VmFsLCB2YWxdXG4gICAgc2IuZW1pdEhlbHBlcihub2RlLCBvcHRpb25zLCBzYi5oZWxwZXJzLmdldFN0cnVjdHVyZWRTdG9yYWdlU2l6ZSh7IHR5cGU6IHRoaXMudHlwZSB9KSk7XG4gICAgLy8gW29iamVjdFZhbCwgdmFsXVxuICAgIHNiLnNjb3BlLnNldChzYiwgbm9kZSwgb3B0aW9ucywgc2l6ZSk7XG4gICAgc2IuZW1pdEhlbHBlcihcbiAgICAgIG5vZGUsXG4gICAgICBvcHRpb25zSW4sXG4gICAgICBzYi5oZWxwZXJzLmZvckVhY2hGdW5jU3RydWN0dXJlZFN0b3JhZ2VCYXNlKHtcbiAgICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgICBoYW5kbGVOZXh0OiAoaW5uZXJPcHRpb25zKSA9PiB7XG4gICAgICAgICAgLy8gW3NpemUsIGl0ZXJhdG9yXVxuICAgICAgICAgIHNiLnNjb3BlLmdldChzYiwgbm9kZSwgaW5uZXJPcHRpb25zLCBzaXplKTtcbiAgICAgICAgICAvLyBbYm9vbGVhbiwga2V5VmFsLCB2YWxWYWxdXG4gICAgICAgICAgc2IuZW1pdEhlbHBlcihub2RlLCBpbm5lck9wdGlvbnMsIHNiLmhlbHBlcnMuaGFuZGxlVmFsdWVTdHJ1Y3R1cmVkU3RvcmFnZSk7XG4gICAgICAgICAgLy8gW2tleVZhbCwgYm9vbGVhbiwgdmFsVmFsXVxuICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnU1dBUCcpO1xuICAgICAgICAgIC8vIFt2YWxWYWwsIGtleVZhbCwgYm9vbGVhbl1cbiAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ1JPVCcpO1xuICAgICAgICAgIC8vIFtrZXlWYWwsIGJvb2xlYW5dXG4gICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdEUk9QJyk7XG4gICAgICAgICAgLy8gWzEsIGtleVZhbCwgYm9vbGVhbl1cbiAgICAgICAgICBzYi5lbWl0UHVzaEludChub2RlLCAxKTtcbiAgICAgICAgICAvLyBbYXJnc2FyciwgYm9vbGVhbl1cbiAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ1BBQ0snKTtcbiAgICAgICAgICAvLyBbYm9vbGVhbiwgYXJnc2Fycl1cbiAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ1NXQVAnKTtcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cbn1cbiJdfQ==