Sort.vala 1.1 KB

123456789101112131415161718192021222324252627282930313233343536
  1. namespace Invercargill {
  2. private class SortQuery<T> : BaseQuery<T, T> {
  3. private CompareDelegate<T> compare_func;
  4. public SortQuery(Enumerable<T> input, owned CompareDelegate<T> compare) {
  5. this.input = input;
  6. compare_func = (owned)compare;
  7. }
  8. // public override bool iterate_if (Invercargill.PredicateDelegate<T> handler) {
  9. // // Hack for now
  10. // var list = to_collection();
  11. // list.order_by ((a, b) => compare_func(a, b));
  12. // return gte<T>(list).iterate_if(handler);
  13. // }
  14. private class SortItem<T> {
  15. public CompareDelegate<T> compare_func;
  16. public T item;
  17. public SortItem(T item, CompareDelegate<T> func) {
  18. this.item = item;
  19. compare_func = (a, b) => func(a, b);
  20. }
  21. }
  22. public override Tracker<T> get_tracker() {
  23. // Hack for now
  24. var list = to_collection();
  25. list.order_by ((a, b) => compare_func(a, b));
  26. return gte<T>(list).get_tracker();
  27. }
  28. }
  29. }