Zip.Generated.cs 82 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001
  1. // Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.
  2. #if !NO_PERF
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Collections.ObjectModel;
  6. using System.Linq;
  7. using System.Reactive.Disposables;
  8. namespace System.Reactive.Linq.ObservableImpl
  9. {
  10. #region [3,16]-ary
  11. /* The following code is generated by a T4 template. */
  12. #region CombineLatest auto-generated code (4/14/2015 00:35:42)
  13. class Zip<T1, T2, T3, TResult> : Producer<TResult>
  14. {
  15. private readonly IObservable<T1> _source1;
  16. private readonly IObservable<T2> _source2;
  17. private readonly IObservable<T3> _source3;
  18. private readonly Func<T1, T2, T3, TResult> _resultSelector;
  19. public Zip(IObservable<T1> source1, IObservable<T2> source2, IObservable<T3> source3, Func<T1, T2, T3, TResult> resultSelector)
  20. {
  21. _source1 = source1;
  22. _source2 = source2;
  23. _source3 = source3;
  24. _resultSelector = resultSelector;
  25. }
  26. protected override IDisposable Run(IObserver<TResult> observer, IDisposable cancel, Action<IDisposable> setSink)
  27. {
  28. var sink = new _(this, observer, cancel);
  29. setSink(sink);
  30. return sink.Run();
  31. }
  32. class _ : ZipSink<TResult>
  33. {
  34. private readonly Zip<T1, T2, T3, TResult> _parent;
  35. public _(Zip<T1, T2, T3, TResult> parent, IObserver<TResult> observer, IDisposable cancel)
  36. : base(3, observer, cancel)
  37. {
  38. _parent = parent;
  39. }
  40. private ZipObserver<T1> _observer1;
  41. private ZipObserver<T2> _observer2;
  42. private ZipObserver<T3> _observer3;
  43. public IDisposable Run()
  44. {
  45. var disposables = new IDisposable[4];
  46. var d1 = new SingleAssignmentDisposable();
  47. disposables[0] = d1;
  48. _observer1 = new ZipObserver<T1>(_gate, this, 0, d1);
  49. base.Queues[0] = _observer1.Values;
  50. var d2 = new SingleAssignmentDisposable();
  51. disposables[1] = d2;
  52. _observer2 = new ZipObserver<T2>(_gate, this, 1, d2);
  53. base.Queues[1] = _observer2.Values;
  54. var d3 = new SingleAssignmentDisposable();
  55. disposables[2] = d3;
  56. _observer3 = new ZipObserver<T3>(_gate, this, 2, d3);
  57. base.Queues[2] = _observer3.Values;
  58. d1.Disposable = _parent._source1.SubscribeSafe(_observer1);
  59. d2.Disposable = _parent._source2.SubscribeSafe(_observer2);
  60. d3.Disposable = _parent._source3.SubscribeSafe(_observer3);
  61. disposables[3] = Disposable.Create(() =>
  62. {
  63. _observer1.Values.Clear();
  64. _observer2.Values.Clear();
  65. _observer3.Values.Clear();
  66. });
  67. return StableCompositeDisposable.Create(disposables);
  68. }
  69. protected override TResult GetResult()
  70. {
  71. return _parent._resultSelector(_observer1.Values.Dequeue(), _observer2.Values.Dequeue(), _observer3.Values.Dequeue());
  72. }
  73. }
  74. }
  75. class Zip<T1, T2, T3, T4, TResult> : Producer<TResult>
  76. {
  77. private readonly IObservable<T1> _source1;
  78. private readonly IObservable<T2> _source2;
  79. private readonly IObservable<T3> _source3;
  80. private readonly IObservable<T4> _source4;
  81. private readonly Func<T1, T2, T3, T4, TResult> _resultSelector;
  82. public Zip(IObservable<T1> source1, IObservable<T2> source2, IObservable<T3> source3, IObservable<T4> source4, Func<T1, T2, T3, T4, TResult> resultSelector)
  83. {
  84. _source1 = source1;
  85. _source2 = source2;
  86. _source3 = source3;
  87. _source4 = source4;
  88. _resultSelector = resultSelector;
  89. }
  90. protected override IDisposable Run(IObserver<TResult> observer, IDisposable cancel, Action<IDisposable> setSink)
  91. {
  92. var sink = new _(this, observer, cancel);
  93. setSink(sink);
  94. return sink.Run();
  95. }
  96. class _ : ZipSink<TResult>
  97. {
  98. private readonly Zip<T1, T2, T3, T4, TResult> _parent;
  99. public _(Zip<T1, T2, T3, T4, TResult> parent, IObserver<TResult> observer, IDisposable cancel)
  100. : base(4, observer, cancel)
  101. {
  102. _parent = parent;
  103. }
  104. private ZipObserver<T1> _observer1;
  105. private ZipObserver<T2> _observer2;
  106. private ZipObserver<T3> _observer3;
  107. private ZipObserver<T4> _observer4;
  108. public IDisposable Run()
  109. {
  110. var disposables = new IDisposable[5];
  111. var d1 = new SingleAssignmentDisposable();
  112. disposables[0] = d1;
  113. _observer1 = new ZipObserver<T1>(_gate, this, 0, d1);
  114. base.Queues[0] = _observer1.Values;
  115. var d2 = new SingleAssignmentDisposable();
  116. disposables[1] = d2;
  117. _observer2 = new ZipObserver<T2>(_gate, this, 1, d2);
  118. base.Queues[1] = _observer2.Values;
  119. var d3 = new SingleAssignmentDisposable();
  120. disposables[2] = d3;
  121. _observer3 = new ZipObserver<T3>(_gate, this, 2, d3);
  122. base.Queues[2] = _observer3.Values;
  123. var d4 = new SingleAssignmentDisposable();
  124. disposables[3] = d4;
  125. _observer4 = new ZipObserver<T4>(_gate, this, 3, d4);
  126. base.Queues[3] = _observer4.Values;
  127. d1.Disposable = _parent._source1.SubscribeSafe(_observer1);
  128. d2.Disposable = _parent._source2.SubscribeSafe(_observer2);
  129. d3.Disposable = _parent._source3.SubscribeSafe(_observer3);
  130. d4.Disposable = _parent._source4.SubscribeSafe(_observer4);
  131. disposables[4] = Disposable.Create(() =>
  132. {
  133. _observer1.Values.Clear();
  134. _observer2.Values.Clear();
  135. _observer3.Values.Clear();
  136. _observer4.Values.Clear();
  137. });
  138. return StableCompositeDisposable.Create(disposables);
  139. }
  140. protected override TResult GetResult()
  141. {
  142. return _parent._resultSelector(_observer1.Values.Dequeue(), _observer2.Values.Dequeue(), _observer3.Values.Dequeue(), _observer4.Values.Dequeue());
  143. }
  144. }
  145. }
  146. #if !NO_LARGEARITY
  147. class Zip<T1, T2, T3, T4, T5, TResult> : Producer<TResult>
  148. {
  149. private readonly IObservable<T1> _source1;
  150. private readonly IObservable<T2> _source2;
  151. private readonly IObservable<T3> _source3;
  152. private readonly IObservable<T4> _source4;
  153. private readonly IObservable<T5> _source5;
  154. private readonly Func<T1, T2, T3, T4, T5, TResult> _resultSelector;
  155. public Zip(IObservable<T1> source1, IObservable<T2> source2, IObservable<T3> source3, IObservable<T4> source4, IObservable<T5> source5, Func<T1, T2, T3, T4, T5, TResult> resultSelector)
  156. {
  157. _source1 = source1;
  158. _source2 = source2;
  159. _source3 = source3;
  160. _source4 = source4;
  161. _source5 = source5;
  162. _resultSelector = resultSelector;
  163. }
  164. protected override IDisposable Run(IObserver<TResult> observer, IDisposable cancel, Action<IDisposable> setSink)
  165. {
  166. var sink = new _(this, observer, cancel);
  167. setSink(sink);
  168. return sink.Run();
  169. }
  170. class _ : ZipSink<TResult>
  171. {
  172. private readonly Zip<T1, T2, T3, T4, T5, TResult> _parent;
  173. public _(Zip<T1, T2, T3, T4, T5, TResult> parent, IObserver<TResult> observer, IDisposable cancel)
  174. : base(5, observer, cancel)
  175. {
  176. _parent = parent;
  177. }
  178. private ZipObserver<T1> _observer1;
  179. private ZipObserver<T2> _observer2;
  180. private ZipObserver<T3> _observer3;
  181. private ZipObserver<T4> _observer4;
  182. private ZipObserver<T5> _observer5;
  183. public IDisposable Run()
  184. {
  185. var disposables = new IDisposable[6];
  186. var d1 = new SingleAssignmentDisposable();
  187. disposables[0] = d1;
  188. _observer1 = new ZipObserver<T1>(_gate, this, 0, d1);
  189. base.Queues[0] = _observer1.Values;
  190. var d2 = new SingleAssignmentDisposable();
  191. disposables[1] = d2;
  192. _observer2 = new ZipObserver<T2>(_gate, this, 1, d2);
  193. base.Queues[1] = _observer2.Values;
  194. var d3 = new SingleAssignmentDisposable();
  195. disposables[2] = d3;
  196. _observer3 = new ZipObserver<T3>(_gate, this, 2, d3);
  197. base.Queues[2] = _observer3.Values;
  198. var d4 = new SingleAssignmentDisposable();
  199. disposables[3] = d4;
  200. _observer4 = new ZipObserver<T4>(_gate, this, 3, d4);
  201. base.Queues[3] = _observer4.Values;
  202. var d5 = new SingleAssignmentDisposable();
  203. disposables[4] = d5;
  204. _observer5 = new ZipObserver<T5>(_gate, this, 4, d5);
  205. base.Queues[4] = _observer5.Values;
  206. d1.Disposable = _parent._source1.SubscribeSafe(_observer1);
  207. d2.Disposable = _parent._source2.SubscribeSafe(_observer2);
  208. d3.Disposable = _parent._source3.SubscribeSafe(_observer3);
  209. d4.Disposable = _parent._source4.SubscribeSafe(_observer4);
  210. d5.Disposable = _parent._source5.SubscribeSafe(_observer5);
  211. disposables[5] = Disposable.Create(() =>
  212. {
  213. _observer1.Values.Clear();
  214. _observer2.Values.Clear();
  215. _observer3.Values.Clear();
  216. _observer4.Values.Clear();
  217. _observer5.Values.Clear();
  218. });
  219. return StableCompositeDisposable.Create(disposables);
  220. }
  221. protected override TResult GetResult()
  222. {
  223. return _parent._resultSelector(_observer1.Values.Dequeue(), _observer2.Values.Dequeue(), _observer3.Values.Dequeue(), _observer4.Values.Dequeue(), _observer5.Values.Dequeue());
  224. }
  225. }
  226. }
  227. class Zip<T1, T2, T3, T4, T5, T6, TResult> : Producer<TResult>
  228. {
  229. private readonly IObservable<T1> _source1;
  230. private readonly IObservable<T2> _source2;
  231. private readonly IObservable<T3> _source3;
  232. private readonly IObservable<T4> _source4;
  233. private readonly IObservable<T5> _source5;
  234. private readonly IObservable<T6> _source6;
  235. private readonly Func<T1, T2, T3, T4, T5, T6, TResult> _resultSelector;
  236. public Zip(IObservable<T1> source1, IObservable<T2> source2, IObservable<T3> source3, IObservable<T4> source4, IObservable<T5> source5, IObservable<T6> source6, Func<T1, T2, T3, T4, T5, T6, TResult> resultSelector)
  237. {
  238. _source1 = source1;
  239. _source2 = source2;
  240. _source3 = source3;
  241. _source4 = source4;
  242. _source5 = source5;
  243. _source6 = source6;
  244. _resultSelector = resultSelector;
  245. }
  246. protected override IDisposable Run(IObserver<TResult> observer, IDisposable cancel, Action<IDisposable> setSink)
  247. {
  248. var sink = new _(this, observer, cancel);
  249. setSink(sink);
  250. return sink.Run();
  251. }
  252. class _ : ZipSink<TResult>
  253. {
  254. private readonly Zip<T1, T2, T3, T4, T5, T6, TResult> _parent;
  255. public _(Zip<T1, T2, T3, T4, T5, T6, TResult> parent, IObserver<TResult> observer, IDisposable cancel)
  256. : base(6, observer, cancel)
  257. {
  258. _parent = parent;
  259. }
  260. private ZipObserver<T1> _observer1;
  261. private ZipObserver<T2> _observer2;
  262. private ZipObserver<T3> _observer3;
  263. private ZipObserver<T4> _observer4;
  264. private ZipObserver<T5> _observer5;
  265. private ZipObserver<T6> _observer6;
  266. public IDisposable Run()
  267. {
  268. var disposables = new IDisposable[7];
  269. var d1 = new SingleAssignmentDisposable();
  270. disposables[0] = d1;
  271. _observer1 = new ZipObserver<T1>(_gate, this, 0, d1);
  272. base.Queues[0] = _observer1.Values;
  273. var d2 = new SingleAssignmentDisposable();
  274. disposables[1] = d2;
  275. _observer2 = new ZipObserver<T2>(_gate, this, 1, d2);
  276. base.Queues[1] = _observer2.Values;
  277. var d3 = new SingleAssignmentDisposable();
  278. disposables[2] = d3;
  279. _observer3 = new ZipObserver<T3>(_gate, this, 2, d3);
  280. base.Queues[2] = _observer3.Values;
  281. var d4 = new SingleAssignmentDisposable();
  282. disposables[3] = d4;
  283. _observer4 = new ZipObserver<T4>(_gate, this, 3, d4);
  284. base.Queues[3] = _observer4.Values;
  285. var d5 = new SingleAssignmentDisposable();
  286. disposables[4] = d5;
  287. _observer5 = new ZipObserver<T5>(_gate, this, 4, d5);
  288. base.Queues[4] = _observer5.Values;
  289. var d6 = new SingleAssignmentDisposable();
  290. disposables[5] = d6;
  291. _observer6 = new ZipObserver<T6>(_gate, this, 5, d6);
  292. base.Queues[5] = _observer6.Values;
  293. d1.Disposable = _parent._source1.SubscribeSafe(_observer1);
  294. d2.Disposable = _parent._source2.SubscribeSafe(_observer2);
  295. d3.Disposable = _parent._source3.SubscribeSafe(_observer3);
  296. d4.Disposable = _parent._source4.SubscribeSafe(_observer4);
  297. d5.Disposable = _parent._source5.SubscribeSafe(_observer5);
  298. d6.Disposable = _parent._source6.SubscribeSafe(_observer6);
  299. disposables[6] = Disposable.Create(() =>
  300. {
  301. _observer1.Values.Clear();
  302. _observer2.Values.Clear();
  303. _observer3.Values.Clear();
  304. _observer4.Values.Clear();
  305. _observer5.Values.Clear();
  306. _observer6.Values.Clear();
  307. });
  308. return StableCompositeDisposable.Create(disposables);
  309. }
  310. protected override TResult GetResult()
  311. {
  312. return _parent._resultSelector(_observer1.Values.Dequeue(), _observer2.Values.Dequeue(), _observer3.Values.Dequeue(), _observer4.Values.Dequeue(), _observer5.Values.Dequeue(), _observer6.Values.Dequeue());
  313. }
  314. }
  315. }
  316. class Zip<T1, T2, T3, T4, T5, T6, T7, TResult> : Producer<TResult>
  317. {
  318. private readonly IObservable<T1> _source1;
  319. private readonly IObservable<T2> _source2;
  320. private readonly IObservable<T3> _source3;
  321. private readonly IObservable<T4> _source4;
  322. private readonly IObservable<T5> _source5;
  323. private readonly IObservable<T6> _source6;
  324. private readonly IObservable<T7> _source7;
  325. private readonly Func<T1, T2, T3, T4, T5, T6, T7, TResult> _resultSelector;
  326. public Zip(IObservable<T1> source1, IObservable<T2> source2, IObservable<T3> source3, IObservable<T4> source4, IObservable<T5> source5, IObservable<T6> source6, IObservable<T7> source7, Func<T1, T2, T3, T4, T5, T6, T7, TResult> resultSelector)
  327. {
  328. _source1 = source1;
  329. _source2 = source2;
  330. _source3 = source3;
  331. _source4 = source4;
  332. _source5 = source5;
  333. _source6 = source6;
  334. _source7 = source7;
  335. _resultSelector = resultSelector;
  336. }
  337. protected override IDisposable Run(IObserver<TResult> observer, IDisposable cancel, Action<IDisposable> setSink)
  338. {
  339. var sink = new _(this, observer, cancel);
  340. setSink(sink);
  341. return sink.Run();
  342. }
  343. class _ : ZipSink<TResult>
  344. {
  345. private readonly Zip<T1, T2, T3, T4, T5, T6, T7, TResult> _parent;
  346. public _(Zip<T1, T2, T3, T4, T5, T6, T7, TResult> parent, IObserver<TResult> observer, IDisposable cancel)
  347. : base(7, observer, cancel)
  348. {
  349. _parent = parent;
  350. }
  351. private ZipObserver<T1> _observer1;
  352. private ZipObserver<T2> _observer2;
  353. private ZipObserver<T3> _observer3;
  354. private ZipObserver<T4> _observer4;
  355. private ZipObserver<T5> _observer5;
  356. private ZipObserver<T6> _observer6;
  357. private ZipObserver<T7> _observer7;
  358. public IDisposable Run()
  359. {
  360. var disposables = new IDisposable[8];
  361. var d1 = new SingleAssignmentDisposable();
  362. disposables[0] = d1;
  363. _observer1 = new ZipObserver<T1>(_gate, this, 0, d1);
  364. base.Queues[0] = _observer1.Values;
  365. var d2 = new SingleAssignmentDisposable();
  366. disposables[1] = d2;
  367. _observer2 = new ZipObserver<T2>(_gate, this, 1, d2);
  368. base.Queues[1] = _observer2.Values;
  369. var d3 = new SingleAssignmentDisposable();
  370. disposables[2] = d3;
  371. _observer3 = new ZipObserver<T3>(_gate, this, 2, d3);
  372. base.Queues[2] = _observer3.Values;
  373. var d4 = new SingleAssignmentDisposable();
  374. disposables[3] = d4;
  375. _observer4 = new ZipObserver<T4>(_gate, this, 3, d4);
  376. base.Queues[3] = _observer4.Values;
  377. var d5 = new SingleAssignmentDisposable();
  378. disposables[4] = d5;
  379. _observer5 = new ZipObserver<T5>(_gate, this, 4, d5);
  380. base.Queues[4] = _observer5.Values;
  381. var d6 = new SingleAssignmentDisposable();
  382. disposables[5] = d6;
  383. _observer6 = new ZipObserver<T6>(_gate, this, 5, d6);
  384. base.Queues[5] = _observer6.Values;
  385. var d7 = new SingleAssignmentDisposable();
  386. disposables[6] = d7;
  387. _observer7 = new ZipObserver<T7>(_gate, this, 6, d7);
  388. base.Queues[6] = _observer7.Values;
  389. d1.Disposable = _parent._source1.SubscribeSafe(_observer1);
  390. d2.Disposable = _parent._source2.SubscribeSafe(_observer2);
  391. d3.Disposable = _parent._source3.SubscribeSafe(_observer3);
  392. d4.Disposable = _parent._source4.SubscribeSafe(_observer4);
  393. d5.Disposable = _parent._source5.SubscribeSafe(_observer5);
  394. d6.Disposable = _parent._source6.SubscribeSafe(_observer6);
  395. d7.Disposable = _parent._source7.SubscribeSafe(_observer7);
  396. disposables[7] = Disposable.Create(() =>
  397. {
  398. _observer1.Values.Clear();
  399. _observer2.Values.Clear();
  400. _observer3.Values.Clear();
  401. _observer4.Values.Clear();
  402. _observer5.Values.Clear();
  403. _observer6.Values.Clear();
  404. _observer7.Values.Clear();
  405. });
  406. return StableCompositeDisposable.Create(disposables);
  407. }
  408. protected override TResult GetResult()
  409. {
  410. return _parent._resultSelector(_observer1.Values.Dequeue(), _observer2.Values.Dequeue(), _observer3.Values.Dequeue(), _observer4.Values.Dequeue(), _observer5.Values.Dequeue(), _observer6.Values.Dequeue(), _observer7.Values.Dequeue());
  411. }
  412. }
  413. }
  414. class Zip<T1, T2, T3, T4, T5, T6, T7, T8, TResult> : Producer<TResult>
  415. {
  416. private readonly IObservable<T1> _source1;
  417. private readonly IObservable<T2> _source2;
  418. private readonly IObservable<T3> _source3;
  419. private readonly IObservable<T4> _source4;
  420. private readonly IObservable<T5> _source5;
  421. private readonly IObservable<T6> _source6;
  422. private readonly IObservable<T7> _source7;
  423. private readonly IObservable<T8> _source8;
  424. private readonly Func<T1, T2, T3, T4, T5, T6, T7, T8, TResult> _resultSelector;
  425. public Zip(IObservable<T1> source1, IObservable<T2> source2, IObservable<T3> source3, IObservable<T4> source4, IObservable<T5> source5, IObservable<T6> source6, IObservable<T7> source7, IObservable<T8> source8, Func<T1, T2, T3, T4, T5, T6, T7, T8, TResult> resultSelector)
  426. {
  427. _source1 = source1;
  428. _source2 = source2;
  429. _source3 = source3;
  430. _source4 = source4;
  431. _source5 = source5;
  432. _source6 = source6;
  433. _source7 = source7;
  434. _source8 = source8;
  435. _resultSelector = resultSelector;
  436. }
  437. protected override IDisposable Run(IObserver<TResult> observer, IDisposable cancel, Action<IDisposable> setSink)
  438. {
  439. var sink = new _(this, observer, cancel);
  440. setSink(sink);
  441. return sink.Run();
  442. }
  443. class _ : ZipSink<TResult>
  444. {
  445. private readonly Zip<T1, T2, T3, T4, T5, T6, T7, T8, TResult> _parent;
  446. public _(Zip<T1, T2, T3, T4, T5, T6, T7, T8, TResult> parent, IObserver<TResult> observer, IDisposable cancel)
  447. : base(8, observer, cancel)
  448. {
  449. _parent = parent;
  450. }
  451. private ZipObserver<T1> _observer1;
  452. private ZipObserver<T2> _observer2;
  453. private ZipObserver<T3> _observer3;
  454. private ZipObserver<T4> _observer4;
  455. private ZipObserver<T5> _observer5;
  456. private ZipObserver<T6> _observer6;
  457. private ZipObserver<T7> _observer7;
  458. private ZipObserver<T8> _observer8;
  459. public IDisposable Run()
  460. {
  461. var disposables = new IDisposable[9];
  462. var d1 = new SingleAssignmentDisposable();
  463. disposables[0] = d1;
  464. _observer1 = new ZipObserver<T1>(_gate, this, 0, d1);
  465. base.Queues[0] = _observer1.Values;
  466. var d2 = new SingleAssignmentDisposable();
  467. disposables[1] = d2;
  468. _observer2 = new ZipObserver<T2>(_gate, this, 1, d2);
  469. base.Queues[1] = _observer2.Values;
  470. var d3 = new SingleAssignmentDisposable();
  471. disposables[2] = d3;
  472. _observer3 = new ZipObserver<T3>(_gate, this, 2, d3);
  473. base.Queues[2] = _observer3.Values;
  474. var d4 = new SingleAssignmentDisposable();
  475. disposables[3] = d4;
  476. _observer4 = new ZipObserver<T4>(_gate, this, 3, d4);
  477. base.Queues[3] = _observer4.Values;
  478. var d5 = new SingleAssignmentDisposable();
  479. disposables[4] = d5;
  480. _observer5 = new ZipObserver<T5>(_gate, this, 4, d5);
  481. base.Queues[4] = _observer5.Values;
  482. var d6 = new SingleAssignmentDisposable();
  483. disposables[5] = d6;
  484. _observer6 = new ZipObserver<T6>(_gate, this, 5, d6);
  485. base.Queues[5] = _observer6.Values;
  486. var d7 = new SingleAssignmentDisposable();
  487. disposables[6] = d7;
  488. _observer7 = new ZipObserver<T7>(_gate, this, 6, d7);
  489. base.Queues[6] = _observer7.Values;
  490. var d8 = new SingleAssignmentDisposable();
  491. disposables[7] = d8;
  492. _observer8 = new ZipObserver<T8>(_gate, this, 7, d8);
  493. base.Queues[7] = _observer8.Values;
  494. d1.Disposable = _parent._source1.SubscribeSafe(_observer1);
  495. d2.Disposable = _parent._source2.SubscribeSafe(_observer2);
  496. d3.Disposable = _parent._source3.SubscribeSafe(_observer3);
  497. d4.Disposable = _parent._source4.SubscribeSafe(_observer4);
  498. d5.Disposable = _parent._source5.SubscribeSafe(_observer5);
  499. d6.Disposable = _parent._source6.SubscribeSafe(_observer6);
  500. d7.Disposable = _parent._source7.SubscribeSafe(_observer7);
  501. d8.Disposable = _parent._source8.SubscribeSafe(_observer8);
  502. disposables[8] = Disposable.Create(() =>
  503. {
  504. _observer1.Values.Clear();
  505. _observer2.Values.Clear();
  506. _observer3.Values.Clear();
  507. _observer4.Values.Clear();
  508. _observer5.Values.Clear();
  509. _observer6.Values.Clear();
  510. _observer7.Values.Clear();
  511. _observer8.Values.Clear();
  512. });
  513. return StableCompositeDisposable.Create(disposables);
  514. }
  515. protected override TResult GetResult()
  516. {
  517. return _parent._resultSelector(_observer1.Values.Dequeue(), _observer2.Values.Dequeue(), _observer3.Values.Dequeue(), _observer4.Values.Dequeue(), _observer5.Values.Dequeue(), _observer6.Values.Dequeue(), _observer7.Values.Dequeue(), _observer8.Values.Dequeue());
  518. }
  519. }
  520. }
  521. class Zip<T1, T2, T3, T4, T5, T6, T7, T8, T9, TResult> : Producer<TResult>
  522. {
  523. private readonly IObservable<T1> _source1;
  524. private readonly IObservable<T2> _source2;
  525. private readonly IObservable<T3> _source3;
  526. private readonly IObservable<T4> _source4;
  527. private readonly IObservable<T5> _source5;
  528. private readonly IObservable<T6> _source6;
  529. private readonly IObservable<T7> _source7;
  530. private readonly IObservable<T8> _source8;
  531. private readonly IObservable<T9> _source9;
  532. private readonly Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, TResult> _resultSelector;
  533. public Zip(IObservable<T1> source1, IObservable<T2> source2, IObservable<T3> source3, IObservable<T4> source4, IObservable<T5> source5, IObservable<T6> source6, IObservable<T7> source7, IObservable<T8> source8, IObservable<T9> source9, Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, TResult> resultSelector)
  534. {
  535. _source1 = source1;
  536. _source2 = source2;
  537. _source3 = source3;
  538. _source4 = source4;
  539. _source5 = source5;
  540. _source6 = source6;
  541. _source7 = source7;
  542. _source8 = source8;
  543. _source9 = source9;
  544. _resultSelector = resultSelector;
  545. }
  546. protected override IDisposable Run(IObserver<TResult> observer, IDisposable cancel, Action<IDisposable> setSink)
  547. {
  548. var sink = new _(this, observer, cancel);
  549. setSink(sink);
  550. return sink.Run();
  551. }
  552. class _ : ZipSink<TResult>
  553. {
  554. private readonly Zip<T1, T2, T3, T4, T5, T6, T7, T8, T9, TResult> _parent;
  555. public _(Zip<T1, T2, T3, T4, T5, T6, T7, T8, T9, TResult> parent, IObserver<TResult> observer, IDisposable cancel)
  556. : base(9, observer, cancel)
  557. {
  558. _parent = parent;
  559. }
  560. private ZipObserver<T1> _observer1;
  561. private ZipObserver<T2> _observer2;
  562. private ZipObserver<T3> _observer3;
  563. private ZipObserver<T4> _observer4;
  564. private ZipObserver<T5> _observer5;
  565. private ZipObserver<T6> _observer6;
  566. private ZipObserver<T7> _observer7;
  567. private ZipObserver<T8> _observer8;
  568. private ZipObserver<T9> _observer9;
  569. public IDisposable Run()
  570. {
  571. var disposables = new IDisposable[10];
  572. var d1 = new SingleAssignmentDisposable();
  573. disposables[0] = d1;
  574. _observer1 = new ZipObserver<T1>(_gate, this, 0, d1);
  575. base.Queues[0] = _observer1.Values;
  576. var d2 = new SingleAssignmentDisposable();
  577. disposables[1] = d2;
  578. _observer2 = new ZipObserver<T2>(_gate, this, 1, d2);
  579. base.Queues[1] = _observer2.Values;
  580. var d3 = new SingleAssignmentDisposable();
  581. disposables[2] = d3;
  582. _observer3 = new ZipObserver<T3>(_gate, this, 2, d3);
  583. base.Queues[2] = _observer3.Values;
  584. var d4 = new SingleAssignmentDisposable();
  585. disposables[3] = d4;
  586. _observer4 = new ZipObserver<T4>(_gate, this, 3, d4);
  587. base.Queues[3] = _observer4.Values;
  588. var d5 = new SingleAssignmentDisposable();
  589. disposables[4] = d5;
  590. _observer5 = new ZipObserver<T5>(_gate, this, 4, d5);
  591. base.Queues[4] = _observer5.Values;
  592. var d6 = new SingleAssignmentDisposable();
  593. disposables[5] = d6;
  594. _observer6 = new ZipObserver<T6>(_gate, this, 5, d6);
  595. base.Queues[5] = _observer6.Values;
  596. var d7 = new SingleAssignmentDisposable();
  597. disposables[6] = d7;
  598. _observer7 = new ZipObserver<T7>(_gate, this, 6, d7);
  599. base.Queues[6] = _observer7.Values;
  600. var d8 = new SingleAssignmentDisposable();
  601. disposables[7] = d8;
  602. _observer8 = new ZipObserver<T8>(_gate, this, 7, d8);
  603. base.Queues[7] = _observer8.Values;
  604. var d9 = new SingleAssignmentDisposable();
  605. disposables[8] = d9;
  606. _observer9 = new ZipObserver<T9>(_gate, this, 8, d9);
  607. base.Queues[8] = _observer9.Values;
  608. d1.Disposable = _parent._source1.SubscribeSafe(_observer1);
  609. d2.Disposable = _parent._source2.SubscribeSafe(_observer2);
  610. d3.Disposable = _parent._source3.SubscribeSafe(_observer3);
  611. d4.Disposable = _parent._source4.SubscribeSafe(_observer4);
  612. d5.Disposable = _parent._source5.SubscribeSafe(_observer5);
  613. d6.Disposable = _parent._source6.SubscribeSafe(_observer6);
  614. d7.Disposable = _parent._source7.SubscribeSafe(_observer7);
  615. d8.Disposable = _parent._source8.SubscribeSafe(_observer8);
  616. d9.Disposable = _parent._source9.SubscribeSafe(_observer9);
  617. disposables[9] = Disposable.Create(() =>
  618. {
  619. _observer1.Values.Clear();
  620. _observer2.Values.Clear();
  621. _observer3.Values.Clear();
  622. _observer4.Values.Clear();
  623. _observer5.Values.Clear();
  624. _observer6.Values.Clear();
  625. _observer7.Values.Clear();
  626. _observer8.Values.Clear();
  627. _observer9.Values.Clear();
  628. });
  629. return StableCompositeDisposable.Create(disposables);
  630. }
  631. protected override TResult GetResult()
  632. {
  633. return _parent._resultSelector(_observer1.Values.Dequeue(), _observer2.Values.Dequeue(), _observer3.Values.Dequeue(), _observer4.Values.Dequeue(), _observer5.Values.Dequeue(), _observer6.Values.Dequeue(), _observer7.Values.Dequeue(), _observer8.Values.Dequeue(), _observer9.Values.Dequeue());
  634. }
  635. }
  636. }
  637. class Zip<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, TResult> : Producer<TResult>
  638. {
  639. private readonly IObservable<T1> _source1;
  640. private readonly IObservable<T2> _source2;
  641. private readonly IObservable<T3> _source3;
  642. private readonly IObservable<T4> _source4;
  643. private readonly IObservable<T5> _source5;
  644. private readonly IObservable<T6> _source6;
  645. private readonly IObservable<T7> _source7;
  646. private readonly IObservable<T8> _source8;
  647. private readonly IObservable<T9> _source9;
  648. private readonly IObservable<T10> _source10;
  649. private readonly Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, TResult> _resultSelector;
  650. public Zip(IObservable<T1> source1, IObservable<T2> source2, IObservable<T3> source3, IObservable<T4> source4, IObservable<T5> source5, IObservable<T6> source6, IObservable<T7> source7, IObservable<T8> source8, IObservable<T9> source9, IObservable<T10> source10, Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, TResult> resultSelector)
  651. {
  652. _source1 = source1;
  653. _source2 = source2;
  654. _source3 = source3;
  655. _source4 = source4;
  656. _source5 = source5;
  657. _source6 = source6;
  658. _source7 = source7;
  659. _source8 = source8;
  660. _source9 = source9;
  661. _source10 = source10;
  662. _resultSelector = resultSelector;
  663. }
  664. protected override IDisposable Run(IObserver<TResult> observer, IDisposable cancel, Action<IDisposable> setSink)
  665. {
  666. var sink = new _(this, observer, cancel);
  667. setSink(sink);
  668. return sink.Run();
  669. }
  670. class _ : ZipSink<TResult>
  671. {
  672. private readonly Zip<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, TResult> _parent;
  673. public _(Zip<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, TResult> parent, IObserver<TResult> observer, IDisposable cancel)
  674. : base(10, observer, cancel)
  675. {
  676. _parent = parent;
  677. }
  678. private ZipObserver<T1> _observer1;
  679. private ZipObserver<T2> _observer2;
  680. private ZipObserver<T3> _observer3;
  681. private ZipObserver<T4> _observer4;
  682. private ZipObserver<T5> _observer5;
  683. private ZipObserver<T6> _observer6;
  684. private ZipObserver<T7> _observer7;
  685. private ZipObserver<T8> _observer8;
  686. private ZipObserver<T9> _observer9;
  687. private ZipObserver<T10> _observer10;
  688. public IDisposable Run()
  689. {
  690. var disposables = new IDisposable[11];
  691. var d1 = new SingleAssignmentDisposable();
  692. disposables[0] = d1;
  693. _observer1 = new ZipObserver<T1>(_gate, this, 0, d1);
  694. base.Queues[0] = _observer1.Values;
  695. var d2 = new SingleAssignmentDisposable();
  696. disposables[1] = d2;
  697. _observer2 = new ZipObserver<T2>(_gate, this, 1, d2);
  698. base.Queues[1] = _observer2.Values;
  699. var d3 = new SingleAssignmentDisposable();
  700. disposables[2] = d3;
  701. _observer3 = new ZipObserver<T3>(_gate, this, 2, d3);
  702. base.Queues[2] = _observer3.Values;
  703. var d4 = new SingleAssignmentDisposable();
  704. disposables[3] = d4;
  705. _observer4 = new ZipObserver<T4>(_gate, this, 3, d4);
  706. base.Queues[3] = _observer4.Values;
  707. var d5 = new SingleAssignmentDisposable();
  708. disposables[4] = d5;
  709. _observer5 = new ZipObserver<T5>(_gate, this, 4, d5);
  710. base.Queues[4] = _observer5.Values;
  711. var d6 = new SingleAssignmentDisposable();
  712. disposables[5] = d6;
  713. _observer6 = new ZipObserver<T6>(_gate, this, 5, d6);
  714. base.Queues[5] = _observer6.Values;
  715. var d7 = new SingleAssignmentDisposable();
  716. disposables[6] = d7;
  717. _observer7 = new ZipObserver<T7>(_gate, this, 6, d7);
  718. base.Queues[6] = _observer7.Values;
  719. var d8 = new SingleAssignmentDisposable();
  720. disposables[7] = d8;
  721. _observer8 = new ZipObserver<T8>(_gate, this, 7, d8);
  722. base.Queues[7] = _observer8.Values;
  723. var d9 = new SingleAssignmentDisposable();
  724. disposables[8] = d9;
  725. _observer9 = new ZipObserver<T9>(_gate, this, 8, d9);
  726. base.Queues[8] = _observer9.Values;
  727. var d10 = new SingleAssignmentDisposable();
  728. disposables[9] = d10;
  729. _observer10 = new ZipObserver<T10>(_gate, this, 9, d10);
  730. base.Queues[9] = _observer10.Values;
  731. d1.Disposable = _parent._source1.SubscribeSafe(_observer1);
  732. d2.Disposable = _parent._source2.SubscribeSafe(_observer2);
  733. d3.Disposable = _parent._source3.SubscribeSafe(_observer3);
  734. d4.Disposable = _parent._source4.SubscribeSafe(_observer4);
  735. d5.Disposable = _parent._source5.SubscribeSafe(_observer5);
  736. d6.Disposable = _parent._source6.SubscribeSafe(_observer6);
  737. d7.Disposable = _parent._source7.SubscribeSafe(_observer7);
  738. d8.Disposable = _parent._source8.SubscribeSafe(_observer8);
  739. d9.Disposable = _parent._source9.SubscribeSafe(_observer9);
  740. d10.Disposable = _parent._source10.SubscribeSafe(_observer10);
  741. disposables[10] = Disposable.Create(() =>
  742. {
  743. _observer1.Values.Clear();
  744. _observer2.Values.Clear();
  745. _observer3.Values.Clear();
  746. _observer4.Values.Clear();
  747. _observer5.Values.Clear();
  748. _observer6.Values.Clear();
  749. _observer7.Values.Clear();
  750. _observer8.Values.Clear();
  751. _observer9.Values.Clear();
  752. _observer10.Values.Clear();
  753. });
  754. return StableCompositeDisposable.Create(disposables);
  755. }
  756. protected override TResult GetResult()
  757. {
  758. return _parent._resultSelector(_observer1.Values.Dequeue(), _observer2.Values.Dequeue(), _observer3.Values.Dequeue(), _observer4.Values.Dequeue(), _observer5.Values.Dequeue(), _observer6.Values.Dequeue(), _observer7.Values.Dequeue(), _observer8.Values.Dequeue(), _observer9.Values.Dequeue(), _observer10.Values.Dequeue());
  759. }
  760. }
  761. }
  762. class Zip<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, TResult> : Producer<TResult>
  763. {
  764. private readonly IObservable<T1> _source1;
  765. private readonly IObservable<T2> _source2;
  766. private readonly IObservable<T3> _source3;
  767. private readonly IObservable<T4> _source4;
  768. private readonly IObservable<T5> _source5;
  769. private readonly IObservable<T6> _source6;
  770. private readonly IObservable<T7> _source7;
  771. private readonly IObservable<T8> _source8;
  772. private readonly IObservable<T9> _source9;
  773. private readonly IObservable<T10> _source10;
  774. private readonly IObservable<T11> _source11;
  775. private readonly Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, TResult> _resultSelector;
  776. public Zip(IObservable<T1> source1, IObservable<T2> source2, IObservable<T3> source3, IObservable<T4> source4, IObservable<T5> source5, IObservable<T6> source6, IObservable<T7> source7, IObservable<T8> source8, IObservable<T9> source9, IObservable<T10> source10, IObservable<T11> source11, Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, TResult> resultSelector)
  777. {
  778. _source1 = source1;
  779. _source2 = source2;
  780. _source3 = source3;
  781. _source4 = source4;
  782. _source5 = source5;
  783. _source6 = source6;
  784. _source7 = source7;
  785. _source8 = source8;
  786. _source9 = source9;
  787. _source10 = source10;
  788. _source11 = source11;
  789. _resultSelector = resultSelector;
  790. }
  791. protected override IDisposable Run(IObserver<TResult> observer, IDisposable cancel, Action<IDisposable> setSink)
  792. {
  793. var sink = new _(this, observer, cancel);
  794. setSink(sink);
  795. return sink.Run();
  796. }
  797. class _ : ZipSink<TResult>
  798. {
  799. private readonly Zip<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, TResult> _parent;
  800. public _(Zip<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, TResult> parent, IObserver<TResult> observer, IDisposable cancel)
  801. : base(11, observer, cancel)
  802. {
  803. _parent = parent;
  804. }
  805. private ZipObserver<T1> _observer1;
  806. private ZipObserver<T2> _observer2;
  807. private ZipObserver<T3> _observer3;
  808. private ZipObserver<T4> _observer4;
  809. private ZipObserver<T5> _observer5;
  810. private ZipObserver<T6> _observer6;
  811. private ZipObserver<T7> _observer7;
  812. private ZipObserver<T8> _observer8;
  813. private ZipObserver<T9> _observer9;
  814. private ZipObserver<T10> _observer10;
  815. private ZipObserver<T11> _observer11;
  816. public IDisposable Run()
  817. {
  818. var disposables = new IDisposable[12];
  819. var d1 = new SingleAssignmentDisposable();
  820. disposables[0] = d1;
  821. _observer1 = new ZipObserver<T1>(_gate, this, 0, d1);
  822. base.Queues[0] = _observer1.Values;
  823. var d2 = new SingleAssignmentDisposable();
  824. disposables[1] = d2;
  825. _observer2 = new ZipObserver<T2>(_gate, this, 1, d2);
  826. base.Queues[1] = _observer2.Values;
  827. var d3 = new SingleAssignmentDisposable();
  828. disposables[2] = d3;
  829. _observer3 = new ZipObserver<T3>(_gate, this, 2, d3);
  830. base.Queues[2] = _observer3.Values;
  831. var d4 = new SingleAssignmentDisposable();
  832. disposables[3] = d4;
  833. _observer4 = new ZipObserver<T4>(_gate, this, 3, d4);
  834. base.Queues[3] = _observer4.Values;
  835. var d5 = new SingleAssignmentDisposable();
  836. disposables[4] = d5;
  837. _observer5 = new ZipObserver<T5>(_gate, this, 4, d5);
  838. base.Queues[4] = _observer5.Values;
  839. var d6 = new SingleAssignmentDisposable();
  840. disposables[5] = d6;
  841. _observer6 = new ZipObserver<T6>(_gate, this, 5, d6);
  842. base.Queues[5] = _observer6.Values;
  843. var d7 = new SingleAssignmentDisposable();
  844. disposables[6] = d7;
  845. _observer7 = new ZipObserver<T7>(_gate, this, 6, d7);
  846. base.Queues[6] = _observer7.Values;
  847. var d8 = new SingleAssignmentDisposable();
  848. disposables[7] = d8;
  849. _observer8 = new ZipObserver<T8>(_gate, this, 7, d8);
  850. base.Queues[7] = _observer8.Values;
  851. var d9 = new SingleAssignmentDisposable();
  852. disposables[8] = d9;
  853. _observer9 = new ZipObserver<T9>(_gate, this, 8, d9);
  854. base.Queues[8] = _observer9.Values;
  855. var d10 = new SingleAssignmentDisposable();
  856. disposables[9] = d10;
  857. _observer10 = new ZipObserver<T10>(_gate, this, 9, d10);
  858. base.Queues[9] = _observer10.Values;
  859. var d11 = new SingleAssignmentDisposable();
  860. disposables[10] = d11;
  861. _observer11 = new ZipObserver<T11>(_gate, this, 10, d11);
  862. base.Queues[10] = _observer11.Values;
  863. d1.Disposable = _parent._source1.SubscribeSafe(_observer1);
  864. d2.Disposable = _parent._source2.SubscribeSafe(_observer2);
  865. d3.Disposable = _parent._source3.SubscribeSafe(_observer3);
  866. d4.Disposable = _parent._source4.SubscribeSafe(_observer4);
  867. d5.Disposable = _parent._source5.SubscribeSafe(_observer5);
  868. d6.Disposable = _parent._source6.SubscribeSafe(_observer6);
  869. d7.Disposable = _parent._source7.SubscribeSafe(_observer7);
  870. d8.Disposable = _parent._source8.SubscribeSafe(_observer8);
  871. d9.Disposable = _parent._source9.SubscribeSafe(_observer9);
  872. d10.Disposable = _parent._source10.SubscribeSafe(_observer10);
  873. d11.Disposable = _parent._source11.SubscribeSafe(_observer11);
  874. disposables[11] = Disposable.Create(() =>
  875. {
  876. _observer1.Values.Clear();
  877. _observer2.Values.Clear();
  878. _observer3.Values.Clear();
  879. _observer4.Values.Clear();
  880. _observer5.Values.Clear();
  881. _observer6.Values.Clear();
  882. _observer7.Values.Clear();
  883. _observer8.Values.Clear();
  884. _observer9.Values.Clear();
  885. _observer10.Values.Clear();
  886. _observer11.Values.Clear();
  887. });
  888. return StableCompositeDisposable.Create(disposables);
  889. }
  890. protected override TResult GetResult()
  891. {
  892. return _parent._resultSelector(_observer1.Values.Dequeue(), _observer2.Values.Dequeue(), _observer3.Values.Dequeue(), _observer4.Values.Dequeue(), _observer5.Values.Dequeue(), _observer6.Values.Dequeue(), _observer7.Values.Dequeue(), _observer8.Values.Dequeue(), _observer9.Values.Dequeue(), _observer10.Values.Dequeue(), _observer11.Values.Dequeue());
  893. }
  894. }
  895. }
  896. class Zip<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, TResult> : Producer<TResult>
  897. {
  898. private readonly IObservable<T1> _source1;
  899. private readonly IObservable<T2> _source2;
  900. private readonly IObservable<T3> _source3;
  901. private readonly IObservable<T4> _source4;
  902. private readonly IObservable<T5> _source5;
  903. private readonly IObservable<T6> _source6;
  904. private readonly IObservable<T7> _source7;
  905. private readonly IObservable<T8> _source8;
  906. private readonly IObservable<T9> _source9;
  907. private readonly IObservable<T10> _source10;
  908. private readonly IObservable<T11> _source11;
  909. private readonly IObservable<T12> _source12;
  910. private readonly Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, TResult> _resultSelector;
  911. public Zip(IObservable<T1> source1, IObservable<T2> source2, IObservable<T3> source3, IObservable<T4> source4, IObservable<T5> source5, IObservable<T6> source6, IObservable<T7> source7, IObservable<T8> source8, IObservable<T9> source9, IObservable<T10> source10, IObservable<T11> source11, IObservable<T12> source12, Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, TResult> resultSelector)
  912. {
  913. _source1 = source1;
  914. _source2 = source2;
  915. _source3 = source3;
  916. _source4 = source4;
  917. _source5 = source5;
  918. _source6 = source6;
  919. _source7 = source7;
  920. _source8 = source8;
  921. _source9 = source9;
  922. _source10 = source10;
  923. _source11 = source11;
  924. _source12 = source12;
  925. _resultSelector = resultSelector;
  926. }
  927. protected override IDisposable Run(IObserver<TResult> observer, IDisposable cancel, Action<IDisposable> setSink)
  928. {
  929. var sink = new _(this, observer, cancel);
  930. setSink(sink);
  931. return sink.Run();
  932. }
  933. class _ : ZipSink<TResult>
  934. {
  935. private readonly Zip<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, TResult> _parent;
  936. public _(Zip<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, TResult> parent, IObserver<TResult> observer, IDisposable cancel)
  937. : base(12, observer, cancel)
  938. {
  939. _parent = parent;
  940. }
  941. private ZipObserver<T1> _observer1;
  942. private ZipObserver<T2> _observer2;
  943. private ZipObserver<T3> _observer3;
  944. private ZipObserver<T4> _observer4;
  945. private ZipObserver<T5> _observer5;
  946. private ZipObserver<T6> _observer6;
  947. private ZipObserver<T7> _observer7;
  948. private ZipObserver<T8> _observer8;
  949. private ZipObserver<T9> _observer9;
  950. private ZipObserver<T10> _observer10;
  951. private ZipObserver<T11> _observer11;
  952. private ZipObserver<T12> _observer12;
  953. public IDisposable Run()
  954. {
  955. var disposables = new IDisposable[13];
  956. var d1 = new SingleAssignmentDisposable();
  957. disposables[0] = d1;
  958. _observer1 = new ZipObserver<T1>(_gate, this, 0, d1);
  959. base.Queues[0] = _observer1.Values;
  960. var d2 = new SingleAssignmentDisposable();
  961. disposables[1] = d2;
  962. _observer2 = new ZipObserver<T2>(_gate, this, 1, d2);
  963. base.Queues[1] = _observer2.Values;
  964. var d3 = new SingleAssignmentDisposable();
  965. disposables[2] = d3;
  966. _observer3 = new ZipObserver<T3>(_gate, this, 2, d3);
  967. base.Queues[2] = _observer3.Values;
  968. var d4 = new SingleAssignmentDisposable();
  969. disposables[3] = d4;
  970. _observer4 = new ZipObserver<T4>(_gate, this, 3, d4);
  971. base.Queues[3] = _observer4.Values;
  972. var d5 = new SingleAssignmentDisposable();
  973. disposables[4] = d5;
  974. _observer5 = new ZipObserver<T5>(_gate, this, 4, d5);
  975. base.Queues[4] = _observer5.Values;
  976. var d6 = new SingleAssignmentDisposable();
  977. disposables[5] = d6;
  978. _observer6 = new ZipObserver<T6>(_gate, this, 5, d6);
  979. base.Queues[5] = _observer6.Values;
  980. var d7 = new SingleAssignmentDisposable();
  981. disposables[6] = d7;
  982. _observer7 = new ZipObserver<T7>(_gate, this, 6, d7);
  983. base.Queues[6] = _observer7.Values;
  984. var d8 = new SingleAssignmentDisposable();
  985. disposables[7] = d8;
  986. _observer8 = new ZipObserver<T8>(_gate, this, 7, d8);
  987. base.Queues[7] = _observer8.Values;
  988. var d9 = new SingleAssignmentDisposable();
  989. disposables[8] = d9;
  990. _observer9 = new ZipObserver<T9>(_gate, this, 8, d9);
  991. base.Queues[8] = _observer9.Values;
  992. var d10 = new SingleAssignmentDisposable();
  993. disposables[9] = d10;
  994. _observer10 = new ZipObserver<T10>(_gate, this, 9, d10);
  995. base.Queues[9] = _observer10.Values;
  996. var d11 = new SingleAssignmentDisposable();
  997. disposables[10] = d11;
  998. _observer11 = new ZipObserver<T11>(_gate, this, 10, d11);
  999. base.Queues[10] = _observer11.Values;
  1000. var d12 = new SingleAssignmentDisposable();
  1001. disposables[11] = d12;
  1002. _observer12 = new ZipObserver<T12>(_gate, this, 11, d12);
  1003. base.Queues[11] = _observer12.Values;
  1004. d1.Disposable = _parent._source1.SubscribeSafe(_observer1);
  1005. d2.Disposable = _parent._source2.SubscribeSafe(_observer2);
  1006. d3.Disposable = _parent._source3.SubscribeSafe(_observer3);
  1007. d4.Disposable = _parent._source4.SubscribeSafe(_observer4);
  1008. d5.Disposable = _parent._source5.SubscribeSafe(_observer5);
  1009. d6.Disposable = _parent._source6.SubscribeSafe(_observer6);
  1010. d7.Disposable = _parent._source7.SubscribeSafe(_observer7);
  1011. d8.Disposable = _parent._source8.SubscribeSafe(_observer8);
  1012. d9.Disposable = _parent._source9.SubscribeSafe(_observer9);
  1013. d10.Disposable = _parent._source10.SubscribeSafe(_observer10);
  1014. d11.Disposable = _parent._source11.SubscribeSafe(_observer11);
  1015. d12.Disposable = _parent._source12.SubscribeSafe(_observer12);
  1016. disposables[12] = Disposable.Create(() =>
  1017. {
  1018. _observer1.Values.Clear();
  1019. _observer2.Values.Clear();
  1020. _observer3.Values.Clear();
  1021. _observer4.Values.Clear();
  1022. _observer5.Values.Clear();
  1023. _observer6.Values.Clear();
  1024. _observer7.Values.Clear();
  1025. _observer8.Values.Clear();
  1026. _observer9.Values.Clear();
  1027. _observer10.Values.Clear();
  1028. _observer11.Values.Clear();
  1029. _observer12.Values.Clear();
  1030. });
  1031. return StableCompositeDisposable.Create(disposables);
  1032. }
  1033. protected override TResult GetResult()
  1034. {
  1035. return _parent._resultSelector(_observer1.Values.Dequeue(), _observer2.Values.Dequeue(), _observer3.Values.Dequeue(), _observer4.Values.Dequeue(), _observer5.Values.Dequeue(), _observer6.Values.Dequeue(), _observer7.Values.Dequeue(), _observer8.Values.Dequeue(), _observer9.Values.Dequeue(), _observer10.Values.Dequeue(), _observer11.Values.Dequeue(), _observer12.Values.Dequeue());
  1036. }
  1037. }
  1038. }
  1039. class Zip<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, TResult> : Producer<TResult>
  1040. {
  1041. private readonly IObservable<T1> _source1;
  1042. private readonly IObservable<T2> _source2;
  1043. private readonly IObservable<T3> _source3;
  1044. private readonly IObservable<T4> _source4;
  1045. private readonly IObservable<T5> _source5;
  1046. private readonly IObservable<T6> _source6;
  1047. private readonly IObservable<T7> _source7;
  1048. private readonly IObservable<T8> _source8;
  1049. private readonly IObservable<T9> _source9;
  1050. private readonly IObservable<T10> _source10;
  1051. private readonly IObservable<T11> _source11;
  1052. private readonly IObservable<T12> _source12;
  1053. private readonly IObservable<T13> _source13;
  1054. private readonly Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, TResult> _resultSelector;
  1055. public Zip(IObservable<T1> source1, IObservable<T2> source2, IObservable<T3> source3, IObservable<T4> source4, IObservable<T5> source5, IObservable<T6> source6, IObservable<T7> source7, IObservable<T8> source8, IObservable<T9> source9, IObservable<T10> source10, IObservable<T11> source11, IObservable<T12> source12, IObservable<T13> source13, Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, TResult> resultSelector)
  1056. {
  1057. _source1 = source1;
  1058. _source2 = source2;
  1059. _source3 = source3;
  1060. _source4 = source4;
  1061. _source5 = source5;
  1062. _source6 = source6;
  1063. _source7 = source7;
  1064. _source8 = source8;
  1065. _source9 = source9;
  1066. _source10 = source10;
  1067. _source11 = source11;
  1068. _source12 = source12;
  1069. _source13 = source13;
  1070. _resultSelector = resultSelector;
  1071. }
  1072. protected override IDisposable Run(IObserver<TResult> observer, IDisposable cancel, Action<IDisposable> setSink)
  1073. {
  1074. var sink = new _(this, observer, cancel);
  1075. setSink(sink);
  1076. return sink.Run();
  1077. }
  1078. class _ : ZipSink<TResult>
  1079. {
  1080. private readonly Zip<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, TResult> _parent;
  1081. public _(Zip<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, TResult> parent, IObserver<TResult> observer, IDisposable cancel)
  1082. : base(13, observer, cancel)
  1083. {
  1084. _parent = parent;
  1085. }
  1086. private ZipObserver<T1> _observer1;
  1087. private ZipObserver<T2> _observer2;
  1088. private ZipObserver<T3> _observer3;
  1089. private ZipObserver<T4> _observer4;
  1090. private ZipObserver<T5> _observer5;
  1091. private ZipObserver<T6> _observer6;
  1092. private ZipObserver<T7> _observer7;
  1093. private ZipObserver<T8> _observer8;
  1094. private ZipObserver<T9> _observer9;
  1095. private ZipObserver<T10> _observer10;
  1096. private ZipObserver<T11> _observer11;
  1097. private ZipObserver<T12> _observer12;
  1098. private ZipObserver<T13> _observer13;
  1099. public IDisposable Run()
  1100. {
  1101. var disposables = new IDisposable[14];
  1102. var d1 = new SingleAssignmentDisposable();
  1103. disposables[0] = d1;
  1104. _observer1 = new ZipObserver<T1>(_gate, this, 0, d1);
  1105. base.Queues[0] = _observer1.Values;
  1106. var d2 = new SingleAssignmentDisposable();
  1107. disposables[1] = d2;
  1108. _observer2 = new ZipObserver<T2>(_gate, this, 1, d2);
  1109. base.Queues[1] = _observer2.Values;
  1110. var d3 = new SingleAssignmentDisposable();
  1111. disposables[2] = d3;
  1112. _observer3 = new ZipObserver<T3>(_gate, this, 2, d3);
  1113. base.Queues[2] = _observer3.Values;
  1114. var d4 = new SingleAssignmentDisposable();
  1115. disposables[3] = d4;
  1116. _observer4 = new ZipObserver<T4>(_gate, this, 3, d4);
  1117. base.Queues[3] = _observer4.Values;
  1118. var d5 = new SingleAssignmentDisposable();
  1119. disposables[4] = d5;
  1120. _observer5 = new ZipObserver<T5>(_gate, this, 4, d5);
  1121. base.Queues[4] = _observer5.Values;
  1122. var d6 = new SingleAssignmentDisposable();
  1123. disposables[5] = d6;
  1124. _observer6 = new ZipObserver<T6>(_gate, this, 5, d6);
  1125. base.Queues[5] = _observer6.Values;
  1126. var d7 = new SingleAssignmentDisposable();
  1127. disposables[6] = d7;
  1128. _observer7 = new ZipObserver<T7>(_gate, this, 6, d7);
  1129. base.Queues[6] = _observer7.Values;
  1130. var d8 = new SingleAssignmentDisposable();
  1131. disposables[7] = d8;
  1132. _observer8 = new ZipObserver<T8>(_gate, this, 7, d8);
  1133. base.Queues[7] = _observer8.Values;
  1134. var d9 = new SingleAssignmentDisposable();
  1135. disposables[8] = d9;
  1136. _observer9 = new ZipObserver<T9>(_gate, this, 8, d9);
  1137. base.Queues[8] = _observer9.Values;
  1138. var d10 = new SingleAssignmentDisposable();
  1139. disposables[9] = d10;
  1140. _observer10 = new ZipObserver<T10>(_gate, this, 9, d10);
  1141. base.Queues[9] = _observer10.Values;
  1142. var d11 = new SingleAssignmentDisposable();
  1143. disposables[10] = d11;
  1144. _observer11 = new ZipObserver<T11>(_gate, this, 10, d11);
  1145. base.Queues[10] = _observer11.Values;
  1146. var d12 = new SingleAssignmentDisposable();
  1147. disposables[11] = d12;
  1148. _observer12 = new ZipObserver<T12>(_gate, this, 11, d12);
  1149. base.Queues[11] = _observer12.Values;
  1150. var d13 = new SingleAssignmentDisposable();
  1151. disposables[12] = d13;
  1152. _observer13 = new ZipObserver<T13>(_gate, this, 12, d13);
  1153. base.Queues[12] = _observer13.Values;
  1154. d1.Disposable = _parent._source1.SubscribeSafe(_observer1);
  1155. d2.Disposable = _parent._source2.SubscribeSafe(_observer2);
  1156. d3.Disposable = _parent._source3.SubscribeSafe(_observer3);
  1157. d4.Disposable = _parent._source4.SubscribeSafe(_observer4);
  1158. d5.Disposable = _parent._source5.SubscribeSafe(_observer5);
  1159. d6.Disposable = _parent._source6.SubscribeSafe(_observer6);
  1160. d7.Disposable = _parent._source7.SubscribeSafe(_observer7);
  1161. d8.Disposable = _parent._source8.SubscribeSafe(_observer8);
  1162. d9.Disposable = _parent._source9.SubscribeSafe(_observer9);
  1163. d10.Disposable = _parent._source10.SubscribeSafe(_observer10);
  1164. d11.Disposable = _parent._source11.SubscribeSafe(_observer11);
  1165. d12.Disposable = _parent._source12.SubscribeSafe(_observer12);
  1166. d13.Disposable = _parent._source13.SubscribeSafe(_observer13);
  1167. disposables[13] = Disposable.Create(() =>
  1168. {
  1169. _observer1.Values.Clear();
  1170. _observer2.Values.Clear();
  1171. _observer3.Values.Clear();
  1172. _observer4.Values.Clear();
  1173. _observer5.Values.Clear();
  1174. _observer6.Values.Clear();
  1175. _observer7.Values.Clear();
  1176. _observer8.Values.Clear();
  1177. _observer9.Values.Clear();
  1178. _observer10.Values.Clear();
  1179. _observer11.Values.Clear();
  1180. _observer12.Values.Clear();
  1181. _observer13.Values.Clear();
  1182. });
  1183. return StableCompositeDisposable.Create(disposables);
  1184. }
  1185. protected override TResult GetResult()
  1186. {
  1187. return _parent._resultSelector(_observer1.Values.Dequeue(), _observer2.Values.Dequeue(), _observer3.Values.Dequeue(), _observer4.Values.Dequeue(), _observer5.Values.Dequeue(), _observer6.Values.Dequeue(), _observer7.Values.Dequeue(), _observer8.Values.Dequeue(), _observer9.Values.Dequeue(), _observer10.Values.Dequeue(), _observer11.Values.Dequeue(), _observer12.Values.Dequeue(), _observer13.Values.Dequeue());
  1188. }
  1189. }
  1190. }
  1191. class Zip<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, TResult> : Producer<TResult>
  1192. {
  1193. private readonly IObservable<T1> _source1;
  1194. private readonly IObservable<T2> _source2;
  1195. private readonly IObservable<T3> _source3;
  1196. private readonly IObservable<T4> _source4;
  1197. private readonly IObservable<T5> _source5;
  1198. private readonly IObservable<T6> _source6;
  1199. private readonly IObservable<T7> _source7;
  1200. private readonly IObservable<T8> _source8;
  1201. private readonly IObservable<T9> _source9;
  1202. private readonly IObservable<T10> _source10;
  1203. private readonly IObservable<T11> _source11;
  1204. private readonly IObservable<T12> _source12;
  1205. private readonly IObservable<T13> _source13;
  1206. private readonly IObservable<T14> _source14;
  1207. private readonly Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, TResult> _resultSelector;
  1208. public Zip(IObservable<T1> source1, IObservable<T2> source2, IObservable<T3> source3, IObservable<T4> source4, IObservable<T5> source5, IObservable<T6> source6, IObservable<T7> source7, IObservable<T8> source8, IObservable<T9> source9, IObservable<T10> source10, IObservable<T11> source11, IObservable<T12> source12, IObservable<T13> source13, IObservable<T14> source14, Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, TResult> resultSelector)
  1209. {
  1210. _source1 = source1;
  1211. _source2 = source2;
  1212. _source3 = source3;
  1213. _source4 = source4;
  1214. _source5 = source5;
  1215. _source6 = source6;
  1216. _source7 = source7;
  1217. _source8 = source8;
  1218. _source9 = source9;
  1219. _source10 = source10;
  1220. _source11 = source11;
  1221. _source12 = source12;
  1222. _source13 = source13;
  1223. _source14 = source14;
  1224. _resultSelector = resultSelector;
  1225. }
  1226. protected override IDisposable Run(IObserver<TResult> observer, IDisposable cancel, Action<IDisposable> setSink)
  1227. {
  1228. var sink = new _(this, observer, cancel);
  1229. setSink(sink);
  1230. return sink.Run();
  1231. }
  1232. class _ : ZipSink<TResult>
  1233. {
  1234. private readonly Zip<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, TResult> _parent;
  1235. public _(Zip<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, TResult> parent, IObserver<TResult> observer, IDisposable cancel)
  1236. : base(14, observer, cancel)
  1237. {
  1238. _parent = parent;
  1239. }
  1240. private ZipObserver<T1> _observer1;
  1241. private ZipObserver<T2> _observer2;
  1242. private ZipObserver<T3> _observer3;
  1243. private ZipObserver<T4> _observer4;
  1244. private ZipObserver<T5> _observer5;
  1245. private ZipObserver<T6> _observer6;
  1246. private ZipObserver<T7> _observer7;
  1247. private ZipObserver<T8> _observer8;
  1248. private ZipObserver<T9> _observer9;
  1249. private ZipObserver<T10> _observer10;
  1250. private ZipObserver<T11> _observer11;
  1251. private ZipObserver<T12> _observer12;
  1252. private ZipObserver<T13> _observer13;
  1253. private ZipObserver<T14> _observer14;
  1254. public IDisposable Run()
  1255. {
  1256. var disposables = new IDisposable[15];
  1257. var d1 = new SingleAssignmentDisposable();
  1258. disposables[0] = d1;
  1259. _observer1 = new ZipObserver<T1>(_gate, this, 0, d1);
  1260. base.Queues[0] = _observer1.Values;
  1261. var d2 = new SingleAssignmentDisposable();
  1262. disposables[1] = d2;
  1263. _observer2 = new ZipObserver<T2>(_gate, this, 1, d2);
  1264. base.Queues[1] = _observer2.Values;
  1265. var d3 = new SingleAssignmentDisposable();
  1266. disposables[2] = d3;
  1267. _observer3 = new ZipObserver<T3>(_gate, this, 2, d3);
  1268. base.Queues[2] = _observer3.Values;
  1269. var d4 = new SingleAssignmentDisposable();
  1270. disposables[3] = d4;
  1271. _observer4 = new ZipObserver<T4>(_gate, this, 3, d4);
  1272. base.Queues[3] = _observer4.Values;
  1273. var d5 = new SingleAssignmentDisposable();
  1274. disposables[4] = d5;
  1275. _observer5 = new ZipObserver<T5>(_gate, this, 4, d5);
  1276. base.Queues[4] = _observer5.Values;
  1277. var d6 = new SingleAssignmentDisposable();
  1278. disposables[5] = d6;
  1279. _observer6 = new ZipObserver<T6>(_gate, this, 5, d6);
  1280. base.Queues[5] = _observer6.Values;
  1281. var d7 = new SingleAssignmentDisposable();
  1282. disposables[6] = d7;
  1283. _observer7 = new ZipObserver<T7>(_gate, this, 6, d7);
  1284. base.Queues[6] = _observer7.Values;
  1285. var d8 = new SingleAssignmentDisposable();
  1286. disposables[7] = d8;
  1287. _observer8 = new ZipObserver<T8>(_gate, this, 7, d8);
  1288. base.Queues[7] = _observer8.Values;
  1289. var d9 = new SingleAssignmentDisposable();
  1290. disposables[8] = d9;
  1291. _observer9 = new ZipObserver<T9>(_gate, this, 8, d9);
  1292. base.Queues[8] = _observer9.Values;
  1293. var d10 = new SingleAssignmentDisposable();
  1294. disposables[9] = d10;
  1295. _observer10 = new ZipObserver<T10>(_gate, this, 9, d10);
  1296. base.Queues[9] = _observer10.Values;
  1297. var d11 = new SingleAssignmentDisposable();
  1298. disposables[10] = d11;
  1299. _observer11 = new ZipObserver<T11>(_gate, this, 10, d11);
  1300. base.Queues[10] = _observer11.Values;
  1301. var d12 = new SingleAssignmentDisposable();
  1302. disposables[11] = d12;
  1303. _observer12 = new ZipObserver<T12>(_gate, this, 11, d12);
  1304. base.Queues[11] = _observer12.Values;
  1305. var d13 = new SingleAssignmentDisposable();
  1306. disposables[12] = d13;
  1307. _observer13 = new ZipObserver<T13>(_gate, this, 12, d13);
  1308. base.Queues[12] = _observer13.Values;
  1309. var d14 = new SingleAssignmentDisposable();
  1310. disposables[13] = d14;
  1311. _observer14 = new ZipObserver<T14>(_gate, this, 13, d14);
  1312. base.Queues[13] = _observer14.Values;
  1313. d1.Disposable = _parent._source1.SubscribeSafe(_observer1);
  1314. d2.Disposable = _parent._source2.SubscribeSafe(_observer2);
  1315. d3.Disposable = _parent._source3.SubscribeSafe(_observer3);
  1316. d4.Disposable = _parent._source4.SubscribeSafe(_observer4);
  1317. d5.Disposable = _parent._source5.SubscribeSafe(_observer5);
  1318. d6.Disposable = _parent._source6.SubscribeSafe(_observer6);
  1319. d7.Disposable = _parent._source7.SubscribeSafe(_observer7);
  1320. d8.Disposable = _parent._source8.SubscribeSafe(_observer8);
  1321. d9.Disposable = _parent._source9.SubscribeSafe(_observer9);
  1322. d10.Disposable = _parent._source10.SubscribeSafe(_observer10);
  1323. d11.Disposable = _parent._source11.SubscribeSafe(_observer11);
  1324. d12.Disposable = _parent._source12.SubscribeSafe(_observer12);
  1325. d13.Disposable = _parent._source13.SubscribeSafe(_observer13);
  1326. d14.Disposable = _parent._source14.SubscribeSafe(_observer14);
  1327. disposables[14] = Disposable.Create(() =>
  1328. {
  1329. _observer1.Values.Clear();
  1330. _observer2.Values.Clear();
  1331. _observer3.Values.Clear();
  1332. _observer4.Values.Clear();
  1333. _observer5.Values.Clear();
  1334. _observer6.Values.Clear();
  1335. _observer7.Values.Clear();
  1336. _observer8.Values.Clear();
  1337. _observer9.Values.Clear();
  1338. _observer10.Values.Clear();
  1339. _observer11.Values.Clear();
  1340. _observer12.Values.Clear();
  1341. _observer13.Values.Clear();
  1342. _observer14.Values.Clear();
  1343. });
  1344. return StableCompositeDisposable.Create(disposables);
  1345. }
  1346. protected override TResult GetResult()
  1347. {
  1348. return _parent._resultSelector(_observer1.Values.Dequeue(), _observer2.Values.Dequeue(), _observer3.Values.Dequeue(), _observer4.Values.Dequeue(), _observer5.Values.Dequeue(), _observer6.Values.Dequeue(), _observer7.Values.Dequeue(), _observer8.Values.Dequeue(), _observer9.Values.Dequeue(), _observer10.Values.Dequeue(), _observer11.Values.Dequeue(), _observer12.Values.Dequeue(), _observer13.Values.Dequeue(), _observer14.Values.Dequeue());
  1349. }
  1350. }
  1351. }
  1352. class Zip<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, TResult> : Producer<TResult>
  1353. {
  1354. private readonly IObservable<T1> _source1;
  1355. private readonly IObservable<T2> _source2;
  1356. private readonly IObservable<T3> _source3;
  1357. private readonly IObservable<T4> _source4;
  1358. private readonly IObservable<T5> _source5;
  1359. private readonly IObservable<T6> _source6;
  1360. private readonly IObservable<T7> _source7;
  1361. private readonly IObservable<T8> _source8;
  1362. private readonly IObservable<T9> _source9;
  1363. private readonly IObservable<T10> _source10;
  1364. private readonly IObservable<T11> _source11;
  1365. private readonly IObservable<T12> _source12;
  1366. private readonly IObservable<T13> _source13;
  1367. private readonly IObservable<T14> _source14;
  1368. private readonly IObservable<T15> _source15;
  1369. private readonly Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, TResult> _resultSelector;
  1370. public Zip(IObservable<T1> source1, IObservable<T2> source2, IObservable<T3> source3, IObservable<T4> source4, IObservable<T5> source5, IObservable<T6> source6, IObservable<T7> source7, IObservable<T8> source8, IObservable<T9> source9, IObservable<T10> source10, IObservable<T11> source11, IObservable<T12> source12, IObservable<T13> source13, IObservable<T14> source14, IObservable<T15> source15, Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, TResult> resultSelector)
  1371. {
  1372. _source1 = source1;
  1373. _source2 = source2;
  1374. _source3 = source3;
  1375. _source4 = source4;
  1376. _source5 = source5;
  1377. _source6 = source6;
  1378. _source7 = source7;
  1379. _source8 = source8;
  1380. _source9 = source9;
  1381. _source10 = source10;
  1382. _source11 = source11;
  1383. _source12 = source12;
  1384. _source13 = source13;
  1385. _source14 = source14;
  1386. _source15 = source15;
  1387. _resultSelector = resultSelector;
  1388. }
  1389. protected override IDisposable Run(IObserver<TResult> observer, IDisposable cancel, Action<IDisposable> setSink)
  1390. {
  1391. var sink = new _(this, observer, cancel);
  1392. setSink(sink);
  1393. return sink.Run();
  1394. }
  1395. class _ : ZipSink<TResult>
  1396. {
  1397. private readonly Zip<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, TResult> _parent;
  1398. public _(Zip<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, TResult> parent, IObserver<TResult> observer, IDisposable cancel)
  1399. : base(15, observer, cancel)
  1400. {
  1401. _parent = parent;
  1402. }
  1403. private ZipObserver<T1> _observer1;
  1404. private ZipObserver<T2> _observer2;
  1405. private ZipObserver<T3> _observer3;
  1406. private ZipObserver<T4> _observer4;
  1407. private ZipObserver<T5> _observer5;
  1408. private ZipObserver<T6> _observer6;
  1409. private ZipObserver<T7> _observer7;
  1410. private ZipObserver<T8> _observer8;
  1411. private ZipObserver<T9> _observer9;
  1412. private ZipObserver<T10> _observer10;
  1413. private ZipObserver<T11> _observer11;
  1414. private ZipObserver<T12> _observer12;
  1415. private ZipObserver<T13> _observer13;
  1416. private ZipObserver<T14> _observer14;
  1417. private ZipObserver<T15> _observer15;
  1418. public IDisposable Run()
  1419. {
  1420. var disposables = new IDisposable[16];
  1421. var d1 = new SingleAssignmentDisposable();
  1422. disposables[0] = d1;
  1423. _observer1 = new ZipObserver<T1>(_gate, this, 0, d1);
  1424. base.Queues[0] = _observer1.Values;
  1425. var d2 = new SingleAssignmentDisposable();
  1426. disposables[1] = d2;
  1427. _observer2 = new ZipObserver<T2>(_gate, this, 1, d2);
  1428. base.Queues[1] = _observer2.Values;
  1429. var d3 = new SingleAssignmentDisposable();
  1430. disposables[2] = d3;
  1431. _observer3 = new ZipObserver<T3>(_gate, this, 2, d3);
  1432. base.Queues[2] = _observer3.Values;
  1433. var d4 = new SingleAssignmentDisposable();
  1434. disposables[3] = d4;
  1435. _observer4 = new ZipObserver<T4>(_gate, this, 3, d4);
  1436. base.Queues[3] = _observer4.Values;
  1437. var d5 = new SingleAssignmentDisposable();
  1438. disposables[4] = d5;
  1439. _observer5 = new ZipObserver<T5>(_gate, this, 4, d5);
  1440. base.Queues[4] = _observer5.Values;
  1441. var d6 = new SingleAssignmentDisposable();
  1442. disposables[5] = d6;
  1443. _observer6 = new ZipObserver<T6>(_gate, this, 5, d6);
  1444. base.Queues[5] = _observer6.Values;
  1445. var d7 = new SingleAssignmentDisposable();
  1446. disposables[6] = d7;
  1447. _observer7 = new ZipObserver<T7>(_gate, this, 6, d7);
  1448. base.Queues[6] = _observer7.Values;
  1449. var d8 = new SingleAssignmentDisposable();
  1450. disposables[7] = d8;
  1451. _observer8 = new ZipObserver<T8>(_gate, this, 7, d8);
  1452. base.Queues[7] = _observer8.Values;
  1453. var d9 = new SingleAssignmentDisposable();
  1454. disposables[8] = d9;
  1455. _observer9 = new ZipObserver<T9>(_gate, this, 8, d9);
  1456. base.Queues[8] = _observer9.Values;
  1457. var d10 = new SingleAssignmentDisposable();
  1458. disposables[9] = d10;
  1459. _observer10 = new ZipObserver<T10>(_gate, this, 9, d10);
  1460. base.Queues[9] = _observer10.Values;
  1461. var d11 = new SingleAssignmentDisposable();
  1462. disposables[10] = d11;
  1463. _observer11 = new ZipObserver<T11>(_gate, this, 10, d11);
  1464. base.Queues[10] = _observer11.Values;
  1465. var d12 = new SingleAssignmentDisposable();
  1466. disposables[11] = d12;
  1467. _observer12 = new ZipObserver<T12>(_gate, this, 11, d12);
  1468. base.Queues[11] = _observer12.Values;
  1469. var d13 = new SingleAssignmentDisposable();
  1470. disposables[12] = d13;
  1471. _observer13 = new ZipObserver<T13>(_gate, this, 12, d13);
  1472. base.Queues[12] = _observer13.Values;
  1473. var d14 = new SingleAssignmentDisposable();
  1474. disposables[13] = d14;
  1475. _observer14 = new ZipObserver<T14>(_gate, this, 13, d14);
  1476. base.Queues[13] = _observer14.Values;
  1477. var d15 = new SingleAssignmentDisposable();
  1478. disposables[14] = d15;
  1479. _observer15 = new ZipObserver<T15>(_gate, this, 14, d15);
  1480. base.Queues[14] = _observer15.Values;
  1481. d1.Disposable = _parent._source1.SubscribeSafe(_observer1);
  1482. d2.Disposable = _parent._source2.SubscribeSafe(_observer2);
  1483. d3.Disposable = _parent._source3.SubscribeSafe(_observer3);
  1484. d4.Disposable = _parent._source4.SubscribeSafe(_observer4);
  1485. d5.Disposable = _parent._source5.SubscribeSafe(_observer5);
  1486. d6.Disposable = _parent._source6.SubscribeSafe(_observer6);
  1487. d7.Disposable = _parent._source7.SubscribeSafe(_observer7);
  1488. d8.Disposable = _parent._source8.SubscribeSafe(_observer8);
  1489. d9.Disposable = _parent._source9.SubscribeSafe(_observer9);
  1490. d10.Disposable = _parent._source10.SubscribeSafe(_observer10);
  1491. d11.Disposable = _parent._source11.SubscribeSafe(_observer11);
  1492. d12.Disposable = _parent._source12.SubscribeSafe(_observer12);
  1493. d13.Disposable = _parent._source13.SubscribeSafe(_observer13);
  1494. d14.Disposable = _parent._source14.SubscribeSafe(_observer14);
  1495. d15.Disposable = _parent._source15.SubscribeSafe(_observer15);
  1496. disposables[15] = Disposable.Create(() =>
  1497. {
  1498. _observer1.Values.Clear();
  1499. _observer2.Values.Clear();
  1500. _observer3.Values.Clear();
  1501. _observer4.Values.Clear();
  1502. _observer5.Values.Clear();
  1503. _observer6.Values.Clear();
  1504. _observer7.Values.Clear();
  1505. _observer8.Values.Clear();
  1506. _observer9.Values.Clear();
  1507. _observer10.Values.Clear();
  1508. _observer11.Values.Clear();
  1509. _observer12.Values.Clear();
  1510. _observer13.Values.Clear();
  1511. _observer14.Values.Clear();
  1512. _observer15.Values.Clear();
  1513. });
  1514. return StableCompositeDisposable.Create(disposables);
  1515. }
  1516. protected override TResult GetResult()
  1517. {
  1518. return _parent._resultSelector(_observer1.Values.Dequeue(), _observer2.Values.Dequeue(), _observer3.Values.Dequeue(), _observer4.Values.Dequeue(), _observer5.Values.Dequeue(), _observer6.Values.Dequeue(), _observer7.Values.Dequeue(), _observer8.Values.Dequeue(), _observer9.Values.Dequeue(), _observer10.Values.Dequeue(), _observer11.Values.Dequeue(), _observer12.Values.Dequeue(), _observer13.Values.Dequeue(), _observer14.Values.Dequeue(), _observer15.Values.Dequeue());
  1519. }
  1520. }
  1521. }
  1522. class Zip<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult> : Producer<TResult>
  1523. {
  1524. private readonly IObservable<T1> _source1;
  1525. private readonly IObservable<T2> _source2;
  1526. private readonly IObservable<T3> _source3;
  1527. private readonly IObservable<T4> _source4;
  1528. private readonly IObservable<T5> _source5;
  1529. private readonly IObservable<T6> _source6;
  1530. private readonly IObservable<T7> _source7;
  1531. private readonly IObservable<T8> _source8;
  1532. private readonly IObservable<T9> _source9;
  1533. private readonly IObservable<T10> _source10;
  1534. private readonly IObservable<T11> _source11;
  1535. private readonly IObservable<T12> _source12;
  1536. private readonly IObservable<T13> _source13;
  1537. private readonly IObservable<T14> _source14;
  1538. private readonly IObservable<T15> _source15;
  1539. private readonly IObservable<T16> _source16;
  1540. private readonly Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult> _resultSelector;
  1541. public Zip(IObservable<T1> source1, IObservable<T2> source2, IObservable<T3> source3, IObservable<T4> source4, IObservable<T5> source5, IObservable<T6> source6, IObservable<T7> source7, IObservable<T8> source8, IObservable<T9> source9, IObservable<T10> source10, IObservable<T11> source11, IObservable<T12> source12, IObservable<T13> source13, IObservable<T14> source14, IObservable<T15> source15, IObservable<T16> source16, Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult> resultSelector)
  1542. {
  1543. _source1 = source1;
  1544. _source2 = source2;
  1545. _source3 = source3;
  1546. _source4 = source4;
  1547. _source5 = source5;
  1548. _source6 = source6;
  1549. _source7 = source7;
  1550. _source8 = source8;
  1551. _source9 = source9;
  1552. _source10 = source10;
  1553. _source11 = source11;
  1554. _source12 = source12;
  1555. _source13 = source13;
  1556. _source14 = source14;
  1557. _source15 = source15;
  1558. _source16 = source16;
  1559. _resultSelector = resultSelector;
  1560. }
  1561. protected override IDisposable Run(IObserver<TResult> observer, IDisposable cancel, Action<IDisposable> setSink)
  1562. {
  1563. var sink = new _(this, observer, cancel);
  1564. setSink(sink);
  1565. return sink.Run();
  1566. }
  1567. class _ : ZipSink<TResult>
  1568. {
  1569. private readonly Zip<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult> _parent;
  1570. public _(Zip<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult> parent, IObserver<TResult> observer, IDisposable cancel)
  1571. : base(16, observer, cancel)
  1572. {
  1573. _parent = parent;
  1574. }
  1575. private ZipObserver<T1> _observer1;
  1576. private ZipObserver<T2> _observer2;
  1577. private ZipObserver<T3> _observer3;
  1578. private ZipObserver<T4> _observer4;
  1579. private ZipObserver<T5> _observer5;
  1580. private ZipObserver<T6> _observer6;
  1581. private ZipObserver<T7> _observer7;
  1582. private ZipObserver<T8> _observer8;
  1583. private ZipObserver<T9> _observer9;
  1584. private ZipObserver<T10> _observer10;
  1585. private ZipObserver<T11> _observer11;
  1586. private ZipObserver<T12> _observer12;
  1587. private ZipObserver<T13> _observer13;
  1588. private ZipObserver<T14> _observer14;
  1589. private ZipObserver<T15> _observer15;
  1590. private ZipObserver<T16> _observer16;
  1591. public IDisposable Run()
  1592. {
  1593. var disposables = new IDisposable[17];
  1594. var d1 = new SingleAssignmentDisposable();
  1595. disposables[0] = d1;
  1596. _observer1 = new ZipObserver<T1>(_gate, this, 0, d1);
  1597. base.Queues[0] = _observer1.Values;
  1598. var d2 = new SingleAssignmentDisposable();
  1599. disposables[1] = d2;
  1600. _observer2 = new ZipObserver<T2>(_gate, this, 1, d2);
  1601. base.Queues[1] = _observer2.Values;
  1602. var d3 = new SingleAssignmentDisposable();
  1603. disposables[2] = d3;
  1604. _observer3 = new ZipObserver<T3>(_gate, this, 2, d3);
  1605. base.Queues[2] = _observer3.Values;
  1606. var d4 = new SingleAssignmentDisposable();
  1607. disposables[3] = d4;
  1608. _observer4 = new ZipObserver<T4>(_gate, this, 3, d4);
  1609. base.Queues[3] = _observer4.Values;
  1610. var d5 = new SingleAssignmentDisposable();
  1611. disposables[4] = d5;
  1612. _observer5 = new ZipObserver<T5>(_gate, this, 4, d5);
  1613. base.Queues[4] = _observer5.Values;
  1614. var d6 = new SingleAssignmentDisposable();
  1615. disposables[5] = d6;
  1616. _observer6 = new ZipObserver<T6>(_gate, this, 5, d6);
  1617. base.Queues[5] = _observer6.Values;
  1618. var d7 = new SingleAssignmentDisposable();
  1619. disposables[6] = d7;
  1620. _observer7 = new ZipObserver<T7>(_gate, this, 6, d7);
  1621. base.Queues[6] = _observer7.Values;
  1622. var d8 = new SingleAssignmentDisposable();
  1623. disposables[7] = d8;
  1624. _observer8 = new ZipObserver<T8>(_gate, this, 7, d8);
  1625. base.Queues[7] = _observer8.Values;
  1626. var d9 = new SingleAssignmentDisposable();
  1627. disposables[8] = d9;
  1628. _observer9 = new ZipObserver<T9>(_gate, this, 8, d9);
  1629. base.Queues[8] = _observer9.Values;
  1630. var d10 = new SingleAssignmentDisposable();
  1631. disposables[9] = d10;
  1632. _observer10 = new ZipObserver<T10>(_gate, this, 9, d10);
  1633. base.Queues[9] = _observer10.Values;
  1634. var d11 = new SingleAssignmentDisposable();
  1635. disposables[10] = d11;
  1636. _observer11 = new ZipObserver<T11>(_gate, this, 10, d11);
  1637. base.Queues[10] = _observer11.Values;
  1638. var d12 = new SingleAssignmentDisposable();
  1639. disposables[11] = d12;
  1640. _observer12 = new ZipObserver<T12>(_gate, this, 11, d12);
  1641. base.Queues[11] = _observer12.Values;
  1642. var d13 = new SingleAssignmentDisposable();
  1643. disposables[12] = d13;
  1644. _observer13 = new ZipObserver<T13>(_gate, this, 12, d13);
  1645. base.Queues[12] = _observer13.Values;
  1646. var d14 = new SingleAssignmentDisposable();
  1647. disposables[13] = d14;
  1648. _observer14 = new ZipObserver<T14>(_gate, this, 13, d14);
  1649. base.Queues[13] = _observer14.Values;
  1650. var d15 = new SingleAssignmentDisposable();
  1651. disposables[14] = d15;
  1652. _observer15 = new ZipObserver<T15>(_gate, this, 14, d15);
  1653. base.Queues[14] = _observer15.Values;
  1654. var d16 = new SingleAssignmentDisposable();
  1655. disposables[15] = d16;
  1656. _observer16 = new ZipObserver<T16>(_gate, this, 15, d16);
  1657. base.Queues[15] = _observer16.Values;
  1658. d1.Disposable = _parent._source1.SubscribeSafe(_observer1);
  1659. d2.Disposable = _parent._source2.SubscribeSafe(_observer2);
  1660. d3.Disposable = _parent._source3.SubscribeSafe(_observer3);
  1661. d4.Disposable = _parent._source4.SubscribeSafe(_observer4);
  1662. d5.Disposable = _parent._source5.SubscribeSafe(_observer5);
  1663. d6.Disposable = _parent._source6.SubscribeSafe(_observer6);
  1664. d7.Disposable = _parent._source7.SubscribeSafe(_observer7);
  1665. d8.Disposable = _parent._source8.SubscribeSafe(_observer8);
  1666. d9.Disposable = _parent._source9.SubscribeSafe(_observer9);
  1667. d10.Disposable = _parent._source10.SubscribeSafe(_observer10);
  1668. d11.Disposable = _parent._source11.SubscribeSafe(_observer11);
  1669. d12.Disposable = _parent._source12.SubscribeSafe(_observer12);
  1670. d13.Disposable = _parent._source13.SubscribeSafe(_observer13);
  1671. d14.Disposable = _parent._source14.SubscribeSafe(_observer14);
  1672. d15.Disposable = _parent._source15.SubscribeSafe(_observer15);
  1673. d16.Disposable = _parent._source16.SubscribeSafe(_observer16);
  1674. disposables[16] = Disposable.Create(() =>
  1675. {
  1676. _observer1.Values.Clear();
  1677. _observer2.Values.Clear();
  1678. _observer3.Values.Clear();
  1679. _observer4.Values.Clear();
  1680. _observer5.Values.Clear();
  1681. _observer6.Values.Clear();
  1682. _observer7.Values.Clear();
  1683. _observer8.Values.Clear();
  1684. _observer9.Values.Clear();
  1685. _observer10.Values.Clear();
  1686. _observer11.Values.Clear();
  1687. _observer12.Values.Clear();
  1688. _observer13.Values.Clear();
  1689. _observer14.Values.Clear();
  1690. _observer15.Values.Clear();
  1691. _observer16.Values.Clear();
  1692. });
  1693. return StableCompositeDisposable.Create(disposables);
  1694. }
  1695. protected override TResult GetResult()
  1696. {
  1697. return _parent._resultSelector(_observer1.Values.Dequeue(), _observer2.Values.Dequeue(), _observer3.Values.Dequeue(), _observer4.Values.Dequeue(), _observer5.Values.Dequeue(), _observer6.Values.Dequeue(), _observer7.Values.Dequeue(), _observer8.Values.Dequeue(), _observer9.Values.Dequeue(), _observer10.Values.Dequeue(), _observer11.Values.Dequeue(), _observer12.Values.Dequeue(), _observer13.Values.Dequeue(), _observer14.Values.Dequeue(), _observer15.Values.Dequeue(), _observer16.Values.Dequeue());
  1698. }
  1699. }
  1700. }
  1701. #endif
  1702. #endregion
  1703. #endregion
  1704. }
  1705. #endif