using Invercargill.DataStructures; using Invercargill.Mapping; namespace Invercargill { public abstract class Proxy : Enumerable { protected Enumerable inner { get; set; } public override EnumerableInfo get_info() { return new EnumerableInfo.infer_single(this, EnumerableCategory.PROXY, inner); } public override int? peek_count() { return inner.peek_count(); } public override Tracker get_tracker() { return inner.get_tracker(); } public override bool iterate_if(PredicateDelegate handler) { return inner.iterate_if(handler); } public override void iterate(ItemDelegate? handler = null) { inner.iterate(handler); } public override Series to_series() { return inner.to_series(); } public override Tracker iterator() { return inner.iterator(); } public override T[] to_array() { return inner.to_array(); } public override int count(PredicateDelegate? predicate = null) { return inner.count(predicate); } public override bool any(PredicateDelegate predicate = (i) => true) { return inner.any(predicate); } public override bool all(PredicateDelegate predicate) { return inner.all(predicate); } public override bool no(PredicateDelegate predicate = (i) => true) { return inner.no(predicate); } public override Enumerable where(owned PredicateDelegate predicate) { return inner.where((owned)predicate); } public override Enumerable select(owned TransformDelegate transform) { return inner.select((owned)transform); } public override Enumerable select_many(owned TransformDelegate> transform) { return inner.select_many((owned)transform); } public override Enumerable sort(owned CompareDelegate compare) { return inner.sort((owned)compare); } public override Enumerable concat(Enumerable other) { return inner.concat(other); } public override Enumerable take(int count) { return inner.take(count); } public override Enumerable skip(int count) { return inner.skip(count); } public override Enumerable cast() { return inner.cast(); } public override Enumerable parallel_select(owned TransformDelegate transform, uint workers = 0) { return inner.parallel_select((owned)transform, workers); } public override void parallel_iterate(ItemDelegate handler, uint workers = 0) { inner.parallel_iterate(handler, workers); } public override Enumerable> contextualised_select(owned TransformDelegate transform) { return inner.contextualised_select((owned)transform); } public override TOut aggregate(TOut initial, AggregateDelegate aggregate_func) { return inner.aggregate(initial, aggregate_func); } public override T max(TransformDelegate int_delegate) { return inner.max(int_delegate); } public override T min(TransformDelegate int_delegate) { return inner.min(int_delegate); } public override bool contains(T item, EqualityDelegate? equator = null) { return inner.contains(item, equator); } public override Enumerable> pair_up(Enumerable other) { return inner.pair_up(other); } public override Enumerable interleave(Enumerable other) { return inner.interleave(other); } public override Enumerable fork(owned TransformDelegate fork1, owned TransformDelegate fork2) { return inner.fork((owned)fork1, (owned)fork2); } public override Enumerable fork_many(owned TransformDelegate> fork1, owned TransformDelegate> fork2) { return inner.fork_many((owned)fork1, (owned)fork2); } public override bool matches(Enumerable other, EqualityDelegate equals) { return inner.matches(other, equals); } public override Enumerable with(T item, uint times = 1) { return inner.with(item, times); } public override T first(owned PredicateDelegate? predicate = null) throws SequenceError { return inner.first((owned)predicate); } public override T? first_or_default(owned PredicateDelegate? predicate = null) { return inner.first_or_default((owned)predicate); } public override T last(owned PredicateDelegate? predicate = null) throws SequenceError { return inner.last((owned)predicate); } public override T? last_or_default(owned PredicateDelegate? predicate = null) { return inner.last_or_default((owned)predicate); } public override T single(owned PredicateDelegate? predicate = null) throws SequenceError { return inner.single((owned)predicate); } public override T? single_or_default(owned PredicateDelegate? predicate = null) throws SequenceError { return inner.single_or_default((owned)predicate); } public override string to_string(StringifyDelegate? stringifier = null, string separator = "") { return inner.to_string(stringifier, separator); } public override Object[] to_object_array() throws SequenceError { return inner.to_object_array(); } public override Vector to_vector() { return inner.to_vector(); } public override Type element_type { get { return inner.element_type; } } public override TPromotion promote_to() throws PromotionError { return inner.promote_to(); } public override TPromotion assert_promotion() { return inner.assert_promotion(); } public override Enumerable seal() { return inner.seal(); } public override Dictionary to_dictionary(TransformDelegate key_selecter, HashDelegate? key_hash_func = null, EqualityDelegate? key_equal_func = null) { return inner.to_dictionary(key_selecter, key_hash_func, key_equal_func); } public override Dictionary select_to_dictionary(TransformDelegate key_selecter, TransformDelegate value_selecter, HashDelegate? key_hash_func = null, EqualityDelegate? key_equal_func = null) { return inner.select_to_dictionary(key_selecter, value_selecter, key_hash_func, key_equal_func); } public override Enumerable> select_pairs(owned TransformDelegate transform1, owned TransformDelegate transform2) { return inner.select_pairs((owned) transform1, (owned) transform2); } public override Enumerable> with_positions() { return inner.with_positions(); } public override HashSet to_hash_set(HashDelegate? hash_func = null, EqualityDelegate? equal_func = null) { return inner.to_hash_set(hash_func, equal_func); } public override Elements to_elements() { return inner.to_elements(); } public override Enumerable select_where(owned FilterTransformDelegate transform) { return inner.select_where((owned)transform); } public override Attempts attempt_select(owned AttemptTransformDelegate transform) { return inner.attempt_select((owned)transform); } public override Attempts attempt_select_nested(owned AttemptTransformDelegate>> transform) { return inner.attempt_select_nested((owned)transform); } public override Enumerable cache() { return inner.cache(); } public override Attempts attempt_map_with(Mapper mapper) { return inner.attempt_map_with(mapper); } public override Enumerable as_enumerable() { return inner.as_enumerable(); } } }