1234567891011121314151617181920212223242526272829303132333435363738 |
- namespace Invercargill.Generators {
- internal class Range : Enumerable<int> {
- private int start;
- private int stride;
- private int stop;
- public Range(int initial, int end, int stride) {
- start = initial;
- stop = end;
- this.stride = stride;
- }
- public override int? peek_count() {
- return (stop - start) / stride;
- }
- public override EnumerableInfo get_info() {
- return new EnumerableInfo.infer_ultimate (this, EnumerableCategory.COMPUTED);
- }
- public override Tracker<int> get_tracker() {
- var i = start;
- return new LambdaTracker<int>(
- () => i < stop,
- () => {
- var val = i;
- i += stride;
- return val;
- });
- }
- }
- }
|