UNPKG

@neo-one/smart-contract-compiler

Version:

NEO•ONE TypeScript smart contract compiler.

28 lines (26 loc) 1.05 kB
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