Where.Opt.Generated.cs 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  1. // Licensed to the .NET Foundation under one or more agreements.
  2. // The .NET Foundation licenses this file to you under the Apache 2.0 License.
  3. // See the LICENSE file in the project root for more information.
  4. using System.Threading;
  5. using System.Threading.Tasks;
  6. namespace System.Linq
  7. {
  8. public static partial class AsyncEnumerable
  9. {
  10. private sealed class CombinedPredicates2<TSource> : ICombinedPredicates<TSource>
  11. {
  12. private readonly Func<TSource, bool> _predicate1;
  13. private readonly Func<TSource, bool> _predicate2;
  14. public CombinedPredicates2(Func<TSource, bool> predicate1, Func<TSource, bool> predicate2)
  15. {
  16. _predicate1 = predicate1;
  17. _predicate2 = predicate2;
  18. }
  19. public ICombinedPredicates<TSource> And(Func<TSource, bool> predicate) =>
  20. new CombinedPredicates3<TSource>(
  21. _predicate1,
  22. _predicate2,
  23. predicate
  24. );
  25. public bool Invoke(TSource x) => _predicate1(x) && _predicate2(x);
  26. }
  27. private sealed class CombinedPredicates3<TSource> : ICombinedPredicates<TSource>
  28. {
  29. private readonly Func<TSource, bool> _predicate1;
  30. private readonly Func<TSource, bool> _predicate2;
  31. private readonly Func<TSource, bool> _predicate3;
  32. public CombinedPredicates3(Func<TSource, bool> predicate1, Func<TSource, bool> predicate2, Func<TSource, bool> predicate3)
  33. {
  34. _predicate1 = predicate1;
  35. _predicate2 = predicate2;
  36. _predicate3 = predicate3;
  37. }
  38. public ICombinedPredicates<TSource> And(Func<TSource, bool> predicate) =>
  39. new CombinedPredicates4<TSource>(
  40. _predicate1,
  41. _predicate2,
  42. _predicate3,
  43. predicate
  44. );
  45. public bool Invoke(TSource x) => _predicate1(x) && _predicate2(x) && _predicate3(x);
  46. }
  47. private sealed class CombinedPredicates4<TSource> : ICombinedPredicates<TSource>
  48. {
  49. private readonly Func<TSource, bool> _predicate1;
  50. private readonly Func<TSource, bool> _predicate2;
  51. private readonly Func<TSource, bool> _predicate3;
  52. private readonly Func<TSource, bool> _predicate4;
  53. public CombinedPredicates4(Func<TSource, bool> predicate1, Func<TSource, bool> predicate2, Func<TSource, bool> predicate3, Func<TSource, bool> predicate4)
  54. {
  55. _predicate1 = predicate1;
  56. _predicate2 = predicate2;
  57. _predicate3 = predicate3;
  58. _predicate4 = predicate4;
  59. }
  60. public ICombinedPredicates<TSource> And(Func<TSource, bool> predicate) =>
  61. new CombinedPredicatesN<TSource>(
  62. _predicate1,
  63. _predicate2,
  64. _predicate3,
  65. _predicate4,
  66. predicate
  67. );
  68. public bool Invoke(TSource x) => _predicate1(x) && _predicate2(x) && _predicate3(x) && _predicate4(x);
  69. }
  70. private sealed class CombinedAsyncPredicates2<TSource> : ICombinedAsyncPredicates<TSource>
  71. {
  72. private readonly Func<TSource, ValueTask<bool>> _predicate1;
  73. private readonly Func<TSource, ValueTask<bool>> _predicate2;
  74. public CombinedAsyncPredicates2(Func<TSource, ValueTask<bool>> predicate1, Func<TSource, ValueTask<bool>> predicate2)
  75. {
  76. _predicate1 = predicate1;
  77. _predicate2 = predicate2;
  78. }
  79. public ICombinedAsyncPredicates<TSource> And(Func<TSource, ValueTask<bool>> predicate) =>
  80. new CombinedAsyncPredicates3<TSource>(
  81. _predicate1,
  82. _predicate2,
  83. predicate
  84. );
  85. public async ValueTask<bool> Invoke(TSource x) => await _predicate1(x).ConfigureAwait(false) && await _predicate2(x).ConfigureAwait(false);
  86. }
  87. private sealed class CombinedAsyncPredicates3<TSource> : ICombinedAsyncPredicates<TSource>
  88. {
  89. private readonly Func<TSource, ValueTask<bool>> _predicate1;
  90. private readonly Func<TSource, ValueTask<bool>> _predicate2;
  91. private readonly Func<TSource, ValueTask<bool>> _predicate3;
  92. public CombinedAsyncPredicates3(Func<TSource, ValueTask<bool>> predicate1, Func<TSource, ValueTask<bool>> predicate2, Func<TSource, ValueTask<bool>> predicate3)
  93. {
  94. _predicate1 = predicate1;
  95. _predicate2 = predicate2;
  96. _predicate3 = predicate3;
  97. }
  98. public ICombinedAsyncPredicates<TSource> And(Func<TSource, ValueTask<bool>> predicate) =>
  99. new CombinedAsyncPredicates4<TSource>(
  100. _predicate1,
  101. _predicate2,
  102. _predicate3,
  103. predicate
  104. );
  105. public async ValueTask<bool> Invoke(TSource x) => await _predicate1(x).ConfigureAwait(false) && await _predicate2(x).ConfigureAwait(false) && await _predicate3(x).ConfigureAwait(false);
  106. }
  107. private sealed class CombinedAsyncPredicates4<TSource> : ICombinedAsyncPredicates<TSource>
  108. {
  109. private readonly Func<TSource, ValueTask<bool>> _predicate1;
  110. private readonly Func<TSource, ValueTask<bool>> _predicate2;
  111. private readonly Func<TSource, ValueTask<bool>> _predicate3;
  112. private readonly Func<TSource, ValueTask<bool>> _predicate4;
  113. public CombinedAsyncPredicates4(Func<TSource, ValueTask<bool>> predicate1, Func<TSource, ValueTask<bool>> predicate2, Func<TSource, ValueTask<bool>> predicate3, Func<TSource, ValueTask<bool>> predicate4)
  114. {
  115. _predicate1 = predicate1;
  116. _predicate2 = predicate2;
  117. _predicate3 = predicate3;
  118. _predicate4 = predicate4;
  119. }
  120. public ICombinedAsyncPredicates<TSource> And(Func<TSource, ValueTask<bool>> predicate) =>
  121. new CombinedAsyncPredicatesN<TSource>(
  122. _predicate1,
  123. _predicate2,
  124. _predicate3,
  125. _predicate4,
  126. predicate
  127. );
  128. public async ValueTask<bool> Invoke(TSource x) => await _predicate1(x).ConfigureAwait(false) && await _predicate2(x).ConfigureAwait(false) && await _predicate3(x).ConfigureAwait(false) && await _predicate4(x).ConfigureAwait(false);
  129. }
  130. #if !NO_DEEP_CANCELLATION
  131. private sealed class CombinedAsyncPredicatesWithCancellation2<TSource> : ICombinedAsyncPredicatesWithCancellation<TSource>
  132. {
  133. private readonly Func<TSource, CancellationToken, ValueTask<bool>> _predicate1;
  134. private readonly Func<TSource, CancellationToken, ValueTask<bool>> _predicate2;
  135. public CombinedAsyncPredicatesWithCancellation2(Func<TSource, CancellationToken, ValueTask<bool>> predicate1, Func<TSource, CancellationToken, ValueTask<bool>> predicate2)
  136. {
  137. _predicate1 = predicate1;
  138. _predicate2 = predicate2;
  139. }
  140. public ICombinedAsyncPredicatesWithCancellation<TSource> And(Func<TSource, CancellationToken, ValueTask<bool>> predicate) =>
  141. new CombinedAsyncPredicatesWithCancellation3<TSource>(
  142. _predicate1,
  143. _predicate2,
  144. predicate
  145. );
  146. public async ValueTask<bool> Invoke(TSource x, CancellationToken ct) => await _predicate1(x, ct).ConfigureAwait(false) && await _predicate2(x, ct).ConfigureAwait(false);
  147. }
  148. private sealed class CombinedAsyncPredicatesWithCancellation3<TSource> : ICombinedAsyncPredicatesWithCancellation<TSource>
  149. {
  150. private readonly Func<TSource, CancellationToken, ValueTask<bool>> _predicate1;
  151. private readonly Func<TSource, CancellationToken, ValueTask<bool>> _predicate2;
  152. private readonly Func<TSource, CancellationToken, ValueTask<bool>> _predicate3;
  153. public CombinedAsyncPredicatesWithCancellation3(Func<TSource, CancellationToken, ValueTask<bool>> predicate1, Func<TSource, CancellationToken, ValueTask<bool>> predicate2, Func<TSource, CancellationToken, ValueTask<bool>> predicate3)
  154. {
  155. _predicate1 = predicate1;
  156. _predicate2 = predicate2;
  157. _predicate3 = predicate3;
  158. }
  159. public ICombinedAsyncPredicatesWithCancellation<TSource> And(Func<TSource, CancellationToken, ValueTask<bool>> predicate) =>
  160. new CombinedAsyncPredicatesWithCancellation4<TSource>(
  161. _predicate1,
  162. _predicate2,
  163. _predicate3,
  164. predicate
  165. );
  166. public async ValueTask<bool> Invoke(TSource x, CancellationToken ct) => await _predicate1(x, ct).ConfigureAwait(false) && await _predicate2(x, ct).ConfigureAwait(false) && await _predicate3(x, ct).ConfigureAwait(false);
  167. }
  168. private sealed class CombinedAsyncPredicatesWithCancellation4<TSource> : ICombinedAsyncPredicatesWithCancellation<TSource>
  169. {
  170. private readonly Func<TSource, CancellationToken, ValueTask<bool>> _predicate1;
  171. private readonly Func<TSource, CancellationToken, ValueTask<bool>> _predicate2;
  172. private readonly Func<TSource, CancellationToken, ValueTask<bool>> _predicate3;
  173. private readonly Func<TSource, CancellationToken, ValueTask<bool>> _predicate4;
  174. public CombinedAsyncPredicatesWithCancellation4(Func<TSource, CancellationToken, ValueTask<bool>> predicate1, Func<TSource, CancellationToken, ValueTask<bool>> predicate2, Func<TSource, CancellationToken, ValueTask<bool>> predicate3, Func<TSource, CancellationToken, ValueTask<bool>> predicate4)
  175. {
  176. _predicate1 = predicate1;
  177. _predicate2 = predicate2;
  178. _predicate3 = predicate3;
  179. _predicate4 = predicate4;
  180. }
  181. public ICombinedAsyncPredicatesWithCancellation<TSource> And(Func<TSource, CancellationToken, ValueTask<bool>> predicate) =>
  182. new CombinedAsyncPredicatesWithCancellationN<TSource>(
  183. _predicate1,
  184. _predicate2,
  185. _predicate3,
  186. _predicate4,
  187. predicate
  188. );
  189. public async ValueTask<bool> Invoke(TSource x, CancellationToken ct) => await _predicate1(x, ct).ConfigureAwait(false) && await _predicate2(x, ct).ConfigureAwait(false) && await _predicate3(x, ct).ConfigureAwait(false) && await _predicate4(x, ct).ConfigureAwait(false);
  190. }
  191. #endif
  192. }
  193. }