@neo-one/smart-contract-compiler
Version:
NEO•ONE TypeScript smart contract compiler.
28 lines (26 loc) • 1.05 kB
JavaScript
import { Helper } from '../Helper';
export class IterStorageHelper extends 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');
}
}
//# sourceMappingURL=IterStorageHelper.js.map