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