|
@@ -1,74 +0,0 @@
|
|
|
-
|
|
|
-using Gee;
|
|
|
-
|
|
|
-namespace Invercargill {
|
|
|
-
|
|
|
- private class GeeIterable<T> : Object, Traversable<T>, Iterable<T> {
|
|
|
-
|
|
|
- private Enumerable<T> enumerable;
|
|
|
-
|
|
|
- public GeeIterable(Enumerable<T> e) {
|
|
|
- enumerable = e;
|
|
|
- }
|
|
|
-
|
|
|
- public bool foreach (Gee.ForallFunc<T> f) {
|
|
|
- return enumerable.iterate_if(i => f(i));
|
|
|
- }
|
|
|
-
|
|
|
- public Gee.Iterator<T> iterator () {
|
|
|
- return new GeeIterator<T>(enumerable.get_tracker());
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- private class GeeIterator<T> : Object, Traversable<T>, Iterator<T> {
|
|
|
-
|
|
|
- private Tracker<T> tracker;
|
|
|
- private T current_value;
|
|
|
- private bool has_current_value = false;
|
|
|
-
|
|
|
-
|
|
|
- public GeeIterator(Tracker<T> tracker) {
|
|
|
- this.tracker = tracker;
|
|
|
- }
|
|
|
-
|
|
|
- public new T get () {
|
|
|
- return current_value;
|
|
|
- }
|
|
|
-
|
|
|
- public bool has_next () {
|
|
|
- return tracker.has_next ();
|
|
|
- }
|
|
|
-
|
|
|
- public bool next () {
|
|
|
- if(tracker.has_next ()) {
|
|
|
- current_value = tracker.get_next ();
|
|
|
- return true;
|
|
|
- }
|
|
|
- return false;
|
|
|
- }
|
|
|
-
|
|
|
- public void remove () {
|
|
|
- assert_not_reached ();
|
|
|
- }
|
|
|
-
|
|
|
- public bool read_only { get {
|
|
|
- return true;
|
|
|
- }}
|
|
|
-
|
|
|
- public bool valid { get {
|
|
|
- return has_current_value;
|
|
|
- }}
|
|
|
-
|
|
|
- public bool foreach (Gee.ForallFunc<T> handler) {
|
|
|
- while(tracker.has_next()) {
|
|
|
- if(!handler(tracker.get_next())) {
|
|
|
- return false;
|
|
|
- }
|
|
|
- }
|
|
|
- return true;
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
-}
|