using System.Collections.Generic; namespace de4dot.blocks { internal delegate TResult Func(); internal delegate TResult Func(T arg); internal delegate TResult Func(T1 arg1, T2 arg2); internal delegate TResult Func(T1 arg1, T2 arg2, T3 arg3); internal delegate void Action(); internal delegate void Action(T arg); internal delegate void Action(T1 arg1, T2 arg2); internal delegate void Action(T1 arg1, T2 arg2, T3 arg3); public class Tuple { public T1 Item1 { get; set; } public T2 Item2 { get; set; } public override bool Equals(object obj) { var other = obj as Tuple; if (other == null) return false; return Item1.Equals(other.Item1) && Item2.Equals(other.Item2); } public override int GetHashCode() { return Item1.GetHashCode() + Item2.GetHashCode(); } public override string ToString() { return "<" + Item1.ToString() + "," + Item2.ToString() + ">"; } } static class Utils { public static IDictionary createObjectToIndexDictionary(IList objs) { var dict = new Dictionary(); for (int i = 0; i < objs.Count; i++) dict[objs[i]] = i; return dict; } public static List convert(IEnumerable list) where TIn : TOut { var olist = new List(); foreach (var l in list) olist.Add(l); return olist; } } }