Free cookie consent management tool by TermsFeed Policy Generator

source: addons/HeuristicLab.Problems.BioBoost/HeuristicLab.Problems.BioBoost/3.3/Utils/ListExtensions.cs @ 17029

Last change on this file since 17029 was 13071, checked in by gkronber, 9 years ago

#2499: added license headers and removed unused usings

File size: 6.2 KB
Line 
1#region License Information
2/* HeuristicLab
3 * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
4 *
5 * This file is part of HeuristicLab.
6 *
7 * HeuristicLab is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
11 *
12 * HeuristicLab is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
19 */
20#endregion
21
22using System;
23using System.Collections.Generic;
24
25namespace HeuristicLab.BioBoost.Utils {
26  public static class EnumerableExtensions {
27    public static IEnumerable<Tuple<T1, T2>> Zip<T1, T2>(IEnumerable<T1> e1, IEnumerable<T2> e2) {
28      var it1 = e1.GetEnumerator();
29      var it2 = e2.GetEnumerator();
30      while (it1.MoveNext() && it2.MoveNext()) {
31        yield return new Tuple<T1, T2>(it1.Current, it2.Current);
32      }
33    }
34    public static IEnumerable<Tuple<T1, T2, T3>> Zip<T1, T2, T3>(IEnumerable<T1> e1, IEnumerable<T2> e2, IEnumerable<T3> e3) {
35      var it1 = e1.GetEnumerator();
36      var it2 = e2.GetEnumerator();
37      var it3 = e3.GetEnumerator();
38      while (it1.MoveNext() && it2.MoveNext() && it3.MoveNext()) {
39        yield return new Tuple<T1, T2, T3>(it1.Current, it2.Current, it3.Current);
40      }
41      if (it1.MoveNext() || it2.MoveNext() || it3.MoveNext())
42        throw new InvalidOperationException("Iterators have different lengths");
43    }
44    public static IEnumerable<Tuple<T1, T2, T3, T4>> Zip<T1, T2, T3, T4>(IEnumerable<T1> e1, IEnumerable<T2> e2, IEnumerable<T3> e3, IEnumerable<T4> e4) {
45      var it1 = e1.GetEnumerator();
46      var it2 = e2.GetEnumerator();
47      var it3 = e3.GetEnumerator();
48      var it4 = e4.GetEnumerator();
49      while (it1.MoveNext() && it2.MoveNext() && it3.MoveNext() && it4.MoveNext()) {
50        yield return new Tuple<T1, T2, T3, T4>(it1.Current, it2.Current, it3.Current, it4.Current);
51      }
52      if (it1.MoveNext() || it2.MoveNext() || it3.MoveNext() || it4.MoveNext())
53        throw new InvalidOperationException("Iterators have different lengths");
54    }
55    public static IEnumerable<Tuple<T1, T2, T3, T4, T5>> Zip<T1, T2, T3, T4, T5>(IEnumerable<T1> e1, IEnumerable<T2> e2, IEnumerable<T3> e3, IEnumerable<T4> e4, IEnumerable<T5> e5) {
56      var it1 = e1.GetEnumerator();
57      var it2 = e2.GetEnumerator();
58      var it3 = e3.GetEnumerator();
59      var it4 = e4.GetEnumerator();
60      var it5 = e5.GetEnumerator();
61      while (it1.MoveNext() && it2.MoveNext() && it3.MoveNext() && it4.MoveNext() && it5.MoveNext()) {
62        yield return new Tuple<T1, T2, T3, T4, T5>(it1.Current, it2.Current, it3.Current, it4.Current, it5.Current);
63      }
64      if (it1.MoveNext() || it2.MoveNext() || it3.MoveNext() || it4.MoveNext() || it5.MoveNext())
65        throw new InvalidOperationException("Iterators have different lengths");
66    }
67    public static IEnumerable<Tuple<T1, T2, T3, T4, T5, T6>> Zip<T1, T2, T3, T4, T5, T6>(IEnumerable<T1> e1, IEnumerable<T2> e2, IEnumerable<T3> e3, IEnumerable<T4> e4, IEnumerable<T5> e5, IEnumerable<T6> e6) {
68      var it1 = e1.GetEnumerator();
69      var it2 = e2.GetEnumerator();
70      var it3 = e3.GetEnumerator();
71      var it4 = e4.GetEnumerator();
72      var it5 = e5.GetEnumerator();
73      var it6 = e6.GetEnumerator();
74      while (it1.MoveNext() && it2.MoveNext() && it3.MoveNext() && it4.MoveNext() && it5.MoveNext() && it6.MoveNext()) {
75        yield return new Tuple<T1, T2, T3, T4, T5, T6>(it1.Current, it2.Current, it3.Current, it4.Current, it5.Current, it6.Current);
76      }
77      if (it1.MoveNext() || it2.MoveNext() || it3.MoveNext() || it4.MoveNext() || it5.MoveNext() || it6.MoveNext())
78        throw new InvalidOperationException("Iterators have different lengths");
79    }
80    public static IEnumerable<Tuple<T1, T2, T3, T4, T5, T6, T7>> Zip<T1, T2, T3, T4, T5, T6, T7>(IEnumerable<T1> e1, IEnumerable<T2> e2, IEnumerable<T3> e3, IEnumerable<T4> e4, IEnumerable<T5> e5, IEnumerable<T6> e6, IEnumerable<T7> e7) {
81      var it1 = e1.GetEnumerator();
82      var it2 = e2.GetEnumerator();
83      var it3 = e3.GetEnumerator();
84      var it4 = e4.GetEnumerator();
85      var it5 = e5.GetEnumerator();
86      var it6 = e6.GetEnumerator();
87      var it7 = e7.GetEnumerator();
88      while (it1.MoveNext() && it2.MoveNext() && it3.MoveNext() && it4.MoveNext() && it5.MoveNext() && it6.MoveNext() && it7.MoveNext()) {
89        yield return new Tuple<T1, T2, T3, T4, T5, T6, T7>(it1.Current, it2.Current, it3.Current, it4.Current, it5.Current, it6.Current, it7.Current);
90      }
91      if (it1.MoveNext() || it2.MoveNext() || it3.MoveNext() || it4.MoveNext() || it5.MoveNext() || it6.MoveNext() || it7.MoveNext())
92        throw new InvalidOperationException("Iterators have different lengths");
93    }
94    public static IEnumerable<Tuple<T1, T2, T3, T4, T5, T6, T7, T8>> Zip<T1, T2, T3, T4, T5, T6, T7, T8>(IEnumerable<T1> e1, IEnumerable<T2> e2, IEnumerable<T3> e3, IEnumerable<T4> e4, IEnumerable<T5> e5, IEnumerable<T6> e6, IEnumerable<T7> e7, IEnumerable<T8> e8) {
95      var it1 = e1.GetEnumerator();
96      var it2 = e2.GetEnumerator();
97      var it3 = e3.GetEnumerator();
98      var it4 = e4.GetEnumerator();
99      var it5 = e5.GetEnumerator();
100      var it6 = e6.GetEnumerator();
101      var it7 = e7.GetEnumerator();
102      var it8 = e8.GetEnumerator();
103      while (it1.MoveNext() && it2.MoveNext() && it3.MoveNext() && it4.MoveNext() && it5.MoveNext() && it6.MoveNext() && it7.MoveNext() && it8.MoveNext()) {
104        yield return new Tuple<T1, T2, T3, T4, T5, T6, T7, T8>(it1.Current, it2.Current, it3.Current, it4.Current, it5.Current, it6.Current, it7.Current, it8.Current);
105      }
106      if (it1.MoveNext() || it2.MoveNext() || it3.MoveNext() || it4.MoveNext() || it5.MoveNext() || it6.MoveNext() || it7.MoveNext() || it8.MoveNext())
107        throw new InvalidOperationException("Iterators have different lengths");
108    }
109  }
110}
Note: See TracBrowser for help on using the repository browser.