Proxy.vala 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244
  1. using Invercargill.DataStructures;
  2. using Invercargill.Mapping;
  3. namespace Invercargill {
  4. public abstract class Proxy<T> : Enumerable<T> {
  5. protected Enumerable<T> inner { get; set; }
  6. public override EnumerableInfo get_info() {
  7. return new EnumerableInfo.infer_single(this, EnumerableCategory.PROXY, inner);
  8. }
  9. public override int? peek_count() {
  10. return inner.peek_count();
  11. }
  12. public override Tracker<T> get_tracker() {
  13. return inner.get_tracker();
  14. }
  15. public override bool iterate_if(PredicateDelegate<T> handler) {
  16. return inner.iterate_if(handler);
  17. }
  18. public override void iterate(ItemDelegate<T>? handler = null) {
  19. inner.iterate(handler);
  20. }
  21. public override Series<T> to_series() {
  22. return inner.to_series();
  23. }
  24. public override Tracker<T> iterator() {
  25. return inner.iterator();
  26. }
  27. public override T[] to_array() {
  28. return inner.to_array();
  29. }
  30. public override int count(PredicateDelegate<T>? predicate = null) {
  31. return inner.count(predicate);
  32. }
  33. public override bool any(PredicateDelegate<T> predicate = (i) => true) {
  34. return inner.any(predicate);
  35. }
  36. public override bool all(PredicateDelegate<T> predicate) {
  37. return inner.all(predicate);
  38. }
  39. public override bool no(PredicateDelegate<T> predicate = (i) => true) {
  40. return inner.no(predicate);
  41. }
  42. public override Enumerable<T> where(owned PredicateDelegate<T> predicate) {
  43. return inner.where((owned)predicate);
  44. }
  45. public override Enumerable<TOut> select<TOut>(owned TransformDelegate<T, TOut> transform) {
  46. return inner.select((owned)transform);
  47. }
  48. public override Enumerable<TOut> select_many<TOut>(owned TransformDelegate<T, Enumerable<TOut>> transform) {
  49. return inner.select_many((owned)transform);
  50. }
  51. public override Enumerable<T> sort(owned CompareDelegate<T> compare) {
  52. return inner.sort((owned)compare);
  53. }
  54. public override Enumerable<T> concat(Enumerable<T> other) {
  55. return inner.concat(other);
  56. }
  57. public override Enumerable<T> take(int count) {
  58. return inner.take(count);
  59. }
  60. public override Enumerable<T> skip(int count) {
  61. return inner.skip(count);
  62. }
  63. public override Enumerable<TOut> cast<TOut>() {
  64. return inner.cast<TOut>();
  65. }
  66. public override Enumerable<TOut> parallel_select<TOut>(owned TransformDelegate<T, TOut> transform, uint workers = 0) {
  67. return inner.parallel_select((owned)transform, workers);
  68. }
  69. public override void parallel_iterate(ItemDelegate<T> handler, uint workers = 0) {
  70. inner.parallel_iterate(handler, workers);
  71. }
  72. public override Enumerable<SelectionContext<T, TOut>> contextualised_select<TOut>(owned TransformDelegate<T, TOut> transform) {
  73. return inner.contextualised_select((owned)transform);
  74. }
  75. public override TOut aggregate<TOut>(TOut initial, AggregateDelegate<TOut, T> aggregate_func) {
  76. return inner.aggregate(initial, aggregate_func);
  77. }
  78. public override T max(TransformDelegate<T, int> int_delegate) {
  79. return inner.max(int_delegate);
  80. }
  81. public override T min(TransformDelegate<T, int> int_delegate) {
  82. return inner.min(int_delegate);
  83. }
  84. public override bool contains(T item, EqualityDelegate<T>? equator = null) {
  85. return inner.contains(item, equator);
  86. }
  87. public override Enumerable<Pair<T, TOther>> pair_up<TOther>(Enumerable<TOther> other) {
  88. return inner.pair_up(other);
  89. }
  90. public override Enumerable<T> interleave(Enumerable<T> other) {
  91. return inner.interleave(other);
  92. }
  93. public override Enumerable<TOut> fork<TOut>(owned TransformDelegate<T, TOut> fork1, owned TransformDelegate<T, TOut> fork2) {
  94. return inner.fork((owned)fork1, (owned)fork2);
  95. }
  96. public override Enumerable<TOut> fork_many<TOut>(owned TransformDelegate<T, Enumerable<TOut>> fork1, owned TransformDelegate<T, Enumerable<TOut>> fork2) {
  97. return inner.fork_many((owned)fork1, (owned)fork2);
  98. }
  99. public override bool matches(Enumerable<T> other, EqualityDelegate<T> equals) {
  100. return inner.matches(other, equals);
  101. }
  102. public override Enumerable<T> with(T item, uint times = 1) {
  103. return inner.with(item, times);
  104. }
  105. public override T first(owned PredicateDelegate<T>? predicate = null) throws SequenceError {
  106. return inner.first((owned)predicate);
  107. }
  108. public override T? first_or_default(owned PredicateDelegate<T>? predicate = null) {
  109. return inner.first_or_default((owned)predicate);
  110. }
  111. public override T last(owned PredicateDelegate<T>? predicate = null) throws SequenceError {
  112. return inner.last((owned)predicate);
  113. }
  114. public override T? last_or_default(owned PredicateDelegate<T>? predicate = null) {
  115. return inner.last_or_default((owned)predicate);
  116. }
  117. public override T single(owned PredicateDelegate<T>? predicate = null) throws SequenceError {
  118. return inner.single((owned)predicate);
  119. }
  120. public override T? single_or_default(owned PredicateDelegate<T>? predicate = null) throws SequenceError {
  121. return inner.single_or_default((owned)predicate);
  122. }
  123. public override string to_string(StringifyDelegate<T>? stringifier = null, string separator = "") {
  124. return inner.to_string(stringifier, separator);
  125. }
  126. public override Object[] to_object_array() throws SequenceError {
  127. return inner.to_object_array();
  128. }
  129. public override Vector<T> to_vector() {
  130. return inner.to_vector();
  131. }
  132. public override Type element_type {
  133. get {
  134. return inner.element_type;
  135. }
  136. }
  137. public override TPromotion promote_to<TPromotion>() throws PromotionError {
  138. return inner.promote_to<TPromotion>();
  139. }
  140. public override TPromotion assert_promotion<TPromotion>() {
  141. return inner.assert_promotion<TPromotion>();
  142. }
  143. public override Enumerable<T> seal() {
  144. return inner.seal();
  145. }
  146. public override Dictionary<TKey, T> to_dictionary<TKey>(TransformDelegate<T, TKey> key_selecter, HashDelegate<TKey>? key_hash_func = null, EqualityDelegate<TKey>? key_equal_func = null) {
  147. return inner.to_dictionary<TKey>(key_selecter, key_hash_func, key_equal_func);
  148. }
  149. public override Dictionary<TKey, TValue> select_to_dictionary<TKey, TValue>(TransformDelegate<T, TKey> key_selecter, TransformDelegate<T, TValue> value_selecter, HashDelegate<TKey>? key_hash_func = null, EqualityDelegate<TKey>? key_equal_func = null) {
  150. return inner.select_to_dictionary<TKey, TValue>(key_selecter, value_selecter, key_hash_func, key_equal_func);
  151. }
  152. public override Enumerable<Pair<TFirst, TSecond>> select_pairs<TFirst, TSecond>(owned TransformDelegate<T, TFirst> transform1, owned TransformDelegate<T, TSecond> transform2) {
  153. return inner.select_pairs<TFirst, TSecond>((owned) transform1, (owned) transform2);
  154. }
  155. public override Enumerable<PositionItemPair<T>> with_positions() {
  156. return inner.with_positions();
  157. }
  158. public override HashSet<T> to_hash_set(HashDelegate<T>? hash_func = null, EqualityDelegate<T>? equal_func = null) {
  159. return inner.to_hash_set(hash_func, equal_func);
  160. }
  161. public override Elements to_elements() {
  162. return inner.to_elements();
  163. }
  164. public override Enumerable<TOut> select_where<TOut>(owned FilterTransformDelegate<T, TOut> transform) {
  165. return inner.select_where<TOut>((owned)transform);
  166. }
  167. public override Attempts<TOut> attempt_select<TOut>(owned AttemptTransformDelegate<T, TOut> transform) {
  168. return inner.attempt_select<TOut>((owned)transform);
  169. }
  170. public override Attempts<TOut> attempt_select_nested<TOut>(owned AttemptTransformDelegate<T, Enumerable<Attempt<TOut>>> transform) {
  171. return inner.attempt_select_nested<TOut>((owned)transform);
  172. }
  173. public override Enumerable<T> cache() {
  174. return inner.cache();
  175. }
  176. public override Attempts<TOut> attempt_map_with<TOut>(Mapper<TOut, T> mapper) {
  177. return inner.attempt_map_with<TOut>(mapper);
  178. }
  179. public override Enumerable<T> as_enumerable() {
  180. return inner.as_enumerable();
  181. }
  182. }
  183. }