@neo-one/smart-contract-compiler
Version:
NEO•ONE TypeScript smart contract compiler.
31 lines (29 loc) • 5.28 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const Helper_1 = require("../Helper");
class IterStorageHelper extends Helper_1.Helper {
emit(sb, node, optionsIn) {
const options = sb.pushValueOptions(optionsIn);
sb.emitOp(node, 'DUP');
sb.emitSysCall(node, 'Neo.Storage.GetReadOnlyContext');
sb.emitSysCall(node, 'Neo.Storage.Find');
sb.emitOp(node, 'SWAP');
const key = sb.scope.addUnique();
sb.scope.set(sb, node, options, key);
sb.emitHelper(node, options, sb.helpers.cacheStorage);
sb.emitHelper(node, options, sb.helpers.mapFilter({
map: (innerOptions) => {
sb.emitOp(node, 'NIP');
sb.scope.get(sb, node, innerOptions, key);
sb.emitOp(node, 'TUCK');
sb.emitOp(node, 'SIZE');
sb.emitOp(node, 'LEFT');
sb.emitOp(node, 'EQUAL');
},
}));
sb.emitSysCall(node, 'Neo.Iterator.Create');
sb.emitSysCall(node, 'Neo.Iterator.Concat');
}
}
exports.IterStorageHelper = IterStorageHelper;
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkl0ZXJTdG9yYWdlSGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBR0Esc0NBQW1DO0FBSW5DLE1BQWEsaUJBQWtCLFNBQVEsZUFBTTtJQUNwQyxJQUFJLENBQUMsRUFBaUIsRUFBRSxJQUFhLEVBQUUsU0FBdUI7UUFDbkUsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRy9DLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXZCLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLGdDQUFnQyxDQUFDLENBQUM7UUFFdkQsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztRQUV6QyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN4QixNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBRWpDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBRXJDLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRXRELEVBQUUsQ0FBQyxVQUFVLENBQ1gsSUFBSSxFQUNKLE9BQU8sRUFDUCxFQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQztZQUNuQixHQUFHLEVBQUUsQ0FBQyxZQUFZLEVBQUUsRUFBRTtnQkFFcEIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBRXZCLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUUxQyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFFeEIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBRXhCLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUV4QixFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztZQUMzQixDQUFDO1NBQ0YsQ0FBQyxDQUNILENBQUM7UUFFRixFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO1FBRTVDLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLHFCQUFxQixDQUFDLENBQUM7SUFDOUMsQ0FBQztDQUNGO0FBM0NELDhDQTJDQyIsImZpbGUiOiJuZW8tb25lLXNtYXJ0LWNvbnRyYWN0LWNvbXBpbGVyL3NyYy9jb21waWxlL2hlbHBlci9zdG9yYWdlL0l0ZXJTdG9yYWdlSGVscGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuaW1wb3J0IHsgU2NyaXB0QnVpbGRlciB9IGZyb20gJy4uLy4uL3NiJztcbmltcG9ydCB7IFZpc2l0T3B0aW9ucyB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IEhlbHBlciB9IGZyb20gJy4uL0hlbHBlcic7XG5cbi8vIElucHV0OiBba2V5QnVmZmVyXVxuLy8gT3V0cHV0OiBbaXRlcmF0b3JdXG5leHBvcnQgY2xhc3MgSXRlclN0b3JhZ2VIZWxwZXIgZXh0ZW5kcyBIZWxwZXIge1xuICBwdWJsaWMgZW1pdChzYjogU2NyaXB0QnVpbGRlciwgbm9kZTogdHMuTm9kZSwgb3B0aW9uc0luOiBWaXNpdE9wdGlvbnMpOiB2b2lkIHtcbiAgICBjb25zdCBvcHRpb25zID0gc2IucHVzaFZhbHVlT3B0aW9ucyhvcHRpb25zSW4pO1xuXG4gICAgLy8gW2tleUJ1ZmZlciwga2V5QnVmZmVyXVxuICAgIHNiLmVtaXRPcChub2RlLCAnRFVQJyk7XG4gICAgLy8gW2NvbnRleHQsIGtleUJ1ZmZlciwga2V5QnVmZmVyXVxuICAgIHNiLmVtaXRTeXNDYWxsKG5vZGUsICdOZW8uU3RvcmFnZS5HZXRSZWFkT25seUNvbnRleHQnKTtcbiAgICAvLyBbaXRlcmF0b3IsIGtleUJ1ZmZlcl1cbiAgICBzYi5lbWl0U3lzQ2FsbChub2RlLCAnTmVvLlN0b3JhZ2UuRmluZCcpO1xuICAgIC8vIFtrZXlCdWZmZXIsIGl0ZXJhdG9yXVxuICAgIHNiLmVtaXRPcChub2RlLCAnU1dBUCcpO1xuICAgIGNvbnN0IGtleSA9IHNiLnNjb3BlLmFkZFVuaXF1ZSgpO1xuICAgIC8vIFtpdGVyYXRvcl1cbiAgICBzYi5zY29wZS5zZXQoc2IsIG5vZGUsIG9wdGlvbnMsIGtleSk7XG4gICAgLy8gW21hcCwgaXRlcmF0b3JdXG4gICAgc2IuZW1pdEhlbHBlcihub2RlLCBvcHRpb25zLCBzYi5oZWxwZXJzLmNhY2hlU3RvcmFnZSk7XG4gICAgLy8gW21hcCwgaXRlcmF0b3JdXG4gICAgc2IuZW1pdEhlbHBlcihcbiAgICAgIG5vZGUsXG4gICAgICBvcHRpb25zLFxuICAgICAgc2IuaGVscGVycy5tYXBGaWx0ZXIoe1xuICAgICAgICBtYXA6IChpbm5lck9wdGlvbnMpID0+IHtcbiAgICAgICAgICAvLyBba2V5QnVmZmVyXVxuICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnTklQJyk7XG4gICAgICAgICAgLy8gW2V4cGVjdGVkS2V5QnVmZmVyLCBrZXlCdWZmZXJdXG4gICAgICAgICAgc2Iuc2NvcGUuZ2V0KHNiLCBub2RlLCBpbm5lck9wdGlvbnMsIGtleSk7XG4gICAgICAgICAgLy8gW2V4cGVjdGVkS2V5QnVmZmVyLCBrZXlCdWZmZXIsIGV4cGVjdGVkS2V5QnVmZmVyXVxuICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnVFVDSycpO1xuICAgICAgICAgIC8vIFtsZW5ndGgsIGtleUJ1ZmZlciwgZXhwZWN0ZWRLZXlCdWZmZXJdXG4gICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdTSVpFJyk7XG4gICAgICAgICAgLy8gW2tleUJ1ZmZlciwgZXhwZWN0ZWRLZXlCdWZmZXJdXG4gICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdMRUZUJyk7XG4gICAgICAgICAgLy8gW2Jvb2xlYW5dXG4gICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdFUVVBTCcpO1xuICAgICAgICB9LFxuICAgICAgfSksXG4gICAgKTtcbiAgICAvLyBbaXRlcmF0b3IsIGl0ZXJhdG9yXVxuICAgIHNiLmVtaXRTeXNDYWxsKG5vZGUsICdOZW8uSXRlcmF0b3IuQ3JlYXRlJyk7XG4gICAgLy8gW2l0ZXJhdG9yXVxuICAgIHNiLmVtaXRTeXNDYWxsKG5vZGUsICdOZW8uSXRlcmF0b3IuQ29uY2F0Jyk7XG4gIH1cbn1cbiJdfQ==