@neo-one/smart-contract-compiler
Version:
NEO•ONE TypeScript smart contract compiler.
46 lines (44 loc) • 8.13 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const constants_1 = require("../../constants");
const Helper_1 = require("../Helper");
class IterableIteratorForEachHelper extends Helper_1.Helper {
constructor(options) {
super();
this.each = options.each;
}
emit(sb, node, optionsIn) {
const options = sb.pushValueOptions(optionsIn);
sb.emitHelper(node, options, sb.helpers.unwrapIterableIterator);
sb.emitPushInt(node, constants_1.IterableIteratorSlots.next);
sb.emitOp(node, 'PICKITEM');
sb.emitPushInt(node, 0);
sb.emitOp(node, 'NEWARRAY');
sb.emitHelper(node, options, sb.helpers.forLoop({
condition: () => {
sb.emitOp(node, 'OVER');
sb.emitHelper(node, options, sb.helpers.call);
sb.emitHelper(node, options, sb.helpers.unwrapIteratorResult);
sb.emitOp(node, 'DUP');
sb.emitPushInt(node, constants_1.IteratorResultSlots.done);
sb.emitOp(node, 'PICKITEM');
sb.emitHelper(node, options, sb.helpers.unwrapBoolean);
sb.emitOp(node, 'NOT');
},
each: (innerOptions) => {
sb.emitPushInt(node, constants_1.IteratorResultSlots.value);
sb.emitOp(node, 'PICKITEM');
sb.emitPushInt(node, 0);
sb.emitOp(node, 'NEWARRAY');
sb.emitOp(node, 'SWAP');
this.each(sb.noPushValueOptions(innerOptions));
},
cleanup: () => {
sb.emitOp(node, 'DROP');
sb.emitOp(node, 'DROP');
},
}));
}
}
exports.IterableIteratorForEachHelper = IterableIteratorForEachHelper;
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkl0ZXJhYmxlSXRlcmF0b3JGb3JFYWNoSGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQ0EsK0NBQTZFO0FBRzdFLHNDQUFtQztBQVFuQyxNQUFhLDZCQUE4QixTQUFRLGVBQU07SUFHdkQsWUFBbUIsT0FBNkM7UUFDOUQsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7SUFDM0IsQ0FBQztJQUVNLElBQUksQ0FBQyxFQUFpQixFQUFFLElBQWEsRUFBRSxTQUF1QjtRQUNuRSxNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFHL0MsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUVoRSxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxpQ0FBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVqRCxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztRQUU1QixFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUV4QixFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztRQUM1QixFQUFFLENBQUMsVUFBVSxDQUNYLElBQUksRUFDSixPQUFPLEVBQ1AsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7WUFDakIsU0FBUyxFQUFFLEdBQUcsRUFBRTtnQkFFZCxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFFeEIsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBRTlDLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUM7Z0JBRTlELEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUV2QixFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSwrQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFFL0MsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7Z0JBRTVCLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUV2RCxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN6QixDQUFDO1lBQ0QsSUFBSSxFQUFFLENBQUMsWUFBWSxFQUFFLEVBQUU7Z0JBRXJCLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLCtCQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUVoRCxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztnQkFFNUIsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBRXhCLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO2dCQUU1QixFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFFeEIsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsa0JBQWtCLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztZQUNqRCxDQUFDO1lBQ0QsT0FBTyxFQUFFLEdBQUcsRUFBRTtnQkFFWixFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFFeEIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDMUIsQ0FBQztTQUNGLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBbEVELHNFQWtFQyIsImZpbGUiOiJuZW8tb25lLXNtYXJ0LWNvbnRyYWN0LWNvbXBpbGVyL3NyYy9jb21waWxlL2hlbHBlci9pdGVyYWJsZUl0ZXJhdG9yL0l0ZXJhYmxlSXRlcmF0b3JGb3JFYWNoSGVscGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuaW1wb3J0IHsgSXRlcmFibGVJdGVyYXRvclNsb3RzLCBJdGVyYXRvclJlc3VsdFNsb3RzIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IFNjcmlwdEJ1aWxkZXIgfSBmcm9tICcuLi8uLi9zYic7XG5pbXBvcnQgeyBWaXNpdE9wdGlvbnMgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBIZWxwZXIgfSBmcm9tICcuLi9IZWxwZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIEl0ZXJhYmxlSXRlcmF0b3JGb3JFYWNoSGVscGVyT3B0aW9ucyB7XG4gIHJlYWRvbmx5IGVhY2g6IChvcHRpb25zOiBWaXNpdE9wdGlvbnMpID0+IHZvaWQ7XG59XG5cbi8vIElucHV0OiBbdmFsXVxuLy8gT3V0cHV0OiBbXVxuZXhwb3J0IGNsYXNzIEl0ZXJhYmxlSXRlcmF0b3JGb3JFYWNoSGVscGVyIGV4dGVuZHMgSGVscGVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBlYWNoOiAob3B0aW9uczogVmlzaXRPcHRpb25zKSA9PiB2b2lkO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihvcHRpb25zOiBJdGVyYWJsZUl0ZXJhdG9yRm9yRWFjaEhlbHBlck9wdGlvbnMpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuZWFjaCA9IG9wdGlvbnMuZWFjaDtcbiAgfVxuXG4gIHB1YmxpYyBlbWl0KHNiOiBTY3JpcHRCdWlsZGVyLCBub2RlOiB0cy5Ob2RlLCBvcHRpb25zSW46IFZpc2l0T3B0aW9ucyk6IHZvaWQge1xuICAgIGNvbnN0IG9wdGlvbnMgPSBzYi5wdXNoVmFsdWVPcHRpb25zKG9wdGlvbnNJbik7XG5cbiAgICAvLyBbbWFwXVxuICAgIHNiLmVtaXRIZWxwZXIobm9kZSwgb3B0aW9ucywgc2IuaGVscGVycy51bndyYXBJdGVyYWJsZUl0ZXJhdG9yKTtcbiAgICAvLyBbbnVtYmVyLCBtYXBdXG4gICAgc2IuZW1pdFB1c2hJbnQobm9kZSwgSXRlcmFibGVJdGVyYXRvclNsb3RzLm5leHQpO1xuICAgIC8vIFtjYWxsYWJsZV1cbiAgICBzYi5lbWl0T3Aobm9kZSwgJ1BJQ0tJVEVNJyk7XG4gICAgLy8gWzAsIGFyZ3NhcnIsIGNhbGxhYmxlXVxuICAgIHNiLmVtaXRQdXNoSW50KG5vZGUsIDApO1xuICAgIC8vIFthcmdzYXJyLCBjYWxsYWJsZV1cbiAgICBzYi5lbWl0T3Aobm9kZSwgJ05FV0FSUkFZJyk7XG4gICAgc2IuZW1pdEhlbHBlcihcbiAgICAgIG5vZGUsXG4gICAgICBvcHRpb25zLFxuICAgICAgc2IuaGVscGVycy5mb3JMb29wKHtcbiAgICAgICAgY29uZGl0aW9uOiAoKSA9PiB7XG4gICAgICAgICAgLy8gW2NhbGxhYmxlLCBhcmdzYXJyLCBjYWxsYWJsZV1cbiAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ09WRVInKTtcbiAgICAgICAgICAvLyBbdmFsLCBjYWxsYWJsZV1cbiAgICAgICAgICBzYi5lbWl0SGVscGVyKG5vZGUsIG9wdGlvbnMsIHNiLmhlbHBlcnMuY2FsbCk7XG4gICAgICAgICAgLy8gW2l0ZXJhdG9yUmVzdWx0LCBjYWxsYWJsZV1cbiAgICAgICAgICBzYi5lbWl0SGVscGVyKG5vZGUsIG9wdGlvbnMsIHNiLmhlbHBlcnMudW53cmFwSXRlcmF0b3JSZXN1bHQpO1xuICAgICAgICAgIC8vIFtpdGVyYXRvclJlc3VsdCwgaXRlcmF0b3JSZXN1bHQsIGNhbGxhYmxlXVxuICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnRFVQJyk7XG4gICAgICAgICAgLy8gW251bWJlciwgaXRlcmF0b3JSZXN1bHQsIGl0ZXJhdG9yUmVzdWx0LCBjYWxsYWJsZV1cbiAgICAgICAgICBzYi5lbWl0UHVzaEludChub2RlLCBJdGVyYXRvclJlc3VsdFNsb3RzLmRvbmUpO1xuICAgICAgICAgIC8vIFtib29sZWFuVmFsLCBpdGVyYXRvclJlc3VsdCwgY2FsbGFibGVdXG4gICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdQSUNLSVRFTScpO1xuICAgICAgICAgIC8vIFtib29sZWFuLCBpdGVyYXRvclJlc3VsdCwgY2FsbGFibGVdXG4gICAgICAgICAgc2IuZW1pdEhlbHBlcihub2RlLCBvcHRpb25zLCBzYi5oZWxwZXJzLnVud3JhcEJvb2xlYW4pO1xuICAgICAgICAgIC8vIFtib29sZWFuLCBpdGVyYXRvclJlc3VsdCwgY2FsbGFibGVdXG4gICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdOT1QnKTtcbiAgICAgICAgfSxcbiAgICAgICAgZWFjaDogKGlubmVyT3B0aW9ucykgPT4ge1xuICAgICAgICAgIC8vIFtudW1iZXIsIGl0ZXJhdG9yUmVzdWx0LCBjYWxsYWJsZV1cbiAgICAgICAgICBzYi5lbWl0UHVzaEludChub2RlLCBJdGVyYXRvclJlc3VsdFNsb3RzLnZhbHVlKTtcbiAgICAgICAgICAvLyBbdmFsLCBjYWxsYWJsZV1cbiAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ1BJQ0tJVEVNJyk7XG4gICAgICAgICAgLy8gWzAsIHZhbCwgY2FsbGFibGVdXG4gICAgICAgICAgc2IuZW1pdFB1c2hJbnQobm9kZSwgMCk7XG4gICAgICAgICAgLy8gW2FyZ3NhcnIsIHZhbCwgY2FsbGFibGVdXG4gICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdORVdBUlJBWScpO1xuICAgICAgICAgIC8vIFt2YWwsIGFyZ3NhcnIsIGNhbGxhYmxlXVxuICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnU1dBUCcpO1xuICAgICAgICAgIC8vIFthcmdzYXJyLCBjYWxsYWJsZV1cbiAgICAgICAgICB0aGlzLmVhY2goc2Iubm9QdXNoVmFsdWVPcHRpb25zKGlubmVyT3B0aW9ucykpO1xuICAgICAgICB9LFxuICAgICAgICBjbGVhbnVwOiAoKSA9PiB7XG4gICAgICAgICAgLy8gW2NhbGxhYmxlXVxuICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnRFJPUCcpO1xuICAgICAgICAgIC8vIFtdXG4gICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdEUk9QJyk7XG4gICAgICAgIH0sXG4gICAgICB9KSxcbiAgICApO1xuICB9XG59XG4iXX0=