@neo-one/smart-contract-compiler
Version:
NEO•ONE TypeScript smart contract compiler.
33 lines (31 loc) • 5.42 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const Helper_1 = require("../Helper");
class RawEnumeratorForEachFuncHelper extends Helper_1.Helper {
emit(sb, node, optionsIn) {
const options = sb.pushValueOptions(optionsIn);
sb.emitHelper(node, options, sb.helpers.getCallable({}));
sb.emitOp(node, 'SWAP');
sb.emitHelper(node, options, sb.helpers.forLoop({
condition: () => {
sb.emitOp(node, 'DUP');
sb.emitSysCall(node, 'Neo.Enumerator.Next');
},
each: (innerOptions) => {
sb.emitOp(node, 'DUP');
sb.emitSysCall(node, 'Neo.Enumerator.Value');
sb.emitPushInt(node, 1);
sb.emitOp(node, 'PACK');
sb.emitPushInt(node, 2);
sb.emitOp(node, 'PICK');
sb.emitHelper(node, sb.noPushValueOptions(innerOptions), sb.helpers.call);
},
cleanup: () => {
sb.emitOp(node, 'DROP');
sb.emitOp(node, 'DROP');
},
}));
}
}
exports.RawEnumeratorForEachFuncHelper = RawEnumeratorForEachFuncHelper;
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlJhd0VudW1lcmF0b3JGb3JFYWNoRnVuY0hlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUdBLHNDQUFtQztBQUluQyxNQUFhLDhCQUErQixTQUFRLGVBQU07SUFDakQsSUFBSSxDQUFDLEVBQWlCLEVBQUUsSUFBYSxFQUFFLFNBQXVCO1FBQ25FLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUcvQyxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUV6RCxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN4QixFQUFFLENBQUMsVUFBVSxDQUNYLElBQUksRUFDSixPQUFPLEVBQ1AsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7WUFDakIsU0FBUyxFQUFFLEdBQUcsRUFBRTtnQkFFZCxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFFdkIsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUscUJBQXFCLENBQUMsQ0FBQztZQUM5QyxDQUFDO1lBQ0QsSUFBSSxFQUFFLENBQUMsWUFBWSxFQUFFLEVBQUU7Z0JBRXJCLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUV2QixFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO2dCQUU3QyxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFFeEIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBRXhCLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUV4QixFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFFeEIsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDNUUsQ0FBQztZQUNELE9BQU8sRUFBRSxHQUFHLEVBQUU7Z0JBRVosRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBRXhCLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQzFCLENBQUM7U0FDRixDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQTNDRCx3RUEyQ0MiLCJmaWxlIjoibmVvLW9uZS1zbWFydC1jb250cmFjdC1jb21waWxlci9zcmMvY29tcGlsZS9oZWxwZXIvaXRlcmF0b3IvUmF3RW51bWVyYXRvckZvckVhY2hGdW5jSGVscGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuaW1wb3J0IHsgU2NyaXB0QnVpbGRlciB9IGZyb20gJy4uLy4uL3NiJztcbmltcG9ydCB7IFZpc2l0T3B0aW9ucyB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IEhlbHBlciB9IGZyb20gJy4uL0hlbHBlcic7XG5cbi8vIElucHV0OiBbb2JqZWN0VmFsLCBlbnVtZXJhdG9yXVxuLy8gT3V0cHV0OiBbXVxuZXhwb3J0IGNsYXNzIFJhd0VudW1lcmF0b3JGb3JFYWNoRnVuY0hlbHBlciBleHRlbmRzIEhlbHBlciB7XG4gIHB1YmxpYyBlbWl0KHNiOiBTY3JpcHRCdWlsZGVyLCBub2RlOiB0cy5Ob2RlLCBvcHRpb25zSW46IFZpc2l0T3B0aW9ucyk6IHZvaWQge1xuICAgIGNvbnN0IG9wdGlvbnMgPSBzYi5wdXNoVmFsdWVPcHRpb25zKG9wdGlvbnNJbik7XG5cbiAgICAvLyBbY2FsbGFibGUsIGVudW1lcmF0b3JdXG4gICAgc2IuZW1pdEhlbHBlcihub2RlLCBvcHRpb25zLCBzYi5oZWxwZXJzLmdldENhbGxhYmxlKHt9KSk7XG4gICAgLy8gW2VudW1lcmF0b3IsIGNhbGxhYmxlXVxuICAgIHNiLmVtaXRPcChub2RlLCAnU1dBUCcpO1xuICAgIHNiLmVtaXRIZWxwZXIoXG4gICAgICBub2RlLFxuICAgICAgb3B0aW9ucyxcbiAgICAgIHNiLmhlbHBlcnMuZm9yTG9vcCh7XG4gICAgICAgIGNvbmRpdGlvbjogKCkgPT4ge1xuICAgICAgICAgIC8vIFtlbnVtZXJhdG9yLCBlbnVtZXJhdG9yLCBjYWxsYWJsZV1cbiAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ0RVUCcpO1xuICAgICAgICAgIC8vIFtib29sZWFuLCBlbnVtZXJhdG9yLCBjYWxsYWJsZV1cbiAgICAgICAgICBzYi5lbWl0U3lzQ2FsbChub2RlLCAnTmVvLkVudW1lcmF0b3IuTmV4dCcpO1xuICAgICAgICB9LFxuICAgICAgICBlYWNoOiAoaW5uZXJPcHRpb25zKSA9PiB7XG4gICAgICAgICAgLy8gW2VudW1lcmF0b3IsIGVudW1lcmF0b3IsIGNhbGxhYmxlXVxuICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnRFVQJyk7XG4gICAgICAgICAgLy8gW2tleSwgZW51bWVyYXRvciwgY2FsbGFibGVdXG4gICAgICAgICAgc2IuZW1pdFN5c0NhbGwobm9kZSwgJ05lby5FbnVtZXJhdG9yLlZhbHVlJyk7XG4gICAgICAgICAgLy8gWzEsIHZhbHVlLCBlbnVtZXJhdG9yLCBjYWxsYWJsZV1cbiAgICAgICAgICBzYi5lbWl0UHVzaEludChub2RlLCAxKTtcbiAgICAgICAgICAvLyBbYXJnc2FyciwgZW51bWVyYXRvciwgY2FsbGFibGVdXG4gICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdQQUNLJyk7XG4gICAgICAgICAgLy8gWzIsIGFyZ3NhcnIsIGVudW1lcmF0b3IsIGNhbGxhYmxlXVxuICAgICAgICAgIHNiLmVtaXRQdXNoSW50KG5vZGUsIDIpO1xuICAgICAgICAgIC8vIFtjYWxsYWJsZSwgYXJnc2FyciwgZW51bWVyYXRvciwgY2FsbGFibGVdXG4gICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdQSUNLJyk7XG4gICAgICAgICAgLy8gW2VudW1lcmF0b3IsIGNhbGxhYmxlXVxuICAgICAgICAgIHNiLmVtaXRIZWxwZXIobm9kZSwgc2Iubm9QdXNoVmFsdWVPcHRpb25zKGlubmVyT3B0aW9ucyksIHNiLmhlbHBlcnMuY2FsbCk7XG4gICAgICAgIH0sXG4gICAgICAgIGNsZWFudXA6ICgpID0+IHtcbiAgICAgICAgICAvLyBbY2FsbGFibGVdXG4gICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdEUk9QJyk7XG4gICAgICAgICAgLy8gW11cbiAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ0RST1AnKTtcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cbn1cbiJdfQ==