Author: jbevain
Date: 2008-01-22 06:34:42 -0500 (Tue, 22 Jan 2008)
New Revision: 93508
Modified:
trunk/mcs/class/System.Core/System.Linq/Enumerable.cs
Log:
add Sum checks
Modified: trunk/mcs/class/System.Core/System.Linq/Enumerable.cs
===================================================================
--- trunk/mcs/class/System.Core/System.Linq/Enumerable.cs 2008-01-22
11:24:48 UTC (rev 93507)
+++ trunk/mcs/class/System.Core/System.Linq/Enumerable.cs 2008-01-22
11:34:42 UTC (rev 93508)
@@ -1920,21 +1920,29 @@
public static int Sum (this IEnumerable<int> source)
{
+ Check.Source (source);
+
return Sum<int, int> (source, (a, b) => a + b);
}
public static int? Sum (this IEnumerable<int?> source)
{
+ Check.Source (source);
+
return SumNullable<int?, int?> (source, (a, b) =>
a.HasValue ? a + b : a);
}
public static int Sum<TSource> (this IEnumerable<TSource>
source, Func<TSource, int> selector)
{
+ Check.SourceAndSelector (source, selector);
+
return Sum<TSource, int> (source, (a, b) => a +
selector (b));
}
public static int? Sum<TSource> (this IEnumerable<TSource>
source, Func<TSource, int?> selector)
{
+ Check.SourceAndSelector (source, selector);
+
return SumNullable<TSource, int?> (source, (a, b) => {
var value = selector (b);
return value.HasValue ? a + value.Value : a;
@@ -1943,21 +1951,29 @@
public static long Sum (this IEnumerable<long> source)
{
+ Check.Source (source);
+
return Sum<long, long> (source, (a, b) => a + b);
}
public static long? Sum (this IEnumerable<long?> source)
{
+ Check.Source (source);
+
return SumNullable<long?, long?> (source, (a, b) =>
a.HasValue ? a + b : a);
}
public static long Sum<TSource> (this IEnumerable<TSource>
source, Func<TSource, long> selector)
{
+ Check.SourceAndSelector (source, selector);
+
return Sum<TSource, long> (source, (a, b) => a +
selector (b));
}
public static long? Sum<TSource> (this IEnumerable<TSource>
source, Func<TSource, long?> selector)
{
+ Check.SourceAndSelector (source, selector);
+
return SumNullable<TSource, long?> (source, (a, b) => {
var value = selector (b);
return value.HasValue ? a + value.Value : a;
@@ -1966,21 +1982,29 @@
public static double Sum (this IEnumerable<double> source)
{
+ Check.Source (source);
+
return Sum<double, double> (source, (a, b) => a + b);
}
public static double? Sum (this IEnumerable<double?> source)
{
+ Check.Source (source);
+
return SumNullable<double?, double?> (source, (a, b) =>
a.HasValue ? a + b : a);
}
public static double Sum<TSource> (this IEnumerable<TSource>
source, Func<TSource, double> selector)
{
+ Check.SourceAndSelector (source, selector);
+
return Sum<TSource, double> (source, (a, b) => a +
selector (b));
}
public static double? Sum<TSource> (this IEnumerable<TSource>
source, Func<TSource, double?> selector)
{
+ Check.SourceAndSelector (source, selector);
+
return SumNullable<TSource, double?> (source, (a, b) =>
{
var value = selector (b);
return value.HasValue ? a + value.Value : a;
@@ -1989,21 +2013,29 @@
public static float Sum (this IEnumerable<float> source)
{
+ Check.Source (source);
+
return Sum<float, float> (source, (a, b) => a + b);
}
public static float? Sum (this IEnumerable<float?> source)
{
+ Check.Source (source);
+
return SumNullable<float?, float?> (source, (a, b) =>
a.HasValue ? a + b : a);
}
public static float Sum<TSource> (this IEnumerable<TSource>
source, Func<TSource, float> selector)
{
+ Check.SourceAndSelector (source, selector);
+
return Sum<TSource, float> (source, (a, b) => a +
selector (b));
}
public static float? Sum<TSource> (this IEnumerable<TSource>
source, Func<TSource, float?> selector)
{
+ Check.SourceAndSelector (source, selector);
+
return SumNullable<TSource, float?> (source, (a, b) => {
var value = selector (b);
return value.HasValue ? a + value.Value : a;
@@ -2012,35 +2044,41 @@
public static decimal Sum (this IEnumerable<decimal> source)
{
+ Check.Source (source);
+
return Sum<decimal, decimal> (source, (a, b) => a + b);
}
public static decimal? Sum (this IEnumerable<decimal?> source)
{
+ Check.Source (source);
+
return SumNullable<decimal?, decimal?> (source, (a, b)
=> a.HasValue ? a + b : a);
}
public static decimal Sum<TSource> (this IEnumerable<TSource>
source, Func<TSource, decimal> selector)
{
+ Check.SourceAndSelector (source, selector);
+
return Sum<TSource, decimal> (source, (a, b) => a +
selector (b));
}
public static decimal? Sum<TSource> (this IEnumerable<TSource>
source, Func<TSource, decimal?> selector)
{
+ Check.SourceAndSelector (source, selector);
+
return SumNullable<TSource, decimal?> (source, (a, b)
=> {
var value = selector (b);
return value.HasValue ? a + value.Value : a;
});
}
- static TR Sum<TA, TR> (this IEnumerable<TA> source, Func<TR,
TA, TR> func)
+ static TR Sum<TA, TR> (this IEnumerable<TA> source, Func<TR,
TA, TR> selector)
{
- Check.Source (source);
-
TR total = default (TR);
int counter = 0;
foreach (var element in source) {
- total = func (total, element);
+ total = selector (total, element);
++counter;
}
@@ -2050,13 +2088,11 @@
return total;
}
- static TR SumNullable<TA, TR> (this IEnumerable<TA> source,
Func<TR, TA, TR> func)
+ static TR SumNullable<TA, TR> (this IEnumerable<TA> source,
Func<TR, TA, TR> selector)
{
- Check.Source (source);
-
TR total = default (TR);
foreach (var element in source) {
- total = func (total, element);
+ total = selector (total, element);
}
return total;
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches