diff --git a/doc/csc2.bat b/doc/csc2.bat deleted file mode 100644 index 791a452..0000000 --- a/doc/csc2.bat +++ /dev/null @@ -1,4 +0,0 @@ -:: Compile bare .NET 2 with C# 4 -@echo off -SET CSC=C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc -%CSC% /nostdlib /noconfig /nowin32manifest "/lib:C:\Windows\Microsoft.NET\Framework\v2.0.50727" "/r:mscorlib.dll" %* diff --git a/src/main/AdrianKousz.Util/DateTimes.cs b/src/main/AdrianKousz.Util/DateTimes.cs index 7777c85..3fad687 100644 --- a/src/main/AdrianKousz.Util/DateTimes.cs +++ b/src/main/AdrianKousz.Util/DateTimes.cs @@ -6,18 +6,11 @@ namespace AdrianKousz.Util { private static readonly DateTime Epoch = new DateTime(1970, 1, 1); - public static DateTime ToDateTime(this int timestamp) - { + public static DateTime FromUnixTime(double timestamp) { return Epoch.AddSeconds(timestamp); } - public static DateTime ToDateTime(this double timestamp) - { - return Epoch.AddSeconds(timestamp); - } - - public static double ToUnixTime(this DateTime t) - { + public static double ToUnixTime(this DateTime t) { return t.Subtract(Epoch).TotalSeconds; } } diff --git a/src/main/AdrianKousz.Util/Enumerables.cs b/src/main/AdrianKousz.Util/Enumerables.cs index 7898561..993d8e2 100644 --- a/src/main/AdrianKousz.Util/Enumerables.cs +++ b/src/main/AdrianKousz.Util/Enumerables.cs @@ -20,8 +20,8 @@ namespace AdrianKousz.Util } public static ICollection Fill(this ICollection list, int count) where T : new() { return Fill(list, count, () => new T()); } - public static TColl Fill(this TColl list, int count, T value) where TColl : ICollection { return Fill(list, count, () => value); } - public static TColl Fill(this TColl list, int count, Func f) where TColl : ICollection + public static ICollection Fill(this ICollection list, int count, T value) { return Fill(list, count, () => value); } + public static ICollection Fill(this ICollection list, int count, Func f) { for (var i = 0; i < count; i++) list.Add(f()); return list; @@ -29,27 +29,21 @@ namespace AdrianKousz.Util #endregion - #region Type Helpers + #region Anonymous Type Helpers public static T[] CreateArray(this T example, int count) { return new T[count]; } - public static List CreateList(this T example, int count = 12) + public static List CreateList(this T example) { - return new List(count); + return new List(); } - public static T[] NewArray(this IEnumerable source, int count) - { - return new T[count]; - } + #endregion - public static List NewList(this IEnumerable source, int count = 12) - { - return new List(count); - } + #region Materializers public static List ToList(this IEnumerable source) { @@ -75,26 +69,19 @@ namespace AdrianKousz.Util return -1; } - public static void ForEach(this IEnumerable source, Action f) + public static IEnumerable ForEach(this IEnumerable source, Action f) { foreach (var el in source) f(el); + return source; } - public static void ForEach(this IDictionary source, Action f) + public static IDictionary ForEach(this IDictionary source, Action f) { foreach (var el in source) f(el.Key, el.Value); + return source; } - public static void ForBoth(this IEnumerable s1, IEnumerable s2, Action f) - { - using (var en1 = s1.GetEnumerator()) - using (var en2 = s2.GetEnumerator()) - { - while (en1.MoveNext() && en2.MoveNext()) - f(en1.Current, en2.Current); - } - } - + // Linq: Select public static IEnumerable Map(this IEnumerable source, Func f) { var result = GetList(source); @@ -102,6 +89,7 @@ namespace AdrianKousz.Util return result; } + // Linq: Where public static IEnumerable Filter(this IEnumerable source, Func f) { var result = GetList(source); @@ -118,21 +106,31 @@ namespace AdrianKousz.Util return result; } + // Linq: Aggregate public static T FoldL1(this IEnumerable source, Func f) { using (var en = source.GetEnumerator()) { if (!en.MoveNext()) throw new InvalidOperationException("No elements"); - var result = en.Current; + T result = en.Current; while (en.MoveNext()) result = f(result, en.Current); return result; } } + #endregion + + #region Zippers + public static IDictionary ToDictionary(this IEnumerable ks, IEnumerable vs) { var result = new Dictionary(); - ForBoth(ks, vs, (k, v) => { result[k] = v; }); + using (var en1 = ks.GetEnumerator()) + using (var en2 = vs.GetEnumerator()) + { + while (en1.MoveNext() && en2.MoveNext()) + result[en1.Current] = en2.Current; + } return result; } @@ -150,7 +148,12 @@ namespace AdrianKousz.Util public static IEnumerable Zip(this IEnumerable s1, IEnumerable s2, Func f) { var result = GetList(s1); - ForBoth(s1, s2, (e1, e2) => { result.Add(f(e1, e2)); }); + using (var en1 = s1.GetEnumerator()) + using (var en2 = s2.GetEnumerator()) + { + while (en1.MoveNext() && en2.MoveNext()) + result.Add(f(en1.Current, en2.Current)); + } return result; }