1 // Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information. 2 3 namespace System.Reactive.Joins 4 { 5 /// <summary> 6 /// Abstract base class for join patterns. 7 /// </summary> 8 public abstract class Pattern 9 { Pattern()10 internal Pattern() 11 { 12 } 13 } 14 15 /* The following code is generated by a tool checked in to $/.../Source/Tools/CodeGenerators. */ 16 17 #region Joins auto-generated code (8/4/2012 1:00:26 AM) 18 19 /// <summary> 20 /// Represents a join pattern over one observable sequence. 21 /// </summary> 22 /// <typeparam name="TSource1">The type of the elements in the first source sequence.</typeparam> 23 public class Pattern<TSource1> : Pattern 24 { Pattern(IObservable<TSource1> first)25 internal Pattern(IObservable<TSource1> first) 26 { 27 First = first; 28 } 29 30 internal IObservable<TSource1> First { get; private set; } 31 32 /// <summary> 33 /// Matches when all observable sequences have an available element and projects the elements by invoking the selector function. 34 /// </summary> 35 /// <typeparam name="TResult">The type of the elements in the result sequence, returned by the selector function.</typeparam> 36 /// <param name="selector">Selector that will be invoked for elements in the source sequences.</param> 37 /// <returns>Plan that produces the projected results, to be fed (with other plans) to the When operator.</returns> 38 /// <exception cref="ArgumentNullException"><paramref name="selector"/> is null.</exception> Then(Func<TSource1, TResult> selector)39 public Plan<TResult> Then<TResult>(Func<TSource1, TResult> selector) 40 { 41 if (selector == null) 42 throw new ArgumentNullException("selector"); 43 44 return new Plan<TSource1, TResult>(this, selector); 45 } 46 47 } 48 49 /// <summary> 50 /// Represents a join pattern over two observable sequences. 51 /// </summary> 52 /// <typeparam name="TSource1">The type of the elements in the first source sequence.</typeparam> 53 /// <typeparam name="TSource2">The type of the elements in the second source sequence.</typeparam> 54 public class Pattern<TSource1, TSource2> : Pattern 55 { Pattern(IObservable<TSource1> first, IObservable<TSource2> second)56 internal Pattern(IObservable<TSource1> first, IObservable<TSource2> second) 57 { 58 First = first; 59 Second = second; 60 } 61 62 internal IObservable<TSource1> First { get; private set; } 63 internal IObservable<TSource2> Second { get; private set; } 64 65 /// <summary> 66 /// Creates a pattern that matches when all three observable sequences have an available element. 67 /// </summary> 68 /// <typeparam name="TSource3">The type of the elements in the third observable sequence.</typeparam> 69 /// <param name="other">Observable sequence to match with the two previous sequences.</param> 70 /// <returns>Pattern object that matches when all observable sequences have an available element.</returns> 71 /// <exception cref="ArgumentNullException"><paramref name="other"/> is null.</exception> And(IObservable<TSource3> other)72 public Pattern<TSource1, TSource2, TSource3> And<TSource3>(IObservable<TSource3> other) 73 { 74 if (other == null) 75 throw new ArgumentNullException("other"); 76 77 return new Pattern<TSource1, TSource2, TSource3>(First, Second, other); 78 } 79 80 /// <summary> 81 /// Matches when all observable sequences have an available element and projects the elements by invoking the selector function. 82 /// </summary> 83 /// <typeparam name="TResult">The type of the elements in the result sequence, returned by the selector function.</typeparam> 84 /// <param name="selector">Selector that will be invoked for elements in the source sequences.</param> 85 /// <returns>Plan that produces the projected results, to be fed (with other plans) to the When operator.</returns> 86 /// <exception cref="ArgumentNullException"><paramref name="selector"/> is null.</exception> Then(Func<TSource1, TSource2, TResult> selector)87 public Plan<TResult> Then<TResult>(Func<TSource1, TSource2, TResult> selector) 88 { 89 if (selector == null) 90 throw new ArgumentNullException("selector"); 91 92 return new Plan<TSource1, TSource2, TResult>(this, selector); 93 } 94 95 } 96 97 /// <summary> 98 /// Represents a join pattern over three observable sequences. 99 /// </summary> 100 /// <typeparam name="TSource1">The type of the elements in the first source sequence.</typeparam> 101 /// <typeparam name="TSource2">The type of the elements in the second source sequence.</typeparam> 102 /// <typeparam name="TSource3">The type of the elements in the third source sequence.</typeparam> 103 public class Pattern<TSource1, TSource2, TSource3> : Pattern 104 { Pattern(IObservable<TSource1> first, IObservable<TSource2> second, IObservable<TSource3> third)105 internal Pattern(IObservable<TSource1> first, IObservable<TSource2> second, IObservable<TSource3> third) 106 { 107 First = first; 108 Second = second; 109 Third = third; 110 } 111 112 internal IObservable<TSource1> First { get; private set; } 113 internal IObservable<TSource2> Second { get; private set; } 114 internal IObservable<TSource3> Third { get; private set; } 115 116 /// <summary> 117 /// Creates a pattern that matches when all four observable sequences have an available element. 118 /// </summary> 119 /// <typeparam name="TSource4">The type of the elements in the fourth observable sequence.</typeparam> 120 /// <param name="other">Observable sequence to match with the three previous sequences.</param> 121 /// <returns>Pattern object that matches when all observable sequences have an available element.</returns> 122 /// <exception cref="ArgumentNullException"><paramref name="other"/> is null.</exception> And(IObservable<TSource4> other)123 public Pattern<TSource1, TSource2, TSource3, TSource4> And<TSource4>(IObservable<TSource4> other) 124 { 125 if (other == null) 126 throw new ArgumentNullException("other"); 127 128 return new Pattern<TSource1, TSource2, TSource3, TSource4>(First, Second, Third, other); 129 } 130 131 /// <summary> 132 /// Matches when all observable sequences have an available element and projects the elements by invoking the selector function. 133 /// </summary> 134 /// <typeparam name="TResult">The type of the elements in the result sequence, returned by the selector function.</typeparam> 135 /// <param name="selector">Selector that will be invoked for elements in the source sequences.</param> 136 /// <returns>Plan that produces the projected results, to be fed (with other plans) to the When operator.</returns> 137 /// <exception cref="ArgumentNullException"><paramref name="selector"/> is null.</exception> Then(Func<TSource1, TSource2, TSource3, TResult> selector)138 public Plan<TResult> Then<TResult>(Func<TSource1, TSource2, TSource3, TResult> selector) 139 { 140 if (selector == null) 141 throw new ArgumentNullException("selector"); 142 143 return new Plan<TSource1, TSource2, TSource3, TResult>(this, selector); 144 } 145 146 } 147 148 /// <summary> 149 /// Represents a join pattern over four observable sequences. 150 /// </summary> 151 /// <typeparam name="TSource1">The type of the elements in the first source sequence.</typeparam> 152 /// <typeparam name="TSource2">The type of the elements in the second source sequence.</typeparam> 153 /// <typeparam name="TSource3">The type of the elements in the third source sequence.</typeparam> 154 /// <typeparam name="TSource4">The type of the elements in the fourth source sequence.</typeparam> 155 public class Pattern<TSource1, TSource2, TSource3, TSource4> : Pattern 156 { Pattern(IObservable<TSource1> first, IObservable<TSource2> second, IObservable<TSource3> third, IObservable<TSource4> fourth)157 internal Pattern(IObservable<TSource1> first, IObservable<TSource2> second, IObservable<TSource3> third, IObservable<TSource4> fourth) 158 { 159 First = first; 160 Second = second; 161 Third = third; 162 Fourth = fourth; 163 } 164 165 internal IObservable<TSource1> First { get; private set; } 166 internal IObservable<TSource2> Second { get; private set; } 167 internal IObservable<TSource3> Third { get; private set; } 168 internal IObservable<TSource4> Fourth { get; private set; } 169 170 #if !NO_LARGEARITY 171 /// <summary> 172 /// Creates a pattern that matches when all five observable sequences have an available element. 173 /// </summary> 174 /// <typeparam name="TSource5">The type of the elements in the fifth observable sequence.</typeparam> 175 /// <param name="other">Observable sequence to match with the four previous sequences.</param> 176 /// <returns>Pattern object that matches when all observable sequences have an available element.</returns> 177 /// <exception cref="ArgumentNullException"><paramref name="other"/> is null.</exception> And(IObservable<TSource5> other)178 public Pattern<TSource1, TSource2, TSource3, TSource4, TSource5> And<TSource5>(IObservable<TSource5> other) 179 { 180 if (other == null) 181 throw new ArgumentNullException("other"); 182 183 return new Pattern<TSource1, TSource2, TSource3, TSource4, TSource5>(First, Second, Third, Fourth, other); 184 } 185 #endif 186 187 /// <summary> 188 /// Matches when all observable sequences have an available element and projects the elements by invoking the selector function. 189 /// </summary> 190 /// <typeparam name="TResult">The type of the elements in the result sequence, returned by the selector function.</typeparam> 191 /// <param name="selector">Selector that will be invoked for elements in the source sequences.</param> 192 /// <returns>Plan that produces the projected results, to be fed (with other plans) to the When operator.</returns> 193 /// <exception cref="ArgumentNullException"><paramref name="selector"/> is null.</exception> Then(Func<TSource1, TSource2, TSource3, TSource4, TResult> selector)194 public Plan<TResult> Then<TResult>(Func<TSource1, TSource2, TSource3, TSource4, TResult> selector) 195 { 196 if (selector == null) 197 throw new ArgumentNullException("selector"); 198 199 return new Plan<TSource1, TSource2, TSource3, TSource4, TResult>(this, selector); 200 } 201 202 } 203 204 #if !NO_LARGEARITY 205 /// <summary> 206 /// Represents a join pattern over five observable sequences. 207 /// </summary> 208 /// <typeparam name="TSource1">The type of the elements in the first source sequence.</typeparam> 209 /// <typeparam name="TSource2">The type of the elements in the second source sequence.</typeparam> 210 /// <typeparam name="TSource3">The type of the elements in the third source sequence.</typeparam> 211 /// <typeparam name="TSource4">The type of the elements in the fourth source sequence.</typeparam> 212 /// <typeparam name="TSource5">The type of the elements in the fifth source sequence.</typeparam> 213 public class Pattern<TSource1, TSource2, TSource3, TSource4, TSource5> : Pattern 214 { Pattern(IObservable<TSource1> first, IObservable<TSource2> second, IObservable<TSource3> third, IObservable<TSource4> fourth, IObservable<TSource5> fifth)215 internal Pattern(IObservable<TSource1> first, IObservable<TSource2> second, IObservable<TSource3> third, IObservable<TSource4> fourth, IObservable<TSource5> fifth) 216 { 217 First = first; 218 Second = second; 219 Third = third; 220 Fourth = fourth; 221 Fifth = fifth; 222 } 223 224 internal IObservable<TSource1> First { get; private set; } 225 internal IObservable<TSource2> Second { get; private set; } 226 internal IObservable<TSource3> Third { get; private set; } 227 internal IObservable<TSource4> Fourth { get; private set; } 228 internal IObservable<TSource5> Fifth { get; private set; } 229 230 /// <summary> 231 /// Creates a pattern that matches when all six observable sequences have an available element. 232 /// </summary> 233 /// <typeparam name="TSource6">The type of the elements in the sixth observable sequence.</typeparam> 234 /// <param name="other">Observable sequence to match with the five previous sequences.</param> 235 /// <returns>Pattern object that matches when all observable sequences have an available element.</returns> 236 /// <exception cref="ArgumentNullException"><paramref name="other"/> is null.</exception> And(IObservable<TSource6> other)237 public Pattern<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6> And<TSource6>(IObservable<TSource6> other) 238 { 239 if (other == null) 240 throw new ArgumentNullException("other"); 241 242 return new Pattern<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6>(First, Second, Third, Fourth, Fifth, other); 243 } 244 245 /// <summary> 246 /// Matches when all observable sequences have an available element and projects the elements by invoking the selector function. 247 /// </summary> 248 /// <typeparam name="TResult">The type of the elements in the result sequence, returned by the selector function.</typeparam> 249 /// <param name="selector">Selector that will be invoked for elements in the source sequences.</param> 250 /// <returns>Plan that produces the projected results, to be fed (with other plans) to the When operator.</returns> 251 /// <exception cref="ArgumentNullException"><paramref name="selector"/> is null.</exception> Then(Func<TSource1, TSource2, TSource3, TSource4, TSource5, TResult> selector)252 public Plan<TResult> Then<TResult>(Func<TSource1, TSource2, TSource3, TSource4, TSource5, TResult> selector) 253 { 254 if (selector == null) 255 throw new ArgumentNullException("selector"); 256 257 return new Plan<TSource1, TSource2, TSource3, TSource4, TSource5, TResult>(this, selector); 258 } 259 260 } 261 262 /// <summary> 263 /// Represents a join pattern over six observable sequences. 264 /// </summary> 265 /// <typeparam name="TSource1">The type of the elements in the first source sequence.</typeparam> 266 /// <typeparam name="TSource2">The type of the elements in the second source sequence.</typeparam> 267 /// <typeparam name="TSource3">The type of the elements in the third source sequence.</typeparam> 268 /// <typeparam name="TSource4">The type of the elements in the fourth source sequence.</typeparam> 269 /// <typeparam name="TSource5">The type of the elements in the fifth source sequence.</typeparam> 270 /// <typeparam name="TSource6">The type of the elements in the sixth source sequence.</typeparam> 271 public class Pattern<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6> : Pattern 272 { Pattern(IObservable<TSource1> first, IObservable<TSource2> second, IObservable<TSource3> third, IObservable<TSource4> fourth, IObservable<TSource5> fifth, IObservable<TSource6> sixth)273 internal Pattern(IObservable<TSource1> first, IObservable<TSource2> second, IObservable<TSource3> third, IObservable<TSource4> fourth, IObservable<TSource5> fifth, IObservable<TSource6> sixth) 274 { 275 First = first; 276 Second = second; 277 Third = third; 278 Fourth = fourth; 279 Fifth = fifth; 280 Sixth = sixth; 281 } 282 283 internal IObservable<TSource1> First { get; private set; } 284 internal IObservable<TSource2> Second { get; private set; } 285 internal IObservable<TSource3> Third { get; private set; } 286 internal IObservable<TSource4> Fourth { get; private set; } 287 internal IObservable<TSource5> Fifth { get; private set; } 288 internal IObservable<TSource6> Sixth { get; private set; } 289 290 /// <summary> 291 /// Creates a pattern that matches when all seven observable sequences have an available element. 292 /// </summary> 293 /// <typeparam name="TSource7">The type of the elements in the seventh observable sequence.</typeparam> 294 /// <param name="other">Observable sequence to match with the six previous sequences.</param> 295 /// <returns>Pattern object that matches when all observable sequences have an available element.</returns> 296 /// <exception cref="ArgumentNullException"><paramref name="other"/> is null.</exception> And(IObservable<TSource7> other)297 public Pattern<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7> And<TSource7>(IObservable<TSource7> other) 298 { 299 if (other == null) 300 throw new ArgumentNullException("other"); 301 302 return new Pattern<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7>(First, Second, Third, Fourth, Fifth, Sixth, other); 303 } 304 305 /// <summary> 306 /// Matches when all observable sequences have an available element and projects the elements by invoking the selector function. 307 /// </summary> 308 /// <typeparam name="TResult">The type of the elements in the result sequence, returned by the selector function.</typeparam> 309 /// <param name="selector">Selector that will be invoked for elements in the source sequences.</param> 310 /// <returns>Plan that produces the projected results, to be fed (with other plans) to the When operator.</returns> 311 /// <exception cref="ArgumentNullException"><paramref name="selector"/> is null.</exception> Then(Func<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TResult> selector)312 public Plan<TResult> Then<TResult>(Func<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TResult> selector) 313 { 314 if (selector == null) 315 throw new ArgumentNullException("selector"); 316 317 return new Plan<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TResult>(this, selector); 318 } 319 320 } 321 322 /// <summary> 323 /// Represents a join pattern over seven observable sequences. 324 /// </summary> 325 /// <typeparam name="TSource1">The type of the elements in the first source sequence.</typeparam> 326 /// <typeparam name="TSource2">The type of the elements in the second source sequence.</typeparam> 327 /// <typeparam name="TSource3">The type of the elements in the third source sequence.</typeparam> 328 /// <typeparam name="TSource4">The type of the elements in the fourth source sequence.</typeparam> 329 /// <typeparam name="TSource5">The type of the elements in the fifth source sequence.</typeparam> 330 /// <typeparam name="TSource6">The type of the elements in the sixth source sequence.</typeparam> 331 /// <typeparam name="TSource7">The type of the elements in the seventh source sequence.</typeparam> 332 public class Pattern<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7> : Pattern 333 { Pattern(IObservable<TSource1> first, IObservable<TSource2> second, IObservable<TSource3> third, IObservable<TSource4> fourth, IObservable<TSource5> fifth, IObservable<TSource6> sixth, IObservable<TSource7> seventh)334 internal Pattern(IObservable<TSource1> first, IObservable<TSource2> second, IObservable<TSource3> third, IObservable<TSource4> fourth, IObservable<TSource5> fifth, IObservable<TSource6> sixth, IObservable<TSource7> seventh) 335 { 336 First = first; 337 Second = second; 338 Third = third; 339 Fourth = fourth; 340 Fifth = fifth; 341 Sixth = sixth; 342 Seventh = seventh; 343 } 344 345 internal IObservable<TSource1> First { get; private set; } 346 internal IObservable<TSource2> Second { get; private set; } 347 internal IObservable<TSource3> Third { get; private set; } 348 internal IObservable<TSource4> Fourth { get; private set; } 349 internal IObservable<TSource5> Fifth { get; private set; } 350 internal IObservable<TSource6> Sixth { get; private set; } 351 internal IObservable<TSource7> Seventh { get; private set; } 352 353 /// <summary> 354 /// Creates a pattern that matches when all eight observable sequences have an available element. 355 /// </summary> 356 /// <typeparam name="TSource8">The type of the elements in the eighth observable sequence.</typeparam> 357 /// <param name="other">Observable sequence to match with the seven previous sequences.</param> 358 /// <returns>Pattern object that matches when all observable sequences have an available element.</returns> 359 /// <exception cref="ArgumentNullException"><paramref name="other"/> is null.</exception> And(IObservable<TSource8> other)360 public Pattern<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8> And<TSource8>(IObservable<TSource8> other) 361 { 362 if (other == null) 363 throw new ArgumentNullException("other"); 364 365 return new Pattern<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8>(First, Second, Third, Fourth, Fifth, Sixth, Seventh, other); 366 } 367 368 /// <summary> 369 /// Matches when all observable sequences have an available element and projects the elements by invoking the selector function. 370 /// </summary> 371 /// <typeparam name="TResult">The type of the elements in the result sequence, returned by the selector function.</typeparam> 372 /// <param name="selector">Selector that will be invoked for elements in the source sequences.</param> 373 /// <returns>Plan that produces the projected results, to be fed (with other plans) to the When operator.</returns> 374 /// <exception cref="ArgumentNullException"><paramref name="selector"/> is null.</exception> Then(Func<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TResult> selector)375 public Plan<TResult> Then<TResult>(Func<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TResult> selector) 376 { 377 if (selector == null) 378 throw new ArgumentNullException("selector"); 379 380 return new Plan<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TResult>(this, selector); 381 } 382 383 } 384 385 /// <summary> 386 /// Represents a join pattern over eight observable sequences. 387 /// </summary> 388 /// <typeparam name="TSource1">The type of the elements in the first source sequence.</typeparam> 389 /// <typeparam name="TSource2">The type of the elements in the second source sequence.</typeparam> 390 /// <typeparam name="TSource3">The type of the elements in the third source sequence.</typeparam> 391 /// <typeparam name="TSource4">The type of the elements in the fourth source sequence.</typeparam> 392 /// <typeparam name="TSource5">The type of the elements in the fifth source sequence.</typeparam> 393 /// <typeparam name="TSource6">The type of the elements in the sixth source sequence.</typeparam> 394 /// <typeparam name="TSource7">The type of the elements in the seventh source sequence.</typeparam> 395 /// <typeparam name="TSource8">The type of the elements in the eighth source sequence.</typeparam> 396 public class Pattern<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8> : Pattern 397 { Pattern(IObservable<TSource1> first, IObservable<TSource2> second, IObservable<TSource3> third, IObservable<TSource4> fourth, IObservable<TSource5> fifth, IObservable<TSource6> sixth, IObservable<TSource7> seventh, IObservable<TSource8> eighth)398 internal Pattern(IObservable<TSource1> first, IObservable<TSource2> second, IObservable<TSource3> third, IObservable<TSource4> fourth, IObservable<TSource5> fifth, IObservable<TSource6> sixth, IObservable<TSource7> seventh, IObservable<TSource8> eighth) 399 { 400 First = first; 401 Second = second; 402 Third = third; 403 Fourth = fourth; 404 Fifth = fifth; 405 Sixth = sixth; 406 Seventh = seventh; 407 Eighth = eighth; 408 } 409 410 internal IObservable<TSource1> First { get; private set; } 411 internal IObservable<TSource2> Second { get; private set; } 412 internal IObservable<TSource3> Third { get; private set; } 413 internal IObservable<TSource4> Fourth { get; private set; } 414 internal IObservable<TSource5> Fifth { get; private set; } 415 internal IObservable<TSource6> Sixth { get; private set; } 416 internal IObservable<TSource7> Seventh { get; private set; } 417 internal IObservable<TSource8> Eighth { get; private set; } 418 419 /// <summary> 420 /// Creates a pattern that matches when all nine observable sequences have an available element. 421 /// </summary> 422 /// <typeparam name="TSource9">The type of the elements in the ninth observable sequence.</typeparam> 423 /// <param name="other">Observable sequence to match with the eight previous sequences.</param> 424 /// <returns>Pattern object that matches when all observable sequences have an available element.</returns> 425 /// <exception cref="ArgumentNullException"><paramref name="other"/> is null.</exception> And(IObservable<TSource9> other)426 public Pattern<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8, TSource9> And<TSource9>(IObservable<TSource9> other) 427 { 428 if (other == null) 429 throw new ArgumentNullException("other"); 430 431 return new Pattern<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8, TSource9>(First, Second, Third, Fourth, Fifth, Sixth, Seventh, Eighth, other); 432 } 433 434 /// <summary> 435 /// Matches when all observable sequences have an available element and projects the elements by invoking the selector function. 436 /// </summary> 437 /// <typeparam name="TResult">The type of the elements in the result sequence, returned by the selector function.</typeparam> 438 /// <param name="selector">Selector that will be invoked for elements in the source sequences.</param> 439 /// <returns>Plan that produces the projected results, to be fed (with other plans) to the When operator.</returns> 440 /// <exception cref="ArgumentNullException"><paramref name="selector"/> is null.</exception> Then(Func<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8, TResult> selector)441 public Plan<TResult> Then<TResult>(Func<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8, TResult> selector) 442 { 443 if (selector == null) 444 throw new ArgumentNullException("selector"); 445 446 return new Plan<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8, TResult>(this, selector); 447 } 448 449 } 450 451 /// <summary> 452 /// Represents a join pattern over nine observable sequences. 453 /// </summary> 454 /// <typeparam name="TSource1">The type of the elements in the first source sequence.</typeparam> 455 /// <typeparam name="TSource2">The type of the elements in the second source sequence.</typeparam> 456 /// <typeparam name="TSource3">The type of the elements in the third source sequence.</typeparam> 457 /// <typeparam name="TSource4">The type of the elements in the fourth source sequence.</typeparam> 458 /// <typeparam name="TSource5">The type of the elements in the fifth source sequence.</typeparam> 459 /// <typeparam name="TSource6">The type of the elements in the sixth source sequence.</typeparam> 460 /// <typeparam name="TSource7">The type of the elements in the seventh source sequence.</typeparam> 461 /// <typeparam name="TSource8">The type of the elements in the eighth source sequence.</typeparam> 462 /// <typeparam name="TSource9">The type of the elements in the ninth source sequence.</typeparam> 463 public class Pattern<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8, TSource9> : Pattern 464 { Pattern(IObservable<TSource1> first, IObservable<TSource2> second, IObservable<TSource3> third, IObservable<TSource4> fourth, IObservable<TSource5> fifth, IObservable<TSource6> sixth, IObservable<TSource7> seventh, IObservable<TSource8> eighth, IObservable<TSource9> ninth)465 internal Pattern(IObservable<TSource1> first, IObservable<TSource2> second, IObservable<TSource3> third, IObservable<TSource4> fourth, IObservable<TSource5> fifth, IObservable<TSource6> sixth, IObservable<TSource7> seventh, IObservable<TSource8> eighth, IObservable<TSource9> ninth) 466 { 467 First = first; 468 Second = second; 469 Third = third; 470 Fourth = fourth; 471 Fifth = fifth; 472 Sixth = sixth; 473 Seventh = seventh; 474 Eighth = eighth; 475 Ninth = ninth; 476 } 477 478 internal IObservable<TSource1> First { get; private set; } 479 internal IObservable<TSource2> Second { get; private set; } 480 internal IObservable<TSource3> Third { get; private set; } 481 internal IObservable<TSource4> Fourth { get; private set; } 482 internal IObservable<TSource5> Fifth { get; private set; } 483 internal IObservable<TSource6> Sixth { get; private set; } 484 internal IObservable<TSource7> Seventh { get; private set; } 485 internal IObservable<TSource8> Eighth { get; private set; } 486 internal IObservable<TSource9> Ninth { get; private set; } 487 488 /// <summary> 489 /// Creates a pattern that matches when all ten observable sequences have an available element. 490 /// </summary> 491 /// <typeparam name="TSource10">The type of the elements in the tenth observable sequence.</typeparam> 492 /// <param name="other">Observable sequence to match with the nine previous sequences.</param> 493 /// <returns>Pattern object that matches when all observable sequences have an available element.</returns> 494 /// <exception cref="ArgumentNullException"><paramref name="other"/> is null.</exception> And(IObservable<TSource10> other)495 public Pattern<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8, TSource9, TSource10> And<TSource10>(IObservable<TSource10> other) 496 { 497 if (other == null) 498 throw new ArgumentNullException("other"); 499 500 return new Pattern<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8, TSource9, TSource10>(First, Second, Third, Fourth, Fifth, Sixth, Seventh, Eighth, Ninth, other); 501 } 502 503 /// <summary> 504 /// Matches when all observable sequences have an available element and projects the elements by invoking the selector function. 505 /// </summary> 506 /// <typeparam name="TResult">The type of the elements in the result sequence, returned by the selector function.</typeparam> 507 /// <param name="selector">Selector that will be invoked for elements in the source sequences.</param> 508 /// <returns>Plan that produces the projected results, to be fed (with other plans) to the When operator.</returns> 509 /// <exception cref="ArgumentNullException"><paramref name="selector"/> is null.</exception> Then(Func<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8, TSource9, TResult> selector)510 public Plan<TResult> Then<TResult>(Func<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8, TSource9, TResult> selector) 511 { 512 if (selector == null) 513 throw new ArgumentNullException("selector"); 514 515 return new Plan<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8, TSource9, TResult>(this, selector); 516 } 517 518 } 519 520 /// <summary> 521 /// Represents a join pattern over ten observable sequences. 522 /// </summary> 523 /// <typeparam name="TSource1">The type of the elements in the first source sequence.</typeparam> 524 /// <typeparam name="TSource2">The type of the elements in the second source sequence.</typeparam> 525 /// <typeparam name="TSource3">The type of the elements in the third source sequence.</typeparam> 526 /// <typeparam name="TSource4">The type of the elements in the fourth source sequence.</typeparam> 527 /// <typeparam name="TSource5">The type of the elements in the fifth source sequence.</typeparam> 528 /// <typeparam name="TSource6">The type of the elements in the sixth source sequence.</typeparam> 529 /// <typeparam name="TSource7">The type of the elements in the seventh source sequence.</typeparam> 530 /// <typeparam name="TSource8">The type of the elements in the eighth source sequence.</typeparam> 531 /// <typeparam name="TSource9">The type of the elements in the ninth source sequence.</typeparam> 532 /// <typeparam name="TSource10">The type of the elements in the tenth source sequence.</typeparam> 533 public class Pattern<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8, TSource9, TSource10> : Pattern 534 { Pattern(IObservable<TSource1> first, IObservable<TSource2> second, IObservable<TSource3> third, IObservable<TSource4> fourth, IObservable<TSource5> fifth, IObservable<TSource6> sixth, IObservable<TSource7> seventh, IObservable<TSource8> eighth, IObservable<TSource9> ninth, IObservable<TSource10> tenth)535 internal Pattern(IObservable<TSource1> first, IObservable<TSource2> second, IObservable<TSource3> third, IObservable<TSource4> fourth, IObservable<TSource5> fifth, IObservable<TSource6> sixth, IObservable<TSource7> seventh, IObservable<TSource8> eighth, IObservable<TSource9> ninth, IObservable<TSource10> tenth) 536 { 537 First = first; 538 Second = second; 539 Third = third; 540 Fourth = fourth; 541 Fifth = fifth; 542 Sixth = sixth; 543 Seventh = seventh; 544 Eighth = eighth; 545 Ninth = ninth; 546 Tenth = tenth; 547 } 548 549 internal IObservable<TSource1> First { get; private set; } 550 internal IObservable<TSource2> Second { get; private set; } 551 internal IObservable<TSource3> Third { get; private set; } 552 internal IObservable<TSource4> Fourth { get; private set; } 553 internal IObservable<TSource5> Fifth { get; private set; } 554 internal IObservable<TSource6> Sixth { get; private set; } 555 internal IObservable<TSource7> Seventh { get; private set; } 556 internal IObservable<TSource8> Eighth { get; private set; } 557 internal IObservable<TSource9> Ninth { get; private set; } 558 internal IObservable<TSource10> Tenth { get; private set; } 559 560 /// <summary> 561 /// Creates a pattern that matches when all eleven observable sequences have an available element. 562 /// </summary> 563 /// <typeparam name="TSource11">The type of the elements in the eleventh observable sequence.</typeparam> 564 /// <param name="other">Observable sequence to match with the ten previous sequences.</param> 565 /// <returns>Pattern object that matches when all observable sequences have an available element.</returns> 566 /// <exception cref="ArgumentNullException"><paramref name="other"/> is null.</exception> And(IObservable<TSource11> other)567 public Pattern<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8, TSource9, TSource10, TSource11> And<TSource11>(IObservable<TSource11> other) 568 { 569 if (other == null) 570 throw new ArgumentNullException("other"); 571 572 return new Pattern<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8, TSource9, TSource10, TSource11>(First, Second, Third, Fourth, Fifth, Sixth, Seventh, Eighth, Ninth, Tenth, other); 573 } 574 575 /// <summary> 576 /// Matches when all observable sequences have an available element and projects the elements by invoking the selector function. 577 /// </summary> 578 /// <typeparam name="TResult">The type of the elements in the result sequence, returned by the selector function.</typeparam> 579 /// <param name="selector">Selector that will be invoked for elements in the source sequences.</param> 580 /// <returns>Plan that produces the projected results, to be fed (with other plans) to the When operator.</returns> 581 /// <exception cref="ArgumentNullException"><paramref name="selector"/> is null.</exception> Then(Func<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8, TSource9, TSource10, TResult> selector)582 public Plan<TResult> Then<TResult>(Func<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8, TSource9, TSource10, TResult> selector) 583 { 584 if (selector == null) 585 throw new ArgumentNullException("selector"); 586 587 return new Plan<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8, TSource9, TSource10, TResult>(this, selector); 588 } 589 590 } 591 592 /// <summary> 593 /// Represents a join pattern over eleven observable sequences. 594 /// </summary> 595 /// <typeparam name="TSource1">The type of the elements in the first source sequence.</typeparam> 596 /// <typeparam name="TSource2">The type of the elements in the second source sequence.</typeparam> 597 /// <typeparam name="TSource3">The type of the elements in the third source sequence.</typeparam> 598 /// <typeparam name="TSource4">The type of the elements in the fourth source sequence.</typeparam> 599 /// <typeparam name="TSource5">The type of the elements in the fifth source sequence.</typeparam> 600 /// <typeparam name="TSource6">The type of the elements in the sixth source sequence.</typeparam> 601 /// <typeparam name="TSource7">The type of the elements in the seventh source sequence.</typeparam> 602 /// <typeparam name="TSource8">The type of the elements in the eighth source sequence.</typeparam> 603 /// <typeparam name="TSource9">The type of the elements in the ninth source sequence.</typeparam> 604 /// <typeparam name="TSource10">The type of the elements in the tenth source sequence.</typeparam> 605 /// <typeparam name="TSource11">The type of the elements in the eleventh source sequence.</typeparam> 606 public class Pattern<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8, TSource9, TSource10, TSource11> : Pattern 607 { Pattern(IObservable<TSource1> first, IObservable<TSource2> second, IObservable<TSource3> third, IObservable<TSource4> fourth, IObservable<TSource5> fifth, IObservable<TSource6> sixth, IObservable<TSource7> seventh, IObservable<TSource8> eighth, IObservable<TSource9> ninth, IObservable<TSource10> tenth, IObservable<TSource11> eleventh)608 internal Pattern(IObservable<TSource1> first, IObservable<TSource2> second, IObservable<TSource3> third, IObservable<TSource4> fourth, IObservable<TSource5> fifth, IObservable<TSource6> sixth, IObservable<TSource7> seventh, IObservable<TSource8> eighth, IObservable<TSource9> ninth, IObservable<TSource10> tenth, IObservable<TSource11> eleventh) 609 { 610 First = first; 611 Second = second; 612 Third = third; 613 Fourth = fourth; 614 Fifth = fifth; 615 Sixth = sixth; 616 Seventh = seventh; 617 Eighth = eighth; 618 Ninth = ninth; 619 Tenth = tenth; 620 Eleventh = eleventh; 621 } 622 623 internal IObservable<TSource1> First { get; private set; } 624 internal IObservable<TSource2> Second { get; private set; } 625 internal IObservable<TSource3> Third { get; private set; } 626 internal IObservable<TSource4> Fourth { get; private set; } 627 internal IObservable<TSource5> Fifth { get; private set; } 628 internal IObservable<TSource6> Sixth { get; private set; } 629 internal IObservable<TSource7> Seventh { get; private set; } 630 internal IObservable<TSource8> Eighth { get; private set; } 631 internal IObservable<TSource9> Ninth { get; private set; } 632 internal IObservable<TSource10> Tenth { get; private set; } 633 internal IObservable<TSource11> Eleventh { get; private set; } 634 635 /// <summary> 636 /// Creates a pattern that matches when all twelve observable sequences have an available element. 637 /// </summary> 638 /// <typeparam name="TSource12">The type of the elements in the twelfth observable sequence.</typeparam> 639 /// <param name="other">Observable sequence to match with the eleven previous sequences.</param> 640 /// <returns>Pattern object that matches when all observable sequences have an available element.</returns> 641 /// <exception cref="ArgumentNullException"><paramref name="other"/> is null.</exception> And(IObservable<TSource12> other)642 public Pattern<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8, TSource9, TSource10, TSource11, TSource12> And<TSource12>(IObservable<TSource12> other) 643 { 644 if (other == null) 645 throw new ArgumentNullException("other"); 646 647 return new Pattern<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8, TSource9, TSource10, TSource11, TSource12>(First, Second, Third, Fourth, Fifth, Sixth, Seventh, Eighth, Ninth, Tenth, Eleventh, other); 648 } 649 650 /// <summary> 651 /// Matches when all observable sequences have an available element and projects the elements by invoking the selector function. 652 /// </summary> 653 /// <typeparam name="TResult">The type of the elements in the result sequence, returned by the selector function.</typeparam> 654 /// <param name="selector">Selector that will be invoked for elements in the source sequences.</param> 655 /// <returns>Plan that produces the projected results, to be fed (with other plans) to the When operator.</returns> 656 /// <exception cref="ArgumentNullException"><paramref name="selector"/> is null.</exception> Then(Func<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8, TSource9, TSource10, TSource11, TResult> selector)657 public Plan<TResult> Then<TResult>(Func<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8, TSource9, TSource10, TSource11, TResult> selector) 658 { 659 if (selector == null) 660 throw new ArgumentNullException("selector"); 661 662 return new Plan<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8, TSource9, TSource10, TSource11, TResult>(this, selector); 663 } 664 665 } 666 667 /// <summary> 668 /// Represents a join pattern over twelve observable sequences. 669 /// </summary> 670 /// <typeparam name="TSource1">The type of the elements in the first source sequence.</typeparam> 671 /// <typeparam name="TSource2">The type of the elements in the second source sequence.</typeparam> 672 /// <typeparam name="TSource3">The type of the elements in the third source sequence.</typeparam> 673 /// <typeparam name="TSource4">The type of the elements in the fourth source sequence.</typeparam> 674 /// <typeparam name="TSource5">The type of the elements in the fifth source sequence.</typeparam> 675 /// <typeparam name="TSource6">The type of the elements in the sixth source sequence.</typeparam> 676 /// <typeparam name="TSource7">The type of the elements in the seventh source sequence.</typeparam> 677 /// <typeparam name="TSource8">The type of the elements in the eighth source sequence.</typeparam> 678 /// <typeparam name="TSource9">The type of the elements in the ninth source sequence.</typeparam> 679 /// <typeparam name="TSource10">The type of the elements in the tenth source sequence.</typeparam> 680 /// <typeparam name="TSource11">The type of the elements in the eleventh source sequence.</typeparam> 681 /// <typeparam name="TSource12">The type of the elements in the twelfth source sequence.</typeparam> 682 public class Pattern<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8, TSource9, TSource10, TSource11, TSource12> : Pattern 683 { Pattern(IObservable<TSource1> first, IObservable<TSource2> second, IObservable<TSource3> third, IObservable<TSource4> fourth, IObservable<TSource5> fifth, IObservable<TSource6> sixth, IObservable<TSource7> seventh, IObservable<TSource8> eighth, IObservable<TSource9> ninth, IObservable<TSource10> tenth, IObservable<TSource11> eleventh, IObservable<TSource12> twelfth)684 internal Pattern(IObservable<TSource1> first, IObservable<TSource2> second, IObservable<TSource3> third, IObservable<TSource4> fourth, IObservable<TSource5> fifth, IObservable<TSource6> sixth, IObservable<TSource7> seventh, IObservable<TSource8> eighth, IObservable<TSource9> ninth, IObservable<TSource10> tenth, IObservable<TSource11> eleventh, IObservable<TSource12> twelfth) 685 { 686 First = first; 687 Second = second; 688 Third = third; 689 Fourth = fourth; 690 Fifth = fifth; 691 Sixth = sixth; 692 Seventh = seventh; 693 Eighth = eighth; 694 Ninth = ninth; 695 Tenth = tenth; 696 Eleventh = eleventh; 697 Twelfth = twelfth; 698 } 699 700 internal IObservable<TSource1> First { get; private set; } 701 internal IObservable<TSource2> Second { get; private set; } 702 internal IObservable<TSource3> Third { get; private set; } 703 internal IObservable<TSource4> Fourth { get; private set; } 704 internal IObservable<TSource5> Fifth { get; private set; } 705 internal IObservable<TSource6> Sixth { get; private set; } 706 internal IObservable<TSource7> Seventh { get; private set; } 707 internal IObservable<TSource8> Eighth { get; private set; } 708 internal IObservable<TSource9> Ninth { get; private set; } 709 internal IObservable<TSource10> Tenth { get; private set; } 710 internal IObservable<TSource11> Eleventh { get; private set; } 711 internal IObservable<TSource12> Twelfth { get; private set; } 712 713 /// <summary> 714 /// Creates a pattern that matches when all thirteen observable sequences have an available element. 715 /// </summary> 716 /// <typeparam name="TSource13">The type of the elements in the thirteenth observable sequence.</typeparam> 717 /// <param name="other">Observable sequence to match with the twelve previous sequences.</param> 718 /// <returns>Pattern object that matches when all observable sequences have an available element.</returns> 719 /// <exception cref="ArgumentNullException"><paramref name="other"/> is null.</exception> And(IObservable<TSource13> other)720 public Pattern<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8, TSource9, TSource10, TSource11, TSource12, TSource13> And<TSource13>(IObservable<TSource13> other) 721 { 722 if (other == null) 723 throw new ArgumentNullException("other"); 724 725 return new Pattern<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8, TSource9, TSource10, TSource11, TSource12, TSource13>(First, Second, Third, Fourth, Fifth, Sixth, Seventh, Eighth, Ninth, Tenth, Eleventh, Twelfth, other); 726 } 727 728 /// <summary> 729 /// Matches when all observable sequences have an available element and projects the elements by invoking the selector function. 730 /// </summary> 731 /// <typeparam name="TResult">The type of the elements in the result sequence, returned by the selector function.</typeparam> 732 /// <param name="selector">Selector that will be invoked for elements in the source sequences.</param> 733 /// <returns>Plan that produces the projected results, to be fed (with other plans) to the When operator.</returns> 734 /// <exception cref="ArgumentNullException"><paramref name="selector"/> is null.</exception> Then(Func<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8, TSource9, TSource10, TSource11, TSource12, TResult> selector)735 public Plan<TResult> Then<TResult>(Func<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8, TSource9, TSource10, TSource11, TSource12, TResult> selector) 736 { 737 if (selector == null) 738 throw new ArgumentNullException("selector"); 739 740 return new Plan<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8, TSource9, TSource10, TSource11, TSource12, TResult>(this, selector); 741 } 742 743 } 744 745 /// <summary> 746 /// Represents a join pattern over thirteen observable sequences. 747 /// </summary> 748 /// <typeparam name="TSource1">The type of the elements in the first source sequence.</typeparam> 749 /// <typeparam name="TSource2">The type of the elements in the second source sequence.</typeparam> 750 /// <typeparam name="TSource3">The type of the elements in the third source sequence.</typeparam> 751 /// <typeparam name="TSource4">The type of the elements in the fourth source sequence.</typeparam> 752 /// <typeparam name="TSource5">The type of the elements in the fifth source sequence.</typeparam> 753 /// <typeparam name="TSource6">The type of the elements in the sixth source sequence.</typeparam> 754 /// <typeparam name="TSource7">The type of the elements in the seventh source sequence.</typeparam> 755 /// <typeparam name="TSource8">The type of the elements in the eighth source sequence.</typeparam> 756 /// <typeparam name="TSource9">The type of the elements in the ninth source sequence.</typeparam> 757 /// <typeparam name="TSource10">The type of the elements in the tenth source sequence.</typeparam> 758 /// <typeparam name="TSource11">The type of the elements in the eleventh source sequence.</typeparam> 759 /// <typeparam name="TSource12">The type of the elements in the twelfth source sequence.</typeparam> 760 /// <typeparam name="TSource13">The type of the elements in the thirteenth source sequence.</typeparam> 761 public class Pattern<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8, TSource9, TSource10, TSource11, TSource12, TSource13> : Pattern 762 { Pattern(IObservable<TSource1> first, IObservable<TSource2> second, IObservable<TSource3> third, IObservable<TSource4> fourth, IObservable<TSource5> fifth, IObservable<TSource6> sixth, IObservable<TSource7> seventh, IObservable<TSource8> eighth, IObservable<TSource9> ninth, IObservable<TSource10> tenth, IObservable<TSource11> eleventh, IObservable<TSource12> twelfth, IObservable<TSource13> thirteenth)763 internal Pattern(IObservable<TSource1> first, IObservable<TSource2> second, IObservable<TSource3> third, IObservable<TSource4> fourth, IObservable<TSource5> fifth, IObservable<TSource6> sixth, IObservable<TSource7> seventh, IObservable<TSource8> eighth, IObservable<TSource9> ninth, IObservable<TSource10> tenth, IObservable<TSource11> eleventh, IObservable<TSource12> twelfth, IObservable<TSource13> thirteenth) 764 { 765 First = first; 766 Second = second; 767 Third = third; 768 Fourth = fourth; 769 Fifth = fifth; 770 Sixth = sixth; 771 Seventh = seventh; 772 Eighth = eighth; 773 Ninth = ninth; 774 Tenth = tenth; 775 Eleventh = eleventh; 776 Twelfth = twelfth; 777 Thirteenth = thirteenth; 778 } 779 780 internal IObservable<TSource1> First { get; private set; } 781 internal IObservable<TSource2> Second { get; private set; } 782 internal IObservable<TSource3> Third { get; private set; } 783 internal IObservable<TSource4> Fourth { get; private set; } 784 internal IObservable<TSource5> Fifth { get; private set; } 785 internal IObservable<TSource6> Sixth { get; private set; } 786 internal IObservable<TSource7> Seventh { get; private set; } 787 internal IObservable<TSource8> Eighth { get; private set; } 788 internal IObservable<TSource9> Ninth { get; private set; } 789 internal IObservable<TSource10> Tenth { get; private set; } 790 internal IObservable<TSource11> Eleventh { get; private set; } 791 internal IObservable<TSource12> Twelfth { get; private set; } 792 internal IObservable<TSource13> Thirteenth { get; private set; } 793 794 /// <summary> 795 /// Creates a pattern that matches when all fourteen observable sequences have an available element. 796 /// </summary> 797 /// <typeparam name="TSource14">The type of the elements in the fourteenth observable sequence.</typeparam> 798 /// <param name="other">Observable sequence to match with the thirteen previous sequences.</param> 799 /// <returns>Pattern object that matches when all observable sequences have an available element.</returns> 800 /// <exception cref="ArgumentNullException"><paramref name="other"/> is null.</exception> And(IObservable<TSource14> other)801 public Pattern<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8, TSource9, TSource10, TSource11, TSource12, TSource13, TSource14> And<TSource14>(IObservable<TSource14> other) 802 { 803 if (other == null) 804 throw new ArgumentNullException("other"); 805 806 return new Pattern<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8, TSource9, TSource10, TSource11, TSource12, TSource13, TSource14>(First, Second, Third, Fourth, Fifth, Sixth, Seventh, Eighth, Ninth, Tenth, Eleventh, Twelfth, Thirteenth, other); 807 } 808 809 /// <summary> 810 /// Matches when all observable sequences have an available element and projects the elements by invoking the selector function. 811 /// </summary> 812 /// <typeparam name="TResult">The type of the elements in the result sequence, returned by the selector function.</typeparam> 813 /// <param name="selector">Selector that will be invoked for elements in the source sequences.</param> 814 /// <returns>Plan that produces the projected results, to be fed (with other plans) to the When operator.</returns> 815 /// <exception cref="ArgumentNullException"><paramref name="selector"/> is null.</exception> Then(Func<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8, TSource9, TSource10, TSource11, TSource12, TSource13, TResult> selector)816 public Plan<TResult> Then<TResult>(Func<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8, TSource9, TSource10, TSource11, TSource12, TSource13, TResult> selector) 817 { 818 if (selector == null) 819 throw new ArgumentNullException("selector"); 820 821 return new Plan<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8, TSource9, TSource10, TSource11, TSource12, TSource13, TResult>(this, selector); 822 } 823 824 } 825 826 /// <summary> 827 /// Represents a join pattern over fourteen observable sequences. 828 /// </summary> 829 /// <typeparam name="TSource1">The type of the elements in the first source sequence.</typeparam> 830 /// <typeparam name="TSource2">The type of the elements in the second source sequence.</typeparam> 831 /// <typeparam name="TSource3">The type of the elements in the third source sequence.</typeparam> 832 /// <typeparam name="TSource4">The type of the elements in the fourth source sequence.</typeparam> 833 /// <typeparam name="TSource5">The type of the elements in the fifth source sequence.</typeparam> 834 /// <typeparam name="TSource6">The type of the elements in the sixth source sequence.</typeparam> 835 /// <typeparam name="TSource7">The type of the elements in the seventh source sequence.</typeparam> 836 /// <typeparam name="TSource8">The type of the elements in the eighth source sequence.</typeparam> 837 /// <typeparam name="TSource9">The type of the elements in the ninth source sequence.</typeparam> 838 /// <typeparam name="TSource10">The type of the elements in the tenth source sequence.</typeparam> 839 /// <typeparam name="TSource11">The type of the elements in the eleventh source sequence.</typeparam> 840 /// <typeparam name="TSource12">The type of the elements in the twelfth source sequence.</typeparam> 841 /// <typeparam name="TSource13">The type of the elements in the thirteenth source sequence.</typeparam> 842 /// <typeparam name="TSource14">The type of the elements in the fourteenth source sequence.</typeparam> 843 public class Pattern<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8, TSource9, TSource10, TSource11, TSource12, TSource13, TSource14> : Pattern 844 { Pattern(IObservable<TSource1> first, IObservable<TSource2> second, IObservable<TSource3> third, IObservable<TSource4> fourth, IObservable<TSource5> fifth, IObservable<TSource6> sixth, IObservable<TSource7> seventh, IObservable<TSource8> eighth, IObservable<TSource9> ninth, IObservable<TSource10> tenth, IObservable<TSource11> eleventh, IObservable<TSource12> twelfth, IObservable<TSource13> thirteenth, IObservable<TSource14> fourteenth)845 internal Pattern(IObservable<TSource1> first, IObservable<TSource2> second, IObservable<TSource3> third, IObservable<TSource4> fourth, IObservable<TSource5> fifth, IObservable<TSource6> sixth, IObservable<TSource7> seventh, IObservable<TSource8> eighth, IObservable<TSource9> ninth, IObservable<TSource10> tenth, IObservable<TSource11> eleventh, IObservable<TSource12> twelfth, IObservable<TSource13> thirteenth, IObservable<TSource14> fourteenth) 846 { 847 First = first; 848 Second = second; 849 Third = third; 850 Fourth = fourth; 851 Fifth = fifth; 852 Sixth = sixth; 853 Seventh = seventh; 854 Eighth = eighth; 855 Ninth = ninth; 856 Tenth = tenth; 857 Eleventh = eleventh; 858 Twelfth = twelfth; 859 Thirteenth = thirteenth; 860 Fourteenth = fourteenth; 861 } 862 863 internal IObservable<TSource1> First { get; private set; } 864 internal IObservable<TSource2> Second { get; private set; } 865 internal IObservable<TSource3> Third { get; private set; } 866 internal IObservable<TSource4> Fourth { get; private set; } 867 internal IObservable<TSource5> Fifth { get; private set; } 868 internal IObservable<TSource6> Sixth { get; private set; } 869 internal IObservable<TSource7> Seventh { get; private set; } 870 internal IObservable<TSource8> Eighth { get; private set; } 871 internal IObservable<TSource9> Ninth { get; private set; } 872 internal IObservable<TSource10> Tenth { get; private set; } 873 internal IObservable<TSource11> Eleventh { get; private set; } 874 internal IObservable<TSource12> Twelfth { get; private set; } 875 internal IObservable<TSource13> Thirteenth { get; private set; } 876 internal IObservable<TSource14> Fourteenth { get; private set; } 877 878 /// <summary> 879 /// Creates a pattern that matches when all fifteen observable sequences have an available element. 880 /// </summary> 881 /// <typeparam name="TSource15">The type of the elements in the fifteenth observable sequence.</typeparam> 882 /// <param name="other">Observable sequence to match with the fourteen previous sequences.</param> 883 /// <returns>Pattern object that matches when all observable sequences have an available element.</returns> 884 /// <exception cref="ArgumentNullException"><paramref name="other"/> is null.</exception> And(IObservable<TSource15> other)885 public Pattern<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8, TSource9, TSource10, TSource11, TSource12, TSource13, TSource14, TSource15> And<TSource15>(IObservable<TSource15> other) 886 { 887 if (other == null) 888 throw new ArgumentNullException("other"); 889 890 return new Pattern<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8, TSource9, TSource10, TSource11, TSource12, TSource13, TSource14, TSource15>(First, Second, Third, Fourth, Fifth, Sixth, Seventh, Eighth, Ninth, Tenth, Eleventh, Twelfth, Thirteenth, Fourteenth, other); 891 } 892 893 /// <summary> 894 /// Matches when all observable sequences have an available element and projects the elements by invoking the selector function. 895 /// </summary> 896 /// <typeparam name="TResult">The type of the elements in the result sequence, returned by the selector function.</typeparam> 897 /// <param name="selector">Selector that will be invoked for elements in the source sequences.</param> 898 /// <returns>Plan that produces the projected results, to be fed (with other plans) to the When operator.</returns> 899 /// <exception cref="ArgumentNullException"><paramref name="selector"/> is null.</exception> Then(Func<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8, TSource9, TSource10, TSource11, TSource12, TSource13, TSource14, TResult> selector)900 public Plan<TResult> Then<TResult>(Func<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8, TSource9, TSource10, TSource11, TSource12, TSource13, TSource14, TResult> selector) 901 { 902 if (selector == null) 903 throw new ArgumentNullException("selector"); 904 905 return new Plan<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8, TSource9, TSource10, TSource11, TSource12, TSource13, TSource14, TResult>(this, selector); 906 } 907 908 } 909 910 /// <summary> 911 /// Represents a join pattern over fifteen observable sequences. 912 /// </summary> 913 /// <typeparam name="TSource1">The type of the elements in the first source sequence.</typeparam> 914 /// <typeparam name="TSource2">The type of the elements in the second source sequence.</typeparam> 915 /// <typeparam name="TSource3">The type of the elements in the third source sequence.</typeparam> 916 /// <typeparam name="TSource4">The type of the elements in the fourth source sequence.</typeparam> 917 /// <typeparam name="TSource5">The type of the elements in the fifth source sequence.</typeparam> 918 /// <typeparam name="TSource6">The type of the elements in the sixth source sequence.</typeparam> 919 /// <typeparam name="TSource7">The type of the elements in the seventh source sequence.</typeparam> 920 /// <typeparam name="TSource8">The type of the elements in the eighth source sequence.</typeparam> 921 /// <typeparam name="TSource9">The type of the elements in the ninth source sequence.</typeparam> 922 /// <typeparam name="TSource10">The type of the elements in the tenth source sequence.</typeparam> 923 /// <typeparam name="TSource11">The type of the elements in the eleventh source sequence.</typeparam> 924 /// <typeparam name="TSource12">The type of the elements in the twelfth source sequence.</typeparam> 925 /// <typeparam name="TSource13">The type of the elements in the thirteenth source sequence.</typeparam> 926 /// <typeparam name="TSource14">The type of the elements in the fourteenth source sequence.</typeparam> 927 /// <typeparam name="TSource15">The type of the elements in the fifteenth source sequence.</typeparam> 928 public class Pattern<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8, TSource9, TSource10, TSource11, TSource12, TSource13, TSource14, TSource15> : Pattern 929 { Pattern(IObservable<TSource1> first, IObservable<TSource2> second, IObservable<TSource3> third, IObservable<TSource4> fourth, IObservable<TSource5> fifth, IObservable<TSource6> sixth, IObservable<TSource7> seventh, IObservable<TSource8> eighth, IObservable<TSource9> ninth, IObservable<TSource10> tenth, IObservable<TSource11> eleventh, IObservable<TSource12> twelfth, IObservable<TSource13> thirteenth, IObservable<TSource14> fourteenth, IObservable<TSource15> fifteenth)930 internal Pattern(IObservable<TSource1> first, IObservable<TSource2> second, IObservable<TSource3> third, IObservable<TSource4> fourth, IObservable<TSource5> fifth, IObservable<TSource6> sixth, IObservable<TSource7> seventh, IObservable<TSource8> eighth, IObservable<TSource9> ninth, IObservable<TSource10> tenth, IObservable<TSource11> eleventh, IObservable<TSource12> twelfth, IObservable<TSource13> thirteenth, IObservable<TSource14> fourteenth, IObservable<TSource15> fifteenth) 931 { 932 First = first; 933 Second = second; 934 Third = third; 935 Fourth = fourth; 936 Fifth = fifth; 937 Sixth = sixth; 938 Seventh = seventh; 939 Eighth = eighth; 940 Ninth = ninth; 941 Tenth = tenth; 942 Eleventh = eleventh; 943 Twelfth = twelfth; 944 Thirteenth = thirteenth; 945 Fourteenth = fourteenth; 946 Fifteenth = fifteenth; 947 } 948 949 internal IObservable<TSource1> First { get; private set; } 950 internal IObservable<TSource2> Second { get; private set; } 951 internal IObservable<TSource3> Third { get; private set; } 952 internal IObservable<TSource4> Fourth { get; private set; } 953 internal IObservable<TSource5> Fifth { get; private set; } 954 internal IObservable<TSource6> Sixth { get; private set; } 955 internal IObservable<TSource7> Seventh { get; private set; } 956 internal IObservable<TSource8> Eighth { get; private set; } 957 internal IObservable<TSource9> Ninth { get; private set; } 958 internal IObservable<TSource10> Tenth { get; private set; } 959 internal IObservable<TSource11> Eleventh { get; private set; } 960 internal IObservable<TSource12> Twelfth { get; private set; } 961 internal IObservable<TSource13> Thirteenth { get; private set; } 962 internal IObservable<TSource14> Fourteenth { get; private set; } 963 internal IObservable<TSource15> Fifteenth { get; private set; } 964 965 /// <summary> 966 /// Creates a pattern that matches when all sixteen observable sequences have an available element. 967 /// </summary> 968 /// <typeparam name="TSource16">The type of the elements in the sixteenth observable sequence.</typeparam> 969 /// <param name="other">Observable sequence to match with the fifteen previous sequences.</param> 970 /// <returns>Pattern object that matches when all observable sequences have an available element.</returns> 971 /// <exception cref="ArgumentNullException"><paramref name="other"/> is null.</exception> And(IObservable<TSource16> other)972 public Pattern<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8, TSource9, TSource10, TSource11, TSource12, TSource13, TSource14, TSource15, TSource16> And<TSource16>(IObservable<TSource16> other) 973 { 974 if (other == null) 975 throw new ArgumentNullException("other"); 976 977 return new Pattern<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8, TSource9, TSource10, TSource11, TSource12, TSource13, TSource14, TSource15, TSource16>(First, Second, Third, Fourth, Fifth, Sixth, Seventh, Eighth, Ninth, Tenth, Eleventh, Twelfth, Thirteenth, Fourteenth, Fifteenth, other); 978 } 979 980 /// <summary> 981 /// Matches when all observable sequences have an available element and projects the elements by invoking the selector function. 982 /// </summary> 983 /// <typeparam name="TResult">The type of the elements in the result sequence, returned by the selector function.</typeparam> 984 /// <param name="selector">Selector that will be invoked for elements in the source sequences.</param> 985 /// <returns>Plan that produces the projected results, to be fed (with other plans) to the When operator.</returns> 986 /// <exception cref="ArgumentNullException"><paramref name="selector"/> is null.</exception> Then(Func<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8, TSource9, TSource10, TSource11, TSource12, TSource13, TSource14, TSource15, TResult> selector)987 public Plan<TResult> Then<TResult>(Func<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8, TSource9, TSource10, TSource11, TSource12, TSource13, TSource14, TSource15, TResult> selector) 988 { 989 if (selector == null) 990 throw new ArgumentNullException("selector"); 991 992 return new Plan<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8, TSource9, TSource10, TSource11, TSource12, TSource13, TSource14, TSource15, TResult>(this, selector); 993 } 994 995 } 996 997 /// <summary> 998 /// Represents a join pattern over sixteen observable sequences. 999 /// </summary> 1000 /// <typeparam name="TSource1">The type of the elements in the first source sequence.</typeparam> 1001 /// <typeparam name="TSource2">The type of the elements in the second source sequence.</typeparam> 1002 /// <typeparam name="TSource3">The type of the elements in the third source sequence.</typeparam> 1003 /// <typeparam name="TSource4">The type of the elements in the fourth source sequence.</typeparam> 1004 /// <typeparam name="TSource5">The type of the elements in the fifth source sequence.</typeparam> 1005 /// <typeparam name="TSource6">The type of the elements in the sixth source sequence.</typeparam> 1006 /// <typeparam name="TSource7">The type of the elements in the seventh source sequence.</typeparam> 1007 /// <typeparam name="TSource8">The type of the elements in the eighth source sequence.</typeparam> 1008 /// <typeparam name="TSource9">The type of the elements in the ninth source sequence.</typeparam> 1009 /// <typeparam name="TSource10">The type of the elements in the tenth source sequence.</typeparam> 1010 /// <typeparam name="TSource11">The type of the elements in the eleventh source sequence.</typeparam> 1011 /// <typeparam name="TSource12">The type of the elements in the twelfth source sequence.</typeparam> 1012 /// <typeparam name="TSource13">The type of the elements in the thirteenth source sequence.</typeparam> 1013 /// <typeparam name="TSource14">The type of the elements in the fourteenth source sequence.</typeparam> 1014 /// <typeparam name="TSource15">The type of the elements in the fifteenth source sequence.</typeparam> 1015 /// <typeparam name="TSource16">The type of the elements in the sixteenth source sequence.</typeparam> 1016 public class Pattern<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8, TSource9, TSource10, TSource11, TSource12, TSource13, TSource14, TSource15, TSource16> : Pattern 1017 { Pattern(IObservable<TSource1> first, IObservable<TSource2> second, IObservable<TSource3> third, IObservable<TSource4> fourth, IObservable<TSource5> fifth, IObservable<TSource6> sixth, IObservable<TSource7> seventh, IObservable<TSource8> eighth, IObservable<TSource9> ninth, IObservable<TSource10> tenth, IObservable<TSource11> eleventh, IObservable<TSource12> twelfth, IObservable<TSource13> thirteenth, IObservable<TSource14> fourteenth, IObservable<TSource15> fifteenth, IObservable<TSource16> sixteenth)1018 internal Pattern(IObservable<TSource1> first, IObservable<TSource2> second, IObservable<TSource3> third, IObservable<TSource4> fourth, IObservable<TSource5> fifth, IObservable<TSource6> sixth, IObservable<TSource7> seventh, IObservable<TSource8> eighth, IObservable<TSource9> ninth, IObservable<TSource10> tenth, IObservable<TSource11> eleventh, IObservable<TSource12> twelfth, IObservable<TSource13> thirteenth, IObservable<TSource14> fourteenth, IObservable<TSource15> fifteenth, IObservable<TSource16> sixteenth) 1019 { 1020 First = first; 1021 Second = second; 1022 Third = third; 1023 Fourth = fourth; 1024 Fifth = fifth; 1025 Sixth = sixth; 1026 Seventh = seventh; 1027 Eighth = eighth; 1028 Ninth = ninth; 1029 Tenth = tenth; 1030 Eleventh = eleventh; 1031 Twelfth = twelfth; 1032 Thirteenth = thirteenth; 1033 Fourteenth = fourteenth; 1034 Fifteenth = fifteenth; 1035 Sixteenth = sixteenth; 1036 } 1037 1038 internal IObservable<TSource1> First { get; private set; } 1039 internal IObservable<TSource2> Second { get; private set; } 1040 internal IObservable<TSource3> Third { get; private set; } 1041 internal IObservable<TSource4> Fourth { get; private set; } 1042 internal IObservable<TSource5> Fifth { get; private set; } 1043 internal IObservable<TSource6> Sixth { get; private set; } 1044 internal IObservable<TSource7> Seventh { get; private set; } 1045 internal IObservable<TSource8> Eighth { get; private set; } 1046 internal IObservable<TSource9> Ninth { get; private set; } 1047 internal IObservable<TSource10> Tenth { get; private set; } 1048 internal IObservable<TSource11> Eleventh { get; private set; } 1049 internal IObservable<TSource12> Twelfth { get; private set; } 1050 internal IObservable<TSource13> Thirteenth { get; private set; } 1051 internal IObservable<TSource14> Fourteenth { get; private set; } 1052 internal IObservable<TSource15> Fifteenth { get; private set; } 1053 internal IObservable<TSource16> Sixteenth { get; private set; } 1054 1055 /// <summary> 1056 /// Matches when all observable sequences have an available element and projects the elements by invoking the selector function. 1057 /// </summary> 1058 /// <typeparam name="TResult">The type of the elements in the result sequence, returned by the selector function.</typeparam> 1059 /// <param name="selector">Selector that will be invoked for elements in the source sequences.</param> 1060 /// <returns>Plan that produces the projected results, to be fed (with other plans) to the When operator.</returns> 1061 /// <exception cref="ArgumentNullException"><paramref name="selector"/> is null.</exception> Then(Func<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8, TSource9, TSource10, TSource11, TSource12, TSource13, TSource14, TSource15, TSource16, TResult> selector)1062 public Plan<TResult> Then<TResult>(Func<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8, TSource9, TSource10, TSource11, TSource12, TSource13, TSource14, TSource15, TSource16, TResult> selector) 1063 { 1064 if (selector == null) 1065 throw new ArgumentNullException("selector"); 1066 1067 return new Plan<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8, TSource9, TSource10, TSource11, TSource12, TSource13, TSource14, TSource15, TSource16, TResult>(this, selector); 1068 } 1069 1070 } 1071 1072 #endif 1073 1074 #endregion 1075 }