@neo-one/smart-contract-compiler
Version:
NEO•ONE TypeScript smart contract compiler.
50 lines (48 loc) • 9.53 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const Helper_1 = require("../Helper");
class ArrEveryFuncHelper 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.emitSysCall(node, 'Neo.Enumerator.Create');
sb.emitPushInt(node, 0);
sb.emitPushBoolean(node, true);
sb.emitOp(node, 'ROT');
sb.emitHelper(node, options, sb.helpers.forLoop({
condition: () => {
sb.emitOp(node, 'OVER');
sb.emitOp(node, 'OVER');
sb.emitSysCall(node, 'Neo.Enumerator.Next');
sb.emitOp(node, 'BOOLAND');
},
each: (innerOptions) => {
sb.emitOp(node, 'NIP');
sb.emitOp(node, 'DUP');
sb.emitSysCall(node, 'Neo.Enumerator.Value');
sb.emitPushInt(node, 2);
sb.emitOp(node, 'PICK');
sb.emitHelper(node, options, sb.helpers.wrapNumber);
sb.emitOp(node, 'SWAP');
sb.emitPushInt(node, 2);
sb.emitOp(node, 'PACK');
sb.emitPushInt(node, 3);
sb.emitOp(node, 'PICK');
sb.emitHelper(node, sb.pushValueOptions(innerOptions), sb.helpers.call);
sb.emitHelper(node, sb.pushValueOptions(innerOptions), sb.helpers.unwrapBoolean);
sb.emitOp(node, 'ROT');
sb.emitOp(node, 'INC');
sb.emitOp(node, 'SWAP');
sb.emitOp(node, 'ROT');
},
cleanup: () => {
sb.emitOp(node, 'DROP');
sb.emitOp(node, 'NIP');
sb.emitOp(node, 'NIP');
},
}));
}
}
exports.ArrEveryFuncHelper = ArrEveryFuncHelper;
//# sourceMappingURL=data:application/json;charset=utf8;base64,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QkFFdkIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBRXZCLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUV4QixFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN6QixDQUFDO1lBQ0QsT0FBTyxFQUFFLEdBQUcsRUFBRTtnQkFFWixFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFFeEIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBRXZCLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3pCLENBQUM7U0FDRixDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQTdFRCxnREE2RUMiLCJmaWxlIjoibmVvLW9uZS1zbWFydC1jb250cmFjdC1jb21waWxlci9zcmMvY29tcGlsZS9oZWxwZXIvYXJyL0FyckV2ZXJ5RnVuY0hlbHBlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0cyBmcm9tICd0eXBlc2NyaXB0JztcbmltcG9ydCB7IFNjcmlwdEJ1aWxkZXIgfSBmcm9tICcuLi8uLi9zYic7XG5pbXBvcnQgeyBWaXNpdE9wdGlvbnMgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBIZWxwZXIgfSBmcm9tICcuLi9IZWxwZXInO1xuXG4vLyBJbnB1dDogW29iamVjdFZhbCwgYXJyXVxuLy8gT3V0cHV0OiBbYm9vbGVhbl1cbmV4cG9ydCBjbGFzcyBBcnJFdmVyeUZ1bmNIZWxwZXIgZXh0ZW5kcyBIZWxwZXIge1xuICBwdWJsaWMgZW1pdChzYjogU2NyaXB0QnVpbGRlciwgbm9kZTogdHMuTm9kZSwgb3B0aW9uc0luOiBWaXNpdE9wdGlvbnMpOiB2b2lkIHtcbiAgICBjb25zdCBvcHRpb25zID0gc2IucHVzaFZhbHVlT3B0aW9ucyhvcHRpb25zSW4pO1xuXG4gICAgLy8gW2NhbGxhYmxlLCBhcnJdXG4gICAgc2IuZW1pdEhlbHBlcihub2RlLCBvcHRpb25zLCBzYi5oZWxwZXJzLmdldENhbGxhYmxlKHt9KSk7XG4gICAgLy8gW2FyciwgY2FsbGFibGVdXG4gICAgc2IuZW1pdE9wKG5vZGUsICdTV0FQJyk7XG4gICAgLy8gW2VudW1lcmF0b3IsIGNhbGxhYmxlXVxuICAgIHNiLmVtaXRTeXNDYWxsKG5vZGUsICdOZW8uRW51bWVyYXRvci5DcmVhdGUnKTtcbiAgICAvLyBbaWR4LCBlbnVtZXJhdG9yLCBjYWxsYWJsZV1cbiAgICBzYi5lbWl0UHVzaEludChub2RlLCAwKTtcbiAgICAvLyBbcmVzdWx0LCBpZHgsIGVudW1lcmF0b3IsIGNhbGxhYmxlXVxuICAgIHNiLmVtaXRQdXNoQm9vbGVhbihub2RlLCB0cnVlKTtcbiAgICAvLyBbZW51bWVyYXRvciwgcmVzdWx0LCBpZHgsIGNhbGxhYmxlXVxuICAgIHNiLmVtaXRPcChub2RlLCAnUk9UJyk7XG4gICAgc2IuZW1pdEhlbHBlcihcbiAgICAgIG5vZGUsXG4gICAgICBvcHRpb25zLFxuICAgICAgc2IuaGVscGVycy5mb3JMb29wKHtcbiAgICAgICAgY29uZGl0aW9uOiAoKSA9PiB7XG4gICAgICAgICAgLy8gW3Jlc3VsdCwgZW51bWVyYXRvciwgcmVzdWx0LCBpZHgsIGNhbGxhYmxlXVxuICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnT1ZFUicpO1xuICAgICAgICAgIC8vIFtlbnVtZXJhdG9yLCByZXN1bHQsIGVudW1lcmF0b3IsIHJlc3VsdCwgaWR4LCBjYWxsYWJsZV1cbiAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ09WRVInKTtcbiAgICAgICAgICAvLyBbYm9vbGVhbiwgcmVzdWx0LCBlbnVtZXJhdG9yLCByZXN1bHQsIGlkeCwgY2FsbGFibGVdXG4gICAgICAgICAgc2IuZW1pdFN5c0NhbGwobm9kZSwgJ05lby5FbnVtZXJhdG9yLk5leHQnKTtcbiAgICAgICAgICAvLyBbYm9vbGVhbiwgZW51bWVyYXRvciwgcmVzdWx0LCBpZHgsIGNhbGxhYmxlXVxuICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnQk9PTEFORCcpO1xuICAgICAgICB9LFxuICAgICAgICBlYWNoOiAoaW5uZXJPcHRpb25zKSA9PiB7XG4gICAgICAgICAgLy8gW2VudW1lcmF0b3IsIGlkeCwgY2FsbGFibGVdXG4gICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdOSVAnKTtcbiAgICAgICAgICAvLyBbZW51bWVyYXRvciwgZW51bWVyYXRvciwgaWR4LCBjYWxsYWJsZV1cbiAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ0RVUCcpO1xuICAgICAgICAgIC8vIFt2YWx1ZSwgZW51bWVyYXRvciwgaWR4LCBjYWxsYWJsZV1cbiAgICAgICAgICBzYi5lbWl0U3lzQ2FsbChub2RlLCAnTmVvLkVudW1lcmF0b3IuVmFsdWUnKTtcbiAgICAgICAgICAvLyBbMiwgdmFsdWUsIGVudW1lcmF0b3IsIGlkeCwgY2FsbGFibGVdXG4gICAgICAgICAgc2IuZW1pdFB1c2hJbnQobm9kZSwgMik7XG4gICAgICAgICAgLy8gW2lkeCwgdmFsdWUsIGVudW1lcmF0b3IsIGlkeCwgY2FsbGFibGVdXG4gICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdQSUNLJyk7XG4gICAgICAgICAgLy8gW2lkeCwgdmFsdWUsIGVudW1lcmF0b3IsIGlkeCwgY2FsbGFibGVdXG4gICAgICAgICAgc2IuZW1pdEhlbHBlcihub2RlLCBvcHRpb25zLCBzYi5oZWxwZXJzLndyYXBOdW1iZXIpO1xuICAgICAgICAgIC8vIFt2YWx1ZSwgaWR4LCBlbnVtZXJhdG9yLCBpZHgsIGNhbGxhYmxlXVxuICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnU1dBUCcpO1xuICAgICAgICAgIC8vIFsyLCB2YWx1ZSwgaWR4LCBlbnVtZXJhdG9yLCBpZHgsIGNhbGxhYmxlXVxuICAgICAgICAgIHNiLmVtaXRQdXNoSW50KG5vZGUsIDIpO1xuICAgICAgICAgIC8vIFthcmdzYXJyLCBlbnVtZXJhdG9yLCBpZHgsIGNhbGxhYmxlXVxuICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnUEFDSycpO1xuICAgICAgICAgIC8vIFszLCBhcmdzYXJyLCBlbnVtZXJhdG9yLCBpZHgsIGNhbGxhYmxlXVxuICAgICAgICAgIHNiLmVtaXRQdXNoSW50KG5vZGUsIDMpO1xuICAgICAgICAgIC8vIFtjYWxsYWJsZSwgYXJnc2FyciwgZW51bWVyYXRvciwgaWR4LCBjYWxsYWJsZV1cbiAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ1BJQ0snKTtcbiAgICAgICAgICAvLyBbdmFsLCBlbnVtZXJhdG9yLCBpZHgsIGNhbGxhYmxlXVxuICAgICAgICAgIHNiLmVtaXRIZWxwZXIobm9kZSwgc2IucHVzaFZhbHVlT3B0aW9ucyhpbm5lck9wdGlvbnMpLCBzYi5oZWxwZXJzLmNhbGwpO1xuICAgICAgICAgIC8vIFtyZXN1bHQsIGVudW1lcmF0b3IsIGlkeCwgY2FsbGFibGVdXG4gICAgICAgICAgc2IuZW1pdEhlbHBlcihub2RlLCBzYi5wdXNoVmFsdWVPcHRpb25zKGlubmVyT3B0aW9ucyksIHNiLmhlbHBlcnMudW53cmFwQm9vbGVhbik7XG4gICAgICAgICAgLy8gW2lkeCwgcmVzdWx0LCBlbnVtZXJhdG9yLCBjYWxsYWJsZV1cbiAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ1JPVCcpO1xuICAgICAgICAgIC8vIFtpZHgsIHJlc3VsdCwgZW51bWVyYXRvciwgY2FsbGFibGVdXG4gICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdJTkMnKTtcbiAgICAgICAgICAvLyBbcmVzdWx0LCBpZHgsIGVudW1lcmF0b3IsIGNhbGxhYmxlXVxuICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnU1dBUCcpO1xuICAgICAgICAgIC8vIFtlbnVtZXJhdG9yLCByZXN1bHQsIGlkeCwgY2FsbGFibGVdXG4gICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdST1QnKTtcbiAgICAgICAgfSxcbiAgICAgICAgY2xlYW51cDogKCkgPT4ge1xuICAgICAgICAgIC8vIFtyZXN1bHQsIGlkeCwgY2FsbGFibGVdXG4gICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdEUk9QJyk7XG4gICAgICAgICAgLy8gW3Jlc3VsdCwgY2FsbGFibGVdXG4gICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdOSVAnKTtcbiAgICAgICAgICAvLyBbcmVzdWx0XVxuICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnTklQJyk7XG4gICAgICAgIH0sXG4gICAgICB9KSxcbiAgICApO1xuICB9XG59XG4iXX0=