UNPKG

@neo-one/smart-contract-compiler

Version:

NEO•ONE TypeScript smart contract compiler.

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