Transform.vala 805 B

123456789101112131415161718192021222324
  1. namespace Invercargill {
  2. private class TransformQuery<Tin, Tout> : BaseQuery<Tin, Tout> {
  3. private TransformDelegate<Tin, Tout> transform_func;
  4. public TransformQuery(Enumerable<Tin> input, owned TransformDelegate<Tin, Tout> transform) {
  5. this.input = input;
  6. transform_func = (owned)transform;
  7. }
  8. // public override bool iterate_if (Invercargill.PredicateDelegate<Tout> handler) {
  9. // return input.iterate_if(i => handler(transform_func(i)));
  10. // }
  11. public override Tracker<Tout> to_tracker() {
  12. var tracker = input.to_tracker();
  13. return new LambdaTracker<Tout>(
  14. () => tracker.has_next(),
  15. () => transform_func(tracker.get_next())
  16. );
  17. }
  18. }
  19. }