return iterator ().stream<A> ((owned) f);
}
+ public virtual Iterator<G> filter (owned Predicate<G> f) {
+ return Traversable.filter_impl<G> (this, (owned) f);
+ }
+
private weak Collection<G> _read_only_view;
/**
public virtual Iterator<A> stream<A> (owned StreamFunc<Map.Entry<K,V>, A> f) {
return iterator ().stream<A> ((owned) f);
}
+
+ public Gee.Iterator<Map.Entry<K,V>> filter (owned Predicate<Map.Entry<K,V>> f) {
+ return Traversable.filter_impl<Map.Entry<K,V>> (this, (owned)f);
+ }
}
public Gee.Iterator<A> stream<A> (owned StreamFunc<A, G> f) {
return Gee.Iterator.stream_impl<G, A>(this, (owned)f);
}
+
+ public Gee.Iterator<G> filter (owned Predicate<G> f) {
+ return Traversable.filter_impl<G> (this, (owned)f);
+ }
}
}
public Gee.Iterator<A> stream<A> (owned StreamFunc<A, G> f) {
return Gee.Iterator.stream_impl<G, A>(this, (owned)f);
}
+
+ public Gee.Iterator<G> filter (owned Predicate<G> f) {
+ return Traversable.filter_impl<G> (this, (owned)f);
+ }
}
}
public Gee.Iterator<A> stream<A> (owned StreamFunc<A, K> f) {
return Gee.Iterator.stream_impl<K, A>(this, (owned)f);
}
+
+ public Gee.Iterator<K> filter (owned Predicate<K> f) {
+ return Traversable.filter_impl<K> (this, (owned)f);
+ }
}
private class MapIterator<K,V> : NodeIterator<K,V>, Gee.MapIterator<K,V> {
public Gee.Iterator<A> stream<A> (owned StreamFunc<A, V> f) {
return Gee.Iterator.stream_impl<V, A>(this, (owned)f);
}
+
+ public Gee.Iterator<V> filter (owned Predicate<V> f) {
+ return Traversable.filter_impl<V> (this, (owned)f);
+ }
}
private class EntryIterator<K,V> : NodeIterator<K,V>, Traversable<Map.Entry<K,V>>, Iterator<Map.Entry<K,V>> {
public Gee.Iterator<A> stream<A> (owned StreamFunc<Map.Entry<K,V>, A> f) {
return Gee.Iterator.stream_impl<Map.Entry<K,V>, A>(this, (owned)f);
}
+
+ public Gee.Iterator<Map.Entry<K,V>> filter (owned Predicate<Map.Entry<K,V>> f) {
+ return Traversable.filter_impl<Map.Entry<K,V>> (this, (owned)f);
+ }
}
}
public Gee.Iterator<A> stream<A> (owned StreamFunc<A, G> f) {
return Gee.Iterator.stream_impl<G, A>(this, (owned)f);
}
+
+ public Gee.Iterator<G> filter (owned Predicate<G> f) {
+ return Traversable.filter_impl<G> (this, (owned)f);
+ }
}
}
public Gee.Iterator<A> stream<A> (owned StreamFunc<A, G> f) {
return Gee.Iterator.stream_impl<G, A>(this, (owned)f);
}
+
+ public Gee.Iterator<G> filter (owned Predicate<G> f) {
+ return Traversable.filter_impl<G> (this, (owned)f);
+ }
}
private unowned Node<G>? _get_node_at (int index) {
public Gee.Iterator<A> stream<A> (owned StreamFunc<A, G> f) {
return Gee.Iterator.stream_impl<G, A>(this, (owned)f);
}
+
+ public Gee.Iterator<G> filter (owned Predicate<G> f) {
+ return Traversable.filter_impl<G> (this, (owned)f);
+ }
}
}
return _collection.stream<A> ((owned)f);
}
+ public Gee.Iterator<G> filter (owned Predicate<G> f) {
+ return _collection.filter ((owned)f);
+ }
+
/**
* {@inheritDoc}
*/
public Gee.Iterator<A> stream<A> (owned StreamFunc<A, G> f) {
return _iter.stream<A> ((owned)f);
}
+
+ public Gee.Iterator<G> filter (owned Predicate<G> f) {
+ return _iter.filter ((owned)f);
+ }
}
public virtual Collection<G> read_only_view {
return _map.stream<A> ((owned) f);
}
+ public Iterator<Map.Entry<K, V>> filter (owned Predicate<Map.Entry<K, V>> f) {
+ return Traversable.filter_impl<Map.Entry<K, V>> (this, (owned)f);
+ }
+
protected class MapIterator<K,V> : Object, Gee.MapIterator<K,V> {
protected Gee.MapIterator<K,V> _iter;
public delegate Lazy<A>? UnfoldFunc<A> ();
public delegate Traversable.Stream StreamFunc<G, A> (Traversable.Stream state, owned Lazy<G>? g, out Lazy<A>? lazy);
public delegate A MapFunc<A, G> (owned G g);
+ public delegate bool Predicate<G> (G g);
}
public interface Gee.Traversable<G> : Object
});
}
+ public abstract Iterator<G> filter (owned Predicate<G> f);
+
+ public static Iterator<G> filter_impl<G> (Traversable<G> input, owned Predicate<G> pred) {
+ return input.stream<G> ((state, item, out val) => {
+ switch (state) {
+ case Stream.YIELD:
+ return Stream.CONTINUE;
+ case Stream.CONTINUE:
+ G g = item.get ();
+ if (pred (g)) {
+ val = item;
+ return Stream.YIELD;
+ } else {
+ return Stream.CONTINUE;
+ }
+ case Stream.END:
+ return Stream.END;
+ default:
+ assert_not_reached ();
+ };
+ });
+ }
+
public enum Stream {
YIELD,
CONTINUE,
public Gee.Iterator<A> stream<A> (owned StreamFunc<A, K> f) {
return Gee.Iterator.stream_impl<K, A>(this, (owned)f);
}
+
+ public Gee.Iterator<K> filter (owned Predicate<K> f) {
+ return Traversable.filter_impl<K> (this, (owned)f);
+ }
}
private class SubKeyIterator<K,V> : SubNodeIterator<K,V>, Traversable<K>, Gee.Iterator<K>, BidirIterator<K> {
public Gee.Iterator<A> stream<A> (owned StreamFunc<A, K> f) {
return Gee.Iterator.stream_impl<K, A>(this, (owned)f);
}
+
+ public Gee.Iterator<K> filter (owned Predicate<K> f) {
+ return Traversable.filter_impl<K> (this, (owned)f);
+ }
}
private class ValueIterator<K,V> : NodeIterator<K,V>, Traversable<V>, Gee.Iterator<V>, Gee.BidirIterator<V> {
public Gee.Iterator<A> stream<A> (owned StreamFunc<A, V> f) {
return Gee.Iterator.stream_impl<V, A>(this, (owned)f);
}
+
+ public Gee.Iterator<V> filter (owned Predicate<V> f) {
+ return Traversable.filter_impl<V> (this, (owned)f);
+ }
}
private class SubValueIterator<K,V> : SubNodeIterator<K,V>, Traversable<V>, Gee.Iterator<V>, BidirIterator<V> {
public Gee.Iterator<A> stream<A> (owned StreamFunc<A, V> f) {
return Gee.Iterator.stream_impl<V, A>(this, (owned)f);
}
+
+ public Gee.Iterator<V> filter (owned Predicate<V> f) {
+ return Traversable.filter_impl<V> (this, (owned)f);
+ }
}
private class EntryIterator<K,V> : NodeIterator<K,V>, Traversable<Map.Entry<K, V>>, Gee.Iterator<Map.Entry<K,V>>, Gee.BidirIterator<Map.Entry<K,V>> {
public Gee.Iterator<A> stream<A> (owned StreamFunc<Map.Entry<K, V>, A> f) {
return Gee.Iterator.stream_impl<Map.Entry<K, V>, A>(this, (owned)f);
}
+
+ public Gee.Iterator<Map.Entry<K, V>> filter (owned Predicate<Map.Entry<K, V>> f) {
+ return Traversable.filter_impl<Map.Entry<K, V>> (this, (owned)f);
+ }
}
private class SubEntryIterator<K,V> : SubNodeIterator<K,V>, Traversable<Map.Entry<K, V>>, Gee.Iterator<Map.Entry<K,V>>, Gee.BidirIterator<Map.Entry<K,V>> {
public Gee.Iterator<A> stream<A> (owned StreamFunc<Map.Entry<K, V>, A> f) {
return Gee.Iterator.stream_impl<Map.Entry<K, V>, A>(this, (owned)f);
}
+
+ public Gee.Iterator<Map.Entry<K, V>> filter (owned Predicate<Map.Entry<K, V>> f) {
+ return Traversable.filter_impl<Map.Entry<K, V>> (this, (owned)f);
+ }
}
private class MapIterator<K,V> : NodeIterator<K,V>, Gee.MapIterator<K,V>, BidirMapIterator<K,V> {
return Gee.Iterator.stream_impl<G, A>(this, (owned)f);
}
+ public Gee.Iterator<G> filter (owned Predicate<G> f) {
+ return Traversable.filter_impl<G> (this, (owned)f);
+ }
+
private weak Node<G>? current = null;
private weak Node<G>? _next = null;
private weak Node<G>? _prev = null;
return Gee.Iterator.stream_impl<G, A>(this, (owned)f);
}
+ public Gee.Iterator<G> filter (owned Predicate<G> f) {
+ return Traversable.filter_impl<G> (this, (owned)f);
+ }
+
private new TreeSet<G> set;
private Range<G> range;
private Iterator<G>? iterator = null;
return Iterator.stream_impl<G, A>(this, (owned)f);
}
+ public Iterator<G> filter (owned Predicate<G> f) {
+ return Traversable.filter_impl<G> (this, (owned)f);
+ }
+
private UnfoldFunc<G> _func;
private Lazy<G>? _current;
private Lazy<G>? _next;