1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- namespace Invercargill {
- private class SkipQuery<T> : BaseQuery<T, T> {
- private int n_items {get; set;}
- public SkipQuery(Enumerable<T> input, int skip) {
- this.input = input;
- n_items = skip;
- }
- public override bool iterate_if (Invercargill.PredicateDelegate<T> handler) {
- var c = 0;
- return input.iterate_if(i => {
- if(c >= n_items) {
- c++;
- return handler(i);
- }
- c++;
- return true;
- });
- }
- public override Tracker<T> get_tracker() {
- var tracker = input.get_tracker();
- var c = 0;
- return new AdvanceTracker<T>((out obj) => {
- obj = null;
- while(c < n_items) {
- if(!tracker.has_next()) {
- return false;
- }
- tracker.get_next ();
- c++;
- }
-
- if(tracker.has_next()) {
- obj = tracker.get_next();
- return true;
- }
- return false;
- });
- }
- }
- }
|